# HG changeset patch # User unc0rr # Date 1351888475 -14400 # Node ID 88fde28bbda6c1234cd6e3236cda9978dd51ddd7 # Parent 3331b30e4ef1588179e3b039deffc7d2589af958# Parent 550083f61a0ea826cd847ba25bd9d47c3c1c8f1f Merge with default diff -r 3331b30e4ef1 -r 88fde28bbda6 .hgignore --- a/.hgignore Sun Oct 21 01:28:33 2012 +0400 +++ b/.hgignore Sat Nov 03 00:34:35 2012 +0400 @@ -3,6 +3,7 @@ glob:moc_*.cxx glob:qrc_*.cxx glob:*.o +glob:*.qm glob:Makefile glob:bin glob:*.hi @@ -50,3 +51,8 @@ glob:project_files/Android-build/SDL-android-project/.* glob:project_files/Android-build/out glob:project_files/Android-build/Makefile.android +glob:hedgewars-build-desktop-Qt_4_7_4_for_Desktop_-_MinGW_4_4__Qt_SDK__Debug +glob:hedgewars-build-desktop-Qt_4_7_4_for_Desktop_-_MinGW_4_4__Qt_SDK__Release +glob:*.depends +glob:tools/build_windows_koda.bat + diff -r 3331b30e4ef1 -r 88fde28bbda6 .hgtags --- a/.hgtags Sun Oct 21 01:28:33 2012 +0400 +++ b/.hgtags Sat Nov 03 00:34:35 2012 +0400 @@ -50,3 +50,4 @@ 0000000000000000000000000000000000000000 0-9.17-release 4670f003f91b3246665ca0de95fa056d2d2f3f54 0.9.17-release ce2b24995ab2efc088accecd7f7b116bb946fff7 hedgeroid-alpha +2f203395bacab0d5594d3d303b5d87b2f152df50 0.9.18-release diff -r 3331b30e4ef1 -r 88fde28bbda6 CMakeLists.txt --- a/CMakeLists.txt Sun Oct 21 01:28:33 2012 +0400 +++ b/CMakeLists.txt Sat Nov 03 00:34:35 2012 +0400 @@ -43,8 +43,8 @@ #versioning set(CPACK_PACKAGE_VERSION_MAJOR 0) set(CPACK_PACKAGE_VERSION_MINOR 9) -set(CPACK_PACKAGE_VERSION_PATCH 18${version_suffix}) -set(HEDGEWARS_PROTO_VER 42) +set(CPACK_PACKAGE_VERSION_PATCH 19${version_suffix}) +set(HEDGEWARS_PROTO_VER 44) set(HEDGEWARS_VERSION "${CPACK_PACKAGE_VERSION_MAJOR}.${CPACK_PACKAGE_VERSION_MINOR}.${CPACK_PACKAGE_VERSION_PATCH}") @@ -176,13 +176,13 @@ endif() endif() -set(pascal_flags ${fpflags_parsed} "-vq" "-vm4079,4080,4081" "-B" "-FE../bin" "-Cs2000000" "-vewn" "-dDEBUGFILE" ${pascal_flags}) +set(pascal_flags ${fpflags_parsed} "-vm4079,4080,4081" "-B" "-FE../bin" "-Cs2000000" "-vewnq" "-dDEBUGFILE" ${pascal_flags}) set(haskell_flags "-O2" ${ghflags_parsed} ${haskell_flags}) #get BUILD_TYPE and enable/disable optimisation if(CMAKE_BUILD_TYPE MATCHES "DEBUG") message(STATUS "Building Debug flavour") - set(pascal_flags "-O-" "-g" "-gl" "-gv" "-Ct" ${pascal_flags}) + set(pascal_flags "-O-" "-g" "-gl" "-gv" ${pascal_flags}) set(haskell_flags "-Wall" "-debug" "-dcore-lint" "-fno-warn-unused-do-bind" ${haskell_flags}) else() message(STATUS "Building Release flavour") @@ -227,9 +227,9 @@ #lua discovery find_package(Lua) if(LUA_FOUND) - message(STATUS "LUA found: ${LUA_DEFAULT}") + message(STATUS "Found LUA: ${LUA_DEFAULT}") else() - message(STATUS "Cound NOT find LUA, building bundled dependency") + message(STATUS "LUA will be provided by the bundled sources") add_subdirectory(misc/liblua) #linking with liblua.a requires system readline -- this works everywhere, right? set(pascal_flags "-k${EXECUTABLE_OUTPUT_PATH}/lib${LUA_LIBRARY}.a" "-k-lreadline" ${pascal_flags}) diff -r 3331b30e4ef1 -r 88fde28bbda6 CREDITS --- a/CREDITS Sun Oct 21 01:28:33 2012 +0400 +++ b/CREDITS Sat Nov 03 00:34:35 2012 +0400 @@ -18,12 +18,12 @@ - hillis -> AkuAku (2010) - Lortinak -> OldMan (2010), ShortHair (2010) - chujoii -> BrainSlug (2010), Dragon (2010), Ladle (2010), Laminaria (2010), Pantsu (2010), Pig (2010), Plunger (2010), SauceBoat (2010), ShaggyYeti (2010), SleepWalker (2010), SunWukong (2010), Teapot (2010), Teacup (2010), Zombi (2010) -- Randy -> Cyclops (2011), Soldier (2011) +- Randy Broda -> Cyclops (2011), Soldier (2011) ========== = GRAVESTONES ========== -- Randy -> Dragonball (2012) +- Randy Broda -> Dragonball (2012) ========== = MAPS diff -r 3331b30e4ef1 -r 88fde28bbda6 ChangeLog.txt --- a/ChangeLog.txt Sun Oct 21 01:28:33 2012 +0400 +++ b/ChangeLog.txt Sat Nov 03 00:34:35 2012 +0400 @@ -1,6 +1,34 @@ + features * bugfixes +0.9.17 -> 0.9.18: + + + 'A Classic Fairytale' Campaign + + Video recorder (requires ffmpeg) + + Cleaver weapon + + AI is now aware of drowning and fall damage + + AI learned how to use Sniper Rifle and Cake + + Variable pen width and eraser for drawn maps + + Several trainings and missions + + Allow setting custom local palette of teams colors + + Hide eliminated teams from teams healths widget + + Server doesn't delete room till last player quits it + + PNG screenshots + + Show bot level on CPU flag + + Objects now have density value assigned which impacts their behavior on explosions, throwing from rope and drowning + + Improve AI skills at Desert Eagel, Whip, Firepunch, Baseball Bat, Hammer, Cluster Bomb, Watermelon and walking + + Individual hedgehogs healths in team health bar + + Drill rocket wouldn't explode in your face if you stand close to wall + + Ability to rope into a portal, allow RC plane to go through portals + + Many small frontend improvements: get rid of "save" buttons, descriptions, allow to use network proxy, etc + + Reduce amount of memory needed for engine to store land data + + Countless other small fixes and improvements + + Detect desyncs early + * Fix cake getting stuck in barrels, crates and hedgehogs + * Fix all knowns bugs which caused network game hang when players close engine or quit + * Fix drill strike bug when drill's timer gets ridiculously high value instead of explosion + * Fix some crashes, freezes and memory leaks in frontend and engine + 0.9.16 -> 0.9.17: + New theme, Cave + New voicepack, Hillbilly diff -r 3331b30e4ef1 -r 88fde28bbda6 QTfrontend/CMakeLists.txt --- a/QTfrontend/CMakeLists.txt Sun Oct 21 01:28:33 2012 +0400 +++ b/QTfrontend/CMakeLists.txt Sat Nov 03 00:34:35 2012 +0400 @@ -28,7 +28,9 @@ # Configure for SDL find_package(SDL REQUIRED) find_package(SDL_mixer REQUIRED) -find_package(FFMPEG) +if(NOT NOVIDEOREC) + find_package(FFMPEG) +endif() include_directories(.) include_directories(${CMAKE_CURRENT_SOURCE_DIR}/model) @@ -74,8 +76,8 @@ file(GLOB_RECURSE UIcpp ui/*.cpp) file(GLOB UtilCpp util/*.cpp) -if((NOT NOVIDEOREC) AND "${FFMPEG_FOUND}") - add_definitions(-DVIDEOREC) +if(${FFMPEG_FOUND}) + add_definitions(-DVIDEOREC -D__STDC_CONSTANT_MACROS) endif() set(hwfr_src @@ -130,7 +132,7 @@ hwform.h team.h util/DataManager.h - util/libav_iteraction.h + util/LibavInteraction.h ) set(hwfr_hdrs diff -r 3331b30e4ef1 -r 88fde28bbda6 QTfrontend/binds.cpp --- a/QTfrontend/binds.cpp Sun Oct 21 01:28:33 2012 +0400 +++ b/QTfrontend/binds.cpp Sat Nov 03 00:34:35 2012 +0400 @@ -20,51 +20,51 @@ const BindAction cbinds[BINDS_NUMBER] = { - {"+up", "up", QT_TRANSLATE_NOOP("binds", "up"), QT_TRANSLATE_NOOP("binds (categories)", "Basic controls"), QT_TRANSLATE_NOOP("binds (descriptions)", "Move your hogs and aim:")}, - {"+left", "left", QT_TRANSLATE_NOOP("binds", "left"), NULL, NULL}, - {"+right", "right", QT_TRANSLATE_NOOP("binds", "right"), NULL, NULL}, - {"+down", "down", QT_TRANSLATE_NOOP("binds", "down"), NULL, NULL}, - {"+precise", "left_shift", QT_TRANSLATE_NOOP("binds", "precise aim"), NULL, NULL}, - {"ljump", "return", QT_TRANSLATE_NOOP("binds", "long jump"), NULL, QT_TRANSLATE_NOOP("binds (descriptions)", "Traverse gaps and obstacles by jumping:")}, - {"hjump", "backspace", QT_TRANSLATE_NOOP("binds", "high jump"), NULL, NULL}, - {"+attack", "space", QT_TRANSLATE_NOOP("binds", "attack"), NULL, QT_TRANSLATE_NOOP("binds (descriptions)", "Fire your selected weapon or trigger an utility item:")}, - {"put", "mousel", QT_TRANSLATE_NOOP("binds", "put"), NULL, QT_TRANSLATE_NOOP("binds (descriptions)", "Pick a weapon or a target location under the cursor:")}, - {"switch", "tab", QT_TRANSLATE_NOOP("binds", "switch"), NULL, QT_TRANSLATE_NOOP("binds (descriptions)", "Switch your currently active hog (if possible):")}, - {"ammomenu", "mouser", QT_TRANSLATE_NOOP("binds", "ammo menu"), QT_TRANSLATE_NOOP("binds (categories)", "Weapon controls"), QT_TRANSLATE_NOOP("binds (descriptions)", "Pick a weapon or utility item:")}, - {"slot 1", "f1", QT_TRANSLATE_NOOP("binds", "slot 1"), NULL, NULL}, - {"slot 2", "f2", QT_TRANSLATE_NOOP("binds", "slot 2"), NULL, NULL}, - {"slot 3", "f3", QT_TRANSLATE_NOOP("binds", "slot 3"), NULL, NULL}, - {"slot 4", "f4", QT_TRANSLATE_NOOP("binds", "slot 4"), NULL, NULL}, - {"slot 5", "f5", QT_TRANSLATE_NOOP("binds", "slot 5"), NULL, NULL}, - {"slot 6", "f6", QT_TRANSLATE_NOOP("binds", "slot 6"), NULL, NULL}, - {"slot 7", "f7", QT_TRANSLATE_NOOP("binds", "slot 7"), NULL, NULL}, - {"slot 8", "f8", QT_TRANSLATE_NOOP("binds", "slot 8"), NULL, NULL}, - {"slot 9", "f9", QT_TRANSLATE_NOOP("binds", "slot 9"), NULL, NULL}, - {"slot :", "f10", QT_TRANSLATE_NOOP("binds", "slot 10"), NULL, NULL}, - {"timer 1", "1", QT_TRANSLATE_NOOP("binds", "timer 1 sec"), NULL, QT_TRANSLATE_NOOP("binds (descriptions)", "Set the timer on bombs and timed weapons:")}, - {"timer 2", "2", QT_TRANSLATE_NOOP("binds", "timer 2 sec"), NULL, NULL}, - {"timer 3", "3", QT_TRANSLATE_NOOP("binds", "timer 3 sec"), NULL, NULL}, - {"timer 4", "4", QT_TRANSLATE_NOOP("binds", "timer 4 sec"), NULL, NULL}, - {"timer 5", "5", QT_TRANSLATE_NOOP("binds", "timer 5 sec"), NULL, NULL}, - {"findhh", "h", QT_TRANSLATE_NOOP("binds", "find hedgehog"), QT_TRANSLATE_NOOP("binds (categories)", "Camera and cursor controls"), QT_TRANSLATE_NOOP("binds (descriptions)", "Move the camera to the active hog:")}, - {"+cur_u", "[8]", QT_TRANSLATE_NOOP("binds", "up"), NULL, QT_TRANSLATE_NOOP("binds (descriptions)", "Move the cursor or camera without using the mouse:")}, - {"+cur_l", "[4]", QT_TRANSLATE_NOOP("binds", "left"), NULL, NULL}, - {"+cur_r", "[6]", QT_TRANSLATE_NOOP("binds", "right"), NULL, NULL}, - {"+cur_d", "[2]", QT_TRANSLATE_NOOP("binds", "down"), NULL, NULL}, -// {"+cur_m", "", QT_TRANSLATE_NOOP("binds", "movement key modifier"), NULL, QT_TRANSLATE_NOOP("binds (descriptions)", "Specify a modifier key to move camera and cursor using your default hog movement keys:")}, - {"zoomin", "wheelup", QT_TRANSLATE_NOOP("binds", "zoom in"), NULL, QT_TRANSLATE_NOOP("binds (descriptions)", "Modify the camera's zoom level:")}, - {"zoomout", "wheeldown", QT_TRANSLATE_NOOP("binds", "zoom out"), NULL, NULL}, - {"zoomreset", "mousem", QT_TRANSLATE_NOOP("binds", "reset zoom"), NULL, NULL}, - {"chat", "t", QT_TRANSLATE_NOOP("binds", "chat"), QT_TRANSLATE_NOOP("binds (categories)", "Other"), QT_TRANSLATE_NOOP("binds (descriptions)", "Talk to your team or all participants:")}, - {"history", "`", QT_TRANSLATE_NOOP("binds", "chat history"), NULL, NULL}, - {"pause", "p", QT_TRANSLATE_NOOP("binds", "pause"), NULL, QT_TRANSLATE_NOOP("binds (descriptions)", "Pause, continue or leave your game:")}, - {"quit", "escape", QT_TRANSLATE_NOOP("binds", "quit"), NULL, NULL}, - {"confirm", "y", QT_TRANSLATE_NOOP("binds", "confirmation"), NULL, NULL}, - {"+voldown", "9", QT_TRANSLATE_NOOP("binds", "volume down"), NULL, QT_TRANSLATE_NOOP("binds (descriptions)", "Modify the game's volume while playing:")}, - {"+volup", "0", QT_TRANSLATE_NOOP("binds", "volume up"), NULL, NULL}, - {"mute", "8", QT_TRANSLATE_NOOP("binds", "mute audio"), NULL, NULL}, - {"fullscr", "f12", QT_TRANSLATE_NOOP("binds", "change mode"), NULL, QT_TRANSLATE_NOOP("binds (descriptions)", "Toggle fullscreen mode:")}, - {"capture", "c", QT_TRANSLATE_NOOP("binds", "capture"), NULL, QT_TRANSLATE_NOOP("binds (descriptions)", "Take a screenshot:")}, - {"rotmask", "delete", QT_TRANSLATE_NOOP("binds", "hedgehogs\ninfo"), NULL, QT_TRANSLATE_NOOP("binds (descriptions)", "Toggle labels above hedgehogs:")}, - {"record", "r", QT_TRANSLATE_NOOP("binds", "record"), NULL, QT_TRANSLATE_NOOP("binds (descriptions)", "Record video:")} + {"+up", "up", QT_TRANSLATE_NOOP("binds", "up"), QT_TRANSLATE_NOOP("binds (categories)", "Basic controls"), QT_TRANSLATE_NOOP("binds (descriptions)", "Move your hogs and aim:")}, + {"+left", "left", QT_TRANSLATE_NOOP("binds", "left"), NULL, NULL}, + {"+right", "right", QT_TRANSLATE_NOOP("binds", "right"), NULL, NULL}, + {"+down", "down", QT_TRANSLATE_NOOP("binds", "down"), NULL, NULL}, + {"+precise", "left_shift", QT_TRANSLATE_NOOP("binds", "precise aim"), NULL, NULL}, + {"ljump", "return", QT_TRANSLATE_NOOP("binds", "long jump"), NULL, QT_TRANSLATE_NOOP("binds (descriptions)", "Traverse gaps and obstacles by jumping:")}, + {"hjump", "backspace", QT_TRANSLATE_NOOP("binds", "high jump"), NULL, NULL}, + {"+attack", "space", QT_TRANSLATE_NOOP("binds", "attack"), NULL, QT_TRANSLATE_NOOP("binds (descriptions)", "Fire your selected weapon or trigger an utility item:")}, + {"put", "mousel", QT_TRANSLATE_NOOP("binds", "put"), NULL, QT_TRANSLATE_NOOP("binds (descriptions)", "Pick a weapon or a target location under the cursor:")}, + {"switch", "tab", QT_TRANSLATE_NOOP("binds", "switch"), NULL, QT_TRANSLATE_NOOP("binds (descriptions)", "Switch your currently active hog (if possible):")}, + {"ammomenu", "mouser", QT_TRANSLATE_NOOP("binds", "ammo menu"), QT_TRANSLATE_NOOP("binds (categories)", "Weapon controls"), QT_TRANSLATE_NOOP("binds (descriptions)", "Pick a weapon or utility item:")}, + {"slot 1", "f1", QT_TRANSLATE_NOOP("binds", "slot 1"), NULL, NULL}, + {"slot 2", "f2", QT_TRANSLATE_NOOP("binds", "slot 2"), NULL, NULL}, + {"slot 3", "f3", QT_TRANSLATE_NOOP("binds", "slot 3"), NULL, NULL}, + {"slot 4", "f4", QT_TRANSLATE_NOOP("binds", "slot 4"), NULL, NULL}, + {"slot 5", "f5", QT_TRANSLATE_NOOP("binds", "slot 5"), NULL, NULL}, + {"slot 6", "f6", QT_TRANSLATE_NOOP("binds", "slot 6"), NULL, NULL}, + {"slot 7", "f7", QT_TRANSLATE_NOOP("binds", "slot 7"), NULL, NULL}, + {"slot 8", "f8", QT_TRANSLATE_NOOP("binds", "slot 8"), NULL, NULL}, + {"slot 9", "f9", QT_TRANSLATE_NOOP("binds", "slot 9"), NULL, NULL}, + {"slot :", "f10", QT_TRANSLATE_NOOP("binds", "slot 10"), NULL, NULL}, + {"timer 1", "1", QT_TRANSLATE_NOOP("binds", "timer 1 sec"), NULL, QT_TRANSLATE_NOOP("binds (descriptions)", "Set the timer on bombs and timed weapons:")}, + {"timer 2", "2", QT_TRANSLATE_NOOP("binds", "timer 2 sec"), NULL, NULL}, + {"timer 3", "3", QT_TRANSLATE_NOOP("binds", "timer 3 sec"), NULL, NULL}, + {"timer 4", "4", QT_TRANSLATE_NOOP("binds", "timer 4 sec"), NULL, NULL}, + {"timer 5", "5", QT_TRANSLATE_NOOP("binds", "timer 5 sec"), NULL, NULL}, + {"findhh", "h", QT_TRANSLATE_NOOP("binds", "find hedgehog"), QT_TRANSLATE_NOOP("binds (categories)", "Camera and cursor controls"), QT_TRANSLATE_NOOP("binds (descriptions)", "Move the camera to the active hog:")}, + {"+cur_u", "[8]", QT_TRANSLATE_NOOP("binds", "up"), NULL, QT_TRANSLATE_NOOP("binds (descriptions)", "Move the cursor or camera without using the mouse:")}, + {"+cur_l", "[4]", QT_TRANSLATE_NOOP("binds", "left"), NULL, NULL}, + {"+cur_r", "[6]", QT_TRANSLATE_NOOP("binds", "right"), NULL, NULL}, + {"+cur_d", "[2]", QT_TRANSLATE_NOOP("binds", "down"), NULL, NULL}, +// {"+cur_m", "", QT_TRANSLATE_NOOP("binds", "movement key modifier"), NULL, QT_TRANSLATE_NOOP("binds (descriptions)", "Specify a modifier key to move camera and cursor using your default hog movement keys:")}, + {"zoomin", "wheelup", QT_TRANSLATE_NOOP("binds", "zoom in"), NULL, QT_TRANSLATE_NOOP("binds (descriptions)", "Modify the camera's zoom level:")}, + {"zoomout", "wheeldown", QT_TRANSLATE_NOOP("binds", "zoom out"), NULL, NULL}, + {"zoomreset", "mousem", QT_TRANSLATE_NOOP("binds", "reset zoom"), NULL, NULL}, + {"chat", "t", QT_TRANSLATE_NOOP("binds", "chat"), QT_TRANSLATE_NOOP("binds (categories)", "Other"), QT_TRANSLATE_NOOP("binds (descriptions)", "Talk to your team or all participants:")}, + {"history", "`", QT_TRANSLATE_NOOP("binds", "chat history"), NULL, NULL}, + {"pause", "p", QT_TRANSLATE_NOOP("binds", "pause"), NULL, QT_TRANSLATE_NOOP("binds (descriptions)", "Pause, continue or leave your game:")}, + {"quit", "escape", QT_TRANSLATE_NOOP("binds", "quit"), NULL, NULL}, + {"confirm", "y", QT_TRANSLATE_NOOP("binds", "confirmation"), NULL, NULL}, + {"+voldown", "9", QT_TRANSLATE_NOOP("binds", "volume down"), NULL, QT_TRANSLATE_NOOP("binds (descriptions)", "Modify the game's volume while playing:")}, + {"+volup", "0", QT_TRANSLATE_NOOP("binds", "volume up"), NULL, NULL}, + {"mute", "8", QT_TRANSLATE_NOOP("binds", "mute audio"), NULL, NULL}, + {"fullscr", "f12", QT_TRANSLATE_NOOP("binds", "change mode"), NULL, QT_TRANSLATE_NOOP("binds (descriptions)", "Toggle fullscreen mode:")}, + {"capture", "c", QT_TRANSLATE_NOOP("binds", "capture"), NULL, QT_TRANSLATE_NOOP("binds (descriptions)", "Take a screenshot:")}, + {"rotmask", "delete", QT_TRANSLATE_NOOP("binds", "hedgehogs\ninfo"), NULL, QT_TRANSLATE_NOOP("binds (descriptions)", "Toggle labels above hedgehogs:")}, + {"record", "r", QT_TRANSLATE_NOOP("binds", "record"), NULL, QT_TRANSLATE_NOOP("binds (descriptions)", "Record video:")} }; diff -r 3331b30e4ef1 -r 88fde28bbda6 QTfrontend/campaign.cpp --- a/QTfrontend/campaign.cpp Sun Oct 21 01:28:33 2012 +0400 +++ b/QTfrontend/campaign.cpp Sat Nov 03 00:34:35 2012 +0400 @@ -19,7 +19,6 @@ #include #include #include -#include #include #include #include diff -r 3331b30e4ef1 -r 88fde28bbda6 QTfrontend/game.cpp --- a/QTfrontend/game.cpp Sun Oct 21 01:28:33 2012 +0400 +++ b/QTfrontend/game.cpp Sat Nov 03 00:34:35 2012 +0400 @@ -21,7 +21,6 @@ #include #include #include -#include #include #include "game.h" diff -r 3331b30e4ef1 -r 88fde28bbda6 QTfrontend/gameuiconfig.cpp --- a/QTfrontend/gameuiconfig.cpp Sun Oct 21 01:28:33 2012 +0400 +++ b/QTfrontend/gameuiconfig.cpp Sat Nov 03 00:34:35 2012 +0400 @@ -16,7 +16,6 @@ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA */ -#include #include #include #include diff -r 3331b30e4ef1 -r 88fde28bbda6 QTfrontend/hwconsts.h --- a/QTfrontend/hwconsts.h Sun Oct 21 01:28:33 2012 +0400 +++ b/QTfrontend/hwconsts.h Sat Nov 03 00:34:35 2012 +0400 @@ -73,13 +73,13 @@ #define AMMOLINE_CRAZY_DELAY "00000000000000000000000000000000000000000000000000000000" #define AMMOLINE_CRAZY_CRATE "13111103121111111231141111111111111112111101011111110101" -#define AMMOLINE_PROMODE_QT "90900090000000000000090000000000000000000000000000000001" +#define AMMOLINE_PROMODE_QT "90900090000000000000090000000000000000000000000000000000" #define AMMOLINE_PROMODE_PROB "00000000000000000000000000000000000000000000000000000000" -#define AMMOLINE_PROMODE_DELAY "00000000000002055000000400070040000000002000000000000009" +#define AMMOLINE_PROMODE_DELAY "00000000000002055000000400070040000000002000000000000002" #define AMMOLINE_PROMODE_CRATE "11111111111111111111111111111111111111111001011111110101" #define AMMOLINE_SHOPPA_QT "00000099000000000000000000000000000000000000000000000000" -#define AMMOLINE_SHOPPA_PROB "44444100442444022101121212224220000000020004000100110000" +#define AMMOLINE_SHOPPA_PROB "44444100442444022101121212224220000000020004000100110001" #define AMMOLINE_SHOPPA_DELAY "00000000000000000000000000000000000000000000000000000000" #define AMMOLINE_SHOPPA_CRATE "11111111111111111111111111111111111111111011011111110001" @@ -94,7 +94,7 @@ #define AMMOLINE_MINES_CRATE "11111111111111111111111111111111111111111111011111110101" #define AMMOLINE_PORTALS_QT "90000090020000000021000000000000001100000900000000000000" -#define AMMOLINE_PORTALS_PROB "04050405416006555465544647765766666661555101011154110100" +#define AMMOLINE_PORTALS_PROB "04050405416006555465544647765766666661555101011154110101" #define AMMOLINE_PORTALS_DELAY "00000000000002055000000400070040000000002000000006000000" #define AMMOLINE_PORTALS_CRATE "13111103121111111231141111111111111112111111011111110101" diff -r 3331b30e4ef1 -r 88fde28bbda6 QTfrontend/hwform.cpp --- a/QTfrontend/hwform.cpp Sun Oct 21 01:28:33 2012 +0400 +++ b/QTfrontend/hwform.cpp Sat Nov 03 00:34:35 2012 +0400 @@ -163,8 +163,8 @@ // ctrl+q closes frontend for consistency QShortcut * closeFrontend = new QShortcut(QKeySequence("Ctrl+Q"), this); connect (closeFrontend, SIGNAL(activated()), this, SLOT(close())); - QShortcut * updateData = new QShortcut(QKeySequence("F5"), this); - connect (updateData, SIGNAL(activated()), &DataManager::instance(), SLOT(reload())); + //QShortcut * updateData = new QShortcut(QKeySequence("F5"), this); + //connect (updateData, SIGNAL(activated()), &DataManager::instance(), SLOT(reload())); #endif UpdateTeamsLists(); @@ -202,8 +202,6 @@ connect(ui.pageMain->BtnDataDownload, SIGNAL(clicked()), pageSwitchMapper, SLOT(map())); pageSwitchMapper->setMapping(ui.pageMain->BtnDataDownload, ID_PAGE_DATADOWNLOAD); - connect(ui.pageNetGame, SIGNAL(DLCClicked()), pageSwitchMapper, SLOT(map())); - pageSwitchMapper->setMapping(ui.pageNetGame, ID_PAGE_DATADOWNLOAD); #ifdef VIDEOREC connect(ui.pageMain->BtnVideos, SIGNAL(clicked()), pageSwitchMapper, SLOT(map())); @@ -693,16 +691,13 @@ animationOldOpacity->setEasingCurve(QEasingCurve::OutExpo); #endif - QParallelAnimationGroup *group = new QParallelAnimationGroup; - group->addAnimation(animationOldSlide); - group->addAnimation(animationNewSlide); -#ifdef false - group->addAnimation(animationOldOpacity); - group->addAnimation(animationNewOpacity); -#endif - group->start(); + // let's hide the old slide after its animation has finished + connect(animationOldSlide, SIGNAL(finished()), ui.Pages->widget(lastid), SLOT(hide())); - connect(animationOldSlide, SIGNAL(finished()), ui.Pages->widget(lastid), SLOT(hide())); + // start animations + animationOldSlide->start(QAbstractAnimation::DeleteWhenStopped); + animationNewSlide->start(QAbstractAnimation::DeleteWhenStopped); + /* this is for the situation when the animation below is interrupted by a new animation. For some reason, finished is not being fired */ for(int i=0;iwidget(i)->hide(); } @@ -806,18 +801,21 @@ animationNewOpacity->setEasingCurve(QEasingCurve::OutExpo); #endif - QParallelAnimationGroup *group = new QParallelAnimationGroup; - group->addAnimation(animationOldSlide); - group->addAnimation(animationNewSlide); -#ifdef false - group->addAnimation(animationOldOpacity); - group->addAnimation(animationNewOpacity); -#endif - group->start(); + // let's hide the old slide after its animation has finished + connect(animationNewSlide, SIGNAL(finished()), ui.Pages->widget(curid), SLOT(hide())); - connect(animationNewSlide, SIGNAL(finished()), ui.Pages->widget(curid), SLOT(hide())); + // start animations + animationOldSlide->start(QAbstractAnimation::DeleteWhenStopped); + animationNewSlide->start(QAbstractAnimation::DeleteWhenStopped); } #endif + + if (stopAnim) + ui.Pages->widget(curid)->hide(); + +// TODO the whole pages shown and effects stuff should be moved +// out of hwform.cpp and into a subclass of QStackedLayout + } void HWForm::OpenSnapshotFolder() @@ -897,10 +895,18 @@ void HWForm::DeleteTeam(const QString & teamName) { - ui.pageEditTeam->deleteTeam(teamName); - QMessageBox reallyDelete(QMessageBox::Question, QMessageBox::tr("Teams"), QMessageBox::tr("Really delete this team?"), QMessageBox::Ok | QMessageBox::Cancel); + QMessageBox reallyDeleteMsg(this); + reallyDeleteMsg.setIcon(QMessageBox::Question); + reallyDeleteMsg.setWindowTitle(QMessageBox::tr("Teams - Are you sure?")); + reallyDeleteMsg.setText(QMessageBox::tr("Do you really want to delete the team '%1'?").arg(teamName)); + reallyDeleteMsg.setWindowModality(Qt::WindowModal); + reallyDeleteMsg.setStandardButtons(QMessageBox::Ok | QMessageBox::Cancel); - UpdateTeamsLists(); + if (reallyDeleteMsg.exec() == QMessageBox::Ok) + { + ui.pageEditTeam->deleteTeam(teamName); + UpdateTeamsLists(); + } } void HWForm::DeleteScheme() @@ -908,7 +914,7 @@ ui.pageScheme->selectScheme->setCurrentIndex(ui.pageOptions->SchemesName->currentIndex()); if (ui.pageOptions->SchemesName->currentIndex() < ammoSchemeModel->numberOfDefaultSchemes) { - QMessageBox::warning(0, QMessageBox::tr("Schemes"), QMessageBox::tr("Can not delete default scheme '%1'!").arg(ui.pageOptions->SchemesName->currentText())); + ShowErrorMessage(QMessageBox::tr("Cannot delete default scheme '%1'!").arg(ui.pageOptions->SchemesName->currentText())); } else { @@ -934,10 +940,7 @@ QListWidgetItem * curritem = ui.pagePlayDemo->DemosList->currentItem(); if (!curritem) { - QMessageBox::critical(this, - tr("Error"), - tr("Please select record from the list above"), - tr("OK")); + ShowErrorMessage(QMessageBox::tr("Please select a record from the list")); return; } CreateGame(0, 0, 0); @@ -1001,7 +1004,7 @@ void HWForm::NetNickTaken(const QString & nick) { bool ok = false; - QString newNick = QInputDialog::getText(this, tr("Nickname"), tr("Some one already uses\n your nickname %1\non the server.\nPlease pick another nickname:").arg(nick), QLineEdit::Normal, nick, &ok); + QString newNick = QInputDialog::getText(this, tr("Nickname"), tr("Someone already uses your nickname %1 on the server.\nPlease pick another nickname:").arg(nick), QLineEdit::Normal, nick, &ok); if (!ok || newNick.isEmpty()) { @@ -1229,10 +1232,10 @@ config->SaveOptions(); pnetserver = new HWNetServer; - if(!pnetserver->StartServer(ui.pageNetServer->sbPort->value())) + if (!pnetserver->StartServer(ui.pageNetServer->sbPort->value())) { - QMessageBox::critical(0, tr("Error"), - tr("Unable to start the server")); + ShowErrorMessage(QMessageBox::tr("Unable to start server")); + delete pnetserver; pnetserver = 0; return; @@ -1271,14 +1274,20 @@ void HWForm::ForcedDisconnect(const QString & reason) { - if(pnetserver) return; // we have server - let it care of all things + if (pnetserver) + return; // we have server - let it care of all things if (hwnet) { - QMessageBox::warning(this, QMessageBox::tr("Network"), - QMessageBox::tr("Connection to server is lost") + (reason.isEmpty()?"":("\n\n" + HWNewNet::tr("Quit reason: ") + '"' + reason +'"'))); + QString errorStr = QMessageBox::tr("Connection to server is lost") + (reason.isEmpty()?"":("\n\n" + HWNewNet::tr("Quit reason: ") + '"' + reason +'"')); + ShowErrorMessage(errorStr); + } + while (ui.Pages->currentIndex() != ID_PAGE_NET + && ui.Pages->currentIndex() != ID_PAGE_NETTYPE + && ui.Pages->currentIndex() != ID_PAGE_MAIN) + { + GoBack(); } - if (ui.Pages->currentIndex() != ID_PAGE_NET) GoBack(); } void HWForm::NetConnected() @@ -1379,9 +1388,12 @@ void HWForm::ShowErrorMessage(const QString & msg) { - QMessageBox::warning(this, - "Hedgewars", - msg); + QMessageBox msgMsg(this); + msgMsg.setIcon(QMessageBox::Warning); + msgMsg.setWindowTitle(QMessageBox::tr("Hedgewars - Error")); + msgMsg.setText(msg); + msgMsg.setWindowModality(Qt::WindowModal); + msgMsg.exec(); } void HWForm::GetRecord(RecordType type, const QByteArray & record) @@ -1674,8 +1686,17 @@ // hack to add user's settings to hwengine. might be better at this point to read in the file, append it, and write it out to its new home. This assumes no spaces in the data dir path if (success) success = system(("sed -i 's/^\\(Exec=.*\\) \\([^ ]* %f\\)/\\1 "+cfgdir->absolutePath().replace(" ","\\\\ ").replace("/","\\/")+" \\2 --set-everything "+arguments+"/' "+QDir::home().absolutePath()+"/.local/share/applications/hwengine.desktop").toLocal8Bit().constData())==0; #endif - if (success) QMessageBox::information(0, "", QMessageBox::tr("All file associations have been set.")); - else QMessageBox::information(0, "", QMessageBox::tr("File association failed.")); + if (success) + { + QMessageBox infoMsg(this); + infoMsg.setIcon(QMessageBox::Information); + infoMsg.setWindowTitle(QMessageBox::tr("Hedgewars - Success")); + infoMsg.setText(QMessageBox::tr("All file associations have been set")); + infoMsg.setWindowModality(Qt::WindowModal); + infoMsg.exec(); + } + else + ShowErrorMessage(QMessageBox::tr("File association failed.")); } void HWForm::saveDemoWithCustomName() @@ -1711,8 +1732,7 @@ //Create Xml representation of google code issue first if (!CreateIssueXml()) { - QMessageBox::warning(this, QMessageBox::tr("Fields required"), - QMessageBox::tr("Please fill out all fields")); + ShowErrorMessage(QMessageBox::tr("Please fill out all fields")); return; } @@ -1758,18 +1778,23 @@ if (authToken.length() != 0) { - QMessageBox::information(this, QMessageBox::tr("Success"), - QMessageBox::tr("Successfully posted the issue on code.google.com!")); + + QMessageBox infoMsg(this); + infoMsg.setIcon(QMessageBox::Information); + infoMsg.setWindowTitle(QMessageBox::tr("Hedgewars - Success")); + infoMsg.setText(QMessageBox::tr("Successfully posted the issue on hedgewars.googlecode.com")); + infoMsg.setWindowModality(Qt::WindowModal); + infoMsg.exec(); + ui.pageFeedback->summary->clear(); ui.pageFeedback->description->clear(); authToken = ""; return; } - if(!getAuthToken(str)) + if (!getAuthToken(str)) { - QMessageBox::warning(this, QMessageBox::tr("Network"), - QMessageBox::tr("Error during authentication with www.google.com")); + ShowErrorMessage(QMessageBox::tr("Error during authentication at google.com")); return; } @@ -1782,12 +1807,10 @@ } else if (authToken.length() == 0) - QMessageBox::warning(this, QMessageBox::tr("Network"), - QMessageBox::tr("Error during authentication with www.google.com")); + ShowErrorMessage(QMessageBox::tr("Error during authentication at google.com")); else { - QMessageBox::warning(this, QMessageBox::tr("Network"), - QMessageBox::tr("Error creating the issue")); + ShowErrorMessage(QMessageBox::tr("Error reporting the issue, please try again later (or visit hedgewars.googlecode.com directly)")); authToken = ""; } diff -r 3331b30e4ef1 -r 88fde28bbda6 QTfrontend/main.cpp --- a/QTfrontend/main.cpp Sun Oct 21 01:28:33 2012 +0400 +++ b/QTfrontend/main.cpp Sat Nov 03 00:34:35 2012 +0400 @@ -92,10 +92,12 @@ if (!tmpdir.exists(dir)) if (!tmpdir.mkdir(dir)) { - QMessageBox::critical(0, - QObject::tr("Error"), - QObject::tr("Cannot create directory %1").arg(dir), - QObject::tr("OK")); + QMessageBox directoryMsg(QApplication::activeWindow()); + directoryMsg.setIcon(QMessageBox::Warning); + directoryMsg.setWindowTitle(QMessageBox::tr("Main - Error")); + directoryMsg.setText(QMessageBox::tr("Cannot create directory %1").arg(dir)); + directoryMsg.setWindowModality(Qt::WindowModal); + directoryMsg.exec(); return false; } return true; @@ -208,10 +210,14 @@ datadir->cd(*cDataDir); if(!datadir->cd("hedgewars/Data")) { - QMessageBox::critical(0, QMessageBox::tr("Error"), - QMessageBox::tr("Failed to open data directory:\n%1\n" - "Please check your installation"). - arg(datadir->absolutePath()+"/hedgewars/Data")); + QMessageBox missingMsg(QApplication::activeWindow()); + missingMsg.setIcon(QMessageBox::Critical); + missingMsg.setWindowTitle(QMessageBox::tr("Main - Error")); + missingMsg.setText(QMessageBox::tr("Failed to open data directory:\n%1\n\n" + "Please check your installation!"). + arg(datadir->absolutePath()+"/hedgewars/Data")); + missingMsg.setWindowModality(Qt::WindowModal); + missingMsg.exec(); return 1; } diff -r 3331b30e4ef1 -r 88fde28bbda6 QTfrontend/model/playerslistmodel.cpp --- a/QTfrontend/model/playerslistmodel.cpp Sun Oct 21 01:28:33 2012 +0400 +++ b/QTfrontend/model/playerslistmodel.cpp Sat Nov 03 00:34:35 2012 +0400 @@ -110,8 +110,9 @@ if(mil.size()) { - setData(mil[0], "1", RoomFilterRole); + setData(mil[0], true, RoomFilterRole); updateIcon(mil[0]); + updateSortData(mil[0]); } } @@ -122,7 +123,10 @@ if(mil.size()) { - setData(mil[0], "0", RoomFilterRole); + setData(mil[0], false, RoomFilterRole); + setData(mil[0], false, RoomAdmin); + setData(mil[0], false, Ready); + setData(mil[0], false, InGame); updateIcon(mil[0]); } } @@ -181,9 +185,9 @@ { QModelIndex mi = index(i); - if(mi.data(RoomFilterRole).toString() == "1") + if(mi.data(RoomFilterRole).toBool()) { - setData(mi, "0", RoomFilterRole); + setData(mi, false, RoomFilterRole); setData(mi, false, RoomAdmin); setData(mi, false, Ready); setData(mi, false, InGame); @@ -207,7 +211,7 @@ << index.data(Friend).toBool() << index.data(Ignore).toBool() << index.data(InGame).toBool() - << (index.data(RoomFilterRole).toString() == "1") + << index.data(RoomFilterRole).toBool() ; for(int i = flags.size() - 1; i >= 0; --i) @@ -225,14 +229,20 @@ QPainter painter(&result); - if(index.data(RoomFilterRole).toString() == "1") + if(index.data(RoomFilterRole).toBool()) + { if(index.data(InGame).toBool()) + { painter.drawPixmap(0, 0, 16, 16, QPixmap(":/res/chat/ingame.png")); + } else + { if(index.data(Ready).toBool()) painter.drawPixmap(0, 0, 16, 16, QPixmap(":/res/chat/lamp.png")); else painter.drawPixmap(0, 0, 16, 16, QPixmap(":/res/chat/lamp_off.png")); + } + } QString mainIconName(":/res/chat/"); diff -r 3331b30e4ef1 -r 88fde28bbda6 QTfrontend/net/netserver.cpp --- a/QTfrontend/net/netserver.cpp Sun Oct 21 01:28:33 2012 +0400 +++ b/QTfrontend/net/netserver.cpp Sat Nov 03 00:34:35 2012 +0400 @@ -17,8 +17,6 @@ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA */ -#include - #include "hwconsts.h" #include "netserver.h" diff -r 3331b30e4ef1 -r 88fde28bbda6 QTfrontend/net/newnetclient.cpp --- a/QTfrontend/net/newnetclient.cpp Sun Oct 21 01:28:33 2012 +0400 +++ b/QTfrontend/net/newnetclient.cpp Sat Nov 03 00:34:35 2012 +0400 @@ -53,7 +53,7 @@ m_roomPlayersModel->setDynamicSortFilter(true); m_roomPlayersModel->sort(0); m_roomPlayersModel->setFilterRole(PlayersListModel::RoomFilterRole); - m_roomPlayersModel->setFilterFixedString("1"); + m_roomPlayersModel->setFilterFixedString("true"); // socket stuff connect(&NetSocket, SIGNAL(readyRead()), this, SLOT(ClientRead())); @@ -102,9 +102,6 @@ RawSendNet(QString("CREATE_ROOM%1%2").arg(delimeter).arg(room)); isChief = true; - - //set our ready status to be true - RawSendNet(QString("TOGGLE_READY")); } void HWNewNet::JoinRoom(const QString & room) @@ -395,14 +392,12 @@ if (isChief && !setFlag) ToggleReady(); else emit setMyReadyStatus(setFlag); } - emit setReadyStatus(nick, setFlag); m_playersModel->setFlag(nick, PlayersListModel::Ready, setFlag); } break; // flag indicating if a player is a registered user case 'u': - emit setRegisteredStatus(nicks, setFlag); foreach(const QString & nick, nicks) m_playersModel->setFlag(nick, PlayersListModel::Registered, setFlag); break; @@ -422,7 +417,6 @@ emit roomMaster(isChief); } - emit setRoomMasterStatus(nick, setFlag); m_playersModel->setFlag(nick, PlayersListModel::RoomAdmin, setFlag); } break; @@ -434,7 +428,6 @@ if (nick == mynick) emit adminAccess(setFlag); - emit setAdminStatus(nick, setFlag); m_playersModel->setFlag(nick, PlayersListModel::ServerAdmin, setFlag); } break; diff -r 3331b30e4ef1 -r 88fde28bbda6 QTfrontend/net/newnetclient.h --- a/QTfrontend/net/newnetclient.h Sun Oct 21 01:28:33 2012 +0400 +++ b/QTfrontend/net/newnetclient.h Sat Nov 03 00:34:35 2012 +0400 @@ -145,11 +145,7 @@ void serverMessageOld(const QString &); void latestProtocolVar(int); - void setReadyStatus(const QString & nick, bool isReady); void setMyReadyStatus(bool isReady); - void setAdminStatus(const QString & nick, bool isAdmin); - void setRoomMasterStatus(const QString & nick, bool isAdmin); - void setRegisteredStatus(const QStringList & nicks, bool isRegistered); public slots: void ToggleReady(); diff -r 3331b30e4ef1 -r 88fde28bbda6 QTfrontend/net/recorder.cpp --- a/QTfrontend/net/recorder.cpp Sun Oct 21 01:28:33 2012 +0400 +++ b/QTfrontend/net/recorder.cpp Sat Nov 03 00:34:35 2012 +0400 @@ -18,13 +18,12 @@ #include #include -//#include #include "recorder.h" #include "gameuiconfig.h" #include "hwconsts.h" #include "game.h" -#include "libav_iteraction.h" +#include "LibavInteraction.h" // Encoding is memory expensive process, so we need to limit maximum number // of simultaneous encoders. @@ -39,7 +38,7 @@ this->config = config; this->prefix = prefix; finished = false; - name = prefix + "." + LibavIteraction::instance().getExtension(config->AVFormat()); + name = prefix + "." + LibavInteraction::instance().getExtension(config->AVFormat()); } HWRecorder::~HWRecorder() @@ -111,7 +110,7 @@ arguments << "0"; // sound volume arguments << QString::number(config->timerInterval()); arguments << datadir->absolutePath(); - arguments << (config->isShowFPSEnabled() ? "1" : "0"); + arguments << "0"; // fps arguments << (config->isAltDamageEnabled() ? "1" : "0"); arguments << config->netNick().toUtf8().toBase64(); arguments << QString::number(config->translateQuality()); @@ -125,7 +124,7 @@ // Could use a field to use quality instead. maybe quality could override bitrate - or just pass (and set) both. // The library does support using both at once after all. arguments << QString::number(config->rec_Bitrate()*1024); - arguments << (config->recordAudio()? config->audioCodec() : "no"); + arguments << (config->recordAudio() ? config->audioCodec() : "no"); return arguments; } diff -r 3331b30e4ef1 -r 88fde28bbda6 QTfrontend/net/tcpBase.cpp --- a/QTfrontend/net/tcpBase.cpp Sun Oct 21 01:28:33 2012 +0400 +++ b/QTfrontend/net/tcpBase.cpp Sat Nov 03 00:34:35 2012 +0400 @@ -21,7 +21,7 @@ #include #include - +#include #include #include "hwconsts.h" @@ -45,10 +45,14 @@ IPCServer->setMaxPendingConnections(1); if (!IPCServer->listen(QHostAddress::LocalHost)) { - QMessageBox::critical(0, tr("Error"), - tr("Unable to start the server: %1.") - .arg(IPCServer->errorString())); - exit(0); // FIXME - should be graceful exit here + QMessageBox deniedMsg(QApplication::activeWindow()); + deniedMsg.setIcon(QMessageBox::Critical); + deniedMsg.setWindowTitle(QMessageBox::tr("TCP - Error")); + deniedMsg.setText(QMessageBox::tr("Unable to start the server: %1.").arg(IPCServer->errorString())); + deniedMsg.setWindowModality(Qt::WindowModal); + deniedMsg.exec(); + + exit(0); // FIXME - should be graceful exit here (lower Critical -> Warning above when implemented) } } ipc_port=IPCServer->serverPort(); @@ -113,9 +117,13 @@ void TCPBase::StartProcessError(QProcess::ProcessError error) { - QMessageBox::critical(0, tr("Error"), - tr("Unable to run engine: %1 (") - .arg(error) + bindir->absolutePath() + "/hwengine)"); + QMessageBox deniedMsg(QApplication::activeWindow()); + deniedMsg.setIcon(QMessageBox::Critical); + deniedMsg.setWindowTitle(QMessageBox::tr("TCP - Error")); + deniedMsg.setText(QMessageBox::tr("Unable to run engine at ") + bindir->absolutePath() + "/hwengine\n" + + QMessageBox::tr("Error code: %1").arg(error)); + deniedMsg.setWindowModality(Qt::WindowModal); + deniedMsg.exec(); ClientDisconnect(); } diff -r 3331b30e4ef1 -r 88fde28bbda6 QTfrontend/res/BackgroundBirthday.png Binary file QTfrontend/res/BackgroundBirthday.png has changed diff -r 3331b30e4ef1 -r 88fde28bbda6 QTfrontend/res/chat/hedgehog_gray.png Binary file QTfrontend/res/chat/hedgehog_gray.png has changed diff -r 3331b30e4ef1 -r 88fde28bbda6 QTfrontend/res/chat/roomadmin_gray.png Binary file QTfrontend/res/chat/roomadmin_gray.png has changed diff -r 3331b30e4ef1 -r 88fde28bbda6 QTfrontend/res/chat/serveradmin_gray.png Binary file QTfrontend/res/chat/serveradmin_gray.png has changed diff -r 3331b30e4ef1 -r 88fde28bbda6 QTfrontend/res/css/birthday.css --- a/QTfrontend/res/css/birthday.css Sun Oct 21 01:28:33 2012 +0400 +++ b/QTfrontend/res/css/birthday.css Sat Nov 03 00:34:35 2012 +0400 @@ -21,7 +21,7 @@ background-image: url(":/res/BackgroundBirthday.png"); background-position: bottom center; background-repeat: repeat-x; -background-color: #141250; +background-color: #100308; } * { @@ -32,16 +32,16 @@ a { color:#c8c8ff; } -QLineEdit, QListWidget, QTableView, QTextBrowser, QSpinBox, QComboBox, +QLineEdit, QListWidget, QListView, QTableView, QTextBrowser, QSpinBox, QComboBox, QComboBox QAbstractItemView, QPlainTextEdit, QMenu::item { -background-color: rgba(13, 5, 68, 70%); +background-color: rgba(20, 20, 20, 70%); } QComboBox::separator { border: solid; border-width: 3px; border-color: #ffcc00; } -QPushButton, QListWidget, QTableView, QLineEdit, QHeaderView, +QPushButton, QListWidget, QListView, QTableView, QLineEdit, QHeaderView, QTextBrowser, QSpinBox, QToolBox, QComboBox, QPlainTextEdit, QComboBox QAbstractItemView, IconedGroupBox, .QGroupBox, GameCFGWidget, TeamSelWidget, SelWeaponWidget, @@ -51,17 +51,17 @@ border-color: #ffcc00; } -QPushButton:hover, QLineEdit:hover, QListWidget:hover, +QPushButton:hover, QLineEdit:hover, QListWidget:hover, QListView:hover, QSpinBox:hover, QToolBox:hover, QComboBox:hover { border-color: yellow; } -QLineEdit, QListWidget,QTableView, QTextBrowser, +QLineEdit, QListWidget, QListView,QTableView, QTextBrowser, QSpinBox, QToolBox, QPlainTextEdit { border-radius: 10px; } -QLineEdit, QLabel, QHeaderView, QListWidget, QTableView, +QLineEdit, QLabel, QHeaderView, QListWidget, QListView, QTableView, QSpinBox, QToolBox::tab, QComboBox, QComboBox QAbstractItemView, IconedGroupBox, .QGroupBox, GameCFGWidget, TeamSelWidget, SelWeaponWidget, QCheckBox, QRadioButton, QPushButton, QPlainTextEdit { @@ -76,7 +76,7 @@ background-position: bottom center; background-repeat: repeat-x; border-radius: 16px; -background-color: rgba(13, 5, 68, 70%); +background-color: rgba(20, 20, 20, 70%); padding: 6px; } /* Experimenting with PaintOnScreen and border-radius on IconedGroupBox children didn't work out well diff -r 3331b30e4ef1 -r 88fde28bbda6 QTfrontend/res/css/christmas.css --- a/QTfrontend/res/css/christmas.css Sun Oct 21 01:28:33 2012 +0400 +++ b/QTfrontend/res/css/christmas.css Sat Nov 03 00:34:35 2012 +0400 @@ -32,7 +32,7 @@ a { color:#c8c8ff; } -QLineEdit, QListWidget, QTableView, QTextBrowser, QSpinBox, QComboBox, +QLineEdit, QListWidget, QListView, QTableView, QTextBrowser, QSpinBox, QComboBox, QComboBox QAbstractItemView, QPlainTextEdit, QMenu::item { background-color: rgba(13, 5, 68, 70%); } @@ -41,7 +41,7 @@ border: solid; border-width: 3px; border-color: #ffcc00; } -QPushButton, QListWidget, QTableView, QLineEdit, QHeaderView, +QPushButton, QListWidget, QListView, QTableView, QLineEdit, QHeaderView, QTextBrowser, QSpinBox, QToolBox, QComboBox, QPlainTextEdit, QComboBox QAbstractItemView, IconedGroupBox, .QGroupBox, GameCFGWidget, TeamSelWidget, SelWeaponWidget, @@ -51,17 +51,17 @@ border-color: #ffcc00; } -QPushButton:hover, QLineEdit:hover, QListWidget:hover, +QPushButton:hover, QLineEdit:hover, QListWidget:hover, QListView:hover, QSpinBox:hover, QToolBox:hover, QComboBox:hover { border-color: yellow; } -QLineEdit, QListWidget,QTableView, QTextBrowser, +QLineEdit, QListWidget, QListView,QTableView, QTextBrowser, QSpinBox, QToolBox, QPlainTextEdit { border-radius: 10px; } -QLineEdit, QLabel, QHeaderView, QListWidget, QTableView, +QLineEdit, QLabel, QHeaderView, QListWidget, QListView, QTableView, QSpinBox, QToolBox::tab, QComboBox, QComboBox QAbstractItemView, IconedGroupBox, .QGroupBox, GameCFGWidget, TeamSelWidget, SelWeaponWidget, QCheckBox, QRadioButton, QPushButton, QPlainTextEdit { diff -r 3331b30e4ef1 -r 88fde28bbda6 QTfrontend/res/css/easter.css --- a/QTfrontend/res/css/easter.css Sun Oct 21 01:28:33 2012 +0400 +++ b/QTfrontend/res/css/easter.css Sat Nov 03 00:34:35 2012 +0400 @@ -32,7 +32,7 @@ a { color:#c8c8ff; } -QLineEdit, QListWidget, QTableView, QTextBrowser, QSpinBox, QComboBox, +QLineEdit, QListWidget, QListView, QTableView, QTextBrowser, QSpinBox, QComboBox, QComboBox QAbstractItemView, QPlainTextEdit, QMenu::item { background-color: rgba(13, 5, 68, 70%); } @@ -41,7 +41,7 @@ border: solid; border-width: 3px; border-color: #ffcc00; } -QPushButton, QListWidget, QTableView, QLineEdit, QHeaderView, +QPushButton, QListWidget, QListView, QTableView, QLineEdit, QHeaderView, QTextBrowser, QSpinBox, QToolBox, QComboBox, QPlainTextEdit, QComboBox QAbstractItemView, IconedGroupBox, .QGroupBox, GameCFGWidget, TeamSelWidget, SelWeaponWidget, @@ -51,17 +51,17 @@ border-color: #ffcc00; } -QPushButton:hover, QLineEdit:hover, QListWidget:hover, +QPushButton:hover, QLineEdit:hover, QListWidget:hover, QListView:hover, QSpinBox:hover, QToolBox:hover, QComboBox:hover { border-color: yellow; } -QLineEdit, QListWidget,QTableView, QTextBrowser, +QLineEdit, QListWidget, QListView,QTableView, QTextBrowser, QSpinBox, QToolBox, QPlainTextEdit { border-radius: 10px; } -QLineEdit, QLabel, QHeaderView, QListWidget, QTableView, +QLineEdit, QLabel, QHeaderView, QListWidget, QListView, QTableView, QSpinBox, QToolBox::tab, QComboBox, QComboBox QAbstractItemView, IconedGroupBox, .QGroupBox, GameCFGWidget, TeamSelWidget, SelWeaponWidget, QCheckBox, QRadioButton, QPushButton, QPlainTextEdit { diff -r 3331b30e4ef1 -r 88fde28bbda6 QTfrontend/res/css/qt.css --- a/QTfrontend/res/css/qt.css Sun Oct 21 01:28:33 2012 +0400 +++ b/QTfrontend/res/css/qt.css Sat Nov 03 00:34:35 2012 +0400 @@ -116,17 +116,18 @@ alternate-background-color: #2f213a; gridline-color: transparent; } - +QTabWidget::pane { top: -2px; } QTabBar::tab { -border-bottom-width: 0; border-radius: 0; border-top-left-radius: 6px; border-top-right-radius: 6px; padding: 3px; +background-color: #00351d; +color: #ffcc00; } -QTabBar::tab:!selected { -color: #0d0544; -background-color: #ffcc00; +QTabBar::tab:selected { +border-bottom-color: #0d0544; +border-bottom-width: 0; } QSpinBox::up-button{ background: transparent; diff -r 3331b30e4ef1 -r 88fde28bbda6 QTfrontend/ui/dialog/ask_quit.cpp --- a/QTfrontend/ui/dialog/ask_quit.cpp Sun Oct 21 01:28:33 2012 +0400 +++ b/QTfrontend/ui/dialog/ask_quit.cpp Sat Nov 03 00:34:35 2012 +0400 @@ -30,14 +30,14 @@ { this->form = form; - setWindowTitle(tr("Do yot really want to quit?")); + setWindowTitle(tr("Do you really want to quit?")); QVBoxLayout * layout = new QVBoxLayout(this); QLabel * lbLabel = new QLabel(this); lbLabel->setText(QLabel::tr("There are videos that are currently being processed.\n" "Exiting now will abort them.\n" - "Do yot really want to quit?")); + "Do you really want to quit?")); layout->addWidget(lbLabel); lbList = new QLabel(this); @@ -58,6 +58,8 @@ QTimer * timer = new QTimer(this); connect(timer, SIGNAL(timeout()), this, SLOT(updateList())); timer->start(200); + + this->setWindowModality(Qt::WindowModal); } void HWAskQuitDialog::goToPageVideos() diff -r 3331b30e4ef1 -r 88fde28bbda6 QTfrontend/ui/dialog/input_ip.cpp --- a/QTfrontend/ui/dialog/input_ip.cpp Sun Oct 21 01:28:33 2012 +0400 +++ b/QTfrontend/ui/dialog/input_ip.cpp Sat Nov 03 00:34:35 2012 +0400 @@ -60,6 +60,8 @@ connect(pbOK, SIGNAL(clicked()), this, SLOT(accept())); connect(pbCancel, SIGNAL(clicked()), this, SLOT(reject())); connect(pbDefault, SIGNAL(clicked()), this, SLOT(setDefaultPort())); + + this->setWindowModality(Qt::WindowModal); } void HWHostPortDialog::setDefaultPort() diff -r 3331b30e4ef1 -r 88fde28bbda6 QTfrontend/ui/dialog/input_password.cpp --- a/QTfrontend/ui/dialog/input_password.cpp Sun Oct 21 01:28:33 2012 +0400 +++ b/QTfrontend/ui/dialog/input_password.cpp Sat Nov 03 00:34:35 2012 +0400 @@ -50,4 +50,6 @@ connect(pbOK, SIGNAL(clicked()), this, SLOT(accept())); connect(pbCancel, SIGNAL(clicked()), this, SLOT(reject())); + + this->setWindowModality(Qt::WindowModal); } diff -r 3331b30e4ef1 -r 88fde28bbda6 QTfrontend/ui/dialog/upload_video.cpp --- a/QTfrontend/ui/dialog/upload_video.cpp Sun Oct 21 01:28:33 2012 +0400 +++ b/QTfrontend/ui/dialog/upload_video.cpp Sat Nov 03 00:34:35 2012 +0400 @@ -32,7 +32,6 @@ #include #include #include -#include #include "upload_video.h" #include "hwconsts.h" @@ -159,6 +158,8 @@ connect(btnUpload, SIGNAL(clicked()), this, SLOT(upload())); connect(pbCancel, SIGNAL(clicked()), this, SLOT(reject())); + + this->setWindowModality(Qt::WindowModal); } void HWUploadVideoDialog::showEvent(QShowEvent * event) @@ -233,7 +234,14 @@ errorStr += QMessageBox::tr("Login or password is incorrect"); else errorStr += reply->errorString(); - QMessageBox::warning(this, QMessageBox::tr("Error"), errorStr); + + QMessageBox deniedMsg(this); + deniedMsg.setIcon(QMessageBox::Warning); + deniedMsg.setWindowTitle(QMessageBox::tr("Video upload - Error")); + deniedMsg.setText(errorStr); + deniedMsg.setWindowModality(Qt::WindowModal); + deniedMsg.exec(); + setEditable(true); return; } @@ -288,7 +296,14 @@ { QString errorStr = QMessageBox::tr("Error while sending metadata to youtube.com:\n"); errorStr += reply->errorString(); - QMessageBox::warning(this, QMessageBox::tr("Error"), errorStr); + + QMessageBox deniedMsg(this); + deniedMsg.setIcon(QMessageBox::Warning); + deniedMsg.setWindowTitle(QMessageBox::tr("Video upload - Error")); + deniedMsg.setText(errorStr); + deniedMsg.setWindowModality(Qt::WindowModal); + deniedMsg.exec(); + setEditable(true); return; } diff -r 3331b30e4ef1 -r 88fde28bbda6 QTfrontend/ui/page/AbstractPage.cpp --- a/QTfrontend/ui/page/AbstractPage.cpp Sun Oct 21 01:28:33 2012 +0400 +++ b/QTfrontend/ui/page/AbstractPage.cpp Sat Nov 03 00:34:35 2012 +0400 @@ -25,8 +25,8 @@ #include #include #include -#include -#include + +#include "qpushbuttonwithsound.h" AbstractPage::AbstractPage(QWidget* parent) { @@ -93,6 +93,27 @@ } return btn; } +QPushButton* AbstractPage::formattedSoundlessButton(const QString & name, bool hasIcon) +{ + QPushButton* btn = new QPushButton(this); + + if (hasIcon) + { + const QIcon& lp=QIcon(name); + QSize sz = lp.actualSize(QSize(65535, 65535)); + btn->setIcon(lp); + btn->setFixedSize(sz); + btn->setIconSize(sz); + btn->setFlat(true); + btn->setSizePolicy(QSizePolicy::Fixed, QSizePolicy::Fixed); + } + else + { + btn->setFont(*font14); + btn->setText(name); + } + return btn; +} QPushButtonWithSound * AbstractPage::addButton(const QString & name, QGridLayout * grid, int row, int column, int rowSpan, int columnSpan, bool hasIcon) { @@ -108,6 +129,13 @@ return btn; } +QPushButton* AbstractPage::addSoundlessButton(const QString & name, QBoxLayout * box, int where, bool hasIcon) +{ + QPushButton* btn = formattedSoundlessButton(name, hasIcon); + box->addWidget(btn, where); + return btn; +} + void AbstractPage::setBackButtonVisible(bool visible) { btnBack->setVisible(visible); diff -r 3331b30e4ef1 -r 88fde28bbda6 QTfrontend/ui/page/AbstractPage.h --- a/QTfrontend/ui/page/AbstractPage.h Sun Oct 21 01:28:33 2012 +0400 +++ b/QTfrontend/ui/page/AbstractPage.h Sat Nov 03 00:34:35 2012 +0400 @@ -138,6 +138,7 @@ * @return the button. */ QPushButtonWithSound * formattedButton(const QString & name, bool hasIcon = false); + QPushButton * formattedSoundlessButton(const QString & name, bool hasIcon = false); /** * @brief Creates a default formatted button and adds it to a @@ -167,6 +168,7 @@ * @return the button. */ QPushButtonWithSound * addButton(const QString & name, QBoxLayout * box, int where, bool hasIcon = false); + QPushButton* addSoundlessButton(const QString & name, QBoxLayout * box, int where, bool hasIcon = false); /** * @brief Changes visibility of the back-button. diff -r 3331b30e4ef1 -r 88fde28bbda6 QTfrontend/ui/page/pagedata.cpp --- a/QTfrontend/ui/page/pagedata.cpp Sun Oct 21 01:28:33 2012 +0400 +++ b/QTfrontend/ui/page/pagedata.cpp Sat Nov 03 00:34:35 2012 +0400 @@ -222,10 +222,7 @@ return false; } - if (this->isVisible()) - m_contentDownloaded = true; - else - DataManager::instance().reload(); + m_contentDownloaded = true; } file.close(); @@ -248,6 +245,6 @@ if (m_contentDownloaded) { m_contentDownloaded = false; - DataManager::instance().reload(); + //DataManager::instance().reload(); } } diff -r 3331b30e4ef1 -r 88fde28bbda6 QTfrontend/ui/page/pageeditteam.cpp --- a/QTfrontend/ui/page/pageeditteam.cpp Sun Oct 21 01:28:33 2012 +0400 +++ b/QTfrontend/ui/page/pageeditteam.cpp Sat Nov 03 00:34:35 2012 +0400 @@ -134,7 +134,7 @@ CBVoicepack = new QComboBox(GBoxTeam); hbox->addWidget(CBVoicepack, 100); - btnTestSound = addButton(":/res/PlaySound.png", hbox, 1, true); + btnTestSound = addSoundlessButton(":/res/PlaySound.png", hbox, 1, true); hbox->setStretchFactor(btnTestSound, 1); GBTLayout->addLayout(hbox, 4, 1); @@ -383,9 +383,14 @@ void PageEditTeam::deleteTeam(const QString & name) { - QMessageBox reallyDelete(QMessageBox::Question, QMessageBox::tr("Teams"), QMessageBox::tr("Really delete this team?"), QMessageBox::Ok | QMessageBox::Cancel, this); + QMessageBox reallyDeleteMsg(this); + reallyDeleteMsg.setIcon(QMessageBox::Question); + reallyDeleteMsg.setWindowTitle(QMessageBox::tr("Teams - Are you sure?")); + reallyDeleteMsg.setText(QMessageBox::tr("Do you really want to delete the team '%1'?").arg(name)); + reallyDeleteMsg.setWindowModality(Qt::WindowModal); + reallyDeleteMsg.setStandardButtons(QMessageBox::Ok | QMessageBox::Cancel); - if (reallyDelete.exec() == QMessageBox::Ok) + if (reallyDeleteMsg.exec() == QMessageBox::Ok) HWTeam(name).deleteFile(); } diff -r 3331b30e4ef1 -r 88fde28bbda6 QTfrontend/ui/page/pagegamestats.cpp --- a/QTfrontend/ui/page/pagegamestats.cpp Sun Oct 21 01:28:33 2012 +0400 +++ b/QTfrontend/ui/page/pagegamestats.cpp Sat Nov 03 00:34:35 2012 +0400 @@ -140,7 +140,7 @@ while (i != healthPoints.constEnd()) { quint32 c = i.key(); - QColor clanColor = QColor(qRgb((c >> 16) & 255, (c >> 8) & 255, c & 255)); + //QColor clanColor = QColor(qRgb((c >> 16) & 255, (c >> 8) & 255, c & 255)); QVector hps = i.value(); QPainterPath path; diff -r 3331b30e4ef1 -r 88fde28bbda6 QTfrontend/ui/page/pagemain.cpp diff -r 3331b30e4ef1 -r 88fde28bbda6 QTfrontend/ui/page/pagenet.cpp --- a/QTfrontend/ui/page/pagenet.cpp Sun Oct 21 01:28:33 2012 +0400 +++ b/QTfrontend/ui/page/pagenet.cpp Sat Nov 03 00:34:35 2012 +0400 @@ -108,7 +108,12 @@ QModelIndex mi = tvServersList->currentIndex(); if(!mi.isValid()) { - QMessageBox::information(this, tr("Error"), tr("Please select server from the list above")); + QMessageBox serverMsg(this); + serverMsg.setIcon(QMessageBox::Warning); + serverMsg.setWindowTitle(QMessageBox::tr("Netgame - Error")); + serverMsg.setText(QMessageBox::tr("Please select a server from the list")); + serverMsg.setWindowModality(Qt::WindowModal); + serverMsg.exec(); return; } QString host = model->index(mi.row(), 1).data().toString(); diff -r 3331b30e4ef1 -r 88fde28bbda6 QTfrontend/ui/page/pagenetgame.cpp --- a/QTfrontend/ui/page/pagenetgame.cpp Sun Oct 21 01:28:33 2012 +0400 +++ b/QTfrontend/ui/page/pagenetgame.cpp Sat Nov 03 00:34:35 2012 +0400 @@ -62,9 +62,6 @@ { QHBoxLayout * bottomLayout = new QHBoxLayout; - btnDLC = addButton(tr("DLC"), bottomLayout, 0); - btnDLC->setWhatsThis(tr("Downloadable Content")); - leRoomName = new HistoryLineEdit(this,10); leRoomName->setMaxLength(60); leRoomName->setMinimumWidth(200); @@ -79,23 +76,21 @@ BtnGo->setMinimumHeight(50); bottomLayout->addWidget(leRoomName); - BtnUpdate = addButton(QAction::tr("Update"), bottomLayout, 2); + BtnUpdate = addButton(QAction::tr("Update"), bottomLayout, 1); bottomLayout->addStretch(); bottomLayout->addWidget(BtnGo); - BtnMaster = addButton(tr("Control"), bottomLayout, 4); + BtnMaster = addButton(tr("Control"), bottomLayout, 3); bottomLayout->insertStretch(3, 100); - BtnStart = addButton(QAction::tr("Start"), bottomLayout, 4); + BtnStart = addButton(QAction::tr("Start"), bottomLayout, 3); return bottomLayout; } void PageNetGame::connectSignals() { - connect(btnDLC, SIGNAL(clicked()), this, SIGNAL(DLCClicked())); - connect(btnSetup, SIGNAL(clicked()), this, SIGNAL(SetupClicked())); connect(BtnUpdate, SIGNAL(clicked()), this, SLOT(onUpdateClick())); @@ -157,10 +152,12 @@ else { leRoomName->clear(); - QMessageBox::critical(this, - tr("Error"), - tr("Please enter room name"), - tr("OK")); + QMessageBox roomMsg(this); + roomMsg.setIcon(QMessageBox::Warning); + roomMsg.setWindowTitle(QMessageBox::tr("Netgame - Error")); + roomMsg.setText(QMessageBox::tr("Please enter room name")); + roomMsg.setWindowModality(Qt::WindowModal); + roomMsg.exec(); } } @@ -177,10 +174,6 @@ BtnStart->setVisible(isMaster); BtnUpdate->setVisible(isMaster); leRoomName->setVisible(isMaster); - - //disable the `toggle ready` button, because the start button does the same - //job when the user is chief - BtnGo->setVisible(!isMaster); } void PageNetGame::setUser(const QString & nickname) diff -r 3331b30e4ef1 -r 88fde28bbda6 QTfrontend/ui/page/pagenetgame.h --- a/QTfrontend/ui/page/pagenetgame.h Sun Oct 21 01:28:33 2012 +0400 +++ b/QTfrontend/ui/page/pagenetgame.h Sat Nov 03 00:34:35 2012 +0400 @@ -65,7 +65,6 @@ signals: void SetupClicked(); - void DLCClicked(); void askForUpdateRoomName(const QString &); private: @@ -77,7 +76,6 @@ HistoryLineEdit * leRoomName; QPushButton * btnSetup; - QPushButton * btnDLC; }; #endif diff -r 3331b30e4ef1 -r 88fde28bbda6 QTfrontend/ui/page/pageplayrecord.cpp --- a/QTfrontend/ui/page/pageplayrecord.cpp Sun Oct 21 01:28:33 2012 +0400 +++ b/QTfrontend/ui/page/pageplayrecord.cpp Sat Nov 03 00:34:35 2012 +0400 @@ -120,10 +120,12 @@ QListWidgetItem * curritem = DemosList->currentItem(); if (!curritem) { - QMessageBox::critical(this, - tr("Error"), - tr("Please select record from the list"), - tr("OK")); + QMessageBox recordMsg(this); + recordMsg.setIcon(QMessageBox::Warning); + recordMsg.setWindowTitle(QMessageBox::tr("Record Play - Error")); + recordMsg.setText(QMessageBox::tr("Please select record from the list")); + recordMsg.setWindowModality(Qt::WindowModal); + recordMsg.exec(); return ; } QFile rfile(curritem->data(Qt::UserRole).toString()); @@ -144,7 +146,14 @@ ok = rfile.rename(newfullname); if(!ok) - QMessageBox::critical(this, tr("Error"), tr("Cannot rename to") + newfullname); + { + QMessageBox renameMsg(this); + renameMsg.setIcon(QMessageBox::Warning); + renameMsg.setWindowTitle(QMessageBox::tr("Record Play - Error")); + renameMsg.setText(QMessageBox::tr("Cannot rename to ") + newfullname); + renameMsg.setWindowModality(Qt::WindowModal); + renameMsg.exec(); + } else FillFromDir(recType); } @@ -155,10 +164,12 @@ QListWidgetItem * curritem = DemosList->currentItem(); if (!curritem) { - QMessageBox::critical(this, - tr("Error"), - tr("Please select record from the list"), - tr("OK")); + QMessageBox recordMsg(this); + recordMsg.setIcon(QMessageBox::Warning); + recordMsg.setWindowTitle(QMessageBox::tr("Record Play - Error")); + recordMsg.setText(QMessageBox::tr("Please select record from the list")); + recordMsg.setWindowModality(Qt::WindowModal); + recordMsg.exec(); return ; } QFile rfile(curritem->data(Qt::UserRole).toString()); @@ -167,7 +178,14 @@ ok = rfile.remove(); if(!ok) - QMessageBox::critical(this, tr("Error"), tr("Cannot delete file")); + { + QMessageBox removeMsg(this); + removeMsg.setIcon(QMessageBox::Warning); + removeMsg.setWindowTitle(QMessageBox::tr("Record Play - Error")); + removeMsg.setText(QMessageBox::tr("Cannot delete file ") + rfile.fileName()); + removeMsg.setWindowModality(Qt::WindowModal); + removeMsg.exec(); + } else { int i = DemosList->row(curritem); diff -r 3331b30e4ef1 -r 88fde28bbda6 QTfrontend/ui/page/pageroomslist.cpp --- a/QTfrontend/ui/page/pageroomslist.cpp Sun Oct 21 01:28:33 2012 +0400 +++ b/QTfrontend/ui/page/pageroomslist.cpp Sat Nov 03 00:34:35 2012 +0400 @@ -101,7 +101,6 @@ BtnCreate = addButton(tr("Create"), pageLayout, 0, 2); BtnJoin = addButton(tr("Join"), pageLayout, 1, 2); - BtnRefresh = addButton(tr("Refresh"), pageLayout, 3, 2); BtnClear = addButton(tr("Clear"), pageLayout, 4, 2); // strech all but the buttons column @@ -143,7 +142,6 @@ connect(BtnCreate, SIGNAL(clicked()), this, SLOT(onCreateClick())); connect(BtnJoin, SIGNAL(clicked()), this, SLOT(onJoinClick())); - connect(BtnRefresh, SIGNAL(clicked()), this, SLOT(onRefreshClick())); connect(BtnClear, SIGNAL(clicked()), this, SLOT(onClearClick())); connect(roomsList, SIGNAL(doubleClicked (const QModelIndex &)), this, SLOT(onJoinClick())); connect(CBState, SIGNAL(currentIndexChanged (int)), this, SLOT(onFilterChanged())); @@ -426,10 +424,14 @@ if (roomName->text().size()) emit askForCreateRoom(roomName->text()); else - QMessageBox::critical(this, - tr("Error"), - tr("Please enter room name"), - tr("OK")); + { + QMessageBox roomNameMsg(this); + roomNameMsg.setIcon(QMessageBox::Warning); + roomNameMsg.setWindowTitle(QMessageBox::tr("Room Name - Error")); + roomNameMsg.setText(QMessageBox::tr("Please enter room name")); + roomNameMsg.setWindowModality(Qt::WindowModal); + roomNameMsg.exec(); + } } void PageRoomsList::onJoinClick() @@ -438,10 +440,12 @@ if(mdl.size() != 1) { - QMessageBox::critical(this, - tr("Error"), - tr("Please select room from the list"), - tr("OK")); + QMessageBox roomNameMsg(this); + roomNameMsg.setIcon(QMessageBox::Warning); + roomNameMsg.setWindowTitle(QMessageBox::tr("Room Name - Error")); + roomNameMsg.setText(QMessageBox::tr("Please select room from the list")); + roomNameMsg.setWindowModality(Qt::WindowModal); + roomNameMsg.exec(); return; } @@ -469,10 +473,15 @@ void PageRoomsList::onJoinConfirmation(const QString & room) { - if (QMessageBox::warning(this, - tr("Warning"), - tr("The game you are trying to join has started.\nDo you still want to join the room?"), - QMessageBox::Yes | QMessageBox::No) == QMessageBox::Yes) + + QMessageBox reallyJoinMsg(this); + reallyJoinMsg.setIcon(QMessageBox::Question); + reallyJoinMsg.setWindowTitle(QMessageBox::tr("Room Name - Are you sure?")); + reallyJoinMsg.setText(QMessageBox::tr("The game you are trying to join has started.\nDo you still want to join the room?")); + reallyJoinMsg.setWindowModality(Qt::WindowModal); + reallyJoinMsg.setStandardButtons(QMessageBox::Ok | QMessageBox::Cancel); + + if (reallyJoinMsg.exec() == QMessageBox::Ok) { emit askForJoinRoom(room); } diff -r 3331b30e4ef1 -r 88fde28bbda6 QTfrontend/ui/page/pageroomslist.h --- a/QTfrontend/ui/page/pageroomslist.h Sun Oct 21 01:28:33 2012 +0400 +++ b/QTfrontend/ui/page/pageroomslist.h Sat Nov 03 00:34:35 2012 +0400 @@ -42,7 +42,6 @@ QTableView * roomsList; QPushButton * BtnCreate; QPushButton * BtnJoin; - QPushButton * BtnRefresh; QPushButton * BtnAdmin; QPushButton * BtnClear; QComboBox * CBState; diff -r 3331b30e4ef1 -r 88fde28bbda6 QTfrontend/ui/page/pagescheme.cpp --- a/QTfrontend/ui/page/pagescheme.cpp Sun Oct 21 01:28:33 2012 +0400 +++ b/QTfrontend/ui/page/pagescheme.cpp Sat Nov 03 00:34:35 2012 +0400 @@ -516,12 +516,30 @@ void PageScheme::deleteRow() { - QMessageBox reallyDelete(QMessageBox::Question, QMessageBox::tr("Schemes"), QMessageBox::tr("Really delete this game scheme?"), QMessageBox::Ok | QMessageBox::Cancel); + int numberOfDefaultSchemes = ((AmmoSchemeModel*)mapper->model())->numberOfDefaultSchemes; + if (selectScheme->currentIndex() < numberOfDefaultSchemes) + { + QMessageBox deniedMsg(this); + deniedMsg.setIcon(QMessageBox::Warning); + deniedMsg.setWindowTitle(QMessageBox::tr("Schemes - Warning")); + deniedMsg.setText(QMessageBox::tr("Cannot delete default scheme '%1'!").arg(selectScheme->currentText())); + deniedMsg.setWindowModality(Qt::WindowModal); + deniedMsg.exec(); + } + else + { + QMessageBox reallyDeleteMsg(this); + reallyDeleteMsg.setIcon(QMessageBox::Question); + reallyDeleteMsg.setWindowTitle(QMessageBox::tr("Schemes - Are you sure?")); + reallyDeleteMsg.setText(QMessageBox::tr("Do you really want to delete the game scheme '%1'?").arg(selectScheme->currentText())); + reallyDeleteMsg.setWindowModality(Qt::WindowModal); + reallyDeleteMsg.setStandardButtons(QMessageBox::Ok | QMessageBox::Cancel); - if (reallyDelete.exec() == QMessageBox::Ok) - { - QAbstractItemModel * model = mapper->model(); - model->removeRow(selectScheme->currentIndex()); + if (reallyDeleteMsg.exec() == QMessageBox::Ok) + { + QAbstractItemModel * model = mapper->model(); + model->removeRow(selectScheme->currentIndex()); + } } } diff -r 3331b30e4ef1 -r 88fde28bbda6 QTfrontend/ui/page/pagevideos.cpp --- a/QTfrontend/ui/page/pagevideos.cpp Sun Oct 21 01:28:33 2012 +0400 +++ b/QTfrontend/ui/page/pagevideos.cpp Sat Nov 03 00:34:35 2012 +0400 @@ -47,7 +47,7 @@ #include "hwconsts.h" #include "pagevideos.h" #include "igbox.h" -#include "libav_iteraction.h" +#include "LibavInteraction.h" #include "gameuiconfig.h" #include "recorder.h" #include "ask_quit.h" @@ -92,7 +92,7 @@ }; VideoItem::VideoItem(const QString& name) - : QTableWidgetItem(name, UserType) +: QTableWidgetItem(name, UserType) { this->name = name; pRecorder = NULL; @@ -128,7 +128,7 @@ // list of supported formats comboAVFormats = new QComboBox(pOptionsGroup); pOptLayout->addWidget(comboAVFormats, 0, 1, 1, 4); - LibavIteraction::instance().fillFormats(comboAVFormats); + LibavInteraction::instance().fillFormats(comboAVFormats); // separator QFrame * hr = new QFrame(pOptionsGroup); @@ -217,6 +217,7 @@ // button 'set default options' btnDefaults = new QPushButton(pOptionsGroup); btnDefaults->setText(QPushButton::tr("Set default options")); + btnDefaults->setWhatsThis(QPushButton::tr("Restore default coding parameters")); pOptLayout->addWidget(btnDefaults, 7, 0, 1, 5); pPageLayout->addWidget(pOptionsGroup, 1, 0); @@ -250,6 +251,7 @@ header->setStretchLastSection(true); btnOpenDir = new QPushButton(QPushButton::tr("Open videos directory"), pTableGroup); + btnOpenDir->setWhatsThis(QPushButton::tr("Open the video directory in your system")); QVBoxLayout *box = new QVBoxLayout(pTableGroup); box->addWidget(filesTable); @@ -296,12 +298,15 @@ // buttons: play and delete btnPlay = new QPushButton(QPushButton::tr("Play"), pDescGroup); btnPlay->setEnabled(false); + btnPlay->setWhatsThis(QPushButton::tr("Play this video")); pBottomDescLayout->addWidget(btnPlay); btnDelete = new QPushButton(QPushButton::tr("Delete"), pDescGroup); btnDelete->setEnabled(false); + btnDelete->setWhatsThis(QPushButton::tr("Delete this video")); pBottomDescLayout->addWidget(btnDelete); btnToYouTube = new QPushButton(QPushButton::tr("Upload to YouTube"), pDescGroup); btnToYouTube->setEnabled(false); + btnToYouTube->setWhatsThis(QPushButton::tr("Upload this video to your Youtube account")); pBottomDescLayout->addWidget(btnToYouTube); pDescLayout->addStretch(1); @@ -369,7 +374,7 @@ comboAudioCodecs->clear(); // get list of codecs for specified format - LibavIteraction::instance().fillCodecs(comboAVFormats->itemData(index).toString(), comboVideoCodecs, comboAudioCodecs); + LibavInteraction::instance().fillCodecs(comboAVFormats->itemData(index).toString(), comboVideoCodecs, comboAudioCodecs); // disable audio if there is no audio codec if (comboAudioCodecs->count() == 0) @@ -411,13 +416,14 @@ void PageVideos::setDefaultCodecs() { - if (tryCodecs("mp4", "libx264", "libmp3lame")) + // VLC should be able to handle any of these configurations + // Quicktime X only opens the first one + // Windows Media Player TODO + if (tryCodecs("mp4", "libx264", "aac")) return; if (tryCodecs("mp4", "libx264", "libfaac")) return; - if (tryCodecs("mp4", "libx264", "libvo_aacenc")) - return; - if (tryCodecs("mp4", "libx264", "aac")) + if (tryCodecs("mp4", "libx264", "libmp3lame")) return; if (tryCodecs("mp4", "libx264", "mp2")) return; @@ -442,8 +448,8 @@ void PageVideos::setDefaultOptions() { - framerateBox->setValue(25); - bitrateBox->setValue(400); + framerateBox->setValue(30); + bitrateBox->setValue(1000); checkRecordAudio->setChecked(true); checkUseGameRes->setChecked(true); setDefaultCodecs(); @@ -645,7 +651,7 @@ } #ifdef Q_WS_WIN // there is a bug in qt, QDir::rename() doesn't fail on such names but damages files - if (newName.contains(QRegExp("[\"*:<>?\/|]"))) + if (newName.contains(QRegExp("[\"*:<>?\\/|]"))) { setName(item, oldName); return; @@ -743,7 +749,7 @@ { // Extract description from file; // It will contain duration, resolution, etc and also comment added by hwengine. - item->desc = LibavIteraction::instance().getFileInfo(path); + item->desc = LibavInteraction::instance().getFileInfo(path); // extract prefix (original name) from description (it is enclosed in prefix[???]prefix) int prefixBegin = item->desc.indexOf("prefix["); @@ -839,18 +845,26 @@ return; // ask user if (s)he is serious - if (QMessageBox::question(this, - tr("Are you sure?"), - tr("Do you really want do remove %1?").arg(item->name), - QMessageBox::Yes | QMessageBox::No) - != QMessageBox::Yes) + QMessageBox reallyDeleteMsg(this); + reallyDeleteMsg.setIcon(QMessageBox::Question); + reallyDeleteMsg.setWindowTitle(QMessageBox::tr("Videos - Are you sure?")); + reallyDeleteMsg.setText(QMessageBox::tr("Do you really want to delete the video '%1'?").arg(item->name)); + reallyDeleteMsg.setWindowModality(Qt::WindowModal); + reallyDeleteMsg.setStandardButtons(QMessageBox::Ok | QMessageBox::Cancel); + + if (reallyDeleteMsg.exec() != QMessageBox::Ok) return; // remove if (!item->ready()) item->pRecorder->deleteLater(); else + { cfgdir->remove("Videos/" + item->name); + // we have no idea whether screenshot is going to be bmp or png so let's delete both + cfgdir->remove("VideoTemp/" + item->prefix + ".png"); + cfgdir->remove("VideoTemp/" + item->prefix + ".bmp"); + } // this code is for removing several files when multiple selection is enabled #if 0 @@ -860,11 +874,14 @@ return; // ask user if (s)he is serious - if (QMessageBox::question(this, - tr("Are you sure?"), - tr("Do you really want do remove %1 file(s)?", "", num).arg(num), - QMessageBox::Yes | QMessageBox::No) - != QMessageBox::Yes) + QMessageBox reallyDeleteMsg(this); + reallyDeleteMsg.setIcon(QMessageBox::Question); + reallyDeleteMsg.setWindowTitle(QMessageBox::tr("Videos - Are you sure?")); + reallyDeleteMsg.setText(QMessageBox::tr("Do you really want to remove %1 file(s)?", "", num).arg(num)); + reallyDeleteMsg.setWindowModality(Qt::WindowModal); + reallyDeleteMsg.setStandardButtons(QMessageBox::Ok | QMessageBox::Cancel); + + if (reallyDeleteMsg.exec() != QMessageBox::Ok) return; // remove @@ -1081,11 +1098,15 @@ if (item->pUploading) { - if (QMessageBox::question(this, - tr("Are you sure?"), - tr("Do you really want do cancel uploading %1?").arg(item->name), - QMessageBox::Yes | QMessageBox::No) - != QMessageBox::Yes) + // ask user if (s)he is serious + QMessageBox reallyStopMsg(this); + reallyStopMsg.setIcon(QMessageBox::Question); + reallyStopMsg.setWindowTitle(QMessageBox::tr("Videos - Are you sure?")); + reallyStopMsg.setText(QMessageBox::tr("Do you really want to cancel uploading %1?").arg(item->name)); + reallyStopMsg.setWindowModality(Qt::WindowModal); + reallyStopMsg.setStandardButtons(QMessageBox::Ok | QMessageBox::Cancel); + + if (reallyStopMsg.exec() != QMessageBox::Ok) return; item->pUploading->deleteLater(); filesTable->setCellWidget(row, vcProgress, NULL); // remove progress bar diff -r 3331b30e4ef1 -r 88fde28bbda6 QTfrontend/ui/widget/about.cpp --- a/QTfrontend/ui/widget/about.cpp Sun Oct 21 01:28:33 2012 +0400 +++ b/QTfrontend/ui/widget/about.cpp Sat Nov 03 00:34:35 2012 +0400 @@ -85,6 +85,10 @@ "Lua game modes and missions: John Lambert <redgrinner@gmail.com>
" "Frontend improvements: Mayur Pawashe <zorgiepoo@gmail.com>
" "Android port: Richard Deurwaarder <xeli@xelification.com>
" + "Android netplay, portability abstraction: Simeon Maxein <smaxein@googlemail.com>
" + "WebGL port, some pas2c and GLES2 work: Meng Xiangyun <xymengxy@gmail.com>
" + "Video recording: Stepan Podoskin <stepik-777@mail.ru>
" + "Campaign support, first campaign: Szabolcs Orbàn <szabibibi@gmail.com>
" "

" + QLabel::tr("Art:") + "

" @@ -123,7 +127,7 @@ "Chinese: Jie Luo <lililjlj@gmail.com>
" "English: Andrey Korotaev <unC0Rr@gmail.com>
" "Finnish: Nina Kuisma <ninnnu@gmail.com>
" - "French: Antoine Turmel <geekshadow@gmail.com>
" + "French: Antoine Turmel <geekshadow@gmail.com>, Clement Woitrain <sphrixclement@gmail.com>
" "German: Peter Hüwe <PeterHuewe@gmx.de>, Mario Liebisch <mario.liebisch@gmail.com>, Richard Karolyi <sheepluva@" "ercatec.net>
" "Greek: <talos_kriti@yahoo.gr>
" "Italian: Luca Bonora <bonora.luca@gmail.com>, Marco Bresciani
" diff -r 3331b30e4ef1 -r 88fde28bbda6 QTfrontend/ui/widget/chatwidget.cpp --- a/QTfrontend/ui/widget/chatwidget.cpp Sun Oct 21 01:28:33 2012 +0400 +++ b/QTfrontend/ui/widget/chatwidget.cpp Sat Nov 03 00:34:35 2012 +0400 @@ -532,9 +532,9 @@ QString hlRegExp("^(.* )?%1[^-a-z0-9_]*( .*)?$"); QRegExp whitespace("\\s"); - m_highlights.append(QRegExp(hlRegExp.arg(m_userNick))); + m_highlights.append(QRegExp(hlRegExp.arg(m_userNick.toLower()))); - QFile file(cfgdir->absolutePath() + "/" + m_userNick + "_highlight.txt"); + QFile file(cfgdir->absolutePath() + "/" + m_userNick.toLower() + "_highlight.txt"); if (file.exists() && (file.open(QIODevice::ReadOnly | QIODevice::Text))) { @@ -554,7 +554,7 @@ file.close(); } - QFile file2(cfgdir->absolutePath() + "/" + m_userNick + "_hlregexp.txt"); + QFile file2(cfgdir->absolutePath() + "/" + m_userNick.toLower() + "_hlregexp.txt"); if (file2.exists() && (file2.open(QIODevice::ReadOnly | QIODevice::Text))) { diff -r 3331b30e4ef1 -r 88fde28bbda6 QTfrontend/ui/widget/drawmapwidget.cpp --- a/QTfrontend/ui/widget/drawmapwidget.cpp Sun Oct 21 01:28:33 2012 +0400 +++ b/QTfrontend/ui/widget/drawmapwidget.cpp Sat Nov 03 00:34:35 2012 +0400 @@ -95,7 +95,14 @@ QFile file(fileName); if(!file.open(QIODevice::WriteOnly)) - QMessageBox::warning(this, tr("File error"), tr("Cannot open file '%1' for writing").arg(fileName)); + { + QMessageBox errorMsg(this); + errorMsg.setIcon(QMessageBox::Warning); + errorMsg.setWindowTitle(QMessageBox::tr("File error")); + errorMsg.setText(QMessageBox::tr("Cannot open '%1' for writing").arg(fileName)); + errorMsg.setWindowModality(Qt::WindowModal); + errorMsg.exec(); + } else file.write(qCompress(m_scene->encode()).toBase64()); } @@ -108,7 +115,14 @@ QFile f(fileName); if(!f.open(QIODevice::ReadOnly)) - QMessageBox::warning(this, tr("File error"), tr("Cannot read file '%1'").arg(fileName)); + { + QMessageBox errorMsg(this); + errorMsg.setIcon(QMessageBox::Warning); + errorMsg.setWindowTitle(QMessageBox::tr("File error")); + errorMsg.setText(QMessageBox::tr("Cannot open '%1' for reading").arg(fileName)); + errorMsg.setWindowModality(Qt::WindowModal); + errorMsg.exec(); + } else m_scene->decode(qUncompress(QByteArray::fromBase64(f.readAll()))); } diff -r 3331b30e4ef1 -r 88fde28bbda6 QTfrontend/ui/widget/gamecfgwidget.cpp --- a/QTfrontend/ui/widget/gamecfgwidget.cpp Sun Oct 21 01:28:33 2012 +0400 +++ b/QTfrontend/ui/widget/gamecfgwidget.cpp Sat Nov 03 00:34:35 2012 +0400 @@ -200,6 +200,10 @@ { QList bcfg; int mapgen = pMapContainer->get_mapgen(); + if (Scripts->currentIndex() > 0) + { + bcfg << QString("escript Scripts/Multiplayer/%1.lua").arg(Scripts->itemData(Scripts->currentIndex(), GameStyleModel::ScriptRole).toString()).toUtf8(); + } QString currentMap = pMapContainer->getCurrentMap(); if (currentMap.size() > 0) @@ -212,11 +216,6 @@ } bcfg << QString("etheme " + pMapContainer->getCurrentTheme()).toUtf8(); - if (Scripts->currentIndex() > 0) - { - bcfg << QString("escript Scripts/Multiplayer/%1.lua").arg(Scripts->itemData(Scripts->currentIndex(), GameStyleModel::ScriptRole).toString()).toUtf8(); - } - bcfg << QString("eseed " + pMapContainer->getCurrentSeed()).toUtf8(); bcfg << QString("e$gmflags %1").arg(getGameFlags()).toUtf8(); bcfg << QString("e$damagepct %1").arg(schemeData(26).toInt()).toUtf8(); @@ -271,7 +270,14 @@ { bool illegal = ammo.size() != cDefaultAmmoStore->size(); if (illegal) - QMessageBox::critical(this, tr("Error"), tr("Illegal ammo scheme")); + { + QMessageBox illegalMsg(this); + illegalMsg.setIcon(QMessageBox::Warning); + illegalMsg.setWindowTitle(QMessageBox::tr("Error")); + illegalMsg.setText(QMessageBox::tr("Cannot use the ammo '%1'!").arg(name)); + illegalMsg.setWindowModality(Qt::WindowModal); + illegalMsg.exec(); + } int pos = WeaponsName->findText(name); if ((pos == -1) || illegal) // prevent from overriding schemes with bad ones diff -r 3331b30e4ef1 -r 88fde28bbda6 QTfrontend/ui/widget/mapContainer.cpp --- a/QTfrontend/ui/widget/mapContainer.cpp Sun Oct 21 01:28:33 2012 +0400 +++ b/QTfrontend/ui/widget/mapContainer.cpp Sat Nov 03 00:34:35 2012 +0400 @@ -29,7 +29,6 @@ #include #include #include -#include #include #include "hwconsts.h" diff -r 3331b30e4ef1 -r 88fde28bbda6 QTfrontend/ui/widget/qpushbuttonwithsound.cpp --- a/QTfrontend/ui/widget/qpushbuttonwithsound.cpp Sun Oct 21 01:28:33 2012 +0400 +++ b/QTfrontend/ui/widget/qpushbuttonwithsound.cpp Sat Nov 03 00:34:35 2012 +0400 @@ -1,4 +1,21 @@ -#include +/* + * Hedgewars, a free turn based strategy game + * Copyright (c) 2004-2012 Andrey Korotaev + * + * 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 + */ + #include #include "qpushbuttonwithsound.h" diff -r 3331b30e4ef1 -r 88fde28bbda6 QTfrontend/ui/widget/qpushbuttonwithsound.h --- a/QTfrontend/ui/widget/qpushbuttonwithsound.h Sun Oct 21 01:28:33 2012 +0400 +++ b/QTfrontend/ui/widget/qpushbuttonwithsound.h Sat Nov 03 00:34:35 2012 +0400 @@ -1,3 +1,21 @@ +/* + * Hedgewars, a free turn based strategy game + * Copyright (c) 2004-2012 Andrey Korotaev + * + * 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 + */ + #ifndef QPUSHBUTTONWITHSOUND_H #define QPUSHBUTTONWITHSOUND_H diff -r 3331b30e4ef1 -r 88fde28bbda6 QTfrontend/ui/widget/selectWeapon.cpp --- a/QTfrontend/ui/widget/selectWeapon.cpp Sun Oct 21 01:28:33 2012 +0400 +++ b/QTfrontend/ui/widget/selectWeapon.cpp Sat Nov 03 00:34:35 2012 +0400 @@ -191,19 +191,15 @@ void SelWeaponWidget::save() { - for(int i = 0; i < cDefaultAmmos.size(); i++) - if (!cDefaultAmmos[i].first.compare(m_name->text())) - { - QMessageBox::warning(0, QMessageBox::tr("Weapons"), QMessageBox::tr("Can not overwrite default weapon set '%1'!").arg(cDefaultAmmos[i].first)); - return; - } - + // TODO make this return if success or not, so that the page can react + // properly and not goBack if saving failed if (m_name->text() == "") return; QString state1; QString state2; QString state3; QString state4; + QString stateFull; for(int i = 0; i < m_numItems; ++i) { @@ -217,12 +213,33 @@ int am = it == weaponItems.end() ? 0 : it.value()[3]->getItemsNum(); state4.append(QString::number(am)); } + + stateFull = state1 + state2 + state3 + state4; + + for(int i = 0; i < cDefaultAmmos.size(); i++) + { + if (cDefaultAmmos[i].first.compare(m_name->text()) == 0) + { + // don't show warning if no change + if (cDefaultAmmos[i].second.compare(stateFull) == 0) + return; + + QMessageBox deniedMsg(this); + deniedMsg.setIcon(QMessageBox::Warning); + deniedMsg.setWindowTitle(QMessageBox::tr("Weapons - Warning")); + deniedMsg.setText(QMessageBox::tr("Cannot overwrite default weapon set '%1'!").arg(cDefaultAmmos[i].first)); + deniedMsg.setWindowModality(Qt::WindowModal); + deniedMsg.exec(); + return; + } + } + if (curWeaponsName != "") { // remove old entry wconf->remove(curWeaponsName); } - wconf->setValue(m_name->text(), state1 + state2 + state3 + state4); + wconf->setValue(m_name->text(), stateFull); emit weaponsChanged(); } @@ -244,13 +261,23 @@ for(int i = 0; i < cDefaultAmmos.size(); i++) if (!cDefaultAmmos[i].first.compare(m_name->text())) { - QMessageBox::warning(0, QMessageBox::tr("Weapons"), QMessageBox::tr("Can not delete default weapon set '%1'!").arg(cDefaultAmmos[i].first)); + QMessageBox deniedMsg(this); + deniedMsg.setIcon(QMessageBox::Warning); + deniedMsg.setWindowTitle(QMessageBox::tr("Weapons - Warning")); + deniedMsg.setText(QMessageBox::tr("Cannot delete default weapon set '%1'!").arg(cDefaultAmmos[i].first)); + deniedMsg.setWindowModality(Qt::WindowModal); + deniedMsg.exec(); return; } - QMessageBox reallyDelete(QMessageBox::Question, QMessageBox::tr("Weapons"), QMessageBox::tr("Really delete this weapon set?"), QMessageBox::Ok | QMessageBox::Cancel); + QMessageBox reallyDeleteMsg(this); + reallyDeleteMsg.setIcon(QMessageBox::Question); + reallyDeleteMsg.setWindowTitle(QMessageBox::tr("Weapons - Are you sure?")); + reallyDeleteMsg.setText(QMessageBox::tr("Do you really want to delete the weapon set '%1'?").arg(curWeaponsName)); + reallyDeleteMsg.setWindowModality(Qt::WindowModal); + reallyDeleteMsg.setStandardButtons(QMessageBox::Ok | QMessageBox::Cancel); - if (reallyDelete.exec() == QMessageBox::Ok) + if (reallyDeleteMsg.exec() == QMessageBox::Ok) { wconf->remove(curWeaponsName); emit weaponsDeleted(); diff -r 3331b30e4ef1 -r 88fde28bbda6 QTfrontend/ui/widget/teamselect.cpp --- a/QTfrontend/ui/widget/teamselect.cpp Sun Oct 21 01:28:33 2012 +0400 +++ b/QTfrontend/ui/widget/teamselect.cpp Sat Nov 03 00:34:35 2012 +0400 @@ -283,9 +283,9 @@ addTeam(team); } -bool TeamSelWidget::isPlaying(HWTeam team) const +bool TeamSelWidget::isPlaying(const HWTeam &team) const { - return std::find(curPlayingTeams.begin(), curPlayingTeams.end(), team)!=curPlayingTeams.end(); + return curPlayingTeams.contains(team); } QList TeamSelWidget::getPlayingTeams() const @@ -298,7 +298,7 @@ return m_curNotPlayingTeams; } -void TeamSelWidget::pre_changeTeamStatus(HWTeam team) +void TeamSelWidget::pre_changeTeamStatus(const HWTeam & team) { //team.setColor(framePlaying->getNextColor()); emit acceptRequested(team); diff -r 3331b30e4ef1 -r 88fde28bbda6 QTfrontend/ui/widget/teamselect.h --- a/QTfrontend/ui/widget/teamselect.h Sun Oct 21 01:28:33 2012 +0400 +++ b/QTfrontend/ui/widget/teamselect.h Sat Nov 03 00:34:35 2012 +0400 @@ -43,7 +43,7 @@ void setAcceptOuter(bool acceptOuter); void removeNetTeam(const HWTeam& team); void resetPlayingTeams(const QList& teamslist); - bool isPlaying(HWTeam team) const; + bool isPlaying(const HWTeam &team) const; QList getPlayingTeams() const; QList getNotPlayingTeams() const; void setInteractivity(bool interactive); @@ -57,14 +57,14 @@ signals: void setEnabledGameStart(bool); - void teamWillPlay(HWTeam team); + void teamWillPlay(const HWTeam& team); void teamNotPlaying(const HWTeam& team); void hhogsNumChanged(const HWTeam&); void teamColorChanged(const HWTeam&); - void acceptRequested(HWTeam team); + void acceptRequested(const HWTeam& team); private slots: - void pre_changeTeamStatus(HWTeam); + void pre_changeTeamStatus(const HWTeam&); void hhNumChanged(const HWTeam& team); void proxyTeamColorChanged(const HWTeam& team); diff -r 3331b30e4ef1 -r 88fde28bbda6 QTfrontend/util/DataManager.cpp --- a/QTfrontend/util/DataManager.cpp Sun Oct 21 01:28:33 2012 +0400 +++ b/QTfrontend/util/DataManager.cpp Sat Nov 03 00:34:35 2012 +0400 @@ -171,11 +171,9 @@ void DataManager::reload() { - m_gameStyleModel->loadGameStyles(); - m_hatModel->loadHats(); - m_mapModel->loadMaps(); - m_themeModel->loadThemes(); - emit updated(); + // removed for now (also code was a bit unclean, could lead to segfault if + // reload() is called before all members are initialized - because currently + // they are initialized in the getter methods rather than the constructor) } void DataManager::resetColors() diff -r 3331b30e4ef1 -r 88fde28bbda6 QTfrontend/util/LibavInteraction.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/QTfrontend/util/LibavInteraction.cpp Sat Nov 03 00:34:35 2012 +0400 @@ -0,0 +1,356 @@ +/* + * Hedgewars, a free turn based strategy game + * Copyright (c) 2004-2012 Andrey Korotaev + * + * 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 + */ + +#include "LibavInteraction.h" + +#if VIDEOREC +extern "C" +{ +#include "libavformat/avformat.h" +} + +#include +#include +#include + +#include "HWApplication.h" + +struct Codec +{ + CodecID id; + bool isAudio; + QString shortName; // used for identification + QString longName; // used for displaying to user + bool isRecomended; +}; + +struct Format +{ + QString shortName; + QString longName; + bool isRecomended; + QString extension; + QVector codecs; +}; + +QList codecs; +QMap formats; + +// test if given format supports given codec +bool FormatQueryCodec(AVOutputFormat *ofmt, enum CodecID codec_id) +{ +#if LIBAVFORMAT_VERSION_MAJOR >= 54 + return avformat_query_codec(ofmt, codec_id, FF_COMPLIANCE_NORMAL) == 1; +#else + if (ofmt->codec_tag) + return !!av_codec_get_tag(ofmt->codec_tag, codec_id); + return codec_id == ofmt->video_codec || codec_id == ofmt->audio_codec; +#endif +} + +LibavInteraction::LibavInteraction() : QObject() +{ + // initialize libav and register all codecs and formats + av_register_all(); + + // get list of all codecs + AVCodec* pCodec = NULL; + while (pCodec = av_codec_next(pCodec)) + { +#if LIBAVCODEC_VERSION_MAJOR >= 54 + if (!av_codec_is_encoder(pCodec)) +#else + if (!pCodec->encode) +#endif + continue; + + if (pCodec->type != AVMEDIA_TYPE_VIDEO && pCodec->type != AVMEDIA_TYPE_AUDIO) + continue; + + // this encoders seems to be buggy + if (strcmp(pCodec->name, "rv10") == 0 || strcmp(pCodec->name, "rv20") == 0) + continue; + + // doesn't support stereo sound + if (strcmp(pCodec->name, "real_144") == 0) + continue; + + if (!pCodec->long_name || strlen(pCodec->long_name) == 0) + continue; + + if (pCodec->type == AVMEDIA_TYPE_VIDEO) + { + if (pCodec->supported_framerates != NULL) + continue; + + // check if codec supports yuv 4:2:0 format + if (!pCodec->pix_fmts) + continue; + bool yuv420Supported = false; + for (const PixelFormat* pfmt = pCodec->pix_fmts; *pfmt != -1; pfmt++) + if (*pfmt == PIX_FMT_YUV420P) + { + yuv420Supported = true; + break; + } + if (!yuv420Supported) + continue; + } + if (pCodec->type == AVMEDIA_TYPE_AUDIO) + { + // check if codec supports signed 16-bit format + if (!pCodec->sample_fmts) + continue; + bool s16Supported = false; + for (const AVSampleFormat* pfmt = pCodec->sample_fmts; *pfmt != -1; pfmt++) + if (*pfmt == AV_SAMPLE_FMT_S16) + { + s16Supported = true; + break; + } + if (!s16Supported) + continue; + } + // add codec to list of codecs + codecs.push_back(Codec()); + Codec & codec = codecs.back(); + codec.id = pCodec->id; + codec.isAudio = pCodec->type == AVMEDIA_TYPE_AUDIO; + codec.shortName = pCodec->name; + codec.longName = pCodec->long_name; + + codec.isRecomended = false; + if (strcmp(pCodec->name, "libx264") == 0) + { + codec.longName = "H.264/MPEG-4 Part 10 AVC (x264)"; + codec.isRecomended = true; + } + else if (strcmp(pCodec->name, "libxvid") == 0) + { + codec.longName = "MPEG-4 Part 2 (Xvid)"; + codec.isRecomended = true; + } + else if (strcmp(pCodec->name, "libmp3lame") == 0) + { + codec.longName = "MP3 (MPEG audio layer 3) (LAME)"; + codec.isRecomended = true; + } + else + codec.longName = pCodec->long_name; + + if (strcmp(pCodec->name, "mpeg4") == 0 || strcmp(pCodec->name, "ac3_fixed") == 0) + codec.isRecomended = true; + + // FIXME: remove next line + //codec.longName += QString(" (%1)").arg(codec.shortName); + } + + // get list of all formats + AVOutputFormat* pFormat = NULL; + while (pFormat = av_oformat_next(pFormat)) + { + if (!pFormat->extensions) + continue; + + // skip some strange formats to not confuse users + if (strstr(pFormat->long_name, "raw")) + continue; + + Format format; + bool hasVideoCodec = false; + for (QList::iterator codec = codecs.begin(); codec != codecs.end(); ++codec) + { + if (!FormatQueryCodec(pFormat, codec->id)) + continue; + format.codecs.push_back(&*codec); + if (!codec->isAudio) + hasVideoCodec = true; + } + if (!hasVideoCodec) + continue; + + QString ext(pFormat->extensions); + ext.truncate(strcspn(pFormat->extensions, ",")); + format.extension = ext; + format.shortName = pFormat->name; + format.longName = QString("%1 (*.%2)").arg(pFormat->long_name).arg(ext); + + // FIXME: remove next line + //format.longName += QString(" (%1)").arg(format.shortName); + + format.isRecomended = strcmp(pFormat->name, "mp4") == 0 || strcmp(pFormat->name, "avi") == 0; + + formats[pFormat->name] = format; + } +} + +void LibavInteraction::fillFormats(QComboBox * pFormats) +{ + // first insert recomended formats + foreach(const Format & format, formats) + if (format.isRecomended) + pFormats->addItem(format.longName, format.shortName); + + // remember where to place separator between recomended and other formats + int sep = pFormats->count(); + + // insert remaining formats + foreach(const Format & format, formats) + if (!format.isRecomended) + pFormats->addItem(format.longName, format.shortName); + + // insert separator if necessary + if (sep != 0 && sep != pFormats->count()) + pFormats->insertSeparator(sep); +} + +void LibavInteraction::fillCodecs(const QString & fmt, QComboBox * pVCodecs, QComboBox * pACodecs) +{ + Format & format = formats[fmt]; + + // first insert recomended codecs + foreach(Codec * codec, format.codecs) + { + if (codec->isRecomended) + { + if (codec->isAudio) + pACodecs->addItem(codec->longName, codec->shortName); + else + pVCodecs->addItem(codec->longName, codec->shortName); + } + } + + // remember where to place separators between recomended and other codecs + int vsep = pVCodecs->count(); + int asep = pACodecs->count(); + + // insert remaining codecs + foreach(Codec * codec, format.codecs) + { + if (!codec->isRecomended) + { + if (codec->isAudio) + pACodecs->addItem(codec->longName, codec->shortName); + else + pVCodecs->addItem(codec->longName, codec->shortName); + } + } + + // insert separators if necessary + if (vsep != 0 && vsep != pVCodecs->count()) + pVCodecs->insertSeparator(vsep); + if (asep != 0 && asep != pACodecs->count()) + pACodecs->insertSeparator(asep); +} + +QString LibavInteraction::getExtension(const QString & format) +{ + return formats[format].extension; +} + +// get information abaout file (duration, resolution etc) in multiline string +QString LibavInteraction::getFileInfo(const QString & filepath) +{ + AVFormatContext* pContext = NULL; + QByteArray utf8path = filepath.toUtf8(); + if (avformat_open_input(&pContext, utf8path.data(), NULL, NULL) < 0) + return ""; +#if LIBAVFORMAT_VERSION_MAJOR < 54 + if (av_find_stream_info(pContext) < 0) +#else + if (avformat_find_stream_info(pContext, NULL) < 0) +#endif + return ""; + + int s = float(pContext->duration)/AV_TIME_BASE; + QString desc = QString(tr("Duration: %1m %2s\n")).arg(s/60).arg(s%60); + for (int i = 0; i < (int)pContext->nb_streams; i++) + { + AVStream* pStream = pContext->streams[i]; + if (!pStream) + continue; + AVCodecContext* pCodec = pContext->streams[i]->codec; + if (!pCodec) + continue; + + if (pCodec->codec_type == AVMEDIA_TYPE_VIDEO) + { + desc += QString(tr("Video: %1x%2, ")).arg(pCodec->width).arg(pCodec->height); + if (pStream->avg_frame_rate.den) + { + float fps = float(pStream->avg_frame_rate.num)/pStream->avg_frame_rate.den; + desc += QString(tr("%1 fps, ")).arg(fps, 0, 'f', 2); + } + } + else if (pCodec->codec_type == AVMEDIA_TYPE_AUDIO) + desc += tr("Audio: "); + else + continue; + AVCodec* pDecoder = avcodec_find_decoder(pCodec->codec_id); + desc += pDecoder? pDecoder->name : "unknown"; + desc += "\n"; + } + AVDictionaryEntry* pComment = av_dict_get(pContext->metadata, "comment", NULL, 0); + if (pComment) + desc += QString("\n") + pComment->value; +#if LIBAVFORMAT_VERSION_MAJOR < 54 + av_close_input_file(pContext); +#else + avformat_close_input(&pContext); +#endif + return desc; +} + +#else +LibavInteraction::LibavInteraction() : QObject() +{ + +} + +void LibavInteraction::fillFormats(QComboBox * pFormats) +{ + Q_UNUSED(pFormats); +} + +void LibavInteraction::fillCodecs(const QString & format, QComboBox * pVCodecs, QComboBox * pACodecs) +{ + Q_UNUSED(format); + Q_UNUSED(pVCodecs); + Q_UNUSED(pACodecs); +} + +QString LibavInteraction::getExtension(const QString & format) +{ + Q_UNUSED(format); + + return QString(); +} + +QString LibavInteraction::getFileInfo(const QString & filepath) +{ + Q_UNUSED(filepath); + + return QString(); +} +#endif + +LibavInteraction & LibavInteraction::instance() +{ + static LibavInteraction instance; + return instance; +} diff -r 3331b30e4ef1 -r 88fde28bbda6 QTfrontend/util/LibavInteraction.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/QTfrontend/util/LibavInteraction.h Sat Nov 03 00:34:35 2012 +0400 @@ -0,0 +1,51 @@ +/* + * Hedgewars, a free turn based strategy game + * Copyright (c) 2004-2012 Andrey Korotaev + * + * 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 + */ + +#ifndef LIBAV_ITERACTION +#define LIBAV_ITERACTION + +#include + +/** + * @brief Class for interacting with ffmpeg/libav libraries + * + * @see singleton pattern + */ +class LibavInteraction : public QObject +{ + Q_OBJECT; + + LibavInteraction(); + +public: + + static LibavInteraction & instance(); + + // fill combo box with known file formats + void fillFormats(QComboBox * pFormats); + + // fill combo boxes with known codecs for given formats + void fillCodecs(const QString & format, QComboBox * pVCodecs, QComboBox * pACodecs); + + QString getExtension(const QString & format); + + // get information about file (duration, resolution etc) in multiline string + QString getFileInfo(const QString & filepath); +}; + +#endif // LIBAV_ITERACTION diff -r 3331b30e4ef1 -r 88fde28bbda6 QTfrontend/util/libav_iteraction.cpp --- a/QTfrontend/util/libav_iteraction.cpp Sun Oct 21 01:28:33 2012 +0400 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,358 +0,0 @@ -/* - * Hedgewars, a free turn based strategy game - * Copyright (c) 2004-2012 Andrey Korotaev - * - * 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 - */ - -#include "libav_iteraction.h" - -#if VIDEOREC -#define __STDC_CONSTANT_MACROS -extern "C" -{ -#include "libavformat/avformat.h" -} - -#include -#include -#include -#include - -#include "HWApplication.h" - -struct Codec -{ - CodecID id; - bool isAudio; - QString shortName; // used for identification - QString longName; // used for displaying to user - bool isRecomended; -}; - -struct Format -{ - QString shortName; - QString longName; - bool isRecomended; - QString extension; - QVector codecs; -}; - -QList codecs; -QMap formats; - -// test if given format supports given codec -bool FormatQueryCodec(AVOutputFormat *ofmt, enum CodecID codec_id) -{ -#if LIBAVFORMAT_VERSION_MAJOR >= 54 - return avformat_query_codec(ofmt, codec_id, FF_COMPLIANCE_NORMAL) == 1; -#else - if (ofmt->codec_tag) - return !!av_codec_get_tag(ofmt->codec_tag, codec_id); - return codec_id == ofmt->video_codec || codec_id == ofmt->audio_codec; -#endif -} - -LibavIteraction::LibavIteraction() : QObject() -{ - // initialize libav and register all codecs and formats - av_register_all(); - - // get list of all codecs - AVCodec* pCodec = NULL; - while (pCodec = av_codec_next(pCodec)) - { -#if LIBAVCODEC_VERSION_MAJOR >= 54 - if (!av_codec_is_encoder(pCodec)) -#else - if (!pCodec->encode) -#endif - continue; - - if (pCodec->type != AVMEDIA_TYPE_VIDEO && pCodec->type != AVMEDIA_TYPE_AUDIO) - continue; - - // this encoders seems to be buggy - if (strcmp(pCodec->name, "rv10") == 0 || strcmp(pCodec->name, "rv20") == 0) - continue; - - // doesn't support stereo sound - if (strcmp(pCodec->name, "real_144") == 0) - continue; - - if (!pCodec->long_name || strlen(pCodec->long_name) == 0) - continue; - - if (pCodec->type == AVMEDIA_TYPE_VIDEO) - { - if (pCodec->supported_framerates != NULL) - continue; - - // check if codec supports yuv 4:2:0 format - if (!pCodec->pix_fmts) - continue; - bool yuv420Supported = false; - for (const PixelFormat* pfmt = pCodec->pix_fmts; *pfmt != -1; pfmt++) - if (*pfmt == PIX_FMT_YUV420P) - { - yuv420Supported = true; - break; - } - if (!yuv420Supported) - continue; - } - if (pCodec->type == AVMEDIA_TYPE_AUDIO) - { - // check if codec supports signed 16-bit format - if (!pCodec->sample_fmts) - continue; - bool s16Supported = false; - for (const AVSampleFormat* pfmt = pCodec->sample_fmts; *pfmt != -1; pfmt++) - if (*pfmt == AV_SAMPLE_FMT_S16) - { - s16Supported = true; - break; - } - if (!s16Supported) - continue; - } - // add codec to list of codecs - codecs.push_back(Codec()); - Codec & codec = codecs.back(); - codec.id = pCodec->id; - codec.isAudio = pCodec->type == AVMEDIA_TYPE_AUDIO; - codec.shortName = pCodec->name; - codec.longName = pCodec->long_name; - - codec.isRecomended = false; - if (strcmp(pCodec->name, "libx264") == 0) - { - codec.longName = "H.264/MPEG-4 Part 10 AVC (x264)"; - codec.isRecomended = true; - } - else if (strcmp(pCodec->name, "libxvid") == 0) - { - codec.longName = "MPEG-4 Part 2 (Xvid)"; - codec.isRecomended = true; - } - else if (strcmp(pCodec->name, "libmp3lame") == 0) - { - codec.longName = "MP3 (MPEG audio layer 3) (LAME)"; - codec.isRecomended = true; - } - else - codec.longName = pCodec->long_name; - - if (strcmp(pCodec->name, "mpeg4") == 0 || strcmp(pCodec->name, "ac3_fixed") == 0) - codec.isRecomended = true; - - // FIXME: remove next line - //codec.longName += QString(" (%1)").arg(codec.shortName); - } - - // get list of all formats - AVOutputFormat* pFormat = NULL; - while (pFormat = av_oformat_next(pFormat)) - { - if (!pFormat->extensions) - continue; - - // skip some strange formats to not confuse users - if (strstr(pFormat->long_name, "raw")) - continue; - - Format format; - bool hasVideoCodec = false; - for (QList::iterator codec = codecs.begin(); codec != codecs.end(); ++codec) - { - if (!FormatQueryCodec(pFormat, codec->id)) - continue; - format.codecs.push_back(&*codec); - if (!codec->isAudio) - hasVideoCodec = true; - } - if (!hasVideoCodec) - continue; - - QString ext(pFormat->extensions); - ext.truncate(strcspn(pFormat->extensions, ",")); - format.extension = ext; - format.shortName = pFormat->name; - format.longName = QString("%1 (*.%2)").arg(pFormat->long_name).arg(ext); - - // FIXME: remove next line - //format.longName += QString(" (%1)").arg(format.shortName); - - format.isRecomended = strcmp(pFormat->name, "mp4") == 0 || strcmp(pFormat->name, "avi") == 0; - - formats[pFormat->name] = format; - } -} - -void LibavIteraction::fillFormats(QComboBox * pFormats) -{ - // first insert recomended formats - foreach(const Format & format, formats) - if (format.isRecomended) - pFormats->addItem(format.longName, format.shortName); - - // remember where to place separator between recomended and other formats - int sep = pFormats->count(); - - // insert remaining formats - foreach(const Format & format, formats) - if (!format.isRecomended) - pFormats->addItem(format.longName, format.shortName); - - // insert separator if necessary - if (sep != 0 && sep != pFormats->count()) - pFormats->insertSeparator(sep); -} - -void LibavIteraction::fillCodecs(const QString & fmt, QComboBox * pVCodecs, QComboBox * pACodecs) -{ - Format & format = formats[fmt]; - - // first insert recomended codecs - foreach(Codec * codec, format.codecs) - { - if (codec->isRecomended) - { - if (codec->isAudio) - pACodecs->addItem(codec->longName, codec->shortName); - else - pVCodecs->addItem(codec->longName, codec->shortName); - } - } - - // remember where to place separators between recomended and other codecs - int vsep = pVCodecs->count(); - int asep = pACodecs->count(); - - // insert remaining codecs - foreach(Codec * codec, format.codecs) - { - if (!codec->isRecomended) - { - if (codec->isAudio) - pACodecs->addItem(codec->longName, codec->shortName); - else - pVCodecs->addItem(codec->longName, codec->shortName); - } - } - - // insert separators if necessary - if (vsep != 0 && vsep != pVCodecs->count()) - pVCodecs->insertSeparator(vsep); - if (asep != 0 && asep != pACodecs->count()) - pACodecs->insertSeparator(asep); -} - -QString LibavIteraction::getExtension(const QString & format) -{ - return formats[format].extension; -} - -// get information abaout file (duration, resolution etc) in multiline string -QString LibavIteraction::getFileInfo(const QString & filepath) -{ - AVFormatContext* pContext = NULL; - QByteArray utf8path = filepath.toUtf8(); - if (avformat_open_input(&pContext, utf8path.data(), NULL, NULL) < 0) - return ""; -#if LIBAFORMAT_VERSION_MAJOR < 54 - if (av_find_stream_info(pContext) < 0) -#else - if (avformat_find_stream_info(pContext, NULL) < 0) -#endif - return ""; - - int s = float(pContext->duration)/AV_TIME_BASE; - QString desc = QString(tr("Duration: %1m %2s\n")).arg(s/60).arg(s%60); - for (int i = 0; i < (int)pContext->nb_streams; i++) - { - AVStream* pStream = pContext->streams[i]; - if (!pStream) - continue; - AVCodecContext* pCodec = pContext->streams[i]->codec; - if (!pCodec) - continue; - - if (pCodec->codec_type == AVMEDIA_TYPE_VIDEO) - { - desc += QString(tr("Video: %1x%2, ")).arg(pCodec->width).arg(pCodec->height); - if (pStream->avg_frame_rate.den) - { - float fps = float(pStream->avg_frame_rate.num)/pStream->avg_frame_rate.den; - desc += QString(tr("%1 fps, ")).arg(fps, 0, 'f', 2); - } - } - else if (pCodec->codec_type == AVMEDIA_TYPE_AUDIO) - desc += tr("Audio: "); - else - continue; - AVCodec* pDecoder = avcodec_find_decoder(pCodec->codec_id); - desc += pDecoder? pDecoder->name : "unknown"; - desc += "\n"; - } - AVDictionaryEntry* pComment = av_dict_get(pContext->metadata, "comment", NULL, 0); - if (pComment) - desc += QString("\n") + pComment->value; -#if LIBAFORMAT_VERSION_MAJOR < 54 - av_close_input_file(pContext); -#else - avformat_close_input(&pContext); -#endif - return desc; -} - -#else -LibavIteraction::LibavIteraction() : QObject() -{ - -} - -void LibavIteraction::fillFormats(QComboBox * pFormats) -{ - Q_UNUSED(pFormats); -} - -void LibavIteraction::fillCodecs(const QString & format, QComboBox * pVCodecs, QComboBox * pACodecs) -{ - Q_UNUSED(format); - Q_UNUSED(pVCodecs); - Q_UNUSED(pACodecs); -} - -QString LibavIteraction::getExtension(const QString & format) -{ - Q_UNUSED(format); - - return QString(); -} - -QString LibavIteraction::getFileInfo(const QString & filepath) -{ - Q_UNUSED(filepath); - - return QString(); -} -#endif - -LibavIteraction & LibavIteraction::instance() -{ - static LibavIteraction instance; - return instance; -} diff -r 3331b30e4ef1 -r 88fde28bbda6 QTfrontend/util/libav_iteraction.h --- a/QTfrontend/util/libav_iteraction.h Sun Oct 21 01:28:33 2012 +0400 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,51 +0,0 @@ -/* - * Hedgewars, a free turn based strategy game - * Copyright (c) 2004-2012 Andrey Korotaev - * - * 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 - */ - -#ifndef LIBAV_ITERACTION -#define LIBAV_ITERACTION - -#include - -/** - * @brief Class for interacting with ffmpeg/libav libraries - * - * @see singleton pattern - */ -class LibavIteraction : public QObject -{ - Q_OBJECT; - - LibavIteraction(); - -public: - - static LibavIteraction & instance(); - - // fill combo box with known file formats - void fillFormats(QComboBox * pFormats); - - // fill combo boxes with known codecs for given formats - void fillCodecs(const QString & format, QComboBox * pVCodecs, QComboBox * pACodecs); - - QString getExtension(const QString & format); - - // get information about file (duration, resolution etc) in multiline string - QString getFileInfo(const QString & filepath); -}; - -#endif // LIBAV_ITERACTION diff -r 3331b30e4ef1 -r 88fde28bbda6 bin/CMakeLists.txt diff -r 3331b30e4ef1 -r 88fde28bbda6 cmake_modules/FindFFMPEG.cmake --- a/cmake_modules/FindFFMPEG.cmake Sun Oct 21 01:28:33 2012 +0400 +++ b/cmake_modules/FindFFMPEG.cmake Sat Nov 03 00:34:35 2012 +0400 @@ -31,23 +31,35 @@ find_path(FFMPEG_AVCODEC_INCLUDE_DIR NAMES libavcodec/avcodec.h - PATHS ${_FFMPEG_AVCODEC_INCLUDE_DIRS} /usr/include /usr/local/include /opt/local/include /sw/include + PATHS ${_FFMPEG_AVCODEC_INCLUDE_DIRS} + /usr/include /usr/local/include #system level + /opt/local/include #macports + /sw/include #fink PATH_SUFFIXES ffmpeg libav ) find_library(FFMPEG_LIBAVCODEC NAMES avcodec - PATHS ${_FFMPEG_AVCODEC_LIBRARY_DIRS} /usr/lib /usr/local/lib /opt/local/lib /sw/lib + PATHS ${_FFMPEG_AVCODEC_LIBRARY_DIRS} + /usr/lib /usr/local/lib #system level + /opt/local/lib #macports + /sw/lib #fink ) find_library(FFMPEG_LIBAVFORMAT NAMES avformat - PATHS ${_FFMPEG_AVFORMAT_LIBRARY_DIRS} /usr/lib /usr/local/lib /opt/local/lib /sw/lib + PATHS ${_FFMPEG_AVFORMAT_LIBRARY_DIRS} + /usr/lib /usr/local/lib #system level + /opt/local/lib #macports + /sw/lib #fink ) find_library(FFMPEG_LIBAVUTIL NAMES avutil - PATHS ${_FFMPEG_AVUTIL_LIBRARY_DIRS} /usr/lib /usr/local/lib /opt/local/lib /sw/lib + PATHS ${_FFMPEG_AVUTIL_LIBRARY_DIRS} + /usr/lib /usr/local/lib #system level + /opt/local/lib #macports + /sw/lib #fink ) if (FFMPEG_LIBAVCODEC AND FFMPEG_LIBAVFORMAT) @@ -62,16 +74,19 @@ ${FFMPEG_LIBAVFORMAT} ${FFMPEG_LIBAVUTIL} ) + if (APPLE) + set(FFMPEG_LIBRARIES ${FFMPEG_LIBRARIES} "bz2" "-framework CoreVideo" "-framework VideoDecodeAcceleration") + endif(APPLE) endif (FFMPEG_FOUND) if (FFMPEG_FOUND) if (NOT FFMPEG_FIND_QUIETLY) - message(STATUS "Found FFMPEG or Libav: ${FFMPEG_LIBRARIES}, ${FFMPEG_INCLUDE_DIR}") + message(STATUS "Found FFMPEG/LibAV: ${FFMPEG_LIBRARIES}, ${FFMPEG_INCLUDE_DIR}") endif (NOT FFMPEG_FIND_QUIETLY) else (FFMPEG_FOUND) if (FFMPEG_FIND_REQUIRED) - message(FATAL_ERROR "Could not find libavcodec or libavformat or libavutil") + message(FATAL_ERROR "Could NOT find libavcodec or libavformat or libavutil") endif (FFMPEG_FIND_REQUIRED) endif (FFMPEG_FOUND) diff -r 3331b30e4ef1 -r 88fde28bbda6 cmake_modules/FindSDL_Extras.cmake --- a/cmake_modules/FindSDL_Extras.cmake Sun Oct 21 01:28:33 2012 +0400 +++ b/cmake_modules/FindSDL_Extras.cmake Sat Nov 03 00:34:35 2012 +0400 @@ -12,7 +12,7 @@ math(EXPR sdlmixer_version "${sdlmixer_majorversion}*10000 + ${sdlmixer_minorversion}*100 + ${sdlmixer_patchversion}") if(sdlmixer_version GREATER "10209") - message(STATUS "SDL_mixer - Mix_Init() found") + message(STATUS "Mix_Init() is present") set(pascal_flags "-dSDL_MIXER_NEWER" ${pascal_flags}) endif() endif() @@ -29,7 +29,7 @@ math(EXPR sdlimage_version "${sdlimage_majorversion}*10000 + ${sdlimage_minorversion}*100 + ${sdlimage_patchversion}") if(sdlimage_version GREATER "010207") - message(STATUS "SDL_image - IMG_Init() found") + message(STATUS "IMG_Init() is present") set(pascal_flags "-dSDL_IMAGE_NEWER" ${pascal_flags}) endif() endif() diff -r 3331b30e4ef1 -r 88fde28bbda6 gameServer/Actions.hs --- a/gameServer/Actions.hs Sun Oct 21 01:28:33 2012 +0400 +++ b/gameServer/Actions.hs Sat Nov 03 00:34:35 2012 +0400 @@ -62,6 +62,7 @@ | ModifyRoom (RoomInfo -> RoomInfo) | ModifyServerInfo (ServerInfo -> ServerInfo) | AddRoom B.ByteString B.ByteString + | SendUpdateOnThisRoom | CheckRegistered | ClearAccountsCache | ProcessAccountInfo AccountInfo @@ -211,7 +212,7 @@ rnc <- gets roomsClients io $ do - modifyClient rnc (\cl -> cl{teamsInGame = 0, isReady = False, isMaster = False}) ci + modifyClient rnc (\cl -> cl{teamsInGame = 0, isReady = False, isMaster = False, isInGame = False}) ci modifyRoom rnc (\r -> r{playersIn = playersIn r + 1}) ri moveClientToRoom rnc ri ci @@ -254,19 +255,23 @@ proto <- client's clientProto ri <- clientRoomA rnc <- gets roomsClients - newMasterId <- liftM (head . filter (/= ci)) . io $ roomClientsIndicesM rnc ri + newMasterId <- liftM (last . filter (/= ci)) . io $ roomClientsIndicesM rnc ri newMaster <- io $ client'sM rnc id newMasterId oldRoomName <- io $ room'sM rnc name ri oldMaster <- client's nick thisRoomChans <- liftM (map sendChan) $ roomClientsS ri let newRoomName = if proto < 42 then nick newMaster else oldRoomName mapM_ processAction [ - ModifyRoom (\r -> r{masterID = newMasterId, name = newRoomName, isRestrictedJoins = False, isRestrictedTeams = False}) - , ModifyClient2 newMasterId (\c -> c{isMaster = True}) + ModifyRoom (\r -> r{masterID = newMasterId + , name = newRoomName + , isRestrictedJoins = False + , isRestrictedTeams = False + , readyPlayers = if isReady newMaster then readyPlayers r else readyPlayers r + 1}) + , ModifyClient2 newMasterId (\c -> c{isMaster = True, isReady = True}) , AnswerClients [sendChan newMaster] ["ROOM_CONTROL_ACCESS", "1"] , AnswerClients thisRoomChans ["WARNING", "New room admin is " `B.append` nick newMaster] , AnswerClients thisRoomChans ["CLIENT_FLAGS", "-h", oldMaster] - , AnswerClients thisRoomChans ["CLIENT_FLAGS", "+h", nick newMaster] + , AnswerClients thisRoomChans ["CLIENT_FLAGS", "+hr", nick newMaster] ] newRoom' <- io $ room'sM rnc id ri @@ -279,7 +284,6 @@ rnc <- gets roomsClients proto <- client's clientProto n <- client's nick - chan <- client's sendChan let rm = newRoom{ masterID = clId, @@ -296,8 +300,6 @@ mapM_ processAction [ AnswerClients chans ("ROOM" : "ADD" : roomInfo n rm) - , AnswerClients [chan] ["CLIENT_FLAGS", "+h", n] - , ModifyClient (\cl -> cl{isMaster = True}) ] @@ -318,14 +320,25 @@ io $ removeRoom rnc ri +processAction SendUpdateOnThisRoom = do + Just clId <- gets clientIndex + proto <- client's clientProto + rnc <- gets roomsClients + ri <- io $ clientRoomM rnc clId + rm <- io $ room'sM rnc id ri + n <- io $ client'sM rnc nick (masterID rm) + chans <- liftM (map sendChan) $! sameProtoClientsS proto + processAction $ AnswerClients chans ("ROOM" : "UPD" : name rm : roomInfo n rm) + + processAction UnreadyRoomClients = do ri <- clientRoomA roomPlayers <- roomClientsS ri pr <- client's clientProto mapM_ processAction [ - AnswerClients (map sendChan roomPlayers) $ notReadyMessage pr (map nick roomPlayers) - , ModifyRoomClients (\cl -> cl{isReady = False}) - , ModifyRoom (\r -> r{readyPlayers = 0}) + AnswerClients (map sendChan roomPlayers) $ notReadyMessage pr . map nick . filter (not . isMaster) $ roomPlayers + , ModifyRoomClients (\cl -> cl{isReady = isMaster cl}) + , ModifyRoom (\r -> r{readyPlayers = 1}) ] where notReadyMessage p nicks = if p < 38 then "NOT_READY" : nicks else "CLIENT_FLAGS" : "-r" : nicks @@ -347,6 +360,7 @@ } ) : UnreadyRoomClients + : SendUpdateOnThisRoom : answerRemovedTeams diff -r 3331b30e4ef1 -r 88fde28bbda6 gameServer/CoreTypes.hs --- a/gameServer/CoreTypes.hs Sun Oct 21 01:28:33 2012 +0400 +++ b/gameServer/CoreTypes.hs Sat Nov 03 00:34:35 2012 +0400 @@ -142,7 +142,6 @@ latestReleaseVersion :: Word16, earliestCompatibleVersion :: Word16, listenPort :: PortNumber, - --nextRoomID :: Int, dbHost :: B.ByteString, dbName :: B.ByteString, dbLogin :: B.ByteString, @@ -162,11 +161,10 @@ ServerInfo True "

http://www.hedgewars.org/

" - "

Hedgewars 0.9.17 is out! Please update.

Download page here" - 41 - 43 -- 0.9.18 + "

Hedgewars 0.9.18 is out! Please update.

Download page here" + 43 -- latestReleaseVersion + 41 -- earliestCompatibleVersion 46631 - --0 "" "" "" diff -r 3331b30e4ef1 -r 88fde28bbda6 gameServer/HWProtoInRoomState.hs --- a/gameServer/HWProtoInRoomState.hs Sun Oct 21 01:28:33 2012 +0400 +++ b/gameServer/HWProtoInRoomState.hs Sat Nov 03 00:34:35 2012 +0400 @@ -3,7 +3,7 @@ import qualified Data.Map as Map import Data.Sequence((|>)) -import Data.List +import Data.List as L import Data.Maybe import qualified Data.ByteString.Char8 as B import Control.Monad @@ -52,6 +52,13 @@ clNick <- clientNick clChan <- thisClientChans othChans <- roomOthersChans + roomChans <- roomClientsChans + cl <- thisClient + teamColor <- + if clientProto cl < 42 then + return color + else + liftM (head . (L.\\) (map B.singleton ['0'..]) . map teamcolor . teams) thisRoom return $ if not . null . drop (maxTeams rm - 1) $ teams rm then [Warning "too many teams"] @@ -64,16 +71,17 @@ else if isRestrictedTeams rm then [Warning "restricted"] else - [ModifyRoom (\r -> r{teams = teams r ++ [newTeam ci clNick r]}), - ModifyClient (\c -> c{teamsInGame = teamsInGame c + 1, clientClan = Just color}), + [ModifyRoom (\r -> r{teams = teams r ++ [newTeam ci clNick r teamColor]}), + SendUpdateOnThisRoom, + ModifyClient (\c -> c{teamsInGame = teamsInGame c + 1, clientClan = Just teamColor}), AnswerClients clChan ["TEAM_ACCEPTED", tName], - AnswerClients othChans $ teamToNet $ newTeam ci clNick rm, - AnswerClients othChans ["TEAM_COLOR", tName, color] + AnswerClients othChans $ teamToNet $ newTeam ci clNick rm teamColor, + AnswerClients roomChans ["TEAM_COLOR", tName, teamColor] ] where canAddNumber r = 48 - (sum . map hhnum $ teams r) findTeam = find (\t -> tName == teamname t) . teams - newTeam ci clNick r = TeamInfo ci clNick tName color grave fort voicepack flag dif (newTeamHHNum r) (hhsList hhsInfo) + newTeam ci clNick r tColor = TeamInfo ci clNick tName tColor grave fort voicepack flag dif (newTeamHHNum r) (hhsList hhsInfo) dif = readInt_ difStr hhsList [] = [] hhsList [_] = error "Hedgehogs list with odd elements number" @@ -99,6 +107,7 @@ [ProtocolError "Not team owner!"] else [RemoveTeam tName, + SendUpdateOnThisRoom, ModifyClient (\c -> c{ teamsInGame = teamsInGame c - 1, @@ -157,14 +166,17 @@ handleCmd_inRoom ["TOGGLE_READY"] = do cl <- thisClient chans <- roomClientsChans - return [ - ModifyRoom (\r -> r{readyPlayers = readyPlayers r + (if isReady cl then -1 else 1)}), - ModifyClient (\c -> c{isReady = not $ isReady cl}), - AnswerClients chans $ if clientProto cl < 38 then - [if isReady cl then "NOT_READY" else "READY", nick cl] - else - ["CLIENT_FLAGS", if isReady cl then "-r" else "+r", nick cl] - ] + if isMaster cl then + return [] + else + return [ + ModifyRoom (\r -> r{readyPlayers = readyPlayers r + (if isReady cl then -1 else 1)}), + ModifyClient (\c -> c{isReady = not $ isReady cl}), + AnswerClients chans $ if clientProto cl < 38 then + [if isReady cl then "NOT_READY" else "READY", nick cl] + else + ["CLIENT_FLAGS", if isReady cl then "-r" else "+r", nick cl] + ] handleCmd_inRoom ["START_GAME"] = do (ci, rnc) <- ask @@ -184,6 +196,7 @@ } ) , AnswerClients chans ["RUN_GAME"] + , SendUpdateOnThisRoom , AnswerClients chans $ "CLIENT_FLAGS" : "+g" : nicks , ModifyRoomClients (\c -> c{isInGame = True}) ] diff -r 3331b30e4ef1 -r 88fde28bbda6 gameServer/HWProtoLobbyState.hs --- a/gameServer/HWProtoLobbyState.hs Sun Oct 21 01:28:33 2012 +0400 +++ b/gameServer/HWProtoLobbyState.hs Sat Nov 03 00:34:35 2012 +0400 @@ -51,8 +51,10 @@ [Warning "Room exists"] else [ - AddRoom rName roomPassword, - AnswerClients [sendChan cl] ["CLIENT_FLAGS", "-r", nick cl] + AddRoom rName roomPassword + , AnswerClients [sendChan cl] ["CLIENT_FLAGS", "+hr", nick cl] + , ModifyClient (\c -> c{isMaster = True, isReady = True}) + , ModifyRoom (\r -> r{readyPlayers = 1}) ] diff -r 3331b30e4ef1 -r 88fde28bbda6 gameServer/Utils.hs --- a/gameServer/Utils.hs Sun Oct 21 01:28:33 2012 +0400 +++ b/gameServer/Utils.hs Sat Nov 03 00:34:35 2012 +0400 @@ -88,6 +88,8 @@ , (40, "0.9.17-dev") , (41, "0.9.17") , (42, "0.9.18-dev") + , (43, "0.9.18") + , (44, "0.9.19-dev") ] askFromConsole :: B.ByteString -> IO B.ByteString diff -r 3331b30e4ef1 -r 88fde28bbda6 hedgewars/ArgParsers.inc --- a/hedgewars/ArgParsers.inc Sun Oct 21 01:28:33 2012 +0400 +++ b/hedgewars/ArgParsers.inc Sat Nov 03 00:34:35 2012 +0400 @@ -16,20 +16,6 @@ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA *) -procedure playReplayFileWithParameters(); forward; - -procedure internalSetGameTypeLandPreviewFromParameters(); -begin - if ParamStr(3) = '--stats-only' then - playReplayFileWithParameters() - else - begin - ipcPort:= StrToInt(ParamStr(2)); - GameType:= gmtLandPreview; - if ParamStr(3) <> 'landpreview' then - GameType:= gmtSyntax - end -end; procedure internalStartGameWithParameters(); var tmp: LongInt; diff -r 3331b30e4ef1 -r 88fde28bbda6 hedgewars/CMakeLists.txt --- a/hedgewars/CMakeLists.txt Sun Oct 21 01:28:33 2012 +0400 +++ b/hedgewars/CMakeLists.txt Sat Nov 03 00:34:35 2012 +0400 @@ -3,7 +3,6 @@ find_package(SDL_net) find_package(SDL_ttf) find_package(SDL_mixer) -find_package(FFMPEG) include(${CMAKE_MODULE_PATH}/FindSDL_Extras.cmake) @@ -162,7 +161,7 @@ string(REGEX REPLACE "([0-9]+)\\.[0-9]+\\.[0-9]+" "\\1" fpc_vers_major "${fpc_version}") string(REGEX REPLACE "[0-9]+\\.([0-9]+)\\.[0-9]+" "\\1" fpc_vers_minor "${fpc_version}") string(REGEX REPLACE "[0-9]+\\.[0-9]+\\.([0-9]+)" "\\1" fpc_vers_patch "${fpc_version}") - message(STATUS "Freepascal version installed: ${fpc_vers_major}.${fpc_vers_minor}") + message(STATUS "Found Freepascal: ${fpc_executable} (version ${fpc_vers_major}.${fpc_vers_minor})") math(EXPR fpc_version "${fpc_vers_major}*10000 + ${fpc_vers_minor}*100 + ${fpc_vers_patch}") if(fpc_version LESS "020200") @@ -179,11 +178,9 @@ if(NOT NOPNG) find_package(PNG) if(${PNG_FOUND}) - message(STATUS "Found libpng: ${PNG_LIBRARY}") set(pascal_flags "-dPNG_SCREENSHOTS" ${pascal_flags}) - if(APPLE) # need to explictly link with the static lib -- maybe windows too? - string(REGEX REPLACE "(.*)libpng.*" "\\1" PNG_LIBDIR "${PNG_LIBRARY}") - set(pascal_flags "-k${PNG_LIBDIR}/libpng.a" ${pascal_flags}) + if(APPLE) # fpc png unit doesn't pull the library (see bug 21833) + set(pascal_flags "-k${PNG_LIBRARY}" ${pascal_flags}) endif() else() message(STATUS "Screenshots will be in BMP format because libpng was not found") @@ -201,8 +198,9 @@ if(NOT NOVIDEOREC) + set(FFMPEG_FIND_QUIETLY true) + find_package(FFMPEG) if(${FFMPEG_FOUND}) - message(STATUS "Found FFMPEG: ${FFMPEG_LIBRARIES}") include_directories(${FFMPEG_INCLUDE_DIR}) set(pascal_flags "-dUSE_VIDEO_RECORDING" ${pascal_flags}) IF (WIN32) @@ -213,13 +211,12 @@ ELSE() add_library(avwrapper STATIC avwrapper.c) set(pascal_flags "-k${FFMPEG_LIBAVCODEC}" "-k${FFMPEG_LIBAVFORMAT}" "-k${FFMPEG_LIBAVUTIL}" ${pascal_flags}) - # set(pascal_flags "-k${LIBRARY_OUTPUT_PATH}/${CMAKE_STATIC_LIBRARY_PREFIX}avwrapper${CMAKE_STATIC_LIBRARY_SUFFIX}" ${pascal_flags}) ENDIF() if(fpc_version LESS "020600") add_dependencies(avwrapper ENGINECLEAN) endif() else() - message(STATUS "Could NOT find FFMPEG, video recording will be disabled") + message(STATUS "Could NOT find FFMPEG/LibAV, video recording will be disabled") endif() else() message(STATUS "Video recording disabled by user") @@ -264,10 +261,8 @@ endif() #this command is a workaround to some inlining issues present in older FreePascal versions and fixed in 2.6 -if(fpc_version LESS "020600") - if(NO_VIDEOREC OR NOT ${FFMPEG_FOUND}) - add_dependencies(${engine_output_name} ENGINECLEAN) - endif() +if((fpc_version LESS "020600") AND (NOVIDEOREC OR NOT ${FFMPEG_FOUND})) + add_dependencies(${engine_output_name} ENGINECLEAN) endif() install(PROGRAMS "${EXECUTABLE_OUTPUT_PATH}/${engine_output_name}${CMAKE_EXECUTABLE_SUFFIX}" DESTINATION ${target_dir}) diff -r 3331b30e4ef1 -r 88fde28bbda6 hedgewars/GSHandlers.inc --- a/hedgewars/GSHandlers.inc Sun Oct 21 01:28:33 2012 +0400 +++ b/hedgewars/GSHandlers.inc Sat Nov 03 00:34:35 2012 +0400 @@ -93,7 +93,10 @@ else begin if (gi^.State and gstMoving) = 0 then + begin + gi^.dX.isNegative:= X r div 2 then PlaySoundV(sndNooo, gi^.Hedgehog^.Team^.voicepack) @@ -195,8 +198,8 @@ // might need some testing/adjustments - just to avoid projectiles to fly forever (accelerated by wind/skips) - if (hwRound(Gear^.X) < LAND_WIDTH div -2) - or (hwRound(Gear^.X) > LAND_WIDTH * 3 div 2) then + if (hwRound(Gear^.X) < min(LAND_WIDTH div -2, -2048)) + or (hwRound(Gear^.X) > max(LAND_WIDTH * 3 div 2, 6144)) then Gear^.State := Gear^.State or gstCollision; if Gear^.dY.isNegative then @@ -282,10 +285,12 @@ else Gear^.State := Gear^.State or gstMoving; - if (Gear^.nImpactSounds > 0) and (((Gear^.Kind <> gtMine) and (Gear^.Damage <> 0)) - or ((Gear^.State and (gstCollision or gstMoving)) = (gstCollision or gstMoving))) and(((Gear^.Radius < 3) and (Gear^.dY < -_0_1)) - or ((Gear^.Radius >= 3) and ((Gear^.dX.QWordValue > _0_1.QWordValue) - or (Gear^.dY.QWordValue > _0_1.QWordValue)))) then + if (Gear^.nImpactSounds > 0) and + (Gear^.State and gstCollision <> 0) and + (((Gear^.Kind <> gtMine) and (Gear^.Damage <> 0)) or (Gear^.State and gstMoving <> 0)) and + (((Gear^.Radius < 3) and (Gear^.dY < -_0_1)) or + ((Gear^.Radius >= 3) and + ((Gear^.dX.QWordValue > _0_1.QWordValue) or (Gear^.dY.QWordValue > _0_1.QWordValue)))) then PlaySound(TSound(ord(Gear^.ImpactSound) + LongInt(GetRandom(Gear^.nImpactSounds))), true); end; @@ -984,8 +989,8 @@ // only extend if not under water if hwRound(Bullet^.Y) < cWaterLine then begin - VGear^.dX := VGear^.dX + LAND_WIDTH * (VGear^.dX - VGear^.X); - VGear^.dY := VGear^.dY + LAND_WIDTH * (VGear^.dY - VGear^.Y); + VGear^.dX := VGear^.dX + max(LAND_WIDTH,4096) * (VGear^.dX - VGear^.X); + VGear^.dY := VGear^.dY + max(LAND_WIDTH,4096) * (VGear^.dY - VGear^.Y); end; VGear^.Timer := 200; @@ -2168,7 +2173,7 @@ if (GameTicks and $3F) = 0 then AddVisualGear(hwRound(Gear^.X), hwRound(Gear^.Y), vgtSmokeTrace); - if (hwRound(Gear^.X) > (LAND_WIDTH+2048)) or (hwRound(Gear^.X) < -2048) then + if (hwRound(Gear^.X) > (max(LAND_WIDTH,4096)+2048)) or (hwRound(Gear^.X) < -2048) then begin // avoid to play forever (is this necessary?) StopSoundChan(Gear^.SoundChannel); @@ -2188,7 +2193,7 @@ else begin Gear^.Tag := -1; - Gear^.X := int2hwFloat(LAND_WIDTH + 2048); + Gear^.X := int2hwFloat(max(LAND_WIDTH,4096) + 2048); end; Gear^.Y := int2hwFloat(topY-300); @@ -3967,9 +3972,9 @@ end else if (y > cWaterLine) - or (y < -LAND_WIDTH) - or (x > 2*LAND_WIDTH) - or (x < -LAND_WIDTH) then + or (y < -max(LAND_WIDTH,4096)) + or (x > 2*max(LAND_WIDTH,4096)) + or (x < -max(LAND_WIDTH,4096)) then loadNewPortalBall(Gear, true); end; @@ -4042,7 +4047,7 @@ iterator:= GearsList; while iterator <> nil do begin - if not (iterator^.Kind in [gtPortal, gtAirAttack]) and ((iterator^.Hedgehog <> CurrentHedgehog) + if not (iterator^.Kind in [gtPortal, gtAirAttack, gtKnife]) and ((iterator^.Hedgehog <> CurrentHedgehog) or ((iterator^.Message and gmAllStoppable) = 0)) then begin iterator^.Active:= true; @@ -5109,10 +5114,10 @@ X:= HHGear^.X; Y:= HHGear^.Y end; - if (gX > LAND_WIDTH*2) or - (gX < -LAND_WIDTH) or - (gY < -LAND_HEIGHT) or - (gY > LAND_HEIGHT+512) then + if (gX > max(LAND_WIDTH,4096)*2) or + (gX < -max(LAND_WIDTH,4096)) or + (gY < -max(LAND_HEIGHT,4096)) or + (gY > max(LAND_HEIGHT,4096)+512) then begin X:= HHGear^.X; Y:= HHGear^.Y @@ -5244,9 +5249,14 @@ procedure doStepKnife(Gear: PGear); var ox, oy: LongInt; la: hwFloat; + a: real; begin // Gear is shrunk so it can actually escape the hog without carving into the terrain if (Gear^.Radius = 6) and (Gear^.CollisionMask = $FFFF) then Gear^.Radius:= 16; + if Gear^.Damage > 100 then Gear^.CollisionMask:= 0 + else if Gear^.Damage > 30 then + if GetRandom(max(4,18-Gear^.Damage div 10)) < 3 then Gear^.CollisionMask:= 0; + Gear^.Damage:= 0; if Gear^.Timer > 0 then dec(Gear^.Timer); if (Gear^.State and gstMoving <> 0) and (Gear^.State and gstCollision = 0) then begin @@ -5255,7 +5265,9 @@ Gear^.Health:= hwRound(hwSqr((hwAbs(Gear^.dY)+hwAbs(Gear^.dX))*_4)); doStepFallingGear(Gear); AllInactive := false; - CalcRotationDirAngle(Gear) + a:= Gear^.DirAngle; + CalcRotationDirAngle(Gear); + Gear^.DirAngle:= a+(Gear^.DirAngle-a)*2*hwSign(Gear^.dX) // double rotation end else if (Gear^.CollisionIndex = -1) and (Gear^.Timer = 0) then begin @@ -5275,7 +5287,7 @@ // debug for when we couldn't get an angle //AddVisualGear(hwRound(Gear^.X), hwRound(Gear^.Y), vgtSmokeWhite); *) - Gear^.DirAngle:= DxDy2Angle(Gear^.dX, Gear^.dY) + (random(20)-10); + Gear^.DirAngle:= DxDy2Angle(Gear^.dX, Gear^.dY) + (random(30)-15); if (Gear^.dX.isNegative and Gear^.dY.isNegative) or ((not Gear^.dX.isNegative) and (not Gear^.dY.isNegative)) then Gear^.DirAngle:= Gear^.DirAngle-90; // end diff -r 3331b30e4ef1 -r 88fde28bbda6 hedgewars/VGSHandlers.inc --- a/hedgewars/VGSHandlers.inc Sun Oct 21 01:28:33 2012 +0400 +++ b/hedgewars/VGSHandlers.inc Sat Nov 03 00:34:35 2012 +0400 @@ -157,10 +157,12 @@ //////////////////////////////////////////////////////////////////////////////// procedure doStepExpl(Gear: PVisualGear; Steps: Longword); +var s: LongInt; begin -Gear^.X:= Gear^.X + Gear^.dX * Steps; +s:= min(Steps, cExplFrameTicks); -Gear^.Y:= Gear^.Y + Gear^.dY * Steps; +Gear^.X:= Gear^.X + Gear^.dX * s; +Gear^.Y:= Gear^.Y + Gear^.dY * s; //Gear^.dY:= Gear^.dY + cGravityf; if Gear^.FrameTicks <= Steps then diff -r 3331b30e4ef1 -r 88fde28bbda6 hedgewars/hwengine.pas --- a/hedgewars/hwengine.pas Sun Oct 21 01:28:33 2012 +0400 +++ b/hedgewars/hwengine.pas Sat Nov 03 00:34:35 2012 +0400 @@ -29,14 +29,17 @@ program hwengine; {$ENDIF} -uses SDLh, uMisc, uConsole, uGame, uConsts, uLand, uAmmos, uVisualGears, uGears, uStore, uWorld, uInputHandler, uSound, - uScript, uTeams, uStats, uIO, uLocale, uChat, uAI, uAIMisc, uLandTexture, uCollisions, +uses SDLh, uMisc, uConsole, uGame, uConsts, uLand, uAmmos, uVisualGears, uGears, uStore, uWorld, uInputHandler, + uSound, uScript, uTeams, uStats, uIO, uLocale, uChat, uAI, uAIMisc, uAILandMarks, uLandTexture, uCollisions, SysUtils, uTypes, uVariables, uCommands, uUtils, uCaptions, uDebug, uCommandHandlers, uLandPainted {$IFDEF USE_VIDEO_RECORDING}, uVideoRec {$ENDIF} - {$IFDEF SDL13}, uTouch{$ENDIF}{$IFDEF ANDROID}, GLUnit{$ENDIF}, uAILandMarks; + {$IFDEF USE_TOUCH_INTERFACE}, uTouch {$ENDIF} + {$IFDEF ANDROID}, GLUnit{$ENDIF} + ; {$IFDEF HWLIBRARY} +procedure preInitEverything(); procedure initEverything(complete:boolean); procedure freeEverything(complete:boolean); procedure Game(gameArgs: PPChar); cdecl; export; @@ -44,11 +47,12 @@ implementation {$ELSE} +procedure preInitEverything(); forward; procedure initEverything(complete:boolean); forward; procedure freeEverything(complete:boolean); forward; {$ENDIF} -//////////////////////////////// +/////////////////////////////////////////////////////////////////////////////// function DoTimer(Lag: LongInt): boolean; var s: shortstring; begin @@ -59,9 +63,9 @@ gsLandGen: begin GenMap; - uLandTexture.initModule; - UpdateLandTexture(0, LAND_WIDTH, 0, LAND_HEIGHT, false); - uAILandMarks.initModule; + SetLandTexture; + UpdateLandTexture(0, LAND_WIDTH, 0, LAND_HEIGHT, false); + setAILandMarks; ParseCommand('sendlanddigest', true); GameState:= gsStart; end; @@ -136,7 +140,7 @@ end; end; -/////////////////// +/////////////////////////////////////////////////////////////////////////////// procedure MainLoop; var event: TSDL_Event; PrevTime, CurrTime: Longword; @@ -308,29 +312,20 @@ end; {$ENDIF} -/////////////// +/////////////////////////////////////////////////////////////////////////////// procedure Game{$IFDEF HWLIBRARY}(gameArgs: PPChar); cdecl; export{$ENDIF}; var p: TPathType; s: shortstring; i: LongInt; begin {$IFDEF HWLIBRARY} - cBits:= 32; - cTimerInterval:= 8; + preInitEverything(); cShowFPS:= {$IFDEF DEBUGFILE}true{$ELSE}false{$ENDIF}; ipcPort:= StrToInt(gameArgs[0]); cScreenWidth:= StrToInt(gameArgs[1]); cScreenHeight:= StrToInt(gameArgs[2]); cReducedQuality:= StrToInt(gameArgs[3]); cLocaleFName:= gameArgs[4]; - // cFullScreen functionality is platform dependent, ifdef it if you need to modify it - cFullScreen:= false; - - if (Length(cLocaleFName) > 6) then - cLocale := Copy(cLocaleFName,1,5) - else - cLocale := Copy(cLocaleFName,1,2); - UserNick:= gameArgs[5]; SetSound(gameArgs[6] = '1'); SetMusic(gameArgs[7] = '1'); @@ -338,14 +333,9 @@ PathPrefix:= gameArgs[9]; UserPathPrefix:= '../Documents'; recordFileName:= gameArgs[10]; - cStereoMode:= smNone; {$ENDIF} - cMinScreenWidth:= min(cScreenWidth, cMinScreenWidth); - cMinScreenHeight:= min(cScreenHeight, cMinScreenHeight); - cOrigScreenWidth:= cScreenWidth; - cOrigScreenHeight:= cScreenHeight; + initEverything(true); - initEverything(true); WriteLnToConsole('Hedgewars ' + cVersionString + ' engine (network protocol: ' + inttostr(cNetProtoVersion) + ')'); AddFileLog('Prefix: "' + PathPrefix +'"'); AddFileLog('UserPrefix: "' + UserPathPrefix +'"'); @@ -443,40 +433,47 @@ freeEverything(true); end; -procedure initEverything (complete:boolean); +/////////////////////////////////////////////////////////////////////////////// +// preInitEverything - init variables that are going to be ovewritten by arguments +// initEverything - init variables only. Should be coupled by below +// freeEverything - free above. Pay attention to the init/free order! +procedure preInitEverything; begin Randomize(); - uUtils.initModule(complete); // this opens the debug file, must be the first - uMisc.initModule; - uVariables.initModule; - uConsole.initModule; - uCommands.initModule; - uCommandHandlers.initModule; + uVariables.preInitModule; + uSound.preInitModule; +end; - uLand.initModule; - uLandPainted.initModule; - uIO.initModule; +procedure initEverything (complete:boolean); +begin + uUtils.initModule(complete); // opens the debug file, must be the first + uVariables.initModule; // inits all global variables + uConsole.initModule; // opens stdout + uCommands.initModule; // helps below + uCommandHandlers.initModule; // registers all messages from frontend + + uLand.initModule; // computes land + uLandPainted.initModule; // computes drawn land + uIO.initModule; // sets up sockets if complete then begin -{$IFDEF ANDROID}GLUnit.init;{$ENDIF} -{$IFDEF SDL13}uTouch.initModule;{$ENDIF} +{$IFDEF ANDROID}GLUnit.initModule;{$ENDIF} +{$IFDEF USE_TOUCH_INTERFACE}uTouch.initModule;{$ENDIF} +{$IFDEF USE_VIDEO_RECORDING}uVideoRec.initModule;{$ENDIF} //stub uAI.initModule; - //uAIActions does not need initialization - //uAIAmmoTests does not need initialization uAIMisc.initModule; + uAILandMarks.initModule; //stub uAmmos.initModule; + uCaptions.initModule; + uChat.initModule; uCollisions.initModule; - //uFloat does not need initialization - //uGame does not need initialization uGears.initModule; - uInputHandler.initModule; - //uLandGraphics does not need initialization - //uLandObjects does not need initialization - //uLandTemplates does not need initialization - //uLocale does not need initialization + uInputHandler.initModule; //stub + uMisc.initModule; + uLandTexture.initModule; //stub uScript.initModule; uSound.initModule; uStats.initModule; @@ -484,7 +481,6 @@ uTeams.initModule; uVisualGears.initModule; uWorld.initModule; - uCaptions.initModule; end; end; @@ -493,9 +489,9 @@ if complete then begin WriteLnToConsole('Freeing resources...'); - uAI.freeModule; + uAI.freeModule; // AI things need to be freed first + uAIMisc.freeModule; //stub uAILandMarks.freeModule; - uAIMisc.freeModule; //stub uCaptions.freeModule; uWorld.freeModule; uVisualGears.freeModule; @@ -504,22 +500,16 @@ uStats.freeModule; //stub uSound.freeModule; uScript.freeModule; - //uRandom does not need to be freed - //uLocale does not need to be freed - //uLandTemplates does not need to be freed + uMisc.freeModule; uLandTexture.freeModule; - //uLandObjects does not need to be freed - //uLandGraphics does not need to be freed uGears.freeModule; - //uGame does not need to be freed - //uFloat does not need to be freed uCollisions.freeModule; //stub uChat.freeModule; uAmmos.freeModule; - //uAIAmmoTests does not need to be freed - //uAIActions does not need to be freed - uStore.freeModule; + uStore.freeModule; // closes SDL {$IFDEF USE_VIDEO_RECORDING}uVideoRec.freeModule;{$ENDIF} +{$IFDEF USE_TOUCH_INTERFACE}uTouch.freeModule;{$ENDIF} //stub +{$IFDEF ANDROID}GLUnit.freeModule;{$ENDIF} end; uIO.freeModule; @@ -528,13 +518,12 @@ uCommandHandlers.freeModule; uCommands.freeModule; - uConsole.freeModule; + uConsole.freeModule; // closes stdout uVariables.freeModule; - uUtils.freeModule; - uMisc.freeModule; // uMisc closes the debug log. + uUtils.freeModule; // closes debug file end; -///////////////////////// +/////////////////////////////////////////////////////////////////////////////// procedure GenLandPreview{$IFDEF HWLIBRARY}(port: LongInt); cdecl; export{$ENDIF}; var Preview: TPreview; begin @@ -557,7 +546,7 @@ end; {$IFNDEF HWLIBRARY} -///////////////////// +/////////////////////////////////////////////////////////////////////////////// procedure DisplayUsage; var i: LongInt; begin @@ -583,7 +572,7 @@ WriteLn(stdout, ''); end; -//////////////////// +/////////////////////////////////////////////////////////////////////////////// {$INCLUDE "ArgParsers.inc"} procedure GetParams; @@ -591,27 +580,33 @@ if (ParamCount < 3) then GameType:= gmtSyntax else - if (ParamCount = 3) and ((ParamStr(3) = '--stats-only') or (ParamStr(3) = 'landpreview')) then - internalSetGameTypeLandPreviewFromParameters() - else if ParamCount = cDefaultParamNum then - internalStartGameWithParameters() + if (ParamCount = 3) and (ParamStr(3) = 'landpreview') then + begin + ipcPort:= StrToInt(ParamStr(2)); + GameType:= gmtLandPreview; + end + else + begin + if (ParamCount = 3) and (ParamStr(3) = '--stats-only') then + playReplayFileWithParameters() + else + if ParamCount = cDefaultParamNum then + internalStartGameWithParameters() {$IFDEF USE_VIDEO_RECORDING} - else if ParamCount = cVideorecParamNum then - internalStartVideoRecordingWithParameters() + else if ParamCount = cVideorecParamNum then + internalStartVideoRecordingWithParameters() {$ENDIF} - else - playReplayFileWithParameters(); + else + playReplayFileWithParameters(); + end end; -//////////////////////////////////////////////////////////////////////////////// -/////////////////////////////// m a i n //////////////////////////////////////// -//////////////////////////////////////////////////////////////////////////////// +/////////////////////////////////////////////////////////////////////////////// +/////////////////////////////////// m a i n /////////////////////////////////// +/////////////////////////////////////////////////////////////////////////////// begin + preInitEverything(); GetParams(); - if (Length(cLocaleFName) > 6) then - cLocale := Copy(cLocaleFName,1,5) - else - cLocale := Copy(cLocaleFName,1,2); if GameType = gmtLandPreview then GenLandPreview() diff -r 3331b30e4ef1 -r 88fde28bbda6 hedgewars/options.inc --- a/hedgewars/options.inc Sun Oct 21 01:28:33 2012 +0400 +++ b/hedgewars/options.inc Sat Nov 03 00:34:35 2012 +0400 @@ -42,7 +42,6 @@ {$ENDIF} {$IFDEF MOBILE} - {$DEFINE SDL13} {$DEFINE HWLIBRARY} {$DEFINE S3D_DISABLED} {$DEFINE GLunit:=gles11} @@ -63,6 +62,9 @@ {$ENDIF} {$ENDIF} +{$IFDEF USE_TOUCH_INTERFACE} + {$DEFINE SDL13} +{$ENDIF} {$IFDEF PAS2C} {$DEFINE NOCONSOLE} diff -r 3331b30e4ef1 -r 88fde28bbda6 hedgewars/uAI.pas --- a/hedgewars/uAI.pas Sun Oct 21 01:28:33 2012 +0400 +++ b/hedgewars/uAI.pas Sat Nov 03 00:34:35 2012 +0400 @@ -108,7 +108,7 @@ -procedure TestAmmos(var Actions: TActions; Me: PGear; isMoved: boolean); +procedure TestAmmos(var Actions: TActions; Me: PGear; rareChecks: boolean); var BotLevel: Byte; ap: TAttackParams; Score, i, dAngle: LongInt; @@ -130,7 +130,7 @@ {$ENDIF} repeat if (CanUseAmmo[a]) - and ((not isMoved) or ((AmmoTests[a].flags and amtest_OnTurn) = 0)) + and ((not rareChecks) or ((AmmoTests[a].flags and amtest_Rare) = 0)) and ((i = 0) or ((AmmoTests[a].flags and amtest_NoTarget) = 0)) then begin @@ -151,7 +151,7 @@ else if (ap.Angle < 0) then AddAction(BestActions, aia_LookLeft, 0, 200, 0, 0); - if (ap.Time <> 0) then + if (Ammoz[a].Ammo.Propz and ammoprop_Timerable) <> 0 then AddAction(BestActions, aia_Timer, ap.Time div 1000, 400, 0, 0); if (Ammoz[a].Ammo.Propz and ammoprop_NoCrosshair) = 0 then @@ -217,7 +217,7 @@ procedure Walk(Me: PGear; var Actions: TActions); const FallPixForBranching = cHHRadius; var - ticks, maxticks, steps, tmp: Longword; + ticks, maxticks, oldticks, steps, tmp: Longword; BaseRate, BestRate, Rate: integer; GoInfo: TGoInfo; CanGo: boolean; @@ -225,9 +225,12 @@ BotLevel: Byte; a: TAmmoType; begin -ticks:= 0; // avoid compiler hint +ticks:= 0; +oldticks:= 0; // avoid compiler hint Stack.Count:= 0; +clearAllMarks; + for a:= Low(TAmmoType) to High(TAmmoType) do CanUseAmmo[a]:= Assigned(AmmoTests[a].proc) and (HHHasAmmo(Me^.Hedgehog^, a) > 0); @@ -272,12 +275,18 @@ {$HINTS OFF} CanGo:= HHGo(Me, @AltMe, GoInfo); {$HINTS ON} + oldticks:= ticks; inc(ticks, GoInfo.Ticks); if ticks > maxticks then break; - if (BotLevel < 5) and (GoInfo.JumpType = jmpHJump) then // hjump support + if (BotLevel < 5) + and (GoInfo.JumpType = jmpHJump) + and (not checkMark(hwRound(Me^.X), hwRound(Me^.Y), markHJumped)) + then // hjump support + begin // check if we could go backwards and maybe ljump over a gap after this hjump + addMark(hwRound(Me^.X), hwRound(Me^.Y), markHJumped); if Push(ticks, Actions, AltMe, Me^.Message xor 3) then begin with Stack.States[Pred(Stack.Count)] do @@ -298,8 +307,13 @@ // but first check walking forward Push(ticks, Stack.States[Pred(Stack.Count)].MadeActions, AltMe, Me^.Message) end; - if (BotLevel < 3) and (GoInfo.JumpType = jmpLJump) then // ljump support + end; + if (BotLevel < 3) + and (GoInfo.JumpType = jmpLJump) + and (not checkMark(hwRound(Me^.X), hwRound(Me^.Y), markLJumped)) + then // ljump support begin + addMark(hwRound(Me^.X), hwRound(Me^.Y), markLJumped); // at final check where we go after jump walking backward if Push(ticks, Actions, AltMe, Me^.Message xor 3) then with Stack.States[Pred(Stack.Count)] do @@ -334,11 +348,11 @@ if ((Me^.State and gstAttacked) = 0) and ((steps mod 4) = 0) then begin - if (steps > 4) and checkMark(hwRound(Me^.X), hwRound(Me^.Y), markWasHere) then + if (steps > 4) and checkMark(hwRound(Me^.X), hwRound(Me^.Y), markWalkedHere) then break; - addMark(hwRound(Me^.X), hwRound(Me^.Y), markWasHere); - - TestAmmos(Actions, Me, true); + addMark(hwRound(Me^.X), hwRound(Me^.Y), markWalkedHere); + + TestAmmos(Actions, Me, ticks shr 12 = oldticks shr 12); end; if GoInfo.FallPix >= FallPixForBranching then @@ -449,7 +463,6 @@ exit; //DeleteCI(Me); // this will break demo/netplay -clearAllMarks; Me^.State:= Me^.State or gstHHThinking; Me^.Message:= 0; diff -r 3331b30e4ef1 -r 88fde28bbda6 hedgewars/uAIActions.pas --- a/hedgewars/uAIActions.pas Sun Oct 21 01:28:33 2012 +0400 +++ b/hedgewars/uAIActions.pas Sat Nov 03 00:34:35 2012 +0400 @@ -72,7 +72,7 @@ var PrevX: LongInt = 0; timedelta: Longword = 0; -const ActionIdToStr: array[0..8] of string[16] = ( +const ActionIdToStr: array[0..7] of string[16] = ( {aia_none} '', {aia_Left} 'left', {aia_Right} 'right', @@ -80,12 +80,11 @@ {aia_attack} 'attack', {aia_Up} 'up', {aia_Down} 'down', -{aia_Switch} 'switch', -{aia_waitAngle} 'waitAngle' +{aia_Switch} 'switch' ); {$IFDEF TRACEAIACTIONS} -const SpecActionIdToStr: array[$8000..$8009] of string[16] = ( +const SpecActionIdToStr: array[$8000..$800C] of string[16] = ( {aia_Weapon} 'aia_Weapon', {aia_WaitX} 'aia_WaitX', {aia_WaitY} 'aia_WaitY', @@ -95,7 +94,10 @@ {aia_HJump} 'aia_HJump', {aia_LJump} 'aia_LJump', {aia_Skip} 'aia_Skip', -{aia_Wait} 'aia_Wait' +{aia_Wait} 'aia_Wait', +{aia_Put} 'aia_Put', +{aia_waitAngle} 'aia_waitAngle', +{aia_waitAmmoXY} 'aia_waitAmmoXY' ); procedure DumpAction(Action: TAction; Me: PGear); @@ -237,8 +239,8 @@ if LongInt(Me^.Angle) <> Abs(Param) then exit; aia_waitAmmoXY: - if (CurAmmoGear <> nil) and ((hwRound(CurAmmoGear^.X) <> X) or (hwRound(CurAmmoGear^.Y) <> Y)) then exit; - + if (CurAmmoGear <> nil) and ((hwRound(CurAmmoGear^.X) <> X) or (hwRound(CurAmmoGear^.Y) <> Y)) then + exit; end else begin diff -r 3331b30e4ef1 -r 88fde28bbda6 hedgewars/uAIAmmoTests.pas --- a/hedgewars/uAIAmmoTests.pas Sun Oct 21 01:28:33 2012 +0400 +++ b/hedgewars/uAIAmmoTests.pas Sat Nov 03 00:34:35 2012 +0400 @@ -22,7 +22,7 @@ interface uses SDLh, uConsts, uFloat, uTypes; const - amtest_OnTurn = $00000001; // from one position + amtest_Rare = $00000001; // check only several positions amtest_NoTarget = $00000002; // each pos, but no targetting var windSpeed: real; @@ -77,7 +77,7 @@ (proc: @TestWhip; flags: amtest_NoTarget), // amWhip (proc: @TestBaseballBat; flags: amtest_NoTarget), // amBaseballBat (proc: nil; flags: 0), // amParachute - (proc: @TestAirAttack; flags: amtest_OnTurn), // amAirAttack + (proc: @TestAirAttack; flags: amtest_Rare), // amAirAttack (proc: nil; flags: 0), // amMineStrike (proc: nil; flags: 0), // amBlowTorch (proc: nil; flags: 0), // amGirder @@ -86,7 +86,7 @@ (proc: nil; flags: 0), // amSwitch (proc: @TestMortar; flags: 0), // amMortar (proc: @TestKamikaze; flags: 0), // amKamikaze - (proc: @TestCake; flags: amtest_OnTurn or amtest_NoTarget), // amCake + (proc: @TestCake; flags: amtest_Rare or amtest_NoTarget), // amCake (proc: nil; flags: 0), // amSeduction (proc: @TestWatermelon; flags: 0), // amWatermelon (proc: nil; flags: 0), // amHellishBomb @@ -287,7 +287,6 @@ begin ap.Angle:= DxDy2AttackAnglef(Vx, Vy) + AIrndSign(random(Level)); ap.Power:= trunc(sqrt(r) * cMaxPower) + AIrndSign(random(Level) * 15); - ap.Time:= TestTime; ap.ExplR:= 100; ap.ExplX:= EX; ap.ExplY:= EY; @@ -496,6 +495,7 @@ begin TestMortar:= BadTurn; ap.ExplR:= 0; + meX:= hwFloat2Float(Me^.X); meY:= hwFloat2Float(Me^.Y); @@ -682,7 +682,7 @@ or (y < 0) or (trunc(x) > LAND_WIDTH) or (trunc(y) > LAND_HEIGHT) - or (d > 23); + or (d > 22); if Abs(Targ.X - trunc(x)) + Abs(Targ.Y - trunc(y)) < 4 then begin diff -r 3331b30e4ef1 -r 88fde28bbda6 hedgewars/uAILandMarks.pas --- a/hedgewars/uAILandMarks.pas Sun Oct 21 01:28:33 2012 +0400 +++ b/hedgewars/uAILandMarks.pas Sat Nov 03 00:34:35 2012 +0400 @@ -1,12 +1,16 @@ unit uAILandMarks; interface -const markWasHere = $01; +const + markWalkedHere = $01; + markHJumped = $02; + markLJumped = $04; procedure addMark(X, Y: LongInt; mark: byte); function checkMark(X, Y: LongInt; mark: byte) : boolean; procedure clearAllMarks; procedure clearMarks(mark: byte); +procedure setAILandMarks; procedure initModule; procedure freeModule; @@ -54,8 +58,7 @@ marks[Y, X]:= marks[Y, X] and (not mark) end; - -procedure initModule; +procedure setAILandMarks; begin WIDTH:= LAND_WIDTH shr gr; HEIGHT:= LAND_HEIGHT shr gr; @@ -63,6 +66,10 @@ SetLength(marks, HEIGHT, WIDTH); end; +procedure initModule; +begin +end; + procedure freeModule; begin SetLength(marks, 0, 0); diff -r 3331b30e4ef1 -r 88fde28bbda6 hedgewars/uAIMisc.pas --- a/hedgewars/uAIMisc.pas Sun Oct 21 01:28:33 2012 +0400 +++ b/hedgewars/uAIMisc.pas Sat Nov 03 00:34:35 2012 +0400 @@ -110,7 +110,9 @@ begin for i:= 0 to cMaxHHIndex do if (Hedgehogs[i].Gear <> nil) - and (Hedgehogs[i].Gear <> ThinkingHH) then + and (Hedgehogs[i].Gear <> ThinkingHH) + and (Hedgehogs[i].Gear^.Health > Hedgehogs[i].Gear^.Damage) + then begin with Targets.ar[Targets.Count], Hedgehogs[i] do begin @@ -119,11 +121,11 @@ Point.Y:= hwRound(Gear^.Y); if Clan <> CurrentTeam^.Clan then begin - Score:= Gear^.Health; + Score:= Gear^.Health - Gear^.Damage; inc(e) end else begin - Score:= -Gear^.Health; + Score:= Gear^.Damage - Gear^.Health; inc(f) end end; @@ -770,7 +772,6 @@ procedure freeModule; begin - end; end. diff -r 3331b30e4ef1 -r 88fde28bbda6 hedgewars/uCommandHandlers.pas --- a/hedgewars/uCommandHandlers.pas Sun Oct 21 01:28:33 2012 +0400 +++ b/hedgewars/uCommandHandlers.pas Sat Nov 03 00:34:35 2012 +0400 @@ -37,7 +37,7 @@ 'R': if ReadyTimeLeft > 1 then begin ReadyTimeLeft:= 1; - if not CurrentTeam^.ExtDriven then + if not isExternalSource then SendIPC('c'+s); end end @@ -218,7 +218,7 @@ s:= s; // avoid compiler hint if CheckNoTeamOrHH or isPaused then exit; -if not CurrentTeam^.ExtDriven then +if not isExternalSource then SendIPC(_S'L'); bShowFinger:= false; with CurrentHedgehog^.Gear^ do @@ -231,7 +231,7 @@ s:= s; // avoid compiler hint if CheckNoTeamOrHH then exit; -if not CurrentTeam^.ExtDriven then +if not isExternalSource then SendIPC(_S'l'); with CurrentHedgehog^.Gear^ do Message:= Message and (not (gmLeft and InputMask)); @@ -243,7 +243,7 @@ s:= s; // avoid compiler hint if CheckNoTeamOrHH or isPaused then exit; -if not CurrentTeam^.ExtDriven then +if not isExternalSource then SendIPC(_S'R'); bShowFinger:= false; with CurrentHedgehog^.Gear^ do @@ -256,7 +256,7 @@ s:= s; // avoid compiler hint if CheckNoTeamOrHH then exit; -if not CurrentTeam^.ExtDriven then +if not isExternalSource then SendIPC(_S'r'); with CurrentHedgehog^.Gear^ do Message:= Message and (not (gmRight and InputMask)); @@ -268,7 +268,7 @@ s:= s; // avoid compiler hint if CheckNoTeamOrHH or isPaused then exit; -if not CurrentTeam^.ExtDriven then +if not isExternalSource then SendIPC(_S'U'); bShowFinger:= false; with CurrentHedgehog^.Gear^ do @@ -281,7 +281,7 @@ s:= s; // avoid compiler hint if CheckNoTeamOrHH then exit; -if not CurrentTeam^.ExtDriven then +if not isExternalSource then SendIPC(_S'u'); with CurrentHedgehog^.Gear^ do Message:= Message and (not (gmUp and InputMask)); @@ -293,7 +293,7 @@ s:= s; // avoid compiler hint if CheckNoTeamOrHH or isPaused then exit; -if not CurrentTeam^.ExtDriven then +if not isExternalSource then SendIPC(_S'D'); bShowFinger:= false; with CurrentHedgehog^.Gear^ do @@ -306,7 +306,7 @@ s:= s; // avoid compiler hint if CheckNoTeamOrHH then exit; -if not CurrentTeam^.ExtDriven then +if not isExternalSource then SendIPC(_S'd'); with CurrentHedgehog^.Gear^ do Message:= Message and (not (gmDown and InputMask)); @@ -318,7 +318,7 @@ s:= s; // avoid compiler hint if CheckNoTeamOrHH or isPaused then exit; -if not CurrentTeam^.ExtDriven then +if not isExternalSource then SendIPC(_S'Z'); bShowFinger:= false; with CurrentHedgehog^.Gear^ do @@ -331,7 +331,7 @@ s:= s; // avoid compiler hint if CheckNoTeamOrHH then exit; -if not CurrentTeam^.ExtDriven then +if not isExternalSource then SendIPC(_S'z'); with CurrentHedgehog^.Gear^ do Message:= Message and (not (gmPrecise and InputMask)); @@ -343,7 +343,7 @@ s:= s; // avoid compiler hint if CheckNoTeamOrHH or isPaused then exit; -if not CurrentTeam^.ExtDriven then +if not isExternalSource then SendIPC(_S'j'); bShowFinger:= false; with CurrentHedgehog^.Gear^ do @@ -356,7 +356,7 @@ s:= s; // avoid compiler hint if CheckNoTeamOrHH or isPaused then exit; -if not CurrentTeam^.ExtDriven then +if not isExternalSource then SendIPC(_S'J'); bShowFinger:= false; with CurrentHedgehog^.Gear^ do @@ -376,7 +376,7 @@ if ((State and gstHHDriven) <> 0) then begin FollowGear:= CurrentHedgehog^.Gear; - if not CurrentTeam^.ExtDriven then + if not isExternalSource then SendIPC(_S'A'); Message:= Message or (gmAttack and InputMask); ScriptCall('onAttack'); @@ -391,7 +391,7 @@ exit; with CurrentHedgehog^.Gear^ do begin - if not CurrentTeam^.ExtDriven and + if not isExternalSource and ((Message and gmAttack) <> 0) then SendIPC(_S'a'); Message:= Message and (not (gmAttack and InputMask)); @@ -404,7 +404,7 @@ s:= s; // avoid compiler hint if CheckNoTeamOrHH or isPaused then exit; -if not CurrentTeam^.ExtDriven then +if not isExternalSource then SendIPC(_S'S'); bShowFinger:= false; with CurrentHedgehog^.Gear^ do @@ -428,7 +428,7 @@ gi := gi^.NextGear end; - if not CurrentTeam^.ExtDriven then + if not isExternalSource then begin s[0]:= #5; s[1]:= 'N'; @@ -436,16 +436,19 @@ SendIPC(s) end else - TryDo(CheckSum = lastTurnChecksum, 'Desync detected', true); + TryDo(CurrentTeam^.hasGone or (CheckSum = lastTurnChecksum), 'Desync detected', true); + AddFileLog('Next turn: time '+inttostr(GameTicks)); end; procedure chTimer(var s: shortstring); begin -if (s[0] <> #1) or (s[1] < '1') or (s[1] > '5') or CheckNoTeamOrHH then +if CheckNoTeamOrHH then exit; -if not CurrentTeam^.ExtDriven then +TryDo((s[0] = #1) and (s[1] >= '1') and (s[1] <= '5'), 'Malformed /timer', true); + +if not isExternalSource then SendIPC(s); bShowFinger:= false; with CurrentHedgehog^.Gear^ do @@ -465,7 +468,7 @@ slot:= byte(s[1]) - 49; if slot > cMaxSlotIndex then exit; -if not CurrentTeam^.ExtDriven then +if not isExternalSource then begin ss[0]:= #1; ss[1]:= char(byte(s[1]) + 79); @@ -482,13 +485,12 @@ procedure chSetWeapon(var s: shortstring); begin - if (s[0] <> #1) or CheckNoTeamOrHH then + if CheckNoTeamOrHH then exit; - if TAmmoType(s[1]) > High(TAmmoType) then - exit; + TryDo((s[0] = #1) and (s[1] <= char(High(TAmmoType))), 'Malformed /setweap', true); - if not CurrentTeam^.ExtDriven then + if not isExternalSource then SendIPC('w' + s); with CurrentHedgehog^.Gear^ do @@ -507,7 +509,7 @@ if TWave(s[1]) > High(TWave) then exit; -if not CurrentTeam^.ExtDriven then +if not isExternalSource then SendIPC('t' + s); with CurrentHedgehog^.Gear^ do diff -r 3331b30e4ef1 -r 88fde28bbda6 hedgewars/uCommands.pas --- a/hedgewars/uCommands.pas Sun Oct 21 01:28:33 2012 +0400 +++ b/hedgewars/uCommands.pas Sat Nov 03 00:34:35 2012 +0400 @@ -23,13 +23,15 @@ interface var isDeveloperMode: boolean; +var isExternalSource: boolean; type TCommandHandler = procedure (var params: shortstring); procedure initModule; procedure freeModule; procedure RegisterVariable(Name: shortstring; p: TCommandHandler; Trusted: boolean; Rand: boolean); procedure RegisterVariable(Name: shortstring; p: TCommandHandler; Trusted: boolean); -procedure ParseCommand(CmdStr: shortstring; TrustedSource: boolean); +procedure ParseCommand(CmdStr: shortstring; TrustedSource: boolean); inline; +procedure ParseCommand(CmdStr: shortstring; TrustedSource, ExternalSource: boolean); procedure ParseTeamCommand(s: shortstring); procedure StopMessages(Message: Longword); @@ -44,8 +46,7 @@ Trusted, Rand: boolean; end; -var - Variables: PVariable; +var Variables: PVariable; procedure RegisterVariable(Name: shortstring; p: TCommandHandler; Trusted: boolean); begin @@ -73,11 +74,17 @@ end; -procedure ParseCommand(CmdStr: shortstring; TrustedSource: boolean); +procedure ParseCommand(CmdStr: shortstring; TrustedSource: boolean); inline; +begin + ParseCommand(CmdStr, TrustedSource, false) +end; + +procedure ParseCommand(CmdStr: shortstring; TrustedSource, ExternalSource: boolean); var s: shortstring; t: PVariable; c: char; begin +isExternalSource:= ExternalSource or ((CurrentTeam <> nil) and CurrentTeam^.ExtDriven); //WriteLnToConsole(CmdStr); if CmdStr[0]=#0 then exit; diff -r 3331b30e4ef1 -r 88fde28bbda6 hedgewars/uGame.pas --- a/hedgewars/uGame.pas Sun Oct 21 01:28:33 2012 +0400 +++ b/hedgewars/uGame.pas Sat Nov 03 00:34:35 2012 +0400 @@ -28,7 +28,7 @@ //////////////////// uses uInputHandler, uTeams, uIO, uAI, uGears, uSound, uMobile, uVisualGears, uTypes, uVariables, uCommands, uConsts - {$IFDEF SDL13}, uTouch{$ENDIF}; + {$IFDEF USE_TOUCH_INTERFACE}, uTouch{$ENDIF}; procedure DoGameTick(Lag: LongInt); var i: LongInt; diff -r 3331b30e4ef1 -r 88fde28bbda6 hedgewars/uGears.pas --- a/hedgewars/uGears.pas Sun Oct 21 01:28:33 2012 +0400 +++ b/hedgewars/uGears.pas Sat Nov 03 00:34:35 2012 +0400 @@ -33,7 +33,7 @@ * effects are called "Visual Gears" and defined in the respective unit! *) interface -uses SDLh, uConsts, uFloat, uTypes, uLandObjects; +uses SDLh, uConsts, uFloat, uTypes; procedure initModule; procedure freeModule; @@ -111,10 +111,12 @@ end else dec(Gear^.Health, dmg); - +(* +This doesn't fit well w/ the new loser sprite which is cringing from an attack. if (Gear^.Hedgehog^.Team = CurrentTeam) and (Gear^.Damage <> Gear^.Karma) and (not Gear^.Hedgehog^.King) and (Gear^.Hedgehog^.Effects[hePoisoned] = 0) and (not SuddenDeathDmg) then Gear^.State:= Gear^.State or gstLoser; +*) spawnHealthTagForHH(Gear, dmg); @@ -1223,7 +1225,7 @@ procedure chSkip(var s: shortstring); begin s:= s; // avoid compiler hint -if not CurrentTeam^.ExtDriven then +if not isExternalSource then SendIPC(_S','); uStats.Skipped; skipFlag:= true diff -r 3331b30e4ef1 -r 88fde28bbda6 hedgewars/uGearsHedgehog.pas --- a/hedgewars/uGearsHedgehog.pas Sun Oct 21 01:28:33 2012 +0400 +++ b/hedgewars/uGearsHedgehog.pas Sat Nov 03 00:34:35 2012 +0400 @@ -323,7 +323,7 @@ newGear^.SoundChannel:= LoopSound(sndRCPlane) end; amKamikaze: newGear:= AddGear(hwRound(lx), hwRound(ly), gtKamikaze, 0, xx * _0_5, yy * _0_5, 0); - amCake: newGear:= AddGear(hwRound(lx) + hwSign(dX) * 3, hwRound(ly), gtCake, 0, xx, _0, 0); + amCake: newGear:= AddGear(hwRound(lx) + hwSign(dX) * 3, hwRound(ly), gtCake, 0, SignAs(cLittle, xx), _0, 0); amSeduction: newGear:= AddGear(hwRound(lx), hwRound(ly), gtSeduction, 0, _0, _0, 0); amWatermelon: newGear:= AddGear(hwRound(lx), hwRound(ly), gtWatermelon, 0, newDx, newDy, CurWeapon^.Timer); amHellishBomb: newGear:= AddGear(hwRound(lx), hwRound(ly), gtHellishBomb, 0, newDx, newDy, 0); diff -r 3331b30e4ef1 -r 88fde28bbda6 hedgewars/uGearsRender.pas --- a/hedgewars/uGearsRender.pas Sun Oct 21 01:28:33 2012 +0400 +++ b/hedgewars/uGearsRender.pas Sat Nov 03 00:34:35 2012 +0400 @@ -316,16 +316,23 @@ lx:= lx + ax; ly:= ly + ay; tx:= round(lx); - ty:= round(ly) + ty:= round(ly); + if (abs(tx-hx) > 1000) or (abs(hy-ty) > 1000) then + begin + DrawLine(hx, hy, tx, ty, 1.0, $FF, $00, $00, $C0); + hx:= tx; + hy:= ty + end end; // reached edge of land. assume infinite beam. Extend it way out past camera if ((ty and LAND_HEIGHT_MASK) <> 0) or ((tx and LAND_WIDTH_MASK) <> 0) then begin - tx:= round(lx + ax * (LAND_WIDTH div 2)); - ty:= round(ly + ay * (LAND_WIDTH div 2)); + tx:= round(lx + ax * (max(LAND_WIDTH,4096) div 2)); + ty:= round(ly + ay * (max(LAND_WIDTH,4096) div 2)); end; //if (abs(lx-tx)>8) or (abs(ly-ty)>8) then + if (tx <> hx) or (ty <> hy) then begin DrawLine(hx, hy, tx, ty, 1.0, $FF, $00, $00, $C0); end; @@ -1086,9 +1093,9 @@ endX:= x - WorldDx; endY:= y - WorldDy; if Gear^.Tag < 0 then - startX:= max(LAND_WIDTH + 1024, endX + 2048) + startX:= max(max(LAND_WIDTH,4096) + 1024, endX + 2048) else - startX:= max(-LAND_WIDTH - 1024, endX - 2048); + startX:= max(-max(LAND_WIDTH,4096) - 1024, endX - 2048); startY:= endY - 256; DrawTextureF(SpritesData[sprBirdy].Texture, 1, startX + WorldDx + LongInt(round((endX - startX) * (-power(2, -10 * LongInt(Gear^.Timer)/2000) + 1))), startY + WorldDy + LongInt(round((endY - startY) * sqrt(1 - power((LongInt(Gear^.Timer)/2000)-1, 2)))), ((Gear^.Pos shr 6) or (RealTicks shr 8)) mod 2, Gear^.Tag, 75, 75); end @@ -1097,9 +1104,9 @@ startX:= x - WorldDx; startY:= y - WorldDy; if Gear^.Tag > 0 then - endX:= max(LAND_WIDTH + 1024, startX + 2048) + endX:= max(max(LAND_WIDTH,4096) + 1024, startX + 2048) else - endX:= max(-LAND_WIDTH - 1024, startX - 2048); + endX:= max(-max(LAND_WIDTH,4096) - 1024, startX - 2048); endY:= startY + 256; DrawTextureF(SpritesData[sprBirdy].Texture, 1, startX + WorldDx + LongInt(round((endX - startX) * power(2, 10 * (LongInt(Gear^.Timer)/2000 - 1)))) + hwRound(Gear^.dX * Gear^.Timer), startY + WorldDy + LongInt(round((endY - startY) * cos(LongInt(Gear^.Timer)/2000 * (Pi/2)) - (endY - startY))) + hwRound(Gear^.dY * Gear^.Timer), ((Gear^.Pos shr 6) or (RealTicks shr 8)) mod 2, Gear^.Tag, 75, 75); end; diff -r 3331b30e4ef1 -r 88fde28bbda6 hedgewars/uGearsUtils.pas --- a/hedgewars/uGearsUtils.pas Sun Oct 21 01:28:33 2012 +0400 +++ b/hedgewars/uGearsUtils.pas Sat Nov 03 00:34:35 2012 +0400 @@ -323,8 +323,9 @@ var dAngle: real; begin -// Frac/Round to be kind to JS as of 2012-08-27 where there is yet no int64/uint64 - dAngle := (Gear^.dX.Round + Gear^.dY.Round) / 2 + (Gear^.dX.Frac+Gear^.dY.Frac) / $80000000; + // Frac/Round to be kind to JS as of 2012-08-27 where there is yet no int64/uint64 + //dAngle := (Gear^.dX.QWordValue + Gear^.dY.QWordValue) / $80000000; + dAngle := (Gear^.dX.Round + Gear^.dY.Round) / 2 + (Gear^.dX.Frac/$100000000+Gear^.dY.Frac/$100000000); if not Gear^.dX.isNegative then Gear^.DirAngle := Gear^.DirAngle + dAngle else diff -r 3331b30e4ef1 -r 88fde28bbda6 hedgewars/uInputHandler.pas --- a/hedgewars/uInputHandler.pas Sun Oct 21 01:28:33 2012 +0400 +++ b/hedgewars/uInputHandler.pas Sat Nov 03 00:34:35 2012 +0400 @@ -57,7 +57,7 @@ RCTRL = $4000; var tkbd: array[0..cKbdMaxIndex] of boolean; - quitKeyCode: Byte; + quitKeyCode, closeKeyCode: Byte; KeyNames: array [0..cKeyMaxIndex] of string[15]; CurrentBinds: TBinds; @@ -134,7 +134,23 @@ {$ELSE} if tkbd[KeyNameToCode('left_ctrl')] or tkbd[KeyNameToCode('right_ctrl')] then {$ENDIF} - ParseCommand('halt', true); + ParseCommand('halt', true); + end; + +// ctrl/cmd + w to close engine +if(KeyDown and (code = closeKeyCode)) then + begin +{$IFDEF DARWIN} + // on OS X it this is expected behaviour + if tkbd[KeyNameToCode('left_meta')] or tkbd[KeyNameToCode('right_meta')] then +{$ELSE} + // on other systems use this shortcut only if the keys are not bound to any command + if tkbd[KeyNameToCode('left_ctrl')] or tkbd[KeyNameToCode('right_ctrl')] then + if ((CurrentBinds[KeyNameToCode('left_ctrl')] = '') or + (CurrentBinds[KeyNameToCode('right_ctrl')] = '')) and + (CurrentBinds[closeKeyCode] = '') then +{$ENDIF} + ParseCommand('forcequit', true); end; if CurrentBinds[code][0] <> #0 then @@ -204,7 +220,7 @@ for i:= 6 to cKeyMaxIndex do begin s:= shortstring(sdl_getkeyname(i)); - //WriteLnToConsole(IntToStr(i) + ': ' + s + ' ' + IntToStr(cKeyMaxIndex)); + //WriteLnToConsole('uInputHandler - ' + IntToStr(i) + ': ' + s + ' ' + IntToStr(cKeyMaxIndex)); if s = 'unknown key' then KeyNames[i]:= '' else begin @@ -216,6 +232,7 @@ end; quitKeyCode:= KeyNameToCode(_S'q'); +closeKeyCode:= KeyNameToCode(_S'w'); // get the size of keyboard array SDL_GetKeyState(@k); @@ -245,7 +262,7 @@ end; DefaultBinds[KeyNameToCode('escape')]:= 'quit'; -DefaultBinds[KeyNameToCode('grave')]:= 'history'; +DefaultBinds[KeyNameToCode(_S'`')]:= 'history'; DefaultBinds[KeyNameToCode('delete')]:= 'rotmask'; //numpad @@ -426,8 +443,6 @@ procedure initModule; begin - wheelUp:= false; - wheelDown:= false; end; procedure freeModule; diff -r 3331b30e4ef1 -r 88fde28bbda6 hedgewars/uLandTemplates.pas --- a/hedgewars/uLandTemplates.pas Sun Oct 21 01:28:33 2012 +0400 +++ b/hedgewars/uLandTemplates.pas Sat Nov 03 00:34:35 2012 +0400 @@ -1758,18 +1758,18 @@ const Template44Points: array[0..14] of TSDL_Rect = ( (x: 0; y: 100; w: 1; h: 50), - (x: 4096; y: 100; w: 1; h: 50), - (x: 4096; y: 400; w: 1; h: 50), + (x: 4095; y: 100; w: 1; h: 50), + (x: 4095; y: 400; w: 1; h: 50), (x: 0; y: 360; w: 1; h: 50), (x: NTPX; y: 0; w: 1; h: 1), (x: 0; y: 750; w: 1; h: 50), - (x: 4096; y: 750; w: 1; h: 50), - (x: 4096; y:1100; w: 1; h: 50), + (x: 4095; y: 750; w: 1; h: 50), + (x: 4095; y:1100; w: 1; h: 50), (x: 0; y:1100; w: 1; h: 50), (x: NTPX; y: 0; w: 1; h: 1), (x: 0; y:1300; w: 1; h: 250), - (x: 4096; y:1300; w: 1; h: 250), - (x: 4096; y:1800; w: 1; h: 200), + (x: 4095; y:1300; w: 1; h: 250), + (x: 4095; y:1800; w: 1; h: 200), (x: 0; y:1800; w: 1; h: 200), (x: NTPX; y: 0; w: 1; h: 1) ); @@ -1777,9 +1777,9 @@ ( (X: 1; Y: 90; w: 0; h: 0), (X: 1; Y: 500; w: 0; h: 0), - (X:4096; Y: 500; w: 0; h: 0), + (X:4095; Y: 500; w: 0; h: 0), (X: 1; Y:1200; w: 0; h: 0), - (X:4096; Y:1200; w: 0; h: 0), + (X:4095; Y:1200; w: 0; h: 0), (X: 1; Y:2010; w: 0; h: 0) ); diff -r 3331b30e4ef1 -r 88fde28bbda6 hedgewars/uLandTexture.pas --- a/hedgewars/uLandTexture.pas Sun Oct 21 01:28:33 2012 +0400 +++ b/hedgewars/uLandTexture.pas Sat Nov 03 00:34:35 2012 +0400 @@ -27,6 +27,7 @@ procedure UpdateLandTexture(X, Width, Y, Height: LongInt; landAdded: boolean); procedure DrawLand(dX, dY: LongInt); procedure ResetLand; +procedure SetLandTexture; implementation uses uConsts, GLunit, uTypes, uVariables, uTextures, uDebug, uRender; @@ -183,7 +184,7 @@ end; -procedure initModule; +procedure SetLandTexture; begin if (cReducedQuality and rqBlurryLand) = 0 then begin @@ -199,6 +200,10 @@ SetLength(LandTextures, LANDTEXARW, LANDTEXARH); end; +procedure initModule; +begin +end; + procedure ResetLand; var x, y: LongInt; begin diff -r 3331b30e4ef1 -r 88fde28bbda6 hedgewars/uMisc.pas --- a/hedgewars/uMisc.pas Sun Oct 21 01:28:33 2012 +0400 +++ b/hedgewars/uMisc.pas Sat Nov 03 00:34:35 2012 +0400 @@ -206,9 +206,9 @@ for i0:= 0 to k-1 do for j0:= 0 to k-1 do begin - r+= img[4*(width*(i*k+i0) + j*k+j0)+0]; - g+= img[4*(width*(i*k+i0) + j*k+j0)+1]; - b+= img[4*(width*(i*k+i0) + j*k+j0)+2]; + inc(r, img[4*(width*(i*k+i0) + j*k+j0)+0]); + inc(g, img[4*(width*(i*k+i0) + j*k+j0)+1]); + inc(b, img[4*(width*(i*k+i0) + j*k+j0)+2]); end; img[4*(w*i + j)+0]:= r div (k*k); img[4*(w*i + j)+1]:= g div (k*k); @@ -311,7 +311,6 @@ procedure freeModule; begin - recordFileName:= ''; SDL_FreeFormat(conversionFormat); end; diff -r 3331b30e4ef1 -r 88fde28bbda6 hedgewars/uScript.pas --- a/hedgewars/uScript.pas Sun Oct 21 01:28:33 2012 +0400 +++ b/hedgewars/uScript.pas Sat Nov 03 00:34:35 2012 +0400 @@ -46,7 +46,7 @@ function ScriptExists(fname : shortstring) : boolean; -function ParseCommandOverride(key, value : shortstring) : shortstring; +//function ParseCommandOverride(key, value : shortstring) : shortstring; This did not work out well procedure initModule; procedure freeModule; @@ -196,7 +196,7 @@ for i:= 1 to c do s[i]:= t[i-1]; s[0]:= char(c); - ParseCommand(s, true); + ParseCommand(s, true, true); end else @@ -1306,11 +1306,11 @@ end else begin - ParseCommand('addteam x ' + lua_tostring(L, 2) + ' ' + lua_tostring(L, 1), true); - ParseCommand('grave ' + lua_tostring(L, 3), true); - ParseCommand('fort ' + lua_tostring(L, 4), true); - ParseCommand('voicepack ' + lua_tostring(L, 5), true); - if (np = 6) then ParseCommand('flag ' + lua_tostring(L, 6), true); + ParseCommand('addteam x ' + lua_tostring(L, 2) + ' ' + lua_tostring(L, 1), true, true); + ParseCommand('grave ' + lua_tostring(L, 3), true, true); + ParseCommand('fort ' + lua_tostring(L, 4), true, true); + ParseCommand('voicepack ' + lua_tostring(L, 5), true, true); + if (np = 6) then ParseCommand('flag ' + lua_tostring(L, 6), true, true); CurrentTeam^.Binds:= DefaultBinds // fails on x64 //lua_pushinteger(L, LongInt(CurrentTeam)); @@ -1329,8 +1329,8 @@ else begin temp:= lua_tostring(L, 4); - ParseCommand('addhh ' + lua_tostring(L, 2) + ' ' + lua_tostring(L, 3) + ' ' + lua_tostring(L, 1), true); - ParseCommand('hat ' + temp, true); + ParseCommand('addhh ' + lua_tostring(L, 2) + ' ' + lua_tostring(L, 3) + ' ' + lua_tostring(L, 1), true, true); + ParseCommand('hat ' + temp, true, true); lua_pushinteger(L, CurrentHedgehog^.Gear^.uid); end; lc_addhog:= 1; @@ -1669,7 +1669,11 @@ if (gear <> nil) and (gear^.Kind = gtHedgehog) and (gear^.Hedgehog <> nil) then hat:= lua_tostring(L, 2); gear^.Hedgehog^.Hat:= hat; - LoadHedgehogHat(gear^.Hedgehog^, hat); +AddFileLog('Changed hat to: '+hat); + if (Length(hat) > 39) and (Copy(hat,1,8) = 'Reserved') and (Copy(hat,9,32) = gear^.Hedgehog^.Team^.PlayerHash) then + LoadHedgehogHat(gear^.Hedgehog^, 'Reserved/' + Copy(hat,9,Length(hat)-8)) + else + LoadHedgehogHat(gear^.Hedgehog^, hat); end; lc_sethoghat:= 0; end; @@ -1871,7 +1875,7 @@ ScriptCall('onGameInit'); // pop game variables -ParseCommand('seed ' + ScriptGetString('Seed'), true); +ParseCommand('seed ' + ScriptGetString('Seed'), true, true); cTemplateFilter := ScriptGetInteger('TemplateFilter'); LuaTemplateNumber:= ScriptGetInteger('TemplateNumber'); cMapGen := ScriptGetInteger('MapGen'); @@ -1892,9 +1896,10 @@ cWaterRise := ScriptGetInteger('WaterRise'); cHealthDecrease := ScriptGetInteger('HealthDecrease'); -ParseCommand('map ' + ScriptGetString('Map'), true); +if cMapName <> ScriptGetString('Map') then + ParseCommand('map ' + ScriptGetString('Map'), true, true); if ScriptGetString('Theme') <> '' then - ParseCommand('theme ' + ScriptGetString('Theme'), true); + ParseCommand('theme ' + ScriptGetString('Theme'), true, true); LuaGoals:= ScriptGetString('Goals'); // Support lua changing the ammo layout - assume all hogs have same ammo, note this might leave a few ammo stores lying around. @@ -2016,6 +2021,7 @@ GetGlobals; end; +(* function ParseCommandOverride(key, value : shortstring) : shortstring; begin ParseCommandOverride:= value; @@ -2035,6 +2041,7 @@ lua_pop(luaState, 1) end; end; +*) function ScriptCall(fname : shortstring; par1: LongInt) : LongInt; begin @@ -2449,7 +2456,7 @@ fname:= fname; // avoid hint ScriptExists:= false end; - +(* function ParseCommandOverride(key, value : shortstring) : shortstring; begin // avoid hints @@ -2457,6 +2464,7 @@ value:= value; ParseCommandOverride:= '' end; +*) procedure ScriptOnScreenResize; begin diff -r 3331b30e4ef1 -r 88fde28bbda6 hedgewars/uSound.pas --- a/hedgewars/uSound.pas Sun Oct 21 01:28:33 2012 +0400 +++ b/hedgewars/uSound.pas Sat Nov 03 00:34:35 2012 +0400 @@ -35,6 +35,7 @@ interface uses SDLh, uConsts, uTypes, SysUtils; +procedure preInitModule; procedure initModule; procedure freeModule; @@ -47,7 +48,7 @@ // Obvious music commands for music track procedure SetMusic(enabled: boolean); // Enable/disable music. -procedure SetMusicName(musicname: shortstring); // Enable/disable music and set name of the file to play. +procedure SetMusicName(musicname: shortstring); // Set name of the file to play. procedure PlayMusic; // Play music from the start. procedure PauseMusic; // Pause music. procedure ResumeMusic; // Resume music from pause point. @@ -95,7 +96,7 @@ // MISC // Set the initial volume -procedure SetVolume(volume: LongInt); +procedure SetVolume(vol: LongInt); // Modifies the sound volume of the game by voldelta and returns the new volume level. function ChangeVolume(voldelta: LongInt): LongInt; @@ -114,7 +115,7 @@ lastChan: array [TSound] of LongInt; voicepacks: array[0..cMaxTeams] of TVoicepack; defVoicepack: PVoicepack; - Mus: PMixMusic = nil; // music pointer + Mus: PMixMusic; // music pointer MusicFN: shortstring; // music file name isMusicEnabled: boolean; isSoundEnabled: boolean; @@ -445,15 +446,15 @@ SDLTry(Mix_FadeInMusic(Mus, -1, 3000) <> -1, false) end; -procedure SetVolume(volume: LongInt); +procedure SetVolume(vol: LongInt); begin - cInitVolume:= volume; + cInitVolume:= vol; end; function ChangeVolume(voldelta: LongInt): LongInt; begin ChangeVolume:= 0; - if (not isSoundEnabled) or (voldelta = 0) then + if (not isSoundEnabled) or ((voldelta = 0) and not (cInitVolume = 0)) then exit; inc(Volume, voldelta); @@ -494,7 +495,7 @@ procedure MuteAudio; begin if (not isSoundEnabled) then - exit; + exit; if (isAudioMuted) then begin @@ -514,12 +515,10 @@ procedure SetMusic(enabled: boolean); begin isMusicEnabled:= enabled; - MusicFN:= ''; end; procedure SetMusicName(musicname: shortstring); begin - isMusicEnabled:= not (musicname = ''); MusicFN:= musicname; end; @@ -579,6 +578,13 @@ MuteAudio; end; +procedure preInitModule; +begin + isMusicEnabled:= true; + isSoundEnabled:= true; + cInitVolume:= 100; +end; + procedure initModule; var t: LongInt; i: TSound; @@ -587,6 +593,7 @@ RegisterVariable('mute' , @chMute , true ); MusicFN:=''; + Mus:= nil; isAudioMuted:= false; isSEBackup:= isSoundEnabled; Volume:= 0; @@ -602,7 +609,7 @@ voicepacks[t].chunks[i]:= nil; (* on MOBILE SDL_mixer has to be compiled against Tremor (USE_OGG_TREMOR) - or sound files bigger than 32k will lockup the game*) + or sound files bigger than 32k will lockup the game *) for i:= Low(TSound) to High(TSound) do defVoicepack^.chunks[i]:= nil; @@ -612,11 +619,6 @@ begin if isSoundEnabled then ReleaseSound(true); - // koda still needs to fix this properly. when he rearranged things, he made these variables get - // reset after argparsers picks them up - isMusicEnabled:= true; - isSoundEnabled:= true; - cInitVolume:= 100; end; end. diff -r 3331b30e4ef1 -r 88fde28bbda6 hedgewars/uStats.pas --- a/hedgewars/uStats.pas Sun Oct 21 01:28:33 2012 +0400 +++ b/hedgewars/uStats.pas Sat Nov 03 00:34:35 2012 +0400 @@ -311,7 +311,6 @@ procedure freeModule; begin - end; end. diff -r 3331b30e4ef1 -r 88fde28bbda6 hedgewars/uStore.pas --- a/hedgewars/uStore.pas Sun Oct 21 01:28:33 2012 +0400 +++ b/hedgewars/uStore.pas Sat Nov 03 00:34:35 2012 +0400 @@ -53,7 +53,7 @@ {$ENDIF} procedure WarpMouse(x, y: Word); inline; -procedure SwapBuffers; inline; +procedure SwapBuffers; {$IFDEF USE_VIDEO_RECORDING}cdecl{$ELSE}inline{$ENDIF}; implementation uses uMisc, uConsole, uMobile, uVariables, uUtils, uTextures, uRender, uRenderUtils, uCommands, @@ -1115,6 +1115,7 @@ glutInitWindowSize(cScreenWidth, cScreenHeight); glutCreateWindow('hedgewars (you don''t see this)'); // we don't need a window, but if this function is not called then OpenGL will not be initialized glutHideWindow(); + glutDisplayFunc(@SwapBuffers); // we don't need a callback, but it's required for GLUT3 SetupOpenGL(); end; {$ENDIF} // SDL13 @@ -1296,7 +1297,7 @@ {$ENDIF} end; -procedure SwapBuffers; inline; +procedure SwapBuffers; {$IFDEF USE_VIDEO_RECORDING}cdecl{$ELSE}inline{$ENDIF}; begin if GameType = gmtRecord then exit; diff -r 3331b30e4ef1 -r 88fde28bbda6 hedgewars/uTeams.pas --- a/hedgewars/uTeams.pas Sun Oct 21 01:28:33 2012 +0400 +++ b/hedgewars/uTeams.pas Sat Nov 03 00:34:35 2012 +0400 @@ -20,8 +20,10 @@ unit uTeams; interface -uses uConsts, uInputHandler, uGears, uRandom, uFloat, uStats, uVisualGears, uCollisions, GLunit, uSound, uStore, - uTypes{$IFDEF USE_TOUCH_INTERFACE}, uWorld{$ENDIF}; +uses uConsts, uInputHandler, uGears, uRandom, uFloat, uStats, uVisualGears, uCollisions, GLunit, + uSound, uStore, uTypes + {$IFDEF USE_TOUCH_INTERFACE}, uWorld{$ENDIF}; + procedure initModule; procedure freeModule; @@ -39,7 +41,8 @@ implementation uses uLocale, uAmmos, uChat, uVariables, uUtils, uIO, uCaptions, uCommands, uDebug, uScript, - uGearsUtils, uGearsList{$IFDEF SDL13}, uTouch{$ENDIF}; + uGearsUtils, uGearsList + {$IFDEF USE_TOUCH_INTERFACE}, uTouch{$ENDIF}; var MaxTeamHealth: LongInt; GameOver: boolean; @@ -247,6 +250,7 @@ Z:= cCurrHHZ; State:= gstHHDriven; Active:= true; + Power:= 0; LastDamage:= nil end; RemoveGearFromList(Gear); diff -r 3331b30e4ef1 -r 88fde28bbda6 hedgewars/uTouch.pas --- a/hedgewars/uTouch.pas Sun Oct 21 01:28:33 2012 +0400 +++ b/hedgewars/uTouch.pas Sat Nov 03 00:34:35 2012 +0400 @@ -22,10 +22,11 @@ interface -uses SysUtils, uConsole, uVariables, SDLh, uFloat, uConsts, uCommands, uIO, GLUnit, uTypes, uCaptions, uAmmos, uWorld, uMobile; +uses SysUtils, uConsole, uVariables, SDLh, uFloat, uConsts, uCommands, GLUnit, uTypes, uCaptions, uAmmos, uWorld, uMobile; procedure initModule; +procedure freeModule; procedure ProcessTouch; procedure NewTurnBeginning; @@ -643,5 +644,9 @@ halfRectSize:= rectSize shl 1; end; +procedure freeModule; +begin +end; + begin end. diff -r 3331b30e4ef1 -r 88fde28bbda6 hedgewars/uUtils.pas --- a/hedgewars/uUtils.pas Sun Oct 21 01:28:33 2012 +0400 +++ b/hedgewars/uUtils.pas Sat Nov 03 00:34:35 2012 +0400 @@ -73,7 +73,7 @@ procedure WriteLn(var f: textfile; s: shortstring); {$ENDIF} -procedure initModule(isGame: boolean); +procedure initModule(isNotPreview: boolean); procedure freeModule; @@ -401,14 +401,14 @@ end; {$ENDIF} -procedure initModule(isGame: boolean); +procedure initModule(isNotPreview: boolean); {$IFDEF DEBUGFILE} var logfileBase: shortstring; {$IFNDEF MOBILE}var i: LongInt;{$ENDIF} {$ENDIF} begin {$IFDEF DEBUGFILE} - if isGame then + if isNotPreview then begin if GameType = gmtRecord then logfileBase:= 'rec' @@ -422,7 +422,7 @@ {$ENDIF} {$I-} {$IFDEF MOBILE} - {$IFDEF IPHONEOS} Assign(f,'../Documents/hw-' + logfileBase + '.log'); {$ENDIF} + {$IFDEF IPHONEOS} Assign(f, UserPathPrefix + '/hw-' + logfileBase + '.log'); {$ENDIF} {$IFDEF ANDROID} Assign(f,pathPrefix + '/' + logfileBase + '.log'); {$ENDIF} Rewrite(f); {$ELSE} @@ -450,8 +450,6 @@ procedure freeModule; begin -recordFileName:= ''; - {$IFDEF DEBUGFILE} writeln(f, 'halt at ' + inttostr(GameTicks) + ' ticks. TurnTimeLeft = ' + inttostr(TurnTimeLeft)); flush(f); diff -r 3331b30e4ef1 -r 88fde28bbda6 hedgewars/uVariables.pas --- a/hedgewars/uVariables.pas Sun Oct 21 01:28:33 2012 +0400 +++ b/hedgewars/uVariables.pas Sat Nov 03 00:34:35 2012 +0400 @@ -25,45 +25,44 @@ var /////// init flags /////// - cMinScreenWidth : LongInt = 640; - cMinScreenHeight : LongInt = 480; - cScreenWidth : LongInt = 1024; - cScreenHeight : LongInt = 768; - cOrigScreenWidth : LongInt = 1024; - cOrigScreenHeight : LongInt = 768; - cNewScreenWidth : LongInt = 1024; - cNewScreenHeight : LongInt = 768; - cScreenResizeDelay : LongWord = 0; - cBits : LongInt = 32; - ipcPort : Word = 0; - cFullScreen : boolean = false; - cLocaleFName : shortstring = 'en.txt'; - cLocale : shortstring = 'en'; - cTimerInterval : LongInt = 8; - PathPrefix : shortstring = './'; - UserPathPrefix : shortstring = './'; - cShowFPS : boolean = false; - cFlattenFlakes : boolean = false; - cFlattenClouds : boolean = false; - cAltDamage : boolean = true; - cReducedQuality : LongWord = rqNone; - UserNick : shortstring = ''; - recordFileName : shortstring = ''; - cReadyDelay : Longword = 5000; - cStereoMode : TStereoMode = smNone; - cOnlyStats : boolean = False; + cMinScreenWidth : LongInt; + cMinScreenHeight : LongInt; + cScreenWidth : LongInt; + cScreenHeight : LongInt; + cOrigScreenWidth : LongInt; + cOrigScreenHeight : LongInt; + cNewScreenWidth : LongInt; + cNewScreenHeight : LongInt; + cScreenResizeDelay : LongWord; + cBits : LongInt; + ipcPort : Word; + cFullScreen : boolean; + cLocaleFName : shortstring; + cLocale : shortstring; + cTimerInterval : LongInt; + PathPrefix : shortstring; + UserPathPrefix : shortstring; + cShowFPS : boolean; + cFlattenFlakes : boolean; + cFlattenClouds : boolean; + cAltDamage : boolean; + cReducedQuality : LongWord; + UserNick : shortstring; + recordFileName : shortstring; + cReadyDelay : Longword; + cStereoMode : TStereoMode; + cOnlyStats : boolean; {$IFDEF USE_VIDEO_RECORDING} - RecPrefix : shortstring; - cAVFormat : shortstring; - cVideoCodec : shortstring; + RecPrefix : shortstring; + cAVFormat : shortstring; + cVideoCodec : shortstring; cVideoFramerateNum : LongInt; cVideoFramerateDen : LongInt; cVideoQuality : LongInt; - cAudioCodec : shortstring; + cAudioCodec : shortstring; {$ENDIF} ////////////////////////// - cMapName : shortstring = ''; - + cMapName : shortstring; isCursorVisible : boolean; isInLag : boolean; isPaused : boolean; @@ -111,7 +110,7 @@ cWaterLine : Word; cGearScrEdgesDist: LongInt; - isAudioMuted : boolean; + isAudioMuted : boolean; // originally typed consts ExplosionBorderColor: LongWord; @@ -2105,7 +2104,8 @@ Probability: 100; NumberInCase: 1; Ammo: (Propz: ammoprop_Power or - ammoprop_NeedUpDown; //FIXME: enable multishoot at altuse, until then removed ammoprop_AltUse + ammoprop_AltUse or + ammoprop_NeedUpDown; Count: 1; NumPerTurn: 1; Timer: 0; @@ -2338,7 +2338,8 @@ Probability: 100; NumberInCase: 1; Ammo: (Propz: ammoprop_Power or - ammoprop_NeedUpDown; //FIXME: enable multishoot at altuse, until then removed ammoprop_AltUse + ammoprop_AltUse or + ammoprop_NeedUpDown; Count: 1; NumPerTurn: 1; Timer: 0; @@ -2509,8 +2510,6 @@ vobSDVelocity, vobSDFallSpeed: LongInt; hideAmmoMenu: boolean; - wheelUp: boolean; - wheelDown: boolean; ControllerNumControllers: Integer; ControllerEnabled: Integer; @@ -2533,18 +2532,63 @@ trmsg: array[TMsgStrId] of ansistring; // message of the event trgoal: array[TGoalStrId] of ansistring; // message of the goal +procedure preInitModule; procedure initModule; procedure freeModule; implementation +procedure preInitModule; +begin + // initialisation flags - they are going to be overwritten by program args + + cScreenWidth := 1024; + cScreenHeight := 768; + cBits := 32; + cShowFPS := false; + cAltDamage := true; + cTimerInterval := 8; + cReducedQuality := rqNone; + cLocaleFName := 'en.txt'; + cFullScreen := false; + + UserPathPrefix := ''; + ipcPort := 0; + UserNick := ''; + cStereoMode := smNone; + GrayScale := false; + PathPrefix := './'; + GameType := gmtLocal; + +{$IFDEF USE_VIDEO_RECORDING} + RecPrefix := ''; + cAVFormat := ''; + cVideoCodec := ''; + cVideoFramerateNum := 0; + cVideoFramerateDen := 0; + cVideoQuality := 0; + cAudioCodec := ''; +{$ENDIF} +end; + procedure initModule; begin - lastVisualGearByUID:= nil; - lastGearByUID:= nil; - - Pathz:= cPathz; + + if (Length(cLocaleFName) > 6) then + cLocale := Copy(cLocaleFName,1,5) + else + cLocale := Copy(cLocaleFName,1,2); + + cFlattenFlakes := false; + cFlattenClouds := false; + cOnlyStats := False; + lastVisualGearByUID := nil; + lastGearByUID := nil; + recordFileName := ''; + cReadyDelay := 5000; + Pathz := cPathz; + {* REFERENCE 4096 -> $FFFFF000 2048 -> $FFFFF800 @@ -2575,8 +2619,10 @@ SDWaterColorArray[2].a := 255; SDWaterColorArray[1]:= SDWaterColorArray[0]; SDWaterColorArray[3]:= SDWaterColorArray[2]; - + SDWaterOpacity:= $80; SDTint:= $80; + ExplosionBorderColor:= $FF808080; + WaterOpacity:= $80; cDrownSpeed.QWordValue := 257698038; // 0.06 cDrownSpeedf := 0.06; @@ -2626,7 +2672,6 @@ cExplosives := 2; GameState := Low(TGameState); -// GameType := gmtLocal; zoom := cDefaultZoomLevel; ZoomValue := cDefaultZoomLevel; WeaponTooltipTex:= nil; @@ -2653,7 +2698,6 @@ ReadyTimeLeft := 0; disableLandBack := false; - ScreenFade := sfNone; // those values still are not perfect @@ -2673,11 +2717,17 @@ vobSDVelocity:= 15; vobSDFallSpeed:= 250; - ExplosionBorderColor:= $FF808080; - WaterOpacity:= $80; - SDWaterOpacity:= $80; + cMinScreenWidth:= min(cScreenWidth, 640); + cMinScreenHeight:= min(cScreenHeight, 480); + cOrigScreenWidth:= cScreenWidth; + cOrigScreenHeight:= cScreenHeight; + + cNewScreenWidth := cScreenWidth; + cNewScreenHeight := cScreenHeight; + cScreenResizeDelay := 0; LuaGoals:= ''; + cMapName:= ''; LuaTemplateNumber:= 0; hiddenHedgehogsNumber:=0; @@ -2685,27 +2735,6 @@ procedure freeModule; begin - // re-init flags so they will always contain safe values - cScreenWidth := 1024; - cScreenHeight := 768; - cBits := 32; - ipcPort := 0; - cFullScreen := false; - cLocaleFName := 'en.txt'; - cTimerInterval := 8; - PathPrefix := './'; - UserPathPrefix := './'; - cShowFPS := false; - cFlattenFlakes := false; - cFlattenClouds := false; - cAltDamage := true; - cReducedQuality := rqNone; - UserNick := ''; - recordFileName := ''; - cScriptName := ''; - cReadyDelay := 5000; - cStereoMode := smNone; - GrayScale := false; end; end. diff -r 3331b30e4ef1 -r 88fde28bbda6 hedgewars/uVideoRec.pas --- a/hedgewars/uVideoRec.pas Sun Oct 21 01:28:33 2012 +0400 +++ b/hedgewars/uVideoRec.pas Sat Nov 03 00:34:35 2012 +0400 @@ -30,6 +30,11 @@ {$IFNDEF WIN32} {$LINKLIB ../bin/libavwrapper.a} {$ENDIF} +{$IFDEF DARWIN} + {$LINKLIB bz2} + {$LINKFRAMEWORK CoreVideo} + {$LINKFRAMEWORK VideoDecodeAcceleration} +{$ENDIF} interface @@ -44,6 +49,7 @@ procedure StopPreRecording; procedure SaveCameraPosition; +procedure initModule; procedure freeModule; implementation @@ -96,23 +102,26 @@ // store some description in output file desc:= ''; if UserNick <> '' then - desc+= 'Player: ' + UserNick + #10; + desc:= desc + 'Player: ' + UserNick + #10; if recordFileName <> '' then - desc+= 'Record: ' + recordFileName + #10; + desc:= desc + 'Record: ' + recordFileName + #10; if cMapName <> '' then - desc+= 'Map: ' + cMapName + #10; + desc:= desc + 'Map: ' + cMapName + #10; if Theme <> '' then - desc+= 'Theme: ' + Theme + #10; - desc+= 'prefix[' + RecPrefix + ']prefix'; - desc+= #0; + desc:= desc + 'Theme: ' + Theme + #10; + desc:= desc + 'prefix[' + RecPrefix + ']prefix'; + + filename:= UserPathPrefix + '/VideoTemp/' + RecPrefix; + soundFilePath:= UserPathPrefix + '/VideoTemp/' + RecPrefix + '.sw'; - filename:= UserPathPrefix + '/VideoTemp/' + RecPrefix + #0; - soundFilePath:= UserPathPrefix + '/VideoTemp/' + RecPrefix + '.sw' + #0; - cAVFormat+= #0; - cAudioCodec+= #0; - cVideoCodec+= #0; - AVWrapper_Init(@AddFileLogRaw, @filename[1], @desc[1], @soundFilePath[1], @cAVFormat[1], @cVideoCodec[1], @cAudioCodec[1], - cScreenWidth, cScreenHeight, cVideoFramerateNum, cVideoFramerateDen, cVideoQuality); + AVWrapper_Init(@AddFileLogRaw + , PChar(ansistring(filename)) + , PChar(ansistring(desc)) + , PChar(ansistring(soundFilePath)) + , PChar(ansistring(cAVFormat)) + , PChar(ansistring(cVideoCodec)) + , PChar(ansistring(cAudioCodec)) + , cScreenWidth, cScreenHeight, cVideoFramerateNum, cVideoFramerateDen, cVideoQuality); numPixels:= cScreenWidth*cScreenHeight; YCbCr_Planes[0]:= GetMem(numPixels); @@ -358,6 +367,10 @@ BlockWrite(cameraFile, frame, 1); end; +procedure initModule; +begin +end; + procedure freeModule; begin if flagPrerecording then diff -r 3331b30e4ef1 -r 88fde28bbda6 hedgewars/uVisualGears.pas --- a/hedgewars/uVisualGears.pas Sun Oct 21 01:28:33 2012 +0400 +++ b/hedgewars/uVisualGears.pas Sat Nov 03 00:34:35 2012 +0400 @@ -987,10 +987,10 @@ else vg:= vg^.NextGear; end; if ((GameFlags and gfBorder) <> 0) or ((Theme <> 'Snow') and (Theme <> 'Christmas')) then - for i:= 0 to Pred(vobSDCount * cScreenSpace div LAND_WIDTH) do + for i:= 0 to Pred(vobSDCount * cScreenSpace div 4096) do AddVisualGear(cLeftScreenBorder + random(cScreenSpace), random(1024+200) - 100 + LAND_HEIGHT, vgtFlake) else - for i:= 0 to Pred((vobSDCount * cScreenSpace div LAND_WIDTH) div 3) do + for i:= 0 to Pred((vobSDCount * cScreenSpace div 4096) div 3) do AddVisualGear(cLeftScreenBorder + random(cScreenSpace), random(1024+200) - 100 + LAND_HEIGHT, vgtFlake); end; diff -r 3331b30e4ef1 -r 88fde28bbda6 hedgewars/uWorld.pas --- a/hedgewars/uWorld.pas Sun Oct 21 01:28:33 2012 +0400 +++ b/hedgewars/uWorld.pas Sat Nov 03 00:34:35 2012 +0400 @@ -629,11 +629,7 @@ Pos:= -1; Slot:= -1; {$IFDEF USE_LANDSCAPE_AMMOMENU} - {$IFDEF USE_AM_NUMCOLUMN} -c:= 0; - {$ELSE} c:= -1; - {$ENDIF} for i:= 0 to cMaxSlotIndex do if ((i = 0) and (Ammo^[i, 1].Count > 0)) or ((i <> 0) and (Ammo^[i, 0].Count > 0)) then begin @@ -647,8 +643,8 @@ if (Ammo^[i, t].Count > 0) and (Ammo^[i, t].AmmoType <> amNothing) then begin if (CursorPoint.Y <= (cScreenHeight - AmmoRect.y) - ( g * (AMSlotSize+1))) and - (CursorPoint.Y >= (cScreenHeight - AmmoRect.y) - ((g+1) * (AMSlotSize+1))) and - (CursorPoint.X >= AmmoRect.x + ( c * (AMSlotSize+1))) and + (CursorPoint.Y > (cScreenHeight - AmmoRect.y) - ((g+1) * (AMSlotSize+1))) and + (CursorPoint.X > AmmoRect.x + ( c * (AMSlotSize+1))) and (CursorPoint.X <= AmmoRect.x + ((c+1) * (AMSlotSize+1))) then begin Slot:= i; @@ -663,11 +659,7 @@ end; end; {$ELSE} - {$IFDEF USE_AM_NUMCOLUMN} c:= -1; - {$ELSE} -c:= 0; - {$ENDIF} for i:= 0 to cMaxSlotIndex do if ((i = 0) and (Ammo^[i, 1].Count > 0)) or ((i <> 0) and (Ammo^[i, 0].Count > 0)) then begin @@ -681,8 +673,8 @@ if (Ammo^[i, t].Count > 0) and (Ammo^[i, t].AmmoType <> amNothing) then begin if (CursorPoint.Y <= (cScreenHeight - AmmoRect.y) - ( c * (AMSlotSize+1))) and - (CursorPoint.Y >= (cScreenHeight - AmmoRect.y) - ((c+1) * (AMSlotSize+1))) and - (CursorPoint.X >= AmmoRect.x + ( g * (AMSlotSize+1))) and + (CursorPoint.Y > (cScreenHeight - AmmoRect.y) - ((c+1) * (AMSlotSize+1))) and + (CursorPoint.X > AmmoRect.x + ( g * (AMSlotSize+1))) and (CursorPoint.X <= AmmoRect.x + ((g+1) * (AMSlotSize+1))) then begin Slot:= i; @@ -1168,28 +1160,6 @@ DrawWater(255, 0); -// Attack bar - if CurrentTeam <> nil then - case AttackBar of -(* 1: begin - r:= StuffPoz[sPowerBar]; - {$WARNINGS OFF} - r.w:= (CurrentHedgehog^.Gear^.Power * 256) div cPowerDivisor; - {$WARNINGS ON} - DrawSpriteFromRect(r, cScreenWidth - 272, cScreenHeight - 48, 16, 0, Surface); - end;*) - 2: with CurrentHedgehog^ do - begin - tdx:= hwSign(Gear^.dX) * Sin(Gear^.Angle * Pi / cMaxAngle); - tdy:= - Cos(Gear^.Angle * Pi / cMaxAngle); - for i:= (Gear^.Power * 24) div cPowerDivisor downto 0 do - DrawSprite(sprPower, - hwRound(Gear^.X) + GetLaunchX(CurAmmoType, hwSign(Gear^.dX), Gear^.Angle) + LongInt(round(WorldDx + tdx * (24 + i * 2))) - 16, - hwRound(Gear^.Y) + GetLaunchY(CurAmmoType, Gear^.Angle) + LongInt(round(WorldDy + tdy * (24 + i * 2))) - 16, - i) - end - end; - DrawVisualGears(1); DrawGears; DrawVisualGears(6); @@ -1616,6 +1586,29 @@ SetScale(zoom); +// Attack bar + if CurrentTeam <> nil then + case AttackBar of +(* 1: begin + r:= StuffPoz[sPowerBar]; + {$WARNINGS OFF} + r.w:= (CurrentHedgehog^.Gear^.Power * 256) div cPowerDivisor; + {$WARNINGS ON} + DrawSpriteFromRect(r, cScreenWidth - 272, cScreenHeight - 48, 16, 0, Surface); + end;*) + 2: with CurrentHedgehog^ do + begin + tdx:= hwSign(Gear^.dX) * Sin(Gear^.Angle * Pi / cMaxAngle); + tdy:= - Cos(Gear^.Angle * Pi / cMaxAngle); + for i:= (Gear^.Power * 24) div cPowerDivisor downto 0 do + DrawSprite(sprPower, + hwRound(Gear^.X) + GetLaunchX(CurAmmoType, hwSign(Gear^.dX), Gear^.Angle) + LongInt(round(WorldDx + tdx * (24 + i * 2))) - 16, + hwRound(Gear^.Y) + GetLaunchY(CurAmmoType, Gear^.Angle) + LongInt(round(WorldDy + tdy * (24 + i * 2))) - 16, + i) + end + end; + + // Cursor if isCursorVisible then begin @@ -1640,7 +1633,7 @@ var PrevSentPointTime: LongWord = 0; procedure MoveCamera; -var EdgesDist, wdy, shs,z: LongInt; +var EdgesDist, wdy, shs,z, amNumOffsetX, amNumOffsetY: LongInt; begin {$IFNDEF MOBILE} if (not (CurrentTeam^.ExtDriven and isCursorVisible and (not bShowAmmoMenu))) and cHasFocus and (GameState <> gsConfirm) then @@ -1672,14 +1665,30 @@ if (AMState = AMShowingUp) or (AMState = AMShowing) then begin - if CursorPoint.X < AmmoRect.x then//check left - CursorPoint.X:= AmmoRect.x; - if CursorPoint.X > AmmoRect.x + AmmoRect.w then//check right - CursorPoint.X:= AmmoRect.x + AmmoRect.w; - if CursorPoint.Y > cScreenHeight - AmmoRect.y then//check top - CursorPoint.Y:= cScreenHeight - AmmoRect.y; - if CursorPoint.Y < cScreenHeight - (AmmoRect.y + AmmoRect.h - AMSlotSize - 2) then//check bottom - CursorPoint.Y:= cScreenHeight - (AmmoRect.y + AmmoRect.h - AMSlotSize - 2); +{$IFDEF USE_LANDSCAPE_AMMOMENU} + amNumOffsetX:= 0; + {$IFDEF USE_AM_NUMCOLUMN} + amNumOffsetY:= AMSlotSize; + {$ELSE} + amNumOffsetY:= 0; + {$ENDIF} +{$ELSE} + amNumOffsetY:= 0; + {$IFDEF USE_AM_NUMCOLUMN} + amNumOffsetX:= AMSlotSize; + {$ELSE} + amNumOffsetX:= 0; + {$ENDIF} + +{$ENDIF} + if CursorPoint.X < AmmoRect.x + amNumOffsetX + 3 then//check left + CursorPoint.X:= AmmoRect.x + amNumOffsetX + 3; + if CursorPoint.X > AmmoRect.x + AmmoRect.w - 3 then//check right + CursorPoint.X:= AmmoRect.x + AmmoRect.w - 3; + if CursorPoint.Y > cScreenHeight - AmmoRect.y -amNumOffsetY - 1 then//check top + CursorPoint.Y:= cScreenHeight - AmmoRect.y - amNumOffsetY - 1; + if CursorPoint.Y < cScreenHeight - (AmmoRect.y + AmmoRect.h - AMSlotSize - 5) then//check bottom + CursorPoint.Y:= cScreenHeight - (AmmoRect.y + AmmoRect.h - AMSlotSize - 5); prevPoint:= CursorPoint; //if cHasFocus then SDL_WarpMouse(CursorPoint.X + cScreenWidth div 2, cScreenHeight - CursorPoint.Y); exit @@ -1793,6 +1802,10 @@ begin if (not cHasFocus) and (GameState <> gsConfirm) then ParseCommand('quit', true); +{$IFDEF MOBILE} +// when created SDL receives an exposure event that calls UndampenAudio at full power, muting audio +exit; +{$ENDIF} {$IFDEF USE_VIDEO_RECORDING} // do not change volume during prerecording as it will affect sound in video file @@ -1880,19 +1893,12 @@ stereoDepth:= 0; AMState:= AMHidden; isFirstFrame:= true; + stereoDepth:= stereoDepth; // avoid hint end; procedure freeModule; begin - stereoDepth:= stereoDepth; // avoid hint - FreeTexture(fpsTexture); - fpsTexture:= nil; - FreeTexture(timeTexture); - timeTexture:= nil; - FreeTexture(missionTex); - missionTex:= nil; - FreeTexture(recTexture); - recTexture:= nil; + ResetWorldTex(); end; end. diff -r 3331b30e4ef1 -r 88fde28bbda6 misc/libtremor/Android.mk --- a/misc/libtremor/Android.mk Sun Oct 21 01:28:33 2012 +0400 +++ b/misc/libtremor/Android.mk Sat Nov 03 00:34:35 2012 +0400 @@ -7,12 +7,21 @@ LOCAL_CFLAGS := -I$(LOCAL_PATH) -DHAVE_ALLOCA_H LOCAL_SRC_FILES = \ - tremor/bitwise.c tremor/info.c tremor/codebook.c \ - tremor/dsp.c tremor/mapping0.c \ - tremor/floor0.c tremor/mdct.c \ - tremor/floor1.c tremor/misc.c \ - tremor/floor_lookup.c tremor/res012.c \ - tremor/framing.c tremor/vorbisfile.c + tremor/bitwise.c \ + tremor/block.c \ + tremor/codebook.c \ + tremor/floor0.c \ + tremor/floor1.c \ + tremor/framing.c \ + tremor/info.c \ + tremor/mapping0.c \ + tremor/mdct.c \ + tremor/registry.c \ + tremor/res012.c \ + tremor/sharedbook.c \ + tremor/synthesis.c \ + tremor/vorbisfile.c \ + tremor/window.c include $(BUILD_STATIC_LIBRARY) diff -r 3331b30e4ef1 -r 88fde28bbda6 misc/libtremor/README --- a/misc/libtremor/README Sun Oct 21 01:28:33 2012 +0400 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,12 +0,0 @@ -Tremor README - -[0] http://svn.xiph.org/trunk/Tremor/ -Original Tremor implementation, used in Hedgewars until the Tremor devteam branched the internal Ogg implementation. -More details: http://lists.xiph.org/pipermail/tremor/2010-August/001650.html - -[1] http://svn.xiph.org/branches/lowmem-no-byte/Tremor/ -A Tremor variant, suited for low memory devices, still contains an Ogg implementation, used in Hedgewars. - -[2] http://svn.xiph.org/branches/lowmem-branch/Tremolo/ -An interesting Tremor variant with a lot of ARM optimisations. - diff -r 3331b30e4ef1 -r 88fde28bbda6 misc/libtremor/Xcode/Tremor.xcodeproj/project.pbxproj --- a/misc/libtremor/Xcode/Tremor.xcodeproj/project.pbxproj Sun Oct 21 01:28:33 2012 +0400 +++ b/misc/libtremor/Xcode/Tremor.xcodeproj/project.pbxproj Sat Nov 03 00:34:35 2012 +0400 @@ -8,7 +8,10 @@ /* Begin PBXBuildFile section */ 61DB1809148BA9A9004A67B8 /* asm_arm.h in Headers */ = {isa = PBXBuildFile; fileRef = 61DB17E7148BA9A9004A67B8 /* asm_arm.h */; }; + 61DB180A148BA9A9004A67B8 /* backends.h in Headers */ = {isa = PBXBuildFile; fileRef = 61DB17E8148BA9A9004A67B8 /* backends.h */; }; 61DB180B148BA9A9004A67B8 /* bitwise.c in Sources */ = {isa = PBXBuildFile; fileRef = 61DB17E9148BA9A9004A67B8 /* bitwise.c */; }; + 61DB180C148BA9A9004A67B8 /* block.c in Sources */ = {isa = PBXBuildFile; fileRef = 61DB17EA148BA9A9004A67B8 /* block.c */; }; + 61DB180D148BA9A9004A67B8 /* block.h in Headers */ = {isa = PBXBuildFile; fileRef = 61DB17EB148BA9A9004A67B8 /* block.h */; }; 61DB180E148BA9A9004A67B8 /* codebook.c in Sources */ = {isa = PBXBuildFile; fileRef = 61DB17EC148BA9A9004A67B8 /* codebook.c */; }; 61DB180F148BA9A9004A67B8 /* codebook.h in Headers */ = {isa = PBXBuildFile; fileRef = 61DB17ED148BA9A9004A67B8 /* codebook.h */; }; 61DB1810148BA9A9004A67B8 /* codec_internal.h in Headers */ = {isa = PBXBuildFile; fileRef = 61DB17EE148BA9A9004A67B8 /* codec_internal.h */; }; @@ -28,19 +31,25 @@ 61DB181F148BA9A9004A67B8 /* ogg.h in Headers */ = {isa = PBXBuildFile; fileRef = 61DB17FD148BA9A9004A67B8 /* ogg.h */; }; 61DB1820148BA9A9004A67B8 /* os_types.h in Headers */ = {isa = PBXBuildFile; fileRef = 61DB17FE148BA9A9004A67B8 /* os_types.h */; }; 61DB1821148BA9A9004A67B8 /* os.h in Headers */ = {isa = PBXBuildFile; fileRef = 61DB17FF148BA9A9004A67B8 /* os.h */; }; + 61DB1822148BA9A9004A67B8 /* registry.c in Sources */ = {isa = PBXBuildFile; fileRef = 61DB1800148BA9A9004A67B8 /* registry.c */; }; + 61DB1823148BA9A9004A67B8 /* registry.h in Headers */ = {isa = PBXBuildFile; fileRef = 61DB1801148BA9A9004A67B8 /* registry.h */; }; 61DB1824148BA9A9004A67B8 /* res012.c in Sources */ = {isa = PBXBuildFile; fileRef = 61DB1802148BA9A9004A67B8 /* res012.c */; }; + 61DB1825148BA9A9004A67B8 /* sharedbook.c in Sources */ = {isa = PBXBuildFile; fileRef = 61DB1803148BA9A9004A67B8 /* sharedbook.c */; }; + 61DB1826148BA9A9004A67B8 /* synthesis.c in Sources */ = {isa = PBXBuildFile; fileRef = 61DB1804148BA9A9004A67B8 /* synthesis.c */; }; 61DB1827148BA9A9004A67B8 /* vorbisfile.c in Sources */ = {isa = PBXBuildFile; fileRef = 61DB1805148BA9A9004A67B8 /* vorbisfile.c */; }; 61DB1828148BA9A9004A67B8 /* window_lookup.h in Headers */ = {isa = PBXBuildFile; fileRef = 61DB1806148BA9A9004A67B8 /* window_lookup.h */; }; - 61E1A173160BCA4F002370D0 /* dsp.c in Sources */ = {isa = PBXBuildFile; fileRef = 61E1A170160BCA4F002370D0 /* dsp.c */; }; - 61E1A174160BCA4F002370D0 /* floor_lookup.c in Sources */ = {isa = PBXBuildFile; fileRef = 61E1A171160BCA4F002370D0 /* floor_lookup.c */; }; - 61E1A175160BCA4F002370D0 /* misc.c in Sources */ = {isa = PBXBuildFile; fileRef = 61E1A172160BCA4F002370D0 /* misc.c */; }; + 61DB1829148BA9A9004A67B8 /* window.c in Sources */ = {isa = PBXBuildFile; fileRef = 61DB1807148BA9A9004A67B8 /* window.c */; }; + 61DB182A148BA9A9004A67B8 /* window.h in Headers */ = {isa = PBXBuildFile; fileRef = 61DB1808148BA9A9004A67B8 /* window.h */; }; AA747D9F0F9514B9006C5449 /* Tremor_Prefix.pch in Headers */ = {isa = PBXBuildFile; fileRef = AA747D9E0F9514B9006C5449 /* Tremor_Prefix.pch */; }; AACBBE4A0F95108600F1A2B1 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = AACBBE490F95108600F1A2B1 /* Foundation.framework */; }; /* End PBXBuildFile section */ /* Begin PBXFileReference section */ 61DB17E7148BA9A9004A67B8 /* asm_arm.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = asm_arm.h; path = ../tremor/asm_arm.h; sourceTree = SOURCE_ROOT; }; + 61DB17E8148BA9A9004A67B8 /* backends.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = backends.h; path = ../tremor/backends.h; sourceTree = SOURCE_ROOT; }; 61DB17E9148BA9A9004A67B8 /* bitwise.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = bitwise.c; path = ../tremor/bitwise.c; sourceTree = SOURCE_ROOT; }; + 61DB17EA148BA9A9004A67B8 /* block.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = block.c; path = ../tremor/block.c; sourceTree = SOURCE_ROOT; }; + 61DB17EB148BA9A9004A67B8 /* block.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = block.h; path = ../tremor/block.h; sourceTree = SOURCE_ROOT; }; 61DB17EC148BA9A9004A67B8 /* codebook.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = codebook.c; path = ../tremor/codebook.c; sourceTree = SOURCE_ROOT; }; 61DB17ED148BA9A9004A67B8 /* codebook.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = codebook.h; path = ../tremor/codebook.h; sourceTree = SOURCE_ROOT; }; 61DB17EE148BA9A9004A67B8 /* codec_internal.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = codec_internal.h; path = ../tremor/codec_internal.h; sourceTree = SOURCE_ROOT; }; @@ -60,12 +69,15 @@ 61DB17FD148BA9A9004A67B8 /* ogg.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = ogg.h; path = ../tremor/ogg.h; sourceTree = SOURCE_ROOT; }; 61DB17FE148BA9A9004A67B8 /* os_types.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = os_types.h; path = ../tremor/os_types.h; sourceTree = SOURCE_ROOT; }; 61DB17FF148BA9A9004A67B8 /* os.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = os.h; path = ../tremor/os.h; sourceTree = SOURCE_ROOT; }; + 61DB1800148BA9A9004A67B8 /* registry.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = registry.c; path = ../tremor/registry.c; sourceTree = SOURCE_ROOT; }; + 61DB1801148BA9A9004A67B8 /* registry.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = registry.h; path = ../tremor/registry.h; sourceTree = SOURCE_ROOT; }; 61DB1802148BA9A9004A67B8 /* res012.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = res012.c; path = ../tremor/res012.c; sourceTree = SOURCE_ROOT; }; + 61DB1803148BA9A9004A67B8 /* sharedbook.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = sharedbook.c; path = ../tremor/sharedbook.c; sourceTree = SOURCE_ROOT; }; + 61DB1804148BA9A9004A67B8 /* synthesis.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = synthesis.c; path = ../tremor/synthesis.c; sourceTree = SOURCE_ROOT; }; 61DB1805148BA9A9004A67B8 /* vorbisfile.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = vorbisfile.c; path = ../tremor/vorbisfile.c; sourceTree = SOURCE_ROOT; }; 61DB1806148BA9A9004A67B8 /* window_lookup.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = window_lookup.h; path = ../tremor/window_lookup.h; sourceTree = SOURCE_ROOT; }; - 61E1A170160BCA4F002370D0 /* dsp.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = dsp.c; path = ../tremor/dsp.c; sourceTree = SOURCE_ROOT; }; - 61E1A171160BCA4F002370D0 /* floor_lookup.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = floor_lookup.c; path = ../tremor/floor_lookup.c; sourceTree = SOURCE_ROOT; }; - 61E1A172160BCA4F002370D0 /* misc.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = misc.c; path = ../tremor/misc.c; sourceTree = SOURCE_ROOT; }; + 61DB1807148BA9A9004A67B8 /* window.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = window.c; path = ../tremor/window.c; sourceTree = SOURCE_ROOT; }; + 61DB1808148BA9A9004A67B8 /* window.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = window.h; path = ../tremor/window.h; sourceTree = SOURCE_ROOT; }; AA747D9E0F9514B9006C5449 /* Tremor_Prefix.pch */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Tremor_Prefix.pch; sourceTree = SOURCE_ROOT; }; AACBBE490F95108600F1A2B1 /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = System/Library/Frameworks/Foundation.framework; sourceTree = SDKROOT; }; D2AAC07E0554694100DB518D /* libTremor.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = libTremor.a; sourceTree = BUILT_PRODUCTS_DIR; }; @@ -113,11 +125,11 @@ 08FB77AEFE84172EC02AAC07 /* Sources */ = { isa = PBXGroup; children = ( - 61E1A170160BCA4F002370D0 /* dsp.c */, - 61E1A171160BCA4F002370D0 /* floor_lookup.c */, - 61E1A172160BCA4F002370D0 /* misc.c */, 61DB17E7148BA9A9004A67B8 /* asm_arm.h */, + 61DB17E8148BA9A9004A67B8 /* backends.h */, 61DB17E9148BA9A9004A67B8 /* bitwise.c */, + 61DB17EA148BA9A9004A67B8 /* block.c */, + 61DB17EB148BA9A9004A67B8 /* block.h */, 61DB17EC148BA9A9004A67B8 /* codebook.c */, 61DB17ED148BA9A9004A67B8 /* codebook.h */, 61DB17EE148BA9A9004A67B8 /* codec_internal.h */, @@ -137,9 +149,15 @@ 61DB17FD148BA9A9004A67B8 /* ogg.h */, 61DB17FE148BA9A9004A67B8 /* os_types.h */, 61DB17FF148BA9A9004A67B8 /* os.h */, + 61DB1800148BA9A9004A67B8 /* registry.c */, + 61DB1801148BA9A9004A67B8 /* registry.h */, 61DB1802148BA9A9004A67B8 /* res012.c */, + 61DB1803148BA9A9004A67B8 /* sharedbook.c */, + 61DB1804148BA9A9004A67B8 /* synthesis.c */, 61DB1805148BA9A9004A67B8 /* vorbisfile.c */, 61DB1806148BA9A9004A67B8 /* window_lookup.h */, + 61DB1807148BA9A9004A67B8 /* window.c */, + 61DB1808148BA9A9004A67B8 /* window.h */, ); name = Sources; sourceTree = ""; @@ -161,6 +179,8 @@ files = ( AA747D9F0F9514B9006C5449 /* Tremor_Prefix.pch in Headers */, 61DB1809148BA9A9004A67B8 /* asm_arm.h in Headers */, + 61DB180A148BA9A9004A67B8 /* backends.h in Headers */, + 61DB180D148BA9A9004A67B8 /* block.h in Headers */, 61DB180F148BA9A9004A67B8 /* codebook.h in Headers */, 61DB1810148BA9A9004A67B8 /* codec_internal.h in Headers */, 61DB1811148BA9A9004A67B8 /* config_types.h in Headers */, @@ -173,7 +193,9 @@ 61DB181F148BA9A9004A67B8 /* ogg.h in Headers */, 61DB1820148BA9A9004A67B8 /* os_types.h in Headers */, 61DB1821148BA9A9004A67B8 /* os.h in Headers */, + 61DB1823148BA9A9004A67B8 /* registry.h in Headers */, 61DB1828148BA9A9004A67B8 /* window_lookup.h in Headers */, + 61DB182A148BA9A9004A67B8 /* window.h in Headers */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -228,6 +250,7 @@ buildActionMask = 2147483647; files = ( 61DB180B148BA9A9004A67B8 /* bitwise.c in Sources */, + 61DB180C148BA9A9004A67B8 /* block.c in Sources */, 61DB180E148BA9A9004A67B8 /* codebook.c in Sources */, 61DB1812148BA9A9004A67B8 /* floor0.c in Sources */, 61DB1813148BA9A9004A67B8 /* floor1.c in Sources */, @@ -235,11 +258,12 @@ 61DB1815148BA9A9004A67B8 /* info.c in Sources */, 61DB181A148BA9A9004A67B8 /* mapping0.c in Sources */, 61DB181C148BA9A9004A67B8 /* mdct.c in Sources */, + 61DB1822148BA9A9004A67B8 /* registry.c in Sources */, 61DB1824148BA9A9004A67B8 /* res012.c in Sources */, + 61DB1825148BA9A9004A67B8 /* sharedbook.c in Sources */, + 61DB1826148BA9A9004A67B8 /* synthesis.c in Sources */, 61DB1827148BA9A9004A67B8 /* vorbisfile.c in Sources */, - 61E1A173160BCA4F002370D0 /* dsp.c in Sources */, - 61E1A174160BCA4F002370D0 /* floor_lookup.c in Sources */, - 61E1A175160BCA4F002370D0 /* misc.c in Sources */, + 61DB1829148BA9A9004A67B8 /* window.c in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; diff -r 3331b30e4ef1 -r 88fde28bbda6 misc/libtremor/tremor/Makefile.am --- a/misc/libtremor/tremor/Makefile.am Sun Oct 21 01:28:33 2012 +0400 +++ b/misc/libtremor/tremor/Makefile.am Sat Nov 03 00:34:35 2012 +0400 @@ -2,19 +2,17 @@ INCLUDES = -I./ -pkgconfigdir = $(libdir)/pkgconfig -pkgconfig_DATA = vorbisidec.pc - lib_LTLIBRARIES = libvorbisidec.la -libvorbisidec_la_SOURCES = mdct.c dsp.c info.c misc.c \ +libvorbisidec_la_SOURCES = mdct.c block.c window.c \ + synthesis.c info.c \ floor1.c floor0.c vorbisfile.c \ - res012.c mapping0.c codebook.c \ - framing.c bitwise.c \ + res012.c mapping0.c registry.c codebook.c \ + sharedbook.c framing.c bitwise.c \ codebook.h misc.h mdct_lookup.h\ - os.h mdct.h ivorbisfile.h lsp_lookup.h\ - window_lookup.h floor_lookup.c \ - codec_internal.h ogg.h \ + os.h mdct.h block.h ivorbisfile.h lsp_lookup.h\ + registry.h window.h window_lookup.h\ + codec_internal.h backends.h ogg.h \ asm_arm.h ivorbiscodec.h libvorbisidec_la_LDFLAGS = -version-info @V_LIB_CURRENT@:@V_LIB_REVISION@:@V_LIB_AGE@ @@ -29,8 +27,6 @@ include_HEADERS = ivorbiscodec.h ivorbisfile.h ogg.h os_types.h config_types.h -EXTRA_DIST = vorbisidec.pc.in - example: -ln -fs . vorbis $(MAKE) ivorbisfile_example diff -r 3331b30e4ef1 -r 88fde28bbda6 misc/libtremor/tremor/autogen.sh --- a/misc/libtremor/tremor/autogen.sh Sun Oct 21 01:28:33 2012 +0400 +++ b/misc/libtremor/tremor/autogen.sh Sat Nov 03 00:34:35 2012 +0400 @@ -2,14 +2,16 @@ # Run this to set up the build system: configure, makefiles, etc. # (based on the version in enlightenment's cvs) -package="vorbisidec" +package="vorbisdec" +olddir=`pwd` srcdir=`dirname $0` test -z "$srcdir" && srcdir=. cd "$srcdir" DIE=0 +echo "checking for autoconf... " (autoconf --version) < /dev/null > /dev/null 2>&1 || { echo echo "You must have autoconf installed to compile $package." @@ -18,16 +20,72 @@ DIE=1 } -(automake --version) < /dev/null > /dev/null 2>&1 || { +VERSIONGREP="sed -e s/.*[^0-9\.]\([0-9]\.[0-9]\).*/\1/" +VERSIONMKINT="sed -e s/[^0-9]//" + +# do we need automake? +if test -r Makefile.am; then + AM_OPTIONS=`fgrep AUTOMAKE_OPTIONS Makefile.am` + AM_NEEDED=`echo $AM_OPTIONS | $VERSIONGREP` + if test x"$AM_NEEDED" = "x$AM_OPTIONS"; then + AM_NEEDED="" + fi + if test -z $AM_NEEDED; then + echo -n "checking for automake... " + AUTOMAKE=automake + ACLOCAL=aclocal + if ($AUTOMAKE --version < /dev/null > /dev/null 2>&1); then + echo "yes" + else + echo "no" + AUTOMAKE= + fi + else + echo -n "checking for automake $AM_NEEDED or later... " + for am in automake-$AM_NEEDED automake$AM_NEEDED automake; do + ($am --version < /dev/null > /dev/null 2>&1) || continue + ver=`$am --version < /dev/null | head -n 1 | $VERSIONGREP | $VERSIONMKINT` + verneeded=`echo $AM_NEEDED | $VERSIONMKINT` + if test $ver -ge $verneeded; then + AUTOMAKE=$am + echo $AUTOMAKE + break + fi + done + test -z $AUTOMAKE && echo "no" + echo -n "checking for aclocal $AM_NEEDED or later... " + for ac in aclocal-$AM_NEEDED aclocal$AM_NEEDED aclocal; do + ($ac --version < /dev/null > /dev/null 2>&1) || continue + ver=`$ac --version < /dev/null | head -n 1 | $VERSIONGREP | $VERSIONMKINT` + verneeded=`echo $AM_NEEDED | $VERSIONMKINT` + if test $ver -ge $verneeded; then + ACLOCAL=$ac + echo $ACLOCAL + break + fi + done + test -z $ACLOCAL && echo "no" + fi + test -z $AUTOMAKE || test -z $ACLOCAL && { echo echo "You must have automake installed to compile $package." - echo "Download the appropriate package for your system," - echo "or get the source from one of the GNU ftp sites" - echo "listed in http://www.gnu.org/order/ftp.html" - DIE=1 -} + echo "Download the appropriate package for your distribution," + echo "or get the source tarball at ftp://ftp.gnu.org/pub/gnu/" + exit 1 + } +fi -(libtool --version) < /dev/null > /dev/null 2>&1 || { +echo -n "checking for libtool... " +for LIBTOOLIZE in libtoolize glibtoolize nope; do + ($LIBTOOLIZE --version) < /dev/null > /dev/null 2>&1 && break +done +if test x$LIBTOOLIZE = xnope; then + echo "nope." + LIBTOOLIZE=libtoolize +else + echo $LIBTOOLIZE +fi +($LIBTOOLIZE --version) < /dev/null > /dev/null 2>&1 || { echo echo "You must have libtool installed to compile $package." echo "Download the appropriate package for your system," @@ -47,15 +105,16 @@ echo "Generating configuration files for $package, please wait...." -echo " aclocal $ACLOCAL_FLAGS" -aclocal $ACLOCAL_FLAGS || exit 1 +echo " $ACLOCAL $ACLOCAL_FLAGS" +$ACLOCAL $ACLOCAL_FLAGS || exit 1 +echo " $LIBTOOLIZE --automake" +$LIBTOOLIZE --automake || exit 1 echo " autoheader" autoheader || exit 1 -echo " libtoolize --automake" -libtoolize --automake || exit 1 -echo " automake --add-missing $AUTOMAKE_FLAGS" -automake --add-missing $AUTOMAKE_FLAGS || exit 1 +echo " $AUTOMAKE --add-missing $AUTOMAKE_FLAGS" +$AUTOMAKE --add-missing $AUTOMAKE_FLAGS || exit 1 echo " autoconf" autoconf || exit 1 -$srcdir/configure "$@" && echo +cd $olddir +$srcdir/configure --enable-maintainer-mode "$@" && echo diff -r 3331b30e4ef1 -r 88fde28bbda6 misc/libtremor/tremor/bitwise.c --- a/misc/libtremor/tremor/bitwise.c Sun Oct 21 01:28:33 2012 +0400 +++ b/misc/libtremor/tremor/bitwise.c Sat Nov 03 00:34:35 2012 +0400 @@ -20,7 +20,6 @@ #include #include -#include "misc.h" #include "ogg.h" static unsigned long mask[]= @@ -48,8 +47,8 @@ if(b->head->next){ b->count+=b->head->length; b->head=b->head->next; - b->headptr=b->head->buffer->data+b->head->begin-b->headend; - b->headend+=b->head->length; + b->headptr=b->head->buffer->data+b->head->begin-b->headend; + b->headend+=b->head->length; }else{ /* we've either met the end of decode, or gone past it. halt only if we're past */ @@ -82,7 +81,7 @@ /* Read in bits without advancing the bitptr; bits <= 32 */ long oggpack_look(oggpack_buffer *b,int bits){ unsigned long m=mask[bits]; - unsigned long ret; + unsigned long ret=-1; bits+=b->headbit; @@ -92,22 +91,22 @@ ogg_reference *head=b->head; if(end<0)return -1; - + if(bits){ _lookspan(); ret=*ptr++>>b->headbit; if(bits>8){ --end; _lookspan(); - ret|=*ptr++<<(8-b->headbit); + ret|=*ptr++<<(8-b->headbit); if(bits>16){ --end; _lookspan(); - ret|=*ptr++<<(16-b->headbit); + ret|=*ptr++<<(16-b->headbit); if(bits>24){ --end; _lookspan(); - ret|=*ptr++<<(24-b->headbit); + ret|=*ptr++<<(24-b->headbit); if(bits>32 && b->headbit){ --end; _lookspan(); @@ -147,6 +146,27 @@ if((b->headend-=bits/8)<1)_span(b); } +/* spans forward and finds next byte. Never halts */ +static void _span_one(oggpack_buffer *b){ + while(b->headend<1){ + if(b->head->next){ + b->count+=b->head->length; + b->head=b->head->next; + b->headptr=b->head->buffer->data+b->head->begin; + b->headend=b->head->length; + }else + break; + } +} + +static int _halt_one(oggpack_buffer *b){ + if(b->headend<1){ + _adv_halt(b); + return -1; + } + return 0; +} + int oggpack_eop(oggpack_buffer *b){ if(b->headend<0)return -1; return 0; @@ -154,9 +174,83 @@ /* bits <= 32 */ long oggpack_read(oggpack_buffer *b,int bits){ - long ret=oggpack_look(b,bits); - oggpack_adv(b,bits); - return(ret); + unsigned long m=mask[bits]; + ogg_uint32_t ret=-1; + + bits+=b->headbit; + + if(bits >= b->headend<<3){ + + if(b->headend<0)return -1; + + if(bits){ + if (_halt_one(b)) return -1; + ret=*b->headptr>>b->headbit; + + if(bits>=8){ + ++b->headptr; + --b->headend; + _span_one(b); + if(bits>8){ + if (_halt_one(b)) return -1; + ret|=*b->headptr<<(8-b->headbit); + + if(bits>=16){ + ++b->headptr; + --b->headend; + _span_one(b); + if(bits>16){ + if (_halt_one(b)) return -1; + ret|=*b->headptr<<(16-b->headbit); + + if(bits>=24){ + ++b->headptr; + --b->headend; + _span_one(b); + if(bits>24){ + if (_halt_one(b)) return -1; + ret|=*b->headptr<<(24-b->headbit); + + if(bits>=32){ + ++b->headptr; + --b->headend; + _span_one(b); + if(bits>32){ + if (_halt_one(b)) return -1; + if(b->headbit)ret|=*b->headptr<<(32-b->headbit); + + } + } + } + } + } + } + } + } + } + }else{ + + ret=b->headptr[0]>>b->headbit; + if(bits>8){ + ret|=b->headptr[1]<<(8-b->headbit); + if(bits>16){ + ret|=b->headptr[2]<<(16-b->headbit); + if(bits>24){ + ret|=b->headptr[3]<<(24-b->headbit); + if(bits>32 && b->headbit){ + ret|=b->headptr[4]<<(32-b->headbit); + } + } + } + } + + b->headptr+=bits/8; + b->headend-=bits/8; + } + + ret&=m; + b->headbit=bits&7; + return ret; } long oggpack_bytes(oggpack_buffer *b){ diff -r 3331b30e4ef1 -r 88fde28bbda6 misc/libtremor/tremor/codebook.c --- a/misc/libtremor/tremor/codebook.c Sun Oct 21 01:28:33 2012 +0400 +++ b/misc/libtremor/tremor/codebook.c Sat Nov 03 00:34:35 2012 +0400 @@ -22,324 +22,11 @@ #include "ivorbiscodec.h" #include "codebook.h" #include "misc.h" -#include "os.h" - -/**** pack/unpack helpers ******************************************/ -int _ilog(unsigned int v){ - int ret=0; - while(v){ - ret++; - v>>=1; - } - return(ret); -} - -static ogg_uint32_t decpack(long entry,long used_entry,long quantvals, - codebook *b,oggpack_buffer *opb,int maptype){ - ogg_uint32_t ret=0; - int j; - - switch(b->dec_type){ - - case 0: - return (ogg_uint32_t)entry; - - case 1: - if(maptype==1){ - /* vals are already read into temporary colum vector here */ - for(j=0;jdim;j++){ - ogg_uint32_t off=entry%quantvals; - entry/=quantvals; - ret|=((ogg_uint16_t *)(b->q_val))[off]<<(b->q_bits*j); - } - }else{ - for(j=0;jdim;j++) - ret|=oggpack_read(opb,b->q_bits)<<(b->q_bits*j); - } - return ret; - - case 2: - for(j=0;jdim;j++){ - ogg_uint32_t off=entry%quantvals; - entry/=quantvals; - ret|=off<<(b->q_pack*j); - } - return ret; - - case 3: - return (ogg_uint32_t)used_entry; - - } -} - -/* 32 bit float (not IEEE; nonnormalized mantissa + - biased exponent) : neeeeeee eeemmmmm mmmmmmmm mmmmmmmm - Why not IEEE? It's just not that important here. */ - -static ogg_int32_t _float32_unpack(long val,int *point){ - long mant=val&0x1fffff; - int sign=val&0x80000000; - - *point=((val&0x7fe00000L)>>21)-788; - - if(mant){ - while(!(mant&0x40000000)){ - mant<<=1; - *point-=1; - } - if(sign)mant= -mant; - }else{ - *point=-9999; - } - return mant; -} - -/* choose the smallest supported node size that fits our decode table. - Legal bytewidths are 1/1 1/2 2/2 2/4 4/4 */ -static int _determine_node_bytes(long used, int leafwidth){ - - /* special case small books to size 4 to avoid multiple special - cases in repack */ - if(used<2) - return 4; - - if(leafwidth==3)leafwidth=4; - if(_ilog(3*used-6)+1 <= leafwidth*4) - return leafwidth/2?leafwidth/2:1; - return leafwidth; -} - -/* convenience/clarity; leaves are specified as multiple of node word - size (1 or 2) */ -static int _determine_leaf_words(int nodeb, int leafwidth){ - if(leafwidth>nodeb)return 2; - return 1; -} - -/* given a list of word lengths, number of used entries, and byte - width of a leaf, generate the decode table */ -static int _make_words(char *l,long n,ogg_uint32_t *r,long quantvals, - codebook *b, oggpack_buffer *opb,int maptype){ - long i,j,count=0; - long top=0; - ogg_uint32_t marker[33]; - - if(n<2){ - r[0]=0x80000000; - }else{ - memset(marker,0,sizeof(marker)); - - for(i=0;i>(length-j-1))&1; - if(chase>=top){ - top++; - r[chase*2]=top; - r[chase*2+1]=0; - }else - if(!r[chase*2+bit]) - r[chase*2+bit]=top; - chase=r[chase*2+bit]; - } - { - int bit=(entry>>(length-j-1))&1; - if(chase>=top){ - top++; - r[chase*2+1]=0; - } - r[chase*2+bit]= decpack(i,count++,quantvals,b,opb,maptype) | - 0x80000000; - } - - /* Look to see if the next shorter marker points to the node - above. if so, update it and repeat. */ - for(j=length;j>0;j--){ - if(marker[j]&1){ - marker[j]=marker[j-1]<<1; - break; - } - marker[j]++; - } - - /* prune the tree; the implicit invariant says all the longer - markers were dangling from our just-taken node. Dangle them - from our *new* node. */ - for(j=length+1;j<33;j++) - if((marker[j]>>1) == entry){ - entry=marker[j]; - marker[j]=marker[j-1]<<1; - }else - break; - } - } - } - - return 0; -} - -static int _make_decode_table(codebook *s,char *lengthlist,long quantvals, - oggpack_buffer *opb,int maptype){ - int i; - ogg_uint32_t *work; - - if(s->dec_nodeb==4){ - s->dec_table=_ogg_malloc((s->used_entries*2+1)*sizeof(*work)); - /* +1 (rather than -2) is to accommodate 0 and 1 sized books, - which are specialcased to nodeb==4 */ - if(_make_words(lengthlist,s->entries, - s->dec_table,quantvals,s,opb,maptype))return 1; - - return 0; - } - - work=alloca((s->used_entries*2-2)*sizeof(*work)); - if(_make_words(lengthlist,s->entries,work,quantvals,s,opb,maptype))return 1; - s->dec_table=_ogg_malloc((s->used_entries*(s->dec_leafw+1)-2)* - s->dec_nodeb); - - if(s->dec_leafw==1){ - switch(s->dec_nodeb){ - case 1: - for(i=0;iused_entries*2-2;i++) - ((unsigned char *)s->dec_table)[i]= - ((work[i] & 0x80000000UL) >> 24) | work[i]; - break; - case 2: - for(i=0;iused_entries*2-2;i++) - ((ogg_uint16_t *)s->dec_table)[i]= - ((work[i] & 0x80000000UL) >> 16) | work[i]; - break; - } - - }else{ - /* more complex; we have to do a two-pass repack that updates the - node indexing. */ - long top=s->used_entries*3-2; - if(s->dec_nodeb==1){ - unsigned char *out=(unsigned char *)s->dec_table; - - for(i=s->used_entries*2-4;i>=0;i-=2){ - if(work[i]&0x80000000UL){ - if(work[i+1]&0x80000000UL){ - top-=4; - out[top]=(work[i]>>8 & 0x7f)|0x80; - out[top+1]=(work[i+1]>>8 & 0x7f)|0x80; - out[top+2]=work[i] & 0xff; - out[top+3]=work[i+1] & 0xff; - }else{ - top-=3; - out[top]=(work[i]>>8 & 0x7f)|0x80; - out[top+1]=work[work[i+1]*2]; - out[top+2]=work[i] & 0xff; - } - }else{ - if(work[i+1]&0x80000000UL){ - top-=3; - out[top]=work[work[i]*2]; - out[top+1]=(work[i+1]>>8 & 0x7f)|0x80; - out[top+2]=work[i+1] & 0xff; - }else{ - top-=2; - out[top]=work[work[i]*2]; - out[top+1]=work[work[i+1]*2]; - } - } - work[i]=top; - } - }else{ - ogg_uint16_t *out=(ogg_uint16_t *)s->dec_table; - for(i=s->used_entries*2-4;i>=0;i-=2){ - if(work[i]&0x80000000UL){ - if(work[i+1]&0x80000000UL){ - top-=4; - out[top]=(work[i]>>16 & 0x7fff)|0x8000; - out[top+1]=(work[i+1]>>16 & 0x7fff)|0x8000; - out[top+2]=work[i] & 0xffff; - out[top+3]=work[i+1] & 0xffff; - }else{ - top-=3; - out[top]=(work[i]>>16 & 0x7fff)|0x8000; - out[top+1]=work[work[i+1]*2]; - out[top+2]=work[i] & 0xffff; - } - }else{ - if(work[i+1]&0x80000000UL){ - top-=3; - out[top]=work[work[i]*2]; - out[top+1]=(work[i+1]>>16 & 0x7fff)|0x8000; - out[top+2]=work[i+1] & 0xffff; - }else{ - top-=2; - out[top]=work[work[i]*2]; - out[top+1]=work[work[i+1]*2]; - } - } - work[i]=top; - } - } - } - - return 0; -} - -/* most of the time, entries%dimensions == 0, but we need to be - well defined. We define that the possible vales at each - scalar is values == entries/dim. If entries%dim != 0, we'll - have 'too few' values (values*dimentries); - int vals=b->entries>>((bits-1)*(b->dim-1)/b->dim); - - while(1){ - long acc=1; - long acc1=1; - int i; - for(i=0;idim;i++){ - acc*=vals; - acc1*=vals+1; - } - if(acc<=b->entries && acc1>b->entries){ - return(vals); - }else{ - if(acc>b->entries){ - vals--; - }else{ - vals++; - } - } - } -} - -void vorbis_book_clear(codebook *b){ - /* static book is not cleared; we're likely called on the lookup and - the static codebook belongs to the info struct */ - if(b->q_val)_ogg_free(b->q_val); - if(b->dec_table)_ogg_free(b->dec_table); - - memset(b,0,sizeof(*b)); -} - -int vorbis_book_unpack(oggpack_buffer *opb,codebook *s){ - char *lengthlist=NULL; - int quantvals=0; - long i,j,k; - int maptype; - +/* unpacks a codebook from the packet buffer into the codebook struct, + readies the codebook auxiliary structures for decode *************/ +int vorbis_staticbook_unpack(oggpack_buffer *opb,static_codebook *s){ + long i,j; memset(s,0,sizeof(*s)); /* make sure alignment is correct */ @@ -354,7 +41,7 @@ switch((int)oggpack_read(opb,1)){ case 0: /* unordered */ - lengthlist=(char *)alloca(sizeof(*lengthlist)*s->entries); + s->lengthlist=(long *)_ogg_malloc(sizeof(*s->lengthlist)*s->entries); /* allocated but unused entries? */ if(oggpack_read(opb,1)){ @@ -364,20 +51,16 @@ if(oggpack_read(opb,1)){ long num=oggpack_read(opb,5); if(num==-1)goto _eofout; - lengthlist[i]=num+1; - s->used_entries++; - if(num+1>s->dec_maxlength)s->dec_maxlength=num+1; + s->lengthlist[i]=num+1; }else - lengthlist[i]=0; + s->lengthlist[i]=0; } }else{ /* all entries used; no tagging */ - s->used_entries=s->entries; for(i=0;ientries;i++){ long num=oggpack_read(opb,5); if(num==-1)goto _eofout; - lengthlist[i]=num+1; - if(num+1>s->dec_maxlength)s->dec_maxlength=num+1; + s->lengthlist[i]=num+1; } } @@ -386,16 +69,13 @@ /* ordered */ { long length=oggpack_read(opb,5)+1; + s->lengthlist=(long *)_ogg_malloc(sizeof(*s->lengthlist)*s->entries); - s->used_entries=s->entries; - lengthlist=(char *)alloca(sizeof(*lengthlist)*s->entries); - for(i=0;ientries;){ long num=oggpack_read(opb,_ilog(s->entries-i)); if(num==-1)goto _eofout; for(j=0;jentries;j++,i++) - lengthlist[i]=length; - s->dec_maxlength=length; + s->lengthlist[i]=length; length++; } } @@ -404,155 +84,91 @@ /* EOF */ return(-1); } - - + /* Do we have a mapping to unpack? */ - - if((maptype=oggpack_read(opb,4))>0){ - s->q_min=_float32_unpack(oggpack_read(opb,32),&s->q_minp); - s->q_del=_float32_unpack(oggpack_read(opb,32),&s->q_delp); - s->q_bits=oggpack_read(opb,4)+1; - s->q_seq=oggpack_read(opb,1); - - s->q_del>>=s->q_bits; - s->q_delp+=s->q_bits; - } - - switch(maptype){ + switch((s->maptype=oggpack_read(opb,4))){ case 0: - - /* no mapping; decode type 0 */ - - /* how many bytes for the indexing? */ - /* this is the correct boundary here; we lose one bit to - node/leaf mark */ - s->dec_nodeb=_determine_node_bytes(s->used_entries,_ilog(s->entries)/8+1); - s->dec_leafw=_determine_leaf_words(s->dec_nodeb,_ilog(s->entries)/8+1); - s->dec_type=0; + /* no mapping */ + break; + case 1: case 2: + /* implicitly populated value mapping */ + /* explicitly populated value mapping */ - if(_make_decode_table(s,lengthlist,quantvals,opb,maptype)) goto _errout; - break; - - case 1: - - /* mapping type 1; implicit values by lattice position */ - quantvals=_book_maptype1_quantvals(s); - - /* dec_type choices here are 1,2; 3 doesn't make sense */ - { - /* packed values */ - long total1=(s->q_bits*s->dim+8)/8; /* remember flag bit */ - /* vector of column offsets; remember flag bit */ - long total2=(_ilog(quantvals-1)*s->dim+8)/8+(s->q_bits+7)/8; - - - if(total1<=4 && total1<=total2){ - /* use dec_type 1: vector of packed values */ - - /* need quantized values before */ - s->q_val=alloca(sizeof(ogg_uint16_t)*quantvals); - for(i=0;iq_val)[i]=oggpack_read(opb,s->q_bits); - - if(oggpack_eop(opb)){ - s->q_val=0; /* cleanup must not free alloca memory */ - goto _eofout; - } + s->q_min=oggpack_read(opb,32); + s->q_delta=oggpack_read(opb,32); + s->q_quant=oggpack_read(opb,4)+1; + s->q_sequencep=oggpack_read(opb,1); - s->dec_type=1; - s->dec_nodeb=_determine_node_bytes(s->used_entries, - (s->q_bits*s->dim+8)/8); - s->dec_leafw=_determine_leaf_words(s->dec_nodeb, - (s->q_bits*s->dim+8)/8); - if(_make_decode_table(s,lengthlist,quantvals,opb,maptype)){ - s->q_val=0; /* cleanup must not free alloca memory */ - goto _errout; - } - - s->q_val=0; /* about to go out of scope; _make_decode_table - was using it */ - - }else{ - /* use dec_type 2: packed vector of column offsets */ - - /* need quantized values before */ - if(s->q_bits<=8){ - s->q_val=_ogg_malloc(quantvals); - for(i=0;iq_val)[i]=oggpack_read(opb,s->q_bits); - }else{ - s->q_val=_ogg_malloc(quantvals*2); - for(i=0;iq_val)[i]=oggpack_read(opb,s->q_bits); - } - - if(oggpack_eop(opb))goto _eofout; - - s->q_pack=_ilog(quantvals-1); - s->dec_type=2; - s->dec_nodeb=_determine_node_bytes(s->used_entries, - (_ilog(quantvals-1)*s->dim+8)/8); - s->dec_leafw=_determine_leaf_words(s->dec_nodeb, - (_ilog(quantvals-1)*s->dim+8)/8); - if(_make_decode_table(s,lengthlist,quantvals,opb,maptype))goto _errout; - + { + int quantvals=0; + switch(s->maptype){ + case 1: + quantvals=_book_maptype1_quantvals(s); + break; + case 2: + quantvals=s->entries*s->dim; + break; } - } - break; - case 2: - - /* mapping type 2; explicit array of values */ - quantvals=s->entries*s->dim; - /* dec_type choices here are 1,3; 2 is not possible */ - - if( (s->q_bits*s->dim+8)/8 <=4){ /* remember flag bit */ - /* use dec_type 1: vector of packed values */ - - s->dec_type=1; - s->dec_nodeb=_determine_node_bytes(s->used_entries,(s->q_bits*s->dim+8)/8); - s->dec_leafw=_determine_leaf_words(s->dec_nodeb,(s->q_bits*s->dim+8)/8); - if(_make_decode_table(s,lengthlist,quantvals,opb,maptype))goto _errout; - }else{ - /* use dec_type 3: scalar offset into packed value array */ - - s->dec_type=3; - s->dec_nodeb=_determine_node_bytes(s->used_entries,_ilog(s->used_entries-1)/8+1); - s->dec_leafw=_determine_leaf_words(s->dec_nodeb,_ilog(s->used_entries-1)/8+1); - if(_make_decode_table(s,lengthlist,quantvals,opb,maptype))goto _errout; - - /* get the vals & pack them */ - s->q_pack=(s->q_bits+7)/8*s->dim; - s->q_val=_ogg_malloc(s->q_pack*s->used_entries); - - if(s->q_bits<=8){ - for(i=0;iused_entries*s->dim;i++) - ((unsigned char *)(s->q_val))[i]=oggpack_read(opb,s->q_bits); - }else{ - for(i=0;iused_entries*s->dim;i++) - ((ogg_uint16_t *)(s->q_val))[i]=oggpack_read(opb,s->q_bits); - } + /* quantized values */ + s->quantlist=(long *)_ogg_malloc(sizeof(*s->quantlist)*quantvals); + for(i=0;iquantlist[i]=oggpack_read(opb,s->q_quant); + + if(quantvals&&s->quantlist[quantvals-1]==-1)goto _eofout; } break; default: goto _errout; } - if(oggpack_eop(opb))goto _eofout; - - return 0; + /* all set */ + return(0); + _errout: _eofout: - vorbis_book_clear(s); - return -1; + vorbis_staticbook_clear(s); + return(-1); +} + +/* the 'eliminate the decode tree' optimization actually requires the + codewords to be MSb first, not LSb. This is an annoying inelegancy + (and one of the first places where carefully thought out design + turned out to be wrong; Vorbis II and future Ogg codecs should go + to an MSb bitpacker), but not actually the huge hit it appears to + be. The first-stage decode table catches most words so that + bitreverse is not in the main execution path. */ + +static ogg_uint32_t bitreverse(ogg_uint32_t x){ + x= ((x>>16)&0x0000ffff) | ((x<<16)&0xffff0000); + x= ((x>> 8)&0x00ff00ff) | ((x<< 8)&0xff00ff00); + x= ((x>> 4)&0x0f0f0f0f) | ((x<< 4)&0xf0f0f0f0); + x= ((x>> 2)&0x33333333) | ((x<< 2)&0xcccccccc); + return((x>> 1)&0x55555555) | ((x<< 1)&0xaaaaaaaa); } -static inline ogg_uint32_t decode_packed_entry_number(codebook *book, - oggpack_buffer *b){ - ogg_uint32_t chase=0; +STIN long decode_packed_entry_number(codebook *book, + oggpack_buffer *b){ int read=book->dec_maxlength; - long lok = oggpack_look(b,read),i; - + long lo,hi; + long lok = oggpack_look(b,book->dec_firsttablen); + + if (lok >= 0) { + long entry = book->dec_firsttable[lok]; + if(entry&0x80000000UL){ + lo=(entry>>15)&0x7fff; + hi=book->used_entries-(entry&0x7fff); + }else{ + oggpack_adv(b, book->dec_codelengths[entry-1]); + return(entry-1); + } + }else{ + lo=0; + hi=book->used_entries; + } + + lok = oggpack_look(b, read); + while(lok<0 && read>1) lok = oggpack_look(b, --read); @@ -561,229 +177,195 @@ return -1; } - /* chase the tree with the bits we got */ - if(book->dec_nodeb==1){ - if(book->dec_leafw==1){ - - /* 8/8 */ - unsigned char *t=(unsigned char *)book->dec_table; - for(i=0;i>i)&1)]; - if(chase&0x80UL)break; - } - chase&=0x7fUL; + /* bisect search for the codeword in the ordered list */ + { + ogg_uint32_t testword=bitreverse((ogg_uint32_t)lok); - }else{ - - /* 8/16 */ - unsigned char *t=(unsigned char *)book->dec_table; - for(i=0;i>i)&1; - int next=t[chase+bit]; - if(next&0x80){ - chase= (next<<8) | t[chase+bit+1+(!bit || t[chase]&0x80)]; - break; - } - chase=next; - } - chase&=0x7fffUL; + while(hi-lo>1){ + long p=(hi-lo)>>1; + long test=book->codelist[lo+p]>testword; + lo+=p&(test-1); + hi-=p&(-test); } - }else{ - if(book->dec_nodeb==2){ - if(book->dec_leafw==1){ - - /* 16/16 */ - for(i=0;idec_table))[chase*2+((lok>>i)&1)]; - if(chase&0x8000UL)break; - } - chase&=0x7fffUL; - - }else{ - - /* 16/32 */ - ogg_uint16_t *t=(ogg_uint16_t *)book->dec_table; - for(i=0;i>i)&1; - int next=t[chase+bit]; - if(next&0x8000){ - chase= (next<<16) | t[chase+bit+1+(!bit || t[chase]&0x8000)]; - break; - } - chase=next; - } - chase&=0x7fffffffUL; - } - - }else{ - - for(i=0;idec_table))[chase*2+((lok>>i)&1)]; - if(chase&0x80000000UL)break; - } - chase&=0x7fffffffUL; - + if(book->dec_codelengths[lo]<=read){ + oggpack_adv(b, book->dec_codelengths[lo]); + return(lo); } } - if(i declarative (set the value) + addmul==1 -> additive + addmul==2 -> multiplicitive */ + /* returns the [original, not compacted] entry number or -1 on eof *********/ long vorbis_book_decode(codebook *book, oggpack_buffer *b){ - if(book->dec_type)return -1; - return decode_packed_entry_number(book,b); -} - -int decode_map(codebook *s, oggpack_buffer *b, ogg_int32_t *v, int point){ - ogg_uint32_t entry = decode_packed_entry_number(s,b); - int i; - if(oggpack_eop(b))return(-1); - - /* according to decode type */ - switch(s->dec_type){ - case 1:{ - /* packed vector of values */ - int mask=(1<q_bits)-1; - for(i=0;idim;i++){ - v[i]=entry&mask; - entry>>=s->q_bits; - } - break; - } - case 2:{ - /* packed vector of column offsets */ - int mask=(1<q_pack)-1; - for(i=0;idim;i++){ - if(s->q_bits<=8) - v[i]=((unsigned char *)(s->q_val))[entry&mask]; - else - v[i]=((ogg_uint16_t *)(s->q_val))[entry&mask]; - entry>>=s->q_pack; - } - break; - } - case 3:{ - /* offset into array */ - void *ptr=s->q_val+entry*s->q_pack; - - if(s->q_bits<=8){ - for(i=0;idim;i++) - v[i]=((unsigned char *)ptr)[i]; - }else{ - for(i=0;idim;i++) - v[i]=((ogg_uint16_t *)ptr)[i]; - } - break; - } - default: - return -1; + if(book->used_entries>0){ + long packed_entry=decode_packed_entry_number(book,b); + if(packed_entry>=0) + return(book->dec_index[packed_entry]); } - /* we have the unpacked multiplicands; compute final vals */ - { - int shiftM=point-s->q_delp; - ogg_int32_t add=point-s->q_minp; - if(add>0) - add= s->q_min >> add; - else - add= s->q_min << -add; - - if(shiftM>0) - for(i=0;idim;i++) - v[i]= add + ((v[i] * s->q_del) >> shiftM); - else - for(i=0;idim;i++) - v[i]= add + ((v[i] * s->q_del) << -shiftM); - - if(s->q_seq) - for(i=1;idim;i++) - v[i]+=v[i-1]; - } - - return 0; + /* if there's no dec_index, the codebook unpacking isn't collapsed */ + return(-1); } /* returns 0 on OK or -1 on eof *************************************/ long vorbis_book_decodevs_add(codebook *book,ogg_int32_t *a, oggpack_buffer *b,int n,int point){ - if(book->used_entries>0){ + if(book->used_entries>0){ int step=n/book->dim; - ogg_int32_t *v = (ogg_int32_t *)alloca(sizeof(*v)*book->dim); + long *entry = (long *)alloca(sizeof(*entry)*step); + ogg_int32_t **t = (ogg_int32_t **)alloca(sizeof(*t)*step); int i,j,o; + int shift=point-book->binarypoint; - for (j=0;jdim;i++,o+=step) - a[o]+=v[i]; + if(shift>=0){ + for (i = 0; i < step; i++) { + entry[i]=decode_packed_entry_number(book,b); + if(entry[i]==-1)return(-1); + t[i] = book->valuelist+entry[i]*book->dim; + } + for(i=0,o=0;idim;i++,o+=step) + for (j=0;j>shift; + }else{ + for (i = 0; i < step; i++) { + entry[i]=decode_packed_entry_number(book,b); + if(entry[i]==-1)return(-1); + t[i] = book->valuelist+entry[i]*book->dim; + } + for(i=0,o=0;idim;i++,o+=step) + for (j=0;jused_entries>0){ - ogg_int32_t *v = (ogg_int32_t *)alloca(sizeof(*v)*book->dim); - int i,j; + int i,j,entry; + ogg_int32_t *t; + int shift=point-book->binarypoint; - for(i=0;idim;j++) - a[i++]+=v[j]; + if(shift>=0){ + for(i=0;ivaluelist+entry*book->dim; + for (j=0;jdim;) + a[i++]+=t[j++]>>shift; + } + }else{ + for(i=0;ivaluelist+entry*book->dim; + for (j=0;jdim;) + a[i++]+=t[j++]<<-shift; + } } } - return 0; + return(0); } long vorbis_book_decodev_set(codebook *book,ogg_int32_t *a, oggpack_buffer *b,int n,int point){ if(book->used_entries>0){ - ogg_int32_t *v = (ogg_int32_t *)alloca(sizeof(*v)*book->dim); - int i,j; + int i,j,entry; + ogg_int32_t *t; + int shift=point-book->binarypoint; - for(i=0;idim;j++) - a[i++]=v[j]; + if(shift>=0){ + + for(i=0;ivaluelist+entry*book->dim; + for (j=0;jdim;){ + a[i++]=t[j++]>>shift; + } + } + }else{ + + for(i=0;ivaluelist+entry*book->dim; + for (j=0;jdim;){ + a[i++]=t[j++]<<-shift; + } + } } }else{ + int i,j; - for(i=0;idim;j++) + for (j=0;jdim;){ a[i++]=0; + } } } - - return 0; + return(0); } -long vorbis_book_decodevv_add(codebook *book,ogg_int32_t **a, +long vorbis_book_decodevv_add(codebook *book,ogg_int32_t **a,\ long offset,int ch, oggpack_buffer *b,int n,int point){ - if(book->used_entries>0){ - ogg_int32_t *v = (ogg_int32_t *)alloca(sizeof(*v)*book->dim); - long i,j; + long i,j,entry; int chptr=0; + int shift=point-book->binarypoint; - for(i=offset;idim;j++){ - a[chptr++][i]+=v[j]; - if(chptr==ch){ - chptr=0; - i++; + if(shift>=0){ + + for(i=offset;ivaluelist+entry*book->dim; + for (j=0;jdim;j++){ + a[chptr++][i]+=t[j]>>shift; + if(chptr==ch){ + chptr=0; + i++; + } + } + } + } + }else{ + + for(i=offset;ivaluelist+entry*book->dim; + for (j=0;jdim;j++){ + a[chptr++][i]+=t[j]<<-shift; + if(chptr==ch){ + chptr=0; + i++; + } + } } } } } - return 0; + return(0); } diff -r 3331b30e4ef1 -r 88fde28bbda6 misc/libtremor/tremor/codebook.h --- a/misc/libtremor/tremor/codebook.h Sun Oct 21 01:28:33 2012 +0400 +++ b/misc/libtremor/tremor/codebook.h Sat Nov 03 00:34:35 2012 +0400 @@ -20,33 +20,70 @@ #include "ogg.h" -typedef struct codebook{ - long dim; /* codebook dimensions (elements per vector) */ - long entries; /* codebook entries */ - long used_entries; /* populated codebook entries */ +/* This structure encapsulates huffman and VQ style encoding books; it + doesn't do anything specific to either. + + valuelist/quantlist are nonNULL (and q_* significant) only if + there's entry->value mapping to be done. + + If encode-side mapping must be done (and thus the entry needs to be + hunted), the auxiliary encode pointer will point to a decision + tree. This is true of both VQ and huffman, but is mostly useful + with VQ. + +*/ + +typedef struct static_codebook{ + long dim; /* codebook dimensions (elements per vector) */ + long entries; /* codebook entries */ + long *lengthlist; /* codeword lengths in bits */ + + /* mapping ***************************************************************/ + int maptype; /* 0=none + 1=implicitly populated values from map column + 2=listed arbitrary values */ - int dec_maxlength; - void *dec_table; - int dec_nodeb; - int dec_leafw; - int dec_type; /* 0 = entry number - 1 = packed vector of values - 2 = packed vector of column offsets, maptype 1 - 3 = scalar offset into value array, maptype 2 */ + /* The below does a linear, single monotonic sequence mapping. */ + long q_min; /* packed 32 bit float; quant value 0 maps to minval */ + long q_delta; /* packed 32 bit float; val 1 - val 0 == delta */ + int q_quant; /* bits: 0 < quant <= 16 */ + int q_sequencep; /* bitflag */ + + long *quantlist; /* map == 1: (int)(entries^(1/dim)) element column map + map == 2: list of dim*entries quantized entry vals + */ +} static_codebook; - ogg_int32_t q_min; - int q_minp; - ogg_int32_t q_del; - int q_delp; - int q_seq; - int q_bits; - int q_pack; - void *q_val; +typedef struct codebook{ + long dim; /* codebook dimensions (elements per vector) */ + long entries; /* codebook entries */ + long used_entries; /* populated codebook entries */ + + /* the below are ordered by bitreversed codeword and only used + entries are populated */ + int binarypoint; + ogg_int32_t *valuelist; /* list of dim*entries actual entry values */ + ogg_uint32_t *codelist; /* list of bitstream codewords for each entry */ + + int *dec_index; + char *dec_codelengths; + ogg_uint32_t *dec_firsttable; + int dec_firsttablen; + int dec_maxlength; + + long q_min; /* packed 32 bit float; quant value 0 maps to minval */ + long q_delta; /* packed 32 bit float; val 1 - val 0 == delta */ } codebook; +extern void vorbis_staticbook_clear(static_codebook *b); +extern void vorbis_staticbook_destroy(static_codebook *b); +extern int vorbis_book_init_decode(codebook *dest,const static_codebook *source); + extern void vorbis_book_clear(codebook *b); -extern int vorbis_book_unpack(oggpack_buffer *b,codebook *c); +extern long _book_maptype1_quantvals(const static_codebook *b); + +extern int vorbis_staticbook_unpack(oggpack_buffer *b,static_codebook *c); extern long vorbis_book_decode(codebook *book, oggpack_buffer *b); extern long vorbis_book_decodevs_add(codebook *book, ogg_int32_t *a, diff -r 3331b30e4ef1 -r 88fde28bbda6 misc/libtremor/tremor/codec_internal.h --- a/misc/libtremor/tremor/codec_internal.h Sun Oct 21 01:28:33 2012 +0400 +++ b/misc/libtremor/tremor/codec_internal.h Sat Nov 03 00:34:35 2012 +0400 @@ -6,7 +6,7 @@ * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE * * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. * * * - * THE OggVorbis 'TREMOR' SOURCE CODE IS (C) COPYRIGHT 1994-2003 * + * THE OggVorbis 'TREMOR' SOURCE CODE IS (C) COPYRIGHT 1994-2002 * * BY THE Xiph.Org FOUNDATION http://www.xiph.org/ * * * ******************************************************************** @@ -18,149 +18,36 @@ #ifndef _V_CODECI_H_ #define _V_CODECI_H_ -#define CHUNKSIZE 1024 - #include "codebook.h" -#include "ivorbiscodec.h" - -#define VI_TRANSFORMB 1 -#define VI_WINDOWB 1 -#define VI_TIMEB 1 -#define VI_FLOORB 2 -#define VI_RESB 3 -#define VI_MAPB 1 - -typedef void vorbis_info_floor; - -/* vorbis_dsp_state buffers the current vorbis audio - analysis/synthesis state. The DSP state belongs to a specific - logical bitstream ****************************************************/ -struct vorbis_dsp_state{ - vorbis_info *vi; - oggpack_buffer opb; - - ogg_int32_t **work; - ogg_int32_t **mdctright; - int out_begin; - int out_end; - - long lW; - long W; - - ogg_int64_t granulepos; - ogg_int64_t sequence; - ogg_int64_t sample_count; - -}; - - -/* Floor backend generic *****************************************/ - -extern vorbis_info_floor *floor0_info_unpack(vorbis_info *,oggpack_buffer *); -extern void floor0_free_info(vorbis_info_floor *); -extern int floor0_memosize(vorbis_info_floor *); -extern ogg_int32_t *floor0_inverse1(struct vorbis_dsp_state *, - vorbis_info_floor *,ogg_int32_t *); -extern int floor0_inverse2 (struct vorbis_dsp_state *,vorbis_info_floor *, - ogg_int32_t *buffer,ogg_int32_t *); - -extern vorbis_info_floor *floor1_info_unpack(vorbis_info *,oggpack_buffer *); -extern void floor1_free_info(vorbis_info_floor *); -extern int floor1_memosize(vorbis_info_floor *); -extern ogg_int32_t *floor1_inverse1(struct vorbis_dsp_state *, - vorbis_info_floor *,ogg_int32_t *); -extern int floor1_inverse2 (struct vorbis_dsp_state *,vorbis_info_floor *, - ogg_int32_t *buffer,ogg_int32_t *); -typedef struct{ - int order; - long rate; - long barkmap; - - int ampbits; - int ampdB; - - int numbooks; /* <= 16 */ - char books[16]; - -} vorbis_info_floor0; - -typedef struct{ - char class_dim; /* 1 to 8 */ - char class_subs; /* 0,1,2,3 (bits: 1< Wed, 09 Oct 2002 22:00:00 -0500 - -Local variables: -mode: debian-changelog -End: diff -r 3331b30e4ef1 -r 88fde28bbda6 misc/libtremor/tremor/debian/control --- a/misc/libtremor/tremor/debian/control Sun Oct 21 01:28:33 2012 +0400 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,22 +0,0 @@ -Source: libvorbisidec -Section: libs -Priority: optional -Maintainer: Christopher L Cheney -Build-Depends: autotools-dev, debhelper (>> 4.0.18), devscripts, gawk -Standards-Version: 3.5.7.0 - -Package: libvorbisidec1 -Architecture: any -Section: libs -Depends: ${shlibs:Depends} -Description: Ogg Bitstream Library - Libogg is a library for manipulating ogg bitstreams. It handles - both making ogg bitstreams and getting packets from ogg bitstreams. - -Package: libvorbisidec-dev -Architecture: any -Section: devel -Depends: libvorbisidec1 (= ${Source-Version}), libc6-dev -Description: Ogg Bitstream Library Development - The libogg-dev package contains the header files and documentation - needed to develop applications with libogg. diff -r 3331b30e4ef1 -r 88fde28bbda6 misc/libtremor/tremor/debian/copyright --- a/misc/libtremor/tremor/debian/copyright Sun Oct 21 01:28:33 2012 +0400 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,37 +0,0 @@ -This package was debianized by Christopher L Cheney on -Wed, 09 Oct 2002 22:00:00 -0500. - -It was downloaded from cvs. - -Upstream Author(s): Monty - -Copyright: -Copyright (c) 2002, Xiph.org Foundation - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions -are met: - -- Redistributions of source code must retain the above copyright -notice, this list of conditions and the following disclaimer. - -- Redistributions in binary form must reproduce the above copyright -notice, this list of conditions and the following disclaimer in the -documentation and/or other materials provided with the distribution. - -- Neither the name of the Xiph.Org Foundation nor the names of its -contributors may be used to endorse or promote products derived from -this software without specific prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR -CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, -EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, -PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR -PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF -LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING -NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS -SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - diff -r 3331b30e4ef1 -r 88fde28bbda6 misc/libtremor/tremor/debian/libvorbisidec-dev.install --- a/misc/libtremor/tremor/debian/libvorbisidec-dev.install Sun Oct 21 01:28:33 2012 +0400 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,8 +0,0 @@ -debian/tmp/usr/include/tremor/config_types.h -debian/tmp/usr/include/tremor/ivorbiscodec.h -debian/tmp/usr/include/tremor/ivorbisfile.h -debian/tmp/usr/include/tremor/ogg.h -debian/tmp/usr/include/tremor/os_types.h -debian/tmp/usr/lib/libvorbisidec.a -debian/tmp/usr/lib/libvorbisidec.la -debian/tmp/usr/lib/libvorbisidec.so diff -r 3331b30e4ef1 -r 88fde28bbda6 misc/libtremor/tremor/debian/libvorbisidec1.install --- a/misc/libtremor/tremor/debian/libvorbisidec1.install Sun Oct 21 01:28:33 2012 +0400 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,1 +0,0 @@ -debian/tmp/usr/lib/libvorbisidec.so.* diff -r 3331b30e4ef1 -r 88fde28bbda6 misc/libtremor/tremor/debian/rules --- a/misc/libtremor/tremor/debian/rules Sun Oct 21 01:28:33 2012 +0400 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,151 +0,0 @@ -#!/usr/bin/make -f -# Sample debian/rules that uses debhelper. -# GNU copyright 1997 to 1999 by Joey Hess. - -# Uncomment this to turn on verbose mode. -#export DH_VERBOSE=1 - -# This is the debhelper compatibility version to use. -export DH_COMPAT=4 - -# This has to be exported to make some magic below work. -export DH_OPTIONS - -# These are used for cross-compiling and for saving the configure script -# from having to guess our platform (since we know it already) -DEB_HOST_GNU_TYPE ?= $(shell dpkg-architecture -qDEB_HOST_GNU_TYPE) -DEB_BUILD_GNU_TYPE ?= $(shell dpkg-architecture -qDEB_BUILD_GNU_TYPE) - -objdir = $(CURDIR)/obj-$(DEB_BUILD_GNU_TYPE) - -ifneq (,$(findstring debug,$(DEB_BUILD_OPTIONS))) - CFLAGS += -g -endif -ifeq (,$(findstring nostrip,$(DEB_BUILD_OPTIONS))) - INSTALL_PROGRAM += -s -endif - -configure: configure-stamp -configure-stamp: - dh_testdir - - # make build directory - mkdir $(objdir) - - # run configure with build tree $(objdir) - # change ../configure to ../autogen.sh for CVS build - cd $(objdir) && \ - ../configure --build=$(DEB_BUILD_GNU_TYPE) --host=$(DEB_HOST_GNU_TYPE) \ - --prefix=/usr - - touch configure-stamp - -build: build-stamp -build-stamp: configure-stamp - dh_testdir - - cd $(objdir) && \ - $(MAKE) - - touch build-stamp - -autotools: - OLDDATESUB=`./config.sub -t | tr -d -` ;\ - OLDDATEGUESS=`./config.guess -t | tr -d -` ;\ - NEWDATESUB=`/usr/share/misc/config.sub -t | tr -d -` ;\ - NEWDATEGUESS=`/usr/share/misc/config.guess -t | tr -d -` ;\ - if [ $$OLDDATESUB -lt $$NEWDATESUB -o \ - $$OLDDATEGUESS -lt $$NEWDATEGUESS ]; then \ - dch -a -p "GNU config automated update: config.sub\ - ($$OLDDATESUB to $$NEWDATESUB), config.guess\ - ($$OLDDATEGUESS to $$NEWDATEGUESS)" ;\ - cp -f /usr/share/misc/config.sub config.sub ;\ - cp -f /usr/share/misc/config.guess config.guess ;\ - echo WARNING: GNU config scripts updated from master copies 1>&2 ;\ - fi - -debian-clean: - dh_testdir - dh_testroot - - dh_clean - -clean: autotools - dh_testdir - dh_testroot - rm -f build-stamp configure-stamp - - # Remove build tree - rm -rf $(objdir) - - # if Makefile exists run distclean - if test -f Makefile; then \ - $(MAKE) distclean; \ - fi - - #if test -d CVS; then \ - $(MAKE) cvs-clean ;\ - fi - - dh_clean - -install: DH_OPTIONS= -install: build - dh_testdir - dh_testroot - dh_clean -k - dh_installdirs - - cd $(objdir) && \ - $(MAKE) install DESTDIR=$(CURDIR)/debian/tmp - - dh_install --list-missing - -# This single target is used to build all the packages, all at once, or -# one at a time. So keep in mind: any options passed to commands here will -# affect _all_ packages. Anything you want to only affect one package -# should be put in another target, such as the install target. -binary-common: - dh_testdir - dh_testroot -# dh_installxfonts - dh_installchangelogs - dh_installdocs - dh_installexamples -# dh_installmenu -# dh_installdebconf -# dh_installlogrotate -# dh_installemacsen -# dh_installpam -# dh_installmime -# dh_installinit -# dh_installcron -# dh_installinfo -# dh_undocumented - dh_installman - dh_strip - dh_link - dh_compress - dh_fixperms - dh_makeshlibs -V - dh_installdeb -# dh_perl - dh_shlibdeps - dh_gencontrol - dh_md5sums - dh_builddeb - -# Build architecture independant packages using the common target. -binary-indep: build install -# $(MAKE) -f debian/rules DH_OPTIONS=-i binary-common - -# Build architecture dependant packages using the common target. -binary-arch: build install - $(MAKE) -f debian/rules DH_OPTIONS=-a binary-common - -# Any other binary targets build just one binary package at a time. -binary-%: build install - $(MAKE) -f debian/rules binary-common DH_OPTIONS=-p$* - -binary: binary-indep binary-arch -.PHONY: build clean binary-indep binary-arch binary install configure diff -r 3331b30e4ef1 -r 88fde28bbda6 misc/libtremor/tremor/dsp.c --- a/misc/libtremor/tremor/dsp.c Sun Oct 21 01:28:33 2012 +0400 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,298 +0,0 @@ -/******************************************************************** - * * - * THIS FILE IS PART OF THE OggVorbis 'TREMOR' CODEC SOURCE CODE. * - * * - * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS * - * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE * - * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. * - * * - * THE OggVorbis 'TREMOR' SOURCE CODE IS (C) COPYRIGHT 1994-2003 * - * BY THE Xiph.Org FOUNDATION http://www.xiph.org/ * - * * - ******************************************************************** - - function: PCM data vector blocking, windowing and dis/reassembly - - ********************************************************************/ - -#include -#include "ogg.h" -#include "mdct.h" -#include "ivorbiscodec.h" -#include "codec_internal.h" -#include "misc.h" -#include "window_lookup.h" - -int vorbis_dsp_restart(vorbis_dsp_state *v){ - if(!v)return -1; - { - vorbis_info *vi=v->vi; - codec_setup_info *ci; - - if(!vi)return -1; - ci=vi->codec_setup; - if(!ci)return -1; - - v->out_end=-1; - v->out_begin=-1; - - v->granulepos=-1; - v->sequence=-1; - v->sample_count=-1; - } - return 0; -} - -vorbis_dsp_state *vorbis_dsp_create(vorbis_info *vi){ - int i; - - vorbis_dsp_state *v=_ogg_calloc(1,sizeof(*v)); - codec_setup_info *ci=(codec_setup_info *)vi->codec_setup; - - v->vi=vi; - - v->work=(ogg_int32_t **)_ogg_malloc(vi->channels*sizeof(*v->work)); - v->mdctright=(ogg_int32_t **)_ogg_malloc(vi->channels*sizeof(*v->mdctright)); - for(i=0;ichannels;i++){ - v->work[i]=(ogg_int32_t *)_ogg_calloc(1,(ci->blocksizes[1]>>1)* - sizeof(*v->work[i])); - v->mdctright[i]=(ogg_int32_t *)_ogg_calloc(1,(ci->blocksizes[1]>>2)* - sizeof(*v->mdctright[i])); - } - - v->lW=0; /* previous window size */ - v->W=0; /* current window size */ - - vorbis_dsp_restart(v); - return v; -} - -void vorbis_dsp_destroy(vorbis_dsp_state *v){ - int i; - if(v){ - vorbis_info *vi=v->vi; - - if(v->work){ - for(i=0;ichannels;i++) - if(v->work[i])_ogg_free(v->work[i]); - _ogg_free(v->work); - } - if(v->mdctright){ - for(i=0;ichannels;i++) - if(v->mdctright[i])_ogg_free(v->mdctright[i]); - _ogg_free(v->mdctright); - } - - _ogg_free(v); - } -} - -static LOOKUP_T *_vorbis_window(int left){ - switch(left){ - case 32: - return vwin64; - case 64: - return vwin128; - case 128: - return vwin256; - case 256: - return vwin512; - case 512: - return vwin1024; - case 1024: - return vwin2048; - case 2048: - return vwin4096; -#ifndef LIMIT_TO_64kHz - case 4096: - return vwin8192; -#endif - default: - return(0); - } -} - -/* pcm==0 indicates we just want the pending samples, no more */ -int vorbis_dsp_pcmout(vorbis_dsp_state *v,ogg_int16_t *pcm,int samples){ - vorbis_info *vi=v->vi; - codec_setup_info *ci=(codec_setup_info *)vi->codec_setup; - if(v->out_begin>-1 && v->out_beginout_end){ - int n=v->out_end-v->out_begin; - if(pcm){ - int i; - if(n>samples)n=samples; - for(i=0;ichannels;i++) - mdct_unroll_lap(ci->blocksizes[0],ci->blocksizes[1], - v->lW,v->W,v->work[i],v->mdctright[i], - _vorbis_window(ci->blocksizes[0]>>1), - _vorbis_window(ci->blocksizes[1]>>1), - pcm+i,vi->channels, - v->out_begin,v->out_begin+n); - } - return(n); - } - return(0); -} - -int vorbis_dsp_read(vorbis_dsp_state *v,int s){ - if(s && v->out_begin+s>v->out_end)return(OV_EINVAL); - v->out_begin+=s; - return(0); -} - -long vorbis_packet_blocksize(vorbis_info *vi,ogg_packet *op){ - codec_setup_info *ci=(codec_setup_info *)vi->codec_setup; - oggpack_buffer opb; - int mode; - int modebits=0; - int v=ci->modes; - - oggpack_readinit(&opb,op->packet); - - /* Check the packet type */ - if(oggpack_read(&opb,1)!=0){ - /* Oops. This is not an audio data packet */ - return(OV_ENOTAUDIO); - } - - while(v>1){ - modebits++; - v>>=1; - } - - /* read our mode and pre/post windowsize */ - mode=oggpack_read(&opb,modebits); - if(mode==-1)return(OV_EBADPACKET); - return(ci->blocksizes[ci->mode_param[mode].blockflag]); -} - - -static int ilog(ogg_uint32_t v){ - int ret=0; - if(v)--v; - while(v){ - ret++; - v>>=1; - } - return(ret); -} - -int vorbis_dsp_synthesis(vorbis_dsp_state *vd,ogg_packet *op,int decodep){ - vorbis_info *vi=vd->vi; - codec_setup_info *ci=(codec_setup_info *)vi->codec_setup; - int mode,i; - - oggpack_readinit(&vd->opb,op->packet); - - /* Check the packet type */ - if(oggpack_read(&vd->opb,1)!=0){ - /* Oops. This is not an audio data packet */ - return OV_ENOTAUDIO ; - } - - /* read our mode and pre/post windowsize */ - mode=oggpack_read(&vd->opb,ilog(ci->modes)); - if(mode==-1 || mode>=ci->modes) return OV_EBADPACKET; - - /* shift information we still need from last window */ - vd->lW=vd->W; - vd->W=ci->mode_param[mode].blockflag; - for(i=0;ichannels;i++) - mdct_shift_right(ci->blocksizes[vd->lW],vd->work[i],vd->mdctright[i]); - - if(vd->W){ - int temp; - oggpack_read(&vd->opb,1); - temp=oggpack_read(&vd->opb,1); - if(temp==-1) return OV_EBADPACKET; - } - - /* packet decode and portions of synthesis that rely on only this block */ - if(decodep){ - mapping_inverse(vd,ci->map_param+ci->mode_param[mode].mapping); - - if(vd->out_begin==-1){ - vd->out_begin=0; - vd->out_end=0; - }else{ - vd->out_begin=0; - vd->out_end=ci->blocksizes[vd->lW]/4+ci->blocksizes[vd->W]/4; - } - } - - /* track the frame number... This is for convenience, but also - making sure our last packet doesn't end with added padding. - - This is not foolproof! It will be confused if we begin - decoding at the last page after a seek or hole. In that case, - we don't have a starting point to judge where the last frame - is. For this reason, vorbisfile will always try to make sure - it reads the last two marked pages in proper sequence */ - - /* if we're out of sequence, dump granpos tracking until we sync back up */ - if(vd->sequence==-1 || vd->sequence+1 != op->packetno-3){ - /* out of sequence; lose count */ - vd->granulepos=-1; - vd->sample_count=-1; - } - - vd->sequence=op->packetno; - vd->sequence=vd->sequence-3; - - if(vd->sample_count==-1){ - vd->sample_count=0; - }else{ - vd->sample_count+= - ci->blocksizes[vd->lW]/4+ci->blocksizes[vd->W]/4; - } - - if(vd->granulepos==-1){ - if(op->granulepos!=-1){ /* only set if we have a - position to set to */ - - vd->granulepos=op->granulepos; - - /* is this a short page? */ - if(vd->sample_count>vd->granulepos){ - /* corner case; if this is both the first and last audio page, - then spec says the end is cut, not beginning */ - if(op->e_o_s){ - /* trim the end */ - /* no preceeding granulepos; assume we started at zero (we'd - have to in a short single-page stream) */ - /* granulepos could be -1 due to a seek, but that would result - in a long coun t, not short count */ - - vd->out_end-=vd->sample_count-vd->granulepos; - }else{ - /* trim the beginning */ - vd->out_begin+=vd->sample_count-vd->granulepos; - if(vd->out_begin>vd->out_end) - vd->out_begin=vd->out_end; - } - - } - - } - }else{ - vd->granulepos+= - ci->blocksizes[vd->lW]/4+ci->blocksizes[vd->W]/4; - if(op->granulepos!=-1 && vd->granulepos!=op->granulepos){ - - if(vd->granulepos>op->granulepos){ - long extra=vd->granulepos-op->granulepos; - - if(extra) - if(op->e_o_s){ - /* partial last frame. Strip the extra samples off */ - vd->out_end-=extra; - } /* else {Shouldn't happen *unless* the bitstream is out of - spec. Either way, believe the bitstream } */ - } /* else {Shouldn't happen *unless* the bitstream is out of - spec. Either way, believe the bitstream } */ - vd->granulepos=op->granulepos; - } - } - - return(0); -} diff -r 3331b30e4ef1 -r 88fde28bbda6 misc/libtremor/tremor/floor0.c --- a/misc/libtremor/tremor/floor0.c Sun Oct 21 01:28:33 2012 +0400 +++ b/misc/libtremor/tremor/floor0.c Sat Nov 03 00:34:35 2012 +0400 @@ -6,7 +6,7 @@ * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE * * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. * * * - * THE OggVorbis 'TREMOR' SOURCE CODE IS (C) COPYRIGHT 1994-2003 * + * THE OggVorbis 'TREMOR' SOURCE CODE IS (C) COPYRIGHT 1994-2002 * * BY THE Xiph.Org FOUNDATION http://www.xiph.org/ * * * ******************************************************************** @@ -21,12 +21,23 @@ #include "ogg.h" #include "ivorbiscodec.h" #include "codec_internal.h" +#include "registry.h" #include "codebook.h" #include "misc.h" -#include "os.h" +#include "block.h" #define LSP_FRACBITS 14 -extern const ogg_int32_t FLOOR_fromdB_LOOKUP[]; + +typedef struct { + long n; + int ln; + int m; + int *linearmap; + + vorbis_info_floor0 *vi; + ogg_int32_t *lsp_look; + +} vorbis_look_floor0; /*************** LSP decode ********************/ @@ -37,7 +48,7 @@ returns in m.8 format */ static long ADJUST_SQRT2[2]={8192,5792}; -static inline ogg_int32_t vorbis_invsqlook_i(long a,long e){ +STIN ogg_int32_t vorbis_invsqlook_i(long a,long e){ long i=(a&0x7fff)>>(INVSQ_LOOKUP_I_SHIFT-1); long d=a&INVSQ_LOOKUP_I_MASK; /* 0.10 */ long val=INVSQ_LOOKUP_I[i]- /* 1.16 */ @@ -49,60 +60,60 @@ /* interpolated lookup based fromdB function, domain -140dB to 0dB only */ /* a is in n.12 format */ -#ifdef _LOW_ACCURACY_ -static inline ogg_int32_t vorbis_fromdBlook_i(long a){ - if(a>0) return 0x7fffffff; - if(a<(-140<<12)) return 0; - return FLOOR_fromdB_LOOKUP[((a+140)*467)>>20]<<9; +STIN ogg_int32_t vorbis_fromdBlook_i(long a){ + int i=(-a)>>(12-FROMdB2_SHIFT); + if(i<0) return 0x7fffffff; + if(i>=(FROMdB_LOOKUP_SZ<>FROMdB_SHIFT] * FROMdB2_LOOKUP[i&FROMdB2_MASK]; } -#else -static inline ogg_int32_t vorbis_fromdBlook_i(long a){ - if(a>0) return 0x7fffffff; - if(a<(-140<<12)) return 0; - return FLOOR_fromdB_LOOKUP[((a+(140<<12))*467)>>20]; -} -#endif /* interpolated lookup based cos function, domain 0 to PI only */ /* a is in 0.16 format, where 0==0, 2^^16-1==PI, return 0.14 */ -static inline ogg_int32_t vorbis_coslook_i(long a){ +STIN ogg_int32_t vorbis_coslook_i(long a){ int i=a>>COS_LOOKUP_I_SHIFT; int d=a&COS_LOOKUP_I_MASK; return COS_LOOKUP_I[i]- ((d*(COS_LOOKUP_I[i]-COS_LOOKUP_I[i+1]))>> COS_LOOKUP_I_SHIFT); } -/* interpolated half-wave lookup based cos function */ +/* interpolated lookup based cos function */ /* a is in 0.16 format, where 0==0, 2^^16==PI, return .LSP_FRACBITS */ -static inline ogg_int32_t vorbis_coslook2_i(long a){ - int i=a>>COS_LOOKUP_I_SHIFT; - int d=a&COS_LOOKUP_I_MASK; - return ((COS_LOOKUP_I[i]<> - (COS_LOOKUP_I_SHIFT-LSP_FRACBITS+14); +STIN ogg_int32_t vorbis_coslook2_i(long a){ + a=a&0x1ffff; + + if(a>0x10000)a=0x20000-a; + { + int i=a>>COS_LOOKUP_I_SHIFT; + int d=a&COS_LOOKUP_I_MASK; + a=((COS_LOOKUP_I[i]<> + (COS_LOOKUP_I_SHIFT-LSP_FRACBITS+14); + } + + return(a); } -static const ogg_uint16_t barklook[54]={ - 0,51,102,154, 206,258,311,365, - 420,477,535,594, 656,719,785,854, - 926,1002,1082,1166, 1256,1352,1454,1564, - 1683,1812,1953,2107, 2276,2463,2670,2900, - 3155,3440,3756,4106, 4493,4919,5387,5901, - 6466,7094,7798,8599, 9528,10623,11935,13524, - 15453,17775,20517,23667, 27183,31004 +static const int barklook[28]={ + 0,100,200,301, 405,516,635,766, + 912,1077,1263,1476, 1720,2003,2333,2721, + 3184,3742,4428,5285, 6376,7791,9662,12181, + 15624,20397,27087,36554 }; /* used in init only; interpolate the long way */ -static inline ogg_int32_t toBARK(int n){ +STIN ogg_int32_t toBARK(int n){ int i; - for(i=0;i<54;i++) + for(i=0;i<27;i++) if(n>=barklook[i] && n>17); + int gap=barklook[i+1]-barklook[i]; + int del=n-barklook[i]; + + return((i<<15)+((del<<15)/gap)); } } @@ -122,11 +133,11 @@ static const unsigned char MLOOP_3[8]={0,1,2,2,3,3,3,3}; -void vorbis_lsp_to_curve(ogg_int32_t *curve,int n,int ln, +void vorbis_lsp_to_curve(ogg_int32_t *curve,int *map,int n,int ln, ogg_int32_t *lsp,int m, ogg_int32_t amp, ogg_int32_t ampoffset, - ogg_int32_t nyq){ + ogg_int32_t *icos){ /* 0 <= m < 256 */ @@ -135,27 +146,6 @@ int ampoffseti=ampoffset*4096; int ampi=amp; ogg_int32_t *ilsp=(ogg_int32_t *)alloca(m*sizeof(*ilsp)); - - ogg_uint32_t inyq= (1UL<<31) / toBARK(nyq); - ogg_uint32_t imap= (1UL<<31) / ln; - ogg_uint32_t tBnyq1 = toBARK(nyq)<<1; - - /* Besenham for frequency scale to avoid a division */ - int f=0; - int fdx=n; - int fbase=nyq/fdx; - int ferr=0; - int fdy=nyq-fbase*fdx; - int map=0; - -#ifdef _LOW_ACCURACY_ - ogg_uint32_t nextbark=((tBnyq1<<11)/ln)>>12; -#else - ogg_uint32_t nextbark=MULT31(imap>>1,tBnyq1); -#endif - int nextf=barklook[nextbark>>14]+(((nextbark&0x3fff)* - (barklook[(nextbark>>14)+1]-barklook[nextbark>>14]))>>14); - /* lsp is in 8.24, range 0 to PI; coslook wants it in .16 0 to 1*/ for(i=0;i>15); - + ogg_int32_t wi=icos[k]; #ifdef _V_LSP_MATH_ASM lsp_loop_asm(&qi,&pi,&qexp,ilsp,wi,m); @@ -215,9 +202,8 @@ for(j=3;j>25])) - if(!(shift=MLOOP_2[(pi|qi)>>19])) - shift=MLOOP_3[(pi|qi)>>16]; - + if(!(shift=MLOOP_2[(pi|qi)>>19])) + shift=MLOOP_3[(pi|qi)>>16]; qi=(qi>>shift)*labs(ilsp[j-1]-wi); pi=(pi>>shift)*labs(ilsp[j]-wi); qexp+=shift; @@ -225,7 +211,7 @@ if(!(shift=MLOOP_1[(pi|qi)>>25])) if(!(shift=MLOOP_2[(pi|qi)>>19])) shift=MLOOP_3[(pi|qi)>>16]; - + /* pi,qi normalized collectively, both tracked using qexp */ if(m&1){ @@ -293,57 +279,32 @@ amp>>=9; #endif curve[i]= MULT31_SHIFT15(curve[i],amp); - - while(++i=fdx){ - ferr-=fdx; - f++; - } - f+=fbase; - - if(f>=nextf)break; - - curve[i]= MULT31_SHIFT15(curve[i],amp); - } - - while(1){ - map++; - - if(map+1>12; -#else - nextbark=MULT31((map+1)*(imap>>1),tBnyq1); -#endif - nextf=barklook[nextbark>>14]+ - (((nextbark&0x3fff)* - (barklook[(nextbark>>14)+1]-barklook[nextbark>>14]))>>14); - if(f<=nextf)break; - - }else{ - nextf=9999999; - break; - } - } - if(map>=ln){ - map=ln-1; /* guard against the approximation */ - nextf=9999999; - } + while(map[++i]==k) curve[i]= MULT31_SHIFT15(curve[i],amp); } } /*************** vorbis decode glue ************/ -void floor0_free_info(vorbis_info_floor *i){ +static void floor0_free_info(vorbis_info_floor *i){ vorbis_info_floor0 *info=(vorbis_info_floor0 *)i; - if(info)_ogg_free(info); + if(info){ + memset(info,0,sizeof(*info)); + _ogg_free(info); + } } -vorbis_info_floor *floor0_info_unpack (vorbis_info *vi,oggpack_buffer *opb){ +static void floor0_free_look(vorbis_look_floor *i){ + vorbis_look_floor0 *look=(vorbis_look_floor0 *)i; + if(look){ + + if(look->linearmap)_ogg_free(look->linearmap); + if(look->lsp_look)_ogg_free(look->lsp_look); + memset(look,0,sizeof(*look)); + _ogg_free(look); + } +} + +static vorbis_info_floor *floor0_unpack (vorbis_info *vi,oggpack_buffer *opb){ codec_setup_info *ci=(codec_setup_info *)vi->codec_setup; int j; @@ -358,13 +319,12 @@ if(info->order<1)goto err_out; if(info->rate<1)goto err_out; if(info->barkmap<1)goto err_out; + if(info->numbooks<1)goto err_out; for(j=0;jnumbooks;j++){ info->books[j]=oggpack_read(opb,8); - if(info->books[j]>=ci->books)goto err_out; + if(info->books[j]<0 || info->books[j]>=ci->books)goto err_out; } - - if(oggpack_eop(opb))goto err_out; return(info); err_out: @@ -372,35 +332,75 @@ return(NULL); } -int floor0_memosize(vorbis_info_floor *i){ +/* initialize Bark scale and normalization lookups. We could do this + with static tables, but Vorbis allows a number of possible + combinations, so it's best to do it computationally. + + The below is authoritative in terms of defining scale mapping. + Note that the scale depends on the sampling rate as well as the + linear block and mapping sizes */ + +static vorbis_look_floor *floor0_look (vorbis_dsp_state *vd,vorbis_info_mode *mi, + vorbis_info_floor *i){ + int j; + vorbis_info *vi=vd->vi; + codec_setup_info *ci=(codec_setup_info *)vi->codec_setup; vorbis_info_floor0 *info=(vorbis_info_floor0 *)i; - return info->order+1; + vorbis_look_floor0 *look=(vorbis_look_floor0 *)_ogg_calloc(1,sizeof(*look)); + look->m=info->order; + look->n=ci->blocksizes[mi->blockflag]/2; + look->ln=info->barkmap; + look->vi=info; + + /* the mapping from a linear scale to a smaller bark scale is + straightforward. We do *not* make sure that the linear mapping + does not skip bark-scale bins; the decoder simply skips them and + the encoder may do what it wishes in filling them. They're + necessary in some mapping combinations to keep the scale spacing + accurate */ + look->linearmap=(int *)_ogg_malloc((look->n+1)*sizeof(*look->linearmap)); + for(j=0;jn;j++){ + + int val=(look->ln* + ((toBARK(info->rate/2*j/look->n)<<11)/toBARK(info->rate/2)))>>11; + + if(val>=look->ln)val=look->ln-1; /* guard against the approximation */ + look->linearmap[j]=val; + } + look->linearmap[j]=-1; + + look->lsp_look=(ogg_int32_t *)_ogg_malloc(look->ln*sizeof(*look->lsp_look)); + for(j=0;jln;j++) + look->lsp_look[j]=vorbis_coslook2_i(0x10000*j/look->ln); + + return look; } -ogg_int32_t *floor0_inverse1(vorbis_dsp_state *vd,vorbis_info_floor *i, - ogg_int32_t *lsp){ - vorbis_info_floor0 *info=(vorbis_info_floor0 *)i; +static void *floor0_inverse1(vorbis_block *vb,vorbis_look_floor *i){ + vorbis_look_floor0 *look=(vorbis_look_floor0 *)i; + vorbis_info_floor0 *info=look->vi; int j,k; - int ampraw=oggpack_read(&vd->opb,info->ampbits); + int ampraw=oggpack_read(&vb->opb,info->ampbits); if(ampraw>0){ /* also handles the -1 out of data case */ long maxval=(1<ampbits)-1; int amp=((ampraw*info->ampdB)<<4)/maxval; - int booknum=oggpack_read(&vd->opb,_ilog(info->numbooks)); + int booknum=oggpack_read(&vb->opb,_ilog(info->numbooks)); if(booknum!=-1 && booknumnumbooks){ /* be paranoid */ - codec_setup_info *ci=(codec_setup_info *)vd->vi->codec_setup; - codebook *b=ci->book_param+info->books[booknum]; + codec_setup_info *ci=(codec_setup_info *)vb->vd->vi->codec_setup; + codebook *b=ci->fullbooks+info->books[booknum]; ogg_int32_t last=0; + ogg_int32_t *lsp=(ogg_int32_t *)_vorbis_block_alloc(vb,sizeof(*lsp)*(look->m+1)); - for(j=0;jorder;j+=b->dim) - if(vorbis_book_decodev_set(b,lsp+j,&vd->opb,b->dim,-24)==-1)goto eop; - for(j=0;jorder;){ + for(j=0;jm;j+=b->dim) + if(vorbis_book_decodev_set(b,lsp+j,&vb->opb,b->dim,-24)==-1)goto eop; + for(j=0;jm;){ for(k=0;kdim;k++,j++)lsp[j]+=last; last=lsp[j-1]; } - lsp[info->order]=amp; + lsp[look->m]=amp; return(lsp); } } @@ -408,21 +408,28 @@ return(NULL); } -int floor0_inverse2(vorbis_dsp_state *vd,vorbis_info_floor *i, - ogg_int32_t *lsp,ogg_int32_t *out){ - vorbis_info_floor0 *info=(vorbis_info_floor0 *)i; - codec_setup_info *ci=(codec_setup_info *)vd->vi->codec_setup; +static int floor0_inverse2(vorbis_block *vb,vorbis_look_floor *i, + void *memo,ogg_int32_t *out){ + vorbis_look_floor0 *look=(vorbis_look_floor0 *)i; + vorbis_info_floor0 *info=look->vi; - if(lsp){ - ogg_int32_t amp=lsp[info->order]; + if(memo){ + ogg_int32_t *lsp=(ogg_int32_t *)memo; + ogg_int32_t amp=lsp[look->m]; /* take the coefficients back to a spectral envelope curve */ - vorbis_lsp_to_curve(out,ci->blocksizes[vd->W]/2,info->barkmap, - lsp,info->order,amp,info->ampdB, - info->rate>>1); + vorbis_lsp_to_curve(out,look->linearmap,look->n,look->ln, + lsp,look->m,amp,info->ampdB,look->lsp_look); return(1); } - memset(out,0,sizeof(*out)*ci->blocksizes[vd->W]/2); + memset(out,0,sizeof(*out)*look->n); return(0); } +/* export hooks */ +vorbis_func_floor floor0_exportbundle={ + &floor0_unpack,&floor0_look,&floor0_free_info, + &floor0_free_look,&floor0_inverse1,&floor0_inverse2 +}; + + diff -r 3331b30e4ef1 -r 88fde28bbda6 misc/libtremor/tremor/floor1.c --- a/misc/libtremor/tremor/floor1.c Sun Oct 21 01:28:33 2012 +0400 +++ b/misc/libtremor/tremor/floor1.c Sat Nov 03 00:34:35 2012 +0400 @@ -6,7 +6,7 @@ * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE * * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. * * * - * THE OggVorbis 'TREMOR' SOURCE CODE IS (C) COPYRIGHT 1994-2003 * + * THE OggVorbis 'TREMOR' SOURCE CODE IS (C) COPYRIGHT 1994-2002 * * BY THE Xiph.Org FOUNDATION http://www.xiph.org/ * * * ******************************************************************** @@ -21,29 +21,44 @@ #include "ogg.h" #include "ivorbiscodec.h" #include "codec_internal.h" +#include "registry.h" #include "codebook.h" #include "misc.h" +#include "block.h" -extern const ogg_int32_t FLOOR_fromdB_LOOKUP[]; #define floor1_rangedB 140 /* floor 1 fixed at -140dB to 0dB range */ -#define VIF_POSIT 63 + +typedef struct { + int forward_index[VIF_POSIT+2]; + + int hineighbor[VIF_POSIT]; + int loneighbor[VIF_POSIT]; + int posts; + + int n; + int quant_q; + vorbis_info_floor1 *vi; + +} vorbis_look_floor1; /***********************************************/ -void floor1_free_info(vorbis_info_floor *i){ +static void floor1_free_info(vorbis_info_floor *i){ vorbis_info_floor1 *info=(vorbis_info_floor1 *)i; if(info){ - if(info->class)_ogg_free(info->class); - if(info->partitionclass)_ogg_free(info->partitionclass); - if(info->postlist)_ogg_free(info->postlist); - if(info->forward_index)_ogg_free(info->forward_index); - if(info->hineighbor)_ogg_free(info->hineighbor); - if(info->loneighbor)_ogg_free(info->loneighbor); memset(info,0,sizeof(*info)); _ogg_free(info); } } +static void floor1_free_look(vorbis_look_floor *i){ + vorbis_look_floor1 *look=(vorbis_look_floor1 *)i; + if(look){ + memset(look,0,sizeof(*look)); + _ogg_free(look); + } +} + static int ilog(unsigned int v){ int ret=0; while(v){ @@ -53,41 +68,31 @@ return(ret); } -static int icomp(const void *a,const void *b){ - return(**(ogg_uint16_t **)a-**(ogg_uint16_t **)b); -} - -vorbis_info_floor *floor1_info_unpack (vorbis_info *vi,oggpack_buffer *opb){ +static vorbis_info_floor *floor1_unpack (vorbis_info *vi,oggpack_buffer *opb){ codec_setup_info *ci=(codec_setup_info *)vi->codec_setup; int j,k,count=0,maxclass=-1,rangebits; - ogg_uint16_t *sortpointer[VIF_POSIT+2]; - + vorbis_info_floor1 *info=(vorbis_info_floor1 *)_ogg_calloc(1,sizeof(*info)); /* read partitions */ info->partitions=oggpack_read(opb,5); /* only 0 to 31 legal */ - info->partitionclass= - (char *)_ogg_malloc(info->partitions*sizeof(*info->partitionclass)); for(j=0;jpartitions;j++){ info->partitionclass[j]=oggpack_read(opb,4); /* only 0 to 15 legal */ if(maxclasspartitionclass[j])maxclass=info->partitionclass[j]; } /* read partition classes */ - info->class= - (floor1class *)_ogg_malloc((maxclass+1)*sizeof(*info->class)); for(j=0;jclass[j].class_dim=oggpack_read(opb,3)+1; /* 1 to 8 */ - info->class[j].class_subs=oggpack_read(opb,2); /* 0,1,2,3 bits */ - if(oggpack_eop(opb)<0) goto err_out; - if(info->class[j].class_subs) - info->class[j].class_book=oggpack_read(opb,8); - else - info->class[j].class_book=0; - if(info->class[j].class_book>=ci->books)goto err_out; - for(k=0;k<(1<class[j].class_subs);k++){ - info->class[j].class_subbook[k]=oggpack_read(opb,8)-1; - if(info->class[j].class_subbook[k]>=ci->books && - info->class[j].class_subbook[k]!=0xff)goto err_out; + info->class_dim[j]=oggpack_read(opb,3)+1; /* 1 to 8 */ + info->class_subs[j]=oggpack_read(opb,2); /* 0,1,2,3 bits */ + if(info->class_subs[j]<0) + goto err_out; + if(info->class_subs[j])info->class_book[j]=oggpack_read(opb,8); + if(info->class_book[j]<0 || info->class_book[j]>=ci->books) + goto err_out; + for(k=0;k<(1<class_subs[j]);k++){ + info->class_subbook[j][k]=oggpack_read(opb,8)-1; + if(info->class_subbook[j][k]<-1 || info->class_subbook[j][k]>=ci->books) + goto err_out; } } @@ -95,61 +100,16 @@ info->mult=oggpack_read(opb,2)+1; /* only 1,2,3,4 legal now */ rangebits=oggpack_read(opb,4); - for(j=0,k=0;jpartitions;j++) - count+=info->class[info->partitionclass[j]].class_dim; - info->postlist= - (ogg_uint16_t *)_ogg_malloc((count+2)*sizeof(*info->postlist)); - info->forward_index= - (char *)_ogg_malloc((count+2)*sizeof(*info->forward_index)); - info->loneighbor= - (char *)_ogg_malloc(count*sizeof(*info->loneighbor)); - info->hineighbor= - (char *)_ogg_malloc(count*sizeof(*info->hineighbor)); - - count=0; for(j=0,k=0;jpartitions;j++){ - count+=info->class[info->partitionclass[j]].class_dim; - if(count>VIF_POSIT)goto err_out; + count+=info->class_dim[info->partitionclass[j]]; for(;kpostlist[k+2]=oggpack_read(opb,rangebits); - if(t>=(1<=(1<postlist[0]=0; info->postlist[1]=1<posts=count+2; - - /* also store a sorted position index */ - for(j=0;jposts;j++)sortpointer[j]=info->postlist+j; - qsort(sortpointer,info->posts,sizeof(*sortpointer),icomp); - - /* points from sort order back to range number */ - for(j=0;jposts;j++) - info->forward_index[j]=sortpointer[j]-info->postlist; - - /* discover our neighbors for decode where we don't use fit flags - (that would push the neighbors outward) */ - for(j=0;jposts-2;j++){ - int lo=0; - int hi=1; - int lx=0; - int hx=info->postlist[1]; - int currentx=info->postlist[j+2]; - for(k=0;kpostlist[k]; - if(x>lx && xcurrentx){ - hi=k; - hx=x; - } - } - info->loneighbor[j]=lo; - info->hineighbor[j]=hi; - } return(info); @@ -158,6 +118,81 @@ return(NULL); } +static int icomp(const void *a,const void *b){ + return(**(int **)a-**(int **)b); +} + +static vorbis_look_floor *floor1_look(vorbis_dsp_state *vd,vorbis_info_mode *mi, + vorbis_info_floor *in){ + + int *sortpointer[VIF_POSIT+2]; + vorbis_info_floor1 *info=(vorbis_info_floor1 *)in; + vorbis_look_floor1 *look=(vorbis_look_floor1 *)_ogg_calloc(1,sizeof(*look)); + int i,j,n=0; + + look->vi=info; + look->n=info->postlist[1]; + + /* we drop each position value in-between already decoded values, + and use linear interpolation to predict each new value past the + edges. The positions are read in the order of the position + list... we precompute the bounding positions in the lookup. Of + course, the neighbors can change (if a position is declined), but + this is an initial mapping */ + + for(i=0;ipartitions;i++)n+=info->class_dim[info->partitionclass[i]]; + n+=2; + look->posts=n; + + /* also store a sorted position index */ + for(i=0;ipostlist+i; + qsort(sortpointer,n,sizeof(*sortpointer),icomp); + + /* points from sort order back to range number */ + for(i=0;iforward_index[i]=sortpointer[i]-info->postlist; + + /* quantize values to multiplier spec */ + switch(info->mult){ + case 1: /* 1024 -> 256 */ + look->quant_q=256; + break; + case 2: /* 1024 -> 128 */ + look->quant_q=128; + break; + case 3: /* 1024 -> 86 */ + look->quant_q=86; + break; + case 4: /* 1024 -> 64 */ + look->quant_q=64; + break; + } + + /* discover our neighbors for decode where we don't use fit flags + (that would push the neighbors outward) */ + for(i=0;in; + int currentx=info->postlist[i+2]; + for(j=0;jpostlist[j]; + if(x>lx && xcurrentx){ + hi=j; + hx=x; + } + } + look->loneighbor[i]=lo; + look->hineighbor[i]=hi; + } + + return(look); +} + static int render_point(int x0,int x1,int y0,int y1,int x){ y0&=0x7fff; /* mask off flag */ y1&=0x7fff; @@ -174,6 +209,79 @@ } } +#ifdef _LOW_ACCURACY_ +# define XdB(n) ((((n)>>8)+1)>>1) +#else +# define XdB(n) (n) +#endif + +static const ogg_int32_t FLOOR_fromdB_LOOKUP[256]={ + XdB(0x000000e5), XdB(0x000000f4), XdB(0x00000103), XdB(0x00000114), + XdB(0x00000126), XdB(0x00000139), XdB(0x0000014e), XdB(0x00000163), + XdB(0x0000017a), XdB(0x00000193), XdB(0x000001ad), XdB(0x000001c9), + XdB(0x000001e7), XdB(0x00000206), XdB(0x00000228), XdB(0x0000024c), + XdB(0x00000272), XdB(0x0000029b), XdB(0x000002c6), XdB(0x000002f4), + XdB(0x00000326), XdB(0x0000035a), XdB(0x00000392), XdB(0x000003cd), + XdB(0x0000040c), XdB(0x00000450), XdB(0x00000497), XdB(0x000004e4), + XdB(0x00000535), XdB(0x0000058c), XdB(0x000005e8), XdB(0x0000064a), + XdB(0x000006b3), XdB(0x00000722), XdB(0x00000799), XdB(0x00000818), + XdB(0x0000089e), XdB(0x0000092e), XdB(0x000009c6), XdB(0x00000a69), + XdB(0x00000b16), XdB(0x00000bcf), XdB(0x00000c93), XdB(0x00000d64), + XdB(0x00000e43), XdB(0x00000f30), XdB(0x0000102d), XdB(0x0000113a), + XdB(0x00001258), XdB(0x0000138a), XdB(0x000014cf), XdB(0x00001629), + XdB(0x0000179a), XdB(0x00001922), XdB(0x00001ac4), XdB(0x00001c82), + XdB(0x00001e5c), XdB(0x00002055), XdB(0x0000226f), XdB(0x000024ac), + XdB(0x0000270e), XdB(0x00002997), XdB(0x00002c4b), XdB(0x00002f2c), + XdB(0x0000323d), XdB(0x00003581), XdB(0x000038fb), XdB(0x00003caf), + XdB(0x000040a0), XdB(0x000044d3), XdB(0x0000494c), XdB(0x00004e10), + XdB(0x00005323), XdB(0x0000588a), XdB(0x00005e4b), XdB(0x0000646b), + XdB(0x00006af2), XdB(0x000071e5), XdB(0x0000794c), XdB(0x0000812e), + XdB(0x00008993), XdB(0x00009283), XdB(0x00009c09), XdB(0x0000a62d), + XdB(0x0000b0f9), XdB(0x0000bc79), XdB(0x0000c8b9), XdB(0x0000d5c4), + XdB(0x0000e3a9), XdB(0x0000f274), XdB(0x00010235), XdB(0x000112fd), + XdB(0x000124dc), XdB(0x000137e4), XdB(0x00014c29), XdB(0x000161bf), + XdB(0x000178bc), XdB(0x00019137), XdB(0x0001ab4a), XdB(0x0001c70e), + XdB(0x0001e4a1), XdB(0x0002041f), XdB(0x000225aa), XdB(0x00024962), + XdB(0x00026f6d), XdB(0x000297f0), XdB(0x0002c316), XdB(0x0002f109), + XdB(0x000321f9), XdB(0x00035616), XdB(0x00038d97), XdB(0x0003c8b4), + XdB(0x000407a7), XdB(0x00044ab2), XdB(0x00049218), XdB(0x0004de23), + XdB(0x00052f1e), XdB(0x0005855c), XdB(0x0005e135), XdB(0x00064306), + XdB(0x0006ab33), XdB(0x00071a24), XdB(0x0007904b), XdB(0x00080e20), + XdB(0x00089422), XdB(0x000922da), XdB(0x0009bad8), XdB(0x000a5cb6), + XdB(0x000b091a), XdB(0x000bc0b1), XdB(0x000c8436), XdB(0x000d5471), + XdB(0x000e3233), XdB(0x000f1e5f), XdB(0x001019e4), XdB(0x001125c1), + XdB(0x00124306), XdB(0x001372d5), XdB(0x0014b663), XdB(0x00160ef7), + XdB(0x00177df0), XdB(0x001904c1), XdB(0x001aa4f9), XdB(0x001c603d), + XdB(0x001e384f), XdB(0x00202f0f), XdB(0x0022467a), XdB(0x002480b1), + XdB(0x0026dff7), XdB(0x002966b3), XdB(0x002c1776), XdB(0x002ef4fc), + XdB(0x0032022d), XdB(0x00354222), XdB(0x0038b828), XdB(0x003c67c2), + XdB(0x004054ae), XdB(0x004482e8), XdB(0x0048f6af), XdB(0x004db488), + XdB(0x0052c142), XdB(0x005821ff), XdB(0x005ddc33), XdB(0x0063f5b0), + XdB(0x006a74a7), XdB(0x00715faf), XdB(0x0078bdce), XdB(0x0080967f), + XdB(0x0088f1ba), XdB(0x0091d7f9), XdB(0x009b5247), XdB(0x00a56a41), + XdB(0x00b02a27), XdB(0x00bb9ce2), XdB(0x00c7ce12), XdB(0x00d4ca17), + XdB(0x00e29e20), XdB(0x00f15835), XdB(0x0101074b), XdB(0x0111bb4e), + XdB(0x01238531), XdB(0x01367704), XdB(0x014aa402), XdB(0x016020a7), + XdB(0x017702c3), XdB(0x018f6190), XdB(0x01a955cb), XdB(0x01c4f9cf), + XdB(0x01e269a8), XdB(0x0201c33b), XdB(0x0223265a), XdB(0x0246b4ea), + XdB(0x026c9302), XdB(0x0294e716), XdB(0x02bfda13), XdB(0x02ed9793), + XdB(0x031e4e09), XdB(0x03522ee4), XdB(0x03896ed0), XdB(0x03c445e2), + XdB(0x0402efd6), XdB(0x0445ac4b), XdB(0x048cbefc), XdB(0x04d87013), + XdB(0x05290c67), XdB(0x057ee5ca), XdB(0x05da5364), XdB(0x063bb204), + XdB(0x06a36485), XdB(0x0711d42b), XdB(0x0787710e), XdB(0x0804b299), + XdB(0x088a17ef), XdB(0x0918287e), XdB(0x09af747c), XdB(0x0a50957e), + XdB(0x0afc2f19), XdB(0x0bb2ef7f), XdB(0x0c759034), XdB(0x0d44d6ca), + XdB(0x0e2195bc), XdB(0x0f0cad0d), XdB(0x10070b62), XdB(0x1111aeea), + XdB(0x122da66c), XdB(0x135c120f), XdB(0x149e24d9), XdB(0x15f525b1), + XdB(0x176270e3), XdB(0x18e7794b), XdB(0x1a85c9ae), XdB(0x1c3f06d1), + XdB(0x1e14f07d), XdB(0x200963d7), XdB(0x221e5ccd), XdB(0x2455f870), + XdB(0x26b2770b), XdB(0x29363e2b), XdB(0x2be3db5c), XdB(0x2ebe06b6), + XdB(0x31c7a55b), XdB(0x3503ccd4), XdB(0x3875c5aa), XdB(0x3c210f44), + XdB(0x4009632b), XdB(0x4432b8cf), XdB(0x48a149bc), XdB(0x4d59959e), + XdB(0x52606733), XdB(0x57bad899), XdB(0x5d6e593a), XdB(0x6380b298), + XdB(0x69f80e9a), XdB(0x70dafda8), XdB(0x78307d76), XdB(0x7fffffff), +}; + static void render_line(int n, int x0,int x1,int y0,int y1,ogg_int32_t *d){ int dy=y1-y0; int adx=x1-x0; @@ -202,48 +310,42 @@ } } -int floor1_memosize(vorbis_info_floor *i){ - vorbis_info_floor1 *info=(vorbis_info_floor1 *)i; - return info->posts; -} - -static int quant_look[4]={256,128,86,64}; - -ogg_int32_t *floor1_inverse1(vorbis_dsp_state *vd,vorbis_info_floor *in, - ogg_int32_t *fit_value){ - vorbis_info_floor1 *info=(vorbis_info_floor1 *)in; - codec_setup_info *ci=(codec_setup_info *)vd->vi->codec_setup; +static void *floor1_inverse1(vorbis_block *vb,vorbis_look_floor *in){ + vorbis_look_floor1 *look=(vorbis_look_floor1 *)in; + vorbis_info_floor1 *info=look->vi; + codec_setup_info *ci=(codec_setup_info *)vb->vd->vi->codec_setup; int i,j,k; - codebook *books=ci->book_param; - int quant_q=quant_look[info->mult-1]; - + codebook *books=ci->fullbooks; + /* unpack wrapped/predicted values from stream */ - if(oggpack_read(&vd->opb,1)==1){ - fit_value[0]=oggpack_read(&vd->opb,ilog(quant_q-1)); - fit_value[1]=oggpack_read(&vd->opb,ilog(quant_q-1)); + if(oggpack_read(&vb->opb,1)==1){ + int *fit_value=(int *)_vorbis_block_alloc(vb,(look->posts)*sizeof(*fit_value)); + + fit_value[0]=oggpack_read(&vb->opb,ilog(look->quant_q-1)); + fit_value[1]=oggpack_read(&vb->opb,ilog(look->quant_q-1)); /* partition by partition */ /* partition by partition */ for(i=0,j=2;ipartitions;i++){ int classv=info->partitionclass[i]; - int cdim=info->class[classv].class_dim; - int csubbits=info->class[classv].class_subs; + int cdim=info->class_dim[classv]; + int csubbits=info->class_subs[classv]; int csub=1<class[classv].class_book,&vd->opb); + cval=vorbis_book_decode(books+info->class_book[classv],&vb->opb); if(cval==-1)goto eop; } for(k=0;kclass[classv].class_subbook[cval&(csub-1)]; + int book=info->class_subbook[classv][cval&(csub-1)]; cval>>=csubbits; - if(book!=0xff){ - if((fit_value[j+k]=vorbis_book_decode(books+book,&vd->opb))==-1) + if(book>=0){ + if((fit_value[j+k]=vorbis_book_decode(books+book,&vb->opb))==-1) goto eop; }else{ fit_value[j+k]=0; @@ -253,13 +355,13 @@ } /* unwrap positive values and reconsitute via linear interpolation */ - for(i=2;iposts;i++){ - int predicted=render_point(info->postlist[info->loneighbor[i-2]], - info->postlist[info->hineighbor[i-2]], - fit_value[info->loneighbor[i-2]], - fit_value[info->hineighbor[i-2]], + for(i=2;iposts;i++){ + int predicted=render_point(info->postlist[look->loneighbor[i-2]], + info->postlist[look->hineighbor[i-2]], + fit_value[look->loneighbor[i-2]], + fit_value[look->hineighbor[i-2]], info->postlist[i]); - int hiroom=quant_q-predicted; + int hiroom=look->quant_q-predicted; int loroom=predicted; int room=(hiroomloneighbor[i-2]]&=0x7fff; - fit_value[info->hineighbor[i-2]]&=0x7fff; + fit_value[look->loneighbor[i-2]]&=0x7fff; + fit_value[look->hineighbor[i-2]]&=0x7fff; }else{ fit_value[i]=predicted|0x8000; @@ -295,21 +397,23 @@ return(NULL); } -int floor1_inverse2(vorbis_dsp_state *vd,vorbis_info_floor *in, - ogg_int32_t *fit_value,ogg_int32_t *out){ - vorbis_info_floor1 *info=(vorbis_info_floor1 *)in; +static int floor1_inverse2(vorbis_block *vb,vorbis_look_floor *in,void *memo, + ogg_int32_t *out){ + vorbis_look_floor1 *look=(vorbis_look_floor1 *)in; + vorbis_info_floor1 *info=look->vi; - codec_setup_info *ci=(codec_setup_info *)vd->vi->codec_setup; - int n=ci->blocksizes[vd->W]/2; + codec_setup_info *ci=(codec_setup_info *)vb->vd->vi->codec_setup; + int n=ci->blocksizes[vb->W]/2; int j; - if(fit_value){ + if(memo){ /* render the lines */ + int *fit_value=(int *)memo; int hx=0; int lx=0; int ly=fit_value[0]*info->mult; - for(j=1;jposts;j++){ - int current=info->forward_index[j]; + for(j=1;jposts;j++){ + int current=look->forward_index[j]; int hy=fit_value[current]&0x7fff; if(hy==fit_value[current]){ @@ -328,3 +432,10 @@ memset(out,0,sizeof(*out)*n); return(0); } + +/* export hooks */ +vorbis_func_floor floor1_exportbundle={ + &floor1_unpack,&floor1_look,&floor1_free_info, + &floor1_free_look,&floor1_inverse1,&floor1_inverse2 +}; + diff -r 3331b30e4ef1 -r 88fde28bbda6 misc/libtremor/tremor/floor_lookup.c --- a/misc/libtremor/tremor/floor_lookup.c Sun Oct 21 01:28:33 2012 +0400 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,92 +0,0 @@ -/******************************************************************** - * * - * THIS FILE IS PART OF THE OggVorbis 'TREMOR' CODEC SOURCE CODE. * - * * - * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS * - * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE * - * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. * - * * - * THE OggVorbis 'TREMOR' SOURCE CODE IS (C) COPYRIGHT 1994-2003 * - * BY THE Xiph.Org FOUNDATION http://www.xiph.org/ * - * * - ******************************************************************** - - function: floor dB lookup - - ********************************************************************/ - -#include "os.h" - -#ifdef _LOW_ACCURACY_ -# define XdB(n) ((((n)>>8)+1)>>1) -#else -# define XdB(n) (n) -#endif - -const ogg_int32_t FLOOR_fromdB_LOOKUP[256]={ - XdB(0x000000e5), XdB(0x000000f4), XdB(0x00000103), XdB(0x00000114), - XdB(0x00000126), XdB(0x00000139), XdB(0x0000014e), XdB(0x00000163), - XdB(0x0000017a), XdB(0x00000193), XdB(0x000001ad), XdB(0x000001c9), - XdB(0x000001e7), XdB(0x00000206), XdB(0x00000228), XdB(0x0000024c), - XdB(0x00000272), XdB(0x0000029b), XdB(0x000002c6), XdB(0x000002f4), - XdB(0x00000326), XdB(0x0000035a), XdB(0x00000392), XdB(0x000003cd), - XdB(0x0000040c), XdB(0x00000450), XdB(0x00000497), XdB(0x000004e4), - XdB(0x00000535), XdB(0x0000058c), XdB(0x000005e8), XdB(0x0000064a), - XdB(0x000006b3), XdB(0x00000722), XdB(0x00000799), XdB(0x00000818), - XdB(0x0000089e), XdB(0x0000092e), XdB(0x000009c6), XdB(0x00000a69), - XdB(0x00000b16), XdB(0x00000bcf), XdB(0x00000c93), XdB(0x00000d64), - XdB(0x00000e43), XdB(0x00000f30), XdB(0x0000102d), XdB(0x0000113a), - XdB(0x00001258), XdB(0x0000138a), XdB(0x000014cf), XdB(0x00001629), - XdB(0x0000179a), XdB(0x00001922), XdB(0x00001ac4), XdB(0x00001c82), - XdB(0x00001e5c), XdB(0x00002055), XdB(0x0000226f), XdB(0x000024ac), - XdB(0x0000270e), XdB(0x00002997), XdB(0x00002c4b), XdB(0x00002f2c), - XdB(0x0000323d), XdB(0x00003581), XdB(0x000038fb), XdB(0x00003caf), - XdB(0x000040a0), XdB(0x000044d3), XdB(0x0000494c), XdB(0x00004e10), - XdB(0x00005323), XdB(0x0000588a), XdB(0x00005e4b), XdB(0x0000646b), - XdB(0x00006af2), XdB(0x000071e5), XdB(0x0000794c), XdB(0x0000812e), - XdB(0x00008993), XdB(0x00009283), XdB(0x00009c09), XdB(0x0000a62d), - XdB(0x0000b0f9), XdB(0x0000bc79), XdB(0x0000c8b9), XdB(0x0000d5c4), - XdB(0x0000e3a9), XdB(0x0000f274), XdB(0x00010235), XdB(0x000112fd), - XdB(0x000124dc), XdB(0x000137e4), XdB(0x00014c29), XdB(0x000161bf), - XdB(0x000178bc), XdB(0x00019137), XdB(0x0001ab4a), XdB(0x0001c70e), - XdB(0x0001e4a1), XdB(0x0002041f), XdB(0x000225aa), XdB(0x00024962), - XdB(0x00026f6d), XdB(0x000297f0), XdB(0x0002c316), XdB(0x0002f109), - XdB(0x000321f9), XdB(0x00035616), XdB(0x00038d97), XdB(0x0003c8b4), - XdB(0x000407a7), XdB(0x00044ab2), XdB(0x00049218), XdB(0x0004de23), - XdB(0x00052f1e), XdB(0x0005855c), XdB(0x0005e135), XdB(0x00064306), - XdB(0x0006ab33), XdB(0x00071a24), XdB(0x0007904b), XdB(0x00080e20), - XdB(0x00089422), XdB(0x000922da), XdB(0x0009bad8), XdB(0x000a5cb6), - XdB(0x000b091a), XdB(0x000bc0b1), XdB(0x000c8436), XdB(0x000d5471), - XdB(0x000e3233), XdB(0x000f1e5f), XdB(0x001019e4), XdB(0x001125c1), - XdB(0x00124306), XdB(0x001372d5), XdB(0x0014b663), XdB(0x00160ef7), - XdB(0x00177df0), XdB(0x001904c1), XdB(0x001aa4f9), XdB(0x001c603d), - XdB(0x001e384f), XdB(0x00202f0f), XdB(0x0022467a), XdB(0x002480b1), - XdB(0x0026dff7), XdB(0x002966b3), XdB(0x002c1776), XdB(0x002ef4fc), - XdB(0x0032022d), XdB(0x00354222), XdB(0x0038b828), XdB(0x003c67c2), - XdB(0x004054ae), XdB(0x004482e8), XdB(0x0048f6af), XdB(0x004db488), - XdB(0x0052c142), XdB(0x005821ff), XdB(0x005ddc33), XdB(0x0063f5b0), - XdB(0x006a74a7), XdB(0x00715faf), XdB(0x0078bdce), XdB(0x0080967f), - XdB(0x0088f1ba), XdB(0x0091d7f9), XdB(0x009b5247), XdB(0x00a56a41), - XdB(0x00b02a27), XdB(0x00bb9ce2), XdB(0x00c7ce12), XdB(0x00d4ca17), - XdB(0x00e29e20), XdB(0x00f15835), XdB(0x0101074b), XdB(0x0111bb4e), - XdB(0x01238531), XdB(0x01367704), XdB(0x014aa402), XdB(0x016020a7), - XdB(0x017702c3), XdB(0x018f6190), XdB(0x01a955cb), XdB(0x01c4f9cf), - XdB(0x01e269a8), XdB(0x0201c33b), XdB(0x0223265a), XdB(0x0246b4ea), - XdB(0x026c9302), XdB(0x0294e716), XdB(0x02bfda13), XdB(0x02ed9793), - XdB(0x031e4e09), XdB(0x03522ee4), XdB(0x03896ed0), XdB(0x03c445e2), - XdB(0x0402efd6), XdB(0x0445ac4b), XdB(0x048cbefc), XdB(0x04d87013), - XdB(0x05290c67), XdB(0x057ee5ca), XdB(0x05da5364), XdB(0x063bb204), - XdB(0x06a36485), XdB(0x0711d42b), XdB(0x0787710e), XdB(0x0804b299), - XdB(0x088a17ef), XdB(0x0918287e), XdB(0x09af747c), XdB(0x0a50957e), - XdB(0x0afc2f19), XdB(0x0bb2ef7f), XdB(0x0c759034), XdB(0x0d44d6ca), - XdB(0x0e2195bc), XdB(0x0f0cad0d), XdB(0x10070b62), XdB(0x1111aeea), - XdB(0x122da66c), XdB(0x135c120f), XdB(0x149e24d9), XdB(0x15f525b1), - XdB(0x176270e3), XdB(0x18e7794b), XdB(0x1a85c9ae), XdB(0x1c3f06d1), - XdB(0x1e14f07d), XdB(0x200963d7), XdB(0x221e5ccd), XdB(0x2455f870), - XdB(0x26b2770b), XdB(0x29363e2b), XdB(0x2be3db5c), XdB(0x2ebe06b6), - XdB(0x31c7a55b), XdB(0x3503ccd4), XdB(0x3875c5aa), XdB(0x3c210f44), - XdB(0x4009632b), XdB(0x4432b8cf), XdB(0x48a149bc), XdB(0x4d59959e), - XdB(0x52606733), XdB(0x57bad899), XdB(0x5d6e593a), XdB(0x6380b298), - XdB(0x69f80e9a), XdB(0x70dafda8), XdB(0x78307d76), XdB(0x7fffffff), -}; - diff -r 3331b30e4ef1 -r 88fde28bbda6 misc/libtremor/tremor/framing.c --- a/misc/libtremor/tremor/framing.c Sun Oct 21 01:28:33 2012 +0400 +++ b/misc/libtremor/tremor/framing.c Sat Nov 03 00:34:35 2012 +0400 @@ -156,11 +156,19 @@ } /* duplicate a reference (pointing to the same actual buffer memory) - and increment buffer refcount. If the desired segment is zero - length, a zero length ref is returned. */ -static ogg_reference *ogg_buffer_sub(ogg_reference *or,long length){ + and increment buffer refcount. If the desired segment begins out + of range, NULL is returned; if the desired segment is simply zero + length, a zero length ref is returned. Partial range overlap + returns the overlap of the ranges */ +static ogg_reference *ogg_buffer_sub(ogg_reference *or,long begin,long length){ ogg_reference *ret=0,*head=0; - + + /* walk past any preceeding fragments we don't want */ + while(or && begin>=or->length){ + begin-=or->length; + or=or->next; + } + /* duplicate the reference chain; increment refcounts */ while(or && length){ ogg_reference *temp=_fetch_ref(or->buffer->ptr.owner); @@ -170,11 +178,12 @@ ret=temp; head=temp; head->buffer=or->buffer; - head->begin=or->begin; + head->begin=or->begin+begin; head->length=length; - if(head->length>or->length) - head->length=or->length; + if(head->length>or->length-begin) + head->length=or->length-begin; + begin=0; length-=head->length; or=or->next; } @@ -418,43 +427,43 @@ int ogg_page_version(ogg_page *og){ oggbyte_buffer ob; - if(oggbyte_init(&ob,og->header))return -1; + oggbyte_init(&ob,og->header); return oggbyte_read1(&ob,4); } int ogg_page_continued(ogg_page *og){ oggbyte_buffer ob; - if(oggbyte_init(&ob,og->header))return -1; + oggbyte_init(&ob,og->header); return oggbyte_read1(&ob,5)&0x01; } int ogg_page_bos(ogg_page *og){ oggbyte_buffer ob; - if(oggbyte_init(&ob,og->header))return -1; + oggbyte_init(&ob,og->header); return oggbyte_read1(&ob,5)&0x02; } int ogg_page_eos(ogg_page *og){ oggbyte_buffer ob; - if(oggbyte_init(&ob,og->header))return -1; + oggbyte_init(&ob,og->header); return oggbyte_read1(&ob,5)&0x04; } ogg_int64_t ogg_page_granulepos(ogg_page *og){ oggbyte_buffer ob; - if(oggbyte_init(&ob,og->header))return -1; + oggbyte_init(&ob,og->header); return oggbyte_read8(&ob,6); } ogg_uint32_t ogg_page_serialno(ogg_page *og){ oggbyte_buffer ob; - if(oggbyte_init(&ob,og->header)) return 0xffffffffUL; + oggbyte_init(&ob,og->header); return oggbyte_read4(&ob,14); } ogg_uint32_t ogg_page_pageno(ogg_page *og){ oggbyte_buffer ob; - if(oggbyte_init(&ob,og->header))return 0xffffffffUL; + oggbyte_init(&ob,og->header); return oggbyte_read4(&ob,18); } @@ -1070,7 +1079,7 @@ _next_lace(&ob,os); }else{ if(op){ - op->packet=ogg_buffer_sub(os->body_tail,os->body_fill&FINMASK); + op->packet=ogg_buffer_sub(os->body_tail,0,os->body_fill&FINMASK); op->bytes=os->body_fill&FINMASK; } } diff -r 3331b30e4ef1 -r 88fde28bbda6 misc/libtremor/tremor/info.c --- a/misc/libtremor/tremor/info.c Sun Oct 21 01:28:33 2012 +0400 +++ b/misc/libtremor/tremor/info.c Sat Nov 03 00:34:35 2012 +0400 @@ -25,8 +25,9 @@ #include "ivorbiscodec.h" #include "codec_internal.h" #include "codebook.h" +#include "registry.h" +#include "window.h" #include "misc.h" -#include "os.h" /* helpers */ static void _v_readstring(oggpack_buffer *o,char *buf,int bytes){ @@ -95,8 +96,8 @@ if(vc->user_comments)_ogg_free(vc->user_comments); if(vc->comment_lengths)_ogg_free(vc->comment_lengths); if(vc->vendor)_ogg_free(vc->vendor); + memset(vc,0,sizeof(*vc)); } - memset(vc,0,sizeof(*vc)); } /* blocksize 0 is guaranteed to be short, 1 is guarantted to be long. @@ -118,35 +119,31 @@ if(ci){ - if(ci->mode_param)_ogg_free(ci->mode_param); + for(i=0;imodes;i++) + if(ci->mode_param[i])_ogg_free(ci->mode_param[i]); - if(ci->map_param){ - for(i=0;imaps;i++) /* unpack does the range checking */ - mapping_clear_info(ci->map_param+i); - _ogg_free(ci->map_param); - } + for(i=0;imaps;i++) /* unpack does the range checking */ + if(ci->map_param[i]) + _mapping_P[ci->map_type[i]]->free_info(ci->map_param[i]); - if(ci->floor_param){ - for(i=0;ifloors;i++) /* unpack does the range checking */ - if(ci->floor_type[i]) - floor1_free_info(ci->floor_param[i]); - else - floor0_free_info(ci->floor_param[i]); - _ogg_free(ci->floor_param); - _ogg_free(ci->floor_type); - } + for(i=0;ifloors;i++) /* unpack does the range checking */ + if(ci->floor_param[i]) + _floor_P[ci->floor_type[i]]->free_info(ci->floor_param[i]); + + for(i=0;iresidues;i++) /* unpack does the range checking */ + if(ci->residue_param[i]) + _residue_P[ci->residue_type[i]]->free_info(ci->residue_param[i]); - if(ci->residue_param){ - for(i=0;iresidues;i++) /* unpack does the range checking */ - res_clear_info(ci->residue_param+i); - _ogg_free(ci->residue_param); + for(i=0;ibooks;i++){ + if(ci->book_param[i]){ + /* knows if the book was not alloced */ + vorbis_staticbook_destroy(ci->book_param[i]); + } + if(ci->fullbooks) + vorbis_book_clear(ci->fullbooks+i); } - - if(ci->book_param){ - for(i=0;ibooks;i++) - vorbis_book_clear(ci->book_param+i); - _ogg_free(ci->book_param); - } + if(ci->fullbooks) + _ogg_free(ci->fullbooks); _ogg_free(ci); } @@ -222,53 +219,70 @@ /* codebooks */ ci->books=oggpack_read(opb,8)+1; - ci->book_param=(codebook *)_ogg_calloc(ci->books,sizeof(*ci->book_param)); - for(i=0;ibooks;i++) - if(vorbis_book_unpack(opb,ci->book_param+i))goto err_out; + /*ci->book_param=_ogg_calloc(ci->books,sizeof(*ci->book_param));*/ + for(i=0;ibooks;i++){ + ci->book_param[i]=(static_codebook *)_ogg_calloc(1,sizeof(*ci->book_param[i])); + if(vorbis_staticbook_unpack(opb,ci->book_param[i]))goto err_out; + } - /* time backend settings, not actually used */ - i=oggpack_read(opb,6); - for(;i>=0;i--) - if(oggpack_read(opb,16)!=0)goto err_out; + /* time backend settings */ + ci->times=oggpack_read(opb,6)+1; + /*ci->time_type=_ogg_malloc(ci->times*sizeof(*ci->time_type));*/ + /*ci->time_param=_ogg_calloc(ci->times,sizeof(void *));*/ + for(i=0;itimes;i++){ + ci->time_type[i]=oggpack_read(opb,16); + if(ci->time_type[i]<0 || ci->time_type[i]>=VI_TIMEB)goto err_out; + /* ci->time_param[i]=_time_P[ci->time_type[i]]->unpack(vi,opb); + Vorbis I has no time backend */ + /*if(!ci->time_param[i])goto err_out;*/ + } /* floor backend settings */ ci->floors=oggpack_read(opb,6)+1; - ci->floor_param=_ogg_malloc(sizeof(*ci->floor_param)*ci->floors); - ci->floor_type=_ogg_malloc(sizeof(*ci->floor_type)*ci->floors); + /*ci->floor_type=_ogg_malloc(ci->floors*sizeof(*ci->floor_type));*/ + /*ci->floor_param=_ogg_calloc(ci->floors,sizeof(void *));*/ for(i=0;ifloors;i++){ ci->floor_type[i]=oggpack_read(opb,16); if(ci->floor_type[i]<0 || ci->floor_type[i]>=VI_FLOORB)goto err_out; - if(ci->floor_type[i]) - ci->floor_param[i]=floor1_info_unpack(vi,opb); - else - ci->floor_param[i]=floor0_info_unpack(vi,opb); + ci->floor_param[i]=_floor_P[ci->floor_type[i]]->unpack(vi,opb); if(!ci->floor_param[i])goto err_out; } /* residue backend settings */ ci->residues=oggpack_read(opb,6)+1; - ci->residue_param=_ogg_malloc(sizeof(*ci->residue_param)*ci->residues); - for(i=0;iresidues;i++) - if(res_unpack(ci->residue_param+i,vi,opb))goto err_out; + /*ci->residue_type=_ogg_malloc(ci->residues*sizeof(*ci->residue_type));*/ + /*ci->residue_param=_ogg_calloc(ci->residues,sizeof(void *));*/ + for(i=0;iresidues;i++){ + ci->residue_type[i]=oggpack_read(opb,16); + if(ci->residue_type[i]<0 || ci->residue_type[i]>=VI_RESB)goto err_out; + ci->residue_param[i]=_residue_P[ci->residue_type[i]]->unpack(vi,opb); + if(!ci->residue_param[i])goto err_out; + } /* map backend settings */ ci->maps=oggpack_read(opb,6)+1; - ci->map_param=_ogg_malloc(sizeof(*ci->map_param)*ci->maps); + /*ci->map_type=_ogg_malloc(ci->maps*sizeof(*ci->map_type));*/ + /*ci->map_param=_ogg_calloc(ci->maps,sizeof(void *));*/ for(i=0;imaps;i++){ - if(oggpack_read(opb,16)!=0)goto err_out; - if(mapping_info_unpack(ci->map_param+i,vi,opb))goto err_out; + ci->map_type[i]=oggpack_read(opb,16); + if(ci->map_type[i]<0 || ci->map_type[i]>=VI_MAPB)goto err_out; + ci->map_param[i]=_mapping_P[ci->map_type[i]]->unpack(vi,opb); + if(!ci->map_param[i])goto err_out; } /* mode settings */ ci->modes=oggpack_read(opb,6)+1; - ci->mode_param= - (vorbis_info_mode *)_ogg_malloc(ci->modes*sizeof(*ci->mode_param)); + /*vi->mode_param=_ogg_calloc(vi->modes,sizeof(void *));*/ for(i=0;imodes;i++){ - ci->mode_param[i].blockflag=oggpack_read(opb,1); - if(oggpack_read(opb,16))goto err_out; - if(oggpack_read(opb,16))goto err_out; - ci->mode_param[i].mapping=oggpack_read(opb,8); - if(ci->mode_param[i].mapping>=ci->maps)goto err_out; + ci->mode_param[i]=(vorbis_info_mode *)_ogg_calloc(1,sizeof(*ci->mode_param[i])); + ci->mode_param[i]->blockflag=oggpack_read(opb,1); + ci->mode_param[i]->windowtype=oggpack_read(opb,16); + ci->mode_param[i]->transformtype=oggpack_read(opb,16); + ci->mode_param[i]->mapping=oggpack_read(opb,8); + + if(ci->mode_param[i]->windowtype>=VI_WINDOWB)goto err_out; + if(ci->mode_param[i]->transformtype>=VI_WINDOWB)goto err_out; + if(ci->mode_param[i]->mapping>=ci->maps)goto err_out; } if(oggpack_read(opb,1)!=1)goto err_out; /* top level EOP check */ @@ -284,7 +298,7 @@ with bitstream comments and a third packet that holds the codebook. */ -int vorbis_dsp_headerin(vorbis_info *vi,vorbis_comment *vc,ogg_packet *op){ +int vorbis_synthesis_headerin(vorbis_info *vi,vorbis_comment *vc,ogg_packet *op){ oggpack_buffer opb; if(op){ diff -r 3331b30e4ef1 -r 88fde28bbda6 misc/libtremor/tremor/ivorbiscodec.h --- a/misc/libtremor/tremor/ivorbiscodec.h Sun Oct 21 01:28:33 2012 +0400 +++ b/misc/libtremor/tremor/ivorbiscodec.h Sat Nov 03 00:34:35 2012 +0400 @@ -25,9 +25,6 @@ #include "ogg.h" -struct vorbis_dsp_state; -typedef struct vorbis_dsp_state vorbis_dsp_state; - typedef struct vorbis_info{ int version; int channels; @@ -56,7 +53,80 @@ void *codec_setup; } vorbis_info; +/* vorbis_dsp_state buffers the current vorbis audio + analysis/synthesis state. The DSP state belongs to a specific + logical bitstream ****************************************************/ +typedef struct vorbis_dsp_state{ + int analysisp; + vorbis_info *vi; + + ogg_int32_t **pcm; + ogg_int32_t **pcmret; + int pcm_storage; + int pcm_current; + int pcm_returned; + + int preextrapolate; + int eofflag; + + long lW; + long W; + long nW; + long centerW; + + ogg_int64_t granulepos; + ogg_int64_t sequence; + + void *backend_state; +} vorbis_dsp_state; + +typedef struct vorbis_block{ + /* necessary stream state for linking to the framing abstraction */ + ogg_int32_t **pcm; /* this is a pointer into local storage */ + oggpack_buffer opb; + + long lW; + long W; + long nW; + int pcmend; + int mode; + + int eofflag; + ogg_int64_t granulepos; + ogg_int64_t sequence; + vorbis_dsp_state *vd; /* For read-only access of configuration */ + + /* local storage to avoid remallocing; it's up to the mapping to + structure it */ + void *localstore; + long localtop; + long localalloc; + long totaluse; + struct alloc_chain *reap; + +} vorbis_block; + +/* vorbis_block is a single block of data to be processed as part of +the analysis/synthesis stream; it belongs to a specific logical +bitstream, but is independant from other vorbis_blocks belonging to +that logical bitstream. *************************************************/ + +struct alloc_chain{ + void *ptr; + struct alloc_chain *next; +}; + +/* vorbis_info contains all the setup information specific to the + specific compression/decompression mode in progress (eg, + psychoacoustic settings, channel setup, options, codebook + etc). vorbis_info and substructures are in backends.h. +*********************************************************************/ + +/* the comments are not part of vorbis_info so that vorbis_info can be + static storage */ typedef struct vorbis_comment{ + /* unlimited user comment fields. libvorbis writes 'libvorbis' + whatever vendor is set to in encode */ char **user_comments; int *comment_lengths; int comments; @@ -65,6 +135,18 @@ } vorbis_comment; +/* libvorbis encodes in two abstraction layers; first we perform DSP + and produce a packet (see docs/analysis.txt). The packet is then + coded into a framed OggSquish bitstream by the second layer (see + docs/framing.txt). Decode is the reverse process; we sync/frame + the bitstream and extract individual packets, then decode the + packet back into PCM audio. + + The extra framing/packetizing is used in streaming formats, such as + files. Over the net (such as with UDP), the framing and + packetization aren't necessary as they're provided by the transport + and the streaming layer is not used */ + /* Vorbis PRIMITIVES: general ***************************************/ extern void vorbis_info_init(vorbis_info *vi); @@ -78,6 +160,22 @@ extern int vorbis_comment_query_count(vorbis_comment *vc, char *tag); extern void vorbis_comment_clear(vorbis_comment *vc); +extern int vorbis_block_init(vorbis_dsp_state *v, vorbis_block *vb); +extern int vorbis_block_clear(vorbis_block *vb); +extern void vorbis_dsp_clear(vorbis_dsp_state *v); + +/* Vorbis PRIMITIVES: synthesis layer *******************************/ +extern int vorbis_synthesis_headerin(vorbis_info *vi,vorbis_comment *vc, + ogg_packet *op); + +extern int vorbis_synthesis_init(vorbis_dsp_state *v,vorbis_info *vi); +extern int vorbis_synthesis_restart(vorbis_dsp_state *v); +extern int vorbis_synthesis(vorbis_block *vb,ogg_packet *op,int decodep); +extern int vorbis_synthesis_blockin(vorbis_dsp_state *v,vorbis_block *vb); +extern int vorbis_synthesis_pcmout(vorbis_dsp_state *v,ogg_int32_t ***pcm); +extern int vorbis_synthesis_read(vorbis_dsp_state *v,int samples); +extern long vorbis_packet_blocksize(vorbis_info *vi,ogg_packet *op); + /* Vorbis ERRORS and return codes ***********************************/ #define OV_FALSE -1 diff -r 3331b30e4ef1 -r 88fde28bbda6 misc/libtremor/tremor/ivorbisfile.h --- a/misc/libtremor/tremor/ivorbisfile.h Sun Oct 21 01:28:33 2012 +0400 +++ b/misc/libtremor/tremor/ivorbisfile.h Sat Nov 03 00:34:35 2012 +0400 @@ -6,7 +6,7 @@ * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE * * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. * * * - * THE OggVorbis 'TREMOR' SOURCE CODE IS (C) COPYRIGHT 1994-2003 * + * THE OggVorbis 'TREMOR' SOURCE CODE IS (C) COPYRIGHT 1994-2002 * * BY THE Xiph.Org FOUNDATION http://www.xiph.org/ * * * ******************************************************************** @@ -26,6 +26,7 @@ #include #include "ivorbiscodec.h" +#define CHUNKSIZE 1024 /* The function prototypes for the callbacks are basically the same as for * the stdio functions fread, fseek, fclose, ftell. * The one difference is that the FILE * arguments have been replaced with @@ -43,6 +44,12 @@ long (*tell_func) (void *datasource); } ov_callbacks; +#define NOTOPEN 0 +#define PARTOPEN 1 +#define OPENED 2 +#define STREAMSET 3 +#define INITSET 4 + typedef struct OggVorbis_File { void *datasource; /* Pointer to a FILE *, etc. */ int seekable; @@ -57,8 +64,8 @@ ogg_int64_t *dataoffsets; ogg_uint32_t *serialnos; ogg_int64_t *pcmlengths; - vorbis_info vi; - vorbis_comment vc; + vorbis_info *vi; + vorbis_comment *vc; /* Decoding working state local storage */ ogg_int64_t pcm_offset; @@ -71,7 +78,8 @@ ogg_stream_state *os; /* take physical pages, weld into a logical stream of packets */ - vorbis_dsp_state *vd; /* central working state for the packet->PCM decoder */ + vorbis_dsp_state vd; /* central working state for the packet->PCM decoder */ + vorbis_block vb; /* local working space for packet->PCM decode */ ov_callbacks callbacks; @@ -110,7 +118,7 @@ extern vorbis_info *ov_info(OggVorbis_File *vf,int link); extern vorbis_comment *ov_comment(OggVorbis_File *vf,int link); -extern long ov_read(OggVorbis_File *vf,void *buffer,int length, +extern long ov_read(OggVorbis_File *vf,char *buffer,int length, int *bitstream); #ifdef __cplusplus diff -r 3331b30e4ef1 -r 88fde28bbda6 misc/libtremor/tremor/lsp_lookup.h --- a/misc/libtremor/tremor/lsp_lookup.h Sun Oct 21 01:28:33 2012 +0400 +++ b/misc/libtremor/tremor/lsp_lookup.h Sat Nov 03 00:34:35 2012 +0400 @@ -20,6 +20,34 @@ #include "os_types.h" +#define FROMdB_LOOKUP_SZ 35 +#define FROMdB2_LOOKUP_SZ 32 +#define FROMdB_SHIFT 5 +#define FROMdB2_SHIFT 3 +#define FROMdB2_MASK 31 + +static const ogg_int32_t FROMdB_LOOKUP[FROMdB_LOOKUP_SZ]={ + 0x003fffff, 0x0028619b, 0x00197a96, 0x0010137a, + 0x000a24b0, 0x00066666, 0x000409c3, 0x00028c42, + 0x00019b8c, 0x000103ab, 0x0000a3d7, 0x00006760, + 0x0000413a, 0x00002928, 0x000019f8, 0x00001062, + 0x00000a56, 0x00000686, 0x0000041e, 0x00000299, + 0x000001a3, 0x00000109, 0x000000a7, 0x00000069, + 0x00000042, 0x0000002a, 0x0000001a, 0x00000011, + 0x0000000b, 0x00000007, 0x00000004, 0x00000003, + 0x00000002, 0x00000001, 0x00000001}; + +static const ogg_int32_t FROMdB2_LOOKUP[FROMdB2_LOOKUP_SZ]={ + 0x000001fc, 0x000001f5, 0x000001ee, 0x000001e7, + 0x000001e0, 0x000001d9, 0x000001d2, 0x000001cc, + 0x000001c5, 0x000001bf, 0x000001b8, 0x000001b2, + 0x000001ac, 0x000001a6, 0x000001a0, 0x0000019a, + 0x00000194, 0x0000018e, 0x00000188, 0x00000183, + 0x0000017d, 0x00000178, 0x00000172, 0x0000016d, + 0x00000168, 0x00000163, 0x0000015e, 0x00000159, + 0x00000154, 0x0000014f, 0x0000014a, 0x00000145, +}; + #define INVSQ_LOOKUP_I_SHIFT 10 #define INVSQ_LOOKUP_I_MASK 1023 static const long INVSQ_LOOKUP_I[64+1]={ diff -r 3331b30e4ef1 -r 88fde28bbda6 misc/libtremor/tremor/mapping0.c --- a/misc/libtremor/tremor/mapping0.c Sun Oct 21 01:28:33 2012 +0400 +++ b/misc/libtremor/tremor/mapping0.c Sat Nov 03 00:34:35 2012 +0400 @@ -6,7 +6,7 @@ * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE * * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. * * * - * THE OggVorbis 'TREMOR' SOURCE CODE IS (C) COPYRIGHT 1994-2003 * + * THE OggVorbis 'TREMOR' SOURCE CODE IS (C) COPYRIGHT 1994-2002 * * BY THE Xiph.Org FOUNDATION http://www.xiph.org/ * * * ******************************************************************** @@ -24,17 +24,96 @@ #include "mdct.h" #include "codec_internal.h" #include "codebook.h" +#include "window.h" +#include "registry.h" #include "misc.h" -void mapping_clear_info(vorbis_info_mapping *info){ +/* simplistic, wasteful way of doing this (unique lookup for each + mode/submapping); there should be a central repository for + identical lookups. That will require minor work, so I'm putting it + off as low priority. + + Why a lookup for each backend in a given mode? Because the + blocksize is set by the mode, and low backend lookups may require + parameters from other areas of the mode/mapping */ + +typedef struct { + vorbis_info_mode *mode; + vorbis_info_mapping0 *map; + + vorbis_look_floor **floor_look; + + vorbis_look_residue **residue_look; + + vorbis_func_floor **floor_func; + vorbis_func_residue **residue_func; + + int ch; + long lastframe; /* if a different mode is called, we need to + invalidate decay */ +} vorbis_look_mapping0; + +static void mapping0_free_info(vorbis_info_mapping *i){ + vorbis_info_mapping0 *info=(vorbis_info_mapping0 *)i; if(info){ - if(info->chmuxlist)_ogg_free(info->chmuxlist); - if(info->submaplist)_ogg_free(info->submaplist); - if(info->coupling)_ogg_free(info->coupling); memset(info,0,sizeof(*info)); + _ogg_free(info); } } +static void mapping0_free_look(vorbis_look_mapping *look){ + int i; + vorbis_look_mapping0 *l=(vorbis_look_mapping0 *)look; + if(l){ + + for(i=0;imap->submaps;i++){ + l->floor_func[i]->free_look(l->floor_look[i]); + l->residue_func[i]->free_look(l->residue_look[i]); + } + + _ogg_free(l->floor_func); + _ogg_free(l->residue_func); + _ogg_free(l->floor_look); + _ogg_free(l->residue_look); + memset(l,0,sizeof(*l)); + _ogg_free(l); + } +} + +static vorbis_look_mapping *mapping0_look(vorbis_dsp_state *vd,vorbis_info_mode *vm, + vorbis_info_mapping *m){ + int i; + vorbis_info *vi=vd->vi; + codec_setup_info *ci=(codec_setup_info *)vi->codec_setup; + vorbis_look_mapping0 *look=(vorbis_look_mapping0 *)_ogg_calloc(1,sizeof(*look)); + vorbis_info_mapping0 *info=look->map=(vorbis_info_mapping0 *)m; + look->mode=vm; + + look->floor_look=(vorbis_look_floor **)_ogg_calloc(info->submaps,sizeof(*look->floor_look)); + + look->residue_look=(vorbis_look_residue **)_ogg_calloc(info->submaps,sizeof(*look->residue_look)); + + look->floor_func=(vorbis_func_floor **)_ogg_calloc(info->submaps,sizeof(*look->floor_func)); + look->residue_func=(vorbis_func_residue **)_ogg_calloc(info->submaps,sizeof(*look->residue_func)); + + for(i=0;isubmaps;i++){ + int floornum=info->floorsubmap[i]; + int resnum=info->residuesubmap[i]; + + look->floor_func[i]=_floor_P[ci->floor_type[floornum]]; + look->floor_look[i]=look->floor_func[i]-> + look(vd,vm,ci->floor_param[floornum]); + look->residue_func[i]=_residue_P[ci->residue_type[resnum]]; + look->residue_look[i]=look->residue_func[i]-> + look(vd,vm,ci->residue_param[resnum]); + + } + + look->ch=vi->channels; + + return(look); +} + static int ilog(unsigned int v){ int ret=0; if(v)--v; @@ -46,9 +125,9 @@ } /* also responsible for range checking */ -int mapping_info_unpack(vorbis_info_mapping *info,vorbis_info *vi, - oggpack_buffer *opb){ +static vorbis_info_mapping *mapping0_unpack(vorbis_info *vi,oggpack_buffer *opb){ int i; + vorbis_info_mapping0 *info=(vorbis_info_mapping0 *)_ogg_calloc(1,sizeof(*info)); codec_setup_info *ci=(codec_setup_info *)vi->codec_setup; memset(info,0,sizeof(*info)); @@ -59,12 +138,10 @@ if(oggpack_read(opb,1)){ info->coupling_steps=oggpack_read(opb,8)+1; - info->coupling= - _ogg_malloc(info->coupling_steps*sizeof(*info->coupling)); - + for(i=0;icoupling_steps;i++){ - int testM=info->coupling[i].mag=oggpack_read(opb,ilog(vi->channels)); - int testA=info->coupling[i].ang=oggpack_read(opb,ilog(vi->channels)); + int testM=info->coupling_mag[i]=oggpack_read(opb,ilog(vi->channels)); + int testA=info->coupling_ang[i]=oggpack_read(opb,ilog(vi->channels)); if(testM<0 || testA<0 || @@ -78,79 +155,68 @@ if(oggpack_read(opb,2)>0)goto err_out; /* 2,3:reserved */ if(info->submaps>1){ - info->chmuxlist=_ogg_malloc(sizeof(*info->chmuxlist)*vi->channels); for(i=0;ichannels;i++){ info->chmuxlist[i]=oggpack_read(opb,4); if(info->chmuxlist[i]>=info->submaps)goto err_out; } } - - info->submaplist=_ogg_malloc(sizeof(*info->submaplist)*info->submaps); for(i=0;isubmaps;i++){ int temp=oggpack_read(opb,8); - info->submaplist[i].floor=oggpack_read(opb,8); - if(info->submaplist[i].floor>=ci->floors)goto err_out; - info->submaplist[i].residue=oggpack_read(opb,8); - if(info->submaplist[i].residue>=ci->residues)goto err_out; + if(temp>=ci->times)goto err_out; + info->floorsubmap[i]=oggpack_read(opb,8); + if(info->floorsubmap[i]>=ci->floors)goto err_out; + info->residuesubmap[i]=oggpack_read(opb,8); + if(info->residuesubmap[i]>=ci->residues)goto err_out; } - return 0; + return info; err_out: - mapping_clear_info(info); - return -1; + mapping0_free_info(info); + return(NULL); } -int mapping_inverse(vorbis_dsp_state *vd,vorbis_info_mapping *info){ +static int seq=0; +static int mapping0_inverse(vorbis_block *vb,vorbis_look_mapping *l){ + vorbis_dsp_state *vd=vb->vd; vorbis_info *vi=vd->vi; codec_setup_info *ci=(codec_setup_info *)vi->codec_setup; + private_state *b=(private_state *)vd->backend_state; + vorbis_look_mapping0 *look=(vorbis_look_mapping0 *)l; + vorbis_info_mapping0 *info=look->map; int i,j; - long n=ci->blocksizes[vd->W]; + long n=vb->pcmend=ci->blocksizes[vb->W]; - ogg_int32_t **pcmbundle= - (ogg_int32_t **)alloca(sizeof(*pcmbundle)*vi->channels); - int *zerobundle= - (int *)alloca(sizeof(*zerobundle)*vi->channels); - int *nonzero= - (int *)alloca(sizeof(*nonzero)*vi->channels); - ogg_int32_t **floormemo= - (void **)alloca(sizeof(*floormemo)*vi->channels); + ogg_int32_t **pcmbundle=(ogg_int32_t **)alloca(sizeof(*pcmbundle)*vi->channels); + int *zerobundle=(int *)alloca(sizeof(*zerobundle)*vi->channels); + + int *nonzero =(int *)alloca(sizeof(*nonzero)*vi->channels); + void **floormemo=(void **)alloca(sizeof(*floormemo)*vi->channels); + /* time domain information decode (note that applying the + information would have to happen later; we'll probably add a + function entry to the harness for that later */ + /* NOT IMPLEMENTED */ + /* recover the spectral envelope; store it in the PCM vector for now */ for(i=0;ichannels;i++){ - int submap=0; - int floorno; - - if(info->submaps>1) - submap=info->chmuxlist[i]; - floorno=info->submaplist[submap].floor; - - if(ci->floor_type[floorno]){ - /* floor 1 */ - floormemo[i]=alloca(sizeof(*floormemo[i])* - floor1_memosize(ci->floor_param[floorno])); - floormemo[i]=floor1_inverse1(vd,ci->floor_param[floorno],floormemo[i]); - }else{ - /* floor 0 */ - floormemo[i]=alloca(sizeof(*floormemo[i])* - floor0_memosize(ci->floor_param[floorno])); - floormemo[i]=floor0_inverse1(vd,ci->floor_param[floorno],floormemo[i]); - } - + int submap=info->chmuxlist[i]; + floormemo[i]=look->floor_func[submap]-> + inverse1(vb,look->floor_look[submap]); if(floormemo[i]) nonzero[i]=1; else nonzero[i]=0; - memset(vd->work[i],0,sizeof(*vd->work[i])*n/2); + memset(vb->pcm[i],0,sizeof(*vb->pcm[i])*n/2); } /* channel coupling can 'dirty' the nonzero listing */ for(i=0;icoupling_steps;i++){ - if(nonzero[info->coupling[i].mag] || - nonzero[info->coupling[i].ang]){ - nonzero[info->coupling[i].mag]=1; - nonzero[info->coupling[i].ang]=1; + if(nonzero[info->coupling_mag[i]] || + nonzero[info->coupling_ang[i]]){ + nonzero[info->coupling_mag[i]]=1; + nonzero[info->coupling_ang[i]]=1; } } @@ -158,26 +224,27 @@ for(i=0;isubmaps;i++){ int ch_in_bundle=0; for(j=0;jchannels;j++){ - if(!info->chmuxlist || info->chmuxlist[j]==i){ + if(info->chmuxlist[j]==i){ if(nonzero[j]) zerobundle[ch_in_bundle]=1; else zerobundle[ch_in_bundle]=0; - pcmbundle[ch_in_bundle++]=vd->work[j]; + pcmbundle[ch_in_bundle++]=vb->pcm[j]; } } - res_inverse(vd,ci->residue_param+info->submaplist[i].residue, - pcmbundle,zerobundle,ch_in_bundle); + look->residue_func[i]->inverse(vb,look->residue_look[i], + pcmbundle,zerobundle,ch_in_bundle); } //for(j=0;jchannels;j++) //_analysis_output("coupled",seq+j,vb->pcm[j],-8,n/2,0,0); + /* channel coupling */ for(i=info->coupling_steps-1;i>=0;i--){ - ogg_int32_t *pcmM=vd->work[info->coupling[i].mag]; - ogg_int32_t *pcmA=vd->work[info->coupling[i].ang]; + ogg_int32_t *pcmM=vb->pcm[info->coupling_mag[i]]; + ogg_int32_t *pcmA=vb->pcm[info->coupling_ang[i]]; for(j=0;jchannels;i++){ - ogg_int32_t *pcm=vd->work[i]; - int submap=0; - int floorno; - - if(info->submaps>1) - submap=info->chmuxlist[i]; - floorno=info->submaplist[submap].floor; - - if(ci->floor_type[floorno]){ - /* floor 1 */ - floor1_inverse2(vd,ci->floor_param[floorno],floormemo[i],pcm); - }else{ - /* floor 0 */ - floor0_inverse2(vd,ci->floor_param[floorno],floormemo[i],pcm); - } + ogg_int32_t *pcm=vb->pcm[i]; + int submap=info->chmuxlist[i]; + look->floor_func[submap]-> + inverse2(vb,look->floor_look[submap],floormemo[i],pcm); } //for(j=0;jchannels;j++) @@ -229,12 +285,38 @@ /* transform the PCM data; takes PCM vector, vb; modifies PCM vector */ /* only MDCT right now.... */ - for(i=0;ichannels;i++) - mdct_backward(n,vd->work[i]); + for(i=0;ichannels;i++){ + ogg_int32_t *pcm=vb->pcm[i]; + mdct_backward(n,pcm,pcm); + } //for(j=0;jchannels;j++) //_analysis_output("imdct",seq+j,vb->pcm[j],-24,n,0,0); + /* window the data */ + for(i=0;ichannels;i++){ + ogg_int32_t *pcm=vb->pcm[i]; + if(nonzero[i]) + _vorbis_apply_window(pcm,b->window,ci->blocksizes,vb->lW,vb->W,vb->nW); + else + for(j=0;jchannels;j++) + //_analysis_output("window",seq+j,vb->pcm[j],-24,n,0,0); + + seq+=vi->channels; /* all done! */ return(0); } + +/* export hooks */ +vorbis_func_mapping mapping0_exportbundle={ + &mapping0_unpack, + &mapping0_look, + &mapping0_free_info, + &mapping0_free_look, + &mapping0_inverse +}; diff -r 3331b30e4ef1 -r 88fde28bbda6 misc/libtremor/tremor/mdct.c --- a/misc/libtremor/tremor/mdct.c Sun Oct 21 01:28:33 2012 +0400 +++ b/misc/libtremor/tremor/mdct.c Sat Nov 03 00:34:35 2012 +0400 @@ -6,14 +6,14 @@ * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE * * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. * * * - * THE OggVorbis 'TREMOR' SOURCE CODE IS (C) COPYRIGHT 1994-2003 * + * THE OggVorbis 'TREMOR' SOURCE CODE IS (C) COPYRIGHT 1994-2002 * * BY THE Xiph.Org FOUNDATION http://www.xiph.org/ * * * ******************************************************************** function: normalized modified discrete cosine transform power of two length transform only [64 <= n ] - last mod: $Id: mdct.c,v 1.9.6.5 2003/04/29 04:03:27 xiphmont Exp $ + last mod: $Id: mdct.c,v 1.9 2002/10/16 09:17:39 xiphmont Exp $ Original algorithm adapted long ago from _The use of multirate filter banks for coding of high quality digital audio_, by T. Sporer, @@ -33,62 +33,23 @@ ********************************************************************/ #include "ivorbiscodec.h" -#include "os.h" +#include "codebook.h" #include "misc.h" #include "mdct.h" #include "mdct_lookup.h" -STIN void presymmetry(DATA_TYPE *in,int n2,int step){ - DATA_TYPE *aX; - DATA_TYPE *bX; - LOOKUP_T *T; - int n4=n2>>1; - - aX = in+n2-3; - T = sincos_lookup0; - - do{ - REG_TYPE r0= aX[0]; - REG_TYPE r2= aX[2]; - XPROD31( r0, r2, T[0], T[1], &aX[0], &aX[2] ); T+=step; - aX-=4; - }while(aX>=in+n4); - do{ - REG_TYPE r0= aX[0]; - REG_TYPE r2= aX[2]; - XPROD31( r0, r2, T[1], T[0], &aX[0], &aX[2] ); T-=step; - aX-=4; - }while(aX>=in); - - aX = in+n2-4; - bX = in; - T = sincos_lookup0; - do{ - REG_TYPE ri0= aX[0]; - REG_TYPE ri2= aX[2]; - REG_TYPE ro0= bX[0]; - REG_TYPE ro2= bX[2]; - - XNPROD31( ro2, ro0, T[1], T[0], &aX[0], &aX[2] ); T+=step; - XNPROD31( ri2, ri0, T[0], T[1], &bX[0], &bX[2] ); - - aX-=4; - bX+=4; - }while(aX>=in+n4); - -} /* 8 point butterfly (in place) */ STIN void mdct_butterfly_8(DATA_TYPE *x){ - REG_TYPE r0 = x[0] + x[1]; - REG_TYPE r1 = x[0] - x[1]; - REG_TYPE r2 = x[2] + x[3]; - REG_TYPE r3 = x[2] - x[3]; - REG_TYPE r4 = x[4] + x[5]; - REG_TYPE r5 = x[4] - x[5]; - REG_TYPE r6 = x[6] + x[7]; - REG_TYPE r7 = x[6] - x[7]; + REG_TYPE r0 = x[4] + x[0]; + REG_TYPE r1 = x[4] - x[0]; + REG_TYPE r2 = x[5] + x[1]; + REG_TYPE r3 = x[5] - x[1]; + REG_TYPE r4 = x[6] + x[2]; + REG_TYPE r5 = x[6] - x[2]; + REG_TYPE r6 = x[7] + x[3]; + REG_TYPE r7 = x[7] - x[3]; x[0] = r5 + r3; x[1] = r7 - r1; @@ -103,25 +64,29 @@ /* 16 point butterfly (in place, 4 register) */ STIN void mdct_butterfly_16(DATA_TYPE *x){ - - REG_TYPE r0, r1, r2, r3; - - r0 = x[ 8] - x[ 9]; x[ 8] += x[ 9]; - r1 = x[10] - x[11]; x[10] += x[11]; - r2 = x[ 1] - x[ 0]; x[ 9] = x[ 1] + x[0]; - r3 = x[ 3] - x[ 2]; x[11] = x[ 3] + x[2]; - x[ 0] = MULT31((r0 - r1) , cPI2_8); - x[ 1] = MULT31((r2 + r3) , cPI2_8); - x[ 2] = MULT31((r0 + r1) , cPI2_8); - x[ 3] = MULT31((r3 - r2) , cPI2_8); + + REG_TYPE r0, r1; + + r0 = x[ 0] - x[ 8]; x[ 8] += x[ 0]; + r1 = x[ 1] - x[ 9]; x[ 9] += x[ 1]; + x[ 0] = MULT31((r0 + r1) , cPI2_8); + x[ 1] = MULT31((r1 - r0) , cPI2_8); MB(); - r2 = x[12] - x[13]; x[12] += x[13]; - r3 = x[14] - x[15]; x[14] += x[15]; - r0 = x[ 4] - x[ 5]; x[13] = x[ 5] + x[ 4]; - r1 = x[ 7] - x[ 6]; x[15] = x[ 7] + x[ 6]; - x[ 4] = r2; x[ 5] = r1; - x[ 6] = r3; x[ 7] = r0; + r0 = x[10] - x[ 2]; x[10] += x[ 2]; + r1 = x[ 3] - x[11]; x[11] += x[ 3]; + x[ 2] = r1; x[ 3] = r0; + MB(); + + r0 = x[12] - x[ 4]; x[12] += x[ 4]; + r1 = x[13] - x[ 5]; x[13] += x[ 5]; + x[ 4] = MULT31((r0 - r1) , cPI2_8); + x[ 5] = MULT31((r0 + r1) , cPI2_8); + MB(); + + r0 = x[14] - x[ 6]; x[14] += x[ 6]; + r1 = x[15] - x[ 7]; x[15] += x[ 7]; + x[ 6] = r0; x[ 7] = r1; MB(); mdct_butterfly_8(x); @@ -131,40 +96,48 @@ /* 32 point butterfly (in place, 4 register) */ STIN void mdct_butterfly_32(DATA_TYPE *x){ - REG_TYPE r0, r1, r2, r3; + REG_TYPE r0, r1; + + r0 = x[30] - x[14]; x[30] += x[14]; + r1 = x[31] - x[15]; x[31] += x[15]; + x[14] = r0; x[15] = r1; + MB(); - r0 = x[16] - x[17]; x[16] += x[17]; - r1 = x[18] - x[19]; x[18] += x[19]; - r2 = x[ 1] - x[ 0]; x[17] = x[ 1] + x[ 0]; - r3 = x[ 3] - x[ 2]; x[19] = x[ 3] + x[ 2]; - XNPROD31( r0, r1, cPI3_8, cPI1_8, &x[ 0], &x[ 2] ); - XPROD31 ( r2, r3, cPI1_8, cPI3_8, &x[ 1], &x[ 3] ); + r0 = x[28] - x[12]; x[28] += x[12]; + r1 = x[29] - x[13]; x[29] += x[13]; + XNPROD31( r0, r1, cPI1_8, cPI3_8, &x[12], &x[13] ); + MB(); + + r0 = x[26] - x[10]; x[26] += x[10]; + r1 = x[27] - x[11]; x[27] += x[11]; + x[10] = MULT31((r0 - r1) , cPI2_8); + x[11] = MULT31((r0 + r1) , cPI2_8); MB(); - r0 = x[20] - x[21]; x[20] += x[21]; - r1 = x[22] - x[23]; x[22] += x[23]; - r2 = x[ 5] - x[ 4]; x[21] = x[ 5] + x[ 4]; - r3 = x[ 7] - x[ 6]; x[23] = x[ 7] + x[ 6]; - x[ 4] = MULT31((r0 - r1) , cPI2_8); - x[ 5] = MULT31((r3 + r2) , cPI2_8); - x[ 6] = MULT31((r0 + r1) , cPI2_8); - x[ 7] = MULT31((r3 - r2) , cPI2_8); + r0 = x[24] - x[ 8]; x[24] += x[ 8]; + r1 = x[25] - x[ 9]; x[25] += x[ 9]; + XNPROD31( r0, r1, cPI3_8, cPI1_8, &x[ 8], &x[ 9] ); + MB(); + + r0 = x[22] - x[ 6]; x[22] += x[ 6]; + r1 = x[ 7] - x[23]; x[23] += x[ 7]; + x[ 6] = r1; x[ 7] = r0; MB(); - r0 = x[24] - x[25]; x[24] += x[25]; - r1 = x[26] - x[27]; x[26] += x[27]; - r2 = x[ 9] - x[ 8]; x[25] = x[ 9] + x[ 8]; - r3 = x[11] - x[10]; x[27] = x[11] + x[10]; - XNPROD31( r0, r1, cPI1_8, cPI3_8, &x[ 8], &x[10] ); - XPROD31 ( r2, r3, cPI3_8, cPI1_8, &x[ 9], &x[11] ); + r0 = x[ 4] - x[20]; x[20] += x[ 4]; + r1 = x[ 5] - x[21]; x[21] += x[ 5]; + XPROD31 ( r0, r1, cPI3_8, cPI1_8, &x[ 4], &x[ 5] ); MB(); - r0 = x[28] - x[29]; x[28] += x[29]; - r1 = x[30] - x[31]; x[30] += x[31]; - r2 = x[12] - x[13]; x[29] = x[13] + x[12]; - r3 = x[15] - x[14]; x[31] = x[15] + x[14]; - x[12] = r0; x[13] = r3; - x[14] = r1; x[15] = r2; + r0 = x[ 2] - x[18]; x[18] += x[ 2]; + r1 = x[ 3] - x[19]; x[19] += x[ 3]; + x[ 2] = MULT31((r1 + r0) , cPI2_8); + x[ 3] = MULT31((r1 - r0) , cPI2_8); + MB(); + + r0 = x[ 0] - x[16]; x[16] += x[ 0]; + r1 = x[ 1] - x[17]; x[17] += x[ 1]; + XPROD31 ( r0, r1, cPI1_8, cPI3_8, &x[ 0], &x[ 1] ); MB(); mdct_butterfly_16(x); @@ -174,30 +147,87 @@ /* N/stage point generic N stage butterfly (in place, 2 register) */ STIN void mdct_butterfly_generic(DATA_TYPE *x,int points,int step){ - LOOKUP_T *T = sincos_lookup0; - DATA_TYPE *x1 = x + points - 4; - DATA_TYPE *x2 = x + (points>>1) - 4; - REG_TYPE r0, r1, r2, r3; + LOOKUP_T *T = sincos_lookup0; + DATA_TYPE *x1 = x + points - 8; + DATA_TYPE *x2 = x + (points>>1) - 8; + REG_TYPE r0; + REG_TYPE r1; do{ - r0 = x1[0] - x1[1]; x1[0] += x1[1]; - r1 = x1[3] - x1[2]; x1[2] += x1[3]; - r2 = x2[1] - x2[0]; x1[1] = x2[1] + x2[0]; - r3 = x2[3] - x2[2]; x1[3] = x2[3] + x2[2]; - XPROD31( r1, r0, T[0], T[1], &x2[0], &x2[2] ); - XPROD31( r2, r3, T[0], T[1], &x2[1], &x2[3] ); T+=step; - x1-=4; - x2-=4; + r0 = x1[6] - x2[6]; x1[6] += x2[6]; + r1 = x2[7] - x1[7]; x1[7] += x2[7]; + XPROD31( r1, r0, T[0], T[1], &x2[6], &x2[7] ); T+=step; + + r0 = x1[4] - x2[4]; x1[4] += x2[4]; + r1 = x2[5] - x1[5]; x1[5] += x2[5]; + XPROD31( r1, r0, T[0], T[1], &x2[4], &x2[5] ); T+=step; + + r0 = x1[2] - x2[2]; x1[2] += x2[2]; + r1 = x2[3] - x1[3]; x1[3] += x2[3]; + XPROD31( r1, r0, T[0], T[1], &x2[2], &x2[3] ); T+=step; + + r0 = x1[0] - x2[0]; x1[0] += x2[0]; + r1 = x2[1] - x1[1]; x1[1] += x2[1]; + XPROD31( r1, r0, T[0], T[1], &x2[0], &x2[1] ); T+=step; + + x1-=8; x2-=8; }while(Tsincos_lookup0); + do{ + r0 = x2[6] - x1[6]; x1[6] += x2[6]; + r1 = x2[7] - x1[7]; x1[7] += x2[7]; + XPROD31( r0, r1, T[0], T[1], &x2[6], &x2[7] ); T+=step; + + r0 = x2[4] - x1[4]; x1[4] += x2[4]; + r1 = x2[5] - x1[5]; x1[5] += x2[5]; + XPROD31( r0, r1, T[0], T[1], &x2[4], &x2[5] ); T+=step; + + r0 = x2[2] - x1[2]; x1[2] += x2[2]; + r1 = x2[3] - x1[3]; x1[3] += x2[3]; + XPROD31( r0, r1, T[0], T[1], &x2[2], &x2[3] ); T+=step; + + r0 = x2[0] - x1[0]; x1[0] += x2[0]; + r1 = x2[1] - x1[1]; x1[1] += x2[1]; + XPROD31( r0, r1, T[0], T[1], &x2[0], &x2[1] ); T+=step; + + x1-=8; x2-=8; + }while(Tsincos_lookup0); } @@ -205,14 +235,15 @@ int stages=8-shift; int i,j; - + for(i=0;--stages>0;i++){ for(j=0;j<(1<>i)*j,points>>i,4<<(i+shift)); } - + for(j=0;j>8]|(bitrev[(x&0x0f0)>>4]<<4)|(((int)bitrev[x&0x00f])<<8); } -STIN void mdct_bitreverse(DATA_TYPE *x,int n,int shift){ +STIN void mdct_bitreverse(DATA_TYPE *x,int n,int step,int shift){ + int bit = 0; - DATA_TYPE *w = x+(n>>1); + DATA_TYPE *w0 = x; + DATA_TYPE *w1 = x = w0+(n>>1); + LOOKUP_T *T = (step>=4)?(sincos_lookup0+(step>>1)):sincos_lookup1; + LOOKUP_T *Ttop = T+1024; + DATA_TYPE r2; do{ - DATA_TYPE b = bitrev12(bit++); - DATA_TYPE *xx = x + (b>>shift); - REG_TYPE r; - - w -= 2; - - if(w>xx){ + DATA_TYPE r3 = bitrev12(bit++); + DATA_TYPE *x0 = x + ((r3 ^ 0xfff)>>shift) -1; + DATA_TYPE *x1 = x + (r3>>shift); - r = xx[0]; - xx[0] = w[0]; - w[0] = r; - - r = xx[1]; - xx[1] = w[1]; - w[1] = r; - } - }while(w>x); -} + REG_TYPE r0 = x0[0] + x1[0]; + REG_TYPE r1 = x1[1] - x0[1]; -STIN void mdct_step7(DATA_TYPE *x,int n,int step){ - DATA_TYPE *w0 = x; - DATA_TYPE *w1 = x+(n>>1); - LOOKUP_T *T = (step>=4)?(sincos_lookup0+(step>>1)):sincos_lookup1; - LOOKUP_T *Ttop = T+1024; - REG_TYPE r0, r1, r2, r3; - - do{ - w1 -= 2; + XPROD32( r0, r1, T[1], T[0], &r2, &r3 ); T+=step; - r0 = w0[0] + w1[0]; - r1 = w1[1] - w0[1]; - r2 = MULT32(r0, T[1]) + MULT32(r1, T[0]); - r3 = MULT32(r1, T[1]) - MULT32(r0, T[0]); - T+=step; + w1 -= 4; - r0 = (w0[1] + w1[1])>>1; - r1 = (w0[0] - w1[0])>>1; + r0 = (x0[1] + x1[1])>>1; + r1 = (x0[0] - x1[0])>>1; w0[0] = r0 + r2; w0[1] = r1 + r3; + w1[2] = r0 - r2; + w1[3] = r3 - r1; + + r3 = bitrev12(bit++); + x0 = x + ((r3 ^ 0xfff)>>shift) -1; + x1 = x + (r3>>shift); + + r0 = x0[0] + x1[0]; + r1 = x1[1] - x0[1]; + + XPROD32( r0, r1, T[1], T[0], &r2, &r3 ); T+=step; + + r0 = (x0[1] + x1[1])>>1; + r1 = (x0[0] - x1[0])>>1; + w0[2] = r0 + r2; + w0[3] = r1 + r3; w1[0] = r0 - r2; w1[1] = r3 - r1; - w0 += 2; + w0 += 4; }while(T>shift) -1; + DATA_TYPE *x1 = x + (r3>>shift); + + REG_TYPE r0 = x0[0] + x1[0]; + REG_TYPE r1 = x1[1] - x0[1]; - r0 = w0[0] + w1[0]; - r1 = w1[1] - w0[1]; - T-=step; - r2 = MULT32(r0, T[0]) + MULT32(r1, T[1]); - r3 = MULT32(r1, T[0]) - MULT32(r0, T[1]); + T-=step; XPROD32( r0, r1, T[0], T[1], &r2, &r3 ); - r0 = (w0[1] + w1[1])>>1; - r1 = (w0[0] - w1[0])>>1; + w1 -= 4; + + r0 = (x0[1] + x1[1])>>1; + r1 = (x0[0] - x1[0])>>1; w0[0] = r0 + r2; w0[1] = r1 + r3; + w1[2] = r0 - r2; + w1[3] = r3 - r1; + + r3 = bitrev12(bit++); + x0 = x + ((r3 ^ 0xfff)>>shift) -1; + x1 = x + (r3>>shift); + + r0 = x0[0] + x1[0]; + r1 = x1[1] - x0[1]; + + T-=step; XPROD32( r0, r1, T[0], T[1], &r2, &r3 ); + + r0 = (x0[1] + x1[1])>>1; + r1 = (x0[0] - x1[0])>>1; + w0[2] = r0 + r2; + w0[3] = r1 + r3; w1[0] = r0 - r2; w1[1] = r3 - r1; - w0 += 2; + w0 += 4; }while(w0>1; + int n4=n>>2; + DATA_TYPE *iX; + DATA_TYPE *oX; LOOKUP_T *T; LOOKUP_T *V; - DATA_TYPE *iX =x+(n>>1); - step>>=2; - - switch(step) { - default: - T=(step>=4)?(sincos_lookup0+(step>>1)):sincos_lookup1; - do{ - REG_TYPE r0 = x[0]; - REG_TYPE r1 = -x[1]; - XPROD31( r0, r1, T[0], T[1], x, x+1); T+=step; - x +=2; - }while(x>1; - t1 = (*T++)>>1; - do{ - r0 = x[0]; - r1 = -x[1]; - t0 += (v0 = (*V++)>>1); - t1 += (v1 = (*V++)>>1); - XPROD31( r0, r1, t0, t1, x, x+1 ); - - r0 = x[2]; - r1 = -x[3]; - v0 += (t0 = (*T++)>>1); - v1 += (t1 = (*T++)>>1); - XPROD31( r0, r1, v0, v1, x+2, x+3 ); - - x += 4; - }while(x>2); - t1 += (q1 = (v1-t1)>>2); - r0 = x[0]; - r1 = -x[1]; - XPROD31( r0, r1, t0, t1, x, x+1 ); - t0 = v0-q0; - t1 = v1-q1; - r0 = x[2]; - r1 = -x[3]; - XPROD31( r0, r1, t0, t1, x+2, x+3 ); - - t0 = *T++; - t1 = *T++; - v0 += (q0 = (t0-v0)>>2); - v1 += (q1 = (t1-v1)>>2); - r0 = x[4]; - r1 = -x[5]; - XPROD31( r0, r1, v0, v1, x+4, x+5 ); - v0 = t0-q0; - v1 = t1-q1; - r0 = x[6]; - r1 = -x[7]; - XPROD31( r0, r1, v0, v1, x+5, x+6 ); - - x+=8; - }while(x>1,step); - mdct_butterflies(in,n>>1,shift); - mdct_bitreverse(in,n,shift); - mdct_step7(in,n,step); - mdct_step8(in,n,step); -} + /* rotate */ + + iX = in+n2-7; + oX = out+n2+n4; + T = sincos_lookup0; -void mdct_shift_right(int n, DATA_TYPE *in, DATA_TYPE *right){ - int i; - n>>=2; - in+=1; + do{ + oX-=4; + XPROD31( iX[4], iX[6], T[0], T[1], &oX[2], &oX[3] ); T+=step; + XPROD31( iX[0], iX[2], T[0], T[1], &oX[0], &oX[1] ); T+=step; + iX-=8; + }while(iX>=in+n4); + do{ + oX-=4; + XPROD31( iX[4], iX[6], T[1], T[0], &oX[2], &oX[3] ); T-=step; + XPROD31( iX[0], iX[2], T[1], T[0], &oX[0], &oX[1] ); T-=step; + iX-=8; + }while(iX>=in); - for(i=0;i=in+n4); + do{ + T-=step; XNPROD31( iX[6], iX[4], T[1], T[0], &oX[0], &oX[1] ); + T-=step; XNPROD31( iX[2], iX[0], T[1], T[0], &oX[2], &oX[3] ); + iX-=8; + oX+=4; + }while(iX>=in); -void mdct_unroll_lap(int n0,int n1, - int lW,int W, - DATA_TYPE *in, - DATA_TYPE *right, - LOOKUP_T *w0, - LOOKUP_T *w1, - ogg_int16_t *out, - int step, - int start, /* samples, this frame */ - int end /* samples, this frame */){ + mdct_butterflies(out+n2,n2,shift); + mdct_bitreverse(out,n,step,shift); + + /* rotate + window */ + + step>>=2; + { + DATA_TYPE *oX1=out+n2+n4; + DATA_TYPE *oX2=out+n2+n4; + DATA_TYPE *iX =out; - DATA_TYPE *l=in+(W&&lW ? n1>>1 : n0>>1); - DATA_TYPE *r=right+(lW ? n1>>2 : n0>>2); - DATA_TYPE *post; - LOOKUP_T *wR=(W && lW ? w1+(n1>>1) : w0+(n0>>1)); - LOOKUP_T *wL=(W && lW ? w1 : w0 ); + switch(step) { + default: { + T=(step>=4)?(sincos_lookup0+(step>>1)):sincos_lookup1; + do{ + oX1-=4; + XPROD31( iX[0], -iX[1], T[0], T[1], &oX1[3], &oX2[0] ); T+=step; + XPROD31( iX[2], -iX[3], T[0], T[1], &oX1[2], &oX2[1] ); T+=step; + XPROD31( iX[4], -iX[5], T[0], T[1], &oX1[1], &oX2[2] ); T+=step; + XPROD31( iX[6], -iX[7], T[0], T[1], &oX1[0], &oX2[3] ); T+=step; + oX2+=4; + iX+=8; + }while(iX>2)-(n0>>2) : 0 ); - int halfLap=(lW && W ? (n1>>2) : (n0>>2) ); - int postLap=(!lW && W ? (n1>>2)-(n0>>2) : 0 ); - int n,off; + case 1: { + /* linear interpolation between table values: offset=0.5, step=1 */ + REG_TYPE t0,t1,v0,v1; + T = sincos_lookup0; + V = sincos_lookup1; + t0 = (*T++)>>1; + t1 = (*T++)>>1; + do{ + oX1-=4; - /* preceeding direct-copy lapping from previous frame, if any */ - if(preLap){ - n = (endpost){ - *out = CLIP_TO_15((*--r)>>9); - out+=step; + t0 += (v0 = (*V++)>>1); + t1 += (v1 = (*V++)>>1); + XPROD31( iX[0], -iX[1], t0, t1, &oX1[3], &oX2[0] ); + v0 += (t0 = (*T++)>>1); + v1 += (t1 = (*T++)>>1); + XPROD31( iX[2], -iX[3], v0, v1, &oX1[2], &oX2[1] ); + t0 += (v0 = (*V++)>>1); + t1 += (v1 = (*V++)>>1); + XPROD31( iX[4], -iX[5], t0, t1, &oX1[1], &oX2[2] ); + v0 += (t0 = (*T++)>>1); + v1 += (t1 = (*T++)>>1); + XPROD31( iX[6], -iX[7], v0, v1, &oX1[0], &oX2[3] ); + + oX2+=4; + iX+=8; + }while(iX>2); + t1 += (q1 = (v1-t1)>>2); + XPROD31( iX[0], -iX[1], t0, t1, &oX1[3], &oX2[0] ); + t0 = v0-q0; + t1 = v1-q1; + XPROD31( iX[2], -iX[3], t0, t1, &oX1[2], &oX2[1] ); + + t0 = *T++; + t1 = *T++; + v0 += (q0 = (t0-v0)>>2); + v1 += (q1 = (t1-v1)>>2); + XPROD31( iX[4], -iX[5], v0, v1, &oX1[1], &oX2[2] ); + v0 = t0-q0; + v1 = t1-q1; + XPROD31( iX[6], -iX[7], v0, v1, &oX1[0], &oX2[3] ); + + oX2+=4; + iX+=8; + }while(iXpost){ - l-=2; - *out = CLIP_TO_15((MULT31(*--r,*--wR) + MULT31(*l,*wL++))>>9); - out+=step; - } + + iX=out+n2+n4; + oX1=out+n4; + oX2=oX1; + + do{ + oX1-=4; + iX-=4; + + oX2[0] = -(oX1[3] = iX[3]); + oX2[1] = -(oX1[2] = iX[2]); + oX2[2] = -(oX1[1] = iX[1]); + oX2[3] = -(oX1[0] = iX[0]); - n = (end>9); - out+=step; - l+=2; - } + oX2+=4; + }while(oX2>9); - out+=step; - l+=2; - } + do{ + oX1-=4; + oX1[0]= iX[3]; + oX1[1]= iX[2]; + oX1[2]= iX[1]; + oX1[3]= iX[0]; + iX+=4; + }while(oX1>oX2); } } diff -r 3331b30e4ef1 -r 88fde28bbda6 misc/libtremor/tremor/mdct.h --- a/misc/libtremor/tremor/mdct.h Sun Oct 21 01:28:33 2012 +0400 +++ b/misc/libtremor/tremor/mdct.h Sat Nov 03 00:34:35 2012 +0400 @@ -6,7 +6,7 @@ * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE * * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. * * * - * THE OggVorbis 'TREMOR' SOURCE CODE IS (C) COPYRIGHT 1994-2003 * + * THE OggVorbis 'TREMOR' SOURCE CODE IS (C) COPYRIGHT 1994-2002 * * BY THE Xiph.Org FOUNDATION http://www.xiph.org/ * * * ******************************************************************** @@ -34,15 +34,8 @@ #define cPI1_8 (0x7641af3d) #endif -extern void mdct_backward(int n, DATA_TYPE *in); -extern void mdct_shift_right(int n, DATA_TYPE *in, DATA_TYPE *right); -extern void mdct_unroll_lap(int n0,int n1, - int lW,int W, - DATA_TYPE *in,DATA_TYPE *right, - LOOKUP_T *w0,LOOKUP_T *w1, - ogg_int16_t *out, - int step, - int start,int end /* samples, this frame */); +extern void mdct_forward(int n, DATA_TYPE *in, DATA_TYPE *out); +extern void mdct_backward(int n, DATA_TYPE *in, DATA_TYPE *out); #endif diff -r 3331b30e4ef1 -r 88fde28bbda6 misc/libtremor/tremor/misc.c --- a/misc/libtremor/tremor/misc.c Sun Oct 21 01:28:33 2012 +0400 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,209 +0,0 @@ -/******************************************************************** - * * - * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. * - * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS * - * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE * - * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. * - * * - * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2002 * - * by the XIPHOPHORUS Company http://www.xiph.org/ * - * * - ********************************************************************/ - -#define HEAD_ALIGN 64 -#include -#include -#include -#define MISC_C -#include "misc.h" -#include - -static void **pointers=NULL; -static long *insertlist=NULL; /* We can't embed this in the pointer list; - a pointer can have any value... */ - -static char **files=NULL; -static long *file_bytes=NULL; -static int filecount=0; - -static int ptop=0; -static int palloced=0; -static int pinsert=0; - -typedef struct { - char *file; - long line; - long ptr; - long bytes; -} head; - -long global_bytes=0; -long start_time=-1; - -static void *_insert(void *ptr,long bytes,char *file,long line){ - ((head *)ptr)->file=file; - ((head *)ptr)->line=line; - ((head *)ptr)->ptr=pinsert; - ((head *)ptr)->bytes=bytes-HEAD_ALIGN; - - if(pinsert>=palloced){ - palloced+=64; - if(pointers){ - pointers=(void **)realloc(pointers,sizeof(void **)*palloced); - insertlist=(long *)realloc(insertlist,sizeof(long *)*palloced); - }else{ - pointers=(void **)malloc(sizeof(void **)*palloced); - insertlist=(long *)malloc(sizeof(long *)*palloced); - } - } - - pointers[pinsert]=ptr; - - if(pinsert==ptop) - pinsert=++ptop; - else - pinsert=insertlist[pinsert]; - -#ifdef _VDBG_GRAPHFILE - { - FILE *out; - struct timeval tv; - static struct timezone tz; - int i; - char buffer[80]; - gettimeofday(&tv,&tz); - - for(i=0;ifile; - long bytes =((head *)ptr)->bytes; - int i; - - gettimeofday(&tv,&tz); - fprintf(out,"%ld, %ld\n",-start_time+(tv.tv_sec*1000)+(tv.tv_usec/1000), - global_bytes); - fprintf(out,"%ld, %ld\n",-start_time+(tv.tv_sec*1000)+(tv.tv_usec/1000), - global_bytes-((head *)ptr)->bytes); - fclose(out); - - for(i=0;ibytes; - - insert=((head *)ptr)->ptr; - insertlist[insert]=pinsert; - pinsert=insert; - - if(pointers[insert]==NULL){ - fprintf(stderr,"DEBUGGING MALLOC ERROR: freeing previously freed memory\n"); - fprintf(stderr,"\t%s %ld\n",((head *)ptr)->file,((head *)ptr)->line); - } - - if(global_bytes<0){ - fprintf(stderr,"DEBUGGING MALLOC ERROR: freeing unmalloced memory\n"); - } - - pointers[insert]=NULL; -} - -void _VDBG_dump(void){ - int i; - for(i=0;ifile,ptr->line); - } - -} - -extern void *_VDBG_malloc(void *ptr,long bytes,char *file,long line){ - if(bytes<0) abort(); - bytes+=HEAD_ALIGN; - if(ptr){ - ptr-=HEAD_ALIGN; - _ripremove(ptr); - ptr=realloc(ptr,bytes); - }else{ - ptr=malloc(bytes); - memset(ptr,0,bytes); - } - return _insert(ptr,bytes,file,line); -} - -extern void _VDBG_free(void *ptr,char *file,long line){ - if(ptr){ - ptr-=HEAD_ALIGN; - _ripremove(ptr); - free(ptr); - } -} - diff -r 3331b30e4ef1 -r 88fde28bbda6 misc/libtremor/tremor/misc.h --- a/misc/libtremor/tremor/misc.h Sun Oct 21 01:28:33 2012 +0400 +++ b/misc/libtremor/tremor/misc.h Sat Nov 03 00:34:35 2012 +0400 @@ -6,7 +6,7 @@ * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE * * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. * * * - * THE OggVorbis 'TREMOR' SOURCE CODE IS (C) COPYRIGHT 1994-2003 * + * THE OggVorbis 'TREMOR' SOURCE CODE IS (C) COPYRIGHT 1994-2002 * * BY THE Xiph.Org FOUNDATION http://www.xiph.org/ * * * ******************************************************************** @@ -18,26 +18,10 @@ #ifndef _V_RANDOM_H_ #define _V_RANDOM_H_ #include "ivorbiscodec.h" -#include "os_types.h" - -/*#define _VDBG_GRAPHFILE "_0.m"*/ - -#ifdef _VDBG_GRAPHFILE -extern void *_VDBG_malloc(void *ptr,long bytes,char *file,long line); -extern void _VDBG_free(void *ptr,char *file,long line); - -#undef _ogg_malloc -#undef _ogg_calloc -#undef _ogg_realloc -#undef _ogg_free - -#define _ogg_malloc(x) _VDBG_malloc(NULL,(x),__FILE__,__LINE__) -#define _ogg_calloc(x,y) _VDBG_malloc(NULL,(x)*(y),__FILE__,__LINE__) -#define _ogg_realloc(x,y) _VDBG_malloc((x),(y),__FILE__,__LINE__) -#define _ogg_free(x) _VDBG_free((x),__FILE__,__LINE__) -#endif +#include "os.h" #include "asm_arm.h" +#include /* for abs() */ #ifndef _V_WIDE_MATH #define _V_WIDE_MATH @@ -45,7 +29,9 @@ #ifndef _LOW_ACCURACY_ /* 64 bit multiply */ +#if !(defined WIN32 && defined WINCE) #include +#endif #if BYTE_ORDER==LITTLE_ENDIAN union magic { @@ -58,26 +44,26 @@ #endif #if BYTE_ORDER==BIG_ENDIAN -union magic { +/*union magic { struct { ogg_int32_t hi; ogg_int32_t lo; } halves; ogg_int64_t whole; -}; +};*/ #endif -static inline ogg_int32_t MULT32(ogg_int32_t x, ogg_int32_t y) { +STIN ogg_int32_t MULT32(ogg_int32_t x, ogg_int32_t y) { union magic magic; magic.whole = (ogg_int64_t)x * y; return magic.halves.hi; } -static inline ogg_int32_t MULT31(ogg_int32_t x, ogg_int32_t y) { +STIN ogg_int32_t MULT31(ogg_int32_t x, ogg_int32_t y) { return MULT32(x,y)<<1; } -static inline ogg_int32_t MULT31_SHIFT15(ogg_int32_t x, ogg_int32_t y) { +STIN ogg_int32_t MULT31_SHIFT15(ogg_int32_t x, ogg_int32_t y) { union magic magic; magic.whole = (ogg_int64_t)x * y; return ((ogg_uint32_t)(magic.halves.lo)>>15) | ((magic.halves.hi)<<17); @@ -99,15 +85,15 @@ * tables in this case. */ -static inline ogg_int32_t MULT32(ogg_int32_t x, ogg_int32_t y) { +STIN ogg_int32_t MULT32(ogg_int32_t x, ogg_int32_t y) { return (x >> 9) * y; /* y preshifted >>23 */ } -static inline ogg_int32_t MULT31(ogg_int32_t x, ogg_int32_t y) { +STIN ogg_int32_t MULT31(ogg_int32_t x, ogg_int32_t y) { return (x >> 8) * y; /* y preshifted >>23 */ } -static inline ogg_int32_t MULT31_SHIFT15(ogg_int32_t x, ogg_int32_t y) { +STIN ogg_int32_t MULT31_SHIFT15(ogg_int32_t x, ogg_int32_t y) { return (x >> 6) * y; /* y preshifted >>9 */ } @@ -144,7 +130,7 @@ #else -static inline void XPROD32(ogg_int32_t a, ogg_int32_t b, +STIN void XPROD32(ogg_int32_t a, ogg_int32_t b, ogg_int32_t t, ogg_int32_t v, ogg_int32_t *x, ogg_int32_t *y) { @@ -152,7 +138,7 @@ *y = MULT32(b, t) - MULT32(a, v); } -static inline void XPROD31(ogg_int32_t a, ogg_int32_t b, +STIN void XPROD31(ogg_int32_t a, ogg_int32_t b, ogg_int32_t t, ogg_int32_t v, ogg_int32_t *x, ogg_int32_t *y) { @@ -160,7 +146,7 @@ *y = MULT31(b, t) - MULT31(a, v); } -static inline void XNPROD31(ogg_int32_t a, ogg_int32_t b, +STIN void XNPROD31(ogg_int32_t a, ogg_int32_t b, ogg_int32_t t, ogg_int32_t v, ogg_int32_t *x, ogg_int32_t *y) { @@ -175,7 +161,7 @@ #ifndef _V_CLIP_MATH #define _V_CLIP_MATH -static inline ogg_int32_t CLIP_TO_15(ogg_int32_t x) { +STIN ogg_int32_t CLIP_TO_15(ogg_int32_t x) { int ret=x; ret-= ((x<=32767)-1)&(x-32767); ret-= ((x>=-32768)-1)&(x+32768); @@ -184,6 +170,73 @@ #endif +STIN ogg_int32_t VFLOAT_MULT(ogg_int32_t a,ogg_int32_t ap, + ogg_int32_t b,ogg_int32_t bp, + ogg_int32_t *p){ + if(a && b){ +#ifndef _LOW_ACCURACY_ + *p=ap+bp+32; + return MULT32(a,b); +#else + *p=ap+bp+31; + return (a>>15)*(b>>16); +#endif + }else + return 0; +} + +int _ilog(unsigned int); + +STIN ogg_int32_t VFLOAT_MULTI(ogg_int32_t a,ogg_int32_t ap, + ogg_int32_t i, + ogg_int32_t *p){ + + int ip=_ilog(abs(i))-31; + return VFLOAT_MULT(a,ap,i<<-ip,ip,p); +} + +STIN ogg_int32_t VFLOAT_ADD(ogg_int32_t a,ogg_int32_t ap, + ogg_int32_t b,ogg_int32_t bp, + ogg_int32_t *p){ + + if(!a){ + *p=bp; + return b; + }else if(!b){ + *p=ap; + return a; + } + + /* yes, this can leak a bit. */ + if(ap>bp){ + int shift=ap-bp+1; + *p=ap+1; + a>>=1; + if(shift<32){ + b=(b+(1<<(shift-1)))>>shift; + }else{ + b=0; + } + }else{ + int shift=bp-ap+1; + *p=bp+1; + b>>=1; + if(shift<32){ + a=(a+(1<<(shift-1)))>>shift; + }else{ + a=0; + } + } + + a+=b; + if((a&0xc0000000)==0xc0000000 || + (a&0xc0000000)==0){ + a<<=1; + (*p)--; + } + return(a); +} + #endif diff -r 3331b30e4ef1 -r 88fde28bbda6 misc/libtremor/tremor/os.h --- a/misc/libtremor/tremor/os.h Sun Oct 21 01:28:33 2012 +0400 +++ b/misc/libtremor/tremor/os.h Sat Nov 03 00:34:35 2012 +0400 @@ -41,6 +41,8 @@ # define rint(x) (floor((x)+0.5f)) # define NO_FLOAT_MATH_LIB # define FAST_HYPOT(a, b) sqrt((a)*(a) + (b)*(b)) +# define LITTLE_ENDIAN 1 +# define BYTE_ORDER LITTLE_ENDIAN #endif #ifdef HAVE_ALLOCA_H diff -r 3331b30e4ef1 -r 88fde28bbda6 misc/libtremor/tremor/os_types.h --- a/misc/libtremor/tremor/os_types.h Sun Oct 21 01:28:33 2012 +0400 +++ b/misc/libtremor/tremor/os_types.h Sat Nov 03 00:34:35 2012 +0400 @@ -40,7 +40,6 @@ typedef __int32 ogg_int32_t; typedef unsigned __int32 ogg_uint32_t; typedef __int16 ogg_int16_t; - typedef unsigned __int16 ogg_uint16_t; # else /* Cygwin */ #include <_G_config.h> @@ -48,23 +47,20 @@ typedef _G_int32_t ogg_int32_t; typedef _G_uint32_t ogg_uint32_t; typedef _G_int16_t ogg_int16_t; - typedef _G_uint16_t ogg_uint16_t; # endif #elif defined(__MACOS__) # include typedef SInt16 ogg_int16_t; - typedef UInt16 ogg_uint16_t; typedef SInt32 ogg_int32_t; typedef UInt32 ogg_uint32_t; typedef SInt64 ogg_int64_t; -#elif defined(__MACOSX__) /* MacOS X Framework build */ +#elif (defined(__APPLE__) && defined(__MACH__)) /* MacOS X Framework build */ # include typedef int16_t ogg_int16_t; - typedef u_int16_t ogg_uint16_t; typedef int32_t ogg_int32_t; typedef u_int32_t ogg_uint32_t; typedef int64_t ogg_int64_t; @@ -78,7 +74,6 @@ /* OS/2 GCC */ typedef short ogg_int16_t; - typedef unsigned short ogg_uint16_t; typedef int ogg_int32_t; typedef unsigned int ogg_uint32_t; typedef long long ogg_int64_t; diff -r 3331b30e4ef1 -r 88fde28bbda6 misc/libtremor/tremor/res012.c --- a/misc/libtremor/tremor/res012.c Sun Oct 21 01:28:33 2012 +0400 +++ b/misc/libtremor/tremor/res012.c Sat Nov 03 00:34:35 2012 +0400 @@ -6,7 +6,7 @@ * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE * * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. * * * - * THE OggVorbis 'TREMOR' SOURCE CODE IS (C) COPYRIGHT 1994-2003 * + * THE OggVorbis 'TREMOR' SOURCE CODE IS (C) COPYRIGHT 1994-2002 * * BY THE Xiph.Org FOUNDATION http://www.xiph.org/ * * * ******************************************************************** @@ -21,15 +21,50 @@ #include "ogg.h" #include "ivorbiscodec.h" #include "codec_internal.h" +#include "registry.h" #include "codebook.h" #include "misc.h" #include "os.h" +#include "block.h" -void res_clear_info(vorbis_info_residue *info){ +typedef struct { + vorbis_info_residue0 *info; + int map; + + int parts; + int stages; + codebook *fullbooks; + codebook *phrasebook; + codebook ***partbooks; + + int partvals; + int **decodemap; + +} vorbis_look_residue0; + +void res0_free_info(vorbis_info_residue *i){ + vorbis_info_residue0 *info=(vorbis_info_residue0 *)i; if(info){ - if(info->stagemasks)_ogg_free(info->stagemasks); - if(info->stagebooks)_ogg_free(info->stagebooks); memset(info,0,sizeof(*info)); + _ogg_free(info); + } +} + +void res0_free_look(vorbis_look_residue *i){ + int j; + if(i){ + + vorbis_look_residue0 *look=(vorbis_look_residue0 *)i; + + for(j=0;jparts;j++) + if(look->partbooks[j])_ogg_free(look->partbooks[j]); + _ogg_free(look->partbooks); + for(j=0;jpartvals;j++) + _ogg_free(look->decodemap[j]); + _ogg_free(look->decodemap); + + memset(look,0,sizeof(*look)); + _ogg_free(look); } } @@ -42,193 +77,266 @@ return(ret); } +static int icount(unsigned int v){ + int ret=0; + while(v){ + ret+=v&1; + v>>=1; + } + return(ret); +} + /* vorbis_info is for range checking */ -int res_unpack(vorbis_info_residue *info, - vorbis_info *vi,oggpack_buffer *opb){ - int j,k; +vorbis_info_residue *res0_unpack(vorbis_info *vi,oggpack_buffer *opb){ + int j,acc=0; + vorbis_info_residue0 *info=(vorbis_info_residue0 *)_ogg_calloc(1,sizeof(*info)); codec_setup_info *ci=(codec_setup_info *)vi->codec_setup; - memset(info,0,sizeof(*info)); - info->type=oggpack_read(opb,16); - if(info->type>2 || info->type<0)goto errout; info->begin=oggpack_read(opb,24); info->end=oggpack_read(opb,24); info->grouping=oggpack_read(opb,24)+1; info->partitions=oggpack_read(opb,6)+1; info->groupbook=oggpack_read(opb,8); - if(info->groupbook>=ci->books)goto errout; - - info->stagemasks=_ogg_malloc(info->partitions*sizeof(*info->stagemasks)); - info->stagebooks=_ogg_malloc(info->partitions*8*sizeof(*info->stagebooks)); for(j=0;jpartitions;j++){ int cascade=oggpack_read(opb,3); if(oggpack_read(opb,1)) cascade|=(oggpack_read(opb,5)<<3); - info->stagemasks[j]=cascade; + info->secondstages[j]=cascade; + + acc+=icount(cascade); } + for(j=0;jbooklist[j]=oggpack_read(opb,8); + + if(info->groupbook>=ci->books)goto errout; + for(j=0;jbooklist[j]>=ci->books)goto errout; + + return(info); + errout: + res0_free_info(info); + return(NULL); +} + +vorbis_look_residue *res0_look(vorbis_dsp_state *vd,vorbis_info_mode *vm, + vorbis_info_residue *vr){ + vorbis_info_residue0 *info=(vorbis_info_residue0 *)vr; + vorbis_look_residue0 *look=(vorbis_look_residue0 *)_ogg_calloc(1,sizeof(*look)); + codec_setup_info *ci=(codec_setup_info *)vd->vi->codec_setup; - for(j=0;jpartitions;j++){ - for(k=0;k<8;k++){ - if((info->stagemasks[j]>>k)&1){ - unsigned char book=oggpack_read(opb,8); - if(book>=ci->books)goto errout; - info->stagebooks[j*8+k]=book; - if(k+1>info->stages)info->stages=k+1; - }else - info->stagebooks[j*8+k]=0xff; + int j,k,acc=0; + int dim; + int maxstage=0; + look->info=info; + look->map=vm->mapping; + + look->parts=info->partitions; + look->fullbooks=ci->fullbooks; + look->phrasebook=ci->fullbooks+info->groupbook; + dim=look->phrasebook->dim; + + look->partbooks=(codebook ***)_ogg_calloc(look->parts,sizeof(*look->partbooks)); + + for(j=0;jparts;j++){ + int stages=ilog(info->secondstages[j]); + if(stages){ + if(stages>maxstage)maxstage=stages; + look->partbooks[j]=(codebook **)_ogg_calloc(stages,sizeof(*look->partbooks[j])); + for(k=0;ksecondstages[j]&(1<partbooks[j][k]=ci->fullbooks+info->booklist[acc++]; +#ifdef TRAIN_RES + look->training_data[k][j]=calloc(look->partbooks[j][k]->entries, + sizeof(***look->training_data)); +#endif + } } } - if(oggpack_eop(opb))goto errout; + look->partvals=look->parts; + for(j=1;jpartvals*=look->parts; + look->stages=maxstage; + look->decodemap=(int **)_ogg_malloc(look->partvals*sizeof(*look->decodemap)); + for(j=0;jpartvals;j++){ + long val=j; + long mult=look->partvals/look->parts; + look->decodemap[j]=(int *)_ogg_malloc(dim*sizeof(*look->decodemap[j])); + for(k=0;kparts; + look->decodemap[j][k]=deco; + } + } - return 0; - errout: - res_clear_info(info); - return 1; + return(look); } -int res_inverse(vorbis_dsp_state *vd,vorbis_info_residue *info, - ogg_int32_t **in,int *nonzero,int ch){ - - int i,j,k,s,used=0; - codec_setup_info *ci=(codec_setup_info *)vd->vi->codec_setup; - codebook *phrasebook=ci->book_param+info->groupbook; + +/* a truncated packet here just means 'stop working'; it's not an error */ +static int _01inverse(vorbis_block *vb,vorbis_look_residue *vl, + ogg_int32_t **in,int ch, + long (*decodepart)(codebook *, ogg_int32_t *, + oggpack_buffer *,int,int)){ + + long i,j,k,l,s; + vorbis_look_residue0 *look=(vorbis_look_residue0 *)vl; + vorbis_info_residue0 *info=look->info; + + /* move all this setup out later */ int samples_per_partition=info->grouping; - int partitions_per_word=phrasebook->dim; - int pcmend=ci->blocksizes[vd->W]; + int partitions_per_word=look->phrasebook->dim; + int max=vb->pcmend>>1; + int end=(info->endend:max); + int n=end-info->begin; - if(info->type<2){ - int max=pcmend>>1; - int end=(info->endend:max); - int n=end-info->begin; + if(n>0){ + int partvals=n/samples_per_partition; + int partwords=(partvals+partitions_per_word-1)/partitions_per_word; + int ***partword=(int ***)alloca(ch*sizeof(*partword)); + + for(j=0;j0){ - int partvals=n/samples_per_partition; - int partwords=(partvals+partitions_per_word-1)/partitions_per_word; + for(s=0;sstages;s++){ - for(i=0;iphrasebook,&vb->opb); + if(temp==-1)goto eopbreak; + partword[j][l]=look->decodemap[temp]; + if(partword[j][l]==NULL)goto errout; + } + } - char **partword=(char **)alloca(ch*sizeof(*partword)); - for(j=0;jstages;s++){ - - for(i=0;i=0;k--) - partword[0][i+k]=partword[0][i+k+1]*info->partitions; - - for(j=1;j=0;k--) - partword[j][i+k]=partword[j-1][i+k]; - - for(j=0;jopb); - if(oggpack_eop(&vd->opb))goto eopbreak; - - /* this can be done quickly in assembly due to the quotient - always being at most six bits */ - for(k=0;kbegin+i*samples_per_partition; + if(info->secondstages[partword[j][l][k]]&(1<partbooks[partword[j][l][k]][s]; + if(stagebook){ + if(decodepart(stagebook,in[j]+offset,&vb->opb, + samples_per_partition,-8)==-1)goto eopbreak; } } - - /* now we decode residual values for the partitions */ - for(k=0;kbegin+i*samples_per_partition; - if(info->stagemasks[partword[j][i]]&(1<book_param+ - info->stagebooks[(partword[j][i]<<3)+s]; - if(info->type){ - if(vorbis_book_decodev_add(stagebook,in[j]+offset,&vd->opb, - samples_per_partition,-8)==-1) - goto eopbreak; - }else{ - if(vorbis_book_decodevs_add(stagebook,in[j]+offset,&vd->opb, - samples_per_partition,-8)==-1) - goto eopbreak; - } - } - } } - } - } - } - }else{ - int max=(pcmend*ch)>>1; - int end=(info->endend:max); - int n=end-info->begin; - - if(n>0){ - int partvals=n/samples_per_partition; - int partwords=(partvals+partitions_per_word-1)/partitions_per_word; - - char *partword= - (char *)alloca(partwords*partitions_per_word*sizeof(*partword)); - int beginoff=info->begin/ch; - - for(i=0;istages;s++){ - for(i=0;i=0;k--) - partword[i+k]=partword[i+k+1]*info->partitions; - - /* fetch the partition word */ - temp=vorbis_book_decode(phrasebook,&vd->opb); - if(temp==-1)goto eopbreak; - - /* this can be done quickly in assembly due to the quotient - always being at most six bits */ - for(k=0;kstagemasks[partword[i]]&(1<book_param+ - info->stagebooks[(partword[i]<<3)+s]; - if(vorbis_book_decodevv_add(stagebook,in, - i*samples_per_partition+beginoff,ch, - &vd->opb, - samples_per_partition,-8)==-1) - goto eopbreak; - } - } - } } } } errout: eopbreak: - - return 0; -} + return(0); +} + +int res0_inverse(vorbis_block *vb,vorbis_look_residue *vl, + ogg_int32_t **in,int *nonzero,int ch){ + int i,used=0; + for(i=0;iinfo; + + /* move all this setup out later */ + int samples_per_partition=info->grouping; + int partitions_per_word=look->phrasebook->dim; + int max=(vb->pcmend*ch)>>1; + int end=(info->endend:max); + int n=end-info->begin; + if(n>0){ + + int partvals=n/samples_per_partition; + int partwords=(partvals+partitions_per_word-1)/partitions_per_word; + int **partword=(int **)_vorbis_block_alloc(vb,partwords*sizeof(*partword)); + int beginoff=info->begin/ch; + + for(i=0;istages;s++){ + for(i=0,l=0;iphrasebook,&vb->opb); + if(temp==-1)goto eopbreak; + partword[l]=look->decodemap[temp]; + if(partword[l]==NULL)goto errout; + } + + /* now we decode residual values for the partitions */ + for(k=0;ksecondstages[partword[l][k]]&(1<partbooks[partword[l][k]][s]; + + if(stagebook){ + if(vorbis_book_decodevv_add(stagebook,in, + i*samples_per_partition+beginoff,ch, + &vb->opb, + samples_per_partition,-8)==-1) + goto eopbreak; + } + } + } + } + } + errout: + eopbreak: + return(0); +} + + +vorbis_func_residue residue0_exportbundle={ + &res0_unpack, + &res0_look, + &res0_free_info, + &res0_free_look, + &res0_inverse +}; + +vorbis_func_residue residue1_exportbundle={ + &res0_unpack, + &res0_look, + &res0_free_info, + &res0_free_look, + &res1_inverse +}; + +vorbis_func_residue residue2_exportbundle={ + &res0_unpack, + &res0_look, + &res0_free_info, + &res0_free_look, + &res2_inverse +}; diff -r 3331b30e4ef1 -r 88fde28bbda6 misc/libtremor/tremor/vorbisfile.c --- a/misc/libtremor/tremor/vorbisfile.c Sun Oct 21 01:28:33 2012 +0400 +++ b/misc/libtremor/tremor/vorbisfile.c Sat Nov 03 00:34:35 2012 +0400 @@ -12,7 +12,7 @@ ******************************************************************** function: stdio-based convenience library for opening/seeking/decoding - last mod: $Id: vorbisfile.c,v 1.6.2.4 2003/04/29 04:03:27 xiphmont Exp $ + last mod: $Id: vorbisfile.c,v 1.6 2003/03/30 23:40:56 xiphmont Exp $ ********************************************************************/ @@ -22,19 +22,11 @@ #include #include -#include "codec_internal.h" +#include "ivorbiscodec.h" #include "ivorbisfile.h" -#include "os.h" #include "misc.h" -#define NOTOPEN 0 -#define PARTOPEN 1 -#define OPENED 2 -#define STREAMSET 3 /* serialno and link set, but not to current link */ -#define LINKSET 4 /* serialno and link set to current link */ -#define INITSET 5 - /* A 'chained bitstream' is a Vorbis bitstream that contains more than one logical bitstream arranged end to end (the only form of Ogg multiplexing allowed in a Vorbis bitstream; grouping [parallel @@ -72,10 +64,10 @@ unsigned char *buffer=ogg_sync_bufferin(vf->oy,CHUNKSIZE); long bytes=(vf->callbacks.read_func)(buffer,1,CHUNKSIZE,vf->datasource); if(bytes>0)ogg_sync_wrote(vf->oy,bytes); - if(bytes==0 && errno)return -1; - return bytes; + if(bytes==0 && errno)return(-1); + return(bytes); }else - return 0; + return(0); } /* save a tiny smidge of verbosity to make the code more readable */ @@ -111,7 +103,7 @@ while(1){ long more; - if(boundary>0 && vf->offset>=boundary)return OV_FALSE; + if(boundary>0 && vf->offset>=boundary)return(OV_FALSE); more=ogg_sync_pageseek(vf->oy,og); if(more<0){ @@ -120,18 +112,18 @@ }else{ if(more==0){ /* send more paramedics */ - if(!boundary)return OV_FALSE; + if(!boundary)return(OV_FALSE); { long ret=_get_data(vf); - if(ret==0)return OV_EOF; - if(ret<0)return OV_EREAD; + if(ret==0)return(OV_EOF); + if(ret<0)return(OV_EREAD); } }else{ /* got a page. Return the offset at the page beginning, advance the internal offset past the page end */ ogg_int64_t ret=vf->offset; vf->offset+=more; - return ret; + return(ret); } } @@ -157,7 +149,7 @@ _seek_helper(vf,begin); while(vf->offsetoffset); - if(ret==OV_EREAD)return OV_EREAD; + if(ret==OV_EREAD)return(OV_EREAD); if(ret<0){ break; }else{ @@ -171,9 +163,9 @@ ret=_get_next_page(vf,og,CHUNKSIZE); if(ret<0) /* this shouldn't be possible */ - return OV_EFAULT; + return(OV_EFAULT); - return offset; + return(offset); } /* finds each bitstream link one at a time using a bisection search @@ -204,7 +196,7 @@ _seek_helper(vf,bisect); ret=_get_next_page(vf,&og,-1); - if(ret==OV_EREAD)return OV_EREAD; + if(ret==OV_EREAD)return(OV_EREAD); if(ret<0 || ogg_page_serialno(&og)!=currentno){ endsearched=bisect; if(ret>=0)next=ret; @@ -216,7 +208,7 @@ _seek_helper(vf,next); ret=_get_next_page(vf,&og,-1); - if(ret==OV_EREAD)return OV_EREAD; + if(ret==OV_EREAD)return(OV_EREAD); if(searched>=end || ret<0){ ogg_page_release(&og); @@ -228,33 +220,17 @@ ret=_bisect_forward_serialno(vf,next,vf->offset, end,ogg_page_serialno(&og),m+1); ogg_page_release(&og); - if(ret==OV_EREAD)return OV_EREAD; + if(ret==OV_EREAD)return(OV_EREAD); } vf->offsets[m]=begin; vf->serialnos[m]=currentno; - return 0; -} - -static int _decode_clear(OggVorbis_File *vf){ - if(vf->ready_state==INITSET){ - vorbis_dsp_destroy(vf->vd); - vf->vd=0; - vf->ready_state=STREAMSET; - } - - if(vf->ready_state>=STREAMSET){ - vorbis_info_clear(&vf->vi); - vorbis_comment_clear(&vf->vc); - vf->ready_state=OPENED; - } - return 0; + return(0); } /* uses the local ogg_stream storage in vf; this is important for non-streaming input sources */ /* consumes the page that's passed in (if any) */ -/* state is LINKSET upon successful return */ static int _fetch_headers(OggVorbis_File *vf, vorbis_info *vi, @@ -265,17 +241,16 @@ ogg_packet op={0,0,0,0,0,0}; int i,ret; - if(vf->ready_state>OPENED)_decode_clear(vf); - if(!og_ptr){ ogg_int64_t llret=_get_next_page(vf,&og,CHUNKSIZE); - if(llret==OV_EREAD)return OV_EREAD; + if(llret==OV_EREAD)return(OV_EREAD); if(llret<0)return OV_ENOTVORBIS; og_ptr=&og; } ogg_stream_reset_serialno(vf->os,ogg_page_serialno(og_ptr)); if(serialno)*serialno=vf->os->serialno; + vf->ready_state=STREAMSET; /* extract the initial header from the first page and verify that the Ogg bitstream is in fact Vorbis data */ @@ -293,7 +268,7 @@ ret=OV_EBADHEADER; goto bail_header; } - if((ret=vorbis_dsp_headerin(vi,vc,&op))){ + if((ret=vorbis_synthesis_headerin(vi,vc,&op))){ goto bail_header; } i++; @@ -307,7 +282,6 @@ ogg_packet_release(&op); ogg_page_release(&og); - vf->ready_state=LINKSET; return 0; bail_header: @@ -320,45 +294,22 @@ return ret; } -/* we no longer preload all vorbis_info (and the associated - codec_setup) structs. Call this to seek and fetch the info from - the bitstream, if needed */ -static int _set_link_number(OggVorbis_File *vf,int link){ - if(link != vf->current_link) _decode_clear(vf); - if(vf->ready_stateoffsets[link]); - ogg_stream_reset_serialno(vf->os,vf->serialnos[link]); - vf->current_serialno=vf->serialnos[link]; - vf->current_link=link; - return _fetch_headers(vf,&vf->vi,&vf->vc,&vf->current_serialno,NULL); - } - return 0; -} - -static int _set_link_number_preserve_pos(OggVorbis_File *vf,int link){ - ogg_int64_t pos=vf->offset; - int ret=_set_link_number(vf,link); - if(ret)return ret; - _seek_helper(vf,pos); - if(posoffsets[link] || pos>=vf->offsets[link+1]) - vf->ready_state=STREAMSET; - return 0; -} - -/* last step of the OggVorbis_File initialization; get all the offset - positions. Only called by the seekable initialization (local - stream storage is hacked slightly; pay attention to how that's - done) */ +/* last step of the OggVorbis_File initialization; get all the + vorbis_info structs and PCM positions. Only called by the seekable + initialization (local stream storage is hacked slightly; pay + attention to how that's done) */ /* this is void and does not propogate errors up because we want to be able to open and use damaged bitstreams as well as we can. Just watch out for missing information for links in the OggVorbis_File struct */ -static void _prefetch_all_offsets(OggVorbis_File *vf, ogg_int64_t dataoffset){ +static void _prefetch_all_headers(OggVorbis_File *vf, ogg_int64_t dataoffset){ ogg_page og={0,0,0,0}; int i; ogg_int64_t ret; + vf->vi=_ogg_realloc(vf->vi,vf->links*sizeof(*vf->vi)); + vf->vc=_ogg_realloc(vf->vc,vf->links*sizeof(*vf->vc)); vf->dataoffsets=_ogg_malloc(vf->links*sizeof(*vf->dataoffsets)); vf->pcmlengths=_ogg_malloc(vf->links*2*sizeof(*vf->pcmlengths)); @@ -373,7 +324,7 @@ /* seek to the location of the initial header */ _seek_helper(vf,vf->offsets[i]); - if(_fetch_headers(vf,&vf->vi,&vf->vc,NULL,NULL)<0){ + if(_fetch_headers(vf,vf->vi+i,vf->vc+i,NULL,NULL)<0){ vf->dataoffsets[i]=-1; }else{ vf->dataoffsets[i]=vf->offset; @@ -407,7 +358,7 @@ ogg_stream_pagein(vf->os,&og); while((result=ogg_stream_packetout(vf->os,&op))){ if(result>0){ /* ignore holes */ - long thisblock=vorbis_packet_blocksize(&vf->vi,&op); + long thisblock=vorbis_packet_blocksize(vf->vi+i,&op); if(lastblock!=-1) accumulated+=(lastblock+thisblock)>>2; lastblock=thisblock; @@ -439,8 +390,8 @@ ret=_get_prev_page(vf,&og); if(ret<0){ /* this should not be possible */ - vorbis_info_clear(&vf->vi); - vorbis_comment_clear(&vf->vc); + vorbis_info_clear(vf->vi+i); + vorbis_comment_clear(vf->vc+i); break; } if(ogg_page_granulepos(&og)!=-1){ @@ -454,28 +405,18 @@ ogg_page_release(&og); } -static int _make_decode_ready(OggVorbis_File *vf){ - int i; - switch(vf->ready_state){ - case OPENED: - case STREAMSET: - for(i=0;ilinks;i++) - if(vf->offsets[i+1]>=vf->offset)break; - if(i==vf->links)return -1; - i=_set_link_number_preserve_pos(vf,i); - if(i)return i; - /* fall through */ - case LINKSET: - vf->vd=vorbis_dsp_create(&vf->vi); - vf->ready_state=INITSET; - vf->bittrack=0; - vf->samptrack=0; - case INITSET: - return 0; - default: - return -1; - } - +static void _make_decode_ready(OggVorbis_File *vf){ + if(vf->ready_state!=STREAMSET)return; + if(vf->seekable){ + vorbis_synthesis_init(&vf->vd,vf->vi+vf->current_link); + }else{ + vorbis_synthesis_init(&vf->vd,vf->vi); + } + vorbis_block_init(&vf->vd,&vf->vb); + vf->ready_state=INITSET; + vf->bittrack=0; + vf->samptrack=0; + return; } static int _open_seekable2(OggVorbis_File *vf){ @@ -493,7 +434,7 @@ /* We get the offset for the last page of the physical bitstream. Most OggVorbis files will contain a single logical bitstream */ end=_get_prev_page(vf,&og); - if(end<0)return end; + if(end<0)return(end); /* more than one logical bitstream? */ tempserialno=ogg_page_serialno(&og); @@ -503,18 +444,25 @@ /* Chained bitstream. Bisect-search each logical bitstream section. Do so based on serial number only */ - if(_bisect_forward_serialno(vf,0,0,end+1,serialno,0)<0)return OV_EREAD; + if(_bisect_forward_serialno(vf,0,0,end+1,serialno,0)<0)return(OV_EREAD); }else{ /* Only one logical bitstream */ - if(_bisect_forward_serialno(vf,0,end,end+1,serialno,0))return OV_EREAD; + if(_bisect_forward_serialno(vf,0,end,end+1,serialno,0))return(OV_EREAD); } /* the initial header memory is referenced by vf after; don't free it */ - _prefetch_all_offsets(vf,dataoffset); - return ov_raw_seek(vf,0); + _prefetch_all_headers(vf,dataoffset); + return(ov_raw_seek(vf,0)); +} + +/* clear out the current logical bitstream decoder */ +static void _decode_clear(OggVorbis_File *vf){ + vorbis_dsp_clear(&vf->vd); + vorbis_block_clear(&vf->vb); + vf->ready_state=OPENED; } /* fetch and process a packet. Handles the case where we're at a @@ -553,16 +501,28 @@ if(result>0){ /* got a packet. process it */ granulepos=op.granulepos; - if(!vorbis_dsp_synthesis(vf->vd,&op,1)){ /* lazy check for lazy + if(!vorbis_synthesis(&vf->vb,&op,1)){ /* lazy check for lazy header handling. The header packets aren't audio, so if/when we submit them, vorbis_synthesis will reject them */ - - vf->samptrack+=vorbis_dsp_pcmout(vf->vd,NULL,0); - vf->bittrack+=op.bytes*8; + + /* suck in the synthesis data and track bitrate */ + { + int oldsamples=vorbis_synthesis_pcmout(&vf->vd,NULL); + /* for proper use of libvorbis within libvorbisfile, + oldsamples will always be zero. */ + if(oldsamples){ + ret=OV_EFAULT; + goto cleanup; + } + + vorbis_synthesis_blockin(&vf->vd,&vf->vb); + vf->samptrack+=vorbis_synthesis_pcmout(&vf->vd,NULL)-oldsamples; + vf->bittrack+=op.bytes*8; + } /* update the pcm offset. */ if(granulepos!=-1 && !op.e_o_s){ @@ -589,7 +549,7 @@ here unless the stream is very broken */ - samples=vorbis_dsp_pcmout(vf->vd,NULL,0); + samples=vorbis_synthesis_pcmout(&vf->vd,NULL); granulepos-=samples; for(i=0;iseekable){ + vorbis_info_clear(vf->vi); + vorbis_comment_clear(vf->vc); + } } } } @@ -646,7 +611,7 @@ */ if(vf->ready_state!=INITSET){ - int link,ret; + int link; if(vf->ready_stateseekable){ @@ -662,22 +627,24 @@ leave machine uninitialized */ goto cleanup; } - + vf->current_link=link; - ret=_fetch_headers(vf,&vf->vi,&vf->vc,&vf->current_serialno,&og); - if(ret) goto cleanup; + + ogg_stream_reset_serialno(vf->os,vf->current_serialno); + vf->ready_state=STREAMSET; }else{ /* we're streaming */ /* fetch the three header packets, build the info struct */ - int ret=_fetch_headers(vf,&vf->vi,&vf->vc,&vf->current_serialno,&og); + int ret=_fetch_headers(vf,vf->vi,vf->vc,&vf->current_serialno,&og); if(ret) goto cleanup; vf->current_link++; + link=0; } } - if(_make_decode_ready(vf)) return OV_EBADLINK; + _make_decode_ready(vf); } ogg_stream_pagein(vf->os,&og); } @@ -690,7 +657,7 @@ /* if, eg, 64 bit stdio is configured by default, this will build with fseek64 */ static int _fseek64_wrap(FILE *f,ogg_int64_t off,int whence){ - if(f==NULL)return -1; + if(f==NULL)return(-1); return fseek(f,off,whence); } @@ -700,11 +667,6 @@ int ret; memset(vf,0,sizeof(*vf)); - - /* Tremor assumes in multiple places that right shift of a signed - integer is an arithmetic shift */ - if( (-1>>1) != -1) return OV_EIMPL; - vf->datasource=f; vf->callbacks = callbacks; @@ -727,15 +689,17 @@ /* No seeking yet; Set up a 'single' (current) logical bitstream entry for partial open */ vf->links=1; + vf->vi=_ogg_calloc(vf->links,sizeof(*vf->vi)); + vf->vc=_ogg_calloc(vf->links,sizeof(*vf->vc)); vf->os=ogg_stream_create(-1); /* fill in the serialno later */ /* Try to fetch the headers, maintaining all the storage */ - if((ret=_fetch_headers(vf,&vf->vi,&vf->vc,&vf->current_serialno,NULL))<0){ + if((ret=_fetch_headers(vf,vf->vi,vf->vc,&vf->current_serialno,NULL))<0){ vf->datasource=NULL; ov_clear(vf); }else if(vf->ready_state < PARTOPEN) vf->ready_state=PARTOPEN; - return ret; + return(ret); } static int _ov_open2(OggVorbis_File *vf){ @@ -747,7 +711,7 @@ vf->datasource=NULL; ov_clear(vf); } - return ret; + return(ret); } return 0; } @@ -756,24 +720,33 @@ /* clear out the OggVorbis_File struct */ int ov_clear(OggVorbis_File *vf){ if(vf){ - vorbis_dsp_destroy(vf->vd); - vf->vd=0; + vorbis_block_clear(&vf->vb); + vorbis_dsp_clear(&vf->vd); ogg_stream_destroy(vf->os); - vorbis_info_clear(&vf->vi); - vorbis_comment_clear(&vf->vc); + + if(vf->vi && vf->links){ + int i; + for(i=0;ilinks;i++){ + vorbis_info_clear(vf->vi+i); + vorbis_comment_clear(vf->vc+i); + } + _ogg_free(vf->vi); + _ogg_free(vf->vc); + } if(vf->dataoffsets)_ogg_free(vf->dataoffsets); if(vf->pcmlengths)_ogg_free(vf->pcmlengths); if(vf->serialnos)_ogg_free(vf->serialnos); if(vf->offsets)_ogg_free(vf->offsets); ogg_sync_destroy(vf->oy); - if(vf->datasource)(vf->callbacks.close_func)(vf->datasource); + if(vf->datasource && vf->callbacks.close_func) + (vf->callbacks.close_func)(vf->datasource); memset(vf,0,sizeof(*vf)); } #ifdef DEBUG_LEAKS _VDBG_dump(); #endif - return 0; + return(0); } /* inspects the OggVorbis file and finds/documents all the logical @@ -825,7 +798,7 @@ } int ov_test_open(OggVorbis_File *vf){ - if(vf->ready_state!=PARTOPEN)return OV_EINVAL; + if(vf->ready_state!=PARTOPEN)return(OV_EINVAL); return _ov_open2(vf); } @@ -849,9 +822,9 @@ vorbis_info structs */ long ov_bitrate(OggVorbis_File *vf,int i){ - if(vf->ready_state=vf->links)return OV_EINVAL; - if(!vf->seekable && i!=0)return ov_bitrate(vf,0); + if(vf->ready_state=vf->links)return(OV_EINVAL); + if(!vf->seekable && i!=0)return(ov_bitrate(vf,0)); if(i<0){ ogg_int64_t bits=0; int i; @@ -861,24 +834,24 @@ * gcc 3.x on x86 miscompiled this at optimisation level 2 and above, * so this is slightly transformed to make it work. */ - return bits*1000/ov_time_total(vf,-1); + return(bits*1000/ov_time_total(vf,-1)); }else{ if(vf->seekable){ /* return the actual bitrate */ - return (vf->offsets[i+1]-vf->dataoffsets[i])*8000/ov_time_total(vf,i); + return((vf->offsets[i+1]-vf->dataoffsets[i])*8000/ov_time_total(vf,i)); }else{ /* return nominal if set */ - if(vf->vi.bitrate_nominal>0){ - return vf->vi.bitrate_nominal; + if(vf->vi[i].bitrate_nominal>0){ + return vf->vi[i].bitrate_nominal; }else{ - if(vf->vi.bitrate_upper>0){ - if(vf->vi.bitrate_lower>0){ - return (vf->vi.bitrate_upper+vf->vi.bitrate_lower)/2; + if(vf->vi[i].bitrate_upper>0){ + if(vf->vi[i].bitrate_lower>0){ + return (vf->vi[i].bitrate_upper+vf->vi[i].bitrate_lower)/2; }else{ - return vf->vi.bitrate_upper; + return vf->vi[i].bitrate_upper; } } - return OV_FALSE; + return(OV_FALSE); } } } @@ -889,23 +862,24 @@ EINVAL if stream is only partially open */ long ov_bitrate_instant(OggVorbis_File *vf){ + int link=(vf->seekable?vf->current_link:0); long ret; - if(vf->ready_statesamptrack==0)return OV_FALSE; - ret=vf->bittrack/vf->samptrack*vf->vi.rate; + if(vf->ready_statesamptrack==0)return(OV_FALSE); + ret=vf->bittrack/vf->samptrack*vf->vi[link].rate; vf->bittrack=0; vf->samptrack=0; - return ret; + return(ret); } /* Guess */ long ov_serialnumber(OggVorbis_File *vf,int i){ - if(i>=vf->links)return ov_serialnumber(vf,vf->links-1); - if(!vf->seekable && i>=0)return ov_serialnumber(vf,-1); + if(i>=vf->links)return(ov_serialnumber(vf,vf->links-1)); + if(!vf->seekable && i>=0)return(ov_serialnumber(vf,-1)); if(i<0){ - return vf->current_serialno; + return(vf->current_serialno); }else{ - return vf->serialnos[i]; + return(vf->serialnos[i]); } } @@ -915,16 +889,16 @@ or if stream is only partially open */ ogg_int64_t ov_raw_total(OggVorbis_File *vf,int i){ - if(vf->ready_stateseekable || i>=vf->links)return OV_EINVAL; + if(vf->ready_stateseekable || i>=vf->links)return(OV_EINVAL); if(i<0){ ogg_int64_t acc=0; int i; for(i=0;ilinks;i++) acc+=ov_raw_total(vf,i); - return acc; + return(acc); }else{ - return vf->offsets[i+1]-vf->offsets[i]; + return(vf->offsets[i+1]-vf->offsets[i]); } } @@ -934,16 +908,16 @@ length) or only partially open */ ogg_int64_t ov_pcm_total(OggVorbis_File *vf,int i){ - if(vf->ready_stateseekable || i>=vf->links)return OV_EINVAL; + if(vf->ready_stateseekable || i>=vf->links)return(OV_EINVAL); if(i<0){ ogg_int64_t acc=0; int i; for(i=0;ilinks;i++) acc+=ov_pcm_total(vf,i); - return acc; + return(acc); }else{ - return vf->pcmlengths[i*2+1]; + return(vf->pcmlengths[i*2+1]); } } @@ -953,16 +927,16 @@ length) or only partially open */ ogg_int64_t ov_time_total(OggVorbis_File *vf,int i){ - if(vf->ready_stateseekable || i>=vf->links)return OV_EINVAL; + if(vf->ready_stateseekable || i>=vf->links)return(OV_EINVAL); if(i<0){ ogg_int64_t acc=0; int i; for(i=0;ilinks;i++) acc+=ov_time_total(vf,i); - return acc; + return(acc); }else{ - return ((ogg_int64_t)vf->pcmlengths[i*2+1])*1000/vf->vi.rate; + return(((ogg_int64_t)vf->pcmlengths[i*2+1])*1000/vf->vi[i].rate); } } @@ -978,11 +952,11 @@ ogg_page og={0,0,0,0}; ogg_packet op={0,0,0,0,0,0}; - if(vf->ready_stateready_stateseekable) - return OV_ENOSEEK; /* don't dump machine if we can't seek */ + return(OV_ENOSEEK); /* don't dump machine if we can't seek */ - if(pos<0 || pos>vf->end)return OV_EINVAL; + if(pos<0 || pos>vf->end)return(OV_EINVAL); /* don't yet clear out decoding machine (if it's initialized), in the case we're in the same link. Restart the decode lapping, and @@ -991,7 +965,7 @@ vf->pcm_offset=-1; ogg_stream_reset_serialno(vf->os, vf->current_serialno); /* must set serialno */ - vorbis_dsp_restart(vf->vd); + vorbis_synthesis_restart(&vf->vd); _seek_helper(vf,pos); @@ -1014,7 +988,7 @@ int lastblock=0; int accblock=0; int thisblock; - int eosflag; + int eosflag=0; work_os=ogg_stream_create(vf->current_serialno); /* get the memory ready */ while(1){ @@ -1024,8 +998,8 @@ if(result>0){ - if(vf->vi.codec_setup){ - thisblock=vorbis_packet_blocksize(&vf->vi,&op); + if(vf->vi[vf->current_link].codec_setup){ + thisblock=vorbis_packet_blocksize(vf->vi+vf->current_link,&op); if(thisblock<0){ ogg_stream_packetout(vf->os,NULL); thisblock=0; @@ -1065,7 +1039,7 @@ break; } - /* did we just grab a page from other than current link? */ + /* has our decoding just traversed a bitstream boundary? */ if(vf->ready_state>=STREAMSET) if(vf->current_serialno!=ogg_page_serialno(&og)){ _decode_clear(vf); /* clear out stream state */ @@ -1082,14 +1056,11 @@ goto seek_error; /* sign of a bogus stream. error out, leave machine uninitialized */ - /* need to initialize machine to this link */ - { - int ret=_set_link_number_preserve_pos(vf,link); - if(ret) goto seek_error; - } + vf->current_link=link; + ogg_stream_reset_serialno(vf->os,vf->current_serialno); ogg_stream_reset_serialno(work_os,vf->current_serialno); - + vf->ready_state=STREAMSET; } @@ -1108,7 +1079,7 @@ ogg_stream_destroy(work_os); vf->bittrack=0; vf->samptrack=0; - return 0; + return(0); seek_error: ogg_packet_release(&op); @@ -1134,9 +1105,9 @@ ogg_page og={0,0,0,0}; ogg_packet op={0,0,0,0,0,0}; - if(vf->ready_stateseekable)return OV_ENOSEEK; - if(pos<0 || pos>total)return OV_EINVAL; + if(vf->ready_stateseekable)return(OV_ENOSEEK); + if(pos<0 || pos>total)return(OV_EINVAL); /* which bitstream section does this pcm offset occur in? */ for(link=vf->links-1;link>=0;link--){ @@ -1144,16 +1115,6 @@ if(pos>=total)break; } - - if(link!=vf->current_link){ - int ret=_set_link_number(vf,link); - if(ret) goto seek_error; - }else{ - vorbis_dsp_restart(vf->vd); - } - - ogg_stream_reset_serialno(vf->os,vf->serialnos[link]); - /* search within the logical bitstream for the page with the highest pcm_pos preceeding (or equal to) pos. There is a danger here; missing pages or incorrect frame number information in the @@ -1236,9 +1197,22 @@ if(_get_next_page(vf,&og,-1)<0){ ogg_page_release(&og); - return OV_EOF; /* shouldn't happen */ + return(OV_EOF); /* shouldn't happen */ } + if(link!=vf->current_link){ + /* Different link; dump entire decode machine */ + _decode_clear(vf); + + vf->current_link=link; + vf->current_serialno=ogg_page_serialno(&og); + vf->ready_state=STREAMSET; + + }else{ + vorbis_synthesis_restart(&vf->vd); + } + + ogg_stream_reset_serialno(vf->os,vf->current_serialno); ogg_stream_pagein(vf->os,&og); /* pull out all but last packet; the one with granulepos */ @@ -1287,7 +1261,7 @@ ogg_page_release(&og); ogg_packet_release(&op); - return 0; + return(0); seek_error: @@ -1308,8 +1282,8 @@ ogg_page og={0,0,0,0}; int thisblock,lastblock=0; int ret=ov_pcm_seek_page(vf,pos); - if(ret<0)return ret; - if(_make_decode_ready(vf))return OV_EBADLINK; + if(ret<0)return(ret); + _make_decode_ready(vf); /* discard leading packets we don't need for the lapping of the position we want; don't decode them */ @@ -1318,7 +1292,7 @@ int ret=ogg_stream_packetpeek(vf->os,&op); if(ret>0){ - thisblock=vorbis_packet_blocksize(&vf->vi,&op); + thisblock=vorbis_packet_blocksize(vf->vi+vf->current_link,&op); if(thisblock<0){ ogg_stream_packetout(vf->os,NULL); continue; /* non audio packet */ @@ -1326,13 +1300,14 @@ if(lastblock)vf->pcm_offset+=(lastblock+thisblock)>>2; if(vf->pcm_offset+((thisblock+ - vorbis_info_blocksize(&vf->vi,1))>>2)>=pos)break; + vorbis_info_blocksize(vf->vi,1))>>2)>=pos)break; /* remove the packet from packet queue and track its granulepos */ ogg_stream_packetout(vf->os,NULL); - vorbis_dsp_synthesis(vf->vd,&op,0); /* set up a vb with - only tracking, no - pcm_decode */ + vorbis_synthesis(&vf->vb,&op,0); /* set up a vb with + only tracking, no + pcm_decode */ + vorbis_synthesis_blockin(&vf->vd,&vf->vb); /* end of logical stream case is hard, especially with exact length positioning. */ @@ -1356,7 +1331,7 @@ if(vf->current_serialno!=ogg_page_serialno(&og))_decode_clear(vf); if(vf->ready_statecurrent_serialno=ogg_page_serialno(&og); for(link=0;linklinks;link++) @@ -1364,14 +1339,13 @@ if(link==vf->links){ ogg_page_release(&og); ogg_packet_release(&op); - return OV_EBADLINK; + return(OV_EBADLINK); } - - vf->current_link=link; - ret=_fetch_headers(vf,&vf->vi,&vf->vc,&vf->current_serialno,&og); - if(ret) return ret; - if(_make_decode_ready(vf))return OV_EBADLINK; + + ogg_stream_reset_serialno(vf->os,vf->current_serialno); + vf->ready_state=STREAMSET; + _make_decode_ready(vf); lastblock=0; } @@ -1385,10 +1359,10 @@ logical bitstream boundary with abandon is OK. */ while(vf->pcm_offsetpcm_offset; - long samples=vorbis_dsp_pcmout(vf->vd,NULL,0); + long samples=vorbis_synthesis_pcmout(&vf->vd,NULL); if(samples>target)samples=target; - vorbis_dsp_read(vf->vd,samples); + vorbis_synthesis_read(&vf->vd,samples); vf->pcm_offset+=samples; if(samplesready_stateseekable)return OV_ENOSEEK; - if(milliseconds<0 || milliseconds>time_total)return OV_EINVAL; + if(vf->ready_stateseekable)return(OV_ENOSEEK); + if(milliseconds<0 || milliseconds>time_total)return(OV_EINVAL); /* which bitstream section does this time offset occur in? */ for(link=vf->links-1;link>=0;link--){ @@ -1423,11 +1397,8 @@ /* enough information to convert time offset to pcm offset */ { - int ret=_set_link_number(vf,link); - if(ret)return ret; - return - ov_pcm_seek(vf,pcm_total+(milliseconds-time_total)* - vf->vi.rate/1000); + ogg_int64_t target=pcm_total+(milliseconds-time_total)*vf->vi[link].rate/1000; + return(ov_pcm_seek(vf,target)); } } @@ -1440,9 +1411,9 @@ ogg_int64_t pcm_total=ov_pcm_total(vf,-1); ogg_int64_t time_total=ov_time_total(vf,-1); - if(vf->ready_stateseekable)return OV_ENOSEEK; - if(milliseconds<0 || milliseconds>time_total)return OV_EINVAL; + if(vf->ready_stateseekable)return(OV_ENOSEEK); + if(milliseconds<0 || milliseconds>time_total)return(OV_EINVAL); /* which bitstream section does this time offset occur in? */ for(link=vf->links-1;link>=0;link--){ @@ -1453,25 +1424,22 @@ /* enough information to convert time offset to pcm offset */ { - int ret=_set_link_number(vf,link); - if(ret)return ret; - return - ov_pcm_seek_page(vf,pcm_total+(milliseconds-time_total)* - vf->vi.rate/1000); + ogg_int64_t target=pcm_total+(milliseconds-time_total)*vf->vi[link].rate/1000; + return(ov_pcm_seek_page(vf,target)); } } /* tell the current stream offset cursor. Note that seek followed by tell will likely not give the set offset due to caching */ ogg_int64_t ov_raw_tell(OggVorbis_File *vf){ - if(vf->ready_stateoffset; + if(vf->ready_stateoffset); } /* return PCM offset (sample) of next PCM sample to be read */ ogg_int64_t ov_pcm_tell(OggVorbis_File *vf){ - if(vf->ready_statepcm_offset; + if(vf->ready_statepcm_offset); } /* return time offset (milliseconds) of next PCM sample to be read */ @@ -1480,7 +1448,7 @@ ogg_int64_t pcm_total=0; ogg_int64_t time_total=0; - if(vf->ready_stateready_stateseekable){ pcm_total=ov_pcm_total(vf,-1); time_total=ov_time_total(vf,-1); @@ -1493,7 +1461,7 @@ } } - return time_total+(1000*vf->pcm_offset-pcm_total)/vf->vi.rate; + return(time_total+(1000*vf->pcm_offset-pcm_total)/vf->vi[link].rate); } /* link: -1) return the vorbis_info struct for the bitstream section @@ -1506,25 +1474,37 @@ vorbis_info *ov_info(OggVorbis_File *vf,int link){ if(vf->seekable){ - if(link>=vf->links)return NULL; - if(link>=0){ - int ret=_set_link_number_preserve_pos(vf,link); - if(ret)return NULL; - } + if(link<0) + if(vf->ready_state>=STREAMSET) + return vf->vi+vf->current_link; + else + return vf->vi; + else + if(link>=vf->links) + return NULL; + else + return vf->vi+link; + }else{ + return vf->vi; } - return &vf->vi; } /* grr, strong typing, grr, no templates/inheritence, grr */ vorbis_comment *ov_comment(OggVorbis_File *vf,int link){ if(vf->seekable){ - if(link>=vf->links)return NULL; - if(link>=0){ - int ret=_set_link_number_preserve_pos(vf,link); - if(ret)return NULL; - } + if(link<0) + if(vf->ready_state>=STREAMSET) + return vf->vc+vf->current_link; + else + return vf->vc; + else + if(link>=vf->links) + return NULL; + else + return vf->vc+link; + }else{ + return vf->vc; } - return &vf->vc; } /* up to this point, everything could more or less hide the multiple @@ -1554,36 +1534,54 @@ *section) set to the logical bitstream number */ -long ov_read(OggVorbis_File *vf,void *buffer,int bytes_req,int *bitstream){ +long ov_read(OggVorbis_File *vf,char *buffer,int bytes_req,int *bitstream){ + int i,j; + ogg_int32_t **pcm; long samples; - long channels; - if(vf->ready_stateready_stateready_state==INITSET){ - channels=vf->vi.channels; - samples=vorbis_dsp_pcmout(vf->vd,buffer,(bytes_req>>1)/channels); - if(samples){ - if(samples>0){ - vorbis_dsp_read(vf->vd,samples); - vf->pcm_offset+=samples; - if(bitstream)*bitstream=vf->current_link; - return samples*2*channels; - } - return samples; - } + samples=vorbis_synthesis_pcmout(&vf->vd,&pcm); + if(samples)break; } /* suck in another packet */ { int ret=_fetch_and_process_packet(vf,1,1); if(ret==OV_EOF) - return 0; + return(0); if(ret<=0) - return ret; + return(ret); } } + + if(samples>0){ + + /* yay! proceed to pack data into the byte buffer */ + + long channels=ov_info(vf,-1)->channels; + + if(samples>(bytes_req/(2*channels))) + samples=bytes_req/(2*channels); + + for(i=0;i>9); + dest+=channels; + } + } + + vorbis_synthesis_read(&vf->vd,samples); + vf->pcm_offset+=samples; + if(bitstream)*bitstream=vf->current_link; + return(samples*2*channels); + }else{ + return(samples); + } } diff -r 3331b30e4ef1 -r 88fde28bbda6 misc/libtremor/tremor/vorbisidec.pc.in --- a/misc/libtremor/tremor/vorbisidec.pc.in Sun Oct 21 01:28:33 2012 +0400 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,14 +0,0 @@ -# libvorbisidec pkg-config source file - -prefix=@prefix@ -exec_prefix=@exec_prefix@ -libdir=@libdir@ -includedir=@includedir@ - -Name: vorbisidec -Description: vorbisidec is the integer Ogg Vorbis library -Version: @VERSION@ -Requires: ogg -Conflicts: -Libs: -L${libdir} -lvorbisidec -lm -Cflags: -I${includedir} diff -r 3331b30e4ef1 -r 88fde28bbda6 misc/loc_gen.txt --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/misc/loc_gen.txt Sat Nov 03 00:34:35 2012 +0400 @@ -0,0 +1,10 @@ +# this is inefficient and clunky, but, figured it might as well be kept somewhere so people are aware of it +# Is how I'm currently updated the locale files. +# collect strings - run in Data +grep -F 'loc("' */*/*.lua | sed 's/)/)\n/g' | sed 's/.*loc(/loc(/;s/).*/)/' | grep loc | sort | uniq > loc.txt +# Update locale files - run in Locale +for i in *.lua;do cat ../loc.txt | while read f;do STR=$(echo "$f" | sed 's/loc("//;s/")\s*$//;s/"/\\"/g');MAPS=$(grep -F -l -- "loc(\"${STR}\")" ../*/*/*.lua ../*/*/*/*.lua | sed 's/.*\/\([^\/]*\)\/map.lua/\1/;s/.*Campaign\/\([^\/]*\)\//\1:/;s/.*\///;s/.lua//;s/ /_/g' | xargs | sed 's/ /, /g');C=$(echo $MAPS | sed 's/,/\n/' | wc -l);grep -Fq -- "[\"${STR}\"]" $i;if(($?));then if((C>0));then echo "-- [\"${STR}\"] = \"\", -- $MAPS" >> $i;else echo "-- [\"${STR}\"] = \"\"," >> $i;fi;fi;done;done +# sort - run in Locale +for i in *.lua;do rm temphead temptail templua;cat $i | grep -Ev "}|{" | grep -Ev "^[[:space:]]*$" | sort > templua;echo "locale = {" > temphead;echo " }" > temptail;cat temphead templua temptail > $i;done +# drop unused - run in Locale +cat stub.lua | grep '"] =' | while read f;do PHRASE=$(echo "$f" | sed 's/[^[]*\["//;s/"] =.*//;s/"/\\"/g');CNT=$(grep -Frc "loc(\"$PHRASE\")" ../*/*/*.lua ../*/*/*/*.lua | grep -v ":0" | wc -l);if(($CNT==0));then echo "|$PHRASE|";sed -i "s/.*\[\"$PHRASE\"].*//" *.lua;fi;done diff -r 3331b30e4ef1 -r 88fde28bbda6 misc/physfs/CMakeLists.txt --- a/misc/physfs/CMakeLists.txt Sun Oct 21 01:28:33 2012 +0400 +++ b/misc/physfs/CMakeLists.txt Sat Nov 03 00:34:35 2012 +0400 @@ -257,21 +257,21 @@ OPTION(PHYSFS_BUILD_STATIC "Build static library" TRUE) IF(PHYSFS_BUILD_STATIC) - ADD_LIBRARY(physfs-static STATIC ${PHYSFS_SRCS}) - SET_TARGET_PROPERTIES(physfs-static PROPERTIES OUTPUT_NAME "physfs") - SET(PHYSFS_LIB_TARGET physfs-static) - SET(PHYSFS_INSTALL_TARGETS ${PHYSFS_INSTALL_TARGETS} ";physfs-static") + ADD_LIBRARY(physfs STATIC ${PHYSFS_SRCS}) + SET_TARGET_PROPERTIES(physfs PROPERTIES OUTPUT_NAME "physfs") + SET(PHYSFS_LIB_TARGET physfs) + SET(PHYSFS_INSTALL_TARGETS ${PHYSFS_INSTALL_TARGETS} ";physfs") ENDIF(PHYSFS_BUILD_STATIC) -OPTION(PHYSFS_BUILD_SHARED "Build shared library" FALSE) -IF(PHYSFS_BUILD_SHARED) - ADD_LIBRARY(physfs SHARED ${PHYSFS_SRCS}) - SET_TARGET_PROPERTIES(physfs PROPERTIES VERSION ${PHYSFS_VERSION}) - SET_TARGET_PROPERTIES(physfs PROPERTIES SOVERSION ${PHYSFS_SOVERSION}) - TARGET_LINK_LIBRARIES(physfs ${OPTIONAL_LIBRARY_LIBS} ${OTHER_LDFLAGS}) - SET(PHYSFS_LIB_TARGET physfs) - SET(PHYSFS_INSTALL_TARGETS ${PHYSFS_INSTALL_TARGETS} ";physfs") -ENDIF(PHYSFS_BUILD_SHARED) +#OPTION(PHYSFS_BUILD_SHARED "Build shared library" FALSE) +#IF(PHYSFS_BUILD_SHARED) +# ADD_LIBRARY(physfs SHARED ${PHYSFS_SRCS}) +# SET_TARGET_PROPERTIES(physfs PROPERTIES VERSION ${PHYSFS_VERSION}) +# SET_TARGET_PROPERTIES(physfs PROPERTIES SOVERSION ${PHYSFS_SOVERSION}) +# TARGET_LINK_LIBRARIES(physfs ${OPTIONAL_LIBRARY_LIBS} ${OTHER_LDFLAGS}) +# SET(PHYSFS_LIB_TARGET physfs) +# SET(PHYSFS_INSTALL_TARGETS ${PHYSFS_INSTALL_TARGETS} ";physfs") +#ENDIF(PHYSFS_BUILD_SHARED) IF(NOT PHYSFS_BUILD_SHARED AND NOT PHYSFS_BUILD_STATIC) MESSAGE(FATAL "Both shared and static libraries are disabled!") diff -r 3331b30e4ef1 -r 88fde28bbda6 misc/quazip/crypt.h --- a/misc/quazip/crypt.h Sun Oct 21 01:28:33 2012 +0400 +++ b/misc/quazip/crypt.h Sat Nov 03 00:34:35 2012 +0400 @@ -1,135 +1,135 @@ -/* crypt.h -- base code for crypt/uncrypt ZIPfile - - - Version 1.01e, February 12th, 2005 - - Copyright (C) 1998-2005 Gilles Vollant - - This code is a modified version of crypting code in Infozip distribution - - The encryption/decryption parts of this source code (as opposed to the - non-echoing password parts) were originally written in Europe. The - whole source package can be freely distributed, including from the USA. - (Prior to January 2000, re-export from the US was a violation of US law.) - - This encryption code is a direct transcription of the algorithm from - Roger Schlafly, described by Phil Katz in the file appnote.txt. This - file (appnote.txt) is distributed with the PKZIP program (even in the - version without encryption capabilities). - - If you don't need crypting in your application, just define symbols - NOCRYPT and NOUNCRYPT. - - This code support the "Traditional PKWARE Encryption". - - The new AES encryption added on Zip format by Winzip (see the page - http://www.winzip.com/aes_info.htm ) and PKWare PKZip 5.x Strong - Encryption is not supported. -*/ - -#include "quazip_global.h" - -#define CRC32(c, b) ((*(pcrc_32_tab+(((int)(c) ^ (b)) & 0xff))) ^ ((c) >> 8)) - -/*********************************************************************** - * Return the next byte in the pseudo-random sequence - */ -static int decrypt_byte(unsigned long* pkeys, const unsigned long* pcrc_32_tab UNUSED) -{ - //(void) pcrc_32_tab; /* avoid "unused parameter" warning */ - unsigned temp; /* POTENTIAL BUG: temp*(temp^1) may overflow in an - * unpredictable manner on 16-bit systems; not a problem - * with any known compiler so far, though */ - - temp = ((unsigned)(*(pkeys+2)) & 0xffff) | 2; - return (int)(((temp * (temp ^ 1)) >> 8) & 0xff); -} - -/*********************************************************************** - * Update the encryption keys with the next byte of plain text - */ -static int update_keys(unsigned long* pkeys,const unsigned long* pcrc_32_tab,int c) -{ - (*(pkeys+0)) = CRC32((*(pkeys+0)), c); - (*(pkeys+1)) += (*(pkeys+0)) & 0xff; - (*(pkeys+1)) = (*(pkeys+1)) * 134775813L + 1; - { - register int keyshift = (int)((*(pkeys+1)) >> 24); - (*(pkeys+2)) = CRC32((*(pkeys+2)), keyshift); - } - return c; -} - - -/*********************************************************************** - * Initialize the encryption keys and the random header according to - * the given password. - */ -static void init_keys(const char* passwd,unsigned long* pkeys,const unsigned long* pcrc_32_tab) -{ - *(pkeys+0) = 305419896L; - *(pkeys+1) = 591751049L; - *(pkeys+2) = 878082192L; - while (*passwd != '\0') { - update_keys(pkeys,pcrc_32_tab,(int)*passwd); - passwd++; - } -} - -#define zdecode(pkeys,pcrc_32_tab,c) \ - (update_keys(pkeys,pcrc_32_tab,c ^= decrypt_byte(pkeys,pcrc_32_tab))) - -#define zencode(pkeys,pcrc_32_tab,c,t) \ - (t=decrypt_byte(pkeys,pcrc_32_tab), update_keys(pkeys,pcrc_32_tab,c), t^(c)) - -#ifdef INCLUDECRYPTINGCODE_IFCRYPTALLOWED - -#define RAND_HEAD_LEN 12 - /* "last resort" source for second part of crypt seed pattern */ -# ifndef ZCR_SEED2 -# define ZCR_SEED2 3141592654UL /* use PI as default pattern */ -# endif - -static int crypthead(passwd, buf, bufSize, pkeys, pcrc_32_tab, crcForCrypting) - const char *passwd; /* password string */ - unsigned char *buf; /* where to write header */ - int bufSize; - unsigned long* pkeys; - const unsigned long* pcrc_32_tab; - unsigned long crcForCrypting; -{ - int n; /* index in random header */ - int t; /* temporary */ - int c; /* random byte */ - unsigned char header[RAND_HEAD_LEN-2]; /* random header */ - static unsigned calls = 0; /* ensure different random header each time */ - - if (bufSize> 7) & 0xff; - header[n] = (unsigned char)zencode(pkeys, pcrc_32_tab, c, t); - } - /* Encrypt random header (last two bytes is high word of crc) */ - init_keys(passwd, pkeys, pcrc_32_tab); - for (n = 0; n < RAND_HEAD_LEN-2; n++) - { - buf[n] = (unsigned char)zencode(pkeys, pcrc_32_tab, header[n], t); - } - buf[n++] = zencode(pkeys, pcrc_32_tab, (int)(crcForCrypting >> 16) & 0xff, t); - buf[n++] = zencode(pkeys, pcrc_32_tab, (int)(crcForCrypting >> 24) & 0xff, t); - return n; -} - -#endif +/* crypt.h -- base code for crypt/uncrypt ZIPfile + + + Version 1.01e, February 12th, 2005 + + Copyright (C) 1998-2005 Gilles Vollant + + This code is a modified version of crypting code in Infozip distribution + + The encryption/decryption parts of this source code (as opposed to the + non-echoing password parts) were originally written in Europe. The + whole source package can be freely distributed, including from the USA. + (Prior to January 2000, re-export from the US was a violation of US law.) + + This encryption code is a direct transcription of the algorithm from + Roger Schlafly, described by Phil Katz in the file appnote.txt. This + file (appnote.txt) is distributed with the PKZIP program (even in the + version without encryption capabilities). + + If you don't need crypting in your application, just define symbols + NOCRYPT and NOUNCRYPT. + + This code support the "Traditional PKWARE Encryption". + + The new AES encryption added on Zip format by Winzip (see the page + http://www.winzip.com/aes_info.htm ) and PKWare PKZip 5.x Strong + Encryption is not supported. +*/ + +#include "quazip_global.h" + +#define CRC32(c, b) ((*(pcrc_32_tab+(((int)(c) ^ (b)) & 0xff))) ^ ((c) >> 8)) + +/*********************************************************************** + * Return the next byte in the pseudo-random sequence + */ +static int decrypt_byte(unsigned long* pkeys, const unsigned long* pcrc_32_tab UNUSED) +{ + //(void) pcrc_32_tab; /* avoid "unused parameter" warning */ + unsigned temp; /* POTENTIAL BUG: temp*(temp^1) may overflow in an + * unpredictable manner on 16-bit systems; not a problem + * with any known compiler so far, though */ + + temp = ((unsigned)(*(pkeys+2)) & 0xffff) | 2; + return (int)(((temp * (temp ^ 1)) >> 8) & 0xff); +} + +/*********************************************************************** + * Update the encryption keys with the next byte of plain text + */ +static int update_keys(unsigned long* pkeys,const unsigned long* pcrc_32_tab,int c) +{ + (*(pkeys+0)) = CRC32((*(pkeys+0)), c); + (*(pkeys+1)) += (*(pkeys+0)) & 0xff; + (*(pkeys+1)) = (*(pkeys+1)) * 134775813L + 1; + { + register int keyshift = (int)((*(pkeys+1)) >> 24); + (*(pkeys+2)) = CRC32((*(pkeys+2)), keyshift); + } + return c; +} + + +/*********************************************************************** + * Initialize the encryption keys and the random header according to + * the given password. + */ +static void init_keys(const char* passwd,unsigned long* pkeys,const unsigned long* pcrc_32_tab) +{ + *(pkeys+0) = 305419896L; + *(pkeys+1) = 591751049L; + *(pkeys+2) = 878082192L; + while (*passwd != '\0') { + update_keys(pkeys,pcrc_32_tab,(int)*passwd); + passwd++; + } +} + +#define zdecode(pkeys,pcrc_32_tab,c) \ + (update_keys(pkeys,pcrc_32_tab,c ^= decrypt_byte(pkeys,pcrc_32_tab))) + +#define zencode(pkeys,pcrc_32_tab,c,t) \ + (t=decrypt_byte(pkeys,pcrc_32_tab), update_keys(pkeys,pcrc_32_tab,c), t^(c)) + +#ifdef INCLUDECRYPTINGCODE_IFCRYPTALLOWED + +#define RAND_HEAD_LEN 12 + /* "last resort" source for second part of crypt seed pattern */ +# ifndef ZCR_SEED2 +# define ZCR_SEED2 3141592654UL /* use PI as default pattern */ +# endif + +static int crypthead(passwd, buf, bufSize, pkeys, pcrc_32_tab, crcForCrypting) + const char *passwd; /* password string */ + unsigned char *buf; /* where to write header */ + int bufSize; + unsigned long* pkeys; + const unsigned long* pcrc_32_tab; + unsigned long crcForCrypting; +{ + int n; /* index in random header */ + int t; /* temporary */ + int c; /* random byte */ + unsigned char header[RAND_HEAD_LEN-2]; /* random header */ + static unsigned calls = 0; /* ensure different random header each time */ + + if (bufSize> 7) & 0xff; + header[n] = (unsigned char)zencode(pkeys, pcrc_32_tab, c, t); + } + /* Encrypt random header (last two bytes is high word of crc) */ + init_keys(passwd, pkeys, pcrc_32_tab); + for (n = 0; n < RAND_HEAD_LEN-2; n++) + { + buf[n] = (unsigned char)zencode(pkeys, pcrc_32_tab, header[n], t); + } + buf[n++] = zencode(pkeys, pcrc_32_tab, (int)(crcForCrypting >> 16) & 0xff, t); + buf[n++] = zencode(pkeys, pcrc_32_tab, (int)(crcForCrypting >> 24) & 0xff, t); + return n; +} + +#endif diff -r 3331b30e4ef1 -r 88fde28bbda6 misc/quazip/ioapi.h --- a/misc/quazip/ioapi.h Sun Oct 21 01:28:33 2012 +0400 +++ b/misc/quazip/ioapi.h Sat Nov 03 00:34:35 2012 +0400 @@ -1,77 +1,77 @@ -/* ioapi.h -- IO base function header for compress/uncompress .zip - files using zlib + zip or unzip API - - Version 1.01e, February 12th, 2005 - - Copyright (C) 1998-2005 Gilles Vollant - - Modified by Sergey A. Tachenov to integrate with Qt. -*/ - -#ifndef _ZLIBIOAPI_H -#define _ZLIBIOAPI_H - - -#define ZLIB_FILEFUNC_SEEK_CUR (1) -#define ZLIB_FILEFUNC_SEEK_END (2) -#define ZLIB_FILEFUNC_SEEK_SET (0) - -#define ZLIB_FILEFUNC_MODE_READ (1) -#define ZLIB_FILEFUNC_MODE_WRITE (2) -#define ZLIB_FILEFUNC_MODE_READWRITEFILTER (3) - -#define ZLIB_FILEFUNC_MODE_EXISTING (4) -#define ZLIB_FILEFUNC_MODE_CREATE (8) - - -#ifndef ZCALLBACK - -#if (defined(WIN32) || defined (WINDOWS) || defined (_WINDOWS)) && defined(CALLBACK) && defined (USEWINDOWS_CALLBACK) -#define ZCALLBACK CALLBACK -#else -#define ZCALLBACK -#endif -#endif - -#ifdef __cplusplus -extern "C" { -#endif - -typedef voidpf (ZCALLBACK *open_file_func) OF((voidpf opaque, voidpf file, int mode)); -typedef uLong (ZCALLBACK *read_file_func) OF((voidpf opaque, voidpf stream, void* buf, uLong size)); -typedef uLong (ZCALLBACK *write_file_func) OF((voidpf opaque, voidpf stream, const void* buf, uLong size)); -typedef uLong (ZCALLBACK *tell_file_func) OF((voidpf opaque, voidpf stream)); -typedef int (ZCALLBACK *seek_file_func) OF((voidpf opaque, voidpf stream, uLong offset, int origin)); -typedef int (ZCALLBACK *close_file_func) OF((voidpf opaque, voidpf stream)); -typedef int (ZCALLBACK *testerror_file_func) OF((voidpf opaque, voidpf stream)); - -typedef struct zlib_filefunc_def_s -{ - open_file_func zopen_file; - read_file_func zread_file; - write_file_func zwrite_file; - tell_file_func ztell_file; - seek_file_func zseek_file; - close_file_func zclose_file; - testerror_file_func zerror_file; - voidpf opaque; -} zlib_filefunc_def; - - - -void fill_qiodevice_filefunc OF((zlib_filefunc_def* pzlib_filefunc_def)); - -#define ZREAD(filefunc,filestream,buf,size) ((*((filefunc).zread_file))((filefunc).opaque,filestream,buf,size)) -#define ZWRITE(filefunc,filestream,buf,size) ((*((filefunc).zwrite_file))((filefunc).opaque,filestream,buf,size)) -#define ZTELL(filefunc,filestream) ((*((filefunc).ztell_file))((filefunc).opaque,filestream)) -#define ZSEEK(filefunc,filestream,pos,mode) ((*((filefunc).zseek_file))((filefunc).opaque,filestream,pos,mode)) -#define ZCLOSE(filefunc,filestream) ((*((filefunc).zclose_file))((filefunc).opaque,filestream)) -#define ZERROR(filefunc,filestream) ((*((filefunc).zerror_file))((filefunc).opaque,filestream)) - - -#ifdef __cplusplus -} -#endif - -#endif - +/* ioapi.h -- IO base function header for compress/uncompress .zip + files using zlib + zip or unzip API + + Version 1.01e, February 12th, 2005 + + Copyright (C) 1998-2005 Gilles Vollant + + Modified by Sergey A. Tachenov to integrate with Qt. +*/ + +#ifndef _ZLIBIOAPI_H +#define _ZLIBIOAPI_H + + +#define ZLIB_FILEFUNC_SEEK_CUR (1) +#define ZLIB_FILEFUNC_SEEK_END (2) +#define ZLIB_FILEFUNC_SEEK_SET (0) + +#define ZLIB_FILEFUNC_MODE_READ (1) +#define ZLIB_FILEFUNC_MODE_WRITE (2) +#define ZLIB_FILEFUNC_MODE_READWRITEFILTER (3) + +#define ZLIB_FILEFUNC_MODE_EXISTING (4) +#define ZLIB_FILEFUNC_MODE_CREATE (8) + + +#ifndef ZCALLBACK + +#if (defined(WIN32) || defined (WINDOWS) || defined (_WINDOWS)) && defined(CALLBACK) && defined (USEWINDOWS_CALLBACK) +#define ZCALLBACK CALLBACK +#else +#define ZCALLBACK +#endif +#endif + +#ifdef __cplusplus +extern "C" { +#endif + +typedef voidpf (ZCALLBACK *open_file_func) OF((voidpf opaque, voidpf file, int mode)); +typedef uLong (ZCALLBACK *read_file_func) OF((voidpf opaque, voidpf stream, void* buf, uLong size)); +typedef uLong (ZCALLBACK *write_file_func) OF((voidpf opaque, voidpf stream, const void* buf, uLong size)); +typedef uLong (ZCALLBACK *tell_file_func) OF((voidpf opaque, voidpf stream)); +typedef int (ZCALLBACK *seek_file_func) OF((voidpf opaque, voidpf stream, uLong offset, int origin)); +typedef int (ZCALLBACK *close_file_func) OF((voidpf opaque, voidpf stream)); +typedef int (ZCALLBACK *testerror_file_func) OF((voidpf opaque, voidpf stream)); + +typedef struct zlib_filefunc_def_s +{ + open_file_func zopen_file; + read_file_func zread_file; + write_file_func zwrite_file; + tell_file_func ztell_file; + seek_file_func zseek_file; + close_file_func zclose_file; + testerror_file_func zerror_file; + voidpf opaque; +} zlib_filefunc_def; + + + +void fill_qiodevice_filefunc OF((zlib_filefunc_def* pzlib_filefunc_def)); + +#define ZREAD(filefunc,filestream,buf,size) ((*((filefunc).zread_file))((filefunc).opaque,filestream,buf,size)) +#define ZWRITE(filefunc,filestream,buf,size) ((*((filefunc).zwrite_file))((filefunc).opaque,filestream,buf,size)) +#define ZTELL(filefunc,filestream) ((*((filefunc).ztell_file))((filefunc).opaque,filestream)) +#define ZSEEK(filefunc,filestream,pos,mode) ((*((filefunc).zseek_file))((filefunc).opaque,filestream,pos,mode)) +#define ZCLOSE(filefunc,filestream) ((*((filefunc).zclose_file))((filefunc).opaque,filestream)) +#define ZERROR(filefunc,filestream) ((*((filefunc).zerror_file))((filefunc).opaque,filestream)) + + +#ifdef __cplusplus +} +#endif + +#endif + diff -r 3331b30e4ef1 -r 88fde28bbda6 misc/quazip/qioapi.cpp --- a/misc/quazip/qioapi.cpp Sun Oct 21 01:28:33 2012 +0400 +++ b/misc/quazip/qioapi.cpp Sat Nov 03 00:34:35 2012 +0400 @@ -1,142 +1,142 @@ -/* ioapi.c -- IO base function header for compress/uncompress .zip - files using zlib + zip or unzip API - - Version 1.01e, February 12th, 2005 - - Copyright (C) 1998-2005 Gilles Vollant - - Modified by Sergey A. Tachenov to integrate with Qt. -*/ - -#include -#include -#include - -#include "zlib.h" -#include "ioapi.h" -#include "quazip_global.h" -#include - - -/* I've found an old Unix (a SunOS 4.1.3_U1) without all SEEK_* defined.... */ - -#ifndef SEEK_CUR -#define SEEK_CUR 1 -#endif - -#ifndef SEEK_END -#define SEEK_END 2 -#endif - -#ifndef SEEK_SET -#define SEEK_SET 0 -#endif - -voidpf ZCALLBACK qiodevice_open_file_func ( - voidpf opaque UNUSED, - voidpf file, - int mode) -{ - QIODevice *iodevice = reinterpret_cast(file); - if(iodevice->isSequential()) - return NULL; - if ((mode & ZLIB_FILEFUNC_MODE_READWRITEFILTER)==ZLIB_FILEFUNC_MODE_READ) - iodevice->open(QIODevice::ReadOnly); - else - if (mode & ZLIB_FILEFUNC_MODE_EXISTING) - iodevice->open(QIODevice::ReadWrite); - else - if (mode & ZLIB_FILEFUNC_MODE_CREATE) - iodevice->open(QIODevice::WriteOnly); - - if(iodevice->isOpen()) - return iodevice; - else - return NULL; -} - - -uLong ZCALLBACK qiodevice_read_file_func ( - voidpf opaque UNUSED, - voidpf stream, - void* buf, - uLong size) -{ - uLong ret; - ret = (uLong)((QIODevice*)stream)->read((char*)buf,size); - return ret; -} - - -uLong ZCALLBACK qiodevice_write_file_func ( - voidpf opaque UNUSED, - voidpf stream, - const void* buf, - uLong size) -{ - uLong ret; - ret = (uLong)((QIODevice*)stream)->write((char*)buf,size); - return ret; -} - -uLong ZCALLBACK qiodevice_tell_file_func ( - voidpf opaque UNUSED, - voidpf stream) -{ - uLong ret; - ret = ((QIODevice*)stream)->pos(); - return ret; -} - -int ZCALLBACK qiodevice_seek_file_func ( - voidpf opaque UNUSED, - voidpf stream, - uLong offset, - int origin) -{ - uLong qiodevice_seek_result=0; - int ret; - switch (origin) - { - case ZLIB_FILEFUNC_SEEK_CUR : - qiodevice_seek_result = ((QIODevice*)stream)->pos() + offset; - break; - case ZLIB_FILEFUNC_SEEK_END : - qiodevice_seek_result = ((QIODevice*)stream)->size() - offset; - break; - case ZLIB_FILEFUNC_SEEK_SET : - qiodevice_seek_result = offset; - break; - default: return -1; - } - ret = !((QIODevice*)stream)->seek(qiodevice_seek_result); - return ret; -} - -int ZCALLBACK qiodevice_close_file_func ( - voidpf opaque UNUSED, - voidpf stream) -{ - ((QIODevice*)stream)->close(); - return 0; -} - -int ZCALLBACK qiodevice_error_file_func ( - voidpf opaque UNUSED, - voidpf stream) -{ - return !((QIODevice*)stream)->errorString().isEmpty(); -} - -void fill_qiodevice_filefunc ( - zlib_filefunc_def* pzlib_filefunc_def) -{ - pzlib_filefunc_def->zopen_file = qiodevice_open_file_func; - pzlib_filefunc_def->zread_file = qiodevice_read_file_func; - pzlib_filefunc_def->zwrite_file = qiodevice_write_file_func; - pzlib_filefunc_def->ztell_file = qiodevice_tell_file_func; - pzlib_filefunc_def->zseek_file = qiodevice_seek_file_func; - pzlib_filefunc_def->zclose_file = qiodevice_close_file_func; - pzlib_filefunc_def->zerror_file = qiodevice_error_file_func; - pzlib_filefunc_def->opaque = NULL; -} +/* ioapi.c -- IO base function header for compress/uncompress .zip + files using zlib + zip or unzip API + + Version 1.01e, February 12th, 2005 + + Copyright (C) 1998-2005 Gilles Vollant + + Modified by Sergey A. Tachenov to integrate with Qt. +*/ + +#include +#include +#include + +#include "zlib.h" +#include "ioapi.h" +#include "quazip_global.h" +#include + + +/* I've found an old Unix (a SunOS 4.1.3_U1) without all SEEK_* defined.... */ + +#ifndef SEEK_CUR +#define SEEK_CUR 1 +#endif + +#ifndef SEEK_END +#define SEEK_END 2 +#endif + +#ifndef SEEK_SET +#define SEEK_SET 0 +#endif + +voidpf ZCALLBACK qiodevice_open_file_func ( + voidpf opaque UNUSED, + voidpf file, + int mode) +{ + QIODevice *iodevice = reinterpret_cast(file); + if(iodevice->isSequential()) + return NULL; + if ((mode & ZLIB_FILEFUNC_MODE_READWRITEFILTER)==ZLIB_FILEFUNC_MODE_READ) + iodevice->open(QIODevice::ReadOnly); + else + if (mode & ZLIB_FILEFUNC_MODE_EXISTING) + iodevice->open(QIODevice::ReadWrite); + else + if (mode & ZLIB_FILEFUNC_MODE_CREATE) + iodevice->open(QIODevice::WriteOnly); + + if(iodevice->isOpen()) + return iodevice; + else + return NULL; +} + + +uLong ZCALLBACK qiodevice_read_file_func ( + voidpf opaque UNUSED, + voidpf stream, + void* buf, + uLong size) +{ + uLong ret; + ret = (uLong)((QIODevice*)stream)->read((char*)buf,size); + return ret; +} + + +uLong ZCALLBACK qiodevice_write_file_func ( + voidpf opaque UNUSED, + voidpf stream, + const void* buf, + uLong size) +{ + uLong ret; + ret = (uLong)((QIODevice*)stream)->write((char*)buf,size); + return ret; +} + +uLong ZCALLBACK qiodevice_tell_file_func ( + voidpf opaque UNUSED, + voidpf stream) +{ + uLong ret; + ret = ((QIODevice*)stream)->pos(); + return ret; +} + +int ZCALLBACK qiodevice_seek_file_func ( + voidpf opaque UNUSED, + voidpf stream, + uLong offset, + int origin) +{ + uLong qiodevice_seek_result=0; + int ret; + switch (origin) + { + case ZLIB_FILEFUNC_SEEK_CUR : + qiodevice_seek_result = ((QIODevice*)stream)->pos() + offset; + break; + case ZLIB_FILEFUNC_SEEK_END : + qiodevice_seek_result = ((QIODevice*)stream)->size() - offset; + break; + case ZLIB_FILEFUNC_SEEK_SET : + qiodevice_seek_result = offset; + break; + default: return -1; + } + ret = !((QIODevice*)stream)->seek(qiodevice_seek_result); + return ret; +} + +int ZCALLBACK qiodevice_close_file_func ( + voidpf opaque UNUSED, + voidpf stream) +{ + ((QIODevice*)stream)->close(); + return 0; +} + +int ZCALLBACK qiodevice_error_file_func ( + voidpf opaque UNUSED, + voidpf stream) +{ + return !((QIODevice*)stream)->errorString().isEmpty(); +} + +void fill_qiodevice_filefunc ( + zlib_filefunc_def* pzlib_filefunc_def) +{ + pzlib_filefunc_def->zopen_file = qiodevice_open_file_func; + pzlib_filefunc_def->zread_file = qiodevice_read_file_func; + pzlib_filefunc_def->zwrite_file = qiodevice_write_file_func; + pzlib_filefunc_def->ztell_file = qiodevice_tell_file_func; + pzlib_filefunc_def->zseek_file = qiodevice_seek_file_func; + pzlib_filefunc_def->zclose_file = qiodevice_close_file_func; + pzlib_filefunc_def->zerror_file = qiodevice_error_file_func; + pzlib_filefunc_def->opaque = NULL; +} diff -r 3331b30e4ef1 -r 88fde28bbda6 misc/quazip/quazip.cpp --- a/misc/quazip/quazip.cpp Sun Oct 21 01:28:33 2012 +0400 +++ b/misc/quazip/quazip.cpp Sat Nov 03 00:34:35 2012 +0400 @@ -1,427 +1,427 @@ -/* -Copyright (C) 2005-2011 Sergey A. Tachenov - -This program is free software; you can redistribute it and/or modify it -under the terms of the GNU Lesser General Public License as published by -the Free Software Foundation; either version 2 of the License, or (at -your option) any later version. - -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 Lesser -General Public License for more details. - -You should have received a copy of the GNU Lesser 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 - -See COPYING file for the full LGPL text. - -Original ZIP package is copyrighted by Gilles Vollant, see -quazip/(un)zip.h files for details, basically it's zlib license. - **/ - -#include - -#include "quazip.h" - -class QuaZipPrivate { - friend class QuaZip; - private: - QTextCodec *fileNameCodec, *commentCodec; - QString zipName; - QIODevice *ioDevice; - QString comment; - QuaZip::Mode mode; - union { - unzFile unzFile_f; - zipFile zipFile_f; - }; - bool hasCurrentFile_f; - int zipError; - inline QuaZipPrivate(): - fileNameCodec(QTextCodec::codecForLocale()), - commentCodec(QTextCodec::codecForLocale()), - ioDevice(NULL), - mode(QuaZip::mdNotOpen), - hasCurrentFile_f(false), - zipError(UNZ_OK) {} - inline QuaZipPrivate(const QString &zipName): - fileNameCodec(QTextCodec::codecForLocale()), - commentCodec(QTextCodec::codecForLocale()), - zipName(zipName), - ioDevice(NULL), - mode(QuaZip::mdNotOpen), - hasCurrentFile_f(false), - zipError(UNZ_OK) {} - inline QuaZipPrivate(QIODevice *ioDevice): - fileNameCodec(QTextCodec::codecForLocale()), - commentCodec(QTextCodec::codecForLocale()), - ioDevice(ioDevice), - mode(QuaZip::mdNotOpen), - hasCurrentFile_f(false), - zipError(UNZ_OK) {} -}; - -QuaZip::QuaZip(): - p(new QuaZipPrivate()) -{ -} - -QuaZip::QuaZip(const QString& zipName): - p(new QuaZipPrivate(zipName)) -{ -} - -QuaZip::QuaZip(QIODevice *ioDevice): - p(new QuaZipPrivate(ioDevice)) -{ -} - -QuaZip::~QuaZip() -{ - if(isOpen()) - close(); - delete p; -} - -bool QuaZip::open(Mode mode, zlib_filefunc_def* ioApi) -{ - p->zipError=UNZ_OK; - if(isOpen()) { - qWarning("QuaZip::open(): ZIP already opened"); - return false; - } - QIODevice *ioDevice = p->ioDevice; - if (ioDevice == NULL) { - if (p->zipName.isEmpty()) { - qWarning("QuaZip::open(): set either ZIP file name or IO device first"); - return false; - } else { - ioDevice = new QFile(p->zipName); - } - } - switch(mode) { - case mdUnzip: - p->unzFile_f=unzOpen2(ioDevice, ioApi); - if(p->unzFile_f!=NULL) { - p->mode=mode; - p->ioDevice = ioDevice; - return true; - } else { - p->zipError=UNZ_OPENERROR; - if (!p->zipName.isEmpty()) - delete ioDevice; - return false; - } - case mdCreate: - case mdAppend: - case mdAdd: - p->zipFile_f=zipOpen2(ioDevice, - mode==mdCreate?APPEND_STATUS_CREATE: - mode==mdAppend?APPEND_STATUS_CREATEAFTER: - APPEND_STATUS_ADDINZIP, - NULL, - ioApi); - if(p->zipFile_f!=NULL) { - p->mode=mode; - p->ioDevice = ioDevice; - return true; - } else { - p->zipError=UNZ_OPENERROR; - if (!p->zipName.isEmpty()) - delete ioDevice; - return false; - } - default: - qWarning("QuaZip::open(): unknown mode: %d", (int)mode); - if (!p->zipName.isEmpty()) - delete ioDevice; - return false; - break; - } -} - -void QuaZip::close() -{ - p->zipError=UNZ_OK; - switch(p->mode) { - case mdNotOpen: - qWarning("QuaZip::close(): ZIP is not open"); - return; - case mdUnzip: - p->zipError=unzClose(p->unzFile_f); - break; - case mdCreate: - case mdAppend: - case mdAdd: - p->zipError=zipClose(p->zipFile_f, p->commentCodec->fromUnicode(p->comment).constData()); - break; - default: - qWarning("QuaZip::close(): unknown mode: %d", (int)p->mode); - return; - } - // opened by name, need to delete the internal IO device - if (!p->zipName.isEmpty()) - delete p->ioDevice; - if(p->zipError==UNZ_OK) - p->mode=mdNotOpen; -} - -void QuaZip::setZipName(const QString& zipName) -{ - if(isOpen()) { - qWarning("QuaZip::setZipName(): ZIP is already open!"); - return; - } - p->zipName=zipName; - p->ioDevice = NULL; -} - -void QuaZip::setIoDevice(QIODevice *ioDevice) -{ - if(isOpen()) { - qWarning("QuaZip::setIoDevice(): ZIP is already open!"); - return; - } - p->ioDevice = ioDevice; - p->zipName = QString(); -} - -int QuaZip::getEntriesCount()const -{ - QuaZip *fakeThis=(QuaZip*)this; // non-const - fakeThis->p->zipError=UNZ_OK; - if(p->mode!=mdUnzip) { - qWarning("QuaZip::getEntriesCount(): ZIP is not open in mdUnzip mode"); - return -1; - } - unz_global_info globalInfo; - if((fakeThis->p->zipError=unzGetGlobalInfo(p->unzFile_f, &globalInfo))!=UNZ_OK) - return p->zipError; - return (int)globalInfo.number_entry; -} - -QString QuaZip::getComment()const -{ - QuaZip *fakeThis=(QuaZip*)this; // non-const - fakeThis->p->zipError=UNZ_OK; - if(p->mode!=mdUnzip) { - qWarning("QuaZip::getComment(): ZIP is not open in mdUnzip mode"); - return QString(); - } - unz_global_info globalInfo; - QByteArray comment; - if((fakeThis->p->zipError=unzGetGlobalInfo(p->unzFile_f, &globalInfo))!=UNZ_OK) - return QString(); - comment.resize(globalInfo.size_comment); - if((fakeThis->p->zipError=unzGetGlobalComment(p->unzFile_f, comment.data(), comment.size())) < 0) - return QString(); - fakeThis->p->zipError = UNZ_OK; - return p->commentCodec->toUnicode(comment); -} - -bool QuaZip::setCurrentFile(const QString& fileName, CaseSensitivity cs) -{ - p->zipError=UNZ_OK; - if(p->mode!=mdUnzip) { - qWarning("QuaZip::setCurrentFile(): ZIP is not open in mdUnzip mode"); - return false; - } - if(fileName.isEmpty()) { - p->hasCurrentFile_f=false; - return true; - } - // Unicode-aware reimplementation of the unzLocateFile function - if(p->unzFile_f==NULL) { - p->zipError=UNZ_PARAMERROR; - return false; - } - if(fileName.length()>MAX_FILE_NAME_LENGTH) { - p->zipError=UNZ_PARAMERROR; - return false; - } - bool sens; - if(cs==csDefault) { -#ifdef Q_WS_WIN - sens=false; -#else - sens=true; -#endif - } else sens=cs==csSensitive; - QString lower, current; - if(!sens) lower=fileName.toLower(); - p->hasCurrentFile_f=false; - for(bool more=goToFirstFile(); more; more=goToNextFile()) { - current=getCurrentFileName(); - if(current.isEmpty()) return false; - if(sens) { - if(current==fileName) break; - } else { - if(current.toLower()==lower) break; - } - } - return p->hasCurrentFile_f; -} - -bool QuaZip::goToFirstFile() -{ - p->zipError=UNZ_OK; - if(p->mode!=mdUnzip) { - qWarning("QuaZip::goToFirstFile(): ZIP is not open in mdUnzip mode"); - return false; - } - p->zipError=unzGoToFirstFile(p->unzFile_f); - p->hasCurrentFile_f=p->zipError==UNZ_OK; - return p->hasCurrentFile_f; -} - -bool QuaZip::goToNextFile() -{ - p->zipError=UNZ_OK; - if(p->mode!=mdUnzip) { - qWarning("QuaZip::goToFirstFile(): ZIP is not open in mdUnzip mode"); - return false; - } - p->zipError=unzGoToNextFile(p->unzFile_f); - p->hasCurrentFile_f=p->zipError==UNZ_OK; - if(p->zipError==UNZ_END_OF_LIST_OF_FILE) - p->zipError=UNZ_OK; - return p->hasCurrentFile_f; -} - -bool QuaZip::getCurrentFileInfo(QuaZipFileInfo *info)const -{ - QuaZip *fakeThis=(QuaZip*)this; // non-const - fakeThis->p->zipError=UNZ_OK; - if(p->mode!=mdUnzip) { - qWarning("QuaZip::getCurrentFileInfo(): ZIP is not open in mdUnzip mode"); - return false; - } - unz_file_info info_z; - QByteArray fileName; - QByteArray extra; - QByteArray comment; - if(info==NULL) return false; - if(!isOpen()||!hasCurrentFile()) return false; - if((fakeThis->p->zipError=unzGetCurrentFileInfo(p->unzFile_f, &info_z, NULL, 0, NULL, 0, NULL, 0))!=UNZ_OK) - return false; - fileName.resize(info_z.size_filename); - extra.resize(info_z.size_file_extra); - comment.resize(info_z.size_file_comment); - if((fakeThis->p->zipError=unzGetCurrentFileInfo(p->unzFile_f, NULL, - fileName.data(), fileName.size(), - extra.data(), extra.size(), - comment.data(), comment.size()))!=UNZ_OK) - return false; - info->versionCreated=info_z.version; - info->versionNeeded=info_z.version_needed; - info->flags=info_z.flag; - info->method=info_z.compression_method; - info->crc=info_z.crc; - info->compressedSize=info_z.compressed_size; - info->uncompressedSize=info_z.uncompressed_size; - info->diskNumberStart=info_z.disk_num_start; - info->internalAttr=info_z.internal_fa; - info->externalAttr=info_z.external_fa; - info->name=p->fileNameCodec->toUnicode(fileName); - info->comment=p->commentCodec->toUnicode(comment); - info->extra=extra; - info->dateTime=QDateTime( - QDate(info_z.tmu_date.tm_year, info_z.tmu_date.tm_mon+1, info_z.tmu_date.tm_mday), - QTime(info_z.tmu_date.tm_hour, info_z.tmu_date.tm_min, info_z.tmu_date.tm_sec)); - return true; -} - -QString QuaZip::getCurrentFileName()const -{ - QuaZip *fakeThis=(QuaZip*)this; // non-const - fakeThis->p->zipError=UNZ_OK; - if(p->mode!=mdUnzip) { - qWarning("QuaZip::getCurrentFileName(): ZIP is not open in mdUnzip mode"); - return QString(); - } - if(!isOpen()||!hasCurrentFile()) return QString(); - QByteArray fileName(MAX_FILE_NAME_LENGTH, 0); - if((fakeThis->p->zipError=unzGetCurrentFileInfo(p->unzFile_f, NULL, fileName.data(), fileName.size(), - NULL, 0, NULL, 0))!=UNZ_OK) - return QString(); - return p->fileNameCodec->toUnicode(fileName.constData()); -} - -void QuaZip::setFileNameCodec(QTextCodec *fileNameCodec) -{ - p->fileNameCodec=fileNameCodec; -} - -void QuaZip::setFileNameCodec(const char *fileNameCodecName) -{ - p->fileNameCodec=QTextCodec::codecForName(fileNameCodecName); -} - -QTextCodec *QuaZip::getFileNameCodec()const -{ - return p->fileNameCodec; -} - -void QuaZip::setCommentCodec(QTextCodec *commentCodec) -{ - p->commentCodec=commentCodec; -} - -void QuaZip::setCommentCodec(const char *commentCodecName) -{ - p->commentCodec=QTextCodec::codecForName(commentCodecName); -} - -QTextCodec *QuaZip::getCommentCodec()const -{ - return p->commentCodec; -} - -QString QuaZip::getZipName() const -{ - return p->zipName; -} - -QIODevice *QuaZip::getIoDevice() const -{ - if (!p->zipName.isEmpty()) // opened by name, using an internal QIODevice - return NULL; - return p->ioDevice; -} - -QuaZip::Mode QuaZip::getMode()const -{ - return p->mode; -} - -bool QuaZip::isOpen()const -{ - return p->mode!=mdNotOpen; -} - -int QuaZip::getZipError() const -{ - return p->zipError; -} - -void QuaZip::setComment(const QString& comment) -{ - p->comment=comment; -} - -bool QuaZip::hasCurrentFile()const -{ - return p->hasCurrentFile_f; -} - -unzFile QuaZip::getUnzFile() -{ - return p->unzFile_f; -} - -zipFile QuaZip::getZipFile() -{ - return p->zipFile_f; -} +/* +Copyright (C) 2005-2011 Sergey A. Tachenov + +This program is free software; you can redistribute it and/or modify it +under the terms of the GNU Lesser General Public License as published by +the Free Software Foundation; either version 2 of the License, or (at +your option) any later version. + +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 Lesser +General Public License for more details. + +You should have received a copy of the GNU Lesser 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 + +See COPYING file for the full LGPL text. + +Original ZIP package is copyrighted by Gilles Vollant, see +quazip/(un)zip.h files for details, basically it's zlib license. + **/ + +#include + +#include "quazip.h" + +class QuaZipPrivate { + friend class QuaZip; + private: + QTextCodec *fileNameCodec, *commentCodec; + QString zipName; + QIODevice *ioDevice; + QString comment; + QuaZip::Mode mode; + union { + unzFile unzFile_f; + zipFile zipFile_f; + }; + bool hasCurrentFile_f; + int zipError; + inline QuaZipPrivate(): + fileNameCodec(QTextCodec::codecForLocale()), + commentCodec(QTextCodec::codecForLocale()), + ioDevice(NULL), + mode(QuaZip::mdNotOpen), + hasCurrentFile_f(false), + zipError(UNZ_OK) {} + inline QuaZipPrivate(const QString &zipName): + fileNameCodec(QTextCodec::codecForLocale()), + commentCodec(QTextCodec::codecForLocale()), + zipName(zipName), + ioDevice(NULL), + mode(QuaZip::mdNotOpen), + hasCurrentFile_f(false), + zipError(UNZ_OK) {} + inline QuaZipPrivate(QIODevice *ioDevice): + fileNameCodec(QTextCodec::codecForLocale()), + commentCodec(QTextCodec::codecForLocale()), + ioDevice(ioDevice), + mode(QuaZip::mdNotOpen), + hasCurrentFile_f(false), + zipError(UNZ_OK) {} +}; + +QuaZip::QuaZip(): + p(new QuaZipPrivate()) +{ +} + +QuaZip::QuaZip(const QString& zipName): + p(new QuaZipPrivate(zipName)) +{ +} + +QuaZip::QuaZip(QIODevice *ioDevice): + p(new QuaZipPrivate(ioDevice)) +{ +} + +QuaZip::~QuaZip() +{ + if(isOpen()) + close(); + delete p; +} + +bool QuaZip::open(Mode mode, zlib_filefunc_def* ioApi) +{ + p->zipError=UNZ_OK; + if(isOpen()) { + qWarning("QuaZip::open(): ZIP already opened"); + return false; + } + QIODevice *ioDevice = p->ioDevice; + if (ioDevice == NULL) { + if (p->zipName.isEmpty()) { + qWarning("QuaZip::open(): set either ZIP file name or IO device first"); + return false; + } else { + ioDevice = new QFile(p->zipName); + } + } + switch(mode) { + case mdUnzip: + p->unzFile_f=unzOpen2(ioDevice, ioApi); + if(p->unzFile_f!=NULL) { + p->mode=mode; + p->ioDevice = ioDevice; + return true; + } else { + p->zipError=UNZ_OPENERROR; + if (!p->zipName.isEmpty()) + delete ioDevice; + return false; + } + case mdCreate: + case mdAppend: + case mdAdd: + p->zipFile_f=zipOpen2(ioDevice, + mode==mdCreate?APPEND_STATUS_CREATE: + mode==mdAppend?APPEND_STATUS_CREATEAFTER: + APPEND_STATUS_ADDINZIP, + NULL, + ioApi); + if(p->zipFile_f!=NULL) { + p->mode=mode; + p->ioDevice = ioDevice; + return true; + } else { + p->zipError=UNZ_OPENERROR; + if (!p->zipName.isEmpty()) + delete ioDevice; + return false; + } + default: + qWarning("QuaZip::open(): unknown mode: %d", (int)mode); + if (!p->zipName.isEmpty()) + delete ioDevice; + return false; + break; + } +} + +void QuaZip::close() +{ + p->zipError=UNZ_OK; + switch(p->mode) { + case mdNotOpen: + qWarning("QuaZip::close(): ZIP is not open"); + return; + case mdUnzip: + p->zipError=unzClose(p->unzFile_f); + break; + case mdCreate: + case mdAppend: + case mdAdd: + p->zipError=zipClose(p->zipFile_f, p->commentCodec->fromUnicode(p->comment).constData()); + break; + default: + qWarning("QuaZip::close(): unknown mode: %d", (int)p->mode); + return; + } + // opened by name, need to delete the internal IO device + if (!p->zipName.isEmpty()) + delete p->ioDevice; + if(p->zipError==UNZ_OK) + p->mode=mdNotOpen; +} + +void QuaZip::setZipName(const QString& zipName) +{ + if(isOpen()) { + qWarning("QuaZip::setZipName(): ZIP is already open!"); + return; + } + p->zipName=zipName; + p->ioDevice = NULL; +} + +void QuaZip::setIoDevice(QIODevice *ioDevice) +{ + if(isOpen()) { + qWarning("QuaZip::setIoDevice(): ZIP is already open!"); + return; + } + p->ioDevice = ioDevice; + p->zipName = QString(); +} + +int QuaZip::getEntriesCount()const +{ + QuaZip *fakeThis=(QuaZip*)this; // non-const + fakeThis->p->zipError=UNZ_OK; + if(p->mode!=mdUnzip) { + qWarning("QuaZip::getEntriesCount(): ZIP is not open in mdUnzip mode"); + return -1; + } + unz_global_info globalInfo; + if((fakeThis->p->zipError=unzGetGlobalInfo(p->unzFile_f, &globalInfo))!=UNZ_OK) + return p->zipError; + return (int)globalInfo.number_entry; +} + +QString QuaZip::getComment()const +{ + QuaZip *fakeThis=(QuaZip*)this; // non-const + fakeThis->p->zipError=UNZ_OK; + if(p->mode!=mdUnzip) { + qWarning("QuaZip::getComment(): ZIP is not open in mdUnzip mode"); + return QString(); + } + unz_global_info globalInfo; + QByteArray comment; + if((fakeThis->p->zipError=unzGetGlobalInfo(p->unzFile_f, &globalInfo))!=UNZ_OK) + return QString(); + comment.resize(globalInfo.size_comment); + if((fakeThis->p->zipError=unzGetGlobalComment(p->unzFile_f, comment.data(), comment.size())) < 0) + return QString(); + fakeThis->p->zipError = UNZ_OK; + return p->commentCodec->toUnicode(comment); +} + +bool QuaZip::setCurrentFile(const QString& fileName, CaseSensitivity cs) +{ + p->zipError=UNZ_OK; + if(p->mode!=mdUnzip) { + qWarning("QuaZip::setCurrentFile(): ZIP is not open in mdUnzip mode"); + return false; + } + if(fileName.isEmpty()) { + p->hasCurrentFile_f=false; + return true; + } + // Unicode-aware reimplementation of the unzLocateFile function + if(p->unzFile_f==NULL) { + p->zipError=UNZ_PARAMERROR; + return false; + } + if(fileName.length()>MAX_FILE_NAME_LENGTH) { + p->zipError=UNZ_PARAMERROR; + return false; + } + bool sens; + if(cs==csDefault) { +#ifdef Q_WS_WIN + sens=false; +#else + sens=true; +#endif + } else sens=cs==csSensitive; + QString lower, current; + if(!sens) lower=fileName.toLower(); + p->hasCurrentFile_f=false; + for(bool more=goToFirstFile(); more; more=goToNextFile()) { + current=getCurrentFileName(); + if(current.isEmpty()) return false; + if(sens) { + if(current==fileName) break; + } else { + if(current.toLower()==lower) break; + } + } + return p->hasCurrentFile_f; +} + +bool QuaZip::goToFirstFile() +{ + p->zipError=UNZ_OK; + if(p->mode!=mdUnzip) { + qWarning("QuaZip::goToFirstFile(): ZIP is not open in mdUnzip mode"); + return false; + } + p->zipError=unzGoToFirstFile(p->unzFile_f); + p->hasCurrentFile_f=p->zipError==UNZ_OK; + return p->hasCurrentFile_f; +} + +bool QuaZip::goToNextFile() +{ + p->zipError=UNZ_OK; + if(p->mode!=mdUnzip) { + qWarning("QuaZip::goToFirstFile(): ZIP is not open in mdUnzip mode"); + return false; + } + p->zipError=unzGoToNextFile(p->unzFile_f); + p->hasCurrentFile_f=p->zipError==UNZ_OK; + if(p->zipError==UNZ_END_OF_LIST_OF_FILE) + p->zipError=UNZ_OK; + return p->hasCurrentFile_f; +} + +bool QuaZip::getCurrentFileInfo(QuaZipFileInfo *info)const +{ + QuaZip *fakeThis=(QuaZip*)this; // non-const + fakeThis->p->zipError=UNZ_OK; + if(p->mode!=mdUnzip) { + qWarning("QuaZip::getCurrentFileInfo(): ZIP is not open in mdUnzip mode"); + return false; + } + unz_file_info info_z; + QByteArray fileName; + QByteArray extra; + QByteArray comment; + if(info==NULL) return false; + if(!isOpen()||!hasCurrentFile()) return false; + if((fakeThis->p->zipError=unzGetCurrentFileInfo(p->unzFile_f, &info_z, NULL, 0, NULL, 0, NULL, 0))!=UNZ_OK) + return false; + fileName.resize(info_z.size_filename); + extra.resize(info_z.size_file_extra); + comment.resize(info_z.size_file_comment); + if((fakeThis->p->zipError=unzGetCurrentFileInfo(p->unzFile_f, NULL, + fileName.data(), fileName.size(), + extra.data(), extra.size(), + comment.data(), comment.size()))!=UNZ_OK) + return false; + info->versionCreated=info_z.version; + info->versionNeeded=info_z.version_needed; + info->flags=info_z.flag; + info->method=info_z.compression_method; + info->crc=info_z.crc; + info->compressedSize=info_z.compressed_size; + info->uncompressedSize=info_z.uncompressed_size; + info->diskNumberStart=info_z.disk_num_start; + info->internalAttr=info_z.internal_fa; + info->externalAttr=info_z.external_fa; + info->name=p->fileNameCodec->toUnicode(fileName); + info->comment=p->commentCodec->toUnicode(comment); + info->extra=extra; + info->dateTime=QDateTime( + QDate(info_z.tmu_date.tm_year, info_z.tmu_date.tm_mon+1, info_z.tmu_date.tm_mday), + QTime(info_z.tmu_date.tm_hour, info_z.tmu_date.tm_min, info_z.tmu_date.tm_sec)); + return true; +} + +QString QuaZip::getCurrentFileName()const +{ + QuaZip *fakeThis=(QuaZip*)this; // non-const + fakeThis->p->zipError=UNZ_OK; + if(p->mode!=mdUnzip) { + qWarning("QuaZip::getCurrentFileName(): ZIP is not open in mdUnzip mode"); + return QString(); + } + if(!isOpen()||!hasCurrentFile()) return QString(); + QByteArray fileName(MAX_FILE_NAME_LENGTH, 0); + if((fakeThis->p->zipError=unzGetCurrentFileInfo(p->unzFile_f, NULL, fileName.data(), fileName.size(), + NULL, 0, NULL, 0))!=UNZ_OK) + return QString(); + return p->fileNameCodec->toUnicode(fileName.constData()); +} + +void QuaZip::setFileNameCodec(QTextCodec *fileNameCodec) +{ + p->fileNameCodec=fileNameCodec; +} + +void QuaZip::setFileNameCodec(const char *fileNameCodecName) +{ + p->fileNameCodec=QTextCodec::codecForName(fileNameCodecName); +} + +QTextCodec *QuaZip::getFileNameCodec()const +{ + return p->fileNameCodec; +} + +void QuaZip::setCommentCodec(QTextCodec *commentCodec) +{ + p->commentCodec=commentCodec; +} + +void QuaZip::setCommentCodec(const char *commentCodecName) +{ + p->commentCodec=QTextCodec::codecForName(commentCodecName); +} + +QTextCodec *QuaZip::getCommentCodec()const +{ + return p->commentCodec; +} + +QString QuaZip::getZipName() const +{ + return p->zipName; +} + +QIODevice *QuaZip::getIoDevice() const +{ + if (!p->zipName.isEmpty()) // opened by name, using an internal QIODevice + return NULL; + return p->ioDevice; +} + +QuaZip::Mode QuaZip::getMode()const +{ + return p->mode; +} + +bool QuaZip::isOpen()const +{ + return p->mode!=mdNotOpen; +} + +int QuaZip::getZipError() const +{ + return p->zipError; +} + +void QuaZip::setComment(const QString& comment) +{ + p->comment=comment; +} + +bool QuaZip::hasCurrentFile()const +{ + return p->hasCurrentFile_f; +} + +unzFile QuaZip::getUnzFile() +{ + return p->unzFile_f; +} + +zipFile QuaZip::getZipFile() +{ + return p->zipFile_f; +} diff -r 3331b30e4ef1 -r 88fde28bbda6 misc/quazip/quazip.h --- a/misc/quazip/quazip.h Sun Oct 21 01:28:33 2012 +0400 +++ b/misc/quazip/quazip.h Sat Nov 03 00:34:35 2012 +0400 @@ -1,359 +1,359 @@ -#ifndef QUA_ZIP_H -#define QUA_ZIP_H - -/* -Copyright (C) 2005-2011 Sergey A. Tachenov - -This program is free software; you can redistribute it and/or modify it -under the terms of the GNU Lesser General Public License as published by -the Free Software Foundation; either version 2 of the License, or (at -your option) any later version. - -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 Lesser -General Public License for more details. - -You should have received a copy of the GNU Lesser 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 - -See COPYING file for the full LGPL text. - -Original ZIP package is copyrighted by Gilles Vollant, see -quazip/(un)zip.h files for details, basically it's zlib license. - **/ - -#include -#include - -#include "zip.h" -#include "unzip.h" - -#include "quazip_global.h" -#include "quazipfileinfo.h" - -// just in case it will be defined in the later versions of the ZIP/UNZIP -#ifndef UNZ_OPENERROR -// define additional error code -#define UNZ_OPENERROR -1000 -#endif - -class QuaZipPrivate; - -/// ZIP archive. -/** \class QuaZip quazip.h - * This class implements basic interface to the ZIP archive. It can be - * used to read table contents of the ZIP archive and retreiving - * information about the files inside it. - * - * You can also use this class to open files inside archive by passing - * pointer to the instance of this class to the constructor of the - * QuaZipFile class. But see QuaZipFile::QuaZipFile(QuaZip*, QObject*) - * for the possible pitfalls. - * - * This class is indended to provide interface to the ZIP subpackage of - * the ZIP/UNZIP package as well as to the UNZIP subpackage. But - * currently it supports only UNZIP. - * - * The use of this class is simple - just create instance using - * constructor, then set ZIP archive file name using setFile() function - * (if you did not passed the name to the constructor), then open() and - * then use different functions to work with it! Well, if you are - * paranoid, you may also wish to call close before destructing the - * instance, to check for errors on close. - * - * You may also use getUnzFile() and getZipFile() functions to get the - * ZIP archive handle and use it with ZIP/UNZIP package API directly. - * - * This class supports localized file names inside ZIP archive, but you - * have to set up proper codec with setCodec() function. By default, - * locale codec will be used, which is probably ok for UNIX systems, but - * will almost certainly fail with ZIP archives created in Windows. This - * is because Windows ZIP programs have strange habit of using DOS - * encoding for file names in ZIP archives. For example, ZIP archive - * with cyrillic names created in Windows will have file names in \c - * IBM866 encoding instead of \c WINDOWS-1251. I think that calling one - * function is not much trouble, but for true platform independency it - * would be nice to have some mechanism for file name encoding auto - * detection using locale information. Does anyone know a good way to do - * it? - **/ -class QUAZIP_EXPORT QuaZip { - friend class QuaZipPrivate; - public: - /// Useful constants. - enum Constants { - MAX_FILE_NAME_LENGTH=256 /**< Maximum file name length. Taken from - \c UNZ_MAXFILENAMEINZIP constant in - unzip.c. */ - }; - /// Open mode of the ZIP file. - enum Mode { - mdNotOpen, ///< ZIP file is not open. This is the initial mode. - mdUnzip, ///< ZIP file is open for reading files inside it. - mdCreate, ///< ZIP file was created with open() call. - mdAppend, /**< ZIP file was opened in append mode. This refers to - * \c APPEND_STATUS_CREATEAFTER mode in ZIP/UNZIP package - * and means that zip is appended to some existing file - * what is useful when that file contains - * self-extractor code. This is obviously \em not what - * you whant to use to add files to the existing ZIP - * archive. - **/ - mdAdd ///< ZIP file was opened for adding files in the archive. - }; - /// Case sensitivity for the file names. - /** This is what you specify when accessing files in the archive. - * Works perfectly fine with any characters thanks to Qt's great - * unicode support. This is different from ZIP/UNZIP API, where - * only US-ASCII characters was supported. - **/ - enum CaseSensitivity { - csDefault=0, ///< Default for platform. Case sensitive for UNIX, not for Windows. - csSensitive=1, ///< Case sensitive. - csInsensitive=2 ///< Case insensitive. - }; - private: - QuaZipPrivate *p; - // not (and will not be) implemented - QuaZip(const QuaZip& that); - // not (and will not be) implemented - QuaZip& operator=(const QuaZip& that); - public: - /// Constructs QuaZip object. - /** Call setName() before opening constructed object. */ - QuaZip(); - /// Constructs QuaZip object associated with ZIP file \a zipName. - QuaZip(const QString& zipName); - /// Constructs QuaZip object associated with ZIP file represented by \a ioDevice. - /** The IO device must be seekable, otherwise an error will occur when opening. */ - QuaZip(QIODevice *ioDevice); - /// Destroys QuaZip object. - /** Calls close() if necessary. */ - ~QuaZip(); - /// Opens ZIP file. - /** - * Argument \a mode specifies open mode of the ZIP archive. See Mode - * for details. Note that there is zipOpen2() function in the - * ZIP/UNZIP API which accepts \a globalcomment argument, but it - * does not use it anywhere, so this open() function does not have this - * argument. See setComment() if you need to set global comment. - * - * If the ZIP file is accessed via explicitly set QIODevice, then - * this device is opened in the necessary mode. If the device was - * already opened by some other means, then the behaviour is defined by - * the device implementation, but generally it is not a very good - * idea. For example, QFile will at least issue a warning. - * - * \return \c true if successful, \c false otherwise. - * - * \note ZIP/UNZIP API open calls do not return error code - they - * just return \c NULL indicating an error. But to make things - * easier, quazip.h header defines additional error code \c - * UNZ_ERROROPEN and getZipError() will return it if the open call - * of the ZIP/UNZIP API returns \c NULL. - * - * Argument \a ioApi specifies IO function set for ZIP/UNZIP - * package to use. See unzip.h, zip.h and ioapi.h for details. Note - * that IO API for QuaZip is different from the original package. - * The file path argument was changed to be of type \c voidpf, and - * QuaZip passes a QIODevice pointer there. This QIODevice is either - * set explicitly via setIoDevice() or the QuaZip(QIODevice*) - * constructor, or it is created internally when opening the archive - * by its file name. The default API (qioapi.cpp) just delegates - * everything to the QIODevice API. Not only this allows to use a - * QIODevice instead of file name, but also has a nice side effect - * of raising the file size limit from 2G to 4G. - * - * In short: just forget about the \a ioApi argument and you'll be - * fine. - **/ - bool open(Mode mode, zlib_filefunc_def *ioApi =NULL); - /// Closes ZIP file. - /** Call getZipError() to determine if the close was successful. The - * underlying QIODevice is also closed, regardless of whether it was - * set explicitly or not. */ - void close(); - /// Sets the codec used to encode/decode file names inside archive. - /** This is necessary to access files in the ZIP archive created - * under Windows with non-latin characters in file names. For - * example, file names with cyrillic letters will be in \c IBM866 - * encoding. - **/ - void setFileNameCodec(QTextCodec *fileNameCodec); - /// Sets the codec used to encode/decode file names inside archive. - /** \overload - * Equivalent to calling setFileNameCodec(QTextCodec::codecForName(codecName)); - **/ - void setFileNameCodec(const char *fileNameCodecName); - /// Returns the codec used to encode/decode comments inside archive. - QTextCodec* getFileNameCodec() const; - /// Sets the codec used to encode/decode comments inside archive. - /** This codec defaults to locale codec, which is probably ok. - **/ - void setCommentCodec(QTextCodec *commentCodec); - /// Sets the codec used to encode/decode comments inside archive. - /** \overload - * Equivalent to calling setCommentCodec(QTextCodec::codecForName(codecName)); - **/ - void setCommentCodec(const char *commentCodecName); - /// Returns the codec used to encode/decode comments inside archive. - QTextCodec* getCommentCodec() const; - /// Returns the name of the ZIP file. - /** Returns null string if no ZIP file name has been set, for - * example when the QuaZip instance is set up to use a QIODevice - * instead. - * \sa setZipName(), setIoDevice(), getIoDevice() - **/ - QString getZipName() const; - /// Sets the name of the ZIP file. - /** Does nothing if the ZIP file is open. - * - * Does not reset error code returned by getZipError(). - * \sa setIoDevice(), getIoDevice(), getZipName() - **/ - void setZipName(const QString& zipName); - /// Returns the device representing this ZIP file. - /** Returns null string if no device has been set explicitly, for - * example when opening a ZIP file by name. - * \sa setIoDevice(), getZipName(), setZipName() - **/ - QIODevice *getIoDevice() const; - /// Sets the device representing the ZIP file. - /** Does nothing if the ZIP file is open. - * - * Does not reset error code returned by getZipError(). - * \sa getIoDevice(), getZipName(), setZipName() - **/ - void setIoDevice(QIODevice *ioDevice); - /// Returns the mode in which ZIP file was opened. - Mode getMode() const; - /// Returns \c true if ZIP file is open, \c false otherwise. - bool isOpen() const; - /// Returns the error code of the last operation. - /** Returns \c UNZ_OK if the last operation was successful. - * - * Error code resets to \c UNZ_OK every time you call any function - * that accesses something inside ZIP archive, even if it is \c - * const (like getEntriesCount()). open() and close() calls reset - * error code too. See documentation for the specific functions for - * details on error detection. - **/ - int getZipError() const; - /// Returns number of the entries in the ZIP central directory. - /** Returns negative error code in the case of error. The same error - * code will be returned by subsequent getZipError() call. - **/ - int getEntriesCount() const; - /// Returns global comment in the ZIP file. - QString getComment() const; - /// Sets global comment in the ZIP file. - /** Comment will be written to the archive on close operation. - * - * \sa open() - **/ - void setComment(const QString& comment); - /// Sets the current file to the first file in the archive. - /** Returns \c true on success, \c false otherwise. Call - * getZipError() to get the error code. - **/ - bool goToFirstFile(); - /// Sets the current file to the next file in the archive. - /** Returns \c true on success, \c false otherwise. Call - * getZipError() to determine if there was an error. - * - * Should be used only in QuaZip::mdUnzip mode. - * - * \note If the end of file was reached, getZipError() will return - * \c UNZ_OK instead of \c UNZ_END_OF_LIST_OF_FILE. This is to make - * things like this easier: - * \code - * for(bool more=zip.goToFirstFile(); more; more=zip.goToNextFile()) { - * // do something - * } - * if(zip.getZipError()==UNZ_OK) { - * // ok, there was no error - * } - * \endcode - **/ - bool goToNextFile(); - /// Sets current file by its name. - /** Returns \c true if successful, \c false otherwise. Argument \a - * cs specifies case sensitivity of the file name. Call - * getZipError() in the case of a failure to get error code. - * - * This is not a wrapper to unzLocateFile() function. That is - * because I had to implement locale-specific case-insensitive - * comparison. - * - * Here are the differences from the original implementation: - * - * - If the file was not found, error code is \c UNZ_OK, not \c - * UNZ_END_OF_LIST_OF_FILE (see also goToNextFile()). - * - If this function fails, it unsets the current file rather than - * resetting it back to what it was before the call. - * - * If \a fileName is null string then this function unsets the - * current file and return \c true. Note that you should close the - * file first if it is open! See - * QuaZipFile::QuaZipFile(QuaZip*,QObject*) for the details. - * - * Should be used only in QuaZip::mdUnzip mode. - * - * \sa setFileNameCodec(), CaseSensitivity - **/ - bool setCurrentFile(const QString& fileName, CaseSensitivity cs =csDefault); - /// Returns \c true if the current file has been set. - bool hasCurrentFile() const; - /// Retrieves information about the current file. - /** Fills the structure pointed by \a info. Returns \c true on - * success, \c false otherwise. In the latter case structure pointed - * by \a info remains untouched. If there was an error, - * getZipError() returns error code. - * - * Should be used only in QuaZip::mdUnzip mode. - * - * Does nothing and returns \c false in any of the following cases. - * - ZIP is not open; - * - ZIP does not have current file; - * - \a info is \c NULL; - * - * In all these cases getZipError() returns \c UNZ_OK since there - * is no ZIP/UNZIP API call. - **/ - bool getCurrentFileInfo(QuaZipFileInfo* info)const; - /// Returns the current file name. - /** Equivalent to calling getCurrentFileInfo() and then getting \c - * name field of the QuaZipFileInfo structure, but faster and more - * convenient. - * - * Should be used only in QuaZip::mdUnzip mode. - **/ - QString getCurrentFileName()const; - /// Returns \c unzFile handle. - /** You can use this handle to directly call UNZIP part of the - * ZIP/UNZIP package functions (see unzip.h). - * - * \warning When using the handle returned by this function, please - * keep in mind that QuaZip class is unable to detect any changes - * you make in the ZIP file state (e. g. changing current file, or - * closing the handle). So please do not do anything with this - * handle that is possible to do with the functions of this class. - * Or at least return the handle in the original state before - * calling some another function of this class (including implicit - * destructor calls and calls from the QuaZipFile objects that refer - * to this QuaZip instance!). So if you have changed the current - * file in the ZIP archive - then change it back or you may - * experience some strange behavior or even crashes. - **/ - unzFile getUnzFile(); - /// Returns \c zipFile handle. - /** You can use this handle to directly call ZIP part of the - * ZIP/UNZIP package functions (see zip.h). Warnings about the - * getUnzFile() function also apply to this function. - **/ - zipFile getZipFile(); -}; - -#endif +#ifndef QUA_ZIP_H +#define QUA_ZIP_H + +/* +Copyright (C) 2005-2011 Sergey A. Tachenov + +This program is free software; you can redistribute it and/or modify it +under the terms of the GNU Lesser General Public License as published by +the Free Software Foundation; either version 2 of the License, or (at +your option) any later version. + +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 Lesser +General Public License for more details. + +You should have received a copy of the GNU Lesser 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 + +See COPYING file for the full LGPL text. + +Original ZIP package is copyrighted by Gilles Vollant, see +quazip/(un)zip.h files for details, basically it's zlib license. + **/ + +#include +#include + +#include "zip.h" +#include "unzip.h" + +#include "quazip_global.h" +#include "quazipfileinfo.h" + +// just in case it will be defined in the later versions of the ZIP/UNZIP +#ifndef UNZ_OPENERROR +// define additional error code +#define UNZ_OPENERROR -1000 +#endif + +class QuaZipPrivate; + +/// ZIP archive. +/** \class QuaZip quazip.h + * This class implements basic interface to the ZIP archive. It can be + * used to read table contents of the ZIP archive and retreiving + * information about the files inside it. + * + * You can also use this class to open files inside archive by passing + * pointer to the instance of this class to the constructor of the + * QuaZipFile class. But see QuaZipFile::QuaZipFile(QuaZip*, QObject*) + * for the possible pitfalls. + * + * This class is indended to provide interface to the ZIP subpackage of + * the ZIP/UNZIP package as well as to the UNZIP subpackage. But + * currently it supports only UNZIP. + * + * The use of this class is simple - just create instance using + * constructor, then set ZIP archive file name using setFile() function + * (if you did not passed the name to the constructor), then open() and + * then use different functions to work with it! Well, if you are + * paranoid, you may also wish to call close before destructing the + * instance, to check for errors on close. + * + * You may also use getUnzFile() and getZipFile() functions to get the + * ZIP archive handle and use it with ZIP/UNZIP package API directly. + * + * This class supports localized file names inside ZIP archive, but you + * have to set up proper codec with setCodec() function. By default, + * locale codec will be used, which is probably ok for UNIX systems, but + * will almost certainly fail with ZIP archives created in Windows. This + * is because Windows ZIP programs have strange habit of using DOS + * encoding for file names in ZIP archives. For example, ZIP archive + * with cyrillic names created in Windows will have file names in \c + * IBM866 encoding instead of \c WINDOWS-1251. I think that calling one + * function is not much trouble, but for true platform independency it + * would be nice to have some mechanism for file name encoding auto + * detection using locale information. Does anyone know a good way to do + * it? + **/ +class QUAZIP_EXPORT QuaZip { + friend class QuaZipPrivate; + public: + /// Useful constants. + enum Constants { + MAX_FILE_NAME_LENGTH=256 /**< Maximum file name length. Taken from + \c UNZ_MAXFILENAMEINZIP constant in + unzip.c. */ + }; + /// Open mode of the ZIP file. + enum Mode { + mdNotOpen, ///< ZIP file is not open. This is the initial mode. + mdUnzip, ///< ZIP file is open for reading files inside it. + mdCreate, ///< ZIP file was created with open() call. + mdAppend, /**< ZIP file was opened in append mode. This refers to + * \c APPEND_STATUS_CREATEAFTER mode in ZIP/UNZIP package + * and means that zip is appended to some existing file + * what is useful when that file contains + * self-extractor code. This is obviously \em not what + * you whant to use to add files to the existing ZIP + * archive. + **/ + mdAdd ///< ZIP file was opened for adding files in the archive. + }; + /// Case sensitivity for the file names. + /** This is what you specify when accessing files in the archive. + * Works perfectly fine with any characters thanks to Qt's great + * unicode support. This is different from ZIP/UNZIP API, where + * only US-ASCII characters was supported. + **/ + enum CaseSensitivity { + csDefault=0, ///< Default for platform. Case sensitive for UNIX, not for Windows. + csSensitive=1, ///< Case sensitive. + csInsensitive=2 ///< Case insensitive. + }; + private: + QuaZipPrivate *p; + // not (and will not be) implemented + QuaZip(const QuaZip& that); + // not (and will not be) implemented + QuaZip& operator=(const QuaZip& that); + public: + /// Constructs QuaZip object. + /** Call setName() before opening constructed object. */ + QuaZip(); + /// Constructs QuaZip object associated with ZIP file \a zipName. + QuaZip(const QString& zipName); + /// Constructs QuaZip object associated with ZIP file represented by \a ioDevice. + /** The IO device must be seekable, otherwise an error will occur when opening. */ + QuaZip(QIODevice *ioDevice); + /// Destroys QuaZip object. + /** Calls close() if necessary. */ + ~QuaZip(); + /// Opens ZIP file. + /** + * Argument \a mode specifies open mode of the ZIP archive. See Mode + * for details. Note that there is zipOpen2() function in the + * ZIP/UNZIP API which accepts \a globalcomment argument, but it + * does not use it anywhere, so this open() function does not have this + * argument. See setComment() if you need to set global comment. + * + * If the ZIP file is accessed via explicitly set QIODevice, then + * this device is opened in the necessary mode. If the device was + * already opened by some other means, then the behaviour is defined by + * the device implementation, but generally it is not a very good + * idea. For example, QFile will at least issue a warning. + * + * \return \c true if successful, \c false otherwise. + * + * \note ZIP/UNZIP API open calls do not return error code - they + * just return \c NULL indicating an error. But to make things + * easier, quazip.h header defines additional error code \c + * UNZ_ERROROPEN and getZipError() will return it if the open call + * of the ZIP/UNZIP API returns \c NULL. + * + * Argument \a ioApi specifies IO function set for ZIP/UNZIP + * package to use. See unzip.h, zip.h and ioapi.h for details. Note + * that IO API for QuaZip is different from the original package. + * The file path argument was changed to be of type \c voidpf, and + * QuaZip passes a QIODevice pointer there. This QIODevice is either + * set explicitly via setIoDevice() or the QuaZip(QIODevice*) + * constructor, or it is created internally when opening the archive + * by its file name. The default API (qioapi.cpp) just delegates + * everything to the QIODevice API. Not only this allows to use a + * QIODevice instead of file name, but also has a nice side effect + * of raising the file size limit from 2G to 4G. + * + * In short: just forget about the \a ioApi argument and you'll be + * fine. + **/ + bool open(Mode mode, zlib_filefunc_def *ioApi =NULL); + /// Closes ZIP file. + /** Call getZipError() to determine if the close was successful. The + * underlying QIODevice is also closed, regardless of whether it was + * set explicitly or not. */ + void close(); + /// Sets the codec used to encode/decode file names inside archive. + /** This is necessary to access files in the ZIP archive created + * under Windows with non-latin characters in file names. For + * example, file names with cyrillic letters will be in \c IBM866 + * encoding. + **/ + void setFileNameCodec(QTextCodec *fileNameCodec); + /// Sets the codec used to encode/decode file names inside archive. + /** \overload + * Equivalent to calling setFileNameCodec(QTextCodec::codecForName(codecName)); + **/ + void setFileNameCodec(const char *fileNameCodecName); + /// Returns the codec used to encode/decode comments inside archive. + QTextCodec* getFileNameCodec() const; + /// Sets the codec used to encode/decode comments inside archive. + /** This codec defaults to locale codec, which is probably ok. + **/ + void setCommentCodec(QTextCodec *commentCodec); + /// Sets the codec used to encode/decode comments inside archive. + /** \overload + * Equivalent to calling setCommentCodec(QTextCodec::codecForName(codecName)); + **/ + void setCommentCodec(const char *commentCodecName); + /// Returns the codec used to encode/decode comments inside archive. + QTextCodec* getCommentCodec() const; + /// Returns the name of the ZIP file. + /** Returns null string if no ZIP file name has been set, for + * example when the QuaZip instance is set up to use a QIODevice + * instead. + * \sa setZipName(), setIoDevice(), getIoDevice() + **/ + QString getZipName() const; + /// Sets the name of the ZIP file. + /** Does nothing if the ZIP file is open. + * + * Does not reset error code returned by getZipError(). + * \sa setIoDevice(), getIoDevice(), getZipName() + **/ + void setZipName(const QString& zipName); + /// Returns the device representing this ZIP file. + /** Returns null string if no device has been set explicitly, for + * example when opening a ZIP file by name. + * \sa setIoDevice(), getZipName(), setZipName() + **/ + QIODevice *getIoDevice() const; + /// Sets the device representing the ZIP file. + /** Does nothing if the ZIP file is open. + * + * Does not reset error code returned by getZipError(). + * \sa getIoDevice(), getZipName(), setZipName() + **/ + void setIoDevice(QIODevice *ioDevice); + /// Returns the mode in which ZIP file was opened. + Mode getMode() const; + /// Returns \c true if ZIP file is open, \c false otherwise. + bool isOpen() const; + /// Returns the error code of the last operation. + /** Returns \c UNZ_OK if the last operation was successful. + * + * Error code resets to \c UNZ_OK every time you call any function + * that accesses something inside ZIP archive, even if it is \c + * const (like getEntriesCount()). open() and close() calls reset + * error code too. See documentation for the specific functions for + * details on error detection. + **/ + int getZipError() const; + /// Returns number of the entries in the ZIP central directory. + /** Returns negative error code in the case of error. The same error + * code will be returned by subsequent getZipError() call. + **/ + int getEntriesCount() const; + /// Returns global comment in the ZIP file. + QString getComment() const; + /// Sets global comment in the ZIP file. + /** Comment will be written to the archive on close operation. + * + * \sa open() + **/ + void setComment(const QString& comment); + /// Sets the current file to the first file in the archive. + /** Returns \c true on success, \c false otherwise. Call + * getZipError() to get the error code. + **/ + bool goToFirstFile(); + /// Sets the current file to the next file in the archive. + /** Returns \c true on success, \c false otherwise. Call + * getZipError() to determine if there was an error. + * + * Should be used only in QuaZip::mdUnzip mode. + * + * \note If the end of file was reached, getZipError() will return + * \c UNZ_OK instead of \c UNZ_END_OF_LIST_OF_FILE. This is to make + * things like this easier: + * \code + * for(bool more=zip.goToFirstFile(); more; more=zip.goToNextFile()) { + * // do something + * } + * if(zip.getZipError()==UNZ_OK) { + * // ok, there was no error + * } + * \endcode + **/ + bool goToNextFile(); + /// Sets current file by its name. + /** Returns \c true if successful, \c false otherwise. Argument \a + * cs specifies case sensitivity of the file name. Call + * getZipError() in the case of a failure to get error code. + * + * This is not a wrapper to unzLocateFile() function. That is + * because I had to implement locale-specific case-insensitive + * comparison. + * + * Here are the differences from the original implementation: + * + * - If the file was not found, error code is \c UNZ_OK, not \c + * UNZ_END_OF_LIST_OF_FILE (see also goToNextFile()). + * - If this function fails, it unsets the current file rather than + * resetting it back to what it was before the call. + * + * If \a fileName is null string then this function unsets the + * current file and return \c true. Note that you should close the + * file first if it is open! See + * QuaZipFile::QuaZipFile(QuaZip*,QObject*) for the details. + * + * Should be used only in QuaZip::mdUnzip mode. + * + * \sa setFileNameCodec(), CaseSensitivity + **/ + bool setCurrentFile(const QString& fileName, CaseSensitivity cs =csDefault); + /// Returns \c true if the current file has been set. + bool hasCurrentFile() const; + /// Retrieves information about the current file. + /** Fills the structure pointed by \a info. Returns \c true on + * success, \c false otherwise. In the latter case structure pointed + * by \a info remains untouched. If there was an error, + * getZipError() returns error code. + * + * Should be used only in QuaZip::mdUnzip mode. + * + * Does nothing and returns \c false in any of the following cases. + * - ZIP is not open; + * - ZIP does not have current file; + * - \a info is \c NULL; + * + * In all these cases getZipError() returns \c UNZ_OK since there + * is no ZIP/UNZIP API call. + **/ + bool getCurrentFileInfo(QuaZipFileInfo* info)const; + /// Returns the current file name. + /** Equivalent to calling getCurrentFileInfo() and then getting \c + * name field of the QuaZipFileInfo structure, but faster and more + * convenient. + * + * Should be used only in QuaZip::mdUnzip mode. + **/ + QString getCurrentFileName()const; + /// Returns \c unzFile handle. + /** You can use this handle to directly call UNZIP part of the + * ZIP/UNZIP package functions (see unzip.h). + * + * \warning When using the handle returned by this function, please + * keep in mind that QuaZip class is unable to detect any changes + * you make in the ZIP file state (e. g. changing current file, or + * closing the handle). So please do not do anything with this + * handle that is possible to do with the functions of this class. + * Or at least return the handle in the original state before + * calling some another function of this class (including implicit + * destructor calls and calls from the QuaZipFile objects that refer + * to this QuaZip instance!). So if you have changed the current + * file in the ZIP archive - then change it back or you may + * experience some strange behavior or even crashes. + **/ + unzFile getUnzFile(); + /// Returns \c zipFile handle. + /** You can use this handle to directly call ZIP part of the + * ZIP/UNZIP package functions (see zip.h). Warnings about the + * getUnzFile() function also apply to this function. + **/ + zipFile getZipFile(); +}; + +#endif diff -r 3331b30e4ef1 -r 88fde28bbda6 misc/quazip/quazipfile.cpp --- a/misc/quazip/quazipfile.cpp Sun Oct 21 01:28:33 2012 +0400 +++ b/misc/quazip/quazipfile.cpp Sat Nov 03 00:34:35 2012 +0400 @@ -1,428 +1,428 @@ -/* -Copyright (C) 2005-2011 Sergey A. Tachenov - -This program is free software; you can redistribute it and/or modify it -under the terms of the GNU Lesser General Public License as published by -the Free Software Foundation; either version 2 of the License, or (at -your option) any later version. - -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 Lesser -General Public License for more details. - -You should have received a copy of the GNU Lesser 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 - -See COPYING file for the full LGPL text. - -Original ZIP package is copyrighted by Gilles Vollant, see -quazip/(un)zip.h files for details, basically it's zlib license. - **/ - -#include "quazipfile.h" - -using namespace std; - -class QuaZipFilePrivate { - friend class QuaZipFile; - private: - QuaZipFile *q; - QuaZip *zip; - QString fileName; - QuaZip::CaseSensitivity caseSensitivity; - bool raw; - qint64 writePos; - // these two are for writing raw files - ulong uncompressedSize; - quint32 crc; - bool internal; - int zipError; - inline void resetZipError() const {setZipError(UNZ_OK);} - // const, but sets zipError! - void setZipError(int zipError) const; - inline QuaZipFilePrivate(QuaZipFile *q): - q(q), zip(NULL), internal(true), zipError(UNZ_OK) {} - inline QuaZipFilePrivate(QuaZipFile *q, const QString &zipName): - q(q), internal(true), zipError(UNZ_OK) - { - zip=new QuaZip(zipName); - } - inline QuaZipFilePrivate(QuaZipFile *q, const QString &zipName, const QString &fileName, - QuaZip::CaseSensitivity cs): - q(q), internal(true), zipError(UNZ_OK) - { - zip=new QuaZip(zipName); - this->fileName=fileName; - this->caseSensitivity=cs; - } - inline QuaZipFilePrivate(QuaZipFile *q, QuaZip *zip): - q(q), zip(zip), internal(false), zipError(UNZ_OK) {} - inline ~QuaZipFilePrivate() - { - if (internal) - delete zip; - } -}; - -QuaZipFile::QuaZipFile(): - p(new QuaZipFilePrivate(this)) -{ -} - -QuaZipFile::QuaZipFile(QObject *parent): - QIODevice(parent), - p(new QuaZipFilePrivate(this)) -{ -} - -QuaZipFile::QuaZipFile(const QString& zipName, QObject *parent): - QIODevice(parent), - p(new QuaZipFilePrivate(this, zipName)) -{ -} - -QuaZipFile::QuaZipFile(const QString& zipName, const QString& fileName, - QuaZip::CaseSensitivity cs, QObject *parent): - QIODevice(parent), - p(new QuaZipFilePrivate(this, zipName, fileName, cs)) -{ -} - -QuaZipFile::QuaZipFile(QuaZip *zip, QObject *parent): - QIODevice(parent), - p(new QuaZipFilePrivate(this, zip)) -{ -} - -QuaZipFile::~QuaZipFile() -{ - if (isOpen()) - close(); - delete p; -} - -QString QuaZipFile::getZipName() const -{ - return p->zip==NULL ? QString() : p->zip->getZipName(); -} - -QString QuaZipFile::getActualFileName()const -{ - p->setZipError(UNZ_OK); - if (p->zip == NULL || (openMode() & WriteOnly)) - return QString(); - QString name=p->zip->getCurrentFileName(); - if(name.isNull()) - p->setZipError(p->zip->getZipError()); - return name; -} - -void QuaZipFile::setZipName(const QString& zipName) -{ - if(isOpen()) { - qWarning("QuaZipFile::setZipName(): file is already open - can not set ZIP name"); - return; - } - if(p->zip!=NULL && p->internal) - delete p->zip; - p->zip=new QuaZip(zipName); - p->internal=true; -} - -void QuaZipFile::setZip(QuaZip *zip) -{ - if(isOpen()) { - qWarning("QuaZipFile::setZip(): file is already open - can not set ZIP"); - return; - } - if(p->zip!=NULL && p->internal) - delete p->zip; - p->zip=zip; - p->fileName=QString(); - p->internal=false; -} - -void QuaZipFile::setFileName(const QString& fileName, QuaZip::CaseSensitivity cs) -{ - if(p->zip==NULL) { - qWarning("QuaZipFile::setFileName(): call setZipName() first"); - return; - } - if(!p->internal) { - qWarning("QuaZipFile::setFileName(): should not be used when not using internal QuaZip"); - return; - } - if(isOpen()) { - qWarning("QuaZipFile::setFileName(): can not set file name for already opened file"); - return; - } - p->fileName=fileName; - p->caseSensitivity=cs; -} - -void QuaZipFilePrivate::setZipError(int zipError) const -{ - QuaZipFilePrivate *fakeThis = const_cast(this); // non-const - fakeThis->zipError=zipError; - if(zipError==UNZ_OK) - q->setErrorString(QString()); - else - q->setErrorString(q->tr("ZIP/UNZIP API error %1").arg(zipError)); -} - -bool QuaZipFile::open(OpenMode mode) -{ - return open(mode, NULL); -} - -bool QuaZipFile::open(OpenMode mode, int *method, int *level, bool raw, const char *password) -{ - p->resetZipError(); - if(isOpen()) { - qWarning("QuaZipFile::open(): already opened"); - return false; - } - if(mode&Unbuffered) { - qWarning("QuaZipFile::open(): Unbuffered mode is not supported"); - return false; - } - if((mode&ReadOnly)&&!(mode&WriteOnly)) { - if(p->internal) { - if(!p->zip->open(QuaZip::mdUnzip)) { - p->setZipError(p->zip->getZipError()); - return false; - } - if(!p->zip->setCurrentFile(p->fileName, p->caseSensitivity)) { - p->setZipError(p->zip->getZipError()); - p->zip->close(); - return false; - } - } else { - if(p->zip==NULL) { - qWarning("QuaZipFile::open(): zip is NULL"); - return false; - } - if(p->zip->getMode()!=QuaZip::mdUnzip) { - qWarning("QuaZipFile::open(): file open mode %d incompatible with ZIP open mode %d", - (int)mode, (int)p->zip->getMode()); - return false; - } - if(!p->zip->hasCurrentFile()) { - qWarning("QuaZipFile::open(): zip does not have current file"); - return false; - } - } - p->setZipError(unzOpenCurrentFile3(p->zip->getUnzFile(), method, level, (int)raw, password)); - if(p->zipError==UNZ_OK) { - setOpenMode(mode); - p->raw=raw; - return true; - } else - return false; - } - qWarning("QuaZipFile::open(): open mode %d not supported by this function", (int)mode); - return false; -} - -bool QuaZipFile::open(OpenMode mode, const QuaZipNewInfo& info, - const char *password, quint32 crc, - int method, int level, bool raw, - int windowBits, int memLevel, int strategy) -{ - zip_fileinfo info_z; - p->resetZipError(); - if(isOpen()) { - qWarning("QuaZipFile::open(): already opened"); - return false; - } - if((mode&WriteOnly)&&!(mode&ReadOnly)) { - if(p->internal) { - qWarning("QuaZipFile::open(): write mode is incompatible with internal QuaZip approach"); - return false; - } - if(p->zip==NULL) { - qWarning("QuaZipFile::open(): zip is NULL"); - return false; - } - if(p->zip->getMode()!=QuaZip::mdCreate&&p->zip->getMode()!=QuaZip::mdAppend&&p->zip->getMode()!=QuaZip::mdAdd) { - qWarning("QuaZipFile::open(): file open mode %d incompatible with ZIP open mode %d", - (int)mode, (int)p->zip->getMode()); - return false; - } - info_z.tmz_date.tm_year=info.dateTime.date().year(); - info_z.tmz_date.tm_mon=info.dateTime.date().month() - 1; - info_z.tmz_date.tm_mday=info.dateTime.date().day(); - info_z.tmz_date.tm_hour=info.dateTime.time().hour(); - info_z.tmz_date.tm_min=info.dateTime.time().minute(); - info_z.tmz_date.tm_sec=info.dateTime.time().second(); - info_z.dosDate = 0; - info_z.internal_fa=(uLong)info.internalAttr; - info_z.external_fa=(uLong)info.externalAttr; - p->setZipError(zipOpenNewFileInZip3(p->zip->getZipFile(), - p->zip->getFileNameCodec()->fromUnicode(info.name).constData(), &info_z, - info.extraLocal.constData(), info.extraLocal.length(), - info.extraGlobal.constData(), info.extraGlobal.length(), - p->zip->getCommentCodec()->fromUnicode(info.comment).constData(), - method, level, (int)raw, - windowBits, memLevel, strategy, - password, (uLong)crc)); - if(p->zipError==UNZ_OK) { - p->writePos=0; - setOpenMode(mode); - p->raw=raw; - if(raw) { - p->crc=crc; - p->uncompressedSize=info.uncompressedSize; - } - return true; - } else - return false; - } - qWarning("QuaZipFile::open(): open mode %d not supported by this function", (int)mode); - return false; -} - -bool QuaZipFile::isSequential()const -{ - return true; -} - -qint64 QuaZipFile::pos()const -{ - if(p->zip==NULL) { - qWarning("QuaZipFile::pos(): call setZipName() or setZip() first"); - return -1; - } - if(!isOpen()) { - qWarning("QuaZipFile::pos(): file is not open"); - return -1; - } - if(openMode()&ReadOnly) - return unztell(p->zip->getUnzFile()); - else - return p->writePos; -} - -bool QuaZipFile::atEnd()const -{ - if(p->zip==NULL) { - qWarning("QuaZipFile::atEnd(): call setZipName() or setZip() first"); - return false; - } - if(!isOpen()) { - qWarning("QuaZipFile::atEnd(): file is not open"); - return false; - } - if(openMode()&ReadOnly) - return unzeof(p->zip->getUnzFile())==1; - else - return true; -} - -qint64 QuaZipFile::size()const -{ - if(!isOpen()) { - qWarning("QuaZipFile::atEnd(): file is not open"); - return -1; - } - if(openMode()&ReadOnly) - return p->raw?csize():usize(); - else - return p->writePos; -} - -qint64 QuaZipFile::csize()const -{ - unz_file_info info_z; - p->setZipError(UNZ_OK); - if(p->zip==NULL||p->zip->getMode()!=QuaZip::mdUnzip) return -1; - p->setZipError(unzGetCurrentFileInfo(p->zip->getUnzFile(), &info_z, NULL, 0, NULL, 0, NULL, 0)); - if(p->zipError!=UNZ_OK) - return -1; - return info_z.compressed_size; -} - -qint64 QuaZipFile::usize()const -{ - unz_file_info info_z; - p->setZipError(UNZ_OK); - if(p->zip==NULL||p->zip->getMode()!=QuaZip::mdUnzip) return -1; - p->setZipError(unzGetCurrentFileInfo(p->zip->getUnzFile(), &info_z, NULL, 0, NULL, 0, NULL, 0)); - if(p->zipError!=UNZ_OK) - return -1; - return info_z.uncompressed_size; -} - -bool QuaZipFile::getFileInfo(QuaZipFileInfo *info) -{ - if(p->zip==NULL||p->zip->getMode()!=QuaZip::mdUnzip) return false; - p->zip->getCurrentFileInfo(info); - p->setZipError(p->zip->getZipError()); - return p->zipError==UNZ_OK; -} - -void QuaZipFile::close() -{ - p->resetZipError(); - if(p->zip==NULL||!p->zip->isOpen()) return; - if(!isOpen()) { - qWarning("QuaZipFile::close(): file isn't open"); - return; - } - if(openMode()&ReadOnly) - p->setZipError(unzCloseCurrentFile(p->zip->getUnzFile())); - else if(openMode()&WriteOnly) - if(isRaw()) p->setZipError(zipCloseFileInZipRaw(p->zip->getZipFile(), p->uncompressedSize, p->crc)); - else p->setZipError(zipCloseFileInZip(p->zip->getZipFile())); - else { - qWarning("Wrong open mode: %d", (int)openMode()); - return; - } - if(p->zipError==UNZ_OK) setOpenMode(QIODevice::NotOpen); - else return; - if(p->internal) { - p->zip->close(); - p->setZipError(p->zip->getZipError()); - } -} - -qint64 QuaZipFile::readData(char *data, qint64 maxSize) -{ - p->setZipError(UNZ_OK); - qint64 bytesRead=unzReadCurrentFile(p->zip->getUnzFile(), data, (unsigned)maxSize); - if(bytesRead<0) p->setZipError((int)bytesRead); - return bytesRead; -} - -qint64 QuaZipFile::writeData(const char* data, qint64 maxSize) -{ - p->setZipError(ZIP_OK); - p->setZipError(zipWriteInFileInZip(p->zip->getZipFile(), data, (uint)maxSize)); - if(p->zipError!=ZIP_OK) return -1; - else { - p->writePos+=maxSize; - return maxSize; - } -} - -QString QuaZipFile::getFileName() const -{ - return p->fileName; -} - -QuaZip::CaseSensitivity QuaZipFile::getCaseSensitivity() const -{ - return p->caseSensitivity; -} - -bool QuaZipFile::isRaw() const -{ - return p->raw; -} - -int QuaZipFile::getZipError() const -{ - return p->zipError; -} +/* +Copyright (C) 2005-2011 Sergey A. Tachenov + +This program is free software; you can redistribute it and/or modify it +under the terms of the GNU Lesser General Public License as published by +the Free Software Foundation; either version 2 of the License, or (at +your option) any later version. + +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 Lesser +General Public License for more details. + +You should have received a copy of the GNU Lesser 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 + +See COPYING file for the full LGPL text. + +Original ZIP package is copyrighted by Gilles Vollant, see +quazip/(un)zip.h files for details, basically it's zlib license. + **/ + +#include "quazipfile.h" + +using namespace std; + +class QuaZipFilePrivate { + friend class QuaZipFile; + private: + QuaZipFile *q; + QuaZip *zip; + QString fileName; + QuaZip::CaseSensitivity caseSensitivity; + bool raw; + qint64 writePos; + // these two are for writing raw files + ulong uncompressedSize; + quint32 crc; + bool internal; + int zipError; + inline void resetZipError() const {setZipError(UNZ_OK);} + // const, but sets zipError! + void setZipError(int zipError) const; + inline QuaZipFilePrivate(QuaZipFile *q): + q(q), zip(NULL), internal(true), zipError(UNZ_OK) {} + inline QuaZipFilePrivate(QuaZipFile *q, const QString &zipName): + q(q), internal(true), zipError(UNZ_OK) + { + zip=new QuaZip(zipName); + } + inline QuaZipFilePrivate(QuaZipFile *q, const QString &zipName, const QString &fileName, + QuaZip::CaseSensitivity cs): + q(q), internal(true), zipError(UNZ_OK) + { + zip=new QuaZip(zipName); + this->fileName=fileName; + this->caseSensitivity=cs; + } + inline QuaZipFilePrivate(QuaZipFile *q, QuaZip *zip): + q(q), zip(zip), internal(false), zipError(UNZ_OK) {} + inline ~QuaZipFilePrivate() + { + if (internal) + delete zip; + } +}; + +QuaZipFile::QuaZipFile(): + p(new QuaZipFilePrivate(this)) +{ +} + +QuaZipFile::QuaZipFile(QObject *parent): + QIODevice(parent), + p(new QuaZipFilePrivate(this)) +{ +} + +QuaZipFile::QuaZipFile(const QString& zipName, QObject *parent): + QIODevice(parent), + p(new QuaZipFilePrivate(this, zipName)) +{ +} + +QuaZipFile::QuaZipFile(const QString& zipName, const QString& fileName, + QuaZip::CaseSensitivity cs, QObject *parent): + QIODevice(parent), + p(new QuaZipFilePrivate(this, zipName, fileName, cs)) +{ +} + +QuaZipFile::QuaZipFile(QuaZip *zip, QObject *parent): + QIODevice(parent), + p(new QuaZipFilePrivate(this, zip)) +{ +} + +QuaZipFile::~QuaZipFile() +{ + if (isOpen()) + close(); + delete p; +} + +QString QuaZipFile::getZipName() const +{ + return p->zip==NULL ? QString() : p->zip->getZipName(); +} + +QString QuaZipFile::getActualFileName()const +{ + p->setZipError(UNZ_OK); + if (p->zip == NULL || (openMode() & WriteOnly)) + return QString(); + QString name=p->zip->getCurrentFileName(); + if(name.isNull()) + p->setZipError(p->zip->getZipError()); + return name; +} + +void QuaZipFile::setZipName(const QString& zipName) +{ + if(isOpen()) { + qWarning("QuaZipFile::setZipName(): file is already open - can not set ZIP name"); + return; + } + if(p->zip!=NULL && p->internal) + delete p->zip; + p->zip=new QuaZip(zipName); + p->internal=true; +} + +void QuaZipFile::setZip(QuaZip *zip) +{ + if(isOpen()) { + qWarning("QuaZipFile::setZip(): file is already open - can not set ZIP"); + return; + } + if(p->zip!=NULL && p->internal) + delete p->zip; + p->zip=zip; + p->fileName=QString(); + p->internal=false; +} + +void QuaZipFile::setFileName(const QString& fileName, QuaZip::CaseSensitivity cs) +{ + if(p->zip==NULL) { + qWarning("QuaZipFile::setFileName(): call setZipName() first"); + return; + } + if(!p->internal) { + qWarning("QuaZipFile::setFileName(): should not be used when not using internal QuaZip"); + return; + } + if(isOpen()) { + qWarning("QuaZipFile::setFileName(): can not set file name for already opened file"); + return; + } + p->fileName=fileName; + p->caseSensitivity=cs; +} + +void QuaZipFilePrivate::setZipError(int zipError) const +{ + QuaZipFilePrivate *fakeThis = const_cast(this); // non-const + fakeThis->zipError=zipError; + if(zipError==UNZ_OK) + q->setErrorString(QString()); + else + q->setErrorString(q->tr("ZIP/UNZIP API error %1").arg(zipError)); +} + +bool QuaZipFile::open(OpenMode mode) +{ + return open(mode, NULL); +} + +bool QuaZipFile::open(OpenMode mode, int *method, int *level, bool raw, const char *password) +{ + p->resetZipError(); + if(isOpen()) { + qWarning("QuaZipFile::open(): already opened"); + return false; + } + if(mode&Unbuffered) { + qWarning("QuaZipFile::open(): Unbuffered mode is not supported"); + return false; + } + if((mode&ReadOnly)&&!(mode&WriteOnly)) { + if(p->internal) { + if(!p->zip->open(QuaZip::mdUnzip)) { + p->setZipError(p->zip->getZipError()); + return false; + } + if(!p->zip->setCurrentFile(p->fileName, p->caseSensitivity)) { + p->setZipError(p->zip->getZipError()); + p->zip->close(); + return false; + } + } else { + if(p->zip==NULL) { + qWarning("QuaZipFile::open(): zip is NULL"); + return false; + } + if(p->zip->getMode()!=QuaZip::mdUnzip) { + qWarning("QuaZipFile::open(): file open mode %d incompatible with ZIP open mode %d", + (int)mode, (int)p->zip->getMode()); + return false; + } + if(!p->zip->hasCurrentFile()) { + qWarning("QuaZipFile::open(): zip does not have current file"); + return false; + } + } + p->setZipError(unzOpenCurrentFile3(p->zip->getUnzFile(), method, level, (int)raw, password)); + if(p->zipError==UNZ_OK) { + setOpenMode(mode); + p->raw=raw; + return true; + } else + return false; + } + qWarning("QuaZipFile::open(): open mode %d not supported by this function", (int)mode); + return false; +} + +bool QuaZipFile::open(OpenMode mode, const QuaZipNewInfo& info, + const char *password, quint32 crc, + int method, int level, bool raw, + int windowBits, int memLevel, int strategy) +{ + zip_fileinfo info_z; + p->resetZipError(); + if(isOpen()) { + qWarning("QuaZipFile::open(): already opened"); + return false; + } + if((mode&WriteOnly)&&!(mode&ReadOnly)) { + if(p->internal) { + qWarning("QuaZipFile::open(): write mode is incompatible with internal QuaZip approach"); + return false; + } + if(p->zip==NULL) { + qWarning("QuaZipFile::open(): zip is NULL"); + return false; + } + if(p->zip->getMode()!=QuaZip::mdCreate&&p->zip->getMode()!=QuaZip::mdAppend&&p->zip->getMode()!=QuaZip::mdAdd) { + qWarning("QuaZipFile::open(): file open mode %d incompatible with ZIP open mode %d", + (int)mode, (int)p->zip->getMode()); + return false; + } + info_z.tmz_date.tm_year=info.dateTime.date().year(); + info_z.tmz_date.tm_mon=info.dateTime.date().month() - 1; + info_z.tmz_date.tm_mday=info.dateTime.date().day(); + info_z.tmz_date.tm_hour=info.dateTime.time().hour(); + info_z.tmz_date.tm_min=info.dateTime.time().minute(); + info_z.tmz_date.tm_sec=info.dateTime.time().second(); + info_z.dosDate = 0; + info_z.internal_fa=(uLong)info.internalAttr; + info_z.external_fa=(uLong)info.externalAttr; + p->setZipError(zipOpenNewFileInZip3(p->zip->getZipFile(), + p->zip->getFileNameCodec()->fromUnicode(info.name).constData(), &info_z, + info.extraLocal.constData(), info.extraLocal.length(), + info.extraGlobal.constData(), info.extraGlobal.length(), + p->zip->getCommentCodec()->fromUnicode(info.comment).constData(), + method, level, (int)raw, + windowBits, memLevel, strategy, + password, (uLong)crc)); + if(p->zipError==UNZ_OK) { + p->writePos=0; + setOpenMode(mode); + p->raw=raw; + if(raw) { + p->crc=crc; + p->uncompressedSize=info.uncompressedSize; + } + return true; + } else + return false; + } + qWarning("QuaZipFile::open(): open mode %d not supported by this function", (int)mode); + return false; +} + +bool QuaZipFile::isSequential()const +{ + return true; +} + +qint64 QuaZipFile::pos()const +{ + if(p->zip==NULL) { + qWarning("QuaZipFile::pos(): call setZipName() or setZip() first"); + return -1; + } + if(!isOpen()) { + qWarning("QuaZipFile::pos(): file is not open"); + return -1; + } + if(openMode()&ReadOnly) + return unztell(p->zip->getUnzFile()); + else + return p->writePos; +} + +bool QuaZipFile::atEnd()const +{ + if(p->zip==NULL) { + qWarning("QuaZipFile::atEnd(): call setZipName() or setZip() first"); + return false; + } + if(!isOpen()) { + qWarning("QuaZipFile::atEnd(): file is not open"); + return false; + } + if(openMode()&ReadOnly) + return unzeof(p->zip->getUnzFile())==1; + else + return true; +} + +qint64 QuaZipFile::size()const +{ + if(!isOpen()) { + qWarning("QuaZipFile::atEnd(): file is not open"); + return -1; + } + if(openMode()&ReadOnly) + return p->raw?csize():usize(); + else + return p->writePos; +} + +qint64 QuaZipFile::csize()const +{ + unz_file_info info_z; + p->setZipError(UNZ_OK); + if(p->zip==NULL||p->zip->getMode()!=QuaZip::mdUnzip) return -1; + p->setZipError(unzGetCurrentFileInfo(p->zip->getUnzFile(), &info_z, NULL, 0, NULL, 0, NULL, 0)); + if(p->zipError!=UNZ_OK) + return -1; + return info_z.compressed_size; +} + +qint64 QuaZipFile::usize()const +{ + unz_file_info info_z; + p->setZipError(UNZ_OK); + if(p->zip==NULL||p->zip->getMode()!=QuaZip::mdUnzip) return -1; + p->setZipError(unzGetCurrentFileInfo(p->zip->getUnzFile(), &info_z, NULL, 0, NULL, 0, NULL, 0)); + if(p->zipError!=UNZ_OK) + return -1; + return info_z.uncompressed_size; +} + +bool QuaZipFile::getFileInfo(QuaZipFileInfo *info) +{ + if(p->zip==NULL||p->zip->getMode()!=QuaZip::mdUnzip) return false; + p->zip->getCurrentFileInfo(info); + p->setZipError(p->zip->getZipError()); + return p->zipError==UNZ_OK; +} + +void QuaZipFile::close() +{ + p->resetZipError(); + if(p->zip==NULL||!p->zip->isOpen()) return; + if(!isOpen()) { + qWarning("QuaZipFile::close(): file isn't open"); + return; + } + if(openMode()&ReadOnly) + p->setZipError(unzCloseCurrentFile(p->zip->getUnzFile())); + else if(openMode()&WriteOnly) + if(isRaw()) p->setZipError(zipCloseFileInZipRaw(p->zip->getZipFile(), p->uncompressedSize, p->crc)); + else p->setZipError(zipCloseFileInZip(p->zip->getZipFile())); + else { + qWarning("Wrong open mode: %d", (int)openMode()); + return; + } + if(p->zipError==UNZ_OK) setOpenMode(QIODevice::NotOpen); + else return; + if(p->internal) { + p->zip->close(); + p->setZipError(p->zip->getZipError()); + } +} + +qint64 QuaZipFile::readData(char *data, qint64 maxSize) +{ + p->setZipError(UNZ_OK); + qint64 bytesRead=unzReadCurrentFile(p->zip->getUnzFile(), data, (unsigned)maxSize); + if(bytesRead<0) p->setZipError((int)bytesRead); + return bytesRead; +} + +qint64 QuaZipFile::writeData(const char* data, qint64 maxSize) +{ + p->setZipError(ZIP_OK); + p->setZipError(zipWriteInFileInZip(p->zip->getZipFile(), data, (uint)maxSize)); + if(p->zipError!=ZIP_OK) return -1; + else { + p->writePos+=maxSize; + return maxSize; + } +} + +QString QuaZipFile::getFileName() const +{ + return p->fileName; +} + +QuaZip::CaseSensitivity QuaZipFile::getCaseSensitivity() const +{ + return p->caseSensitivity; +} + +bool QuaZipFile::isRaw() const +{ + return p->raw; +} + +int QuaZipFile::getZipError() const +{ + return p->zipError; +} diff -r 3331b30e4ef1 -r 88fde28bbda6 misc/quazip/quazipfile.h --- a/misc/quazip/quazipfile.h Sun Oct 21 01:28:33 2012 +0400 +++ b/misc/quazip/quazipfile.h Sat Nov 03 00:34:35 2012 +0400 @@ -1,433 +1,433 @@ -#ifndef QUA_ZIPFILE_H -#define QUA_ZIPFILE_H - -/* -Copyright (C) 2005-2011 Sergey A. Tachenov - -This program is free software; you can redistribute it and/or modify it -under the terms of the GNU Lesser General Public License as published by -the Free Software Foundation; either version 2 of the License, or (at -your option) any later version. - -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 Lesser -General Public License for more details. - -You should have received a copy of the GNU Lesser 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 - -See COPYING file for the full LGPL text. - -Original ZIP package is copyrighted by Gilles Vollant, see -quazip/(un)zip.h files for details, basically it's zlib license. - **/ - -#include - -#include "quazip_global.h" -#include "quazip.h" -#include "quazipnewinfo.h" - -class QuaZipFilePrivate; - -/// A file inside ZIP archive. -/** \class QuaZipFile quazipfile.h - * This is the most interesting class. Not only it provides C++ - * interface to the ZIP/UNZIP package, but also integrates it with Qt by - * subclassing QIODevice. This makes possible to access files inside ZIP - * archive using QTextStream or QDataStream, for example. Actually, this - * is the main purpose of the whole QuaZIP library. - * - * You can either use existing QuaZip instance to create instance of - * this class or pass ZIP archive file name to this class, in which case - * it will create internal QuaZip object. See constructors' descriptions - * for details. Writing is only possible with the existing instance. - * - * Note that due to the underlying library's limitation it is not - * possible to use multiple QuaZipFile instances to open several files - * in the same archive at the same time. If you need to write to - * multiple files in parallel, then you should write to temporary files - * first, then pack them all at once when you have finished writing. If - * you need to read multiple files inside the same archive in parallel, - * you should extract them all into a temporary directory first. - * - * \section quazipfile-sequential Sequential or random-access? - * - * At the first thought, QuaZipFile has fixed size, the start and the - * end and should be therefore considered random-access device. But - * there is one major obstacle to making it random-access: ZIP/UNZIP API - * does not support seek() operation and the only way to implement it is - * through reopening the file and re-reading to the required position, - * but this is prohibitively slow. - * - * Therefore, QuaZipFile is considered to be a sequential device. This - * has advantage of availability of the ungetChar() operation (QIODevice - * does not implement it properly for non-sequential devices unless they - * support seek()). Disadvantage is a somewhat strange behaviour of the - * size() and pos() functions. This should be kept in mind while using - * this class. - * - **/ -class QUAZIP_EXPORT QuaZipFile: public QIODevice { - friend class QuaZipFilePrivate; - Q_OBJECT - private: - QuaZipFilePrivate *p; - // these are not supported nor implemented - QuaZipFile(const QuaZipFile& that); - QuaZipFile& operator=(const QuaZipFile& that); - protected: - /// Implementation of the QIODevice::readData(). - qint64 readData(char *data, qint64 maxSize); - /// Implementation of the QIODevice::writeData(). - qint64 writeData(const char *data, qint64 maxSize); - public: - /// Constructs a QuaZipFile instance. - /** You should use setZipName() and setFileName() or setZip() before - * trying to call open() on the constructed object. - **/ - QuaZipFile(); - /// Constructs a QuaZipFile instance. - /** \a parent argument specifies this object's parent object. - * - * You should use setZipName() and setFileName() or setZip() before - * trying to call open() on the constructed object. - **/ - QuaZipFile(QObject *parent); - /// Constructs a QuaZipFile instance. - /** \a parent argument specifies this object's parent object and \a - * zipName specifies ZIP archive file name. - * - * You should use setFileName() before trying to call open() on the - * constructed object. - * - * QuaZipFile constructed by this constructor can be used for read - * only access. Use QuaZipFile(QuaZip*,QObject*) for writing. - **/ - QuaZipFile(const QString& zipName, QObject *parent =NULL); - /// Constructs a QuaZipFile instance. - /** \a parent argument specifies this object's parent object, \a - * zipName specifies ZIP archive file name and \a fileName and \a cs - * specify a name of the file to open inside archive. - * - * QuaZipFile constructed by this constructor can be used for read - * only access. Use QuaZipFile(QuaZip*,QObject*) for writing. - * - * \sa QuaZip::setCurrentFile() - **/ - QuaZipFile(const QString& zipName, const QString& fileName, - QuaZip::CaseSensitivity cs =QuaZip::csDefault, QObject *parent =NULL); - /// Constructs a QuaZipFile instance. - /** \a parent argument specifies this object's parent object. - * - * \a zip is the pointer to the existing QuaZip object. This - * QuaZipFile object then can be used to read current file in the - * \a zip or to write to the file inside it. - * - * \warning Using this constructor for reading current file can be - * tricky. Let's take the following example: - * \code - * QuaZip zip("archive.zip"); - * zip.open(QuaZip::mdUnzip); - * zip.setCurrentFile("file-in-archive"); - * QuaZipFile file(&zip); - * file.open(QIODevice::ReadOnly); - * // ok, now we can read from the file - * file.read(somewhere, some); - * zip.setCurrentFile("another-file-in-archive"); // oops... - * QuaZipFile anotherFile(&zip); - * anotherFile.open(QIODevice::ReadOnly); - * anotherFile.read(somewhere, some); // this is still ok... - * file.read(somewhere, some); // and this is NOT - * \endcode - * So, what exactly happens here? When we change current file in the - * \c zip archive, \c file that references it becomes invalid - * (actually, as far as I understand ZIP/UNZIP sources, it becomes - * closed, but QuaZipFile has no means to detect it). - * - * Summary: do not close \c zip object or change its current file as - * long as QuaZipFile is open. Even better - use another constructors - * which create internal QuaZip instances, one per object, and - * therefore do not cause unnecessary trouble. This constructor may - * be useful, though, if you already have a QuaZip instance and do - * not want to access several files at once. Good example: - * \code - * QuaZip zip("archive.zip"); - * zip.open(QuaZip::mdUnzip); - * // first, we need some information about archive itself - * QByteArray comment=zip.getComment(); - * // and now we are going to access files inside it - * QuaZipFile file(&zip); - * for(bool more=zip.goToFirstFile(); more; more=zip.goToNextFile()) { - * file.open(QIODevice::ReadOnly); - * // do something cool with file here - * file.close(); // do not forget to close! - * } - * zip.close(); - * \endcode - **/ - QuaZipFile(QuaZip *zip, QObject *parent =NULL); - /// Destroys a QuaZipFile instance. - /** Closes file if open, destructs internal QuaZip object (if it - * exists and \em is internal, of course). - **/ - virtual ~QuaZipFile(); - /// Returns the ZIP archive file name. - /** If this object was created by passing QuaZip pointer to the - * constructor, this function will return that QuaZip's file name - * (or null string if that object does not have file name yet). - * - * Otherwise, returns associated ZIP archive file name or null - * string if there are no name set yet. - * - * \sa setZipName() getFileName() - **/ - QString getZipName()const; - /// Returns a pointer to the associated QuaZip object. - /** Returns \c NULL if there is no associated QuaZip or it is - * internal (so you will not mess with it). - **/ - QuaZip* getZip()const; - /// Returns file name. - /** This function returns file name you passed to this object either - * by using - * QuaZipFile(const QString&,const QString&,QuaZip::CaseSensitivity,QObject*) - * or by calling setFileName(). Real name of the file may differ in - * case if you used case-insensitivity. - * - * Returns null string if there is no file name set yet. This is the - * case when this QuaZipFile operates on the existing QuaZip object - * (constructor QuaZipFile(QuaZip*,QObject*) or setZip() was used). - * - * \sa getActualFileName - **/ - QString getFileName() const; - /// Returns case sensitivity of the file name. - /** This function returns case sensitivity argument you passed to - * this object either by using - * QuaZipFile(const QString&,const QString&,QuaZip::CaseSensitivity,QObject*) - * or by calling setFileName(). - * - * Returns unpredictable value if getFileName() returns null string - * (this is the case when you did not used setFileName() or - * constructor above). - * - * \sa getFileName - **/ - QuaZip::CaseSensitivity getCaseSensitivity() const; - /// Returns the actual file name in the archive. - /** This is \em not a ZIP archive file name, but a name of file inside - * archive. It is not necessary the same name that you have passed - * to the - * QuaZipFile(const QString&,const QString&,QuaZip::CaseSensitivity,QObject*), - * setFileName() or QuaZip::setCurrentFile() - this is the real file - * name inside archive, so it may differ in case if the file name - * search was case-insensitive. - * - * Equivalent to calling getCurrentFileName() on the associated - * QuaZip object. Returns null string if there is no associated - * QuaZip object or if it does not have a current file yet. And this - * is the case if you called setFileName() but did not open the - * file yet. So this is perfectly fine: - * \code - * QuaZipFile file("somezip.zip"); - * file.setFileName("somefile"); - * QString name=file.getName(); // name=="somefile" - * QString actual=file.getActualFileName(); // actual is null string - * file.open(QIODevice::ReadOnly); - * QString actual=file.getActualFileName(); // actual can be "SoMeFiLe" on Windows - * \endcode - * - * \sa getZipName(), getFileName(), QuaZip::CaseSensitivity - **/ - QString getActualFileName()const; - /// Sets the ZIP archive file name. - /** Automatically creates internal QuaZip object and destroys - * previously created internal QuaZip object, if any. - * - * Will do nothing if this file is already open. You must close() it - * first. - **/ - void setZipName(const QString& zipName); - /// Returns \c true if the file was opened in raw mode. - /** If the file is not open, the returned value is undefined. - * - * \sa open(OpenMode,int*,int*,bool,const char*) - **/ - bool isRaw() const; - /// Binds to the existing QuaZip instance. - /** This function destroys internal QuaZip object, if any, and makes - * this QuaZipFile to use current file in the \a zip object for any - * further operations. See QuaZipFile(QuaZip*,QObject*) for the - * possible pitfalls. - * - * Will do nothing if the file is currently open. You must close() - * it first. - **/ - void setZip(QuaZip *zip); - /// Sets the file name. - /** Will do nothing if at least one of the following conditions is - * met: - * - ZIP name has not been set yet (getZipName() returns null - * string). - * - This QuaZipFile is associated with external QuaZip. In this - * case you should call that QuaZip's setCurrentFile() function - * instead! - * - File is already open so setting the name is meaningless. - * - * \sa QuaZip::setCurrentFile - **/ - void setFileName(const QString& fileName, QuaZip::CaseSensitivity cs =QuaZip::csDefault); - /// Opens a file for reading. - /** Returns \c true on success, \c false otherwise. - * Call getZipError() to get error code. - * - * \note Since ZIP/UNZIP API provides buffered reading only, - * QuaZipFile does not support unbuffered reading. So do not pass - * QIODevice::Unbuffered flag in \a mode, or open will fail. - **/ - virtual bool open(OpenMode mode); - /// Opens a file for reading. - /** \overload - * Argument \a password specifies a password to decrypt the file. If - * it is NULL then this function behaves just like open(OpenMode). - **/ - inline bool open(OpenMode mode, const char *password) - {return open(mode, NULL, NULL, false, password);} - /// Opens a file for reading. - /** \overload - * Argument \a password specifies a password to decrypt the file. - * - * An integers pointed by \a method and \a level will receive codes - * of the compression method and level used. See unzip.h. - * - * If raw is \c true then no decompression is performed. - * - * \a method should not be \c NULL. \a level can be \c NULL if you - * don't want to know the compression level. - **/ - bool open(OpenMode mode, int *method, int *level, bool raw, const char *password =NULL); - /// Opens a file for writing. - /** \a info argument specifies information about file. It should at - * least specify a correct file name. Also, it is a good idea to - * specify correct timestamp (by default, current time will be - * used). See QuaZipNewInfo. - * - * Arguments \a password and \a crc provide necessary information - * for crypting. Note that you should specify both of them if you - * need crypting. If you do not, pass \c NULL as password, but you - * still need to specify \a crc if you are going to use raw mode - * (see below). - * - * Arguments \a method and \a level specify compression method and - * level. - * - * If \a raw is \c true, no compression is performed. In this case, - * \a crc and uncompressedSize field of the \a info are required. - * - * Arguments \a windowBits, \a memLevel, \a strategy provide zlib - * algorithms tuning. See deflateInit2() in zlib. - **/ - bool open(OpenMode mode, const QuaZipNewInfo& info, - const char *password =NULL, quint32 crc =0, - int method =Z_DEFLATED, int level =Z_DEFAULT_COMPRESSION, bool raw =false, - int windowBits =-MAX_WBITS, int memLevel =DEF_MEM_LEVEL, int strategy =Z_DEFAULT_STRATEGY); - /// Returns \c true, but \ref quazipfile-sequential "beware"! - virtual bool isSequential()const; - /// Returns current position in the file. - /** Implementation of the QIODevice::pos(). When reading, this - * function is a wrapper to the ZIP/UNZIP unztell(), therefore it is - * unable to keep track of the ungetChar() calls (which is - * non-virtual and therefore is dangerous to reimplement). So if you - * are using ungetChar() feature of the QIODevice, this function - * reports incorrect value until you get back characters which you - * ungot. - * - * When writing, pos() returns number of bytes already written - * (uncompressed unless you use raw mode). - * - * \note Although - * \ref quazipfile-sequential "QuaZipFile is a sequential device" - * and therefore pos() should always return zero, it does not, - * because it would be misguiding. Keep this in mind. - * - * This function returns -1 if the file or archive is not open. - * - * Error code returned by getZipError() is not affected by this - * function call. - **/ - virtual qint64 pos()const; - /// Returns \c true if the end of file was reached. - /** This function returns \c false in the case of error. This means - * that you called this function on either not open file, or a file - * in the not open archive or even on a QuaZipFile instance that - * does not even have QuaZip instance associated. Do not do that - * because there is no means to determine whether \c false is - * returned because of error or because end of file was reached. - * Well, on the other side you may interpret \c false return value - * as "there is no file open to check for end of file and there is - * no end of file therefore". - * - * When writing, this function always returns \c true (because you - * are always writing to the end of file). - * - * Error code returned by getZipError() is not affected by this - * function call. - **/ - virtual bool atEnd()const; - /// Returns file size. - /** This function returns csize() if the file is open for reading in - * raw mode, usize() if it is open for reading in normal mode and - * pos() if it is open for writing. - * - * Returns -1 on error, call getZipError() to get error code. - * - * \note This function returns file size despite that - * \ref quazipfile-sequential "QuaZipFile is considered to be sequential device", - * for which size() should return bytesAvailable() instead. But its - * name would be very misguiding otherwise, so just keep in mind - * this inconsistence. - **/ - virtual qint64 size()const; - /// Returns compressed file size. - /** Equivalent to calling getFileInfo() and then getting - * compressedSize field, but more convenient and faster. - * - * File must be open for reading before calling this function. - * - * Returns -1 on error, call getZipError() to get error code. - **/ - qint64 csize()const; - /// Returns uncompressed file size. - /** Equivalent to calling getFileInfo() and then getting - * uncompressedSize field, but more convenient and faster. See - * getFileInfo() for a warning. - * - * File must be open for reading before calling this function. - * - * Returns -1 on error, call getZipError() to get error code. - **/ - qint64 usize()const; - /// Gets information about current file. - /** This function does the same thing as calling - * QuaZip::getCurrentFileInfo() on the associated QuaZip object, - * but you can not call getCurrentFileInfo() if the associated - * QuaZip is internal (because you do not have access to it), while - * you still can call this function in that case. - * - * File must be open for reading before calling this function. - * - * Returns \c false in the case of an error. - **/ - bool getFileInfo(QuaZipFileInfo *info); - /// Closes the file. - /** Call getZipError() to determine if the close was successful. - **/ - virtual void close(); - /// Returns the error code returned by the last ZIP/UNZIP API call. - int getZipError() const; -}; - -#endif +#ifndef QUA_ZIPFILE_H +#define QUA_ZIPFILE_H + +/* +Copyright (C) 2005-2011 Sergey A. Tachenov + +This program is free software; you can redistribute it and/or modify it +under the terms of the GNU Lesser General Public License as published by +the Free Software Foundation; either version 2 of the License, or (at +your option) any later version. + +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 Lesser +General Public License for more details. + +You should have received a copy of the GNU Lesser 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 + +See COPYING file for the full LGPL text. + +Original ZIP package is copyrighted by Gilles Vollant, see +quazip/(un)zip.h files for details, basically it's zlib license. + **/ + +#include + +#include "quazip_global.h" +#include "quazip.h" +#include "quazipnewinfo.h" + +class QuaZipFilePrivate; + +/// A file inside ZIP archive. +/** \class QuaZipFile quazipfile.h + * This is the most interesting class. Not only it provides C++ + * interface to the ZIP/UNZIP package, but also integrates it with Qt by + * subclassing QIODevice. This makes possible to access files inside ZIP + * archive using QTextStream or QDataStream, for example. Actually, this + * is the main purpose of the whole QuaZIP library. + * + * You can either use existing QuaZip instance to create instance of + * this class or pass ZIP archive file name to this class, in which case + * it will create internal QuaZip object. See constructors' descriptions + * for details. Writing is only possible with the existing instance. + * + * Note that due to the underlying library's limitation it is not + * possible to use multiple QuaZipFile instances to open several files + * in the same archive at the same time. If you need to write to + * multiple files in parallel, then you should write to temporary files + * first, then pack them all at once when you have finished writing. If + * you need to read multiple files inside the same archive in parallel, + * you should extract them all into a temporary directory first. + * + * \section quazipfile-sequential Sequential or random-access? + * + * At the first thought, QuaZipFile has fixed size, the start and the + * end and should be therefore considered random-access device. But + * there is one major obstacle to making it random-access: ZIP/UNZIP API + * does not support seek() operation and the only way to implement it is + * through reopening the file and re-reading to the required position, + * but this is prohibitively slow. + * + * Therefore, QuaZipFile is considered to be a sequential device. This + * has advantage of availability of the ungetChar() operation (QIODevice + * does not implement it properly for non-sequential devices unless they + * support seek()). Disadvantage is a somewhat strange behaviour of the + * size() and pos() functions. This should be kept in mind while using + * this class. + * + **/ +class QUAZIP_EXPORT QuaZipFile: public QIODevice { + friend class QuaZipFilePrivate; + Q_OBJECT + private: + QuaZipFilePrivate *p; + // these are not supported nor implemented + QuaZipFile(const QuaZipFile& that); + QuaZipFile& operator=(const QuaZipFile& that); + protected: + /// Implementation of the QIODevice::readData(). + qint64 readData(char *data, qint64 maxSize); + /// Implementation of the QIODevice::writeData(). + qint64 writeData(const char *data, qint64 maxSize); + public: + /// Constructs a QuaZipFile instance. + /** You should use setZipName() and setFileName() or setZip() before + * trying to call open() on the constructed object. + **/ + QuaZipFile(); + /// Constructs a QuaZipFile instance. + /** \a parent argument specifies this object's parent object. + * + * You should use setZipName() and setFileName() or setZip() before + * trying to call open() on the constructed object. + **/ + QuaZipFile(QObject *parent); + /// Constructs a QuaZipFile instance. + /** \a parent argument specifies this object's parent object and \a + * zipName specifies ZIP archive file name. + * + * You should use setFileName() before trying to call open() on the + * constructed object. + * + * QuaZipFile constructed by this constructor can be used for read + * only access. Use QuaZipFile(QuaZip*,QObject*) for writing. + **/ + QuaZipFile(const QString& zipName, QObject *parent =NULL); + /// Constructs a QuaZipFile instance. + /** \a parent argument specifies this object's parent object, \a + * zipName specifies ZIP archive file name and \a fileName and \a cs + * specify a name of the file to open inside archive. + * + * QuaZipFile constructed by this constructor can be used for read + * only access. Use QuaZipFile(QuaZip*,QObject*) for writing. + * + * \sa QuaZip::setCurrentFile() + **/ + QuaZipFile(const QString& zipName, const QString& fileName, + QuaZip::CaseSensitivity cs =QuaZip::csDefault, QObject *parent =NULL); + /// Constructs a QuaZipFile instance. + /** \a parent argument specifies this object's parent object. + * + * \a zip is the pointer to the existing QuaZip object. This + * QuaZipFile object then can be used to read current file in the + * \a zip or to write to the file inside it. + * + * \warning Using this constructor for reading current file can be + * tricky. Let's take the following example: + * \code + * QuaZip zip("archive.zip"); + * zip.open(QuaZip::mdUnzip); + * zip.setCurrentFile("file-in-archive"); + * QuaZipFile file(&zip); + * file.open(QIODevice::ReadOnly); + * // ok, now we can read from the file + * file.read(somewhere, some); + * zip.setCurrentFile("another-file-in-archive"); // oops... + * QuaZipFile anotherFile(&zip); + * anotherFile.open(QIODevice::ReadOnly); + * anotherFile.read(somewhere, some); // this is still ok... + * file.read(somewhere, some); // and this is NOT + * \endcode + * So, what exactly happens here? When we change current file in the + * \c zip archive, \c file that references it becomes invalid + * (actually, as far as I understand ZIP/UNZIP sources, it becomes + * closed, but QuaZipFile has no means to detect it). + * + * Summary: do not close \c zip object or change its current file as + * long as QuaZipFile is open. Even better - use another constructors + * which create internal QuaZip instances, one per object, and + * therefore do not cause unnecessary trouble. This constructor may + * be useful, though, if you already have a QuaZip instance and do + * not want to access several files at once. Good example: + * \code + * QuaZip zip("archive.zip"); + * zip.open(QuaZip::mdUnzip); + * // first, we need some information about archive itself + * QByteArray comment=zip.getComment(); + * // and now we are going to access files inside it + * QuaZipFile file(&zip); + * for(bool more=zip.goToFirstFile(); more; more=zip.goToNextFile()) { + * file.open(QIODevice::ReadOnly); + * // do something cool with file here + * file.close(); // do not forget to close! + * } + * zip.close(); + * \endcode + **/ + QuaZipFile(QuaZip *zip, QObject *parent =NULL); + /// Destroys a QuaZipFile instance. + /** Closes file if open, destructs internal QuaZip object (if it + * exists and \em is internal, of course). + **/ + virtual ~QuaZipFile(); + /// Returns the ZIP archive file name. + /** If this object was created by passing QuaZip pointer to the + * constructor, this function will return that QuaZip's file name + * (or null string if that object does not have file name yet). + * + * Otherwise, returns associated ZIP archive file name or null + * string if there are no name set yet. + * + * \sa setZipName() getFileName() + **/ + QString getZipName()const; + /// Returns a pointer to the associated QuaZip object. + /** Returns \c NULL if there is no associated QuaZip or it is + * internal (so you will not mess with it). + **/ + QuaZip* getZip()const; + /// Returns file name. + /** This function returns file name you passed to this object either + * by using + * QuaZipFile(const QString&,const QString&,QuaZip::CaseSensitivity,QObject*) + * or by calling setFileName(). Real name of the file may differ in + * case if you used case-insensitivity. + * + * Returns null string if there is no file name set yet. This is the + * case when this QuaZipFile operates on the existing QuaZip object + * (constructor QuaZipFile(QuaZip*,QObject*) or setZip() was used). + * + * \sa getActualFileName + **/ + QString getFileName() const; + /// Returns case sensitivity of the file name. + /** This function returns case sensitivity argument you passed to + * this object either by using + * QuaZipFile(const QString&,const QString&,QuaZip::CaseSensitivity,QObject*) + * or by calling setFileName(). + * + * Returns unpredictable value if getFileName() returns null string + * (this is the case when you did not used setFileName() or + * constructor above). + * + * \sa getFileName + **/ + QuaZip::CaseSensitivity getCaseSensitivity() const; + /// Returns the actual file name in the archive. + /** This is \em not a ZIP archive file name, but a name of file inside + * archive. It is not necessary the same name that you have passed + * to the + * QuaZipFile(const QString&,const QString&,QuaZip::CaseSensitivity,QObject*), + * setFileName() or QuaZip::setCurrentFile() - this is the real file + * name inside archive, so it may differ in case if the file name + * search was case-insensitive. + * + * Equivalent to calling getCurrentFileName() on the associated + * QuaZip object. Returns null string if there is no associated + * QuaZip object or if it does not have a current file yet. And this + * is the case if you called setFileName() but did not open the + * file yet. So this is perfectly fine: + * \code + * QuaZipFile file("somezip.zip"); + * file.setFileName("somefile"); + * QString name=file.getName(); // name=="somefile" + * QString actual=file.getActualFileName(); // actual is null string + * file.open(QIODevice::ReadOnly); + * QString actual=file.getActualFileName(); // actual can be "SoMeFiLe" on Windows + * \endcode + * + * \sa getZipName(), getFileName(), QuaZip::CaseSensitivity + **/ + QString getActualFileName()const; + /// Sets the ZIP archive file name. + /** Automatically creates internal QuaZip object and destroys + * previously created internal QuaZip object, if any. + * + * Will do nothing if this file is already open. You must close() it + * first. + **/ + void setZipName(const QString& zipName); + /// Returns \c true if the file was opened in raw mode. + /** If the file is not open, the returned value is undefined. + * + * \sa open(OpenMode,int*,int*,bool,const char*) + **/ + bool isRaw() const; + /// Binds to the existing QuaZip instance. + /** This function destroys internal QuaZip object, if any, and makes + * this QuaZipFile to use current file in the \a zip object for any + * further operations. See QuaZipFile(QuaZip*,QObject*) for the + * possible pitfalls. + * + * Will do nothing if the file is currently open. You must close() + * it first. + **/ + void setZip(QuaZip *zip); + /// Sets the file name. + /** Will do nothing if at least one of the following conditions is + * met: + * - ZIP name has not been set yet (getZipName() returns null + * string). + * - This QuaZipFile is associated with external QuaZip. In this + * case you should call that QuaZip's setCurrentFile() function + * instead! + * - File is already open so setting the name is meaningless. + * + * \sa QuaZip::setCurrentFile + **/ + void setFileName(const QString& fileName, QuaZip::CaseSensitivity cs =QuaZip::csDefault); + /// Opens a file for reading. + /** Returns \c true on success, \c false otherwise. + * Call getZipError() to get error code. + * + * \note Since ZIP/UNZIP API provides buffered reading only, + * QuaZipFile does not support unbuffered reading. So do not pass + * QIODevice::Unbuffered flag in \a mode, or open will fail. + **/ + virtual bool open(OpenMode mode); + /// Opens a file for reading. + /** \overload + * Argument \a password specifies a password to decrypt the file. If + * it is NULL then this function behaves just like open(OpenMode). + **/ + inline bool open(OpenMode mode, const char *password) + {return open(mode, NULL, NULL, false, password);} + /// Opens a file for reading. + /** \overload + * Argument \a password specifies a password to decrypt the file. + * + * An integers pointed by \a method and \a level will receive codes + * of the compression method and level used. See unzip.h. + * + * If raw is \c true then no decompression is performed. + * + * \a method should not be \c NULL. \a level can be \c NULL if you + * don't want to know the compression level. + **/ + bool open(OpenMode mode, int *method, int *level, bool raw, const char *password =NULL); + /// Opens a file for writing. + /** \a info argument specifies information about file. It should at + * least specify a correct file name. Also, it is a good idea to + * specify correct timestamp (by default, current time will be + * used). See QuaZipNewInfo. + * + * Arguments \a password and \a crc provide necessary information + * for crypting. Note that you should specify both of them if you + * need crypting. If you do not, pass \c NULL as password, but you + * still need to specify \a crc if you are going to use raw mode + * (see below). + * + * Arguments \a method and \a level specify compression method and + * level. + * + * If \a raw is \c true, no compression is performed. In this case, + * \a crc and uncompressedSize field of the \a info are required. + * + * Arguments \a windowBits, \a memLevel, \a strategy provide zlib + * algorithms tuning. See deflateInit2() in zlib. + **/ + bool open(OpenMode mode, const QuaZipNewInfo& info, + const char *password =NULL, quint32 crc =0, + int method =Z_DEFLATED, int level =Z_DEFAULT_COMPRESSION, bool raw =false, + int windowBits =-MAX_WBITS, int memLevel =DEF_MEM_LEVEL, int strategy =Z_DEFAULT_STRATEGY); + /// Returns \c true, but \ref quazipfile-sequential "beware"! + virtual bool isSequential()const; + /// Returns current position in the file. + /** Implementation of the QIODevice::pos(). When reading, this + * function is a wrapper to the ZIP/UNZIP unztell(), therefore it is + * unable to keep track of the ungetChar() calls (which is + * non-virtual and therefore is dangerous to reimplement). So if you + * are using ungetChar() feature of the QIODevice, this function + * reports incorrect value until you get back characters which you + * ungot. + * + * When writing, pos() returns number of bytes already written + * (uncompressed unless you use raw mode). + * + * \note Although + * \ref quazipfile-sequential "QuaZipFile is a sequential device" + * and therefore pos() should always return zero, it does not, + * because it would be misguiding. Keep this in mind. + * + * This function returns -1 if the file or archive is not open. + * + * Error code returned by getZipError() is not affected by this + * function call. + **/ + virtual qint64 pos()const; + /// Returns \c true if the end of file was reached. + /** This function returns \c false in the case of error. This means + * that you called this function on either not open file, or a file + * in the not open archive or even on a QuaZipFile instance that + * does not even have QuaZip instance associated. Do not do that + * because there is no means to determine whether \c false is + * returned because of error or because end of file was reached. + * Well, on the other side you may interpret \c false return value + * as "there is no file open to check for end of file and there is + * no end of file therefore". + * + * When writing, this function always returns \c true (because you + * are always writing to the end of file). + * + * Error code returned by getZipError() is not affected by this + * function call. + **/ + virtual bool atEnd()const; + /// Returns file size. + /** This function returns csize() if the file is open for reading in + * raw mode, usize() if it is open for reading in normal mode and + * pos() if it is open for writing. + * + * Returns -1 on error, call getZipError() to get error code. + * + * \note This function returns file size despite that + * \ref quazipfile-sequential "QuaZipFile is considered to be sequential device", + * for which size() should return bytesAvailable() instead. But its + * name would be very misguiding otherwise, so just keep in mind + * this inconsistence. + **/ + virtual qint64 size()const; + /// Returns compressed file size. + /** Equivalent to calling getFileInfo() and then getting + * compressedSize field, but more convenient and faster. + * + * File must be open for reading before calling this function. + * + * Returns -1 on error, call getZipError() to get error code. + **/ + qint64 csize()const; + /// Returns uncompressed file size. + /** Equivalent to calling getFileInfo() and then getting + * uncompressedSize field, but more convenient and faster. See + * getFileInfo() for a warning. + * + * File must be open for reading before calling this function. + * + * Returns -1 on error, call getZipError() to get error code. + **/ + qint64 usize()const; + /// Gets information about current file. + /** This function does the same thing as calling + * QuaZip::getCurrentFileInfo() on the associated QuaZip object, + * but you can not call getCurrentFileInfo() if the associated + * QuaZip is internal (because you do not have access to it), while + * you still can call this function in that case. + * + * File must be open for reading before calling this function. + * + * Returns \c false in the case of an error. + **/ + bool getFileInfo(QuaZipFileInfo *info); + /// Closes the file. + /** Call getZipError() to determine if the close was successful. + **/ + virtual void close(); + /// Returns the error code returned by the last ZIP/UNZIP API call. + int getZipError() const; +}; + +#endif diff -r 3331b30e4ef1 -r 88fde28bbda6 misc/quazip/quazipfileinfo.h --- a/misc/quazip/quazipfileinfo.h Sun Oct 21 01:28:33 2012 +0400 +++ b/misc/quazip/quazipfileinfo.h Sat Nov 03 00:34:35 2012 +0400 @@ -1,66 +1,66 @@ -#ifndef QUA_ZIPFILEINFO_H -#define QUA_ZIPFILEINFO_H - -/* -Copyright (C) 2005-2011 Sergey A. Tachenov - -This program is free software; you can redistribute it and/or modify it -under the terms of the GNU Lesser General Public License as published by -the Free Software Foundation; either version 2 of the License, or (at -your option) any later version. - -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 Lesser -General Public License for more details. - -You should have received a copy of the GNU Lesser 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 - -See COPYING file for the full LGPL text. - -Original ZIP package is copyrighted by Gilles Vollant, see -quazip/(un)zip.h files for details, basically it's zlib license. - **/ - -#include -#include - -#include "quazip_global.h" - -/// Information about a file inside archive. -/** Call QuaZip::getCurrentFileInfo() or QuaZipFile::getFileInfo() to - * fill this structure. */ -struct QUAZIP_EXPORT QuaZipFileInfo { - /// File name. - QString name; - /// Version created by. - quint16 versionCreated; - /// Version needed to extract. - quint16 versionNeeded; - /// General purpose flags. - quint16 flags; - /// Compression method. - quint16 method; - /// Last modification date and time. - QDateTime dateTime; - /// CRC. - quint32 crc; - /// Compressed file size. - quint32 compressedSize; - /// Uncompressed file size. - quint32 uncompressedSize; - /// Disk number start. - quint16 diskNumberStart; - /// Internal file attributes. - quint16 internalAttr; - /// External file attributes. - quint32 externalAttr; - /// Comment. - QString comment; - /// Extra field. - QByteArray extra; -}; - -#endif +#ifndef QUA_ZIPFILEINFO_H +#define QUA_ZIPFILEINFO_H + +/* +Copyright (C) 2005-2011 Sergey A. Tachenov + +This program is free software; you can redistribute it and/or modify it +under the terms of the GNU Lesser General Public License as published by +the Free Software Foundation; either version 2 of the License, or (at +your option) any later version. + +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 Lesser +General Public License for more details. + +You should have received a copy of the GNU Lesser 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 + +See COPYING file for the full LGPL text. + +Original ZIP package is copyrighted by Gilles Vollant, see +quazip/(un)zip.h files for details, basically it's zlib license. + **/ + +#include +#include + +#include "quazip_global.h" + +/// Information about a file inside archive. +/** Call QuaZip::getCurrentFileInfo() or QuaZipFile::getFileInfo() to + * fill this structure. */ +struct QUAZIP_EXPORT QuaZipFileInfo { + /// File name. + QString name; + /// Version created by. + quint16 versionCreated; + /// Version needed to extract. + quint16 versionNeeded; + /// General purpose flags. + quint16 flags; + /// Compression method. + quint16 method; + /// Last modification date and time. + QDateTime dateTime; + /// CRC. + quint32 crc; + /// Compressed file size. + quint32 compressedSize; + /// Uncompressed file size. + quint32 uncompressedSize; + /// Disk number start. + quint16 diskNumberStart; + /// Internal file attributes. + quint16 internalAttr; + /// External file attributes. + quint32 externalAttr; + /// Comment. + QString comment; + /// Extra field. + QByteArray extra; +}; + +#endif diff -r 3331b30e4ef1 -r 88fde28bbda6 misc/quazip/quazipnewinfo.cpp --- a/misc/quazip/quazipnewinfo.cpp Sun Oct 21 01:28:33 2012 +0400 +++ b/misc/quazip/quazipnewinfo.cpp Sat Nov 03 00:34:35 2012 +0400 @@ -1,51 +1,51 @@ -/* -Copyright (C) 2005-2011 Sergey A. Tachenov - -This program is free software; you can redistribute it and/or modify it -under the terms of the GNU Lesser General Public License as published by -the Free Software Foundation; either version 2 of the License, or (at -your option) any later version. - -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 Lesser -General Public License for more details. - -You should have received a copy of the GNU Lesser 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 - -See COPYING file for the full LGPL text. - -Original ZIP package is copyrighted by Gilles Vollant, see -quazip/(un)zip.h files for details, basically it's zlib license. -*/ - -#include - -#include "quazipnewinfo.h" - - -QuaZipNewInfo::QuaZipNewInfo(const QString& name): - name(name), dateTime(QDateTime::currentDateTime()), internalAttr(0), externalAttr(0) -{ -} - -QuaZipNewInfo::QuaZipNewInfo(const QString& name, const QString& file): - name(name), internalAttr(0), externalAttr(0) -{ - QFileInfo info(file); - QDateTime lm = info.lastModified(); - if (!info.exists()) - dateTime = QDateTime::currentDateTime(); - else - dateTime = lm; -} - -void QuaZipNewInfo::setFileDateTime(const QString& file) -{ - QFileInfo info(file); - QDateTime lm = info.lastModified(); - if (info.exists()) - dateTime = lm; -} +/* +Copyright (C) 2005-2011 Sergey A. Tachenov + +This program is free software; you can redistribute it and/or modify it +under the terms of the GNU Lesser General Public License as published by +the Free Software Foundation; either version 2 of the License, or (at +your option) any later version. + +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 Lesser +General Public License for more details. + +You should have received a copy of the GNU Lesser 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 + +See COPYING file for the full LGPL text. + +Original ZIP package is copyrighted by Gilles Vollant, see +quazip/(un)zip.h files for details, basically it's zlib license. +*/ + +#include + +#include "quazipnewinfo.h" + + +QuaZipNewInfo::QuaZipNewInfo(const QString& name): + name(name), dateTime(QDateTime::currentDateTime()), internalAttr(0), externalAttr(0) +{ +} + +QuaZipNewInfo::QuaZipNewInfo(const QString& name, const QString& file): + name(name), internalAttr(0), externalAttr(0) +{ + QFileInfo info(file); + QDateTime lm = info.lastModified(); + if (!info.exists()) + dateTime = QDateTime::currentDateTime(); + else + dateTime = lm; +} + +void QuaZipNewInfo::setFileDateTime(const QString& file) +{ + QFileInfo info(file); + QDateTime lm = info.lastModified(); + if (info.exists()) + dateTime = lm; +} diff -r 3331b30e4ef1 -r 88fde28bbda6 misc/quazip/quazipnewinfo.h --- a/misc/quazip/quazipnewinfo.h Sun Oct 21 01:28:33 2012 +0400 +++ b/misc/quazip/quazipnewinfo.h Sat Nov 03 00:34:35 2012 +0400 @@ -1,102 +1,102 @@ -#ifndef QUA_ZIPNEWINFO_H -#define QUA_ZIPNEWINFO_H - -/* -Copyright (C) 2005-2011 Sergey A. Tachenov - -This program is free software; you can redistribute it and/or modify it -under the terms of the GNU Lesser General Public License as published by -the Free Software Foundation; either version 2 of the License, or (at -your option) any later version. - -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 Lesser -General Public License for more details. - -You should have received a copy of the GNU Lesser 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 - -See COPYING file for the full LGPL text. - -Original ZIP package is copyrighted by Gilles Vollant, see -quazip/(un)zip.h files for details, basically it's zlib license. - **/ - -#include -#include - -#include "quazip_global.h" - -/// Information about a file to be created. -/** This structure holds information about a file to be created inside - * ZIP archive. At least name should be set to something correct before - * passing this structure to - * QuaZipFile::open(OpenMode,const QuaZipNewInfo&,int,int,bool). - **/ -struct QUAZIP_EXPORT QuaZipNewInfo { - /// File name. - /** This field holds file name inside archive, including path relative - * to archive root. - **/ - QString name; - /// File timestamp. - /** This is the last file modification date and time. Will be stored - * in the archive central directory. It is a good practice to set it - * to the source file timestamp instead of archive creating time. Use - * setFileDateTime() or QuaZipNewInfo(const QString&, const QString&). - **/ - QDateTime dateTime; - /// File internal attributes. - quint16 internalAttr; - /// File external attributes. - quint32 externalAttr; - /// File comment. - /** Will be encoded using QuaZip::getCommentCodec(). - **/ - QString comment; - /// File local extra field. - QByteArray extraLocal; - /// File global extra field. - QByteArray extraGlobal; - /// Uncompressed file size. - /** This is only needed if you are using raw file zipping mode, i. e. - * adding precompressed file in the zip archive. - **/ - ulong uncompressedSize; - /// Constructs QuaZipNewInfo instance. - /** Initializes name with \a name, dateTime with current date and - * time. Attributes are initialized with zeros, comment and extra - * field with null values. - **/ - QuaZipNewInfo(const QString& name); - /// Constructs QuaZipNewInfo instance. - /** Initializes name with \a name and dateTime with timestamp of the - * file named \a file. If the \a file does not exists or its timestamp - * is inaccessible (e. g. you do not have read permission for the - * directory file in), uses current date and time. Attributes are - * initialized with zeros, comment and extra field with null values. - * - * \sa setFileDateTime() - **/ - QuaZipNewInfo(const QString& name, const QString& file); - /// Sets the file timestamp from the existing file. - /** Use this function to set the file timestamp from the existing - * file. Use it like this: - * \code - * QuaZipFile zipFile(&zip); - * QFile file("file-to-add"); - * file.open(QIODevice::ReadOnly); - * QuaZipNewInfo info("file-name-in-archive"); - * info.setFileDateTime("file-to-add"); // take the timestamp from file - * zipFile.open(QIODevice::WriteOnly, info); - * \endcode - * - * This function does not change dateTime if some error occured (e. g. - * file is inaccessible). - **/ - void setFileDateTime(const QString& file); -}; - -#endif +#ifndef QUA_ZIPNEWINFO_H +#define QUA_ZIPNEWINFO_H + +/* +Copyright (C) 2005-2011 Sergey A. Tachenov + +This program is free software; you can redistribute it and/or modify it +under the terms of the GNU Lesser General Public License as published by +the Free Software Foundation; either version 2 of the License, or (at +your option) any later version. + +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 Lesser +General Public License for more details. + +You should have received a copy of the GNU Lesser 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 + +See COPYING file for the full LGPL text. + +Original ZIP package is copyrighted by Gilles Vollant, see +quazip/(un)zip.h files for details, basically it's zlib license. + **/ + +#include +#include + +#include "quazip_global.h" + +/// Information about a file to be created. +/** This structure holds information about a file to be created inside + * ZIP archive. At least name should be set to something correct before + * passing this structure to + * QuaZipFile::open(OpenMode,const QuaZipNewInfo&,int,int,bool). + **/ +struct QUAZIP_EXPORT QuaZipNewInfo { + /// File name. + /** This field holds file name inside archive, including path relative + * to archive root. + **/ + QString name; + /// File timestamp. + /** This is the last file modification date and time. Will be stored + * in the archive central directory. It is a good practice to set it + * to the source file timestamp instead of archive creating time. Use + * setFileDateTime() or QuaZipNewInfo(const QString&, const QString&). + **/ + QDateTime dateTime; + /// File internal attributes. + quint16 internalAttr; + /// File external attributes. + quint32 externalAttr; + /// File comment. + /** Will be encoded using QuaZip::getCommentCodec(). + **/ + QString comment; + /// File local extra field. + QByteArray extraLocal; + /// File global extra field. + QByteArray extraGlobal; + /// Uncompressed file size. + /** This is only needed if you are using raw file zipping mode, i. e. + * adding precompressed file in the zip archive. + **/ + ulong uncompressedSize; + /// Constructs QuaZipNewInfo instance. + /** Initializes name with \a name, dateTime with current date and + * time. Attributes are initialized with zeros, comment and extra + * field with null values. + **/ + QuaZipNewInfo(const QString& name); + /// Constructs QuaZipNewInfo instance. + /** Initializes name with \a name and dateTime with timestamp of the + * file named \a file. If the \a file does not exists or its timestamp + * is inaccessible (e. g. you do not have read permission for the + * directory file in), uses current date and time. Attributes are + * initialized with zeros, comment and extra field with null values. + * + * \sa setFileDateTime() + **/ + QuaZipNewInfo(const QString& name, const QString& file); + /// Sets the file timestamp from the existing file. + /** Use this function to set the file timestamp from the existing + * file. Use it like this: + * \code + * QuaZipFile zipFile(&zip); + * QFile file("file-to-add"); + * file.open(QIODevice::ReadOnly); + * QuaZipNewInfo info("file-name-in-archive"); + * info.setFileDateTime("file-to-add"); // take the timestamp from file + * zipFile.open(QIODevice::WriteOnly, info); + * \endcode + * + * This function does not change dateTime if some error occured (e. g. + * file is inaccessible). + **/ + void setFileDateTime(const QString& file); +}; + +#endif diff -r 3331b30e4ef1 -r 88fde28bbda6 misc/quazip/unzip.h --- a/misc/quazip/unzip.h Sun Oct 21 01:28:33 2012 +0400 +++ b/misc/quazip/unzip.h Sat Nov 03 00:34:35 2012 +0400 @@ -1,356 +1,356 @@ -/* unzip.h -- IO for uncompress .zip files using zlib - Version 1.01e, February 12th, 2005 - - Copyright (C) 1998-2005 Gilles Vollant - - This unzip package allow extract file from .ZIP file, compatible with PKZip 2.04g - WinZip, InfoZip tools and compatible. - - Multi volume ZipFile (span) are not supported. - Encryption compatible with pkzip 2.04g only supported - Old compressions used by old PKZip 1.x are not supported - - - I WAIT FEEDBACK at mail info@winimage.com - Visit also http://www.winimage.com/zLibDll/unzip.htm for evolution - - Condition of use and distribution are the same than zlib : - - This software is provided 'as-is', without any express or implied - warranty. In no event will the authors be held liable for any damages - arising from the use of this software. - - Permission is granted to anyone to use this software for any purpose, - including commercial applications, and to alter it and redistribute it - freely, subject to the following restrictions: - - 1. The origin of this software must not be misrepresented; you must not - claim that you wrote the original software. If you use this software - in a product, an acknowledgment in the product documentation would be - appreciated but is not required. - 2. Altered source versions must be plainly marked as such, and must not be - misrepresented as being the original software. - 3. This notice may not be removed or altered from any source distribution. - - Modified by Sergey A. Tachenov to integrate with Qt. - - -*/ - -/* for more info about .ZIP format, see - http://www.info-zip.org/pub/infozip/doc/appnote-981119-iz.zip - http://www.info-zip.org/pub/infozip/doc/ - PkWare has also a specification at : - ftp://ftp.pkware.com/probdesc.zip -*/ - -#ifndef _unz_H -#define _unz_H - -#ifdef __cplusplus -extern "C" { -#endif - -#ifndef _ZLIB_H -#include "zlib.h" -#endif - -#ifndef _ZLIBIOAPI_H -#include "ioapi.h" -#endif - -#if defined(STRICTUNZIP) || defined(STRICTZIPUNZIP) -/* like the STRICT of WIN32, we define a pointer that cannot be converted - from (void*) without cast */ -typedef struct TagunzFile__ { int unused; } unzFile__; -typedef unzFile__ *unzFile; -#else -typedef voidp unzFile; -#endif - - -#define UNZ_OK (0) -#define UNZ_END_OF_LIST_OF_FILE (-100) -#define UNZ_ERRNO (Z_ERRNO) -#define UNZ_EOF (0) -#define UNZ_PARAMERROR (-102) -#define UNZ_BADZIPFILE (-103) -#define UNZ_INTERNALERROR (-104) -#define UNZ_CRCERROR (-105) - -/* tm_unz contain date/time info */ -typedef struct tm_unz_s -{ - uInt tm_sec; /* seconds after the minute - [0,59] */ - uInt tm_min; /* minutes after the hour - [0,59] */ - uInt tm_hour; /* hours since midnight - [0,23] */ - uInt tm_mday; /* day of the month - [1,31] */ - uInt tm_mon; /* months since January - [0,11] */ - uInt tm_year; /* years - [1980..2044] */ -} tm_unz; - -/* unz_global_info structure contain global data about the ZIPfile - These data comes from the end of central dir */ -typedef struct unz_global_info_s -{ - uLong number_entry; /* total number of entries in - the central dir on this disk */ - uLong size_comment; /* size of the global comment of the zipfile */ -} unz_global_info; - - -/* unz_file_info contain information about a file in the zipfile */ -typedef struct unz_file_info_s -{ - uLong version; /* version made by 2 bytes */ - uLong version_needed; /* version needed to extract 2 bytes */ - uLong flag; /* general purpose bit flag 2 bytes */ - uLong compression_method; /* compression method 2 bytes */ - uLong dosDate; /* last mod file date in Dos fmt 4 bytes */ - uLong crc; /* crc-32 4 bytes */ - uLong compressed_size; /* compressed size 4 bytes */ - uLong uncompressed_size; /* uncompressed size 4 bytes */ - uLong size_filename; /* filename length 2 bytes */ - uLong size_file_extra; /* extra field length 2 bytes */ - uLong size_file_comment; /* file comment length 2 bytes */ - - uLong disk_num_start; /* disk number start 2 bytes */ - uLong internal_fa; /* internal file attributes 2 bytes */ - uLong external_fa; /* external file attributes 4 bytes */ - - tm_unz tmu_date; -} unz_file_info; - -extern int ZEXPORT unzStringFileNameCompare OF ((const char* fileName1, - const char* fileName2, - int iCaseSensitivity)); -/* - Compare two filename (fileName1,fileName2). - If iCaseSenisivity = 1, comparision is case sensitivity (like strcmp) - If iCaseSenisivity = 2, comparision is not case sensitivity (like strcmpi - or strcasecmp) - If iCaseSenisivity = 0, case sensitivity is defaut of your operating system - (like 1 on Unix, 2 on Windows) -*/ - - -extern unzFile ZEXPORT unzOpen OF((voidpf file)); -/* - Open a Zip file. path contain whatever zopen_file from the IO API - accepts. For Qt implementation it is a pointer to QIODevice, for - fopen() implementation it's a file name. - If the zipfile cannot be opened (file don't exist or in not valid), the - return value is NULL. - Else, the return value is a unzFile Handle, usable with other function - of this unzip package. -*/ - -extern unzFile ZEXPORT unzOpen2 OF((voidpf file, - zlib_filefunc_def* pzlib_filefunc_def)); -/* - Open a Zip file, like unzOpen, but provide a set of file low level API - for read/write the zip file (see ioapi.h) -*/ - -extern int ZEXPORT unzClose OF((unzFile file)); -/* - Close a ZipFile opened with unzipOpen. - If there is files inside the .Zip opened with unzOpenCurrentFile (see later), - these files MUST be closed with unzipCloseCurrentFile before call unzipClose. - return UNZ_OK if there is no problem. */ - -extern int ZEXPORT unzGetGlobalInfo OF((unzFile file, - unz_global_info *pglobal_info)); -/* - Write info about the ZipFile in the *pglobal_info structure. - No preparation of the structure is needed - return UNZ_OK if there is no problem. */ - - -extern int ZEXPORT unzGetGlobalComment OF((unzFile file, - char *szComment, - uLong uSizeBuf)); -/* - Get the global comment string of the ZipFile, in the szComment buffer. - uSizeBuf is the size of the szComment buffer. - return the number of byte copied or an error code <0 -*/ - - -/***************************************************************************/ -/* Unzip package allow you browse the directory of the zipfile */ - -extern int ZEXPORT unzGoToFirstFile OF((unzFile file)); -/* - Set the current file of the zipfile to the first file. - return UNZ_OK if there is no problem -*/ - -extern int ZEXPORT unzGoToNextFile OF((unzFile file)); -/* - Set the current file of the zipfile to the next file. - return UNZ_OK if there is no problem - return UNZ_END_OF_LIST_OF_FILE if the actual file was the latest. -*/ - -extern int ZEXPORT unzLocateFile OF((unzFile file, - const char *szFileName, - int iCaseSensitivity)); -/* - Try locate the file szFileName in the zipfile. - For the iCaseSensitivity signification, see unzStringFileNameCompare - - return value : - UNZ_OK if the file is found. It becomes the current file. - UNZ_END_OF_LIST_OF_FILE if the file is not found -*/ - - -/* ****************************************** */ -/* Ryan supplied functions */ -/* unz_file_info contain information about a file in the zipfile */ -typedef struct unz_file_pos_s -{ - uLong pos_in_zip_directory; /* offset in zip file directory */ - uLong num_of_file; /* # of file */ -} unz_file_pos; - -extern int ZEXPORT unzGetFilePos( - unzFile file, - unz_file_pos* file_pos); - -extern int ZEXPORT unzGoToFilePos( - unzFile file, - unz_file_pos* file_pos); - -/* ****************************************** */ - -extern int ZEXPORT unzGetCurrentFileInfo OF((unzFile file, - unz_file_info *pfile_info, - char *szFileName, - uLong fileNameBufferSize, - void *extraField, - uLong extraFieldBufferSize, - char *szComment, - uLong commentBufferSize)); -/* - Get Info about the current file - if pfile_info!=NULL, the *pfile_info structure will contain somes info about - the current file - if szFileName!=NULL, the filemane string will be copied in szFileName - (fileNameBufferSize is the size of the buffer) - if extraField!=NULL, the extra field information will be copied in extraField - (extraFieldBufferSize is the size of the buffer). - This is the Central-header version of the extra field - if szComment!=NULL, the comment string of the file will be copied in szComment - (commentBufferSize is the size of the buffer) -*/ - -/***************************************************************************/ -/* for reading the content of the current zipfile, you can open it, read data - from it, and close it (you can close it before reading all the file) - */ - -extern int ZEXPORT unzOpenCurrentFile OF((unzFile file)); -/* - Open for reading data the current file in the zipfile. - If there is no error, the return value is UNZ_OK. -*/ - -extern int ZEXPORT unzOpenCurrentFilePassword OF((unzFile file, - const char* password)); -/* - Open for reading data the current file in the zipfile. - password is a crypting password - If there is no error, the return value is UNZ_OK. -*/ - -extern int ZEXPORT unzOpenCurrentFile2 OF((unzFile file, - int* method, - int* level, - int raw)); -/* - Same than unzOpenCurrentFile, but open for read raw the file (not uncompress) - if raw==1 - *method will receive method of compression, *level will receive level of - compression - note : you can set level parameter as NULL (if you did not want known level, - but you CANNOT set method parameter as NULL -*/ - -extern int ZEXPORT unzOpenCurrentFile3 OF((unzFile file, - int* method, - int* level, - int raw, - const char* password)); -/* - Same than unzOpenCurrentFile, but open for read raw the file (not uncompress) - if raw==1 - *method will receive method of compression, *level will receive level of - compression - note : you can set level parameter as NULL (if you did not want known level, - but you CANNOT set method parameter as NULL -*/ - - -extern int ZEXPORT unzCloseCurrentFile OF((unzFile file)); -/* - Close the file in zip opened with unzOpenCurrentFile - Return UNZ_CRCERROR if all the file was read but the CRC is not good -*/ - -extern int ZEXPORT unzReadCurrentFile OF((unzFile file, - voidp buf, - unsigned len)); -/* - Read bytes from the current file (opened by unzOpenCurrentFile) - buf contain buffer where data must be copied - len the size of buf. - - return the number of byte copied if somes bytes are copied - return 0 if the end of file was reached - return <0 with error code if there is an error - (UNZ_ERRNO for IO error, or zLib error for uncompress error) -*/ - -extern z_off_t ZEXPORT unztell OF((unzFile file)); -/* - Give the current position in uncompressed data -*/ - -extern int ZEXPORT unzeof OF((unzFile file)); -/* - return 1 if the end of file was reached, 0 elsewhere -*/ - -extern int ZEXPORT unzGetLocalExtrafield OF((unzFile file, - voidp buf, - unsigned len)); -/* - Read extra field from the current file (opened by unzOpenCurrentFile) - This is the local-header version of the extra field (sometimes, there is - more info in the local-header version than in the central-header) - - if buf==NULL, it return the size of the local extra field - - if buf!=NULL, len is the size of the buffer, the extra header is copied in - buf. - the return value is the number of bytes copied in buf, or (if <0) - the error code -*/ - -/***************************************************************************/ - -/* Get the current file offset */ -extern uLong ZEXPORT unzGetOffset (unzFile file); - -/* Set the current file offset */ -extern int ZEXPORT unzSetOffset (unzFile file, uLong pos); - - - -#ifdef __cplusplus -} -#endif - -#endif /* _unz_H */ +/* unzip.h -- IO for uncompress .zip files using zlib + Version 1.01e, February 12th, 2005 + + Copyright (C) 1998-2005 Gilles Vollant + + This unzip package allow extract file from .ZIP file, compatible with PKZip 2.04g + WinZip, InfoZip tools and compatible. + + Multi volume ZipFile (span) are not supported. + Encryption compatible with pkzip 2.04g only supported + Old compressions used by old PKZip 1.x are not supported + + + I WAIT FEEDBACK at mail info@winimage.com + Visit also http://www.winimage.com/zLibDll/unzip.htm for evolution + + Condition of use and distribution are the same than zlib : + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + 3. This notice may not be removed or altered from any source distribution. + + Modified by Sergey A. Tachenov to integrate with Qt. + + +*/ + +/* for more info about .ZIP format, see + http://www.info-zip.org/pub/infozip/doc/appnote-981119-iz.zip + http://www.info-zip.org/pub/infozip/doc/ + PkWare has also a specification at : + ftp://ftp.pkware.com/probdesc.zip +*/ + +#ifndef _unz_H +#define _unz_H + +#ifdef __cplusplus +extern "C" { +#endif + +#ifndef _ZLIB_H +#include "zlib.h" +#endif + +#ifndef _ZLIBIOAPI_H +#include "ioapi.h" +#endif + +#if defined(STRICTUNZIP) || defined(STRICTZIPUNZIP) +/* like the STRICT of WIN32, we define a pointer that cannot be converted + from (void*) without cast */ +typedef struct TagunzFile__ { int unused; } unzFile__; +typedef unzFile__ *unzFile; +#else +typedef voidp unzFile; +#endif + + +#define UNZ_OK (0) +#define UNZ_END_OF_LIST_OF_FILE (-100) +#define UNZ_ERRNO (Z_ERRNO) +#define UNZ_EOF (0) +#define UNZ_PARAMERROR (-102) +#define UNZ_BADZIPFILE (-103) +#define UNZ_INTERNALERROR (-104) +#define UNZ_CRCERROR (-105) + +/* tm_unz contain date/time info */ +typedef struct tm_unz_s +{ + uInt tm_sec; /* seconds after the minute - [0,59] */ + uInt tm_min; /* minutes after the hour - [0,59] */ + uInt tm_hour; /* hours since midnight - [0,23] */ + uInt tm_mday; /* day of the month - [1,31] */ + uInt tm_mon; /* months since January - [0,11] */ + uInt tm_year; /* years - [1980..2044] */ +} tm_unz; + +/* unz_global_info structure contain global data about the ZIPfile + These data comes from the end of central dir */ +typedef struct unz_global_info_s +{ + uLong number_entry; /* total number of entries in + the central dir on this disk */ + uLong size_comment; /* size of the global comment of the zipfile */ +} unz_global_info; + + +/* unz_file_info contain information about a file in the zipfile */ +typedef struct unz_file_info_s +{ + uLong version; /* version made by 2 bytes */ + uLong version_needed; /* version needed to extract 2 bytes */ + uLong flag; /* general purpose bit flag 2 bytes */ + uLong compression_method; /* compression method 2 bytes */ + uLong dosDate; /* last mod file date in Dos fmt 4 bytes */ + uLong crc; /* crc-32 4 bytes */ + uLong compressed_size; /* compressed size 4 bytes */ + uLong uncompressed_size; /* uncompressed size 4 bytes */ + uLong size_filename; /* filename length 2 bytes */ + uLong size_file_extra; /* extra field length 2 bytes */ + uLong size_file_comment; /* file comment length 2 bytes */ + + uLong disk_num_start; /* disk number start 2 bytes */ + uLong internal_fa; /* internal file attributes 2 bytes */ + uLong external_fa; /* external file attributes 4 bytes */ + + tm_unz tmu_date; +} unz_file_info; + +extern int ZEXPORT unzStringFileNameCompare OF ((const char* fileName1, + const char* fileName2, + int iCaseSensitivity)); +/* + Compare two filename (fileName1,fileName2). + If iCaseSenisivity = 1, comparision is case sensitivity (like strcmp) + If iCaseSenisivity = 2, comparision is not case sensitivity (like strcmpi + or strcasecmp) + If iCaseSenisivity = 0, case sensitivity is defaut of your operating system + (like 1 on Unix, 2 on Windows) +*/ + + +extern unzFile ZEXPORT unzOpen OF((voidpf file)); +/* + Open a Zip file. path contain whatever zopen_file from the IO API + accepts. For Qt implementation it is a pointer to QIODevice, for + fopen() implementation it's a file name. + If the zipfile cannot be opened (file don't exist or in not valid), the + return value is NULL. + Else, the return value is a unzFile Handle, usable with other function + of this unzip package. +*/ + +extern unzFile ZEXPORT unzOpen2 OF((voidpf file, + zlib_filefunc_def* pzlib_filefunc_def)); +/* + Open a Zip file, like unzOpen, but provide a set of file low level API + for read/write the zip file (see ioapi.h) +*/ + +extern int ZEXPORT unzClose OF((unzFile file)); +/* + Close a ZipFile opened with unzipOpen. + If there is files inside the .Zip opened with unzOpenCurrentFile (see later), + these files MUST be closed with unzipCloseCurrentFile before call unzipClose. + return UNZ_OK if there is no problem. */ + +extern int ZEXPORT unzGetGlobalInfo OF((unzFile file, + unz_global_info *pglobal_info)); +/* + Write info about the ZipFile in the *pglobal_info structure. + No preparation of the structure is needed + return UNZ_OK if there is no problem. */ + + +extern int ZEXPORT unzGetGlobalComment OF((unzFile file, + char *szComment, + uLong uSizeBuf)); +/* + Get the global comment string of the ZipFile, in the szComment buffer. + uSizeBuf is the size of the szComment buffer. + return the number of byte copied or an error code <0 +*/ + + +/***************************************************************************/ +/* Unzip package allow you browse the directory of the zipfile */ + +extern int ZEXPORT unzGoToFirstFile OF((unzFile file)); +/* + Set the current file of the zipfile to the first file. + return UNZ_OK if there is no problem +*/ + +extern int ZEXPORT unzGoToNextFile OF((unzFile file)); +/* + Set the current file of the zipfile to the next file. + return UNZ_OK if there is no problem + return UNZ_END_OF_LIST_OF_FILE if the actual file was the latest. +*/ + +extern int ZEXPORT unzLocateFile OF((unzFile file, + const char *szFileName, + int iCaseSensitivity)); +/* + Try locate the file szFileName in the zipfile. + For the iCaseSensitivity signification, see unzStringFileNameCompare + + return value : + UNZ_OK if the file is found. It becomes the current file. + UNZ_END_OF_LIST_OF_FILE if the file is not found +*/ + + +/* ****************************************** */ +/* Ryan supplied functions */ +/* unz_file_info contain information about a file in the zipfile */ +typedef struct unz_file_pos_s +{ + uLong pos_in_zip_directory; /* offset in zip file directory */ + uLong num_of_file; /* # of file */ +} unz_file_pos; + +extern int ZEXPORT unzGetFilePos( + unzFile file, + unz_file_pos* file_pos); + +extern int ZEXPORT unzGoToFilePos( + unzFile file, + unz_file_pos* file_pos); + +/* ****************************************** */ + +extern int ZEXPORT unzGetCurrentFileInfo OF((unzFile file, + unz_file_info *pfile_info, + char *szFileName, + uLong fileNameBufferSize, + void *extraField, + uLong extraFieldBufferSize, + char *szComment, + uLong commentBufferSize)); +/* + Get Info about the current file + if pfile_info!=NULL, the *pfile_info structure will contain somes info about + the current file + if szFileName!=NULL, the filemane string will be copied in szFileName + (fileNameBufferSize is the size of the buffer) + if extraField!=NULL, the extra field information will be copied in extraField + (extraFieldBufferSize is the size of the buffer). + This is the Central-header version of the extra field + if szComment!=NULL, the comment string of the file will be copied in szComment + (commentBufferSize is the size of the buffer) +*/ + +/***************************************************************************/ +/* for reading the content of the current zipfile, you can open it, read data + from it, and close it (you can close it before reading all the file) + */ + +extern int ZEXPORT unzOpenCurrentFile OF((unzFile file)); +/* + Open for reading data the current file in the zipfile. + If there is no error, the return value is UNZ_OK. +*/ + +extern int ZEXPORT unzOpenCurrentFilePassword OF((unzFile file, + const char* password)); +/* + Open for reading data the current file in the zipfile. + password is a crypting password + If there is no error, the return value is UNZ_OK. +*/ + +extern int ZEXPORT unzOpenCurrentFile2 OF((unzFile file, + int* method, + int* level, + int raw)); +/* + Same than unzOpenCurrentFile, but open for read raw the file (not uncompress) + if raw==1 + *method will receive method of compression, *level will receive level of + compression + note : you can set level parameter as NULL (if you did not want known level, + but you CANNOT set method parameter as NULL +*/ + +extern int ZEXPORT unzOpenCurrentFile3 OF((unzFile file, + int* method, + int* level, + int raw, + const char* password)); +/* + Same than unzOpenCurrentFile, but open for read raw the file (not uncompress) + if raw==1 + *method will receive method of compression, *level will receive level of + compression + note : you can set level parameter as NULL (if you did not want known level, + but you CANNOT set method parameter as NULL +*/ + + +extern int ZEXPORT unzCloseCurrentFile OF((unzFile file)); +/* + Close the file in zip opened with unzOpenCurrentFile + Return UNZ_CRCERROR if all the file was read but the CRC is not good +*/ + +extern int ZEXPORT unzReadCurrentFile OF((unzFile file, + voidp buf, + unsigned len)); +/* + Read bytes from the current file (opened by unzOpenCurrentFile) + buf contain buffer where data must be copied + len the size of buf. + + return the number of byte copied if somes bytes are copied + return 0 if the end of file was reached + return <0 with error code if there is an error + (UNZ_ERRNO for IO error, or zLib error for uncompress error) +*/ + +extern z_off_t ZEXPORT unztell OF((unzFile file)); +/* + Give the current position in uncompressed data +*/ + +extern int ZEXPORT unzeof OF((unzFile file)); +/* + return 1 if the end of file was reached, 0 elsewhere +*/ + +extern int ZEXPORT unzGetLocalExtrafield OF((unzFile file, + voidp buf, + unsigned len)); +/* + Read extra field from the current file (opened by unzOpenCurrentFile) + This is the local-header version of the extra field (sometimes, there is + more info in the local-header version than in the central-header) + + if buf==NULL, it return the size of the local extra field + + if buf!=NULL, len is the size of the buffer, the extra header is copied in + buf. + the return value is the number of bytes copied in buf, or (if <0) + the error code +*/ + +/***************************************************************************/ + +/* Get the current file offset */ +extern uLong ZEXPORT unzGetOffset (unzFile file); + +/* Set the current file offset */ +extern int ZEXPORT unzSetOffset (unzFile file, uLong pos); + + + +#ifdef __cplusplus +} +#endif + +#endif /* _unz_H */ diff -r 3331b30e4ef1 -r 88fde28bbda6 misc/quazip/zip.h --- a/misc/quazip/zip.h Sun Oct 21 01:28:33 2012 +0400 +++ b/misc/quazip/zip.h Sat Nov 03 00:34:35 2012 +0400 @@ -1,237 +1,237 @@ -/* zip.h -- IO for compress .zip files using zlib - Version 1.01e, February 12th, 2005 - - Copyright (C) 1998-2005 Gilles Vollant - - This unzip package allow creates .ZIP file, compatible with PKZip 2.04g - WinZip, InfoZip tools and compatible. - Multi volume ZipFile (span) are not supported. - Encryption compatible with pkzip 2.04g only supported - Old compressions used by old PKZip 1.x are not supported - - For uncompress .zip file, look at unzip.h - - - I WAIT FEEDBACK at mail info@winimage.com - Visit also http://www.winimage.com/zLibDll/unzip.html for evolution - - Condition of use and distribution are the same than zlib : - - This software is provided 'as-is', without any express or implied - warranty. In no event will the authors be held liable for any damages - arising from the use of this software. - - Permission is granted to anyone to use this software for any purpose, - including commercial applications, and to alter it and redistribute it - freely, subject to the following restrictions: - - 1. The origin of this software must not be misrepresented; you must not - claim that you wrote the original software. If you use this software - in a product, an acknowledgment in the product documentation would be - appreciated but is not required. - 2. Altered source versions must be plainly marked as such, and must not be - misrepresented as being the original software. - 3. This notice may not be removed or altered from any source distribution. - - Modified by Sergey A. Tachenov to integrate with Qt. - - -*/ - -/* for more info about .ZIP format, see - http://www.info-zip.org/pub/infozip/doc/appnote-981119-iz.zip - http://www.info-zip.org/pub/infozip/doc/ - PkWare has also a specification at : - ftp://ftp.pkware.com/probdesc.zip -*/ - -#ifndef _zip_H -#define _zip_H - -#ifdef __cplusplus -extern "C" { -#endif - -#ifndef _ZLIB_H -#include "zlib.h" -#endif - -#ifndef _ZLIBIOAPI_H -#include "ioapi.h" -#endif - -#if defined(STRICTZIP) || defined(STRICTZIPUNZIP) -/* like the STRICT of WIN32, we define a pointer that cannot be converted - from (void*) without cast */ -typedef struct TagzipFile__ { int unused; } zipFile__; -typedef zipFile__ *zipFile; -#else -typedef voidp zipFile; -#endif - -#define ZIP_OK (0) -#define ZIP_EOF (0) -#define ZIP_ERRNO (Z_ERRNO) -#define ZIP_PARAMERROR (-102) -#define ZIP_BADZIPFILE (-103) -#define ZIP_INTERNALERROR (-104) - -#ifndef DEF_MEM_LEVEL -# if MAX_MEM_LEVEL >= 8 -# define DEF_MEM_LEVEL 8 -# else -# define DEF_MEM_LEVEL MAX_MEM_LEVEL -# endif -#endif -/* default memLevel */ - -/* tm_zip contain date/time info */ -typedef struct tm_zip_s -{ - uInt tm_sec; /* seconds after the minute - [0,59] */ - uInt tm_min; /* minutes after the hour - [0,59] */ - uInt tm_hour; /* hours since midnight - [0,23] */ - uInt tm_mday; /* day of the month - [1,31] */ - uInt tm_mon; /* months since January - [0,11] */ - uInt tm_year; /* years - [1980..2044] */ -} tm_zip; - -typedef struct -{ - tm_zip tmz_date; /* date in understandable format */ - uLong dosDate; /* if dos_date == 0, tmu_date is used */ -/* uLong flag; */ /* general purpose bit flag 2 bytes */ - - uLong internal_fa; /* internal file attributes 2 bytes */ - uLong external_fa; /* external file attributes 4 bytes */ -} zip_fileinfo; - -typedef const char* zipcharpc; - - -#define APPEND_STATUS_CREATE (0) -#define APPEND_STATUS_CREATEAFTER (1) -#define APPEND_STATUS_ADDINZIP (2) - -extern zipFile ZEXPORT zipOpen OF((voidpf file, int append)); -/* - Create a zipfile. - file is whatever the IO API accepts. For Qt IO API it's a pointer to - QIODevice. For fopen() IO API it's a file name (const char*). - if the file pathname exist and append==APPEND_STATUS_CREATEAFTER, the zip - will be created at the end of the file. - (useful if the file contain a self extractor code) - if the file pathname exist and append==APPEND_STATUS_ADDINZIP, we will - add files in existing zip (be sure you don't add file that doesn't exist) - If the zipfile cannot be opened, the return value is NULL. - Else, the return value is a zipFile Handle, usable with other function - of this zip package. -*/ - -/* Note : there is no delete function into a zipfile. - If you want delete file into a zipfile, you must open a zipfile, and create another - Of couse, you can use RAW reading and writing to copy the file you did not want delte -*/ - -extern zipFile ZEXPORT zipOpen2 OF((voidpf file, - int append, - zipcharpc* globalcomment, - zlib_filefunc_def* pzlib_filefunc_def)); - -extern int ZEXPORT zipOpenNewFileInZip OF((zipFile file, - const char* filename, - const zip_fileinfo* zipfi, - const void* extrafield_local, - uInt size_extrafield_local, - const void* extrafield_global, - uInt size_extrafield_global, - const char* comment, - int method, - int level)); -/* - Open a file in the ZIP for writing. - filename : the filename in zip (if NULL, '-' without quote will be used - *zipfi contain supplemental information - if extrafield_local!=NULL and size_extrafield_local>0, extrafield_local - contains the extrafield data the the local header - if extrafield_global!=NULL and size_extrafield_global>0, extrafield_global - contains the extrafield data the the local header - if comment != NULL, comment contain the comment string - method contain the compression method (0 for store, Z_DEFLATED for deflate) - level contain the level of compression (can be Z_DEFAULT_COMPRESSION) -*/ - - -extern int ZEXPORT zipOpenNewFileInZip2 OF((zipFile file, - const char* filename, - const zip_fileinfo* zipfi, - const void* extrafield_local, - uInt size_extrafield_local, - const void* extrafield_global, - uInt size_extrafield_global, - const char* comment, - int method, - int level, - int raw)); - -/* - Same than zipOpenNewFileInZip, except if raw=1, we write raw file - */ - -extern int ZEXPORT zipOpenNewFileInZip3 OF((zipFile file, - const char* filename, - const zip_fileinfo* zipfi, - const void* extrafield_local, - uInt size_extrafield_local, - const void* extrafield_global, - uInt size_extrafield_global, - const char* comment, - int method, - int level, - int raw, - int windowBits, - int memLevel, - int strategy, - const char* password, - uLong crcForCtypting)); - -/* - Same than zipOpenNewFileInZip2, except - windowBits,memLevel,,strategy : see parameter strategy in deflateInit2 - password : crypting password (NULL for no crypting) - crcForCtypting : crc of file to compress (needed for crypting) - */ - - -extern int ZEXPORT zipWriteInFileInZip OF((zipFile file, - const void* buf, - unsigned len)); -/* - Write data in the zipfile -*/ - -extern int ZEXPORT zipCloseFileInZip OF((zipFile file)); -/* - Close the current file in the zipfile -*/ - -extern int ZEXPORT zipCloseFileInZipRaw OF((zipFile file, - uLong uncompressed_size, - uLong crc32)); -/* - Close the current file in the zipfile, for fiel opened with - parameter raw=1 in zipOpenNewFileInZip2 - uncompressed_size and crc32 are value for the uncompressed size -*/ - -extern int ZEXPORT zipClose OF((zipFile file, - const char* global_comment)); -/* - Close the zipfile -*/ - -#ifdef __cplusplus -} -#endif - -#endif /* _zip_H */ +/* zip.h -- IO for compress .zip files using zlib + Version 1.01e, February 12th, 2005 + + Copyright (C) 1998-2005 Gilles Vollant + + This unzip package allow creates .ZIP file, compatible with PKZip 2.04g + WinZip, InfoZip tools and compatible. + Multi volume ZipFile (span) are not supported. + Encryption compatible with pkzip 2.04g only supported + Old compressions used by old PKZip 1.x are not supported + + For uncompress .zip file, look at unzip.h + + + I WAIT FEEDBACK at mail info@winimage.com + Visit also http://www.winimage.com/zLibDll/unzip.html for evolution + + Condition of use and distribution are the same than zlib : + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + 3. This notice may not be removed or altered from any source distribution. + + Modified by Sergey A. Tachenov to integrate with Qt. + + +*/ + +/* for more info about .ZIP format, see + http://www.info-zip.org/pub/infozip/doc/appnote-981119-iz.zip + http://www.info-zip.org/pub/infozip/doc/ + PkWare has also a specification at : + ftp://ftp.pkware.com/probdesc.zip +*/ + +#ifndef _zip_H +#define _zip_H + +#ifdef __cplusplus +extern "C" { +#endif + +#ifndef _ZLIB_H +#include "zlib.h" +#endif + +#ifndef _ZLIBIOAPI_H +#include "ioapi.h" +#endif + +#if defined(STRICTZIP) || defined(STRICTZIPUNZIP) +/* like the STRICT of WIN32, we define a pointer that cannot be converted + from (void*) without cast */ +typedef struct TagzipFile__ { int unused; } zipFile__; +typedef zipFile__ *zipFile; +#else +typedef voidp zipFile; +#endif + +#define ZIP_OK (0) +#define ZIP_EOF (0) +#define ZIP_ERRNO (Z_ERRNO) +#define ZIP_PARAMERROR (-102) +#define ZIP_BADZIPFILE (-103) +#define ZIP_INTERNALERROR (-104) + +#ifndef DEF_MEM_LEVEL +# if MAX_MEM_LEVEL >= 8 +# define DEF_MEM_LEVEL 8 +# else +# define DEF_MEM_LEVEL MAX_MEM_LEVEL +# endif +#endif +/* default memLevel */ + +/* tm_zip contain date/time info */ +typedef struct tm_zip_s +{ + uInt tm_sec; /* seconds after the minute - [0,59] */ + uInt tm_min; /* minutes after the hour - [0,59] */ + uInt tm_hour; /* hours since midnight - [0,23] */ + uInt tm_mday; /* day of the month - [1,31] */ + uInt tm_mon; /* months since January - [0,11] */ + uInt tm_year; /* years - [1980..2044] */ +} tm_zip; + +typedef struct +{ + tm_zip tmz_date; /* date in understandable format */ + uLong dosDate; /* if dos_date == 0, tmu_date is used */ +/* uLong flag; */ /* general purpose bit flag 2 bytes */ + + uLong internal_fa; /* internal file attributes 2 bytes */ + uLong external_fa; /* external file attributes 4 bytes */ +} zip_fileinfo; + +typedef const char* zipcharpc; + + +#define APPEND_STATUS_CREATE (0) +#define APPEND_STATUS_CREATEAFTER (1) +#define APPEND_STATUS_ADDINZIP (2) + +extern zipFile ZEXPORT zipOpen OF((voidpf file, int append)); +/* + Create a zipfile. + file is whatever the IO API accepts. For Qt IO API it's a pointer to + QIODevice. For fopen() IO API it's a file name (const char*). + if the file pathname exist and append==APPEND_STATUS_CREATEAFTER, the zip + will be created at the end of the file. + (useful if the file contain a self extractor code) + if the file pathname exist and append==APPEND_STATUS_ADDINZIP, we will + add files in existing zip (be sure you don't add file that doesn't exist) + If the zipfile cannot be opened, the return value is NULL. + Else, the return value is a zipFile Handle, usable with other function + of this zip package. +*/ + +/* Note : there is no delete function into a zipfile. + If you want delete file into a zipfile, you must open a zipfile, and create another + Of couse, you can use RAW reading and writing to copy the file you did not want delte +*/ + +extern zipFile ZEXPORT zipOpen2 OF((voidpf file, + int append, + zipcharpc* globalcomment, + zlib_filefunc_def* pzlib_filefunc_def)); + +extern int ZEXPORT zipOpenNewFileInZip OF((zipFile file, + const char* filename, + const zip_fileinfo* zipfi, + const void* extrafield_local, + uInt size_extrafield_local, + const void* extrafield_global, + uInt size_extrafield_global, + const char* comment, + int method, + int level)); +/* + Open a file in the ZIP for writing. + filename : the filename in zip (if NULL, '-' without quote will be used + *zipfi contain supplemental information + if extrafield_local!=NULL and size_extrafield_local>0, extrafield_local + contains the extrafield data the the local header + if extrafield_global!=NULL and size_extrafield_global>0, extrafield_global + contains the extrafield data the the local header + if comment != NULL, comment contain the comment string + method contain the compression method (0 for store, Z_DEFLATED for deflate) + level contain the level of compression (can be Z_DEFAULT_COMPRESSION) +*/ + + +extern int ZEXPORT zipOpenNewFileInZip2 OF((zipFile file, + const char* filename, + const zip_fileinfo* zipfi, + const void* extrafield_local, + uInt size_extrafield_local, + const void* extrafield_global, + uInt size_extrafield_global, + const char* comment, + int method, + int level, + int raw)); + +/* + Same than zipOpenNewFileInZip, except if raw=1, we write raw file + */ + +extern int ZEXPORT zipOpenNewFileInZip3 OF((zipFile file, + const char* filename, + const zip_fileinfo* zipfi, + const void* extrafield_local, + uInt size_extrafield_local, + const void* extrafield_global, + uInt size_extrafield_global, + const char* comment, + int method, + int level, + int raw, + int windowBits, + int memLevel, + int strategy, + const char* password, + uLong crcForCtypting)); + +/* + Same than zipOpenNewFileInZip2, except + windowBits,memLevel,,strategy : see parameter strategy in deflateInit2 + password : crypting password (NULL for no crypting) + crcForCtypting : crc of file to compress (needed for crypting) + */ + + +extern int ZEXPORT zipWriteInFileInZip OF((zipFile file, + const void* buf, + unsigned len)); +/* + Write data in the zipfile +*/ + +extern int ZEXPORT zipCloseFileInZip OF((zipFile file)); +/* + Close the current file in the zipfile +*/ + +extern int ZEXPORT zipCloseFileInZipRaw OF((zipFile file, + uLong uncompressed_size, + uLong crc32)); +/* + Close the current file in the zipfile, for fiel opened with + parameter raw=1 in zipOpenNewFileInZip2 + uncompressed_size and crc32 are value for the uncompressed size +*/ + +extern int ZEXPORT zipClose OF((zipFile file, + const char* global_comment)); +/* + Close the zipfile +*/ + +#ifdef __cplusplus +} +#endif + +#endif /* _zip_H */ diff -r 3331b30e4ef1 -r 88fde28bbda6 misc/winutils/Hedgewars.lnk Binary file misc/winutils/Hedgewars.lnk has changed diff -r 3331b30e4ef1 -r 88fde28bbda6 misc/winutils/Hedgewars_x64.lnk Binary file misc/winutils/Hedgewars_x64.lnk has changed diff -r 3331b30e4ef1 -r 88fde28bbda6 misc/winutils/Hedgewars_x86.lnk Binary file misc/winutils/Hedgewars_x86.lnk has changed diff -r 3331b30e4ef1 -r 88fde28bbda6 misc/winutils/include/SDL.h --- a/misc/winutils/include/SDL.h Sun Oct 21 01:28:33 2012 +0400 +++ b/misc/winutils/include/SDL.h Sat Nov 03 00:34:35 2012 +0400 @@ -1,6 +1,6 @@ /* SDL - Simple DirectMedia Layer - Copyright (C) 1997-2009 Sam Lantinga + Copyright (C) 1997-2012 Sam Lantinga This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public diff -r 3331b30e4ef1 -r 88fde28bbda6 misc/winutils/include/SDL_active.h --- a/misc/winutils/include/SDL_active.h Sun Oct 21 01:28:33 2012 +0400 +++ b/misc/winutils/include/SDL_active.h Sat Nov 03 00:34:35 2012 +0400 @@ -1,6 +1,6 @@ /* SDL - Simple DirectMedia Layer - Copyright (C) 1997-2009 Sam Lantinga + Copyright (C) 1997-2012 Sam Lantinga This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public diff -r 3331b30e4ef1 -r 88fde28bbda6 misc/winutils/include/SDL_audio.h --- a/misc/winutils/include/SDL_audio.h Sun Oct 21 01:28:33 2012 +0400 +++ b/misc/winutils/include/SDL_audio.h Sat Nov 03 00:34:35 2012 +0400 @@ -1,6 +1,6 @@ /* SDL - Simple DirectMedia Layer - Copyright (C) 1997-2009 Sam Lantinga + Copyright (C) 1997-2012 Sam Lantinga This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public diff -r 3331b30e4ef1 -r 88fde28bbda6 misc/winutils/include/SDL_byteorder.h --- a/misc/winutils/include/SDL_byteorder.h Sun Oct 21 01:28:33 2012 +0400 +++ b/misc/winutils/include/SDL_byteorder.h Sat Nov 03 00:34:35 2012 +0400 @@ -1,6 +1,6 @@ /* SDL - Simple DirectMedia Layer - Copyright (C) 1997-2009 Sam Lantinga + Copyright (C) 1997-2012 Sam Lantinga This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public diff -r 3331b30e4ef1 -r 88fde28bbda6 misc/winutils/include/SDL_cdrom.h --- a/misc/winutils/include/SDL_cdrom.h Sun Oct 21 01:28:33 2012 +0400 +++ b/misc/winutils/include/SDL_cdrom.h Sat Nov 03 00:34:35 2012 +0400 @@ -1,6 +1,6 @@ /* SDL - Simple DirectMedia Layer - Copyright (C) 1997-2009 Sam Lantinga + Copyright (C) 1997-2012 Sam Lantinga This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public diff -r 3331b30e4ef1 -r 88fde28bbda6 misc/winutils/include/SDL_config.h --- a/misc/winutils/include/SDL_config.h Sun Oct 21 01:28:33 2012 +0400 +++ b/misc/winutils/include/SDL_config.h Sat Nov 03 00:34:35 2012 +0400 @@ -1,7 +1,6 @@ -/* include/SDL_config.h. Generated from SDL_config.h.in by configure. */ /* SDL - Simple DirectMedia Layer - Copyright (C) 1997-2009 Sam Lantinga + Copyright (C) 1997-2012 Sam Lantinga This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public @@ -24,288 +23,23 @@ #ifndef _SDL_config_h #define _SDL_config_h -/* This is a set of defines to configure the SDL features */ - -/* General platform specific identifiers */ #include "SDL_platform.h" -/* Make sure that this isn't included by Visual C++ */ -#ifdef _MSC_VER -#error You should copy include/SDL_config.h.default to include/SDL_config.h -#endif - -/* C language features */ -/* #undef const */ -/* #undef inline */ -/* #undef volatile */ - -/* C datatypes */ -/* #undef size_t */ -/* #undef int8_t */ -/* #undef uint8_t */ -/* #undef int16_t */ -/* #undef uint16_t */ -/* #undef int32_t */ -/* #undef uint32_t */ -/* #undef int64_t */ -/* #undef uint64_t */ -/* #undef uintptr_t */ -#define SDL_HAS_64BIT_TYPE 1 - -/* Endianness */ -#define SDL_BYTEORDER 1234 - -/* Comment this if you want to build without any C library requirements */ -#define HAVE_LIBC 1 -#if HAVE_LIBC - -/* Useful headers */ -/* #undef HAVE_ALLOCA_H */ -#define HAVE_SYS_TYPES_H 1 -#define HAVE_STDIO_H 1 -#define STDC_HEADERS 1 -#define HAVE_STDLIB_H 1 -#define HAVE_STDARG_H 1 -#define HAVE_MALLOC_H 1 -#define HAVE_MEMORY_H 1 -#define HAVE_STRING_H 1 -#define HAVE_STRINGS_H 1 -#define HAVE_INTTYPES_H 1 -#define HAVE_STDINT_H 1 -#define HAVE_CTYPE_H 1 -#define HAVE_MATH_H 1 -/* #undef HAVE_ICONV_H */ -#define HAVE_SIGNAL_H 1 -/* #undef HAVE_ALTIVEC_H */ - -/* C library functions */ -#define HAVE_MALLOC 1 -#define HAVE_CALLOC 1 -#define HAVE_REALLOC 1 -#define HAVE_FREE 1 -/* #undef HAVE_ALLOCA */ -#ifndef _WIN32 /* Don't use C runtime versions of these on Windows */ -#define HAVE_GETENV 1 -#define HAVE_PUTENV 1 -/* #undef HAVE_UNSETENV */ -#endif -#define HAVE_QSORT 1 -#define HAVE_ABS 1 -/* #undef HAVE_BCOPY */ -#define HAVE_MEMSET 1 -#define HAVE_MEMCPY 1 -#define HAVE_MEMMOVE 1 -/* #undef HAVE_MEMCMP */ -#define HAVE_STRLEN 1 -/* #undef HAVE_STRLCPY */ -/* #undef HAVE_STRLCAT */ -#define HAVE_STRDUP 1 -#define HAVE__STRREV 1 -#define HAVE__STRUPR 1 -#define HAVE__STRLWR 1 -/* #undef HAVE_INDEX */ -/* #undef HAVE_RINDEX */ -#define HAVE_STRCHR 1 -#define HAVE_STRRCHR 1 -#define HAVE_STRSTR 1 -#define HAVE_ITOA 1 -#define HAVE__LTOA 1 -/* #undef HAVE__UITOA */ -#define HAVE__ULTOA 1 -#define HAVE_STRTOL 1 -#define HAVE_STRTOUL 1 -#define HAVE__I64TOA 1 -#define HAVE__UI64TOA 1 -#define HAVE_STRTOLL 1 -#define HAVE_STRTOULL 1 -/* #undef HAVE_STRTOD */ -#define HAVE_ATOI 1 -#define HAVE_ATOF 1 -#define HAVE_STRCMP 1 -#define HAVE_STRNCMP 1 -#define HAVE__STRICMP 1 -#define HAVE_STRCASECMP 1 -#define HAVE__STRNICMP 1 -#define HAVE_STRNCASECMP 1 -#define HAVE_SSCANF 1 -#define HAVE_SNPRINTF 1 -#define HAVE_VSNPRINTF 1 -/* #undef HAVE_ICONV */ -/* #undef HAVE_SIGACTION */ -/* #undef HAVE_SETJMP */ -/* #undef HAVE_NANOSLEEP */ -/* #undef HAVE_CLOCK_GETTIME */ -/* #undef HAVE_GETPAGESIZE */ -/* #undef HAVE_MPROTECT */ - +/* Add any platform that doesn't build using the configure system */ +#if defined(__DREAMCAST__) +#include "SDL_config_dreamcast.h" +#elif defined(__MACOS__) +#include "SDL_config_macos.h" +#elif defined(__MACOSX__) +#include "SDL_config_macosx.h" +#elif defined(__SYMBIAN32__) +#include "SDL_config_symbian.h" /* must be before win32! */ +#elif defined(__WIN32__) +#include "SDL_config_win32.h" +#elif defined(__OS2__) +#include "SDL_config_os2.h" #else -/* We may need some replacement for stdarg.h here */ -#include -#endif /* HAVE_LIBC */ - -/* Allow disabling of core subsystems */ -/* #undef SDL_AUDIO_DISABLED */ -/* #undef SDL_CDROM_DISABLED */ -/* #undef SDL_CPUINFO_DISABLED */ -/* #undef SDL_EVENTS_DISABLED */ -/* #undef SDL_FILE_DISABLED */ -/* #undef SDL_JOYSTICK_DISABLED */ -/* #undef SDL_LOADSO_DISABLED */ -/* #undef SDL_THREADS_DISABLED */ -/* #undef SDL_TIMERS_DISABLED */ -/* #undef SDL_VIDEO_DISABLED */ - -/* Enable various audio drivers */ -/* #undef SDL_AUDIO_DRIVER_ALSA */ -/* #undef SDL_AUDIO_DRIVER_ALSA_DYNAMIC */ -/* #undef SDL_AUDIO_DRIVER_ARTS */ -/* #undef SDL_AUDIO_DRIVER_ARTS_DYNAMIC */ -/* #undef SDL_AUDIO_DRIVER_BAUDIO */ -/* #undef SDL_AUDIO_DRIVER_BSD */ -/* #undef SDL_AUDIO_DRIVER_COREAUDIO */ -/* #undef SDL_AUDIO_DRIVER_DART */ -/* #undef SDL_AUDIO_DRIVER_DC */ -#define SDL_AUDIO_DRIVER_DISK 1 -#define SDL_AUDIO_DRIVER_DUMMY 1 -/* #undef SDL_AUDIO_DRIVER_DMEDIA */ -#define SDL_AUDIO_DRIVER_DSOUND 1 -/* #undef SDL_AUDIO_DRIVER_PULSE */ -/* #undef SDL_AUDIO_DRIVER_PULSE_DYNAMIC */ -/* #undef SDL_AUDIO_DRIVER_ESD */ -/* #undef SDL_AUDIO_DRIVER_ESD_DYNAMIC */ -/* #undef SDL_AUDIO_DRIVER_MINT */ -/* #undef SDL_AUDIO_DRIVER_MMEAUDIO */ -/* #undef SDL_AUDIO_DRIVER_NAS */ -/* #undef SDL_AUDIO_DRIVER_NAS_DYNAMIC */ -/* #undef SDL_AUDIO_DRIVER_OSS */ -/* #undef SDL_AUDIO_DRIVER_OSS_SOUNDCARD_H */ -/* #undef SDL_AUDIO_DRIVER_PAUD */ -/* #undef SDL_AUDIO_DRIVER_QNXNTO */ -/* #undef SDL_AUDIO_DRIVER_SNDMGR */ -/* #undef SDL_AUDIO_DRIVER_SUNAUDIO */ -#define SDL_AUDIO_DRIVER_WAVEOUT 1 - -/* Enable various cdrom drivers */ -/* #undef SDL_CDROM_AIX */ -/* #undef SDL_CDROM_BEOS */ -/* #undef SDL_CDROM_BSDI */ -/* #undef SDL_CDROM_DC */ -/* #undef SDL_CDROM_DUMMY */ -/* #undef SDL_CDROM_FREEBSD */ -/* #undef SDL_CDROM_LINUX */ -/* #undef SDL_CDROM_MACOS */ -/* #undef SDL_CDROM_MACOSX */ -/* #undef SDL_CDROM_MINT */ -/* #undef SDL_CDROM_OPENBSD */ -/* #undef SDL_CDROM_OS2 */ -/* #undef SDL_CDROM_OSF */ -/* #undef SDL_CDROM_QNX */ -#define SDL_CDROM_WIN32 1 - -/* Enable various input drivers */ -/* #undef SDL_INPUT_LINUXEV */ -/* #undef SDL_INPUT_TSLIB */ -/* #undef SDL_JOYSTICK_BEOS */ -/* #undef SDL_JOYSTICK_DC */ -/* #undef SDL_JOYSTICK_DUMMY */ -/* #undef SDL_JOYSTICK_IOKIT */ -/* #undef SDL_JOYSTICK_LINUX */ -/* #undef SDL_JOYSTICK_MACOS */ -/* #undef SDL_JOYSTICK_MINT */ -/* #undef SDL_JOYSTICK_OS2 */ -/* #undef SDL_JOYSTICK_RISCOS */ -#define SDL_JOYSTICK_WINMM 1 -/* #undef SDL_JOYSTICK_USBHID */ -/* #undef SDL_JOYSTICK_USBHID_MACHINE_JOYSTICK_H */ - -/* Enable various shared object loading systems */ -/* #undef SDL_LOADSO_BEOS */ -/* #undef SDL_LOADSO_DLCOMPAT */ -/* #undef SDL_LOADSO_DLOPEN */ -/* #undef SDL_LOADSO_DUMMY */ -/* #undef SDL_LOADSO_LDG */ -/* #undef SDL_LOADSO_MACOS */ -/* #undef SDL_LOADSO_OS2 */ -#define SDL_LOADSO_WIN32 1 - -/* Enable various threading systems */ -/* #undef SDL_THREAD_BEOS */ -/* #undef SDL_THREAD_DC */ -/* #undef SDL_THREAD_OS2 */ -/* #undef SDL_THREAD_PTH */ -/* #undef SDL_THREAD_PTHREAD */ -/* #undef SDL_THREAD_PTHREAD_RECURSIVE_MUTEX */ -/* #undef SDL_THREAD_PTHREAD_RECURSIVE_MUTEX_NP */ -/* #undef SDL_THREAD_SPROC */ -#define SDL_THREAD_WIN32 1 - -/* Enable various timer systems */ -/* #undef SDL_TIMER_BEOS */ -/* #undef SDL_TIMER_DC */ -/* #undef SDL_TIMER_DUMMY */ -/* #undef SDL_TIMER_MACOS */ -/* #undef SDL_TIMER_MINT */ -/* #undef SDL_TIMER_OS2 */ -/* #undef SDL_TIMER_RISCOS */ -/* #undef SDL_TIMER_UNIX */ -#define SDL_TIMER_WIN32 1 -/* #undef SDL_TIMER_WINCE */ - -/* Enable various video drivers */ -/* #undef SDL_VIDEO_DRIVER_AALIB */ -/* #undef SDL_VIDEO_DRIVER_BWINDOW */ -/* #undef SDL_VIDEO_DRIVER_CACA */ -/* #undef SDL_VIDEO_DRIVER_DC */ -#define SDL_VIDEO_DRIVER_DDRAW 1 -/* #undef SDL_VIDEO_DRIVER_DGA */ -/* #undef SDL_VIDEO_DRIVER_DIRECTFB */ -/* #undef SDL_VIDEO_DRIVER_DRAWSPROCKET */ -#define SDL_VIDEO_DRIVER_DUMMY 1 -/* #undef SDL_VIDEO_DRIVER_FBCON */ -/* #undef SDL_VIDEO_DRIVER_GAPI */ -/* #undef SDL_VIDEO_DRIVER_GEM */ -/* #undef SDL_VIDEO_DRIVER_GGI */ -/* #undef SDL_VIDEO_DRIVER_IPOD */ -/* #undef SDL_VIDEO_DRIVER_NANOX */ -/* #undef SDL_VIDEO_DRIVER_OS2FS */ -/* #undef SDL_VIDEO_DRIVER_PHOTON */ -/* #undef SDL_VIDEO_DRIVER_PICOGUI */ -/* #undef SDL_VIDEO_DRIVER_PS2GS */ -/* #undef SDL_VIDEO_DRIVER_PS3 */ -/* #undef SDL_VIDEO_DRIVER_QTOPIA */ -/* #undef SDL_VIDEO_DRIVER_QUARTZ */ -/* #undef SDL_VIDEO_DRIVER_RISCOS */ -/* #undef SDL_VIDEO_DRIVER_SVGALIB */ -/* #undef SDL_VIDEO_DRIVER_TOOLBOX */ -/* #undef SDL_VIDEO_DRIVER_VGL */ -#define SDL_VIDEO_DRIVER_WINDIB 1 -/* #undef SDL_VIDEO_DRIVER_WSCONS */ -/* #undef SDL_VIDEO_DRIVER_X11 */ -/* #undef SDL_VIDEO_DRIVER_X11_DGAMOUSE */ -/* #undef SDL_VIDEO_DRIVER_X11_DYNAMIC */ -/* #undef SDL_VIDEO_DRIVER_X11_DYNAMIC_XEXT */ -/* #undef SDL_VIDEO_DRIVER_X11_DYNAMIC_XRANDR */ -/* #undef SDL_VIDEO_DRIVER_X11_DYNAMIC_XRENDER */ -/* #undef SDL_VIDEO_DRIVER_X11_VIDMODE */ -/* #undef SDL_VIDEO_DRIVER_X11_XINERAMA */ -/* #undef SDL_VIDEO_DRIVER_X11_XME */ -/* #undef SDL_VIDEO_DRIVER_X11_XRANDR */ -/* #undef SDL_VIDEO_DRIVER_X11_XV */ -/* #undef SDL_VIDEO_DRIVER_XBIOS */ - -/* Enable OpenGL support */ -#define SDL_VIDEO_OPENGL 1 -/* #undef SDL_VIDEO_OPENGL_GLX */ -#define SDL_VIDEO_OPENGL_WGL 1 -/* #undef SDL_VIDEO_OPENGL_OSMESA */ -/* #undef SDL_VIDEO_OPENGL_OSMESA_DYNAMIC */ - -/* Disable screensaver */ -#define SDL_VIDEO_DISABLE_SCREENSAVER 1 - -/* Enable assembly routines */ -#define SDL_ASSEMBLY_ROUTINES 1 -#define SDL_HERMES_BLITTERS 1 -/* #undef SDL_ALTIVEC_BLITTERS */ +#include "SDL_config_minimal.h" +#endif /* platform config */ #endif /* _SDL_config_h */ diff -r 3331b30e4ef1 -r 88fde28bbda6 misc/winutils/include/SDL_config_win32.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/misc/winutils/include/SDL_config_win32.h Sat Nov 03 00:34:35 2012 +0400 @@ -0,0 +1,183 @@ +/* + SDL - Simple DirectMedia Layer + Copyright (C) 1997-2012 Sam Lantinga + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library 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 + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + + Sam Lantinga + slouken@libsdl.org +*/ + +#ifndef _SDL_config_win32_h +#define _SDL_config_win32_h + +#include "SDL_platform.h" + +/* This is a set of defines to configure the SDL features */ + +#if defined(__GNUC__) || defined(__DMC__) +#define HAVE_STDINT_H 1 +#elif defined(_MSC_VER) +typedef signed __int8 int8_t; +typedef unsigned __int8 uint8_t; +typedef signed __int16 int16_t; +typedef unsigned __int16 uint16_t; +typedef signed __int32 int32_t; +typedef unsigned __int32 uint32_t; +typedef signed __int64 int64_t; +typedef unsigned __int64 uint64_t; +#ifndef _UINTPTR_T_DEFINED +#ifdef _WIN64 +typedef unsigned __int64 uintptr_t; +#else +typedef unsigned int uintptr_t; +#endif +#define _UINTPTR_T_DEFINED +#endif +/* Older Visual C++ headers don't have the Win64-compatible typedefs... */ +#if ((_MSC_VER <= 1200) && (!defined(DWORD_PTR))) +#define DWORD_PTR DWORD +#endif +#if ((_MSC_VER <= 1200) && (!defined(LONG_PTR))) +#define LONG_PTR LONG +#endif +#else /* !__GNUC__ && !_MSC_VER */ +typedef signed char int8_t; +typedef unsigned char uint8_t; +typedef signed short int16_t; +typedef unsigned short uint16_t; +typedef signed int int32_t; +typedef unsigned int uint32_t; +typedef signed long long int64_t; +typedef unsigned long long uint64_t; +#ifndef _SIZE_T_DEFINED_ +#define _SIZE_T_DEFINED_ +typedef unsigned int size_t; +#endif +typedef unsigned int uintptr_t; +#endif /* __GNUC__ || _MSC_VER */ +#define SDL_HAS_64BIT_TYPE 1 + +/* Enabled for SDL 1.2 (binary compatibility) */ +#define HAVE_LIBC 1 +#ifdef HAVE_LIBC +/* Useful headers */ +#define HAVE_STDIO_H 1 +#define STDC_HEADERS 1 +#define HAVE_STRING_H 1 +#define HAVE_CTYPE_H 1 +#define HAVE_MATH_H 1 +#ifndef _WIN32_WCE +#define HAVE_SIGNAL_H 1 +#endif + +/* C library functions */ +#define HAVE_MALLOC 1 +#define HAVE_CALLOC 1 +#define HAVE_REALLOC 1 +#define HAVE_FREE 1 +#define HAVE_ALLOCA 1 +#define HAVE_QSORT 1 +#define HAVE_ABS 1 +#define HAVE_MEMSET 1 +#define HAVE_MEMCPY 1 +#define HAVE_MEMMOVE 1 +#define HAVE_MEMCMP 1 +#define HAVE_STRLEN 1 +#define HAVE__STRREV 1 +#define HAVE__STRUPR 1 +#define HAVE__STRLWR 1 +#define HAVE_STRCHR 1 +#define HAVE_STRRCHR 1 +#define HAVE_STRSTR 1 +#define HAVE_ITOA 1 +#define HAVE__LTOA 1 +#define HAVE__ULTOA 1 +#define HAVE_STRTOL 1 +#define HAVE_STRTOUL 1 +#define HAVE_STRTOLL 1 +#define HAVE_STRTOD 1 +#define HAVE_ATOI 1 +#define HAVE_ATOF 1 +#define HAVE_STRCMP 1 +#define HAVE_STRNCMP 1 +#define HAVE__STRICMP 1 +#define HAVE__STRNICMP 1 +#define HAVE_SSCANF 1 +#else +#define HAVE_STDARG_H 1 +#define HAVE_STDDEF_H 1 +#endif + +/* Enable various audio drivers */ +#ifndef _WIN32_WCE +#define SDL_AUDIO_DRIVER_DSOUND 1 +#endif +#define SDL_AUDIO_DRIVER_WAVEOUT 1 +#define SDL_AUDIO_DRIVER_DISK 1 +#define SDL_AUDIO_DRIVER_DUMMY 1 + +/* Enable various cdrom drivers */ +#ifdef _WIN32_WCE +#define SDL_CDROM_DISABLED 1 +#else +#define SDL_CDROM_WIN32 1 +#endif + +/* Enable various input drivers */ +#ifdef _WIN32_WCE +#define SDL_JOYSTICK_DISABLED 1 +#else +#define SDL_JOYSTICK_WINMM 1 +#endif + +/* Enable various shared object loading systems */ +#define SDL_LOADSO_WIN32 1 + +/* Enable various threading systems */ +#define SDL_THREAD_WIN32 1 + +/* Enable various timer systems */ +#ifdef _WIN32_WCE +#define SDL_TIMER_WINCE 1 +#else +#define SDL_TIMER_WIN32 1 +#endif + +/* Enable various video drivers */ +#ifdef _WIN32_WCE +#define SDL_VIDEO_DRIVER_GAPI 1 +#endif +#ifndef _WIN32_WCE +#define SDL_VIDEO_DRIVER_DDRAW 1 +#endif +#define SDL_VIDEO_DRIVER_DUMMY 1 +#define SDL_VIDEO_DRIVER_WINDIB 1 + +/* Enable OpenGL support */ +#ifndef _WIN32_WCE +#define SDL_VIDEO_OPENGL 1 +#define SDL_VIDEO_OPENGL_WGL 1 +#endif + +/* Disable screensaver */ +#define SDL_VIDEO_DISABLE_SCREENSAVER 1 + +/* Enable assembly routines (Win64 doesn't have inline asm) */ +#ifndef _WIN64 +#define SDL_ASSEMBLY_ROUTINES 1 +#endif + +#endif /* _SDL_config_win32_h */ diff -r 3331b30e4ef1 -r 88fde28bbda6 misc/winutils/include/SDL_cpuinfo.h --- a/misc/winutils/include/SDL_cpuinfo.h Sun Oct 21 01:28:33 2012 +0400 +++ b/misc/winutils/include/SDL_cpuinfo.h Sat Nov 03 00:34:35 2012 +0400 @@ -1,6 +1,6 @@ /* SDL - Simple DirectMedia Layer - Copyright (C) 1997-2009 Sam Lantinga + Copyright (C) 1997-2012 Sam Lantinga This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public diff -r 3331b30e4ef1 -r 88fde28bbda6 misc/winutils/include/SDL_endian.h --- a/misc/winutils/include/SDL_endian.h Sun Oct 21 01:28:33 2012 +0400 +++ b/misc/winutils/include/SDL_endian.h Sat Nov 03 00:34:35 2012 +0400 @@ -1,6 +1,6 @@ /* SDL - Simple DirectMedia Layer - Copyright (C) 1997-2009 Sam Lantinga + Copyright (C) 1997-2012 Sam Lantinga This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public @@ -39,6 +39,10 @@ /*@}*/ #ifndef SDL_BYTEORDER /* Not defined in SDL_config.h? */ +#ifdef __linux__ +#include +#define SDL_BYTEORDER __BYTE_ORDER +#else /* __linux __ */ #if defined(__hppa__) || \ defined(__m68k__) || defined(mc68000) || defined(_M_M68K) || \ (defined(__MIPS__) && defined(__MISPEB__)) || \ @@ -48,6 +52,7 @@ #else #define SDL_BYTEORDER SDL_LIL_ENDIAN #endif +#endif /* __linux __ */ #endif /* !SDL_BYTEORDER */ @@ -86,7 +91,7 @@ __asm__("rlwimi %0,%2,8,16,23" : "=&r" (result) : "0" (x >> 8), "r" (x)); return result; } -#elif defined(__GNUC__) && (defined(__M68000__) || defined(__M68020__)) +#elif defined(__GNUC__) && (defined(__m68k__) && !defined(__mcoldfire__)) static __inline__ Uint16 SDL_Swap16(Uint16 x) { __asm__("rorw #8,%0" : "=d" (x) : "0" (x) : "cc"); @@ -94,7 +99,7 @@ } #else static __inline__ Uint16 SDL_Swap16(Uint16 x) { - return((x<<8)|(x>>8)); + return SDL_static_cast(Uint16, ((x<<8)|(x>>8))); } #endif @@ -121,7 +126,7 @@ __asm__("rlwimi %0,%2,24,0,7" : "=&r" (result) : "0" (result), "r" (x)); return result; } -#elif defined(__GNUC__) && (defined(__M68000__) || defined(__M68020__)) +#elif defined(__GNUC__) && (defined(__m68k__) && !defined(__mcoldfire__)) static __inline__ Uint32 SDL_Swap32(Uint32 x) { __asm__("rorw #8,%0\n\tswap %0\n\trorw #8,%0" : "=d" (x) : "0" (x) : "cc"); @@ -129,7 +134,7 @@ } #else static __inline__ Uint32 SDL_Swap32(Uint32 x) { - return((x<<24)|((x<<8)&0x00FF0000)|((x>>8)&0x0000FF00)|(x>>24)); + return SDL_static_cast(Uint32, ((x<<24)|((x<<8)&0x00FF0000)|((x>>8)&0x0000FF00)|(x>>24))); } #endif @@ -166,7 +171,7 @@ x = SDL_Swap32(lo); x <<= 32; x |= SDL_Swap32(hi); - return(x); + return (x); } #endif #else diff -r 3331b30e4ef1 -r 88fde28bbda6 misc/winutils/include/SDL_error.h --- a/misc/winutils/include/SDL_error.h Sun Oct 21 01:28:33 2012 +0400 +++ b/misc/winutils/include/SDL_error.h Sat Nov 03 00:34:35 2012 +0400 @@ -1,6 +1,6 @@ /* SDL - Simple DirectMedia Layer - Copyright (C) 1997-2009 Sam Lantinga + Copyright (C) 1997-2012 Sam Lantinga This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public diff -r 3331b30e4ef1 -r 88fde28bbda6 misc/winutils/include/SDL_events.h --- a/misc/winutils/include/SDL_events.h Sun Oct 21 01:28:33 2012 +0400 +++ b/misc/winutils/include/SDL_events.h Sat Nov 03 00:34:35 2012 +0400 @@ -1,6 +1,6 @@ /* SDL - Simple DirectMedia Layer - Copyright (C) 1997-2009 Sam Lantinga + Copyright (C) 1997-2012 Sam Lantinga This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public diff -r 3331b30e4ef1 -r 88fde28bbda6 misc/winutils/include/SDL_getenv.h --- a/misc/winutils/include/SDL_getenv.h Sun Oct 21 01:28:33 2012 +0400 +++ b/misc/winutils/include/SDL_getenv.h Sat Nov 03 00:34:35 2012 +0400 @@ -1,6 +1,6 @@ /* SDL - Simple DirectMedia Layer - Copyright (C) 1997-2009 Sam Lantinga + Copyright (C) 1997-2012 Sam Lantinga This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public diff -r 3331b30e4ef1 -r 88fde28bbda6 misc/winutils/include/SDL_joystick.h --- a/misc/winutils/include/SDL_joystick.h Sun Oct 21 01:28:33 2012 +0400 +++ b/misc/winutils/include/SDL_joystick.h Sat Nov 03 00:34:35 2012 +0400 @@ -1,6 +1,6 @@ /* SDL - Simple DirectMedia Layer - Copyright (C) 1997-2009 Sam Lantinga + Copyright (C) 1997-2012 Sam Lantinga This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public diff -r 3331b30e4ef1 -r 88fde28bbda6 misc/winutils/include/SDL_keyboard.h --- a/misc/winutils/include/SDL_keyboard.h Sun Oct 21 01:28:33 2012 +0400 +++ b/misc/winutils/include/SDL_keyboard.h Sat Nov 03 00:34:35 2012 +0400 @@ -1,6 +1,6 @@ /* SDL - Simple DirectMedia Layer - Copyright (C) 1997-2009 Sam Lantinga + Copyright (C) 1997-2012 Sam Lantinga This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public diff -r 3331b30e4ef1 -r 88fde28bbda6 misc/winutils/include/SDL_keysym.h --- a/misc/winutils/include/SDL_keysym.h Sun Oct 21 01:28:33 2012 +0400 +++ b/misc/winutils/include/SDL_keysym.h Sat Nov 03 00:34:35 2012 +0400 @@ -1,6 +1,6 @@ /* SDL - Simple DirectMedia Layer - Copyright (C) 1997-2009 Sam Lantinga + Copyright (C) 1997-2012 Sam Lantinga This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public diff -r 3331b30e4ef1 -r 88fde28bbda6 misc/winutils/include/SDL_loadso.h --- a/misc/winutils/include/SDL_loadso.h Sun Oct 21 01:28:33 2012 +0400 +++ b/misc/winutils/include/SDL_loadso.h Sat Nov 03 00:34:35 2012 +0400 @@ -1,6 +1,6 @@ /* SDL - Simple DirectMedia Layer - Copyright (C) 1997-2009 Sam Lantinga + Copyright (C) 1997-2012 Sam Lantinga This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public diff -r 3331b30e4ef1 -r 88fde28bbda6 misc/winutils/include/SDL_main.h --- a/misc/winutils/include/SDL_main.h Sun Oct 21 01:28:33 2012 +0400 +++ b/misc/winutils/include/SDL_main.h Sat Nov 03 00:34:35 2012 +0400 @@ -1,6 +1,6 @@ /* SDL - Simple DirectMedia Layer - Copyright (C) 1997-2009 Sam Lantinga + Copyright (C) 1997-2012 Sam Lantinga This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public diff -r 3331b30e4ef1 -r 88fde28bbda6 misc/winutils/include/SDL_mixer.h --- a/misc/winutils/include/SDL_mixer.h Sun Oct 21 01:28:33 2012 +0400 +++ b/misc/winutils/include/SDL_mixer.h Sat Nov 03 00:34:35 2012 +0400 @@ -1,26 +1,25 @@ /* - SDL_mixer: An audio mixer library based on the SDL library - Copyright (C) 1997-2004 Sam Lantinga + SDL_mixer: An audio mixer library based on the SDL library + Copyright (C) 1997-2012 Sam Lantinga - This library is free software; you can redistribute it and/or - modify it under the terms of the GNU Library General Public - License as published by the Free Software Foundation; either - version 2 of the License, or (at your option) any later version. + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. - This library 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 - Library General Public License for more details. + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: - You should have received a copy of the GNU Library General Public - License along with this library; if not, write to the Free - Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - - Sam Lantinga - slouken@libsdl.org + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + 3. This notice may not be removed or altered from any source distribution. */ -/* $Id: SDL_mixer.h,v 1.30 2004/01/04 17:37:04 slouken Exp $ */ +/* $Id$ */ #ifndef _SDL_MIXER_H #define _SDL_MIXER_H @@ -28,7 +27,7 @@ #include "SDL_types.h" #include "SDL_rwops.h" #include "SDL_audio.h" -#include "SDL_byteorder.h" +#include "SDL_endian.h" #include "SDL_version.h" #include "begin_code.h" @@ -41,7 +40,7 @@ */ #define SDL_MIXER_MAJOR_VERSION 1 #define SDL_MIXER_MINOR_VERSION 2 -#define SDL_MIXER_PATCHLEVEL 6 +#define SDL_MIXER_PATCHLEVEL 12 /* This macro can be used to fill a version structure with the compile-time * version of the SDL_mixer library. @@ -65,6 +64,24 @@ */ extern DECLSPEC const SDL_version * SDLCALL Mix_Linked_Version(void); +typedef enum +{ + MIX_INIT_FLAC = 0x00000001, + MIX_INIT_MOD = 0x00000002, + MIX_INIT_MP3 = 0x00000004, + MIX_INIT_OGG = 0x00000008, + MIX_INIT_FLUIDSYNTH = 0x00000010 +} MIX_InitFlags; + +/* Loads dynamic libraries and prepares them for use. Flags should be + one or more flags from MIX_InitFlags OR'd together. + It returns the flags successfully initialized, or 0 on failure. + */ +extern DECLSPEC int SDLCALL Mix_Init(int flags); + +/* Unloads libraries loaded with Mix_Init */ +extern DECLSPEC void SDLCALL Mix_Quit(void); + /* The default mixer has 8 simultaneous mixing channels */ #ifndef MIX_CHANNELS @@ -82,7 +99,7 @@ #define MIX_MAX_VOLUME 128 /* Volume of a chunk */ /* The internal format for an audio chunk */ -typedef struct { +typedef struct Mix_Chunk { int allocated; Uint8 *abuf; Uint32 alen; @@ -103,7 +120,10 @@ MUS_MOD, MUS_MID, MUS_OGG, - MUS_MP3 + MUS_MP3, + MUS_MP3_MAD, + MUS_FLAC, + MUS_MODPLUG } Mix_MusicType; /* The internal format for a music chunk interpreted via mikmod */ @@ -130,11 +150,12 @@ #define Mix_LoadWAV(file) Mix_LoadWAV_RW(SDL_RWFromFile(file, "rb"), 1) extern DECLSPEC Mix_Music * SDLCALL Mix_LoadMUS(const char *file); -#ifdef USE_RWOPS /* This hasn't been hooked into music.c yet */ -/* Load a music file from an SDL_RWop object (MikMod-specific currently) +/* Load a music file from an SDL_RWop object (Ogg and MikMod specific currently) Matt Campbell (matt@campbellhome.dhs.org) April 2000 */ extern DECLSPEC Mix_Music * SDLCALL Mix_LoadMUS_RW(SDL_RWops *rw); -#endif + +/* Load a music file from an SDL_RWop object assuming a specific format */ +extern DECLSPEC Mix_Music * SDLCALL Mix_LoadMUSType_RW(SDL_RWops *rw, Mix_MusicType type, int freesrc); /* Load a wave file of the mixer format from a memory buffer */ extern DECLSPEC Mix_Chunk * SDLCALL Mix_QuickLoad_WAV(Uint8 *mem); @@ -146,6 +167,30 @@ extern DECLSPEC void SDLCALL Mix_FreeChunk(Mix_Chunk *chunk); extern DECLSPEC void SDLCALL Mix_FreeMusic(Mix_Music *music); +/* Get a list of chunk/music decoders that this build of SDL_mixer provides. + This list can change between builds AND runs of the program, if external + libraries that add functionality become available. + You must successfully call Mix_OpenAudio() before calling these functions. + This API is only available in SDL_mixer 1.2.9 and later. + + // usage... + int i; + const int total = Mix_GetNumChunkDecoders(); + for (i = 0; i < total; i++) + printf("Supported chunk decoder: [%s]\n", Mix_GetChunkDecoder(i)); + + Appearing in this list doesn't promise your specific audio file will + decode...but it's handy to know if you have, say, a functioning Timidity + install. + + These return values are static, read-only data; do not modify or free it. + The pointers remain valid until you call Mix_CloseAudio(). +*/ +extern DECLSPEC int SDLCALL Mix_GetNumChunkDecoders(void); +extern DECLSPEC const char * SDLCALL Mix_GetChunkDecoder(int index); +extern DECLSPEC int SDLCALL Mix_GetNumMusicDecoders(void); +extern DECLSPEC const char * SDLCALL Mix_GetMusicDecoder(int index); + /* Find out the music format of a mixer music, or the currently playing music, if 'music' is NULL. */ @@ -183,7 +228,7 @@ extern DECLSPEC void SDLCALL Mix_ChannelFinished(void (*channel_finished)(int channel)); -/* Special Effects API by ryan c. gordon. (icculus@linuxgames.com) */ +/* Special Effects API by ryan c. gordon. (icculus@icculus.org) */ #define MIX_CHANNEL_POST -2 @@ -545,8 +590,8 @@ /* Set the current position in the music stream. This returns 0 if successful, or -1 if it failed or isn't implemented. This function is only implemented for MOD music formats (set pattern - order number) and for OGG music (set position in seconds), at the - moment. + order number) and for OGG, FLAC, MP3_MAD, and MODPLUG music (set + position in seconds), at the moment. */ extern DECLSPEC int SDLCALL Mix_SetMusicPosition(double position); @@ -563,6 +608,11 @@ extern DECLSPEC int SDLCALL Mix_SetSynchroValue(int value); extern DECLSPEC int SDLCALL Mix_GetSynchroValue(void); +/* Set/Get/Iterate SoundFonts paths to use by supported MIDI backends */ +extern DECLSPEC int SDLCALL Mix_SetSoundFonts(const char *paths); +extern DECLSPEC const char* SDLCALL Mix_GetSoundFonts(void); +extern DECLSPEC int SDLCALL Mix_EachSoundFont(int (*function)(const char*, void*), void *data); + /* Get the Mix_Chunk currently associated with a mixer channel Returns NULL if it's an invalid channel, or there's no chunk associated. */ diff -r 3331b30e4ef1 -r 88fde28bbda6 misc/winutils/include/SDL_mouse.h --- a/misc/winutils/include/SDL_mouse.h Sun Oct 21 01:28:33 2012 +0400 +++ b/misc/winutils/include/SDL_mouse.h Sat Nov 03 00:34:35 2012 +0400 @@ -1,6 +1,6 @@ /* SDL - Simple DirectMedia Layer - Copyright (C) 1997-2009 Sam Lantinga + Copyright (C) 1997-2012 Sam Lantinga This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public diff -r 3331b30e4ef1 -r 88fde28bbda6 misc/winutils/include/SDL_mutex.h --- a/misc/winutils/include/SDL_mutex.h Sun Oct 21 01:28:33 2012 +0400 +++ b/misc/winutils/include/SDL_mutex.h Sat Nov 03 00:34:35 2012 +0400 @@ -1,6 +1,6 @@ /* SDL - Simple DirectMedia Layer - Copyright (C) 1997-2009 Sam Lantinga + Copyright (C) 1997-2012 Sam Lantinga This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public diff -r 3331b30e4ef1 -r 88fde28bbda6 misc/winutils/include/SDL_opengl.h --- a/misc/winutils/include/SDL_opengl.h Sun Oct 21 01:28:33 2012 +0400 +++ b/misc/winutils/include/SDL_opengl.h Sat Nov 03 00:34:35 2012 +0400 @@ -1,6 +1,6 @@ /* SDL - Simple DirectMedia Layer - Copyright (C) 1997-2009 Sam Lantinga + Copyright (C) 1997-2012 Sam Lantinga This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public @@ -3108,21 +3108,35 @@ #ifndef GL_VERSION_1_5 /* GL types for handling large vertex buffer objects */ +#ifdef __APPLE__ +typedef long GLintptr; +typedef long GLsizeiptr; +#else typedef ptrdiff_t GLintptr; typedef ptrdiff_t GLsizeiptr; #endif +#endif #ifndef GL_ARB_vertex_buffer_object /* GL types for handling large vertex buffer objects */ +#ifdef __APPLE__ +typedef long GLintptrARB; +typedef long GLsizeiptrARB; +#else typedef ptrdiff_t GLintptrARB; typedef ptrdiff_t GLsizeiptrARB; #endif +#endif #ifndef GL_ARB_shader_objects /* GL types for handling shader object handles and program/shader text */ typedef char GLcharARB; /* native character */ +#if defined(__APPLE__) +typedef void *GLhandleARB; /* shader object handle */ +#else typedef unsigned int GLhandleARB; /* shader object handle */ #endif +#endif /* GL types for "half" precision (s10e5) float data in host memory */ #ifndef GL_ARB_half_float_pixel diff -r 3331b30e4ef1 -r 88fde28bbda6 misc/winutils/include/SDL_platform.h --- a/misc/winutils/include/SDL_platform.h Sun Oct 21 01:28:33 2012 +0400 +++ b/misc/winutils/include/SDL_platform.h Sat Nov 03 00:34:35 2012 +0400 @@ -1,6 +1,6 @@ /* SDL - Simple DirectMedia Layer - Copyright (C) 1997-2009 Sam Lantinga + Copyright (C) 1997-2012 Sam Lantinga This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public diff -r 3331b30e4ef1 -r 88fde28bbda6 misc/winutils/include/SDL_quit.h --- a/misc/winutils/include/SDL_quit.h Sun Oct 21 01:28:33 2012 +0400 +++ b/misc/winutils/include/SDL_quit.h Sat Nov 03 00:34:35 2012 +0400 @@ -1,6 +1,6 @@ /* SDL - Simple DirectMedia Layer - Copyright (C) 1997-2009 Sam Lantinga + Copyright (C) 1997-2012 Sam Lantinga This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public diff -r 3331b30e4ef1 -r 88fde28bbda6 misc/winutils/include/SDL_rwops.h --- a/misc/winutils/include/SDL_rwops.h Sun Oct 21 01:28:33 2012 +0400 +++ b/misc/winutils/include/SDL_rwops.h Sat Nov 03 00:34:35 2012 +0400 @@ -1,6 +1,6 @@ /* SDL - Simple DirectMedia Layer - Copyright (C) 1997-2009 Sam Lantinga + Copyright (C) 1997-2012 Sam Lantinga This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public diff -r 3331b30e4ef1 -r 88fde28bbda6 misc/winutils/include/SDL_stdinc.h --- a/misc/winutils/include/SDL_stdinc.h Sun Oct 21 01:28:33 2012 +0400 +++ b/misc/winutils/include/SDL_stdinc.h Sat Nov 03 00:34:35 2012 +0400 @@ -1,6 +1,6 @@ /* SDL - Simple DirectMedia Layer - Copyright (C) 1997-2009 Sam Lantinga + Copyright (C) 1997-2012 Sam Lantinga This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public diff -r 3331b30e4ef1 -r 88fde28bbda6 misc/winutils/include/SDL_syswm.h --- a/misc/winutils/include/SDL_syswm.h Sun Oct 21 01:28:33 2012 +0400 +++ b/misc/winutils/include/SDL_syswm.h Sat Nov 03 00:34:35 2012 +0400 @@ -1,6 +1,6 @@ /* SDL - Simple DirectMedia Layer - Copyright (C) 1997-2009 Sam Lantinga + Copyright (C) 1997-2012 Sam Lantinga This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public @@ -203,12 +203,13 @@ /** * This function gives you custom hooks into the window manager information. * It fills the structure pointed to by 'info' with custom information and - * returns 1 if the function is implemented. If it's not implemented, or - * the version member of the 'info' structure is invalid, it returns 0. + * returns 0 if the function is not implemented, 1 if the function is + * implemented and no error occurred, and -1 if the version member of + * the 'info' structure is not filled in or not supported. * * You typically use this function like this: * @code - * SDL_SysWMInfo info; + * SDL_SysWMinfo info; * SDL_VERSION(&info.version); * if ( SDL_GetWMInfo(&info) ) { ... } * @endcode diff -r 3331b30e4ef1 -r 88fde28bbda6 misc/winutils/include/SDL_thread.h --- a/misc/winutils/include/SDL_thread.h Sun Oct 21 01:28:33 2012 +0400 +++ b/misc/winutils/include/SDL_thread.h Sat Nov 03 00:34:35 2012 +0400 @@ -1,6 +1,6 @@ /* SDL - Simple DirectMedia Layer - Copyright (C) 1997-2009 Sam Lantinga + Copyright (C) 1997-2012 Sam Lantinga This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public @@ -68,11 +68,6 @@ #ifdef __OS2__ typedef int (*pfnSDL_CurrentBeginThread)(void (*func)(void *), void *, unsigned, void *arg); typedef void (*pfnSDL_CurrentEndThread)(void); -#elif __GNUC__ -typedef unsigned long (__cdecl *pfnSDL_CurrentBeginThread) (void *, unsigned, - unsigned (__stdcall *func)(void *), void *arg, - unsigned, unsigned *threadID); -typedef void (__cdecl *pfnSDL_CurrentEndThread)(unsigned code); #else typedef uintptr_t (__cdecl *pfnSDL_CurrentBeginThread) (void *, unsigned, unsigned (__stdcall *func)(void *), void *arg, diff -r 3331b30e4ef1 -r 88fde28bbda6 misc/winutils/include/SDL_timer.h --- a/misc/winutils/include/SDL_timer.h Sun Oct 21 01:28:33 2012 +0400 +++ b/misc/winutils/include/SDL_timer.h Sat Nov 03 00:34:35 2012 +0400 @@ -1,6 +1,6 @@ /* SDL - Simple DirectMedia Layer - Copyright (C) 1997-2009 Sam Lantinga + Copyright (C) 1997-2012 Sam Lantinga This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public diff -r 3331b30e4ef1 -r 88fde28bbda6 misc/winutils/include/SDL_types.h --- a/misc/winutils/include/SDL_types.h Sun Oct 21 01:28:33 2012 +0400 +++ b/misc/winutils/include/SDL_types.h Sat Nov 03 00:34:35 2012 +0400 @@ -1,6 +1,6 @@ /* SDL - Simple DirectMedia Layer - Copyright (C) 1997-2009 Sam Lantinga + Copyright (C) 1997-2012 Sam Lantinga This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public diff -r 3331b30e4ef1 -r 88fde28bbda6 misc/winutils/include/SDL_version.h --- a/misc/winutils/include/SDL_version.h Sun Oct 21 01:28:33 2012 +0400 +++ b/misc/winutils/include/SDL_version.h Sat Nov 03 00:34:35 2012 +0400 @@ -1,6 +1,6 @@ /* SDL - Simple DirectMedia Layer - Copyright (C) 1997-2009 Sam Lantinga + Copyright (C) 1997-2012 Sam Lantinga This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public @@ -41,7 +41,7 @@ /*@{*/ #define SDL_MAJOR_VERSION 1 #define SDL_MINOR_VERSION 2 -#define SDL_PATCHLEVEL 14 +#define SDL_PATCHLEVEL 15 /*@}*/ typedef struct SDL_version { diff -r 3331b30e4ef1 -r 88fde28bbda6 misc/winutils/include/SDL_video.h --- a/misc/winutils/include/SDL_video.h Sun Oct 21 01:28:33 2012 +0400 +++ b/misc/winutils/include/SDL_video.h Sat Nov 03 00:34:35 2012 +0400 @@ -1,6 +1,6 @@ /* SDL - Simple DirectMedia Layer - Copyright (C) 1997-2009 Sam Lantinga + Copyright (C) 1997-2012 Sam Lantinga This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public diff -r 3331b30e4ef1 -r 88fde28bbda6 misc/winutils/include/begin_code.h --- a/misc/winutils/include/begin_code.h Sun Oct 21 01:28:33 2012 +0400 +++ b/misc/winutils/include/begin_code.h Sat Nov 03 00:34:35 2012 +0400 @@ -1,6 +1,6 @@ /* SDL - Simple DirectMedia Layer - Copyright (C) 1997-2009 Sam Lantinga + Copyright (C) 1997-2012 Sam Lantinga This library is free software; you can redistribute it and/or modify it under the terms of the GNU Library General Public @@ -43,7 +43,7 @@ #ifndef DECLSPEC # if defined(__BEOS__) || defined(__HAIKU__) # if defined(__GNUC__) -# define DECLSPEC __declspec(dllexport) +# define DECLSPEC # else # define DECLSPEC __declspec(export) # endif @@ -132,7 +132,12 @@ #ifdef __BORLANDC__ #pragma nopackwarning #endif +#ifdef _M_X64 +/* Use 8-byte alignment on 64-bit architectures, so pointers are aligned */ +#pragma pack(push,8) +#else #pragma pack(push,4) +#endif #elif (defined(__MWERKS__) && defined(__MACOS__)) #pragma options align=mac68k4byte #pragma enumsalwaysint on diff -r 3331b30e4ef1 -r 88fde28bbda6 misc/winutils/include/close_code.h --- a/misc/winutils/include/close_code.h Sun Oct 21 01:28:33 2012 +0400 +++ b/misc/winutils/include/close_code.h Sat Nov 03 00:34:35 2012 +0400 @@ -1,6 +1,6 @@ /* SDL - Simple DirectMedia Layer - Copyright (C) 1997-2009 Sam Lantinga + Copyright (C) 1997-2012 Sam Lantinga This library is free software; you can redistribute it and/or modify it under the terms of the GNU Library General Public diff -r 3331b30e4ef1 -r 88fde28bbda6 misc/winutils/include/doxyfile --- a/misc/winutils/include/doxyfile Sun Oct 21 01:28:33 2012 +0400 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,946 +0,0 @@ -# Doxyfile 1.2.16 - -# This file describes the settings to be used by the documentation system -# doxygen (www.doxygen.org) for a project -# -# All text after a hash (#) is considered a comment and will be ignored -# The format is: -# TAG = value [value, ...] -# For lists items can also be appended using: -# TAG += value [value, ...] -# Values that contain spaces should be placed between quotes (" ") - -#--------------------------------------------------------------------------- -# General configuration options -#--------------------------------------------------------------------------- - -# The PROJECT_NAME tag is a single word (or a sequence of words surrounded -# by quotes) that should identify the project. - -PROJECT_NAME = SDL - -# The PROJECT_NUMBER tag can be used to enter a project or revision number. -# This could be handy for archiving the generated documentation or -# if some version control system is used. - -PROJECT_NUMBER = 1.2.14 - -# The OUTPUT_DIRECTORY tag is used to specify the (relative or absolute) -# base path where the generated documentation will be put. -# If a relative path is entered, it will be relative to the location -# where doxygen was started. If left blank the current directory will be used. - -OUTPUT_DIRECTORY = docs - -# The OUTPUT_LANGUAGE tag is used to specify the language in which all -# documentation generated by doxygen is written. Doxygen will use this -# information to generate all constant output in the proper language. -# The default language is English, other supported languages are: -# Brazilian, Chinese, Chinese-Traditional, Croatian, Czech, Danish, Dutch, -# Finnish, French, German, Greek, Hungarian, Italian, Japanese, Korean, -# Norwegian, Polish, Portuguese, Romanian, Russian, Slovak, Slovene, -# Spanish, Swedish and Ukrainian. - -OUTPUT_LANGUAGE = English - -# If the EXTRACT_ALL tag is set to YES doxygen will assume all entities in -# documentation are documented, even if no documentation was available. -# Private class members and static file members will be hidden unless -# the EXTRACT_PRIVATE and EXTRACT_STATIC tags are set to YES - -EXTRACT_ALL = NO - -# If the EXTRACT_PRIVATE tag is set to YES all private members of a class -# will be included in the documentation. - -EXTRACT_PRIVATE = NO - -# If the EXTRACT_STATIC tag is set to YES all static members of a file -# will be included in the documentation. - -EXTRACT_STATIC = NO - -# If the EXTRACT_LOCAL_CLASSES tag is set to YES classes (and structs) -# defined locally in source files will be included in the documentation. -# If set to NO only classes defined in header files are included. - -EXTRACT_LOCAL_CLASSES = NO - -# If the HIDE_UNDOC_MEMBERS tag is set to YES, Doxygen will hide all -# undocumented members of documented classes, files or namespaces. -# If set to NO (the default) these members will be included in the -# various overviews, but no documentation section is generated. -# This option has no effect if EXTRACT_ALL is enabled. - -HIDE_UNDOC_MEMBERS = NO - -# If the HIDE_UNDOC_CLASSES tag is set to YES, Doxygen will hide all -# undocumented classes that are normally visible in the class hierarchy. -# If set to NO (the default) these class will be included in the various -# overviews. This option has no effect if EXTRACT_ALL is enabled. - -HIDE_UNDOC_CLASSES = NO - -# If the BRIEF_MEMBER_DESC tag is set to YES (the default) Doxygen will -# include brief member descriptions after the members that are listed in -# the file and class documentation (similar to JavaDoc). -# Set to NO to disable this. - -BRIEF_MEMBER_DESC = YES - -# If the REPEAT_BRIEF tag is set to YES (the default) Doxygen will prepend -# the brief description of a member or function before the detailed description. -# Note: if both HIDE_UNDOC_MEMBERS and BRIEF_MEMBER_DESC are set to NO, the -# brief descriptions will be completely suppressed. - -REPEAT_BRIEF = YES - -# If the ALWAYS_DETAILED_SEC and REPEAT_BRIEF tags are both set to YES then -# Doxygen will generate a detailed section even if there is only a brief -# description. - -ALWAYS_DETAILED_SEC = NO - -# If the INLINE_INHERITED_MEMB tag is set to YES, doxygen will show all inherited -# members of a class in the documentation of that class as if those members were -# ordinary class members. Constructors, destructors and assignment operators of -# the base classes will not be shown. - -INLINE_INHERITED_MEMB = NO - -# If the FULL_PATH_NAMES tag is set to YES then Doxygen will prepend the full -# path before files name in the file list and in the header files. If set -# to NO the shortest path that makes the file name unique will be used. - -FULL_PATH_NAMES = NO - -# If the FULL_PATH_NAMES tag is set to YES then the STRIP_FROM_PATH tag -# can be used to strip a user defined part of the path. Stripping is -# only done if one of the specified strings matches the left-hand part of -# the path. It is allowed to use relative paths in the argument list. - -STRIP_FROM_PATH = - -# The INTERNAL_DOCS tag determines if documentation -# that is typed after a \internal command is included. If the tag is set -# to NO (the default) then the documentation will be excluded. -# Set it to YES to include the internal documentation. - -INTERNAL_DOCS = NO - -# Setting the STRIP_CODE_COMMENTS tag to YES (the default) will instruct -# doxygen to hide any special comment blocks from generated source code -# fragments. Normal C and C++ comments will always remain visible. - -STRIP_CODE_COMMENTS = YES - -# If the CASE_SENSE_NAMES tag is set to NO then Doxygen will only generate -# file names in lower case letters. If set to YES upper case letters are also -# allowed. This is useful if you have classes or files whose names only differ -# in case and if your file system supports case sensitive file names. Windows -# users are adviced to set this option to NO. - -CASE_SENSE_NAMES = YES - -# If the SHORT_NAMES tag is set to YES, doxygen will generate much shorter -# (but less readable) file names. This can be useful is your file systems -# doesn't support long names like on DOS, Mac, or CD-ROM. - -SHORT_NAMES = NO - -# If the HIDE_SCOPE_NAMES tag is set to NO (the default) then Doxygen -# will show members with their full class and namespace scopes in the -# documentation. If set to YES the scope will be hidden. - -HIDE_SCOPE_NAMES = NO - -# If the VERBATIM_HEADERS tag is set to YES (the default) then Doxygen -# will generate a verbatim copy of the header file for each class for -# which an include is specified. Set to NO to disable this. - -VERBATIM_HEADERS = YES - -# If the SHOW_INCLUDE_FILES tag is set to YES (the default) then Doxygen -# will put list of the files that are included by a file in the documentation -# of that file. - -SHOW_INCLUDE_FILES = YES - -# If the JAVADOC_AUTOBRIEF tag is set to YES then Doxygen -# will interpret the first line (until the first dot) of a JavaDoc-style -# comment as the brief description. If set to NO, the JavaDoc -# comments will behave just like the Qt-style comments (thus requiring an -# explict @brief command for a brief description. - -JAVADOC_AUTOBRIEF = NO - -# If the DETAILS_AT_TOP tag is set to YES then Doxygen -# will output the detailed description near the top, like JavaDoc. -# If set to NO, the detailed description appears after the member -# documentation. - -DETAILS_AT_TOP = NO - -# If the INHERIT_DOCS tag is set to YES (the default) then an undocumented -# member inherits the documentation from any documented member that it -# reimplements. - -INHERIT_DOCS = YES - -# If the INLINE_INFO tag is set to YES (the default) then a tag [inline] -# is inserted in the documentation for inline members. - -INLINE_INFO = YES - -# If the SORT_MEMBER_DOCS tag is set to YES (the default) then doxygen -# will sort the (detailed) documentation of file and class members -# alphabetically by member name. If set to NO the members will appear in -# declaration order. - -SORT_MEMBER_DOCS = YES - -# If member grouping is used in the documentation and the DISTRIBUTE_GROUP_DOC -# tag is set to YES, then doxygen will reuse the documentation of the first -# member in the group (if any) for the other members of the group. By default -# all members of a group must be documented explicitly. - -DISTRIBUTE_GROUP_DOC = NO - -# The TAB_SIZE tag can be used to set the number of spaces in a tab. -# Doxygen uses this value to replace tabs by spaces in code fragments. - -TAB_SIZE = 4 - -# The GENERATE_TODOLIST tag can be used to enable (YES) or -# disable (NO) the todo list. This list is created by putting \todo -# commands in the documentation. - -GENERATE_TODOLIST = YES - -# The GENERATE_TESTLIST tag can be used to enable (YES) or -# disable (NO) the test list. This list is created by putting \test -# commands in the documentation. - -GENERATE_TESTLIST = YES - -# The GENERATE_BUGLIST tag can be used to enable (YES) or -# disable (NO) the bug list. This list is created by putting \bug -# commands in the documentation. - -GENERATE_BUGLIST = YES - -# This tag can be used to specify a number of aliases that acts -# as commands in the documentation. An alias has the form "name=value". -# For example adding "sideeffect=\par Side Effects:\n" will allow you to -# put the command \sideeffect (or @sideeffect) in the documentation, which -# will result in a user defined paragraph with heading "Side Effects:". -# You can put \n's in the value part of an alias to insert newlines. - -ALIASES = - -# The ENABLED_SECTIONS tag can be used to enable conditional -# documentation sections, marked by \if sectionname ... \endif. - -ENABLED_SECTIONS = - -# The MAX_INITIALIZER_LINES tag determines the maximum number of lines -# the initial value of a variable or define consist of for it to appear in -# the documentation. If the initializer consists of more lines than specified -# here it will be hidden. Use a value of 0 to hide initializers completely. -# The appearance of the initializer of individual variables and defines in the -# documentation can be controlled using \showinitializer or \hideinitializer -# command in the documentation regardless of this setting. - -MAX_INITIALIZER_LINES = 30 - -# Set the OPTIMIZE_OUTPUT_FOR_C tag to YES if your project consists of C sources -# only. Doxygen will then generate output that is more tailored for C. -# For instance some of the names that are used will be different. The list -# of all members will be omitted, etc. - -OPTIMIZE_OUTPUT_FOR_C = YES - -# Set the OPTIMIZE_OUTPUT_JAVA tag to YES if your project consists of Java sources -# only. Doxygen will then generate output that is more tailored for Java. -# For instance namespaces will be presented as packages, qualified scopes -# will look different, etc. - -OPTIMIZE_OUTPUT_JAVA = NO - -# Set the SHOW_USED_FILES tag to NO to disable the list of files generated -# at the bottom of the documentation of classes and structs. If set to YES the -# list will mention the files that were used to generate the documentation. - -SHOW_USED_FILES = YES - -#--------------------------------------------------------------------------- -# configuration options related to warning and progress messages -#--------------------------------------------------------------------------- - -# The QUIET tag can be used to turn on/off the messages that are generated -# by doxygen. Possible values are YES and NO. If left blank NO is used. - -QUIET = NO - -# The WARNINGS tag can be used to turn on/off the warning messages that are -# generated by doxygen. Possible values are YES and NO. If left blank -# NO is used. - -WARNINGS = YES - -# If WARN_IF_UNDOCUMENTED is set to YES, then doxygen will generate warnings -# for undocumented members. If EXTRACT_ALL is set to YES then this flag will -# automatically be disabled. - -WARN_IF_UNDOCUMENTED = YES - -# The WARN_FORMAT tag determines the format of the warning messages that -# doxygen can produce. The string should contain the $file, $line, and $text -# tags, which will be replaced by the file and line number from which the -# warning originated and the warning text. - -WARN_FORMAT = "$file:$line: $text" - -# The WARN_LOGFILE tag can be used to specify a file to which warning -# and error messages should be written. If left blank the output is written -# to stderr. - -WARN_LOGFILE = - -#--------------------------------------------------------------------------- -# configuration options related to the input files -#--------------------------------------------------------------------------- - -# The INPUT tag can be used to specify the files and/or directories that contain -# documented source files. You may enter file names like "myfile.cpp" or -# directories like "/usr/src/myproject". Separate the files or directories -# with spaces. - -INPUT = include - -# If the value of the INPUT tag contains directories, you can use the -# FILE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp -# and *.h) to filter out the source-files in the directories. If left -# blank the following patterns are tested: -# *.c *.cc *.cxx *.cpp *.c++ *.java *.ii *.ixx *.ipp *.i++ *.inl *.h *.hh *.hxx *.hpp -# *.h++ *.idl *.odl - -FILE_PATTERNS = *.h - -# The RECURSIVE tag can be used to turn specify whether or not subdirectories -# should be searched for input files as well. Possible values are YES and NO. -# If left blank NO is used. - -RECURSIVE = NO - -# The EXCLUDE tag can be used to specify files and/or directories that should -# excluded from the INPUT source files. This way you can easily exclude a -# subdirectory from a directory tree whose root is specified with the INPUT tag. - -EXCLUDE = - -# The EXCLUDE_SYMLINKS tag can be used select whether or not files or directories -# that are symbolic links (a Unix filesystem feature) are excluded from the input. - -EXCLUDE_SYMLINKS = NO - -# If the value of the INPUT tag contains directories, you can use the -# EXCLUDE_PATTERNS tag to specify one or more wildcard patterns to exclude -# certain files from those directories. - -EXCLUDE_PATTERNS = - -# The EXAMPLE_PATH tag can be used to specify one or more files or -# directories that contain example code fragments that are included (see -# the \include command). - -EXAMPLE_PATH = - -# If the value of the EXAMPLE_PATH tag contains directories, you can use the -# EXAMPLE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp -# and *.h) to filter out the source-files in the directories. If left -# blank all files are included. - -EXAMPLE_PATTERNS = - -# If the EXAMPLE_RECURSIVE tag is set to YES then subdirectories will be -# searched for input files to be used with the \include or \dontinclude -# commands irrespective of the value of the RECURSIVE tag. -# Possible values are YES and NO. If left blank NO is used. - -EXAMPLE_RECURSIVE = NO - -# The IMAGE_PATH tag can be used to specify one or more files or -# directories that contain image that are included in the documentation (see -# the \image command). - -IMAGE_PATH = - -# The INPUT_FILTER tag can be used to specify a program that doxygen should -# invoke to filter for each input file. Doxygen will invoke the filter program -# by executing (via popen()) the command , where -# is the value of the INPUT_FILTER tag, and is the name of an -# input file. Doxygen will then use the output that the filter program writes -# to standard output. - -INPUT_FILTER = - -# If the FILTER_SOURCE_FILES tag is set to YES, the input filter (if set using -# INPUT_FILTER) will be used to filter the input files when producing source -# files to browse. - -FILTER_SOURCE_FILES = NO - -#--------------------------------------------------------------------------- -# configuration options related to source browsing -#--------------------------------------------------------------------------- - -# If the SOURCE_BROWSER tag is set to YES then a list of source files will -# be generated. Documented entities will be cross-referenced with these sources. - -SOURCE_BROWSER = NO - -# Setting the INLINE_SOURCES tag to YES will include the body -# of functions and classes directly in the documentation. - -INLINE_SOURCES = NO - -# If the REFERENCED_BY_RELATION tag is set to YES (the default) -# then for each documented function all documented -# functions referencing it will be listed. - -REFERENCED_BY_RELATION = YES - -# If the REFERENCES_RELATION tag is set to YES (the default) -# then for each documented function all documented entities -# called/used by that function will be listed. - -REFERENCES_RELATION = YES - -#--------------------------------------------------------------------------- -# configuration options related to the alphabetical class index -#--------------------------------------------------------------------------- - -# If the ALPHABETICAL_INDEX tag is set to YES, an alphabetical index -# of all compounds will be generated. Enable this if the project -# contains a lot of classes, structs, unions or interfaces. - -ALPHABETICAL_INDEX = NO - -# If the alphabetical index is enabled (see ALPHABETICAL_INDEX) then -# the COLS_IN_ALPHA_INDEX tag can be used to specify the number of columns -# in which this list will be split (can be a number in the range [1..20]) - -COLS_IN_ALPHA_INDEX = 5 - -# In case all classes in a project start with a common prefix, all -# classes will be put under the same header in the alphabetical index. -# The IGNORE_PREFIX tag can be used to specify one or more prefixes that -# should be ignored while generating the index headers. - -IGNORE_PREFIX = - -#--------------------------------------------------------------------------- -# configuration options related to the HTML output -#--------------------------------------------------------------------------- - -# If the GENERATE_HTML tag is set to YES (the default) Doxygen will -# generate HTML output. - -GENERATE_HTML = YES - -# The HTML_OUTPUT tag is used to specify where the HTML docs will be put. -# If a relative path is entered the value of OUTPUT_DIRECTORY will be -# put in front of it. If left blank `html' will be used as the default path. - -HTML_OUTPUT = html - -# The HTML_FILE_EXTENSION tag can be used to specify the file extension for -# each generated HTML page (for example: .htm,.php,.asp). If it is left blank -# doxygen will generate files with .html extension. - -HTML_FILE_EXTENSION = .html - -# The HTML_HEADER tag can be used to specify a personal HTML header for -# each generated HTML page. If it is left blank doxygen will generate a -# standard header. - -HTML_HEADER = - -# The HTML_FOOTER tag can be used to specify a personal HTML footer for -# each generated HTML page. If it is left blank doxygen will generate a -# standard footer. - -HTML_FOOTER = - -# The HTML_STYLESHEET tag can be used to specify a user defined cascading -# style sheet that is used by each HTML page. It can be used to -# fine-tune the look of the HTML output. If the tag is left blank doxygen -# will generate a default style sheet - -HTML_STYLESHEET = - -# If the HTML_ALIGN_MEMBERS tag is set to YES, the members of classes, -# files or namespaces will be aligned in HTML using tables. If set to -# NO a bullet list will be used. - -HTML_ALIGN_MEMBERS = YES - -# If the GENERATE_HTMLHELP tag is set to YES, additional index files -# will be generated that can be used as input for tools like the -# Microsoft HTML help workshop to generate a compressed HTML help file (.chm) -# of the generated HTML documentation. - -GENERATE_HTMLHELP = NO - -# If the GENERATE_HTMLHELP tag is set to YES, the GENERATE_CHI flag -# controls if a separate .chi index file is generated (YES) or that -# it should be included in the master .chm file (NO). - -GENERATE_CHI = NO - -# If the GENERATE_HTMLHELP tag is set to YES, the BINARY_TOC flag -# controls whether a binary table of contents is generated (YES) or a -# normal table of contents (NO) in the .chm file. - -BINARY_TOC = NO - -# The TOC_EXPAND flag can be set to YES to add extra items for group members -# to the contents of the Html help documentation and to the tree view. - -TOC_EXPAND = NO - -# The DISABLE_INDEX tag can be used to turn on/off the condensed index at -# top of each HTML page. The value NO (the default) enables the index and -# the value YES disables it. - -DISABLE_INDEX = NO - -# This tag can be used to set the number of enum values (range [1..20]) -# that doxygen will group on one line in the generated HTML documentation. - -ENUM_VALUES_PER_LINE = 4 - -# If the GENERATE_TREEVIEW tag is set to YES, a side panel will be -# generated containing a tree-like index structure (just like the one that -# is generated for HTML Help). For this to work a browser that supports -# JavaScript and frames is required (for instance Mozilla, Netscape 4.0+, -# or Internet explorer 4.0+). Note that for large projects the tree generation -# can take a very long time. In such cases it is better to disable this feature. -# Windows users are probably better off using the HTML help feature. - -GENERATE_TREEVIEW = NO - -# If the treeview is enabled (see GENERATE_TREEVIEW) then this tag can be -# used to set the initial width (in pixels) of the frame in which the tree -# is shown. - -TREEVIEW_WIDTH = 250 - -#--------------------------------------------------------------------------- -# configuration options related to the LaTeX output -#--------------------------------------------------------------------------- - -# If the GENERATE_LATEX tag is set to YES (the default) Doxygen will -# generate Latex output. - -GENERATE_LATEX = NO - -# The LATEX_OUTPUT tag is used to specify where the LaTeX docs will be put. -# If a relative path is entered the value of OUTPUT_DIRECTORY will be -# put in front of it. If left blank `latex' will be used as the default path. - -LATEX_OUTPUT = latex - -# The LATEX_CMD_NAME tag can be used to specify the LaTeX command name to be invoked. If left blank `latex' will be used as the default command name. - -LATEX_CMD_NAME = latex - -# The MAKEINDEX_CMD_NAME tag can be used to specify the command name to -# generate index for LaTeX. If left blank `makeindex' will be used as the -# default command name. - -MAKEINDEX_CMD_NAME = makeindex - -# If the COMPACT_LATEX tag is set to YES Doxygen generates more compact -# LaTeX documents. This may be useful for small projects and may help to -# save some trees in general. - -COMPACT_LATEX = NO - -# The PAPER_TYPE tag can be used to set the paper type that is used -# by the printer. Possible values are: a4, a4wide, letter, legal and -# executive. If left blank a4wide will be used. - -PAPER_TYPE = a4wide - -# The EXTRA_PACKAGES tag can be to specify one or more names of LaTeX -# packages that should be included in the LaTeX output. - -EXTRA_PACKAGES = - -# The LATEX_HEADER tag can be used to specify a personal LaTeX header for -# the generated latex document. The header should contain everything until -# the first chapter. If it is left blank doxygen will generate a -# standard header. Notice: only use this tag if you know what you are doing! - -LATEX_HEADER = - -# If the PDF_HYPERLINKS tag is set to YES, the LaTeX that is generated -# is prepared for conversion to pdf (using ps2pdf). The pdf file will -# contain links (just like the HTML output) instead of page references -# This makes the output suitable for online browsing using a pdf viewer. - -PDF_HYPERLINKS = NO - -# If the USE_PDFLATEX tag is set to YES, pdflatex will be used instead of -# plain latex in the generated Makefile. Set this option to YES to get a -# higher quality PDF documentation. - -USE_PDFLATEX = NO - -# If the LATEX_BATCHMODE tag is set to YES, doxygen will add the \\batchmode. -# command to the generated LaTeX files. This will instruct LaTeX to keep -# running if errors occur, instead of asking the user for help. -# This option is also used when generating formulas in HTML. - -LATEX_BATCHMODE = NO - -#--------------------------------------------------------------------------- -# configuration options related to the RTF output -#--------------------------------------------------------------------------- - -# If the GENERATE_RTF tag is set to YES Doxygen will generate RTF output -# The RTF output is optimised for Word 97 and may not look very pretty with -# other RTF readers or editors. - -GENERATE_RTF = YES - -# The RTF_OUTPUT tag is used to specify where the RTF docs will be put. -# If a relative path is entered the value of OUTPUT_DIRECTORY will be -# put in front of it. If left blank `rtf' will be used as the default path. - -RTF_OUTPUT = rtf - -# If the COMPACT_RTF tag is set to YES Doxygen generates more compact -# RTF documents. This may be useful for small projects and may help to -# save some trees in general. - -COMPACT_RTF = NO - -# If the RTF_HYPERLINKS tag is set to YES, the RTF that is generated -# will contain hyperlink fields. The RTF file will -# contain links (just like the HTML output) instead of page references. -# This makes the output suitable for online browsing using WORD or other -# programs which support those fields. -# Note: wordpad (write) and others do not support links. - -RTF_HYPERLINKS = NO - -# Load stylesheet definitions from file. Syntax is similar to doxygen's -# config file, i.e. a series of assigments. You only have to provide -# replacements, missing definitions are set to their default value. - -RTF_STYLESHEET_FILE = - -# Set optional variables used in the generation of an rtf document. -# Syntax is similar to doxygen's config file. - -RTF_EXTENSIONS_FILE = - -#--------------------------------------------------------------------------- -# configuration options related to the man page output -#--------------------------------------------------------------------------- - -# If the GENERATE_MAN tag is set to YES (the default) Doxygen will -# generate man pages - -GENERATE_MAN = YES - -# The MAN_OUTPUT tag is used to specify where the man pages will be put. -# If a relative path is entered the value of OUTPUT_DIRECTORY will be -# put in front of it. If left blank `man' will be used as the default path. - -MAN_OUTPUT = man - -# The MAN_EXTENSION tag determines the extension that is added to -# the generated man pages (default is the subroutine's section .3) - -MAN_EXTENSION = .3 - -# If the MAN_LINKS tag is set to YES and Doxygen generates man output, -# then it will generate one additional man file for each entity -# documented in the real man page(s). These additional files -# only source the real man page, but without them the man command -# would be unable to find the correct page. The default is NO. - -MAN_LINKS = YES - -#--------------------------------------------------------------------------- -# configuration options related to the XML output -#--------------------------------------------------------------------------- - -# If the GENERATE_XML tag is set to YES Doxygen will -# generate an XML file that captures the structure of -# the code including all documentation. Note that this -# feature is still experimental and incomplete at the -# moment. - -GENERATE_XML = NO - -#--------------------------------------------------------------------------- -# configuration options for the AutoGen Definitions output -#--------------------------------------------------------------------------- - -# If the GENERATE_AUTOGEN_DEF tag is set to YES Doxygen will -# generate an AutoGen Definitions (see autogen.sf.net) file -# that captures the structure of the code including all -# documentation. Note that this feature is still experimental -# and incomplete at the moment. - -GENERATE_AUTOGEN_DEF = NO - -#--------------------------------------------------------------------------- -# Configuration options related to the preprocessor -#--------------------------------------------------------------------------- - -# If the ENABLE_PREPROCESSING tag is set to YES (the default) Doxygen will -# evaluate all C-preprocessor directives found in the sources and include -# files. - -ENABLE_PREPROCESSING = YES - -# If the MACRO_EXPANSION tag is set to YES Doxygen will expand all macro -# names in the source code. If set to NO (the default) only conditional -# compilation will be performed. Macro expansion can be done in a controlled -# way by setting EXPAND_ONLY_PREDEF to YES. - -MACRO_EXPANSION = YES - -# If the EXPAND_ONLY_PREDEF and MACRO_EXPANSION tags are both set to YES -# then the macro expansion is limited to the macros specified with the -# PREDEFINED and EXPAND_AS_PREDEFINED tags. - -EXPAND_ONLY_PREDEF = YES - -# If the SEARCH_INCLUDES tag is set to YES (the default) the includes files -# in the INCLUDE_PATH (see below) will be search if a #include is found. - -SEARCH_INCLUDES = YES - -# The INCLUDE_PATH tag can be used to specify one or more directories that -# contain include files that are not input files but should be processed by -# the preprocessor. - -INCLUDE_PATH = - -# You can use the INCLUDE_FILE_PATTERNS tag to specify one or more wildcard -# patterns (like *.h and *.hpp) to filter out the header-files in the -# directories. If left blank, the patterns specified with FILE_PATTERNS will -# be used. - -INCLUDE_FILE_PATTERNS = - -# The PREDEFINED tag can be used to specify one or more macro names that -# are defined before the preprocessor is started (similar to the -D option of -# gcc). The argument of the tag is a list of macros of the form: name -# or name=definition (no spaces). If the definition and the = are -# omitted =1 is assumed. - -PREDEFINED = DOXYGEN_SHOULD_IGNORE_THIS=1 SDLCALL= SNDDECLSPEC= - -# If the MACRO_EXPANSION and EXPAND_PREDEF_ONLY tags are set to YES then -# this tag can be used to specify a list of macro names that should be expanded. -# The macro definition that is found in the sources will be used. -# Use the PREDEFINED tag if you want to use a different macro definition. - -EXPAND_AS_DEFINED = - -# If the SKIP_FUNCTION_MACROS tag is set to YES (the default) then -# doxygen's preprocessor will remove all function-like macros that are alone -# on a line and do not end with a semicolon. Such function macros are typically -# used for boiler-plate code, and will confuse the parser if not removed. - -SKIP_FUNCTION_MACROS = YES - -#--------------------------------------------------------------------------- -# Configuration::addtions related to external references -#--------------------------------------------------------------------------- - -# The TAGFILES tag can be used to specify one or more tagfiles. - -TAGFILES = - -# When a file name is specified after GENERATE_TAGFILE, doxygen will create -# a tag file that is based on the input files it reads. - -GENERATE_TAGFILE = - -# If the ALLEXTERNALS tag is set to YES all external classes will be listed -# in the class index. If set to NO only the inherited external classes -# will be listed. - -ALLEXTERNALS = NO - -# If the EXTERNAL_GROUPS tag is set to YES all external groups will be listed -# in the modules index. If set to NO, only the current project's groups will -# be listed. - -EXTERNAL_GROUPS = YES - -# The PERL_PATH should be the absolute path and name of the perl script -# interpreter (i.e. the result of `which perl'). - -PERL_PATH = /usr/bin/perl - -#--------------------------------------------------------------------------- -# Configuration options related to the dot tool -#--------------------------------------------------------------------------- - -# If the CLASS_DIAGRAMS tag is set to YES (the default) Doxygen will -# generate a inheritance diagram (in Html, RTF and LaTeX) for classes with base or -# super classes. Setting the tag to NO turns the diagrams off. Note that this -# option is superceded by the HAVE_DOT option below. This is only a fallback. It is -# recommended to install and use dot, since it yields more powerful graphs. - -CLASS_DIAGRAMS = NO - -# If set to YES, the inheritance and collaboration graphs will hide -# inheritance and usage relations if the target is undocumented -# or is not a class. - -HIDE_UNDOC_RELATIONS = YES - -# If you set the HAVE_DOT tag to YES then doxygen will assume the dot tool is -# available from the path. This tool is part of Graphviz, a graph visualization -# toolkit from AT&T and Lucent Bell Labs. The other options in this section -# have no effect if this option is set to NO (the default) - -HAVE_DOT = NO - -# If the CLASS_GRAPH and HAVE_DOT tags are set to YES then doxygen -# will generate a graph for each documented class showing the direct and -# indirect inheritance relations. Setting this tag to YES will force the -# the CLASS_DIAGRAMS tag to NO. - -CLASS_GRAPH = NO - -# If the COLLABORATION_GRAPH and HAVE_DOT tags are set to YES then doxygen -# will generate a graph for each documented class showing the direct and -# indirect implementation dependencies (inheritance, containment, and -# class references variables) of the class with other documented classes. - -COLLABORATION_GRAPH = NO - -# If set to YES, the inheritance and collaboration graphs will show the -# relations between templates and their instances. - -TEMPLATE_RELATIONS = NO - -# If the ENABLE_PREPROCESSING, SEARCH_INCLUDES, INCLUDE_GRAPH, and HAVE_DOT -# tags are set to YES then doxygen will generate a graph for each documented -# file showing the direct and indirect include dependencies of the file with -# other documented files. - -INCLUDE_GRAPH = NO - -# If the ENABLE_PREPROCESSING, SEARCH_INCLUDES, INCLUDED_BY_GRAPH, and -# HAVE_DOT tags are set to YES then doxygen will generate a graph for each -# documented header file showing the documented files that directly or -# indirectly include this file. - -INCLUDED_BY_GRAPH = YES - -# If the GRAPHICAL_HIERARCHY and HAVE_DOT tags are set to YES then doxygen -# will graphical hierarchy of all classes instead of a textual one. - -GRAPHICAL_HIERARCHY = YES - -# The DOT_IMAGE_FORMAT tag can be used to set the image format of the images -# generated by dot. Possible values are png, jpg, or gif -# If left blank png will be used. - -DOT_IMAGE_FORMAT = png - -# The tag DOT_PATH can be used to specify the path where the dot tool can be -# found. If left blank, it is assumed the dot tool can be found on the path. - -DOT_PATH = - -# The DOTFILE_DIRS tag can be used to specify one or more directories that -# contain dot files that are included in the documentation (see the -# \dotfile command). - -DOTFILE_DIRS = - -# The MAX_DOT_GRAPH_WIDTH tag can be used to set the maximum allowed width -# (in pixels) of the graphs generated by dot. If a graph becomes larger than -# this value, doxygen will try to truncate the graph, so that it fits within -# the specified constraint. Beware that most browsers cannot cope with very -# large images. - -MAX_DOT_GRAPH_WIDTH = 1024 - -# The MAX_DOT_GRAPH_HEIGHT tag can be used to set the maximum allows height -# (in pixels) of the graphs generated by dot. If a graph becomes larger than -# this value, doxygen will try to truncate the graph, so that it fits within -# the specified constraint. Beware that most browsers cannot cope with very -# large images. - -MAX_DOT_GRAPH_HEIGHT = 1024 - -# If the GENERATE_LEGEND tag is set to YES (the default) Doxygen will -# generate a legend page explaining the meaning of the various boxes and -# arrows in the dot generated graphs. - -GENERATE_LEGEND = YES - -# If the DOT_CLEANUP tag is set to YES (the default) Doxygen will -# remove the intermedate dot files that are used to generate -# the various graphs. - -DOT_CLEANUP = YES - -#--------------------------------------------------------------------------- -# Configuration::addtions related to the search engine -#--------------------------------------------------------------------------- - -# The SEARCHENGINE tag specifies whether or not a search engine should be -# used. If set to NO the values of all tags below this one will be ignored. - -SEARCHENGINE = NO - -# The CGI_NAME tag should be the name of the CGI script that -# starts the search engine (doxysearch) with the correct parameters. -# A script with this name will be generated by doxygen. - -CGI_NAME = search.cgi - -# The CGI_URL tag should be the absolute URL to the directory where the -# cgi binaries are located. See the documentation of your http daemon for -# details. - -CGI_URL = - -# The DOC_URL tag should be the absolute URL to the directory where the -# documentation is located. If left blank the absolute path to the -# documentation, with file:// prepended to it, will be used. - -DOC_URL = - -# The DOC_ABSPATH tag should be the absolute path to the directory where the -# documentation is located. If left blank the directory on the local machine -# will be used. - -DOC_ABSPATH = - -# The BIN_ABSPATH tag must point to the directory where the doxysearch binary -# is installed. - -BIN_ABSPATH = /usr/local/bin/ - -# The EXT_DOC_PATHS tag can be used to specify one or more paths to -# documentation generated for other projects. This allows doxysearch to search -# the documentation for these projects as well. - -EXT_DOC_PATHS = diff -r 3331b30e4ef1 -r 88fde28bbda6 misc/winutils/include/libavcodec/avcodec.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/misc/winutils/include/libavcodec/avcodec.h Sat Nov 03 00:34:35 2012 +0400 @@ -0,0 +1,4604 @@ +/* + * copyright (c) 2001 Fabrice Bellard + * + * This file is part of Libav. + * + * Libav is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * Libav 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 + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with Libav; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ + +#ifndef AVCODEC_AVCODEC_H +#define AVCODEC_AVCODEC_H + +/** + * @file + * external API header + */ + +#include +#include "libavutil/samplefmt.h" +#include "libavutil/avutil.h" +#include "libavutil/cpu.h" +#include "libavutil/dict.h" +#include "libavutil/log.h" +#include "libavutil/pixfmt.h" +#include "libavutil/rational.h" + +#include "libavcodec/version.h" +/** + * @defgroup libavc Encoding/Decoding Library + * @{ + * + * @defgroup lavc_decoding Decoding + * @{ + * @} + * + * @defgroup lavc_encoding Encoding + * @{ + * @} + * + * @defgroup lavc_codec Codecs + * @{ + * @defgroup lavc_codec_native Native Codecs + * @{ + * @} + * @defgroup lavc_codec_wrappers External library wrappers + * @{ + * @} + * @defgroup lavc_codec_hwaccel Hardware Accelerators bridge + * @{ + * @} + * @} + * @defgroup lavc_internal Internal + * @{ + * @} + * @} + * + */ + +/** + * @defgroup lavc_core Core functions/structures. + * @ingroup libavc + * + * Basic definitions, functions for querying libavcodec capabilities, + * allocating core structures, etc. + * @{ + */ + + +/** + * Identify the syntax and semantics of the bitstream. + * The principle is roughly: + * Two decoders with the same ID can decode the same streams. + * Two encoders with the same ID can encode compatible streams. + * There may be slight deviations from the principle due to implementation + * details. + * + * If you add a codec ID to this list, add it so that + * 1. no value of a existing codec ID changes (that would break ABI), + * 2. it is as close as possible to similar codecs. + * + * After adding new codec IDs, do not forget to add an entry to the codec + * descriptor list and bump libavcodec minor version. + */ +enum AVCodecID { + AV_CODEC_ID_NONE, + + /* video codecs */ + AV_CODEC_ID_MPEG1VIDEO, + AV_CODEC_ID_MPEG2VIDEO, ///< preferred ID for MPEG-1/2 video decoding + AV_CODEC_ID_MPEG2VIDEO_XVMC, + AV_CODEC_ID_H261, + AV_CODEC_ID_H263, + AV_CODEC_ID_RV10, + AV_CODEC_ID_RV20, + AV_CODEC_ID_MJPEG, + AV_CODEC_ID_MJPEGB, + AV_CODEC_ID_LJPEG, + AV_CODEC_ID_SP5X, + AV_CODEC_ID_JPEGLS, + AV_CODEC_ID_MPEG4, + AV_CODEC_ID_RAWVIDEO, + AV_CODEC_ID_MSMPEG4V1, + AV_CODEC_ID_MSMPEG4V2, + AV_CODEC_ID_MSMPEG4V3, + AV_CODEC_ID_WMV1, + AV_CODEC_ID_WMV2, + AV_CODEC_ID_H263P, + AV_CODEC_ID_H263I, + AV_CODEC_ID_FLV1, + AV_CODEC_ID_SVQ1, + AV_CODEC_ID_SVQ3, + AV_CODEC_ID_DVVIDEO, + AV_CODEC_ID_HUFFYUV, + AV_CODEC_ID_CYUV, + AV_CODEC_ID_H264, + AV_CODEC_ID_INDEO3, + AV_CODEC_ID_VP3, + AV_CODEC_ID_THEORA, + AV_CODEC_ID_ASV1, + AV_CODEC_ID_ASV2, + AV_CODEC_ID_FFV1, + AV_CODEC_ID_4XM, + AV_CODEC_ID_VCR1, + AV_CODEC_ID_CLJR, + AV_CODEC_ID_MDEC, + AV_CODEC_ID_ROQ, + AV_CODEC_ID_INTERPLAY_VIDEO, + AV_CODEC_ID_XAN_WC3, + AV_CODEC_ID_XAN_WC4, + AV_CODEC_ID_RPZA, + AV_CODEC_ID_CINEPAK, + AV_CODEC_ID_WS_VQA, + AV_CODEC_ID_MSRLE, + AV_CODEC_ID_MSVIDEO1, + AV_CODEC_ID_IDCIN, + AV_CODEC_ID_8BPS, + AV_CODEC_ID_SMC, + AV_CODEC_ID_FLIC, + AV_CODEC_ID_TRUEMOTION1, + AV_CODEC_ID_VMDVIDEO, + AV_CODEC_ID_MSZH, + AV_CODEC_ID_ZLIB, + AV_CODEC_ID_QTRLE, + AV_CODEC_ID_SNOW, + AV_CODEC_ID_TSCC, + AV_CODEC_ID_ULTI, + AV_CODEC_ID_QDRAW, + AV_CODEC_ID_VIXL, + AV_CODEC_ID_QPEG, + AV_CODEC_ID_PNG, + AV_CODEC_ID_PPM, + AV_CODEC_ID_PBM, + AV_CODEC_ID_PGM, + AV_CODEC_ID_PGMYUV, + AV_CODEC_ID_PAM, + AV_CODEC_ID_FFVHUFF, + AV_CODEC_ID_RV30, + AV_CODEC_ID_RV40, + AV_CODEC_ID_VC1, + AV_CODEC_ID_WMV3, + AV_CODEC_ID_LOCO, + AV_CODEC_ID_WNV1, + AV_CODEC_ID_AASC, + AV_CODEC_ID_INDEO2, + AV_CODEC_ID_FRAPS, + AV_CODEC_ID_TRUEMOTION2, + AV_CODEC_ID_BMP, + AV_CODEC_ID_CSCD, + AV_CODEC_ID_MMVIDEO, + AV_CODEC_ID_ZMBV, + AV_CODEC_ID_AVS, + AV_CODEC_ID_SMACKVIDEO, + AV_CODEC_ID_NUV, + AV_CODEC_ID_KMVC, + AV_CODEC_ID_FLASHSV, + AV_CODEC_ID_CAVS, + AV_CODEC_ID_JPEG2000, + AV_CODEC_ID_VMNC, + AV_CODEC_ID_VP5, + AV_CODEC_ID_VP6, + AV_CODEC_ID_VP6F, + AV_CODEC_ID_TARGA, + AV_CODEC_ID_DSICINVIDEO, + AV_CODEC_ID_TIERTEXSEQVIDEO, + AV_CODEC_ID_TIFF, + AV_CODEC_ID_GIF, + AV_CODEC_ID_DXA, + AV_CODEC_ID_DNXHD, + AV_CODEC_ID_THP, + AV_CODEC_ID_SGI, + AV_CODEC_ID_C93, + AV_CODEC_ID_BETHSOFTVID, + AV_CODEC_ID_PTX, + AV_CODEC_ID_TXD, + AV_CODEC_ID_VP6A, + AV_CODEC_ID_AMV, + AV_CODEC_ID_VB, + AV_CODEC_ID_PCX, + AV_CODEC_ID_SUNRAST, + AV_CODEC_ID_INDEO4, + AV_CODEC_ID_INDEO5, + AV_CODEC_ID_MIMIC, + AV_CODEC_ID_RL2, + AV_CODEC_ID_ESCAPE124, + AV_CODEC_ID_DIRAC, + AV_CODEC_ID_BFI, + AV_CODEC_ID_CMV, + AV_CODEC_ID_MOTIONPIXELS, + AV_CODEC_ID_TGV, + AV_CODEC_ID_TGQ, + AV_CODEC_ID_TQI, + AV_CODEC_ID_AURA, + AV_CODEC_ID_AURA2, + AV_CODEC_ID_V210X, + AV_CODEC_ID_TMV, + AV_CODEC_ID_V210, + AV_CODEC_ID_DPX, + AV_CODEC_ID_MAD, + AV_CODEC_ID_FRWU, + AV_CODEC_ID_FLASHSV2, + AV_CODEC_ID_CDGRAPHICS, + AV_CODEC_ID_R210, + AV_CODEC_ID_ANM, + AV_CODEC_ID_BINKVIDEO, + AV_CODEC_ID_IFF_ILBM, + AV_CODEC_ID_IFF_BYTERUN1, + AV_CODEC_ID_KGV1, + AV_CODEC_ID_YOP, + AV_CODEC_ID_VP8, + AV_CODEC_ID_PICTOR, + AV_CODEC_ID_ANSI, + AV_CODEC_ID_A64_MULTI, + AV_CODEC_ID_A64_MULTI5, + AV_CODEC_ID_R10K, + AV_CODEC_ID_MXPEG, + AV_CODEC_ID_LAGARITH, + AV_CODEC_ID_PRORES, + AV_CODEC_ID_JV, + AV_CODEC_ID_DFA, + AV_CODEC_ID_WMV3IMAGE, + AV_CODEC_ID_VC1IMAGE, + AV_CODEC_ID_UTVIDEO, + AV_CODEC_ID_BMV_VIDEO, + AV_CODEC_ID_VBLE, + AV_CODEC_ID_DXTORY, + AV_CODEC_ID_V410, + AV_CODEC_ID_XWD, + AV_CODEC_ID_CDXL, + AV_CODEC_ID_XBM, + AV_CODEC_ID_ZEROCODEC, + AV_CODEC_ID_MSS1, + AV_CODEC_ID_MSA1, + AV_CODEC_ID_TSCC2, + AV_CODEC_ID_MTS2, + AV_CODEC_ID_CLLC, + AV_CODEC_ID_MSS2, + + /* various PCM "codecs" */ + AV_CODEC_ID_FIRST_AUDIO = 0x10000, ///< A dummy id pointing at the start of audio codecs + AV_CODEC_ID_PCM_S16LE = 0x10000, + AV_CODEC_ID_PCM_S16BE, + AV_CODEC_ID_PCM_U16LE, + AV_CODEC_ID_PCM_U16BE, + AV_CODEC_ID_PCM_S8, + AV_CODEC_ID_PCM_U8, + AV_CODEC_ID_PCM_MULAW, + AV_CODEC_ID_PCM_ALAW, + AV_CODEC_ID_PCM_S32LE, + AV_CODEC_ID_PCM_S32BE, + AV_CODEC_ID_PCM_U32LE, + AV_CODEC_ID_PCM_U32BE, + AV_CODEC_ID_PCM_S24LE, + AV_CODEC_ID_PCM_S24BE, + AV_CODEC_ID_PCM_U24LE, + AV_CODEC_ID_PCM_U24BE, + AV_CODEC_ID_PCM_S24DAUD, + AV_CODEC_ID_PCM_ZORK, + AV_CODEC_ID_PCM_S16LE_PLANAR, + AV_CODEC_ID_PCM_DVD, + AV_CODEC_ID_PCM_F32BE, + AV_CODEC_ID_PCM_F32LE, + AV_CODEC_ID_PCM_F64BE, + AV_CODEC_ID_PCM_F64LE, + AV_CODEC_ID_PCM_BLURAY, + AV_CODEC_ID_PCM_LXF, + AV_CODEC_ID_S302M, + AV_CODEC_ID_PCM_S8_PLANAR, + + /* various ADPCM codecs */ + AV_CODEC_ID_ADPCM_IMA_QT = 0x11000, + AV_CODEC_ID_ADPCM_IMA_WAV, + AV_CODEC_ID_ADPCM_IMA_DK3, + AV_CODEC_ID_ADPCM_IMA_DK4, + AV_CODEC_ID_ADPCM_IMA_WS, + AV_CODEC_ID_ADPCM_IMA_SMJPEG, + AV_CODEC_ID_ADPCM_MS, + AV_CODEC_ID_ADPCM_4XM, + AV_CODEC_ID_ADPCM_XA, + AV_CODEC_ID_ADPCM_ADX, + AV_CODEC_ID_ADPCM_EA, + AV_CODEC_ID_ADPCM_G726, + AV_CODEC_ID_ADPCM_CT, + AV_CODEC_ID_ADPCM_SWF, + AV_CODEC_ID_ADPCM_YAMAHA, + AV_CODEC_ID_ADPCM_SBPRO_4, + AV_CODEC_ID_ADPCM_SBPRO_3, + AV_CODEC_ID_ADPCM_SBPRO_2, + AV_CODEC_ID_ADPCM_THP, + AV_CODEC_ID_ADPCM_IMA_AMV, + AV_CODEC_ID_ADPCM_EA_R1, + AV_CODEC_ID_ADPCM_EA_R3, + AV_CODEC_ID_ADPCM_EA_R2, + AV_CODEC_ID_ADPCM_IMA_EA_SEAD, + AV_CODEC_ID_ADPCM_IMA_EA_EACS, + AV_CODEC_ID_ADPCM_EA_XAS, + AV_CODEC_ID_ADPCM_EA_MAXIS_XA, + AV_CODEC_ID_ADPCM_IMA_ISS, + AV_CODEC_ID_ADPCM_G722, + AV_CODEC_ID_ADPCM_IMA_APC, + + /* AMR */ + AV_CODEC_ID_AMR_NB = 0x12000, + AV_CODEC_ID_AMR_WB, + + /* RealAudio codecs*/ + AV_CODEC_ID_RA_144 = 0x13000, + AV_CODEC_ID_RA_288, + + /* various DPCM codecs */ + AV_CODEC_ID_ROQ_DPCM = 0x14000, + AV_CODEC_ID_INTERPLAY_DPCM, + AV_CODEC_ID_XAN_DPCM, + AV_CODEC_ID_SOL_DPCM, + + /* audio codecs */ + AV_CODEC_ID_MP2 = 0x15000, + AV_CODEC_ID_MP3, ///< preferred ID for decoding MPEG audio layer 1, 2 or 3 + AV_CODEC_ID_AAC, + AV_CODEC_ID_AC3, + AV_CODEC_ID_DTS, + AV_CODEC_ID_VORBIS, + AV_CODEC_ID_DVAUDIO, + AV_CODEC_ID_WMAV1, + AV_CODEC_ID_WMAV2, + AV_CODEC_ID_MACE3, + AV_CODEC_ID_MACE6, + AV_CODEC_ID_VMDAUDIO, + AV_CODEC_ID_FLAC, + AV_CODEC_ID_MP3ADU, + AV_CODEC_ID_MP3ON4, + AV_CODEC_ID_SHORTEN, + AV_CODEC_ID_ALAC, + AV_CODEC_ID_WESTWOOD_SND1, + AV_CODEC_ID_GSM, ///< as in Berlin toast format + AV_CODEC_ID_QDM2, + AV_CODEC_ID_COOK, + AV_CODEC_ID_TRUESPEECH, + AV_CODEC_ID_TTA, + AV_CODEC_ID_SMACKAUDIO, + AV_CODEC_ID_QCELP, + AV_CODEC_ID_WAVPACK, + AV_CODEC_ID_DSICINAUDIO, + AV_CODEC_ID_IMC, + AV_CODEC_ID_MUSEPACK7, + AV_CODEC_ID_MLP, + AV_CODEC_ID_GSM_MS, /* as found in WAV */ + AV_CODEC_ID_ATRAC3, + AV_CODEC_ID_VOXWARE, + AV_CODEC_ID_APE, + AV_CODEC_ID_NELLYMOSER, + AV_CODEC_ID_MUSEPACK8, + AV_CODEC_ID_SPEEX, + AV_CODEC_ID_WMAVOICE, + AV_CODEC_ID_WMAPRO, + AV_CODEC_ID_WMALOSSLESS, + AV_CODEC_ID_ATRAC3P, + AV_CODEC_ID_EAC3, + AV_CODEC_ID_SIPR, + AV_CODEC_ID_MP1, + AV_CODEC_ID_TWINVQ, + AV_CODEC_ID_TRUEHD, + AV_CODEC_ID_MP4ALS, + AV_CODEC_ID_ATRAC1, + AV_CODEC_ID_BINKAUDIO_RDFT, + AV_CODEC_ID_BINKAUDIO_DCT, + AV_CODEC_ID_AAC_LATM, + AV_CODEC_ID_QDMC, + AV_CODEC_ID_CELT, + AV_CODEC_ID_G723_1, + AV_CODEC_ID_G729, + AV_CODEC_ID_8SVX_EXP, + AV_CODEC_ID_8SVX_FIB, + AV_CODEC_ID_BMV_AUDIO, + AV_CODEC_ID_RALF, + AV_CODEC_ID_IAC, + AV_CODEC_ID_ILBC, + AV_CODEC_ID_OPUS, + + /* subtitle codecs */ + AV_CODEC_ID_FIRST_SUBTITLE = 0x17000, ///< A dummy ID pointing at the start of subtitle codecs. + AV_CODEC_ID_DVD_SUBTITLE = 0x17000, + AV_CODEC_ID_DVB_SUBTITLE, + AV_CODEC_ID_TEXT, ///< raw UTF-8 text + AV_CODEC_ID_XSUB, + AV_CODEC_ID_SSA, + AV_CODEC_ID_MOV_TEXT, + AV_CODEC_ID_HDMV_PGS_SUBTITLE, + AV_CODEC_ID_DVB_TELETEXT, + AV_CODEC_ID_SRT, + + /* other specific kind of codecs (generally used for attachments) */ + AV_CODEC_ID_FIRST_UNKNOWN = 0x18000, ///< A dummy ID pointing at the start of various fake codecs. + AV_CODEC_ID_TTF = 0x18000, + + AV_CODEC_ID_PROBE = 0x19000, ///< codec_id is not known (like AV_CODEC_ID_NONE) but lavf should attempt to identify it + + AV_CODEC_ID_MPEG2TS = 0x20000, /**< _FAKE_ codec to indicate a raw MPEG-2 TS + * stream (only used by libavformat) */ + AV_CODEC_ID_MPEG4SYSTEMS = 0x20001, /**< _FAKE_ codec to indicate a MPEG-4 Systems + * stream (only used by libavformat) */ + AV_CODEC_ID_FFMETADATA = 0x21000, ///< Dummy codec for streams containing only metadata information. + +#if FF_API_CODEC_ID +#include "old_codec_ids.h" +#endif +}; + +#if FF_API_CODEC_ID +#define CodecID AVCodecID +#endif + +/** + * This struct describes the properties of a single codec described by an + * AVCodecID. + * @see avcodec_get_descriptor() + */ +typedef struct AVCodecDescriptor { + enum AVCodecID id; + enum AVMediaType type; + /** + * Name of the codec described by this descriptor. It is non-empty and + * unique for each codec descriptor. It should contain alphanumeric + * characters and '_' only. + */ + const char *name; + /** + * A more descriptive name for this codec. May be NULL. + */ + const char *long_name; + /** + * Codec properties, a combination of AV_CODEC_PROP_* flags. + */ + int props; +} AVCodecDescriptor; + +/** + * Codec uses only intra compression. + * Video codecs only. + */ +#define AV_CODEC_PROP_INTRA_ONLY (1 << 0) +/** + * Codec supports lossy compression. Audio and video codecs only. + * @note a codec may support both lossy and lossless + * compression modes + */ +#define AV_CODEC_PROP_LOSSY (1 << 1) +/** + * Codec supports lossless compression. Audio and video codecs only. + */ +#define AV_CODEC_PROP_LOSSLESS (1 << 2) + +#if FF_API_OLD_DECODE_AUDIO +/* in bytes */ +#define AVCODEC_MAX_AUDIO_FRAME_SIZE 192000 // 1 second of 48khz 32bit audio +#endif + +/** + * @ingroup lavc_decoding + * Required number of additionally allocated bytes at the end of the input bitstream for decoding. + * This is mainly needed because some optimized bitstream readers read + * 32 or 64 bit at once and could read over the end.
+ * Note: If the first 23 bits of the additional bytes are not 0, then damaged + * MPEG bitstreams could cause overread and segfault. + */ +#define FF_INPUT_BUFFER_PADDING_SIZE 8 + +/** + * @ingroup lavc_encoding + * minimum encoding buffer size + * Used to avoid some checks during header writing. + */ +#define FF_MIN_BUFFER_SIZE 16384 + + +/** + * @ingroup lavc_encoding + * motion estimation type. + */ +enum Motion_Est_ID { + ME_ZERO = 1, ///< no search, that is use 0,0 vector whenever one is needed + ME_FULL, + ME_LOG, + ME_PHODS, + ME_EPZS, ///< enhanced predictive zonal search + ME_X1, ///< reserved for experiments + ME_HEX, ///< hexagon based search + ME_UMH, ///< uneven multi-hexagon search + ME_ITER, ///< iterative search + ME_TESA, ///< transformed exhaustive search algorithm +}; + +/** + * @ingroup lavc_decoding + */ +enum AVDiscard{ + /* We leave some space between them for extensions (drop some + * keyframes for intra-only or drop just some bidir frames). */ + AVDISCARD_NONE =-16, ///< discard nothing + AVDISCARD_DEFAULT = 0, ///< discard useless packets like 0 size packets in avi + AVDISCARD_NONREF = 8, ///< discard all non reference + AVDISCARD_BIDIR = 16, ///< discard all bidirectional frames + AVDISCARD_NONKEY = 32, ///< discard all frames except keyframes + AVDISCARD_ALL = 48, ///< discard all +}; + +enum AVColorPrimaries{ + AVCOL_PRI_BT709 = 1, ///< also ITU-R BT1361 / IEC 61966-2-4 / SMPTE RP177 Annex B + AVCOL_PRI_UNSPECIFIED = 2, + AVCOL_PRI_BT470M = 4, + AVCOL_PRI_BT470BG = 5, ///< also ITU-R BT601-6 625 / ITU-R BT1358 625 / ITU-R BT1700 625 PAL & SECAM + AVCOL_PRI_SMPTE170M = 6, ///< also ITU-R BT601-6 525 / ITU-R BT1358 525 / ITU-R BT1700 NTSC + AVCOL_PRI_SMPTE240M = 7, ///< functionally identical to above + AVCOL_PRI_FILM = 8, + AVCOL_PRI_NB , ///< Not part of ABI +}; + +enum AVColorTransferCharacteristic{ + AVCOL_TRC_BT709 = 1, ///< also ITU-R BT1361 + AVCOL_TRC_UNSPECIFIED = 2, + AVCOL_TRC_GAMMA22 = 4, ///< also ITU-R BT470M / ITU-R BT1700 625 PAL & SECAM + AVCOL_TRC_GAMMA28 = 5, ///< also ITU-R BT470BG + AVCOL_TRC_SMPTE240M = 7, + AVCOL_TRC_NB , ///< Not part of ABI +}; + +enum AVColorSpace{ + AVCOL_SPC_RGB = 0, + AVCOL_SPC_BT709 = 1, ///< also ITU-R BT1361 / IEC 61966-2-4 xvYCC709 / SMPTE RP177 Annex B + AVCOL_SPC_UNSPECIFIED = 2, + AVCOL_SPC_FCC = 4, + AVCOL_SPC_BT470BG = 5, ///< also ITU-R BT601-6 625 / ITU-R BT1358 625 / ITU-R BT1700 625 PAL & SECAM / IEC 61966-2-4 xvYCC601 + AVCOL_SPC_SMPTE170M = 6, ///< also ITU-R BT601-6 525 / ITU-R BT1358 525 / ITU-R BT1700 NTSC / functionally identical to above + AVCOL_SPC_SMPTE240M = 7, + AVCOL_SPC_YCOCG = 8, ///< Used by Dirac / VC-2 and H.264 FRext, see ITU-T SG16 + AVCOL_SPC_NB , ///< Not part of ABI +}; + +enum AVColorRange{ + AVCOL_RANGE_UNSPECIFIED = 0, + AVCOL_RANGE_MPEG = 1, ///< the normal 219*2^(n-8) "MPEG" YUV ranges + AVCOL_RANGE_JPEG = 2, ///< the normal 2^n-1 "JPEG" YUV ranges + AVCOL_RANGE_NB , ///< Not part of ABI +}; + +/** + * X X 3 4 X X are luma samples, + * 1 2 1-6 are possible chroma positions + * X X 5 6 X 0 is undefined/unknown position + */ +enum AVChromaLocation{ + AVCHROMA_LOC_UNSPECIFIED = 0, + AVCHROMA_LOC_LEFT = 1, ///< mpeg2/4, h264 default + AVCHROMA_LOC_CENTER = 2, ///< mpeg1, jpeg, h263 + AVCHROMA_LOC_TOPLEFT = 3, ///< DV + AVCHROMA_LOC_TOP = 4, + AVCHROMA_LOC_BOTTOMLEFT = 5, + AVCHROMA_LOC_BOTTOM = 6, + AVCHROMA_LOC_NB , ///< Not part of ABI +}; + +enum AVAudioServiceType { + AV_AUDIO_SERVICE_TYPE_MAIN = 0, + AV_AUDIO_SERVICE_TYPE_EFFECTS = 1, + AV_AUDIO_SERVICE_TYPE_VISUALLY_IMPAIRED = 2, + AV_AUDIO_SERVICE_TYPE_HEARING_IMPAIRED = 3, + AV_AUDIO_SERVICE_TYPE_DIALOGUE = 4, + AV_AUDIO_SERVICE_TYPE_COMMENTARY = 5, + AV_AUDIO_SERVICE_TYPE_EMERGENCY = 6, + AV_AUDIO_SERVICE_TYPE_VOICE_OVER = 7, + AV_AUDIO_SERVICE_TYPE_KARAOKE = 8, + AV_AUDIO_SERVICE_TYPE_NB , ///< Not part of ABI +}; + +/** + * @ingroup lavc_encoding + */ +typedef struct RcOverride{ + int start_frame; + int end_frame; + int qscale; // If this is 0 then quality_factor will be used instead. + float quality_factor; +} RcOverride; + +#define FF_MAX_B_FRAMES 16 + +/* encoding support + These flags can be passed in AVCodecContext.flags before initialization. + Note: Not everything is supported yet. +*/ + +#define CODEC_FLAG_QSCALE 0x0002 ///< Use fixed qscale. +#define CODEC_FLAG_4MV 0x0004 ///< 4 MV per MB allowed / advanced prediction for H.263. +#define CODEC_FLAG_QPEL 0x0010 ///< Use qpel MC. +#define CODEC_FLAG_GMC 0x0020 ///< Use GMC. +#define CODEC_FLAG_MV0 0x0040 ///< Always try a MB with MV=<0,0>. +/** + * The parent program guarantees that the input for B-frames containing + * streams is not written to for at least s->max_b_frames+1 frames, if + * this is not set the input will be copied. + */ +#define CODEC_FLAG_INPUT_PRESERVED 0x0100 +#define CODEC_FLAG_PASS1 0x0200 ///< Use internal 2pass ratecontrol in first pass mode. +#define CODEC_FLAG_PASS2 0x0400 ///< Use internal 2pass ratecontrol in second pass mode. +#define CODEC_FLAG_GRAY 0x2000 ///< Only decode/encode grayscale. +#define CODEC_FLAG_EMU_EDGE 0x4000 ///< Don't draw edges. +#define CODEC_FLAG_PSNR 0x8000 ///< error[?] variables will be set during encoding. +#define CODEC_FLAG_TRUNCATED 0x00010000 /** Input bitstream might be truncated at a random + location instead of only at frame boundaries. */ +#define CODEC_FLAG_NORMALIZE_AQP 0x00020000 ///< Normalize adaptive quantization. +#define CODEC_FLAG_INTERLACED_DCT 0x00040000 ///< Use interlaced DCT. +#define CODEC_FLAG_LOW_DELAY 0x00080000 ///< Force low delay. +#define CODEC_FLAG_GLOBAL_HEADER 0x00400000 ///< Place global headers in extradata instead of every keyframe. +#define CODEC_FLAG_BITEXACT 0x00800000 ///< Use only bitexact stuff (except (I)DCT). +/* Fx : Flag for h263+ extra options */ +#define CODEC_FLAG_AC_PRED 0x01000000 ///< H.263 advanced intra coding / MPEG-4 AC prediction +#define CODEC_FLAG_LOOP_FILTER 0x00000800 ///< loop filter +#define CODEC_FLAG_INTERLACED_ME 0x20000000 ///< interlaced motion estimation +#define CODEC_FLAG_CLOSED_GOP 0x80000000 +#define CODEC_FLAG2_FAST 0x00000001 ///< Allow non spec compliant speedup tricks. +#define CODEC_FLAG2_NO_OUTPUT 0x00000004 ///< Skip bitstream encoding. +#define CODEC_FLAG2_LOCAL_HEADER 0x00000008 ///< Place global headers at every keyframe instead of in extradata. +#if FF_API_MPV_GLOBAL_OPTS +#define CODEC_FLAG_CBP_RD 0x04000000 ///< Use rate distortion optimization for cbp. +#define CODEC_FLAG_QP_RD 0x08000000 ///< Use rate distortion optimization for qp selectioon. +#define CODEC_FLAG2_STRICT_GOP 0x00000002 ///< Strictly enforce GOP size. +#define CODEC_FLAG2_SKIP_RD 0x00004000 ///< RD optimal MB level residual skipping +#endif +#define CODEC_FLAG2_CHUNKS 0x00008000 ///< Input bitstream might be truncated at a packet boundaries instead of only at frame boundaries. + +/* Unsupported options : + * Syntax Arithmetic coding (SAC) + * Reference Picture Selection + * Independent Segment Decoding */ +/* /Fx */ +/* codec capabilities */ + +#define CODEC_CAP_DRAW_HORIZ_BAND 0x0001 ///< Decoder can use draw_horiz_band callback. +/** + * Codec uses get_buffer() for allocating buffers and supports custom allocators. + * If not set, it might not use get_buffer() at all or use operations that + * assume the buffer was allocated by avcodec_default_get_buffer. + */ +#define CODEC_CAP_DR1 0x0002 +#define CODEC_CAP_TRUNCATED 0x0008 +/* Codec can export data for HW decoding (XvMC). */ +#define CODEC_CAP_HWACCEL 0x0010 +/** + * Encoder or decoder requires flushing with NULL input at the end in order to + * give the complete and correct output. + * + * NOTE: If this flag is not set, the codec is guaranteed to never be fed with + * with NULL data. The user can still send NULL data to the public encode + * or decode function, but libavcodec will not pass it along to the codec + * unless this flag is set. + * + * Decoders: + * The decoder has a non-zero delay and needs to be fed with avpkt->data=NULL, + * avpkt->size=0 at the end to get the delayed data until the decoder no longer + * returns frames. + * + * Encoders: + * The encoder needs to be fed with NULL data at the end of encoding until the + * encoder no longer returns data. + * + * NOTE: For encoders implementing the AVCodec.encode2() function, setting this + * flag also means that the encoder must set the pts and duration for + * each output packet. If this flag is not set, the pts and duration will + * be determined by libavcodec from the input frame. + */ +#define CODEC_CAP_DELAY 0x0020 +/** + * Codec can be fed a final frame with a smaller size. + * This can be used to prevent truncation of the last audio samples. + */ +#define CODEC_CAP_SMALL_LAST_FRAME 0x0040 +/** + * Codec can export data for HW decoding (VDPAU). + */ +#define CODEC_CAP_HWACCEL_VDPAU 0x0080 +/** + * Codec can output multiple frames per AVPacket + * Normally demuxers return one frame at a time, demuxers which do not do + * are connected to a parser to split what they return into proper frames. + * This flag is reserved to the very rare category of codecs which have a + * bitstream that cannot be split into frames without timeconsuming + * operations like full decoding. Demuxers carring such bitstreams thus + * may return multiple frames in a packet. This has many disadvantages like + * prohibiting stream copy in many cases thus it should only be considered + * as a last resort. + */ +#define CODEC_CAP_SUBFRAMES 0x0100 +/** + * Codec is experimental and is thus avoided in favor of non experimental + * encoders + */ +#define CODEC_CAP_EXPERIMENTAL 0x0200 +/** + * Codec should fill in channel configuration and samplerate instead of container + */ +#define CODEC_CAP_CHANNEL_CONF 0x0400 +/** + * Codec is able to deal with negative linesizes + */ +#define CODEC_CAP_NEG_LINESIZES 0x0800 +/** + * Codec supports frame-level multithreading. + */ +#define CODEC_CAP_FRAME_THREADS 0x1000 +/** + * Codec supports slice-based (or partition-based) multithreading. + */ +#define CODEC_CAP_SLICE_THREADS 0x2000 +/** + * Codec supports changed parameters at any point. + */ +#define CODEC_CAP_PARAM_CHANGE 0x4000 +/** + * Codec supports avctx->thread_count == 0 (auto). + */ +#define CODEC_CAP_AUTO_THREADS 0x8000 +/** + * Audio encoder supports receiving a different number of samples in each call. + */ +#define CODEC_CAP_VARIABLE_FRAME_SIZE 0x10000 + +//The following defines may change, don't expect compatibility if you use them. +#define MB_TYPE_INTRA4x4 0x0001 +#define MB_TYPE_INTRA16x16 0x0002 //FIXME H.264-specific +#define MB_TYPE_INTRA_PCM 0x0004 //FIXME H.264-specific +#define MB_TYPE_16x16 0x0008 +#define MB_TYPE_16x8 0x0010 +#define MB_TYPE_8x16 0x0020 +#define MB_TYPE_8x8 0x0040 +#define MB_TYPE_INTERLACED 0x0080 +#define MB_TYPE_DIRECT2 0x0100 //FIXME +#define MB_TYPE_ACPRED 0x0200 +#define MB_TYPE_GMC 0x0400 +#define MB_TYPE_SKIP 0x0800 +#define MB_TYPE_P0L0 0x1000 +#define MB_TYPE_P1L0 0x2000 +#define MB_TYPE_P0L1 0x4000 +#define MB_TYPE_P1L1 0x8000 +#define MB_TYPE_L0 (MB_TYPE_P0L0 | MB_TYPE_P1L0) +#define MB_TYPE_L1 (MB_TYPE_P0L1 | MB_TYPE_P1L1) +#define MB_TYPE_L0L1 (MB_TYPE_L0 | MB_TYPE_L1) +#define MB_TYPE_QUANT 0x00010000 +#define MB_TYPE_CBP 0x00020000 +//Note bits 24-31 are reserved for codec specific use (h264 ref0, mpeg1 0mv, ...) + +/** + * Pan Scan area. + * This specifies the area which should be displayed. + * Note there may be multiple such areas for one frame. + */ +typedef struct AVPanScan{ + /** + * id + * - encoding: Set by user. + * - decoding: Set by libavcodec. + */ + int id; + + /** + * width and height in 1/16 pel + * - encoding: Set by user. + * - decoding: Set by libavcodec. + */ + int width; + int height; + + /** + * position of the top left corner in 1/16 pel for up to 3 fields/frames + * - encoding: Set by user. + * - decoding: Set by libavcodec. + */ + int16_t position[3][2]; +}AVPanScan; + +#define FF_QSCALE_TYPE_MPEG1 0 +#define FF_QSCALE_TYPE_MPEG2 1 +#define FF_QSCALE_TYPE_H264 2 +#define FF_QSCALE_TYPE_VP56 3 + +#define FF_BUFFER_TYPE_INTERNAL 1 +#define FF_BUFFER_TYPE_USER 2 ///< direct rendering buffers (image is (de)allocated by user) +#define FF_BUFFER_TYPE_SHARED 4 ///< Buffer from somewhere else; don't deallocate image (data/base), all other tables are not shared. +#define FF_BUFFER_TYPE_COPY 8 ///< Just a (modified) copy of some other buffer, don't deallocate anything. + +#define FF_BUFFER_HINTS_VALID 0x01 // Buffer hints value is meaningful (if 0 ignore). +#define FF_BUFFER_HINTS_READABLE 0x02 // Codec will read from buffer. +#define FF_BUFFER_HINTS_PRESERVE 0x04 // User must not alter buffer content. +#define FF_BUFFER_HINTS_REUSABLE 0x08 // Codec will reuse the buffer (update). + +/** + * @defgroup lavc_packet AVPacket + * + * Types and functions for working with AVPacket. + * @{ + */ +enum AVPacketSideDataType { + AV_PKT_DATA_PALETTE, + AV_PKT_DATA_NEW_EXTRADATA, + + /** + * An AV_PKT_DATA_PARAM_CHANGE side data packet is laid out as follows: + * @code + * u32le param_flags + * if (param_flags & AV_SIDE_DATA_PARAM_CHANGE_CHANNEL_COUNT) + * s32le channel_count + * if (param_flags & AV_SIDE_DATA_PARAM_CHANGE_CHANNEL_LAYOUT) + * u64le channel_layout + * if (param_flags & AV_SIDE_DATA_PARAM_CHANGE_SAMPLE_RATE) + * s32le sample_rate + * if (param_flags & AV_SIDE_DATA_PARAM_CHANGE_DIMENSIONS) + * s32le width + * s32le height + * @endcode + */ + AV_PKT_DATA_PARAM_CHANGE, + + /** + * An AV_PKT_DATA_H263_MB_INFO side data packet contains a number of + * structures with info about macroblocks relevant to splitting the + * packet into smaller packets on macroblock edges (e.g. as for RFC 2190). + * That is, it does not necessarily contain info about all macroblocks, + * as long as the distance between macroblocks in the info is smaller + * than the target payload size. + * Each MB info structure is 12 bytes, and is laid out as follows: + * @code + * u32le bit offset from the start of the packet + * u8 current quantizer at the start of the macroblock + * u8 GOB number + * u16le macroblock address within the GOB + * u8 horizontal MV predictor + * u8 vertical MV predictor + * u8 horizontal MV predictor for block number 3 + * u8 vertical MV predictor for block number 3 + * @endcode + */ + AV_PKT_DATA_H263_MB_INFO, +}; + +typedef struct AVPacket { + /** + * Presentation timestamp in AVStream->time_base units; the time at which + * the decompressed packet will be presented to the user. + * Can be AV_NOPTS_VALUE if it is not stored in the file. + * pts MUST be larger or equal to dts as presentation cannot happen before + * decompression, unless one wants to view hex dumps. Some formats misuse + * the terms dts and pts/cts to mean something different. Such timestamps + * must be converted to true pts/dts before they are stored in AVPacket. + */ + int64_t pts; + /** + * Decompression timestamp in AVStream->time_base units; the time at which + * the packet is decompressed. + * Can be AV_NOPTS_VALUE if it is not stored in the file. + */ + int64_t dts; + uint8_t *data; + int size; + int stream_index; + /** + * A combination of AV_PKT_FLAG values + */ + int flags; + /** + * Additional packet data that can be provided by the container. + * Packet can contain several types of side information. + */ + struct { + uint8_t *data; + int size; + enum AVPacketSideDataType type; + } *side_data; + int side_data_elems; + + /** + * Duration of this packet in AVStream->time_base units, 0 if unknown. + * Equals next_pts - this_pts in presentation order. + */ + int duration; + void (*destruct)(struct AVPacket *); + void *priv; + int64_t pos; ///< byte position in stream, -1 if unknown + + /** + * Time difference in AVStream->time_base units from the pts of this + * packet to the point at which the output from the decoder has converged + * independent from the availability of previous frames. That is, the + * frames are virtually identical no matter if decoding started from + * the very first frame or from this keyframe. + * Is AV_NOPTS_VALUE if unknown. + * This field is not the display duration of the current packet. + * This field has no meaning if the packet does not have AV_PKT_FLAG_KEY + * set. + * + * The purpose of this field is to allow seeking in streams that have no + * keyframes in the conventional sense. It corresponds to the + * recovery point SEI in H.264 and match_time_delta in NUT. It is also + * essential for some types of subtitle streams to ensure that all + * subtitles are correctly displayed after seeking. + */ + int64_t convergence_duration; +} AVPacket; +#define AV_PKT_FLAG_KEY 0x0001 ///< The packet contains a keyframe +#define AV_PKT_FLAG_CORRUPT 0x0002 ///< The packet content is corrupted + +enum AVSideDataParamChangeFlags { + AV_SIDE_DATA_PARAM_CHANGE_CHANNEL_COUNT = 0x0001, + AV_SIDE_DATA_PARAM_CHANGE_CHANNEL_LAYOUT = 0x0002, + AV_SIDE_DATA_PARAM_CHANGE_SAMPLE_RATE = 0x0004, + AV_SIDE_DATA_PARAM_CHANGE_DIMENSIONS = 0x0008, +}; +/** + * @} + */ + +/** + * Audio Video Frame. + * New fields can be added to the end of AVFRAME with minor version + * bumps. Removal, reordering and changes to existing fields require + * a major version bump. + * sizeof(AVFrame) must not be used outside libav*. + */ +typedef struct AVFrame { +#define AV_NUM_DATA_POINTERS 8 + /** + * pointer to the picture/channel planes. + * This might be different from the first allocated byte + * - encoding: Set by user + * - decoding: set by AVCodecContext.get_buffer() + */ + uint8_t *data[AV_NUM_DATA_POINTERS]; + + /** + * Size, in bytes, of the data for each picture/channel plane. + * + * For audio, only linesize[0] may be set. For planar audio, each channel + * plane must be the same size. + * + * - encoding: Set by user + * - decoding: set by AVCodecContext.get_buffer() + */ + int linesize[AV_NUM_DATA_POINTERS]; + + /** + * pointers to the data planes/channels. + * + * For video, this should simply point to data[]. + * + * For planar audio, each channel has a separate data pointer, and + * linesize[0] contains the size of each channel buffer. + * For packed audio, there is just one data pointer, and linesize[0] + * contains the total size of the buffer for all channels. + * + * Note: Both data and extended_data will always be set by get_buffer(), + * but for planar audio with more channels that can fit in data, + * extended_data must be used by the decoder in order to access all + * channels. + * + * encoding: set by user + * decoding: set by AVCodecContext.get_buffer() + */ + uint8_t **extended_data; + + /** + * width and height of the video frame + * - encoding: unused + * - decoding: Read by user. + */ + int width, height; + + /** + * number of audio samples (per channel) described by this frame + * - encoding: Set by user + * - decoding: Set by libavcodec + */ + int nb_samples; + + /** + * format of the frame, -1 if unknown or unset + * Values correspond to enum AVPixelFormat for video frames, + * enum AVSampleFormat for audio) + * - encoding: unused + * - decoding: Read by user. + */ + int format; + + /** + * 1 -> keyframe, 0-> not + * - encoding: Set by libavcodec. + * - decoding: Set by libavcodec. + */ + int key_frame; + + /** + * Picture type of the frame, see ?_TYPE below. + * - encoding: Set by libavcodec. for coded_picture (and set by user for input). + * - decoding: Set by libavcodec. + */ + enum AVPictureType pict_type; + + /** + * pointer to the first allocated byte of the picture. Can be used in get_buffer/release_buffer. + * This isn't used by libavcodec unless the default get/release_buffer() is used. + * - encoding: + * - decoding: + */ + uint8_t *base[AV_NUM_DATA_POINTERS]; + + /** + * sample aspect ratio for the video frame, 0/1 if unknown/unspecified + * - encoding: unused + * - decoding: Read by user. + */ + AVRational sample_aspect_ratio; + + /** + * presentation timestamp in time_base units (time when frame should be shown to user) + * If AV_NOPTS_VALUE then frame_rate = 1/time_base will be assumed. + * - encoding: MUST be set by user. + * - decoding: Set by libavcodec. + */ + int64_t pts; + + /** + * reordered pts from the last AVPacket that has been input into the decoder + * - encoding: unused + * - decoding: Read by user. + */ + int64_t pkt_pts; + + /** + * dts from the last AVPacket that has been input into the decoder + * - encoding: unused + * - decoding: Read by user. + */ + int64_t pkt_dts; + + /** + * picture number in bitstream order + * - encoding: set by + * - decoding: Set by libavcodec. + */ + int coded_picture_number; + /** + * picture number in display order + * - encoding: set by + * - decoding: Set by libavcodec. + */ + int display_picture_number; + + /** + * quality (between 1 (good) and FF_LAMBDA_MAX (bad)) + * - encoding: Set by libavcodec. for coded_picture (and set by user for input). + * - decoding: Set by libavcodec. + */ + int quality; + + /** + * is this picture used as reference + * The values for this are the same as the MpegEncContext.picture_structure + * variable, that is 1->top field, 2->bottom field, 3->frame/both fields. + * Set to 4 for delayed, non-reference frames. + * - encoding: unused + * - decoding: Set by libavcodec. (before get_buffer() call)). + */ + int reference; + + /** + * QP table + * - encoding: unused + * - decoding: Set by libavcodec. + */ + int8_t *qscale_table; + /** + * QP store stride + * - encoding: unused + * - decoding: Set by libavcodec. + */ + int qstride; + + /** + * + */ + int qscale_type; + + /** + * mbskip_table[mb]>=1 if MB didn't change + * stride= mb_width = (width+15)>>4 + * - encoding: unused + * - decoding: Set by libavcodec. + */ + uint8_t *mbskip_table; + + /** + * motion vector table + * @code + * example: + * int mv_sample_log2= 4 - motion_subsample_log2; + * int mb_width= (width+15)>>4; + * int mv_stride= (mb_width << mv_sample_log2) + 1; + * motion_val[direction][x + y*mv_stride][0->mv_x, 1->mv_y]; + * @endcode + * - encoding: Set by user. + * - decoding: Set by libavcodec. + */ + int16_t (*motion_val[2])[2]; + + /** + * macroblock type table + * mb_type_base + mb_width + 2 + * - encoding: Set by user. + * - decoding: Set by libavcodec. + */ + uint32_t *mb_type; + + /** + * DCT coefficients + * - encoding: unused + * - decoding: Set by libavcodec. + */ + short *dct_coeff; + + /** + * motion reference frame index + * the order in which these are stored can depend on the codec. + * - encoding: Set by user. + * - decoding: Set by libavcodec. + */ + int8_t *ref_index[2]; + + /** + * for some private data of the user + * - encoding: unused + * - decoding: Set by user. + */ + void *opaque; + + /** + * error + * - encoding: Set by libavcodec. if flags&CODEC_FLAG_PSNR. + * - decoding: unused + */ + uint64_t error[AV_NUM_DATA_POINTERS]; + + /** + * type of the buffer (to keep track of who has to deallocate data[*]) + * - encoding: Set by the one who allocates it. + * - decoding: Set by the one who allocates it. + * Note: User allocated (direct rendering) & internal buffers cannot coexist currently. + */ + int type; + + /** + * When decoding, this signals how much the picture must be delayed. + * extra_delay = repeat_pict / (2*fps) + * - encoding: unused + * - decoding: Set by libavcodec. + */ + int repeat_pict; + + /** + * The content of the picture is interlaced. + * - encoding: Set by user. + * - decoding: Set by libavcodec. (default 0) + */ + int interlaced_frame; + + /** + * If the content is interlaced, is top field displayed first. + * - encoding: Set by user. + * - decoding: Set by libavcodec. + */ + int top_field_first; + + /** + * Tell user application that palette has changed from previous frame. + * - encoding: ??? (no palette-enabled encoder yet) + * - decoding: Set by libavcodec. (default 0). + */ + int palette_has_changed; + + /** + * codec suggestion on buffer type if != 0 + * - encoding: unused + * - decoding: Set by libavcodec. (before get_buffer() call)). + */ + int buffer_hints; + + /** + * Pan scan. + * - encoding: Set by user. + * - decoding: Set by libavcodec. + */ + AVPanScan *pan_scan; + + /** + * reordered opaque 64bit (generally an integer or a double precision float + * PTS but can be anything). + * The user sets AVCodecContext.reordered_opaque to represent the input at + * that time, + * the decoder reorders values as needed and sets AVFrame.reordered_opaque + * to exactly one of the values provided by the user through AVCodecContext.reordered_opaque + * @deprecated in favor of pkt_pts + * - encoding: unused + * - decoding: Read by user. + */ + int64_t reordered_opaque; + + /** + * hardware accelerator private data (Libav-allocated) + * - encoding: unused + * - decoding: Set by libavcodec + */ + void *hwaccel_picture_private; + + /** + * the AVCodecContext which ff_thread_get_buffer() was last called on + * - encoding: Set by libavcodec. + * - decoding: Set by libavcodec. + */ + struct AVCodecContext *owner; + + /** + * used by multithreading to store frame-specific info + * - encoding: Set by libavcodec. + * - decoding: Set by libavcodec. + */ + void *thread_opaque; + + /** + * log2 of the size of the block which a single vector in motion_val represents: + * (4->16x16, 3->8x8, 2-> 4x4, 1-> 2x2) + * - encoding: unused + * - decoding: Set by libavcodec. + */ + uint8_t motion_subsample_log2; + + /** + * Sample rate of the audio data. + * + * - encoding: unused + * - decoding: set by get_buffer() + */ + int sample_rate; + + /** + * Channel layout of the audio data. + * + * - encoding: unused + * - decoding: set by get_buffer() + */ + uint64_t channel_layout; +} AVFrame; + +struct AVCodecInternal; + +enum AVFieldOrder { + AV_FIELD_UNKNOWN, + AV_FIELD_PROGRESSIVE, + AV_FIELD_TT, //< Top coded_first, top displayed first + AV_FIELD_BB, //< Bottom coded first, bottom displayed first + AV_FIELD_TB, //< Top coded first, bottom displayed first + AV_FIELD_BT, //< Bottom coded first, top displayed first +}; + +/** + * main external API structure. + * New fields can be added to the end with minor version bumps. + * Removal, reordering and changes to existing fields require a major + * version bump. + * sizeof(AVCodecContext) must not be used outside libav*. + */ +typedef struct AVCodecContext { + /** + * information on struct for av_log + * - set by avcodec_alloc_context3 + */ + const AVClass *av_class; + int log_level_offset; + + enum AVMediaType codec_type; /* see AVMEDIA_TYPE_xxx */ + const struct AVCodec *codec; + char codec_name[32]; + enum AVCodecID codec_id; /* see AV_CODEC_ID_xxx */ + + /** + * fourcc (LSB first, so "ABCD" -> ('D'<<24) + ('C'<<16) + ('B'<<8) + 'A'). + * This is used to work around some encoder bugs. + * A demuxer should set this to what is stored in the field used to identify the codec. + * If there are multiple such fields in a container then the demuxer should choose the one + * which maximizes the information about the used codec. + * If the codec tag field in a container is larger than 32 bits then the demuxer should + * remap the longer ID to 32 bits with a table or other structure. Alternatively a new + * extra_codec_tag + size could be added but for this a clear advantage must be demonstrated + * first. + * - encoding: Set by user, if not then the default based on codec_id will be used. + * - decoding: Set by user, will be converted to uppercase by libavcodec during init. + */ + unsigned int codec_tag; + + /** + * fourcc from the AVI stream header (LSB first, so "ABCD" -> ('D'<<24) + ('C'<<16) + ('B'<<8) + 'A'). + * This is used to work around some encoder bugs. + * - encoding: unused + * - decoding: Set by user, will be converted to uppercase by libavcodec during init. + */ + unsigned int stream_codec_tag; + +#if FF_API_SUB_ID + /** + * @deprecated this field is unused + */ + attribute_deprecated int sub_id; +#endif + + void *priv_data; + + /** + * Private context used for internal data. + * + * Unlike priv_data, this is not codec-specific. It is used in general + * libavcodec functions. + */ + struct AVCodecInternal *internal; + + /** + * Private data of the user, can be used to carry app specific stuff. + * - encoding: Set by user. + * - decoding: Set by user. + */ + void *opaque; + + /** + * the average bitrate + * - encoding: Set by user; unused for constant quantizer encoding. + * - decoding: Set by libavcodec. 0 or some bitrate if this info is available in the stream. + */ + int bit_rate; + + /** + * number of bits the bitstream is allowed to diverge from the reference. + * the reference can be CBR (for CBR pass1) or VBR (for pass2) + * - encoding: Set by user; unused for constant quantizer encoding. + * - decoding: unused + */ + int bit_rate_tolerance; + + /** + * Global quality for codecs which cannot change it per frame. + * This should be proportional to MPEG-1/2/4 qscale. + * - encoding: Set by user. + * - decoding: unused + */ + int global_quality; + + /** + * - encoding: Set by user. + * - decoding: unused + */ + int compression_level; +#define FF_COMPRESSION_DEFAULT -1 + + /** + * CODEC_FLAG_*. + * - encoding: Set by user. + * - decoding: Set by user. + */ + int flags; + + /** + * CODEC_FLAG2_* + * - encoding: Set by user. + * - decoding: Set by user. + */ + int flags2; + + /** + * some codecs need / can use extradata like Huffman tables. + * mjpeg: Huffman tables + * rv10: additional flags + * mpeg4: global headers (they can be in the bitstream or here) + * The allocated memory should be FF_INPUT_BUFFER_PADDING_SIZE bytes larger + * than extradata_size to avoid prolems if it is read with the bitstream reader. + * The bytewise contents of extradata must not depend on the architecture or CPU endianness. + * - encoding: Set/allocated/freed by libavcodec. + * - decoding: Set/allocated/freed by user. + */ + uint8_t *extradata; + int extradata_size; + + /** + * This is the fundamental unit of time (in seconds) in terms + * of which frame timestamps are represented. For fixed-fps content, + * timebase should be 1/framerate and timestamp increments should be + * identically 1. + * - encoding: MUST be set by user. + * - decoding: Set by libavcodec. + */ + AVRational time_base; + + /** + * For some codecs, the time base is closer to the field rate than the frame rate. + * Most notably, H.264 and MPEG-2 specify time_base as half of frame duration + * if no telecine is used ... + * + * Set to time_base ticks per frame. Default 1, e.g., H.264/MPEG-2 set it to 2. + */ + int ticks_per_frame; + + /** + * Encoder delay. + * + * Video: + * Number of frames the decoded output will be delayed relative to the + * encoded input. + * + * Audio: + * For encoding, this is the number of "priming" samples added to the + * beginning of the stream. The decoded output will be delayed by this + * many samples relative to the input to the encoder. Note that this + * field is purely informational and does not directly affect the pts + * output by the encoder, which should always be based on the actual + * presentation time, including any delay. + * For decoding, this is the number of samples the decoder needs to + * output before the decoder's output is valid. When seeking, you should + * start decoding this many samples prior to your desired seek point. + * + * - encoding: Set by libavcodec. + * - decoding: Set by libavcodec. + */ + int delay; + + + /* video only */ + /** + * picture width / height. + * - encoding: MUST be set by user. + * - decoding: Set by libavcodec. + * Note: For compatibility it is possible to set this instead of + * coded_width/height before decoding. + */ + int width, height; + + /** + * Bitstream width / height, may be different from width/height. + * - encoding: unused + * - decoding: Set by user before init if known. Codec should override / dynamically change if needed. + */ + int coded_width, coded_height; + +#define FF_ASPECT_EXTENDED 15 + + /** + * the number of pictures in a group of pictures, or 0 for intra_only + * - encoding: Set by user. + * - decoding: unused + */ + int gop_size; + + /** + * Pixel format, see AV_PIX_FMT_xxx. + * May be set by the demuxer if known from headers. + * May be overriden by the decoder if it knows better. + * - encoding: Set by user. + * - decoding: Set by user if known, overridden by libavcodec if known + */ + enum AVPixelFormat pix_fmt; + + /** + * Motion estimation algorithm used for video coding. + * 1 (zero), 2 (full), 3 (log), 4 (phods), 5 (epzs), 6 (x1), 7 (hex), + * 8 (umh), 9 (iter), 10 (tesa) [7, 8, 10 are x264 specific, 9 is snow specific] + * - encoding: MUST be set by user. + * - decoding: unused + */ + int me_method; + + /** + * If non NULL, 'draw_horiz_band' is called by the libavcodec + * decoder to draw a horizontal band. It improves cache usage. Not + * all codecs can do that. You must check the codec capabilities + * beforehand. + * When multithreading is used, it may be called from multiple threads + * at the same time; threads might draw different parts of the same AVFrame, + * or multiple AVFrames, and there is no guarantee that slices will be drawn + * in order. + * The function is also used by hardware acceleration APIs. + * It is called at least once during frame decoding to pass + * the data needed for hardware render. + * In that mode instead of pixel data, AVFrame points to + * a structure specific to the acceleration API. The application + * reads the structure and can change some fields to indicate progress + * or mark state. + * - encoding: unused + * - decoding: Set by user. + * @param height the height of the slice + * @param y the y position of the slice + * @param type 1->top field, 2->bottom field, 3->frame + * @param offset offset into the AVFrame.data from which the slice should be read + */ + void (*draw_horiz_band)(struct AVCodecContext *s, + const AVFrame *src, int offset[AV_NUM_DATA_POINTERS], + int y, int type, int height); + + /** + * callback to negotiate the pixelFormat + * @param fmt is the list of formats which are supported by the codec, + * it is terminated by -1 as 0 is a valid format, the formats are ordered by quality. + * The first is always the native one. + * @return the chosen format + * - encoding: unused + * - decoding: Set by user, if not set the native format will be chosen. + */ + enum AVPixelFormat (*get_format)(struct AVCodecContext *s, const enum AVPixelFormat * fmt); + + /** + * maximum number of B-frames between non-B-frames + * Note: The output will be delayed by max_b_frames+1 relative to the input. + * - encoding: Set by user. + * - decoding: unused + */ + int max_b_frames; + + /** + * qscale factor between IP and B-frames + * If > 0 then the last P-frame quantizer will be used (q= lastp_q*factor+offset). + * If < 0 then normal ratecontrol will be done (q= -normal_q*factor+offset). + * - encoding: Set by user. + * - decoding: unused + */ + float b_quant_factor; + + /** obsolete FIXME remove */ + int rc_strategy; +#define FF_RC_STRATEGY_XVID 1 + + int b_frame_strategy; + +#if FF_API_MPV_GLOBAL_OPTS + /** + * luma single coefficient elimination threshold + * - encoding: Set by user. + * - decoding: unused + */ + attribute_deprecated int luma_elim_threshold; + + /** + * chroma single coeff elimination threshold + * - encoding: Set by user. + * - decoding: unused + */ + attribute_deprecated int chroma_elim_threshold; +#endif + + /** + * qscale offset between IP and B-frames + * - encoding: Set by user. + * - decoding: unused + */ + float b_quant_offset; + + /** + * Size of the frame reordering buffer in the decoder. + * For MPEG-2 it is 1 IPB or 0 low delay IP. + * - encoding: Set by libavcodec. + * - decoding: Set by libavcodec. + */ + int has_b_frames; + + /** + * 0-> h263 quant 1-> mpeg quant + * - encoding: Set by user. + * - decoding: unused + */ + int mpeg_quant; + + /** + * qscale factor between P and I-frames + * If > 0 then the last p frame quantizer will be used (q= lastp_q*factor+offset). + * If < 0 then normal ratecontrol will be done (q= -normal_q*factor+offset). + * - encoding: Set by user. + * - decoding: unused + */ + float i_quant_factor; + + /** + * qscale offset between P and I-frames + * - encoding: Set by user. + * - decoding: unused + */ + float i_quant_offset; + + /** + * luminance masking (0-> disabled) + * - encoding: Set by user. + * - decoding: unused + */ + float lumi_masking; + + /** + * temporary complexity masking (0-> disabled) + * - encoding: Set by user. + * - decoding: unused + */ + float temporal_cplx_masking; + + /** + * spatial complexity masking (0-> disabled) + * - encoding: Set by user. + * - decoding: unused + */ + float spatial_cplx_masking; + + /** + * p block masking (0-> disabled) + * - encoding: Set by user. + * - decoding: unused + */ + float p_masking; + + /** + * darkness masking (0-> disabled) + * - encoding: Set by user. + * - decoding: unused + */ + float dark_masking; + + /** + * slice count + * - encoding: Set by libavcodec. + * - decoding: Set by user (or 0). + */ + int slice_count; + /** + * prediction method (needed for huffyuv) + * - encoding: Set by user. + * - decoding: unused + */ + int prediction_method; +#define FF_PRED_LEFT 0 +#define FF_PRED_PLANE 1 +#define FF_PRED_MEDIAN 2 + + /** + * slice offsets in the frame in bytes + * - encoding: Set/allocated by libavcodec. + * - decoding: Set/allocated by user (or NULL). + */ + int *slice_offset; + + /** + * sample aspect ratio (0 if unknown) + * That is the width of a pixel divided by the height of the pixel. + * Numerator and denominator must be relatively prime and smaller than 256 for some video standards. + * - encoding: Set by user. + * - decoding: Set by libavcodec. + */ + AVRational sample_aspect_ratio; + + /** + * motion estimation comparison function + * - encoding: Set by user. + * - decoding: unused + */ + int me_cmp; + /** + * subpixel motion estimation comparison function + * - encoding: Set by user. + * - decoding: unused + */ + int me_sub_cmp; + /** + * macroblock comparison function (not supported yet) + * - encoding: Set by user. + * - decoding: unused + */ + int mb_cmp; + /** + * interlaced DCT comparison function + * - encoding: Set by user. + * - decoding: unused + */ + int ildct_cmp; +#define FF_CMP_SAD 0 +#define FF_CMP_SSE 1 +#define FF_CMP_SATD 2 +#define FF_CMP_DCT 3 +#define FF_CMP_PSNR 4 +#define FF_CMP_BIT 5 +#define FF_CMP_RD 6 +#define FF_CMP_ZERO 7 +#define FF_CMP_VSAD 8 +#define FF_CMP_VSSE 9 +#define FF_CMP_NSSE 10 +#define FF_CMP_W53 11 +#define FF_CMP_W97 12 +#define FF_CMP_DCTMAX 13 +#define FF_CMP_DCT264 14 +#define FF_CMP_CHROMA 256 + + /** + * ME diamond size & shape + * - encoding: Set by user. + * - decoding: unused + */ + int dia_size; + + /** + * amount of previous MV predictors (2a+1 x 2a+1 square) + * - encoding: Set by user. + * - decoding: unused + */ + int last_predictor_count; + + /** + * prepass for motion estimation + * - encoding: Set by user. + * - decoding: unused + */ + int pre_me; + + /** + * motion estimation prepass comparison function + * - encoding: Set by user. + * - decoding: unused + */ + int me_pre_cmp; + + /** + * ME prepass diamond size & shape + * - encoding: Set by user. + * - decoding: unused + */ + int pre_dia_size; + + /** + * subpel ME quality + * - encoding: Set by user. + * - decoding: unused + */ + int me_subpel_quality; + + /** + * DTG active format information (additional aspect ratio + * information only used in DVB MPEG-2 transport streams) + * 0 if not set. + * + * - encoding: unused + * - decoding: Set by decoder. + */ + int dtg_active_format; +#define FF_DTG_AFD_SAME 8 +#define FF_DTG_AFD_4_3 9 +#define FF_DTG_AFD_16_9 10 +#define FF_DTG_AFD_14_9 11 +#define FF_DTG_AFD_4_3_SP_14_9 13 +#define FF_DTG_AFD_16_9_SP_14_9 14 +#define FF_DTG_AFD_SP_4_3 15 + + /** + * maximum motion estimation search range in subpel units + * If 0 then no limit. + * + * - encoding: Set by user. + * - decoding: unused + */ + int me_range; + + /** + * intra quantizer bias + * - encoding: Set by user. + * - decoding: unused + */ + int intra_quant_bias; +#define FF_DEFAULT_QUANT_BIAS 999999 + + /** + * inter quantizer bias + * - encoding: Set by user. + * - decoding: unused + */ + int inter_quant_bias; + +#if FF_API_COLOR_TABLE_ID + /** + * color table ID + * - encoding: unused + * - decoding: Which clrtable should be used for 8bit RGB images. + * Tables have to be stored somewhere. FIXME + */ + attribute_deprecated int color_table_id; +#endif + + /** + * slice flags + * - encoding: unused + * - decoding: Set by user. + */ + int slice_flags; +#define SLICE_FLAG_CODED_ORDER 0x0001 ///< draw_horiz_band() is called in coded order instead of display +#define SLICE_FLAG_ALLOW_FIELD 0x0002 ///< allow draw_horiz_band() with field slices (MPEG2 field pics) +#define SLICE_FLAG_ALLOW_PLANE 0x0004 ///< allow draw_horiz_band() with 1 component at a time (SVQ1) + + /** + * XVideo Motion Acceleration + * - encoding: forbidden + * - decoding: set by decoder + */ + int xvmc_acceleration; + + /** + * macroblock decision mode + * - encoding: Set by user. + * - decoding: unused + */ + int mb_decision; +#define FF_MB_DECISION_SIMPLE 0 ///< uses mb_cmp +#define FF_MB_DECISION_BITS 1 ///< chooses the one which needs the fewest bits +#define FF_MB_DECISION_RD 2 ///< rate distortion + + /** + * custom intra quantization matrix + * - encoding: Set by user, can be NULL. + * - decoding: Set by libavcodec. + */ + uint16_t *intra_matrix; + + /** + * custom inter quantization matrix + * - encoding: Set by user, can be NULL. + * - decoding: Set by libavcodec. + */ + uint16_t *inter_matrix; + + /** + * scene change detection threshold + * 0 is default, larger means fewer detected scene changes. + * - encoding: Set by user. + * - decoding: unused + */ + int scenechange_threshold; + + /** + * noise reduction strength + * - encoding: Set by user. + * - decoding: unused + */ + int noise_reduction; + +#if FF_API_INTER_THRESHOLD + /** + * @deprecated this field is unused + */ + attribute_deprecated int inter_threshold; +#endif + +#if FF_API_MPV_GLOBAL_OPTS + /** + * @deprecated use mpegvideo private options instead + */ + attribute_deprecated int quantizer_noise_shaping; +#endif + + /** + * Motion estimation threshold below which no motion estimation is + * performed, but instead the user specified motion vectors are used. + * + * - encoding: Set by user. + * - decoding: unused + */ + int me_threshold; + + /** + * Macroblock threshold below which the user specified macroblock types will be used. + * - encoding: Set by user. + * - decoding: unused + */ + int mb_threshold; + + /** + * precision of the intra DC coefficient - 8 + * - encoding: Set by user. + * - decoding: unused + */ + int intra_dc_precision; + + /** + * Number of macroblock rows at the top which are skipped. + * - encoding: unused + * - decoding: Set by user. + */ + int skip_top; + + /** + * Number of macroblock rows at the bottom which are skipped. + * - encoding: unused + * - decoding: Set by user. + */ + int skip_bottom; + + /** + * Border processing masking, raises the quantizer for mbs on the borders + * of the picture. + * - encoding: Set by user. + * - decoding: unused + */ + float border_masking; + + /** + * minimum MB lagrange multipler + * - encoding: Set by user. + * - decoding: unused + */ + int mb_lmin; + + /** + * maximum MB lagrange multipler + * - encoding: Set by user. + * - decoding: unused + */ + int mb_lmax; + + /** + * + * - encoding: Set by user. + * - decoding: unused + */ + int me_penalty_compensation; + + /** + * + * - encoding: Set by user. + * - decoding: unused + */ + int bidir_refine; + + /** + * + * - encoding: Set by user. + * - decoding: unused + */ + int brd_scale; + + /** + * minimum GOP size + * - encoding: Set by user. + * - decoding: unused + */ + int keyint_min; + + /** + * number of reference frames + * - encoding: Set by user. + * - decoding: Set by lavc. + */ + int refs; + + /** + * chroma qp offset from luma + * - encoding: Set by user. + * - decoding: unused + */ + int chromaoffset; + + /** + * Multiplied by qscale for each frame and added to scene_change_score. + * - encoding: Set by user. + * - decoding: unused + */ + int scenechange_factor; + + /** + * + * Note: Value depends upon the compare function used for fullpel ME. + * - encoding: Set by user. + * - decoding: unused + */ + int mv0_threshold; + + /** + * Adjust sensitivity of b_frame_strategy 1. + * - encoding: Set by user. + * - decoding: unused + */ + int b_sensitivity; + + /** + * Chromaticity coordinates of the source primaries. + * - encoding: Set by user + * - decoding: Set by libavcodec + */ + enum AVColorPrimaries color_primaries; + + /** + * Color Transfer Characteristic. + * - encoding: Set by user + * - decoding: Set by libavcodec + */ + enum AVColorTransferCharacteristic color_trc; + + /** + * YUV colorspace type. + * - encoding: Set by user + * - decoding: Set by libavcodec + */ + enum AVColorSpace colorspace; + + /** + * MPEG vs JPEG YUV range. + * - encoding: Set by user + * - decoding: Set by libavcodec + */ + enum AVColorRange color_range; + + /** + * This defines the location of chroma samples. + * - encoding: Set by user + * - decoding: Set by libavcodec + */ + enum AVChromaLocation chroma_sample_location; + + /** + * Number of slices. + * Indicates number of picture subdivisions. Used for parallelized + * decoding. + * - encoding: Set by user + * - decoding: unused + */ + int slices; + + /** Field order + * - encoding: set by libavcodec + * - decoding: Set by libavcodec + */ + enum AVFieldOrder field_order; + + /* audio only */ + int sample_rate; ///< samples per second + int channels; ///< number of audio channels + + /** + * audio sample format + * - encoding: Set by user. + * - decoding: Set by libavcodec. + */ + enum AVSampleFormat sample_fmt; ///< sample format + + /* The following data should not be initialized. */ + /** + * Samples per packet, initialized when calling 'init'. + */ + int frame_size; + + /** + * Frame counter, set by libavcodec. + * + * - decoding: total number of frames returned from the decoder so far. + * - encoding: total number of frames passed to the encoder so far. + * + * @note the counter is not incremented if encoding/decoding resulted in + * an error. + */ + int frame_number; + + /** + * number of bytes per packet if constant and known or 0 + * Used by some WAV based audio codecs. + */ + int block_align; + + /** + * Audio cutoff bandwidth (0 means "automatic") + * - encoding: Set by user. + * - decoding: unused + */ + int cutoff; + +#if FF_API_REQUEST_CHANNELS + /** + * Decoder should decode to this many channels if it can (0 for default) + * - encoding: unused + * - decoding: Set by user. + * @deprecated Deprecated in favor of request_channel_layout. + */ + int request_channels; +#endif + + /** + * Audio channel layout. + * - encoding: set by user. + * - decoding: set by libavcodec. + */ + uint64_t channel_layout; + + /** + * Request decoder to use this channel layout if it can (0 for default) + * - encoding: unused + * - decoding: Set by user. + */ + uint64_t request_channel_layout; + + /** + * Type of service that the audio stream conveys. + * - encoding: Set by user. + * - decoding: Set by libavcodec. + */ + enum AVAudioServiceType audio_service_type; + + /** + * Used to request a sample format from the decoder. + * - encoding: unused. + * - decoding: Set by user. + */ + enum AVSampleFormat request_sample_fmt; + + /** + * Called at the beginning of each frame to get a buffer for it. + * + * The function will set AVFrame.data[], AVFrame.linesize[]. + * AVFrame.extended_data[] must also be set, but it should be the same as + * AVFrame.data[] except for planar audio with more channels than can fit + * in AVFrame.data[]. In that case, AVFrame.data[] shall still contain as + * many data pointers as it can hold. + * + * if CODEC_CAP_DR1 is not set then get_buffer() must call + * avcodec_default_get_buffer() instead of providing buffers allocated by + * some other means. + * + * AVFrame.data[] should be 32- or 16-byte-aligned unless the CPU doesn't + * need it. avcodec_default_get_buffer() aligns the output buffer properly, + * but if get_buffer() is overridden then alignment considerations should + * be taken into account. + * + * @see avcodec_default_get_buffer() + * + * Video: + * + * If pic.reference is set then the frame will be read later by libavcodec. + * avcodec_align_dimensions2() should be used to find the required width and + * height, as they normally need to be rounded up to the next multiple of 16. + * + * If frame multithreading is used and thread_safe_callbacks is set, + * it may be called from a different thread, but not from more than one at + * once. Does not need to be reentrant. + * + * @see release_buffer(), reget_buffer() + * @see avcodec_align_dimensions2() + * + * Audio: + * + * Decoders request a buffer of a particular size by setting + * AVFrame.nb_samples prior to calling get_buffer(). The decoder may, + * however, utilize only part of the buffer by setting AVFrame.nb_samples + * to a smaller value in the output frame. + * + * Decoders cannot use the buffer after returning from + * avcodec_decode_audio4(), so they will not call release_buffer(), as it + * is assumed to be released immediately upon return. + * + * As a convenience, av_samples_get_buffer_size() and + * av_samples_fill_arrays() in libavutil may be used by custom get_buffer() + * functions to find the required data size and to fill data pointers and + * linesize. In AVFrame.linesize, only linesize[0] may be set for audio + * since all planes must be the same size. + * + * @see av_samples_get_buffer_size(), av_samples_fill_arrays() + * + * - encoding: unused + * - decoding: Set by libavcodec, user can override. + */ + int (*get_buffer)(struct AVCodecContext *c, AVFrame *pic); + + /** + * Called to release buffers which were allocated with get_buffer. + * A released buffer can be reused in get_buffer(). + * pic.data[*] must be set to NULL. + * May be called from a different thread if frame multithreading is used, + * but not by more than one thread at once, so does not need to be reentrant. + * - encoding: unused + * - decoding: Set by libavcodec, user can override. + */ + void (*release_buffer)(struct AVCodecContext *c, AVFrame *pic); + + /** + * Called at the beginning of a frame to get cr buffer for it. + * Buffer type (size, hints) must be the same. libavcodec won't check it. + * libavcodec will pass previous buffer in pic, function should return + * same buffer or new buffer with old frame "painted" into it. + * If pic.data[0] == NULL must behave like get_buffer(). + * if CODEC_CAP_DR1 is not set then reget_buffer() must call + * avcodec_default_reget_buffer() instead of providing buffers allocated by + * some other means. + * - encoding: unused + * - decoding: Set by libavcodec, user can override. + */ + int (*reget_buffer)(struct AVCodecContext *c, AVFrame *pic); + + + /* - encoding parameters */ + float qcompress; ///< amount of qscale change between easy & hard scenes (0.0-1.0) + float qblur; ///< amount of qscale smoothing over time (0.0-1.0) + + /** + * minimum quantizer + * - encoding: Set by user. + * - decoding: unused + */ + int qmin; + + /** + * maximum quantizer + * - encoding: Set by user. + * - decoding: unused + */ + int qmax; + + /** + * maximum quantizer difference between frames + * - encoding: Set by user. + * - decoding: unused + */ + int max_qdiff; + + /** + * ratecontrol qmin qmax limiting method + * 0-> clipping, 1-> use a nice continous function to limit qscale wthin qmin/qmax. + * - encoding: Set by user. + * - decoding: unused + */ + float rc_qsquish; + + float rc_qmod_amp; + int rc_qmod_freq; + + /** + * decoder bitstream buffer size + * - encoding: Set by user. + * - decoding: unused + */ + int rc_buffer_size; + + /** + * ratecontrol override, see RcOverride + * - encoding: Allocated/set/freed by user. + * - decoding: unused + */ + int rc_override_count; + RcOverride *rc_override; + + /** + * rate control equation + * - encoding: Set by user + * - decoding: unused + */ + const char *rc_eq; + + /** + * maximum bitrate + * - encoding: Set by user. + * - decoding: unused + */ + int rc_max_rate; + + /** + * minimum bitrate + * - encoding: Set by user. + * - decoding: unused + */ + int rc_min_rate; + + float rc_buffer_aggressivity; + + /** + * initial complexity for pass1 ratecontrol + * - encoding: Set by user. + * - decoding: unused + */ + float rc_initial_cplx; + + /** + * Ratecontrol attempt to use, at maximum, of what can be used without an underflow. + * - encoding: Set by user. + * - decoding: unused. + */ + float rc_max_available_vbv_use; + + /** + * Ratecontrol attempt to use, at least, times the amount needed to prevent a vbv overflow. + * - encoding: Set by user. + * - decoding: unused. + */ + float rc_min_vbv_overflow_use; + + /** + * Number of bits which should be loaded into the rc buffer before decoding starts. + * - encoding: Set by user. + * - decoding: unused + */ + int rc_initial_buffer_occupancy; + +#define FF_CODER_TYPE_VLC 0 +#define FF_CODER_TYPE_AC 1 +#define FF_CODER_TYPE_RAW 2 +#define FF_CODER_TYPE_RLE 3 +#define FF_CODER_TYPE_DEFLATE 4 + /** + * coder type + * - encoding: Set by user. + * - decoding: unused + */ + int coder_type; + + /** + * context model + * - encoding: Set by user. + * - decoding: unused + */ + int context_model; + + /** + * minimum Lagrange multipler + * - encoding: Set by user. + * - decoding: unused + */ + int lmin; + + /** + * maximum Lagrange multipler + * - encoding: Set by user. + * - decoding: unused + */ + int lmax; + + /** + * frame skip threshold + * - encoding: Set by user. + * - decoding: unused + */ + int frame_skip_threshold; + + /** + * frame skip factor + * - encoding: Set by user. + * - decoding: unused + */ + int frame_skip_factor; + + /** + * frame skip exponent + * - encoding: Set by user. + * - decoding: unused + */ + int frame_skip_exp; + + /** + * frame skip comparison function + * - encoding: Set by user. + * - decoding: unused + */ + int frame_skip_cmp; + + /** + * trellis RD quantization + * - encoding: Set by user. + * - decoding: unused + */ + int trellis; + + /** + * - encoding: Set by user. + * - decoding: unused + */ + int min_prediction_order; + + /** + * - encoding: Set by user. + * - decoding: unused + */ + int max_prediction_order; + + /** + * GOP timecode frame start number, in non drop frame format + * - encoding: Set by user. + * - decoding: unused + */ + int64_t timecode_frame_start; + + /* The RTP callback: This function is called */ + /* every time the encoder has a packet to send. */ + /* It depends on the encoder if the data starts */ + /* with a Start Code (it should). H.263 does. */ + /* mb_nb contains the number of macroblocks */ + /* encoded in the RTP payload. */ + void (*rtp_callback)(struct AVCodecContext *avctx, void *data, int size, int mb_nb); + + int rtp_payload_size; /* The size of the RTP payload: the coder will */ + /* do its best to deliver a chunk with size */ + /* below rtp_payload_size, the chunk will start */ + /* with a start code on some codecs like H.263. */ + /* This doesn't take account of any particular */ + /* headers inside the transmitted RTP payload. */ + + /* statistics, used for 2-pass encoding */ + int mv_bits; + int header_bits; + int i_tex_bits; + int p_tex_bits; + int i_count; + int p_count; + int skip_count; + int misc_bits; + + /** + * number of bits used for the previously encoded frame + * - encoding: Set by libavcodec. + * - decoding: unused + */ + int frame_bits; + + /** + * pass1 encoding statistics output buffer + * - encoding: Set by libavcodec. + * - decoding: unused + */ + char *stats_out; + + /** + * pass2 encoding statistics input buffer + * Concatenated stuff from stats_out of pass1 should be placed here. + * - encoding: Allocated/set/freed by user. + * - decoding: unused + */ + char *stats_in; + + /** + * Work around bugs in encoders which sometimes cannot be detected automatically. + * - encoding: Set by user + * - decoding: Set by user + */ + int workaround_bugs; +#define FF_BUG_AUTODETECT 1 ///< autodetection +#define FF_BUG_OLD_MSMPEG4 2 +#define FF_BUG_XVID_ILACE 4 +#define FF_BUG_UMP4 8 +#define FF_BUG_NO_PADDING 16 +#define FF_BUG_AMV 32 +#define FF_BUG_AC_VLC 0 ///< Will be removed, libavcodec can now handle these non-compliant files by default. +#define FF_BUG_QPEL_CHROMA 64 +#define FF_BUG_STD_QPEL 128 +#define FF_BUG_QPEL_CHROMA2 256 +#define FF_BUG_DIRECT_BLOCKSIZE 512 +#define FF_BUG_EDGE 1024 +#define FF_BUG_HPEL_CHROMA 2048 +#define FF_BUG_DC_CLIP 4096 +#define FF_BUG_MS 8192 ///< Work around various bugs in Microsoft's broken decoders. +#define FF_BUG_TRUNCATED 16384 + + /** + * strictly follow the standard (MPEG4, ...). + * - encoding: Set by user. + * - decoding: Set by user. + * Setting this to STRICT or higher means the encoder and decoder will + * generally do stupid things, whereas setting it to unofficial or lower + * will mean the encoder might produce output that is not supported by all + * spec-compliant decoders. Decoders don't differentiate between normal, + * unofficial and experimental (that is, they always try to decode things + * when they can) unless they are explicitly asked to behave stupidly + * (=strictly conform to the specs) + */ + int strict_std_compliance; +#define FF_COMPLIANCE_VERY_STRICT 2 ///< Strictly conform to an older more strict version of the spec or reference software. +#define FF_COMPLIANCE_STRICT 1 ///< Strictly conform to all the things in the spec no matter what consequences. +#define FF_COMPLIANCE_NORMAL 0 +#define FF_COMPLIANCE_UNOFFICIAL -1 ///< Allow unofficial extensions +#define FF_COMPLIANCE_EXPERIMENTAL -2 ///< Allow nonstandardized experimental things. + + /** + * error concealment flags + * - encoding: unused + * - decoding: Set by user. + */ + int error_concealment; +#define FF_EC_GUESS_MVS 1 +#define FF_EC_DEBLOCK 2 + + /** + * debug + * - encoding: Set by user. + * - decoding: Set by user. + */ + int debug; +#define FF_DEBUG_PICT_INFO 1 +#define FF_DEBUG_RC 2 +#define FF_DEBUG_BITSTREAM 4 +#define FF_DEBUG_MB_TYPE 8 +#define FF_DEBUG_QP 16 +#define FF_DEBUG_MV 32 +#define FF_DEBUG_DCT_COEFF 0x00000040 +#define FF_DEBUG_SKIP 0x00000080 +#define FF_DEBUG_STARTCODE 0x00000100 +#define FF_DEBUG_PTS 0x00000200 +#define FF_DEBUG_ER 0x00000400 +#define FF_DEBUG_MMCO 0x00000800 +#define FF_DEBUG_BUGS 0x00001000 +#define FF_DEBUG_VIS_QP 0x00002000 +#define FF_DEBUG_VIS_MB_TYPE 0x00004000 +#define FF_DEBUG_BUFFERS 0x00008000 +#define FF_DEBUG_THREADS 0x00010000 + + /** + * debug + * - encoding: Set by user. + * - decoding: Set by user. + */ + int debug_mv; +#define FF_DEBUG_VIS_MV_P_FOR 0x00000001 //visualize forward predicted MVs of P frames +#define FF_DEBUG_VIS_MV_B_FOR 0x00000002 //visualize forward predicted MVs of B frames +#define FF_DEBUG_VIS_MV_B_BACK 0x00000004 //visualize backward predicted MVs of B frames + + /** + * Error recognition; may misdetect some more or less valid parts as errors. + * - encoding: unused + * - decoding: Set by user. + */ + int err_recognition; +#define AV_EF_CRCCHECK (1<<0) +#define AV_EF_BITSTREAM (1<<1) +#define AV_EF_BUFFER (1<<2) +#define AV_EF_EXPLODE (1<<3) + + /** + * opaque 64bit number (generally a PTS) that will be reordered and + * output in AVFrame.reordered_opaque + * @deprecated in favor of pkt_pts + * - encoding: unused + * - decoding: Set by user. + */ + int64_t reordered_opaque; + + /** + * Hardware accelerator in use + * - encoding: unused. + * - decoding: Set by libavcodec + */ + struct AVHWAccel *hwaccel; + + /** + * Hardware accelerator context. + * For some hardware accelerators, a global context needs to be + * provided by the user. In that case, this holds display-dependent + * data Libav cannot instantiate itself. Please refer to the + * Libav HW accelerator documentation to know how to fill this + * is. e.g. for VA API, this is a struct vaapi_context. + * - encoding: unused + * - decoding: Set by user + */ + void *hwaccel_context; + + /** + * error + * - encoding: Set by libavcodec if flags&CODEC_FLAG_PSNR. + * - decoding: unused + */ + uint64_t error[AV_NUM_DATA_POINTERS]; + + /** + * DCT algorithm, see FF_DCT_* below + * - encoding: Set by user. + * - decoding: unused + */ + int dct_algo; +#define FF_DCT_AUTO 0 +#define FF_DCT_FASTINT 1 +#define FF_DCT_INT 2 +#define FF_DCT_MMX 3 +#define FF_DCT_ALTIVEC 5 +#define FF_DCT_FAAN 6 + + /** + * IDCT algorithm, see FF_IDCT_* below. + * - encoding: Set by user. + * - decoding: Set by user. + */ + int idct_algo; +#define FF_IDCT_AUTO 0 +#define FF_IDCT_INT 1 +#define FF_IDCT_SIMPLE 2 +#define FF_IDCT_SIMPLEMMX 3 +#if FF_API_LIBMPEG2 +#define FF_IDCT_LIBMPEG2MMX 4 +#endif +#if FF_API_MMI +#define FF_IDCT_MMI 5 +#endif +#define FF_IDCT_ARM 7 +#define FF_IDCT_ALTIVEC 8 +#define FF_IDCT_SH4 9 +#define FF_IDCT_SIMPLEARM 10 +#define FF_IDCT_H264 11 +#define FF_IDCT_VP3 12 +#define FF_IDCT_IPP 13 +#define FF_IDCT_XVIDMMX 14 +#define FF_IDCT_CAVS 15 +#define FF_IDCT_SIMPLEARMV5TE 16 +#define FF_IDCT_SIMPLEARMV6 17 +#define FF_IDCT_SIMPLEVIS 18 +#define FF_IDCT_WMV2 19 +#define FF_IDCT_FAAN 20 +#define FF_IDCT_EA 21 +#define FF_IDCT_SIMPLENEON 22 +#define FF_IDCT_SIMPLEALPHA 23 +#define FF_IDCT_BINK 24 + +#if FF_API_DSP_MASK + /** + * Unused. + * @deprecated use av_set_cpu_flags_mask() instead. + */ + attribute_deprecated unsigned dsp_mask; +#endif + + /** + * bits per sample/pixel from the demuxer (needed for huffyuv). + * - encoding: Set by libavcodec. + * - decoding: Set by user. + */ + int bits_per_coded_sample; + + /** + * Bits per sample/pixel of internal libavcodec pixel/sample format. + * - encoding: set by user. + * - decoding: set by libavcodec. + */ + int bits_per_raw_sample; + + /** + * low resolution decoding, 1-> 1/2 size, 2->1/4 size + * - encoding: unused + * - decoding: Set by user. + */ + attribute_deprecated int lowres; + + /** + * the picture in the bitstream + * - encoding: Set by libavcodec. + * - decoding: Set by libavcodec. + */ + AVFrame *coded_frame; + + /** + * thread count + * is used to decide how many independent tasks should be passed to execute() + * - encoding: Set by user. + * - decoding: Set by user. + */ + int thread_count; + + /** + * Which multithreading methods to use. + * Use of FF_THREAD_FRAME will increase decoding delay by one frame per thread, + * so clients which cannot provide future frames should not use it. + * + * - encoding: Set by user, otherwise the default is used. + * - decoding: Set by user, otherwise the default is used. + */ + int thread_type; +#define FF_THREAD_FRAME 1 ///< Decode more than one frame at once +#define FF_THREAD_SLICE 2 ///< Decode more than one part of a single frame at once + + /** + * Which multithreading methods are in use by the codec. + * - encoding: Set by libavcodec. + * - decoding: Set by libavcodec. + */ + int active_thread_type; + + /** + * Set by the client if its custom get_buffer() callback can be called + * synchronously from another thread, which allows faster multithreaded decoding. + * draw_horiz_band() will be called from other threads regardless of this setting. + * Ignored if the default get_buffer() is used. + * - encoding: Set by user. + * - decoding: Set by user. + */ + int thread_safe_callbacks; + + /** + * The codec may call this to execute several independent things. + * It will return only after finishing all tasks. + * The user may replace this with some multithreaded implementation, + * the default implementation will execute the parts serially. + * @param count the number of things to execute + * - encoding: Set by libavcodec, user can override. + * - decoding: Set by libavcodec, user can override. + */ + int (*execute)(struct AVCodecContext *c, int (*func)(struct AVCodecContext *c2, void *arg), void *arg2, int *ret, int count, int size); + + /** + * The codec may call this to execute several independent things. + * It will return only after finishing all tasks. + * The user may replace this with some multithreaded implementation, + * the default implementation will execute the parts serially. + * Also see avcodec_thread_init and e.g. the --enable-pthread configure option. + * @param c context passed also to func + * @param count the number of things to execute + * @param arg2 argument passed unchanged to func + * @param ret return values of executed functions, must have space for "count" values. May be NULL. + * @param func function that will be called count times, with jobnr from 0 to count-1. + * threadnr will be in the range 0 to c->thread_count-1 < MAX_THREADS and so that no + * two instances of func executing at the same time will have the same threadnr. + * @return always 0 currently, but code should handle a future improvement where when any call to func + * returns < 0 no further calls to func may be done and < 0 is returned. + * - encoding: Set by libavcodec, user can override. + * - decoding: Set by libavcodec, user can override. + */ + int (*execute2)(struct AVCodecContext *c, int (*func)(struct AVCodecContext *c2, void *arg, int jobnr, int threadnr), void *arg2, int *ret, int count); + + /** + * thread opaque + * Can be used by execute() to store some per AVCodecContext stuff. + * - encoding: set by execute() + * - decoding: set by execute() + */ + void *thread_opaque; + + /** + * noise vs. sse weight for the nsse comparsion function + * - encoding: Set by user. + * - decoding: unused + */ + int nsse_weight; + + /** + * profile + * - encoding: Set by user. + * - decoding: Set by libavcodec. + */ + int profile; +#define FF_PROFILE_UNKNOWN -99 +#define FF_PROFILE_RESERVED -100 + +#define FF_PROFILE_AAC_MAIN 0 +#define FF_PROFILE_AAC_LOW 1 +#define FF_PROFILE_AAC_SSR 2 +#define FF_PROFILE_AAC_LTP 3 +#define FF_PROFILE_AAC_HE 4 +#define FF_PROFILE_AAC_HE_V2 28 +#define FF_PROFILE_AAC_LD 22 +#define FF_PROFILE_AAC_ELD 38 + +#define FF_PROFILE_DTS 20 +#define FF_PROFILE_DTS_ES 30 +#define FF_PROFILE_DTS_96_24 40 +#define FF_PROFILE_DTS_HD_HRA 50 +#define FF_PROFILE_DTS_HD_MA 60 + +#define FF_PROFILE_MPEG2_422 0 +#define FF_PROFILE_MPEG2_HIGH 1 +#define FF_PROFILE_MPEG2_SS 2 +#define FF_PROFILE_MPEG2_SNR_SCALABLE 3 +#define FF_PROFILE_MPEG2_MAIN 4 +#define FF_PROFILE_MPEG2_SIMPLE 5 + +#define FF_PROFILE_H264_CONSTRAINED (1<<9) // 8+1; constraint_set1_flag +#define FF_PROFILE_H264_INTRA (1<<11) // 8+3; constraint_set3_flag + +#define FF_PROFILE_H264_BASELINE 66 +#define FF_PROFILE_H264_CONSTRAINED_BASELINE (66|FF_PROFILE_H264_CONSTRAINED) +#define FF_PROFILE_H264_MAIN 77 +#define FF_PROFILE_H264_EXTENDED 88 +#define FF_PROFILE_H264_HIGH 100 +#define FF_PROFILE_H264_HIGH_10 110 +#define FF_PROFILE_H264_HIGH_10_INTRA (110|FF_PROFILE_H264_INTRA) +#define FF_PROFILE_H264_HIGH_422 122 +#define FF_PROFILE_H264_HIGH_422_INTRA (122|FF_PROFILE_H264_INTRA) +#define FF_PROFILE_H264_HIGH_444 144 +#define FF_PROFILE_H264_HIGH_444_PREDICTIVE 244 +#define FF_PROFILE_H264_HIGH_444_INTRA (244|FF_PROFILE_H264_INTRA) +#define FF_PROFILE_H264_CAVLC_444 44 + +#define FF_PROFILE_VC1_SIMPLE 0 +#define FF_PROFILE_VC1_MAIN 1 +#define FF_PROFILE_VC1_COMPLEX 2 +#define FF_PROFILE_VC1_ADVANCED 3 + +#define FF_PROFILE_MPEG4_SIMPLE 0 +#define FF_PROFILE_MPEG4_SIMPLE_SCALABLE 1 +#define FF_PROFILE_MPEG4_CORE 2 +#define FF_PROFILE_MPEG4_MAIN 3 +#define FF_PROFILE_MPEG4_N_BIT 4 +#define FF_PROFILE_MPEG4_SCALABLE_TEXTURE 5 +#define FF_PROFILE_MPEG4_SIMPLE_FACE_ANIMATION 6 +#define FF_PROFILE_MPEG4_BASIC_ANIMATED_TEXTURE 7 +#define FF_PROFILE_MPEG4_HYBRID 8 +#define FF_PROFILE_MPEG4_ADVANCED_REAL_TIME 9 +#define FF_PROFILE_MPEG4_CORE_SCALABLE 10 +#define FF_PROFILE_MPEG4_ADVANCED_CODING 11 +#define FF_PROFILE_MPEG4_ADVANCED_CORE 12 +#define FF_PROFILE_MPEG4_ADVANCED_SCALABLE_TEXTURE 13 +#define FF_PROFILE_MPEG4_SIMPLE_STUDIO 14 +#define FF_PROFILE_MPEG4_ADVANCED_SIMPLE 15 + + /** + * level + * - encoding: Set by user. + * - decoding: Set by libavcodec. + */ + int level; +#define FF_LEVEL_UNKNOWN -99 + + /** + * + * - encoding: unused + * - decoding: Set by user. + */ + enum AVDiscard skip_loop_filter; + + /** + * + * - encoding: unused + * - decoding: Set by user. + */ + enum AVDiscard skip_idct; + + /** + * + * - encoding: unused + * - decoding: Set by user. + */ + enum AVDiscard skip_frame; + + /** + * Header containing style information for text subtitles. + * For SUBTITLE_ASS subtitle type, it should contain the whole ASS + * [Script Info] and [V4+ Styles] section, plus the [Events] line and + * the Format line following. It shouldn't include any Dialogue line. + * - encoding: Set/allocated/freed by user (before avcodec_open2()) + * - decoding: Set/allocated/freed by libavcodec (by avcodec_open2()) + */ + uint8_t *subtitle_header; + int subtitle_header_size; + + /** + * Simulates errors in the bitstream to test error concealment. + * - encoding: Set by user. + * - decoding: unused + */ + int error_rate; + + /** + * Current packet as passed into the decoder, to avoid having + * to pass the packet into every function. Currently only valid + * inside lavc and get/release_buffer callbacks. + * - decoding: set by avcodec_decode_*, read by get_buffer() for setting pkt_pts + * - encoding: unused + */ + AVPacket *pkt; + + /** + * VBV delay coded in the last frame (in periods of a 27 MHz clock). + * Used for compliant TS muxing. + * - encoding: Set by libavcodec. + * - decoding: unused. + */ + uint64_t vbv_delay; +} AVCodecContext; + +/** + * AVProfile. + */ +typedef struct AVProfile { + int profile; + const char *name; ///< short name for the profile +} AVProfile; + +typedef struct AVCodecDefault AVCodecDefault; + +struct AVSubtitle; + +/** + * AVCodec. + */ +typedef struct AVCodec { + /** + * Name of the codec implementation. + * The name is globally unique among encoders and among decoders (but an + * encoder and a decoder can share the same name). + * This is the primary way to find a codec from the user perspective. + */ + const char *name; + /** + * Descriptive name for the codec, meant to be more human readable than name. + * You should use the NULL_IF_CONFIG_SMALL() macro to define it. + */ + const char *long_name; + enum AVMediaType type; + enum AVCodecID id; + /** + * Codec capabilities. + * see CODEC_CAP_* + */ + int capabilities; + const AVRational *supported_framerates; ///< array of supported framerates, or NULL if any, array is terminated by {0,0} + const enum AVPixelFormat *pix_fmts; ///< array of supported pixel formats, or NULL if unknown, array is terminated by -1 + const int *supported_samplerates; ///< array of supported audio samplerates, or NULL if unknown, array is terminated by 0 + const enum AVSampleFormat *sample_fmts; ///< array of supported sample formats, or NULL if unknown, array is terminated by -1 + const uint64_t *channel_layouts; ///< array of support channel layouts, or NULL if unknown. array is terminated by 0 + attribute_deprecated uint8_t max_lowres; ///< maximum value for lowres supported by the decoder + const AVClass *priv_class; ///< AVClass for the private context + const AVProfile *profiles; ///< array of recognized profiles, or NULL if unknown, array is terminated by {FF_PROFILE_UNKNOWN} + + /***************************************************************** + * No fields below this line are part of the public API. They + * may not be used outside of libavcodec and can be changed and + * removed at will. + * New public fields should be added right above. + ***************************************************************** + */ + int priv_data_size; + struct AVCodec *next; + /** + * @name Frame-level threading support functions + * @{ + */ + /** + * If defined, called on thread contexts when they are created. + * If the codec allocates writable tables in init(), re-allocate them here. + * priv_data will be set to a copy of the original. + */ + int (*init_thread_copy)(AVCodecContext *); + /** + * Copy necessary context variables from a previous thread context to the current one. + * If not defined, the next thread will start automatically; otherwise, the codec + * must call ff_thread_finish_setup(). + * + * dst and src will (rarely) point to the same context, in which case memcpy should be skipped. + */ + int (*update_thread_context)(AVCodecContext *dst, const AVCodecContext *src); + /** @} */ + + /** + * Private codec-specific defaults. + */ + const AVCodecDefault *defaults; + + /** + * Initialize codec static data, called from avcodec_register(). + */ + void (*init_static_data)(struct AVCodec *codec); + + int (*init)(AVCodecContext *); + int (*encode_sub)(AVCodecContext *, uint8_t *buf, int buf_size, + const struct AVSubtitle *sub); + /** + * Encode data to an AVPacket. + * + * @param avctx codec context + * @param avpkt output AVPacket (may contain a user-provided buffer) + * @param[in] frame AVFrame containing the raw data to be encoded + * @param[out] got_packet_ptr encoder sets to 0 or 1 to indicate that a + * non-empty packet was returned in avpkt. + * @return 0 on success, negative error code on failure + */ + int (*encode2)(AVCodecContext *avctx, AVPacket *avpkt, const AVFrame *frame, + int *got_packet_ptr); + int (*decode)(AVCodecContext *, void *outdata, int *outdata_size, AVPacket *avpkt); + int (*close)(AVCodecContext *); + /** + * Flush buffers. + * Will be called when seeking + */ + void (*flush)(AVCodecContext *); +} AVCodec; + +/** + * AVHWAccel. + */ +typedef struct AVHWAccel { + /** + * Name of the hardware accelerated codec. + * The name is globally unique among encoders and among decoders (but an + * encoder and a decoder can share the same name). + */ + const char *name; + + /** + * Type of codec implemented by the hardware accelerator. + * + * See AVMEDIA_TYPE_xxx + */ + enum AVMediaType type; + + /** + * Codec implemented by the hardware accelerator. + * + * See AV_CODEC_ID_xxx + */ + enum AVCodecID id; + + /** + * Supported pixel format. + * + * Only hardware accelerated formats are supported here. + */ + enum AVPixelFormat pix_fmt; + + /** + * Hardware accelerated codec capabilities. + * see FF_HWACCEL_CODEC_CAP_* + */ + int capabilities; + + struct AVHWAccel *next; + + /** + * Called at the beginning of each frame or field picture. + * + * Meaningful frame information (codec specific) is guaranteed to + * be parsed at this point. This function is mandatory. + * + * Note that buf can be NULL along with buf_size set to 0. + * Otherwise, this means the whole frame is available at this point. + * + * @param avctx the codec context + * @param buf the frame data buffer base + * @param buf_size the size of the frame in bytes + * @return zero if successful, a negative value otherwise + */ + int (*start_frame)(AVCodecContext *avctx, const uint8_t *buf, uint32_t buf_size); + + /** + * Callback for each slice. + * + * Meaningful slice information (codec specific) is guaranteed to + * be parsed at this point. This function is mandatory. + * + * @param avctx the codec context + * @param buf the slice data buffer base + * @param buf_size the size of the slice in bytes + * @return zero if successful, a negative value otherwise + */ + int (*decode_slice)(AVCodecContext *avctx, const uint8_t *buf, uint32_t buf_size); + + /** + * Called at the end of each frame or field picture. + * + * The whole picture is parsed at this point and can now be sent + * to the hardware accelerator. This function is mandatory. + * + * @param avctx the codec context + * @return zero if successful, a negative value otherwise + */ + int (*end_frame)(AVCodecContext *avctx); + + /** + * Size of HW accelerator private data. + * + * Private data is allocated with av_mallocz() before + * AVCodecContext.get_buffer() and deallocated after + * AVCodecContext.release_buffer(). + */ + int priv_data_size; +} AVHWAccel; + +/** + * @defgroup lavc_picture AVPicture + * + * Functions for working with AVPicture + * @{ + */ + +/** + * four components are given, that's all. + * the last component is alpha + */ +typedef struct AVPicture { + uint8_t *data[AV_NUM_DATA_POINTERS]; + int linesize[AV_NUM_DATA_POINTERS]; ///< number of bytes per line +} AVPicture; + +/** + * @} + */ + +#define AVPALETTE_SIZE 1024 +#define AVPALETTE_COUNT 256 + +enum AVSubtitleType { + SUBTITLE_NONE, + + SUBTITLE_BITMAP, ///< A bitmap, pict will be set + + /** + * Plain text, the text field must be set by the decoder and is + * authoritative. ass and pict fields may contain approximations. + */ + SUBTITLE_TEXT, + + /** + * Formatted text, the ass field must be set by the decoder and is + * authoritative. pict and text fields may contain approximations. + */ + SUBTITLE_ASS, +}; + +typedef struct AVSubtitleRect { + int x; ///< top left corner of pict, undefined when pict is not set + int y; ///< top left corner of pict, undefined when pict is not set + int w; ///< width of pict, undefined when pict is not set + int h; ///< height of pict, undefined when pict is not set + int nb_colors; ///< number of colors in pict, undefined when pict is not set + + /** + * data+linesize for the bitmap of this subtitle. + * can be set for text/ass as well once they where rendered + */ + AVPicture pict; + enum AVSubtitleType type; + + char *text; ///< 0 terminated plain UTF-8 text + + /** + * 0 terminated ASS/SSA compatible event line. + * The pressentation of this is unaffected by the other values in this + * struct. + */ + char *ass; +} AVSubtitleRect; + +typedef struct AVSubtitle { + uint16_t format; /* 0 = graphics */ + uint32_t start_display_time; /* relative to packet pts, in ms */ + uint32_t end_display_time; /* relative to packet pts, in ms */ + unsigned num_rects; + AVSubtitleRect **rects; + int64_t pts; ///< Same as packet pts, in AV_TIME_BASE +} AVSubtitle; + +/** + * If c is NULL, returns the first registered codec, + * if c is non-NULL, returns the next registered codec after c, + * or NULL if c is the last one. + */ +AVCodec *av_codec_next(const AVCodec *c); + +/** + * Return the LIBAVCODEC_VERSION_INT constant. + */ +unsigned avcodec_version(void); + +/** + * Return the libavcodec build-time configuration. + */ +const char *avcodec_configuration(void); + +/** + * Return the libavcodec license. + */ +const char *avcodec_license(void); + +/** + * Register the codec codec and initialize libavcodec. + * + * @warning either this function or avcodec_register_all() must be called + * before any other libavcodec functions. + * + * @see avcodec_register_all() + */ +void avcodec_register(AVCodec *codec); + +/** + * Register all the codecs, parsers and bitstream filters which were enabled at + * configuration time. If you do not call this function you can select exactly + * which formats you want to support, by using the individual registration + * functions. + * + * @see avcodec_register + * @see av_register_codec_parser + * @see av_register_bitstream_filter + */ +void avcodec_register_all(void); + +/** + * Allocate an AVCodecContext and set its fields to default values. The + * resulting struct can be deallocated by calling avcodec_close() on it followed + * by av_free(). + * + * @param codec if non-NULL, allocate private data and initialize defaults + * for the given codec. It is illegal to then call avcodec_open2() + * with a different codec. + * If NULL, then the codec-specific defaults won't be initialized, + * which may result in suboptimal default settings (this is + * important mainly for encoders, e.g. libx264). + * + * @return An AVCodecContext filled with default values or NULL on failure. + * @see avcodec_get_context_defaults + */ +AVCodecContext *avcodec_alloc_context3(const AVCodec *codec); + +/** + * Set the fields of the given AVCodecContext to default values corresponding + * to the given codec (defaults may be codec-dependent). + * + * Do not call this function if a non-NULL codec has been passed + * to avcodec_alloc_context3() that allocated this AVCodecContext. + * If codec is non-NULL, it is illegal to call avcodec_open2() with a + * different codec on this AVCodecContext. + */ +int avcodec_get_context_defaults3(AVCodecContext *s, const AVCodec *codec); + +/** + * Get the AVClass for AVCodecContext. It can be used in combination with + * AV_OPT_SEARCH_FAKE_OBJ for examining options. + * + * @see av_opt_find(). + */ +const AVClass *avcodec_get_class(void); + +/** + * Copy the settings of the source AVCodecContext into the destination + * AVCodecContext. The resulting destination codec context will be + * unopened, i.e. you are required to call avcodec_open2() before you + * can use this AVCodecContext to decode/encode video/audio data. + * + * @param dest target codec context, should be initialized with + * avcodec_alloc_context3(), but otherwise uninitialized + * @param src source codec context + * @return AVERROR() on error (e.g. memory allocation error), 0 on success + */ +int avcodec_copy_context(AVCodecContext *dest, const AVCodecContext *src); + +/** + * Allocate an AVFrame and set its fields to default values. The resulting + * struct must be freed using avcodec_free_frame(). + * + * @return An AVFrame filled with default values or NULL on failure. + * @see avcodec_get_frame_defaults + */ +AVFrame *avcodec_alloc_frame(void); + +/** + * Set the fields of the given AVFrame to default values. + * + * @param frame The AVFrame of which the fields should be set to default values. + */ +void avcodec_get_frame_defaults(AVFrame *frame); + +/** + * Free the frame and any dynamically allocated objects in it, + * e.g. extended_data. + * + * @param frame frame to be freed. The pointer will be set to NULL. + * + * @warning this function does NOT free the data buffers themselves + * (it does not know how, since they might have been allocated with + * a custom get_buffer()). + */ +void avcodec_free_frame(AVFrame **frame); + +/** + * Initialize the AVCodecContext to use the given AVCodec. Prior to using this + * function the context has to be allocated with avcodec_alloc_context3(). + * + * The functions avcodec_find_decoder_by_name(), avcodec_find_encoder_by_name(), + * avcodec_find_decoder() and avcodec_find_encoder() provide an easy way for + * retrieving a codec. + * + * @warning This function is not thread safe! + * + * @code + * avcodec_register_all(); + * av_dict_set(&opts, "b", "2.5M", 0); + * codec = avcodec_find_decoder(AV_CODEC_ID_H264); + * if (!codec) + * exit(1); + * + * context = avcodec_alloc_context3(codec); + * + * if (avcodec_open2(context, codec, opts) < 0) + * exit(1); + * @endcode + * + * @param avctx The context to initialize. + * @param codec The codec to open this context for. If a non-NULL codec has been + * previously passed to avcodec_alloc_context3() or + * avcodec_get_context_defaults3() for this context, then this + * parameter MUST be either NULL or equal to the previously passed + * codec. + * @param options A dictionary filled with AVCodecContext and codec-private options. + * On return this object will be filled with options that were not found. + * + * @return zero on success, a negative value on error + * @see avcodec_alloc_context3(), avcodec_find_decoder(), avcodec_find_encoder(), + * av_dict_set(), av_opt_find(). + */ +int avcodec_open2(AVCodecContext *avctx, const AVCodec *codec, AVDictionary **options); + +/** + * Close a given AVCodecContext and free all the data associated with it + * (but not the AVCodecContext itself). + * + * Calling this function on an AVCodecContext that hasn't been opened will free + * the codec-specific data allocated in avcodec_alloc_context3() / + * avcodec_get_context_defaults3() with a non-NULL codec. Subsequent calls will + * do nothing. + */ +int avcodec_close(AVCodecContext *avctx); + +/** + * Free all allocated data in the given subtitle struct. + * + * @param sub AVSubtitle to free. + */ +void avsubtitle_free(AVSubtitle *sub); + +/** + * @} + */ + +/** + * @addtogroup lavc_packet + * @{ + */ + +/** + * Default packet destructor. + */ +void av_destruct_packet(AVPacket *pkt); + +/** + * Initialize optional fields of a packet with default values. + * + * Note, this does not touch the data and size members, which have to be + * initialized separately. + * + * @param pkt packet + */ +void av_init_packet(AVPacket *pkt); + +/** + * Allocate the payload of a packet and initialize its fields with + * default values. + * + * @param pkt packet + * @param size wanted payload size + * @return 0 if OK, AVERROR_xxx otherwise + */ +int av_new_packet(AVPacket *pkt, int size); + +/** + * Reduce packet size, correctly zeroing padding + * + * @param pkt packet + * @param size new size + */ +void av_shrink_packet(AVPacket *pkt, int size); + +/** + * Increase packet size, correctly zeroing padding + * + * @param pkt packet + * @param grow_by number of bytes by which to increase the size of the packet + */ +int av_grow_packet(AVPacket *pkt, int grow_by); + +/** + * @warning This is a hack - the packet memory allocation stuff is broken. The + * packet is allocated if it was not really allocated. + */ +int av_dup_packet(AVPacket *pkt); + +/** + * Free a packet. + * + * @param pkt packet to free + */ +void av_free_packet(AVPacket *pkt); + +/** + * Allocate new information of a packet. + * + * @param pkt packet + * @param type side information type + * @param size side information size + * @return pointer to fresh allocated data or NULL otherwise + */ +uint8_t* av_packet_new_side_data(AVPacket *pkt, enum AVPacketSideDataType type, + int size); + +/** + * Shrink the already allocated side data buffer + * + * @param pkt packet + * @param type side information type + * @param size new side information size + * @return 0 on success, < 0 on failure + */ +int av_packet_shrink_side_data(AVPacket *pkt, enum AVPacketSideDataType type, + int size); + +/** + * Get side information from packet. + * + * @param pkt packet + * @param type desired side information type + * @param size pointer for side information size to store (optional) + * @return pointer to data if present or NULL otherwise + */ +uint8_t* av_packet_get_side_data(AVPacket *pkt, enum AVPacketSideDataType type, + int *size); + +/** + * @} + */ + +/** + * @addtogroup lavc_decoding + * @{ + */ + +/** + * Find a registered decoder with a matching codec ID. + * + * @param id AVCodecID of the requested decoder + * @return A decoder if one was found, NULL otherwise. + */ +AVCodec *avcodec_find_decoder(enum AVCodecID id); + +/** + * Find a registered decoder with the specified name. + * + * @param name name of the requested decoder + * @return A decoder if one was found, NULL otherwise. + */ +AVCodec *avcodec_find_decoder_by_name(const char *name); + +int avcodec_default_get_buffer(AVCodecContext *s, AVFrame *pic); +void avcodec_default_release_buffer(AVCodecContext *s, AVFrame *pic); +int avcodec_default_reget_buffer(AVCodecContext *s, AVFrame *pic); + +/** + * Return the amount of padding in pixels which the get_buffer callback must + * provide around the edge of the image for codecs which do not have the + * CODEC_FLAG_EMU_EDGE flag. + * + * @return Required padding in pixels. + */ +unsigned avcodec_get_edge_width(void); + +/** + * Modify width and height values so that they will result in a memory + * buffer that is acceptable for the codec if you do not use any horizontal + * padding. + * + * May only be used if a codec with CODEC_CAP_DR1 has been opened. + * If CODEC_FLAG_EMU_EDGE is not set, the dimensions must have been increased + * according to avcodec_get_edge_width() before. + */ +void avcodec_align_dimensions(AVCodecContext *s, int *width, int *height); + +/** + * Modify width and height values so that they will result in a memory + * buffer that is acceptable for the codec if you also ensure that all + * line sizes are a multiple of the respective linesize_align[i]. + * + * May only be used if a codec with CODEC_CAP_DR1 has been opened. + * If CODEC_FLAG_EMU_EDGE is not set, the dimensions must have been increased + * according to avcodec_get_edge_width() before. + */ +void avcodec_align_dimensions2(AVCodecContext *s, int *width, int *height, + int linesize_align[AV_NUM_DATA_POINTERS]); + +#if FF_API_OLD_DECODE_AUDIO +/** + * Wrapper function which calls avcodec_decode_audio4. + * + * @deprecated Use avcodec_decode_audio4 instead. + * + * Decode the audio frame of size avpkt->size from avpkt->data into samples. + * Some decoders may support multiple frames in a single AVPacket, such + * decoders would then just decode the first frame. In this case, + * avcodec_decode_audio3 has to be called again with an AVPacket that contains + * the remaining data in order to decode the second frame etc. + * If no frame + * could be outputted, frame_size_ptr is zero. Otherwise, it is the + * decompressed frame size in bytes. + * + * @warning You must set frame_size_ptr to the allocated size of the + * output buffer before calling avcodec_decode_audio3(). + * + * @warning The input buffer must be FF_INPUT_BUFFER_PADDING_SIZE larger than + * the actual read bytes because some optimized bitstream readers read 32 or 64 + * bits at once and could read over the end. + * + * @warning The end of the input buffer avpkt->data should be set to 0 to ensure that + * no overreading happens for damaged MPEG streams. + * + * @warning You must not provide a custom get_buffer() when using + * avcodec_decode_audio3(). Doing so will override it with + * avcodec_default_get_buffer. Use avcodec_decode_audio4() instead, + * which does allow the application to provide a custom get_buffer(). + * + * @note You might have to align the input buffer avpkt->data and output buffer + * samples. The alignment requirements depend on the CPU: On some CPUs it isn't + * necessary at all, on others it won't work at all if not aligned and on others + * it will work but it will have an impact on performance. + * + * In practice, avpkt->data should have 4 byte alignment at minimum and + * samples should be 16 byte aligned unless the CPU doesn't need it + * (AltiVec and SSE do). + * + * @note Codecs which have the CODEC_CAP_DELAY capability set have a delay + * between input and output, these need to be fed with avpkt->data=NULL, + * avpkt->size=0 at the end to return the remaining frames. + * + * @param avctx the codec context + * @param[out] samples the output buffer, sample type in avctx->sample_fmt + * If the sample format is planar, each channel plane will + * be the same size, with no padding between channels. + * @param[in,out] frame_size_ptr the output buffer size in bytes + * @param[in] avpkt The input AVPacket containing the input buffer. + * You can create such packet with av_init_packet() and by then setting + * data and size, some decoders might in addition need other fields. + * All decoders are designed to use the least fields possible though. + * @return On error a negative value is returned, otherwise the number of bytes + * used or zero if no frame data was decompressed (used) from the input AVPacket. + */ +attribute_deprecated int avcodec_decode_audio3(AVCodecContext *avctx, int16_t *samples, + int *frame_size_ptr, + AVPacket *avpkt); +#endif + +/** + * Decode the audio frame of size avpkt->size from avpkt->data into frame. + * + * Some decoders may support multiple frames in a single AVPacket. Such + * decoders would then just decode the first frame. In this case, + * avcodec_decode_audio4 has to be called again with an AVPacket containing + * the remaining data in order to decode the second frame, etc... + * Even if no frames are returned, the packet needs to be fed to the decoder + * with remaining data until it is completely consumed or an error occurs. + * + * @warning The input buffer, avpkt->data must be FF_INPUT_BUFFER_PADDING_SIZE + * larger than the actual read bytes because some optimized bitstream + * readers read 32 or 64 bits at once and could read over the end. + * + * @note You might have to align the input buffer. The alignment requirements + * depend on the CPU and the decoder. + * + * @param avctx the codec context + * @param[out] frame The AVFrame in which to store decoded audio samples. + * Decoders request a buffer of a particular size by setting + * AVFrame.nb_samples prior to calling get_buffer(). The + * decoder may, however, only utilize part of the buffer by + * setting AVFrame.nb_samples to a smaller value in the + * output frame. + * @param[out] got_frame_ptr Zero if no frame could be decoded, otherwise it is + * non-zero. + * @param[in] avpkt The input AVPacket containing the input buffer. + * At least avpkt->data and avpkt->size should be set. Some + * decoders might also require additional fields to be set. + * @return A negative error code is returned if an error occurred during + * decoding, otherwise the number of bytes consumed from the input + * AVPacket is returned. + */ +int avcodec_decode_audio4(AVCodecContext *avctx, AVFrame *frame, + int *got_frame_ptr, AVPacket *avpkt); + +/** + * Decode the video frame of size avpkt->size from avpkt->data into picture. + * Some decoders may support multiple frames in a single AVPacket, such + * decoders would then just decode the first frame. + * + * @warning The input buffer must be FF_INPUT_BUFFER_PADDING_SIZE larger than + * the actual read bytes because some optimized bitstream readers read 32 or 64 + * bits at once and could read over the end. + * + * @warning The end of the input buffer buf should be set to 0 to ensure that + * no overreading happens for damaged MPEG streams. + * + * @note You might have to align the input buffer avpkt->data. + * The alignment requirements depend on the CPU: on some CPUs it isn't + * necessary at all, on others it won't work at all if not aligned and on others + * it will work but it will have an impact on performance. + * + * In practice, avpkt->data should have 4 byte alignment at minimum. + * + * @note Codecs which have the CODEC_CAP_DELAY capability set have a delay + * between input and output, these need to be fed with avpkt->data=NULL, + * avpkt->size=0 at the end to return the remaining frames. + * + * @param avctx the codec context + * @param[out] picture The AVFrame in which the decoded video frame will be stored. + * Use avcodec_alloc_frame to get an AVFrame, the codec will + * allocate memory for the actual bitmap. + * with default get/release_buffer(), the decoder frees/reuses the bitmap as it sees fit. + * with overridden get/release_buffer() (needs CODEC_CAP_DR1) the user decides into what buffer the decoder + * decodes and the decoder tells the user once it does not need the data anymore, + * the user app can at this point free/reuse/keep the memory as it sees fit. + * + * @param[in] avpkt The input AVpacket containing the input buffer. + * You can create such packet with av_init_packet() and by then setting + * data and size, some decoders might in addition need other fields like + * flags&AV_PKT_FLAG_KEY. All decoders are designed to use the least + * fields possible. + * @param[in,out] got_picture_ptr Zero if no frame could be decompressed, otherwise, it is nonzero. + * @return On error a negative value is returned, otherwise the number of bytes + * used or zero if no frame could be decompressed. + */ +int avcodec_decode_video2(AVCodecContext *avctx, AVFrame *picture, + int *got_picture_ptr, + AVPacket *avpkt); + +/** + * Decode a subtitle message. + * Return a negative value on error, otherwise return the number of bytes used. + * If no subtitle could be decompressed, got_sub_ptr is zero. + * Otherwise, the subtitle is stored in *sub. + * Note that CODEC_CAP_DR1 is not available for subtitle codecs. This is for + * simplicity, because the performance difference is expect to be negligible + * and reusing a get_buffer written for video codecs would probably perform badly + * due to a potentially very different allocation pattern. + * + * @param avctx the codec context + * @param[out] sub The AVSubtitle in which the decoded subtitle will be stored, must be + freed with avsubtitle_free if *got_sub_ptr is set. + * @param[in,out] got_sub_ptr Zero if no subtitle could be decompressed, otherwise, it is nonzero. + * @param[in] avpkt The input AVPacket containing the input buffer. + */ +int avcodec_decode_subtitle2(AVCodecContext *avctx, AVSubtitle *sub, + int *got_sub_ptr, + AVPacket *avpkt); + +/** + * @defgroup lavc_parsing Frame parsing + * @{ + */ + +typedef struct AVCodecParserContext { + void *priv_data; + struct AVCodecParser *parser; + int64_t frame_offset; /* offset of the current frame */ + int64_t cur_offset; /* current offset + (incremented by each av_parser_parse()) */ + int64_t next_frame_offset; /* offset of the next frame */ + /* video info */ + int pict_type; /* XXX: Put it back in AVCodecContext. */ + /** + * This field is used for proper frame duration computation in lavf. + * It signals, how much longer the frame duration of the current frame + * is compared to normal frame duration. + * + * frame_duration = (1 + repeat_pict) * time_base + * + * It is used by codecs like H.264 to display telecined material. + */ + int repeat_pict; /* XXX: Put it back in AVCodecContext. */ + int64_t pts; /* pts of the current frame */ + int64_t dts; /* dts of the current frame */ + + /* private data */ + int64_t last_pts; + int64_t last_dts; + int fetch_timestamp; + +#define AV_PARSER_PTS_NB 4 + int cur_frame_start_index; + int64_t cur_frame_offset[AV_PARSER_PTS_NB]; + int64_t cur_frame_pts[AV_PARSER_PTS_NB]; + int64_t cur_frame_dts[AV_PARSER_PTS_NB]; + + int flags; +#define PARSER_FLAG_COMPLETE_FRAMES 0x0001 +#define PARSER_FLAG_ONCE 0x0002 +/// Set if the parser has a valid file offset +#define PARSER_FLAG_FETCHED_OFFSET 0x0004 + + int64_t offset; ///< byte offset from starting packet start + int64_t cur_frame_end[AV_PARSER_PTS_NB]; + + /** + * Set by parser to 1 for key frames and 0 for non-key frames. + * It is initialized to -1, so if the parser doesn't set this flag, + * old-style fallback using AV_PICTURE_TYPE_I picture type as key frames + * will be used. + */ + int key_frame; + + /** + * Time difference in stream time base units from the pts of this + * packet to the point at which the output from the decoder has converged + * independent from the availability of previous frames. That is, the + * frames are virtually identical no matter if decoding started from + * the very first frame or from this keyframe. + * Is AV_NOPTS_VALUE if unknown. + * This field is not the display duration of the current frame. + * This field has no meaning if the packet does not have AV_PKT_FLAG_KEY + * set. + * + * The purpose of this field is to allow seeking in streams that have no + * keyframes in the conventional sense. It corresponds to the + * recovery point SEI in H.264 and match_time_delta in NUT. It is also + * essential for some types of subtitle streams to ensure that all + * subtitles are correctly displayed after seeking. + */ + int64_t convergence_duration; + + // Timestamp generation support: + /** + * Synchronization point for start of timestamp generation. + * + * Set to >0 for sync point, 0 for no sync point and <0 for undefined + * (default). + * + * For example, this corresponds to presence of H.264 buffering period + * SEI message. + */ + int dts_sync_point; + + /** + * Offset of the current timestamp against last timestamp sync point in + * units of AVCodecContext.time_base. + * + * Set to INT_MIN when dts_sync_point unused. Otherwise, it must + * contain a valid timestamp offset. + * + * Note that the timestamp of sync point has usually a nonzero + * dts_ref_dts_delta, which refers to the previous sync point. Offset of + * the next frame after timestamp sync point will be usually 1. + * + * For example, this corresponds to H.264 cpb_removal_delay. + */ + int dts_ref_dts_delta; + + /** + * Presentation delay of current frame in units of AVCodecContext.time_base. + * + * Set to INT_MIN when dts_sync_point unused. Otherwise, it must + * contain valid non-negative timestamp delta (presentation time of a frame + * must not lie in the past). + * + * This delay represents the difference between decoding and presentation + * time of the frame. + * + * For example, this corresponds to H.264 dpb_output_delay. + */ + int pts_dts_delta; + + /** + * Position of the packet in file. + * + * Analogous to cur_frame_pts/dts + */ + int64_t cur_frame_pos[AV_PARSER_PTS_NB]; + + /** + * Byte position of currently parsed frame in stream. + */ + int64_t pos; + + /** + * Previous frame byte position. + */ + int64_t last_pos; + + /** + * Duration of the current frame. + * For audio, this is in units of 1 / AVCodecContext.sample_rate. + * For all other types, this is in units of AVCodecContext.time_base. + */ + int duration; +} AVCodecParserContext; + +typedef struct AVCodecParser { + int codec_ids[5]; /* several codec IDs are permitted */ + int priv_data_size; + int (*parser_init)(AVCodecParserContext *s); + int (*parser_parse)(AVCodecParserContext *s, + AVCodecContext *avctx, + const uint8_t **poutbuf, int *poutbuf_size, + const uint8_t *buf, int buf_size); + void (*parser_close)(AVCodecParserContext *s); + int (*split)(AVCodecContext *avctx, const uint8_t *buf, int buf_size); + struct AVCodecParser *next; +} AVCodecParser; + +AVCodecParser *av_parser_next(AVCodecParser *c); + +void av_register_codec_parser(AVCodecParser *parser); +AVCodecParserContext *av_parser_init(int codec_id); + +/** + * Parse a packet. + * + * @param s parser context. + * @param avctx codec context. + * @param poutbuf set to pointer to parsed buffer or NULL if not yet finished. + * @param poutbuf_size set to size of parsed buffer or zero if not yet finished. + * @param buf input buffer. + * @param buf_size input length, to signal EOF, this should be 0 (so that the last frame can be output). + * @param pts input presentation timestamp. + * @param dts input decoding timestamp. + * @param pos input byte position in stream. + * @return the number of bytes of the input bitstream used. + * + * Example: + * @code + * while(in_len){ + * len = av_parser_parse2(myparser, AVCodecContext, &data, &size, + * in_data, in_len, + * pts, dts, pos); + * in_data += len; + * in_len -= len; + * + * if(size) + * decode_frame(data, size); + * } + * @endcode + */ +int av_parser_parse2(AVCodecParserContext *s, + AVCodecContext *avctx, + uint8_t **poutbuf, int *poutbuf_size, + const uint8_t *buf, int buf_size, + int64_t pts, int64_t dts, + int64_t pos); + +int av_parser_change(AVCodecParserContext *s, + AVCodecContext *avctx, + uint8_t **poutbuf, int *poutbuf_size, + const uint8_t *buf, int buf_size, int keyframe); +void av_parser_close(AVCodecParserContext *s); + +/** + * @} + * @} + */ + +/** + * @addtogroup lavc_encoding + * @{ + */ + +/** + * Find a registered encoder with a matching codec ID. + * + * @param id AVCodecID of the requested encoder + * @return An encoder if one was found, NULL otherwise. + */ +AVCodec *avcodec_find_encoder(enum AVCodecID id); + +/** + * Find a registered encoder with the specified name. + * + * @param name name of the requested encoder + * @return An encoder if one was found, NULL otherwise. + */ +AVCodec *avcodec_find_encoder_by_name(const char *name); + +#if FF_API_OLD_ENCODE_AUDIO +/** + * Encode an audio frame from samples into buf. + * + * @deprecated Use avcodec_encode_audio2 instead. + * + * @note The output buffer should be at least FF_MIN_BUFFER_SIZE bytes large. + * However, for codecs with avctx->frame_size equal to 0 (e.g. PCM) the user + * will know how much space is needed because it depends on the value passed + * in buf_size as described below. In that case a lower value can be used. + * + * @param avctx the codec context + * @param[out] buf the output buffer + * @param[in] buf_size the output buffer size + * @param[in] samples the input buffer containing the samples + * The number of samples read from this buffer is frame_size*channels, + * both of which are defined in avctx. + * For codecs which have avctx->frame_size equal to 0 (e.g. PCM) the number of + * samples read from samples is equal to: + * buf_size * 8 / (avctx->channels * av_get_bits_per_sample(avctx->codec_id)) + * This also implies that av_get_bits_per_sample() must not return 0 for these + * codecs. + * @return On error a negative value is returned, on success zero or the number + * of bytes used to encode the data read from the input buffer. + */ +int attribute_deprecated avcodec_encode_audio(AVCodecContext *avctx, + uint8_t *buf, int buf_size, + const short *samples); +#endif + +/** + * Encode a frame of audio. + * + * Takes input samples from frame and writes the next output packet, if + * available, to avpkt. The output packet does not necessarily contain data for + * the most recent frame, as encoders can delay, split, and combine input frames + * internally as needed. + * + * @param avctx codec context + * @param avpkt output AVPacket. + * The user can supply an output buffer by setting + * avpkt->data and avpkt->size prior to calling the + * function, but if the size of the user-provided data is not + * large enough, encoding will fail. All other AVPacket fields + * will be reset by the encoder using av_init_packet(). If + * avpkt->data is NULL, the encoder will allocate it. + * The encoder will set avpkt->size to the size of the + * output packet. + * + * If this function fails or produces no output, avpkt will be + * freed using av_free_packet() (i.e. avpkt->destruct will be + * called to free the user supplied buffer). + * @param[in] frame AVFrame containing the raw audio data to be encoded. + * May be NULL when flushing an encoder that has the + * CODEC_CAP_DELAY capability set. + * If CODEC_CAP_VARIABLE_FRAME_SIZE is set, then each frame + * can have any number of samples. + * If it is not set, frame->nb_samples must be equal to + * avctx->frame_size for all frames except the last. + * The final frame may be smaller than avctx->frame_size. + * @param[out] got_packet_ptr This field is set to 1 by libavcodec if the + * output packet is non-empty, and to 0 if it is + * empty. If the function returns an error, the + * packet can be assumed to be invalid, and the + * value of got_packet_ptr is undefined and should + * not be used. + * @return 0 on success, negative error code on failure + */ +int avcodec_encode_audio2(AVCodecContext *avctx, AVPacket *avpkt, + const AVFrame *frame, int *got_packet_ptr); + +#if FF_API_OLD_ENCODE_VIDEO +/** + * @deprecated use avcodec_encode_video2() instead. + * + * Encode a video frame from pict into buf. + * The input picture should be + * stored using a specific format, namely avctx.pix_fmt. + * + * @param avctx the codec context + * @param[out] buf the output buffer for the bitstream of encoded frame + * @param[in] buf_size the size of the output buffer in bytes + * @param[in] pict the input picture to encode + * @return On error a negative value is returned, on success zero or the number + * of bytes used from the output buffer. + */ +attribute_deprecated +int avcodec_encode_video(AVCodecContext *avctx, uint8_t *buf, int buf_size, + const AVFrame *pict); +#endif + +/** + * Encode a frame of video. + * + * Takes input raw video data from frame and writes the next output packet, if + * available, to avpkt. The output packet does not necessarily contain data for + * the most recent frame, as encoders can delay and reorder input frames + * internally as needed. + * + * @param avctx codec context + * @param avpkt output AVPacket. + * The user can supply an output buffer by setting + * avpkt->data and avpkt->size prior to calling the + * function, but if the size of the user-provided data is not + * large enough, encoding will fail. All other AVPacket fields + * will be reset by the encoder using av_init_packet(). If + * avpkt->data is NULL, the encoder will allocate it. + * The encoder will set avpkt->size to the size of the + * output packet. The returned data (if any) belongs to the + * caller, he is responsible for freeing it. + * + * If this function fails or produces no output, avpkt will be + * freed using av_free_packet() (i.e. avpkt->destruct will be + * called to free the user supplied buffer). + * @param[in] frame AVFrame containing the raw video data to be encoded. + * May be NULL when flushing an encoder that has the + * CODEC_CAP_DELAY capability set. + * @param[out] got_packet_ptr This field is set to 1 by libavcodec if the + * output packet is non-empty, and to 0 if it is + * empty. If the function returns an error, the + * packet can be assumed to be invalid, and the + * value of got_packet_ptr is undefined and should + * not be used. + * @return 0 on success, negative error code on failure + */ +int avcodec_encode_video2(AVCodecContext *avctx, AVPacket *avpkt, + const AVFrame *frame, int *got_packet_ptr); + +int avcodec_encode_subtitle(AVCodecContext *avctx, uint8_t *buf, int buf_size, + const AVSubtitle *sub); + + +/** + * @} + */ + +#if FF_API_AVCODEC_RESAMPLE +/** + * @defgroup lavc_resample Audio resampling + * @ingroup libavc + * @deprecated use libavresample instead + * + * @{ + */ +struct ReSampleContext; +struct AVResampleContext; + +typedef struct ReSampleContext ReSampleContext; + +/** + * Initialize audio resampling context. + * + * @param output_channels number of output channels + * @param input_channels number of input channels + * @param output_rate output sample rate + * @param input_rate input sample rate + * @param sample_fmt_out requested output sample format + * @param sample_fmt_in input sample format + * @param filter_length length of each FIR filter in the filterbank relative to the cutoff frequency + * @param log2_phase_count log2 of the number of entries in the polyphase filterbank + * @param linear if 1 then the used FIR filter will be linearly interpolated + between the 2 closest, if 0 the closest will be used + * @param cutoff cutoff frequency, 1.0 corresponds to half the output sampling rate + * @return allocated ReSampleContext, NULL if error occurred + */ +attribute_deprecated +ReSampleContext *av_audio_resample_init(int output_channels, int input_channels, + int output_rate, int input_rate, + enum AVSampleFormat sample_fmt_out, + enum AVSampleFormat sample_fmt_in, + int filter_length, int log2_phase_count, + int linear, double cutoff); + +attribute_deprecated +int audio_resample(ReSampleContext *s, short *output, short *input, int nb_samples); + +/** + * Free resample context. + * + * @param s a non-NULL pointer to a resample context previously + * created with av_audio_resample_init() + */ +attribute_deprecated +void audio_resample_close(ReSampleContext *s); + + +/** + * Initialize an audio resampler. + * Note, if either rate is not an integer then simply scale both rates up so they are. + * @param filter_length length of each FIR filter in the filterbank relative to the cutoff freq + * @param log2_phase_count log2 of the number of entries in the polyphase filterbank + * @param linear If 1 then the used FIR filter will be linearly interpolated + between the 2 closest, if 0 the closest will be used + * @param cutoff cutoff frequency, 1.0 corresponds to half the output sampling rate + */ +attribute_deprecated +struct AVResampleContext *av_resample_init(int out_rate, int in_rate, int filter_length, int log2_phase_count, int linear, double cutoff); + +/** + * Resample an array of samples using a previously configured context. + * @param src an array of unconsumed samples + * @param consumed the number of samples of src which have been consumed are returned here + * @param src_size the number of unconsumed samples available + * @param dst_size the amount of space in samples available in dst + * @param update_ctx If this is 0 then the context will not be modified, that way several channels can be resampled with the same context. + * @return the number of samples written in dst or -1 if an error occurred + */ +attribute_deprecated +int av_resample(struct AVResampleContext *c, short *dst, short *src, int *consumed, int src_size, int dst_size, int update_ctx); + + +/** + * Compensate samplerate/timestamp drift. The compensation is done by changing + * the resampler parameters, so no audible clicks or similar distortions occur + * @param compensation_distance distance in output samples over which the compensation should be performed + * @param sample_delta number of output samples which should be output less + * + * example: av_resample_compensate(c, 10, 500) + * here instead of 510 samples only 500 samples would be output + * + * note, due to rounding the actual compensation might be slightly different, + * especially if the compensation_distance is large and the in_rate used during init is small + */ +attribute_deprecated +void av_resample_compensate(struct AVResampleContext *c, int sample_delta, int compensation_distance); +attribute_deprecated +void av_resample_close(struct AVResampleContext *c); + +/** + * @} + */ +#endif + +/** + * @addtogroup lavc_picture + * @{ + */ + +/** + * Allocate memory for a picture. Call avpicture_free() to free it. + * + * @see avpicture_fill() + * + * @param picture the picture to be filled in + * @param pix_fmt the format of the picture + * @param width the width of the picture + * @param height the height of the picture + * @return zero if successful, a negative value if not + */ +int avpicture_alloc(AVPicture *picture, enum AVPixelFormat pix_fmt, int width, int height); + +/** + * Free a picture previously allocated by avpicture_alloc(). + * The data buffer used by the AVPicture is freed, but the AVPicture structure + * itself is not. + * + * @param picture the AVPicture to be freed + */ +void avpicture_free(AVPicture *picture); + +/** + * Fill in the AVPicture fields. + * The fields of the given AVPicture are filled in by using the 'ptr' address + * which points to the image data buffer. Depending on the specified picture + * format, one or multiple image data pointers and line sizes will be set. + * If a planar format is specified, several pointers will be set pointing to + * the different picture planes and the line sizes of the different planes + * will be stored in the lines_sizes array. + * Call with ptr == NULL to get the required size for the ptr buffer. + * + * To allocate the buffer and fill in the AVPicture fields in one call, + * use avpicture_alloc(). + * + * @param picture AVPicture whose fields are to be filled in + * @param ptr Buffer which will contain or contains the actual image data + * @param pix_fmt The format in which the picture data is stored. + * @param width the width of the image in pixels + * @param height the height of the image in pixels + * @return size of the image data in bytes + */ +int avpicture_fill(AVPicture *picture, uint8_t *ptr, + enum AVPixelFormat pix_fmt, int width, int height); + +/** + * Copy pixel data from an AVPicture into a buffer. + * The data is stored compactly, without any gaps for alignment or padding + * which may be applied by avpicture_fill(). + * + * @see avpicture_get_size() + * + * @param[in] src AVPicture containing image data + * @param[in] pix_fmt The format in which the picture data is stored. + * @param[in] width the width of the image in pixels. + * @param[in] height the height of the image in pixels. + * @param[out] dest A buffer into which picture data will be copied. + * @param[in] dest_size The size of 'dest'. + * @return The number of bytes written to dest, or a negative value (error code) on error. + */ +int avpicture_layout(const AVPicture* src, enum AVPixelFormat pix_fmt, + int width, int height, + unsigned char *dest, int dest_size); + +/** + * Calculate the size in bytes that a picture of the given width and height + * would occupy if stored in the given picture format. + * Note that this returns the size of a compact representation as generated + * by avpicture_layout(), which can be smaller than the size required for e.g. + * avpicture_fill(). + * + * @param pix_fmt the given picture format + * @param width the width of the image + * @param height the height of the image + * @return Image data size in bytes or -1 on error (e.g. too large dimensions). + */ +int avpicture_get_size(enum AVPixelFormat pix_fmt, int width, int height); + +/** + * deinterlace - if not supported return -1 + */ +int avpicture_deinterlace(AVPicture *dst, const AVPicture *src, + enum AVPixelFormat pix_fmt, int width, int height); +/** + * Copy image src to dst. Wraps av_picture_data_copy() above. + */ +void av_picture_copy(AVPicture *dst, const AVPicture *src, + enum AVPixelFormat pix_fmt, int width, int height); + +/** + * Crop image top and left side. + */ +int av_picture_crop(AVPicture *dst, const AVPicture *src, + enum AVPixelFormat pix_fmt, int top_band, int left_band); + +/** + * Pad image. + */ +int av_picture_pad(AVPicture *dst, const AVPicture *src, int height, int width, enum AVPixelFormat pix_fmt, + int padtop, int padbottom, int padleft, int padright, int *color); + +/** + * @} + */ + +/** + * @defgroup lavc_misc Utility functions + * @ingroup libavc + * + * Miscellaneous utility functions related to both encoding and decoding + * (or neither). + * @{ + */ + +/** + * @defgroup lavc_misc_pixfmt Pixel formats + * + * Functions for working with pixel formats. + * @{ + */ + +void avcodec_get_chroma_sub_sample(enum AVPixelFormat pix_fmt, int *h_shift, int *v_shift); + +/** + * Return a value representing the fourCC code associated to the + * pixel format pix_fmt, or 0 if no associated fourCC code can be + * found. + */ +unsigned int avcodec_pix_fmt_to_codec_tag(enum AVPixelFormat pix_fmt); + +#define FF_LOSS_RESOLUTION 0x0001 /**< loss due to resolution change */ +#define FF_LOSS_DEPTH 0x0002 /**< loss due to color depth change */ +#define FF_LOSS_COLORSPACE 0x0004 /**< loss due to color space conversion */ +#define FF_LOSS_ALPHA 0x0008 /**< loss of alpha bits */ +#define FF_LOSS_COLORQUANT 0x0010 /**< loss due to color quantization */ +#define FF_LOSS_CHROMA 0x0020 /**< loss of chroma (e.g. RGB to gray conversion) */ + +/** + * Compute what kind of losses will occur when converting from one specific + * pixel format to another. + * When converting from one pixel format to another, information loss may occur. + * For example, when converting from RGB24 to GRAY, the color information will + * be lost. Similarly, other losses occur when converting from some formats to + * other formats. These losses can involve loss of chroma, but also loss of + * resolution, loss of color depth, loss due to the color space conversion, loss + * of the alpha bits or loss due to color quantization. + * avcodec_get_fix_fmt_loss() informs you about the various types of losses + * which will occur when converting from one pixel format to another. + * + * @param[in] dst_pix_fmt destination pixel format + * @param[in] src_pix_fmt source pixel format + * @param[in] has_alpha Whether the source pixel format alpha channel is used. + * @return Combination of flags informing you what kind of losses will occur. + */ +int avcodec_get_pix_fmt_loss(enum AVPixelFormat dst_pix_fmt, enum AVPixelFormat src_pix_fmt, + int has_alpha); + +#if FF_API_FIND_BEST_PIX_FMT +/** + * @deprecated use avcodec_find_best_pix_fmt2() instead. + * + * Find the best pixel format to convert to given a certain source pixel + * format. When converting from one pixel format to another, information loss + * may occur. For example, when converting from RGB24 to GRAY, the color + * information will be lost. Similarly, other losses occur when converting from + * some formats to other formats. avcodec_find_best_pix_fmt() searches which of + * the given pixel formats should be used to suffer the least amount of loss. + * The pixel formats from which it chooses one, are determined by the + * pix_fmt_mask parameter. + * + * @code + * src_pix_fmt = AV_PIX_FMT_YUV420P; + * pix_fmt_mask = (1 << AV_PIX_FMT_YUV422P) || (1 << AV_PIX_FMT_RGB24); + * dst_pix_fmt = avcodec_find_best_pix_fmt(pix_fmt_mask, src_pix_fmt, alpha, &loss); + * @endcode + * + * @param[in] pix_fmt_mask bitmask determining which pixel format to choose from + * @param[in] src_pix_fmt source pixel format + * @param[in] has_alpha Whether the source pixel format alpha channel is used. + * @param[out] loss_ptr Combination of flags informing you what kind of losses will occur. + * @return The best pixel format to convert to or -1 if none was found. + */ +attribute_deprecated +enum AVPixelFormat avcodec_find_best_pix_fmt(int64_t pix_fmt_mask, enum AVPixelFormat src_pix_fmt, + int has_alpha, int *loss_ptr); +#endif /* FF_API_FIND_BEST_PIX_FMT */ + +/** + * Find the best pixel format to convert to given a certain source pixel + * format. When converting from one pixel format to another, information loss + * may occur. For example, when converting from RGB24 to GRAY, the color + * information will be lost. Similarly, other losses occur when converting from + * some formats to other formats. avcodec_find_best_pix_fmt2() searches which of + * the given pixel formats should be used to suffer the least amount of loss. + * The pixel formats from which it chooses one, are determined by the + * pix_fmt_list parameter. + * + * + * @param[in] pix_fmt_list AV_PIX_FMT_NONE terminated array of pixel formats to choose from + * @param[in] src_pix_fmt source pixel format + * @param[in] has_alpha Whether the source pixel format alpha channel is used. + * @param[out] loss_ptr Combination of flags informing you what kind of losses will occur. + * @return The best pixel format to convert to or -1 if none was found. + */ +enum AVPixelFormat avcodec_find_best_pix_fmt2(enum AVPixelFormat *pix_fmt_list, + enum AVPixelFormat src_pix_fmt, + int has_alpha, int *loss_ptr); + +enum AVPixelFormat avcodec_default_get_format(struct AVCodecContext *s, const enum AVPixelFormat * fmt); + +/** + * @} + */ + +void avcodec_set_dimensions(AVCodecContext *s, int width, int height); + +/** + * Put a string representing the codec tag codec_tag in buf. + * + * @param buf_size size in bytes of buf + * @return the length of the string that would have been generated if + * enough space had been available, excluding the trailing null + */ +size_t av_get_codec_tag_string(char *buf, size_t buf_size, unsigned int codec_tag); + +void avcodec_string(char *buf, int buf_size, AVCodecContext *enc, int encode); + +/** + * Return a name for the specified profile, if available. + * + * @param codec the codec that is searched for the given profile + * @param profile the profile value for which a name is requested + * @return A name for the profile if found, NULL otherwise. + */ +const char *av_get_profile_name(const AVCodec *codec, int profile); + +int avcodec_default_execute(AVCodecContext *c, int (*func)(AVCodecContext *c2, void *arg2),void *arg, int *ret, int count, int size); +int avcodec_default_execute2(AVCodecContext *c, int (*func)(AVCodecContext *c2, void *arg2, int, int),void *arg, int *ret, int count); +//FIXME func typedef + +/** + * Fill audio frame data and linesize. + * AVFrame extended_data channel pointers are allocated if necessary for + * planar audio. + * + * @param frame the AVFrame + * frame->nb_samples must be set prior to calling the + * function. This function fills in frame->data, + * frame->extended_data, frame->linesize[0]. + * @param nb_channels channel count + * @param sample_fmt sample format + * @param buf buffer to use for frame data + * @param buf_size size of buffer + * @param align plane size sample alignment (0 = default) + * @return 0 on success, negative error code on failure + */ +int avcodec_fill_audio_frame(AVFrame *frame, int nb_channels, + enum AVSampleFormat sample_fmt, const uint8_t *buf, + int buf_size, int align); + +/** + * Flush buffers, should be called when seeking or when switching to a different stream. + */ +void avcodec_flush_buffers(AVCodecContext *avctx); + +void avcodec_default_free_buffers(AVCodecContext *s); + +/** + * Return codec bits per sample. + * + * @param[in] codec_id the codec + * @return Number of bits per sample or zero if unknown for the given codec. + */ +int av_get_bits_per_sample(enum AVCodecID codec_id); + +/** + * Return codec bits per sample. + * Only return non-zero if the bits per sample is exactly correct, not an + * approximation. + * + * @param[in] codec_id the codec + * @return Number of bits per sample or zero if unknown for the given codec. + */ +int av_get_exact_bits_per_sample(enum AVCodecID codec_id); + +/** + * Return audio frame duration. + * + * @param avctx codec context + * @param frame_bytes size of the frame, or 0 if unknown + * @return frame duration, in samples, if known. 0 if not able to + * determine. + */ +int av_get_audio_frame_duration(AVCodecContext *avctx, int frame_bytes); + + +typedef struct AVBitStreamFilterContext { + void *priv_data; + struct AVBitStreamFilter *filter; + AVCodecParserContext *parser; + struct AVBitStreamFilterContext *next; +} AVBitStreamFilterContext; + + +typedef struct AVBitStreamFilter { + const char *name; + int priv_data_size; + int (*filter)(AVBitStreamFilterContext *bsfc, + AVCodecContext *avctx, const char *args, + uint8_t **poutbuf, int *poutbuf_size, + const uint8_t *buf, int buf_size, int keyframe); + void (*close)(AVBitStreamFilterContext *bsfc); + struct AVBitStreamFilter *next; +} AVBitStreamFilter; + +void av_register_bitstream_filter(AVBitStreamFilter *bsf); +AVBitStreamFilterContext *av_bitstream_filter_init(const char *name); +int av_bitstream_filter_filter(AVBitStreamFilterContext *bsfc, + AVCodecContext *avctx, const char *args, + uint8_t **poutbuf, int *poutbuf_size, + const uint8_t *buf, int buf_size, int keyframe); +void av_bitstream_filter_close(AVBitStreamFilterContext *bsf); + +AVBitStreamFilter *av_bitstream_filter_next(AVBitStreamFilter *f); + +/* memory */ + +/** + * Reallocate the given block if it is not large enough, otherwise do nothing. + * + * @see av_realloc + */ +void *av_fast_realloc(void *ptr, unsigned int *size, size_t min_size); + +/** + * Allocate a buffer, reusing the given one if large enough. + * + * Contrary to av_fast_realloc the current buffer contents might not be + * preserved and on error the old buffer is freed, thus no special + * handling to avoid memleaks is necessary. + * + * @param ptr pointer to pointer to already allocated buffer, overwritten with pointer to new buffer + * @param size size of the buffer *ptr points to + * @param min_size minimum size of *ptr buffer after returning, *ptr will be NULL and + * *size 0 if an error occurred. + */ +void av_fast_malloc(void *ptr, unsigned int *size, size_t min_size); + +/** + * Allocate a buffer with padding, reusing the given one if large enough. + * + * Same behaviour av_fast_malloc but the buffer has additional + * FF_INPUT_PADDING_SIZE at the end which will always memset to 0. + * + */ +void av_fast_padded_malloc(void *ptr, unsigned int *size, size_t min_size); + +/** + * Encode extradata length to a buffer. Used by xiph codecs. + * + * @param s buffer to write to; must be at least (v/255+1) bytes long + * @param v size of extradata in bytes + * @return number of bytes written to the buffer. + */ +unsigned int av_xiphlacing(unsigned char *s, unsigned int v); + +/** + * Log a generic warning message about a missing feature. This function is + * intended to be used internally by Libav (libavcodec, libavformat, etc.) + * only, and would normally not be used by applications. + * @param[in] avc a pointer to an arbitrary struct of which the first field is + * a pointer to an AVClass struct + * @param[in] feature string containing the name of the missing feature + * @param[in] want_sample indicates if samples are wanted which exhibit this feature. + * If want_sample is non-zero, additional verbage will be added to the log + * message which tells the user how to report samples to the development + * mailing list. + */ +void av_log_missing_feature(void *avc, const char *feature, int want_sample); + +/** + * Log a generic warning message asking for a sample. This function is + * intended to be used internally by Libav (libavcodec, libavformat, etc.) + * only, and would normally not be used by applications. + * @param[in] avc a pointer to an arbitrary struct of which the first field is + * a pointer to an AVClass struct + * @param[in] msg string containing an optional message, or NULL if no message + */ +void av_log_ask_for_sample(void *avc, const char *msg, ...) av_printf_format(2, 3); + +/** + * Register the hardware accelerator hwaccel. + */ +void av_register_hwaccel(AVHWAccel *hwaccel); + +/** + * If hwaccel is NULL, returns the first registered hardware accelerator, + * if hwaccel is non-NULL, returns the next registered hardware accelerator + * after hwaccel, or NULL if hwaccel is the last one. + */ +AVHWAccel *av_hwaccel_next(AVHWAccel *hwaccel); + + +/** + * Lock operation used by lockmgr + */ +enum AVLockOp { + AV_LOCK_CREATE, ///< Create a mutex + AV_LOCK_OBTAIN, ///< Lock the mutex + AV_LOCK_RELEASE, ///< Unlock the mutex + AV_LOCK_DESTROY, ///< Free mutex resources +}; + +/** + * Register a user provided lock manager supporting the operations + * specified by AVLockOp. mutex points to a (void *) where the + * lockmgr should store/get a pointer to a user allocated mutex. It's + * NULL upon AV_LOCK_CREATE and != NULL for all other ops. + * + * @param cb User defined callback. Note: Libav may invoke calls to this + * callback during the call to av_lockmgr_register(). + * Thus, the application must be prepared to handle that. + * If cb is set to NULL the lockmgr will be unregistered. + * Also note that during unregistration the previously registered + * lockmgr callback may also be invoked. + */ +int av_lockmgr_register(int (*cb)(void **mutex, enum AVLockOp op)); + +/** + * Get the type of the given codec. + */ +enum AVMediaType avcodec_get_type(enum AVCodecID codec_id); + +/** + * @return a positive value if s is open (i.e. avcodec_open2() was called on it + * with no corresponding avcodec_close()), 0 otherwise. + */ +int avcodec_is_open(AVCodecContext *s); + +/** + * @return a non-zero number if codec is an encoder, zero otherwise + */ +int av_codec_is_encoder(const AVCodec *codec); + +/** + * @return a non-zero number if codec is a decoder, zero otherwise + */ +int av_codec_is_decoder(const AVCodec *codec); + +/** + * @return descriptor for given codec ID or NULL if no descriptor exists. + */ +const AVCodecDescriptor *avcodec_descriptor_get(enum AVCodecID id); + +/** + * Iterate over all codec descriptors known to libavcodec. + * + * @param prev previous descriptor. NULL to get the first descriptor. + * + * @return next descriptor or NULL after the last descriptor + */ +const AVCodecDescriptor *avcodec_descriptor_next(const AVCodecDescriptor *prev); + +/** + * @return codec descriptor with the given name or NULL if no such descriptor + * exists. + */ +const AVCodecDescriptor *avcodec_descriptor_get_by_name(const char *name); + +/** + * @} + */ + +#endif /* AVCODEC_AVCODEC_H */ diff -r 3331b30e4ef1 -r 88fde28bbda6 misc/winutils/include/libavcodec/avfft.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/misc/winutils/include/libavcodec/avfft.h Sat Nov 03 00:34:35 2012 +0400 @@ -0,0 +1,116 @@ +/* + * This file is part of Libav. + * + * Libav is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * Libav 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 + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with Libav; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ + +#ifndef AVCODEC_AVFFT_H +#define AVCODEC_AVFFT_H + +/** + * @file + * @ingroup lavc_fft + * FFT functions + */ + +/** + * @defgroup lavc_fft FFT functions + * @ingroup lavc_misc + * + * @{ + */ + +typedef float FFTSample; + +typedef struct FFTComplex { + FFTSample re, im; +} FFTComplex; + +typedef struct FFTContext FFTContext; + +/** + * Set up a complex FFT. + * @param nbits log2 of the length of the input array + * @param inverse if 0 perform the forward transform, if 1 perform the inverse + */ +FFTContext *av_fft_init(int nbits, int inverse); + +/** + * Do the permutation needed BEFORE calling ff_fft_calc(). + */ +void av_fft_permute(FFTContext *s, FFTComplex *z); + +/** + * Do a complex FFT with the parameters defined in av_fft_init(). The + * input data must be permuted before. No 1.0/sqrt(n) normalization is done. + */ +void av_fft_calc(FFTContext *s, FFTComplex *z); + +void av_fft_end(FFTContext *s); + +FFTContext *av_mdct_init(int nbits, int inverse, double scale); +void av_imdct_calc(FFTContext *s, FFTSample *output, const FFTSample *input); +void av_imdct_half(FFTContext *s, FFTSample *output, const FFTSample *input); +void av_mdct_calc(FFTContext *s, FFTSample *output, const FFTSample *input); +void av_mdct_end(FFTContext *s); + +/* Real Discrete Fourier Transform */ + +enum RDFTransformType { + DFT_R2C, + IDFT_C2R, + IDFT_R2C, + DFT_C2R, +}; + +typedef struct RDFTContext RDFTContext; + +/** + * Set up a real FFT. + * @param nbits log2 of the length of the input array + * @param trans the type of transform + */ +RDFTContext *av_rdft_init(int nbits, enum RDFTransformType trans); +void av_rdft_calc(RDFTContext *s, FFTSample *data); +void av_rdft_end(RDFTContext *s); + +/* Discrete Cosine Transform */ + +typedef struct DCTContext DCTContext; + +enum DCTTransformType { + DCT_II = 0, + DCT_III, + DCT_I, + DST_I, +}; + +/** + * Set up DCT. + * @param nbits size of the input array: + * (1 << nbits) for DCT-II, DCT-III and DST-I + * (1 << nbits) + 1 for DCT-I + * + * @note the first element of the input of DST-I is ignored + */ +DCTContext *av_dct_init(int nbits, enum DCTTransformType type); +void av_dct_calc(DCTContext *s, FFTSample *data); +void av_dct_end (DCTContext *s); + +/** + * @} + */ + +#endif /* AVCODEC_AVFFT_H */ diff -r 3331b30e4ef1 -r 88fde28bbda6 misc/winutils/include/libavcodec/dxva2.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/misc/winutils/include/libavcodec/dxva2.h Sat Nov 03 00:34:35 2012 +0400 @@ -0,0 +1,88 @@ +/* + * DXVA2 HW acceleration + * + * copyright (c) 2009 Laurent Aimar + * + * This file is part of Libav. + * + * Libav is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * Libav 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 + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with Libav; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ + +#ifndef AVCODEC_DXVA_H +#define AVCODEC_DXVA_H + +/** + * @file + * @ingroup lavc_codec_hwaccel_dxva2 + * Public libavcodec DXVA2 header. + */ + +#include + +#include +#include + +/** + * @defgroup lavc_codec_hwaccel_dxva2 DXVA2 + * @ingroup lavc_codec_hwaccel + * + * @{ + */ + +#define FF_DXVA2_WORKAROUND_SCALING_LIST_ZIGZAG 1 ///< Work around for DXVA2 and old UVD/UVD+ ATI video cards + +/** + * This structure is used to provides the necessary configurations and data + * to the DXVA2 Libav HWAccel implementation. + * + * The application must make it available as AVCodecContext.hwaccel_context. + */ +struct dxva_context { + /** + * DXVA2 decoder object + */ + IDirectXVideoDecoder *decoder; + + /** + * DXVA2 configuration used to create the decoder + */ + const DXVA2_ConfigPictureDecode *cfg; + + /** + * The number of surface in the surface array + */ + unsigned surface_count; + + /** + * The array of Direct3D surfaces used to create the decoder + */ + LPDIRECT3DSURFACE9 *surface; + + /** + * A bit field configuring the workarounds needed for using the decoder + */ + uint64_t workaround; + + /** + * Private to the Libav AVHWAccel implementation + */ + unsigned report_id; +}; + +/** + * @} + */ + +#endif /* AVCODEC_DXVA_H */ diff -r 3331b30e4ef1 -r 88fde28bbda6 misc/winutils/include/libavcodec/old_codec_ids.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/misc/winutils/include/libavcodec/old_codec_ids.h Sat Nov 03 00:34:35 2012 +0400 @@ -0,0 +1,366 @@ +/* + * This file is part of Libav. + * + * Libav is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * Libav 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 + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with Libav; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ + +#ifndef AVCODEC_OLD_CODEC_IDS_H +#define AVCODEC_OLD_CODEC_IDS_H + +/* + * This header exists to prevent new codec IDs from being accidentally added to + * the deprecated list. + * Do not include it directly. It will be removed on next major bump + * + * Do not add new items to this list. Use the AVCodecID enum instead. + */ + + CODEC_ID_NONE = AV_CODEC_ID_NONE, + + /* video codecs */ + CODEC_ID_MPEG1VIDEO, + CODEC_ID_MPEG2VIDEO, ///< preferred ID for MPEG-1/2 video decoding + CODEC_ID_MPEG2VIDEO_XVMC, + CODEC_ID_H261, + CODEC_ID_H263, + CODEC_ID_RV10, + CODEC_ID_RV20, + CODEC_ID_MJPEG, + CODEC_ID_MJPEGB, + CODEC_ID_LJPEG, + CODEC_ID_SP5X, + CODEC_ID_JPEGLS, + CODEC_ID_MPEG4, + CODEC_ID_RAWVIDEO, + CODEC_ID_MSMPEG4V1, + CODEC_ID_MSMPEG4V2, + CODEC_ID_MSMPEG4V3, + CODEC_ID_WMV1, + CODEC_ID_WMV2, + CODEC_ID_H263P, + CODEC_ID_H263I, + CODEC_ID_FLV1, + CODEC_ID_SVQ1, + CODEC_ID_SVQ3, + CODEC_ID_DVVIDEO, + CODEC_ID_HUFFYUV, + CODEC_ID_CYUV, + CODEC_ID_H264, + CODEC_ID_INDEO3, + CODEC_ID_VP3, + CODEC_ID_THEORA, + CODEC_ID_ASV1, + CODEC_ID_ASV2, + CODEC_ID_FFV1, + CODEC_ID_4XM, + CODEC_ID_VCR1, + CODEC_ID_CLJR, + CODEC_ID_MDEC, + CODEC_ID_ROQ, + CODEC_ID_INTERPLAY_VIDEO, + CODEC_ID_XAN_WC3, + CODEC_ID_XAN_WC4, + CODEC_ID_RPZA, + CODEC_ID_CINEPAK, + CODEC_ID_WS_VQA, + CODEC_ID_MSRLE, + CODEC_ID_MSVIDEO1, + CODEC_ID_IDCIN, + CODEC_ID_8BPS, + CODEC_ID_SMC, + CODEC_ID_FLIC, + CODEC_ID_TRUEMOTION1, + CODEC_ID_VMDVIDEO, + CODEC_ID_MSZH, + CODEC_ID_ZLIB, + CODEC_ID_QTRLE, + CODEC_ID_SNOW, + CODEC_ID_TSCC, + CODEC_ID_ULTI, + CODEC_ID_QDRAW, + CODEC_ID_VIXL, + CODEC_ID_QPEG, + CODEC_ID_PNG, + CODEC_ID_PPM, + CODEC_ID_PBM, + CODEC_ID_PGM, + CODEC_ID_PGMYUV, + CODEC_ID_PAM, + CODEC_ID_FFVHUFF, + CODEC_ID_RV30, + CODEC_ID_RV40, + CODEC_ID_VC1, + CODEC_ID_WMV3, + CODEC_ID_LOCO, + CODEC_ID_WNV1, + CODEC_ID_AASC, + CODEC_ID_INDEO2, + CODEC_ID_FRAPS, + CODEC_ID_TRUEMOTION2, + CODEC_ID_BMP, + CODEC_ID_CSCD, + CODEC_ID_MMVIDEO, + CODEC_ID_ZMBV, + CODEC_ID_AVS, + CODEC_ID_SMACKVIDEO, + CODEC_ID_NUV, + CODEC_ID_KMVC, + CODEC_ID_FLASHSV, + CODEC_ID_CAVS, + CODEC_ID_JPEG2000, + CODEC_ID_VMNC, + CODEC_ID_VP5, + CODEC_ID_VP6, + CODEC_ID_VP6F, + CODEC_ID_TARGA, + CODEC_ID_DSICINVIDEO, + CODEC_ID_TIERTEXSEQVIDEO, + CODEC_ID_TIFF, + CODEC_ID_GIF, + CODEC_ID_DXA, + CODEC_ID_DNXHD, + CODEC_ID_THP, + CODEC_ID_SGI, + CODEC_ID_C93, + CODEC_ID_BETHSOFTVID, + CODEC_ID_PTX, + CODEC_ID_TXD, + CODEC_ID_VP6A, + CODEC_ID_AMV, + CODEC_ID_VB, + CODEC_ID_PCX, + CODEC_ID_SUNRAST, + CODEC_ID_INDEO4, + CODEC_ID_INDEO5, + CODEC_ID_MIMIC, + CODEC_ID_RL2, + CODEC_ID_ESCAPE124, + CODEC_ID_DIRAC, + CODEC_ID_BFI, + CODEC_ID_CMV, + CODEC_ID_MOTIONPIXELS, + CODEC_ID_TGV, + CODEC_ID_TGQ, + CODEC_ID_TQI, + CODEC_ID_AURA, + CODEC_ID_AURA2, + CODEC_ID_V210X, + CODEC_ID_TMV, + CODEC_ID_V210, + CODEC_ID_DPX, + CODEC_ID_MAD, + CODEC_ID_FRWU, + CODEC_ID_FLASHSV2, + CODEC_ID_CDGRAPHICS, + CODEC_ID_R210, + CODEC_ID_ANM, + CODEC_ID_BINKVIDEO, + CODEC_ID_IFF_ILBM, + CODEC_ID_IFF_BYTERUN1, + CODEC_ID_KGV1, + CODEC_ID_YOP, + CODEC_ID_VP8, + CODEC_ID_PICTOR, + CODEC_ID_ANSI, + CODEC_ID_A64_MULTI, + CODEC_ID_A64_MULTI5, + CODEC_ID_R10K, + CODEC_ID_MXPEG, + CODEC_ID_LAGARITH, + CODEC_ID_PRORES, + CODEC_ID_JV, + CODEC_ID_DFA, + CODEC_ID_WMV3IMAGE, + CODEC_ID_VC1IMAGE, + CODEC_ID_UTVIDEO, + CODEC_ID_BMV_VIDEO, + CODEC_ID_VBLE, + CODEC_ID_DXTORY, + CODEC_ID_V410, + CODEC_ID_XWD, + CODEC_ID_CDXL, + CODEC_ID_XBM, + CODEC_ID_ZEROCODEC, + CODEC_ID_MSS1, + CODEC_ID_MSA1, + CODEC_ID_TSCC2, + CODEC_ID_MTS2, + CODEC_ID_CLLC, + + /* various PCM "codecs" */ + CODEC_ID_FIRST_AUDIO = 0x10000, ///< A dummy id pointing at the start of audio codecs + CODEC_ID_PCM_S16LE = 0x10000, + CODEC_ID_PCM_S16BE, + CODEC_ID_PCM_U16LE, + CODEC_ID_PCM_U16BE, + CODEC_ID_PCM_S8, + CODEC_ID_PCM_U8, + CODEC_ID_PCM_MULAW, + CODEC_ID_PCM_ALAW, + CODEC_ID_PCM_S32LE, + CODEC_ID_PCM_S32BE, + CODEC_ID_PCM_U32LE, + CODEC_ID_PCM_U32BE, + CODEC_ID_PCM_S24LE, + CODEC_ID_PCM_S24BE, + CODEC_ID_PCM_U24LE, + CODEC_ID_PCM_U24BE, + CODEC_ID_PCM_S24DAUD, + CODEC_ID_PCM_ZORK, + CODEC_ID_PCM_S16LE_PLANAR, + CODEC_ID_PCM_DVD, + CODEC_ID_PCM_F32BE, + CODEC_ID_PCM_F32LE, + CODEC_ID_PCM_F64BE, + CODEC_ID_PCM_F64LE, + CODEC_ID_PCM_BLURAY, + CODEC_ID_PCM_LXF, + CODEC_ID_S302M, + CODEC_ID_PCM_S8_PLANAR, + + /* various ADPCM codecs */ + CODEC_ID_ADPCM_IMA_QT = 0x11000, + CODEC_ID_ADPCM_IMA_WAV, + CODEC_ID_ADPCM_IMA_DK3, + CODEC_ID_ADPCM_IMA_DK4, + CODEC_ID_ADPCM_IMA_WS, + CODEC_ID_ADPCM_IMA_SMJPEG, + CODEC_ID_ADPCM_MS, + CODEC_ID_ADPCM_4XM, + CODEC_ID_ADPCM_XA, + CODEC_ID_ADPCM_ADX, + CODEC_ID_ADPCM_EA, + CODEC_ID_ADPCM_G726, + CODEC_ID_ADPCM_CT, + CODEC_ID_ADPCM_SWF, + CODEC_ID_ADPCM_YAMAHA, + CODEC_ID_ADPCM_SBPRO_4, + CODEC_ID_ADPCM_SBPRO_3, + CODEC_ID_ADPCM_SBPRO_2, + CODEC_ID_ADPCM_THP, + CODEC_ID_ADPCM_IMA_AMV, + CODEC_ID_ADPCM_EA_R1, + CODEC_ID_ADPCM_EA_R3, + CODEC_ID_ADPCM_EA_R2, + CODEC_ID_ADPCM_IMA_EA_SEAD, + CODEC_ID_ADPCM_IMA_EA_EACS, + CODEC_ID_ADPCM_EA_XAS, + CODEC_ID_ADPCM_EA_MAXIS_XA, + CODEC_ID_ADPCM_IMA_ISS, + CODEC_ID_ADPCM_G722, + CODEC_ID_ADPCM_IMA_APC, + + /* AMR */ + CODEC_ID_AMR_NB = 0x12000, + CODEC_ID_AMR_WB, + + /* RealAudio codecs*/ + CODEC_ID_RA_144 = 0x13000, + CODEC_ID_RA_288, + + /* various DPCM codecs */ + CODEC_ID_ROQ_DPCM = 0x14000, + CODEC_ID_INTERPLAY_DPCM, + CODEC_ID_XAN_DPCM, + CODEC_ID_SOL_DPCM, + + /* audio codecs */ + CODEC_ID_MP2 = 0x15000, + CODEC_ID_MP3, ///< preferred ID for decoding MPEG audio layer 1, 2 or 3 + CODEC_ID_AAC, + CODEC_ID_AC3, + CODEC_ID_DTS, + CODEC_ID_VORBIS, + CODEC_ID_DVAUDIO, + CODEC_ID_WMAV1, + CODEC_ID_WMAV2, + CODEC_ID_MACE3, + CODEC_ID_MACE6, + CODEC_ID_VMDAUDIO, + CODEC_ID_FLAC, + CODEC_ID_MP3ADU, + CODEC_ID_MP3ON4, + CODEC_ID_SHORTEN, + CODEC_ID_ALAC, + CODEC_ID_WESTWOOD_SND1, + CODEC_ID_GSM, ///< as in Berlin toast format + CODEC_ID_QDM2, + CODEC_ID_COOK, + CODEC_ID_TRUESPEECH, + CODEC_ID_TTA, + CODEC_ID_SMACKAUDIO, + CODEC_ID_QCELP, + CODEC_ID_WAVPACK, + CODEC_ID_DSICINAUDIO, + CODEC_ID_IMC, + CODEC_ID_MUSEPACK7, + CODEC_ID_MLP, + CODEC_ID_GSM_MS, /* as found in WAV */ + CODEC_ID_ATRAC3, + CODEC_ID_VOXWARE, + CODEC_ID_APE, + CODEC_ID_NELLYMOSER, + CODEC_ID_MUSEPACK8, + CODEC_ID_SPEEX, + CODEC_ID_WMAVOICE, + CODEC_ID_WMAPRO, + CODEC_ID_WMALOSSLESS, + CODEC_ID_ATRAC3P, + CODEC_ID_EAC3, + CODEC_ID_SIPR, + CODEC_ID_MP1, + CODEC_ID_TWINVQ, + CODEC_ID_TRUEHD, + CODEC_ID_MP4ALS, + CODEC_ID_ATRAC1, + CODEC_ID_BINKAUDIO_RDFT, + CODEC_ID_BINKAUDIO_DCT, + CODEC_ID_AAC_LATM, + CODEC_ID_QDMC, + CODEC_ID_CELT, + CODEC_ID_G723_1, + CODEC_ID_G729, + CODEC_ID_8SVX_EXP, + CODEC_ID_8SVX_FIB, + CODEC_ID_BMV_AUDIO, + CODEC_ID_RALF, + CODEC_ID_IAC, + CODEC_ID_ILBC, + + /* subtitle codecs */ + CODEC_ID_FIRST_SUBTITLE = 0x17000, ///< A dummy ID pointing at the start of subtitle codecs. + CODEC_ID_DVD_SUBTITLE = 0x17000, + CODEC_ID_DVB_SUBTITLE, + CODEC_ID_TEXT, ///< raw UTF-8 text + CODEC_ID_XSUB, + CODEC_ID_SSA, + CODEC_ID_MOV_TEXT, + CODEC_ID_HDMV_PGS_SUBTITLE, + CODEC_ID_DVB_TELETEXT, + CODEC_ID_SRT, + + /* other specific kind of codecs (generally used for attachments) */ + CODEC_ID_FIRST_UNKNOWN = 0x18000, ///< A dummy ID pointing at the start of various fake codecs. + CODEC_ID_TTF = 0x18000, + + CODEC_ID_PROBE = 0x19000, ///< codec_id is not known (like CODEC_ID_NONE) but lavf should attempt to identify it + + CODEC_ID_MPEG2TS = 0x20000, /**< _FAKE_ codec to indicate a raw MPEG-2 TS + * stream (only used by libavformat) */ + CODEC_ID_MPEG4SYSTEMS = 0x20001, /**< _FAKE_ codec to indicate a MPEG-4 Systems + * stream (only used by libavformat) */ + CODEC_ID_FFMETADATA = 0x21000, ///< Dummy codec for streams containing only metadata information. + +#endif /* AVCODEC_OLD_CODEC_IDS_H */ diff -r 3331b30e4ef1 -r 88fde28bbda6 misc/winutils/include/libavcodec/vaapi.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/misc/winutils/include/libavcodec/vaapi.h Sat Nov 03 00:34:35 2012 +0400 @@ -0,0 +1,173 @@ +/* + * Video Acceleration API (shared data between Libav and the video player) + * HW decode acceleration for MPEG-2, MPEG-4, H.264 and VC-1 + * + * Copyright (C) 2008-2009 Splitted-Desktop Systems + * + * This file is part of Libav. + * + * Libav is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * Libav 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 + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with Libav; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ + +#ifndef AVCODEC_VAAPI_H +#define AVCODEC_VAAPI_H + +/** + * @file + * @ingroup lavc_codec_hwaccel_vaapi + * Public libavcodec VA API header. + */ + +#include + +/** + * @defgroup lavc_codec_hwaccel_vaapi VA API Decoding + * @ingroup lavc_codec_hwaccel + * @{ + */ + +/** + * This structure is used to share data between the Libav library and + * the client video application. + * This shall be zero-allocated and available as + * AVCodecContext.hwaccel_context. All user members can be set once + * during initialization or through each AVCodecContext.get_buffer() + * function call. In any case, they must be valid prior to calling + * decoding functions. + */ +struct vaapi_context { + /** + * Window system dependent data + * + * - encoding: unused + * - decoding: Set by user + */ + void *display; + + /** + * Configuration ID + * + * - encoding: unused + * - decoding: Set by user + */ + uint32_t config_id; + + /** + * Context ID (video decode pipeline) + * + * - encoding: unused + * - decoding: Set by user + */ + uint32_t context_id; + + /** + * VAPictureParameterBuffer ID + * + * - encoding: unused + * - decoding: Set by libavcodec + */ + uint32_t pic_param_buf_id; + + /** + * VAIQMatrixBuffer ID + * + * - encoding: unused + * - decoding: Set by libavcodec + */ + uint32_t iq_matrix_buf_id; + + /** + * VABitPlaneBuffer ID (for VC-1 decoding) + * + * - encoding: unused + * - decoding: Set by libavcodec + */ + uint32_t bitplane_buf_id; + + /** + * Slice parameter/data buffer IDs + * + * - encoding: unused + * - decoding: Set by libavcodec + */ + uint32_t *slice_buf_ids; + + /** + * Number of effective slice buffer IDs to send to the HW + * + * - encoding: unused + * - decoding: Set by libavcodec + */ + unsigned int n_slice_buf_ids; + + /** + * Size of pre-allocated slice_buf_ids + * + * - encoding: unused + * - decoding: Set by libavcodec + */ + unsigned int slice_buf_ids_alloc; + + /** + * Pointer to VASliceParameterBuffers + * + * - encoding: unused + * - decoding: Set by libavcodec + */ + void *slice_params; + + /** + * Size of a VASliceParameterBuffer element + * + * - encoding: unused + * - decoding: Set by libavcodec + */ + unsigned int slice_param_size; + + /** + * Size of pre-allocated slice_params + * + * - encoding: unused + * - decoding: Set by libavcodec + */ + unsigned int slice_params_alloc; + + /** + * Number of slices currently filled in + * + * - encoding: unused + * - decoding: Set by libavcodec + */ + unsigned int slice_count; + + /** + * Pointer to slice data buffer base + * - encoding: unused + * - decoding: Set by libavcodec + */ + const uint8_t *slice_data; + + /** + * Current size of slice data + * + * - encoding: unused + * - decoding: Set by libavcodec + */ + uint32_t slice_data_size; +}; + +/* @} */ + +#endif /* AVCODEC_VAAPI_H */ diff -r 3331b30e4ef1 -r 88fde28bbda6 misc/winutils/include/libavcodec/vda.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/misc/winutils/include/libavcodec/vda.h Sat Nov 03 00:34:35 2012 +0400 @@ -0,0 +1,217 @@ +/* + * VDA HW acceleration + * + * copyright (c) 2011 Sebastien Zwickert + * + * This file is part of Libav. + * + * Libav is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * Libav 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 + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with Libav; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ + +#ifndef AVCODEC_VDA_H +#define AVCODEC_VDA_H + +/** + * @file + * @ingroup lavc_codec_hwaccel_vda + * Public libavcodec VDA header. + */ + +#include "libavcodec/version.h" + +#if FF_API_VDA_ASYNC +#include +#endif + +#include + +// emmintrin.h is unable to compile with -std=c99 -Werror=missing-prototypes +// http://openradar.appspot.com/8026390 +#undef __GNUC_STDC_INLINE__ + +#define Picture QuickdrawPicture +#include +#undef Picture + +/** + * @defgroup lavc_codec_hwaccel_vda VDA + * @ingroup lavc_codec_hwaccel + * + * @{ + */ + +#if FF_API_VDA_ASYNC +/** + * This structure is used to store decoded frame information and data. + * + * @deprecated Use synchronous decoding mode. + */ +typedef struct vda_frame { + /** + * The PTS of the frame. + * + * - encoding: unused + * - decoding: Set/Unset by libavcodec. + */ + int64_t pts; + + /** + * The CoreVideo buffer that contains the decoded data. + * + * - encoding: unused + * - decoding: Set/Unset by libavcodec. + */ + CVPixelBufferRef cv_buffer; + + /** + * A pointer to the next frame. + * + * - encoding: unused + * - decoding: Set/Unset by libavcodec. + */ + struct vda_frame *next_frame; +} vda_frame; +#endif + +/** + * This structure is used to provide the necessary configurations and data + * to the VDA Libav HWAccel implementation. + * + * The application must make it available as AVCodecContext.hwaccel_context. + */ +struct vda_context { + /** + * VDA decoder object. + * + * - encoding: unused + * - decoding: Set/Unset by libavcodec. + */ + VDADecoder decoder; + + /** + * The Core Video pixel buffer that contains the current image data. + * + * encoding: unused + * decoding: Set by libavcodec. Unset by user. + */ + CVPixelBufferRef cv_buffer; + + /** + * Use the hardware decoder in synchronous mode. + * + * encoding: unused + * decoding: Set by user. + */ + int use_sync_decoding; + +#if FF_API_VDA_ASYNC + /** + * VDA frames queue ordered by presentation timestamp. + * + * @deprecated Use synchronous decoding mode. + * + * - encoding: unused + * - decoding: Set/Unset by libavcodec. + */ + vda_frame *queue; + + /** + * Mutex for locking queue operations. + * + * @deprecated Use synchronous decoding mode. + * + * - encoding: unused + * - decoding: Set/Unset by libavcodec. + */ + pthread_mutex_t queue_mutex; +#endif + + /** + * The frame width. + * + * - encoding: unused + * - decoding: Set/Unset by user. + */ + int width; + + /** + * The frame height. + * + * - encoding: unused + * - decoding: Set/Unset by user. + */ + int height; + + /** + * The frame format. + * + * - encoding: unused + * - decoding: Set/Unset by user. + */ + int format; + + /** + * The pixel format for output image buffers. + * + * - encoding: unused + * - decoding: Set/Unset by user. + */ + OSType cv_pix_fmt_type; + + /** + * The current bitstream buffer. + */ + uint8_t *priv_bitstream; + + /** + * The current size of the bitstream. + */ + int priv_bitstream_size; + + /** + * The reference size used for fast reallocation. + */ + int priv_allocated_size; +}; + +/** Create the video decoder. */ +int ff_vda_create_decoder(struct vda_context *vda_ctx, + uint8_t *extradata, + int extradata_size); + +/** Destroy the video decoder. */ +int ff_vda_destroy_decoder(struct vda_context *vda_ctx); + +#if FF_API_VDA_ASYNC +/** + * Return the top frame of the queue. + * + * @deprecated Use synchronous decoding mode. + */ +vda_frame *ff_vda_queue_pop(struct vda_context *vda_ctx); + +/** + * Release the given frame. + * + * @deprecated Use synchronous decoding mode. + */ +void ff_vda_release_vda_frame(vda_frame *frame); +#endif + +/** + * @} + */ + +#endif /* AVCODEC_VDA_H */ diff -r 3331b30e4ef1 -r 88fde28bbda6 misc/winutils/include/libavcodec/vdpau.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/misc/winutils/include/libavcodec/vdpau.h Sat Nov 03 00:34:35 2012 +0400 @@ -0,0 +1,94 @@ +/* + * The Video Decode and Presentation API for UNIX (VDPAU) is used for + * hardware-accelerated decoding of MPEG-1/2, H.264 and VC-1. + * + * Copyright (C) 2008 NVIDIA + * + * This file is part of Libav. + * + * Libav is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * Libav 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 + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with Libav; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ + +#ifndef AVCODEC_VDPAU_H +#define AVCODEC_VDPAU_H + +/** + * @file + * @ingroup lavc_codec_hwaccel_vdpau + * Public libavcodec VDPAU header. + */ + + +/** + * @defgroup lavc_codec_hwaccel_vdpau VDPAU Decoder and Renderer + * @ingroup lavc_codec_hwaccel + * + * VDPAU hardware acceleration has two modules + * - VDPAU decoding + * - VDPAU presentation + * + * The VDPAU decoding module parses all headers using Libav + * parsing mechanisms and uses VDPAU for the actual decoding. + * + * As per the current implementation, the actual decoding + * and rendering (API calls) are done as part of the VDPAU + * presentation (vo_vdpau.c) module. + * + * @{ + */ + +#include +#include + +/** @brief The videoSurface is used for rendering. */ +#define FF_VDPAU_STATE_USED_FOR_RENDER 1 + +/** + * @brief The videoSurface is needed for reference/prediction. + * The codec manipulates this. + */ +#define FF_VDPAU_STATE_USED_FOR_REFERENCE 2 + +/** + * @brief This structure is used as a callback between the Libav + * decoder (vd_) and presentation (vo_) module. + * This is used for defining a video frame containing surface, + * picture parameter, bitstream information etc which are passed + * between the Libav decoder and its clients. + */ +struct vdpau_render_state { + VdpVideoSurface surface; ///< Used as rendered surface, never changed. + + int state; ///< Holds FF_VDPAU_STATE_* values. + + /** picture parameter information for all supported codecs */ + union VdpPictureInfo { + VdpPictureInfoH264 h264; + VdpPictureInfoMPEG1Or2 mpeg; + VdpPictureInfoVC1 vc1; + VdpPictureInfoMPEG4Part2 mpeg4; + } info; + + /** Describe size/location of the compressed video data. + Set to 0 when freeing bitstream_buffers. */ + int bitstream_buffers_allocated; + int bitstream_buffers_used; + /** The user is responsible for freeing this buffer using av_freep(). */ + VdpBitstreamBuffer *bitstream_buffers; +}; + +/* @}*/ + +#endif /* AVCODEC_VDPAU_H */ diff -r 3331b30e4ef1 -r 88fde28bbda6 misc/winutils/include/libavcodec/version.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/misc/winutils/include/libavcodec/version.h Sat Nov 03 00:34:35 2012 +0400 @@ -0,0 +1,95 @@ +/* + * + * This file is part of Libav. + * + * Libav is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * Libav 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 + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with Libav; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ + +#ifndef AVCODEC_VERSION_H +#define AVCODEC_VERSION_H + +/** + * @file + * @ingroup libavc + * Libavcodec version macros. + */ + +#define LIBAVCODEC_VERSION_MAJOR 54 +#define LIBAVCODEC_VERSION_MINOR 31 +#define LIBAVCODEC_VERSION_MICRO 0 + +#define LIBAVCODEC_VERSION_INT AV_VERSION_INT(LIBAVCODEC_VERSION_MAJOR, \ + LIBAVCODEC_VERSION_MINOR, \ + LIBAVCODEC_VERSION_MICRO) +#define LIBAVCODEC_VERSION AV_VERSION(LIBAVCODEC_VERSION_MAJOR, \ + LIBAVCODEC_VERSION_MINOR, \ + LIBAVCODEC_VERSION_MICRO) +#define LIBAVCODEC_BUILD LIBAVCODEC_VERSION_INT + +#define LIBAVCODEC_IDENT "Lavc" AV_STRINGIFY(LIBAVCODEC_VERSION) + +/** + * FF_API_* defines may be placed below to indicate public API that will be + * dropped at a future version bump. The defines themselves are not part of + * the public API and may change, break or disappear at any time. + */ + +#ifndef FF_API_REQUEST_CHANNELS +#define FF_API_REQUEST_CHANNELS (LIBAVCODEC_VERSION_MAJOR < 55) +#endif +#ifndef FF_API_OLD_DECODE_AUDIO +#define FF_API_OLD_DECODE_AUDIO (LIBAVCODEC_VERSION_MAJOR < 55) +#endif +#ifndef FF_API_OLD_ENCODE_AUDIO +#define FF_API_OLD_ENCODE_AUDIO (LIBAVCODEC_VERSION_MAJOR < 55) +#endif +#ifndef FF_API_OLD_ENCODE_VIDEO +#define FF_API_OLD_ENCODE_VIDEO (LIBAVCODEC_VERSION_MAJOR < 55) +#endif +#ifndef FF_API_MPV_GLOBAL_OPTS +#define FF_API_MPV_GLOBAL_OPTS (LIBAVCODEC_VERSION_MAJOR < 55) +#endif +#ifndef FF_API_COLOR_TABLE_ID +#define FF_API_COLOR_TABLE_ID (LIBAVCODEC_VERSION_MAJOR < 55) +#endif +#ifndef FF_API_INTER_THRESHOLD +#define FF_API_INTER_THRESHOLD (LIBAVCODEC_VERSION_MAJOR < 55) +#endif +#ifndef FF_API_SUB_ID +#define FF_API_SUB_ID (LIBAVCODEC_VERSION_MAJOR < 55) +#endif +#ifndef FF_API_DSP_MASK +#define FF_API_DSP_MASK (LIBAVCODEC_VERSION_MAJOR < 55) +#endif +#ifndef FF_API_FIND_BEST_PIX_FMT +#define FF_API_FIND_BEST_PIX_FMT (LIBAVCODEC_VERSION_MAJOR < 55) +#endif +#ifndef FF_API_CODEC_ID +#define FF_API_CODEC_ID (LIBAVCODEC_VERSION_MAJOR < 55) +#endif +#ifndef FF_API_VDA_ASYNC +#define FF_API_VDA_ASYNC (LIBAVCODEC_VERSION_MAJOR < 55) +#endif +#ifndef FF_API_AVCODEC_RESAMPLE +#define FF_API_AVCODEC_RESAMPLE (LIBAVCODEC_VERSION_MAJOR < 55) +#endif +#ifndef FF_API_LIBMPEG2 +#define FF_API_LIBMPEG2 (LIBAVCODEC_VERSION_MAJOR < 55) +#endif +#ifndef FF_API_MMI +#define FF_API_MMI (LIBAVCODEC_VERSION_MAJOR < 55) +#endif + +#endif /* AVCODEC_VERSION_H */ diff -r 3331b30e4ef1 -r 88fde28bbda6 misc/winutils/include/libavcodec/xvmc.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/misc/winutils/include/libavcodec/xvmc.h Sat Nov 03 00:34:35 2012 +0400 @@ -0,0 +1,168 @@ +/* + * Copyright (C) 2003 Ivan Kalvachev + * + * This file is part of Libav. + * + * Libav is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * Libav 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 + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with Libav; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ + +#ifndef AVCODEC_XVMC_H +#define AVCODEC_XVMC_H + +/** + * @file + * @ingroup lavc_codec_hwaccel_xvmc + * Public libavcodec XvMC header. + */ + +#include + +#include "avcodec.h" + +/** + * @defgroup lavc_codec_hwaccel_xvmc XvMC + * @ingroup lavc_codec_hwaccel + * + * @{ + */ + +#define AV_XVMC_ID 0x1DC711C0 /**< special value to ensure that regular pixel routines haven't corrupted the struct + the number is 1337 speak for the letters IDCT MCo (motion compensation) */ + +struct xvmc_pix_fmt { + /** The field contains the special constant value AV_XVMC_ID. + It is used as a test that the application correctly uses the API, + and that there is no corruption caused by pixel routines. + - application - set during initialization + - libavcodec - unchanged + */ + int xvmc_id; + + /** Pointer to the block array allocated by XvMCCreateBlocks(). + The array has to be freed by XvMCDestroyBlocks(). + Each group of 64 values represents one data block of differential + pixel information (in MoCo mode) or coefficients for IDCT. + - application - set the pointer during initialization + - libavcodec - fills coefficients/pixel data into the array + */ + short* data_blocks; + + /** Pointer to the macroblock description array allocated by + XvMCCreateMacroBlocks() and freed by XvMCDestroyMacroBlocks(). + - application - set the pointer during initialization + - libavcodec - fills description data into the array + */ + XvMCMacroBlock* mv_blocks; + + /** Number of macroblock descriptions that can be stored in the mv_blocks + array. + - application - set during initialization + - libavcodec - unchanged + */ + int allocated_mv_blocks; + + /** Number of blocks that can be stored at once in the data_blocks array. + - application - set during initialization + - libavcodec - unchanged + */ + int allocated_data_blocks; + + /** Indicate that the hardware would interpret data_blocks as IDCT + coefficients and perform IDCT on them. + - application - set during initialization + - libavcodec - unchanged + */ + int idct; + + /** In MoCo mode it indicates that intra macroblocks are assumed to be in + unsigned format; same as the XVMC_INTRA_UNSIGNED flag. + - application - set during initialization + - libavcodec - unchanged + */ + int unsigned_intra; + + /** Pointer to the surface allocated by XvMCCreateSurface(). + It has to be freed by XvMCDestroySurface() on application exit. + It identifies the frame and its state on the video hardware. + - application - set during initialization + - libavcodec - unchanged + */ + XvMCSurface* p_surface; + +/** Set by the decoder before calling ff_draw_horiz_band(), + needed by the XvMCRenderSurface function. */ +//@{ + /** Pointer to the surface used as past reference + - application - unchanged + - libavcodec - set + */ + XvMCSurface* p_past_surface; + + /** Pointer to the surface used as future reference + - application - unchanged + - libavcodec - set + */ + XvMCSurface* p_future_surface; + + /** top/bottom field or frame + - application - unchanged + - libavcodec - set + */ + unsigned int picture_structure; + + /** XVMC_SECOND_FIELD - 1st or 2nd field in the sequence + - application - unchanged + - libavcodec - set + */ + unsigned int flags; +//}@ + + /** Number of macroblock descriptions in the mv_blocks array + that have already been passed to the hardware. + - application - zeroes it on get_buffer(). + A successful ff_draw_horiz_band() may increment it + with filled_mb_block_num or zero both. + - libavcodec - unchanged + */ + int start_mv_blocks_num; + + /** Number of new macroblock descriptions in the mv_blocks array (after + start_mv_blocks_num) that are filled by libavcodec and have to be + passed to the hardware. + - application - zeroes it on get_buffer() or after successful + ff_draw_horiz_band(). + - libavcodec - increment with one of each stored MB + */ + int filled_mv_blocks_num; + + /** Number of the next free data block; one data block consists of + 64 short values in the data_blocks array. + All blocks before this one have already been claimed by placing their + position into the corresponding block description structure field, + that are part of the mv_blocks array. + - application - zeroes it on get_buffer(). + A successful ff_draw_horiz_band() may zero it together + with start_mb_blocks_num. + - libavcodec - each decoded macroblock increases it by the number + of coded blocks it contains. + */ + int next_free_data_block_num; +}; + +/** + * @} + */ + +#endif /* AVCODEC_XVMC_H */ diff -r 3331b30e4ef1 -r 88fde28bbda6 misc/winutils/include/libavformat/avformat.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/misc/winutils/include/libavformat/avformat.h Sat Nov 03 00:34:35 2012 +0400 @@ -0,0 +1,1740 @@ +/* + * copyright (c) 2001 Fabrice Bellard + * + * This file is part of Libav. + * + * Libav is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * Libav 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 + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with Libav; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ + +#ifndef AVFORMAT_AVFORMAT_H +#define AVFORMAT_AVFORMAT_H + +/** + * @file + * @ingroup libavf + * Main libavformat public API header + */ + +/** + * @defgroup libavf I/O and Muxing/Demuxing Library + * @{ + * + * Libavformat (lavf) is a library for dealing with various media container + * formats. Its main two purposes are demuxing - i.e. splitting a media file + * into component streams, and the reverse process of muxing - writing supplied + * data in a specified container format. It also has an @ref lavf_io + * "I/O module" which supports a number of protocols for accessing the data (e.g. + * file, tcp, http and others). Before using lavf, you need to call + * av_register_all() to register all compiled muxers, demuxers and protocols. + * Unless you are absolutely sure you won't use libavformat's network + * capabilities, you should also call avformat_network_init(). + * + * A supported input format is described by an AVInputFormat struct, conversely + * an output format is described by AVOutputFormat. You can iterate over all + * registered input/output formats using the av_iformat_next() / + * av_oformat_next() functions. The protocols layer is not part of the public + * API, so you can only get the names of supported protocols with the + * avio_enum_protocols() function. + * + * Main lavf structure used for both muxing and demuxing is AVFormatContext, + * which exports all information about the file being read or written. As with + * most Libav structures, its size is not part of public ABI, so it cannot be + * allocated on stack or directly with av_malloc(). To create an + * AVFormatContext, use avformat_alloc_context() (some functions, like + * avformat_open_input() might do that for you). + * + * Most importantly an AVFormatContext contains: + * @li the @ref AVFormatContext.iformat "input" or @ref AVFormatContext.oformat + * "output" format. It is either autodetected or set by user for input; + * always set by user for output. + * @li an @ref AVFormatContext.streams "array" of AVStreams, which describe all + * elementary streams stored in the file. AVStreams are typically referred to + * using their index in this array. + * @li an @ref AVFormatContext.pb "I/O context". It is either opened by lavf or + * set by user for input, always set by user for output (unless you are dealing + * with an AVFMT_NOFILE format). + * + * @section lavf_options Passing options to (de)muxers + * Lavf allows to configure muxers and demuxers using the @ref avoptions + * mechanism. Generic (format-independent) libavformat options are provided by + * AVFormatContext, they can be examined from a user program by calling + * av_opt_next() / av_opt_find() on an allocated AVFormatContext (or its AVClass + * from avformat_get_class()). Private (format-specific) options are provided by + * AVFormatContext.priv_data if and only if AVInputFormat.priv_class / + * AVOutputFormat.priv_class of the corresponding format struct is non-NULL. + * Further options may be provided by the @ref AVFormatContext.pb "I/O context", + * if its AVClass is non-NULL, and the protocols layer. See the discussion on + * nesting in @ref avoptions documentation to learn how to access those. + * + * @defgroup lavf_decoding Demuxing + * @{ + * Demuxers read a media file and split it into chunks of data (@em packets). A + * @ref AVPacket "packet" contains one or more encoded frames which belongs to a + * single elementary stream. In the lavf API this process is represented by the + * avformat_open_input() function for opening a file, av_read_frame() for + * reading a single packet and finally avformat_close_input(), which does the + * cleanup. + * + * @section lavf_decoding_open Opening a media file + * The minimum information required to open a file is its URL or filename, which + * is passed to avformat_open_input(), as in the following code: + * @code + * const char *url = "in.mp3"; + * AVFormatContext *s = NULL; + * int ret = avformat_open_input(&s, url, NULL, NULL); + * if (ret < 0) + * abort(); + * @endcode + * The above code attempts to allocate an AVFormatContext, open the + * specified file (autodetecting the format) and read the header, exporting the + * information stored there into s. Some formats do not have a header or do not + * store enough information there, so it is recommended that you call the + * avformat_find_stream_info() function which tries to read and decode a few + * frames to find missing information. + * + * In some cases you might want to preallocate an AVFormatContext yourself with + * avformat_alloc_context() and do some tweaking on it before passing it to + * avformat_open_input(). One such case is when you want to use custom functions + * for reading input data instead of lavf internal I/O layer. + * To do that, create your own AVIOContext with avio_alloc_context(), passing + * your reading callbacks to it. Then set the @em pb field of your + * AVFormatContext to newly created AVIOContext. + * + * Since the format of the opened file is in general not known until after + * avformat_open_input() has returned, it is not possible to set demuxer private + * options on a preallocated context. Instead, the options should be passed to + * avformat_open_input() wrapped in an AVDictionary: + * @code + * AVDictionary *options = NULL; + * av_dict_set(&options, "video_size", "640x480", 0); + * av_dict_set(&options, "pixel_format", "rgb24", 0); + * + * if (avformat_open_input(&s, url, NULL, &options) < 0) + * abort(); + * av_dict_free(&options); + * @endcode + * This code passes the private options 'video_size' and 'pixel_format' to the + * demuxer. They would be necessary for e.g. the rawvideo demuxer, since it + * cannot know how to interpret raw video data otherwise. If the format turns + * out to be something different than raw video, those options will not be + * recognized by the demuxer and therefore will not be applied. Such unrecognized + * options are then returned in the options dictionary (recognized options are + * consumed). The calling program can handle such unrecognized options as it + * wishes, e.g. + * @code + * AVDictionaryEntry *e; + * if (e = av_dict_get(options, "", NULL, AV_DICT_IGNORE_SUFFIX)) { + * fprintf(stderr, "Option %s not recognized by the demuxer.\n", e->key); + * abort(); + * } + * @endcode + * + * After you have finished reading the file, you must close it with + * avformat_close_input(). It will free everything associated with the file. + * + * @section lavf_decoding_read Reading from an opened file + * Reading data from an opened AVFormatContext is done by repeatedly calling + * av_read_frame() on it. Each call, if successful, will return an AVPacket + * containing encoded data for one AVStream, identified by + * AVPacket.stream_index. This packet may be passed straight into the libavcodec + * decoding functions avcodec_decode_video2(), avcodec_decode_audio4() or + * avcodec_decode_subtitle2() if the caller wishes to decode the data. + * + * AVPacket.pts, AVPacket.dts and AVPacket.duration timing information will be + * set if known. They may also be unset (i.e. AV_NOPTS_VALUE for + * pts/dts, 0 for duration) if the stream does not provide them. The timing + * information will be in AVStream.time_base units, i.e. it has to be + * multiplied by the timebase to convert them to seconds. + * + * The packet data belongs to the demuxer and is invalid after the next call to + * av_read_frame(). The user must free the packet with av_free_packet() before + * calling av_read_frame() again or closing the file. + * + * @section lavf_decoding_seek Seeking + * @} + * + * @defgroup lavf_encoding Muxing + * @{ + * @} + * + * @defgroup lavf_io I/O Read/Write + * @{ + * @} + * + * @defgroup lavf_codec Demuxers + * @{ + * @defgroup lavf_codec_native Native Demuxers + * @{ + * @} + * @defgroup lavf_codec_wrappers External library wrappers + * @{ + * @} + * @} + * @defgroup lavf_protos I/O Protocols + * @{ + * @} + * @defgroup lavf_internal Internal + * @{ + * @} + * @} + * + */ + +#include +#include /* FILE */ +#include "libavcodec/avcodec.h" +#include "libavutil/dict.h" +#include "libavutil/log.h" + +#include "avio.h" +#include "libavformat/version.h" + +#if FF_API_AV_GETTIME +#include "libavutil/time.h" +#endif + +struct AVFormatContext; + + +/** + * @defgroup metadata_api Public Metadata API + * @{ + * @ingroup libavf + * The metadata API allows libavformat to export metadata tags to a client + * application when demuxing. Conversely it allows a client application to + * set metadata when muxing. + * + * Metadata is exported or set as pairs of key/value strings in the 'metadata' + * fields of the AVFormatContext, AVStream, AVChapter and AVProgram structs + * using the @ref lavu_dict "AVDictionary" API. Like all strings in Libav, + * metadata is assumed to be UTF-8 encoded Unicode. Note that metadata + * exported by demuxers isn't checked to be valid UTF-8 in most cases. + * + * Important concepts to keep in mind: + * - Keys are unique; there can never be 2 tags with the same key. This is + * also meant semantically, i.e., a demuxer should not knowingly produce + * several keys that are literally different but semantically identical. + * E.g., key=Author5, key=Author6. In this example, all authors must be + * placed in the same tag. + * - Metadata is flat, not hierarchical; there are no subtags. If you + * want to store, e.g., the email address of the child of producer Alice + * and actor Bob, that could have key=alice_and_bobs_childs_email_address. + * - Several modifiers can be applied to the tag name. This is done by + * appending a dash character ('-') and the modifier name in the order + * they appear in the list below -- e.g. foo-eng-sort, not foo-sort-eng. + * - language -- a tag whose value is localized for a particular language + * is appended with the ISO 639-2/B 3-letter language code. + * For example: Author-ger=Michael, Author-eng=Mike + * The original/default language is in the unqualified "Author" tag. + * A demuxer should set a default if it sets any translated tag. + * - sorting -- a modified version of a tag that should be used for + * sorting will have '-sort' appended. E.g. artist="The Beatles", + * artist-sort="Beatles, The". + * + * - Demuxers attempt to export metadata in a generic format, however tags + * with no generic equivalents are left as they are stored in the container. + * Follows a list of generic tag names: + * + @verbatim + album -- name of the set this work belongs to + album_artist -- main creator of the set/album, if different from artist. + e.g. "Various Artists" for compilation albums. + artist -- main creator of the work + comment -- any additional description of the file. + composer -- who composed the work, if different from artist. + copyright -- name of copyright holder. + creation_time-- date when the file was created, preferably in ISO 8601. + date -- date when the work was created, preferably in ISO 8601. + disc -- number of a subset, e.g. disc in a multi-disc collection. + encoder -- name/settings of the software/hardware that produced the file. + encoded_by -- person/group who created the file. + filename -- original name of the file. + genre -- . + language -- main language in which the work is performed, preferably + in ISO 639-2 format. Multiple languages can be specified by + separating them with commas. + performer -- artist who performed the work, if different from artist. + E.g for "Also sprach Zarathustra", artist would be "Richard + Strauss" and performer "London Philharmonic Orchestra". + publisher -- name of the label/publisher. + service_name -- name of the service in broadcasting (channel name). + service_provider -- name of the service provider in broadcasting. + title -- name of the work. + track -- number of this work in the set, can be in form current/total. + variant_bitrate -- the total bitrate of the bitrate variant that the current stream is part of + @endverbatim + * + * Look in the examples section for an application example how to use the Metadata API. + * + * @} + */ + +/* packet functions */ + + +/** + * Allocate and read the payload of a packet and initialize its + * fields with default values. + * + * @param pkt packet + * @param size desired payload size + * @return >0 (read size) if OK, AVERROR_xxx otherwise + */ +int av_get_packet(AVIOContext *s, AVPacket *pkt, int size); + + +/** + * Read data and append it to the current content of the AVPacket. + * If pkt->size is 0 this is identical to av_get_packet. + * Note that this uses av_grow_packet and thus involves a realloc + * which is inefficient. Thus this function should only be used + * when there is no reasonable way to know (an upper bound of) + * the final size. + * + * @param pkt packet + * @param size amount of data to read + * @return >0 (read size) if OK, AVERROR_xxx otherwise, previous data + * will not be lost even if an error occurs. + */ +int av_append_packet(AVIOContext *s, AVPacket *pkt, int size); + +/*************************************************/ +/* fractional numbers for exact pts handling */ + +/** + * The exact value of the fractional number is: 'val + num / den'. + * num is assumed to be 0 <= num < den. + */ +typedef struct AVFrac { + int64_t val, num, den; +} AVFrac; + +/*************************************************/ +/* input/output formats */ + +struct AVCodecTag; + +/** + * This structure contains the data a format has to probe a file. + */ +typedef struct AVProbeData { + const char *filename; + unsigned char *buf; /**< Buffer must have AVPROBE_PADDING_SIZE of extra allocated bytes filled with zero. */ + int buf_size; /**< Size of buf except extra allocated bytes */ +} AVProbeData; + +#define AVPROBE_SCORE_MAX 100 ///< maximum score, half of that is used for file-extension-based detection +#define AVPROBE_PADDING_SIZE 32 ///< extra allocated bytes at the end of the probe buffer + +/// Demuxer will use avio_open, no opened file should be provided by the caller. +#define AVFMT_NOFILE 0x0001 +#define AVFMT_NEEDNUMBER 0x0002 /**< Needs '%d' in filename. */ +#define AVFMT_SHOW_IDS 0x0008 /**< Show format stream IDs numbers. */ +#define AVFMT_RAWPICTURE 0x0020 /**< Format wants AVPicture structure for + raw picture data. */ +#define AVFMT_GLOBALHEADER 0x0040 /**< Format wants global header. */ +#define AVFMT_NOTIMESTAMPS 0x0080 /**< Format does not need / have any timestamps. */ +#define AVFMT_GENERIC_INDEX 0x0100 /**< Use generic index building code. */ +#define AVFMT_TS_DISCONT 0x0200 /**< Format allows timestamp discontinuities. Note, muxers always require valid (monotone) timestamps */ +#define AVFMT_VARIABLE_FPS 0x0400 /**< Format allows variable fps. */ +#define AVFMT_NODIMENSIONS 0x0800 /**< Format does not need width/height */ +#define AVFMT_NOSTREAMS 0x1000 /**< Format does not require any streams */ +#define AVFMT_NOBINSEARCH 0x2000 /**< Format does not allow to fallback to binary search via read_timestamp */ +#define AVFMT_NOGENSEARCH 0x4000 /**< Format does not allow to fallback to generic search */ +#define AVFMT_NO_BYTE_SEEK 0x8000 /**< Format does not allow seeking by bytes */ +#define AVFMT_ALLOW_FLUSH 0x10000 /**< Format allows flushing. If not set, the muxer will not receive a NULL packet in the write_packet function. */ +#define AVFMT_TS_NONSTRICT 0x20000 /**< Format does not require strictly + increasing timestamps, but they must + still be monotonic */ + +/** + * @addtogroup lavf_encoding + * @{ + */ +typedef struct AVOutputFormat { + const char *name; + /** + * Descriptive name for the format, meant to be more human-readable + * than name. You should use the NULL_IF_CONFIG_SMALL() macro + * to define it. + */ + const char *long_name; + const char *mime_type; + const char *extensions; /**< comma-separated filename extensions */ + /* output support */ + enum AVCodecID audio_codec; /**< default audio codec */ + enum AVCodecID video_codec; /**< default video codec */ + enum AVCodecID subtitle_codec; /**< default subtitle codec */ + /** + * can use flags: AVFMT_NOFILE, AVFMT_NEEDNUMBER, AVFMT_RAWPICTURE, + * AVFMT_GLOBALHEADER, AVFMT_NOTIMESTAMPS, AVFMT_VARIABLE_FPS, + * AVFMT_NODIMENSIONS, AVFMT_NOSTREAMS, AVFMT_ALLOW_FLUSH, + * AVFMT_TS_NONSTRICT + */ + int flags; + + /** + * List of supported codec_id-codec_tag pairs, ordered by "better + * choice first". The arrays are all terminated by AV_CODEC_ID_NONE. + */ + const struct AVCodecTag * const *codec_tag; + + + const AVClass *priv_class; ///< AVClass for the private context + + /***************************************************************** + * No fields below this line are part of the public API. They + * may not be used outside of libavformat and can be changed and + * removed at will. + * New public fields should be added right above. + ***************************************************************** + */ + struct AVOutputFormat *next; + /** + * size of private data so that it can be allocated in the wrapper + */ + int priv_data_size; + + int (*write_header)(struct AVFormatContext *); + /** + * Write a packet. If AVFMT_ALLOW_FLUSH is set in flags, + * pkt can be NULL in order to flush data buffered in the muxer. + * When flushing, return 0 if there still is more data to flush, + * or 1 if everything was flushed and there is no more buffered + * data. + */ + int (*write_packet)(struct AVFormatContext *, AVPacket *pkt); + int (*write_trailer)(struct AVFormatContext *); + /** + * Currently only used to set pixel format if not YUV420P. + */ + int (*interleave_packet)(struct AVFormatContext *, AVPacket *out, + AVPacket *in, int flush); + /** + * Test if the given codec can be stored in this container. + * + * @return 1 if the codec is supported, 0 if it is not. + * A negative number if unknown. + */ + int (*query_codec)(enum AVCodecID id, int std_compliance); +} AVOutputFormat; +/** + * @} + */ + +/** + * @addtogroup lavf_decoding + * @{ + */ +typedef struct AVInputFormat { + /** + * A comma separated list of short names for the format. New names + * may be appended with a minor bump. + */ + const char *name; + + /** + * Descriptive name for the format, meant to be more human-readable + * than name. You should use the NULL_IF_CONFIG_SMALL() macro + * to define it. + */ + const char *long_name; + + /** + * Can use flags: AVFMT_NOFILE, AVFMT_NEEDNUMBER, AVFMT_SHOW_IDS, + * AVFMT_GENERIC_INDEX, AVFMT_TS_DISCONT, AVFMT_NOBINSEARCH, + * AVFMT_NOGENSEARCH, AVFMT_NO_BYTE_SEEK. + */ + int flags; + + /** + * If extensions are defined, then no probe is done. You should + * usually not use extension format guessing because it is not + * reliable enough + */ + const char *extensions; + + const struct AVCodecTag * const *codec_tag; + + const AVClass *priv_class; ///< AVClass for the private context + + /***************************************************************** + * No fields below this line are part of the public API. They + * may not be used outside of libavformat and can be changed and + * removed at will. + * New public fields should be added right above. + ***************************************************************** + */ + struct AVInputFormat *next; + + /** + * Raw demuxers store their codec ID here. + */ + int raw_codec_id; + + /** + * Size of private data so that it can be allocated in the wrapper. + */ + int priv_data_size; + + /** + * Tell if a given file has a chance of being parsed as this format. + * The buffer provided is guaranteed to be AVPROBE_PADDING_SIZE bytes + * big so you do not have to check for that unless you need more. + */ + int (*read_probe)(AVProbeData *); + + /** + * Read the format header and initialize the AVFormatContext + * structure. Return 0 if OK. Only used in raw format right + * now. 'avformat_new_stream' should be called to create new streams. + */ + int (*read_header)(struct AVFormatContext *); + + /** + * Read one packet and put it in 'pkt'. pts and flags are also + * set. 'avformat_new_stream' can be called only if the flag + * AVFMTCTX_NOHEADER is used and only in the calling thread (not in a + * background thread). + * @return 0 on success, < 0 on error. + * When returning an error, pkt must not have been allocated + * or must be freed before returning + */ + int (*read_packet)(struct AVFormatContext *, AVPacket *pkt); + + /** + * Close the stream. The AVFormatContext and AVStreams are not + * freed by this function + */ + int (*read_close)(struct AVFormatContext *); + + /** + * Seek to a given timestamp relative to the frames in + * stream component stream_index. + * @param stream_index Must not be -1. + * @param flags Selects which direction should be preferred if no exact + * match is available. + * @return >= 0 on success (but not necessarily the new offset) + */ + int (*read_seek)(struct AVFormatContext *, + int stream_index, int64_t timestamp, int flags); + + /** + * Get the next timestamp in stream[stream_index].time_base units. + * @return the timestamp or AV_NOPTS_VALUE if an error occurred + */ + int64_t (*read_timestamp)(struct AVFormatContext *s, int stream_index, + int64_t *pos, int64_t pos_limit); + + /** + * Start/resume playing - only meaningful if using a network-based format + * (RTSP). + */ + int (*read_play)(struct AVFormatContext *); + + /** + * Pause playing - only meaningful if using a network-based format + * (RTSP). + */ + int (*read_pause)(struct AVFormatContext *); + + /** + * Seek to timestamp ts. + * Seeking will be done so that the point from which all active streams + * can be presented successfully will be closest to ts and within min/max_ts. + * Active streams are all streams that have AVStream.discard < AVDISCARD_ALL. + */ + int (*read_seek2)(struct AVFormatContext *s, int stream_index, int64_t min_ts, int64_t ts, int64_t max_ts, int flags); +} AVInputFormat; +/** + * @} + */ + +enum AVStreamParseType { + AVSTREAM_PARSE_NONE, + AVSTREAM_PARSE_FULL, /**< full parsing and repack */ + AVSTREAM_PARSE_HEADERS, /**< Only parse headers, do not repack. */ + AVSTREAM_PARSE_TIMESTAMPS, /**< full parsing and interpolation of timestamps for frames not starting on a packet boundary */ + AVSTREAM_PARSE_FULL_ONCE, /**< full parsing and repack of the first frame only, only implemented for H.264 currently */ +}; + +typedef struct AVIndexEntry { + int64_t pos; + int64_t timestamp; +#define AVINDEX_KEYFRAME 0x0001 + int flags:2; + int size:30; //Yeah, trying to keep the size of this small to reduce memory requirements (it is 24 vs. 32 bytes due to possible 8-byte alignment). + int min_distance; /**< Minimum distance between this and the previous keyframe, used to avoid unneeded searching. */ +} AVIndexEntry; + +#define AV_DISPOSITION_DEFAULT 0x0001 +#define AV_DISPOSITION_DUB 0x0002 +#define AV_DISPOSITION_ORIGINAL 0x0004 +#define AV_DISPOSITION_COMMENT 0x0008 +#define AV_DISPOSITION_LYRICS 0x0010 +#define AV_DISPOSITION_KARAOKE 0x0020 + +/** + * Track should be used during playback by default. + * Useful for subtitle track that should be displayed + * even when user did not explicitly ask for subtitles. + */ +#define AV_DISPOSITION_FORCED 0x0040 +#define AV_DISPOSITION_HEARING_IMPAIRED 0x0080 /**< stream for hearing impaired audiences */ +#define AV_DISPOSITION_VISUAL_IMPAIRED 0x0100 /**< stream for visual impaired audiences */ +#define AV_DISPOSITION_CLEAN_EFFECTS 0x0200 /**< stream without voice */ +/** + * The stream is stored in the file as an attached picture/"cover art" (e.g. + * APIC frame in ID3v2). The single packet associated with it will be returned + * among the first few packets read from the file unless seeking takes place. + * It can also be accessed at any time in AVStream.attached_pic. + */ +#define AV_DISPOSITION_ATTACHED_PIC 0x0400 + +/** + * Stream structure. + * New fields can be added to the end with minor version bumps. + * Removal, reordering and changes to existing fields require a major + * version bump. + * sizeof(AVStream) must not be used outside libav*. + */ +typedef struct AVStream { + int index; /**< stream index in AVFormatContext */ + /** + * Format-specific stream ID. + * decoding: set by libavformat + * encoding: set by the user + */ + int id; + /** + * Codec context associated with this stream. Allocated and freed by + * libavformat. + * + * - decoding: The demuxer exports codec information stored in the headers + * here. + * - encoding: The user sets codec information, the muxer writes it to the + * output. Mandatory fields as specified in AVCodecContext + * documentation must be set even if this AVCodecContext is + * not actually used for encoding. + */ + AVCodecContext *codec; +#if FF_API_R_FRAME_RATE + /** + * Real base framerate of the stream. + * This is the lowest framerate with which all timestamps can be + * represented accurately (it is the least common multiple of all + * framerates in the stream). Note, this value is just a guess! + * For example, if the time base is 1/90000 and all frames have either + * approximately 3600 or 1800 timer ticks, then r_frame_rate will be 50/1. + */ + AVRational r_frame_rate; +#endif + void *priv_data; + + /** + * encoding: pts generation when outputting stream + */ + struct AVFrac pts; + + /** + * This is the fundamental unit of time (in seconds) in terms + * of which frame timestamps are represented. + * + * decoding: set by libavformat + * encoding: set by libavformat in avformat_write_header. The muxer may use the + * user-provided value of @ref AVCodecContext.time_base "codec->time_base" + * as a hint. + */ + AVRational time_base; + + /** + * Decoding: pts of the first frame of the stream, in stream time base. + * Only set this if you are absolutely 100% sure that the value you set + * it to really is the pts of the first frame. + * This may be undefined (AV_NOPTS_VALUE). + */ + int64_t start_time; + + /** + * Decoding: duration of the stream, in stream time base. + * If a source file does not specify a duration, but does specify + * a bitrate, this value will be estimated from bitrate and file size. + */ + int64_t duration; + + int64_t nb_frames; ///< number of frames in this stream if known or 0 + + int disposition; /**< AV_DISPOSITION_* bit field */ + + enum AVDiscard discard; ///< Selects which packets can be discarded at will and do not need to be demuxed. + + /** + * sample aspect ratio (0 if unknown) + * - encoding: Set by user. + * - decoding: Set by libavformat. + */ + AVRational sample_aspect_ratio; + + AVDictionary *metadata; + + /** + * Average framerate + */ + AVRational avg_frame_rate; + + /** + * For streams with AV_DISPOSITION_ATTACHED_PIC disposition, this packet + * will contain the attached picture. + * + * decoding: set by libavformat, must not be modified by the caller. + * encoding: unused + */ + AVPacket attached_pic; + + /***************************************************************** + * All fields below this line are not part of the public API. They + * may not be used outside of libavformat and can be changed and + * removed at will. + * New public fields should be added right above. + ***************************************************************** + */ + + /** + * Stream information used internally by av_find_stream_info() + */ +#define MAX_STD_TIMEBASES (60*12+5) + struct { +#if FF_API_R_FRAME_RATE + int64_t last_dts; + int64_t duration_gcd; + int duration_count; + double duration_error[MAX_STD_TIMEBASES]; +#endif + int nb_decoded_frames; + int found_decoder; + + /** + * Those are used for average framerate estimation. + */ + int64_t fps_first_dts; + int fps_first_dts_idx; + int64_t fps_last_dts; + int fps_last_dts_idx; + + } *info; + + int pts_wrap_bits; /**< number of bits in pts (used for wrapping control) */ + + // Timestamp generation support: + /** + * Timestamp corresponding to the last dts sync point. + * + * Initialized when AVCodecParserContext.dts_sync_point >= 0 and + * a DTS is received from the underlying container. Otherwise set to + * AV_NOPTS_VALUE by default. + */ + int64_t reference_dts; + int64_t first_dts; + int64_t cur_dts; + int64_t last_IP_pts; + int last_IP_duration; + + /** + * Number of packets to buffer for codec probing + */ +#define MAX_PROBE_PACKETS 2500 + int probe_packets; + + /** + * Number of frames that have been demuxed during av_find_stream_info() + */ + int codec_info_nb_frames; + + /* av_read_frame() support */ + enum AVStreamParseType need_parsing; + struct AVCodecParserContext *parser; + + /** + * last packet in packet_buffer for this stream when muxing. + */ + struct AVPacketList *last_in_packet_buffer; + AVProbeData probe_data; +#define MAX_REORDER_DELAY 16 + int64_t pts_buffer[MAX_REORDER_DELAY+1]; + + AVIndexEntry *index_entries; /**< Only used if the format does not + support seeking natively. */ + int nb_index_entries; + unsigned int index_entries_allocated_size; +} AVStream; + +#define AV_PROGRAM_RUNNING 1 + +/** + * New fields can be added to the end with minor version bumps. + * Removal, reordering and changes to existing fields require a major + * version bump. + * sizeof(AVProgram) must not be used outside libav*. + */ +typedef struct AVProgram { + int id; + int flags; + enum AVDiscard discard; ///< selects which program to discard and which to feed to the caller + unsigned int *stream_index; + unsigned int nb_stream_indexes; + AVDictionary *metadata; +} AVProgram; + +#define AVFMTCTX_NOHEADER 0x0001 /**< signal that no header is present + (streams are added dynamically) */ + +typedef struct AVChapter { + int id; ///< unique ID to identify the chapter + AVRational time_base; ///< time base in which the start/end timestamps are specified + int64_t start, end; ///< chapter start/end time in time_base units + AVDictionary *metadata; +} AVChapter; + +/** + * Format I/O context. + * New fields can be added to the end with minor version bumps. + * Removal, reordering and changes to existing fields require a major + * version bump. + * sizeof(AVFormatContext) must not be used outside libav*, use + * avformat_alloc_context() to create an AVFormatContext. + */ +typedef struct AVFormatContext { + /** + * A class for logging and AVOptions. Set by avformat_alloc_context(). + * Exports (de)muxer private options if they exist. + */ + const AVClass *av_class; + + /** + * Can only be iformat or oformat, not both at the same time. + * + * decoding: set by avformat_open_input(). + * encoding: set by the user. + */ + struct AVInputFormat *iformat; + struct AVOutputFormat *oformat; + + /** + * Format private data. This is an AVOptions-enabled struct + * if and only if iformat/oformat.priv_class is not NULL. + */ + void *priv_data; + + /** + * I/O context. + * + * decoding: either set by the user before avformat_open_input() (then + * the user must close it manually) or set by avformat_open_input(). + * encoding: set by the user. + * + * Do NOT set this field if AVFMT_NOFILE flag is set in + * iformat/oformat.flags. In such a case, the (de)muxer will handle + * I/O in some other way and this field will be NULL. + */ + AVIOContext *pb; + + /* stream info */ + int ctx_flags; /**< Format-specific flags, see AVFMTCTX_xx */ + + /** + * A list of all streams in the file. New streams are created with + * avformat_new_stream(). + * + * decoding: streams are created by libavformat in avformat_open_input(). + * If AVFMTCTX_NOHEADER is set in ctx_flags, then new streams may also + * appear in av_read_frame(). + * encoding: streams are created by the user before avformat_write_header(). + */ + unsigned int nb_streams; + AVStream **streams; + + char filename[1024]; /**< input or output filename */ + + /** + * Decoding: position of the first frame of the component, in + * AV_TIME_BASE fractional seconds. NEVER set this value directly: + * It is deduced from the AVStream values. + */ + int64_t start_time; + + /** + * Decoding: duration of the stream, in AV_TIME_BASE fractional + * seconds. Only set this value if you know none of the individual stream + * durations and also do not set any of them. This is deduced from the + * AVStream values if not set. + */ + int64_t duration; + + /** + * Decoding: total stream bitrate in bit/s, 0 if not + * available. Never set it directly if the file_size and the + * duration are known as Libav can compute it automatically. + */ + int bit_rate; + + unsigned int packet_size; + int max_delay; + + int flags; +#define AVFMT_FLAG_GENPTS 0x0001 ///< Generate missing pts even if it requires parsing future frames. +#define AVFMT_FLAG_IGNIDX 0x0002 ///< Ignore index. +#define AVFMT_FLAG_NONBLOCK 0x0004 ///< Do not block when reading packets from input. +#define AVFMT_FLAG_IGNDTS 0x0008 ///< Ignore DTS on frames that contain both DTS & PTS +#define AVFMT_FLAG_NOFILLIN 0x0010 ///< Do not infer any values from other values, just return what is stored in the container +#define AVFMT_FLAG_NOPARSE 0x0020 ///< Do not use AVParsers, you also must set AVFMT_FLAG_NOFILLIN as the fillin code works on frames and no parsing -> no frames. Also seeking to frames can not work if parsing to find frame boundaries has been disabled +#define AVFMT_FLAG_NOBUFFER 0x0040 ///< Do not buffer frames when possible +#define AVFMT_FLAG_CUSTOM_IO 0x0080 ///< The caller has supplied a custom AVIOContext, don't avio_close() it. +#define AVFMT_FLAG_DISCARD_CORRUPT 0x0100 ///< Discard frames marked corrupted + + /** + * decoding: size of data to probe; encoding: unused. + */ + unsigned int probesize; + + /** + * decoding: maximum time (in AV_TIME_BASE units) during which the input should + * be analyzed in avformat_find_stream_info(). + */ + int max_analyze_duration; + + const uint8_t *key; + int keylen; + + unsigned int nb_programs; + AVProgram **programs; + + /** + * Forced video codec_id. + * Demuxing: Set by user. + */ + enum AVCodecID video_codec_id; + + /** + * Forced audio codec_id. + * Demuxing: Set by user. + */ + enum AVCodecID audio_codec_id; + + /** + * Forced subtitle codec_id. + * Demuxing: Set by user. + */ + enum AVCodecID subtitle_codec_id; + + /** + * Maximum amount of memory in bytes to use for the index of each stream. + * If the index exceeds this size, entries will be discarded as + * needed to maintain a smaller size. This can lead to slower or less + * accurate seeking (depends on demuxer). + * Demuxers for which a full in-memory index is mandatory will ignore + * this. + * muxing : unused + * demuxing: set by user + */ + unsigned int max_index_size; + + /** + * Maximum amount of memory in bytes to use for buffering frames + * obtained from realtime capture devices. + */ + unsigned int max_picture_buffer; + + unsigned int nb_chapters; + AVChapter **chapters; + + AVDictionary *metadata; + + /** + * Start time of the stream in real world time, in microseconds + * since the unix epoch (00:00 1st January 1970). That is, pts=0 + * in the stream was captured at this real world time. + * - encoding: Set by user. + * - decoding: Unused. + */ + int64_t start_time_realtime; + + /** + * decoding: number of frames used to probe fps + */ + int fps_probe_size; + + /** + * Error recognition; higher values will detect more errors but may + * misdetect some more or less valid parts as errors. + * - encoding: unused + * - decoding: Set by user. + */ + int error_recognition; + + /** + * Custom interrupt callbacks for the I/O layer. + * + * decoding: set by the user before avformat_open_input(). + * encoding: set by the user before avformat_write_header() + * (mainly useful for AVFMT_NOFILE formats). The callback + * should also be passed to avio_open2() if it's used to + * open the file. + */ + AVIOInterruptCB interrupt_callback; + + /** + * Flags to enable debugging. + */ + int debug; +#define FF_FDEBUG_TS 0x0001 + /***************************************************************** + * All fields below this line are not part of the public API. They + * may not be used outside of libavformat and can be changed and + * removed at will. + * New public fields should be added right above. + ***************************************************************** + */ + + /** + * This buffer is only needed when packets were already buffered but + * not decoded, for example to get the codec parameters in MPEG + * streams. + */ + struct AVPacketList *packet_buffer; + struct AVPacketList *packet_buffer_end; + + /* av_seek_frame() support */ + int64_t data_offset; /**< offset of the first packet */ + + /** + * Raw packets from the demuxer, prior to parsing and decoding. + * This buffer is used for buffering packets until the codec can + * be identified, as parsing cannot be done without knowing the + * codec. + */ + struct AVPacketList *raw_packet_buffer; + struct AVPacketList *raw_packet_buffer_end; + /** + * Packets split by the parser get queued here. + */ + struct AVPacketList *parse_queue; + struct AVPacketList *parse_queue_end; + /** + * Remaining size available for raw_packet_buffer, in bytes. + */ +#define RAW_PACKET_BUFFER_SIZE 2500000 + int raw_packet_buffer_remaining_size; +} AVFormatContext; + +typedef struct AVPacketList { + AVPacket pkt; + struct AVPacketList *next; +} AVPacketList; + + +/** + * @defgroup lavf_core Core functions + * @ingroup libavf + * + * Functions for querying libavformat capabilities, allocating core structures, + * etc. + * @{ + */ + +/** + * Return the LIBAVFORMAT_VERSION_INT constant. + */ +unsigned avformat_version(void); + +/** + * Return the libavformat build-time configuration. + */ +const char *avformat_configuration(void); + +/** + * Return the libavformat license. + */ +const char *avformat_license(void); + +/** + * Initialize libavformat and register all the muxers, demuxers and + * protocols. If you do not call this function, then you can select + * exactly which formats you want to support. + * + * @see av_register_input_format() + * @see av_register_output_format() + * @see av_register_protocol() + */ +void av_register_all(void); + +void av_register_input_format(AVInputFormat *format); +void av_register_output_format(AVOutputFormat *format); + +/** + * Do global initialization of network components. This is optional, + * but recommended, since it avoids the overhead of implicitly + * doing the setup for each session. + * + * Calling this function will become mandatory if using network + * protocols at some major version bump. + */ +int avformat_network_init(void); + +/** + * Undo the initialization done by avformat_network_init. + */ +int avformat_network_deinit(void); + +/** + * If f is NULL, returns the first registered input format, + * if f is non-NULL, returns the next registered input format after f + * or NULL if f is the last one. + */ +AVInputFormat *av_iformat_next(AVInputFormat *f); + +/** + * If f is NULL, returns the first registered output format, + * if f is non-NULL, returns the next registered output format after f + * or NULL if f is the last one. + */ +AVOutputFormat *av_oformat_next(AVOutputFormat *f); + +/** + * Allocate an AVFormatContext. + * avformat_free_context() can be used to free the context and everything + * allocated by the framework within it. + */ +AVFormatContext *avformat_alloc_context(void); + +/** + * Free an AVFormatContext and all its streams. + * @param s context to free + */ +void avformat_free_context(AVFormatContext *s); + +/** + * Get the AVClass for AVFormatContext. It can be used in combination with + * AV_OPT_SEARCH_FAKE_OBJ for examining options. + * + * @see av_opt_find(). + */ +const AVClass *avformat_get_class(void); + +/** + * Add a new stream to a media file. + * + * When demuxing, it is called by the demuxer in read_header(). If the + * flag AVFMTCTX_NOHEADER is set in s.ctx_flags, then it may also + * be called in read_packet(). + * + * When muxing, should be called by the user before avformat_write_header(). + * + * @param c If non-NULL, the AVCodecContext corresponding to the new stream + * will be initialized to use this codec. This is needed for e.g. codec-specific + * defaults to be set, so codec should be provided if it is known. + * + * @return newly created stream or NULL on error. + */ +AVStream *avformat_new_stream(AVFormatContext *s, AVCodec *c); + +AVProgram *av_new_program(AVFormatContext *s, int id); + +/** + * @} + */ + + +/** + * @addtogroup lavf_decoding + * @{ + */ + +/** + * Find AVInputFormat based on the short name of the input format. + */ +AVInputFormat *av_find_input_format(const char *short_name); + +/** + * Guess the file format. + * + * @param is_opened Whether the file is already opened; determines whether + * demuxers with or without AVFMT_NOFILE are probed. + */ +AVInputFormat *av_probe_input_format(AVProbeData *pd, int is_opened); + +/** + * Guess the file format. + * + * @param is_opened Whether the file is already opened; determines whether + * demuxers with or without AVFMT_NOFILE are probed. + * @param score_max A probe score larger that this is required to accept a + * detection, the variable is set to the actual detection + * score afterwards. + * If the score is <= AVPROBE_SCORE_MAX / 4 it is recommended + * to retry with a larger probe buffer. + */ +AVInputFormat *av_probe_input_format2(AVProbeData *pd, int is_opened, int *score_max); + +/** + * Probe a bytestream to determine the input format. Each time a probe returns + * with a score that is too low, the probe buffer size is increased and another + * attempt is made. When the maximum probe size is reached, the input format + * with the highest score is returned. + * + * @param pb the bytestream to probe + * @param fmt the input format is put here + * @param filename the filename of the stream + * @param logctx the log context + * @param offset the offset within the bytestream to probe from + * @param max_probe_size the maximum probe buffer size (zero for default) + * @return 0 in case of success, a negative value corresponding to an + * AVERROR code otherwise + */ +int av_probe_input_buffer(AVIOContext *pb, AVInputFormat **fmt, + const char *filename, void *logctx, + unsigned int offset, unsigned int max_probe_size); + +/** + * Open an input stream and read the header. The codecs are not opened. + * The stream must be closed with av_close_input_file(). + * + * @param ps Pointer to user-supplied AVFormatContext (allocated by avformat_alloc_context). + * May be a pointer to NULL, in which case an AVFormatContext is allocated by this + * function and written into ps. + * Note that a user-supplied AVFormatContext will be freed on failure. + * @param filename Name of the stream to open. + * @param fmt If non-NULL, this parameter forces a specific input format. + * Otherwise the format is autodetected. + * @param options A dictionary filled with AVFormatContext and demuxer-private options. + * On return this parameter will be destroyed and replaced with a dict containing + * options that were not found. May be NULL. + * + * @return 0 on success, a negative AVERROR on failure. + * + * @note If you want to use custom IO, preallocate the format context and set its pb field. + */ +int avformat_open_input(AVFormatContext **ps, const char *filename, AVInputFormat *fmt, AVDictionary **options); + +/** + * Read packets of a media file to get stream information. This + * is useful for file formats with no headers such as MPEG. This + * function also computes the real framerate in case of MPEG-2 repeat + * frame mode. + * The logical file position is not changed by this function; + * examined packets may be buffered for later processing. + * + * @param ic media file handle + * @param options If non-NULL, an ic.nb_streams long array of pointers to + * dictionaries, where i-th member contains options for + * codec corresponding to i-th stream. + * On return each dictionary will be filled with options that were not found. + * @return >=0 if OK, AVERROR_xxx on error + * + * @note this function isn't guaranteed to open all the codecs, so + * options being non-empty at return is a perfectly normal behavior. + * + * @todo Let the user decide somehow what information is needed so that + * we do not waste time getting stuff the user does not need. + */ +int avformat_find_stream_info(AVFormatContext *ic, AVDictionary **options); + +/** + * Find the "best" stream in the file. + * The best stream is determined according to various heuristics as the most + * likely to be what the user expects. + * If the decoder parameter is non-NULL, av_find_best_stream will find the + * default decoder for the stream's codec; streams for which no decoder can + * be found are ignored. + * + * @param ic media file handle + * @param type stream type: video, audio, subtitles, etc. + * @param wanted_stream_nb user-requested stream number, + * or -1 for automatic selection + * @param related_stream try to find a stream related (eg. in the same + * program) to this one, or -1 if none + * @param decoder_ret if non-NULL, returns the decoder for the + * selected stream + * @param flags flags; none are currently defined + * @return the non-negative stream number in case of success, + * AVERROR_STREAM_NOT_FOUND if no stream with the requested type + * could be found, + * AVERROR_DECODER_NOT_FOUND if streams were found but no decoder + * @note If av_find_best_stream returns successfully and decoder_ret is not + * NULL, then *decoder_ret is guaranteed to be set to a valid AVCodec. + */ +int av_find_best_stream(AVFormatContext *ic, + enum AVMediaType type, + int wanted_stream_nb, + int related_stream, + AVCodec **decoder_ret, + int flags); + +#if FF_API_READ_PACKET +/** + * @deprecated use AVFMT_FLAG_NOFILLIN | AVFMT_FLAG_NOPARSE to read raw + * unprocessed packets + * + * Read a transport packet from a media file. + * + * This function is obsolete and should never be used. + * Use av_read_frame() instead. + * + * @param s media file handle + * @param pkt is filled + * @return 0 if OK, AVERROR_xxx on error + */ +attribute_deprecated +int av_read_packet(AVFormatContext *s, AVPacket *pkt); +#endif + +/** + * Return the next frame of a stream. + * This function returns what is stored in the file, and does not validate + * that what is there are valid frames for the decoder. It will split what is + * stored in the file into frames and return one for each call. It will not + * omit invalid data between valid frames so as to give the decoder the maximum + * information possible for decoding. + * + * The returned packet is valid + * until the next av_read_frame() or until av_close_input_file() and + * must be freed with av_free_packet. For video, the packet contains + * exactly one frame. For audio, it contains an integer number of + * frames if each frame has a known fixed size (e.g. PCM or ADPCM + * data). If the audio frames have a variable size (e.g. MPEG audio), + * then it contains one frame. + * + * pkt->pts, pkt->dts and pkt->duration are always set to correct + * values in AVStream.time_base units (and guessed if the format cannot + * provide them). pkt->pts can be AV_NOPTS_VALUE if the video format + * has B-frames, so it is better to rely on pkt->dts if you do not + * decompress the payload. + * + * @return 0 if OK, < 0 on error or end of file + */ +int av_read_frame(AVFormatContext *s, AVPacket *pkt); + +/** + * Seek to the keyframe at timestamp. + * 'timestamp' in 'stream_index'. + * @param stream_index If stream_index is (-1), a default + * stream is selected, and timestamp is automatically converted + * from AV_TIME_BASE units to the stream specific time_base. + * @param timestamp Timestamp in AVStream.time_base units + * or, if no stream is specified, in AV_TIME_BASE units. + * @param flags flags which select direction and seeking mode + * @return >= 0 on success + */ +int av_seek_frame(AVFormatContext *s, int stream_index, int64_t timestamp, + int flags); + +/** + * Seek to timestamp ts. + * Seeking will be done so that the point from which all active streams + * can be presented successfully will be closest to ts and within min/max_ts. + * Active streams are all streams that have AVStream.discard < AVDISCARD_ALL. + * + * If flags contain AVSEEK_FLAG_BYTE, then all timestamps are in bytes and + * are the file position (this may not be supported by all demuxers). + * If flags contain AVSEEK_FLAG_FRAME, then all timestamps are in frames + * in the stream with stream_index (this may not be supported by all demuxers). + * Otherwise all timestamps are in units of the stream selected by stream_index + * or if stream_index is -1, in AV_TIME_BASE units. + * If flags contain AVSEEK_FLAG_ANY, then non-keyframes are treated as + * keyframes (this may not be supported by all demuxers). + * + * @param stream_index index of the stream which is used as time base reference + * @param min_ts smallest acceptable timestamp + * @param ts target timestamp + * @param max_ts largest acceptable timestamp + * @param flags flags + * @return >=0 on success, error code otherwise + * + * @note This is part of the new seek API which is still under construction. + * Thus do not use this yet. It may change at any time, do not expect + * ABI compatibility yet! + */ +int avformat_seek_file(AVFormatContext *s, int stream_index, int64_t min_ts, int64_t ts, int64_t max_ts, int flags); + +/** + * Start playing a network-based stream (e.g. RTSP stream) at the + * current position. + */ +int av_read_play(AVFormatContext *s); + +/** + * Pause a network-based stream (e.g. RTSP stream). + * + * Use av_read_play() to resume it. + */ +int av_read_pause(AVFormatContext *s); + +#if FF_API_CLOSE_INPUT_FILE +/** + * @deprecated use avformat_close_input() + * Close a media file (but not its codecs). + * + * @param s media file handle + */ +attribute_deprecated +void av_close_input_file(AVFormatContext *s); +#endif + +/** + * Close an opened input AVFormatContext. Free it and all its contents + * and set *s to NULL. + */ +void avformat_close_input(AVFormatContext **s); +/** + * @} + */ + +#define AVSEEK_FLAG_BACKWARD 1 ///< seek backward +#define AVSEEK_FLAG_BYTE 2 ///< seeking based on position in bytes +#define AVSEEK_FLAG_ANY 4 ///< seek to any frame, even non-keyframes +#define AVSEEK_FLAG_FRAME 8 ///< seeking based on frame number + +/** + * @addtogroup lavf_encoding + * @{ + */ +/** + * Allocate the stream private data and write the stream header to + * an output media file. + * + * @param s Media file handle, must be allocated with avformat_alloc_context(). + * Its oformat field must be set to the desired output format; + * Its pb field must be set to an already openened AVIOContext. + * @param options An AVDictionary filled with AVFormatContext and muxer-private options. + * On return this parameter will be destroyed and replaced with a dict containing + * options that were not found. May be NULL. + * + * @return 0 on success, negative AVERROR on failure. + * + * @see av_opt_find, av_dict_set, avio_open, av_oformat_next. + */ +int avformat_write_header(AVFormatContext *s, AVDictionary **options); + +/** + * Write a packet to an output media file. + * + * The packet shall contain one audio or video frame. + * The packet must be correctly interleaved according to the container + * specification, if not then av_interleaved_write_frame must be used. + * + * @param s media file handle + * @param pkt The packet, which contains the stream_index, buf/buf_size, + * dts/pts, ... + * This can be NULL (at any time, not just at the end), in + * order to immediately flush data buffered within the muxer, + * for muxers that buffer up data internally before writing it + * to the output. + * @return < 0 on error, = 0 if OK, 1 if flushed and there is no more data to flush + */ +int av_write_frame(AVFormatContext *s, AVPacket *pkt); + +/** + * Write a packet to an output media file ensuring correct interleaving. + * + * The packet must contain one audio or video frame. + * If the packets are already correctly interleaved, the application should + * call av_write_frame() instead as it is slightly faster. It is also important + * to keep in mind that completely non-interleaved input will need huge amounts + * of memory to interleave with this, so it is preferable to interleave at the + * demuxer level. + * + * @param s media file handle + * @param pkt The packet containing the data to be written. Libavformat takes + * ownership of the data and will free it when it sees fit using the packet's + * This can be NULL (at any time, not just at the end), to flush the + * interleaving queues. + * @ref AVPacket.destruct "destruct" field. The caller must not access the data + * after this function returns, as it may already be freed. + * Packet's @ref AVPacket.stream_index "stream_index" field must be set to the + * index of the corresponding stream in @ref AVFormatContext.streams + * "s.streams". + * It is very strongly recommended that timing information (@ref AVPacket.pts + * "pts", @ref AVPacket.dts "dts" @ref AVPacket.duration "duration") is set to + * correct values. + * + * @return 0 on success, a negative AVERROR on error. + */ +int av_interleaved_write_frame(AVFormatContext *s, AVPacket *pkt); + +#if FF_API_INTERLEAVE_PACKET +/** + * @deprecated this function was never meant to be called by the user + * programs. + */ +attribute_deprecated +int av_interleave_packet_per_dts(AVFormatContext *s, AVPacket *out, + AVPacket *pkt, int flush); +#endif + +/** + * Write the stream trailer to an output media file and free the + * file private data. + * + * May only be called after a successful call to avformat_write_header. + * + * @param s media file handle + * @return 0 if OK, AVERROR_xxx on error + */ +int av_write_trailer(AVFormatContext *s); + +/** + * Return the output format in the list of registered output formats + * which best matches the provided parameters, or return NULL if + * there is no match. + * + * @param short_name if non-NULL checks if short_name matches with the + * names of the registered formats + * @param filename if non-NULL checks if filename terminates with the + * extensions of the registered formats + * @param mime_type if non-NULL checks if mime_type matches with the + * MIME type of the registered formats + */ +AVOutputFormat *av_guess_format(const char *short_name, + const char *filename, + const char *mime_type); + +/** + * Guess the codec ID based upon muxer and filename. + */ +enum AVCodecID av_guess_codec(AVOutputFormat *fmt, const char *short_name, + const char *filename, const char *mime_type, + enum AVMediaType type); + +/** + * @} + */ + + +/** + * @defgroup lavf_misc Utility functions + * @ingroup libavf + * @{ + * + * Miscelaneous utility functions related to both muxing and demuxing + * (or neither). + */ + +/** + * Send a nice hexadecimal dump of a buffer to the specified file stream. + * + * @param f The file stream pointer where the dump should be sent to. + * @param buf buffer + * @param size buffer size + * + * @see av_hex_dump_log, av_pkt_dump2, av_pkt_dump_log2 + */ +void av_hex_dump(FILE *f, const uint8_t *buf, int size); + +/** + * Send a nice hexadecimal dump of a buffer to the log. + * + * @param avcl A pointer to an arbitrary struct of which the first field is a + * pointer to an AVClass struct. + * @param level The importance level of the message, lower values signifying + * higher importance. + * @param buf buffer + * @param size buffer size + * + * @see av_hex_dump, av_pkt_dump2, av_pkt_dump_log2 + */ +void av_hex_dump_log(void *avcl, int level, const uint8_t *buf, int size); + +/** + * Send a nice dump of a packet to the specified file stream. + * + * @param f The file stream pointer where the dump should be sent to. + * @param pkt packet to dump + * @param dump_payload True if the payload must be displayed, too. + * @param st AVStream that the packet belongs to + */ +void av_pkt_dump2(FILE *f, AVPacket *pkt, int dump_payload, AVStream *st); + + +/** + * Send a nice dump of a packet to the log. + * + * @param avcl A pointer to an arbitrary struct of which the first field is a + * pointer to an AVClass struct. + * @param level The importance level of the message, lower values signifying + * higher importance. + * @param pkt packet to dump + * @param dump_payload True if the payload must be displayed, too. + * @param st AVStream that the packet belongs to + */ +void av_pkt_dump_log2(void *avcl, int level, AVPacket *pkt, int dump_payload, + AVStream *st); + +/** + * Get the AVCodecID for the given codec tag tag. + * If no codec id is found returns AV_CODEC_ID_NONE. + * + * @param tags list of supported codec_id-codec_tag pairs, as stored + * in AVInputFormat.codec_tag and AVOutputFormat.codec_tag + */ +enum AVCodecID av_codec_get_id(const struct AVCodecTag * const *tags, unsigned int tag); + +/** + * Get the codec tag for the given codec id id. + * If no codec tag is found returns 0. + * + * @param tags list of supported codec_id-codec_tag pairs, as stored + * in AVInputFormat.codec_tag and AVOutputFormat.codec_tag + */ +unsigned int av_codec_get_tag(const struct AVCodecTag * const *tags, enum AVCodecID id); + +int av_find_default_stream_index(AVFormatContext *s); + +/** + * Get the index for a specific timestamp. + * @param flags if AVSEEK_FLAG_BACKWARD then the returned index will correspond + * to the timestamp which is <= the requested one, if backward + * is 0, then it will be >= + * if AVSEEK_FLAG_ANY seek to any frame, only keyframes otherwise + * @return < 0 if no such timestamp could be found + */ +int av_index_search_timestamp(AVStream *st, int64_t timestamp, int flags); + +/** + * Add an index entry into a sorted list. Update the entry if the list + * already contains it. + * + * @param timestamp timestamp in the time base of the given stream + */ +int av_add_index_entry(AVStream *st, int64_t pos, int64_t timestamp, + int size, int distance, int flags); + + +/** + * Split a URL string into components. + * + * The pointers to buffers for storing individual components may be null, + * in order to ignore that component. Buffers for components not found are + * set to empty strings. If the port is not found, it is set to a negative + * value. + * + * @param proto the buffer for the protocol + * @param proto_size the size of the proto buffer + * @param authorization the buffer for the authorization + * @param authorization_size the size of the authorization buffer + * @param hostname the buffer for the host name + * @param hostname_size the size of the hostname buffer + * @param port_ptr a pointer to store the port number in + * @param path the buffer for the path + * @param path_size the size of the path buffer + * @param url the URL to split + */ +void av_url_split(char *proto, int proto_size, + char *authorization, int authorization_size, + char *hostname, int hostname_size, + int *port_ptr, + char *path, int path_size, + const char *url); + + +void av_dump_format(AVFormatContext *ic, + int index, + const char *url, + int is_output); + +/** + * Return in 'buf' the path with '%d' replaced by a number. + * + * Also handles the '%0nd' format where 'n' is the total number + * of digits and '%%'. + * + * @param buf destination buffer + * @param buf_size destination buffer size + * @param path numbered sequence string + * @param number frame number + * @return 0 if OK, -1 on format error + */ +int av_get_frame_filename(char *buf, int buf_size, + const char *path, int number); + +/** + * Check whether filename actually is a numbered sequence generator. + * + * @param filename possible numbered sequence string + * @return 1 if a valid numbered sequence string, 0 otherwise + */ +int av_filename_number_test(const char *filename); + +/** + * Generate an SDP for an RTP session. + * + * @param ac array of AVFormatContexts describing the RTP streams. If the + * array is composed by only one context, such context can contain + * multiple AVStreams (one AVStream per RTP stream). Otherwise, + * all the contexts in the array (an AVCodecContext per RTP stream) + * must contain only one AVStream. + * @param n_files number of AVCodecContexts contained in ac + * @param buf buffer where the SDP will be stored (must be allocated by + * the caller) + * @param size the size of the buffer + * @return 0 if OK, AVERROR_xxx on error + */ +int av_sdp_create(AVFormatContext *ac[], int n_files, char *buf, int size); + +/** + * Return a positive value if the given filename has one of the given + * extensions, 0 otherwise. + * + * @param extensions a comma-separated list of filename extensions + */ +int av_match_ext(const char *filename, const char *extensions); + +/** + * Test if the given container can store a codec. + * + * @param std_compliance standards compliance level, one of FF_COMPLIANCE_* + * + * @return 1 if codec with ID codec_id can be stored in ofmt, 0 if it cannot. + * A negative number if this information is not available. + */ +int avformat_query_codec(AVOutputFormat *ofmt, enum AVCodecID codec_id, int std_compliance); + +/** + * @defgroup riff_fourcc RIFF FourCCs + * @{ + * Get the tables mapping RIFF FourCCs to libavcodec AVCodecIDs. The tables are + * meant to be passed to av_codec_get_id()/av_codec_get_tag() as in the + * following code: + * @code + * uint32_t tag = MKTAG('H', '2', '6', '4'); + * const struct AVCodecTag *table[] = { avformat_get_riff_video_tags(), 0 }; + * enum AVCodecID id = av_codec_get_id(table, tag); + * @endcode + */ +/** + * @return the table mapping RIFF FourCCs for video to libavcodec AVCodecID. + */ +const struct AVCodecTag *avformat_get_riff_video_tags(void); +/** + * @return the table mapping RIFF FourCCs for audio to AVCodecID. + */ +const struct AVCodecTag *avformat_get_riff_audio_tags(void); +/** + * @} + */ + +/** + * @} + */ + +#endif /* AVFORMAT_AVFORMAT_H */ diff -r 3331b30e4ef1 -r 88fde28bbda6 misc/winutils/include/libavformat/avio.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/misc/winutils/include/libavformat/avio.h Sat Nov 03 00:34:35 2012 +0400 @@ -0,0 +1,433 @@ +/* + * copyright (c) 2001 Fabrice Bellard + * + * This file is part of Libav. + * + * Libav is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * Libav 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 + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with Libav; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ +#ifndef AVFORMAT_AVIO_H +#define AVFORMAT_AVIO_H + +/** + * @file + * @ingroup lavf_io + * Buffered I/O operations + */ + +#include + +#include "libavutil/common.h" +#include "libavutil/dict.h" +#include "libavutil/log.h" + +#include "libavformat/version.h" + + +#define AVIO_SEEKABLE_NORMAL 0x0001 /**< Seeking works like for a local file */ + +/** + * Callback for checking whether to abort blocking functions. + * AVERROR_EXIT is returned in this case by the interrupted + * function. During blocking operations, callback is called with + * opaque as parameter. If the callback returns 1, the + * blocking operation will be aborted. + * + * No members can be added to this struct without a major bump, if + * new elements have been added after this struct in AVFormatContext + * or AVIOContext. + */ +typedef struct AVIOInterruptCB { + int (*callback)(void*); + void *opaque; +} AVIOInterruptCB; + +/** + * Bytestream IO Context. + * New fields can be added to the end with minor version bumps. + * Removal, reordering and changes to existing fields require a major + * version bump. + * sizeof(AVIOContext) must not be used outside libav*. + * + * @note None of the function pointers in AVIOContext should be called + * directly, they should only be set by the client application + * when implementing custom I/O. Normally these are set to the + * function pointers specified in avio_alloc_context() + */ +typedef struct AVIOContext { + /** + * A class for private options. + * + * If this AVIOContext is created by avio_open2(), av_class is set and + * passes the options down to protocols. + * + * If this AVIOContext is manually allocated, then av_class may be set by + * the caller. + * + * warning -- this field can be NULL, be sure to not pass this AVIOContext + * to any av_opt_* functions in that case. + */ + const AVClass *av_class; + unsigned char *buffer; /**< Start of the buffer. */ + int buffer_size; /**< Maximum buffer size */ + unsigned char *buf_ptr; /**< Current position in the buffer */ + unsigned char *buf_end; /**< End of the data, may be less than + buffer+buffer_size if the read function returned + less data than requested, e.g. for streams where + no more data has been received yet. */ + void *opaque; /**< A private pointer, passed to the read/write/seek/... + functions. */ + int (*read_packet)(void *opaque, uint8_t *buf, int buf_size); + int (*write_packet)(void *opaque, uint8_t *buf, int buf_size); + int64_t (*seek)(void *opaque, int64_t offset, int whence); + int64_t pos; /**< position in the file of the current buffer */ + int must_flush; /**< true if the next seek should flush */ + int eof_reached; /**< true if eof reached */ + int write_flag; /**< true if open for writing */ + int max_packet_size; + unsigned long checksum; + unsigned char *checksum_ptr; + unsigned long (*update_checksum)(unsigned long checksum, const uint8_t *buf, unsigned int size); + int error; /**< contains the error code or 0 if no error happened */ + /** + * Pause or resume playback for network streaming protocols - e.g. MMS. + */ + int (*read_pause)(void *opaque, int pause); + /** + * Seek to a given timestamp in stream with the specified stream_index. + * Needed for some network streaming protocols which don't support seeking + * to byte position. + */ + int64_t (*read_seek)(void *opaque, int stream_index, + int64_t timestamp, int flags); + /** + * A combination of AVIO_SEEKABLE_ flags or 0 when the stream is not seekable. + */ + int seekable; +} AVIOContext; + +/* unbuffered I/O */ + +/** + * Return AVIO_FLAG_* access flags corresponding to the access permissions + * of the resource in url, or a negative value corresponding to an + * AVERROR code in case of failure. The returned access flags are + * masked by the value in flags. + * + * @note This function is intrinsically unsafe, in the sense that the + * checked resource may change its existence or permission status from + * one call to another. Thus you should not trust the returned value, + * unless you are sure that no other processes are accessing the + * checked resource. + */ +int avio_check(const char *url, int flags); + +/** + * Allocate and initialize an AVIOContext for buffered I/O. It must be later + * freed with av_free(). + * + * @param buffer Memory block for input/output operations via AVIOContext. + * The buffer must be allocated with av_malloc() and friends. + * @param buffer_size The buffer size is very important for performance. + * For protocols with fixed blocksize it should be set to this blocksize. + * For others a typical size is a cache page, e.g. 4kb. + * @param write_flag Set to 1 if the buffer should be writable, 0 otherwise. + * @param opaque An opaque pointer to user-specific data. + * @param read_packet A function for refilling the buffer, may be NULL. + * @param write_packet A function for writing the buffer contents, may be NULL. + * @param seek A function for seeking to specified byte position, may be NULL. + * + * @return Allocated AVIOContext or NULL on failure. + */ +AVIOContext *avio_alloc_context( + unsigned char *buffer, + int buffer_size, + int write_flag, + void *opaque, + int (*read_packet)(void *opaque, uint8_t *buf, int buf_size), + int (*write_packet)(void *opaque, uint8_t *buf, int buf_size), + int64_t (*seek)(void *opaque, int64_t offset, int whence)); + +void avio_w8(AVIOContext *s, int b); +void avio_write(AVIOContext *s, const unsigned char *buf, int size); +void avio_wl64(AVIOContext *s, uint64_t val); +void avio_wb64(AVIOContext *s, uint64_t val); +void avio_wl32(AVIOContext *s, unsigned int val); +void avio_wb32(AVIOContext *s, unsigned int val); +void avio_wl24(AVIOContext *s, unsigned int val); +void avio_wb24(AVIOContext *s, unsigned int val); +void avio_wl16(AVIOContext *s, unsigned int val); +void avio_wb16(AVIOContext *s, unsigned int val); + +/** + * Write a NULL-terminated string. + * @return number of bytes written. + */ +int avio_put_str(AVIOContext *s, const char *str); + +/** + * Convert an UTF-8 string to UTF-16LE and write it. + * @return number of bytes written. + */ +int avio_put_str16le(AVIOContext *s, const char *str); + +/** + * Passing this as the "whence" parameter to a seek function causes it to + * return the filesize without seeking anywhere. Supporting this is optional. + * If it is not supported then the seek function will return <0. + */ +#define AVSEEK_SIZE 0x10000 + +/** + * Oring this flag as into the "whence" parameter to a seek function causes it to + * seek by any means (like reopening and linear reading) or other normally unreasonble + * means that can be extreemly slow. + * This may be ignored by the seek code. + */ +#define AVSEEK_FORCE 0x20000 + +/** + * fseek() equivalent for AVIOContext. + * @return new position or AVERROR. + */ +int64_t avio_seek(AVIOContext *s, int64_t offset, int whence); + +/** + * Skip given number of bytes forward + * @return new position or AVERROR. + */ +static av_always_inline int64_t avio_skip(AVIOContext *s, int64_t offset) +{ + return avio_seek(s, offset, SEEK_CUR); +} + +/** + * ftell() equivalent for AVIOContext. + * @return position or AVERROR. + */ +static av_always_inline int64_t avio_tell(AVIOContext *s) +{ + return avio_seek(s, 0, SEEK_CUR); +} + +/** + * Get the filesize. + * @return filesize or AVERROR + */ +int64_t avio_size(AVIOContext *s); + +/** @warning currently size is limited */ +int avio_printf(AVIOContext *s, const char *fmt, ...) av_printf_format(2, 3); + +void avio_flush(AVIOContext *s); + + +/** + * Read size bytes from AVIOContext into buf. + * @return number of bytes read or AVERROR + */ +int avio_read(AVIOContext *s, unsigned char *buf, int size); + +/** + * @name Functions for reading from AVIOContext + * @{ + * + * @note return 0 if EOF, so you cannot use it if EOF handling is + * necessary + */ +int avio_r8 (AVIOContext *s); +unsigned int avio_rl16(AVIOContext *s); +unsigned int avio_rl24(AVIOContext *s); +unsigned int avio_rl32(AVIOContext *s); +uint64_t avio_rl64(AVIOContext *s); +unsigned int avio_rb16(AVIOContext *s); +unsigned int avio_rb24(AVIOContext *s); +unsigned int avio_rb32(AVIOContext *s); +uint64_t avio_rb64(AVIOContext *s); +/** + * @} + */ + +/** + * Read a string from pb into buf. The reading will terminate when either + * a NULL character was encountered, maxlen bytes have been read, or nothing + * more can be read from pb. The result is guaranteed to be NULL-terminated, it + * will be truncated if buf is too small. + * Note that the string is not interpreted or validated in any way, it + * might get truncated in the middle of a sequence for multi-byte encodings. + * + * @return number of bytes read (is always <= maxlen). + * If reading ends on EOF or error, the return value will be one more than + * bytes actually read. + */ +int avio_get_str(AVIOContext *pb, int maxlen, char *buf, int buflen); + +/** + * Read a UTF-16 string from pb and convert it to UTF-8. + * The reading will terminate when either a null or invalid character was + * encountered or maxlen bytes have been read. + * @return number of bytes read (is always <= maxlen) + */ +int avio_get_str16le(AVIOContext *pb, int maxlen, char *buf, int buflen); +int avio_get_str16be(AVIOContext *pb, int maxlen, char *buf, int buflen); + + +/** + * @name URL open modes + * The flags argument to avio_open must be one of the following + * constants, optionally ORed with other flags. + * @{ + */ +#define AVIO_FLAG_READ 1 /**< read-only */ +#define AVIO_FLAG_WRITE 2 /**< write-only */ +#define AVIO_FLAG_READ_WRITE (AVIO_FLAG_READ|AVIO_FLAG_WRITE) /**< read-write pseudo flag */ +/** + * @} + */ + +/** + * Use non-blocking mode. + * If this flag is set, operations on the context will return + * AVERROR(EAGAIN) if they can not be performed immediately. + * If this flag is not set, operations on the context will never return + * AVERROR(EAGAIN). + * Note that this flag does not affect the opening/connecting of the + * context. Connecting a protocol will always block if necessary (e.g. on + * network protocols) but never hang (e.g. on busy devices). + * Warning: non-blocking protocols is work-in-progress; this flag may be + * silently ignored. + */ +#define AVIO_FLAG_NONBLOCK 8 + +/** + * Create and initialize a AVIOContext for accessing the + * resource indicated by url. + * @note When the resource indicated by url has been opened in + * read+write mode, the AVIOContext can be used only for writing. + * + * @param s Used to return the pointer to the created AVIOContext. + * In case of failure the pointed to value is set to NULL. + * @param flags flags which control how the resource indicated by url + * is to be opened + * @return 0 in case of success, a negative value corresponding to an + * AVERROR code in case of failure + */ +int avio_open(AVIOContext **s, const char *url, int flags); + +/** + * Create and initialize a AVIOContext for accessing the + * resource indicated by url. + * @note When the resource indicated by url has been opened in + * read+write mode, the AVIOContext can be used only for writing. + * + * @param s Used to return the pointer to the created AVIOContext. + * In case of failure the pointed to value is set to NULL. + * @param flags flags which control how the resource indicated by url + * is to be opened + * @param int_cb an interrupt callback to be used at the protocols level + * @param options A dictionary filled with protocol-private options. On return + * this parameter will be destroyed and replaced with a dict containing options + * that were not found. May be NULL. + * @return 0 in case of success, a negative value corresponding to an + * AVERROR code in case of failure + */ +int avio_open2(AVIOContext **s, const char *url, int flags, + const AVIOInterruptCB *int_cb, AVDictionary **options); + +/** + * Close the resource accessed by the AVIOContext s and free it. + * This function can only be used if s was opened by avio_open(). + * + * The internal buffer is automatically flushed before closing the + * resource. + * + * @return 0 on success, an AVERROR < 0 on error. + * @see avio_closep + */ +int avio_close(AVIOContext *s); + +/** + * Close the resource accessed by the AVIOContext *s, free it + * and set the pointer pointing to it to NULL. + * This function can only be used if s was opened by avio_open(). + * + * The internal buffer is automatically flushed before closing the + * resource. + * + * @return 0 on success, an AVERROR < 0 on error. + * @see avio_close + */ +int avio_closep(AVIOContext **s); + + +/** + * Open a write only memory stream. + * + * @param s new IO context + * @return zero if no error. + */ +int avio_open_dyn_buf(AVIOContext **s); + +/** + * Return the written size and a pointer to the buffer. The buffer + * must be freed with av_free(). + * Padding of FF_INPUT_BUFFER_PADDING_SIZE is added to the buffer. + * + * @param s IO context + * @param pbuffer pointer to a byte buffer + * @return the length of the byte buffer + */ +int avio_close_dyn_buf(AVIOContext *s, uint8_t **pbuffer); + +/** + * Iterate through names of available protocols. + * + * @param opaque A private pointer representing current protocol. + * It must be a pointer to NULL on first iteration and will + * be updated by successive calls to avio_enum_protocols. + * @param output If set to 1, iterate over output protocols, + * otherwise over input protocols. + * + * @return A static string containing the name of current protocol or NULL + */ +const char *avio_enum_protocols(void **opaque, int output); + +/** + * Pause and resume playing - only meaningful if using a network streaming + * protocol (e.g. MMS). + * @param pause 1 for pause, 0 for resume + */ +int avio_pause(AVIOContext *h, int pause); + +/** + * Seek to a given timestamp relative to some component stream. + * Only meaningful if using a network streaming protocol (e.g. MMS.). + * @param stream_index The stream index that the timestamp is relative to. + * If stream_index is (-1) the timestamp should be in AV_TIME_BASE + * units from the beginning of the presentation. + * If a stream_index >= 0 is used and the protocol does not support + * seeking based on component streams, the call will fail with ENOTSUP. + * @param timestamp timestamp in AVStream.time_base units + * or if there is no stream specified then in AV_TIME_BASE units. + * @param flags Optional combination of AVSEEK_FLAG_BACKWARD, AVSEEK_FLAG_BYTE + * and AVSEEK_FLAG_ANY. The protocol may silently ignore + * AVSEEK_FLAG_BACKWARD and AVSEEK_FLAG_ANY, but AVSEEK_FLAG_BYTE will + * fail with ENOTSUP if used and not supported. + * @return >= 0 on success + * @see AVInputFormat::read_seek + */ +int64_t avio_seek_time(AVIOContext *h, int stream_index, + int64_t timestamp, int flags); + +#endif /* AVFORMAT_AVIO_H */ diff -r 3331b30e4ef1 -r 88fde28bbda6 misc/winutils/include/libavformat/version.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/misc/winutils/include/libavformat/version.h Sat Nov 03 00:34:35 2012 +0400 @@ -0,0 +1,71 @@ +/* + * Version macros. + * + * This file is part of Libav. + * + * Libav is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * Libav 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 + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with Libav; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ + +#ifndef AVFORMAT_VERSION_H +#define AVFORMAT_VERSION_H + +/** + * @file + * @ingroup libavf + * Libavformat version macros + */ + +#include "libavutil/avutil.h" + +#define LIBAVFORMAT_VERSION_MAJOR 54 +#define LIBAVFORMAT_VERSION_MINOR 19 +#define LIBAVFORMAT_VERSION_MICRO 0 + +#define LIBAVFORMAT_VERSION_INT AV_VERSION_INT(LIBAVFORMAT_VERSION_MAJOR, \ + LIBAVFORMAT_VERSION_MINOR, \ + LIBAVFORMAT_VERSION_MICRO) +#define LIBAVFORMAT_VERSION AV_VERSION(LIBAVFORMAT_VERSION_MAJOR, \ + LIBAVFORMAT_VERSION_MINOR, \ + LIBAVFORMAT_VERSION_MICRO) +#define LIBAVFORMAT_BUILD LIBAVFORMAT_VERSION_INT + +#define LIBAVFORMAT_IDENT "Lavf" AV_STRINGIFY(LIBAVFORMAT_VERSION) + +/** + * FF_API_* defines may be placed below to indicate public API that will be + * dropped at a future version bump. The defines themselves are not part of + * the public API and may change, break or disappear at any time. + */ + +#ifndef FF_API_CLOSE_INPUT_FILE +#define FF_API_CLOSE_INPUT_FILE (LIBAVFORMAT_VERSION_MAJOR < 55) +#endif +#ifndef FF_API_APPLEHTTP_PROTO +#define FF_API_APPLEHTTP_PROTO (LIBAVFORMAT_VERSION_MAJOR < 55) +#endif +#ifndef FF_API_READ_PACKET +#define FF_API_READ_PACKET (LIBAVFORMAT_VERSION_MAJOR < 55) +#endif +#ifndef FF_API_INTERLEAVE_PACKET +#define FF_API_INTERLEAVE_PACKET (LIBAVFORMAT_VERSION_MAJOR < 55) +#endif +#ifndef FF_API_AV_GETTIME +#define FF_API_AV_GETTIME (LIBAVFORMAT_VERSION_MAJOR < 55) +#endif +#ifndef FF_API_R_FRAME_RATE +#define FF_API_R_FRAME_RATE (LIBAVFORMAT_VERSION_MAJOR < 55) +#endif + +#endif /* AVFORMAT_VERSION_H */ diff -r 3331b30e4ef1 -r 88fde28bbda6 misc/winutils/include/libavutil/adler32.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/misc/winutils/include/libavutil/adler32.h Sat Nov 03 00:34:35 2012 +0400 @@ -0,0 +1,43 @@ +/* + * copyright (c) 2006 Mans Rullgard + * + * This file is part of Libav. + * + * Libav is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * Libav 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 + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with Libav; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ + +#ifndef AVUTIL_ADLER32_H +#define AVUTIL_ADLER32_H + +#include +#include "attributes.h" + +/** + * @ingroup lavu_crypto + * Calculate the Adler32 checksum of a buffer. + * + * Passing the return value to a subsequent av_adler32_update() call + * allows the checksum of multiple buffers to be calculated as though + * they were concatenated. + * + * @param adler initial checksum value + * @param buf pointer to input buffer + * @param len size of input buffer + * @return updated checksum + */ +unsigned long av_adler32_update(unsigned long adler, const uint8_t *buf, + unsigned int len) av_pure; + +#endif /* AVUTIL_ADLER32_H */ diff -r 3331b30e4ef1 -r 88fde28bbda6 misc/winutils/include/libavutil/aes.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/misc/winutils/include/libavutil/aes.h Sat Nov 03 00:34:35 2012 +0400 @@ -0,0 +1,67 @@ +/* + * copyright (c) 2007 Michael Niedermayer + * + * This file is part of Libav. + * + * Libav is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * Libav 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 + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with Libav; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ + +#ifndef AVUTIL_AES_H +#define AVUTIL_AES_H + +#include + +#include "attributes.h" +#include "version.h" + +/** + * @defgroup lavu_aes AES + * @ingroup lavu_crypto + * @{ + */ + +#if FF_API_CONTEXT_SIZE +extern attribute_deprecated const int av_aes_size; +#endif + +struct AVAES; + +/** + * Allocate an AVAES context. + */ +struct AVAES *av_aes_alloc(void); + +/** + * Initialize an AVAES context. + * @param key_bits 128, 192 or 256 + * @param decrypt 0 for encryption, 1 for decryption + */ +int av_aes_init(struct AVAES *a, const uint8_t *key, int key_bits, int decrypt); + +/** + * Encrypt or decrypt a buffer using a previously initialized context. + * @param count number of 16 byte blocks + * @param dst destination array, can be equal to src + * @param src source array, can be equal to dst + * @param iv initialization vector for CBC mode, if NULL then ECB will be used + * @param decrypt 0 for encryption, 1 for decryption + */ +void av_aes_crypt(struct AVAES *a, uint8_t *dst, const uint8_t *src, int count, uint8_t *iv, int decrypt); + +/** + * @} + */ + +#endif /* AVUTIL_AES_H */ diff -r 3331b30e4ef1 -r 88fde28bbda6 misc/winutils/include/libavutil/attributes.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/misc/winutils/include/libavutil/attributes.h Sat Nov 03 00:34:35 2012 +0400 @@ -0,0 +1,122 @@ +/* + * copyright (c) 2006 Michael Niedermayer + * + * This file is part of Libav. + * + * Libav is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * Libav 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 + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with Libav; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ + +/** + * @file + * Macro definitions for various function/variable attributes + */ + +#ifndef AVUTIL_ATTRIBUTES_H +#define AVUTIL_ATTRIBUTES_H + +#ifdef __GNUC__ +# define AV_GCC_VERSION_AT_LEAST(x,y) (__GNUC__ > x || __GNUC__ == x && __GNUC_MINOR__ >= y) +#else +# define AV_GCC_VERSION_AT_LEAST(x,y) 0 +#endif + +#if AV_GCC_VERSION_AT_LEAST(3,1) +# define av_always_inline __attribute__((always_inline)) inline +#elif defined(_MSC_VER) +# define av_always_inline __forceinline +#else +# define av_always_inline inline +#endif + +#if AV_GCC_VERSION_AT_LEAST(3,1) +# define av_noinline __attribute__((noinline)) +#else +# define av_noinline +#endif + +#if AV_GCC_VERSION_AT_LEAST(3,1) +# define av_pure __attribute__((pure)) +#else +# define av_pure +#endif + +#if AV_GCC_VERSION_AT_LEAST(2,6) +# define av_const __attribute__((const)) +#else +# define av_const +#endif + +#if AV_GCC_VERSION_AT_LEAST(4,3) +# define av_cold __attribute__((cold)) +#else +# define av_cold +#endif + +#if AV_GCC_VERSION_AT_LEAST(4,1) +# define av_flatten __attribute__((flatten)) +#else +# define av_flatten +#endif + +#if AV_GCC_VERSION_AT_LEAST(3,1) +# define attribute_deprecated __attribute__((deprecated)) +#else +# define attribute_deprecated +#endif + +#if defined(__GNUC__) +# define av_unused __attribute__((unused)) +#else +# define av_unused +#endif + +/** + * Mark a variable as used and prevent the compiler from optimizing it + * away. This is useful for variables accessed only from inline + * assembler without the compiler being aware. + */ +#if AV_GCC_VERSION_AT_LEAST(3,1) +# define av_used __attribute__((used)) +#else +# define av_used +#endif + +#if AV_GCC_VERSION_AT_LEAST(3,3) +# define av_alias __attribute__((may_alias)) +#else +# define av_alias +#endif + +#if defined(__GNUC__) && !defined(__ICC) +# define av_uninit(x) x=x +#else +# define av_uninit(x) x +#endif + +#ifdef __GNUC__ +# define av_builtin_constant_p __builtin_constant_p +# define av_printf_format(fmtpos, attrpos) __attribute__((__format__(__printf__, fmtpos, attrpos))) +#else +# define av_builtin_constant_p(x) 0 +# define av_printf_format(fmtpos, attrpos) +#endif + +#if AV_GCC_VERSION_AT_LEAST(2,5) +# define av_noreturn __attribute__((noreturn)) +#else +# define av_noreturn +#endif + +#endif /* AVUTIL_ATTRIBUTES_H */ diff -r 3331b30e4ef1 -r 88fde28bbda6 misc/winutils/include/libavutil/audio_fifo.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/misc/winutils/include/libavutil/audio_fifo.h Sat Nov 03 00:34:35 2012 +0400 @@ -0,0 +1,146 @@ +/* + * Audio FIFO + * Copyright (c) 2012 Justin Ruggles + * + * This file is part of Libav. + * + * Libav is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * Libav 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 + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with Libav; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ + +/** + * @file + * Audio FIFO Buffer + */ + +#ifndef AVUTIL_AUDIO_FIFO_H +#define AVUTIL_AUDIO_FIFO_H + +#include "avutil.h" +#include "fifo.h" +#include "samplefmt.h" + +/** + * @addtogroup lavu_audio + * @{ + */ + +/** + * Context for an Audio FIFO Buffer. + * + * - Operates at the sample level rather than the byte level. + * - Supports multiple channels with either planar or packed sample format. + * - Automatic reallocation when writing to a full buffer. + */ +typedef struct AVAudioFifo AVAudioFifo; + +/** + * Free an AVAudioFifo. + * + * @param af AVAudioFifo to free + */ +void av_audio_fifo_free(AVAudioFifo *af); + +/** + * Allocate an AVAudioFifo. + * + * @param sample_fmt sample format + * @param channels number of channels + * @param nb_samples initial allocation size, in samples + * @return newly allocated AVAudioFifo, or NULL on error + */ +AVAudioFifo *av_audio_fifo_alloc(enum AVSampleFormat sample_fmt, int channels, + int nb_samples); + +/** + * Reallocate an AVAudioFifo. + * + * @param af AVAudioFifo to reallocate + * @param nb_samples new allocation size, in samples + * @return 0 if OK, or negative AVERROR code on failure + */ +int av_audio_fifo_realloc(AVAudioFifo *af, int nb_samples); + +/** + * Write data to an AVAudioFifo. + * + * The AVAudioFifo will be reallocated automatically if the available space + * is less than nb_samples. + * + * @see enum AVSampleFormat + * The documentation for AVSampleFormat describes the data layout. + * + * @param af AVAudioFifo to write to + * @param data audio data plane pointers + * @param nb_samples number of samples to write + * @return number of samples actually written, or negative AVERROR + * code on failure. + */ +int av_audio_fifo_write(AVAudioFifo *af, void **data, int nb_samples); + +/** + * Read data from an AVAudioFifo. + * + * @see enum AVSampleFormat + * The documentation for AVSampleFormat describes the data layout. + * + * @param af AVAudioFifo to read from + * @param data audio data plane pointers + * @param nb_samples number of samples to read + * @return number of samples actually read, or negative AVERROR code + * on failure. + */ +int av_audio_fifo_read(AVAudioFifo *af, void **data, int nb_samples); + +/** + * Drain data from an AVAudioFifo. + * + * Removes the data without reading it. + * + * @param af AVAudioFifo to drain + * @param nb_samples number of samples to drain + * @return 0 if OK, or negative AVERROR code on failure + */ +int av_audio_fifo_drain(AVAudioFifo *af, int nb_samples); + +/** + * Reset the AVAudioFifo buffer. + * + * This empties all data in the buffer. + * + * @param af AVAudioFifo to reset + */ +void av_audio_fifo_reset(AVAudioFifo *af); + +/** + * Get the current number of samples in the AVAudioFifo available for reading. + * + * @param af the AVAudioFifo to query + * @return number of samples available for reading + */ +int av_audio_fifo_size(AVAudioFifo *af); + +/** + * Get the current number of samples in the AVAudioFifo available for writing. + * + * @param af the AVAudioFifo to query + * @return number of samples available for writing + */ +int av_audio_fifo_space(AVAudioFifo *af); + +/** + * @} + */ + +#endif /* AVUTIL_AUDIO_FIFO_H */ diff -r 3331b30e4ef1 -r 88fde28bbda6 misc/winutils/include/libavutil/audioconvert.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/misc/winutils/include/libavutil/audioconvert.h Sat Nov 03 00:34:35 2012 +0400 @@ -0,0 +1,182 @@ +/* + * Copyright (c) 2006 Michael Niedermayer + * Copyright (c) 2008 Peter Ross + * + * This file is part of Libav. + * + * Libav is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * Libav 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 + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with Libav; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ + +#ifndef AVUTIL_AUDIOCONVERT_H +#define AVUTIL_AUDIOCONVERT_H + +#include + +/** + * @file + * audio conversion routines + */ + +/** + * @addtogroup lavu_audio + * @{ + */ + +/** + * @defgroup channel_masks Audio channel masks + * @{ + */ +#define AV_CH_FRONT_LEFT 0x00000001 +#define AV_CH_FRONT_RIGHT 0x00000002 +#define AV_CH_FRONT_CENTER 0x00000004 +#define AV_CH_LOW_FREQUENCY 0x00000008 +#define AV_CH_BACK_LEFT 0x00000010 +#define AV_CH_BACK_RIGHT 0x00000020 +#define AV_CH_FRONT_LEFT_OF_CENTER 0x00000040 +#define AV_CH_FRONT_RIGHT_OF_CENTER 0x00000080 +#define AV_CH_BACK_CENTER 0x00000100 +#define AV_CH_SIDE_LEFT 0x00000200 +#define AV_CH_SIDE_RIGHT 0x00000400 +#define AV_CH_TOP_CENTER 0x00000800 +#define AV_CH_TOP_FRONT_LEFT 0x00001000 +#define AV_CH_TOP_FRONT_CENTER 0x00002000 +#define AV_CH_TOP_FRONT_RIGHT 0x00004000 +#define AV_CH_TOP_BACK_LEFT 0x00008000 +#define AV_CH_TOP_BACK_CENTER 0x00010000 +#define AV_CH_TOP_BACK_RIGHT 0x00020000 +#define AV_CH_STEREO_LEFT 0x20000000 ///< Stereo downmix. +#define AV_CH_STEREO_RIGHT 0x40000000 ///< See AV_CH_STEREO_LEFT. +#define AV_CH_WIDE_LEFT 0x0000000080000000ULL +#define AV_CH_WIDE_RIGHT 0x0000000100000000ULL +#define AV_CH_SURROUND_DIRECT_LEFT 0x0000000200000000ULL +#define AV_CH_SURROUND_DIRECT_RIGHT 0x0000000400000000ULL +#define AV_CH_LOW_FREQUENCY_2 0x0000000800000000ULL + +/** Channel mask value used for AVCodecContext.request_channel_layout + to indicate that the user requests the channel order of the decoder output + to be the native codec channel order. */ +#define AV_CH_LAYOUT_NATIVE 0x8000000000000000ULL + +/** + * @} + * @defgroup channel_mask_c Audio channel convenience macros + * @{ + * */ +#define AV_CH_LAYOUT_MONO (AV_CH_FRONT_CENTER) +#define AV_CH_LAYOUT_STEREO (AV_CH_FRONT_LEFT|AV_CH_FRONT_RIGHT) +#define AV_CH_LAYOUT_2POINT1 (AV_CH_LAYOUT_STEREO|AV_CH_LOW_FREQUENCY) +#define AV_CH_LAYOUT_2_1 (AV_CH_LAYOUT_STEREO|AV_CH_BACK_CENTER) +#define AV_CH_LAYOUT_SURROUND (AV_CH_LAYOUT_STEREO|AV_CH_FRONT_CENTER) +#define AV_CH_LAYOUT_3POINT1 (AV_CH_LAYOUT_SURROUND|AV_CH_LOW_FREQUENCY) +#define AV_CH_LAYOUT_4POINT0 (AV_CH_LAYOUT_SURROUND|AV_CH_BACK_CENTER) +#define AV_CH_LAYOUT_4POINT1 (AV_CH_LAYOUT_4POINT0|AV_CH_LOW_FREQUENCY) +#define AV_CH_LAYOUT_2_2 (AV_CH_LAYOUT_STEREO|AV_CH_SIDE_LEFT|AV_CH_SIDE_RIGHT) +#define AV_CH_LAYOUT_QUAD (AV_CH_LAYOUT_STEREO|AV_CH_BACK_LEFT|AV_CH_BACK_RIGHT) +#define AV_CH_LAYOUT_5POINT0 (AV_CH_LAYOUT_SURROUND|AV_CH_SIDE_LEFT|AV_CH_SIDE_RIGHT) +#define AV_CH_LAYOUT_5POINT1 (AV_CH_LAYOUT_5POINT0|AV_CH_LOW_FREQUENCY) +#define AV_CH_LAYOUT_5POINT0_BACK (AV_CH_LAYOUT_SURROUND|AV_CH_BACK_LEFT|AV_CH_BACK_RIGHT) +#define AV_CH_LAYOUT_5POINT1_BACK (AV_CH_LAYOUT_5POINT0_BACK|AV_CH_LOW_FREQUENCY) +#define AV_CH_LAYOUT_6POINT0 (AV_CH_LAYOUT_5POINT0|AV_CH_BACK_CENTER) +#define AV_CH_LAYOUT_6POINT0_FRONT (AV_CH_LAYOUT_2_2|AV_CH_FRONT_LEFT_OF_CENTER|AV_CH_FRONT_RIGHT_OF_CENTER) +#define AV_CH_LAYOUT_HEXAGONAL (AV_CH_LAYOUT_5POINT0_BACK|AV_CH_BACK_CENTER) +#define AV_CH_LAYOUT_6POINT1 (AV_CH_LAYOUT_5POINT1|AV_CH_BACK_CENTER) +#define AV_CH_LAYOUT_6POINT1_BACK (AV_CH_LAYOUT_5POINT1_BACK|AV_CH_BACK_CENTER) +#define AV_CH_LAYOUT_6POINT1_FRONT (AV_CH_LAYOUT_6POINT0_FRONT|AV_CH_LOW_FREQUENCY) +#define AV_CH_LAYOUT_7POINT0 (AV_CH_LAYOUT_5POINT0|AV_CH_BACK_LEFT|AV_CH_BACK_RIGHT) +#define AV_CH_LAYOUT_7POINT0_FRONT (AV_CH_LAYOUT_5POINT0|AV_CH_FRONT_LEFT_OF_CENTER|AV_CH_FRONT_RIGHT_OF_CENTER) +#define AV_CH_LAYOUT_7POINT1 (AV_CH_LAYOUT_5POINT1|AV_CH_BACK_LEFT|AV_CH_BACK_RIGHT) +#define AV_CH_LAYOUT_7POINT1_WIDE (AV_CH_LAYOUT_5POINT1|AV_CH_FRONT_LEFT_OF_CENTER|AV_CH_FRONT_RIGHT_OF_CENTER) +#define AV_CH_LAYOUT_7POINT1_WIDE_BACK (AV_CH_LAYOUT_5POINT1_BACK|AV_CH_FRONT_LEFT_OF_CENTER|AV_CH_FRONT_RIGHT_OF_CENTER) +#define AV_CH_LAYOUT_OCTAGONAL (AV_CH_LAYOUT_5POINT0|AV_CH_BACK_LEFT|AV_CH_BACK_CENTER|AV_CH_BACK_RIGHT) +#define AV_CH_LAYOUT_STEREO_DOWNMIX (AV_CH_STEREO_LEFT|AV_CH_STEREO_RIGHT) + +enum AVMatrixEncoding { + AV_MATRIX_ENCODING_NONE, + AV_MATRIX_ENCODING_DOLBY, + AV_MATRIX_ENCODING_DPLII, + AV_MATRIX_ENCODING_NB +}; + +/** + * @} + */ + +/** + * Return a channel layout id that matches name, or 0 if no match is found. + * + * name can be one or several of the following notations, + * separated by '+' or '|': + * - the name of an usual channel layout (mono, stereo, 4.0, quad, 5.0, + * 5.0(side), 5.1, 5.1(side), 7.1, 7.1(wide), downmix); + * - the name of a single channel (FL, FR, FC, LFE, BL, BR, FLC, FRC, BC, + * SL, SR, TC, TFL, TFC, TFR, TBL, TBC, TBR, DL, DR); + * - a number of channels, in decimal, optionally followed by 'c', yielding + * the default channel layout for that number of channels (@see + * av_get_default_channel_layout); + * - a channel layout mask, in hexadecimal starting with "0x" (see the + * AV_CH_* macros). + * + * Example: "stereo+FC" = "2+FC" = "2c+1c" = "0x7" + */ +uint64_t av_get_channel_layout(const char *name); + +/** + * Return a description of a channel layout. + * If nb_channels is <= 0, it is guessed from the channel_layout. + * + * @param buf put here the string containing the channel layout + * @param buf_size size in bytes of the buffer + */ +void av_get_channel_layout_string(char *buf, int buf_size, int nb_channels, uint64_t channel_layout); + +/** + * Return the number of channels in the channel layout. + */ +int av_get_channel_layout_nb_channels(uint64_t channel_layout); + +/** + * Return default channel layout for a given number of channels. + */ +uint64_t av_get_default_channel_layout(int nb_channels); + +/** + * Get the index of a channel in channel_layout. + * + * @param channel a channel layout describing exactly one channel which must be + * present in channel_layout. + * + * @return index of channel in channel_layout on success, a negative AVERROR + * on error. + */ +int av_get_channel_layout_channel_index(uint64_t channel_layout, + uint64_t channel); + +/** + * Get the channel with the given index in channel_layout. + */ +uint64_t av_channel_layout_extract_channel(uint64_t channel_layout, int index); + +/** + * Get the name of a given channel. + * + * @return channel name on success, NULL on error. + */ +const char *av_get_channel_name(uint64_t channel); + +/** + * @} + */ + +#endif /* AVUTIL_AUDIOCONVERT_H */ diff -r 3331b30e4ef1 -r 88fde28bbda6 misc/winutils/include/libavutil/avassert.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/misc/winutils/include/libavutil/avassert.h Sat Nov 03 00:34:35 2012 +0400 @@ -0,0 +1,66 @@ +/* + * copyright (c) 2010 Michael Niedermayer + * + * This file is part of Libav. + * + * Libav is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * Libav 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 + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with Libav; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ + +/** + * @file + * simple assert() macros that are a bit more flexible than ISO C assert(). + * @author Michael Niedermayer + */ + +#ifndef AVUTIL_AVASSERT_H +#define AVUTIL_AVASSERT_H + +#include +#include "avutil.h" +#include "log.h" + +/** + * assert() equivalent, that is always enabled. + */ +#define av_assert0(cond) do { \ + if (!(cond)) { \ + av_log(NULL, AV_LOG_FATAL, "Assertion %s failed at %s:%d\n", \ + AV_STRINGIFY(cond), __FILE__, __LINE__); \ + abort(); \ + } \ +} while (0) + + +/** + * assert() equivalent, that does not lie in speed critical code. + * These asserts() thus can be enabled without fearing speedloss. + */ +#if defined(ASSERT_LEVEL) && ASSERT_LEVEL > 0 +#define av_assert1(cond) av_assert0(cond) +#else +#define av_assert1(cond) ((void)0) +#endif + + +/** + * assert() equivalent, that does lie in speed critical code. + */ +#if defined(ASSERT_LEVEL) && ASSERT_LEVEL > 1 +#define av_assert2(cond) av_assert0(cond) +#else +#define av_assert2(cond) ((void)0) +#endif + +#endif /* AVUTIL_AVASSERT_H */ diff -r 3331b30e4ef1 -r 88fde28bbda6 misc/winutils/include/libavutil/avconfig.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/misc/winutils/include/libavutil/avconfig.h Sat Nov 03 00:34:35 2012 +0400 @@ -0,0 +1,6 @@ +/* Generated by ffconf */ +#ifndef AVUTIL_AVCONFIG_H +#define AVUTIL_AVCONFIG_H +#define AV_HAVE_BIGENDIAN 0 +#define AV_HAVE_FAST_UNALIGNED 1 +#endif /* AVUTIL_AVCONFIG_H */ diff -r 3331b30e4ef1 -r 88fde28bbda6 misc/winutils/include/libavutil/avstring.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/misc/winutils/include/libavutil/avstring.h Sat Nov 03 00:34:35 2012 +0400 @@ -0,0 +1,175 @@ +/* + * Copyright (c) 2007 Mans Rullgard + * + * This file is part of Libav. + * + * Libav is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * Libav 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 + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with Libav; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ + +#ifndef AVUTIL_AVSTRING_H +#define AVUTIL_AVSTRING_H + +#include +#include "attributes.h" + +/** + * @addtogroup lavu_string + * @{ + */ + +/** + * Return non-zero if pfx is a prefix of str. If it is, *ptr is set to + * the address of the first character in str after the prefix. + * + * @param str input string + * @param pfx prefix to test + * @param ptr updated if the prefix is matched inside str + * @return non-zero if the prefix matches, zero otherwise + */ +int av_strstart(const char *str, const char *pfx, const char **ptr); + +/** + * Return non-zero if pfx is a prefix of str independent of case. If + * it is, *ptr is set to the address of the first character in str + * after the prefix. + * + * @param str input string + * @param pfx prefix to test + * @param ptr updated if the prefix is matched inside str + * @return non-zero if the prefix matches, zero otherwise + */ +int av_stristart(const char *str, const char *pfx, const char **ptr); + +/** + * Locate the first case-independent occurrence in the string haystack + * of the string needle. A zero-length string needle is considered to + * match at the start of haystack. + * + * This function is a case-insensitive version of the standard strstr(). + * + * @param haystack string to search in + * @param needle string to search for + * @return pointer to the located match within haystack + * or a null pointer if no match + */ +char *av_stristr(const char *haystack, const char *needle); + +/** + * Copy the string src to dst, but no more than size - 1 bytes, and + * null-terminate dst. + * + * This function is the same as BSD strlcpy(). + * + * @param dst destination buffer + * @param src source string + * @param size size of destination buffer + * @return the length of src + * + * @warning since the return value is the length of src, src absolutely + * _must_ be a properly 0-terminated string, otherwise this will read beyond + * the end of the buffer and possibly crash. + */ +size_t av_strlcpy(char *dst, const char *src, size_t size); + +/** + * Append the string src to the string dst, but to a total length of + * no more than size - 1 bytes, and null-terminate dst. + * + * This function is similar to BSD strlcat(), but differs when + * size <= strlen(dst). + * + * @param dst destination buffer + * @param src source string + * @param size size of destination buffer + * @return the total length of src and dst + * + * @warning since the return value use the length of src and dst, these + * absolutely _must_ be a properly 0-terminated strings, otherwise this + * will read beyond the end of the buffer and possibly crash. + */ +size_t av_strlcat(char *dst, const char *src, size_t size); + +/** + * Append output to a string, according to a format. Never write out of + * the destination buffer, and always put a terminating 0 within + * the buffer. + * @param dst destination buffer (string to which the output is + * appended) + * @param size total size of the destination buffer + * @param fmt printf-compatible format string, specifying how the + * following parameters are used + * @return the length of the string that would have been generated + * if enough space had been available + */ +size_t av_strlcatf(char *dst, size_t size, const char *fmt, ...) av_printf_format(3, 4); + +/** + * Convert a number to a av_malloced string. + */ +char *av_d2str(double d); + +/** + * Unescape the given string until a non escaped terminating char, + * and return the token corresponding to the unescaped string. + * + * The normal \ and ' escaping is supported. Leading and trailing + * whitespaces are removed, unless they are escaped with '\' or are + * enclosed between ''. + * + * @param buf the buffer to parse, buf will be updated to point to the + * terminating char + * @param term a 0-terminated list of terminating chars + * @return the malloced unescaped string, which must be av_freed by + * the user, NULL in case of allocation failure + */ +char *av_get_token(const char **buf, const char *term); + +/** + * Locale-independent conversion of ASCII characters to uppercase. + */ +static inline int av_toupper(int c) +{ + if (c >= 'a' && c <= 'z') + c ^= 0x20; + return c; +} + +/** + * Locale-independent conversion of ASCII characters to lowercase. + */ +static inline int av_tolower(int c) +{ + if (c >= 'A' && c <= 'Z') + c ^= 0x20; + return c; +} + +/* + * Locale-independent case-insensitive compare. + * @note This means only ASCII-range characters are case-insensitive + */ +int av_strcasecmp(const char *a, const char *b); + +/** + * Locale-independent case-insensitive compare. + * @note This means only ASCII-range characters are case-insensitive + */ +int av_strncasecmp(const char *a, const char *b, size_t n); + +/** + * @} + */ + +#endif /* AVUTIL_AVSTRING_H */ diff -r 3331b30e4ef1 -r 88fde28bbda6 misc/winutils/include/libavutil/avutil.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/misc/winutils/include/libavutil/avutil.h Sat Nov 03 00:34:35 2012 +0400 @@ -0,0 +1,274 @@ +/* + * copyright (c) 2006 Michael Niedermayer + * + * This file is part of Libav. + * + * Libav is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * Libav 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 + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with Libav; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ + +#ifndef AVUTIL_AVUTIL_H +#define AVUTIL_AVUTIL_H + +/** + * @file + * external API header + */ + +/** + * @mainpage + * + * @section libav_intro Introduction + * + * This document describes the usage of the different libraries + * provided by Libav. + * + * @li @ref libavc "libavcodec" encoding/decoding library + * @li @subpage libavfilter graph based frame editing library + * @li @ref libavf "libavformat" I/O and muxing/demuxing library + * @li @ref lavd "libavdevice" special devices muxing/demuxing library + * @li @ref lavu "libavutil" common utility library + * @li @subpage libswscale color conversion and scaling library + */ + +/** + * @defgroup lavu Common utility functions + * + * @brief + * libavutil contains the code shared across all the other Libav + * libraries + * + * @note In order to use the functions provided by avutil you must include + * the specific header. + * + * @{ + * + * @defgroup lavu_crypto Crypto and Hashing + * + * @{ + * @} + * + * @defgroup lavu_math Maths + * @{ + * + * @} + * + * @defgroup lavu_string String Manipulation + * + * @{ + * + * @} + * + * @defgroup lavu_mem Memory Management + * + * @{ + * + * @} + * + * @defgroup lavu_data Data Structures + * @{ + * + * @} + * + * @defgroup lavu_audio Audio related + * + * @{ + * + * @} + * + * @defgroup lavu_error Error Codes + * + * @{ + * + * @} + * + * @defgroup lavu_misc Other + * + * @{ + * + * @defgroup lavu_internal Internal + * + * Not exported functions, for internal usage only + * + * @{ + * + * @} + */ + + +/** + * @defgroup preproc_misc Preprocessor String Macros + * + * String manipulation macros + * + * @{ + */ + +#define AV_STRINGIFY(s) AV_TOSTRING(s) +#define AV_TOSTRING(s) #s + +#define AV_GLUE(a, b) a ## b +#define AV_JOIN(a, b) AV_GLUE(a, b) + +#define AV_PRAGMA(s) _Pragma(#s) + +/** + * @} + */ + +/** + * @defgroup version_utils Library Version Macros + * + * Useful to check and match library version in order to maintain + * backward compatibility. + * + * @{ + */ + +#define AV_VERSION_INT(a, b, c) (a<<16 | b<<8 | c) +#define AV_VERSION_DOT(a, b, c) a ##.## b ##.## c +#define AV_VERSION(a, b, c) AV_VERSION_DOT(a, b, c) + +/** + * @} + */ + +/** + * @addtogroup lavu_ver + * @{ + */ + +/** + * Return the LIBAVUTIL_VERSION_INT constant. + */ +unsigned avutil_version(void); + +/** + * Return the libavutil build-time configuration. + */ +const char *avutil_configuration(void); + +/** + * Return the libavutil license. + */ +const char *avutil_license(void); + +/** + * @} + */ + +/** + * @addtogroup lavu_media Media Type + * @brief Media Type + */ + +enum AVMediaType { + AVMEDIA_TYPE_UNKNOWN = -1, ///< Usually treated as AVMEDIA_TYPE_DATA + AVMEDIA_TYPE_VIDEO, + AVMEDIA_TYPE_AUDIO, + AVMEDIA_TYPE_DATA, ///< Opaque data information usually continuous + AVMEDIA_TYPE_SUBTITLE, + AVMEDIA_TYPE_ATTACHMENT, ///< Opaque data information usually sparse + AVMEDIA_TYPE_NB +}; + +/** + * @defgroup lavu_const Constants + * @{ + * + * @defgroup lavu_enc Encoding specific + * + * @note those definition should move to avcodec + * @{ + */ + +#define FF_LAMBDA_SHIFT 7 +#define FF_LAMBDA_SCALE (1< + +/** + * @defgroup lavu_base64 Base64 + * @ingroup lavu_crypto + * @{ + */ + + +/** + * Decode a base64-encoded string. + * + * @param out buffer for decoded data + * @param in null-terminated input string + * @param out_size size in bytes of the out buffer, must be at + * least 3/4 of the length of in + * @return number of bytes written, or a negative value in case of + * invalid input + */ +int av_base64_decode(uint8_t *out, const char *in, int out_size); + +/** + * Encode data to base64 and null-terminate. + * + * @param out buffer for encoded data + * @param out_size size in bytes of the output buffer, must be at + * least AV_BASE64_SIZE(in_size) + * @param in_size size in bytes of the 'in' buffer + * @return 'out' or NULL in case of error + */ +char *av_base64_encode(char *out, int out_size, const uint8_t *in, int in_size); + +/** + * Calculate the output size needed to base64-encode x bytes. + */ +#define AV_BASE64_SIZE(x) (((x)+2) / 3 * 4 + 1) + + /** + * @} + */ + +#endif /* AVUTIL_BASE64_H */ diff -r 3331b30e4ef1 -r 88fde28bbda6 misc/winutils/include/libavutil/blowfish.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/misc/winutils/include/libavutil/blowfish.h Sat Nov 03 00:34:35 2012 +0400 @@ -0,0 +1,76 @@ +/* + * Blowfish algorithm + * + * This file is part of Libav. + * + * Libav is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * Libav 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 + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with Libav; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ + +#ifndef AVUTIL_BLOWFISH_H +#define AVUTIL_BLOWFISH_H + +#include + +/** + * @defgroup lavu_blowfish Blowfish + * @ingroup lavu_crypto + * @{ + */ + +#define AV_BF_ROUNDS 16 + +typedef struct AVBlowfish { + uint32_t p[AV_BF_ROUNDS + 2]; + uint32_t s[4][256]; +} AVBlowfish; + +/** + * Initialize an AVBlowfish context. + * + * @param ctx an AVBlowfish context + * @param key a key + * @param key_len length of the key + */ +void av_blowfish_init(struct AVBlowfish *ctx, const uint8_t *key, int key_len); + +/** + * Encrypt or decrypt a buffer using a previously initialized context. + * + * @param ctx an AVBlowfish context + * @param xl left four bytes halves of input to be encrypted + * @param xr right four bytes halves of input to be encrypted + * @param decrypt 0 for encryption, 1 for decryption + */ +void av_blowfish_crypt_ecb(struct AVBlowfish *ctx, uint32_t *xl, uint32_t *xr, + int decrypt); + +/** + * Encrypt or decrypt a buffer using a previously initialized context. + * + * @param ctx an AVBlowfish context + * @param dst destination array, can be equal to src + * @param src source array, can be equal to dst + * @param count number of 8 byte blocks + * @param iv initialization vector for CBC mode, if NULL ECB will be used + * @param decrypt 0 for encryption, 1 for decryption + */ +void av_blowfish_crypt(struct AVBlowfish *ctx, uint8_t *dst, const uint8_t *src, + int count, uint8_t *iv, int decrypt); + +/** + * @} + */ + +#endif /* AVUTIL_BLOWFISH_H */ diff -r 3331b30e4ef1 -r 88fde28bbda6 misc/winutils/include/libavutil/bswap.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/misc/winutils/include/libavutil/bswap.h Sat Nov 03 00:34:35 2012 +0400 @@ -0,0 +1,109 @@ +/* + * copyright (c) 2006 Michael Niedermayer + * + * This file is part of Libav. + * + * Libav is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * Libav 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 + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with Libav; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ + +/** + * @file + * byte swapping routines + */ + +#ifndef AVUTIL_BSWAP_H +#define AVUTIL_BSWAP_H + +#include +#include "libavutil/avconfig.h" +#include "attributes.h" + +#ifdef HAVE_AV_CONFIG_H + +#include "config.h" + +#if ARCH_ARM +# include "arm/bswap.h" +#elif ARCH_AVR32 +# include "avr32/bswap.h" +#elif ARCH_BFIN +# include "bfin/bswap.h" +#elif ARCH_SH4 +# include "sh4/bswap.h" +#elif ARCH_X86 +# include "x86/bswap.h" +#endif + +#endif /* HAVE_AV_CONFIG_H */ + +#define AV_BSWAP16C(x) (((x) << 8 & 0xff00) | ((x) >> 8 & 0x00ff)) +#define AV_BSWAP32C(x) (AV_BSWAP16C(x) << 16 | AV_BSWAP16C((x) >> 16)) +#define AV_BSWAP64C(x) (AV_BSWAP32C(x) << 32 | AV_BSWAP32C((x) >> 32)) + +#define AV_BSWAPC(s, x) AV_BSWAP##s##C(x) + +#ifndef av_bswap16 +static av_always_inline av_const uint16_t av_bswap16(uint16_t x) +{ + x= (x>>8) | (x<<8); + return x; +} +#endif + +#ifndef av_bswap32 +static av_always_inline av_const uint32_t av_bswap32(uint32_t x) +{ + return AV_BSWAP32C(x); +} +#endif + +#ifndef av_bswap64 +static inline uint64_t av_const av_bswap64(uint64_t x) +{ + return (uint64_t)av_bswap32(x) << 32 | av_bswap32(x >> 32); +} +#endif + +// be2ne ... big-endian to native-endian +// le2ne ... little-endian to native-endian + +#if AV_HAVE_BIGENDIAN +#define av_be2ne16(x) (x) +#define av_be2ne32(x) (x) +#define av_be2ne64(x) (x) +#define av_le2ne16(x) av_bswap16(x) +#define av_le2ne32(x) av_bswap32(x) +#define av_le2ne64(x) av_bswap64(x) +#define AV_BE2NEC(s, x) (x) +#define AV_LE2NEC(s, x) AV_BSWAPC(s, x) +#else +#define av_be2ne16(x) av_bswap16(x) +#define av_be2ne32(x) av_bswap32(x) +#define av_be2ne64(x) av_bswap64(x) +#define av_le2ne16(x) (x) +#define av_le2ne32(x) (x) +#define av_le2ne64(x) (x) +#define AV_BE2NEC(s, x) AV_BSWAPC(s, x) +#define AV_LE2NEC(s, x) (x) +#endif + +#define AV_BE2NE16C(x) AV_BE2NEC(16, x) +#define AV_BE2NE32C(x) AV_BE2NEC(32, x) +#define AV_BE2NE64C(x) AV_BE2NEC(64, x) +#define AV_LE2NE16C(x) AV_LE2NEC(16, x) +#define AV_LE2NE32C(x) AV_LE2NEC(32, x) +#define AV_LE2NE64C(x) AV_LE2NEC(64, x) + +#endif /* AVUTIL_BSWAP_H */ diff -r 3331b30e4ef1 -r 88fde28bbda6 misc/winutils/include/libavutil/common.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/misc/winutils/include/libavutil/common.h Sat Nov 03 00:34:35 2012 +0400 @@ -0,0 +1,405 @@ +/* + * copyright (c) 2006 Michael Niedermayer + * + * This file is part of Libav. + * + * Libav is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * Libav 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 + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with Libav; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ + +/** + * @file + * common internal and external API header + */ + +#ifndef AVUTIL_COMMON_H +#define AVUTIL_COMMON_H + +#include +#include +#include +#include +#include +#include +#include +#include + +#include "attributes.h" +#include "version.h" +#include "libavutil/avconfig.h" + +#if AV_HAVE_BIGENDIAN +# define AV_NE(be, le) (be) +#else +# define AV_NE(be, le) (le) +#endif + +//rounded division & shift +#define RSHIFT(a,b) ((a) > 0 ? ((a) + ((1<<(b))>>1))>>(b) : ((a) + ((1<<(b))>>1)-1)>>(b)) +/* assume b>0 */ +#define ROUNDED_DIV(a,b) (((a)>0 ? (a) + ((b)>>1) : (a) - ((b)>>1))/(b)) +#define FFABS(a) ((a) >= 0 ? (a) : (-(a))) +#define FFSIGN(a) ((a) > 0 ? 1 : -1) + +#define FFMAX(a,b) ((a) > (b) ? (a) : (b)) +#define FFMAX3(a,b,c) FFMAX(FFMAX(a,b),c) +#define FFMIN(a,b) ((a) > (b) ? (b) : (a)) +#define FFMIN3(a,b,c) FFMIN(FFMIN(a,b),c) + +#define FFSWAP(type,a,b) do{type SWAP_tmp= b; b= a; a= SWAP_tmp;}while(0) +#define FF_ARRAY_ELEMS(a) (sizeof(a) / sizeof((a)[0])) +#define FFALIGN(x, a) (((x)+(a)-1)&~((a)-1)) + +/* misc math functions */ + +#if FF_API_AV_REVERSE +extern attribute_deprecated const uint8_t av_reverse[256]; +#endif + +#ifdef HAVE_AV_CONFIG_H +# include "config.h" +# include "intmath.h" +#endif + +/* Pull in unguarded fallback defines at the end of this file. */ +#include "common.h" + +#ifndef av_log2 +av_const int av_log2(unsigned v); +#endif + +#ifndef av_log2_16bit +av_const int av_log2_16bit(unsigned v); +#endif + +/** + * Clip a signed integer value into the amin-amax range. + * @param a value to clip + * @param amin minimum value of the clip range + * @param amax maximum value of the clip range + * @return clipped value + */ +static av_always_inline av_const int av_clip_c(int a, int amin, int amax) +{ + if (a < amin) return amin; + else if (a > amax) return amax; + else return a; +} + +/** + * Clip a signed integer value into the 0-255 range. + * @param a value to clip + * @return clipped value + */ +static av_always_inline av_const uint8_t av_clip_uint8_c(int a) +{ + if (a&(~0xFF)) return (-a)>>31; + else return a; +} + +/** + * Clip a signed integer value into the -128,127 range. + * @param a value to clip + * @return clipped value + */ +static av_always_inline av_const int8_t av_clip_int8_c(int a) +{ + if ((a+0x80) & ~0xFF) return (a>>31) ^ 0x7F; + else return a; +} + +/** + * Clip a signed integer value into the 0-65535 range. + * @param a value to clip + * @return clipped value + */ +static av_always_inline av_const uint16_t av_clip_uint16_c(int a) +{ + if (a&(~0xFFFF)) return (-a)>>31; + else return a; +} + +/** + * Clip a signed integer value into the -32768,32767 range. + * @param a value to clip + * @return clipped value + */ +static av_always_inline av_const int16_t av_clip_int16_c(int a) +{ + if ((a+0x8000) & ~0xFFFF) return (a>>31) ^ 0x7FFF; + else return a; +} + +/** + * Clip a signed 64-bit integer value into the -2147483648,2147483647 range. + * @param a value to clip + * @return clipped value + */ +static av_always_inline av_const int32_t av_clipl_int32_c(int64_t a) +{ + if ((a+0x80000000u) & ~UINT64_C(0xFFFFFFFF)) return (a>>63) ^ 0x7FFFFFFF; + else return a; +} + +/** + * Clip a signed integer to an unsigned power of two range. + * @param a value to clip + * @param p bit position to clip at + * @return clipped value + */ +static av_always_inline av_const unsigned av_clip_uintp2_c(int a, int p) +{ + if (a & ~((1<> 31 & ((1< amax) return amax; + else return a; +} + +/** Compute ceil(log2(x)). + * @param x value used to compute ceil(log2(x)) + * @return computed ceiling of log2(x) + */ +static av_always_inline av_const int av_ceil_log2_c(int x) +{ + return av_log2((x - 1) << 1); +} + +/** + * Count number of bits set to one in x + * @param x value to count bits of + * @return the number of bits set to one in x + */ +static av_always_inline av_const int av_popcount_c(uint32_t x) +{ + x -= (x >> 1) & 0x55555555; + x = (x & 0x33333333) + ((x >> 2) & 0x33333333); + x = (x + (x >> 4)) & 0x0F0F0F0F; + x += x >> 8; + return (x + (x >> 16)) & 0x3F; +} + +/** + * Count number of bits set to one in x + * @param x value to count bits of + * @return the number of bits set to one in x + */ +static av_always_inline av_const int av_popcount64_c(uint64_t x) +{ + return av_popcount(x) + av_popcount(x >> 32); +} + +#define MKTAG(a,b,c,d) ((a) | ((b) << 8) | ((c) << 16) | ((unsigned)(d) << 24)) +#define MKBETAG(a,b,c,d) ((d) | ((c) << 8) | ((b) << 16) | ((unsigned)(a) << 24)) + +/** + * Convert a UTF-8 character (up to 4 bytes) to its 32-bit UCS-4 encoded form. + * + * @param val Output value, must be an lvalue of type uint32_t. + * @param GET_BYTE Expression reading one byte from the input. + * Evaluated up to 7 times (4 for the currently + * assigned Unicode range). With a memory buffer + * input, this could be *ptr++. + * @param ERROR Expression to be evaluated on invalid input, + * typically a goto statement. + */ +#define GET_UTF8(val, GET_BYTE, ERROR)\ + val= GET_BYTE;\ + {\ + int ones= 7 - av_log2(val ^ 255);\ + if(ones==1)\ + ERROR\ + val&= 127>>ones;\ + while(--ones > 0){\ + int tmp= GET_BYTE - 128;\ + if(tmp>>6)\ + ERROR\ + val= (val<<6) + tmp;\ + }\ + } + +/** + * Convert a UTF-16 character (2 or 4 bytes) to its 32-bit UCS-4 encoded form. + * + * @param val Output value, must be an lvalue of type uint32_t. + * @param GET_16BIT Expression returning two bytes of UTF-16 data converted + * to native byte order. Evaluated one or two times. + * @param ERROR Expression to be evaluated on invalid input, + * typically a goto statement. + */ +#define GET_UTF16(val, GET_16BIT, ERROR)\ + val = GET_16BIT;\ + {\ + unsigned int hi = val - 0xD800;\ + if (hi < 0x800) {\ + val = GET_16BIT - 0xDC00;\ + if (val > 0x3FFU || hi > 0x3FFU)\ + ERROR\ + val += (hi<<10) + 0x10000;\ + }\ + }\ + +/** + * @def PUT_UTF8(val, tmp, PUT_BYTE) + * Convert a 32-bit Unicode character to its UTF-8 encoded form (up to 4 bytes long). + * @param val is an input-only argument and should be of type uint32_t. It holds + * a UCS-4 encoded Unicode character that is to be converted to UTF-8. If + * val is given as a function it is executed only once. + * @param tmp is a temporary variable and should be of type uint8_t. It + * represents an intermediate value during conversion that is to be + * output by PUT_BYTE. + * @param PUT_BYTE writes the converted UTF-8 bytes to any proper destination. + * It could be a function or a statement, and uses tmp as the input byte. + * For example, PUT_BYTE could be "*output++ = tmp;" PUT_BYTE will be + * executed up to 4 times for values in the valid UTF-8 range and up to + * 7 times in the general case, depending on the length of the converted + * Unicode character. + */ +#define PUT_UTF8(val, tmp, PUT_BYTE)\ + {\ + int bytes, shift;\ + uint32_t in = val;\ + if (in < 0x80) {\ + tmp = in;\ + PUT_BYTE\ + } else {\ + bytes = (av_log2(in) + 4) / 5;\ + shift = (bytes - 1) * 6;\ + tmp = (256 - (256 >> bytes)) | (in >> shift);\ + PUT_BYTE\ + while (shift >= 6) {\ + shift -= 6;\ + tmp = 0x80 | ((in >> shift) & 0x3f);\ + PUT_BYTE\ + }\ + }\ + } + +/** + * @def PUT_UTF16(val, tmp, PUT_16BIT) + * Convert a 32-bit Unicode character to its UTF-16 encoded form (2 or 4 bytes). + * @param val is an input-only argument and should be of type uint32_t. It holds + * a UCS-4 encoded Unicode character that is to be converted to UTF-16. If + * val is given as a function it is executed only once. + * @param tmp is a temporary variable and should be of type uint16_t. It + * represents an intermediate value during conversion that is to be + * output by PUT_16BIT. + * @param PUT_16BIT writes the converted UTF-16 data to any proper destination + * in desired endianness. It could be a function or a statement, and uses tmp + * as the input byte. For example, PUT_BYTE could be "*output++ = tmp;" + * PUT_BYTE will be executed 1 or 2 times depending on input character. + */ +#define PUT_UTF16(val, tmp, PUT_16BIT)\ + {\ + uint32_t in = val;\ + if (in < 0x10000) {\ + tmp = in;\ + PUT_16BIT\ + } else {\ + tmp = 0xD800 | ((in - 0x10000) >> 10);\ + PUT_16BIT\ + tmp = 0xDC00 | ((in - 0x10000) & 0x3FF);\ + PUT_16BIT\ + }\ + }\ + + + +#include "mem.h" + +#ifdef HAVE_AV_CONFIG_H +# include "internal.h" +#endif /* HAVE_AV_CONFIG_H */ + +#endif /* AVUTIL_COMMON_H */ + +/* + * The following definitions are outside the multiple inclusion guard + * to ensure they are immediately available in intmath.h. + */ + +#ifndef av_ceil_log2 +# define av_ceil_log2 av_ceil_log2_c +#endif +#ifndef av_clip +# define av_clip av_clip_c +#endif +#ifndef av_clip_uint8 +# define av_clip_uint8 av_clip_uint8_c +#endif +#ifndef av_clip_int8 +# define av_clip_int8 av_clip_int8_c +#endif +#ifndef av_clip_uint16 +# define av_clip_uint16 av_clip_uint16_c +#endif +#ifndef av_clip_int16 +# define av_clip_int16 av_clip_int16_c +#endif +#ifndef av_clipl_int32 +# define av_clipl_int32 av_clipl_int32_c +#endif +#ifndef av_clip_uintp2 +# define av_clip_uintp2 av_clip_uintp2_c +#endif +#ifndef av_sat_add32 +# define av_sat_add32 av_sat_add32_c +#endif +#ifndef av_sat_dadd32 +# define av_sat_dadd32 av_sat_dadd32_c +#endif +#ifndef av_clipf +# define av_clipf av_clipf_c +#endif +#ifndef av_popcount +# define av_popcount av_popcount_c +#endif +#ifndef av_popcount64 +# define av_popcount64 av_popcount64_c +#endif diff -r 3331b30e4ef1 -r 88fde28bbda6 misc/winutils/include/libavutil/cpu.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/misc/winutils/include/libavutil/cpu.h Sat Nov 03 00:34:35 2012 +0400 @@ -0,0 +1,84 @@ +/* + * Copyright (c) 2000, 2001, 2002 Fabrice Bellard + * + * This file is part of Libav. + * + * Libav is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * Libav 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 + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with Libav; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ + +#ifndef AVUTIL_CPU_H +#define AVUTIL_CPU_H + +#include "version.h" + +#define AV_CPU_FLAG_FORCE 0x80000000 /* force usage of selected flags (OR) */ + + /* lower 16 bits - CPU features */ +#define AV_CPU_FLAG_MMX 0x0001 ///< standard MMX +#define AV_CPU_FLAG_MMXEXT 0x0002 ///< SSE integer functions or AMD MMX ext +#if LIBAVUTIL_VERSION_MAJOR < 52 +#define AV_CPU_FLAG_MMX2 0x0002 ///< SSE integer functions or AMD MMX ext +#endif +#define AV_CPU_FLAG_3DNOW 0x0004 ///< AMD 3DNOW +#define AV_CPU_FLAG_SSE 0x0008 ///< SSE functions +#define AV_CPU_FLAG_SSE2 0x0010 ///< PIV SSE2 functions +#define AV_CPU_FLAG_SSE2SLOW 0x40000000 ///< SSE2 supported, but usually not faster +#define AV_CPU_FLAG_3DNOWEXT 0x0020 ///< AMD 3DNowExt +#define AV_CPU_FLAG_SSE3 0x0040 ///< Prescott SSE3 functions +#define AV_CPU_FLAG_SSE3SLOW 0x20000000 ///< SSE3 supported, but usually not faster +#define AV_CPU_FLAG_SSSE3 0x0080 ///< Conroe SSSE3 functions +#define AV_CPU_FLAG_ATOM 0x10000000 ///< Atom processor, some SSSE3 instructions are slower +#define AV_CPU_FLAG_SSE4 0x0100 ///< Penryn SSE4.1 functions +#define AV_CPU_FLAG_SSE42 0x0200 ///< Nehalem SSE4.2 functions +#define AV_CPU_FLAG_AVX 0x4000 ///< AVX functions: requires OS support even if YMM registers aren't used +#define AV_CPU_FLAG_XOP 0x0400 ///< Bulldozer XOP functions +#define AV_CPU_FLAG_FMA4 0x0800 ///< Bulldozer FMA4 functions +#define AV_CPU_FLAG_CMOV 0x1000 ///< i686 cmov + +#define AV_CPU_FLAG_ALTIVEC 0x0001 ///< standard + +#define AV_CPU_FLAG_ARMV5TE (1 << 0) +#define AV_CPU_FLAG_ARMV6 (1 << 1) +#define AV_CPU_FLAG_ARMV6T2 (1 << 2) +#define AV_CPU_FLAG_VFP (1 << 3) +#define AV_CPU_FLAG_VFPV3 (1 << 4) +#define AV_CPU_FLAG_NEON (1 << 5) + +/** + * Return the flags which specify extensions supported by the CPU. + */ +int av_get_cpu_flags(void); + +/** + * Set a mask on flags returned by av_get_cpu_flags(). + * This function is mainly useful for testing. + * + * @warning this function is not thread safe. + */ +void av_set_cpu_flags_mask(int mask); + +/** + * Parse CPU flags from a string. + * + * @return a combination of AV_CPU_* flags, negative on error. + */ +int av_parse_cpu_flags(const char *s); + +/* The following CPU-specific functions shall not be called directly. */ +int ff_get_cpu_flags_arm(void); +int ff_get_cpu_flags_ppc(void); +int ff_get_cpu_flags_x86(void); + +#endif /* AVUTIL_CPU_H */ diff -r 3331b30e4ef1 -r 88fde28bbda6 misc/winutils/include/libavutil/crc.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/misc/winutils/include/libavutil/crc.h Sat Nov 03 00:34:35 2012 +0400 @@ -0,0 +1,43 @@ +/* + * copyright (c) 2006 Michael Niedermayer + * + * This file is part of Libav. + * + * Libav is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * Libav 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 + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with Libav; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ + +#ifndef AVUTIL_CRC_H +#define AVUTIL_CRC_H + +#include +#include +#include "attributes.h" + +typedef uint32_t AVCRC; + +typedef enum { + AV_CRC_8_ATM, + AV_CRC_16_ANSI, + AV_CRC_16_CCITT, + AV_CRC_32_IEEE, + AV_CRC_32_IEEE_LE, /*< reversed bitorder version of AV_CRC_32_IEEE */ + AV_CRC_MAX, /*< Not part of public API! Do not use outside libavutil. */ +}AVCRCId; + +int av_crc_init(AVCRC *ctx, int le, int bits, uint32_t poly, int ctx_size); +const AVCRC *av_crc_get_table(AVCRCId crc_id); +uint32_t av_crc(const AVCRC *ctx, uint32_t start_crc, const uint8_t *buffer, size_t length) av_pure; + +#endif /* AVUTIL_CRC_H */ diff -r 3331b30e4ef1 -r 88fde28bbda6 misc/winutils/include/libavutil/dict.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/misc/winutils/include/libavutil/dict.h Sat Nov 03 00:34:35 2012 +0400 @@ -0,0 +1,129 @@ +/* + * + * This file is part of Libav. + * + * Libav is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * Libav 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 + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with Libav; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ + +/** + * @file + * Public dictionary API. + */ + +#ifndef AVUTIL_DICT_H +#define AVUTIL_DICT_H + +/** + * @addtogroup lavu_dict AVDictionary + * @ingroup lavu_data + * + * @brief Simple key:value store + * + * @{ + * Dictionaries are used for storing key:value pairs. To create + * an AVDictionary, simply pass an address of a NULL pointer to + * av_dict_set(). NULL can be used as an empty dictionary wherever + * a pointer to an AVDictionary is required. + * Use av_dict_get() to retrieve an entry or iterate over all + * entries and finally av_dict_free() to free the dictionary + * and all its contents. + * + * @code + * AVDictionary *d = NULL; // "create" an empty dictionary + * av_dict_set(&d, "foo", "bar", 0); // add an entry + * + * char *k = av_strdup("key"); // if your strings are already allocated, + * char *v = av_strdup("value"); // you can avoid copying them like this + * av_dict_set(&d, k, v, AV_DICT_DONT_STRDUP_KEY | AV_DICT_DONT_STRDUP_VAL); + * + * AVDictionaryEntry *t = NULL; + * while (t = av_dict_get(d, "", t, AV_DICT_IGNORE_SUFFIX)) { + * <....> // iterate over all entries in d + * } + * + * av_dict_free(&d); + * @endcode + * + */ + +#define AV_DICT_MATCH_CASE 1 +#define AV_DICT_IGNORE_SUFFIX 2 +#define AV_DICT_DONT_STRDUP_KEY 4 /**< Take ownership of a key that's been + allocated with av_malloc() and children. */ +#define AV_DICT_DONT_STRDUP_VAL 8 /**< Take ownership of a value that's been + allocated with av_malloc() and chilren. */ +#define AV_DICT_DONT_OVERWRITE 16 ///< Don't overwrite existing entries. +#define AV_DICT_APPEND 32 /**< If the entry already exists, append to it. Note that no + delimiter is added, the strings are simply concatenated. */ + +typedef struct AVDictionaryEntry { + char *key; + char *value; +} AVDictionaryEntry; + +typedef struct AVDictionary AVDictionary; + +/** + * Get a dictionary entry with matching key. + * + * @param prev Set to the previous matching element to find the next. + * If set to NULL the first matching element is returned. + * @param flags Allows case as well as suffix-insensitive comparisons. + * @return Found entry or NULL, changing key or value leads to undefined behavior. + */ +AVDictionaryEntry * +av_dict_get(AVDictionary *m, const char *key, const AVDictionaryEntry *prev, int flags); + +/** + * Get number of entries in dictionary. + * + * @param m dictionary + * @return number of entries in dictionary + */ +int av_dict_count(const AVDictionary *m); + +/** + * Set the given entry in *pm, overwriting an existing entry. + * + * @param pm pointer to a pointer to a dictionary struct. If *pm is NULL + * a dictionary struct is allocated and put in *pm. + * @param key entry key to add to *pm (will be av_strduped depending on flags) + * @param value entry value to add to *pm (will be av_strduped depending on flags). + * Passing a NULL value will cause an existing entry to be deleted. + * @return >= 0 on success otherwise an error code <0 + */ +int av_dict_set(AVDictionary **pm, const char *key, const char *value, int flags); + +/** + * Copy entries from one AVDictionary struct into another. + * @param dst pointer to a pointer to a AVDictionary struct. If *dst is NULL, + * this function will allocate a struct for you and put it in *dst + * @param src pointer to source AVDictionary struct + * @param flags flags to use when setting entries in *dst + * @note metadata is read using the AV_DICT_IGNORE_SUFFIX flag + */ +void av_dict_copy(AVDictionary **dst, AVDictionary *src, int flags); + +/** + * Free all the memory allocated for an AVDictionary struct + * and all keys and values. + */ +void av_dict_free(AVDictionary **m); + +/** + * @} + */ + +#endif /* AVUTIL_DICT_H */ diff -r 3331b30e4ef1 -r 88fde28bbda6 misc/winutils/include/libavutil/error.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/misc/winutils/include/libavutil/error.h Sat Nov 03 00:34:35 2012 +0400 @@ -0,0 +1,83 @@ +/* + * This file is part of Libav. + * + * Libav is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * Libav 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 + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with Libav; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ + +/** + * @file + * error code definitions + */ + +#ifndef AVUTIL_ERROR_H +#define AVUTIL_ERROR_H + +#include +#include +#include "avutil.h" + +/** + * @addtogroup lavu_error + * + * @{ + */ + + +/* error handling */ +#if EDOM > 0 +#define AVERROR(e) (-(e)) ///< Returns a negative error code from a POSIX error code, to return from library functions. +#define AVUNERROR(e) (-(e)) ///< Returns a POSIX error code from a library function error return value. +#else +/* Some platforms have E* and errno already negated. */ +#define AVERROR(e) (e) +#define AVUNERROR(e) (e) +#endif + +#define AVERROR_BSF_NOT_FOUND (-0x39acbd08) ///< Bitstream filter not found +#define AVERROR_DECODER_NOT_FOUND (-0x3cbabb08) ///< Decoder not found +#define AVERROR_DEMUXER_NOT_FOUND (-0x32babb08) ///< Demuxer not found +#define AVERROR_ENCODER_NOT_FOUND (-0x3cb1ba08) ///< Encoder not found +#define AVERROR_EOF (-0x5fb9b0bb) ///< End of file +#define AVERROR_EXIT (-0x2bb6a7bb) ///< Immediate exit was requested; the called function should not be restarted +#define AVERROR_FILTER_NOT_FOUND (-0x33b6b908) ///< Filter not found +#define AVERROR_INVALIDDATA (-0x3ebbb1b7) ///< Invalid data found when processing input +#define AVERROR_MUXER_NOT_FOUND (-0x27aab208) ///< Muxer not found +#define AVERROR_OPTION_NOT_FOUND (-0x2bafb008) ///< Option not found +#define AVERROR_PATCHWELCOME (-0x3aa8beb0) ///< Not yet implemented in Libav, patches welcome +#define AVERROR_PROTOCOL_NOT_FOUND (-0x30adaf08) ///< Protocol not found +#define AVERROR_STREAM_NOT_FOUND (-0x2dabac08) ///< Stream not found +#define AVERROR_BUG (-0x5fb8aabe) ///< Bug detected, please report the issue +#define AVERROR_UNKNOWN (-0x31b4b1ab) ///< Unknown error, typically from an external library +#define AVERROR_EXPERIMENTAL (-0x2bb2afa8) ///< Requested feature is flagged experimental. Set strict_std_compliance if you really want to use it. + +/** + * Put a description of the AVERROR code errnum in errbuf. + * In case of failure the global variable errno is set to indicate the + * error. Even in case of failure av_strerror() will print a generic + * error message indicating the errnum provided to errbuf. + * + * @param errnum error code to describe + * @param errbuf buffer to which description is written + * @param errbuf_size the size in bytes of errbuf + * @return 0 on success, a negative value if a description for errnum + * cannot be found + */ +int av_strerror(int errnum, char *errbuf, size_t errbuf_size); + +/** + * @} + */ + +#endif /* AVUTIL_ERROR_H */ diff -r 3331b30e4ef1 -r 88fde28bbda6 misc/winutils/include/libavutil/eval.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/misc/winutils/include/libavutil/eval.h Sat Nov 03 00:34:35 2012 +0400 @@ -0,0 +1,113 @@ +/* + * Copyright (c) 2002 Michael Niedermayer + * + * This file is part of Libav. + * + * Libav is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * Libav 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 + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with Libav; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ + +/** + * @file + * simple arithmetic expression evaluator + */ + +#ifndef AVUTIL_EVAL_H +#define AVUTIL_EVAL_H + +#include "avutil.h" + +typedef struct AVExpr AVExpr; + +/** + * Parse and evaluate an expression. + * Note, this is significantly slower than av_expr_eval(). + * + * @param res a pointer to a double where is put the result value of + * the expression, or NAN in case of error + * @param s expression as a zero terminated string, for example "1+2^3+5*5+sin(2/3)" + * @param const_names NULL terminated array of zero terminated strings of constant identifiers, for example {"PI", "E", 0} + * @param const_values a zero terminated array of values for the identifiers from const_names + * @param func1_names NULL terminated array of zero terminated strings of funcs1 identifiers + * @param funcs1 NULL terminated array of function pointers for functions which take 1 argument + * @param func2_names NULL terminated array of zero terminated strings of funcs2 identifiers + * @param funcs2 NULL terminated array of function pointers for functions which take 2 arguments + * @param opaque a pointer which will be passed to all functions from funcs1 and funcs2 + * @param log_ctx parent logging context + * @return 0 in case of success, a negative value corresponding to an + * AVERROR code otherwise + */ +int av_expr_parse_and_eval(double *res, const char *s, + const char * const *const_names, const double *const_values, + const char * const *func1_names, double (* const *funcs1)(void *, double), + const char * const *func2_names, double (* const *funcs2)(void *, double, double), + void *opaque, int log_offset, void *log_ctx); + +/** + * Parse an expression. + * + * @param expr a pointer where is put an AVExpr containing the parsed + * value in case of successful parsing, or NULL otherwise. + * The pointed to AVExpr must be freed with av_expr_free() by the user + * when it is not needed anymore. + * @param s expression as a zero terminated string, for example "1+2^3+5*5+sin(2/3)" + * @param const_names NULL terminated array of zero terminated strings of constant identifiers, for example {"PI", "E", 0} + * @param func1_names NULL terminated array of zero terminated strings of funcs1 identifiers + * @param funcs1 NULL terminated array of function pointers for functions which take 1 argument + * @param func2_names NULL terminated array of zero terminated strings of funcs2 identifiers + * @param funcs2 NULL terminated array of function pointers for functions which take 2 arguments + * @param log_ctx parent logging context + * @return 0 in case of success, a negative value corresponding to an + * AVERROR code otherwise + */ +int av_expr_parse(AVExpr **expr, const char *s, + const char * const *const_names, + const char * const *func1_names, double (* const *funcs1)(void *, double), + const char * const *func2_names, double (* const *funcs2)(void *, double, double), + int log_offset, void *log_ctx); + +/** + * Evaluate a previously parsed expression. + * + * @param const_values a zero terminated array of values for the identifiers from av_expr_parse() const_names + * @param opaque a pointer which will be passed to all functions from funcs1 and funcs2 + * @return the value of the expression + */ +double av_expr_eval(AVExpr *e, const double *const_values, void *opaque); + +/** + * Free a parsed expression previously created with av_expr_parse(). + */ +void av_expr_free(AVExpr *e); + +/** + * Parse the string in numstr and return its value as a double. If + * the string is empty, contains only whitespaces, or does not contain + * an initial substring that has the expected syntax for a + * floating-point number, no conversion is performed. In this case, + * returns a value of zero and the value returned in tail is the value + * of numstr. + * + * @param numstr a string representing a number, may contain one of + * the International System number postfixes, for example 'K', 'M', + * 'G'. If 'i' is appended after the postfix, powers of 2 are used + * instead of powers of 10. The 'B' postfix multiplies the value for + * 8, and can be appended after another postfix or used alone. This + * allows using for example 'KB', 'MiB', 'G' and 'B' as postfix. + * @param tail if non-NULL puts here the pointer to the char next + * after the last parsed character + */ +double av_strtod(const char *numstr, char **tail); + +#endif /* AVUTIL_EVAL_H */ diff -r 3331b30e4ef1 -r 88fde28bbda6 misc/winutils/include/libavutil/fifo.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/misc/winutils/include/libavutil/fifo.h Sat Nov 03 00:34:35 2012 +0400 @@ -0,0 +1,142 @@ +/* + * This file is part of Libav. + * + * Libav is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * Libav 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 + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with Libav; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ + +/** + * @file + * a very simple circular buffer FIFO implementation + */ + +#ifndef AVUTIL_FIFO_H +#define AVUTIL_FIFO_H + +#include +#include "avutil.h" +#include "attributes.h" + +typedef struct AVFifoBuffer { + uint8_t *buffer; + uint8_t *rptr, *wptr, *end; + uint32_t rndx, wndx; +} AVFifoBuffer; + +/** + * Initialize an AVFifoBuffer. + * @param size of FIFO + * @return AVFifoBuffer or NULL in case of memory allocation failure + */ +AVFifoBuffer *av_fifo_alloc(unsigned int size); + +/** + * Free an AVFifoBuffer. + * @param f AVFifoBuffer to free + */ +void av_fifo_free(AVFifoBuffer *f); + +/** + * Reset the AVFifoBuffer to the state right after av_fifo_alloc, in particular it is emptied. + * @param f AVFifoBuffer to reset + */ +void av_fifo_reset(AVFifoBuffer *f); + +/** + * Return the amount of data in bytes in the AVFifoBuffer, that is the + * amount of data you can read from it. + * @param f AVFifoBuffer to read from + * @return size + */ +int av_fifo_size(AVFifoBuffer *f); + +/** + * Return the amount of space in bytes in the AVFifoBuffer, that is the + * amount of data you can write into it. + * @param f AVFifoBuffer to write into + * @return size + */ +int av_fifo_space(AVFifoBuffer *f); + +/** + * Feed data from an AVFifoBuffer to a user-supplied callback. + * @param f AVFifoBuffer to read from + * @param buf_size number of bytes to read + * @param func generic read function + * @param dest data destination + */ +int av_fifo_generic_read(AVFifoBuffer *f, void *dest, int buf_size, void (*func)(void*, void*, int)); + +/** + * Feed data from a user-supplied callback to an AVFifoBuffer. + * @param f AVFifoBuffer to write to + * @param src data source; non-const since it may be used as a + * modifiable context by the function defined in func + * @param size number of bytes to write + * @param func generic write function; the first parameter is src, + * the second is dest_buf, the third is dest_buf_size. + * func must return the number of bytes written to dest_buf, or <= 0 to + * indicate no more data available to write. + * If func is NULL, src is interpreted as a simple byte array for source data. + * @return the number of bytes written to the FIFO + */ +int av_fifo_generic_write(AVFifoBuffer *f, void *src, int size, int (*func)(void*, void*, int)); + +/** + * Resize an AVFifoBuffer. + * @param f AVFifoBuffer to resize + * @param size new AVFifoBuffer size in bytes + * @return <0 for failure, >=0 otherwise + */ +int av_fifo_realloc2(AVFifoBuffer *f, unsigned int size); + +/** + * Read and discard the specified amount of data from an AVFifoBuffer. + * @param f AVFifoBuffer to read from + * @param size amount of data to read in bytes + */ +void av_fifo_drain(AVFifoBuffer *f, int size); + +/** + * Return a pointer to the data stored in a FIFO buffer at a certain offset. + * The FIFO buffer is not modified. + * + * @param f AVFifoBuffer to peek at, f must be non-NULL + * @param offs an offset in bytes, its absolute value must be less + * than the used buffer size or the returned pointer will + * point outside to the buffer data. + * The used buffer size can be checked with av_fifo_size(). + */ +static inline uint8_t *av_fifo_peek2(const AVFifoBuffer *f, int offs) +{ + uint8_t *ptr = f->rptr + offs; + if (ptr >= f->end) + ptr = f->buffer + (ptr - f->end); + else if (ptr < f->buffer) + ptr = f->end - (f->buffer - ptr); + return ptr; +} + +#if FF_API_AV_FIFO_PEEK +/** + * @deprecated Use av_fifo_peek2() instead. + */ +attribute_deprecated +static inline uint8_t av_fifo_peek(AVFifoBuffer *f, int offs) +{ + return *av_fifo_peek2(f, offs); +} +#endif + +#endif /* AVUTIL_FIFO_H */ diff -r 3331b30e4ef1 -r 88fde28bbda6 misc/winutils/include/libavutil/file.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/misc/winutils/include/libavutil/file.h Sat Nov 03 00:34:35 2012 +0400 @@ -0,0 +1,54 @@ +/* + * This file is part of Libav. + * + * Libav is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * Libav 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 + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with Libav; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ + +#ifndef AVUTIL_FILE_H +#define AVUTIL_FILE_H + +#include + +#include "avutil.h" + +/** + * @file + * Misc file utilities. + */ + +/** + * Read the file with name filename, and put its content in a newly + * allocated buffer or map it with mmap() when available. + * In case of success set *bufptr to the read or mmapped buffer, and + * *size to the size in bytes of the buffer in *bufptr. + * The returned buffer must be released with av_file_unmap(). + * + * @param log_offset loglevel offset used for logging + * @param log_ctx context used for logging + * @return a non negative number in case of success, a negative value + * corresponding to an AVERROR error code in case of failure + */ +int av_file_map(const char *filename, uint8_t **bufptr, size_t *size, + int log_offset, void *log_ctx); + +/** + * Unmap or free the buffer bufptr created by av_file_map(). + * + * @param size size in bytes of bufptr, must be the same as returned + * by av_file_map() + */ +void av_file_unmap(uint8_t *bufptr, size_t size); + +#endif /* AVUTIL_FILE_H */ diff -r 3331b30e4ef1 -r 88fde28bbda6 misc/winutils/include/libavutil/imgutils.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/misc/winutils/include/libavutil/imgutils.h Sat Nov 03 00:34:35 2012 +0400 @@ -0,0 +1,138 @@ +/* + * This file is part of Libav. + * + * Libav is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * Libav 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 + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with Libav; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ + +#ifndef AVUTIL_IMGUTILS_H +#define AVUTIL_IMGUTILS_H + +/** + * @file + * misc image utilities + * + * @addtogroup lavu_picture + * @{ + */ + +#include "avutil.h" +#include "pixdesc.h" + +/** + * Compute the max pixel step for each plane of an image with a + * format described by pixdesc. + * + * The pixel step is the distance in bytes between the first byte of + * the group of bytes which describe a pixel component and the first + * byte of the successive group in the same plane for the same + * component. + * + * @param max_pixsteps an array which is filled with the max pixel step + * for each plane. Since a plane may contain different pixel + * components, the computed max_pixsteps[plane] is relative to the + * component in the plane with the max pixel step. + * @param max_pixstep_comps an array which is filled with the component + * for each plane which has the max pixel step. May be NULL. + */ +void av_image_fill_max_pixsteps(int max_pixsteps[4], int max_pixstep_comps[4], + const AVPixFmtDescriptor *pixdesc); + +/** + * Compute the size of an image line with format pix_fmt and width + * width for the plane plane. + * + * @return the computed size in bytes + */ +int av_image_get_linesize(enum AVPixelFormat pix_fmt, int width, int plane); + +/** + * Fill plane linesizes for an image with pixel format pix_fmt and + * width width. + * + * @param linesizes array to be filled with the linesize for each plane + * @return >= 0 in case of success, a negative error code otherwise + */ +int av_image_fill_linesizes(int linesizes[4], enum AVPixelFormat pix_fmt, int width); + +/** + * Fill plane data pointers for an image with pixel format pix_fmt and + * height height. + * + * @param data pointers array to be filled with the pointer for each image plane + * @param ptr the pointer to a buffer which will contain the image + * @param linesizes the array containing the linesize for each + * plane, should be filled by av_image_fill_linesizes() + * @return the size in bytes required for the image buffer, a negative + * error code in case of failure + */ +int av_image_fill_pointers(uint8_t *data[4], enum AVPixelFormat pix_fmt, int height, + uint8_t *ptr, const int linesizes[4]); + +/** + * Allocate an image with size w and h and pixel format pix_fmt, and + * fill pointers and linesizes accordingly. + * The allocated image buffer has to be freed by using + * av_freep(&pointers[0]). + * + * @param align the value to use for buffer size alignment + * @return the size in bytes required for the image buffer, a negative + * error code in case of failure + */ +int av_image_alloc(uint8_t *pointers[4], int linesizes[4], + int w, int h, enum AVPixelFormat pix_fmt, int align); + +/** + * Copy image plane from src to dst. + * That is, copy "height" number of lines of "bytewidth" bytes each. + * The first byte of each successive line is separated by *_linesize + * bytes. + * + * @param dst_linesize linesize for the image plane in dst + * @param src_linesize linesize for the image plane in src + */ +void av_image_copy_plane(uint8_t *dst, int dst_linesize, + const uint8_t *src, int src_linesize, + int bytewidth, int height); + +/** + * Copy image in src_data to dst_data. + * + * @param dst_linesizes linesizes for the image in dst_data + * @param src_linesizes linesizes for the image in src_data + */ +void av_image_copy(uint8_t *dst_data[4], int dst_linesizes[4], + const uint8_t *src_data[4], const int src_linesizes[4], + enum AVPixelFormat pix_fmt, int width, int height); + +/** + * Check if the given dimension of an image is valid, meaning that all + * bytes of the image can be addressed with a signed int. + * + * @param w the width of the picture + * @param h the height of the picture + * @param log_offset the offset to sum to the log level for logging with log_ctx + * @param log_ctx the parent logging context, it may be NULL + * @return >= 0 if valid, a negative error code otherwise + */ +int av_image_check_size(unsigned int w, unsigned int h, int log_offset, void *log_ctx); + +int avpriv_set_systematic_pal2(uint32_t pal[256], enum AVPixelFormat pix_fmt); + +/** + * @} + */ + + +#endif /* AVUTIL_IMGUTILS_H */ diff -r 3331b30e4ef1 -r 88fde28bbda6 misc/winutils/include/libavutil/intfloat.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/misc/winutils/include/libavutil/intfloat.h Sat Nov 03 00:34:35 2012 +0400 @@ -0,0 +1,77 @@ +/* + * Copyright (c) 2011 Mans Rullgard + * + * This file is part of Libav. + * + * Libav is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * Libav 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 + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with Libav; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ + +#ifndef AVUTIL_INTFLOAT_H +#define AVUTIL_INTFLOAT_H + +#include +#include "attributes.h" + +union av_intfloat32 { + uint32_t i; + float f; +}; + +union av_intfloat64 { + uint64_t i; + double f; +}; + +/** + * Reinterpret a 32-bit integer as a float. + */ +static av_always_inline float av_int2float(uint32_t i) +{ + union av_intfloat32 v; + v.i = i; + return v.f; +} + +/** + * Reinterpret a float as a 32-bit integer. + */ +static av_always_inline uint32_t av_float2int(float f) +{ + union av_intfloat32 v; + v.f = f; + return v.i; +} + +/** + * Reinterpret a 64-bit integer as a double. + */ +static av_always_inline double av_int2double(uint64_t i) +{ + union av_intfloat64 v; + v.i = i; + return v.f; +} + +/** + * Reinterpret a double as a 64-bit integer. + */ +static av_always_inline uint64_t av_double2int(double f) +{ + union av_intfloat64 v; + v.f = f; + return v.i; +} + +#endif /* AVUTIL_INTFLOAT_H */ diff -r 3331b30e4ef1 -r 88fde28bbda6 misc/winutils/include/libavutil/intfloat_readwrite.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/misc/winutils/include/libavutil/intfloat_readwrite.h Sat Nov 03 00:34:35 2012 +0400 @@ -0,0 +1,40 @@ +/* + * copyright (c) 2005 Michael Niedermayer + * + * This file is part of Libav. + * + * Libav is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * Libav 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 + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with Libav; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ + +#ifndef AVUTIL_INTFLOAT_READWRITE_H +#define AVUTIL_INTFLOAT_READWRITE_H + +#include +#include "attributes.h" + +/* IEEE 80 bits extended float */ +typedef struct AVExtFloat { + uint8_t exponent[2]; + uint8_t mantissa[8]; +} AVExtFloat; + +attribute_deprecated double av_int2dbl(int64_t v) av_const; +attribute_deprecated float av_int2flt(int32_t v) av_const; +attribute_deprecated double av_ext2dbl(const AVExtFloat ext) av_const; +attribute_deprecated int64_t av_dbl2int(double d) av_const; +attribute_deprecated int32_t av_flt2int(float d) av_const; +attribute_deprecated AVExtFloat av_dbl2ext(double d) av_const; + +#endif /* AVUTIL_INTFLOAT_READWRITE_H */ diff -r 3331b30e4ef1 -r 88fde28bbda6 misc/winutils/include/libavutil/intreadwrite.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/misc/winutils/include/libavutil/intreadwrite.h Sat Nov 03 00:34:35 2012 +0400 @@ -0,0 +1,522 @@ +/* + * This file is part of Libav. + * + * Libav is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * Libav 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 + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with Libav; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ + +#ifndef AVUTIL_INTREADWRITE_H +#define AVUTIL_INTREADWRITE_H + +#include +#include "libavutil/avconfig.h" +#include "attributes.h" +#include "bswap.h" + +typedef union { + uint64_t u64; + uint32_t u32[2]; + uint16_t u16[4]; + uint8_t u8 [8]; + double f64; + float f32[2]; +} av_alias av_alias64; + +typedef union { + uint32_t u32; + uint16_t u16[2]; + uint8_t u8 [4]; + float f32; +} av_alias av_alias32; + +typedef union { + uint16_t u16; + uint8_t u8 [2]; +} av_alias av_alias16; + +/* + * Arch-specific headers can provide any combination of + * AV_[RW][BLN](16|24|32|64) and AV_(COPY|SWAP|ZERO)(64|128) macros. + * Preprocessor symbols must be defined, even if these are implemented + * as inline functions. + */ + +#ifdef HAVE_AV_CONFIG_H + +#include "config.h" + +#if ARCH_ARM +# include "arm/intreadwrite.h" +#elif ARCH_AVR32 +# include "avr32/intreadwrite.h" +#elif ARCH_MIPS +# include "mips/intreadwrite.h" +#elif ARCH_PPC +# include "ppc/intreadwrite.h" +#elif ARCH_TOMI +# include "tomi/intreadwrite.h" +#elif ARCH_X86 +# include "x86/intreadwrite.h" +#endif + +#endif /* HAVE_AV_CONFIG_H */ + +/* + * Map AV_RNXX <-> AV_R[BL]XX for all variants provided by per-arch headers. + */ + +#if AV_HAVE_BIGENDIAN + +# if defined(AV_RN16) && !defined(AV_RB16) +# define AV_RB16(p) AV_RN16(p) +# elif !defined(AV_RN16) && defined(AV_RB16) +# define AV_RN16(p) AV_RB16(p) +# endif + +# if defined(AV_WN16) && !defined(AV_WB16) +# define AV_WB16(p, v) AV_WN16(p, v) +# elif !defined(AV_WN16) && defined(AV_WB16) +# define AV_WN16(p, v) AV_WB16(p, v) +# endif + +# if defined(AV_RN24) && !defined(AV_RB24) +# define AV_RB24(p) AV_RN24(p) +# elif !defined(AV_RN24) && defined(AV_RB24) +# define AV_RN24(p) AV_RB24(p) +# endif + +# if defined(AV_WN24) && !defined(AV_WB24) +# define AV_WB24(p, v) AV_WN24(p, v) +# elif !defined(AV_WN24) && defined(AV_WB24) +# define AV_WN24(p, v) AV_WB24(p, v) +# endif + +# if defined(AV_RN32) && !defined(AV_RB32) +# define AV_RB32(p) AV_RN32(p) +# elif !defined(AV_RN32) && defined(AV_RB32) +# define AV_RN32(p) AV_RB32(p) +# endif + +# if defined(AV_WN32) && !defined(AV_WB32) +# define AV_WB32(p, v) AV_WN32(p, v) +# elif !defined(AV_WN32) && defined(AV_WB32) +# define AV_WN32(p, v) AV_WB32(p, v) +# endif + +# if defined(AV_RN64) && !defined(AV_RB64) +# define AV_RB64(p) AV_RN64(p) +# elif !defined(AV_RN64) && defined(AV_RB64) +# define AV_RN64(p) AV_RB64(p) +# endif + +# if defined(AV_WN64) && !defined(AV_WB64) +# define AV_WB64(p, v) AV_WN64(p, v) +# elif !defined(AV_WN64) && defined(AV_WB64) +# define AV_WN64(p, v) AV_WB64(p, v) +# endif + +#else /* AV_HAVE_BIGENDIAN */ + +# if defined(AV_RN16) && !defined(AV_RL16) +# define AV_RL16(p) AV_RN16(p) +# elif !defined(AV_RN16) && defined(AV_RL16) +# define AV_RN16(p) AV_RL16(p) +# endif + +# if defined(AV_WN16) && !defined(AV_WL16) +# define AV_WL16(p, v) AV_WN16(p, v) +# elif !defined(AV_WN16) && defined(AV_WL16) +# define AV_WN16(p, v) AV_WL16(p, v) +# endif + +# if defined(AV_RN24) && !defined(AV_RL24) +# define AV_RL24(p) AV_RN24(p) +# elif !defined(AV_RN24) && defined(AV_RL24) +# define AV_RN24(p) AV_RL24(p) +# endif + +# if defined(AV_WN24) && !defined(AV_WL24) +# define AV_WL24(p, v) AV_WN24(p, v) +# elif !defined(AV_WN24) && defined(AV_WL24) +# define AV_WN24(p, v) AV_WL24(p, v) +# endif + +# if defined(AV_RN32) && !defined(AV_RL32) +# define AV_RL32(p) AV_RN32(p) +# elif !defined(AV_RN32) && defined(AV_RL32) +# define AV_RN32(p) AV_RL32(p) +# endif + +# if defined(AV_WN32) && !defined(AV_WL32) +# define AV_WL32(p, v) AV_WN32(p, v) +# elif !defined(AV_WN32) && defined(AV_WL32) +# define AV_WN32(p, v) AV_WL32(p, v) +# endif + +# if defined(AV_RN64) && !defined(AV_RL64) +# define AV_RL64(p) AV_RN64(p) +# elif !defined(AV_RN64) && defined(AV_RL64) +# define AV_RN64(p) AV_RL64(p) +# endif + +# if defined(AV_WN64) && !defined(AV_WL64) +# define AV_WL64(p, v) AV_WN64(p, v) +# elif !defined(AV_WN64) && defined(AV_WL64) +# define AV_WN64(p, v) AV_WL64(p, v) +# endif + +#endif /* !AV_HAVE_BIGENDIAN */ + +/* + * Define AV_[RW]N helper macros to simplify definitions not provided + * by per-arch headers. + */ + +#if defined(__GNUC__) && !defined(__TI_COMPILER_VERSION__) + +union unaligned_64 { uint64_t l; } __attribute__((packed)) av_alias; +union unaligned_32 { uint32_t l; } __attribute__((packed)) av_alias; +union unaligned_16 { uint16_t l; } __attribute__((packed)) av_alias; + +# define AV_RN(s, p) (((const union unaligned_##s *) (p))->l) +# define AV_WN(s, p, v) ((((union unaligned_##s *) (p))->l) = (v)) + +#elif defined(__DECC) + +# define AV_RN(s, p) (*((const __unaligned uint##s##_t*)(p))) +# define AV_WN(s, p, v) (*((__unaligned uint##s##_t*)(p)) = (v)) + +#elif AV_HAVE_FAST_UNALIGNED + +# define AV_RN(s, p) (((const av_alias##s*)(p))->u##s) +# define AV_WN(s, p, v) (((av_alias##s*)(p))->u##s = (v)) + +#else + +#ifndef AV_RB16 +# define AV_RB16(x) \ + ((((const uint8_t*)(x))[0] << 8) | \ + ((const uint8_t*)(x))[1]) +#endif +#ifndef AV_WB16 +# define AV_WB16(p, d) do { \ + ((uint8_t*)(p))[1] = (d); \ + ((uint8_t*)(p))[0] = (d)>>8; \ + } while(0) +#endif + +#ifndef AV_RL16 +# define AV_RL16(x) \ + ((((const uint8_t*)(x))[1] << 8) | \ + ((const uint8_t*)(x))[0]) +#endif +#ifndef AV_WL16 +# define AV_WL16(p, d) do { \ + ((uint8_t*)(p))[0] = (d); \ + ((uint8_t*)(p))[1] = (d)>>8; \ + } while(0) +#endif + +#ifndef AV_RB32 +# define AV_RB32(x) \ + (((uint32_t)((const uint8_t*)(x))[0] << 24) | \ + (((const uint8_t*)(x))[1] << 16) | \ + (((const uint8_t*)(x))[2] << 8) | \ + ((const uint8_t*)(x))[3]) +#endif +#ifndef AV_WB32 +# define AV_WB32(p, d) do { \ + ((uint8_t*)(p))[3] = (d); \ + ((uint8_t*)(p))[2] = (d)>>8; \ + ((uint8_t*)(p))[1] = (d)>>16; \ + ((uint8_t*)(p))[0] = (d)>>24; \ + } while(0) +#endif + +#ifndef AV_RL32 +# define AV_RL32(x) \ + (((uint32_t)((const uint8_t*)(x))[3] << 24) | \ + (((const uint8_t*)(x))[2] << 16) | \ + (((const uint8_t*)(x))[1] << 8) | \ + ((const uint8_t*)(x))[0]) +#endif +#ifndef AV_WL32 +# define AV_WL32(p, d) do { \ + ((uint8_t*)(p))[0] = (d); \ + ((uint8_t*)(p))[1] = (d)>>8; \ + ((uint8_t*)(p))[2] = (d)>>16; \ + ((uint8_t*)(p))[3] = (d)>>24; \ + } while(0) +#endif + +#ifndef AV_RB64 +# define AV_RB64(x) \ + (((uint64_t)((const uint8_t*)(x))[0] << 56) | \ + ((uint64_t)((const uint8_t*)(x))[1] << 48) | \ + ((uint64_t)((const uint8_t*)(x))[2] << 40) | \ + ((uint64_t)((const uint8_t*)(x))[3] << 32) | \ + ((uint64_t)((const uint8_t*)(x))[4] << 24) | \ + ((uint64_t)((const uint8_t*)(x))[5] << 16) | \ + ((uint64_t)((const uint8_t*)(x))[6] << 8) | \ + (uint64_t)((const uint8_t*)(x))[7]) +#endif +#ifndef AV_WB64 +# define AV_WB64(p, d) do { \ + ((uint8_t*)(p))[7] = (d); \ + ((uint8_t*)(p))[6] = (d)>>8; \ + ((uint8_t*)(p))[5] = (d)>>16; \ + ((uint8_t*)(p))[4] = (d)>>24; \ + ((uint8_t*)(p))[3] = (d)>>32; \ + ((uint8_t*)(p))[2] = (d)>>40; \ + ((uint8_t*)(p))[1] = (d)>>48; \ + ((uint8_t*)(p))[0] = (d)>>56; \ + } while(0) +#endif + +#ifndef AV_RL64 +# define AV_RL64(x) \ + (((uint64_t)((const uint8_t*)(x))[7] << 56) | \ + ((uint64_t)((const uint8_t*)(x))[6] << 48) | \ + ((uint64_t)((const uint8_t*)(x))[5] << 40) | \ + ((uint64_t)((const uint8_t*)(x))[4] << 32) | \ + ((uint64_t)((const uint8_t*)(x))[3] << 24) | \ + ((uint64_t)((const uint8_t*)(x))[2] << 16) | \ + ((uint64_t)((const uint8_t*)(x))[1] << 8) | \ + (uint64_t)((const uint8_t*)(x))[0]) +#endif +#ifndef AV_WL64 +# define AV_WL64(p, d) do { \ + ((uint8_t*)(p))[0] = (d); \ + ((uint8_t*)(p))[1] = (d)>>8; \ + ((uint8_t*)(p))[2] = (d)>>16; \ + ((uint8_t*)(p))[3] = (d)>>24; \ + ((uint8_t*)(p))[4] = (d)>>32; \ + ((uint8_t*)(p))[5] = (d)>>40; \ + ((uint8_t*)(p))[6] = (d)>>48; \ + ((uint8_t*)(p))[7] = (d)>>56; \ + } while(0) +#endif + +#if AV_HAVE_BIGENDIAN +# define AV_RN(s, p) AV_RB##s(p) +# define AV_WN(s, p, v) AV_WB##s(p, v) +#else +# define AV_RN(s, p) AV_RL##s(p) +# define AV_WN(s, p, v) AV_WL##s(p, v) +#endif + +#endif /* HAVE_FAST_UNALIGNED */ + +#ifndef AV_RN16 +# define AV_RN16(p) AV_RN(16, p) +#endif + +#ifndef AV_RN32 +# define AV_RN32(p) AV_RN(32, p) +#endif + +#ifndef AV_RN64 +# define AV_RN64(p) AV_RN(64, p) +#endif + +#ifndef AV_WN16 +# define AV_WN16(p, v) AV_WN(16, p, v) +#endif + +#ifndef AV_WN32 +# define AV_WN32(p, v) AV_WN(32, p, v) +#endif + +#ifndef AV_WN64 +# define AV_WN64(p, v) AV_WN(64, p, v) +#endif + +#if AV_HAVE_BIGENDIAN +# define AV_RB(s, p) AV_RN##s(p) +# define AV_WB(s, p, v) AV_WN##s(p, v) +# define AV_RL(s, p) av_bswap##s(AV_RN##s(p)) +# define AV_WL(s, p, v) AV_WN##s(p, av_bswap##s(v)) +#else +# define AV_RB(s, p) av_bswap##s(AV_RN##s(p)) +# define AV_WB(s, p, v) AV_WN##s(p, av_bswap##s(v)) +# define AV_RL(s, p) AV_RN##s(p) +# define AV_WL(s, p, v) AV_WN##s(p, v) +#endif + +#define AV_RB8(x) (((const uint8_t*)(x))[0]) +#define AV_WB8(p, d) do { ((uint8_t*)(p))[0] = (d); } while(0) + +#define AV_RL8(x) AV_RB8(x) +#define AV_WL8(p, d) AV_WB8(p, d) + +#ifndef AV_RB16 +# define AV_RB16(p) AV_RB(16, p) +#endif +#ifndef AV_WB16 +# define AV_WB16(p, v) AV_WB(16, p, v) +#endif + +#ifndef AV_RL16 +# define AV_RL16(p) AV_RL(16, p) +#endif +#ifndef AV_WL16 +# define AV_WL16(p, v) AV_WL(16, p, v) +#endif + +#ifndef AV_RB32 +# define AV_RB32(p) AV_RB(32, p) +#endif +#ifndef AV_WB32 +# define AV_WB32(p, v) AV_WB(32, p, v) +#endif + +#ifndef AV_RL32 +# define AV_RL32(p) AV_RL(32, p) +#endif +#ifndef AV_WL32 +# define AV_WL32(p, v) AV_WL(32, p, v) +#endif + +#ifndef AV_RB64 +# define AV_RB64(p) AV_RB(64, p) +#endif +#ifndef AV_WB64 +# define AV_WB64(p, v) AV_WB(64, p, v) +#endif + +#ifndef AV_RL64 +# define AV_RL64(p) AV_RL(64, p) +#endif +#ifndef AV_WL64 +# define AV_WL64(p, v) AV_WL(64, p, v) +#endif + +#ifndef AV_RB24 +# define AV_RB24(x) \ + ((((const uint8_t*)(x))[0] << 16) | \ + (((const uint8_t*)(x))[1] << 8) | \ + ((const uint8_t*)(x))[2]) +#endif +#ifndef AV_WB24 +# define AV_WB24(p, d) do { \ + ((uint8_t*)(p))[2] = (d); \ + ((uint8_t*)(p))[1] = (d)>>8; \ + ((uint8_t*)(p))[0] = (d)>>16; \ + } while(0) +#endif + +#ifndef AV_RL24 +# define AV_RL24(x) \ + ((((const uint8_t*)(x))[2] << 16) | \ + (((const uint8_t*)(x))[1] << 8) | \ + ((const uint8_t*)(x))[0]) +#endif +#ifndef AV_WL24 +# define AV_WL24(p, d) do { \ + ((uint8_t*)(p))[0] = (d); \ + ((uint8_t*)(p))[1] = (d)>>8; \ + ((uint8_t*)(p))[2] = (d)>>16; \ + } while(0) +#endif + +/* + * The AV_[RW]NA macros access naturally aligned data + * in a type-safe way. + */ + +#define AV_RNA(s, p) (((const av_alias##s*)(p))->u##s) +#define AV_WNA(s, p, v) (((av_alias##s*)(p))->u##s = (v)) + +#ifndef AV_RN16A +# define AV_RN16A(p) AV_RNA(16, p) +#endif + +#ifndef AV_RN32A +# define AV_RN32A(p) AV_RNA(32, p) +#endif + +#ifndef AV_RN64A +# define AV_RN64A(p) AV_RNA(64, p) +#endif + +#ifndef AV_WN16A +# define AV_WN16A(p, v) AV_WNA(16, p, v) +#endif + +#ifndef AV_WN32A +# define AV_WN32A(p, v) AV_WNA(32, p, v) +#endif + +#ifndef AV_WN64A +# define AV_WN64A(p, v) AV_WNA(64, p, v) +#endif + +/* Parameters for AV_COPY*, AV_SWAP*, AV_ZERO* must be + * naturally aligned. They may be implemented using MMX, + * so emms_c() must be called before using any float code + * afterwards. + */ + +#define AV_COPY(n, d, s) \ + (((av_alias##n*)(d))->u##n = ((const av_alias##n*)(s))->u##n) + +#ifndef AV_COPY16 +# define AV_COPY16(d, s) AV_COPY(16, d, s) +#endif + +#ifndef AV_COPY32 +# define AV_COPY32(d, s) AV_COPY(32, d, s) +#endif + +#ifndef AV_COPY64 +# define AV_COPY64(d, s) AV_COPY(64, d, s) +#endif + +#ifndef AV_COPY128 +# define AV_COPY128(d, s) \ + do { \ + AV_COPY64(d, s); \ + AV_COPY64((char*)(d)+8, (char*)(s)+8); \ + } while(0) +#endif + +#define AV_SWAP(n, a, b) FFSWAP(av_alias##n, *(av_alias##n*)(a), *(av_alias##n*)(b)) + +#ifndef AV_SWAP64 +# define AV_SWAP64(a, b) AV_SWAP(64, a, b) +#endif + +#define AV_ZERO(n, d) (((av_alias##n*)(d))->u##n = 0) + +#ifndef AV_ZERO16 +# define AV_ZERO16(d) AV_ZERO(16, d) +#endif + +#ifndef AV_ZERO32 +# define AV_ZERO32(d) AV_ZERO(32, d) +#endif + +#ifndef AV_ZERO64 +# define AV_ZERO64(d) AV_ZERO(64, d) +#endif + +#ifndef AV_ZERO128 +# define AV_ZERO128(d) \ + do { \ + AV_ZERO64(d); \ + AV_ZERO64((char*)(d)+8); \ + } while(0) +#endif + +#endif /* AVUTIL_INTREADWRITE_H */ diff -r 3331b30e4ef1 -r 88fde28bbda6 misc/winutils/include/libavutil/lfg.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/misc/winutils/include/libavutil/lfg.h Sat Nov 03 00:34:35 2012 +0400 @@ -0,0 +1,62 @@ +/* + * Lagged Fibonacci PRNG + * Copyright (c) 2008 Michael Niedermayer + * + * This file is part of Libav. + * + * Libav is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * Libav 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 + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with Libav; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ + +#ifndef AVUTIL_LFG_H +#define AVUTIL_LFG_H + +typedef struct AVLFG { + unsigned int state[64]; + int index; +} AVLFG; + +void av_lfg_init(AVLFG *c, unsigned int seed); + +/** + * Get the next random unsigned 32-bit number using an ALFG. + * + * Please also consider a simple LCG like state= state*1664525+1013904223, + * it may be good enough and faster for your specific use case. + */ +static inline unsigned int av_lfg_get(AVLFG *c){ + c->state[c->index & 63] = c->state[(c->index-24) & 63] + c->state[(c->index-55) & 63]; + return c->state[c->index++ & 63]; +} + +/** + * Get the next random unsigned 32-bit number using a MLFG. + * + * Please also consider av_lfg_get() above, it is faster. + */ +static inline unsigned int av_mlfg_get(AVLFG *c){ + unsigned int a= c->state[(c->index-55) & 63]; + unsigned int b= c->state[(c->index-24) & 63]; + return c->state[c->index++ & 63] = 2*a*b+a+b; +} + +/** + * Get the next two numbers generated by a Box-Muller Gaussian + * generator using the random numbers issued by lfg. + * + * @param out array where the two generated numbers are placed + */ +void av_bmg_get(AVLFG *lfg, double out[2]); + +#endif /* AVUTIL_LFG_H */ diff -r 3331b30e4ef1 -r 88fde28bbda6 misc/winutils/include/libavutil/log.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/misc/winutils/include/libavutil/log.h Sat Nov 03 00:34:35 2012 +0400 @@ -0,0 +1,172 @@ +/* + * copyright (c) 2006 Michael Niedermayer + * + * This file is part of Libav. + * + * Libav is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * Libav 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 + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with Libav; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ + +#ifndef AVUTIL_LOG_H +#define AVUTIL_LOG_H + +#include +#include "avutil.h" +#include "attributes.h" + +/** + * Describe the class of an AVClass context structure. That is an + * arbitrary struct of which the first field is a pointer to an + * AVClass struct (e.g. AVCodecContext, AVFormatContext etc.). + */ +typedef struct AVClass { + /** + * The name of the class; usually it is the same name as the + * context structure type to which the AVClass is associated. + */ + const char* class_name; + + /** + * A pointer to a function which returns the name of a context + * instance ctx associated with the class. + */ + const char* (*item_name)(void* ctx); + + /** + * a pointer to the first option specified in the class if any or NULL + * + * @see av_set_default_options() + */ + const struct AVOption *option; + + /** + * LIBAVUTIL_VERSION with which this structure was created. + * This is used to allow fields to be added without requiring major + * version bumps everywhere. + */ + + int version; + + /** + * Offset in the structure where log_level_offset is stored. + * 0 means there is no such variable + */ + int log_level_offset_offset; + + /** + * Offset in the structure where a pointer to the parent context for loging is stored. + * for example a decoder that uses eval.c could pass its AVCodecContext to eval as such + * parent context. And a av_log() implementation could then display the parent context + * can be NULL of course + */ + int parent_log_context_offset; + + /** + * Return next AVOptions-enabled child or NULL + */ + void* (*child_next)(void *obj, void *prev); + + /** + * Return an AVClass corresponding to next potential + * AVOptions-enabled child. + * + * The difference between child_next and this is that + * child_next iterates over _already existing_ objects, while + * child_class_next iterates over _all possible_ children. + */ + const struct AVClass* (*child_class_next)(const struct AVClass *prev); +} AVClass; + +/* av_log API */ + +#define AV_LOG_QUIET -8 + +/** + * Something went really wrong and we will crash now. + */ +#define AV_LOG_PANIC 0 + +/** + * Something went wrong and recovery is not possible. + * For example, no header was found for a format which depends + * on headers or an illegal combination of parameters is used. + */ +#define AV_LOG_FATAL 8 + +/** + * Something went wrong and cannot losslessly be recovered. + * However, not all future data is affected. + */ +#define AV_LOG_ERROR 16 + +/** + * Something somehow does not look correct. This may or may not + * lead to problems. An example would be the use of '-vstrict -2'. + */ +#define AV_LOG_WARNING 24 + +#define AV_LOG_INFO 32 +#define AV_LOG_VERBOSE 40 + +/** + * Stuff which is only useful for libav* developers. + */ +#define AV_LOG_DEBUG 48 + +/** + * Send the specified message to the log if the level is less than or equal + * to the current av_log_level. By default, all logging messages are sent to + * stderr. This behavior can be altered by setting a different av_vlog callback + * function. + * + * @param avcl A pointer to an arbitrary struct of which the first field is a + * pointer to an AVClass struct. + * @param level The importance level of the message, lower values signifying + * higher importance. + * @param fmt The format string (printf-compatible) that specifies how + * subsequent arguments are converted to output. + * @see av_vlog + */ +void av_log(void *avcl, int level, const char *fmt, ...) av_printf_format(3, 4); + +void av_vlog(void *avcl, int level, const char *fmt, va_list); +int av_log_get_level(void); +void av_log_set_level(int); +void av_log_set_callback(void (*)(void*, int, const char*, va_list)); +void av_log_default_callback(void* ptr, int level, const char* fmt, va_list vl); +const char* av_default_item_name(void* ctx); + +/** + * av_dlog macros + * Useful to print debug messages that shouldn't get compiled in normally. + */ + +#ifdef DEBUG +# define av_dlog(pctx, ...) av_log(pctx, AV_LOG_DEBUG, __VA_ARGS__) +#else +# define av_dlog(pctx, ...) +#endif + +/** + * Skip repeated messages, this requires the user app to use av_log() instead of + * (f)printf as the 2 would otherwise interfere and lead to + * "Last message repeated x times" messages below (f)printf messages with some + * bad luck. + * Also to receive the last, "last repeated" line if any, the user app must + * call av_log(NULL, AV_LOG_QUIET, ""); at the end + */ +#define AV_LOG_SKIP_REPEATED 1 +void av_log_set_flags(int arg); + +#endif /* AVUTIL_LOG_H */ diff -r 3331b30e4ef1 -r 88fde28bbda6 misc/winutils/include/libavutil/lzo.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/misc/winutils/include/libavutil/lzo.h Sat Nov 03 00:34:35 2012 +0400 @@ -0,0 +1,77 @@ +/* + * LZO 1x decompression + * copyright (c) 2006 Reimar Doeffinger + * + * This file is part of Libav. + * + * Libav is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * Libav 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 + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with Libav; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ + +#ifndef AVUTIL_LZO_H +#define AVUTIL_LZO_H + +/** + * @defgroup lavu_lzo LZO + * @ingroup lavu_crypto + * + * @{ + */ + +#include + +/** @name Error flags returned by av_lzo1x_decode + * @{ */ +/// end of the input buffer reached before decoding finished +#define AV_LZO_INPUT_DEPLETED 1 +/// decoded data did not fit into output buffer +#define AV_LZO_OUTPUT_FULL 2 +/// a reference to previously decoded data was wrong +#define AV_LZO_INVALID_BACKPTR 4 +/// a non-specific error in the compressed bitstream +#define AV_LZO_ERROR 8 +/** @} */ + +#define AV_LZO_INPUT_PADDING 8 +#define AV_LZO_OUTPUT_PADDING 12 + +/** + * @brief Decodes LZO 1x compressed data. + * @param out output buffer + * @param outlen size of output buffer, number of bytes left are returned here + * @param in input buffer + * @param inlen size of input buffer, number of bytes left are returned here + * @return 0 on success, otherwise a combination of the error flags above + * + * Make sure all buffers are appropriately padded, in must provide + * AV_LZO_INPUT_PADDING, out must provide AV_LZO_OUTPUT_PADDING additional bytes. + */ +int av_lzo1x_decode(void *out, int *outlen, const void *in, int *inlen); + +/** + * @brief deliberately overlapping memcpy implementation + * @param dst destination buffer; must be padded with 12 additional bytes + * @param back how many bytes back we start (the initial size of the overlapping window) + * @param cnt number of bytes to copy, must be >= 0 + * + * cnt > back is valid, this will copy the bytes we just copied, + * thus creating a repeating pattern with a period length of back. + */ +void av_memcpy_backptr(uint8_t *dst, int back, int cnt); + +/** + * @} + */ + +#endif /* AVUTIL_LZO_H */ diff -r 3331b30e4ef1 -r 88fde28bbda6 misc/winutils/include/libavutil/mathematics.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/misc/winutils/include/libavutil/mathematics.h Sat Nov 03 00:34:35 2012 +0400 @@ -0,0 +1,111 @@ +/* + * copyright (c) 2005 Michael Niedermayer + * + * This file is part of Libav. + * + * Libav is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * Libav 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 + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with Libav; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ + +#ifndef AVUTIL_MATHEMATICS_H +#define AVUTIL_MATHEMATICS_H + +#include +#include +#include "attributes.h" +#include "rational.h" +#include "intfloat.h" + +#ifndef M_LOG2_10 +#define M_LOG2_10 3.32192809488736234787 /* log_2 10 */ +#endif +#ifndef M_PHI +#define M_PHI 1.61803398874989484820 /* phi / golden ratio */ +#endif +#ifndef NAN +#define NAN av_int2float(0x7fc00000) +#endif +#ifndef INFINITY +#define INFINITY av_int2float(0x7f800000) +#endif + +/** + * @addtogroup lavu_math + * @{ + */ + + +enum AVRounding { + AV_ROUND_ZERO = 0, ///< Round toward zero. + AV_ROUND_INF = 1, ///< Round away from zero. + AV_ROUND_DOWN = 2, ///< Round toward -infinity. + AV_ROUND_UP = 3, ///< Round toward +infinity. + AV_ROUND_NEAR_INF = 5, ///< Round to nearest and halfway cases away from zero. +}; + +/** + * Return the greatest common divisor of a and b. + * If both a and b are 0 or either or both are <0 then behavior is + * undefined. + */ +int64_t av_const av_gcd(int64_t a, int64_t b); + +/** + * Rescale a 64-bit integer with rounding to nearest. + * A simple a*b/c isn't possible as it can overflow. + */ +int64_t av_rescale(int64_t a, int64_t b, int64_t c) av_const; + +/** + * Rescale a 64-bit integer with specified rounding. + * A simple a*b/c isn't possible as it can overflow. + */ +int64_t av_rescale_rnd(int64_t a, int64_t b, int64_t c, enum AVRounding) av_const; + +/** + * Rescale a 64-bit integer by 2 rational numbers. + */ +int64_t av_rescale_q(int64_t a, AVRational bq, AVRational cq) av_const; + +/** + * Rescale a 64-bit integer by 2 rational numbers with specified rounding. + */ +int64_t av_rescale_q_rnd(int64_t a, AVRational bq, AVRational cq, + enum AVRounding) av_const; + +/** + * Compare 2 timestamps each in its own timebases. + * The result of the function is undefined if one of the timestamps + * is outside the int64_t range when represented in the others timebase. + * @return -1 if ts_a is before ts_b, 1 if ts_a is after ts_b or 0 if they represent the same position + */ +int av_compare_ts(int64_t ts_a, AVRational tb_a, int64_t ts_b, AVRational tb_b); + +/** + * Compare 2 integers modulo mod. + * That is we compare integers a and b for which only the least + * significant log2(mod) bits are known. + * + * @param mod must be a power of 2 + * @return a negative value if a is smaller than b + * a positive value if a is greater than b + * 0 if a equals b + */ +int64_t av_compare_mod(uint64_t a, uint64_t b, uint64_t mod); + +/** + * @} + */ + +#endif /* AVUTIL_MATHEMATICS_H */ diff -r 3331b30e4ef1 -r 88fde28bbda6 misc/winutils/include/libavutil/md5.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/misc/winutils/include/libavutil/md5.h Sat Nov 03 00:34:35 2012 +0400 @@ -0,0 +1,51 @@ +/* + * copyright (c) 2006 Michael Niedermayer + * + * This file is part of Libav. + * + * Libav is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * Libav 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 + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with Libav; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ + +#ifndef AVUTIL_MD5_H +#define AVUTIL_MD5_H + +#include + +#include "attributes.h" +#include "version.h" + +/** + * @defgroup lavu_md5 MD5 + * @ingroup lavu_crypto + * @{ + */ + +#if FF_API_CONTEXT_SIZE +extern attribute_deprecated const int av_md5_size; +#endif + +struct AVMD5; + +struct AVMD5 *av_md5_alloc(void); +void av_md5_init(struct AVMD5 *ctx); +void av_md5_update(struct AVMD5 *ctx, const uint8_t *src, const int len); +void av_md5_final(struct AVMD5 *ctx, uint8_t *dst); +void av_md5_sum(uint8_t *dst, const uint8_t *src, const int len); + +/** + * @} + */ + +#endif /* AVUTIL_MD5_H */ diff -r 3331b30e4ef1 -r 88fde28bbda6 misc/winutils/include/libavutil/mem.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/misc/winutils/include/libavutil/mem.h Sat Nov 03 00:34:35 2012 +0400 @@ -0,0 +1,171 @@ +/* + * copyright (c) 2006 Michael Niedermayer + * + * This file is part of Libav. + * + * Libav is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * Libav 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 + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with Libav; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ + +/** + * @file + * memory handling functions + */ + +#ifndef AVUTIL_MEM_H +#define AVUTIL_MEM_H + +#include + +#include "attributes.h" +#include "avutil.h" + +/** + * @addtogroup lavu_mem + * @{ + */ + + +#if defined(__ICC) && __ICC < 1200 || defined(__SUNPRO_C) + #define DECLARE_ALIGNED(n,t,v) t __attribute__ ((aligned (n))) v + #define DECLARE_ASM_CONST(n,t,v) const t __attribute__ ((aligned (n))) v +#elif defined(__TI_COMPILER_VERSION__) + #define DECLARE_ALIGNED(n,t,v) \ + AV_PRAGMA(DATA_ALIGN(v,n)) \ + t __attribute__((aligned(n))) v + #define DECLARE_ASM_CONST(n,t,v) \ + AV_PRAGMA(DATA_ALIGN(v,n)) \ + static const t __attribute__((aligned(n))) v +#elif defined(__GNUC__) + #define DECLARE_ALIGNED(n,t,v) t __attribute__ ((aligned (n))) v + #define DECLARE_ASM_CONST(n,t,v) static const t av_used __attribute__ ((aligned (n))) v +#elif defined(_MSC_VER) + #define DECLARE_ALIGNED(n,t,v) __declspec(align(n)) t v + #define DECLARE_ASM_CONST(n,t,v) __declspec(align(n)) static const t v +#else + #define DECLARE_ALIGNED(n,t,v) t v + #define DECLARE_ASM_CONST(n,t,v) static const t v +#endif + +#if AV_GCC_VERSION_AT_LEAST(3,1) + #define av_malloc_attrib __attribute__((__malloc__)) +#else + #define av_malloc_attrib +#endif + +#if AV_GCC_VERSION_AT_LEAST(4,3) + #define av_alloc_size(...) __attribute__((alloc_size(__VA_ARGS__))) +#else + #define av_alloc_size(...) +#endif + +/** + * Allocate a block of size bytes with alignment suitable for all + * memory accesses (including vectors if available on the CPU). + * @param size Size in bytes for the memory block to be allocated. + * @return Pointer to the allocated block, NULL if the block cannot + * be allocated. + * @see av_mallocz() + */ +void *av_malloc(size_t size) av_malloc_attrib av_alloc_size(1); + +/** + * Helper function to allocate a block of size * nmemb bytes with + * using av_malloc() + * @param nmemb Number of elements + * @param size Size of the single element + * @return Pointer to the allocated block, NULL if the block cannot + * be allocated. + * @see av_malloc() + */ +av_alloc_size(1, 2) static inline void *av_malloc_array(size_t nmemb, size_t size) +{ + if (size <= 0 || nmemb >= INT_MAX / size) + return NULL; + return av_malloc(nmemb * size); +} + +/** + * Allocate or reallocate a block of memory. + * If ptr is NULL and size > 0, allocate a new block. If + * size is zero, free the memory block pointed to by ptr. + * @param ptr Pointer to a memory block already allocated with + * av_malloc(z)() or av_realloc() or NULL. + * @param size Size in bytes for the memory block to be allocated or + * reallocated. + * @return Pointer to a newly reallocated block or NULL if the block + * cannot be reallocated or the function is used to free the memory block. + * @see av_fast_realloc() + */ +void *av_realloc(void *ptr, size_t size) av_alloc_size(2); + +/** + * Free a memory block which has been allocated with av_malloc(z)() or + * av_realloc(). + * @param ptr Pointer to the memory block which should be freed. + * @note ptr = NULL is explicitly allowed. + * @note It is recommended that you use av_freep() instead. + * @see av_freep() + */ +void av_free(void *ptr); + +/** + * Allocate a block of size bytes with alignment suitable for all + * memory accesses (including vectors if available on the CPU) and + * zero all the bytes of the block. + * @param size Size in bytes for the memory block to be allocated. + * @return Pointer to the allocated block, NULL if it cannot be allocated. + * @see av_malloc() + */ +void *av_mallocz(size_t size) av_malloc_attrib av_alloc_size(1); + +/** + * Helper function to allocate a block of size * nmemb bytes with + * using av_mallocz() + * @param nmemb Number of elements + * @param size Size of the single element + * @return Pointer to the allocated block, NULL if the block cannot + * be allocated. + * @see av_mallocz() + * @see av_malloc_array() + */ +av_alloc_size(1, 2) static inline void *av_mallocz_array(size_t nmemb, size_t size) +{ + if (size <= 0 || nmemb >= INT_MAX / size) + return NULL; + return av_mallocz(nmemb * size); +} + +/** + * Duplicate the string s. + * @param s string to be duplicated + * @return Pointer to a newly allocated string containing a + * copy of s or NULL if the string cannot be allocated. + */ +char *av_strdup(const char *s) av_malloc_attrib; + +/** + * Free a memory block which has been allocated with av_malloc(z)() or + * av_realloc() and set the pointer pointing to it to NULL. + * @param ptr Pointer to the pointer to the memory block which should + * be freed. + * @see av_free() + */ +void av_freep(void *ptr); + +/** + * @} + */ + +#endif /* AVUTIL_MEM_H */ diff -r 3331b30e4ef1 -r 88fde28bbda6 misc/winutils/include/libavutil/old_pix_fmts.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/misc/winutils/include/libavutil/old_pix_fmts.h Sat Nov 03 00:34:35 2012 +0400 @@ -0,0 +1,128 @@ +/* + * This file is part of Libav. + * + * Libav is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * Libav 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 + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with Libav; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ + +#ifndef AVUTIL_OLD_PIX_FMTS_H +#define AVUTIL_OLD_PIX_FMTS_H + +/* + * This header exists to prevent new pixel formats from being accidentally added + * to the deprecated list. + * Do not include it directly. It will be removed on next major bump + * + * Do not add new items to this list. Use the AVPixelFormat enum instead. + */ + PIX_FMT_NONE = AV_PIX_FMT_NONE, + PIX_FMT_YUV420P, ///< planar YUV 4:2:0, 12bpp, (1 Cr & Cb sample per 2x2 Y samples) + PIX_FMT_YUYV422, ///< packed YUV 4:2:2, 16bpp, Y0 Cb Y1 Cr + PIX_FMT_RGB24, ///< packed RGB 8:8:8, 24bpp, RGBRGB... + PIX_FMT_BGR24, ///< packed RGB 8:8:8, 24bpp, BGRBGR... + PIX_FMT_YUV422P, ///< planar YUV 4:2:2, 16bpp, (1 Cr & Cb sample per 2x1 Y samples) + PIX_FMT_YUV444P, ///< planar YUV 4:4:4, 24bpp, (1 Cr & Cb sample per 1x1 Y samples) + PIX_FMT_YUV410P, ///< planar YUV 4:1:0, 9bpp, (1 Cr & Cb sample per 4x4 Y samples) + PIX_FMT_YUV411P, ///< planar YUV 4:1:1, 12bpp, (1 Cr & Cb sample per 4x1 Y samples) + PIX_FMT_GRAY8, ///< Y , 8bpp + PIX_FMT_MONOWHITE, ///< Y , 1bpp, 0 is white, 1 is black, in each byte pixels are ordered from the msb to the lsb + PIX_FMT_MONOBLACK, ///< Y , 1bpp, 0 is black, 1 is white, in each byte pixels are ordered from the msb to the lsb + PIX_FMT_PAL8, ///< 8 bit with PIX_FMT_RGB32 palette + PIX_FMT_YUVJ420P, ///< planar YUV 4:2:0, 12bpp, full scale (JPEG), deprecated in favor of PIX_FMT_YUV420P and setting color_range + PIX_FMT_YUVJ422P, ///< planar YUV 4:2:2, 16bpp, full scale (JPEG), deprecated in favor of PIX_FMT_YUV422P and setting color_range + PIX_FMT_YUVJ444P, ///< planar YUV 4:4:4, 24bpp, full scale (JPEG), deprecated in favor of PIX_FMT_YUV444P and setting color_range + PIX_FMT_XVMC_MPEG2_MC,///< XVideo Motion Acceleration via common packet passing + PIX_FMT_XVMC_MPEG2_IDCT, + PIX_FMT_UYVY422, ///< packed YUV 4:2:2, 16bpp, Cb Y0 Cr Y1 + PIX_FMT_UYYVYY411, ///< packed YUV 4:1:1, 12bpp, Cb Y0 Y1 Cr Y2 Y3 + PIX_FMT_BGR8, ///< packed RGB 3:3:2, 8bpp, (msb)2B 3G 3R(lsb) + PIX_FMT_BGR4, ///< packed RGB 1:2:1 bitstream, 4bpp, (msb)1B 2G 1R(lsb), a byte contains two pixels, the first pixel in the byte is the one composed by the 4 msb bits + PIX_FMT_BGR4_BYTE, ///< packed RGB 1:2:1, 8bpp, (msb)1B 2G 1R(lsb) + PIX_FMT_RGB8, ///< packed RGB 3:3:2, 8bpp, (msb)2R 3G 3B(lsb) + PIX_FMT_RGB4, ///< packed RGB 1:2:1 bitstream, 4bpp, (msb)1R 2G 1B(lsb), a byte contains two pixels, the first pixel in the byte is the one composed by the 4 msb bits + PIX_FMT_RGB4_BYTE, ///< packed RGB 1:2:1, 8bpp, (msb)1R 2G 1B(lsb) + PIX_FMT_NV12, ///< planar YUV 4:2:0, 12bpp, 1 plane for Y and 1 plane for the UV components, which are interleaved (first byte U and the following byte V) + PIX_FMT_NV21, ///< as above, but U and V bytes are swapped + + PIX_FMT_ARGB, ///< packed ARGB 8:8:8:8, 32bpp, ARGBARGB... + PIX_FMT_RGBA, ///< packed RGBA 8:8:8:8, 32bpp, RGBARGBA... + PIX_FMT_ABGR, ///< packed ABGR 8:8:8:8, 32bpp, ABGRABGR... + PIX_FMT_BGRA, ///< packed BGRA 8:8:8:8, 32bpp, BGRABGRA... + + PIX_FMT_GRAY16BE, ///< Y , 16bpp, big-endian + PIX_FMT_GRAY16LE, ///< Y , 16bpp, little-endian + PIX_FMT_YUV440P, ///< planar YUV 4:4:0 (1 Cr & Cb sample per 1x2 Y samples) + PIX_FMT_YUVJ440P, ///< planar YUV 4:4:0 full scale (JPEG), deprecated in favor of PIX_FMT_YUV440P and setting color_range + PIX_FMT_YUVA420P, ///< planar YUV 4:2:0, 20bpp, (1 Cr & Cb sample per 2x2 Y & A samples) + PIX_FMT_VDPAU_H264,///< H.264 HW decoding with VDPAU, data[0] contains a vdpau_render_state struct which contains the bitstream of the slices as well as various fields extracted from headers + PIX_FMT_VDPAU_MPEG1,///< MPEG-1 HW decoding with VDPAU, data[0] contains a vdpau_render_state struct which contains the bitstream of the slices as well as various fields extracted from headers + PIX_FMT_VDPAU_MPEG2,///< MPEG-2 HW decoding with VDPAU, data[0] contains a vdpau_render_state struct which contains the bitstream of the slices as well as various fields extracted from headers + PIX_FMT_VDPAU_WMV3,///< WMV3 HW decoding with VDPAU, data[0] contains a vdpau_render_state struct which contains the bitstream of the slices as well as various fields extracted from headers + PIX_FMT_VDPAU_VC1, ///< VC-1 HW decoding with VDPAU, data[0] contains a vdpau_render_state struct which contains the bitstream of the slices as well as various fields extracted from headers + PIX_FMT_RGB48BE, ///< packed RGB 16:16:16, 48bpp, 16R, 16G, 16B, the 2-byte value for each R/G/B component is stored as big-endian + PIX_FMT_RGB48LE, ///< packed RGB 16:16:16, 48bpp, 16R, 16G, 16B, the 2-byte value for each R/G/B component is stored as little-endian + + PIX_FMT_RGB565BE, ///< packed RGB 5:6:5, 16bpp, (msb) 5R 6G 5B(lsb), big-endian + PIX_FMT_RGB565LE, ///< packed RGB 5:6:5, 16bpp, (msb) 5R 6G 5B(lsb), little-endian + PIX_FMT_RGB555BE, ///< packed RGB 5:5:5, 16bpp, (msb)1A 5R 5G 5B(lsb), big-endian, most significant bit to 0 + PIX_FMT_RGB555LE, ///< packed RGB 5:5:5, 16bpp, (msb)1A 5R 5G 5B(lsb), little-endian, most significant bit to 0 + + PIX_FMT_BGR565BE, ///< packed BGR 5:6:5, 16bpp, (msb) 5B 6G 5R(lsb), big-endian + PIX_FMT_BGR565LE, ///< packed BGR 5:6:5, 16bpp, (msb) 5B 6G 5R(lsb), little-endian + PIX_FMT_BGR555BE, ///< packed BGR 5:5:5, 16bpp, (msb)1A 5B 5G 5R(lsb), big-endian, most significant bit to 1 + PIX_FMT_BGR555LE, ///< packed BGR 5:5:5, 16bpp, (msb)1A 5B 5G 5R(lsb), little-endian, most significant bit to 1 + + PIX_FMT_VAAPI_MOCO, ///< HW acceleration through VA API at motion compensation entry-point, Picture.data[3] contains a vaapi_render_state struct which contains macroblocks as well as various fields extracted from headers + PIX_FMT_VAAPI_IDCT, ///< HW acceleration through VA API at IDCT entry-point, Picture.data[3] contains a vaapi_render_state struct which contains fields extracted from headers + PIX_FMT_VAAPI_VLD, ///< HW decoding through VA API, Picture.data[3] contains a vaapi_render_state struct which contains the bitstream of the slices as well as various fields extracted from headers + + PIX_FMT_YUV420P16LE, ///< planar YUV 4:2:0, 24bpp, (1 Cr & Cb sample per 2x2 Y samples), little-endian + PIX_FMT_YUV420P16BE, ///< planar YUV 4:2:0, 24bpp, (1 Cr & Cb sample per 2x2 Y samples), big-endian + PIX_FMT_YUV422P16LE, ///< planar YUV 4:2:2, 32bpp, (1 Cr & Cb sample per 2x1 Y samples), little-endian + PIX_FMT_YUV422P16BE, ///< planar YUV 4:2:2, 32bpp, (1 Cr & Cb sample per 2x1 Y samples), big-endian + PIX_FMT_YUV444P16LE, ///< planar YUV 4:4:4, 48bpp, (1 Cr & Cb sample per 1x1 Y samples), little-endian + PIX_FMT_YUV444P16BE, ///< planar YUV 4:4:4, 48bpp, (1 Cr & Cb sample per 1x1 Y samples), big-endian + PIX_FMT_VDPAU_MPEG4, ///< MPEG4 HW decoding with VDPAU, data[0] contains a vdpau_render_state struct which contains the bitstream of the slices as well as various fields extracted from headers + PIX_FMT_DXVA2_VLD, ///< HW decoding through DXVA2, Picture.data[3] contains a LPDIRECT3DSURFACE9 pointer + + PIX_FMT_RGB444LE, ///< packed RGB 4:4:4, 16bpp, (msb)4A 4R 4G 4B(lsb), little-endian, most significant bits to 0 + PIX_FMT_RGB444BE, ///< packed RGB 4:4:4, 16bpp, (msb)4A 4R 4G 4B(lsb), big-endian, most significant bits to 0 + PIX_FMT_BGR444LE, ///< packed BGR 4:4:4, 16bpp, (msb)4A 4B 4G 4R(lsb), little-endian, most significant bits to 1 + PIX_FMT_BGR444BE, ///< packed BGR 4:4:4, 16bpp, (msb)4A 4B 4G 4R(lsb), big-endian, most significant bits to 1 + PIX_FMT_Y400A, ///< 8bit gray, 8bit alpha + PIX_FMT_BGR48BE, ///< packed RGB 16:16:16, 48bpp, 16B, 16G, 16R, the 2-byte value for each R/G/B component is stored as big-endian + PIX_FMT_BGR48LE, ///< packed RGB 16:16:16, 48bpp, 16B, 16G, 16R, the 2-byte value for each R/G/B component is stored as little-endian + PIX_FMT_YUV420P9BE, ///< planar YUV 4:2:0, 13.5bpp, (1 Cr & Cb sample per 2x2 Y samples), big-endian + PIX_FMT_YUV420P9LE, ///< planar YUV 4:2:0, 13.5bpp, (1 Cr & Cb sample per 2x2 Y samples), little-endian + PIX_FMT_YUV420P10BE,///< planar YUV 4:2:0, 15bpp, (1 Cr & Cb sample per 2x2 Y samples), big-endian + PIX_FMT_YUV420P10LE,///< planar YUV 4:2:0, 15bpp, (1 Cr & Cb sample per 2x2 Y samples), little-endian + PIX_FMT_YUV422P10BE,///< planar YUV 4:2:2, 20bpp, (1 Cr & Cb sample per 2x1 Y samples), big-endian + PIX_FMT_YUV422P10LE,///< planar YUV 4:2:2, 20bpp, (1 Cr & Cb sample per 2x1 Y samples), little-endian + PIX_FMT_YUV444P9BE, ///< planar YUV 4:4:4, 27bpp, (1 Cr & Cb sample per 1x1 Y samples), big-endian + PIX_FMT_YUV444P9LE, ///< planar YUV 4:4:4, 27bpp, (1 Cr & Cb sample per 1x1 Y samples), little-endian + PIX_FMT_YUV444P10BE,///< planar YUV 4:4:4, 30bpp, (1 Cr & Cb sample per 1x1 Y samples), big-endian + PIX_FMT_YUV444P10LE,///< planar YUV 4:4:4, 30bpp, (1 Cr & Cb sample per 1x1 Y samples), little-endian + PIX_FMT_YUV422P9BE, ///< planar YUV 4:2:2, 18bpp, (1 Cr & Cb sample per 2x1 Y samples), big-endian + PIX_FMT_YUV422P9LE, ///< planar YUV 4:2:2, 18bpp, (1 Cr & Cb sample per 2x1 Y samples), little-endian + PIX_FMT_VDA_VLD, ///< hardware decoding through VDA + PIX_FMT_GBRP, ///< planar GBR 4:4:4 24bpp + PIX_FMT_GBRP9BE, ///< planar GBR 4:4:4 27bpp, big endian + PIX_FMT_GBRP9LE, ///< planar GBR 4:4:4 27bpp, little endian + PIX_FMT_GBRP10BE, ///< planar GBR 4:4:4 30bpp, big endian + PIX_FMT_GBRP10LE, ///< planar GBR 4:4:4 30bpp, little endian + PIX_FMT_GBRP16BE, ///< planar GBR 4:4:4 48bpp, big endian + PIX_FMT_GBRP16LE, ///< planar GBR 4:4:4 48bpp, little endian + PIX_FMT_NB, ///< number of pixel formats, DO NOT USE THIS if you want to link with shared libav* because the number of formats might differ between versions + +#endif /* AVUTIL_OLD_PIX_FMTS_H */ diff -r 3331b30e4ef1 -r 88fde28bbda6 misc/winutils/include/libavutil/opt.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/misc/winutils/include/libavutil/opt.h Sat Nov 03 00:34:35 2012 +0400 @@ -0,0 +1,592 @@ +/* + * AVOptions + * copyright (c) 2005 Michael Niedermayer + * + * This file is part of Libav. + * + * Libav is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * Libav 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 + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with Libav; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ + +#ifndef AVUTIL_OPT_H +#define AVUTIL_OPT_H + +/** + * @file + * AVOptions + */ + +#include "rational.h" +#include "avutil.h" +#include "dict.h" +#include "log.h" + +/** + * @defgroup avoptions AVOptions + * @ingroup lavu_data + * @{ + * AVOptions provide a generic system to declare options on arbitrary structs + * ("objects"). An option can have a help text, a type and a range of possible + * values. Options may then be enumerated, read and written to. + * + * @section avoptions_implement Implementing AVOptions + * This section describes how to add AVOptions capabilities to a struct. + * + * All AVOptions-related information is stored in an AVClass. Therefore + * the first member of the struct must be a pointer to an AVClass describing it. + * The option field of the AVClass must be set to a NULL-terminated static array + * of AVOptions. Each AVOption must have a non-empty name, a type, a default + * value and for number-type AVOptions also a range of allowed values. It must + * also declare an offset in bytes from the start of the struct, where the field + * associated with this AVOption is located. Other fields in the AVOption struct + * should also be set when applicable, but are not required. + * + * The following example illustrates an AVOptions-enabled struct: + * @code + * typedef struct test_struct { + * AVClass *class; + * int int_opt; + * char *str_opt; + * uint8_t *bin_opt; + * int bin_len; + * } test_struct; + * + * static const AVOption options[] = { + * { "test_int", "This is a test option of int type.", offsetof(test_struct, int_opt), + * AV_OPT_TYPE_INT, { .i64 = -1 }, INT_MIN, INT_MAX }, + * { "test_str", "This is a test option of string type.", offsetof(test_struct, str_opt), + * AV_OPT_TYPE_STRING }, + * { "test_bin", "This is a test option of binary type.", offsetof(test_struct, bin_opt), + * AV_OPT_TYPE_BINARY }, + * { NULL }, + * }; + * + * static const AVClass test_class = { + * .class_name = "test class", + * .item_name = av_default_item_name, + * .option = options, + * .version = LIBAVUTIL_VERSION_INT, + * }; + * @endcode + * + * Next, when allocating your struct, you must ensure that the AVClass pointer + * is set to the correct value. Then, av_opt_set_defaults() must be called to + * initialize defaults. After that the struct is ready to be used with the + * AVOptions API. + * + * When cleaning up, you may use the av_opt_free() function to automatically + * free all the allocated string and binary options. + * + * Continuing with the above example: + * + * @code + * test_struct *alloc_test_struct(void) + * { + * test_struct *ret = av_malloc(sizeof(*ret)); + * ret->class = &test_class; + * av_opt_set_defaults(ret); + * return ret; + * } + * void free_test_struct(test_struct **foo) + * { + * av_opt_free(*foo); + * av_freep(foo); + * } + * @endcode + * + * @subsection avoptions_implement_nesting Nesting + * It may happen that an AVOptions-enabled struct contains another + * AVOptions-enabled struct as a member (e.g. AVCodecContext in + * libavcodec exports generic options, while its priv_data field exports + * codec-specific options). In such a case, it is possible to set up the + * parent struct to export a child's options. To do that, simply + * implement AVClass.child_next() and AVClass.child_class_next() in the + * parent struct's AVClass. + * Assuming that the test_struct from above now also contains a + * child_struct field: + * + * @code + * typedef struct child_struct { + * AVClass *class; + * int flags_opt; + * } child_struct; + * static const AVOption child_opts[] = { + * { "test_flags", "This is a test option of flags type.", + * offsetof(child_struct, flags_opt), AV_OPT_TYPE_FLAGS, { .i64 = 0 }, INT_MIN, INT_MAX }, + * { NULL }, + * }; + * static const AVClass child_class = { + * .class_name = "child class", + * .item_name = av_default_item_name, + * .option = child_opts, + * .version = LIBAVUTIL_VERSION_INT, + * }; + * + * void *child_next(void *obj, void *prev) + * { + * test_struct *t = obj; + * if (!prev && t->child_struct) + * return t->child_struct; + * return NULL + * } + * const AVClass child_class_next(const AVClass *prev) + * { + * return prev ? NULL : &child_class; + * } + * @endcode + * Putting child_next() and child_class_next() as defined above into + * test_class will now make child_struct's options accessible through + * test_struct (again, proper setup as described above needs to be done on + * child_struct right after it is created). + * + * From the above example it might not be clear why both child_next() + * and child_class_next() are needed. The distinction is that child_next() + * iterates over actually existing objects, while child_class_next() + * iterates over all possible child classes. E.g. if an AVCodecContext + * was initialized to use a codec which has private options, then its + * child_next() will return AVCodecContext.priv_data and finish + * iterating. OTOH child_class_next() on AVCodecContext.av_class will + * iterate over all available codecs with private options. + * + * @subsection avoptions_implement_named_constants Named constants + * It is possible to create named constants for options. Simply set the unit + * field of the option the constants should apply to to a string and + * create the constants themselves as options of type AV_OPT_TYPE_CONST + * with their unit field set to the same string. + * Their default_val field should contain the value of the named + * constant. + * For example, to add some named constants for the test_flags option + * above, put the following into the child_opts array: + * @code + * { "test_flags", "This is a test option of flags type.", + * offsetof(child_struct, flags_opt), AV_OPT_TYPE_FLAGS, { .i64 = 0 }, INT_MIN, INT_MAX, "test_unit" }, + * { "flag1", "This is a flag with value 16", 0, AV_OPT_TYPE_CONST, { .i64 = 16 }, 0, 0, "test_unit" }, + * @endcode + * + * @section avoptions_use Using AVOptions + * This section deals with accessing options in an AVOptions-enabled struct. + * Such structs in Libav are e.g. AVCodecContext in libavcodec or + * AVFormatContext in libavformat. + * + * @subsection avoptions_use_examine Examining AVOptions + * The basic functions for examining options are av_opt_next(), which iterates + * over all options defined for one object, and av_opt_find(), which searches + * for an option with the given name. + * + * The situation is more complicated with nesting. An AVOptions-enabled struct + * may have AVOptions-enabled children. Passing the AV_OPT_SEARCH_CHILDREN flag + * to av_opt_find() will make the function search children recursively. + * + * For enumerating there are basically two cases. The first is when you want to + * get all options that may potentially exist on the struct and its children + * (e.g. when constructing documentation). In that case you should call + * av_opt_child_class_next() recursively on the parent struct's AVClass. The + * second case is when you have an already initialized struct with all its + * children and you want to get all options that can be actually written or read + * from it. In that case you should call av_opt_child_next() recursively (and + * av_opt_next() on each result). + * + * @subsection avoptions_use_get_set Reading and writing AVOptions + * When setting options, you often have a string read directly from the + * user. In such a case, simply passing it to av_opt_set() is enough. For + * non-string type options, av_opt_set() will parse the string according to the + * option type. + * + * Similarly av_opt_get() will read any option type and convert it to a string + * which will be returned. Do not forget that the string is allocated, so you + * have to free it with av_free(). + * + * In some cases it may be more convenient to put all options into an + * AVDictionary and call av_opt_set_dict() on it. A specific case of this + * are the format/codec open functions in lavf/lavc which take a dictionary + * filled with option as a parameter. This allows to set some options + * that cannot be set otherwise, since e.g. the input file format is not known + * before the file is actually opened. + */ + +enum AVOptionType{ + AV_OPT_TYPE_FLAGS, + AV_OPT_TYPE_INT, + AV_OPT_TYPE_INT64, + AV_OPT_TYPE_DOUBLE, + AV_OPT_TYPE_FLOAT, + AV_OPT_TYPE_STRING, + AV_OPT_TYPE_RATIONAL, + AV_OPT_TYPE_BINARY, ///< offset must point to a pointer immediately followed by an int for the length + AV_OPT_TYPE_CONST = 128, +#if FF_API_OLD_AVOPTIONS + FF_OPT_TYPE_FLAGS = 0, + FF_OPT_TYPE_INT, + FF_OPT_TYPE_INT64, + FF_OPT_TYPE_DOUBLE, + FF_OPT_TYPE_FLOAT, + FF_OPT_TYPE_STRING, + FF_OPT_TYPE_RATIONAL, + FF_OPT_TYPE_BINARY, ///< offset must point to a pointer immediately followed by an int for the length + FF_OPT_TYPE_CONST=128, +#endif +}; + +/** + * AVOption + */ +typedef struct AVOption { + const char *name; + + /** + * short English help text + * @todo What about other languages? + */ + const char *help; + + /** + * The offset relative to the context structure where the option + * value is stored. It should be 0 for named constants. + */ + int offset; + enum AVOptionType type; + + /** + * the default value for scalar options + */ + union { + int64_t i64; + double dbl; + const char *str; + /* TODO those are unused now */ + AVRational q; + } default_val; + double min; ///< minimum valid value for the option + double max; ///< maximum valid value for the option + + int flags; +#define AV_OPT_FLAG_ENCODING_PARAM 1 ///< a generic parameter which can be set by the user for muxing or encoding +#define AV_OPT_FLAG_DECODING_PARAM 2 ///< a generic parameter which can be set by the user for demuxing or decoding +#define AV_OPT_FLAG_METADATA 4 ///< some data extracted or inserted into the file like title, comment, ... +#define AV_OPT_FLAG_AUDIO_PARAM 8 +#define AV_OPT_FLAG_VIDEO_PARAM 16 +#define AV_OPT_FLAG_SUBTITLE_PARAM 32 +//FIXME think about enc-audio, ... style flags + + /** + * The logical unit to which the option belongs. Non-constant + * options and corresponding named constants share the same + * unit. May be NULL. + */ + const char *unit; +} AVOption; + +#if FF_API_FIND_OPT +/** + * Look for an option in obj. Look only for the options which + * have the flags set as specified in mask and flags (that is, + * for which it is the case that opt->flags & mask == flags). + * + * @param[in] obj a pointer to a struct whose first element is a + * pointer to an AVClass + * @param[in] name the name of the option to look for + * @param[in] unit the unit of the option to look for, or any if NULL + * @return a pointer to the option found, or NULL if no option + * has been found + * + * @deprecated use av_opt_find. + */ +attribute_deprecated +const AVOption *av_find_opt(void *obj, const char *name, const char *unit, int mask, int flags); +#endif + +#if FF_API_OLD_AVOPTIONS +/** + * Set the field of obj with the given name to value. + * + * @param[in] obj A struct whose first element is a pointer to an + * AVClass. + * @param[in] name the name of the field to set + * @param[in] val The value to set. If the field is not of a string + * type, then the given string is parsed. + * SI postfixes and some named scalars are supported. + * If the field is of a numeric type, it has to be a numeric or named + * scalar. Behavior with more than one scalar and +- infix operators + * is undefined. + * If the field is of a flags type, it has to be a sequence of numeric + * scalars or named flags separated by '+' or '-'. Prefixing a flag + * with '+' causes it to be set without affecting the other flags; + * similarly, '-' unsets a flag. + * @param[out] o_out if non-NULL put here a pointer to the AVOption + * found + * @param alloc this parameter is currently ignored + * @return 0 if the value has been set, or an AVERROR code in case of + * error: + * AVERROR_OPTION_NOT_FOUND if no matching option exists + * AVERROR(ERANGE) if the value is out of range + * AVERROR(EINVAL) if the value is not valid + * @deprecated use av_opt_set() + */ +attribute_deprecated +int av_set_string3(void *obj, const char *name, const char *val, int alloc, const AVOption **o_out); + +attribute_deprecated const AVOption *av_set_double(void *obj, const char *name, double n); +attribute_deprecated const AVOption *av_set_q(void *obj, const char *name, AVRational n); +attribute_deprecated const AVOption *av_set_int(void *obj, const char *name, int64_t n); + +attribute_deprecated double av_get_double(void *obj, const char *name, const AVOption **o_out); +attribute_deprecated AVRational av_get_q(void *obj, const char *name, const AVOption **o_out); +attribute_deprecated int64_t av_get_int(void *obj, const char *name, const AVOption **o_out); +attribute_deprecated const char *av_get_string(void *obj, const char *name, const AVOption **o_out, char *buf, int buf_len); +attribute_deprecated const AVOption *av_next_option(void *obj, const AVOption *last); +#endif + +/** + * Show the obj options. + * + * @param req_flags requested flags for the options to show. Show only the + * options for which it is opt->flags & req_flags. + * @param rej_flags rejected flags for the options to show. Show only the + * options for which it is !(opt->flags & req_flags). + * @param av_log_obj log context to use for showing the options + */ +int av_opt_show2(void *obj, void *av_log_obj, int req_flags, int rej_flags); + +/** + * Set the values of all AVOption fields to their default values. + * + * @param s an AVOption-enabled struct (its first member must be a pointer to AVClass) + */ +void av_opt_set_defaults(void *s); + +#if FF_API_OLD_AVOPTIONS +attribute_deprecated +void av_opt_set_defaults2(void *s, int mask, int flags); +#endif + +/** + * Parse the key/value pairs list in opts. For each key/value pair + * found, stores the value in the field in ctx that is named like the + * key. ctx must be an AVClass context, storing is done using + * AVOptions. + * + * @param key_val_sep a 0-terminated list of characters used to + * separate key from value + * @param pairs_sep a 0-terminated list of characters used to separate + * two pairs from each other + * @return the number of successfully set key/value pairs, or a negative + * value corresponding to an AVERROR code in case of error: + * AVERROR(EINVAL) if opts cannot be parsed, + * the error code issued by av_set_string3() if a key/value pair + * cannot be set + */ +int av_set_options_string(void *ctx, const char *opts, + const char *key_val_sep, const char *pairs_sep); + +/** + * Free all string and binary options in obj. + */ +void av_opt_free(void *obj); + +/** + * Check whether a particular flag is set in a flags field. + * + * @param field_name the name of the flag field option + * @param flag_name the name of the flag to check + * @return non-zero if the flag is set, zero if the flag isn't set, + * isn't of the right type, or the flags field doesn't exist. + */ +int av_opt_flag_is_set(void *obj, const char *field_name, const char *flag_name); + +/* + * Set all the options from a given dictionary on an object. + * + * @param obj a struct whose first element is a pointer to AVClass + * @param options options to process. This dictionary will be freed and replaced + * by a new one containing all options not found in obj. + * Of course this new dictionary needs to be freed by caller + * with av_dict_free(). + * + * @return 0 on success, a negative AVERROR if some option was found in obj, + * but could not be set. + * + * @see av_dict_copy() + */ +int av_opt_set_dict(void *obj, struct AVDictionary **options); + +/** + * @defgroup opt_eval_funcs Evaluating option strings + * @{ + * This group of functions can be used to evaluate option strings + * and get numbers out of them. They do the same thing as av_opt_set(), + * except the result is written into the caller-supplied pointer. + * + * @param obj a struct whose first element is a pointer to AVClass. + * @param o an option for which the string is to be evaluated. + * @param val string to be evaluated. + * @param *_out value of the string will be written here. + * + * @return 0 on success, a negative number on failure. + */ +int av_opt_eval_flags (void *obj, const AVOption *o, const char *val, int *flags_out); +int av_opt_eval_int (void *obj, const AVOption *o, const char *val, int *int_out); +int av_opt_eval_int64 (void *obj, const AVOption *o, const char *val, int64_t *int64_out); +int av_opt_eval_float (void *obj, const AVOption *o, const char *val, float *float_out); +int av_opt_eval_double(void *obj, const AVOption *o, const char *val, double *double_out); +int av_opt_eval_q (void *obj, const AVOption *o, const char *val, AVRational *q_out); +/** + * @} + */ + +#define AV_OPT_SEARCH_CHILDREN 0x0001 /**< Search in possible children of the + given object first. */ +/** + * The obj passed to av_opt_find() is fake -- only a double pointer to AVClass + * instead of a required pointer to a struct containing AVClass. This is + * useful for searching for options without needing to allocate the corresponding + * object. + */ +#define AV_OPT_SEARCH_FAKE_OBJ 0x0002 + +/** + * Look for an option in an object. Consider only options which + * have all the specified flags set. + * + * @param[in] obj A pointer to a struct whose first element is a + * pointer to an AVClass. + * Alternatively a double pointer to an AVClass, if + * AV_OPT_SEARCH_FAKE_OBJ search flag is set. + * @param[in] name The name of the option to look for. + * @param[in] unit When searching for named constants, name of the unit + * it belongs to. + * @param opt_flags Find only options with all the specified flags set (AV_OPT_FLAG). + * @param search_flags A combination of AV_OPT_SEARCH_*. + * + * @return A pointer to the option found, or NULL if no option + * was found. + * + * @note Options found with AV_OPT_SEARCH_CHILDREN flag may not be settable + * directly with av_set_string3(). Use special calls which take an options + * AVDictionary (e.g. avformat_open_input()) to set options found with this + * flag. + */ +const AVOption *av_opt_find(void *obj, const char *name, const char *unit, + int opt_flags, int search_flags); + +/** + * Look for an option in an object. Consider only options which + * have all the specified flags set. + * + * @param[in] obj A pointer to a struct whose first element is a + * pointer to an AVClass. + * Alternatively a double pointer to an AVClass, if + * AV_OPT_SEARCH_FAKE_OBJ search flag is set. + * @param[in] name The name of the option to look for. + * @param[in] unit When searching for named constants, name of the unit + * it belongs to. + * @param opt_flags Find only options with all the specified flags set (AV_OPT_FLAG). + * @param search_flags A combination of AV_OPT_SEARCH_*. + * @param[out] target_obj if non-NULL, an object to which the option belongs will be + * written here. It may be different from obj if AV_OPT_SEARCH_CHILDREN is present + * in search_flags. This parameter is ignored if search_flags contain + * AV_OPT_SEARCH_FAKE_OBJ. + * + * @return A pointer to the option found, or NULL if no option + * was found. + */ +const AVOption *av_opt_find2(void *obj, const char *name, const char *unit, + int opt_flags, int search_flags, void **target_obj); + +/** + * Iterate over all AVOptions belonging to obj. + * + * @param obj an AVOptions-enabled struct or a double pointer to an + * AVClass describing it. + * @param prev result of the previous call to av_opt_next() on this object + * or NULL + * @return next AVOption or NULL + */ +const AVOption *av_opt_next(void *obj, const AVOption *prev); + +/** + * Iterate over AVOptions-enabled children of obj. + * + * @param prev result of a previous call to this function or NULL + * @return next AVOptions-enabled child or NULL + */ +void *av_opt_child_next(void *obj, void *prev); + +/** + * Iterate over potential AVOptions-enabled children of parent. + * + * @param prev result of a previous call to this function or NULL + * @return AVClass corresponding to next potential child or NULL + */ +const AVClass *av_opt_child_class_next(const AVClass *parent, const AVClass *prev); + +/** + * @defgroup opt_set_funcs Option setting functions + * @{ + * Those functions set the field of obj with the given name to value. + * + * @param[in] obj A struct whose first element is a pointer to an AVClass. + * @param[in] name the name of the field to set + * @param[in] val The value to set. In case of av_opt_set() if the field is not + * of a string type, then the given string is parsed. + * SI postfixes and some named scalars are supported. + * If the field is of a numeric type, it has to be a numeric or named + * scalar. Behavior with more than one scalar and +- infix operators + * is undefined. + * If the field is of a flags type, it has to be a sequence of numeric + * scalars or named flags separated by '+' or '-'. Prefixing a flag + * with '+' causes it to be set without affecting the other flags; + * similarly, '-' unsets a flag. + * @param search_flags flags passed to av_opt_find2. I.e. if AV_OPT_SEARCH_CHILDREN + * is passed here, then the option may be set on a child of obj. + * + * @return 0 if the value has been set, or an AVERROR code in case of + * error: + * AVERROR_OPTION_NOT_FOUND if no matching option exists + * AVERROR(ERANGE) if the value is out of range + * AVERROR(EINVAL) if the value is not valid + */ +int av_opt_set (void *obj, const char *name, const char *val, int search_flags); +int av_opt_set_int (void *obj, const char *name, int64_t val, int search_flags); +int av_opt_set_double(void *obj, const char *name, double val, int search_flags); +int av_opt_set_q (void *obj, const char *name, AVRational val, int search_flags); +int av_opt_set_bin (void *obj, const char *name, const uint8_t *val, int size, int search_flags); +/** + * @} + */ + +/** + * @defgroup opt_get_funcs Option getting functions + * @{ + * Those functions get a value of the option with the given name from an object. + * + * @param[in] obj a struct whose first element is a pointer to an AVClass. + * @param[in] name name of the option to get. + * @param[in] search_flags flags passed to av_opt_find2. I.e. if AV_OPT_SEARCH_CHILDREN + * is passed here, then the option may be found in a child of obj. + * @param[out] out_val value of the option will be written here + * @return 0 on success, a negative error code otherwise + */ +/** + * @note the returned string will av_malloc()ed and must be av_free()ed by the caller + */ +int av_opt_get (void *obj, const char *name, int search_flags, uint8_t **out_val); +int av_opt_get_int (void *obj, const char *name, int search_flags, int64_t *out_val); +int av_opt_get_double(void *obj, const char *name, int search_flags, double *out_val); +int av_opt_get_q (void *obj, const char *name, int search_flags, AVRational *out_val); +/** + * @} + * @} + */ + +#endif /* AVUTIL_OPT_H */ diff -r 3331b30e4ef1 -r 88fde28bbda6 misc/winutils/include/libavutil/parseutils.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/misc/winutils/include/libavutil/parseutils.h Sat Nov 03 00:34:35 2012 +0400 @@ -0,0 +1,124 @@ +/* + * This file is part of Libav. + * + * Libav is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * Libav 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 + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with Libav; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ + +#ifndef AVUTIL_PARSEUTILS_H +#define AVUTIL_PARSEUTILS_H + +#include + +#include "rational.h" + +/** + * @file + * misc parsing utilities + */ + +/** + * Parse str and put in width_ptr and height_ptr the detected values. + * + * @param[in,out] width_ptr pointer to the variable which will contain the detected + * width value + * @param[in,out] height_ptr pointer to the variable which will contain the detected + * height value + * @param[in] str the string to parse: it has to be a string in the format + * width x height or a valid video size abbreviation. + * @return >= 0 on success, a negative error code otherwise + */ +int av_parse_video_size(int *width_ptr, int *height_ptr, const char *str); + +/** + * Parse str and store the detected values in *rate. + * + * @param[in,out] rate pointer to the AVRational which will contain the detected + * frame rate + * @param[in] str the string to parse: it has to be a string in the format + * rate_num / rate_den, a float number or a valid video rate abbreviation + * @return >= 0 on success, a negative error code otherwise + */ +int av_parse_video_rate(AVRational *rate, const char *str); + +/** + * Put the RGBA values that correspond to color_string in rgba_color. + * + * @param color_string a string specifying a color. It can be the name of + * a color (case insensitive match) or a [0x|#]RRGGBB[AA] sequence, + * possibly followed by "@" and a string representing the alpha + * component. + * The alpha component may be a string composed by "0x" followed by an + * hexadecimal number or a decimal number between 0.0 and 1.0, which + * represents the opacity value (0x00/0.0 means completely transparent, + * 0xff/1.0 completely opaque). + * If the alpha component is not specified then 0xff is assumed. + * The string "random" will result in a random color. + * @param slen length of the initial part of color_string containing the + * color. It can be set to -1 if color_string is a null terminated string + * containing nothing else than the color. + * @return >= 0 in case of success, a negative value in case of + * failure (for example if color_string cannot be parsed). + */ +int av_parse_color(uint8_t *rgba_color, const char *color_string, int slen, + void *log_ctx); + +/** + * Parse timestr and return in *time a corresponding number of + * microseconds. + * + * @param timeval puts here the number of microseconds corresponding + * to the string in timestr. If the string represents a duration, it + * is the number of microseconds contained in the time interval. If + * the string is a date, is the number of microseconds since 1st of + * January, 1970 up to the time of the parsed date. If timestr cannot + * be successfully parsed, set *time to INT64_MIN. + + * @param timestr a string representing a date or a duration. + * - If a date the syntax is: + * @code + * [{YYYY-MM-DD|YYYYMMDD}[T|t| ]]{{HH[:MM[:SS[.m...]]]}|{HH[MM[SS[.m...]]]}}[Z] + * now + * @endcode + * If the value is "now" it takes the current time. + * Time is local time unless Z is appended, in which case it is + * interpreted as UTC. + * If the year-month-day part is not specified it takes the current + * year-month-day. + * - If a duration the syntax is: + * @code + * [-]HH[:MM[:SS[.m...]]] + * [-]S+[.m...] + * @endcode + * @param duration flag which tells how to interpret timestr, if not + * zero timestr is interpreted as a duration, otherwise as a date + * @return 0 in case of success, a negative value corresponding to an + * AVERROR code otherwise + */ +int av_parse_time(int64_t *timeval, const char *timestr, int duration); + +/** + * Attempt to find a specific tag in a URL. + * + * syntax: '?tag1=val1&tag2=val2...'. Little URL decoding is done. + * Return 1 if found. + */ +int av_find_info_tag(char *arg, int arg_size, const char *tag1, const char *info); + +/** + * Convert the decomposed UTC time in tm to a time_t value. + */ +time_t av_timegm(struct tm *tm); + +#endif /* AVUTIL_PARSEUTILS_H */ diff -r 3331b30e4ef1 -r 88fde28bbda6 misc/winutils/include/libavutil/pixdesc.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/misc/winutils/include/libavutil/pixdesc.h Sat Nov 03 00:34:35 2012 +0400 @@ -0,0 +1,206 @@ +/* + * pixel format descriptor + * Copyright (c) 2009 Michael Niedermayer + * + * This file is part of Libav. + * + * Libav is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * Libav 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 + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with Libav; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ + +#ifndef AVUTIL_PIXDESC_H +#define AVUTIL_PIXDESC_H + +#include +#include "pixfmt.h" + +typedef struct AVComponentDescriptor{ + uint16_t plane :2; ///< which of the 4 planes contains the component + + /** + * Number of elements between 2 horizontally consecutive pixels minus 1. + * Elements are bits for bitstream formats, bytes otherwise. + */ + uint16_t step_minus1 :3; + + /** + * Number of elements before the component of the first pixel plus 1. + * Elements are bits for bitstream formats, bytes otherwise. + */ + uint16_t offset_plus1 :3; + uint16_t shift :3; ///< number of least significant bits that must be shifted away to get the value + uint16_t depth_minus1 :4; ///< number of bits in the component minus 1 +}AVComponentDescriptor; + +/** + * Descriptor that unambiguously describes how the bits of a pixel are + * stored in the up to 4 data planes of an image. It also stores the + * subsampling factors and number of components. + * + * @note This is separate of the colorspace (RGB, YCbCr, YPbPr, JPEG-style YUV + * and all the YUV variants) AVPixFmtDescriptor just stores how values + * are stored not what these values represent. + */ +typedef struct AVPixFmtDescriptor{ + const char *name; + uint8_t nb_components; ///< The number of components each pixel has, (1-4) + + /** + * Amount to shift the luma width right to find the chroma width. + * For YV12 this is 1 for example. + * chroma_width = -((-luma_width) >> log2_chroma_w) + * The note above is needed to ensure rounding up. + * This value only refers to the chroma components. + */ + uint8_t log2_chroma_w; ///< chroma_width = -((-luma_width )>>log2_chroma_w) + + /** + * Amount to shift the luma height right to find the chroma height. + * For YV12 this is 1 for example. + * chroma_height= -((-luma_height) >> log2_chroma_h) + * The note above is needed to ensure rounding up. + * This value only refers to the chroma components. + */ + uint8_t log2_chroma_h; + uint8_t flags; + + /** + * Parameters that describe how pixels are packed. If the format + * has chroma components, they must be stored in comp[1] and + * comp[2]. + */ + AVComponentDescriptor comp[4]; +}AVPixFmtDescriptor; + +#define PIX_FMT_BE 1 ///< Pixel format is big-endian. +#define PIX_FMT_PAL 2 ///< Pixel format has a palette in data[1], values are indexes in this palette. +#define PIX_FMT_BITSTREAM 4 ///< All values of a component are bit-wise packed end to end. +#define PIX_FMT_HWACCEL 8 ///< Pixel format is an HW accelerated format. +#define PIX_FMT_PLANAR 16 ///< At least one pixel component is not in the first data plane +#define PIX_FMT_RGB 32 ///< The pixel format contains RGB-like data (as opposed to YUV/grayscale) +/** + * The pixel format is "pseudo-paletted". This means that Libav treats it as + * paletted internally, but the palette is generated by the decoder and is not + * stored in the file. + */ +#define PIX_FMT_PSEUDOPAL 64 + +#if FF_API_PIX_FMT_DESC +/** + * The array of all the pixel format descriptors. + */ +extern const AVPixFmtDescriptor av_pix_fmt_descriptors[]; +#endif + +/** + * Read a line from an image, and write the values of the + * pixel format component c to dst. + * + * @param data the array containing the pointers to the planes of the image + * @param linesize the array containing the linesizes of the image + * @param desc the pixel format descriptor for the image + * @param x the horizontal coordinate of the first pixel to read + * @param y the vertical coordinate of the first pixel to read + * @param w the width of the line to read, that is the number of + * values to write to dst + * @param read_pal_component if not zero and the format is a paletted + * format writes the values corresponding to the palette + * component c in data[1] to dst, rather than the palette indexes in + * data[0]. The behavior is undefined if the format is not paletted. + */ +void av_read_image_line(uint16_t *dst, const uint8_t *data[4], const int linesize[4], + const AVPixFmtDescriptor *desc, int x, int y, int c, int w, int read_pal_component); + +/** + * Write the values from src to the pixel format component c of an + * image line. + * + * @param src array containing the values to write + * @param data the array containing the pointers to the planes of the + * image to write into. It is supposed to be zeroed. + * @param linesize the array containing the linesizes of the image + * @param desc the pixel format descriptor for the image + * @param x the horizontal coordinate of the first pixel to write + * @param y the vertical coordinate of the first pixel to write + * @param w the width of the line to write, that is the number of + * values to write to the image line + */ +void av_write_image_line(const uint16_t *src, uint8_t *data[4], const int linesize[4], + const AVPixFmtDescriptor *desc, int x, int y, int c, int w); + +/** + * Return the pixel format corresponding to name. + * + * If there is no pixel format with name name, then looks for a + * pixel format with the name corresponding to the native endian + * format of name. + * For example in a little-endian system, first looks for "gray16", + * then for "gray16le". + * + * Finally if no pixel format has been found, returns PIX_FMT_NONE. + */ +enum AVPixelFormat av_get_pix_fmt(const char *name); + +/** + * Return the short name for a pixel format, NULL in case pix_fmt is + * unknown. + * + * @see av_get_pix_fmt(), av_get_pix_fmt_string() + */ +const char *av_get_pix_fmt_name(enum AVPixelFormat pix_fmt); + +/** + * Print in buf the string corresponding to the pixel format with + * number pix_fmt, or an header if pix_fmt is negative. + * + * @param buf the buffer where to write the string + * @param buf_size the size of buf + * @param pix_fmt the number of the pixel format to print the + * corresponding info string, or a negative value to print the + * corresponding header. + */ +char *av_get_pix_fmt_string (char *buf, int buf_size, enum AVPixelFormat pix_fmt); + +/** + * Return the number of bits per pixel used by the pixel format + * described by pixdesc. + * + * The returned number of bits refers to the number of bits actually + * used for storing the pixel information, that is padding bits are + * not counted. + */ +int av_get_bits_per_pixel(const AVPixFmtDescriptor *pixdesc); + +/** + * @return a pixel format descriptor for provided pixel format or NULL if + * this pixel format is unknown. + */ +const AVPixFmtDescriptor *av_pix_fmt_desc_get(enum AVPixelFormat pix_fmt); + +/** + * Iterate over all pixel format descriptors known to libavutil. + * + * @param prev previous descriptor. NULL to get the first descriptor. + * + * @return next descriptor or NULL after the last descriptor + */ +const AVPixFmtDescriptor *av_pix_fmt_desc_next(const AVPixFmtDescriptor *prev); + +/** + * @return an AVPixelFormat id described by desc, or AV_PIX_FMT_NONE if desc + * is not a valid pointer to a pixel format descriptor. + */ +enum AVPixelFormat av_pix_fmt_desc_get_id(const AVPixFmtDescriptor *desc); + +#endif /* AVUTIL_PIXDESC_H */ diff -r 3331b30e4ef1 -r 88fde28bbda6 misc/winutils/include/libavutil/pixfmt.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/misc/winutils/include/libavutil/pixfmt.h Sat Nov 03 00:34:35 2012 +0400 @@ -0,0 +1,240 @@ +/* + * copyright (c) 2006 Michael Niedermayer + * + * This file is part of Libav. + * + * Libav is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * Libav 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 + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with Libav; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ + +#ifndef AVUTIL_PIXFMT_H +#define AVUTIL_PIXFMT_H + +/** + * @file + * pixel format definitions + * + */ + +#include "libavutil/avconfig.h" +#include "libavutil/version.h" + +/** + * Pixel format. + * + * @note + * PIX_FMT_RGB32 is handled in an endian-specific manner. An RGBA + * color is put together as: + * (A << 24) | (R << 16) | (G << 8) | B + * This is stored as BGRA on little-endian CPU architectures and ARGB on + * big-endian CPUs. + * + * @par + * When the pixel format is palettized RGB (PIX_FMT_PAL8), the palettized + * image data is stored in AVFrame.data[0]. The palette is transported in + * AVFrame.data[1], is 1024 bytes long (256 4-byte entries) and is + * formatted the same as in PIX_FMT_RGB32 described above (i.e., it is + * also endian-specific). Note also that the individual RGB palette + * components stored in AVFrame.data[1] should be in the range 0..255. + * This is important as many custom PAL8 video codecs that were designed + * to run on the IBM VGA graphics adapter use 6-bit palette components. + * + * @par + * For all the 8bit per pixel formats, an RGB32 palette is in data[1] like + * for pal8. This palette is filled in automatically by the function + * allocating the picture. + * + * @note + * make sure that all newly added big endian formats have pix_fmt&1==1 + * and that all newly added little endian formats have pix_fmt&1==0 + * this allows simpler detection of big vs little endian. + */ +enum AVPixelFormat { + AV_PIX_FMT_NONE = -1, + AV_PIX_FMT_YUV420P, ///< planar YUV 4:2:0, 12bpp, (1 Cr & Cb sample per 2x2 Y samples) + AV_PIX_FMT_YUYV422, ///< packed YUV 4:2:2, 16bpp, Y0 Cb Y1 Cr + AV_PIX_FMT_RGB24, ///< packed RGB 8:8:8, 24bpp, RGBRGB... + AV_PIX_FMT_BGR24, ///< packed RGB 8:8:8, 24bpp, BGRBGR... + AV_PIX_FMT_YUV422P, ///< planar YUV 4:2:2, 16bpp, (1 Cr & Cb sample per 2x1 Y samples) + AV_PIX_FMT_YUV444P, ///< planar YUV 4:4:4, 24bpp, (1 Cr & Cb sample per 1x1 Y samples) + AV_PIX_FMT_YUV410P, ///< planar YUV 4:1:0, 9bpp, (1 Cr & Cb sample per 4x4 Y samples) + AV_PIX_FMT_YUV411P, ///< planar YUV 4:1:1, 12bpp, (1 Cr & Cb sample per 4x1 Y samples) + AV_PIX_FMT_GRAY8, ///< Y , 8bpp + AV_PIX_FMT_MONOWHITE, ///< Y , 1bpp, 0 is white, 1 is black, in each byte pixels are ordered from the msb to the lsb + AV_PIX_FMT_MONOBLACK, ///< Y , 1bpp, 0 is black, 1 is white, in each byte pixels are ordered from the msb to the lsb + AV_PIX_FMT_PAL8, ///< 8 bit with PIX_FMT_RGB32 palette + AV_PIX_FMT_YUVJ420P, ///< planar YUV 4:2:0, 12bpp, full scale (JPEG), deprecated in favor of PIX_FMT_YUV420P and setting color_range + AV_PIX_FMT_YUVJ422P, ///< planar YUV 4:2:2, 16bpp, full scale (JPEG), deprecated in favor of PIX_FMT_YUV422P and setting color_range + AV_PIX_FMT_YUVJ444P, ///< planar YUV 4:4:4, 24bpp, full scale (JPEG), deprecated in favor of PIX_FMT_YUV444P and setting color_range + AV_PIX_FMT_XVMC_MPEG2_MC,///< XVideo Motion Acceleration via common packet passing + AV_PIX_FMT_XVMC_MPEG2_IDCT, + AV_PIX_FMT_UYVY422, ///< packed YUV 4:2:2, 16bpp, Cb Y0 Cr Y1 + AV_PIX_FMT_UYYVYY411, ///< packed YUV 4:1:1, 12bpp, Cb Y0 Y1 Cr Y2 Y3 + AV_PIX_FMT_BGR8, ///< packed RGB 3:3:2, 8bpp, (msb)2B 3G 3R(lsb) + AV_PIX_FMT_BGR4, ///< packed RGB 1:2:1 bitstream, 4bpp, (msb)1B 2G 1R(lsb), a byte contains two pixels, the first pixel in the byte is the one composed by the 4 msb bits + AV_PIX_FMT_BGR4_BYTE, ///< packed RGB 1:2:1, 8bpp, (msb)1B 2G 1R(lsb) + AV_PIX_FMT_RGB8, ///< packed RGB 3:3:2, 8bpp, (msb)2R 3G 3B(lsb) + AV_PIX_FMT_RGB4, ///< packed RGB 1:2:1 bitstream, 4bpp, (msb)1R 2G 1B(lsb), a byte contains two pixels, the first pixel in the byte is the one composed by the 4 msb bits + AV_PIX_FMT_RGB4_BYTE, ///< packed RGB 1:2:1, 8bpp, (msb)1R 2G 1B(lsb) + AV_PIX_FMT_NV12, ///< planar YUV 4:2:0, 12bpp, 1 plane for Y and 1 plane for the UV components, which are interleaved (first byte U and the following byte V) + AV_PIX_FMT_NV21, ///< as above, but U and V bytes are swapped + + AV_PIX_FMT_ARGB, ///< packed ARGB 8:8:8:8, 32bpp, ARGBARGB... + AV_PIX_FMT_RGBA, ///< packed RGBA 8:8:8:8, 32bpp, RGBARGBA... + AV_PIX_FMT_ABGR, ///< packed ABGR 8:8:8:8, 32bpp, ABGRABGR... + AV_PIX_FMT_BGRA, ///< packed BGRA 8:8:8:8, 32bpp, BGRABGRA... + + AV_PIX_FMT_GRAY16BE, ///< Y , 16bpp, big-endian + AV_PIX_FMT_GRAY16LE, ///< Y , 16bpp, little-endian + AV_PIX_FMT_YUV440P, ///< planar YUV 4:4:0 (1 Cr & Cb sample per 1x2 Y samples) + AV_PIX_FMT_YUVJ440P, ///< planar YUV 4:4:0 full scale (JPEG), deprecated in favor of PIX_FMT_YUV440P and setting color_range + AV_PIX_FMT_YUVA420P, ///< planar YUV 4:2:0, 20bpp, (1 Cr & Cb sample per 2x2 Y & A samples) + AV_PIX_FMT_VDPAU_H264,///< H.264 HW decoding with VDPAU, data[0] contains a vdpau_render_state struct which contains the bitstream of the slices as well as various fields extracted from headers + AV_PIX_FMT_VDPAU_MPEG1,///< MPEG-1 HW decoding with VDPAU, data[0] contains a vdpau_render_state struct which contains the bitstream of the slices as well as various fields extracted from headers + AV_PIX_FMT_VDPAU_MPEG2,///< MPEG-2 HW decoding with VDPAU, data[0] contains a vdpau_render_state struct which contains the bitstream of the slices as well as various fields extracted from headers + AV_PIX_FMT_VDPAU_WMV3,///< WMV3 HW decoding with VDPAU, data[0] contains a vdpau_render_state struct which contains the bitstream of the slices as well as various fields extracted from headers + AV_PIX_FMT_VDPAU_VC1, ///< VC-1 HW decoding with VDPAU, data[0] contains a vdpau_render_state struct which contains the bitstream of the slices as well as various fields extracted from headers + AV_PIX_FMT_RGB48BE, ///< packed RGB 16:16:16, 48bpp, 16R, 16G, 16B, the 2-byte value for each R/G/B component is stored as big-endian + AV_PIX_FMT_RGB48LE, ///< packed RGB 16:16:16, 48bpp, 16R, 16G, 16B, the 2-byte value for each R/G/B component is stored as little-endian + + AV_PIX_FMT_RGB565BE, ///< packed RGB 5:6:5, 16bpp, (msb) 5R 6G 5B(lsb), big-endian + AV_PIX_FMT_RGB565LE, ///< packed RGB 5:6:5, 16bpp, (msb) 5R 6G 5B(lsb), little-endian + AV_PIX_FMT_RGB555BE, ///< packed RGB 5:5:5, 16bpp, (msb)1A 5R 5G 5B(lsb), big-endian, most significant bit to 0 + AV_PIX_FMT_RGB555LE, ///< packed RGB 5:5:5, 16bpp, (msb)1A 5R 5G 5B(lsb), little-endian, most significant bit to 0 + + AV_PIX_FMT_BGR565BE, ///< packed BGR 5:6:5, 16bpp, (msb) 5B 6G 5R(lsb), big-endian + AV_PIX_FMT_BGR565LE, ///< packed BGR 5:6:5, 16bpp, (msb) 5B 6G 5R(lsb), little-endian + AV_PIX_FMT_BGR555BE, ///< packed BGR 5:5:5, 16bpp, (msb)1A 5B 5G 5R(lsb), big-endian, most significant bit to 1 + AV_PIX_FMT_BGR555LE, ///< packed BGR 5:5:5, 16bpp, (msb)1A 5B 5G 5R(lsb), little-endian, most significant bit to 1 + + AV_PIX_FMT_VAAPI_MOCO, ///< HW acceleration through VA API at motion compensation entry-point, Picture.data[3] contains a vaapi_render_state struct which contains macroblocks as well as various fields extracted from headers + AV_PIX_FMT_VAAPI_IDCT, ///< HW acceleration through VA API at IDCT entry-point, Picture.data[3] contains a vaapi_render_state struct which contains fields extracted from headers + AV_PIX_FMT_VAAPI_VLD, ///< HW decoding through VA API, Picture.data[3] contains a vaapi_render_state struct which contains the bitstream of the slices as well as various fields extracted from headers + + AV_PIX_FMT_YUV420P16LE, ///< planar YUV 4:2:0, 24bpp, (1 Cr & Cb sample per 2x2 Y samples), little-endian + AV_PIX_FMT_YUV420P16BE, ///< planar YUV 4:2:0, 24bpp, (1 Cr & Cb sample per 2x2 Y samples), big-endian + AV_PIX_FMT_YUV422P16LE, ///< planar YUV 4:2:2, 32bpp, (1 Cr & Cb sample per 2x1 Y samples), little-endian + AV_PIX_FMT_YUV422P16BE, ///< planar YUV 4:2:2, 32bpp, (1 Cr & Cb sample per 2x1 Y samples), big-endian + AV_PIX_FMT_YUV444P16LE, ///< planar YUV 4:4:4, 48bpp, (1 Cr & Cb sample per 1x1 Y samples), little-endian + AV_PIX_FMT_YUV444P16BE, ///< planar YUV 4:4:4, 48bpp, (1 Cr & Cb sample per 1x1 Y samples), big-endian + AV_PIX_FMT_VDPAU_MPEG4, ///< MPEG4 HW decoding with VDPAU, data[0] contains a vdpau_render_state struct which contains the bitstream of the slices as well as various fields extracted from headers + AV_PIX_FMT_DXVA2_VLD, ///< HW decoding through DXVA2, Picture.data[3] contains a LPDIRECT3DSURFACE9 pointer + + AV_PIX_FMT_RGB444LE, ///< packed RGB 4:4:4, 16bpp, (msb)4A 4R 4G 4B(lsb), little-endian, most significant bits to 0 + AV_PIX_FMT_RGB444BE, ///< packed RGB 4:4:4, 16bpp, (msb)4A 4R 4G 4B(lsb), big-endian, most significant bits to 0 + AV_PIX_FMT_BGR444LE, ///< packed BGR 4:4:4, 16bpp, (msb)4A 4B 4G 4R(lsb), little-endian, most significant bits to 1 + AV_PIX_FMT_BGR444BE, ///< packed BGR 4:4:4, 16bpp, (msb)4A 4B 4G 4R(lsb), big-endian, most significant bits to 1 + AV_PIX_FMT_Y400A, ///< 8bit gray, 8bit alpha + AV_PIX_FMT_BGR48BE, ///< packed RGB 16:16:16, 48bpp, 16B, 16G, 16R, the 2-byte value for each R/G/B component is stored as big-endian + AV_PIX_FMT_BGR48LE, ///< packed RGB 16:16:16, 48bpp, 16B, 16G, 16R, the 2-byte value for each R/G/B component is stored as little-endian + AV_PIX_FMT_YUV420P9BE, ///< planar YUV 4:2:0, 13.5bpp, (1 Cr & Cb sample per 2x2 Y samples), big-endian + AV_PIX_FMT_YUV420P9LE, ///< planar YUV 4:2:0, 13.5bpp, (1 Cr & Cb sample per 2x2 Y samples), little-endian + AV_PIX_FMT_YUV420P10BE,///< planar YUV 4:2:0, 15bpp, (1 Cr & Cb sample per 2x2 Y samples), big-endian + AV_PIX_FMT_YUV420P10LE,///< planar YUV 4:2:0, 15bpp, (1 Cr & Cb sample per 2x2 Y samples), little-endian + AV_PIX_FMT_YUV422P10BE,///< planar YUV 4:2:2, 20bpp, (1 Cr & Cb sample per 2x1 Y samples), big-endian + AV_PIX_FMT_YUV422P10LE,///< planar YUV 4:2:2, 20bpp, (1 Cr & Cb sample per 2x1 Y samples), little-endian + AV_PIX_FMT_YUV444P9BE, ///< planar YUV 4:4:4, 27bpp, (1 Cr & Cb sample per 1x1 Y samples), big-endian + AV_PIX_FMT_YUV444P9LE, ///< planar YUV 4:4:4, 27bpp, (1 Cr & Cb sample per 1x1 Y samples), little-endian + AV_PIX_FMT_YUV444P10BE,///< planar YUV 4:4:4, 30bpp, (1 Cr & Cb sample per 1x1 Y samples), big-endian + AV_PIX_FMT_YUV444P10LE,///< planar YUV 4:4:4, 30bpp, (1 Cr & Cb sample per 1x1 Y samples), little-endian + AV_PIX_FMT_YUV422P9BE, ///< planar YUV 4:2:2, 18bpp, (1 Cr & Cb sample per 2x1 Y samples), big-endian + AV_PIX_FMT_YUV422P9LE, ///< planar YUV 4:2:2, 18bpp, (1 Cr & Cb sample per 2x1 Y samples), little-endian + AV_PIX_FMT_VDA_VLD, ///< hardware decoding through VDA + AV_PIX_FMT_GBRP, ///< planar GBR 4:4:4 24bpp + AV_PIX_FMT_GBRP9BE, ///< planar GBR 4:4:4 27bpp, big endian + AV_PIX_FMT_GBRP9LE, ///< planar GBR 4:4:4 27bpp, little endian + AV_PIX_FMT_GBRP10BE, ///< planar GBR 4:4:4 30bpp, big endian + AV_PIX_FMT_GBRP10LE, ///< planar GBR 4:4:4 30bpp, little endian + AV_PIX_FMT_GBRP16BE, ///< planar GBR 4:4:4 48bpp, big endian + AV_PIX_FMT_GBRP16LE, ///< planar GBR 4:4:4 48bpp, little endian + AV_PIX_FMT_YUVA422P, ///< planar YUV 4:2:2 24bpp, (1 Cr & Cb sample per 2x1 Y & A samples) + AV_PIX_FMT_YUVA444P, ///< planar YUV 4:4:4 32bpp, (1 Cr & Cb sample per 1x1 Y & A samples) + AV_PIX_FMT_NB, ///< number of pixel formats, DO NOT USE THIS if you want to link with shared libav* because the number of formats might differ between versions + +#if FF_API_PIX_FMT +#include "old_pix_fmts.h" +#endif +}; + +#if AV_HAVE_BIGENDIAN +# define AV_PIX_FMT_NE(be, le) AV_PIX_FMT_##be +#else +# define AV_PIX_FMT_NE(be, le) AV_PIX_FMT_##le +#endif + +#define AV_PIX_FMT_RGB32 AV_PIX_FMT_NE(ARGB, BGRA) +#define AV_PIX_FMT_RGB32_1 AV_PIX_FMT_NE(RGBA, ABGR) +#define AV_PIX_FMT_BGR32 AV_PIX_FMT_NE(ABGR, RGBA) +#define AV_PIX_FMT_BGR32_1 AV_PIX_FMT_NE(BGRA, ARGB) + +#define AV_PIX_FMT_GRAY16 AV_PIX_FMT_NE(GRAY16BE, GRAY16LE) +#define AV_PIX_FMT_RGB48 AV_PIX_FMT_NE(RGB48BE, RGB48LE) +#define AV_PIX_FMT_RGB565 AV_PIX_FMT_NE(RGB565BE, RGB565LE) +#define AV_PIX_FMT_RGB555 AV_PIX_FMT_NE(RGB555BE, RGB555LE) +#define AV_PIX_FMT_RGB444 AV_PIX_FMT_NE(RGB444BE, RGB444LE) +#define AV_PIX_FMT_BGR48 AV_PIX_FMT_NE(BGR48BE, BGR48LE) +#define AV_PIX_FMT_BGR565 AV_PIX_FMT_NE(BGR565BE, BGR565LE) +#define AV_PIX_FMT_BGR555 AV_PIX_FMT_NE(BGR555BE, BGR555LE) +#define AV_PIX_FMT_BGR444 AV_PIX_FMT_NE(BGR444BE, BGR444LE) + +#define AV_PIX_FMT_YUV420P9 AV_PIX_FMT_NE(YUV420P9BE , YUV420P9LE) +#define AV_PIX_FMT_YUV422P9 AV_PIX_FMT_NE(YUV422P9BE , YUV422P9LE) +#define AV_PIX_FMT_YUV444P9 AV_PIX_FMT_NE(YUV444P9BE , YUV444P9LE) +#define AV_PIX_FMT_YUV420P10 AV_PIX_FMT_NE(YUV420P10BE, YUV420P10LE) +#define AV_PIX_FMT_YUV422P10 AV_PIX_FMT_NE(YUV422P10BE, YUV422P10LE) +#define AV_PIX_FMT_YUV444P10 AV_PIX_FMT_NE(YUV444P10BE, YUV444P10LE) +#define AV_PIX_FMT_YUV420P16 AV_PIX_FMT_NE(YUV420P16BE, YUV420P16LE) +#define AV_PIX_FMT_YUV422P16 AV_PIX_FMT_NE(YUV422P16BE, YUV422P16LE) +#define AV_PIX_FMT_YUV444P16 AV_PIX_FMT_NE(YUV444P16BE, YUV444P16LE) + +#define AV_PIX_FMT_GBRP9 AV_PIX_FMT_NE(GBRP9BE , GBRP9LE) +#define AV_PIX_FMT_GBRP10 AV_PIX_FMT_NE(GBRP10BE, GBRP10LE) +#define AV_PIX_FMT_GBRP16 AV_PIX_FMT_NE(GBRP16BE, GBRP16LE) + +#if FF_API_PIX_FMT +#define PixelFormat AVPixelFormat + +#define PIX_FMT_NE(be, le) AV_PIX_FMT_NE(be, le) + +#define PIX_FMT_RGB32 AV_PIX_FMT_RGB32 +#define PIX_FMT_RGB32_1 AV_PIX_FMT_RGB32_1 +#define PIX_FMT_BGR32 AV_PIX_FMT_BGR32 +#define PIX_FMT_BGR32_1 AV_PIX_FMT_BGR32_1 + +#define PIX_FMT_GRAY16 AV_PIX_FMT_GRAY16 +#define PIX_FMT_RGB48 AV_PIX_FMT_RGB48 +#define PIX_FMT_RGB565 AV_PIX_FMT_RGB565 +#define PIX_FMT_RGB555 AV_PIX_FMT_RGB555 +#define PIX_FMT_RGB444 AV_PIX_FMT_RGB444 +#define PIX_FMT_BGR48 AV_PIX_FMT_BGR48 +#define PIX_FMT_BGR565 AV_PIX_FMT_BGR565 +#define PIX_FMT_BGR555 AV_PIX_FMT_BGR555 +#define PIX_FMT_BGR444 AV_PIX_FMT_BGR444 + +#define PIX_FMT_YUV420P9 AV_PIX_FMT_YUV420P9 +#define PIX_FMT_YUV422P9 AV_PIX_FMT_YUV422P9 +#define PIX_FMT_YUV444P9 AV_PIX_FMT_YUV444P9 +#define PIX_FMT_YUV420P10 AV_PIX_FMT_YUV420P10 +#define PIX_FMT_YUV422P10 AV_PIX_FMT_YUV422P10 +#define PIX_FMT_YUV444P10 AV_PIX_FMT_YUV444P10 +#define PIX_FMT_YUV420P16 AV_PIX_FMT_YUV420P16 +#define PIX_FMT_YUV422P16 AV_PIX_FMT_YUV422P16 +#define PIX_FMT_YUV444P16 AV_PIX_FMT_YUV444P16 + +#define PIX_FMT_GBRP9 AV_PIX_FMT_GBRP9 +#define PIX_FMT_GBRP10 AV_PIX_FMT_GBRP10 +#define PIX_FMT_GBRP16 AV_PIX_FMT_GBRP16 +#endif + +#endif /* AVUTIL_PIXFMT_H */ diff -r 3331b30e4ef1 -r 88fde28bbda6 misc/winutils/include/libavutil/random_seed.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/misc/winutils/include/libavutil/random_seed.h Sat Nov 03 00:34:35 2012 +0400 @@ -0,0 +1,44 @@ +/* + * Copyright (c) 2009 Baptiste Coudurier + * + * This file is part of Libav. + * + * Libav is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * Libav 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 + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with Libav; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ + +#ifndef AVUTIL_RANDOM_SEED_H +#define AVUTIL_RANDOM_SEED_H + +#include +/** + * @addtogroup lavu_crypto + * @{ + */ + +/** + * Get random data. + * + * This function can be called repeatedly to generate more random bits + * as needed. It is generally quite slow, and usually used to seed a + * PRNG. As it uses /dev/urandom and /dev/random, the quality of the + * returned random data depends on the platform. + */ +uint32_t av_get_random_seed(void); + +/** + * @} + */ + +#endif /* AVUTIL_RANDOM_SEED_H */ diff -r 3331b30e4ef1 -r 88fde28bbda6 misc/winutils/include/libavutil/rational.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/misc/winutils/include/libavutil/rational.h Sat Nov 03 00:34:35 2012 +0400 @@ -0,0 +1,155 @@ +/* + * rational numbers + * Copyright (c) 2003 Michael Niedermayer + * + * This file is part of Libav. + * + * Libav is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * Libav 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 + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with Libav; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ + +/** + * @file + * rational numbers + * @author Michael Niedermayer + */ + +#ifndef AVUTIL_RATIONAL_H +#define AVUTIL_RATIONAL_H + +#include +#include +#include "attributes.h" + +/** + * @addtogroup lavu_math + * @{ + */ + +/** + * rational number numerator/denominator + */ +typedef struct AVRational{ + int num; ///< numerator + int den; ///< denominator +} AVRational; + +/** + * Compare two rationals. + * @param a first rational + * @param b second rational + * @return 0 if a==b, 1 if a>b, -1 if a>63)|1; + else if(b.den && a.den) return 0; + else if(a.num && b.num) return (a.num>>31) - (b.num>>31); + else return INT_MIN; +} + +/** + * Convert rational to double. + * @param a rational to convert + * @return (double) a + */ +static inline double av_q2d(AVRational a){ + return a.num / (double) a.den; +} + +/** + * Reduce a fraction. + * This is useful for framerate calculations. + * @param dst_num destination numerator + * @param dst_den destination denominator + * @param num source numerator + * @param den source denominator + * @param max the maximum allowed for dst_num & dst_den + * @return 1 if exact, 0 otherwise + */ +int av_reduce(int *dst_num, int *dst_den, int64_t num, int64_t den, int64_t max); + +/** + * Multiply two rationals. + * @param b first rational + * @param c second rational + * @return b*c + */ +AVRational av_mul_q(AVRational b, AVRational c) av_const; + +/** + * Divide one rational by another. + * @param b first rational + * @param c second rational + * @return b/c + */ +AVRational av_div_q(AVRational b, AVRational c) av_const; + +/** + * Add two rationals. + * @param b first rational + * @param c second rational + * @return b+c + */ +AVRational av_add_q(AVRational b, AVRational c) av_const; + +/** + * Subtract one rational from another. + * @param b first rational + * @param c second rational + * @return b-c + */ +AVRational av_sub_q(AVRational b, AVRational c) av_const; + +/** + * Invert a rational. + * @param q value + * @return 1 / q + */ +static av_always_inline AVRational av_inv_q(AVRational q) +{ + AVRational r = { q.den, q.num }; + return r; +} + +/** + * Convert a double precision floating point number to a rational. + * inf is expressed as {1,0} or {-1,0} depending on the sign. + * + * @param d double to convert + * @param max the maximum allowed numerator and denominator + * @return (AVRational) d + */ +AVRational av_d2q(double d, int max) av_const; + +/** + * @return 1 if q1 is nearer to q than q2, -1 if q2 is nearer + * than q1, 0 if they have the same distance. + */ +int av_nearer_q(AVRational q, AVRational q1, AVRational q2); + +/** + * Find the nearest value in q_list to q. + * @param q_list an array of rationals terminated by {0, 0} + * @return the index of the nearest value found in the array + */ +int av_find_nearest_q_idx(AVRational q, const AVRational* q_list); + +/** + * @} + */ + +#endif /* AVUTIL_RATIONAL_H */ diff -r 3331b30e4ef1 -r 88fde28bbda6 misc/winutils/include/libavutil/samplefmt.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/misc/winutils/include/libavutil/samplefmt.h Sat Nov 03 00:34:35 2012 +0400 @@ -0,0 +1,228 @@ +/* + * This file is part of Libav. + * + * Libav is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * Libav 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 + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with Libav; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ + +#ifndef AVUTIL_SAMPLEFMT_H +#define AVUTIL_SAMPLEFMT_H + +#include + +#include "avutil.h" +#include "attributes.h" + +/** + * Audio Sample Formats + * + * @par + * The data described by the sample format is always in native-endian order. + * Sample values can be expressed by native C types, hence the lack of a signed + * 24-bit sample format even though it is a common raw audio data format. + * + * @par + * The floating-point formats are based on full volume being in the range + * [-1.0, 1.0]. Any values outside this range are beyond full volume level. + * + * @par + * The data layout as used in av_samples_fill_arrays() and elsewhere in Libav + * (such as AVFrame in libavcodec) is as follows: + * + * For planar sample formats, each audio channel is in a separate data plane, + * and linesize is the buffer size, in bytes, for a single plane. All data + * planes must be the same size. For packed sample formats, only the first data + * plane is used, and samples for each channel are interleaved. In this case, + * linesize is the buffer size, in bytes, for the 1 plane. + */ +enum AVSampleFormat { + AV_SAMPLE_FMT_NONE = -1, + AV_SAMPLE_FMT_U8, ///< unsigned 8 bits + AV_SAMPLE_FMT_S16, ///< signed 16 bits + AV_SAMPLE_FMT_S32, ///< signed 32 bits + AV_SAMPLE_FMT_FLT, ///< float + AV_SAMPLE_FMT_DBL, ///< double + + AV_SAMPLE_FMT_U8P, ///< unsigned 8 bits, planar + AV_SAMPLE_FMT_S16P, ///< signed 16 bits, planar + AV_SAMPLE_FMT_S32P, ///< signed 32 bits, planar + AV_SAMPLE_FMT_FLTP, ///< float, planar + AV_SAMPLE_FMT_DBLP, ///< double, planar + + AV_SAMPLE_FMT_NB ///< Number of sample formats. DO NOT USE if linking dynamically +}; + +/** + * Return the name of sample_fmt, or NULL if sample_fmt is not + * recognized. + */ +const char *av_get_sample_fmt_name(enum AVSampleFormat sample_fmt); + +/** + * Return a sample format corresponding to name, or AV_SAMPLE_FMT_NONE + * on error. + */ +enum AVSampleFormat av_get_sample_fmt(const char *name); + +/** + * Get the packed alternative form of the given sample format. + * + * If the passed sample_fmt is already in packed format, the format returned is + * the same as the input. + * + * @return the packed alternative form of the given sample format or + AV_SAMPLE_FMT_NONE on error. + */ +enum AVSampleFormat av_get_packed_sample_fmt(enum AVSampleFormat sample_fmt); + +/** + * Get the planar alternative form of the given sample format. + * + * If the passed sample_fmt is already in planar format, the format returned is + * the same as the input. + * + * @return the planar alternative form of the given sample format or + AV_SAMPLE_FMT_NONE on error. + */ +enum AVSampleFormat av_get_planar_sample_fmt(enum AVSampleFormat sample_fmt); + +/** + * Generate a string corresponding to the sample format with + * sample_fmt, or a header if sample_fmt is negative. + * + * @param buf the buffer where to write the string + * @param buf_size the size of buf + * @param sample_fmt the number of the sample format to print the + * corresponding info string, or a negative value to print the + * corresponding header. + * @return the pointer to the filled buffer or NULL if sample_fmt is + * unknown or in case of other errors + */ +char *av_get_sample_fmt_string(char *buf, int buf_size, enum AVSampleFormat sample_fmt); + +#if FF_API_GET_BITS_PER_SAMPLE_FMT +/** + * @deprecated Use av_get_bytes_per_sample() instead. + */ +attribute_deprecated +int av_get_bits_per_sample_fmt(enum AVSampleFormat sample_fmt); +#endif + +/** + * Return number of bytes per sample. + * + * @param sample_fmt the sample format + * @return number of bytes per sample or zero if unknown for the given + * sample format + */ +int av_get_bytes_per_sample(enum AVSampleFormat sample_fmt); + +/** + * Check if the sample format is planar. + * + * @param sample_fmt the sample format to inspect + * @return 1 if the sample format is planar, 0 if it is interleaved + */ +int av_sample_fmt_is_planar(enum AVSampleFormat sample_fmt); + +/** + * Get the required buffer size for the given audio parameters. + * + * @param[out] linesize calculated linesize, may be NULL + * @param nb_channels the number of channels + * @param nb_samples the number of samples in a single channel + * @param sample_fmt the sample format + * @param align buffer size alignment (0 = default, 1 = no alignment) + * @return required buffer size, or negative error code on failure + */ +int av_samples_get_buffer_size(int *linesize, int nb_channels, int nb_samples, + enum AVSampleFormat sample_fmt, int align); + +/** + * Fill channel data pointers and linesize for samples with sample + * format sample_fmt. + * + * The pointers array is filled with the pointers to the samples data: + * for planar, set the start point of each channel's data within the buffer, + * for packed, set the start point of the entire buffer only. + * + * The linesize array is filled with the aligned size of each channel's data + * buffer for planar layout, or the aligned size of the buffer for all channels + * for packed layout. + * + * @see enum AVSampleFormat + * The documentation for AVSampleFormat describes the data layout. + * + * @param[out] audio_data array to be filled with the pointer for each channel + * @param[out] linesize calculated linesize, may be NULL + * @param buf the pointer to a buffer containing the samples + * @param nb_channels the number of channels + * @param nb_samples the number of samples in a single channel + * @param sample_fmt the sample format + * @param align buffer size alignment (0 = default, 1 = no alignment) + * @return 0 on success or a negative error code on failure + */ +int av_samples_fill_arrays(uint8_t **audio_data, int *linesize, + const uint8_t *buf, + int nb_channels, int nb_samples, + enum AVSampleFormat sample_fmt, int align); + +/** + * Allocate a samples buffer for nb_samples samples, and fill data pointers and + * linesize accordingly. + * The allocated samples buffer can be freed by using av_freep(&audio_data[0]) + * Allocated data will be initialized to silence. + * + * @see enum AVSampleFormat + * The documentation for AVSampleFormat describes the data layout. + * + * @param[out] audio_data array to be filled with the pointer for each channel + * @param[out] linesize aligned size for audio buffer(s), may be NULL + * @param nb_channels number of audio channels + * @param nb_samples number of samples per channel + * @param align buffer size alignment (0 = default, 1 = no alignment) + * @return 0 on success or a negative error code on failure + * @see av_samples_fill_arrays() + */ +int av_samples_alloc(uint8_t **audio_data, int *linesize, int nb_channels, + int nb_samples, enum AVSampleFormat sample_fmt, int align); + +/** + * Copy samples from src to dst. + * + * @param dst destination array of pointers to data planes + * @param src source array of pointers to data planes + * @param dst_offset offset in samples at which the data will be written to dst + * @param src_offset offset in samples at which the data will be read from src + * @param nb_samples number of samples to be copied + * @param nb_channels number of audio channels + * @param sample_fmt audio sample format + */ +int av_samples_copy(uint8_t **dst, uint8_t * const *src, int dst_offset, + int src_offset, int nb_samples, int nb_channels, + enum AVSampleFormat sample_fmt); + +/** + * Fill an audio buffer with silence. + * + * @param audio_data array of pointers to data planes + * @param offset offset in samples at which to start filling + * @param nb_samples number of samples to fill + * @param nb_channels number of audio channels + * @param sample_fmt audio sample format + */ +int av_samples_set_silence(uint8_t **audio_data, int offset, int nb_samples, + int nb_channels, enum AVSampleFormat sample_fmt); + +#endif /* AVUTIL_SAMPLEFMT_H */ diff -r 3331b30e4ef1 -r 88fde28bbda6 misc/winutils/include/libavutil/sha.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/misc/winutils/include/libavutil/sha.h Sat Nov 03 00:34:35 2012 +0400 @@ -0,0 +1,76 @@ +/* + * Copyright (C) 2007 Michael Niedermayer + * + * This file is part of Libav. + * + * Libav is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * Libav 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 + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with Libav; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ + +#ifndef AVUTIL_SHA_H +#define AVUTIL_SHA_H + +#include + +#include "attributes.h" +#include "version.h" + +/** + * @defgroup lavu_sha SHA + * @ingroup lavu_crypto + * @{ + */ + +#if FF_API_CONTEXT_SIZE +extern attribute_deprecated const int av_sha_size; +#endif + +struct AVSHA; + +/** + * Allocate an AVSHA context. + */ +struct AVSHA *av_sha_alloc(void); + +/** + * Initialize SHA-1 or SHA-2 hashing. + * + * @param context pointer to the function context (of size av_sha_size) + * @param bits number of bits in digest (SHA-1 - 160 bits, SHA-2 224 or 256 bits) + * @return zero if initialization succeeded, -1 otherwise + */ +int av_sha_init(struct AVSHA* context, int bits); + +/** + * Update hash value. + * + * @param context hash function context + * @param data input data to update hash with + * @param len input data length + */ +void av_sha_update(struct AVSHA* context, const uint8_t* data, unsigned int len); + +/** + * Finish hashing and output digest value. + * + * @param context hash function context + * @param digest buffer where output digest value is stored + */ +void av_sha_final(struct AVSHA* context, uint8_t *digest); + +/** + * @} + */ + +#endif /* AVUTIL_SHA_H */ diff -r 3331b30e4ef1 -r 88fde28bbda6 misc/winutils/include/libavutil/time.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/misc/winutils/include/libavutil/time.h Sat Nov 03 00:34:35 2012 +0400 @@ -0,0 +1,39 @@ +/* + * This file is part of Libav. + * + * Libav is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * Libav 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 + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with Libav; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ + +#ifndef AVUTIL_TIME_H +#define AVUTIL_TIME_H + +#include + +/** + * Get the current time in microseconds. + */ +int64_t av_gettime(void); + +/** + * Sleep for a period of time. Although the duration is expressed in + * microseconds, the actual delay may be rounded to the precision of the + * system timer. + * + * @param usec Number of microseconds to sleep. + * @return zero on success or (negative) error code. + */ +int av_usleep(unsigned usec); + +#endif /* AVUTIL_TIME_H */ diff -r 3331b30e4ef1 -r 88fde28bbda6 misc/winutils/include/libavutil/version.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/misc/winutils/include/libavutil/version.h Sat Nov 03 00:34:35 2012 +0400 @@ -0,0 +1,93 @@ +/* + * This file is part of Libav. + * + * Libav is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * Libav 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 + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with Libav; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ + +#ifndef AVUTIL_VERSION_H +#define AVUTIL_VERSION_H + +#include "avutil.h" + +/** + * @file + * @ingroup lavu + * Libavutil version macros + */ + +/** + * @defgroup lavu_ver Version and Build diagnostics + * + * Macros and function useful to check at compiletime and at runtime + * which version of libavutil is in use. + * + * @{ + */ + +#define LIBAVUTIL_VERSION_MAJOR 51 +#define LIBAVUTIL_VERSION_MINOR 45 +#define LIBAVUTIL_VERSION_MICRO 0 + +#define LIBAVUTIL_VERSION_INT AV_VERSION_INT(LIBAVUTIL_VERSION_MAJOR, \ + LIBAVUTIL_VERSION_MINOR, \ + LIBAVUTIL_VERSION_MICRO) +#define LIBAVUTIL_VERSION AV_VERSION(LIBAVUTIL_VERSION_MAJOR, \ + LIBAVUTIL_VERSION_MINOR, \ + LIBAVUTIL_VERSION_MICRO) +#define LIBAVUTIL_BUILD LIBAVUTIL_VERSION_INT + +#define LIBAVUTIL_IDENT "Lavu" AV_STRINGIFY(LIBAVUTIL_VERSION) + +/** + * @} + * + * @defgroup depr_guards Deprecation guards + * FF_API_* defines may be placed below to indicate public API that will be + * dropped at a future version bump. The defines themselves are not part of + * the public API and may change, break or disappear at any time. + * + * @{ + */ + +#ifndef FF_API_GET_BITS_PER_SAMPLE_FMT +#define FF_API_GET_BITS_PER_SAMPLE_FMT (LIBAVUTIL_VERSION_MAJOR < 52) +#endif +#ifndef FF_API_FIND_OPT +#define FF_API_FIND_OPT (LIBAVUTIL_VERSION_MAJOR < 52) +#endif +#ifndef FF_API_AV_FIFO_PEEK +#define FF_API_AV_FIFO_PEEK (LIBAVUTIL_VERSION_MAJOR < 52) +#endif +#ifndef FF_API_OLD_AVOPTIONS +#define FF_API_OLD_AVOPTIONS (LIBAVUTIL_VERSION_MAJOR < 52) +#endif +#ifndef FF_API_PIX_FMT +#define FF_API_PIX_FMT (LIBAVUTIL_VERSION_MAJOR < 52) +#endif +#ifndef FF_API_CONTEXT_SIZE +#define FF_API_CONTEXT_SIZE (LIBAVUTIL_VERSION_MAJOR < 52) +#endif +#ifndef FF_API_PIX_FMT_DESC +#define FF_API_PIX_FMT_DESC (LIBAVUTIL_VERSION_MAJOR < 52) +#endif +#ifndef FF_API_AV_REVERSE +#define FF_API_AV_REVERSE (LIBAVUTIL_VERSION_MAJOR < 52) +#endif + +/** + * @} + */ + +#endif /* AVUTIL_VERSION_H */ diff -r 3331b30e4ef1 -r 88fde28bbda6 misc/winutils/include/libavutil/xtea.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/misc/winutils/include/libavutil/xtea.h Sat Nov 03 00:34:35 2012 +0400 @@ -0,0 +1,61 @@ +/* + * A 32-bit implementation of the XTEA algorithm + * + * This file is part of Libav. + * + * Libav is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * Libav 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 + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with Libav; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ + +#ifndef AVUTIL_XTEA_H +#define AVUTIL_XTEA_H + +#include + +/** + * @defgroup lavu_xtea XTEA + * @ingroup lavu_crypto + * @{ + */ + +typedef struct AVXTEA { + uint32_t key[16]; +} AVXTEA; + +/** + * Initialize an AVXTEA context. + * + * @param ctx an AVXTEA context + * @param key a key of 16 bytes used for encryption/decryption + */ +void av_xtea_init(struct AVXTEA *ctx, const uint8_t key[16]); + +/** + * Encrypt or decrypt a buffer using a previously initialized context. + * + * @param ctx an AVXTEA context + * @param dst destination array, can be equal to src + * @param src source array, can be equal to dst + * @param count number of 8 byte blocks + * @param iv initialization vector for CBC mode, if NULL then ECB will be used + * @param decrypt 0 for encryption, 1 for decryption + */ +void av_xtea_crypt(struct AVXTEA *ctx, uint8_t *dst, const uint8_t *src, + int count, uint8_t *iv, int decrypt); + +/** + * @} + */ + +#endif /* AVUTIL_XTEA_H */ diff -r 3331b30e4ef1 -r 88fde28bbda6 misc/winutils/include/png.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/misc/winutils/include/png.h Sat Nov 03 00:34:35 2012 +0400 @@ -0,0 +1,2674 @@ + +/* png.h - header file for PNG reference library + * + * libpng version 1.5.13 - September 27, 2012 + * Copyright (c) 1998-2012 Glenn Randers-Pehrson + * (Version 0.96 Copyright (c) 1996, 1997 Andreas Dilger) + * (Version 0.88 Copyright (c) 1995, 1996 Guy Eric Schalnat, Group 42, Inc.) + * + * This code is released under the libpng license (See LICENSE, below) + * + * Authors and maintainers: + * libpng versions 0.71, May 1995, through 0.88, January 1996: Guy Schalnat + * libpng versions 0.89c, June 1996, through 0.96, May 1997: Andreas Dilger + * libpng versions 0.97, January 1998, through 1.5.13 - September 27, 2012: Glenn + * See also "Contributing Authors", below. + * + * Note about libpng version numbers: + * + * Due to various miscommunications, unforeseen code incompatibilities + * and occasional factors outside the authors' control, version numbering + * on the library has not always been consistent and straightforward. + * The following table summarizes matters since version 0.89c, which was + * the first widely used release: + * + * source png.h png.h shared-lib + * version string int version + * ------- ------ ----- ---------- + * 0.89c "1.0 beta 3" 0.89 89 1.0.89 + * 0.90 "1.0 beta 4" 0.90 90 0.90 [should have been 2.0.90] + * 0.95 "1.0 beta 5" 0.95 95 0.95 [should have been 2.0.95] + * 0.96 "1.0 beta 6" 0.96 96 0.96 [should have been 2.0.96] + * 0.97b "1.00.97 beta 7" 1.00.97 97 1.0.1 [should have been 2.0.97] + * 0.97c 0.97 97 2.0.97 + * 0.98 0.98 98 2.0.98 + * 0.99 0.99 98 2.0.99 + * 0.99a-m 0.99 99 2.0.99 + * 1.00 1.00 100 2.1.0 [100 should be 10000] + * 1.0.0 (from here on, the 100 2.1.0 [100 should be 10000] + * 1.0.1 png.h string is 10001 2.1.0 + * 1.0.1a-e identical to the 10002 from here on, the shared library + * 1.0.2 source version) 10002 is 2.V where V is the source code + * 1.0.2a-b 10003 version, except as noted. + * 1.0.3 10003 + * 1.0.3a-d 10004 + * 1.0.4 10004 + * 1.0.4a-f 10005 + * 1.0.5 (+ 2 patches) 10005 + * 1.0.5a-d 10006 + * 1.0.5e-r 10100 (not source compatible) + * 1.0.5s-v 10006 (not binary compatible) + * 1.0.6 (+ 3 patches) 10006 (still binary incompatible) + * 1.0.6d-f 10007 (still binary incompatible) + * 1.0.6g 10007 + * 1.0.6h 10007 10.6h (testing xy.z so-numbering) + * 1.0.6i 10007 10.6i + * 1.0.6j 10007 2.1.0.6j (incompatible with 1.0.0) + * 1.0.7beta11-14 DLLNUM 10007 2.1.0.7beta11-14 (binary compatible) + * 1.0.7beta15-18 1 10007 2.1.0.7beta15-18 (binary compatible) + * 1.0.7rc1-2 1 10007 2.1.0.7rc1-2 (binary compatible) + * 1.0.7 1 10007 (still compatible) + * 1.0.8beta1-4 1 10008 2.1.0.8beta1-4 + * 1.0.8rc1 1 10008 2.1.0.8rc1 + * 1.0.8 1 10008 2.1.0.8 + * 1.0.9beta1-6 1 10009 2.1.0.9beta1-6 + * 1.0.9rc1 1 10009 2.1.0.9rc1 + * 1.0.9beta7-10 1 10009 2.1.0.9beta7-10 + * 1.0.9rc2 1 10009 2.1.0.9rc2 + * 1.0.9 1 10009 2.1.0.9 + * 1.0.10beta1 1 10010 2.1.0.10beta1 + * 1.0.10rc1 1 10010 2.1.0.10rc1 + * 1.0.10 1 10010 2.1.0.10 + * 1.0.11beta1-3 1 10011 2.1.0.11beta1-3 + * 1.0.11rc1 1 10011 2.1.0.11rc1 + * 1.0.11 1 10011 2.1.0.11 + * 1.0.12beta1-2 2 10012 2.1.0.12beta1-2 + * 1.0.12rc1 2 10012 2.1.0.12rc1 + * 1.0.12 2 10012 2.1.0.12 + * 1.1.0a-f - 10100 2.1.1.0a-f (branch abandoned) + * 1.2.0beta1-2 2 10200 2.1.2.0beta1-2 + * 1.2.0beta3-5 3 10200 3.1.2.0beta3-5 + * 1.2.0rc1 3 10200 3.1.2.0rc1 + * 1.2.0 3 10200 3.1.2.0 + * 1.2.1beta1-4 3 10201 3.1.2.1beta1-4 + * 1.2.1rc1-2 3 10201 3.1.2.1rc1-2 + * 1.2.1 3 10201 3.1.2.1 + * 1.2.2beta1-6 12 10202 12.so.0.1.2.2beta1-6 + * 1.0.13beta1 10 10013 10.so.0.1.0.13beta1 + * 1.0.13rc1 10 10013 10.so.0.1.0.13rc1 + * 1.2.2rc1 12 10202 12.so.0.1.2.2rc1 + * 1.0.13 10 10013 10.so.0.1.0.13 + * 1.2.2 12 10202 12.so.0.1.2.2 + * 1.2.3rc1-6 12 10203 12.so.0.1.2.3rc1-6 + * 1.2.3 12 10203 12.so.0.1.2.3 + * 1.2.4beta1-3 13 10204 12.so.0.1.2.4beta1-3 + * 1.0.14rc1 13 10014 10.so.0.1.0.14rc1 + * 1.2.4rc1 13 10204 12.so.0.1.2.4rc1 + * 1.0.14 10 10014 10.so.0.1.0.14 + * 1.2.4 13 10204 12.so.0.1.2.4 + * 1.2.5beta1-2 13 10205 12.so.0.1.2.5beta1-2 + * 1.0.15rc1-3 10 10015 10.so.0.1.0.15rc1-3 + * 1.2.5rc1-3 13 10205 12.so.0.1.2.5rc1-3 + * 1.0.15 10 10015 10.so.0.1.0.15 + * 1.2.5 13 10205 12.so.0.1.2.5 + * 1.2.6beta1-4 13 10206 12.so.0.1.2.6beta1-4 + * 1.0.16 10 10016 10.so.0.1.0.16 + * 1.2.6 13 10206 12.so.0.1.2.6 + * 1.2.7beta1-2 13 10207 12.so.0.1.2.7beta1-2 + * 1.0.17rc1 10 10017 12.so.0.1.0.17rc1 + * 1.2.7rc1 13 10207 12.so.0.1.2.7rc1 + * 1.0.17 10 10017 12.so.0.1.0.17 + * 1.2.7 13 10207 12.so.0.1.2.7 + * 1.2.8beta1-5 13 10208 12.so.0.1.2.8beta1-5 + * 1.0.18rc1-5 10 10018 12.so.0.1.0.18rc1-5 + * 1.2.8rc1-5 13 10208 12.so.0.1.2.8rc1-5 + * 1.0.18 10 10018 12.so.0.1.0.18 + * 1.2.8 13 10208 12.so.0.1.2.8 + * 1.2.9beta1-3 13 10209 12.so.0.1.2.9beta1-3 + * 1.2.9beta4-11 13 10209 12.so.0.9[.0] + * 1.2.9rc1 13 10209 12.so.0.9[.0] + * 1.2.9 13 10209 12.so.0.9[.0] + * 1.2.10beta1-7 13 10210 12.so.0.10[.0] + * 1.2.10rc1-2 13 10210 12.so.0.10[.0] + * 1.2.10 13 10210 12.so.0.10[.0] + * 1.4.0beta1-5 14 10400 14.so.0.0[.0] + * 1.2.11beta1-4 13 10211 12.so.0.11[.0] + * 1.4.0beta7-8 14 10400 14.so.0.0[.0] + * 1.2.11 13 10211 12.so.0.11[.0] + * 1.2.12 13 10212 12.so.0.12[.0] + * 1.4.0beta9-14 14 10400 14.so.0.0[.0] + * 1.2.13 13 10213 12.so.0.13[.0] + * 1.4.0beta15-36 14 10400 14.so.0.0[.0] + * 1.4.0beta37-87 14 10400 14.so.14.0[.0] + * 1.4.0rc01 14 10400 14.so.14.0[.0] + * 1.4.0beta88-109 14 10400 14.so.14.0[.0] + * 1.4.0rc02-08 14 10400 14.so.14.0[.0] + * 1.4.0 14 10400 14.so.14.0[.0] + * 1.4.1beta01-03 14 10401 14.so.14.1[.0] + * 1.4.1rc01 14 10401 14.so.14.1[.0] + * 1.4.1beta04-12 14 10401 14.so.14.1[.0] + * 1.4.1 14 10401 14.so.14.1[.0] + * 1.4.2 14 10402 14.so.14.2[.0] + * 1.4.3 14 10403 14.so.14.3[.0] + * 1.4.4 14 10404 14.so.14.4[.0] + * 1.5.0beta01-58 15 10500 15.so.15.0[.0] + * 1.5.0rc01-07 15 10500 15.so.15.0[.0] + * 1.5.0 15 10500 15.so.15.0[.0] + * 1.5.1beta01-11 15 10501 15.so.15.1[.0] + * 1.5.1rc01-02 15 10501 15.so.15.1[.0] + * 1.5.1 15 10501 15.so.15.1[.0] + * 1.5.2beta01-03 15 10502 15.so.15.2[.0] + * 1.5.2rc01-03 15 10502 15.so.15.2[.0] + * 1.5.2 15 10502 15.so.15.2[.0] + * 1.5.3beta01-10 15 10503 15.so.15.3[.0] + * 1.5.3rc01-02 15 10503 15.so.15.3[.0] + * 1.5.3beta11 15 10503 15.so.15.3[.0] + * 1.5.3 [omitted] + * 1.5.4beta01-08 15 10504 15.so.15.4[.0] + * 1.5.4rc01 15 10504 15.so.15.4[.0] + * 1.5.4 15 10504 15.so.15.4[.0] + * 1.5.5beta01-08 15 10505 15.so.15.5[.0] + * 1.5.5rc01 15 10505 15.so.15.5[.0] + * 1.5.5 15 10505 15.so.15.5[.0] + * 1.5.6beta01-07 15 10506 15.so.15.6[.0] + * 1.5.6rc01-03 15 10506 15.so.15.6[.0] + * 1.5.6 15 10506 15.so.15.6[.0] + * 1.5.7beta01-05 15 10507 15.so.15.7[.0] + * 1.5.7rc01-03 15 10507 15.so.15.7[.0] + * 1.5.7 15 10507 15.so.15.7[.0] + * 1.5.8beta01 15 10508 15.so.15.8[.0] + * 1.5.8rc01 15 10508 15.so.15.8[.0] + * 1.5.8 15 10508 15.so.15.8[.0] + * 1.5.9beta01-02 15 10509 15.so.15.9[.0] + * 1.5.9rc01 15 10509 15.so.15.9[.0] + * 1.5.9 15 10509 15.so.15.9[.0] + * 1.5.10beta01-05 15 10510 15.so.15.10[.0] + * 1.5.10 15 10510 15.so.15.10[.0] + * 1.5.11beta01 15 10511 15.so.15.11[.0] + * 1.5.11rc01-05 15 10511 15.so.15.11[.0] + * 1.5.11 15 10511 15.so.15.11[.0] + * 1.5.12 15 10512 15.so.15.12[.0] + * 1.5.13beta01-02 15 10513 15.so.15.13[.0] + * 1.5.13rc01 15 10513 15.so.15.13[.0] + * 1.5.13 15 10513 15.so.15.13[.0] + * + * Henceforth the source version will match the shared-library major + * and minor numbers; the shared-library major version number will be + * used for changes in backward compatibility, as it is intended. The + * PNG_LIBPNG_VER macro, which is not used within libpng but is available + * for applications, is an unsigned integer of the form xyyzz corresponding + * to the source version x.y.z (leading zeros in y and z). Beta versions + * were given the previous public release number plus a letter, until + * version 1.0.6j; from then on they were given the upcoming public + * release number plus "betaNN" or "rcNN". + * + * Binary incompatibility exists only when applications make direct access + * to the info_ptr or png_ptr members through png.h, and the compiled + * application is loaded with a different version of the library. + * + * DLLNUM will change each time there are forward or backward changes + * in binary compatibility (e.g., when a new feature is added). + * + * See libpng-manual.txt or libpng.3 for more information. The PNG + * specification is available as a W3C Recommendation and as an ISO + * Specification, +# endif + + /* Need the time information for converting tIME chunks, it + * defines struct tm: + */ +# ifdef PNG_CONVERT_tIME_SUPPORTED + /* "time.h" functions are not supported on all operating systems */ +# include +# endif +# endif + +/* Machine specific configuration. */ +# include "pngconf.h" +#endif + +/* + * Added at libpng-1.2.8 + * + * Ref MSDN: Private as priority over Special + * VS_FF_PRIVATEBUILD File *was not* built using standard release + * procedures. If this value is given, the StringFileInfo block must + * contain a PrivateBuild string. + * + * VS_FF_SPECIALBUILD File *was* built by the original company using + * standard release procedures but is a variation of the standard + * file of the same version number. If this value is given, the + * StringFileInfo block must contain a SpecialBuild string. + */ + +#ifdef PNG_USER_PRIVATEBUILD /* From pnglibconf.h */ +# define PNG_LIBPNG_BUILD_TYPE \ + (PNG_LIBPNG_BUILD_BASE_TYPE | PNG_LIBPNG_BUILD_PRIVATE) +#else +# ifdef PNG_LIBPNG_SPECIALBUILD +# define PNG_LIBPNG_BUILD_TYPE \ + (PNG_LIBPNG_BUILD_BASE_TYPE | PNG_LIBPNG_BUILD_SPECIAL) +# else +# define PNG_LIBPNG_BUILD_TYPE (PNG_LIBPNG_BUILD_BASE_TYPE) +# endif +#endif + +#ifndef PNG_VERSION_INFO_ONLY + +/* Inhibit C++ name-mangling for libpng functions but not for system calls. */ +#ifdef __cplusplus +extern "C" { +#endif /* __cplusplus */ + +/* Version information for C files, stored in png.c. This had better match + * the version above. + */ +#define png_libpng_ver png_get_header_ver(NULL) + +/* This file is arranged in several sections: + * + * 1. Any configuration options that can be specified by for the application + * code when it is built. (Build time configuration is in pnglibconf.h) + * 2. Type definitions (base types are defined in pngconf.h), structure + * definitions. + * 3. Exported library functions. + * + * The library source code has additional files (principally pngpriv.h) that + * allow configuration of the library. + */ +/* Section 1: run time configuration + * See pnglibconf.h for build time configuration + * + * Run time configuration allows the application to choose between + * implementations of certain arithmetic APIs. The default is set + * at build time and recorded in pnglibconf.h, but it is safe to + * override these (and only these) settings. Note that this won't + * change what the library does, only application code, and the + * settings can (and probably should) be made on a per-file basis + * by setting the #defines before including png.h + * + * Use macros to read integers from PNG data or use the exported + * functions? + * PNG_USE_READ_MACROS: use the macros (see below) Note that + * the macros evaluate their argument multiple times. + * PNG_NO_USE_READ_MACROS: call the relevant library function. + * + * Use the alternative algorithm for compositing alpha samples that + * does not use division? + * PNG_READ_COMPOSITE_NODIV_SUPPORTED: use the 'no division' + * algorithm. + * PNG_NO_READ_COMPOSITE_NODIV: use the 'division' algorithm. + * + * How to handle benign errors if PNG_ALLOW_BENIGN_ERRORS is + * false? + * PNG_ALLOW_BENIGN_ERRORS: map calls to the benign error + * APIs to png_warning. + * Otherwise the calls are mapped to png_error. + */ + +/* Section 2: type definitions, including structures and compile time + * constants. + * See pngconf.h for base types that vary by machine/system + */ + +/* This triggers a compiler error in png.c, if png.c and png.h + * do not agree upon the version number. + */ +typedef char* png_libpng_version_1_5_13; + +/* Three color definitions. The order of the red, green, and blue, (and the + * exact size) is not important, although the size of the fields need to + * be png_byte or png_uint_16 (as defined below). + */ +typedef struct png_color_struct +{ + png_byte red; + png_byte green; + png_byte blue; +} png_color; +typedef png_color FAR * png_colorp; +typedef PNG_CONST png_color FAR * png_const_colorp; +typedef png_color FAR * FAR * png_colorpp; + +typedef struct png_color_16_struct +{ + png_byte index; /* used for palette files */ + png_uint_16 red; /* for use in red green blue files */ + png_uint_16 green; + png_uint_16 blue; + png_uint_16 gray; /* for use in grayscale files */ +} png_color_16; +typedef png_color_16 FAR * png_color_16p; +typedef PNG_CONST png_color_16 FAR * png_const_color_16p; +typedef png_color_16 FAR * FAR * png_color_16pp; + +typedef struct png_color_8_struct +{ + png_byte red; /* for use in red green blue files */ + png_byte green; + png_byte blue; + png_byte gray; /* for use in grayscale files */ + png_byte alpha; /* for alpha channel files */ +} png_color_8; +typedef png_color_8 FAR * png_color_8p; +typedef PNG_CONST png_color_8 FAR * png_const_color_8p; +typedef png_color_8 FAR * FAR * png_color_8pp; + +/* + * The following two structures are used for the in-core representation + * of sPLT chunks. + */ +typedef struct png_sPLT_entry_struct +{ + png_uint_16 red; + png_uint_16 green; + png_uint_16 blue; + png_uint_16 alpha; + png_uint_16 frequency; +} png_sPLT_entry; +typedef png_sPLT_entry FAR * png_sPLT_entryp; +typedef PNG_CONST png_sPLT_entry FAR * png_const_sPLT_entryp; +typedef png_sPLT_entry FAR * FAR * png_sPLT_entrypp; + +/* When the depth of the sPLT palette is 8 bits, the color and alpha samples + * occupy the LSB of their respective members, and the MSB of each member + * is zero-filled. The frequency member always occupies the full 16 bits. + */ + +typedef struct png_sPLT_struct +{ + png_charp name; /* palette name */ + png_byte depth; /* depth of palette samples */ + png_sPLT_entryp entries; /* palette entries */ + png_int_32 nentries; /* number of palette entries */ +} png_sPLT_t; +typedef png_sPLT_t FAR * png_sPLT_tp; +typedef PNG_CONST png_sPLT_t FAR * png_const_sPLT_tp; +typedef png_sPLT_t FAR * FAR * png_sPLT_tpp; + +#ifdef PNG_TEXT_SUPPORTED +/* png_text holds the contents of a text/ztxt/itxt chunk in a PNG file, + * and whether that contents is compressed or not. The "key" field + * points to a regular zero-terminated C string. The "text" fields can be a + * regular C string, an empty string, or a NULL pointer. + * However, the structure returned by png_get_text() will always contain + * the "text" field as a regular zero-terminated C string (possibly + * empty), never a NULL pointer, so it can be safely used in printf() and + * other string-handling functions. Note that the "itxt_length", "lang", and + * "lang_key" members of the structure only exist when the library is built + * with iTXt chunk support. Prior to libpng-1.4.0 the library was built by + * default without iTXt support. Also note that when iTXt *is* supported, + * the "lang" and "lang_key" fields contain NULL pointers when the + * "compression" field contains * PNG_TEXT_COMPRESSION_NONE or + * PNG_TEXT_COMPRESSION_zTXt. Note that the "compression value" is not the + * same as what appears in the PNG tEXt/zTXt/iTXt chunk's "compression flag" + * which is always 0 or 1, or its "compression method" which is always 0. + */ +typedef struct png_text_struct +{ + int compression; /* compression value: + -1: tEXt, none + 0: zTXt, deflate + 1: iTXt, none + 2: iTXt, deflate */ + png_charp key; /* keyword, 1-79 character description of "text" */ + png_charp text; /* comment, may be an empty string (ie "") + or a NULL pointer */ + png_size_t text_length; /* length of the text string */ + png_size_t itxt_length; /* length of the itxt string */ + png_charp lang; /* language code, 0-79 characters + or a NULL pointer */ + png_charp lang_key; /* keyword translated UTF-8 string, 0 or more + chars or a NULL pointer */ +} png_text; +typedef png_text FAR * png_textp; +typedef PNG_CONST png_text FAR * png_const_textp; +typedef png_text FAR * FAR * png_textpp; +#endif + +/* Supported compression types for text in PNG files (tEXt, and zTXt). + * The values of the PNG_TEXT_COMPRESSION_ defines should NOT be changed. */ +#define PNG_TEXT_COMPRESSION_NONE_WR -3 +#define PNG_TEXT_COMPRESSION_zTXt_WR -2 +#define PNG_TEXT_COMPRESSION_NONE -1 +#define PNG_TEXT_COMPRESSION_zTXt 0 +#define PNG_ITXT_COMPRESSION_NONE 1 +#define PNG_ITXT_COMPRESSION_zTXt 2 +#define PNG_TEXT_COMPRESSION_LAST 3 /* Not a valid value */ + +/* png_time is a way to hold the time in an machine independent way. + * Two conversions are provided, both from time_t and struct tm. There + * is no portable way to convert to either of these structures, as far + * as I know. If you know of a portable way, send it to me. As a side + * note - PNG has always been Year 2000 compliant! + */ +typedef struct png_time_struct +{ + png_uint_16 year; /* full year, as in, 1995 */ + png_byte month; /* month of year, 1 - 12 */ + png_byte day; /* day of month, 1 - 31 */ + png_byte hour; /* hour of day, 0 - 23 */ + png_byte minute; /* minute of hour, 0 - 59 */ + png_byte second; /* second of minute, 0 - 60 (for leap seconds) */ +} png_time; +typedef png_time FAR * png_timep; +typedef PNG_CONST png_time FAR * png_const_timep; +typedef png_time FAR * FAR * png_timepp; + +#if defined(PNG_UNKNOWN_CHUNKS_SUPPORTED) || \ + defined(PNG_HANDLE_AS_UNKNOWN_SUPPORTED) +/* png_unknown_chunk is a structure to hold queued chunks for which there is + * no specific support. The idea is that we can use this to queue + * up private chunks for output even though the library doesn't actually + * know about their semantics. + */ +typedef struct png_unknown_chunk_t +{ + png_byte name[5]; + png_byte *data; + png_size_t size; + + /* libpng-using applications should NOT directly modify this byte. */ + png_byte location; /* mode of operation at read time */ +} + + +png_unknown_chunk; +typedef png_unknown_chunk FAR * png_unknown_chunkp; +typedef PNG_CONST png_unknown_chunk FAR * png_const_unknown_chunkp; +typedef png_unknown_chunk FAR * FAR * png_unknown_chunkpp; +#endif + +/* Values for the unknown chunk location byte */ + +#define PNG_HAVE_IHDR 0x01 +#define PNG_HAVE_PLTE 0x02 +#define PNG_AFTER_IDAT 0x08 + +/* The complete definition of png_info has, as of libpng-1.5.0, + * been moved into a separate header file that is not accessible to + * applications. Read libpng-manual.txt or libpng.3 for more info. + */ +typedef struct png_info_def png_info; +typedef png_info FAR * png_infop; +typedef PNG_CONST png_info FAR * png_const_infop; +typedef png_info FAR * FAR * png_infopp; + +/* Maximum positive integer used in PNG is (2^31)-1 */ +#define PNG_UINT_31_MAX ((png_uint_32)0x7fffffffL) +#define PNG_UINT_32_MAX ((png_uint_32)(-1)) +#define PNG_SIZE_MAX ((png_size_t)(-1)) + +/* These are constants for fixed point values encoded in the + * PNG specification manner (x100000) + */ +#define PNG_FP_1 100000 +#define PNG_FP_HALF 50000 +#define PNG_FP_MAX ((png_fixed_point)0x7fffffffL) +#define PNG_FP_MIN (-PNG_FP_MAX) + +/* These describe the color_type field in png_info. */ +/* color type masks */ +#define PNG_COLOR_MASK_PALETTE 1 +#define PNG_COLOR_MASK_COLOR 2 +#define PNG_COLOR_MASK_ALPHA 4 + +/* color types. Note that not all combinations are legal */ +#define PNG_COLOR_TYPE_GRAY 0 +#define PNG_COLOR_TYPE_PALETTE (PNG_COLOR_MASK_COLOR | PNG_COLOR_MASK_PALETTE) +#define PNG_COLOR_TYPE_RGB (PNG_COLOR_MASK_COLOR) +#define PNG_COLOR_TYPE_RGB_ALPHA (PNG_COLOR_MASK_COLOR | PNG_COLOR_MASK_ALPHA) +#define PNG_COLOR_TYPE_GRAY_ALPHA (PNG_COLOR_MASK_ALPHA) +/* aliases */ +#define PNG_COLOR_TYPE_RGBA PNG_COLOR_TYPE_RGB_ALPHA +#define PNG_COLOR_TYPE_GA PNG_COLOR_TYPE_GRAY_ALPHA + +/* This is for compression type. PNG 1.0-1.2 only define the single type. */ +#define PNG_COMPRESSION_TYPE_BASE 0 /* Deflate method 8, 32K window */ +#define PNG_COMPRESSION_TYPE_DEFAULT PNG_COMPRESSION_TYPE_BASE + +/* This is for filter type. PNG 1.0-1.2 only define the single type. */ +#define PNG_FILTER_TYPE_BASE 0 /* Single row per-byte filtering */ +#define PNG_INTRAPIXEL_DIFFERENCING 64 /* Used only in MNG datastreams */ +#define PNG_FILTER_TYPE_DEFAULT PNG_FILTER_TYPE_BASE + +/* These are for the interlacing type. These values should NOT be changed. */ +#define PNG_INTERLACE_NONE 0 /* Non-interlaced image */ +#define PNG_INTERLACE_ADAM7 1 /* Adam7 interlacing */ +#define PNG_INTERLACE_LAST 2 /* Not a valid value */ + +/* These are for the oFFs chunk. These values should NOT be changed. */ +#define PNG_OFFSET_PIXEL 0 /* Offset in pixels */ +#define PNG_OFFSET_MICROMETER 1 /* Offset in micrometers (1/10^6 meter) */ +#define PNG_OFFSET_LAST 2 /* Not a valid value */ + +/* These are for the pCAL chunk. These values should NOT be changed. */ +#define PNG_EQUATION_LINEAR 0 /* Linear transformation */ +#define PNG_EQUATION_BASE_E 1 /* Exponential base e transform */ +#define PNG_EQUATION_ARBITRARY 2 /* Arbitrary base exponential transform */ +#define PNG_EQUATION_HYPERBOLIC 3 /* Hyperbolic sine transformation */ +#define PNG_EQUATION_LAST 4 /* Not a valid value */ + +/* These are for the sCAL chunk. These values should NOT be changed. */ +#define PNG_SCALE_UNKNOWN 0 /* unknown unit (image scale) */ +#define PNG_SCALE_METER 1 /* meters per pixel */ +#define PNG_SCALE_RADIAN 2 /* radians per pixel */ +#define PNG_SCALE_LAST 3 /* Not a valid value */ + +/* These are for the pHYs chunk. These values should NOT be changed. */ +#define PNG_RESOLUTION_UNKNOWN 0 /* pixels/unknown unit (aspect ratio) */ +#define PNG_RESOLUTION_METER 1 /* pixels/meter */ +#define PNG_RESOLUTION_LAST 2 /* Not a valid value */ + +/* These are for the sRGB chunk. These values should NOT be changed. */ +#define PNG_sRGB_INTENT_PERCEPTUAL 0 +#define PNG_sRGB_INTENT_RELATIVE 1 +#define PNG_sRGB_INTENT_SATURATION 2 +#define PNG_sRGB_INTENT_ABSOLUTE 3 +#define PNG_sRGB_INTENT_LAST 4 /* Not a valid value */ + +/* This is for text chunks */ +#define PNG_KEYWORD_MAX_LENGTH 79 + +/* Maximum number of entries in PLTE/sPLT/tRNS arrays */ +#define PNG_MAX_PALETTE_LENGTH 256 + +/* These determine if an ancillary chunk's data has been successfully read + * from the PNG header, or if the application has filled in the corresponding + * data in the info_struct to be written into the output file. The values + * of the PNG_INFO_ defines should NOT be changed. + */ +#define PNG_INFO_gAMA 0x0001 +#define PNG_INFO_sBIT 0x0002 +#define PNG_INFO_cHRM 0x0004 +#define PNG_INFO_PLTE 0x0008 +#define PNG_INFO_tRNS 0x0010 +#define PNG_INFO_bKGD 0x0020 +#define PNG_INFO_hIST 0x0040 +#define PNG_INFO_pHYs 0x0080 +#define PNG_INFO_oFFs 0x0100 +#define PNG_INFO_tIME 0x0200 +#define PNG_INFO_pCAL 0x0400 +#define PNG_INFO_sRGB 0x0800 /* GR-P, 0.96a */ +#define PNG_INFO_iCCP 0x1000 /* ESR, 1.0.6 */ +#define PNG_INFO_sPLT 0x2000 /* ESR, 1.0.6 */ +#define PNG_INFO_sCAL 0x4000 /* ESR, 1.0.6 */ +#define PNG_INFO_IDAT 0x8000 /* ESR, 1.0.6 */ + +/* This is used for the transformation routines, as some of them + * change these values for the row. It also should enable using + * the routines for other purposes. + */ +typedef struct png_row_info_struct +{ + png_uint_32 width; /* width of row */ + png_size_t rowbytes; /* number of bytes in row */ + png_byte color_type; /* color type of row */ + png_byte bit_depth; /* bit depth of row */ + png_byte channels; /* number of channels (1, 2, 3, or 4) */ + png_byte pixel_depth; /* bits per pixel (depth * channels) */ +} png_row_info; + +typedef png_row_info FAR * png_row_infop; +typedef png_row_info FAR * FAR * png_row_infopp; + +/* The complete definition of png_struct has, as of libpng-1.5.0, + * been moved into a separate header file that is not accessible to + * applications. Read libpng-manual.txt or libpng.3 for more info. + */ +typedef struct png_struct_def png_struct; +typedef PNG_CONST png_struct FAR * png_const_structp; +typedef png_struct FAR * png_structp; + +/* These are the function types for the I/O functions and for the functions + * that allow the user to override the default I/O functions with his or her + * own. The png_error_ptr type should match that of user-supplied warning + * and error functions, while the png_rw_ptr type should match that of the + * user read/write data functions. Note that the 'write' function must not + * modify the buffer it is passed. The 'read' function, on the other hand, is + * expected to return the read data in the buffer. + */ +typedef PNG_CALLBACK(void, *png_error_ptr, (png_structp, png_const_charp)); +typedef PNG_CALLBACK(void, *png_rw_ptr, (png_structp, png_bytep, png_size_t)); +typedef PNG_CALLBACK(void, *png_flush_ptr, (png_structp)); +typedef PNG_CALLBACK(void, *png_read_status_ptr, (png_structp, png_uint_32, + int)); +typedef PNG_CALLBACK(void, *png_write_status_ptr, (png_structp, png_uint_32, + int)); + +#ifdef PNG_PROGRESSIVE_READ_SUPPORTED +typedef PNG_CALLBACK(void, *png_progressive_info_ptr, (png_structp, png_infop)); +typedef PNG_CALLBACK(void, *png_progressive_end_ptr, (png_structp, png_infop)); + +/* The following callback receives png_uint_32 row_number, int pass for the + * png_bytep data of the row. When transforming an interlaced image the + * row number is the row number within the sub-image of the interlace pass, so + * the value will increase to the height of the sub-image (not the full image) + * then reset to 0 for the next pass. + * + * Use PNG_ROW_FROM_PASS_ROW(row, pass) and PNG_COL_FROM_PASS_COL(col, pass) to + * find the output pixel (x,y) given an interlaced sub-image pixel + * (row,col,pass). (See below for these macros.) + */ +typedef PNG_CALLBACK(void, *png_progressive_row_ptr, (png_structp, png_bytep, + png_uint_32, int)); +#endif + +#if defined(PNG_READ_USER_TRANSFORM_SUPPORTED) || \ + defined(PNG_WRITE_USER_TRANSFORM_SUPPORTED) +typedef PNG_CALLBACK(void, *png_user_transform_ptr, (png_structp, png_row_infop, + png_bytep)); +#endif + +#ifdef PNG_USER_CHUNKS_SUPPORTED +typedef PNG_CALLBACK(int, *png_user_chunk_ptr, (png_structp, + png_unknown_chunkp)); +#endif +#ifdef PNG_UNKNOWN_CHUNKS_SUPPORTED +typedef PNG_CALLBACK(void, *png_unknown_chunk_ptr, (png_structp)); +#endif + +#ifdef PNG_SETJMP_SUPPORTED +/* This must match the function definition in , and the application + * must include this before png.h to obtain the definition of jmp_buf. The + * function is required to be PNG_NORETURN, but this is not checked. If the + * function does return the application will crash via an abort() or similar + * system level call. + * + * If you get a warning here while building the library you may need to make + * changes to ensure that pnglibconf.h records the calling convention used by + * your compiler. This may be very difficult - try using a different compiler + * to build the library! + */ +PNG_FUNCTION(void, (PNGCAPI *png_longjmp_ptr), PNGARG((jmp_buf, int)), typedef); +#endif + +/* Transform masks for the high-level interface */ +#define PNG_TRANSFORM_IDENTITY 0x0000 /* read and write */ +#define PNG_TRANSFORM_STRIP_16 0x0001 /* read only */ +#define PNG_TRANSFORM_STRIP_ALPHA 0x0002 /* read only */ +#define PNG_TRANSFORM_PACKING 0x0004 /* read and write */ +#define PNG_TRANSFORM_PACKSWAP 0x0008 /* read and write */ +#define PNG_TRANSFORM_EXPAND 0x0010 /* read only */ +#define PNG_TRANSFORM_INVERT_MONO 0x0020 /* read and write */ +#define PNG_TRANSFORM_SHIFT 0x0040 /* read and write */ +#define PNG_TRANSFORM_BGR 0x0080 /* read and write */ +#define PNG_TRANSFORM_SWAP_ALPHA 0x0100 /* read and write */ +#define PNG_TRANSFORM_SWAP_ENDIAN 0x0200 /* read and write */ +#define PNG_TRANSFORM_INVERT_ALPHA 0x0400 /* read and write */ +#define PNG_TRANSFORM_STRIP_FILLER 0x0800 /* write only */ +/* Added to libpng-1.2.34 */ +#define PNG_TRANSFORM_STRIP_FILLER_BEFORE PNG_TRANSFORM_STRIP_FILLER +#define PNG_TRANSFORM_STRIP_FILLER_AFTER 0x1000 /* write only */ +/* Added to libpng-1.4.0 */ +#define PNG_TRANSFORM_GRAY_TO_RGB 0x2000 /* read only */ +/* Added to libpng-1.5.4 */ +#define PNG_TRANSFORM_EXPAND_16 0x4000 /* read only */ +#define PNG_TRANSFORM_SCALE_16 0x8000 /* read only */ + +/* Flags for MNG supported features */ +#define PNG_FLAG_MNG_EMPTY_PLTE 0x01 +#define PNG_FLAG_MNG_FILTER_64 0x04 +#define PNG_ALL_MNG_FEATURES 0x05 + +/* NOTE: prior to 1.5 these functions had no 'API' style declaration, + * this allowed the zlib default functions to be used on Windows + * platforms. In 1.5 the zlib default malloc (which just calls malloc and + * ignores the first argument) should be completely compatible with the + * following. + */ +typedef PNG_CALLBACK(png_voidp, *png_malloc_ptr, (png_structp, + png_alloc_size_t)); +typedef PNG_CALLBACK(void, *png_free_ptr, (png_structp, png_voidp)); + +typedef png_struct FAR * FAR * png_structpp; + +/* Section 3: exported functions + * Here are the function definitions most commonly used. This is not + * the place to find out how to use libpng. See libpng-manual.txt for the + * full explanation, see example.c for the summary. This just provides + * a simple one line description of the use of each function. + * + * The PNG_EXPORT() and PNG_EXPORTA() macros used below are defined in + * pngconf.h and in the *.dfn files in the scripts directory. + * + * PNG_EXPORT(ordinal, type, name, (args)); + * + * ordinal: ordinal that is used while building + * *.def files. The ordinal value is only + * relevant when preprocessing png.h with + * the *.dfn files for building symbol table + * entries, and are removed by pngconf.h. + * type: return type of the function + * name: function name + * args: function arguments, with types + * + * When we wish to append attributes to a function prototype we use + * the PNG_EXPORTA() macro instead. + * + * PNG_EXPORTA(ordinal, type, name, (args), attributes); + * + * ordinal, type, name, and args: same as in PNG_EXPORT(). + * attributes: function attributes + */ + +/* Returns the version number of the library */ +PNG_EXPORT(1, png_uint_32, png_access_version_number, (void)); + +/* Tell lib we have already handled the first magic bytes. + * Handling more than 8 bytes from the beginning of the file is an error. + */ +PNG_EXPORT(2, void, png_set_sig_bytes, (png_structp png_ptr, int num_bytes)); + +/* Check sig[start] through sig[start + num_to_check - 1] to see if it's a + * PNG file. Returns zero if the supplied bytes match the 8-byte PNG + * signature, and non-zero otherwise. Having num_to_check == 0 or + * start > 7 will always fail (ie return non-zero). + */ +PNG_EXPORT(3, int, png_sig_cmp, (png_const_bytep sig, png_size_t start, + png_size_t num_to_check)); + +/* Simple signature checking function. This is the same as calling + * png_check_sig(sig, n) := !png_sig_cmp(sig, 0, n). + */ +#define png_check_sig(sig, n) !png_sig_cmp((sig), 0, (n)) + +/* Allocate and initialize png_ptr struct for reading, and any other memory. */ +PNG_EXPORTA(4, png_structp, png_create_read_struct, + (png_const_charp user_png_ver, png_voidp error_ptr, + png_error_ptr error_fn, png_error_ptr warn_fn), + PNG_ALLOCATED); + +/* Allocate and initialize png_ptr struct for writing, and any other memory */ +PNG_EXPORTA(5, png_structp, png_create_write_struct, + (png_const_charp user_png_ver, png_voidp error_ptr, png_error_ptr error_fn, + png_error_ptr warn_fn), + PNG_ALLOCATED); + +PNG_EXPORT(6, png_size_t, png_get_compression_buffer_size, + (png_const_structp png_ptr)); + +PNG_EXPORT(7, void, png_set_compression_buffer_size, (png_structp png_ptr, + png_size_t size)); + +/* Moved from pngconf.h in 1.4.0 and modified to ensure setjmp/longjmp + * match up. + */ +#ifdef PNG_SETJMP_SUPPORTED +/* This function returns the jmp_buf built in to *png_ptr. It must be + * supplied with an appropriate 'longjmp' function to use on that jmp_buf + * unless the default error function is overridden in which case NULL is + * acceptable. The size of the jmp_buf is checked against the actual size + * allocated by the library - the call will return NULL on a mismatch + * indicating an ABI mismatch. + */ +PNG_EXPORT(8, jmp_buf*, png_set_longjmp_fn, (png_structp png_ptr, + png_longjmp_ptr longjmp_fn, size_t jmp_buf_size)); +# define png_jmpbuf(png_ptr) \ + (*png_set_longjmp_fn((png_ptr), longjmp, sizeof (jmp_buf))) +#else +# define png_jmpbuf(png_ptr) \ + (LIBPNG_WAS_COMPILED_WITH__PNG_NO_SETJMP) +#endif +/* This function should be used by libpng applications in place of + * longjmp(png_ptr->jmpbuf, val). If longjmp_fn() has been set, it + * will use it; otherwise it will call PNG_ABORT(). This function was + * added in libpng-1.5.0. + */ +PNG_EXPORTA(9, void, png_longjmp, (png_structp png_ptr, int val), + PNG_NORETURN); + +#ifdef PNG_READ_SUPPORTED +/* Reset the compression stream */ +PNG_EXPORT(10, int, png_reset_zstream, (png_structp png_ptr)); +#endif + +/* New functions added in libpng-1.0.2 (not enabled by default until 1.2.0) */ +#ifdef PNG_USER_MEM_SUPPORTED +PNG_EXPORTA(11, png_structp, png_create_read_struct_2, + (png_const_charp user_png_ver, png_voidp error_ptr, png_error_ptr error_fn, + png_error_ptr warn_fn, + png_voidp mem_ptr, png_malloc_ptr malloc_fn, png_free_ptr free_fn), + PNG_ALLOCATED); +PNG_EXPORTA(12, png_structp, png_create_write_struct_2, + (png_const_charp user_png_ver, png_voidp error_ptr, png_error_ptr error_fn, + png_error_ptr warn_fn, + png_voidp mem_ptr, png_malloc_ptr malloc_fn, png_free_ptr free_fn), + PNG_ALLOCATED); +#endif + +/* Write the PNG file signature. */ +PNG_EXPORT(13, void, png_write_sig, (png_structp png_ptr)); + +/* Write a PNG chunk - size, type, (optional) data, CRC. */ +PNG_EXPORT(14, void, png_write_chunk, (png_structp png_ptr, png_const_bytep + chunk_name, png_const_bytep data, png_size_t length)); + +/* Write the start of a PNG chunk - length and chunk name. */ +PNG_EXPORT(15, void, png_write_chunk_start, (png_structp png_ptr, + png_const_bytep chunk_name, png_uint_32 length)); + +/* Write the data of a PNG chunk started with png_write_chunk_start(). */ +PNG_EXPORT(16, void, png_write_chunk_data, (png_structp png_ptr, + png_const_bytep data, png_size_t length)); + +/* Finish a chunk started with png_write_chunk_start() (includes CRC). */ +PNG_EXPORT(17, void, png_write_chunk_end, (png_structp png_ptr)); + +/* Allocate and initialize the info structure */ +PNG_EXPORTA(18, png_infop, png_create_info_struct, (png_structp png_ptr), + PNG_ALLOCATED); + +PNG_EXPORT(19, void, png_info_init_3, (png_infopp info_ptr, + png_size_t png_info_struct_size)); + +/* Writes all the PNG information before the image. */ +PNG_EXPORT(20, void, png_write_info_before_PLTE, + (png_structp png_ptr, png_infop info_ptr)); +PNG_EXPORT(21, void, png_write_info, + (png_structp png_ptr, png_infop info_ptr)); + +#ifdef PNG_SEQUENTIAL_READ_SUPPORTED +/* Read the information before the actual image data. */ +PNG_EXPORT(22, void, png_read_info, + (png_structp png_ptr, png_infop info_ptr)); +#endif + +#ifdef PNG_TIME_RFC1123_SUPPORTED +PNG_EXPORT(23, png_const_charp, png_convert_to_rfc1123, + (png_structp png_ptr, + png_const_timep ptime)); +#endif + +#ifdef PNG_CONVERT_tIME_SUPPORTED +/* Convert from a struct tm to png_time */ +PNG_EXPORT(24, void, png_convert_from_struct_tm, (png_timep ptime, + PNG_CONST struct tm FAR * ttime)); + +/* Convert from time_t to png_time. Uses gmtime() */ +PNG_EXPORT(25, void, png_convert_from_time_t, + (png_timep ptime, time_t ttime)); +#endif /* PNG_CONVERT_tIME_SUPPORTED */ + +#ifdef PNG_READ_EXPAND_SUPPORTED +/* Expand data to 24-bit RGB, or 8-bit grayscale, with alpha if available. */ +PNG_EXPORT(26, void, png_set_expand, (png_structp png_ptr)); +PNG_EXPORT(27, void, png_set_expand_gray_1_2_4_to_8, (png_structp png_ptr)); +PNG_EXPORT(28, void, png_set_palette_to_rgb, (png_structp png_ptr)); +PNG_EXPORT(29, void, png_set_tRNS_to_alpha, (png_structp png_ptr)); +#endif + +#ifdef PNG_READ_EXPAND_16_SUPPORTED +/* Expand to 16-bit channels, forces conversion of palette to RGB and expansion + * of a tRNS chunk if present. + */ +PNG_EXPORT(221, void, png_set_expand_16, (png_structp png_ptr)); +#endif + +#if defined(PNG_READ_BGR_SUPPORTED) || defined(PNG_WRITE_BGR_SUPPORTED) +/* Use blue, green, red order for pixels. */ +PNG_EXPORT(30, void, png_set_bgr, (png_structp png_ptr)); +#endif + +#ifdef PNG_READ_GRAY_TO_RGB_SUPPORTED +/* Expand the grayscale to 24-bit RGB if necessary. */ +PNG_EXPORT(31, void, png_set_gray_to_rgb, (png_structp png_ptr)); +#endif + +#ifdef PNG_READ_RGB_TO_GRAY_SUPPORTED +/* Reduce RGB to grayscale. */ +#define PNG_ERROR_ACTION_NONE 1 +#define PNG_ERROR_ACTION_WARN 2 +#define PNG_ERROR_ACTION_ERROR 3 +#define PNG_RGB_TO_GRAY_DEFAULT (-1)/*for red/green coefficients*/ + +PNG_FP_EXPORT(32, void, png_set_rgb_to_gray, (png_structp png_ptr, + int error_action, double red, double green)) +PNG_FIXED_EXPORT(33, void, png_set_rgb_to_gray_fixed, (png_structp png_ptr, + int error_action, png_fixed_point red, png_fixed_point green)) + +PNG_EXPORT(34, png_byte, png_get_rgb_to_gray_status, (png_const_structp + png_ptr)); +#endif + +#ifdef PNG_BUILD_GRAYSCALE_PALETTE_SUPPORTED +PNG_EXPORT(35, void, png_build_grayscale_palette, (int bit_depth, + png_colorp palette)); +#endif + +#ifdef PNG_READ_ALPHA_MODE_SUPPORTED +/* How the alpha channel is interpreted - this affects how the color channels of + * a PNG file are returned when an alpha channel, or tRNS chunk in a palette + * file, is present. + * + * This has no effect on the way pixels are written into a PNG output + * datastream. The color samples in a PNG datastream are never premultiplied + * with the alpha samples. + * + * The default is to return data according to the PNG specification: the alpha + * channel is a linear measure of the contribution of the pixel to the + * corresponding composited pixel. The gamma encoded color channels must be + * scaled according to the contribution and to do this it is necessary to undo + * the encoding, scale the color values, perform the composition and reencode + * the values. This is the 'PNG' mode. + * + * The alternative is to 'associate' the alpha with the color information by + * storing color channel values that have been scaled by the alpha. The + * advantage is that the color channels can be resampled (the image can be + * scaled) in this form. The disadvantage is that normal practice is to store + * linear, not (gamma) encoded, values and this requires 16-bit channels for + * still images rather than the 8-bit channels that are just about sufficient if + * gamma encoding is used. In addition all non-transparent pixel values, + * including completely opaque ones, must be gamma encoded to produce the final + * image. This is the 'STANDARD', 'ASSOCIATED' or 'PREMULTIPLIED' mode (the + * latter being the two common names for associated alpha color channels.) + * + * Since it is not necessary to perform arithmetic on opaque color values so + * long as they are not to be resampled and are in the final color space it is + * possible to optimize the handling of alpha by storing the opaque pixels in + * the PNG format (adjusted for the output color space) while storing partially + * opaque pixels in the standard, linear, format. The accuracy required for + * standard alpha composition is relatively low, because the pixels are + * isolated, therefore typically the accuracy loss in storing 8-bit linear + * values is acceptable. (This is not true if the alpha channel is used to + * simulate transparency over large areas - use 16 bits or the PNG mode in + * this case!) This is the 'OPTIMIZED' mode. For this mode a pixel is + * treated as opaque only if the alpha value is equal to the maximum value. + * + * The final choice is to gamma encode the alpha channel as well. This is + * broken because, in practice, no implementation that uses this choice + * correctly undoes the encoding before handling alpha composition. Use this + * choice only if other serious errors in the software or hardware you use + * mandate it; the typical serious error is for dark halos to appear around + * opaque areas of the composited PNG image because of arithmetic overflow. + * + * The API function png_set_alpha_mode specifies which of these choices to use + * with an enumerated 'mode' value and the gamma of the required output: + */ +#define PNG_ALPHA_PNG 0 /* according to the PNG standard */ +#define PNG_ALPHA_STANDARD 1 /* according to Porter/Duff */ +#define PNG_ALPHA_ASSOCIATED 1 /* as above; this is the normal practice */ +#define PNG_ALPHA_PREMULTIPLIED 1 /* as above */ +#define PNG_ALPHA_OPTIMIZED 2 /* 'PNG' for opaque pixels, else 'STANDARD' */ +#define PNG_ALPHA_BROKEN 3 /* the alpha channel is gamma encoded */ + +PNG_FP_EXPORT(227, void, png_set_alpha_mode, (png_structp png_ptr, int mode, + double output_gamma)) +PNG_FIXED_EXPORT(228, void, png_set_alpha_mode_fixed, (png_structp png_ptr, + int mode, png_fixed_point output_gamma)) +#endif + +#if defined(PNG_READ_GAMMA_SUPPORTED) || defined(PNG_READ_ALPHA_MODE_SUPPORTED) +/* The output_gamma value is a screen gamma in libpng terminology: it expresses + * how to decode the output values, not how they are encoded. The values used + * correspond to the normal numbers used to describe the overall gamma of a + * computer display system; for example 2.2 for an sRGB conformant system. The + * values are scaled by 100000 in the _fixed version of the API (so 220000 for + * sRGB.) + * + * The inverse of the value is always used to provide a default for the PNG file + * encoding if it has no gAMA chunk and if png_set_gamma() has not been called + * to override the PNG gamma information. + * + * When the ALPHA_OPTIMIZED mode is selected the output gamma is used to encode + * opaque pixels however pixels with lower alpha values are not encoded, + * regardless of the output gamma setting. + * + * When the standard Porter Duff handling is requested with mode 1 the output + * encoding is set to be linear and the output_gamma value is only relevant + * as a default for input data that has no gamma information. The linear output + * encoding will be overridden if png_set_gamma() is called - the results may be + * highly unexpected! + * + * The following numbers are derived from the sRGB standard and the research + * behind it. sRGB is defined to be approximated by a PNG gAMA chunk value of + * 0.45455 (1/2.2) for PNG. The value implicitly includes any viewing + * correction required to take account of any differences in the color + * environment of the original scene and the intended display environment; the + * value expresses how to *decode* the image for display, not how the original + * data was *encoded*. + * + * sRGB provides a peg for the PNG standard by defining a viewing environment. + * sRGB itself, and earlier TV standards, actually use a more complex transform + * (a linear portion then a gamma 2.4 power law) than PNG can express. (PNG is + * limited to simple power laws.) By saying that an image for direct display on + * an sRGB conformant system should be stored with a gAMA chunk value of 45455 + * (11.3.3.2 and 11.3.3.5 of the ISO PNG specification) the PNG specification + * makes it possible to derive values for other display systems and + * environments. + * + * The Mac value is deduced from the sRGB based on an assumption that the actual + * extra viewing correction used in early Mac display systems was implemented as + * a power 1.45 lookup table. + * + * Any system where a programmable lookup table is used or where the behavior of + * the final display device characteristics can be changed requires system + * specific code to obtain the current characteristic. However this can be + * difficult and most PNG gamma correction only requires an approximate value. + * + * By default, if png_set_alpha_mode() is not called, libpng assumes that all + * values are unencoded, linear, values and that the output device also has a + * linear characteristic. This is only very rarely correct - it is invariably + * better to call png_set_alpha_mode() with PNG_DEFAULT_sRGB than rely on the + * default if you don't know what the right answer is! + * + * The special value PNG_GAMMA_MAC_18 indicates an older Mac system (pre Mac OS + * 10.6) which used a correction table to implement a somewhat lower gamma on an + * otherwise sRGB system. + * + * Both these values are reserved (not simple gamma values) in order to allow + * more precise correction internally in the future. + * + * NOTE: the following values can be passed to either the fixed or floating + * point APIs, but the floating point API will also accept floating point + * values. + */ +#define PNG_DEFAULT_sRGB -1 /* sRGB gamma and color space */ +#define PNG_GAMMA_MAC_18 -2 /* Old Mac '1.8' gamma and color space */ +#define PNG_GAMMA_sRGB 220000 /* Television standards--matches sRGB gamma */ +#define PNG_GAMMA_LINEAR PNG_FP_1 /* Linear */ +#endif + +/* The following are examples of calls to png_set_alpha_mode to achieve the + * required overall gamma correction and, where necessary, alpha + * premultiplication. + * + * png_set_alpha_mode(pp, PNG_ALPHA_PNG, PNG_DEFAULT_sRGB); + * This is the default libpng handling of the alpha channel - it is not + * pre-multiplied into the color components. In addition the call states + * that the output is for a sRGB system and causes all PNG files without gAMA + * chunks to be assumed to be encoded using sRGB. + * + * png_set_alpha_mode(pp, PNG_ALPHA_PNG, PNG_GAMMA_MAC); + * In this case the output is assumed to be something like an sRGB conformant + * display preceeded by a power-law lookup table of power 1.45. This is how + * early Mac systems behaved. + * + * png_set_alpha_mode(pp, PNG_ALPHA_STANDARD, PNG_GAMMA_LINEAR); + * This is the classic Jim Blinn approach and will work in academic + * environments where everything is done by the book. It has the shortcoming + * of assuming that input PNG data with no gamma information is linear - this + * is unlikely to be correct unless the PNG files where generated locally. + * Most of the time the output precision will be so low as to show + * significant banding in dark areas of the image. + * + * png_set_expand_16(pp); + * png_set_alpha_mode(pp, PNG_ALPHA_STANDARD, PNG_DEFAULT_sRGB); + * This is a somewhat more realistic Jim Blinn inspired approach. PNG files + * are assumed to have the sRGB encoding if not marked with a gamma value and + * the output is always 16 bits per component. This permits accurate scaling + * and processing of the data. If you know that your input PNG files were + * generated locally you might need to replace PNG_DEFAULT_sRGB with the + * correct value for your system. + * + * png_set_alpha_mode(pp, PNG_ALPHA_OPTIMIZED, PNG_DEFAULT_sRGB); + * If you just need to composite the PNG image onto an existing background + * and if you control the code that does this you can use the optimization + * setting. In this case you just copy completely opaque pixels to the + * output. For pixels that are not completely transparent (you just skip + * those) you do the composition math using png_composite or png_composite_16 + * below then encode the resultant 8-bit or 16-bit values to match the output + * encoding. + * + * Other cases + * If neither the PNG nor the standard linear encoding work for you because + * of the software or hardware you use then you have a big problem. The PNG + * case will probably result in halos around the image. The linear encoding + * will probably result in a washed out, too bright, image (it's actually too + * contrasty.) Try the ALPHA_OPTIMIZED mode above - this will probably + * substantially reduce the halos. Alternatively try: + * + * png_set_alpha_mode(pp, PNG_ALPHA_BROKEN, PNG_DEFAULT_sRGB); + * This option will also reduce the halos, but there will be slight dark + * halos round the opaque parts of the image where the background is light. + * In the OPTIMIZED mode the halos will be light halos where the background + * is dark. Take your pick - the halos are unavoidable unless you can get + * your hardware/software fixed! (The OPTIMIZED approach is slightly + * faster.) + * + * When the default gamma of PNG files doesn't match the output gamma. + * If you have PNG files with no gamma information png_set_alpha_mode allows + * you to provide a default gamma, but it also sets the ouput gamma to the + * matching value. If you know your PNG files have a gamma that doesn't + * match the output you can take advantage of the fact that + * png_set_alpha_mode always sets the output gamma but only sets the PNG + * default if it is not already set: + * + * png_set_alpha_mode(pp, PNG_ALPHA_PNG, PNG_DEFAULT_sRGB); + * png_set_alpha_mode(pp, PNG_ALPHA_PNG, PNG_GAMMA_MAC); + * The first call sets both the default and the output gamma values, the + * second call overrides the output gamma without changing the default. This + * is easier than achieving the same effect with png_set_gamma. You must use + * PNG_ALPHA_PNG for the first call - internal checking in png_set_alpha will + * fire if more than one call to png_set_alpha_mode and png_set_background is + * made in the same read operation, however multiple calls with PNG_ALPHA_PNG + * are ignored. + */ + +#ifdef PNG_READ_STRIP_ALPHA_SUPPORTED +PNG_EXPORT(36, void, png_set_strip_alpha, (png_structp png_ptr)); +#endif + +#if defined(PNG_READ_SWAP_ALPHA_SUPPORTED) || \ + defined(PNG_WRITE_SWAP_ALPHA_SUPPORTED) +PNG_EXPORT(37, void, png_set_swap_alpha, (png_structp png_ptr)); +#endif + +#if defined(PNG_READ_INVERT_ALPHA_SUPPORTED) || \ + defined(PNG_WRITE_INVERT_ALPHA_SUPPORTED) +PNG_EXPORT(38, void, png_set_invert_alpha, (png_structp png_ptr)); +#endif + +#if defined(PNG_READ_FILLER_SUPPORTED) || defined(PNG_WRITE_FILLER_SUPPORTED) +/* Add a filler byte to 8-bit Gray or 24-bit RGB images. */ +PNG_EXPORT(39, void, png_set_filler, (png_structp png_ptr, png_uint_32 filler, + int flags)); +/* The values of the PNG_FILLER_ defines should NOT be changed */ +# define PNG_FILLER_BEFORE 0 +# define PNG_FILLER_AFTER 1 +/* Add an alpha byte to 8-bit Gray or 24-bit RGB images. */ +PNG_EXPORT(40, void, png_set_add_alpha, + (png_structp png_ptr, png_uint_32 filler, + int flags)); +#endif /* PNG_READ_FILLER_SUPPORTED || PNG_WRITE_FILLER_SUPPORTED */ + +#if defined(PNG_READ_SWAP_SUPPORTED) || defined(PNG_WRITE_SWAP_SUPPORTED) +/* Swap bytes in 16-bit depth files. */ +PNG_EXPORT(41, void, png_set_swap, (png_structp png_ptr)); +#endif + +#if defined(PNG_READ_PACK_SUPPORTED) || defined(PNG_WRITE_PACK_SUPPORTED) +/* Use 1 byte per pixel in 1, 2, or 4-bit depth files. */ +PNG_EXPORT(42, void, png_set_packing, (png_structp png_ptr)); +#endif + +#if defined(PNG_READ_PACKSWAP_SUPPORTED) || \ + defined(PNG_WRITE_PACKSWAP_SUPPORTED) +/* Swap packing order of pixels in bytes. */ +PNG_EXPORT(43, void, png_set_packswap, (png_structp png_ptr)); +#endif + +#if defined(PNG_READ_SHIFT_SUPPORTED) || defined(PNG_WRITE_SHIFT_SUPPORTED) +/* Converts files to legal bit depths. */ +PNG_EXPORT(44, void, png_set_shift, (png_structp png_ptr, png_const_color_8p + true_bits)); +#endif + +#if defined(PNG_READ_INTERLACING_SUPPORTED) || \ + defined(PNG_WRITE_INTERLACING_SUPPORTED) +/* Have the code handle the interlacing. Returns the number of passes. + * MUST be called before png_read_update_info or png_start_read_image, + * otherwise it will not have the desired effect. Note that it is still + * necessary to call png_read_row or png_read_rows png_get_image_height + * times for each pass. +*/ +PNG_EXPORT(45, int, png_set_interlace_handling, (png_structp png_ptr)); +#endif + +#if defined(PNG_READ_INVERT_SUPPORTED) || defined(PNG_WRITE_INVERT_SUPPORTED) +/* Invert monochrome files */ +PNG_EXPORT(46, void, png_set_invert_mono, (png_structp png_ptr)); +#endif + +#ifdef PNG_READ_BACKGROUND_SUPPORTED +/* Handle alpha and tRNS by replacing with a background color. Prior to + * libpng-1.5.4 this API must not be called before the PNG file header has been + * read. Doing so will result in unexpected behavior and possible warnings or + * errors if the PNG file contains a bKGD chunk. + */ +PNG_FP_EXPORT(47, void, png_set_background, (png_structp png_ptr, + png_const_color_16p background_color, int background_gamma_code, + int need_expand, double background_gamma)) +PNG_FIXED_EXPORT(215, void, png_set_background_fixed, (png_structp png_ptr, + png_const_color_16p background_color, int background_gamma_code, + int need_expand, png_fixed_point background_gamma)) +#endif +#ifdef PNG_READ_BACKGROUND_SUPPORTED +# define PNG_BACKGROUND_GAMMA_UNKNOWN 0 +# define PNG_BACKGROUND_GAMMA_SCREEN 1 +# define PNG_BACKGROUND_GAMMA_FILE 2 +# define PNG_BACKGROUND_GAMMA_UNIQUE 3 +#endif + +#ifdef PNG_READ_SCALE_16_TO_8_SUPPORTED +/* Scale a 16-bit depth file down to 8-bit, accurately. */ +PNG_EXPORT(229, void, png_set_scale_16, (png_structp png_ptr)); +#endif + +#ifdef PNG_READ_STRIP_16_TO_8_SUPPORTED +#define PNG_READ_16_TO_8 SUPPORTED /* Name prior to 1.5.4 */ +/* Strip the second byte of information from a 16-bit depth file. */ +PNG_EXPORT(48, void, png_set_strip_16, (png_structp png_ptr)); +#endif + +#ifdef PNG_READ_QUANTIZE_SUPPORTED +/* Turn on quantizing, and reduce the palette to the number of colors + * available. + */ +PNG_EXPORT(49, void, png_set_quantize, + (png_structp png_ptr, png_colorp palette, + int num_palette, int maximum_colors, png_const_uint_16p histogram, + int full_quantize)); +#endif + +#ifdef PNG_READ_GAMMA_SUPPORTED +/* The threshold on gamma processing is configurable but hard-wired into the + * library. The following is the floating point variant. + */ +#define PNG_GAMMA_THRESHOLD (PNG_GAMMA_THRESHOLD_FIXED*.00001) + +/* Handle gamma correction. Screen_gamma=(display_exponent). + * NOTE: this API simply sets the screen and file gamma values. It will + * therefore override the value for gamma in a PNG file if it is called after + * the file header has been read - use with care - call before reading the PNG + * file for best results! + * + * These routines accept the same gamma values as png_set_alpha_mode (described + * above). The PNG_GAMMA_ defines and PNG_DEFAULT_sRGB can be passed to either + * API (floating point or fixed.) Notice, however, that the 'file_gamma' value + * is the inverse of a 'screen gamma' value. + */ +PNG_FP_EXPORT(50, void, png_set_gamma, + (png_structp png_ptr, double screen_gamma, + double override_file_gamma)) +PNG_FIXED_EXPORT(208, void, png_set_gamma_fixed, (png_structp png_ptr, + png_fixed_point screen_gamma, png_fixed_point override_file_gamma)) +#endif + +#ifdef PNG_WRITE_FLUSH_SUPPORTED +/* Set how many lines between output flushes - 0 for no flushing */ +PNG_EXPORT(51, void, png_set_flush, (png_structp png_ptr, int nrows)); +/* Flush the current PNG output buffer */ +PNG_EXPORT(52, void, png_write_flush, (png_structp png_ptr)); +#endif + +/* Optional update palette with requested transformations */ +PNG_EXPORT(53, void, png_start_read_image, (png_structp png_ptr)); + +/* Optional call to update the users info structure */ +PNG_EXPORT(54, void, png_read_update_info, + (png_structp png_ptr, png_infop info_ptr)); + +#ifdef PNG_SEQUENTIAL_READ_SUPPORTED +/* Read one or more rows of image data. */ +PNG_EXPORT(55, void, png_read_rows, (png_structp png_ptr, png_bytepp row, + png_bytepp display_row, png_uint_32 num_rows)); +#endif + +#ifdef PNG_SEQUENTIAL_READ_SUPPORTED +/* Read a row of data. */ +PNG_EXPORT(56, void, png_read_row, (png_structp png_ptr, png_bytep row, + png_bytep display_row)); +#endif + +#ifdef PNG_SEQUENTIAL_READ_SUPPORTED +/* Read the whole image into memory at once. */ +PNG_EXPORT(57, void, png_read_image, (png_structp png_ptr, png_bytepp image)); +#endif + +/* Write a row of image data */ +PNG_EXPORT(58, void, png_write_row, + (png_structp png_ptr, png_const_bytep row)); + +/* Write a few rows of image data: (*row) is not written; however, the type + * is declared as writeable to maintain compatibility with previous versions + * of libpng and to allow the 'display_row' array from read_rows to be passed + * unchanged to write_rows. + */ +PNG_EXPORT(59, void, png_write_rows, (png_structp png_ptr, png_bytepp row, + png_uint_32 num_rows)); + +/* Write the image data */ +PNG_EXPORT(60, void, png_write_image, + (png_structp png_ptr, png_bytepp image)); + +/* Write the end of the PNG file. */ +PNG_EXPORT(61, void, png_write_end, + (png_structp png_ptr, png_infop info_ptr)); + +#ifdef PNG_SEQUENTIAL_READ_SUPPORTED +/* Read the end of the PNG file. */ +PNG_EXPORT(62, void, png_read_end, (png_structp png_ptr, png_infop info_ptr)); +#endif + +/* Free any memory associated with the png_info_struct */ +PNG_EXPORT(63, void, png_destroy_info_struct, (png_structp png_ptr, + png_infopp info_ptr_ptr)); + +/* Free any memory associated with the png_struct and the png_info_structs */ +PNG_EXPORT(64, void, png_destroy_read_struct, (png_structpp png_ptr_ptr, + png_infopp info_ptr_ptr, png_infopp end_info_ptr_ptr)); + +/* Free any memory associated with the png_struct and the png_info_structs */ +PNG_EXPORT(65, void, png_destroy_write_struct, (png_structpp png_ptr_ptr, + png_infopp info_ptr_ptr)); + +/* Set the libpng method of handling chunk CRC errors */ +PNG_EXPORT(66, void, png_set_crc_action, + (png_structp png_ptr, int crit_action, int ancil_action)); + +/* Values for png_set_crc_action() say how to handle CRC errors in + * ancillary and critical chunks, and whether to use the data contained + * therein. Note that it is impossible to "discard" data in a critical + * chunk. For versions prior to 0.90, the action was always error/quit, + * whereas in version 0.90 and later, the action for CRC errors in ancillary + * chunks is warn/discard. These values should NOT be changed. + * + * value action:critical action:ancillary + */ +#define PNG_CRC_DEFAULT 0 /* error/quit warn/discard data */ +#define PNG_CRC_ERROR_QUIT 1 /* error/quit error/quit */ +#define PNG_CRC_WARN_DISCARD 2 /* (INVALID) warn/discard data */ +#define PNG_CRC_WARN_USE 3 /* warn/use data warn/use data */ +#define PNG_CRC_QUIET_USE 4 /* quiet/use data quiet/use data */ +#define PNG_CRC_NO_CHANGE 5 /* use current value use current value */ + +/* These functions give the user control over the scan-line filtering in + * libpng and the compression methods used by zlib. These functions are + * mainly useful for testing, as the defaults should work with most users. + * Those users who are tight on memory or want faster performance at the + * expense of compression can modify them. See the compression library + * header file (zlib.h) for an explination of the compression functions. + */ + +/* Set the filtering method(s) used by libpng. Currently, the only valid + * value for "method" is 0. + */ +PNG_EXPORT(67, void, png_set_filter, + (png_structp png_ptr, int method, int filters)); + +/* Flags for png_set_filter() to say which filters to use. The flags + * are chosen so that they don't conflict with real filter types + * below, in case they are supplied instead of the #defined constants. + * These values should NOT be changed. + */ +#define PNG_NO_FILTERS 0x00 +#define PNG_FILTER_NONE 0x08 +#define PNG_FILTER_SUB 0x10 +#define PNG_FILTER_UP 0x20 +#define PNG_FILTER_AVG 0x40 +#define PNG_FILTER_PAETH 0x80 +#define PNG_ALL_FILTERS (PNG_FILTER_NONE | PNG_FILTER_SUB | PNG_FILTER_UP | \ + PNG_FILTER_AVG | PNG_FILTER_PAETH) + +/* Filter values (not flags) - used in pngwrite.c, pngwutil.c for now. + * These defines should NOT be changed. + */ +#define PNG_FILTER_VALUE_NONE 0 +#define PNG_FILTER_VALUE_SUB 1 +#define PNG_FILTER_VALUE_UP 2 +#define PNG_FILTER_VALUE_AVG 3 +#define PNG_FILTER_VALUE_PAETH 4 +#define PNG_FILTER_VALUE_LAST 5 + +#ifdef PNG_WRITE_WEIGHTED_FILTER_SUPPORTED /* EXPERIMENTAL */ +/* The "heuristic_method" is given by one of the PNG_FILTER_HEURISTIC_ + * defines, either the default (minimum-sum-of-absolute-differences), or + * the experimental method (weighted-minimum-sum-of-absolute-differences). + * + * Weights are factors >= 1.0, indicating how important it is to keep the + * filter type consistent between rows. Larger numbers mean the current + * filter is that many times as likely to be the same as the "num_weights" + * previous filters. This is cumulative for each previous row with a weight. + * There needs to be "num_weights" values in "filter_weights", or it can be + * NULL if the weights aren't being specified. Weights have no influence on + * the selection of the first row filter. Well chosen weights can (in theory) + * improve the compression for a given image. + * + * Costs are factors >= 1.0 indicating the relative decoding costs of a + * filter type. Higher costs indicate more decoding expense, and are + * therefore less likely to be selected over a filter with lower computational + * costs. There needs to be a value in "filter_costs" for each valid filter + * type (given by PNG_FILTER_VALUE_LAST), or it can be NULL if you aren't + * setting the costs. Costs try to improve the speed of decompression without + * unduly increasing the compressed image size. + * + * A negative weight or cost indicates the default value is to be used, and + * values in the range [0.0, 1.0) indicate the value is to remain unchanged. + * The default values for both weights and costs are currently 1.0, but may + * change if good general weighting/cost heuristics can be found. If both + * the weights and costs are set to 1.0, this degenerates the WEIGHTED method + * to the UNWEIGHTED method, but with added encoding time/computation. + */ +PNG_FP_EXPORT(68, void, png_set_filter_heuristics, (png_structp png_ptr, + int heuristic_method, int num_weights, png_const_doublep filter_weights, + png_const_doublep filter_costs)) +PNG_FIXED_EXPORT(209, void, png_set_filter_heuristics_fixed, + (png_structp png_ptr, + int heuristic_method, int num_weights, png_const_fixed_point_p + filter_weights, png_const_fixed_point_p filter_costs)) +#endif /* PNG_WRITE_WEIGHTED_FILTER_SUPPORTED */ + +/* Heuristic used for row filter selection. These defines should NOT be + * changed. + */ +#define PNG_FILTER_HEURISTIC_DEFAULT 0 /* Currently "UNWEIGHTED" */ +#define PNG_FILTER_HEURISTIC_UNWEIGHTED 1 /* Used by libpng < 0.95 */ +#define PNG_FILTER_HEURISTIC_WEIGHTED 2 /* Experimental feature */ +#define PNG_FILTER_HEURISTIC_LAST 3 /* Not a valid value */ + +#ifdef PNG_WRITE_SUPPORTED +/* Set the library compression level. Currently, valid values range from + * 0 - 9, corresponding directly to the zlib compression levels 0 - 9 + * (0 - no compression, 9 - "maximal" compression). Note that tests have + * shown that zlib compression levels 3-6 usually perform as well as level 9 + * for PNG images, and do considerably fewer caclulations. In the future, + * these values may not correspond directly to the zlib compression levels. + */ +PNG_EXPORT(69, void, png_set_compression_level, + (png_structp png_ptr, int level)); + +PNG_EXPORT(70, void, png_set_compression_mem_level, (png_structp png_ptr, + int mem_level)); + +PNG_EXPORT(71, void, png_set_compression_strategy, (png_structp png_ptr, + int strategy)); + +/* If PNG_WRITE_OPTIMIZE_CMF_SUPPORTED is defined, libpng will use a + * smaller value of window_bits if it can do so safely. + */ +PNG_EXPORT(72, void, png_set_compression_window_bits, (png_structp png_ptr, + int window_bits)); + +PNG_EXPORT(73, void, png_set_compression_method, (png_structp png_ptr, + int method)); +#endif + +#ifdef PNG_WRITE_CUSTOMIZE_ZTXT_COMPRESSION_SUPPORTED +/* Also set zlib parameters for compressing non-IDAT chunks */ +PNG_EXPORT(222, void, png_set_text_compression_level, + (png_structp png_ptr, int level)); + +PNG_EXPORT(223, void, png_set_text_compression_mem_level, (png_structp png_ptr, + int mem_level)); + +PNG_EXPORT(224, void, png_set_text_compression_strategy, (png_structp png_ptr, + int strategy)); + +/* If PNG_WRITE_OPTIMIZE_CMF_SUPPORTED is defined, libpng will use a + * smaller value of window_bits if it can do so safely. + */ +PNG_EXPORT(225, void, png_set_text_compression_window_bits, (png_structp + png_ptr, int window_bits)); + +PNG_EXPORT(226, void, png_set_text_compression_method, (png_structp png_ptr, + int method)); +#endif /* PNG_WRITE_CUSTOMIZE_ZTXT_COMPRESSION_SUPPORTED */ + +/* These next functions are called for input/output, memory, and error + * handling. They are in the file pngrio.c, pngwio.c, and pngerror.c, + * and call standard C I/O routines such as fread(), fwrite(), and + * fprintf(). These functions can be made to use other I/O routines + * at run time for those applications that need to handle I/O in a + * different manner by calling png_set_???_fn(). See libpng-manual.txt for + * more information. + */ + +#ifdef PNG_STDIO_SUPPORTED +/* Initialize the input/output for the PNG file to the default functions. */ +PNG_EXPORT(74, void, png_init_io, (png_structp png_ptr, png_FILE_p fp)); +#endif + +/* Replace the (error and abort), and warning functions with user + * supplied functions. If no messages are to be printed you must still + * write and use replacement functions. The replacement error_fn should + * still do a longjmp to the last setjmp location if you are using this + * method of error handling. If error_fn or warning_fn is NULL, the + * default function will be used. + */ + +PNG_EXPORT(75, void, png_set_error_fn, + (png_structp png_ptr, png_voidp error_ptr, + png_error_ptr error_fn, png_error_ptr warning_fn)); + +/* Return the user pointer associated with the error functions */ +PNG_EXPORT(76, png_voidp, png_get_error_ptr, (png_const_structp png_ptr)); + +/* Replace the default data output functions with a user supplied one(s). + * If buffered output is not used, then output_flush_fn can be set to NULL. + * If PNG_WRITE_FLUSH_SUPPORTED is not defined at libpng compile time + * output_flush_fn will be ignored (and thus can be NULL). + * It is probably a mistake to use NULL for output_flush_fn if + * write_data_fn is not also NULL unless you have built libpng with + * PNG_WRITE_FLUSH_SUPPORTED undefined, because in this case libpng's + * default flush function, which uses the standard *FILE structure, will + * be used. + */ +PNG_EXPORT(77, void, png_set_write_fn, (png_structp png_ptr, png_voidp io_ptr, + png_rw_ptr write_data_fn, png_flush_ptr output_flush_fn)); + +/* Replace the default data input function with a user supplied one. */ +PNG_EXPORT(78, void, png_set_read_fn, (png_structp png_ptr, png_voidp io_ptr, + png_rw_ptr read_data_fn)); + +/* Return the user pointer associated with the I/O functions */ +PNG_EXPORT(79, png_voidp, png_get_io_ptr, (png_structp png_ptr)); + +PNG_EXPORT(80, void, png_set_read_status_fn, (png_structp png_ptr, + png_read_status_ptr read_row_fn)); + +PNG_EXPORT(81, void, png_set_write_status_fn, (png_structp png_ptr, + png_write_status_ptr write_row_fn)); + +#ifdef PNG_USER_MEM_SUPPORTED +/* Replace the default memory allocation functions with user supplied one(s). */ +PNG_EXPORT(82, void, png_set_mem_fn, (png_structp png_ptr, png_voidp mem_ptr, + png_malloc_ptr malloc_fn, png_free_ptr free_fn)); +/* Return the user pointer associated with the memory functions */ +PNG_EXPORT(83, png_voidp, png_get_mem_ptr, (png_const_structp png_ptr)); +#endif + +#ifdef PNG_READ_USER_TRANSFORM_SUPPORTED +PNG_EXPORT(84, void, png_set_read_user_transform_fn, (png_structp png_ptr, + png_user_transform_ptr read_user_transform_fn)); +#endif + +#ifdef PNG_WRITE_USER_TRANSFORM_SUPPORTED +PNG_EXPORT(85, void, png_set_write_user_transform_fn, (png_structp png_ptr, + png_user_transform_ptr write_user_transform_fn)); +#endif + +#ifdef PNG_USER_TRANSFORM_PTR_SUPPORTED +PNG_EXPORT(86, void, png_set_user_transform_info, (png_structp png_ptr, + png_voidp user_transform_ptr, int user_transform_depth, + int user_transform_channels)); +/* Return the user pointer associated with the user transform functions */ +PNG_EXPORT(87, png_voidp, png_get_user_transform_ptr, + (png_const_structp png_ptr)); +#endif + +#ifdef PNG_USER_TRANSFORM_INFO_SUPPORTED +/* Return information about the row currently being processed. Note that these + * APIs do not fail but will return unexpected results if called outside a user + * transform callback. Also note that when transforming an interlaced image the + * row number is the row number within the sub-image of the interlace pass, so + * the value will increase to the height of the sub-image (not the full image) + * then reset to 0 for the next pass. + * + * Use PNG_ROW_FROM_PASS_ROW(row, pass) and PNG_COL_FROM_PASS_COL(col, pass) to + * find the output pixel (x,y) given an interlaced sub-image pixel + * (row,col,pass). (See below for these macros.) + */ +PNG_EXPORT(217, png_uint_32, png_get_current_row_number, (png_const_structp)); +PNG_EXPORT(218, png_byte, png_get_current_pass_number, (png_const_structp)); +#endif + +#ifdef PNG_USER_CHUNKS_SUPPORTED +PNG_EXPORT(88, void, png_set_read_user_chunk_fn, (png_structp png_ptr, + png_voidp user_chunk_ptr, png_user_chunk_ptr read_user_chunk_fn)); +PNG_EXPORT(89, png_voidp, png_get_user_chunk_ptr, (png_const_structp png_ptr)); +#endif + +#ifdef PNG_PROGRESSIVE_READ_SUPPORTED +/* Sets the function callbacks for the push reader, and a pointer to a + * user-defined structure available to the callback functions. + */ +PNG_EXPORT(90, void, png_set_progressive_read_fn, (png_structp png_ptr, + png_voidp progressive_ptr, png_progressive_info_ptr info_fn, + png_progressive_row_ptr row_fn, png_progressive_end_ptr end_fn)); + +/* Returns the user pointer associated with the push read functions */ +PNG_EXPORT(91, png_voidp, png_get_progressive_ptr, (png_const_structp png_ptr)); + +/* Function to be called when data becomes available */ +PNG_EXPORT(92, void, png_process_data, + (png_structp png_ptr, png_infop info_ptr, + png_bytep buffer, png_size_t buffer_size)); + +/* A function which may be called *only* within png_process_data to stop the + * processing of any more data. The function returns the number of bytes + * remaining, excluding any that libpng has cached internally. A subsequent + * call to png_process_data must supply these bytes again. If the argument + * 'save' is set to true the routine will first save all the pending data and + * will always return 0. + */ +PNG_EXPORT(219, png_size_t, png_process_data_pause, (png_structp, int save)); + +/* A function which may be called *only* outside (after) a call to + * png_process_data. It returns the number of bytes of data to skip in the + * input. Normally it will return 0, but if it returns a non-zero value the + * application must skip than number of bytes of input data and pass the + * following data to the next call to png_process_data. + */ +PNG_EXPORT(220, png_uint_32, png_process_data_skip, (png_structp)); + +#ifdef PNG_READ_INTERLACING_SUPPORTED +/* Function that combines rows. 'new_row' is a flag that should come from + * the callback and be non-NULL if anything needs to be done; the library + * stores its own version of the new data internally and ignores the passed + * in value. + */ +PNG_EXPORT(93, void, png_progressive_combine_row, (png_structp png_ptr, + png_bytep old_row, png_const_bytep new_row)); +#endif /* PNG_READ_INTERLACING_SUPPORTED */ +#endif /* PNG_PROGRESSIVE_READ_SUPPORTED */ + +PNG_EXPORTA(94, png_voidp, png_malloc, + (png_structp png_ptr, png_alloc_size_t size), + PNG_ALLOCATED); +/* Added at libpng version 1.4.0 */ +PNG_EXPORTA(95, png_voidp, png_calloc, + (png_structp png_ptr, png_alloc_size_t size), + PNG_ALLOCATED); + +/* Added at libpng version 1.2.4 */ +PNG_EXPORTA(96, png_voidp, png_malloc_warn, (png_structp png_ptr, + png_alloc_size_t size), PNG_ALLOCATED); + +/* Frees a pointer allocated by png_malloc() */ +PNG_EXPORT(97, void, png_free, (png_structp png_ptr, png_voidp ptr)); + +/* Free data that was allocated internally */ +PNG_EXPORT(98, void, png_free_data, + (png_structp png_ptr, png_infop info_ptr, png_uint_32 free_me, int num)); + +/* Reassign responsibility for freeing existing data, whether allocated + * by libpng or by the application */ +PNG_EXPORT(99, void, png_data_freer, + (png_structp png_ptr, png_infop info_ptr, int freer, png_uint_32 mask)); + +/* Assignments for png_data_freer */ +#define PNG_DESTROY_WILL_FREE_DATA 1 +#define PNG_SET_WILL_FREE_DATA 1 +#define PNG_USER_WILL_FREE_DATA 2 +/* Flags for png_ptr->free_me and info_ptr->free_me */ +#define PNG_FREE_HIST 0x0008 +#define PNG_FREE_ICCP 0x0010 +#define PNG_FREE_SPLT 0x0020 +#define PNG_FREE_ROWS 0x0040 +#define PNG_FREE_PCAL 0x0080 +#define PNG_FREE_SCAL 0x0100 +#define PNG_FREE_UNKN 0x0200 +#define PNG_FREE_LIST 0x0400 +#define PNG_FREE_PLTE 0x1000 +#define PNG_FREE_TRNS 0x2000 +#define PNG_FREE_TEXT 0x4000 +#define PNG_FREE_ALL 0x7fff +#define PNG_FREE_MUL 0x4220 /* PNG_FREE_SPLT|PNG_FREE_TEXT|PNG_FREE_UNKN */ + +#ifdef PNG_USER_MEM_SUPPORTED +PNG_EXPORTA(100, png_voidp, png_malloc_default, (png_structp png_ptr, + png_alloc_size_t size), PNG_ALLOCATED); +PNG_EXPORT(101, void, png_free_default, (png_structp png_ptr, png_voidp ptr)); +#endif + +#ifdef PNG_ERROR_TEXT_SUPPORTED +/* Fatal error in PNG image of libpng - can't continue */ +PNG_EXPORTA(102, void, png_error, + (png_structp png_ptr, png_const_charp error_message), + PNG_NORETURN); + +/* The same, but the chunk name is prepended to the error string. */ +PNG_EXPORTA(103, void, png_chunk_error, (png_structp png_ptr, + png_const_charp error_message), PNG_NORETURN); + +#else +/* Fatal error in PNG image of libpng - can't continue */ +PNG_EXPORTA(104, void, png_err, (png_structp png_ptr), PNG_NORETURN); +#endif + +#ifdef PNG_WARNINGS_SUPPORTED +/* Non-fatal error in libpng. Can continue, but may have a problem. */ +PNG_EXPORT(105, void, png_warning, (png_structp png_ptr, + png_const_charp warning_message)); + +/* Non-fatal error in libpng, chunk name is prepended to message. */ +PNG_EXPORT(106, void, png_chunk_warning, (png_structp png_ptr, + png_const_charp warning_message)); +#endif + +#ifdef PNG_BENIGN_ERRORS_SUPPORTED +/* Benign error in libpng. Can continue, but may have a problem. + * User can choose whether to handle as a fatal error or as a warning. */ +# undef png_benign_error +PNG_EXPORT(107, void, png_benign_error, (png_structp png_ptr, + png_const_charp warning_message)); + +/* Same, chunk name is prepended to message. */ +# undef png_chunk_benign_error +PNG_EXPORT(108, void, png_chunk_benign_error, (png_structp png_ptr, + png_const_charp warning_message)); + +PNG_EXPORT(109, void, png_set_benign_errors, + (png_structp png_ptr, int allowed)); +#else +# ifdef PNG_ALLOW_BENIGN_ERRORS +# define png_benign_error png_warning +# define png_chunk_benign_error png_chunk_warning +# else +# define png_benign_error png_error +# define png_chunk_benign_error png_chunk_error +# endif +#endif + +/* The png_set_ functions are for storing values in the png_info_struct. + * Similarly, the png_get_ calls are used to read values from the + * png_info_struct, either storing the parameters in the passed variables, or + * setting pointers into the png_info_struct where the data is stored. The + * png_get_ functions return a non-zero value if the data was available + * in info_ptr, or return zero and do not change any of the parameters if the + * data was not available. + * + * These functions should be used instead of directly accessing png_info + * to avoid problems with future changes in the size and internal layout of + * png_info_struct. + */ +/* Returns "flag" if chunk data is valid in info_ptr. */ +PNG_EXPORT(110, png_uint_32, png_get_valid, + (png_const_structp png_ptr, png_const_infop info_ptr, + png_uint_32 flag)); + +/* Returns number of bytes needed to hold a transformed row. */ +PNG_EXPORT(111, png_size_t, png_get_rowbytes, (png_const_structp png_ptr, + png_const_infop info_ptr)); + +#ifdef PNG_INFO_IMAGE_SUPPORTED +/* Returns row_pointers, which is an array of pointers to scanlines that was + * returned from png_read_png(). + */ +PNG_EXPORT(112, png_bytepp, png_get_rows, + (png_const_structp png_ptr, png_const_infop info_ptr)); +/* Set row_pointers, which is an array of pointers to scanlines for use + * by png_write_png(). + */ +PNG_EXPORT(113, void, png_set_rows, (png_structp png_ptr, + png_infop info_ptr, png_bytepp row_pointers)); +#endif + +/* Returns number of color channels in image. */ +PNG_EXPORT(114, png_byte, png_get_channels, + (png_const_structp png_ptr, png_const_infop info_ptr)); + +#ifdef PNG_EASY_ACCESS_SUPPORTED +/* Returns image width in pixels. */ +PNG_EXPORT(115, png_uint_32, png_get_image_width, (png_const_structp png_ptr, + png_const_infop info_ptr)); + +/* Returns image height in pixels. */ +PNG_EXPORT(116, png_uint_32, png_get_image_height, (png_const_structp png_ptr, + png_const_infop info_ptr)); + +/* Returns image bit_depth. */ +PNG_EXPORT(117, png_byte, png_get_bit_depth, + (png_const_structp png_ptr, png_const_infop info_ptr)); + +/* Returns image color_type. */ +PNG_EXPORT(118, png_byte, png_get_color_type, (png_const_structp png_ptr, + png_const_infop info_ptr)); + +/* Returns image filter_type. */ +PNG_EXPORT(119, png_byte, png_get_filter_type, (png_const_structp png_ptr, + png_const_infop info_ptr)); + +/* Returns image interlace_type. */ +PNG_EXPORT(120, png_byte, png_get_interlace_type, (png_const_structp png_ptr, + png_const_infop info_ptr)); + +/* Returns image compression_type. */ +PNG_EXPORT(121, png_byte, png_get_compression_type, (png_const_structp png_ptr, + png_const_infop info_ptr)); + +/* Returns image resolution in pixels per meter, from pHYs chunk data. */ +PNG_EXPORT(122, png_uint_32, png_get_pixels_per_meter, + (png_const_structp png_ptr, png_const_infop info_ptr)); +PNG_EXPORT(123, png_uint_32, png_get_x_pixels_per_meter, + (png_const_structp png_ptr, png_const_infop info_ptr)); +PNG_EXPORT(124, png_uint_32, png_get_y_pixels_per_meter, + (png_const_structp png_ptr, png_const_infop info_ptr)); + +/* Returns pixel aspect ratio, computed from pHYs chunk data. */ +PNG_FP_EXPORT(125, float, png_get_pixel_aspect_ratio, + (png_const_structp png_ptr, png_const_infop info_ptr)) +PNG_FIXED_EXPORT(210, png_fixed_point, png_get_pixel_aspect_ratio_fixed, + (png_const_structp png_ptr, png_const_infop info_ptr)) + +/* Returns image x, y offset in pixels or microns, from oFFs chunk data. */ +PNG_EXPORT(126, png_int_32, png_get_x_offset_pixels, + (png_const_structp png_ptr, png_const_infop info_ptr)); +PNG_EXPORT(127, png_int_32, png_get_y_offset_pixels, + (png_const_structp png_ptr, png_const_infop info_ptr)); +PNG_EXPORT(128, png_int_32, png_get_x_offset_microns, + (png_const_structp png_ptr, png_const_infop info_ptr)); +PNG_EXPORT(129, png_int_32, png_get_y_offset_microns, + (png_const_structp png_ptr, png_const_infop info_ptr)); + +#endif /* PNG_EASY_ACCESS_SUPPORTED */ + +/* Returns pointer to signature string read from PNG header */ +PNG_EXPORT(130, png_const_bytep, png_get_signature, + (png_const_structp png_ptr, png_infop info_ptr)); + +#ifdef PNG_bKGD_SUPPORTED +PNG_EXPORT(131, png_uint_32, png_get_bKGD, + (png_const_structp png_ptr, png_infop info_ptr, + png_color_16p *background)); +#endif + +#ifdef PNG_bKGD_SUPPORTED +PNG_EXPORT(132, void, png_set_bKGD, (png_structp png_ptr, png_infop info_ptr, + png_const_color_16p background)); +#endif + +#ifdef PNG_cHRM_SUPPORTED +PNG_FP_EXPORT(133, png_uint_32, png_get_cHRM, (png_const_structp png_ptr, + png_const_infop info_ptr, double *white_x, double *white_y, double *red_x, + double *red_y, double *green_x, double *green_y, double *blue_x, + double *blue_y)) +PNG_FP_EXPORT(230, png_uint_32, png_get_cHRM_XYZ, (png_structp png_ptr, + png_const_infop info_ptr, double *red_X, double *red_Y, double *red_Z, + double *green_X, double *green_Y, double *green_Z, double *blue_X, + double *blue_Y, double *blue_Z)) +#ifdef PNG_FIXED_POINT_SUPPORTED /* Otherwise not implemented */ +PNG_FIXED_EXPORT(134, png_uint_32, png_get_cHRM_fixed, + (png_const_structp png_ptr, + png_const_infop info_ptr, png_fixed_point *int_white_x, + png_fixed_point *int_white_y, png_fixed_point *int_red_x, + png_fixed_point *int_red_y, png_fixed_point *int_green_x, + png_fixed_point *int_green_y, png_fixed_point *int_blue_x, + png_fixed_point *int_blue_y)) +#endif +PNG_FIXED_EXPORT(231, png_uint_32, png_get_cHRM_XYZ_fixed, + (png_structp png_ptr, png_const_infop info_ptr, + png_fixed_point *int_red_X, png_fixed_point *int_red_Y, + png_fixed_point *int_red_Z, png_fixed_point *int_green_X, + png_fixed_point *int_green_Y, png_fixed_point *int_green_Z, + png_fixed_point *int_blue_X, png_fixed_point *int_blue_Y, + png_fixed_point *int_blue_Z)) +#endif + +#ifdef PNG_cHRM_SUPPORTED +PNG_FP_EXPORT(135, void, png_set_cHRM, + (png_structp png_ptr, png_infop info_ptr, + double white_x, double white_y, double red_x, double red_y, double green_x, + double green_y, double blue_x, double blue_y)) +PNG_FP_EXPORT(232, void, png_set_cHRM_XYZ, (png_structp png_ptr, + png_infop info_ptr, double red_X, double red_Y, double red_Z, + double green_X, double green_Y, double green_Z, double blue_X, + double blue_Y, double blue_Z)) +PNG_FIXED_EXPORT(136, void, png_set_cHRM_fixed, (png_structp png_ptr, + png_infop info_ptr, png_fixed_point int_white_x, + png_fixed_point int_white_y, png_fixed_point int_red_x, + png_fixed_point int_red_y, png_fixed_point int_green_x, + png_fixed_point int_green_y, png_fixed_point int_blue_x, + png_fixed_point int_blue_y)) +PNG_FIXED_EXPORT(233, void, png_set_cHRM_XYZ_fixed, (png_structp png_ptr, + png_infop info_ptr, png_fixed_point int_red_X, png_fixed_point int_red_Y, + png_fixed_point int_red_Z, png_fixed_point int_green_X, + png_fixed_point int_green_Y, png_fixed_point int_green_Z, + png_fixed_point int_blue_X, png_fixed_point int_blue_Y, + png_fixed_point int_blue_Z)) +#endif + +#ifdef PNG_gAMA_SUPPORTED +PNG_FP_EXPORT(137, png_uint_32, png_get_gAMA, + (png_const_structp png_ptr, png_const_infop info_ptr, + double *file_gamma)) +PNG_FIXED_EXPORT(138, png_uint_32, png_get_gAMA_fixed, + (png_const_structp png_ptr, png_const_infop info_ptr, + png_fixed_point *int_file_gamma)) +#endif + +#ifdef PNG_gAMA_SUPPORTED +PNG_FP_EXPORT(139, void, png_set_gAMA, (png_structp png_ptr, + png_infop info_ptr, double file_gamma)) +PNG_FIXED_EXPORT(140, void, png_set_gAMA_fixed, (png_structp png_ptr, + png_infop info_ptr, png_fixed_point int_file_gamma)) +#endif + +#ifdef PNG_hIST_SUPPORTED +PNG_EXPORT(141, png_uint_32, png_get_hIST, + (png_const_structp png_ptr, png_const_infop info_ptr, + png_uint_16p *hist)); +#endif + +#ifdef PNG_hIST_SUPPORTED +PNG_EXPORT(142, void, png_set_hIST, (png_structp png_ptr, + png_infop info_ptr, png_const_uint_16p hist)); +#endif + +PNG_EXPORT(143, png_uint_32, png_get_IHDR, + (png_structp png_ptr, png_infop info_ptr, + png_uint_32 *width, png_uint_32 *height, int *bit_depth, int *color_type, + int *interlace_method, int *compression_method, int *filter_method)); + +PNG_EXPORT(144, void, png_set_IHDR, + (png_structp png_ptr, png_infop info_ptr, + png_uint_32 width, png_uint_32 height, int bit_depth, int color_type, + int interlace_method, int compression_method, int filter_method)); + +#ifdef PNG_oFFs_SUPPORTED +PNG_EXPORT(145, png_uint_32, png_get_oFFs, + (png_const_structp png_ptr, png_const_infop info_ptr, + png_int_32 *offset_x, png_int_32 *offset_y, int *unit_type)); +#endif + +#ifdef PNG_oFFs_SUPPORTED +PNG_EXPORT(146, void, png_set_oFFs, + (png_structp png_ptr, png_infop info_ptr, + png_int_32 offset_x, png_int_32 offset_y, int unit_type)); +#endif + +#ifdef PNG_pCAL_SUPPORTED +PNG_EXPORT(147, png_uint_32, png_get_pCAL, + (png_const_structp png_ptr, png_const_infop info_ptr, + png_charp *purpose, png_int_32 *X0, png_int_32 *X1, int *type, + int *nparams, + png_charp *units, png_charpp *params)); +#endif + +#ifdef PNG_pCAL_SUPPORTED +PNG_EXPORT(148, void, png_set_pCAL, (png_structp png_ptr, + png_infop info_ptr, + png_const_charp purpose, png_int_32 X0, png_int_32 X1, int type, + int nparams, png_const_charp units, png_charpp params)); +#endif + +#ifdef PNG_pHYs_SUPPORTED +PNG_EXPORT(149, png_uint_32, png_get_pHYs, + (png_const_structp png_ptr, png_const_infop info_ptr, + png_uint_32 *res_x, png_uint_32 *res_y, int *unit_type)); +#endif + +#ifdef PNG_pHYs_SUPPORTED +PNG_EXPORT(150, void, png_set_pHYs, + (png_structp png_ptr, png_infop info_ptr, + png_uint_32 res_x, png_uint_32 res_y, int unit_type)); +#endif + +PNG_EXPORT(151, png_uint_32, png_get_PLTE, + (png_const_structp png_ptr, png_const_infop info_ptr, + png_colorp *palette, int *num_palette)); + +PNG_EXPORT(152, void, png_set_PLTE, + (png_structp png_ptr, png_infop info_ptr, + png_const_colorp palette, int num_palette)); + +#ifdef PNG_sBIT_SUPPORTED +PNG_EXPORT(153, png_uint_32, png_get_sBIT, + (png_const_structp png_ptr, png_infop info_ptr, + png_color_8p *sig_bit)); +#endif + +#ifdef PNG_sBIT_SUPPORTED +PNG_EXPORT(154, void, png_set_sBIT, + (png_structp png_ptr, png_infop info_ptr, png_const_color_8p sig_bit)); +#endif + +#ifdef PNG_sRGB_SUPPORTED +PNG_EXPORT(155, png_uint_32, png_get_sRGB, (png_const_structp png_ptr, + png_const_infop info_ptr, int *file_srgb_intent)); +#endif + +#ifdef PNG_sRGB_SUPPORTED +PNG_EXPORT(156, void, png_set_sRGB, + (png_structp png_ptr, png_infop info_ptr, int srgb_intent)); +PNG_EXPORT(157, void, png_set_sRGB_gAMA_and_cHRM, (png_structp png_ptr, + png_infop info_ptr, int srgb_intent)); +#endif + +#ifdef PNG_iCCP_SUPPORTED +PNG_EXPORT(158, png_uint_32, png_get_iCCP, + (png_const_structp png_ptr, png_const_infop info_ptr, + png_charpp name, int *compression_type, png_bytepp profile, + png_uint_32 *proflen)); +#endif + +#ifdef PNG_iCCP_SUPPORTED +PNG_EXPORT(159, void, png_set_iCCP, + (png_structp png_ptr, png_infop info_ptr, + png_const_charp name, int compression_type, png_const_bytep profile, + png_uint_32 proflen)); +#endif + +#ifdef PNG_sPLT_SUPPORTED +PNG_EXPORT(160, png_uint_32, png_get_sPLT, + (png_const_structp png_ptr, png_const_infop info_ptr, + png_sPLT_tpp entries)); +#endif + +#ifdef PNG_sPLT_SUPPORTED +PNG_EXPORT(161, void, png_set_sPLT, + (png_structp png_ptr, png_infop info_ptr, + png_const_sPLT_tp entries, int nentries)); +#endif + +#ifdef PNG_TEXT_SUPPORTED +/* png_get_text also returns the number of text chunks in *num_text */ +PNG_EXPORT(162, png_uint_32, png_get_text, + (png_const_structp png_ptr, png_const_infop info_ptr, + png_textp *text_ptr, int *num_text)); +#endif + +/* Note while png_set_text() will accept a structure whose text, + * language, and translated keywords are NULL pointers, the structure + * returned by png_get_text will always contain regular + * zero-terminated C strings. They might be empty strings but + * they will never be NULL pointers. + */ + +#ifdef PNG_TEXT_SUPPORTED +PNG_EXPORT(163, void, png_set_text, + (png_structp png_ptr, png_infop info_ptr, + png_const_textp text_ptr, int num_text)); +#endif + +#ifdef PNG_tIME_SUPPORTED +PNG_EXPORT(164, png_uint_32, png_get_tIME, + (png_const_structp png_ptr, png_infop info_ptr, png_timep *mod_time)); +#endif + +#ifdef PNG_tIME_SUPPORTED +PNG_EXPORT(165, void, png_set_tIME, + (png_structp png_ptr, png_infop info_ptr, png_const_timep mod_time)); +#endif + +#ifdef PNG_tRNS_SUPPORTED +PNG_EXPORT(166, png_uint_32, png_get_tRNS, + (png_const_structp png_ptr, png_infop info_ptr, + png_bytep *trans_alpha, int *num_trans, png_color_16p *trans_color)); +#endif + +#ifdef PNG_tRNS_SUPPORTED +PNG_EXPORT(167, void, png_set_tRNS, + (png_structp png_ptr, png_infop info_ptr, + png_const_bytep trans_alpha, int num_trans, + png_const_color_16p trans_color)); +#endif + +#ifdef PNG_sCAL_SUPPORTED +PNG_FP_EXPORT(168, png_uint_32, png_get_sCAL, + (png_const_structp png_ptr, png_const_infop info_ptr, + int *unit, double *width, double *height)) +#ifdef PNG_FLOATING_ARITHMETIC_SUPPORTED +/* NOTE: this API is currently implemented using floating point arithmetic, + * consequently it can only be used on systems with floating point support. + * In any case the range of values supported by png_fixed_point is small and it + * is highly recommended that png_get_sCAL_s be used instead. + */ +PNG_FIXED_EXPORT(214, png_uint_32, png_get_sCAL_fixed, + (png_structp png_ptr, png_const_infop info_ptr, int *unit, + png_fixed_point *width, + png_fixed_point *height)) +#endif +PNG_EXPORT(169, png_uint_32, png_get_sCAL_s, + (png_const_structp png_ptr, png_const_infop info_ptr, + int *unit, png_charpp swidth, png_charpp sheight)); + +PNG_FP_EXPORT(170, void, png_set_sCAL, + (png_structp png_ptr, png_infop info_ptr, + int unit, double width, double height)) +PNG_FIXED_EXPORT(213, void, png_set_sCAL_fixed, (png_structp png_ptr, + png_infop info_ptr, int unit, png_fixed_point width, + png_fixed_point height)) +PNG_EXPORT(171, void, png_set_sCAL_s, + (png_structp png_ptr, png_infop info_ptr, + int unit, png_const_charp swidth, png_const_charp sheight)); +#endif /* PNG_sCAL_SUPPORTED */ + +#ifdef PNG_HANDLE_AS_UNKNOWN_SUPPORTED +/* Provide a list of chunks and how they are to be handled, if the built-in + handling or default unknown chunk handling is not desired. Any chunks not + listed will be handled in the default manner. The IHDR and IEND chunks + must not be listed. Because this turns off the default handling for chunks + that would otherwise be recognized the behavior of libpng transformations may + well become incorrect! + keep = 0: PNG_HANDLE_CHUNK_AS_DEFAULT: follow default behavior + = 1: PNG_HANDLE_CHUNK_NEVER: do not keep + = 2: PNG_HANDLE_CHUNK_IF_SAFE: keep only if safe-to-copy + = 3: PNG_HANDLE_CHUNK_ALWAYS: keep even if unsafe-to-copy +*/ +PNG_EXPORT(172, void, png_set_keep_unknown_chunks, + (png_structp png_ptr, int keep, + png_const_bytep chunk_list, int num_chunks)); + +/* The handling code is returned; the result is therefore true (non-zero) if + * special handling is required, false for the default handling. + */ +PNG_EXPORT(173, int, png_handle_as_unknown, (png_structp png_ptr, + png_const_bytep chunk_name)); +#endif +#ifdef PNG_UNKNOWN_CHUNKS_SUPPORTED +PNG_EXPORT(174, void, png_set_unknown_chunks, (png_structp png_ptr, + png_infop info_ptr, png_const_unknown_chunkp unknowns, + int num_unknowns)); +PNG_EXPORT(175, void, png_set_unknown_chunk_location, + (png_structp png_ptr, png_infop info_ptr, int chunk, int location)); +PNG_EXPORT(176, int, png_get_unknown_chunks, (png_const_structp png_ptr, + png_const_infop info_ptr, png_unknown_chunkpp entries)); +#endif + +/* Png_free_data() will turn off the "valid" flag for anything it frees. + * If you need to turn it off for a chunk that your application has freed, + * you can use png_set_invalid(png_ptr, info_ptr, PNG_INFO_CHNK); + */ +PNG_EXPORT(177, void, png_set_invalid, + (png_structp png_ptr, png_infop info_ptr, int mask)); + +#ifdef PNG_INFO_IMAGE_SUPPORTED +/* The "params" pointer is currently not used and is for future expansion. */ +PNG_EXPORT(178, void, png_read_png, (png_structp png_ptr, png_infop info_ptr, + int transforms, png_voidp params)); +PNG_EXPORT(179, void, png_write_png, (png_structp png_ptr, png_infop info_ptr, + int transforms, png_voidp params)); +#endif + +PNG_EXPORT(180, png_const_charp, png_get_copyright, + (png_const_structp png_ptr)); +PNG_EXPORT(181, png_const_charp, png_get_header_ver, + (png_const_structp png_ptr)); +PNG_EXPORT(182, png_const_charp, png_get_header_version, + (png_const_structp png_ptr)); +PNG_EXPORT(183, png_const_charp, png_get_libpng_ver, + (png_const_structp png_ptr)); + +#ifdef PNG_MNG_FEATURES_SUPPORTED +PNG_EXPORT(184, png_uint_32, png_permit_mng_features, (png_structp png_ptr, + png_uint_32 mng_features_permitted)); +#endif + +/* For use in png_set_keep_unknown, added to version 1.2.6 */ +#define PNG_HANDLE_CHUNK_AS_DEFAULT 0 +#define PNG_HANDLE_CHUNK_NEVER 1 +#define PNG_HANDLE_CHUNK_IF_SAFE 2 +#define PNG_HANDLE_CHUNK_ALWAYS 3 + +/* Strip the prepended error numbers ("#nnn ") from error and warning + * messages before passing them to the error or warning handler. + */ +#ifdef PNG_ERROR_NUMBERS_SUPPORTED +PNG_EXPORT(185, void, png_set_strip_error_numbers, + (png_structp png_ptr, + png_uint_32 strip_mode)); +#endif + +/* Added in libpng-1.2.6 */ +#ifdef PNG_SET_USER_LIMITS_SUPPORTED +PNG_EXPORT(186, void, png_set_user_limits, (png_structp png_ptr, + png_uint_32 user_width_max, png_uint_32 user_height_max)); +PNG_EXPORT(187, png_uint_32, png_get_user_width_max, + (png_const_structp png_ptr)); +PNG_EXPORT(188, png_uint_32, png_get_user_height_max, + (png_const_structp png_ptr)); +/* Added in libpng-1.4.0 */ +PNG_EXPORT(189, void, png_set_chunk_cache_max, (png_structp png_ptr, + png_uint_32 user_chunk_cache_max)); +PNG_EXPORT(190, png_uint_32, png_get_chunk_cache_max, + (png_const_structp png_ptr)); +/* Added in libpng-1.4.1 */ +PNG_EXPORT(191, void, png_set_chunk_malloc_max, (png_structp png_ptr, + png_alloc_size_t user_chunk_cache_max)); +PNG_EXPORT(192, png_alloc_size_t, png_get_chunk_malloc_max, + (png_const_structp png_ptr)); +#endif + +#if defined(PNG_INCH_CONVERSIONS_SUPPORTED) +PNG_EXPORT(193, png_uint_32, png_get_pixels_per_inch, + (png_const_structp png_ptr, png_const_infop info_ptr)); + +PNG_EXPORT(194, png_uint_32, png_get_x_pixels_per_inch, + (png_const_structp png_ptr, png_const_infop info_ptr)); + +PNG_EXPORT(195, png_uint_32, png_get_y_pixels_per_inch, + (png_const_structp png_ptr, png_const_infop info_ptr)); + +PNG_FP_EXPORT(196, float, png_get_x_offset_inches, + (png_const_structp png_ptr, png_const_infop info_ptr)) +#ifdef PNG_FIXED_POINT_SUPPORTED /* otherwise not implemented. */ +PNG_FIXED_EXPORT(211, png_fixed_point, png_get_x_offset_inches_fixed, + (png_structp png_ptr, png_const_infop info_ptr)) +#endif + +PNG_FP_EXPORT(197, float, png_get_y_offset_inches, (png_const_structp png_ptr, + png_const_infop info_ptr)) +#ifdef PNG_FIXED_POINT_SUPPORTED /* otherwise not implemented. */ +PNG_FIXED_EXPORT(212, png_fixed_point, png_get_y_offset_inches_fixed, + (png_structp png_ptr, png_const_infop info_ptr)) +#endif + +# ifdef PNG_pHYs_SUPPORTED +PNG_EXPORT(198, png_uint_32, png_get_pHYs_dpi, (png_const_structp png_ptr, + png_const_infop info_ptr, png_uint_32 *res_x, png_uint_32 *res_y, + int *unit_type)); +# endif /* PNG_pHYs_SUPPORTED */ +#endif /* PNG_INCH_CONVERSIONS_SUPPORTED */ + +/* Added in libpng-1.4.0 */ +#ifdef PNG_IO_STATE_SUPPORTED +PNG_EXPORT(199, png_uint_32, png_get_io_state, (png_structp png_ptr)); + +PNG_EXPORTA(200, png_const_bytep, png_get_io_chunk_name, + (png_structp png_ptr), PNG_DEPRECATED); +PNG_EXPORT(216, png_uint_32, png_get_io_chunk_type, + (png_const_structp png_ptr)); + +/* The flags returned by png_get_io_state() are the following: */ +# define PNG_IO_NONE 0x0000 /* no I/O at this moment */ +# define PNG_IO_READING 0x0001 /* currently reading */ +# define PNG_IO_WRITING 0x0002 /* currently writing */ +# define PNG_IO_SIGNATURE 0x0010 /* currently at the file signature */ +# define PNG_IO_CHUNK_HDR 0x0020 /* currently at the chunk header */ +# define PNG_IO_CHUNK_DATA 0x0040 /* currently at the chunk data */ +# define PNG_IO_CHUNK_CRC 0x0080 /* currently at the chunk crc */ +# define PNG_IO_MASK_OP 0x000f /* current operation: reading/writing */ +# define PNG_IO_MASK_LOC 0x00f0 /* current location: sig/hdr/data/crc */ +#endif /* ?PNG_IO_STATE_SUPPORTED */ + +/* Interlace support. The following macros are always defined so that if + * libpng interlace handling is turned off the macros may be used to handle + * interlaced images within the application. + */ +#define PNG_INTERLACE_ADAM7_PASSES 7 + +/* Two macros to return the first row and first column of the original, + * full, image which appears in a given pass. 'pass' is in the range 0 + * to 6 and the result is in the range 0 to 7. + */ +#define PNG_PASS_START_ROW(pass) (((1&~(pass))<<(3-((pass)>>1)))&7) +#define PNG_PASS_START_COL(pass) (((1& (pass))<<(3-(((pass)+1)>>1)))&7) + +/* A macro to return the offset between pixels in the output row for a pair of + * pixels in the input - effectively the inverse of the 'COL_SHIFT' macro that + * follows. Note that ROW_OFFSET is the offset from one row to the next whereas + * COL_OFFSET is from one column to the next, within a row. + */ +#define PNG_PASS_ROW_OFFSET(pass) ((pass)>2?(8>>(((pass)-1)>>1)):8) +#define PNG_PASS_COL_OFFSET(pass) (1<<((7-(pass))>>1)) + +/* Two macros to help evaluate the number of rows or columns in each + * pass. This is expressed as a shift - effectively log2 of the number or + * rows or columns in each 8x8 tile of the original image. + */ +#define PNG_PASS_ROW_SHIFT(pass) ((pass)>2?(8-(pass))>>1:3) +#define PNG_PASS_COL_SHIFT(pass) ((pass)>1?(7-(pass))>>1:3) + +/* Hence two macros to determine the number of rows or columns in a given + * pass of an image given its height or width. In fact these macros may + * return non-zero even though the sub-image is empty, because the other + * dimension may be empty for a small image. + */ +#define PNG_PASS_ROWS(height, pass) (((height)+(((1<>PNG_PASS_ROW_SHIFT(pass)) +#define PNG_PASS_COLS(width, pass) (((width)+(((1<>PNG_PASS_COL_SHIFT(pass)) + +/* For the reader row callbacks (both progressive and sequential) it is + * necessary to find the row in the output image given a row in an interlaced + * image, so two more macros: + */ +#define PNG_ROW_FROM_PASS_ROW(yIn, pass) \ + (((yIn)<>(((7-(off))-(pass))<<2)) & 0xF) | \ + ((0x01145AF0>>(((7-(off))-(pass))<<2)) & 0xF0)) + +#define PNG_ROW_IN_INTERLACE_PASS(y, pass) \ + ((PNG_PASS_MASK(pass,0) >> ((y)&7)) & 1) +#define PNG_COL_IN_INTERLACE_PASS(x, pass) \ + ((PNG_PASS_MASK(pass,1) >> ((x)&7)) & 1) + +#ifdef PNG_READ_COMPOSITE_NODIV_SUPPORTED +/* With these routines we avoid an integer divide, which will be slower on + * most machines. However, it does take more operations than the corresponding + * divide method, so it may be slower on a few RISC systems. There are two + * shifts (by 8 or 16 bits) and an addition, versus a single integer divide. + * + * Note that the rounding factors are NOT supposed to be the same! 128 and + * 32768 are correct for the NODIV code; 127 and 32767 are correct for the + * standard method. + * + * [Optimized code by Greg Roelofs and Mark Adler...blame us for bugs. :-) ] + */ + + /* fg and bg should be in `gamma 1.0' space; alpha is the opacity */ + +# define png_composite(composite, fg, alpha, bg) \ + { png_uint_16 temp = (png_uint_16)((png_uint_16)(fg) \ + * (png_uint_16)(alpha) \ + + (png_uint_16)(bg)*(png_uint_16)(255 \ + - (png_uint_16)(alpha)) + 128); \ + (composite) = (png_byte)((temp + (temp >> 8)) >> 8); } + +# define png_composite_16(composite, fg, alpha, bg) \ + { png_uint_32 temp = (png_uint_32)((png_uint_32)(fg) \ + * (png_uint_32)(alpha) \ + + (png_uint_32)(bg)*(65535 \ + - (png_uint_32)(alpha)) + 32768); \ + (composite) = (png_uint_16)((temp + (temp >> 16)) >> 16); } + +#else /* Standard method using integer division */ + +# define png_composite(composite, fg, alpha, bg) \ + (composite) = (png_byte)(((png_uint_16)(fg) * (png_uint_16)(alpha) + \ + (png_uint_16)(bg) * (png_uint_16)(255 - (png_uint_16)(alpha)) + \ + 127) / 255) + +# define png_composite_16(composite, fg, alpha, bg) \ + (composite) = (png_uint_16)(((png_uint_32)(fg) * (png_uint_32)(alpha) + \ + (png_uint_32)(bg)*(png_uint_32)(65535 - (png_uint_32)(alpha)) + \ + 32767) / 65535) +#endif /* PNG_READ_COMPOSITE_NODIV_SUPPORTED */ + +#ifdef PNG_READ_INT_FUNCTIONS_SUPPORTED +PNG_EXPORT(201, png_uint_32, png_get_uint_32, (png_const_bytep buf)); +PNG_EXPORT(202, png_uint_16, png_get_uint_16, (png_const_bytep buf)); +PNG_EXPORT(203, png_int_32, png_get_int_32, (png_const_bytep buf)); +#endif + +PNG_EXPORT(204, png_uint_32, png_get_uint_31, (png_structp png_ptr, + png_const_bytep buf)); +/* No png_get_int_16 -- may be added if there's a real need for it. */ + +/* Place a 32-bit number into a buffer in PNG byte order (big-endian). */ +#ifdef PNG_WRITE_INT_FUNCTIONS_SUPPORTED +PNG_EXPORT(205, void, png_save_uint_32, (png_bytep buf, png_uint_32 i)); +#endif +#ifdef PNG_SAVE_INT_32_SUPPORTED +PNG_EXPORT(206, void, png_save_int_32, (png_bytep buf, png_int_32 i)); +#endif + +/* Place a 16-bit number into a buffer in PNG byte order. + * The parameter is declared unsigned int, not png_uint_16, + * just to avoid potential problems on pre-ANSI C compilers. + */ +#ifdef PNG_WRITE_INT_FUNCTIONS_SUPPORTED +PNG_EXPORT(207, void, png_save_uint_16, (png_bytep buf, unsigned int i)); +/* No png_save_int_16 -- may be added if there's a real need for it. */ +#endif + +#ifdef PNG_USE_READ_MACROS +/* Inline macros to do direct reads of bytes from the input buffer. + * The png_get_int_32() routine assumes we are using two's complement + * format for negative values, which is almost certainly true. + */ +# define png_get_uint_32(buf) \ + (((png_uint_32)(*(buf)) << 24) + \ + ((png_uint_32)(*((buf) + 1)) << 16) + \ + ((png_uint_32)(*((buf) + 2)) << 8) + \ + ((png_uint_32)(*((buf) + 3)))) + + /* From libpng-1.4.0 until 1.4.4, the png_get_uint_16 macro (but not the + * function) incorrectly returned a value of type png_uint_32. + */ +# define png_get_uint_16(buf) \ + ((png_uint_16) \ + (((unsigned int)(*(buf)) << 8) + \ + ((unsigned int)(*((buf) + 1))))) + +# define png_get_int_32(buf) \ + ((png_int_32)((*(buf) & 0x80) \ + ? -((png_int_32)((png_get_uint_32(buf) ^ 0xffffffffL) + 1)) \ + : (png_int_32)png_get_uint_32(buf))) +#endif + +#if defined(PNG_READ_CHECK_FOR_INVALID_INDEX_SUPPORTED) || \ + defined(PNG_WRITE_CHECK_FOR_INVALID_INDEX_SUPPORTED) +PNG_EXPORT(234, void, png_set_check_for_invalid_index, (png_structp png_ptr, + int allowed)); +#endif + +/* Maintainer: Put new public prototypes here ^, in libpng.3, and project + * defs + */ + +/* The last ordinal number (this is the *last* one already used; the next + * one to use is one more than this.) Maintainer, remember to add an entry to + * scripts/symbols.def as well. + */ +#ifdef PNG_EXPORT_LAST_ORDINAL + PNG_EXPORT_LAST_ORDINAL(234); +#endif + +#ifdef __cplusplus +} +#endif + +#endif /* PNG_VERSION_INFO_ONLY */ +/* Do not put anything past this line */ +#endif /* PNG_H */ diff -r 3331b30e4ef1 -r 88fde28bbda6 misc/winutils/include/pngconf.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/misc/winutils/include/pngconf.h Sat Nov 03 00:34:35 2012 +0400 @@ -0,0 +1,598 @@ + +/* pngconf.h - machine configurable file for libpng + * + * libpng version 1.5.13 - September 27, 2012 + * + * Copyright (c) 1998-2012 Glenn Randers-Pehrson + * (Version 0.96 Copyright (c) 1996, 1997 Andreas Dilger) + * (Version 0.88 Copyright (c) 1995, 1996 Guy Eric Schalnat, Group 42, Inc.) + * + * This code is released under the libpng license. + * For conditions of distribution and use, see the disclaimer + * and license in png.h + * + */ + +/* Any machine specific code is near the front of this file, so if you + * are configuring libpng for a machine, you may want to read the section + * starting here down to where it starts to typedef png_color, png_text, + * and png_info. + */ + +#ifndef PNGCONF_H +#define PNGCONF_H + +#ifndef PNG_BUILDING_SYMBOL_TABLE +/* PNG_NO_LIMITS_H may be used to turn off the use of the standard C + * definition file for machine specific limits, this may impact the + * correctness of the definitions below (see uses of INT_MAX). + */ +# ifndef PNG_NO_LIMITS_H +# include +# endif + +/* For the memory copy APIs (i.e. the standard definitions of these), + * because this file defines png_memcpy and so on the base APIs must + * be defined here. + */ +# ifdef BSD +# include +# else +# include +# endif + +/* For png_FILE_p - this provides the standard definition of a + * FILE + */ +# ifdef PNG_STDIO_SUPPORTED +# include +# endif +#endif + +/* This controls optimization of the reading of 16 and 32 bit values + * from PNG files. It can be set on a per-app-file basis - it + * just changes whether a macro is used when the function is called. + * The library builder sets the default; if read functions are not + * built into the library the macro implementation is forced on. + */ +#ifndef PNG_READ_INT_FUNCTIONS_SUPPORTED +# define PNG_USE_READ_MACROS +#endif +#if !defined(PNG_NO_USE_READ_MACROS) && !defined(PNG_USE_READ_MACROS) +# if PNG_DEFAULT_READ_MACROS +# define PNG_USE_READ_MACROS +# endif +#endif + +/* COMPILER SPECIFIC OPTIONS. + * + * These options are provided so that a variety of difficult compilers + * can be used. Some are fixed at build time (e.g. PNG_API_RULE + * below) but still have compiler specific implementations, others + * may be changed on a per-file basis when compiling against libpng. + */ + +/* The PNGARG macro protects us against machines that don't have function + * prototypes (ie K&R style headers). If your compiler does not handle + * function prototypes, define this macro and use the included ansi2knr. + * I've always been able to use _NO_PROTO as the indicator, but you may + * need to drag the empty declaration out in front of here, or change the + * ifdef to suit your own needs. + */ +#ifndef PNGARG + +# ifdef OF /* zlib prototype munger */ +# define PNGARG(arglist) OF(arglist) +# else + +# ifdef _NO_PROTO +# define PNGARG(arglist) () +# else +# define PNGARG(arglist) arglist +# endif /* _NO_PROTO */ + +# endif /* OF */ + +#endif /* PNGARG */ + +/* Function calling conventions. + * ============================= + * Normally it is not necessary to specify to the compiler how to call + * a function - it just does it - however on x86 systems derived from + * Microsoft and Borland C compilers ('IBM PC', 'DOS', 'Windows' systems + * and some others) there are multiple ways to call a function and the + * default can be changed on the compiler command line. For this reason + * libpng specifies the calling convention of every exported function and + * every function called via a user supplied function pointer. This is + * done in this file by defining the following macros: + * + * PNGAPI Calling convention for exported functions. + * PNGCBAPI Calling convention for user provided (callback) functions. + * PNGCAPI Calling convention used by the ANSI-C library (required + * for longjmp callbacks and sometimes used internally to + * specify the calling convention for zlib). + * + * These macros should never be overridden. If it is necessary to + * change calling convention in a private build this can be done + * by setting PNG_API_RULE (which defaults to 0) to one of the values + * below to select the correct 'API' variants. + * + * PNG_API_RULE=0 Use PNGCAPI - the 'C' calling convention - throughout. + * This is correct in every known environment. + * PNG_API_RULE=1 Use the operating system convention for PNGAPI and + * the 'C' calling convention (from PNGCAPI) for + * callbacks (PNGCBAPI). This is no longer required + * in any known environment - if it has to be used + * please post an explanation of the problem to the + * libpng mailing list. + * + * These cases only differ if the operating system does not use the C + * calling convention, at present this just means the above cases + * (x86 DOS/Windows sytems) and, even then, this does not apply to + * Cygwin running on those systems. + * + * Note that the value must be defined in pnglibconf.h so that what + * the application uses to call the library matches the conventions + * set when building the library. + */ + +/* Symbol export + * ============= + * When building a shared library it is almost always necessary to tell + * the compiler which symbols to export. The png.h macro 'PNG_EXPORT' + * is used to mark the symbols. On some systems these symbols can be + * extracted at link time and need no special processing by the compiler, + * on other systems the symbols are flagged by the compiler and just + * the declaration requires a special tag applied (unfortunately) in a + * compiler dependent way. Some systems can do either. + * + * A small number of older systems also require a symbol from a DLL to + * be flagged to the program that calls it. This is a problem because + * we do not know in the header file included by application code that + * the symbol will come from a shared library, as opposed to a statically + * linked one. For this reason the application must tell us by setting + * the magic flag PNG_USE_DLL to turn on the special processing before + * it includes png.h. + * + * Four additional macros are used to make this happen: + * + * PNG_IMPEXP The magic (if any) to cause a symbol to be exported from + * the build or imported if PNG_USE_DLL is set - compiler + * and system specific. + * + * PNG_EXPORT_TYPE(type) A macro that pre or appends PNG_IMPEXP to + * 'type', compiler specific. + * + * PNG_DLL_EXPORT Set to the magic to use during a libpng build to + * make a symbol exported from the DLL. Not used in the + * public header files; see pngpriv.h for how it is used + * in the libpng build. + * + * PNG_DLL_IMPORT Set to the magic to force the libpng symbols to come + * from a DLL - used to define PNG_IMPEXP when + * PNG_USE_DLL is set. + */ + +/* System specific discovery. + * ========================== + * This code is used at build time to find PNG_IMPEXP, the API settings + * and PNG_EXPORT_TYPE(), it may also set a macro to indicate the DLL + * import processing is possible. On Windows/x86 systems it also sets + * compiler-specific macros to the values required to change the calling + * conventions of the various functions. + */ +#if ( defined(_Windows) || defined(_WINDOWS) || defined(WIN32) ||\ + defined(_WIN32) || defined(__WIN32__) || defined(__CYGWIN__) ) &&\ + ( defined(_X86_) || defined(_X64_) || defined(_M_IX86) ||\ + defined(_M_X64) || defined(_M_IA64) ) + /* Windows system (DOS doesn't support DLLs) running on x86/x64. Includes + * builds under Cygwin or MinGW. Also includes Watcom builds but these need + * special treatment because they are not compatible with GCC or Visual C + * because of different calling conventions. + */ +# if PNG_API_RULE == 2 + /* If this line results in an error, either because __watcall is not + * understood or because of a redefine just below you cannot use *this* + * build of the library with the compiler you are using. *This* build was + * build using Watcom and applications must also be built using Watcom! + */ +# define PNGCAPI __watcall +# endif + +# if defined(__GNUC__) || (defined (_MSC_VER) && (_MSC_VER >= 800)) +# define PNGCAPI __cdecl +# if PNG_API_RULE == 1 +# define PNGAPI __stdcall +# endif +# else + /* An older compiler, or one not detected (erroneously) above, + * if necessary override on the command line to get the correct + * variants for the compiler. + */ +# ifndef PNGCAPI +# define PNGCAPI _cdecl +# endif +# if PNG_API_RULE == 1 && !defined(PNGAPI) +# define PNGAPI _stdcall +# endif +# endif /* compiler/api */ + /* NOTE: PNGCBAPI always defaults to PNGCAPI. */ + +# if defined(PNGAPI) && !defined(PNG_USER_PRIVATEBUILD) + ERROR: PNG_USER_PRIVATEBUILD must be defined if PNGAPI is changed +# endif + +# if (defined(_MSC_VER) && _MSC_VER < 800) ||\ + (defined(__BORLANDC__) && __BORLANDC__ < 0x500) + /* older Borland and MSC + * compilers used '__export' and required this to be after + * the type. + */ +# ifndef PNG_EXPORT_TYPE +# define PNG_EXPORT_TYPE(type) type PNG_IMPEXP +# endif +# define PNG_DLL_EXPORT __export +# else /* newer compiler */ +# define PNG_DLL_EXPORT __declspec(dllexport) +# ifndef PNG_DLL_IMPORT +# define PNG_DLL_IMPORT __declspec(dllimport) +# endif +# endif /* compiler */ + +#else /* !Windows/x86 */ +# if (defined(__IBMC__) || defined(__IBMCPP__)) && defined(__OS2__) +# define PNGAPI _System +# else /* !Windows/x86 && !OS/2 */ + /* Use the defaults, or define PNG*API on the command line (but + * this will have to be done for every compile!) + */ +# endif /* other system, !OS/2 */ +#endif /* !Windows/x86 */ + +/* Now do all the defaulting . */ +#ifndef PNGCAPI +# define PNGCAPI +#endif +#ifndef PNGCBAPI +# define PNGCBAPI PNGCAPI +#endif +#ifndef PNGAPI +# define PNGAPI PNGCAPI +#endif + +/* PNG_IMPEXP may be set on the compilation system command line or (if not set) + * then in an internal header file when building the library, otherwise (when + * using the library) it is set here. + */ +#ifndef PNG_IMPEXP +# if defined(PNG_USE_DLL) && defined(PNG_DLL_IMPORT) + /* This forces use of a DLL, disallowing static linking */ +# define PNG_IMPEXP PNG_DLL_IMPORT +# endif + +# ifndef PNG_IMPEXP +# define PNG_IMPEXP +# endif +#endif + +/* In 1.5.2 the definition of PNG_FUNCTION has been changed to always treat + * 'attributes' as a storage class - the attributes go at the start of the + * function definition, and attributes are always appended regardless of the + * compiler. This considerably simplifies these macros but may cause problems + * if any compilers both need function attributes and fail to handle them as + * a storage class (this is unlikely.) + */ +#ifndef PNG_FUNCTION +# define PNG_FUNCTION(type, name, args, attributes) attributes type name args +#endif + +#ifndef PNG_EXPORT_TYPE +# define PNG_EXPORT_TYPE(type) PNG_IMPEXP type +#endif + + /* The ordinal value is only relevant when preprocessing png.h for symbol + * table entries, so we discard it here. See the .dfn files in the + * scripts directory. + */ +#ifndef PNG_EXPORTA + +# define PNG_EXPORTA(ordinal, type, name, args, attributes)\ + PNG_FUNCTION(PNG_EXPORT_TYPE(type),(PNGAPI name),PNGARG(args), \ + extern attributes) +#endif + +/* ANSI-C (C90) does not permit a macro to be invoked with an empty argument, + * so make something non-empty to satisfy the requirement: + */ +#define PNG_EMPTY /*empty list*/ + +#define PNG_EXPORT(ordinal, type, name, args)\ + PNG_EXPORTA(ordinal, type, name, args, PNG_EMPTY) + +/* Use PNG_REMOVED to comment out a removed interface. */ +#ifndef PNG_REMOVED +# define PNG_REMOVED(ordinal, type, name, args, attributes) +#endif + +#ifndef PNG_CALLBACK +# define PNG_CALLBACK(type, name, args) type (PNGCBAPI name) PNGARG(args) +#endif + +/* Support for compiler specific function attributes. These are used + * so that where compiler support is available incorrect use of API + * functions in png.h will generate compiler warnings. + * + * Added at libpng-1.2.41. + */ + +#ifndef PNG_NO_PEDANTIC_WARNINGS +# ifndef PNG_PEDANTIC_WARNINGS_SUPPORTED +# define PNG_PEDANTIC_WARNINGS_SUPPORTED +# endif +#endif + +#ifdef PNG_PEDANTIC_WARNINGS_SUPPORTED + /* Support for compiler specific function attributes. These are used + * so that where compiler support is available incorrect use of API + * functions in png.h will generate compiler warnings. Added at libpng + * version 1.2.41. + */ +# if defined(__GNUC__) +# ifndef PNG_USE_RESULT +# define PNG_USE_RESULT __attribute__((__warn_unused_result__)) +# endif +# ifndef PNG_NORETURN +# define PNG_NORETURN __attribute__((__noreturn__)) +# endif +# if __GNUC__ >= 3 +# ifndef PNG_ALLOCATED +# define PNG_ALLOCATED __attribute__((__malloc__)) +# endif +# ifndef PNG_DEPRECATED +# define PNG_DEPRECATED __attribute__((__deprecated__)) +# endif +# ifndef PNG_PRIVATE +# if 0 /* Doesn't work so we use deprecated instead*/ +# define PNG_PRIVATE \ + __attribute__((warning("This function is not exported by libpng."))) +# else +# define PNG_PRIVATE \ + __attribute__((__deprecated__)) +# endif +# endif +# endif /* __GNUC__ >= 3 */ +# endif /* __GNUC__ */ + +# if defined(_MSC_VER) && (_MSC_VER >= 1300) +# ifndef PNG_USE_RESULT +# define PNG_USE_RESULT /* not supported */ +# endif +# ifndef PNG_NORETURN +# define PNG_NORETURN __declspec(noreturn) +# endif +# ifndef PNG_ALLOCATED +# if (_MSC_VER >= 1400) +# define PNG_ALLOCATED __declspec(restrict) +# endif +# endif +# ifndef PNG_DEPRECATED +# define PNG_DEPRECATED __declspec(deprecated) +# endif +# ifndef PNG_PRIVATE +# define PNG_PRIVATE __declspec(deprecated) +# endif +# endif /* _MSC_VER */ +#endif /* PNG_PEDANTIC_WARNINGS */ + +#ifndef PNG_DEPRECATED +# define PNG_DEPRECATED /* Use of this function is deprecated */ +#endif +#ifndef PNG_USE_RESULT +# define PNG_USE_RESULT /* The result of this function must be checked */ +#endif +#ifndef PNG_NORETURN +# define PNG_NORETURN /* This function does not return */ +#endif +#ifndef PNG_ALLOCATED +# define PNG_ALLOCATED /* The result of the function is new memory */ +#endif +#ifndef PNG_PRIVATE +# define PNG_PRIVATE /* This is a private libpng function */ +#endif +#ifndef PNG_FP_EXPORT /* A floating point API. */ +# ifdef PNG_FLOATING_POINT_SUPPORTED +# define PNG_FP_EXPORT(ordinal, type, name, args)\ + PNG_EXPORT(ordinal, type, name, args); +# else /* No floating point APIs */ +# define PNG_FP_EXPORT(ordinal, type, name, args) +# endif +#endif +#ifndef PNG_FIXED_EXPORT /* A fixed point API. */ +# ifdef PNG_FIXED_POINT_SUPPORTED +# define PNG_FIXED_EXPORT(ordinal, type, name, args)\ + PNG_EXPORT(ordinal, type, name, args); +# else /* No fixed point APIs */ +# define PNG_FIXED_EXPORT(ordinal, type, name, args) +# endif +#endif + +/* The following uses const char * instead of char * for error + * and warning message functions, so some compilers won't complain. + * If you do not want to use const, define PNG_NO_CONST here. + * + * This should not change how the APIs are called, so it can be done + * on a per-file basis in the application. + */ +#ifndef PNG_CONST +# ifndef PNG_NO_CONST +# define PNG_CONST const +# else +# define PNG_CONST +# endif +#endif + +/* Some typedefs to get us started. These should be safe on most of the + * common platforms. The typedefs should be at least as large as the + * numbers suggest (a png_uint_32 must be at least 32 bits long), but they + * don't have to be exactly that size. Some compilers dislike passing + * unsigned shorts as function parameters, so you may be better off using + * unsigned int for png_uint_16. + */ + +#if defined(INT_MAX) && (INT_MAX > 0x7ffffffeL) +typedef unsigned int png_uint_32; +typedef int png_int_32; +#else +typedef unsigned long png_uint_32; +typedef long png_int_32; +#endif +typedef unsigned short png_uint_16; +typedef short png_int_16; +typedef unsigned char png_byte; + +#ifdef PNG_NO_SIZE_T +typedef unsigned int png_size_t; +#else +typedef size_t png_size_t; +#endif +#define png_sizeof(x) (sizeof (x)) + +/* The following is needed for medium model support. It cannot be in the + * pngpriv.h header. Needs modification for other compilers besides + * MSC. Model independent support declares all arrays and pointers to be + * large using the far keyword. The zlib version used must also support + * model independent data. As of version zlib 1.0.4, the necessary changes + * have been made in zlib. The USE_FAR_KEYWORD define triggers other + * changes that are needed. (Tim Wegner) + */ + +/* Separate compiler dependencies (problem here is that zlib.h always + * defines FAR. (SJT) + */ +#ifdef __BORLANDC__ +# if defined(__LARGE__) || defined(__HUGE__) || defined(__COMPACT__) +# define LDATA 1 +# else +# define LDATA 0 +# endif + /* GRR: why is Cygwin in here? Cygwin is not Borland C... */ +# if !defined(__WIN32__) && !defined(__FLAT__) && !defined(__CYGWIN__) +# define PNG_MAX_MALLOC_64K /* only used in build */ +# if (LDATA != 1) +# ifndef FAR +# define FAR __far +# endif +# define USE_FAR_KEYWORD +# endif /* LDATA != 1 */ + /* Possibly useful for moving data out of default segment. + * Uncomment it if you want. Could also define FARDATA as + * const if your compiler supports it. (SJT) +# define FARDATA FAR + */ +# endif /* __WIN32__, __FLAT__, __CYGWIN__ */ +#endif /* __BORLANDC__ */ + + +/* Suggest testing for specific compiler first before testing for + * FAR. The Watcom compiler defines both __MEDIUM__ and M_I86MM, + * making reliance oncertain keywords suspect. (SJT) + */ + +/* MSC Medium model */ +#ifdef FAR +# ifdef M_I86MM +# define USE_FAR_KEYWORD +# define FARDATA FAR +# include +# endif +#endif + +/* SJT: default case */ +#ifndef FAR +# define FAR +#endif + +/* At this point FAR is always defined */ +#ifndef FARDATA +# define FARDATA +#endif + +/* Typedef for floating-point numbers that are converted + * to fixed-point with a multiple of 100,000, e.g., gamma + */ +typedef png_int_32 png_fixed_point; + +/* Add typedefs for pointers */ +typedef void FAR * png_voidp; +typedef PNG_CONST void FAR * png_const_voidp; +typedef png_byte FAR * png_bytep; +typedef PNG_CONST png_byte FAR * png_const_bytep; +typedef png_uint_32 FAR * png_uint_32p; +typedef PNG_CONST png_uint_32 FAR * png_const_uint_32p; +typedef png_int_32 FAR * png_int_32p; +typedef PNG_CONST png_int_32 FAR * png_const_int_32p; +typedef png_uint_16 FAR * png_uint_16p; +typedef PNG_CONST png_uint_16 FAR * png_const_uint_16p; +typedef png_int_16 FAR * png_int_16p; +typedef PNG_CONST png_int_16 FAR * png_const_int_16p; +typedef char FAR * png_charp; +typedef PNG_CONST char FAR * png_const_charp; +typedef png_fixed_point FAR * png_fixed_point_p; +typedef PNG_CONST png_fixed_point FAR * png_const_fixed_point_p; +typedef png_size_t FAR * png_size_tp; +typedef PNG_CONST png_size_t FAR * png_const_size_tp; + +#ifdef PNG_STDIO_SUPPORTED +typedef FILE * png_FILE_p; +#endif + +#ifdef PNG_FLOATING_POINT_SUPPORTED +typedef double FAR * png_doublep; +typedef PNG_CONST double FAR * png_const_doublep; +#endif + +/* Pointers to pointers; i.e. arrays */ +typedef png_byte FAR * FAR * png_bytepp; +typedef png_uint_32 FAR * FAR * png_uint_32pp; +typedef png_int_32 FAR * FAR * png_int_32pp; +typedef png_uint_16 FAR * FAR * png_uint_16pp; +typedef png_int_16 FAR * FAR * png_int_16pp; +typedef PNG_CONST char FAR * FAR * png_const_charpp; +typedef char FAR * FAR * png_charpp; +typedef png_fixed_point FAR * FAR * png_fixed_point_pp; +#ifdef PNG_FLOATING_POINT_SUPPORTED +typedef double FAR * FAR * png_doublepp; +#endif + +/* Pointers to pointers to pointers; i.e., pointer to array */ +typedef char FAR * FAR * FAR * png_charppp; + +/* png_alloc_size_t is guaranteed to be no smaller than png_size_t, + * and no smaller than png_uint_32. Casts from png_size_t or png_uint_32 + * to png_alloc_size_t are not necessary; in fact, it is recommended + * not to use them at all so that the compiler can complain when something + * turns out to be problematic. + * Casts in the other direction (from png_alloc_size_t to png_size_t or + * png_uint_32) should be explicitly applied; however, we do not expect + * to encounter practical situations that require such conversions. + */ +#if defined(__TURBOC__) && !defined(__FLAT__) + typedef unsigned long png_alloc_size_t; +#else +# if defined(_MSC_VER) && defined(MAXSEG_64K) + typedef unsigned long png_alloc_size_t; +# else + /* This is an attempt to detect an old Windows system where (int) is + * actually 16 bits, in that case png_malloc must have an argument with a + * bigger size to accomodate the requirements of the library. + */ +# if (defined(_Windows) || defined(_WINDOWS) || defined(_WINDOWS_)) && \ + (!defined(INT_MAX) || INT_MAX <= 0x7ffffffeL) + typedef DWORD png_alloc_size_t; +# else + typedef png_size_t png_alloc_size_t; +# endif +# endif +#endif + +#endif /* PNGCONF_H */ diff -r 3331b30e4ef1 -r 88fde28bbda6 misc/winutils/include/zconf.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/misc/winutils/include/zconf.h Sat Nov 03 00:34:35 2012 +0400 @@ -0,0 +1,428 @@ +/* zconf.h -- configuration of the zlib compression library + * Copyright (C) 1995-2010 Jean-loup Gailly. + * For conditions of distribution and use, see copyright notice in zlib.h + */ + +/* @(#) $Id$ */ + +#ifndef ZCONF_H +#define ZCONF_H + +/* + * If you *really* need a unique prefix for all types and library functions, + * compile with -DZ_PREFIX. The "standard" zlib should be compiled without it. + * Even better than compiling with -DZ_PREFIX would be to use configure to set + * this permanently in zconf.h using "./configure --zprefix". + */ +#ifdef Z_PREFIX /* may be set to #if 1 by ./configure */ + +/* all linked symbols */ +# define _dist_code z__dist_code +# define _length_code z__length_code +# define _tr_align z__tr_align +# define _tr_flush_block z__tr_flush_block +# define _tr_init z__tr_init +# define _tr_stored_block z__tr_stored_block +# define _tr_tally z__tr_tally +# define adler32 z_adler32 +# define adler32_combine z_adler32_combine +# define adler32_combine64 z_adler32_combine64 +# define compress z_compress +# define compress2 z_compress2 +# define compressBound z_compressBound +# define crc32 z_crc32 +# define crc32_combine z_crc32_combine +# define crc32_combine64 z_crc32_combine64 +# define deflate z_deflate +# define deflateBound z_deflateBound +# define deflateCopy z_deflateCopy +# define deflateEnd z_deflateEnd +# define deflateInit2_ z_deflateInit2_ +# define deflateInit_ z_deflateInit_ +# define deflateParams z_deflateParams +# define deflatePrime z_deflatePrime +# define deflateReset z_deflateReset +# define deflateSetDictionary z_deflateSetDictionary +# define deflateSetHeader z_deflateSetHeader +# define deflateTune z_deflateTune +# define deflate_copyright z_deflate_copyright +# define get_crc_table z_get_crc_table +# define gz_error z_gz_error +# define gz_intmax z_gz_intmax +# define gz_strwinerror z_gz_strwinerror +# define gzbuffer z_gzbuffer +# define gzclearerr z_gzclearerr +# define gzclose z_gzclose +# define gzclose_r z_gzclose_r +# define gzclose_w z_gzclose_w +# define gzdirect z_gzdirect +# define gzdopen z_gzdopen +# define gzeof z_gzeof +# define gzerror z_gzerror +# define gzflush z_gzflush +# define gzgetc z_gzgetc +# define gzgets z_gzgets +# define gzoffset z_gzoffset +# define gzoffset64 z_gzoffset64 +# define gzopen z_gzopen +# define gzopen64 z_gzopen64 +# define gzprintf z_gzprintf +# define gzputc z_gzputc +# define gzputs z_gzputs +# define gzread z_gzread +# define gzrewind z_gzrewind +# define gzseek z_gzseek +# define gzseek64 z_gzseek64 +# define gzsetparams z_gzsetparams +# define gztell z_gztell +# define gztell64 z_gztell64 +# define gzungetc z_gzungetc +# define gzwrite z_gzwrite +# define inflate z_inflate +# define inflateBack z_inflateBack +# define inflateBackEnd z_inflateBackEnd +# define inflateBackInit_ z_inflateBackInit_ +# define inflateCopy z_inflateCopy +# define inflateEnd z_inflateEnd +# define inflateGetHeader z_inflateGetHeader +# define inflateInit2_ z_inflateInit2_ +# define inflateInit_ z_inflateInit_ +# define inflateMark z_inflateMark +# define inflatePrime z_inflatePrime +# define inflateReset z_inflateReset +# define inflateReset2 z_inflateReset2 +# define inflateSetDictionary z_inflateSetDictionary +# define inflateSync z_inflateSync +# define inflateSyncPoint z_inflateSyncPoint +# define inflateUndermine z_inflateUndermine +# define inflate_copyright z_inflate_copyright +# define inflate_fast z_inflate_fast +# define inflate_table z_inflate_table +# define uncompress z_uncompress +# define zError z_zError +# define zcalloc z_zcalloc +# define zcfree z_zcfree +# define zlibCompileFlags z_zlibCompileFlags +# define zlibVersion z_zlibVersion + +/* all zlib typedefs in zlib.h and zconf.h */ +# define Byte z_Byte +# define Bytef z_Bytef +# define alloc_func z_alloc_func +# define charf z_charf +# define free_func z_free_func +# define gzFile z_gzFile +# define gz_header z_gz_header +# define gz_headerp z_gz_headerp +# define in_func z_in_func +# define intf z_intf +# define out_func z_out_func +# define uInt z_uInt +# define uIntf z_uIntf +# define uLong z_uLong +# define uLongf z_uLongf +# define voidp z_voidp +# define voidpc z_voidpc +# define voidpf z_voidpf + +/* all zlib structs in zlib.h and zconf.h */ +# define gz_header_s z_gz_header_s +# define internal_state z_internal_state + +#endif + +#if defined(__MSDOS__) && !defined(MSDOS) +# define MSDOS +#endif +#if (defined(OS_2) || defined(__OS2__)) && !defined(OS2) +# define OS2 +#endif +#if defined(_WINDOWS) && !defined(WINDOWS) +# define WINDOWS +#endif +#if defined(_WIN32) || defined(_WIN32_WCE) || defined(__WIN32__) +# ifndef WIN32 +# define WIN32 +# endif +#endif +#if (defined(MSDOS) || defined(OS2) || defined(WINDOWS)) && !defined(WIN32) +# if !defined(__GNUC__) && !defined(__FLAT__) && !defined(__386__) +# ifndef SYS16BIT +# define SYS16BIT +# endif +# endif +#endif + +/* + * Compile with -DMAXSEG_64K if the alloc function cannot allocate more + * than 64k bytes at a time (needed on systems with 16-bit int). + */ +#ifdef SYS16BIT +# define MAXSEG_64K +#endif +#ifdef MSDOS +# define UNALIGNED_OK +#endif + +#ifdef __STDC_VERSION__ +# ifndef STDC +# define STDC +# endif +# if __STDC_VERSION__ >= 199901L +# ifndef STDC99 +# define STDC99 +# endif +# endif +#endif +#if !defined(STDC) && (defined(__STDC__) || defined(__cplusplus)) +# define STDC +#endif +#if !defined(STDC) && (defined(__GNUC__) || defined(__BORLANDC__)) +# define STDC +#endif +#if !defined(STDC) && (defined(MSDOS) || defined(WINDOWS) || defined(WIN32)) +# define STDC +#endif +#if !defined(STDC) && (defined(OS2) || defined(__HOS_AIX__)) +# define STDC +#endif + +#if defined(__OS400__) && !defined(STDC) /* iSeries (formerly AS/400). */ +# define STDC +#endif + +#ifndef STDC +# ifndef const /* cannot use !defined(STDC) && !defined(const) on Mac */ +# define const /* note: need a more gentle solution here */ +# endif +#endif + +/* Some Mac compilers merge all .h files incorrectly: */ +#if defined(__MWERKS__)||defined(applec)||defined(THINK_C)||defined(__SC__) +# define NO_DUMMY_DECL +#endif + +/* Maximum value for memLevel in deflateInit2 */ +#ifndef MAX_MEM_LEVEL +# ifdef MAXSEG_64K +# define MAX_MEM_LEVEL 8 +# else +# define MAX_MEM_LEVEL 9 +# endif +#endif + +/* Maximum value for windowBits in deflateInit2 and inflateInit2. + * WARNING: reducing MAX_WBITS makes minigzip unable to extract .gz files + * created by gzip. (Files created by minigzip can still be extracted by + * gzip.) + */ +#ifndef MAX_WBITS +# define MAX_WBITS 15 /* 32K LZ77 window */ +#endif + +/* The memory requirements for deflate are (in bytes): + (1 << (windowBits+2)) + (1 << (memLevel+9)) + that is: 128K for windowBits=15 + 128K for memLevel = 8 (default values) + plus a few kilobytes for small objects. For example, if you want to reduce + the default memory requirements from 256K to 128K, compile with + make CFLAGS="-O -DMAX_WBITS=14 -DMAX_MEM_LEVEL=7" + Of course this will generally degrade compression (there's no free lunch). + + The memory requirements for inflate are (in bytes) 1 << windowBits + that is, 32K for windowBits=15 (default value) plus a few kilobytes + for small objects. +*/ + + /* Type declarations */ + +#ifndef OF /* function prototypes */ +# ifdef STDC +# define OF(args) args +# else +# define OF(args) () +# endif +#endif + +/* The following definitions for FAR are needed only for MSDOS mixed + * model programming (small or medium model with some far allocations). + * This was tested only with MSC; for other MSDOS compilers you may have + * to define NO_MEMCPY in zutil.h. If you don't need the mixed model, + * just define FAR to be empty. + */ +#ifdef SYS16BIT +# if defined(M_I86SM) || defined(M_I86MM) + /* MSC small or medium model */ +# define SMALL_MEDIUM +# ifdef _MSC_VER +# define FAR _far +# else +# define FAR far +# endif +# endif +# if (defined(__SMALL__) || defined(__MEDIUM__)) + /* Turbo C small or medium model */ +# define SMALL_MEDIUM +# ifdef __BORLANDC__ +# define FAR _far +# else +# define FAR far +# endif +# endif +#endif + +#if defined(WINDOWS) || defined(WIN32) + /* If building or using zlib as a DLL, define ZLIB_DLL. + * This is not mandatory, but it offers a little performance increase. + */ +# ifdef ZLIB_DLL +# if defined(WIN32) && (!defined(__BORLANDC__) || (__BORLANDC__ >= 0x500)) +# ifdef ZLIB_INTERNAL +# define ZEXTERN extern __declspec(dllexport) +# else +# define ZEXTERN extern __declspec(dllimport) +# endif +# endif +# endif /* ZLIB_DLL */ + /* If building or using zlib with the WINAPI/WINAPIV calling convention, + * define ZLIB_WINAPI. + * Caution: the standard ZLIB1.DLL is NOT compiled using ZLIB_WINAPI. + */ +# ifdef ZLIB_WINAPI +# ifdef FAR +# undef FAR +# endif +# include + /* No need for _export, use ZLIB.DEF instead. */ + /* For complete Windows compatibility, use WINAPI, not __stdcall. */ +# define ZEXPORT WINAPI +# ifdef WIN32 +# define ZEXPORTVA WINAPIV +# else +# define ZEXPORTVA FAR CDECL +# endif +# endif +#endif + +#if defined (__BEOS__) +# ifdef ZLIB_DLL +# ifdef ZLIB_INTERNAL +# define ZEXPORT __declspec(dllexport) +# define ZEXPORTVA __declspec(dllexport) +# else +# define ZEXPORT __declspec(dllimport) +# define ZEXPORTVA __declspec(dllimport) +# endif +# endif +#endif + +#ifndef ZEXTERN +# define ZEXTERN extern +#endif +#ifndef ZEXPORT +# define ZEXPORT +#endif +#ifndef ZEXPORTVA +# define ZEXPORTVA +#endif + +#ifndef FAR +# define FAR +#endif + +#if !defined(__MACTYPES__) +typedef unsigned char Byte; /* 8 bits */ +#endif +typedef unsigned int uInt; /* 16 bits or more */ +typedef unsigned long uLong; /* 32 bits or more */ + +#ifdef SMALL_MEDIUM + /* Borland C/C++ and some old MSC versions ignore FAR inside typedef */ +# define Bytef Byte FAR +#else + typedef Byte FAR Bytef; +#endif +typedef char FAR charf; +typedef int FAR intf; +typedef uInt FAR uIntf; +typedef uLong FAR uLongf; + +#ifdef STDC + typedef void const *voidpc; + typedef void FAR *voidpf; + typedef void *voidp; +#else + typedef Byte const *voidpc; + typedef Byte FAR *voidpf; + typedef Byte *voidp; +#endif + +#ifdef HAVE_UNISTD_H /* may be set to #if 1 by ./configure */ +# define Z_HAVE_UNISTD_H +#endif + +#ifdef STDC +# include /* for off_t */ +#endif + +/* a little trick to accommodate both "#define _LARGEFILE64_SOURCE" and + * "#define _LARGEFILE64_SOURCE 1" as requesting 64-bit operations, (even + * though the former does not conform to the LFS document), but considering + * both "#undef _LARGEFILE64_SOURCE" and "#define _LARGEFILE64_SOURCE 0" as + * equivalently requesting no 64-bit operations + */ +#if -_LARGEFILE64_SOURCE - -1 == 1 +# undef _LARGEFILE64_SOURCE +#endif + +#if defined(Z_HAVE_UNISTD_H) || defined(_LARGEFILE64_SOURCE) +# include /* for SEEK_* and off_t */ +# ifdef VMS +# include /* for off_t */ +# endif +# ifndef z_off_t +# define z_off_t off_t +# endif +#endif + +#ifndef SEEK_SET +# define SEEK_SET 0 /* Seek from beginning of file. */ +# define SEEK_CUR 1 /* Seek from current position. */ +# define SEEK_END 2 /* Set file pointer to EOF plus "offset" */ +#endif + +#ifndef z_off_t +# define z_off_t long +#endif + +#if defined(_LARGEFILE64_SOURCE) && _LFS64_LARGEFILE-0 +# define z_off64_t off64_t +#else +# define z_off64_t z_off_t +#endif + +#if defined(__OS400__) +# define NO_vsnprintf +#endif + +#if defined(__MVS__) +# define NO_vsnprintf +#endif + +/* MVS linker does not support external names larger than 8 bytes */ +#if defined(__MVS__) + #pragma map(deflateInit_,"DEIN") + #pragma map(deflateInit2_,"DEIN2") + #pragma map(deflateEnd,"DEEND") + #pragma map(deflateBound,"DEBND") + #pragma map(inflateInit_,"ININ") + #pragma map(inflateInit2_,"ININ2") + #pragma map(inflateEnd,"INEND") + #pragma map(inflateSync,"INSY") + #pragma map(inflateSetDictionary,"INSEDI") + #pragma map(compressBound,"CMBND") + #pragma map(inflate_table,"INTABL") + #pragma map(inflate_fast,"INFA") + #pragma map(inflate_copyright,"INCOPY") +#endif + +#endif /* ZCONF_H */ diff -r 3331b30e4ef1 -r 88fde28bbda6 misc/winutils/include/zlib.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/misc/winutils/include/zlib.h Sat Nov 03 00:34:35 2012 +0400 @@ -0,0 +1,1613 @@ +/* zlib.h -- interface of the 'zlib' general purpose compression library + version 1.2.5, April 19th, 2010 + + Copyright (C) 1995-2010 Jean-loup Gailly and Mark Adler + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + 3. This notice may not be removed or altered from any source distribution. + + Jean-loup Gailly Mark Adler + jloup@gzip.org madler@alumni.caltech.edu + + + The data format used by the zlib library is described by RFCs (Request for + Comments) 1950 to 1952 in the files http://www.ietf.org/rfc/rfc1950.txt + (zlib format), rfc1951.txt (deflate format) and rfc1952.txt (gzip format). +*/ + +#ifndef ZLIB_H +#define ZLIB_H + +#include "zconf.h" + +#ifdef __cplusplus +extern "C" { +#endif + +#define ZLIB_VERSION "1.2.5" +#define ZLIB_VERNUM 0x1250 +#define ZLIB_VER_MAJOR 1 +#define ZLIB_VER_MINOR 2 +#define ZLIB_VER_REVISION 5 +#define ZLIB_VER_SUBREVISION 0 + +/* + The 'zlib' compression library provides in-memory compression and + decompression functions, including integrity checks of the uncompressed data. + This version of the library supports only one compression method (deflation) + but other algorithms will be added later and will have the same stream + interface. + + Compression can be done in a single step if the buffers are large enough, + or can be done by repeated calls of the compression function. In the latter + case, the application must provide more input and/or consume the output + (providing more output space) before each call. + + The compressed data format used by default by the in-memory functions is + the zlib format, which is a zlib wrapper documented in RFC 1950, wrapped + around a deflate stream, which is itself documented in RFC 1951. + + The library also supports reading and writing files in gzip (.gz) format + with an interface similar to that of stdio using the functions that start + with "gz". The gzip format is different from the zlib format. gzip is a + gzip wrapper, documented in RFC 1952, wrapped around a deflate stream. + + This library can optionally read and write gzip streams in memory as well. + + The zlib format was designed to be compact and fast for use in memory + and on communications channels. The gzip format was designed for single- + file compression on file systems, has a larger header than zlib to maintain + directory information, and uses a different, slower check method than zlib. + + The library does not install any signal handler. The decoder checks + the consistency of the compressed data, so the library should never crash + even in case of corrupted input. +*/ + +typedef voidpf (*alloc_func) OF((voidpf opaque, uInt items, uInt size)); +typedef void (*free_func) OF((voidpf opaque, voidpf address)); + +struct internal_state; + +typedef struct z_stream_s { + Bytef *next_in; /* next input byte */ + uInt avail_in; /* number of bytes available at next_in */ + uLong total_in; /* total nb of input bytes read so far */ + + Bytef *next_out; /* next output byte should be put there */ + uInt avail_out; /* remaining free space at next_out */ + uLong total_out; /* total nb of bytes output so far */ + + char *msg; /* last error message, NULL if no error */ + struct internal_state FAR *state; /* not visible by applications */ + + alloc_func zalloc; /* used to allocate the internal state */ + free_func zfree; /* used to free the internal state */ + voidpf opaque; /* private data object passed to zalloc and zfree */ + + int data_type; /* best guess about the data type: binary or text */ + uLong adler; /* adler32 value of the uncompressed data */ + uLong reserved; /* reserved for future use */ +} z_stream; + +typedef z_stream FAR *z_streamp; + +/* + gzip header information passed to and from zlib routines. See RFC 1952 + for more details on the meanings of these fields. +*/ +typedef struct gz_header_s { + int text; /* true if compressed data believed to be text */ + uLong time; /* modification time */ + int xflags; /* extra flags (not used when writing a gzip file) */ + int os; /* operating system */ + Bytef *extra; /* pointer to extra field or Z_NULL if none */ + uInt extra_len; /* extra field length (valid if extra != Z_NULL) */ + uInt extra_max; /* space at extra (only when reading header) */ + Bytef *name; /* pointer to zero-terminated file name or Z_NULL */ + uInt name_max; /* space at name (only when reading header) */ + Bytef *comment; /* pointer to zero-terminated comment or Z_NULL */ + uInt comm_max; /* space at comment (only when reading header) */ + int hcrc; /* true if there was or will be a header crc */ + int done; /* true when done reading gzip header (not used + when writing a gzip file) */ +} gz_header; + +typedef gz_header FAR *gz_headerp; + +/* + The application must update next_in and avail_in when avail_in has dropped + to zero. It must update next_out and avail_out when avail_out has dropped + to zero. The application must initialize zalloc, zfree and opaque before + calling the init function. All other fields are set by the compression + library and must not be updated by the application. + + The opaque value provided by the application will be passed as the first + parameter for calls of zalloc and zfree. This can be useful for custom + memory management. The compression library attaches no meaning to the + opaque value. + + zalloc must return Z_NULL if there is not enough memory for the object. + If zlib is used in a multi-threaded application, zalloc and zfree must be + thread safe. + + On 16-bit systems, the functions zalloc and zfree must be able to allocate + exactly 65536 bytes, but will not be required to allocate more than this if + the symbol MAXSEG_64K is defined (see zconf.h). WARNING: On MSDOS, pointers + returned by zalloc for objects of exactly 65536 bytes *must* have their + offset normalized to zero. The default allocation function provided by this + library ensures this (see zutil.c). To reduce memory requirements and avoid + any allocation of 64K objects, at the expense of compression ratio, compile + the library with -DMAX_WBITS=14 (see zconf.h). + + The fields total_in and total_out can be used for statistics or progress + reports. After compression, total_in holds the total size of the + uncompressed data and may be saved for use in the decompressor (particularly + if the decompressor wants to decompress everything in a single step). +*/ + + /* constants */ + +#define Z_NO_FLUSH 0 +#define Z_PARTIAL_FLUSH 1 +#define Z_SYNC_FLUSH 2 +#define Z_FULL_FLUSH 3 +#define Z_FINISH 4 +#define Z_BLOCK 5 +#define Z_TREES 6 +/* Allowed flush values; see deflate() and inflate() below for details */ + +#define Z_OK 0 +#define Z_STREAM_END 1 +#define Z_NEED_DICT 2 +#define Z_ERRNO (-1) +#define Z_STREAM_ERROR (-2) +#define Z_DATA_ERROR (-3) +#define Z_MEM_ERROR (-4) +#define Z_BUF_ERROR (-5) +#define Z_VERSION_ERROR (-6) +/* Return codes for the compression/decompression functions. Negative values + * are errors, positive values are used for special but normal events. + */ + +#define Z_NO_COMPRESSION 0 +#define Z_BEST_SPEED 1 +#define Z_BEST_COMPRESSION 9 +#define Z_DEFAULT_COMPRESSION (-1) +/* compression levels */ + +#define Z_FILTERED 1 +#define Z_HUFFMAN_ONLY 2 +#define Z_RLE 3 +#define Z_FIXED 4 +#define Z_DEFAULT_STRATEGY 0 +/* compression strategy; see deflateInit2() below for details */ + +#define Z_BINARY 0 +#define Z_TEXT 1 +#define Z_ASCII Z_TEXT /* for compatibility with 1.2.2 and earlier */ +#define Z_UNKNOWN 2 +/* Possible values of the data_type field (though see inflate()) */ + +#define Z_DEFLATED 8 +/* The deflate compression method (the only one supported in this version) */ + +#define Z_NULL 0 /* for initializing zalloc, zfree, opaque */ + +#define zlib_version zlibVersion() +/* for compatibility with versions < 1.0.2 */ + + + /* basic functions */ + +ZEXTERN const char * ZEXPORT zlibVersion OF((void)); +/* The application can compare zlibVersion and ZLIB_VERSION for consistency. + If the first character differs, the library code actually used is not + compatible with the zlib.h header file used by the application. This check + is automatically made by deflateInit and inflateInit. + */ + +/* +ZEXTERN int ZEXPORT deflateInit OF((z_streamp strm, int level)); + + Initializes the internal stream state for compression. The fields + zalloc, zfree and opaque must be initialized before by the caller. If + zalloc and zfree are set to Z_NULL, deflateInit updates them to use default + allocation functions. + + The compression level must be Z_DEFAULT_COMPRESSION, or between 0 and 9: + 1 gives best speed, 9 gives best compression, 0 gives no compression at all + (the input data is simply copied a block at a time). Z_DEFAULT_COMPRESSION + requests a default compromise between speed and compression (currently + equivalent to level 6). + + deflateInit returns Z_OK if success, Z_MEM_ERROR if there was not enough + memory, Z_STREAM_ERROR if level is not a valid compression level, or + Z_VERSION_ERROR if the zlib library version (zlib_version) is incompatible + with the version assumed by the caller (ZLIB_VERSION). msg is set to null + if there is no error message. deflateInit does not perform any compression: + this will be done by deflate(). +*/ + + +ZEXTERN int ZEXPORT deflate OF((z_streamp strm, int flush)); +/* + deflate compresses as much data as possible, and stops when the input + buffer becomes empty or the output buffer becomes full. It may introduce + some output latency (reading input without producing any output) except when + forced to flush. + + The detailed semantics are as follows. deflate performs one or both of the + following actions: + + - Compress more input starting at next_in and update next_in and avail_in + accordingly. If not all input can be processed (because there is not + enough room in the output buffer), next_in and avail_in are updated and + processing will resume at this point for the next call of deflate(). + + - Provide more output starting at next_out and update next_out and avail_out + accordingly. This action is forced if the parameter flush is non zero. + Forcing flush frequently degrades the compression ratio, so this parameter + should be set only when necessary (in interactive applications). Some + output may be provided even if flush is not set. + + Before the call of deflate(), the application should ensure that at least + one of the actions is possible, by providing more input and/or consuming more + output, and updating avail_in or avail_out accordingly; avail_out should + never be zero before the call. The application can consume the compressed + output when it wants, for example when the output buffer is full (avail_out + == 0), or after each call of deflate(). If deflate returns Z_OK and with + zero avail_out, it must be called again after making room in the output + buffer because there might be more output pending. + + Normally the parameter flush is set to Z_NO_FLUSH, which allows deflate to + decide how much data to accumulate before producing output, in order to + maximize compression. + + If the parameter flush is set to Z_SYNC_FLUSH, all pending output is + flushed to the output buffer and the output is aligned on a byte boundary, so + that the decompressor can get all input data available so far. (In + particular avail_in is zero after the call if enough output space has been + provided before the call.) Flushing may degrade compression for some + compression algorithms and so it should be used only when necessary. This + completes the current deflate block and follows it with an empty stored block + that is three bits plus filler bits to the next byte, followed by four bytes + (00 00 ff ff). + + If flush is set to Z_PARTIAL_FLUSH, all pending output is flushed to the + output buffer, but the output is not aligned to a byte boundary. All of the + input data so far will be available to the decompressor, as for Z_SYNC_FLUSH. + This completes the current deflate block and follows it with an empty fixed + codes block that is 10 bits long. This assures that enough bytes are output + in order for the decompressor to finish the block before the empty fixed code + block. + + If flush is set to Z_BLOCK, a deflate block is completed and emitted, as + for Z_SYNC_FLUSH, but the output is not aligned on a byte boundary, and up to + seven bits of the current block are held to be written as the next byte after + the next deflate block is completed. In this case, the decompressor may not + be provided enough bits at this point in order to complete decompression of + the data provided so far to the compressor. It may need to wait for the next + block to be emitted. This is for advanced applications that need to control + the emission of deflate blocks. + + If flush is set to Z_FULL_FLUSH, all output is flushed as with + Z_SYNC_FLUSH, and the compression state is reset so that decompression can + restart from this point if previous compressed data has been damaged or if + random access is desired. Using Z_FULL_FLUSH too often can seriously degrade + compression. + + If deflate returns with avail_out == 0, this function must be called again + with the same value of the flush parameter and more output space (updated + avail_out), until the flush is complete (deflate returns with non-zero + avail_out). In the case of a Z_FULL_FLUSH or Z_SYNC_FLUSH, make sure that + avail_out is greater than six to avoid repeated flush markers due to + avail_out == 0 on return. + + If the parameter flush is set to Z_FINISH, pending input is processed, + pending output is flushed and deflate returns with Z_STREAM_END if there was + enough output space; if deflate returns with Z_OK, this function must be + called again with Z_FINISH and more output space (updated avail_out) but no + more input data, until it returns with Z_STREAM_END or an error. After + deflate has returned Z_STREAM_END, the only possible operations on the stream + are deflateReset or deflateEnd. + + Z_FINISH can be used immediately after deflateInit if all the compression + is to be done in a single step. In this case, avail_out must be at least the + value returned by deflateBound (see below). If deflate does not return + Z_STREAM_END, then it must be called again as described above. + + deflate() sets strm->adler to the adler32 checksum of all input read + so far (that is, total_in bytes). + + deflate() may update strm->data_type if it can make a good guess about + the input data type (Z_BINARY or Z_TEXT). In doubt, the data is considered + binary. This field is only for information purposes and does not affect the + compression algorithm in any manner. + + deflate() returns Z_OK if some progress has been made (more input + processed or more output produced), Z_STREAM_END if all input has been + consumed and all output has been produced (only when flush is set to + Z_FINISH), Z_STREAM_ERROR if the stream state was inconsistent (for example + if next_in or next_out was Z_NULL), Z_BUF_ERROR if no progress is possible + (for example avail_in or avail_out was zero). Note that Z_BUF_ERROR is not + fatal, and deflate() can be called again with more input and more output + space to continue compressing. +*/ + + +ZEXTERN int ZEXPORT deflateEnd OF((z_streamp strm)); +/* + All dynamically allocated data structures for this stream are freed. + This function discards any unprocessed input and does not flush any pending + output. + + deflateEnd returns Z_OK if success, Z_STREAM_ERROR if the + stream state was inconsistent, Z_DATA_ERROR if the stream was freed + prematurely (some input or output was discarded). In the error case, msg + may be set but then points to a static string (which must not be + deallocated). +*/ + + +/* +ZEXTERN int ZEXPORT inflateInit OF((z_streamp strm)); + + Initializes the internal stream state for decompression. The fields + next_in, avail_in, zalloc, zfree and opaque must be initialized before by + the caller. If next_in is not Z_NULL and avail_in is large enough (the + exact value depends on the compression method), inflateInit determines the + compression method from the zlib header and allocates all data structures + accordingly; otherwise the allocation will be deferred to the first call of + inflate. If zalloc and zfree are set to Z_NULL, inflateInit updates them to + use default allocation functions. + + inflateInit returns Z_OK if success, Z_MEM_ERROR if there was not enough + memory, Z_VERSION_ERROR if the zlib library version is incompatible with the + version assumed by the caller, or Z_STREAM_ERROR if the parameters are + invalid, such as a null pointer to the structure. msg is set to null if + there is no error message. inflateInit does not perform any decompression + apart from possibly reading the zlib header if present: actual decompression + will be done by inflate(). (So next_in and avail_in may be modified, but + next_out and avail_out are unused and unchanged.) The current implementation + of inflateInit() does not process any header information -- that is deferred + until inflate() is called. +*/ + + +ZEXTERN int ZEXPORT inflate OF((z_streamp strm, int flush)); +/* + inflate decompresses as much data as possible, and stops when the input + buffer becomes empty or the output buffer becomes full. It may introduce + some output latency (reading input without producing any output) except when + forced to flush. + + The detailed semantics are as follows. inflate performs one or both of the + following actions: + + - Decompress more input starting at next_in and update next_in and avail_in + accordingly. If not all input can be processed (because there is not + enough room in the output buffer), next_in is updated and processing will + resume at this point for the next call of inflate(). + + - Provide more output starting at next_out and update next_out and avail_out + accordingly. inflate() provides as much output as possible, until there is + no more input data or no more space in the output buffer (see below about + the flush parameter). + + Before the call of inflate(), the application should ensure that at least + one of the actions is possible, by providing more input and/or consuming more + output, and updating the next_* and avail_* values accordingly. The + application can consume the uncompressed output when it wants, for example + when the output buffer is full (avail_out == 0), or after each call of + inflate(). If inflate returns Z_OK and with zero avail_out, it must be + called again after making room in the output buffer because there might be + more output pending. + + The flush parameter of inflate() can be Z_NO_FLUSH, Z_SYNC_FLUSH, Z_FINISH, + Z_BLOCK, or Z_TREES. Z_SYNC_FLUSH requests that inflate() flush as much + output as possible to the output buffer. Z_BLOCK requests that inflate() + stop if and when it gets to the next deflate block boundary. When decoding + the zlib or gzip format, this will cause inflate() to return immediately + after the header and before the first block. When doing a raw inflate, + inflate() will go ahead and process the first block, and will return when it + gets to the end of that block, or when it runs out of data. + + The Z_BLOCK option assists in appending to or combining deflate streams. + Also to assist in this, on return inflate() will set strm->data_type to the + number of unused bits in the last byte taken from strm->next_in, plus 64 if + inflate() is currently decoding the last block in the deflate stream, plus + 128 if inflate() returned immediately after decoding an end-of-block code or + decoding the complete header up to just before the first byte of the deflate + stream. The end-of-block will not be indicated until all of the uncompressed + data from that block has been written to strm->next_out. The number of + unused bits may in general be greater than seven, except when bit 7 of + data_type is set, in which case the number of unused bits will be less than + eight. data_type is set as noted here every time inflate() returns for all + flush options, and so can be used to determine the amount of currently + consumed input in bits. + + The Z_TREES option behaves as Z_BLOCK does, but it also returns when the + end of each deflate block header is reached, before any actual data in that + block is decoded. This allows the caller to determine the length of the + deflate block header for later use in random access within a deflate block. + 256 is added to the value of strm->data_type when inflate() returns + immediately after reaching the end of the deflate block header. + + inflate() should normally be called until it returns Z_STREAM_END or an + error. However if all decompression is to be performed in a single step (a + single call of inflate), the parameter flush should be set to Z_FINISH. In + this case all pending input is processed and all pending output is flushed; + avail_out must be large enough to hold all the uncompressed data. (The size + of the uncompressed data may have been saved by the compressor for this + purpose.) The next operation on this stream must be inflateEnd to deallocate + the decompression state. The use of Z_FINISH is never required, but can be + used to inform inflate that a faster approach may be used for the single + inflate() call. + + In this implementation, inflate() always flushes as much output as + possible to the output buffer, and always uses the faster approach on the + first call. So the only effect of the flush parameter in this implementation + is on the return value of inflate(), as noted below, or when it returns early + because Z_BLOCK or Z_TREES is used. + + If a preset dictionary is needed after this call (see inflateSetDictionary + below), inflate sets strm->adler to the adler32 checksum of the dictionary + chosen by the compressor and returns Z_NEED_DICT; otherwise it sets + strm->adler to the adler32 checksum of all output produced so far (that is, + total_out bytes) and returns Z_OK, Z_STREAM_END or an error code as described + below. At the end of the stream, inflate() checks that its computed adler32 + checksum is equal to that saved by the compressor and returns Z_STREAM_END + only if the checksum is correct. + + inflate() can decompress and check either zlib-wrapped or gzip-wrapped + deflate data. The header type is detected automatically, if requested when + initializing with inflateInit2(). Any information contained in the gzip + header is not retained, so applications that need that information should + instead use raw inflate, see inflateInit2() below, or inflateBack() and + perform their own processing of the gzip header and trailer. + + inflate() returns Z_OK if some progress has been made (more input processed + or more output produced), Z_STREAM_END if the end of the compressed data has + been reached and all uncompressed output has been produced, Z_NEED_DICT if a + preset dictionary is needed at this point, Z_DATA_ERROR if the input data was + corrupted (input stream not conforming to the zlib format or incorrect check + value), Z_STREAM_ERROR if the stream structure was inconsistent (for example + next_in or next_out was Z_NULL), Z_MEM_ERROR if there was not enough memory, + Z_BUF_ERROR if no progress is possible or if there was not enough room in the + output buffer when Z_FINISH is used. Note that Z_BUF_ERROR is not fatal, and + inflate() can be called again with more input and more output space to + continue decompressing. If Z_DATA_ERROR is returned, the application may + then call inflateSync() to look for a good compression block if a partial + recovery of the data is desired. +*/ + + +ZEXTERN int ZEXPORT inflateEnd OF((z_streamp strm)); +/* + All dynamically allocated data structures for this stream are freed. + This function discards any unprocessed input and does not flush any pending + output. + + inflateEnd returns Z_OK if success, Z_STREAM_ERROR if the stream state + was inconsistent. In the error case, msg may be set but then points to a + static string (which must not be deallocated). +*/ + + + /* Advanced functions */ + +/* + The following functions are needed only in some special applications. +*/ + +/* +ZEXTERN int ZEXPORT deflateInit2 OF((z_streamp strm, + int level, + int method, + int windowBits, + int memLevel, + int strategy)); + + This is another version of deflateInit with more compression options. The + fields next_in, zalloc, zfree and opaque must be initialized before by the + caller. + + The method parameter is the compression method. It must be Z_DEFLATED in + this version of the library. + + The windowBits parameter is the base two logarithm of the window size + (the size of the history buffer). It should be in the range 8..15 for this + version of the library. Larger values of this parameter result in better + compression at the expense of memory usage. The default value is 15 if + deflateInit is used instead. + + windowBits can also be -8..-15 for raw deflate. In this case, -windowBits + determines the window size. deflate() will then generate raw deflate data + with no zlib header or trailer, and will not compute an adler32 check value. + + windowBits can also be greater than 15 for optional gzip encoding. Add + 16 to windowBits to write a simple gzip header and trailer around the + compressed data instead of a zlib wrapper. The gzip header will have no + file name, no extra data, no comment, no modification time (set to zero), no + header crc, and the operating system will be set to 255 (unknown). If a + gzip stream is being written, strm->adler is a crc32 instead of an adler32. + + The memLevel parameter specifies how much memory should be allocated + for the internal compression state. memLevel=1 uses minimum memory but is + slow and reduces compression ratio; memLevel=9 uses maximum memory for + optimal speed. The default value is 8. See zconf.h for total memory usage + as a function of windowBits and memLevel. + + The strategy parameter is used to tune the compression algorithm. Use the + value Z_DEFAULT_STRATEGY for normal data, Z_FILTERED for data produced by a + filter (or predictor), Z_HUFFMAN_ONLY to force Huffman encoding only (no + string match), or Z_RLE to limit match distances to one (run-length + encoding). Filtered data consists mostly of small values with a somewhat + random distribution. In this case, the compression algorithm is tuned to + compress them better. The effect of Z_FILTERED is to force more Huffman + coding and less string matching; it is somewhat intermediate between + Z_DEFAULT_STRATEGY and Z_HUFFMAN_ONLY. Z_RLE is designed to be almost as + fast as Z_HUFFMAN_ONLY, but give better compression for PNG image data. The + strategy parameter only affects the compression ratio but not the + correctness of the compressed output even if it is not set appropriately. + Z_FIXED prevents the use of dynamic Huffman codes, allowing for a simpler + decoder for special applications. + + deflateInit2 returns Z_OK if success, Z_MEM_ERROR if there was not enough + memory, Z_STREAM_ERROR if any parameter is invalid (such as an invalid + method), or Z_VERSION_ERROR if the zlib library version (zlib_version) is + incompatible with the version assumed by the caller (ZLIB_VERSION). msg is + set to null if there is no error message. deflateInit2 does not perform any + compression: this will be done by deflate(). +*/ + +ZEXTERN int ZEXPORT deflateSetDictionary OF((z_streamp strm, + const Bytef *dictionary, + uInt dictLength)); +/* + Initializes the compression dictionary from the given byte sequence + without producing any compressed output. This function must be called + immediately after deflateInit, deflateInit2 or deflateReset, before any call + of deflate. The compressor and decompressor must use exactly the same + dictionary (see inflateSetDictionary). + + The dictionary should consist of strings (byte sequences) that are likely + to be encountered later in the data to be compressed, with the most commonly + used strings preferably put towards the end of the dictionary. Using a + dictionary is most useful when the data to be compressed is short and can be + predicted with good accuracy; the data can then be compressed better than + with the default empty dictionary. + + Depending on the size of the compression data structures selected by + deflateInit or deflateInit2, a part of the dictionary may in effect be + discarded, for example if the dictionary is larger than the window size + provided in deflateInit or deflateInit2. Thus the strings most likely to be + useful should be put at the end of the dictionary, not at the front. In + addition, the current implementation of deflate will use at most the window + size minus 262 bytes of the provided dictionary. + + Upon return of this function, strm->adler is set to the adler32 value + of the dictionary; the decompressor may later use this value to determine + which dictionary has been used by the compressor. (The adler32 value + applies to the whole dictionary even if only a subset of the dictionary is + actually used by the compressor.) If a raw deflate was requested, then the + adler32 value is not computed and strm->adler is not set. + + deflateSetDictionary returns Z_OK if success, or Z_STREAM_ERROR if a + parameter is invalid (e.g. dictionary being Z_NULL) or the stream state is + inconsistent (for example if deflate has already been called for this stream + or if the compression method is bsort). deflateSetDictionary does not + perform any compression: this will be done by deflate(). +*/ + +ZEXTERN int ZEXPORT deflateCopy OF((z_streamp dest, + z_streamp source)); +/* + Sets the destination stream as a complete copy of the source stream. + + This function can be useful when several compression strategies will be + tried, for example when there are several ways of pre-processing the input + data with a filter. The streams that will be discarded should then be freed + by calling deflateEnd. Note that deflateCopy duplicates the internal + compression state which can be quite large, so this strategy is slow and can + consume lots of memory. + + deflateCopy returns Z_OK if success, Z_MEM_ERROR if there was not + enough memory, Z_STREAM_ERROR if the source stream state was inconsistent + (such as zalloc being Z_NULL). msg is left unchanged in both source and + destination. +*/ + +ZEXTERN int ZEXPORT deflateReset OF((z_streamp strm)); +/* + This function is equivalent to deflateEnd followed by deflateInit, + but does not free and reallocate all the internal compression state. The + stream will keep the same compression level and any other attributes that + may have been set by deflateInit2. + + deflateReset returns Z_OK if success, or Z_STREAM_ERROR if the source + stream state was inconsistent (such as zalloc or state being Z_NULL). +*/ + +ZEXTERN int ZEXPORT deflateParams OF((z_streamp strm, + int level, + int strategy)); +/* + Dynamically update the compression level and compression strategy. The + interpretation of level and strategy is as in deflateInit2. This can be + used to switch between compression and straight copy of the input data, or + to switch to a different kind of input data requiring a different strategy. + If the compression level is changed, the input available so far is + compressed with the old level (and may be flushed); the new level will take + effect only at the next call of deflate(). + + Before the call of deflateParams, the stream state must be set as for + a call of deflate(), since the currently available input may have to be + compressed and flushed. In particular, strm->avail_out must be non-zero. + + deflateParams returns Z_OK if success, Z_STREAM_ERROR if the source + stream state was inconsistent or if a parameter was invalid, Z_BUF_ERROR if + strm->avail_out was zero. +*/ + +ZEXTERN int ZEXPORT deflateTune OF((z_streamp strm, + int good_length, + int max_lazy, + int nice_length, + int max_chain)); +/* + Fine tune deflate's internal compression parameters. This should only be + used by someone who understands the algorithm used by zlib's deflate for + searching for the best matching string, and even then only by the most + fanatic optimizer trying to squeeze out the last compressed bit for their + specific input data. Read the deflate.c source code for the meaning of the + max_lazy, good_length, nice_length, and max_chain parameters. + + deflateTune() can be called after deflateInit() or deflateInit2(), and + returns Z_OK on success, or Z_STREAM_ERROR for an invalid deflate stream. + */ + +ZEXTERN uLong ZEXPORT deflateBound OF((z_streamp strm, + uLong sourceLen)); +/* + deflateBound() returns an upper bound on the compressed size after + deflation of sourceLen bytes. It must be called after deflateInit() or + deflateInit2(), and after deflateSetHeader(), if used. This would be used + to allocate an output buffer for deflation in a single pass, and so would be + called before deflate(). +*/ + +ZEXTERN int ZEXPORT deflatePrime OF((z_streamp strm, + int bits, + int value)); +/* + deflatePrime() inserts bits in the deflate output stream. The intent + is that this function is used to start off the deflate output with the bits + leftover from a previous deflate stream when appending to it. As such, this + function can only be used for raw deflate, and must be used before the first + deflate() call after a deflateInit2() or deflateReset(). bits must be less + than or equal to 16, and that many of the least significant bits of value + will be inserted in the output. + + deflatePrime returns Z_OK if success, or Z_STREAM_ERROR if the source + stream state was inconsistent. +*/ + +ZEXTERN int ZEXPORT deflateSetHeader OF((z_streamp strm, + gz_headerp head)); +/* + deflateSetHeader() provides gzip header information for when a gzip + stream is requested by deflateInit2(). deflateSetHeader() may be called + after deflateInit2() or deflateReset() and before the first call of + deflate(). The text, time, os, extra field, name, and comment information + in the provided gz_header structure are written to the gzip header (xflag is + ignored -- the extra flags are set according to the compression level). The + caller must assure that, if not Z_NULL, name and comment are terminated with + a zero byte, and that if extra is not Z_NULL, that extra_len bytes are + available there. If hcrc is true, a gzip header crc is included. Note that + the current versions of the command-line version of gzip (up through version + 1.3.x) do not support header crc's, and will report that it is a "multi-part + gzip file" and give up. + + If deflateSetHeader is not used, the default gzip header has text false, + the time set to zero, and os set to 255, with no extra, name, or comment + fields. The gzip header is returned to the default state by deflateReset(). + + deflateSetHeader returns Z_OK if success, or Z_STREAM_ERROR if the source + stream state was inconsistent. +*/ + +/* +ZEXTERN int ZEXPORT inflateInit2 OF((z_streamp strm, + int windowBits)); + + This is another version of inflateInit with an extra parameter. The + fields next_in, avail_in, zalloc, zfree and opaque must be initialized + before by the caller. + + The windowBits parameter is the base two logarithm of the maximum window + size (the size of the history buffer). It should be in the range 8..15 for + this version of the library. The default value is 15 if inflateInit is used + instead. windowBits must be greater than or equal to the windowBits value + provided to deflateInit2() while compressing, or it must be equal to 15 if + deflateInit2() was not used. If a compressed stream with a larger window + size is given as input, inflate() will return with the error code + Z_DATA_ERROR instead of trying to allocate a larger window. + + windowBits can also be zero to request that inflate use the window size in + the zlib header of the compressed stream. + + windowBits can also be -8..-15 for raw inflate. In this case, -windowBits + determines the window size. inflate() will then process raw deflate data, + not looking for a zlib or gzip header, not generating a check value, and not + looking for any check values for comparison at the end of the stream. This + is for use with other formats that use the deflate compressed data format + such as zip. Those formats provide their own check values. If a custom + format is developed using the raw deflate format for compressed data, it is + recommended that a check value such as an adler32 or a crc32 be applied to + the uncompressed data as is done in the zlib, gzip, and zip formats. For + most applications, the zlib format should be used as is. Note that comments + above on the use in deflateInit2() applies to the magnitude of windowBits. + + windowBits can also be greater than 15 for optional gzip decoding. Add + 32 to windowBits to enable zlib and gzip decoding with automatic header + detection, or add 16 to decode only the gzip format (the zlib format will + return a Z_DATA_ERROR). If a gzip stream is being decoded, strm->adler is a + crc32 instead of an adler32. + + inflateInit2 returns Z_OK if success, Z_MEM_ERROR if there was not enough + memory, Z_VERSION_ERROR if the zlib library version is incompatible with the + version assumed by the caller, or Z_STREAM_ERROR if the parameters are + invalid, such as a null pointer to the structure. msg is set to null if + there is no error message. inflateInit2 does not perform any decompression + apart from possibly reading the zlib header if present: actual decompression + will be done by inflate(). (So next_in and avail_in may be modified, but + next_out and avail_out are unused and unchanged.) The current implementation + of inflateInit2() does not process any header information -- that is + deferred until inflate() is called. +*/ + +ZEXTERN int ZEXPORT inflateSetDictionary OF((z_streamp strm, + const Bytef *dictionary, + uInt dictLength)); +/* + Initializes the decompression dictionary from the given uncompressed byte + sequence. This function must be called immediately after a call of inflate, + if that call returned Z_NEED_DICT. The dictionary chosen by the compressor + can be determined from the adler32 value returned by that call of inflate. + The compressor and decompressor must use exactly the same dictionary (see + deflateSetDictionary). For raw inflate, this function can be called + immediately after inflateInit2() or inflateReset() and before any call of + inflate() to set the dictionary. The application must insure that the + dictionary that was used for compression is provided. + + inflateSetDictionary returns Z_OK if success, Z_STREAM_ERROR if a + parameter is invalid (e.g. dictionary being Z_NULL) or the stream state is + inconsistent, Z_DATA_ERROR if the given dictionary doesn't match the + expected one (incorrect adler32 value). inflateSetDictionary does not + perform any decompression: this will be done by subsequent calls of + inflate(). +*/ + +ZEXTERN int ZEXPORT inflateSync OF((z_streamp strm)); +/* + Skips invalid compressed data until a full flush point (see above the + description of deflate with Z_FULL_FLUSH) can be found, or until all + available input is skipped. No output is provided. + + inflateSync returns Z_OK if a full flush point has been found, Z_BUF_ERROR + if no more input was provided, Z_DATA_ERROR if no flush point has been + found, or Z_STREAM_ERROR if the stream structure was inconsistent. In the + success case, the application may save the current current value of total_in + which indicates where valid compressed data was found. In the error case, + the application may repeatedly call inflateSync, providing more input each + time, until success or end of the input data. +*/ + +ZEXTERN int ZEXPORT inflateCopy OF((z_streamp dest, + z_streamp source)); +/* + Sets the destination stream as a complete copy of the source stream. + + This function can be useful when randomly accessing a large stream. The + first pass through the stream can periodically record the inflate state, + allowing restarting inflate at those points when randomly accessing the + stream. + + inflateCopy returns Z_OK if success, Z_MEM_ERROR if there was not + enough memory, Z_STREAM_ERROR if the source stream state was inconsistent + (such as zalloc being Z_NULL). msg is left unchanged in both source and + destination. +*/ + +ZEXTERN int ZEXPORT inflateReset OF((z_streamp strm)); +/* + This function is equivalent to inflateEnd followed by inflateInit, + but does not free and reallocate all the internal decompression state. The + stream will keep attributes that may have been set by inflateInit2. + + inflateReset returns Z_OK if success, or Z_STREAM_ERROR if the source + stream state was inconsistent (such as zalloc or state being Z_NULL). +*/ + +ZEXTERN int ZEXPORT inflateReset2 OF((z_streamp strm, + int windowBits)); +/* + This function is the same as inflateReset, but it also permits changing + the wrap and window size requests. The windowBits parameter is interpreted + the same as it is for inflateInit2. + + inflateReset2 returns Z_OK if success, or Z_STREAM_ERROR if the source + stream state was inconsistent (such as zalloc or state being Z_NULL), or if + the windowBits parameter is invalid. +*/ + +ZEXTERN int ZEXPORT inflatePrime OF((z_streamp strm, + int bits, + int value)); +/* + This function inserts bits in the inflate input stream. The intent is + that this function is used to start inflating at a bit position in the + middle of a byte. The provided bits will be used before any bytes are used + from next_in. This function should only be used with raw inflate, and + should be used before the first inflate() call after inflateInit2() or + inflateReset(). bits must be less than or equal to 16, and that many of the + least significant bits of value will be inserted in the input. + + If bits is negative, then the input stream bit buffer is emptied. Then + inflatePrime() can be called again to put bits in the buffer. This is used + to clear out bits leftover after feeding inflate a block description prior + to feeding inflate codes. + + inflatePrime returns Z_OK if success, or Z_STREAM_ERROR if the source + stream state was inconsistent. +*/ + +ZEXTERN long ZEXPORT inflateMark OF((z_streamp strm)); +/* + This function returns two values, one in the lower 16 bits of the return + value, and the other in the remaining upper bits, obtained by shifting the + return value down 16 bits. If the upper value is -1 and the lower value is + zero, then inflate() is currently decoding information outside of a block. + If the upper value is -1 and the lower value is non-zero, then inflate is in + the middle of a stored block, with the lower value equaling the number of + bytes from the input remaining to copy. If the upper value is not -1, then + it is the number of bits back from the current bit position in the input of + the code (literal or length/distance pair) currently being processed. In + that case the lower value is the number of bytes already emitted for that + code. + + A code is being processed if inflate is waiting for more input to complete + decoding of the code, or if it has completed decoding but is waiting for + more output space to write the literal or match data. + + inflateMark() is used to mark locations in the input data for random + access, which may be at bit positions, and to note those cases where the + output of a code may span boundaries of random access blocks. The current + location in the input stream can be determined from avail_in and data_type + as noted in the description for the Z_BLOCK flush parameter for inflate. + + inflateMark returns the value noted above or -1 << 16 if the provided + source stream state was inconsistent. +*/ + +ZEXTERN int ZEXPORT inflateGetHeader OF((z_streamp strm, + gz_headerp head)); +/* + inflateGetHeader() requests that gzip header information be stored in the + provided gz_header structure. inflateGetHeader() may be called after + inflateInit2() or inflateReset(), and before the first call of inflate(). + As inflate() processes the gzip stream, head->done is zero until the header + is completed, at which time head->done is set to one. If a zlib stream is + being decoded, then head->done is set to -1 to indicate that there will be + no gzip header information forthcoming. Note that Z_BLOCK or Z_TREES can be + used to force inflate() to return immediately after header processing is + complete and before any actual data is decompressed. + + The text, time, xflags, and os fields are filled in with the gzip header + contents. hcrc is set to true if there is a header CRC. (The header CRC + was valid if done is set to one.) If extra is not Z_NULL, then extra_max + contains the maximum number of bytes to write to extra. Once done is true, + extra_len contains the actual extra field length, and extra contains the + extra field, or that field truncated if extra_max is less than extra_len. + If name is not Z_NULL, then up to name_max characters are written there, + terminated with a zero unless the length is greater than name_max. If + comment is not Z_NULL, then up to comm_max characters are written there, + terminated with a zero unless the length is greater than comm_max. When any + of extra, name, or comment are not Z_NULL and the respective field is not + present in the header, then that field is set to Z_NULL to signal its + absence. This allows the use of deflateSetHeader() with the returned + structure to duplicate the header. However if those fields are set to + allocated memory, then the application will need to save those pointers + elsewhere so that they can be eventually freed. + + If inflateGetHeader is not used, then the header information is simply + discarded. The header is always checked for validity, including the header + CRC if present. inflateReset() will reset the process to discard the header + information. The application would need to call inflateGetHeader() again to + retrieve the header from the next gzip stream. + + inflateGetHeader returns Z_OK if success, or Z_STREAM_ERROR if the source + stream state was inconsistent. +*/ + +/* +ZEXTERN int ZEXPORT inflateBackInit OF((z_streamp strm, int windowBits, + unsigned char FAR *window)); + + Initialize the internal stream state for decompression using inflateBack() + calls. The fields zalloc, zfree and opaque in strm must be initialized + before the call. If zalloc and zfree are Z_NULL, then the default library- + derived memory allocation routines are used. windowBits is the base two + logarithm of the window size, in the range 8..15. window is a caller + supplied buffer of that size. Except for special applications where it is + assured that deflate was used with small window sizes, windowBits must be 15 + and a 32K byte window must be supplied to be able to decompress general + deflate streams. + + See inflateBack() for the usage of these routines. + + inflateBackInit will return Z_OK on success, Z_STREAM_ERROR if any of + the paramaters are invalid, Z_MEM_ERROR if the internal state could not be + allocated, or Z_VERSION_ERROR if the version of the library does not match + the version of the header file. +*/ + +typedef unsigned (*in_func) OF((void FAR *, unsigned char FAR * FAR *)); +typedef int (*out_func) OF((void FAR *, unsigned char FAR *, unsigned)); + +ZEXTERN int ZEXPORT inflateBack OF((z_streamp strm, + in_func in, void FAR *in_desc, + out_func out, void FAR *out_desc)); +/* + inflateBack() does a raw inflate with a single call using a call-back + interface for input and output. This is more efficient than inflate() for + file i/o applications in that it avoids copying between the output and the + sliding window by simply making the window itself the output buffer. This + function trusts the application to not change the output buffer passed by + the output function, at least until inflateBack() returns. + + inflateBackInit() must be called first to allocate the internal state + and to initialize the state with the user-provided window buffer. + inflateBack() may then be used multiple times to inflate a complete, raw + deflate stream with each call. inflateBackEnd() is then called to free the + allocated state. + + A raw deflate stream is one with no zlib or gzip header or trailer. + This routine would normally be used in a utility that reads zip or gzip + files and writes out uncompressed files. The utility would decode the + header and process the trailer on its own, hence this routine expects only + the raw deflate stream to decompress. This is different from the normal + behavior of inflate(), which expects either a zlib or gzip header and + trailer around the deflate stream. + + inflateBack() uses two subroutines supplied by the caller that are then + called by inflateBack() for input and output. inflateBack() calls those + routines until it reads a complete deflate stream and writes out all of the + uncompressed data, or until it encounters an error. The function's + parameters and return types are defined above in the in_func and out_func + typedefs. inflateBack() will call in(in_desc, &buf) which should return the + number of bytes of provided input, and a pointer to that input in buf. If + there is no input available, in() must return zero--buf is ignored in that + case--and inflateBack() will return a buffer error. inflateBack() will call + out(out_desc, buf, len) to write the uncompressed data buf[0..len-1]. out() + should return zero on success, or non-zero on failure. If out() returns + non-zero, inflateBack() will return with an error. Neither in() nor out() + are permitted to change the contents of the window provided to + inflateBackInit(), which is also the buffer that out() uses to write from. + The length written by out() will be at most the window size. Any non-zero + amount of input may be provided by in(). + + For convenience, inflateBack() can be provided input on the first call by + setting strm->next_in and strm->avail_in. If that input is exhausted, then + in() will be called. Therefore strm->next_in must be initialized before + calling inflateBack(). If strm->next_in is Z_NULL, then in() will be called + immediately for input. If strm->next_in is not Z_NULL, then strm->avail_in + must also be initialized, and then if strm->avail_in is not zero, input will + initially be taken from strm->next_in[0 .. strm->avail_in - 1]. + + The in_desc and out_desc parameters of inflateBack() is passed as the + first parameter of in() and out() respectively when they are called. These + descriptors can be optionally used to pass any information that the caller- + supplied in() and out() functions need to do their job. + + On return, inflateBack() will set strm->next_in and strm->avail_in to + pass back any unused input that was provided by the last in() call. The + return values of inflateBack() can be Z_STREAM_END on success, Z_BUF_ERROR + if in() or out() returned an error, Z_DATA_ERROR if there was a format error + in the deflate stream (in which case strm->msg is set to indicate the nature + of the error), or Z_STREAM_ERROR if the stream was not properly initialized. + In the case of Z_BUF_ERROR, an input or output error can be distinguished + using strm->next_in which will be Z_NULL only if in() returned an error. If + strm->next_in is not Z_NULL, then the Z_BUF_ERROR was due to out() returning + non-zero. (in() will always be called before out(), so strm->next_in is + assured to be defined if out() returns non-zero.) Note that inflateBack() + cannot return Z_OK. +*/ + +ZEXTERN int ZEXPORT inflateBackEnd OF((z_streamp strm)); +/* + All memory allocated by inflateBackInit() is freed. + + inflateBackEnd() returns Z_OK on success, or Z_STREAM_ERROR if the stream + state was inconsistent. +*/ + +ZEXTERN uLong ZEXPORT zlibCompileFlags OF((void)); +/* Return flags indicating compile-time options. + + Type sizes, two bits each, 00 = 16 bits, 01 = 32, 10 = 64, 11 = other: + 1.0: size of uInt + 3.2: size of uLong + 5.4: size of voidpf (pointer) + 7.6: size of z_off_t + + Compiler, assembler, and debug options: + 8: DEBUG + 9: ASMV or ASMINF -- use ASM code + 10: ZLIB_WINAPI -- exported functions use the WINAPI calling convention + 11: 0 (reserved) + + One-time table building (smaller code, but not thread-safe if true): + 12: BUILDFIXED -- build static block decoding tables when needed + 13: DYNAMIC_CRC_TABLE -- build CRC calculation tables when needed + 14,15: 0 (reserved) + + Library content (indicates missing functionality): + 16: NO_GZCOMPRESS -- gz* functions cannot compress (to avoid linking + deflate code when not needed) + 17: NO_GZIP -- deflate can't write gzip streams, and inflate can't detect + and decode gzip streams (to avoid linking crc code) + 18-19: 0 (reserved) + + Operation variations (changes in library functionality): + 20: PKZIP_BUG_WORKAROUND -- slightly more permissive inflate + 21: FASTEST -- deflate algorithm with only one, lowest compression level + 22,23: 0 (reserved) + + The sprintf variant used by gzprintf (zero is best): + 24: 0 = vs*, 1 = s* -- 1 means limited to 20 arguments after the format + 25: 0 = *nprintf, 1 = *printf -- 1 means gzprintf() not secure! + 26: 0 = returns value, 1 = void -- 1 means inferred string length returned + + Remainder: + 27-31: 0 (reserved) + */ + + + /* utility functions */ + +/* + The following utility functions are implemented on top of the basic + stream-oriented functions. To simplify the interface, some default options + are assumed (compression level and memory usage, standard memory allocation + functions). The source code of these utility functions can be modified if + you need special options. +*/ + +ZEXTERN int ZEXPORT compress OF((Bytef *dest, uLongf *destLen, + const Bytef *source, uLong sourceLen)); +/* + Compresses the source buffer into the destination buffer. sourceLen is + the byte length of the source buffer. Upon entry, destLen is the total size + of the destination buffer, which must be at least the value returned by + compressBound(sourceLen). Upon exit, destLen is the actual size of the + compressed buffer. + + compress returns Z_OK if success, Z_MEM_ERROR if there was not + enough memory, Z_BUF_ERROR if there was not enough room in the output + buffer. +*/ + +ZEXTERN int ZEXPORT compress2 OF((Bytef *dest, uLongf *destLen, + const Bytef *source, uLong sourceLen, + int level)); +/* + Compresses the source buffer into the destination buffer. The level + parameter has the same meaning as in deflateInit. sourceLen is the byte + length of the source buffer. Upon entry, destLen is the total size of the + destination buffer, which must be at least the value returned by + compressBound(sourceLen). Upon exit, destLen is the actual size of the + compressed buffer. + + compress2 returns Z_OK if success, Z_MEM_ERROR if there was not enough + memory, Z_BUF_ERROR if there was not enough room in the output buffer, + Z_STREAM_ERROR if the level parameter is invalid. +*/ + +ZEXTERN uLong ZEXPORT compressBound OF((uLong sourceLen)); +/* + compressBound() returns an upper bound on the compressed size after + compress() or compress2() on sourceLen bytes. It would be used before a + compress() or compress2() call to allocate the destination buffer. +*/ + +ZEXTERN int ZEXPORT uncompress OF((Bytef *dest, uLongf *destLen, + const Bytef *source, uLong sourceLen)); +/* + Decompresses the source buffer into the destination buffer. sourceLen is + the byte length of the source buffer. Upon entry, destLen is the total size + of the destination buffer, which must be large enough to hold the entire + uncompressed data. (The size of the uncompressed data must have been saved + previously by the compressor and transmitted to the decompressor by some + mechanism outside the scope of this compression library.) Upon exit, destLen + is the actual size of the uncompressed buffer. + + uncompress returns Z_OK if success, Z_MEM_ERROR if there was not + enough memory, Z_BUF_ERROR if there was not enough room in the output + buffer, or Z_DATA_ERROR if the input data was corrupted or incomplete. +*/ + + + /* gzip file access functions */ + +/* + This library supports reading and writing files in gzip (.gz) format with + an interface similar to that of stdio, using the functions that start with + "gz". The gzip format is different from the zlib format. gzip is a gzip + wrapper, documented in RFC 1952, wrapped around a deflate stream. +*/ + +typedef voidp gzFile; /* opaque gzip file descriptor */ + +/* +ZEXTERN gzFile ZEXPORT gzopen OF((const char *path, const char *mode)); + + Opens a gzip (.gz) file for reading or writing. The mode parameter is as + in fopen ("rb" or "wb") but can also include a compression level ("wb9") or + a strategy: 'f' for filtered data as in "wb6f", 'h' for Huffman-only + compression as in "wb1h", 'R' for run-length encoding as in "wb1R", or 'F' + for fixed code compression as in "wb9F". (See the description of + deflateInit2 for more information about the strategy parameter.) Also "a" + can be used instead of "w" to request that the gzip stream that will be + written be appended to the file. "+" will result in an error, since reading + and writing to the same gzip file is not supported. + + gzopen can be used to read a file which is not in gzip format; in this + case gzread will directly read from the file without decompression. + + gzopen returns NULL if the file could not be opened, if there was + insufficient memory to allocate the gzFile state, or if an invalid mode was + specified (an 'r', 'w', or 'a' was not provided, or '+' was provided). + errno can be checked to determine if the reason gzopen failed was that the + file could not be opened. +*/ + +ZEXTERN gzFile ZEXPORT gzdopen OF((int fd, const char *mode)); +/* + gzdopen associates a gzFile with the file descriptor fd. File descriptors + are obtained from calls like open, dup, creat, pipe or fileno (if the file + has been previously opened with fopen). The mode parameter is as in gzopen. + + The next call of gzclose on the returned gzFile will also close the file + descriptor fd, just like fclose(fdopen(fd, mode)) closes the file descriptor + fd. If you want to keep fd open, use fd = dup(fd_keep); gz = gzdopen(fd, + mode);. The duplicated descriptor should be saved to avoid a leak, since + gzdopen does not close fd if it fails. + + gzdopen returns NULL if there was insufficient memory to allocate the + gzFile state, if an invalid mode was specified (an 'r', 'w', or 'a' was not + provided, or '+' was provided), or if fd is -1. The file descriptor is not + used until the next gz* read, write, seek, or close operation, so gzdopen + will not detect if fd is invalid (unless fd is -1). +*/ + +ZEXTERN int ZEXPORT gzbuffer OF((gzFile file, unsigned size)); +/* + Set the internal buffer size used by this library's functions. The + default buffer size is 8192 bytes. This function must be called after + gzopen() or gzdopen(), and before any other calls that read or write the + file. The buffer memory allocation is always deferred to the first read or + write. Two buffers are allocated, either both of the specified size when + writing, or one of the specified size and the other twice that size when + reading. A larger buffer size of, for example, 64K or 128K bytes will + noticeably increase the speed of decompression (reading). + + The new buffer size also affects the maximum length for gzprintf(). + + gzbuffer() returns 0 on success, or -1 on failure, such as being called + too late. +*/ + +ZEXTERN int ZEXPORT gzsetparams OF((gzFile file, int level, int strategy)); +/* + Dynamically update the compression level or strategy. See the description + of deflateInit2 for the meaning of these parameters. + + gzsetparams returns Z_OK if success, or Z_STREAM_ERROR if the file was not + opened for writing. +*/ + +ZEXTERN int ZEXPORT gzread OF((gzFile file, voidp buf, unsigned len)); +/* + Reads the given number of uncompressed bytes from the compressed file. If + the input file was not in gzip format, gzread copies the given number of + bytes into the buffer. + + After reaching the end of a gzip stream in the input, gzread will continue + to read, looking for another gzip stream, or failing that, reading the rest + of the input file directly without decompression. The entire input file + will be read if gzread is called until it returns less than the requested + len. + + gzread returns the number of uncompressed bytes actually read, less than + len for end of file, or -1 for error. +*/ + +ZEXTERN int ZEXPORT gzwrite OF((gzFile file, + voidpc buf, unsigned len)); +/* + Writes the given number of uncompressed bytes into the compressed file. + gzwrite returns the number of uncompressed bytes written or 0 in case of + error. +*/ + +ZEXTERN int ZEXPORTVA gzprintf OF((gzFile file, const char *format, ...)); +/* + Converts, formats, and writes the arguments to the compressed file under + control of the format string, as in fprintf. gzprintf returns the number of + uncompressed bytes actually written, or 0 in case of error. The number of + uncompressed bytes written is limited to 8191, or one less than the buffer + size given to gzbuffer(). The caller should assure that this limit is not + exceeded. If it is exceeded, then gzprintf() will return an error (0) with + nothing written. In this case, there may also be a buffer overflow with + unpredictable consequences, which is possible only if zlib was compiled with + the insecure functions sprintf() or vsprintf() because the secure snprintf() + or vsnprintf() functions were not available. This can be determined using + zlibCompileFlags(). +*/ + +ZEXTERN int ZEXPORT gzputs OF((gzFile file, const char *s)); +/* + Writes the given null-terminated string to the compressed file, excluding + the terminating null character. + + gzputs returns the number of characters written, or -1 in case of error. +*/ + +ZEXTERN char * ZEXPORT gzgets OF((gzFile file, char *buf, int len)); +/* + Reads bytes from the compressed file until len-1 characters are read, or a + newline character is read and transferred to buf, or an end-of-file + condition is encountered. If any characters are read or if len == 1, the + string is terminated with a null character. If no characters are read due + to an end-of-file or len < 1, then the buffer is left untouched. + + gzgets returns buf which is a null-terminated string, or it returns NULL + for end-of-file or in case of error. If there was an error, the contents at + buf are indeterminate. +*/ + +ZEXTERN int ZEXPORT gzputc OF((gzFile file, int c)); +/* + Writes c, converted to an unsigned char, into the compressed file. gzputc + returns the value that was written, or -1 in case of error. +*/ + +ZEXTERN int ZEXPORT gzgetc OF((gzFile file)); +/* + Reads one byte from the compressed file. gzgetc returns this byte or -1 + in case of end of file or error. +*/ + +ZEXTERN int ZEXPORT gzungetc OF((int c, gzFile file)); +/* + Push one character back onto the stream to be read as the first character + on the next read. At least one character of push-back is allowed. + gzungetc() returns the character pushed, or -1 on failure. gzungetc() will + fail if c is -1, and may fail if a character has been pushed but not read + yet. If gzungetc is used immediately after gzopen or gzdopen, at least the + output buffer size of pushed characters is allowed. (See gzbuffer above.) + The pushed character will be discarded if the stream is repositioned with + gzseek() or gzrewind(). +*/ + +ZEXTERN int ZEXPORT gzflush OF((gzFile file, int flush)); +/* + Flushes all pending output into the compressed file. The parameter flush + is as in the deflate() function. The return value is the zlib error number + (see function gzerror below). gzflush is only permitted when writing. + + If the flush parameter is Z_FINISH, the remaining data is written and the + gzip stream is completed in the output. If gzwrite() is called again, a new + gzip stream will be started in the output. gzread() is able to read such + concatented gzip streams. + + gzflush should be called only when strictly necessary because it will + degrade compression if called too often. +*/ + +/* +ZEXTERN z_off_t ZEXPORT gzseek OF((gzFile file, + z_off_t offset, int whence)); + + Sets the starting position for the next gzread or gzwrite on the given + compressed file. The offset represents a number of bytes in the + uncompressed data stream. The whence parameter is defined as in lseek(2); + the value SEEK_END is not supported. + + If the file is opened for reading, this function is emulated but can be + extremely slow. If the file is opened for writing, only forward seeks are + supported; gzseek then compresses a sequence of zeroes up to the new + starting position. + + gzseek returns the resulting offset location as measured in bytes from + the beginning of the uncompressed stream, or -1 in case of error, in + particular if the file is opened for writing and the new starting position + would be before the current position. +*/ + +ZEXTERN int ZEXPORT gzrewind OF((gzFile file)); +/* + Rewinds the given file. This function is supported only for reading. + + gzrewind(file) is equivalent to (int)gzseek(file, 0L, SEEK_SET) +*/ + +/* +ZEXTERN z_off_t ZEXPORT gztell OF((gzFile file)); + + Returns the starting position for the next gzread or gzwrite on the given + compressed file. This position represents a number of bytes in the + uncompressed data stream, and is zero when starting, even if appending or + reading a gzip stream from the middle of a file using gzdopen(). + + gztell(file) is equivalent to gzseek(file, 0L, SEEK_CUR) +*/ + +/* +ZEXTERN z_off_t ZEXPORT gzoffset OF((gzFile file)); + + Returns the current offset in the file being read or written. This offset + includes the count of bytes that precede the gzip stream, for example when + appending or when using gzdopen() for reading. When reading, the offset + does not include as yet unused buffered input. This information can be used + for a progress indicator. On error, gzoffset() returns -1. +*/ + +ZEXTERN int ZEXPORT gzeof OF((gzFile file)); +/* + Returns true (1) if the end-of-file indicator has been set while reading, + false (0) otherwise. Note that the end-of-file indicator is set only if the + read tried to go past the end of the input, but came up short. Therefore, + just like feof(), gzeof() may return false even if there is no more data to + read, in the event that the last read request was for the exact number of + bytes remaining in the input file. This will happen if the input file size + is an exact multiple of the buffer size. + + If gzeof() returns true, then the read functions will return no more data, + unless the end-of-file indicator is reset by gzclearerr() and the input file + has grown since the previous end of file was detected. +*/ + +ZEXTERN int ZEXPORT gzdirect OF((gzFile file)); +/* + Returns true (1) if file is being copied directly while reading, or false + (0) if file is a gzip stream being decompressed. This state can change from + false to true while reading the input file if the end of a gzip stream is + reached, but is followed by data that is not another gzip stream. + + If the input file is empty, gzdirect() will return true, since the input + does not contain a gzip stream. + + If gzdirect() is used immediately after gzopen() or gzdopen() it will + cause buffers to be allocated to allow reading the file to determine if it + is a gzip file. Therefore if gzbuffer() is used, it should be called before + gzdirect(). +*/ + +ZEXTERN int ZEXPORT gzclose OF((gzFile file)); +/* + Flushes all pending output if necessary, closes the compressed file and + deallocates the (de)compression state. Note that once file is closed, you + cannot call gzerror with file, since its structures have been deallocated. + gzclose must not be called more than once on the same file, just as free + must not be called more than once on the same allocation. + + gzclose will return Z_STREAM_ERROR if file is not valid, Z_ERRNO on a + file operation error, or Z_OK on success. +*/ + +ZEXTERN int ZEXPORT gzclose_r OF((gzFile file)); +ZEXTERN int ZEXPORT gzclose_w OF((gzFile file)); +/* + Same as gzclose(), but gzclose_r() is only for use when reading, and + gzclose_w() is only for use when writing or appending. The advantage to + using these instead of gzclose() is that they avoid linking in zlib + compression or decompression code that is not used when only reading or only + writing respectively. If gzclose() is used, then both compression and + decompression code will be included the application when linking to a static + zlib library. +*/ + +ZEXTERN const char * ZEXPORT gzerror OF((gzFile file, int *errnum)); +/* + Returns the error message for the last error which occurred on the given + compressed file. errnum is set to zlib error number. If an error occurred + in the file system and not in the compression library, errnum is set to + Z_ERRNO and the application may consult errno to get the exact error code. + + The application must not modify the returned string. Future calls to + this function may invalidate the previously returned string. If file is + closed, then the string previously returned by gzerror will no longer be + available. + + gzerror() should be used to distinguish errors from end-of-file for those + functions above that do not distinguish those cases in their return values. +*/ + +ZEXTERN void ZEXPORT gzclearerr OF((gzFile file)); +/* + Clears the error and end-of-file flags for file. This is analogous to the + clearerr() function in stdio. This is useful for continuing to read a gzip + file that is being written concurrently. +*/ + + + /* checksum functions */ + +/* + These functions are not related to compression but are exported + anyway because they might be useful in applications using the compression + library. +*/ + +ZEXTERN uLong ZEXPORT adler32 OF((uLong adler, const Bytef *buf, uInt len)); +/* + Update a running Adler-32 checksum with the bytes buf[0..len-1] and + return the updated checksum. If buf is Z_NULL, this function returns the + required initial value for the checksum. + + An Adler-32 checksum is almost as reliable as a CRC32 but can be computed + much faster. + + Usage example: + + uLong adler = adler32(0L, Z_NULL, 0); + + while (read_buffer(buffer, length) != EOF) { + adler = adler32(adler, buffer, length); + } + if (adler != original_adler) error(); +*/ + +/* +ZEXTERN uLong ZEXPORT adler32_combine OF((uLong adler1, uLong adler2, + z_off_t len2)); + + Combine two Adler-32 checksums into one. For two sequences of bytes, seq1 + and seq2 with lengths len1 and len2, Adler-32 checksums were calculated for + each, adler1 and adler2. adler32_combine() returns the Adler-32 checksum of + seq1 and seq2 concatenated, requiring only adler1, adler2, and len2. +*/ + +ZEXTERN uLong ZEXPORT crc32 OF((uLong crc, const Bytef *buf, uInt len)); +/* + Update a running CRC-32 with the bytes buf[0..len-1] and return the + updated CRC-32. If buf is Z_NULL, this function returns the required + initial value for the for the crc. Pre- and post-conditioning (one's + complement) is performed within this function so it shouldn't be done by the + application. + + Usage example: + + uLong crc = crc32(0L, Z_NULL, 0); + + while (read_buffer(buffer, length) != EOF) { + crc = crc32(crc, buffer, length); + } + if (crc != original_crc) error(); +*/ + +/* +ZEXTERN uLong ZEXPORT crc32_combine OF((uLong crc1, uLong crc2, z_off_t len2)); + + Combine two CRC-32 check values into one. For two sequences of bytes, + seq1 and seq2 with lengths len1 and len2, CRC-32 check values were + calculated for each, crc1 and crc2. crc32_combine() returns the CRC-32 + check value of seq1 and seq2 concatenated, requiring only crc1, crc2, and + len2. +*/ + + + /* various hacks, don't look :) */ + +/* deflateInit and inflateInit are macros to allow checking the zlib version + * and the compiler's view of z_stream: + */ +ZEXTERN int ZEXPORT deflateInit_ OF((z_streamp strm, int level, + const char *version, int stream_size)); +ZEXTERN int ZEXPORT inflateInit_ OF((z_streamp strm, + const char *version, int stream_size)); +ZEXTERN int ZEXPORT deflateInit2_ OF((z_streamp strm, int level, int method, + int windowBits, int memLevel, + int strategy, const char *version, + int stream_size)); +ZEXTERN int ZEXPORT inflateInit2_ OF((z_streamp strm, int windowBits, + const char *version, int stream_size)); +ZEXTERN int ZEXPORT inflateBackInit_ OF((z_streamp strm, int windowBits, + unsigned char FAR *window, + const char *version, + int stream_size)); +#define deflateInit(strm, level) \ + deflateInit_((strm), (level), ZLIB_VERSION, sizeof(z_stream)) +#define inflateInit(strm) \ + inflateInit_((strm), ZLIB_VERSION, sizeof(z_stream)) +#define deflateInit2(strm, level, method, windowBits, memLevel, strategy) \ + deflateInit2_((strm),(level),(method),(windowBits),(memLevel),\ + (strategy), ZLIB_VERSION, sizeof(z_stream)) +#define inflateInit2(strm, windowBits) \ + inflateInit2_((strm), (windowBits), ZLIB_VERSION, sizeof(z_stream)) +#define inflateBackInit(strm, windowBits, window) \ + inflateBackInit_((strm), (windowBits), (window), \ + ZLIB_VERSION, sizeof(z_stream)) + +/* provide 64-bit offset functions if _LARGEFILE64_SOURCE defined, and/or + * change the regular functions to 64 bits if _FILE_OFFSET_BITS is 64 (if + * both are true, the application gets the *64 functions, and the regular + * functions are changed to 64 bits) -- in case these are set on systems + * without large file support, _LFS64_LARGEFILE must also be true + */ +#if defined(_LARGEFILE64_SOURCE) && _LFS64_LARGEFILE-0 + ZEXTERN gzFile ZEXPORT gzopen64 OF((const char *, const char *)); + ZEXTERN z_off64_t ZEXPORT gzseek64 OF((gzFile, z_off64_t, int)); + ZEXTERN z_off64_t ZEXPORT gztell64 OF((gzFile)); + ZEXTERN z_off64_t ZEXPORT gzoffset64 OF((gzFile)); + ZEXTERN uLong ZEXPORT adler32_combine64 OF((uLong, uLong, z_off64_t)); + ZEXTERN uLong ZEXPORT crc32_combine64 OF((uLong, uLong, z_off64_t)); +#endif + +#if !defined(ZLIB_INTERNAL) && _FILE_OFFSET_BITS-0 == 64 && _LFS64_LARGEFILE-0 +# define gzopen gzopen64 +# define gzseek gzseek64 +# define gztell gztell64 +# define gzoffset gzoffset64 +# define adler32_combine adler32_combine64 +# define crc32_combine crc32_combine64 +# ifdef _LARGEFILE64_SOURCE + ZEXTERN gzFile ZEXPORT gzopen64 OF((const char *, const char *)); + ZEXTERN z_off_t ZEXPORT gzseek64 OF((gzFile, z_off_t, int)); + ZEXTERN z_off_t ZEXPORT gztell64 OF((gzFile)); + ZEXTERN z_off_t ZEXPORT gzoffset64 OF((gzFile)); + ZEXTERN uLong ZEXPORT adler32_combine64 OF((uLong, uLong, z_off_t)); + ZEXTERN uLong ZEXPORT crc32_combine64 OF((uLong, uLong, z_off_t)); +# endif +#else + ZEXTERN gzFile ZEXPORT gzopen OF((const char *, const char *)); + ZEXTERN z_off_t ZEXPORT gzseek OF((gzFile, z_off_t, int)); + ZEXTERN z_off_t ZEXPORT gztell OF((gzFile)); + ZEXTERN z_off_t ZEXPORT gzoffset OF((gzFile)); + ZEXTERN uLong ZEXPORT adler32_combine OF((uLong, uLong, z_off_t)); + ZEXTERN uLong ZEXPORT crc32_combine OF((uLong, uLong, z_off_t)); +#endif + +/* hack for buggy compilers */ +#if !defined(ZUTIL_H) && !defined(NO_DUMMY_DECL) + struct internal_state {int dummy;}; +#endif + +/* undocumented functions */ +ZEXTERN const char * ZEXPORT zError OF((int)); +ZEXTERN int ZEXPORT inflateSyncPoint OF((z_streamp)); +ZEXTERN const uLongf * ZEXPORT get_crc_table OF((void)); +ZEXTERN int ZEXPORT inflateUndermine OF((z_streamp, int)); + +#ifdef __cplusplus +} +#endif + +#endif /* ZLIB_H */ diff -r 3331b30e4ef1 -r 88fde28bbda6 misc/winutils/lib/libavcodec.dll.a Binary file misc/winutils/lib/libavcodec.dll.a has changed diff -r 3331b30e4ef1 -r 88fde28bbda6 misc/winutils/lib/libavformat.dll.a Binary file misc/winutils/lib/libavformat.dll.a has changed diff -r 3331b30e4ef1 -r 88fde28bbda6 misc/winutils/lib/libavutil.dll.a Binary file misc/winutils/lib/libavutil.dll.a has changed diff -r 3331b30e4ef1 -r 88fde28bbda6 project_files/Android-build/gles11.pp --- a/project_files/Android-build/gles11.pp Sun Oct 21 01:28:33 2012 +0400 +++ b/project_files/Android-build/gles11.pp Sat Nov 03 00:34:35 2012 +0400 @@ -32,7 +32,8 @@ gl.hh } - procedure init; + procedure initModule; + procedure freeModule; const External_library='GLESv1_CM'; {Setup as you need} @@ -1106,15 +1107,14 @@ pointer(glPointSizePointerOES):=GetProcAddress(hlib,'glPointSizePointerOES'); end; -procedure init; +procedure initModule; begin Loadgles11('libGLESv1_CM.so'); end; - -initialization - Loadgles11('gles11'); -finalization +procedure freeModule; +begin Freegles11; +end; end. diff -r 3331b30e4ef1 -r 88fde28bbda6 project_files/Android-build/log.pas --- a/project_files/Android-build/log.pas Sun Oct 21 01:28:33 2012 +0400 +++ b/project_files/Android-build/log.pas Sat Nov 03 00:34:35 2012 +0400 @@ -1,13 +1,13 @@ -unit log; -{$ifdef fpc} +unit log; +{$ifdef fpc} {$mode delphi} -{$endif} - -interface - -const libname='liblog.so'; - - ANDROID_LOG_UNKNOWN=0; +{$endif} + +interface + +const libname='liblog.so'; + + ANDROID_LOG_UNKNOWN=0; ANDROID_LOG_DEFAULT=1; ANDROID_LOG_VERBOSE=2; ANDROID_LOG_DEBUG=3; @@ -15,14 +15,14 @@ ANDROID_LOG_WARN=5; ANDROID_LOG_ERROR=6; ANDROID_LOG_FATAL=7; - ANDROID_LOG_SILENT=8; - -type android_LogPriority=integer; - -function __android_log_write(prio:longint;tag,text:pchar):longint; cdecl; external libname name '__android_log_write'; - -//function __android_log_print(prio:longint;tag,print:pchar;params:array of pchar):longint; cdecl; external libname name '__android_log_print'; - -implementation - -end. + ANDROID_LOG_SILENT=8; + +type android_LogPriority=integer; + +function __android_log_write(prio:longint;tag,text:pchar):longint; cdecl; external libname name '__android_log_write'; + +//function __android_log_print(prio:longint;tag,print:pchar;params:array of pchar):longint; cdecl; external libname name '__android_log_print'; + +implementation + +end. diff -r 3331b30e4ef1 -r 88fde28bbda6 project_files/HedgewarsMobile/Hedgewars.xcodeproj/project.pbxproj --- a/project_files/HedgewarsMobile/Hedgewars.xcodeproj/project.pbxproj Sun Oct 21 01:28:33 2012 +0400 +++ b/project_files/HedgewarsMobile/Hedgewars.xcodeproj/project.pbxproj Sat Nov 03 00:34:35 2012 +0400 @@ -177,7 +177,6 @@ 619349C8160BAF3E00A08518 /* uAILandMarks.pas in Sources */ = {isa = PBXBuildFile; fileRef = 619349C5160BAF3E00A08518 /* uAILandMarks.pas */; }; 619349C9160BAF3E00A08518 /* uGearsHandlers.pas in Sources */ = {isa = PBXBuildFile; fileRef = 619349C6160BAF3E00A08518 /* uGearsHandlers.pas */; }; 619349CA160BAF3E00A08518 /* uGearsHandlersRope.pas in Sources */ = {isa = PBXBuildFile; fileRef = 619349C7160BAF3E00A08518 /* uGearsHandlersRope.pas */; }; - 619349CE160BAF6E00A08518 /* uVideoRec.pas in Sources */ = {isa = PBXBuildFile; fileRef = 619349CD160BAF6E00A08518 /* uVideoRec.pas */; }; 6195981F1364BCEF00B429B6 /* libTremor.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 6195981D1364BCD200B429B6 /* libTremor.a */; }; 619599451364C83D00B429B6 /* libLua.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 619599441364C82B00B429B6 /* libLua.a */; }; 6199E81612463EA800DADF8C /* CFNetwork.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 6199E81512463EA800DADF8C /* CFNetwork.framework */; }; @@ -552,7 +551,6 @@ 619349C5160BAF3E00A08518 /* uAILandMarks.pas */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.pascal; name = uAILandMarks.pas; path = ../../hedgewars/uAILandMarks.pas; sourceTree = SOURCE_ROOT; }; 619349C6160BAF3E00A08518 /* uGearsHandlers.pas */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.pascal; name = uGearsHandlers.pas; path = ../../hedgewars/uGearsHandlers.pas; sourceTree = SOURCE_ROOT; }; 619349C7160BAF3E00A08518 /* uGearsHandlersRope.pas */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.pascal; name = uGearsHandlersRope.pas; path = ../../hedgewars/uGearsHandlersRope.pas; sourceTree = SOURCE_ROOT; }; - 619349CD160BAF6E00A08518 /* uVideoRec.pas */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.pascal; name = uVideoRec.pas; path = ../../hedgewars/uVideoRec.pas; sourceTree = SOURCE_ROOT; }; 619598181364BCD200B429B6 /* Tremor.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = Tremor.xcodeproj; path = ../../misc/libtremor/Xcode/Tremor.xcodeproj; sourceTree = SOURCE_ROOT; }; 6195993F1364C82B00B429B6 /* Lua.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = Lua.xcodeproj; path = ../../misc/liblua/Xcode/Lua.xcodeproj; sourceTree = SOURCE_ROOT; }; 619599BA1364E65900B429B6 /* Freetype.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = Freetype.xcodeproj; path = "../../misc/libfreetype/Xcode-iOS/Freetype.xcodeproj"; sourceTree = SOURCE_ROOT; }; @@ -1135,7 +1133,6 @@ 9283015C0F10E48900CC5A3C /* Pascal Sources */ = { isa = PBXGroup; children = ( - 619349CD160BAF6E00A08518 /* uVideoRec.pas */, 619349C5160BAF3E00A08518 /* uAILandMarks.pas */, 619349C6160BAF3E00A08518 /* uGearsHandlers.pas */, 619349C7160BAF3E00A08518 /* uGearsHandlersRope.pas */, @@ -1635,7 +1632,6 @@ 619349C8160BAF3E00A08518 /* uAILandMarks.pas in Sources */, 619349C9160BAF3E00A08518 /* uGearsHandlers.pas in Sources */, 619349CA160BAF3E00A08518 /* uGearsHandlersRope.pas in Sources */, - 619349CE160BAF6E00A08518 /* uVideoRec.pas in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; diff -r 3331b30e4ef1 -r 88fde28bbda6 project_files/hedgewars.pro --- a/project_files/hedgewars.pro Sun Oct 21 01:28:33 2012 +0400 +++ b/project_files/hedgewars.pro Sat Nov 03 00:34:35 2012 +0400 @@ -1,262 +1,264 @@ -TEMPLATE = app -TARGET = hedgewars -DEPENDPATH += ../QTfrontend/ -INCLUDEPATH += ../QTfrontend/ -INCLUDEPATH += ../QTfrontend/model -INCLUDEPATH += ../QTfrontend/ui -INCLUDEPATH += ../QTfrontend/ui/widget -INCLUDEPATH += ../QTfrontend/ui/page -INCLUDEPATH += ../QTfrontend/ui/dialog -INCLUDEPATH += ../QTfrontend/net -INCLUDEPATH += ../QTfrontend/util -INCLUDEPATH += /usr/local/include/SDL -INCLUDEPATH += /usr/include/SDL -INCLUDEPATH += ../misc/quazip/ -INCLUDEPATH += ../misc/physfs/src/ - -DESTDIR = . - -win32 { - RC_FILE = ../QTfrontend/hedgewars.rc -} - -QT += network -QT += webkit - -HEADERS += ../QTfrontend/model/ThemeModel.h \ - ../QTfrontend/model/MapModel.h \ - ../QTfrontend/model/ammoSchemeModel.h \ - ../QTfrontend/model/netserverslist.h \ - ../QTfrontend/ui/page/pagedrawmap.h \ - ../QTfrontend/ui/page/pagedata.h \ - ../QTfrontend/ui/page/pagetraining.h \ - ../QTfrontend/ui/page/pageselectweapon.h \ - ../QTfrontend/ui/page/pagesingleplayer.h \ - ../QTfrontend/ui/page/pagenettype.h \ - ../QTfrontend/ui/page/pageingame.h \ - ../QTfrontend/ui/page/pageadmin.h \ - ../QTfrontend/ui/page/pagescheme.h \ - ../QTfrontend/ui/page/pagemultiplayer.h \ - ../QTfrontend/ui/page/pageplayrecord.h \ - ../QTfrontend/ui/page/pagemain.h \ - ../QTfrontend/ui/page/pageoptions.h \ - ../QTfrontend/ui/page/pagenetgame.h \ - ../QTfrontend/ui/page/pageeditteam.h \ - ../QTfrontend/ui/page/pageconnecting.h \ - ../QTfrontend/ui/page/pageroomslist.h \ - ../QTfrontend/ui/page/pagenet.h \ - ../QTfrontend/ui/page/pagecampaign.h \ - ../QTfrontend/ui/page/pageinfo.h \ - ../QTfrontend/ui/page/pagenetserver.h \ - ../QTfrontend/ui/page/pagegamestats.h \ - ../QTfrontend/ui/dialog/input_ip.h \ - ../QTfrontend/ui/qaspectratiolayout.h \ - ../QTfrontend/ui/widget/bgwidget.h \ - ../QTfrontend/ui/widget/fpsedit.h \ - ../QTfrontend/ui/widget/FreqSpinBox.h \ - ../QTfrontend/ui/widget/igbox.h \ - ../QTfrontend/ui/widget/chatwidget.h \ - ../QTfrontend/ui/widget/togglebutton.h \ - ../QTfrontend/ui/widget/SquareLabel.h \ - ../QTfrontend/ui/widget/itemNum.h \ - ../QTfrontend/ui/widget/frameTeam.h \ - ../QTfrontend/ui/widget/teamselect.h \ - ../QTfrontend/ui/widget/vertScrollArea.h \ - ../QTfrontend/ui/widget/about.h \ - ../QTfrontend/ui/widget/teamselhelper.h \ - ../QTfrontend/ui/widget/drawmapwidget.h \ - ../QTfrontend/ui/widget/databrowser.h \ - ../QTfrontend/ui/widget/hedgehogerWidget.h \ - ../QTfrontend/ui/widget/selectWeapon.h \ - ../QTfrontend/ui/widget/weaponItem.h \ - ../QTfrontend/ui/widget/gamecfgwidget.h \ - ../QTfrontend/ui/widget/mapContainer.h \ - ../QTfrontend/ui/widget/HistoryLineEdit.h \ - ../QTfrontend/ui/widget/SmartLineEdit.h \ - ../QTfrontend/util/DataManager.h \ - ../QTfrontend/net/netregister.h \ - ../QTfrontend/net/netserver.h \ - ../QTfrontend/net/netudpwidget.h \ - ../QTfrontend/net/tcpBase.h \ - ../QTfrontend/net/proto.h \ - ../QTfrontend/net/newnetclient.h \ - ../QTfrontend/net/netudpserver.h \ - ../QTfrontend/net/hwmap.h \ - ../QTfrontend/util/namegen.h \ - ../QTfrontend/ui/page/AbstractPage.h \ - ../QTfrontend/drawmapscene.h \ - ../QTfrontend/game.h \ - ../QTfrontend/gameuiconfig.h \ - ../QTfrontend/HWApplication.h \ - ../QTfrontend/hwform.h \ - ../QTfrontend/util/SDLInteraction.h \ - ../QTfrontend/team.h \ - ../QTfrontend/achievements.h \ - ../QTfrontend/binds.h \ - ../QTfrontend/ui_hwform.h \ - ../QTfrontend/KB.h \ - ../QTfrontend/hwconsts.h \ - ../QTfrontend/sdlkeys.h \ - ../QTfrontend/ui/mouseoverfilter.h \ - ../QTfrontend/ui/qpushbuttonwithsound.h \ - ../QTfrontend/ui/widget/qpushbuttonwithsound.h \ - ../QTfrontend/ui/page/pagefeedback.h \ - ../QTfrontend/model/roomslistmodel.h \ - ../QTfrontend/ui/dialog/input_password.h \ - ../QTfrontend/ui/widget/colorwidget.h \ - ../QTfrontend/model/HatModel.h \ - ../QTfrontend/model/GameStyleModel.h \ - ../QTfrontend/util/libav_iteraction.h \ - ../QTfrontend/ui/page/pagevideos.h \ - ../QTfrontend/net/recorder.h \ - ../QTfrontend/ui/dialog/ask_quit.h \ - ../QTfrontend/ui/dialog/upload_video.h \ - ../QTfrontend/campaign.h \ - ../QTfrontend/model/playerslistmodel.h \ - ../QTfrontend/util/FileEngine.h - -SOURCES += ../QTfrontend/model/ammoSchemeModel.cpp \ - ../QTfrontend/model/MapModel.cpp \ - ../QTfrontend/model/ThemeModel.cpp \ - ../QTfrontend/model/netserverslist.cpp \ - ../QTfrontend/ui/qaspectratiolayout.cpp \ - ../QTfrontend/ui/page/pagemain.cpp \ - ../QTfrontend/ui/page/pagetraining.cpp \ - ../QTfrontend/ui/page/pageroomslist.cpp \ - ../QTfrontend/ui/page/pagemultiplayer.cpp \ - ../QTfrontend/ui/page/pagegamestats.cpp \ - ../QTfrontend/ui/page/pagenettype.cpp \ - ../QTfrontend/ui/page/pageeditteam.cpp \ - ../QTfrontend/ui/page/pagenetgame.cpp \ - ../QTfrontend/ui/page/pagedata.cpp \ - ../QTfrontend/ui/page/pagedrawmap.cpp \ - ../QTfrontend/ui/page/pageplayrecord.cpp \ - ../QTfrontend/ui/page/pageselectweapon.cpp \ - ../QTfrontend/ui/page/pageingame.cpp \ - ../QTfrontend/ui/page/pagenetserver.cpp \ - ../QTfrontend/ui/page/pagecampaign.cpp \ - ../QTfrontend/ui/page/pageadmin.cpp \ - ../QTfrontend/ui/page/pageinfo.cpp \ - ../QTfrontend/ui/page/pageconnecting.cpp \ - ../QTfrontend/ui/page/pagesingleplayer.cpp \ - ../QTfrontend/ui/page/pagenet.cpp \ - ../QTfrontend/ui/page/pagescheme.cpp \ - ../QTfrontend/ui/page/pageoptions.cpp \ - ../QTfrontend/ui/dialog/input_ip.cpp \ - ../QTfrontend/ui/widget/igbox.cpp \ - ../QTfrontend/ui/widget/selectWeapon.cpp \ - ../QTfrontend/ui/widget/FreqSpinBox.cpp \ - ../QTfrontend/ui/widget/SquareLabel.cpp \ - ../QTfrontend/ui/widget/frameTeam.cpp \ - ../QTfrontend/ui/widget/fpsedit.cpp \ - ../QTfrontend/ui/widget/databrowser.cpp \ - ../QTfrontend/ui/widget/teamselect.cpp \ - ../QTfrontend/ui/widget/gamecfgwidget.cpp \ - ../QTfrontend/ui/widget/chatwidget.cpp \ - ../QTfrontend/ui/widget/itemNum.cpp \ - ../QTfrontend/ui/widget/bgwidget.cpp \ - ../QTfrontend/ui/widget/about.cpp \ - ../QTfrontend/ui/widget/togglebutton.cpp \ - ../QTfrontend/ui/widget/vertScrollArea.cpp \ - ../QTfrontend/ui/widget/hedgehogerWidget.cpp \ - ../QTfrontend/ui/widget/teamselhelper.cpp \ - ../QTfrontend/ui/widget/drawmapwidget.cpp \ - ../QTfrontend/ui/widget/weaponItem.cpp \ - ../QTfrontend/ui/widget/mapContainer.cpp \ - ../QTfrontend/ui/widget/HistoryLineEdit.cpp \ - ../QTfrontend/ui/widget/SmartLineEdit.cpp \ - ../QTfrontend/util/DataManager.cpp \ - ../QTfrontend/net/tcpBase.cpp \ - ../QTfrontend/net/netregister.cpp \ - ../QTfrontend/net/proto.cpp \ - ../QTfrontend/net/hwmap.cpp \ - ../QTfrontend/net/netudpserver.cpp \ - ../QTfrontend/net/newnetclient.cpp \ - ../QTfrontend/net/netudpwidget.cpp \ - ../QTfrontend/net/netserver.cpp \ - ../QTfrontend/util/namegen.cpp \ - ../QTfrontend/ui/page/AbstractPage.cpp \ - ../QTfrontend/achievements.cpp \ - ../QTfrontend/binds.cpp \ - ../QTfrontend/drawmapscene.cpp \ - ../QTfrontend/game.cpp \ - ../QTfrontend/gameuiconfig.cpp \ - ../QTfrontend/HWApplication.cpp \ - ../QTfrontend/hwform.cpp \ - ../QTfrontend/main.cpp \ - ../QTfrontend/util/SDLInteraction.cpp \ - ../QTfrontend/team.cpp \ - ../QTfrontend/ui_hwform.cpp \ - ../QTfrontend/hwconsts.cpp \ - ../QTfrontend/ui/mouseoverfilter.cpp \ - ../QTfrontend/ui/widget/qpushbuttonwithsound.cpp \ - ../QTfrontend/ui/page/pagefeedback.cpp \ - ../QTfrontend/model/roomslistmodel.cpp \ - ../QTfrontend/ui/dialog/input_password.cpp \ - ../QTfrontend/ui/widget/colorwidget.cpp \ - ../QTfrontend/model/HatModel.cpp \ - ../QTfrontend/model/GameStyleModel.cpp \ - ../QTfrontend/util/libav_iteraction.cpp \ - ../QTfrontend/ui/page/pagevideos.cpp \ - ../QTfrontend/net/recorder.cpp \ - ../QTfrontend/ui/dialog/ask_quit.cpp \ - ../QTfrontend/ui/dialog/upload_video.cpp \ - ../QTfrontend/campaign.cpp \ - ../QTfrontend/model/playerslistmodel.cpp \ - ../QTfrontend/util/FileEngine.cpp - - -win32 { - SOURCES += ../QTfrontend/xfire.cpp -} - -TRANSLATIONS += ../share/hedgewars/Data/Locale/hedgewars_ar.ts -TRANSLATIONS += ../share/hedgewars/Data/Locale/hedgewars_bg.ts -TRANSLATIONS += ../share/hedgewars/Data/Locale/hedgewars_cs.ts -TRANSLATIONS += ../share/hedgewars/Data/Locale/hedgewars_de.ts -TRANSLATIONS += ../share/hedgewars/Data/Locale/hedgewars_en.ts -TRANSLATIONS += ../share/hedgewars/Data/Locale/hedgewars_es.ts -TRANSLATIONS += ../share/hedgewars/Data/Locale/hedgewars_fi.ts -TRANSLATIONS += ../share/hedgewars/Data/Locale/hedgewars_fr.ts -TRANSLATIONS += ../share/hedgewars/Data/Locale/hedgewars_hu.ts -TRANSLATIONS += ../share/hedgewars/Data/Locale/hedgewars_it.ts -TRANSLATIONS += ../share/hedgewars/Data/Locale/hedgewars_ja.ts -TRANSLATIONS += ../share/hedgewars/Data/Locale/hedgewars_ko.ts -TRANSLATIONS += ../share/hedgewars/Data/Locale/hedgewars_lt.ts -TRANSLATIONS += ../share/hedgewars/Data/Locale/hedgewars_nl.ts -TRANSLATIONS += ../share/hedgewars/Data/Locale/hedgewars_pl.ts -TRANSLATIONS += ../share/hedgewars/Data/Locale/hedgewars_pt_BR.ts -TRANSLATIONS += ../share/hedgewars/Data/Locale/hedgewars_pt_PT.ts -TRANSLATIONS += ../share/hedgewars/Data/Locale/hedgewars_ru.ts -TRANSLATIONS += ../share/hedgewars/Data/Locale/hedgewars_sk.ts -TRANSLATIONS += ../share/hedgewars/Data/Locale/hedgewars_sv.ts -TRANSLATIONS += ../share/hedgewars/Data/Locale/hedgewars_tr_TR.ts -TRANSLATIONS += ../share/hedgewars/Data/Locale/hedgewars_uk.ts -TRANSLATIONS += ../share/hedgewars/Data/Locale/hedgewars_zh_CN.ts -TRANSLATIONS += ../share/hedgewars/Data/Locale/hedgewars_zh_TW.ts - -RESOURCES += ../QTfrontend/hedgewars.qrc - -LIBS += -L../bin -lquazip -lphysfs - -!macx { - LIBS += -lSDL -lSDL_mixer -} else { - QMAKE_MACOSX_DEPLOYMENT_TARGET = 10.6 - QMAKE_MAC_SDK=/Developer/SDKs/MacOSX10.6.sdk - - OBJECTIVE_SOURCES += ../QTfrontend/*.m ../QTfrontend/*.mm - SOURCES += ../QTfrontend/AutoUpdater.cpp ../QTfrontend/InstallController.cpp \ - ../../build/QTfrontend/hwconsts.cpp - HEADERS += ../QTfrontend/M3InstallController.h ../QTfrontend/M3Panel.h \ - ../QTfrontend/NSWorkspace_RBAdditions.h ../QTfrontend/AutoUpdater.h \ - ../QTfrontend/CocoaInitializer.h ../QTfrontend/InstallController.h \ - ../QTfrontend/SparkleAutoUpdater.h - - LIBS += -lobjc -framework AppKit -framework IOKit -framework Foundation -framework SDL -framework SDL_Mixer -framework Sparkle -DSPARKLE_ENABLED - INCLUDEPATH += /Library/Frameworks/SDL.framework/Headers /Library/Frameworks/SDL_Mixer.framework/Headers - CONFIG += warn_on x86 - #CONFIG += x86 ppc x86_64 ppc64 -} - -FORMS += +TEMPLATE = app +TARGET = hedgewars +DEPENDPATH += ../QTfrontend/ +INCLUDEPATH += ../QTfrontend/ +INCLUDEPATH += ../QTfrontend/model +INCLUDEPATH += ../QTfrontend/ui +INCLUDEPATH += ../QTfrontend/ui/widget +INCLUDEPATH += ../QTfrontend/ui/page +INCLUDEPATH += ../QTfrontend/ui/dialog +INCLUDEPATH += ../QTfrontend/net +INCLUDEPATH += ../QTfrontend/util +INCLUDEPATH += ../misc/quazip/ +INCLUDEPATH += ../misc/physfs/src/ + +DESTDIR = ../bin + +QT += network +QT += webkit + +HEADERS += ../QTfrontend/model/ThemeModel.h \ + ../QTfrontend/model/MapModel.h \ + ../QTfrontend/model/ammoSchemeModel.h \ + ../QTfrontend/model/netserverslist.h \ + ../QTfrontend/ui/page/pagedrawmap.h \ + ../QTfrontend/ui/page/pagedata.h \ + ../QTfrontend/ui/page/pagetraining.h \ + ../QTfrontend/ui/page/pageselectweapon.h \ + ../QTfrontend/ui/page/pagesingleplayer.h \ + ../QTfrontend/ui/page/pagenettype.h \ + ../QTfrontend/ui/page/pageingame.h \ + ../QTfrontend/ui/page/pageadmin.h \ + ../QTfrontend/ui/page/pagescheme.h \ + ../QTfrontend/ui/page/pagemultiplayer.h \ + ../QTfrontend/ui/page/pageplayrecord.h \ + ../QTfrontend/ui/page/pagemain.h \ + ../QTfrontend/ui/page/pageoptions.h \ + ../QTfrontend/ui/page/pagenetgame.h \ + ../QTfrontend/ui/page/pageeditteam.h \ + ../QTfrontend/ui/page/pageconnecting.h \ + ../QTfrontend/ui/page/pageroomslist.h \ + ../QTfrontend/ui/page/pagenet.h \ + ../QTfrontend/ui/page/pagecampaign.h \ + ../QTfrontend/ui/page/pageinfo.h \ + ../QTfrontend/ui/page/pagenetserver.h \ + ../QTfrontend/ui/page/pagegamestats.h \ + ../QTfrontend/ui/dialog/input_ip.h \ + ../QTfrontend/ui/qaspectratiolayout.h \ + ../QTfrontend/ui/widget/bgwidget.h \ + ../QTfrontend/ui/widget/fpsedit.h \ + ../QTfrontend/ui/widget/FreqSpinBox.h \ + ../QTfrontend/ui/widget/igbox.h \ + ../QTfrontend/ui/widget/chatwidget.h \ + ../QTfrontend/ui/widget/togglebutton.h \ + ../QTfrontend/ui/widget/SquareLabel.h \ + ../QTfrontend/ui/widget/itemNum.h \ + ../QTfrontend/ui/widget/frameTeam.h \ + ../QTfrontend/ui/widget/teamselect.h \ + ../QTfrontend/ui/widget/vertScrollArea.h \ + ../QTfrontend/ui/widget/about.h \ + ../QTfrontend/ui/widget/teamselhelper.h \ + ../QTfrontend/ui/widget/drawmapwidget.h \ + ../QTfrontend/ui/widget/databrowser.h \ + ../QTfrontend/ui/widget/hedgehogerWidget.h \ + ../QTfrontend/ui/widget/selectWeapon.h \ + ../QTfrontend/ui/widget/weaponItem.h \ + ../QTfrontend/ui/widget/gamecfgwidget.h \ + ../QTfrontend/ui/widget/mapContainer.h \ + ../QTfrontend/ui/widget/HistoryLineEdit.h \ + ../QTfrontend/ui/widget/SmartLineEdit.h \ + ../QTfrontend/util/DataManager.h \ + ../QTfrontend/net/netregister.h \ + ../QTfrontend/net/netserver.h \ + ../QTfrontend/net/netudpwidget.h \ + ../QTfrontend/net/tcpBase.h \ + ../QTfrontend/net/proto.h \ + ../QTfrontend/net/newnetclient.h \ + ../QTfrontend/net/netudpserver.h \ + ../QTfrontend/net/hwmap.h \ + ../QTfrontend/util/namegen.h \ + ../QTfrontend/ui/page/AbstractPage.h \ + ../QTfrontend/drawmapscene.h \ + ../QTfrontend/game.h \ + ../QTfrontend/gameuiconfig.h \ + ../QTfrontend/HWApplication.h \ + ../QTfrontend/hwform.h \ + ../QTfrontend/util/SDLInteraction.h \ + ../QTfrontend/team.h \ + ../QTfrontend/achievements.h \ + ../QTfrontend/binds.h \ + ../QTfrontend/ui_hwform.h \ + ../QTfrontend/KB.h \ + ../QTfrontend/hwconsts.h \ + ../QTfrontend/sdlkeys.h \ + ../QTfrontend/ui/mouseoverfilter.h \ + ../QTfrontend/ui/qpushbuttonwithsound.h \ + ../QTfrontend/ui/widget/qpushbuttonwithsound.h \ + ../QTfrontend/ui/page/pagefeedback.h \ + ../QTfrontend/model/roomslistmodel.h \ + ../QTfrontend/ui/dialog/input_password.h \ + ../QTfrontend/ui/widget/colorwidget.h \ + ../QTfrontend/model/HatModel.h \ + ../QTfrontend/model/GameStyleModel.h \ + ../QTfrontend/ui/page/pagevideos.h \ + ../QTfrontend/net/recorder.h \ + ../QTfrontend/ui/dialog/ask_quit.h \ + ../QTfrontend/ui/dialog/upload_video.h \ + ../QTfrontend/campaign.h \ + ../QTfrontend/model/playerslistmodel.h \ + ../QTfrontend/util/LibavInteraction.h \ + ../QTfrontend/util/FileEngine.h + +SOURCES += ../QTfrontend/model/ammoSchemeModel.cpp \ + ../QTfrontend/model/MapModel.cpp \ + ../QTfrontend/model/ThemeModel.cpp \ + ../QTfrontend/model/netserverslist.cpp \ + ../QTfrontend/ui/qaspectratiolayout.cpp \ + ../QTfrontend/ui/page/pagemain.cpp \ + ../QTfrontend/ui/page/pagetraining.cpp \ + ../QTfrontend/ui/page/pageroomslist.cpp \ + ../QTfrontend/ui/page/pagemultiplayer.cpp \ + ../QTfrontend/ui/page/pagegamestats.cpp \ + ../QTfrontend/ui/page/pagenettype.cpp \ + ../QTfrontend/ui/page/pageeditteam.cpp \ + ../QTfrontend/ui/page/pagenetgame.cpp \ + ../QTfrontend/ui/page/pagedata.cpp \ + ../QTfrontend/ui/page/pagedrawmap.cpp \ + ../QTfrontend/ui/page/pageplayrecord.cpp \ + ../QTfrontend/ui/page/pageselectweapon.cpp \ + ../QTfrontend/ui/page/pageingame.cpp \ + ../QTfrontend/ui/page/pagenetserver.cpp \ + ../QTfrontend/ui/page/pagecampaign.cpp \ + ../QTfrontend/ui/page/pageadmin.cpp \ + ../QTfrontend/ui/page/pageinfo.cpp \ + ../QTfrontend/ui/page/pageconnecting.cpp \ + ../QTfrontend/ui/page/pagesingleplayer.cpp \ + ../QTfrontend/ui/page/pagenet.cpp \ + ../QTfrontend/ui/page/pagescheme.cpp \ + ../QTfrontend/ui/page/pageoptions.cpp \ + ../QTfrontend/ui/dialog/input_ip.cpp \ + ../QTfrontend/ui/widget/igbox.cpp \ + ../QTfrontend/ui/widget/selectWeapon.cpp \ + ../QTfrontend/ui/widget/FreqSpinBox.cpp \ + ../QTfrontend/ui/widget/SquareLabel.cpp \ + ../QTfrontend/ui/widget/frameTeam.cpp \ + ../QTfrontend/ui/widget/fpsedit.cpp \ + ../QTfrontend/ui/widget/databrowser.cpp \ + ../QTfrontend/ui/widget/teamselect.cpp \ + ../QTfrontend/ui/widget/gamecfgwidget.cpp \ + ../QTfrontend/ui/widget/chatwidget.cpp \ + ../QTfrontend/ui/widget/itemNum.cpp \ + ../QTfrontend/ui/widget/bgwidget.cpp \ + ../QTfrontend/ui/widget/about.cpp \ + ../QTfrontend/ui/widget/togglebutton.cpp \ + ../QTfrontend/ui/widget/vertScrollArea.cpp \ + ../QTfrontend/ui/widget/hedgehogerWidget.cpp \ + ../QTfrontend/ui/widget/teamselhelper.cpp \ + ../QTfrontend/ui/widget/drawmapwidget.cpp \ + ../QTfrontend/ui/widget/weaponItem.cpp \ + ../QTfrontend/ui/widget/mapContainer.cpp \ + ../QTfrontend/ui/widget/HistoryLineEdit.cpp \ + ../QTfrontend/ui/widget/SmartLineEdit.cpp \ + ../QTfrontend/util/DataManager.cpp \ + ../QTfrontend/net/tcpBase.cpp \ + ../QTfrontend/net/netregister.cpp \ + ../QTfrontend/net/proto.cpp \ + ../QTfrontend/net/hwmap.cpp \ + ../QTfrontend/net/netudpserver.cpp \ + ../QTfrontend/net/newnetclient.cpp \ + ../QTfrontend/net/netudpwidget.cpp \ + ../QTfrontend/net/netserver.cpp \ + ../QTfrontend/util/namegen.cpp \ + ../QTfrontend/ui/page/AbstractPage.cpp \ + ../QTfrontend/achievements.cpp \ + ../QTfrontend/binds.cpp \ + ../QTfrontend/drawmapscene.cpp \ + ../QTfrontend/game.cpp \ + ../QTfrontend/gameuiconfig.cpp \ + ../QTfrontend/HWApplication.cpp \ + ../QTfrontend/hwform.cpp \ + ../QTfrontend/main.cpp \ + ../QTfrontend/util/SDLInteraction.cpp \ + ../QTfrontend/team.cpp \ + ../QTfrontend/ui_hwform.cpp \ + ../QTfrontend/hwconsts.cpp \ + ../QTfrontend/ui/mouseoverfilter.cpp \ + ../QTfrontend/ui/widget/qpushbuttonwithsound.cpp \ + ../QTfrontend/ui/page/pagefeedback.cpp \ + ../QTfrontend/model/roomslistmodel.cpp \ + ../QTfrontend/ui/dialog/input_password.cpp \ + ../QTfrontend/ui/widget/colorwidget.cpp \ + ../QTfrontend/model/HatModel.cpp \ + ../QTfrontend/model/GameStyleModel.cpp \ + ../QTfrontend/ui/page/pagevideos.cpp \ + ../QTfrontend/net/recorder.cpp \ + ../QTfrontend/ui/dialog/ask_quit.cpp \ + ../QTfrontend/ui/dialog/upload_video.cpp \ + ../QTfrontend/campaign.cpp \ + ../QTfrontend/model/playerslistmodel.cpp \ + ../QTfrontend/util/LibavInteraction.cpp \ + ../QTfrontend/util/FileEngine.cpp + + +TRANSLATIONS += ../share/hedgewars/Data/Locale/hedgewars_ar.ts \ + ../share/hedgewars/Data/Locale/hedgewars_bg.ts \ + ../share/hedgewars/Data/Locale/hedgewars_cs.ts \ + ../share/hedgewars/Data/Locale/hedgewars_de.ts \ + ../share/hedgewars/Data/Locale/hedgewars_en.ts \ + ../share/hedgewars/Data/Locale/hedgewars_es.ts \ + ../share/hedgewars/Data/Locale/hedgewars_fi.ts \ + ../share/hedgewars/Data/Locale/hedgewars_fr.ts \ + ../share/hedgewars/Data/Locale/hedgewars_hu.ts \ + ../share/hedgewars/Data/Locale/hedgewars_it.ts \ + ../share/hedgewars/Data/Locale/hedgewars_ja.ts \ + ../share/hedgewars/Data/Locale/hedgewars_ko.ts \ + ../share/hedgewars/Data/Locale/hedgewars_lt.ts \ + ../share/hedgewars/Data/Locale/hedgewars_nl.ts \ + ../share/hedgewars/Data/Locale/hedgewars_pl.ts \ + ../share/hedgewars/Data/Locale/hedgewars_pt_BR.ts \ + ../share/hedgewars/Data/Locale/hedgewars_pt_PT.ts \ + ../share/hedgewars/Data/Locale/hedgewars_ru.ts \ + ../share/hedgewars/Data/Locale/hedgewars_sk.ts \ + ../share/hedgewars/Data/Locale/hedgewars_sv.ts \ + ../share/hedgewars/Data/Locale/hedgewars_tr_TR.ts \ + ../share/hedgewars/Data/Locale/hedgewars_uk.ts \ + ../share/hedgewars/Data/Locale/hedgewars_zh_CN.ts \ + ../share/hedgewars/Data/Locale/hedgewars_zh_TW.ts + +RESOURCES += ../QTfrontend/hedgewars.qrc + +LIBS += -L../bin -lquazip -lphysfs + +macx { + QMAKE_MACOSX_DEPLOYMENT_TARGET = 10.6 + QMAKE_MAC_SDK=/Developer/SDKs/MacOSX10.6.sdk + + OBJECTIVE_SOURCES += ../QTfrontend/*.m ../QTfrontend/*.mm + SOURCES += ../QTfrontend/AutoUpdater.cpp ../QTfrontend/InstallController.cpp \ + ../../build/QTfrontend/hwconsts.cpp + HEADERS += ../QTfrontend/M3InstallController.h ../QTfrontend/M3Panel.h \ + ../QTfrontend/NSWorkspace_RBAdditions.h ../QTfrontend/AutoUpdater.h \ + ../QTfrontend/CocoaInitializer.h ../QTfrontend/InstallController.h \ + ../QTfrontend/SparkleAutoUpdater.h + + LIBS += -lobjc -framework AppKit -framework IOKit -framework Foundation -framework SDL -framework SDL_Mixer -framework Sparkle -DSPARKLE_ENABLED + INCLUDEPATH += /Library/Frameworks/SDL.framework/Headers /Library/Frameworks/SDL_Mixer.framework/Headers + CONFIG += warn_on x86 + #CONFIG += x86 ppc x86_64 ppc64 +} + +win32 { + RC_FILE = ../QTfrontend/hedgewars.rc + SOURCES += ../QTfrontend/xfire.cpp + INCLUDEPATH += ../misc/winutils/include + LIBS += -L../misc/winutils/lib +} + +!macx { + LIBS += -lSDL -lSDL_mixer + !win32 { + INCLUDEPATH += /usr/local/include/SDL /usr/include/SDL + } +} + +FORMS += diff -r 3331b30e4ef1 -r 88fde28bbda6 share/Info.plist.in --- a/share/Info.plist.in Sun Oct 21 01:28:33 2012 +0400 +++ b/share/Info.plist.in Sat Nov 03 00:34:35 2012 +0400 @@ -23,7 +23,7 @@ CFBundleShortVersionString ${HEDGEWARS_VERSION} NSHumanReadableCopyright - Copyright © 2004-2011, Hedgewars Project + Copyright © 2004-2012, Hedgewars Project NSAppleScriptEnabled LSRequiresNativeExecution @@ -52,6 +52,7 @@ ar bg cs + da de el en @@ -63,14 +64,16 @@ it ja ko + lt nl pl pt_BR pt_PT + ro ru sk sv - tr + tr_TR uk zh_CN zh_TW diff -r 3331b30e4ef1 -r 88fde28bbda6 share/hedgewars/Data/Graphics/AmmoMenu/Ammos.png Binary file share/hedgewars/Data/Graphics/AmmoMenu/Ammos.png has changed diff -r 3331b30e4ef1 -r 88fde28bbda6 share/hedgewars/Data/Graphics/AmmoMenu/Ammos_bw.png Binary file share/hedgewars/Data/Graphics/AmmoMenu/Ammos_bw.png has changed diff -r 3331b30e4ef1 -r 88fde28bbda6 share/hedgewars/Data/Graphics/Flags/cm_soviet.png Binary file share/hedgewars/Data/Graphics/Flags/cm_soviet.png has changed diff -r 3331b30e4ef1 -r 88fde28bbda6 share/hedgewars/Data/Graphics/Hedgehog.png Binary file share/hedgewars/Data/Graphics/Hedgehog.png has changed diff -r 3331b30e4ef1 -r 88fde28bbda6 share/hedgewars/Data/Graphics/Hedgehog/amCleaver.png Binary file share/hedgewars/Data/Graphics/Hedgehog/amCleaver.png has changed diff -r 3331b30e4ef1 -r 88fde28bbda6 share/hedgewars/Data/Graphics/Missions/Training/portal@2x.png Binary file share/hedgewars/Data/Graphics/Missions/Training/portal@2x.png has changed diff -r 3331b30e4ef1 -r 88fde28bbda6 share/hedgewars/Data/Graphics/cleaver.png Binary file share/hedgewars/Data/Graphics/cleaver.png has changed diff -r 3331b30e4ef1 -r 88fde28bbda6 share/hedgewars/Data/Locale/cs.lua --- a/share/hedgewars/Data/Locale/cs.lua Sun Oct 21 01:28:33 2012 +0400 +++ b/share/hedgewars/Data/Locale/cs.lua Sat Nov 03 00:34:35 2012 +0400 @@ -2,156 +2,640 @@ [":("] = ":(", ["!!!"] = "!!!", ["..."] = "...", +-- ["011101000"] = "", -- A_Classic_Fairytale:dragon +-- ["011101001"] = "", -- A_Classic_Fairytale:backstab, A_Classic_Fairytale:dragon, A_Classic_Fairytale:enemy, A_Classic_Fairytale:family, A_Classic_Fairytale:journey, A_Classic_Fairytale:queen, A_Classic_Fairytale:shadow, A_Classic_Fairytale:united +-- ["30 minutes later..."] = "", -- A_Classic_Fairytale:shadow +-- ["About a month ago, a cyborg came and told us that you're the cannibals!"] = "", -- A_Classic_Fairytale:enemy ["Accuracy Bonus!"] = "Bonus za pÅ™esnost!", +-- ["Ace"] = "", -- User_Mission_-_RCPlane_Challenge, User_Mission_-_Rope_Knock_Challenge -- ["Achievement Unlocked"] = "", -- User_Mission_-_Bamboo_Thicket, User_Mission_-_That_Sinking_Feeling, Tumbler +-- ["A Classic Fairytale"] = "", -- A_Classic_Fairytale:first_blood +-- ["???"] = "", -- A_Classic_Fairytale:backstab +-- ["Actually, you aren't worthy of life! Take this..."] = "", -- A_Classic_Fairytale:shadow +-- ["A cy-what?"] = "", -- A_Classic_Fairytale:enemy +-- ["Adventurous"] = "", -- A_Classic_Fairytale:journey +-- ["Africa"] = "", -- Continental_supplies +-- ["After Leaks A Lot betrayed his tribe, he joined the cannibals..."] = "", -- A_Classic_Fairytale:first_blood +-- ["After the shock caused by the enemy spy, Leaks A Lot and Dense Cloud went hunting to relax."] = "", -- A_Classic_Fairytale:shadow +-- ["Again with the 'cannibals' thing!"] = "", -- A_Classic_Fairytale:enemy +-- ["a Hedgewars challenge"] = "", -- User_Mission_-_RCPlane_Challenge, User_Mission_-_Rope_Knock_Challenge ["a Hedgewars mini-game"] = "Hedgewars mini-hra", -- Space_Invasion, The_Specialists ["Aiming Practice"] = "Trénink pÅ™esnosti", --Bazooka, Shotgun, SniperRifle +-- ["A leap in a leap"] = "", -- A_Classic_Fairytale:first_blood +-- ["A little gift from the cyborgs"] = "", -- A_Classic_Fairytale:shadow +-- ["All gone...everything!"] = "", -- A_Classic_Fairytale:enemy +-- ["All right, we just need to get to the other side of the island!"] = "", -- A_Classic_Fairytale:journey +-- ["All walls touched!"] = "", -- WxW ["Ammo Depleted!"] = "Munice vyÄerpána!", -- ["ammo extended!"] = "", -- ["Ammo is reset at the end of your turn."] = "", ["Ammo Maniac!"] = "MuniÄní maniak!", ["Ammo"] = "Munice", +-- ["And how am I alive?!"] = "", -- A_Classic_Fairytale:enemy +-- ["And so happenned that Leaks A Lot failed to complete the challenge! He landed, pressured by shame..."] = "", -- A_Classic_Fairytale:first_blood +-- ["And so it began..."] = "", -- A_Classic_Fairytale:first_blood +-- ["...and so the cyborgs took over the world..."] = "", -- A_Classic_Fairytale:shadow +-- ["And so they discovered that cyborgs weren't invulnerable..."] = "", -- A_Classic_Fairytale:journey +-- ["And where's all the weed?"] = "", -- A_Classic_Fairytale:dragon +-- ["And you believed me? Oh, god, that's cute!"] = "", -- A_Classic_Fairytale:journey +-- ["Anno 1032: [The explosion will make a strong push ~ wide range, wont affect hogs close to the target]"] = "", -- Continental_supplies +-- ["Antarctica"] = "", -- Continental_supplies +-- ["Are we there yet?"] = "", -- A_Classic_Fairytale:shadow +-- ["Are you accusing me of something?"] = "", -- A_Classic_Fairytale:backstab +-- ["Are you saying that many of us have died for your entertainment?"] = "", -- A_Classic_Fairytale:enemy +-- ["Artur Detour"] = "", -- A_Classic_Fairytale:queen +-- ["As a reward for your performance, here's some new technology!"] = "", -- A_Classic_Fairytale:dragon +-- ["a shoppa minigame"] = "", -- WxW +-- ["Asia"] = "", -- Continental_supplies +-- ["Assault Team"] = "", -- A_Classic_Fairytale:backstab +-- ["As the ammo is sparse, you might want to reuse ropes while mid-air.|"] = "", -- A_Classic_Fairytale:dragon +-- ["As the challenge was completed, Leaks A Lot set foot on the ground..."] = "", -- A_Classic_Fairytale:first_blood +-- ["As you can see, there is no way to get on the other side!"] = "", -- A_Classic_Fairytale:dragon +-- ["Attack From Rope"] = "", -- WxW +-- ["Australia"] = "", -- Continental_supplies ["Available points remaining: "] = "Zbývá bodů:", +-- ["Back Breaker"] = "", -- A_Classic_Fairytale:backstab +-- ["Back in the village, after telling the villagers about the threat..."] = "", -- A_Classic_Fairytale:united -- ["[Backspace]"] = "", +-- ["Backstab"] = "", -- A_Classic_Fairytale:backstab +-- ["Bad Team"] = "", -- User_Mission_-_The_Great_Escape -- ["Bamboo Thicket"] = "", -- ["Barrel Eater!"] = "", -- ["Barrel Launcher"] = "", +-- ["Baseballbat"] = "", -- Continental_supplies ["Bat balls at your enemies and|push them into the sea!"] = "Odpal míÄky na své nepřátele|a odstrÄ je do vody!", ["Bat your opponents through the|baskets and out of the map!"] = "Odpal protivníky skrz|koÅ¡e a pryÄ z mapy!", ["Bazooka Training"] = "Trénink s bazukou", +-- ["Beep Loopers"] = "", -- A_Classic_Fairytale:queen ["Best laps per team: "] = "Nejlepší kola dle týmů:", ["Best Team Times: "] = "Nejlepší týmový Äas:", +-- ["Beware, though! If you are slow, you die!"] = "", -- A_Classic_Fairytale:dragon +-- ["Biomechanic Team"] = "", -- A_Classic_Fairytale:family +-- ["Blender"] = "", -- A_Classic_Fairytale:family +-- ["Bloodpie"] = "", -- A_Classic_Fairytale:backstab +-- ["Bloodrocutor"] = "", -- A_Classic_Fairytale:shadow +-- ["Bloodsucker"] = "", -- A_Classic_Fairytale:shadow ["Bloody Rookies"] = "Zatravení zelenáÄi", -- 01#Boot_Camp, User_Mission_-_Dangerous_Ducklings, User_Mission_-_Diver, User_Mission_-_Spooky_Tree +-- ["Bone Jackson"] = "", -- A_Classic_Fairytale:backstab +-- ["Bonely"] = "", -- A_Classic_Fairytale:shadow ["Boom!"] = "Bum!", ["BOOM!"] = "BUM!", ["Boss defeated!"] = "Velitel poražen!", ["Boss Slayer!"] = "Velitel zabit!", +-- ["Brain Blower"] = "", -- A_Classic_Fairytale:journey +-- ["Brainiac"] = "", -- A_Classic_Fairytale:epil, A_Classic_Fairytale:first_blood, A_Classic_Fairytale:shadow +-- ["Brainila"] = "", -- A_Classic_Fairytale:united +-- ["Brain Stu"] = "", -- A_Classic_Fairytale:united +-- ["Brain Teaser"] = "", -- A_Classic_Fairytale:backstab +-- ["Brutal Lily"] = "", -- A_Classic_Fairytale:enemy, A_Classic_Fairytale:epil +-- ["Brutus"] = "", -- A_Classic_Fairytale:backstab -- ["Build a track and race."] = "", +-- ["Bullseye"] = "", -- A_Classic_Fairytale:dragon +-- ["But it proved to be no easy task!"] = "", -- A_Classic_Fairytale:dragon +-- ["But that's impossible!"] = "", -- A_Classic_Fairytale:backstab +-- ["But the ones alive are stronger in their heart!"] = "", -- A_Classic_Fairytale:enemy +-- ["But...we died!"] = "", -- A_Classic_Fairytale:backstab +-- ["But where can we go?"] = "", -- A_Classic_Fairytale:united +-- ["But why would they help us?"] = "", -- A_Classic_Fairytale:backstab +-- ["But you're cannibals. It's what you do."] = "", -- A_Classic_Fairytale:enemy +-- ["But you said you'd let her go!"] = "", -- A_Classic_Fairytale:journey +-- ["Call me Beep! Well, 'cause I'm such a nice...person!"] = "", -- A_Classic_Fairytale:family +-- ["Cannibals"] = "", -- A_Classic_Fairytale:enemy, A_Classic_Fairytale:epil, A_Classic_Fairytale:first_blood +-- ["Cannibal Sentry"] = "", -- A_Classic_Fairytale:journey +-- ["Cannibals?! You're the cannibals!"] = "", -- A_Classic_Fairytale:enemy ["CAPTURE THE FLAG"] = "ZAJMI VLAJKU", ["Careless"] = "Neopatrný", +-- ["Carol"] = "", -- A_Classic_Fairytale:family +-- ["CHALLENGE COMPLETE"] = "", -- User_Mission_-_RCPlane_Challenge -- ["Change Weapon"] = "", +-- ["Choose your side! If you want to join the strange man, walk up to him.|Otherwise, walk away from him. If you decide to att...nevermind..."] = "", -- A_Classic_Fairytale:shadow ["Clumsy"] = "NeÅ¡ikovný", +-- ["Cluster Bomb MASTER!"] = "", -- Basic_Training_-_Cluster_Bomb +-- ["Cluster Bomb Training"] = "", -- Basic_Training_-_Cluster_Bomb ["Codename: Teamwork"] = "Krycí jméno: Týmová práce", +-- ["Collateral Damage"] = "", -- A_Classic_Fairytale:journey +-- ["Collateral Damage II"] = "", -- A_Classic_Fairytale:journey +-- ["Collect all the crates, but remember, our time in this life is limited!"] = "", -- A_Classic_Fairytale:first_blood +-- ["Collect or destroy all the health crates."] = "", -- User_Mission_-_RCPlane_Challenge +-- ["Collect the crate on the right.|Hint: Select the rope, [Up] or [Down] to aim, [Space] to fire, directional keys to move.|Ropes can be fired again in the air!"] = "", -- A_Classic_Fairytale:first_blood +-- ["Collect the crates within the time limit!|If you fail, you'll have to try again."] = "", -- A_Classic_Fairytale:first_blood +-- ["Come closer, so that your training may continue!"] = "", -- A_Classic_Fairytale:first_blood +-- ["Compete to use as few planes as possible!"] = "", -- User_Mission_-_RCPlane_Challenge ["Complete the track as fast as you can!"] = "DokonÄi trasu tak rychle, jak můžeÅ¡!", +-- ["COMPLETION TIME"] = "", -- User_Mission_-_Rope_Knock_Challenge +-- ["Configuration accepted."] = "", -- WxW +-- ["Congratulations"] = "", -- Basic_Training_-_Rope ["Congratulations!"] = "Gratuluji!", +-- ["Congratulations! You needed only half of time|to eliminate all targets."] = "", -- Basic_Training_-_Cluster_Bomb +-- ["Congratulations! You've completed the Rope tutorial! |- Tutorial ends in 10 seconds!"] = "", -- Basic_Training_-_Rope ["Congratulations! You've eliminated all targets|within the allowed time frame."] = "Gratuluji! Eliminoval jsi vÅ¡echny cíle|bÄ›hem stanoveného limitu", --Bazooka, Shotgun, SniperRifle +-- ["Continental supplies"] = "", -- Continental_supplies ["Control pillars to score points."] = "ObsaÄ vÅ¡echny sloupy, abys dostal body.", +-- ["Corporationals"] = "", -- A_Classic_Fairytale:queen +-- ["Corpsemonger"] = "", -- A_Classic_Fairytale:shadow +-- ["Corpse Thrower"] = "", -- A_Classic_Fairytale:epil +-- ["Crates Left:"] = "", -- User_Mission_-_RCPlane_Challenge ["Cybernetic Empire"] = "Kybernetická říše", +-- ["Cyborg. It's what the aliens call themselves."] = "", -- A_Classic_Fairytale:enemy +-- ["Dahmer"] = "", -- A_Classic_Fairytale:backstab ["DAMMIT, ROOKIE! GET OFF MY HEAD!"] = "ZATRACENÄš, ZELENÃÄŒI! VYPADNI Z MOJI HLAVY!", ["DAMMIT, ROOKIE!"] = "ZATRACENÄš, ZELENÃÄŒI!", ["Dangerous Ducklings"] = "NebezpeÄná káÄátka", ["Deadweight"] = "Mrtvá váha", +-- ["Defeat the cannibals"] = "", -- A_Classic_Fairytale:backstab +-- ["Defeat the cannibals!|"] = "", -- A_Classic_Fairytale:united +-- ["Defeat the cannibals!|Grenade hint: set the timer with [1-5], aim with [Up]/[Down] and hold [Space] to set power"] = "", -- A_Classic_Fairytale:shadow +-- ["Defeat the cyborgs!"] = "", -- A_Classic_Fairytale:enemy +-- ["Defend yourself!|Hint: You can get tips on using weapons by moving your mouse over them in the weapon selection menu"] = "", -- A_Classic_Fairytale:shadow -- ["Demolition is fun!"] = "", +-- ["Dense Cloud"] = "", -- A_Classic_Fairytale:backstab, A_Classic_Fairytale:dragon, A_Classic_Fairytale:enemy, A_Classic_Fairytale:epil, A_Classic_Fairytale:family, A_Classic_Fairytale:journey, A_Classic_Fairytale:queen, A_Classic_Fairytale:shadow, A_Classic_Fairytale:united +-- ["Dense Cloud must have already told them everything..."] = "", -- A_Classic_Fairytale:shadow ["Depleted Kamikaze!"] = "VyÄerpaný sebevrah!", +-- ["Destroy him, Leaks A Lot! He is responsible for the deaths of many of us!"] = "", -- A_Classic_Fairytale:first_blood ["Destroy invaders to score points."] = "ZniÄ nájezdníky k získání bodů.", +-- ["Destroy the targets!|Hint: Select the Shoryuken and hit [Space]|P.S. You can use it mid-air."] = "", -- A_Classic_Fairytale:first_blood +-- ["Destroy the targets!|Hint: [Up], [Down] to aim, [Space] to shoot"] = "", -- A_Classic_Fairytale:first_blood +-- ["Did anyone follow you?"] = "", -- A_Classic_Fairytale:united +-- ["Did you see him coming?"] = "", -- A_Classic_Fairytale:shadow +-- ["Did you warn the village?"] = "", -- A_Classic_Fairytale:shadow +-- ["Die, die, die!"] = "", -- A_Classic_Fairytale:dragon +-- ["Disguise as a Rockhopper Penguin: [Swap place with a random enemy hog in the circle]"] = "", -- Continental_supplies +-- ["Dist: "] = "", -- Space_Invasion +-- ["Do not laugh, inexperienced one, for he speaks the truth!"] = "", -- A_Classic_Fairytale:backstab +-- ["Do not let his words fool you, young one! He will stab you in the back as soon as you turn away!"] = "", -- A_Classic_Fairytale:first_blood +-- ["Do the deed"] = "", -- A_Classic_Fairytale:first_blood -- ["Double Kill!"] = "", +-- ["DOUBLE KILL"] = "", -- Mutant +-- ["Do you have any idea how valuable grass is?"] = "", -- A_Classic_Fairytale:enemy +-- ["Do you think you're some kind of god?"] = "", -- A_Classic_Fairytale:enemy +-- ["Dragon's Lair"] = "", -- A_Classic_Fairytale:dragon +-- ["Drills"] = "", -- A_Classic_Fairytale:backstab ["Drone Hunter!"] = "Lovec trubců!", +-- ["Drop a bomb: [drop some heroic wind that will turn into a bomb on impact]"] = "", -- Continental_supplies ["Drowner"] = "Utopenec", +-- ["Dude, all the plants are gone!"] = "", -- A_Classic_Fairytale:family +-- ["Dude, can you see Ramon and Spiky?"] = "", -- A_Classic_Fairytale:journey +-- ["Dude, that's so cool!"] = "", -- A_Classic_Fairytale:backstab +-- ["Dude, we really need a new shaman..."] = "", -- A_Classic_Fairytale:shadow +-- ["Dude, what's this place?!"] = "", -- A_Classic_Fairytale:dragon +-- ["Dude, where are we?"] = "", -- A_Classic_Fairytale:backstab +-- ["Dude, wow! I just had the weirdest high!"] = "", -- A_Classic_Fairytale:backstab +-- ["Duration"] = "", -- Continental_supplies +-- ["Dust storm: [Deals 20 damage to all enemies in the circle]"] = "", -- Continental_supplies ["Each turn you get 1-3 random weapons"] = "Každý tah dostaneÅ¡ 1-3 náhodné zbranÄ›", ["Each turn you get one random weapon"] = "Každý tah dostaneÅ¡ jednu náhodnou zbraň", +-- ["Eagle Eye"] = "", -- A_Classic_Fairytale:backstab +-- ["Eagle Eye: [Blink to the impact ~ one shot]"] = "", -- Continental_supplies +-- ["Ear Sniffer"] = "", -- A_Classic_Fairytale:backstab, A_Classic_Fairytale:epil +-- ["Elderbot"] = "", -- A_Classic_Fairytale:family +-- ["Elimate your captor."] = "", -- User_Mission_-_The_Great_Escape ["Eliminate all enemies"] = "ZniÄ vÅ¡echny nepřátele", ["Eliminate all targets before your time runs out.|You have unlimited ammo for this mission."] = "ZniÄ vÅ¡echny cíle, než ti vyprší Äas.|Na tuto misi máš neomezenÄ› munice.", --Bazooka, Shotgun, SniperRifle +-- ["Eliminate enemy hogs and take their weapons."] = "", -- Highlander ["Eliminate Poison before the time runs out"] = "Odstraň Otravu, než vyprší Äas.", ["Eliminate the Blue Team"] = "ZniÄ modrý tým", -- ["Eliminate the enemy before the time runs out"] = "", -- User_Mission_-_Bamboo_Thicket, User_Mission_-_Newton_and_the_Hammock -- ["Eliminate the enemy hogs to win."] = "", ["Eliminate the enemy specialists."] = "Zabij nepřátelské specialisty", ["- Eliminate Unit 3378 |- Feeble Resistance must survive"] = "- ZniÄ Jednotku 3378 |- Slabý odpor musí pÅ™ežít", +-- ["Elmo"] = "", -- A_Classic_Fairytale:dragon, A_Classic_Fairytale:family, A_Classic_Fairytale:queen -- ["Energetic Engineer"] = "", ["Enjoy the swim..."] = "Užij si plavání...", ["[Enter]"] = "[Enter]", +-- ["Europe"] = "", -- Continental_supplies +-- [" ever done to you?!"] = "", -- A_Classic_Fairytale:backstab +-- ["Everyone knows this."] = "", -- A_Classic_Fairytale:enemy +-- ["Every single time!"] = "", -- A_Classic_Fairytale:dragon +-- ["Everything looks OK..."] = "", -- A_Classic_Fairytale:enemy +-- ["Exactly, man! That was my dream."] = "", -- A_Classic_Fairytale:backstab +-- ["Eye Chewer"] = "", -- A_Classic_Fairytale:journey +-- ["FAG"] = "", -- Mutant +-- ["Family Reunion"] = "", -- A_Classic_Fairytale:family ["Fastest lap: "] = "Nejrychlejší kolo: ", ["Feeble Resistance"] = "Slabý odpor", +-- ["Fell From Grace"] = "", -- A_Classic_Fairytale:backstab, A_Classic_Fairytale:dragon, A_Classic_Fairytale:enemy, A_Classic_Fairytale:epil, A_Classic_Fairytale:family, A_Classic_Fairytale:queen +-- ["Fell From Heaven"] = "", -- A_Classic_Fairytale:enemy, A_Classic_Fairytale:epil, A_Classic_Fairytale:family, A_Classic_Fairytale:first_blood, A_Classic_Fairytale:journey, A_Classic_Fairytale:queen +-- ["Fell From Heaven is the best! Fell From Heaven is the greatest!"] = "", -- A_Classic_Fairytale:family +-- ["Femur Lover"] = "", -- A_Classic_Fairytale:shadow +-- ["Fierce Competition!"] = "", -- Space_Invasion +-- ["Fiery Water"] = "", -- A_Classic_Fairytale:backstab, A_Classic_Fairytale:dragon, A_Classic_Fairytale:enemy, A_Classic_Fairytale:epil, A_Classic_Fairytale:family, A_Classic_Fairytale:queen, A_Classic_Fairytale:united +-- ["Find your tribe!|Cross the lake!"] = "", -- A_Classic_Fairytale:dragon +-- ["Finish your training|Hint: Animations can be skipped with the [Precise] key."] = "", -- A_Classic_Fairytale:first_blood +-- ["Fire a mine: [Does what it says ~ Cant be dropped close to an enemy ~ 1 sec]"] = "", -- Continental_supplies ["Fire"] = "Oheň", +-- ["First aid kits?!"] = "", -- A_Classic_Fairytale:united +-- ["First Blood"] = "", -- A_Classic_Fairytale:first_blood +-- ["FIRST BLOOD MUTATES"] = "", -- Mutant +-- ["First Steps"] = "", -- A_Classic_Fairytale:first_blood ["Flag captured!"] = "Vlajka zabrána!", ["Flag respawned!"] = "Vlajka obnovena!", ["Flag returned!"] = "Vlajka navrácena!", ["Flags, and their home base will be placed where each team ends their first turn."] = "Vlajky a domovské základny budou umístÄ›ny tam, kde každý tým skonÄí svůj první tah.", -- ["Flamer"] = "", +-- ["Flaming Worm"] = "", -- A_Classic_Fairytale:backstab +-- ["Flare: [fire up some bombs depending on hogs depending on hogs in the circle"] = "", -- Continental_supplies +-- ["Flesh for Brainz"] = "", -- A_Classic_Fairytale:journey +-- ["For improved features/stability, play 0.9.18+"] = "", -- WxW +-- ["Free Dense Cloud and continue the mission!"] = "", -- A_Classic_Fairytale:journey -- ["Friendly Fire!"] = "", -- ["fuel extended!"] = "", ["GAME BEGUN!!!"] = "HRA ZAÄŒALA!!!", ["Game Modifiers: "] = "Herní modifikátory: ", ["GAME OVER!"] = "KONEC HRY!", ["Game Started!"] = "Hra zaÄala!", +-- ["Game? Was this a game to you?!"] = "", -- A_Classic_Fairytale:enemy +-- ["GasBomb"] = "", -- Continental_supplies +-- ["Gas Gargler"] = "", -- A_Classic_Fairytale:queen +-- ["Get Dense Cloud out of the pit!"] = "", -- A_Classic_Fairytale:journey ["Get on over there and take him out!"] = "Běž tamhle a dostaň ho!", +-- ["Get on the head of the mole"] = "", -- A_Classic_Fairytale:first_blood +-- ["Get out of there!"] = "", -- User_Mission_-_The_Great_Escape +-- ["Get that crate!"] = "", -- A_Classic_Fairytale:first_blood +-- ["Get the crate on the other side of the island!|"] = "", -- A_Classic_Fairytale:journey +-- ["Get to the target using your rope! |Controls: Left & Right to swing the rope - Up & Down to Contract and Expand!"] = "", -- Basic_Training_-_Rope +-- ["Get your teammates out of their natural prison and save the princess!|Hint: Drilling holes should solve everything.|Hint: It might be a good idea to place a girder before starting to drill. Just saying.|Hint: All your hedgehogs need to be above the marked height!|Hint: Leaks A Lot needs to get really close to the princess!"] = "", -- A_Classic_Fairytale:family +-- ["GG!"] = "", -- User_Mission_-_Rope_Knock_Challenge +-- ["Gimme Bones"] = "", -- A_Classic_Fairytale:backstab +-- ["Glark"] = "", -- A_Classic_Fairytale:shadow ["Goal"] = "Cíl", ["GO! GO! GO!"] = "Běž! Běž! Běž!", ["Good birdy......"] = "Hodný ptáÄek......", +-- ["Good Dude"] = "", -- User_Mission_-_The_Great_Escape +-- ["Good idea, they'll never find us there!"] = "", -- A_Classic_Fairytale:united +-- ["Good luck...or else!"] = "", -- A_Classic_Fairytale:journey ["Good luck out there!"] = "HodnÄ› Å¡tÄ›stí tam venku!", -- ["Good so far!"] = "", -- ["Good to go!"] = "", +-- ["Go on top of the flower"] = "", -- A_Classic_Fairytale:first_blood +-- ["Go, quick!"] = "", -- A_Classic_Fairytale:backstab +-- ["Gorkij"] = "", -- A_Classic_Fairytale:journey +-- ["Go surf!"] = "", -- WxW ["GOTCHA!"] = "Mám tÄ›!", -- ["Grab Mines/Explosives"] = "", +-- ["Great choice, Steve! Mind if I call you that?"] = "", -- A_Classic_Fairytale:shadow +-- ["Great work! Now hit it with your Baseball Bat! |Tip: You can change weapon with 'Right Click'!"] = "", -- Basic_Training_-_Rope +-- ["Great! You will be contacted soon for assistance."] = "", -- A_Classic_Fairytale:shadow +-- ["Green lipstick bullet: [Is poisonous]"] = "", -- Continental_supplies +-- ["Greetings, "] = "", -- A_Classic_Fairytale:dragon +-- ["Greetings, cloudy one!"] = "", -- A_Classic_Fairytale:shadow +-- ["Grenade Training"] = "", -- Basic_Training_-_Grenade +-- ["Grenadiers"] = "", -- Basic_Training_-_Grenade +-- ["Guys, do you think there's more of them?"] = "", -- A_Classic_Fairytale:backstab +-- ["HAHA!"] = "", -- A_Classic_Fairytale:enemy +-- ["Haha!"] = "", -- A_Classic_Fairytale:united ["Hahahaha!"] = "Hahahaha!", ["Haha, now THAT would be something!"] = "Haha, tak TOHLE bude nÄ›co!", +-- ["Hannibal"] = "", -- A_Classic_Fairytale:epil [" Hapless Hogs left!"] = "NeÅ¡Å¥astný ježek odeÅ¡el!", ["Hapless Hogs"] = "NeÅ¡Å¥astný ježek", +-- [" HAS MUTATED\" )"] = "", -- +-- ["Hatless Jerry"] = "", -- A_Classic_Fairytale:queen +-- ["Have no illusions, your tribe is dead, indifferent of your choice."] = "", -- A_Classic_Fairytale:shadow +-- ["Have we ever attacked you first?"] = "", -- A_Classic_Fairytale:enemy -- ["Health crates extend your time."] = "", +-- ["Heavy Cannfantry"] = "", -- A_Classic_Fairytale:united ["Heavy"] = "Těžký", +-- ["Hedge-cogs"] = "", -- A_Classic_Fairytale:enemy +-- ["Hedgehog projectile: [fire your hog like a Sticky Bomb]"] = "", -- Continental_supplies ["Hedgewars-Basketball"] = "Hedgewars-Basketbal", ["Hedgewars-Knockball"] = "Hedgewars=Vybíjená", +-- ["Hedgibal Lecter"] = "", -- A_Classic_Fairytale:backstab ["Heh, it's not that bad."] = "Heh, to není tak Å¡patné.", +-- ["Hello again, "] = "", -- A_Classic_Fairytale:family +-- ["Help me, Leaks!"] = "", -- A_Classic_Fairytale:journey +-- ["Help me, please!!!"] = "", -- A_Classic_Fairytale:journey +-- ["Help me, please!"] = "", -- A_Classic_Fairytale:journey +-- ["He moves like an eagle in the sky."] = "", -- A_Classic_Fairytale:first_blood +-- ["He must be in the village already."] = "", -- A_Classic_Fairytale:journey +-- ["Here, let me help you!"] = "", -- A_Classic_Fairytale:backstab +-- ["Here, let me help you save her!"] = "", -- A_Classic_Fairytale:family +-- ["Here...pick your weapon!"] = "", -- A_Classic_Fairytale:first_blood +-- ["Hero Team"] = "", -- User_Mission_-_The_Great_Escape +-- ["He's so brave..."] = "", -- A_Classic_Fairytale:first_blood +-- ["He won't be selling us out anymore!"] = "", -- A_Classic_Fairytale:backstab +-- ["Hey, guys!"] = "", -- A_Classic_Fairytale:backstab +-- ["Hey guys!"] = "", -- A_Classic_Fairytale:united +-- ["Hey! This is cheating!"] = "", -- A_Classic_Fairytale:journey +-- ["HIGHLANDER"] = "", -- Highlander +-- ["Hightime"] = "", -- A_Classic_Fairytale:first_blood +-- ["Hint: Double Jump - Press [Backspace] twice"] = "", -- A_Classic_Fairytale:first_blood +-- ["Hint: Select the BlowTorch, aim and press [Fire]. Press [Fire] again to stop.|Don't blow up the crate."] = "", -- A_Classic_Fairytale:journey +-- ["Hint: Select the LowGravity and press [Fire]."] = "", -- A_Classic_Fairytale:journey +-- ["Hint: you might want to stay out of sight and take all the crates...|"] = "", -- A_Classic_Fairytale:journey +-- ["His arms are so strong!"] = "", -- A_Classic_Fairytale:first_blood ["Hit Combo!"] = "Opakovaný zásah!", +-- ["Hmmm...actually...I didn't either."] = "", -- A_Classic_Fairytale:enemy ["Hmmm..."] = "Hmmm...", +-- ["Hmmm, I'll have to find some way of moving him off this anti-portal surface..."] = "", -- portal +-- ["Hmmm...it's a draw. How unfortunate!"] = "", -- A_Classic_Fairytale:enemy +-- ["Hmmm...perhaps a little more time will help."] = "", -- A_Classic_Fairytale:first_blood +-- ["Hogminator"] = "", -- A_Classic_Fairytale:family +-- ["Hogs in sight!"] = "", -- Continental_supplies +-- ["HOLY SHIT!"] = "", -- Mutant +-- ["Honest Lee"] = "", -- A_Classic_Fairytale:enemy ["Hooray!"] = "Hurá!", +-- ["Hostage Situation"] = "", -- A_Classic_Fairytale:family +-- ["How can I ever repay you for saving my life?"] = "", -- A_Classic_Fairytale:journey +-- ["How come in a village full of warriors, it's up to me to save it?"] = "", -- A_Classic_Fairytale:dragon +-- ["How difficult would you like it to be?"] = "", -- A_Classic_Fairytale:first_blood +-- ["HOW DO THEY KNOW WHERE WE ARE???"] = "", -- A_Classic_Fairytale:united +-- ["However, if you fail to do so, she dies a most violent death, just like your friend! Muahahaha!"] = "", -- A_Classic_Fairytale:journey +-- ["However, if you fail to do so, she dies a most violent death! Muahahaha!"] = "", -- A_Classic_Fairytale:journey +-- ["However, my mates don't agree with me on letting you go..."] = "", -- A_Classic_Fairytale:dragon +-- [" HP"] = "", -- Mutant ["Hunter"] = "Lovec", --Bazooka, Shotgun, SniperRifle +-- ["I believe there's more of them."] = "", -- A_Classic_Fairytale:backstab +-- ["I can see you have been training diligently."] = "", -- A_Classic_Fairytale:first_blood +-- ["I can't believe it worked!"] = "", -- A_Classic_Fairytale:shadow +-- ["I can't believe this!"] = "", -- A_Classic_Fairytale:enemy +-- ["I can't believe what I'm hearing!"] = "", -- A_Classic_Fairytale:backstab +-- ["I can't wait any more, I have to save myself!"] = "", -- A_Classic_Fairytale:shadow +-- ["I could just teleport myself there..."] = "", -- A_Classic_Fairytale:family +-- ["I'd better get going myself."] = "", -- A_Classic_Fairytale:journey +-- ["I didn't until about a month ago."] = "", -- A_Classic_Fairytale:enemy +-- ["I don't know how you did that.. But good work! |The next one should be easy as cake for you!"] = "", -- Basic_Training_-_Rope +-- ["I feel something...a place! They will arrive near the circles!"] = "", -- A_Classic_Fairytale:backstab +-- ["If only I had a way..."] = "", -- A_Classic_Fairytale:backstab +-- ["If only I were given a chance to explain my being here..."] = "", -- A_Classic_Fairytale:first_blood +-- ["I forgot that she's the daughter of the chief, too..."] = "", -- A_Classic_Fairytale:backstab +-- ["If they try coming here, they can have a taste of my delicious knuckles!"] = "", -- A_Classic_Fairytale:united +-- ["If you agree to provide the information we need, you will be spared!"] = "", -- A_Classic_Fairytale:shadow +-- ["If you can get that crate fast enough, your beloved \"princess\" may go free."] = "", -- A_Classic_Fairytale:journey +-- ["If you decide to help us, though, we will no longer need to find a new governor for the island."] = "", -- A_Classic_Fairytale:shadow +-- ["If you get stuck, use your Desert Eagle or restart the mission!|"] = "", -- A_Classic_Fairytale:journey +-- ["If you know what I mean..."] = "", -- A_Classic_Fairytale:shadow +-- ["If you say so..."] = "", -- A_Classic_Fairytale:shadow +-- ["If you wish to restart the course, hold [Precise] while your turn ends (e.g with Skip)"] = "", -- +-- ["I guess you'll have to kill them."] = "", -- A_Classic_Fairytale:dragon +-- ["I have come to make you an offering..."] = "", -- A_Classic_Fairytale:shadow +-- ["I have no idea where that mole disappeared...Can you see it?"] = "", -- A_Classic_Fairytale:shadow +-- ["I have to follow that alien."] = "", -- A_Classic_Fairytale:backstab +-- ["I have to get back to the village!"] = "", -- A_Classic_Fairytale:shadow +-- ["I hope you are prepared for a small challenge, young one."] = "", -- A_Classic_Fairytale:first_blood +-- ["I just don't want to sink to your level."] = "", -- A_Classic_Fairytale:backstab +-- ["I just found out that they have captured your princess!"] = "", -- A_Classic_Fairytale:family +-- ["I just wonder where Ramon and Spiky disappeared..."] = "", -- A_Classic_Fairytale:journey +-- ["I'll hold them off while you return to the village!"] = "", -- A_Classic_Fairytale:shadow +-- ["Imagine those targets are the wolves that killed your parents! Take your anger out on them!"] = "", -- A_Classic_Fairytale:first_blood +-- ["I'm...alive? How? Why?"] = "", -- A_Classic_Fairytale:backstab +-- ["I'm a ninja."] = "", -- A_Classic_Fairytale:dragon +-- ["I marked the place of their arrival. You're welcome!"] = "", -- A_Classic_Fairytale:backstab +-- ["I'm certain that this is a misunderstanding, fellow hedgehogs!"] = "", -- A_Classic_Fairytale:first_blood +-- ["I mean, none of you ceased to live."] = "", -- A_Classic_Fairytale:enemy +-- ["I'm getting old for this!"] = "", -- A_Classic_Fairytale:family +-- ["I'm getting thirsty..."] = "", -- A_Classic_Fairytale:family +-- ["I'm here to help you rescue her."] = "", -- A_Classic_Fairytale:family +-- ["I'm not sure about that!"] = "", -- A_Classic_Fairytale:united +-- ["Impressive...you are still dry as the corpse of a hawk after a week in the desert..."] = "", -- A_Classic_Fairytale:first_blood +-- ["I'm so scared!"] = "", -- A_Classic_Fairytale:united +-- ["Incredible..."] = "", -- A_Classic_Fairytale:shadow +-- ["I need to find the others!"] = "", -- A_Classic_Fairytale:backstab +-- ["I need to get to the other side of this island, fast!"] = "", -- A_Classic_Fairytale:journey +-- ["I need to move the tribe!"] = "", -- A_Classic_Fairytale:united +-- ["I need to prevent their arrival!"] = "", -- A_Classic_Fairytale:backstab +-- ["I need to warn the others."] = "", -- A_Classic_Fairytale:backstab +-- ["In fact, you are the only one that's been acting strangely."] = "", -- A_Classic_Fairytale:backstab +-- ["In order to get to the other side, you need to collect the crates first.|"] = "", -- A_Classic_Fairytale:dragon ["Instructor"] = "Instruktor", -- 01#Boot_Camp, User_Mission_-_Dangerous_Ducklings +-- ["Interesting idea, haha!"] = "", -- A_Classic_Fairytale:enemy +-- ["Interesting! Last time you said you killed a cannibal!"] = "", -- A_Classic_Fairytale:backstab +-- ["In the meantime, take these and return to your \"friend\"!"] = "", -- A_Classic_Fairytale:shadow ["invaders destroyed"] = "nájezdník zniÄen", +-- ["Invasion"] = "", -- A_Classic_Fairytale:united +-- ["I saw it with my own eyes!"] = "", -- A_Classic_Fairytale:shadow +-- ["I see..."] = "", -- A_Classic_Fairytale:shadow +-- ["I see you have already taken the leap of faith."] = "", -- A_Classic_Fairytale:first_blood +-- ["I see you would like his punishment to be more...personal..."] = "", -- A_Classic_Fairytale:first_blood +-- ["I sense another wave of cannibals heading my way!"] = "", -- A_Classic_Fairytale:backstab +-- ["I sense another wave of cannibals heading our way!"] = "", -- A_Classic_Fairytale:backstab +-- ["I shouldn't have drunk that last pint."] = "", -- A_Classic_Fairytale:dragon +-- ["Is this place in my head?"] = "", -- A_Classic_Fairytale:dragon +-- ["It doesn't matter. I won't let that alien hurt my daughter!"] = "", -- A_Classic_Fairytale:dragon +-- ["I think we are safe here."] = "", -- A_Classic_Fairytale:backstab +-- ["I thought their shaman died when he tried our medicine!"] = "", -- A_Classic_Fairytale:shadow +-- ["It is called 'Hogs of Steel'."] = "", -- A_Classic_Fairytale:enemy +-- ["It is time to practice your fighting skills."] = "", -- A_Classic_Fairytale:first_blood +-- ["It must be a childhood trauma..."] = "", -- A_Classic_Fairytale:family +-- ["It must be the aliens!"] = "", -- A_Classic_Fairytale:backstab +-- ["It must be the aliens' deed."] = "", -- A_Classic_Fairytale:backstab +-- ["It must be the cyborgs again!"] = "", -- A_Classic_Fairytale:enemy +-- ["I told you, I just found them."] = "", -- A_Classic_Fairytale:backstab ["It's a good thing SUDDEN DEATH is 99 turns away..."] = "To je dobÅ™e, že NÃHLà SMRT je 99 tahů vzdálená...", +-- ["It's always up to women to clear up the mess men created!"] = "", -- A_Classic_Fairytale:dragon +-- ["It's a shame, I forgot how to do that!"] = "", -- A_Classic_Fairytale:family +-- ["It's impossible to communicate with the spirits without a shaman."] = "", -- A_Classic_Fairytale:shadow +-- ["It's over..."] = "", -- A_Classic_Fairytale:shadow +-- ["It's time you learned that your actions have consequences!"] = "", -- A_Classic_Fairytale:journey +-- ["It's worth more than wood!"] = "", -- A_Classic_Fairytale:enemy +-- ["It wants our brains!"] = "", -- A_Classic_Fairytale:shadow +-- ["It was not a dream, unwise one!"] = "", -- A_Classic_Fairytale:backstab +-- ["I've seen this before. They just appear out of thin air."] = "", -- A_Classic_Fairytale:united +-- ["I want to play a game..."] = "", -- A_Classic_Fairytale:journey +-- ["I want to see how it handles this!"] = "", -- A_Classic_Fairytale:backstab +-- ["I wish to help you, "] = "", -- A_Classic_Fairytale:dragon +-- ["I wonder where Dense Cloud is..."] = "", -- A_Classic_Fairytale:journey, A_Classic_Fairytale:shadow +-- ["I wonder why I'm so angry all the time..."] = "", -- A_Classic_Fairytale:family +-- ["I won't let you kill her!"] = "", -- A_Classic_Fairytale:journey +-- ["Jack"] = "", -- A_Classic_Fairytale:dragon, A_Classic_Fairytale:family, A_Classic_Fairytale:queen +-- ["Jeremiah"] = "", -- A_Classic_Fairytale:dragon +-- ["John"] = "", -- A_Classic_Fairytale:journey +-- ["Judas"] = "", -- A_Classic_Fairytale:backstab ["Jumping is disabled"] = "Skákání je vypnuto", +-- ["Just kidding, none of you have died!"] = "", -- A_Classic_Fairytale:enemy +-- ["Just on a walk."] = "", -- A_Classic_Fairytale:united +-- ["Just wait till I get my hands on that trauma! ARGH!"] = "", -- A_Classic_Fairytale:family ["Kamikaze Expert!"] = "Expert na sebevraždy!", -- ["Keep it up!"] = "", +-- ["Kerguelen"] = "", -- Continental_supplies -- ["Killing spree!"] = "", +-- ["KILL IT!"] = "", -- A_Classic_Fairytale:first_blood ["KILLS"] = "ÚLOVKY", +-- ["Kill the aliens!"] = "", -- A_Classic_Fairytale:dragon +-- ["Kill the cannibal!"] = "", -- A_Classic_Fairytale:first_blood +-- ["Kill the traitor...or spare his life!|Kill him or press [Precise]!"] = "", -- A_Classic_Fairytale:backstab -- ["Last Target!"] = "", +-- ["Leader"] = "", -- A_Classic_Fairytale:enemy +-- ["Leaderbot"] = "", -- A_Classic_Fairytale:queen +-- ["Leaks A Lot"] = "", -- A_Classic_Fairytale:backstab, A_Classic_Fairytale:dragon, A_Classic_Fairytale:enemy, A_Classic_Fairytale:epil, A_Classic_Fairytale:family, A_Classic_Fairytale:first_blood, A_Classic_Fairytale:journey, A_Classic_Fairytale:queen, A_Classic_Fairytale:shadow, A_Classic_Fairytale:united +-- ["Leaks A Lot, depressed for killing his loved one, failed to save the village..."] = "", -- A_Classic_Fairytale:journey +-- ["Leaks A Lot gave his life for his tribe! He should have survived!"] = "", -- A_Classic_Fairytale:first_blood +-- ["Leaks A Lot must survive!"] = "", -- A_Classic_Fairytale:journey +-- ["Led Heart"] = "", -- A_Classic_Fairytale:queen +-- ["Lee"] = "", -- A_Classic_Fairytale:dragon, A_Classic_Fairytale:family, A_Classic_Fairytale:queen ["[Left Shift]"] = "[Levý shift]", +-- ["Let a Continent provide your weapons!"] = "", -- Continental_supplies +-- ["Let me test your skills a little, will you?"] = "", -- A_Classic_Fairytale:journey +-- ["Let's go home!"] = "", -- A_Classic_Fairytale:journey +-- ["Let's head back to the village!"] = "", -- A_Classic_Fairytale:shadow +-- ["Let's see what your comrade does now!"] = "", -- A_Classic_Fairytale:journey +-- ["Let's show those cannibals what we're made of!"] = "", -- A_Classic_Fairytale:backstab +-- ["Let them have a taste of my fury!"] = "", -- A_Classic_Fairytale:backstab +-- ["Let us help, too!"] = "", -- A_Classic_Fairytale:backstab +-- ["Light Cannfantry"] = "", -- A_Classic_Fairytale:united ["Listen up, maggot!!"] = "Poslouchej, bídný Äerve!!", +-- ["Little did they know that this hunt will mark them forever..."] = "", -- A_Classic_Fairytale:shadow -- ["Lively Lifeguard"] = "", +-- ["Lonely Cries: [Rise the water if no hog is in the circle and deal 1 damage to all hogs]"] = "", -- Continental_supplies +-- ["Look, I had no choice!"] = "", -- A_Classic_Fairytale:backstab +-- ["Look out! There's more of them!"] = "", -- A_Classic_Fairytale:backstab +-- ["Look out! We're surrounded by cannibals!"] = "", -- A_Classic_Fairytale:enemy +-- ["Looks like the whole world is falling apart!"] = "", -- A_Classic_Fairytale:enemy +-- ["Luckily, I've managed to snatch some of them."] = "", -- A_Classic_Fairytale:united +-- ["LUDICROUS KILL"] = "", -- Mutant +-- ["May the spirits aid you in all your quests!"] = "", -- A_Classic_Fairytale:backstab +-- ["Medicine: [Fire some exploding medicine that will heal all hogs effected by the explosion]"] = "", -- Continental_supplies +-- ["MEGA KILL"] = "", -- Mutant +-- ["Meiwes"] = "", -- A_Classic_Fairytale:backstab +-- ["Mindy"] = "", -- A_Classic_Fairytale:united -- ["Mine Deployer"] = "", -- ["Mine Eater!"] = "", ["|- Mines Time:"] = "|- ÄŒasovaÄ min:", -- User_Mission_-_Diver, User_Mission_-_Spooky_Tree, User_Mission_-_Teamwork ["MISSION FAILED"] = "MISE NEÚSPĚŠNÃ", -- User_Mission_-_Dangerous_Ducklings, User_Mission_-_Diver, User_Mission_-_Spooky_Tree, User_Mission_-_Teamwork ["MISSION SUCCESSFUL"] = "MISE ÚSPĚŠNÃ", -- User_Mission_-_Diver, User_Mission_-_Spooky_Tree, User_Mission_-_Teamwork ["MISSION SUCCESS"] = "MISE ÚSPĚŠNÃ", +-- ["Molotov"] = "", -- Continental_supplies +-- ["MONSTER KILL"] = "", -- Mutant +-- ["More Natives"] = "", -- A_Classic_Fairytale:epil ["Movement: [Up], [Down], [Left], [Right]"] = "Pohyb: [nahoru], [dolu], [vlevo], [vpravo]", ["Multi-shot!"] = "Vícenásobná rána!", +-- ["Muriel"] = "", -- A_Classic_Fairytale:backstab, A_Classic_Fairytale:dragon, A_Classic_Fairytale:family, A_Classic_Fairytale:queen +-- ["Muscle Dissolver"] = "", -- A_Classic_Fairytale:shadow +-- ["-------"] = "", -- Mutant +-- ["Nade Boy"] = "", -- Basic_Training_-_Grenade +-- ["Name"] = "", -- A_Classic_Fairytale:queen ["Nameless Heroes"] = "Bezejmenní hrdinové", +-- ["Nancy Screw"] = "", -- A_Classic_Fairytale:enemy, A_Classic_Fairytale:queen +-- ["Napalm rocket: [Fire a bomb with napalm!]"] = "", -- Continental_supplies +-- ["Natives"] = "", -- A_Classic_Fairytale:backstab, A_Classic_Fairytale:dragon, A_Classic_Fairytale:enemy, A_Classic_Fairytale:epil, A_Classic_Fairytale:family, A_Classic_Fairytale:first_blood, A_Classic_Fairytale:journey, A_Classic_Fairytale:queen, A_Classic_Fairytale:shadow, A_Classic_Fairytale:united -- ["New Barrels Per Turn"] = "", ["NEW CLAN RECORD: "] = "NOVà KLANOVà REKORD: ", ["NEW fastest lap: "] = "NOVÉ nejrychlejší kolo: ", -- ["New Mines Per Turn"] = "", ["NEW RACE RECORD: "] = "NOVà TRAŤOVà REKORD: ", -- ["Newton's Hammock"] = "", +-- ["Nicely done, meatbags!"] = "", -- A_Classic_Fairytale:enemy +-- ["Nice work, "] = "", -- A_Classic_Fairytale:dragon +-- ["Nice work!"] = "", -- A_Classic_Fairytale:enemy +-- ["Nilarian"] = "", -- A_Classic_Fairytale:queen +-- ["No, I came back to help you out..."] = "", -- A_Classic_Fairytale:shadow +-- ["No...I wonder where they disappeared?!"] = "", -- A_Classic_Fairytale:journey +-- ["Nom-Nom"] = "", -- A_Classic_Fairytale:journey +-- ["NomNom"] = "", -- A_Classic_Fairytale:united +-- ["Nope. It was one fast mole, that's for sure."] = "", -- A_Classic_Fairytale:shadow +-- ["No! Please, help me!"] = "", -- A_Classic_Fairytale:journey +-- ["NORMAL"] = "", -- Continental_supplies +-- ["North America"] = "", -- Continental_supplies +-- ["Not all hogs are born equal."] = "", -- Highlander ["NOT ENOUGH WAYPOINTS"] = "NEDOSTATEK NAVIGAÄŒNÃCH BODÅ®", +-- ["Not now, Fiery Water!"] = "", -- A_Classic_Fairytale:backstab ["Not So Friendly Match"] = "Ne moc přátelský zápas", -- Basketball, Knockball +-- ["Not you again! My head still hurts from last time!"] = "", -- A_Classic_Fairytale:shadow +-- ["No, we made sure of that!"] = "", -- A_Classic_Fairytale:united +-- ["Now find the next target! |Tip: Normally you lose health by falling down, so be careful!"] = "", -- Basic_Training_-_Rope +-- ["No! What have I done?! What have YOU done?!"] = "", -- A_Classic_Fairytale:journey +-- ["No. Where did he come from?"] = "", -- A_Classic_Fairytale:shadow +-- ["Now how do I get on the other side?!"] = "", -- A_Classic_Fairytale:dragon +-- ["No. You and the rest of the tribe are safer there!"] = "", -- A_Classic_Fairytale:backstab +-- ["Obliterate them!|Hint: You might want to take cover..."] = "", -- A_Classic_Fairytale:shadow +-- ["Obstacle course"] = "", -- A_Classic_Fairytale:dragon +-- ["Of course I have to save her. What did I expect?!"] = "", -- A_Classic_Fairytale:family +-- ["OH, COME ON!"] = "", -- A_Classic_Fairytale:journey +-- ["Oh, my!"] = "", -- A_Classic_Fairytale:first_blood +-- ["Oh, my! This is even more entertaining than I've expected!"] = "", -- A_Classic_Fairytale:backstab ["Oh no! Just try again!"] = "Ale ne! ProstÄ› to zkus znovu!", -- User_Mission_-_Diver, User_Mission_-_Spooky_Tree, User_Mission_-_Teamwork +-- ["Oh no, not "] = "", -- A_Classic_Fairytale:backstab, A_Classic_Fairytale:united ["Oh no! Time's up! Just try again."] = "Ale ne! ÄŒas vyprÅ¡el! Zkus to znova!", --Bazooka, Shotgun, SniperRifle +-- ["Oh no! You failed! Just try again."] = "", -- Basic_Training_-_Cluster_Bomb +-- ["Oh, silly me! I forgot that I'm the shaman."] = "", -- A_Classic_Fairytale:backstab +-- ["Olive"] = "", -- A_Classic_Fairytale:united +-- ["Omnivore"] = "", -- A_Classic_Fairytale:first_blood +-- ["Once upon a time, on an island with great natural resources, lived two tribes in heated conflict..."] = "", -- A_Classic_Fairytale:first_blood +-- ["ONE HOG PER TEAM! KILLING EXCESS HEDGES"] = "", -- Mutant +-- ["One tribe was peaceful, spending their time hunting and training, enjoying the small pleasures of life..."] = "", -- A_Classic_Fairytale:first_blood +-- ["Oops...I dropped them."] = "", -- A_Classic_Fairytale:united +-- ["Open that crate and we will continue!"] = "", -- A_Classic_Fairytale:first_blood ["Operation Diver"] = "Operace potápÄ›Ä", ["Opposing Team: "] = "Protivníkův tým: ", +-- ["Orlando Boom!"] = "", -- A_Classic_Fairytale:queen +-- ["Ouch!"] = "", -- User_Mission_-_Rope_Knock_Challenge +-- ["Our tribe, our beautiful island!"] = "", -- A_Classic_Fairytale:enemy +-- ["Parachute"] = "", -- Continental_supplies ["Pathetic Hog #%d"] = "Žalostný ježek #%d", -- ["Pathetic Resistance"] = "", -- User_Mission_-_Bamboo_Thicket, User_Mission_-_Newton_and_the_Hammock +-- ["Perfect! Now try to get the next crate without hurting yourself!"] = "", -- A_Classic_Fairytale:first_blood ["Per-Hog Ammo"] = "Individuální munice", +-- ["- Per team weapons|- 9 weaponschemes|- Unique new weapons| |Select continent first round with the Weapon Menu or by ([switch/tab]=Increase,[presice/left shift]=Decrease)"] = "", -- +-- ["Pfew! That was close!"] = "", -- A_Classic_Fairytale:shadow +-- ["Piñata bullet: [Contains some sweet candy!]"] = "", -- Continental_supplies +-- ["Pings left:"] = "", -- Space_Invasion ["Place more waypoints using [ENTER]"] = "Umísti více navigaÄních bodů pomocí klávesy [enter]", -- ["Place more waypoints using the 'Air Attack' weapon."] = "", +-- ["Planes Used:"] = "", -- User_Mission_-_RCPlane_Challenge +-- ["Planes Used"] = "", -- User_Mission_-_RCPlane_Challenge +-- ["Play with me!"] = "", -- A_Classic_Fairytale:shadow +-- ["Please place the way-point further from the waterline."] = "", -- Racer +-- ["Please place the way-point in the open, within the map boundaries."] = "", -- Racer +-- ["Please, stop releasing your \"smoke signals\"!"] = "", -- A_Classic_Fairytale:shadow +-- ["Point Blank Combo!"] = "", -- Space_Invasion ["points"] = "body", -- Control, CTF_Blizzard, Basic_Training_-_Bazooka, Basic_Training_-_Shotgun, Basic_Training_-_Sniper_Rifle ["Poison"] = "Otrava", +-- ["Portal hint: one goes to the destination, and one is the entrance.|"] = "", -- A_Classic_Fairytale:dragon +-- ["Portal mission"] = "", -- portal ["Power Remaining"] = "Zbývající energie", -- ["Prepare yourself"] = "", +-- ["Press [Enter] to accept this configuration."] = "", -- WxW +-- ["Press [Left] or [Right] to move around, [Enter] to jump"] = "", -- A_Classic_Fairytale:first_blood ["Press [Precise] to skip intro"] = "Stiskni [pÅ™esnost] pro pÅ™eskoÄení", +-- ["Private Novak"] = "", -- Basic_Training_-_Cluster_Bomb +-- ["Protect yourselves!|Grenade hint: set the timer with [1-5], aim with [Up]/[Down] and hold [Space] to set power"] = "", -- A_Classic_Fairytale:shadow ["Race complexity limit reached."] = "Dosažen limit složitosti závodu.", -- ["RACER"] = "", +-- ["Rachel"] = "", -- A_Classic_Fairytale:dragon, A_Classic_Fairytale:family, A_Classic_Fairytale:queen +-- ["Radar Ping"] = "", -- Space_Invasion +-- ["Raging Buffalo"] = "", -- A_Classic_Fairytale:backstab, A_Classic_Fairytale:dragon, A_Classic_Fairytale:enemy, A_Classic_Fairytale:epil, A_Classic_Fairytale:family, A_Classic_Fairytale:queen, A_Classic_Fairytale:united +-- ["Ramon"] = "", -- A_Classic_Fairytale:enemy, A_Classic_Fairytale:epil, A_Classic_Fairytale:family, A_Classic_Fairytale:queen, A_Classic_Fairytale:shadow +-- ["RC PLANE TRAINING"] = "", -- User_Mission_-_RCPlane_Challenge +-- ["Really?! You thought you could harm me with your little toys?"] = "", -- A_Classic_Fairytale:shadow +-- ["Regurgitator"] = "", -- A_Classic_Fairytale:backstab +-- ["Reinforcements"] = "", -- A_Classic_Fairytale:backstab +-- ["Remember: The rope only bend around objects, |if it doesn't hit anything it's always stright!"] = "", -- Basic_Training_-_Rope +-- ["Remember this, pathetic animal: when the day comes, you will regret your blind loyalty!"] = "", -- A_Classic_Fairytale:shadow [" - 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"] = " - Dones nepřátelskou vlajku do své základny k získání bodů | - První tým se tÅ™emi ukoÅ™istÄ›ními vítÄ›zí | - MůžeÅ¡ bodovat, pokud je tvá vlajka v základnÄ› | - Ježci pustí vlajku, pokud jsou zabiti, nebo utopeni | - UpuÅ¡tÄ›ná vlajka může být navrácena, nebo opÄ›t zajmuta | - Ježci jsou po smrti oživeni", +-- ["Return to Leaks A Lot! If you get stuck, press [Precise] to try again!"] = "", -- A_Classic_Fairytale:shadow +-- ["Righteous Beard"] = "", -- A_Classic_Fairytale:backstab, A_Classic_Fairytale:dragon, A_Classic_Fairytale:enemy, A_Classic_Fairytale:epil, A_Classic_Fairytale:family, A_Classic_Fairytale:first_blood, A_Classic_Fairytale:queen, A_Classic_Fairytale:united +-- ["ROPE-KNOCKING"] = "", -- User_Mission_-_Rope_Knock_Challenge +-- ["Rope Training"] = "", -- Basic_Training_-_Rope +-- ["Rot Molester"] = "", -- A_Classic_Fairytale:shadow -- ["Round Limit:"] = "", ["Round Limit"] = "Limit kol", -- ["Rounds Complete: "] = "", ["Rounds Complete"] = "DokonÄených kol", ["RULES OF THE GAME [Press ESC to view]"] = "PRAVIDLA HRY [Stiskni ESC pro prohlédnutí]", +-- ["Rusty Joe"] = "", -- A_Classic_Fairytale:queen +-- ["Sabotage: [Sabotage all hogs in the circle and deal ~10 dmg]"] = "", -- Continental_supplies +-- ["Salivaslurper"] = "", -- A_Classic_Fairytale:united +-- ["Salvation"] = "", -- A_Classic_Fairytale:family +-- ["Salvation was one step closer now..."] = "", -- A_Classic_Fairytale:dragon ["Save as many hapless hogs as possible!"] = "Zachraň tolik neÅ¡Å¥astných ježků, kolik jen můžeÅ¡!", +-- ["Save Fell From Heaven!"] = "", -- A_Classic_Fairytale:journey +-- ["Save Leaks A Lot!|Hint: The Switch utility might be of help to you."] = "", -- A_Classic_Fairytale:shadow +-- ["Save the princess! All your hogs must survive!|Hint: Kill the cyborgs first! Use the ammo very carefully!|Hint: You might want to spare a girder for cover!"] = "", -- A_Classic_Fairytale:family +-- ["Save the princess by collecting the crate in under 12 turns!"] = "", -- A_Classic_Fairytale:journey +-- ["Scalp Muncher"] = "", -- A_Classic_Fairytale:backstab +-- ["Score"] = "", -- Mutant ["SCORE"] = "SKÓRE", +-- ["Scream from a Walrus: [Deal 20 damage + 10% of your hogs health to all hogs around you and get half back]"] = "", -- Continental_supplies ["sec"] = "vt.", -- 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 +-- ["Seduction"] = "", -- Continental_supplies +-- ["Seems like every time you take a \"walk\", the enemy find us!"] = "", -- A_Classic_Fairytale:backstab +-- ["See that crate farther on the right?"] = "", -- A_Classic_Fairytale:first_blood ["See ya!"] = "Uvidíme se!", +-- ["Segmentation Paul"] = "", -- A_Classic_Fairytale:dragon +-- ["Select continent!"] = "", -- Continental_supplies +-- ["Select difficulty: [Left] - easier or [Right] - harder"] = "", -- A_Classic_Fairytale:first_blood -- ["selected!"] = "", +-- ["... share your beauty with the world every morning, my princess!"] = "", -- A_Classic_Fairytale:journey +-- ["She's behind that tall thingy."] = "", -- A_Classic_Fairytale:family ["Shield boosted! +30 power"] = "Å tít posílen! +30 energie", ["Shield Depleted"] = "Å tít vyÄerpán", ["Shield is fully recharged!"] = "Å tít je plnÄ› dobit", @@ -160,61 +644,340 @@ ["Shield OFF:"] = "Å tít VYPNUT:", ["Shield ON:"] = "Å tít ZAPNUT:", ["Shield Seeker!"] = "HledaÄ Å¡títů!", +-- ["Shotgun"] = "", -- Continental_supplies ["Shotgun Team"] = "Brokovnicový tým", ["Shotgun Training"] = "Trénink s brokovnicí", -- ["shots remaining."] = "", ["Silly"] = "Hloupý", ["Sinky"] = "Propadlý", +-- ["Sirius Lee"] = "", -- A_Classic_Fairytale:enemy ["%s is out and Team %d|scored a penalty!| |Score:"] = "%s je venku a tým %d|má penaltu!| |Skóre:", -- Basketball, Knockball ["%s is out and Team %d|scored a point!| |Score:"] = "%s je venku a tým %d|skóruje!| |Skóre:", -- Basketball, Knockball +-- ["Slippery"] = "", -- A_Classic_Fairytale:journey +-- ["Smith 0.97"] = "", -- A_Classic_Fairytale:enemy +-- ["Smith 0.98"] = "", -- A_Classic_Fairytale:enemy +-- ["Smith 0.99a"] = "", -- A_Classic_Fairytale:enemy +-- ["Smith 0.99b"] = "", -- A_Classic_Fairytale:enemy +-- ["Smith 0.99f"] = "", -- A_Classic_Fairytale:enemy +-- ["Smith 1.0"] = "", -- A_Classic_Fairytale:enemy +-- ["Sniper Rifle"] = "", -- Continental_supplies +-- ["Sniper!"] = "", -- Space_Invasion ["Sniper Training"] = "OdstÅ™elovací trénink", ["Sniperz"] = "SnajpÅ™i", +-- ["So humiliating..."] = "", -- A_Classic_Fairytale:first_blood +-- ["South America"] = "", -- Continental_supplies +-- ["So? What will it be?"] = "", -- A_Classic_Fairytale:shadow +-- ["Spawn the crate, and attack!"] = "", -- WxW +-- ["Special Weapons:"] = "", -- Continental_supplies +-- ["Spiky Cheese"] = "", -- A_Classic_Fairytale:enemy, A_Classic_Fairytale:epil, A_Classic_Fairytale:family, A_Classic_Fairytale:queen, A_Classic_Fairytale:shadow +-- ["Spleenlover"] = "", -- A_Classic_Fairytale:united ["Sponge"] = "Mycí houba", ["Spooky Tree"] = "StraÅ¡idelný strom", ["s|"] = "s|", ["s"] = "s", -- GaudyRacer, Space_Invasion ["STATUS UPDATE"] = "AKTUALIZACE STAVU", -- GaudyRacer, Space_Invasion +-- ["Steel Eye"] = "", -- A_Classic_Fairytale:queen +-- ["Step By Step"] = "", -- A_Classic_Fairytale:first_blood +-- ["Steve"] = "", -- A_Classic_Fairytale:dragon, A_Classic_Fairytale:family, A_Classic_Fairytale:queen +-- ["Sticky Mine"] = "", -- Continental_supplies +-- ["Stronglings"] = "", -- A_Classic_Fairytale:shadow +-- ["Structure"] = "", -- Continental_supplies +-- ["Super Weapons"] = "", -- WxW +-- ["Surf Before Crate"] = "", -- WxW +-- ["Surfer! +15 points!"] = "", -- Space_Invasion +-- ["Surfer!"] = "", -- WxW +-- ["Survive!|Hint: Cinematics can be skipped with the [Precise] key."] = "", -- A_Classic_Fairytale:shadow +-- ["Swing, Leaks A Lot, on the wings of the wind!"] = "", -- A_Classic_Fairytale:first_blood ["Switched to "] = "PÅ™epnut na ", +-- ["Syntax Errol"] = "", -- A_Classic_Fairytale:dragon +-- ["Talk about mixed signals..."] = "", -- A_Classic_Fairytale:dragon ["Team %d: "] = "Tým %d: ", ["Team Scores"] = "Týmové skóre", -- Control, Space_Invasion +-- ["Teleport hint: just use the mouse to select the destination!"] = "", -- A_Classic_Fairytale:dragon +-- ["Thanks!"] = "", -- A_Classic_Fairytale:family +-- ["Thank you, my hero!"] = "", -- A_Classic_Fairytale:family +-- ["Thank you, oh, thank you, Leaks A Lot!"] = "", -- A_Classic_Fairytale:journey +-- ["Thank you, oh, thank you, my heroes!"] = "", -- A_Classic_Fairytale:journey +-- ["That is, indeed, very weird..."] = "", -- A_Classic_Fairytale:united +-- ["That makes it almost invaluable!"] = "", -- A_Classic_Fairytale:enemy +-- ["That ought to show them!"] = "", -- A_Classic_Fairytale:backstab +-- ["That's for my father!"] = "", -- A_Classic_Fairytale:backstab +-- ["That shaman sure knows what he's doing!"] = "", -- A_Classic_Fairytale:shadow ["That Sinking Feeling"] = "Potopené pocity", +-- ["That's not our problem!"] = "", -- A_Classic_Fairytale:enemy +-- ["That's typical of you!"] = "", -- A_Classic_Fairytale:family +-- ["That was just mean!"] = "", -- A_Classic_Fairytale:backstab, A_Classic_Fairytale:united ["That was pointless."] = "To bylo bezúÄelné.", +-- ["The answer is...entertaintment. You'll see what I mean."] = "", -- A_Classic_Fairytale:backstab +-- ["The anti-portal zone is all over the floor, and I have nothing to kill him...Droping something could hurt him enough to kill him..."] = "", -- portal +-- ["The Bull's Eye"] = "", -- A_Classic_Fairytale:first_blood +-- ["The caves are well hidden, they won't find us there!"] = "", -- A_Classic_Fairytale:united +-- ["The Crate Frenzy"] = "", -- A_Classic_Fairytale:first_blood +-- ["The Dilemma"] = "", -- A_Classic_Fairytale:shadow +-- ["The enemy can't move but it might be a good idea to stay out of sight!|"] = "", -- A_Classic_Fairytale:dragon ["The enemy is hiding out on yonder ducky!"] = "Nepřítel se skrývá na tamté kachniÄce!", +-- ["The Enemy Of My Enemy"] = "", -- A_Classic_Fairytale:enemy +-- ["The First Blood"] = "", -- A_Classic_Fairytale:first_blood +-- ["The First Encounter"] = "", -- A_Classic_Fairytale:shadow ["The flag will respawn next round."] = "Vlajka se obnoví příští kolo.", +-- ["The food bites back"] = "", -- A_Classic_Fairytale:backstab +-- ["The giant umbrella from the last crate should help break the fall."] = "", -- A_Classic_Fairytale:first_blood +-- ["The Great Escape"] = "", -- User_Mission_-_The_Great_Escape +-- ["The guardian"] = "", -- A_Classic_Fairytale:shadow +-- ["The Individualist"] = "", -- A_Classic_Fairytale:shadow +-- ["Their buildings were very primitive back then, even for an uncivilised island."] = "", -- A_Classic_Fairytale:united +-- ["The Journey Back"] = "", -- A_Classic_Fairytale:journey +-- ["The Leap of Faith"] = "", -- A_Classic_Fairytale:first_blood +-- ["The Moonwalk"] = "", -- A_Classic_Fairytale:journey ["The Nameless One"] = "Bezejmenný", +-- ["The next one is pretty hard! |Tip: You have to do multiple swings!"] = "", -- Basic_Training_-_Rope +-- ["Then how do they keep appearing?"] = "", -- A_Classic_Fairytale:shadow +-- ["The other one were all cannibals, spending their time eating the organs of fellow hedgehogs..."] = "", -- A_Classic_Fairytale:first_blood +-- ["There must be a spy among us!"] = "", -- A_Classic_Fairytale:backstab +-- ["There's more of them? When did they become so hungry?"] = "", -- A_Classic_Fairytale:backstab, A_Classic_Fairytale:united +-- ["There's nothing more satisfying for me than seeing you share your beauty with the world every morning, my princess!"] = "", -- A_Classic_Fairytale:journey +-- ["There's nothing more satisfying to us than seeing you share your beauty..."] = "", -- A_Classic_Fairytale:journey +-- ["There's nothing more satisfying to us than seeing you share your beauty with the world every morning, my princess!"] = "", -- A_Classic_Fairytale:journey +-- ["The Rising"] = "", -- A_Classic_Fairytale:first_blood +-- ["The Savior"] = "", -- A_Classic_Fairytale:journey +-- ["These primitive people are so funny!"] = "", -- A_Classic_Fairytale:backstab +-- ["The Shadow Falls"] = "", -- A_Classic_Fairytale:shadow +-- ["The Showdown"] = "", -- A_Classic_Fairytale:shadow +-- ["The Slaughter"] = "", -- A_Classic_Fairytale:dragon, A_Classic_Fairytale:first_blood ["THE SPECIALISTS"] = "SPECIALISTÉ", +-- ["The spirits of the ancerstors are surely pleased, Leaks A Lot."] = "", -- A_Classic_Fairytale:first_blood +-- ["The Torment"] = "", -- A_Classic_Fairytale:first_blood +-- ["The Tunnel Maker"] = "", -- A_Classic_Fairytale:journey +-- ["The Ultimate Weapon"] = "", -- A_Classic_Fairytale:first_blood +-- ["The Union"] = "", -- A_Classic_Fairytale:enemy +-- ["The village, unprepared, was destroyed by the cyborgs..."] = "", -- A_Classic_Fairytale:journey +-- ["The walk of Fame"] = "", -- A_Classic_Fairytale:shadow +-- ["The wasted youth"] = "", -- A_Classic_Fairytale:first_blood +-- ["The weapon in that last crate was bestowed upon us by the ancients!"] = "", -- A_Classic_Fairytale:first_blood +-- ["The what?!"] = "", -- A_Classic_Fairytale:dragon +-- ["The wind whispers that you are ready to become familiar with tools, now..."] = "", -- A_Classic_Fairytale:first_blood +-- ["They are all waiting back in the village, haha."] = "", -- A_Classic_Fairytale:enemy +-- ["They Call Me Bullseye!"] = "", -- Space_Invasion +-- ["They have weapons we've never seen before!"] = "", -- A_Classic_Fairytale:united +-- ["They keep appearing like this. It's weird!"] = "", -- A_Classic_Fairytale:united +-- ["They killed "] = "", -- A_Classic_Fairytale:backstab, A_Classic_Fairytale:united +-- ["They must be trying to weaken us!"] = "", -- A_Classic_Fairytale:enemy +-- ["They never learn"] = "", -- A_Classic_Fairytale:journey +-- ["They told us to wear these clothes. They said that this is the newest trend."] = "", -- A_Classic_Fairytale:enemy +-- ["They've been manipulating us all this time!"] = "", -- A_Classic_Fairytale:enemy +-- ["Thighlicker"] = "", -- A_Classic_Fairytale:united +-- ["This is it! It's time to make Fell From Heaven fall for me..."] = "", -- A_Classic_Fairytale:first_blood +-- ["This island is the only place left on Earth with grass on it!"] = "", -- A_Classic_Fairytale:enemy +-- ["This is typical!"] = "", -- A_Classic_Fairytale:dragon +-- ["This must be some kind of sorcery!"] = "", -- A_Classic_Fairytale:shadow +-- ["This must be the caves!"] = "", -- A_Classic_Fairytale:backstab -- ["This one's tricky."] = "", ["This rain is really something..."] = "Tenhle déšť je opravdu nÄ›co...", +-- ["This will be fun!"] = "", -- A_Classic_Fairytale:enemy +-- ["Those aliens are destroying the island!"] = "", -- A_Classic_Fairytale:family ["TIME: "] = "ÄŒAS: ", ["Timed Kamikaze!"] = "ÄŒasovaná sebevražda!", ["Time Extended!"] = "ÄŒas prodloužen!", -- ["Time Extension"] = "", +-- ["Tip: The rope physics are different than in the real world, |use it to your advantage!"] = "", -- Basic_Training_-_Rope ["Toggle Shield"] = "PÅ™epnout Å¡tít", +-- ["To help you, of course!"] = "", -- A_Classic_Fairytale:journey +-- ["To place a girder, select it, use [Left] and [Right] to select angle and length, place with [Left Click]"] = "", -- A_Classic_Fairytale:shadow +-- ["Torn Muscle"] = "", -- A_Classic_Fairytale:journey +-- [" to save the village."] = "", -- A_Classic_Fairytale:dragon +-- ["To the caves..."] = "", -- A_Classic_Fairytale:united ["Toxic Team"] = "Jedovatý tým", -- User_Mission_-_Diver, User_Mission_-_Spooky_Tree, User_Mission_-_Teamwork ["TRACK COMPLETED"] = "TRASA KOMPLETNÃ", -- ["TRACK FAILED!"] = "", +-- ["training"] = "", -- portal +-- ["Traitors"] = "", -- A_Classic_Fairytale:epil +-- ["Tribe"] = "", -- A_Classic_Fairytale:backstab ["TrophyRace"] = "Závod o trofej", +-- ["Try to protect the chief! You won't lose if he dies, but it is advised that he survives."] = "", -- A_Classic_Fairytale:united ["T_T"] = "T_T", -- ["Tumbling Time Extended!"] = "", +-- ["Turns until Sudden Death: "] = "", -- A_Classic_Fairytale:dragon +-- [" turns until Sudden Death! Better hurry!"] = "", -- A_Classic_Fairytale:dragon ["Turn Time"] = "ÄŒas kola", +-- ["Two little hogs cooperating, getting past obstacles..."] = "", -- A_Classic_Fairytale:journey +-- ["Uhm...I met one of them and took his weapons."] = "", -- A_Classic_Fairytale:shadow +-- ["Uhmm...ok no."] = "", -- A_Classic_Fairytale:enemy +-- ["ULTRA KILL"] = "", -- Mutant +-- ["Under Construction"] = "", -- A_Classic_Fairytale:shadow +-- ["Unexpected Igor"] = "", -- A_Classic_Fairytale:dragon -- ["Unit"] = "", +-- ["Unit 0x0007"] = "", -- A_Classic_Fairytale:family +-- ["Unit 334a$7%;.*"] = "", -- A_Classic_Fairytale:backstab, A_Classic_Fairytale:dragon, A_Classic_Fairytale:enemy, A_Classic_Fairytale:family, A_Classic_Fairytale:queen, A_Classic_Fairytale:united ["Unit 3378"] = "Jednotka 3378", -- ["Unit 835"] = "", +-- ["United We Stand"] = "", -- A_Classic_Fairytale:united ["Unlimited Attacks"] = "NeomezenÄ› útoků", +-- ["Unlucky Sods"] = "", -- User_Mission_-_Rope_Knock_Challenge -- ["Unstoppable!"] = "", +-- ["Unsuspecting Louts"] = "", -- User_Mission_-_Rope_Knock_Challenge +-- ["[Up], [Down] to aim, [Space] to shoot!"] = "", -- A_Classic_Fairytale:first_blood +-- ["Use it wisely!"] = "", -- A_Classic_Fairytale:dragon +-- ["Use it with precaution!"] = "", -- A_Classic_Fairytale:first_blood ["User Challenge"] = "Výzva", +-- ["Use the parachute ([Space] while in air)"] = "", -- +-- ["Use the portal gun to get to the next crate, then use the new gun to get to the final destination!|"] = "", -- A_Classic_Fairytale:dragon +-- ["Use the rope to get on the head of the mole, young one!"] = "", -- A_Classic_Fairytale:first_blood +-- ["Use the rope to knock your enemies to their doom."] = "", -- User_Mission_-_Rope_Knock_Challenge ["Use your rope to get from start to finish as fast as you can!"] = "Použij lano a dostaň se ze startu do cíle, jak nejrychleji umíš!", +-- ["Vedgies"] = "", -- A_Classic_Fairytale:journey +-- ["Vegan Jack"] = "", -- A_Classic_Fairytale:enemy +-- ["Victory!"] = "", -- Basic_Training_-_Rope ["Victory for the "] = "VítÄ›zství pro ", -- CTF_Blizzard, Capture_the_Flag +-- ["Violence is not the answer to your problems!"] = "", -- A_Classic_Fairytale:first_blood +-- ["Walls Left"] = "", -- WxW +-- ["Walls Required"] = "", -- WxW +-- ["WALL TO WALL"] = "", -- WxW +-- ["Wannabe Flyboys"] = "", -- User_Mission_-_RCPlane_Challenge +-- ["Wannabe Shoppsta"] = "", -- User_Mission_-_Rope_Knock_Challenge +-- ["Watch your steps, young one!"] = "", -- A_Classic_Fairytale:first_blood ["Waypoint placed."] = "NavigaÄní bod umístÄ›n.", -- ["Way-Points Remaining"] = "", +-- ["Weaklings"] = "", -- A_Classic_Fairytale:shadow +-- ["We all know what happens when you get frightened..."] = "", -- A_Classic_Fairytale:first_blood +-- ["Weapons reset."] = "", -- Highlander ["Weapons Reset"] = "ZbranÄ› obnoveny", +-- ["We are indeed."] = "", -- A_Classic_Fairytale:backstab +-- ["We can't defeat them!"] = "", -- A_Classic_Fairytale:shadow +-- ["We can't hold them up much longer!"] = "", -- A_Classic_Fairytale:united +-- ["We can't let them take over our little island!"] = "", -- A_Classic_Fairytale:enemy +-- ["We have no time to waste..."] = "", -- A_Classic_Fairytale:journey +-- ["We have nowhere else to live!"] = "", -- A_Classic_Fairytale:enemy +-- ["We have to protect the village!"] = "", -- A_Classic_Fairytale:united +-- ["We have to unite and defeat those cylergs!"] = "", -- A_Classic_Fairytale:enemy +-- ["Welcome, Leaks A Lot!"] = "", -- A_Classic_Fairytale:journey -- ["Well done."] = "", +-- ["We'll give you a problem then!"] = "", -- A_Classic_Fairytale:enemy +-- ["We'll spare your life for now!"] = "", -- A_Classic_Fairytale:backstab +-- ["Well, that was a waste of time."] = "", -- A_Classic_Fairytale:dragon +-- ["Well, well! Isn't that the cutest thing you've ever seen?"] = "", -- A_Classic_Fairytale:journey +-- ["Well, yes. This was a cyborg television show."] = "", -- A_Classic_Fairytale:enemy +-- ["We made sure noone followed us!"] = "", -- A_Classic_Fairytale:backstab +-- ["We need to move!"] = "", -- A_Classic_Fairytale:united +-- ["We need to prevent their arrival!"] = "", -- A_Classic_Fairytale:backstab +-- ["We need to warn the village."] = "", -- A_Classic_Fairytale:shadow +-- ["We should head back to the village now."] = "", -- A_Classic_Fairytale:shadow +-- ["We were trying to save her and we got lost."] = "", -- A_Classic_Fairytale:family +-- ["We won't let you hurt her!"] = "", -- A_Classic_Fairytale:journey +-- ["What?! A cannibal? Here? There is no time to waste! Come, you are prepared."] = "", -- A_Classic_Fairytale:first_blood +-- ["What a douche!"] = "", -- A_Classic_Fairytale:enemy +-- ["What am I gonna...eat, yo?"] = "", -- A_Classic_Fairytale:family +-- ["What are you doing at a distance so great, young one?"] = "", -- A_Classic_Fairytale:first_blood +-- ["What are you doing? Let her go!"] = "", -- A_Classic_Fairytale:journey +-- ["What a ride!"] = "", -- A_Classic_Fairytale:shadow +-- ["What a strange cave!"] = "", -- A_Classic_Fairytale:dragon +-- ["What a strange feeling!"] = "", -- A_Classic_Fairytale:backstab +-- ["What do my faulty eyes observe? A spy!"] = "", -- A_Classic_Fairytale:first_blood +-- ["Whatever floats your boat..."] = "", -- A_Classic_Fairytale:shadow +-- [" What !! For all of this struggle i just win some ... TIME o0"] = "", -- portal +-- ["What has "] = "", -- A_Classic_Fairytale:backstab +-- ["What? Here? How did they find us?!"] = "", -- A_Classic_Fairytale:backstab +-- ["What is this place?"] = "", -- A_Classic_Fairytale:dragon, A_Classic_Fairytale:enemy +-- ["What shall we do with the traitor?"] = "", -- A_Classic_Fairytale:backstab +-- ["WHAT?! You're the ones attacking us!"] = "", -- A_Classic_Fairytale:enemy +-- ["When?"] = "", -- A_Classic_Fairytale:enemy +-- ["When I find it..."] = "", -- A_Classic_Fairytale:dragon +-- ["Where are all these crates coming from?!"] = "", -- A_Classic_Fairytale:shadow +-- ["Where are they?!"] = "", -- A_Classic_Fairytale:backstab +-- ["Where did that alien run?"] = "", -- A_Classic_Fairytale:dragon +-- ["Where did you get the exploding apples?"] = "", -- A_Classic_Fairytale:shadow +-- ["Where did you get the exploding apples and the magic bow that shoots many arrows?"] = "", -- A_Classic_Fairytale:shadow +-- ["Where did you get the magic bow that shoots many arrows?"] = "", -- A_Classic_Fairytale:shadow +-- ["Where did you get the weapons in the forest, Dense Cloud?"] = "", -- A_Classic_Fairytale:backstab +-- ["Where do you get that?!"] = "", -- A_Classic_Fairytale:enemy +-- ["Where have you been?!"] = "", -- A_Classic_Fairytale:backstab +-- ["Where have you been?"] = "", -- A_Classic_Fairytale:united +-- ["? Why?"] = "", -- A_Classic_Fairytale:backstab +-- ["Why "] = "", -- A_Classic_Fairytale:backstab +-- ["! Why?!"] = "", -- A_Classic_Fairytale:backstab, A_Classic_Fairytale:united +-- ["Why are you doing this?"] = "", -- A_Classic_Fairytale:journey +-- ["Why are you helping us, uhm...?"] = "", -- A_Classic_Fairytale:family +-- ["Why can't he just let her go?!"] = "", -- A_Classic_Fairytale:family +-- ["Why do men keep hurting me?"] = "", -- A_Classic_Fairytale:first_blood +-- ["Why do you not like me?"] = "", -- A_Classic_Fairytale:shadow +-- ["Why do you want to take over our island?"] = "", -- A_Classic_Fairytale:enemy +-- ["Why me?!"] = "", -- A_Classic_Fairytale:backstab +-- ["Why would they do this?"] = "", -- A_Classic_Fairytale:backstab +-- ["- Will Get 1-3 random weapons"] = "", -- Continental_supplies +-- ["- Will refresh Parachute each turn."] = "", -- Continental_supplies +-- ["- Will refresh portalgun each turn."] = "", -- Continental_supplies -- ["Will this ever end?"] = "", +-- ["WINNER IS "] = "", -- Mutant ["WINNING TIME: "] = "VÃTÄšZNà ČAS: ", +-- ["Wise Oak"] = "", -- A_Classic_Fairytale:backstab, A_Classic_Fairytale:dragon, A_Classic_Fairytale:enemy, A_Classic_Fairytale:epil, A_Classic_Fairytale:family, A_Classic_Fairytale:queen +-- ["With Dense Cloud on the land of shadows, I'm the village's only hope..."] = "", -- A_Classic_Fairytale:journey +-- ["With the rest of the tribe gone, it was up to "] = "", -- A_Classic_Fairytale:dragon +-- ["Worry not, for it is a peaceful animal! There is no reason to be afraid..."] = "", -- A_Classic_Fairytale:first_blood +-- ["Wow, what a dream!"] = "", -- A_Classic_Fairytale:backstab +-- ["Y3K1337"] = "", -- A_Classic_Fairytale:journey, A_Classic_Fairytale:shadow +-- ["Yay, we won!"] = "", -- A_Classic_Fairytale:enemy +-- ["Y Chwiliad"] = "", -- A_Classic_Fairytale:dragon +-- ["Yeah...I think it's a 'he', lol."] = "", -- A_Classic_Fairytale:shadow +-- ["Yeah, sure! I died. Hillarious!"] = "", -- A_Classic_Fairytale:backstab +-- ["Yeah, take that!"] = "", -- A_Classic_Fairytale:dragon +-- ["Yeah? Watcha gonna do? Cry?"] = "", -- A_Classic_Fairytale:journey +-- ["Yes!"] = "", -- A_Classic_Fairytale:enemy +-- ["Yes, yeees! You are now ready to enter the real world!"] = "", -- A_Classic_Fairytale:first_blood +-- ["Yo, dude, we're here, too!"] = "", -- A_Classic_Fairytale:family +-- ["You are given the chance to turn your life around..."] = "", -- A_Classic_Fairytale:shadow +-- ["You are playing with our lives here!"] = "", -- A_Classic_Fairytale:enemy +-- ["! You bastards!"] = "", -- A_Classic_Fairytale:backstab, A_Classic_Fairytale:united +-- ["You bear impressive skills, "] = "", -- A_Classic_Fairytale:dragon +-- ["You can't fire a portal on the blue surface"] = "", -- portal +-- ["You couldn't possibly believe that after refusing my offer I'd just let you go!"] = "", -- A_Classic_Fairytale:journey ["You'd almost swear the water was rising!"] = "Přísahal bys, že voda stoupá!", +-- ["You'd better watch your steps..."] = "", -- A_Classic_Fairytale:journey +-- ["You did not make it in time, try again!"] = "", -- Basic_Training_-_Rope +-- ["You have 7 turns until the next wave arrives.|Make sure the arriving cannibals are greeted appropriately!|If the hog dies, the cause is lost.|Hint: you might want to use some mines..."] = "", -- A_Classic_Fairytale:backstab +-- ["You have "] = "", -- A_Classic_Fairytale:dragon +-- ["You have been giving us out to the enemy, haven't you!"] = "", -- A_Classic_Fairytale:backstab +-- ["You have been respawned, at your last checkpoint!"] = "", -- Basic_Training_-_Rope +-- ["You have been respawned, be more carefull next time!"] = "", -- Basic_Training_-_Rope +-- ["You have chosen the perfect moment to leave."] = "", -- A_Classic_Fairytale:united +-- ["You have failed to complete your task, young one!"] = "", -- A_Classic_Fairytale:journey +-- ["You have failed to save the tribe!"] = "", -- A_Classic_Fairytale:backstab +-- ["You have finally figured it out!"] = "", -- A_Classic_Fairytale:enemy +-- ["You have kidnapped our whole tribe!"] = "", -- A_Classic_Fairytale:enemy +-- ["You have killed an innocent hedgehog!"] = "", -- A_Classic_Fairytale:backstab +-- ["You have proven yourself worthy to see our most ancient secret!"] = "", -- A_Classic_Fairytale:first_blood +-- ["You have proven yourselves worthy!"] = "", -- A_Classic_Fairytale:enemy ["You have SCORED!!"] = "SKÓROVAL jsi!!", +-- ["You have to destroy 12 targets in 180 seconds"] = "", -- Basic_Training_-_Cluster_Bomb +-- ["You have won the game by proving true cooperative skills!"] = "", -- A_Classic_Fairytale:enemy +-- ["You just appeared out of thin air!"] = "", -- A_Classic_Fairytale:backstab +-- ["You just committed suicide..."] = "", -- A_Classic_Fairytale:shadow +-- ["You killed my father, you monster!"] = "", -- A_Classic_Fairytale:backstab +-- ["You know...taking a stroll."] = "", -- A_Classic_Fairytale:backstab +-- ["You know what? I don't even regret anything!"] = "", -- A_Classic_Fairytale:backstab +-- ["You'll see what I mean!"] = "", -- A_Classic_Fairytale:enemy +-- ["You may only attack from a rope!"] = "", -- WxW +-- ["You meatbags are pretty slow, you know!"] = "", -- A_Classic_Fairytale:enemy +-- ["You might want to find a way to instantly kill arriving cannibals!"] = "", -- A_Classic_Fairytale:backstab +-- ["Young one, you are telling us that they can instantly change location without a shaman?"] = "", -- A_Classic_Fairytale:united +-- ["You probably know what to do next..."] = "", -- A_Classic_Fairytale:first_blood +-- ["Your deaths will be avenged, cannibals!"] = "", -- A_Classic_Fairytale:enemy +-- ["Your death will not be in vain, Dense Cloud!"] = "", -- A_Classic_Fairytale:shadow +-- ["You're...alive!? But we saw you die!"] = "", -- A_Classic_Fairytale:backstab +-- ["You're a pathetic liar!"] = "", -- A_Classic_Fairytale:backstab +-- ["You're funny!"] = "", -- A_Classic_Fairytale:journey +-- ["You're getting pretty good! |Tip: When you shorten you rope you move faster! |and when you lengthen it you move slower"] = "", -- Basic_Training_-_Rope +-- ["You're pathetic! You are not worthy of my attention..."] = "", -- A_Classic_Fairytale:shadow +-- ["You're probably wondering why I bought you back..."] = "", -- A_Classic_Fairytale:backstab +-- ["You're terrorizing the forest...We won't catch anything like this!"] = "", -- A_Classic_Fairytale:shadow +-- ["Your hogs must survive!"] = "", -- A_Classic_Fairytale:journey +-- ["Your movement skills will be evaluated now."] = "", -- A_Classic_Fairytale:first_blood ["You saved"] = "Uložil jsi", +-- ["You've been assaulting us, we have been just defending ourselves!"] = "", -- A_Classic_Fairytale:enemy ["You've failed. Try again."] = "Zklamal jsi. Zkus to znovu.", ["You've reached the goal!| |Time: "] = "Dosáhl jsi cíle!| |ÄŒas: ", +-- ["You will be avenged!"] = "", -- A_Classic_Fairytale:shadow +-- ["You won't believe what happened to me!"] = "", -- A_Classic_Fairytale:backstab +-- ["Yuck! I bet they'll keep worshipping her even after I save the village!"] = "", -- A_Classic_Fairytale:family +-- ["Zealandia"] = "", -- Continental_supplies ["'Zooka Team"] = "Bazukáři", +-- ["Zork"] = "", -- A_Classic_Fairytale:dragon, A_Classic_Fairytale:family, A_Classic_Fairytale:queen } diff -r 3331b30e4ef1 -r 88fde28bbda6 share/hedgewars/Data/Locale/da.lua --- a/share/hedgewars/Data/Locale/da.lua Sun Oct 21 01:28:33 2012 +0400 +++ b/share/hedgewars/Data/Locale/da.lua Sat Nov 03 00:34:35 2012 +0400 @@ -2,158 +2,640 @@ [":("] = ":(", ["!!!"] = "!!!", ["..."] = "...", +-- ["011101000"] = "", -- A_Classic_Fairytale:dragon +-- ["011101001"] = "", -- A_Classic_Fairytale:backstab, A_Classic_Fairytale:dragon, A_Classic_Fairytale:enemy, A_Classic_Fairytale:family, A_Classic_Fairytale:journey, A_Classic_Fairytale:queen, A_Classic_Fairytale:shadow, A_Classic_Fairytale:united +-- ["30 minutes later..."] = "", -- A_Classic_Fairytale:shadow +-- ["About a month ago, a cyborg came and told us that you're the cannibals!"] = "", -- A_Classic_Fairytale:enemy ["Accuracy Bonus!"] = "Præcisionsbonus", +-- ["Ace"] = "", -- User_Mission_-_RCPlane_Challenge, User_Mission_-_Rope_Knock_Challenge ["Achievement Unlocked"] = "Bedrift Fuldført", -- User_Mission_-_Bamboo_Thicket, User_Mission_-_That_Sinking_Feeling, Tumbler +-- ["A Classic Fairytale"] = "", -- A_Classic_Fairytale:first_blood +-- ["???"] = "", -- A_Classic_Fairytale:backstab +-- ["Actually, you aren't worthy of life! Take this..."] = "", -- A_Classic_Fairytale:shadow +-- ["A cy-what?"] = "", -- A_Classic_Fairytale:enemy +-- ["Adventurous"] = "", -- A_Classic_Fairytale:journey +-- ["Africa"] = "", -- Continental_supplies +-- ["After Leaks A Lot betrayed his tribe, he joined the cannibals..."] = "", -- A_Classic_Fairytale:first_blood +-- ["After the shock caused by the enemy spy, Leaks A Lot and Dense Cloud went hunting to relax."] = "", -- A_Classic_Fairytale:shadow +-- ["Again with the 'cannibals' thing!"] = "", -- A_Classic_Fairytale:enemy +-- ["a Hedgewars challenge"] = "", -- User_Mission_-_RCPlane_Challenge, User_Mission_-_Rope_Knock_Challenge ["a Hedgewars mini-game"] = "et Hedgewars-minispil", -- Space_Invasion, The_Specialists ["Aiming Practice"] = "Sigtetræning", --Bazooka, Shotgun, SniperRifle +-- ["A leap in a leap"] = "", -- A_Classic_Fairytale:first_blood +-- ["A little gift from the cyborgs"] = "", -- A_Classic_Fairytale:shadow +-- ["All gone...everything!"] = "", -- A_Classic_Fairytale:enemy +-- ["All right, we just need to get to the other side of the island!"] = "", -- A_Classic_Fairytale:journey +-- ["All walls touched!"] = "", -- WxW ["Ammo"] = "Ammunition", ["Ammo Depleted!"] = "Ammunition Udtømt", ["ammo extended!"] = "ammunition udstrakt", ["Ammo is reset at the end of your turn."] = "Ammunition nulstilles i slutningen af turen", ["Ammo Maniac!"] = "Ammunitionsgalskab", +-- ["And how am I alive?!"] = "", -- A_Classic_Fairytale:enemy +-- ["And so happenned that Leaks A Lot failed to complete the challenge! He landed, pressured by shame..."] = "", -- A_Classic_Fairytale:first_blood +-- ["And so it began..."] = "", -- A_Classic_Fairytale:first_blood +-- ["...and so the cyborgs took over the world..."] = "", -- A_Classic_Fairytale:shadow +-- ["And so they discovered that cyborgs weren't invulnerable..."] = "", -- A_Classic_Fairytale:journey +-- ["And where's all the weed?"] = "", -- A_Classic_Fairytale:dragon +-- ["And you believed me? Oh, god, that's cute!"] = "", -- A_Classic_Fairytale:journey +-- ["Anno 1032: [The explosion will make a strong push ~ wide range, wont affect hogs close to the target]"] = "", -- Continental_supplies +-- ["Antarctica"] = "", -- Continental_supplies +-- ["Are we there yet?"] = "", -- A_Classic_Fairytale:shadow +-- ["Are you accusing me of something?"] = "", -- A_Classic_Fairytale:backstab +-- ["Are you saying that many of us have died for your entertainment?"] = "", -- A_Classic_Fairytale:enemy +-- ["Artur Detour"] = "", -- A_Classic_Fairytale:queen +-- ["As a reward for your performance, here's some new technology!"] = "", -- A_Classic_Fairytale:dragon +-- ["a shoppa minigame"] = "", -- WxW +-- ["Asia"] = "", -- Continental_supplies +-- ["Assault Team"] = "", -- A_Classic_Fairytale:backstab +-- ["As the ammo is sparse, you might want to reuse ropes while mid-air.|"] = "", -- A_Classic_Fairytale:dragon +-- ["As the challenge was completed, Leaks A Lot set foot on the ground..."] = "", -- A_Classic_Fairytale:first_blood +-- ["As you can see, there is no way to get on the other side!"] = "", -- A_Classic_Fairytale:dragon +-- ["Attack From Rope"] = "", -- WxW +-- ["Australia"] = "", -- Continental_supplies ["Available points remaining: "] = "Tilgængeligt point tilbage: ", +-- ["Back Breaker"] = "", -- A_Classic_Fairytale:backstab +-- ["Back in the village, after telling the villagers about the threat..."] = "", -- A_Classic_Fairytale:united ["[Backspace]"] = "[Tilbage]", +-- ["Backstab"] = "", -- A_Classic_Fairytale:backstab +-- ["Bad Team"] = "", -- User_Mission_-_The_Great_Escape ["Bamboo Thicket"] = "Bambusbuskads", ["Barrel Eater!"] = "Tøndeæder!", ["Barrel Launcher"] = "Tøndekaster", +-- ["Baseballbat"] = "", -- Continental_supplies ["Bat balls at your enemies and|push them into the sea!"] = "SlÃ¥ bolde pÃ¥ dine fjender og|skub dem i havet!", ["Bat your opponents through the|baskets and out of the map!"] = "SlÃ¥ dine modstandere gennem|kurvene og ud af banen!", ["Bazooka Training"] = "Træning med Bazooka", +-- ["Beep Loopers"] = "", -- A_Classic_Fairytale:queen ["Best laps per team: "] = "Bedste omgang per hold: ", ["Best Team Times: "] = "Bedste Holdtid: ", +-- ["Beware, though! If you are slow, you die!"] = "", -- A_Classic_Fairytale:dragon +-- ["Biomechanic Team"] = "", -- A_Classic_Fairytale:family +-- ["Blender"] = "", -- A_Classic_Fairytale:family +-- ["Bloodpie"] = "", -- A_Classic_Fairytale:backstab +-- ["Bloodrocutor"] = "", -- A_Classic_Fairytale:shadow +-- ["Bloodsucker"] = "", -- A_Classic_Fairytale:shadow ["Bloody Rookies"] = "Forbandede Begyndere", -- 01#Boot_Camp, User_Mission_-_Dangerous_Ducklings, User_Mission_-_Diver, User_Mission_-_Spooky_Tree +-- ["Bone Jackson"] = "", -- A_Classic_Fairytale:backstab +-- ["Bonely"] = "", -- A_Classic_Fairytale:shadow ["Boom!"] = "Bum!", ["BOOM!"] = "BUM!", ["Boss defeated!"] = "Boss besejret!", ["Boss Slayer!"] = "Boss-morder!", +-- ["Brain Blower"] = "", -- A_Classic_Fairytale:journey +-- ["Brainiac"] = "", -- A_Classic_Fairytale:epil, A_Classic_Fairytale:first_blood, A_Classic_Fairytale:shadow +-- ["Brainila"] = "", -- A_Classic_Fairytale:united +-- ["Brain Stu"] = "", -- A_Classic_Fairytale:united +-- ["Brain Teaser"] = "", -- A_Classic_Fairytale:backstab +-- ["Brutal Lily"] = "", -- A_Classic_Fairytale:enemy, A_Classic_Fairytale:epil +-- ["Brutus"] = "", -- A_Classic_Fairytale:backstab ["Build a track and race."] = "Byg en bane og ræs.", +-- ["Bullseye"] = "", -- A_Classic_Fairytale:dragon +-- ["But it proved to be no easy task!"] = "", -- A_Classic_Fairytale:dragon +-- ["But that's impossible!"] = "", -- A_Classic_Fairytale:backstab +-- ["But the ones alive are stronger in their heart!"] = "", -- A_Classic_Fairytale:enemy +-- ["But...we died!"] = "", -- A_Classic_Fairytale:backstab +-- ["But where can we go?"] = "", -- A_Classic_Fairytale:united +-- ["But why would they help us?"] = "", -- A_Classic_Fairytale:backstab +-- ["But you're cannibals. It's what you do."] = "", -- A_Classic_Fairytale:enemy +-- ["But you said you'd let her go!"] = "", -- A_Classic_Fairytale:journey +-- ["Call me Beep! Well, 'cause I'm such a nice...person!"] = "", -- A_Classic_Fairytale:family +-- ["Cannibals"] = "", -- A_Classic_Fairytale:enemy, A_Classic_Fairytale:epil, A_Classic_Fairytale:first_blood +-- ["Cannibal Sentry"] = "", -- A_Classic_Fairytale:journey +-- ["Cannibals?! You're the cannibals!"] = "", -- A_Classic_Fairytale:enemy ["CAPTURE THE FLAG"] = "EROBR FLAGET", ["Careless"] = "Sløset", +-- ["Carol"] = "", -- A_Classic_Fairytale:family +-- ["CHALLENGE COMPLETE"] = "", -- User_Mission_-_RCPlane_Challenge ["Change Weapon"] = "Skift VÃ¥ben", +-- ["Choose your side! If you want to join the strange man, walk up to him.|Otherwise, walk away from him. If you decide to att...nevermind..."] = "", -- A_Classic_Fairytale:shadow ["Clumsy"] = "Kluntet", +-- ["Cluster Bomb MASTER!"] = "", -- Basic_Training_-_Cluster_Bomb +-- ["Cluster Bomb Training"] = "", -- Basic_Training_-_Cluster_Bomb ["Codename: Teamwork"] = "Kodeord: Samarbejde", +-- ["Collateral Damage"] = "", -- A_Classic_Fairytale:journey +-- ["Collateral Damage II"] = "", -- A_Classic_Fairytale:journey +-- ["Collect all the crates, but remember, our time in this life is limited!"] = "", -- A_Classic_Fairytale:first_blood +-- ["Collect or destroy all the health crates."] = "", -- User_Mission_-_RCPlane_Challenge +-- ["Collect the crate on the right.|Hint: Select the rope, [Up] or [Down] to aim, [Space] to fire, directional keys to move.|Ropes can be fired again in the air!"] = "", -- A_Classic_Fairytale:first_blood +-- ["Collect the crates within the time limit!|If you fail, you'll have to try again."] = "", -- A_Classic_Fairytale:first_blood +-- ["Come closer, so that your training may continue!"] = "", -- A_Classic_Fairytale:first_blood +-- ["Compete to use as few planes as possible!"] = "", -- User_Mission_-_RCPlane_Challenge ["Complete the track as fast as you can!"] = "Gennemfør banen sÃ¥ hurtigt som muligt!", +-- ["COMPLETION TIME"] = "", -- User_Mission_-_Rope_Knock_Challenge +-- ["Configuration accepted."] = "", -- WxW +-- ["Congratulations"] = "", -- Basic_Training_-_Rope ["Congratulations!"] = "Tillykke!", +-- ["Congratulations! You needed only half of time|to eliminate all targets."] = "", -- Basic_Training_-_Cluster_Bomb +-- ["Congratulations! You've completed the Rope tutorial! |- Tutorial ends in 10 seconds!"] = "", -- Basic_Training_-_Rope ["Congratulations! You've eliminated all targets|within the allowed time frame."] = "Tillykke! Du har elimineret alle mÃ¥lene|inden for den tilladte tidsramme.", --Bazooka, Shotgun, SniperRifle +-- ["Continental supplies"] = "", -- Continental_supplies ["Control pillars to score points."] = "Kontroller søjler for at score point.", +-- ["Corporationals"] = "", -- A_Classic_Fairytale:queen +-- ["Corpsemonger"] = "", -- A_Classic_Fairytale:shadow +-- ["Corpse Thrower"] = "", -- A_Classic_Fairytale:epil +-- ["Crates Left:"] = "", -- User_Mission_-_RCPlane_Challenge ["Cybernetic Empire"] = "Kybernetisk Imperium", +-- ["Cyborg. It's what the aliens call themselves."] = "", -- A_Classic_Fairytale:enemy +-- ["Dahmer"] = "", -- A_Classic_Fairytale:backstab ["DAMMIT, ROOKIE!"] = "FOR HELVEDE, REKRUT!", ["DAMMIT, ROOKIE! GET OFF MY HEAD!"] = "FOR HELVEDE, REKRUT! KOM NED DERFRA!", ["Dangerous Ducklings"] = "Farlige Ællinger", ["Deadweight"] = "Dødvægt", +-- ["Defeat the cannibals"] = "", -- A_Classic_Fairytale:backstab +-- ["Defeat the cannibals!|"] = "", -- A_Classic_Fairytale:united +-- ["Defeat the cannibals!|Grenade hint: set the timer with [1-5], aim with [Up]/[Down] and hold [Space] to set power"] = "", -- A_Classic_Fairytale:shadow +-- ["Defeat the cyborgs!"] = "", -- A_Classic_Fairytale:enemy +-- ["Defend yourself!|Hint: You can get tips on using weapons by moving your mouse over them in the weapon selection menu"] = "", -- A_Classic_Fairytale:shadow ["Demolition is fun!"] = "Nedrivning er sjovt!", +-- ["Dense Cloud"] = "", -- A_Classic_Fairytale:backstab, A_Classic_Fairytale:dragon, A_Classic_Fairytale:enemy, A_Classic_Fairytale:epil, A_Classic_Fairytale:family, A_Classic_Fairytale:journey, A_Classic_Fairytale:queen, A_Classic_Fairytale:shadow, A_Classic_Fairytale:united +-- ["Dense Cloud must have already told them everything..."] = "", -- A_Classic_Fairytale:shadow ["Depleted Kamikaze!"] = "Udtømt Kamikaze!", +-- ["Destroy him, Leaks A Lot! He is responsible for the deaths of many of us!"] = "", -- A_Classic_Fairytale:first_blood ["Destroy invaders to score points."] = "Tilintetgør indtrængere for at score point.", +-- ["Destroy the targets!|Hint: Select the Shoryuken and hit [Space]|P.S. You can use it mid-air."] = "", -- A_Classic_Fairytale:first_blood +-- ["Destroy the targets!|Hint: [Up], [Down] to aim, [Space] to shoot"] = "", -- A_Classic_Fairytale:first_blood +-- ["Did anyone follow you?"] = "", -- A_Classic_Fairytale:united +-- ["Did you see him coming?"] = "", -- A_Classic_Fairytale:shadow +-- ["Did you warn the village?"] = "", -- A_Classic_Fairytale:shadow +-- ["Die, die, die!"] = "", -- A_Classic_Fairytale:dragon +-- ["Disguise as a Rockhopper Penguin: [Swap place with a random enemy hog in the circle]"] = "", -- Continental_supplies +-- ["Dist: "] = "", -- Space_Invasion +-- ["Do not laugh, inexperienced one, for he speaks the truth!"] = "", -- A_Classic_Fairytale:backstab +-- ["Do not let his words fool you, young one! He will stab you in the back as soon as you turn away!"] = "", -- A_Classic_Fairytale:first_blood +-- ["Do the deed"] = "", -- A_Classic_Fairytale:first_blood ["Double Kill!"] = "Dobbeltdrab!", +-- ["DOUBLE KILL"] = "", -- Mutant +-- ["Do you have any idea how valuable grass is?"] = "", -- A_Classic_Fairytale:enemy +-- ["Do you think you're some kind of god?"] = "", -- A_Classic_Fairytale:enemy +-- ["Dragon's Lair"] = "", -- A_Classic_Fairytale:dragon +-- ["Drills"] = "", -- A_Classic_Fairytale:backstab ["Drone Hunter!"] = "Dronjæger!", +-- ["Drop a bomb: [drop some heroic wind that will turn into a bomb on impact]"] = "", -- Continental_supplies ["Drowner"] = "Drukner", +-- ["Dude, all the plants are gone!"] = "", -- A_Classic_Fairytale:family +-- ["Dude, can you see Ramon and Spiky?"] = "", -- A_Classic_Fairytale:journey +-- ["Dude, that's so cool!"] = "", -- A_Classic_Fairytale:backstab +-- ["Dude, we really need a new shaman..."] = "", -- A_Classic_Fairytale:shadow +-- ["Dude, what's this place?!"] = "", -- A_Classic_Fairytale:dragon +-- ["Dude, where are we?"] = "", -- A_Classic_Fairytale:backstab +-- ["Dude, wow! I just had the weirdest high!"] = "", -- A_Classic_Fairytale:backstab +-- ["Duration"] = "", -- Continental_supplies +-- ["Dust storm: [Deals 20 damage to all enemies in the circle]"] = "", -- Continental_supplies ["Each turn you get 1-3 random weapons"] = "Hver tur fÃ¥r du 1-3 tilfældige vÃ¥ben", ["Each turn you get one random weapon"] = "Hver tur fÃ¥r du ét tilfældigt vÃ¥ben", +-- ["Eagle Eye"] = "", -- A_Classic_Fairytale:backstab +-- ["Eagle Eye: [Blink to the impact ~ one shot]"] = "", -- Continental_supplies +-- ["Ear Sniffer"] = "", -- A_Classic_Fairytale:backstab, A_Classic_Fairytale:epil +-- ["Elderbot"] = "", -- A_Classic_Fairytale:family +-- ["Elimate your captor."] = "", -- User_Mission_-_The_Great_Escape ["Eliminate all enemies"] = "Eliminer alle fjender", ["Eliminate all targets before your time runs out.|You have unlimited ammo for this mission."] = "Eliminer all mÃ¥l før tiden løber ud.|Du har uendelig ammunition under denne mission.", --Bazooka, Shotgun, SniperRifle +-- ["Eliminate enemy hogs and take their weapons."] = "", -- Highlander ["Eliminate Poison before the time runs out"] = "Eliminer Giften før tiden løber ud", ["Eliminate the Blue Team"] = "Eliminer det BlÃ¥ Hold", ["Eliminate the enemy before the time runs out"] = "Eliminer fjenden før tiden løber ud", -- User_Mission_-_Bamboo_Thicket, User_Mission_-_Newton_and_the_Hammock ["Eliminate the enemy hogs to win."] = "Eliminer fjendens pindsvin for at vinde.", ["Eliminate the enemy specialists."] = "Eliminer fjendens specialister.", ["- Eliminate Unit 3378 |- Feeble Resistance must survive"] = "- Eliminer Enhed 3378 |- Sølle Modstandere skal overleve", +-- ["Elmo"] = "", -- A_Classic_Fairytale:dragon, A_Classic_Fairytale:family, A_Classic_Fairytale:queen ["Energetic Engineer"] = "Energisk Ingeniør", ["Enjoy the swim..."] = "Nyd svømmeturen...", ["[Enter]"] = "[Enter]", +-- ["Europe"] = "", -- Continental_supplies +-- [" ever done to you?!"] = "", -- A_Classic_Fairytale:backstab +-- ["Everyone knows this."] = "", -- A_Classic_Fairytale:enemy +-- ["Every single time!"] = "", -- A_Classic_Fairytale:dragon +-- ["Everything looks OK..."] = "", -- A_Classic_Fairytale:enemy +-- ["Exactly, man! That was my dream."] = "", -- A_Classic_Fairytale:backstab +-- ["Eye Chewer"] = "", -- A_Classic_Fairytale:journey +-- ["FAG"] = "", -- Mutant +-- ["Family Reunion"] = "", -- A_Classic_Fairytale:family ["Fastest lap: "] = "Hurtigste omgang: ", ["Feeble Resistance"] = "Sølle Modstand", +-- ["Fell From Grace"] = "", -- A_Classic_Fairytale:backstab, A_Classic_Fairytale:dragon, A_Classic_Fairytale:enemy, A_Classic_Fairytale:epil, A_Classic_Fairytale:family, A_Classic_Fairytale:queen +-- ["Fell From Heaven"] = "", -- A_Classic_Fairytale:enemy, A_Classic_Fairytale:epil, A_Classic_Fairytale:family, A_Classic_Fairytale:first_blood, A_Classic_Fairytale:journey, A_Classic_Fairytale:queen +-- ["Fell From Heaven is the best! Fell From Heaven is the greatest!"] = "", -- A_Classic_Fairytale:family +-- ["Femur Lover"] = "", -- A_Classic_Fairytale:shadow +-- ["Fierce Competition!"] = "", -- Space_Invasion +-- ["Fiery Water"] = "", -- A_Classic_Fairytale:backstab, A_Classic_Fairytale:dragon, A_Classic_Fairytale:enemy, A_Classic_Fairytale:epil, A_Classic_Fairytale:family, A_Classic_Fairytale:queen, A_Classic_Fairytale:united +-- ["Find your tribe!|Cross the lake!"] = "", -- A_Classic_Fairytale:dragon +-- ["Finish your training|Hint: Animations can be skipped with the [Precise] key."] = "", -- A_Classic_Fairytale:first_blood +-- ["Fire a mine: [Does what it says ~ Cant be dropped close to an enemy ~ 1 sec]"] = "", -- Continental_supplies ["Fire"] = "Skyd", +-- ["First aid kits?!"] = "", -- A_Classic_Fairytale:united +-- ["First Blood"] = "", -- A_Classic_Fairytale:first_blood +-- ["FIRST BLOOD MUTATES"] = "", -- Mutant +-- ["First Steps"] = "", -- A_Classic_Fairytale:first_blood ["Flag captured!"] = "Flag erobred!", ["Flag respawned!"] = "Flag gendannet!", ["Flag returned!"] = "Flag returneret!", ["Flags, and their home base will be placed where each team ends their first turn."] = "Flag og deres hjemmebase bliver placeret der hvor hvert hold afslutter sin første tur.", ["Flamer"] = "Hetzer", +-- ["Flaming Worm"] = "", -- A_Classic_Fairytale:backstab +-- ["Flare: [fire up some bombs depending on hogs depending on hogs in the circle"] = "", -- Continental_supplies +-- ["Flesh for Brainz"] = "", -- A_Classic_Fairytale:journey +-- ["For improved features/stability, play 0.9.18+"] = "", -- WxW +-- ["Free Dense Cloud and continue the mission!"] = "", -- A_Classic_Fairytale:journey ["Friendly Fire!"] = "Egenbeskydning!", ["fuel extended!"] = "brændstof udstrakt!", ["GAME BEGUN!!!"] = "SPILLET ER STARTET!!!", ["Game Modifiers: "] = "Spilmodifikatorere", ["GAME OVER!"] = "SPILLET ER FÆRDIGT!", ["Game Started!"] = "Spillet er Startet!", +-- ["Game? Was this a game to you?!"] = "", -- A_Classic_Fairytale:enemy +-- ["GasBomb"] = "", -- Continental_supplies +-- ["Gas Gargler"] = "", -- A_Classic_Fairytale:queen +-- ["Get Dense Cloud out of the pit!"] = "", -- A_Classic_Fairytale:journey ["Get on over there and take him out!"] = "Kom derover og tag ham ud!", +-- ["Get on the head of the mole"] = "", -- A_Classic_Fairytale:first_blood +-- ["Get out of there!"] = "", -- User_Mission_-_The_Great_Escape +-- ["Get that crate!"] = "", -- A_Classic_Fairytale:first_blood +-- ["Get the crate on the other side of the island!|"] = "", -- A_Classic_Fairytale:journey +-- ["Get to the target using your rope! |Controls: Left & Right to swing the rope - Up & Down to Contract and Expand!"] = "", -- Basic_Training_-_Rope +-- ["Get your teammates out of their natural prison and save the princess!|Hint: Drilling holes should solve everything.|Hint: It might be a good idea to place a girder before starting to drill. Just saying.|Hint: All your hedgehogs need to be above the marked height!|Hint: Leaks A Lot needs to get really close to the princess!"] = "", -- A_Classic_Fairytale:family +-- ["GG!"] = "", -- User_Mission_-_Rope_Knock_Challenge +-- ["Gimme Bones"] = "", -- A_Classic_Fairytale:backstab +-- ["Glark"] = "", -- A_Classic_Fairytale:shadow ["Goal"] = "MÃ¥l", ["GO! GO! GO!"] = "GO! GO! GO!", ["Good birdy......"] = "God pipfugl......", +-- ["Good Dude"] = "", -- User_Mission_-_The_Great_Escape +-- ["Good idea, they'll never find us there!"] = "", -- A_Classic_Fairytale:united +-- ["Good luck...or else!"] = "", -- A_Classic_Fairytale:journey ["Good luck out there!"] = "Held og lykke derude!", ["Good so far!"] = "Godt indtil videre!", ["Good to go!"] = "Klar!", +-- ["Go on top of the flower"] = "", -- A_Classic_Fairytale:first_blood +-- ["Go, quick!"] = "", -- A_Classic_Fairytale:backstab +-- ["Gorkij"] = "", -- A_Classic_Fairytale:journey +-- ["Go surf!"] = "", -- WxW ["GOTCHA!"] = "FIK DIG!", ["Grab Mines/Explosives"] = "Snup Miner/Sprængstof", +-- ["Great choice, Steve! Mind if I call you that?"] = "", -- A_Classic_Fairytale:shadow +-- ["Great work! Now hit it with your Baseball Bat! |Tip: You can change weapon with 'Right Click'!"] = "", -- Basic_Training_-_Rope +-- ["Great! You will be contacted soon for assistance."] = "", -- A_Classic_Fairytale:shadow +-- ["Green lipstick bullet: [Is poisonous]"] = "", -- Continental_supplies +-- ["Greetings, "] = "", -- A_Classic_Fairytale:dragon +-- ["Greetings, cloudy one!"] = "", -- A_Classic_Fairytale:shadow +-- ["Grenade Training"] = "", -- Basic_Training_-_Grenade +-- ["Grenadiers"] = "", -- Basic_Training_-_Grenade +-- ["Guys, do you think there's more of them?"] = "", -- A_Classic_Fairytale:backstab +-- ["HAHA!"] = "", -- A_Classic_Fairytale:enemy +-- ["Haha!"] = "", -- A_Classic_Fairytale:united ["Hahahaha!"] = "Hahahaha!", ["Haha, now THAT would be something!"] = "Haha, ja DET ville være noget!", - ["Hapless Hogs"] = "Uheldige Pindsvin", +-- ["Hannibal"] = "", -- A_Classic_Fairytale:epil [" Hapless Hogs left!"] = " Uheldige Pindsvin gik!", + ["Hapless Hogs"] = "Uheldige Pindsvin", +-- [" HAS MUTATED\" )"] = "", -- +-- ["Hatless Jerry"] = "", -- A_Classic_Fairytale:queen +-- ["Have no illusions, your tribe is dead, indifferent of your choice."] = "", -- A_Classic_Fairytale:shadow +-- ["Have we ever attacked you first?"] = "", -- A_Classic_Fairytale:enemy ["Health crates extend your time."] = "Kasse med helbredelse forlænger din tid.", +-- ["Heavy Cannfantry"] = "", -- A_Classic_Fairytale:united ["Heavy"] = "Tung", +-- ["Hedge-cogs"] = "", -- A_Classic_Fairytale:enemy +-- ["Hedgehog projectile: [fire your hog like a Sticky Bomb]"] = "", -- Continental_supplies ["Hedgewars-Basketball"] = "Hedgewars-Basketball", ["Hedgewars-Knockball"] = "Hedgewars-Knockball", +-- ["Hedgibal Lecter"] = "", -- A_Classic_Fairytale:backstab ["Heh, it's not that bad."] = "Heh, det er ikke sÃ¥ slemt.", +-- ["Hello again, "] = "", -- A_Classic_Fairytale:family +-- ["Help me, Leaks!"] = "", -- A_Classic_Fairytale:journey +-- ["Help me, please!!!"] = "", -- A_Classic_Fairytale:journey +-- ["Help me, please!"] = "", -- A_Classic_Fairytale:journey +-- ["He moves like an eagle in the sky."] = "", -- A_Classic_Fairytale:first_blood +-- ["He must be in the village already."] = "", -- A_Classic_Fairytale:journey +-- ["Here, let me help you!"] = "", -- A_Classic_Fairytale:backstab +-- ["Here, let me help you save her!"] = "", -- A_Classic_Fairytale:family +-- ["Here...pick your weapon!"] = "", -- A_Classic_Fairytale:first_blood +-- ["Hero Team"] = "", -- User_Mission_-_The_Great_Escape +-- ["He's so brave..."] = "", -- A_Classic_Fairytale:first_blood +-- ["He won't be selling us out anymore!"] = "", -- A_Classic_Fairytale:backstab +-- ["Hey, guys!"] = "", -- A_Classic_Fairytale:backstab +-- ["Hey guys!"] = "", -- A_Classic_Fairytale:united +-- ["Hey! This is cheating!"] = "", -- A_Classic_Fairytale:journey +-- ["HIGHLANDER"] = "", -- Highlander +-- ["Hightime"] = "", -- A_Classic_Fairytale:first_blood +-- ["Hint: Double Jump - Press [Backspace] twice"] = "", -- A_Classic_Fairytale:first_blood +-- ["Hint: Select the BlowTorch, aim and press [Fire]. Press [Fire] again to stop.|Don't blow up the crate."] = "", -- A_Classic_Fairytale:journey +-- ["Hint: Select the LowGravity and press [Fire]."] = "", -- A_Classic_Fairytale:journey +-- ["Hint: you might want to stay out of sight and take all the crates...|"] = "", -- A_Classic_Fairytale:journey +-- ["His arms are so strong!"] = "", -- A_Classic_Fairytale:first_blood ["Hit Combo!"] = "Slagkombi!", +-- ["Hmmm...actually...I didn't either."] = "", -- A_Classic_Fairytale:enemy ["Hmmm..."] = "Hmmm...", +-- ["Hmmm, I'll have to find some way of moving him off this anti-portal surface..."] = "", -- portal +-- ["Hmmm...it's a draw. How unfortunate!"] = "", -- A_Classic_Fairytale:enemy +-- ["Hmmm...perhaps a little more time will help."] = "", -- A_Classic_Fairytale:first_blood +-- ["Hogminator"] = "", -- A_Classic_Fairytale:family +-- ["Hogs in sight!"] = "", -- Continental_supplies +-- ["HOLY SHIT!"] = "", -- Mutant +-- ["Honest Lee"] = "", -- A_Classic_Fairytale:enemy ["Hooray!"] = "Hurra!", +-- ["Hostage Situation"] = "", -- A_Classic_Fairytale:family +-- ["How can I ever repay you for saving my life?"] = "", -- A_Classic_Fairytale:journey +-- ["How come in a village full of warriors, it's up to me to save it?"] = "", -- A_Classic_Fairytale:dragon +-- ["How difficult would you like it to be?"] = "", -- A_Classic_Fairytale:first_blood +-- ["HOW DO THEY KNOW WHERE WE ARE???"] = "", -- A_Classic_Fairytale:united +-- ["However, if you fail to do so, she dies a most violent death, just like your friend! Muahahaha!"] = "", -- A_Classic_Fairytale:journey +-- ["However, if you fail to do so, she dies a most violent death! Muahahaha!"] = "", -- A_Classic_Fairytale:journey +-- ["However, my mates don't agree with me on letting you go..."] = "", -- A_Classic_Fairytale:dragon +-- [" HP"] = "", -- Mutant ["Hunter"] = "Jæger", --Bazooka, Shotgun, SniperRifle +-- ["I believe there's more of them."] = "", -- A_Classic_Fairytale:backstab +-- ["I can see you have been training diligently."] = "", -- A_Classic_Fairytale:first_blood +-- ["I can't believe it worked!"] = "", -- A_Classic_Fairytale:shadow +-- ["I can't believe this!"] = "", -- A_Classic_Fairytale:enemy +-- ["I can't believe what I'm hearing!"] = "", -- A_Classic_Fairytale:backstab +-- ["I can't wait any more, I have to save myself!"] = "", -- A_Classic_Fairytale:shadow +-- ["I could just teleport myself there..."] = "", -- A_Classic_Fairytale:family +-- ["I'd better get going myself."] = "", -- A_Classic_Fairytale:journey +-- ["I didn't until about a month ago."] = "", -- A_Classic_Fairytale:enemy +-- ["I don't know how you did that.. But good work! |The next one should be easy as cake for you!"] = "", -- Basic_Training_-_Rope +-- ["I feel something...a place! They will arrive near the circles!"] = "", -- A_Classic_Fairytale:backstab +-- ["If only I had a way..."] = "", -- A_Classic_Fairytale:backstab +-- ["If only I were given a chance to explain my being here..."] = "", -- A_Classic_Fairytale:first_blood +-- ["I forgot that she's the daughter of the chief, too..."] = "", -- A_Classic_Fairytale:backstab +-- ["If they try coming here, they can have a taste of my delicious knuckles!"] = "", -- A_Classic_Fairytale:united +-- ["If you agree to provide the information we need, you will be spared!"] = "", -- A_Classic_Fairytale:shadow +-- ["If you can get that crate fast enough, your beloved \"princess\" may go free."] = "", -- A_Classic_Fairytale:journey +-- ["If you decide to help us, though, we will no longer need to find a new governor for the island."] = "", -- A_Classic_Fairytale:shadow +-- ["If you get stuck, use your Desert Eagle or restart the mission!|"] = "", -- A_Classic_Fairytale:journey +-- ["If you know what I mean..."] = "", -- A_Classic_Fairytale:shadow +-- ["If you say so..."] = "", -- A_Classic_Fairytale:shadow +-- ["If you wish to restart the course, hold [Precise] while your turn ends (e.g with Skip)"] = "", -- +-- ["I guess you'll have to kill them."] = "", -- A_Classic_Fairytale:dragon +-- ["I have come to make you an offering..."] = "", -- A_Classic_Fairytale:shadow +-- ["I have no idea where that mole disappeared...Can you see it?"] = "", -- A_Classic_Fairytale:shadow +-- ["I have to follow that alien."] = "", -- A_Classic_Fairytale:backstab +-- ["I have to get back to the village!"] = "", -- A_Classic_Fairytale:shadow +-- ["I hope you are prepared for a small challenge, young one."] = "", -- A_Classic_Fairytale:first_blood +-- ["I just don't want to sink to your level."] = "", -- A_Classic_Fairytale:backstab +-- ["I just found out that they have captured your princess!"] = "", -- A_Classic_Fairytale:family +-- ["I just wonder where Ramon and Spiky disappeared..."] = "", -- A_Classic_Fairytale:journey +-- ["I'll hold them off while you return to the village!"] = "", -- A_Classic_Fairytale:shadow +-- ["Imagine those targets are the wolves that killed your parents! Take your anger out on them!"] = "", -- A_Classic_Fairytale:first_blood +-- ["I'm...alive? How? Why?"] = "", -- A_Classic_Fairytale:backstab +-- ["I'm a ninja."] = "", -- A_Classic_Fairytale:dragon +-- ["I marked the place of their arrival. You're welcome!"] = "", -- A_Classic_Fairytale:backstab +-- ["I'm certain that this is a misunderstanding, fellow hedgehogs!"] = "", -- A_Classic_Fairytale:first_blood +-- ["I mean, none of you ceased to live."] = "", -- A_Classic_Fairytale:enemy +-- ["I'm getting old for this!"] = "", -- A_Classic_Fairytale:family +-- ["I'm getting thirsty..."] = "", -- A_Classic_Fairytale:family +-- ["I'm here to help you rescue her."] = "", -- A_Classic_Fairytale:family +-- ["I'm not sure about that!"] = "", -- A_Classic_Fairytale:united +-- ["Impressive...you are still dry as the corpse of a hawk after a week in the desert..."] = "", -- A_Classic_Fairytale:first_blood +-- ["I'm so scared!"] = "", -- A_Classic_Fairytale:united +-- ["Incredible..."] = "", -- A_Classic_Fairytale:shadow +-- ["I need to find the others!"] = "", -- A_Classic_Fairytale:backstab +-- ["I need to get to the other side of this island, fast!"] = "", -- A_Classic_Fairytale:journey +-- ["I need to move the tribe!"] = "", -- A_Classic_Fairytale:united +-- ["I need to prevent their arrival!"] = "", -- A_Classic_Fairytale:backstab +-- ["I need to warn the others."] = "", -- A_Classic_Fairytale:backstab +-- ["In fact, you are the only one that's been acting strangely."] = "", -- A_Classic_Fairytale:backstab +-- ["In order to get to the other side, you need to collect the crates first.|"] = "", -- A_Classic_Fairytale:dragon ["Instructor"] = "Instruktør", -- 01#Boot_Camp, User_Mission_-_Dangerous_Ducklings +-- ["Interesting idea, haha!"] = "", -- A_Classic_Fairytale:enemy +-- ["Interesting! Last time you said you killed a cannibal!"] = "", -- A_Classic_Fairytale:backstab +-- ["In the meantime, take these and return to your \"friend\"!"] = "", -- A_Classic_Fairytale:shadow ["invaders destroyed"] = "indtrængere tilintetgjorte", +-- ["Invasion"] = "", -- A_Classic_Fairytale:united +-- ["I saw it with my own eyes!"] = "", -- A_Classic_Fairytale:shadow +-- ["I see..."] = "", -- A_Classic_Fairytale:shadow +-- ["I see you have already taken the leap of faith."] = "", -- A_Classic_Fairytale:first_blood +-- ["I see you would like his punishment to be more...personal..."] = "", -- A_Classic_Fairytale:first_blood +-- ["I sense another wave of cannibals heading my way!"] = "", -- A_Classic_Fairytale:backstab +-- ["I sense another wave of cannibals heading our way!"] = "", -- A_Classic_Fairytale:backstab +-- ["I shouldn't have drunk that last pint."] = "", -- A_Classic_Fairytale:dragon +-- ["Is this place in my head?"] = "", -- A_Classic_Fairytale:dragon +-- ["It doesn't matter. I won't let that alien hurt my daughter!"] = "", -- A_Classic_Fairytale:dragon +-- ["I think we are safe here."] = "", -- A_Classic_Fairytale:backstab +-- ["I thought their shaman died when he tried our medicine!"] = "", -- A_Classic_Fairytale:shadow +-- ["It is called 'Hogs of Steel'."] = "", -- A_Classic_Fairytale:enemy +-- ["It is time to practice your fighting skills."] = "", -- A_Classic_Fairytale:first_blood +-- ["It must be a childhood trauma..."] = "", -- A_Classic_Fairytale:family +-- ["It must be the aliens!"] = "", -- A_Classic_Fairytale:backstab +-- ["It must be the aliens' deed."] = "", -- A_Classic_Fairytale:backstab +-- ["It must be the cyborgs again!"] = "", -- A_Classic_Fairytale:enemy +-- ["I told you, I just found them."] = "", -- A_Classic_Fairytale:backstab ["It's a good thing SUDDEN DEATH is 99 turns away..."] = "Det er heldigt at PLUDSELIG DØD er 99 ture væk...", +-- ["It's always up to women to clear up the mess men created!"] = "", -- A_Classic_Fairytale:dragon +-- ["It's a shame, I forgot how to do that!"] = "", -- A_Classic_Fairytale:family +-- ["It's impossible to communicate with the spirits without a shaman."] = "", -- A_Classic_Fairytale:shadow +-- ["It's over..."] = "", -- A_Classic_Fairytale:shadow +-- ["It's time you learned that your actions have consequences!"] = "", -- A_Classic_Fairytale:journey +-- ["It's worth more than wood!"] = "", -- A_Classic_Fairytale:enemy +-- ["It wants our brains!"] = "", -- A_Classic_Fairytale:shadow +-- ["It was not a dream, unwise one!"] = "", -- A_Classic_Fairytale:backstab +-- ["I've seen this before. They just appear out of thin air."] = "", -- A_Classic_Fairytale:united +-- ["I want to play a game..."] = "", -- A_Classic_Fairytale:journey +-- ["I want to see how it handles this!"] = "", -- A_Classic_Fairytale:backstab +-- ["I wish to help you, "] = "", -- A_Classic_Fairytale:dragon +-- ["I wonder where Dense Cloud is..."] = "", -- A_Classic_Fairytale:journey, A_Classic_Fairytale:shadow +-- ["I wonder why I'm so angry all the time..."] = "", -- A_Classic_Fairytale:family +-- ["I won't let you kill her!"] = "", -- A_Classic_Fairytale:journey +-- ["Jack"] = "", -- A_Classic_Fairytale:dragon, A_Classic_Fairytale:family, A_Classic_Fairytale:queen +-- ["Jeremiah"] = "", -- A_Classic_Fairytale:dragon +-- ["John"] = "", -- A_Classic_Fairytale:journey +-- ["Judas"] = "", -- A_Classic_Fairytale:backstab ["Jumping is disabled"] = "Hop er deaktiveret", +-- ["Just kidding, none of you have died!"] = "", -- A_Classic_Fairytale:enemy +-- ["Just on a walk."] = "", -- A_Classic_Fairytale:united +-- ["Just wait till I get my hands on that trauma! ARGH!"] = "", -- A_Classic_Fairytale:family ["Kamikaze Expert!"] = "Kamikaze-ekspert!", ["Keep it up!"] = "Hold gejsten!", +-- ["Kerguelen"] = "", -- Continental_supplies ["Killing spree!"] = "Drabsorgie!", +-- ["KILL IT!"] = "", -- A_Classic_Fairytale:first_blood ["KILLS"] = "DRAB", +-- ["Kill the aliens!"] = "", -- A_Classic_Fairytale:dragon +-- ["Kill the cannibal!"] = "", -- A_Classic_Fairytale:first_blood +-- ["Kill the traitor...or spare his life!|Kill him or press [Precise]!"] = "", -- A_Classic_Fairytale:backstab ["Last Target!"] = "Sidste MÃ¥l!", +-- ["Leader"] = "", -- A_Classic_Fairytale:enemy +-- ["Leaderbot"] = "", -- A_Classic_Fairytale:queen +-- ["Leaks A Lot"] = "", -- A_Classic_Fairytale:backstab, A_Classic_Fairytale:dragon, A_Classic_Fairytale:enemy, A_Classic_Fairytale:epil, A_Classic_Fairytale:family, A_Classic_Fairytale:first_blood, A_Classic_Fairytale:journey, A_Classic_Fairytale:queen, A_Classic_Fairytale:shadow, A_Classic_Fairytale:united +-- ["Leaks A Lot, depressed for killing his loved one, failed to save the village..."] = "", -- A_Classic_Fairytale:journey +-- ["Leaks A Lot gave his life for his tribe! He should have survived!"] = "", -- A_Classic_Fairytale:first_blood +-- ["Leaks A Lot must survive!"] = "", -- A_Classic_Fairytale:journey +-- ["Led Heart"] = "", -- A_Classic_Fairytale:queen +-- ["Lee"] = "", -- A_Classic_Fairytale:dragon, A_Classic_Fairytale:family, A_Classic_Fairytale:queen ["[Left Shift]"] = "[Venstre Shift]", +-- ["Let a Continent provide your weapons!"] = "", -- Continental_supplies +-- ["Let me test your skills a little, will you?"] = "", -- A_Classic_Fairytale:journey +-- ["Let's go home!"] = "", -- A_Classic_Fairytale:journey +-- ["Let's head back to the village!"] = "", -- A_Classic_Fairytale:shadow +-- ["Let's see what your comrade does now!"] = "", -- A_Classic_Fairytale:journey +-- ["Let's show those cannibals what we're made of!"] = "", -- A_Classic_Fairytale:backstab +-- ["Let them have a taste of my fury!"] = "", -- A_Classic_Fairytale:backstab +-- ["Let us help, too!"] = "", -- A_Classic_Fairytale:backstab +-- ["Light Cannfantry"] = "", -- A_Classic_Fairytale:united ["Listen up, maggot!!"] = "Lyt efter, maddike!", +-- ["Little did they know that this hunt will mark them forever..."] = "", -- A_Classic_Fairytale:shadow ["Lively Lifeguard"] = "Livlig Livredder", +-- ["Lonely Cries: [Rise the water if no hog is in the circle and deal 1 damage to all hogs]"] = "", -- Continental_supplies +-- ["Look, I had no choice!"] = "", -- A_Classic_Fairytale:backstab +-- ["Look out! There's more of them!"] = "", -- A_Classic_Fairytale:backstab +-- ["Look out! We're surrounded by cannibals!"] = "", -- A_Classic_Fairytale:enemy +-- ["Looks like the whole world is falling apart!"] = "", -- A_Classic_Fairytale:enemy +-- ["Luckily, I've managed to snatch some of them."] = "", -- A_Classic_Fairytale:united +-- ["LUDICROUS KILL"] = "", -- Mutant +-- ["May the spirits aid you in all your quests!"] = "", -- A_Classic_Fairytale:backstab +-- ["Medicine: [Fire some exploding medicine that will heal all hogs effected by the explosion]"] = "", -- Continental_supplies +-- ["MEGA KILL"] = "", -- Mutant +-- ["Meiwes"] = "", -- A_Classic_Fairytale:backstab +-- ["Mindy"] = "", -- A_Classic_Fairytale:united ["Mine Deployer"] = "Mineudsætter", ["Mine Eater!"] = "Mineæder", ["|- Mines Time:"] = "|- Tid til Miner:", -- User_Mission_-_Diver, User_Mission_-_Spooky_Tree, User_Mission_-_Teamwork ["MISSION FAILED"] = "MISSION MISLYKKEDES", -- User_Mission_-_Dangerous_Ducklings, User_Mission_-_Diver, User_Mission_-_Spooky_Tree, User_Mission_-_Teamwork + ["MISSION SUCCESSFUL"] = "MISSION VAR SUCCESFULD", -- User_Mission_-_Diver, User_Mission_-_Spooky_Tree, User_Mission_-_Teamwork ["MISSION SUCCESS"] = "MISSION LYKKEDES", - ["MISSION SUCCESSFUL"] = "MISSION VAR SUCCESFULD", -- User_Mission_-_Diver, User_Mission_-_Spooky_Tree, User_Mission_-_Teamwork +-- ["Molotov"] = "", -- Continental_supplies +-- ["MONSTER KILL"] = "", -- Mutant +-- ["More Natives"] = "", -- A_Classic_Fairytale:epil ["Movement: [Up], [Down], [Left], [Right]"] = "Bevægelse: [Op], [Ned], [Venstre], [Højre]", ["Multi-shot!"] = "Flerskud!", +-- ["Muriel"] = "", -- A_Classic_Fairytale:backstab, A_Classic_Fairytale:dragon, A_Classic_Fairytale:family, A_Classic_Fairytale:queen +-- ["Muscle Dissolver"] = "", -- A_Classic_Fairytale:shadow +-- ["-------"] = "", -- Mutant +-- ["Nade Boy"] = "", -- Basic_Training_-_Grenade +-- ["Name"] = "", -- A_Classic_Fairytale:queen ["Nameless Heroes"] = "Navnløse Helte", +-- ["Nancy Screw"] = "", -- A_Classic_Fairytale:enemy, A_Classic_Fairytale:queen +-- ["Napalm rocket: [Fire a bomb with napalm!]"] = "", -- Continental_supplies +-- ["Natives"] = "", -- A_Classic_Fairytale:backstab, A_Classic_Fairytale:dragon, A_Classic_Fairytale:enemy, A_Classic_Fairytale:epil, A_Classic_Fairytale:family, A_Classic_Fairytale:first_blood, A_Classic_Fairytale:journey, A_Classic_Fairytale:queen, A_Classic_Fairytale:shadow, A_Classic_Fairytale:united ["New Barrels Per Turn"] = "Nye Tønder Per Tur", ["NEW CLAN RECORD: "] = "NY KLANREKORD: ", ["NEW fastest lap: "] = "NY hurtigste omgang: ", ["New Mines Per Turn"] = "Nyt Antal Miner Per Tur", ["NEW RACE RECORD: "] = "NY RÆSREKORD: ", ["Newton's Hammock"] = "Newtons Hængekøje", +-- ["Nicely done, meatbags!"] = "", -- A_Classic_Fairytale:enemy +-- ["Nice work, "] = "", -- A_Classic_Fairytale:dragon +-- ["Nice work!"] = "", -- A_Classic_Fairytale:enemy +-- ["Nilarian"] = "", -- A_Classic_Fairytale:queen +-- ["No, I came back to help you out..."] = "", -- A_Classic_Fairytale:shadow +-- ["No...I wonder where they disappeared?!"] = "", -- A_Classic_Fairytale:journey +-- ["Nom-Nom"] = "", -- A_Classic_Fairytale:journey +-- ["NomNom"] = "", -- A_Classic_Fairytale:united +-- ["Nope. It was one fast mole, that's for sure."] = "", -- A_Classic_Fairytale:shadow +-- ["No! Please, help me!"] = "", -- A_Classic_Fairytale:journey +-- ["NORMAL"] = "", -- Continental_supplies +-- ["North America"] = "", -- Continental_supplies +-- ["Not all hogs are born equal."] = "", -- Highlander ["NOT ENOUGH WAYPOINTS"] = "IKKE NOK RUTEPUNKTER", +-- ["Not now, Fiery Water!"] = "", -- A_Classic_Fairytale:backstab ["Not So Friendly Match"] = "Ikke SÃ¥ Venlig Kamp", -- Basketball, Knockball +-- ["Not you again! My head still hurts from last time!"] = "", -- A_Classic_Fairytale:shadow +-- ["No, we made sure of that!"] = "", -- A_Classic_Fairytale:united +-- ["Now find the next target! |Tip: Normally you lose health by falling down, so be careful!"] = "", -- Basic_Training_-_Rope +-- ["No! What have I done?! What have YOU done?!"] = "", -- A_Classic_Fairytale:journey +-- ["No. Where did he come from?"] = "", -- A_Classic_Fairytale:shadow +-- ["Now how do I get on the other side?!"] = "", -- A_Classic_Fairytale:dragon +-- ["No. You and the rest of the tribe are safer there!"] = "", -- A_Classic_Fairytale:backstab +-- ["Obliterate them!|Hint: You might want to take cover..."] = "", -- A_Classic_Fairytale:shadow +-- ["Obstacle course"] = "", -- A_Classic_Fairytale:dragon +-- ["Of course I have to save her. What did I expect?!"] = "", -- A_Classic_Fairytale:family +-- ["OH, COME ON!"] = "", -- A_Classic_Fairytale:journey +-- ["Oh, my!"] = "", -- A_Classic_Fairytale:first_blood +-- ["Oh, my! This is even more entertaining than I've expected!"] = "", -- A_Classic_Fairytale:backstab ["Oh no! Just try again!"] = "Ã…h nej! Bare prøv igen!", -- User_Mission_-_Diver, User_Mission_-_Spooky_Tree, User_Mission_-_Teamwork +-- ["Oh no, not "] = "", -- A_Classic_Fairytale:backstab, A_Classic_Fairytale:united ["Oh no! Time's up! Just try again."] = "Ã…h nej! Tiden er løbet ud! Bare prøv igen.", --Bazooka, Shotgun, SniperRifle +-- ["Oh no! You failed! Just try again."] = "", -- Basic_Training_-_Cluster_Bomb +-- ["Oh, silly me! I forgot that I'm the shaman."] = "", -- A_Classic_Fairytale:backstab +-- ["Olive"] = "", -- A_Classic_Fairytale:united +-- ["Omnivore"] = "", -- A_Classic_Fairytale:first_blood +-- ["Once upon a time, on an island with great natural resources, lived two tribes in heated conflict..."] = "", -- A_Classic_Fairytale:first_blood +-- ["ONE HOG PER TEAM! KILLING EXCESS HEDGES"] = "", -- Mutant +-- ["One tribe was peaceful, spending their time hunting and training, enjoying the small pleasures of life..."] = "", -- A_Classic_Fairytale:first_blood +-- ["Oops...I dropped them."] = "", -- A_Classic_Fairytale:united +-- ["Open that crate and we will continue!"] = "", -- A_Classic_Fairytale:first_blood ["Operation Diver"] = "Operation Dykker", ["Opposing Team: "] = "Modstander: ", +-- ["Orlando Boom!"] = "", -- A_Classic_Fairytale:queen +-- ["Ouch!"] = "", -- User_Mission_-_Rope_Knock_Challenge +-- ["Our tribe, our beautiful island!"] = "", -- A_Classic_Fairytale:enemy +-- ["Parachute"] = "", -- Continental_supplies ["Pathetic Hog #%d"] = "Patetisk Pindsvin #%d", ["Pathetic Resistance"] = "Patetisk Modstand", -- User_Mission_-_Bamboo_Thicket, User_Mission_-_Newton_and_the_Hammock +-- ["Perfect! Now try to get the next crate without hurting yourself!"] = "", -- A_Classic_Fairytale:first_blood ["Per-Hog Ammo"] = "Ammunition Per Pindsvin", +-- ["- Per team weapons|- 9 weaponschemes|- Unique new weapons| |Select continent first round with the Weapon Menu or by ([switch/tab]=Increase,[presice/left shift]=Decrease)"] = "", -- +-- ["Pfew! That was close!"] = "", -- A_Classic_Fairytale:shadow +-- ["Piñata bullet: [Contains some sweet candy!]"] = "", -- Continental_supplies +-- ["Pings left:"] = "", -- Space_Invasion ["Place more waypoints using [ENTER]"] = "Placer flere rutepunkter med [ENTER]", ["Place more waypoints using the 'Air Attack' weapon."] = "Placer flere rutepunkter med 'Luftangreb'-vÃ¥bnet", +-- ["Planes Used:"] = "", -- User_Mission_-_RCPlane_Challenge +-- ["Planes Used"] = "", -- User_Mission_-_RCPlane_Challenge +-- ["Play with me!"] = "", -- A_Classic_Fairytale:shadow +-- ["Please place the way-point further from the waterline."] = "", -- Racer +-- ["Please place the way-point in the open, within the map boundaries."] = "", -- Racer +-- ["Please, stop releasing your \"smoke signals\"!"] = "", -- A_Classic_Fairytale:shadow +-- ["Point Blank Combo!"] = "", -- Space_Invasion ["points"] = "point", -- Control, CTF_Blizzard, Basic_Training_-_Bazooka, Basic_Training_-_Shotgun, Basic_Training_-_Sniper_Rifle ["Poison"] = "Gift", +-- ["Portal hint: one goes to the destination, and one is the entrance.|"] = "", -- A_Classic_Fairytale:dragon +-- ["Portal mission"] = "", -- portal ["Power Remaining"] = "Kraft Tilbage", ["Prepare yourself"] = "Gør dig klar", +-- ["Press [Enter] to accept this configuration."] = "", -- WxW +-- ["Press [Left] or [Right] to move around, [Enter] to jump"] = "", -- A_Classic_Fairytale:first_blood ["Press [Precise] to skip intro"] = "Tryk pÃ¥ [Præcis] for at springe introen over", +-- ["Private Novak"] = "", -- Basic_Training_-_Cluster_Bomb +-- ["Protect yourselves!|Grenade hint: set the timer with [1-5], aim with [Up]/[Down] and hold [Space] to set power"] = "", -- A_Classic_Fairytale:shadow ["Race complexity limit reached."] = "Kompleksitetsgrænsen for ræset er nÃ¥et.", ["RACER"] = "RACER", +-- ["Rachel"] = "", -- A_Classic_Fairytale:dragon, A_Classic_Fairytale:family, A_Classic_Fairytale:queen +-- ["Radar Ping"] = "", -- Space_Invasion +-- ["Raging Buffalo"] = "", -- A_Classic_Fairytale:backstab, A_Classic_Fairytale:dragon, A_Classic_Fairytale:enemy, A_Classic_Fairytale:epil, A_Classic_Fairytale:family, A_Classic_Fairytale:queen, A_Classic_Fairytale:united +-- ["Ramon"] = "", -- A_Classic_Fairytale:enemy, A_Classic_Fairytale:epil, A_Classic_Fairytale:family, A_Classic_Fairytale:queen, A_Classic_Fairytale:shadow +-- ["RC PLANE TRAINING"] = "", -- User_Mission_-_RCPlane_Challenge +-- ["Really?! You thought you could harm me with your little toys?"] = "", -- A_Classic_Fairytale:shadow +-- ["Regurgitator"] = "", -- A_Classic_Fairytale:backstab +-- ["Reinforcements"] = "", -- A_Classic_Fairytale:backstab +-- ["Remember: The rope only bend around objects, |if it doesn't hit anything it's always stright!"] = "", -- Basic_Training_-_Rope +-- ["Remember this, pathetic animal: when the day comes, you will regret your blind loyalty!"] = "", -- A_Classic_Fairytale:shadow [" - 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"] = " - Returner fjendens flag til din base for at score | - Første hold til at erobre 3 flag vinder | - Du kan kun score nÃ¥r dit flag er ved din base | Pindsvin taber flaget hvis de dør eller drukner | - Tabte flag kan returneres eller generobres | - Pindsvin genopliver nÃ¥r de bliver dræbt", +-- ["Return to Leaks A Lot! If you get stuck, press [Precise] to try again!"] = "", -- A_Classic_Fairytale:shadow +-- ["Righteous Beard"] = "", -- A_Classic_Fairytale:backstab, A_Classic_Fairytale:dragon, A_Classic_Fairytale:enemy, A_Classic_Fairytale:epil, A_Classic_Fairytale:family, A_Classic_Fairytale:first_blood, A_Classic_Fairytale:queen, A_Classic_Fairytale:united +-- ["ROPE-KNOCKING"] = "", -- User_Mission_-_Rope_Knock_Challenge +-- ["Rope Training"] = "", -- Basic_Training_-_Rope +-- ["Rot Molester"] = "", -- A_Classic_Fairytale:shadow ["Round Limit:"] = "Rundebegrænsning: ", ["Round Limit"] = "Rundebegrænsning", ["Rounds Complete: "] = "Runder Færdiggjort: ", ["Rounds Complete"] = "Runder Færdiggjort", ["RULES OF THE GAME [Press ESC to view]"] = "SPILLETS REGLER [Tryk pÃ¥ ESC for at se]", - ["s|"] = "s|", +-- ["Rusty Joe"] = "", -- A_Classic_Fairytale:queen +-- ["Sabotage: [Sabotage all hogs in the circle and deal ~10 dmg]"] = "", -- Continental_supplies +-- ["Salivaslurper"] = "", -- A_Classic_Fairytale:united +-- ["Salvation"] = "", -- A_Classic_Fairytale:family +-- ["Salvation was one step closer now..."] = "", -- A_Classic_Fairytale:dragon ["Save as many hapless hogs as possible!"] = "Red sÃ¥ mange uheldige pindsvin som muligt!", +-- ["Save Fell From Heaven!"] = "", -- A_Classic_Fairytale:journey +-- ["Save Leaks A Lot!|Hint: The Switch utility might be of help to you."] = "", -- A_Classic_Fairytale:shadow +-- ["Save the princess! All your hogs must survive!|Hint: Kill the cyborgs first! Use the ammo very carefully!|Hint: You might want to spare a girder for cover!"] = "", -- A_Classic_Fairytale:family +-- ["Save the princess by collecting the crate in under 12 turns!"] = "", -- A_Classic_Fairytale:journey +-- ["Scalp Muncher"] = "", -- A_Classic_Fairytale:backstab +-- ["Score"] = "", -- Mutant ["SCORE"] = "SCORE", +-- ["Scream from a Walrus: [Deal 20 damage + 10% of your hogs health to all hogs around you and get half back]"] = "", -- Continental_supplies ["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 +-- ["Seduction"] = "", -- Continental_supplies +-- ["Seems like every time you take a \"walk\", the enemy find us!"] = "", -- A_Classic_Fairytale:backstab +-- ["See that crate farther on the right?"] = "", -- A_Classic_Fairytale:first_blood ["See ya!"] = "Ses!", +-- ["Segmentation Paul"] = "", -- A_Classic_Fairytale:dragon +-- ["Select continent!"] = "", -- Continental_supplies +-- ["Select difficulty: [Left] - easier or [Right] - harder"] = "", -- A_Classic_Fairytale:first_blood ["selected!"] = "valgt", - ["s"] = "s", -- GaudyRacer, Space_Invasion +-- ["... share your beauty with the world every morning, my princess!"] = "", -- A_Classic_Fairytale:journey +-- ["She's behind that tall thingy."] = "", -- A_Classic_Fairytale:family ["Shield boosted! +30 power"] = "Skjold forstærket! +30 kraft", ["Shield Depleted"] = "Skjold Udtømt", ["Shield is fully recharged!"] = "Skjold er fuldt genopladt!", @@ -162,59 +644,340 @@ ["Shield OFF:"] = "Skjold SLÃ…ET FRA:", ["Shield ON:"] = "Skjold SLÃ…ET TIL:", ["Shield Seeker!"] = "Skjoldsøger!", +-- ["Shotgun"] = "", -- Continental_supplies ["Shotgun Team"] = "Haglgeværdshold", ["Shotgun Training"] = "Træning med Haglgevær", ["shots remaining."] = "skud tilbage.", ["Silly"] = "Fjollet", ["Sinky"] = "Synkende", +-- ["Sirius Lee"] = "", -- A_Classic_Fairytale:enemy ["%s is out and Team %d|scored a penalty!| |Score:"] = "%s er ude og Hold %d|scored en straf!| |Score:", -- Basketball, Knockball ["%s is out and Team %d|scored a point!| |Score:"] = "%s er ude og Hold %d|scored et point!| |Score:", -- Basketball, Knockball +-- ["Slippery"] = "", -- A_Classic_Fairytale:journey +-- ["Smith 0.97"] = "", -- A_Classic_Fairytale:enemy +-- ["Smith 0.98"] = "", -- A_Classic_Fairytale:enemy +-- ["Smith 0.99a"] = "", -- A_Classic_Fairytale:enemy +-- ["Smith 0.99b"] = "", -- A_Classic_Fairytale:enemy +-- ["Smith 0.99f"] = "", -- A_Classic_Fairytale:enemy +-- ["Smith 1.0"] = "", -- A_Classic_Fairytale:enemy +-- ["Sniper Rifle"] = "", -- Continental_supplies +-- ["Sniper!"] = "", -- Space_Invasion ["Sniper Training"] = "Træning med Sniperriffel", ["Sniperz"] = "Sniperz", +-- ["So humiliating..."] = "", -- A_Classic_Fairytale:first_blood +-- ["South America"] = "", -- Continental_supplies +-- ["So? What will it be?"] = "", -- A_Classic_Fairytale:shadow +-- ["Spawn the crate, and attack!"] = "", -- WxW +-- ["Special Weapons:"] = "", -- Continental_supplies +-- ["Spiky Cheese"] = "", -- A_Classic_Fairytale:enemy, A_Classic_Fairytale:epil, A_Classic_Fairytale:family, A_Classic_Fairytale:queen, A_Classic_Fairytale:shadow +-- ["Spleenlover"] = "", -- A_Classic_Fairytale:united ["Sponge"] = "Svamp", ["Spooky Tree"] = "Uhyggeligt Træ", + ["s|"] = "s|", + ["s"] = "s", -- GaudyRacer, Space_Invasion ["STATUS UPDATE"] = "STATUSOPDATERING", -- GaudyRacer, Space_Invasion +-- ["Steel Eye"] = "", -- A_Classic_Fairytale:queen +-- ["Step By Step"] = "", -- A_Classic_Fairytale:first_blood +-- ["Steve"] = "", -- A_Classic_Fairytale:dragon, A_Classic_Fairytale:family, A_Classic_Fairytale:queen +-- ["Sticky Mine"] = "", -- Continental_supplies +-- ["Stronglings"] = "", -- A_Classic_Fairytale:shadow +-- ["Structure"] = "", -- Continental_supplies +-- ["Super Weapons"] = "", -- WxW +-- ["Surf Before Crate"] = "", -- WxW +-- ["Surfer! +15 points!"] = "", -- Space_Invasion +-- ["Surfer!"] = "", -- WxW +-- ["Survive!|Hint: Cinematics can be skipped with the [Precise] key."] = "", -- A_Classic_Fairytale:shadow +-- ["Swing, Leaks A Lot, on the wings of the wind!"] = "", -- A_Classic_Fairytale:first_blood ["Switched to "] = "Skiftede til ", +-- ["Syntax Errol"] = "", -- A_Classic_Fairytale:dragon +-- ["Talk about mixed signals..."] = "", -- A_Classic_Fairytale:dragon ["Team %d: "] = "Hold %d: ", ["Team Scores"] = "Holdscore", -- Control, Space_Invasion +-- ["Teleport hint: just use the mouse to select the destination!"] = "", -- A_Classic_Fairytale:dragon +-- ["Thanks!"] = "", -- A_Classic_Fairytale:family +-- ["Thank you, my hero!"] = "", -- A_Classic_Fairytale:family +-- ["Thank you, oh, thank you, Leaks A Lot!"] = "", -- A_Classic_Fairytale:journey +-- ["Thank you, oh, thank you, my heroes!"] = "", -- A_Classic_Fairytale:journey +-- ["That is, indeed, very weird..."] = "", -- A_Classic_Fairytale:united +-- ["That makes it almost invaluable!"] = "", -- A_Classic_Fairytale:enemy +-- ["That ought to show them!"] = "", -- A_Classic_Fairytale:backstab +-- ["That's for my father!"] = "", -- A_Classic_Fairytale:backstab +-- ["That shaman sure knows what he's doing!"] = "", -- A_Classic_Fairytale:shadow ["That Sinking Feeling"] = "Følelsen af at Synke", +-- ["That's not our problem!"] = "", -- A_Classic_Fairytale:enemy +-- ["That's typical of you!"] = "", -- A_Classic_Fairytale:family +-- ["That was just mean!"] = "", -- A_Classic_Fairytale:backstab, A_Classic_Fairytale:united ["That was pointless."] = "Det var meningsløst.", +-- ["The answer is...entertaintment. You'll see what I mean."] = "", -- A_Classic_Fairytale:backstab +-- ["The anti-portal zone is all over the floor, and I have nothing to kill him...Droping something could hurt him enough to kill him..."] = "", -- portal +-- ["The Bull's Eye"] = "", -- A_Classic_Fairytale:first_blood +-- ["The caves are well hidden, they won't find us there!"] = "", -- A_Classic_Fairytale:united +-- ["The Crate Frenzy"] = "", -- A_Classic_Fairytale:first_blood +-- ["The Dilemma"] = "", -- A_Classic_Fairytale:shadow +-- ["The enemy can't move but it might be a good idea to stay out of sight!|"] = "", -- A_Classic_Fairytale:dragon ["The enemy is hiding out on yonder ducky!"] = "Fjenden gemmer sig pÃ¥ rapanden derover!", +-- ["The Enemy Of My Enemy"] = "", -- A_Classic_Fairytale:enemy +-- ["The First Blood"] = "", -- A_Classic_Fairytale:first_blood +-- ["The First Encounter"] = "", -- A_Classic_Fairytale:shadow ["The flag will respawn next round."] = "Flaget gendannes næste runde.", +-- ["The food bites back"] = "", -- A_Classic_Fairytale:backstab +-- ["The giant umbrella from the last crate should help break the fall."] = "", -- A_Classic_Fairytale:first_blood +-- ["The Great Escape"] = "", -- User_Mission_-_The_Great_Escape +-- ["The guardian"] = "", -- A_Classic_Fairytale:shadow +-- ["The Individualist"] = "", -- A_Classic_Fairytale:shadow +-- ["Their buildings were very primitive back then, even for an uncivilised island."] = "", -- A_Classic_Fairytale:united +-- ["The Journey Back"] = "", -- A_Classic_Fairytale:journey +-- ["The Leap of Faith"] = "", -- A_Classic_Fairytale:first_blood +-- ["The Moonwalk"] = "", -- A_Classic_Fairytale:journey ["The Nameless One"] = "Den Navnløse Ene", +-- ["The next one is pretty hard! |Tip: You have to do multiple swings!"] = "", -- Basic_Training_-_Rope +-- ["Then how do they keep appearing?"] = "", -- A_Classic_Fairytale:shadow +-- ["The other one were all cannibals, spending their time eating the organs of fellow hedgehogs..."] = "", -- A_Classic_Fairytale:first_blood +-- ["There must be a spy among us!"] = "", -- A_Classic_Fairytale:backstab +-- ["There's more of them? When did they become so hungry?"] = "", -- A_Classic_Fairytale:backstab, A_Classic_Fairytale:united +-- ["There's nothing more satisfying for me than seeing you share your beauty with the world every morning, my princess!"] = "", -- A_Classic_Fairytale:journey +-- ["There's nothing more satisfying to us than seeing you share your beauty..."] = "", -- A_Classic_Fairytale:journey +-- ["There's nothing more satisfying to us than seeing you share your beauty with the world every morning, my princess!"] = "", -- A_Classic_Fairytale:journey +-- ["The Rising"] = "", -- A_Classic_Fairytale:first_blood +-- ["The Savior"] = "", -- A_Classic_Fairytale:journey +-- ["These primitive people are so funny!"] = "", -- A_Classic_Fairytale:backstab +-- ["The Shadow Falls"] = "", -- A_Classic_Fairytale:shadow +-- ["The Showdown"] = "", -- A_Classic_Fairytale:shadow +-- ["The Slaughter"] = "", -- A_Classic_Fairytale:dragon, A_Classic_Fairytale:first_blood ["THE SPECIALISTS"] = "SPECIALISTERNE", +-- ["The spirits of the ancerstors are surely pleased, Leaks A Lot."] = "", -- A_Classic_Fairytale:first_blood +-- ["The Torment"] = "", -- A_Classic_Fairytale:first_blood +-- ["The Tunnel Maker"] = "", -- A_Classic_Fairytale:journey +-- ["The Ultimate Weapon"] = "", -- A_Classic_Fairytale:first_blood +-- ["The Union"] = "", -- A_Classic_Fairytale:enemy +-- ["The village, unprepared, was destroyed by the cyborgs..."] = "", -- A_Classic_Fairytale:journey +-- ["The walk of Fame"] = "", -- A_Classic_Fairytale:shadow +-- ["The wasted youth"] = "", -- A_Classic_Fairytale:first_blood +-- ["The weapon in that last crate was bestowed upon us by the ancients!"] = "", -- A_Classic_Fairytale:first_blood +-- ["The what?!"] = "", -- A_Classic_Fairytale:dragon +-- ["The wind whispers that you are ready to become familiar with tools, now..."] = "", -- A_Classic_Fairytale:first_blood +-- ["They are all waiting back in the village, haha."] = "", -- A_Classic_Fairytale:enemy +-- ["They Call Me Bullseye!"] = "", -- Space_Invasion +-- ["They have weapons we've never seen before!"] = "", -- A_Classic_Fairytale:united +-- ["They keep appearing like this. It's weird!"] = "", -- A_Classic_Fairytale:united +-- ["They killed "] = "", -- A_Classic_Fairytale:backstab, A_Classic_Fairytale:united +-- ["They must be trying to weaken us!"] = "", -- A_Classic_Fairytale:enemy +-- ["They never learn"] = "", -- A_Classic_Fairytale:journey +-- ["They told us to wear these clothes. They said that this is the newest trend."] = "", -- A_Classic_Fairytale:enemy +-- ["They've been manipulating us all this time!"] = "", -- A_Classic_Fairytale:enemy +-- ["Thighlicker"] = "", -- A_Classic_Fairytale:united +-- ["This is it! It's time to make Fell From Heaven fall for me..."] = "", -- A_Classic_Fairytale:first_blood +-- ["This island is the only place left on Earth with grass on it!"] = "", -- A_Classic_Fairytale:enemy +-- ["This is typical!"] = "", -- A_Classic_Fairytale:dragon +-- ["This must be some kind of sorcery!"] = "", -- A_Classic_Fairytale:shadow +-- ["This must be the caves!"] = "", -- A_Classic_Fairytale:backstab ["This one's tricky."] = "Den her er drilagtig.", ["This rain is really something..."] = "Det her regnvejr er virkelig noget...", - ["TIME: "] = "TID: ", +-- ["This will be fun!"] = "", -- A_Classic_Fairytale:enemy +-- ["Those aliens are destroying the island!"] = "", -- A_Classic_Fairytale:family ["Timed Kamikaze!"] = "Tidsindstillet Kamikaze!", ["Time Extended!"] = "Tid Forlænget!", ["Time Extension"] = "Tidsforlængelse", + ["TIME: "] = "TID: ", +-- ["Tip: The rope physics are different than in the real world, |use it to your advantage!"] = "", -- Basic_Training_-_Rope ["Toggle Shield"] = "SlÃ¥ Skjold Til/Fra", +-- ["To help you, of course!"] = "", -- A_Classic_Fairytale:journey +-- ["To place a girder, select it, use [Left] and [Right] to select angle and length, place with [Left Click]"] = "", -- A_Classic_Fairytale:shadow +-- ["Torn Muscle"] = "", -- A_Classic_Fairytale:journey +-- [" to save the village."] = "", -- A_Classic_Fairytale:dragon +-- ["To the caves..."] = "", -- A_Classic_Fairytale:united ["Toxic Team"] = "Giftigt Hold", -- User_Mission_-_Diver, User_Mission_-_Spooky_Tree, User_Mission_-_Teamwork ["TRACK COMPLETED"] = "BANE FULDFØRT", ["TRACK FAILED!"] = "BANE MISLYKKEDES!", +-- ["training"] = "", -- portal +-- ["Traitors"] = "", -- A_Classic_Fairytale:epil +-- ["Tribe"] = "", -- A_Classic_Fairytale:backstab ["TrophyRace"] = "TrofæRæs", +-- ["Try to protect the chief! You won't lose if he dies, but it is advised that he survives."] = "", -- A_Classic_Fairytale:united ["T_T"] = "T_T", ["Tumbling Time Extended!"] = "Tumlende Tid Forlænget", +-- ["Turns until Sudden Death: "] = "", -- A_Classic_Fairytale:dragon +-- [" turns until Sudden Death! Better hurry!"] = "", -- A_Classic_Fairytale:dragon ["Turn Time"] = "Tid til Tur", - ["Unit"] = "Enhed", +-- ["Two little hogs cooperating, getting past obstacles..."] = "", -- A_Classic_Fairytale:journey +-- ["Uhm...I met one of them and took his weapons."] = "", -- A_Classic_Fairytale:shadow +-- ["Uhmm...ok no."] = "", -- A_Classic_Fairytale:enemy +-- ["ULTRA KILL"] = "", -- Mutant +-- ["Under Construction"] = "", -- A_Classic_Fairytale:shadow +-- ["Unexpected Igor"] = "", -- A_Classic_Fairytale:dragon +-- ["Unit 0x0007"] = "", -- A_Classic_Fairytale:family +-- ["Unit 334a$7%;.*"] = "", -- A_Classic_Fairytale:backstab, A_Classic_Fairytale:dragon, A_Classic_Fairytale:enemy, A_Classic_Fairytale:family, A_Classic_Fairytale:queen, A_Classic_Fairytale:united ["Unit 3378"] = "Enhed 3378", ["Unit 835"] = "Enhed 835", +-- ["United We Stand"] = "", -- A_Classic_Fairytale:united + ["Unit"] = "Enhed", ["Unlimited Attacks"] = "Uendelige Angreb", +-- ["Unlucky Sods"] = "", -- User_Mission_-_Rope_Knock_Challenge ["Unstoppable!"] = "Ustoppelig!", +-- ["Unsuspecting Louts"] = "", -- User_Mission_-_Rope_Knock_Challenge +-- ["[Up], [Down] to aim, [Space] to shoot!"] = "", -- A_Classic_Fairytale:first_blood +-- ["Use it wisely!"] = "", -- A_Classic_Fairytale:dragon +-- ["Use it with precaution!"] = "", -- A_Classic_Fairytale:first_blood ["User Challenge"] = "Brugerudfordring", +-- ["Use the parachute ([Space] while in air)"] = "", -- +-- ["Use the portal gun to get to the next crate, then use the new gun to get to the final destination!|"] = "", -- A_Classic_Fairytale:dragon +-- ["Use the rope to get on the head of the mole, young one!"] = "", -- A_Classic_Fairytale:first_blood +-- ["Use the rope to knock your enemies to their doom."] = "", -- User_Mission_-_Rope_Knock_Challenge ["Use your rope to get from start to finish as fast as you can!"] = "Brug dit reb til at komme fra start til slut sÃ¥ hurtigt som muligt!", +-- ["Vedgies"] = "", -- A_Classic_Fairytale:journey +-- ["Vegan Jack"] = "", -- A_Classic_Fairytale:enemy +-- ["Victory!"] = "", -- Basic_Training_-_Rope ["Victory for the "] = "Sejr for ", -- CTF_Blizzard, Capture_the_Flag +-- ["Violence is not the answer to your problems!"] = "", -- A_Classic_Fairytale:first_blood +-- ["Walls Left"] = "", -- WxW +-- ["Walls Required"] = "", -- WxW +-- ["WALL TO WALL"] = "", -- WxW +-- ["Wannabe Flyboys"] = "", -- User_Mission_-_RCPlane_Challenge +-- ["Wannabe Shoppsta"] = "", -- User_Mission_-_Rope_Knock_Challenge +-- ["Watch your steps, young one!"] = "", -- A_Classic_Fairytale:first_blood ["Waypoint placed."] = "Rutepunkt placeret.", ["Way-Points Remaining"] = "Rutepunkter Tilbage", +-- ["Weaklings"] = "", -- A_Classic_Fairytale:shadow +-- ["We all know what happens when you get frightened..."] = "", -- A_Classic_Fairytale:first_blood +-- ["Weapons reset."] = "", -- Highlander ["Weapons Reset"] = "VÃ¥ben Nulstillede", +-- ["We are indeed."] = "", -- A_Classic_Fairytale:backstab +-- ["We can't defeat them!"] = "", -- A_Classic_Fairytale:shadow +-- ["We can't hold them up much longer!"] = "", -- A_Classic_Fairytale:united +-- ["We can't let them take over our little island!"] = "", -- A_Classic_Fairytale:enemy +-- ["We have no time to waste..."] = "", -- A_Classic_Fairytale:journey +-- ["We have nowhere else to live!"] = "", -- A_Classic_Fairytale:enemy +-- ["We have to protect the village!"] = "", -- A_Classic_Fairytale:united +-- ["We have to unite and defeat those cylergs!"] = "", -- A_Classic_Fairytale:enemy +-- ["Welcome, Leaks A Lot!"] = "", -- A_Classic_Fairytale:journey ["Well done."] = "Godt klaret.", +-- ["We'll give you a problem then!"] = "", -- A_Classic_Fairytale:enemy +-- ["We'll spare your life for now!"] = "", -- A_Classic_Fairytale:backstab +-- ["Well, that was a waste of time."] = "", -- A_Classic_Fairytale:dragon +-- ["Well, well! Isn't that the cutest thing you've ever seen?"] = "", -- A_Classic_Fairytale:journey +-- ["Well, yes. This was a cyborg television show."] = "", -- A_Classic_Fairytale:enemy +-- ["We made sure noone followed us!"] = "", -- A_Classic_Fairytale:backstab +-- ["We need to move!"] = "", -- A_Classic_Fairytale:united +-- ["We need to prevent their arrival!"] = "", -- A_Classic_Fairytale:backstab +-- ["We need to warn the village."] = "", -- A_Classic_Fairytale:shadow +-- ["We should head back to the village now."] = "", -- A_Classic_Fairytale:shadow +-- ["We were trying to save her and we got lost."] = "", -- A_Classic_Fairytale:family +-- ["We won't let you hurt her!"] = "", -- A_Classic_Fairytale:journey +-- ["What?! A cannibal? Here? There is no time to waste! Come, you are prepared."] = "", -- A_Classic_Fairytale:first_blood +-- ["What a douche!"] = "", -- A_Classic_Fairytale:enemy +-- ["What am I gonna...eat, yo?"] = "", -- A_Classic_Fairytale:family +-- ["What are you doing at a distance so great, young one?"] = "", -- A_Classic_Fairytale:first_blood +-- ["What are you doing? Let her go!"] = "", -- A_Classic_Fairytale:journey +-- ["What a ride!"] = "", -- A_Classic_Fairytale:shadow +-- ["What a strange cave!"] = "", -- A_Classic_Fairytale:dragon +-- ["What a strange feeling!"] = "", -- A_Classic_Fairytale:backstab +-- ["What do my faulty eyes observe? A spy!"] = "", -- A_Classic_Fairytale:first_blood +-- ["Whatever floats your boat..."] = "", -- A_Classic_Fairytale:shadow +-- [" What !! For all of this struggle i just win some ... TIME o0"] = "", -- portal +-- ["What has "] = "", -- A_Classic_Fairytale:backstab +-- ["What? Here? How did they find us?!"] = "", -- A_Classic_Fairytale:backstab +-- ["What is this place?"] = "", -- A_Classic_Fairytale:dragon, A_Classic_Fairytale:enemy +-- ["What shall we do with the traitor?"] = "", -- A_Classic_Fairytale:backstab +-- ["WHAT?! You're the ones attacking us!"] = "", -- A_Classic_Fairytale:enemy +-- ["When?"] = "", -- A_Classic_Fairytale:enemy +-- ["When I find it..."] = "", -- A_Classic_Fairytale:dragon +-- ["Where are all these crates coming from?!"] = "", -- A_Classic_Fairytale:shadow +-- ["Where are they?!"] = "", -- A_Classic_Fairytale:backstab +-- ["Where did that alien run?"] = "", -- A_Classic_Fairytale:dragon +-- ["Where did you get the exploding apples?"] = "", -- A_Classic_Fairytale:shadow +-- ["Where did you get the exploding apples and the magic bow that shoots many arrows?"] = "", -- A_Classic_Fairytale:shadow +-- ["Where did you get the magic bow that shoots many arrows?"] = "", -- A_Classic_Fairytale:shadow +-- ["Where did you get the weapons in the forest, Dense Cloud?"] = "", -- A_Classic_Fairytale:backstab +-- ["Where do you get that?!"] = "", -- A_Classic_Fairytale:enemy +-- ["Where have you been?!"] = "", -- A_Classic_Fairytale:backstab +-- ["Where have you been?"] = "", -- A_Classic_Fairytale:united +-- ["? Why?"] = "", -- A_Classic_Fairytale:backstab +-- ["Why "] = "", -- A_Classic_Fairytale:backstab +-- ["! Why?!"] = "", -- A_Classic_Fairytale:backstab, A_Classic_Fairytale:united +-- ["Why are you doing this?"] = "", -- A_Classic_Fairytale:journey +-- ["Why are you helping us, uhm...?"] = "", -- A_Classic_Fairytale:family +-- ["Why can't he just let her go?!"] = "", -- A_Classic_Fairytale:family +-- ["Why do men keep hurting me?"] = "", -- A_Classic_Fairytale:first_blood +-- ["Why do you not like me?"] = "", -- A_Classic_Fairytale:shadow +-- ["Why do you want to take over our island?"] = "", -- A_Classic_Fairytale:enemy +-- ["Why me?!"] = "", -- A_Classic_Fairytale:backstab +-- ["Why would they do this?"] = "", -- A_Classic_Fairytale:backstab +-- ["- Will Get 1-3 random weapons"] = "", -- Continental_supplies +-- ["- Will refresh Parachute each turn."] = "", -- Continental_supplies +-- ["- Will refresh portalgun each turn."] = "", -- Continental_supplies ["Will this ever end?"] = "Slutter det her nogensinde?", +-- ["WINNER IS "] = "", -- Mutant ["WINNING TIME: "] = "VINDENDE TID: ", +-- ["Wise Oak"] = "", -- A_Classic_Fairytale:backstab, A_Classic_Fairytale:dragon, A_Classic_Fairytale:enemy, A_Classic_Fairytale:epil, A_Classic_Fairytale:family, A_Classic_Fairytale:queen +-- ["With Dense Cloud on the land of shadows, I'm the village's only hope..."] = "", -- A_Classic_Fairytale:journey +-- ["With the rest of the tribe gone, it was up to "] = "", -- A_Classic_Fairytale:dragon +-- ["Worry not, for it is a peaceful animal! There is no reason to be afraid..."] = "", -- A_Classic_Fairytale:first_blood +-- ["Wow, what a dream!"] = "", -- A_Classic_Fairytale:backstab +-- ["Y3K1337"] = "", -- A_Classic_Fairytale:journey, A_Classic_Fairytale:shadow +-- ["Yay, we won!"] = "", -- A_Classic_Fairytale:enemy +-- ["Y Chwiliad"] = "", -- A_Classic_Fairytale:dragon +-- ["Yeah...I think it's a 'he', lol."] = "", -- A_Classic_Fairytale:shadow +-- ["Yeah, sure! I died. Hillarious!"] = "", -- A_Classic_Fairytale:backstab +-- ["Yeah, take that!"] = "", -- A_Classic_Fairytale:dragon +-- ["Yeah? Watcha gonna do? Cry?"] = "", -- A_Classic_Fairytale:journey +-- ["Yes!"] = "", -- A_Classic_Fairytale:enemy +-- ["Yes, yeees! You are now ready to enter the real world!"] = "", -- A_Classic_Fairytale:first_blood +-- ["Yo, dude, we're here, too!"] = "", -- A_Classic_Fairytale:family +-- ["You are given the chance to turn your life around..."] = "", -- A_Classic_Fairytale:shadow +-- ["You are playing with our lives here!"] = "", -- A_Classic_Fairytale:enemy +-- ["! You bastards!"] = "", -- A_Classic_Fairytale:backstab, A_Classic_Fairytale:united +-- ["You bear impressive skills, "] = "", -- A_Classic_Fairytale:dragon +-- ["You can't fire a portal on the blue surface"] = "", -- portal +-- ["You couldn't possibly believe that after refusing my offer I'd just let you go!"] = "", -- A_Classic_Fairytale:journey ["You'd almost swear the water was rising!"] = "Man kunne næsten sværge pÃ¥ at vandet steg!", +-- ["You'd better watch your steps..."] = "", -- A_Classic_Fairytale:journey +-- ["You did not make it in time, try again!"] = "", -- Basic_Training_-_Rope +-- ["You have 7 turns until the next wave arrives.|Make sure the arriving cannibals are greeted appropriately!|If the hog dies, the cause is lost.|Hint: you might want to use some mines..."] = "", -- A_Classic_Fairytale:backstab +-- ["You have "] = "", -- A_Classic_Fairytale:dragon +-- ["You have been giving us out to the enemy, haven't you!"] = "", -- A_Classic_Fairytale:backstab +-- ["You have been respawned, at your last checkpoint!"] = "", -- Basic_Training_-_Rope +-- ["You have been respawned, be more carefull next time!"] = "", -- Basic_Training_-_Rope +-- ["You have chosen the perfect moment to leave."] = "", -- A_Classic_Fairytale:united +-- ["You have failed to complete your task, young one!"] = "", -- A_Classic_Fairytale:journey +-- ["You have failed to save the tribe!"] = "", -- A_Classic_Fairytale:backstab +-- ["You have finally figured it out!"] = "", -- A_Classic_Fairytale:enemy +-- ["You have kidnapped our whole tribe!"] = "", -- A_Classic_Fairytale:enemy +-- ["You have killed an innocent hedgehog!"] = "", -- A_Classic_Fairytale:backstab +-- ["You have proven yourself worthy to see our most ancient secret!"] = "", -- A_Classic_Fairytale:first_blood +-- ["You have proven yourselves worthy!"] = "", -- A_Classic_Fairytale:enemy ["You have SCORED!!"] = "Du har SCORET!!", +-- ["You have to destroy 12 targets in 180 seconds"] = "", -- Basic_Training_-_Cluster_Bomb +-- ["You have won the game by proving true cooperative skills!"] = "", -- A_Classic_Fairytale:enemy +-- ["You just appeared out of thin air!"] = "", -- A_Classic_Fairytale:backstab +-- ["You just committed suicide..."] = "", -- A_Classic_Fairytale:shadow +-- ["You killed my father, you monster!"] = "", -- A_Classic_Fairytale:backstab +-- ["You know...taking a stroll."] = "", -- A_Classic_Fairytale:backstab +-- ["You know what? I don't even regret anything!"] = "", -- A_Classic_Fairytale:backstab +-- ["You'll see what I mean!"] = "", -- A_Classic_Fairytale:enemy +-- ["You may only attack from a rope!"] = "", -- WxW +-- ["You meatbags are pretty slow, you know!"] = "", -- A_Classic_Fairytale:enemy +-- ["You might want to find a way to instantly kill arriving cannibals!"] = "", -- A_Classic_Fairytale:backstab +-- ["Young one, you are telling us that they can instantly change location without a shaman?"] = "", -- A_Classic_Fairytale:united +-- ["You probably know what to do next..."] = "", -- A_Classic_Fairytale:first_blood +-- ["Your deaths will be avenged, cannibals!"] = "", -- A_Classic_Fairytale:enemy +-- ["Your death will not be in vain, Dense Cloud!"] = "", -- A_Classic_Fairytale:shadow +-- ["You're...alive!? But we saw you die!"] = "", -- A_Classic_Fairytale:backstab +-- ["You're a pathetic liar!"] = "", -- A_Classic_Fairytale:backstab +-- ["You're funny!"] = "", -- A_Classic_Fairytale:journey +-- ["You're getting pretty good! |Tip: When you shorten you rope you move faster! |and when you lengthen it you move slower"] = "", -- Basic_Training_-_Rope +-- ["You're pathetic! You are not worthy of my attention..."] = "", -- A_Classic_Fairytale:shadow +-- ["You're probably wondering why I bought you back..."] = "", -- A_Classic_Fairytale:backstab +-- ["You're terrorizing the forest...We won't catch anything like this!"] = "", -- A_Classic_Fairytale:shadow +-- ["Your hogs must survive!"] = "", -- A_Classic_Fairytale:journey +-- ["Your movement skills will be evaluated now."] = "", -- A_Classic_Fairytale:first_blood ["You saved"] = "Du reddede", +-- ["You've been assaulting us, we have been just defending ourselves!"] = "", -- A_Classic_Fairytale:enemy ["You've failed. Try again."] = "Det lykkedes dig ikke. Prøv igen.", ["You've reached the goal!| |Time: "] = "Du har nÃ¥et mÃ¥let!| |Tid: ", +-- ["You will be avenged!"] = "", -- A_Classic_Fairytale:shadow +-- ["You won't believe what happened to me!"] = "", -- A_Classic_Fairytale:backstab +-- ["Yuck! I bet they'll keep worshipping her even after I save the village!"] = "", -- A_Classic_Fairytale:family +-- ["Zealandia"] = "", -- Continental_supplies ["'Zooka Team"] = "'Zooka-hold", +-- ["Zork"] = "", -- A_Classic_Fairytale:dragon, A_Classic_Fairytale:family, A_Classic_Fairytale:queen } diff -r 3331b30e4ef1 -r 88fde28bbda6 share/hedgewars/Data/Locale/de.lua --- a/share/hedgewars/Data/Locale/de.lua Sun Oct 21 01:28:33 2012 +0400 +++ b/share/hedgewars/Data/Locale/de.lua Sat Nov 03 00:34:35 2012 +0400 @@ -2,159 +2,644 @@ -- [":("] = "", -- ["!!!"] = "", -- ["..."] = "", +-- ["011101000"] = "", -- A_Classic_Fairytale:dragon +-- ["011101001"] = "", -- A_Classic_Fairytale:backstab, A_Classic_Fairytale:dragon, A_Classic_Fairytale:enemy, A_Classic_Fairytale:family, A_Classic_Fairytale:journey, A_Classic_Fairytale:queen, A_Classic_Fairytale:shadow, A_Classic_Fairytale:united +-- ["30 minutes later..."] = "", -- A_Classic_Fairytale:shadow +-- ["About a month ago, a cyborg came and told us that you're the cannibals!"] = "", -- A_Classic_Fairytale:enemy ["Accuracy Bonus!"] = "Präzisions-Bonus!", +-- ["Ace"] = "", -- User_Mission_-_RCPlane_Challenge, User_Mission_-_Rope_Knock_Challenge -- ["Achievement Unlocked"] = "", -- User_Mission_-_Bamboo_Thicket, User_Mission_-_That_Sinking_Feeling, Tumbler +-- ["A Classic Fairytale"] = "", -- A_Classic_Fairytale:first_blood +-- ["???"] = "", -- A_Classic_Fairytale:backstab +-- ["Actually, you aren't worthy of life! Take this..."] = "", -- A_Classic_Fairytale:shadow +-- ["A cy-what?"] = "", -- A_Classic_Fairytale:enemy +-- ["Adventurous"] = "", -- A_Classic_Fairytale:journey +-- ["Africa"] = "", -- Continental_supplies +-- ["After Leaks A Lot betrayed his tribe, he joined the cannibals..."] = "", -- A_Classic_Fairytale:first_blood +-- ["After the shock caused by the enemy spy, Leaks A Lot and Dense Cloud went hunting to relax."] = "", -- A_Classic_Fairytale:shadow +-- ["Again with the 'cannibals' thing!"] = "", -- A_Classic_Fairytale:enemy +-- ["a Hedgewars challenge"] = "", -- User_Mission_-_RCPlane_Challenge, User_Mission_-_Rope_Knock_Challenge ["a Hedgewars mini-game"] = "ein Hedgewars Mini-Spiel", -- Space_Invasion, The_Specialists ["Aiming Practice"] = "Zielübung", --Bazooka, Shotgun, SniperRifle +-- ["A leap in a leap"] = "", -- A_Classic_Fairytale:first_blood +-- ["A little gift from the cyborgs"] = "", -- A_Classic_Fairytale:shadow +-- ["All gone...everything!"] = "", -- A_Classic_Fairytale:enemy +-- ["All right, we just need to get to the other side of the island!"] = "", -- A_Classic_Fairytale:journey +-- ["All walls touched!"] = "", -- WxW ["Ammo Depleted!"] = "Munition erschöpft!", ["ammo extended!"] = "Munition aufgestockt!", ["Ammo is reset at the end of your turn."] = "Munition wird am Ende des Spielzuges zurückgesetzt.", ["Ammo Maniac!"] = "Munitionsverrückter!", ["Ammo"] = "Munition", +-- ["And how am I alive?!"] = "", -- A_Classic_Fairytale:enemy +-- ["And so happenned that Leaks A Lot failed to complete the challenge! He landed, pressured by shame..."] = "", -- A_Classic_Fairytale:first_blood +-- ["And so it began..."] = "", -- A_Classic_Fairytale:first_blood +-- ["...and so the cyborgs took over the world..."] = "", -- A_Classic_Fairytale:shadow +-- ["And so they discovered that cyborgs weren't invulnerable..."] = "", -- A_Classic_Fairytale:journey +-- ["And where's all the weed?"] = "", -- A_Classic_Fairytale:dragon +-- ["And you believed me? Oh, god, that's cute!"] = "", -- A_Classic_Fairytale:journey +-- ["Anno 1032: [The explosion will make a strong push ~ wide range, wont affect hogs close to the target]"] = "", -- Continental_supplies +-- ["Antarctica"] = "", -- Continental_supplies +-- ["Are we there yet?"] = "", -- A_Classic_Fairytale:shadow +-- ["Are you accusing me of something?"] = "", -- A_Classic_Fairytale:backstab +-- ["Are you saying that many of us have died for your entertainment?"] = "", -- A_Classic_Fairytale:enemy +-- ["Artur Detour"] = "", -- A_Classic_Fairytale:queen +-- ["As a reward for your performance, here's some new technology!"] = "", -- A_Classic_Fairytale:dragon +-- ["a shoppa minigame"] = "", -- WxW +-- ["Asia"] = "", -- Continental_supplies +-- ["Assault Team"] = "", -- A_Classic_Fairytale:backstab +-- ["As the ammo is sparse, you might want to reuse ropes while mid-air.|"] = "", -- A_Classic_Fairytale:dragon +-- ["As the challenge was completed, Leaks A Lot set foot on the ground..."] = "", -- A_Classic_Fairytale:first_blood +-- ["As you can see, there is no way to get on the other side!"] = "", -- A_Classic_Fairytale:dragon +-- ["Attack From Rope"] = "", -- WxW +-- ["Australia"] = "", -- Continental_supplies ["Available points remaining: "] = "Verfügbare Punkte verbleibend:", +-- ["Back Breaker"] = "", -- A_Classic_Fairytale:backstab +-- ["Back in the village, after telling the villagers about the threat..."] = "", -- A_Classic_Fairytale:united -- ["[Backspace]"] = "", +-- ["Backstab"] = "", -- A_Classic_Fairytale:backstab +-- ["Bad Team"] = "", -- User_Mission_-_The_Great_Escape -- ["Bamboo Thicket"] = "", ["Barrel Eater!"] = "Fassfresser!", ["Barrel Launcher"] = "Fasswerfer", +-- ["Baseballbat"] = "", -- Continental_supplies ["Bat balls at your enemies and|push them into the sea!"] = "Schlage Bälle auf deine Widersacher|und lass sie ins Meer fallen!", ["Bat your opponents through the|baskets and out of the map!"] = "Schlage deine Widersacher durch|die Körbe und aus der Karte hinaus!", ["Bazooka Training"] = "Bazooka-Training", +-- ["Beep Loopers"] = "", -- A_Classic_Fairytale:queen ["Best laps per team: "] = "Beste Rundenzeiten pro Team: ", ["Best Team Times: "] = "Beste Team-Zeiten: ", +-- ["Beware, though! If you are slow, you die!"] = "", -- A_Classic_Fairytale:dragon +-- ["Biomechanic Team"] = "", -- A_Classic_Fairytale:family +-- ["Blender"] = "", -- A_Classic_Fairytale:family +-- ["Bloodpie"] = "", -- A_Classic_Fairytale:backstab +-- ["Bloodrocutor"] = "", -- A_Classic_Fairytale:shadow +-- ["Bloodsucker"] = "", -- A_Classic_Fairytale:shadow ["Bloody Rookies"] = "Blutige Anfänger", -- 01#Boot_Camp, User_Mission_-_Dangerous_Ducklings, User_Mission_-_Diver, User_Mission_-_Spooky_Tree +-- ["Bone Jackson"] = "", -- A_Classic_Fairytale:backstab +-- ["Bonely"] = "", -- A_Classic_Fairytale:shadow ["Boom!"] = "Bumm!", ["BOOM!"] = "KABUMM!", ["Boss defeated!"] = "Boss wurde besiegt!", ["Boss Slayer!"] = "Boss-Töter!", +-- ["Brain Blower"] = "", -- A_Classic_Fairytale:journey +-- ["Brainiac"] = "", -- A_Classic_Fairytale:epil, A_Classic_Fairytale:first_blood, A_Classic_Fairytale:shadow +-- ["Brainila"] = "", -- A_Classic_Fairytale:united +-- ["Brain Stu"] = "", -- A_Classic_Fairytale:united +-- ["Brain Teaser"] = "", -- A_Classic_Fairytale:backstab +-- ["Brutal Lily"] = "", -- A_Classic_Fairytale:enemy, A_Classic_Fairytale:epil +-- ["Brutus"] = "", -- A_Classic_Fairytale:backstab ["Build a track and race."] = "Konstruiere eine Strecke und mach ein Wettrennen.", +-- ["Bullseye"] = "", -- A_Classic_Fairytale:dragon +-- ["But it proved to be no easy task!"] = "", -- A_Classic_Fairytale:dragon +-- ["But that's impossible!"] = "", -- A_Classic_Fairytale:backstab +-- ["But the ones alive are stronger in their heart!"] = "", -- A_Classic_Fairytale:enemy +-- ["But...we died!"] = "", -- A_Classic_Fairytale:backstab +-- ["But where can we go?"] = "", -- A_Classic_Fairytale:united +-- ["But why would they help us?"] = "", -- A_Classic_Fairytale:backstab +-- ["But you're cannibals. It's what you do."] = "", -- A_Classic_Fairytale:enemy +-- ["But you said you'd let her go!"] = "", -- A_Classic_Fairytale:journey +-- ["Call me Beep! Well, 'cause I'm such a nice...person!"] = "", -- A_Classic_Fairytale:family +-- ["Cannibals"] = "", -- A_Classic_Fairytale:enemy, A_Classic_Fairytale:epil, A_Classic_Fairytale:first_blood +-- ["Cannibal Sentry"] = "", -- A_Classic_Fairytale:journey +-- ["Cannibals?! You're the cannibals!"] = "", -- A_Classic_Fairytale:enemy ["CAPTURE THE FLAG"] = "EROBERE DIE FAHNE", ["Careless"] = "Achtlos", +-- ["Carol"] = "", -- A_Classic_Fairytale:family +-- ["CHALLENGE COMPLETE"] = "", -- User_Mission_-_RCPlane_Challenge ["Change Weapon"] = "Waffenwechsel", +-- ["Choose your side! If you want to join the strange man, walk up to him.|Otherwise, walk away from him. If you decide to att...nevermind..."] = "", -- A_Classic_Fairytale:shadow ["Clumsy"] = "Hoppla", +-- ["Cluster Bomb MASTER!"] = "", -- Basic_Training_-_Cluster_Bomb +-- ["Cluster Bomb Training"] = "", -- Basic_Training_-_Cluster_Bomb ["Codename: Teamwork"] = "Code-Name: Teamwork", +-- ["Collateral Damage"] = "", -- A_Classic_Fairytale:journey +-- ["Collateral Damage II"] = "", -- A_Classic_Fairytale:journey +-- ["Collect all the crates, but remember, our time in this life is limited!"] = "", -- A_Classic_Fairytale:first_blood +-- ["Collect or destroy all the health crates."] = "", -- User_Mission_-_RCPlane_Challenge +-- ["Collect the crate on the right.|Hint: Select the rope, [Up] or [Down] to aim, [Space] to fire, directional keys to move.|Ropes can be fired again in the air!"] = "", -- A_Classic_Fairytale:first_blood +-- ["Collect the crates within the time limit!|If you fail, you'll have to try again."] = "", -- A_Classic_Fairytale:first_blood +-- ["Come closer, so that your training may continue!"] = "", -- A_Classic_Fairytale:first_blood +-- ["Compete to use as few planes as possible!"] = "", -- User_Mission_-_RCPlane_Challenge ["Complete the track as fast as you can!"] = "Durchlaufe die Strecke so schnell du kannst!", +-- ["COMPLETION TIME"] = "", -- User_Mission_-_Rope_Knock_Challenge +-- ["Configuration accepted."] = "", -- WxW +-- ["Congratulations"] = "", -- Basic_Training_-_Rope ["Congratulations!"] = "Gratulation!", +-- ["Congratulations! You needed only half of time|to eliminate all targets."] = "", -- Basic_Training_-_Cluster_Bomb +-- ["Congratulations! You've completed the Rope tutorial! |- Tutorial ends in 10 seconds!"] = "", -- Basic_Training_-_Rope ["Congratulations! You've eliminated all targets|within the allowed time frame."] = "Gratulation! Du hast alle Ziele innerhalb der|verfügbaren Zeit ausgeschaltet.", --Bazooka, Shotgun, SniperRifle +-- ["Continental supplies"] = "", -- Continental_supplies ["Control pillars to score points."] = "Kontrolliere die Säulen um Punkte zu erhalten.", +-- ["Corporationals"] = "", -- A_Classic_Fairytale:queen +-- ["Corpsemonger"] = "", -- A_Classic_Fairytale:shadow +-- ["Corpse Thrower"] = "", -- A_Classic_Fairytale:epil +-- ["Crates Left:"] = "", -- User_Mission_-_RCPlane_Challenge ["Cybernetic Empire"] = "Kybernetisches Imperium", +-- ["Cyborg. It's what the aliens call themselves."] = "", -- A_Classic_Fairytale:enemy +-- ["Dahmer"] = "", -- A_Classic_Fairytale:backstab ["DAMMIT, ROOKIE! GET OFF MY HEAD!"] = "VERDAMMT, REKRUT! RUNTER VON MEINEM KOPF!", ["DAMMIT, ROOKIE!"] = "VERDAMMT, REKRUT!", -- ["Dangerous Ducklings"] = "", ["Deadweight"] = "Gravitus", +-- ["Defeat the cannibals"] = "", -- A_Classic_Fairytale:backstab +-- ["Defeat the cannibals!|"] = "", -- A_Classic_Fairytale:united +-- ["Defeat the cannibals!|Grenade hint: set the timer with [1-5], aim with [Up]/[Down] and hold [Space] to set power"] = "", -- A_Classic_Fairytale:shadow +-- ["Defeat the cyborgs!"] = "", -- A_Classic_Fairytale:enemy +-- ["Defend yourself!|Hint: You can get tips on using weapons by moving your mouse over them in the weapon selection menu"] = "", -- A_Classic_Fairytale:shadow ["Demolition is fun!"] = "Zerstörung macht Spaß!", +-- ["Dense Cloud"] = "", -- A_Classic_Fairytale:backstab, A_Classic_Fairytale:dragon, A_Classic_Fairytale:enemy, A_Classic_Fairytale:epil, A_Classic_Fairytale:family, A_Classic_Fairytale:journey, A_Classic_Fairytale:queen, A_Classic_Fairytale:shadow, A_Classic_Fairytale:united +-- ["Dense Cloud must have already told them everything..."] = "", -- A_Classic_Fairytale:shadow ["Depleted Kamikaze!"] = "Munitionsloses Kamikaze!", +-- ["Destroy him, Leaks A Lot! He is responsible for the deaths of many of us!"] = "", -- A_Classic_Fairytale:first_blood ["Destroy invaders to score points."] = "Zerstöre die Angreifer um Punkte zu erhalten.", +-- ["Destroy the targets!|Hint: Select the Shoryuken and hit [Space]|P.S. You can use it mid-air."] = "", -- A_Classic_Fairytale:first_blood +-- ["Destroy the targets!|Hint: [Up], [Down] to aim, [Space] to shoot"] = "", -- A_Classic_Fairytale:first_blood +-- ["Did anyone follow you?"] = "", -- A_Classic_Fairytale:united +-- ["Did you see him coming?"] = "", -- A_Classic_Fairytale:shadow +-- ["Did you warn the village?"] = "", -- A_Classic_Fairytale:shadow +-- ["Die, die, die!"] = "", -- A_Classic_Fairytale:dragon +-- ["Disguise as a Rockhopper Penguin: [Swap place with a random enemy hog in the circle]"] = "", -- Continental_supplies +-- ["Dist: "] = "", -- Space_Invasion +-- ["Do not laugh, inexperienced one, for he speaks the truth!"] = "", -- A_Classic_Fairytale:backstab +-- ["Do not let his words fool you, young one! He will stab you in the back as soon as you turn away!"] = "", -- A_Classic_Fairytale:first_blood +-- ["Do the deed"] = "", -- A_Classic_Fairytale:first_blood -- ["Double Kill!"] = "", +-- ["DOUBLE KILL"] = "", -- Mutant +-- ["Do you have any idea how valuable grass is?"] = "", -- A_Classic_Fairytale:enemy +-- ["Do you think you're some kind of god?"] = "", -- A_Classic_Fairytale:enemy +-- ["Dragon's Lair"] = "", -- A_Classic_Fairytale:dragon +-- ["Drills"] = "", -- A_Classic_Fairytale:backstab -- ["Drone Hunter!"] = "", +-- ["Drop a bomb: [drop some heroic wind that will turn into a bomb on impact]"] = "", -- Continental_supplies ["Drowner"] = "Absäufer", +-- ["Dude, all the plants are gone!"] = "", -- A_Classic_Fairytale:family +-- ["Dude, can you see Ramon and Spiky?"] = "", -- A_Classic_Fairytale:journey +-- ["Dude, that's so cool!"] = "", -- A_Classic_Fairytale:backstab +-- ["Dude, we really need a new shaman..."] = "", -- A_Classic_Fairytale:shadow +-- ["Dude, what's this place?!"] = "", -- A_Classic_Fairytale:dragon +-- ["Dude, where are we?"] = "", -- A_Classic_Fairytale:backstab +-- ["Dude, wow! I just had the weirdest high!"] = "", -- A_Classic_Fairytale:backstab +-- ["Duration"] = "", -- Continental_supplies +-- ["Dust storm: [Deals 20 damage to all enemies in the circle]"] = "", -- Continental_supplies ["Each turn you get 1-3 random weapons"] = "Du bekommst jede Runde 1-3 zufällig gewählte Waffen", ["Each turn you get one random weapon"] = "Du bekommst jede Runde eine zufällig gewählte Waffe.", +-- ["Eagle Eye"] = "", -- A_Classic_Fairytale:backstab +-- ["Eagle Eye: [Blink to the impact ~ one shot]"] = "", -- Continental_supplies +-- ["Ear Sniffer"] = "", -- A_Classic_Fairytale:backstab, A_Classic_Fairytale:epil +-- ["Elderbot"] = "", -- A_Classic_Fairytale:family +-- ["Elimate your captor."] = "", -- User_Mission_-_The_Great_Escape ["Eliminate all enemies"] = "Vernichte alle Gegner", ["Eliminate all targets before your time runs out.|You have unlimited ammo for this mission."] = "Eliminiere alle Ziele bevor die Zeit ausläuft.|Du hast in dieser Mission unbegrenzte Munition.", --Bazooka, Shotgun, SniperRifle +-- ["Eliminate enemy hogs and take their weapons."] = "", -- Highlander ["Eliminate Poison before the time runs out"] = "Neutralisiere das Gift bevor die Zeit abgelaufen ist", ["Eliminate the Blue Team"] = "Lösche das Blaue Team aus", ["Eliminate the enemy before the time runs out"] = "Vernichte den Feind bevor die Zeit abgelaufen ist", -- User_Mission_-_Bamboo_Thicket, User_Mission_-_Newton_and_the_Hammock ["Eliminate the enemy hogs to win."] = "Vernichte alle gegnerischen Igel um zu gewinnen", ["Eliminate the enemy specialists."] = "Vernichte die gegnerischen Spezialisten", ["- Eliminate Unit 3378 |- Feeble Resistance must survive"] = "- Vernichte Einheit 3378 | Kraftloser Widerstand muss überleben", +-- ["Elmo"] = "", -- A_Classic_Fairytale:dragon, A_Classic_Fairytale:family, A_Classic_Fairytale:queen -- ["Energetic Engineer"] = "", ["Enjoy the swim..."] = "Viel Spaß beim Schwimmen...", -- ["[Enter]"] = "", +-- ["Europe"] = "", -- Continental_supplies +-- [" ever done to you?!"] = "", -- A_Classic_Fairytale:backstab +-- ["Everyone knows this."] = "", -- A_Classic_Fairytale:enemy +-- ["Every single time!"] = "", -- A_Classic_Fairytale:dragon +-- ["Everything looks OK..."] = "", -- A_Classic_Fairytale:enemy +-- ["Exactly, man! That was my dream."] = "", -- A_Classic_Fairytale:backstab +-- ["Eye Chewer"] = "", -- A_Classic_Fairytale:journey +-- ["FAG"] = "", -- Mutant +-- ["Family Reunion"] = "", -- A_Classic_Fairytale:family ["Fastest lap: "] = "Schnellste Runde: ", ["Feeble Resistance"] = "Kraftloser Widerstand", +-- ["Fell From Grace"] = "", -- A_Classic_Fairytale:backstab, A_Classic_Fairytale:dragon, A_Classic_Fairytale:enemy, A_Classic_Fairytale:epil, A_Classic_Fairytale:family, A_Classic_Fairytale:queen +-- ["Fell From Heaven"] = "", -- A_Classic_Fairytale:enemy, A_Classic_Fairytale:epil, A_Classic_Fairytale:family, A_Classic_Fairytale:first_blood, A_Classic_Fairytale:journey, A_Classic_Fairytale:queen +-- ["Fell From Heaven is the best! Fell From Heaven is the greatest!"] = "", -- A_Classic_Fairytale:family +-- ["Femur Lover"] = "", -- A_Classic_Fairytale:shadow +-- ["Fierce Competition!"] = "", -- Space_Invasion +-- ["Fiery Water"] = "", -- A_Classic_Fairytale:backstab, A_Classic_Fairytale:dragon, A_Classic_Fairytale:enemy, A_Classic_Fairytale:epil, A_Classic_Fairytale:family, A_Classic_Fairytale:queen, A_Classic_Fairytale:united +-- ["Find your tribe!|Cross the lake!"] = "", -- A_Classic_Fairytale:dragon +-- ["Finish your training|Hint: Animations can be skipped with the [Precise] key."] = "", -- A_Classic_Fairytale:first_blood +-- ["Fire a mine: [Does what it says ~ Cant be dropped close to an enemy ~ 1 sec]"] = "", -- Continental_supplies ["Fire"] = "Feuer", +-- ["First aid kits?!"] = "", -- A_Classic_Fairytale:united +-- ["First Blood"] = "", -- A_Classic_Fairytale:first_blood +-- ["FIRST BLOOD MUTATES"] = "", -- Mutant +-- ["First Steps"] = "", -- A_Classic_Fairytale:first_blood ["Flag captured!"] = "Fahne erobert!", ["Flag respawned!"] = "Fahne wieder erschienen!", ["Flag returned!"] = "Fahne zurückgebracht!", ["Flags, and their home base will be placed where each team ends their first turn."] = "Fahnen und deren Heimatstandort werden dort plaziert wo jedes Team deren ersten Zug beendet.", -- ["Flamer"] = "", +-- ["Flaming Worm"] = "", -- A_Classic_Fairytale:backstab +-- ["Flare: [fire up some bombs depending on hogs depending on hogs in the circle"] = "", -- Continental_supplies +-- ["Flesh for Brainz"] = "", -- A_Classic_Fairytale:journey +-- ["For improved features/stability, play 0.9.18+"] = "", -- WxW +-- ["Free Dense Cloud and continue the mission!"] = "", -- A_Classic_Fairytale:journey -- ["Friendly Fire!"] = "", ["fuel extended!"] = "Treibstoff aus!", ["GAME BEGUN!!!"] = "SPIEL GESTARTET!!!", - ["Spielmodifikatoren: "] = "", +-- ["Game Modifiers: "] = "", -- The_Specialists ["GAME OVER!"] = "SPIEL ZU ENDE!", ["Game Started!"] = "Spiel Gestartet!]", +-- ["Game? Was this a game to you?!"] = "", -- A_Classic_Fairytale:enemy +-- ["GasBomb"] = "", -- Continental_supplies +-- ["Gas Gargler"] = "", -- A_Classic_Fairytale:queen +-- ["Get Dense Cloud out of the pit!"] = "", -- A_Classic_Fairytale:journey ["Get on over there and take him out!"] = "Mach, dass du hinüber kommst und schalte ihn aus!", +-- ["Get on the head of the mole"] = "", -- A_Classic_Fairytale:first_blood +-- ["Get out of there!"] = "", -- User_Mission_-_The_Great_Escape +-- ["Get that crate!"] = "", -- A_Classic_Fairytale:first_blood +-- ["Get the crate on the other side of the island!|"] = "", -- A_Classic_Fairytale:journey +-- ["Get to the target using your rope! |Controls: Left & Right to swing the rope - Up & Down to Contract and Expand!"] = "", -- Basic_Training_-_Rope +-- ["Get your teammates out of their natural prison and save the princess!|Hint: Drilling holes should solve everything.|Hint: It might be a good idea to place a girder before starting to drill. Just saying.|Hint: All your hedgehogs need to be above the marked height!|Hint: Leaks A Lot needs to get really close to the princess!"] = "", -- A_Classic_Fairytale:family +-- ["GG!"] = "", -- User_Mission_-_Rope_Knock_Challenge +-- ["Gimme Bones"] = "", -- A_Classic_Fairytale:backstab +-- ["Glark"] = "", -- A_Classic_Fairytale:shadow ["Goal"] = "Ziel", ["GO! GO! GO!"] = "Bewegung, Bewegung, Bewegung!", ["Good birdy......"] = "Braver Vogel......", +-- ["Good Dude"] = "", -- User_Mission_-_The_Great_Escape +-- ["Good idea, they'll never find us there!"] = "", -- A_Classic_Fairytale:united +-- ["Good luck...or else!"] = "", -- A_Classic_Fairytale:journey ["Good luck out there!"] = "Viel Glück da draußen!", ["Good so far!"] = "Gut soweit!", ["Good to go!"] = "Startklar!", +-- ["Go on top of the flower"] = "", -- A_Classic_Fairytale:first_blood +-- ["Go, quick!"] = "", -- A_Classic_Fairytale:backstab +-- ["Gorkij"] = "", -- A_Classic_Fairytale:journey +-- ["Go surf!"] = "", -- WxW ["GOTCHA!"] = "ERWISCHT!", ["Grab Mines/Explosives"] = "Sammle Minen/Fässer", +-- ["Great choice, Steve! Mind if I call you that?"] = "", -- A_Classic_Fairytale:shadow +-- ["Great work! Now hit it with your Baseball Bat! |Tip: You can change weapon with 'Right Click'!"] = "", -- Basic_Training_-_Rope +-- ["Great! You will be contacted soon for assistance."] = "", -- A_Classic_Fairytale:shadow +-- ["Green lipstick bullet: [Is poisonous]"] = "", -- Continental_supplies +-- ["Greetings, "] = "", -- A_Classic_Fairytale:dragon +-- ["Greetings, cloudy one!"] = "", -- A_Classic_Fairytale:shadow +-- ["Grenade Training"] = "", -- Basic_Training_-_Grenade +-- ["Grenadiers"] = "", -- Basic_Training_-_Grenade +-- ["Guys, do you think there's more of them?"] = "", -- A_Classic_Fairytale:backstab +-- ["HAHA!"] = "", -- A_Classic_Fairytale:enemy +-- ["Haha!"] = "", -- A_Classic_Fairytale:united -- ["Hahahaha!"] = "", ["Haha, now THAT would be something!"] = "Haha, na DAS wär ja was!", +-- ["Hannibal"] = "", -- A_Classic_Fairytale:epil ["Hapless Hogs"] = "Glücklose Igel", [" Hapless Hogs left!"] = " Glücklose Igel verbleibend!", +-- [" HAS MUTATED\" )"] = "", -- +-- ["Hatless Jerry"] = "", -- A_Classic_Fairytale:queen +-- ["Have no illusions, your tribe is dead, indifferent of your choice."] = "", -- A_Classic_Fairytale:shadow +-- ["Have we ever attacked you first?"] = "", -- A_Classic_Fairytale:enemy ["Health crates extend your time."] = "Medipacks verlängern deine Zeit.", +-- ["Heavy Cannfantry"] = "", -- A_Classic_Fairytale:united ["Heavy"] = "Schwierig", +-- ["Hedge-cogs"] = "", -- A_Classic_Fairytale:enemy +-- ["Hedgehog projectile: [fire your hog like a Sticky Bomb]"] = "", -- Continental_supplies ["Hedgewars-Basketball"] = "Hedgewars-Basketball", ["Hedgewars-Knockball"] = "Hedgewars-Knockball", +-- ["Hedgibal Lecter"] = "", -- A_Classic_Fairytale:backstab ["Heh, it's not that bad."] = "Hehe, so schlimm ist es nicht.", +-- ["Hello again, "] = "", -- A_Classic_Fairytale:family +-- ["Help me, Leaks!"] = "", -- A_Classic_Fairytale:journey +-- ["Help me, please!!!"] = "", -- A_Classic_Fairytale:journey +-- ["Help me, please!"] = "", -- A_Classic_Fairytale:journey +-- ["He moves like an eagle in the sky."] = "", -- A_Classic_Fairytale:first_blood +-- ["He must be in the village already."] = "", -- A_Classic_Fairytale:journey +-- ["Here, let me help you!"] = "", -- A_Classic_Fairytale:backstab +-- ["Here, let me help you save her!"] = "", -- A_Classic_Fairytale:family +-- ["Here...pick your weapon!"] = "", -- A_Classic_Fairytale:first_blood +-- ["Hero Team"] = "", -- User_Mission_-_The_Great_Escape +-- ["He's so brave..."] = "", -- A_Classic_Fairytale:first_blood +-- ["He won't be selling us out anymore!"] = "", -- A_Classic_Fairytale:backstab +-- ["Hey, guys!"] = "", -- A_Classic_Fairytale:backstab +-- ["Hey guys!"] = "", -- A_Classic_Fairytale:united +-- ["Hey! This is cheating!"] = "", -- A_Classic_Fairytale:journey +-- ["HIGHLANDER"] = "", -- Highlander +-- ["Hightime"] = "", -- A_Classic_Fairytale:first_blood +-- ["Hint: Double Jump - Press [Backspace] twice"] = "", -- A_Classic_Fairytale:first_blood +-- ["Hint: Select the BlowTorch, aim and press [Fire]. Press [Fire] again to stop.|Don't blow up the crate."] = "", -- A_Classic_Fairytale:journey +-- ["Hint: Select the LowGravity and press [Fire]."] = "", -- A_Classic_Fairytale:journey +-- ["Hint: you might want to stay out of sight and take all the crates...|"] = "", -- A_Classic_Fairytale:journey +-- ["His arms are so strong!"] = "", -- A_Classic_Fairytale:first_blood -- ["Hit Combo!"] = "", -- ["Hmmm..."] = "", +-- ["Hmmm...actually...I didn't either."] = "", -- A_Classic_Fairytale:enemy +-- ["Hmmm, I'll have to find some way of moving him off this anti-portal surface..."] = "", -- portal +-- ["Hmmm...it's a draw. How unfortunate!"] = "", -- A_Classic_Fairytale:enemy +-- ["Hmmm...perhaps a little more time will help."] = "", -- A_Classic_Fairytale:first_blood +-- ["Hogminator"] = "", -- A_Classic_Fairytale:family +-- ["Hogs in sight!"] = "", -- Continental_supplies +-- ["HOLY SHIT!"] = "", -- Mutant +-- ["Honest Lee"] = "", -- A_Classic_Fairytale:enemy ["Hooray!"] = "Hurra!", +-- ["Hostage Situation"] = "", -- A_Classic_Fairytale:family +-- ["How can I ever repay you for saving my life?"] = "", -- A_Classic_Fairytale:journey +-- ["How come in a village full of warriors, it's up to me to save it?"] = "", -- A_Classic_Fairytale:dragon +-- ["How difficult would you like it to be?"] = "", -- A_Classic_Fairytale:first_blood +-- ["HOW DO THEY KNOW WHERE WE ARE???"] = "", -- A_Classic_Fairytale:united +-- ["However, if you fail to do so, she dies a most violent death, just like your friend! Muahahaha!"] = "", -- A_Classic_Fairytale:journey +-- ["However, if you fail to do so, she dies a most violent death! Muahahaha!"] = "", -- A_Classic_Fairytale:journey +-- ["However, my mates don't agree with me on letting you go..."] = "", -- A_Classic_Fairytale:dragon +-- [" HP"] = "", -- Mutant ["Hunter"] = "Jäger", --Bazooka, Shotgun, SniperRifle +-- ["I believe there's more of them."] = "", -- A_Classic_Fairytale:backstab +-- ["I can see you have been training diligently."] = "", -- A_Classic_Fairytale:first_blood +-- ["I can't believe it worked!"] = "", -- A_Classic_Fairytale:shadow +-- ["I can't believe this!"] = "", -- A_Classic_Fairytale:enemy +-- ["I can't believe what I'm hearing!"] = "", -- A_Classic_Fairytale:backstab +-- ["I can't wait any more, I have to save myself!"] = "", -- A_Classic_Fairytale:shadow +-- ["I could just teleport myself there..."] = "", -- A_Classic_Fairytale:family +-- ["I'd better get going myself."] = "", -- A_Classic_Fairytale:journey +-- ["I didn't until about a month ago."] = "", -- A_Classic_Fairytale:enemy +-- ["I don't know how you did that.. But good work! |The next one should be easy as cake for you!"] = "", -- Basic_Training_-_Rope +-- ["I feel something...a place! They will arrive near the circles!"] = "", -- A_Classic_Fairytale:backstab +-- ["If only I had a way..."] = "", -- A_Classic_Fairytale:backstab +-- ["If only I were given a chance to explain my being here..."] = "", -- A_Classic_Fairytale:first_blood +-- ["I forgot that she's the daughter of the chief, too..."] = "", -- A_Classic_Fairytale:backstab +-- ["If they try coming here, they can have a taste of my delicious knuckles!"] = "", -- A_Classic_Fairytale:united +-- ["If you agree to provide the information we need, you will be spared!"] = "", -- A_Classic_Fairytale:shadow +-- ["If you can get that crate fast enough, your beloved \"princess\" may go free."] = "", -- A_Classic_Fairytale:journey +-- ["If you decide to help us, though, we will no longer need to find a new governor for the island."] = "", -- A_Classic_Fairytale:shadow +-- ["If you get stuck, use your Desert Eagle or restart the mission!|"] = "", -- A_Classic_Fairytale:journey +-- ["If you know what I mean..."] = "", -- A_Classic_Fairytale:shadow +-- ["If you say so..."] = "", -- A_Classic_Fairytale:shadow +-- ["If you wish to restart the course, hold [Precise] while your turn ends (e.g with Skip)"] = "", -- +-- ["I guess you'll have to kill them."] = "", -- A_Classic_Fairytale:dragon +-- ["I have come to make you an offering..."] = "", -- A_Classic_Fairytale:shadow +-- ["I have no idea where that mole disappeared...Can you see it?"] = "", -- A_Classic_Fairytale:shadow +-- ["I have to follow that alien."] = "", -- A_Classic_Fairytale:backstab +-- ["I have to get back to the village!"] = "", -- A_Classic_Fairytale:shadow +-- ["I hope you are prepared for a small challenge, young one."] = "", -- A_Classic_Fairytale:first_blood +-- ["I just don't want to sink to your level."] = "", -- A_Classic_Fairytale:backstab +-- ["I just found out that they have captured your princess!"] = "", -- A_Classic_Fairytale:family +-- ["I just wonder where Ramon and Spiky disappeared..."] = "", -- A_Classic_Fairytale:journey +-- ["I'll hold them off while you return to the village!"] = "", -- A_Classic_Fairytale:shadow +-- ["Imagine those targets are the wolves that killed your parents! Take your anger out on them!"] = "", -- A_Classic_Fairytale:first_blood +-- ["I'm...alive? How? Why?"] = "", -- A_Classic_Fairytale:backstab +-- ["I'm a ninja."] = "", -- A_Classic_Fairytale:dragon +-- ["I marked the place of their arrival. You're welcome!"] = "", -- A_Classic_Fairytale:backstab +-- ["I'm certain that this is a misunderstanding, fellow hedgehogs!"] = "", -- A_Classic_Fairytale:first_blood +-- ["I mean, none of you ceased to live."] = "", -- A_Classic_Fairytale:enemy +-- ["I'm getting old for this!"] = "", -- A_Classic_Fairytale:family +-- ["I'm getting thirsty..."] = "", -- A_Classic_Fairytale:family +-- ["I'm here to help you rescue her."] = "", -- A_Classic_Fairytale:family +-- ["I'm not sure about that!"] = "", -- A_Classic_Fairytale:united +-- ["Impressive...you are still dry as the corpse of a hawk after a week in the desert..."] = "", -- A_Classic_Fairytale:first_blood +-- ["I'm so scared!"] = "", -- A_Classic_Fairytale:united +-- ["Incredible..."] = "", -- A_Classic_Fairytale:shadow +-- ["I need to find the others!"] = "", -- A_Classic_Fairytale:backstab +-- ["I need to get to the other side of this island, fast!"] = "", -- A_Classic_Fairytale:journey +-- ["I need to move the tribe!"] = "", -- A_Classic_Fairytale:united +-- ["I need to prevent their arrival!"] = "", -- A_Classic_Fairytale:backstab +-- ["I need to warn the others."] = "", -- A_Classic_Fairytale:backstab +-- ["In fact, you are the only one that's been acting strangely."] = "", -- A_Classic_Fairytale:backstab +-- ["In order to get to the other side, you need to collect the crates first.|"] = "", -- A_Classic_Fairytale:dragon ["Instructor"] = "Ausbilder", -- 01#Boot_Camp, User_Mission_-_Dangerous_Ducklings +-- ["Interesting idea, haha!"] = "", -- A_Classic_Fairytale:enemy +-- ["Interesting! Last time you said you killed a cannibal!"] = "", -- A_Classic_Fairytale:backstab +-- ["In the meantime, take these and return to your \"friend\"!"] = "", -- A_Classic_Fairytale:shadow ["invaders destroyed"] = "Angreifer zerstört", +-- ["Invasion"] = "", -- A_Classic_Fairytale:united +-- ["I saw it with my own eyes!"] = "", -- A_Classic_Fairytale:shadow +-- ["I see..."] = "", -- A_Classic_Fairytale:shadow +-- ["I see you have already taken the leap of faith."] = "", -- A_Classic_Fairytale:first_blood +-- ["I see you would like his punishment to be more...personal..."] = "", -- A_Classic_Fairytale:first_blood +-- ["I sense another wave of cannibals heading my way!"] = "", -- A_Classic_Fairytale:backstab +-- ["I sense another wave of cannibals heading our way!"] = "", -- A_Classic_Fairytale:backstab +-- ["I shouldn't have drunk that last pint."] = "", -- A_Classic_Fairytale:dragon +-- ["Is this place in my head?"] = "", -- A_Classic_Fairytale:dragon +-- ["It doesn't matter. I won't let that alien hurt my daughter!"] = "", -- A_Classic_Fairytale:dragon +-- ["I think we are safe here."] = "", -- A_Classic_Fairytale:backstab +-- ["I thought their shaman died when he tried our medicine!"] = "", -- A_Classic_Fairytale:shadow +-- ["It is called 'Hogs of Steel'."] = "", -- A_Classic_Fairytale:enemy +-- ["It is time to practice your fighting skills."] = "", -- A_Classic_Fairytale:first_blood +-- ["It must be a childhood trauma..."] = "", -- A_Classic_Fairytale:family +-- ["It must be the aliens!"] = "", -- A_Classic_Fairytale:backstab +-- ["It must be the aliens' deed."] = "", -- A_Classic_Fairytale:backstab +-- ["It must be the cyborgs again!"] = "", -- A_Classic_Fairytale:enemy +-- ["I told you, I just found them."] = "", -- A_Classic_Fairytale:backstab ["It's a good thing SUDDEN DEATH is 99 turns away..."] = "Gut, dass SUDDEN DEATH noch 99 Runden entfernt ist...", +-- ["It's always up to women to clear up the mess men created!"] = "", -- A_Classic_Fairytale:dragon +-- ["It's a shame, I forgot how to do that!"] = "", -- A_Classic_Fairytale:family +-- ["It's impossible to communicate with the spirits without a shaman."] = "", -- A_Classic_Fairytale:shadow +-- ["It's over..."] = "", -- A_Classic_Fairytale:shadow +-- ["It's time you learned that your actions have consequences!"] = "", -- A_Classic_Fairytale:journey +-- ["It's worth more than wood!"] = "", -- A_Classic_Fairytale:enemy +-- ["It wants our brains!"] = "", -- A_Classic_Fairytale:shadow +-- ["It was not a dream, unwise one!"] = "", -- A_Classic_Fairytale:backstab +-- ["I've seen this before. They just appear out of thin air."] = "", -- A_Classic_Fairytale:united +-- ["I want to play a game..."] = "", -- A_Classic_Fairytale:journey +-- ["I want to see how it handles this!"] = "", -- A_Classic_Fairytale:backstab +-- ["I wish to help you, "] = "", -- A_Classic_Fairytale:dragon +-- ["I wonder where Dense Cloud is..."] = "", -- A_Classic_Fairytale:journey, A_Classic_Fairytale:shadow +-- ["I wonder why I'm so angry all the time..."] = "", -- A_Classic_Fairytale:family +-- ["I won't let you kill her!"] = "", -- A_Classic_Fairytale:journey +-- ["Jack"] = "", -- A_Classic_Fairytale:dragon, A_Classic_Fairytale:family, A_Classic_Fairytale:queen +-- ["Jeremiah"] = "", -- A_Classic_Fairytale:dragon +-- ["John"] = "", -- A_Classic_Fairytale:journey +-- ["Judas"] = "", -- A_Classic_Fairytale:backstab ["Jumping is disabled"] = "Sprünge sind deaktiviert!", +-- ["Just kidding, none of you have died!"] = "", -- A_Classic_Fairytale:enemy +-- ["Just on a walk."] = "", -- A_Classic_Fairytale:united +-- ["Just wait till I get my hands on that trauma! ARGH!"] = "", -- A_Classic_Fairytale:family ["Kamikaze Expert!"] = "Kamikazeexperte!", ["Keep it up!"] = "Weiter so!", +-- ["Kerguelen"] = "", -- Continental_supplies ["Killing spree!"] = "Blutrausch!", +-- ["KILL IT!"] = "", -- A_Classic_Fairytale:first_blood -- ["KILLS"] = "", +-- ["Kill the aliens!"] = "", -- A_Classic_Fairytale:dragon +-- ["Kill the cannibal!"] = "", -- A_Classic_Fairytale:first_blood +-- ["Kill the traitor...or spare his life!|Kill him or press [Precise]!"] = "", -- A_Classic_Fairytale:backstab ["Last Target!"] = "Letzte Zielscheibe!", +-- ["Leader"] = "", -- A_Classic_Fairytale:enemy +-- ["Leaderbot"] = "", -- A_Classic_Fairytale:queen +-- ["Leaks A Lot"] = "", -- A_Classic_Fairytale:backstab, A_Classic_Fairytale:dragon, A_Classic_Fairytale:enemy, A_Classic_Fairytale:epil, A_Classic_Fairytale:family, A_Classic_Fairytale:first_blood, A_Classic_Fairytale:journey, A_Classic_Fairytale:queen, A_Classic_Fairytale:shadow, A_Classic_Fairytale:united +-- ["Leaks A Lot, depressed for killing his loved one, failed to save the village..."] = "", -- A_Classic_Fairytale:journey +-- ["Leaks A Lot gave his life for his tribe! He should have survived!"] = "", -- A_Classic_Fairytale:first_blood +-- ["Leaks A Lot must survive!"] = "", -- A_Classic_Fairytale:journey +-- ["Led Heart"] = "", -- A_Classic_Fairytale:queen +-- ["Lee"] = "", -- A_Classic_Fairytale:dragon, A_Classic_Fairytale:family, A_Classic_Fairytale:queen -- ["[Left Shift]"] = "", +-- ["Let a Continent provide your weapons!"] = "", -- Continental_supplies +-- ["Let me test your skills a little, will you?"] = "", -- A_Classic_Fairytale:journey +-- ["Let's go home!"] = "", -- A_Classic_Fairytale:journey +-- ["Let's head back to the village!"] = "", -- A_Classic_Fairytale:shadow +-- ["Let's see what your comrade does now!"] = "", -- A_Classic_Fairytale:journey +-- ["Let's show those cannibals what we're made of!"] = "", -- A_Classic_Fairytale:backstab +-- ["Let them have a taste of my fury!"] = "", -- A_Classic_Fairytale:backstab +-- ["Let us help, too!"] = "", -- A_Classic_Fairytale:backstab +-- ["Light Cannfantry"] = "", -- A_Classic_Fairytale:united ["Listen up, maggot!!"] = "Aufgepasst, du Made!!", +-- ["Little did they know that this hunt will mark them forever..."] = "", -- A_Classic_Fairytale:shadow -- ["Lively Lifeguard"] = "", +-- ["Lonely Cries: [Rise the water if no hog is in the circle and deal 1 damage to all hogs]"] = "", -- Continental_supplies +-- ["Look, I had no choice!"] = "", -- A_Classic_Fairytale:backstab +-- ["Look out! There's more of them!"] = "", -- A_Classic_Fairytale:backstab +-- ["Look out! We're surrounded by cannibals!"] = "", -- A_Classic_Fairytale:enemy +-- ["Looks like the whole world is falling apart!"] = "", -- A_Classic_Fairytale:enemy +-- ["Luckily, I've managed to snatch some of them."] = "", -- A_Classic_Fairytale:united +-- ["LUDICROUS KILL"] = "", -- Mutant +-- ["May the spirits aid you in all your quests!"] = "", -- A_Classic_Fairytale:backstab +-- ["Medicine: [Fire some exploding medicine that will heal all hogs effected by the explosion]"] = "", -- Continental_supplies +-- ["MEGA KILL"] = "", -- Mutant +-- ["Meiwes"] = "", -- A_Classic_Fairytale:backstab +-- ["Mindy"] = "", -- A_Classic_Fairytale:united ["Mine Deployer"] = "Minenleger", ["Mine Eater!"] = "Minenfresser!", ["|- Mines Time:"] = "| - Minenzündzeit: ", -- User_Mission_-_Diver, User_Mission_-_Spooky_Tree, User_Mission_-_Teamwork ["MISSION FAILED"] = "MISSION GESCHEITERT", -- User_Mission_-_Dangerous_Ducklings, User_Mission_-_Diver, User_Mission_-_Spooky_Tree, User_Mission_-_Teamwork ["MISSION SUCCESSFUL"] = "MISSION ERFOLGREICH", -- User_Mission_-_Diver, User_Mission_-_Spooky_Tree, User_Mission_-_Teamwork ["MISSION SUCCESS"] = "MISSIONSERFOLG", +-- ["Molotov"] = "", -- Continental_supplies +-- ["MONSTER KILL"] = "", -- Mutant +-- ["More Natives"] = "", -- A_Classic_Fairytale:epil ["Movement: [Up], [Down], [Left], [Right]"] = "Bewegung: [Hoch], [Runter], [Links], [Rechts]", -- ["Multi-shot!"] = "", ["Munition!"] = "Munition erschöpft!", +-- ["Muriel"] = "", -- A_Classic_Fairytale:backstab, A_Classic_Fairytale:dragon, A_Classic_Fairytale:family, A_Classic_Fairytale:queen +-- ["Muscle Dissolver"] = "", -- A_Classic_Fairytale:shadow +-- ["-------"] = "", -- Mutant +-- ["Nade Boy"] = "", -- Basic_Training_-_Grenade +-- ["Name"] = "", -- A_Classic_Fairytale:queen ["Nameless Heroes"] = "Namenlose Helden", +-- ["Nancy Screw"] = "", -- A_Classic_Fairytale:enemy, A_Classic_Fairytale:queen +-- ["Napalm rocket: [Fire a bomb with napalm!]"] = "", -- Continental_supplies +-- ["Natives"] = "", -- A_Classic_Fairytale:backstab, A_Classic_Fairytale:dragon, A_Classic_Fairytale:enemy, A_Classic_Fairytale:epil, A_Classic_Fairytale:family, A_Classic_Fairytale:first_blood, A_Classic_Fairytale:journey, A_Classic_Fairytale:queen, A_Classic_Fairytale:shadow, A_Classic_Fairytale:united ["New Barrels Per Turn"] = "Neue Fässer jede Runde", ["NEW CLAN RECORD: "] = "NEUER KLAN-REKORD", ["NEW fastest lap: "] = "NEUE schnellste Runde: ", ["New Mines Per Turn"] = "Neue Minen jede Runde", ["NEW RACE RECORD: "] = "NEUER RENNREKORD: ", -- ["Newton's Hammock"] = "", +-- ["Nicely done, meatbags!"] = "", -- A_Classic_Fairytale:enemy +-- ["Nice work, "] = "", -- A_Classic_Fairytale:dragon +-- ["Nice work!"] = "", -- A_Classic_Fairytale:enemy +-- ["Nilarian"] = "", -- A_Classic_Fairytale:queen +-- ["No, I came back to help you out..."] = "", -- A_Classic_Fairytale:shadow +-- ["No...I wonder where they disappeared?!"] = "", -- A_Classic_Fairytale:journey +-- ["Nom-Nom"] = "", -- A_Classic_Fairytale:journey +-- ["NomNom"] = "", -- A_Classic_Fairytale:united +-- ["Nope. It was one fast mole, that's for sure."] = "", -- A_Classic_Fairytale:shadow +-- ["No! Please, help me!"] = "", -- A_Classic_Fairytale:journey +-- ["NORMAL"] = "", -- Continental_supplies +-- ["North America"] = "", -- Continental_supplies +-- ["Not all hogs are born equal."] = "", -- Highlander ["NOT ENOUGH WAYPOINTS"] = "NICHT GENUG WEGPUNKTE", +-- ["Not now, Fiery Water!"] = "", -- A_Classic_Fairytale:backstab ["Not So Friendly Match"] = "Kein-so-Freundschaftsspiel", -- Basketball, Knockball +-- ["Not you again! My head still hurts from last time!"] = "", -- A_Classic_Fairytale:shadow +-- ["No, we made sure of that!"] = "", -- A_Classic_Fairytale:united +-- ["Now find the next target! |Tip: Normally you lose health by falling down, so be careful!"] = "", -- Basic_Training_-_Rope +-- ["No! What have I done?! What have YOU done?!"] = "", -- A_Classic_Fairytale:journey +-- ["No. Where did he come from?"] = "", -- A_Classic_Fairytale:shadow +-- ["Now how do I get on the other side?!"] = "", -- A_Classic_Fairytale:dragon +-- ["No. You and the rest of the tribe are safer there!"] = "", -- A_Classic_Fairytale:backstab +-- ["Obliterate them!|Hint: You might want to take cover..."] = "", -- A_Classic_Fairytale:shadow +-- ["Obstacle course"] = "", -- A_Classic_Fairytale:dragon +-- ["Of course I have to save her. What did I expect?!"] = "", -- A_Classic_Fairytale:family +-- ["OH, COME ON!"] = "", -- A_Classic_Fairytale:journey +-- ["Oh, my!"] = "", -- A_Classic_Fairytale:first_blood +-- ["Oh, my! This is even more entertaining than I've expected!"] = "", -- A_Classic_Fairytale:backstab ["Oh no! Just try again!"] = "Oh nein! Versuch's nochmal!", -- User_Mission_-_Diver, User_Mission_-_Spooky_Tree, User_Mission_-_Teamwork +-- ["Oh no, not "] = "", -- A_Classic_Fairytale:backstab, A_Classic_Fairytale:united ["Oh no! Time's up! Just try again."] = "Oh nein! Die Zeit ist um! Versuche es nochmal.", --Bazooka, Shotgun, SniperRifle +-- ["Oh no! You failed! Just try again."] = "", -- Basic_Training_-_Cluster_Bomb +-- ["Oh, silly me! I forgot that I'm the shaman."] = "", -- A_Classic_Fairytale:backstab +-- ["Olive"] = "", -- A_Classic_Fairytale:united +-- ["Omnivore"] = "", -- A_Classic_Fairytale:first_blood +-- ["Once upon a time, on an island with great natural resources, lived two tribes in heated conflict..."] = "", -- A_Classic_Fairytale:first_blood +-- ["ONE HOG PER TEAM! KILLING EXCESS HEDGES"] = "", -- Mutant +-- ["One tribe was peaceful, spending their time hunting and training, enjoying the small pleasures of life..."] = "", -- A_Classic_Fairytale:first_blood +-- ["Oops...I dropped them."] = "", -- A_Classic_Fairytale:united +-- ["Open that crate and we will continue!"] = "", -- A_Classic_Fairytale:first_blood -- ["Operation Diver"] = "", ["Opposing Team: "] = "Gegnerisches Team: ", +-- ["Orlando Boom!"] = "", -- A_Classic_Fairytale:queen +-- ["Ouch!"] = "", -- User_Mission_-_Rope_Knock_Challenge +-- ["Our tribe, our beautiful island!"] = "", -- A_Classic_Fairytale:enemy +-- ["Parachute"] = "", -- Continental_supplies ["Pathetic Hog #%d"] = "Erbärmlicher Igel #%d", ["Pathetic Resistance"] = "Erbärmlicher Widerstand", -- User_Mission_-_Bamboo_Thicket, User_Mission_-_Newton_and_the_Hammock +-- ["Perfect! Now try to get the next crate without hurting yourself!"] = "", -- A_Classic_Fairytale:first_blood ["Per-Hog Ammo"] = "Munition pro Igel", +-- ["- Per team weapons|- 9 weaponschemes|- Unique new weapons| |Select continent first round with the Weapon Menu or by ([switch/tab]=Increase,[presice/left shift]=Decrease)"] = "", -- +-- ["Pfew! That was close!"] = "", -- A_Classic_Fairytale:shadow +-- ["Piñata bullet: [Contains some sweet candy!]"] = "", -- Continental_supplies +-- ["Pings left:"] = "", -- Space_Invasion ["Place more waypoints using [ENTER]"] = "Setze mehr Wegpunkte durch Drücken von [ENTER]", ["Place more waypoints using the 'Air Attack' weapon."] = "Platziere mehr Wegpunkte durch Verwenden der 'Luftangriff'-Waffe", +-- ["Planes Used:"] = "", -- User_Mission_-_RCPlane_Challenge +-- ["Planes Used"] = "", -- User_Mission_-_RCPlane_Challenge +-- ["Play with me!"] = "", -- A_Classic_Fairytale:shadow +-- ["Please place the way-point further from the waterline."] = "", -- Racer +-- ["Please place the way-point in the open, within the map boundaries."] = "", -- Racer +-- ["Please, stop releasing your \"smoke signals\"!"] = "", -- A_Classic_Fairytale:shadow +-- ["Point Blank Combo!"] = "", -- Space_Invasion ["points"] = "Punkte", -- Control, CTF_Blizzard, Basic_Training_-_Bazooka, Basic_Training_-_Shotgun, Basic_Training_-_Sniper_Rifle ["Poison"] = "Gift", +-- ["Portal hint: one goes to the destination, and one is the entrance.|"] = "", -- A_Classic_Fairytale:dragon +-- ["Portal mission"] = "", -- portal ["Power Remaining"] = "Verbleibende Energie", ["Prepare yourself"] = "Mach dich bereit", +-- ["Press [Enter] to accept this configuration."] = "", -- WxW +-- ["Press [Left] or [Right] to move around, [Enter] to jump"] = "", -- A_Classic_Fairytale:first_blood -- ["Press [Precise] to skip intro"] = "", +-- ["Private Novak"] = "", -- Basic_Training_-_Cluster_Bomb +-- ["Protect yourselves!|Grenade hint: set the timer with [1-5], aim with [Up]/[Down] and hold [Space] to set power"] = "", -- A_Classic_Fairytale:shadow + ["PUNKTESTAND"] = "", ["Race complexity limit reached."] = "Rennkomplexitätslimit erreicht.", -- ["RACER"] = "", +-- ["Rachel"] = "", -- A_Classic_Fairytale:dragon, A_Classic_Fairytale:family, A_Classic_Fairytale:queen +-- ["Radar Ping"] = "", -- Space_Invasion +-- ["Raging Buffalo"] = "", -- A_Classic_Fairytale:backstab, A_Classic_Fairytale:dragon, A_Classic_Fairytale:enemy, A_Classic_Fairytale:epil, A_Classic_Fairytale:family, A_Classic_Fairytale:queen, A_Classic_Fairytale:united +-- ["Ramon"] = "", -- A_Classic_Fairytale:enemy, A_Classic_Fairytale:epil, A_Classic_Fairytale:family, A_Classic_Fairytale:queen, A_Classic_Fairytale:shadow +-- ["RC PLANE TRAINING"] = "", -- User_Mission_-_RCPlane_Challenge +-- ["Really?! You thought you could harm me with your little toys?"] = "", -- A_Classic_Fairytale:shadow +-- ["Regurgitator"] = "", -- A_Classic_Fairytale:backstab +-- ["Reinforcements"] = "", -- A_Classic_Fairytale:backstab +-- ["Remember: The rope only bend around objects, |if it doesn't hit anything it's always stright!"] = "", -- Basic_Training_-_Rope +-- ["Remember this, pathetic animal: when the day comes, you will regret your blind loyalty!"] = "", -- A_Classic_Fairytale:shadow [" - 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"] = " - Bringe die gegnerische Flagge zu deiner Heimatbasis um zu punkten. | - Das Team das zuerst 3 Flaggen erobert gewinnt. | - Du kannst nur punkten wenn deine eigene Flagge in deiner Basis ist | - Igel lassen die Flagge fallen wenn sie sterben oder ertrinken | - Fallen gelassene Flaggen können zurückgebracht oder wieder gestohlen werden | - Igel tauchen nach ihrem Tod wieder auf", +-- ["Return to Leaks A Lot! If you get stuck, press [Precise] to try again!"] = "", -- A_Classic_Fairytale:shadow +-- ["Righteous Beard"] = "", -- A_Classic_Fairytale:backstab, A_Classic_Fairytale:dragon, A_Classic_Fairytale:enemy, A_Classic_Fairytale:epil, A_Classic_Fairytale:family, A_Classic_Fairytale:first_blood, A_Classic_Fairytale:queen, A_Classic_Fairytale:united +-- ["ROPE-KNOCKING"] = "", -- User_Mission_-_Rope_Knock_Challenge +-- ["Rope Training"] = "", -- Basic_Training_-_Rope +-- ["Rot Molester"] = "", -- A_Classic_Fairytale:shadow -- ["Round Limit:"] = "", ["Round Limit"] = "Rundenbegrenzung", -- ["Rounds Complete: "] = "", ["Rounds Complete"] = "Runden Gespielt", ["RULES OF THE GAME [Press ESC to view]"] = "SPIEL REGELN (Drücke ESC zum Anzeigen)", +-- ["Rusty Joe"] = "", -- A_Classic_Fairytale:queen -- ["s|"] = "", +-- ["Sabotage: [Sabotage all hogs in the circle and deal ~10 dmg]"] = "", -- Continental_supplies +-- ["Salivaslurper"] = "", -- A_Classic_Fairytale:united +-- ["Salvation"] = "", -- A_Classic_Fairytale:family +-- ["Salvation was one step closer now..."] = "", -- A_Classic_Fairytale:dragon ["Save as many hapless hogs as possible!"] = "Rette so viele glücklose Igel als möglich!", - ["PUNKTESTAND"] = "", +-- ["Save Fell From Heaven!"] = "", -- A_Classic_Fairytale:journey +-- ["Save Leaks A Lot!|Hint: The Switch utility might be of help to you."] = "", -- A_Classic_Fairytale:shadow +-- ["Save the princess! All your hogs must survive!|Hint: Kill the cyborgs first! Use the ammo very carefully!|Hint: You might want to spare a girder for cover!"] = "", -- A_Classic_Fairytale:family +-- ["Save the princess by collecting the crate in under 12 turns!"] = "", -- A_Classic_Fairytale:journey +-- ["Scalp Muncher"] = "", -- A_Classic_Fairytale:backstab +-- ["Score"] = "", -- Mutant +-- ["SCORE"] = "", -- Space_Invasion +-- ["Scream from a Walrus: [Deal 20 damage + 10% of your hogs health to all hogs around you and get half back]"] = "", -- Continental_supplies -- ["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 +-- ["Seduction"] = "", -- Continental_supplies +-- ["Seems like every time you take a \"walk\", the enemy find us!"] = "", -- A_Classic_Fairytale:backstab +-- ["See that crate farther on the right?"] = "", -- A_Classic_Fairytale:first_blood ["See ya!"] = "Mach's gut!", +-- ["Segmentation Paul"] = "", -- A_Classic_Fairytale:dragon +-- ["Select continent!"] = "", -- Continental_supplies +-- ["Select difficulty: [Left] - easier or [Right] - harder"] = "", -- A_Classic_Fairytale:first_blood ["selected!"] = "ausgewählt!", -- ["s"] = "", -- GaudyRacer, Space_Invasion +-- ["... share your beauty with the world every morning, my princess!"] = "", -- A_Classic_Fairytale:journey +-- ["She's behind that tall thingy."] = "", -- A_Classic_Fairytale:family ["Shield boosted! +30 power"] = "Schild verstärkt! +30 Energie", ["Shield Depleted"] = "Schild aufgebraucht!", ["Shield is fully recharged!"] = "Schild vollständig aufgeladen!", @@ -163,60 +648,340 @@ ["Shield OFF:"] = "Schild AUS:", ["Shield ON:"] = "Schild AN:", ["Shield Seeker!"] = "Schildsucher!", +-- ["Shotgun"] = "", -- Continental_supplies ["Shotgun Team"] = "Schrotflinten-Team", ["Shotgun Training"] = "Schrotflinten-Training", ["shots remaining."] = "Schüsse übrig", ["Silly"] = "Doofi", ["Sinky"] = "Blubb", +-- ["Sirius Lee"] = "", -- A_Classic_Fairytale:enemy ["%s is out and Team %d|scored a penalty!| |Score:"] = "%s ist draußen und Team %d|erhält eine Strafe!| |Punktestand:", -- Basketball, Knockball ["%s is out and Team %d|scored a point!| |Score:"] = "%s ist draußen und Team %d|erhält einen Punkt!| |Punktestand:", -- Basketball, Knockball +-- ["Slippery"] = "", -- A_Classic_Fairytale:journey +-- ["Smith 0.97"] = "", -- A_Classic_Fairytale:enemy +-- ["Smith 0.98"] = "", -- A_Classic_Fairytale:enemy +-- ["Smith 0.99a"] = "", -- A_Classic_Fairytale:enemy +-- ["Smith 0.99b"] = "", -- A_Classic_Fairytale:enemy +-- ["Smith 0.99f"] = "", -- A_Classic_Fairytale:enemy +-- ["Smith 1.0"] = "", -- A_Classic_Fairytale:enemy +-- ["Sniper Rifle"] = "", -- Continental_supplies +-- ["Sniper!"] = "", -- Space_Invasion ["Sniper Training"] = "Scharfschützen-Training", ["Sniperz"] = "Heckenschützen", +-- ["So humiliating..."] = "", -- A_Classic_Fairytale:first_blood +-- ["South America"] = "", -- Continental_supplies +-- ["So? What will it be?"] = "", -- A_Classic_Fairytale:shadow +-- ["Spawn the crate, and attack!"] = "", -- WxW +-- ["Special Weapons:"] = "", -- Continental_supplies + ["Spielmodifikatoren: "] = "", +-- ["Spiky Cheese"] = "", -- A_Classic_Fairytale:enemy, A_Classic_Fairytale:epil, A_Classic_Fairytale:family, A_Classic_Fairytale:queen, A_Classic_Fairytale:shadow +-- ["Spleenlover"] = "", -- A_Classic_Fairytale:united ["Sponge"] = "Schwamm", -- ["Spooky Tree"] = "", -- ["STATUS UPDATE"] = "", -- GaudyRacer, Space_Invasion +-- ["Steel Eye"] = "", -- A_Classic_Fairytale:queen +-- ["Step By Step"] = "", -- A_Classic_Fairytale:first_blood +-- ["Steve"] = "", -- A_Classic_Fairytale:dragon, A_Classic_Fairytale:family, A_Classic_Fairytale:queen +-- ["Sticky Mine"] = "", -- Continental_supplies +-- ["Stronglings"] = "", -- A_Classic_Fairytale:shadow +-- ["Structure"] = "", -- Continental_supplies +-- ["Super Weapons"] = "", -- WxW +-- ["Surf Before Crate"] = "", -- WxW +-- ["Surfer! +15 points!"] = "", -- Space_Invasion +-- ["Surfer!"] = "", -- WxW +-- ["Survive!|Hint: Cinematics can be skipped with the [Precise] key."] = "", -- A_Classic_Fairytale:shadow +-- ["Swing, Leaks A Lot, on the wings of the wind!"] = "", -- A_Classic_Fairytale:first_blood ["Switched to "] = "Gewechselt zu ", +-- ["Syntax Errol"] = "", -- A_Classic_Fairytale:dragon +-- ["Talk about mixed signals..."] = "", -- A_Classic_Fairytale:dragon -- ["Team %d: "] = "", ["Team Scores"] = "Teampunktestand", -- Control, Space_Invasion +-- ["Teleport hint: just use the mouse to select the destination!"] = "", -- A_Classic_Fairytale:dragon +-- ["Thanks!"] = "", -- A_Classic_Fairytale:family +-- ["Thank you, my hero!"] = "", -- A_Classic_Fairytale:family +-- ["Thank you, oh, thank you, Leaks A Lot!"] = "", -- A_Classic_Fairytale:journey +-- ["Thank you, oh, thank you, my heroes!"] = "", -- A_Classic_Fairytale:journey +-- ["That is, indeed, very weird..."] = "", -- A_Classic_Fairytale:united +-- ["That makes it almost invaluable!"] = "", -- A_Classic_Fairytale:enemy +-- ["That ought to show them!"] = "", -- A_Classic_Fairytale:backstab +-- ["That's for my father!"] = "", -- A_Classic_Fairytale:backstab +-- ["That shaman sure knows what he's doing!"] = "", -- A_Classic_Fairytale:shadow -- ["That Sinking Feeling"] = "", +-- ["That's not our problem!"] = "", -- A_Classic_Fairytale:enemy +-- ["That's typical of you!"] = "", -- A_Classic_Fairytale:family +-- ["That was just mean!"] = "", -- A_Classic_Fairytale:backstab, A_Classic_Fairytale:united ["That was pointless."] = "Das war sinnlos.", +-- ["The answer is...entertaintment. You'll see what I mean."] = "", -- A_Classic_Fairytale:backstab +-- ["The anti-portal zone is all over the floor, and I have nothing to kill him...Droping something could hurt him enough to kill him..."] = "", -- portal +-- ["The Bull's Eye"] = "", -- A_Classic_Fairytale:first_blood +-- ["The caves are well hidden, they won't find us there!"] = "", -- A_Classic_Fairytale:united +-- ["The Crate Frenzy"] = "", -- A_Classic_Fairytale:first_blood +-- ["The Dilemma"] = "", -- A_Classic_Fairytale:shadow +-- ["The enemy can't move but it might be a good idea to stay out of sight!|"] = "", -- A_Classic_Fairytale:dragon ["The enemy is hiding out on yonder ducky!"] = "Der Feind versteckt sich auf dem Entlein dort drüben!", +-- ["The Enemy Of My Enemy"] = "", -- A_Classic_Fairytale:enemy +-- ["The First Blood"] = "", -- A_Classic_Fairytale:first_blood +-- ["The First Encounter"] = "", -- A_Classic_Fairytale:shadow ["The flag will respawn next round."] = "Die Fahne wird nächste Runde wieder auftauchen.", +-- ["The food bites back"] = "", -- A_Classic_Fairytale:backstab +-- ["The giant umbrella from the last crate should help break the fall."] = "", -- A_Classic_Fairytale:first_blood +-- ["The Great Escape"] = "", -- User_Mission_-_The_Great_Escape +-- ["The guardian"] = "", -- A_Classic_Fairytale:shadow +-- ["The Individualist"] = "", -- A_Classic_Fairytale:shadow +-- ["Their buildings were very primitive back then, even for an uncivilised island."] = "", -- A_Classic_Fairytale:united +-- ["The Journey Back"] = "", -- A_Classic_Fairytale:journey +-- ["The Leap of Faith"] = "", -- A_Classic_Fairytale:first_blood +-- ["The Moonwalk"] = "", -- A_Classic_Fairytale:journey ["The Nameless One"] = "Der Namenlose", +-- ["The next one is pretty hard! |Tip: You have to do multiple swings!"] = "", -- Basic_Training_-_Rope +-- ["Then how do they keep appearing?"] = "", -- A_Classic_Fairytale:shadow +-- ["The other one were all cannibals, spending their time eating the organs of fellow hedgehogs..."] = "", -- A_Classic_Fairytale:first_blood +-- ["There must be a spy among us!"] = "", -- A_Classic_Fairytale:backstab +-- ["There's more of them? When did they become so hungry?"] = "", -- A_Classic_Fairytale:backstab, A_Classic_Fairytale:united +-- ["There's nothing more satisfying for me than seeing you share your beauty with the world every morning, my princess!"] = "", -- A_Classic_Fairytale:journey +-- ["There's nothing more satisfying to us than seeing you share your beauty..."] = "", -- A_Classic_Fairytale:journey +-- ["There's nothing more satisfying to us than seeing you share your beauty with the world every morning, my princess!"] = "", -- A_Classic_Fairytale:journey +-- ["The Rising"] = "", -- A_Classic_Fairytale:first_blood +-- ["The Savior"] = "", -- A_Classic_Fairytale:journey +-- ["These primitive people are so funny!"] = "", -- A_Classic_Fairytale:backstab +-- ["The Shadow Falls"] = "", -- A_Classic_Fairytale:shadow +-- ["The Showdown"] = "", -- A_Classic_Fairytale:shadow +-- ["The Slaughter"] = "", -- A_Classic_Fairytale:dragon, A_Classic_Fairytale:first_blood ["THE SPECIALISTS"] = "DIE SPEZIALISTEN", +-- ["The spirits of the ancerstors are surely pleased, Leaks A Lot."] = "", -- A_Classic_Fairytale:first_blood +-- ["The Torment"] = "", -- A_Classic_Fairytale:first_blood +-- ["The Tunnel Maker"] = "", -- A_Classic_Fairytale:journey +-- ["The Ultimate Weapon"] = "", -- A_Classic_Fairytale:first_blood +-- ["The Union"] = "", -- A_Classic_Fairytale:enemy +-- ["The village, unprepared, was destroyed by the cyborgs..."] = "", -- A_Classic_Fairytale:journey +-- ["The walk of Fame"] = "", -- A_Classic_Fairytale:shadow +-- ["The wasted youth"] = "", -- A_Classic_Fairytale:first_blood +-- ["The weapon in that last crate was bestowed upon us by the ancients!"] = "", -- A_Classic_Fairytale:first_blood +-- ["The what?!"] = "", -- A_Classic_Fairytale:dragon +-- ["The wind whispers that you are ready to become familiar with tools, now..."] = "", -- A_Classic_Fairytale:first_blood +-- ["They are all waiting back in the village, haha."] = "", -- A_Classic_Fairytale:enemy +-- ["They Call Me Bullseye!"] = "", -- Space_Invasion +-- ["They have weapons we've never seen before!"] = "", -- A_Classic_Fairytale:united +-- ["They keep appearing like this. It's weird!"] = "", -- A_Classic_Fairytale:united +-- ["They killed "] = "", -- A_Classic_Fairytale:backstab, A_Classic_Fairytale:united +-- ["They must be trying to weaken us!"] = "", -- A_Classic_Fairytale:enemy +-- ["They never learn"] = "", -- A_Classic_Fairytale:journey +-- ["They told us to wear these clothes. They said that this is the newest trend."] = "", -- A_Classic_Fairytale:enemy +-- ["They've been manipulating us all this time!"] = "", -- A_Classic_Fairytale:enemy +-- ["Thighlicker"] = "", -- A_Classic_Fairytale:united +-- ["This is it! It's time to make Fell From Heaven fall for me..."] = "", -- A_Classic_Fairytale:first_blood +-- ["This island is the only place left on Earth with grass on it!"] = "", -- A_Classic_Fairytale:enemy +-- ["This is typical!"] = "", -- A_Classic_Fairytale:dragon +-- ["This must be some kind of sorcery!"] = "", -- A_Classic_Fairytale:shadow +-- ["This must be the caves!"] = "", -- A_Classic_Fairytale:backstab ["This one's tricky."] = "Der hier ist knifflig.", ["This rain is really something..."] = "Das nenne ich mal einen Regenschauer...", +-- ["This will be fun!"] = "", -- A_Classic_Fairytale:enemy +-- ["Those aliens are destroying the island!"] = "", -- A_Classic_Fairytale:family ["Timed Kamikaze!"] = "Pünktliches Kamikaze!", ["Time Extended!"] = "Zeit verlängert!", ["Time Extension"] = "Zeitverlängerung", ["Time Left: "] = "Verbleibende Zeit", ["TIME: "] = "ZEIT: ", +-- ["Tip: The rope physics are different than in the real world, |use it to your advantage!"] = "", -- Basic_Training_-_Rope ["Toggle Shield"] = "Schild ein/aus", +-- ["To help you, of course!"] = "", -- A_Classic_Fairytale:journey +-- ["To place a girder, select it, use [Left] and [Right] to select angle and length, place with [Left Click]"] = "", -- A_Classic_Fairytale:shadow +-- ["Torn Muscle"] = "", -- A_Classic_Fairytale:journey +-- [" to save the village."] = "", -- A_Classic_Fairytale:dragon +-- ["To the caves..."] = "", -- A_Classic_Fairytale:united ["Toxic Team"] = "Giftige Gegner", -- User_Mission_-_Diver, User_Mission_-_Spooky_Tree, User_Mission_-_Teamwork ["TRACK COMPLETED"] = "STRECKENLAUF BEENDET", ["TRACK FAILED!"] = "STRECKENLAUF GESCHEITERT", +-- ["training"] = "", -- portal +-- ["Traitors"] = "", -- A_Classic_Fairytale:epil +-- ["Tribe"] = "", -- A_Classic_Fairytale:backstab -- ["TrophyRace"] = "", +-- ["Try to protect the chief! You won't lose if he dies, but it is advised that he survives."] = "", -- A_Classic_Fairytale:united -- ["T_T"] = "", ["Tumbling Time Extended!"] = "Purzelzeit verlängert!", +-- ["Turns until Sudden Death: "] = "", -- A_Classic_Fairytale:dragon +-- [" turns until Sudden Death! Better hurry!"] = "", -- A_Classic_Fairytale:dragon ["Turn Time"] = "Zeit pro Zug", +-- ["Two little hogs cooperating, getting past obstacles..."] = "", -- A_Classic_Fairytale:journey +-- ["Uhm...I met one of them and took his weapons."] = "", -- A_Classic_Fairytale:shadow +-- ["Uhmm...ok no."] = "", -- A_Classic_Fairytale:enemy +-- ["ULTRA KILL"] = "", -- Mutant +-- ["Under Construction"] = "", -- A_Classic_Fairytale:shadow +-- ["Unexpected Igor"] = "", -- A_Classic_Fairytale:dragon +-- ["Unit 0x0007"] = "", -- A_Classic_Fairytale:family +-- ["Unit 334a$7%;.*"] = "", -- A_Classic_Fairytale:backstab, A_Classic_Fairytale:dragon, A_Classic_Fairytale:enemy, A_Classic_Fairytale:family, A_Classic_Fairytale:queen, A_Classic_Fairytale:united ["Unit 3378"] = "Einheit 3378", ["Unit 835"] = "Einheit 3378", +-- ["United We Stand"] = "", -- A_Classic_Fairytale:united ["Unit"] = "Einheit", ["Unlimited Attacks"] = "Unbegrenzte Angriffe", +-- ["Unlucky Sods"] = "", -- User_Mission_-_Rope_Knock_Challenge ["Unstoppable!"] = "Unaufhaltbar!", +-- ["Unsuspecting Louts"] = "", -- User_Mission_-_Rope_Knock_Challenge +-- ["[Up], [Down] to aim, [Space] to shoot!"] = "", -- A_Classic_Fairytale:first_blood +-- ["Use it wisely!"] = "", -- A_Classic_Fairytale:dragon +-- ["Use it with precaution!"] = "", -- A_Classic_Fairytale:first_blood -- ["User Challenge"] = "", +-- ["Use the parachute ([Space] while in air)"] = "", -- +-- ["Use the portal gun to get to the next crate, then use the new gun to get to the final destination!|"] = "", -- A_Classic_Fairytale:dragon +-- ["Use the rope to get on the head of the mole, young one!"] = "", -- A_Classic_Fairytale:first_blood +-- ["Use the rope to knock your enemies to their doom."] = "", -- User_Mission_-_Rope_Knock_Challenge ["Use your rope to get from start to finish as fast as you can!"] = "Nutze das Seil um von Start zu Ziel zu gelangen - so schnell du kannst!", +-- ["Vedgies"] = "", -- A_Classic_Fairytale:journey +-- ["Vegan Jack"] = "", -- A_Classic_Fairytale:enemy +-- ["Victory!"] = "", -- Basic_Training_-_Rope ["Victory for the "] = "Sieg für ", -- CTF_Blizzard, Capture_the_Flag +-- ["Violence is not the answer to your problems!"] = "", -- A_Classic_Fairytale:first_blood +-- ["Walls Left"] = "", -- WxW +-- ["Walls Required"] = "", -- WxW +-- ["WALL TO WALL"] = "", -- WxW +-- ["Wannabe Flyboys"] = "", -- User_Mission_-_RCPlane_Challenge +-- ["Wannabe Shoppsta"] = "", -- User_Mission_-_Rope_Knock_Challenge +-- ["Watch your steps, young one!"] = "", -- A_Classic_Fairytale:first_blood ["Waypoint placed."] = "Wegpunkt gesetzt", ["Way-Points Remaining"] = "Wegpunkte verbleibend", +-- ["Weaklings"] = "", -- A_Classic_Fairytale:shadow +-- ["We all know what happens when you get frightened..."] = "", -- A_Classic_Fairytale:first_blood +-- ["Weapons reset."] = "", -- Highlander ["Weapons Reset"] = "Waffenzurücksetzung", +-- ["We are indeed."] = "", -- A_Classic_Fairytale:backstab +-- ["We can't defeat them!"] = "", -- A_Classic_Fairytale:shadow +-- ["We can't hold them up much longer!"] = "", -- A_Classic_Fairytale:united +-- ["We can't let them take over our little island!"] = "", -- A_Classic_Fairytale:enemy +-- ["We have no time to waste..."] = "", -- A_Classic_Fairytale:journey +-- ["We have nowhere else to live!"] = "", -- A_Classic_Fairytale:enemy +-- ["We have to protect the village!"] = "", -- A_Classic_Fairytale:united +-- ["We have to unite and defeat those cylergs!"] = "", -- A_Classic_Fairytale:enemy +-- ["Welcome, Leaks A Lot!"] = "", -- A_Classic_Fairytale:journey ["Well done."] = "Gut gemacht.", +-- ["We'll give you a problem then!"] = "", -- A_Classic_Fairytale:enemy +-- ["We'll spare your life for now!"] = "", -- A_Classic_Fairytale:backstab +-- ["Well, that was a waste of time."] = "", -- A_Classic_Fairytale:dragon +-- ["Well, well! Isn't that the cutest thing you've ever seen?"] = "", -- A_Classic_Fairytale:journey +-- ["Well, yes. This was a cyborg television show."] = "", -- A_Classic_Fairytale:enemy +-- ["We made sure noone followed us!"] = "", -- A_Classic_Fairytale:backstab +-- ["We need to move!"] = "", -- A_Classic_Fairytale:united +-- ["We need to prevent their arrival!"] = "", -- A_Classic_Fairytale:backstab +-- ["We need to warn the village."] = "", -- A_Classic_Fairytale:shadow +-- ["We should head back to the village now."] = "", -- A_Classic_Fairytale:shadow +-- ["We were trying to save her and we got lost."] = "", -- A_Classic_Fairytale:family +-- ["We won't let you hurt her!"] = "", -- A_Classic_Fairytale:journey +-- ["What?! A cannibal? Here? There is no time to waste! Come, you are prepared."] = "", -- A_Classic_Fairytale:first_blood +-- ["What a douche!"] = "", -- A_Classic_Fairytale:enemy +-- ["What am I gonna...eat, yo?"] = "", -- A_Classic_Fairytale:family +-- ["What are you doing at a distance so great, young one?"] = "", -- A_Classic_Fairytale:first_blood +-- ["What are you doing? Let her go!"] = "", -- A_Classic_Fairytale:journey +-- ["What a ride!"] = "", -- A_Classic_Fairytale:shadow +-- ["What a strange cave!"] = "", -- A_Classic_Fairytale:dragon +-- ["What a strange feeling!"] = "", -- A_Classic_Fairytale:backstab +-- ["What do my faulty eyes observe? A spy!"] = "", -- A_Classic_Fairytale:first_blood +-- ["Whatever floats your boat..."] = "", -- A_Classic_Fairytale:shadow +-- [" What !! For all of this struggle i just win some ... TIME o0"] = "", -- portal +-- ["What has "] = "", -- A_Classic_Fairytale:backstab +-- ["What? Here? How did they find us?!"] = "", -- A_Classic_Fairytale:backstab +-- ["What is this place?"] = "", -- A_Classic_Fairytale:dragon, A_Classic_Fairytale:enemy +-- ["What shall we do with the traitor?"] = "", -- A_Classic_Fairytale:backstab +-- ["WHAT?! You're the ones attacking us!"] = "", -- A_Classic_Fairytale:enemy +-- ["When?"] = "", -- A_Classic_Fairytale:enemy +-- ["When I find it..."] = "", -- A_Classic_Fairytale:dragon +-- ["Where are all these crates coming from?!"] = "", -- A_Classic_Fairytale:shadow +-- ["Where are they?!"] = "", -- A_Classic_Fairytale:backstab +-- ["Where did that alien run?"] = "", -- A_Classic_Fairytale:dragon +-- ["Where did you get the exploding apples?"] = "", -- A_Classic_Fairytale:shadow +-- ["Where did you get the exploding apples and the magic bow that shoots many arrows?"] = "", -- A_Classic_Fairytale:shadow +-- ["Where did you get the magic bow that shoots many arrows?"] = "", -- A_Classic_Fairytale:shadow +-- ["Where did you get the weapons in the forest, Dense Cloud?"] = "", -- A_Classic_Fairytale:backstab +-- ["Where do you get that?!"] = "", -- A_Classic_Fairytale:enemy +-- ["Where have you been?!"] = "", -- A_Classic_Fairytale:backstab +-- ["Where have you been?"] = "", -- A_Classic_Fairytale:united +-- ["? Why?"] = "", -- A_Classic_Fairytale:backstab +-- ["Why "] = "", -- A_Classic_Fairytale:backstab +-- ["! Why?!"] = "", -- A_Classic_Fairytale:backstab, A_Classic_Fairytale:united +-- ["Why are you doing this?"] = "", -- A_Classic_Fairytale:journey +-- ["Why are you helping us, uhm...?"] = "", -- A_Classic_Fairytale:family +-- ["Why can't he just let her go?!"] = "", -- A_Classic_Fairytale:family +-- ["Why do men keep hurting me?"] = "", -- A_Classic_Fairytale:first_blood +-- ["Why do you not like me?"] = "", -- A_Classic_Fairytale:shadow +-- ["Why do you want to take over our island?"] = "", -- A_Classic_Fairytale:enemy +-- ["Why me?!"] = "", -- A_Classic_Fairytale:backstab +-- ["Why would they do this?"] = "", -- A_Classic_Fairytale:backstab +-- ["- Will Get 1-3 random weapons"] = "", -- Continental_supplies +-- ["- Will refresh Parachute each turn."] = "", -- Continental_supplies +-- ["- Will refresh portalgun each turn."] = "", -- Continental_supplies ["Will this ever end?"] = "Wird dies je enden?", +-- ["WINNER IS "] = "", -- Mutant ["WINNING TIME: "] = "BESTZEIT: ", +-- ["Wise Oak"] = "", -- A_Classic_Fairytale:backstab, A_Classic_Fairytale:dragon, A_Classic_Fairytale:enemy, A_Classic_Fairytale:epil, A_Classic_Fairytale:family, A_Classic_Fairytale:queen +-- ["With Dense Cloud on the land of shadows, I'm the village's only hope..."] = "", -- A_Classic_Fairytale:journey +-- ["With the rest of the tribe gone, it was up to "] = "", -- A_Classic_Fairytale:dragon +-- ["Worry not, for it is a peaceful animal! There is no reason to be afraid..."] = "", -- A_Classic_Fairytale:first_blood +-- ["Wow, what a dream!"] = "", -- A_Classic_Fairytale:backstab +-- ["Y3K1337"] = "", -- A_Classic_Fairytale:journey, A_Classic_Fairytale:shadow +-- ["Yay, we won!"] = "", -- A_Classic_Fairytale:enemy +-- ["Y Chwiliad"] = "", -- A_Classic_Fairytale:dragon +-- ["Yeah...I think it's a 'he', lol."] = "", -- A_Classic_Fairytale:shadow +-- ["Yeah, sure! I died. Hillarious!"] = "", -- A_Classic_Fairytale:backstab +-- ["Yeah, take that!"] = "", -- A_Classic_Fairytale:dragon +-- ["Yeah? Watcha gonna do? Cry?"] = "", -- A_Classic_Fairytale:journey +-- ["Yes!"] = "", -- A_Classic_Fairytale:enemy +-- ["Yes, yeees! You are now ready to enter the real world!"] = "", -- A_Classic_Fairytale:first_blood +-- ["Yo, dude, we're here, too!"] = "", -- A_Classic_Fairytale:family +-- ["You are given the chance to turn your life around..."] = "", -- A_Classic_Fairytale:shadow +-- ["You are playing with our lives here!"] = "", -- A_Classic_Fairytale:enemy +-- ["! You bastards!"] = "", -- A_Classic_Fairytale:backstab, A_Classic_Fairytale:united +-- ["You bear impressive skills, "] = "", -- A_Classic_Fairytale:dragon +-- ["You can't fire a portal on the blue surface"] = "", -- portal +-- ["You couldn't possibly believe that after refusing my offer I'd just let you go!"] = "", -- A_Classic_Fairytale:journey ["You'd almost swear the water was rising!"] = "Man könnte fast schwören das Wasser würde steigen!", +-- ["You'd better watch your steps..."] = "", -- A_Classic_Fairytale:journey +-- ["You did not make it in time, try again!"] = "", -- Basic_Training_-_Rope +-- ["You have 7 turns until the next wave arrives.|Make sure the arriving cannibals are greeted appropriately!|If the hog dies, the cause is lost.|Hint: you might want to use some mines..."] = "", -- A_Classic_Fairytale:backstab +-- ["You have "] = "", -- A_Classic_Fairytale:dragon +-- ["You have been giving us out to the enemy, haven't you!"] = "", -- A_Classic_Fairytale:backstab +-- ["You have been respawned, at your last checkpoint!"] = "", -- Basic_Training_-_Rope +-- ["You have been respawned, be more carefull next time!"] = "", -- Basic_Training_-_Rope +-- ["You have chosen the perfect moment to leave."] = "", -- A_Classic_Fairytale:united +-- ["You have failed to complete your task, young one!"] = "", -- A_Classic_Fairytale:journey +-- ["You have failed to save the tribe!"] = "", -- A_Classic_Fairytale:backstab +-- ["You have finally figured it out!"] = "", -- A_Classic_Fairytale:enemy +-- ["You have kidnapped our whole tribe!"] = "", -- A_Classic_Fairytale:enemy +-- ["You have killed an innocent hedgehog!"] = "", -- A_Classic_Fairytale:backstab +-- ["You have proven yourself worthy to see our most ancient secret!"] = "", -- A_Classic_Fairytale:first_blood +-- ["You have proven yourselves worthy!"] = "", -- A_Classic_Fairytale:enemy ["You have SCORED!!"] = "Du hast GEPUNKTET!", +-- ["You have to destroy 12 targets in 180 seconds"] = "", -- Basic_Training_-_Cluster_Bomb +-- ["You have won the game by proving true cooperative skills!"] = "", -- A_Classic_Fairytale:enemy +-- ["You just appeared out of thin air!"] = "", -- A_Classic_Fairytale:backstab +-- ["You just committed suicide..."] = "", -- A_Classic_Fairytale:shadow +-- ["You killed my father, you monster!"] = "", -- A_Classic_Fairytale:backstab +-- ["You know...taking a stroll."] = "", -- A_Classic_Fairytale:backstab +-- ["You know what? I don't even regret anything!"] = "", -- A_Classic_Fairytale:backstab +-- ["You'll see what I mean!"] = "", -- A_Classic_Fairytale:enemy +-- ["You may only attack from a rope!"] = "", -- WxW +-- ["You meatbags are pretty slow, you know!"] = "", -- A_Classic_Fairytale:enemy +-- ["You might want to find a way to instantly kill arriving cannibals!"] = "", -- A_Classic_Fairytale:backstab +-- ["Young one, you are telling us that they can instantly change location without a shaman?"] = "", -- A_Classic_Fairytale:united +-- ["You probably know what to do next..."] = "", -- A_Classic_Fairytale:first_blood +-- ["Your deaths will be avenged, cannibals!"] = "", -- A_Classic_Fairytale:enemy +-- ["Your death will not be in vain, Dense Cloud!"] = "", -- A_Classic_Fairytale:shadow +-- ["You're...alive!? But we saw you die!"] = "", -- A_Classic_Fairytale:backstab +-- ["You're a pathetic liar!"] = "", -- A_Classic_Fairytale:backstab +-- ["You're funny!"] = "", -- A_Classic_Fairytale:journey +-- ["You're getting pretty good! |Tip: When you shorten you rope you move faster! |and when you lengthen it you move slower"] = "", -- Basic_Training_-_Rope +-- ["You're pathetic! You are not worthy of my attention..."] = "", -- A_Classic_Fairytale:shadow +-- ["You're probably wondering why I bought you back..."] = "", -- A_Classic_Fairytale:backstab +-- ["You're terrorizing the forest...We won't catch anything like this!"] = "", -- A_Classic_Fairytale:shadow +-- ["Your hogs must survive!"] = "", -- A_Classic_Fairytale:journey +-- ["Your movement skills will be evaluated now."] = "", -- A_Classic_Fairytale:first_blood ["You saved"] = "Gerettet: ", +-- ["You've been assaulting us, we have been just defending ourselves!"] = "", -- A_Classic_Fairytale:enemy ["You've failed. Try again."] = "Du bist gescheitert. Versuche es nochmal.", ["You've reached the goal!| |Time: "] = "Ziel erreicht!| |Zeit: ", +-- ["You will be avenged!"] = "", -- A_Classic_Fairytale:shadow +-- ["You won't believe what happened to me!"] = "", -- A_Classic_Fairytale:backstab +-- ["Yuck! I bet they'll keep worshipping her even after I save the village!"] = "", -- A_Classic_Fairytale:family +-- ["Zealandia"] = "", -- Continental_supplies ["'Zooka Team"] = "Die Knalltüten", +-- ["Zork"] = "", -- A_Classic_Fairytale:dragon, A_Classic_Fairytale:family, A_Classic_Fairytale:queen } diff -r 3331b30e4ef1 -r 88fde28bbda6 share/hedgewars/Data/Locale/de.txt --- a/share/hedgewars/Data/Locale/de.txt Sun Oct 21 01:28:33 2012 +0400 +++ b/share/hedgewars/Data/Locale/de.txt Sat Nov 03 00:34:35 2012 +0400 @@ -56,6 +56,8 @@ 00:53=ZeitBox 00:54=Bauwerk 00:55=Landkanone +00:56=Gefrierer +00:57=Hackbeil 01:00=Auf in die Schlacht! @@ -81,6 +83,7 @@ 01:18=Hohe 01:19=Extreme 01:20=%1 Sprungkraft +01:21=Audio Stumm ; Event messages ; Hog (%1) died diff -r 3331b30e4ef1 -r 88fde28bbda6 share/hedgewars/Data/Locale/es.lua --- a/share/hedgewars/Data/Locale/es.lua Sun Oct 21 01:28:33 2012 +0400 +++ b/share/hedgewars/Data/Locale/es.lua Sat Nov 03 00:34:35 2012 +0400 @@ -1,159 +1,641 @@ locale = { - ["..."] = "...", [":("] = ":(", ["!!!"] = "!!!", + ["..."] = "...", +-- ["011101000"] = "", -- A_Classic_Fairytale:dragon +-- ["011101001"] = "", -- A_Classic_Fairytale:backstab, A_Classic_Fairytale:dragon, A_Classic_Fairytale:enemy, A_Classic_Fairytale:family, A_Classic_Fairytale:journey, A_Classic_Fairytale:queen, A_Classic_Fairytale:shadow, A_Classic_Fairytale:united +-- ["30 minutes later..."] = "", -- A_Classic_Fairytale:shadow +-- ["About a month ago, a cyborg came and told us that you're the cannibals!"] = "", -- A_Classic_Fairytale:enemy ["Accuracy Bonus!"] = "¡Buena puntería!", +-- ["Ace"] = "", -- User_Mission_-_RCPlane_Challenge, User_Mission_-_Rope_Knock_Challenge ["Achievement Unlocked"] = "Logro conseguido", -- User_Mission_-_Bamboo_Thicket, User_Mission_-_That_Sinking_Feeling, Tumbler +-- ["A Classic Fairytale"] = "", -- A_Classic_Fairytale:first_blood +-- ["???"] = "", -- A_Classic_Fairytale:backstab +-- ["Actually, you aren't worthy of life! Take this..."] = "", -- A_Classic_Fairytale:shadow +-- ["A cy-what?"] = "", -- A_Classic_Fairytale:enemy +-- ["Adventurous"] = "", -- A_Classic_Fairytale:journey +-- ["Africa"] = "", -- Continental_supplies +-- ["After Leaks A Lot betrayed his tribe, he joined the cannibals..."] = "", -- A_Classic_Fairytale:first_blood +-- ["After the shock caused by the enemy spy, Leaks A Lot and Dense Cloud went hunting to relax."] = "", -- A_Classic_Fairytale:shadow +-- ["Again with the 'cannibals' thing!"] = "", -- A_Classic_Fairytale:enemy +-- ["a Hedgewars challenge"] = "", -- User_Mission_-_RCPlane_Challenge, User_Mission_-_Rope_Knock_Challenge ["a Hedgewars mini-game"] = "un minijuego de Hedgewars", -- Space_Invasion, The_Specialists ["Aiming Practice"] = "Practica tu puntería", --Bazooka, Shotgun, SniperRifle - ["Ammo"] = "Munición", +-- ["A leap in a leap"] = "", -- A_Classic_Fairytale:first_blood +-- ["A little gift from the cyborgs"] = "", -- A_Classic_Fairytale:shadow +-- ["All gone...everything!"] = "", -- A_Classic_Fairytale:enemy +-- ["All right, we just need to get to the other side of the island!"] = "", -- A_Classic_Fairytale:journey +-- ["All walls touched!"] = "", -- WxW ["Ammo Depleted!"] = "¡Munición agotada!", ["ammo extended!"] = "¡Munición aumentada!", ["Ammo is reset at the end of your turn."] = "", ["Ammo Maniac!"] = "¡Loco por la munición!", + ["Ammo"] = "Munición", +-- ["And how am I alive?!"] = "", -- A_Classic_Fairytale:enemy +-- ["And so happenned that Leaks A Lot failed to complete the challenge! He landed, pressured by shame..."] = "", -- A_Classic_Fairytale:first_blood +-- ["And so it began..."] = "", -- A_Classic_Fairytale:first_blood +-- ["...and so the cyborgs took over the world..."] = "", -- A_Classic_Fairytale:shadow +-- ["And so they discovered that cyborgs weren't invulnerable..."] = "", -- A_Classic_Fairytale:journey +-- ["And where's all the weed?"] = "", -- A_Classic_Fairytale:dragon +-- ["And you believed me? Oh, god, that's cute!"] = "", -- A_Classic_Fairytale:journey +-- ["Anno 1032: [The explosion will make a strong push ~ wide range, wont affect hogs close to the target]"] = "", -- Continental_supplies +-- ["Antarctica"] = "", -- Continental_supplies +-- ["Are we there yet?"] = "", -- A_Classic_Fairytale:shadow +-- ["Are you accusing me of something?"] = "", -- A_Classic_Fairytale:backstab +-- ["Are you saying that many of us have died for your entertainment?"] = "", -- A_Classic_Fairytale:enemy +-- ["Artur Detour"] = "", -- A_Classic_Fairytale:queen +-- ["As a reward for your performance, here's some new technology!"] = "", -- A_Classic_Fairytale:dragon +-- ["a shoppa minigame"] = "", -- WxW +-- ["Asia"] = "", -- Continental_supplies +-- ["Assault Team"] = "", -- A_Classic_Fairytale:backstab +-- ["As the ammo is sparse, you might want to reuse ropes while mid-air.|"] = "", -- A_Classic_Fairytale:dragon +-- ["As the challenge was completed, Leaks A Lot set foot on the ground..."] = "", -- A_Classic_Fairytale:first_blood +-- ["As you can see, there is no way to get on the other side!"] = "", -- A_Classic_Fairytale:dragon +-- ["Attack From Rope"] = "", -- WxW +-- ["Australia"] = "", -- Continental_supplies ["Available points remaining: "] = "Puntos restantes:", +-- ["Back Breaker"] = "", -- A_Classic_Fairytale:backstab +-- ["Back in the village, after telling the villagers about the threat..."] = "", -- A_Classic_Fairytale:united ["[Backspace]"] = "[Retroceso]", +-- ["Backstab"] = "", -- A_Classic_Fairytale:backstab +-- ["Bad Team"] = "", -- User_Mission_-_The_Great_Escape ["Bamboo Thicket"] = "Maraña de bambú", ["Barrel Eater!"] = "¡Tragabarriles!", ["Barrel Launcher"] = "Lanzador de barriles", +-- ["Baseballbat"] = "", -- Continental_supplies ["Bat balls at your enemies and|push them into the sea!"] = "¡Batea pelotas contra tus enemigos|y hazlos caer al agua!", ["Bat your opponents through the|baskets and out of the map!"] = "¡Batea a tus enemigos fuera del campo de juego|a través de las canastas laterales!", ["Bazooka Training"] = "Entrenamiento con bazuca", +-- ["Beep Loopers"] = "", -- A_Classic_Fairytale:queen ["Best laps per team: "] = "Mejores tiempos por equipo: ", ["Best Team Times: "] = "Mejores tiempos del equipo: ", +-- ["Beware, though! If you are slow, you die!"] = "", -- A_Classic_Fairytale:dragon +-- ["Biomechanic Team"] = "", -- A_Classic_Fairytale:family +-- ["Blender"] = "", -- A_Classic_Fairytale:family +-- ["Bloodpie"] = "", -- A_Classic_Fairytale:backstab +-- ["Bloodrocutor"] = "", -- A_Classic_Fairytale:shadow +-- ["Bloodsucker"] = "", -- A_Classic_Fairytale:shadow ["Bloody Rookies"] = "Reclutas", -- 01#Boot_Camp, User_Mission_-_Dangerous_Ducklings, User_Mission_-_Diver, User_Mission_-_Spooky_Tree +-- ["Bone Jackson"] = "", -- A_Classic_Fairytale:backstab +-- ["Bonely"] = "", -- A_Classic_Fairytale:shadow ["Boom!"] = "¡Bum!", ["BOOM!"] = "¡BUM!", ["Boss defeated!"] = "¡Jefe derrotado!", ["Boss Slayer!"] = "¡Matajefes!", +-- ["Brain Blower"] = "", -- A_Classic_Fairytale:journey +-- ["Brainiac"] = "", -- A_Classic_Fairytale:epil, A_Classic_Fairytale:first_blood, A_Classic_Fairytale:shadow +-- ["Brainila"] = "", -- A_Classic_Fairytale:united +-- ["Brain Stu"] = "", -- A_Classic_Fairytale:united +-- ["Brain Teaser"] = "", -- A_Classic_Fairytale:backstab +-- ["Brutal Lily"] = "", -- A_Classic_Fairytale:enemy, A_Classic_Fairytale:epil +-- ["Brutus"] = "", -- A_Classic_Fairytale:backstab ["Build a track and race."] = "Dibuja un recorrido y compite.", +-- ["Bullseye"] = "", -- A_Classic_Fairytale:dragon +-- ["But it proved to be no easy task!"] = "", -- A_Classic_Fairytale:dragon +-- ["But that's impossible!"] = "", -- A_Classic_Fairytale:backstab +-- ["But the ones alive are stronger in their heart!"] = "", -- A_Classic_Fairytale:enemy +-- ["But...we died!"] = "", -- A_Classic_Fairytale:backstab +-- ["But where can we go?"] = "", -- A_Classic_Fairytale:united +-- ["But why would they help us?"] = "", -- A_Classic_Fairytale:backstab +-- ["But you're cannibals. It's what you do."] = "", -- A_Classic_Fairytale:enemy +-- ["But you said you'd let her go!"] = "", -- A_Classic_Fairytale:journey +-- ["Call me Beep! Well, 'cause I'm such a nice...person!"] = "", -- A_Classic_Fairytale:family +-- ["Cannibals"] = "", -- A_Classic_Fairytale:enemy, A_Classic_Fairytale:epil, A_Classic_Fairytale:first_blood +-- ["Cannibal Sentry"] = "", -- A_Classic_Fairytale:journey +-- ["Cannibals?! You're the cannibals!"] = "", -- A_Classic_Fairytale:enemy ["CAPTURE THE FLAG"] = "Capturar la bandera", ["Careless"] = "Descuidado", +-- ["Carol"] = "", -- A_Classic_Fairytale:family +-- ["CHALLENGE COMPLETE"] = "", -- User_Mission_-_RCPlane_Challenge ["Change Weapon"] = "Cambiar arma", +-- ["Choose your side! If you want to join the strange man, walk up to him.|Otherwise, walk away from him. If you decide to att...nevermind..."] = "", -- A_Classic_Fairytale:shadow ["Clumsy"] = "Patoso", +-- ["Cluster Bomb MASTER!"] = "", -- Basic_Training_-_Cluster_Bomb +-- ["Cluster Bomb Training"] = "", -- Basic_Training_-_Cluster_Bomb ["Codename: Teamwork"] = "Nombre en clave: Trabajo en equipo", +-- ["Collateral Damage"] = "", -- A_Classic_Fairytale:journey +-- ["Collateral Damage II"] = "", -- A_Classic_Fairytale:journey +-- ["Collect all the crates, but remember, our time in this life is limited!"] = "", -- A_Classic_Fairytale:first_blood +-- ["Collect or destroy all the health crates."] = "", -- User_Mission_-_RCPlane_Challenge +-- ["Collect the crate on the right.|Hint: Select the rope, [Up] or [Down] to aim, [Space] to fire, directional keys to move.|Ropes can be fired again in the air!"] = "", -- A_Classic_Fairytale:first_blood +-- ["Collect the crates within the time limit!|If you fail, you'll have to try again."] = "", -- A_Classic_Fairytale:first_blood +-- ["Come closer, so that your training may continue!"] = "", -- A_Classic_Fairytale:first_blood +-- ["Compete to use as few planes as possible!"] = "", -- User_Mission_-_RCPlane_Challenge ["Complete the track as fast as you can!"] = "¡Completa el recorrido lo más rápido que puedas!", +-- ["COMPLETION TIME"] = "", -- User_Mission_-_Rope_Knock_Challenge +-- ["Configuration accepted."] = "", -- WxW +-- ["Congratulations"] = "", -- Basic_Training_-_Rope ["Congratulations!"] = "¡Felicidades!", +-- ["Congratulations! You needed only half of time|to eliminate all targets."] = "", -- Basic_Training_-_Cluster_Bomb +-- ["Congratulations! You've completed the Rope tutorial! |- Tutorial ends in 10 seconds!"] = "", -- Basic_Training_-_Rope ["Congratulations! You've eliminated all targets|within the allowed time frame."] = "¡Felicidades! Has destruido todos los objectivos|dentro del tiempo establecido.", --Bazooka, Shotgun, SniperRifle +-- ["Continental supplies"] = "", -- Continental_supplies ["Control pillars to score points."] = "Controla los pilares para anotar puntos.", +-- ["Corporationals"] = "", -- A_Classic_Fairytale:queen +-- ["Corpsemonger"] = "", -- A_Classic_Fairytale:shadow +-- ["Corpse Thrower"] = "", -- A_Classic_Fairytale:epil +-- ["Crates Left:"] = "", -- User_Mission_-_RCPlane_Challenge ["Cybernetic Empire"] = "Imperio cibernético", +-- ["Cyborg. It's what the aliens call themselves."] = "", -- A_Classic_Fairytale:enemy +-- ["Dahmer"] = "", -- A_Classic_Fairytale:backstab ["DAMMIT, ROOKIE! GET OFF MY HEAD!"] = "¡MALDITA SEA, RECLUTA! ¡FUERA DE MI CABEZA!", ["DAMMIT, ROOKIE!"] = "¡MALDITA SEA, RECLUTA!", ["Dangerous Ducklings"] = "Patitos peligrosos", ["Deadweight"] = "Peso muerto", +-- ["Defeat the cannibals"] = "", -- A_Classic_Fairytale:backstab +-- ["Defeat the cannibals!|"] = "", -- A_Classic_Fairytale:united +-- ["Defeat the cannibals!|Grenade hint: set the timer with [1-5], aim with [Up]/[Down] and hold [Space] to set power"] = "", -- A_Classic_Fairytale:shadow +-- ["Defeat the cyborgs!"] = "", -- A_Classic_Fairytale:enemy +-- ["Defend yourself!|Hint: You can get tips on using weapons by moving your mouse over them in the weapon selection menu"] = "", -- A_Classic_Fairytale:shadow ["Demolition is fun!"] = "¡Destruir es divertido!", +-- ["Dense Cloud"] = "", -- A_Classic_Fairytale:backstab, A_Classic_Fairytale:dragon, A_Classic_Fairytale:enemy, A_Classic_Fairytale:epil, A_Classic_Fairytale:family, A_Classic_Fairytale:journey, A_Classic_Fairytale:queen, A_Classic_Fairytale:shadow, A_Classic_Fairytale:united +-- ["Dense Cloud must have already told them everything..."] = "", -- A_Classic_Fairytale:shadow ["Depleted Kamikaze!"] = "¡No quedan más kamikazes!", +-- ["Destroy him, Leaks A Lot! He is responsible for the deaths of many of us!"] = "", -- A_Classic_Fairytale:first_blood ["Destroy invaders to score points."] = "Acaba con los invasores para conseguir puntos.", +-- ["Destroy the targets!|Hint: Select the Shoryuken and hit [Space]|P.S. You can use it mid-air."] = "", -- A_Classic_Fairytale:first_blood +-- ["Destroy the targets!|Hint: [Up], [Down] to aim, [Space] to shoot"] = "", -- A_Classic_Fairytale:first_blood +-- ["Did anyone follow you?"] = "", -- A_Classic_Fairytale:united +-- ["Did you see him coming?"] = "", -- A_Classic_Fairytale:shadow +-- ["Did you warn the village?"] = "", -- A_Classic_Fairytale:shadow +-- ["Die, die, die!"] = "", -- A_Classic_Fairytale:dragon +-- ["Disguise as a Rockhopper Penguin: [Swap place with a random enemy hog in the circle]"] = "", -- Continental_supplies +-- ["Dist: "] = "", -- Space_Invasion +-- ["Do not laugh, inexperienced one, for he speaks the truth!"] = "", -- A_Classic_Fairytale:backstab +-- ["Do not let his words fool you, young one! He will stab you in the back as soon as you turn away!"] = "", -- A_Classic_Fairytale:first_blood +-- ["Do the deed"] = "", -- A_Classic_Fairytale:first_blood ["Double Kill!"] = "¡Dos por uno!", +-- ["DOUBLE KILL"] = "", -- Mutant +-- ["Do you have any idea how valuable grass is?"] = "", -- A_Classic_Fairytale:enemy +-- ["Do you think you're some kind of god?"] = "", -- A_Classic_Fairytale:enemy +-- ["Dragon's Lair"] = "", -- A_Classic_Fairytale:dragon +-- ["Drills"] = "", -- A_Classic_Fairytale:backstab ["Drone Hunter!"] = "Matadrones", +-- ["Drop a bomb: [drop some heroic wind that will turn into a bomb on impact]"] = "", -- Continental_supplies ["Drowner"] = "Ahogado", +-- ["Dude, all the plants are gone!"] = "", -- A_Classic_Fairytale:family +-- ["Dude, can you see Ramon and Spiky?"] = "", -- A_Classic_Fairytale:journey +-- ["Dude, that's so cool!"] = "", -- A_Classic_Fairytale:backstab +-- ["Dude, we really need a new shaman..."] = "", -- A_Classic_Fairytale:shadow +-- ["Dude, what's this place?!"] = "", -- A_Classic_Fairytale:dragon +-- ["Dude, where are we?"] = "", -- A_Classic_Fairytale:backstab +-- ["Dude, wow! I just had the weirdest high!"] = "", -- A_Classic_Fairytale:backstab +-- ["Duration"] = "", -- Continental_supplies +-- ["Dust storm: [Deals 20 damage to all enemies in the circle]"] = "", -- Continental_supplies ["Each turn you get 1-3 random weapons"] = "Cada turno tendrás de 1 a 3 armas elegidas aleatoriamente", ["Each turn you get one random weapon"] = "Cada turno tendrás un arma elegida aleatoriamente", +-- ["Eagle Eye"] = "", -- A_Classic_Fairytale:backstab +-- ["Eagle Eye: [Blink to the impact ~ one shot]"] = "", -- Continental_supplies +-- ["Ear Sniffer"] = "", -- A_Classic_Fairytale:backstab, A_Classic_Fairytale:epil +-- ["Elderbot"] = "", -- A_Classic_Fairytale:family +-- ["Elimate your captor."] = "", -- User_Mission_-_The_Great_Escape ["Eliminate all enemies"] = "Elimina a todos los enemigos", ["Eliminate all targets before your time runs out.|You have unlimited ammo for this mission."] = "Destruye todos los objetivos antes de que se agote el tiempo.|La munición en esta misión es ilimitada.", --Bazooka, Shotgun, SniperRifle +-- ["Eliminate enemy hogs and take their weapons."] = "", -- Highlander ["Eliminate Poison before the time runs out"] = "Acaba con los Tóxicos antes de que se agote el tiempo", ["Eliminate the Blue Team"] = "Elimina al Equipo azul", ["Eliminate the enemy before the time runs out"] = "Acaba con el enemigo antes de que se agote el tiempo", -- User_Mission_-_Bamboo_Thicket, User_Mission_-_Newton_and_the_Hammock ["Eliminate the enemy hogs to win."] = "Acaba con los erizos enemigos para ganar", ["Eliminate the enemy specialists."] = "Acaba con los Especialistas", ["- Eliminate Unit 3378 |- Feeble Resistance must survive"] = "- Elimina a la Unidad 3378 |- Resistencia Fútil debe sobrevivir", +-- ["Elmo"] = "", -- A_Classic_Fairytale:dragon, A_Classic_Fairytale:family, A_Classic_Fairytale:queen ["Energetic Engineer"] = "Ingeniero Eléctrico", ["Enjoy the swim..."] = "Disfruta del baño...", ["[Enter]"] = "[Intro]", +-- ["Europe"] = "", -- Continental_supplies +-- [" ever done to you?!"] = "", -- A_Classic_Fairytale:backstab +-- ["Everyone knows this."] = "", -- A_Classic_Fairytale:enemy +-- ["Every single time!"] = "", -- A_Classic_Fairytale:dragon +-- ["Everything looks OK..."] = "", -- A_Classic_Fairytale:enemy +-- ["Exactly, man! That was my dream."] = "", -- A_Classic_Fairytale:backstab +-- ["Eye Chewer"] = "", -- A_Classic_Fairytale:journey +-- ["FAG"] = "", -- Mutant +-- ["Family Reunion"] = "", -- A_Classic_Fairytale:family ["Fastest lap: "] = "Vuelta rápida: ", ["Feeble Resistance"] = "Resistencia Fútil", +-- ["Fell From Grace"] = "", -- A_Classic_Fairytale:backstab, A_Classic_Fairytale:dragon, A_Classic_Fairytale:enemy, A_Classic_Fairytale:epil, A_Classic_Fairytale:family, A_Classic_Fairytale:queen +-- ["Fell From Heaven"] = "", -- A_Classic_Fairytale:enemy, A_Classic_Fairytale:epil, A_Classic_Fairytale:family, A_Classic_Fairytale:first_blood, A_Classic_Fairytale:journey, A_Classic_Fairytale:queen +-- ["Fell From Heaven is the best! Fell From Heaven is the greatest!"] = "", -- A_Classic_Fairytale:family +-- ["Femur Lover"] = "", -- A_Classic_Fairytale:shadow +-- ["Fierce Competition!"] = "", -- Space_Invasion +-- ["Fiery Water"] = "", -- A_Classic_Fairytale:backstab, A_Classic_Fairytale:dragon, A_Classic_Fairytale:enemy, A_Classic_Fairytale:epil, A_Classic_Fairytale:family, A_Classic_Fairytale:queen, A_Classic_Fairytale:united +-- ["Find your tribe!|Cross the lake!"] = "", -- A_Classic_Fairytale:dragon +-- ["Finish your training|Hint: Animations can be skipped with the [Precise] key."] = "", -- A_Classic_Fairytale:first_blood +-- ["Fire a mine: [Does what it says ~ Cant be dropped close to an enemy ~ 1 sec]"] = "", -- Continental_supplies ["Fire"] = "Fuego", +-- ["First aid kits?!"] = "", -- A_Classic_Fairytale:united +-- ["First Blood"] = "", -- A_Classic_Fairytale:first_blood +-- ["FIRST BLOOD MUTATES"] = "", -- Mutant +-- ["First Steps"] = "", -- A_Classic_Fairytale:first_blood ["Flag captured!"] = "¡Bandera capturada!", ["Flag respawned!"] = "¡Bandera restablecida!", ["Flag returned!"] = "¡Bandera recuperada!", ["Flags, and their home base will be placed where each team ends their first turn."] = "Las banderas y las bases se colocarán donde los equipos acaben su primer turno.", ["Flamer"] = "Incinerador", +-- ["Flaming Worm"] = "", -- A_Classic_Fairytale:backstab +-- ["Flare: [fire up some bombs depending on hogs depending on hogs in the circle"] = "", -- Continental_supplies +-- ["Flesh for Brainz"] = "", -- A_Classic_Fairytale:journey +-- ["For improved features/stability, play 0.9.18+"] = "", -- WxW +-- ["Free Dense Cloud and continue the mission!"] = "", -- A_Classic_Fairytale:journey ["Friendly Fire!"] = "¡Fuego amigo!", ["fuel extended!"] = "¡Más combustible!", ["GAME BEGUN!!!"] = "¡EL JUEGO HA EMPEZADO!", ["Game Modifiers: "] = "Modificadores: ", ["GAME OVER!"] = "¡FIN DEL JUEGO!", ["Game Started!"] = "¡El juego ha empezado!", +-- ["Game? Was this a game to you?!"] = "", -- A_Classic_Fairytale:enemy +-- ["GasBomb"] = "", -- Continental_supplies +-- ["Gas Gargler"] = "", -- A_Classic_Fairytale:queen +-- ["Get Dense Cloud out of the pit!"] = "", -- A_Classic_Fairytale:journey ["Get on over there and take him out!"] = "¡Ves allí y elimínalo!", +-- ["Get on the head of the mole"] = "", -- A_Classic_Fairytale:first_blood +-- ["Get out of there!"] = "", -- User_Mission_-_The_Great_Escape +-- ["Get that crate!"] = "", -- A_Classic_Fairytale:first_blood +-- ["Get the crate on the other side of the island!|"] = "", -- A_Classic_Fairytale:journey +-- ["Get to the target using your rope! |Controls: Left & Right to swing the rope - Up & Down to Contract and Expand!"] = "", -- Basic_Training_-_Rope +-- ["Get your teammates out of their natural prison and save the princess!|Hint: Drilling holes should solve everything.|Hint: It might be a good idea to place a girder before starting to drill. Just saying.|Hint: All your hedgehogs need to be above the marked height!|Hint: Leaks A Lot needs to get really close to the princess!"] = "", -- A_Classic_Fairytale:family +-- ["GG!"] = "", -- User_Mission_-_Rope_Knock_Challenge +-- ["Gimme Bones"] = "", -- A_Classic_Fairytale:backstab +-- ["Glark"] = "", -- A_Classic_Fairytale:shadow ["Goal"] = "Objetivo", ["GO! GO! GO!"] = "¡VAMOS! ¡VAMOS! ¡VAMOS!", ["Good birdy......"] = "Buen pajarito......", +-- ["Good Dude"] = "", -- User_Mission_-_The_Great_Escape +-- ["Good idea, they'll never find us there!"] = "", -- A_Classic_Fairytale:united +-- ["Good luck...or else!"] = "", -- A_Classic_Fairytale:journey ["Good luck out there!"] = "¡Buena suerte!", ["Good so far!"] = "¡Vamos bien!", ["Good to go!"] = "¡Sigue!", +-- ["Go on top of the flower"] = "", -- A_Classic_Fairytale:first_blood +-- ["Go, quick!"] = "", -- A_Classic_Fairytale:backstab +-- ["Gorkij"] = "", -- A_Classic_Fairytale:journey +-- ["Go surf!"] = "", -- WxW ["GOTCHA!"] = "¡TE PILLÉ!", ["Grab Mines/Explosives"] = "Coge minas/explosivos", +-- ["Great choice, Steve! Mind if I call you that?"] = "", -- A_Classic_Fairytale:shadow +-- ["Great work! Now hit it with your Baseball Bat! |Tip: You can change weapon with 'Right Click'!"] = "", -- Basic_Training_-_Rope +-- ["Great! You will be contacted soon for assistance."] = "", -- A_Classic_Fairytale:shadow +-- ["Green lipstick bullet: [Is poisonous]"] = "", -- Continental_supplies +-- ["Greetings, "] = "", -- A_Classic_Fairytale:dragon +-- ["Greetings, cloudy one!"] = "", -- A_Classic_Fairytale:shadow +-- ["Grenade Training"] = "", -- Basic_Training_-_Grenade +-- ["Grenadiers"] = "", -- Basic_Training_-_Grenade +-- ["Guys, do you think there's more of them?"] = "", -- A_Classic_Fairytale:backstab +-- ["HAHA!"] = "", -- A_Classic_Fairytale:enemy +-- ["Haha!"] = "", -- A_Classic_Fairytale:united ["Hahahaha!"] = "¡Jajajaja!", ["Haha, now THAT would be something!"] = "¡Jajaja, eso Sà que sería espectacular!", - ["Hapless Hogs"] = "Pobres desgraciados", +-- ["Hannibal"] = "", -- A_Classic_Fairytale:epil [" Hapless Hogs left!"] = " pobres desgraciados restantes!", + ["Hapless Hogs"] = "Pobres desgraciados", +-- [" HAS MUTATED\" )"] = "", -- +-- ["Hatless Jerry"] = "", -- A_Classic_Fairytale:queen +-- ["Have no illusions, your tribe is dead, indifferent of your choice."] = "", -- A_Classic_Fairytale:shadow +-- ["Have we ever attacked you first?"] = "", -- A_Classic_Fairytale:enemy ["Health crates extend your time."] = "Los botiquines aumentan el tiempo disponible.", +-- ["Heavy Cannfantry"] = "", -- A_Classic_Fairytale:united ["Heavy"] = "Pesado", +-- ["Hedge-cogs"] = "", -- A_Classic_Fairytale:enemy +-- ["Hedgehog projectile: [fire your hog like a Sticky Bomb]"] = "", -- Continental_supplies ["Hedgewars-Basketball"] = "Hedgewars-Baloncesto", ["Hedgewars-Knockball"] = "Hedgewars-Knockball", +-- ["Hedgibal Lecter"] = "", -- A_Classic_Fairytale:backstab ["Heh, it's not that bad."] = "Jeje, no es para tanto.", +-- ["Hello again, "] = "", -- A_Classic_Fairytale:family +-- ["Help me, Leaks!"] = "", -- A_Classic_Fairytale:journey +-- ["Help me, please!!!"] = "", -- A_Classic_Fairytale:journey +-- ["Help me, please!"] = "", -- A_Classic_Fairytale:journey +-- ["He moves like an eagle in the sky."] = "", -- A_Classic_Fairytale:first_blood +-- ["He must be in the village already."] = "", -- A_Classic_Fairytale:journey +-- ["Here, let me help you!"] = "", -- A_Classic_Fairytale:backstab +-- ["Here, let me help you save her!"] = "", -- A_Classic_Fairytale:family +-- ["Here...pick your weapon!"] = "", -- A_Classic_Fairytale:first_blood +-- ["Hero Team"] = "", -- User_Mission_-_The_Great_Escape +-- ["He's so brave..."] = "", -- A_Classic_Fairytale:first_blood +-- ["He won't be selling us out anymore!"] = "", -- A_Classic_Fairytale:backstab +-- ["Hey, guys!"] = "", -- A_Classic_Fairytale:backstab +-- ["Hey guys!"] = "", -- A_Classic_Fairytale:united +-- ["Hey! This is cheating!"] = "", -- A_Classic_Fairytale:journey +-- ["HIGHLANDER"] = "", -- Highlander +-- ["Hightime"] = "", -- A_Classic_Fairytale:first_blood +-- ["Hint: Double Jump - Press [Backspace] twice"] = "", -- A_Classic_Fairytale:first_blood +-- ["Hint: Select the BlowTorch, aim and press [Fire]. Press [Fire] again to stop.|Don't blow up the crate."] = "", -- A_Classic_Fairytale:journey +-- ["Hint: Select the LowGravity and press [Fire]."] = "", -- A_Classic_Fairytale:journey +-- ["Hint: you might want to stay out of sight and take all the crates...|"] = "", -- A_Classic_Fairytale:journey +-- ["His arms are so strong!"] = "", -- A_Classic_Fairytale:first_blood ["Hit Combo!"] = "¡Combo!", +-- ["Hmmm...actually...I didn't either."] = "", -- A_Classic_Fairytale:enemy +-- ["Hmmm, I'll have to find some way of moving him off this anti-portal surface..."] = "", -- portal +-- ["Hmmm...it's a draw. How unfortunate!"] = "", -- A_Classic_Fairytale:enemy ["Hmmm..."] = "Mmm...", +-- ["Hmmm...perhaps a little more time will help."] = "", -- A_Classic_Fairytale:first_blood +-- ["Hogminator"] = "", -- A_Classic_Fairytale:family +-- ["Hogs in sight!"] = "", -- Continental_supplies +-- ["HOLY SHIT!"] = "", -- Mutant +-- ["Honest Lee"] = "", -- A_Classic_Fairytale:enemy ["Hooray!"] = "¡Hurra!", +-- ["Hostage Situation"] = "", -- A_Classic_Fairytale:family +-- ["How can I ever repay you for saving my life?"] = "", -- A_Classic_Fairytale:journey +-- ["How come in a village full of warriors, it's up to me to save it?"] = "", -- A_Classic_Fairytale:dragon +-- ["How difficult would you like it to be?"] = "", -- A_Classic_Fairytale:first_blood +-- ["HOW DO THEY KNOW WHERE WE ARE???"] = "", -- A_Classic_Fairytale:united +-- ["However, if you fail to do so, she dies a most violent death, just like your friend! Muahahaha!"] = "", -- A_Classic_Fairytale:journey +-- ["However, if you fail to do so, she dies a most violent death! Muahahaha!"] = "", -- A_Classic_Fairytale:journey +-- ["However, my mates don't agree with me on letting you go..."] = "", -- A_Classic_Fairytale:dragon +-- [" HP"] = "", -- Mutant ["Hunter"] = "Artillero", --Bazooka, Shotgun, SniperRifle +-- ["I believe there's more of them."] = "", -- A_Classic_Fairytale:backstab +-- ["I can see you have been training diligently."] = "", -- A_Classic_Fairytale:first_blood +-- ["I can't believe it worked!"] = "", -- A_Classic_Fairytale:shadow +-- ["I can't believe this!"] = "", -- A_Classic_Fairytale:enemy +-- ["I can't believe what I'm hearing!"] = "", -- A_Classic_Fairytale:backstab +-- ["I can't wait any more, I have to save myself!"] = "", -- A_Classic_Fairytale:shadow +-- ["I could just teleport myself there..."] = "", -- A_Classic_Fairytale:family +-- ["I'd better get going myself."] = "", -- A_Classic_Fairytale:journey +-- ["I didn't until about a month ago."] = "", -- A_Classic_Fairytale:enemy +-- ["I don't know how you did that.. But good work! |The next one should be easy as cake for you!"] = "", -- Basic_Training_-_Rope +-- ["I feel something...a place! They will arrive near the circles!"] = "", -- A_Classic_Fairytale:backstab +-- ["If only I had a way..."] = "", -- A_Classic_Fairytale:backstab +-- ["If only I were given a chance to explain my being here..."] = "", -- A_Classic_Fairytale:first_blood +-- ["I forgot that she's the daughter of the chief, too..."] = "", -- A_Classic_Fairytale:backstab +-- ["If they try coming here, they can have a taste of my delicious knuckles!"] = "", -- A_Classic_Fairytale:united +-- ["If you agree to provide the information we need, you will be spared!"] = "", -- A_Classic_Fairytale:shadow +-- ["If you can get that crate fast enough, your beloved \"princess\" may go free."] = "", -- A_Classic_Fairytale:journey +-- ["If you decide to help us, though, we will no longer need to find a new governor for the island."] = "", -- A_Classic_Fairytale:shadow +-- ["If you get stuck, use your Desert Eagle or restart the mission!|"] = "", -- A_Classic_Fairytale:journey +-- ["If you know what I mean..."] = "", -- A_Classic_Fairytale:shadow +-- ["If you say so..."] = "", -- A_Classic_Fairytale:shadow +-- ["If you wish to restart the course, hold [Precise] while your turn ends (e.g with Skip)"] = "", -- +-- ["I guess you'll have to kill them."] = "", -- A_Classic_Fairytale:dragon +-- ["I have come to make you an offering..."] = "", -- A_Classic_Fairytale:shadow +-- ["I have no idea where that mole disappeared...Can you see it?"] = "", -- A_Classic_Fairytale:shadow +-- ["I have to follow that alien."] = "", -- A_Classic_Fairytale:backstab +-- ["I have to get back to the village!"] = "", -- A_Classic_Fairytale:shadow +-- ["I hope you are prepared for a small challenge, young one."] = "", -- A_Classic_Fairytale:first_blood +-- ["I just don't want to sink to your level."] = "", -- A_Classic_Fairytale:backstab +-- ["I just found out that they have captured your princess!"] = "", -- A_Classic_Fairytale:family +-- ["I just wonder where Ramon and Spiky disappeared..."] = "", -- A_Classic_Fairytale:journey +-- ["I'll hold them off while you return to the village!"] = "", -- A_Classic_Fairytale:shadow +-- ["Imagine those targets are the wolves that killed your parents! Take your anger out on them!"] = "", -- A_Classic_Fairytale:first_blood +-- ["I'm...alive? How? Why?"] = "", -- A_Classic_Fairytale:backstab +-- ["I'm a ninja."] = "", -- A_Classic_Fairytale:dragon +-- ["I marked the place of their arrival. You're welcome!"] = "", -- A_Classic_Fairytale:backstab +-- ["I'm certain that this is a misunderstanding, fellow hedgehogs!"] = "", -- A_Classic_Fairytale:first_blood +-- ["I mean, none of you ceased to live."] = "", -- A_Classic_Fairytale:enemy +-- ["I'm getting old for this!"] = "", -- A_Classic_Fairytale:family +-- ["I'm getting thirsty..."] = "", -- A_Classic_Fairytale:family +-- ["I'm here to help you rescue her."] = "", -- A_Classic_Fairytale:family +-- ["I'm not sure about that!"] = "", -- A_Classic_Fairytale:united +-- ["Impressive...you are still dry as the corpse of a hawk after a week in the desert..."] = "", -- A_Classic_Fairytale:first_blood +-- ["I'm so scared!"] = "", -- A_Classic_Fairytale:united +-- ["Incredible..."] = "", -- A_Classic_Fairytale:shadow +-- ["I need to find the others!"] = "", -- A_Classic_Fairytale:backstab +-- ["I need to get to the other side of this island, fast!"] = "", -- A_Classic_Fairytale:journey +-- ["I need to move the tribe!"] = "", -- A_Classic_Fairytale:united +-- ["I need to prevent their arrival!"] = "", -- A_Classic_Fairytale:backstab +-- ["I need to warn the others."] = "", -- A_Classic_Fairytale:backstab +-- ["In fact, you are the only one that's been acting strangely."] = "", -- A_Classic_Fairytale:backstab +-- ["In order to get to the other side, you need to collect the crates first.|"] = "", -- A_Classic_Fairytale:dragon ["Instructor"] = "Instructor", -- 01#Boot_Camp, User_Mission_-_Dangerous_Ducklings +-- ["Interesting idea, haha!"] = "", -- A_Classic_Fairytale:enemy +-- ["Interesting! Last time you said you killed a cannibal!"] = "", -- A_Classic_Fairytale:backstab +-- ["In the meantime, take these and return to your \"friend\"!"] = "", -- A_Classic_Fairytale:shadow ["invaders destroyed"] = "invasores destruídos", +-- ["Invasion"] = "", -- A_Classic_Fairytale:united +-- ["I saw it with my own eyes!"] = "", -- A_Classic_Fairytale:shadow +-- ["I see..."] = "", -- A_Classic_Fairytale:shadow +-- ["I see you have already taken the leap of faith."] = "", -- A_Classic_Fairytale:first_blood +-- ["I see you would like his punishment to be more...personal..."] = "", -- A_Classic_Fairytale:first_blood +-- ["I sense another wave of cannibals heading my way!"] = "", -- A_Classic_Fairytale:backstab +-- ["I sense another wave of cannibals heading our way!"] = "", -- A_Classic_Fairytale:backstab +-- ["I shouldn't have drunk that last pint."] = "", -- A_Classic_Fairytale:dragon +-- ["Is this place in my head?"] = "", -- A_Classic_Fairytale:dragon +-- ["It doesn't matter. I won't let that alien hurt my daughter!"] = "", -- A_Classic_Fairytale:dragon +-- ["I think we are safe here."] = "", -- A_Classic_Fairytale:backstab +-- ["I thought their shaman died when he tried our medicine!"] = "", -- A_Classic_Fairytale:shadow +-- ["It is called 'Hogs of Steel'."] = "", -- A_Classic_Fairytale:enemy +-- ["It is time to practice your fighting skills."] = "", -- A_Classic_Fairytale:first_blood +-- ["It must be a childhood trauma..."] = "", -- A_Classic_Fairytale:family +-- ["It must be the aliens!"] = "", -- A_Classic_Fairytale:backstab +-- ["It must be the aliens' deed."] = "", -- A_Classic_Fairytale:backstab +-- ["It must be the cyborgs again!"] = "", -- A_Classic_Fairytale:enemy +-- ["I told you, I just found them."] = "", -- A_Classic_Fairytale:backstab ["It's a good thing SUDDEN DEATH is 99 turns away..."] = "Menos mal que aún quedan 99 turnos hasta la MUERTE SÚBITA...", +-- ["It's always up to women to clear up the mess men created!"] = "", -- A_Classic_Fairytale:dragon +-- ["It's a shame, I forgot how to do that!"] = "", -- A_Classic_Fairytale:family +-- ["It's impossible to communicate with the spirits without a shaman."] = "", -- A_Classic_Fairytale:shadow +-- ["It's over..."] = "", -- A_Classic_Fairytale:shadow +-- ["It's time you learned that your actions have consequences!"] = "", -- A_Classic_Fairytale:journey +-- ["It's worth more than wood!"] = "", -- A_Classic_Fairytale:enemy +-- ["It wants our brains!"] = "", -- A_Classic_Fairytale:shadow +-- ["It was not a dream, unwise one!"] = "", -- A_Classic_Fairytale:backstab +-- ["I've seen this before. They just appear out of thin air."] = "", -- A_Classic_Fairytale:united +-- ["I want to play a game..."] = "", -- A_Classic_Fairytale:journey +-- ["I want to see how it handles this!"] = "", -- A_Classic_Fairytale:backstab +-- ["I wish to help you, "] = "", -- A_Classic_Fairytale:dragon +-- ["I wonder where Dense Cloud is..."] = "", -- A_Classic_Fairytale:journey, A_Classic_Fairytale:shadow +-- ["I wonder why I'm so angry all the time..."] = "", -- A_Classic_Fairytale:family +-- ["I won't let you kill her!"] = "", -- A_Classic_Fairytale:journey +-- ["Jack"] = "", -- A_Classic_Fairytale:dragon, A_Classic_Fairytale:family, A_Classic_Fairytale:queen +-- ["Jeremiah"] = "", -- A_Classic_Fairytale:dragon +-- ["John"] = "", -- A_Classic_Fairytale:journey +-- ["Judas"] = "", -- A_Classic_Fairytale:backstab ["Jumping is disabled"] = "No se puede saltar", +-- ["Just kidding, none of you have died!"] = "", -- A_Classic_Fairytale:enemy +-- ["Just on a walk."] = "", -- A_Classic_Fairytale:united +-- ["Just wait till I get my hands on that trauma! ARGH!"] = "", -- A_Classic_Fairytale:family ["Kamikaze Expert!"] = "¡Kamikaze experto!", ["Keep it up!"] = "¡Sigue así!", +-- ["Kerguelen"] = "", -- Continental_supplies ["Killing spree!"] = "¡Frenesí asesino!", +-- ["KILL IT!"] = "", -- A_Classic_Fairytale:first_blood ["KILLS"] = "MUERTES", +-- ["Kill the aliens!"] = "", -- A_Classic_Fairytale:dragon +-- ["Kill the cannibal!"] = "", -- A_Classic_Fairytale:first_blood +-- ["Kill the traitor...or spare his life!|Kill him or press [Precise]!"] = "", -- A_Classic_Fairytale:backstab ["Last Target!"] = "¡Último objetivo!", +-- ["Leader"] = "", -- A_Classic_Fairytale:enemy +-- ["Leaderbot"] = "", -- A_Classic_Fairytale:queen +-- ["Leaks A Lot"] = "", -- A_Classic_Fairytale:backstab, A_Classic_Fairytale:dragon, A_Classic_Fairytale:enemy, A_Classic_Fairytale:epil, A_Classic_Fairytale:family, A_Classic_Fairytale:first_blood, A_Classic_Fairytale:journey, A_Classic_Fairytale:queen, A_Classic_Fairytale:shadow, A_Classic_Fairytale:united +-- ["Leaks A Lot, depressed for killing his loved one, failed to save the village..."] = "", -- A_Classic_Fairytale:journey +-- ["Leaks A Lot gave his life for his tribe! He should have survived!"] = "", -- A_Classic_Fairytale:first_blood +-- ["Leaks A Lot must survive!"] = "", -- A_Classic_Fairytale:journey +-- ["Led Heart"] = "", -- A_Classic_Fairytale:queen +-- ["Lee"] = "", -- A_Classic_Fairytale:dragon, A_Classic_Fairytale:family, A_Classic_Fairytale:queen ["[Left Shift]"] = "[Shift izquierdo]", +-- ["Let a Continent provide your weapons!"] = "", -- Continental_supplies +-- ["Let me test your skills a little, will you?"] = "", -- A_Classic_Fairytale:journey +-- ["Let's go home!"] = "", -- A_Classic_Fairytale:journey +-- ["Let's head back to the village!"] = "", -- A_Classic_Fairytale:shadow +-- ["Let's see what your comrade does now!"] = "", -- A_Classic_Fairytale:journey +-- ["Let's show those cannibals what we're made of!"] = "", -- A_Classic_Fairytale:backstab +-- ["Let them have a taste of my fury!"] = "", -- A_Classic_Fairytale:backstab +-- ["Let us help, too!"] = "", -- A_Classic_Fairytale:backstab +-- ["Light Cannfantry"] = "", -- A_Classic_Fairytale:united ["Listen up, maggot!!"] = "¡Atento, escoria!", +-- ["Little did they know that this hunt will mark them forever..."] = "", -- A_Classic_Fairytale:shadow ["Lively Lifeguard"] = "Salvavidas dicharachero", +-- ["Lonely Cries: [Rise the water if no hog is in the circle and deal 1 damage to all hogs]"] = "", -- Continental_supplies +-- ["Look, I had no choice!"] = "", -- A_Classic_Fairytale:backstab +-- ["Look out! There's more of them!"] = "", -- A_Classic_Fairytale:backstab +-- ["Look out! We're surrounded by cannibals!"] = "", -- A_Classic_Fairytale:enemy +-- ["Looks like the whole world is falling apart!"] = "", -- A_Classic_Fairytale:enemy +-- ["Luckily, I've managed to snatch some of them."] = "", -- A_Classic_Fairytale:united +-- ["LUDICROUS KILL"] = "", -- Mutant +-- ["May the spirits aid you in all your quests!"] = "", -- A_Classic_Fairytale:backstab +-- ["Medicine: [Fire some exploding medicine that will heal all hogs effected by the explosion]"] = "", -- Continental_supplies +-- ["MEGA KILL"] = "", -- Mutant +-- ["Meiwes"] = "", -- A_Classic_Fairytale:backstab +-- ["Mindy"] = "", -- A_Classic_Fairytale:united ["Mine Deployer"] = "Plantador de minas", ["Mine Eater!"] = "¡Tragaminas!", ["|- Mines Time:"] = "|- Retraso de las minas:", -- User_Mission_-_Diver, User_Mission_-_Spooky_Tree, User_Mission_-_Teamwork ["MISSION FAILED"] = "MISIÓN FRACASADA", -- User_Mission_-_Dangerous_Ducklings, 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 ["MISSION SUCCESS"] = "MISIÓN COMPLETADA", - ["MISSION SUCCESSFUL"] = "MISIÓN COMPLETADA", -- User_Mission_-_Diver, User_Mission_-_Spooky_Tree, User_Mission_-_Teamwork +-- ["Molotov"] = "", -- Continental_supplies +-- ["MONSTER KILL"] = "", -- Mutant +-- ["More Natives"] = "", -- A_Classic_Fairytale:epil ["Movement: [Up], [Down], [Left], [Right]"] = "Movimiento: [Arriba], [Abajo], [Izquierda], [Derecha]", ["Multi-shot!"] = "¡Disparo múltiple!", +-- ["Muriel"] = "", -- A_Classic_Fairytale:backstab, A_Classic_Fairytale:dragon, A_Classic_Fairytale:family, A_Classic_Fairytale:queen +-- ["Muscle Dissolver"] = "", -- A_Classic_Fairytale:shadow +-- ["-------"] = "", -- Mutant +-- ["Nade Boy"] = "", -- Basic_Training_-_Grenade +-- ["Name"] = "", -- A_Classic_Fairytale:queen ["Nameless Heroes"] = "Héroes anónimos", +-- ["Nancy Screw"] = "", -- A_Classic_Fairytale:enemy, A_Classic_Fairytale:queen +-- ["Napalm rocket: [Fire a bomb with napalm!]"] = "", -- Continental_supplies +-- ["Natives"] = "", -- A_Classic_Fairytale:backstab, A_Classic_Fairytale:dragon, A_Classic_Fairytale:enemy, A_Classic_Fairytale:epil, A_Classic_Fairytale:family, A_Classic_Fairytale:first_blood, A_Classic_Fairytale:journey, A_Classic_Fairytale:queen, A_Classic_Fairytale:shadow, A_Classic_Fairytale:united ["New Barrels Per Turn"] = "Barriles por turno", ["NEW CLAN RECORD: "] = "NUEVO RÉCORD PARA EL CLAN", ["NEW fastest lap: "] = "NUEVA vuelta rápida: ", ["New Mines Per Turn"] = "Minas por turno", ["NEW RACE RECORD: "] = "NUEVO RÉCORD PARA EL RECORRIDO: ", ["Newton's Hammock"] = "La hamaca de Newton", +-- ["Nicely done, meatbags!"] = "", -- A_Classic_Fairytale:enemy +-- ["Nice work, "] = "", -- A_Classic_Fairytale:dragon +-- ["Nice work!"] = "", -- A_Classic_Fairytale:enemy +-- ["Nilarian"] = "", -- A_Classic_Fairytale:queen +-- ["No, I came back to help you out..."] = "", -- A_Classic_Fairytale:shadow +-- ["No...I wonder where they disappeared?!"] = "", -- A_Classic_Fairytale:journey +-- ["Nom-Nom"] = "", -- A_Classic_Fairytale:journey +-- ["NomNom"] = "", -- A_Classic_Fairytale:united +-- ["Nope. It was one fast mole, that's for sure."] = "", -- A_Classic_Fairytale:shadow +-- ["No! Please, help me!"] = "", -- A_Classic_Fairytale:journey +-- ["NORMAL"] = "", -- Continental_supplies +-- ["North America"] = "", -- Continental_supplies +-- ["Not all hogs are born equal."] = "", -- Highlander ["NOT ENOUGH WAYPOINTS"] = "NO HAY SUFICIENTES BALIZAS", +-- ["Not now, Fiery Water!"] = "", -- A_Classic_Fairytale:backstab ["Not So Friendly Match"] = "Partido no-tan-amistoso", -- Basketball, Knockball +-- ["Not you again! My head still hurts from last time!"] = "", -- A_Classic_Fairytale:shadow +-- ["No, we made sure of that!"] = "", -- A_Classic_Fairytale:united +-- ["Now find the next target! |Tip: Normally you lose health by falling down, so be careful!"] = "", -- Basic_Training_-_Rope +-- ["No! What have I done?! What have YOU done?!"] = "", -- A_Classic_Fairytale:journey +-- ["No. Where did he come from?"] = "", -- A_Classic_Fairytale:shadow +-- ["Now how do I get on the other side?!"] = "", -- A_Classic_Fairytale:dragon +-- ["No. You and the rest of the tribe are safer there!"] = "", -- A_Classic_Fairytale:backstab +-- ["Obliterate them!|Hint: You might want to take cover..."] = "", -- A_Classic_Fairytale:shadow +-- ["Obstacle course"] = "", -- A_Classic_Fairytale:dragon +-- ["Of course I have to save her. What did I expect?!"] = "", -- A_Classic_Fairytale:family +-- ["OH, COME ON!"] = "", -- A_Classic_Fairytale:journey +-- ["Oh, my!"] = "", -- A_Classic_Fairytale:first_blood +-- ["Oh, my! This is even more entertaining than I've expected!"] = "", -- A_Classic_Fairytale:backstab ["Oh no! Just try again!"] = "¡Oh, no! ¿Por qué no lo intentas de nuevo?", -- User_Mission_-_Diver, User_Mission_-_Spooky_Tree, User_Mission_-_Teamwork +-- ["Oh no, not "] = "", -- A_Classic_Fairytale:backstab, A_Classic_Fairytale:united ["Oh no! Time's up! Just try again."] = "¡Oh, no, se te acabó el tiempo! ¿Por qué no lo intentas de nuevo?", --Bazooka, Shotgun, SniperRifle +-- ["Oh no! You failed! Just try again."] = "", -- Basic_Training_-_Cluster_Bomb +-- ["Oh, silly me! I forgot that I'm the shaman."] = "", -- A_Classic_Fairytale:backstab +-- ["Olive"] = "", -- A_Classic_Fairytale:united +-- ["Omnivore"] = "", -- A_Classic_Fairytale:first_blood +-- ["Once upon a time, on an island with great natural resources, lived two tribes in heated conflict..."] = "", -- A_Classic_Fairytale:first_blood +-- ["ONE HOG PER TEAM! KILLING EXCESS HEDGES"] = "", -- Mutant +-- ["One tribe was peaceful, spending their time hunting and training, enjoying the small pleasures of life..."] = "", -- A_Classic_Fairytale:first_blood +-- ["Oops...I dropped them."] = "", -- A_Classic_Fairytale:united +-- ["Open that crate and we will continue!"] = "", -- A_Classic_Fairytale:first_blood ["Operation Diver"] = "Buzo", ["Opposing Team: "] = "Equipo enemigo: ", +-- ["Orlando Boom!"] = "", -- A_Classic_Fairytale:queen +-- ["Ouch!"] = "", -- User_Mission_-_Rope_Knock_Challenge +-- ["Our tribe, our beautiful island!"] = "", -- A_Classic_Fairytale:enemy +-- ["Parachute"] = "", -- Continental_supplies ["Pathetic Hog #%d"] = "Erizo patético #%d", ["Pathetic Resistance"] = "Patética resistencia", -- User_Mission_-_Bamboo_Thicket, User_Mission_-_Newton_and_the_Hammock +-- ["Perfect! Now try to get the next crate without hurting yourself!"] = "", -- A_Classic_Fairytale:first_blood ["Per-Hog Ammo"] = "Armamento individualizado", +-- ["- Per team weapons|- 9 weaponschemes|- Unique new weapons| |Select continent first round with the Weapon Menu or by ([switch/tab]=Increase,[presice/left shift]=Decrease)"] = "", -- +-- ["Pfew! That was close!"] = "", -- A_Classic_Fairytale:shadow +-- ["Piñata bullet: [Contains some sweet candy!]"] = "", -- Continental_supplies +-- ["Pings left:"] = "", -- Space_Invasion ["Place more waypoints using [ENTER]"] = "Coloca más balizas presionando [INTRO]", ["Place more waypoints using the 'Air Attack' weapon."] = "Coloca más balizas usando el 'Bombardeo aéreo'", +-- ["Planes Used:"] = "", -- User_Mission_-_RCPlane_Challenge +-- ["Planes Used"] = "", -- User_Mission_-_RCPlane_Challenge +-- ["Play with me!"] = "", -- A_Classic_Fairytale:shadow +-- ["Please place the way-point further from the waterline."] = "", -- Racer +-- ["Please place the way-point in the open, within the map boundaries."] = "", -- Racer +-- ["Please, stop releasing your \"smoke signals\"!"] = "", -- A_Classic_Fairytale:shadow +-- ["Point Blank Combo!"] = "", -- Space_Invasion ["points"] = "puntos", -- Control, CTF_Blizzard, Basic_Training_-_Bazooka, Basic_Training_-_Shotgun, Basic_Training_-_Sniper_Rifle ["Poison"] = "Veneno", +-- ["Portal hint: one goes to the destination, and one is the entrance.|"] = "", -- A_Classic_Fairytale:dragon +-- ["Portal mission"] = "", -- portal ["Power Remaining"] = "Energía restante", ["Prepare yourself"] = "Prepárate", +-- ["Press [Enter] to accept this configuration."] = "", -- WxW +-- ["Press [Left] or [Right] to move around, [Enter] to jump"] = "", -- A_Classic_Fairytale:first_blood ["Press [Precise] to skip intro"] = "Aprieta [Incrementar precisión] para saltar la intro", +-- ["Private Novak"] = "", -- Basic_Training_-_Cluster_Bomb +-- ["Protect yourselves!|Grenade hint: set the timer with [1-5], aim with [Up]/[Down] and hold [Space] to set power"] = "", -- A_Classic_Fairytale:shadow ["Race complexity limit reached."] = "Máximo de complejidad para el recorrido alcanzado.", ["RACER"] = "CORREDOR", +-- ["Rachel"] = "", -- A_Classic_Fairytale:dragon, A_Classic_Fairytale:family, A_Classic_Fairytale:queen +-- ["Radar Ping"] = "", -- Space_Invasion +-- ["Raging Buffalo"] = "", -- A_Classic_Fairytale:backstab, A_Classic_Fairytale:dragon, A_Classic_Fairytale:enemy, A_Classic_Fairytale:epil, A_Classic_Fairytale:family, A_Classic_Fairytale:queen, A_Classic_Fairytale:united +-- ["Ramon"] = "", -- A_Classic_Fairytale:enemy, A_Classic_Fairytale:epil, A_Classic_Fairytale:family, A_Classic_Fairytale:queen, A_Classic_Fairytale:shadow +-- ["RC PLANE TRAINING"] = "", -- User_Mission_-_RCPlane_Challenge +-- ["Really?! You thought you could harm me with your little toys?"] = "", -- A_Classic_Fairytale:shadow +-- ["Regurgitator"] = "", -- A_Classic_Fairytale:backstab +-- ["Reinforcements"] = "", -- A_Classic_Fairytale:backstab +-- ["Remember: The rope only bend around objects, |if it doesn't hit anything it's always stright!"] = "", -- Basic_Training_-_Rope +-- ["Remember this, pathetic animal: when the day comes, you will regret your blind loyalty!"] = "", -- A_Classic_Fairytale:shadow [" - 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", +-- ["Return to Leaks A Lot! If you get stuck, press [Precise] to try again!"] = "", -- A_Classic_Fairytale:shadow +-- ["Righteous Beard"] = "", -- A_Classic_Fairytale:backstab, A_Classic_Fairytale:dragon, A_Classic_Fairytale:enemy, A_Classic_Fairytale:epil, A_Classic_Fairytale:family, A_Classic_Fairytale:first_blood, A_Classic_Fairytale:queen, A_Classic_Fairytale:united +-- ["ROPE-KNOCKING"] = "", -- User_Mission_-_Rope_Knock_Challenge +-- ["Rope Training"] = "", -- Basic_Training_-_Rope +-- ["Rot Molester"] = "", -- A_Classic_Fairytale:shadow ["Round Limit:"] = "Límite de rondas:", ["Round Limit"] = "Límite de rondas", ["Rounds Complete: "] = "Rondas completadas: ", ["Rounds Complete"] = "Rondas completadas", ["RULES OF THE GAME [Press ESC to view]"] = "REGLAS DEL JUEGO (Presiona ESC para leerlas)", - ["s|"] = "s|", +-- ["Rusty Joe"] = "", -- A_Classic_Fairytale:queen +-- ["Sabotage: [Sabotage all hogs in the circle and deal ~10 dmg]"] = "", -- Continental_supplies +-- ["Salivaslurper"] = "", -- A_Classic_Fairytale:united +-- ["Salvation"] = "", -- A_Classic_Fairytale:family +-- ["Salvation was one step closer now..."] = "", -- A_Classic_Fairytale:dragon ["Save as many hapless hogs as possible!"] = "¡Salva a tantos pobres desgraciados como puedas!", +-- ["Save Fell From Heaven!"] = "", -- A_Classic_Fairytale:journey +-- ["Save Leaks A Lot!|Hint: The Switch utility might be of help to you."] = "", -- A_Classic_Fairytale:shadow +-- ["Save the princess! All your hogs must survive!|Hint: Kill the cyborgs first! Use the ammo very carefully!|Hint: You might want to spare a girder for cover!"] = "", -- A_Classic_Fairytale:family +-- ["Save the princess by collecting the crate in under 12 turns!"] = "", -- A_Classic_Fairytale:journey +-- ["Scalp Muncher"] = "", -- A_Classic_Fairytale:backstab +-- ["Score"] = "", -- Mutant ["SCORE"] = "PUNTUACIÓN", +-- ["Scream from a Walrus: [Deal 20 damage + 10% of your hogs health to all hogs around you and get half back]"] = "", -- Continental_supplies ["sec"] = "segundo", -- 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 +-- ["Seduction"] = "", -- Continental_supplies +-- ["Seems like every time you take a \"walk\", the enemy find us!"] = "", -- A_Classic_Fairytale:backstab +-- ["See that crate farther on the right?"] = "", -- A_Classic_Fairytale:first_blood ["See ya!"] = "¡Hasta otra!", +-- ["Segmentation Paul"] = "", -- A_Classic_Fairytale:dragon +-- ["Select continent!"] = "", -- Continental_supplies +-- ["Select difficulty: [Left] - easier or [Right] - harder"] = "", -- A_Classic_Fairytale:first_blood ["selected!"] = "¡Seleccionado!", - ["s"] = "s", -- GaudyRacer, Space_Invasion +-- ["... share your beauty with the world every morning, my princess!"] = "", -- A_Classic_Fairytale:journey +-- ["She's behind that tall thingy."] = "", -- A_Classic_Fairytale:family ["Shield boosted! +30 power"] = "¡Escudo mejorado! +30 puntos", ["Shield Depleted"] = "Escudo descargado", ["Shield is fully recharged!"] = "¡Escudo completamente cargado!", @@ -162,59 +644,340 @@ ["Shield OFF:"] = "Escudo desactivado:", ["Shield ON:"] = "Escudo activado:", ["Shield Seeker!"] = "¡A cubierto!", +-- ["Shotgun"] = "", -- Continental_supplies ["Shotgun Team"] = "Escopeteros", ["Shotgun Training"] = "Entrenamiento con escopeta", ["shots remaining."] = "disparos restantes.", ["Silly"] = "Idiota", ["Sinky"] = "Sumergible", +-- ["Sirius Lee"] = "", -- A_Classic_Fairytale:enemy ["%s is out and Team %d|scored a penalty!| |Score:"] = "¡%s cayó y Equipo %d|anotó una falta!| |Puntuación:", -- Basketball, Knockball ["%s is out and Team %d|scored a point!| |Score:"] = "¡%s cayó y Equipo %d|anotó un tanto!| |Puntuación:", -- Basketball, Knockball +-- ["Slippery"] = "", -- A_Classic_Fairytale:journey +-- ["Smith 0.97"] = "", -- A_Classic_Fairytale:enemy +-- ["Smith 0.98"] = "", -- A_Classic_Fairytale:enemy +-- ["Smith 0.99a"] = "", -- A_Classic_Fairytale:enemy +-- ["Smith 0.99b"] = "", -- A_Classic_Fairytale:enemy +-- ["Smith 0.99f"] = "", -- A_Classic_Fairytale:enemy +-- ["Smith 1.0"] = "", -- A_Classic_Fairytale:enemy +-- ["Sniper Rifle"] = "", -- Continental_supplies +-- ["Sniper!"] = "", -- Space_Invasion ["Sniper Training"] = "Entrenamiento con rifle francotirador", ["Sniperz"] = "Francotiradores", +-- ["So humiliating..."] = "", -- A_Classic_Fairytale:first_blood +-- ["South America"] = "", -- Continental_supplies +-- ["So? What will it be?"] = "", -- A_Classic_Fairytale:shadow +-- ["Spawn the crate, and attack!"] = "", -- WxW +-- ["Special Weapons:"] = "", -- Continental_supplies +-- ["Spiky Cheese"] = "", -- A_Classic_Fairytale:enemy, A_Classic_Fairytale:epil, A_Classic_Fairytale:family, A_Classic_Fairytale:queen, A_Classic_Fairytale:shadow +-- ["Spleenlover"] = "", -- A_Classic_Fairytale:united ["Sponge"] = "Esponja", ["Spooky Tree"] = "Ãrbol tenebroso", + ["s|"] = "s|", + ["s"] = "s", -- GaudyRacer, Space_Invasion ["STATUS UPDATE"] = "ACTUALIZACIÓN DE ESTADO", -- GaudyRacer, Space_Invasion +-- ["Steel Eye"] = "", -- A_Classic_Fairytale:queen +-- ["Step By Step"] = "", -- A_Classic_Fairytale:first_blood +-- ["Steve"] = "", -- A_Classic_Fairytale:dragon, A_Classic_Fairytale:family, A_Classic_Fairytale:queen +-- ["Sticky Mine"] = "", -- Continental_supplies +-- ["Stronglings"] = "", -- A_Classic_Fairytale:shadow +-- ["Structure"] = "", -- Continental_supplies +-- ["Super Weapons"] = "", -- WxW +-- ["Surf Before Crate"] = "", -- WxW +-- ["Surfer! +15 points!"] = "", -- Space_Invasion +-- ["Surfer!"] = "", -- WxW +-- ["Survive!|Hint: Cinematics can be skipped with the [Precise] key."] = "", -- A_Classic_Fairytale:shadow +-- ["Swing, Leaks A Lot, on the wings of the wind!"] = "", -- A_Classic_Fairytale:first_blood ["Switched to "] = "Cambiar a ", +-- ["Syntax Errol"] = "", -- A_Classic_Fairytale:dragon +-- ["Talk about mixed signals..."] = "", -- A_Classic_Fairytale:dragon ["Team %d: "] = "Equipo %d", ["Team Scores"] = "Puntuaciones", -- Control, Space_Invasion +-- ["Teleport hint: just use the mouse to select the destination!"] = "", -- A_Classic_Fairytale:dragon +-- ["Thanks!"] = "", -- A_Classic_Fairytale:family +-- ["Thank you, my hero!"] = "", -- A_Classic_Fairytale:family +-- ["Thank you, oh, thank you, Leaks A Lot!"] = "", -- A_Classic_Fairytale:journey +-- ["Thank you, oh, thank you, my heroes!"] = "", -- A_Classic_Fairytale:journey +-- ["That is, indeed, very weird..."] = "", -- A_Classic_Fairytale:united +-- ["That makes it almost invaluable!"] = "", -- A_Classic_Fairytale:enemy +-- ["That ought to show them!"] = "", -- A_Classic_Fairytale:backstab +-- ["That's for my father!"] = "", -- A_Classic_Fairytale:backstab +-- ["That shaman sure knows what he's doing!"] = "", -- A_Classic_Fairytale:shadow ["That Sinking Feeling"] = "Esa sensación de pesadez", +-- ["That's not our problem!"] = "", -- A_Classic_Fairytale:enemy +-- ["That's typical of you!"] = "", -- A_Classic_Fairytale:family +-- ["That was just mean!"] = "", -- A_Classic_Fairytale:backstab, A_Classic_Fairytale:united ["That was pointless."] = "Eso era innecesario.", +-- ["The answer is...entertaintment. You'll see what I mean."] = "", -- A_Classic_Fairytale:backstab +-- ["The anti-portal zone is all over the floor, and I have nothing to kill him...Droping something could hurt him enough to kill him..."] = "", -- portal +-- ["The Bull's Eye"] = "", -- A_Classic_Fairytale:first_blood +-- ["The caves are well hidden, they won't find us there!"] = "", -- A_Classic_Fairytale:united +-- ["The Crate Frenzy"] = "", -- A_Classic_Fairytale:first_blood +-- ["The Dilemma"] = "", -- A_Classic_Fairytale:shadow +-- ["The enemy can't move but it might be a good idea to stay out of sight!|"] = "", -- A_Classic_Fairytale:dragon ["The enemy is hiding out on yonder ducky!"] = "¡El enemigo está escondido detrás del patito del fondo!", +-- ["The Enemy Of My Enemy"] = "", -- A_Classic_Fairytale:enemy +-- ["The First Blood"] = "", -- A_Classic_Fairytale:first_blood +-- ["The First Encounter"] = "", -- A_Classic_Fairytale:shadow ["The flag will respawn next round."] = "La bandera reaparecerá en el próximo turno.", +-- ["The food bites back"] = "", -- A_Classic_Fairytale:backstab +-- ["The giant umbrella from the last crate should help break the fall."] = "", -- A_Classic_Fairytale:first_blood +-- ["The Great Escape"] = "", -- User_Mission_-_The_Great_Escape +-- ["The guardian"] = "", -- A_Classic_Fairytale:shadow +-- ["The Individualist"] = "", -- A_Classic_Fairytale:shadow +-- ["Their buildings were very primitive back then, even for an uncivilised island."] = "", -- A_Classic_Fairytale:united +-- ["The Journey Back"] = "", -- A_Classic_Fairytale:journey +-- ["The Leap of Faith"] = "", -- A_Classic_Fairytale:first_blood +-- ["The Moonwalk"] = "", -- A_Classic_Fairytale:journey ["The Nameless One"] = "Anónimo", +-- ["The next one is pretty hard! |Tip: You have to do multiple swings!"] = "", -- Basic_Training_-_Rope +-- ["Then how do they keep appearing?"] = "", -- A_Classic_Fairytale:shadow +-- ["The other one were all cannibals, spending their time eating the organs of fellow hedgehogs..."] = "", -- A_Classic_Fairytale:first_blood +-- ["There must be a spy among us!"] = "", -- A_Classic_Fairytale:backstab +-- ["There's more of them? When did they become so hungry?"] = "", -- A_Classic_Fairytale:backstab, A_Classic_Fairytale:united +-- ["There's nothing more satisfying for me than seeing you share your beauty with the world every morning, my princess!"] = "", -- A_Classic_Fairytale:journey +-- ["There's nothing more satisfying to us than seeing you share your beauty..."] = "", -- A_Classic_Fairytale:journey +-- ["There's nothing more satisfying to us than seeing you share your beauty with the world every morning, my princess!"] = "", -- A_Classic_Fairytale:journey +-- ["The Rising"] = "", -- A_Classic_Fairytale:first_blood +-- ["The Savior"] = "", -- A_Classic_Fairytale:journey +-- ["These primitive people are so funny!"] = "", -- A_Classic_Fairytale:backstab +-- ["The Shadow Falls"] = "", -- A_Classic_Fairytale:shadow +-- ["The Showdown"] = "", -- A_Classic_Fairytale:shadow +-- ["The Slaughter"] = "", -- A_Classic_Fairytale:dragon, A_Classic_Fairytale:first_blood ["THE SPECIALISTS"] = "LOS ESPECIALISTAS", +-- ["The spirits of the ancerstors are surely pleased, Leaks A Lot."] = "", -- A_Classic_Fairytale:first_blood +-- ["The Torment"] = "", -- A_Classic_Fairytale:first_blood +-- ["The Tunnel Maker"] = "", -- A_Classic_Fairytale:journey +-- ["The Ultimate Weapon"] = "", -- A_Classic_Fairytale:first_blood +-- ["The Union"] = "", -- A_Classic_Fairytale:enemy +-- ["The village, unprepared, was destroyed by the cyborgs..."] = "", -- A_Classic_Fairytale:journey +-- ["The walk of Fame"] = "", -- A_Classic_Fairytale:shadow +-- ["The wasted youth"] = "", -- A_Classic_Fairytale:first_blood +-- ["The weapon in that last crate was bestowed upon us by the ancients!"] = "", -- A_Classic_Fairytale:first_blood +-- ["The what?!"] = "", -- A_Classic_Fairytale:dragon +-- ["The wind whispers that you are ready to become familiar with tools, now..."] = "", -- A_Classic_Fairytale:first_blood +-- ["They are all waiting back in the village, haha."] = "", -- A_Classic_Fairytale:enemy +-- ["They Call Me Bullseye!"] = "", -- Space_Invasion +-- ["They have weapons we've never seen before!"] = "", -- A_Classic_Fairytale:united +-- ["They keep appearing like this. It's weird!"] = "", -- A_Classic_Fairytale:united +-- ["They killed "] = "", -- A_Classic_Fairytale:backstab, A_Classic_Fairytale:united +-- ["They must be trying to weaken us!"] = "", -- A_Classic_Fairytale:enemy +-- ["They never learn"] = "", -- A_Classic_Fairytale:journey +-- ["They told us to wear these clothes. They said that this is the newest trend."] = "", -- A_Classic_Fairytale:enemy +-- ["They've been manipulating us all this time!"] = "", -- A_Classic_Fairytale:enemy +-- ["Thighlicker"] = "", -- A_Classic_Fairytale:united +-- ["This is it! It's time to make Fell From Heaven fall for me..."] = "", -- A_Classic_Fairytale:first_blood +-- ["This island is the only place left on Earth with grass on it!"] = "", -- A_Classic_Fairytale:enemy +-- ["This is typical!"] = "", -- A_Classic_Fairytale:dragon +-- ["This must be some kind of sorcery!"] = "", -- A_Classic_Fairytale:shadow +-- ["This must be the caves!"] = "", -- A_Classic_Fairytale:backstab ["This one's tricky."] = "Esto va a ser complicado.", ["This rain is really something..."] = "Vaya que si llueve...", - ["TIME: "] = "TIEMPO: ", +-- ["This will be fun!"] = "", -- A_Classic_Fairytale:enemy +-- ["Those aliens are destroying the island!"] = "", -- A_Classic_Fairytale:family ["Timed Kamikaze!"] = "¡Kamikaze de precisión!", ["Time Extended!"] = "¡Tiempo aumentado!", ["Time Extension"] = "¡Bonus de tiempo!", + ["TIME: "] = "TIEMPO: ", +-- ["Tip: The rope physics are different than in the real world, |use it to your advantage!"] = "", -- Basic_Training_-_Rope ["Toggle Shield"] = "Activad/desactivar escudo", +-- ["To help you, of course!"] = "", -- A_Classic_Fairytale:journey +-- ["To place a girder, select it, use [Left] and [Right] to select angle and length, place with [Left Click]"] = "", -- A_Classic_Fairytale:shadow +-- ["Torn Muscle"] = "", -- A_Classic_Fairytale:journey +-- [" to save the village."] = "", -- A_Classic_Fairytale:dragon +-- ["To the caves..."] = "", -- A_Classic_Fairytale:united ["Toxic Team"] = "Tóxicos", -- User_Mission_-_Diver, User_Mission_-_Spooky_Tree, User_Mission_-_Teamwork ["TRACK COMPLETED"] = "¡PISTA COMPLETADA!", ["TRACK FAILED!"] = "¡PISTA FRACASADA!", +-- ["training"] = "", -- portal +-- ["Traitors"] = "", -- A_Classic_Fairytale:epil +-- ["Tribe"] = "", -- A_Classic_Fairytale:backstab ["TrophyRace"] = "TrophyRace", +-- ["Try to protect the chief! You won't lose if he dies, but it is advised that he survives."] = "", -- A_Classic_Fairytale:united ["T_T"] = "T_T", ["Tumbling Time Extended!"] = "¡Tiempo de volteretas aumentado!", +-- ["Turns until Sudden Death: "] = "", -- A_Classic_Fairytale:dragon +-- [" turns until Sudden Death! Better hurry!"] = "", -- A_Classic_Fairytale:dragon ["Turn Time"] = "Duración del turno", - ["Unit"] = "Unidad", +-- ["Two little hogs cooperating, getting past obstacles..."] = "", -- A_Classic_Fairytale:journey +-- ["Uhm...I met one of them and took his weapons."] = "", -- A_Classic_Fairytale:shadow +-- ["Uhmm...ok no."] = "", -- A_Classic_Fairytale:enemy +-- ["ULTRA KILL"] = "", -- Mutant +-- ["Under Construction"] = "", -- A_Classic_Fairytale:shadow +-- ["Unexpected Igor"] = "", -- A_Classic_Fairytale:dragon +-- ["Unit 0x0007"] = "", -- A_Classic_Fairytale:family +-- ["Unit 334a$7%;.*"] = "", -- A_Classic_Fairytale:backstab, A_Classic_Fairytale:dragon, A_Classic_Fairytale:enemy, A_Classic_Fairytale:family, A_Classic_Fairytale:queen, A_Classic_Fairytale:united ["Unit 3378"] = "Unidad 3378", ["Unit 835"] = "Unidad 835", +-- ["United We Stand"] = "", -- A_Classic_Fairytale:united + ["Unit"] = "Unidad", ["Unlimited Attacks"] = "Ataques ilimitados", +-- ["Unlucky Sods"] = "", -- User_Mission_-_Rope_Knock_Challenge ["Unstoppable!"] = "¡Imparable!", +-- ["Unsuspecting Louts"] = "", -- User_Mission_-_Rope_Knock_Challenge +-- ["[Up], [Down] to aim, [Space] to shoot!"] = "", -- A_Classic_Fairytale:first_blood +-- ["Use it wisely!"] = "", -- A_Classic_Fairytale:dragon +-- ["Use it with precaution!"] = "", -- A_Classic_Fairytale:first_blood ["User Challenge"] = "Reto personal", +-- ["Use the parachute ([Space] while in air)"] = "", -- +-- ["Use the portal gun to get to the next crate, then use the new gun to get to the final destination!|"] = "", -- A_Classic_Fairytale:dragon +-- ["Use the rope to get on the head of the mole, young one!"] = "", -- A_Classic_Fairytale:first_blood +-- ["Use the rope to knock your enemies to their doom."] = "", -- User_Mission_-_Rope_Knock_Challenge ["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!", +-- ["Vedgies"] = "", -- A_Classic_Fairytale:journey +-- ["Vegan Jack"] = "", -- A_Classic_Fairytale:enemy +-- ["Victory!"] = "", -- Basic_Training_-_Rope ["Victory for the "] = "La victoria es para ", -- CTF_Blizzard, Capture_the_Flag +-- ["Violence is not the answer to your problems!"] = "", -- A_Classic_Fairytale:first_blood +-- ["Walls Left"] = "", -- WxW +-- ["Walls Required"] = "", -- WxW +-- ["WALL TO WALL"] = "", -- WxW +-- ["Wannabe Flyboys"] = "", -- User_Mission_-_RCPlane_Challenge +-- ["Wannabe Shoppsta"] = "", -- User_Mission_-_Rope_Knock_Challenge +-- ["Watch your steps, young one!"] = "", -- A_Classic_Fairytale:first_blood ["Waypoint placed."] = "Baliza colocada.", ["Way-Points Remaining"] = "Balizas restantes", +-- ["Weaklings"] = "", -- A_Classic_Fairytale:shadow +-- ["We all know what happens when you get frightened..."] = "", -- A_Classic_Fairytale:first_blood ["Weapons Reset"] = "Armamento reiniciado", +-- ["Weapons reset."] = "", -- Highlander +-- ["We are indeed."] = "", -- A_Classic_Fairytale:backstab +-- ["We can't defeat them!"] = "", -- A_Classic_Fairytale:shadow +-- ["We can't hold them up much longer!"] = "", -- A_Classic_Fairytale:united +-- ["We can't let them take over our little island!"] = "", -- A_Classic_Fairytale:enemy +-- ["We have no time to waste..."] = "", -- A_Classic_Fairytale:journey +-- ["We have nowhere else to live!"] = "", -- A_Classic_Fairytale:enemy +-- ["We have to protect the village!"] = "", -- A_Classic_Fairytale:united +-- ["We have to unite and defeat those cylergs!"] = "", -- A_Classic_Fairytale:enemy +-- ["Welcome, Leaks A Lot!"] = "", -- A_Classic_Fairytale:journey ["Well done."] = "Bien hecho.", +-- ["We'll give you a problem then!"] = "", -- A_Classic_Fairytale:enemy +-- ["We'll spare your life for now!"] = "", -- A_Classic_Fairytale:backstab +-- ["Well, that was a waste of time."] = "", -- A_Classic_Fairytale:dragon +-- ["Well, well! Isn't that the cutest thing you've ever seen?"] = "", -- A_Classic_Fairytale:journey +-- ["Well, yes. This was a cyborg television show."] = "", -- A_Classic_Fairytale:enemy +-- ["We made sure noone followed us!"] = "", -- A_Classic_Fairytale:backstab +-- ["We need to move!"] = "", -- A_Classic_Fairytale:united +-- ["We need to prevent their arrival!"] = "", -- A_Classic_Fairytale:backstab +-- ["We need to warn the village."] = "", -- A_Classic_Fairytale:shadow +-- ["We should head back to the village now."] = "", -- A_Classic_Fairytale:shadow +-- ["We were trying to save her and we got lost."] = "", -- A_Classic_Fairytale:family +-- ["We won't let you hurt her!"] = "", -- A_Classic_Fairytale:journey +-- ["What?! A cannibal? Here? There is no time to waste! Come, you are prepared."] = "", -- A_Classic_Fairytale:first_blood +-- ["What a douche!"] = "", -- A_Classic_Fairytale:enemy +-- ["What am I gonna...eat, yo?"] = "", -- A_Classic_Fairytale:family +-- ["What are you doing at a distance so great, young one?"] = "", -- A_Classic_Fairytale:first_blood +-- ["What are you doing? Let her go!"] = "", -- A_Classic_Fairytale:journey +-- ["What a ride!"] = "", -- A_Classic_Fairytale:shadow +-- ["What a strange cave!"] = "", -- A_Classic_Fairytale:dragon +-- ["What a strange feeling!"] = "", -- A_Classic_Fairytale:backstab +-- ["What do my faulty eyes observe? A spy!"] = "", -- A_Classic_Fairytale:first_blood +-- ["Whatever floats your boat..."] = "", -- A_Classic_Fairytale:shadow +-- [" What !! For all of this struggle i just win some ... TIME o0"] = "", -- portal +-- ["What has "] = "", -- A_Classic_Fairytale:backstab +-- ["What? Here? How did they find us?!"] = "", -- A_Classic_Fairytale:backstab +-- ["What is this place?"] = "", -- A_Classic_Fairytale:dragon, A_Classic_Fairytale:enemy +-- ["What shall we do with the traitor?"] = "", -- A_Classic_Fairytale:backstab +-- ["WHAT?! You're the ones attacking us!"] = "", -- A_Classic_Fairytale:enemy +-- ["When?"] = "", -- A_Classic_Fairytale:enemy +-- ["When I find it..."] = "", -- A_Classic_Fairytale:dragon +-- ["Where are all these crates coming from?!"] = "", -- A_Classic_Fairytale:shadow +-- ["Where are they?!"] = "", -- A_Classic_Fairytale:backstab +-- ["Where did that alien run?"] = "", -- A_Classic_Fairytale:dragon +-- ["Where did you get the exploding apples?"] = "", -- A_Classic_Fairytale:shadow +-- ["Where did you get the exploding apples and the magic bow that shoots many arrows?"] = "", -- A_Classic_Fairytale:shadow +-- ["Where did you get the magic bow that shoots many arrows?"] = "", -- A_Classic_Fairytale:shadow +-- ["Where did you get the weapons in the forest, Dense Cloud?"] = "", -- A_Classic_Fairytale:backstab +-- ["Where do you get that?!"] = "", -- A_Classic_Fairytale:enemy +-- ["Where have you been?!"] = "", -- A_Classic_Fairytale:backstab +-- ["Where have you been?"] = "", -- A_Classic_Fairytale:united +-- ["? Why?"] = "", -- A_Classic_Fairytale:backstab +-- ["Why "] = "", -- A_Classic_Fairytale:backstab +-- ["! Why?!"] = "", -- A_Classic_Fairytale:backstab, A_Classic_Fairytale:united +-- ["Why are you doing this?"] = "", -- A_Classic_Fairytale:journey +-- ["Why are you helping us, uhm...?"] = "", -- A_Classic_Fairytale:family +-- ["Why can't he just let her go?!"] = "", -- A_Classic_Fairytale:family +-- ["Why do men keep hurting me?"] = "", -- A_Classic_Fairytale:first_blood +-- ["Why do you not like me?"] = "", -- A_Classic_Fairytale:shadow +-- ["Why do you want to take over our island?"] = "", -- A_Classic_Fairytale:enemy +-- ["Why me?!"] = "", -- A_Classic_Fairytale:backstab +-- ["Why would they do this?"] = "", -- A_Classic_Fairytale:backstab +-- ["- Will Get 1-3 random weapons"] = "", -- Continental_supplies +-- ["- Will refresh Parachute each turn."] = "", -- Continental_supplies +-- ["- Will refresh portalgun each turn."] = "", -- Continental_supplies ["Will this ever end?"] = "¿Es que nunca se va a terminar?", +-- ["WINNER IS "] = "", -- Mutant ["WINNING TIME: "] = "MEJOR TIEMPO: ", +-- ["Wise Oak"] = "", -- A_Classic_Fairytale:backstab, A_Classic_Fairytale:dragon, A_Classic_Fairytale:enemy, A_Classic_Fairytale:epil, A_Classic_Fairytale:family, A_Classic_Fairytale:queen +-- ["With Dense Cloud on the land of shadows, I'm the village's only hope..."] = "", -- A_Classic_Fairytale:journey +-- ["With the rest of the tribe gone, it was up to "] = "", -- A_Classic_Fairytale:dragon +-- ["Worry not, for it is a peaceful animal! There is no reason to be afraid..."] = "", -- A_Classic_Fairytale:first_blood +-- ["Wow, what a dream!"] = "", -- A_Classic_Fairytale:backstab +-- ["Y3K1337"] = "", -- A_Classic_Fairytale:journey, A_Classic_Fairytale:shadow +-- ["Yay, we won!"] = "", -- A_Classic_Fairytale:enemy +-- ["Y Chwiliad"] = "", -- A_Classic_Fairytale:dragon +-- ["Yeah...I think it's a 'he', lol."] = "", -- A_Classic_Fairytale:shadow +-- ["Yeah, sure! I died. Hillarious!"] = "", -- A_Classic_Fairytale:backstab +-- ["Yeah, take that!"] = "", -- A_Classic_Fairytale:dragon +-- ["Yeah? Watcha gonna do? Cry?"] = "", -- A_Classic_Fairytale:journey +-- ["Yes!"] = "", -- A_Classic_Fairytale:enemy +-- ["Yes, yeees! You are now ready to enter the real world!"] = "", -- A_Classic_Fairytale:first_blood +-- ["Yo, dude, we're here, too!"] = "", -- A_Classic_Fairytale:family +-- ["You are given the chance to turn your life around..."] = "", -- A_Classic_Fairytale:shadow +-- ["You are playing with our lives here!"] = "", -- A_Classic_Fairytale:enemy +-- ["! You bastards!"] = "", -- A_Classic_Fairytale:backstab, A_Classic_Fairytale:united +-- ["You bear impressive skills, "] = "", -- A_Classic_Fairytale:dragon +-- ["You can't fire a portal on the blue surface"] = "", -- portal +-- ["You couldn't possibly believe that after refusing my offer I'd just let you go!"] = "", -- A_Classic_Fairytale:journey ["You'd almost swear the water was rising!"] = "¡Pero si podría jurar que está subiendo el nivel del mar!", +-- ["You'd better watch your steps..."] = "", -- A_Classic_Fairytale:journey +-- ["You did not make it in time, try again!"] = "", -- Basic_Training_-_Rope +-- ["You have 7 turns until the next wave arrives.|Make sure the arriving cannibals are greeted appropriately!|If the hog dies, the cause is lost.|Hint: you might want to use some mines..."] = "", -- A_Classic_Fairytale:backstab +-- ["You have "] = "", -- A_Classic_Fairytale:dragon +-- ["You have been giving us out to the enemy, haven't you!"] = "", -- A_Classic_Fairytale:backstab +-- ["You have been respawned, at your last checkpoint!"] = "", -- Basic_Training_-_Rope +-- ["You have been respawned, be more carefull next time!"] = "", -- Basic_Training_-_Rope +-- ["You have chosen the perfect moment to leave."] = "", -- A_Classic_Fairytale:united +-- ["You have failed to complete your task, young one!"] = "", -- A_Classic_Fairytale:journey +-- ["You have failed to save the tribe!"] = "", -- A_Classic_Fairytale:backstab +-- ["You have finally figured it out!"] = "", -- A_Classic_Fairytale:enemy +-- ["You have kidnapped our whole tribe!"] = "", -- A_Classic_Fairytale:enemy +-- ["You have killed an innocent hedgehog!"] = "", -- A_Classic_Fairytale:backstab +-- ["You have proven yourself worthy to see our most ancient secret!"] = "", -- A_Classic_Fairytale:first_blood +-- ["You have proven yourselves worthy!"] = "", -- A_Classic_Fairytale:enemy ["You have SCORED!!"] = "¡Has anotado!", +-- ["You have to destroy 12 targets in 180 seconds"] = "", -- Basic_Training_-_Cluster_Bomb +-- ["You have won the game by proving true cooperative skills!"] = "", -- A_Classic_Fairytale:enemy +-- ["You just appeared out of thin air!"] = "", -- A_Classic_Fairytale:backstab +-- ["You just committed suicide..."] = "", -- A_Classic_Fairytale:shadow +-- ["You killed my father, you monster!"] = "", -- A_Classic_Fairytale:backstab +-- ["You know...taking a stroll."] = "", -- A_Classic_Fairytale:backstab +-- ["You know what? I don't even regret anything!"] = "", -- A_Classic_Fairytale:backstab +-- ["You'll see what I mean!"] = "", -- A_Classic_Fairytale:enemy +-- ["You may only attack from a rope!"] = "", -- WxW +-- ["You meatbags are pretty slow, you know!"] = "", -- A_Classic_Fairytale:enemy +-- ["You might want to find a way to instantly kill arriving cannibals!"] = "", -- A_Classic_Fairytale:backstab +-- ["Young one, you are telling us that they can instantly change location without a shaman?"] = "", -- A_Classic_Fairytale:united +-- ["You probably know what to do next..."] = "", -- A_Classic_Fairytale:first_blood +-- ["Your deaths will be avenged, cannibals!"] = "", -- A_Classic_Fairytale:enemy +-- ["Your death will not be in vain, Dense Cloud!"] = "", -- A_Classic_Fairytale:shadow +-- ["You're...alive!? But we saw you die!"] = "", -- A_Classic_Fairytale:backstab +-- ["You're a pathetic liar!"] = "", -- A_Classic_Fairytale:backstab +-- ["You're funny!"] = "", -- A_Classic_Fairytale:journey +-- ["You're getting pretty good! |Tip: When you shorten you rope you move faster! |and when you lengthen it you move slower"] = "", -- Basic_Training_-_Rope +-- ["You're pathetic! You are not worthy of my attention..."] = "", -- A_Classic_Fairytale:shadow +-- ["You're probably wondering why I bought you back..."] = "", -- A_Classic_Fairytale:backstab +-- ["You're terrorizing the forest...We won't catch anything like this!"] = "", -- A_Classic_Fairytale:shadow +-- ["Your hogs must survive!"] = "", -- A_Classic_Fairytale:journey +-- ["Your movement skills will be evaluated now."] = "", -- A_Classic_Fairytale:first_blood ["You saved"] = "¡Has salvado", +-- ["You've been assaulting us, we have been just defending ourselves!"] = "", -- A_Classic_Fairytale:enemy ["You've failed. Try again."] = "Has fracasado. Inténtalo de nuevo.", ["You've reached the goal!| |Time: "] = "¡Has llegado a la meta!| |Tiempo: ", +-- ["You will be avenged!"] = "", -- A_Classic_Fairytale:shadow +-- ["You won't believe what happened to me!"] = "", -- A_Classic_Fairytale:backstab +-- ["Yuck! I bet they'll keep worshipping her even after I save the village!"] = "", -- A_Classic_Fairytale:family +-- ["Zealandia"] = "", -- Continental_supplies ["'Zooka Team"] = "Bazuqueros", +-- ["Zork"] = "", -- A_Classic_Fairytale:dragon, A_Classic_Fairytale:family, A_Classic_Fairytale:queen } diff -r 3331b30e4ef1 -r 88fde28bbda6 share/hedgewars/Data/Locale/fr.lua --- a/share/hedgewars/Data/Locale/fr.lua Sun Oct 21 01:28:33 2012 +0400 +++ b/share/hedgewars/Data/Locale/fr.lua Sat Nov 03 00:34:35 2012 +0400 @@ -1,159 +1,845 @@ locale = { + ["???"] = "???", + ["..."] = "...", + ["..."] = "...", -- [":("] = "", -- ["!!!"] = "", -- ["..."] = "", + ["011101000"] = "", + ["011101000"] = "", + ["011101000"] = "", + ["011101001"] = "", + ["011101001"] = "", + ["011101001"] = "", + ["011101001"] = "", + ["011101001"] = "", + ["011101001"] = "", + ["011101001"] = "", + ["011101001"] = "", + ["011101001"] = "", + ["011101001"] = "", + ["011101001"] = "", + ["011101001"] = "", + ["011101001"] = "", + ["011101001"] = "", + ["011101001"] = "", + ["011101001"] = "", + ["011101001"] = "", + ["011101001"] = "", + ["011101001"] = "", + ["011101001"] = "", + ["011101001"] = "", + ["011101001"] = "011101001", + ["30 minutes later..."] = "30 minutes plus tard...", + ["About a month ago, a cyborg came and told us that you're the cannibals!"] = "Il y a un moins, un cyborg est venu et nous a dit que vous étiez des cannibales !", ["Accuracy Bonus!"] = "Bonus précision", +-- ["Ace"] = "", -- User_Mission_-_RCPlane_Challenge, User_Mission_-_Rope_Knock_Challenge ["Achievement Unlocked"] = "Succes débloqué", -- User_Mission_-_Bamboo_Thicket, User_Mission_-_That_Sinking_Feeling, Tumbler +-- a classic fairytale: backstab +-- a classic fairytale: dragon's lair +-- a classic fairytale: epilogue +-- a classic fairytale: family reunion + -- a classic fairytale: first blood +-- a classic fairytale: long live the queen +-- a classic fairytale: the enemy of my enemy... +-- a classic fairytale: the journey back +-- a classic fairytale: the shadow falls + ["A Classic Fairytale"] = "Un conte de fée classique", +-- a classic fairytale: united we stand + ["Actually, you aren't worthy of life! Take this..."] = "En fait, tu n'es pas digne de vivre ! Prends ça....", + ["A cy-what?"] = "Un cy-quoi ?", + ["Adventurous"] = "Aventureux", +-- ["Africa"] = "", -- Continental_supplies + ["After Leaks A Lot betrayed his tribe, he joined the cannibals..."] = "Après que Leaks A Lot ait trahit sa tribus, il rejoignit les cannibales... ", + ["After the shock caused by the enemy spy, Leaks A Lot and Dense Cloud went hunting to relax."] = "Après le choc causé par l'espion ennemi, Leaks A Lot et Dense cloud partirent chasser pour se détendre.", + ["Again with the 'cannibals' thing!"] = "Encore avec votre 'cannibale' truc", +-- ["a Hedgewars challenge"] = "", -- User_Mission_-_RCPlane_Challenge, User_Mission_-_Rope_Knock_Challenge ["a Hedgewars mini-game"] = "Un mini jeux d'Hedgewars", -- Space_Invasion, The_Specialists ["Aiming Practice"] = "Entrainement de tir", --Bazooka, Shotgun, SniperRifle - ["Ammo"] = "Munitions", + ["A leap in a leap"] = "Un bond dans un bond", + ["A little gift from the cyborgs"] = "Un petit cadeau de la part des cyborgs", + ["All gone...everything!"] = "évaporé...plus rien !", + ["All right, we just need to get to the other side of the island!"] = "", + ["All right, we just need to get to the other side of the island!"] = "Très bien, nous devons juste rejoindre l'autre côté de l'île !", +-- ["All walls touched!"] = "", -- WxW ["Ammo Depleted!"] = "Munitions épuisées !", ["ammo extended!"] = "Munitions en plus !", ["Ammo is reset at the end of your turn."] = "Les munitions sont réinitialisées à la fin du tour", ["Ammo Maniac!"] = "Collectionneur de munitions !", + ["Ammo"] = "Munitions", + ["And how am I alive?!"] = "Et comment suis je en vie ?", + ["And so happenned that Leaks A Lot failed to complete the challenge! He landed, pressured by shame..."] = "Et Leaks A Lot échoua à relever le défi ! Il atteri, honteux....", + ["And so it began..."] = "Et c'est ainsi que ça a commencé...", + ["...and so the cyborgs took over the world..."] = "...Et c'est ainsi que les cyborgs prirent le controle du monde...", + ["And so they discovered that cyborgs weren't invulnerable..."] = "", + ["And so they discovered that cyborgs weren't invulnerable..."] = "", + ["And so they discovered that cyborgs weren't invulnerable..."] = "Et c'est ainsi qu'ils découvrirent que les cybords n'étaient pas invulnérables...", + ["And where's all the weed?"] = "et où est toute l'herbe ?", + ["And you believed me? Oh, god, that's cute!"] = "Et tu m'as cru ? Oh mon dieu, c'est mignon !", +-- ["Anno 1032: [The explosion will make a strong push ~ wide range, wont affect hogs close to the target]"] = "", -- Continental_supplies +-- ["Antarctica"] = "", -- Continental_supplies + ["Are we there yet?"] = "Somme nous toujours là ?", + ["Are you accusing me of something?"] = "Es tu en train de m'accuser de quelque chose ? ", + ["Are you saying that many of us have died for your entertainment?"] = "Etes vous en train de dire que beaucoup d'entre nous sont morts pour votre divertissement ? ", + ["Artur Detour"] = "", + ["As a reward for your performance, here's some new technology!"] = "Comme récompence, voici quelques nouvelles technologie !", +-- ["a shoppa minigame"] = "", -- WxW +-- ["Asia"] = "", -- Continental_supplies + ["Assault Team"] = "", + ["Assault Team"] = "", + ["As the ammo is sparse, you might want to reuse ropes while mid-air.|"] = "Vu que les munitions sont éparpillées tu devrais re-lancer la corde en plein vol", + ["As the challenge was completed, Leaks A Lot set foot on the ground..."] = "Le défi accompli, Leaks A Lot posa les pieds sur le sol...", + ["As you can see, there is no way to get on the other side!"] = "Comme tu peux le voir, il n'y a pas de moyen d'atteindre l'autre côté !", +-- ["Attack From Rope"] = "", -- WxW +-- ["Australia"] = "", -- Continental_supplies ["Available points remaining: "] = "points restant disponibles", -- need the situation of when this sentence is used + ["Back Breaker"] = "", + ["Back in the village, after telling the villagers about the threat..."] = "De retour au village, après avoir averti les villageois de la menace...", -- ["[Backspace]"] = "effacement arrière", --maybe the original name is better... + ["Backstab"] = "", + ["Backstab"] = "", + ["Backstab"] = "", + ["Backstab"] = "", + ["Backstab"] = "coup de poignard dans le dos", +-- ["Bad Team"] = "", -- User_Mission_-_The_Great_Escape -- ["Bamboo Thicket"] = "", --really, i don't know the good translation for this ["Barrel Eater!"] = "Mangeur de Barrils", ["Barrel Launcher"] = "Lanceur de barrils", --need the situation for me to understand sens of sentence +-- ["Baseballbat"] = "", -- Continental_supplies ["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", + ["Beep Loopers"] = "", + ["Beep Loopers"] = "", ["Best laps per team: "] = "Meilleur temps par équipe", -- ["Best Team Times: "] = "", + ["Beware, though! If you are slow, you die!"] = "Attention tout de meme ! si tu es lent, tu meurt !", + ["Biomechanic Team"] = "", + ["Biomechanic Team"] = "", + ["Blender"] = "", + ["Bloodpie"] = "", + ["Bloodrocutor"] = "Bloodrocutor", + ["Bloodsucker"] = "Bloodsucker", ["Bloody Rookies"] = "Nouvelles recrues", -- 01#Boot_Camp, User_Mission_-_Dangerous_Ducklings, User_Mission_-_Diver, User_Mission_-_Spooky_Tree + ["Bone Jackson"] = "", + ["Bonely"] = "Bonely", ["Boom!"] = "Boom!", ["BOOM!"] = "BOOM!", ["Boss defeated!"] = "Boss vaincu", ["Boss Slayer!"] = "Tueur de Boss !", + ["Brain Blower"] = "Brain Blower", + ["Brainiac"] = "", + ["Brainiac"] = "", + ["Brainiac"] = "Brainiac", + ["Brainiac"] = "Brainic", + ["Brainila"] = "", + ["Brain Stu"] = "", + ["Brain Teaser"] = "", + ["Brutal Lily"] = "", + ["Brutal Lily"] = "Brutal Lily", + ["Brutus"] = "", + ["Brutus"] = "Brutus", ["Build a track and race."] = "construisez un parcours et faites la course.", + ["Bullseye"] = "Dans le mille", + ["But it proved to be no easy task!"] = "Mais cela ne s'avéra pas etre une tache facile !", + ["But that's impossible!"] = "Mais c'est impossible !", + ["But the ones alive are stronger in their heart!"] = "Mais les survivants sont plus forts dans leur coeur !", + ["But...we died!"] = "Mais... nous avons été tués !", + ["But where can we go?"] = "Mais où pouvons nous aller ? ", + ["But why would they help us?"] = "Mais pourquoi nous aideraient-ils ? ", + ["But you're cannibals. It's what you do."] = "Mais vous etes cannibales. C'est ce que vous faites.", + ["But you said you'd let her go!"] = "Mais vous aviez dit que vous la laisseriez partir !", + ["Call me Beep! Well, 'cause I'm such a nice...person!"] = "Appele moi Beep ! Hum, parce que je suis genre une personne sympa !", + --CAMPAIGN MISSIONS TRANSLATION FRENCH-- + ["Cannibals"] = "", + ["Cannibals"] = "", + ["Cannibals"] = "", + ["Cannibals"] = "", + ["Cannibals"] = "Cannibales", + ["Cannibals"] = "Cannibals", + ["Cannibal Sentry"] = "", + ["Cannibal Sentry"] = "", + ["Cannibal Sentry"] = "Sentinelle cannibale", + ["Cannibals?! You're the cannibals!"] = "Cannibales ? C'est vous les cannibales !", ["CAPTURE THE FLAG"] = "Capturez le drapeau !", ["Careless"] = "Imprudent", + ["Carol"] = "", +-- ["CHALLENGE COMPLETE"] = "", -- User_Mission_-_RCPlane_Challenge ["Change Weapon"] = "changez d'arme", + ["Choose your side! If you want to join the strange man, walk up to him.|Otherwise, walk away from him. If you decide to att...nevermind..."] = "Choisis ton côté ! Si tu veux rejoindre l'étranger, marche vers lui. |Dans le cas contraire, éloigne toi de lui. Si tu décide de l'att...non laisse tomber...", ["Clumsy"] = "Maladroit", +-- ["Cluster Bomb MASTER!"] = "", -- Basic_Training_-_Cluster_Bomb +-- ["Cluster Bomb Training"] = "", -- Basic_Training_-_Cluster_Bomb ["Codename: Teamwork"] = "Nom de code : Travail d'équipe", + ["Collateral Damage"] = "Dommage collatéraux", + ["Collateral Damage II"] = "", + ["Collateral Damage II"] = "Dommage collatéraux II", + ["Collect all the crates, but remember, our time in this life is limited!"] = "Collectes toutes les caisses mais souviens toi, notre temps dans cette vie est limité !", +-- ["Collect or destroy all the health crates."] = "", -- User_Mission_-_RCPlane_Challenge + ["Collect the crate on the right.|Hint: Select the rope, [Up] or [Down] to aim, [Space] to fire, directional keys to move.|Ropes can be fired again in the air!"] = "collecte les caisses à droite. |astuce : selectionne la corde ninja, [haut] ou [bas] pour viser, flèches directionnelles pour bouger. |La corde peut etre re-lancée en plein vol !", + ["Collect the crates within the time limit!|If you fail, you'll have to try again."] = "collectes les caisses dans le temps imparti ! |si tu rates, tu devras réessayer.", + ["Come closer, so that your training may continue!"] = "Rapproche toi, ainsi ton entraînement pourra continuer !", +-- ["Compete to use as few planes as possible!"] = "", -- User_Mission_-_RCPlane_Challenge ["Complete the track as fast as you can!"] = "Finissez la course aussi vite que possible !", +-- ["COMPLETION TIME"] = "", -- User_Mission_-_Rope_Knock_Challenge +-- ["Configuration accepted."] = "", -- WxW +-- ["Congratulations"] = "", -- Basic_Training_-_Rope ["Congratulations!"] = "Félicitations !", +-- ["Congratulations! You needed only half of time|to eliminate all targets."] = "", -- Basic_Training_-_Cluster_Bomb +-- ["Congratulations! You've completed the Rope tutorial! |- Tutorial ends in 10 seconds!"] = "", -- Basic_Training_-_Rope ["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 +-- ["Continental supplies"] = "", -- Continental_supplies ["Control pillars to score points."] = "Contrôlez les piliers pour marquer des points", + ["Corporationals"] = "", + ["Corporationals"] = "", + ["Corpsemonger"] = "Corpsemonger", + ["Corpse Thrower"] = "Corpse Thrower", +-- ["Crates Left:"] = "", -- User_Mission_-_RCPlane_Challenge ["Cybernetic Empire"] = "Empire cybernétique", + ["Cyborg. It's what the aliens call themselves."] = "Cyborg. C'est ainsi que s'appellent les aliens entre eux.", + ["Dahmer"] = "", ["DAMMIT, ROOKIE!"] = "Et merde, recrue", ["DAMMIT, ROOKIE! GET OFF MY HEAD!"] = "Et merde, recrue ! Dégage de me tête !", ["Dangerous Ducklings"] = "Canetons dangereux", -- ["Deadweight"] = "poids mort/boulet", + ["Defeat the cannibals"] = "", + ["Defeat the cannibals!|"] = "Bat les cannibales", + ["Defeat the cannibals!|Grenade hint: set the timer with [1-5], aim with [Up]/[Down] and hold [Space] to set power"] = "Bat les cannibales ! |Astuce Grenade : Règle le compte à rebour avec [1-5], vises avec [haut]/[bas] et maintient [Espace] pour la puissance", + ["Defeat the cyborgs!"] = "Bats les cyborgs !", + ["Defend yourself!|Hint: You can get tips on using weapons by moving your mouse over them in the weapon selection menu"] = "Défends toi ! |Conseil : Tu peux obtenir des astuces sur l'utilisation des armes en placant ta souris dessus dans le menu de séléction des armes", ["Demolition is fun!"] = "La démolition c'est cool", + ["Dense Cloud"] = "", + ["Dense Cloud"] = "", + ["Dense Cloud"] = "", + ["Dense Cloud"] = "", + ["Dense Cloud"] = "", + ["Dense Cloud"] = "", + ["Dense Cloud"] = "", + ["Dense Cloud"] = "", + ["Dense Cloud"] = "", + ["Dense Cloud"] = "", + ["Dense Cloud"] = "Dense Cloud", + ["Dense Cloud must have already told them everything..."] = "Dense Cloud doit déjà leur avoir tout raconter...", -- ["Depleted Kamikaze!"] = "Kamikaze ... !", + ["Destroy him, Leaks A Lot! He is responsible for the deaths of many of us!"] = "Détruis le, Leaks A Lot ! Il est responsable de la mort de beaucoup d'entre nous !", ["Destroy invaders to score points."] = "Détruisez les envahisseur pour marquer des points", + ["Destroy the targets!|Hint: Select the Shoryuken and hit [Space]|P.S. You can use it mid-air."] = "Détruis les cibles ! |Astuce : selectionne le Shoryuken et appuyez sur [Espace] |P.S. vous pouvez l'utilisez en plein vol", + ["Destroy the targets!|Hint: [Up], [Down] to aim, [Space] to shoot"] = "Détruis les cibles ! |Astuce : [haut], [bas] pour viser, [Espace] pour tirer", + ["Destroy the targets!|Hint: [Up], [Down] to aim, [Space] to shoot"] = "Détruis les cibles ! |Astuce : [haut], [bas] pour viser, [Espace] pour tirer", + ["Did anyone follow you?"] = "As tu été suivis ? ", + ["Did you see him coming?"] = "L'a tu vu venir ?", + ["Did you warn the village?"] = "As tu averti le village ?", + ["Die, die, die!"] = "Meurt, meurt, meurt !", +-- ["Disguise as a Rockhopper Penguin: [Swap place with a random enemy hog in the circle]"] = "", -- Continental_supplies +-- ["Dist: "] = "", -- Space_Invasion + ["Do not laugh, inexperienced one, for he speaks the truth!"] = "Ne rit pas, inexpérimenté, car il dit la vérité ! ", + ["Do not let his words fool you, young one! He will stab you in the back as soon as you turn away!"] = "Ne laisse pas ses mots de distraire l'apprenti ! Il te poignardera dès que tu auras le dos tourné !", + ["Do the deed"] = "Accomplir l'acte", ["Double Kill!"] = "Double meurtre", +-- ["DOUBLE KILL"] = "", -- Mutant + ["Do you have any idea how valuable grass is?"] = "Est ce que vous avez une idée de la valeur de votre herbe ?", + ["Do you think you're some kind of god?"] = "Vous vous prenez pour un genre de dieu ?", + ["Dragon's Lair"] = "", + ["Dragon's Lair"] = "", + ["Dragon's Lair"] = "", + ["Dragon's Lair"] = "La tanière du dragon", + ["Drills"] = "", ["Drone Hunter!"] = "Chasseur de drone", +-- ["Drop a bomb: [drop some heroic wind that will turn into a bomb on impact]"] = "", -- Continental_supplies -- ["Drowner"] = "",-- can't have a good translation, think its a merge of drone and owner so if wanna translate it will be : tueur de drone, wich is like drone hunter... + ["Dude, all the plants are gone!"] = "Mec, toutes les plantes sont parties !", + ["Dude, can you see Ramon and Spiky?"] = "Mec, peux tu voir Ramon et Spkiky ? ", + ["Dude, that's so cool!"] = "Mec, c'est si cool !", + ["Dude, we really need a new shaman..."] = "mec, on a vraiment besoin d'un nouveau Shaman...", + ["Dude, what's this place?!"] = "Mec, quel est cet endroit?", + ["Dude, where are we?"] = "Mec, où sommes nous ? ", + -- ["Dude, wow! I just had the weirdest high!"] = "", +-- ["Duration"] = "", -- Continental_supplies +-- ["Dust storm: [Deals 20 damage to all enemies in the circle]"] = "", -- Continental_supplies ["Each turn you get 1-3 random weapons"] = "A chaque tour, tu as 1 à 3 armes aléatoires", ["Each turn you get one random weapon"] = "A chaque tour, tu as une arme aléatoire", + ["Eagle Eye"] = "", +-- ["Eagle Eye: [Blink to the impact ~ one shot]"] = "", -- Continental_supplies + ["Ear Sniffer"] = "", + ["Ear Sniffer"] = "Ear Sniffer", + ["Elderbot"] = "", +-- ["Elimate your captor."] = "", -- User_Mission_-_The_Great_Escape ["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 enemy hogs and take their weapons."] = "", -- Highlander ["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 the enemy before the time runs out"] = "Eliminez les ennemis avant que le temps ne soit épuisé", -- User_Mission_-_Bamboo_Thicket, User_Mission_-_Newton_and_the_Hammock ["Eliminate the enemy hogs to win."] = "Eliminez les hérissons ennemis pour gagner", ["Eliminate the enemy specialists."] = "Eliminez les spécialists ennemis", ["- Eliminate Unit 3378 |- Feeble Resistance must survive"] = "Éliminez l'unité 3378|- Résistance Futile doit survivre", + ["Elmo"] = "", + ["Elmo"] = "", + ["Elmo"] = "", -- ["Energetic Engineer"] = "", ["Enjoy the swim..."] = "Profitez du bain ...", -- ["[Enter]"] = "", +-- ["Europe"] = "", -- Continental_supplies +-- [" ever done to you?!"] = "", -- A_Classic_Fairytale:backstab + ["Everyone knows this."] = "Tout le monde sait ça.", + ["Every single time!"] = "A chaque fois !", + ["Everything looks OK..."] = "Tout à l'air d'être OK ...", + ["Exactly, man! That was my dream."] = "Exactement, mec ! C'était mon rêve.", + ["Eye Chewer"] = "Eye Chewer", +-- ["FAG"] = "", -- Mutant + = "Fais sortir tes coéquipiers de leur prison naturelle et sauve la princesse ! |Percer des trous résoudrait tout. |ca serait une bonne idée de placer quelque poutres avant de commencer à percer. je dis ça, je dis rien. |Tous vos hérissons doivent être au dessus de la hauteur marquée ! | Leaks A Lot doit être très proche de la princesse ! ", + ["Family Reunion"] = "", + ["Family Reunion"] = "Réunion de famille ", ["Fastest lap: "] = "Meilleur tour : ", ["Feeble Resistance"] = "Résistance Futile", + ["Fell From Grace"] = "", + ["Fell From Grace"] = "", + ["Fell From Grace"] = "", + ["Fell From Grace"] = "", + ["Fell From Grace"] = "", + ["Fell From Grace"] = "Fell From Grace", + ["Fell From Heaven"] = "", + ["Fell From Heaven"] = "", + ["Fell From Heaven"] = "", + ["Fell From Heaven"] = "", + ["Fell From Heaven"] = "", + ["Fell From Heaven"] = "", + ["Fell From Heaven"] = "", + ["Fell From Heaven"] = "Fell From Heaven", + ["Fell From Heaven is the best! Fell From Heaven is the greatest!"] = "Fell From Heaven est la meilleure ! Fell From Heaven est la meilleure !", + ["Femur Lover"] = "Femur Lover", +-- ["Fierce Competition!"] = "", -- Space_Invasion + ["Fiery Water"] = "", + ["Fiery Water"] = "", + ["Fiery Water"] = "", + ["Fiery Water"] = "", + ["Fiery Water"] = "", + ["Fiery Water"] = "", + ["Fiery Water"] = "", + ["Fiery Water"] = "", + ["Fiery Water"] = "", + ["Fiery Water"] = "Fiery Water", + ["Find your tribe!|Cross the lake!"] = "Trouves ta tribue ! |travers le lac !", + ["Finish your training|Hint: Animations can be skipped with the [Precise] key."] = "Finis ton entraînement ! |Astuce : Les animations peuvent être passées en appuyant sur la touche [Precise]", -- ["Fire"] = "", +-- ["Fire a mine: [Does what it says ~ Cant be dropped close to an enemy ~ 1 sec]"] = "", -- Continental_supplies + ["First aid kits?!"] = "Des kits de premiers secours ?!", +-- ["FIRST BLOOD MUTATES"] = "", -- Mutant + ["First Blood"] = "Premier sang", + ["First Blood"] = "Premier sang", + ["First Blood"] = "Premier sang", + ["First Steps"] = "Premiers pas", ["Flag captured!"] = "Drapeau capturé !", ["Flag respawned!"] = "Drapeau réapparu", ["Flag returned!"] = "Drapeau récupéré", ["Flags, and their home base will be placed where each team ends their first turn."] = "Les drapeaux et leur base seront placés là où chaque équipe finit son premier tour", -- ["Flamer"] = "", + ["Flaming Worm"] = "", +-- ["Flare: [fire up some bombs depending on hogs depending on hogs in the circle"] = "", -- Continental_supplies + ["Flesh for Brainz"] = "Flesh for Brainz", +-- ["For improved features/stability, play 0.9.18+"] = "", -- WxW + ["Free Dense Cloud and continue the mission!"] = "Libérez Dense Cloud et continuez la mission !", -- ["Friendly Fire!"] = "", ["fuel extended!"] = "Le plein d'essence !", ["GAME BEGUN!!!"] = "Le jeu a commencé !!!", -- ["Game Modifiers: "] = "", ["GAME OVER!"] = "Fin du jeu ! ", ["Game Started!"] = "Début du jeu ! ", + ["Game? Was this a game to you?!"] = "Jeu ? Etais ce un jeu pour vous ?!", +-- ["GasBomb"] = "", -- Continental_supplies + ["Gas Gargler"] = "", + ["Get Dense Cloud out of the pit!"] = "Sortez Dense Cloud de la fosse", ["Get on over there and take him out!"] = "Viens par ici et débarrasse-toi de lui ! ", + ["Get on the head of the mole"] = "Va sur la tête de la taupe", +-- ["Get out of there!"] = "", -- User_Mission_-_The_Great_Escape + ["Get that crate!"] = "Prends cette caisse", + ["Get the crate on the other side of the island!|"] = "Prends la caisse de l'autre côté de l'île !", +-- ["Get to the target using your rope! |Controls: Left & Right to swing the rope - Up & Down to Contract and Expand!"] = "", -- Basic_Training_-_Rope + ["Get your teammates out of their natural prison and save the princess!|Hint: Drilling holes should solve everything.|Hint: It might be a good idea to place a girder before starting to drill. Just saying.| Hint: All your hedgehogs need to be above the marked height!|Hint: Leaks A Lot needs to get really close to the princess!"] +-- ["Get your teammates out of their natural prison and save the princess!|Hint: Drilling holes should solve everything.|Hint: It might be a good idea to place a girder before starting to drill. Just saying.|Hint: All your hedgehogs need to be above the marked height!|Hint: Leaks A Lot needs to get really close to the princess!"] = "", -- A_Classic_Fairytale:family +-- ["GG!"] = "", -- User_Mission_-_Rope_Knock_Challenge + ["Gimme Bones"] = "", + ["Glark"] = "Glark", -- ["Goal"] = "", -- ["GO! GO! GO!"] = "", ["Good birdy......"] = "Gentil oiseau ...", +-- ["Good Dude"] = "", -- User_Mission_-_The_Great_Escape + ["Good idea, they'll never find us there!"] = "Bonne idée, ils ne nous trouverons jamais là bas !", + ["Good luck...or else!"] = "", + ["Good luck...or else!"] = "Bonne chance.... ou pas !", ["Good luck out there!"] = "Bonne chance pour sortir d'ici", -- ["Good so far!"] = "", -- ["Good to go!"] = "", + ["Go on top of the flower"] = "Atteins le dessus de la fleur", + ["Go, quick!"] = "Va ! Vite !", + ["Gorkij"] = "Gorkij", +-- ["Go surf!"] = "", -- WxW -- ["GOTCHA!"] = "je t'ai eu !", is this good ? ["Grab Mines/Explosives"] = "Emparez vous des Mines/Explosifs", + ["Great choice, Steve! Mind if I call you that?"] = "Bon choix, Steve ! Ca t'ennuie si je t'appele comme ça ?", +-- ["Great work! Now hit it with your Baseball Bat! |Tip: You can change weapon with 'Right Click'!"] = "", -- Basic_Training_-_Rope + ["Great! You will be contacted soon for assistance."] = "super ! Tu seras bientot contacté pour de l'assistance.", +-- ["Green lipstick bullet: [Is poisonous]"] = "", -- Continental_supplies + ["Greetings, cloudy one!"] = "Salutation, le nuageux !", + ["Greetings, "] = "Salutations, ", +-- ["Grenade Training"] = "", -- Basic_Training_-_Grenade +-- ["Grenadiers"] = "", -- Basic_Training_-_Grenade + ["Guys, do you think there's more of them?"] = "Les gars, vous pensez qu'ils y en plus encore ?", -- ["Hahahaha!"] = "", + ["Haha!"] = "Haha !", + ["HAHA!"] = "HAHA !", ["Haha, now THAT would be something!"] = "Haha, maintenant CA va être quelquechose !", + ["Hannibal"] = "Hannibal", -- ["Hapless Hogs"] = "", -- [" Hapless Hogs left!"] = "", +-- [" HAS MUTATED\" )"] = "", -- + ["Hatless Jerry"] = "", + ["Have no illusions, your tribe is dead, indifferent of your choice."] = "N'ai pas d'illusion, ta tribue est morte, quel que soit ton choix", + ["Have we ever attacked you first?"] = "nous avons vous jamais attaqué en premier ? ", ["Health crates extend your time."] = "Les caisses de vie augmentent votre temps.", -- ["Heavy"] = "", + ["Heavy Cannfantry"] = "", + ["Hedge-cogs"] = "", + ["Hedge-cogs"] = "", +-- ["Hedgehog projectile: [fire your hog like a Sticky Bomb]"] = "", -- Continental_supplies -- ["Hedgewars-Basketball"] = "", -- ["Hedgewars-Knockball"] = "", + ["Hedgibal Lecter"] = "", ["Heh, it's not that bad."] = "Hé, c'est pas si mal.", + ["Hello again, "] = "Re*bonjour,", + ["Help me, Leaks!"] = "Aide moi, Leaks !", + ["Help me, please!!!"] = "", + ["Help me, please!"] = "", + ["Help me, please!!!"] = "Aide moi, s'il te plait !!!", + ["Help me, please!"] = "Aide moi, s'il te plaît !", + ["He moves like an eagle in the sky."] = "Il se déplace comme un aigle dans le ciel", + ["He must be in the village already."] = "Il doit déjà être au village", + ["Here, let me help you!"] = "Laissez moi vous aider !", + ["Here, let me help you save her!"] = "Laisse moi vous aider à la sauver !", + ["Here...pick your weapon!"] = "ici...choisis ton arme !", +-- ["Hero Team"] = "", -- User_Mission_-_The_Great_Escape + ["He's so brave..."] = "Il est si courageux", + ["He won't be selling us out anymore!"] = "Il ne nous vendra plus !", + ["Hey, guys!"] = "", + ["Hey guys!"] = "Salut les gars !", + ["Hey! This is cheating!"] = "", + ["Hey! This is cheating!"] = "Hé ! C'est de la triche !", +-- ["HIGHLANDER"] = "", -- Highlander + ["Hightime"] = "Meilleur temps", + ["Hint: Double Jump - Press [Backspace] twice"] = "Astuce : Double saut : appuyez deux fois sur [retour arrière]", + ["Hint: Select the BlowTorch, aim and press [Fire]. Press [Fire] again to stop.|Don't blow up the crate."] = "Astuce : Selectionnez le chalumeau, visez et tirez[Espace]. [espace] a nouveau pour stopper. |N'explosez pas la caisse.", + ["Hint: Select the LowGravity and press [Fire]."] = "Astuce : Selectionnez : gravité faible et appuyez sur [espace]", + ["Hint: you might want to stay out of sight and take all the crates...|"] = "Astuce : Vous aimeriez probablement rester hors de vue et prendre toutes les caisses...|", + ["His arms are so strong!"] = "Ces bras sont si forts !", -- ["Hit Combo!"] = "", -- ["Hmmm..."] = "", + ["Hmmm...actually...I didn't either."] = "Humm... en fait...je ne savais pas non plus.", +-- ["Hmmm, I'll have to find some way of moving him off this anti-portal surface..."] = "", -- portal + ["Hmmm...it's a draw. How unfortunate!"] = "Hmmm... C'est un dessin. Pas de chance !", + ["Hmmm...perhaps a little more time will help."] = "humm...Peut être qu'un peu plus de temps aiderait", + ["Hogminator"] = "", +-- ["Hogs in sight!"] = "", -- Continental_supplies +-- ["HOLY SHIT!"] = "", -- Mutant + ["Honest Lee"] = "", ["Hooray!"] = "Hourra ! ", + ["Hostage Situation"] = "Situation d'otage", + ["How can I ever repay you for saving my life?"] = "", + ["How can I ever repay you for saving my life?"] = "", + ["How can I ever repay you for saving my life?"] = "Comment pourrais-je jamais te remercier de m'avoir sauver la vie ?", + ["How come in a village full of warriors, it's up to me to save it?"] = "Comment entrer dans un village plein de guerriers, c'est à moi de le sauver ?", + ["How difficult would you like it to be?"] = "A quel point veut tu que ce soit difficile ?", + ["HOW DO THEY KNOW WHERE WE ARE???"] = "COMMENT SAVENT-ILS OU NOUS SOMMES ?", + ["However, if you fail to do so, she dies a most violent death, just like your friend! Muahahaha!"] = "", + ["However, if you fail to do so, she dies a most violent death! Muahahaha!"] = "Cependant, si tu échoues, elle aura une mort encore plus violente ! Muahahaha!", + ["However, my mates don't agree with me on letting you go..."] = "Mes amis ne sont pas d'accord pour vous laisser partit ...", +-- [" HP"] = "", -- Mutant ["Hunter"] = "Chasseur", --Bazooka, Shotgun, SniperRifle + ["I believe there's more of them."] = "Je crois qu'il y en a encore d'autres", + ["I can see you have been training diligently."] = "Je vois que tu t'es entraîné assiduement.", + ["I can't believe it worked!"] = "Je ne peux pas croire que ça a marché !", + ["I can't believe this!"] = "Je ne peux pas le croire !", + ["I can't believe what I'm hearing!"] = "Je ne peux pas croire ce que j'entends !", + ["I can't wait any more, I have to save myself!"] = "Je ne peux plus attendre, je dois me sauver !", + ["I could just teleport myself there..."] = "Je pourrai juste me téléporter la bas...", + ["I'd better get going myself."] = "Je ferai mieux de rentrer.", + ["I didn't until about a month ago."] = "Je ne savais pas jusqu'à il y a un mois", +-- ["I don't know how you did that.. But good work! |The next one should be easy as cake for you!"] = "", -- Basic_Training_-_Rope + ["I feel something...a place! They will arrive near the circles!"] = "", + ["I feel something...a place! They will arrive near the circles!"] = "Je sens quelque chose... une localisation ! Ils vont arriver près des cercles !", + ["If only I had a way..."] = "", + ["If only I had a way..."] = "Si seulement j'avais un moyen...", + ["If only I were given a chance to explain my being here..."] = "Si seulement vous me laissiez une chance d'expliquer ce que je fais ici...", + ["I forgot that she's the daughter of the chief, too..."] = "J'avais oublié qu'elle était aussi la fille du chef...", + ["If they try coming here, they can have a taste of my delicious knuckles!"] = "S'ils essaient de venir, ils pourront gouter de mes poings", + ["If you agree to provide the information we need, you will be spared!"] = "Si tu es d'accord pour nous donner les informations dont nous avons besoin, tu seras épargné !", +-- ["If you can get that crate fast enough, your beloved \"princess\" may go free."] = "", -- A_Classic_Fairytale:journey + ["If you decide to help us, though, we will no longer need to find a new governor for the island."] = "Si tu décides de nous aider, et bien, nous n'aurons plus besoin de chercher un nouveau gouverneur pour l'île.", + ["If you get stuck, use your Desert Eagle or restart the mission!|"] = "Si vous êtes coincés, utiliser le Desert Eable, ou recommencez la missions", + ["If you know what I mean..."] = "Si tu vois ce que je veux dire...", + ["If you say so..."] = "Si tu le dis...", +-- ["If you wish to restart the course, hold [Precise] while your turn ends (e.g with Skip)"] = "", -- + ["If you wish to restart the course, hold [Precise] while your turn ends (e.g with Skip)!|"] = "Si tu soihaire recommencer la coursse, maintien [precise] quand ton tour se termine (avec [passe ton tour ] par exemple", + ["I guess you'll have to kill them."] = "Je suppose que vous devrez les tuer", + ["I have come to make you an offering..."] = "Je suis venu te faire une offre...", + ["I have no idea where that mole disappeared...Can you see it?"] = "Je n'ai aucune idée où cette taupe à bien pu aller...Peux tu la voir ?", + ["I have to follow that alien."] = "Je dois suivre cet extraterrestre", + ["I have to get back to the village!"] = "Je dois retourner au village !", + ["I hope you are prepared for a small challenge, young one."] = "J'espere que tu es préparé pour un petit défi, l'apprenti", + ["I just don't want to sink to your level."] = "Je ne veux pas m'abaisser à votre niveau.", + ["I just found out that they have captured your princess!"] = "Je viens de m'apercevoir qu'ils ont capturé votre princesse !", + ["I just wonder where Ramon and Spiky disappeared..."] = "Je me demande seulement où Ramon et Spiky ont disparu", + ["I'll hold them off while you return to the village!"] = "Je vais les retenir pendant que tu retourne au village", + ["Imagine those targets are the wolves that killed your parents! Take your anger out on them!"] = "imagines que ces cibles sont les loups qui ont tués tes parents ! Défoule ta colère sur eux !", + ["I'm...alive? How? Why?"] = "Je suis...vivant ? Comment ? Pourquoi ?", + ["I'm a ninja."] = "Je suis un ninja", + ["I marked the place of their arrival. You're welcome!"] = "J'ai marqués les lieux d'où ils arriveront. Derien !", + ["I'm certain that this is a misunderstanding, fellow hedgehogs!"] = "Ce doit être une erreur, mes chers hérissons", + ["I mean, none of you ceased to live."] = "Je veux dire, aucun d'entre vous n'a cessé de vivre", + ["I'm getting old for this!"] = "Je deviens vieux pour ça !", + ["I'm getting thirsty..."] = "je deviens trentenaire", + ["I'm here to help you rescue her."] = "Je suis ici pour t'aider à la secourir.", + ["I'm not sure about that!"] = "", + ["I'm not sure about that!"] = "Je n'en suis pas si sûr !", + ["Impressive...you are still dry as the corpse of a hawk after a week in the desert..."] = "Impressionnant...tu es aussi sec que le cadavre d'un faucon après une semaine dans le désert...", + ["I'm so scared!"] = "Je suis si effrayé !", + ["Incredible..."] = "Incroyable", + ["I need to find the others!"] = "Je dois trouver les autres !", + ["I need to get to the other side of this island, fast!"] = "Je dois aller sur l'autre côté de cette île, rapidemment !", + ["I need to move the tribe!"] = "Je dois emmener la tribue", + ["I need to prevent their arrival!"] = "Je dois prévoir leur arrivée !", + ["I need to warn the others."] = "Je dois avertir les autres.", + ["In fact, you are the only one that's been acting strangely."] = "En fait, tu es le seul qui a agi étrangement.", + ["In order to get to the other side, you need to collect the crates first.|"] = "dans le but d'atteindre l'autre coté, tu dois d'abord collectez les caisses ", ["Instructor"] = "Instructeur", -- 01#Boot_Camp, User_Mission_-_Dangerous_Ducklings + ["Interesting idea, haha!"] = "Idee interessante, haha !", + ["Interesting! Last time you said you killed a cannibal!"] = "Interessant ! La dernière fois tu as dit que tu avais tué un cannibale !", +-- ["In the meantime, take these and return to your \"friend\"!"] = "", -- A_Classic_Fairytale:shadow ["invaders destroyed"] = "envahisseur détruit", + ["Invasion"] = "Invasion", + ["I saw it with my own eyes!"] = "Je l'ai vu de mes propres yeux !", + ["I see..."] = "Je vois...", + ["I see you have already taken the leap of faith."] = "Je vois que tu as déjà fait le saut de la foi.", + ["I see you would like his punishment to be more...personal..."] = "Je vois que tu voudrais que son châtiment soit plus...personnel...", + ["I sense another wave of cannibals heading my way!"] = "", + ["I sense another wave of cannibals heading our way!"] = "Je sens une autre vague de cannibale qui arrivent !", + ["I shouldn't have drunk that last pint."] = "Je n'aurais pas du boire cette derniere pinte", + ["Is this place in my head?"] = "est ce que cet endroit est dans ma tete ?", + ["It doesn't matter. I won't let that alien hurt my daughter!"] = "Ca n'a pas d'importance. je ne laisserai pas cet alien blesser ma fille !", + ["I think we are safe here."] = "Je pense que nous sommes en sécurité ici.", + ["I thought their shaman died when he tried our medicine!"] = "Je pensais que leur shaman est mort quand il a essayé notre médecine !", + ["It is called 'Hogs of Steel'."] = "C'est appelé 'hérissions d'acier' .", + ["It is time to practice your fighting skills."] = "Il est temps d'entraîner tes compétences de combat", + ["It must be a childhood trauma..."] = "Ca doit être un traumatisme d'enfance", + ["It must be the aliens!"] = "Ce doit être les extraterrestres !", + ["It must be the aliens' deed."] = "Ce doit être à cause des extraterrestres", + ["It must be the cyborgs again!"] = "Ce doit encore etre les cyborgs !", + ["I told you, I just found them."] = "Je te l'ai dit, je les ai juste trouvés", ["It's a good thing SUDDEN DEATH is 99 turns away..."] = "c'est une bonne chose que la MORT SUBITE soit dans 99 tours", + ["It's always up to women to clear up the mess men created!"] = "C'est toujours aux femmes de s'occuper du bazar que les hommes ont créés !", + ["It's a shame, I forgot how to do that!"] = "C'est une honte, j'ai oublié comment faire !", + ["It's impossible to communicate with the spirits without a shaman."] = "C'est impossible de communiquer avec les esprits sans un shaman.", + ["It's over..."] = "C'est terminé...", + ["It's time you learned that your actions have consequences!"] = "Il est toi pour toi d'apprendre que tes actions ont des conséquences !", + ["It's worth more than wood!"] = "C'est pire que le bois !", + ["It wants our brains!"] = "Ca veut nos cerveaux", + ["It was not a dream, unwise one!"] = "Ce n'était pas un rêve, imprudent !", + ["I've seen this before. They just appear out of thin air."] = "J'ai déjà vu ça. Ils apparaissent dans les airs", + ["I want to play a game..."] = "", + ["I want to play a game..."] = "Je veux faire un jeu...", + ["I want to see how it handles this!"] = "", + ["I want to see how it handles this!"] = "Je veux voir comment ils vont faire avec ça !", + ["I wish to help you, "] = "Je souhaite t'aider,", + ["I wonder where Dense Cloud is..."] = "Je me demande où est Dense Cloud... ", + ["I wonder where Dense Cloud is..."] = "Je me demande où est Dense Cloud...", + ["I wonder why I'm so angry all the time..."] = "Je me demande pourquoi je suis toujours tellement en colère", + ["I won't let you kill her!"] = "Je ne te laisserai pas la tuer !", + ["Jack"] = "", + ["Jack"] = "", + ["Jack"] = "", + ["Jeremiah"] = "", + ["John"] = "John", + ["Judas"] = "Judas", ["Jumping is disabled"] = "Le saut est désactivé", + ["Just kidding, none of you have died!"] = "Je rigole, aucun d'entre vous n'est mort !", + ["Just on a walk."] = "Je faisais juste une promenade", + ["Just wait till I get my hands on that trauma! ARGH!"] = "Attends un peu que je mette la main sur ce traumatisme ! ARGH !", -- ["Kamikaze Expert!"] = "", -- ["Keep it up!"] = "", +-- ["Kerguelen"] = "", -- Continental_supplies ["Killing spree!"] = "Massacre", + ["KILL IT!"] = "Tue le", + ["KILL IT!"] = "TUE LE !", ["KILLS"] = "Meurtres", + ["Kill the aliens!"] = "", + ["Kill the cannibal!"] = "Tue le cannibale !", + ["Kill the cannibal!"] = "Tue le cannibale", + ["Kill the traitor...or spare his life!|Kill him or press [Precise]!"] = "Tue le traître... ou épargnes sa vie ! |Tue le ou appuies sur [Precise] !", ["Last Target!"] = "Dernière cible !", + ["Leader"] = "", + ["Leaderbot"] = "", + ["Leaderbot"] = "", + ["Leaks A Lot"] = "", + ["Leaks A Lot"] = "", + ["Leaks A Lot"] = "", + ["Leaks A Lot"] = "", + ["Leaks A Lot"] = "", + ["Leaks A Lot"] = "", + ["Leaks A Lot"] = "", + ["Leaks A Lot"] = "", + ["Leaks A Lot"] = "", + ["Leaks A Lot"] = "", + ["Leaks A Lot, depressed for killing his loved one, failed to save the village..."] = "", + ["Leaks A Lot, depressed for killing his loved one, failed to save the village..."] = "", + ["Leaks A Lot, depressed for killing his loved one, failed to save the village..."] = "Leaks A Lot, déprimé d'avoir tué l'élue de son coeur, échoua à sauver le village...", + ["Leaks A Lot gave his life for his tribe! He should have survived!"] = "Leaks A Lot à donné sa vie pour sa tribus ! Il aurait du survivre !", + ["Leaks A Lot"] = "Leaks A Lot", + ["Leaks A Lot must survive!"] = "Leaks A Lot doit survivre !", + ["Led Heart"] = "", + ["Lee"] = "", + ["Lee"] = "", + ["Lee"] = "", -- ["[Left Shift]"] = "",-- touche majuscule gauche +-- ["Let a Continent provide your weapons!"] = "", -- Continental_supplies + ["Let me test your skills a little, will you?"] = "", + ["Let me test your skills a little, will you?"] = "Laisse moi te tester un peu, veux tu ?", + ["Let's go home!"] = "", + ["Let's go home!"] = "", + ["Let's go home!"] = "Rentrons à la maison !", + ["Let's head back to the village!"] = "Retournons au village !", + ["Let's see what your comrade does now!"] = "", + ["Let's see what your comrade does now!"] = "Voyons ce que fait ton camarade maintenant !", + ["Let's show those cannibals what we're made of!"] = "", + ["Let's show those cannibals what we're made of!"] = "Montrons à ces cannibales de quel bois on se chauffe !", + ["Let them have a taste of my fury!"] = "Ils vont gouter de ma fureur !", + ["Let us help, too!"] = "Allons aider nous aussi !", + ["Light Cannfantry"] = "", ["Listen up, maggot!!"] = "Écoutez, asticots", + ["Little did they know that this hunt will mark them forever..."] = "Savait-il que cette chasse allait les marquer à jamais...", -- ["Lively Lifeguard"] = "", +-- ["Lonely Cries: [Rise the water if no hog is in the circle and deal 1 damage to all hogs]"] = "", -- Continental_supplies + ["Look, I had no choice!"] = "ecoute, je n'avais pas le choix !", + ["Look out! There's more of them!"] = "Ils sont plus nombreux !", + ["Look out! We're surrounded by cannibals!"] = "Regarde ! nous sommes entourés par les cannibales !", + ["Looks like the whole world is falling apart!"] = "On dirait que le monde entier tombe en morceaux !", + ["Luckily, I've managed to snatch some of them."] = "Heureusement, j'ai réussi à en avoir quelques unes", +-- ["LUDICROUS KILL"] = "", -- Mutant + ["May the spirits aid you in all your quests!"] = "Puisse les esprits t'aider dans tes quêtes !", +-- ["Medicine: [Fire some exploding medicine that will heal all hogs effected by the explosion]"] = "", -- Continental_supplies +-- ["MEGA KILL"] = "", -- Mutant + ["Meiwes"] = "", + ["Mindy"] = "", -- ["Mine Deployer"] = "", ["Mine Eater!"] = "Mangeur de Mines", -- ["|- 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 ["MISSION SUCCESS"] = "SUCCES DE LA MISSION", - ["MISSION SUCCESSFUL"] = "Mission réussie", -- User_Mission_-_Diver, User_Mission_-_Spooky_Tree, User_Mission_-_Teamwork +-- ["Molotov"] = "", -- Continental_supplies +-- ["MONSTER KILL"] = "", -- Mutant + ["More Natives"] = "More Natives", ["Movement: [Up], [Down], [Left], [Right]"] = "Mouvement: [haut], [bas], [gauche], [droite]", -- ["Multi-shot!"] = "", + ["Muriel"] = "", + ["Muriel"] = "", + ["Muriel"] = "", + ["Muriel"] = "", + ["Muscle Dissolver"] = "Muscle Dissolver", +-- ["-------"] = "", -- Mutant +-- ["Nade Boy"] = "", -- Basic_Training_-_Grenade + ["Name"] = "", ["Nameless Heroes"] = "Heros sans noms", + ["Nancy Screw"] = "", + ["Nancy Screw"] = "", +-- ["Napalm rocket: [Fire a bomb with napalm!]"] = "", -- Continental_supplies + ["Natives"] = "", + ["Natives"] = "", + ["Natives"] = "", + ["Natives"] = "", + ["Natives"] = "", + ["Natives"] = "", + ["Natives"] = "", + ["Natives"] = "", + ["Natives"] = "", + ["Natives"] = "", + ["Natives"] = "", + ["Natives"] = "", + ["Natives"] = "", + ["Natives"] = "", + ["Natives"] = "", + ["Natives"] = "", + ["Natives"] = "", + ["Natives"] = "", + ["Natives"] = "", + ["Natives"] = "", + ["Natives"] = "", + ["Natives"] = "", + ["Natives"] = "", + ["Natives"] = "", + ["Natives"] = "", + ["Natives"] = "", + ["Natives"] = "", + ["Natives"] = "", + ["Natives"] = "Natives", + ["Natives"] = "Natives", ["New Barrels Per Turn"] = "Nouveaux barrils par tour", -- ["NEW CLAN RECORD: "] = "", ["NEW fastest lap: "] = "Nouveau meilleur temps", ["New Mines Per Turn"] = "Nouvelles mines par tour", ["NEW RACE RECORD: "] = "NOUVEAU RECORD DE COURSE", ["Newton's Hammock"] = "Le hammac de Newton", + ["Nicely done, meatbags!"] = "Bien joués, sac à viande !", + ["Nice work!"] = "", + ["Nice work, "] = "Beau boulot", + ["Nice work!"] = "Beau travail !", + ["Nilarian"] = "", + ["No, I came back to help you out..."] = "Non je suis revenu pour t'aider...", + ["No...I wonder where they disappeared?!"] = "Non...Je me demande où ils ont disparu ?!", + ["NomNom"] = "", + ["Nom-Nom"] = "Nom-Nom", + ["Nope. It was one fast mole, that's for sure."] = "Non. C'était une taupe rapide, ça c'est certain.", + ["No! Please, help me!"] = "Non ! S'il te plaît, aide moi !", +-- ["NORMAL"] = "", -- Continental_supplies +-- ["North America"] = "", -- Continental_supplies +-- ["Not all hogs are born equal."] = "", -- Highlander ["NOT ENOUGH WAYPOINTS"] = "Pas assez de points de passage", + ["Not now, Fiery Water!"] = "Pas maintenant, Fiery Water !", ["Not So Friendly Match"] = "Match pas si amical", -- Basketball, Knockball + ["Not you again! My head still hurts from last time!"] = "Pas encore vous ! Ma tête me fait encore mal de la dernière fois !", + ["No, we made sure of that!"] = "Non, nous nous en sommes assurés", +-- ["Now find the next target! |Tip: Normally you lose health by falling down, so be careful!"] = "", -- Basic_Training_-_Rope + ["No! What have I done?! What have YOU done?!"] = "Non ! Qu'ai je fait ? Qu'as TU fais ?!", + ["No. Where did he come from?"] = "Non. D'où est-il venu ?", + ["Now how do I get on the other side?!"] = "Maintenant comme je me rends de l'autre coté ?", + ["No. You and the rest of the tribe are safer there!"] = "Non, Toi et le reste de la tribue etes plus en sécurité ici ! ", + ["Obliterate them!|Hint: You might want to take cover..."] = "", + ["Obstacle course"] = "Course d'obstacle", + ["Of course I have to save her. What did I expect?!"] = "Bien sur je dois la sauver. Qu'est ce que j'imaginais ?", + ["OH, COME ON!"] = "", + ["OH, COME ON!"] = "OH, ALLEZ !", + ["Oh, my!"] = "Oh mon dieu !", + ["Oh, my! This is even more entertaining than I've expected!"] = "Oh mon dieu ! c'est meme plus amusant que ce que je pensais !", ["Oh no! Just try again!"] = "Eh non ! Essayez encore ! ", -- User_Mission_-_Diver, User_Mission_-_Spooky_Tree, User_Mission_-_Teamwork +-- ["Oh no, not "] = "", -- A_Classic_Fairytale:backstab, A_Classic_Fairytale:united ["Oh no! Time's up! Just try again."] = "Eh non ! Temps écoulé ! Essayez encore ! ", --Bazooka, Shotgun, SniperRifle +-- ["Oh no! You failed! Just try again."] = "", -- Basic_Training_-_Cluster_Bomb + ["Oh, silly me! I forgot that I'm the shaman."] = "", + ["Oh, silly me! I forgot that I'm the shaman."] = "Oh suis je bête ! j'ai oublié que j'étais le shaman.", + ["Olive"] = "", + ["Omnivore"] = "Omnivore", + ["Once upon a time, on an island with great natural resources, lived two tribes in heated conflict..."] = "Il était une fois, sur une île possédant de grandes ressources naturelles, vivait deux tribus en violent conflit...", +-- ["ONE HOG PER TEAM! KILLING EXCESS HEDGES"] = "", -- Mutant + ["One tribe was peaceful, spending their time hunting and training, enjoying the small pleasures of life..."] = "L'une des deux tribus était pacifique, passant son temps à chasser et à s'entraîner, appréciants les petits plaisirs de la vie", + ["Oops...I dropped them."] = "oups ... Je les ai laissées tomber.", + ["Open that crate and we will continue!"] = "Ouvre cette caisse et nous pourrons continuer", -- ["Operation Diver"] = "", ["Opposing Team: "] = "Équipe opposée", + ["Orlando Boom!"] = "", +-- ["Ouch!"] = "", -- User_Mission_-_Rope_Knock_Challenge + ["Our tribe, our beautiful island!"] = "Notre tibue, notre belle ile !", +-- ["Parachute"] = "", -- Continental_supplies ["Pathetic Hog #%d"] = "Hérisson pathétique #%d", -- ["Pathetic Resistance"] = "", -- User_Mission_-_Bamboo_Thicket, User_Mission_-_Newton_and_the_Hammock + ["Perfect! Now try to get the next crate without hurting yourself!"] = "Parfait, maintenant essaye d'avoir la prochaine caisse sans te blesser !", ["Per-Hog Ammo"] = "Munitions par hérissons", +-- ["- Per team weapons|- 9 weaponschemes|- Unique new weapons| |Select continent first round with the Weapon Menu or by ([switch/tab]=Increase,[presice/left shift]=Decrease)"] = "", -- + ["Pfew! That was close!"] = "Ouf! C'est pas passé loin !", + ["Pfew! That was close!"] = "Ouf ! C'étais pas loin !", +-- ["Piñata bullet: [Contains some sweet candy!]"] = "", -- Continental_supplies +-- ["Pings left:"] = "", -- Space_Invasion ["Place more waypoints using [ENTER]"] = "Place plus de points de passage avec [enter]", ["Place more waypoints using the 'Air Attack' weapon."] = "Place plus de points de passage avec l'arme : attaque aérienne.", +-- ["Planes Used:"] = "", -- User_Mission_-_RCPlane_Challenge +-- ["Planes Used"] = "", -- User_Mission_-_RCPlane_Challenge + ["Play with me!"] = "Joue avec moi !", +-- ["Please place the way-point further from the waterline."] = "", -- Racer +-- ["Please place the way-point in the open, within the map boundaries."] = "", -- Racer +-- ["Please, stop releasing your \"smoke signals\"!"] = "", -- A_Classic_Fairytale:shadow +-- ["Point Blank Combo!"] = "", -- Space_Invasion ["points"] = "points", -- Control, CTF_Blizzard, Basic_Training_-_Bazooka, Basic_Training_-_Shotgun, Basic_Training_-_Sniper_Rifle ["Poison"] = "Poison", + ["Portal hint: one goes to the destination, and one is the entrance.|"] = "portails astuce : l'un est la destination, l'autre est l'entrée ", +-- ["Portal mission"] = "", -- portal -- ["Power Remaining"] = "", ["Prepare yourself"] = "prépare toi", +-- ["Press [Enter] to accept this configuration."] = "", -- WxW + ["Press [Left] or [Right] to move around, [Enter] to jump"] = "Appuyez [Gauche] ou [Droite] pour vous déplacer, [Entrée] pour sauter", ["Press [Precise] to skip intro"] = "appuie sur [precise] pour passer l'intro", +-- ["Private Novak"] = "", -- Basic_Training_-_Cluster_Bomb + ["Protect yourselves!|Grenade hint: set the timer with [1-5], aim with [Up]/[Down] and hold [Space] to set power"] = "Protèges toi ! |Astuce Grenade : Règle le compte à rebour avec [1-5], vises avec [haut]/[bas] et maintient [Espace] pour la puissance", -- ["Race complexity limit reached."] = "", -- ["RACER"] = "", + ["Rachel"] = "", + ["Rachel"] = "", + ["Rachel"] = "", +-- ["Radar Ping"] = "", -- Space_Invasion + ["Raging Buffalo"] = "", + ["Raging Buffalo"] = "", + ["Raging Buffalo"] = "", + ["Raging Buffalo"] = "", + ["Raging Buffalo"] = "", + ["Raging Buffalo"] = "", + ["Raging Buffalo"] = "", + ["Raging Buffalo"] = "Raging Buffalo", + ["Ramon"] = "", + ["Ramon"] = "", + ["Ramon"] = "", + ["Ramon"] = "Ramon", + ["Ramon"] = "Ramon", +-- ["RC PLANE TRAINING"] = "", -- User_Mission_-_RCPlane_Challenge + ["Really?! You thought you could harm me with your little toys?"] = "Vraiment ? tu pensais pouvoir me blesser avec tes petits jouets ?", + ["Regurgitator"] = "", + ["Reinforcements"] = "", + ["Reinforcements"] = "", +-- ["Remember: The rope only bend around objects, |if it doesn't hit anything it's always stright!"] = "", -- Basic_Training_-_Rope + ["Remember this, pathetic animal: when the day comes, you will regret your blind loyalty!"] = "Souviens toi, animal pathétique : quand le jour viendra, tu regrettera ton aveugle loyauté !", [" - 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", + ["Return to Leaks A Lot! If you get stuck, press [Precise] to try again!"] = "", + ["Return to Leaks A Lot! If you get stuck, press [Precise] to try again!"] = "Retourne vers Leaks A Lot ! Si tu es bloqué, appuie sur [Precise] pour réessayer !", + ["Righteous Beard"] = "", + ["Righteous Beard"] = "", + ["Righteous Beard"] = "", + ["Righteous Beard"] = "", + ["Righteous Beard"] = "", + ["Righteous Beard"] = "", + ["Righteous Beard"] = "", + ["Righteous Beard"] = "", + ["Righteous Beard"] = "Righteous Beard", +-- ["ROPE-KNOCKING"] = "", -- User_Mission_-_Rope_Knock_Challenge +-- ["Rope Training"] = "", -- Basic_Training_-_Rope + ["Rot Molester"] = "Rot Molester", -- ["Round Limit:"] = "", -- ["Round Limit"] = "", -- ["Rounds Complete: "] = "", -- ["Rounds Complete"] = "", ["RULES OF THE GAME [Press ESC to view]"] = "RÈGLES DU JEU | [Appuyez Échap pour voir]", + ["Rusty Joe"] = "", -- ["s|"] = "", +-- ["Sabotage: [Sabotage all hogs in the circle and deal ~10 dmg]"] = "", -- Continental_supplies + ["Salivaslurper"] = "", + ["Salvation"] = "Le salut", + ["Salvation was one step closer now..."] = "Le salut était tout proche...", -- ["Save as many hapless hogs as possible!"] = "", + ["Save Fell From Heaven!"] = "", + ["Save Fell From Heaven!"] = "Sauve Fell From Heaven ! ", + ["Save Leaks A Lot!|Hint: The Switch utility might be of help to you."] = "Sauve Leaks A Lot ! |L'outil changer de hérisson pourrait aider", + ["Save the princess! All your hogs must survive!|Hint: Kill the cyborgs first! Use the ammo very carefully!|Hint: You might want to spare a girder for cover!"] = "Sauve la princesse, tous vos hérissons doivent survivre ! |tue les cyborgs en premier ! utilise les munitions très prudemment ! |Tu voudras peut etre garder une poutre pour te couvrir !", + ["Save the princess by collecting the crate in under 12 turns!"] = "Sauve la princesse en collectant la caisse en moins de 3 tours !", + ["Scalp Muncher"] = "", -- ["SCORE"] = "", +-- ["Score"] = "", -- Mutant +-- ["Scream from a Walrus: [Deal 20 damage + 10% of your hogs health to all hogs around you and get half back]"] = "", -- Continental_supplies -- ["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 +-- ["Seduction"] = "", -- Continental_supplies +-- ["Seems like every time you take a \"walk\", the enemy find us!"] = "", -- A_Classic_Fairytale:backstab + ["See that crate farther on the right?"] = "Tu vois cette caisse plus loin sur la droite ? ", ["See ya!"] = "Bye bye", + ["Segmentation Paul"] = "", +-- ["Select continent!"] = "", -- Continental_supplies + ["Select difficulty: [Left] - easier or [Right] - harder"] = "Choisis la difficulté : [Gauche] : plus facile, ou [Droite] : plus dur", -- ["selected!"] = "", -- ["s"] = "", -- GaudyRacer, Space_Invasion + ["... share your beauty with the world every morning, my princess!"] = "...partager ta beauté avec le monde chaque matin, ma princesse !", + ["She's behind that tall thingy."] = "Elle est derrière ce grand truc.", ["Shield boosted! +30 power"] = "Bouclier boosté! +30", ["Shield Depleted"] = "Bouclier épuisé", ["Shield is fully recharged!"] = "bouclier chargé à fond!", @@ -162,949 +848,401 @@ ["Shield OFF:"] = "bouclier OFF", ["Shield ON:"] = "Bouclier ON", -- ["Shield Seeker!"] = "", +-- ["Shotgun"] = "", -- Continental_supplies ["Shotgun Team"] = "Équipe de choc", ["Shotgun Training"] = "Entrainement au fusil", ["shots remaining."] = "tirs restants", -- ["Silly"] = "", -- ["Sinky"] = "", + ["Sirius Lee"] = "", ["%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"] = "Snipers", --- ["Sponge"] = "éponde",--?? - ["Spooky Tree"] = "Arbre fantomatique", --- ["STATUS UPDATE"] = "", -- GaudyRacer, Space_Invasion --- ["Switched to "] = "", - ["Team %d: "] = "Équipe %d : ", --- ["Team Scores"] = "", -- Control, Space_Invasion --- ["That Sinking Feeling"] = "", - ["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", - ["The Nameless One"] = "Le sans nom", --- ["THE SPECIALISTS"] = "", - ["This one's tricky."] = "celui ci n'est pas facile", - ["This rain is really something..."] = "Cette pluie est vraiment quelquechose", - ["TIME: "] = "TEMPS : ", --- ["Timed Kamikaze!"] = "", --- ["Time Extended!"] = "", --- ["Time Extension"] = "", --- ["Toggle Shield"] = "", - ["Toxic Team"] = "Équipe toxique", -- User_Mission_-_Diver, User_Mission_-_Spooky_Tree, User_Mission_-_Teamwork - ["TRACK COMPLETED"] = "COURSE COMPLETEE", - ["TRACK FAILED!"] = "COURSE RATEE", --- ["TrophyRace"] = "", --- ["T_T"] = "", --- ["Tumbling Time Extended!"] = "", --- ["Turn Time"] = "", --- ["Unit"] = "", - ["Unit 3378"] = "Unité 3378", --- ["Unit 835"] = "", - ["Unlimited Attacks"] = "Attaques illimitées", --- ["Unstoppable!"] = "", --- ["User Challenge"] = "", - ["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 - ["Waypoint placed."] = "Point de passage placé.", - ["Way-Points Remaining"] = "Points de passage restants", - ["Weapons Reset"] = "Armes réinitialisées", --- ["Well done."] = "", --- ["Will this ever end?"] = "", - ["WINNING TIME: "] = "Temps gagnant : ", --- ["You'd almost swear the water was rising!"] = "", - ["You have SCORED!!"] = "Vous avez marqué !", --- ["You saved"] = "", - ["You've failed. Try again."] = "Vous avez échoué. Essayez encore.", - ["You've reached the goal!| |Time: "] = "Vous avez atteins le but !| |Temps : ", --- ["'Zooka Team"] = "", - - - - - --CAMPAIGN MISSIONS TRANSLATION FRENCH-- - - -- a classic fairytale: first blood - - - ["First Blood"] = "Premier sang", - ["First Steps"] = "Premiers pas", - ["Press [Left] or [Right] to move around, [Enter] to jump"] = "Appuyez [Gauche] ou [Droite] pour vous déplacer, [Entrée] pour sauter", - ["A leap in a leap"] = "Un bond dans un bond", - ["Go on top of the flower"] = "Atteins le dessus de la fleur", - ["Hightime"] = "Meilleur temps", - ["Collect the crate on the right.|Hint: Select the rope, [Up] or [Down] to aim, [Space] to fire, directional keys to move.|Ropes can be fired again in the air!"] = "collecte les caisses à droite. |astuce : selectionne la corde ninja, [haut] ou [bas] pour viser, flèches directionnelles pour bouger. |La corde peut etre re-lancée en plein vol !", - ["Omnivore"] = "Omnivore", - ["Get on the head of the mole"] = "Va sur la tête de la taupe", - ["The Leap of Faith"] = "Le saut de la foi", - ["Use the parachute ([Space] while in air) to get the next crate"] = "utilisez le parachute ([Espace] en vol) pour atteindre la prochaine caisse ", - ["The Rising"] = "L'ascension", - ["Do the deed"] = "Accomplir l'acte", - ["The Slaughter"] = "Le massacre", - ["Destroy the targets!|Hint: Select the Shoryuken and hit [Space]|P.S. You can use it mid-air."] = "Détruis les cibles ! |Astuce : selectionne le Shoryuken et appuyez sur [Espace] |P.S. vous pouvez l'utilisez en plein vol", - ["The Crate Frenzy"] = "Frenesie de caisses", - ["Collect the crates within the time limit!|If you fail, you'll have to try again."] = "collectes les caisses dans le temps imparti ! |si tu rates, tu devras réessayer.", - ["The Ultimate Weapon"] = "L'arme ultime", - ["Destroy the targets!|Hint: [Up], [Down] to aim, [Space] to shoot"] = "Détruis les cibles ! |Astuce : [haut], [bas] pour viser, [Espace] pour tirer", - ["The First Blood"] = "Le premier sang", - ["Kill the cannibal!"] = "Tue le cannibale", - ["KILL IT!"] = "Tue le", - ["Watch your steps, young one!"] = "Regarde ou tu marches l'apprenti !", - ["Why do men keep hurting me?"] = "Pourquoi les hommes continuent de me blesser ?", - ["Violence is not the answer to your problems!"] = "La violence n'est pas la réponse à tes problèmes !", - ["Once upon a time, on an island with great natural resources, lived two tribes in heated conflict..."] = "Il était une fois, sur une île possédant de grandes ressources naturelles, vivait deux tribus en violent conflit...", - ["One tribe was peaceful, spending their time hunting and training, enjoying the small pleasures of life..."] = "L'une des deux tribus était pacifique, passant son temps à chasser et à s'entraîner, appréciants les petits plaisirs de la vie", - ["The other one were all cannibals, spending their time eating the organs of fellow hedgehogs..."] = "L'autre était une tribus de cannibales, ils passaient leur temps à manger les organes d'autres hérissons...", - ["And so it began..."] = "Et c'est ainsi que ça a commencé...", - ["What are you doing at a distance so great, young one?"] = "Qu'est ce que tu fais si loin, l'apprenti ? ", - ["Come closer, so that your training may continue!"] = "Rapproche toi, ainsi ton entraînement pourra continuer !", - ["This is it! It's time to make Fell From Heaven fall for me..."] = "Ca y est ! il est temps d'impressionner Fell From Heaven ", - ["I can see you have been training diligently."] = "Je vois que tu t'es entraîné assiduement.", - ["The wind whispers that you are ready to become familiar with tools, now..."] = "Le vent me murmure que tu es maintenant prêt à te familiariser avec les outils ...", - ["Open that crate and we will continue!"] = "Ouvre cette caisse et nous pourrons continuer", - ["He moves like an eagle in the sky."] = "Il se déplace comme un aigle dans le ciel", - ["See that crate farther on the right?"] = "Tu vois cette caisse plus loin sur la droite ? ", - ["Swing, Leaks A Lot, on the wings of the wind!"] = "Balances toi Leaks a Lot, sur les ailes du vent", - ["His arms are so strong!"] = "Ces bras sont si forts !", - ["Use the rope to get on the head of the mole, young one!"] = "Utilise la corde pour atteindre la tête de la taupe, l'apprenti !", - ["Worry not, for it is a peaceful animal! There is no reason to be afraid..."] = "Pas d'inquiétude, c'est un animal pacifique ! il n'y a pas de raison d'avoir peur...", - ["We all know what happens when you get frightened..."] = "Nous savons tous ce qui arrive quand tu es effrayé", - ["So humiliating..."] = "Si humiliant...", - ["Perfect! Now try to get the next crate without hurting yourself!"] = "Parfait, maintenant essaye d'avoir la prochaine caisse sans te blesser !", - ["The giant umbrella from the last crate should help break the fall."] = "La toile géante de la dernière caisse devrait aider à arrêter la chute.", - ["He's so brave..."] = "Il est si courageux", - ["I see you have already taken the leap of faith."] = "Je vois que tu as déjà fait le saut de la foi.", - ["Get that crate!"] = "Prends cette caisse", - ["Impressive...you are still dry as the corpse of a hawk after a week in the desert..."] = "Impressionnant...tu es aussi sec que le cadavre d'un faucon après une semaine dans le désert...", - ["You probably know what to do next..."] = "Tu sais probablement ce que tu dois faire ensuite....", - ["It is time to practice your fighting skills."] = "Il est temps d'entraîner tes compétences de combat", - ["Imagine those targets are the wolves that killed your parents! Take your anger out on them!"] = "imagines que ces cibles sont les loups qui ont tués tes parents ! Défoule ta colère sur eux !", - ["I hope you are prepared for a small challenge, young one."] = "J'espere que tu es préparé pour un petit défi, l'apprenti", - ["Your movement skills will be evaluated now."] = "Tes compétences de mouvement vont maintenant être évaluées .", - ["Collect all the crates, but remember, our time in this life is limited!"] = "Collectes toutes les caisses mais souviens toi, notre temps dans cette vie est limité !", - ["How difficult would you like it to be?"] = "A quel point veut tu que ce soit difficile ?", - ["Hmmm...perhaps a little more time will help."] = "humm...Peut être qu'un peu plus de temps aiderait", - ["The spirits of the ancerstors are surely pleased, Leaks A Lot."] = "Les esprits des ancêtres sont sûrement ravis, Leaks A Lot.", - ["You have proven yourself worthy to see our most ancient secret!"] = "Tu as prouvé que tu étais digne de voir notre plus ancien secret !", - ["The weapon in that last crate was bestowed upon us by the ancients!"] = "L'arme dans cette dernière caisse nous a été conféré par les ancients", - ["Use it with precaution!"] = "Utilise la avec prudence", - ["The Ultimate Weapon"] = "L'arme ultime", - ["Destroy the targets!|Hint: [Up], [Down] to aim, [Space] to shoot"] = "Détruis les cibles ! |Astuce : [haut], [bas] pour viser, [Espace] pour tirer", - ["What do my faulty eyes observe? A spy!"] = "Que voient mes vieux yeux ? Un espion !", - ["Destroy him, Leaks A Lot! He is responsible for the deaths of many of us!"] = "Détruis le, Leaks A Lot ! Il est responsable de la mort de beaucoup d'entre nous !", - ["Oh, my!"] = "Oh mon dieu !", - ["First Blood"] = "Premier sang", - ["The First Blood"] = "Le premier sang", - ["Kill the cannibal!"] = "Tue le cannibale !", - ["I see you would like his punishment to be more...personal..."] = "Je vois que tu voudrais que son châtiment soit plus...personnel...", - ["I'm certain that this is a misunderstanding, fellow hedgehogs!"] = "Ce doit être une erreur, mes chers hérissons", - ["If only I were given a chance to explain my being here..."] = "Si seulement vous me laissiez une chance d'expliquer ce que je fais ici...", - ["Do not let his words fool you, young one! He will stab you in the back as soon as you turn away!"] = "Ne laisse pas ses mots de distraire l'apprenti ! Il te poignardera dès que tu auras le dos tourné !", - ["Here...pick your weapon!"] = "ici...choisis ton arme !", - ["KILL IT!"] = "TUE LE !", - ["Yes, yeees! You are now ready to enter the real world!"] = "Oui, Ouiii ! Maintenant tu es prêt à entrer dans le monde réel !", - ["What?! A cannibal? Here? There is no time to waste! Come, you are prepared."] = "Quoi ?! Un cannibale ? Ici ? Il n'y a pas de temps à perdre ! Viens, tu es préparé.", - ["The wasted youth"] = "Une jeunesse ruinée", - ["Leaks A Lot gave his life for his tribe! He should have survived!"] = "Leaks A Lot à donné sa vie pour sa tribus ! Il aurait du survivre !", - ["After Leaks A Lot betrayed his tribe, he joined the cannibals..."] = "Après que Leaks A Lot ait trahit sa tribus, il rejoignit les cannibales... ", - ["Step By Step"] = "Pas à Pas", - ["Hint: Double Jump - Press [Backspace] twice"] = "Astuce : Double saut : appuyez deux fois sur [retour arrière]", - ["As the challenge was completed, Leaks A Lot set foot on the ground..."] = "Le défi accompli, Leaks A Lot posa les pieds sur le sol...", - ["And so happenned that Leaks A Lot failed to complete the challenge! He landed, pressured by shame..."] = "Et Leaks A Lot échoua à relever le défi ! Il atteri, honteux....", - ["The Bull's Eye"] = "Dans le mille", - ["[Up], [Down] to aim, [Space] to shoot!"] = "[haut], [bas] pour viser, [espace] pour tirer !", - ["The Torment"] = "Le supplice", - ["Select difficulty: [Left] - easier or [Right] - harder"] = "Choisis la difficulté : [Gauche] : plus facile, ou [Droite] : plus dur", - ["Natives"] = "", - ["Leaks A Lot"] = "", - ["Righteous Beard"] = "", - ["Fell From Heaven"] = "", - ["Cannibals"] = "Cannibales", - ["Brainiac"] = "", - ["A Classic Fairytale"] = "Un conte de fée classique", - ["First Blood"] = "Premier sang", - ["Finish your training|Hint: Animations can be skipped with the [Precise] key."] = "Finis ton entraînement ! |Astuce : Les animations peuvent être passées en appuyant sur la touche [Precise]", - --- a classic fairytale: the shadow falls - ["Brainiac"] = "Brainic", - ["Corpsemonger"] = "Corpsemonger", - ["Femur Lover"] = "Femur Lover", - ["Glark"] = "Glark", - ["Bonely"] = "Bonely", - ["Rot Molester"] = "Rot Molester", - ["Bloodrocutor"] = "Bloodrocutor", - ["Muscle Dissolver"] = "Muscle Dissolver", - ["Bloodsucker"] = "Bloodsucker", - ["The Shadow Falls"] = "La chute des ombres", - ["The Showdown"] = "La confrontation", - ["Save Leaks A Lot!|Hint: The Switch utility might be of help to you."] = "Sauve Leaks A Lot ! |L'outil changer de hérisson pourrait aider", - ["The Shadow Falls"] = "", - ["Play with me!"] = "Joue avec moi !", - ["Defend yourself!|Hint: You can get tips on using weapons by moving your mouse over them in the weapon selection menu"] = "Défends toi ! |Conseil : Tu peux obtenir des astuces sur l'utilisation des armes en placant ta souris dessus dans le menu de séléction des armes", - ["The Shadow Falls"] = "", - ["Why do you not like me?"] = "Pourquoi ne m'aimes tu pas ?", - ["Obliterate them!|Hint: You might want to take cover..."] = "", - ["The Shadow Falls"] = "", - ["The Dilemma"] = "Le dilemne", - ["Choose your side! If you want to join the strange man, walk up to him.|Otherwise, walk away from him. If you decide to att...nevermind..."] = "Choisis ton côté ! Si tu veux rejoindre l'étranger, marche vers lui. |Dans le cas contraire, éloigne toi de lui. Si tu décide de l'att...non laisse tomber...", - ["The Shadow Falls"] = "", - ["The walk of Fame"] = "La marche d'honneur", - ["Return to Leaks A Lot! If you get stuck, press [Precise] to try again!"] = "Retourne vers Leaks A Lot ! Si tu es bloqué, appuie sur [Precise] pour réessayer !", - ["The Shadow Falls"] = "", - ["The walk of Fame"] = "", - ["Return to Leaks A Lot! If you get stuck, press [Precise] to try again!"] = "", - ["The Shadow Falls"] = "", - ["The Individualist"] = "L'individualiste", - ["Defeat the cannibals!|Grenade hint: set the timer with [1-5], aim with [Up]/[Down] and hold [Space] to set power"] = "Bat les cannibales ! |Astuce Grenade : Règle le compte à rebour avec [1-5], vises avec [haut]/[bas] et maintient [Espace] pour la puissance", - ["Pfew! That was close!"] = "Ouf ! C'étais pas loin !", - ["Where did you get the exploding apples and the magic bow that shoots many arrows?"] = "Ou as tu obtenu les pommes explosives et l'arc magique qui tire tant de flèches ?", - ["Where did you get the exploding apples?"] = "Ou as tu obtenu les pommes explosives ?", - ["Where did you get the magic bow that shoots many arrows?"] = "Ou as tu obtenu l'arc magique qui tire tant de flèches ?", - ["Did you warn the village?"] = "As tu averti le village ?", - ["No, I came back to help you out..."] = "Non je suis revenu pour t'aider...", - ["Uhm...I met one of them and took his weapons."] = "hum... J'ai rencontré l'un d'entre eux et j'ai pris ses armes.", - ["We should head back to the village now."] = "Nous devrions retourner au village maintenant.", - ["After the shock caused by the enemy spy, Leaks A Lot and Dense Cloud went hunting to relax."] = "Après le choc causé par l'espion ennemi, Leaks A Lot et Dense cloud partirent chasser pour se détendre.", - ["Little did they know that this hunt will mark them forever..."] = "Savait-il que cette chasse allait les marquer à jamais...", - ["I have no idea where that mole disappeared...Can you see it?"] = "Je n'ai aucune idée où cette taupe à bien pu aller...Peux tu la voir ?", - ["Nope. It was one fast mole, that's for sure."] = "Non. C'était une taupe rapide, ça c'est certain.", - ["You're terrorizing the forest...We won't catch anything like this!"] = "Tu terrorrises la fôret... Nous n'attraperons rien comme ça !", - ["..."] = "...", - ["I can't believe it worked!"] = "Je ne peux pas croire que ça a marché !", - ["That shaman sure knows what he's doing!"] = "Ce Shaman sait vraiment ce qu'il fait !", - ["Yeah...I think it's a 'he', lol."] = "Ouais... Je crois que c'est un 'homme', lol.", - ["It wants our brains!"] = "Ca veut nos cerveaux", - ["Not you again! My head still hurts from last time!"] = "Pas encore vous ! Ma tête me fait encore mal de la dernière fois !", - ["Did you see him coming?"] = "L'a tu vu venir ?", - ["No. Where did he come from?"] = "Non. D'où est-il venu ?", - ["Are we there yet?"] = "Somme nous toujours là ?", - ["This must be some kind of sorcery!"] = "Ce doit être une sorte de sorcellerie", - ["I thought their shaman died when he tried our medicine!"] = "Je pensais que leur shaman est mort quand il a essayé notre médecine !", - ["I saw it with my own eyes!"] = "Je l'ai vu de mes propres yeux !", - ["Then how do they keep appearing?"] = "Alors, comment continuent-il à apparaître ?", - ["It's impossible to communicate with the spirits without a shaman."] = "C'est impossible de communiquer avec les esprits sans un shaman.", - ["We need to warn the village."] = "Nous devons avertir le village", - ["What a ride!"] = "Quel voyage !", - ["We can't defeat them!"] = "Nous ne pouvons pas les battres !", - ["I'll hold them off while you return to the village!"] = "Je vais les retenir pendant que tu retourne au village", - ["30 minutes later..."] = "30 minutes plus tard...", - ["Greetings, cloudy one!"] = "Salutation, le nuageux !", - ["I have come to make you an offering..."] = "Je suis venu te faire une offre...", - ["You are given the chance to turn your life around..."] = "Tu as une chance de voir ta vie changer de cap", - ["If you agree to provide the information we need, you will be spared!"] = "Si tu es d'accord pour nous donner les informations dont nous avons besoin, tu seras épargné !", - ["Have no illusions, your tribe is dead, indifferent of your choice."] = "N'ai pas d'illusion, ta tribue est morte, quel que soit ton choix", - ["If you decide to help us, though, we will no longer need to find a new governor for the island."] = "Si tu décides de nous aider, et bien, nous n'aurons plus besoin de chercher un nouveau gouverneur pour l'île.", - ["If you know what I mean..."] = "Si tu vois ce que je veux dire...", - ["So? What will it be?"] = "Alors ? Qu'est ce que ce sera ?", - ["Great choice, Steve! Mind if I call you that?"] = "Bon choix, Steve ! Ca t'ennuie si je t'appele comme ça ?", - --["Whatever floats your boat..."] = "Comme tu veux...", - ["Great! You will be contacted soon for assistance."] = "super ! Tu seras bientot contacté pour de l'assistance.", - ["Pfew! That was close!"] = "Ouf! C'est pas passé loin !", - ["Your death will not be in vain, Dense Cloud!"] = "Tu ne seras pas mort en vain, Dense Cloud !", - ["You will be avenged!"] = "Tu seras vengé !", - ["I see..."] = "Je vois...", - ["Remember this, pathetic animal: when the day comes, you will regret your blind loyalty!"] = "Souviens toi, animal pathétique : quand le jour viendra, tu regrettera ton aveugle loyauté !", - ["You just committed suicide..."] = "Tu viens de signer ton arrêt de mort...", - ["If you say so..."] = "Si tu le dis...", - ["Dude, we really need a new shaman..."] = "mec, on a vraiment besoin d'un nouveau Shaman...", - ["It's over..."] = "C'est terminé...", - ["Let's head back to the village!"] = "Retournons au village !", - ["Really?! You thought you could harm me with your little toys?"] = "Vraiment ? tu pensais pouvoir me blesser avec tes petits jouets ?", - ["You're pathetic! You are not worthy of my attention..."] = "Tu es pathétique ! Tu n'es pas digne de mon attention... ", - ["Actually, you aren't worthy of life! Take this..."] = "En fait, tu n'es pas digne de vivre ! Prends ça....", - ["Incredible..."] = "Incroyable", - ["I wonder where Dense Cloud is..."] = "Je me demande où est Dense Cloud...", - ["I can't wait any more, I have to save myself!"] = "Je ne peux plus attendre, je dois me sauver !", - ["Where are all these crates coming from?!"] = "D'où viennent toutes ces caisses ?!", - ["I have to get back to the village!"] = "Je dois retourner au village !", - ["Dense Cloud must have already told them everything..."] = "Dense Cloud doit déjà leur avoir tout raconter...", - ["Natives"] = "", - ["Ramon"] = "Ramon", - ["Leaks A Lot"] = "", - ["Dense Cloud"] = "", - ["Spiky Cheese"] = "Spiky cheese", - ["Weaklings"] = "Weaklings", - ["Brainiac"] = "", - ["Stronglings"] = "Stronglings", - ["011101001"] = "011101001", - ["Y3K1337"] = "Y3K1337", - ["Weaklings"] = "Weaklings", - ["The Shadow Falls"] = "", - ["Under Construction"] = "En construction", - ["To place a girder, select it, use [Left] and [Right] to select angle and length, place with [Left Click]"] = "Pour placer une barre, selectionne la, et utilise [gauche] et [droite] pour choisir l'angle et la taille, ensuite place là avec [Clic gauche]", - ["A little gift from the cyborgs"] = "Un petit cadeau de la part des cyborgs", - ["The Shadow Falls"] = "", - ["The guardian"] = "Le gardien", - ["Protect yourselves!|Grenade hint: set the timer with [1-5], aim with [Up]/[Down] and hold [Space] to set power"] = "Protèges toi ! |Astuce Grenade : Règle le compte à rebour avec [1-5], vises avec [haut]/[bas] et maintient [Espace] pour la puissance", - ["...and so the cyborgs took over the world..."] = "...Et c'est ainsi que les cyborgs prirent le controle du monde...", - ["Natives"] = "", - ["The Shadow Falls"] = "", - ["The First Encounter"] = "La première rencontre", - ["Survive!|Hint: Cinematics can be skipped with the [Precise] key."] = "Survis ! Les cinématique peuvent être passées avec la touche [Precise]. ", - ["Natives"] = "", - ["Natives"] = "", - ["Natives"] = "", - --- a classic fairytale: the journey back - ["John"] = "John", - ["Flesh for Brainz"] = "Flesh for Brainz", - ["Eye Chewer"] = "Eye Chewer", - ["Torn Muscle"] = "Torn Muscle", - ["Nom-Nom"] = "Nom-Nom", - ["Vedgies"] = "Vedgies", - ["Brain Blower"] = "Brain Blower", - ["Gorkij"] = "Gorkij", - ["Natives"] = "", - ["The Journey Back"] = "Le voyage de retour", - ["Collateral Damage"] = "Dommage collatéraux", - ["Save the princess by collecting the crate in under 12 turns!"] = "Sauve la princesse en collectant la caisse en moins de 3 tours !", - ["The Journey Back"] = "", - ["Collateral Damage II"] = "Dommage collatéraux II", - ["Save Fell From Heaven!"] = "Sauve Fell From Heaven ! ", - ["The Journey Back"] = "", - ["Collateral Damage II"] = "", - ["Save Fell From Heaven!"] = "", - ["Get the crate on the other side of the island!|"] = "Prends la caisse de l'autre côté de l'île !", - ["Hint: you might want to stay out of sight and take all the crates...|"] = "Astuce : Vous aimeriez probablement rester hors de vue et prendre toutes les caisses...|", - ["If you get stuck, use your Desert Eagle or restart the mission!|"] = "Si vous êtes coincés, utiliser le Desert Eable, ou recommencez la missions", - ["Leaks A Lot must survive!"] = "Leaks A Lot doit survivre !", - ["Your hogs must survive!"] = "Vos hérissons doivent survivre !", - ["The Journey Back"] = "", - ["Adventurous"] = "Aventureux", - ["The Journey Back"] = "", - ["The Savior"] = "Le sauveur", - ["Get Dense Cloud out of the pit!"] = "Sortez Dense Cloud de la fosse", - ["The Journey Back"] = "", - ["They never learn"] = "Ils n'apprennent jamais", - ["Free Dense Cloud and continue the mission!"] = "Libérez Dense Cloud et continuez la mission !", - ["I just wonder where Ramon and Spiky disappeared..."] = "Je me demande seulement où Ramon et Spiky ont disparu", - ["I wonder where Dense Cloud is..."] = "Je me demande où est Dense Cloud... ", - ["He must be in the village already."] = "Il doit déjà être au village", - ["I'd better get going myself."] = "Je ferai mieux de rentrer.", - ["Welcome, Leaks A Lot!"] = "Bienvenue, Leaks A Lot !", - ["I want to play a game..."] = "Je veux faire un jeu...", - ["Help me, please!!!"] = "Aide moi, s'il te plait !!!", - ["However, if you fail to do so, she dies a most violent death! Muahahaha!"] = "Cependant, si tu échoues, elle aura une mort encore plus violente ! Muahahaha!", - ["Good luck...or else!"] = "Bonne chance.... ou pas !", - ["Hey! This is cheating!"] = "Hé ! C'est de la triche !", - ["I need to get to the other side of this island, fast!"] = "Je dois aller sur l'autre côté de cette île, rapidemment !", - ["With Dense Cloud on the land of shadows, I'm the village's only hope..."] = "Avec Dense Cloud dans le territoire des ombres, je suis le seul espoir du village...", - ["Welcome, Leaks A Lot!"] = "", - ["I want to play a game..."] = "", - ["Help me, please!!!"] = "", - ["However, if you fail to do so, she dies a most violent death, just like your friend! Muahahaha!"] = "", - ["Good luck...or else!"] = "", - ["Hey! This is cheating!"] = "", - ["You have failed to complete your task, young one!"] = "Tu as échoué à compléter ta tâche, disciple !", - ["It's time you learned that your actions have consequences!"] = "Il est toi pour toi d'apprendre que tes actions ont des conséquences !", - ["No! Please, help me!"] = "Non ! S'il te plaît, aide moi !", - ["No! What have I done?! What have YOU done?!"] = "Non ! Qu'ai je fait ? Qu'as TU fais ?!", - ["Help me, Leaks!"] = "Aide moi, Leaks !", - ["But you said you'd let her go!"] = "Mais vous aviez dit que vous la laisseriez partir !", - ["And you believed me? Oh, god, that's cute!"] = "Et tu m'as cru ? Oh mon dieu, c'est mignon !", - ["I won't let you kill her!"] = "Je ne te laisserai pas la tuer !", - ["Leaks A Lot, depressed for killing his loved one, failed to save the village..."] = "Leaks A Lot, déprimé d'avoir tué l'élue de son coeur, échoua à sauver le village...", - ["Thank you, oh, thank you, Leaks A Lot!"] = "Merci, oh, Merci, Leaks A Lot !", - ["How can I ever repay you for saving my life?"] = "Comment pourrais-je jamais te remercier de m'avoir sauver la vie ?", - ["There's nothing more satisfying for me than seeing you share your beauty with the world every morning, my princess!"] = "Il n'y a rien de plus satisfaisant pour moi que de te voir partager ta beauté avec le monde chaque matin, ma princesse !", - ["Let's go home!"] = "Rentrons à la maison !", - ["And so they discovered that cyborgs weren't invulnerable..."] = "Et c'est ainsi qu'ils découvrirent que les cybords n'étaient pas invulnérables...", - ["All right, we just need to get to the other side of the island!"] = "Très bien, nous devons juste rejoindre l'autre côté de l'île !", - ["We have no time to waste..."] = "Nous n'avons pas de temps à perdre...", - ["Well, well! Isn't that the cutest thing you've ever seen?"] = "Bien, Bien ! N'est pas la chose la plus mignonne que tu aies jamais vu ? ", - ["Two little hogs cooperating, getting past obstacles..."] = "Deux petits hérissons coopérant à passer les obstacles...", - ["Let me test your skills a little, will you?"] = "Laisse moi te tester un peu, veux tu ?", - ["Why are you doing this?"] = "Pourquoi fais tu ça ? ", - ["To help you, of course!"] = "Pour t'aider évidemment !", - ["OH, COME ON!"] = "OH, ALLEZ !", - ["Let's see what your comrade does now!"] = "Voyons ce que fait ton camarade maintenant !", - ["Help me, please!"] = "Aide moi, s'il te plaît !", - ["What are you doing? Let her go!"] = "Que fais tu ? Laisses la partir ! ", - ["Yeah? Watcha gonna do? Cry?"] = "Ouais? Qu'est ce que tu vas faire ? Pleurer ? ", - ["We won't let you hurt her!"] = "Nous ne te laisserons pas la blesser !", - ["Leaks A Lot, depressed for killing his loved one, failed to save the village..."] = "", - ["Thank you, oh, thank you, my heroes!"] = "Merci, oh, merci mes héros !", - ["How can I ever repay you for saving my life?"] = "", - ["There's nothing more satisfying to us than seeing you share your beauty..."] = "Il n'y a rien de plus satisfaisant pour moi que de te voir partager ta beauté...", - ["... share your beauty with the world every morning, my princess!"] = "...partager ta beauté avec le monde chaque matin, ma princesse !", - ["Let's go home!"] = "", - ["And so they discovered that cyborgs weren't invulnerable..."] = "", - ["All right, we just need to get to the other side of the island!"] = "", - ["Dude, can you see Ramon and Spiky?"] = "Mec, peux tu voir Ramon et Spkiky ? ", - ["No...I wonder where they disappeared?!"] = "Non...Je me demande où ils ont disparu ?!", - ["Well, well! Isn't that the cutest thing you've ever seen?"] = "", - ["Two little hogs cooperating, getting past obstacles..."] = "", - ["Let me test your skills a little, will you?"] = "", - ["Why are you doing this?"] = "", - ["You couldn't possibly believe that after refusing my offer I'd just let you go!"] = "Tu ne pouvais pas croire qu'après avoir refusé mon offre, je vous laisserai partir comme ça !", - ["You're funny!"] = "Tu es drôle !", - ["OH, COME ON!"] = "", - ["Let's see what your comrade does now!"] = "", - ["Help me, please!"] = "", - ["What are you doing? Let her go!"] = "", - ["Yeah? Watcha gonna do? Cry?"] = "", - ["We won't let you hurt her!"] = "", - ["Leaks A Lot, depressed for killing his loved one, failed to save the village..."] = "", - ["Thank you, oh, thank you, my heroes!"] = "", - ["How can I ever repay you for saving my life?"] = "", - ["There's nothing more satisfying to us than seeing you share your beauty with the world every morning, my princess!"] = "", - ["Let's go home!"] = "", - ["And so they discovered that cyborgs weren't invulnerable..."] = "", - ["Cannibal Sentry"] = "Sentinelle cannibale", - ["The village, unprepared, was destroyed by the cyborgs..."] = "Le village, pas préparé, fut détruit par les cyborgs...", - ["Natives"] = "Natives", - ["The village, unprepared, was destroyed by the cyborgs..."] = "", - ["Natives"] = "", - ["The Journey Back"] = "", - ["The Tunnel Maker"] = "Le creuseur de tunnel", - ["Hint: Select the BlowTorch, aim and press [Fire]. Press [Fire] again to stop.|Don't blow up the crate."] = "Astuce : Selectionnez le chalumeau, visez et tirez[Espace]. [espace] a nouveau pour stopper. |N'explosez pas la caisse.", - ["The Journey Back"] = "", - ["The Moonwalk"] = "Le Moonwalk", - ["Hint: Select the LowGravity and press [Fire]."] = "Astuce : Selectionnez : gravité faible et appuyez sur [espace]", - ["The Journey Back"] = "", ["Slippery"] = "Glissant", - ["You'd better watch your steps..."] = "tu ferais mieux de regarder où tu marches....", - ["Cannibal Sentry"] = "", - ["011101001"] = "", - ["Natives"] = "", - ["Leaks A Lot"] = "", - ["Dense Cloud"] = "", - ["Cannibal Sentry"] = "", - ["011101001"] = "", - ["Y3K1337"] = "Y3K1337", - ["Fell From Heaven"] = "", - ["Natives"] = "", - --- a classic fairytale: united we stand - ["Olive"] = "", - ["Brain Stu"] = "", - ["Brainila"] = "", - ["Salivaslurper"] = "", - ["Spleenlover"] = "", - ["Thighlicker"] = "", - ["NomNom"] = "", - ["Mindy"] = "", - ["Defeat the cannibals!|"] = "Bat les cannibales", - ["Try to protect the chief! You won't lose if he dies, but it is advised that he survives."] = "Essaie de protéger le chef ! Tu ne perdras pas s'il meurt, mais il serait avisé qu'il survive", - ["United We Stand"] = "Nous restons unis", - ["Invasion"] = "Invasion", - ["011101001"] = "", - ["I'm so scared!"] = "Je suis si effrayé !", - ["There's more of them? When did they become so hungry?"] = "Il y en encore ? Quand sont-ils devenu si affamés ?", - ["Back in the village, after telling the villagers about the threat..."] = "De retour au village, après avoir averti les villageois de la menace...", - ["Their buildings were very primitive back then, even for an uncivilised island."] = "Leurs batiments étaient très primitif à l'époque, même pour une ile non civilisée.", - ["Young one, you are telling us that they can instantly change location without a shaman?"] = "L'apprenti, tu es en train de nous dire qu'ils peuvent changer de place sans shaman ?", - ["That is, indeed, very weird..."] = "c'est ça, en effet, très étrange...", - ["If they try coming here, they can have a taste of my delicious knuckles!"] = "S'ils essaient de venir, ils pourront gouter de mes poings", - ["Haha!"] = "Haha !", - ["I'm not sure about that!"] = "Je n'en suis pas si sûr !", - ["They have weapons we've never seen before!"] = "Ils ont des armes que nous n'avons jamais vu avant !", - ["Luckily, I've managed to snatch some of them."] = "Heureusement, j'ai réussi à en avoir quelques unes", - ["Oops...I dropped them."] = "oups ... Je les ai laissées tomber.", - ["I'm not sure about that!"] = "", - ["They have weapons we've never seen before!"] = "", - ["They keep appearing like this. It's weird!"] = "", - ["Did anyone follow you?"] = "As tu été suivis ? ", - ["No, we made sure of that!"] = "Non, nous nous en sommes assurés", - ["First aid kits?!"] = "Des kits de premiers secours ?!", - ["I've seen this before. They just appear out of thin air."] = "J'ai déjà vu ça. Ils apparaissent dans les airs", - ["Hey guys!"] = "Salut les gars !", - ["..."] = "...", - ["Where have you been?"] = "Où étais tu ? ", - ["Just on a walk."] = "Je faisais juste une promenade", - ["You have chosen the perfect moment to leave."] = "Tu as choisis le moment parfait pour partit.", - ["HOW DO THEY KNOW WHERE WE ARE???"] = "COMMENT SAVENT-ILS OU NOUS SOMMES ?", - ["We have to protect the village!"] = "Nous devons protéger le village !", - ["We can't hold them up much longer!"] = "Nous ne pouvons pas les retenir plus longtemps !", - ["We need to move!"] = "Nous devons partir !", - ["But where can we go?"] = "Mais où pouvons nous aller ? ", - ["To the caves..."] = "Aux cavernes...", - ["Good idea, they'll never find us there!"] = "Bonne idée, ils ne nous trouverons jamais là bas !", - ["I need to move the tribe!"] = "Je dois emmener la tribue", - ["The caves are well hidden, they won't find us there!"] = "Les cavernes sont bien cachées, ils ne nous y trouverons pas !", - ["Natives"] = "", - ["Leaks A Lot"] = "", - ["Dense Cloud"] = "", - ["Fiery Water"] = "", - ["Raging Buffalo"] = "", - ["Righteous Beard"] = "", - ["Light Cannfantry"] = "", - ["Heavy Cannfantry"] = "", - ["011101001"] = "", - ["Unit 334a$7%;.*"] = "", - ["Dense Cloud"] = "", - ["Leaks A Lot"] = "", - ["Righteous Beard"] = "", - ["Fiery Water"] = "", - ["Raging Buffalo"] = "", - ["Natives"] = "", - --- a classic fairytale: backstab - ["Leaks A Lot"] = "", - ["Dense Cloud"] = "", - ["Fiery Water"] = "", - ["Raging Buffalo"] = "", - ["Righteous Beard"] = "", - ["Fell From Grace"] = "", - ["Wise Oak"] = "", - ["Eagle Eye"] = "", - ["Flaming Worm"] = "", - ["Brain Teaser"] = "", - ["Bone Jackson"] = "", - ["Gimme Bones"] = "", - ["Hedgibal Lecter"] = "", - ["Bloodpie"] = "", - ["Scalp Muncher"] = "", - ["Back Breaker"] = "", - ["Dahmer"] = "", - ["Meiwes"] = "", - ["Ear Sniffer"] = "", - ["Regurgitator"] = "", - ["Muriel"] = "", - ["Let them have a taste of my fury!"] = "Ils vont gouter de ma fureur !", - ["There's more of them? When did they become so hungry?"] = "Il y en encore ? Quand sont-ils devenu si affamés ?", - ["We are indeed."] = "Nous le sommes, en effet.", - ["I think we are safe here."] = "Je pense que nous sommes en sécurité ici.", - ["I'm...alive? How? Why?"] = "Je suis...vivant ? Comment ? Pourquoi ?", - ["But why would they help us?"] = "Mais pourquoi nous aideraient-ils ? ", - ["It must be the aliens!"] = "Ce doit être les extraterrestres !", - ["You just appeared out of thin air!"] = "tu es apparu comme par magie ! ", - ["But...we died!"] = "Mais... nous avons été tués !", - ["This must be the caves!"] = "Ce doit être les cavernes !", - ["Dude, where are we?"] = "Mec, où sommes nous ? ", - ["Why would they do this?"] = "Pourquoi feraient-ils ça ?", - ["It must be the aliens' deed."] = "Ce doit être à cause des extraterrestres", - ["Do not laugh, inexperienced one, for he speaks the truth!"] = "Ne rit pas, inexpérimenté, car il dit la vérité ! ", - ["Yeah, sure! I died. Hillarious!"] = "Ouais, sûr ! il est mort. Hillarant !", - ["You're...alive!? But we saw you die!"] = "Tu es...vivant ? Mais nous t'avons vu mourrir !", - ["???"] = "???", - ["Wow, what a dream!"] = "Wow, quel rêve !", - ["Dude, that's so cool!"] = "Mec, c'est si cool !", - ["But that's impossible!"] = "Mais c'est impossible !", - ["It was not a dream, unwise one!"] = "Ce n'était pas un rêve, imprudent !", - ["Exactly, man! That was my dream."] = "Exactement, mec ! C'était mon rêve.", - -- ["Dude, wow! I just had the weirdest high!"] = "", - ["The answer is...entertaintment. You'll see what I mean."] = "La réponse est... divertissement. Tu comprendras ce que je veux dire", - ["You're probably wondering why I bought you back..."] = "Tu te demandes probablement pourquoi je t'ai ramené...", - ["What shall we do with the traitor?"] = "Que devons nous faire avec le traître ? ", - ["Here, let me help you!"] = "Laissez moi vous aider !", - ["I forgot that she's the daughter of the chief, too..."] = "J'avais oublié qu'elle était aussi la fille du chef...", - ["You killed my father, you monster!"] = "Tu as tué mon père, monstre !", - ["Look, I had no choice!"] = "ecoute, je n'avais pas le choix !", - ["You have been giving us out to the enemy, haven't you!"] = "Tu nous as vendu aux ennemis, n'est ce pas ?!", - ["You're a pathetic liar!"] = "Tu es un menteur pathétique", - ["Interesting! Last time you said you killed a cannibal!"] = "Interessant ! La dernière fois tu as dit que tu avais tué un cannibale !", - ["I told you, I just found them."] = "Je te l'ai dit, je les ai juste trouvés", - ["Where did you get the weapons in the forest, Dense Cloud?"] = "Où as tu trouvé les armes dans la foret, Dense Cloud ?", - ["Not now, Fiery Water!"] = "Pas maintenant, Fiery Water !", - ["What shall we do with the traitor?"] = "", - ["I can't believe what I'm hearing!"] = "Je ne peux pas croire ce que j'entends !", - ["You know what? I don't even regret anything!"] = "Tu sais quoi ? je ne regrette rien !", - ["In fact, you are the only one that's been acting strangely."] = "En fait, tu es le seul qui a agi étrangement.", - ["Are you accusing me of something?"] = "Es tu en train de m'accuser de quelque chose ? ", - ["You know...taking a stroll."] = "Vous savez... promenade.", - ["Where have you been?!"] = "Où étais tu ?!", - ["You won't believe what happened to me!"] = "Vous ne croirez pas ce qui m'est arrivé !", - ["Hey, guys!"] = "", - ["There must be a spy among us!"] = "Il doit y avoir un espion parmi nous", - ["We made sure noone followed us!"] = "Nous nous sommes assurés que personne ne nous as suivis !", - ["What? Here? How did they find us?!"] = "Quoi ? ici ? Comment nous ont ils trouvés ?", - ["Look out! There's more of them!"] = "Ils sont plus nombreux !", - ["What a strange feeling!"] = "Quel étrange sentiment !", - ["I need to warn the others."] = "Je dois avertir les autres.", - ["If only I had a way..."] = "Si seulement j'avais un moyen...", - ["Oh, silly me! I forgot that I'm the shaman."] = "Oh suis je bête ! j'ai oublié que j'étais le shaman.", - ["I sense another wave of cannibals heading our way!"] = "Je sens une autre vague de cannibale qui arrivent !", - ["I feel something...a place! They will arrive near the circles!"] = "Je sens quelque chose... une localisation ! Ils vont arriver près des cercles !", - ["We need to prevent their arrival!"] = "Nous devons prévoir leur arrivée !", - ["Go, quick!"] = "Va ! Vite !", - ["I want to see how it handles this!"] = "Je veux voir comment ils vont faire avec ça !", - ["What a strange feeling!"] = "", - ["I sense another wave of cannibals heading my way!"] = "", - ["I feel something...a place! They will arrive near the circles!"] = "", - ["I need to prevent their arrival!"] = "Je dois prévoir leur arrivée !", - ["If only I had a way..."] = "", - ["Oh, silly me! I forgot that I'm the shaman."] = "", - ["Oh, my! This is even more entertaining than I've expected!"] = "Oh mon dieu ! c'est meme plus amusant que ce que je pensais !", - ["You might want to find a way to instantly kill arriving cannibals!"] = "tu aimerais surement trouver un moyen de tuer instantanément les cannibales qui arrivent !", - ["I believe there's more of them."] = "Je crois qu'il y en a encore d'autres", - ["I marked the place of their arrival. You're welcome!"] = "J'ai marqués les lieux d'où ils arriveront. Derien !", - ["I want to see how it handles this!"] = "", - ["Why me?!"] = "Pourquoi moi ?§", - ["He won't be selling us out anymore!"] = "Il ne nous vendra plus !", - ["That's for my father!"] = "C'est pour mon père !", - ["Let's show those cannibals what we're made of!"] = "Montrons à ces cannibales de quel bois on se chauffe !", - ["We'll spare your life for now!"] = "Nous t'épargnons la vie pour le moment !", - ["May the spirits aid you in all your quests!"] = "Puisse les esprits t'aider dans tes quêtes !", - ["I just don't want to sink to your level."] = "Je ne veux pas m'abaisser à votre niveau.", - ["Let's show those cannibals what we're made of!"] = "", - ["Let us help, too!"] = "Allons aider nous aussi !", - ["No. You and the rest of the tribe are safer there!"] = "Non, Toi et le reste de la tribue etes plus en sécurité ici ! ", - ["That was just mean!"] = "C'était radin !", - ["Backstab"] = "coup de poignard dans le dos", - ["The food bites back"] = "La nourriture mords en retour", - ["Defeat the cannibals"] = "", - ["Backstab"] = "", - ["Drills"] = "", - ["You have 7 turns until the next wave arrives.|Make sure the arriving cannibals are greeted appropriately!|If the hog dies, the cause is lost.| Hint: you might want to use some mines..."] = "Tu as 7 tours avant la prochaine vague. |Assures toi que les prochains arrivant soient bien accueillis ! |Si le hérissons meurt, la cause est perdue. | Conseil : Tu pourrais vouloir utiliser des mines ...", - ["Backstab"] = "", - ["Judas"] = "Judas", - ["Kill the traitor...or spare his life!|Kill him or press [Precise]!"] = "Tue le traître... ou épargnes sa vie ! |Tue le ou appuies sur [Precise] !", - ["Backstab"] = "", - ["Brutus"] = "Brutus", - ["You have failed to save the tribe!"] = "Tu n'as pas su sauvé la tribue !", - ["Natives"] = "", - ["Tribe"] = "", - ["011101001"] = "", - ["Backstab"] = "", - ["Brutus"] = "", - ["You have killed an innocent hedgehog!"] = "Tu as tué un innocent !", - ["Natives"] = "", - ["Tribe"] = "", - ["That ought to show them!"] = "Ca doit leur montrer", - ["Guys, do you think there's more of them?"] = "Les gars, vous pensez qu'ils y en plus encore ?", - ["Where are they?!"] = "Où sont ils ?!", - ["These primitive people are so funny!"] = "Ces primitis sont si amusants !", - ["I need to find the others!"] = "Je dois trouver les autres !", - ["I have to follow that alien."] = "Je dois suivre cet extraterrestre", - ["Tribe"] = "", - ["Assault Team"] = "", - ["Reinforcements"] = "", - ["011101001"] = "", - ["Natives"] = "", - ["Tribe"] = "", - ["Assault Team"] = "", - ["Reinforcements"] = "", - ["011101001"] = "", - ["Unit 334a$7%;.*"] = "", - ["Tribe"] = "", - ["Natives"] = "", - ["Natives"] = "", - --- a classic fairytale: dragon's lair - ["Leaks A Lot"] = "", - ["Dense Cloud"] = "", - ["Fiery Water"] = "", - ["Raging Buffalo"] = "", - ["Righteous Beard"] = "", - ["Fell From Grace"] = "", - ["Wise Oak"] = "", - ["Zork"] = "", - ["Steve"] = "", - ["Jack"] = "", - ["Lee"] = "", - ["Elmo"] = "", - ["Rachel"] = "", - ["Muriel"] = "", - ["Syntax Errol"] = "", - ["Segmentation Paul"] = "", - ["Unexpected Igor"] = "", - ["Jeremiah"] = "", - ["Yeah, take that!"] = "Ouais, prends ça !", - ["Bullseye"] = "Dans le mille", - ["Die, die, die!"] = "Meurt, meurt, meurt !", - ["With the rest of the tribe gone, it was up to "] = "Avec le reste de la tribue partie, il était temps de ", - [" to save the village."] = "de sauver le village", - ["But it proved to be no easy task!"] = "Mais cela ne s'avéra pas etre une tache facile !", - ["What a strange cave!"] = "quelle etrange caverne", - ["Now how do I get on the other side?!"] = "Maintenant comme je me rends de l'autre coté ?", - ["Dude, what's this place?!"] = "Mec, quel est cet endroit?", - ["And where's all the weed?"] = "et où est toute l'herbe ?", - ["Is this place in my head?"] = "est ce que cet endroit est dans ma tete ?", - ["I shouldn't have drunk that last pint."] = "Je n'aurais pas du boire cette derniere pinte", - ["Where did that alien run?"] = "Où est parti cet alien ?", - ["When I find it..."] = "Quand je vais le trouver...", - ["This is typical!"] = "C'est typique !", - ["It's always up to women to clear up the mess men created!"] = "C'est toujours aux femmes de s'occuper du bazar que les hommes ont créés !", - ["What is this place?"] = "Quel est cet endroit ? ", - ["It doesn't matter. I won't let that alien hurt my daughter!"] = "Ca n'a pas d'importance. je ne laisserai pas cet alien blesser ma fille !", - ["Every single time!"] = "A chaque fois !", - ["How come in a village full of warriors, it's up to me to save it?"] = "Comment entrer dans un village plein de guerriers, c'est à moi de le sauver ?", - ["Greetings, "] = "Salutations, ", - ["As you can see, there is no way to get on the other side!"] = "Comme tu peux le voir, il n'y a pas de moyen d'atteindre l'autre côté !", - ["I wish to help you, "] = "Je souhaite t'aider,", - ["Beware, though! If you are slow, you die!"] = "Attention tout de meme ! si tu es lent, tu meurt !", - ["Talk about mixed signals..."] = "Parlons des signaux mélangés", - ["Well, that was a waste of time."] = "Bien, c'était une perte de temps.", - ["You bear impressive skills, "] = "tu as des compétences impressionantes, ", - ["However, my mates don't agree with me on letting you go..."] = "Mes amis ne sont pas d'accord pour vous laisser partit ...", - ["I guess you'll have to kill them."] = "Je suppose que vous devrez les tuer", - ["Nice work, "] = "Beau boulot", - ["As a reward for your performance, here's some new technology!"] = "Comme récompence, voici quelques nouvelles technologie !", - ["Use it wisely!"] = "a utiliser intelligemment", - ["Dragon's Lair"] = "La tanière du dragon", - ["Obstacle course"] = "Course d'obstacle", - ["In order to get to the other side, you need to collect the crates first.|"] = "dans le but d'atteindre l'autre coté, tu dois d'abord collectez les caisses ", - ["As the ammo is sparse, you might want to reuse ropes while mid-air.|"] = "Vu que les munitions sont éparpillées tu devrais re-lancer la corde en plein vol", - ["If you wish to restart the course, hold [Precise] while your turn ends (e.g with Skip)!|"] = "Si tu soihaire recommencer la coursse, maintien [precise] quand ton tour se termine (avec [passe ton tour ] par exemple", - ["The enemy can't move but it might be a good idea to stay out of sight!|"] = "les ennemis ne peuvent pas bouger mais ce serait une bonne idée de rester hors de vue", - ["You have "] = "Tu as", - [" turns until Sudden Death! Better hurry!"] = "tours avant la mort subite ! tu ferais mieux de te dépecher !", - ["Dragon's Lair"] = "", - ["The Slaughter"] = "", - ["Kill the aliens!"] = "", - ["Dragon's Lair"] = "", - ["The what?!"] = "", - ["Use the portal gun to get to the next crate, then use the new gun to get to the final destination!|"] = "Utilise le fusil à portail pour atteindre la prochaine caisse, puis utilise le nouveau fusil pour atteindre la destination finale", - ["Portal hint: one goes to the destination, and one is the entrance.|"] = "portails astuce : l'un est la destination, l'autre est l'entrée ", - ["Teleport hint: just use the mouse to select the destination!"] = "Teleporte : utilise la souris pour selectionner la destination !", - ["I'm a ninja."] = "Je suis un ninja", - ["Salvation was one step closer now..."] = "Le salut était tout proche...", - ["011101001"] = "", - ["Natives"] = "", - ["011101001"] = "", - ["Natives"] = "", - ["011101001"] = "", - ["Unit 334a$7%;.*"] = "", - ["011101000"] = "", - ["Dragon's Lair"] = "", - ["Y Chwiliad"] = "", - ["Find your tribe!|Cross the lake!"] = "Trouves ta tribue ! |travers le lac !", - ["011101000"] = "", - ["011101000"] = "", - ["011101001"] = "", - ["Turns until Sudden Death: "] = "", - --- a classic fairytale: family reunion - ["Leaks A Lot"] = "", - ["Dense Cloud"] = "", - ["Fiery Water"] = "", - ["Raging Buffalo"] = "", - ["Righteous Beard"] = "", - ["Fell From Grace"] = "", - ["Wise Oak"] = "", - ["Ramon"] = "", - ["Spiky Cheese"] = "", - ["Zork"] = "", - ["Steve"] = "", - ["Jack"] = "", - ["Lee"] = "", - ["Elmo"] = "", - ["Rachel"] = "", - ["Muriel"] = "", - ["Unit 0x0007"] = "", - ["Hogminator"] = "", - ["Carol"] = "", - ["Blender"] = "", - ["Elderbot"] = "", - ["Fiery Water"] = "", - ["Those aliens are destroying the island!"] = "Ces aliens détruisent l'ile !", - ["Dude, all the plants are gone!"] = "Mec, toutes les plantes sont parties !", - ["What am I gonna...eat, yo?"] = "", - ["Fell From Heaven is the best! Fell From Heaven is the greatest!"] = "Fell From Heaven est la meilleure ! Fell From Heaven est la meilleure !", - ["Yuck! I bet they'll keep worshipping her even after I save the village!"] = "beurck ! je parie qu'ils continueront à l'adorer meme après que j'ai sauvé le village !", - ["I'm getting old for this!"] = "Je deviens vieux pour ça !", - ["I'm getting thirsty..."] = "je deviens trentenaire", - ["I wonder why I'm so angry all the time..."] = "Je me demande pourquoi je suis toujours tellement en colère", - ["It must be a childhood trauma..."] = "Ca doit être un traumatisme d'enfance", - ["Just wait till I get my hands on that trauma! ARGH!"] = "Attends un peu que je mette la main sur ce traumatisme ! ARGH !", - ["I could just teleport myself there..."] = "Je pourrai juste me téléporter la bas...", - ["It's a shame, I forgot how to do that!"] = "C'est une honte, j'ai oublié comment faire !", - ["Hello again, "] = "Re*bonjour,", - ["I just found out that they have captured your princess!"] = "Je viens de m'apercevoir qu'ils ont capturé votre princesse !", - ["Of course I have to save her. What did I expect?!"] = "Bien sur je dois la sauver. Qu'est ce que j'imaginais ?", - ["She's behind that tall thingy."] = "Elle est derrière ce grand truc.", - ["I'm here to help you rescue her."] = "Je suis ici pour t'aider à la secourir.", - ["Yo, dude, we're here, too!"] = "Yo mec, on est là aussi !", - ["We were trying to save her and we got lost."] = "On essayait de la sauver et on s'est perdu.", - ["That's typical of you!"] = "C'est typiquemment vous !", - ["Why are you helping us, uhm...?"] = "Pourquoi nous aidez vous, hum ...?", - ["Call me Beep! Well, 'cause I'm such a nice...person!"] = "Appele moi Beep ! Hum, parce que je suis genre une personne sympa !", - ["Here, let me help you save her!"] = "Laisse moi vous aider à la sauver !", - ["Thanks!"] = "Merci !", - ["Why can't he just let her go?!"] = "Pourquoi ne peut-il pas juste la laisser partit ?!", - ["Family Reunion"] = "Réunion de famille ", - ["Salvation"] = "Le salut", - ["Get your teammates out of their natural prison and save the princess!|Hint: Drilling holes should solve everything.|Hint: It might be a good idea to place a girder before starting to drill. Just saying.| Hint: All your hedgehogs need to be above the marked height!|Hint: Leaks A Lot needs to get really close to the princess!"] - = "Fais sortir tes coéquipiers de leur prison naturelle et sauve la princesse ! |Percer des trous résoudrait tout. |ca serait une bonne idée de placer quelque poutres avant de commencer à percer. je dis ça, je dis rien. |Tous vos hérissons doivent être au dessus de la hauteur marquée ! | Leaks A Lot doit être très proche de la princesse ! ", - ["Family Reunion"] = "", - ["Hostage Situation"] = "Situation d'otage", - ["Save the princess! All your hogs must survive!|Hint: Kill the cyborgs first! Use the ammo very carefully!|Hint: You might want to spare a girder for cover!"] = "Sauve la princesse, tous vos hérissons doivent survivre ! |tue les cyborgs en premier ! utilise les munitions très prudemment ! |Tu voudras peut etre garder une poutre pour te couvrir !", - ["Thank you, my hero!"] = "Merci, mon héro !", - ["011101001"] = "", - ["Natives"] = "", - ["011101001"] = "", - ["Natives"] = "", - ["011101001"] = "", - ["Unit 334a$7%;.*"] = "", - ["Fell From Heaven"] = "", - ["Biomechanic Team"] = "", - ["Biomechanic Team"] = "", - ["011101001"] = "", - --- a classic fairytale: long live the queen - ["Leaks A Lot"] = "", - ["Dense Cloud"] = "", - ["Fiery Water"] = "", - ["Raging Buffalo"] = "", - ["Righteous Beard"] = "", - ["Fell From Grace"] = "", - ["Wise Oak"] = "", - ["Ramon"] = "", - ["Spiky Cheese"] = "", - ["Zork"] = "", - ["Steve"] = "", - ["Jack"] = "", - ["Lee"] = "", - ["Elmo"] = "", - ["Rachel"] = "", - ["Muriel"] = "", - ["Artur Detour"] = "", - ["Led Heart"] = "", - ["Orlando Boom!"] = "", - ["Nilarian"] = "", - ["Steel Eye"] = "", - ["Rusty Joe"] = "", - ["Hatless Jerry"] = "", - ["Gas Gargler"] = "", - ["Natives"] = "", - ["Leaderbot"] = "", - ["011101001"] = "", - ["Nancy Screw"] = "", - ["Fell From Heaven"] = "", - ["Natives"] = "", - ["Fell From Heaven"] = "", - ["Beep Loopers"] = "", - ["Corporationals"] = "", - ["Leaderbot"] = "", - ["Name"] = "", - ["011101001"] = "", - ["Unit 334a$7%;.*"] = "", - ["Beep Loopers"] = "", - ["Corporationals"] = "", - ["Natives"] = "", - ["011101001"] = "", - --- a classic fairytale: the enemy of my enemy... - ["Leaks A Lot"] = "", - ["Dense Cloud"] = "", - ["Fiery Water"] = "", - ["Raging Buffalo"] = "", - ["Righteous Beard"] = "", - ["Fell From Grace"] = "", - ["Wise Oak"] = "", - ["Ramon"] = "", - ["Spiky Cheese"] = "", - ["Honest Lee"] = "", - ["Vegan Jack"] = "", - ["Sirius Lee"] = "", - ["Brutal Lily"] = "", ["Smith 0.97"] = "", ["Smith 0.98"] = "", ["Smith 0.99a"] = "", ["Smith 0.99b"] = "", ["Smith 0.99f"] = "", ["Smith 1.0"] = "", - ["Everything looks OK..."] = "Tout à l'air d'être OK ...", - ["This will be fun!"] = "Ce sera fun !", - ["HAHA!"] = "HAHA !", - ["What is this place?"] = "quel est cet endroit ,", - ["And how am I alive?!"] = "Et comment suis je en vie ?", - ["It must be the cyborgs again!"] = "Ce doit encore etre les cyborgs !", - ["Looks like the whole world is falling apart!"] = "On dirait que le monde entier tombe en morceaux !", - ["Look out! We're surrounded by cannibals!"] = "Regarde ! nous sommes entourés par les cannibales !", - ["Cannibals?! You're the cannibals!"] = "Cannibales ? C'est vous les cannibales !", - ["WHAT?! You're the ones attacking us!"] = "Quoi ?! C'est vous qui nous attaquez !", - ["You have kidnapped our whole tribe!"] = "Vous avez kidnappé notre tribue entière !", - ["You've been assaulting us, we have been just defending ourselves!"] = "vous nous avez assiégé, nous nous sommes justes défendus !", - ["I can't believe this!"] = "Je ne peux pas le croire !", - ["Have we ever attacked you first?"] = "nous avons vous jamais attaqué en premier ? ", - ["Yes!"] = "Oui !", - ["When?"] = "Quand ?", - ["Uhmm...ok no."] = "Humm... ok non.", - ["But you're cannibals. It's what you do."] = "Mais vous etes cannibales. C'est ce que vous faites.", - ["Again with the 'cannibals' thing!"] = "Encore avec votre 'cannibale' truc", - ["Where do you get that?!"] = "D'ou ça vous vient ?!!", - ["Everyone knows this."] = "Tout le monde sait ça.", - ["I didn't until about a month ago."] = "Je ne savais pas jusqu'à il y a un mois", - ["Hmmm...actually...I didn't either."] = "Humm... en fait...je ne savais pas non plus.", - ["About a month ago, a cyborg came and told us that you're the cannibals!"] = "Il y a un moins, un cyborg est venu et nous a dit que vous étiez des cannibales !", - ["A cy-what?"] = "Un cy-quoi ?", - ["Cyborg. It's what the aliens call themselves."] = "Cyborg. C'est ainsi que s'appellent les aliens entre eux.", +-- ["Sniper Rifle"] = "", -- Continental_supplies +-- ["Sniper!"] = "", -- Space_Invasion + ["Sniper Training"] = "Entrainement au fusil de sniper", + ["Sniperz"] = "Snipers", + ["So humiliating..."] = "Si humiliant...", +-- ["South America"] = "", -- Continental_supplies + ["So? What will it be?"] = "Alors ? Qu'est ce que ce sera ?", +-- ["Spawn the crate, and attack!"] = "", -- WxW +-- ["Special Weapons:"] = "", -- Continental_supplies + ["Spiky Cheese"] = "", + ["Spiky Cheese"] = "", + ["Spiky Cheese"] = "", + ["Spiky Cheese"] = "Spiky cheese", + ["Spiky Cheese"] = "Spiky Cheese", + ["Spleenlover"] = "", +-- ["Sponge"] = "éponde",--?? + ["Spooky Tree"] = "Arbre fantomatique", +-- ["STATUS UPDATE"] = "", -- GaudyRacer, Space_Invasion + ["Steel Eye"] = "", + ["Step By Step"] = "Pas à Pas", + ["Steve"] = "", + ["Steve"] = "", + ["Steve"] = "", +-- ["Sticky Mine"] = "", -- Continental_supplies + ["Stronglings"] = "Stronglings", +-- ["Structure"] = "", -- Continental_supplies +-- ["Super Weapons"] = "", -- WxW +-- ["Surf Before Crate"] = "", -- WxW +-- ["Surfer! +15 points!"] = "", -- Space_Invasion +-- ["Surfer!"] = "", -- WxW + ["Survive!|Hint: Cinematics can be skipped with the [Precise] key."] = "Survis ! Les cinématique peuvent être passées avec la touche [Precise]. ", + ["Swing, Leaks A Lot, on the wings of the wind!"] = "Balances toi Leaks a Lot, sur les ailes du vent", +-- ["Switched to "] = "", + ["Syntax Errol"] = "", + ["Talk about mixed signals..."] = "Parlons des signaux mélangés", + ["Team %d: "] = "Équipe %d : ", +-- ["Team Scores"] = "", -- Control, Space_Invasion + ["Teleport hint: just use the mouse to select the destination!"] = "Teleporte : utilise la souris pour selectionner la destination !", + ["Thanks!"] = "Merci !", + ["Thank you, my hero!"] = "Merci, mon héro !", + ["Thank you, oh, thank you, Leaks A Lot!"] = "Merci, oh, Merci, Leaks A Lot !", + ["Thank you, oh, thank you, my heroes!"] = "", + ["Thank you, oh, thank you, my heroes!"] = "Merci, oh, merci mes héros !", + ["That is, indeed, very weird..."] = "c'est ça, en effet, très étrange...", + ["That makes it almost invaluable!"] = "Ca la rends presque inestimable !", + ["That ought to show them!"] = "Ca doit leur montrer", + ["That's for my father!"] = "C'est pour mon père !", + ["That shaman sure knows what he's doing!"] = "Ce Shaman sait vraiment ce qu'il fait !", +-- ["That Sinking Feeling"] = "", + ["That's not our problem!"] = "Ce n'est pas notre problème !", + ["That's typical of you!"] = "C'est typiquemment vous !", + ["That was just mean!"] = "C'était radin !", + ["That was pointless."] = "C'était inutile.", + ["The answer is...entertaintment. You'll see what I mean."] = "La réponse est... divertissement. Tu comprendras ce que je veux dire", +-- ["The anti-portal zone is all over the floor, and I have nothing to kill him...Droping something could hurt him enough to kill him..."] = "", -- portal + ["The Bull's Eye"] = "Dans le mille", + ["The caves are well hidden, they won't find us there!"] = "Les cavernes sont bien cachées, ils ne nous y trouverons pas !", + ["The Crate Frenzy"] = "Frenesie de caisses", + ["The Dilemma"] = "Le dilemne", + ["The enemy can't move but it might be a good idea to stay out of sight!|"] = "les ennemis ne peuvent pas bouger mais ce serait une bonne idée de rester hors de vue", + ["The enemy is hiding out on yonder ducky!"] = "L'ennemi se cache là-bas sur le canard !", + ["The Enemy Of My Enemy"] = "Les ennemis de mes ennemis", + ["The First Blood"] = "Le premier sang", + ["The First Blood"] = "Le premier sang", + ["The First Encounter"] = "La première rencontre", + ["The flag will respawn next round."] = "Le drapeau va réapparaitre au prochain tour", + ["The food bites back"] = "La nourriture mords en retour", + ["The giant umbrella from the last crate should help break the fall."] = "La toile géante de la dernière caisse devrait aider à arrêter la chute.", +-- ["The Great Escape"] = "", -- User_Mission_-_The_Great_Escape + ["The guardian"] = "Le gardien", + ["The Individualist"] = "L'individualiste", + ["Their buildings were very primitive back then, even for an uncivilised island."] = "Leurs batiments étaient très primitif à l'époque, même pour une ile non civilisée.", + ["The Journey Back"] = "", + ["The Journey Back"] = "", + ["The Journey Back"] = "", + ["The Journey Back"] = "", + ["The Journey Back"] = "", + ["The Journey Back"] = "", + ["The Journey Back"] = "", + ["The Journey Back"] = "", + ["The Journey Back"] = "Le voyage de retour", + ["The Leap of Faith"] = "Le saut de la foi", + ["The Moonwalk"] = "Le Moonwalk", + ["The Nameless One"] = "Le sans nom", +-- ["The next one is pretty hard! |Tip: You have to do multiple swings!"] = "", -- Basic_Training_-_Rope + ["Then how do they keep appearing?"] = "Alors, comment continuent-il à apparaître ?", + ["The other one were all cannibals, spending their time eating the organs of fellow hedgehogs..."] = "L'autre était une tribus de cannibales, ils passaient leur temps à manger les organes d'autres hérissons...", + ["There must be a spy among us!"] = "Il doit y avoir un espion parmi nous", + ["There's more of them? When did they become so hungry?"] = "Il y en encore ? Quand sont-ils devenu si affamés ?", + ["There's more of them? When did they become so hungry?"] = "Il y en encore ? Quand sont-ils devenu si affamés ?", + ["There's nothing more satisfying for me than seeing you share your beauty with the world every morning, my princess!"] = "Il n'y a rien de plus satisfaisant pour moi que de te voir partager ta beauté avec le monde chaque matin, ma princesse !", + ["There's nothing more satisfying to us than seeing you share your beauty..."] = "Il n'y a rien de plus satisfaisant pour moi que de te voir partager ta beauté...", + ["There's nothing more satisfying to us than seeing you share your beauty with the world every morning, my princess!"] = "", + ["The Rising"] = "L'ascension", + ["The Savior"] = "Le sauveur", + ["These primitive people are so funny!"] = "Ces primitis sont si amusants !", + ["The Shadow Falls"] = "", + ["The Shadow Falls"] = "", + ["The Shadow Falls"] = "", + ["The Shadow Falls"] = "", + ["The Shadow Falls"] = "", + ["The Shadow Falls"] = "", + ["The Shadow Falls"] = "", + ["The Shadow Falls"] = "", + ["The Shadow Falls"] = "", + ["The Shadow Falls"] = "La chute des ombres", + ["The Showdown"] = "La confrontation", + ["The Slaughter"] = "", + ["The Slaughter"] = "Le massacre", +-- ["THE SPECIALISTS"] = "", + ["The spirits of the ancerstors are surely pleased, Leaks A Lot."] = "Les esprits des ancêtres sont sûrement ravis, Leaks A Lot.", + ["The Torment"] = "Le supplice", + ["The Tunnel Maker"] = "Le creuseur de tunnel", + ["The Ultimate Weapon"] = "L'arme ultime", + ["The Ultimate Weapon"] = "L'arme ultime", + ["The Union"] = "L'union", + ["The village, unprepared, was destroyed by the cyborgs..."] = "", + ["The village, unprepared, was destroyed by the cyborgs..."] = "Le village, pas préparé, fut détruit par les cyborgs...", + ["The walk of Fame"] = "", + ["The walk of Fame"] = "La marche d'honneur", + ["The wasted youth"] = "Une jeunesse ruinée", + ["The weapon in that last crate was bestowed upon us by the ancients!"] = "L'arme dans cette dernière caisse nous a été conféré par les ancients", + ["The what?!"] = "", + ["The wind whispers that you are ready to become familiar with tools, now..."] = "Le vent me murmure que tu es maintenant prêt à te familiariser avec les outils ...", + ["They are all waiting back in the village, haha."] = "Ils attendent tous au village, haha.", +-- ["They Call Me Bullseye!"] = "", -- Space_Invasion + ["They have weapons we've never seen before!"] = "", + ["They have weapons we've never seen before!"] = "Ils ont des armes que nous n'avons jamais vu avant !", + ["They keep appearing like this. It's weird!"] = "", +-- ["They killed "] = "", -- A_Classic_Fairytale:backstab, A_Classic_Fairytale:united + ["They must be trying to weaken us!"] = "Ils doivent essayer de nous affaiblir !", + ["They never learn"] = "Ils n'apprennent jamais", ["They told us to wear these clothes. They said that this is the newest trend."] = "Ils nous ont dit de porter ces vêtements. Ils nous ont dit que c'était la nouvelle mode.", ["They've been manipulating us all this time!"] = "Ils nous ont tous manipulé cette fois !", - ["They must be trying to weaken us!"] = "Ils doivent essayer de nous affaiblir !", - ["We have to unite and defeat those cylergs!"] = "nous devons nous unir et battre ces cyborgs !", - ["We can't let them take over our little island!"] = "nous ne pouvons pas les laisser prendre notre petite ile !", - ["You have finally figured it out!"] = "Tu t'en es finallement rendu compte !", - ["You meatbags are pretty slow, you know!"] = "Vous les sacs à viande êtes plutot lent vous savez !", - ["Why do you want to take over our island?"] = "Pourquoi voulez vous notre ile ?", - ["Do you have any idea how valuable grass is?"] = "Est ce que vous avez une idée de la valeur de votre herbe ?", + ["Thighlicker"] = "", + ["This is it! It's time to make Fell From Heaven fall for me..."] = "Ca y est ! il est temps d'impressionner Fell From Heaven ", ["This island is the only place left on Earth with grass on it!"] = "Cette ile est le dernier endroit sur terre avec de l'herbe dessus !", - ["It's worth more than wood!"] = "C'est pire que le bois !", - ["That makes it almost invaluable!"] = "Ca la rends presque inestimable !", + ["This is typical!"] = "C'est typique !", + ["This must be some kind of sorcery!"] = "Ce doit être une sorte de sorcellerie", + ["This must be the caves!"] = "Ce doit être les cavernes !", + ["This one's tricky."] = "celui ci n'est pas facile", + ["This rain is really something..."] = "Cette pluie est vraiment quelquechose", + ["This will be fun!"] = "Ce sera fun !", + ["Those aliens are destroying the island!"] = "Ces aliens détruisent l'ile !", +-- ["Timed Kamikaze!"] = "", +-- ["Time Extended!"] = "", +-- ["Time Extension"] = "", + ["TIME: "] = "TEMPS : ", +-- ["Tip: The rope physics are different than in the real world, |use it to your advantage!"] = "", -- Basic_Training_-_Rope +-- ["Toggle Shield"] = "", + ["To help you, of course!"] = "Pour t'aider évidemment !", + ["To place a girder, select it, use [Left] and [Right] to select angle and length, place with [Left Click]"] = "Pour placer une barre, selectionne la, et utilise [gauche] et [droite] pour choisir l'angle et la taille, ensuite place là avec [Clic gauche]", + ["Torn Muscle"] = "Torn Muscle", + [" to save the village."] = "de sauver le village", + ["To the caves..."] = "Aux cavernes...", + ["Toxic Team"] = "Équipe toxique", -- User_Mission_-_Diver, User_Mission_-_Spooky_Tree, User_Mission_-_Teamwork + ["TRACK COMPLETED"] = "COURSE COMPLETEE", + ["TRACK FAILED!"] = "COURSE RATEE", +-- ["training"] = "", -- portal + ["Traitors"] = "Traitors", + ["Tribe"] = "", + ["Tribe"] = "", + ["Tribe"] = "", + ["Tribe"] = "", + ["Tribe"] = "", +-- ["TrophyRace"] = "", + ["Try to protect the chief! You won't lose if he dies, but it is advised that he survives."] = "Essaie de protéger le chef ! Tu ne perdras pas s'il meurt, mais il serait avisé qu'il survive", +-- ["T_T"] = "", +-- ["Tumbling Time Extended!"] = "", + ["Turns until Sudden Death: "] = "", + [" turns until Sudden Death! Better hurry!"] = "tours avant la mort subite ! tu ferais mieux de te dépecher !", +-- ["Turn Time"] = "", + ["Two little hogs cooperating, getting past obstacles..."] = "", + ["Two little hogs cooperating, getting past obstacles..."] = "Deux petits hérissons coopérant à passer les obstacles...", + ["Uhm...I met one of them and took his weapons."] = "hum... J'ai rencontré l'un d'entre eux et j'ai pris ses armes.", + ["Uhmm...ok no."] = "Humm... ok non.", +-- ["ULTRA KILL"] = "", -- Mutant + ["Under Construction"] = "En construction", + ["Unexpected Igor"] = "", +-- ["Unit"] = "", + ["Unit 0x0007"] = "", + ["Unit 334a$7%;.*"] = "", + ["Unit 334a$7%;.*"] = "", + ["Unit 334a$7%;.*"] = "", + ["Unit 334a$7%;.*"] = "", + ["Unit 334a$7%;.*"] = "", + ["Unit 334a$7%;.*"] = "", + ["Unit 3378"] = "Unité 3378", +-- ["Unit 835"] = "", + ["United We Stand"] = "Nous restons unis", + ["Unlimited Attacks"] = "Attaques illimitées", +-- ["Unlucky Sods"] = "", -- User_Mission_-_Rope_Knock_Challenge +-- ["Unstoppable!"] = "", +-- ["Unsuspecting Louts"] = "", -- User_Mission_-_Rope_Knock_Challenge + ["[Up], [Down] to aim, [Space] to shoot!"] = "[haut], [bas] pour viser, [espace] pour tirer !", + ["Use it wisely!"] = "a utiliser intelligemment", + ["Use it with precaution!"] = "Utilise la avec prudence", +-- ["User Challenge"] = "", +-- ["Use the parachute ([Space] while in air)"] = "", -- + ["Use the parachute ([Space] while in air) to get the next crate"] = "utilisez le parachute ([Espace] en vol) pour atteindre la prochaine caisse ", + ["Use the portal gun to get to the next crate, then use the new gun to get to the final destination!|"] = "Utilise le fusil à portail pour atteindre la prochaine caisse, puis utilise le nouveau fusil pour atteindre la destination finale", + ["Use the rope to get on the head of the mole, young one!"] = "Utilise la corde pour atteindre la tête de la taupe, l'apprenti !", +-- ["Use the rope to knock your enemies to their doom."] = "", -- User_Mission_-_Rope_Knock_Challenge + ["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 !", + ["Vedgies"] = "Vedgies", + ["Vegan Jack"] = "", +-- ["Victory!"] = "", -- Basic_Training_-_Rope + ["Victory for the "] = "Victoire pour ", -- CTF_Blizzard, Capture_the_Flag + ["Violence is not the answer to your problems!"] = "La violence n'est pas la réponse à tes problèmes !", +-- ["Walls Left"] = "", -- WxW +-- ["Walls Required"] = "", -- WxW +-- ["WALL TO WALL"] = "", -- WxW +-- ["Wannabe Flyboys"] = "", -- User_Mission_-_RCPlane_Challenge +-- ["Wannabe Shoppsta"] = "", -- User_Mission_-_Rope_Knock_Challenge + ["Watch your steps, young one!"] = "Regarde ou tu marches l'apprenti !", + ["Waypoint placed."] = "Point de passage placé.", + ["Way-Points Remaining"] = "Points de passage restants", + ["Weaklings"] = "Weaklings", + ["Weaklings"] = "Weaklings", + ["We all know what happens when you get frightened..."] = "Nous savons tous ce qui arrive quand tu es effrayé", + ["Weapons Reset"] = "Armes réinitialisées", +-- ["Weapons reset."] = "", -- Highlander + ["We are indeed."] = "Nous le sommes, en effet.", + ["We can't defeat them!"] = "Nous ne pouvons pas les battres !", + ["We can't hold them up much longer!"] = "Nous ne pouvons pas les retenir plus longtemps !", + ["We can't let them take over our little island!"] = "nous ne pouvons pas les laisser prendre notre petite ile !", + ["We have no time to waste..."] = "Nous n'avons pas de temps à perdre...", ["We have nowhere else to live!"] = "Nous n'avons nul part autre ou vivre !", - ["That's not our problem!"] = "Ce n'est pas notre problème !", + ["We have to protect the village!"] = "Nous devons protéger le village !", + ["We have to unite and defeat those cylergs!"] = "nous devons nous unir et battre ces cyborgs !", + ["Welcome, Leaks A Lot!"] = "", + ["Welcome, Leaks A Lot!"] = "Bienvenue, Leaks A Lot !", +-- ["Well done."] = "", ["We'll give you a problem then!"] = "Nous allons vous donner des problèmes alors !", - ["Nicely done, meatbags!"] = "Bien joués, sac à viande !", - ["You have won the game by proving true cooperative skills!"] = "Vous avez gagné le jeu en prouvant de vraies compétantce de coopération !", - ["You have proven yourselves worthy!"] = "Vous vous êtes montrez dignes !", - ["Game? Was this a game to you?!"] = "Jeu ? Etais ce un jeu pour vous ?!", + ["We'll spare your life for now!"] = "Nous t'épargnons la vie pour le moment !", + ["Well, that was a waste of time."] = "Bien, c'était une perte de temps.", + ["Well, well! Isn't that the cutest thing you've ever seen?"] = "", + ["Well, well! Isn't that the cutest thing you've ever seen?"] = "Bien, Bien ! N'est pas la chose la plus mignonne que tu aies jamais vu ? ", ["Well, yes. This was a cyborg television show."] = "Bien, oui. c'est une émission de télévision cyborg.", - ["It is called 'Hogs of Steel'."] = "C'est appelé 'hérissions d'acier' .", - ["Are you saying that many of us have died for your entertainment?"] = "Etes vous en train de dire que beaucoup d'entre nous sont morts pour votre divertissement ? ", - ["Our tribe, our beautiful island!"] = "Notre tibue, notre belle ile !", - ["All gone...everything!"] = "évaporé...plus rien !", - ["But the ones alive are stronger in their heart!"] = "Mais les survivants sont plus forts dans leur coeur !", - ["Just kidding, none of you have died!"] = "Je rigole, aucun d'entre vous n'est mort !", - ["I mean, none of you ceased to live."] = "Je veux dire, aucun d'entre vous n'a cessé de vivre", - ["You'll see what I mean!"] = "Vous allez comprendre ce que je veux dire !", - ["They are all waiting back in the village, haha."] = "Ils attendent tous au village, haha.", - ["You are playing with our lives here!"] = "Vous jouez avec nos vies !", - ["Do you think you're some kind of god?"] = "Vous vous prenez pour un genre de dieu ?", - ["Interesting idea, haha!"] = "Idee interessante, haha !", + ["We made sure noone followed us!"] = "Nous nous sommes assurés que personne ne nous as suivis !", + ["We need to move!"] = "Nous devons partir !", + ["We need to prevent their arrival!"] = "Nous devons prévoir leur arrivée !", + ["We need to warn the village."] = "Nous devons avertir le village", + ["We should head back to the village now."] = "Nous devrions retourner au village maintenant.", + ["We were trying to save her and we got lost."] = "On essayait de la sauver et on s'est perdu.", + ["We won't let you hurt her!"] = "", + ["We won't let you hurt her!"] = "Nous ne te laisserons pas la blesser !", + ["What?! A cannibal? Here? There is no time to waste! Come, you are prepared."] = "Quoi ?! Un cannibale ? Ici ? Il n'y a pas de temps à perdre ! Viens, tu es préparé.", ["What a douche!"] = "Quelle douche !", - ["The Enemy Of My Enemy"] = "Les ennemis de mes ennemis", - ["The Union"] = "L'union", - ["Defeat the cyborgs!"] = "Bats les cyborgs !", - ["Hmmm...it's a draw. How unfortunate!"] = "Hmmm... C'est un dessin. Pas de chance !", - ["Yay, we won!"] = "Ouais, on a gagné !", - ["Nice work!"] = "Beau travail !", + ["What am I gonna...eat, yo?"] = "", + ["What are you doing at a distance so great, young one?"] = "Qu'est ce que tu fais si loin, l'apprenti ? ", + ["What are you doing? Let her go!"] = "", + ["What are you doing? Let her go!"] = "Que fais tu ? Laisses la partir ! ", + ["What a ride!"] = "Quel voyage !", + ["What a strange cave!"] = "quelle etrange caverne", + ["What a strange feeling!"] = "", + ["What a strange feeling!"] = "Quel étrange sentiment !", + ["What do my faulty eyes observe? A spy!"] = "Que voient mes vieux yeux ? Un espion !", + --["Whatever floats your boat..."] = "Comme tu veux...", +-- [" What !! For all of this struggle i just win some ... TIME o0"] = "", -- portal +-- ["What has "] = "", -- A_Classic_Fairytale:backstab + ["What? Here? How did they find us?!"] = "Quoi ? ici ? Comment nous ont ils trouvés ?", + ["What is this place?"] = "quel est cet endroit ,", + ["What is this place?"] = "Quel est cet endroit ? ", + ["What shall we do with the traitor?"] = "", + ["What shall we do with the traitor?"] = "Que devons nous faire avec le traître ? ", + ["WHAT?! You're the ones attacking us!"] = "Quoi ?! C'est vous qui nous attaquez !", + ["When I find it..."] = "Quand je vais le trouver...", + ["When?"] = "Quand ?", + ["Where are all these crates coming from?!"] = "D'où viennent toutes ces caisses ?!", + ["Where are they?!"] = "Où sont ils ?!", + ["Where did that alien run?"] = "Où est parti cet alien ?", + ["Where did you get the exploding apples and the magic bow that shoots many arrows?"] = "Ou as tu obtenu les pommes explosives et l'arc magique qui tire tant de flèches ?", + ["Where did you get the exploding apples?"] = "Ou as tu obtenu les pommes explosives ?", + ["Where did you get the magic bow that shoots many arrows?"] = "Ou as tu obtenu l'arc magique qui tire tant de flèches ?", + ["Where did you get the weapons in the forest, Dense Cloud?"] = "Où as tu trouvé les armes dans la foret, Dense Cloud ?", + ["Where do you get that?!"] = "D'ou ça vous vient ?!!", + ["Where have you been?!"] = "Où étais tu ?!", + ["Where have you been?"] = "Où étais tu ? ", +-- ["? Why?"] = "", -- A_Classic_Fairytale:backstab +-- ["Why "] = "", -- A_Classic_Fairytale:backstab +-- ["! Why?!"] = "", -- A_Classic_Fairytale:backstab, A_Classic_Fairytale:united + ["Why are you doing this?"] = "", + ["Why are you doing this?"] = "Pourquoi fais tu ça ? ", + ["Why are you helping us, uhm...?"] = "Pourquoi nous aidez vous, hum ...?", + ["Why can't he just let her go?!"] = "Pourquoi ne peut-il pas juste la laisser partit ?!", + ["Why do men keep hurting me?"] = "Pourquoi les hommes continuent de me blesser ?", + ["Why do you not like me?"] = "Pourquoi ne m'aimes tu pas ?", + ["Why do you want to take over our island?"] = "Pourquoi voulez vous notre ile ?", + ["Why me?!"] = "Pourquoi moi ?§", + ["Why would they do this?"] = "Pourquoi feraient-ils ça ?", +-- ["- Will Get 1-3 random weapons"] = "", -- Continental_supplies +-- ["- Will refresh Parachute each turn."] = "", -- Continental_supplies +-- ["- Will refresh portalgun each turn."] = "", -- Continental_supplies +-- ["Will this ever end?"] = "", +-- ["WINNER IS "] = "", -- Mutant + ["WINNING TIME: "] = "Temps gagnant : ", + ["Wise Oak"] = "", + ["Wise Oak"] = "", + ["Wise Oak"] = "", + ["Wise Oak"] = "", + ["Wise Oak"] = "", + ["Wise Oak"] = "Wise Oak", + ["With Dense Cloud on the land of shadows, I'm the village's only hope..."] = "Avec Dense Cloud dans le territoire des ombres, je suis le seul espoir du village...", + ["With the rest of the tribe gone, it was up to "] = "Avec le reste de la tribue partie, il était temps de ", + ["Worry not, for it is a peaceful animal! There is no reason to be afraid..."] = "Pas d'inquiétude, c'est un animal pacifique ! il n'y a pas de raison d'avoir peur...", + ["Wow, what a dream!"] = "Wow, quel rêve !", + ["Y3K1337"] = "Y3K1337", + ["Y3K1337"] = "Y3K1337", ["Yay, we won!"] = "", - ["Nice work!"] = "", - ["Natives"] = "", - ["Cannibals"] = "", - ["011101001"] = "", - ["011101001"] = "", - ["011101001"] = "", - ["Unit 334a$7%;.*"] = "", - ["Natives"] = "", - ["Fell From Heaven"] = "", - ["Cannibals"] = "", - ["Hedge-cogs"] = "", - ["Leader"] = "", - ["Dense Cloud"] = "", - ["Fiery Water"] = "", - ["Fell From Heaven"] = "", - ["Nancy Screw"] = "", - ["Natives"] = "", - ["Cannibals"] = "", - ["Hedge-cogs"] = "", - ["Cannibals"] = "", - ["Your deaths will be avenged, cannibals!"] = "Vos morts seront vengées, cannibales !", - ["Natives"] = "", + ["Yay, we won!"] = "Ouais, on a gagné !", + ["Y Chwiliad"] = "", + ["Yeah...I think it's a 'he', lol."] = "Ouais... Je crois que c'est un 'homme', lol.", + ["Yeah, sure! I died. Hillarious!"] = "Ouais, sûr ! il est mort. Hillarant !", + ["Yeah, take that!"] = "Ouais, prends ça !", + ["Yeah? Watcha gonna do? Cry?"] = "", + ["Yeah? Watcha gonna do? Cry?"] = "Ouais? Qu'est ce que tu vas faire ? Pleurer ? ", + ["Yes!"] = "Oui !", + ["Yes, yeees! You are now ready to enter the real world!"] = "Oui, Ouiii ! Maintenant tu es prêt à entrer dans le monde réel !", + ["Yo, dude, we're here, too!"] = "Yo mec, on est là aussi !", + ["You are given the chance to turn your life around..."] = "Tu as une chance de voir ta vie changer de cap", + ["You are playing with our lives here!"] = "Vous jouez avec nos vies !", +-- ["! You bastards!"] = "", -- A_Classic_Fairytale:backstab, A_Classic_Fairytale:united + ["You bear impressive skills, "] = "tu as des compétences impressionantes, ", +-- ["You can't fire a portal on the blue surface"] = "", -- portal + ["You couldn't possibly believe that after refusing my offer I'd just let you go!"] = "Tu ne pouvais pas croire qu'après avoir refusé mon offre, je vous laisserai partir comme ça !", +-- ["You'd almost swear the water was rising!"] = "", + ["You'd better watch your steps..."] = "tu ferais mieux de regarder où tu marches....", +-- ["You did not make it in time, try again!"] = "", -- Basic_Training_-_Rope +-- ["You have 7 turns until the next wave arrives.|Make sure the arriving cannibals are greeted appropriately!|If the hog dies, the cause is lost.|Hint: you might want to use some mines..."] = "", -- A_Classic_Fairytale:backstab + ["You have 7 turns until the next wave arrives.|Make sure the arriving cannibals are greeted appropriately!|If the hog dies, the cause is lost.| Hint: you might want to use some mines..."] = "Tu as 7 tours avant la prochaine vague. |Assures toi que les prochains arrivant soient bien accueillis ! |Si le hérissons meurt, la cause est perdue. | Conseil : Tu pourrais vouloir utiliser des mines ...", + ["You have been giving us out to the enemy, haven't you!"] = "Tu nous as vendu aux ennemis, n'est ce pas ?!", +-- ["You have been respawned, at your last checkpoint!"] = "", -- Basic_Training_-_Rope +-- ["You have been respawned, be more carefull next time!"] = "", -- Basic_Training_-_Rope + ["You have chosen the perfect moment to leave."] = "Tu as choisis le moment parfait pour partit.", + ["You have failed to complete your task, young one!"] = "Tu as échoué à compléter ta tâche, disciple !", + ["You have failed to save the tribe!"] = "Tu n'as pas su sauvé la tribue !", + ["You have finally figured it out!"] = "Tu t'en es finallement rendu compte !", + ["You have kidnapped our whole tribe!"] = "Vous avez kidnappé notre tribue entière !", + ["You have killed an innocent hedgehog!"] = "Tu as tué un innocent !", + ["You have proven yourself worthy to see our most ancient secret!"] = "Tu as prouvé que tu étais digne de voir notre plus ancien secret !", + ["You have proven yourselves worthy!"] = "Vous vous êtes montrez dignes !", + ["You have SCORED!!"] = "Vous avez marqué !", +-- ["You have to destroy 12 targets in 180 seconds"] = "", -- Basic_Training_-_Cluster_Bomb + ["You have "] = "Tu as", + ["You have won the game by proving true cooperative skills!"] = "Vous avez gagné le jeu en prouvant de vraies compétantce de coopération !", + ["You just appeared out of thin air!"] = "tu es apparu comme par magie ! ", + ["You just committed suicide..."] = "Tu viens de signer ton arrêt de mort...", + ["You killed my father, you monster!"] = "Tu as tué mon père, monstre !", + ["You know...taking a stroll."] = "Vous savez... promenade.", + ["You know what? I don't even regret anything!"] = "Tu sais quoi ? je ne regrette rien !", + ["You'll see what I mean!"] = "Vous allez comprendre ce que je veux dire !", +-- ["You may only attack from a rope!"] = "", -- WxW + ["You meatbags are pretty slow, you know!"] = "Vous les sacs à viande êtes plutot lent vous savez !", + ["You might want to find a way to instantly kill arriving cannibals!"] = "tu aimerais surement trouver un moyen de tuer instantanément les cannibales qui arrivent !", + ["Young one, you are telling us that they can instantly change location without a shaman?"] = "L'apprenti, tu es en train de nous dire qu'ils peuvent changer de place sans shaman ?", + ["You probably know what to do next..."] = "Tu sais probablement ce que tu dois faire ensuite....", ["Your deaths will be avenged, cannibals!"] = "", - --- a classic fairytale: epilogue - ["Leaks A Lot"] = "Leaks A Lot", - ["Dense Cloud"] = "Dense Cloud", - ["Fiery Water"] = "Fiery Water", - ["Raging Buffalo"] = "Raging Buffalo", - ["Righteous Beard"] = "Righteous Beard", - ["Fell From Grace"] = "Fell From Grace", - ["Wise Oak"] = "Wise Oak", - ["Ramon"] = "Ramon", - ["Spiky Cheese"] = "Spiky Cheese", - ["Fell From Heaven"] = "Fell From Heaven", - ["Brainiac"] = "Brainiac", - ["Corpse Thrower"] = "Corpse Thrower", - ["Brutal Lily"] = "Brutal Lily", - ["Ear Sniffer"] = "Ear Sniffer", - ["Hannibal"] = "Hannibal", - ["Natives"] = "Natives", - ["More Natives"] = "More Natives", - ["Cannibals"] = "Cannibals", - ["Traitors"] = "Traitors", - - - -} \ No newline at end of file + ["Your deaths will be avenged, cannibals!"] = "Vos morts seront vengées, cannibales !", + ["Your death will not be in vain, Dense Cloud!"] = "Tu ne seras pas mort en vain, Dense Cloud !", + ["You're...alive!? But we saw you die!"] = "Tu es...vivant ? Mais nous t'avons vu mourrir !", + ["You're a pathetic liar!"] = "Tu es un menteur pathétique", + ["You're funny!"] = "Tu es drôle !", +-- ["You're getting pretty good! |Tip: When you shorten you rope you move faster! |and when you lengthen it you move slower"] = "", -- Basic_Training_-_Rope + ["You're pathetic! You are not worthy of my attention..."] = "Tu es pathétique ! Tu n'es pas digne de mon attention... ", + ["You're probably wondering why I bought you back..."] = "Tu te demandes probablement pourquoi je t'ai ramené...", + ["You're terrorizing the forest...We won't catch anything like this!"] = "Tu terrorrises la fôret... Nous n'attraperons rien comme ça !", + ["Your hogs must survive!"] = "Vos hérissons doivent survivre !", + ["Your movement skills will be evaluated now."] = "Tes compétences de mouvement vont maintenant être évaluées .", +-- ["You saved"] = "", + ["You've been assaulting us, we have been just defending ourselves!"] = "vous nous avez assiégé, nous nous sommes justes défendus !", + ["You've failed. Try again."] = "Vous avez échoué. Essayez encore.", + ["You've reached the goal!| |Time: "] = "Vous avez atteins le but !| |Temps : ", + ["You will be avenged!"] = "Tu seras vengé !", + ["You won't believe what happened to me!"] = "Vous ne croirez pas ce qui m'est arrivé !", + ["Yuck! I bet they'll keep worshipping her even after I save the village!"] = "beurck ! je parie qu'ils continueront à l'adorer meme après que j'ai sauvé le village !", +-- ["Zealandia"] = "", -- Continental_supplies +-- ["'Zooka Team"] = "", + ["Zork"] = "", + ["Zork"] = "", + ["Zork"] = "", + } diff -r 3331b30e4ef1 -r 88fde28bbda6 share/hedgewars/Data/Locale/hedgewars_ar.ts --- a/share/hedgewars/Data/Locale/hedgewars_ar.ts Sun Oct 21 01:28:33 2012 +0400 +++ b/share/hedgewars/Data/Locale/hedgewars_ar.ts Sat Nov 03 00:34:35 2012 +0400 @@ -20,21 +20,6 @@ - DrawMapWidget - - File error - - - - Cannot open file '%1' for writing - - - - Cannot read file '%1' - - - - FreqSpinBox Never @@ -56,14 +41,6 @@ تغيير سلاح - Error - خطأ - - - Illegal ammo scheme - نظام اسلحة غير صحيح - - Edit schemes Edit schemes @@ -79,29 +56,13 @@ HWAskQuitDialog - Do yot really want to quit? + Do you really want to quit? 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 تم حذÙØ© من قائمة الاصدقاء - - %1 has been removed from your ignore list @@ -149,30 +110,10 @@ HWForm - new - جديد - - - Error - خطا - - - OK - OK - - - Unable to start the server - لم اتمكن من بدا الخادم - - Cannot save record to file %1 لم اتمكن من حقظ المل٠%1 - Please select record from the list above - اختار من القائمة - - DefaultTeam @@ -199,10 +140,6 @@ - Password - كلمة السر - - Your nickname %1 is registered on Hedgewars.org Please provide your password below @@ -218,16 +155,14 @@ اسم اللاعب - Some one already uses - your nickname %1 -on the server. + No nickname supplied. + + + + Someone already uses your nickname %1 on the server. Please pick another nickname: - - No nickname supplied. - - HWGame @@ -353,20 +288,6 @@ تم طردك - Password - كلمة السر - - - Your nickname %1 is -registered on Hedgewars.org -Please provide your password -or pick another nickname: - اسمك %1 -سجلت على Hedgewars.org -اعطي كلمة السر -او اختر اسم ثاني - - %1 *** %2 has joined the room %1 *** %2 انضم للغرÙØ© @@ -383,10 +304,6 @@ %1 *** %2 خرج - Nickname - اسم اللاعب - - User quit @@ -447,14 +364,6 @@ PageAdmin - Server message: - Server message: - - - Set message - Set message - - Clear Accounts Cache Clear Accounts Cache @@ -489,10 +398,6 @@ Connecting... جاري الاتصال - - Cancel - الغاء - PageDrawMap @@ -547,20 +452,6 @@ PageGameStats - <p>The best shot award was won by <b>%1</b> with <b>%2</b> pts.</p> - <p>اÙضل ضربة كانت من قبل <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>اÙضل لاعب هو <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>المجموع<b>%1</b> من اللاعبين قضوا ÙÙŠ اللعبة.</p> - - - Details @@ -636,14 +527,6 @@ 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 @@ -941,35 +824,12 @@ - PageNet - - Error - خطا - - - Please select server from the list above - اختار من القائمة - - - PageNetGame Control تحكم - Error - - - - Please enter room name - ادخل رقم الغرقة - - - OK - OK - - DLC @@ -1012,18 +872,6 @@ حذ٠Ùريق - 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. @@ -1099,14 +947,6 @@ PagePlayDemo - Error - خطأ - - - OK - OK - - Rename dialog تغيير الشباك @@ -1114,18 +954,6 @@ Enter new file name: ادخل اسم المل٠- - Cannot rename to - لا استطيع التغيير الى - - - Cannot delete file - لا استطيع حذ٠المل٠- - - Please select record from the list - اختر المقطع من القائمة - PageRoomsList @@ -1138,18 +966,6 @@ انضم - Refresh - تحديث - - - Error - خطأ - - - OK - OK - - Admin features الادارة @@ -1158,67 +974,6 @@ رقم الغرقة - This game is in lobby. -You may join and start playing once the game starts. - هذه غرقة اللعب -يمكنك الانضمام Ùˆ بدء اللعب عند الاتضمام الى غرÙØ© -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 مرتبطون بالغرقة - - - - - - There are %1 teams participating in this room. - - يوجد %1 Ùريق ÙÙŠ الغرÙØ© - - - - - - Please enter room name - ادخل رقم الغرقة - - - Please select room from the list - اختر الغرقة من القائمة - - - Random Maze - متاهة عشوائية - - Rules: @@ -1234,15 +989,6 @@ Clear - - Warning - - - - The game you are trying to join has started. -Do you still want to join the room? - - %1 players online @@ -1266,10 +1012,6 @@ الارض لا يمكن ان تدمر - Add an indestructable border around the terrain - اض٠اطار لا يمكن تدميره - - Lower gravity جاذبية قليلة @@ -1282,10 +1024,6 @@ كل اللاعبين لهم حقل قوى - Enable random mines - Ùعل الالغام العشوائية - - Gain 80% of the damage you do back in health احصل على 80% من التدمير ÙÙŠ صحتك @@ -1404,26 +1142,6 @@ PageSinglePlayer - Simple Game (a quick game against the computer, settings are chosen for you) - لعية بسيطة ضد الحاسوب - - - 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) - تحميل - - Simple Game @@ -1517,21 +1235,6 @@ - Are you sure? - - - - Do you really want do remove %1? - - - - Do you really want do remove %1 file(s)? - - - - - - encoding @@ -1539,10 +1242,6 @@ uploading - - Do you really want do cancel uploading %1? - - QAction @@ -1630,10 +1329,6 @@ اض٠التاريخ Ùˆ اليوم الى المل٠- Reduced quality - قلل الجودة - - Show ammo menu tooltips اضهر قوائم للعتاد @@ -1713,10 +1408,6 @@ - Default - التلقائي - - hand drawn map... @@ -1804,10 +1495,6 @@ Ùرق - Weapons - اسلحة - - Audio/Graphic options قوائم الصوتيات Ùˆ المرئيات @@ -1879,10 +1566,6 @@ نسخة - This program is distributed under the GNU General Public License - This program is distributed under the GNU General Public License - - Developers: المطورون @@ -1915,10 +1598,6 @@ Port: - Net nick - اسم اللاعب - - Resolution الوضوح @@ -1995,10 +1674,6 @@ محلي - Restart game to apply - اعد تشغيل اللعبة لتÙعيل التغيير - - Explosives متÙجرات @@ -2047,10 +1722,6 @@ - Password - كلمة السر - - % Get Away Time @@ -2061,7 +1732,7 @@ There are videos that are currently being processed. Exiting now will abort them. -Do yot really want to quit? +Do you really want to quit? @@ -2146,10 +1817,6 @@ QMessageBox - Network - شبكة - - Connection to server is lost ضاع الاتصال للخادم @@ -2158,90 +1825,14 @@ خطأ - Failed to open data directory: -%1 -Please check your installation - Failed to open data directory: - %1 -Please check your installation - - - Weapons - اسلحة - - - Can not edit default weapon set - Can not edit default weapon set - - - Can not delete default weapon set - Can not delete default weapon set - - - Really delete this weapon set? - هل تريد حذ٠قائمة الاسلحة - - - All file associations have been set. - - - File association failed. - Can not overwrite default weapon set '%1'! - - - - Teams - Ùرق - - - Really delete this team? - - - - Schemes - - - - Can not delete default scheme '%1'! - - - - Really delete this game scheme? - - - - Can not delete default weapon set '%1'! - - - - Fields required - - - Please fill out all fields - Success - - - - Successfully posted the issue on code.google.com! - - - - Error during authentication with www.google.com - - - - Error creating the issue - - - Error while authenticating at google.com: @@ -2255,22 +1846,201 @@ + + Teams - Are you sure? + + + + Do you really want to delete the team '%1'? + + + + Cannot delete default scheme '%1'! + + + + Please select a record from the list + + + + Unable to start server + + + + Hedgewars - Error + + + + Hedgewars - Success + + + + All file associations have been set + + + + Successfully posted the issue on hedgewars.googlecode.com + + + + Error during authentication at google.com + + + + Error reporting the issue, please try again later (or visit hedgewars.googlecode.com directly) + + + + Main - Error + + + + Cannot create directory %1 + Cannot create directory %1 + + + Failed to open data directory: +%1 + +Please check your installation! + + + + TCP - Error + + + + Unable to start the server: %1. + Unable to start the server: %1. + + + Unable to run engine at + + + + Error code: %1 + + + + Video upload - Error + + + + Netgame - Error + + + + Please select a server from the list + + + + Please enter room name + ادخل رقم الغرقة + + + Record Play - Error + + + + Please select record from the list + اختر المقطع من القائمة + + + Cannot rename to + + + + Cannot delete file + + + + Room Name - Error + + + + Please select room from the list + اختر الغرقة من القائمة + + + Room Name - Are you sure? + + + + The game you are trying to join has started. +Do you still want to join the room? + + + + Schemes - Warning + + + + Schemes - Are you sure? + + + + Do you really want to delete the game scheme '%1'? + + + + Videos - Are you sure? + + + + Do you really want to delete the video '%1'? + + + + Do you really want to remove %1 file(s)? + + + + + + + Do you really want to cancel uploading %1? + + + + File error + + + + Cannot open '%1' for writing + + + + Cannot open '%1' for reading + + + + Cannot use the ammo '%1'! + + + + Weapons - Warning + + + + Cannot overwrite default weapon set '%1'! + + + + Cannot delete default weapon set '%1'! + + + + Weapons - Are you sure? + + + + Do you really want to delete the weapon set '%1'? + + QObject - Error - خطأ - - - Cannot create directory %1 - Cannot create directory %1 - - - OK - OK - - Nickname اسم اللاعب @@ -2379,37 +2149,6 @@ - QTableWidget - - Room Name - اسم الغرقة - - - C - C - - - T - T - - - Owner - المالك - - - Map - خارطة - - - Rules - قوانين - - - Weapons - اسلحة - - - RoomsListModel In progress @@ -2484,21 +2223,6 @@ - TCPBase - - Error - خطأ - - - Unable to start the server: %1. - Unable to start the server: %1. - - - Unable to run engine: %1 ( - Unable to run engine: %1 ( - - - ToggleButtonWidget Vampirism @@ -2541,10 +2265,6 @@ غير قابل للتدمير - Add Mines - اض٠الغام - - Random Order توزيع عشوائي diff -r 3331b30e4ef1 -r 88fde28bbda6 share/hedgewars/Data/Locale/hedgewars_bg.ts --- a/share/hedgewars/Data/Locale/hedgewars_bg.ts Sun Oct 21 01:28:33 2012 +0400 +++ b/share/hedgewars/Data/Locale/hedgewars_bg.ts Sat Nov 03 00:34:35 2012 +0400 @@ -20,21 +20,6 @@ - DrawMapWidget - - File error - - - - Cannot open file '%1' for writing - - - - Cannot read file '%1' - - - - FreqSpinBox Never @@ -59,14 +44,6 @@ Редактиране на оръжиÑта - Error - Грешка - - - Illegal ammo scheme - Ðевалидна оръжейна Ñхема - - When this option is enabled selecting a game scheme will auto-select a weapon Когато тази наÑтройка е включена, при избирането на игрова Ñхема автоматично ще Ñе избере оръжие @@ -78,29 +55,13 @@ HWAskQuitDialog - Do yot really want to quit? + Do you really want to quit? 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 беше добавен към ÑпиÑъка Ñ Ð¿Ñ€Ð¸Ñтели - - %1 has been removed from your ignore list @@ -148,30 +109,10 @@ HWForm - Error - Грешка - - - OK - Добре - - Cannot save record to file %1 Грешка при Ð·Ð°Ð¿Ð¸Ñ Ð²ÑŠÐ² файл %1 - Unable to start the server - Грешка при Ñтартиране на Ñървъра - - - new - Ðов отбор - - - Please select record from the list above - Изберете Ð·Ð°Ð¿Ð¸Ñ Ð¾Ñ‚ ÑпиÑъка - - DefaultTeam СтандартенОтбор @@ -198,10 +139,6 @@ - Password - Парола - - Your nickname %1 is registered on Hedgewars.org Please provide your password below @@ -220,16 +157,14 @@ ПрÑкор - Some one already uses - your nickname %1 -on the server. + No nickname supplied. + + + + Someone already uses your nickname %1 on the server. Please pick another nickname: - - No nickname supplied. - - HWGame @@ -347,10 +282,6 @@ Вие бÑхте изхвърлен - Password - Парола - - Quit reason: Причина за напуÑкане: @@ -375,20 +306,6 @@ %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 -ÐœÐ¾Ð»Ñ Ð²ÑŠÐ´ÐµÑ‚Ðµ паролата Ñи по-долу -или изберете друг прÑкор в наÑтройките на играта: - - - Nickname - ПрÑкор - - User quit @@ -483,10 +400,6 @@ Connecting... Свързване... - - Cancel - Отказ - PageDrawMap @@ -511,10 +424,6 @@ Зареждане на начертана карта - Drawn Maps (*.hwmap);;All files (*.*) - Ðачертани карти (*.hwmap);;Ð’Ñички файлове (*.*) - - Save drawn map Запазване на начертана карта @@ -545,10 +454,6 @@ PageGameStats - <p>The best shot award was won by <b>%1</b> with <b>%2</b> pts.</p> - <p>Ðаграда за най-добър изÑтрел е Ñпечелена от <b>%1</b> Ñ <b>%2</b> точки.</p> - - Details ПодробноÑти @@ -624,14 +529,6 @@ 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 @@ -929,35 +826,12 @@ - PageNet - - Error - Грешка - - - Please select server from the list above - Изберете Ñървър от ÑпиÑъка - - - PageNetGame Control Контрол - Error - Грешка - - - Please enter room name - ÐœÐ¾Ð»Ñ Ð²ÑŠÐ²ÐµÐ´ÐµÑ‚Ðµ име на ÑÑ‚Ð°Ñ - - - OK - - - DLC @@ -1075,14 +949,6 @@ PagePlayDemo - Error - Грешка - - - OK - ОК - - Rename dialog Преименуване @@ -1090,18 +956,6 @@ Enter new file name: Въведете ново име на файл: - - Cannot rename to - Ðе може да Ñе преименува в - - - Cannot delete file - Файлът не може да Ñе изтрие - - - Please select record from the list - Изберете Ð·Ð°Ð¿Ð¸Ñ Ð¾Ñ‚ ÑпиÑъка - PageRoomsList @@ -1114,74 +968,14 @@ ПриÑъединÑване - Refresh - ОпреÑнÑване - - Admin features ÐдминиÑтративни функционалноÑти - Error - Грешка - - - OK - ОК - - 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. - Схемата на оръжиÑта Ð¾Ð¿Ñ€ÐµÐ´ÐµÐ»Ñ Ð½Ð°Ð»Ð¸Ñ‡Ð½Ð¸Ñ‚Ðµ Ð¾Ñ€ÑŠÐ¶Ð¸Ñ Ð¸ количеÑтвото боеприпаÑи за Ñ‚ÑÑ…. - - - Please enter room name - ÐœÐ¾Ð»Ñ Ð²ÑŠÐ²ÐµÐ´ÐµÑ‚Ðµ име на ÑÑ‚Ð°Ñ - - - Please select room from the list - ÐœÐ¾Ð»Ñ Ð¸Ð·Ð±ÐµÑ€ÐµÑ‚Ðµ ÑÑ‚Ð°Ñ Ð¾Ñ‚ ÑпиÑъка - - - Random Maze - Случан лабиринт - - - State: - СъÑтоÑние: - - Rules: Правила: @@ -1197,16 +991,6 @@ Clear ИзчиÑтване - - Warning - Внимание - - - The game you are trying to join has started. -Do you still want to join the room? - Играта, към коÑто Ñе опитвате да Ñе приÑъедините вече е започнала. -Ð’Ñе още ли желаете да Ñе приÑъедините към ÑтаÑта? - %1 players online @@ -1360,30 +1144,6 @@ PageSinglePlayer - Simple Game (a quick game against the computer, settings are chosen for you) - Солова игра (бърза игра Ñрещу компютър Ñ Ð³Ð¾Ñ‚Ð¾Ð²Ð¸ наÑтройки) - - - 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 - Режим ÐºÐ°Ð¼Ð¿Ð°Ð½Ð¸Ñ (...). Ð’ ПРОЦЕС ÐРРÐЗРÐБОТКР- - Simple Game @@ -1477,21 +1237,6 @@ - Are you sure? - - - - Do you really want do remove %1? - - - - Do you really want do remove %1 file(s)? - - - - - - encoding @@ -1499,10 +1244,6 @@ uploading - - Do you really want do cancel uploading %1? - - QAction @@ -1669,10 +1410,6 @@ Ð’ Ð¿Ñ€Ð¾Ð³Ñ€ÐµÑ - Default - По подразбиране - - hand drawn map... Ръчно нариÑувана карта... @@ -1780,10 +1517,6 @@ Мрежова игра - Weapons - ÐžÑ€ÑŠÐ¶Ð¸Ñ - - Team Settings ÐаÑтройки на отборите @@ -1859,14 +1592,6 @@ Име на Ñхемата: - Net nick - ПрÑкор - - - This program is distributed under the GNU General Public License - Тази програма Ñе разпроÑтранÑва под GNU (the GNU General Public License) лиценз - - Resolution Разделителна ÑпоÑобноÑÑ‚ @@ -1951,10 +1676,6 @@ Локал - Restart game to apply - РеÑтартирайте играта за да влезе в Ñила - - Explosives ЕкÑплозиви @@ -1991,10 +1712,6 @@ % Дължина на въжето - Gameplay - Геймплей - - Stereo rendering Стерео режим @@ -2007,10 +1724,6 @@ - Password - Парола - - % Get Away Time @@ -2021,7 +1734,7 @@ There are videos that are currently being processed. Exiting now will abort them. -Do yot really want to quit? +Do you really want to quit? @@ -2110,98 +1823,18 @@ Грешка - Failed to open data directory: -%1 -Please check your installation - Ðе може да Ñе отвори папката Ñ Ð´Ð°Ð½Ð½Ð¸Ñ‚Ðµ: -%1 -Проверете инÑталациÑта Ñи - - - Network - Мрежа - - Connection to server is lost Загубена е връзката ÑÑŠÑ Ñървъра - Weapons - ÐžÑ€ÑŠÐ¶Ð¸Ñ - - - Can not delete default weapon set - Ðе могат да Ñе изтриÑÑ‚ оръжиÑта по подразбиране - - - Really delete this weapon set? - Да Ñе изтриÑÑ‚ ли тези оръжиÑ? - - - Can not edit default weapon set - Ðе може да Ñе редактират оръжиÑта по подразбиране - - - Can not overwrite default weapon set '%1'! - Ðе моге да Ñе презапише ÑÑ‚Ð°Ð½Ð´Ð°Ñ€Ñ‚Ð½Ð¸Ñ ÐºÐ¾Ð¼Ð¿Ð»ÐµÐºÑ‚ Ñ Ð¾Ñ€ÑŠÐ¶Ð¸Ñ '%1'! - - - All file associations have been set. - Ð’Ñички файлови аÑоциации Ñа зададени. - - File association failed. Файловата аÑÐ¾Ñ†Ð¸Ð°Ñ†Ð¸Ñ Ñе провали. - Teams - Отбори - - - Really delete this team? - ÐаиÑтина ли да бъде изтрит този отбор? - - - Schemes - Схеми - - - Can not delete default scheme '%1'! - Стандартната Ñхема '%1' не може да бъде изтрита! - - - Really delete this game scheme? - ÐаиÑтина ли да бъде изтрите тази игрова Ñхема? - - - Can not delete default weapon set '%1'! - Ðе моге да Ñе изтрие ÑÑ‚Ð°Ð½Ð´Ð°Ñ€Ñ‚Ð½Ð¸Ñ ÐºÐ¾Ð¼Ð¿Ð»ÐµÐºÑ‚ Ñ Ð¾Ñ€ÑŠÐ¶Ð¸Ñ '%1'! - - - Fields required - - - Please fill out all fields - Success - - - - Successfully posted the issue on code.google.com! - - - - Error during authentication with www.google.com - - - - Error creating the issue - - - Error while authenticating at google.com: @@ -2215,22 +1848,202 @@ + + Teams - Are you sure? + + + + Do you really want to delete the team '%1'? + + + + Cannot delete default scheme '%1'! + + + + Please select a record from the list + + + + Unable to start server + + + + Hedgewars - Error + + + + Hedgewars - Success + + + + All file associations have been set + + + + Successfully posted the issue on hedgewars.googlecode.com + + + + Error during authentication at google.com + + + + Error reporting the issue, please try again later (or visit hedgewars.googlecode.com directly) + + + + Main - Error + + + + Cannot create directory %1 + Ðе може да Ñе Ñъздаде папка %1 + + + Failed to open data directory: +%1 + +Please check your installation! + + + + TCP - Error + + + + Unable to start the server: %1. + Грешка при Ñтартиране на Ñървъра: %1. + + + Unable to run engine at + + + + Error code: %1 + + + + Video upload - Error + + + + Netgame - Error + + + + Please select a server from the list + + + + Please enter room name + ÐœÐ¾Ð»Ñ Ð²ÑŠÐ²ÐµÐ´ÐµÑ‚Ðµ име на ÑÑ‚Ð°Ñ + + + Record Play - Error + + + + Please select record from the list + Изберете Ð·Ð°Ð¿Ð¸Ñ Ð¾Ñ‚ ÑпиÑъка + + + Cannot rename to + + + + Cannot delete file + + + + Room Name - Error + + + + Please select room from the list + ÐœÐ¾Ð»Ñ Ð¸Ð·Ð±ÐµÑ€ÐµÑ‚Ðµ ÑÑ‚Ð°Ñ Ð¾Ñ‚ ÑпиÑъка + + + Room Name - Are you sure? + + + + The game you are trying to join has started. +Do you still want to join the room? + Играта, към коÑто Ñе опитвате да Ñе приÑъедините вече е започнала. +Ð’Ñе още ли желаете да Ñе приÑъедините към ÑтаÑта? + + + Schemes - Warning + + + + Schemes - Are you sure? + + + + Do you really want to delete the game scheme '%1'? + + + + Videos - Are you sure? + + + + Do you really want to delete the video '%1'? + + + + Do you really want to remove %1 file(s)? + + + + + + + Do you really want to cancel uploading %1? + + + + File error + + + + Cannot open '%1' for writing + + + + Cannot open '%1' for reading + + + + Cannot use the ammo '%1'! + + + + Weapons - Warning + + + + Cannot overwrite default weapon set '%1'! + + + + Cannot delete default weapon set '%1'! + + + + Weapons - Are you sure? + + + + Do you really want to delete the weapon set '%1'? + + QObject - Error - Грешка - - - Cannot create directory %1 - Ðе може да Ñе Ñъздаде папка %1 - - - OK - ОК - - Nickname ПрÑкор @@ -2339,37 +2152,6 @@ - QTableWidget - - Room Name - Име на ÑтаÑта - - - C - C - - - T - T - - - Owner - Притежател - - - Map - Карта - - - Rules - Правила - - - Weapons - ÐžÑ€ÑŠÐ¶Ð¸Ñ - - - RoomsListModel In progress @@ -2444,21 +2226,6 @@ - TCPBase - - Error - Грешка - - - Unable to start the server: %1. - Грешка при Ñтартиране на Ñървъра: %1. - - - Unable to run engine: %1 ( - Грешка при пуÑкане на engine-a: %1 ( - - - ToggleButtonWidget Fort Mode diff -r 3331b30e4ef1 -r 88fde28bbda6 share/hedgewars/Data/Locale/hedgewars_cs.ts --- a/share/hedgewars/Data/Locale/hedgewars_cs.ts Sun Oct 21 01:28:33 2012 +0400 +++ b/share/hedgewars/Data/Locale/hedgewars_cs.ts Sat Nov 03 00:34:35 2012 +0400 @@ -20,21 +20,6 @@ - DrawMapWidget - - File error - - - - Cannot open file '%1' for writing - - - - Cannot read file '%1' - - - - FreqSpinBox Never @@ -56,14 +41,6 @@ Editovat zbranÄ› - Error - Chyba - - - Illegal ammo scheme - Nepovolené schéma zbraní - - Edit schemes Editovat schémata @@ -79,29 +56,13 @@ HWAskQuitDialog - Do yot really want to quit? + Do you really want to quit? HWChatWidget - %1 *** %2 has been removed from your ignore list - %1 *** %2 byl odstranÄ›n ze seznamu ignorovaných - - - %1 *** %2 has been added to your ignore list - %1 *** %2 byl pÅ™idán na seznam ignorovaných - - - %1 *** %2 has been removed from your friends list - %1 *** %2 byl odstranÄ›n ze seznamu přátel - - - %1 *** %2 has been added to your friends list - %1 *** %2 byl pÅ™idán na seznam přátel - - %1 has been removed from your ignore list @@ -149,30 +110,10 @@ HWForm - new - nový - - - Error - Chyba - - - OK - OK - - - Unable to start the server - Nemohu spustit server - - Cannot save record to file %1 Nemohu uložit záznam do souboru %1 - Please select record from the list above - Prosím vyberte záznam ze seznamu výše - - DefaultTeam VýchozíTeam @@ -199,10 +140,6 @@ - Password - Heslo - - Your nickname %1 is registered on Hedgewars.org Please provide your password below @@ -221,16 +158,14 @@ PÅ™ezdívka - Some one already uses - your nickname %1 -on the server. + No nickname supplied. + + + + Someone already uses your nickname %1 on the server. Please pick another nickname: - - No nickname supplied. - - HWGame @@ -356,10 +291,6 @@ Byl jsi vykopnut - Password - Heslo - - %1 *** %2 has joined the room %1 *** %2 se pÅ™ipojil do místnosti @@ -376,20 +307,6 @@ %1 *** %2 odeÅ¡el - Your nickname %1 is -registered on Hedgewars.org -Please provide your password below -or pick another nickname in game config: - Tvoje pÅ™ezdívka %1 je -registrovaná na Hedgewars.org -Prosím, zadej své heslo -nebo si v konfiguraci vyber jinou pÅ™ezdívku: - - - Nickname - PÅ™ezdívka - - User quit @@ -484,10 +401,6 @@ Connecting... PÅ™ipojuji... - - Cancel - ZruÅ¡it - PageDrawMap @@ -512,10 +425,6 @@ Nahrát nakreslenou mapu - Drawn Maps (*.hwmap);;All files (*.*) - Nakreslené mapy (*.hwmap);;VÅ¡echny soubory (*.*) - - Save drawn map Uložit nakreslenou mapu @@ -546,10 +455,6 @@ PageGameStats - <p>The best shot award was won by <b>%1</b> with <b>%2</b> pts.</p> - <p>Cenu za nejlepší zásah vyhrál <b>%1</b> s <b>%2</b> body.</p> - - Details Detaily @@ -631,14 +536,6 @@ PageMain - Local Game (Play a game on a single computer) - Místní hra (Hra na tomto poÄítaÄi) - - - Network Game (Play a game across a network) - Síťová hra (Hra pÅ™es síť) - - 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 JednoduÅ¡e zvol stejnou barvu jako spoluhráÄ, abys hrál ve stejném týmu. Každý z vás bude mít kontrolu nad svými vlastními ježky, ale vyhraje nebo prohraje spoleÄnÄ›. @@ -874,11 +771,6 @@ Windows verze Hedgewars podporuje Xfire. PÅ™idej si Hedgewars do jeho seznamu her, abys vidÄ›l přátele, kteří ho hrají. - The Homing Bee can be tricky to use. Its turn radius depends on it's velocity, so try to not use full power. - Tips - NavádÄ›ná vÄela může být obtížná na použití. Její polomÄ›r otáÄení je závislý na její rychlosti, zkus ji nepoužívat pÅ™i plné síle. - - Use the Molotov or Flame Thrower to temporary keep hedgehogs from passing terrain such as tunnels or platforms. Tips Použij Molotov nebo plamenomet, abys doÄasnÄ› zamezil ježkům v pÅ™echodu terénu jako jsou tunely nebo ploÅ¡iny. @@ -941,35 +833,12 @@ - PageNet - - Error - Chyba - - - Please select server from the list above - Prosím vyberte server ze seznamu výše - - - PageNetGame Control Ovládání - Error - Chyba - - - Please enter room name - Prosím zadejte jméno místnosti - - - OK - OK - - DLC @@ -1087,14 +956,6 @@ PagePlayDemo - Error - Chyba - - - OK - OK - - Rename dialog PÅ™ejmenovávací dialog @@ -1102,18 +963,6 @@ Enter new file name: Zadejte jméno nového souboru: - - Cannot rename to - Nemohu pÅ™ejmenovat na - - - Cannot delete file - Nemohu smazat soubor - - - Please select record from the list - Prosím vyberte záznam ze seznamu - PageRoomsList @@ -1126,18 +975,6 @@ PÅ™ipojit se - Refresh - Obnovit - - - Error - Chyba - - - OK - OK - - Admin features Možnosti správce @@ -1146,70 +983,6 @@ Jméno místnosti: - This game is in lobby. -You may join and start playing once the game starts. - Tato hra je v ÄekárnÄ›. -MůžeÅ¡ se pÅ™idat a zaÄít hrát, jakmile hra zaÄne. - - - 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. - Tato hra právÄ› probíhá. -MůžeÅ¡ se pÅ™idat a pozorovat, ale musíš poÄkat, než hra skonÄí, jestli chceÅ¡ zaÄít hrát. - - - %1 is the host. He may adjust settings and start the game. - %1 je hostitel. On může nastavovat a odstartovat hru. - - - Random Map - Náhodná mapa - - - Games may be played on precreated or randomized maps. - Hra může být hrána na pÅ™edem vytvoÅ™ené nebo na náhodné mapÄ›. - - - The Game Scheme defines general options and preferences like Round Time, Sudden Death or Vampirism. - Herní schéma definuje obecné možnosti a nastavení jako tÅ™eba poÄet kol, náhlou smrt nebo vampyrismus. - - - The Weapon Scheme defines available weapons and their ammunition count. - Zbraňové schéma definuje zbranÄ›, které budou k dispozici a jejich munici. - - - There are %1 clients connected to this room. - - V místnosti je %1 pÅ™ipojený klient. - V místnosti jsou %1 pÅ™ipojení klienti. - V místnosti je %1 pÅ™ipojených klientů. - - - - There are %1 teams participating in this room. - - V místnosti je %1 úÄastnící se tým. - V místnosti jsou %1 úÄastnící se týmy. - V místnosti je %1 úÄastnících se týmů. - - - - Please enter room name - Prosím zadejte jméno místnosti - - - Please select room from the list - Prosím vyberte místnost ze seznamu - - - Random Maze - Náhodný labyrint - - - State: - Stav: - - Rules: Pravidla: @@ -1225,16 +998,6 @@ Clear VyÄisti - - Warning - Pozor - - - The game you are trying to join has started. -Do you still want to join the room? - Hra, do které se snažíš pÅ™ipojit, zaÄala. -JeÅ¡tÄ› stále se chceÅ¡ pÅ™ipojit do místosti? - %1 players online @@ -1267,10 +1030,6 @@ Krajina nejde zniÄit! - Add an indestructable border around the terrain - PÅ™idá nezniÄitelnou hranici okolo terénu - - Lower gravity Nižší gravitace @@ -1393,30 +1152,6 @@ PageSinglePlayer - Simple Game (a quick game against the computer, settings are chosen for you) - Prostá hra (rychlá hra proti poÄítaÄi, nastavení je zvoleno) - - - Multiplayer (play a hotseat game against your friends, or AI teams) - Hra více hráÄů (hrát na jednom poÄítaÄi proti přátelům nebo poÄítaÄi) - - - Training Mode (Practice your skills in a range of training missions). IN DEVELOPMENT - Výcvikový mód (ProcviÄ si schopnosti v Å™adÄ› tréningových misí). VE VÃVOJI - - - Demos (Watch recorded demos) - Ukázky (Sledování nahraných her) - - - Load (Load a previously saved game) - Nahrát (Nahrát uloženou hru) - - - Campaign Mode (...). IN DEVELOPMENT - Mód tažení (...). VE VÃVOJI - - Simple Game @@ -1511,22 +1246,6 @@ - Are you sure? - - - - Do you really want do remove %1? - - - - Do you really want do remove %1 file(s)? - - - - - - - encoding @@ -1534,10 +1253,6 @@ uploading - - Do you really want do cancel uploading %1? - - QAction @@ -1704,10 +1419,6 @@ Probíhá - Default - Základní - - hand drawn map... ruÄnÄ› kreslená mapa... @@ -1795,10 +1506,6 @@ Týmy - Weapons - ZbranÄ› - - Audio/Graphic options Nastavení audio/video @@ -1862,10 +1569,6 @@ Verze - This program is distributed under the GNU General Public License - Tento program je poskytovaný pod GNU General Public licencí - - Developers: Vývojáři: @@ -1898,10 +1601,6 @@ Port: - Net nick - Síťová pÅ™ezdívka - - Resolution RozliÅ¡ení @@ -1986,10 +1685,6 @@ Jazyk - Restart game to apply - Aby se nastavení použilo, restartuj hru - - Explosives VýbuÅ¡niny @@ -2026,10 +1721,6 @@ % délky lana - Gameplay - Hra - - Stereo rendering Duální vykreslování @@ -2042,10 +1733,6 @@ - Password - Heslo - - % Get Away Time @@ -2056,7 +1743,7 @@ There are videos that are currently being processed. Exiting now will abort them. -Do yot really want to quit? +Do you really want to quit? @@ -2141,10 +1828,6 @@ QMessageBox - Network - Síť - - Connection to server is lost Spojení se serverem ztraceno @@ -2153,90 +1836,14 @@ Chyba - Failed to open data directory: -%1 -Please check your installation - Chyba pÅ™i otevírání adresáře s daty: -%1 -Prosím zkontorlujte vaÅ¡i instalaci - - - Weapons - ZbranÄ› - - - Can not edit default weapon set - Nemohu editovat základní nastavení zbraní - - - Can not delete default weapon set - Nemohu smazat základní nastavení zbraní - - - Really delete this weapon set? - Opravdu smazat toto nastavení zbraní? - - - Can not overwrite default weapon set '%1'! - Nemohu pÅ™epsat výchozí sadu zbraní '%1'! - - - All file associations have been set. - VÅ¡echny asociace souborů byly nastaveny. - - File association failed. Asociace souborů selhala. - Teams - Týmy - - - Really delete this team? - Opravdu smazat tento tým? - - - Schemes - Schémata - - - Can not delete default scheme '%1'! - Nemohu smazat výchozí schéma '%1'! - - - Really delete this game scheme? - Opravdu smazat toto herní schéma? - - - Can not delete default weapon set '%1'! - Nemohu smazat výchozí sadu zbraní '%1'! - - - Fields required - - - Please fill out all fields - Success - - - - Successfully posted the issue on code.google.com! - - - - Error during authentication with www.google.com - - - - Error creating the issue - - - Error while authenticating at google.com: @@ -2250,22 +1857,203 @@ + + Teams - Are you sure? + + + + Do you really want to delete the team '%1'? + + + + Cannot delete default scheme '%1'! + + + + Please select a record from the list + + + + Unable to start server + + + + Hedgewars - Error + + + + Hedgewars - Success + + + + All file associations have been set + + + + Successfully posted the issue on hedgewars.googlecode.com + + + + Error during authentication at google.com + + + + Error reporting the issue, please try again later (or visit hedgewars.googlecode.com directly) + + + + Main - Error + + + + Cannot create directory %1 + Nemohu vytvoÅ™it adresář %1 + + + Failed to open data directory: +%1 + +Please check your installation! + + + + TCP - Error + + + + Unable to start the server: %1. + Nemohu spustit server: %1. + + + Unable to run engine at + + + + Error code: %1 + + + + Video upload - Error + + + + Netgame - Error + + + + Please select a server from the list + + + + Please enter room name + Prosím zadejte jméno místnosti + + + Record Play - Error + + + + Please select record from the list + Prosím vyberte záznam ze seznamu + + + Cannot rename to + + + + Cannot delete file + + + + Room Name - Error + + + + Please select room from the list + Prosím vyberte místnost ze seznamu + + + Room Name - Are you sure? + + + + The game you are trying to join has started. +Do you still want to join the room? + Hra, do které se snažíš pÅ™ipojit, zaÄala. +JeÅ¡tÄ› stále se chceÅ¡ pÅ™ipojit do místosti? + + + Schemes - Warning + + + + Schemes - Are you sure? + + + + Do you really want to delete the game scheme '%1'? + + + + Videos - Are you sure? + + + + Do you really want to delete the video '%1'? + + + + Do you really want to remove %1 file(s)? + + + + + + + + Do you really want to cancel uploading %1? + + + + File error + + + + Cannot open '%1' for writing + + + + Cannot open '%1' for reading + + + + Cannot use the ammo '%1'! + + + + Weapons - Warning + + + + Cannot overwrite default weapon set '%1'! + + + + Cannot delete default weapon set '%1'! + + + + Weapons - Are you sure? + + + + Do you really want to delete the weapon set '%1'? + + QObject - Error - Chyba - - - Cannot create directory %1 - Nemohu vytvoÅ™it adresář %1 - - - OK - OK - - Nickname PÅ™ezdívka @@ -2374,37 +2162,6 @@ - QTableWidget - - Room Name - Jméno místnosti - - - C - K - - - T - T - - - Owner - Vlastník - - - Map - Mapa - - - Rules - Pravidla - - - Weapons - ZbranÄ› - - - RoomsListModel In progress @@ -2479,21 +2236,6 @@ - TCPBase - - Error - Chyba - - - Unable to start the server: %1. - Nemohu spustit server: %1. - - - Unable to run engine: %1 ( - Nemohu spustit engine: %1 ( - - - ToggleButtonWidget Vampirism diff -r 3331b30e4ef1 -r 88fde28bbda6 share/hedgewars/Data/Locale/hedgewars_de.ts --- a/share/hedgewars/Data/Locale/hedgewars_de.ts Sun Oct 21 01:28:33 2012 +0400 +++ b/share/hedgewars/Data/Locale/hedgewars_de.ts Sat Nov 03 00:34:35 2012 +0400 @@ -5,7 +5,7 @@ AbstractPage Go back - + Zurück @@ -20,21 +20,6 @@ - DrawMapWidget - - File error - Dateifehler - - - Cannot open file '%1' for writing - Datei '%1' konnte nicht für Schreibzugriff geöffnet werden. - - - Cannot read file '%1' - Datei '%1' konnte nicht gelese werden. - - - FreqSpinBox Never @@ -55,14 +40,6 @@ Waffenzusammenstellung bearbeiten - Error - Fehler - - - Illegal ammo scheme - Ungültige Waffenzusammenstellung - - Edit schemes Spielprofile bearbeiten @@ -78,29 +55,13 @@ HWAskQuitDialog - Do yot really want to quit? - + Do you really want to quit? + Willst du wirklich beenden? HWChatWidget - %1 *** %2 has been removed from your ignore list - %1 *** %2 wurde aus deiner Ignorierliste entfernt - - - %1 *** %2 has been added to your ignore list - %1 *** %2 wurde in deine Ignorierliste aufgenommen - - - %1 *** %2 has been removed from your friends list - %1 *** %2 wurde aus deiner Freundesliste entfernt - - - %1 *** %2 has been added to your friends list - %1 *** %2 wurde in deine Freundesliste aufgenommen - - %1 has been removed from your ignore list %1 wurde aus deiner Ignorierliste entfernt @@ -144,38 +105,14 @@ %1 is not a valid command! %1 ist kein gültiger Befehl! - - Kicking %1 ... - %1 wird rausgeworfen ... - HWForm - Error - Fehler - - - OK - OK - - - Unable to start the server - Server konnte nicht gestartet werden - - Cannot save record to file %1 Datei %1 konnte nicht gespeichert werden - new - Neu - - - Please select record from the list above - Bitte wähle einen Eintrag aus der obigen Liste - - DefaultTeam @@ -202,10 +139,6 @@ Spiel abgebrochen - Password - Passwort - - Your nickname %1 is registered on Hedgewars.org Please provide your password below @@ -226,19 +159,14 @@ Spitzname - Some one already uses - your nickname %1 -on the server. -Please pick another nickname: - Jemand verwendet -deinen Spiznamen %1 -bereits auf dem Server. -Bitte wähle einen anderen Spitznamen: - - No nickname supplied. Kein Spitznahme angegeben. + + Someone already uses your nickname %1 on the server. +Please pick another nickname: + Dein Spitzname '%1' ist bereits in Verwendung. Bitte wähle einen anderen Spitznamen: + HWGame @@ -290,10 +218,6 @@ Verrückt - Tunnel size - Tunnelgröße - - Type Typ @@ -368,21 +292,6 @@ Du wurdest hinausgeworfen - Password - Passwort - - - Your nickname %1 is -registered on Hedgewars.org -Please provide your password -or pick another nickname: - Dein Spitzname '%1' wurde -auf Hedgewars.org registriert. - -Bitte gib dein Passwort ein oder -wähle einen anderen Spitznamen: - - %1 *** %2 has joined the room %1 *** %2 hat den Raum betreten @@ -399,59 +308,34 @@ %1 *** %2 ist gegangen - Your nickname %1 is -registered on Hedgewars.org -Please provide your password below -or pick another nickname in game config: - Dein Spitzname '%1' wurde -auf Hedgewars.org registriert. - -Bitte gib dein Passwort ein oder -wähle einen anderen Spitznamen: - - - Nickname - Spitzname - - - Some one already uses - your nickname %1 -on the server. -Please pick another nickname: - Jemand verwendet -deinen Spiznamen %1 -bereits auf dem Server. -Bitte wähle einen anderen Spitznamen: - - User quit Benutzer ist gegangen Remote host has closed connection - + Die Verbindung wurde von der anderen Seite geschlossen. The server is too old. Disconnecting now. - + Der Server ist zu alt. Verbindung wird beendet. HWPasswordDialog Password - Passwort + Passwort HWUploadVideoDialog Upload video - + Video hochladen Upload - + Hochladen @@ -466,32 +350,24 @@ Duration: %1m %2s - + Dauer: %1m %2s Video: %1x%2, - + Video: %1x%2, %1 fps, - + %1 fps, Audio: - + Audio: PageAdmin - Server message: - Servernachricht: - - - Set message - Servernachricht festlegen - - Clear Accounts Cache Zwischenspeicher leeren @@ -526,10 +402,6 @@ Connecting... Verbinde ... - - Cancel - Abbrechen - PageDrawMap @@ -567,7 +439,7 @@ Eraser - + Radierer @@ -584,24 +456,6 @@ PageGameStats - <p>The best shot award was won by <b>%1</b> with <b>%2</b> pts.</p> - <p>Der Preis für den besten Schuss geht an <b>%1</b> mit <b>%2</b> Punkten.</p> - - - <p>The best killer is <b>%1</b> with <b>%2</b> kills in a turn.</p> - - <p>Der blutigste Kämpfer ist <b>%1</b> mit <b>%2</b> Opfer in einer Runde.</p> - <p>Der blutigste Kämpfer ist <b>%1</b> mit <b>%2</b> Opfern in einer Runde.</p> - - - - <p>A total of <b>%1</b> hedgehog(s) were killed during this round.</p> - - <p>Insgesamt fand <b>%1</b> Igel ein trauriges Ende in dieser Runde.</p> - <p>Insgesamt fanden <b>%1</b> Igel ein trauriges Ende in dieser Runde.</p> - - - Details Details @@ -638,10 +492,6 @@ (%1 Opfer) - - (%1 kills) - (%1 Kills) - <b>%1</b> thought it's good to shoot his own hedgehogs with <b>%2</b> pts. @@ -675,20 +525,12 @@ PageInfo Open the snapshot folder - + Schnappschuss-Ordner öffnen PageMain - Local Game (Play a game on a single computer) - Lokales Spiel - - - Network Game (Play a game across a network) - Netzwerkspiel - - 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 Wähle einfach die gleiche Farbe wie dein Freund um als ein Team zu spielen. Jeder von euch wird trotzdem seine eigenen Igel kontrollieren, aber sie gewinnen oder verlieren zusammen. @@ -704,11 +546,6 @@ Wenn du dir nicht sicher bist was du tun sollst und keine Munition verschwenden willst, überspringe eine Runde. Aber lass nicht zu viele Runden verstreichen, denn später kommt es zum Sudden Death! - Want to save ropse? 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 - Du willst Seile sparen? Lass das Seil in der Luft los und schieß noch einmal. Solange du nicht den Boden berührst kannst du das Seil wiederverwenden ohne Munition zu verlieren! - - 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 Wenn du andere daran hindern willst deinen bevorzugten Nickname auf dem offiziellen Server zu nutzen, registriere dich auf http://www.hedgewars.org/. @@ -784,11 +621,6 @@ Spezielle Spielmodi wie 'Vampirismus' oder 'Karma' erlauben es dir völlig neue Taktiken zu entwickeln. Probier sie einem eigenen Spiel aus! - The Windows version of Hedgewars supports Xfire. Make sure to add Hedgwars to its game list so your friends can see you playing. - Tips - Die Windowsversion von Hedgewars unterstützt Xfire. Füge Hedgewars zu der Spieleliste hinzu, sodass deine Freunde sehen können wann du spielst. - - You should never install Hedgewars on computers you don't own (school, university, work, etc.). Please ask the responsible person instead! Tips Du solltest nie Hedgewars auf einem Computer installieren, der dir nicht gehört (Schule, Universität, Arbeit, etc.). Frag bitte stattdessen die verantwortliche Person! @@ -854,11 +686,6 @@ Der Piano-Angriff ist der verheerenste Luftangriff. Du verlierst allerdings den Igel der ihn vollführt, er hat also auch seine Schattenseite. - 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 - Die zielsuchende Biene ist schwierig in der Handhabung. Ihr Wendekreis hängt von ihrer Geschwindigkeit ab, also versuche nicht die volle Kraft zu benutzen. - - Sticky Mines are a perfect tool to create small chain reactions knocking enemy hedgehogs into dire situations ... or water. Tips Haftminen sind perfekte Werkzeuge um Kettenreaktionen auszulösen oder Igel in die gewünschte Richtung zu lenken ... oder ins Wasser. @@ -884,11 +711,6 @@ Der Flammenwerfer ist zwar eine Waffe, kann aber auch zum Tunnelgraben genutzt werden. - Use the Incinerating Grenade to temporary keep hedgehogs from passing terrain such as tunnels or platforms. - Tips - Benutze den Molotov-Cocktail um kurzzeitig Igel daran zu hindern Tunnel zu durchqueren oder Plattformen zu erklimmen. - - Want to know who's behind the game? Click on the Hedgewars logo in the main menu to see the credits. Tips Du willst wissen wer hinter Hedgewars steckt? Klicke auf das Hedgewars-Logo im Hauptmenü um die Credits zu sehen. @@ -919,11 +741,6 @@ Du findest deine Hedgewars Konfigurationsdateien unter "Eigene Dateien\Hedgewars". Erstelle Backups oder kopiere deine Dateien, aber editiere sie besser nicht selbst. - 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 - Du findest die Hedgewars Konfigurationsdateien in deinem Home-Verzeichnis. Erstelle Backups oder kopiere deine Dateien, aber editiere sie besser nicht selbst. - - 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 Du kannst Dateien wie Speicherstände oder Demos mit Hedgewars verknüpfen um sie so direkt mit deinem Datei- oder Internetbrowser zu öffnen. @@ -964,43 +781,43 @@ Local Game - + Lokales Spiel Play a game on a single computer - + Spiele auf einem einzelnen PC Network Game - + Netzwerkspiel Play a game across a network - + Spiele über ein Netwerk Read about who is behind the Hedgewars Project - + Lies wer hinter dem Hedgewars-Projekt steckt Leave a feedback here reporting issues, suggesting features or just saying how you like Hedgewars - + Access the user created content downloadable from our website - + Greife auf von Benutzern ergestellte Inhalte zu, herunterladbar von unserer Webseite Exit game - + Spiel verlassen Manage videos recorded from game - + Verwalte vom Spiel aufgenommene Videos Edit game preferences - + Bearbeite Spieleinstellungen @@ -1011,41 +828,18 @@ - PageNet - - Error - Fehler - - - Please select server from the list above - Bitte wähle einen Eintrag aus der Liste aus - - - PageNetGame Control Steuerung - Error - Fehler - - - Please enter room name - Bitte einen Raumnamen eingeben - - - OK - OK - - DLC - + DLC Downloadable Content - Herunterladbare Inhalte + Herunterladbare Inhalte @@ -1060,11 +854,11 @@ Join hundreds of players online! - + Treffe hunderte Spieler online! Join or host your own game server in a Local Area Network. - + Erstelle einen eigenen Spiel-Server oder verbinde dich zu einem bestehenden Server im Netzwerk. @@ -1082,18 +876,6 @@ Team löschen - New weapon scheme - Neue Waffenzusammenstellung - - - Edit weapon scheme - Waffenzusammenstellung bearbeiten - - - Delete weapon scheme - Waffenzusammenstellung löschen - - You can't edit teams from team selection. Go back to main menu to add, edit or delete teams. Du kannst keine Teams bei der Team-Auswahl ändern. Gehe zum Hauptmenü zurück um Teams hinzuzufügen, zu editieren oder zu löschen. @@ -1123,60 +905,52 @@ General - Allgemein + Allgemein Advanced - Erweitert + Erweitert Reset to default colors - + Auf Standard-Farben zurücksetzen Proxy host - + Host Proxy port - + Port Proxy login - + Login Proxy password - + Passwort No proxy - + Kein Proxy Socks5 proxy - + Socks5-Proxy HTTP proxy - + HTTP-Proxy System proxy settings - + Betriebsystem Proxy-Einstellungen PagePlayDemo - Error - Fehler - - - OK - OK - - Rename dialog Umbenennen @@ -1184,18 +958,6 @@ Enter new file name: Neuer Dateiname: - - Cannot rename to - Datei kann nicht umbenannt werden in - - - Cannot delete file - Datei kann nicht gelöscht werden - - - Please select record from the list - Bitte einen Eintrag aus der Liste auswählen - PageRoomsList @@ -1208,18 +970,6 @@ Betreten - Refresh - Aktualisieren - - - Error - Fehler - - - OK - OK - - Admin features Verwalten @@ -1228,68 +978,6 @@ Raumname: - This game is in lobby. -You may join and start playing once the game starts. - Dieses Spiel wartet im Augenblick auf Mitspieler. -Du kannst beitreten und mitspielen oder zusehen, sobald das Spiel beginnt. - - - 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. - Dieses Spiel läuft gerade. -Du kannst beitreten und zusehen oder du wartest bis die aktuelle Runde zu Ende ist. - - - %1 is the host. He may adjust settings and start the game. - %1 ist der Besitzer dieses Raums und kann die Einstellungen anpassen und die Runde starten. - - - Random Map - Zufallskarte - - - Games may be played on precreated or randomized maps. - Spiele können auf vorgefertigten oder zufälligen Karten stattfinden. - - - The Game Scheme defines general options and preferences like Round Time, Sudden Death or Vampirism. - Spielprofile geben allgemeine Dinge einer Runde vor, etwa die Rundenzeit, Sudden Death oder Vampirismus. - - - The Weapon Scheme defines available weapons and their ammunition count. - Waffenzusammenstellungen bestimmen, welche Waffen wann und in welchen Mengen zur Verfügung stehen. - - - There are %1 clients connected to this room. - - Es befindet sich %1 Spieler in diesem Raum. - Es befinden sich %1 Spieler in diesem Raum. - - - - There are %1 teams participating in this room. - - Es nimmt %1 Team in diesem Raum teil. - Es nehmen %1 Teams in diesem Raum teil. - - - - Please enter room name - Bitte einen Raumnamen eingeben - - - Please select room from the list - Bitte einen Raum aus der Liste auswählen - - - Random Maze - Zufallslabyrinth - - - State: - Status: - - Rules: Regeln: @@ -1305,16 +993,6 @@ Clear Leeren - - Warning - Warnung - - - The game you are trying to join has started. -Do you still want to join the room? - Das Spiel in das du beitreten möchtest hat bereits begonnen. -Willst du trotzdem den Raum betreten? - %1 players online @@ -1334,10 +1012,6 @@ Löschen - Enable random mines - Zufällige Minen Positionen - - Gain 80% of the damage you do back in health 80% des ausgeteilten Schadens werden in Lebenspunkte gewandelt @@ -1472,76 +1146,48 @@ PageSinglePlayer - Simple Game (a quick game against the computer, settings are chosen for you) - Einfaches Spiel (Eine schnelle Runde gegen den PC, Einstellungen werden automatisch gewählt) - - - Multiplayer (play a hotseat game against your friends, or AI teams) - Mehrspieler (Spiele gegen deine Freunde oder Computergegner) - - - Training Mode (Practice your skills in a range of training missions). IN DEVELOPMENT - Trainingsmodus (Verbessere dein Können in verschiedenen Trainingsmissionen). IN ENTWICKLUNG - - - Demos (Watch recorded demos) - Demos (Wiedergabe einer gespeicherten Demo) - - - Load (Load a previously saved game) - Laden (eines vorher gespeicherten Spiels) - - - Campaign Mode (...). IN DEVELOPMENT - Kampagnenmodus (...) IN ENTWICKLUNG - - - Training Mode (Practice your skills in a range of training missions) - Trainingsmodus (Verbessere deine Fähigkeiten in verschiedenen Trainingsmissionen) - - Simple Game - + Einfaches Spiel Play a quick game against the computer with random settings - + Spiele ein schnelles Spiel gegen den Computer - mit Zufallseinstellungen Multiplayer - + Multiplayer Play a hotseat game against your friends, or AI teams - + Spiele gegen deine Freunde oder Computer-Teams. Campaign Mode - + Kampagnenmodus Training Mode - + Trainingsmodus Practice your skills in a range of training missions - + Verbessere deine Fähigkeiten in verschiedenen Trainingsmissionen Demos - + Demos Watch recorded demos - + Sehe aufgenommene Demos an Load - Laden + Laden Load a previously saved game - + Lade ein vormals gespeichtes Spiel @@ -1556,68 +1202,49 @@ Pick the mission or training to play - + Wähle eine Mission oder ein Training Start fighting - + Auf in den Kampf! PageVideos Name - Name + Name Size - + Größe %1 bytes - - - + + %1 Byte + %1 Bytes (in progress...) - + (in Bearbeitung...) Date: - + Datum: Size: - - - - Are you sure? - - - - Do you really want do remove %1? - - - - Do you really want do remove %1 file(s)? - - - - + Größe: encoding - + encoden uploading - - - - Do you really want do cancel uploading %1? - + hochladen @@ -1706,10 +1333,6 @@ Beim Start nach neuen Versionen suchen - Reduced quality - Niedrige Qualität - - Show ammo menu tooltips Kurzinfos für Waffen anzeigen @@ -1727,23 +1350,23 @@ Save password - + Passwort speichern Save account name and password - + Kontoname und Passwort speichern Video is private - + Video ist privat Record audio - + Audio aufnehmen Use game resolution - + Spielauflösung verwenden @@ -1789,10 +1412,6 @@ Im Spiel - Default - Standard - - hand drawn map... Handgezeichnete Karte @@ -1884,10 +1503,6 @@ Audio-/Grafik-Einstellungen - Weapons - Waffen - - Net game Netzwerkspiel @@ -1917,36 +1532,32 @@ Custom colors - + Benutzerdefinierte Farben Miscellaneous - + Verschiedenes Video recording options - + Videoaufnahmeoptionen Videos - + Videos Description - + Beschreibung Proxy settings - + Proxy-Einstellungen QLabel - This program is distributed under the GNU General Public License - Dieses Programm ist unter der GNU General Public License veröffentlicht - - Developers: Entwickler: @@ -1983,10 +1594,6 @@ FPS-Limit - Net nick - Spitzname im Netz - - Server name: Servername: @@ -2071,20 +1678,10 @@ Sprache - Restart game to apply - Spiel neu starten, um Änderungen zu übernehmen - - Explosives Pulverfässer - This SVN 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! - Diese SVN-Kopie ist noch in Entwicklung und sie ist mit anderen Versionen vielleicht nicht kompatibel. -Einige Dinge könnten nicht funktionieren oder unvollständig sein. Benutzung auf eigene Gefahr! - - Tip: Tipp: @@ -2121,10 +1718,6 @@ Stereo-Rendering - Game Options - Spieloptionen - - Style Stil @@ -2133,10 +1726,6 @@ Spielprofil - Password - Passwort - - % Get Away Time % Rückzugszeit @@ -2147,64 +1736,66 @@ There are videos that are currently being processed. Exiting now will abort them. -Do yot really want to quit? - +Do you really want to quit? + Derzeit sind Videos in Bearbeitung. +Verlassen wird diese abbrechen. +Willst du wirklich verlassen? Please provide either the YouTube account name or the email address associated with the Google Account. - + Bitte gib entwerder deinen YouTube-Kontonamen oder die entsprechende eMail-Adresse des Google-Kontos an. Account name (or email): - + Kontoname (oder eMail) Password: - + Passwort Video title: - + Video-Titel Video description: - + Video-Beschreibung Tags (comma separated): - + Tags (durch Beistriche getrennt) Summary - + Zusammenfassung Description - + Beschreibung Nickname - Spitzname + Spitzname Format - + Format Audio codec - + Audio-Codec Video codec - + Video-Codec Framerate - + Bildrate Bitrate (Kbps) - + Bitrate (Kbps) @@ -2219,7 +1810,7 @@ anonymous - + anonym @@ -2232,10 +1823,6 @@ QMessageBox - Network - Netzwerk - - Connection to server is lost Verbindung zum Server wurde unterbrochen @@ -2244,119 +1831,228 @@ Fehler - Failed to open data directory: -%1 -Please check your installation - Das Verzeichnis: -%1 -konnte nicht geöffnet werden. Bitte überprüfen Sie Ihre Installation - - - Weapons - Waffen - - - Can not edit default weapon set - Das Standard-Waffen-Set kann nicht editiert werden - - - Can not delete default weapon set - Das Standard-Waffen-Set kann nicht gelöscht werden - - - Really delete this weapon set? - Soll dieses Waffen-Set wirklich gelöscht werden? - - - Can not overwrite default weapon set '%1'! - Kann nicht das Standardwaffenset '%1' überschreiben! - - - All file associations have been set. - Alle Dateizuordnungen wurden gesetzt. - - File association failed. Dateizuordnung fehlgeschlagen. - Teams - Teams - - - Really delete this team? - Dieses Team wirklich löschen? - - - Schemes - Spielprofil - - - Can not delete default scheme '%1'! - Standardspielprofil '%1' kann nicht gelöscht werden! - - - Really delete this game scheme? - Dieses Spielprofil wirklich löschen? - - - Can not delete default weapon set '%1'! - Standardwaffenprofil '%1' kann nicht gelöscht werden! - - - Fields required - - - Please fill out all fields - - - - Success - - - - Successfully posted the issue on code.google.com! - - - - Error during authentication with www.google.com - - - - Error creating the issue - + Bitte fülle alle Felder aus Error while authenticating at google.com: - + Fehler während Authentifizierung auf google.com: + Login or password is incorrect - + Login oder Passwort inkorrekt Error while sending metadata to youtube.com: + Fehler bei Senden von Meta-Daten zu youtube.com: + + + + Teams - Are you sure? + Teams - Bist du dir sicher? + + + Do you really want to delete the team '%1'? + Willst du das Team '%1' wirklich löschen? + + + Cannot delete default scheme '%1'! + Standard-Profil '%1' kann nicht gelöscht werden! + + + Please select a record from the list + Bitte wähle eine Aufnahme in der Liste aus + + + Unable to start server + Konnte Server nicht starten + + + Hedgewars - Error + Hedgewars - Fehler + + + Hedgewars - Success + Hedgewars - Erfolg + + + All file associations have been set + Alle Dateizuordnungen wurden gesetzt + + + Successfully posted the issue on hedgewars.googlecode.com + + Error during authentication at google.com + + + + Error reporting the issue, please try again later (or visit hedgewars.googlecode.com directly) + + + + Main - Error + Hedgewars - Fehler + + + Cannot create directory %1 + Verzeichnis %1 konnte nicht angelegt werden + + + Failed to open data directory: +%1 + +Please check your installation! + Konnte Daten-Verzeichnis nicht öffnen: +%1 + +Bitte überprüfe deine Installation! + + + TCP - Error + TCP - Fehler + + + Unable to start the server: %1. + Server %1 konnte nicht gestartet werden. + + + Unable to run engine at + Konnte Engine nicht starten: + + + Error code: %1 + Fehler-Code: %1 + + + Video upload - Error + Video hochladen - Fehler + + + Netgame - Error + Netwerkspiel - Fehler + + + Please select a server from the list + Bitte wähle einen Server von der Liste + + + Please enter room name + Bitte einen Raumnamen eingeben + + + Record Play - Error + Aufnahmewiedergabe - Fehler + + + Please select record from the list + Bitte eine Aufnahme aus der Liste auswählen + + + Cannot rename to + Datei konnte nicht unbenannt werden nach + + + Cannot delete file + Datei konnte nicht gelöscht werden + + + Room Name - Error + Raumname - Fehler + + + Please select room from the list + Bitte einen Raum aus der Liste auswählen + + + Room Name - Are you sure? + Raumname - Bist du dir sicher? + + + The game you are trying to join has started. +Do you still want to join the room? + Das Spiel in das du beitreten möchtest hat bereits begonnen. +Willst du trotzdem den Raum betreten? + + + Schemes - Warning + Spielprofil - Warnung + + + Schemes - Are you sure? + Spielprofil - Bist du dir sicher? + + + Do you really want to delete the game scheme '%1'? + Willst du das Profil '%1' wirklich löschen? + + + Videos - Are you sure? + Videos - Bist du dir sicher? + + + Do you really want to delete the video '%1'? + Willst du das Video '%1' wirklich löschen? + + + Do you really want to remove %1 file(s)? + + Willst du wirklich %1 Datei entfernen? + Willst du wirklich %1 Dateien entfernen? + + + + Do you really want to cancel uploading %1? + Willst du das Hochladen von %1 wirklich abbrechen_ + + + File error + Dateifehler + + + Cannot open '%1' for writing + '%1' konnte nicht geschrieben werden + + + Cannot open '%1' for reading + '%1' konnte nicht gelesen werden + + + Cannot use the ammo '%1'! + Munition '%1' kann nicht benutzt werden! + + + Weapons - Warning + Waffenprofil - Warnung + + + Cannot overwrite default weapon set '%1'! + Standard-Waffenprofil '%1' kann nicht überschrieben werden! + + + Cannot delete default weapon set '%1'! + Standard-Waffenprofil '%1' kann nicht gelöscht werden! + + + Weapons - Are you sure? + Waffenprofil - Bist du dir sicher? + + + Do you really want to delete the weapon set '%1'? + Willst du das Waffenprofil '%1' wirklich löschen? + QObject - Error - Fehler - - - Cannot create directory %1 - Verzeichnis %1 konnte nicht angelegt werden - - - OK - OK - - Nickname Spitzname @@ -2441,105 +2137,74 @@ More info - + Mehr Info Set default options - + Setzen Open videos directory - + Videoverzeichnis anzeigen Play - + Spielen Upload to YouTube - + Auf YouTube hochladen Cancel uploading - - - - - QTableWidget - - Room Name - Raumname - - - C - Sp. - - - T - T. - - - Owner - Besitzer - - - Map - Karte - - - Rules - Regeln - - - Weapons - Waffen + Hochladen abbrechen RoomsListModel In progress - Im Spiel + Im Spiel Room Name - Raumname + Raumname C - Sp. + Sp. T - T. + T. Owner - Besitzer + Besitzer Map - Karte + Karte Rules - Regeln + Regeln Weapons - Waffen + Waffen Random Map - Zufallskarte + Zufallskarte Random Maze - Zufallslabyrinth + Zufallslabyrinth Hand-drawn - + Handgemalt @@ -2570,21 +2235,6 @@ - TCPBase - - Error - Fehler - - - Unable to start the server: %1. - Server %1 konnte nicht gestartet werden. - - - Unable to run engine: %1 ( - Engine konnte nicht gestartet werden: %1 ( - - - ToggleButtonWidget Vampirism @@ -2627,10 +2277,6 @@ Unverwundbarkeit - Add Mines - Minen hinzufügen - - Random Order Zufällige Reihenfolge @@ -2857,11 +2503,11 @@ mute audio - + stummschalten record - + aufnehmen @@ -2947,11 +2593,11 @@ Toggle labels above hedgehogs: - Ändere die Informationen über Igeln: + Einblendungen über Igeln ein/ausschalten: Record video: - + Video aufnehmen: diff -r 3331b30e4ef1 -r 88fde28bbda6 share/hedgewars/Data/Locale/hedgewars_en.ts --- a/share/hedgewars/Data/Locale/hedgewars_en.ts Sun Oct 21 01:28:33 2012 +0400 +++ b/share/hedgewars/Data/Locale/hedgewars_en.ts Sat Nov 03 00:34:35 2012 +0400 @@ -20,21 +20,6 @@ - DrawMapWidget - - File error - - - - Cannot open file '%1' for writing - - - - Cannot read file '%1' - - - - FreqSpinBox Never @@ -55,14 +40,6 @@ Edit weapons - Error - Error - - - Illegal ammo scheme - Illegal ammo scheme - - Edit schemes Edit schemes @@ -78,29 +55,13 @@ HWAskQuitDialog - Do yot really want to quit? + Do you really want to quit? HWChatWidget - %1 *** %2 has been removed from your ignore list - %1 *** %2 has been removed from your ignore list - - - %1 *** %2 has been added to your ignore list - %1 *** %2 has been added to your ignore list - - - %1 *** %2 has been removed from your friends list - %1 *** %2 has been removed from your friends list - - - %1 *** %2 has been added to your friends list - %1 *** %2 has been added to your friends list - - %1 has been removed from your ignore list @@ -148,30 +109,10 @@ HWForm - new - new - - - Error - Error - - - OK - OK - - - Unable to start the server - Unable to start the server - - Cannot save record to file %1 Cannot save record to file %1 - Please select record from the list above - Please select record from the list above - - DefaultTeam Default Team @@ -198,10 +139,6 @@ - Password - Password - - Your nickname %1 is registered on Hedgewars.org Please provide your password below @@ -220,16 +157,14 @@ Nickname - Some one already uses - your nickname %1 -on the server. + No nickname supplied. + + + + Someone already uses your nickname %1 on the server. Please pick another nickname: - - No nickname supplied. - - HWGame @@ -355,20 +290,6 @@ You got kicked - Password - 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 has joined the room @@ -385,20 +306,6 @@ %1 *** %2 has left - Your nickname %1 is -registered on Hedgewars.org -Please provide your password below -or pick another nickname in game config: - Your nickname %1 is -registered on Hedgewars.org -Please provide your password below -or pick another nickname in game config: - - - Nickname - Nickname - - User quit @@ -459,14 +366,6 @@ PageAdmin - Server message: - Server message: - - - Set message - Set message - - Clear Accounts Cache Clear Accounts Cache @@ -501,10 +400,6 @@ Connecting... Connecting... - - Cancel - Cancel - PageDrawMap @@ -559,24 +454,6 @@ 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 Details @@ -652,14 +529,6 @@ PageMain - Local Game (Play a game on a single computer) - Local Game (Play a game on a single computer) - - - Network Game (Play a game across a network) - 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 @@ -957,35 +826,12 @@ - PageNet - - Error - Error - - - Please select server from the list above - Please select server from the list above - - - PageNetGame Control Control - Error - Error - - - Please enter room name - Please enter room name - - - OK - OK - - DLC @@ -1028,18 +874,6 @@ Delete team - New weapon scheme - New weapon scheme - - - Edit weapon scheme - Edit weapon scheme - - - Delete weapon scheme - Delete weapon scheme - - You can't edit teams from team selection. Go back to main menu to add, edit or delete teams. You can't edit teams from team selection. Go back to main menu to add, edit or delete teams. @@ -1115,14 +949,6 @@ PagePlayDemo - Error - Error - - - OK - OK - - Rename dialog Rename dialog @@ -1130,18 +956,6 @@ Enter new file name: Enter new file name: - - Cannot rename to - Cannot rename to - - - Cannot delete file - Cannot delete file - - - Please select record from the list - Please select record from the list - PageRoomsList @@ -1154,18 +968,6 @@ Join - Refresh - Refresh - - - Error - Error - - - OK - OK - - Admin features Administration @@ -1174,60 +976,6 @@ Room Name: - This game is in lobby. -You may join and start playing once the game starts. - 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. - 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 is the host. He may adjust settings and start the game. - - - Random Map - Random Map - - - Games may be played on precreated or randomized maps. - 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 Game Scheme defines general options and preferences like Round Time, Sudden Death or Vampirism. - - - The Weapon Scheme defines available weapons and their ammunition count. - The Weapon Scheme defines available weapons and their ammunition count. - - - There are %1 clients connected to this room. - - There is %1 client connected to this room. - There are %1 clients connected to this room. - - - - There are %1 teams participating in this room. - - There is %1 team participating in this room. - There are %1 teams participating in this room. - - - - Please enter room name - Please enter room name - - - Please select room from the list - Please select room from the list - - Rules: @@ -1243,16 +991,6 @@ Clear - - Warning - - - - The game you are trying to join has started. -Do you still want to join the room? - The game you are trying to join has started. -Do you still want to join the room? - %1 players online @@ -1276,10 +1014,6 @@ Land can not be destroyed! - Add an indestructable border around the terrain - Add an indestructable border around the terrain - - Lower gravity Lower gravity @@ -1292,10 +1026,6 @@ All hogs have a personal forcefield - Enable random mines - Enable random mines - - Gain 80% of the damage you do back in health Gain 80% of the damage you do back in health @@ -1414,26 +1144,6 @@ PageSinglePlayer - Simple Game (a quick game against the computer, settings are chosen for you) - Simple Game (a quick game against the computer, settings are chosen for you) - - - Multiplayer (play a hotseat game against your friends, or AI teams) - Multiplayer (play a hotseat game against your friends, or AI teams) - - - Training Mode (Practice your skills in a range of training missions) - Training Mode (Practice your skills in a range of training missions) - - - Demos (Watch recorded demos) - Demos (Watch recorded demos) - - - Load (Load a previously saved game) - Load (Load a previously saved game) - - Simple Game @@ -1527,21 +1237,6 @@ - Are you sure? - - - - Do you really want do remove %1? - - - - Do you really want do remove %1 file(s)? - - Do you really want do remove %1 file? - Do you really want do remove %1 files? - - - encoding @@ -1549,10 +1244,6 @@ uploading - - Do you really want do cancel uploading %1? - - QAction @@ -1640,10 +1331,6 @@ Append date and time to record file name - Reduced quality - Reduced quality - - Show ammo menu tooltips Show ammo menu tooltips @@ -1723,10 +1410,6 @@ - Default - Default - - hand drawn map... @@ -1814,10 +1497,6 @@ Teams - Weapons - Weapons - - Audio/Graphic options Audio/Graphic options @@ -1889,10 +1568,6 @@ Version - This program is distributed under the GNU General Public License - This program is distributed under the GNU General Public License - - Developers: Developers: @@ -1925,10 +1600,6 @@ Port: - Net nick - Net nick - - Resolution Resolution @@ -2005,10 +1676,6 @@ Locale - Restart game to apply - Restart game to apply - - Explosives Explosives @@ -2057,10 +1724,6 @@ - Password - Password - - % Get Away Time @@ -2071,7 +1734,7 @@ There are videos that are currently being processed. Exiting now will abort them. -Do yot really want to quit? +Do you really want to quit? @@ -2156,10 +1819,6 @@ QMessageBox - Network - Network - - Connection to server is lost Connection to server is lost @@ -2168,90 +1827,14 @@ Error - Failed to open data directory: -%1 -Please check your installation - Failed to open data directory: - %1 -Please check your installation - - - Weapons - Weapons - - - Can not edit default weapon set - Can not edit default weapon set - - - Can not delete default weapon set - Can not delete default weapon set - - - Really delete this weapon set? - Really delete this weapon set? - - - Can not overwrite default weapon set '%1'! - - - - All file associations have been set. - - - File association failed. - Teams - Teams - - - Really delete this team? - - - - Schemes - - - - Can not delete default scheme '%1'! - - - - Really delete this game scheme? - - - - Can not delete default weapon set '%1'! - - - - Fields required - - - Please fill out all fields - Success - - - - Successfully posted the issue on code.google.com! - - - - Error during authentication with www.google.com - - - - Error creating the issue - - - Error while authenticating at google.com: @@ -2265,22 +1848,202 @@ + + Teams - Are you sure? + + + + Do you really want to delete the team '%1'? + + + + Cannot delete default scheme '%1'! + + + + Please select a record from the list + + + + Unable to start server + + + + Hedgewars - Error + + + + Hedgewars - Success + + + + All file associations have been set + + + + Successfully posted the issue on hedgewars.googlecode.com + + + + Error during authentication at google.com + + + + Error reporting the issue, please try again later (or visit hedgewars.googlecode.com directly) + + + + Main - Error + + + + Cannot create directory %1 + Cannot create directory %1 + + + Failed to open data directory: +%1 + +Please check your installation! + + + + TCP - Error + + + + Unable to start the server: %1. + Unable to start the server: %1. + + + Unable to run engine at + + + + Error code: %1 + + + + Video upload - Error + + + + Netgame - Error + + + + Please select a server from the list + + + + Please enter room name + Please enter room name + + + Record Play - Error + + + + Please select record from the list + Please select record from the list + + + Cannot rename to + + + + Cannot delete file + + + + Room Name - Error + + + + Please select room from the list + Please select room from the list + + + Room Name - Are you sure? + + + + The game you are trying to join has started. +Do you still want to join the room? + The game you are trying to join has started. +Do you still want to join the room? + + + Schemes - Warning + + + + Schemes - Are you sure? + + + + Do you really want to delete the game scheme '%1'? + + + + Videos - Are you sure? + + + + Do you really want to delete the video '%1'? + + + + Do you really want to remove %1 file(s)? + + + + + + + Do you really want to cancel uploading %1? + + + + File error + + + + Cannot open '%1' for writing + + + + Cannot open '%1' for reading + + + + Cannot use the ammo '%1'! + + + + Weapons - Warning + + + + Cannot overwrite default weapon set '%1'! + + + + Cannot delete default weapon set '%1'! + + + + Weapons - Are you sure? + + + + Do you really want to delete the weapon set '%1'? + + QObject - Error - Error - - - Cannot create directory %1 - Cannot create directory %1 - - - OK - OK - - Nickname Nickname @@ -2389,37 +2152,6 @@ - QTableWidget - - Room Name - Room Name - - - C - C - - - T - T - - - Owner - Owner - - - Map - Map - - - Rules - Rules - - - Weapons - Weapons - - - RoomsListModel In progress @@ -2494,21 +2226,6 @@ - TCPBase - - Error - Error - - - Unable to start the server: %1. - Unable to start the server: %1. - - - Unable to run engine: %1 ( - Unable to run engine: %1 ( - - - ToggleButtonWidget Vampirism @@ -2551,10 +2268,6 @@ Invulnerable - Add Mines - Add Mines - - Random Order Random Order diff -r 3331b30e4ef1 -r 88fde28bbda6 share/hedgewars/Data/Locale/hedgewars_es.ts --- a/share/hedgewars/Data/Locale/hedgewars_es.ts Sun Oct 21 01:28:33 2012 +0400 +++ b/share/hedgewars/Data/Locale/hedgewars_es.ts Sat Nov 03 00:34:35 2012 +0400 @@ -20,21 +20,6 @@ - DrawMapWidget - - File error - Error de fichero - - - Cannot open file '%1' for writing - No se puede abrir el fichero '%1' en modo lectura - - - Cannot read file '%1' - No se puede leer '%1' - - - FreqSpinBox Never @@ -55,22 +40,10 @@ Editar armas - Error - Error - - - Illegal ammo scheme - Set de armas ilegal - - Edit schemes Editar modos de juego - When this option is enabled selecting a game scheme will auto-select a weapon (and viceversa) - Cuando esta opción esté activada escoger un modo de juego escogerá el set de armas correspondiente (y viceversa) - - When this option is enabled selecting a game scheme will auto-select a weapon Cuando esta opción esté activada escoger un modo de juego escogerá el set de armas correspondiente @@ -82,29 +55,13 @@ HWAskQuitDialog - Do yot really want to quit? + Do you really want to quit? HWChatWidget - %1 *** %2 has been removed from your ignore list - %1 *** %2 ha sido eliminado de tu lista de ignorados - - - %1 *** %2 has been added to your ignore list - %1 *** %2 has sido añadido a tu lista de ignorados - - - %1 *** %2 has been removed from your friends list - %1 *** %2 ha sido eliminado de tu lista de amigos - - - %1 *** %2 has been added to your friends list - %1 *** %2 ha sido añadido a tu lista de amigos - - %1 has been removed from your ignore list @@ -152,30 +109,10 @@ HWForm - Error - Error - - - OK - OK - - - Unable to start the server - No se pudo iniciar el servidor - - Cannot save record to file %1 No se pudo almacenar una entrada en el fichero %1 - new - Nuevo - - - Please select record from the list above - Por favor, selecciona una entrada de la lista - - DefaultTeam Equipo predeterminado @@ -202,10 +139,6 @@ - Password - Contraseña - - Your nickname %1 is registered on Hedgewars.org Please provide your password below @@ -224,17 +157,12 @@ Nick - Some one already uses - your nickname %1 -on the server. + No nickname supplied. + + + + Someone already uses your nickname %1 on the server. Please pick another nickname: - Ya hay alguien conectado -como %1 en estos momentos -en el servidor. -Por favor, introduce otro nick: - - - No nickname supplied. @@ -288,10 +216,6 @@ Lunático - Tunnel size - Tamaño del túnel - - Type Tipo @@ -366,20 +290,6 @@ Has sido expulsado - Password - Contraseña - - - Your nickname %1 is -registered on Hedgewars.org -Please provide your password -or pick another nickname: - El nick %1 ya está -registrado en Hedgewars.org -Por favor, introduce tu clave -o elige otro nick: - - %1 *** %2 has joined the room %1 *** %2 ha entrado en la sala @@ -396,30 +306,6 @@ %1 *** %2 ha salido - Your nickname %1 is -registered on Hedgewars.org -Please provide your password below -or pick another nickname in game config: - El nick %1 ya está registrado -en Hedgewars.org. Por favor, -introduce ahora tu clave de acceso -o elige otro nick en las preferencias del juego: - - - Nickname - Nick - - - Some one already uses - your nickname %1 -on the server. -Please pick another nickname: - Ya hay alguien conectado -como %1 en estos momentos -en el servidor. -Por favor, introduce otro nick: - - User quit @@ -480,14 +366,6 @@ PageAdmin - Server message: - Mensaje del servidor: - - - Set message - Establecer mensaje - - Clear Accounts Cache Vaciar caché de cuentas @@ -522,10 +400,6 @@ Connecting... Estableciendo conexión... - - Cancel - Cancelar - PageDrawMap @@ -550,10 +424,6 @@ Cargar mapa - Drawn Maps (*.hwmap);;All files (*.*) - Mapas dibujados a mano (*.hwmap);;Todos los ficheros (*.*) - - Save drawn map Guardar mapa @@ -584,24 +454,6 @@ PageGameStats - <p>The best shot award was won by <b>%1</b> with <b>%2</b> pts.</p> - <p>El premio al mejor disparo es para <b>%1</b>, con <b>%2</b> puntos.</p> - - - <p>The best killer is <b>%1</b> with <b>%2</b> kills in a turn.</p> - - <p>El asesino más eficiente es <b>%1</b>, con <b>%2</b> muerte en un solo turno.</p> - <p>El asesino más eficiente es <b>%1</b>, con <b>%2</b> muertes en un solo turno.</p> - - - - <p>A total of <b>%1</b> hedgehog(s) were killed during this round.</p> - - <p>Un total de <b>%1</b> erizo murió esta ronda.</p> - <p>Un total de <b>%1</b> erizos murieron esta ronda.</p> - - - Details Detalles @@ -638,10 +490,6 @@ (%1 bajas) - - (%1 kills) - (%1 bajas) - <b>%1</b> thought it's good to shoot his own hedgehogs with <b>%2</b> pts. @@ -681,14 +529,6 @@ PageMain - Local Game (Play a game on a single computer) - Juego local (Jugar en la misma computadora) - - - Network Game (Play a game across a network) - Juego en red (Jugar a través de la red) - - 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 Elige el mismo color que tus amigos para hacer una alianza con ellos. Cada uno de vosotros controlará sus propios erizos, pero la victoria o derrota será compartida por vuestra facción. @@ -704,11 +544,6 @@ Si no tienes claro qué vas a hacer y prefieres no desperdiciar munición puedes pasar un turno. ¡Pero ten cuidado, si dejas pasar muchos turnos puede que empiece la muerte súbita! - Want to save ropse? 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 - ¿Andas escaso de cuerdas? Suelta la cuerda mientras estés en el aire y vuelve a dispararla de nuevo. ¡Mientras no toques el suelo seguirás usando la misma cuerda sin desperdiciar munición adicional! - - 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 prefieres que nadie más use tu nick en el servidor oficial puedes registrarlo en http://www.hedgewars.org/. @@ -784,11 +619,6 @@ Los modos de juego especiales como "vampirismo" o "karma" te permiten desarrollar tácticas de juego completamente nuevas. ¡Pruébalos en tu próxima partida! - 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 versión para Windows de Hedgewars soporta Xfire. Recuerda añadie Hedgewars a tu lista de juegos favoritos para que tus amigos sepan cuándo estás jugando. - - You should never install Hedgewars on computers you don't own (school, university, work, etc.). Please ask the responsible person instead! Tips ¡Nunca instales Hedgewars en ordenadores que no te pertenezcan tales como los de tu escuela, universidad o trabajo sin perdir permiso primero a las personas responsables de los mismos! @@ -854,11 +684,6 @@ El piano es el ataque aéreo más destructivo del juego, aunque perderás el erizo que lo lance, así que úsalo con cuidado. - 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 - El abejorro puede ser complicado de usar. Su maniobrabilidad depende de su velocidad, así que intenta no lanzarlo a máxima potencia. - - Sticky Mines are a perfect tool to create small chain reactions knocking enemy hedgehogs into dire situations ... or water. Tips Las bombas lapa son perfectas para crear reacciones en cadena y mandar a tus enemigos al agua... o la Luna. @@ -884,11 +709,6 @@ El lanzallamas es un arma, pero puede usarse para excavar túneles en caso de necesidad. - Use the Incinerating Grenade to temporary keep hedgehogs from passing terrain such as tunnels or platforms. - Tips - Puedes usar el cóctel molotov para evitar que erizos enemigos crucen túneles angostos o puentes. - - Want to know who's behind the game? Click on the Hedgewars logo in the main menu to see the credits. Tips ¿Quieres saber quiénes son los desarrolladores del juego? Pulsa el logo del juego en la pantalla principal para ver los créditos. @@ -919,11 +739,6 @@ Puedes encontrar los archivos de configuración del juego en la carpeta "Mis Documentos\Hedgewars". Haz copias de seguridad de los mismos o cópialos a otro ordenador si lo deseas, pero no intentes editarlos a mano para evitar posibles pérdidas de datos. - 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 - Puedes encontrar los archivos de configuración del juego en la carpeta ~/.hedgewars. Haz copias de seguridad de los mismos o cópialos a otro ordenador si lo deseas, pero no intentes editarlos a mano para evitar posibles pérdidas de datos. - - 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 Puedes asociar los tipos de archivo relacionados, partidas guardadas y demos, con Hedgewars para lanzarlos directamente desde tu gestor de archivos o navegador favoritos. @@ -1011,35 +826,12 @@ - PageNet - - Error - Error - - - Please select server from the list above - Por favor, selecciona un servidor de la lista - - - PageNetGame Control Opciones - Error - Error - - - Please enter room name - Por favor, introduce un nombre para la sala - - - OK - OK - - DLC @@ -1082,18 +874,6 @@ Borrar equipo - New weapon scheme - Nuevo set de armas - - - Edit weapon scheme - Editar set de armas - - - Delete weapon scheme - Borrar set de armas - - You can't edit teams from team selection. Go back to main menu to add, edit or delete teams. No es posible editar equipos desde la pantalla de elección de equipo. Vuelve al menú principal para añadir, editar o borrar equipos. @@ -1169,14 +949,6 @@ PagePlayDemo - Error - Error - - - OK - OK - - Rename dialog Renombrar @@ -1184,18 +956,6 @@ Enter new file name: Introduce el nuevo nombre del fichero: - - Cannot rename to - No se pudo cambiar el nombre a - - - Cannot delete file - No se pudo eliminar el fichero - - - Please select record from the list - Por favor, selecciona una entrada de la lista - PageRoomsList @@ -1208,18 +968,6 @@ Entrar - Refresh - Actualizar - - - Error - Error - - - OK - OK - - Admin features Parámetros del administrador @@ -1228,68 +976,6 @@ Nombre de la sala: - This game is in lobby. -You may join and start playing once the game starts. - Este juego está en espera -Puedes entrar y empezar a jugar cuando la partida comience. - - - 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. - Esta partida se encuentra en progreso -Puedes unirte como espectador, pero tendrás que esperar a que el juego termine para poder jugar. - - - %1 is the host. He may adjust settings and start the game. - %1 es el anfitrión. Puede ajustar los parámetros del juego e iniciar la partida. - - - Random Map - Terreno aleatorio - - - Games may be played on precreated or randomized maps. - Las partidas pueden ser jugadas bien en mapas pre-creados o generados aleatoriamente. - - - The Game Scheme defines general options and preferences like Round Time, Sudden Death or Vampirism. - Los modos de juego definen opciones generales y preferencias como el tiempo de las rondas, muerte súbita o vampirismo. - - - The Weapon Scheme defines available weapons and their ammunition count. - El set de armas define las armas y munición disponibles. - - - There are %1 clients connected to this room. - - Hay %1 cliente en esta sala. - Hay %1 clientes en esta sala. - - - - There are %1 teams participating in this room. - - Hay %1 equipo participando en esta sala. - Hay %1 equipos participando en esta sala. - - - - Please enter room name - Por favor, introduce un nombre para la sala - - - Please select room from the list - Por favor, selecciona una sala de la lista - - - Random Maze - Laberinto aleatorio - - - State: - Estado: - - Rules: Reglas: @@ -1305,16 +991,6 @@ Clear Limpiar - - Warning - Aviso - - - The game you are trying to join has started. -Do you still want to join the room? - La partida a la que intentas unirte ya ha empezado. -¿Realmente deseas entrar en la sala? - %1 players online @@ -1334,10 +1010,6 @@ Borrar - Enable random mines - Habilitar minas aleatorias - - Gain 80% of the damage you do back in health Recuperar el 80% del daño infligido como vida @@ -1370,10 +1042,6 @@ ¡El terreno es indestructible! - Add an indestructable border around the terrain - Añade un borde indestructible alrededor del campo de juego - - Lower gravity Baja gravedad @@ -1476,30 +1144,6 @@ PageSinglePlayer - Simple Game (a quick game against the computer, settings are chosen for you) - Partida sencilla (Una partida rápida contra la computadora; los ajustes se eligen automáticamente) - - - Multiplayer (play a hotseat game against your friends, or AI teams) - Multijugador (Juega compartiendo el ordenador contra tus amigos o la computadora) - - - Training Mode (Practice your skills in a range of training missions). IN DEVELOPMENT - Entrenamiento (Practica tus habilidades en diversas misiones de entrenamiento). EN DESARROLLO - - - Demos (Watch recorded demos) - Demos (Visualiza demos previamente grabadas) - - - Load (Load a previously saved game) - Cargar (Cargar un juego previamente guardado) - - - Campaign Mode (...). IN DEVELOPMENT - Campaña (...) EN DESARROLLO - - Simple Game @@ -1593,21 +1237,6 @@ - Are you sure? - - - - Do you really want do remove %1? - - - - Do you really want do remove %1 file(s)? - - - - - - encoding @@ -1615,10 +1244,6 @@ uploading - - Do you really want do cancel uploading %1? - - QAction @@ -1706,10 +1331,6 @@ Comprobar actualizaciones al iniciar - Reduced quality - Reducir efectos gráficos (para ordenadores lentos) - - Show ammo menu tooltips Mostrar globos de ayuda sobre el armamento @@ -1789,42 +1410,6 @@ En progreso - Default - Predeterminado - - - Pro mode - Modo pro - - - Shoppa - Shoppa - - - Basketball - Baloncesto - - - Minefield - Campo de minas - - - Barrel mayhem - Bodega infernal - - - Tunnel hogs - Erizos subterráneos - - - Crazy - Lunático - - - Normal - Normal - - hand drawn map... Mapa dibujado a mano... @@ -1916,10 +1501,6 @@ Opciones de Audio y Gráficos - Weapons - Sets de armas - - Net game Juego en red @@ -1975,10 +1556,6 @@ QLabel - This program is distributed under the GNU General Public License - Este programa está distribuido bajo la licencia GNU General Public License - - Developers: Desarrolladores: @@ -2015,10 +1592,6 @@ Límite de FPS - Net nick - Apodo - - Server name: Nombre del servidor: @@ -2103,17 +1676,6 @@ Idioma - Restart game to apply - Requiere reiniciar el juego - - - This SVN 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! - Esta es una versión experimental del juego y puede no ser compatible con otras versiones del mismo, -así como carecer de algunas funcionalidades o simplemente funcionar mal. -¡Úsalo bajo tu propia responsalibidad! - - Explosives Explosivos @@ -2148,26 +1710,14 @@ Disminución de vida por turno en muerte súbita - Bind schemes and weapons - Enlazar modos y sets - - % Rope Length % longitud de las cuerdas - Gameplay - Tipo de juego - - Stereo rendering Estereoscopía - Game Options - Opciones de juego - - Style Estilo @@ -2176,10 +1726,6 @@ Modo de juego - Password - Contraseña - - % Get Away Time % duración de retirada @@ -2190,7 +1736,7 @@ There are videos that are currently being processed. Exiting now will abort them. -Do yot really want to quit? +Do you really want to quit? @@ -2275,10 +1821,6 @@ QMessageBox - Network - Red - - Connection to server is lost Se perdió la conexión con el servidor @@ -2287,90 +1829,14 @@ Error - Failed to open data directory: -%1 -Please check your installation - No de pudo abrir el directorio: -%1 -Por favor, compruebe que el juego está debidamente instalado - - - Weapons - Sets de armas - - - Can not edit default weapon set - No se puede editar el set de armas predefinido - - - Can not delete default weapon set - No se puede borrar el set de armas predefinido - - - Really delete this weapon set? - ¿Realmente quieres borrar este set de armas? - - - Can not overwrite default weapon set '%1'! - ¡No se puede sobreescribir el set de armas por defecto '%1'! - - - All file associations have been set. - Se reestablecieron todas las asociaciones de tipo de archivo. - - File association failed. No se pudieron asociar los tipos de fichero. - Teams - Equipos - - - Really delete this team? - ¿De verdad quieres eliminar este equipo? - - - Schemes - Modos de juego - - - Can not delete default scheme '%1'! - ¡No se puede eliminar el modo de juego predefinido '%1'! - - - Really delete this game scheme? - ¿De verdad quieres eliminar este modo de juego? - - - Can not delete default weapon set '%1'! - ¡No se puede eliminar el set de armas predefinido '%1'! - - - Fields required - - - Please fill out all fields - Success - - - - Successfully posted the issue on code.google.com! - - - - Error during authentication with www.google.com - - - - Error creating the issue - - - Error while authenticating at google.com: @@ -2384,22 +1850,202 @@ + + Teams - Are you sure? + + + + Do you really want to delete the team '%1'? + + + + Cannot delete default scheme '%1'! + + + + Please select a record from the list + + + + Unable to start server + + + + Hedgewars - Error + + + + Hedgewars - Success + + + + All file associations have been set + + + + Successfully posted the issue on hedgewars.googlecode.com + + + + Error during authentication at google.com + + + + Error reporting the issue, please try again later (or visit hedgewars.googlecode.com directly) + + + + Main - Error + + + + Cannot create directory %1 + No se pudo crear el directorio %1 + + + Failed to open data directory: +%1 + +Please check your installation! + + + + TCP - Error + + + + Unable to start the server: %1. + No se pudo iniciar el servidor: %1. + + + Unable to run engine at + + + + Error code: %1 + + + + Video upload - Error + + + + Netgame - Error + + + + Please select a server from the list + + + + Please enter room name + Por favor, introduce un nombre para la sala + + + Record Play - Error + + + + Please select record from the list + Por favor, selecciona una entrada de la lista + + + Cannot rename to + + + + Cannot delete file + + + + Room Name - Error + + + + Please select room from the list + Por favor, selecciona una sala de la lista + + + Room Name - Are you sure? + + + + The game you are trying to join has started. +Do you still want to join the room? + La partida a la que intentas unirte ya ha empezado. +¿Realmente deseas entrar en la sala? + + + Schemes - Warning + + + + Schemes - Are you sure? + + + + Do you really want to delete the game scheme '%1'? + + + + Videos - Are you sure? + + + + Do you really want to delete the video '%1'? + + + + Do you really want to remove %1 file(s)? + + + + + + + Do you really want to cancel uploading %1? + + + + File error + Error de fichero + + + Cannot open '%1' for writing + + + + Cannot open '%1' for reading + + + + Cannot use the ammo '%1'! + + + + Weapons - Warning + + + + Cannot overwrite default weapon set '%1'! + + + + Cannot delete default weapon set '%1'! + + + + Weapons - Are you sure? + + + + Do you really want to delete the weapon set '%1'? + + QObject - Error - Error - - - Cannot create directory %1 - No se pudo crear el directorio %1 - - - OK - OK - - Nickname Nick @@ -2479,10 +2125,6 @@ Asociar tipos de archivo - Set - Establecer - - more más @@ -2512,37 +2154,6 @@ - QTableWidget - - Room Name - Nombre de la sala - - - C - J - - - T - E - - - Owner - Propietario - - - Map - Mapa - - - Rules - Reglas - - - Weapons - Set de armas - - - RoomsListModel In progress @@ -2617,21 +2228,6 @@ - TCPBase - - Error - Error - - - Unable to start the server: %1. - No se pudo iniciar el servidor: %1. - - - Unable to run engine: %1 ( - No se pudo iniciar el motor: %1 ( - - - ToggleButtonWidget Vampirism @@ -2674,10 +2270,6 @@ Invulnerabilidad - Add Mines - Añadir minas - - Random Order Orden aleatorio diff -r 3331b30e4ef1 -r 88fde28bbda6 share/hedgewars/Data/Locale/hedgewars_fi.ts --- a/share/hedgewars/Data/Locale/hedgewars_fi.ts Sun Oct 21 01:28:33 2012 +0400 +++ b/share/hedgewars/Data/Locale/hedgewars_fi.ts Sat Nov 03 00:34:35 2012 +0400 @@ -20,21 +20,6 @@ - DrawMapWidget - - File error - - - - Cannot open file '%1' for writing - - - - Cannot read file '%1' - - - - FreqSpinBox Never @@ -55,14 +40,6 @@ Muokkaa aseita - Error - Virhe - - - Illegal ammo scheme - Virheellinen ammussuunnitelma - - Edit schemes Muokkaa kaavaa @@ -78,29 +55,13 @@ HWAskQuitDialog - Do yot really want to quit? + Do you really want to quit? HWChatWidget - %1 *** %2 has been removed from your ignore list - %1 *** %2 on poistanut sinut huomiotta jättö-listaltaan - - - %1 *** %2 has been added to your ignore list - %1 *** %2 on lisännyt sinut huomiotta jättö-listalleen - - - %1 *** %2 has been removed from your friends list - %1 *** %2 on poistanut sinut kaverilistaltaan - - - %1 *** %2 has been added to your friends list - %1 *** %2 on lisännyt sinut kaverilistalleen - - %1 has been removed from your ignore list @@ -148,30 +109,10 @@ HWForm - new - uusi - - - Error - Virhe - - - OK - OK - - - Unable to start the server - Palvelimen käynnistys ei onnistunut - - Cannot save record to file %1 Nauhoitetta ei voitu tallentaa tiedostoon %1 - Please select record from the list above - Ole hyvä ja valitse nauhoite ylläolevasta listasta - - DefaultTeam OletusJoukkue @@ -198,10 +139,6 @@ - Password - Salasana - - Your nickname %1 is registered on Hedgewars.org Please provide your password below @@ -220,16 +157,14 @@ Nimimerkki - Some one already uses - your nickname %1 -on the server. + No nickname supplied. + + + + Someone already uses your nickname %1 on the server. Please pick another nickname: - - No nickname supplied. - - HWGame @@ -355,20 +290,6 @@ Sinut potkittiin - Password - Salasana - - - Your nickname %1 is -registered on Hedgewars.org -Please provide your password -or pick another nickname: - Nimimerkkisi %1 on -rekisteröity Hedgewars.org:ssa -Ole hyvä ja syötä salasana -tai valitse toinen nimimerkki: - - %1 *** %2 has joined the room %1 *** %2 liittyi huoneeseen @@ -385,20 +306,6 @@ %1 *** %2 poistui (%3) - Your nickname %1 is -registered on Hedgewars.org -Please provide your password below -or pick another nickname in game config: - Nimimerkkisi %1 on -rekisteröity Hedgewars.org-sivustolla -Ole hyvä ja syötä salasanasi -tai aseta eri nimimerkki asetuksissa: - - - Nickname - Nimimerkki - - User quit @@ -459,14 +366,6 @@ PageAdmin - Server message: - Palvelimen viesti: - - - Set message - Aseta viesti - - Clear Accounts Cache Tyhjennä käyttäjätili-välimuisti @@ -501,10 +400,6 @@ Connecting... Yhdistetään... - - Cancel - Peruuta - PageDrawMap @@ -559,24 +454,6 @@ PageGameStats - <p>The best shot award was won by <b>%1</b> with <b>%2</b> pts.</p> - <p>Paras laukaus -mitalin voitti <b>%1</b> <b>%2</b> pisteellä</p> - - - <p>The best killer is <b>%1</b> with <b>%2</b> kills in a turn.</p> - - <p>Paras tappaja oli <b>%1</b> <b>yhdellä</b> tapolla vuoron aikana</p> - <p>Paras tappaja oli <b>%1</b> <b>%2</b>:llä tapolla </p> - - - - <p>A total of <b>%1</b> hedgehog(s) were killed during this round.</p> - - <p>Yhteensä <b>yksi</b> siili tapettiin tällä kierroksella.</p> - <p>Yhteensä <b>%1</b> siiltä tapettiin tällä kierroksella.</p> - - - Details Yksityiskohdat @@ -613,10 +490,6 @@ - - (%1 kills) - (%1 tappoa) - <b>%1</b> thought it's good to shoot his own hedgehogs with <b>%2</b> pts. @@ -656,14 +529,6 @@ PageMain - Local Game (Play a game on a single computer) - Paikallinen peli (Pelaa yhdellä tietokoneella) - - - Network Game (Play a game across a network) - Verkkopeli (Pelaa verkon yli) - - 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 Valitse sama väri kaverisi kanssa pelataksesi samassa joukkueessa. Kumpikin ohjaa omia siilejään, mutta voitatte ja häviätte yhdessä. @@ -679,11 +544,6 @@ Jos et tiedä mitä tehdä etkä halua tuhlata ammuksia, jätä vuoro väliin. Mutta älä anna ajan kulua liikaa koska Äkkikuolema koittaa ennemmin tai myöhemmin! - Want to save ropse? 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 - Haluatko säästää köysiä? Päästä köysi irti ilmassa ja ammu uudelleen. Niin pitkään kun et osu maahan, pääse käyttämään köyden uudelleen kuluttamatta ammuksia! - - 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 Jos haluat estää muita käyttämästä nimimerkkiäsi virallisella palvelimella, rekisteröi tunnus osoitteessa http://www.hedgewars.org/. @@ -759,11 +619,6 @@ Erityispelimoodit kuten 'Vampyrismi' ja 'Karma' mahdollistavat kokonaan uusien taktiikoiden kehittämisen. Kokeile niitä muokatussa pelissä! - The Windows version of Hedgewars supports Xfire. Make sure to add Hedgwars to its game list so your friends can see you playing. - Tips - Windows-versio Hedgewarsista tukee Xfireä. Lisää Hedgewars sen pelilistaan niin kaverisi näkee kun pelaat. - - You should never install Hedgewars on computers you don't own (school, university, work, etc.). Please ask the responsible person instead! Tips Sinun ei ikinä tulisi asentaa Hedgewarsia tietokoneille joita et omista (koulu, yliopisto, työpaikka jne.). Ole hvä ja pyydä vastuuhenkilöä tekemään se! @@ -829,11 +684,6 @@ Pianoisku on vahingollisin ilmaisku. Menetät siilen joka sen esittää, joten sillä on myös suuri huono puoli. - 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 - Mehiläinen voi olla hankala käyttää. Sen säde riippuu nopeudesta, joten älä käytä sitä täydellä voimalla - - Sticky Mines are a perfect tool to create small chain reactions knocking enemy hedgehogs into dire situations ... or water. Tips Tarttuvat miinat ovat täydellinen työkalu luomaan pieniä ketjureaktioita jotka vie vihollissiilit kauheisiin tilanteisiin...tai veteen. @@ -859,11 +709,6 @@ Liekinheitin on ase mutta sitä voi käyttää myös tunneleiden kaivamiseen. - Use the Incinerating Grenade to temporary keep hedgehogs from passing terrain such as tunnels or platforms. - Tips - Käytä palavaa kranaattia estämään siilia kulkemasta esimerkiksi tunneleihin ja tasoille. - - Want to know who's behind the game? Click on the Hedgewars logo in the main menu to see the credits. Tips Haluatko tietää ketkä ovat pelin takana? Klikkaa Hedgewars-logoa päävalikossa nähdäksesi tekijäluettelon. @@ -894,11 +739,6 @@ Löydät Hedgewars-asetustiedostot hakemistosta "Omat tiedostot\Hedgewars". Ota varmuuskopio tai ota ne mukaasi, mutta älä muokkaa niitä käsin. - 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 - Löydät Hedgewars-asetustiedostot "Hedgewars"-hakemistosta kotihakemistossasi. Ota varmuuskopio tai ota ne mukaasi, mutta älä muokkaa niitä käsin. - - 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 @@ -986,35 +826,12 @@ - PageNet - - Error - Virhe - - - Please select server from the list above - Ole hyvä ja valitse palvelin ylläolevasta listasta - - - PageNetGame Control Säädöt - Error - Virhe - - - Please enter room name - Ole hyvä ja syötä huoneen nimi - - - OK - OK - - DLC @@ -1057,18 +874,6 @@ Poista joukkue - New weapon scheme - Uusi ase - - - Edit weapon scheme - Muokkaa asesuunnitelmaa - - - Delete weapon scheme - Poista asesuunnitelma - - You can't edit teams from team selection. Go back to main menu to add, edit or delete teams. Et voi muokata joukkueita joukkuevalinnassa. Mene takaisin päävalikkoon lisätäksesi, muokataksesi tai poistaaksesi joukkueita. @@ -1144,14 +949,6 @@ PagePlayDemo - Error - Virhe - - - OK - OK - - Rename dialog Uudelleennimeämis-dialogi @@ -1159,18 +956,6 @@ Enter new file name: Syötä uusi tiedostonimi: - - Cannot rename to - Ei voida uudelleennimetä - - - Cannot delete file - Ei voida poistaa tiedostoa - - - Please select record from the list - Ole hyvä ja valitse nauhoite listasta - PageRoomsList @@ -1183,18 +968,6 @@ Liity - Refresh - Päivitä - - - Error - Virhe - - - OK - OK - - Admin features Ylläpitäjän ominaisuudet @@ -1203,68 +976,6 @@ Huoneen nimi: - This game is in lobby. -You may join and start playing once the game starts. - Tämä peli on eteisessä. -Voit liittyä ja alkaa pelaamaan sitten kun peli alkaa. - - - 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. - Tämä peli on menossa. -Voit liittyä ja seurata sitä, mutta sinun on odotettava pelin päättymistä päästäksesi pelaamaan. - - - %1 is the host. He may adjust settings and start the game. - %1 on isäntä. Hän voi säätää asetuksia ja aloittaa pelin. - - - Random Map - Satunnainen kartta - - - Games may be played on precreated or randomized maps. - Pelejä voi pelata valmiiksi luoduissa tai satunnaisesti tehdyissä kartoissa. - - - The Game Scheme defines general options and preferences like Round Time, Sudden Death or Vampirism. - Pelikaava määrittelee yleiset asetukset ja säädöt kuten kierrosajan, äkkikuoleman ja vampyrismin. - - - The Weapon Scheme defines available weapons and their ammunition count. - Asesuunnitelma määrittelee saatavilla olevat aseet ja niiden panosmäärät. - - - There are %1 clients connected to this room. - - Yksi asiakas on liittyneenä tähän huoneeseen - %1 asiakasta on liittyneenä tähän huoneeseen - - - - There are %1 teams participating in this room. - - Tässä huoneessa on osallistuneena yksi joukkue - Tässä huoneessa on osallistuneena %1 joukkuetta - - - - Please enter room name - Ole hyvä ja syötä huoneen nimi - - - Please select room from the list - Ole hyvä ja valitse huone listalta - - - Random Maze - Satunnainen sokkelo - - - State: - Tila: - - Rules: Säännöt: @@ -1280,16 +991,6 @@ Clear Tyhjennä - - Warning - Varoitus - - - The game you are trying to join has started. -Do you still want to join the room? - Peli johon yrität liittyä on jo alkanut. -Haluatko silti liittyä huoneeseen? - %1 players online @@ -1313,10 +1014,6 @@ Maata ei voi tuhota! - Add an indestructable border around the terrain - Lisää tuhoutumattomat reunat kartan ympärille - - Lower gravity Matalampi painovoima @@ -1329,10 +1026,6 @@ Kaikilla siileillä on oma suojakenttänsä - Enable random mines - Lisää miinoja satunnaisesti - - Gain 80% of the damage you do back in health Saa 80% aiheuttamastasi vahingosta takaisin omaan terveyteesi @@ -1451,30 +1144,6 @@ PageSinglePlayer - Simple Game (a quick game against the computer, settings are chosen for you) - Yksinkertainen peli (pikapeli tietokonetta vastaan, asetukset valitaan puolestasi) - - - Multiplayer (play a hotseat game against your friends, or AI teams) - Moninpeli (pelaa samalla koneella kavereitasi tai tekoälyä vastaan) - - - Training Mode (Practice your skills in a range of training missions). IN DEVELOPMENT - Harjoittelu (Harjoita taitojasi harjoitustasoissa). KEHITYKSEN ALLA - - - Demos (Watch recorded demos) - Demot (Katso nauhoitettuja demoja) - - - Load (Load a previously saved game) - Lataa (Lataa aikaisemmin tallennettu peli) - - - Campaign Mode (...). IN DEVELOPMENT - Kampanja-tila (...). KEHITYS KESKEN - - Simple Game @@ -1568,21 +1237,6 @@ - Are you sure? - - - - Do you really want do remove %1? - - - - Do you really want do remove %1 file(s)? - - - - - - encoding @@ -1590,10 +1244,6 @@ uploading - - Do you really want do cancel uploading %1? - - QAction @@ -1681,10 +1331,6 @@ Lisää päivämäärä ja aika nauhoitusten tiedostonimeen - Reduced quality - Huononnettu laatu - - Show ammo menu tooltips Näytä asevalikon vihjeet @@ -1764,38 +1410,6 @@ Kesken - Default - Oletus - - - Pro mode - Pro-tila - - - Shoppa - Shoppa - - - Basketball - Koripallo - - - Minefield - Miinakenttä - - - Barrel mayhem - Tynnyrikaaos - - - Tunnel hogs - Tunnelisiilit - - - Crazy - Sekopäinen - - hand drawn map... @@ -1883,10 +1497,6 @@ Joukkueet - Weapons - Aseet - - Net game Verkkopeli @@ -1958,10 +1568,6 @@ Versio - This program is distributed under the GNU General Public License - Tätä ohjelmaa levitetään GNU General Public Licence-lisensisn alla - - Developers: Kehittäjät: @@ -1994,10 +1600,6 @@ Portti: - Net nick - Verkkopeli-nimimerkki - - Resolution Resoluutio @@ -2074,10 +1676,6 @@ Kieli - Restart game to apply - Käynnistä peli uudelleen ottaaksesi muutokset käyttöön - - Explosives Räjähteet @@ -2126,10 +1724,6 @@ - Password - Salasana - - % Get Away Time @@ -2140,7 +1734,7 @@ There are videos that are currently being processed. Exiting now will abort them. -Do yot really want to quit? +Do you really want to quit? @@ -2225,10 +1819,6 @@ QMessageBox - Network - Verkko - - Connection to server is lost Yhteys palvelimeen katosi @@ -2237,90 +1827,14 @@ Virhe - Failed to open data directory: -%1 -Please check your installation - Data-hakemiston avaus epäonnistui: - %1 -Ole hyvä ja tarkista asennuksesi - - - Weapons - Aseet - - - Can not edit default weapon set - Oletus-asesettiä ei voi muokata - - - Can not delete default weapon set - Oletus-asesettiä ei voi poistaa - - - Really delete this weapon set? - Haluatko todella poistaa tämän asesetin? - - - Can not overwrite default weapon set '%1'! - Oletusasetussettiä '%1' ei voida ylikirjoittaa! - - - All file associations have been set. - - - File association failed. - Teams - Joukkueet - - - Really delete this team? - - - - Schemes - - - - Can not delete default scheme '%1'! - - - - Really delete this game scheme? - - - - Can not delete default weapon set '%1'! - - - - Fields required - - - Please fill out all fields - Success - - - - Successfully posted the issue on code.google.com! - - - - Error during authentication with www.google.com - - - - Error creating the issue - - - Error while authenticating at google.com: @@ -2334,22 +1848,202 @@ + + Teams - Are you sure? + + + + Do you really want to delete the team '%1'? + + + + Cannot delete default scheme '%1'! + + + + Please select a record from the list + + + + Unable to start server + + + + Hedgewars - Error + + + + Hedgewars - Success + + + + All file associations have been set + + + + Successfully posted the issue on hedgewars.googlecode.com + + + + Error during authentication at google.com + + + + Error reporting the issue, please try again later (or visit hedgewars.googlecode.com directly) + + + + Main - Error + + + + Cannot create directory %1 + Hakemiston %1 luonti epäonnistui + + + Failed to open data directory: +%1 + +Please check your installation! + + + + TCP - Error + + + + Unable to start the server: %1. + Palvelinta ei pystytty käynnistämään: %1. + + + Unable to run engine at + + + + Error code: %1 + + + + Video upload - Error + + + + Netgame - Error + + + + Please select a server from the list + + + + Please enter room name + Ole hyvä ja syötä huoneen nimi + + + Record Play - Error + + + + Please select record from the list + Ole hyvä ja valitse nauhoite listasta + + + Cannot rename to + + + + Cannot delete file + + + + Room Name - Error + + + + Please select room from the list + Ole hyvä ja valitse huone listalta + + + Room Name - Are you sure? + + + + The game you are trying to join has started. +Do you still want to join the room? + Peli johon yrität liittyä on jo alkanut. +Haluatko silti liittyä huoneeseen? + + + Schemes - Warning + + + + Schemes - Are you sure? + + + + Do you really want to delete the game scheme '%1'? + + + + Videos - Are you sure? + + + + Do you really want to delete the video '%1'? + + + + Do you really want to remove %1 file(s)? + + + + + + + Do you really want to cancel uploading %1? + + + + File error + + + + Cannot open '%1' for writing + + + + Cannot open '%1' for reading + + + + Cannot use the ammo '%1'! + + + + Weapons - Warning + + + + Cannot overwrite default weapon set '%1'! + + + + Cannot delete default weapon set '%1'! + + + + Weapons - Are you sure? + + + + Do you really want to delete the weapon set '%1'? + + QObject - Error - Virhe - - - Cannot create directory %1 - Hakemiston %1 luonti epäonnistui - - - OK - OK - - Nickname Nimimerkki @@ -2458,37 +2152,6 @@ - QTableWidget - - Room Name - Huoneen nimi - - - C - A - - - T - J - - - Owner - Omistaja - - - Map - Kartta - - - Rules - Säännöt - - - Weapons - Aseet - - - RoomsListModel In progress @@ -2563,21 +2226,6 @@ - TCPBase - - Error - Virhe - - - Unable to start the server: %1. - Palvelinta ei pystytty käynnistämään: %1. - - - Unable to run engine: %1 ( - Pelimoottorin ajo epäonnistui: %1 ( - - - ToggleButtonWidget Vampirism @@ -2620,10 +2268,6 @@ Vahingoittumaton - Add Mines - Lisää miinat - - Random Order Satunnainen Järjestys diff -r 3331b30e4ef1 -r 88fde28bbda6 share/hedgewars/Data/Locale/hedgewars_fr.ts --- a/share/hedgewars/Data/Locale/hedgewars_fr.ts Sun Oct 21 01:28:33 2012 +0400 +++ b/share/hedgewars/Data/Locale/hedgewars_fr.ts Sat Nov 03 00:34:35 2012 +0400 @@ -20,21 +20,6 @@ - DrawMapWidget - - File error - - - - Cannot open file '%1' for writing - - - - Cannot read file '%1' - - - - FreqSpinBox Never @@ -55,14 +40,6 @@ Éditer les armes - Error - Erreur - - - Illegal ammo scheme - Paramètre de munitions non autorisé - - Edit schemes Éditer les paramètres @@ -78,29 +55,13 @@ HWAskQuitDialog - Do yot really want to quit? + Do you really want to quit? HWChatWidget - %1 *** %2 has been removed from your ignore list - %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 votre liste de personnes ignorées - - - %1 *** %2 has been removed from your friends list - %1 *** %2 a été enlevé à votre liste d'amis - - - %1 *** %2 has been added to your friends list - %1 *** %2 a été ajouté à votre liste d'amis - - %1 has been removed from your ignore list @@ -148,30 +109,10 @@ HWForm - Error - Erreur - - - OK - OK - - Cannot save record to file %1 Impossible de sauvegarder la partie dans le fichier %1 - Unable to start the server - Impossible de démarrer le serveur - - - new - nouveau - - - Please select record from the list above - Veuillez sélectionner une partie enregistrée dans la liste ci-dessus - - DefaultTeam Équipe par défaut @@ -198,10 +139,6 @@ - Password - Mot de passe - - Your nickname %1 is registered on Hedgewars.org Please provide your password below @@ -220,16 +157,14 @@ Pseudo - Some one already uses - your nickname %1 -on the server. + No nickname supplied. + + + + Someone already uses your nickname %1 on the server. Please pick another nickname: - - No nickname supplied. - - HWGame @@ -355,20 +290,6 @@ Vous avez été expulsé - Password - Mot de passe - - - Your nickname %1 is -registered on Hedgewars.org -Please provide your password -or pick another nickname: - Votre pseudo %1 est -enregistré sur Hedgewars.org -Veuillez fournir votre mot de passe -ou choisir un nouveau pseudo : - - %1 *** %2 has joined the room %1 *** %2 a rejoint la salle @@ -385,20 +306,6 @@ %1 *** %2 est parti - Your nickname %1 is -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 : - - - Nickname - Pseudo - - User quit @@ -459,14 +366,6 @@ PageAdmin - Server message: - Message du serveur: - - - Set message - Définir le message - - Clear Accounts Cache Vider le cache des comptes @@ -501,10 +400,6 @@ Connecting... En connexion... - - Cancel - Annuler - PageDrawMap @@ -529,10 +424,6 @@ 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 @@ -563,24 +454,6 @@ PageGameStats - <p>The best shot award was won by <b>%1</b> with <b>%2</b> pts.</p> - <p>Le prix du meilleur tir revient à <b>%1</b> avec <b>%2</b> points.</p> - - - <p>The best killer is <b>%1</b> with <b>%2</b> kills in a turn.</p> - - <p>Le meilleur tueur est <b>%1</b> avec <b>%2</b> mort en un tour.</p> - <p>Le meilleur tueur est <b>%1</b> avec <b>%2</b> morts en un tour.</p> - - - - <p>A total of <b>%1</b> hedgehog(s) were killed during this round.</p> - - <p>Un total de <b>%1</b> hérisson a été tué pendant cette partie.</p> - <p>Un total de <b>%1</b> hérissons ont été tués pendant cette partie.</p> - - - Details Détails @@ -656,14 +529,6 @@ PageMain - Local Game (Play a game on a single computer) - Jeu en local (Jouer une partie sur son propre ordinateur) - - - Network Game (Play a game across a network) - Jeu en réseau (Jouer une partie sur le réseau) - - 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. @@ -754,11 +619,6 @@ 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 ! @@ -824,11 +684,6 @@ L'attaque du Piano est la plus dévastatrice des attaques aériennes. Mais la contrepartie est grande puisque vous perdrez le hérisson qui la lance. - 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. @@ -854,11 +709,6 @@ 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. @@ -914,11 +764,6 @@ La version Windows de Hedgewars supporte Xfire. Ajoutez Hedgewars à la liste des jeux pour que vos amis puissent vous voir jouer - The Homing Bee can be tricky to use. Its turn radius depends on it's velocity, so try to not use full power. - Tips - L'Abeille Missile peut être délicate à utiliser. Sa courbe de lancer dépend de sa vitesse, pour plus de précision ne l'envoyez pas à pleine puissance. - - Use the Molotov or Flame Thrower to temporary keep hedgehogs from passing terrain such as tunnels or platforms. Tips Utilisez le Lance-Flammes ou le Cocktail Molotov pour empêcher temporairement les hérissons de circuler dans les tunnels ou sur les plateformes. @@ -981,35 +826,12 @@ - PageNet - - Error - Erreur - - - Please select server from the list above - Veuillez sélectionner un serveur dans la liste ci-dessus - - - PageNetGame Control Contrôles - Error - Erreur - - - Please enter room name - Veuillez saisir le nom du salon - - - OK - OK - - DLC @@ -1127,14 +949,6 @@ PagePlayDemo - Error - Erreur - - - OK - OK - - Rename dialog Boîte de dialogue de renommage @@ -1142,18 +956,6 @@ Enter new file name: Entrez un nouveau nom de fichier: - - Cannot rename to - Impossible de renommer en - - - Cannot delete file - Impossible de supprimer le fichier - - - Please select record from the list - Veuillez sélectionner une partie dans cette liste - PageRoomsList @@ -1166,18 +968,6 @@ Rejoindre - Refresh - Rafraîchir - - - Error - Erreur - - - OK - OK - - Admin features Fonctionnalités d'administration @@ -1186,68 +976,6 @@ Nom du salon: - This game is in lobby. -You may join and start playing once the game starts. - Ce jeu est dans le lobby. -Vous pouvez le rejoindre et commencerez à jouer quand le jeu démarrera. - - - 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. - Ce jeu est en cours. -Vous pouvez le rejoindre et y assister maintenant mais vous devrez attendre la fin de la partie pour commencer à jouer. - - - %1 is the host. He may adjust settings and start the game. - %1 est l'hôte. Il peut modifier les options et lancer la partie. - - - Random Map - Carte Aléatoire - - - Games may be played on precreated or randomized maps. - Les parties peuvent être jouées sur des cartes aléatoires ou pré-créées. - - - The Game Scheme defines general options and preferences like Round Time, Sudden Death or Vampirism. - Les paramètres de jeu définissent les options et préférences générales comme la Durée d'un Tour, la Mort Subite ou le Vampirisme. - - - The Weapon Scheme defines available weapons and their ammunition count. - Les paramètres d'armes définissent les armes disponibles et leur nombre de munitions. - - - There are %1 clients connected to this room. - - Il y a %1 client connecté à cette salle. - Il y a %1 clients connectés à cette salle. - - - - There are %1 teams participating in this room. - - Il y a %1 équipe participant dans cette salle. - Il y a %1 équipes participant dans cette salle. - - - - Please enter room name - Veuillez saisir le nom du salon - - - Please select room from the list - Veuillez sélectionner un salon dans la liste - - - Random Maze - Labyrinthe aléatoire - - - State: - État : - - Rules: Règles : @@ -1263,15 +991,6 @@ 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 ? - %1 players online @@ -1291,10 +1010,6 @@ Supprimer - Enable random mines - Activer les mines aléatoires - - Gain 80% of the damage you do back in health 80% des dommages que vous infligez sont convertis en santé @@ -1327,10 +1042,6 @@ Le terrain est indestructible ! - Add an indestructable border around the terrain - Ajouter une bordure indestructible autour du terrain - - Lower gravity Gravité faible @@ -1433,30 +1144,6 @@ PageSinglePlayer - Simple Game (a quick game against the computer, settings are chosen for you) - Jeu en solo (rapide partie contre l'ordinateur, options choisies automatiquement) - - - Multiplayer (play a hotseat game against your friends, or AI teams) - Jeu à plusieurs (contre vos amis et/ou contre l'ordinateur) - - - Training Mode (Practice your skills in a range of training missions). IN DEVELOPMENT - Missions d'entraînement (Pratiquez vos talents dans une série de missions d'entraînement). EN DÉVELOPPEMENT - - - Demos (Watch recorded demos) - Démonstrations (Visionner les démonstrations enregistrées) - - - Load (Load a previously saved game) - Charger (Charger une partie préalablement sauvegardée) - - - Campaign Mode (...). IN DEVELOPMENT - Mode Campagne (...). EN DÉVELOPPEMENT - - Simple Game @@ -1550,21 +1237,6 @@ - Are you sure? - - - - Do you really want do remove %1? - - - - Do you really want do remove %1 file(s)? - - - - - - encoding @@ -1572,10 +1244,6 @@ uploading - - Do you really want do cancel uploading %1? - - QAction @@ -1663,10 +1331,6 @@ Vérifiez la présence de mises à jour au démarrage - Reduced quality - Qualité réduite - - Show ammo menu tooltips Montrer les astuces du menu des armes. @@ -1746,10 +1410,6 @@ En cours - Default - Défaut - - hand drawn map... Carte dessinée @@ -1849,10 +1509,6 @@ Partie en réseau - Weapons - Armes - - Game Modifiers Modificateurs de jeu @@ -1900,14 +1556,6 @@ QLabel - Net nick - Pseudo réseau - - - This program is distributed under the GNU General Public License - Ce programme est distribué sous la licence GNU GPL (General Public License) - - Resolution Résolution @@ -2028,10 +1676,6 @@ Langue - Restart game to apply - Relancez le jeu pour appliquer - - Explosives Explosifs @@ -2068,10 +1712,6 @@ % longueur de la Corde Ninja - Gameplay - Mode de jeu - - Stereo rendering Rendu stéréo @@ -2084,10 +1724,6 @@ - Password - Mot de passe - - % Get Away Time @@ -2098,7 +1734,7 @@ There are videos that are currently being processed. Exiting now will abort them. -Do yot really want to quit? +Do you really want to quit? @@ -2187,98 +1823,18 @@ Erreur - Failed to open data directory: -%1 -Please check your installation - Echec lors de l'accès au dossier do données: -%1 -Veuillez vérifier votre installation - - - Network - Réseau - - Connection to server is lost La connexion au serveur a été perdue - Weapons - Armes - - - Can not delete default weapon set - Impossible de supprimer le set d'armes par défaut - - - Really delete this weapon set? - Supprimer ce set d'armes ? - - - Can not edit default weapon set - Impossible d'éditer le set d'armes par défaut - - - 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 - - - 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. - - - Fields required - - - Please fill out all fields - Success - - - - Successfully posted the issue on code.google.com! - - - - Error during authentication with www.google.com - - - - Error creating the issue - - - Error while authenticating at google.com: @@ -2292,22 +1848,201 @@ + + Teams - Are you sure? + + + + Do you really want to delete the team '%1'? + + + + Cannot delete default scheme '%1'! + + + + Please select a record from the list + + + + Unable to start server + + + + Hedgewars - Error + + + + Hedgewars - Success + + + + All file associations have been set + + + + Successfully posted the issue on hedgewars.googlecode.com + + + + Error during authentication at google.com + + + + Error reporting the issue, please try again later (or visit hedgewars.googlecode.com directly) + + + + Main - Error + + + + Cannot create directory %1 + Impossible de créer le dossier %1 + + + Failed to open data directory: +%1 + +Please check your installation! + + + + TCP - Error + + + + Unable to start the server: %1. + Impossible de démarrer le serveur: %1. + + + Unable to run engine at + + + + Error code: %1 + + + + Video upload - Error + + + + Netgame - Error + + + + Please select a server from the list + + + + Please enter room name + Veuillez saisir le nom du salon + + + Record Play - Error + + + + Please select record from the list + Veuillez sélectionner une partie dans cette liste + + + Cannot rename to + + + + Cannot delete file + + + + Room Name - Error + + + + Please select room from the list + Veuillez sélectionner un salon dans la liste + + + Room Name - Are you sure? + + + + 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 ? + + + Schemes - Warning + + + + Schemes - Are you sure? + + + + Do you really want to delete the game scheme '%1'? + + + + Videos - Are you sure? + + + + Do you really want to delete the video '%1'? + + + + Do you really want to remove %1 file(s)? + + + + + + + Do you really want to cancel uploading %1? + + + + File error + + + + Cannot open '%1' for writing + + + + Cannot open '%1' for reading + + + + Cannot use the ammo '%1'! + + + + Weapons - Warning + + + + Cannot overwrite default weapon set '%1'! + + + + Cannot delete default weapon set '%1'! + + + + Weapons - Are you sure? + + + + Do you really want to delete the weapon set '%1'? + + QObject - Error - Erreur - - - Cannot create directory %1 - Impossible de créer le dossier %1 - - - OK - OK - - Nickname Pseudo @@ -2416,37 +2151,6 @@ - QTableWidget - - Room Name - Nom de la salle - - - C - C - - - T - É - - - Owner - Propriétaire - - - Map - Carte - - - Rules - Règles - - - Weapons - Armes - - - RoomsListModel In progress @@ -2521,21 +2225,6 @@ - TCPBase - - Error - Erreur - - - Unable to start the server: %1. - Impossible de démarrer le serveur: %1. - - - Unable to run engine: %1 ( - Impossible de démarrer le moteur: %1 ( - - - ToggleButtonWidget Vampirism @@ -2578,10 +2267,6 @@ Invulnérable - Add Mines - Ajouter des Mines - - Random Order Ordre aléatoire diff -r 3331b30e4ef1 -r 88fde28bbda6 share/hedgewars/Data/Locale/hedgewars_hu.ts --- a/share/hedgewars/Data/Locale/hedgewars_hu.ts Sun Oct 21 01:28:33 2012 +0400 +++ b/share/hedgewars/Data/Locale/hedgewars_hu.ts Sat Nov 03 00:34:35 2012 +0400 @@ -20,21 +20,6 @@ - DrawMapWidget - - File error - - - - Cannot open file '%1' for writing - - - - Cannot read file '%1' - - - - FreqSpinBox Never @@ -54,14 +39,6 @@ Fegyverek beállítása - Error - Hiba - - - Illegal ammo scheme - Szabálytalan lÅ‘szerséma - - Edit schemes Sémák szerkesztése @@ -77,29 +54,13 @@ HWAskQuitDialog - Do yot really want to quit? + Do you really want to quit? HWChatWidget - %1 *** %2 has been removed from your ignore list - %1 *** %2 eltávolítva a figyelmen kívül hagyottak listájáról - - - %1 *** %2 has been added to your ignore list - %1 *** %2 hozzáadva a figyelmen kívül hagyottak listájához - - - %1 *** %2 has been removed from your friends list - %1 *** %2 eltávolítva a barátlistáról - - - %1 *** %2 has been added to your friends list - %1 *** %2 hozzáadva a barátlistádhoz - - %1 has been removed from your ignore list @@ -147,30 +108,10 @@ HWForm - new - új - - - Error - Hiba - - - OK - OK - - - Unable to start the server - A szervert nem sikerült elindítani - - Cannot save record to file %1 Nem sikerült menteni a %1 fájlba - Please select record from the list above - Kérlek válassz a fentebbi listából - - DefaultTeam @@ -197,10 +138,6 @@ - Password - JElszó - - Your nickname %1 is registered on Hedgewars.org Please provide your password below @@ -216,16 +153,14 @@ Becenév - Some one already uses - your nickname %1 -on the server. + No nickname supplied. + + + + Someone already uses your nickname %1 on the server. Please pick another nickname: - - No nickname supplied. - - HWGame @@ -351,20 +286,6 @@ Kirúgtak - Password - JElszó - - - Your nickname %1 is -registered on Hedgewars.org -Please provide your password -or pick another nickname: - A %1 név már -regisztrálva van a Hedgewars.org-on -Ãrd be a jelszavad -vagy válassz másik nevet: - - %1 *** %2 has joined the room %1 *** %2 belépett a szobába @@ -381,10 +302,6 @@ %1 *** %2 távozott - Nickname - Becenév - - User quit @@ -445,14 +362,6 @@ PageAdmin - Server message: - Server message: - - - Set message - Set message - - Clear Accounts Cache Accounts Cache kiürítése @@ -487,10 +396,6 @@ Connecting... Csatlakozás... - - Cancel - Mégse - PageDrawMap @@ -545,22 +450,6 @@ PageGameStats - <p>The best shot award was won by <b>%1</b> with <b>%2</b> pts.</p> - <p>A legjobb lövés díját <b>%1</b> nyerte <b>%2</b> ponttal.</p> - - - <p>The best killer is <b>%1</b> with <b>%2</b> kills in a turn.</p> - - <p>A legjobb gyilkos <b>%1</b> volt, <b>%2</b> áldozattal egy körben.</p> - - - - <p>A total of <b>%1</b> hedgehog(s) were killed during this round.</p> - - <p>Összesen <b>%1</b> süni pusztult el ebben a játékban.</p> - - - Details @@ -630,14 +519,6 @@ PageMain - Local Game (Play a game on a single computer) - Helyi játék (Játssz egyetlen számítógépen) - - - Network Game (Play a game across a network) - Hálózati játék (Játék hálózaton keresztül) - - 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 @@ -935,35 +816,12 @@ - PageNet - - Error - Hiba - - - Please select server from the list above - Kérlek, válassz szervert a fenti listából - - - PageNetGame Control Irányítás - Error - Hiba - - - Please enter room name - Add meg a szoba nevét - - - OK - OK - - DLC @@ -1006,18 +864,6 @@ Csapat törlése - New weapon scheme - Új fegyverséma - - - Edit weapon scheme - Fegyverséma szerkesztése - - - Delete weapon scheme - Fegyverséma törlése - - You can't edit teams from team selection. Go back to main menu to add, edit or delete teams. @@ -1093,14 +939,6 @@ PagePlayDemo - Error - Hiba - - - OK - OK - - Rename dialog Párbeszéd átnevezése @@ -1108,18 +946,6 @@ Enter new file name: Add meg az új fájl nevét: - - Cannot rename to - Nem nevezhetÅ‘ át erre - - - - Cannot delete file - Fájl nem törölhetÅ‘ - - - Please select record from the list - Kérlek, válassz a listából - PageRoomsList @@ -1132,18 +958,6 @@ Csatlakozás - Refresh - Frissítés - - - Error - Hiba - - - OK - OK - - Admin features Adminisztráció @@ -1152,62 +966,6 @@ Szoba neve: - This game is in lobby. -You may join and start playing once the game starts. - Ez a játék elérhetÅ‘. -Csatlakozz és játssz, amikor a játék elkezdÅ‘dik. - - - 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. - Ez a játék folyamatban van. -Csatlakozhatsz mint megfigyelÅ‘, de a játszáshoz meg kell várnod a jelenlegi meccs befejezÅ‘dését. - - - %1 is the host. He may adjust settings and start the game. - %1 a host. Å kezeli a beállításokat és a játék indítását. - - - Random Map - Véletlen pálya - - - Games may be played on precreated or randomized maps. - A játékok elÅ‘készített vagy véletlen pályákon játszódnak. - - - The Game Scheme defines general options and preferences like Round Time, Sudden Death or Vampirism. - A játék sémája az általános beállításokat határozza meg. illetve egyéb dolgokat, mint egy kör ideje, Hirtelen halál vagy Vámpírizmus. - - - The Weapon Scheme defines available weapons and their ammunition count. - A fegyverséma az elérhetÅ‘ fegyverek és a lÅ‘szer mennyiségét határozza meg. - - - There are %1 clients connected to this room. - - Összesen %1 kliens csatlakozott a szobához. - - - - There are %1 teams participating in this room. - - Összesen %1 csapat van a szobában. - - - - Please enter room name - Add meg a szoba nevét - - - Please select room from the list - Válassz egy szobát a listából - - - Random Maze - Véletlen labirintus - - Rules: @@ -1223,15 +981,6 @@ Clear Törlés - - Warning - - - - The game you are trying to join has started. -Do you still want to join the room? - - %1 players online @@ -1254,10 +1003,6 @@ A talajt nem lehet elpusztítani! - Add an indestructable border around the terrain - A pálya köré egy elpusztíthatatlan keret felhúzása - - Lower gravity Gyengébb gravitáció @@ -1270,10 +1015,6 @@ Minden süninek saját erÅ‘tere van - Enable random mines - Véletlen aknaidÅ‘zítés engedélyezése - - Gain 80% of the damage you do back in health Az általad okozott sebzés 80% -át visszagyógyulod @@ -1392,26 +1133,6 @@ PageSinglePlayer - Simple Game (a quick game against the computer, settings are chosen for you) - Egyszerű játék (gyors játék a gép ellen, a beállításokat már kiválasztottuk neked) - - - Multiplayer (play a hotseat game against your friends, or AI teams) - Többjátékos (hotseat játék a barátaid vagy a gép csapatai ellen) - - - Training Mode (Practice your skills in a range of training missions). IN DEVELOPMENT - Gyakorlás (fejleszd magad a gyakorlóküldetéseken keresztül). FEJLESZTÉS ALATT - - - Demos (Watch recorded demos) - Demók (felvett demók megtekintése) - - - Load (Load a previously saved game) - Betöltés (korábbi mentett állás visszatöltése) - - Simple Game @@ -1504,20 +1225,6 @@ - Are you sure? - - - - Do you really want do remove %1? - - - - Do you really want do remove %1 file(s)? - - - - - encoding @@ -1525,10 +1232,6 @@ uploading - - Do you really want do cancel uploading %1? - - QAction @@ -1616,10 +1319,6 @@ Dátum és idÅ‘ hozzáadása a tároló fájl nevéhez - Reduced quality - Csökkentett minÅ‘ség - - Show ammo menu tooltips LÅ‘szer menü tippjeinek mutatása @@ -1699,10 +1398,6 @@ - Default - Default - - hand drawn map... @@ -1790,10 +1485,6 @@ Csapatok - Weapons - Fegyverek - - Audio/Graphic options Hang- és képi beállítások @@ -1865,10 +1556,6 @@ Verzió - This program is distributed under the GNU General Public License - Ez a program a GNU General Public License alatt terjesztett - - Developers: FejlesztÅ‘k: @@ -1901,10 +1588,6 @@ Port: - Net nick - Becenév a neten - - Resolution Felbontás @@ -1981,20 +1664,10 @@ Nyelv - Restart game to apply - Újraindításkor lép érvénybe - - Explosives Robbanótöltetek - This SVN 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! - Ez az SVN build még fejlesztés alatt áll és esetlegesen nem kompatibilis a játék más verzióival. -Néhány részlet esetleg nem működik vagy nincs készen. Csak saját felelÅ‘sségre használd! - - Tip: @@ -2039,10 +1712,6 @@ - Password - JElszó - - % Get Away Time @@ -2053,7 +1722,7 @@ There are videos that are currently being processed. Exiting now will abort them. -Do yot really want to quit? +Do you really want to quit? @@ -2138,10 +1807,6 @@ QMessageBox - Network - Hálózat - - Connection to server is lost A kapcsolat a szerverrel megszakadt @@ -2150,90 +1815,14 @@ Hiba - Failed to open data directory: -%1 -Please check your installation - Nem sikerült megnyitni az alábbi könyvtárat: - %1 -Kérlek, ellenÅ‘rizd a telepítésed - - - Weapons - Fegyverek - - - Can not edit default weapon set - Az alap fegverkészlet nem szerkeszthetÅ‘ - - - Can not delete default weapon set - Az alap fegyverkeszléet nem törölhetÅ‘ - - - Really delete this weapon set? - Valóban törlöd ezt a fegyverkészletet? - - - All file associations have been set. - - - File association failed. - Can not overwrite default weapon set '%1'! - - - - Teams - Csapatok - - - Really delete this team? - - - - Schemes - - - - Can not delete default scheme '%1'! - - - - Really delete this game scheme? - - - - Can not delete default weapon set '%1'! - - - - Fields required - - - Please fill out all fields - Success - - - - Successfully posted the issue on code.google.com! - - - - Error during authentication with www.google.com - - - - Error creating the issue - - - Error while authenticating at google.com: @@ -2247,22 +1836,200 @@ + + Teams - Are you sure? + + + + Do you really want to delete the team '%1'? + + + + Cannot delete default scheme '%1'! + + + + Please select a record from the list + + + + Unable to start server + + + + Hedgewars - Error + + + + Hedgewars - Success + + + + All file associations have been set + + + + Successfully posted the issue on hedgewars.googlecode.com + + + + Error during authentication at google.com + + + + Error reporting the issue, please try again later (or visit hedgewars.googlecode.com directly) + + + + Main - Error + + + + Cannot create directory %1 + Nem sikerült létrehozni %1 + + + Failed to open data directory: +%1 + +Please check your installation! + + + + TCP - Error + + + + Unable to start the server: %1. + Nem sikerült a szerverhez csatlakozni: %1. + + + Unable to run engine at + + + + Error code: %1 + + + + Video upload - Error + + + + Netgame - Error + + + + Please select a server from the list + + + + Please enter room name + Add meg a szoba nevét + + + Record Play - Error + + + + Please select record from the list + Kérlek, válassz a listából + + + Cannot rename to + + + + Cannot delete file + + + + Room Name - Error + + + + Please select room from the list + Válassz egy szobát a listából + + + Room Name - Are you sure? + + + + The game you are trying to join has started. +Do you still want to join the room? + + + + Schemes - Warning + + + + Schemes - Are you sure? + + + + Do you really want to delete the game scheme '%1'? + + + + Videos - Are you sure? + + + + Do you really want to delete the video '%1'? + + + + Do you really want to remove %1 file(s)? + + + + + + Do you really want to cancel uploading %1? + + + + File error + + + + Cannot open '%1' for writing + + + + Cannot open '%1' for reading + + + + Cannot use the ammo '%1'! + + + + Weapons - Warning + + + + Cannot overwrite default weapon set '%1'! + + + + Cannot delete default weapon set '%1'! + + + + Weapons - Are you sure? + + + + Do you really want to delete the weapon set '%1'? + + QObject - Error - Hiba - - - Cannot create directory %1 - Nem sikerült létrehozni %1 - - - OK - OK - - Nickname Becenév @@ -2371,37 +2138,6 @@ - QTableWidget - - Room Name - Szoba neve - - - C - C - - - T - T - - - Owner - Tulajdonos - - - Map - Pálya - - - Rules - Szabályok - - - Weapons - Fegyverek - - - RoomsListModel In progress @@ -2476,21 +2212,6 @@ - TCPBase - - Error - Hiba - - - Unable to start the server: %1. - Nem sikerült a szerverhez csatlakozni: %1. - - - Unable to run engine: %1 ( - Nem sikerült a játékot futtatni: %1 ( - - - ToggleButtonWidget Vampirism @@ -2533,10 +2254,6 @@ Sérthetetlenség - Add Mines - Aknák hozzáadása - - Random Order Véletlen sorrend diff -r 3331b30e4ef1 -r 88fde28bbda6 share/hedgewars/Data/Locale/hedgewars_it.ts --- a/share/hedgewars/Data/Locale/hedgewars_it.ts Sun Oct 21 01:28:33 2012 +0400 +++ b/share/hedgewars/Data/Locale/hedgewars_it.ts Sat Nov 03 00:34:35 2012 +0400 @@ -20,21 +20,6 @@ - DrawMapWidget - - File error - Errore con il file - - - Cannot open file '%1' for writing - Impossibile aprire il file '%1' in scrittura - - - Cannot read file '%1' - Impossibile leggere il file '%1' - - - FreqSpinBox Never @@ -55,14 +40,6 @@ Modifica armi - Error - Errore - - - Illegal ammo scheme - Schema delle armi non valido - - Edit schemes Modifica schemi @@ -78,29 +55,13 @@ HWAskQuitDialog - Do yot really want to quit? + Do you really want to quit? Vuoi veramente uscire? HWChatWidget - %1 *** %2 has been removed from your ignore list - %1 *** %2 è stato rimosso dalla tua lista ignorati - - - %1 *** %2 has been added to your ignore list - %1 *** %2 è stato aggiunto alla tua lista ignorati - - - %1 *** %2 has been removed from your friends list - %1 *** %2 è stato rimosso dalla tua lista amici - - - %1 *** %2 has been added to your friends list - %1 *** %2 è stato aggiunto alla tua lista amici - - %1 has been removed from your ignore list %1 è stato rimosso dalla tua lista ignorati @@ -144,38 +105,14 @@ %1 is not a valid command! %1 non è un comando valido! - - Kicking %1 ... - %1 sta per venire buttato fuori... - HWForm - Error - Errore - - - OK - OK - - - Unable to start the server - Impossibile avviare il server - - Cannot save record to file %1 Impossibile salvare il record al file %1 - new - nuovo - - - Please select record from the list above - Inserisci il record dalla lista sottostante - - DefaultTeam Squadra_Predefinita @@ -202,10 +139,6 @@ Gioco concluso per volere del giocatore - Password - Password - - Your nickname %1 is registered on Hedgewars.org Please provide your password below @@ -224,19 +157,14 @@ Nickname - Some one already uses - your nickname %1 -on the server. -Please pick another nickname: - Qualcun altro sta usando - il nickname %1 -sul server. -Per favore scegli un altro nickname: - - No nickname supplied. Nessun nickname valido inserito. + + Someone already uses your nickname %1 on the server. +Please pick another nickname: + + HWGame @@ -288,10 +216,6 @@ Stramba - Tunnel size - Grandezza Gallerie - - Type Tipo @@ -366,20 +290,6 @@ Sei stato espulso - Password - Password - - - Your nickname %1 is -registered on Hedgewars.org -Please provide your password -or pick another nickname: - Il nickname %1 è -registrato su Hedgewars.org -Per favore inserisci la tua password -o scegli un altro nickname: - - %1 *** %2 has joined the room %1 *** %2 è entrato nella stanza @@ -396,30 +306,6 @@ %1 *** %2 se n'è andato - Your nickname %1 is -registered on Hedgewars.org -Please provide your password below -or pick another nickname in game config: - Il nickname %1 è -registrato su Hedgewars.org -Per favore inserisci la tua password -o scegli un altro nickname: - - - Nickname - Nickname - - - Some one already uses - your nickname %1 -on the server. -Please pick another nickname: - Qualcun altro sta usando - il nickname %1 -sul server. -Per favore scegli un altro nickname: - - User quit Esci @@ -480,14 +366,6 @@ PageAdmin - Server message: - Messaggio dal server: - - - Set message - Imposta messaggio - - Clear Accounts Cache Pulisci la cache degli account @@ -522,10 +400,6 @@ Connecting... Connessione in corso... - - Cancel - Annulla - PageDrawMap @@ -550,10 +424,6 @@ Carica mappa disegnata - Drawn Maps (*.hwmap);;All files (*.*) - Mappe Disegnate (*.hwmap);;Tutti i file (*.*) - - Save drawn map Salva mappa disegnata @@ -584,24 +454,6 @@ PageGameStats - <p>The best shot award was won by <b>%1</b> with <b>%2</b> pts.</p> - <p>Il premio per il miglior colpo è stato vinto da <b>%1</b> , con <b>%2</b> punti.</p> - - - <p>The best killer is <b>%1</b> with <b>%2</b> kills in a turn.</p> - - <p>Il miglior killer è <b>%1</b> con <b>%2</b> uccisione in un turno.</p> - <p>Il miglior killer è <b>%1</b> con <b>%2</b> uccisioni in un turno.</p> - - - - <p>A total of <b>%1</b> hedgehog(s) were killed during this round.</p> - - <p>Durante questo round è stato ucciso <b>%1</b> riccio in totale.</p> - <p>Un totale di <b>%1</b> ricci sono stati uccisi durante questo round.</p> - - - Details Dettagli @@ -677,14 +529,6 @@ PageMain - Local Game (Play a game on a single computer) - Gioco locale (Gioca una partita su un singolo computer) - - - Network Game (Play a game across a network) - Gioco in rete (Gioca una partita attraverso la rete) - - 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 Scegli lo stesso colore di un amico per giocare in squadra. Ciascuno controllerà i propri ricci ma la vittoria o la sconfitta saranno comuni. @@ -920,11 +764,6 @@ La versione Windows di Hedgewars supporta Xfire. Assicurati di aggiungere Hedgewars alla sua lista giochi, così i tuoi amici potranno vederti giocare. - The Homing Bee can be tricky to use. Its turn radius depends on it's velocity, so try to not use full power. - Tips - L'Ape a Ricerca può essere complessa da usare. Il suo raggio di curvatura dipende dalla velocità, quindi prova a non usarla a piena potenza. - - Use the Molotov or Flame Thrower to temporary keep hedgehogs from passing terrain such as tunnels or platforms. Tips Usa la Bomba Molotov o il Lanciafiamme per impedire temporaneamente ai ricci di attraversari terreni pianeggianti, tunnel o collinette. @@ -987,35 +826,12 @@ - PageNet - - Error - Errore - - - Please select server from the list above - Seleziona il server dalla lista sottostante - - - PageNetGame Control Controllo - Error - Errore - - - Please enter room name - Inserisci il nome della stanza - - - OK - OK - - DLC DLC @@ -1058,18 +874,6 @@ Elimina squadra - New weapon scheme - Nuovo schema delle armi - - - Edit weapon scheme - Modifica schema delle armi - - - Delete weapon scheme - Elimina schema delle armi - - You can't edit teams from team selection. Go back to main menu to add, edit or delete teams. Non puoi modificare le squadre in questo modo. Vai al menu principale per aggiungere, modificare o eliminare squadre. @@ -1145,14 +949,6 @@ PagePlayDemo - Error - Errore - - - OK - OK - - Rename dialog Rinomina @@ -1160,18 +956,6 @@ Enter new file name: Inserisci il nome del file: - - Cannot rename to - Impossibile rinominare in - - - Cannot delete file - Impossibile cancellare il file - - - Please select record from the list - Seleziona un record dalla lista - PageRoomsList @@ -1184,18 +968,6 @@ Entra - Refresh - Aggiorna - - - Error - Errore - - - OK - OK - - Admin features Opzioni amministrative @@ -1204,68 +976,6 @@ Nome stanza: - This game is in lobby. -You may join and start playing once the game starts. - Questa partita è nella lobby. -Puoi entrare e iniziare a giocare non appena inizia la partita. - - - 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. - Questa partita è in corso. -Puoi entrare come spettatore ma dovrai aspettare la fine della partita per giocare. - - - %1 is the host. He may adjust settings and start the game. - %1 è l'host. Può modificare le impostazioni e avviare il gioco. - - - Random Map - Mappa casuale - - - Games may be played on precreated or randomized maps. - Le partite possono essere giocate su mappe predefinite, casuali o disegnate. - - - The Game Scheme defines general options and preferences like Round Time, Sudden Death or Vampirism. - Lo Schema di Gioco definisce le opzioni generali e le preferenze come il tempo per ogni turno, Sudden Death o Vampirismo. - - - The Weapon Scheme defines available weapons and their ammunition count. - Lo Schema delle Armi definisce le armi disponibili e le munizioni per ognuna di esse. - - - There are %1 clients connected to this room. - - E' presente %1 utente connesso a questa stanza. - Sono presenti %1 utenti connessi a questa stanza. - - - - There are %1 teams participating in this room. - - E' presente %1 squadra partecipante in questa stanza. - Sono presenti %1 squadre partecipanti in questa stanza. - - - - Please enter room name - Inserisci il nome della stanza - - - Please select room from the list - Seleziona la stanza dalla lista - - - Random Maze - Labirinto Casuale - - - State: - Stato: - - Rules: Regole: @@ -1281,16 +991,6 @@ Clear Cancella - - Warning - Attenzione - - - The game you are trying to join has started. -Do you still want to join the room? - La partita a cui stai cercando di unirti è già iniziata. -Voui comunque entrare nella stanza? - %1 players online @@ -1302,10 +1002,6 @@ PageScheme - Enable random mines - Abilita mine casuali - - Gain 80% of the damage you do back in health Guadagna in salute l'80% del danno che fai @@ -1346,10 +1042,6 @@ Il terreno non può essere distrutto! - Add an indestructable border around the terrain - Aggiungi un bordo indistruttibile intorno al terreno - - Lower gravity Gravità zero @@ -1452,38 +1144,6 @@ PageSinglePlayer - Simple Game (a quick game against the computer, settings are chosen for you) - Partita singola (una partita veloce contro il computer, con impostazioni standard e squadre casuali) - - - Multiplayer (play a hotseat game against your friends, or AI teams) - Multigiocatore (Gioca contro i tuoi amici o contro squadre controllate dal computer con impostazioni e squadre personalizzate) - - - Training Mode (Practice your skills in a range of training missions). IN DEVELOPMENT - Modalità Allenamento (Allena le tue abilità in una gamma di missioni). - - - Demos (Watch recorded demos) - Demo (Guarda le partite registrate) - - - Load (Load a previously saved game) - Carica (Carica una partita precedentemente salvata) - - - Campaign Mode (...). IN DEVELOPMENT - Modalità Campagna. IN SVILUPPO - - - Campaign Mode (...) - Modalità Campagna. - - - Training Mode (Practice your skills in a range of training missions) - Modalità allenamento e missioni (metti in pratica le tue abilità in una vasta gamma di missioni speciali) - - Simple Game Partita Semplice @@ -1577,21 +1237,6 @@ Dimensione: - Are you sure? - Sei sicuro? - - - Do you really want do remove %1? - Vuoi veramente cancellare %1? - - - Do you really want do remove %1 file(s)? - - Vuoi veramente cancellare %1 file(s)? - Vuoi veramente cancellare %1 file(s)? - - - encoding encoding @@ -1599,10 +1244,6 @@ uploading caricamento - - Do you really want do cancel uploading %1? - Vuoi veramente sospendere il carimento del file %1? - QAction @@ -1690,10 +1331,6 @@ Concatena data e ora di registrazione al nome file - Reduced quality - Qualità ridotta - - Show ammo menu tooltips Mostra suggerimenti nel menu armi @@ -1773,10 +1410,6 @@ In corso - Default - Predefinito - - hand drawn map... Mappa disegnata... @@ -1868,10 +1501,6 @@ Opzioni Audio/Grafica - Weapons - Armi - - Net game Gioco in rete @@ -1935,10 +1564,6 @@ Mine - This program is distributed under the GNU General Public License - Questo programma è distribuito sotto licenza GNU General Public License - - Developers: Sviluppatori: @@ -1975,10 +1600,6 @@ Limite FPS - Net nick - Nickname di rete - - Server name: Nome del server: @@ -2055,16 +1676,6 @@ Lingua - Restart game to apply - Riavvia il gioco per applicare le impostazioni - - - This SVN 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! - Questa versione SVN è in corso d'opera e può non essere compatibile con le altre versioni del gioco. -Alcune opzioni potrebbero essere incomplete o non funzionanti. Usatela a vostro rischio! - - Explosives Esplosivi @@ -2101,18 +1712,10 @@ % Lunghezza della Corda - Gameplay - Tipo di gioco - - Stereo rendering Resa stereo - Game Options - Opzioni di gioco - - Style Stile @@ -2121,10 +1724,6 @@ Schema - Password - Password - - % Get Away Time % Tempo Regalo (Get Away Time) @@ -2135,7 +1734,7 @@ There are videos that are currently being processed. Exiting now will abort them. -Do yot really want to quit? +Do you really want to quit? Ci sono video che stanno ancora venendo elaborati. Uscire ora annullerà questo processo e conseguentemente i video non verrano salvati. Vuoi veramente uscire? @@ -2222,10 +1821,6 @@ QMessageBox - Network - Rete - - Connection to server is lost Connessione con il server persa @@ -2234,90 +1829,14 @@ Errore - Failed to open data directory: -%1 -Please check your installation - Impossibile aprire la directory: -%1 -Controllare la propria installazione - - - Weapons - Armi - - - Can not edit default weapon set - Non è possibile modificare il set di armi predefinito - - - Can not delete default weapon set - Non è possibile eliminare il set di armi predefinito - - - Really delete this weapon set? - Vuoi davvero eliminare questo set di armi? - - - Can not overwrite default weapon set '%1'! - Impossibile sovrascrivere il set delle armi predefinito '%1'! - - - All file associations have been set. - Associazione delle estensioni a Hedgewars completata con successo. - - File association failed. Associazione delle estensioni a Hedgewars fallita. - Teams - Squadre - - - Really delete this team? - Voui davvero eliminare questa squadra? - - - Schemes - Schemi di gioco - - - Can not delete default scheme '%1'! - Impossibile eliminare lo schema di gioco predefinito '%1'! - - - Really delete this game scheme? - Vuoi davvero eliminare questo schema di gioco? - - - Can not delete default weapon set '%1'! - Impossibile elimininare il set delle armi predefinito '%1'! - - - Fields required - Campi richiesti - - Please fill out all fields E' necessario compilare tutti i campi - Success - Avvenuto con successo - - - Successfully posted the issue on code.google.com! - Errore segnalato con successo su code.google.com! - - - Error during authentication with www.google.com - Errore durante l'autenticazione con il server www.google.com - - - Error creating the issue - Errore nella segnalazione dell'errore - - Error while authenticating at google.com: Errore durante l'autenticazione su google.com: @@ -2331,22 +1850,202 @@ Errore nell'invio dei dati a youtube.com: + + Teams - Are you sure? + + + + Do you really want to delete the team '%1'? + + + + Cannot delete default scheme '%1'! + + + + Please select a record from the list + + + + Unable to start server + + + + Hedgewars - Error + + + + Hedgewars - Success + + + + All file associations have been set + + + + Successfully posted the issue on hedgewars.googlecode.com + + + + Error during authentication at google.com + + + + Error reporting the issue, please try again later (or visit hedgewars.googlecode.com directly) + + + + Main - Error + + + + Cannot create directory %1 + Impossibile creare la directory %1 + + + Failed to open data directory: +%1 + +Please check your installation! + + + + TCP - Error + + + + Unable to start the server: %1. + Impossibile avviare il server: %1. + + + Unable to run engine at + + + + Error code: %1 + + + + Video upload - Error + + + + Netgame - Error + + + + Please select a server from the list + + + + Please enter room name + Inserisci il nome della stanza + + + Record Play - Error + + + + Please select record from the list + Seleziona un record dalla lista + + + Cannot rename to + + + + Cannot delete file + + + + Room Name - Error + + + + Please select room from the list + Seleziona la stanza dalla lista + + + Room Name - Are you sure? + + + + The game you are trying to join has started. +Do you still want to join the room? + La partita a cui stai cercando di unirti è già iniziata. +Voui comunque entrare nella stanza? + + + Schemes - Warning + + + + Schemes - Are you sure? + + + + Do you really want to delete the game scheme '%1'? + + + + Videos - Are you sure? + + + + Do you really want to delete the video '%1'? + + + + Do you really want to remove %1 file(s)? + + + + + + + Do you really want to cancel uploading %1? + + + + File error + Errore con il file + + + Cannot open '%1' for writing + + + + Cannot open '%1' for reading + + + + Cannot use the ammo '%1'! + + + + Weapons - Warning + + + + Cannot overwrite default weapon set '%1'! + + + + Cannot delete default weapon set '%1'! + + + + Weapons - Are you sure? + + + + Do you really want to delete the weapon set '%1'? + + QObject - Error - Errore - - - Cannot create directory %1 - Impossibile creare la directory %1 - - - OK - OK - - Nickname Nickname @@ -2455,37 +2154,6 @@ - QTableWidget - - Room Name - Nome della Stanza - - - C - C - - - T - T - - - Owner - Proprietario - - - Map - Mappa - - - Rules - Regole - - - Weapons - Armi - - - RoomsListModel In progress @@ -2560,21 +2228,6 @@ - TCPBase - - Error - Errore - - - Unable to start the server: %1. - Impossibile avviare il server: %1. - - - Unable to run engine: %1 ( - Impossibile eseguire il motore: %1 ( - - - ToggleButtonWidget Vampirism @@ -2617,10 +2270,6 @@ Invulnerabilità - Add Mines - Aggiungi mine - - Random Order Ordine Casuale diff -r 3331b30e4ef1 -r 88fde28bbda6 share/hedgewars/Data/Locale/hedgewars_ja.ts --- a/share/hedgewars/Data/Locale/hedgewars_ja.ts Sun Oct 21 01:28:33 2012 +0400 +++ b/share/hedgewars/Data/Locale/hedgewars_ja.ts Sat Nov 03 00:34:35 2012 +0400 @@ -20,21 +20,6 @@ - DrawMapWidget - - File error - - - - Cannot open file '%1' for writing - - - - Cannot read file '%1' - - - - FreqSpinBox Never @@ -54,14 +39,6 @@ 武器を編集 - Error - エラー - - - Illegal ammo scheme - 弾薬é…分ã¯ä¸è¦å‰‡ - - Edit schemes ã—ãã¿ã‚’編集 @@ -77,29 +54,13 @@ HWAskQuitDialog - Do yot really want to quit? + Do you really want to quit? 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 ã•ã‚“ã¯å‹é”リストã«è¿½åŠ ã•ã‚Œã¦ã„ã¾ã™ - - %1 has been removed from your ignore list @@ -147,30 +108,10 @@ HWForm - new - ä½œæˆ - - - Error - エラー - - - OK - OK - - - Unable to start the server - サーãƒãƒ¼ã®ã‚¹ã‚¿ãƒ¼ãƒˆãŒä¸å¯èƒ½ - - Cannot save record to file %1 ファイル%1ã«ä¿å­˜ã™ã‚‹ã“ã¨ãŒã§ãã¾ã›ã‚“ - Please select record from the list above - 上方ã®ãƒªã‚¹ãƒˆã‹ã‚‰ãƒ¬ã‚³ãƒ¼ãƒ‰ã‚’é¸ã‚“ã§ä¸‹ã•ã„ - - DefaultTeam @@ -197,10 +138,6 @@ - Password - パスワード - - Your nickname %1 is registered on Hedgewars.org Please provide your password below @@ -220,16 +157,14 @@ - Some one already uses - your nickname %1 -on the server. + No nickname supplied. + + + + Someone already uses your nickname %1 on the server. Please pick another nickname: - - No nickname supplied. - - HWGame @@ -355,10 +290,6 @@ ã‘ã¨ã°ã•ã‚Œã¾ã—㟠- Password - パスワード - - %1 *** %2 has joined the room %1 *** %2 ã•ã‚“ã¯ãƒ«ãƒ¼ãƒ ã«å‚加ã—ã¦ã„ã¾ã™ @@ -375,17 +306,6 @@ %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ã«ç™»éŒ²ã•ã‚Œã¾ã—ãŸã€‚ -下ã«ãƒ‘スワードを入力ã—ã¦ã€ã¾ãŸã¯ -ゲーム構æˆã«åˆ¥ã®åã‚’é¸æŠžã—ã¦ãã ã•ã„: - - - User quit @@ -480,10 +400,6 @@ Connecting... - - Cancel - キャンセル - PageDrawMap @@ -538,10 +454,6 @@ PageGameStats - <p>The best shot award was won by <b>%1</b> with <b>%2</b> pts.</p> - <p> <b>%2</b> ã§ã€€<b>%1</b> ãŒä¸€ç•ªè‰¯ã„ショットã®è³žã‚’もらã£ãŸã€€</p> - - Details @@ -611,14 +523,6 @@ 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 @@ -916,35 +820,12 @@ - PageNet - - Error - エラー - - - Please select server from the list above - 下ã®ãƒªã‚¹ãƒˆã®ä¸­ã§ã‚µãƒ¼ãƒãƒ¼ã‚’é¸æŠžä¸‹ã•ã„ - - - PageNetGame Control コントロール - Error - エラー - - - Please enter room name - ルームåを入力ã—ã¦ãã ã•ã„ - - - OK - - - DLC @@ -1062,14 +943,6 @@ PagePlayDemo - Error - エラー - - - OK - OK - - Rename dialog Rename dialog @@ -1077,18 +950,6 @@ Enter new file name: æ–°ã—ã„ファイルå: - - Cannot rename to - Cannot rename to - - - Cannot delete file - ファイル削除ã¯ä¸å¯èƒ½ - - - Please select record from the list - 録画をé¸æŠžä¸‹ã•ã„ - PageRoomsList @@ -1101,18 +962,6 @@ 接続 - Refresh - æ›´æ–° - - - Error - エラー - - - OK - OK - - Admin features アドミン機能 @@ -1121,19 +970,6 @@ ルームå: - This game is in lobby. -You may join and start playing once the game starts. - ã“ã®ã‚²ãƒ¼ãƒ ã¯ãƒ­ãƒ“ー中。 - - - Please enter room name - ルームåを入力ã—ã¦ãã ã•ã„ - - - Please select room from the list - - - Rules: @@ -1149,15 +985,6 @@ Clear - - Warning - - - - The game you are trying to join has started. -Do you still want to join the room? - - %1 players online @@ -1310,26 +1137,6 @@ PageSinglePlayer - Simple Game (a quick game against the computer, settings are chosen for you) - ç°¡å˜ã‚²ãƒ¼ãƒ  (パソコンã¨ã®ã‚²ãƒ¼ãƒ ã€è‡ªå‹•è¨­å®š) - - - 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) - ロード (ãã®å‰ä¿å­˜ã—ãŸã‚²ãƒ¼ãƒ ã‚’ã‚„ã‚‹) - - Simple Game @@ -1422,20 +1229,6 @@ - Are you sure? - - - - Do you really want do remove %1? - - - - Do you really want do remove %1 file(s)? - - - - - encoding @@ -1443,10 +1236,6 @@ uploading - - Do you really want do cancel uploading %1? - - QAction @@ -1613,10 +1402,6 @@ - Default - デフォールト - - hand drawn map... @@ -1704,10 +1489,6 @@ ãƒãƒ¼ãƒ  - Weapons - 武器 - - Audio/Graphic options オディオ/ç”»é¢ è¨­å®š @@ -1779,10 +1560,6 @@ ãƒãƒ¼ã‚·ãƒ§ãƒ³ - This program is distributed under the GNU General Public License - This program is distributed under the GNU General Public License - - Developers: 開発者: @@ -1815,10 +1592,6 @@ Port: - Net nick - ãƒãƒƒãƒˆåˆ¥å - - Resolution Resolution @@ -1943,10 +1716,6 @@ - Password - パスワード - - % Get Away Time @@ -1957,7 +1726,7 @@ There are videos that are currently being processed. Exiting now will abort them. -Do yot really want to quit? +Do you really want to quit? @@ -2042,10 +1811,6 @@ QMessageBox - Network - ãƒãƒƒãƒˆãƒ¯ãƒ¼ã‚¯ - - Connection to server is lost サーãƒãƒ¼ã®æŽ¥ç¶šã¯åˆ‡æ–­ã•ã‚ŒãŸ @@ -2054,90 +1819,14 @@ エラー - Failed to open data directory: -%1 -Please check your installation - フォルダー - %1 ã¯é–‹ã‹ã‚Œãªã‹ã£ãŸ -インストールをãƒã‚§ãƒƒã‚¯ã—ã¦ãã ã•ã„ - - - Weapons - 武器 - - - Can not edit default weapon set - デフォールトセットã®ç·¨é›†ã¯ä¸å¯èƒ½ - - - Can not delete default weapon set - デフォールトセットã®å‰Šé™¤ã¯ä¸å¯èƒ½ - - - Really delete this weapon set? - 本当ã«ã“ã®ãƒ‡ãƒ•ã‚©ãƒ¼ãƒ«ãƒˆã‚»ãƒƒãƒˆã‚’削除ã™ã‚‹ï¼Ÿ - - - Can not overwrite default weapon set '%1'! - - - - All file associations have been set. - - - File association failed. - Teams - ãƒãƒ¼ãƒ  - - - Really delete this team? - - - - Schemes - - - - Can not delete default scheme '%1'! - - - - Really delete this game scheme? - - - - Can not delete default weapon set '%1'! - - - - Fields required - - - Please fill out all fields - Success - - - - Successfully posted the issue on code.google.com! - - - - Error during authentication with www.google.com - - - - Error creating the issue - - - Error while authenticating at google.com: @@ -2151,22 +1840,200 @@ + + Teams - Are you sure? + + + + Do you really want to delete the team '%1'? + + + + Cannot delete default scheme '%1'! + + + + Please select a record from the list + + + + Unable to start server + + + + Hedgewars - Error + + + + Hedgewars - Success + + + + All file associations have been set + + + + Successfully posted the issue on hedgewars.googlecode.com + + + + Error during authentication at google.com + + + + Error reporting the issue, please try again later (or visit hedgewars.googlecode.com directly) + + + + Main - Error + + + + Cannot create directory %1 + フォルダー%1作æˆæ‹’å¦ + + + Failed to open data directory: +%1 + +Please check your installation! + + + + TCP - Error + + + + Unable to start the server: %1. + サーãƒãƒ¼%1ã®èµ·å‹•ã¯å‡ºæ¥ãªã‹ã£ãŸ + + + Unable to run engine at + + + + Error code: %1 + + + + Video upload - Error + + + + Netgame - Error + + + + Please select a server from the list + + + + Please enter room name + ルームåを入力ã—ã¦ãã ã•ã„ + + + Record Play - Error + + + + Please select record from the list + 録画をé¸æŠžä¸‹ã•ã„ + + + Cannot rename to + + + + Cannot delete file + + + + Room Name - Error + + + + Please select room from the list + + + + Room Name - Are you sure? + + + + The game you are trying to join has started. +Do you still want to join the room? + + + + Schemes - Warning + + + + Schemes - Are you sure? + + + + Do you really want to delete the game scheme '%1'? + + + + Videos - Are you sure? + + + + Do you really want to delete the video '%1'? + + + + Do you really want to remove %1 file(s)? + + + + + + Do you really want to cancel uploading %1? + + + + File error + + + + Cannot open '%1' for writing + + + + Cannot open '%1' for reading + + + + Cannot use the ammo '%1'! + + + + Weapons - Warning + + + + Cannot overwrite default weapon set '%1'! + + + + Cannot delete default weapon set '%1'! + + + + Weapons - Are you sure? + + + + Do you really want to delete the weapon set '%1'? + + QObject - Error - エラー - - - Cannot create directory %1 - フォルダー%1作æˆæ‹’å¦ - - - OK - オケ - - Nickname @@ -2275,17 +2142,6 @@ - QTableWidget - - Map - 地図 - - - Weapons - 武器 - - - RoomsListModel In progress @@ -2360,21 +2216,6 @@ - TCPBase - - Error - エラー - - - Unable to start the server: %1. - サーãƒãƒ¼%1ã®èµ·å‹•ã¯å‡ºæ¥ãªã‹ã£ãŸ - - - Unable to run engine: %1 ( - エンジン%1ã®èµ·å‹•ã¯å‡ºæ¥ãªã‹ã£ãŸ - - - ToggleButtonWidget Vampirism diff -r 3331b30e4ef1 -r 88fde28bbda6 share/hedgewars/Data/Locale/hedgewars_ko.ts --- a/share/hedgewars/Data/Locale/hedgewars_ko.ts Sun Oct 21 01:28:33 2012 +0400 +++ b/share/hedgewars/Data/Locale/hedgewars_ko.ts Sat Nov 03 00:34:35 2012 +0400 @@ -20,21 +20,6 @@ - DrawMapWidget - - File error - - - - Cannot open file '%1' for writing - - - - Cannot read file '%1' - - - - FreqSpinBox Never @@ -54,14 +39,6 @@ - Error - - - - Illegal ammo scheme - - - Edit schemes @@ -77,7 +54,7 @@ HWAskQuitDialog - Do yot really want to quit? + Do you really want to quit? @@ -131,26 +108,10 @@ HWForm - Error - - - - OK - - - - Unable to start the server - - - Cannot save record to file %1 - Please select record from the list above - - - DefaultTeam @@ -192,16 +153,14 @@ - Some one already uses - your nickname %1 -on the server. + No nickname supplied. + + + + Someone already uses your nickname %1 on the server. Please pick another nickname: - - No nickname supplied. - - HWGame @@ -857,35 +816,12 @@ - PageNet - - Error - - - - Please select server from the list above - - - - PageNetGame Control - Error - - - - Please enter room name - - - - OK - - - DLC @@ -1003,14 +939,6 @@ PagePlayDemo - Error - - - - OK - - - Rename dialog @@ -1018,18 +946,6 @@ Enter new file name: - - Cannot rename to - - - - Cannot delete file - - - - Please select record from the list - - PageRoomsList @@ -1042,18 +958,6 @@ - Refresh - - - - Error - - - - OK - - - Admin features @@ -1062,14 +966,6 @@ - Please enter room name - - - - Please select room from the list - - - Rules: @@ -1085,15 +981,6 @@ Clear - - Warning - - - - The game you are trying to join has started. -Do you still want to join the room? - - %1 players online @@ -1338,20 +1225,6 @@ - Are you sure? - - - - Do you really want do remove %1? - - - - Do you really want do remove %1 file(s)? - - - - - encoding @@ -1359,10 +1232,6 @@ uploading - - Do you really want do cancel uploading %1? - - QAction @@ -1853,7 +1722,7 @@ There are videos that are currently being processed. Exiting now will abort them. -Do yot really want to quit? +Do you really want to quit? @@ -1938,10 +1807,6 @@ QMessageBox - Network - - - Connection to server is lost @@ -1950,80 +1815,14 @@ - Failed to open data directory: -%1 -Please check your installation - - - - Weapons - - - - Really delete this weapon set? - - - - Can not overwrite default weapon set '%1'! - - - - All file associations have been set. - - - File association failed. - Teams - - - - Really delete this team? - - - - Schemes - - - - Can not delete default scheme '%1'! - - - - Really delete this game scheme? - - - - Can not delete default weapon set '%1'! - - - - Fields required - - - Please fill out all fields - Success - - - - Successfully posted the issue on code.google.com! - - - - Error during authentication with www.google.com - - - - Error creating the issue - - - Error while authenticating at google.com: @@ -2037,11 +1836,52 @@ - - - QObject - - Error + + Teams - Are you sure? + + + + Do you really want to delete the team '%1'? + + + + Cannot delete default scheme '%1'! + + + + Please select a record from the list + + + + Unable to start server + + + + Hedgewars - Error + + + + Hedgewars - Success + + + + All file associations have been set + + + + Successfully posted the issue on hedgewars.googlecode.com + + + + Error during authentication at google.com + + + + Error reporting the issue, please try again later (or visit hedgewars.googlecode.com directly) + + + + Main - Error @@ -2049,9 +1889,146 @@ - OK - - + Failed to open data directory: +%1 + +Please check your installation! + + + + TCP - Error + + + + Unable to start the server: %1. + + + + Unable to run engine at + + + + Error code: %1 + + + + Video upload - Error + + + + Netgame - Error + + + + Please select a server from the list + + + + Please enter room name + + + + Record Play - Error + + + + Please select record from the list + + + + Cannot rename to + + + + Cannot delete file + + + + Room Name - Error + + + + Please select room from the list + + + + Room Name - Are you sure? + + + + The game you are trying to join has started. +Do you still want to join the room? + + + + Schemes - Warning + + + + Schemes - Are you sure? + + + + Do you really want to delete the game scheme '%1'? + + + + Videos - Are you sure? + + + + Do you really want to delete the video '%1'? + + + + Do you really want to remove %1 file(s)? + + + + + + Do you really want to cancel uploading %1? + + + + File error + + + + Cannot open '%1' for writing + + + + Cannot open '%1' for reading + + + + Cannot use the ammo '%1'! + + + + Weapons - Warning + + + + Cannot overwrite default weapon set '%1'! + + + + Cannot delete default weapon set '%1'! + + + + Weapons - Are you sure? + + + + Do you really want to delete the weapon set '%1'? + + + + + QObject Nickname @@ -2235,21 +2212,6 @@ - TCPBase - - Error - - - - Unable to start the server: %1. - - - - Unable to run engine: %1 ( - - - - ToggleButtonWidget Vampirism diff -r 3331b30e4ef1 -r 88fde28bbda6 share/hedgewars/Data/Locale/hedgewars_lt.ts --- a/share/hedgewars/Data/Locale/hedgewars_lt.ts Sun Oct 21 01:28:33 2012 +0400 +++ b/share/hedgewars/Data/Locale/hedgewars_lt.ts Sat Nov 03 00:34:35 2012 +0400 @@ -23,25 +23,6 @@ - DrawMapWidget - - - - File error - - - - - Cannot open file '%1' for writing - - - - - Cannot read file '%1' - - - - FreqSpinBox @@ -80,79 +61,69 @@ When this option is enabled selecting a game scheme will auto-select a weapon - - - Error - - - - - Illegal ammo scheme - - HWAskQuitDialog - Do yot really want to quit? + Do you really want to quit? HWChatWidget - + %1 has been removed from your ignore list - + %1 has been added to your ignore list - + %1 has been removed from your friends list - + %1 has been added to your friends list - + Stylesheet imported from %1 - + Enter %1 if you want to use the current StyleSheet in future, enter %2 to reset! - + Couldn't read %1 - + StyleSheet discarded - + StyleSheet saved to %1 - + Failed to save StyleSheet to %1 - + %1 is not a valid command! @@ -160,34 +131,18 @@ HWForm - - + + DefaultTeam - + Game aborted - - - Error - - - - - Please select record from the list above - - - - - OK - - - - + Your nickname %1 is registered on Hedgewars.org Please provide your password below @@ -195,58 +150,51 @@ - + No password supplied. - + Nickname - - Some one already uses - your nickname %1 -on the server. + + No nickname supplied. + + + + + Someone already uses your nickname %1 on the server. Please pick another nickname: - - No nickname supplied. - - - - - Unable to start the server - - - - - + + Cannot save record to file %1 - + Hedgewars Demo File File Types - + Hedgewars Save File File Types - + Demo name - + Demo name: @@ -254,13 +202,13 @@ HWGame - - + + en.txt lt.txt - + Cannot open demofile %1 @@ -268,92 +216,92 @@ HWMapContainer - + Map - + Filter + + All + + + - All + Small - Small + Medium - Medium + Large - Large + Cavern - Cavern - - - - Wacky - + Type + + Small tunnels + + + - Small tunnels + Medium tunnels - Medium tunnels + Large tunnels - Large tunnels + Small floating islands - Small floating islands + Medium floating islands - Medium floating islands - - - - Large floating islands - + Themes - + Seed - + Set @@ -379,65 +327,65 @@ HWNewNet - + User quit - + Remote host has closed connection - + The host was not found. Please check the host name and port settings. - + Connection refused - + The server is too old. Disconnecting now. - + Room destroyed - + You got kicked - - + + %1 *** %2 has joined the room - + %1 *** %2 has joined - - + + %1 *** %2 has left - - + + %1 *** %2 has left (%3) - + Quit reason: @@ -453,12 +401,12 @@ HWUploadVideoDialog - + Upload video - + Upload @@ -474,23 +422,23 @@ LibavIteraction - + Duration: %1m %2s - + Video: %1x%2, - + %1 fps, - + Audio: @@ -725,325 +673,325 @@ - + Leave a feedback here reporting issues, suggesting features or just saying how you like Hedgewars - - Downloadable Content - - - + Downloadable Content + + + + Access the user created content downloadable from our website - + Exit game - + Manage videos recorded from game - + Edit game preferences - - 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 - - - - 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! + 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 - 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! + 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 - If you'd like to keep others from using your preferred nickname on the official server, register an account at http://www.hedgewars.org/. + 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 - You're bored of default gameplay? Try one of the missions - they'll offer different gameplay depending on the one you picked. + 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 - 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. + 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 - 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! + You're bored of default gameplay? Try one of the missions - they'll offer different gameplay depending on the one you picked. Tips - 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! + 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. Share it with your family and friends as you like! + 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 is Open Source and Freeware we create in our spare time. If someone sold you the game, you should try get a refund! + 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 - From time to time there will be official tournaments. Upcoming events will be announced at http://www.hedgewars.org/ some days in advance. + Hedgewars is Open Source and Freeware we create in our spare time. Share it with your family and friends as you like! Tips - Hedgewars is available in many languages. If the translation in your language seems to be missing or outdated, feel free to contact us! + 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 can be run on lots of different operating systems including Microsoft Windows, Mac OS X and Linux. + From time to time there will be official tournaments. Upcoming events will be announced at http://www.hedgewars.org/ some days in advance. Tips - 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. + Hedgewars is available in many languages. If the translation in your language seems to be missing or outdated, feel free to contact us! Tips - Connect one or more gamepads before starting the game to be able to assign their controls to your teams. + Hedgewars can be run on lots of different operating systems including Microsoft Windows, Mac OS X and Linux. Tips - Create an account on %1 to keep others from using your most favourite nickname while playing on the official server. + 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. + Connect one or more gamepads before starting the game to be able to assign their controls to your teams. Tips - If your graphics card isn't able to provide hardware accelerated OpenGL, try to enable the low quality mode to improve performance. + Create an account on %1 to keep others from using your most favourite nickname while playing on the official server. Tips - If your graphics card isn't able to provide hardware accelerated OpenGL, try to update the associated drivers. + While playing you should give yourself a short break at least once an hour. Tips - We're open to suggestions and constructive feedback. If you don't like something or got a great idea, let us know! + If your graphics card isn't able to provide hardware accelerated OpenGL, try to enable the low quality mode to improve performance. Tips - Especially while playing online be polite and always remember there might be some minors playing with or against you as well! + If your graphics card isn't able to provide hardware accelerated OpenGL, try to update the associated drivers. Tips - Special game modes such as 'Vampirism' or 'Karma' allow you to develop completely new tactics. Try them in a custom game! + We're open to suggestions and constructive feedback. If you don't like something or got a great idea, let us know! Tips - The Windows version of Hedgewars supports Xfire. Make sure to add Hedgewars to its game list so your friends can see you playing. + Especially while playing online be polite and always remember there might be some minors playing with or against you as well! Tips - You should never install Hedgewars on computers you don't own (school, university, work, etc.). Please ask the responsible person instead! + Special game modes such as 'Vampirism' or 'Karma' allow you to develop completely new tactics. Try them in a custom game! Tips - 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. + The Windows version of Hedgewars supports Xfire. Make sure to add Hedgewars to its game list so your friends can see you playing. Tips - No hedgehogs were harmed in making this game. + You should never install Hedgewars on computers you don't own (school, university, work, etc.). Please ask the responsible person instead! Tips - There are three different jumps available. Tap [high jump] twice to do a very high/backwards jump. + 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 - Afraid of falling off a cliff? Hold down [precise] to turn [left] or [right] without actually moving. + No hedgehogs were harmed in making this game. Tips - 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. + There are three different jumps available. Tap [high jump] twice to do a very high/backwards jump. Tips - Most weapons won't work once they touch the water. The Homing Bee as well as the Cake are exceptions to this. + Afraid of falling off a cliff? Hold down [precise] to turn [left] or [right] without actually moving. Tips - The Old Limbuger only causes a small explosion. However the wind affected smelly cloud can poison lots of hogs at once. + 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 - The Piano Strike is the most damaging air strike. You'll lose the hedgehog performing it, so there's a huge downside as well. + Most weapons won't work once they touch the water. The Homing Bee as well as the Cake are exceptions to this. Tips - The Homing Bee can be tricky to use. Its turn radius depends on its velocity, so try to not use full power. + The Old Limbuger only causes a small explosion. However the wind affected smelly cloud can poison lots of hogs at once. Tips - Sticky Mines are a perfect tool to create small chain reactions knocking enemy hedgehogs into dire situations ... or water. + 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 Hammer is most effective when used on bridges or girders. Hit hogs will just break through the ground. + The Homing Bee can be tricky to use. Its turn radius depends on its velocity, so try to not use full power. Tips - If you're stuck behind an enemy hedgehog, use the Hammer to free yourself without getting damaged by an explosion. + Sticky Mines are a perfect tool to create small chain reactions knocking enemy hedgehogs into dire situations ... or water. Tips - The Cake's maximum walking distance depends on the ground it has to pass. Use [attack] to detonate it early. + The Hammer is most effective when used on bridges or girders. Hit hogs will just break through the ground. Tips - The Flame Thrower is a weapon but it can be used for tunnel digging as well. + If you're stuck behind an enemy hedgehog, use the Hammer to free yourself without getting damaged by an explosion. Tips - Use the Molotov or Flame Thrower to temporary keep hedgehogs from passing terrain such as tunnels or platforms. + The Cake's maximum walking distance depends on the ground it has to pass. Use [attack] to detonate it early. Tips - Want to know who's behind the game? Click on the Hedgewars logo in the main menu to see the credits. + The Flame Thrower is a weapon but it can be used for tunnel digging as well. Tips - Like Hedgewars? Become a fan on %1 or follow us on %2! + Use the Molotov or Flame Thrower to temporary keep hedgehogs from passing terrain such as tunnels or platforms. Tips - 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. + Want to know who's behind the game? Click on the Hedgewars logo in the main menu to see the credits. Tips + Like Hedgewars? Become a fan on %1 or follow us on %2! + Tips + + + + + 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'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 - - - - 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. + 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 - 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. + 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 + 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 + + + + 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 @@ -1058,50 +1006,22 @@ - PageNet - - - Error - - - - - Please select server from the list above - - - - PageNetGame + + DLC + + + - DLC - - - - Downloadable Content - + Control - - - Error - - - - - Please enter room name - - - - - OK - - PageNetType @@ -1237,45 +1157,15 @@ PagePlayDemo - - - - - Error - - - - - - Please select record from the list - - - - - - OK - - - - + Rename dialog - + Enter new file name: - - - Cannot rename to - - - - - Cannot delete file - - PageRoomsList @@ -1311,54 +1201,16 @@ - Refresh - - - - Clear - + Admin features - - - - Error - - - - - Please enter room name - - - - - - OK - - - - - Please select room from the list - - - - - Warning - - - - - The game you are trying to join has started. -Do you still want to join the room? - - - + %1 players online @@ -1662,103 +1514,77 @@ - - - - Are you sure? - - - - - Do you really want do remove %1? - - - - - Do you really want do remove %1 file(s)? - - - - - - - - + encoding - + uploading - - - Do you really want do cancel uploading %1? - - QAction - + Info - + Kick - + Ban - + Follow - - + + Ignore - - + + Add friend - + Unignore - + Remove friend - + Update - + Restrict Joins - + Restrict Team Additions - + Start @@ -1832,12 +1658,12 @@ - + Save account name and password - + Video is private @@ -1975,19 +1801,19 @@ + + + Any + + + - - Any + In lobby - In lobby - - - - In progress @@ -2174,12 +2000,12 @@ - + 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! @@ -2318,36 +2144,36 @@ There are videos that are currently being processed. Exiting now will abort them. -Do yot really want to quit? - - - - +Do you really want to quit? + + + + Please provide either the YouTube account name or the email address associated with the Google Account. - + Account name (or email): - + Password: - + Video title: - + Video description: - + Tags (comma separated): @@ -2390,7 +2216,7 @@ QLineEdit - + unnamed @@ -2417,165 +2243,309 @@ QMessageBox - - - Teams - - - - - - Really delete this team? - - - - - - Schemes - - - - - Can not delete default scheme '%1'! - - - - - - - - Network - - - - + + + Teams - Are you sure? + + + + + + Do you really want to delete the team '%1'? + + + + + + Cannot delete default scheme '%1'! + + + + + Please select a record from the list + + + + + Unable to start server + + + + Connection to server is lost - - All file associations have been set. - - - - + + Hedgewars - Error + + + + + + Hedgewars - Success + + + + + All file associations have been set + + + + + Successfully posted the issue on hedgewars.googlecode.com + + + + + + Error during authentication at google.com + + + + + Error reporting the issue, please try again later (or visit hedgewars.googlecode.com directly) + + + + File association failed. - - Fields required - - - - + Please fill out all fields - - Success - - - - - Successfully posted the issue on code.google.com! - - - - - - Error during authentication with www.google.com - - - - - Error creating the issue - - - - - - + Error - + + Cannot use the ammo '%1'! + + + + + Error while authenticating at google.com: + + + + + + Login or password is incorrect + + + + + + Video upload - Error + + + + + Error while sending metadata to youtube.com: + + + + + + + Main - Error + + + + + Cannot create directory %1 + + + + Failed to open data directory: %1 -Please check your installation - - - - - Really delete this game scheme? - - - - - - - Weapons - - - - - Can not overwrite default weapon set '%1'! - - - - - Can not delete default weapon set '%1'! - - - - - Really delete this weapon set? - - - - - Error while authenticating at google.com: - - - - - - Login or password is incorrect - - - - - Error while sending metadata to youtube.com: - + +Please check your installation! + + + + + + TCP - Error + + + + + Unable to start the server: %1. + + + + + Unable to run engine at + + + + + Error code: %1 + + + + + + Netgame - Error + + + + + Please select a server from the list + + + + + + Please enter room name + + + + + + + + Record Play - Error + + + + + + Please select record from the list + + + + + Cannot rename to + + + + + Cannot delete file + + + + + + Room Name - Error + + + + + Please select room from the list + + + + + Room Name - Are you sure? + + + + + The game you are trying to join has started. +Do you still want to join the room? + + + + + Schemes - Warning + + + + + Schemes - Are you sure? + + + + + Do you really want to delete the game scheme '%1'? + + + + + + + Videos - Are you sure? + + + + + Do you really want to delete the video '%1'? + + + + + Do you really want to remove %1 file(s)? + + + + + + + + + Do you really want to cancel uploading %1? + + + + + + File error + + + + + Cannot open '%1' for writing + + + + + Cannot open '%1' for reading + + + + + + Weapons - Warning + + + + + Cannot overwrite default weapon set '%1'! + + + + + Cannot delete default weapon set '%1'! + + + + + Weapons - Are you sure? + + + + + Do you really want to delete the weapon set '%1'? QObject - - Error - - - - - Cannot create directory %1 - - - - - OK - - - - + Nickname - + Please enter your nickname @@ -2600,7 +2570,7 @@ - + more @@ -2617,7 +2587,7 @@ - + Setup @@ -2642,7 +2612,7 @@ - + Ready @@ -2792,38 +2762,19 @@ - - + + new - - + + copy of - TCPBase - - - - Error - - - - - Unable to start the server: %1. - - - - - Unable to run engine: %1 ( - - - - ToggleButtonWidget diff -r 3331b30e4ef1 -r 88fde28bbda6 share/hedgewars/Data/Locale/hedgewars_nl.ts --- a/share/hedgewars/Data/Locale/hedgewars_nl.ts Sun Oct 21 01:28:33 2012 +0400 +++ b/share/hedgewars/Data/Locale/hedgewars_nl.ts Sat Nov 03 00:34:35 2012 +0400 @@ -20,21 +20,6 @@ - DrawMapWidget - - File error - - - - Cannot open file '%1' for writing - - - - Cannot read file '%1' - - - - FreqSpinBox Never @@ -55,14 +40,6 @@ - Error - - - - Illegal ammo scheme - - - Edit schemes @@ -78,7 +55,7 @@ HWAskQuitDialog - Do yot really want to quit? + Do you really want to quit? @@ -132,26 +109,10 @@ HWForm - Error - - - - OK - - - - Unable to start the server - - - Cannot save record to file %1 - Please select record from the list above - - - DefaultTeam @@ -193,16 +154,14 @@ - Some one already uses - your nickname %1 -on the server. + No nickname supplied. + + + + Someone already uses your nickname %1 on the server. Please pick another nickname: - - No nickname supplied. - - HWGame @@ -328,16 +287,6 @@ - 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 @@ -874,35 +823,12 @@ - PageNet - - Error - - - - Please select server from the list above - - - - PageNetGame Control - Error - - - - Please enter room name - - - - OK - - - DLC @@ -1020,14 +946,6 @@ PagePlayDemo - Error - - - - OK - - - Rename dialog @@ -1035,18 +953,6 @@ Enter new file name: - - Cannot rename to - - - - Cannot delete file - - - - Please select record from the list - - PageRoomsList @@ -1059,18 +965,6 @@ - Refresh - - - - Error - - - - OK - - - Admin features @@ -1079,14 +973,6 @@ - Please enter room name - - - - Please select room from the list - - - Rules: @@ -1102,15 +988,6 @@ Clear - - Warning - - - - The game you are trying to join has started. -Do you still want to join the room? - - %1 players online @@ -1357,21 +1234,6 @@ - Are you sure? - - - - Do you really want do remove %1? - - - - Do you really want do remove %1 file(s)? - - - - - - encoding @@ -1379,10 +1241,6 @@ uploading - - Do you really want do cancel uploading %1? - - QAction @@ -1873,7 +1731,7 @@ There are videos that are currently being processed. Exiting now will abort them. -Do yot really want to quit? +Do you really want to quit? @@ -1958,10 +1816,6 @@ QMessageBox - Network - - - Connection to server is lost @@ -1970,80 +1824,14 @@ - Failed to open data directory: -%1 -Please check your installation - - - - Weapons - - - - Really delete this weapon set? - - - - Can not overwrite default weapon set '%1'! - - - - All file associations have been set. - - - File association failed. - Teams - - - - Really delete this team? - - - - Schemes - - - - Can not delete default scheme '%1'! - - - - Really delete this game scheme? - - - - Can not delete default weapon set '%1'! - - - - Fields required - - - Please fill out all fields - Success - - - - Successfully posted the issue on code.google.com! - - - - Error during authentication with www.google.com - - - - Error creating the issue - - - Error while authenticating at google.com: @@ -2057,11 +1845,52 @@ - - - QObject - - Error + + Teams - Are you sure? + + + + Do you really want to delete the team '%1'? + + + + Cannot delete default scheme '%1'! + + + + Please select a record from the list + + + + Unable to start server + + + + Hedgewars - Error + + + + Hedgewars - Success + + + + All file associations have been set + + + + Successfully posted the issue on hedgewars.googlecode.com + + + + Error during authentication at google.com + + + + Error reporting the issue, please try again later (or visit hedgewars.googlecode.com directly) + + + + Main - Error @@ -2069,9 +1898,147 @@ - OK - - + Failed to open data directory: +%1 + +Please check your installation! + + + + TCP - Error + + + + Unable to start the server: %1. + + + + Unable to run engine at + + + + Error code: %1 + + + + Video upload - Error + + + + Netgame - Error + + + + Please select a server from the list + + + + Please enter room name + + + + Record Play - Error + + + + Please select record from the list + + + + Cannot rename to + + + + Cannot delete file + + + + Room Name - Error + + + + Please select room from the list + + + + Room Name - Are you sure? + + + + The game you are trying to join has started. +Do you still want to join the room? + + + + Schemes - Warning + + + + Schemes - Are you sure? + + + + Do you really want to delete the game scheme '%1'? + + + + Videos - Are you sure? + + + + Do you really want to delete the video '%1'? + + + + Do you really want to remove %1 file(s)? + + + + + + + Do you really want to cancel uploading %1? + + + + File error + + + + Cannot open '%1' for writing + + + + Cannot open '%1' for reading + + + + Cannot use the ammo '%1'! + + + + Weapons - Warning + + + + Cannot overwrite default weapon set '%1'! + + + + Cannot delete default weapon set '%1'! + + + + Weapons - Are you sure? + + + + Do you really want to delete the weapon set '%1'? + + + + + QObject Nickname @@ -2255,21 +2222,6 @@ - TCPBase - - Error - - - - Unable to start the server: %1. - - - - Unable to run engine: %1 ( - - - - ToggleButtonWidget Vampirism diff -r 3331b30e4ef1 -r 88fde28bbda6 share/hedgewars/Data/Locale/hedgewars_pl.ts --- a/share/hedgewars/Data/Locale/hedgewars_pl.ts Sun Oct 21 01:28:33 2012 +0400 +++ b/share/hedgewars/Data/Locale/hedgewars_pl.ts Sat Nov 03 00:34:35 2012 +0400 @@ -5,7 +5,7 @@ AbstractPage Go back - + Wstecz @@ -20,21 +20,6 @@ - DrawMapWidget - - File error - BÅ‚Ä…d pliku - - - Cannot open file '%1' for writing - Nie można otworzyć '%1' do zapisu - - - Cannot read file '%1' - Nie można odczytać pliku '%1' - - - FreqSpinBox Never @@ -52,14 +37,6 @@ GameCFGWidget - Error - BÅ‚Ä…d - - - Illegal ammo scheme - Niepoprawny schemat amunicji - - Edit schemes Edytuj schematy @@ -68,10 +45,6 @@ Edytuj uzbrojenie - When this option is enabled selecting a game scheme will auto-select a weapon (and viceversa) - Kiedy ta opcja jest wÅ‚Ä…czona, wybór ustawnieÅ„ gry zmienia uzbrojenie na odpowiadajÄ…ce (i vice versa) - - When this option is enabled selecting a game scheme will auto-select a weapon Kiedy ta opcja jest wÅ‚Ä…czona, wybór ustawieÅ„ gry zmienia uzbrojenie na odpowiednie @@ -83,29 +56,13 @@ HWAskQuitDialog - Do yot really want to quit? - + Do you really want to quit? + Na pewno chcesz zakoÅ„czyć? HWChatWidget - %1 *** %2 has been removed from your ignore list - %1 *** %2 zostaÅ‚ usuniÄ™ty z listy ignorowanych - - - %1 *** %2 has been added to your ignore list - %1 *** %2 zostaÅ‚ dodany do listy ignorowanych - - - %1 *** %2 has been removed from your friends list - %1 *** %2 zostaÅ‚ usuniÄ™ty z listy przyjaciół - - - %1 *** %2 has been added to your friends list - %1 *** %2 zostaÅ‚ dodany do listy przyjaciół - - %1 has been removed from your ignore list %1 zostaÅ‚ usuniÄ™ty z listy ignorowanych @@ -149,38 +106,14 @@ %1 is not a valid command! %1 nie jest poprawnym poleceniem! - - Kicking %1 ... - Wyrzucam %1... - HWForm - Error - BÅ‚Ä…d - - - OK - OK - - - Unable to start the server - Nie można uruchomić serwera - - Cannot save record to file %1 Nie można zapisać nagrania do pliku %1 - new - nowy - - - Please select record from the list above - Wybierz nagranie z listy - - DefaultTeam DomyÅ›lnaDrużyna @@ -207,10 +140,6 @@ Gra przerwana - Password - HasÅ‚o - - Your nickname %1 is registered on Hedgewars.org Please provide your password below @@ -229,19 +158,15 @@ Nick - Some one already uses - your nickname %1 -on the server. -Please pick another nickname: - KtoÅ› wÅ‚aÅ›nie używa -tego nicku %1 -na serwerze. -ProszÄ™ wybrać nowy nick: - - No nickname supplied. Nie podano nicku. + + Someone already uses your nickname %1 on the server. +Please pick another nickname: + KtoÅ› używa tego nicku %1 na serwerze. +Wybierz inny nick: + HWGame @@ -293,10 +218,6 @@ Odjechane - Tunnel size - Tunele - - Type Typ @@ -371,20 +292,6 @@ ZostaÅ‚eÅ› wyrzucony - Password - HasÅ‚o - - - Your nickname %1 is -registered on Hedgewars.org -Please provide your password -or pick another nickname: - Twój nick %1 jest -zarejestrowany na Hedgewars.org -ProszÄ™ podać twoje hasÅ‚o -bÄ…dź wybierz inny nick: - - %1 *** %2 has joined the room %1 *** %2 doÅ‚Ä…czyÅ‚ do pokoju @@ -401,58 +308,34 @@ %1 *** %2 wyszedÅ‚ - Your nickname %1 is -registered on Hedgewars.org -Please provide your password below -or pick another nickname in game config: - Twój nick %1 jest zarejestrowany -na Hedgewars.org -ProszÄ™ podać hasÅ‚o bÄ…dź zmienić nick -w ustawieniach gry: - - - Nickname - Nick - - - Some one already uses - your nickname %1 -on the server. -Please pick another nickname: - KtoÅ› wÅ‚aÅ›nie używa -tego nicku %1 -na serwerze. -PrzoszÄ™ wybrać nowy nick: - - User quit Użytkownik wyszedÅ‚ Remote host has closed connection - + Zdalny host zakoÅ„czyÅ‚ poÅ‚Ä…czenie The server is too old. Disconnecting now. - + Stara wersja serwera. NastÄ…pi rozÅ‚Ä…czenie. HWPasswordDialog Password - HasÅ‚o + HasÅ‚o HWUploadVideoDialog Upload video - + Prześłij wideo Upload - + PrzeÅ›lij @@ -467,32 +350,24 @@ Duration: %1m %2s - + DÅ‚ugość: %1m %2s Video: %1x%2, - + Wideo: %1x%2, %1 fps, - + %1 kl/s, Audio: - + Audio: PageAdmin - Server message: - Wiadomość od serwera: - - - Set message - Ustaw wiadomość - - Clear Accounts Cache Wyczyść pamięć podrÄ™cznÄ… @@ -527,10 +402,6 @@ Connecting... ÅÄ…czenie... - - Cancel - Anuluj - PageDrawMap @@ -555,10 +426,6 @@ ZaÅ‚aduj mapÄ™ - Drawn Maps (*.hwmap);;All files (*.*) - Narysowane mapy (*.hwmap);;Wszystkie pliki (*.*) - - Save drawn map Zapisz mapÄ™ @@ -572,7 +439,7 @@ Eraser - + Gumka @@ -589,26 +456,6 @@ PageGameStats - <p>The best shot award was won by <b>%1</b> with <b>%2</b> pts.</p> - <p>Odznaczenie za najlepszy strzaÅ‚ przyznano <b>%1</b>, zadaÅ‚(a) on(a) <b>%2</b> punktów obrażeÅ„.</p> - - - <p>The best killer is <b>%1</b> with <b>%2</b> kills in a turn.</p> - - <p>Najlepszym zabójcÄ… jest <b>%1</b> z <b>%2</b> zabiciami w przeciÄ…gu tury.</p> - <p>Najlepszym zabójcÄ… jest <b>%1</b> z <b>%2</b> zabiciami w przeciÄ…gu tury.</p> - <p>Najlepszym zabójcÄ… jest <b>%1</b> z <b>%2</b> zabiciami w przeciÄ…gu tury.</p> - - - - <p>A total of <b>%1</b> hedgehog(s) were killed during this round.</p> - - <p>W sumie <b>%1</b> jeży zostaÅ‚o zabitych w tej walce.</p> - <p>W sumie <b>%1</b> jeży zostaÅ‚o zabitych w tej walce.</p> - <p>W sumie <b>%1</b> jeży zostaÅ‚o zabitych w tej walce.</p> - - - Details Szczegóły @@ -648,10 +495,6 @@ (%1 zabitych jeży) - - (%1 kills) - (%1 zabitych) - <b>%1</b> thought it's good to shoot his own hedgehogs with <b>%2</b> pts. @@ -688,20 +531,12 @@ PageInfo Open the snapshot folder - + Otwórz folder ze zrzutami ekranu PageMain - Local Game (Play a game on a single computer) - Gra lokalna (graj na jednym komputerze) - - - Network Game (Play a game across a network) - Gra sieciowa (graj przez internet lub LAN) - - 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 By grać ze swoim przyjacielem w tej samej drużynie po prostu wybierzcie taki sam kolor obydwu zespołów. Każdy z was bÄ™dzie sterować swoimi wÅ‚asnymi jeżami ale wygracie bÄ…dź przegracie jako jedna drużyna. @@ -717,11 +552,6 @@ JeÅ›li nie jesteÅ› pewien co zrobić w danej turze i nie chcesz tracić amunicji możesz pominąć turÄ™. Nie rób tak jednak zbyt czÄ™sto gdyż nagÅ‚a Å›mierć jest nieuchronna! - Want to save ropse? 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 - Chcesz zaoszczÄ™dzić liny? OdÅ‚Ä…cz jÄ… bÄ™dÄ…c w powietrzu, a potem wypuść jÄ… ponownie. Tak dÅ‚ugo jak nie dotkniesz ziemi, bÄ™dziesz używaÅ‚ pojedynczego naboju! - - 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 JeÅ›li chciaÅ‚byÅ› zapobiec używania wÅ‚asnego nicka przez kogoÅ› innego, zarejestruj go na http://www.hedgewars.org . @@ -772,16 +602,6 @@ Zawsze możesz zmieniać ustawienia gry w opcjach gry lokalnej lub sieciowej. Nie musisz ciÄ…gle używać tzw. "Szybkiej gry". - Connect a gamepad before launching the game to be able to assign its controls to your team. - Tips - JeÅ›li podÅ‚Ä…czysz Gamepada przed wÅ‚Ä…czeniem gry, bÄ™dziesz miaÅ‚ możliwość przypisania klawiszy by sterować nim wÅ‚asne jeże. - - - Create an account on http://www.hedgewars.org/ to keep others from using your most favourite nickname while playing on the official server. - Tips - Stwórz konto na http://www.hedgewars.org/ by zapobiec używania twojego ulubionego nicku przez innych. - - While playing you should give yourself a short break at least once an hour. Tips Zawsze pamiÄ™taj o robieniu krótkich przerw co godzinÄ™ kiedy grasz na komputerze. @@ -807,11 +627,6 @@ Specjalne tryby gry takie jak "Karma" bÄ…dź "Wampiryzm" pozwalajÄ… na stworzenie nowej taktyki! - The Windows version of Hedgewars supports Xfire. Make sure to add Hedgwars to its game list so your friends can see you playing. - Tips - Wersja Hedgewars dla systemu Windows wspiera XFire. Upewnij siÄ™, że dodaÅ‚eÅ› Hedgewars do listy gier by Twoi znajomi mogli zobaczyć Ciebie w czasie gry. - - You should never install Hedgewars on computers you don't own (school, university, work, etc.). Please ask the responsible person instead! Tips Nie powinieneÅ› instalować Hedgewars na komputerach których nie posiadasz (w szkole, na studiach, w pracy itp.). Zapytaj osoby odpowiedzialnej za te komputery! @@ -827,11 +642,6 @@ Å»aden jeż nie zostaÅ‚ ranny w czasie tworzenia tej gry. - Connect one or more gamepads before launching the game to be able to assign their controls to your teams. - Tips - JeÅ›li podÅ‚Ä…czysz jeden lub wiÄ™cej gamepadów przed wÅ‚Ä…czeniem gry, bÄ™dziesz miaÅ‚ możliwość przypisania klawiszy by sterować nimi wÅ‚asne jeże. - - 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 jest darmowÄ… grÄ… o otwartym kodzie źródÅ‚owym którÄ… tworzymy w naszym wolnym czasie. JeÅ›li ktokolwiek sprzedaÅ‚ Tobie tÄ™ grÄ™ powinieneÅ› upomnieć siÄ™ o swoje pieniÄ…dze! @@ -882,11 +692,6 @@ Zrzut pianina jest najbardziej morderczym atakiem powietrznym. PamiÄ™taj, że tracisz jeża którym wykonujesz ten atak wiÄ™c dobrze zaplanuj swój ruch. - 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 - PszczoÅ‚a potrafi być ciężka w użyciu. Jej promieÅ„ skrÄ™tu zależy od prÄ™dkoÅ›ci lotu, wiÄ™c nie staraj siÄ™ nie używać peÅ‚nej mocy podczas strzaÅ‚u. - - Sticky Mines are a perfect tool to create small chain reactions knocking enemy hedgehogs into dire situations ... or water. Tips Miny samoprzylepne sÄ… idealnym narzÄ™dziem by tworzyć maÅ‚e reakcje Å‚aÅ„cuchowe bÄ…dź do zmuszenia przeciwnika by popadÅ‚ w tarapaty lub wpadÅ‚ do wody. @@ -912,11 +717,6 @@ Miotacz ognia jest Å›miercionoÅ›nÄ… broniÄ… ale może być użyty również jako narzÄ™dzie do kopania tuneli. - Use the Incinerating Grenade to temporary keep hedgehogs from passing terrain such as tunnels or platforms. - Tips - Użyj koktajlu MoÅ‚otowa by powstrzymać przeciwnika przed przedostaniem siÄ™ przez tunele lub platformy. - - Want to know who's behind the game? Click on the Hedgewars logo in the main menu to see the credits. Tips Chcesz wiedzieć kto tworzy tÄ™ grÄ™? Kliknij logo w głównym menu by zobaczyć autorów. @@ -947,11 +747,6 @@ Swoje zespoÅ‚y i konfiguracjÄ™ gry znajdziesz w folderze "Moje Dokumenty\Hedgewars". Twórz regularnie kopie zapasowe, ale nie edytuj tych plików wÅ‚asnorÄ™cznie. - 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 - Swoje zespoÅ‚y i konfiguracjÄ™ gry znajdzie4sz w folderze ".hedgewars" w twoim katalogu domowym. Twórz regularnie kopie zapasowe ale nie edytuj tych plików wÅ‚asnorÄ™cznie. - - 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 Możesz powiÄ…zać typy plików zwiÄ…zane z Hedgewars (zapisy gier i dema) by móc je uruchamiać bezpoÅ›rednio z ulubionego menedżera plików bÄ…dź przeglÄ…darki internetowej. @@ -992,43 +787,43 @@ Local Game - + Gra lokalna Play a game on a single computer - + Graj na swoim komputerze Network Game - + Gra sieciowa Play a game across a network - + Graj poprzez sieć Read about who is behind the Hedgewars Project - + Dowiedz siÄ™ kto jest twórcÄ… gry Leave a feedback here reporting issues, suggesting features or just saying how you like Hedgewars - + Opisz problem, zasugeruj zmiany lub napisz po prostu jak bardzo lubisz Hedgewars Access the user created content downloadable from our website - + ÅšciÄ…gnij rzeczy stworzone przez graczy Exit game - + Wyjdź z gry Manage videos recorded from game - + ZarzÄ…dzaj filmami z gry Edit game preferences - + ZmieÅ„ ustawienia gry @@ -1039,41 +834,18 @@ - PageNet - - Error - BÅ‚Ä…d - - - Please select server from the list above - Wybierz serwer z powyższej listy - - - PageNetGame Control Kontrola - Error - BÅ‚Ä…d - - - Please enter room name - Wprowadź nazwÄ™ pokoju - - - OK - OK - - DLC - + DLC Downloadable Content - Dodatki + Dodatki @@ -1088,11 +860,11 @@ Join hundreds of players online! - + DoÅ‚Ä…cz do setek graczy w sieci! Join or host your own game server in a Local Area Network. - + DoÅ‚Ä…cz lub stwórz nowÄ… grÄ™ w sieci lokalnej. @@ -1110,18 +882,6 @@ UsuÅ„ drużynÄ™ - New weapon scheme - Nowy schemat uzbrojenia - - - Edit weapon scheme - Edytuj schemat uzbrojenia - - - Delete weapon scheme - UsuÅ„ schemat uzbrojenia - - You can't edit teams from team selection. Go back to main menu to add, edit or delete teams. Nie możesz edytować drużyn z menu wyboru drużyn. By to uczynić, wróć do głównego menu. @@ -1151,60 +911,52 @@ General - Ogólne + Ogólne Advanced - Zaawansowane + Zaawansowane Reset to default colors - + Przywróć domyÅ›lne kolory Proxy host - + Server proxy Proxy port - + Port proxy Proxy login - + Login do proxy Proxy password - + HasÅ‚o No proxy - + Bez proxy Socks5 proxy - + Socks5 proxy HTTP proxy - + HTTP proxy System proxy settings - + Systemowe ustawienia proxy PagePlayDemo - Error - BÅ‚Ä…d - - - OK - OK - - Rename dialog Zmiana nazwy @@ -1212,18 +964,6 @@ Enter new file name: Podaj nowÄ… nazwÄ™ pliku: - - Cannot rename to - Nie można zmienić nazwy na - - - Cannot delete file - Nie można usunąć pliku - - - Please select record from the list - Wybierz nagranie z listy - PageRoomsList @@ -1236,18 +976,6 @@ DoÅ‚Ä…cz - Refresh - OdÅ›wież - - - Error - BÅ‚Ä…d - - - OK - OK - - Admin features Ustawienia admina @@ -1256,70 +984,6 @@ Nazwa pokoju: - This game is in lobby. -You may join and start playing once the game starts. - Ta gra jest w poczekalni. -Możesz doÅ‚Ä…czyć i zacząć grać gdy gra siÄ™ rozpocznie. - - - 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. - Ta gra jest w toku. -Możesz doÅ‚Ä…czyć i obserwować grÄ™, ale by móc zagrać musisz poczekać aż gra siÄ™ skoÅ„czy. - - - %1 is the host. He may adjust settings and start the game. - %1 jest wÅ‚aÅ›cicielem. Może on zmienić ustawienia i rozpocząć grÄ™. - - - Random Map - Losowa mapa - - - Games may be played on precreated or randomized maps. - Gry mogÄ… być rozgrywane na losowych lub uprzednio stworzonych mapach. - - - The Game Scheme defines general options and preferences like Round Time, Sudden Death or Vampirism. - Schemat okreÅ›la ustawienia i preferencje takie jak Czas trwania tury, NagÅ‚Ä… Å›mierć, Wampiryzm itp. - - - The Weapon Scheme defines available weapons and their ammunition count. - Zestaw uzbrojenia okreÅ›la dostÄ™pnÄ… broÅ„ oraz ilość amunicji. - - - There are %1 clients connected to this room. - - Do tego pokoju jest podÅ‚Ä…czony %1 gracz. - Do tego pokoju jest podÅ‚Ä…czonych %1 graczy. - Do tego pokoju jest podÅ‚Ä…czonych %1 graczy. - - - - There are %1 teams participating in this room. - - W tym pokoju gra %1 drużyna. - W tym pokoju grajÄ… %1 drużyny. - W tym pokoju grajÄ… %1 drużyny. - - - - Please enter room name - Wprowadź nazwÄ™ pokoju - - - Please select room from the list - Wybierz pokój z listy - - - Random Maze - Losowy labirynt - - - State: - Stan: - - Rules: Zasady: @@ -1335,16 +999,6 @@ Clear Wyczyść - - Warning - Uwaga - - - The game you are trying to join has started. -Do you still want to join the room? - Gra do której chcesz doÅ‚Ä…czyć już siÄ™ rozpoczęła. -Czy chcesz doÅ‚Ä…czyć do pokoju? - %1 players online @@ -1377,10 +1031,6 @@ PodÅ‚oże jest niezniszczalne! - Add an indestructable border around the terrain - Dodaje niezniszczalnÄ… ramkÄ™ dookoÅ‚a terenu - - Lower gravity Niższa grawitacja @@ -1393,10 +1043,6 @@ Wszystkie jeże posiadajÄ… osobiste pole siÅ‚owe - Enable random mines - Dodaj miny - - Gain 80% of the damage you do back in health Odzyskaj 80% życia z zadanych obrażeÅ„ @@ -1507,80 +1153,48 @@ PageSinglePlayer - Simple Game (a quick game against the computer, settings are chosen for you) - Szybka gra (szybka gra przeciwko komputerowi, ustawienia sÄ… wybierane za ciebie) - - - Multiplayer (play a hotseat game against your friends, or AI teams) - Gra wieloosobowa (graj z komputerem lub na zmianÄ™ ze znajomymi) - - - Training Mode (Practice your skills in a range of training missions). IN DEVELOPMENT - Trening (sprawdź swoje umiejÄ™tnoÅ›ci podczas misji treningowych). W PRODUKCJI - - - Demos (Watch recorded demos) - Dema (zobacz nagrane dema) - - - Load (Load a previously saved game) - Wczytaj grÄ™ (wczytaj poprzednio zapisanÄ… grÄ™) - - - Campaign Mode (...). IN DEVELOPMENT - Kampania (...). W PRODUKCJI - - - Campaign Mode (...) - Kampania (...) - - - Training Mode (Practice your skills in a range of training missions) - Trening (sprawdź swoje umiejÄ™tnoÅ›ci podczas misji treningowych) - - Simple Game - + Szybka gra Play a quick game against the computer with random settings - + Zagraj szybkÄ… grÄ™ z losowymi ustawieniami przeciwko komputerowi Multiplayer - + Gra wieloosobowa Play a hotseat game against your friends, or AI teams - + Graj na zmianÄ™ ze swoimi przyjaciółmi lub przeciwko komputerowi Campaign Mode - + Kampania Training Mode - + Trening Practice your skills in a range of training missions - + Sprawdź swoje umiejÄ™tnoÅ›ci przwechodzÄ…c kilka misji Demos - + Dema Watch recorded demos - + Obejrzyj nagrane dema Load - Wczytaj + Wczytaj Load a previously saved game - + Wczytaj zapisanÄ… grÄ™ @@ -1595,70 +1209,50 @@ Pick the mission or training to play - + Wybierz misje w którÄ… chcesz zagrać Start fighting - + Start PageVideos Name - Nazwa + Nazwa Size - + Rozmiar %1 bytes - - - - + + %1 bajtów + %1 bajty + %1 bajtów (in progress...) - + (w trakcie...) Date: - + Data: Size: - - - - Are you sure? - - - - Do you really want do remove %1? - - - - Do you really want do remove %1 file(s)? - - - - - + Rozmiar: encoding - + enkodowanie uploading - - - - Do you really want do cancel uploading %1? - + wysyÅ‚anie @@ -1747,10 +1341,6 @@ Dodaj czas i datÄ™ do nazwy pliku - Reduced quality - Obniż jakość - - Show ammo menu tooltips Pokaż opisy broni @@ -1768,23 +1358,23 @@ Save password - + Zapisz hasÅ‚o Save account name and password - + Zapisz nazwÄ™ użytkownika i hasÅ‚o Video is private - + Film jest prywatny Record audio - + Nagraj dźwiÄ™k Use game resolution - + Użyj rozdzielczoÅ›ci z gry @@ -1830,42 +1420,6 @@ W toku - Default - DomyÅ›lne - - - Pro mode - Pro mode - - - Shoppa - Shoppa - - - Basketball - Basketball - - - Minefield - Minefield - - - Barrel mayhem - Barrel mayhem - - - Tunnel hogs - Tunnel hogs - - - Crazy - Crazy - - - Normal - Normalna - - hand drawn map... Mapa rysowana rÄ™cznie... @@ -1957,10 +1511,6 @@ Ustawienia dźwiÄ™ku/grafiki - Weapons - Uzbrojenie - - Net game Gra sieciowa @@ -1990,36 +1540,32 @@ Custom colors - + WÅ‚asne kolory Miscellaneous - + Różne Video recording options - + Ustawienia nagrywania Videos - + Filmy Description - + Opis Proxy settings - + Ustawienia proxy QLabel - This program is distributed under the GNU General Public License - Ten program jest rozprowadzany na zasadach powszechnej licencji publicznej GNU - - Developers: Twórcy: @@ -2056,10 +1602,6 @@ Ograniczenie FPS - Net nick - Pseudonim sieciowy - - Server name: Nazwa serwera: @@ -2144,16 +1686,6 @@ JÄ™zyk - Restart game to apply - Zrestartuj grÄ™ by wprowadzić zmiany - - - This SVN 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! - Ta wersja jest w fazie produkcji i może nie być kompatybilna z innymi wersjami gry. -Niektóre funkcje mogÄ… nie dziaÅ‚ać lub być niekompletne. Używaj na wÅ‚asne ryzyko! - - Explosives Mat. wybuchowe @@ -2162,11 +1694,6 @@ Rada: - This HG 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! - Ta wersja jest w fazie produkcji i może nie być kompatybilna z innymi wersjami gry. -Niektóre funkcje mogÄ… nie dziaÅ‚ać lub być niekompletne. Używaj na wÅ‚asne ryzyko! - - 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! Ta wersja testowa jest w fazie produkcji i może nie być kompatybilna z innymi wersjami gry. Niektóre funkcje mogÄ… nie dziaÅ‚ać lub być niekompletne. Używaj na wÅ‚asne ryzyko! @@ -2192,26 +1719,14 @@ Tracone HP podczas NÅš - Bind schemes and weapons - PoÅ‚Ä…cz ustawienia gry z uzbrojeniem - - % Rope Length DÅ‚ugość liny w % - Gameplay - Rozgrywka - - Stereo rendering WyÅ›wietlanie w 3D - Game Options - Opcje - - Style Tryb gry @@ -2220,10 +1735,6 @@ Schemat - Password - HasÅ‚o - - % Get Away Time Czas na ucieczkÄ™ w % @@ -2234,64 +1745,66 @@ There are videos that are currently being processed. Exiting now will abort them. -Do yot really want to quit? - +Do you really want to quit? + SÄ… filmy które wÅ‚aÅ›nie sÄ… przetwarzane. +WyjÅ›cie spowoduje przerwanie pracy. +Czy na pewno chcesz wyjść? Please provide either the YouTube account name or the email address associated with the Google Account. - + Wprowadź nazwÄ™ użytkownika YouTube lub adres mailowy powiÄ…zany z Kontem Google. Account name (or email): - + Nazwa konta (lub email): Password: - + HasÅ‚o: Video title: - + Nazwa filmu: Video description: - + Opis filmu: Tags (comma separated): - + Tagi (oddzielone przecinkami): Summary - + Podsumowanie Description - + Opis Nickname - Nick + Nick Format - + Format Audio codec - + Kodek audio Video codec - + Kodek wideo Framerate - + Klatki/s Bitrate (Kbps) - + Bitrate (Kbps) @@ -2306,7 +1819,7 @@ anonymous - + anonimowy @@ -2319,10 +1832,6 @@ QMessageBox - Network - Sieć - - Connection to server is lost PoÅ‚Ä…czenie z serwerem zostaÅ‚o przerwane @@ -2331,108 +1840,73 @@ BÅ‚Ä…d - Failed to open data directory: -%1 -Please check your installation - Nie można otworzyć katalogu z danymi: -%1 -Sprawdź poprawność instalacji - - - Weapons - Uzbrojenie - - - Can not edit default weapon set - Nie można zmienić domyÅ›lnego zestawu uzbrojenia - - - Can not delete default weapon set - Nie można usunąć domyÅ›lnego zestawu uzbrojenia - - - Really delete this weapon set? - Czy na pewno usunąć ten zestaw uzbrojenia? - - - Can not overwrite default weapon set '%1'! - Nie można nadpisać zestawu uzbrojenia '%1'! - - - All file associations have been set. - Wszystkie powiÄ…zania plików zostaÅ‚y utworzone - - File association failed. PowiÄ…zanie plików nie powiodÅ‚o siÄ™. - Teams - Drużyny - - - Really delete this team? - Na pewno usunąć tÄ™ drużynÄ™? - - - Schemes - Schematy - - - Can not delete default scheme '%1'! - Nie można usunąć domyśłnego schematu '%1'! - - - Really delete this game scheme? - Na pewno usunąć ten schemat? - - - Can not delete default weapon set '%1'! - Nie można usunąć domyśłnego zestawu usbrojenia '%1'! - - - Fields required - - - Please fill out all fields - - - - Success - - - - Successfully posted the issue on code.google.com! - - - - Error during authentication with www.google.com - - - - Error creating the issue - + WypeÅ‚nij wszystkie pola Error while authenticating at google.com: - + BÅ‚Ä…d logowania na google.com: Login or password is incorrect - + Login lub hasÅ‚o sÄ… niepoprawne Error while sending metadata to youtube.com: - - - - - QObject - - Error + BÅ‚Ä…d w trakcie wysyÅ‚ania danych do Youtube: + + + Teams - Are you sure? + Drużyny - JesteÅ› pewien? + + + Do you really want to delete the team '%1'? + JesteÅ› pewien że chcesz usunąć drużynÄ™ '%1'? + + + Cannot delete default scheme '%1'! + Nie można usunąć domyÅ›lnego schematu '%1'! + + + Please select a record from the list + Wybierz nagranie z listy + + + Unable to start server + Nie można uruchomić serwera + + + Hedgewars - Error + Hedgewars - BÅ‚Ä…d + + + Hedgewars - Success + Hedgewars - Sukces + + + All file associations have been set + Wszystkie powiÄ…zania plików zostaÅ‚y ustawione + + + Successfully posted the issue on hedgewars.googlecode.com + PomyÅ›lnie utworzono wpis na hedgewars.googlecode.com + + + Error during authentication at google.com + BÅ‚Ä…d podczas logowania do google.com + + + Error reporting the issue, please try again later (or visit hedgewars.googlecode.com directly) + BÅ‚ad podczas wysyÅ‚ania informacji. Spróbuj ponownie później lub odwiedź hedgewars.googlecode.com) + + + Main - Error BÅ‚Ä…d @@ -2440,9 +1914,152 @@ Nie można utworzyć katalogu %1 - OK - OK - + Failed to open data directory: +%1 + +Please check your installation! + Nie można otworzyć katalogu z danymi: +%1 + +Sprawdź poprawność instalacji! + + + TCP - Error + TCP - BÅ‚Ä…d + + + Unable to start the server: %1. + Nie można uruchomić serwera: %1. + + + Unable to run engine at + Nie można uruchomić silnika na + + + Error code: %1 + Kod bÅ‚Ä™du: %1 + + + Video upload - Error + WysyÅ‚anei filmu - BÅ‚Ä…d + + + Netgame - Error + Gra sieciowa - BÅ‚Ä…d + + + Please select a server from the list + Wybierz serwer z listy + + + Please enter room name + Wprowadź nazwÄ™ pokoju + + + Record Play - Error + Nagraj grÄ™ - BÅ‚Ä…d + + + Please select record from the list + Wybierz nagranie z listy + + + Cannot rename to + Nie można zmienić nazwy na + + + Cannot delete file + Nie można usunÄ…c pliku + + + Room Name - Error + Nazwa pokoju - BÅ‚Ä…d + + + Please select room from the list + Wybierz pokój z listy + + + Room Name - Are you sure? + Nazwa pokoju - JesteÅ› pewien? + + + The game you are trying to join has started. +Do you still want to join the room? + Gra do której chcesz doÅ‚Ä…czyć już siÄ™ rozpoczęła. +Czy chcesz doÅ‚Ä…czyć do pokoju? + + + Schemes - Warning + Schematy - Ostrzeżenie + + + Schemes - Are you sure? + Schematy - JesteÅ› pewien? + + + Do you really want to delete the game scheme '%1'? + Na pewno chcesz usunąć schemat '%1'? + + + Videos - Are you sure? + Filmy - JesteÅ› pewien? + + + Do you really want to delete the video '%1'? + Na pewno chcesz usunÄ…c film '%1'? + + + Do you really want to remove %1 file(s)? + + Na pewno chcesz usunąć %1 plik? + Na pewno chcesz usunąć %1 pliki? + Na pewno chcesz usunąć %1 plików? + + + + Do you really want to cancel uploading %1? + Na pewno chcesz anulować wysyÅ‚anie '%1'? + + + File error + BÅ‚Ä…d pliku + + + Cannot open '%1' for writing + Nie można otworzyć '%1' do zapisu + + + Cannot open '%1' for reading + Nie można otworzyć '%1' do odczytu + + + Cannot use the ammo '%1'! + Nie możn aużyć aminucji '%1'! + + + Weapons - Warning + Uzbrojenie - Ostrzeżenie + + + Cannot overwrite default weapon set '%1'! + Nie można nadpisać domyÅ›lnego zestawu broni '%1'! + + + Cannot delete default weapon set '%1'! + Nie można usunąć domyÅ›lnego zestawu broni '%1'! + + + Weapons - Are you sure? + Uzbrojenie - JesteÅ› pewien? + + + Do you really want to delete the weapon set '%1'? + Na pewno chcesz usunÄ…c zestaw broni '%1'? + + + + QObject Nickname Nick @@ -2523,114 +2140,79 @@ Powiąż typy plików z Hedgewars - Set - Ustaw - - more WiÄ™cej More info - + WiÄ™cej informacji Set default options - + Zapisz jako domyśłne ustawienia Open videos directory - + Otwórz katalog z filmami Play - + Odtwórz Upload to YouTube - + WyÅ›lij do YouTube Cancel uploading - - - - - QTableWidget - - Room Name - Nazwa pokoju - - - C - Kli - - - T - Druż - - - Owner - WÅ‚aÅ›c - - - Map - Mapa - - - Rules - Schemat - - - Weapons - Uzbrojenie + Anuluj wysyÅ‚anie RoomsListModel In progress - W toku + W toku Room Name - Nazwa pokoju + Nazwa pokoju C - Kli + Kli T - Druż + Druż Owner - WÅ‚aÅ›c + WÅ‚aÅ›c Map - Mapa + Mapa Rules - Schemat + Schemat Weapons - Uzbrojenie + Uzbrojenie Random Map - Losowa mapa + Losowa mapa Random Maze - Losowy labirynt + Losowy labirynt Hand-drawn - + Rys. rÄ™cznie @@ -2661,21 +2243,6 @@ - TCPBase - - Error - BÅ‚Ä…d - - - Unable to start the server: %1. - Nie można uruchomić serwera: %1. - - - Unable to run engine: %1 ( - Nie można uruchomić silnika gry: %1 ( - - - ToggleButtonWidget Vampirism @@ -2718,10 +2285,6 @@ NieÅ›miertelność - Add Mines - Dodaj miny - - Random Order Losowa kolejność @@ -2947,11 +2510,11 @@ mute audio - + wycisz dźwiÄ™k record - + nagrywaj @@ -3041,7 +2604,7 @@ Record video: - + Nagraj wideo: diff -r 3331b30e4ef1 -r 88fde28bbda6 share/hedgewars/Data/Locale/hedgewars_pt_BR.ts --- a/share/hedgewars/Data/Locale/hedgewars_pt_BR.ts Sun Oct 21 01:28:33 2012 +0400 +++ b/share/hedgewars/Data/Locale/hedgewars_pt_BR.ts Sat Nov 03 00:34:35 2012 +0400 @@ -20,21 +20,6 @@ - DrawMapWidget - - File error - - - - Cannot open file '%1' for writing - - - - Cannot read file '%1' - - - - FreqSpinBox Never @@ -55,14 +40,6 @@ Editar armas - Error - Erro - - - Illegal ammo scheme - Esquema de armas ilegal - - Edit schemes Editar esquemas @@ -78,29 +55,13 @@ HWAskQuitDialog - Do yot really want to quit? + Do you really want to quit? HWChatWidget - %1 *** %2 has been removed from your ignore list - %1 *** %2 foi removido da sua lista de ignorados - - - %1 *** %2 has been added to your ignore list - %1 *** %2 foi adicionado a sua lista de ignorados - - - %1 *** %2 has been removed from your friends list - %1 *** %2 foi removido da sua lista de amigos - - - %1 *** %2 has been added to your friends list - %1 *** %2 foi adicionado a sua lista de amigos - - %1 has been removed from your ignore list @@ -148,30 +109,10 @@ HWForm - Error - Erro - - - OK - OK - - - Unable to start the server - Falha ao iniciar o servidor - - Cannot save record to file %1 Falha ao salvar registro no arquivo %1 - new - novo - - - Please select record from the list above - Selecione um registro na lista acima - - DefaultTeam EquipePadrão @@ -198,10 +139,6 @@ - Password - Senha - - Your nickname %1 is registered on Hedgewars.org Please provide your password below @@ -220,16 +157,14 @@ Apelido - Some one already uses - your nickname %1 -on the server. + No nickname supplied. + + + + Someone already uses your nickname %1 on the server. Please pick another nickname: - - No nickname supplied. - - HWGame @@ -356,20 +291,6 @@ Você foi chutado - Password - Senha - - - Your nickname %1 is -registered on Hedgewars.org -Please provide your password -or pick another nickname: - Seu apelido %1 é -registrado no Hedgewars.org -Por favor, forneça sua senha -ou escolha outro apelido: - - %1 *** %2 has joined the room %1 *** %2 entrou na sala @@ -386,20 +307,6 @@ %1 *** %2 saiu - Your nickname %1 is -registered on Hedgewars.org -Please provide your password below -or pick another nickname in game config: - Seu apelido %1 é -registrado no Hedgewars.org -Por favor, forneça sua senha -ou escolha outro apelido: - - - Nickname - Apelido - - User quit @@ -494,10 +401,6 @@ Connecting... Conectando... - - Cancel - Cancelar - PageDrawMap @@ -522,10 +425,6 @@ Carregar mapa - Drawn Maps (*.hwmap);;All files (*.*) - Mapas Desenhados (*.hwmaps);; Todos os arquivos (*.*) - - Save drawn map Salvar Mapa @@ -556,74 +455,6 @@ PageGameStats - <p>The best shot award was won by <b>%1</b> with <b>%2</b> pts.</p> - <p>O prêmio de melhor disparo foi ganho por <b>%1</b> , com <b>%2</b> pontos.</p> - - - <p>The best killer is <b>%1</b> with <b>%2</b> kills in a turn.</p> - - <p>O prêmio de melhor matador é de <b>%1</b>, com <b>%2</b> morto em um turno.</p> - <p>Os prêmios de melhor matador vão para <b>%1</b>, com <b>%2</b> mortos em um turno.</p> - - - - <p>A total of <b>%1</b> hedgehog(s) were killed during this round.</p> - - <p>Um total de <b>%1</b> ouriço foi morto nesta batalha.</p> - <p>Um total de <b>%1</b> ouriços foram mortos nesta batalha.</p> - - - - <h1><img src=":/res/StatsD.png"> Details</h1> - <h1><img src=":/res/StatsD.png"> Detalhes</h1> - - - <br><h1><img src=":/res/StatsH.png"> Health graph</h1> - <br><h1><img src=":/res/StatsH.png"> Desenvolvimento</h1> - - - <h1><img src=":/res/StatsR.png"> Ranking</h1> - <h1><img src=":/res/StatsR.png"> Ranking</h1> - - - <p><img src=":/res/StatsBestShot.png"> The best shot award was won by <b>%1</b> with <b>%2</b> pts.</p> - <p><img src=":/res/StatsBestShot.png"> O prêmio de melhor tiro vai para <b>%1</b> com <b>%2</b> pts.</p> - - - <p><img src=":/res/StatsBestKiller.png"> The best killer is <b>%1</b> with <b>%2</b> kills in a turn.</p> - - <p><img src=":/res/StatsBestKiller.png"> O melhor matador é <b>%1</b> com <b>%2</b> mortes em um turno.</p> - <p><img src=":/res/StatsBestKiller.png"> Os melhores matadores são <b>%1</b> com <b>%2</b> mortes em um turno.</p> - - - - <p><img src=":/res/StatsHedgehogsKilled.png"> A total of <b>%1</b> hedgehog(s) were killed during this round.</p> - - <p><img src=":/res/StatsHedgehogsKilled.png"> Um total de <b>%1</b> ouriço foi morto neste round.</p> - <p><img src=":/res/StatsHedgehogsKilled.png"> Um total de <b>%1</b> ouriços foram mortos neste round.</p> - - - - <p><h2>%1 %2. <font color="%5">%3</font> (%4 kill).</h2></p> - <p><h2>%1 %2. <font color="%5">%3</font> (%4 morte).</h2></p> - - - <p><h2>%1 %2. <font color="%5">%3</font> (%4 kills).</h2></p> - <p><h2>%1 %2. <font color="%5">%3</font> (%4 mortes).</h2></p> - - - <p><img src=":/res/StatsMostSelfDamage.png"> <b>%1</b> thought it's good to shoot his own hedgehogs with <b>%2</b> pts.</p> - <p><img src=":/res/StatsMostSelfDamage.png"> <b>%1</b> pensou que era bom atirar na sua própria equipe totalizando <b>%2</b> pts.</p> - - - <p><img src=":/res/StatsSelfKilled.png"> <b>%1</b> killed <b>%2</b> of his own hedgehogs.</p> - <p><img src=":/res/StatsSelfKilled.png"> <b>%1</b> matou <b>%2</b> dos próprios ouriços.</p> - - - <p><img src=":/res/StatsSkipped.png"> <b>%1</b> was scared and skipped turn <b>%2</b> times.</p> - <p><img src=":/res/StatsSkipped.png"> <b>%1</b> estava assustado e passou o turno <b>%2</b> vezes.</p> - - Details Detalhes @@ -660,10 +491,6 @@ (%1 mortes) - - (%1 kills) - (%1 mortes) - <b>%1</b> thought it's good to shoot his own hedgehogs with <b>%2</b> pts. @@ -703,14 +530,6 @@ PageMain - Local Game (Play a game on a single computer) - Jogo Local (Jogue uma partida em apenas um computador) - - - Network Game (Play a game across a network) - Jogo em Rede (Jogue uma partida em rede) - - 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 Use a mesma cor que um amigo para jogar como uma equipe única. Cada um controlará seus próprios ouriços, mas vencerão em equipe (ou perderão). @@ -726,11 +545,6 @@ Se você não tem certeza se quer desperdiçar munição ou ítens, passe a vez. Mas não deixe muitos turnos passarem ou chegará a Morte Súbita! - Want to save ropse? 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 - Quer economizar corda? Dispare-a enquanto estiver no meio do ar. Se você não tocar o solo, você não estará usando as cordas do seu arsenal! - - 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 Se você quiser evitar que outros usem seu apelido no servidor oficial, registre-o em http://www.hedgewars.org/. @@ -781,16 +595,6 @@ Lembre-se que você pode selecionar suas próprias regras em jogos locais ou em rede. Você não está limitado ao "Jogo Simples". - Connect a gamepad before launching the game to be able to assign its controls to your team. - Tips - Conecte um joystick ou controle antes de iniciar o jogo para poder atribuir os controles ao seu time. - - - Create an account on http://www.hedgewars.org/ to keep others from using your most favourite nickname while playing on the official server. - Tips - Crie um conta em http://www.hedgewars.org/ para evitar que outros use o seu apelido favorito no servidoroficial. - - While playing you should give yourself a short break at least once an hour. Tips Não jogue por diversas horas sem descansar! De uma pausa a cada hora. @@ -816,11 +620,6 @@ Modos especiais de jogo, como Vampirismo ou Karma permitem desenvolver novas táticas. Tente-os em um jogo personalisado! - The Windows version of Hedgewars supports Xfire. Make sure to add Hedgwars to its game list so your friends can see you playing. - Tips - A versão Windows deste jogo permite o uso do Xfire. Certifique-se de adicionar Hedgewars para sua lista de jogos para ver quem está jogando. - - You should never install Hedgewars on computers you don't own (school, university, work, etc.). Please ask the responsible person instead! Tips Não instale este jogo em computadores que não seja permitido (escola, trabalho, universidade). Solicite isso ao responsável! @@ -836,11 +635,6 @@ Nenhum ouriço foi ferido para fazer este jogo. - Connect one or more gamepads before launching the game to be able to assign their controls to your teams. - Tips - Conecte um ou mais controles antes de iniciar o jogo para que você possa atribuí-los para sua equipe - - 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 é um jogo de Código Aberto e grátis que criamos em nosso tempo livre. Se alguém te vendeu este jogo, você deveria pedir reembolso! @@ -892,11 +686,6 @@ O Ataque com Piano é o mais violento ataque aéreo. Você perderá seu ouriço ao executá-lo, logo, há uma grande contra-partida. - 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 - A Abelha pode ser dificil de usar. O raio da sua volta depende da velocidade dela, então evite usar força máxima. - - Sticky Mines are a perfect tool to create small chain reactions knocking enemy hedgehogs into dire situations ... or water. Tips Minas Adesivas são a arma perfeita para criar pequenas reações em cadeias, colocando ouriços inimigos em situações complicadas.... ou na água @@ -922,11 +711,6 @@ O Lança-Chamas é uma arma porém pode ser usado para cavar túneis também. - Use the Incinerating Grenade to temporary keep hedgehogs from passing terrain such as tunnels or platforms. - Tips - Use o Cocktail Molotov para evitar que ouriços atravessem terrenos como túneis ou plataformas temporariamente. - - Want to know who's behind the game? Click on the Hedgewars logo in the main menu to see the credits. Tips Quer saber quem está por trás desse jogo? Clique no logo do Hedgewars no menu principal para ver os créditos. @@ -957,11 +741,6 @@ Você pode encontrar os arquivos de configuração em "Meus Documentos\Hedgewars". Crie cópias ou leve os arquivos com você, mas não edite eles manualmente. - 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 - Você pode encontrar os arquivos de configuração em ".hedgewars". Crie cópias ou leve os arquivos com você, mas não edite eles manualmente. - - 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 Você pode associar os arquivos relacionados ao Hedgewars (jogos salvos e gravações demo), podendo abrí-los diretamente do gerenciador de arquivos ou do navegador @@ -1049,35 +828,12 @@ - PageNet - - Error - Erro - - - Please select server from the list above - Por favor selecione o servidor na lista acima - - - PageNetGame Control Controle - Error - Erro - - - Please enter room name - Entre com um nome de sala - - - OK - OK - - DLC @@ -1120,18 +876,6 @@ Apagar equipe - New weapon scheme - Novo esquema de armas - - - Edit weapon scheme - Editar esquema de armas - - - Delete weapon scheme - Apagar esquema de armas - - You can't edit teams from team selection. Go back to main menu to add, edit or delete teams. Você não pode editar as equipes a partir da seleção de equipes. Volte ao menu para adicionar, editar ou apagar equipes. @@ -1207,14 +951,6 @@ PagePlayDemo - Error - Erro - - - OK - OK - - Rename dialog Renomear @@ -1222,18 +958,6 @@ Enter new file name: Especifique o novo nome do arquivo: - - Cannot rename to - Não foi possível renomear para - - - Cannot delete file - Não foi possível excluir o arquivo - - - Please select record from the list - Por favor selecione uma entrada da lista - PageRoomsList @@ -1246,18 +970,6 @@ Entrar - Refresh - Atualizar - - - Error - Erro - - - OK - OK - - Admin features Opções do Administrador @@ -1266,68 +978,6 @@ Nome da Sala: - This game is in lobby. -You may join and start playing once the game starts. - Este jogo está em espera. -Você pode entrar e começar a jogar quando o jogo iniciar. - - - 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. - Este jogo já está acontecendo. -Você pode entrar e assitir, mas terá que esperar o jogo terminar para poder jogar. - - - %1 is the host. He may adjust settings and start the game. - %1 é o anfitrião. Ele pode ajustar opções e iniciar o jogo. - - - Random Map - Mapa Aleatório - - - Games may be played on precreated or randomized maps. - Partidas podem ser jogadas em mapas pré-criados ou aleatórios. - - - The Game Scheme defines general options and preferences like Round Time, Sudden Death or Vampirism. - O Esquema de Jogo define as opções gerais e preferências como Tempo do Round, Morte Súbita ou Vampirismo. - - - The Weapon Scheme defines available weapons and their ammunition count. - o Esquema de Armas define as armas disponíveis e as quantidades de munições delas. - - - There are %1 clients connected to this room. - - Existe %1 cliente conectado a esta sala. - Existem %1 clientes conectados a esta sala. - - - - There are %1 teams participating in this room. - - Existe %1 equipe participando desta sala. - Existem %1 equipes participando desta sala. - - - - Please enter room name - Entre com um nome de sala - - - Please select room from the list - Selecione uma sala da lista - - - Random Maze - Labirinto Aleatório - - - State: - Estado: - - Rules: Regras: @@ -1343,16 +993,6 @@ Clear Limpar - - Warning - Aviso - - - The game you are trying to join has started. -Do you still want to join the room? - O jogo no qual você está tentando entrar já começou. -Você ainda quer entrar na sala? - %1 players online @@ -1372,10 +1012,6 @@ Excluir - Enable random mines - Habilitar minas aleatórias - - Gain 80% of the damage you do back in health Ganhe 80% dos danos de vida para você @@ -1408,10 +1044,6 @@ Terreno não pode ser destruído! - Add an indestructable border around the terrain - Adicione uma borda indestrutível em volta do terreno - - Lower gravity Baixa gravidade @@ -1514,30 +1146,6 @@ PageSinglePlayer - Simple Game (a quick game against the computer, settings are chosen for you) - Jogo Simples (uma partida rápida contra o computador, opções são escolhidas por você) - - - Multiplayer (play a hotseat game against your friends, or AI teams) - Multiplayer (jogue no mesmo computador contra seus amigos ou contra o computador) - - - Training Mode (Practice your skills in a range of training missions). IN DEVELOPMENT - Modo de Treino (Pratique suas habilidades nas missões de treino). EM DESENVOLVIMENTO - - - Demos (Watch recorded demos) - Demos (Assista a demos gravadas) - - - Load (Load a previously saved game) - Carregar (Carregue um jogo salvo) - - - Campaign Mode (...). IN DEVELOPMENT - Modo Campanha (...) EM DESENVOLVIMENTO - - Simple Game @@ -1631,21 +1239,6 @@ - Are you sure? - - - - Do you really want do remove %1? - - - - Do you really want do remove %1 file(s)? - - - - - - encoding @@ -1653,10 +1246,6 @@ uploading - - Do you really want do cancel uploading %1? - - QAction @@ -1744,10 +1333,6 @@ Checar por atualizações ao iniciar - Reduced quality - Qualidade reduzida - - Show ammo menu tooltips Mostrar instruções no menu de armas @@ -1827,42 +1412,6 @@ Em progresso - Default - Padrão - - - Pro mode - Modo Pro - - - Shoppa - Shoppa - - - Basketball - Basketball - - - Minefield - Campo Minado - - - Barrel mayhem - Inferno de Barris - - - Tunnel hogs - Túneis - - - Crazy - Crazy - - - Normal - Normal - - hand drawn map... mapa desenhado a mão... @@ -1954,10 +1503,6 @@ Opções de áudio e gráficos - Weapons - Armas - - Net game Jogo em rede @@ -2013,10 +1558,6 @@ QLabel - This program is distributed under the GNU General Public License - Este programa é distribuido sob a Licensa Pública GNU - - Developers: Desenvolvedores: @@ -2053,10 +1594,6 @@ Limite de FPS - Net nick - Apelido de rede - - Server name: Nome do servidor: @@ -2141,24 +1678,10 @@ Localização - Restart game to apply - Reinicie o jogo para aplicar as modificações - - - This SVN 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! - Esta construção a partir do SVN é "trabalho em progresso" e pode não ser compatível com outras versões do jogo. -Algumas funcionalidades podem estar quebradas ou incompletas. Use a sua conta e risco! - - Explosives Explosivos - This SVN 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! - Esta construção a partir do SVN é "trabalho em progresso" e pode não ser compatível com outras versões do jogo. Algumas funcionalidades podem estar quebradas ou incompletas. Use por sua conta e risco! - - Tip: Dica: @@ -2191,10 +1714,6 @@ % Comprimento da Corda - Gameplay - Modo de Jogo - - Stereo rendering @@ -2207,10 +1726,6 @@ - Password - Senha - - % Get Away Time @@ -2221,7 +1736,7 @@ There are videos that are currently being processed. Exiting now will abort them. -Do yot really want to quit? +Do you really want to quit? @@ -2306,10 +1821,6 @@ QMessageBox - Network - Rede - - Connection to server is lost A conexão com o servidor foi perdida @@ -2318,92 +1829,14 @@ Erro - Failed to open data directory: -%1 -Please check your installation - Não foi possível abrir diretório de dados: -%1 -Por favor verifique sua instalação - - - Weapons - Armas - - - Can not edit default weapon set - Duvida:Esquema ou disposição? - Não foi possível editar o equemas de armas padrão - - - Can not delete default weapon set - Duvida:Esquema ou disposição? - Não foi possível excluir o esquema padrão de armas - - - Really delete this weapon set? - Realmente deseja remover este esquema de armas? - - - Can not overwrite default weapon set '%1'! - Não pode sobre-escrever o esquema %1! - - - All file associations have been set. - Todos os arquivos foram associados. - - File association failed. Associação de arquivos falhou. - Teams - Equipes - - - Really delete this team? - Realmente deseja apagar esta Equipe? - - - Schemes - Esquemas - - - Can not delete default scheme '%1'! - Esquema padrão não pode ser apagado '%1'! - - - Really delete this game scheme? - Realmente deseja apagar este esquema de jogo? - - - Can not delete default weapon set '%1'! - Esquema de armas não pode ser apagado '%1'! - - - Fields required - - - Please fill out all fields - Success - - - - Successfully posted the issue on code.google.com! - - - - Error during authentication with www.google.com - - - - Error creating the issue - - - Error while authenticating at google.com: @@ -2417,22 +1850,202 @@ + + Teams - Are you sure? + + + + Do you really want to delete the team '%1'? + + + + Cannot delete default scheme '%1'! + + + + Please select a record from the list + + + + Unable to start server + + + + Hedgewars - Error + + + + Hedgewars - Success + + + + All file associations have been set + + + + Successfully posted the issue on hedgewars.googlecode.com + + + + Error during authentication at google.com + + + + Error reporting the issue, please try again later (or visit hedgewars.googlecode.com directly) + + + + Main - Error + + + + Cannot create directory %1 + Não foi possível criar o diretório %1 + + + Failed to open data directory: +%1 + +Please check your installation! + + + + TCP - Error + + + + Unable to start the server: %1. + Não foi possível iniciar o servidor: %1. + + + Unable to run engine at + + + + Error code: %1 + + + + Video upload - Error + + + + Netgame - Error + + + + Please select a server from the list + + + + Please enter room name + Entre com um nome de sala + + + Record Play - Error + + + + Please select record from the list + Por favor selecione uma entrada da lista + + + Cannot rename to + + + + Cannot delete file + + + + Room Name - Error + + + + Please select room from the list + Selecione uma sala da lista + + + Room Name - Are you sure? + + + + The game you are trying to join has started. +Do you still want to join the room? + O jogo no qual você está tentando entrar já começou. +Você ainda quer entrar na sala? + + + Schemes - Warning + + + + Schemes - Are you sure? + + + + Do you really want to delete the game scheme '%1'? + + + + Videos - Are you sure? + + + + Do you really want to delete the video '%1'? + + + + Do you really want to remove %1 file(s)? + + + + + + + Do you really want to cancel uploading %1? + + + + File error + + + + Cannot open '%1' for writing + + + + Cannot open '%1' for reading + + + + Cannot use the ammo '%1'! + + + + Weapons - Warning + + + + Cannot overwrite default weapon set '%1'! + + + + Cannot delete default weapon set '%1'! + + + + Weapons - Are you sure? + + + + Do you really want to delete the weapon set '%1'? + + QObject - Error - Erro - - - Cannot create directory %1 - Não foi possível criar o diretório %1 - - - OK - OK - - Nickname Apelido @@ -2512,11 +2125,6 @@ Associar extensão de arquivos. - Set - Esquema esta muito genérico - Esquema - - more @@ -2546,38 +2154,6 @@ - QTableWidget - - Room Name - Nome da Sala - - - C - C - - - T - E de equipe, na tabela de salas. (Equipes conectadas) - E - - - Owner - Dono - - - Map - Mapa - - - Rules - Regras - - - Weapons - Armas - - - RoomsListModel In progress @@ -2653,21 +2229,6 @@ - TCPBase - - Error - Erro - - - Unable to start the server: %1. - Não foi possível iniciar o servidor: %1. - - - Unable to run engine: %1 ( - Não foi possível iniciar o motor: %1 ( - - - ToggleButtonWidget Vampirism @@ -2710,10 +2271,6 @@ Invulnerabilidade - Add Mines - Adicionar Minas - - Random Order Ordem Aleatória diff -r 3331b30e4ef1 -r 88fde28bbda6 share/hedgewars/Data/Locale/hedgewars_pt_PT.ts --- a/share/hedgewars/Data/Locale/hedgewars_pt_PT.ts Sun Oct 21 01:28:33 2012 +0400 +++ b/share/hedgewars/Data/Locale/hedgewars_pt_PT.ts Sat Nov 03 00:34:35 2012 +0400 @@ -5,7 +5,7 @@ AbstractPage Go back - + Retrodecer @@ -20,21 +20,6 @@ - DrawMapWidget - - File error - Erro no ficheiro - - - Cannot open file '%1' for writing - Impossivel abrir o ficheiro '%1' para escrita - - - Cannot read file '%1' - Impossivel let o ficheiro '%1' - - - FreqSpinBox Never @@ -55,14 +40,6 @@ Editar armas - Error - Erro - - - Illegal ammo scheme - Esquema de armas inválido - - Edit schemes Editar esquemas @@ -78,29 +55,13 @@ HWAskQuitDialog - Do yot really want to quit? - + Do you really want to quit? + Deseja realmente saír? HWChatWidget - %1 *** %2 has been removed from your ignore list - %1 *** %2 foi removido da tua Ignore List - - - %1 *** %2 has been added to your ignore list - %1 *** %2 foi adicionado à tua Ignore List - - - %1 *** %2 has been removed from your friends list - %1 *** %2 foi removido da tua lista de amigos - - - %1 *** %2 has been added to your friends list - %1 *** %2 foi adicionado à tua lista de amigos - - %1 has been removed from your ignore list %1 foi removido da tua lista de utilizadores ignorados @@ -144,38 +105,14 @@ %1 is not a valid command! %1 não é um comando valido! - - Kicking %1 ... - A expulsar %1 ... - HWForm - new - novo - - - Error - Erro - - - OK - OK - - - Unable to start the server - Não foi possível iniciar o servidor - - Cannot save record to file %1 Não foi possível gravar no ficheiro %1 - Please select record from the list above - Seleccione uma gravação da lista acima - - DefaultTeam EquipaPorOmissão @@ -202,10 +139,6 @@ Jogo abortado - Password - Password - - Your nickname %1 is registered on Hedgewars.org Please provide your password below @@ -224,18 +157,15 @@ Nome de utilizador - Some one already uses - your nickname %1 -on the server. -Please pick another nickname: - O nome de utilizador %1 -já está a ser utilizado. -Por favor escolhe outro nome de utilizador. - - No nickname supplied. Não foi fornecido um nome de utilizador. + + Someone already uses your nickname %1 on the server. +Please pick another nickname: + Alguem já está a utilizar o teu nome de utilizador %1 no servidor. +Por favor escolhe outro nome de utilizador: + HWGame @@ -361,20 +291,6 @@ Foi expulso - Password - Password - - - Your nickname %1 is -registered on Hedgewars.org -Please provide your password -or pick another nickname: - O nome de utilizador %1 está -registado em Hedgewars.org -Por favor digite a sua palavra passe -ou escolha outro nome de utilizador: - - %1 *** %2 has joined the room %1 *** %2 juntou-se à sala @@ -391,57 +307,34 @@ %1 *** %2 saíu - Your nickname %1 is -registered on Hedgewars.org -Please provide your password below -or pick another nickname in game config: - O nome de utilizador %1 está -registado em Hedgewars.org -Por favor digite a sua palavra passe ou escolha -outro nome de utilizador no menu de configuração: - - - Nickname - Nome de utilizador - - - Some one already uses - your nickname %1 -on the server. -Please pick another nickname: - O nome de utilizador %1 -já está a ser utilizado no servidor. -Por favor escolha outro nome de utilizador. - - User quit Utilizador saiu Remote host has closed connection - + O anfitrião remoto terminou a ligação The server is too old. Disconnecting now. - + O servidor é demasiado antigo. Desconectado. HWPasswordDialog Password - Password + Palavra-passe HWUploadVideoDialog Upload video - + Upload vídeo Upload - + Upload @@ -454,36 +347,27 @@ LibavIteraction - Duration: %1m %2s - - + Duration: %1m %2s + Duração: %1m %2s Video: %1x%2, - + Vídeo: %1x%2, %1 fps, - + %1 fps, Audio: - + Audio: PageAdmin - Server message: - Mensagem do servidor: - - - Set message - Definir mensagem - - Clear Accounts Cache - Limpar a cache das contas + Limpar Cache das Contas Fetch data @@ -516,10 +400,6 @@ Connecting... A ligar... - - Cancel - Cancelar - PageDrawMap @@ -544,10 +424,6 @@ Carregar mapa desenhado - Drawn Maps (*.hwmap);;All files (*.*) - Mapas Desenhados (*.hwmap);;Todos os ficheiros (*.*) - - Save drawn map Gravar mapa desenhado @@ -561,7 +437,7 @@ Eraser - + Apagador @@ -578,24 +454,6 @@ PageGameStats - <p>The best shot award was won by <b>%1</b> with <b>%2</b> pts.</p> - <p>O título de melhor tiro foi para <b>%1</b> com <b>%2</b> pontos de dano.</p> - - - <p>The best killer is <b>%1</b> with <b>%2</b> kills in a turn.</p> - - <p>O extreminador da ronda foi <b>%1</b> com <b>%2</b> morto num unico turno.</p> - <p>O extreminador da ronda foi <b>%1</b> com <b>%2</b> mortes num unico turno.</p> - - - - <p>A total of <b>%1</b> hedgehog(s) were killed during this round.</p> - - <p>Apenas <b>%1</b> ouriço perdeu a vida durante esta ronda.</p> - <p>Um total de <b>%1</b> ouriços perderam a vida durante esta ronda.</p> - - - Details Detalhes @@ -635,8 +493,8 @@ <b>%1</b> thought it's good to shoot his own hedgehogs with <b>%2</b> pts. - <b>%1</b> axou que seria divertido atacar a sua própria equipa fazendo <b>%2</b> ponto de dano. - <b>%1</b> axou que seria divertido atacar a sua própria equipa fazendo <b>%2</b> pontos de dano. + <b>%1</b> axou que seria divertido atacar a sua própria equipa causando <b>%2</b> ponto de dano. + <b>%1</b> axou que seria divertido atacar a sua própria equipa causando um total de <b>%2</b> pontos de dano. @@ -649,8 +507,8 @@ <b>%1</b> was scared and skipped turn <b>%2</b> times. - <b>%1</b> estava tão intimidado que passou <b>%2</b> turno. - <b>%1</b> estava tão intimidado que passou <b>%2</b> turnos. + <b>%1</b> estava tão amedrontado que passou <b>%2</b> turno. + <b>%1</b> estava tão amedrontado que passou <b>%2</b> turnos. @@ -665,20 +523,12 @@ PageInfo Open the snapshot folder - + Abrir a pasta com as capturas de ecrã PageMain - Local Game (Play a game on a single computer) - Jogo local (Joga Hedgewars apenas com este computador) - - - Network Game (Play a game across a network) - Jogo em rede (Joga em rede ou na internet) - - 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 Simplesmente selecciona a mesma cor de outro jogador para jogarem em equipa. Continuas a ter total controlo dos teus ouriços, mas ganham ou perdem juntos. @@ -929,43 +779,43 @@ Local Game - + Jogo Local Play a game on a single computer - + Joga num único computador Network Game - + Jogo em Rede Play a game across a network - + Joga Hedgewars através da rede Read about who is behind the Hedgewars Project - + Lê sobre quem está por trás do Projecto Hedgewars Leave a feedback here reporting issues, suggesting features or just saying how you like Hedgewars - + Deixa feedback expondo problemas, sugerindo novas funcionalidades ou simplesmente expressando o quanto adoras o Hedgewars Access the user created content downloadable from our website - + Acede a conteúdo criado pelos utilizadores acessível do nosso website Exit game - + Saír do jogo Manage videos recorded from game - + Gere vídeos de partidas gravadas Edit game preferences - + Editar as preferencias de jogo @@ -976,41 +826,18 @@ - PageNet - - Error - Erro - - - Please select server from the list above - Seleccione um servidor da lista acima - - - PageNetGame Control Controlo - Error - Erro - - - Please enter room name - Por favor insira o nome da sala - - - OK - OK - - DLC - + DLC Downloadable Content - Conteúdo Transferível (DLC) + Conteúdo Transferível @@ -1025,11 +852,11 @@ Join hundreds of players online! - + Junta-te a centenas de jogadores online! Join or host your own game server in a Local Area Network. - + Cria ou junta-te a jogo numa Rede Local @@ -1047,18 +874,6 @@ Apagar equipa - New weapon scheme - Novo esquema de armas - - - Edit weapon scheme - Editar esquema de armas - - - Delete weapon scheme - Apagar esquema de armas - - You can't edit teams from team selection. Go back to main menu to add, edit or delete teams. Não é possível editar equipas do menu de selecção de equipa. Volte ao menu principal se pretender adicionar, editar ou apagar equipas. @@ -1088,60 +903,52 @@ General - Geral + Geral Advanced - Avançado + Avançado Reset to default colors - + Repor cores por omisão Proxy host - + Servidor Proxy port - + Porta Proxy login - + Login Proxy password - + Password No proxy - + Não utilizar proxy Socks5 proxy - + Proxy Socks5 HTTP proxy - + Proxy HTTP System proxy settings - + Configuração proxy do sistema PagePlayDemo - Error - Erro - - - OK - OK - - Rename dialog Renomear @@ -1149,18 +956,6 @@ Enter new file name: Insira um novo nome para o ficheiro: - - Cannot rename to - Não foi possível renomear para - - - Cannot delete file - Não é possível eliminar o ficheiro - - - Please select record from the list - Por favor seleccione uma gravação da lista - PageRoomsList @@ -1173,18 +968,6 @@ Entrar - Refresh - Actualizar - - - Error - Erro - - - OK - OK - - Admin features Recursos de administrador @@ -1193,68 +976,6 @@ Nome da Sala: - This game is in lobby. -You may join and start playing once the game starts. - Este jogo está ainda na entrada. -Pode-se juntar e jogar assim que o jogo começe. - - - 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. - Este jogo está em progresso. -Pode-se juntar e observar, mas vai ter de esperar que o jogo termine para poder jogar. - - - %1 is the host. He may adjust settings and start the game. - %1 é o anfitrião. Ele pode ajustar as configurações e começar o jogo. - - - Random Map - Mapa Aleatório - - - Games may be played on precreated or randomized maps. - É possivel jogar em mapas pré-criados ou aleatórios. - - - The Game Scheme defines general options and preferences like Round Time, Sudden Death or Vampirism. - O Esquema de Jogo define as configurações gerais e preferências como Tempo da Ronda, Morte súbita ou Vampirismo. - - - The Weapon Scheme defines available weapons and their ammunition count. - O Esquema de Armas define que armas estão disponíveis e a quantidade de munições. - - - There are %1 clients connected to this room. - - Apenas %1 cliente esta conectado a esta sala. - Um total de %1 clientes estão conectados a esta sala. - - - - There are %1 teams participating in this room. - - Apenas %1 equipa esta a participar nesta sala. - Existem %1 equipas a participar nesta sala. - - - - Please enter room name - Insira o nome da sala - - - Please select room from the list - Seleccione uma sala da lista - - - Random Maze - Labirinto Aleatório - - - State: - Estado: - - Rules: Regras @@ -1270,16 +991,6 @@ Clear Limpar - - Warning - Atenção - - - The game you are trying to join has started. -Do you still want to join the room? - O jogo a que te estas a tentar juntar já começou. -Desejas juntar-te ao jogo de qualquer maneira? - %1 players online @@ -1315,10 +1026,6 @@ Todos os ouriços têm um campo de forças pessoal - Enable random mines - Adiciona minas aleatoriamente - - Gain 80% of the damage you do back in health Converte 80% do dano realizado em vida @@ -1437,80 +1144,48 @@ PageSinglePlayer - Simple Game (a quick game against the computer, settings are chosen for you) - Jogo simples (jogo rápido contra o computador, as definições serão escolhidas para si) - - - Multiplayer (play a hotseat game against your friends, or AI teams) - Multi Jogador (jogo estratégico contra amigos ou equipas IA) - - - Training Mode (Practice your skills in a range of training missions). IN DEVELOPMENT - Modo de Treino (pratica as tuas capacidades numa variedade de missões de treino). EM DESENVOLVIMENTO - - - Demos (Watch recorded demos) - Demos (ver demos gravados) - - - Load (Load a previously saved game) - Carregar (carrega um jogo salvo previamente) - - - Campaign Mode (...). IN DEVELOPMENT - Modo Campanha (...) EM DESENVOLVIMENTO - - - Campaign Mode (...) - Modo Campanha (...) - - - Training Mode (Practice your skills in a range of training missions) - Modo Treino (Treina as tuas habilidades numa panóplia de missões de treino) - - Simple Game - + Jogo Simples Play a quick game against the computer with random settings - + Joga um jogo rápido contra o computador com configurações aleatórias Multiplayer - + Multi-jogador Play a hotseat game against your friends, or AI teams - + Joga alternadamente contra os teus amigos, ou o computador Campaign Mode - + Modo Campanha Training Mode - + Modo Treino Practice your skills in a range of training missions - + Pratica as tuas habilidades numa variedade de missões de treino Demos - + Demos Watch recorded demos - + Assistir aos demos guardados Load - Carregar + Carregar Load a previously saved game - + Carrega um jogo gravado anteriormente @@ -1525,68 +1200,49 @@ Pick the mission or training to play - + Seleciona uma missão ou treino para jogar Start fighting - + Começar a batalha PageVideos Name - Nome + Nome Size - + Tamanho %1 bytes - - - + + %1 byte + %1 bytes (in progress...) - + (em progresso...) Date: - + Data: Size: - - - - Are you sure? - - - - Do you really want do remove %1? - - - - Do you really want do remove %1 file(s)? - - - - + Tamanho: encoding - + a converter uploading - - - - Do you really want do cancel uploading %1? - + a enviar @@ -1675,10 +1331,6 @@ Adicionar data e hora ao nome do ficheiro de gravação - Reduced quality - Qualidade reduzida - - Show ammo menu tooltips Mostrar a ajuda no menu das armas @@ -1696,23 +1348,23 @@ Save password - + Guardar Palavra-passe Save account name and password - + Guardar o nome da conta e palavra-passe Video is private - + O vídeo é privado Record audio - + Gravar audio Use game resolution - + Utilizar a resolução do jogo @@ -1758,10 +1410,6 @@ Em progresso - Default - Predefinido - - hand drawn map... mapa desenhado à mão... @@ -1849,10 +1497,6 @@ Equipas - Weapons - Armas - - Audio/Graphic options Opções de Ãudio/Gráficos @@ -1886,27 +1530,27 @@ Custom colors - + Cores personalizadas Miscellaneous - + Outras opções Video recording options - + Opções de criação de vídeo Videos - + Vídeos Description - + Descrição Proxy settings - + Definições do Proxy @@ -1924,10 +1568,6 @@ Versão - This program is distributed under the GNU General Public License - Este programa é distribuído sob a GNU General Public License - - Developers: Programadores: @@ -1960,10 +1600,6 @@ Porta: - Net nick - Nick de rede - - Resolution Resolução @@ -2040,10 +1676,6 @@ Idioma - Restart game to apply - Reinicie o jogo para aplicar as alterações - - Explosives Explosivos @@ -2084,10 +1716,6 @@ Renderização estereoscópica - Game Options - Opções de Jogo - - Style Estilo @@ -2096,10 +1724,6 @@ Esquema - Password - Password - - % Get Away Time % Tempo Para Retirar @@ -2110,64 +1734,66 @@ There are videos that are currently being processed. Exiting now will abort them. -Do yot really want to quit? - +Do you really want to quit? + Existem vídeos a serem currentemente processados. +Sair irá cancela-los. +Deseja mesmo sair? Please provide either the YouTube account name or the email address associated with the Google Account. - + Por favor forneça o nome da conta do YouTube ou o endereço de email associado com a conta do Google. Account name (or email): - + Nome de conta (ou email): Password: - + Palavra-passe: Video title: - + Título do vídeo: Video description: - + Descrição do vídeo Tags (comma separated): - + Tags\Etiquetas (separados por virgula) Summary - + Sumário Description - + Descrição Nickname - Nome de utilizador + Nome de utilizador Format - + Formato Audio codec - + Codec de Audio Video codec - + Codec de Vídeo Framerate - + Framerate Bitrate (Kbps) - + Bitrate (Kbps) @@ -2182,7 +1808,7 @@ anonymous - + anónimo @@ -2195,10 +1821,6 @@ QMessageBox - Network - Rede - - Connection to server is lost Conexão com o servidor perdida @@ -2207,119 +1829,228 @@ Erro - Failed to open data directory: -%1 -Please check your installation - Não foi possível abrir o directório: -%1 -Por favor verifique a sua instalação - - - Weapons - Armas - - - Can not edit default weapon set - Não é possível editar o esquema de armas predefinido - - - Can not delete default weapon set - Não é possível eliminar o esquema de armas predefinido - - - Really delete this weapon set? - Deseja mesmo eliminar este esquema de armas? - - - Can not overwrite default weapon set '%1'! - Não é possivel sobrescrever o esquema de armas por omissão '%1'! - - - All file associations have been set. - Os ficheiros foram associados com sucesso. - - File association failed. Não foi possivel associar os ficheiros. - Teams - Equipas - - - Really delete this team? - Deseja mesmo apagar esta equipa? - - - Schemes - Esquemas - - - Can not delete default scheme '%1'! - Não é possível eliminar o esquema por omisão '%1'! - - - Really delete this game scheme? - Deseja mesmo apagar este esquema de jogo? - - - Can not delete default weapon set '%1'! - Não é possível eliminar o esquema de armas por omisão '%1'! - - - Fields required - - - Please fill out all fields - - - - Success - - - - Successfully posted the issue on code.google.com! - - - - Error during authentication with www.google.com - - - - Error creating the issue - + Por favor preencha todos os campos Error while authenticating at google.com: - + Erro ao autenticar em google.com: + Login or password is incorrect - + Login ou palavra-passe incorretos Error while sending metadata to youtube.com: - + Erro durante o envio de metadata para youtube.com: + + + + Teams - Are you sure? + Equipas - Tens a certeza? + + + Do you really want to delete the team '%1'? + Desejas mesmo apagar a equipa '%1'? + + + Cannot delete default scheme '%1'! + Não é possivel apagar o esquema por omisão '%1'! + + + Please select a record from the list + Por favor seleciona uma gravação da lista + + + Unable to start server + Não foi possível iniciar servidor + + + Hedgewars - Error + Hedgewars - Erro + + + Hedgewars - Success + Hedgewars - Sucesso + + + All file associations have been set + Todos os ficheiros foram corretamente associados + + + Successfully posted the issue on hedgewars.googlecode.com + Problema publicado com sucesso em hedgewars.googlecode.com + + + Error during authentication at google.com + Ocorreu um erro durante a autenticação em google.com + + + Error reporting the issue, please try again later (or visit hedgewars.googlecode.com directly) + Erro ao reportar o problema, por favor tenta novamente mais tarde (ou visita hedgewars.googlecode.com diretamente) + + + Main - Error + Main - Erro + + + Cannot create directory %1 + Não foi possível criar o directório %1 + + + Failed to open data directory: +%1 + +Please check your installation! + Erro ao abrir o diretório: +%1 + +Por favor verifica a tua instalação! + + + TCP - Error + TCP - Erro + + + Unable to start the server: %1. + Não foi possível iniciar o servidor: %1. + + + Unable to run engine at + Não foi possivel lançar o motor de jogo em + + + Error code: %1 + Código de erro: %1 + + + Video upload - Error + Upload do vídeo - Erro + + + Netgame - Error + Netgame - Erro + + + Please select a server from the list + Por favor seleciona um servidor da lista + + + Please enter room name + Por favor insere um nome para a sala + + + Record Play - Error + Record Play - Erro + + + Please select record from the list + Por favor selecciona uma gravação da lista + + + Cannot rename to + Não é possivel renomear para + + + Cannot delete file + Não é possivel apagar o ficheiro + + + Room Name - Error + Nome da Sala - Erro + + + Please select room from the list + Por favor selecciona uma sala da lista + + + Room Name - Are you sure? + Nome da Sala - Tens a certeza? + + + The game you are trying to join has started. +Do you still want to join the room? + O jogo a que te estas a tentar juntar já começou. +Desejas entrar na sala de qualquer maneira? + + + Schemes - Warning + Esquemas - Aviso + + + Schemes - Are you sure? + Esquemas - Tens a certeza? + + + Do you really want to delete the game scheme '%1'? + Desejas mesmo apagar o esquema de jogo '%1'? + + + Videos - Are you sure? + Vídeos - Tens a certeza? + + + Do you really want to delete the video '%1'? + Desejas mesmo apagar o vídeo '%1'? + + + Do you really want to remove %1 file(s)? + + Desejas mesmo remover o ficheiro %1? + Desejas mesmo remover os ficheiros %1? + + + + Do you really want to cancel uploading %1? + Desejas mesmo cancelar o upload de %1? + + + File error + Erro no ficheiro + + + Cannot open '%1' for writing + Impossivel abrir '%1' para escrita + + + Cannot open '%1' for reading + Impossivel abrir '%1' para leitura + + + Cannot use the ammo '%1'! + Impossivel utilizar as munições '%1'! + + + Weapons - Warning + Armas - Aviso + + + Cannot overwrite default weapon set '%1'! + Não é possivel substituir o esquema de armas '%1'! + + + Cannot delete default weapon set '%1'! + Não é possivel apagar o esquema de armas por omisão '%1'! + + + Weapons - Are you sure? + Armas - Tens a certeza? + + + Do you really want to delete the weapon set '%1'? + Desejas mesmo apagar o esquema de armas '%1'? QObject - Error - Erro - - - Cannot create directory %1 - Não foi possível criar o directório %1 - - - OK - OK - - Nickname Nome de utilizador @@ -2404,105 +2135,74 @@ More info - + Mais informação Set default options - + Restaurar opções por omisão Open videos directory - + Abrir o directório dos vídeos Play - + Reproduzir Upload to YouTube - + Enviar para o Youtube Cancel uploading - - - - - QTableWidget - - Room Name - Nome da Sala - - - C - C - - - T - E - - - Owner - Anfitrião - - - Map - Mapa - - - Rules - Regras - - - Weapons - Armas + Cancelar o upload RoomsListModel In progress - Em progresso + Em progresso Room Name - Nome da Sala + Nome da Sala C - C + C T - E + E Owner - Anfitrião + Anfitrião Map - Mapa + Mapa Rules - Regras + Regras Weapons - Armas + Armamento Random Map - Mapa Aleatório + Mapa Aleatório Random Maze - Labirinto Aleatório + Labirinto Aleatório Hand-drawn - + Desenhado à mão @@ -2533,21 +2233,6 @@ - TCPBase - - Error - Erro - - - Unable to start the server: %1. - Não foi possível iniciar o servidor: %1. - - - Unable to run engine: %1 ( - Não foi possível executar o motor: %1 ( - - - ToggleButtonWidget Vampirism @@ -2590,10 +2275,6 @@ Invulnerabilidade - Add Mines - Adicionar minas - - Random Order Ordem Aleatória @@ -2820,11 +2501,11 @@ mute audio - + Silenciar audio record - + gravar @@ -2914,7 +2595,7 @@ Record video: - + Gravar vídeo: diff -r 3331b30e4ef1 -r 88fde28bbda6 share/hedgewars/Data/Locale/hedgewars_ru.ts --- a/share/hedgewars/Data/Locale/hedgewars_ru.ts Sun Oct 21 01:28:33 2012 +0400 +++ b/share/hedgewars/Data/Locale/hedgewars_ru.ts Sat Nov 03 00:34:35 2012 +0400 @@ -20,21 +20,6 @@ - DrawMapWidget - - File error - Ошибка при работе Ñ Ñ„Ð°Ð¹Ð»Ð¾Ð¼ - - - Cannot open file '%1' for writing - Ðе могу открыть файл '%1' на запиÑÑŒ - - - Cannot read file '%1' - Ðе могу прочитать файл '%1' - - - FreqSpinBox Never @@ -56,22 +41,10 @@ Редактировать оружие - Error - Ошибка - - - Illegal ammo scheme - Ðеправильный набор Ð¾Ñ€ÑƒÐ¶Ð¸Ñ - - Edit schemes Редактировать Ñхемы - When this option is enabled selecting a game scheme will auto-select a weapon (and viceversa) - При включении Ñтой опции выбор наÑтроек игры автоматичеÑки выберет Ñхему Ð¾Ñ€ÑƒÐ¶Ð¸Ñ (и наоборот) - - When this option is enabled selecting a game scheme will auto-select a weapon При включении Ñтой опции выбор наÑтроек игры автоматичеÑки выберет Ñхему Ð¾Ñ€ÑƒÐ¶Ð¸Ñ @@ -83,29 +56,13 @@ HWAskQuitDialog - Do yot really want to quit? + Do you really want to quit? Хотите выйти? 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 был добавлен в ваш ÑпиÑок друзей - - %1 has been removed from your ignore list %1 был удалён из вашего ÑпиÑка Ð¸Ð³Ð½Ð¾Ñ€Ð¸Ñ€Ð¾Ð²Ð°Ð½Ð¸Ñ @@ -153,30 +110,10 @@ HWForm - Error - Ошибка - - - OK - ОК - - Cannot save record to file %1 Ðе могу Ñохранить запиÑÑŒ в файл %1 - Unable to start the server - Ошибка запуÑка Ñервера - - - new - новый - - - Please select record from the list above - Выберите запиÑÑŒ из ÑпиÑка - - DefaultTeam Команда по умолчанию @@ -203,10 +140,6 @@ Игра прекращена - Password - Пароль - - Your nickname %1 is registered on Hedgewars.org Please provide your password below @@ -225,19 +158,15 @@ ПÑевдоним - Some one already uses - your nickname %1 -on the server. -Please pick another nickname: - Кто-то на Ñтом Ñервере -уже иÑпользует -ваш пÑевдоним %1. -Выберите другой пÑевдоним: - - No nickname supplied. ПÑевдоним не указан. + + Someone already uses your nickname %1 on the server. +Please pick another nickname: + Кто-то уже иÑпользует ваш пÑевдоним %1 на Ñервере. +ПожалуйÑта, выберите другой пÑевдоним: + HWGame @@ -363,20 +292,6 @@ Ð’Ð°Ñ Ð²Ñ‹ÐºÐ¸Ð½ÑƒÐ»Ð¸ - Password - Пароль - - - Your nickname %1 is -registered on Hedgewars.org -Please provide your password -or pick another nickname: - Ваш пÑевдоним %1 уже -зарегиÑтрирован на Ñайте Hedgewars.org -ПожалуйÑта, укажите ваш пароль -или выберите другой пÑевдоним: - - %1 *** %2 has joined the room %1 *** %2 вошёл в комнату @@ -393,30 +308,6 @@ %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 -ПожалуйÑта, укажите ваш пароль в поле ввода внизу -или выберите иное Ð¸Ð¼Ñ Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»Ñ Ð² наÑтройках игры: - - - Nickname - ПÑевдоним - - - Some one already uses - your nickname %1 -on the server. -Please pick another nickname: - Кто-то на Ñтом Ñервере -уже иÑпользует -ваш пÑевдоним %1. -Выберите другой пÑевдоним: - - User quit Пользователь вышел @@ -477,14 +368,6 @@ PageAdmin - Server message: - Сообщение Ñервера: - - - Set message - УÑтановить Ñообщение - - Clear Accounts Cache ОчиÑтить кÑш учётных запиÑей @@ -519,10 +402,6 @@ Connecting... Соединение... - - Cancel - Отмена - PageDrawMap @@ -547,10 +426,6 @@ Загрузить риÑованную карту - Drawn Maps (*.hwmap);;All files (*.*) - РиÑованные карты (*.hwmap);;Ð’Ñе файлы (*.*) - - Save drawn map Сохранить риÑованную карту @@ -581,26 +456,6 @@ PageGameStats - <p>The best shot award was won by <b>%1</b> with <b>%2</b> pts.</p> - <p>Приз за лучший выÑтрел получает <b>%1</b> Ñ <b>%2</b> пунктами урона.</p> - - - <p>The best killer is <b>%1</b> with <b>%2</b> kills in a turn.</p> - - <p>Лучший киллер ‒ Ñто <b>%1</b> Ñ <b>%2</b> убитым за ход.</p> - <p>Лучший киллер ‒ Ñто <b>%1</b> Ñ <b>%2</b> убитыми за ход.</p> - <p>Лучший киллер ‒ Ñто <b>%1</b> Ñ <b>%2</b> убитыми за ход.</p> - - - - <p>A total of <b>%1</b> hedgehog(s) were killed during this round.</p> - - <p>Ð’Ñего <b>%1</b> ёж был убит за Ñтот поединок.</p> - <p>Ð’Ñего <b>%1</b> ежа были убиты за Ñтот поединок.</p> - <p>Ð’Ñего <b>%1</b> ежей были убиты за Ñтот поединок.</p> - - - Details ПодробноÑти @@ -682,14 +537,6 @@ 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 Выберите тот же цвет команда, что у друга, чтобы играть в Ñоюзе. Ð’Ñ‹ будете управлÑÑ‚ÑŒ Ñвоими ежами, но выиграете или проиграете вмеÑте. @@ -987,35 +834,12 @@ - PageNet - - Error - Ошибка - - - Please select server from the list above - Выберите Ñервер из ÑпиÑка - - - PageNetGame Control Управление - Error - Ошибка - - - Please enter room name - Введите название комнаты - - - OK - ОК - - DLC @@ -1058,18 +882,6 @@ Удалить команду - 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. Ðевозможно редактировать команды Ñо Ñтраницы выбора команд. ВернитеÑÑŒ в главное меню Ð´Ð»Ñ Ð´Ð¾Ð±Ð°Ð²Ð»ÐµÐ½Ð¸Ñ, Ñ€ÐµÐ´Ð°ÐºÑ‚Ð¸Ñ€Ð¾Ð²Ð°Ð½Ð¸Ñ Ð¸Ð»Ð¸ ÑƒÐ´Ð°Ð»ÐµÐ½Ð¸Ñ ÐºÐ¾Ð¼Ð°Ð½Ð´. @@ -1145,14 +957,6 @@ PagePlayDemo - Error - Ошибка - - - OK - ОК - - Rename dialog Переименование @@ -1160,18 +964,6 @@ Enter new file name: Введите новое Ð¸Ð¼Ñ Ñ„Ð°Ð¹Ð»Ð°: - - Cannot rename to - Ðе могу переименовать в - - - Cannot delete file - Ðе могу удалить файл - - - Please select record from the list - Выберите запиÑÑŒ из ÑпиÑка - PageRoomsList @@ -1184,18 +976,6 @@ ПриÑоединитьÑÑ - Refresh - Обновить - - - Error - Ошибка - - - OK - ОК - - Admin features ÐдминиÑтрирование @@ -1204,70 +984,6 @@ Ðазвание комнаты: - 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 игрока находÑÑ‚ÑÑ Ð² Ñтой комнате. - Ð’Ñего %1 игроков находÑÑ‚ÑÑ Ð² Ñтой комнате. - - - - There are %1 teams participating in this room. - - Ð’Ñего %1 команда учаÑтвует в игре в Ñтой комнате. - Ð’Ñего %1 команды учаÑтвуют в игре в Ñтой комнате. - Ð’Ñего %1 команд учаÑтвуют в игре в Ñтой комнате. - - - - Please enter room name - Введите название комнаты - - - Please select room from the list - Выберите комнату из ÑпиÑка - - - Random Maze - Случайный лабиринт - - - State: - СоÑтоÑние: - - Rules: Правила: @@ -1283,16 +999,6 @@ Clear ОчиÑтить - - Warning - Предупреждение - - - The game you are trying to join has started. -Do you still want to join the room? - Игра, к которой вы хотите приÑоединитьÑÑ, уже началаÑÑŒ -Ð’Ñ‹ вÑÑ‘ равно хотите зайти в комнату? - %1 players online @@ -1305,10 +1011,6 @@ PageScheme - Enable random mines - Включить мины - - Gain 80% of the damage you do back in health 80% урона, нанеÑённого врагу, вернётÑÑ Ð² виде Ð·Ð´Ð¾Ñ€Ð¾Ð²ÑŒÑ Ð²Ð°ÑˆÐµÐ¼Ñƒ ежу @@ -1349,10 +1051,6 @@ Ð—ÐµÐ¼Ð»Ñ Ð½Ðµ может быть разрушена! - Add an indestructable border around the terrain - Добавить неразрушимую границу вокруг карты - - Lower gravity ÐŸÐ¾Ð½Ð¸Ð¶ÐµÐ½Ð½Ð°Ñ Ð³Ñ€Ð°Ð²Ð¸Ñ‚Ð°Ñ†Ð¸Ñ @@ -1455,30 +1153,6 @@ PageSinglePlayer - Simple Game (a quick game against the computer, settings are chosen for you) - БыÑтрый Ñтарт (быÑтрый запуÑк игры против компьютера на Ñлучайной карте) - - - 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 - Режим Ð¿Ñ€Ð¾Ñ…Ð¾Ð¶Ð´ÐµÐ½Ð¸Ñ ÐºÐ°Ð¼Ð¿Ð°Ð½Ð¸Ð¸. Ð’ РÐЗРÐБОТКЕ - - Simple Game ПроÑÑ‚Ð°Ñ Ð¸Ð³Ñ€Ð° @@ -1573,22 +1247,6 @@ Размер: - Are you sure? - Ð’Ñ‹ уверены? - - - Do you really want do remove %1? - Удалить %1? - - - Do you really want do remove %1 file(s)? - - Удалить %1 файл? - Удалить %1 файла? - Удалить %1 файлов? - - - encoding кодирование @@ -1596,10 +1254,6 @@ uploading отправка - - Do you really want do cancel uploading %1? - Отменить отправку %1? - QAction @@ -1687,10 +1341,6 @@ Указывать дату и Ð²Ñ€ÐµÐ¼Ñ Ð² названиÑÑ… демок и Ñейвов - Reduced quality - Пониженное качеÑтво - - Show ammo menu tooltips Показывать подÑказки к оружию @@ -1770,10 +1420,6 @@ Ð’ игре - Default - По умолчанию - - hand drawn map... риÑÐ¾Ð²Ð°Ð½Ð½Ð°Ñ ÐºÐ°Ñ€Ñ‚Ð°... @@ -1873,10 +1519,6 @@ Ð¡ÐµÑ‚ÐµÐ²Ð°Ñ Ð¸Ð³Ñ€Ð° - Weapons - Оружие - - Game Modifiers Модификаторы игры @@ -1932,14 +1574,6 @@ Мины - Net nick - Ð˜Ð¼Ñ Ð¸Ð³Ñ€Ð¾ÐºÐ° - - - This program is distributed under the GNU General Public License - Эта программа раÑпроÑтранÑетÑÑ Ð½Ð° уÑловиÑÑ… лицензии GNU (the GNU General Public License) - - Resolution Разрешение @@ -2052,16 +1686,6 @@ Язык - Restart game to apply - ПерезапуÑтите игру Ð´Ð»Ñ Ð¿Ñ€Ð¸Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ - - - This SVN 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! - This SVN 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! - - Explosives Взрывчатка @@ -2094,10 +1718,6 @@ СкороÑÑ‚ÑŒ ÑƒÐ¼ÐµÐ½ÑŒÑˆÐµÐ½Ð¸Ñ Ð·Ð´Ð¾Ñ€Ð¾Ð²ÑŒÑ - Bind schemes and weapons - Объединить наÑтройки игры и Ð¾Ñ€ÑƒÐ¶Ð¸Ñ - - % Rope Length % длины верёвки @@ -2106,10 +1726,6 @@ Стереоизображение - Game Options - ÐаÑтройки игры - - Style Стиль @@ -2118,21 +1734,17 @@ Схема - Password - Пароль - - % Get Away Time % времени ухода This program is distributed under the GNU General Public License v2 - + Эта программа раÑпроÑтранÑетÑÑ Ð½Ð° уÑловиÑÑ… лицензии GNU General Public License, верÑÐ¸Ñ 2 There are videos that are currently being processed. Exiting now will abort them. -Do yot really want to quit? +Do you really want to quit? Ð¡ÐµÐ¹Ñ‡Ð°Ñ Ð¿Ñ€Ð¾Ð¸Ñходит обработка видео. Выход отменить обработку. Ð’ÑÑ‘ равно выйти? @@ -2163,7 +1775,7 @@ Summary - + Краткое опиÑание Description @@ -2223,96 +1835,16 @@ Ошибка - Failed to open data directory: -%1 -Please check your installation - Ðе могу найти папку Ñ Ð´Ð°Ð½Ð½Ñ‹Ð¼Ð¸: -%1 -Проверьте правильноÑÑ‚ÑŒ уÑтановки - - - Network - Сеть - - Connection to server is lost Соединение Ñ Ñервером потерÑно - Weapons - Оружие - - - Can not delete default weapon set - Ðевозможно удалить набор Ð¾Ñ€ÑƒÐ¶Ð¸Ñ Ð¿Ð¾ умолчанию - - - Really delete this weapon set? - Удалить выбранный набор оружиÑ? - - - Can not edit default weapon set - Ðевозможно редактировать набор Ð¾Ñ€ÑƒÐ¶Ð¸Ñ Ð¿Ð¾ умолчанию - - - Can not overwrite default weapon set '%1'! - Ðе могу перепиÑать вÑтроенный набор Ð¾Ñ€ÑƒÐ¶Ð¸Ñ '%1'! - - - All file associations have been set. - Проведено ÑопоÑтавление раÑширений файлов. - - File association failed. СопоÑтавление не удалоÑÑŒ. - Teams - Команды - - - Really delete this team? - Удалить выбранную команду? - - - Schemes - Схемы - - - Can not delete default scheme '%1'! - Ðе могу удалить вÑтроенную Ñхему '%1'! - - - Really delete this game scheme? - Удалить выбранную Ñхему игры? - - - Can not delete default weapon set '%1'! - Ðе могу удлить вÑтроенный набор Ð¾Ñ€ÑƒÐ¶Ð¸Ñ '%1'! - - - Fields required - - - Please fill out all fields - - - - Success - - - - Successfully posted the issue on code.google.com! - - - - Error during authentication with www.google.com - - - - Error creating the issue - + Заполните вÑе Ð¿Ð¾Ð»Ñ Error while authenticating at google.com: @@ -2321,29 +1853,208 @@ Login or password is incorrect - + Ðекорректное Ð¸Ð¼Ñ Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»Ñ Ð¸Ð»Ð¸ пароль Error while sending metadata to youtube.com: + + Teams - Are you sure? + + + + Do you really want to delete the team '%1'? + + + + Cannot delete default scheme '%1'! + + + + Please select a record from the list + + + + Unable to start server + Ошибка запуÑка Ñервера + + + Hedgewars - Error + + + + Hedgewars - Success + + + + All file associations have been set + + + + Successfully posted the issue on hedgewars.googlecode.com + + + + Error during authentication at google.com + + + + Error reporting the issue, please try again later (or visit hedgewars.googlecode.com directly) + + + + Main - Error + + + + Cannot create directory %1 + Ðе могу Ñоздать папку %1 + + + Failed to open data directory: +%1 + +Please check your installation! + + + + TCP - Error + + + + Unable to start the server: %1. + Ошибка запуÑка Ñервера: %1. + + + Unable to run engine at + + + + Error code: %1 + + + + Video upload - Error + + + + Netgame - Error + + + + Please select a server from the list + + + + Please enter room name + Введите название комнаты + + + Record Play - Error + + + + Please select record from the list + Выберите запиÑÑŒ из ÑпиÑка + + + Cannot rename to + + + + Cannot delete file + Ðе могу удалить файл + + + Room Name - Error + + + + Please select room from the list + Выберите комнату из ÑпиÑка + + + Room Name - Are you sure? + + + + The game you are trying to join has started. +Do you still want to join the room? + Игра, к которой вы хотите приÑоединитьÑÑ, уже началаÑÑŒ +Ð’Ñ‹ вÑÑ‘ равно хотите зайти в комнату? + + + Schemes - Warning + + + + Schemes - Are you sure? + + + + Do you really want to delete the game scheme '%1'? + + + + Videos - Are you sure? + + + + Do you really want to delete the video '%1'? + + + + Do you really want to remove %1 file(s)? + + + + + + Do you really want to cancel uploading %1? + + + + File error + Ошибка при работе Ñ Ñ„Ð°Ð¹Ð»Ð¾Ð¼ + + + Cannot open '%1' for writing + + + + Cannot open '%1' for reading + + + + Cannot use the ammo '%1'! + + + + Weapons - Warning + + + + Cannot overwrite default weapon set '%1'! + + + + Cannot delete default weapon set '%1'! + + + + Weapons - Are you sure? + + + + Do you really want to delete the weapon set '%1'? + + QObject - Error - Ошибка - - - Cannot create directory %1 - Ðе могу Ñоздать папку %1 - - - OK - ОК - - Nickname ПÑевдоним @@ -2428,7 +2139,7 @@ More info - + Ð”Ð¾Ð¿Ð¾Ð»Ð½Ð¸Ñ‚ÐµÐ»ÑŒÐ½Ð°Ñ Ð¸Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ð¸Ñ Set default options @@ -2452,37 +2163,6 @@ - QTableWidget - - Room Name - Ðазвание - - - C - И - - - T - К - - - Owner - Главный - - - Map - Карта - - - Rules - Правила - - - Weapons - Оружие - - - RoomsListModel In progress @@ -2557,21 +2237,6 @@ - TCPBase - - Error - Ошибка - - - Unable to start the server: %1. - Ошибка запуÑка Ñервера: %1. - - - Unable to run engine: %1 ( - Ошибка запуÑка движка: %1 ( - - - ToggleButtonWidget Vampirism @@ -2614,10 +2279,6 @@ ÐеуÑзвимоÑÑ‚ÑŒ - Add Mines - Добавить мины - - Random Order Случайный порÑдок diff -r 3331b30e4ef1 -r 88fde28bbda6 share/hedgewars/Data/Locale/hedgewars_sk.ts --- a/share/hedgewars/Data/Locale/hedgewars_sk.ts Sun Oct 21 01:28:33 2012 +0400 +++ b/share/hedgewars/Data/Locale/hedgewars_sk.ts Sat Nov 03 00:34:35 2012 +0400 @@ -20,21 +20,6 @@ - DrawMapWidget - - File error - Chyba v súbore - - - Cannot open file '%1' for writing - Nepodarilo sa otvoriÅ¥ súbor '%1' pre zápis - - - Cannot read file '%1' - Nepodarilo sa preÄítaÅ¥ súbor '%1' - - - FreqSpinBox Never @@ -56,22 +41,10 @@ UpraviÅ¥ zbrane - Error - Chyba - - - Illegal ammo scheme - Neplatná schéma zbraní - - Edit schemes UpraviÅ¥ schémy - When this option is enabled selecting a game scheme will auto-select a weapon (and viceversa) - Ak je táto voľba vybraná, zvolením hernej schémy budú automaticky vybrané aj zbrane (a naopak) - - When this option is enabled selecting a game scheme will auto-select a weapon KeÄ je vybraná táto voľba výberom hernej schémy vyberiete automaticky aj zbraň @@ -83,29 +56,13 @@ HWAskQuitDialog - Do yot really want to quit? + Do you really want to quit? HWChatWidget - %1 *** %2 has been removed from your ignore list - %1 *** %2 bol(a) odstránený(á) zo zoznamu ignorovaných - - - %1 *** %2 has been added to your ignore list - %1 *** %2 bol(a) pridaný(á) do zoznamu ignorovaných - - - %1 *** %2 has been removed from your friends list - %1 *** %2 bol(a) odstránený(á) zo zoznamu priateľov - - - %1 *** %2 has been added to your friends list - %1 *** %2 bol(a) pridaný(á) do zoznamu priateľov - - %1 has been removed from your ignore list %1 bol odstránený zo zoznamu ignorovaných @@ -149,38 +106,14 @@ %1 is not a valid command! %1 nie je platným príkazom! - - Kicking %1 ... - Vyhadzujem %1... - HWForm - Error - Chyba - - - OK - OK - - - Unable to start the server - Nie je možné spustiÅ¥ server - - Cannot save record to file %1 Nie je možné zapísaÅ¥ záznam do súboru %1 - new - nový - - - Please select record from the list above - Prosím vyberte záznam zo zoznamu vyÅ¡Å¡ie - - DefaultTeam VýchodzíTím @@ -207,10 +140,6 @@ Hra zruÅ¡ená - Password - Heslo - - Your nickname %1 is registered on Hedgewars.org Please provide your password below @@ -231,19 +160,14 @@ Prezývka - Some one already uses - your nickname %1 -on the server. -Please pick another nickname: - Niekto už používa -vaÅ¡u prezývku %1 -na serveri. -Prosím vyberte si inú prezývku: - - No nickname supplied. Nebola zadaná žiadna prezývka. + + Someone already uses your nickname %1 on the server. +Please pick another nickname: + + HWGame @@ -369,20 +293,6 @@ Boli ste vykopnutý - Password - Heslo - - - Your nickname %1 is -registered on Hedgewars.org -Please provide your password -or pick another nickname: - VaÅ¡a prezývka %1 je -zaregistrovaná na Hedgewars.org -Prosím, zadajte heslo alebo -si vyberte inú prezývku: - - %1 *** %2 has joined the room %1 *** %2 priÅ¡iel do miestnosti @@ -399,32 +309,6 @@ %1 *** %2 odiÅ¡iel - Your nickname %1 is -registered on Hedgewars.org -Please provide your password below -or pick another nickname in game config: - Prezývka %1, ktorú ste -si vybrali je registrovaná na -Hedgewars.org. -Prosím, napíšte heslo do poľa -nižšie alebo si zvoľte inú prezývku -v nastaveniach hry: - - - Nickname - Prezývka - - - Some one already uses - your nickname %1 -on the server. -Please pick another nickname: - Niekto už používa -vaÅ¡u prezývku %1 -na serveri. -Prosím vyberte si inú prezývku: - - User quit Užívateľ odiÅ¡iel @@ -485,14 +369,6 @@ PageAdmin - Server message: - Správa serveru: - - - Set message - NastaviÅ¥ správu - - Clear Accounts Cache VymazaÅ¥ vyrovnávaciu pamäť úÄtov @@ -527,10 +403,6 @@ Connecting... Pripájam sa... - - Cancel - ZruÅ¡iÅ¥ - PageDrawMap @@ -555,10 +427,6 @@ NaÄítaÅ¥ nakreslenú mapu - Drawn Maps (*.hwmap);;All files (*.*) - Nakreslené mapy (*.hwmap);;VÅ¡etky súbory (*.*) - - Save drawn map UložiÅ¥ nakreslenú mapu @@ -589,26 +457,6 @@ PageGameStats - <p>The best shot award was won by <b>%1</b> with <b>%2</b> pts.</p> - <p>Ocenenie za najlepší zásah vyhral(a) <b>%1</b> so ziskom <b>%2</b> bodov.</p> - - - <p>The best killer is <b>%1</b> with <b>%2</b> kills in a turn.</p> - - <p>Najlepším zabijákom je <b>%1</b> s <b>jedným</b> zabitím poÄas Å¥ahu.</p> - <p>Najlepším zabijákom je <b>%1</b> s <b>%2</b> zabitiami poÄas Å¥ahu.</p> - <p>Najlepším zabijákom je <b>%1</b> s <b>%2</b> zabitiami poÄas Å¥ahu.</p> - - - - <p>A total of <b>%1</b> hedgehog(s) were killed during this round.</p> - - <p>Celkovo bol v tomto kole zabitý <b>jeden</b> ježko.</p> - <p>Celkovo boli v tomto kole zabití <b>%1</b> ježkovia.</p> - <p>Celkovo boli v tomto kole zabití <b>%1</b> ježkovia.</p> - - - Details Podrobnosti @@ -648,10 +496,6 @@ (%1 zabití) - - (%1 kills) - (%1 zabití) - <b>%1</b> thought it's good to shoot his own hedgehogs with <b>%2</b> pts. @@ -694,14 +538,6 @@ PageMain - Local Game (Play a game on a single computer) - Miestna hra (HraÅ¥ hru proti poÄítaÄu) - - - Network Game (Play a game across a network) - SieÅ¥ová hra (HraÅ¥ hru proti súperom na sieti) - - 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 Ak chcete hraÅ¥ s priateľom ako tím, jednoducho si zvoľte tú istú farbu. I naÄalej budete ovládaÅ¥ svojich vlastných ježkov, ale víťazstvá Äi prehry budú spoloÄné. @@ -717,11 +553,6 @@ Ak neviete, Äo robiÅ¥ a nechcete mrhaÅ¥ muníciou, preskoÄte Å¥ah. Ale nerobte tak príliÅ¡ Äasto, pretože príde Náhla smrÅ¥! - Want to save ropse? 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 - Chcete uÅ¡etriÅ¥ lano? Kým ste vo vzduchu, uvoľnite ho a opäť vystreľte. Kým sa nedotknete zeme, môžete to isté lano znovu použiÅ¥ bez toho, aby sa vám míňali jeho zásoby! - - 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 Ak nechcete, aby niekto iný používal vaÅ¡u prezývku na oficiálnom serveri, registrujte si úÄet na http://www.hedgewars.org/. @@ -797,11 +628,6 @@ Å peciálne herné režimy ako 'Vampírizmus' alebo 'Karma' vám umožnia vyvinúť úplne novú taktiku. Vyskúšajte ich vo vlastnej hre! - The Windows version of Hedgewars supports Xfire. Make sure to add Hedgwars to its game list so your friends can see you playing. - Tips - Verzia Hedgewars pre Windows podporuje Xfire. UbezpeÄte sa, že ste pridali Hedgewars do zoznamu hier tak, aby vaÅ¡i priatelia videli, že hráte. - - You should never install Hedgewars on computers you don't own (school, university, work, etc.). Please ask the responsible person instead! Tips Nikdy by ste nemali inÅ¡talovaÅ¥ Hedgewars na cudzí poÄítaÄ (v Å¡kole, na univerzite, v práci, atÄ). Prosím, radÅ¡ej požiadajte zodpovednú osobu! @@ -867,11 +693,6 @@ Klavírový útok je najniÄivejší vzduÅ¡ný útok. Pri jeho použití prídete o ježka, Äo je jeho veľké mínus. - 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 - Navádzaná vÄela je troÅ¡ku zložitejÅ¡ia na použitie. Jej polomer otoÄenia závisí na jej rýchlosti, takže ju radÅ¡ej nepoužívajte pri plnej sile. - - Sticky Mines are a perfect tool to create small chain reactions knocking enemy hedgehogs into dire situations ... or water. Tips Lepkavé míny sú perfektným nástrojom na vytvorenie malých reÅ¥azových reakcii, vÄaka ktorým postavíte ježkov do krajných situácii ... alebo vody. @@ -897,21 +718,11 @@ Plameňomet je zbraň, no rovnako môže byÅ¥ použitý na kopanie tunelov. - Use the Incinerating Grenade to temporary keep hedgehogs from passing terrain such as tunnels or platforms. - Tips - Použite spaľujúci granát na doÄasné zabránenie ježkom prejsÅ¥ terénom ako sú tunely alebo ploÅ¡iny. - - Want to know who's behind the game? Click on the Hedgewars logo in the main menu to see the credits. Tips Chcete vedieÅ¥, kto stojí za hrou? Kliknite na logo Hedgewars v hlavnom menu pre zobrazenie zásluh. - Like Hedgewars? Become a fan on %1 or join our group at %2. You could follow us on %3 as well! - Tips - PaÄia sa vám Hedgewars? Staňte sa fanúšikom na %1 alebo sa pripojte k naÅ¡ej skupine na %2. Môžte nás tiež nasledovaÅ¥ na %3! - - 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 Ak máte chuÅ¥, môžte si nakresliÅ¥ vlastné hrobÄeky, klobúky, vlajky alebo dokonca mapy a témy! Pamätajte vÅ¡ak, že ak ich budete chcieÅ¥ použiÅ¥ v hre online, budete ich musieÅ¥ zdieľaÅ¥ s ostatnými. @@ -932,11 +743,6 @@ KonfiguraÄné súbory Hedgewars nájdete v "Moje Dokumenty\Hedgewars". Vytvárajte si zálohy alebo prenášajte si tieto súbory medzi poÄítaÄmi, ale needitujte ich ruÄne. - 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 - KonfiguraÄné súbory Hedgewars nájdete v "Hedgewars" vo vaÅ¡om domovskom adresári. Vytvárajte si zálohy alebo prenášajte si tieto súbory medzi poÄítaÄmi, ale needitujte ich ruÄne. - - 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 Chcete uÅ¡etriÅ¥ lano? Kým ste vo vzduchu, uvoľnite ho a opäť vystreľte. Kým sa nedotknete zeme, môžete to isté lano znovu použiÅ¥ bez toho, aby sa vám míňali jeho zásoby! @@ -967,11 +773,6 @@ Hedgewars vo verzii pre Windows podporujú Xfire. Pridajte si Hedgewars do vášho zoznamu hier tak, aby vás vaÅ¡i priatelia videli hraÅ¥. - The Homing Bee can be tricky to use. Its turn radius depends on it's velocity, so try to not use full power. - Tips - Navádzaná vÄela je troÅ¡ku zložitejÅ¡ia na použitie. Jej polomer otoÄenia závisí na jej rýchlosti, takže ju radÅ¡ej nepoužívajte pri plnej sile. - - Use the Molotov or Flame Thrower to temporary keep hedgehogs from passing terrain such as tunnels or platforms. Tips Použite Molotovov koktejl alebo plameňomet na doÄasné zabránenie ježkom prejsÅ¥ terénom ako sú tunely alebo ploÅ¡iny. @@ -1034,35 +835,12 @@ - PageNet - - Error - Chyba - - - Please select server from the list above - Prosím vyberte server zo zoznamu vyÅ¡Å¡ie - - - PageNetGame Control Ovládanie - Error - Chyba - - - Please enter room name - Prosím zadajte názov miestnosti - - - OK - OK - - DLC @@ -1105,18 +883,6 @@ VymazaÅ¥ tím - New weapon scheme - Nová schéma pre zbrane - - - Edit weapon scheme - UpraviÅ¥ schému pre zbrane - - - Delete weapon scheme - VymazaÅ¥ schému pre zbrane - - You can't edit teams from team selection. Go back to main menu to add, edit or delete teams. Z výberu tímov nemôžete upravovaÅ¥ tímy. Vráťte sa do hlavného menu, odkiaľ môžete pridávaÅ¥, upravovaÅ¥ alebo mazaÅ¥ tímy. @@ -1192,14 +958,6 @@ PagePlayDemo - Error - Chyba - - - OK - OK - - Rename dialog Dialóg na zmenu mena @@ -1207,18 +965,6 @@ Enter new file name: Zadajte nový názov súboru: - - Cannot rename to - Nemôžem premenovaÅ¥ na - - - Cannot delete file - Nemôžem vymazaÅ¥ súbor - - - Please select record from the list - Prosím vyberte záznam zo zoznamu - PageRoomsList @@ -1231,18 +977,6 @@ PripojiÅ¥ sa - Refresh - ObnoviÅ¥ - - - Error - Chyba - - - OK - OK - - Admin features Vlastnosti pre admina @@ -1251,70 +985,6 @@ Názov miestnosti: - This game is in lobby. -You may join and start playing once the game starts. - Táto hra je v lobby. -Môžete sa pridaÅ¥ a zaÄaÅ¥ hru akonáhle hra skonÄí. - - - 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. - Táto hra práve prebieha. -Môžete sa pridaÅ¥ a sledovaÅ¥ hru, ale ak chcete hraÅ¥ budete musieÅ¥ poÄkaÅ¥ na koniec hry. - - - %1 is the host. He may adjust settings and start the game. - %1 je hostiteľom. Može meniÅ¥ nastavenia a spúšťaÅ¥ hru. - - - Random Map - Náhodná mapa - - - Games may be played on precreated or randomized maps. - Hry môžu byÅ¥ hrané na predvytvorených alebo náhodných mapách. - - - The Game Scheme defines general options and preferences like Round Time, Sudden Death or Vampirism. - Schéma hry urÄuje vÅ¡eobecné voľby ako napríklad Dĺžka kola, Režim rýchlej smrti alebo Vampírizmus. - - - The Weapon Scheme defines available weapons and their ammunition count. - Schémy hry urÄuje dostupné zbrane a množstvo výzbroje. - - - There are %1 clients connected to this room. - - K tejto miestnosti je pripojený jeden klient. - K tejto miestnosti sú pripojení %1 klienti. - K tejto miestnosti je pripojených %1 klientov. - - - - There are %1 teams participating in this room. - - V tejto miestnosti je jeden hrajúci tím. - V tejto miestnosti sú %1 hrajúce tímy. - V tejto miestnosti je %1 hrajúcich tímov. - - - - Please enter room name - Prosím zadajte názov miestnosti - - - Please select room from the list - Prosím vyberte miestnosÅ¥ zo zoznamu - - - Random Maze - Náhodné bludisko - - - State: - Stav: - - Rules: Pravidlá: @@ -1330,16 +1000,6 @@ Clear VyÄistiÅ¥ - - Warning - Varovanie - - - The game you are trying to join has started. -Do you still want to join the room? - Hra, ku ktorej sa snažíte pripojiÅ¥, už zaÄala. -Aj napriek tomu chcete vojsÅ¥ do miestnosti? - %1 players online @@ -1352,10 +1012,6 @@ PageScheme - Enable random mines - PovoliÅ¥ náhodne rozmiestnené míny - - Gain 80% of the damage you do back in health K vášmu zdraviu sa priráta 80 % Å¡kody, ktorú spôsobíte @@ -1396,10 +1052,6 @@ Krajina sa nedá zniÄiÅ¥! - Add an indestructable border around the terrain - PridaÅ¥ nezniÄiteľný okraj okolo terénu - - Lower gravity Nižšia gravitácia @@ -1502,38 +1154,6 @@ PageSinglePlayer - Simple Game (a quick game against the computer, settings are chosen for you) - Jednoduchá hra (rýchla hra proti poÄítaÄu, s preddefinovanými nastaveniami) - - - Multiplayer (play a hotseat game against your friends, or AI teams) - Multiplayer (hraÅ¥ hru, pri ktorej sa striedate s hráÄmi pri poÄítaÄi alebo proti poÄítaÄovým tímom) - - - Training Mode (Practice your skills in a range of training missions). IN DEVELOPMENT - Tréningový režim (vylepÅ¡ujte si svoje zruÄnosti v rade tréningových misií). VO VÃVOJI - - - Demos (Watch recorded demos) - Demá (prehrávanie natoÄených demonahrávok) - - - Load (Load a previously saved game) - NaÄítaÅ¥ (naÄíta v minulosti uloženú hru) - - - Campaign Mode (...). IN DEVELOPMENT - Režim kampane (...) VO VÃVOJI - - - Campaign Mode (...) - Režim kampane (...) - - - Training Mode (Practice your skills in a range of training missions) - Tréningový režim (VycviÄte sa v rade tréningových misií) - - Simple Game @@ -1628,22 +1248,6 @@ - Are you sure? - - - - Do you really want do remove %1? - - - - Do you really want do remove %1 file(s)? - - - - - - - encoding @@ -1651,10 +1255,6 @@ uploading - - Do you really want do cancel uploading %1? - - QAction @@ -1742,10 +1342,6 @@ PripojiÅ¥ dátum a Äas k súboru so záznamom - Reduced quality - Znížená kvalita - - Show ammo menu tooltips ZobrazovaÅ¥ nápovedu pre zbrane @@ -1825,42 +1421,6 @@ Prebieha - Default - Východzie - - - Pro mode - Režim profesionálov - - - Shoppa - Nakupovanie - - - Basketball - Basketbal - - - Minefield - Mínové pole - - - Barrel mayhem - Vzbura sudov - - - Tunnel hogs - Tunelujúci ježkovia - - - Crazy - Å ialené - - - Normal - Normálna - - hand drawn map... ruÄne kreslená mapa... @@ -1952,10 +1512,6 @@ Nastavenia zvuku/grafiky - Weapons - Zbrane - - Net game SieÅ¥ová hra @@ -2019,10 +1575,6 @@ Míny - This program is distributed under the GNU General Public License - Tento program je distribuovaný podľa podmienok GNU General Publice License - - Developers: Vývojári: @@ -2059,10 +1611,6 @@ Limit FPS - Net nick - SieÅ¥ový nick - - Server name: Názov servera: @@ -2139,16 +1687,6 @@ Jazykové nastavenia - Restart game to apply - Vyžaduje reÅ¡tart hry - - - This SVN 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! - Toto zostavenie SVN je 'stále-vo-vývoji' a nemusí byÅ¥ kompatibilné s inými verziami hry. -Niektoré vlastnosti nemusia fungovaÅ¥ alebo nemusia byÅ¥ dokonÄené. Používajte na vlastné riziko! - - Explosives VýbuÅ¡niny @@ -2166,10 +1704,6 @@ Kvalita - Bind schemes and weapons - PrepojiÅ¥ schémy a zbrane - - Sudden Death Water Rise Stúpanie vody poÄas rýchlej smrti @@ -2190,18 +1724,10 @@ % dĺžka lana - Gameplay - Hra - - Stereo rendering Zobrazenie stereo - Game Options - Voľby hry - - Style Å týl @@ -2210,10 +1736,6 @@ Schéma - Password - Heslo - - % Get Away Time % Äasu na útek @@ -2224,7 +1746,7 @@ There are videos that are currently being processed. Exiting now will abort them. -Do yot really want to quit? +Do you really want to quit? @@ -2309,10 +1831,6 @@ QMessageBox - Network - SieÅ¥ - - Connection to server is lost Spojenie so serverom bolo preruÅ¡ené @@ -2321,90 +1839,14 @@ Chyba - Failed to open data directory: -%1 -Please check your installation - Nepodarilo sa otvoriÅ¥ dátový adresár: -%1 -Skontrolujte si vaÅ¡u inÅ¡taláciu - - - Weapons - Zbrane - - - Can not edit default weapon set - Nie je možné upraviÅ¥ východziu sadu zbraní - - - Can not delete default weapon set - Nie je možné vymazaÅ¥ východziu sadu zbraní - - - Really delete this weapon set? - UrÄite chcete vymazaÅ¥ túto sadu zbraní? - - - Can not overwrite default weapon set '%1'! - Nie je možné prepísaÅ¥ východziu sadu zbraní '%1'! - - - All file associations have been set. - VÅ¡etky súborové asociácie boli nastavené. - - File association failed. Nastavenie súborových asociácii zlyhalo. - Teams - Tímy - - - Really delete this team? - Naozaj vymazaÅ¥ tento tím? - - - Schemes - Schémy - - - Can not delete default scheme '%1'! - Nie je možné vymazaÅ¥ východziu schému '%1'! - - - Really delete this game scheme? - Naozaj chcete vymazaÅ¥ túto hernú schému? - - - Can not delete default weapon set '%1'! - Nie je možné vymazaÅ¥ východziu sadu zbraní '%1'! - - - Fields required - - - Please fill out all fields - Success - - - - Successfully posted the issue on code.google.com! - - - - Error during authentication with www.google.com - - - - Error creating the issue - - - Error while authenticating at google.com: @@ -2418,22 +1860,203 @@ + + Teams - Are you sure? + + + + Do you really want to delete the team '%1'? + + + + Cannot delete default scheme '%1'! + + + + Please select a record from the list + + + + Unable to start server + + + + Hedgewars - Error + + + + Hedgewars - Success + + + + All file associations have been set + + + + Successfully posted the issue on hedgewars.googlecode.com + + + + Error during authentication at google.com + + + + Error reporting the issue, please try again later (or visit hedgewars.googlecode.com directly) + + + + Main - Error + + + + Cannot create directory %1 + Nepodarilo sa vytvoriÅ¥ adresár %1 + + + Failed to open data directory: +%1 + +Please check your installation! + + + + TCP - Error + + + + Unable to start the server: %1. + Nie je možné spustiÅ¥ server: %1. + + + Unable to run engine at + + + + Error code: %1 + + + + Video upload - Error + + + + Netgame - Error + + + + Please select a server from the list + + + + Please enter room name + Prosím zadajte názov miestnosti + + + Record Play - Error + + + + Please select record from the list + Prosím vyberte záznam zo zoznamu + + + Cannot rename to + + + + Cannot delete file + + + + Room Name - Error + + + + Please select room from the list + Prosím vyberte miestnosÅ¥ zo zoznamu + + + Room Name - Are you sure? + + + + The game you are trying to join has started. +Do you still want to join the room? + Hra, ku ktorej sa snažíte pripojiÅ¥, už zaÄala. +Aj napriek tomu chcete vojsÅ¥ do miestnosti? + + + Schemes - Warning + + + + Schemes - Are you sure? + + + + Do you really want to delete the game scheme '%1'? + + + + Videos - Are you sure? + + + + Do you really want to delete the video '%1'? + + + + Do you really want to remove %1 file(s)? + + + + + + + + Do you really want to cancel uploading %1? + + + + File error + Chyba v súbore + + + Cannot open '%1' for writing + + + + Cannot open '%1' for reading + + + + Cannot use the ammo '%1'! + + + + Weapons - Warning + + + + Cannot overwrite default weapon set '%1'! + + + + Cannot delete default weapon set '%1'! + + + + Weapons - Are you sure? + + + + Do you really want to delete the weapon set '%1'? + + QObject - Error - Chyba - - - Cannot create directory %1 - Nepodarilo sa vytvoriÅ¥ adresár %1 - - - OK - OK - - Nickname Prezývka @@ -2513,10 +2136,6 @@ AsociovaÅ¥ prípony súborov. - Set - NastaviÅ¥ - - more viac @@ -2546,37 +2165,6 @@ - QTableWidget - - Room Name - Názov miestnosti - - - C - C - - - T - T - - - Owner - Majiteľ - - - Map - Mapa - - - Rules - Pravidlá - - - Weapons - Zbrane - - - RoomsListModel In progress @@ -2651,21 +2239,6 @@ - TCPBase - - Error - Chyba - - - Unable to start the server: %1. - Nie je možné spustiÅ¥ server: %1. - - - Unable to run engine: %1 ( - Nie je možné spustiÅ¥ engine: %1 ( - - - ToggleButtonWidget Vampirism @@ -2708,10 +2281,6 @@ NesmrteľnosÅ¥ - Add Mines - PridaÅ¥ míny - - Random Order Náhodné poradie diff -r 3331b30e4ef1 -r 88fde28bbda6 share/hedgewars/Data/Locale/hedgewars_sv.ts --- a/share/hedgewars/Data/Locale/hedgewars_sv.ts Sun Oct 21 01:28:33 2012 +0400 +++ b/share/hedgewars/Data/Locale/hedgewars_sv.ts Sat Nov 03 00:34:35 2012 +0400 @@ -20,21 +20,6 @@ - DrawMapWidget - - File error - Fel pÃ¥ fil - - - Cannot open file '%1' for writing - Kan inte skriva till '%1' - - - Cannot read file '%1' - Kan inte läsa '%1' - - - FreqSpinBox Never @@ -55,14 +40,6 @@ Redigera vapenset - Error - Fel - - - Illegal ammo scheme - Ogiltigt vapenschema - - Edit schemes Redigera spelscheman @@ -78,29 +55,13 @@ HWAskQuitDialog - Do yot really want to quit? + Do you really want to quit? HWChatWidget - %1 *** %2 has been removed from your ignore list - %1 *** %2 har tagits bort frÃ¥n din ignoreringslista - - - %1 *** %2 has been added to your ignore list - %1 *** %2 har lagts till i din ignoreringslista - - - %1 *** %2 has been removed from your friends list - %1 *** %2 har tagits bort frÃ¥n din kompislista - - - %1 *** %2 has been added to your friends list - %1 *** %2 har lagts till i din kompislista - - %1 has been removed from your ignore list @@ -148,30 +109,10 @@ HWForm - Error - Fel - - - OK - OK - - - Unable to start the server - Kunde inte starta servern - - Cannot save record to file %1 Kan inte spara inspelning till fil %1 - new - ny - - - Please select record from the list above - Var god välj inspelning frÃ¥n listan ovanför - - DefaultTeam Standardlag @@ -198,10 +139,6 @@ - Password - Lösenord - - Your nickname %1 is registered on Hedgewars.org Please provide your password below @@ -220,17 +157,12 @@ Smeknamn - Some one already uses - your nickname %1 -on the server. + No nickname supplied. + + + + Someone already uses your nickname %1 on the server. Please pick another nickname: - NÃ¥gon använder redan -ditt smeknamn %1 -pÃ¥ servern. -Välj ett annat smeknamn: - - - No nickname supplied. @@ -358,20 +290,6 @@ Du sparkades ut - Password - Lösenord - - - Your nickname %1 is -registered on Hedgewars.org -Please provide your password -or pick another nickname: - Ditt smeknamn (%1) är -registrerat pÃ¥ Hedgewars.org -Var god ange ditt lösenord -eller välj ett annat smeknamn: - - %1 *** %2 has joined the room %1 *** %2 har gÃ¥tt med i rummet @@ -388,30 +306,6 @@ %1 *** %2 har lämnat - Your nickname %1 is -registered on Hedgewars.org -Please provide your password below -or pick another nickname in game config: - Ditt smeknamn (%1) är -registrerat pÃ¥ Hedgewars.org -Var god ange ditt lösenord eller välj -ett annat smeknamn i spelinställningarna: - - - Nickname - Smeknamn - - - Some one already uses - your nickname %1 -on the server. -Please pick another nickname: - NÃ¥gon använder redan -ditt smeknamn %1 -pÃ¥ servern. -Välj ett annat smeknamn: - - User quit @@ -472,14 +366,6 @@ PageAdmin - Server message: - Servermeddelande - - - Set message - Ställ in meddelande - - Clear Accounts Cache Töm användarcache @@ -514,10 +400,6 @@ Connecting... Ansluter... - - Cancel - Avbryt - PageDrawMap @@ -542,10 +424,6 @@ Läs in ritad karta - Drawn Maps (*.hwmap);;All files (*.*) - Ritade kartor (*.hwmap);;Alla filer (*.*) - - Save drawn map Spara ritad karta @@ -576,24 +454,6 @@ PageGameStats - <p>The best shot award was won by <b>%1</b> with <b>%2</b> pts.</p> - <p>Priset för bästa skott gÃ¥r till <b>%1</b> med <b>%2</b> poäng.</p> - - - <p>The best killer is <b>%1</b> with <b>%2</b> kills in a turn.</p> - - <p>Den bästa mördaren är <b>%1</b> med <b>%2</b> dödad pÃ¥ samma tur.</p> - <p>Den bästa mördaren är <b>%1</b> med <b>%2</b> dödade pÃ¥ samma tur.</p> - - - - <p>A total of <b>%1</b> hedgehog(s) were killed during this round.</p> - - <p>Totalt <b>%1</b> igelkott dödades denna omgÃ¥ng.</p> - <p>Totalt <b>%1</b> igelkottar dödades denna omgÃ¥ng.</p> - - - Details Detaljer @@ -630,10 +490,6 @@ (%1 döda) - - (%1 kills) - (%1 döda) - <b>%1</b> thought it's good to shoot his own hedgehogs with <b>%2</b> pts. @@ -673,14 +529,6 @@ PageMain - Local Game (Play a game on a single computer) - Lokalt spel (Spela en omgÃ¥ng pÃ¥ en enskild dator) - - - Network Game (Play a game across a network) - Nätverkspel (Spela en omgÃ¥ng över ett nätverk) - - 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 Välj bara samma färg som en vän för att spela i som ett lag. Varje spelare kontrollerar fortfarande själva sina igelkottar men de vinner eller förlorar tillsammans. @@ -696,11 +544,6 @@ Om du inte är säker pÃ¥ vad du ska göra och inte vill slösa pÃ¥ ammunition, hoppa över en tur. Men lÃ¥t inte för lÃ¥ng tid passera eftersom sudden death kommer! - Want to save ropse? 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 - Vill du spara rep? Släpp repet i luften och sedan sjut igen. SÃ¥ länge du inte nuddar marken använder du samma rep utan att slösa pÃ¥ ammunition! - - 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 Om du vill förhindra andra frÃ¥n att använda ditt favoritnamn pÃ¥ den officiella servern kan du registrera ett konto pÃ¥ http://www.hedgewars.org/. @@ -776,11 +619,6 @@ Speciella spellägen som 'Vampyrism' eller 'Karma' lÃ¥ter dig utveckla helt nya taktiker. Pröva dem i ett eget spel! - The Windows version of Hedgewars supports Xfire. Make sure to add Hedgwars to its game list so your friends can see you playing. - Tips - Windows-versionen av Hedgewars har stöd för Xfire. Se till att lägga till Hedgewars till spellistan sÃ¥ att dina vänner kan se dig spela. - - You should never install Hedgewars on computers you don't own (school, university, work, etc.). Please ask the responsible person instead! Tips Du ska aldrig installera Hedgewars pÃ¥ en dator som du inte äger (skola, universitet, arbete, etc.). FrÃ¥ga den ansvarige personen istället! @@ -846,11 +684,6 @@ Pianoanfall är det farligaste luftanfallet. Du blir av med en igelkott när du använder det, sÃ¥ det finns en stor nackdel ocksÃ¥. - 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 - MÃ¥lsökande biet kan vara svÃ¥rt att använda. Biets sväng beror pÃ¥ hastigheten, sÃ¥ försök inte att använda full kraft. - - Sticky Mines are a perfect tool to create small chain reactions knocking enemy hedgehogs into dire situations ... or water. Tips Fästande minor är ett perfekt verktyg för att skapa smÃ¥ kedjereaktioner som slÃ¥r ner fiender i farliga situationer ... eller vatten. @@ -876,11 +709,6 @@ Eldkastaren är ett vapen, men den kan användas för att gräva tunnlar ocksÃ¥. - Use the Incinerating Grenade to temporary keep hedgehogs from passing terrain such as tunnels or platforms. - Tips - Använd Molotov för att tillfälligt förhindra igelkottar frÃ¥n att passera terräng sÃ¥som tunnlar och platformer. - - Want to know who's behind the game? Click on the Hedgewars logo in the main menu to see the credits. Tips Vill du veta vilka som ligger bakom spelet? Tryck pÃ¥ Hedgewars-loggan i huvudmenyn för att se medverkande. @@ -911,11 +739,6 @@ Du kan hitta dina konfigurationsfiler under "Mina Dokument\Hedgewars". Gör en säkerhetskopia eller ta med dig filerna, men redigera dem inte för hand. - 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 - Du kan hitta dina konfigurationsfiler under "Hedgewars" i din hem-mapp. Gör en säkerhetskopia eller ta med dig filerna, men redigera dem inte för hand. - - 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 Du kan associera Hedgewars-relaterade filer (sparfiler och demo-inspelningar) med spelet för att köra dem direkt frÃ¥n den filhanterare eller webbläsare du tycker bäst om. @@ -1003,35 +826,12 @@ - PageNet - - Error - Fel - - - Please select server from the list above - Var god välj server frÃ¥n listan ovanför - - - PageNetGame Control Kontroll - Error - Fel - - - Please enter room name - Skriv in rummets namn - - - OK - OK - - DLC @@ -1074,18 +874,6 @@ Ta bort lag - New weapon scheme - Nytt vapenschema - - - Edit weapon scheme - Redigera vapenschema - - - Delete weapon scheme - Ta bort vapenschema - - You can't edit teams from team selection. Go back to main menu to add, edit or delete teams. Du kan inte redigera lag frÃ¥n ett spel. GÃ¥ tillbaka till huvudmenyn för att lägga till, redigera eller ta bort lag. @@ -1161,14 +949,6 @@ PagePlayDemo - Error - Fel - - - OK - OK - - Rename dialog Namnbytesdialig @@ -1176,18 +956,6 @@ Enter new file name: Skriv in nytt filnamn: - - Cannot rename to - Kan inte byta namn till - - - Cannot delete file - Kan inte ta bort fil - - - Please select record from the list - Välj inspelning frÃ¥n listan - PageRoomsList @@ -1200,18 +968,6 @@ Anslut - Refresh - Uppdatera - - - Error - Fel - - - OK - OK - - Admin features Adminfunktioner @@ -1220,68 +976,6 @@ Rumnamn: - This game is in lobby. -You may join and start playing once the game starts. - Detta spel är i lobby. -Du kan gÃ¥ med och börja spela när spelet börjar. - - - 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. - Detta spel pÃ¥gÃ¥r. -Du kan gÃ¥ med och se pÃ¥ men du mÃ¥ste vänta tills spelet är slut för att kunna börja spela. - - - %1 is the host. He may adjust settings and start the game. - %1 är ägaren. Han kan ändra inställningar och starta spelet. - - - Random Map - Slumpad karta - - - Games may be played on precreated or randomized maps. - Spel kan spelas pÃ¥ färdiga eller slumpade kartor. - - - The Game Scheme defines general options and preferences like Round Time, Sudden Death or Vampirism. - Spelschemat anger allmäna inställningar som tid per person, Sudden Death eller Vampyrism. - - - The Weapon Scheme defines available weapons and their ammunition count. - Vapenschemat anger tillgängliga vapen och deras ammunitionsantal. - - - There are %1 clients connected to this room. - - Det är %1 klient uppkopplad till detta rum. - Det är %1 klienter uppkopplade till detta rum. - - - - There are %1 teams participating in this room. - - Det är %1 deltagande lag i detta rum. - Det är %1 deltagande lag i detta rum. - - - - Please enter room name - Skriv in rummets namn - - - Please select room from the list - Välj ett rum frÃ¥n listan - - - Random Maze - Slumpad labyrint - - - State: - Status: - - Rules: Regler: @@ -1297,16 +991,6 @@ Clear Rensa - - Warning - Varning - - - The game you are trying to join has started. -Do you still want to join the room? - Spelet du försöker gÃ¥ med i har startat. -Vill du fortfarande gÃ¥ med i rummet? - %1 players online @@ -1326,10 +1010,6 @@ Ta bort - Enable random mines - Aktivera slumpade minor - - Gain 80% of the damage you do back in health FÃ¥ 80% av skadan du gör tillbaka i liv @@ -1362,10 +1042,6 @@ Land kan inte förstöras! - Add an indestructable border around the terrain - Lägger till en oförstörbar kant runt terrängen - - Lower gravity Lägre gravitation @@ -1468,30 +1144,6 @@ PageSinglePlayer - Simple Game (a quick game against the computer, settings are chosen for you) - Enkelt spel (en snabbomgÃ¥ng mot datorn, inställningar väljs Ã¥t dig) - - - Multiplayer (play a hotseat game against your friends, or AI teams) - Flera spelare (spela en hotseat-omgÃ¥ng mot dina vänner eller AI-lag) - - - Training Mode (Practice your skills in a range of training missions). IN DEVELOPMENT - Träningsläge (öva dina färdigheter i en rad träningsuppdrag). UNDER UTVECKLING - - - Demos (Watch recorded demos) - Demos (se inspelade demos) - - - Load (Load a previously saved game) - Ladda (ladda ett tidigare sparat spel) - - - Campaign Mode (...). IN DEVELOPMENT - Kampanjläge (...). UNDER UTVECKLING - - Simple Game @@ -1585,21 +1237,6 @@ - Are you sure? - - - - Do you really want do remove %1? - - - - Do you really want do remove %1 file(s)? - - - - - - encoding @@ -1607,10 +1244,6 @@ uploading - - Do you really want do cancel uploading %1? - - QAction @@ -1698,10 +1331,6 @@ Leta efter uppdatering vid programstart - Reduced quality - Minskad kvalité - - Show ammo menu tooltips Visa hjälp i ammunitionsmenyn @@ -1781,42 +1410,6 @@ PÃ¥gÃ¥r - Default - Standard - - - Pro mode - Pro-läge - - - Shoppa - Shoppa - - - Basketball - Basket - - - Minefield - Minfält - - - Barrel mayhem - Tunnförödelse - - - Tunnel hogs - Tunnelkottar - - - Crazy - Galet - - - Normal - Vanligt - - hand drawn map... handritad karta... @@ -1908,10 +1501,6 @@ Ljud/grafikinställningar - Weapons - Vapen - - Net game Internetspel @@ -1967,10 +1556,6 @@ QLabel - This program is distributed under the GNU General Public License - Detta program distribueras under GNU General Public License - - Developers: Utvecklare: @@ -2007,10 +1592,6 @@ FPS-begränsning - Net nick - Internetnamn - - Server name: Servernamn: @@ -2095,16 +1676,6 @@ SprÃ¥k - Restart game to apply - Starta om spelet för att verkställa - - - This SVN 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! - Detta SVN-bygge är 'under utveckling' och kanske inte är kompatibel med andra versioner av spelet. -Det kan finnas trasiga eller ofullständiga funktioner. Använd pÃ¥ egen risk! - - Explosives Bombtunnor @@ -2141,18 +1712,10 @@ % replängd - Gameplay - Speltyp - - Stereo rendering Stereorendering - Game Options - Spelinställningar - - Style Stil @@ -2161,10 +1724,6 @@ Schema - Password - Lösenord - - % Get Away Time % flykttid @@ -2175,7 +1734,7 @@ There are videos that are currently being processed. Exiting now will abort them. -Do yot really want to quit? +Do you really want to quit? @@ -2260,10 +1819,6 @@ QMessageBox - Network - Nätverk - - Connection to server is lost Ansluting till servern bröts @@ -2272,90 +1827,14 @@ Fel - Failed to open data directory: -%1 -Please check your installation - Kunde inte öppna datakatalog: -%1 -Var god kontrollera din installation - - - Weapons - Vapen - - - Can not edit default weapon set - Kan inte redigera ursprungliga vapenscheman - - - Can not delete default weapon set - Kan inte ta bort ursprungliga vapenscheman - - - Really delete this weapon set? - Vill du verkligen ta bort detta vapenschema? - - - Can not overwrite default weapon set '%1'! - Kan inte skriva över standardvapenschema '%1'! - - - All file associations have been set. - Alla filassociationer har satts. - - File association failed. Filassociationer har misslyckats. - Teams - Lag - - - Really delete this team? - Vill du verkligen ta bort detta lag? - - - Schemes - Scheman - - - Can not delete default scheme '%1'! - Kan inte ta bort standardschema '%1'! - - - Really delete this game scheme? - Vill du verkligen ta bort detta spelschema? - - - Can not delete default weapon set '%1'! - Kan inte ta bort standardvapenset '%1'! - - - Fields required - - - Please fill out all fields - Success - - - - Successfully posted the issue on code.google.com! - - - - Error during authentication with www.google.com - - - - Error creating the issue - - - Error while authenticating at google.com: @@ -2369,22 +1848,202 @@ + + Teams - Are you sure? + + + + Do you really want to delete the team '%1'? + + + + Cannot delete default scheme '%1'! + + + + Please select a record from the list + + + + Unable to start server + + + + Hedgewars - Error + + + + Hedgewars - Success + + + + All file associations have been set + + + + Successfully posted the issue on hedgewars.googlecode.com + + + + Error during authentication at google.com + + + + Error reporting the issue, please try again later (or visit hedgewars.googlecode.com directly) + + + + Main - Error + + + + Cannot create directory %1 + Kan inte skapa katalog %1 + + + Failed to open data directory: +%1 + +Please check your installation! + + + + TCP - Error + + + + Unable to start the server: %1. + Kunde inte starta servern: %1. + + + Unable to run engine at + + + + Error code: %1 + + + + Video upload - Error + + + + Netgame - Error + + + + Please select a server from the list + + + + Please enter room name + Skriv in rummets namn + + + Record Play - Error + + + + Please select record from the list + Välj inspelning frÃ¥n listan + + + Cannot rename to + + + + Cannot delete file + + + + Room Name - Error + + + + Please select room from the list + Välj ett rum frÃ¥n listan + + + Room Name - Are you sure? + + + + The game you are trying to join has started. +Do you still want to join the room? + Spelet du försöker gÃ¥ med i har startat. +Vill du fortfarande gÃ¥ med i rummet? + + + Schemes - Warning + + + + Schemes - Are you sure? + + + + Do you really want to delete the game scheme '%1'? + + + + Videos - Are you sure? + + + + Do you really want to delete the video '%1'? + + + + Do you really want to remove %1 file(s)? + + + + + + + Do you really want to cancel uploading %1? + + + + File error + Fel pÃ¥ fil + + + Cannot open '%1' for writing + + + + Cannot open '%1' for reading + + + + Cannot use the ammo '%1'! + + + + Weapons - Warning + + + + Cannot overwrite default weapon set '%1'! + + + + Cannot delete default weapon set '%1'! + + + + Weapons - Are you sure? + + + + Do you really want to delete the weapon set '%1'? + + QObject - Error - Fel - - - Cannot create directory %1 - Kan inte skapa katalog %1 - - - OK - OK - - Nickname Smeknamn @@ -2464,10 +2123,6 @@ Associera filextentioner - Set - Ange - - more mer @@ -2497,37 +2152,6 @@ - QTableWidget - - Room Name - Rumnamn - - - C - A - - - T - L - - - Owner - Ägare - - - Map - Karta - - - Rules - Regler - - - Weapons - Vapen - - - RoomsListModel In progress @@ -2602,21 +2226,6 @@ - TCPBase - - Error - Fel - - - Unable to start the server: %1. - Kunde inte starta servern: %1. - - - Unable to run engine: %1 ( - Kunde inte köra motorn: %1 ( - - - ToggleButtonWidget Vampirism @@ -2659,10 +2268,6 @@ OsÃ¥rbar - Add Mines - Lägg till minor - - Random Order Slumpad ordning diff -r 3331b30e4ef1 -r 88fde28bbda6 share/hedgewars/Data/Locale/hedgewars_tr_TR.ts --- a/share/hedgewars/Data/Locale/hedgewars_tr_TR.ts Sun Oct 21 01:28:33 2012 +0400 +++ b/share/hedgewars/Data/Locale/hedgewars_tr_TR.ts Sat Nov 03 00:34:35 2012 +0400 @@ -20,21 +20,6 @@ - DrawMapWidget - - File error - - - - Cannot open file '%1' for writing - - - - Cannot read file '%1' - - - - FreqSpinBox Never @@ -54,14 +39,6 @@ Silahları düzenle - Error - Hata - - - Illegal ammo scheme - Uygunsuz cephane düzeni - - Edit schemes Düzeni deÄŸiÅŸtir @@ -77,7 +54,7 @@ HWAskQuitDialog - Do yot really want to quit? + Do you really want to quit? @@ -131,30 +108,10 @@ HWForm - new - yeni - - - Error - Hata - - - OK - Tamam - - - Unable to start the server - Sunucu baÅŸlatılamadı - - Cannot save record to file %1 Kayıt %1 dosyasına yazılamadı - Please select record from the list above - Lütfen üstteki listeden kaydı seçin - - DefaultTeam @@ -181,10 +138,6 @@ - Password - Parola - - Your nickname %1 is registered on Hedgewars.org Please provide your password below @@ -200,16 +153,14 @@ - Some one already uses - your nickname %1 -on the server. + No nickname supplied. + + + + Someone already uses your nickname %1 on the server. Please pick another nickname: - - No nickname supplied. - - HWGame @@ -335,10 +286,6 @@ Kovuldunuz - Password - Parola - - %1 *** %2 has joined the room @@ -415,14 +362,6 @@ PageAdmin - Server message: - Sunucu iletisi: - - - Set message - Ä°letiyi ayarla - - Clear Accounts Cache @@ -457,10 +396,6 @@ Connecting... BaÄŸlanıyor... - - Cancel - Ä°ptal - PageDrawMap @@ -515,10 +450,6 @@ PageGameStats - <p>The best shot award was won by <b>%1</b> with <b>%2</b> pts.</p> - <p>En iyi atış ödülünü <b>%2</b> puanla <b>%1</b> kazandı.</p> - - Details @@ -588,14 +519,6 @@ PageMain - Local Game (Play a game on a single computer) - Yerel Oyun (Tek bilgisayarda oyna) - - - Network Game (Play a game across a network) - AÄŸ Oyunu (Bir bilgisayar ağı üzerinde oyna) - - 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 @@ -893,35 +816,12 @@ - PageNet - - Error - Hata - - - Please select server from the list above - Lütfen üstteki listeden bir sunucu seçin - - - PageNetGame Control Kontrol - Error - Hata - - - Please enter room name - Lütfen oda ismini girin - - - OK - Tamam - - DLC @@ -1039,14 +939,6 @@ PagePlayDemo - Error - Hata - - - OK - Tamam - - Rename dialog Yeniden adlandırma @@ -1054,18 +946,6 @@ Enter new file name: Yeni dosya adını girin: - - Cannot rename to - Adlandırılamıyor - - - Cannot delete file - Dosya silinemiyor - - - Please select record from the list - Lütfen listeden kaydı seçin - PageRoomsList @@ -1078,18 +958,6 @@ Katıl - Refresh - Tazele - - - Error - Hata - - - OK - Tamam - - Admin features Yönetici görevleri @@ -1098,14 +966,6 @@ - Please enter room name - Lütfen oda ismini girin - - - Please select room from the list - Lütfen listeden bir oda seçin - - Rules: @@ -1121,15 +981,6 @@ Clear - - Warning - - - - The game you are trying to join has started. -Do you still want to join the room? - - %1 players online @@ -1152,10 +1003,6 @@ Zemin yok edilemez! - Add an indestructable border around the terrain - Bölgenin etrafına yok edilemez bir sınır ekle - - Lower gravity Düşük yer çekimi @@ -1168,10 +1015,6 @@ Tüm kirpilerin kiÅŸisel güç kalkanı olur - Enable random mines - Rastgele mayınlar - - Gain 80% of the damage you do back in health VerdiÄŸin hasarın %%80'ini saÄŸlık olarak kazan @@ -1290,26 +1133,6 @@ PageSinglePlayer - Simple Game (a quick game against the computer, settings are chosen for you) - Basit Oyun (bilgisayara karşı oynayın, ayarlar sizin yerinize seçilir) - - - Multiplayer (play a hotseat game against your friends, or AI teams) - Çok oyunculu (arkadaÅŸlarınızın veya bilgisayarın takımlarına karşı oynayın) - - - Training Mode (Practice your skills in a range of training missions). IN DEVELOPMENT - Talim Modu (Bir takım talimlere katılarak kirpilerinizi eÄŸitin). YAPIM AÅžAMASINDA - - - Demos (Watch recorded demos) - Kayıtlı Oyunlar (KaydedilmiÅŸ oyunları izleyin) - - - Load (Load a previously saved game) - Yükle (KaydedilmiÅŸ bir oyunu yükleyin) - - Simple Game @@ -1402,20 +1225,6 @@ - Are you sure? - - - - Do you really want do remove %1? - - - - Do you really want do remove %1 file(s)? - - - - - encoding @@ -1423,10 +1232,6 @@ uploading - - Do you really want do cancel uploading %1? - - QAction @@ -1593,10 +1398,6 @@ - Default - Öntanımlı - - hand drawn map... @@ -1684,10 +1485,6 @@ Takımlar - Weapons - Silahlar - - Audio/Graphic options Ses/Görüntü seçenekleri @@ -1759,10 +1556,6 @@ Sürüm - This program is distributed under the GNU General Public License - Bu program GNU Genel Kamu Lisansı'yla dağıtılmaktadır - - Developers: GeliÅŸtiriciler: @@ -1795,10 +1588,6 @@ Port: - Net nick - Takma ad - - Resolution Çözünürlük @@ -1923,10 +1712,6 @@ - Password - Parola - - % Get Away Time @@ -1937,7 +1722,7 @@ There are videos that are currently being processed. Exiting now will abort them. -Do yot really want to quit? +Do you really want to quit? @@ -2022,10 +1807,6 @@ QMessageBox - Network - AÄŸ - - Connection to server is lost Sunucuyla olan baÄŸlantı kesildi @@ -2034,90 +1815,14 @@ Hata - Failed to open data directory: -%1 -Please check your installation - Veri dizini açılamadı: - %1 -Lütfen kurulumunuzu kontrol edin - - - Weapons - Silahlar - - - Can not edit default weapon set - Öntanımlı silah seti düzenlenemez - - - Can not delete default weapon set - Öntanımlı silah seti silinemez - - - Really delete this weapon set? - Bu silah seti silinsin mi? - - - Can not overwrite default weapon set '%1'! - - - - All file associations have been set. - - - File association failed. - Teams - Takımlar - - - Really delete this team? - - - - Schemes - - - - Can not delete default scheme '%1'! - - - - Really delete this game scheme? - - - - Can not delete default weapon set '%1'! - - - - Fields required - - - Please fill out all fields - Success - - - - Successfully posted the issue on code.google.com! - - - - Error during authentication with www.google.com - - - - Error creating the issue - - - Error while authenticating at google.com: @@ -2131,22 +1836,200 @@ + + Teams - Are you sure? + + + + Do you really want to delete the team '%1'? + + + + Cannot delete default scheme '%1'! + + + + Please select a record from the list + + + + Unable to start server + + + + Hedgewars - Error + + + + Hedgewars - Success + + + + All file associations have been set + + + + Successfully posted the issue on hedgewars.googlecode.com + + + + Error during authentication at google.com + + + + Error reporting the issue, please try again later (or visit hedgewars.googlecode.com directly) + + + + Main - Error + + + + Cannot create directory %1 + %1 dizini oluÅŸturulamadı + + + Failed to open data directory: +%1 + +Please check your installation! + + + + TCP - Error + + + + Unable to start the server: %1. + Sunucu baÅŸlatılamadı: %1. + + + Unable to run engine at + + + + Error code: %1 + + + + Video upload - Error + + + + Netgame - Error + + + + Please select a server from the list + + + + Please enter room name + Lütfen oda ismini girin + + + Record Play - Error + + + + Please select record from the list + Lütfen listeden kaydı seçin + + + Cannot rename to + + + + Cannot delete file + + + + Room Name - Error + + + + Please select room from the list + Lütfen listeden bir oda seçin + + + Room Name - Are you sure? + + + + The game you are trying to join has started. +Do you still want to join the room? + + + + Schemes - Warning + + + + Schemes - Are you sure? + + + + Do you really want to delete the game scheme '%1'? + + + + Videos - Are you sure? + + + + Do you really want to delete the video '%1'? + + + + Do you really want to remove %1 file(s)? + + + + + + Do you really want to cancel uploading %1? + + + + File error + + + + Cannot open '%1' for writing + + + + Cannot open '%1' for reading + + + + Cannot use the ammo '%1'! + + + + Weapons - Warning + + + + Cannot overwrite default weapon set '%1'! + + + + Cannot delete default weapon set '%1'! + + + + Weapons - Are you sure? + + + + Do you really want to delete the weapon set '%1'? + + QObject - Error - Hata - - - Cannot create directory %1 - %1 dizini oluÅŸturulamadı - - - OK - Tamam - - Nickname @@ -2255,17 +2138,6 @@ - QTableWidget - - Map - Harita - - - Weapons - Silahlar - - - RoomsListModel In progress @@ -2340,21 +2212,6 @@ - TCPBase - - Error - Hata - - - Unable to start the server: %1. - Sunucu baÅŸlatılamadı: %1. - - - Unable to run engine: %1 ( - Oyun motoru çalıştırılamadı: %1 ( - - - ToggleButtonWidget Vampirism @@ -2397,10 +2254,6 @@ Ölümsüzlük - Add Mines - Mayın Ekle - - Random Order diff -r 3331b30e4ef1 -r 88fde28bbda6 share/hedgewars/Data/Locale/hedgewars_uk.ts --- a/share/hedgewars/Data/Locale/hedgewars_uk.ts Sun Oct 21 01:28:33 2012 +0400 +++ b/share/hedgewars/Data/Locale/hedgewars_uk.ts Sat Nov 03 00:34:35 2012 +0400 @@ -20,21 +20,6 @@ - DrawMapWidget - - File error - Помилка файлу - - - Cannot open file '%1' for writing - Ðе можу відкрити файл '%1' Ð´Ð»Ñ Ð·Ð°Ð¿Ð¸Ñу - - - Cannot read file '%1' - Ðе можу прочитати файл '%1' - - - FreqSpinBox Never @@ -56,14 +41,6 @@ Редагувати зброю - Error - Помилка - - - Illegal ammo scheme - Ðеможлива Ñхема баєприпаÑів - - Edit schemes Редагувати Ñхеми @@ -79,29 +56,13 @@ HWAskQuitDialog - Do yot really want to quit? + Do you really want to quit? 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 був доданий до вашого ÑпиÑку друзів - - %1 has been removed from your ignore list @@ -149,30 +110,10 @@ HWForm - new - нова - - - Error - Помилка - - - OK - Так - - - Unable to start the server - Помилка запуÑку Ñервера - - Cannot save record to file %1 Ðе можу зберегти Ð·Ð°Ð¿Ð¸Ñ Ð´Ð¾ файлу %1 - Please select record from the list above - Виберіть Ð·Ð°Ð¿Ð¸Ñ Ð·Ñ– ÑпиÑку - - DefaultTeam Команда за замовчуваннÑм @@ -199,10 +140,6 @@ - Password - Пароль - - Your nickname %1 is registered on Hedgewars.org Please provide your password below @@ -221,17 +158,12 @@ - Some one already uses - your nickname %1 -on the server. + No nickname supplied. + + + + Someone already uses your nickname %1 on the server. Please pick another nickname: - ХтоÑÑŒ вже викориÑтовує - нікнейм %1 -на Ñервері. -Виберіть інший нікнейм: - - - No nickname supplied. @@ -359,20 +291,6 @@ Ð’Ð°Ñ Ð²Ð¸Ð³Ð½Ð°Ð»Ð¸ - Password - Пароль - - - Your nickname %1 is -registered on Hedgewars.org -Please provide your password -or pick another nickname: - Ваше ім'Ñ %1 вже -зареєÑтроване на Hedgewars.org -Будь-лаÑка введіть ваш пароль -або змініть ім'Ñ: - - %1 *** %2 has joined the room %1 *** %2 увійшов до кімнати @@ -389,30 +307,6 @@ %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 -Введіть ваш пароль нижче або -виберіть інший нік в налаштуваннÑÑ… гри: - - - Nickname - Ðікнейм - - - Some one already uses - your nickname %1 -on the server. -Please pick another nickname: - ХтоÑÑŒ вже викориÑтовує - нікнейм %1 -на Ñервері. -Виберіть інший нікнейм: - - User quit @@ -473,14 +367,6 @@ PageAdmin - Server message: - ÐŸÐ¾Ð²Ñ–Ð´Ð¾Ð¼Ð»ÐµÐ½Ð½Ñ Ñервера: - - - Set message - Ð’Ñтановити Ð¿Ð¾Ð²Ñ–Ð´Ð¾Ð¼Ð»ÐµÐ½Ð½Ñ - - Clear Accounts Cache ОчиÑтити Кеш Профілів @@ -515,10 +401,6 @@ Connecting... Під'єднаннÑ... - - Cancel - СкаÑувати - PageDrawMap @@ -543,10 +425,6 @@ Завантажити намальовану мапу - Drawn Maps (*.hwmap);;All files (*.*) - Ðамальовані мапи (*.hwmap);;Ð’ÑÑ– файли (*.*) - - Save drawn map Зберегти намальовану мапу @@ -577,26 +455,6 @@ PageGameStats - <p>The best shot award was won by <b>%1</b> with <b>%2</b> pts.</p> - <p>Ðагороду за кращий поÑтріл отримує <b>%1</b> з <b>%2</b> пунктами нанеÑених втрат.</p> - - - <p>The best killer is <b>%1</b> with <b>%2</b> kills in a turn.</p> - - <p>Кращим вбивцею Ñ” <b>%1</b> з <b>%2</b> вбивÑтвом за хід.</p> - <p>Кращим вбивцею Ñ” <b>%1</b> з <b>%2</b> вбивÑтвами за хід.</p> - <p>Кращим вбивцею Ñ” <b>%1</b> з <b>%2</b> вбивÑтвами за хід.</p> - - - - <p>A total of <b>%1</b> hedgehog(s) were killed during this round.</p> - - <p><b>%1</b> їжак був вбитий протÑгом раунду.</p> - <p><b>%1</b> їжаки були вбиті протÑгом раунду.</p> - <p><b>%1</b> їжаків було вбито протÑгом раунду.</p> - - - Details Деталі @@ -678,14 +536,6 @@ 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 Виберіть той же колір що Ñ– в друга щоб грати в одній команді. Кожен з Ð²Ð°Ñ Ð±ÑƒÐ´Ðµ керувати влаÑними їжаками але вони виграють чи програють разом. @@ -983,35 +833,12 @@ - PageNet - - Error - Помилка - - - Please select server from the list above - Выберіть Ñервер зі ÑпиÑку - - - PageNetGame Control ÐšÐµÑ€ÑƒÐ²Ð°Ð½Ð½Ñ - Error - Помилка - - - Please enter room name - Введіть назву кімнати - - - OK - Так - - DLC @@ -1054,18 +881,6 @@ Видалити команду - 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. Ðе можна редагувати команду з меню вибору. Перейдіть в головне меню щоб додати, редагувати чи видалити команду. @@ -1141,14 +956,6 @@ PagePlayDemo - Error - Помилка - - - OK - Так - - Rename dialog ÐŸÐµÑ€ÐµÐ¹Ð¼ÐµÐ½ÑƒÐ²Ð°Ð½Ð½Ñ @@ -1156,18 +963,6 @@ Enter new file name: Введіть нове ім'Ñ Ñ„Ð°Ð¹Ð»Ñƒ: - - Cannot rename to - Ðе можу перейменувати на - - - Cannot delete file - Ðе можу видалити файл - - - Please select record from the list - Выберіть Ð·Ð°Ð¿Ð¸Ñ Ð·Ñ– ÑпиÑку - PageRoomsList @@ -1180,18 +975,6 @@ ПриєднатиÑÑ - Refresh - Оновити - - - Error - Помилка - - - OK - Так - - Admin features ÐдмініÑÑ‚Ñ€ÑƒÐ²Ð°Ð½Ð½Ñ @@ -1200,70 +983,6 @@ Ðазва Кімнати: - 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 клієнти. - До кімнати приєднані %1 клієнтів. - - - - There are %1 teams participating in this room. - - Ð’ кімнаті знаходитьÑÑ %1 команда. - Ð’ кімнаті знаходÑÑ‚ÑŒÑÑ %1 команди. - Ð’ кімнаті знаходÑÑ‚ÑŒÑÑ %1 команд. - - - - Please enter room name - Введіть назву кімнати - - - Please select room from the list - Виберіть кімнату зі ÑпиÑку - - - Random Maze - Випадковий лабіринт - - - State: - Стан: - - Rules: Правила: @@ -1279,16 +998,6 @@ Clear ОчиÑтити - - Warning - Увага - - - The game you are trying to join has started. -Do you still want to join the room? - Гра, до Ñкої ви хочети при'єднатиÑÑŒ вже почалаÑÑŒ. -Ви вÑе ще хочете ввійти в кімнату? - %1 players online @@ -1313,10 +1022,6 @@ Грунт не може бути знищений! - Add an indestructable border around the terrain - Додати невразливу рамку навколо міÑцевоÑÑ‚Ñ– - - Lower gravity Слабка Ð³Ñ€Ð°Ð²Ñ–Ñ‚Ð°Ñ†Ñ–Ñ @@ -1329,10 +1034,6 @@ Ð’ÑÑ– їжаки мають оÑобиÑте Ñилове поле - Enable random mines - Увімкнути випадкові міни - - Gain 80% of the damage you do back in health ÐžÑ‚Ñ€Ð¸Ð¼Ð°Ð½Ð½Ñ 80% здоров'Ñ, Ñке втратив противник @@ -1451,30 +1152,6 @@ PageSinglePlayer - Simple Game (a quick game against the computer, settings are chosen for you) - ПроÑта Гра (швидка гра проти комп'ютера, Ð½Ð°Ð»Ð°ÑˆÑ‚ÑƒÐ²Ð°Ð½Ð½Ñ Ð²Ð¸Ð±Ð¸Ñ€Ð°ÑŽÑ‚ÑŒÑÑ Ð·Ð° ваÑ) - - - Multiplayer (play a hotseat game against your friends, or AI teams) - Мультиплеєр (гра проти ваших друзів, або проти AI команд) - - - 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 - Режим Кампанії (...). Ð’ РОЗРОБЦІ - - Simple Game @@ -1569,22 +1246,6 @@ - Are you sure? - - - - Do you really want do remove %1? - - - - Do you really want do remove %1 file(s)? - - - - - - - encoding @@ -1592,10 +1253,6 @@ uploading - - Do you really want do cancel uploading %1? - - QAction @@ -1683,10 +1340,6 @@ Додавати дату Ñ– Ñ‡Ð°Ñ Ð² назву запиÑаного файлу - Reduced quality - Знижена ÑкіÑÑ‚ÑŒ - - Show ammo menu tooltips Показувати підказки в меню зброї @@ -1766,10 +1419,6 @@ Ð’ процеÑÑ– - Default - За замовчуваннÑм - - hand drawn map... вручну намальована мапа... @@ -1857,10 +1506,6 @@ Команди - Weapons - Ð—Ð±Ñ€Ð¾Ñ - - Audio/Graphic options ÐÐ°Ð»Ð°ÑˆÑ‚ÑƒÐ²Ð°Ð½Ð½Ñ Ð—Ð²ÑƒÐºÑƒ та Графіки @@ -1932,10 +1577,6 @@ ВерÑÑ–Ñ - This program is distributed under the GNU General Public License - Ð¦Ñ Ð¿Ñ€Ð¾Ð³Ñ€Ð°Ð¼Ð¼Ð° розповÑюджуєтьÑÑ Ð½Ð° умовах ліцензії GNU General Public License - - Developers: Розробники: @@ -1968,10 +1609,6 @@ Порт: - Net nick - Ім'Ñ Ð³Ñ€Ð°Ð²Ñ†Ñ - - Resolution Роздільна здатніÑÑ‚ÑŒ @@ -2048,10 +1685,6 @@ Мова - Restart game to apply - ПерезапуÑÑ‚Ñ–Ñ‚ÑŒ гру щоб заÑтоÑувати - - Explosives Вибухівка @@ -2092,10 +1725,6 @@ Стерео рендеринг - Game Options - Параметри гри - - Style Стиль @@ -2104,10 +1733,6 @@ Схема - Password - Пароль - - % Get Away Time % Ð§Ð°Ñ Ð¢Ñ–ÐºÐ°Ñ‚Ð¸ @@ -2118,7 +1743,7 @@ There are videos that are currently being processed. Exiting now will abort them. -Do yot really want to quit? +Do you really want to quit? @@ -2203,10 +1828,6 @@ QMessageBox - Network - Мережа - - Connection to server is lost З'Ñ”Ð´Ð½Ð°Ð½Ð½Ñ Ð· Ñервером втрачено @@ -2215,90 +1836,14 @@ Помилка - Failed to open data directory: -%1 -Please check your installation - Ðе можу знайти теку Ñ Ð´Ð°Ð½Ð¸Ð¼Ð¸: -%1 -Перевірте правильніÑÑ‚ÑŒ вÑÑ‚Ð°Ð½Ð¾Ð²Ð»ÐµÐ½Ð½Ñ - - - Weapons - Ð—Ð±Ñ€Ð¾Ñ - - - 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. Файлове аÑÐ¾Ñ†Ñ–ÑŽÐ²Ð°Ð½Ð½Ñ Ð½Ðµ вдалоÑÑŒ - Teams - Команди - - - Really delete this team? - Справді видалити цю команду? - - - Schemes - Схеми - - - Can not delete default scheme '%1'! - Ðе можу видалити Ñтандартну Ñхему '%1'! - - - Really delete this game scheme? - Справді видалити цю Ñхему гри? - - - Can not delete default weapon set '%1'! - Ðе можу видалити Ñтандартний набір зброї '%1'! - - - Fields required - - - Please fill out all fields - Success - - - - Successfully posted the issue on code.google.com! - - - - Error during authentication with www.google.com - - - - Error creating the issue - - - Error while authenticating at google.com: @@ -2312,22 +1857,203 @@ + + Teams - Are you sure? + + + + Do you really want to delete the team '%1'? + + + + Cannot delete default scheme '%1'! + + + + Please select a record from the list + + + + Unable to start server + + + + Hedgewars - Error + + + + Hedgewars - Success + + + + All file associations have been set + + + + Successfully posted the issue on hedgewars.googlecode.com + + + + Error during authentication at google.com + + + + Error reporting the issue, please try again later (or visit hedgewars.googlecode.com directly) + + + + Main - Error + + + + Cannot create directory %1 + Ðе можу Ñтворити директорію %1 + + + Failed to open data directory: +%1 + +Please check your installation! + + + + TCP - Error + + + + Unable to start the server: %1. + Помилка запуÑку Ñервера: %1. + + + Unable to run engine at + + + + Error code: %1 + + + + Video upload - Error + + + + Netgame - Error + + + + Please select a server from the list + + + + Please enter room name + Введіть назву кімнати + + + Record Play - Error + + + + Please select record from the list + Выберіть Ð·Ð°Ð¿Ð¸Ñ Ð·Ñ– ÑпиÑку + + + Cannot rename to + + + + Cannot delete file + + + + Room Name - Error + + + + Please select room from the list + Виберіть кімнату зі ÑпиÑку + + + Room Name - Are you sure? + + + + The game you are trying to join has started. +Do you still want to join the room? + Гра, до Ñкої ви хочети при'єднатиÑÑŒ вже почалаÑÑŒ. +Ви вÑе ще хочете ввійти в кімнату? + + + Schemes - Warning + + + + Schemes - Are you sure? + + + + Do you really want to delete the game scheme '%1'? + + + + Videos - Are you sure? + + + + Do you really want to delete the video '%1'? + + + + Do you really want to remove %1 file(s)? + + + + + + + + Do you really want to cancel uploading %1? + + + + File error + Помилка файлу + + + Cannot open '%1' for writing + + + + Cannot open '%1' for reading + + + + Cannot use the ammo '%1'! + + + + Weapons - Warning + + + + Cannot overwrite default weapon set '%1'! + + + + Cannot delete default weapon set '%1'! + + + + Weapons - Are you sure? + + + + Do you really want to delete the weapon set '%1'? + + QObject - Error - Помилка - - - Cannot create directory %1 - Ðе можу Ñтворити директорію %1 - - - OK - Так - - Nickname Ім'Ñ @@ -2436,37 +2162,6 @@ - QTableWidget - - Room Name - Ðазва Кімнати - - - C - Кл - - - T - Км - - - Owner - ВлаÑник - - - Map - Мапа - - - Rules - Правила - - - Weapons - Ð—Ð±Ñ€Ð¾Ñ - - - RoomsListModel In progress @@ -2541,21 +2236,6 @@ - TCPBase - - Error - Помилка - - - Unable to start the server: %1. - Помилка запуÑку Ñервера: %1. - - - Unable to run engine: %1 ( - Помилка запуÑку движку: %1 ( - - - ToggleButtonWidget Vampirism @@ -2598,10 +2278,6 @@ ÐевразливіÑÑ‚ÑŒ - Add Mines - Додати Міни - - Random Order Випадковий ПорÑдок diff -r 3331b30e4ef1 -r 88fde28bbda6 share/hedgewars/Data/Locale/hedgewars_zh_CN.ts --- a/share/hedgewars/Data/Locale/hedgewars_zh_CN.ts Sun Oct 21 01:28:33 2012 +0400 +++ b/share/hedgewars/Data/Locale/hedgewars_zh_CN.ts Sat Nov 03 00:34:35 2012 +0400 @@ -23,25 +23,6 @@ - DrawMapWidget - - - - File error - - - - - Cannot open file '%1' for writing - - - - - Cannot read file '%1' - - - - FreqSpinBox @@ -74,102 +55,73 @@ - - Error - 错误 - - - - Illegal ammo scheme - 无法使用此弹è¯è®¾ç½® - - Edit schemes 修改游æˆè®¾ç½® - GameUIConfig - - Error - 错误 - - - Cannot create directory %1 - ä¸èƒ½åˆ›å»ºè·¯å¾„ - - - Quit - 退出 - - - Cannot save options to file %1 - ä¸èƒ½æŠŠé€‰é¡¹ä¿å­˜åˆ° %1 - - - HWAskQuitDialog - Do yot really want to quit? + Do you really want to quit? HWChatWidget - + %1 has been removed from your ignore list - + %1 has been added to your ignore list - + %1 has been removed from your friends list - + %1 has been added to your friends list - + Stylesheet imported from %1 - + Enter %1 if you want to use the current StyleSheet in future, enter %2 to reset! - + Couldn't read %1 - + StyleSheet discarded - + StyleSheet saved to %1 - + Failed to save StyleSheet to %1 - + %1 is not a valid command! @@ -177,29 +129,18 @@ HWForm - - + + DefaultTeam - + Game aborted - - - Error - 错误 - - - - Please select record from the list above - - - - + Your nickname %1 is registered on Hedgewars.org Please provide your password below @@ -207,241 +148,163 @@ - + No password supplied. - + Nickname - - Some one already uses - your nickname %1 -on the server. + + Someone already uses your nickname %1 on the server. Please pick another nickname: - + No nickname supplied. - + Hedgewars Demo File File Types - + Hedgewars Save File File Types - + Demo name - + Demo name: - Please, select demo from the list above - 请选择一个DEMO - - - - OK - 确认 - - - Please, select server from the list above - 请选择一个æœåŠ¡å™¨ - - - Please, select record from the list above - 请选择一个记录 - - - - + + Cannot save record to file %1 无法录入文件 %1 - - - Unable to start the server - å¼€å¯æœåŠ¡ç«¯å‡ºçŽ°é”™è¯¯ - - - new - æ–° - HWGame - Error - 错误 - - - Unable to start the server: %1. - å¼€å¯æœåŠ¡ç«¯å‡ºçŽ°é”™è¯¯: %1. - - - - + + en.txt zh_CN.txt - Cannot save demo to file %1 - ä¸èƒ½æŠŠdemoä¿å­˜ä¸º %1 - - - Quit - 退出 - - - + Cannot open demofile %1 DEMO %1 打ä¸å¼€ - - Unable to run engine: %1 ( - 引擎无法å¯åŠ¨: %1 ( - - - Error reading training config file - è®­ç»ƒè®¾ç½®æ–‡ä»¶æ— æ³•è¯»å– - HWMapContainer - + Map 地图 - + Type + + Small tunnels + + + - Small tunnels + Medium tunnels - Medium tunnels + Large tunnels - Large tunnels + Small floating islands - Small floating islands + Medium floating islands - Medium floating islands - - - - Large floating islands - + Themes 主题 - + Seed - + Set - + Filter 过滤 + + All + 全部 + + - All - 全部 + Small + å°åž‹ - Small - å°åž‹ + Medium + 中型 - Medium - 中型 + Large + 大型 - Large - 大型 + Cavern + æ´žç©´ - Cavern - æ´žç©´ - - - Wacky 曲折 - HWNet - - Error - 错误 - - - The host was not found. Please check the host name and port settings. - 未å‘现主机。请检查主机å和端å£è®¾ç½®ã€‚ - - - Connection refused - è¿žæŽ¥è¢«æ‹’ç» - - - - HWNetServer - - Error - 错误 - - - Unable to start the server: %1. - 无法å¯åŠ¨æœåŠ¡ç«¯: %1. - - - HWNetServersModel @@ -462,92 +325,68 @@ HWNewNet - Error - 错误 - - - + User quit - + Remote host has closed connection - + The host was not found. Please check the host name and port settings. 错误没找到这个主机。请检查主机å和端å£è®¾ç½®ã€‚ - + Connection refused è¿žæŽ¥è¢«æ‹’ç» - + The server is too old. Disconnecting now. - + %1 *** %2 has joined - - + + %1 *** %2 has left - - + + %1 *** %2 has left (%3) - - + + %1 *** %2 has joined the room - *** %1 joined - *** %1 加入 - - - *** %1 left - *** %1 离开 - - - *** %1 left (%2) - *** %1 离开 (%2) - - - + Quit reason: 退出原因: - + Room destroyed 房间æŸå - + You got kicked 被踢出 - - Password - å¯†ç  - - - Enter your password: - 输入你的密ç ï¼š - HWPasswordDialog @@ -560,12 +399,12 @@ HWUploadVideoDialog - + Upload video - + Upload @@ -581,23 +420,23 @@ LibavIteraction - + Duration: %1m %2s - + Video: %1x%2, - + %1 fps, - + Audio: @@ -605,14 +444,6 @@ PageAdmin - Server message: - æœåŠ¡å™¨ä¿¡æ¯ï¼š - - - Set message - è®¾å®šä¿¡æ¯ - - Fetch data @@ -709,14 +540,6 @@ PageEditTeam - Discard - 中止 - - - Save - ä¿å­˜ - - General 常规 @@ -730,22 +553,6 @@ PageGameStats - <p>The best shot award was won by <b>%1</b> with <b>%2</b> pts.</p> - <p>最佳射手是<b>%1</b>。伤害 <b>%2</b>点。</p> - - - <p>The best killer is <b>%1</b> with <b>%2</b> kills in a turn.</p> - - <p>最佳æ€æ‰‹<b>%1</b>:å´æ•Œ<b>%2</b></p> - - - - <p>A total of <b>%1</b> hedgehog(s) were killed during this round.</p> - - <p>有<b>%1</b>个刺猬在此局失去生命。</p> - - - Details @@ -827,46 +634,6 @@ PageMain - Multiplayer - å¤šäººæ¸¸æˆ - - - Single Player - å•äººæ¸¸æˆ - - - Net game - ç½‘ç»œæ¸¸æˆ - - - Saved games - 存档 - - - Demos - Demo - - - Setup - 设置 - - - About - 关于 - - - Exit - 退出 - - - Local Game (Play a game on a single computer) - 本地游æˆï¼ˆåœ¨ä¸€å°ç”µè„‘上) - - - Network Game (Play a game across a network) - 网络游æˆï¼ˆé€šè¿‡ç½‘络) - - Local Game @@ -892,325 +659,325 @@ - + Leave a feedback here reporting issues, suggesting features or just saying how you like Hedgewars - - Downloadable Content - - - + Downloadable Content + + + + Access the user created content downloadable from our website - + Exit game - + Manage videos recorded from game - + Edit game preferences - - 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 - - - - 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! + 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 - 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! + 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 - If you'd like to keep others from using your preferred nickname on the official server, register an account at http://www.hedgewars.org/. + 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 - You're bored of default gameplay? Try one of the missions - they'll offer different gameplay depending on the one you picked. + 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 - 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. + 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 - 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! + You're bored of default gameplay? Try one of the missions - they'll offer different gameplay depending on the one you picked. Tips - 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! + 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. Share it with your family and friends as you like! + 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 is Open Source and Freeware we create in our spare time. If someone sold you the game, you should try get a refund! + 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 - From time to time there will be official tournaments. Upcoming events will be announced at http://www.hedgewars.org/ some days in advance. + Hedgewars is Open Source and Freeware we create in our spare time. Share it with your family and friends as you like! Tips - Hedgewars is available in many languages. If the translation in your language seems to be missing or outdated, feel free to contact us! + 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 can be run on lots of different operating systems including Microsoft Windows, Mac OS X and Linux. + From time to time there will be official tournaments. Upcoming events will be announced at http://www.hedgewars.org/ some days in advance. Tips - 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. + Hedgewars is available in many languages. If the translation in your language seems to be missing or outdated, feel free to contact us! Tips - Connect one or more gamepads before starting the game to be able to assign their controls to your teams. + Hedgewars can be run on lots of different operating systems including Microsoft Windows, Mac OS X and Linux. Tips - Create an account on %1 to keep others from using your most favourite nickname while playing on the official server. + 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. + Connect one or more gamepads before starting the game to be able to assign their controls to your teams. Tips - If your graphics card isn't able to provide hardware accelerated OpenGL, try to enable the low quality mode to improve performance. + Create an account on %1 to keep others from using your most favourite nickname while playing on the official server. Tips - If your graphics card isn't able to provide hardware accelerated OpenGL, try to update the associated drivers. + While playing you should give yourself a short break at least once an hour. Tips - We're open to suggestions and constructive feedback. If you don't like something or got a great idea, let us know! + If your graphics card isn't able to provide hardware accelerated OpenGL, try to enable the low quality mode to improve performance. Tips - Especially while playing online be polite and always remember there might be some minors playing with or against you as well! + If your graphics card isn't able to provide hardware accelerated OpenGL, try to update the associated drivers. Tips - Special game modes such as 'Vampirism' or 'Karma' allow you to develop completely new tactics. Try them in a custom game! + We're open to suggestions and constructive feedback. If you don't like something or got a great idea, let us know! Tips - The Windows version of Hedgewars supports Xfire. Make sure to add Hedgewars to its game list so your friends can see you playing. + Especially while playing online be polite and always remember there might be some minors playing with or against you as well! Tips - You should never install Hedgewars on computers you don't own (school, university, work, etc.). Please ask the responsible person instead! + Special game modes such as 'Vampirism' or 'Karma' allow you to develop completely new tactics. Try them in a custom game! Tips - 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. + The Windows version of Hedgewars supports Xfire. Make sure to add Hedgewars to its game list so your friends can see you playing. Tips - No hedgehogs were harmed in making this game. + You should never install Hedgewars on computers you don't own (school, university, work, etc.). Please ask the responsible person instead! Tips - There are three different jumps available. Tap [high jump] twice to do a very high/backwards jump. + 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 - Afraid of falling off a cliff? Hold down [precise] to turn [left] or [right] without actually moving. + No hedgehogs were harmed in making this game. Tips - 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. + There are three different jumps available. Tap [high jump] twice to do a very high/backwards jump. Tips - Most weapons won't work once they touch the water. The Homing Bee as well as the Cake are exceptions to this. + Afraid of falling off a cliff? Hold down [precise] to turn [left] or [right] without actually moving. Tips - The Old Limbuger only causes a small explosion. However the wind affected smelly cloud can poison lots of hogs at once. + 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 - The Piano Strike is the most damaging air strike. You'll lose the hedgehog performing it, so there's a huge downside as well. + Most weapons won't work once they touch the water. The Homing Bee as well as the Cake are exceptions to this. Tips - The Homing Bee can be tricky to use. Its turn radius depends on its velocity, so try to not use full power. + The Old Limbuger only causes a small explosion. However the wind affected smelly cloud can poison lots of hogs at once. Tips - Sticky Mines are a perfect tool to create small chain reactions knocking enemy hedgehogs into dire situations ... or water. + 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 Hammer is most effective when used on bridges or girders. Hit hogs will just break through the ground. + The Homing Bee can be tricky to use. Its turn radius depends on its velocity, so try to not use full power. Tips - If you're stuck behind an enemy hedgehog, use the Hammer to free yourself without getting damaged by an explosion. + Sticky Mines are a perfect tool to create small chain reactions knocking enemy hedgehogs into dire situations ... or water. Tips - The Cake's maximum walking distance depends on the ground it has to pass. Use [attack] to detonate it early. + The Hammer is most effective when used on bridges or girders. Hit hogs will just break through the ground. Tips - The Flame Thrower is a weapon but it can be used for tunnel digging as well. + If you're stuck behind an enemy hedgehog, use the Hammer to free yourself without getting damaged by an explosion. Tips - Use the Molotov or Flame Thrower to temporary keep hedgehogs from passing terrain such as tunnels or platforms. + The Cake's maximum walking distance depends on the ground it has to pass. Use [attack] to detonate it early. Tips - Want to know who's behind the game? Click on the Hedgewars logo in the main menu to see the credits. + The Flame Thrower is a weapon but it can be used for tunnel digging as well. Tips - Like Hedgewars? Become a fan on %1 or follow us on %2! + Use the Molotov or Flame Thrower to temporary keep hedgehogs from passing terrain such as tunnels or platforms. Tips - 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. + Want to know who's behind the game? Click on the Hedgewars logo in the main menu to see the credits. Tips + Like Hedgewars? Become a fan on %1 or follow us on %2! + Tips + + + + + 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'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 - - - - 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. + 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 - 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. + 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 + 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 + + + + 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 @@ -1219,72 +986,28 @@ PageMultiplayer - Back - 返回 - - Start 开始 - PageNet - - Local - 本地 - - - Internet - Internet - - - - Error - 错误 - - - - Please select server from the list above - - - - Please, select server from the list above - 请选择一个æœåŠ¡å™¨ - - - PageNetGame + + DLC + + + - DLC - - - - Downloadable Content - + Control Ctrl - - - Error - 错误 - - - - Please enter room name - - - - - OK - - PageNetType @@ -1416,69 +1139,19 @@ HTTP proxy - - Save - ä¿å­˜ - - - Back - 返回 - - - Weapons set - 新武器设定 - - - Edit - 修改当å‰æ­¦å™¨è®¾å®š - PagePlayDemo - - - - - Error - 错误 - - - Please, select record from the list - 请从列表选择记录 - - - - - Please select record from the list - - - - - - OK - 确认 - - - + Rename dialog é‡å‘½å对è¯æ¡† - + Enter new file name: 输入新的文件å: - - - Cannot rename to - ä¸èƒ½æ”¹å˜åå­— - - - - Cannot delete file - ä¸èƒ½åˆ é™¤æ–‡ä»¶ - PageRoomsList @@ -1514,64 +1187,18 @@ - Refresh - 刷新 - - - Clear - - - - Error - 错误 - - - - Please enter room name - - - - - Please select room from the list - - - - - Warning - - - - - The game you are trying to join has started. -Do you still want to join the room? - - - + %1 players online - Please, enter room name - 请键入房间å - - - - - OK - 确认 - - - Please, select room from the list - 请从列表选中房间 - - - + Admin features 管ç†å‘˜åŠŸèƒ½ @@ -1732,10 +1359,6 @@ PageSelectWeapon - Back - 返回 - - New æ–°æ¸¸æˆ @@ -1755,21 +1378,6 @@ Delete 删除 - - Save - ä¿å­˜ - - - - PageSimpleGame - - Back - 返回 - - - Simple Game - 简å•æ¸¸æˆ - PageSinglePlayer @@ -1820,43 +1428,15 @@ - Training - 训练 - - Multiplayer å¤šäººæ¸¸æˆ - Saved games - 游æˆå­˜æ¡£ - - Demos Demo - - Simple Game (a quick game against the computer, settings are chosen for you) - å¿«é€Ÿæ¸¸æˆ (对抗电脑,固定设置) - - - Multiplayer (play a hotseat game against your friends, or AI teams) - å¤šäººæ¸¸æˆ (热å对抗朋å‹æˆ–AI) - - - Training Mode (Practice your skills in a range of training missions). IN DEVELOPMENT - è®­ç»ƒæ¨¡å¼ (一系列训练任务)。开å‘中 - - - Demos (Watch recorded demos) - Demo (观看记录的Demo) - - - Load (Load a previously saved game) - è¯»å– (读å–之å‰ä¿å­˜çš„游æˆ) - PageTraining @@ -1916,101 +1496,77 @@ - - - - Are you sure? - - - - - Do you really want do remove %1? - - - - - Do you really want do remove %1 file(s)? - - - - - - + encoding - + uploading - - - Do you really want do cancel uploading %1? - - QAction - + Kick 踢 - + Update æ›´æ–° - + Start 开始 - + Restrict Joins é™åˆ¶å‚与 - + Restrict Team Additions é™åˆ¶å›¢é˜Ÿæ’件 - + Info ä¿¡æ¯ - + Ban å±è”½ - + Follow - - + + Ignore - - + + Add friend - + Unignore - + Remove friend @@ -2028,10 +1584,6 @@ 游æˆå…¨å±å¹• - Forts mode - åŸŽå ¡æ¨¡å¼ - - Show FPS 显示帧率 (FPS) @@ -2077,35 +1629,23 @@ ç•Œé¢å…¨å±å¹• - Divide teams - 分组 - - Append date and time to record file name 记录å称中包å«å…·ä½“时间日期 - Solid land - å›ºå®žåœ°é¢ - - - Reduce Quality - é™ä½Žè´¨é‡ - - Save password - + Save account name and password - + Video is private @@ -2153,26 +1693,6 @@ - Level 5 - Lv 5 - - - Level 4 - Lv 4 - - - Level 3 - Lv 3 - - - Level 2 - Lv 2 - - - Level 1 - Lv 1 - - Level Lv 级别 @@ -2263,19 +1783,19 @@ + + + Any + + + - - Any + In lobby - In lobby - - - - In progress @@ -2288,10 +1808,6 @@ æˆå‘˜ - Team - é˜Ÿä¼ - - Team Settings @@ -2342,48 +1858,16 @@ - Net nick - 昵称 - - - Net options - 网络选项 - - - Landscape - 地形 - - - Game scheme - 游æˆè®¾ç½® - - Playing teams çŽ©å®¶é˜Ÿä¼ - Team level - 队ä¼çº§åˆ« - - Net game ç½‘ç»œæ¸¸æˆ - Servers list - æœåŠ¡å™¨åˆ—表 - - - Weapons - 武器 - - - Scheme options - 游æˆè®¾å®š - - Game Modifiers 游æˆä¿®æ”¹ @@ -2412,78 +1896,6 @@ QLabel - Net nick - 网络游æˆæ˜µç§° - - - Server address - æœåŠ¡å™¨åœ°å€ - - - <div align="center"><h1>Hedgewars</h1><h3>Version 0.8</h3><p><a href="http://www.hedgewars.org/">http://www.hedgewars.org/</a></p><br>This program is distributed under the GNU General Public License</div> - <div align="center"><h1>刺猬大作战</h1><h3>0.8</h3><p><a href="http://www.hedgewars.org/">http://www.hedgewars.org/</a></p><br>This program is distributed under the GNU General Public License</div> - - - <h2>Developers:</h2><p>Andrey Korotaev &lt;<a href="mailto:unC0Rr@gmail.com">unC0Rr@gmail.com</a>&gt;<br>Igor Ulyanov &lt;<a href="mailto:iulyanov@gmail.com">iulyanov@gmail.com</a>&gt;</p><h2>Translations:</h2>english: Andrey Korotaev &lt;<a href="mailto:unC0Rr@gmail.com">unC0Rr@gmail.com</a>&gt;<br>russian: Andrey Korotaev &lt;<a href="mailto:unC0Rr@gmail.com">unC0Rr@gmail.com</a>&gt; - <h2>Developers:</h2><p>Andrey Korotaev &lt;<a href="mailto:unC0Rr@gmail.com">unC0Rr@gmail.com</a>&gt;<br>Igor Ulyanov &lt;<a href="mailto:iulyanov@gmail.com">iulyanov@gmail.com</a>&gt;</p><h2>Translations:</h2>english: Andrey Korotaev &lt;<a href="mailto:unC0Rr@gmail.com">unC0Rr@gmail.com</a>&gt;<br>russian: Andrey Korotaev &lt;<a href="mailto:unC0Rr@gmail.com">unC0Rr@gmail.com</a>&gt; - - - difficulty: - 难度: - - - <h3>Version 0.8</h3> - <h3>版本 0.8</h3> - - - This program is distributed under the GNU General Public License - This program is distributed under the GNU General Public License - - - <h2>Translations:</h2> - <h2>翻译:</h2> - - - <h2>Developers:</h2> - <h2>å¼€å‘者:</h2> - - - <h2>Translations:</h2><p> - <h2>翻译:</h2><p> - - - <h2>Special thanks:</h2><p> - <h2>特别感谢:</h2><p> - - - <h3>Version 0.8.1</h3> - <h3>版本 0.8.1</h3> - - - <h2></h2><p></p> - <h2></h2><p></p> - - - Turn time - 回åˆæ—¶é—´ - - - Initial health - åˆå§‹ç”Ÿå‘½å€¼ - - - <p>The best shot award was won by <b>%1</b> with <b>%2</b> pts.</p> - <p>射击冠军<b>%1</b> with <b>%2</b> .</p> - - - <p>A total of <b>%1</b> Hedgehog(s) were killed during this round.</p> - <p>阵亡<b>%1</b> </p> - - - <h3>Version 0.9</h3> - <h3>版本0.9</h3> - - Locale @@ -2566,19 +1978,11 @@ 武器 - <h3>Version 0.9.2</h3> - <h3>版本0.9.2</h3> - - Version 版本 - <p>The best shot award was won by <b>%1</b> with <b>%2</b> kills.</p> - <p>最佳射手<b>%1</b>å–得的战果 <b>%2</b></p> - - Sounds: 声音: @@ -2659,10 +2063,6 @@ - Case Probability - ç®±å­æŽ‰è½å‡ çŽ‡ - - Scheme Name: 设置å称: @@ -2681,36 +2081,36 @@ There are videos that are currently being processed. Exiting now will abort them. -Do yot really want to quit? - - - - +Do you really want to quit? + + + + Please provide either the YouTube account name or the email address associated with the Google Account. - + Account name (or email): - + Password: - + Video title: - + Video description: - + Tags (comma separated): @@ -2750,12 +2150,12 @@ - + 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! @@ -2798,7 +2198,7 @@ QLineEdit - + unnamed æ— å @@ -2817,14 +2217,6 @@ QMainWindow - -= by unC0Rr =- - -= by unC0Rr =- - - - Hedgewars - 刺猬大作战 - - Hedgewars %1 刺猬大作战 %1 @@ -2833,179 +2225,307 @@ QMessageBox - - - + Error 错误 - - Failed to open data directory: -%1 -Please check your installation - 打ä¸å¼€æ•°æ®æ–‡ä»¶ç›®å½•: -%1 -请检查 - - - - - Teams - é˜Ÿä¼ - - - - - Really delete this team? - - - - - - Schemes - - - - - Can not delete default scheme '%1'! - - - - - - - - Network - 网络 - - - + + Cannot use the ammo '%1'! + + + + + + Teams - Are you sure? + + + + + + Do you really want to delete the team '%1'? + + + + + + Cannot delete default scheme '%1'! + + + + + Please select a record from the list + + + + + Unable to start server + + + + Connection to server is lost æœåŠ¡å™¨è¿žæŽ¥ä¸¢å¤± - - All file associations have been set. - - - - + + Hedgewars - Error + + + + + + Hedgewars - Success + + + + + All file associations have been set + + + + + Successfully posted the issue on hedgewars.googlecode.com + + + + + + Error during authentication at google.com + + + + + Error reporting the issue, please try again later (or visit hedgewars.googlecode.com directly) + + + + File association failed. - - Fields required - - - - + Please fill out all fields - - Success - - - - - Successfully posted the issue on code.google.com! - - - - - - Error during authentication with www.google.com - - - - - Error creating the issue - - - - - - - Weapons - 武器 - - - - Can not overwrite default weapon set '%1'! - - - - - Can not delete default weapon set '%1'! - - - - Can not delete default weapon set - ä¸èƒ½åˆ é™¤é»˜è®¤æ­¦å™¨è®¾å®š - - - - Really delete this weapon set? - 真的删除这个武器设定å—? - - - Can not edit default weapon set - ä¸èƒ½æ›´æ”¹é»˜è®¤çš„武器设定 - - - + Error while authenticating at google.com: - + Login or password is incorrect - + + + Video upload - Error + + + + Error while sending metadata to youtube.com: - - Really delete this game scheme? + + + Main - Error + + + + + Cannot create directory %1 + + + + + Failed to open data directory: +%1 + +Please check your installation! + + + + + + TCP - Error + + + + + Unable to start the server: %1. + + + + + Unable to run engine at + + + + + Error code: %1 + + + + + + Netgame - Error + + + + + Please select a server from the list + + + + + + Please enter room name + + + + + + + + Record Play - Error + + + + + + Please select record from the list + + + + + Cannot rename to + + + + + Cannot delete file + + + + + + Room Name - Error + + + + + Please select room from the list + + + + + Room Name - Are you sure? + + + + + The game you are trying to join has started. +Do you still want to join the room? + + + + + Schemes - Warning + + + + + Schemes - Are you sure? + + + + + Do you really want to delete the game scheme '%1'? + + + + + + + Videos - Are you sure? + + + + + Do you really want to delete the video '%1'? + + + + + Do you really want to remove %1 file(s)? + + + + + + + Do you really want to cancel uploading %1? + + + + + + File error + + + + + Cannot open '%1' for writing + + + + + Cannot open '%1' for reading + + + + + + Weapons - Warning + + + + + Cannot overwrite default weapon set '%1'! + + + + + Cannot delete default weapon set '%1'! + + + + + Weapons - Are you sure? + + + + + Do you really want to delete the weapon set '%1'? QObject - - Error - 错误 - - - - Cannot create directory %1 - 无法创建路径 %1 - - - Quit - 退出 - - - - OK - 确认 - - - + Nickname - + Please enter your nickname @@ -3013,83 +2533,23 @@ QPushButton - Single Player - å•äººæ¸¸æˆ - - - Multiplayer - å¤šäººæ¸¸æˆ - - - Net game - ç½‘ç»œæ¸¸æˆ - - - Demos - Demo - - - + Setup 设置 - Exit - 退出 - - - Back - 返回 - - - Simple Game - 简å•æ¸¸æˆ - - - Discard - 中止 - - - Save - ä¿å­˜ - - Play demo 播放 demo - New team - æ–°é˜Ÿä¼ - - - Edit team - ç¼–è¾‘é˜Ÿä¼ - - Connect 连接 - Disconnect - 失去连接 - - - Join - 加入 - - - Create - 创建 - - - Add Team - æ·»åŠ é˜Ÿä¼ - - Go! @@ -3101,10 +2561,6 @@ 开始 - About - 关于 - - Start server 开始æœåŠ¡ç«¯ @@ -3115,23 +2571,11 @@ æ›´æ–° - Waiting - 等待中 - - Load è¯»å– - Weapons scheme - 武器设定 - - - Training - 训练 - - Specify 指定 @@ -3166,11 +2610,7 @@ 删除 - Join official server - 加入官方æœåŠ¡å™¨ - - - + Ready 准备好了 @@ -3216,46 +2656,12 @@ - + more - QTableWidget - - Room name - 房间å称 - - - Players number - çŽ©å®¶æ•°é‡ - - - Round in progress - 回åˆæ•° - - - - QToolBox - - Actions - 行动 - - - Weapons - 武器 - - - Weapon properties - 武器选项 - - - Other - 其他 - - - RoomsListModel @@ -3336,38 +2742,19 @@ - - + + new æ–° - - + + copy of - TCPBase - - - - Error - 错误 - - - - Unable to start the server: %1. - 无法开始æœåŠ¡ç«¯: %1. - - - - Unable to run engine: %1 ( - 无法è¿è¡Œå¼•æ“Ž: %1 ( - - - ToggleButtonWidget @@ -3494,10 +2881,6 @@ Add Bottom Border - - Add Mines - 布置地雷 - binds @@ -3526,10 +2909,6 @@ 下 - jump - è·³ - - attack 攻击 @@ -4233,115 +3612,4 @@ - - teams - - Hedgehogs - 刺猬 - - - hedgehog 1 - 刺猬 1å· - - - hedgehog 2 - 刺猬 2å· - - - hedgehog 3 - 刺猬 3å· - - - hedgehog 4 - 刺猬 4å· - - - hedgehog 5 - 刺猬 5å· - - - hedgehog 6 - 刺猬 6å· - - - hedgehog 7 - 刺猬 7å· - - - hedgehog 8 - 刺猬 8å· - - - Goddess - 女神 - - - Isis - è‰¾å¸Œä¸ - - - Astarte - 阿斯德尔特 - - - Diana - 黛安娜 - - - Aphrodite - 阿弗罗狄特 - - - Hecate - 赫å¡ç‰¹ - - - Demeter - 得墨忒耳 - - - Kali - 迦梨 - - - Inanna - 維ç´æ–¯ - - - Fruits - æ°´æžœ - - - Banana - 香蕉 - - - Apple - 苹果 - - - Orange - æ©™å­ - - - Lemon - 柠檬 - - - Pineapple - è è - - - Mango - 芒果 - - - Peach - æ¡ƒå­ - - - Plum - æ¢…å­ - - diff -r 3331b30e4ef1 -r 88fde28bbda6 share/hedgewars/Data/Locale/hedgewars_zh_TW.ts --- a/share/hedgewars/Data/Locale/hedgewars_zh_TW.ts Sun Oct 21 01:28:33 2012 +0400 +++ b/share/hedgewars/Data/Locale/hedgewars_zh_TW.ts Sat Nov 03 00:34:35 2012 +0400 @@ -20,21 +20,6 @@ - DrawMapWidget - - File error - - - - Cannot open file '%1' for writing - - - - Cannot read file '%1' - - - - FreqSpinBox Never @@ -54,14 +39,6 @@ 改變武器設置 - Error - 錯誤 - - - Illegal ammo scheme - 無法使用此彈藥設置 - - Edit schemes 修改éŠæˆ²è¨­ç½® @@ -77,7 +54,7 @@ HWAskQuitDialog - Do yot really want to quit? + Do you really want to quit? @@ -131,30 +108,10 @@ HWForm - Error - 錯誤 - - - OK - ç¢ºèª - - Cannot save record to file %1 無法錄入檔 %1 - Unable to start the server - é–‹å•Ÿæœå‹™ç«¯å‡ºç¾éŒ¯èª¤ - - - new - æ–° - - - Please select record from the list above - è«‹é¸æ“‡ä¸€å€‹è¨˜éŒ„ - - DefaultTeam @@ -181,10 +138,6 @@ - Password - 密碼 - - Your nickname %1 is registered on Hedgewars.org Please provide your password below @@ -200,16 +153,14 @@ 匿稱 - Some one already uses - your nickname %1 -on the server. + No nickname supplied. + + + + Someone already uses your nickname %1 on the server. Please pick another nickname: - - No nickname supplied. - - HWGame @@ -335,20 +286,6 @@ 被踢出 - Password - 密碼 - - - Your nickname %1 is -registered on Hedgewars.org -Please provide your password -or pick another nickname: - 您的匿稱%1 -在Hedgewars.org已註冊 -請輸入您的密碼 -或é¸æ“‡å¦ä¸€å€‹åŒ¿ç¨±ï¼š - - %1 *** %2 has joined the room %1***%2已經進入房間 @@ -365,10 +302,6 @@ %1***%2已經離開 - Nickname - 匿稱 - - User quit @@ -429,14 +362,6 @@ PageAdmin - Server message: - 伺æœå™¨è³‡è¨Šï¼š - - - Set message - è¨­å®šä¿¡æ¯ - - Clear Accounts Cache 清空帳戶緩存 @@ -471,10 +396,6 @@ Connecting... 連接中... - - Cancel - å–消 - PageDrawMap @@ -529,22 +450,6 @@ PageGameStats - <p>The best shot award was won by <b>%1</b> with <b>%2</b> pts.</p> - <p>最佳射手是<b>%1</b>。傷害 <b>%2</b>點。</p> - - - <p>The best killer is <b>%1</b> with <b>%2</b> kills in a turn.</p> - - <p>最佳殺手是<b>%1</b>å•å›žåˆæ“Šæ®ºåˆºèŸæ•¸<b>%2</b></p> - - - - <p>A total of <b>%1</b> hedgehog(s) were killed during this round.</p> - - <p>本輪總共有<b>%1</b>åªåˆºèŸè¢«æ“Šæ®º</p> - - - Details @@ -614,14 +519,6 @@ 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 @@ -919,35 +816,12 @@ - PageNet - - Error - 錯誤 - - - Please select server from the list above - è«‹é¸æ“‡ä¸€å€‹ä¼ºæœå™¨ - - - PageNetGame Control æˆ¿é–“ç®¡ç† - Error - 錯誤 - - - Please enter room name - è«‹éµå…¥æˆ¿é–“å - - - OK - - - DLC @@ -1065,14 +939,6 @@ PagePlayDemo - Error - 錯誤 - - - OK - ç¢ºèª - - Rename dialog é‡å‘½åå°è©±æ–¹å¡Š @@ -1080,18 +946,6 @@ Enter new file name: 輸入新的檔案å: - - Cannot rename to - ä¸èƒ½æ”¹è®Šåå­— - - - Cannot delete file - ä¸èƒ½åˆªé™¤æª” - - - Please select record from the list - 請從清單é¸æ“‡è¨˜éŒ„ - PageRoomsList @@ -1104,18 +958,6 @@ 加入 - Refresh - 刷新 - - - Error - 錯誤 - - - OK - ç¢ºèª - - Admin features 管ç†å“¡åŠŸèƒ½ @@ -1124,58 +966,6 @@ 房間å: - 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個用戶端連接到這個房間。 - - - - There are %1 teams participating in this room. - - 有%1個隊ä¼åŠ å…¥é€™å€‹æˆ¿é–“。 - - - - Please enter room name - è«‹éµå…¥æˆ¿é–“å - - - Please select room from the list - 請從列表é¸ä¸­æˆ¿é–“ - - Rules: @@ -1191,15 +981,6 @@ Clear 清除 - - Warning - - - - The game you are trying to join has started. -Do you still want to join the room? - - %1 players online @@ -1218,10 +999,6 @@ 刪除 - Enable random mines - 開啟隨機地雷 - - Gain 80% of the damage you do back in health 傷害的80%變æˆè‡ªèº«åŠ›é‡ @@ -1254,10 +1031,6 @@ 地é¢ç„¡æ³•ç ´å£žï¼ - Add an indestructable border around the terrain - 添加ä¸å¯æ¯€å£žåœ°é‚Šç•Œ - - Lower gravity 低é‡åŠ› @@ -1360,26 +1133,6 @@ PageSinglePlayer - Simple Game (a quick game against the computer, settings are chosen for you) - 快速éŠæˆ² (å°æŠ—電腦,固定設置) - - - Multiplayer (play a hotseat game against your friends, or AI teams) - 多人éŠæˆ² (熱åå°æŠ—朋å‹æˆ–AI) - - - Training Mode (Practice your skills in a range of training missions). IN DEVELOPMENT - è¨“ç·´æ¨¡å¼ (一系列訓練任務)。開發中 - - - Demos (Watch recorded demos) - Demo (觀看記錄的Demo) - - - Load (Load a previously saved game) - è®€å– (讀å–之å‰ä¿å­˜çš„éŠæˆ²) - - Simple Game @@ -1472,20 +1225,6 @@ - Are you sure? - - - - Do you really want do remove %1? - - - - Do you really want do remove %1 file(s)? - - - - - encoding @@ -1493,10 +1232,6 @@ uploading - - Do you really want do cancel uploading %1? - - QAction @@ -1584,10 +1319,6 @@ 啟動時檢查程å¼å‡ç´š - Reduced quality - é™ä½Žé¡¯ç¤ºæ•ˆæžœ - - Show ammo menu tooltips 顯示武器æç¤ºè¨Šæ¯ @@ -1667,10 +1398,6 @@ - Default - é»˜èª - - hand drawn map... @@ -1770,10 +1497,6 @@ 網路éŠæˆ² - Weapons - 武器 - - Game Modifiers éŠæˆ²ä¿®æ”¹ @@ -1821,14 +1544,6 @@ QLabel - Net nick - 網路éŠæˆ²æ˜µç¨± - - - This program is distributed under the GNU General Public License - This program is distributed under the GNU General Public License - - Resolution 解æžåº¦ @@ -1997,10 +1712,6 @@ - Password - 密碼 - - % Get Away Time @@ -2011,7 +1722,7 @@ There are videos that are currently being processed. Exiting now will abort them. -Do yot really want to quit? +Do you really want to quit? @@ -2100,98 +1811,18 @@ 錯誤 - Network - 網路 - - Connection to server is lost 伺æœå™¨é€£æŽ¥ä¸Ÿå¤± - Weapons - 武器 - - - Can not delete default weapon set - ä¸èƒ½åˆªé™¤é»˜èªæ­¦å™¨è¨­å®š - - - Really delete this weapon set? - 真的刪除這個武器設定嗎? - - - Can not edit default weapon set - ä¸èƒ½æ›´æ”¹é»˜èªçš„武器設定 - - - Failed to open data directory: -%1 -Please check your installation - 打ä¸é–‹è³‡æ–™æª”案目錄: -%1 -請檢查 - - - Can not overwrite default weapon set '%1'! - - - - All file associations have been set. - - - File association failed. - Teams - éšŠä¼ - - - Really delete this team? - - - - Schemes - - - - Can not delete default scheme '%1'! - - - - Really delete this game scheme? - - - - Can not delete default weapon set '%1'! - - - - Fields required - - - Please fill out all fields - Success - - - - Successfully posted the issue on code.google.com! - - - - Error during authentication with www.google.com - - - - Error creating the issue - - - Error while authenticating at google.com: @@ -2205,22 +1836,200 @@ + + Teams - Are you sure? + + + + Do you really want to delete the team '%1'? + + + + Cannot delete default scheme '%1'! + + + + Please select a record from the list + + + + Unable to start server + + + + Hedgewars - Error + + + + Hedgewars - Success + + + + All file associations have been set + + + + Successfully posted the issue on hedgewars.googlecode.com + + + + Error during authentication at google.com + + + + Error reporting the issue, please try again later (or visit hedgewars.googlecode.com directly) + + + + Main - Error + + + + Cannot create directory %1 + 無法創建路徑 %1 + + + Failed to open data directory: +%1 + +Please check your installation! + + + + TCP - Error + + + + Unable to start the server: %1. + 無法開始æœå‹™ç«¯: %1. + + + Unable to run engine at + + + + Error code: %1 + + + + Video upload - Error + + + + Netgame - Error + + + + Please select a server from the list + + + + Please enter room name + è«‹éµå…¥æˆ¿é–“å + + + Record Play - Error + + + + Please select record from the list + 請從清單é¸æ“‡è¨˜éŒ„ + + + Cannot rename to + + + + Cannot delete file + + + + Room Name - Error + + + + Please select room from the list + 請從列表é¸ä¸­æˆ¿é–“ + + + Room Name - Are you sure? + + + + The game you are trying to join has started. +Do you still want to join the room? + + + + Schemes - Warning + + + + Schemes - Are you sure? + + + + Do you really want to delete the game scheme '%1'? + + + + Videos - Are you sure? + + + + Do you really want to delete the video '%1'? + + + + Do you really want to remove %1 file(s)? + + + + + + Do you really want to cancel uploading %1? + + + + File error + + + + Cannot open '%1' for writing + + + + Cannot open '%1' for reading + + + + Cannot use the ammo '%1'! + + + + Weapons - Warning + + + + Cannot overwrite default weapon set '%1'! + + + + Cannot delete default weapon set '%1'! + + + + Weapons - Are you sure? + + + + Do you really want to delete the weapon set '%1'? + + QObject - Error - 錯誤 - - - Cannot create directory %1 - 無法創建路徑 %1 - - - OK - ç¢ºèª - - Nickname 匿稱 @@ -2329,37 +2138,6 @@ - QTableWidget - - Room Name - 房間å - - - C - 人數 - - - T - éšŠä¼ - - - Owner - 創建者 - - - Map - 地圖 - - - Rules - è¦å‰‡ - - - Weapons - 武器 - - - RoomsListModel In progress @@ -2434,21 +2212,6 @@ - TCPBase - - Error - 錯誤 - - - Unable to start the server: %1. - 無法開始æœå‹™ç«¯: %1. - - - Unable to run engine: %1 ( - 無法é‹è¡Œå¼•æ“Ž: %1 ( - - - ToggleButtonWidget Vampirism @@ -2491,10 +2254,6 @@ 刀æ§ä¸å…¥ - Add Mines - 佈置地雷 - - Random Order éš¨æ©Ÿé †åº diff -r 3331b30e4ef1 -r 88fde28bbda6 share/hedgewars/Data/Locale/it.lua --- a/share/hedgewars/Data/Locale/it.lua Sun Oct 21 01:28:33 2012 +0400 +++ b/share/hedgewars/Data/Locale/it.lua Sat Nov 03 00:34:35 2012 +0400 @@ -2,159 +2,642 @@ ["..."] = "...", [":("] = ":(", ["!!!"] = "!!!", +-- ["011101000"] = "", -- A_Classic_Fairytale:dragon +-- ["011101001"] = "", -- A_Classic_Fairytale:backstab, A_Classic_Fairytale:dragon, A_Classic_Fairytale:enemy, A_Classic_Fairytale:family, A_Classic_Fairytale:journey, A_Classic_Fairytale:queen, A_Classic_Fairytale:shadow, A_Classic_Fairytale:united +-- ["30 minutes later..."] = "", -- A_Classic_Fairytale:shadow +-- ["About a month ago, a cyborg came and told us that you're the cannibals!"] = "", -- A_Classic_Fairytale:enemy ["Accuracy Bonus!"] = "Bonus Precisione!", +-- ["Ace"] = "", -- User_Mission_-_RCPlane_Challenge, User_Mission_-_Rope_Knock_Challenge ["Achievement Unlocked"] = "Archivio Sbloccato", -- User_Mission_-_Bamboo_Thicket, User_Mission_-_That_Sinking_Feeling, Tumbler +-- ["A Classic Fairytale"] = "", -- A_Classic_Fairytale:first_blood +-- ["???"] = "", -- A_Classic_Fairytale:backstab +-- ["Actually, you aren't worthy of life! Take this..."] = "", -- A_Classic_Fairytale:shadow +-- ["A cy-what?"] = "", -- A_Classic_Fairytale:enemy +-- ["Adventurous"] = "", -- A_Classic_Fairytale:journey +-- ["Africa"] = "", -- Continental_supplies +-- ["After Leaks A Lot betrayed his tribe, he joined the cannibals..."] = "", -- A_Classic_Fairytale:first_blood +-- ["After the shock caused by the enemy spy, Leaks A Lot and Dense Cloud went hunting to relax."] = "", -- A_Classic_Fairytale:shadow +-- ["Again with the 'cannibals' thing!"] = "", -- A_Classic_Fairytale:enemy +-- ["a Hedgewars challenge"] = "", -- User_Mission_-_RCPlane_Challenge, User_Mission_-_Rope_Knock_Challenge ["a Hedgewars mini-game"] = "un mini-gioco di Hedgewars", -- Space_Invasion, The_Specialists ["Aiming Practice"] = "Pratica la tua mira", --Bazooka, Shotgun, SniperRifle - ["Ammo"] = "Munizioni", +-- ["A leap in a leap"] = "", -- A_Classic_Fairytale:first_blood +-- ["A little gift from the cyborgs"] = "", -- A_Classic_Fairytale:shadow +-- ["All gone...everything!"] = "", -- A_Classic_Fairytale:enemy +-- ["All right, we just need to get to the other side of the island!"] = "", -- A_Classic_Fairytale:journey +-- ["All walls touched!"] = "", -- WxW ["Ammo Depleted!"] = "Munizioni scarse!", ["ammo extended!"] = "Munizioni aggiuntive!", ["Ammo is reset at the end of your turn."] = "Le munizioni si azzeranno alla fine del tuo turno", ["Ammo Maniac!"] = "Maniaco delle munizioni!", + ["Ammo"] = "Munizioni", +-- ["And how am I alive?!"] = "", -- A_Classic_Fairytale:enemy +-- ["And so happenned that Leaks A Lot failed to complete the challenge! He landed, pressured by shame..."] = "", -- A_Classic_Fairytale:first_blood +-- ["And so it began..."] = "", -- A_Classic_Fairytale:first_blood +-- ["...and so the cyborgs took over the world..."] = "", -- A_Classic_Fairytale:shadow +-- ["And so they discovered that cyborgs weren't invulnerable..."] = "", -- A_Classic_Fairytale:journey +-- ["And where's all the weed?"] = "", -- A_Classic_Fairytale:dragon +-- ["And you believed me? Oh, god, that's cute!"] = "", -- A_Classic_Fairytale:journey +-- ["Anno 1032: [The explosion will make a strong push ~ wide range, wont affect hogs close to the target]"] = "", -- Continental_supplies +-- ["Antarctica"] = "", -- Continental_supplies +-- ["Are we there yet?"] = "", -- A_Classic_Fairytale:shadow +-- ["Are you accusing me of something?"] = "", -- A_Classic_Fairytale:backstab +-- ["Are you saying that many of us have died for your entertainment?"] = "", -- A_Classic_Fairytale:enemy +-- ["Artur Detour"] = "", -- A_Classic_Fairytale:queen +-- ["As a reward for your performance, here's some new technology!"] = "", -- A_Classic_Fairytale:dragon +-- ["a shoppa minigame"] = "", -- WxW +-- ["Asia"] = "", -- Continental_supplies +-- ["Assault Team"] = "", -- A_Classic_Fairytale:backstab +-- ["As the ammo is sparse, you might want to reuse ropes while mid-air.|"] = "", -- A_Classic_Fairytale:dragon +-- ["As the challenge was completed, Leaks A Lot set foot on the ground..."] = "", -- A_Classic_Fairytale:first_blood +-- ["As you can see, there is no way to get on the other side!"] = "", -- A_Classic_Fairytale:dragon +-- ["Attack From Rope"] = "", -- WxW +-- ["Australia"] = "", -- Continental_supplies ["Available points remaining: "] = "Punti disponibili rimasti: ", +-- ["Back Breaker"] = "", -- A_Classic_Fairytale:backstab +-- ["Back in the village, after telling the villagers about the threat..."] = "", -- A_Classic_Fairytale:united ["[Backspace]"] = "[Cancella]", +-- ["Backstab"] = "", -- A_Classic_Fairytale:backstab +-- ["Bad Team"] = "", -- User_Mission_-_The_Great_Escape ["Bamboo Thicket"] = "Boschetto di Bambu'", ["Barrel Eater!"] = "Mangiatore di Barili!", ["Barrel Launcher"] = "Lanciatore di Barili", +-- ["Baseballbat"] = "", -- Continental_supplies ["Bat balls at your enemies and|push them into the sea!"] = "Lancia delle palline ai tuoi nemici|e spingili in acqua!", ["Bat your opponents through the|baskets and out of the map!"] = "Manda (colpendoli) i tuoi nemici|in acqua attraverso i canestri laterali!", ["Bazooka Training"] = "Addestramento sull'utilizzo del Bazooka", +-- ["Beep Loopers"] = "", -- A_Classic_Fairytale:queen ["Best laps per team: "] = "Tempo migliore per squadra: ", ["Best Team Times: "] = "Tempi della squadra migliore: ", +-- ["Beware, though! If you are slow, you die!"] = "", -- A_Classic_Fairytale:dragon +-- ["Biomechanic Team"] = "", -- A_Classic_Fairytale:family +-- ["Blender"] = "", -- A_Classic_Fairytale:family +-- ["Bloodpie"] = "", -- A_Classic_Fairytale:backstab +-- ["Bloodrocutor"] = "", -- A_Classic_Fairytale:shadow +-- ["Bloodsucker"] = "", -- A_Classic_Fairytale:shadow ["Bloody Rookies"] = "Reclute Sanguinose", -- 01#Boot_Camp, User_Mission_-_Dangerous_Ducklings, User_Mission_-_Diver, User_Mission_-_Spooky_Tree +-- ["Bone Jackson"] = "", -- A_Classic_Fairytale:backstab +-- ["Bonely"] = "", -- A_Classic_Fairytale:shadow + ["Boom!"] = "Kaboom!", ["BOOM!"] = "KABOOM!", - ["Boom!"] = "Kaboom!", ["Boss defeated!"] = "Boss sconfitto!", ["Boss Slayer!"] = "Boss Uccisore!", +-- ["Brain Blower"] = "", -- A_Classic_Fairytale:journey +-- ["Brainiac"] = "", -- A_Classic_Fairytale:epil, A_Classic_Fairytale:first_blood, A_Classic_Fairytale:shadow +-- ["Brainila"] = "", -- A_Classic_Fairytale:united +-- ["Brain Stu"] = "", -- A_Classic_Fairytale:united +-- ["Brain Teaser"] = "", -- A_Classic_Fairytale:backstab +-- ["Brutal Lily"] = "", -- A_Classic_Fairytale:enemy, A_Classic_Fairytale:epil +-- ["Brutus"] = "", -- A_Classic_Fairytale:backstab ["Build a track and race."] = "Costruisci una pista e corri.", +-- ["Bullseye"] = "", -- A_Classic_Fairytale:dragon +-- ["But it proved to be no easy task!"] = "", -- A_Classic_Fairytale:dragon +-- ["But that's impossible!"] = "", -- A_Classic_Fairytale:backstab +-- ["But the ones alive are stronger in their heart!"] = "", -- A_Classic_Fairytale:enemy +-- ["But...we died!"] = "", -- A_Classic_Fairytale:backstab +-- ["But where can we go?"] = "", -- A_Classic_Fairytale:united +-- ["But why would they help us?"] = "", -- A_Classic_Fairytale:backstab +-- ["But you're cannibals. It's what you do."] = "", -- A_Classic_Fairytale:enemy +-- ["But you said you'd let her go!"] = "", -- A_Classic_Fairytale:journey +-- ["Call me Beep! Well, 'cause I'm such a nice...person!"] = "", -- A_Classic_Fairytale:family +-- ["Cannibals"] = "", -- A_Classic_Fairytale:enemy, A_Classic_Fairytale:epil, A_Classic_Fairytale:first_blood +-- ["Cannibal Sentry"] = "", -- A_Classic_Fairytale:journey +-- ["Cannibals?! You're the cannibals!"] = "", -- A_Classic_Fairytale:enemy ["CAPTURE THE FLAG"] = "Cattura la Bandiera", ["Careless"] = "Incauto", +-- ["Carol"] = "", -- A_Classic_Fairytale:family +-- ["CHALLENGE COMPLETE"] = "", -- User_Mission_-_RCPlane_Challenge ["Change Weapon"] = "Cambia Arma", +-- ["Choose your side! If you want to join the strange man, walk up to him.|Otherwise, walk away from him. If you decide to att...nevermind..."] = "", -- A_Classic_Fairytale:shadow ["Clumsy"] = "Goffo", +-- ["Cluster Bomb MASTER!"] = "", -- Basic_Training_-_Cluster_Bomb +-- ["Cluster Bomb Training"] = "", -- Basic_Training_-_Cluster_Bomb ["Codename: Teamwork"] = "Nome in Codice: Lavoro di Squadra", +-- ["Collateral Damage"] = "", -- A_Classic_Fairytale:journey +-- ["Collateral Damage II"] = "", -- A_Classic_Fairytale:journey +-- ["Collect all the crates, but remember, our time in this life is limited!"] = "", -- A_Classic_Fairytale:first_blood +-- ["Collect or destroy all the health crates."] = "", -- User_Mission_-_RCPlane_Challenge +-- ["Collect the crate on the right.|Hint: Select the rope, [Up] or [Down] to aim, [Space] to fire, directional keys to move.|Ropes can be fired again in the air!"] = "", -- A_Classic_Fairytale:first_blood +-- ["Collect the crates within the time limit!|If you fail, you'll have to try again."] = "", -- A_Classic_Fairytale:first_blood +-- ["Come closer, so that your training may continue!"] = "", -- A_Classic_Fairytale:first_blood +-- ["Compete to use as few planes as possible!"] = "", -- User_Mission_-_RCPlane_Challenge ["Complete the track as fast as you can!"] = "Completa la pista più veloce che puoi!", +-- ["COMPLETION TIME"] = "", -- User_Mission_-_Rope_Knock_Challenge +-- ["Configuration accepted."] = "", -- WxW +-- ["Congratulations"] = "", -- Basic_Training_-_Rope ["Congratulations!"] = "Complimenti!", +-- ["Congratulations! You needed only half of time|to eliminate all targets."] = "", -- Basic_Training_-_Cluster_Bomb +-- ["Congratulations! You've completed the Rope tutorial! |- Tutorial ends in 10 seconds!"] = "", -- Basic_Training_-_Rope ["Congratulations! You've eliminated all targets|within the allowed time frame."] = "Complimenti! Hai distrutto tutti gli obiettivi|entro il tempo previsto.", --Bazooka, Shotgun, SniperRifle +-- ["Continental supplies"] = "", -- Continental_supplies ["Control pillars to score points."] = "Ottieni il controllo dei pilastri per guadagnare punti.", +-- ["Corporationals"] = "", -- A_Classic_Fairytale:queen +-- ["Corpsemonger"] = "", -- A_Classic_Fairytale:shadow +-- ["Corpse Thrower"] = "", -- A_Classic_Fairytale:epil +-- ["Crates Left:"] = "", -- User_Mission_-_RCPlane_Challenge ["Cybernetic Empire"] = "Impero Cibernetico", +-- ["Cyborg. It's what the aliens call themselves."] = "", -- A_Classic_Fairytale:enemy +-- ["Dahmer"] = "", -- A_Classic_Fairytale:backstab + ["DAMMIT, ROOKIE!"] = "ACCIDENTI, RECLUTA!", ["DAMMIT, ROOKIE! GET OFF MY HEAD!"] = "MALEDIZIONE, RECLUTA! VIA DALLA MIA TESTA!", - ["DAMMIT, ROOKIE!"] = "ACCIDENTI, RECLUTA!", ["Dangerous Ducklings"] = "Anatroccoli Pericolosi", ["Deadweight"] = "Peso morto", +-- ["Defeat the cannibals"] = "", -- A_Classic_Fairytale:backstab +-- ["Defeat the cannibals!|"] = "", -- A_Classic_Fairytale:united +-- ["Defeat the cannibals!|Grenade hint: set the timer with [1-5], aim with [Up]/[Down] and hold [Space] to set power"] = "", -- A_Classic_Fairytale:shadow +-- ["Defeat the cyborgs!"] = "", -- A_Classic_Fairytale:enemy +-- ["Defend yourself!|Hint: You can get tips on using weapons by moving your mouse over them in the weapon selection menu"] = "", -- A_Classic_Fairytale:shadow ["Demolition is fun!"] = "Demolire è divertente!", +-- ["Dense Cloud"] = "", -- A_Classic_Fairytale:backstab, A_Classic_Fairytale:dragon, A_Classic_Fairytale:enemy, A_Classic_Fairytale:epil, A_Classic_Fairytale:family, A_Classic_Fairytale:journey, A_Classic_Fairytale:queen, A_Classic_Fairytale:shadow, A_Classic_Fairytale:united +-- ["Dense Cloud must have already told them everything..."] = "", -- A_Classic_Fairytale:shadow ["Depleted Kamikaze!"] = "Kamikaze Esaurito!", +-- ["Destroy him, Leaks A Lot! He is responsible for the deaths of many of us!"] = "", -- A_Classic_Fairytale:first_blood ["Destroy invaders to score points."] = "Distruggi gli invasori per guadagnare dei punti.", +-- ["Destroy the targets!|Hint: Select the Shoryuken and hit [Space]|P.S. You can use it mid-air."] = "", -- A_Classic_Fairytale:first_blood +-- ["Destroy the targets!|Hint: [Up], [Down] to aim, [Space] to shoot"] = "", -- A_Classic_Fairytale:first_blood +-- ["Did anyone follow you?"] = "", -- A_Classic_Fairytale:united +-- ["Did you see him coming?"] = "", -- A_Classic_Fairytale:shadow +-- ["Did you warn the village?"] = "", -- A_Classic_Fairytale:shadow +-- ["Die, die, die!"] = "", -- A_Classic_Fairytale:dragon +-- ["Disguise as a Rockhopper Penguin: [Swap place with a random enemy hog in the circle]"] = "", -- Continental_supplies +-- ["Dist: "] = "", -- Space_Invasion +-- ["Do not laugh, inexperienced one, for he speaks the truth!"] = "", -- A_Classic_Fairytale:backstab +-- ["Do not let his words fool you, young one! He will stab you in the back as soon as you turn away!"] = "", -- A_Classic_Fairytale:first_blood +-- ["Do the deed"] = "", -- A_Classic_Fairytale:first_blood ["Double Kill!"] = "Doppia Uccisione!", +-- ["DOUBLE KILL"] = "", -- Mutant +-- ["Do you have any idea how valuable grass is?"] = "", -- A_Classic_Fairytale:enemy +-- ["Do you think you're some kind of god?"] = "", -- A_Classic_Fairytale:enemy +-- ["Dragon's Lair"] = "", -- A_Classic_Fairytale:dragon +-- ["Drills"] = "", -- A_Classic_Fairytale:backstab ["Drone Hunter!"] = "Cacciatore di Droni!", +-- ["Drop a bomb: [drop some heroic wind that will turn into a bomb on impact]"] = "", -- Continental_supplies ["Drowner"] = "Affogato", +-- ["Dude, all the plants are gone!"] = "", -- A_Classic_Fairytale:family +-- ["Dude, can you see Ramon and Spiky?"] = "", -- A_Classic_Fairytale:journey +-- ["Dude, that's so cool!"] = "", -- A_Classic_Fairytale:backstab +-- ["Dude, we really need a new shaman..."] = "", -- A_Classic_Fairytale:shadow +-- ["Dude, what's this place?!"] = "", -- A_Classic_Fairytale:dragon +-- ["Dude, where are we?"] = "", -- A_Classic_Fairytale:backstab +-- ["Dude, wow! I just had the weirdest high!"] = "", -- A_Classic_Fairytale:backstab +-- ["Duration"] = "", -- Continental_supplies +-- ["Dust storm: [Deals 20 damage to all enemies in the circle]"] = "", -- Continental_supplies ["Each turn you get 1-3 random weapons"] = "In ogni turno hai da 1 a 3 armi casuali", ["Each turn you get one random weapon"] = "In ogno turno hai una sola arma casuale", +-- ["Eagle Eye"] = "", -- A_Classic_Fairytale:backstab +-- ["Eagle Eye: [Blink to the impact ~ one shot]"] = "", -- Continental_supplies +-- ["Ear Sniffer"] = "", -- A_Classic_Fairytale:backstab, A_Classic_Fairytale:epil +-- ["Elderbot"] = "", -- A_Classic_Fairytale:family +-- ["Elimate your captor."] = "", -- User_Mission_-_The_Great_Escape ["Eliminate all enemies"] = "Elimina tutti i nemici", ["Eliminate all targets before your time runs out.|You have unlimited ammo for this mission."] = "Distruggi tutti gli obiettivi entro il tempo previsto.|Hai armi illimitate per questa missione.", --Bazooka, Shotgun, SniperRifle +-- ["Eliminate enemy hogs and take their weapons."] = "", -- Highlander ["Eliminate Poison before the time runs out"] = "Elimina Veleno prima che il tempo finisca", ["Eliminate the Blue Team"] = "Elimina la Squadra Blu", ["Eliminate the enemy before the time runs out"] = "Elimina il nemico prima che il tempo scada", -- User_Mission_-_Bamboo_Thicket, User_Mission_-_Newton_and_the_Hammock ["Eliminate the enemy hogs to win."] = "Elimina i ricci nemici per vincere.", ["Eliminate the enemy specialists."] = "Elimina tutti i nemici specialisti.", ["- Eliminate Unit 3378 |- Feeble Resistance must survive"] = "- Elimina l'Unità 3378 |- La Resistenza Finale deve sopravvivere", +-- ["Elmo"] = "", -- A_Classic_Fairytale:dragon, A_Classic_Fairytale:family, A_Classic_Fairytale:queen ["Energetic Engineer"] = "Ingegnere Energetico", ["Enjoy the swim..."] = "Spero che tu gradisca una nuotata...", ["[Enter]"] = "[Enter]", +-- ["Europe"] = "", -- Continental_supplies +-- [" ever done to you?!"] = "", -- A_Classic_Fairytale:backstab +-- ["Everyone knows this."] = "", -- A_Classic_Fairytale:enemy +-- ["Every single time!"] = "", -- A_Classic_Fairytale:dragon +-- ["Everything looks OK..."] = "", -- A_Classic_Fairytale:enemy +-- ["Exactly, man! That was my dream."] = "", -- A_Classic_Fairytale:backstab +-- ["Eye Chewer"] = "", -- A_Classic_Fairytale:journey +-- ["FAG"] = "", -- Mutant +-- ["Family Reunion"] = "", -- A_Classic_Fairytale:family ["Fastest lap: "] = "Giro migliore: ", ["Feeble Resistance"] = "Resistenza Finale", +-- ["Fell From Grace"] = "", -- A_Classic_Fairytale:backstab, A_Classic_Fairytale:dragon, A_Classic_Fairytale:enemy, A_Classic_Fairytale:epil, A_Classic_Fairytale:family, A_Classic_Fairytale:queen +-- ["Fell From Heaven"] = "", -- A_Classic_Fairytale:enemy, A_Classic_Fairytale:epil, A_Classic_Fairytale:family, A_Classic_Fairytale:first_blood, A_Classic_Fairytale:journey, A_Classic_Fairytale:queen +-- ["Fell From Heaven is the best! Fell From Heaven is the greatest!"] = "", -- A_Classic_Fairytale:family +-- ["Femur Lover"] = "", -- A_Classic_Fairytale:shadow +-- ["Fierce Competition!"] = "", -- Space_Invasion +-- ["Fiery Water"] = "", -- A_Classic_Fairytale:backstab, A_Classic_Fairytale:dragon, A_Classic_Fairytale:enemy, A_Classic_Fairytale:epil, A_Classic_Fairytale:family, A_Classic_Fairytale:queen, A_Classic_Fairytale:united +-- ["Find your tribe!|Cross the lake!"] = "", -- A_Classic_Fairytale:dragon +-- ["Finish your training|Hint: Animations can be skipped with the [Precise] key."] = "", -- A_Classic_Fairytale:first_blood +-- ["Fire a mine: [Does what it says ~ Cant be dropped close to an enemy ~ 1 sec]"] = "", -- Continental_supplies ["Fire"] = "Fuoco", +-- ["First aid kits?!"] = "", -- A_Classic_Fairytale:united +-- ["First Blood"] = "", -- A_Classic_Fairytale:first_blood +-- ["FIRST BLOOD MUTATES"] = "", -- Mutant +-- ["First Steps"] = "", -- A_Classic_Fairytale:first_blood ["Flag captured!"] = "Bandiera catturata!", ["Flag respawned!"] = "Bandiera restituita!", ["Flag returned!"] = "Bandiera recuperata!", ["Flags, and their home base will be placed where each team ends their first turn."] = "Le bandiere saranno piazzate nel luogo in cui le squadre finiscono il loro primo turno.", ["Flamer"] = "Incendiario", +-- ["Flaming Worm"] = "", -- A_Classic_Fairytale:backstab +-- ["Flare: [fire up some bombs depending on hogs depending on hogs in the circle"] = "", -- Continental_supplies +-- ["Flesh for Brainz"] = "", -- A_Classic_Fairytale:journey +-- ["For improved features/stability, play 0.9.18+"] = "", -- WxW +-- ["Free Dense Cloud and continue the mission!"] = "", -- A_Classic_Fairytale:journey ["Friendly Fire!"] = "Fuoco Amico!", ["fuel extended!"] = "carburante aggiuntivo!", ["GAME BEGUN!!!"] = "IL GIOCO E' INIZIATO!!!", ["Game Modifiers: "] = "Modificatori di Gioco: ", ["GAME OVER!"] = "GAME OVER!", ["Game Started!"] = "Gioco Iniziato!", +-- ["Game? Was this a game to you?!"] = "", -- A_Classic_Fairytale:enemy +-- ["GasBomb"] = "", -- Continental_supplies +-- ["Gas Gargler"] = "", -- A_Classic_Fairytale:queen +-- ["Get Dense Cloud out of the pit!"] = "", -- A_Classic_Fairytale:journey ["Get on over there and take him out!"] = "Vai fuori da qui ed eliminalo!", +-- ["Get on the head of the mole"] = "", -- A_Classic_Fairytale:first_blood +-- ["Get out of there!"] = "", -- User_Mission_-_The_Great_Escape +-- ["Get that crate!"] = "", -- A_Classic_Fairytale:first_blood +-- ["Get the crate on the other side of the island!|"] = "", -- A_Classic_Fairytale:journey +-- ["Get to the target using your rope! |Controls: Left & Right to swing the rope - Up & Down to Contract and Expand!"] = "", -- Basic_Training_-_Rope +-- ["Get your teammates out of their natural prison and save the princess!|Hint: Drilling holes should solve everything.|Hint: It might be a good idea to place a girder before starting to drill. Just saying.|Hint: All your hedgehogs need to be above the marked height!|Hint: Leaks A Lot needs to get really close to the princess!"] = "", -- A_Classic_Fairytale:family +-- ["GG!"] = "", -- User_Mission_-_Rope_Knock_Challenge +-- ["Gimme Bones"] = "", -- A_Classic_Fairytale:backstab +-- ["Glark"] = "", -- A_Classic_Fairytale:shadow ["Goal"] = "Goal", ["GO! GO! GO!"] = "VAI! VAI! VAI!", ["Good birdy......"] = "Bell'uccellino......", +-- ["Good Dude"] = "", -- User_Mission_-_The_Great_Escape +-- ["Good idea, they'll never find us there!"] = "", -- A_Classic_Fairytale:united +-- ["Good luck...or else!"] = "", -- A_Classic_Fairytale:journey ["Good luck out there!"] = "Buona fortuna!", ["Good so far!"] = "Molto bene finora!", ["Good to go!"] = "Vai!!", +-- ["Go on top of the flower"] = "", -- A_Classic_Fairytale:first_blood +-- ["Go, quick!"] = "", -- A_Classic_Fairytale:backstab +-- ["Gorkij"] = "", -- A_Classic_Fairytale:journey +-- ["Go surf!"] = "", -- WxW ["GOTCHA!"] = "COLPITO!!", ["Grab Mines/Explosives"] = "Afferra Mine/Esplosivi", +-- ["Great choice, Steve! Mind if I call you that?"] = "", -- A_Classic_Fairytale:shadow +-- ["Great work! Now hit it with your Baseball Bat! |Tip: You can change weapon with 'Right Click'!"] = "", -- Basic_Training_-_Rope +-- ["Great! You will be contacted soon for assistance."] = "", -- A_Classic_Fairytale:shadow +-- ["Green lipstick bullet: [Is poisonous]"] = "", -- Continental_supplies +-- ["Greetings, "] = "", -- A_Classic_Fairytale:dragon +-- ["Greetings, cloudy one!"] = "", -- A_Classic_Fairytale:shadow +-- ["Grenade Training"] = "", -- Basic_Training_-_Grenade +-- ["Grenadiers"] = "", -- Basic_Training_-_Grenade +-- ["Guys, do you think there's more of them?"] = "", -- A_Classic_Fairytale:backstab +-- ["HAHA!"] = "", -- A_Classic_Fairytale:enemy +-- ["Haha!"] = "", -- A_Classic_Fairytale:united ["Hahahaha!"] = "Hahahaha!", ["Haha, now THAT would be something!"] = "Haha, allora questa pioggia ha DAVVERO qualcosa di strano!", - ["Hapless Hogs"] = "Ricci Sfortunati", +-- ["Hannibal"] = "", -- A_Classic_Fairytale:epil ["Hapless Hogs left!"] = "Ricci Sfortunati rimanenti!", +-- [" Hapless Hogs left!"] = "", -- User_Mission_-_That_Sinking_Feeling + ["Hapless Hogs"] = "Ricci Sfortunati", +-- [" HAS MUTATED\" )"] = "", -- +-- ["Hatless Jerry"] = "", -- A_Classic_Fairytale:queen +-- ["Have no illusions, your tribe is dead, indifferent of your choice."] = "", -- A_Classic_Fairytale:shadow +-- ["Have we ever attacked you first?"] = "", -- A_Classic_Fairytale:enemy ["Health crates extend your time."] = "Le casse salute estendono il tuo tempo", +-- ["Heavy Cannfantry"] = "", -- A_Classic_Fairytale:united ["Heavy"] = "Pesante", +-- ["Hedge-cogs"] = "", -- A_Classic_Fairytale:enemy +-- ["Hedgehog projectile: [fire your hog like a Sticky Bomb]"] = "", -- Continental_supplies ["Hedgewars-Basketball"] = "Hedgewars-Pallacanestro", ["Hedgewars-Knockball"] = "Hedgewars-Knockball", +-- ["Hedgibal Lecter"] = "", -- A_Classic_Fairytale:backstab ["Heh, it's not that bad."] = "Beh, alla fine non piove così forte.", +-- ["Hello again, "] = "", -- A_Classic_Fairytale:family +-- ["Help me, Leaks!"] = "", -- A_Classic_Fairytale:journey +-- ["Help me, please!!!"] = "", -- A_Classic_Fairytale:journey +-- ["Help me, please!"] = "", -- A_Classic_Fairytale:journey +-- ["He moves like an eagle in the sky."] = "", -- A_Classic_Fairytale:first_blood +-- ["He must be in the village already."] = "", -- A_Classic_Fairytale:journey +-- ["Here, let me help you!"] = "", -- A_Classic_Fairytale:backstab +-- ["Here, let me help you save her!"] = "", -- A_Classic_Fairytale:family +-- ["Here...pick your weapon!"] = "", -- A_Classic_Fairytale:first_blood +-- ["Hero Team"] = "", -- User_Mission_-_The_Great_Escape +-- ["He's so brave..."] = "", -- A_Classic_Fairytale:first_blood +-- ["He won't be selling us out anymore!"] = "", -- A_Classic_Fairytale:backstab +-- ["Hey, guys!"] = "", -- A_Classic_Fairytale:backstab +-- ["Hey guys!"] = "", -- A_Classic_Fairytale:united +-- ["Hey! This is cheating!"] = "", -- A_Classic_Fairytale:journey +-- ["HIGHLANDER"] = "", -- Highlander +-- ["Hightime"] = "", -- A_Classic_Fairytale:first_blood +-- ["Hint: Double Jump - Press [Backspace] twice"] = "", -- A_Classic_Fairytale:first_blood +-- ["Hint: Select the BlowTorch, aim and press [Fire]. Press [Fire] again to stop.|Don't blow up the crate."] = "", -- A_Classic_Fairytale:journey +-- ["Hint: Select the LowGravity and press [Fire]."] = "", -- A_Classic_Fairytale:journey +-- ["Hint: you might want to stay out of sight and take all the crates...|"] = "", -- A_Classic_Fairytale:journey +-- ["His arms are so strong!"] = "", -- A_Classic_Fairytale:first_blood ["Hit Combo!"] = "Hit Combo!", +-- ["Hmmm...actually...I didn't either."] = "", -- A_Classic_Fairytale:enemy +-- ["Hmmm, I'll have to find some way of moving him off this anti-portal surface..."] = "", -- portal +-- ["Hmmm...it's a draw. How unfortunate!"] = "", -- A_Classic_Fairytale:enemy ["Hmmm..."] = "Mmmmm...", +-- ["Hmmm...perhaps a little more time will help."] = "", -- A_Classic_Fairytale:first_blood +-- ["Hogminator"] = "", -- A_Classic_Fairytale:family +-- ["Hogs in sight!"] = "", -- Continental_supplies +-- ["HOLY SHIT!"] = "", -- Mutant +-- ["Honest Lee"] = "", -- A_Classic_Fairytale:enemy ["Hooray!"] = "Hurrà!!!", +-- ["Hostage Situation"] = "", -- A_Classic_Fairytale:family +-- ["How can I ever repay you for saving my life?"] = "", -- A_Classic_Fairytale:journey +-- ["How come in a village full of warriors, it's up to me to save it?"] = "", -- A_Classic_Fairytale:dragon +-- ["How difficult would you like it to be?"] = "", -- A_Classic_Fairytale:first_blood +-- ["HOW DO THEY KNOW WHERE WE ARE???"] = "", -- A_Classic_Fairytale:united +-- ["However, if you fail to do so, she dies a most violent death, just like your friend! Muahahaha!"] = "", -- A_Classic_Fairytale:journey +-- ["However, if you fail to do so, she dies a most violent death! Muahahaha!"] = "", -- A_Classic_Fairytale:journey +-- ["However, my mates don't agree with me on letting you go..."] = "", -- A_Classic_Fairytale:dragon +-- [" HP"] = "", -- Mutant ["Hunter"] = "Cacciatore", --Bazooka, Shotgun, SniperRifle +-- ["I believe there's more of them."] = "", -- A_Classic_Fairytale:backstab +-- ["I can see you have been training diligently."] = "", -- A_Classic_Fairytale:first_blood +-- ["I can't believe it worked!"] = "", -- A_Classic_Fairytale:shadow +-- ["I can't believe this!"] = "", -- A_Classic_Fairytale:enemy +-- ["I can't believe what I'm hearing!"] = "", -- A_Classic_Fairytale:backstab +-- ["I can't wait any more, I have to save myself!"] = "", -- A_Classic_Fairytale:shadow +-- ["I could just teleport myself there..."] = "", -- A_Classic_Fairytale:family +-- ["I'd better get going myself."] = "", -- A_Classic_Fairytale:journey +-- ["I didn't until about a month ago."] = "", -- A_Classic_Fairytale:enemy +-- ["I don't know how you did that.. But good work! |The next one should be easy as cake for you!"] = "", -- Basic_Training_-_Rope +-- ["I feel something...a place! They will arrive near the circles!"] = "", -- A_Classic_Fairytale:backstab +-- ["If only I had a way..."] = "", -- A_Classic_Fairytale:backstab +-- ["If only I were given a chance to explain my being here..."] = "", -- A_Classic_Fairytale:first_blood +-- ["I forgot that she's the daughter of the chief, too..."] = "", -- A_Classic_Fairytale:backstab +-- ["If they try coming here, they can have a taste of my delicious knuckles!"] = "", -- A_Classic_Fairytale:united +-- ["If you agree to provide the information we need, you will be spared!"] = "", -- A_Classic_Fairytale:shadow +-- ["If you can get that crate fast enough, your beloved \"princess\" may go free."] = "", -- A_Classic_Fairytale:journey +-- ["If you decide to help us, though, we will no longer need to find a new governor for the island."] = "", -- A_Classic_Fairytale:shadow +-- ["If you get stuck, use your Desert Eagle or restart the mission!|"] = "", -- A_Classic_Fairytale:journey +-- ["If you know what I mean..."] = "", -- A_Classic_Fairytale:shadow +-- ["If you say so..."] = "", -- A_Classic_Fairytale:shadow +-- ["If you wish to restart the course, hold [Precise] while your turn ends (e.g with Skip)"] = "", -- +-- ["I guess you'll have to kill them."] = "", -- A_Classic_Fairytale:dragon +-- ["I have come to make you an offering..."] = "", -- A_Classic_Fairytale:shadow +-- ["I have no idea where that mole disappeared...Can you see it?"] = "", -- A_Classic_Fairytale:shadow +-- ["I have to follow that alien."] = "", -- A_Classic_Fairytale:backstab +-- ["I have to get back to the village!"] = "", -- A_Classic_Fairytale:shadow +-- ["I hope you are prepared for a small challenge, young one."] = "", -- A_Classic_Fairytale:first_blood +-- ["I just don't want to sink to your level."] = "", -- A_Classic_Fairytale:backstab +-- ["I just found out that they have captured your princess!"] = "", -- A_Classic_Fairytale:family +-- ["I just wonder where Ramon and Spiky disappeared..."] = "", -- A_Classic_Fairytale:journey +-- ["I'll hold them off while you return to the village!"] = "", -- A_Classic_Fairytale:shadow +-- ["Imagine those targets are the wolves that killed your parents! Take your anger out on them!"] = "", -- A_Classic_Fairytale:first_blood +-- ["I'm...alive? How? Why?"] = "", -- A_Classic_Fairytale:backstab +-- ["I'm a ninja."] = "", -- A_Classic_Fairytale:dragon +-- ["I marked the place of their arrival. You're welcome!"] = "", -- A_Classic_Fairytale:backstab +-- ["I'm certain that this is a misunderstanding, fellow hedgehogs!"] = "", -- A_Classic_Fairytale:first_blood +-- ["I mean, none of you ceased to live."] = "", -- A_Classic_Fairytale:enemy +-- ["I'm getting old for this!"] = "", -- A_Classic_Fairytale:family +-- ["I'm getting thirsty..."] = "", -- A_Classic_Fairytale:family +-- ["I'm here to help you rescue her."] = "", -- A_Classic_Fairytale:family +-- ["I'm not sure about that!"] = "", -- A_Classic_Fairytale:united +-- ["Impressive...you are still dry as the corpse of a hawk after a week in the desert..."] = "", -- A_Classic_Fairytale:first_blood +-- ["I'm so scared!"] = "", -- A_Classic_Fairytale:united +-- ["Incredible..."] = "", -- A_Classic_Fairytale:shadow +-- ["I need to find the others!"] = "", -- A_Classic_Fairytale:backstab +-- ["I need to get to the other side of this island, fast!"] = "", -- A_Classic_Fairytale:journey +-- ["I need to move the tribe!"] = "", -- A_Classic_Fairytale:united +-- ["I need to prevent their arrival!"] = "", -- A_Classic_Fairytale:backstab +-- ["I need to warn the others."] = "", -- A_Classic_Fairytale:backstab +-- ["In fact, you are the only one that's been acting strangely."] = "", -- A_Classic_Fairytale:backstab +-- ["In order to get to the other side, you need to collect the crates first.|"] = "", -- A_Classic_Fairytale:dragon ["Instructor"] = "Istruttore", -- 01#Boot_Camp, User_Mission_-_Dangerous_Ducklings +-- ["Interesting idea, haha!"] = "", -- A_Classic_Fairytale:enemy +-- ["Interesting! Last time you said you killed a cannibal!"] = "", -- A_Classic_Fairytale:backstab +-- ["In the meantime, take these and return to your \"friend\"!"] = "", -- A_Classic_Fairytale:shadow ["invaders destroyed"] = "invasori distrutti", +-- ["Invasion"] = "", -- A_Classic_Fairytale:united +-- ["I saw it with my own eyes!"] = "", -- A_Classic_Fairytale:shadow +-- ["I see..."] = "", -- A_Classic_Fairytale:shadow +-- ["I see you have already taken the leap of faith."] = "", -- A_Classic_Fairytale:first_blood +-- ["I see you would like his punishment to be more...personal..."] = "", -- A_Classic_Fairytale:first_blood +-- ["I sense another wave of cannibals heading my way!"] = "", -- A_Classic_Fairytale:backstab +-- ["I sense another wave of cannibals heading our way!"] = "", -- A_Classic_Fairytale:backstab +-- ["I shouldn't have drunk that last pint."] = "", -- A_Classic_Fairytale:dragon +-- ["Is this place in my head?"] = "", -- A_Classic_Fairytale:dragon +-- ["It doesn't matter. I won't let that alien hurt my daughter!"] = "", -- A_Classic_Fairytale:dragon +-- ["I think we are safe here."] = "", -- A_Classic_Fairytale:backstab +-- ["I thought their shaman died when he tried our medicine!"] = "", -- A_Classic_Fairytale:shadow +-- ["It is called 'Hogs of Steel'."] = "", -- A_Classic_Fairytale:enemy +-- ["It is time to practice your fighting skills."] = "", -- A_Classic_Fairytale:first_blood +-- ["It must be a childhood trauma..."] = "", -- A_Classic_Fairytale:family +-- ["It must be the aliens!"] = "", -- A_Classic_Fairytale:backstab +-- ["It must be the aliens' deed."] = "", -- A_Classic_Fairytale:backstab +-- ["It must be the cyborgs again!"] = "", -- A_Classic_Fairytale:enemy +-- ["I told you, I just found them."] = "", -- A_Classic_Fairytale:backstab ["It's a good thing SUDDEN DEATH is 99 turns away..."] = "Almeno il SUDDEN DEATH arriverà tra 99 turni...", +-- ["It's always up to women to clear up the mess men created!"] = "", -- A_Classic_Fairytale:dragon +-- ["It's a shame, I forgot how to do that!"] = "", -- A_Classic_Fairytale:family +-- ["It's impossible to communicate with the spirits without a shaman."] = "", -- A_Classic_Fairytale:shadow +-- ["It's over..."] = "", -- A_Classic_Fairytale:shadow +-- ["It's time you learned that your actions have consequences!"] = "", -- A_Classic_Fairytale:journey +-- ["It's worth more than wood!"] = "", -- A_Classic_Fairytale:enemy +-- ["It wants our brains!"] = "", -- A_Classic_Fairytale:shadow +-- ["It was not a dream, unwise one!"] = "", -- A_Classic_Fairytale:backstab +-- ["I've seen this before. They just appear out of thin air."] = "", -- A_Classic_Fairytale:united +-- ["I want to play a game..."] = "", -- A_Classic_Fairytale:journey +-- ["I want to see how it handles this!"] = "", -- A_Classic_Fairytale:backstab +-- ["I wish to help you, "] = "", -- A_Classic_Fairytale:dragon +-- ["I wonder where Dense Cloud is..."] = "", -- A_Classic_Fairytale:journey, A_Classic_Fairytale:shadow +-- ["I wonder why I'm so angry all the time..."] = "", -- A_Classic_Fairytale:family +-- ["I won't let you kill her!"] = "", -- A_Classic_Fairytale:journey +-- ["Jack"] = "", -- A_Classic_Fairytale:dragon, A_Classic_Fairytale:family, A_Classic_Fairytale:queen +-- ["Jeremiah"] = "", -- A_Classic_Fairytale:dragon +-- ["John"] = "", -- A_Classic_Fairytale:journey +-- ["Judas"] = "", -- A_Classic_Fairytale:backstab ["Jumping is disabled"] = "Il salto è disattivato", +-- ["Just kidding, none of you have died!"] = "", -- A_Classic_Fairytale:enemy +-- ["Just on a walk."] = "", -- A_Classic_Fairytale:united +-- ["Just wait till I get my hands on that trauma! ARGH!"] = "", -- A_Classic_Fairytale:family ["Kamikaze Expert!"] = "Kamikaze Esperto!", ["Keep it up!"] = "Mantienilo al sicuro!", +-- ["Kerguelen"] = "", -- Continental_supplies ["Killing spree!"] = "Furia Omicida!", +-- ["KILL IT!"] = "", -- A_Classic_Fairytale:first_blood ["KILLS"] = "UCCISIONI", +-- ["Kill the aliens!"] = "", -- A_Classic_Fairytale:dragon +-- ["Kill the cannibal!"] = "", -- A_Classic_Fairytale:first_blood +-- ["Kill the traitor...or spare his life!|Kill him or press [Precise]!"] = "", -- A_Classic_Fairytale:backstab ["Last Target!"] = "Ultimo Obiettivo!", +-- ["Leader"] = "", -- A_Classic_Fairytale:enemy +-- ["Leaderbot"] = "", -- A_Classic_Fairytale:queen +-- ["Leaks A Lot"] = "", -- A_Classic_Fairytale:backstab, A_Classic_Fairytale:dragon, A_Classic_Fairytale:enemy, A_Classic_Fairytale:epil, A_Classic_Fairytale:family, A_Classic_Fairytale:first_blood, A_Classic_Fairytale:journey, A_Classic_Fairytale:queen, A_Classic_Fairytale:shadow, A_Classic_Fairytale:united +-- ["Leaks A Lot, depressed for killing his loved one, failed to save the village..."] = "", -- A_Classic_Fairytale:journey +-- ["Leaks A Lot gave his life for his tribe! He should have survived!"] = "", -- A_Classic_Fairytale:first_blood +-- ["Leaks A Lot must survive!"] = "", -- A_Classic_Fairytale:journey +-- ["Led Heart"] = "", -- A_Classic_Fairytale:queen +-- ["Lee"] = "", -- A_Classic_Fairytale:dragon, A_Classic_Fairytale:family, A_Classic_Fairytale:queen ["[Left Shift]"] = "Shift Sinistro", +-- ["Let a Continent provide your weapons!"] = "", -- Continental_supplies +-- ["Let me test your skills a little, will you?"] = "", -- A_Classic_Fairytale:journey +-- ["Let's go home!"] = "", -- A_Classic_Fairytale:journey +-- ["Let's head back to the village!"] = "", -- A_Classic_Fairytale:shadow +-- ["Let's see what your comrade does now!"] = "", -- A_Classic_Fairytale:journey +-- ["Let's show those cannibals what we're made of!"] = "", -- A_Classic_Fairytale:backstab +-- ["Let them have a taste of my fury!"] = "", -- A_Classic_Fairytale:backstab +-- ["Let us help, too!"] = "", -- A_Classic_Fairytale:backstab +-- ["Light Cannfantry"] = "", -- A_Classic_Fairytale:united ["Listen up, maggot!!"] = "Recluta, Attenzione!!", +-- ["Little did they know that this hunt will mark them forever..."] = "", -- A_Classic_Fairytale:shadow ["Lively Lifeguard"] = "Bagnino Vivace", +-- ["Lonely Cries: [Rise the water if no hog is in the circle and deal 1 damage to all hogs]"] = "", -- Continental_supplies +-- ["Look, I had no choice!"] = "", -- A_Classic_Fairytale:backstab +-- ["Look out! There's more of them!"] = "", -- A_Classic_Fairytale:backstab +-- ["Look out! We're surrounded by cannibals!"] = "", -- A_Classic_Fairytale:enemy +-- ["Looks like the whole world is falling apart!"] = "", -- A_Classic_Fairytale:enemy +-- ["Luckily, I've managed to snatch some of them."] = "", -- A_Classic_Fairytale:united +-- ["LUDICROUS KILL"] = "", -- Mutant +-- ["May the spirits aid you in all your quests!"] = "", -- A_Classic_Fairytale:backstab +-- ["Medicine: [Fire some exploding medicine that will heal all hogs effected by the explosion]"] = "", -- Continental_supplies +-- ["MEGA KILL"] = "", -- Mutant +-- ["Meiwes"] = "", -- A_Classic_Fairytale:backstab +-- ["Mindy"] = "", -- A_Classic_Fairytale:united ["Mine Deployer"] = "Spintore di Mine", ["Mine Eater!"] = "Mangiatore di Mine!", ["|- Mines Time:"] = "|- Timer delle mine:", -- User_Mission_-_Diver, User_Mission_-_Spooky_Tree, User_Mission_-_Teamwork ["MISSION FAILED"] = "MISSIONE FALLITA", -- User_Mission_-_Dangerous_Ducklings, User_Mission_-_Diver, User_Mission_-_Spooky_Tree, User_Mission_-_Teamwork ["MISSION SUCCESSFUL"] = "MISSIONE COMPLETATA CON SUCCESSO", -- User_Mission_-_Spooky_Tree, User_Mission_-_Teamwork ["MISSION SUCCESS"] = "MISSIONE COMPLETATA", -- User_Mission_-_Diver, User_Mission_-_Spooky_Tree, User_Mission_-_Teamwork +-- ["Molotov"] = "", -- Continental_supplies +-- ["MONSTER KILL"] = "", -- Mutant +-- ["More Natives"] = "", -- A_Classic_Fairytale:epil ["Movement: [Up], [Down], [Left], [Right]"] = "Movimenti: [Su], [Giù], [Sinistra], [Destra]", ["Multi-shot!"] = "Colpi multipli!", +-- ["Muriel"] = "", -- A_Classic_Fairytale:backstab, A_Classic_Fairytale:dragon, A_Classic_Fairytale:family, A_Classic_Fairytale:queen +-- ["Muscle Dissolver"] = "", -- A_Classic_Fairytale:shadow +-- ["-------"] = "", -- Mutant +-- ["Nade Boy"] = "", -- Basic_Training_-_Grenade +-- ["Name"] = "", -- A_Classic_Fairytale:queen ["Nameless Heroes"] = "Eroi Senza Nome", +-- ["Nancy Screw"] = "", -- A_Classic_Fairytale:enemy, A_Classic_Fairytale:queen +-- ["Napalm rocket: [Fire a bomb with napalm!]"] = "", -- Continental_supplies +-- ["Natives"] = "", -- A_Classic_Fairytale:backstab, A_Classic_Fairytale:dragon, A_Classic_Fairytale:enemy, A_Classic_Fairytale:epil, A_Classic_Fairytale:family, A_Classic_Fairytale:first_blood, A_Classic_Fairytale:journey, A_Classic_Fairytale:queen, A_Classic_Fairytale:shadow, A_Classic_Fairytale:united ["New Barrels Per Turn"] = "Nuovi Barili ad Ogni Turno", ["NEW CLAN RECORD: "] = "NUOVO RECORD DEL CLAN: ", ["NEW fastest lap: "] = "Nuovo giro migliore: ", ["New Mines Per Turn"] = "Nuove Mine ad Ogni Turno", ["NEW RACE RECORD: "] = "NUOVO RACE RECORD: ", ["Newton's Hammock"] = "Newton e l'Amaca", +-- ["Nicely done, meatbags!"] = "", -- A_Classic_Fairytale:enemy +-- ["Nice work, "] = "", -- A_Classic_Fairytale:dragon +-- ["Nice work!"] = "", -- A_Classic_Fairytale:enemy +-- ["Nilarian"] = "", -- A_Classic_Fairytale:queen +-- ["No, I came back to help you out..."] = "", -- A_Classic_Fairytale:shadow +-- ["No...I wonder where they disappeared?!"] = "", -- A_Classic_Fairytale:journey +-- ["Nom-Nom"] = "", -- A_Classic_Fairytale:journey +-- ["NomNom"] = "", -- A_Classic_Fairytale:united +-- ["Nope. It was one fast mole, that's for sure."] = "", -- A_Classic_Fairytale:shadow +-- ["No! Please, help me!"] = "", -- A_Classic_Fairytale:journey +-- ["NORMAL"] = "", -- Continental_supplies +-- ["North America"] = "", -- Continental_supplies +-- ["Not all hogs are born equal."] = "", -- Highlander ["NOT ENOUGH WAYPOINTS"] = "NON CI SONO ABBASTANZA PUNTI!", +-- ["Not now, Fiery Water!"] = "", -- A_Classic_Fairytale:backstab ["Not So Friendly Match"] = "Partita (quasi) amichevole", -- Basketball, Knockball +-- ["Not you again! My head still hurts from last time!"] = "", -- A_Classic_Fairytale:shadow +-- ["No, we made sure of that!"] = "", -- A_Classic_Fairytale:united +-- ["Now find the next target! |Tip: Normally you lose health by falling down, so be careful!"] = "", -- Basic_Training_-_Rope +-- ["No! What have I done?! What have YOU done?!"] = "", -- A_Classic_Fairytale:journey +-- ["No. Where did he come from?"] = "", -- A_Classic_Fairytale:shadow +-- ["Now how do I get on the other side?!"] = "", -- A_Classic_Fairytale:dragon +-- ["No. You and the rest of the tribe are safer there!"] = "", -- A_Classic_Fairytale:backstab +-- ["Obliterate them!|Hint: You might want to take cover..."] = "", -- A_Classic_Fairytale:shadow +-- ["Obstacle course"] = "", -- A_Classic_Fairytale:dragon +-- ["Of course I have to save her. What did I expect?!"] = "", -- A_Classic_Fairytale:family +-- ["OH, COME ON!"] = "", -- A_Classic_Fairytale:journey +-- ["Oh, my!"] = "", -- A_Classic_Fairytale:first_blood +-- ["Oh, my! This is even more entertaining than I've expected!"] = "", -- A_Classic_Fairytale:backstab ["Oh no! Just try again!"] = "Oh no! Prova ancora!", -- User_Mission_-_Diver, User_Mission_-_Spooky_Tree, User_Mission_-_Teamwork +-- ["Oh no, not "] = "", -- A_Classic_Fairytale:backstab, A_Classic_Fairytale:united ["Oh no! Time's up! Just try again."] = "Oh no! Tempo scaduto! Prova ancora!", --Bazooka, Shotgun, SniperRifle +-- ["Oh no! You failed! Just try again."] = "", -- Basic_Training_-_Cluster_Bomb +-- ["Oh, silly me! I forgot that I'm the shaman."] = "", -- A_Classic_Fairytale:backstab +-- ["Olive"] = "", -- A_Classic_Fairytale:united +-- ["Omnivore"] = "", -- A_Classic_Fairytale:first_blood +-- ["Once upon a time, on an island with great natural resources, lived two tribes in heated conflict..."] = "", -- A_Classic_Fairytale:first_blood +-- ["ONE HOG PER TEAM! KILLING EXCESS HEDGES"] = "", -- Mutant +-- ["One tribe was peaceful, spending their time hunting and training, enjoying the small pleasures of life..."] = "", -- A_Classic_Fairytale:first_blood +-- ["Oops...I dropped them."] = "", -- A_Classic_Fairytale:united +-- ["Open that crate and we will continue!"] = "", -- A_Classic_Fairytale:first_blood ["Operation Diver"] = "Operazione Sub", ["Opposing Team: "] = "Squadra Nemica: ", +-- ["Orlando Boom!"] = "", -- A_Classic_Fairytale:queen +-- ["Ouch!"] = "", -- User_Mission_-_Rope_Knock_Challenge +-- ["Our tribe, our beautiful island!"] = "", -- A_Classic_Fairytale:enemy +-- ["Parachute"] = "", -- Continental_supplies ["Pathetic Hog #%d"] = "Riccio Patetico #%d", ["Pathetic Resistance"] = "Resistenza Patetica", -- User_Mission_-_Bamboo_Thicket, User_Mission_-_Newton_and_the_Hammock +-- ["Perfect! Now try to get the next crate without hurting yourself!"] = "", -- A_Classic_Fairytale:first_blood ["Per-Hog Ammo"] = "Munizioni per Riccio", +-- ["- Per team weapons|- 9 weaponschemes|- Unique new weapons| |Select continent first round with the Weapon Menu or by ([switch/tab]=Increase,[presice/left shift]=Decrease)"] = "", -- +-- ["Pfew! That was close!"] = "", -- A_Classic_Fairytale:shadow +-- ["Piñata bullet: [Contains some sweet candy!]"] = "", -- Continental_supplies +-- ["Pings left:"] = "", -- Space_Invasion ["Place more waypoints using [ENTER]"] = "Piazza più punti usando [ENTER]", ["Place more waypoints using the 'Air Attack' weapon."] = "Piazza più punti usando l'Attacco Aereo", +-- ["Planes Used:"] = "", -- User_Mission_-_RCPlane_Challenge +-- ["Planes Used"] = "", -- User_Mission_-_RCPlane_Challenge +-- ["Play with me!"] = "", -- A_Classic_Fairytale:shadow +-- ["Please place the way-point further from the waterline."] = "", -- Racer +-- ["Please place the way-point in the open, within the map boundaries."] = "", -- Racer +-- ["Please, stop releasing your \"smoke signals\"!"] = "", -- A_Classic_Fairytale:shadow +-- ["Point Blank Combo!"] = "", -- Space_Invasion ["points"] = "punti", -- Control, Space_Invasion ["Poison"] = "Veleno", +-- ["Portal hint: one goes to the destination, and one is the entrance.|"] = "", -- A_Classic_Fairytale:dragon +-- ["Portal mission"] = "", -- portal ["Power Remaining"] = "Potenza Rimasta", ["Prepare yourself"] = "Preparati", +-- ["Press [Enter] to accept this configuration."] = "", -- WxW +-- ["Press [Left] or [Right] to move around, [Enter] to jump"] = "", -- A_Classic_Fairytale:first_blood ["Press [Precise] to skip intro"] = "Premi [Mirino di Precisione] per saltare l'intro", +-- ["Private Novak"] = "", -- Basic_Training_-_Cluster_Bomb +-- ["Protect yourselves!|Grenade hint: set the timer with [1-5], aim with [Up]/[Down] and hold [Space] to set power"] = "", -- A_Classic_Fairytale:shadow ["Race complexity limit reached."] = "Raggiunto il limite di complessità della corsa.", ["RACER"] = "RACER", +-- ["Rachel"] = "", -- A_Classic_Fairytale:dragon, A_Classic_Fairytale:family, A_Classic_Fairytale:queen +-- ["Radar Ping"] = "", -- Space_Invasion +-- ["Raging Buffalo"] = "", -- A_Classic_Fairytale:backstab, A_Classic_Fairytale:dragon, A_Classic_Fairytale:enemy, A_Classic_Fairytale:epil, A_Classic_Fairytale:family, A_Classic_Fairytale:queen, A_Classic_Fairytale:united +-- ["Ramon"] = "", -- A_Classic_Fairytale:enemy, A_Classic_Fairytale:epil, A_Classic_Fairytale:family, A_Classic_Fairytale:queen, A_Classic_Fairytale:shadow +-- ["RC PLANE TRAINING"] = "", -- User_Mission_-_RCPlane_Challenge +-- ["Really?! You thought you could harm me with your little toys?"] = "", -- A_Classic_Fairytale:shadow +-- ["Regurgitator"] = "", -- A_Classic_Fairytale:backstab +-- ["Reinforcements"] = "", -- A_Classic_Fairytale:backstab +-- ["Remember: The rope only bend around objects, |if it doesn't hit anything it's always stright!"] = "", -- Basic_Training_-_Rope +-- ["Remember this, pathetic animal: when the day comes, you will regret your blind loyalty!"] = "", -- A_Classic_Fairytale:shadow [" - 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"] = " - Riporta la bandiera nemica alla tua base per guadagnare un punto| - La prima squadra a catturarne 3 vince! | - Puoi guadagnare punti solo quando la tua bandiera si trova nella tua base! | - I ricci lasceranno cadere la bandiera se uccisi o caduti in acqua! | - Le bandiere cadute possono essere restituite o ricatturate! | - I ricci risorgono dalla morte!", +-- ["Return to Leaks A Lot! If you get stuck, press [Precise] to try again!"] = "", -- A_Classic_Fairytale:shadow +-- ["Righteous Beard"] = "", -- A_Classic_Fairytale:backstab, A_Classic_Fairytale:dragon, A_Classic_Fairytale:enemy, A_Classic_Fairytale:epil, A_Classic_Fairytale:family, A_Classic_Fairytale:first_blood, A_Classic_Fairytale:queen, A_Classic_Fairytale:united +-- ["ROPE-KNOCKING"] = "", -- User_Mission_-_Rope_Knock_Challenge +-- ["Rope Training"] = "", -- Basic_Training_-_Rope +-- ["Rot Molester"] = "", -- A_Classic_Fairytale:shadow ["Round Limit:"] = "Limite del Round: ", ["Round Limit"] = "Limite del Round", ["Rounds Complete: "] = "Round Completati: ", ["Rounds Complete"] = "Round Completati", ["RULES OF THE GAME [Press ESC to view]"] = "REGOLE DEL GIOCO [Premi ESC per visualizzarle] ", ["RULES OF THE GAME [Press ESC to view]"] = "REGOLE DEL GIOCO (Premi ESC per visualizzarle)", - ["s|"] = "s|", +-- ["Rusty Joe"] = "", -- A_Classic_Fairytale:queen +-- ["Sabotage: [Sabotage all hogs in the circle and deal ~10 dmg]"] = "", -- Continental_supplies +-- ["Salivaslurper"] = "", -- A_Classic_Fairytale:united +-- ["Salvation"] = "", -- A_Classic_Fairytale:family +-- ["Salvation was one step closer now..."] = "", -- A_Classic_Fairytale:dragon ["Save as many hapless hogs as possible!"] = "Salva più ricci sfortunati che puoi!", +-- ["Save Fell From Heaven!"] = "", -- A_Classic_Fairytale:journey +-- ["Save Leaks A Lot!|Hint: The Switch utility might be of help to you."] = "", -- A_Classic_Fairytale:shadow +-- ["Save the princess! All your hogs must survive!|Hint: Kill the cyborgs first! Use the ammo very carefully!|Hint: You might want to spare a girder for cover!"] = "", -- A_Classic_Fairytale:family +-- ["Save the princess by collecting the crate in under 12 turns!"] = "", -- A_Classic_Fairytale:journey +-- ["Scalp Muncher"] = "", -- A_Classic_Fairytale:backstab +-- ["Score"] = "", -- Mutant ["SCORE"] = "PUNTEGGIO", +-- ["Scream from a Walrus: [Deal 20 damage + 10% of your hogs health to all hogs around you and get half back]"] = "", -- Continental_supplies ["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 +-- ["Seduction"] = "", -- Continental_supplies +-- ["Seems like every time you take a \"walk\", the enemy find us!"] = "", -- A_Classic_Fairytale:backstab +-- ["See that crate farther on the right?"] = "", -- A_Classic_Fairytale:first_blood ["See ya!"] = "Ci vediamo!", +-- ["Segmentation Paul"] = "", -- A_Classic_Fairytale:dragon +-- ["Select continent!"] = "", -- Continental_supplies +-- ["Select difficulty: [Left] - easier or [Right] - harder"] = "", -- A_Classic_Fairytale:first_blood ["selected!"] = "selezionato!", - ["s"] = "s", -- GaudyRacer, Space_Invasion +-- ["... share your beauty with the world every morning, my princess!"] = "", -- A_Classic_Fairytale:journey +-- ["She's behind that tall thingy."] = "", -- A_Classic_Fairytale:family ["Shield boosted! +30 power"] = "Scudo ricaricato! Potenza +30", ["Shield Depleted"] = "Scudo Esaurito", ["Shield is fully recharged!"] = "Lo scudo è stato completamente ricaricato!", @@ -163,60 +646,341 @@ ["Shield OFF:"] = "Scudo OFF", ["Shield ON:"] = "Scudo ON", ["Shield Seeker!"] = "Cercatore di Scudi", +-- ["Shotgun"] = "", -- Continental_supplies ["Shotgun Team"] = "Squadra Shotgun", ["Shotgun Training"] = "Addestramento sull'utilizzo del Fucile a Pompa", ["shots remaining."] = "colpi rimasti.", ["Silly"] = "Stupido", ["Sinky"] = "Affondato", +-- ["Sirius Lee"] = "", -- A_Classic_Fairytale:enemy ["%s is out and Team %d|scored a penalty!| |Score:"] = "%s è fuori dal campo e la squadra %d|prende una penalità!| |Punteggio:", -- Basketball, Knockball ["%s is out and Team %d|scored a point!| |Score:"] = "%s è fuori dal campo e la squadra %d|guadagna un punto!| |Puntuación:", -- Basketball, Knockball +-- ["Slippery"] = "", -- A_Classic_Fairytale:journey +-- ["Smith 0.97"] = "", -- A_Classic_Fairytale:enemy +-- ["Smith 0.98"] = "", -- A_Classic_Fairytale:enemy +-- ["Smith 0.99a"] = "", -- A_Classic_Fairytale:enemy +-- ["Smith 0.99b"] = "", -- A_Classic_Fairytale:enemy +-- ["Smith 0.99f"] = "", -- A_Classic_Fairytale:enemy +-- ["Smith 1.0"] = "", -- A_Classic_Fairytale:enemy +-- ["Sniper Rifle"] = "", -- Continental_supplies +-- ["Sniper!"] = "", -- Space_Invasion ["Sniper Training"] = "Addestramento sull'utilizzo del Fucile di Precisione", ["Sniperz"] = "Cecchini", +-- ["So humiliating..."] = "", -- A_Classic_Fairytale:first_blood +-- ["South America"] = "", -- Continental_supplies +-- ["So? What will it be?"] = "", -- A_Classic_Fairytale:shadow +-- ["Spawn the crate, and attack!"] = "", -- WxW +-- ["Special Weapons:"] = "", -- Continental_supplies +-- ["Spiky Cheese"] = "", -- A_Classic_Fairytale:enemy, A_Classic_Fairytale:epil, A_Classic_Fairytale:family, A_Classic_Fairytale:queen, A_Classic_Fairytale:shadow +-- ["Spleenlover"] = "", -- A_Classic_Fairytale:united ["Sponge"] = "Spugna", ["Spooky Tree"] = "Albero Stregato", + ["s|"] = "s|", + ["s"] = "s", -- GaudyRacer, Space_Invasion ["STATUS UPDATE"] = "STATUS AGGIORNATO", -- GaudyRacer, Space_Invasion +-- ["Steel Eye"] = "", -- A_Classic_Fairytale:queen +-- ["Step By Step"] = "", -- A_Classic_Fairytale:first_blood +-- ["Steve"] = "", -- A_Classic_Fairytale:dragon, A_Classic_Fairytale:family, A_Classic_Fairytale:queen +-- ["Sticky Mine"] = "", -- Continental_supplies +-- ["Stronglings"] = "", -- A_Classic_Fairytale:shadow +-- ["Structure"] = "", -- Continental_supplies +-- ["Super Weapons"] = "", -- WxW +-- ["Surf Before Crate"] = "", -- WxW +-- ["Surfer! +15 points!"] = "", -- Space_Invasion +-- ["Surfer!"] = "", -- WxW +-- ["Survive!|Hint: Cinematics can be skipped with the [Precise] key."] = "", -- A_Classic_Fairytale:shadow +-- ["Swing, Leaks A Lot, on the wings of the wind!"] = "", -- A_Classic_Fairytale:first_blood ["Switched to "] = "Cambiato in", +-- ["Syntax Errol"] = "", -- A_Classic_Fairytale:dragon +-- ["Talk about mixed signals..."] = "", -- A_Classic_Fairytale:dragon ["Team %d: "] = "Squadra %d: ", ["Team Scores"] = "Punteggi della Squadra", -- Control, Space_Invasion +-- ["Teleport hint: just use the mouse to select the destination!"] = "", -- A_Classic_Fairytale:dragon +-- ["Thanks!"] = "", -- A_Classic_Fairytale:family +-- ["Thank you, my hero!"] = "", -- A_Classic_Fairytale:family +-- ["Thank you, oh, thank you, Leaks A Lot!"] = "", -- A_Classic_Fairytale:journey +-- ["Thank you, oh, thank you, my heroes!"] = "", -- A_Classic_Fairytale:journey +-- ["That is, indeed, very weird..."] = "", -- A_Classic_Fairytale:united +-- ["That makes it almost invaluable!"] = "", -- A_Classic_Fairytale:enemy +-- ["That ought to show them!"] = "", -- A_Classic_Fairytale:backstab +-- ["That's for my father!"] = "", -- A_Classic_Fairytale:backstab +-- ["That shaman sure knows what he's doing!"] = "", -- A_Classic_Fairytale:shadow ["That Sinking Feeling"] = "Quella Sensazione di Affogare...", +-- ["That's not our problem!"] = "", -- A_Classic_Fairytale:enemy +-- ["That's typical of you!"] = "", -- A_Classic_Fairytale:family +-- ["That was just mean!"] = "", -- A_Classic_Fairytale:backstab, A_Classic_Fairytale:united ["That was pointless."] = "Era senza senso.", +-- ["The answer is...entertaintment. You'll see what I mean."] = "", -- A_Classic_Fairytale:backstab +-- ["The anti-portal zone is all over the floor, and I have nothing to kill him...Droping something could hurt him enough to kill him..."] = "", -- portal +-- ["The Bull's Eye"] = "", -- A_Classic_Fairytale:first_blood +-- ["The caves are well hidden, they won't find us there!"] = "", -- A_Classic_Fairytale:united +-- ["The Crate Frenzy"] = "", -- A_Classic_Fairytale:first_blood +-- ["The Dilemma"] = "", -- A_Classic_Fairytale:shadow +-- ["The enemy can't move but it might be a good idea to stay out of sight!|"] = "", -- A_Classic_Fairytale:dragon ["The enemy is hiding out on yonder ducky!"] = "Il nemico si sta nascondendo dietro a quella papera!", +-- ["The Enemy Of My Enemy"] = "", -- A_Classic_Fairytale:enemy +-- ["The First Blood"] = "", -- A_Classic_Fairytale:first_blood +-- ["The First Encounter"] = "", -- A_Classic_Fairytale:shadow ["The flag will respawn next round."] = "La bandiera verrà restituita alla fine del turno.", +-- ["The food bites back"] = "", -- A_Classic_Fairytale:backstab +-- ["The giant umbrella from the last crate should help break the fall."] = "", -- A_Classic_Fairytale:first_blood +-- ["The Great Escape"] = "", -- User_Mission_-_The_Great_Escape +-- ["The guardian"] = "", -- A_Classic_Fairytale:shadow +-- ["The Individualist"] = "", -- A_Classic_Fairytale:shadow +-- ["Their buildings were very primitive back then, even for an uncivilised island."] = "", -- A_Classic_Fairytale:united +-- ["The Journey Back"] = "", -- A_Classic_Fairytale:journey +-- ["The Leap of Faith"] = "", -- A_Classic_Fairytale:first_blood +-- ["The Moonwalk"] = "", -- A_Classic_Fairytale:journey ["The Nameless One"] = "Il Senzanome", +-- ["The next one is pretty hard! |Tip: You have to do multiple swings!"] = "", -- Basic_Training_-_Rope +-- ["Then how do they keep appearing?"] = "", -- A_Classic_Fairytale:shadow +-- ["The other one were all cannibals, spending their time eating the organs of fellow hedgehogs..."] = "", -- A_Classic_Fairytale:first_blood +-- ["There must be a spy among us!"] = "", -- A_Classic_Fairytale:backstab +-- ["There's more of them? When did they become so hungry?"] = "", -- A_Classic_Fairytale:backstab, A_Classic_Fairytale:united +-- ["There's nothing more satisfying for me than seeing you share your beauty with the world every morning, my princess!"] = "", -- A_Classic_Fairytale:journey +-- ["There's nothing more satisfying to us than seeing you share your beauty..."] = "", -- A_Classic_Fairytale:journey +-- ["There's nothing more satisfying to us than seeing you share your beauty with the world every morning, my princess!"] = "", -- A_Classic_Fairytale:journey +-- ["The Rising"] = "", -- A_Classic_Fairytale:first_blood +-- ["The Savior"] = "", -- A_Classic_Fairytale:journey +-- ["These primitive people are so funny!"] = "", -- A_Classic_Fairytale:backstab +-- ["The Shadow Falls"] = "", -- A_Classic_Fairytale:shadow +-- ["The Showdown"] = "", -- A_Classic_Fairytale:shadow +-- ["The Slaughter"] = "", -- A_Classic_Fairytale:dragon, A_Classic_Fairytale:first_blood ["THE SPECIALISTS"] = "GLI SPECIALISTI", +-- ["The spirits of the ancerstors are surely pleased, Leaks A Lot."] = "", -- A_Classic_Fairytale:first_blood +-- ["The Torment"] = "", -- A_Classic_Fairytale:first_blood +-- ["The Tunnel Maker"] = "", -- A_Classic_Fairytale:journey +-- ["The Ultimate Weapon"] = "", -- A_Classic_Fairytale:first_blood +-- ["The Union"] = "", -- A_Classic_Fairytale:enemy +-- ["The village, unprepared, was destroyed by the cyborgs..."] = "", -- A_Classic_Fairytale:journey +-- ["The walk of Fame"] = "", -- A_Classic_Fairytale:shadow +-- ["The wasted youth"] = "", -- A_Classic_Fairytale:first_blood +-- ["The weapon in that last crate was bestowed upon us by the ancients!"] = "", -- A_Classic_Fairytale:first_blood +-- ["The what?!"] = "", -- A_Classic_Fairytale:dragon +-- ["The wind whispers that you are ready to become familiar with tools, now..."] = "", -- A_Classic_Fairytale:first_blood +-- ["They are all waiting back in the village, haha."] = "", -- A_Classic_Fairytale:enemy +-- ["They Call Me Bullseye!"] = "", -- Space_Invasion +-- ["They have weapons we've never seen before!"] = "", -- A_Classic_Fairytale:united +-- ["They keep appearing like this. It's weird!"] = "", -- A_Classic_Fairytale:united +-- ["They killed "] = "", -- A_Classic_Fairytale:backstab, A_Classic_Fairytale:united +-- ["They must be trying to weaken us!"] = "", -- A_Classic_Fairytale:enemy +-- ["They never learn"] = "", -- A_Classic_Fairytale:journey +-- ["They told us to wear these clothes. They said that this is the newest trend."] = "", -- A_Classic_Fairytale:enemy +-- ["They've been manipulating us all this time!"] = "", -- A_Classic_Fairytale:enemy +-- ["Thighlicker"] = "", -- A_Classic_Fairytale:united +-- ["This is it! It's time to make Fell From Heaven fall for me..."] = "", -- A_Classic_Fairytale:first_blood +-- ["This island is the only place left on Earth with grass on it!"] = "", -- A_Classic_Fairytale:enemy +-- ["This is typical!"] = "", -- A_Classic_Fairytale:dragon +-- ["This must be some kind of sorcery!"] = "", -- A_Classic_Fairytale:shadow +-- ["This must be the caves!"] = "", -- A_Classic_Fairytale:backstab ["This one's tricky."] = "Questo è molto complesso.", ["This rain is really something..."] = "Questa pioggia ha qualcosa di strano...", - ["TIME: "] = "TEMPO: ", +-- ["This will be fun!"] = "", -- A_Classic_Fairytale:enemy +-- ["Those aliens are destroying the island!"] = "", -- A_Classic_Fairytale:family ["Timed Kamikaze!"] = "Kamikaze a Tempo!", ["Time Extended!"] = "Tempo Prolungato!", ["Time Extension"] = "Prolungamento di Tempo", + ["TIME: "] = "TEMPO: ", +-- ["Tip: The rope physics are different than in the real world, |use it to your advantage!"] = "", -- Basic_Training_-_Rope ["Toggle Shield"] = "Scudo Manuale", +-- ["To help you, of course!"] = "", -- A_Classic_Fairytale:journey +-- ["To place a girder, select it, use [Left] and [Right] to select angle and length, place with [Left Click]"] = "", -- A_Classic_Fairytale:shadow +-- ["Torn Muscle"] = "", -- A_Classic_Fairytale:journey +-- [" to save the village."] = "", -- A_Classic_Fairytale:dragon +-- ["To the caves..."] = "", -- A_Classic_Fairytale:united ["Toxic Team"] = "Team Velenoso", -- User_Mission_-_Diver, User_Mission_-_Spooky_Tree, User_Mission_-_Teamwork ["TRACK COMPLETED"] = "PISTA COMPLETATA", ["TRACK FAILED!"] = "PISTA FALLITA!", +-- ["training"] = "", -- portal +-- ["Traitors"] = "", -- A_Classic_Fairytale:epil +-- ["Tribe"] = "", -- A_Classic_Fairytale:backstab ["TrophyRace"] = "TrophyRace", +-- ["Try to protect the chief! You won't lose if he dies, but it is advised that he survives."] = "", -- A_Classic_Fairytale:united ["T_T"] = "T_T", ["Tumbling Time Extended!"] = "Tempo di Caduta Prolungato!", +-- ["Turns until Sudden Death: "] = "", -- A_Classic_Fairytale:dragon +-- [" turns until Sudden Death! Better hurry!"] = "", -- A_Classic_Fairytale:dragon ["Turn Time"] = "Tempo del Turno", - ["Unit"] = "Unità", +-- ["Two little hogs cooperating, getting past obstacles..."] = "", -- A_Classic_Fairytale:journey +-- ["Uhm...I met one of them and took his weapons."] = "", -- A_Classic_Fairytale:shadow +-- ["Uhmm...ok no."] = "", -- A_Classic_Fairytale:enemy +-- ["ULTRA KILL"] = "", -- Mutant +-- ["Under Construction"] = "", -- A_Classic_Fairytale:shadow +-- ["Unexpected Igor"] = "", -- A_Classic_Fairytale:dragon +-- ["Unit 0x0007"] = "", -- A_Classic_Fairytale:family +-- ["Unit 334a$7%;.*"] = "", -- A_Classic_Fairytale:backstab, A_Classic_Fairytale:dragon, A_Classic_Fairytale:enemy, A_Classic_Fairytale:family, A_Classic_Fairytale:queen, A_Classic_Fairytale:united ["Unit 3378"] = "Unità 3378", ["Unit 835"] = "Unità 835", +-- ["United We Stand"] = "", -- A_Classic_Fairytale:united + ["Unit"] = "Unità", ["Unlimited Attacks"] = "Attacchi Illimitati", +-- ["Unlucky Sods"] = "", -- User_Mission_-_Rope_Knock_Challenge ["Unstoppable!"] = "Inarrestabile!", +-- ["Unsuspecting Louts"] = "", -- User_Mission_-_Rope_Knock_Challenge +-- ["[Up], [Down] to aim, [Space] to shoot!"] = "", -- A_Classic_Fairytale:first_blood +-- ["Use it wisely!"] = "", -- A_Classic_Fairytale:dragon +-- ["Use it with precaution!"] = "", -- A_Classic_Fairytale:first_blood ["User Challenge"] = "Sfida Utente", +-- ["Use the parachute ([Space] while in air)"] = "", -- +-- ["Use the portal gun to get to the next crate, then use the new gun to get to the final destination!|"] = "", -- A_Classic_Fairytale:dragon +-- ["Use the rope to get on the head of the mole, young one!"] = "", -- A_Classic_Fairytale:first_blood +-- ["Use the rope to knock your enemies to their doom."] = "", -- User_Mission_-_Rope_Knock_Challenge ["Use your rope to get from start to finish as fast as you can!"] = "Usa la tua corda per raggiungere il traguardo il più velocemente possibile!", +-- ["Vedgies"] = "", -- A_Classic_Fairytale:journey +-- ["Vegan Jack"] = "", -- A_Classic_Fairytale:enemy +-- ["Victory!"] = "", -- Basic_Training_-_Rope + ["Victory for the"] = "La vittoria è di", ["Victory for the "] = "La vittoria è di ", -- CTF_Blizzard, Capture_the_Flag - ["Victory for the"] = "La vittoria è di", +-- ["Violence is not the answer to your problems!"] = "", -- A_Classic_Fairytale:first_blood +-- ["Walls Left"] = "", -- WxW +-- ["Walls Required"] = "", -- WxW +-- ["WALL TO WALL"] = "", -- WxW +-- ["Wannabe Flyboys"] = "", -- User_Mission_-_RCPlane_Challenge +-- ["Wannabe Shoppsta"] = "", -- User_Mission_-_Rope_Knock_Challenge +-- ["Watch your steps, young one!"] = "", -- A_Classic_Fairytale:first_blood ["Waypoint placed."] = "Punto piazzato.", ["Way-Points Remaining"] = "Punti Da Piazzare Rimasti", +-- ["Weaklings"] = "", -- A_Classic_Fairytale:shadow +-- ["We all know what happens when you get frightened..."] = "", -- A_Classic_Fairytale:first_blood ["Weapons Reset"] = "Armi Azzerate", +-- ["Weapons reset."] = "", -- Highlander +-- ["We are indeed."] = "", -- A_Classic_Fairytale:backstab +-- ["We can't defeat them!"] = "", -- A_Classic_Fairytale:shadow +-- ["We can't hold them up much longer!"] = "", -- A_Classic_Fairytale:united +-- ["We can't let them take over our little island!"] = "", -- A_Classic_Fairytale:enemy +-- ["We have no time to waste..."] = "", -- A_Classic_Fairytale:journey +-- ["We have nowhere else to live!"] = "", -- A_Classic_Fairytale:enemy +-- ["We have to protect the village!"] = "", -- A_Classic_Fairytale:united +-- ["We have to unite and defeat those cylergs!"] = "", -- A_Classic_Fairytale:enemy +-- ["Welcome, Leaks A Lot!"] = "", -- A_Classic_Fairytale:journey ["Well done."] = "Ben fatto.", +-- ["We'll give you a problem then!"] = "", -- A_Classic_Fairytale:enemy +-- ["We'll spare your life for now!"] = "", -- A_Classic_Fairytale:backstab +-- ["Well, that was a waste of time."] = "", -- A_Classic_Fairytale:dragon +-- ["Well, well! Isn't that the cutest thing you've ever seen?"] = "", -- A_Classic_Fairytale:journey +-- ["Well, yes. This was a cyborg television show."] = "", -- A_Classic_Fairytale:enemy +-- ["We made sure noone followed us!"] = "", -- A_Classic_Fairytale:backstab +-- ["We need to move!"] = "", -- A_Classic_Fairytale:united +-- ["We need to prevent their arrival!"] = "", -- A_Classic_Fairytale:backstab +-- ["We need to warn the village."] = "", -- A_Classic_Fairytale:shadow +-- ["We should head back to the village now."] = "", -- A_Classic_Fairytale:shadow +-- ["We were trying to save her and we got lost."] = "", -- A_Classic_Fairytale:family +-- ["We won't let you hurt her!"] = "", -- A_Classic_Fairytale:journey +-- ["What?! A cannibal? Here? There is no time to waste! Come, you are prepared."] = "", -- A_Classic_Fairytale:first_blood +-- ["What a douche!"] = "", -- A_Classic_Fairytale:enemy +-- ["What am I gonna...eat, yo?"] = "", -- A_Classic_Fairytale:family +-- ["What are you doing at a distance so great, young one?"] = "", -- A_Classic_Fairytale:first_blood +-- ["What are you doing? Let her go!"] = "", -- A_Classic_Fairytale:journey +-- ["What a ride!"] = "", -- A_Classic_Fairytale:shadow +-- ["What a strange cave!"] = "", -- A_Classic_Fairytale:dragon +-- ["What a strange feeling!"] = "", -- A_Classic_Fairytale:backstab +-- ["What do my faulty eyes observe? A spy!"] = "", -- A_Classic_Fairytale:first_blood +-- ["Whatever floats your boat..."] = "", -- A_Classic_Fairytale:shadow +-- [" What !! For all of this struggle i just win some ... TIME o0"] = "", -- portal +-- ["What has "] = "", -- A_Classic_Fairytale:backstab +-- ["What? Here? How did they find us?!"] = "", -- A_Classic_Fairytale:backstab +-- ["What is this place?"] = "", -- A_Classic_Fairytale:dragon, A_Classic_Fairytale:enemy +-- ["What shall we do with the traitor?"] = "", -- A_Classic_Fairytale:backstab +-- ["WHAT?! You're the ones attacking us!"] = "", -- A_Classic_Fairytale:enemy +-- ["When?"] = "", -- A_Classic_Fairytale:enemy +-- ["When I find it..."] = "", -- A_Classic_Fairytale:dragon +-- ["Where are all these crates coming from?!"] = "", -- A_Classic_Fairytale:shadow +-- ["Where are they?!"] = "", -- A_Classic_Fairytale:backstab +-- ["Where did that alien run?"] = "", -- A_Classic_Fairytale:dragon +-- ["Where did you get the exploding apples?"] = "", -- A_Classic_Fairytale:shadow +-- ["Where did you get the exploding apples and the magic bow that shoots many arrows?"] = "", -- A_Classic_Fairytale:shadow +-- ["Where did you get the magic bow that shoots many arrows?"] = "", -- A_Classic_Fairytale:shadow +-- ["Where did you get the weapons in the forest, Dense Cloud?"] = "", -- A_Classic_Fairytale:backstab +-- ["Where do you get that?!"] = "", -- A_Classic_Fairytale:enemy +-- ["Where have you been?!"] = "", -- A_Classic_Fairytale:backstab +-- ["Where have you been?"] = "", -- A_Classic_Fairytale:united +-- ["? Why?"] = "", -- A_Classic_Fairytale:backstab +-- ["Why "] = "", -- A_Classic_Fairytale:backstab +-- ["! Why?!"] = "", -- A_Classic_Fairytale:backstab, A_Classic_Fairytale:united +-- ["Why are you doing this?"] = "", -- A_Classic_Fairytale:journey +-- ["Why are you helping us, uhm...?"] = "", -- A_Classic_Fairytale:family +-- ["Why can't he just let her go?!"] = "", -- A_Classic_Fairytale:family +-- ["Why do men keep hurting me?"] = "", -- A_Classic_Fairytale:first_blood +-- ["Why do you not like me?"] = "", -- A_Classic_Fairytale:shadow +-- ["Why do you want to take over our island?"] = "", -- A_Classic_Fairytale:enemy +-- ["Why me?!"] = "", -- A_Classic_Fairytale:backstab +-- ["Why would they do this?"] = "", -- A_Classic_Fairytale:backstab +-- ["- Will Get 1-3 random weapons"] = "", -- Continental_supplies +-- ["- Will refresh Parachute each turn."] = "", -- Continental_supplies +-- ["- Will refresh portalgun each turn."] = "", -- Continental_supplies ["Will this ever end?"] = "Finirà mai?", +-- ["WINNER IS "] = "", -- Mutant ["WINNING TIME: "] = "TEMPO VINCENTE: ", +-- ["Wise Oak"] = "", -- A_Classic_Fairytale:backstab, A_Classic_Fairytale:dragon, A_Classic_Fairytale:enemy, A_Classic_Fairytale:epil, A_Classic_Fairytale:family, A_Classic_Fairytale:queen +-- ["With Dense Cloud on the land of shadows, I'm the village's only hope..."] = "", -- A_Classic_Fairytale:journey +-- ["With the rest of the tribe gone, it was up to "] = "", -- A_Classic_Fairytale:dragon +-- ["Worry not, for it is a peaceful animal! There is no reason to be afraid..."] = "", -- A_Classic_Fairytale:first_blood +-- ["Wow, what a dream!"] = "", -- A_Classic_Fairytale:backstab +-- ["Y3K1337"] = "", -- A_Classic_Fairytale:journey, A_Classic_Fairytale:shadow +-- ["Yay, we won!"] = "", -- A_Classic_Fairytale:enemy +-- ["Y Chwiliad"] = "", -- A_Classic_Fairytale:dragon +-- ["Yeah...I think it's a 'he', lol."] = "", -- A_Classic_Fairytale:shadow +-- ["Yeah, sure! I died. Hillarious!"] = "", -- A_Classic_Fairytale:backstab +-- ["Yeah, take that!"] = "", -- A_Classic_Fairytale:dragon +-- ["Yeah? Watcha gonna do? Cry?"] = "", -- A_Classic_Fairytale:journey +-- ["Yes!"] = "", -- A_Classic_Fairytale:enemy +-- ["Yes, yeees! You are now ready to enter the real world!"] = "", -- A_Classic_Fairytale:first_blood +-- ["Yo, dude, we're here, too!"] = "", -- A_Classic_Fairytale:family +-- ["You are given the chance to turn your life around..."] = "", -- A_Classic_Fairytale:shadow +-- ["You are playing with our lives here!"] = "", -- A_Classic_Fairytale:enemy +-- ["! You bastards!"] = "", -- A_Classic_Fairytale:backstab, A_Classic_Fairytale:united +-- ["You bear impressive skills, "] = "", -- A_Classic_Fairytale:dragon +-- ["You can't fire a portal on the blue surface"] = "", -- portal +-- ["You couldn't possibly believe that after refusing my offer I'd just let you go!"] = "", -- A_Classic_Fairytale:journey ["You'd almost swear the water was rising!"] = "Guarda, l'acqua si sta alzando rapidamente!", +-- ["You'd better watch your steps..."] = "", -- A_Classic_Fairytale:journey +-- ["You did not make it in time, try again!"] = "", -- Basic_Training_-_Rope +-- ["You have 7 turns until the next wave arrives.|Make sure the arriving cannibals are greeted appropriately!|If the hog dies, the cause is lost.|Hint: you might want to use some mines..."] = "", -- A_Classic_Fairytale:backstab +-- ["You have "] = "", -- A_Classic_Fairytale:dragon +-- ["You have been giving us out to the enemy, haven't you!"] = "", -- A_Classic_Fairytale:backstab +-- ["You have been respawned, at your last checkpoint!"] = "", -- Basic_Training_-_Rope +-- ["You have been respawned, be more carefull next time!"] = "", -- Basic_Training_-_Rope +-- ["You have chosen the perfect moment to leave."] = "", -- A_Classic_Fairytale:united +-- ["You have failed to complete your task, young one!"] = "", -- A_Classic_Fairytale:journey +-- ["You have failed to save the tribe!"] = "", -- A_Classic_Fairytale:backstab +-- ["You have finally figured it out!"] = "", -- A_Classic_Fairytale:enemy +-- ["You have kidnapped our whole tribe!"] = "", -- A_Classic_Fairytale:enemy +-- ["You have killed an innocent hedgehog!"] = "", -- A_Classic_Fairytale:backstab +-- ["You have proven yourself worthy to see our most ancient secret!"] = "", -- A_Classic_Fairytale:first_blood +-- ["You have proven yourselves worthy!"] = "", -- A_Classic_Fairytale:enemy ["You have SCORED!!"] = "Hai guadagnato un PUNTO!!", +-- ["You have to destroy 12 targets in 180 seconds"] = "", -- Basic_Training_-_Cluster_Bomb +-- ["You have won the game by proving true cooperative skills!"] = "", -- A_Classic_Fairytale:enemy +-- ["You just appeared out of thin air!"] = "", -- A_Classic_Fairytale:backstab +-- ["You just committed suicide..."] = "", -- A_Classic_Fairytale:shadow +-- ["You killed my father, you monster!"] = "", -- A_Classic_Fairytale:backstab +-- ["You know...taking a stroll."] = "", -- A_Classic_Fairytale:backstab +-- ["You know what? I don't even regret anything!"] = "", -- A_Classic_Fairytale:backstab +-- ["You'll see what I mean!"] = "", -- A_Classic_Fairytale:enemy +-- ["You may only attack from a rope!"] = "", -- WxW +-- ["You meatbags are pretty slow, you know!"] = "", -- A_Classic_Fairytale:enemy +-- ["You might want to find a way to instantly kill arriving cannibals!"] = "", -- A_Classic_Fairytale:backstab +-- ["Young one, you are telling us that they can instantly change location without a shaman?"] = "", -- A_Classic_Fairytale:united +-- ["You probably know what to do next..."] = "", -- A_Classic_Fairytale:first_blood +-- ["Your deaths will be avenged, cannibals!"] = "", -- A_Classic_Fairytale:enemy +-- ["Your death will not be in vain, Dense Cloud!"] = "", -- A_Classic_Fairytale:shadow +-- ["You're...alive!? But we saw you die!"] = "", -- A_Classic_Fairytale:backstab +-- ["You're a pathetic liar!"] = "", -- A_Classic_Fairytale:backstab +-- ["You're funny!"] = "", -- A_Classic_Fairytale:journey +-- ["You're getting pretty good! |Tip: When you shorten you rope you move faster! |and when you lengthen it you move slower"] = "", -- Basic_Training_-_Rope +-- ["You're pathetic! You are not worthy of my attention..."] = "", -- A_Classic_Fairytale:shadow +-- ["You're probably wondering why I bought you back..."] = "", -- A_Classic_Fairytale:backstab +-- ["You're terrorizing the forest...We won't catch anything like this!"] = "", -- A_Classic_Fairytale:shadow +-- ["Your hogs must survive!"] = "", -- A_Classic_Fairytale:journey +-- ["Your movement skills will be evaluated now."] = "", -- A_Classic_Fairytale:first_blood ["You saved"] = "Hai salvato", +-- ["You've been assaulting us, we have been just defending ourselves!"] = "", -- A_Classic_Fairytale:enemy ["You've failed. Try again."] = "Hai fallito. Prova di nuovo.", ["You've reached the goal!| |Time: "] = "Hai raggiunto il traguardo!| |Tempo: ", +-- ["You will be avenged!"] = "", -- A_Classic_Fairytale:shadow +-- ["You won't believe what happened to me!"] = "", -- A_Classic_Fairytale:backstab +-- ["Yuck! I bet they'll keep worshipping her even after I save the village!"] = "", -- A_Classic_Fairytale:family +-- ["Zealandia"] = "", -- Continental_supplies ["'Zooka Team"] = "Squadra 'Zooka", +-- ["Zork"] = "", -- A_Classic_Fairytale:dragon, A_Classic_Fairytale:family, A_Classic_Fairytale:queen } diff -r 3331b30e4ef1 -r 88fde28bbda6 share/hedgewars/Data/Locale/it.txt --- a/share/hedgewars/Data/Locale/it.txt Sun Oct 21 01:28:33 2012 +0400 +++ b/share/hedgewars/Data/Locale/it.txt Sat Nov 03 00:34:35 2012 +0400 @@ -57,6 +57,7 @@ 00:54=Attrezzi da Costruzione 00:55=Land Spray 00:56=Congelatore +00:57=Mannarino 01:00=Combattiamo! 01:01=Round in parità @@ -441,7 +442,7 @@ ; the misspelled "Beethoven" is intentional (-> to beat) 03:43=La mortale sonata di Beathoven! 03:44=Il meglio prima del 1923 -03:45=Arma Scientifica (beta) +03:45=Arma Scientifica 03:46=Arma da Fuoco (quello vero!) 03:47=Arma da Lancio 03:48=E' tempo di martellate! @@ -450,8 +451,10 @@ 03:51=Terreno al 100% 03:52=NON USATO 03:53=TARDIS Modello 40 -03:54=Kit di costruzione +03:54=(Arma in sviluppo) 03:55=Utilità di costruzione +03:56=(Arma in sviluppo) +03:57=Ecco il grande chef! ; Weapon Descriptions (use | as line breaks) 04:00=Attacca i tuoi nemici con una semplice granata.|Esploderà quando il timer arriverà a zero secondi.|1-5: Imposta il timer della granata|Attacco: Tieni premuto per lanciare con più forza|Mirino di Precisione + 1-5: Imposta livello di rimbalzo @@ -508,8 +511,10 @@ 04:51=Spingete i nemici in acqua o sopra le mine!|Questa semplice arma non farà molti danni ma|spingerà con forza i nemici che colpisce!|Nei temi Snow e Christmas è una palla di neve!|Attacco: Tieni premuto per lanciare con più forza 04:52=NON USATO 04:53=Parti per un'avventura unica attraverso spazio e tempo,|lasciando i tuoi compagni da soli a combattere.|Preparati a ritornare in qualsiasi momento,|o per il Sudden Death o se sei l'ultimo sopravvissuto.|Attenzione! Non è utilizzabile durante il Sudden Death,|se sei rimasto da solo, o se sei il Re.|Attacco: Inzia la tua avventura nello spazio-tempo! -04:54=DESCRIZIONE NON DISPONIBILE +04:54=DESCRIZIONE NON DISPONIBILE (arma ancora in sviluppo) 04:55=Con questo terreno spray non ti mancherà mai la terra |sotto ai piedi. Utilissimo per costruire ponti, |seppellire nemici e sigillare tunnel.|Ma fai attenzione a non usarlo a tuo svantaggio!|Attacco: Attiva|Su/Giù: Continua a mirare|Sinistra/Destra: Modifica la potenza di fuoriuscita del terreno +04:56=DESCRIZIONE NON DISPONIBILE (arma ancora in sviluppo) +04:57=Lancia due mannarini da cucina verso i tuoi nemici, se |lanciati con potenza possono rappresentare una... tagliente sorpresa!|Ricorda che rimarranno sul terreno dopo averli lanciati!|Attacco: Tieni premuto per lanciare con più forza ; Game goal strings 05:00=Modalità di Gioco diff -r 3331b30e4ef1 -r 88fde28bbda6 share/hedgewars/Data/Locale/ko.lua --- a/share/hedgewars/Data/Locale/ko.lua Sun Oct 21 01:28:33 2012 +0400 +++ b/share/hedgewars/Data/Locale/ko.lua Sat Nov 03 00:34:35 2012 +0400 @@ -2,158 +2,642 @@ -- [":("] = "", -- ["!!!"] = "", -- ["..."] = "", +-- ["011101000"] = "", -- A_Classic_Fairytale:dragon +-- ["011101001"] = "", -- A_Classic_Fairytale:backstab, A_Classic_Fairytale:dragon, A_Classic_Fairytale:enemy, A_Classic_Fairytale:family, A_Classic_Fairytale:journey, A_Classic_Fairytale:queen, A_Classic_Fairytale:shadow, A_Classic_Fairytale:united +-- ["30 minutes later..."] = "", -- A_Classic_Fairytale:shadow +-- ["About a month ago, a cyborg came and told us that you're the cannibals!"] = "", -- A_Classic_Fairytale:enemy -- ["Accuracy Bonus!"] = "", +-- ["Ace"] = "", -- User_Mission_-_RCPlane_Challenge, User_Mission_-_Rope_Knock_Challenge -- ["Achievement Unlocked"] = "", -- User_Mission_-_Bamboo_Thicket, User_Mission_-_That_Sinking_Feeling, Tumbler +-- ["A Classic Fairytale"] = "", -- A_Classic_Fairytale:first_blood +-- ["???"] = "", -- A_Classic_Fairytale:backstab +-- ["Actually, you aren't worthy of life! Take this..."] = "", -- A_Classic_Fairytale:shadow +-- ["A cy-what?"] = "", -- A_Classic_Fairytale:enemy +-- ["Adventurous"] = "", -- A_Classic_Fairytale:journey +-- ["Africa"] = "", -- Continental_supplies +-- ["After Leaks A Lot betrayed his tribe, he joined the cannibals..."] = "", -- A_Classic_Fairytale:first_blood +-- ["After the shock caused by the enemy spy, Leaks A Lot and Dense Cloud went hunting to relax."] = "", -- A_Classic_Fairytale:shadow +-- ["Again with the 'cannibals' thing!"] = "", -- A_Classic_Fairytale:enemy +-- ["a Hedgewars challenge"] = "", -- User_Mission_-_RCPlane_Challenge, User_Mission_-_Rope_Knock_Challenge -- ["a Hedgewars mini-game"] = "", -- Space_Invasion, The_Specialists -- ["Aiming Practice"] = "", --Bazooka, Shotgun, SniperRifle +-- ["A leap in a leap"] = "", -- A_Classic_Fairytale:first_blood +-- ["A little gift from the cyborgs"] = "", -- A_Classic_Fairytale:shadow +-- ["All gone...everything!"] = "", -- A_Classic_Fairytale:enemy +-- ["All right, we just need to get to the other side of the island!"] = "", -- A_Classic_Fairytale:journey +-- ["All walls touched!"] = "", -- WxW -- ["Ammo"] = "", -- ["Ammo Depleted!"] = "", -- ["ammo extended!"] = "", -- ["Ammo is reset at the end of your turn."] = "", -- ["Ammo Maniac!"] = "", +-- ["And how am I alive?!"] = "", -- A_Classic_Fairytale:enemy +-- ["And so happenned that Leaks A Lot failed to complete the challenge! He landed, pressured by shame..."] = "", -- A_Classic_Fairytale:first_blood +-- ["And so it began..."] = "", -- A_Classic_Fairytale:first_blood +-- ["...and so the cyborgs took over the world..."] = "", -- A_Classic_Fairytale:shadow +-- ["And so they discovered that cyborgs weren't invulnerable..."] = "", -- A_Classic_Fairytale:journey +-- ["And where's all the weed?"] = "", -- A_Classic_Fairytale:dragon +-- ["And you believed me? Oh, god, that's cute!"] = "", -- A_Classic_Fairytale:journey +-- ["Anno 1032: [The explosion will make a strong push ~ wide range, wont affect hogs close to the target]"] = "", -- Continental_supplies +-- ["Antarctica"] = "", -- Continental_supplies +-- ["Are we there yet?"] = "", -- A_Classic_Fairytale:shadow +-- ["Are you accusing me of something?"] = "", -- A_Classic_Fairytale:backstab +-- ["Are you saying that many of us have died for your entertainment?"] = "", -- A_Classic_Fairytale:enemy +-- ["Artur Detour"] = "", -- A_Classic_Fairytale:queen +-- ["As a reward for your performance, here's some new technology!"] = "", -- A_Classic_Fairytale:dragon +-- ["a shoppa minigame"] = "", -- WxW +-- ["Asia"] = "", -- Continental_supplies +-- ["Assault Team"] = "", -- A_Classic_Fairytale:backstab +-- ["As the ammo is sparse, you might want to reuse ropes while mid-air.|"] = "", -- A_Classic_Fairytale:dragon +-- ["As the challenge was completed, Leaks A Lot set foot on the ground..."] = "", -- A_Classic_Fairytale:first_blood +-- ["As you can see, there is no way to get on the other side!"] = "", -- A_Classic_Fairytale:dragon +-- ["Attack From Rope"] = "", -- WxW +-- ["Australia"] = "", -- Continental_supplies -- ["Available points remaining: "] = "", +-- ["Back Breaker"] = "", -- A_Classic_Fairytale:backstab +-- ["Back in the village, after telling the villagers about the threat..."] = "", -- A_Classic_Fairytale:united -- ["[Backspace]"] = "", +-- ["Backstab"] = "", -- A_Classic_Fairytale:backstab +-- ["Bad Team"] = "", -- User_Mission_-_The_Great_Escape -- ["Bamboo Thicket"] = "", -- ["Barrel Eater!"] = "", -- ["Barrel Launcher"] = "", +-- ["Baseballbat"] = "", -- Continental_supplies -- ["Bat balls at your enemies and|push them into the sea!"] = "", -- ["Bat your opponents through the|baskets and out of the map!"] = "", -- ["Bazooka Training"] = "", +-- ["Beep Loopers"] = "", -- A_Classic_Fairytale:queen -- ["Best laps per team: "] = "", -- ["Best Team Times: "] = "", +-- ["Beware, though! If you are slow, you die!"] = "", -- A_Classic_Fairytale:dragon +-- ["Biomechanic Team"] = "", -- A_Classic_Fairytale:family +-- ["Blender"] = "", -- A_Classic_Fairytale:family +-- ["Bloodpie"] = "", -- A_Classic_Fairytale:backstab +-- ["Bloodrocutor"] = "", -- A_Classic_Fairytale:shadow +-- ["Bloodsucker"] = "", -- A_Classic_Fairytale:shadow -- ["Bloody Rookies"] = "", -- 01#Boot_Camp, User_Mission_-_Dangerous_Ducklings, User_Mission_-_Diver, User_Mission_-_Spooky_Tree +-- ["Bone Jackson"] = "", -- A_Classic_Fairytale:backstab +-- ["Bonely"] = "", -- A_Classic_Fairytale:shadow -- ["Boom!"] = "", -- ["BOOM!"] = "", -- ["Boss defeated!"] = "", -- ["Boss Slayer!"] = "", +-- ["Brain Blower"] = "", -- A_Classic_Fairytale:journey +-- ["Brainiac"] = "", -- A_Classic_Fairytale:epil, A_Classic_Fairytale:first_blood, A_Classic_Fairytale:shadow +-- ["Brainila"] = "", -- A_Classic_Fairytale:united +-- ["Brain Stu"] = "", -- A_Classic_Fairytale:united +-- ["Brain Teaser"] = "", -- A_Classic_Fairytale:backstab +-- ["Brutal Lily"] = "", -- A_Classic_Fairytale:enemy, A_Classic_Fairytale:epil +-- ["Brutus"] = "", -- A_Classic_Fairytale:backstab -- ["Build a track and race."] = "", +-- ["Bullseye"] = "", -- A_Classic_Fairytale:dragon +-- ["But it proved to be no easy task!"] = "", -- A_Classic_Fairytale:dragon +-- ["But that's impossible!"] = "", -- A_Classic_Fairytale:backstab +-- ["But the ones alive are stronger in their heart!"] = "", -- A_Classic_Fairytale:enemy +-- ["But...we died!"] = "", -- A_Classic_Fairytale:backstab +-- ["But where can we go?"] = "", -- A_Classic_Fairytale:united +-- ["But why would they help us?"] = "", -- A_Classic_Fairytale:backstab +-- ["But you're cannibals. It's what you do."] = "", -- A_Classic_Fairytale:enemy +-- ["But you said you'd let her go!"] = "", -- A_Classic_Fairytale:journey +-- ["Call me Beep! Well, 'cause I'm such a nice...person!"] = "", -- A_Classic_Fairytale:family +-- ["Cannibals"] = "", -- A_Classic_Fairytale:enemy, A_Classic_Fairytale:epil, A_Classic_Fairytale:first_blood +-- ["Cannibal Sentry"] = "", -- A_Classic_Fairytale:journey +-- ["Cannibals?! You're the cannibals!"] = "", -- A_Classic_Fairytale:enemy -- ["CAPTURE THE FLAG"] = "", -- ["Careless"] = "", +-- ["Carol"] = "", -- A_Classic_Fairytale:family +-- ["CHALLENGE COMPLETE"] = "", -- User_Mission_-_RCPlane_Challenge -- ["Change Weapon"] = "", +-- ["Choose your side! If you want to join the strange man, walk up to him.|Otherwise, walk away from him. If you decide to att...nevermind..."] = "", -- A_Classic_Fairytale:shadow -- ["Clumsy"] = "", +-- ["Cluster Bomb MASTER!"] = "", -- Basic_Training_-_Cluster_Bomb +-- ["Cluster Bomb Training"] = "", -- Basic_Training_-_Cluster_Bomb -- ["Codename: Teamwork"] = "", +-- ["Collateral Damage"] = "", -- A_Classic_Fairytale:journey +-- ["Collateral Damage II"] = "", -- A_Classic_Fairytale:journey +-- ["Collect all the crates, but remember, our time in this life is limited!"] = "", -- A_Classic_Fairytale:first_blood +-- ["Collect or destroy all the health crates."] = "", -- User_Mission_-_RCPlane_Challenge +-- ["Collect the crate on the right.|Hint: Select the rope, [Up] or [Down] to aim, [Space] to fire, directional keys to move.|Ropes can be fired again in the air!"] = "", -- A_Classic_Fairytale:first_blood +-- ["Collect the crates within the time limit!|If you fail, you'll have to try again."] = "", -- A_Classic_Fairytale:first_blood +-- ["Come closer, so that your training may continue!"] = "", -- A_Classic_Fairytale:first_blood +-- ["Compete to use as few planes as possible!"] = "", -- User_Mission_-_RCPlane_Challenge -- ["Complete the track as fast as you can!"] = "", +-- ["COMPLETION TIME"] = "", -- User_Mission_-_Rope_Knock_Challenge +-- ["Configuration accepted."] = "", -- WxW -- ["Congratulations!"] = "", +-- ["Congratulations"] = "", -- Basic_Training_-_Rope +-- ["Congratulations! You needed only half of time|to eliminate all targets."] = "", -- Basic_Training_-_Cluster_Bomb +-- ["Congratulations! You've completed the Rope tutorial! |- Tutorial ends in 10 seconds!"] = "", -- Basic_Training_-_Rope -- ["Congratulations! You've eliminated all targets|within the allowed time frame."] = "", --Bazooka, Shotgun, SniperRifle +-- ["Continental supplies"] = "", -- Continental_supplies -- ["Control pillars to score points."] = "", +-- ["Corporationals"] = "", -- A_Classic_Fairytale:queen +-- ["Corpsemonger"] = "", -- A_Classic_Fairytale:shadow +-- ["Corpse Thrower"] = "", -- A_Classic_Fairytale:epil +-- ["Crates Left:"] = "", -- User_Mission_-_RCPlane_Challenge -- ["Cybernetic Empire"] = "", +-- ["Cyborg. It's what the aliens call themselves."] = "", -- A_Classic_Fairytale:enemy +-- ["Dahmer"] = "", -- A_Classic_Fairytale:backstab -- ["DAMMIT, ROOKIE!"] = "", -- ["DAMMIT, ROOKIE! GET OFF MY HEAD!"] = "", -- ["Dangerous Ducklings"] = "", -- ["Deadweight"] = "", +-- ["Defeat the cannibals"] = "", -- A_Classic_Fairytale:backstab +-- ["Defeat the cannibals!|"] = "", -- A_Classic_Fairytale:united +-- ["Defeat the cannibals!|Grenade hint: set the timer with [1-5], aim with [Up]/[Down] and hold [Space] to set power"] = "", -- A_Classic_Fairytale:shadow +-- ["Defeat the cyborgs!"] = "", -- A_Classic_Fairytale:enemy +-- ["Defend yourself!|Hint: You can get tips on using weapons by moving your mouse over them in the weapon selection menu"] = "", -- A_Classic_Fairytale:shadow -- ["Demolition is fun!"] = "", +-- ["Dense Cloud"] = "", -- A_Classic_Fairytale:backstab, A_Classic_Fairytale:dragon, A_Classic_Fairytale:enemy, A_Classic_Fairytale:epil, A_Classic_Fairytale:family, A_Classic_Fairytale:journey, A_Classic_Fairytale:queen, A_Classic_Fairytale:shadow, A_Classic_Fairytale:united +-- ["Dense Cloud must have already told them everything..."] = "", -- A_Classic_Fairytale:shadow -- ["Depleted Kamikaze!"] = "", +-- ["Destroy him, Leaks A Lot! He is responsible for the deaths of many of us!"] = "", -- A_Classic_Fairytale:first_blood -- ["Destroy invaders to score points."] = "", +-- ["Destroy the targets!|Hint: Select the Shoryuken and hit [Space]|P.S. You can use it mid-air."] = "", -- A_Classic_Fairytale:first_blood +-- ["Destroy the targets!|Hint: [Up], [Down] to aim, [Space] to shoot"] = "", -- A_Classic_Fairytale:first_blood +-- ["Did anyone follow you?"] = "", -- A_Classic_Fairytale:united +-- ["Did you see him coming?"] = "", -- A_Classic_Fairytale:shadow +-- ["Did you warn the village?"] = "", -- A_Classic_Fairytale:shadow +-- ["Die, die, die!"] = "", -- A_Classic_Fairytale:dragon +-- ["Disguise as a Rockhopper Penguin: [Swap place with a random enemy hog in the circle]"] = "", -- Continental_supplies +-- ["Dist: "] = "", -- Space_Invasion +-- ["Do not laugh, inexperienced one, for he speaks the truth!"] = "", -- A_Classic_Fairytale:backstab +-- ["Do not let his words fool you, young one! He will stab you in the back as soon as you turn away!"] = "", -- A_Classic_Fairytale:first_blood +-- ["Do the deed"] = "", -- A_Classic_Fairytale:first_blood -- ["Double Kill!"] = "", +-- ["DOUBLE KILL"] = "", -- Mutant +-- ["Do you have any idea how valuable grass is?"] = "", -- A_Classic_Fairytale:enemy +-- ["Do you think you're some kind of god?"] = "", -- A_Classic_Fairytale:enemy +-- ["Dragon's Lair"] = "", -- A_Classic_Fairytale:dragon +-- ["Drills"] = "", -- A_Classic_Fairytale:backstab -- ["Drone Hunter!"] = "", +-- ["Drop a bomb: [drop some heroic wind that will turn into a bomb on impact]"] = "", -- Continental_supplies -- ["Drowner"] = "", +-- ["Dude, all the plants are gone!"] = "", -- A_Classic_Fairytale:family +-- ["Dude, can you see Ramon and Spiky?"] = "", -- A_Classic_Fairytale:journey +-- ["Dude, that's so cool!"] = "", -- A_Classic_Fairytale:backstab +-- ["Dude, we really need a new shaman..."] = "", -- A_Classic_Fairytale:shadow +-- ["Dude, what's this place?!"] = "", -- A_Classic_Fairytale:dragon +-- ["Dude, where are we?"] = "", -- A_Classic_Fairytale:backstab +-- ["Dude, wow! I just had the weirdest high!"] = "", -- A_Classic_Fairytale:backstab +-- ["Duration"] = "", -- Continental_supplies +-- ["Dust storm: [Deals 20 damage to all enemies in the circle]"] = "", -- Continental_supplies -- ["Each turn you get 1-3 random weapons"] = "", -- ["Each turn you get one random weapon"] = "", +-- ["Eagle Eye"] = "", -- A_Classic_Fairytale:backstab +-- ["Eagle Eye: [Blink to the impact ~ one shot]"] = "", -- Continental_supplies +-- ["Ear Sniffer"] = "", -- A_Classic_Fairytale:backstab, A_Classic_Fairytale:epil +-- ["Elderbot"] = "", -- A_Classic_Fairytale:family +-- ["Elimate your captor."] = "", -- User_Mission_-_The_Great_Escape -- ["Eliminate all enemies"] = "", -- ["Eliminate all targets before your time runs out.|You have unlimited ammo for this mission."] = "", --Bazooka, Shotgun, SniperRifle +-- ["Eliminate enemy hogs and take their weapons."] = "", -- Highlander -- ["Eliminate Poison before the time runs out"] = "", -- ["Eliminate the Blue Team"] = "", -- ["Eliminate the enemy before the time runs out"] = "", -- User_Mission_-_Bamboo_Thicket, User_Mission_-_Newton_and_the_Hammock -- ["Eliminate the enemy hogs to win."] = "", -- ["Eliminate the enemy specialists."] = "", -- ["- Eliminate Unit 3378 |- Feeble Resistance must survive"] = "", +-- ["Elmo"] = "", -- A_Classic_Fairytale:dragon, A_Classic_Fairytale:family, A_Classic_Fairytale:queen -- ["Energetic Engineer"] = "", -- ["Enjoy the swim..."] = "", -- ["[Enter]"] = "", +-- ["Europe"] = "", -- Continental_supplies +-- [" ever done to you?!"] = "", -- A_Classic_Fairytale:backstab +-- ["Everyone knows this."] = "", -- A_Classic_Fairytale:enemy +-- ["Every single time!"] = "", -- A_Classic_Fairytale:dragon +-- ["Everything looks OK..."] = "", -- A_Classic_Fairytale:enemy +-- ["Exactly, man! That was my dream."] = "", -- A_Classic_Fairytale:backstab +-- ["Eye Chewer"] = "", -- A_Classic_Fairytale:journey +-- ["FAG"] = "", -- Mutant +-- ["Family Reunion"] = "", -- A_Classic_Fairytale:family -- ["Fastest lap: "] = "", -- ["Feeble Resistance"] = "", +-- ["Fell From Grace"] = "", -- A_Classic_Fairytale:backstab, A_Classic_Fairytale:dragon, A_Classic_Fairytale:enemy, A_Classic_Fairytale:epil, A_Classic_Fairytale:family, A_Classic_Fairytale:queen +-- ["Fell From Heaven"] = "", -- A_Classic_Fairytale:enemy, A_Classic_Fairytale:epil, A_Classic_Fairytale:family, A_Classic_Fairytale:first_blood, A_Classic_Fairytale:journey, A_Classic_Fairytale:queen +-- ["Fell From Heaven is the best! Fell From Heaven is the greatest!"] = "", -- A_Classic_Fairytale:family +-- ["Femur Lover"] = "", -- A_Classic_Fairytale:shadow +-- ["Fierce Competition!"] = "", -- Space_Invasion +-- ["Fiery Water"] = "", -- A_Classic_Fairytale:backstab, A_Classic_Fairytale:dragon, A_Classic_Fairytale:enemy, A_Classic_Fairytale:epil, A_Classic_Fairytale:family, A_Classic_Fairytale:queen, A_Classic_Fairytale:united +-- ["Find your tribe!|Cross the lake!"] = "", -- A_Classic_Fairytale:dragon +-- ["Finish your training|Hint: Animations can be skipped with the [Precise] key."] = "", -- A_Classic_Fairytale:first_blood -- ["Fire"] = "", +-- ["Fire a mine: [Does what it says ~ Cant be dropped close to an enemy ~ 1 sec]"] = "", -- Continental_supplies +-- ["First aid kits?!"] = "", -- A_Classic_Fairytale:united +-- ["First Blood"] = "", -- A_Classic_Fairytale:first_blood +-- ["FIRST BLOOD MUTATES"] = "", -- Mutant +-- ["First Steps"] = "", -- A_Classic_Fairytale:first_blood -- ["Flag captured!"] = "", -- ["Flag respawned!"] = "", -- ["Flag returned!"] = "", -- ["Flags, and their home base will be placed where each team ends their first turn."] = "", -- ["Flamer"] = "", +-- ["Flaming Worm"] = "", -- A_Classic_Fairytale:backstab +-- ["Flare: [fire up some bombs depending on hogs depending on hogs in the circle"] = "", -- Continental_supplies +-- ["Flesh for Brainz"] = "", -- A_Classic_Fairytale:journey +-- ["For improved features/stability, play 0.9.18+"] = "", -- WxW +-- ["Free Dense Cloud and continue the mission!"] = "", -- A_Classic_Fairytale:journey -- ["Friendly Fire!"] = "", -- ["fuel extended!"] = "", -- ["GAME BEGUN!!!"] = "", -- ["Game Modifiers: "] = "", -- ["GAME OVER!"] = "", -- ["Game Started!"] = "", +-- ["Game? Was this a game to you?!"] = "", -- A_Classic_Fairytale:enemy +-- ["GasBomb"] = "", -- Continental_supplies +-- ["Gas Gargler"] = "", -- A_Classic_Fairytale:queen +-- ["Get Dense Cloud out of the pit!"] = "", -- A_Classic_Fairytale:journey -- ["Get on over there and take him out!"] = "", +-- ["Get on the head of the mole"] = "", -- A_Classic_Fairytale:first_blood +-- ["Get out of there!"] = "", -- User_Mission_-_The_Great_Escape +-- ["Get that crate!"] = "", -- A_Classic_Fairytale:first_blood +-- ["Get the crate on the other side of the island!|"] = "", -- A_Classic_Fairytale:journey +-- ["Get to the target using your rope! |Controls: Left & Right to swing the rope - Up & Down to Contract and Expand!"] = "", -- Basic_Training_-_Rope +-- ["Get your teammates out of their natural prison and save the princess!|Hint: Drilling holes should solve everything.|Hint: It might be a good idea to place a girder before starting to drill. Just saying.|Hint: All your hedgehogs need to be above the marked height!|Hint: Leaks A Lot needs to get really close to the princess!"] = "", -- A_Classic_Fairytale:family +-- ["GG!"] = "", -- User_Mission_-_Rope_Knock_Challenge +-- ["Gimme Bones"] = "", -- A_Classic_Fairytale:backstab +-- ["Glark"] = "", -- A_Classic_Fairytale:shadow -- ["Goal"] = "", -- ["GO! GO! GO!"] = "", -- ["Good birdy......"] = "", +-- ["Good Dude"] = "", -- User_Mission_-_The_Great_Escape +-- ["Good idea, they'll never find us there!"] = "", -- A_Classic_Fairytale:united +-- ["Good luck...or else!"] = "", -- A_Classic_Fairytale:journey -- ["Good luck out there!"] = "", -- ["Good so far!"] = "", -- ["Good to go!"] = "", +-- ["Go on top of the flower"] = "", -- A_Classic_Fairytale:first_blood +-- ["Go, quick!"] = "", -- A_Classic_Fairytale:backstab +-- ["Gorkij"] = "", -- A_Classic_Fairytale:journey +-- ["Go surf!"] = "", -- WxW -- ["GOTCHA!"] = "", -- ["Grab Mines/Explosives"] = "", +-- ["Great choice, Steve! Mind if I call you that?"] = "", -- A_Classic_Fairytale:shadow +-- ["Great work! Now hit it with your Baseball Bat! |Tip: You can change weapon with 'Right Click'!"] = "", -- Basic_Training_-_Rope +-- ["Great! You will be contacted soon for assistance."] = "", -- A_Classic_Fairytale:shadow +-- ["Green lipstick bullet: [Is poisonous]"] = "", -- Continental_supplies +-- ["Greetings, "] = "", -- A_Classic_Fairytale:dragon +-- ["Greetings, cloudy one!"] = "", -- A_Classic_Fairytale:shadow +-- ["Grenade Training"] = "", -- Basic_Training_-_Grenade +-- ["Grenadiers"] = "", -- Basic_Training_-_Grenade +-- ["Guys, do you think there's more of them?"] = "", -- A_Classic_Fairytale:backstab +-- ["HAHA!"] = "", -- A_Classic_Fairytale:enemy +-- ["Haha!"] = "", -- A_Classic_Fairytale:united -- ["Hahahaha!"] = "", -- ["Haha, now THAT would be something!"] = "", +-- ["Hannibal"] = "", -- A_Classic_Fairytale:epil -- ["Hapless Hogs"] = "", -- [" Hapless Hogs left!"] = "", +-- [" HAS MUTATED\" )"] = "", -- +-- ["Hatless Jerry"] = "", -- A_Classic_Fairytale:queen +-- ["Have no illusions, your tribe is dead, indifferent of your choice."] = "", -- A_Classic_Fairytale:shadow +-- ["Have we ever attacked you first?"] = "", -- A_Classic_Fairytale:enemy -- ["Health crates extend your time."] = "", -- ["Heavy"] = "", +-- ["Heavy Cannfantry"] = "", -- A_Classic_Fairytale:united +-- ["Hedge-cogs"] = "", -- A_Classic_Fairytale:enemy +-- ["Hedgehog projectile: [fire your hog like a Sticky Bomb]"] = "", -- Continental_supplies -- ["Hedgewars-Basketball"] = "", -- ["Hedgewars-Knockball"] = "", +-- ["Hedgibal Lecter"] = "", -- A_Classic_Fairytale:backstab -- ["Heh, it's not that bad."] = "", +-- ["Hello again, "] = "", -- A_Classic_Fairytale:family +-- ["Help me, Leaks!"] = "", -- A_Classic_Fairytale:journey +-- ["Help me, please!!!"] = "", -- A_Classic_Fairytale:journey +-- ["Help me, please!"] = "", -- A_Classic_Fairytale:journey +-- ["He moves like an eagle in the sky."] = "", -- A_Classic_Fairytale:first_blood +-- ["He must be in the village already."] = "", -- A_Classic_Fairytale:journey +-- ["Here, let me help you!"] = "", -- A_Classic_Fairytale:backstab +-- ["Here, let me help you save her!"] = "", -- A_Classic_Fairytale:family +-- ["Here...pick your weapon!"] = "", -- A_Classic_Fairytale:first_blood +-- ["Hero Team"] = "", -- User_Mission_-_The_Great_Escape +-- ["He's so brave..."] = "", -- A_Classic_Fairytale:first_blood +-- ["He won't be selling us out anymore!"] = "", -- A_Classic_Fairytale:backstab +-- ["Hey, guys!"] = "", -- A_Classic_Fairytale:backstab +-- ["Hey guys!"] = "", -- A_Classic_Fairytale:united +-- ["Hey! This is cheating!"] = "", -- A_Classic_Fairytale:journey +-- ["HIGHLANDER"] = "", -- Highlander +-- ["Hightime"] = "", -- A_Classic_Fairytale:first_blood +-- ["Hint: Double Jump - Press [Backspace] twice"] = "", -- A_Classic_Fairytale:first_blood +-- ["Hint: Select the BlowTorch, aim and press [Fire]. Press [Fire] again to stop.|Don't blow up the crate."] = "", -- A_Classic_Fairytale:journey +-- ["Hint: Select the LowGravity and press [Fire]."] = "", -- A_Classic_Fairytale:journey +-- ["Hint: you might want to stay out of sight and take all the crates...|"] = "", -- A_Classic_Fairytale:journey +-- ["His arms are so strong!"] = "", -- A_Classic_Fairytale:first_blood -- ["Hit Combo!"] = "", -- ["Hmmm..."] = "", +-- ["Hmmm...actually...I didn't either."] = "", -- A_Classic_Fairytale:enemy +-- ["Hmmm, I'll have to find some way of moving him off this anti-portal surface..."] = "", -- portal +-- ["Hmmm...it's a draw. How unfortunate!"] = "", -- A_Classic_Fairytale:enemy +-- ["Hmmm...perhaps a little more time will help."] = "", -- A_Classic_Fairytale:first_blood +-- ["Hogminator"] = "", -- A_Classic_Fairytale:family +-- ["Hogs in sight!"] = "", -- Continental_supplies +-- ["HOLY SHIT!"] = "", -- Mutant +-- ["Honest Lee"] = "", -- A_Classic_Fairytale:enemy -- ["Hooray!"] = "", +-- ["Hostage Situation"] = "", -- A_Classic_Fairytale:family +-- ["How can I ever repay you for saving my life?"] = "", -- A_Classic_Fairytale:journey +-- ["How come in a village full of warriors, it's up to me to save it?"] = "", -- A_Classic_Fairytale:dragon +-- ["How difficult would you like it to be?"] = "", -- A_Classic_Fairytale:first_blood +-- ["HOW DO THEY KNOW WHERE WE ARE???"] = "", -- A_Classic_Fairytale:united +-- ["However, if you fail to do so, she dies a most violent death, just like your friend! Muahahaha!"] = "", -- A_Classic_Fairytale:journey +-- ["However, if you fail to do so, she dies a most violent death! Muahahaha!"] = "", -- A_Classic_Fairytale:journey +-- ["However, my mates don't agree with me on letting you go..."] = "", -- A_Classic_Fairytale:dragon +-- [" HP"] = "", -- Mutant -- ["Hunter"] = "", --Bazooka, Shotgun, SniperRifle +-- ["I believe there's more of them."] = "", -- A_Classic_Fairytale:backstab +-- ["I can see you have been training diligently."] = "", -- A_Classic_Fairytale:first_blood +-- ["I can't believe it worked!"] = "", -- A_Classic_Fairytale:shadow +-- ["I can't believe this!"] = "", -- A_Classic_Fairytale:enemy +-- ["I can't believe what I'm hearing!"] = "", -- A_Classic_Fairytale:backstab +-- ["I can't wait any more, I have to save myself!"] = "", -- A_Classic_Fairytale:shadow +-- ["I could just teleport myself there..."] = "", -- A_Classic_Fairytale:family +-- ["I'd better get going myself."] = "", -- A_Classic_Fairytale:journey +-- ["I didn't until about a month ago."] = "", -- A_Classic_Fairytale:enemy +-- ["I don't know how you did that.. But good work! |The next one should be easy as cake for you!"] = "", -- Basic_Training_-_Rope +-- ["I feel something...a place! They will arrive near the circles!"] = "", -- A_Classic_Fairytale:backstab +-- ["If only I had a way..."] = "", -- A_Classic_Fairytale:backstab +-- ["If only I were given a chance to explain my being here..."] = "", -- A_Classic_Fairytale:first_blood +-- ["I forgot that she's the daughter of the chief, too..."] = "", -- A_Classic_Fairytale:backstab +-- ["If they try coming here, they can have a taste of my delicious knuckles!"] = "", -- A_Classic_Fairytale:united +-- ["If you agree to provide the information we need, you will be spared!"] = "", -- A_Classic_Fairytale:shadow +-- ["If you can get that crate fast enough, your beloved \"princess\" may go free."] = "", -- A_Classic_Fairytale:journey +-- ["If you decide to help us, though, we will no longer need to find a new governor for the island."] = "", -- A_Classic_Fairytale:shadow +-- ["If you get stuck, use your Desert Eagle or restart the mission!|"] = "", -- A_Classic_Fairytale:journey +-- ["If you know what I mean..."] = "", -- A_Classic_Fairytale:shadow +-- ["If you say so..."] = "", -- A_Classic_Fairytale:shadow +-- ["If you wish to restart the course, hold [Precise] while your turn ends (e.g with Skip)"] = "", -- +-- ["I guess you'll have to kill them."] = "", -- A_Classic_Fairytale:dragon +-- ["I have come to make you an offering..."] = "", -- A_Classic_Fairytale:shadow +-- ["I have no idea where that mole disappeared...Can you see it?"] = "", -- A_Classic_Fairytale:shadow +-- ["I have to follow that alien."] = "", -- A_Classic_Fairytale:backstab +-- ["I have to get back to the village!"] = "", -- A_Classic_Fairytale:shadow +-- ["I hope you are prepared for a small challenge, young one."] = "", -- A_Classic_Fairytale:first_blood +-- ["I just don't want to sink to your level."] = "", -- A_Classic_Fairytale:backstab +-- ["I just found out that they have captured your princess!"] = "", -- A_Classic_Fairytale:family +-- ["I just wonder where Ramon and Spiky disappeared..."] = "", -- A_Classic_Fairytale:journey +-- ["I'll hold them off while you return to the village!"] = "", -- A_Classic_Fairytale:shadow +-- ["Imagine those targets are the wolves that killed your parents! Take your anger out on them!"] = "", -- A_Classic_Fairytale:first_blood +-- ["I'm...alive? How? Why?"] = "", -- A_Classic_Fairytale:backstab +-- ["I'm a ninja."] = "", -- A_Classic_Fairytale:dragon +-- ["I marked the place of their arrival. You're welcome!"] = "", -- A_Classic_Fairytale:backstab +-- ["I'm certain that this is a misunderstanding, fellow hedgehogs!"] = "", -- A_Classic_Fairytale:first_blood +-- ["I mean, none of you ceased to live."] = "", -- A_Classic_Fairytale:enemy +-- ["I'm getting old for this!"] = "", -- A_Classic_Fairytale:family +-- ["I'm getting thirsty..."] = "", -- A_Classic_Fairytale:family +-- ["I'm here to help you rescue her."] = "", -- A_Classic_Fairytale:family +-- ["I'm not sure about that!"] = "", -- A_Classic_Fairytale:united +-- ["Impressive...you are still dry as the corpse of a hawk after a week in the desert..."] = "", -- A_Classic_Fairytale:first_blood +-- ["I'm so scared!"] = "", -- A_Classic_Fairytale:united +-- ["Incredible..."] = "", -- A_Classic_Fairytale:shadow +-- ["I need to find the others!"] = "", -- A_Classic_Fairytale:backstab +-- ["I need to get to the other side of this island, fast!"] = "", -- A_Classic_Fairytale:journey +-- ["I need to move the tribe!"] = "", -- A_Classic_Fairytale:united +-- ["I need to prevent their arrival!"] = "", -- A_Classic_Fairytale:backstab +-- ["I need to warn the others."] = "", -- A_Classic_Fairytale:backstab +-- ["In fact, you are the only one that's been acting strangely."] = "", -- A_Classic_Fairytale:backstab +-- ["In order to get to the other side, you need to collect the crates first.|"] = "", -- A_Classic_Fairytale:dragon -- ["Instructor"] = "", -- 01#Boot_Camp, User_Mission_-_Dangerous_Ducklings +-- ["Interesting idea, haha!"] = "", -- A_Classic_Fairytale:enemy +-- ["Interesting! Last time you said you killed a cannibal!"] = "", -- A_Classic_Fairytale:backstab +-- ["In the meantime, take these and return to your \"friend\"!"] = "", -- A_Classic_Fairytale:shadow -- ["invaders destroyed"] = "", +-- ["Invasion"] = "", -- A_Classic_Fairytale:united +-- ["I saw it with my own eyes!"] = "", -- A_Classic_Fairytale:shadow +-- ["I see..."] = "", -- A_Classic_Fairytale:shadow +-- ["I see you have already taken the leap of faith."] = "", -- A_Classic_Fairytale:first_blood +-- ["I see you would like his punishment to be more...personal..."] = "", -- A_Classic_Fairytale:first_blood +-- ["I sense another wave of cannibals heading my way!"] = "", -- A_Classic_Fairytale:backstab +-- ["I sense another wave of cannibals heading our way!"] = "", -- A_Classic_Fairytale:backstab +-- ["I shouldn't have drunk that last pint."] = "", -- A_Classic_Fairytale:dragon +-- ["Is this place in my head?"] = "", -- A_Classic_Fairytale:dragon +-- ["It doesn't matter. I won't let that alien hurt my daughter!"] = "", -- A_Classic_Fairytale:dragon +-- ["I think we are safe here."] = "", -- A_Classic_Fairytale:backstab +-- ["I thought their shaman died when he tried our medicine!"] = "", -- A_Classic_Fairytale:shadow +-- ["It is called 'Hogs of Steel'."] = "", -- A_Classic_Fairytale:enemy +-- ["It is time to practice your fighting skills."] = "", -- A_Classic_Fairytale:first_blood +-- ["It must be a childhood trauma..."] = "", -- A_Classic_Fairytale:family +-- ["It must be the aliens!"] = "", -- A_Classic_Fairytale:backstab +-- ["It must be the aliens' deed."] = "", -- A_Classic_Fairytale:backstab +-- ["It must be the cyborgs again!"] = "", -- A_Classic_Fairytale:enemy +-- ["I told you, I just found them."] = "", -- A_Classic_Fairytale:backstab -- ["It's a good thing SUDDEN DEATH is 99 turns away..."] = "", +-- ["It's always up to women to clear up the mess men created!"] = "", -- A_Classic_Fairytale:dragon +-- ["It's a shame, I forgot how to do that!"] = "", -- A_Classic_Fairytale:family +-- ["It's impossible to communicate with the spirits without a shaman."] = "", -- A_Classic_Fairytale:shadow +-- ["It's over..."] = "", -- A_Classic_Fairytale:shadow +-- ["It's time you learned that your actions have consequences!"] = "", -- A_Classic_Fairytale:journey +-- ["It's worth more than wood!"] = "", -- A_Classic_Fairytale:enemy +-- ["It wants our brains!"] = "", -- A_Classic_Fairytale:shadow +-- ["It was not a dream, unwise one!"] = "", -- A_Classic_Fairytale:backstab +-- ["I've seen this before. They just appear out of thin air."] = "", -- A_Classic_Fairytale:united +-- ["I want to play a game..."] = "", -- A_Classic_Fairytale:journey +-- ["I want to see how it handles this!"] = "", -- A_Classic_Fairytale:backstab +-- ["I wish to help you, "] = "", -- A_Classic_Fairytale:dragon +-- ["I wonder where Dense Cloud is..."] = "", -- A_Classic_Fairytale:journey, A_Classic_Fairytale:shadow +-- ["I wonder why I'm so angry all the time..."] = "", -- A_Classic_Fairytale:family +-- ["I won't let you kill her!"] = "", -- A_Classic_Fairytale:journey +-- ["Jack"] = "", -- A_Classic_Fairytale:dragon, A_Classic_Fairytale:family, A_Classic_Fairytale:queen +-- ["Jeremiah"] = "", -- A_Classic_Fairytale:dragon +-- ["John"] = "", -- A_Classic_Fairytale:journey +-- ["Judas"] = "", -- A_Classic_Fairytale:backstab -- ["Jumping is disabled"] = "", +-- ["Just kidding, none of you have died!"] = "", -- A_Classic_Fairytale:enemy +-- ["Just on a walk."] = "", -- A_Classic_Fairytale:united +-- ["Just wait till I get my hands on that trauma! ARGH!"] = "", -- A_Classic_Fairytale:family -- ["Kamikaze Expert!"] = "", -- ["Keep it up!"] = "", +-- ["Kerguelen"] = "", -- Continental_supplies -- ["Killing spree!"] = "", +-- ["KILL IT!"] = "", -- A_Classic_Fairytale:first_blood -- ["KILLS"] = "", +-- ["Kill the aliens!"] = "", -- A_Classic_Fairytale:dragon +-- ["Kill the cannibal!"] = "", -- A_Classic_Fairytale:first_blood +-- ["Kill the traitor...or spare his life!|Kill him or press [Precise]!"] = "", -- A_Classic_Fairytale:backstab -- ["Last Target!"] = "", +-- ["Leader"] = "", -- A_Classic_Fairytale:enemy +-- ["Leaderbot"] = "", -- A_Classic_Fairytale:queen +-- ["Leaks A Lot"] = "", -- A_Classic_Fairytale:backstab, A_Classic_Fairytale:dragon, A_Classic_Fairytale:enemy, A_Classic_Fairytale:epil, A_Classic_Fairytale:family, A_Classic_Fairytale:first_blood, A_Classic_Fairytale:journey, A_Classic_Fairytale:queen, A_Classic_Fairytale:shadow, A_Classic_Fairytale:united +-- ["Leaks A Lot, depressed for killing his loved one, failed to save the village..."] = "", -- A_Classic_Fairytale:journey +-- ["Leaks A Lot gave his life for his tribe! He should have survived!"] = "", -- A_Classic_Fairytale:first_blood +-- ["Leaks A Lot must survive!"] = "", -- A_Classic_Fairytale:journey +-- ["Led Heart"] = "", -- A_Classic_Fairytale:queen +-- ["Lee"] = "", -- A_Classic_Fairytale:dragon, A_Classic_Fairytale:family, A_Classic_Fairytale:queen -- ["[Left Shift]"] = "", +-- ["Let a Continent provide your weapons!"] = "", -- Continental_supplies +-- ["Let me test your skills a little, will you?"] = "", -- A_Classic_Fairytale:journey +-- ["Let's go home!"] = "", -- A_Classic_Fairytale:journey +-- ["Let's head back to the village!"] = "", -- A_Classic_Fairytale:shadow +-- ["Let's see what your comrade does now!"] = "", -- A_Classic_Fairytale:journey +-- ["Let's show those cannibals what we're made of!"] = "", -- A_Classic_Fairytale:backstab +-- ["Let them have a taste of my fury!"] = "", -- A_Classic_Fairytale:backstab +-- ["Let us help, too!"] = "", -- A_Classic_Fairytale:backstab +-- ["Light Cannfantry"] = "", -- A_Classic_Fairytale:united -- ["Listen up, maggot!!"] = "", +-- ["Little did they know that this hunt will mark them forever..."] = "", -- A_Classic_Fairytale:shadow -- ["Lively Lifeguard"] = "", +-- ["Lonely Cries: [Rise the water if no hog is in the circle and deal 1 damage to all hogs]"] = "", -- Continental_supplies +-- ["Look, I had no choice!"] = "", -- A_Classic_Fairytale:backstab +-- ["Look out! There's more of them!"] = "", -- A_Classic_Fairytale:backstab +-- ["Look out! We're surrounded by cannibals!"] = "", -- A_Classic_Fairytale:enemy +-- ["Looks like the whole world is falling apart!"] = "", -- A_Classic_Fairytale:enemy +-- ["Luckily, I've managed to snatch some of them."] = "", -- A_Classic_Fairytale:united +-- ["LUDICROUS KILL"] = "", -- Mutant +-- ["May the spirits aid you in all your quests!"] = "", -- A_Classic_Fairytale:backstab +-- ["Medicine: [Fire some exploding medicine that will heal all hogs effected by the explosion]"] = "", -- Continental_supplies +-- ["MEGA KILL"] = "", -- Mutant +-- ["Meiwes"] = "", -- A_Classic_Fairytale:backstab +-- ["Mindy"] = "", -- A_Classic_Fairytale:united -- ["Mine Deployer"] = "", -- ["Mine Eater!"] = "", -- ["|- 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 SUCCESS"] = "", -- ["MISSION SUCCESSFUL"] = "", -- User_Mission_-_Diver, User_Mission_-_Spooky_Tree, User_Mission_-_Teamwork +-- ["Molotov"] = "", -- Continental_supplies +-- ["MONSTER KILL"] = "", -- Mutant +-- ["More Natives"] = "", -- A_Classic_Fairytale:epil -- ["Movement: [Up], [Down], [Left], [Right]"] = "", -- ["Multi-shot!"] = "", +-- ["Muriel"] = "", -- A_Classic_Fairytale:backstab, A_Classic_Fairytale:dragon, A_Classic_Fairytale:family, A_Classic_Fairytale:queen +-- ["Muscle Dissolver"] = "", -- A_Classic_Fairytale:shadow +-- ["-------"] = "", -- Mutant +-- ["Nade Boy"] = "", -- Basic_Training_-_Grenade +-- ["Name"] = "", -- A_Classic_Fairytale:queen -- ["Nameless Heroes"] = "", +-- ["Nancy Screw"] = "", -- A_Classic_Fairytale:enemy, A_Classic_Fairytale:queen +-- ["Napalm rocket: [Fire a bomb with napalm!]"] = "", -- Continental_supplies +-- ["Natives"] = "", -- A_Classic_Fairytale:backstab, A_Classic_Fairytale:dragon, A_Classic_Fairytale:enemy, A_Classic_Fairytale:epil, A_Classic_Fairytale:family, A_Classic_Fairytale:first_blood, A_Classic_Fairytale:journey, A_Classic_Fairytale:queen, A_Classic_Fairytale:shadow, A_Classic_Fairytale:united -- ["New Barrels Per Turn"] = "", -- ["NEW CLAN RECORD: "] = "", -- ["NEW fastest lap: "] = "", -- ["New Mines Per Turn"] = "", -- ["NEW RACE RECORD: "] = "", -- ["Newton's Hammock"] = "", +-- ["Nicely done, meatbags!"] = "", -- A_Classic_Fairytale:enemy +-- ["Nice work, "] = "", -- A_Classic_Fairytale:dragon +-- ["Nice work!"] = "", -- A_Classic_Fairytale:enemy +-- ["Nilarian"] = "", -- A_Classic_Fairytale:queen +-- ["No, I came back to help you out..."] = "", -- A_Classic_Fairytale:shadow +-- ["No...I wonder where they disappeared?!"] = "", -- A_Classic_Fairytale:journey +-- ["Nom-Nom"] = "", -- A_Classic_Fairytale:journey +-- ["NomNom"] = "", -- A_Classic_Fairytale:united +-- ["Nope. It was one fast mole, that's for sure."] = "", -- A_Classic_Fairytale:shadow +-- ["No! Please, help me!"] = "", -- A_Classic_Fairytale:journey +-- ["NORMAL"] = "", -- Continental_supplies +-- ["North America"] = "", -- Continental_supplies +-- ["Not all hogs are born equal."] = "", -- Highlander -- ["NOT ENOUGH WAYPOINTS"] = "", +-- ["Not now, Fiery Water!"] = "", -- A_Classic_Fairytale:backstab -- ["Not So Friendly Match"] = "", -- Basketball, Knockball +-- ["Not you again! My head still hurts from last time!"] = "", -- A_Classic_Fairytale:shadow +-- ["No, we made sure of that!"] = "", -- A_Classic_Fairytale:united +-- ["Now find the next target! |Tip: Normally you lose health by falling down, so be careful!"] = "", -- Basic_Training_-_Rope +-- ["No! What have I done?! What have YOU done?!"] = "", -- A_Classic_Fairytale:journey +-- ["No. Where did he come from?"] = "", -- A_Classic_Fairytale:shadow +-- ["Now how do I get on the other side?!"] = "", -- A_Classic_Fairytale:dragon +-- ["No. You and the rest of the tribe are safer there!"] = "", -- A_Classic_Fairytale:backstab +-- ["Obliterate them!|Hint: You might want to take cover..."] = "", -- A_Classic_Fairytale:shadow +-- ["Obstacle course"] = "", -- A_Classic_Fairytale:dragon +-- ["Of course I have to save her. What did I expect?!"] = "", -- A_Classic_Fairytale:family +-- ["OH, COME ON!"] = "", -- A_Classic_Fairytale:journey +-- ["Oh, my!"] = "", -- A_Classic_Fairytale:first_blood +-- ["Oh, my! This is even more entertaining than I've expected!"] = "", -- A_Classic_Fairytale:backstab -- ["Oh no! Just try again!"] = "", -- User_Mission_-_Diver, User_Mission_-_Spooky_Tree, User_Mission_-_Teamwork +-- ["Oh no, not "] = "", -- A_Classic_Fairytale:backstab, A_Classic_Fairytale:united -- ["Oh no! Time's up! Just try again."] = "", --Bazooka, Shotgun, SniperRifle +-- ["Oh no! You failed! Just try again."] = "", -- Basic_Training_-_Cluster_Bomb +-- ["Oh, silly me! I forgot that I'm the shaman."] = "", -- A_Classic_Fairytale:backstab +-- ["Olive"] = "", -- A_Classic_Fairytale:united +-- ["Omnivore"] = "", -- A_Classic_Fairytale:first_blood +-- ["Once upon a time, on an island with great natural resources, lived two tribes in heated conflict..."] = "", -- A_Classic_Fairytale:first_blood +-- ["ONE HOG PER TEAM! KILLING EXCESS HEDGES"] = "", -- Mutant +-- ["One tribe was peaceful, spending their time hunting and training, enjoying the small pleasures of life..."] = "", -- A_Classic_Fairytale:first_blood +-- ["Oops...I dropped them."] = "", -- A_Classic_Fairytale:united +-- ["Open that crate and we will continue!"] = "", -- A_Classic_Fairytale:first_blood -- ["Operation Diver"] = "", -- ["Opposing Team: "] = "", +-- ["Orlando Boom!"] = "", -- A_Classic_Fairytale:queen +-- ["Ouch!"] = "", -- User_Mission_-_Rope_Knock_Challenge +-- ["Our tribe, our beautiful island!"] = "", -- A_Classic_Fairytale:enemy +-- ["Parachute"] = "", -- Continental_supplies -- ["Pathetic Hog #%d"] = "", -- ["Pathetic Resistance"] = "", -- User_Mission_-_Bamboo_Thicket, User_Mission_-_Newton_and_the_Hammock +-- ["Perfect! Now try to get the next crate without hurting yourself!"] = "", -- A_Classic_Fairytale:first_blood -- ["Per-Hog Ammo"] = "", +-- ["- Per team weapons|- 9 weaponschemes|- Unique new weapons| |Select continent first round with the Weapon Menu or by ([switch/tab]=Increase,[presice/left shift]=Decrease)"] = "", -- +-- ["Pfew! That was close!"] = "", -- A_Classic_Fairytale:shadow +-- ["Piñata bullet: [Contains some sweet candy!]"] = "", -- Continental_supplies +-- ["Pings left:"] = "", -- Space_Invasion -- ["Place more waypoints using [ENTER]"] = "", -- ["Place more waypoints using the 'Air Attack' weapon."] = "", +-- ["Planes Used:"] = "", -- User_Mission_-_RCPlane_Challenge +-- ["Planes Used"] = "", -- User_Mission_-_RCPlane_Challenge +-- ["Play with me!"] = "", -- A_Classic_Fairytale:shadow +-- ["Please place the way-point further from the waterline."] = "", -- Racer +-- ["Please place the way-point in the open, within the map boundaries."] = "", -- Racer +-- ["Please, stop releasing your \"smoke signals\"!"] = "", -- A_Classic_Fairytale:shadow +-- ["Point Blank Combo!"] = "", -- Space_Invasion -- ["points"] = "", -- Control, CTF_Blizzard, Basic_Training_-_Bazooka, Basic_Training_-_Shotgun, Basic_Training_-_Sniper_Rifle -- ["Poison"] = "", +-- ["Portal hint: one goes to the destination, and one is the entrance.|"] = "", -- A_Classic_Fairytale:dragon +-- ["Portal mission"] = "", -- portal -- ["Power Remaining"] = "", -- ["Prepare yourself"] = "", +-- ["Press [Enter] to accept this configuration."] = "", -- WxW +-- ["Press [Left] or [Right] to move around, [Enter] to jump"] = "", -- A_Classic_Fairytale:first_blood -- ["Press [Precise] to skip intro"] = "", +-- ["Private Novak"] = "", -- Basic_Training_-_Cluster_Bomb +-- ["Protect yourselves!|Grenade hint: set the timer with [1-5], aim with [Up]/[Down] and hold [Space] to set power"] = "", -- A_Classic_Fairytale:shadow -- ["Race complexity limit reached."] = "", -- ["RACER"] = "", +-- ["Rachel"] = "", -- A_Classic_Fairytale:dragon, A_Classic_Fairytale:family, A_Classic_Fairytale:queen +-- ["Radar Ping"] = "", -- Space_Invasion +-- ["Raging Buffalo"] = "", -- A_Classic_Fairytale:backstab, A_Classic_Fairytale:dragon, A_Classic_Fairytale:enemy, A_Classic_Fairytale:epil, A_Classic_Fairytale:family, A_Classic_Fairytale:queen, A_Classic_Fairytale:united +-- ["Ramon"] = "", -- A_Classic_Fairytale:enemy, A_Classic_Fairytale:epil, A_Classic_Fairytale:family, A_Classic_Fairytale:queen, A_Classic_Fairytale:shadow +-- ["RC PLANE TRAINING"] = "", -- User_Mission_-_RCPlane_Challenge +-- ["Really?! You thought you could harm me with your little toys?"] = "", -- A_Classic_Fairytale:shadow +-- ["Regurgitator"] = "", -- A_Classic_Fairytale:backstab +-- ["Reinforcements"] = "", -- A_Classic_Fairytale:backstab +-- ["Remember: The rope only bend around objects, |if it doesn't hit anything it's always stright!"] = "", -- Basic_Training_-_Rope +-- ["Remember this, pathetic animal: when the day comes, you will regret your blind loyalty!"] = "", -- A_Classic_Fairytale:shadow -- [" - 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 to Leaks A Lot! If you get stuck, press [Precise] to try again!"] = "", -- A_Classic_Fairytale:shadow +-- ["Righteous Beard"] = "", -- A_Classic_Fairytale:backstab, A_Classic_Fairytale:dragon, A_Classic_Fairytale:enemy, A_Classic_Fairytale:epil, A_Classic_Fairytale:family, A_Classic_Fairytale:first_blood, A_Classic_Fairytale:queen, A_Classic_Fairytale:united +-- ["ROPE-KNOCKING"] = "", -- User_Mission_-_Rope_Knock_Challenge +-- ["Rope Training"] = "", -- Basic_Training_-_Rope +-- ["Rot Molester"] = "", -- A_Classic_Fairytale:shadow -- ["Round Limit:"] = "", -- ["Round Limit"] = "", -- ["Rounds Complete: "] = "", -- ["Rounds Complete"] = "", -- ["RULES OF THE GAME [Press ESC to view]"] = "", +-- ["Rusty Joe"] = "", -- A_Classic_Fairytale:queen -- ["s|"] = "", +-- ["Sabotage: [Sabotage all hogs in the circle and deal ~10 dmg]"] = "", -- Continental_supplies +-- ["Salivaslurper"] = "", -- A_Classic_Fairytale:united +-- ["Salvation"] = "", -- A_Classic_Fairytale:family +-- ["Salvation was one step closer now..."] = "", -- A_Classic_Fairytale:dragon -- ["Save as many hapless hogs as possible!"] = "", +-- ["Save Fell From Heaven!"] = "", -- A_Classic_Fairytale:journey +-- ["Save Leaks A Lot!|Hint: The Switch utility might be of help to you."] = "", -- A_Classic_Fairytale:shadow +-- ["Save the princess! All your hogs must survive!|Hint: Kill the cyborgs first! Use the ammo very carefully!|Hint: You might want to spare a girder for cover!"] = "", -- A_Classic_Fairytale:family +-- ["Save the princess by collecting the crate in under 12 turns!"] = "", -- A_Classic_Fairytale:journey +-- ["Scalp Muncher"] = "", -- A_Classic_Fairytale:backstab -- ["SCORE"] = "", +-- ["Score"] = "", -- Mutant +-- ["Scream from a Walrus: [Deal 20 damage + 10% of your hogs health to all hogs around you and get half back]"] = "", -- Continental_supplies -- ["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 +-- ["Seduction"] = "", -- Continental_supplies +-- ["Seems like every time you take a \"walk\", the enemy find us!"] = "", -- A_Classic_Fairytale:backstab +-- ["See that crate farther on the right?"] = "", -- A_Classic_Fairytale:first_blood -- ["See ya!"] = "", +-- ["Segmentation Paul"] = "", -- A_Classic_Fairytale:dragon +-- ["Select continent!"] = "", -- Continental_supplies +-- ["Select difficulty: [Left] - easier or [Right] - harder"] = "", -- A_Classic_Fairytale:first_blood -- ["selected!"] = "", -- ["s"] = "", -- GaudyRacer, Space_Invasion +-- ["... share your beauty with the world every morning, my princess!"] = "", -- A_Classic_Fairytale:journey +-- ["She's behind that tall thingy."] = "", -- A_Classic_Fairytale:family -- ["Shield boosted! +30 power"] = "", -- ["Shield Depleted"] = "", -- ["Shield is fully recharged!"] = "", @@ -162,59 +646,338 @@ -- ["Shield OFF:"] = "", -- ["Shield ON:"] = "", -- ["Shield Seeker!"] = "", +-- ["Shotgun"] = "", -- Continental_supplies -- ["Shotgun Team"] = "", -- ["Shotgun Training"] = "", -- ["shots remaining."] = "", -- ["Silly"] = "", -- ["Sinky"] = "", +-- ["Sirius Lee"] = "", -- A_Classic_Fairytale:enemy -- ["%s is out and Team %d|scored a penalty!| |Score:"] = "", -- Basketball, Knockball -- ["%s is out and Team %d|scored a point!| |Score:"] = "", -- Basketball, Knockball +-- ["Slippery"] = "", -- A_Classic_Fairytale:journey +-- ["Smith 0.97"] = "", -- A_Classic_Fairytale:enemy +-- ["Smith 0.98"] = "", -- A_Classic_Fairytale:enemy +-- ["Smith 0.99a"] = "", -- A_Classic_Fairytale:enemy +-- ["Smith 0.99b"] = "", -- A_Classic_Fairytale:enemy +-- ["Smith 0.99f"] = "", -- A_Classic_Fairytale:enemy +-- ["Smith 1.0"] = "", -- A_Classic_Fairytale:enemy +-- ["Sniper Rifle"] = "", -- Continental_supplies +-- ["Sniper!"] = "", -- Space_Invasion -- ["Sniper Training"] = "", -- ["Sniperz"] = "", +-- ["So humiliating..."] = "", -- A_Classic_Fairytale:first_blood +-- ["South America"] = "", -- Continental_supplies +-- ["So? What will it be?"] = "", -- A_Classic_Fairytale:shadow +-- ["Spawn the crate, and attack!"] = "", -- WxW +-- ["Special Weapons:"] = "", -- Continental_supplies +-- ["Spiky Cheese"] = "", -- A_Classic_Fairytale:enemy, A_Classic_Fairytale:epil, A_Classic_Fairytale:family, A_Classic_Fairytale:queen, A_Classic_Fairytale:shadow +-- ["Spleenlover"] = "", -- A_Classic_Fairytale:united -- ["Sponge"] = "", -- ["Spooky Tree"] = "", -- ["STATUS UPDATE"] = "", -- GaudyRacer, Space_Invasion +-- ["Steel Eye"] = "", -- A_Classic_Fairytale:queen +-- ["Step By Step"] = "", -- A_Classic_Fairytale:first_blood +-- ["Steve"] = "", -- A_Classic_Fairytale:dragon, A_Classic_Fairytale:family, A_Classic_Fairytale:queen +-- ["Sticky Mine"] = "", -- Continental_supplies +-- ["Stronglings"] = "", -- A_Classic_Fairytale:shadow +-- ["Structure"] = "", -- Continental_supplies +-- ["Super Weapons"] = "", -- WxW +-- ["Surf Before Crate"] = "", -- WxW +-- ["Surfer! +15 points!"] = "", -- Space_Invasion +-- ["Surfer!"] = "", -- WxW +-- ["Survive!|Hint: Cinematics can be skipped with the [Precise] key."] = "", -- A_Classic_Fairytale:shadow +-- ["Swing, Leaks A Lot, on the wings of the wind!"] = "", -- A_Classic_Fairytale:first_blood -- ["Switched to "] = "", +-- ["Syntax Errol"] = "", -- A_Classic_Fairytale:dragon +-- ["Talk about mixed signals..."] = "", -- A_Classic_Fairytale:dragon -- ["Team %d: "] = "", -- ["Team Scores"] = "", -- Control, Space_Invasion +-- ["Teleport hint: just use the mouse to select the destination!"] = "", -- A_Classic_Fairytale:dragon +-- ["Thanks!"] = "", -- A_Classic_Fairytale:family +-- ["Thank you, my hero!"] = "", -- A_Classic_Fairytale:family +-- ["Thank you, oh, thank you, Leaks A Lot!"] = "", -- A_Classic_Fairytale:journey +-- ["Thank you, oh, thank you, my heroes!"] = "", -- A_Classic_Fairytale:journey +-- ["That is, indeed, very weird..."] = "", -- A_Classic_Fairytale:united +-- ["That makes it almost invaluable!"] = "", -- A_Classic_Fairytale:enemy +-- ["That ought to show them!"] = "", -- A_Classic_Fairytale:backstab +-- ["That's for my father!"] = "", -- A_Classic_Fairytale:backstab +-- ["That shaman sure knows what he's doing!"] = "", -- A_Classic_Fairytale:shadow -- ["That Sinking Feeling"] = "", +-- ["That's not our problem!"] = "", -- A_Classic_Fairytale:enemy +-- ["That's typical of you!"] = "", -- A_Classic_Fairytale:family +-- ["That was just mean!"] = "", -- A_Classic_Fairytale:backstab, A_Classic_Fairytale:united -- ["That was pointless."] = "", +-- ["The answer is...entertaintment. You'll see what I mean."] = "", -- A_Classic_Fairytale:backstab +-- ["The anti-portal zone is all over the floor, and I have nothing to kill him...Droping something could hurt him enough to kill him..."] = "", -- portal +-- ["The Bull's Eye"] = "", -- A_Classic_Fairytale:first_blood +-- ["The caves are well hidden, they won't find us there!"] = "", -- A_Classic_Fairytale:united +-- ["The Crate Frenzy"] = "", -- A_Classic_Fairytale:first_blood +-- ["The Dilemma"] = "", -- A_Classic_Fairytale:shadow +-- ["The enemy can't move but it might be a good idea to stay out of sight!|"] = "", -- A_Classic_Fairytale:dragon -- ["The enemy is hiding out on yonder ducky!"] = "", +-- ["The Enemy Of My Enemy"] = "", -- A_Classic_Fairytale:enemy +-- ["The First Blood"] = "", -- A_Classic_Fairytale:first_blood +-- ["The First Encounter"] = "", -- A_Classic_Fairytale:shadow -- ["The flag will respawn next round."] = "", +-- ["The food bites back"] = "", -- A_Classic_Fairytale:backstab +-- ["The giant umbrella from the last crate should help break the fall."] = "", -- A_Classic_Fairytale:first_blood +-- ["The Great Escape"] = "", -- User_Mission_-_The_Great_Escape +-- ["The guardian"] = "", -- A_Classic_Fairytale:shadow +-- ["The Individualist"] = "", -- A_Classic_Fairytale:shadow +-- ["Their buildings were very primitive back then, even for an uncivilised island."] = "", -- A_Classic_Fairytale:united +-- ["The Journey Back"] = "", -- A_Classic_Fairytale:journey +-- ["The Leap of Faith"] = "", -- A_Classic_Fairytale:first_blood +-- ["The Moonwalk"] = "", -- A_Classic_Fairytale:journey -- ["The Nameless One"] = "", +-- ["The next one is pretty hard! |Tip: You have to do multiple swings!"] = "", -- Basic_Training_-_Rope +-- ["Then how do they keep appearing?"] = "", -- A_Classic_Fairytale:shadow +-- ["The other one were all cannibals, spending their time eating the organs of fellow hedgehogs..."] = "", -- A_Classic_Fairytale:first_blood +-- ["There must be a spy among us!"] = "", -- A_Classic_Fairytale:backstab +-- ["There's more of them? When did they become so hungry?"] = "", -- A_Classic_Fairytale:backstab, A_Classic_Fairytale:united +-- ["There's nothing more satisfying for me than seeing you share your beauty with the world every morning, my princess!"] = "", -- A_Classic_Fairytale:journey +-- ["There's nothing more satisfying to us than seeing you share your beauty..."] = "", -- A_Classic_Fairytale:journey +-- ["There's nothing more satisfying to us than seeing you share your beauty with the world every morning, my princess!"] = "", -- A_Classic_Fairytale:journey +-- ["The Rising"] = "", -- A_Classic_Fairytale:first_blood +-- ["The Savior"] = "", -- A_Classic_Fairytale:journey +-- ["These primitive people are so funny!"] = "", -- A_Classic_Fairytale:backstab +-- ["The Shadow Falls"] = "", -- A_Classic_Fairytale:shadow +-- ["The Showdown"] = "", -- A_Classic_Fairytale:shadow +-- ["The Slaughter"] = "", -- A_Classic_Fairytale:dragon, A_Classic_Fairytale:first_blood -- ["THE SPECIALISTS"] = "", +-- ["The spirits of the ancerstors are surely pleased, Leaks A Lot."] = "", -- A_Classic_Fairytale:first_blood +-- ["The Torment"] = "", -- A_Classic_Fairytale:first_blood +-- ["The Tunnel Maker"] = "", -- A_Classic_Fairytale:journey +-- ["The Ultimate Weapon"] = "", -- A_Classic_Fairytale:first_blood +-- ["The Union"] = "", -- A_Classic_Fairytale:enemy +-- ["The village, unprepared, was destroyed by the cyborgs..."] = "", -- A_Classic_Fairytale:journey +-- ["The walk of Fame"] = "", -- A_Classic_Fairytale:shadow +-- ["The wasted youth"] = "", -- A_Classic_Fairytale:first_blood +-- ["The weapon in that last crate was bestowed upon us by the ancients!"] = "", -- A_Classic_Fairytale:first_blood +-- ["The what?!"] = "", -- A_Classic_Fairytale:dragon +-- ["The wind whispers that you are ready to become familiar with tools, now..."] = "", -- A_Classic_Fairytale:first_blood +-- ["They are all waiting back in the village, haha."] = "", -- A_Classic_Fairytale:enemy +-- ["They Call Me Bullseye!"] = "", -- Space_Invasion +-- ["They have weapons we've never seen before!"] = "", -- A_Classic_Fairytale:united +-- ["They keep appearing like this. It's weird!"] = "", -- A_Classic_Fairytale:united +-- ["They killed "] = "", -- A_Classic_Fairytale:backstab, A_Classic_Fairytale:united +-- ["They must be trying to weaken us!"] = "", -- A_Classic_Fairytale:enemy +-- ["They never learn"] = "", -- A_Classic_Fairytale:journey +-- ["They told us to wear these clothes. They said that this is the newest trend."] = "", -- A_Classic_Fairytale:enemy +-- ["They've been manipulating us all this time!"] = "", -- A_Classic_Fairytale:enemy +-- ["Thighlicker"] = "", -- A_Classic_Fairytale:united +-- ["This is it! It's time to make Fell From Heaven fall for me..."] = "", -- A_Classic_Fairytale:first_blood +-- ["This island is the only place left on Earth with grass on it!"] = "", -- A_Classic_Fairytale:enemy +-- ["This is typical!"] = "", -- A_Classic_Fairytale:dragon +-- ["This must be some kind of sorcery!"] = "", -- A_Classic_Fairytale:shadow +-- ["This must be the caves!"] = "", -- A_Classic_Fairytale:backstab -- ["This one's tricky."] = "", -- ["This rain is really something..."] = "", +-- ["This will be fun!"] = "", -- A_Classic_Fairytale:enemy +-- ["Those aliens are destroying the island!"] = "", -- A_Classic_Fairytale:family -- ["TIME: "] = "", -- ["Timed Kamikaze!"] = "", -- ["Time Extended!"] = "", -- ["Time Extension"] = "", +-- ["Tip: The rope physics are different than in the real world, |use it to your advantage!"] = "", -- Basic_Training_-_Rope -- ["Toggle Shield"] = "", +-- ["To help you, of course!"] = "", -- A_Classic_Fairytale:journey +-- ["To place a girder, select it, use [Left] and [Right] to select angle and length, place with [Left Click]"] = "", -- A_Classic_Fairytale:shadow +-- ["Torn Muscle"] = "", -- A_Classic_Fairytale:journey +-- [" to save the village."] = "", -- A_Classic_Fairytale:dragon +-- ["To the caves..."] = "", -- A_Classic_Fairytale:united -- ["Toxic Team"] = "", -- User_Mission_-_Diver, User_Mission_-_Spooky_Tree, User_Mission_-_Teamwork -- ["TRACK COMPLETED"] = "", -- ["TRACK FAILED!"] = "", +-- ["training"] = "", -- portal +-- ["Traitors"] = "", -- A_Classic_Fairytale:epil +-- ["Tribe"] = "", -- A_Classic_Fairytale:backstab -- ["TrophyRace"] = "", +-- ["Try to protect the chief! You won't lose if he dies, but it is advised that he survives."] = "", -- A_Classic_Fairytale:united -- ["T_T"] = "", -- ["Tumbling Time Extended!"] = "", +-- ["Turns until Sudden Death: "] = "", -- A_Classic_Fairytale:dragon +-- [" turns until Sudden Death! Better hurry!"] = "", -- A_Classic_Fairytale:dragon -- ["Turn Time"] = "", +-- ["Two little hogs cooperating, getting past obstacles..."] = "", -- A_Classic_Fairytale:journey +-- ["Uhm...I met one of them and took his weapons."] = "", -- A_Classic_Fairytale:shadow +-- ["Uhmm...ok no."] = "", -- A_Classic_Fairytale:enemy +-- ["ULTRA KILL"] = "", -- Mutant +-- ["Under Construction"] = "", -- A_Classic_Fairytale:shadow +-- ["Unexpected Igor"] = "", -- A_Classic_Fairytale:dragon -- ["Unit"] = "", +-- ["Unit 0x0007"] = "", -- A_Classic_Fairytale:family +-- ["Unit 334a$7%;.*"] = "", -- A_Classic_Fairytale:backstab, A_Classic_Fairytale:dragon, A_Classic_Fairytale:enemy, A_Classic_Fairytale:family, A_Classic_Fairytale:queen, A_Classic_Fairytale:united -- ["Unit 3378"] = "", -- ["Unit 835"] = "", +-- ["United We Stand"] = "", -- A_Classic_Fairytale:united -- ["Unlimited Attacks"] = "", +-- ["Unlucky Sods"] = "", -- User_Mission_-_Rope_Knock_Challenge -- ["Unstoppable!"] = "", +-- ["Unsuspecting Louts"] = "", -- User_Mission_-_Rope_Knock_Challenge +-- ["[Up], [Down] to aim, [Space] to shoot!"] = "", -- A_Classic_Fairytale:first_blood +-- ["Use it wisely!"] = "", -- A_Classic_Fairytale:dragon +-- ["Use it with precaution!"] = "", -- A_Classic_Fairytale:first_blood -- ["User Challenge"] = "", +-- ["Use the parachute ([Space] while in air)"] = "", -- +-- ["Use the portal gun to get to the next crate, then use the new gun to get to the final destination!|"] = "", -- A_Classic_Fairytale:dragon +-- ["Use the rope to get on the head of the mole, young one!"] = "", -- A_Classic_Fairytale:first_blood +-- ["Use the rope to knock your enemies to their doom."] = "", -- User_Mission_-_Rope_Knock_Challenge -- ["Use your rope to get from start to finish as fast as you can!"] = "", +-- ["Vedgies"] = "", -- A_Classic_Fairytale:journey +-- ["Vegan Jack"] = "", -- A_Classic_Fairytale:enemy +-- ["Victory!"] = "", -- Basic_Training_-_Rope -- ["Victory for the "] = "", -- CTF_Blizzard, Capture_the_Flag +-- ["Violence is not the answer to your problems!"] = "", -- A_Classic_Fairytale:first_blood +-- ["Walls Left"] = "", -- WxW +-- ["Walls Required"] = "", -- WxW +-- ["WALL TO WALL"] = "", -- WxW +-- ["Wannabe Flyboys"] = "", -- User_Mission_-_RCPlane_Challenge +-- ["Wannabe Shoppsta"] = "", -- User_Mission_-_Rope_Knock_Challenge +-- ["Watch your steps, young one!"] = "", -- A_Classic_Fairytale:first_blood -- ["Waypoint placed."] = "", -- ["Way-Points Remaining"] = "", +-- ["Weaklings"] = "", -- A_Classic_Fairytale:shadow +-- ["We all know what happens when you get frightened..."] = "", -- A_Classic_Fairytale:first_blood -- ["Weapons Reset"] = "", +-- ["Weapons reset."] = "", -- Highlander +-- ["We are indeed."] = "", -- A_Classic_Fairytale:backstab +-- ["We can't defeat them!"] = "", -- A_Classic_Fairytale:shadow +-- ["We can't hold them up much longer!"] = "", -- A_Classic_Fairytale:united +-- ["We can't let them take over our little island!"] = "", -- A_Classic_Fairytale:enemy +-- ["We have no time to waste..."] = "", -- A_Classic_Fairytale:journey +-- ["We have nowhere else to live!"] = "", -- A_Classic_Fairytale:enemy +-- ["We have to protect the village!"] = "", -- A_Classic_Fairytale:united +-- ["We have to unite and defeat those cylergs!"] = "", -- A_Classic_Fairytale:enemy +-- ["Welcome, Leaks A Lot!"] = "", -- A_Classic_Fairytale:journey -- ["Well done."] = "", +-- ["We'll give you a problem then!"] = "", -- A_Classic_Fairytale:enemy +-- ["We'll spare your life for now!"] = "", -- A_Classic_Fairytale:backstab +-- ["Well, that was a waste of time."] = "", -- A_Classic_Fairytale:dragon +-- ["Well, well! Isn't that the cutest thing you've ever seen?"] = "", -- A_Classic_Fairytale:journey +-- ["Well, yes. This was a cyborg television show."] = "", -- A_Classic_Fairytale:enemy +-- ["We made sure noone followed us!"] = "", -- A_Classic_Fairytale:backstab +-- ["We need to move!"] = "", -- A_Classic_Fairytale:united +-- ["We need to prevent their arrival!"] = "", -- A_Classic_Fairytale:backstab +-- ["We need to warn the village."] = "", -- A_Classic_Fairytale:shadow +-- ["We should head back to the village now."] = "", -- A_Classic_Fairytale:shadow +-- ["We were trying to save her and we got lost."] = "", -- A_Classic_Fairytale:family +-- ["We won't let you hurt her!"] = "", -- A_Classic_Fairytale:journey +-- ["What?! A cannibal? Here? There is no time to waste! Come, you are prepared."] = "", -- A_Classic_Fairytale:first_blood +-- ["What a douche!"] = "", -- A_Classic_Fairytale:enemy +-- ["What am I gonna...eat, yo?"] = "", -- A_Classic_Fairytale:family +-- ["What are you doing at a distance so great, young one?"] = "", -- A_Classic_Fairytale:first_blood +-- ["What are you doing? Let her go!"] = "", -- A_Classic_Fairytale:journey +-- ["What a ride!"] = "", -- A_Classic_Fairytale:shadow +-- ["What a strange cave!"] = "", -- A_Classic_Fairytale:dragon +-- ["What a strange feeling!"] = "", -- A_Classic_Fairytale:backstab +-- ["What do my faulty eyes observe? A spy!"] = "", -- A_Classic_Fairytale:first_blood +-- ["Whatever floats your boat..."] = "", -- A_Classic_Fairytale:shadow +-- [" What !! For all of this struggle i just win some ... TIME o0"] = "", -- portal +-- ["What has "] = "", -- A_Classic_Fairytale:backstab +-- ["What? Here? How did they find us?!"] = "", -- A_Classic_Fairytale:backstab +-- ["What is this place?"] = "", -- A_Classic_Fairytale:dragon, A_Classic_Fairytale:enemy +-- ["What shall we do with the traitor?"] = "", -- A_Classic_Fairytale:backstab +-- ["WHAT?! You're the ones attacking us!"] = "", -- A_Classic_Fairytale:enemy +-- ["When?"] = "", -- A_Classic_Fairytale:enemy +-- ["When I find it..."] = "", -- A_Classic_Fairytale:dragon +-- ["Where are all these crates coming from?!"] = "", -- A_Classic_Fairytale:shadow +-- ["Where are they?!"] = "", -- A_Classic_Fairytale:backstab +-- ["Where did that alien run?"] = "", -- A_Classic_Fairytale:dragon +-- ["Where did you get the exploding apples?"] = "", -- A_Classic_Fairytale:shadow +-- ["Where did you get the exploding apples and the magic bow that shoots many arrows?"] = "", -- A_Classic_Fairytale:shadow +-- ["Where did you get the magic bow that shoots many arrows?"] = "", -- A_Classic_Fairytale:shadow +-- ["Where did you get the weapons in the forest, Dense Cloud?"] = "", -- A_Classic_Fairytale:backstab +-- ["Where do you get that?!"] = "", -- A_Classic_Fairytale:enemy +-- ["Where have you been?!"] = "", -- A_Classic_Fairytale:backstab +-- ["Where have you been?"] = "", -- A_Classic_Fairytale:united +-- ["? Why?"] = "", -- A_Classic_Fairytale:backstab +-- ["Why "] = "", -- A_Classic_Fairytale:backstab +-- ["! Why?!"] = "", -- A_Classic_Fairytale:backstab, A_Classic_Fairytale:united +-- ["Why are you doing this?"] = "", -- A_Classic_Fairytale:journey +-- ["Why are you helping us, uhm...?"] = "", -- A_Classic_Fairytale:family +-- ["Why can't he just let her go?!"] = "", -- A_Classic_Fairytale:family +-- ["Why do men keep hurting me?"] = "", -- A_Classic_Fairytale:first_blood +-- ["Why do you not like me?"] = "", -- A_Classic_Fairytale:shadow +-- ["Why do you want to take over our island?"] = "", -- A_Classic_Fairytale:enemy +-- ["Why me?!"] = "", -- A_Classic_Fairytale:backstab +-- ["Why would they do this?"] = "", -- A_Classic_Fairytale:backstab +-- ["- Will Get 1-3 random weapons"] = "", -- Continental_supplies +-- ["- Will refresh Parachute each turn."] = "", -- Continental_supplies +-- ["- Will refresh portalgun each turn."] = "", -- Continental_supplies -- ["Will this ever end?"] = "", +-- ["WINNER IS "] = "", -- Mutant -- ["WINNING TIME: "] = "", +-- ["Wise Oak"] = "", -- A_Classic_Fairytale:backstab, A_Classic_Fairytale:dragon, A_Classic_Fairytale:enemy, A_Classic_Fairytale:epil, A_Classic_Fairytale:family, A_Classic_Fairytale:queen +-- ["With Dense Cloud on the land of shadows, I'm the village's only hope..."] = "", -- A_Classic_Fairytale:journey +-- ["With the rest of the tribe gone, it was up to "] = "", -- A_Classic_Fairytale:dragon +-- ["Worry not, for it is a peaceful animal! There is no reason to be afraid..."] = "", -- A_Classic_Fairytale:first_blood +-- ["Wow, what a dream!"] = "", -- A_Classic_Fairytale:backstab +-- ["Y3K1337"] = "", -- A_Classic_Fairytale:journey, A_Classic_Fairytale:shadow +-- ["Yay, we won!"] = "", -- A_Classic_Fairytale:enemy +-- ["Y Chwiliad"] = "", -- A_Classic_Fairytale:dragon +-- ["Yeah...I think it's a 'he', lol."] = "", -- A_Classic_Fairytale:shadow +-- ["Yeah, sure! I died. Hillarious!"] = "", -- A_Classic_Fairytale:backstab +-- ["Yeah, take that!"] = "", -- A_Classic_Fairytale:dragon +-- ["Yeah? Watcha gonna do? Cry?"] = "", -- A_Classic_Fairytale:journey +-- ["Yes!"] = "", -- A_Classic_Fairytale:enemy +-- ["Yes, yeees! You are now ready to enter the real world!"] = "", -- A_Classic_Fairytale:first_blood +-- ["Yo, dude, we're here, too!"] = "", -- A_Classic_Fairytale:family +-- ["You are given the chance to turn your life around..."] = "", -- A_Classic_Fairytale:shadow +-- ["You are playing with our lives here!"] = "", -- A_Classic_Fairytale:enemy +-- ["! You bastards!"] = "", -- A_Classic_Fairytale:backstab, A_Classic_Fairytale:united +-- ["You bear impressive skills, "] = "", -- A_Classic_Fairytale:dragon +-- ["You can't fire a portal on the blue surface"] = "", -- portal +-- ["You couldn't possibly believe that after refusing my offer I'd just let you go!"] = "", -- A_Classic_Fairytale:journey -- ["You'd almost swear the water was rising!"] = "", +-- ["You'd better watch your steps..."] = "", -- A_Classic_Fairytale:journey +-- ["You did not make it in time, try again!"] = "", -- Basic_Training_-_Rope +-- ["You have 7 turns until the next wave arrives.|Make sure the arriving cannibals are greeted appropriately!|If the hog dies, the cause is lost.|Hint: you might want to use some mines..."] = "", -- A_Classic_Fairytale:backstab +-- ["You have "] = "", -- A_Classic_Fairytale:dragon +-- ["You have been giving us out to the enemy, haven't you!"] = "", -- A_Classic_Fairytale:backstab +-- ["You have been respawned, at your last checkpoint!"] = "", -- Basic_Training_-_Rope +-- ["You have been respawned, be more carefull next time!"] = "", -- Basic_Training_-_Rope +-- ["You have chosen the perfect moment to leave."] = "", -- A_Classic_Fairytale:united +-- ["You have failed to complete your task, young one!"] = "", -- A_Classic_Fairytale:journey +-- ["You have failed to save the tribe!"] = "", -- A_Classic_Fairytale:backstab +-- ["You have finally figured it out!"] = "", -- A_Classic_Fairytale:enemy +-- ["You have kidnapped our whole tribe!"] = "", -- A_Classic_Fairytale:enemy +-- ["You have killed an innocent hedgehog!"] = "", -- A_Classic_Fairytale:backstab +-- ["You have proven yourself worthy to see our most ancient secret!"] = "", -- A_Classic_Fairytale:first_blood +-- ["You have proven yourselves worthy!"] = "", -- A_Classic_Fairytale:enemy -- ["You have SCORED!!"] = "", +-- ["You have to destroy 12 targets in 180 seconds"] = "", -- Basic_Training_-_Cluster_Bomb +-- ["You have won the game by proving true cooperative skills!"] = "", -- A_Classic_Fairytale:enemy +-- ["You just appeared out of thin air!"] = "", -- A_Classic_Fairytale:backstab +-- ["You just committed suicide..."] = "", -- A_Classic_Fairytale:shadow +-- ["You killed my father, you monster!"] = "", -- A_Classic_Fairytale:backstab +-- ["You know...taking a stroll."] = "", -- A_Classic_Fairytale:backstab +-- ["You know what? I don't even regret anything!"] = "", -- A_Classic_Fairytale:backstab +-- ["You'll see what I mean!"] = "", -- A_Classic_Fairytale:enemy +-- ["You may only attack from a rope!"] = "", -- WxW +-- ["You meatbags are pretty slow, you know!"] = "", -- A_Classic_Fairytale:enemy +-- ["You might want to find a way to instantly kill arriving cannibals!"] = "", -- A_Classic_Fairytale:backstab +-- ["Young one, you are telling us that they can instantly change location without a shaman?"] = "", -- A_Classic_Fairytale:united +-- ["You probably know what to do next..."] = "", -- A_Classic_Fairytale:first_blood +-- ["Your deaths will be avenged, cannibals!"] = "", -- A_Classic_Fairytale:enemy +-- ["Your death will not be in vain, Dense Cloud!"] = "", -- A_Classic_Fairytale:shadow +-- ["You're...alive!? But we saw you die!"] = "", -- A_Classic_Fairytale:backstab +-- ["You're a pathetic liar!"] = "", -- A_Classic_Fairytale:backstab +-- ["You're funny!"] = "", -- A_Classic_Fairytale:journey +-- ["You're getting pretty good! |Tip: When you shorten you rope you move faster! |and when you lengthen it you move slower"] = "", -- Basic_Training_-_Rope +-- ["You're pathetic! You are not worthy of my attention..."] = "", -- A_Classic_Fairytale:shadow +-- ["You're probably wondering why I bought you back..."] = "", -- A_Classic_Fairytale:backstab +-- ["You're terrorizing the forest...We won't catch anything like this!"] = "", -- A_Classic_Fairytale:shadow +-- ["Your hogs must survive!"] = "", -- A_Classic_Fairytale:journey +-- ["Your movement skills will be evaluated now."] = "", -- A_Classic_Fairytale:first_blood -- ["You saved"] = "", +-- ["You've been assaulting us, we have been just defending ourselves!"] = "", -- A_Classic_Fairytale:enemy -- ["You've failed. Try again."] = "", -- ["You've reached the goal!| |Time: "] = "", +-- ["You will be avenged!"] = "", -- A_Classic_Fairytale:shadow +-- ["You won't believe what happened to me!"] = "", -- A_Classic_Fairytale:backstab +-- ["Yuck! I bet they'll keep worshipping her even after I save the village!"] = "", -- A_Classic_Fairytale:family +-- ["Zealandia"] = "", -- Continental_supplies -- ["'Zooka Team"] = "", +-- ["Zork"] = "", -- A_Classic_Fairytale:dragon, A_Classic_Fairytale:family, A_Classic_Fairytale:queen } diff -r 3331b30e4ef1 -r 88fde28bbda6 share/hedgewars/Data/Locale/lt.lua --- a/share/hedgewars/Data/Locale/lt.lua Sun Oct 21 01:28:33 2012 +0400 +++ b/share/hedgewars/Data/Locale/lt.lua Sat Nov 03 00:34:35 2012 +0400 @@ -2,156 +2,640 @@ [":("] = ":(", ["!!!"] = "!!!", ["..."] = "...", +-- ["011101000"] = "", -- A_Classic_Fairytale:dragon +-- ["011101001"] = "", -- A_Classic_Fairytale:backstab, A_Classic_Fairytale:dragon, A_Classic_Fairytale:enemy, A_Classic_Fairytale:family, A_Classic_Fairytale:journey, A_Classic_Fairytale:queen, A_Classic_Fairytale:shadow, A_Classic_Fairytale:united +-- ["30 minutes later..."] = "", -- A_Classic_Fairytale:shadow +-- ["About a month ago, a cyborg came and told us that you're the cannibals!"] = "", -- A_Classic_Fairytale:enemy ["Accuracy Bonus!"] = "Taiklumo Bonusas!", +-- ["Ace"] = "", -- User_Mission_-_RCPlane_Challenge, User_Mission_-_Rope_Knock_Challenge -- ["Achievement Unlocked"] = "", -- User_Mission_-_Bamboo_Thicket, User_Mission_-_That_Sinking_Feeling, Tumbler +-- ["A Classic Fairytale"] = "", -- A_Classic_Fairytale:first_blood +-- ["???"] = "", -- A_Classic_Fairytale:backstab +-- ["Actually, you aren't worthy of life! Take this..."] = "", -- A_Classic_Fairytale:shadow +-- ["A cy-what?"] = "", -- A_Classic_Fairytale:enemy +-- ["Adventurous"] = "", -- A_Classic_Fairytale:journey +-- ["Africa"] = "", -- Continental_supplies +-- ["After Leaks A Lot betrayed his tribe, he joined the cannibals..."] = "", -- A_Classic_Fairytale:first_blood +-- ["After the shock caused by the enemy spy, Leaks A Lot and Dense Cloud went hunting to relax."] = "", -- A_Classic_Fairytale:shadow +-- ["Again with the 'cannibals' thing!"] = "", -- A_Classic_Fairytale:enemy +-- ["a Hedgewars challenge"] = "", -- User_Mission_-_RCPlane_Challenge, User_Mission_-_Rope_Knock_Challenge ["a Hedgewars mini-game"] = "Eþiu karu mini þaidimas", -- Space_Invasion, The_Specialists ["Aiming Practice"] = "Taiklumo Treniruotë", --Bazooka, Shotgun, SniperRifle +-- ["A leap in a leap"] = "", -- A_Classic_Fairytale:first_blood +-- ["A little gift from the cyborgs"] = "", -- A_Classic_Fairytale:shadow +-- ["All gone...everything!"] = "", -- A_Classic_Fairytale:enemy +-- ["All right, we just need to get to the other side of the island!"] = "", -- A_Classic_Fairytale:journey +-- ["All walls touched!"] = "", -- WxW ["Ammo Depleted!"] = "Nusodrintojo Kulkos!", -- ["ammo extended!"] = "", -- ["Ammo is reset at the end of your turn."] = "", ["Ammo"] = "Kulkos", ["Ammo Maniac!"] = "Kulku Maniakas!", +-- ["And how am I alive?!"] = "", -- A_Classic_Fairytale:enemy +-- ["And so happenned that Leaks A Lot failed to complete the challenge! He landed, pressured by shame..."] = "", -- A_Classic_Fairytale:first_blood +-- ["And so it began..."] = "", -- A_Classic_Fairytale:first_blood +-- ["...and so the cyborgs took over the world..."] = "", -- A_Classic_Fairytale:shadow +-- ["And so they discovered that cyborgs weren't invulnerable..."] = "", -- A_Classic_Fairytale:journey +-- ["And where's all the weed?"] = "", -- A_Classic_Fairytale:dragon +-- ["And you believed me? Oh, god, that's cute!"] = "", -- A_Classic_Fairytale:journey +-- ["Anno 1032: [The explosion will make a strong push ~ wide range, wont affect hogs close to the target]"] = "", -- Continental_supplies +-- ["Antarctica"] = "", -- Continental_supplies +-- ["Are we there yet?"] = "", -- A_Classic_Fairytale:shadow +-- ["Are you accusing me of something?"] = "", -- A_Classic_Fairytale:backstab +-- ["Are you saying that many of us have died for your entertainment?"] = "", -- A_Classic_Fairytale:enemy +-- ["Artur Detour"] = "", -- A_Classic_Fairytale:queen +-- ["As a reward for your performance, here's some new technology!"] = "", -- A_Classic_Fairytale:dragon +-- ["a shoppa minigame"] = "", -- WxW +-- ["Asia"] = "", -- Continental_supplies +-- ["Assault Team"] = "", -- A_Classic_Fairytale:backstab +-- ["As the ammo is sparse, you might want to reuse ropes while mid-air.|"] = "", -- A_Classic_Fairytale:dragon +-- ["As the challenge was completed, Leaks A Lot set foot on the ground..."] = "", -- A_Classic_Fairytale:first_blood +-- ["As you can see, there is no way to get on the other side!"] = "", -- A_Classic_Fairytale:dragon +-- ["Attack From Rope"] = "", -- WxW +-- ["Australia"] = "", -- Continental_supplies ["Available points remaining: "] = "Pajamumu taðku liko: ", +-- ["Back Breaker"] = "", -- A_Classic_Fairytale:backstab +-- ["Back in the village, after telling the villagers about the threat..."] = "", -- A_Classic_Fairytale:united -- ["[Backspace]"] = "", +-- ["Backstab"] = "", -- A_Classic_Fairytale:backstab +-- ["Bad Team"] = "", -- User_Mission_-_The_Great_Escape -- ["Bamboo Thicket"] = "", -- ["Barrel Eater!"] = "", -- ["Barrel Launcher"] = "", +-- ["Baseballbat"] = "", -- Continental_supplies ["Bat balls at your enemies and|push them into the sea!"] = "Dauþk is kamuoliu i savo prieðus|ir nustumk juos i jûra!", ["Bat your opponents through the|baskets and out of the map!"] = "Dauþk savo obonentus pro kaðes|ir ið þemëlapio!", ["Bazooka Training"] = "Bazukos Treniruotë", +-- ["Beep Loopers"] = "", -- A_Classic_Fairytale:queen ["Best laps per team: "] = "Geriausi ratai per komanda: ", ["Best Team Times: "] = "Geriausios komandos laikai: ", +-- ["Beware, though! If you are slow, you die!"] = "", -- A_Classic_Fairytale:dragon +-- ["Biomechanic Team"] = "", -- A_Classic_Fairytale:family +-- ["Blender"] = "", -- A_Classic_Fairytale:family +-- ["Bloodpie"] = "", -- A_Classic_Fairytale:backstab +-- ["Bloodrocutor"] = "", -- A_Classic_Fairytale:shadow +-- ["Bloodsucker"] = "", -- A_Classic_Fairytale:shadow ["Bloody Rookies"] = "Prakeikti Eiliniai", -- 01#Boot_Camp, User_Mission_-_Dangerous_Ducklings, User_Mission_-_Diver, User_Mission_-_Spooky_Tree +-- ["Bone Jackson"] = "", -- A_Classic_Fairytale:backstab +-- ["Bonely"] = "", -- A_Classic_Fairytale:shadow ["Boom!"] = "Boom!", ["BOOM!"] = "BOOM!", ["Boss defeated!"] = "Bosas Nugalëtas!", ["Boss Slayer!"] = "Bosu Þudikas!", +-- ["Brain Blower"] = "", -- A_Classic_Fairytale:journey +-- ["Brainiac"] = "", -- A_Classic_Fairytale:epil, A_Classic_Fairytale:first_blood, A_Classic_Fairytale:shadow +-- ["Brainila"] = "", -- A_Classic_Fairytale:united +-- ["Brain Stu"] = "", -- A_Classic_Fairytale:united +-- ["Brain Teaser"] = "", -- A_Classic_Fairytale:backstab +-- ["Brutal Lily"] = "", -- A_Classic_Fairytale:enemy, A_Classic_Fairytale:epil +-- ["Brutus"] = "", -- A_Classic_Fairytale:backstab -- ["Build a track and race."] = "", +-- ["Bullseye"] = "", -- A_Classic_Fairytale:dragon +-- ["But it proved to be no easy task!"] = "", -- A_Classic_Fairytale:dragon +-- ["But that's impossible!"] = "", -- A_Classic_Fairytale:backstab +-- ["But the ones alive are stronger in their heart!"] = "", -- A_Classic_Fairytale:enemy +-- ["But...we died!"] = "", -- A_Classic_Fairytale:backstab +-- ["But where can we go?"] = "", -- A_Classic_Fairytale:united +-- ["But why would they help us?"] = "", -- A_Classic_Fairytale:backstab +-- ["But you're cannibals. It's what you do."] = "", -- A_Classic_Fairytale:enemy +-- ["But you said you'd let her go!"] = "", -- A_Classic_Fairytale:journey +-- ["Call me Beep! Well, 'cause I'm such a nice...person!"] = "", -- A_Classic_Fairytale:family +-- ["Cannibals"] = "", -- A_Classic_Fairytale:enemy, A_Classic_Fairytale:epil, A_Classic_Fairytale:first_blood +-- ["Cannibal Sentry"] = "", -- A_Classic_Fairytale:journey +-- ["Cannibals?! You're the cannibals!"] = "", -- A_Classic_Fairytale:enemy ["CAPTURE THE FLAG"] = "Pagriebk Vëliava", ["Careless"] = "Neatsargus", +-- ["Carol"] = "", -- A_Classic_Fairytale:family +-- ["CHALLENGE COMPLETE"] = "", -- User_Mission_-_RCPlane_Challenge -- ["Change Weapon"] = "", +-- ["Choose your side! If you want to join the strange man, walk up to him.|Otherwise, walk away from him. If you decide to att...nevermind..."] = "", -- A_Classic_Fairytale:shadow ["Clumsy"] = "Durnelis", +-- ["Cluster Bomb MASTER!"] = "", -- Basic_Training_-_Cluster_Bomb +-- ["Cluster Bomb Training"] = "", -- Basic_Training_-_Cluster_Bomb ["Codename: Teamwork"] = "Kodas: Komandinis Darbas", +-- ["Collateral Damage"] = "", -- A_Classic_Fairytale:journey +-- ["Collateral Damage II"] = "", -- A_Classic_Fairytale:journey +-- ["Collect all the crates, but remember, our time in this life is limited!"] = "", -- A_Classic_Fairytale:first_blood +-- ["Collect or destroy all the health crates."] = "", -- User_Mission_-_RCPlane_Challenge +-- ["Collect the crate on the right.|Hint: Select the rope, [Up] or [Down] to aim, [Space] to fire, directional keys to move.|Ropes can be fired again in the air!"] = "", -- A_Classic_Fairytale:first_blood +-- ["Collect the crates within the time limit!|If you fail, you'll have to try again."] = "", -- A_Classic_Fairytale:first_blood +-- ["Come closer, so that your training may continue!"] = "", -- A_Classic_Fairytale:first_blood +-- ["Compete to use as few planes as possible!"] = "", -- User_Mission_-_RCPlane_Challenge ["Complete the track as fast as you can!"] = "Apvaryk trasa taip greitai kaip gali!", +-- ["COMPLETION TIME"] = "", -- User_Mission_-_Rope_Knock_Challenge +-- ["Configuration accepted."] = "", -- WxW +-- ["Congratulations"] = "", -- Basic_Training_-_Rope ["Congratulations!"] = "Sveikinu!", +-- ["Congratulations! You needed only half of time|to eliminate all targets."] = "", -- Basic_Training_-_Cluster_Bomb +-- ["Congratulations! You've completed the Rope tutorial! |- Tutorial ends in 10 seconds!"] = "", -- Basic_Training_-_Rope ["Congratulations! You've eliminated all targets|within the allowed time frame."] = "Sveikinu! Tu pradanginai visus taikinius|per leista laika.", --Bazooka, Shotgun, SniperRifle +-- ["Continental supplies"] = "", -- Continental_supplies ["Control pillars to score points."] = "Valdyk stulpus ir gausi taðku.", +-- ["Corporationals"] = "", -- A_Classic_Fairytale:queen +-- ["Corpsemonger"] = "", -- A_Classic_Fairytale:shadow +-- ["Corpse Thrower"] = "", -- A_Classic_Fairytale:epil +-- ["Crates Left:"] = "", -- User_Mission_-_RCPlane_Challenge ["Cybernetic Empire"] = "Kibernetinë Karalystë", +-- ["Cyborg. It's what the aliens call themselves."] = "", -- A_Classic_Fairytale:enemy +-- ["Dahmer"] = "", -- A_Classic_Fairytale:backstab ["DAMMIT, ROOKIE! GET OFF MY HEAD!"] = "PO VELNIU EILINI NULIPK MAN NUO GALVOS!", ["DAMMIT, ROOKIE!"] = "PO VELNIU EILINI!", ["Dangerous Ducklings"] = "Pavojingos Antis", ["Deadweight"] = "Dedveitas", +-- ["Defeat the cannibals"] = "", -- A_Classic_Fairytale:backstab +-- ["Defeat the cannibals!|"] = "", -- A_Classic_Fairytale:united +-- ["Defeat the cannibals!|Grenade hint: set the timer with [1-5], aim with [Up]/[Down] and hold [Space] to set power"] = "", -- A_Classic_Fairytale:shadow +-- ["Defeat the cyborgs!"] = "", -- A_Classic_Fairytale:enemy +-- ["Defend yourself!|Hint: You can get tips on using weapons by moving your mouse over them in the weapon selection menu"] = "", -- A_Classic_Fairytale:shadow -- ["Demolition is fun!"] = "", +-- ["Dense Cloud"] = "", -- A_Classic_Fairytale:backstab, A_Classic_Fairytale:dragon, A_Classic_Fairytale:enemy, A_Classic_Fairytale:epil, A_Classic_Fairytale:family, A_Classic_Fairytale:journey, A_Classic_Fairytale:queen, A_Classic_Fairytale:shadow, A_Classic_Fairytale:united +-- ["Dense Cloud must have already told them everything..."] = "", -- A_Classic_Fairytale:shadow ["Depleted Kamikaze!"] = "Nusodrintojo Kamikaze!", +-- ["Destroy him, Leaks A Lot! He is responsible for the deaths of many of us!"] = "", -- A_Classic_Fairytale:first_blood ["Destroy invaders to score points."] = "Sunaikink Isiverþëjus Ir Gauk Taðku.", +-- ["Destroy the targets!|Hint: Select the Shoryuken and hit [Space]|P.S. You can use it mid-air."] = "", -- A_Classic_Fairytale:first_blood +-- ["Destroy the targets!|Hint: [Up], [Down] to aim, [Space] to shoot"] = "", -- A_Classic_Fairytale:first_blood +-- ["Did anyone follow you?"] = "", -- A_Classic_Fairytale:united +-- ["Did you see him coming?"] = "", -- A_Classic_Fairytale:shadow +-- ["Did you warn the village?"] = "", -- A_Classic_Fairytale:shadow +-- ["Die, die, die!"] = "", -- A_Classic_Fairytale:dragon +-- ["Disguise as a Rockhopper Penguin: [Swap place with a random enemy hog in the circle]"] = "", -- Continental_supplies +-- ["Dist: "] = "", -- Space_Invasion +-- ["Do not laugh, inexperienced one, for he speaks the truth!"] = "", -- A_Classic_Fairytale:backstab +-- ["Do not let his words fool you, young one! He will stab you in the back as soon as you turn away!"] = "", -- A_Classic_Fairytale:first_blood +-- ["Do the deed"] = "", -- A_Classic_Fairytale:first_blood -- ["Double Kill!"] = "", +-- ["DOUBLE KILL"] = "", -- Mutant +-- ["Do you have any idea how valuable grass is?"] = "", -- A_Classic_Fairytale:enemy +-- ["Do you think you're some kind of god?"] = "", -- A_Classic_Fairytale:enemy +-- ["Dragon's Lair"] = "", -- A_Classic_Fairytale:dragon +-- ["Drills"] = "", -- A_Classic_Fairytale:backstab ["Drone Hunter!"] = "Drone Medþiotojas!", +-- ["Drop a bomb: [drop some heroic wind that will turn into a bomb on impact]"] = "", -- Continental_supplies ["Drowner"] = "Skendëjas", +-- ["Dude, all the plants are gone!"] = "", -- A_Classic_Fairytale:family +-- ["Dude, can you see Ramon and Spiky?"] = "", -- A_Classic_Fairytale:journey +-- ["Dude, that's so cool!"] = "", -- A_Classic_Fairytale:backstab +-- ["Dude, we really need a new shaman..."] = "", -- A_Classic_Fairytale:shadow +-- ["Dude, what's this place?!"] = "", -- A_Classic_Fairytale:dragon +-- ["Dude, where are we?"] = "", -- A_Classic_Fairytale:backstab +-- ["Dude, wow! I just had the weirdest high!"] = "", -- A_Classic_Fairytale:backstab +-- ["Duration"] = "", -- Continental_supplies +-- ["Dust storm: [Deals 20 damage to all enemies in the circle]"] = "", -- Continental_supplies ["Each turn you get 1-3 random weapons"] = "Kekviena Eile Gausi 1-3 Atsitiktiniu Ginklu", ["Each turn you get one random weapon"] = "Kekviena Eile Gausi Po Viena Atsitiktini Ginkla", +-- ["Eagle Eye"] = "", -- A_Classic_Fairytale:backstab +-- ["Eagle Eye: [Blink to the impact ~ one shot]"] = "", -- Continental_supplies +-- ["Ear Sniffer"] = "", -- A_Classic_Fairytale:backstab, A_Classic_Fairytale:epil +-- ["Elderbot"] = "", -- A_Classic_Fairytale:family +-- ["Elimate your captor."] = "", -- User_Mission_-_The_Great_Escape ["Eliminate all enemies"] = "Nugalëk Visus Prieðus", ["Eliminate all targets before your time runs out.|You have unlimited ammo for this mission."] = "Sunaikink Visus taikinius kol neiðseko laikas.|Ãitai misijai gausi nesibaigianèiu kulku.", --Bazooka, Shotgun, SniperRifle +-- ["Eliminate enemy hogs and take their weapons."] = "", -- Highlander ["Eliminate Poison before the time runs out"] = "Sunaikink Nuodus kol nepasibaigë laikas", ["Eliminate the Blue Team"] = "Sunaikink Mëlyna komanda", -- ["Eliminate the enemy before the time runs out"] = "", -- User_Mission_-_Bamboo_Thicket, User_Mission_-_Newton_and_the_Hammock -- ["Eliminate the enemy hogs to win."] = "", ["Eliminate the enemy specialists."] = "Sunaikink prieðus specialistus.", ["- Eliminate Unit 3378 |- Feeble Resistance must survive"] = "- Sunaikink Tipa 3378 |- Silpnaus atsparumo tvirtovë turi iðlikti", +-- ["Elmo"] = "", -- A_Classic_Fairytale:dragon, A_Classic_Fairytale:family, A_Classic_Fairytale:queen -- ["Energetic Engineer"] = "", ["Enjoy the swim..."] = "Pasimëgauk Rlaukimu...", ["[Enter]"] = "[ENTER"], +-- ["Europe"] = "", -- Continental_supplies +-- [" ever done to you?!"] = "", -- A_Classic_Fairytale:backstab +-- ["Everyone knows this."] = "", -- A_Classic_Fairytale:enemy +-- ["Every single time!"] = "", -- A_Classic_Fairytale:dragon +-- ["Everything looks OK..."] = "", -- A_Classic_Fairytale:enemy +-- ["Exactly, man! That was my dream."] = "", -- A_Classic_Fairytale:backstab +-- ["Eye Chewer"] = "", -- A_Classic_Fairytale:journey +-- ["FAG"] = "", -- Mutant +-- ["Family Reunion"] = "", -- A_Classic_Fairytale:family ["Fastest lap: "] = "Greièiausias Ratas: ", ["Feeble Resistance"] = "Silpnaus Atsparumo Tvirtovë", +-- ["Fell From Grace"] = "", -- A_Classic_Fairytale:backstab, A_Classic_Fairytale:dragon, A_Classic_Fairytale:enemy, A_Classic_Fairytale:epil, A_Classic_Fairytale:family, A_Classic_Fairytale:queen +-- ["Fell From Heaven"] = "", -- A_Classic_Fairytale:enemy, A_Classic_Fairytale:epil, A_Classic_Fairytale:family, A_Classic_Fairytale:first_blood, A_Classic_Fairytale:journey, A_Classic_Fairytale:queen +-- ["Fell From Heaven is the best! Fell From Heaven is the greatest!"] = "", -- A_Classic_Fairytale:family +-- ["Femur Lover"] = "", -- A_Classic_Fairytale:shadow +-- ["Fierce Competition!"] = "", -- Space_Invasion +-- ["Fiery Water"] = "", -- A_Classic_Fairytale:backstab, A_Classic_Fairytale:dragon, A_Classic_Fairytale:enemy, A_Classic_Fairytale:epil, A_Classic_Fairytale:family, A_Classic_Fairytale:queen, A_Classic_Fairytale:united +-- ["Find your tribe!|Cross the lake!"] = "", -- A_Classic_Fairytale:dragon +-- ["Finish your training|Hint: Animations can be skipped with the [Precise] key."] = "", -- A_Classic_Fairytale:first_blood +-- ["Fire a mine: [Does what it says ~ Cant be dropped close to an enemy ~ 1 sec]"] = "", -- Continental_supplies ["Fire"] = "Ugnis", +-- ["First aid kits?!"] = "", -- A_Classic_Fairytale:united +-- ["First Blood"] = "", -- A_Classic_Fairytale:first_blood +-- ["FIRST BLOOD MUTATES"] = "", -- Mutant +-- ["First Steps"] = "", -- A_Classic_Fairytale:first_blood ["Flag captured!"] = "Vëliava Pagrobta!", ["Flag respawned!"] = "Vëliava Atsigavo!", ["Flag returned!"] = "Vëliava Sugraþinta!", ["Flags, and their home base will be placed where each team ends their first turn."] = "Vëliavos, Ir Ju Bazës Bus Padëtos Kur Kekviena Komanda Pabaigs Ëjima.", -- ["Flamer"] = "", +-- ["Flaming Worm"] = "", -- A_Classic_Fairytale:backstab +-- ["Flare: [fire up some bombs depending on hogs depending on hogs in the circle"] = "", -- Continental_supplies +-- ["Flesh for Brainz"] = "", -- A_Classic_Fairytale:journey +-- ["For improved features/stability, play 0.9.18+"] = "", -- WxW +-- ["Free Dense Cloud and continue the mission!"] = "", -- A_Classic_Fairytale:journey -- ["Friendly Fire!"] = "", -- ["fuel extended!"] = "", ["GAME BEGUN!!!"] = "Þaidimas Prasidëjo!!!", ["Game Modifiers: "] = "Þaidimo Modifikatoriai: ", ["GAME OVER!"] = "Þaidimas Baigtas!", ["Game Started!"] = "Þaidimas Prasidëjo!", +-- ["Game? Was this a game to you?!"] = "", -- A_Classic_Fairytale:enemy +-- ["GasBomb"] = "", -- Continental_supplies +-- ["Gas Gargler"] = "", -- A_Classic_Fairytale:queen +-- ["Get Dense Cloud out of the pit!"] = "", -- A_Classic_Fairytale:journey ["Get on over there and take him out!"] = "Nueik Ten Ir Nudauþk Ji!", +-- ["Get on the head of the mole"] = "", -- A_Classic_Fairytale:first_blood +-- ["Get out of there!"] = "", -- User_Mission_-_The_Great_Escape +-- ["Get that crate!"] = "", -- A_Classic_Fairytale:first_blood +-- ["Get the crate on the other side of the island!|"] = "", -- A_Classic_Fairytale:journey +-- ["Get to the target using your rope! |Controls: Left & Right to swing the rope - Up & Down to Contract and Expand!"] = "", -- Basic_Training_-_Rope +-- ["Get your teammates out of their natural prison and save the princess!|Hint: Drilling holes should solve everything.|Hint: It might be a good idea to place a girder before starting to drill. Just saying.|Hint: All your hedgehogs need to be above the marked height!|Hint: Leaks A Lot needs to get really close to the princess!"] = "", -- A_Classic_Fairytale:family +-- ["GG!"] = "", -- User_Mission_-_Rope_Knock_Challenge +-- ["Gimme Bones"] = "", -- A_Classic_Fairytale:backstab +-- ["Glark"] = "", -- A_Classic_Fairytale:shadow ["Goal"] = "Ãaunu!", ["GO! GO! GO!"] = "Bëk! Bëk! Bëk!", ["Good birdy......"] = "Geras Paukðtelis......", +-- ["Good Dude"] = "", -- User_Mission_-_The_Great_Escape +-- ["Good idea, they'll never find us there!"] = "", -- A_Classic_Fairytale:united +-- ["Good luck...or else!"] = "", -- A_Classic_Fairytale:journey ["Good luck out there!"] = "Sëkmës Tau Ten!", -- ["Good so far!"] = "", -- ["Good to go!"] = "", +-- ["Go on top of the flower"] = "", -- A_Classic_Fairytale:first_blood +-- ["Go, quick!"] = "", -- A_Classic_Fairytale:backstab +-- ["Gorkij"] = "", -- A_Classic_Fairytale:journey +-- ["Go surf!"] = "", -- WxW ["GOTCHA!"] = "Prigavau!", -- ["Grab Mines/Explosives"] = "", +-- ["Great choice, Steve! Mind if I call you that?"] = "", -- A_Classic_Fairytale:shadow +-- ["Great work! Now hit it with your Baseball Bat! |Tip: You can change weapon with 'Right Click'!"] = "", -- Basic_Training_-_Rope +-- ["Great! You will be contacted soon for assistance."] = "", -- A_Classic_Fairytale:shadow +-- ["Green lipstick bullet: [Is poisonous]"] = "", -- Continental_supplies +-- ["Greetings, "] = "", -- A_Classic_Fairytale:dragon +-- ["Greetings, cloudy one!"] = "", -- A_Classic_Fairytale:shadow +-- ["Grenade Training"] = "", -- Basic_Training_-_Grenade +-- ["Grenadiers"] = "", -- Basic_Training_-_Grenade +-- ["Guys, do you think there's more of them?"] = "", -- A_Classic_Fairytale:backstab +-- ["HAHA!"] = "", -- A_Classic_Fairytale:enemy +-- ["Haha!"] = "", -- A_Classic_Fairytale:united ["Hahahaha!"] = "Hahahaha!", ["Haha, now THAT would be something!"] = "Haha, na tai jau butu kaþkas!", +-- ["Hannibal"] = "", -- A_Classic_Fairytale:epil [" Hapless Hogs left!"] = " Nelaimingu Eþiu Liko!", ["Hapless Hogs"] = "Nelaimingi Eþiai", +-- [" HAS MUTATED\" )"] = "", -- +-- ["Hatless Jerry"] = "", -- A_Classic_Fairytale:queen +-- ["Have no illusions, your tribe is dead, indifferent of your choice."] = "", -- A_Classic_Fairytale:shadow +-- ["Have we ever attacked you first?"] = "", -- A_Classic_Fairytale:enemy -- ["Health crates extend your time."] = "", +-- ["Heavy Cannfantry"] = "", -- A_Classic_Fairytale:united ["Heavy"] = "Sunku", +-- ["Hedge-cogs"] = "", -- A_Classic_Fairytale:enemy +-- ["Hedgehog projectile: [fire your hog like a Sticky Bomb]"] = "", -- Continental_supplies ["Hedgewars-Basketball"] = "Eþiukaru-Krepðinis", ["Hedgewars-Knockball"] = "Eþiukaru-Trenktaskamuolys", +-- ["Hedgibal Lecter"] = "", -- A_Classic_Fairytale:backstab ["Heh, it's not that bad."] = "Heh,nëra taip blogai.", +-- ["Hello again, "] = "", -- A_Classic_Fairytale:family +-- ["Help me, Leaks!"] = "", -- A_Classic_Fairytale:journey +-- ["Help me, please!!!"] = "", -- A_Classic_Fairytale:journey +-- ["Help me, please!"] = "", -- A_Classic_Fairytale:journey +-- ["He moves like an eagle in the sky."] = "", -- A_Classic_Fairytale:first_blood +-- ["He must be in the village already."] = "", -- A_Classic_Fairytale:journey +-- ["Here, let me help you!"] = "", -- A_Classic_Fairytale:backstab +-- ["Here, let me help you save her!"] = "", -- A_Classic_Fairytale:family +-- ["Here...pick your weapon!"] = "", -- A_Classic_Fairytale:first_blood +-- ["Hero Team"] = "", -- User_Mission_-_The_Great_Escape +-- ["He's so brave..."] = "", -- A_Classic_Fairytale:first_blood +-- ["He won't be selling us out anymore!"] = "", -- A_Classic_Fairytale:backstab +-- ["Hey, guys!"] = "", -- A_Classic_Fairytale:backstab +-- ["Hey guys!"] = "", -- A_Classic_Fairytale:united +-- ["Hey! This is cheating!"] = "", -- A_Classic_Fairytale:journey +-- ["HIGHLANDER"] = "", -- Highlander +-- ["Hightime"] = "", -- A_Classic_Fairytale:first_blood +-- ["Hint: Double Jump - Press [Backspace] twice"] = "", -- A_Classic_Fairytale:first_blood +-- ["Hint: Select the BlowTorch, aim and press [Fire]. Press [Fire] again to stop.|Don't blow up the crate."] = "", -- A_Classic_Fairytale:journey +-- ["Hint: Select the LowGravity and press [Fire]."] = "", -- A_Classic_Fairytale:journey +-- ["Hint: you might want to stay out of sight and take all the crates...|"] = "", -- A_Classic_Fairytale:journey +-- ["His arms are so strong!"] = "", -- A_Classic_Fairytale:first_blood ["Hit Combo!"] = "Pataikimo Bonusas!", +-- ["Hmmm...actually...I didn't either."] = "", -- A_Classic_Fairytale:enemy ["Hmmm..."] = "Hmmm...", +-- ["Hmmm, I'll have to find some way of moving him off this anti-portal surface..."] = "", -- portal +-- ["Hmmm...it's a draw. How unfortunate!"] = "", -- A_Classic_Fairytale:enemy +-- ["Hmmm...perhaps a little more time will help."] = "", -- A_Classic_Fairytale:first_blood +-- ["Hogminator"] = "", -- A_Classic_Fairytale:family +-- ["Hogs in sight!"] = "", -- Continental_supplies +-- ["HOLY SHIT!"] = "", -- Mutant +-- ["Honest Lee"] = "", -- A_Classic_Fairytale:enemy ["Hooray!"] = "Hurah!", +-- ["Hostage Situation"] = "", -- A_Classic_Fairytale:family +-- ["How can I ever repay you for saving my life?"] = "", -- A_Classic_Fairytale:journey +-- ["How come in a village full of warriors, it's up to me to save it?"] = "", -- A_Classic_Fairytale:dragon +-- ["How difficult would you like it to be?"] = "", -- A_Classic_Fairytale:first_blood +-- ["HOW DO THEY KNOW WHERE WE ARE???"] = "", -- A_Classic_Fairytale:united +-- ["However, if you fail to do so, she dies a most violent death, just like your friend! Muahahaha!"] = "", -- A_Classic_Fairytale:journey +-- ["However, if you fail to do so, she dies a most violent death! Muahahaha!"] = "", -- A_Classic_Fairytale:journey +-- ["However, my mates don't agree with me on letting you go..."] = "", -- A_Classic_Fairytale:dragon +-- [" HP"] = "", -- Mutant ["Hunter"] = "Medþiotojas", --Bazooka, Shotgun, SniperRifle +-- ["I believe there's more of them."] = "", -- A_Classic_Fairytale:backstab +-- ["I can see you have been training diligently."] = "", -- A_Classic_Fairytale:first_blood +-- ["I can't believe it worked!"] = "", -- A_Classic_Fairytale:shadow +-- ["I can't believe this!"] = "", -- A_Classic_Fairytale:enemy +-- ["I can't believe what I'm hearing!"] = "", -- A_Classic_Fairytale:backstab +-- ["I can't wait any more, I have to save myself!"] = "", -- A_Classic_Fairytale:shadow +-- ["I could just teleport myself there..."] = "", -- A_Classic_Fairytale:family +-- ["I'd better get going myself."] = "", -- A_Classic_Fairytale:journey +-- ["I didn't until about a month ago."] = "", -- A_Classic_Fairytale:enemy +-- ["I don't know how you did that.. But good work! |The next one should be easy as cake for you!"] = "", -- Basic_Training_-_Rope +-- ["I feel something...a place! They will arrive near the circles!"] = "", -- A_Classic_Fairytale:backstab +-- ["If only I had a way..."] = "", -- A_Classic_Fairytale:backstab +-- ["If only I were given a chance to explain my being here..."] = "", -- A_Classic_Fairytale:first_blood +-- ["I forgot that she's the daughter of the chief, too..."] = "", -- A_Classic_Fairytale:backstab +-- ["If they try coming here, they can have a taste of my delicious knuckles!"] = "", -- A_Classic_Fairytale:united +-- ["If you agree to provide the information we need, you will be spared!"] = "", -- A_Classic_Fairytale:shadow +-- ["If you can get that crate fast enough, your beloved \"princess\" may go free."] = "", -- A_Classic_Fairytale:journey +-- ["If you decide to help us, though, we will no longer need to find a new governor for the island."] = "", -- A_Classic_Fairytale:shadow +-- ["If you get stuck, use your Desert Eagle or restart the mission!|"] = "", -- A_Classic_Fairytale:journey +-- ["If you know what I mean..."] = "", -- A_Classic_Fairytale:shadow +-- ["If you say so..."] = "", -- A_Classic_Fairytale:shadow +-- ["If you wish to restart the course, hold [Precise] while your turn ends (e.g with Skip)"] = "", -- +-- ["I guess you'll have to kill them."] = "", -- A_Classic_Fairytale:dragon +-- ["I have come to make you an offering..."] = "", -- A_Classic_Fairytale:shadow +-- ["I have no idea where that mole disappeared...Can you see it?"] = "", -- A_Classic_Fairytale:shadow +-- ["I have to follow that alien."] = "", -- A_Classic_Fairytale:backstab +-- ["I have to get back to the village!"] = "", -- A_Classic_Fairytale:shadow +-- ["I hope you are prepared for a small challenge, young one."] = "", -- A_Classic_Fairytale:first_blood +-- ["I just don't want to sink to your level."] = "", -- A_Classic_Fairytale:backstab +-- ["I just found out that they have captured your princess!"] = "", -- A_Classic_Fairytale:family +-- ["I just wonder where Ramon and Spiky disappeared..."] = "", -- A_Classic_Fairytale:journey +-- ["I'll hold them off while you return to the village!"] = "", -- A_Classic_Fairytale:shadow +-- ["Imagine those targets are the wolves that killed your parents! Take your anger out on them!"] = "", -- A_Classic_Fairytale:first_blood +-- ["I'm...alive? How? Why?"] = "", -- A_Classic_Fairytale:backstab +-- ["I'm a ninja."] = "", -- A_Classic_Fairytale:dragon +-- ["I marked the place of their arrival. You're welcome!"] = "", -- A_Classic_Fairytale:backstab +-- ["I'm certain that this is a misunderstanding, fellow hedgehogs!"] = "", -- A_Classic_Fairytale:first_blood +-- ["I mean, none of you ceased to live."] = "", -- A_Classic_Fairytale:enemy +-- ["I'm getting old for this!"] = "", -- A_Classic_Fairytale:family +-- ["I'm getting thirsty..."] = "", -- A_Classic_Fairytale:family +-- ["I'm here to help you rescue her."] = "", -- A_Classic_Fairytale:family +-- ["I'm not sure about that!"] = "", -- A_Classic_Fairytale:united +-- ["Impressive...you are still dry as the corpse of a hawk after a week in the desert..."] = "", -- A_Classic_Fairytale:first_blood +-- ["I'm so scared!"] = "", -- A_Classic_Fairytale:united +-- ["Incredible..."] = "", -- A_Classic_Fairytale:shadow +-- ["I need to find the others!"] = "", -- A_Classic_Fairytale:backstab +-- ["I need to get to the other side of this island, fast!"] = "", -- A_Classic_Fairytale:journey +-- ["I need to move the tribe!"] = "", -- A_Classic_Fairytale:united +-- ["I need to prevent their arrival!"] = "", -- A_Classic_Fairytale:backstab +-- ["I need to warn the others."] = "", -- A_Classic_Fairytale:backstab +-- ["In fact, you are the only one that's been acting strangely."] = "", -- A_Classic_Fairytale:backstab +-- ["In order to get to the other side, you need to collect the crates first.|"] = "", -- A_Classic_Fairytale:dragon ["Instructor"] = "Instruktorius", -- 01#Boot_Camp, User_Mission_-_Dangerous_Ducklings +-- ["Interesting idea, haha!"] = "", -- A_Classic_Fairytale:enemy +-- ["Interesting! Last time you said you killed a cannibal!"] = "", -- A_Classic_Fairytale:backstab +-- ["In the meantime, take these and return to your \"friend\"!"] = "", -- A_Classic_Fairytale:shadow ["invaders destroyed"] = "isiverþëjai sunaikinti", +-- ["Invasion"] = "", -- A_Classic_Fairytale:united +-- ["I saw it with my own eyes!"] = "", -- A_Classic_Fairytale:shadow +-- ["I see..."] = "", -- A_Classic_Fairytale:shadow +-- ["I see you have already taken the leap of faith."] = "", -- A_Classic_Fairytale:first_blood +-- ["I see you would like his punishment to be more...personal..."] = "", -- A_Classic_Fairytale:first_blood +-- ["I sense another wave of cannibals heading my way!"] = "", -- A_Classic_Fairytale:backstab +-- ["I sense another wave of cannibals heading our way!"] = "", -- A_Classic_Fairytale:backstab +-- ["I shouldn't have drunk that last pint."] = "", -- A_Classic_Fairytale:dragon +-- ["Is this place in my head?"] = "", -- A_Classic_Fairytale:dragon +-- ["It doesn't matter. I won't let that alien hurt my daughter!"] = "", -- A_Classic_Fairytale:dragon +-- ["I think we are safe here."] = "", -- A_Classic_Fairytale:backstab +-- ["I thought their shaman died when he tried our medicine!"] = "", -- A_Classic_Fairytale:shadow +-- ["It is called 'Hogs of Steel'."] = "", -- A_Classic_Fairytale:enemy +-- ["It is time to practice your fighting skills."] = "", -- A_Classic_Fairytale:first_blood +-- ["It must be a childhood trauma..."] = "", -- A_Classic_Fairytale:family +-- ["It must be the aliens!"] = "", -- A_Classic_Fairytale:backstab +-- ["It must be the aliens' deed."] = "", -- A_Classic_Fairytale:backstab +-- ["It must be the cyborgs again!"] = "", -- A_Classic_Fairytale:enemy +-- ["I told you, I just found them."] = "", -- A_Classic_Fairytale:backstab ["It's a good thing SUDDEN DEATH is 99 turns away..."] = "Geras dalykas kad MARAS dar po 99 eiliu...", +-- ["It's always up to women to clear up the mess men created!"] = "", -- A_Classic_Fairytale:dragon +-- ["It's a shame, I forgot how to do that!"] = "", -- A_Classic_Fairytale:family +-- ["It's impossible to communicate with the spirits without a shaman."] = "", -- A_Classic_Fairytale:shadow +-- ["It's over..."] = "", -- A_Classic_Fairytale:shadow +-- ["It's time you learned that your actions have consequences!"] = "", -- A_Classic_Fairytale:journey +-- ["It's worth more than wood!"] = "", -- A_Classic_Fairytale:enemy +-- ["It wants our brains!"] = "", -- A_Classic_Fairytale:shadow +-- ["It was not a dream, unwise one!"] = "", -- A_Classic_Fairytale:backstab +-- ["I've seen this before. They just appear out of thin air."] = "", -- A_Classic_Fairytale:united +-- ["I want to play a game..."] = "", -- A_Classic_Fairytale:journey +-- ["I want to see how it handles this!"] = "", -- A_Classic_Fairytale:backstab +-- ["I wish to help you, "] = "", -- A_Classic_Fairytale:dragon +-- ["I wonder where Dense Cloud is..."] = "", -- A_Classic_Fairytale:journey, A_Classic_Fairytale:shadow +-- ["I wonder why I'm so angry all the time..."] = "", -- A_Classic_Fairytale:family +-- ["I won't let you kill her!"] = "", -- A_Classic_Fairytale:journey +-- ["Jack"] = "", -- A_Classic_Fairytale:dragon, A_Classic_Fairytale:family, A_Classic_Fairytale:queen +-- ["Jeremiah"] = "", -- A_Classic_Fairytale:dragon +-- ["John"] = "", -- A_Classic_Fairytale:journey +-- ["Judas"] = "", -- A_Classic_Fairytale:backstab ["Jumping is disabled"] = "Ãokimas ira iðjungtas", +-- ["Just kidding, none of you have died!"] = "", -- A_Classic_Fairytale:enemy +-- ["Just on a walk."] = "", -- A_Classic_Fairytale:united +-- ["Just wait till I get my hands on that trauma! ARGH!"] = "", -- A_Classic_Fairytale:family ["Kamikaze Expert!"] = "Kamikazes Ekspertas!", -- ["Keep it up!"] = "", +-- ["Kerguelen"] = "", -- Continental_supplies -- ["Killing spree!"] = "", +-- ["KILL IT!"] = "", -- A_Classic_Fairytale:first_blood ["KILLS"] = "Nuþudymai", +-- ["Kill the aliens!"] = "", -- A_Classic_Fairytale:dragon +-- ["Kill the cannibal!"] = "", -- A_Classic_Fairytale:first_blood +-- ["Kill the traitor...or spare his life!|Kill him or press [Precise]!"] = "", -- A_Classic_Fairytale:backstab -- ["Last Target!"] = "", +-- ["Leader"] = "", -- A_Classic_Fairytale:enemy +-- ["Leaderbot"] = "", -- A_Classic_Fairytale:queen +-- ["Leaks A Lot"] = "", -- A_Classic_Fairytale:backstab, A_Classic_Fairytale:dragon, A_Classic_Fairytale:enemy, A_Classic_Fairytale:epil, A_Classic_Fairytale:family, A_Classic_Fairytale:first_blood, A_Classic_Fairytale:journey, A_Classic_Fairytale:queen, A_Classic_Fairytale:shadow, A_Classic_Fairytale:united +-- ["Leaks A Lot, depressed for killing his loved one, failed to save the village..."] = "", -- A_Classic_Fairytale:journey +-- ["Leaks A Lot gave his life for his tribe! He should have survived!"] = "", -- A_Classic_Fairytale:first_blood +-- ["Leaks A Lot must survive!"] = "", -- A_Classic_Fairytale:journey +-- ["Led Heart"] = "", -- A_Classic_Fairytale:queen +-- ["Lee"] = "", -- A_Classic_Fairytale:dragon, A_Classic_Fairytale:family, A_Classic_Fairytale:queen ["[Left Shift]"] = "[Kairis Shiftas"], +-- ["Let a Continent provide your weapons!"] = "", -- Continental_supplies +-- ["Let me test your skills a little, will you?"] = "", -- A_Classic_Fairytale:journey +-- ["Let's go home!"] = "", -- A_Classic_Fairytale:journey +-- ["Let's head back to the village!"] = "", -- A_Classic_Fairytale:shadow +-- ["Let's see what your comrade does now!"] = "", -- A_Classic_Fairytale:journey +-- ["Let's show those cannibals what we're made of!"] = "", -- A_Classic_Fairytale:backstab +-- ["Let them have a taste of my fury!"] = "", -- A_Classic_Fairytale:backstab +-- ["Let us help, too!"] = "", -- A_Classic_Fairytale:backstab +-- ["Light Cannfantry"] = "", -- A_Classic_Fairytale:united ["Listen up, maggot!!"] = "Paklausyk eilini!!", +-- ["Little did they know that this hunt will mark them forever..."] = "", -- A_Classic_Fairytale:shadow -- ["Lively Lifeguard"] = "", +-- ["Lonely Cries: [Rise the water if no hog is in the circle and deal 1 damage to all hogs]"] = "", -- Continental_supplies +-- ["Look, I had no choice!"] = "", -- A_Classic_Fairytale:backstab +-- ["Look out! There's more of them!"] = "", -- A_Classic_Fairytale:backstab +-- ["Look out! We're surrounded by cannibals!"] = "", -- A_Classic_Fairytale:enemy +-- ["Looks like the whole world is falling apart!"] = "", -- A_Classic_Fairytale:enemy +-- ["Luckily, I've managed to snatch some of them."] = "", -- A_Classic_Fairytale:united +-- ["LUDICROUS KILL"] = "", -- Mutant +-- ["May the spirits aid you in all your quests!"] = "", -- A_Classic_Fairytale:backstab +-- ["Medicine: [Fire some exploding medicine that will heal all hogs effected by the explosion]"] = "", -- Continental_supplies +-- ["MEGA KILL"] = "", -- Mutant +-- ["Meiwes"] = "", -- A_Classic_Fairytale:backstab +-- ["Mindy"] = "", -- A_Classic_Fairytale:united -- ["Mine Deployer"] = "", -- ["Mine Eater!"] = "", ["|- Mines Time:"] = "|- Minu Laikas:", -- User_Mission_-_Diver, User_Mission_-_Spooky_Tree, User_Mission_-_Teamwork ["MISSION FAILED"] = "Misija Nepavyko", -- User_Mission_-_Dangerous_Ducklings, User_Mission_-_Diver, User_Mission_-_Spooky_Tree, User_Mission_-_Teamwork ["MISSION SUCCESSFUL"] = "Misija Buvo Ivykdita", -- User_Mission_-_Diver, User_Mission_-_Spooky_Tree, User_Mission_-_Teamwork ["MISSION SUCCESS"] = "Misija Pavyko", +-- ["Molotov"] = "", -- Continental_supplies +-- ["MONSTER KILL"] = "", -- Mutant +-- ["More Natives"] = "", -- A_Classic_Fairytale:epil ["Movement: [Up], [Down], [Left], [Right]"] = "Judëjimas: [I Virðu, [I Apaèia], [I Kaire], [I Deðine]"], ["Multi-shot!"] = "Dvigubas-Ãuvis!", +-- ["Muriel"] = "", -- A_Classic_Fairytale:backstab, A_Classic_Fairytale:dragon, A_Classic_Fairytale:family, A_Classic_Fairytale:queen +-- ["Muscle Dissolver"] = "", -- A_Classic_Fairytale:shadow +-- ["-------"] = "", -- Mutant +-- ["Nade Boy"] = "", -- Basic_Training_-_Grenade +-- ["Name"] = "", -- A_Classic_Fairytale:queen ["Nameless Heroes"] = "Bevardþiai Herojiai", +-- ["Nancy Screw"] = "", -- A_Classic_Fairytale:enemy, A_Classic_Fairytale:queen +-- ["Napalm rocket: [Fire a bomb with napalm!]"] = "", -- Continental_supplies +-- ["Natives"] = "", -- A_Classic_Fairytale:backstab, A_Classic_Fairytale:dragon, A_Classic_Fairytale:enemy, A_Classic_Fairytale:epil, A_Classic_Fairytale:family, A_Classic_Fairytale:first_blood, A_Classic_Fairytale:journey, A_Classic_Fairytale:queen, A_Classic_Fairytale:shadow, A_Classic_Fairytale:united -- ["New Barrels Per Turn"] = "", ["NEW CLAN RECORD: "] = "Naujas Klano Rekordas: ", ["NEW fastest lap: "] = "Naujas Greièiausias Ratas: ", -- ["New Mines Per Turn"] = "", ["NEW RACE RECORD: "] = "Naujas Lenktyniu Rekordas: ", -- ["Newton's Hammock"] = "", +-- ["Nicely done, meatbags!"] = "", -- A_Classic_Fairytale:enemy +-- ["Nice work, "] = "", -- A_Classic_Fairytale:dragon +-- ["Nice work!"] = "", -- A_Classic_Fairytale:enemy +-- ["Nilarian"] = "", -- A_Classic_Fairytale:queen +-- ["No, I came back to help you out..."] = "", -- A_Classic_Fairytale:shadow +-- ["No...I wonder where they disappeared?!"] = "", -- A_Classic_Fairytale:journey +-- ["Nom-Nom"] = "", -- A_Classic_Fairytale:journey +-- ["NomNom"] = "", -- A_Classic_Fairytale:united +-- ["Nope. It was one fast mole, that's for sure."] = "", -- A_Classic_Fairytale:shadow +-- ["No! Please, help me!"] = "", -- A_Classic_Fairytale:journey +-- ["NORMAL"] = "", -- Continental_supplies +-- ["North America"] = "", -- Continental_supplies +-- ["Not all hogs are born equal."] = "", -- Highlander ["NOT ENOUGH WAYPOINTS"] = "Neuþtenka Kelio Taðku", +-- ["Not now, Fiery Water!"] = "", -- A_Classic_Fairytale:backstab ["Not So Friendly Match"] = "Ne Toks Jau Ir Draugiðkas Turnyras", -- Basketball, Knockball +-- ["Not you again! My head still hurts from last time!"] = "", -- A_Classic_Fairytale:shadow +-- ["No, we made sure of that!"] = "", -- A_Classic_Fairytale:united +-- ["Now find the next target! |Tip: Normally you lose health by falling down, so be careful!"] = "", -- Basic_Training_-_Rope +-- ["No! What have I done?! What have YOU done?!"] = "", -- A_Classic_Fairytale:journey +-- ["No. Where did he come from?"] = "", -- A_Classic_Fairytale:shadow +-- ["Now how do I get on the other side?!"] = "", -- A_Classic_Fairytale:dragon +-- ["No. You and the rest of the tribe are safer there!"] = "", -- A_Classic_Fairytale:backstab +-- ["Obliterate them!|Hint: You might want to take cover..."] = "", -- A_Classic_Fairytale:shadow +-- ["Obstacle course"] = "", -- A_Classic_Fairytale:dragon +-- ["Of course I have to save her. What did I expect?!"] = "", -- A_Classic_Fairytale:family +-- ["OH, COME ON!"] = "", -- A_Classic_Fairytale:journey +-- ["Oh, my!"] = "", -- A_Classic_Fairytale:first_blood +-- ["Oh, my! This is even more entertaining than I've expected!"] = "", -- A_Classic_Fairytale:backstab ["Oh no! Just try again!"] = "O NE! Tiesiog Bandyk Vël", -- User_Mission_-_Diver, User_Mission_-_Spooky_Tree, User_Mission_-_Teamwork +-- ["Oh no, not "] = "", -- A_Classic_Fairytale:backstab, A_Classic_Fairytale:united ["Oh no! Time's up! Just try again."] = "O NE! Baigësi Laikas! Tiesiog Bandyk Vël.", --Bazooka, Shotgun, SniperRifle +-- ["Oh no! You failed! Just try again."] = "", -- Basic_Training_-_Cluster_Bomb +-- ["Oh, silly me! I forgot that I'm the shaman."] = "", -- A_Classic_Fairytale:backstab +-- ["Olive"] = "", -- A_Classic_Fairytale:united +-- ["Omnivore"] = "", -- A_Classic_Fairytale:first_blood +-- ["Once upon a time, on an island with great natural resources, lived two tribes in heated conflict..."] = "", -- A_Classic_Fairytale:first_blood +-- ["ONE HOG PER TEAM! KILLING EXCESS HEDGES"] = "", -- Mutant +-- ["One tribe was peaceful, spending their time hunting and training, enjoying the small pleasures of life..."] = "", -- A_Classic_Fairytale:first_blood +-- ["Oops...I dropped them."] = "", -- A_Classic_Fairytale:united +-- ["Open that crate and we will continue!"] = "", -- A_Classic_Fairytale:first_blood ["Operation Diver"] = "Operacijos Vairuotojas", ["Opposing Team: "] = "Pasiprieðinanti Komanda: ", +-- ["Orlando Boom!"] = "", -- A_Classic_Fairytale:queen +-- ["Ouch!"] = "", -- User_Mission_-_Rope_Knock_Challenge +-- ["Our tribe, our beautiful island!"] = "", -- A_Classic_Fairytale:enemy +-- ["Parachute"] = "", -- Continental_supplies ["Pathetic Hog #%d"] = "Niekam Tikes Eþys #%d", -- ["Pathetic Resistance"] = "", -- User_Mission_-_Bamboo_Thicket, User_Mission_-_Newton_and_the_Hammock +-- ["Perfect! Now try to get the next crate without hurting yourself!"] = "", -- A_Classic_Fairytale:first_blood ["Per-Hog Ammo"] = "Kulkos Per-Eþy", +-- ["- Per team weapons|- 9 weaponschemes|- Unique new weapons| |Select continent first round with the Weapon Menu or by ([switch/tab]=Increase,[presice/left shift]=Decrease)"] = "", -- +-- ["Pfew! That was close!"] = "", -- A_Classic_Fairytale:shadow +-- ["Piñata bullet: [Contains some sweet candy!]"] = "", -- Continental_supplies +-- ["Pings left:"] = "", -- Space_Invasion ["Place more waypoints using [ENTER]"] = "Padëk Daugiau Kelio Taðku Su [ENTER"], -- ["Place more waypoints using the 'Air Attack' weapon."] = "", +-- ["Planes Used:"] = "", -- User_Mission_-_RCPlane_Challenge +-- ["Planes Used"] = "", -- User_Mission_-_RCPlane_Challenge +-- ["Play with me!"] = "", -- A_Classic_Fairytale:shadow +-- ["Please place the way-point further from the waterline."] = "", -- Racer +-- ["Please place the way-point in the open, within the map boundaries."] = "", -- Racer +-- ["Please, stop releasing your \"smoke signals\"!"] = "", -- A_Classic_Fairytale:shadow +-- ["Point Blank Combo!"] = "", -- Space_Invasion ["points"] = "taðkai", -- Control, CTF_Blizzard, Basic_Training_-_Bazooka, Basic_Training_-_Shotgun, Basic_Training_-_Sniper_Rifle ["Poison"] = "Nuodai", +-- ["Portal hint: one goes to the destination, and one is the entrance.|"] = "", -- A_Classic_Fairytale:dragon +-- ["Portal mission"] = "", -- portal ["Power Remaining"] = "Jëgos Liko", -- ["Prepare yourself"] = "", +-- ["Press [Enter] to accept this configuration."] = "", -- WxW +-- ["Press [Left] or [Right] to move around, [Enter] to jump"] = "", -- A_Classic_Fairytale:first_blood ["Press [Precise] to skip intro"] = "Spausk [TaikluNusitaikima kad baigtum iëjima"], +-- ["Private Novak"] = "", -- Basic_Training_-_Cluster_Bomb +-- ["Protect yourselves!|Grenade hint: set the timer with [1-5], aim with [Up]/[Down] and hold [Space] to set power"] = "", -- A_Classic_Fairytale:shadow ["Race complexity limit reached."] = "Lenktyniu Sudëtingumo Limitas Pasiektas.", -- ["RACER"] = "", +-- ["Rachel"] = "", -- A_Classic_Fairytale:dragon, A_Classic_Fairytale:family, A_Classic_Fairytale:queen +-- ["Radar Ping"] = "", -- Space_Invasion +-- ["Raging Buffalo"] = "", -- A_Classic_Fairytale:backstab, A_Classic_Fairytale:dragon, A_Classic_Fairytale:enemy, A_Classic_Fairytale:epil, A_Classic_Fairytale:family, A_Classic_Fairytale:queen, A_Classic_Fairytale:united +-- ["Ramon"] = "", -- A_Classic_Fairytale:enemy, A_Classic_Fairytale:epil, A_Classic_Fairytale:family, A_Classic_Fairytale:queen, A_Classic_Fairytale:shadow +-- ["RC PLANE TRAINING"] = "", -- User_Mission_-_RCPlane_Challenge +-- ["Really?! You thought you could harm me with your little toys?"] = "", -- A_Classic_Fairytale:shadow +-- ["Regurgitator"] = "", -- A_Classic_Fairytale:backstab +-- ["Reinforcements"] = "", -- A_Classic_Fairytale:backstab +-- ["Remember: The rope only bend around objects, |if it doesn't hit anything it's always stright!"] = "", -- Basic_Training_-_Rope +-- ["Remember this, pathetic animal: when the day comes, you will regret your blind loyalty!"] = "", -- A_Classic_Fairytale:shadow [" - 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"] = " - Graþink prieðu vëliava i savo baze ir gausi taðku | - Pirma komanda su 3 vëliavom laimi | - Taðkus gausi tik tada kaip tavo vëliava bazëje | - Eþiai pames vëliava jeigu mirs, arba paskes | - Pamestos vëliavos gali buti graþintos arba pavogtos | - Eþiai atsikelia kaip nuþudyti", +-- ["Return to Leaks A Lot! If you get stuck, press [Precise] to try again!"] = "", -- A_Classic_Fairytale:shadow +-- ["Righteous Beard"] = "", -- A_Classic_Fairytale:backstab, A_Classic_Fairytale:dragon, A_Classic_Fairytale:enemy, A_Classic_Fairytale:epil, A_Classic_Fairytale:family, A_Classic_Fairytale:first_blood, A_Classic_Fairytale:queen, A_Classic_Fairytale:united +-- ["ROPE-KNOCKING"] = "", -- User_Mission_-_Rope_Knock_Challenge +-- ["Rope Training"] = "", -- Basic_Training_-_Rope +-- ["Rot Molester"] = "", -- A_Classic_Fairytale:shadow -- ["Round Limit:"] = "", ["Round Limit"] = "Raundu Limitas", -- ["Rounds Complete: "] = "", ["Rounds Complete"] = "Raundai Ivykditi", ["RULES OF THE GAME [Press ESC to view]"] = "ÞAIDIMO TAISYKLES [Spausk ESC Kad Parodytu"], +-- ["Rusty Joe"] = "", -- A_Classic_Fairytale:queen +-- ["Sabotage: [Sabotage all hogs in the circle and deal ~10 dmg]"] = "", -- Continental_supplies +-- ["Salivaslurper"] = "", -- A_Classic_Fairytale:united +-- ["Salvation"] = "", -- A_Classic_Fairytale:family +-- ["Salvation was one step closer now..."] = "", -- A_Classic_Fairytale:dragon ["Save as many hapless hogs as possible!"] = "Iðgelbëk kuo daugiau nelaimingu eþiu!", +-- ["Save Fell From Heaven!"] = "", -- A_Classic_Fairytale:journey +-- ["Save Leaks A Lot!|Hint: The Switch utility might be of help to you."] = "", -- A_Classic_Fairytale:shadow +-- ["Save the princess! All your hogs must survive!|Hint: Kill the cyborgs first! Use the ammo very carefully!|Hint: You might want to spare a girder for cover!"] = "", -- A_Classic_Fairytale:family +-- ["Save the princess by collecting the crate in under 12 turns!"] = "", -- A_Classic_Fairytale:journey +-- ["Scalp Muncher"] = "", -- A_Classic_Fairytale:backstab +-- ["Score"] = "", -- Mutant ["SCORE"] = "Taðkai", +-- ["Scream from a Walrus: [Deal 20 damage + 10% of your hogs health to all hogs around you and get half back]"] = "", -- Continental_supplies ["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 +-- ["Seduction"] = "", -- Continental_supplies +-- ["Seems like every time you take a \"walk\", the enemy find us!"] = "", -- A_Classic_Fairytale:backstab +-- ["See that crate farther on the right?"] = "", -- A_Classic_Fairytale:first_blood ["See ya!"] = "Iki!", +-- ["Segmentation Paul"] = "", -- A_Classic_Fairytale:dragon +-- ["Select continent!"] = "", -- Continental_supplies +-- ["Select difficulty: [Left] - easier or [Right] - harder"] = "", -- A_Classic_Fairytale:first_blood -- ["selected!"] = "", +-- ["... share your beauty with the world every morning, my princess!"] = "", -- A_Classic_Fairytale:journey +-- ["She's behind that tall thingy."] = "", -- A_Classic_Fairytale:family ["Shield boosted! +30 power"] = "Skydas Pagerintas! +30 jëga", ["Shield Depleted"] = "Skydas Nusodrintas", ["Shield is fully recharged!"] = "Skydas Pilnai Pakrautas!", @@ -160,61 +644,340 @@ ["Shield OFF:"] = "Skydas Iðjungtas:", ["Shield ON:"] = "Skydas Ijungtas:", ["Shield Seeker!"] = "Skydo Ieðkotojas!", +-- ["Shotgun"] = "", -- Continental_supplies ["Shotgun Team"] = "Ãratinio Ãautuvo Komanda", ["Shotgun Training"] = "Ãratinio Ãautuvo Treniruotë", -- ["shots remaining."] = "", ["Silly"] = "Durnelis", ["Sinky"] = "Paskenduolis", +-- ["Sirius Lee"] = "", -- A_Classic_Fairytale:enemy ["%s is out and Team %d|scored a penalty!| |Score:"] = "%s Iðkrito ir komanda %d|gavo bausme!| |Score:", -- Basketball, Knockball ["%s is out and Team %d|scored a point!| |Score:"] = "%s Iðkrito ir komanda %d|gavo taðka!| |Score:", -- Basketball, Knockball +-- ["Slippery"] = "", -- A_Classic_Fairytale:journey +-- ["Smith 0.97"] = "", -- A_Classic_Fairytale:enemy +-- ["Smith 0.98"] = "", -- A_Classic_Fairytale:enemy +-- ["Smith 0.99a"] = "", -- A_Classic_Fairytale:enemy +-- ["Smith 0.99b"] = "", -- A_Classic_Fairytale:enemy +-- ["Smith 0.99f"] = "", -- A_Classic_Fairytale:enemy +-- ["Smith 1.0"] = "", -- A_Classic_Fairytale:enemy +-- ["Sniper Rifle"] = "", -- Continental_supplies +-- ["Sniper!"] = "", -- Space_Invasion ["Sniper Training"] = "Snaiperio Treniruotë", ["Sniperz"] = "Snaiperiai", +-- ["So humiliating..."] = "", -- A_Classic_Fairytale:first_blood +-- ["South America"] = "", -- Continental_supplies +-- ["So? What will it be?"] = "", -- A_Classic_Fairytale:shadow +-- ["Spawn the crate, and attack!"] = "", -- WxW +-- ["Special Weapons:"] = "", -- Continental_supplies +-- ["Spiky Cheese"] = "", -- A_Classic_Fairytale:enemy, A_Classic_Fairytale:epil, A_Classic_Fairytale:family, A_Classic_Fairytale:queen, A_Classic_Fairytale:shadow +-- ["Spleenlover"] = "", -- A_Classic_Fairytale:united ["Sponge"] = "Kempinë", ["Spooky Tree"] = "Baisusis Medis", ["s|"] = "s|", ["s"] = "s", -- GaudyRacer, Space_Invasion ["STATUS UPDATE"] = "Bûsenos Atnaujinimas", -- GaudyRacer, Space_Invasion +-- ["Steel Eye"] = "", -- A_Classic_Fairytale:queen +-- ["Step By Step"] = "", -- A_Classic_Fairytale:first_blood +-- ["Steve"] = "", -- A_Classic_Fairytale:dragon, A_Classic_Fairytale:family, A_Classic_Fairytale:queen +-- ["Sticky Mine"] = "", -- Continental_supplies +-- ["Stronglings"] = "", -- A_Classic_Fairytale:shadow +-- ["Structure"] = "", -- Continental_supplies +-- ["Super Weapons"] = "", -- WxW +-- ["Surf Before Crate"] = "", -- WxW +-- ["Surfer! +15 points!"] = "", -- Space_Invasion +-- ["Surfer!"] = "", -- WxW +-- ["Survive!|Hint: Cinematics can be skipped with the [Precise] key."] = "", -- A_Classic_Fairytale:shadow +-- ["Swing, Leaks A Lot, on the wings of the wind!"] = "", -- A_Classic_Fairytale:first_blood ["Switched to "] = "Pakeistas i ", +-- ["Syntax Errol"] = "", -- A_Classic_Fairytale:dragon +-- ["Talk about mixed signals..."] = "", -- A_Classic_Fairytale:dragon ["Team %d: "] = "Komanda %d: ", ["Team Scores"] = "Komandos Taðkai", -- Control, Space_Invasion +-- ["Teleport hint: just use the mouse to select the destination!"] = "", -- A_Classic_Fairytale:dragon +-- ["Thanks!"] = "", -- A_Classic_Fairytale:family +-- ["Thank you, my hero!"] = "", -- A_Classic_Fairytale:family +-- ["Thank you, oh, thank you, Leaks A Lot!"] = "", -- A_Classic_Fairytale:journey +-- ["Thank you, oh, thank you, my heroes!"] = "", -- A_Classic_Fairytale:journey +-- ["That is, indeed, very weird..."] = "", -- A_Classic_Fairytale:united +-- ["That makes it almost invaluable!"] = "", -- A_Classic_Fairytale:enemy +-- ["That ought to show them!"] = "", -- A_Classic_Fairytale:backstab +-- ["That's for my father!"] = "", -- A_Classic_Fairytale:backstab +-- ["That shaman sure knows what he's doing!"] = "", -- A_Classic_Fairytale:shadow ["That Sinking Feeling"] = "Tas Skendimo Jausmas", +-- ["That's not our problem!"] = "", -- A_Classic_Fairytale:enemy +-- ["That's typical of you!"] = "", -- A_Classic_Fairytale:family +-- ["That was just mean!"] = "", -- A_Classic_Fairytale:backstab, A_Classic_Fairytale:united ["That was pointless."] = "Tai Buvo Beprasmiðka.", +-- ["The answer is...entertaintment. You'll see what I mean."] = "", -- A_Classic_Fairytale:backstab +-- ["The anti-portal zone is all over the floor, and I have nothing to kill him...Droping something could hurt him enough to kill him..."] = "", -- portal +-- ["The Bull's Eye"] = "", -- A_Classic_Fairytale:first_blood +-- ["The caves are well hidden, they won't find us there!"] = "", -- A_Classic_Fairytale:united +-- ["The Crate Frenzy"] = "", -- A_Classic_Fairytale:first_blood +-- ["The Dilemma"] = "", -- A_Classic_Fairytale:shadow +-- ["The enemy can't move but it might be a good idea to stay out of sight!|"] = "", -- A_Classic_Fairytale:dragon ["The enemy is hiding out on yonder ducky!"] = "Prieðas pasislëpes ant kitos anties!", +-- ["The Enemy Of My Enemy"] = "", -- A_Classic_Fairytale:enemy +-- ["The First Blood"] = "", -- A_Classic_Fairytale:first_blood +-- ["The First Encounter"] = "", -- A_Classic_Fairytale:shadow ["The flag will respawn next round."] = "Vëliava atsigaus kita raunda.", +-- ["The food bites back"] = "", -- A_Classic_Fairytale:backstab +-- ["The giant umbrella from the last crate should help break the fall."] = "", -- A_Classic_Fairytale:first_blood +-- ["The Great Escape"] = "", -- User_Mission_-_The_Great_Escape +-- ["The guardian"] = "", -- A_Classic_Fairytale:shadow +-- ["The Individualist"] = "", -- A_Classic_Fairytale:shadow +-- ["Their buildings were very primitive back then, even for an uncivilised island."] = "", -- A_Classic_Fairytale:united +-- ["The Journey Back"] = "", -- A_Classic_Fairytale:journey +-- ["The Leap of Faith"] = "", -- A_Classic_Fairytale:first_blood +-- ["The Moonwalk"] = "", -- A_Classic_Fairytale:journey ["The Nameless One"] = "Bevardis", +-- ["The next one is pretty hard! |Tip: You have to do multiple swings!"] = "", -- Basic_Training_-_Rope +-- ["Then how do they keep appearing?"] = "", -- A_Classic_Fairytale:shadow +-- ["The other one were all cannibals, spending their time eating the organs of fellow hedgehogs..."] = "", -- A_Classic_Fairytale:first_blood +-- ["There must be a spy among us!"] = "", -- A_Classic_Fairytale:backstab +-- ["There's more of them? When did they become so hungry?"] = "", -- A_Classic_Fairytale:backstab, A_Classic_Fairytale:united +-- ["There's nothing more satisfying for me than seeing you share your beauty with the world every morning, my princess!"] = "", -- A_Classic_Fairytale:journey +-- ["There's nothing more satisfying to us than seeing you share your beauty..."] = "", -- A_Classic_Fairytale:journey +-- ["There's nothing more satisfying to us than seeing you share your beauty with the world every morning, my princess!"] = "", -- A_Classic_Fairytale:journey +-- ["The Rising"] = "", -- A_Classic_Fairytale:first_blood +-- ["The Savior"] = "", -- A_Classic_Fairytale:journey +-- ["These primitive people are so funny!"] = "", -- A_Classic_Fairytale:backstab +-- ["The Shadow Falls"] = "", -- A_Classic_Fairytale:shadow +-- ["The Showdown"] = "", -- A_Classic_Fairytale:shadow +-- ["The Slaughter"] = "", -- A_Classic_Fairytale:dragon, A_Classic_Fairytale:first_blood ["THE SPECIALISTS"] = "Specialistai", +-- ["The spirits of the ancerstors are surely pleased, Leaks A Lot."] = "", -- A_Classic_Fairytale:first_blood +-- ["The Torment"] = "", -- A_Classic_Fairytale:first_blood +-- ["The Tunnel Maker"] = "", -- A_Classic_Fairytale:journey +-- ["The Ultimate Weapon"] = "", -- A_Classic_Fairytale:first_blood +-- ["The Union"] = "", -- A_Classic_Fairytale:enemy +-- ["The village, unprepared, was destroyed by the cyborgs..."] = "", -- A_Classic_Fairytale:journey +-- ["The walk of Fame"] = "", -- A_Classic_Fairytale:shadow +-- ["The wasted youth"] = "", -- A_Classic_Fairytale:first_blood +-- ["The weapon in that last crate was bestowed upon us by the ancients!"] = "", -- A_Classic_Fairytale:first_blood +-- ["The what?!"] = "", -- A_Classic_Fairytale:dragon +-- ["The wind whispers that you are ready to become familiar with tools, now..."] = "", -- A_Classic_Fairytale:first_blood +-- ["They are all waiting back in the village, haha."] = "", -- A_Classic_Fairytale:enemy +-- ["They Call Me Bullseye!"] = "", -- Space_Invasion +-- ["They have weapons we've never seen before!"] = "", -- A_Classic_Fairytale:united +-- ["They keep appearing like this. It's weird!"] = "", -- A_Classic_Fairytale:united +-- ["They killed "] = "", -- A_Classic_Fairytale:backstab, A_Classic_Fairytale:united +-- ["They must be trying to weaken us!"] = "", -- A_Classic_Fairytale:enemy +-- ["They never learn"] = "", -- A_Classic_Fairytale:journey +-- ["They told us to wear these clothes. They said that this is the newest trend."] = "", -- A_Classic_Fairytale:enemy +-- ["They've been manipulating us all this time!"] = "", -- A_Classic_Fairytale:enemy +-- ["Thighlicker"] = "", -- A_Classic_Fairytale:united +-- ["This is it! It's time to make Fell From Heaven fall for me..."] = "", -- A_Classic_Fairytale:first_blood +-- ["This island is the only place left on Earth with grass on it!"] = "", -- A_Classic_Fairytale:enemy +-- ["This is typical!"] = "", -- A_Classic_Fairytale:dragon +-- ["This must be some kind of sorcery!"] = "", -- A_Classic_Fairytale:shadow +-- ["This must be the caves!"] = "", -- A_Classic_Fairytale:backstab -- ["This one's tricky."] = "", ["This rain is really something..."] = "Ãis lietus tikrai kaþkas...", +-- ["This will be fun!"] = "", -- A_Classic_Fairytale:enemy +-- ["Those aliens are destroying the island!"] = "", -- A_Classic_Fairytale:family ["Timed Kamikaze!"] = "Laikina Kamikaze!", ["Time Extended!"] = "Laikas Prailgintas!", -- ["Time Extension"] = "", ["TIME: "] = "Laikas: ", +-- ["Tip: The rope physics are different than in the real world, |use it to your advantage!"] = "", -- Basic_Training_-_Rope ["Toggle Shield"] = "Perjungti i skyda", +-- ["To help you, of course!"] = "", -- A_Classic_Fairytale:journey +-- ["To place a girder, select it, use [Left] and [Right] to select angle and length, place with [Left Click]"] = "", -- A_Classic_Fairytale:shadow +-- ["Torn Muscle"] = "", -- A_Classic_Fairytale:journey +-- [" to save the village."] = "", -- A_Classic_Fairytale:dragon +-- ["To the caves..."] = "", -- A_Classic_Fairytale:united ["Toxic Team"] = "Toksinë Komanda", -- User_Mission_-_Diver, User_Mission_-_Spooky_Tree, User_Mission_-_Teamwork ["TRACK COMPLETED"] = "Trasa Ivykdita", -- ["TRACK FAILED!"] = "", +-- ["training"] = "", -- portal +-- ["Traitors"] = "", -- A_Classic_Fairytale:epil +-- ["Tribe"] = "", -- A_Classic_Fairytale:backstab ["TrophyRace"] = "Trophëju Trasa", +-- ["Try to protect the chief! You won't lose if he dies, but it is advised that he survives."] = "", -- A_Classic_Fairytale:united ["T_T"] = "T_T", -- ["Tumbling Time Extended!"] = "", +-- ["Turns until Sudden Death: "] = "", -- A_Classic_Fairytale:dragon +-- [" turns until Sudden Death! Better hurry!"] = "", -- A_Classic_Fairytale:dragon ["Turn Time"] = "Eilës Laikas", +-- ["Two little hogs cooperating, getting past obstacles..."] = "", -- A_Classic_Fairytale:journey +-- ["Uhm...I met one of them and took his weapons."] = "", -- A_Classic_Fairytale:shadow +-- ["Uhmm...ok no."] = "", -- A_Classic_Fairytale:enemy +-- ["ULTRA KILL"] = "", -- Mutant +-- ["Under Construction"] = "", -- A_Classic_Fairytale:shadow +-- ["Unexpected Igor"] = "", -- A_Classic_Fairytale:dragon -- ["Unit"] = "", +-- ["Unit 0x0007"] = "", -- A_Classic_Fairytale:family +-- ["Unit 334a$7%;.*"] = "", -- A_Classic_Fairytale:backstab, A_Classic_Fairytale:dragon, A_Classic_Fairytale:enemy, A_Classic_Fairytale:family, A_Classic_Fairytale:queen, A_Classic_Fairytale:united ["Unit 3378"] = "Tipas 3378", -- ["Unit 835"] = "", +-- ["United We Stand"] = "", -- A_Classic_Fairytale:united ["Unlimited Attacks"] = "Nesibaigianèios Atakos", +-- ["Unlucky Sods"] = "", -- User_Mission_-_Rope_Knock_Challenge -- ["Unstoppable!"] = "", +-- ["Unsuspecting Louts"] = "", -- User_Mission_-_Rope_Knock_Challenge +-- ["[Up], [Down] to aim, [Space] to shoot!"] = "", -- A_Classic_Fairytale:first_blood +-- ["Use it wisely!"] = "", -- A_Classic_Fairytale:dragon +-- ["Use it with precaution!"] = "", -- A_Classic_Fairytale:first_blood ["User Challenge"] = "Vartotojo Iðukis", +-- ["Use the parachute ([Space] while in air)"] = "", -- +-- ["Use the portal gun to get to the next crate, then use the new gun to get to the final destination!|"] = "", -- A_Classic_Fairytale:dragon +-- ["Use the rope to get on the head of the mole, young one!"] = "", -- A_Classic_Fairytale:first_blood +-- ["Use the rope to knock your enemies to their doom."] = "", -- User_Mission_-_Rope_Knock_Challenge ["Use your rope to get from start to finish as fast as you can!"] = "Naudok virve kad nusigautum nuo starto iki finiðo taip greitai kaip gali!", +-- ["Vedgies"] = "", -- A_Classic_Fairytale:journey +-- ["Vegan Jack"] = "", -- A_Classic_Fairytale:enemy +-- ["Victory!"] = "", -- Basic_Training_-_Rope ["Victory for the "] = "Pergalë ", -- CTF_Blizzard, Capture_the_Flag +-- ["Violence is not the answer to your problems!"] = "", -- A_Classic_Fairytale:first_blood +-- ["Walls Left"] = "", -- WxW +-- ["Walls Required"] = "", -- WxW +-- ["WALL TO WALL"] = "", -- WxW +-- ["Wannabe Flyboys"] = "", -- User_Mission_-_RCPlane_Challenge +-- ["Wannabe Shoppsta"] = "", -- User_Mission_-_Rope_Knock_Challenge +-- ["Watch your steps, young one!"] = "", -- A_Classic_Fairytale:first_blood ["Waypoint placed."] = "Kelio Taðkas Pasiektas.", -- ["Way-Points Remaining"] = "", +-- ["Weaklings"] = "", -- A_Classic_Fairytale:shadow +-- ["We all know what happens when you get frightened..."] = "", -- A_Classic_Fairytale:first_blood ["Weapons Reset"] = "Ginklai Atgaivinti", +-- ["Weapons reset."] = "", -- Highlander +-- ["We are indeed."] = "", -- A_Classic_Fairytale:backstab +-- ["We can't defeat them!"] = "", -- A_Classic_Fairytale:shadow +-- ["We can't hold them up much longer!"] = "", -- A_Classic_Fairytale:united +-- ["We can't let them take over our little island!"] = "", -- A_Classic_Fairytale:enemy +-- ["We have no time to waste..."] = "", -- A_Classic_Fairytale:journey +-- ["We have nowhere else to live!"] = "", -- A_Classic_Fairytale:enemy +-- ["We have to protect the village!"] = "", -- A_Classic_Fairytale:united +-- ["We have to unite and defeat those cylergs!"] = "", -- A_Classic_Fairytale:enemy +-- ["Welcome, Leaks A Lot!"] = "", -- A_Classic_Fairytale:journey -- ["Well done."] = "", +-- ["We'll give you a problem then!"] = "", -- A_Classic_Fairytale:enemy +-- ["We'll spare your life for now!"] = "", -- A_Classic_Fairytale:backstab +-- ["Well, that was a waste of time."] = "", -- A_Classic_Fairytale:dragon +-- ["Well, well! Isn't that the cutest thing you've ever seen?"] = "", -- A_Classic_Fairytale:journey +-- ["Well, yes. This was a cyborg television show."] = "", -- A_Classic_Fairytale:enemy +-- ["We made sure noone followed us!"] = "", -- A_Classic_Fairytale:backstab +-- ["We need to move!"] = "", -- A_Classic_Fairytale:united +-- ["We need to prevent their arrival!"] = "", -- A_Classic_Fairytale:backstab +-- ["We need to warn the village."] = "", -- A_Classic_Fairytale:shadow +-- ["We should head back to the village now."] = "", -- A_Classic_Fairytale:shadow +-- ["We were trying to save her and we got lost."] = "", -- A_Classic_Fairytale:family +-- ["We won't let you hurt her!"] = "", -- A_Classic_Fairytale:journey +-- ["What?! A cannibal? Here? There is no time to waste! Come, you are prepared."] = "", -- A_Classic_Fairytale:first_blood +-- ["What a douche!"] = "", -- A_Classic_Fairytale:enemy +-- ["What am I gonna...eat, yo?"] = "", -- A_Classic_Fairytale:family +-- ["What are you doing at a distance so great, young one?"] = "", -- A_Classic_Fairytale:first_blood +-- ["What are you doing? Let her go!"] = "", -- A_Classic_Fairytale:journey +-- ["What a ride!"] = "", -- A_Classic_Fairytale:shadow +-- ["What a strange cave!"] = "", -- A_Classic_Fairytale:dragon +-- ["What a strange feeling!"] = "", -- A_Classic_Fairytale:backstab +-- ["What do my faulty eyes observe? A spy!"] = "", -- A_Classic_Fairytale:first_blood +-- ["Whatever floats your boat..."] = "", -- A_Classic_Fairytale:shadow +-- [" What !! For all of this struggle i just win some ... TIME o0"] = "", -- portal +-- ["What has "] = "", -- A_Classic_Fairytale:backstab +-- ["What? Here? How did they find us?!"] = "", -- A_Classic_Fairytale:backstab +-- ["What is this place?"] = "", -- A_Classic_Fairytale:dragon, A_Classic_Fairytale:enemy +-- ["What shall we do with the traitor?"] = "", -- A_Classic_Fairytale:backstab +-- ["WHAT?! You're the ones attacking us!"] = "", -- A_Classic_Fairytale:enemy +-- ["When?"] = "", -- A_Classic_Fairytale:enemy +-- ["When I find it..."] = "", -- A_Classic_Fairytale:dragon +-- ["Where are all these crates coming from?!"] = "", -- A_Classic_Fairytale:shadow +-- ["Where are they?!"] = "", -- A_Classic_Fairytale:backstab +-- ["Where did that alien run?"] = "", -- A_Classic_Fairytale:dragon +-- ["Where did you get the exploding apples?"] = "", -- A_Classic_Fairytale:shadow +-- ["Where did you get the exploding apples and the magic bow that shoots many arrows?"] = "", -- A_Classic_Fairytale:shadow +-- ["Where did you get the magic bow that shoots many arrows?"] = "", -- A_Classic_Fairytale:shadow +-- ["Where did you get the weapons in the forest, Dense Cloud?"] = "", -- A_Classic_Fairytale:backstab +-- ["Where do you get that?!"] = "", -- A_Classic_Fairytale:enemy +-- ["Where have you been?!"] = "", -- A_Classic_Fairytale:backstab +-- ["Where have you been?"] = "", -- A_Classic_Fairytale:united +-- ["? Why?"] = "", -- A_Classic_Fairytale:backstab +-- ["Why "] = "", -- A_Classic_Fairytale:backstab +-- ["! Why?!"] = "", -- A_Classic_Fairytale:backstab, A_Classic_Fairytale:united +-- ["Why are you doing this?"] = "", -- A_Classic_Fairytale:journey +-- ["Why are you helping us, uhm...?"] = "", -- A_Classic_Fairytale:family +-- ["Why can't he just let her go?!"] = "", -- A_Classic_Fairytale:family +-- ["Why do men keep hurting me?"] = "", -- A_Classic_Fairytale:first_blood +-- ["Why do you not like me?"] = "", -- A_Classic_Fairytale:shadow +-- ["Why do you want to take over our island?"] = "", -- A_Classic_Fairytale:enemy +-- ["Why me?!"] = "", -- A_Classic_Fairytale:backstab +-- ["Why would they do this?"] = "", -- A_Classic_Fairytale:backstab +-- ["- Will Get 1-3 random weapons"] = "", -- Continental_supplies +-- ["- Will refresh Parachute each turn."] = "", -- Continental_supplies +-- ["- Will refresh portalgun each turn."] = "", -- Continental_supplies -- ["Will this ever end?"] = "", +-- ["WINNER IS "] = "", -- Mutant ["WINNING TIME: "] = "Laimëjimo Laikas: ", +-- ["Wise Oak"] = "", -- A_Classic_Fairytale:backstab, A_Classic_Fairytale:dragon, A_Classic_Fairytale:enemy, A_Classic_Fairytale:epil, A_Classic_Fairytale:family, A_Classic_Fairytale:queen +-- ["With Dense Cloud on the land of shadows, I'm the village's only hope..."] = "", -- A_Classic_Fairytale:journey +-- ["With the rest of the tribe gone, it was up to "] = "", -- A_Classic_Fairytale:dragon +-- ["Worry not, for it is a peaceful animal! There is no reason to be afraid..."] = "", -- A_Classic_Fairytale:first_blood +-- ["Wow, what a dream!"] = "", -- A_Classic_Fairytale:backstab +-- ["Y3K1337"] = "", -- A_Classic_Fairytale:journey, A_Classic_Fairytale:shadow +-- ["Yay, we won!"] = "", -- A_Classic_Fairytale:enemy +-- ["Y Chwiliad"] = "", -- A_Classic_Fairytale:dragon +-- ["Yeah...I think it's a 'he', lol."] = "", -- A_Classic_Fairytale:shadow +-- ["Yeah, sure! I died. Hillarious!"] = "", -- A_Classic_Fairytale:backstab +-- ["Yeah, take that!"] = "", -- A_Classic_Fairytale:dragon +-- ["Yeah? Watcha gonna do? Cry?"] = "", -- A_Classic_Fairytale:journey +-- ["Yes!"] = "", -- A_Classic_Fairytale:enemy +-- ["Yes, yeees! You are now ready to enter the real world!"] = "", -- A_Classic_Fairytale:first_blood +-- ["Yo, dude, we're here, too!"] = "", -- A_Classic_Fairytale:family +-- ["You are given the chance to turn your life around..."] = "", -- A_Classic_Fairytale:shadow +-- ["You are playing with our lives here!"] = "", -- A_Classic_Fairytale:enemy +-- ["! You bastards!"] = "", -- A_Classic_Fairytale:backstab, A_Classic_Fairytale:united +-- ["You bear impressive skills, "] = "", -- A_Classic_Fairytale:dragon +-- ["You can't fire a portal on the blue surface"] = "", -- portal +-- ["You couldn't possibly believe that after refusing my offer I'd just let you go!"] = "", -- A_Classic_Fairytale:journey ["You'd almost swear the water was rising!"] = "Galima pamanyti kad vanduo tikrai kyla!", +-- ["You'd better watch your steps..."] = "", -- A_Classic_Fairytale:journey +-- ["You did not make it in time, try again!"] = "", -- Basic_Training_-_Rope +-- ["You have 7 turns until the next wave arrives.|Make sure the arriving cannibals are greeted appropriately!|If the hog dies, the cause is lost.|Hint: you might want to use some mines..."] = "", -- A_Classic_Fairytale:backstab +-- ["You have "] = "", -- A_Classic_Fairytale:dragon +-- ["You have been giving us out to the enemy, haven't you!"] = "", -- A_Classic_Fairytale:backstab +-- ["You have been respawned, at your last checkpoint!"] = "", -- Basic_Training_-_Rope +-- ["You have been respawned, be more carefull next time!"] = "", -- Basic_Training_-_Rope +-- ["You have chosen the perfect moment to leave."] = "", -- A_Classic_Fairytale:united +-- ["You have failed to complete your task, young one!"] = "", -- A_Classic_Fairytale:journey +-- ["You have failed to save the tribe!"] = "", -- A_Classic_Fairytale:backstab +-- ["You have finally figured it out!"] = "", -- A_Classic_Fairytale:enemy +-- ["You have kidnapped our whole tribe!"] = "", -- A_Classic_Fairytale:enemy +-- ["You have killed an innocent hedgehog!"] = "", -- A_Classic_Fairytale:backstab +-- ["You have proven yourself worthy to see our most ancient secret!"] = "", -- A_Classic_Fairytale:first_blood +-- ["You have proven yourselves worthy!"] = "", -- A_Classic_Fairytale:enemy ["You have SCORED!!"] = "Tu gavai TAÃKU!!", +-- ["You have to destroy 12 targets in 180 seconds"] = "", -- Basic_Training_-_Cluster_Bomb +-- ["You have won the game by proving true cooperative skills!"] = "", -- A_Classic_Fairytale:enemy +-- ["You just appeared out of thin air!"] = "", -- A_Classic_Fairytale:backstab +-- ["You just committed suicide..."] = "", -- A_Classic_Fairytale:shadow +-- ["You killed my father, you monster!"] = "", -- A_Classic_Fairytale:backstab +-- ["You know...taking a stroll."] = "", -- A_Classic_Fairytale:backstab +-- ["You know what? I don't even regret anything!"] = "", -- A_Classic_Fairytale:backstab +-- ["You'll see what I mean!"] = "", -- A_Classic_Fairytale:enemy +-- ["You may only attack from a rope!"] = "", -- WxW +-- ["You meatbags are pretty slow, you know!"] = "", -- A_Classic_Fairytale:enemy +-- ["You might want to find a way to instantly kill arriving cannibals!"] = "", -- A_Classic_Fairytale:backstab +-- ["Young one, you are telling us that they can instantly change location without a shaman?"] = "", -- A_Classic_Fairytale:united +-- ["You probably know what to do next..."] = "", -- A_Classic_Fairytale:first_blood +-- ["Your deaths will be avenged, cannibals!"] = "", -- A_Classic_Fairytale:enemy +-- ["Your death will not be in vain, Dense Cloud!"] = "", -- A_Classic_Fairytale:shadow +-- ["You're...alive!? But we saw you die!"] = "", -- A_Classic_Fairytale:backstab +-- ["You're a pathetic liar!"] = "", -- A_Classic_Fairytale:backstab +-- ["You're funny!"] = "", -- A_Classic_Fairytale:journey +-- ["You're getting pretty good! |Tip: When you shorten you rope you move faster! |and when you lengthen it you move slower"] = "", -- Basic_Training_-_Rope +-- ["You're pathetic! You are not worthy of my attention..."] = "", -- A_Classic_Fairytale:shadow +-- ["You're probably wondering why I bought you back..."] = "", -- A_Classic_Fairytale:backstab +-- ["You're terrorizing the forest...We won't catch anything like this!"] = "", -- A_Classic_Fairytale:shadow +-- ["Your hogs must survive!"] = "", -- A_Classic_Fairytale:journey +-- ["Your movement skills will be evaluated now."] = "", -- A_Classic_Fairytale:first_blood ["You saved"] = "Tu uþsisavinai", +-- ["You've been assaulting us, we have been just defending ourselves!"] = "", -- A_Classic_Fairytale:enemy ["You've failed. Try again."] = "Tau nepavyko. Bandyk vël.", ["You've reached the goal!| |Time: "] = "Tu pasiekiai taikini!| |Laikas: ", +-- ["You will be avenged!"] = "", -- A_Classic_Fairytale:shadow +-- ["You won't believe what happened to me!"] = "", -- A_Classic_Fairytale:backstab +-- ["Yuck! I bet they'll keep worshipping her even after I save the village!"] = "", -- A_Classic_Fairytale:family +-- ["Zealandia"] = "", -- Continental_supplies ["'Zooka Team"] = "'Zukos Komanda", +-- ["Zork"] = "", -- A_Classic_Fairytale:dragon, A_Classic_Fairytale:family, A_Classic_Fairytale:queen } diff -r 3331b30e4ef1 -r 88fde28bbda6 share/hedgewars/Data/Locale/missions_da.txt diff -r 3331b30e4ef1 -r 88fde28bbda6 share/hedgewars/Data/Locale/missions_en.txt --- a/share/hedgewars/Data/Locale/missions_en.txt Sun Oct 21 01:28:33 2012 +0400 +++ b/share/hedgewars/Data/Locale/missions_en.txt Sat Nov 03 00:34:35 2012 +0400 @@ -44,4 +44,7 @@ User_Mission_-_Rope_Knock_Challenge.desc="Look behind you!" User_Mission_-_RCPlane_Challenge.name=Challenge: RC Plane -User_Mission_-_RCPlane_Challenge.desc="Feeling pretty confident, eh, flyboy?" \ No newline at end of file +User_Mission_-_RCPlane_Challenge.desc="Feeling pretty confident, eh, flyboy?" + +portal.name= Mission: Portal training mission +portal.desc="Use the portal to move fast and far, use it to kill, use it with caution!" diff -r 3331b30e4ef1 -r 88fde28bbda6 share/hedgewars/Data/Locale/pl.lua --- a/share/hedgewars/Data/Locale/pl.lua Sun Oct 21 01:28:33 2012 +0400 +++ b/share/hedgewars/Data/Locale/pl.lua Sat Nov 03 00:34:35 2012 +0400 @@ -2,156 +2,640 @@ [":("] = ":(", ["!!!"] = "!!!", ["..."] = "...", +-- ["011101000"] = "", -- A_Classic_Fairytale:dragon +-- ["011101001"] = "", -- A_Classic_Fairytale:backstab, A_Classic_Fairytale:dragon, A_Classic_Fairytale:enemy, A_Classic_Fairytale:family, A_Classic_Fairytale:journey, A_Classic_Fairytale:queen, A_Classic_Fairytale:shadow, A_Classic_Fairytale:united +-- ["30 minutes later..."] = "", -- A_Classic_Fairytale:shadow +-- ["About a month ago, a cyborg came and told us that you're the cannibals!"] = "", -- A_Classic_Fairytale:enemy ["Accuracy Bonus!"] = "Bonus za celność", +-- ["Ace"] = "", -- User_Mission_-_RCPlane_Challenge, User_Mission_-_Rope_Knock_Challenge ["Achievement Unlocked"] = "ZdobyÅ‚eÅ› OsiÄ…gniÄ™cie!", -- User_Mission_-_Bamboo_Thicket, User_Mission_-_That_Sinking_Feeling, Tumbler +-- ["A Classic Fairytale"] = "", -- A_Classic_Fairytale:first_blood +-- ["???"] = "", -- A_Classic_Fairytale:backstab +-- ["Actually, you aren't worthy of life! Take this..."] = "", -- A_Classic_Fairytale:shadow +-- ["A cy-what?"] = "", -- A_Classic_Fairytale:enemy +-- ["Adventurous"] = "", -- A_Classic_Fairytale:journey +-- ["Africa"] = "", -- Continental_supplies +-- ["After Leaks A Lot betrayed his tribe, he joined the cannibals..."] = "", -- A_Classic_Fairytale:first_blood +-- ["After the shock caused by the enemy spy, Leaks A Lot and Dense Cloud went hunting to relax."] = "", -- A_Classic_Fairytale:shadow +-- ["Again with the 'cannibals' thing!"] = "", -- A_Classic_Fairytale:enemy +-- ["a Hedgewars challenge"] = "", -- User_Mission_-_RCPlane_Challenge, User_Mission_-_Rope_Knock_Challenge ["a Hedgewars mini-game"] = "Mini gra", -- Space_Invasion, The_Specialists ["Aiming Practice"] = "Potrenuj celność", +-- ["A leap in a leap"] = "", -- A_Classic_Fairytale:first_blood +-- ["A little gift from the cyborgs"] = "", -- A_Classic_Fairytale:shadow +-- ["All gone...everything!"] = "", -- A_Classic_Fairytale:enemy +-- ["All right, we just need to get to the other side of the island!"] = "", -- A_Classic_Fairytale:journey +-- ["All walls touched!"] = "", -- WxW ["Ammo"] = "Amunicja", ["Ammo Depleted!"] = "Koniec amunicji!", -- ["ammo extended!"] = "", ["Ammo is reset at the end of your turn."] = "Amunicja jest resetowana przy koÅ„cu tury.", ["Ammo Maniac!"] = "Nabojowy Maniak!", +-- ["And how am I alive?!"] = "", -- A_Classic_Fairytale:enemy +-- ["And so happenned that Leaks A Lot failed to complete the challenge! He landed, pressured by shame..."] = "", -- A_Classic_Fairytale:first_blood +-- ["And so it began..."] = "", -- A_Classic_Fairytale:first_blood +-- ["...and so the cyborgs took over the world..."] = "", -- A_Classic_Fairytale:shadow +-- ["And so they discovered that cyborgs weren't invulnerable..."] = "", -- A_Classic_Fairytale:journey +-- ["And where's all the weed?"] = "", -- A_Classic_Fairytale:dragon +-- ["And you believed me? Oh, god, that's cute!"] = "", -- A_Classic_Fairytale:journey +-- ["Anno 1032: [The explosion will make a strong push ~ wide range, wont affect hogs close to the target]"] = "", -- Continental_supplies +-- ["Antarctica"] = "", -- Continental_supplies +-- ["Are we there yet?"] = "", -- A_Classic_Fairytale:shadow +-- ["Are you accusing me of something?"] = "", -- A_Classic_Fairytale:backstab +-- ["Are you saying that many of us have died for your entertainment?"] = "", -- A_Classic_Fairytale:enemy +-- ["Artur Detour"] = "", -- A_Classic_Fairytale:queen +-- ["As a reward for your performance, here's some new technology!"] = "", -- A_Classic_Fairytale:dragon +-- ["a shoppa minigame"] = "", -- WxW +-- ["Asia"] = "", -- Continental_supplies +-- ["Assault Team"] = "", -- A_Classic_Fairytale:backstab +-- ["As the ammo is sparse, you might want to reuse ropes while mid-air.|"] = "", -- A_Classic_Fairytale:dragon +-- ["As the challenge was completed, Leaks A Lot set foot on the ground..."] = "", -- A_Classic_Fairytale:first_blood +-- ["As you can see, there is no way to get on the other side!"] = "", -- A_Classic_Fairytale:dragon +-- ["Attack From Rope"] = "", -- WxW +-- ["Australia"] = "", -- Continental_supplies ["Available points remaining: "] = "PozostaÅ‚y nastÄ™pujÄ…ce punkty: ", +-- ["Back Breaker"] = "", -- A_Classic_Fairytale:backstab +-- ["Back in the village, after telling the villagers about the threat..."] = "", -- A_Classic_Fairytale:united -- ["[Backspace]"] = "", +-- ["Backstab"] = "", -- A_Classic_Fairytale:backstab +-- ["Bad Team"] = "", -- User_Mission_-_The_Great_Escape -- ["Bamboo Thicket"] = "", ["Barrel Eater!"] = "Pożeracz Beczek!", ["Barrel Launcher"] = "Wyrzutnia Beczek", +-- ["Baseballbat"] = "", -- Continental_supplies ["Bat balls at your enemies and|push them into the sea!"] = "Uderzaj piÅ‚kami w swoich przeciwników|i strÄ…caj ich do wody!", ["Bat your opponents through the|baskets and out of the map!"] = "Uderzaj swoich przeciwników|wyrzucajÄ…c przez kosz, poza mapÄ™!", ["Bazooka Training"] = "Trening bazooki", +-- ["Beep Loopers"] = "", -- A_Classic_Fairytale:queen ["Best laps per team: "] = "Najszybsze okrążenie drużyny: ", ["Best Team Times: "] = "Najlepszy czas zespołów", +-- ["Beware, though! If you are slow, you die!"] = "", -- A_Classic_Fairytale:dragon +-- ["Biomechanic Team"] = "", -- A_Classic_Fairytale:family +-- ["Blender"] = "", -- A_Classic_Fairytale:family +-- ["Bloodpie"] = "", -- A_Classic_Fairytale:backstab +-- ["Bloodrocutor"] = "", -- A_Classic_Fairytale:shadow +-- ["Bloodsucker"] = "", -- A_Classic_Fairytale:shadow ["Bloody Rookies"] = "Żółtodzioby", +-- ["Bone Jackson"] = "", -- A_Classic_Fairytale:backstab +-- ["Bonely"] = "", -- A_Classic_Fairytale:shadow ["Boom!"] = "BUM!", ["BOOM!"] = "BUM!", ["Boss defeated!"] = "Boss pokonany!", ["Boss Slayer!"] = "Pogromca bossów", +-- ["Brain Blower"] = "", -- A_Classic_Fairytale:journey +-- ["Brainiac"] = "", -- A_Classic_Fairytale:epil, A_Classic_Fairytale:first_blood, A_Classic_Fairytale:shadow +-- ["Brainila"] = "", -- A_Classic_Fairytale:united +-- ["Brain Stu"] = "", -- A_Classic_Fairytale:united +-- ["Brain Teaser"] = "", -- A_Classic_Fairytale:backstab +-- ["Brutal Lily"] = "", -- A_Classic_Fairytale:enemy, A_Classic_Fairytale:epil +-- ["Brutus"] = "", -- A_Classic_Fairytale:backstab ["Build a track and race."] = "Zbuduj trasÄ™ i Å›cigaj siÄ™.", +-- ["Bullseye"] = "", -- A_Classic_Fairytale:dragon +-- ["But it proved to be no easy task!"] = "", -- A_Classic_Fairytale:dragon +-- ["But that's impossible!"] = "", -- A_Classic_Fairytale:backstab +-- ["But the ones alive are stronger in their heart!"] = "", -- A_Classic_Fairytale:enemy +-- ["But...we died!"] = "", -- A_Classic_Fairytale:backstab +-- ["But where can we go?"] = "", -- A_Classic_Fairytale:united +-- ["But why would they help us?"] = "", -- A_Classic_Fairytale:backstab +-- ["But you're cannibals. It's what you do."] = "", -- A_Classic_Fairytale:enemy +-- ["But you said you'd let her go!"] = "", -- A_Classic_Fairytale:journey +-- ["Call me Beep! Well, 'cause I'm such a nice...person!"] = "", -- A_Classic_Fairytale:family +-- ["Cannibals"] = "", -- A_Classic_Fairytale:enemy, A_Classic_Fairytale:epil, A_Classic_Fairytale:first_blood +-- ["Cannibal Sentry"] = "", -- A_Classic_Fairytale:journey +-- ["Cannibals?! You're the cannibals!"] = "", -- A_Classic_Fairytale:enemy ["CAPTURE THE FLAG"] = "PRZECHWYĆ FLAGĘ", ["Careless"] = "Nieostrożny", +-- ["Carol"] = "", -- A_Classic_Fairytale:family +-- ["CHALLENGE COMPLETE"] = "", -- User_Mission_-_RCPlane_Challenge ["Change Weapon"] = "ZmieÅ„ broÅ„", +-- ["Choose your side! If you want to join the strange man, walk up to him.|Otherwise, walk away from him. If you decide to att...nevermind..."] = "", -- A_Classic_Fairytale:shadow ["Clumsy"] = "FajtÅ‚apa", +-- ["Cluster Bomb MASTER!"] = "", -- Basic_Training_-_Cluster_Bomb +-- ["Cluster Bomb Training"] = "", -- Basic_Training_-_Cluster_Bomb ["Codename: Teamwork"] = "Kryptonim: Praca zespoÅ‚owa", +-- ["Collateral Damage"] = "", -- A_Classic_Fairytale:journey +-- ["Collateral Damage II"] = "", -- A_Classic_Fairytale:journey +-- ["Collect all the crates, but remember, our time in this life is limited!"] = "", -- A_Classic_Fairytale:first_blood +-- ["Collect or destroy all the health crates."] = "", -- User_Mission_-_RCPlane_Challenge +-- ["Collect the crate on the right.|Hint: Select the rope, [Up] or [Down] to aim, [Space] to fire, directional keys to move.|Ropes can be fired again in the air!"] = "", -- A_Classic_Fairytale:first_blood +-- ["Collect the crates within the time limit!|If you fail, you'll have to try again."] = "", -- A_Classic_Fairytale:first_blood +-- ["Come closer, so that your training may continue!"] = "", -- A_Classic_Fairytale:first_blood +-- ["Compete to use as few planes as possible!"] = "", -- User_Mission_-_RCPlane_Challenge ["Complete the track as fast as you can!"] = "UkoÅ„cz trasÄ™ tak szybko jak tylko potrafisz!", +-- ["COMPLETION TIME"] = "", -- User_Mission_-_Rope_Knock_Challenge +-- ["Configuration accepted."] = "", -- WxW +-- ["Congratulations"] = "", -- Basic_Training_-_Rope ["Congratulations!"] = "Gratulacje", +-- ["Congratulations! You needed only half of time|to eliminate all targets."] = "", -- Basic_Training_-_Cluster_Bomb +-- ["Congratulations! You've completed the Rope tutorial! |- Tutorial ends in 10 seconds!"] = "", -- Basic_Training_-_Rope ["Congratulations! You've eliminated all targets|within the allowed time frame."] = "Gratulacje! ZniszczyÅ‚eÅ› wszystkie cele przed upÅ‚yniÄ™ciem czasu.", +-- ["Continental supplies"] = "", -- Continental_supplies ["Control pillars to score points."] = "Kontroluj filary by zdobyć punkty", +-- ["Corporationals"] = "", -- A_Classic_Fairytale:queen +-- ["Corpsemonger"] = "", -- A_Classic_Fairytale:shadow +-- ["Corpse Thrower"] = "", -- A_Classic_Fairytale:epil +-- ["Crates Left:"] = "", -- User_Mission_-_RCPlane_Challenge ["Cybernetic Empire"] = "Cybernetyczne Imperium", +-- ["Cyborg. It's what the aliens call themselves."] = "", -- A_Classic_Fairytale:enemy +-- ["Dahmer"] = "", -- A_Classic_Fairytale:backstab ["DAMMIT, ROOKIE! GET OFF MY HEAD!"] = "MÅ‚ody!!! ZÅ‚aź z mojej gÅ‚owy!!!", ["DAMMIT, ROOKIE!"] = "Żółtodziobie!", ["Dangerous Ducklings"] = "Niebezpieczne Kaczory", -- ["Deadweight"] = "", +-- ["Defeat the cannibals"] = "", -- A_Classic_Fairytale:backstab +-- ["Defeat the cannibals!|"] = "", -- A_Classic_Fairytale:united +-- ["Defeat the cannibals!|Grenade hint: set the timer with [1-5], aim with [Up]/[Down] and hold [Space] to set power"] = "", -- A_Classic_Fairytale:shadow +-- ["Defeat the cyborgs!"] = "", -- A_Classic_Fairytale:enemy +-- ["Defend yourself!|Hint: You can get tips on using weapons by moving your mouse over them in the weapon selection menu"] = "", -- A_Classic_Fairytale:shadow ["Demolition is fun!"] = "RozwaÅ‚ka jest fajna!", +-- ["Dense Cloud"] = "", -- A_Classic_Fairytale:backstab, A_Classic_Fairytale:dragon, A_Classic_Fairytale:enemy, A_Classic_Fairytale:epil, A_Classic_Fairytale:family, A_Classic_Fairytale:journey, A_Classic_Fairytale:queen, A_Classic_Fairytale:shadow, A_Classic_Fairytale:united +-- ["Dense Cloud must have already told them everything..."] = "", -- A_Classic_Fairytale:shadow -- ["Depleted Kamikaze!"] = "", +-- ["Destroy him, Leaks A Lot! He is responsible for the deaths of many of us!"] = "", -- A_Classic_Fairytale:first_blood ["Destroy invaders to score points."] = "Zabijaj najeźdźców by zdobyć punkty.", +-- ["Destroy the targets!|Hint: Select the Shoryuken and hit [Space]|P.S. You can use it mid-air."] = "", -- A_Classic_Fairytale:first_blood +-- ["Destroy the targets!|Hint: [Up], [Down] to aim, [Space] to shoot"] = "", -- A_Classic_Fairytale:first_blood +-- ["Did anyone follow you?"] = "", -- A_Classic_Fairytale:united +-- ["Did you see him coming?"] = "", -- A_Classic_Fairytale:shadow +-- ["Did you warn the village?"] = "", -- A_Classic_Fairytale:shadow +-- ["Die, die, die!"] = "", -- A_Classic_Fairytale:dragon +-- ["Disguise as a Rockhopper Penguin: [Swap place with a random enemy hog in the circle]"] = "", -- Continental_supplies +-- ["Dist: "] = "", -- Space_Invasion +-- ["Do not laugh, inexperienced one, for he speaks the truth!"] = "", -- A_Classic_Fairytale:backstab +-- ["Do not let his words fool you, young one! He will stab you in the back as soon as you turn away!"] = "", -- A_Classic_Fairytale:first_blood +-- ["Do the deed"] = "", -- A_Classic_Fairytale:first_blood +-- ["DOUBLE KILL"] = "", -- Mutant ["Double Kill!"] = "Podwójna Å›mierć!", +-- ["Do you have any idea how valuable grass is?"] = "", -- A_Classic_Fairytale:enemy +-- ["Do you think you're some kind of god?"] = "", -- A_Classic_Fairytale:enemy +-- ["Dragon's Lair"] = "", -- A_Classic_Fairytale:dragon +-- ["Drills"] = "", -- A_Classic_Fairytale:backstab ["Drone Hunter!"] = "Åowca dronów", +-- ["Drop a bomb: [drop some heroic wind that will turn into a bomb on impact]"] = "", -- Continental_supplies -- ["Drowner"] = "", +-- ["Dude, all the plants are gone!"] = "", -- A_Classic_Fairytale:family +-- ["Dude, can you see Ramon and Spiky?"] = "", -- A_Classic_Fairytale:journey +-- ["Dude, that's so cool!"] = "", -- A_Classic_Fairytale:backstab +-- ["Dude, we really need a new shaman..."] = "", -- A_Classic_Fairytale:shadow +-- ["Dude, what's this place?!"] = "", -- A_Classic_Fairytale:dragon +-- ["Dude, where are we?"] = "", -- A_Classic_Fairytale:backstab +-- ["Dude, wow! I just had the weirdest high!"] = "", -- A_Classic_Fairytale:backstab +-- ["Duration"] = "", -- Continental_supplies +-- ["Dust storm: [Deals 20 damage to all enemies in the circle]"] = "", -- Continental_supplies ["Each turn you get 1-3 random weapons"] = "Z każdÄ… turÄ… dostaniesz 1-3 bronie", ["Each turn you get one random weapon"] = "Z każdÄ… turÄ… dostaniesz losowÄ… broÅ„", +-- ["Eagle Eye"] = "", -- A_Classic_Fairytale:backstab +-- ["Eagle Eye: [Blink to the impact ~ one shot]"] = "", -- Continental_supplies +-- ["Ear Sniffer"] = "", -- A_Classic_Fairytale:backstab, A_Classic_Fairytale:epil +-- ["Elderbot"] = "", -- A_Classic_Fairytale:family +-- ["Elimate your captor."] = "", -- User_Mission_-_The_Great_Escape ["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.", + ["Eliminate enemy hogs and take their weapons."] = "Ukatrup jeże przeciwnika i przejmij ich bronie.", -- Highlander ["Eliminate Poison before the time runs out"] = "Zabij Truciciela zanim skoÅ„czy siÄ™ czas", ["Eliminate the Blue Team"] = "Zniszcz niebieskÄ… drużynÄ™", ["Eliminate the enemy before the time runs out"] = "Wyeliminuj przeciwnika przed upÅ‚yniÄ™ciem czasu.", -- User_Mission_-_Bamboo_Thicket, User_Mission_-_Newton_and_the_Hammock ["Eliminate the enemy hogs to win."] = "Wybij jeże przeciwnika by wygrać.", ["Eliminate the enemy specialists."] = "Zabij specjalistów wroga.", ["- Eliminate Unit 3378 |- Feeble Resistance must survive"] = "- Rozwal JednostkÄ™ 3378 |- Twoja drużyna musi przetrwać", +-- ["Elmo"] = "", -- A_Classic_Fairytale:dragon, A_Classic_Fairytale:family, A_Classic_Fairytale:queen ["Energetic Engineer"] = "Energetyczny Inżynier", ["Enjoy the swim..."] = "PopÅ‚ywaj trochÄ™...", ["[Enter]"] = "[Enter]", +-- ["Europe"] = "", -- Continental_supplies +-- [" ever done to you?!"] = "", -- A_Classic_Fairytale:backstab +-- ["Everyone knows this."] = "", -- A_Classic_Fairytale:enemy +-- ["Every single time!"] = "", -- A_Classic_Fairytale:dragon +-- ["Everything looks OK..."] = "", -- A_Classic_Fairytale:enemy +-- ["Exactly, man! That was my dream."] = "", -- A_Classic_Fairytale:backstab +-- ["Eye Chewer"] = "", -- A_Classic_Fairytale:journey +-- ["FAG"] = "", -- Mutant +-- ["Family Reunion"] = "", -- A_Classic_Fairytale:family ["Fastest lap: "] = "Najszybsze okrążenie: ", ["Feeble Resistance"] = "Ruch Oporu", +-- ["Fell From Grace"] = "", -- A_Classic_Fairytale:backstab, A_Classic_Fairytale:dragon, A_Classic_Fairytale:enemy, A_Classic_Fairytale:epil, A_Classic_Fairytale:family, A_Classic_Fairytale:queen +-- ["Fell From Heaven"] = "", -- A_Classic_Fairytale:enemy, A_Classic_Fairytale:epil, A_Classic_Fairytale:family, A_Classic_Fairytale:first_blood, A_Classic_Fairytale:journey, A_Classic_Fairytale:queen +-- ["Fell From Heaven is the best! Fell From Heaven is the greatest!"] = "", -- A_Classic_Fairytale:family +-- ["Femur Lover"] = "", -- A_Classic_Fairytale:shadow +-- ["Fierce Competition!"] = "", -- Space_Invasion +-- ["Fiery Water"] = "", -- A_Classic_Fairytale:backstab, A_Classic_Fairytale:dragon, A_Classic_Fairytale:enemy, A_Classic_Fairytale:epil, A_Classic_Fairytale:family, A_Classic_Fairytale:queen, A_Classic_Fairytale:united +-- ["Find your tribe!|Cross the lake!"] = "", -- A_Classic_Fairytale:dragon +-- ["Finish your training|Hint: Animations can be skipped with the [Precise] key."] = "", -- A_Classic_Fairytale:first_blood +-- ["Fire a mine: [Does what it says ~ Cant be dropped close to an enemy ~ 1 sec]"] = "", -- Continental_supplies ["Fire"] = "OgieÅ„", +-- ["First aid kits?!"] = "", -- A_Classic_Fairytale:united +-- ["First Blood"] = "", -- A_Classic_Fairytale:first_blood +-- ["FIRST BLOOD MUTATES"] = "", -- Mutant +-- ["First Steps"] = "", -- A_Classic_Fairytale:first_blood ["Flag captured!"] = "Flaga przechwycona!", ["Flag respawned!"] = "Flaga przywrócona!", ["Flag returned!"] = "Flaga odzyskana!", ["Flags, and their home base will be placed where each team ends their first turn."] = "Flagi i baza zostanÄ… umieszczone tam gdzie zespół zakoÅ„czy swÄ… pierwszÄ… turÄ™.", -- ["Flamer"] = "", +-- ["Flaming Worm"] = "", -- A_Classic_Fairytale:backstab +-- ["Flare: [fire up some bombs depending on hogs depending on hogs in the circle"] = "", -- Continental_supplies +-- ["Flesh for Brainz"] = "", -- A_Classic_Fairytale:journey +-- ["For improved features/stability, play 0.9.18+"] = "", -- WxW +-- ["Free Dense Cloud and continue the mission!"] = "", -- A_Classic_Fairytale:journey -- ["Friendly Fire!"] = "", ["fuel extended!"] = "zdobyto paliwo", ["GAME BEGUN!!!"] = "GRA ROZPOCZĘTA!!!", ["Game Modifiers: "] = "Modyfikatory: ", ["GAME OVER!"] = "KONIEC GRY!", ["Game Started!"] = "Gra RozpoczÄ™ta", +-- ["Game? Was this a game to you?!"] = "", -- A_Classic_Fairytale:enemy +-- ["GasBomb"] = "", -- Continental_supplies +-- ["Gas Gargler"] = "", -- A_Classic_Fairytale:queen +-- ["Get Dense Cloud out of the pit!"] = "", -- A_Classic_Fairytale:journey ["Get on over there and take him out!"] = "DostaÅ„ siÄ™ tam i go wykoÅ„cz!", +-- ["Get on the head of the mole"] = "", -- A_Classic_Fairytale:first_blood +-- ["Get out of there!"] = "", -- User_Mission_-_The_Great_Escape +-- ["Get that crate!"] = "", -- A_Classic_Fairytale:first_blood +-- ["Get the crate on the other side of the island!|"] = "", -- A_Classic_Fairytale:journey +-- ["Get to the target using your rope! |Controls: Left & Right to swing the rope - Up & Down to Contract and Expand!"] = "", -- Basic_Training_-_Rope +-- ["Get your teammates out of their natural prison and save the princess!|Hint: Drilling holes should solve everything.|Hint: It might be a good idea to place a girder before starting to drill. Just saying.|Hint: All your hedgehogs need to be above the marked height!|Hint: Leaks A Lot needs to get really close to the princess!"] = "", -- A_Classic_Fairytale:family +-- ["GG!"] = "", -- User_Mission_-_Rope_Knock_Challenge +-- ["Gimme Bones"] = "", -- A_Classic_Fairytale:backstab +-- ["Glark"] = "", -- A_Classic_Fairytale:shadow ["Goal"] = "Gol", ["GO! GO! GO!"] = "RUCHY! RUCHY! RUCHY!", ["Good birdy......"] = "Dooobry ptaszek...", +-- ["Good Dude"] = "", -- User_Mission_-_The_Great_Escape +-- ["Good idea, they'll never find us there!"] = "", -- A_Classic_Fairytale:united +-- ["Good luck...or else!"] = "", -- A_Classic_Fairytale:journey ["Good luck out there!"] = "Powodzenia!", ["Good so far!"] = "Jak dotÄ…d idzie dobrze!", ["Good to go!"] = "Gotowi do akcji!", +-- ["Go on top of the flower"] = "", -- A_Classic_Fairytale:first_blood +-- ["Go, quick!"] = "", -- A_Classic_Fairytale:backstab +-- ["Gorkij"] = "", -- A_Classic_Fairytale:journey +-- ["Go surf!"] = "", -- WxW ["GOTCHA!"] = "MAM CIĘ!", ["Grab Mines/Explosives"] = "Chwyć miny/beczki", +-- ["Great choice, Steve! Mind if I call you that?"] = "", -- A_Classic_Fairytale:shadow +-- ["Great work! Now hit it with your Baseball Bat! |Tip: You can change weapon with 'Right Click'!"] = "", -- Basic_Training_-_Rope +-- ["Great! You will be contacted soon for assistance."] = "", -- A_Classic_Fairytale:shadow +-- ["Green lipstick bullet: [Is poisonous]"] = "", -- Continental_supplies +-- ["Greetings, "] = "", -- A_Classic_Fairytale:dragon +-- ["Greetings, cloudy one!"] = "", -- A_Classic_Fairytale:shadow +-- ["Grenade Training"] = "", -- Basic_Training_-_Grenade +-- ["Grenadiers"] = "", -- Basic_Training_-_Grenade +-- ["Guys, do you think there's more of them?"] = "", -- A_Classic_Fairytale:backstab +-- ["HAHA!"] = "", -- A_Classic_Fairytale:enemy +-- ["Haha!"] = "", -- A_Classic_Fairytale:united ["Hahahaha!"] = "Hahahaha!", ["Haha, now THAT would be something!"] = "Haha, to byÅ‚o by COÅš", +-- ["Hannibal"] = "", -- A_Classic_Fairytale:epil [" Hapless Hogs left!"] = " NieszczÄ™sne Jeże pozostaÅ‚y", ["Hapless Hogs"] = "NieszczÄ™sne Jeże", +-- [" HAS MUTATED\" )"] = "", -- +-- ["Hatless Jerry"] = "", -- A_Classic_Fairytale:queen +-- ["Have no illusions, your tribe is dead, indifferent of your choice."] = "", -- A_Classic_Fairytale:shadow +-- ["Have we ever attacked you first?"] = "", -- A_Classic_Fairytale:enemy ["Health crates extend your time."] = "Apteczki dodajÄ… czas.", -- ["Heavy"] = "", +-- ["Heavy Cannfantry"] = "", -- A_Classic_Fairytale:united +-- ["Hedge-cogs"] = "", -- A_Classic_Fairytale:enemy +-- ["Hedgehog projectile: [fire your hog like a Sticky Bomb]"] = "", -- Continental_supplies ["Hedgewars-Basketball"] = "Hedgewars-Koszykówka", ["Hedgewars-Knockball"] = "Hedgewars-Knockball", +-- ["Hedgibal Lecter"] = "", -- A_Classic_Fairytale:backstab ["Heh, it's not that bad."] = "Heh, nie jest aż tak źle.", +-- ["Hello again, "] = "", -- A_Classic_Fairytale:family +-- ["Help me, Leaks!"] = "", -- A_Classic_Fairytale:journey +-- ["Help me, please!!!"] = "", -- A_Classic_Fairytale:journey +-- ["Help me, please!"] = "", -- A_Classic_Fairytale:journey +-- ["He moves like an eagle in the sky."] = "", -- A_Classic_Fairytale:first_blood +-- ["He must be in the village already."] = "", -- A_Classic_Fairytale:journey +-- ["Here, let me help you!"] = "", -- A_Classic_Fairytale:backstab +-- ["Here, let me help you save her!"] = "", -- A_Classic_Fairytale:family +-- ["Here...pick your weapon!"] = "", -- A_Classic_Fairytale:first_blood +-- ["Hero Team"] = "", -- User_Mission_-_The_Great_Escape +-- ["He's so brave..."] = "", -- A_Classic_Fairytale:first_blood +-- ["He won't be selling us out anymore!"] = "", -- A_Classic_Fairytale:backstab +-- ["Hey, guys!"] = "", -- A_Classic_Fairytale:backstab +-- ["Hey guys!"] = "", -- A_Classic_Fairytale:united +-- ["Hey! This is cheating!"] = "", -- A_Classic_Fairytale:journey +-- ["HIGHLANDER"] = "", -- Highlander +-- ["Hightime"] = "", -- A_Classic_Fairytale:first_blood +-- ["Hint: Double Jump - Press [Backspace] twice"] = "", -- A_Classic_Fairytale:first_blood +-- ["Hint: Select the BlowTorch, aim and press [Fire]. Press [Fire] again to stop.|Don't blow up the crate."] = "", -- A_Classic_Fairytale:journey +-- ["Hint: Select the LowGravity and press [Fire]."] = "", -- A_Classic_Fairytale:journey +-- ["Hint: you might want to stay out of sight and take all the crates...|"] = "", -- A_Classic_Fairytale:journey +-- ["His arms are so strong!"] = "", -- A_Classic_Fairytale:first_blood ["Hit Combo!"] = "Combo!", +-- ["Hmmm...actually...I didn't either."] = "", -- A_Classic_Fairytale:enemy ["Hmmm..."] = "Hmmmm...", +-- ["Hmmm, I'll have to find some way of moving him off this anti-portal surface..."] = "", -- portal +-- ["Hmmm...it's a draw. How unfortunate!"] = "", -- A_Classic_Fairytale:enemy +-- ["Hmmm...perhaps a little more time will help."] = "", -- A_Classic_Fairytale:first_blood +-- ["Hogminator"] = "", -- A_Classic_Fairytale:family +-- ["Hogs in sight!"] = "", -- Continental_supplies +-- ["HOLY SHIT!"] = "", -- Mutant +-- ["Honest Lee"] = "", -- A_Classic_Fairytale:enemy ["Hooray!"] = "Hurraaa!", +-- ["Hostage Situation"] = "", -- A_Classic_Fairytale:family +-- ["How can I ever repay you for saving my life?"] = "", -- A_Classic_Fairytale:journey +-- ["How come in a village full of warriors, it's up to me to save it?"] = "", -- A_Classic_Fairytale:dragon +-- ["How difficult would you like it to be?"] = "", -- A_Classic_Fairytale:first_blood +-- ["HOW DO THEY KNOW WHERE WE ARE???"] = "", -- A_Classic_Fairytale:united +-- ["However, if you fail to do so, she dies a most violent death, just like your friend! Muahahaha!"] = "", -- A_Classic_Fairytale:journey +-- ["However, if you fail to do so, she dies a most violent death! Muahahaha!"] = "", -- A_Classic_Fairytale:journey +-- ["However, my mates don't agree with me on letting you go..."] = "", -- A_Classic_Fairytale:dragon +-- [" HP"] = "", -- Mutant ["Hunter"] = "Strzelec", +-- ["I believe there's more of them."] = "", -- A_Classic_Fairytale:backstab +-- ["I can see you have been training diligently."] = "", -- A_Classic_Fairytale:first_blood +-- ["I can't believe it worked!"] = "", -- A_Classic_Fairytale:shadow +-- ["I can't believe this!"] = "", -- A_Classic_Fairytale:enemy +-- ["I can't believe what I'm hearing!"] = "", -- A_Classic_Fairytale:backstab +-- ["I can't wait any more, I have to save myself!"] = "", -- A_Classic_Fairytale:shadow +-- ["I could just teleport myself there..."] = "", -- A_Classic_Fairytale:family +-- ["I'd better get going myself."] = "", -- A_Classic_Fairytale:journey +-- ["I didn't until about a month ago."] = "", -- A_Classic_Fairytale:enemy +-- ["I don't know how you did that.. But good work! |The next one should be easy as cake for you!"] = "", -- Basic_Training_-_Rope +-- ["I feel something...a place! They will arrive near the circles!"] = "", -- A_Classic_Fairytale:backstab +-- ["If only I had a way..."] = "", -- A_Classic_Fairytale:backstab +-- ["If only I were given a chance to explain my being here..."] = "", -- A_Classic_Fairytale:first_blood +-- ["I forgot that she's the daughter of the chief, too..."] = "", -- A_Classic_Fairytale:backstab +-- ["If they try coming here, they can have a taste of my delicious knuckles!"] = "", -- A_Classic_Fairytale:united +-- ["If you agree to provide the information we need, you will be spared!"] = "", -- A_Classic_Fairytale:shadow +-- ["If you can get that crate fast enough, your beloved \"princess\" may go free."] = "", -- A_Classic_Fairytale:journey +-- ["If you decide to help us, though, we will no longer need to find a new governor for the island."] = "", -- A_Classic_Fairytale:shadow +-- ["If you get stuck, use your Desert Eagle or restart the mission!|"] = "", -- A_Classic_Fairytale:journey +-- ["If you know what I mean..."] = "", -- A_Classic_Fairytale:shadow +-- ["If you say so..."] = "", -- A_Classic_Fairytale:shadow +-- ["If you wish to restart the course, hold [Precise] while your turn ends (e.g with Skip)"] = "", -- +-- ["I guess you'll have to kill them."] = "", -- A_Classic_Fairytale:dragon +-- ["I have come to make you an offering..."] = "", -- A_Classic_Fairytale:shadow +-- ["I have no idea where that mole disappeared...Can you see it?"] = "", -- A_Classic_Fairytale:shadow +-- ["I have to follow that alien."] = "", -- A_Classic_Fairytale:backstab +-- ["I have to get back to the village!"] = "", -- A_Classic_Fairytale:shadow +-- ["I hope you are prepared for a small challenge, young one."] = "", -- A_Classic_Fairytale:first_blood +-- ["I just don't want to sink to your level."] = "", -- A_Classic_Fairytale:backstab +-- ["I just found out that they have captured your princess!"] = "", -- A_Classic_Fairytale:family +-- ["I just wonder where Ramon and Spiky disappeared..."] = "", -- A_Classic_Fairytale:journey +-- ["I'll hold them off while you return to the village!"] = "", -- A_Classic_Fairytale:shadow +-- ["Imagine those targets are the wolves that killed your parents! Take your anger out on them!"] = "", -- A_Classic_Fairytale:first_blood +-- ["I'm...alive? How? Why?"] = "", -- A_Classic_Fairytale:backstab +-- ["I'm a ninja."] = "", -- A_Classic_Fairytale:dragon +-- ["I marked the place of their arrival. You're welcome!"] = "", -- A_Classic_Fairytale:backstab +-- ["I'm certain that this is a misunderstanding, fellow hedgehogs!"] = "", -- A_Classic_Fairytale:first_blood +-- ["I mean, none of you ceased to live."] = "", -- A_Classic_Fairytale:enemy +-- ["I'm getting old for this!"] = "", -- A_Classic_Fairytale:family +-- ["I'm getting thirsty..."] = "", -- A_Classic_Fairytale:family +-- ["I'm here to help you rescue her."] = "", -- A_Classic_Fairytale:family +-- ["I'm not sure about that!"] = "", -- A_Classic_Fairytale:united +-- ["Impressive...you are still dry as the corpse of a hawk after a week in the desert..."] = "", -- A_Classic_Fairytale:first_blood +-- ["I'm so scared!"] = "", -- A_Classic_Fairytale:united +-- ["Incredible..."] = "", -- A_Classic_Fairytale:shadow +-- ["I need to find the others!"] = "", -- A_Classic_Fairytale:backstab +-- ["I need to get to the other side of this island, fast!"] = "", -- A_Classic_Fairytale:journey +-- ["I need to move the tribe!"] = "", -- A_Classic_Fairytale:united +-- ["I need to prevent their arrival!"] = "", -- A_Classic_Fairytale:backstab +-- ["I need to warn the others."] = "", -- A_Classic_Fairytale:backstab +-- ["In fact, you are the only one that's been acting strangely."] = "", -- A_Classic_Fairytale:backstab +-- ["In order to get to the other side, you need to collect the crates first.|"] = "", -- A_Classic_Fairytale:dragon ["Instructor"] = "Instruktor", +-- ["Interesting idea, haha!"] = "", -- A_Classic_Fairytale:enemy +-- ["Interesting! Last time you said you killed a cannibal!"] = "", -- A_Classic_Fairytale:backstab +-- ["In the meantime, take these and return to your \"friend\"!"] = "", -- A_Classic_Fairytale:shadow ["invaders destroyed"] = "najeźdźców zniszczonych", +-- ["Invasion"] = "", -- A_Classic_Fairytale:united +-- ["I saw it with my own eyes!"] = "", -- A_Classic_Fairytale:shadow +-- ["I see..."] = "", -- A_Classic_Fairytale:shadow +-- ["I see you have already taken the leap of faith."] = "", -- A_Classic_Fairytale:first_blood +-- ["I see you would like his punishment to be more...personal..."] = "", -- A_Classic_Fairytale:first_blood +-- ["I sense another wave of cannibals heading my way!"] = "", -- A_Classic_Fairytale:backstab +-- ["I sense another wave of cannibals heading our way!"] = "", -- A_Classic_Fairytale:backstab +-- ["I shouldn't have drunk that last pint."] = "", -- A_Classic_Fairytale:dragon +-- ["Is this place in my head?"] = "", -- A_Classic_Fairytale:dragon +-- ["It doesn't matter. I won't let that alien hurt my daughter!"] = "", -- A_Classic_Fairytale:dragon +-- ["I think we are safe here."] = "", -- A_Classic_Fairytale:backstab +-- ["I thought their shaman died when he tried our medicine!"] = "", -- A_Classic_Fairytale:shadow +-- ["It is called 'Hogs of Steel'."] = "", -- A_Classic_Fairytale:enemy +-- ["It is time to practice your fighting skills."] = "", -- A_Classic_Fairytale:first_blood +-- ["It must be a childhood trauma..."] = "", -- A_Classic_Fairytale:family +-- ["It must be the aliens!"] = "", -- A_Classic_Fairytale:backstab +-- ["It must be the aliens' deed."] = "", -- A_Classic_Fairytale:backstab +-- ["It must be the cyborgs again!"] = "", -- A_Classic_Fairytale:enemy +-- ["I told you, I just found them."] = "", -- A_Classic_Fairytale:backstab ["It's a good thing SUDDEN DEATH is 99 turns away..."] = "Jak to dobrze, że NagÅ‚a Åšmierć jest dopiero za 99 tur...", +-- ["It's always up to women to clear up the mess men created!"] = "", -- A_Classic_Fairytale:dragon +-- ["It's a shame, I forgot how to do that!"] = "", -- A_Classic_Fairytale:family +-- ["It's impossible to communicate with the spirits without a shaman."] = "", -- A_Classic_Fairytale:shadow +-- ["It's over..."] = "", -- A_Classic_Fairytale:shadow +-- ["It's time you learned that your actions have consequences!"] = "", -- A_Classic_Fairytale:journey +-- ["It's worth more than wood!"] = "", -- A_Classic_Fairytale:enemy +-- ["It wants our brains!"] = "", -- A_Classic_Fairytale:shadow +-- ["It was not a dream, unwise one!"] = "", -- A_Classic_Fairytale:backstab +-- ["I've seen this before. They just appear out of thin air."] = "", -- A_Classic_Fairytale:united +-- ["I want to play a game..."] = "", -- A_Classic_Fairytale:journey +-- ["I want to see how it handles this!"] = "", -- A_Classic_Fairytale:backstab +-- ["I wish to help you, "] = "", -- A_Classic_Fairytale:dragon +-- ["I wonder where Dense Cloud is..."] = "", -- A_Classic_Fairytale:journey, A_Classic_Fairytale:shadow +-- ["I wonder why I'm so angry all the time..."] = "", -- A_Classic_Fairytale:family +-- ["I won't let you kill her!"] = "", -- A_Classic_Fairytale:journey +-- ["Jack"] = "", -- A_Classic_Fairytale:dragon, A_Classic_Fairytale:family, A_Classic_Fairytale:queen +-- ["Jeremiah"] = "", -- A_Classic_Fairytale:dragon +-- ["John"] = "", -- A_Classic_Fairytale:journey +-- ["Judas"] = "", -- A_Classic_Fairytale:backstab ["Jumping is disabled"] = "Skakanie jest niemożliwe", +-- ["Just kidding, none of you have died!"] = "", -- A_Classic_Fairytale:enemy +-- ["Just on a walk."] = "", -- A_Classic_Fairytale:united +-- ["Just wait till I get my hands on that trauma! ARGH!"] = "", -- A_Classic_Fairytale:family -- ["Kamikaze Expert!"] = "", ["Keep it up!"] = "Tak trzymaj!", +-- ["Kerguelen"] = "", -- Continental_supplies ["Killing spree!"] = "Masakra!", +-- ["KILL IT!"] = "", -- A_Classic_Fairytale:first_blood ["KILLS"] = "Zabicia", +-- ["Kill the aliens!"] = "", -- A_Classic_Fairytale:dragon +-- ["Kill the cannibal!"] = "", -- A_Classic_Fairytale:first_blood +-- ["Kill the traitor...or spare his life!|Kill him or press [Precise]!"] = "", -- A_Classic_Fairytale:backstab ["Last Target!"] = "Ostatni cel!", +-- ["Leader"] = "", -- A_Classic_Fairytale:enemy +-- ["Leaderbot"] = "", -- A_Classic_Fairytale:queen +-- ["Leaks A Lot"] = "", -- A_Classic_Fairytale:backstab, A_Classic_Fairytale:dragon, A_Classic_Fairytale:enemy, A_Classic_Fairytale:epil, A_Classic_Fairytale:family, A_Classic_Fairytale:first_blood, A_Classic_Fairytale:journey, A_Classic_Fairytale:queen, A_Classic_Fairytale:shadow, A_Classic_Fairytale:united +-- ["Leaks A Lot, depressed for killing his loved one, failed to save the village..."] = "", -- A_Classic_Fairytale:journey +-- ["Leaks A Lot gave his life for his tribe! He should have survived!"] = "", -- A_Classic_Fairytale:first_blood +-- ["Leaks A Lot must survive!"] = "", -- A_Classic_Fairytale:journey +-- ["Led Heart"] = "", -- A_Classic_Fairytale:queen +-- ["Lee"] = "", -- A_Classic_Fairytale:dragon, A_Classic_Fairytale:family, A_Classic_Fairytale:queen ["[Left Shift]"] = "[Lewy Shift]", +-- ["Let a Continent provide your weapons!"] = "", -- Continental_supplies +-- ["Let me test your skills a little, will you?"] = "", -- A_Classic_Fairytale:journey +-- ["Let's go home!"] = "", -- A_Classic_Fairytale:journey +-- ["Let's head back to the village!"] = "", -- A_Classic_Fairytale:shadow +-- ["Let's see what your comrade does now!"] = "", -- A_Classic_Fairytale:journey +-- ["Let's show those cannibals what we're made of!"] = "", -- A_Classic_Fairytale:backstab +-- ["Let them have a taste of my fury!"] = "", -- A_Classic_Fairytale:backstab +-- ["Let us help, too!"] = "", -- A_Classic_Fairytale:backstab +-- ["Light Cannfantry"] = "", -- A_Classic_Fairytale:united ["Listen up, maggot!!"] = "SÅ‚uchaj mnie, gnido!", +-- ["Little did they know that this hunt will mark them forever..."] = "", -- A_Classic_Fairytale:shadow ["Lively Lifeguard"] = "Ratownik!", +-- ["Lonely Cries: [Rise the water if no hog is in the circle and deal 1 damage to all hogs]"] = "", -- Continental_supplies +-- ["Look, I had no choice!"] = "", -- A_Classic_Fairytale:backstab +-- ["Look out! There's more of them!"] = "", -- A_Classic_Fairytale:backstab +-- ["Look out! We're surrounded by cannibals!"] = "", -- A_Classic_Fairytale:enemy +-- ["Looks like the whole world is falling apart!"] = "", -- A_Classic_Fairytale:enemy +-- ["Luckily, I've managed to snatch some of them."] = "", -- A_Classic_Fairytale:united +-- ["LUDICROUS KILL"] = "", -- Mutant +-- ["May the spirits aid you in all your quests!"] = "", -- A_Classic_Fairytale:backstab +-- ["Medicine: [Fire some exploding medicine that will heal all hogs effected by the explosion]"] = "", -- Continental_supplies +-- ["MEGA KILL"] = "", -- Mutant +-- ["Meiwes"] = "", -- A_Classic_Fairytale:backstab +-- ["Mindy"] = "", -- A_Classic_Fairytale:united -- ["Mine Deployer"] = "", ["Mine Eater!"] = "Pożeracz min!", ["|- Mines Time:"] = "|- Czas detonacji min:", ["MISSION FAILED"] = "MISJA ZAKOŃCZONA NIEPOWODZENIEM", ["MISSION SUCCESSFUL"] = "MISJA POWIODÅA SIĘ", ["MISSION SUCCESS"] = "MISJA ZAKOŃCZONA SUKCESEM", +-- ["Molotov"] = "", -- Continental_supplies +-- ["MONSTER KILL"] = "", -- Mutant +-- ["More Natives"] = "", -- A_Classic_Fairytale:epil ["Movement: [Up], [Down], [Left], [Right]"] = "Poruszanie siÄ™: [Góra], [Dół], [Lewo], [Prawo]", ["Multi-shot!"] = "Wielokrotny strzaÅ‚", +-- ["Muriel"] = "", -- A_Classic_Fairytale:backstab, A_Classic_Fairytale:dragon, A_Classic_Fairytale:family, A_Classic_Fairytale:queen +-- ["Muscle Dissolver"] = "", -- A_Classic_Fairytale:shadow +-- ["-------"] = "", -- Mutant +-- ["Nade Boy"] = "", -- Basic_Training_-_Grenade +-- ["Name"] = "", -- A_Classic_Fairytale:queen ["Nameless Heroes"] = "Bezimienni Bohaterowie", +-- ["Nancy Screw"] = "", -- A_Classic_Fairytale:enemy, A_Classic_Fairytale:queen +-- ["Napalm rocket: [Fire a bomb with napalm!]"] = "", -- Continental_supplies +-- ["Natives"] = "", -- A_Classic_Fairytale:backstab, A_Classic_Fairytale:dragon, A_Classic_Fairytale:enemy, A_Classic_Fairytale:epil, A_Classic_Fairytale:family, A_Classic_Fairytale:first_blood, A_Classic_Fairytale:journey, A_Classic_Fairytale:queen, A_Classic_Fairytale:shadow, A_Classic_Fairytale:united ["New Barrels Per Turn"] = "Ilość beczek dodanych co turÄ™", ["NEW CLAN RECORD: "] = "NOWY REKORD ZESPOÅU: ", ["NEW fastest lap: "] = "NOWE najszybsze okrążenie: ", ["New Mines Per Turn"] = "Ilość min dodanych co turÄ™", ["NEW RACE RECORD: "] = "NOWY REKORD WYÅšCIGU: ", ["Newton's Hammock"] = "Hamak Newtona", +-- ["Nicely done, meatbags!"] = "", -- A_Classic_Fairytale:enemy +-- ["Nice work, "] = "", -- A_Classic_Fairytale:dragon +-- ["Nice work!"] = "", -- A_Classic_Fairytale:enemy +-- ["Nilarian"] = "", -- A_Classic_Fairytale:queen +-- ["No, I came back to help you out..."] = "", -- A_Classic_Fairytale:shadow +-- ["No...I wonder where they disappeared?!"] = "", -- A_Classic_Fairytale:journey +-- ["Nom-Nom"] = "", -- A_Classic_Fairytale:journey +-- ["NomNom"] = "", -- A_Classic_Fairytale:united +-- ["Nope. It was one fast mole, that's for sure."] = "", -- A_Classic_Fairytale:shadow +-- ["No! Please, help me!"] = "", -- A_Classic_Fairytale:journey +-- ["NORMAL"] = "", -- Continental_supplies +-- ["North America"] = "", -- Continental_supplies + ["Not all hogs are born equal."] = "Nie wszystkie jeże rodzÄ… siÄ™ równe.", -- Highlander ["NOT ENOUGH WAYPOINTS"] = "ZA MAÅO PUNKTÓW KONTROLNYCH", +-- ["Not now, Fiery Water!"] = "", -- A_Classic_Fairytale:backstab ["Not So Friendly Match"] = "Mecz Nie-Do-KoÅ„ca Towarzyski", +-- ["Not you again! My head still hurts from last time!"] = "", -- A_Classic_Fairytale:shadow +-- ["No, we made sure of that!"] = "", -- A_Classic_Fairytale:united +-- ["Now find the next target! |Tip: Normally you lose health by falling down, so be careful!"] = "", -- Basic_Training_-_Rope +-- ["No! What have I done?! What have YOU done?!"] = "", -- A_Classic_Fairytale:journey +-- ["No. Where did he come from?"] = "", -- A_Classic_Fairytale:shadow +-- ["Now how do I get on the other side?!"] = "", -- A_Classic_Fairytale:dragon +-- ["No. You and the rest of the tribe are safer there!"] = "", -- A_Classic_Fairytale:backstab +-- ["Obliterate them!|Hint: You might want to take cover..."] = "", -- A_Classic_Fairytale:shadow +-- ["Obstacle course"] = "", -- A_Classic_Fairytale:dragon +-- ["Of course I have to save her. What did I expect?!"] = "", -- A_Classic_Fairytale:family +-- ["OH, COME ON!"] = "", -- A_Classic_Fairytale:journey +-- ["Oh, my!"] = "", -- A_Classic_Fairytale:first_blood +-- ["Oh, my! This is even more entertaining than I've expected!"] = "", -- A_Classic_Fairytale:backstab ["Oh no! Just try again!"] = "Ojojoj! Spróbuj jeszcze raz!", +-- ["Oh no, not "] = "", -- A_Classic_Fairytale:backstab, A_Classic_Fairytale:united ["Oh no! Time's up! Just try again."] = "Ajajaj! Koniec czasu! Spróbuj jeszcze raz.", +-- ["Oh no! You failed! Just try again."] = "", -- Basic_Training_-_Cluster_Bomb +-- ["Oh, silly me! I forgot that I'm the shaman."] = "", -- A_Classic_Fairytale:backstab +-- ["Olive"] = "", -- A_Classic_Fairytale:united +-- ["Omnivore"] = "", -- A_Classic_Fairytale:first_blood +-- ["Once upon a time, on an island with great natural resources, lived two tribes in heated conflict..."] = "", -- A_Classic_Fairytale:first_blood +-- ["ONE HOG PER TEAM! KILLING EXCESS HEDGES"] = "", -- Mutant +-- ["One tribe was peaceful, spending their time hunting and training, enjoying the small pleasures of life..."] = "", -- A_Classic_Fairytale:first_blood +-- ["Oops...I dropped them."] = "", -- A_Classic_Fairytale:united +-- ["Open that crate and we will continue!"] = "", -- A_Classic_Fairytale:first_blood ["Operation Diver"] = "Operacja Nurek", ["Opposing Team: "] = "Przeciwna drużyna", +-- ["Orlando Boom!"] = "", -- A_Classic_Fairytale:queen +-- ["Ouch!"] = "", -- User_Mission_-_Rope_Knock_Challenge +-- ["Our tribe, our beautiful island!"] = "", -- A_Classic_Fairytale:enemy +-- ["Parachute"] = "", -- Continental_supplies ["Pathetic Hog #%d"] = "Å»aÅ‚osny Jeż #%d", -- ["Pathetic Resistance"] = "", -- User_Mission_-_Bamboo_Thicket, User_Mission_-_Newton_and_the_Hammock +-- ["Perfect! Now try to get the next crate without hurting yourself!"] = "", -- A_Classic_Fairytale:first_blood ["Per-Hog Ammo"] = "Oddzielna amunicja dla jeży", +-- ["- Per team weapons|- 9 weaponschemes|- Unique new weapons| |Select continent first round with the Weapon Menu or by ([switch/tab]=Increase,[presice/left shift]=Decrease)"] = "", -- +-- ["Pfew! That was close!"] = "", -- A_Classic_Fairytale:shadow +-- ["Piñata bullet: [Contains some sweet candy!]"] = "", -- Continental_supplies +-- ["Pings left:"] = "", -- Space_Invasion ["Place more waypoints using [ENTER]"] = "Postaw wiÄ™cej punktów orientacyjnych za pomocÄ… [Enteru]", ["Place more waypoints using the 'Air Attack' weapon."] = "Postaw wiÄ™cej punktów orientacyjnych używajÄ…c [Nalotu]", +-- ["Planes Used:"] = "", -- User_Mission_-_RCPlane_Challenge +-- ["Planes Used"] = "", -- User_Mission_-_RCPlane_Challenge +-- ["Play with me!"] = "", -- A_Classic_Fairytale:shadow +-- ["Please place the way-point further from the waterline."] = "", -- Racer +-- ["Please place the way-point in the open, within the map boundaries."] = "", -- Racer +-- ["Please, stop releasing your \"smoke signals\"!"] = "", -- A_Classic_Fairytale:shadow +-- ["Point Blank Combo!"] = "", -- Space_Invasion ["points"] = "punkty", -- Control, CTF_Blizzard, Basic_Training_-_Bazooka, Basic_Training_-_Shotgun, Basic_Training_-_Sniper_Rifle ["Poison"] = "Truciciel", +-- ["Portal hint: one goes to the destination, and one is the entrance.|"] = "", -- A_Classic_Fairytale:dragon +-- ["Portal mission"] = "", -- portal ["Power Remaining"] = "pkt. energii pozostaÅ‚o", ["Prepare yourself"] = "Przygotuj siÄ™", +-- ["Press [Enter] to accept this configuration."] = "", -- WxW +-- ["Press [Left] or [Right] to move around, [Enter] to jump"] = "", -- A_Classic_Fairytale:first_blood ["Press [Precise] to skip intro"] = "NaciÅ›nij [Precyzyjne celowanie] by pominąć intro", +-- ["Private Novak"] = "", -- Basic_Training_-_Cluster_Bomb +-- ["Protect yourselves!|Grenade hint: set the timer with [1-5], aim with [Up]/[Down] and hold [Space] to set power"] = "", -- A_Classic_Fairytale:shadow ["Race complexity limit reached."] = "OsiÄ…gniÄ™to limit zÅ‚ożonoÅ›ci trasy.", ["RACER"] = "WYÅšCIG", +-- ["Rachel"] = "", -- A_Classic_Fairytale:dragon, A_Classic_Fairytale:family, A_Classic_Fairytale:queen +-- ["Radar Ping"] = "", -- Space_Invasion +-- ["Raging Buffalo"] = "", -- A_Classic_Fairytale:backstab, A_Classic_Fairytale:dragon, A_Classic_Fairytale:enemy, A_Classic_Fairytale:epil, A_Classic_Fairytale:family, A_Classic_Fairytale:queen, A_Classic_Fairytale:united +-- ["Ramon"] = "", -- A_Classic_Fairytale:enemy, A_Classic_Fairytale:epil, A_Classic_Fairytale:family, A_Classic_Fairytale:queen, A_Classic_Fairytale:shadow +-- ["RC PLANE TRAINING"] = "", -- User_Mission_-_RCPlane_Challenge +-- ["Really?! You thought you could harm me with your little toys?"] = "", -- A_Classic_Fairytale:shadow +-- ["Regurgitator"] = "", -- A_Classic_Fairytale:backstab +-- ["Reinforcements"] = "", -- A_Classic_Fairytale:backstab +-- ["Remember: The rope only bend around objects, |if it doesn't hit anything it's always stright!"] = "", -- Basic_Training_-_Rope +-- ["Remember this, pathetic animal: when the day comes, you will regret your blind loyalty!"] = "", -- A_Classic_Fairytale:shadow [" - 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", +-- ["Return to Leaks A Lot! If you get stuck, press [Precise] to try again!"] = "", -- A_Classic_Fairytale:shadow +-- ["Righteous Beard"] = "", -- A_Classic_Fairytale:backstab, A_Classic_Fairytale:dragon, A_Classic_Fairytale:enemy, A_Classic_Fairytale:epil, A_Classic_Fairytale:family, A_Classic_Fairytale:first_blood, A_Classic_Fairytale:queen, A_Classic_Fairytale:united +-- ["ROPE-KNOCKING"] = "", -- User_Mission_-_Rope_Knock_Challenge +-- ["Rope Training"] = "", -- Basic_Training_-_Rope +-- ["Rot Molester"] = "", -- A_Classic_Fairytale:shadow ["Round Limit:"] = "Ilość rund:", ["Round Limit"] = "Ilość rund", + ["Rounds Complete"] = "Koniec", ["Rounds Complete: "] = "UkoÅ„czono rund: ", - ["Rounds Complete"] = "Koniec", ["RULES OF THE GAME [Press ESC to view]"] = "ZASADY GRY [NaciÅ›nij ESC by zobaczyć]", +-- ["Rusty Joe"] = "", -- A_Classic_Fairytale:queen +-- ["Sabotage: [Sabotage all hogs in the circle and deal ~10 dmg]"] = "", -- Continental_supplies +-- ["Salivaslurper"] = "", -- A_Classic_Fairytale:united +-- ["Salvation"] = "", -- A_Classic_Fairytale:family +-- ["Salvation was one step closer now..."] = "", -- A_Classic_Fairytale:dragon ["Save as many hapless hogs as possible!"] = "Uratuj jak najwiÄ™cej nieszczÄ™snych jeży", +-- ["Save Fell From Heaven!"] = "", -- A_Classic_Fairytale:journey +-- ["Save Leaks A Lot!|Hint: The Switch utility might be of help to you."] = "", -- A_Classic_Fairytale:shadow +-- ["Save the princess! All your hogs must survive!|Hint: Kill the cyborgs first! Use the ammo very carefully!|Hint: You might want to spare a girder for cover!"] = "", -- A_Classic_Fairytale:family +-- ["Save the princess by collecting the crate in under 12 turns!"] = "", -- A_Classic_Fairytale:journey +-- ["Scalp Muncher"] = "", -- A_Classic_Fairytale:backstab +-- ["Score"] = "", -- Mutant ["SCORE"] = "PUNKTY", +-- ["Scream from a Walrus: [Deal 20 damage + 10% of your hogs health to all hogs around you and get half back]"] = "", -- Continental_supplies ["sec"] = "sek", +-- ["Seduction"] = "", -- Continental_supplies +-- ["Seems like every time you take a \"walk\", the enemy find us!"] = "", -- A_Classic_Fairytale:backstab +-- ["See that crate farther on the right?"] = "", -- A_Classic_Fairytale:first_blood ["See ya!"] = "Do zobaczenia!", +-- ["Segmentation Paul"] = "", -- A_Classic_Fairytale:dragon +-- ["Select continent!"] = "", -- Continental_supplies +-- ["Select difficulty: [Left] - easier or [Right] - harder"] = "", -- A_Classic_Fairytale:first_blood ["selected!"] = "wybrany!", +-- ["... share your beauty with the world every morning, my princess!"] = "", -- A_Classic_Fairytale:journey +-- ["She's behind that tall thingy."] = "", -- A_Classic_Fairytale:family ["Shield boosted! +30 power"] = "OsÅ‚ona ulepszona: +30 energii", ["Shield Depleted"] = "StraciÅ‚eÅ› OsÅ‚onÄ™", ["Shield is fully recharged!"] = "OsÅ‚ona caÅ‚kowicie naÅ‚adowana", @@ -160,61 +644,340 @@ ["Shield OFF:"] = "OsÅ‚ona WYÅÄ„CZONA:", ["Shield ON:"] = "OsÅ‚ona WÅÄ„CZONA:", ["Shield Seeker!"] = "Zdobywca osÅ‚on!", +-- ["Shotgun"] = "", -- Continental_supplies ["Shotgun Team"] = "Strzelcy", ["Shotgun Training"] = "Trening strzelecki", ["shots remaining."] = "strzałów pozostaÅ‚o.", ["Silly"] = "GÅ‚uptas", -- ["Sinky"] = "", +-- ["Sirius Lee"] = "", -- A_Classic_Fairytale:enemy ["%s is out and Team %d|scored a penalty!| |Score:"] = "%s utonÄ…Å‚ i drużyna %d|dostaÅ‚a punkt karny!| |Punktacja:", ["%s is out and Team %d|scored a point!| |Score:"] = "%s utonÄ…Å‚ i drużyna %d|zdobyÅ‚a punkt!| |Punktacja:", +-- ["Slippery"] = "", -- A_Classic_Fairytale:journey +-- ["Smith 0.97"] = "", -- A_Classic_Fairytale:enemy +-- ["Smith 0.98"] = "", -- A_Classic_Fairytale:enemy +-- ["Smith 0.99a"] = "", -- A_Classic_Fairytale:enemy +-- ["Smith 0.99b"] = "", -- A_Classic_Fairytale:enemy +-- ["Smith 0.99f"] = "", -- A_Classic_Fairytale:enemy +-- ["Smith 1.0"] = "", -- A_Classic_Fairytale:enemy +-- ["Sniper Rifle"] = "", -- Continental_supplies +-- ["Sniper!"] = "", -- Space_Invasion ["Sniper Training"] = "Trening Snajperski", ["Sniperz"] = "Snajperzy", +-- ["So humiliating..."] = "", -- A_Classic_Fairytale:first_blood +-- ["South America"] = "", -- Continental_supplies +-- ["So? What will it be?"] = "", -- A_Classic_Fairytale:shadow +-- ["Spawn the crate, and attack!"] = "", -- WxW +-- ["Special Weapons:"] = "", -- Continental_supplies +-- ["Spiky Cheese"] = "", -- A_Classic_Fairytale:enemy, A_Classic_Fairytale:epil, A_Classic_Fairytale:family, A_Classic_Fairytale:queen, A_Classic_Fairytale:shadow +-- ["Spleenlover"] = "", -- A_Classic_Fairytale:united ["Sponge"] = "GÄ…bka", ["Spooky Tree"] = "Straszne drzewo", ["s|"] = "s|", ["s"] = "s", -- GaudyRacer, Space_Invasion ["STATUS UPDATE"] = "WYNIKI", -- GaudyRacer, Space_Invasion +-- ["Steel Eye"] = "", -- A_Classic_Fairytale:queen +-- ["Step By Step"] = "", -- A_Classic_Fairytale:first_blood +-- ["Steve"] = "", -- A_Classic_Fairytale:dragon, A_Classic_Fairytale:family, A_Classic_Fairytale:queen +-- ["Sticky Mine"] = "", -- Continental_supplies +-- ["Stronglings"] = "", -- A_Classic_Fairytale:shadow +-- ["Structure"] = "", -- Continental_supplies +-- ["Super Weapons"] = "", -- WxW +-- ["Surf Before Crate"] = "", -- WxW +-- ["Surfer! +15 points!"] = "", -- Space_Invasion +-- ["Surfer!"] = "", -- WxW +-- ["Survive!|Hint: Cinematics can be skipped with the [Precise] key."] = "", -- A_Classic_Fairytale:shadow +-- ["Swing, Leaks A Lot, on the wings of the wind!"] = "", -- A_Classic_Fairytale:first_blood ["Switched to "] = "PrzeÅ‚Ä…czono na ", +-- ["Syntax Errol"] = "", -- A_Classic_Fairytale:dragon +-- ["Talk about mixed signals..."] = "", -- A_Classic_Fairytale:dragon ["Team %d: "] = "Drużyna %d: ", ["Team Scores"] = "Punktacja(?)", -- Control, Space_Invasion +-- ["Teleport hint: just use the mouse to select the destination!"] = "", -- A_Classic_Fairytale:dragon +-- ["Thanks!"] = "", -- A_Classic_Fairytale:family +-- ["Thank you, my hero!"] = "", -- A_Classic_Fairytale:family +-- ["Thank you, oh, thank you, Leaks A Lot!"] = "", -- A_Classic_Fairytale:journey +-- ["Thank you, oh, thank you, my heroes!"] = "", -- A_Classic_Fairytale:journey +-- ["That is, indeed, very weird..."] = "", -- A_Classic_Fairytale:united +-- ["That makes it almost invaluable!"] = "", -- A_Classic_Fairytale:enemy +-- ["That ought to show them!"] = "", -- A_Classic_Fairytale:backstab +-- ["That's for my father!"] = "", -- A_Classic_Fairytale:backstab +-- ["That shaman sure knows what he's doing!"] = "", -- A_Classic_Fairytale:shadow -- ["That Sinking Feeling"] = "", +-- ["That's not our problem!"] = "", -- A_Classic_Fairytale:enemy +-- ["That's typical of you!"] = "", -- A_Classic_Fairytale:family +-- ["That was just mean!"] = "", -- A_Classic_Fairytale:backstab, A_Classic_Fairytale:united ["That was pointless."] = "To byÅ‚o bezcelowe", +-- ["The answer is...entertaintment. You'll see what I mean."] = "", -- A_Classic_Fairytale:backstab +-- ["The anti-portal zone is all over the floor, and I have nothing to kill him...Droping something could hurt him enough to kill him..."] = "", -- portal +-- ["The Bull's Eye"] = "", -- A_Classic_Fairytale:first_blood +-- ["The caves are well hidden, they won't find us there!"] = "", -- A_Classic_Fairytale:united +-- ["The Crate Frenzy"] = "", -- A_Classic_Fairytale:first_blood +-- ["The Dilemma"] = "", -- A_Classic_Fairytale:shadow +-- ["The enemy can't move but it might be a good idea to stay out of sight!|"] = "", -- A_Classic_Fairytale:dragon ["The enemy is hiding out on yonder ducky!"] = "Na tamtej kaczce ukrywa siÄ™ nasz przeciwnik!", +-- ["The Enemy Of My Enemy"] = "", -- A_Classic_Fairytale:enemy +-- ["The First Blood"] = "", -- A_Classic_Fairytale:first_blood +-- ["The First Encounter"] = "", -- A_Classic_Fairytale:shadow ["The flag will respawn next round."] = "Flaga pojawi siÄ™ ponownie przy nastÄ™pnej rundzie.", +-- ["The food bites back"] = "", -- A_Classic_Fairytale:backstab +-- ["The giant umbrella from the last crate should help break the fall."] = "", -- A_Classic_Fairytale:first_blood +-- ["The Great Escape"] = "", -- User_Mission_-_The_Great_Escape +-- ["The guardian"] = "", -- A_Classic_Fairytale:shadow +-- ["The Individualist"] = "", -- A_Classic_Fairytale:shadow +-- ["Their buildings were very primitive back then, even for an uncivilised island."] = "", -- A_Classic_Fairytale:united +-- ["The Journey Back"] = "", -- A_Classic_Fairytale:journey +-- ["The Leap of Faith"] = "", -- A_Classic_Fairytale:first_blood +-- ["The Moonwalk"] = "", -- A_Classic_Fairytale:journey ["The Nameless One"] = "Bezimienny", +-- ["The next one is pretty hard! |Tip: You have to do multiple swings!"] = "", -- Basic_Training_-_Rope +-- ["Then how do they keep appearing?"] = "", -- A_Classic_Fairytale:shadow +-- ["The other one were all cannibals, spending their time eating the organs of fellow hedgehogs..."] = "", -- A_Classic_Fairytale:first_blood +-- ["There must be a spy among us!"] = "", -- A_Classic_Fairytale:backstab +-- ["There's more of them? When did they become so hungry?"] = "", -- A_Classic_Fairytale:backstab, A_Classic_Fairytale:united +-- ["There's nothing more satisfying for me than seeing you share your beauty with the world every morning, my princess!"] = "", -- A_Classic_Fairytale:journey +-- ["There's nothing more satisfying to us than seeing you share your beauty..."] = "", -- A_Classic_Fairytale:journey +-- ["There's nothing more satisfying to us than seeing you share your beauty with the world every morning, my princess!"] = "", -- A_Classic_Fairytale:journey +-- ["The Rising"] = "", -- A_Classic_Fairytale:first_blood +-- ["The Savior"] = "", -- A_Classic_Fairytale:journey +-- ["These primitive people are so funny!"] = "", -- A_Classic_Fairytale:backstab +-- ["The Shadow Falls"] = "", -- A_Classic_Fairytale:shadow +-- ["The Showdown"] = "", -- A_Classic_Fairytale:shadow +-- ["The Slaughter"] = "", -- A_Classic_Fairytale:dragon, A_Classic_Fairytale:first_blood ["THE SPECIALISTS"] = "SPECJALIÅšCI", +-- ["The spirits of the ancerstors are surely pleased, Leaks A Lot."] = "", -- A_Classic_Fairytale:first_blood +-- ["The Torment"] = "", -- A_Classic_Fairytale:first_blood +-- ["The Tunnel Maker"] = "", -- A_Classic_Fairytale:journey +-- ["The Ultimate Weapon"] = "", -- A_Classic_Fairytale:first_blood +-- ["The Union"] = "", -- A_Classic_Fairytale:enemy +-- ["The village, unprepared, was destroyed by the cyborgs..."] = "", -- A_Classic_Fairytale:journey +-- ["The walk of Fame"] = "", -- A_Classic_Fairytale:shadow +-- ["The wasted youth"] = "", -- A_Classic_Fairytale:first_blood +-- ["The weapon in that last crate was bestowed upon us by the ancients!"] = "", -- A_Classic_Fairytale:first_blood +-- ["The what?!"] = "", -- A_Classic_Fairytale:dragon +-- ["The wind whispers that you are ready to become familiar with tools, now..."] = "", -- A_Classic_Fairytale:first_blood +-- ["They are all waiting back in the village, haha."] = "", -- A_Classic_Fairytale:enemy +-- ["They Call Me Bullseye!"] = "", -- Space_Invasion +-- ["They have weapons we've never seen before!"] = "", -- A_Classic_Fairytale:united +-- ["They keep appearing like this. It's weird!"] = "", -- A_Classic_Fairytale:united +-- ["They killed "] = "", -- A_Classic_Fairytale:backstab, A_Classic_Fairytale:united +-- ["They must be trying to weaken us!"] = "", -- A_Classic_Fairytale:enemy +-- ["They never learn"] = "", -- A_Classic_Fairytale:journey +-- ["They told us to wear these clothes. They said that this is the newest trend."] = "", -- A_Classic_Fairytale:enemy +-- ["They've been manipulating us all this time!"] = "", -- A_Classic_Fairytale:enemy +-- ["Thighlicker"] = "", -- A_Classic_Fairytale:united +-- ["This is it! It's time to make Fell From Heaven fall for me..."] = "", -- A_Classic_Fairytale:first_blood +-- ["This island is the only place left on Earth with grass on it!"] = "", -- A_Classic_Fairytale:enemy +-- ["This is typical!"] = "", -- A_Classic_Fairytale:dragon +-- ["This must be some kind of sorcery!"] = "", -- A_Classic_Fairytale:shadow +-- ["This must be the caves!"] = "", -- A_Classic_Fairytale:backstab -- ["This one's tricky."] = "", -- ["This rain is really something..."] = "", +-- ["This will be fun!"] = "", -- A_Classic_Fairytale:enemy +-- ["Those aliens are destroying the island!"] = "", -- A_Classic_Fairytale:family ["TIME: "] = "CZAS: ", -- ["Timed Kamikaze!"] = "", ["Time Extended!"] = "WiÄ™cej Czasu!", ["Time Extension"] = "Dodatkowy Czas!", +-- ["Tip: The rope physics are different than in the real world, |use it to your advantage!"] = "", -- Basic_Training_-_Rope ["Toggle Shield"] = "WÅ‚/WyÅ‚ OsÅ‚onÄ™", +-- ["To help you, of course!"] = "", -- A_Classic_Fairytale:journey +-- ["To place a girder, select it, use [Left] and [Right] to select angle and length, place with [Left Click]"] = "", -- A_Classic_Fairytale:shadow +-- ["Torn Muscle"] = "", -- A_Classic_Fairytale:journey +-- [" to save the village."] = "", -- A_Classic_Fairytale:dragon +-- ["To the caves..."] = "", -- A_Classic_Fairytale:united ["Toxic Team"] = "Toksyczny zespół", ["TRACK COMPLETED"] = "UKOŃCZONO TRASĘ", ["TRACK FAILED!"] = "TRASA NIEUKOŃCZONA!", +-- ["training"] = "", -- portal +-- ["Traitors"] = "", -- A_Classic_Fairytale:epil +-- ["Tribe"] = "", -- A_Classic_Fairytale:backstab ["TrophyRace"] = "TrophyRace", +-- ["Try to protect the chief! You won't lose if he dies, but it is advised that he survives."] = "", -- A_Classic_Fairytale:united ["T_T"] = "T_T", -- ["Tumbling Time Extended!"] = "", +-- ["Turns until Sudden Death: "] = "", -- A_Classic_Fairytale:dragon +-- [" turns until Sudden Death! Better hurry!"] = "", -- A_Classic_Fairytale:dragon ["Turn Time"] = "DÅ‚ugość Tury", - ["Unit"] = "Jednostka", +-- ["Two little hogs cooperating, getting past obstacles..."] = "", -- A_Classic_Fairytale:journey +-- ["Uhm...I met one of them and took his weapons."] = "", -- A_Classic_Fairytale:shadow +-- ["Uhmm...ok no."] = "", -- A_Classic_Fairytale:enemy +-- ["ULTRA KILL"] = "", -- Mutant +-- ["Under Construction"] = "", -- A_Classic_Fairytale:shadow +-- ["Unexpected Igor"] = "", -- A_Classic_Fairytale:dragon +-- ["Unit 0x0007"] = "", -- A_Classic_Fairytale:family +-- ["Unit 334a$7%;.*"] = "", -- A_Classic_Fairytale:backstab, A_Classic_Fairytale:dragon, A_Classic_Fairytale:enemy, A_Classic_Fairytale:family, A_Classic_Fairytale:queen, A_Classic_Fairytale:united ["Unit 3378"] = "Jednostka 3378", ["Unit 835"] = "Jednostka 835", --- ["Unlimited Attacks"] = "", +-- ["United We Stand"] = "", -- A_Classic_Fairytale:united + ["Unit"] = "Jednostka", + ["Unlimited Attacks"] = "Nieograniczone ataki", +-- ["Unlucky Sods"] = "", -- User_Mission_-_Rope_Knock_Challenge ["Unstoppable!"] = "Nie do zatrzymania!", +-- ["Unsuspecting Louts"] = "", -- User_Mission_-_Rope_Knock_Challenge +-- ["[Up], [Down] to aim, [Space] to shoot!"] = "", -- A_Classic_Fairytale:first_blood +-- ["Use it wisely!"] = "", -- A_Classic_Fairytale:dragon +-- ["Use it with precaution!"] = "", -- A_Classic_Fairytale:first_blood -- ["User Challenge"] = "", +-- ["Use the parachute ([Space] while in air)"] = "", -- +-- ["Use the portal gun to get to the next crate, then use the new gun to get to the final destination!|"] = "", -- A_Classic_Fairytale:dragon +-- ["Use the rope to get on the head of the mole, young one!"] = "", -- A_Classic_Fairytale:first_blood +-- ["Use the rope to knock your enemies to their doom."] = "", -- User_Mission_-_Rope_Knock_Challenge ["Use your rope to get from start to finish as fast as you can!"] = "Użyj liny by jak najszybciej dotrzeć od startu do mety", +-- ["Vedgies"] = "", -- A_Classic_Fairytale:journey +-- ["Vegan Jack"] = "", -- A_Classic_Fairytale:enemy +-- ["Victory!"] = "", -- Basic_Training_-_Rope ["Victory for the "] = "ZwyciÄ™stwo przypadÅ‚o", +-- ["Violence is not the answer to your problems!"] = "", -- A_Classic_Fairytale:first_blood +-- ["Walls Left"] = "", -- WxW +-- ["Walls Required"] = "", -- WxW +-- ["WALL TO WALL"] = "", -- WxW +-- ["Wannabe Flyboys"] = "", -- User_Mission_-_RCPlane_Challenge +-- ["Wannabe Shoppsta"] = "", -- User_Mission_-_Rope_Knock_Challenge +-- ["Watch your steps, young one!"] = "", -- A_Classic_Fairytale:first_blood ["Waypoint placed."] = "Postawiono punkt kontrolny", ["Way-Points Remaining"] = "PozostaÅ‚o punktów: ", +-- ["Weaklings"] = "", -- A_Classic_Fairytale:shadow +-- ["We all know what happens when you get frightened..."] = "", -- A_Classic_Fairytale:first_blood ["Weapons Reset"] = "Bronie odnawiajÄ… siÄ™", + ["Weapons reset."] = "Bronie odnawiajÄ… siÄ™.", -- Highlander +-- ["We are indeed."] = "", -- A_Classic_Fairytale:backstab +-- ["We can't defeat them!"] = "", -- A_Classic_Fairytale:shadow +-- ["We can't hold them up much longer!"] = "", -- A_Classic_Fairytale:united +-- ["We can't let them take over our little island!"] = "", -- A_Classic_Fairytale:enemy +-- ["We have no time to waste..."] = "", -- A_Classic_Fairytale:journey +-- ["We have nowhere else to live!"] = "", -- A_Classic_Fairytale:enemy +-- ["We have to protect the village!"] = "", -- A_Classic_Fairytale:united +-- ["We have to unite and defeat those cylergs!"] = "", -- A_Classic_Fairytale:enemy +-- ["Welcome, Leaks A Lot!"] = "", -- A_Classic_Fairytale:journey ["Well done."] = "Dobra robota", +-- ["We'll give you a problem then!"] = "", -- A_Classic_Fairytale:enemy +-- ["We'll spare your life for now!"] = "", -- A_Classic_Fairytale:backstab +-- ["Well, that was a waste of time."] = "", -- A_Classic_Fairytale:dragon +-- ["Well, well! Isn't that the cutest thing you've ever seen?"] = "", -- A_Classic_Fairytale:journey +-- ["Well, yes. This was a cyborg television show."] = "", -- A_Classic_Fairytale:enemy +-- ["We made sure noone followed us!"] = "", -- A_Classic_Fairytale:backstab +-- ["We need to move!"] = "", -- A_Classic_Fairytale:united +-- ["We need to prevent their arrival!"] = "", -- A_Classic_Fairytale:backstab +-- ["We need to warn the village."] = "", -- A_Classic_Fairytale:shadow +-- ["We should head back to the village now."] = "", -- A_Classic_Fairytale:shadow +-- ["We were trying to save her and we got lost."] = "", -- A_Classic_Fairytale:family +-- ["We won't let you hurt her!"] = "", -- A_Classic_Fairytale:journey +-- ["What?! A cannibal? Here? There is no time to waste! Come, you are prepared."] = "", -- A_Classic_Fairytale:first_blood +-- ["What a douche!"] = "", -- A_Classic_Fairytale:enemy +-- ["What am I gonna...eat, yo?"] = "", -- A_Classic_Fairytale:family +-- ["What are you doing at a distance so great, young one?"] = "", -- A_Classic_Fairytale:first_blood +-- ["What are you doing? Let her go!"] = "", -- A_Classic_Fairytale:journey +-- ["What a ride!"] = "", -- A_Classic_Fairytale:shadow +-- ["What a strange cave!"] = "", -- A_Classic_Fairytale:dragon +-- ["What a strange feeling!"] = "", -- A_Classic_Fairytale:backstab +-- ["What do my faulty eyes observe? A spy!"] = "", -- A_Classic_Fairytale:first_blood +-- ["Whatever floats your boat..."] = "", -- A_Classic_Fairytale:shadow +-- [" What !! For all of this struggle i just win some ... TIME o0"] = "", -- portal +-- ["What has "] = "", -- A_Classic_Fairytale:backstab +-- ["What? Here? How did they find us?!"] = "", -- A_Classic_Fairytale:backstab +-- ["What is this place?"] = "", -- A_Classic_Fairytale:dragon, A_Classic_Fairytale:enemy +-- ["What shall we do with the traitor?"] = "", -- A_Classic_Fairytale:backstab +-- ["WHAT?! You're the ones attacking us!"] = "", -- A_Classic_Fairytale:enemy +-- ["When?"] = "", -- A_Classic_Fairytale:enemy +-- ["When I find it..."] = "", -- A_Classic_Fairytale:dragon +-- ["Where are all these crates coming from?!"] = "", -- A_Classic_Fairytale:shadow +-- ["Where are they?!"] = "", -- A_Classic_Fairytale:backstab +-- ["Where did that alien run?"] = "", -- A_Classic_Fairytale:dragon +-- ["Where did you get the exploding apples?"] = "", -- A_Classic_Fairytale:shadow +-- ["Where did you get the exploding apples and the magic bow that shoots many arrows?"] = "", -- A_Classic_Fairytale:shadow +-- ["Where did you get the magic bow that shoots many arrows?"] = "", -- A_Classic_Fairytale:shadow +-- ["Where did you get the weapons in the forest, Dense Cloud?"] = "", -- A_Classic_Fairytale:backstab +-- ["Where do you get that?!"] = "", -- A_Classic_Fairytale:enemy +-- ["Where have you been?!"] = "", -- A_Classic_Fairytale:backstab +-- ["Where have you been?"] = "", -- A_Classic_Fairytale:united +-- ["? Why?"] = "", -- A_Classic_Fairytale:backstab +-- ["Why "] = "", -- A_Classic_Fairytale:backstab +-- ["! Why?!"] = "", -- A_Classic_Fairytale:backstab, A_Classic_Fairytale:united +-- ["Why are you doing this?"] = "", -- A_Classic_Fairytale:journey +-- ["Why are you helping us, uhm...?"] = "", -- A_Classic_Fairytale:family +-- ["Why can't he just let her go?!"] = "", -- A_Classic_Fairytale:family +-- ["Why do men keep hurting me?"] = "", -- A_Classic_Fairytale:first_blood +-- ["Why do you not like me?"] = "", -- A_Classic_Fairytale:shadow +-- ["Why do you want to take over our island?"] = "", -- A_Classic_Fairytale:enemy +-- ["Why me?!"] = "", -- A_Classic_Fairytale:backstab +-- ["Why would they do this?"] = "", -- A_Classic_Fairytale:backstab +-- ["- Will Get 1-3 random weapons"] = "", -- Continental_supplies +-- ["- Will refresh Parachute each turn."] = "", -- Continental_supplies +-- ["- Will refresh portalgun each turn."] = "", -- Continental_supplies ["Will this ever end?"] = "Co to siÄ™ kiedyÅ› skoÅ„czy?", +-- ["WINNER IS "] = "", -- Mutant ["WINNING TIME: "] = "ZWYCIĘSKI CZAS: ", +-- ["Wise Oak"] = "", -- A_Classic_Fairytale:backstab, A_Classic_Fairytale:dragon, A_Classic_Fairytale:enemy, A_Classic_Fairytale:epil, A_Classic_Fairytale:family, A_Classic_Fairytale:queen +-- ["With Dense Cloud on the land of shadows, I'm the village's only hope..."] = "", -- A_Classic_Fairytale:journey +-- ["With the rest of the tribe gone, it was up to "] = "", -- A_Classic_Fairytale:dragon +-- ["Worry not, for it is a peaceful animal! There is no reason to be afraid..."] = "", -- A_Classic_Fairytale:first_blood +-- ["Wow, what a dream!"] = "", -- A_Classic_Fairytale:backstab +-- ["Y3K1337"] = "", -- A_Classic_Fairytale:journey, A_Classic_Fairytale:shadow +-- ["Yay, we won!"] = "", -- A_Classic_Fairytale:enemy +-- ["Y Chwiliad"] = "", -- A_Classic_Fairytale:dragon +-- ["Yeah...I think it's a 'he', lol."] = "", -- A_Classic_Fairytale:shadow +-- ["Yeah, sure! I died. Hillarious!"] = "", -- A_Classic_Fairytale:backstab +-- ["Yeah, take that!"] = "", -- A_Classic_Fairytale:dragon +-- ["Yeah? Watcha gonna do? Cry?"] = "", -- A_Classic_Fairytale:journey +-- ["Yes!"] = "", -- A_Classic_Fairytale:enemy +-- ["Yes, yeees! You are now ready to enter the real world!"] = "", -- A_Classic_Fairytale:first_blood +-- ["Yo, dude, we're here, too!"] = "", -- A_Classic_Fairytale:family +-- ["You are given the chance to turn your life around..."] = "", -- A_Classic_Fairytale:shadow +-- ["You are playing with our lives here!"] = "", -- A_Classic_Fairytale:enemy +-- ["! You bastards!"] = "", -- A_Classic_Fairytale:backstab, A_Classic_Fairytale:united +-- ["You bear impressive skills, "] = "", -- A_Classic_Fairytale:dragon +-- ["You can't fire a portal on the blue surface"] = "", -- portal +-- ["You couldn't possibly believe that after refusing my offer I'd just let you go!"] = "", -- A_Classic_Fairytale:journey ["You'd almost swear the water was rising!"] = "PrzysiÄ…gÅ‚bym, że woda zdaje siÄ™ podnosić!", +-- ["You'd better watch your steps..."] = "", -- A_Classic_Fairytale:journey +-- ["You did not make it in time, try again!"] = "", -- Basic_Training_-_Rope +-- ["You have 7 turns until the next wave arrives.|Make sure the arriving cannibals are greeted appropriately!|If the hog dies, the cause is lost.|Hint: you might want to use some mines..."] = "", -- A_Classic_Fairytale:backstab +-- ["You have "] = "", -- A_Classic_Fairytale:dragon +-- ["You have been giving us out to the enemy, haven't you!"] = "", -- A_Classic_Fairytale:backstab +-- ["You have been respawned, at your last checkpoint!"] = "", -- Basic_Training_-_Rope +-- ["You have been respawned, be more carefull next time!"] = "", -- Basic_Training_-_Rope +-- ["You have chosen the perfect moment to leave."] = "", -- A_Classic_Fairytale:united +-- ["You have failed to complete your task, young one!"] = "", -- A_Classic_Fairytale:journey +-- ["You have failed to save the tribe!"] = "", -- A_Classic_Fairytale:backstab +-- ["You have finally figured it out!"] = "", -- A_Classic_Fairytale:enemy +-- ["You have kidnapped our whole tribe!"] = "", -- A_Classic_Fairytale:enemy +-- ["You have killed an innocent hedgehog!"] = "", -- A_Classic_Fairytale:backstab +-- ["You have proven yourself worthy to see our most ancient secret!"] = "", -- A_Classic_Fairytale:first_blood +-- ["You have proven yourselves worthy!"] = "", -- A_Classic_Fairytale:enemy ["You have SCORED!!"] = "ZdobyÅ‚eÅ› PUNKT", +-- ["You have to destroy 12 targets in 180 seconds"] = "", -- Basic_Training_-_Cluster_Bomb +-- ["You have won the game by proving true cooperative skills!"] = "", -- A_Classic_Fairytale:enemy +-- ["You just appeared out of thin air!"] = "", -- A_Classic_Fairytale:backstab +-- ["You just committed suicide..."] = "", -- A_Classic_Fairytale:shadow +-- ["You killed my father, you monster!"] = "", -- A_Classic_Fairytale:backstab +-- ["You know...taking a stroll."] = "", -- A_Classic_Fairytale:backstab +-- ["You know what? I don't even regret anything!"] = "", -- A_Classic_Fairytale:backstab +-- ["You'll see what I mean!"] = "", -- A_Classic_Fairytale:enemy +-- ["You may only attack from a rope!"] = "", -- WxW +-- ["You meatbags are pretty slow, you know!"] = "", -- A_Classic_Fairytale:enemy +-- ["You might want to find a way to instantly kill arriving cannibals!"] = "", -- A_Classic_Fairytale:backstab +-- ["Young one, you are telling us that they can instantly change location without a shaman?"] = "", -- A_Classic_Fairytale:united +-- ["You probably know what to do next..."] = "", -- A_Classic_Fairytale:first_blood +-- ["Your deaths will be avenged, cannibals!"] = "", -- A_Classic_Fairytale:enemy +-- ["Your death will not be in vain, Dense Cloud!"] = "", -- A_Classic_Fairytale:shadow +-- ["You're...alive!? But we saw you die!"] = "", -- A_Classic_Fairytale:backstab +-- ["You're a pathetic liar!"] = "", -- A_Classic_Fairytale:backstab +-- ["You're funny!"] = "", -- A_Classic_Fairytale:journey +-- ["You're getting pretty good! |Tip: When you shorten you rope you move faster! |and when you lengthen it you move slower"] = "", -- Basic_Training_-_Rope +-- ["You're pathetic! You are not worthy of my attention..."] = "", -- A_Classic_Fairytale:shadow +-- ["You're probably wondering why I bought you back..."] = "", -- A_Classic_Fairytale:backstab +-- ["You're terrorizing the forest...We won't catch anything like this!"] = "", -- A_Classic_Fairytale:shadow +-- ["Your hogs must survive!"] = "", -- A_Classic_Fairytale:journey +-- ["Your movement skills will be evaluated now."] = "", -- A_Classic_Fairytale:first_blood ["You saved"] = "UratowaÅ‚eÅ›", +-- ["You've been assaulting us, we have been just defending ourselves!"] = "", -- A_Classic_Fairytale:enemy ["You've failed. Try again."] = "PrzegraÅ‚eÅ›. Spróbuj jeszcze raz", ["You've reached the goal!| |Time: "] = "DotarÅ‚eÅ› do celu!| |Czas: ", +-- ["You will be avenged!"] = "", -- A_Classic_Fairytale:shadow +-- ["You won't believe what happened to me!"] = "", -- A_Classic_Fairytale:backstab +-- ["Yuck! I bet they'll keep worshipping her even after I save the village!"] = "", -- A_Classic_Fairytale:family +-- ["Zealandia"] = "", -- Continental_supplies ["'Zooka Team"] = "Bazookinierzy", +-- ["Zork"] = "", -- A_Classic_Fairytale:dragon, A_Classic_Fairytale:family, A_Classic_Fairytale:queen } diff -r 3331b30e4ef1 -r 88fde28bbda6 share/hedgewars/Data/Locale/pl.txt --- a/share/hedgewars/Data/Locale/pl.txt Sun Oct 21 01:28:33 2012 +0400 +++ b/share/hedgewars/Data/Locale/pl.txt Sat Nov 03 00:34:35 2012 +0400 @@ -56,6 +56,8 @@ 00:53=TARDIS 00:54=Budynek 00:55=Miotacz bÅ‚ota +00:56=Zamrażarka +00:57=Tasak 01:00=Walczmy! 01:01=Remis @@ -78,6 +80,7 @@ 01:18=Duże 01:19=Ekstremalne 01:20=%1 odbicie +01:21=DźwiÄ™k wyciszony ; Event messages ; Hog (%1) died diff -r 3331b30e4ef1 -r 88fde28bbda6 share/hedgewars/Data/Locale/pt_BR.lua --- a/share/hedgewars/Data/Locale/pt_BR.lua Sun Oct 21 01:28:33 2012 +0400 +++ b/share/hedgewars/Data/Locale/pt_BR.lua Sat Nov 03 00:34:35 2012 +0400 @@ -2,158 +2,642 @@ -- [":("] = "", -- ["!!!"] = "", -- ["..."] = "", +-- ["011101000"] = "", -- A_Classic_Fairytale:dragon +-- ["011101001"] = "", -- A_Classic_Fairytale:backstab, A_Classic_Fairytale:dragon, A_Classic_Fairytale:enemy, A_Classic_Fairytale:family, A_Classic_Fairytale:journey, A_Classic_Fairytale:queen, A_Classic_Fairytale:shadow, A_Classic_Fairytale:united +-- ["30 minutes later..."] = "", -- A_Classic_Fairytale:shadow +-- ["About a month ago, a cyborg came and told us that you're the cannibals!"] = "", -- A_Classic_Fairytale:enemy -- ["Accuracy Bonus!"] = "", +-- ["Ace"] = "", -- User_Mission_-_RCPlane_Challenge, User_Mission_-_Rope_Knock_Challenge -- ["Achievement Unlocked"] = "", -- User_Mission_-_Bamboo_Thicket, User_Mission_-_That_Sinking_Feeling, Tumbler +-- ["A Classic Fairytale"] = "", -- A_Classic_Fairytale:first_blood +-- ["???"] = "", -- A_Classic_Fairytale:backstab +-- ["Actually, you aren't worthy of life! Take this..."] = "", -- A_Classic_Fairytale:shadow +-- ["A cy-what?"] = "", -- A_Classic_Fairytale:enemy +-- ["Adventurous"] = "", -- A_Classic_Fairytale:journey +-- ["Africa"] = "", -- Continental_supplies +-- ["After Leaks A Lot betrayed his tribe, he joined the cannibals..."] = "", -- A_Classic_Fairytale:first_blood +-- ["After the shock caused by the enemy spy, Leaks A Lot and Dense Cloud went hunting to relax."] = "", -- A_Classic_Fairytale:shadow +-- ["Again with the 'cannibals' thing!"] = "", -- A_Classic_Fairytale:enemy +-- ["a Hedgewars challenge"] = "", -- User_Mission_-_RCPlane_Challenge, User_Mission_-_Rope_Knock_Challenge -- ["a Hedgewars mini-game"] = "", -- Space_Invasion, The_Specialists ["Aiming Practice"] = "Pratique a sua pontaria", --Bazooka, Shotgun, SniperRifle +-- ["A leap in a leap"] = "", -- A_Classic_Fairytale:first_blood +-- ["A little gift from the cyborgs"] = "", -- A_Classic_Fairytale:shadow +-- ["All gone...everything!"] = "", -- A_Classic_Fairytale:enemy +-- ["All right, we just need to get to the other side of the island!"] = "", -- A_Classic_Fairytale:journey +-- ["All walls touched!"] = "", -- WxW -- ["Ammo"] = "", -- ["Ammo Depleted!"] = "", -- ["ammo extended!"] = "", -- ["Ammo is reset at the end of your turn."] = "", -- ["Ammo Maniac!"] = "", +-- ["And how am I alive?!"] = "", -- A_Classic_Fairytale:enemy +-- ["And so happenned that Leaks A Lot failed to complete the challenge! He landed, pressured by shame..."] = "", -- A_Classic_Fairytale:first_blood +-- ["And so it began..."] = "", -- A_Classic_Fairytale:first_blood +-- ["...and so the cyborgs took over the world..."] = "", -- A_Classic_Fairytale:shadow +-- ["And so they discovered that cyborgs weren't invulnerable..."] = "", -- A_Classic_Fairytale:journey +-- ["And where's all the weed?"] = "", -- A_Classic_Fairytale:dragon +-- ["And you believed me? Oh, god, that's cute!"] = "", -- A_Classic_Fairytale:journey +-- ["Anno 1032: [The explosion will make a strong push ~ wide range, wont affect hogs close to the target]"] = "", -- Continental_supplies +-- ["Antarctica"] = "", -- Continental_supplies +-- ["Are we there yet?"] = "", -- A_Classic_Fairytale:shadow +-- ["Are you accusing me of something?"] = "", -- A_Classic_Fairytale:backstab +-- ["Are you saying that many of us have died for your entertainment?"] = "", -- A_Classic_Fairytale:enemy +-- ["Artur Detour"] = "", -- A_Classic_Fairytale:queen +-- ["As a reward for your performance, here's some new technology!"] = "", -- A_Classic_Fairytale:dragon +-- ["a shoppa minigame"] = "", -- WxW +-- ["Asia"] = "", -- Continental_supplies +-- ["Assault Team"] = "", -- A_Classic_Fairytale:backstab +-- ["As the ammo is sparse, you might want to reuse ropes while mid-air.|"] = "", -- A_Classic_Fairytale:dragon +-- ["As the challenge was completed, Leaks A Lot set foot on the ground..."] = "", -- A_Classic_Fairytale:first_blood +-- ["As you can see, there is no way to get on the other side!"] = "", -- A_Classic_Fairytale:dragon +-- ["Attack From Rope"] = "", -- WxW +-- ["Australia"] = "", -- Continental_supplies -- ["Available points remaining: "] = "", +-- ["Back Breaker"] = "", -- A_Classic_Fairytale:backstab +-- ["Back in the village, after telling the villagers about the threat..."] = "", -- A_Classic_Fairytale:united -- ["[Backspace]"] = "", +-- ["Backstab"] = "", -- A_Classic_Fairytale:backstab +-- ["Bad Team"] = "", -- User_Mission_-_The_Great_Escape -- ["Bamboo Thicket"] = "", -- ["Barrel Eater!"] = "", -- ["Barrel Launcher"] = "", +-- ["Baseballbat"] = "", -- Continental_supplies ["Bat balls at your enemies and|push them into the sea!"] = "Rebata as bolas em direção ao seus|e derrube-os no mar!", ["Bat your opponents through the|baskets and out of the map!"] = "Rebata seus oponentes para|fora do mapa através dos cestos!", ["Bazooka Training"] = "Treino com a Bazuca", +-- ["Beep Loopers"] = "", -- A_Classic_Fairytale:queen ["Best laps per team: "] = "Melhor volta por equipe: ", -- ["Best Team Times: "] = "", +-- ["Beware, though! If you are slow, you die!"] = "", -- A_Classic_Fairytale:dragon +-- ["Biomechanic Team"] = "", -- A_Classic_Fairytale:family +-- ["Blender"] = "", -- A_Classic_Fairytale:family +-- ["Bloodpie"] = "", -- A_Classic_Fairytale:backstab +-- ["Bloodrocutor"] = "", -- A_Classic_Fairytale:shadow +-- ["Bloodsucker"] = "", -- A_Classic_Fairytale:shadow -- ["Bloody Rookies"] = "", -- 01#Boot_Camp, User_Mission_-_Dangerous_Ducklings, User_Mission_-_Diver, User_Mission_-_Spooky_Tree +-- ["Bone Jackson"] = "", -- A_Classic_Fairytale:backstab +-- ["Bonely"] = "", -- A_Classic_Fairytale:shadow -- ["Boom!"] = "", -- ["BOOM!"] = "", -- ["Boss defeated!"] = "", -- ["Boss Slayer!"] = "", +-- ["Brain Blower"] = "", -- A_Classic_Fairytale:journey +-- ["Brainiac"] = "", -- A_Classic_Fairytale:epil, A_Classic_Fairytale:first_blood, A_Classic_Fairytale:shadow +-- ["Brainila"] = "", -- A_Classic_Fairytale:united +-- ["Brain Stu"] = "", -- A_Classic_Fairytale:united +-- ["Brain Teaser"] = "", -- A_Classic_Fairytale:backstab +-- ["Brutal Lily"] = "", -- A_Classic_Fairytale:enemy, A_Classic_Fairytale:epil +-- ["Brutus"] = "", -- A_Classic_Fairytale:backstab -- ["Build a track and race."] = "", +-- ["Bullseye"] = "", -- A_Classic_Fairytale:dragon +-- ["But it proved to be no easy task!"] = "", -- A_Classic_Fairytale:dragon +-- ["But that's impossible!"] = "", -- A_Classic_Fairytale:backstab +-- ["But the ones alive are stronger in their heart!"] = "", -- A_Classic_Fairytale:enemy +-- ["But...we died!"] = "", -- A_Classic_Fairytale:backstab +-- ["But where can we go?"] = "", -- A_Classic_Fairytale:united +-- ["But why would they help us?"] = "", -- A_Classic_Fairytale:backstab +-- ["But you're cannibals. It's what you do."] = "", -- A_Classic_Fairytale:enemy +-- ["But you said you'd let her go!"] = "", -- A_Classic_Fairytale:journey +-- ["Call me Beep! Well, 'cause I'm such a nice...person!"] = "", -- A_Classic_Fairytale:family +-- ["Cannibals"] = "", -- A_Classic_Fairytale:enemy, A_Classic_Fairytale:epil, A_Classic_Fairytale:first_blood +-- ["Cannibal Sentry"] = "", -- A_Classic_Fairytale:journey +-- ["Cannibals?! You're the cannibals!"] = "", -- A_Classic_Fairytale:enemy -- ["CAPTURE THE FLAG"] = "", -- ["Careless"] = "", +-- ["Carol"] = "", -- A_Classic_Fairytale:family +-- ["CHALLENGE COMPLETE"] = "", -- User_Mission_-_RCPlane_Challenge -- ["Change Weapon"] = "", +-- ["Choose your side! If you want to join the strange man, walk up to him.|Otherwise, walk away from him. If you decide to att...nevermind..."] = "", -- A_Classic_Fairytale:shadow -- ["Clumsy"] = "", +-- ["Cluster Bomb MASTER!"] = "", -- Basic_Training_-_Cluster_Bomb +-- ["Cluster Bomb Training"] = "", -- Basic_Training_-_Cluster_Bomb -- ["Codename: Teamwork"] = "", +-- ["Collateral Damage"] = "", -- A_Classic_Fairytale:journey +-- ["Collateral Damage II"] = "", -- A_Classic_Fairytale:journey +-- ["Collect all the crates, but remember, our time in this life is limited!"] = "", -- A_Classic_Fairytale:first_blood +-- ["Collect or destroy all the health crates."] = "", -- User_Mission_-_RCPlane_Challenge +-- ["Collect the crate on the right.|Hint: Select the rope, [Up] or [Down] to aim, [Space] to fire, directional keys to move.|Ropes can be fired again in the air!"] = "", -- A_Classic_Fairytale:first_blood +-- ["Collect the crates within the time limit!|If you fail, you'll have to try again."] = "", -- A_Classic_Fairytale:first_blood +-- ["Come closer, so that your training may continue!"] = "", -- A_Classic_Fairytale:first_blood +-- ["Compete to use as few planes as possible!"] = "", -- User_Mission_-_RCPlane_Challenge -- ["Complete the track as fast as you can!"] = "", +-- ["COMPLETION TIME"] = "", -- User_Mission_-_Rope_Knock_Challenge +-- ["Configuration accepted."] = "", -- WxW -- ["Congratulations!"] = "", +-- ["Congratulations"] = "", -- Basic_Training_-_Rope +-- ["Congratulations! You needed only half of time|to eliminate all targets."] = "", -- Basic_Training_-_Cluster_Bomb +-- ["Congratulations! You've completed the Rope tutorial! |- Tutorial ends in 10 seconds!"] = "", -- Basic_Training_-_Rope ["Congratulations! You've eliminated all targets|within the allowed time frame."] = "Parabéns! Você eliminou todos os alvos|dentro do tempo limite.", --Bazooka, Shotgun, SniperRifle +-- ["Continental supplies"] = "", -- Continental_supplies -- ["Control pillars to score points."] = "", +-- ["Corporationals"] = "", -- A_Classic_Fairytale:queen +-- ["Corpsemonger"] = "", -- A_Classic_Fairytale:shadow +-- ["Corpse Thrower"] = "", -- A_Classic_Fairytale:epil +-- ["Crates Left:"] = "", -- User_Mission_-_RCPlane_Challenge -- ["Cybernetic Empire"] = "", +-- ["Cyborg. It's what the aliens call themselves."] = "", -- A_Classic_Fairytale:enemy +-- ["Dahmer"] = "", -- A_Classic_Fairytale:backstab -- ["DAMMIT, ROOKIE!"] = "", -- ["DAMMIT, ROOKIE! GET OFF MY HEAD!"] = "", -- ["Dangerous Ducklings"] = "", -- ["Deadweight"] = "", +-- ["Defeat the cannibals"] = "", -- A_Classic_Fairytale:backstab +-- ["Defeat the cannibals!|"] = "", -- A_Classic_Fairytale:united +-- ["Defeat the cannibals!|Grenade hint: set the timer with [1-5], aim with [Up]/[Down] and hold [Space] to set power"] = "", -- A_Classic_Fairytale:shadow +-- ["Defeat the cyborgs!"] = "", -- A_Classic_Fairytale:enemy +-- ["Defend yourself!|Hint: You can get tips on using weapons by moving your mouse over them in the weapon selection menu"] = "", -- A_Classic_Fairytale:shadow -- ["Demolition is fun!"] = "", +-- ["Dense Cloud"] = "", -- A_Classic_Fairytale:backstab, A_Classic_Fairytale:dragon, A_Classic_Fairytale:enemy, A_Classic_Fairytale:epil, A_Classic_Fairytale:family, A_Classic_Fairytale:journey, A_Classic_Fairytale:queen, A_Classic_Fairytale:shadow, A_Classic_Fairytale:united +-- ["Dense Cloud must have already told them everything..."] = "", -- A_Classic_Fairytale:shadow -- ["Depleted Kamikaze!"] = "", +-- ["Destroy him, Leaks A Lot! He is responsible for the deaths of many of us!"] = "", -- A_Classic_Fairytale:first_blood -- ["Destroy invaders to score points."] = "", +-- ["Destroy the targets!|Hint: Select the Shoryuken and hit [Space]|P.S. You can use it mid-air."] = "", -- A_Classic_Fairytale:first_blood +-- ["Destroy the targets!|Hint: [Up], [Down] to aim, [Space] to shoot"] = "", -- A_Classic_Fairytale:first_blood +-- ["Did anyone follow you?"] = "", -- A_Classic_Fairytale:united +-- ["Did you see him coming?"] = "", -- A_Classic_Fairytale:shadow +-- ["Did you warn the village?"] = "", -- A_Classic_Fairytale:shadow +-- ["Die, die, die!"] = "", -- A_Classic_Fairytale:dragon +-- ["Disguise as a Rockhopper Penguin: [Swap place with a random enemy hog in the circle]"] = "", -- Continental_supplies +-- ["Dist: "] = "", -- Space_Invasion +-- ["Do not laugh, inexperienced one, for he speaks the truth!"] = "", -- A_Classic_Fairytale:backstab +-- ["Do not let his words fool you, young one! He will stab you in the back as soon as you turn away!"] = "", -- A_Classic_Fairytale:first_blood +-- ["Do the deed"] = "", -- A_Classic_Fairytale:first_blood -- ["Double Kill!"] = "", +-- ["DOUBLE KILL"] = "", -- Mutant +-- ["Do you have any idea how valuable grass is?"] = "", -- A_Classic_Fairytale:enemy +-- ["Do you think you're some kind of god?"] = "", -- A_Classic_Fairytale:enemy +-- ["Dragon's Lair"] = "", -- A_Classic_Fairytale:dragon +-- ["Drills"] = "", -- A_Classic_Fairytale:backstab -- ["Drone Hunter!"] = "", +-- ["Drop a bomb: [drop some heroic wind that will turn into a bomb on impact]"] = "", -- Continental_supplies -- ["Drowner"] = "", +-- ["Dude, all the plants are gone!"] = "", -- A_Classic_Fairytale:family +-- ["Dude, can you see Ramon and Spiky?"] = "", -- A_Classic_Fairytale:journey +-- ["Dude, that's so cool!"] = "", -- A_Classic_Fairytale:backstab +-- ["Dude, we really need a new shaman..."] = "", -- A_Classic_Fairytale:shadow +-- ["Dude, what's this place?!"] = "", -- A_Classic_Fairytale:dragon +-- ["Dude, where are we?"] = "", -- A_Classic_Fairytale:backstab +-- ["Dude, wow! I just had the weirdest high!"] = "", -- A_Classic_Fairytale:backstab +-- ["Duration"] = "", -- Continental_supplies +-- ["Dust storm: [Deals 20 damage to all enemies in the circle]"] = "", -- Continental_supplies -- ["Each turn you get 1-3 random weapons"] = "", -- ["Each turn you get one random weapon"] = "", +-- ["Eagle Eye"] = "", -- A_Classic_Fairytale:backstab +-- ["Eagle Eye: [Blink to the impact ~ one shot]"] = "", -- Continental_supplies +-- ["Ear Sniffer"] = "", -- A_Classic_Fairytale:backstab, A_Classic_Fairytale:epil +-- ["Elderbot"] = "", -- A_Classic_Fairytale:family +-- ["Elimate your captor."] = "", -- User_Mission_-_The_Great_Escape -- ["Eliminate all enemies"] = "", ["Eliminate all targets before your time runs out.|You have unlimited ammo for this mission."] = "Destrua todos os alvos antes que o tempo acabe.|Você tem munição infinita para esta missão.", --Bazooka, Shotgun, SniperRifle +-- ["Eliminate enemy hogs and take their weapons."] = "", -- Highlander -- ["Eliminate Poison before the time runs out"] = "", -- ["Eliminate the Blue Team"] = "", -- ["Eliminate the enemy before the time runs out"] = "", -- User_Mission_-_Bamboo_Thicket, User_Mission_-_Newton_and_the_Hammock -- ["Eliminate the enemy hogs to win."] = "", -- ["Eliminate the enemy specialists."] = "", -- ["- Eliminate Unit 3378 |- Feeble Resistance must survive"] = "", +-- ["Elmo"] = "", -- A_Classic_Fairytale:dragon, A_Classic_Fairytale:family, A_Classic_Fairytale:queen -- ["Energetic Engineer"] = "", -- ["Enjoy the swim..."] = "", -- ["[Enter]"] = "", +-- ["Europe"] = "", -- Continental_supplies +-- [" ever done to you?!"] = "", -- A_Classic_Fairytale:backstab +-- ["Everyone knows this."] = "", -- A_Classic_Fairytale:enemy +-- ["Every single time!"] = "", -- A_Classic_Fairytale:dragon +-- ["Everything looks OK..."] = "", -- A_Classic_Fairytale:enemy +-- ["Exactly, man! That was my dream."] = "", -- A_Classic_Fairytale:backstab +-- ["Eye Chewer"] = "", -- A_Classic_Fairytale:journey +-- ["FAG"] = "", -- Mutant +-- ["Family Reunion"] = "", -- A_Classic_Fairytale:family ["Fastest lap: "] = "Volta mais rápida: ", -- ["Feeble Resistance"] = "", +-- ["Fell From Grace"] = "", -- A_Classic_Fairytale:backstab, A_Classic_Fairytale:dragon, A_Classic_Fairytale:enemy, A_Classic_Fairytale:epil, A_Classic_Fairytale:family, A_Classic_Fairytale:queen +-- ["Fell From Heaven"] = "", -- A_Classic_Fairytale:enemy, A_Classic_Fairytale:epil, A_Classic_Fairytale:family, A_Classic_Fairytale:first_blood, A_Classic_Fairytale:journey, A_Classic_Fairytale:queen +-- ["Fell From Heaven is the best! Fell From Heaven is the greatest!"] = "", -- A_Classic_Fairytale:family +-- ["Femur Lover"] = "", -- A_Classic_Fairytale:shadow +-- ["Fierce Competition!"] = "", -- Space_Invasion +-- ["Fiery Water"] = "", -- A_Classic_Fairytale:backstab, A_Classic_Fairytale:dragon, A_Classic_Fairytale:enemy, A_Classic_Fairytale:epil, A_Classic_Fairytale:family, A_Classic_Fairytale:queen, A_Classic_Fairytale:united +-- ["Find your tribe!|Cross the lake!"] = "", -- A_Classic_Fairytale:dragon +-- ["Finish your training|Hint: Animations can be skipped with the [Precise] key."] = "", -- A_Classic_Fairytale:first_blood -- ["Fire"] = "", +-- ["Fire a mine: [Does what it says ~ Cant be dropped close to an enemy ~ 1 sec]"] = "", -- Continental_supplies +-- ["First aid kits?!"] = "", -- A_Classic_Fairytale:united +-- ["First Blood"] = "", -- A_Classic_Fairytale:first_blood +-- ["FIRST BLOOD MUTATES"] = "", -- Mutant +-- ["First Steps"] = "", -- A_Classic_Fairytale:first_blood -- ["Flag captured!"] = "", -- ["Flag respawned!"] = "", -- ["Flag returned!"] = "", -- ["Flags, and their home base will be placed where each team ends their first turn."] = "", -- ["Flamer"] = "", +-- ["Flaming Worm"] = "", -- A_Classic_Fairytale:backstab +-- ["Flare: [fire up some bombs depending on hogs depending on hogs in the circle"] = "", -- Continental_supplies +-- ["Flesh for Brainz"] = "", -- A_Classic_Fairytale:journey +-- ["For improved features/stability, play 0.9.18+"] = "", -- WxW +-- ["Free Dense Cloud and continue the mission!"] = "", -- A_Classic_Fairytale:journey -- ["Friendly Fire!"] = "", -- ["fuel extended!"] = "", -- ["GAME BEGUN!!!"] = "", -- ["Game Modifiers: "] = "", -- ["GAME OVER!"] = "", -- ["Game Started!"] = "", +-- ["Game? Was this a game to you?!"] = "", -- A_Classic_Fairytale:enemy +-- ["GasBomb"] = "", -- Continental_supplies +-- ["Gas Gargler"] = "", -- A_Classic_Fairytale:queen +-- ["Get Dense Cloud out of the pit!"] = "", -- A_Classic_Fairytale:journey -- ["Get on over there and take him out!"] = "", +-- ["Get on the head of the mole"] = "", -- A_Classic_Fairytale:first_blood +-- ["Get out of there!"] = "", -- User_Mission_-_The_Great_Escape +-- ["Get that crate!"] = "", -- A_Classic_Fairytale:first_blood +-- ["Get the crate on the other side of the island!|"] = "", -- A_Classic_Fairytale:journey +-- ["Get to the target using your rope! |Controls: Left & Right to swing the rope - Up & Down to Contract and Expand!"] = "", -- Basic_Training_-_Rope +-- ["Get your teammates out of their natural prison and save the princess!|Hint: Drilling holes should solve everything.|Hint: It might be a good idea to place a girder before starting to drill. Just saying.|Hint: All your hedgehogs need to be above the marked height!|Hint: Leaks A Lot needs to get really close to the princess!"] = "", -- A_Classic_Fairytale:family +-- ["GG!"] = "", -- User_Mission_-_Rope_Knock_Challenge +-- ["Gimme Bones"] = "", -- A_Classic_Fairytale:backstab +-- ["Glark"] = "", -- A_Classic_Fairytale:shadow -- ["Goal"] = "", -- ["GO! GO! GO!"] = "", -- ["Good birdy......"] = "", +-- ["Good Dude"] = "", -- User_Mission_-_The_Great_Escape +-- ["Good idea, they'll never find us there!"] = "", -- A_Classic_Fairytale:united +-- ["Good luck...or else!"] = "", -- A_Classic_Fairytale:journey -- ["Good luck out there!"] = "", -- ["Good so far!"] = "", -- ["Good to go!"] = "", +-- ["Go on top of the flower"] = "", -- A_Classic_Fairytale:first_blood +-- ["Go, quick!"] = "", -- A_Classic_Fairytale:backstab +-- ["Gorkij"] = "", -- A_Classic_Fairytale:journey +-- ["Go surf!"] = "", -- WxW -- ["GOTCHA!"] = "", -- ["Grab Mines/Explosives"] = "", +-- ["Great choice, Steve! Mind if I call you that?"] = "", -- A_Classic_Fairytale:shadow +-- ["Great work! Now hit it with your Baseball Bat! |Tip: You can change weapon with 'Right Click'!"] = "", -- Basic_Training_-_Rope +-- ["Great! You will be contacted soon for assistance."] = "", -- A_Classic_Fairytale:shadow +-- ["Green lipstick bullet: [Is poisonous]"] = "", -- Continental_supplies +-- ["Greetings, "] = "", -- A_Classic_Fairytale:dragon +-- ["Greetings, cloudy one!"] = "", -- A_Classic_Fairytale:shadow +-- ["Grenade Training"] = "", -- Basic_Training_-_Grenade +-- ["Grenadiers"] = "", -- Basic_Training_-_Grenade +-- ["Guys, do you think there's more of them?"] = "", -- A_Classic_Fairytale:backstab +-- ["HAHA!"] = "", -- A_Classic_Fairytale:enemy +-- ["Haha!"] = "", -- A_Classic_Fairytale:united -- ["Hahahaha!"] = "", -- ["Haha, now THAT would be something!"] = "", +-- ["Hannibal"] = "", -- A_Classic_Fairytale:epil -- ["Hapless Hogs"] = "", -- [" Hapless Hogs left!"] = "", +-- [" HAS MUTATED\" )"] = "", -- +-- ["Hatless Jerry"] = "", -- A_Classic_Fairytale:queen +-- ["Have no illusions, your tribe is dead, indifferent of your choice."] = "", -- A_Classic_Fairytale:shadow +-- ["Have we ever attacked you first?"] = "", -- A_Classic_Fairytale:enemy -- ["Health crates extend your time."] = "", -- ["Heavy"] = "", +-- ["Heavy Cannfantry"] = "", -- A_Classic_Fairytale:united +-- ["Hedge-cogs"] = "", -- A_Classic_Fairytale:enemy +-- ["Hedgehog projectile: [fire your hog like a Sticky Bomb]"] = "", -- Continental_supplies ["Hedgewars-Basketball"] = "Hedgewars-Basketball", ["Hedgewars-Knockball"] = "Hedgewars-Knockball", +-- ["Hedgibal Lecter"] = "", -- A_Classic_Fairytale:backstab -- ["Heh, it's not that bad."] = "", +-- ["Hello again, "] = "", -- A_Classic_Fairytale:family +-- ["Help me, Leaks!"] = "", -- A_Classic_Fairytale:journey +-- ["Help me, please!!!"] = "", -- A_Classic_Fairytale:journey +-- ["Help me, please!"] = "", -- A_Classic_Fairytale:journey +-- ["He moves like an eagle in the sky."] = "", -- A_Classic_Fairytale:first_blood +-- ["He must be in the village already."] = "", -- A_Classic_Fairytale:journey +-- ["Here, let me help you!"] = "", -- A_Classic_Fairytale:backstab +-- ["Here, let me help you save her!"] = "", -- A_Classic_Fairytale:family +-- ["Here...pick your weapon!"] = "", -- A_Classic_Fairytale:first_blood +-- ["Hero Team"] = "", -- User_Mission_-_The_Great_Escape +-- ["He's so brave..."] = "", -- A_Classic_Fairytale:first_blood +-- ["He won't be selling us out anymore!"] = "", -- A_Classic_Fairytale:backstab +-- ["Hey, guys!"] = "", -- A_Classic_Fairytale:backstab +-- ["Hey guys!"] = "", -- A_Classic_Fairytale:united +-- ["Hey! This is cheating!"] = "", -- A_Classic_Fairytale:journey +-- ["HIGHLANDER"] = "", -- Highlander +-- ["Hightime"] = "", -- A_Classic_Fairytale:first_blood +-- ["Hint: Double Jump - Press [Backspace] twice"] = "", -- A_Classic_Fairytale:first_blood +-- ["Hint: Select the BlowTorch, aim and press [Fire]. Press [Fire] again to stop.|Don't blow up the crate."] = "", -- A_Classic_Fairytale:journey +-- ["Hint: Select the LowGravity and press [Fire]."] = "", -- A_Classic_Fairytale:journey +-- ["Hint: you might want to stay out of sight and take all the crates...|"] = "", -- A_Classic_Fairytale:journey +-- ["His arms are so strong!"] = "", -- A_Classic_Fairytale:first_blood -- ["Hit Combo!"] = "", -- ["Hmmm..."] = "", +-- ["Hmmm...actually...I didn't either."] = "", -- A_Classic_Fairytale:enemy +-- ["Hmmm, I'll have to find some way of moving him off this anti-portal surface..."] = "", -- portal +-- ["Hmmm...it's a draw. How unfortunate!"] = "", -- A_Classic_Fairytale:enemy +-- ["Hmmm...perhaps a little more time will help."] = "", -- A_Classic_Fairytale:first_blood +-- ["Hogminator"] = "", -- A_Classic_Fairytale:family +-- ["Hogs in sight!"] = "", -- Continental_supplies +-- ["HOLY SHIT!"] = "", -- Mutant +-- ["Honest Lee"] = "", -- A_Classic_Fairytale:enemy -- ["Hooray!"] = "", +-- ["Hostage Situation"] = "", -- A_Classic_Fairytale:family +-- ["How can I ever repay you for saving my life?"] = "", -- A_Classic_Fairytale:journey +-- ["How come in a village full of warriors, it's up to me to save it?"] = "", -- A_Classic_Fairytale:dragon +-- ["How difficult would you like it to be?"] = "", -- A_Classic_Fairytale:first_blood +-- ["HOW DO THEY KNOW WHERE WE ARE???"] = "", -- A_Classic_Fairytale:united +-- ["However, if you fail to do so, she dies a most violent death, just like your friend! Muahahaha!"] = "", -- A_Classic_Fairytale:journey +-- ["However, if you fail to do so, she dies a most violent death! Muahahaha!"] = "", -- A_Classic_Fairytale:journey +-- ["However, my mates don't agree with me on letting you go..."] = "", -- A_Classic_Fairytale:dragon +-- [" HP"] = "", -- Mutant ["Hunter"] = "Artilheiro", --Bazooka, Shotgun, SniperRifle +-- ["I believe there's more of them."] = "", -- A_Classic_Fairytale:backstab +-- ["I can see you have been training diligently."] = "", -- A_Classic_Fairytale:first_blood +-- ["I can't believe it worked!"] = "", -- A_Classic_Fairytale:shadow +-- ["I can't believe this!"] = "", -- A_Classic_Fairytale:enemy +-- ["I can't believe what I'm hearing!"] = "", -- A_Classic_Fairytale:backstab +-- ["I can't wait any more, I have to save myself!"] = "", -- A_Classic_Fairytale:shadow +-- ["I could just teleport myself there..."] = "", -- A_Classic_Fairytale:family +-- ["I'd better get going myself."] = "", -- A_Classic_Fairytale:journey +-- ["I didn't until about a month ago."] = "", -- A_Classic_Fairytale:enemy +-- ["I don't know how you did that.. But good work! |The next one should be easy as cake for you!"] = "", -- Basic_Training_-_Rope +-- ["I feel something...a place! They will arrive near the circles!"] = "", -- A_Classic_Fairytale:backstab +-- ["If only I had a way..."] = "", -- A_Classic_Fairytale:backstab +-- ["If only I were given a chance to explain my being here..."] = "", -- A_Classic_Fairytale:first_blood +-- ["I forgot that she's the daughter of the chief, too..."] = "", -- A_Classic_Fairytale:backstab +-- ["If they try coming here, they can have a taste of my delicious knuckles!"] = "", -- A_Classic_Fairytale:united +-- ["If you agree to provide the information we need, you will be spared!"] = "", -- A_Classic_Fairytale:shadow +-- ["If you can get that crate fast enough, your beloved \"princess\" may go free."] = "", -- A_Classic_Fairytale:journey +-- ["If you decide to help us, though, we will no longer need to find a new governor for the island."] = "", -- A_Classic_Fairytale:shadow +-- ["If you get stuck, use your Desert Eagle or restart the mission!|"] = "", -- A_Classic_Fairytale:journey +-- ["If you know what I mean..."] = "", -- A_Classic_Fairytale:shadow +-- ["If you say so..."] = "", -- A_Classic_Fairytale:shadow +-- ["If you wish to restart the course, hold [Precise] while your turn ends (e.g with Skip)"] = "", -- +-- ["I guess you'll have to kill them."] = "", -- A_Classic_Fairytale:dragon +-- ["I have come to make you an offering..."] = "", -- A_Classic_Fairytale:shadow +-- ["I have no idea where that mole disappeared...Can you see it?"] = "", -- A_Classic_Fairytale:shadow +-- ["I have to follow that alien."] = "", -- A_Classic_Fairytale:backstab +-- ["I have to get back to the village!"] = "", -- A_Classic_Fairytale:shadow +-- ["I hope you are prepared for a small challenge, young one."] = "", -- A_Classic_Fairytale:first_blood +-- ["I just don't want to sink to your level."] = "", -- A_Classic_Fairytale:backstab +-- ["I just found out that they have captured your princess!"] = "", -- A_Classic_Fairytale:family +-- ["I just wonder where Ramon and Spiky disappeared..."] = "", -- A_Classic_Fairytale:journey +-- ["I'll hold them off while you return to the village!"] = "", -- A_Classic_Fairytale:shadow +-- ["Imagine those targets are the wolves that killed your parents! Take your anger out on them!"] = "", -- A_Classic_Fairytale:first_blood +-- ["I'm...alive? How? Why?"] = "", -- A_Classic_Fairytale:backstab +-- ["I'm a ninja."] = "", -- A_Classic_Fairytale:dragon +-- ["I marked the place of their arrival. You're welcome!"] = "", -- A_Classic_Fairytale:backstab +-- ["I'm certain that this is a misunderstanding, fellow hedgehogs!"] = "", -- A_Classic_Fairytale:first_blood +-- ["I mean, none of you ceased to live."] = "", -- A_Classic_Fairytale:enemy +-- ["I'm getting old for this!"] = "", -- A_Classic_Fairytale:family +-- ["I'm getting thirsty..."] = "", -- A_Classic_Fairytale:family +-- ["I'm here to help you rescue her."] = "", -- A_Classic_Fairytale:family +-- ["I'm not sure about that!"] = "", -- A_Classic_Fairytale:united +-- ["Impressive...you are still dry as the corpse of a hawk after a week in the desert..."] = "", -- A_Classic_Fairytale:first_blood +-- ["I'm so scared!"] = "", -- A_Classic_Fairytale:united +-- ["Incredible..."] = "", -- A_Classic_Fairytale:shadow +-- ["I need to find the others!"] = "", -- A_Classic_Fairytale:backstab +-- ["I need to get to the other side of this island, fast!"] = "", -- A_Classic_Fairytale:journey +-- ["I need to move the tribe!"] = "", -- A_Classic_Fairytale:united +-- ["I need to prevent their arrival!"] = "", -- A_Classic_Fairytale:backstab +-- ["I need to warn the others."] = "", -- A_Classic_Fairytale:backstab +-- ["In fact, you are the only one that's been acting strangely."] = "", -- A_Classic_Fairytale:backstab +-- ["In order to get to the other side, you need to collect the crates first.|"] = "", -- A_Classic_Fairytale:dragon -- ["Instructor"] = "", -- 01#Boot_Camp, User_Mission_-_Dangerous_Ducklings +-- ["Interesting idea, haha!"] = "", -- A_Classic_Fairytale:enemy +-- ["Interesting! Last time you said you killed a cannibal!"] = "", -- A_Classic_Fairytale:backstab +-- ["In the meantime, take these and return to your \"friend\"!"] = "", -- A_Classic_Fairytale:shadow -- ["invaders destroyed"] = "", +-- ["Invasion"] = "", -- A_Classic_Fairytale:united +-- ["I saw it with my own eyes!"] = "", -- A_Classic_Fairytale:shadow +-- ["I see..."] = "", -- A_Classic_Fairytale:shadow +-- ["I see you have already taken the leap of faith."] = "", -- A_Classic_Fairytale:first_blood +-- ["I see you would like his punishment to be more...personal..."] = "", -- A_Classic_Fairytale:first_blood +-- ["I sense another wave of cannibals heading my way!"] = "", -- A_Classic_Fairytale:backstab +-- ["I sense another wave of cannibals heading our way!"] = "", -- A_Classic_Fairytale:backstab +-- ["I shouldn't have drunk that last pint."] = "", -- A_Classic_Fairytale:dragon +-- ["Is this place in my head?"] = "", -- A_Classic_Fairytale:dragon +-- ["It doesn't matter. I won't let that alien hurt my daughter!"] = "", -- A_Classic_Fairytale:dragon +-- ["I think we are safe here."] = "", -- A_Classic_Fairytale:backstab +-- ["I thought their shaman died when he tried our medicine!"] = "", -- A_Classic_Fairytale:shadow +-- ["It is called 'Hogs of Steel'."] = "", -- A_Classic_Fairytale:enemy +-- ["It is time to practice your fighting skills."] = "", -- A_Classic_Fairytale:first_blood +-- ["It must be a childhood trauma..."] = "", -- A_Classic_Fairytale:family +-- ["It must be the aliens!"] = "", -- A_Classic_Fairytale:backstab +-- ["It must be the aliens' deed."] = "", -- A_Classic_Fairytale:backstab +-- ["It must be the cyborgs again!"] = "", -- A_Classic_Fairytale:enemy +-- ["I told you, I just found them."] = "", -- A_Classic_Fairytale:backstab -- ["It's a good thing SUDDEN DEATH is 99 turns away..."] = "", +-- ["It's always up to women to clear up the mess men created!"] = "", -- A_Classic_Fairytale:dragon +-- ["It's a shame, I forgot how to do that!"] = "", -- A_Classic_Fairytale:family +-- ["It's impossible to communicate with the spirits without a shaman."] = "", -- A_Classic_Fairytale:shadow +-- ["It's over..."] = "", -- A_Classic_Fairytale:shadow +-- ["It's time you learned that your actions have consequences!"] = "", -- A_Classic_Fairytale:journey +-- ["It's worth more than wood!"] = "", -- A_Classic_Fairytale:enemy +-- ["It wants our brains!"] = "", -- A_Classic_Fairytale:shadow +-- ["It was not a dream, unwise one!"] = "", -- A_Classic_Fairytale:backstab +-- ["I've seen this before. They just appear out of thin air."] = "", -- A_Classic_Fairytale:united +-- ["I want to play a game..."] = "", -- A_Classic_Fairytale:journey +-- ["I want to see how it handles this!"] = "", -- A_Classic_Fairytale:backstab +-- ["I wish to help you, "] = "", -- A_Classic_Fairytale:dragon +-- ["I wonder where Dense Cloud is..."] = "", -- A_Classic_Fairytale:journey, A_Classic_Fairytale:shadow +-- ["I wonder why I'm so angry all the time..."] = "", -- A_Classic_Fairytale:family +-- ["I won't let you kill her!"] = "", -- A_Classic_Fairytale:journey +-- ["Jack"] = "", -- A_Classic_Fairytale:dragon, A_Classic_Fairytale:family, A_Classic_Fairytale:queen +-- ["Jeremiah"] = "", -- A_Classic_Fairytale:dragon +-- ["John"] = "", -- A_Classic_Fairytale:journey +-- ["Judas"] = "", -- A_Classic_Fairytale:backstab -- ["Jumping is disabled"] = "", +-- ["Just kidding, none of you have died!"] = "", -- A_Classic_Fairytale:enemy +-- ["Just on a walk."] = "", -- A_Classic_Fairytale:united +-- ["Just wait till I get my hands on that trauma! ARGH!"] = "", -- A_Classic_Fairytale:family -- ["Kamikaze Expert!"] = "", -- ["Keep it up!"] = "", +-- ["Kerguelen"] = "", -- Continental_supplies -- ["Killing spree!"] = "", +-- ["KILL IT!"] = "", -- A_Classic_Fairytale:first_blood -- ["KILLS"] = "", +-- ["Kill the aliens!"] = "", -- A_Classic_Fairytale:dragon +-- ["Kill the cannibal!"] = "", -- A_Classic_Fairytale:first_blood +-- ["Kill the traitor...or spare his life!|Kill him or press [Precise]!"] = "", -- A_Classic_Fairytale:backstab -- ["Last Target!"] = "", +-- ["Leader"] = "", -- A_Classic_Fairytale:enemy +-- ["Leaderbot"] = "", -- A_Classic_Fairytale:queen +-- ["Leaks A Lot"] = "", -- A_Classic_Fairytale:backstab, A_Classic_Fairytale:dragon, A_Classic_Fairytale:enemy, A_Classic_Fairytale:epil, A_Classic_Fairytale:family, A_Classic_Fairytale:first_blood, A_Classic_Fairytale:journey, A_Classic_Fairytale:queen, A_Classic_Fairytale:shadow, A_Classic_Fairytale:united +-- ["Leaks A Lot, depressed for killing his loved one, failed to save the village..."] = "", -- A_Classic_Fairytale:journey +-- ["Leaks A Lot gave his life for his tribe! He should have survived!"] = "", -- A_Classic_Fairytale:first_blood +-- ["Leaks A Lot must survive!"] = "", -- A_Classic_Fairytale:journey +-- ["Led Heart"] = "", -- A_Classic_Fairytale:queen +-- ["Lee"] = "", -- A_Classic_Fairytale:dragon, A_Classic_Fairytale:family, A_Classic_Fairytale:queen -- ["[Left Shift]"] = "", +-- ["Let a Continent provide your weapons!"] = "", -- Continental_supplies +-- ["Let me test your skills a little, will you?"] = "", -- A_Classic_Fairytale:journey +-- ["Let's go home!"] = "", -- A_Classic_Fairytale:journey +-- ["Let's head back to the village!"] = "", -- A_Classic_Fairytale:shadow +-- ["Let's see what your comrade does now!"] = "", -- A_Classic_Fairytale:journey +-- ["Let's show those cannibals what we're made of!"] = "", -- A_Classic_Fairytale:backstab +-- ["Let them have a taste of my fury!"] = "", -- A_Classic_Fairytale:backstab +-- ["Let us help, too!"] = "", -- A_Classic_Fairytale:backstab +-- ["Light Cannfantry"] = "", -- A_Classic_Fairytale:united -- ["Listen up, maggot!!"] = "", +-- ["Little did they know that this hunt will mark them forever..."] = "", -- A_Classic_Fairytale:shadow -- ["Lively Lifeguard"] = "", +-- ["Lonely Cries: [Rise the water if no hog is in the circle and deal 1 damage to all hogs]"] = "", -- Continental_supplies +-- ["Look, I had no choice!"] = "", -- A_Classic_Fairytale:backstab +-- ["Look out! There's more of them!"] = "", -- A_Classic_Fairytale:backstab +-- ["Look out! We're surrounded by cannibals!"] = "", -- A_Classic_Fairytale:enemy +-- ["Looks like the whole world is falling apart!"] = "", -- A_Classic_Fairytale:enemy +-- ["Luckily, I've managed to snatch some of them."] = "", -- A_Classic_Fairytale:united +-- ["LUDICROUS KILL"] = "", -- Mutant +-- ["May the spirits aid you in all your quests!"] = "", -- A_Classic_Fairytale:backstab +-- ["Medicine: [Fire some exploding medicine that will heal all hogs effected by the explosion]"] = "", -- Continental_supplies +-- ["MEGA KILL"] = "", -- Mutant +-- ["Meiwes"] = "", -- A_Classic_Fairytale:backstab +-- ["Mindy"] = "", -- A_Classic_Fairytale:united -- ["Mine Deployer"] = "", -- ["Mine Eater!"] = "", -- ["|- 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 SUCCESS"] = "", -- ["MISSION SUCCESSFUL"] = "", -- User_Mission_-_Diver, User_Mission_-_Spooky_Tree, User_Mission_-_Teamwork +-- ["Molotov"] = "", -- Continental_supplies +-- ["MONSTER KILL"] = "", -- Mutant +-- ["More Natives"] = "", -- A_Classic_Fairytale:epil -- ["Movement: [Up], [Down], [Left], [Right]"] = "", -- ["Multi-shot!"] = "", +-- ["Muriel"] = "", -- A_Classic_Fairytale:backstab, A_Classic_Fairytale:dragon, A_Classic_Fairytale:family, A_Classic_Fairytale:queen +-- ["Muscle Dissolver"] = "", -- A_Classic_Fairytale:shadow +-- ["-------"] = "", -- Mutant +-- ["Nade Boy"] = "", -- Basic_Training_-_Grenade +-- ["Name"] = "", -- A_Classic_Fairytale:queen -- ["Nameless Heroes"] = "", +-- ["Nancy Screw"] = "", -- A_Classic_Fairytale:enemy, A_Classic_Fairytale:queen +-- ["Napalm rocket: [Fire a bomb with napalm!]"] = "", -- Continental_supplies +-- ["Natives"] = "", -- A_Classic_Fairytale:backstab, A_Classic_Fairytale:dragon, A_Classic_Fairytale:enemy, A_Classic_Fairytale:epil, A_Classic_Fairytale:family, A_Classic_Fairytale:first_blood, A_Classic_Fairytale:journey, A_Classic_Fairytale:queen, A_Classic_Fairytale:shadow, A_Classic_Fairytale:united -- ["New Barrels Per Turn"] = "", -- ["NEW CLAN RECORD: "] = "", ["NEW fastest lap: "] = "NOVA volta mais rápida: ", -- ["New Mines Per Turn"] = "", -- ["NEW RACE RECORD: "] = "", -- ["Newton's Hammock"] = "", +-- ["Nicely done, meatbags!"] = "", -- A_Classic_Fairytale:enemy +-- ["Nice work, "] = "", -- A_Classic_Fairytale:dragon +-- ["Nice work!"] = "", -- A_Classic_Fairytale:enemy +-- ["Nilarian"] = "", -- A_Classic_Fairytale:queen +-- ["No, I came back to help you out..."] = "", -- A_Classic_Fairytale:shadow +-- ["No...I wonder where they disappeared?!"] = "", -- A_Classic_Fairytale:journey +-- ["Nom-Nom"] = "", -- A_Classic_Fairytale:journey +-- ["NomNom"] = "", -- A_Classic_Fairytale:united +-- ["Nope. It was one fast mole, that's for sure."] = "", -- A_Classic_Fairytale:shadow +-- ["No! Please, help me!"] = "", -- A_Classic_Fairytale:journey +-- ["NORMAL"] = "", -- Continental_supplies +-- ["North America"] = "", -- Continental_supplies +-- ["Not all hogs are born equal."] = "", -- Highlander -- ["NOT ENOUGH WAYPOINTS"] = "", +-- ["Not now, Fiery Water!"] = "", -- A_Classic_Fairytale:backstab ["Not So Friendly Match"] = "Partida não muito amigável", -- Basketball, Knockball +-- ["Not you again! My head still hurts from last time!"] = "", -- A_Classic_Fairytale:shadow +-- ["No, we made sure of that!"] = "", -- A_Classic_Fairytale:united +-- ["Now find the next target! |Tip: Normally you lose health by falling down, so be careful!"] = "", -- Basic_Training_-_Rope +-- ["No! What have I done?! What have YOU done?!"] = "", -- A_Classic_Fairytale:journey +-- ["No. Where did he come from?"] = "", -- A_Classic_Fairytale:shadow +-- ["Now how do I get on the other side?!"] = "", -- A_Classic_Fairytale:dragon +-- ["No. You and the rest of the tribe are safer there!"] = "", -- A_Classic_Fairytale:backstab +-- ["Obliterate them!|Hint: You might want to take cover..."] = "", -- A_Classic_Fairytale:shadow +-- ["Obstacle course"] = "", -- A_Classic_Fairytale:dragon +-- ["Of course I have to save her. What did I expect?!"] = "", -- A_Classic_Fairytale:family +-- ["OH, COME ON!"] = "", -- A_Classic_Fairytale:journey +-- ["Oh, my!"] = "", -- A_Classic_Fairytale:first_blood +-- ["Oh, my! This is even more entertaining than I've expected!"] = "", -- A_Classic_Fairytale:backstab -- ["Oh no! Just try again!"] = "", -- User_Mission_-_Diver, User_Mission_-_Spooky_Tree, User_Mission_-_Teamwork +-- ["Oh no, not "] = "", -- A_Classic_Fairytale:backstab, A_Classic_Fairytale:united ["Oh no! Time's up! Just try again."] = "Oh não! O tempo acabou! Tente novamente.", --Bazooka, Shotgun, SniperRifle +-- ["Oh no! You failed! Just try again."] = "", -- Basic_Training_-_Cluster_Bomb +-- ["Oh, silly me! I forgot that I'm the shaman."] = "", -- A_Classic_Fairytale:backstab +-- ["Olive"] = "", -- A_Classic_Fairytale:united +-- ["Omnivore"] = "", -- A_Classic_Fairytale:first_blood +-- ["Once upon a time, on an island with great natural resources, lived two tribes in heated conflict..."] = "", -- A_Classic_Fairytale:first_blood +-- ["ONE HOG PER TEAM! KILLING EXCESS HEDGES"] = "", -- Mutant +-- ["One tribe was peaceful, spending their time hunting and training, enjoying the small pleasures of life..."] = "", -- A_Classic_Fairytale:first_blood +-- ["Oops...I dropped them."] = "", -- A_Classic_Fairytale:united +-- ["Open that crate and we will continue!"] = "", -- A_Classic_Fairytale:first_blood -- ["Operation Diver"] = "", -- ["Opposing Team: "] = "", +-- ["Orlando Boom!"] = "", -- A_Classic_Fairytale:queen +-- ["Ouch!"] = "", -- User_Mission_-_Rope_Knock_Challenge +-- ["Our tribe, our beautiful island!"] = "", -- A_Classic_Fairytale:enemy +-- ["Parachute"] = "", -- Continental_supplies -- ["Pathetic Hog #%d"] = "", -- ["Pathetic Resistance"] = "", -- User_Mission_-_Bamboo_Thicket, User_Mission_-_Newton_and_the_Hammock +-- ["Perfect! Now try to get the next crate without hurting yourself!"] = "", -- A_Classic_Fairytale:first_blood -- ["Per-Hog Ammo"] = "", +-- ["- Per team weapons|- 9 weaponschemes|- Unique new weapons| |Select continent first round with the Weapon Menu or by ([switch/tab]=Increase,[presice/left shift]=Decrease)"] = "", -- +-- ["Pfew! That was close!"] = "", -- A_Classic_Fairytale:shadow +-- ["Piñata bullet: [Contains some sweet candy!]"] = "", -- Continental_supplies +-- ["Pings left:"] = "", -- Space_Invasion -- ["Place more waypoints using [ENTER]"] = "", -- ["Place more waypoints using the 'Air Attack' weapon."] = "", +-- ["Planes Used:"] = "", -- User_Mission_-_RCPlane_Challenge +-- ["Planes Used"] = "", -- User_Mission_-_RCPlane_Challenge +-- ["Play with me!"] = "", -- A_Classic_Fairytale:shadow +-- ["Please place the way-point further from the waterline."] = "", -- Racer +-- ["Please place the way-point in the open, within the map boundaries."] = "", -- Racer +-- ["Please, stop releasing your \"smoke signals\"!"] = "", -- A_Classic_Fairytale:shadow +-- ["Point Blank Combo!"] = "", -- Space_Invasion -- ["points"] = "", -- Control, CTF_Blizzard, Basic_Training_-_Bazooka, Basic_Training_-_Shotgun, Basic_Training_-_Sniper_Rifle -- ["Poison"] = "", +-- ["Portal hint: one goes to the destination, and one is the entrance.|"] = "", -- A_Classic_Fairytale:dragon +-- ["Portal mission"] = "", -- portal -- ["Power Remaining"] = "", -- ["Prepare yourself"] = "", +-- ["Press [Enter] to accept this configuration."] = "", -- WxW +-- ["Press [Left] or [Right] to move around, [Enter] to jump"] = "", -- A_Classic_Fairytale:first_blood -- ["Press [Precise] to skip intro"] = "", +-- ["Private Novak"] = "", -- Basic_Training_-_Cluster_Bomb +-- ["Protect yourselves!|Grenade hint: set the timer with [1-5], aim with [Up]/[Down] and hold [Space] to set power"] = "", -- A_Classic_Fairytale:shadow -- ["Race complexity limit reached."] = "", -- ["RACER"] = "", +-- ["Rachel"] = "", -- A_Classic_Fairytale:dragon, A_Classic_Fairytale:family, A_Classic_Fairytale:queen +-- ["Radar Ping"] = "", -- Space_Invasion +-- ["Raging Buffalo"] = "", -- A_Classic_Fairytale:backstab, A_Classic_Fairytale:dragon, A_Classic_Fairytale:enemy, A_Classic_Fairytale:epil, A_Classic_Fairytale:family, A_Classic_Fairytale:queen, A_Classic_Fairytale:united +-- ["Ramon"] = "", -- A_Classic_Fairytale:enemy, A_Classic_Fairytale:epil, A_Classic_Fairytale:family, A_Classic_Fairytale:queen, A_Classic_Fairytale:shadow +-- ["RC PLANE TRAINING"] = "", -- User_Mission_-_RCPlane_Challenge +-- ["Really?! You thought you could harm me with your little toys?"] = "", -- A_Classic_Fairytale:shadow +-- ["Regurgitator"] = "", -- A_Classic_Fairytale:backstab +-- ["Reinforcements"] = "", -- A_Classic_Fairytale:backstab +-- ["Remember: The rope only bend around objects, |if it doesn't hit anything it's always stright!"] = "", -- Basic_Training_-_Rope +-- ["Remember this, pathetic animal: when the day comes, you will regret your blind loyalty!"] = "", -- A_Classic_Fairytale:shadow -- [" - 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 to Leaks A Lot! If you get stuck, press [Precise] to try again!"] = "", -- A_Classic_Fairytale:shadow +-- ["Righteous Beard"] = "", -- A_Classic_Fairytale:backstab, A_Classic_Fairytale:dragon, A_Classic_Fairytale:enemy, A_Classic_Fairytale:epil, A_Classic_Fairytale:family, A_Classic_Fairytale:first_blood, A_Classic_Fairytale:queen, A_Classic_Fairytale:united +-- ["ROPE-KNOCKING"] = "", -- User_Mission_-_Rope_Knock_Challenge +-- ["Rope Training"] = "", -- Basic_Training_-_Rope +-- ["Rot Molester"] = "", -- A_Classic_Fairytale:shadow -- ["Round Limit:"] = "", -- ["Round Limit"] = "", -- ["Rounds Complete: "] = "", -- ["Rounds Complete"] = "", -- ["RULES OF THE GAME [Press ESC to view]"] = "", +-- ["Rusty Joe"] = "", -- A_Classic_Fairytale:queen -- ["s|"] = "", +-- ["Sabotage: [Sabotage all hogs in the circle and deal ~10 dmg]"] = "", -- Continental_supplies +-- ["Salivaslurper"] = "", -- A_Classic_Fairytale:united +-- ["Salvation"] = "", -- A_Classic_Fairytale:family +-- ["Salvation was one step closer now..."] = "", -- A_Classic_Fairytale:dragon -- ["Save as many hapless hogs as possible!"] = "", +-- ["Save Fell From Heaven!"] = "", -- A_Classic_Fairytale:journey +-- ["Save Leaks A Lot!|Hint: The Switch utility might be of help to you."] = "", -- A_Classic_Fairytale:shadow +-- ["Save the princess! All your hogs must survive!|Hint: Kill the cyborgs first! Use the ammo very carefully!|Hint: You might want to spare a girder for cover!"] = "", -- A_Classic_Fairytale:family +-- ["Save the princess by collecting the crate in under 12 turns!"] = "", -- A_Classic_Fairytale:journey +-- ["Scalp Muncher"] = "", -- A_Classic_Fairytale:backstab -- ["SCORE"] = "", +-- ["Score"] = "", -- Mutant +-- ["Scream from a Walrus: [Deal 20 damage + 10% of your hogs health to all hogs around you and get half back]"] = "", -- Continental_supplies -- ["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 +-- ["Seduction"] = "", -- Continental_supplies +-- ["Seems like every time you take a \"walk\", the enemy find us!"] = "", -- A_Classic_Fairytale:backstab +-- ["See that crate farther on the right?"] = "", -- A_Classic_Fairytale:first_blood -- ["See ya!"] = "", +-- ["Segmentation Paul"] = "", -- A_Classic_Fairytale:dragon +-- ["Select continent!"] = "", -- Continental_supplies +-- ["Select difficulty: [Left] - easier or [Right] - harder"] = "", -- A_Classic_Fairytale:first_blood -- ["selected!"] = "", -- ["s"] = "", -- GaudyRacer, Space_Invasion +-- ["... share your beauty with the world every morning, my princess!"] = "", -- A_Classic_Fairytale:journey +-- ["She's behind that tall thingy."] = "", -- A_Classic_Fairytale:family -- ["Shield boosted! +30 power"] = "", -- ["Shield Depleted"] = "", -- ["Shield is fully recharged!"] = "", @@ -162,59 +646,338 @@ -- ["Shield OFF:"] = "", -- ["Shield ON:"] = "", -- ["Shield Seeker!"] = "", +-- ["Shotgun"] = "", -- Continental_supplies ["Shotgun Team"] = "Carabineiros", ["Shotgun Training"] = "Treino com a Escopeta", -- ["shots remaining."] = "", -- ["Silly"] = "", -- ["Sinky"] = "", +-- ["Sirius Lee"] = "", -- A_Classic_Fairytale:enemy ["%s is out and Team %d|scored a penalty!| |Score:"] = "%s está fora e a Equipe %d|sofreu uma penalidade!| |Pontuação:", -- Basketball, Knockball ["%s is out and Team %d|scored a point!| |Score:"] = "%s está fora e a Equipe %d|marcou um ponto!| |Pontuação:", -- Basketball, Knockball +-- ["Slippery"] = "", -- A_Classic_Fairytale:journey +-- ["Smith 0.97"] = "", -- A_Classic_Fairytale:enemy +-- ["Smith 0.98"] = "", -- A_Classic_Fairytale:enemy +-- ["Smith 0.99a"] = "", -- A_Classic_Fairytale:enemy +-- ["Smith 0.99b"] = "", -- A_Classic_Fairytale:enemy +-- ["Smith 0.99f"] = "", -- A_Classic_Fairytale:enemy +-- ["Smith 1.0"] = "", -- A_Classic_Fairytale:enemy +-- ["Sniper Rifle"] = "", -- Continental_supplies +-- ["Sniper!"] = "", -- Space_Invasion ["Sniper Training"] = "Treino com o Rifle Sniper", ["Sniperz"] = "Franco-Atiradores", +-- ["So humiliating..."] = "", -- A_Classic_Fairytale:first_blood +-- ["South America"] = "", -- Continental_supplies +-- ["So? What will it be?"] = "", -- A_Classic_Fairytale:shadow +-- ["Spawn the crate, and attack!"] = "", -- WxW +-- ["Special Weapons:"] = "", -- Continental_supplies +-- ["Spiky Cheese"] = "", -- A_Classic_Fairytale:enemy, A_Classic_Fairytale:epil, A_Classic_Fairytale:family, A_Classic_Fairytale:queen, A_Classic_Fairytale:shadow +-- ["Spleenlover"] = "", -- A_Classic_Fairytale:united -- ["Sponge"] = "", -- ["Spooky Tree"] = "", -- ["STATUS UPDATE"] = "", -- GaudyRacer, Space_Invasion +-- ["Steel Eye"] = "", -- A_Classic_Fairytale:queen +-- ["Step By Step"] = "", -- A_Classic_Fairytale:first_blood +-- ["Steve"] = "", -- A_Classic_Fairytale:dragon, A_Classic_Fairytale:family, A_Classic_Fairytale:queen +-- ["Sticky Mine"] = "", -- Continental_supplies +-- ["Stronglings"] = "", -- A_Classic_Fairytale:shadow +-- ["Structure"] = "", -- Continental_supplies +-- ["Super Weapons"] = "", -- WxW +-- ["Surf Before Crate"] = "", -- WxW +-- ["Surfer! +15 points!"] = "", -- Space_Invasion +-- ["Surfer!"] = "", -- WxW +-- ["Survive!|Hint: Cinematics can be skipped with the [Precise] key."] = "", -- A_Classic_Fairytale:shadow +-- ["Swing, Leaks A Lot, on the wings of the wind!"] = "", -- A_Classic_Fairytale:first_blood -- ["Switched to "] = "", +-- ["Syntax Errol"] = "", -- A_Classic_Fairytale:dragon +-- ["Talk about mixed signals..."] = "", -- A_Classic_Fairytale:dragon ["Team %d: "] = "Equipe %d: ", -- ["Team Scores"] = "", -- Control, Space_Invasion +-- ["Teleport hint: just use the mouse to select the destination!"] = "", -- A_Classic_Fairytale:dragon +-- ["Thanks!"] = "", -- A_Classic_Fairytale:family +-- ["Thank you, my hero!"] = "", -- A_Classic_Fairytale:family +-- ["Thank you, oh, thank you, Leaks A Lot!"] = "", -- A_Classic_Fairytale:journey +-- ["Thank you, oh, thank you, my heroes!"] = "", -- A_Classic_Fairytale:journey +-- ["That is, indeed, very weird..."] = "", -- A_Classic_Fairytale:united +-- ["That makes it almost invaluable!"] = "", -- A_Classic_Fairytale:enemy +-- ["That ought to show them!"] = "", -- A_Classic_Fairytale:backstab +-- ["That's for my father!"] = "", -- A_Classic_Fairytale:backstab +-- ["That shaman sure knows what he's doing!"] = "", -- A_Classic_Fairytale:shadow -- ["That Sinking Feeling"] = "", +-- ["That's not our problem!"] = "", -- A_Classic_Fairytale:enemy +-- ["That's typical of you!"] = "", -- A_Classic_Fairytale:family +-- ["That was just mean!"] = "", -- A_Classic_Fairytale:backstab, A_Classic_Fairytale:united -- ["That was pointless."] = "", +-- ["The answer is...entertaintment. You'll see what I mean."] = "", -- A_Classic_Fairytale:backstab +-- ["The anti-portal zone is all over the floor, and I have nothing to kill him...Droping something could hurt him enough to kill him..."] = "", -- portal +-- ["The Bull's Eye"] = "", -- A_Classic_Fairytale:first_blood +-- ["The caves are well hidden, they won't find us there!"] = "", -- A_Classic_Fairytale:united +-- ["The Crate Frenzy"] = "", -- A_Classic_Fairytale:first_blood +-- ["The Dilemma"] = "", -- A_Classic_Fairytale:shadow +-- ["The enemy can't move but it might be a good idea to stay out of sight!|"] = "", -- A_Classic_Fairytale:dragon -- ["The enemy is hiding out on yonder ducky!"] = "", +-- ["The Enemy Of My Enemy"] = "", -- A_Classic_Fairytale:enemy +-- ["The First Blood"] = "", -- A_Classic_Fairytale:first_blood +-- ["The First Encounter"] = "", -- A_Classic_Fairytale:shadow -- ["The flag will respawn next round."] = "", +-- ["The food bites back"] = "", -- A_Classic_Fairytale:backstab +-- ["The giant umbrella from the last crate should help break the fall."] = "", -- A_Classic_Fairytale:first_blood +-- ["The Great Escape"] = "", -- User_Mission_-_The_Great_Escape +-- ["The guardian"] = "", -- A_Classic_Fairytale:shadow +-- ["The Individualist"] = "", -- A_Classic_Fairytale:shadow +-- ["Their buildings were very primitive back then, even for an uncivilised island."] = "", -- A_Classic_Fairytale:united +-- ["The Journey Back"] = "", -- A_Classic_Fairytale:journey +-- ["The Leap of Faith"] = "", -- A_Classic_Fairytale:first_blood +-- ["The Moonwalk"] = "", -- A_Classic_Fairytale:journey -- ["The Nameless One"] = "", +-- ["The next one is pretty hard! |Tip: You have to do multiple swings!"] = "", -- Basic_Training_-_Rope +-- ["Then how do they keep appearing?"] = "", -- A_Classic_Fairytale:shadow +-- ["The other one were all cannibals, spending their time eating the organs of fellow hedgehogs..."] = "", -- A_Classic_Fairytale:first_blood +-- ["There must be a spy among us!"] = "", -- A_Classic_Fairytale:backstab +-- ["There's more of them? When did they become so hungry?"] = "", -- A_Classic_Fairytale:backstab, A_Classic_Fairytale:united +-- ["There's nothing more satisfying for me than seeing you share your beauty with the world every morning, my princess!"] = "", -- A_Classic_Fairytale:journey +-- ["There's nothing more satisfying to us than seeing you share your beauty..."] = "", -- A_Classic_Fairytale:journey +-- ["There's nothing more satisfying to us than seeing you share your beauty with the world every morning, my princess!"] = "", -- A_Classic_Fairytale:journey +-- ["The Rising"] = "", -- A_Classic_Fairytale:first_blood +-- ["The Savior"] = "", -- A_Classic_Fairytale:journey +-- ["These primitive people are so funny!"] = "", -- A_Classic_Fairytale:backstab +-- ["The Shadow Falls"] = "", -- A_Classic_Fairytale:shadow +-- ["The Showdown"] = "", -- A_Classic_Fairytale:shadow +-- ["The Slaughter"] = "", -- A_Classic_Fairytale:dragon, A_Classic_Fairytale:first_blood -- ["THE SPECIALISTS"] = "", +-- ["The spirits of the ancerstors are surely pleased, Leaks A Lot."] = "", -- A_Classic_Fairytale:first_blood +-- ["The Torment"] = "", -- A_Classic_Fairytale:first_blood +-- ["The Tunnel Maker"] = "", -- A_Classic_Fairytale:journey +-- ["The Ultimate Weapon"] = "", -- A_Classic_Fairytale:first_blood +-- ["The Union"] = "", -- A_Classic_Fairytale:enemy +-- ["The village, unprepared, was destroyed by the cyborgs..."] = "", -- A_Classic_Fairytale:journey +-- ["The walk of Fame"] = "", -- A_Classic_Fairytale:shadow +-- ["The wasted youth"] = "", -- A_Classic_Fairytale:first_blood +-- ["The weapon in that last crate was bestowed upon us by the ancients!"] = "", -- A_Classic_Fairytale:first_blood +-- ["The what?!"] = "", -- A_Classic_Fairytale:dragon +-- ["The wind whispers that you are ready to become familiar with tools, now..."] = "", -- A_Classic_Fairytale:first_blood +-- ["They are all waiting back in the village, haha."] = "", -- A_Classic_Fairytale:enemy +-- ["They Call Me Bullseye!"] = "", -- Space_Invasion +-- ["They have weapons we've never seen before!"] = "", -- A_Classic_Fairytale:united +-- ["They keep appearing like this. It's weird!"] = "", -- A_Classic_Fairytale:united +-- ["They killed "] = "", -- A_Classic_Fairytale:backstab, A_Classic_Fairytale:united +-- ["They must be trying to weaken us!"] = "", -- A_Classic_Fairytale:enemy +-- ["They never learn"] = "", -- A_Classic_Fairytale:journey +-- ["They told us to wear these clothes. They said that this is the newest trend."] = "", -- A_Classic_Fairytale:enemy +-- ["They've been manipulating us all this time!"] = "", -- A_Classic_Fairytale:enemy +-- ["Thighlicker"] = "", -- A_Classic_Fairytale:united +-- ["This is it! It's time to make Fell From Heaven fall for me..."] = "", -- A_Classic_Fairytale:first_blood +-- ["This island is the only place left on Earth with grass on it!"] = "", -- A_Classic_Fairytale:enemy +-- ["This is typical!"] = "", -- A_Classic_Fairytale:dragon +-- ["This must be some kind of sorcery!"] = "", -- A_Classic_Fairytale:shadow +-- ["This must be the caves!"] = "", -- A_Classic_Fairytale:backstab -- ["This one's tricky."] = "", -- ["This rain is really something..."] = "", +-- ["This will be fun!"] = "", -- A_Classic_Fairytale:enemy +-- ["Those aliens are destroying the island!"] = "", -- A_Classic_Fairytale:family -- ["TIME: "] = "", -- ["Timed Kamikaze!"] = "", -- ["Time Extended!"] = "", -- ["Time Extension"] = "", +-- ["Tip: The rope physics are different than in the real world, |use it to your advantage!"] = "", -- Basic_Training_-_Rope -- ["Toggle Shield"] = "", +-- ["To help you, of course!"] = "", -- A_Classic_Fairytale:journey +-- ["To place a girder, select it, use [Left] and [Right] to select angle and length, place with [Left Click]"] = "", -- A_Classic_Fairytale:shadow +-- ["Torn Muscle"] = "", -- A_Classic_Fairytale:journey +-- [" to save the village."] = "", -- A_Classic_Fairytale:dragon +-- ["To the caves..."] = "", -- A_Classic_Fairytale:united -- ["Toxic Team"] = "", -- User_Mission_-_Diver, User_Mission_-_Spooky_Tree, User_Mission_-_Teamwork -- ["TRACK COMPLETED"] = "", -- ["TRACK FAILED!"] = "", +-- ["training"] = "", -- portal +-- ["Traitors"] = "", -- A_Classic_Fairytale:epil +-- ["Tribe"] = "", -- A_Classic_Fairytale:backstab ["TrophyRace"] = "TrophyRace", +-- ["Try to protect the chief! You won't lose if he dies, but it is advised that he survives."] = "", -- A_Classic_Fairytale:united -- ["T_T"] = "", -- ["Tumbling Time Extended!"] = "", +-- ["Turns until Sudden Death: "] = "", -- A_Classic_Fairytale:dragon +-- [" turns until Sudden Death! Better hurry!"] = "", -- A_Classic_Fairytale:dragon -- ["Turn Time"] = "", +-- ["Two little hogs cooperating, getting past obstacles..."] = "", -- A_Classic_Fairytale:journey +-- ["Uhm...I met one of them and took his weapons."] = "", -- A_Classic_Fairytale:shadow +-- ["Uhmm...ok no."] = "", -- A_Classic_Fairytale:enemy +-- ["ULTRA KILL"] = "", -- Mutant +-- ["Under Construction"] = "", -- A_Classic_Fairytale:shadow +-- ["Unexpected Igor"] = "", -- A_Classic_Fairytale:dragon -- ["Unit"] = "", +-- ["Unit 0x0007"] = "", -- A_Classic_Fairytale:family +-- ["Unit 334a$7%;.*"] = "", -- A_Classic_Fairytale:backstab, A_Classic_Fairytale:dragon, A_Classic_Fairytale:enemy, A_Classic_Fairytale:family, A_Classic_Fairytale:queen, A_Classic_Fairytale:united -- ["Unit 3378"] = "", -- ["Unit 835"] = "", +-- ["United We Stand"] = "", -- A_Classic_Fairytale:united -- ["Unlimited Attacks"] = "", +-- ["Unlucky Sods"] = "", -- User_Mission_-_Rope_Knock_Challenge -- ["Unstoppable!"] = "", +-- ["Unsuspecting Louts"] = "", -- User_Mission_-_Rope_Knock_Challenge +-- ["[Up], [Down] to aim, [Space] to shoot!"] = "", -- A_Classic_Fairytale:first_blood +-- ["Use it wisely!"] = "", -- A_Classic_Fairytale:dragon +-- ["Use it with precaution!"] = "", -- A_Classic_Fairytale:first_blood -- ["User Challenge"] = "", +-- ["Use the parachute ([Space] while in air)"] = "", -- +-- ["Use the portal gun to get to the next crate, then use the new gun to get to the final destination!|"] = "", -- A_Classic_Fairytale:dragon +-- ["Use the rope to get on the head of the mole, young one!"] = "", -- A_Classic_Fairytale:first_blood +-- ["Use the rope to knock your enemies to their doom."] = "", -- User_Mission_-_Rope_Knock_Challenge ["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!", +-- ["Vedgies"] = "", -- A_Classic_Fairytale:journey +-- ["Vegan Jack"] = "", -- A_Classic_Fairytale:enemy +-- ["Victory!"] = "", -- Basic_Training_-_Rope -- ["Victory for the "] = "", -- CTF_Blizzard, Capture_the_Flag +-- ["Violence is not the answer to your problems!"] = "", -- A_Classic_Fairytale:first_blood +-- ["Walls Left"] = "", -- WxW +-- ["Walls Required"] = "", -- WxW +-- ["WALL TO WALL"] = "", -- WxW +-- ["Wannabe Flyboys"] = "", -- User_Mission_-_RCPlane_Challenge +-- ["Wannabe Shoppsta"] = "", -- User_Mission_-_Rope_Knock_Challenge +-- ["Watch your steps, young one!"] = "", -- A_Classic_Fairytale:first_blood -- ["Waypoint placed."] = "", -- ["Way-Points Remaining"] = "", +-- ["Weaklings"] = "", -- A_Classic_Fairytale:shadow +-- ["We all know what happens when you get frightened..."] = "", -- A_Classic_Fairytale:first_blood -- ["Weapons Reset"] = "", +-- ["Weapons reset."] = "", -- Highlander +-- ["We are indeed."] = "", -- A_Classic_Fairytale:backstab +-- ["We can't defeat them!"] = "", -- A_Classic_Fairytale:shadow +-- ["We can't hold them up much longer!"] = "", -- A_Classic_Fairytale:united +-- ["We can't let them take over our little island!"] = "", -- A_Classic_Fairytale:enemy +-- ["We have no time to waste..."] = "", -- A_Classic_Fairytale:journey +-- ["We have nowhere else to live!"] = "", -- A_Classic_Fairytale:enemy +-- ["We have to protect the village!"] = "", -- A_Classic_Fairytale:united +-- ["We have to unite and defeat those cylergs!"] = "", -- A_Classic_Fairytale:enemy +-- ["Welcome, Leaks A Lot!"] = "", -- A_Classic_Fairytale:journey -- ["Well done."] = "", +-- ["We'll give you a problem then!"] = "", -- A_Classic_Fairytale:enemy +-- ["We'll spare your life for now!"] = "", -- A_Classic_Fairytale:backstab +-- ["Well, that was a waste of time."] = "", -- A_Classic_Fairytale:dragon +-- ["Well, well! Isn't that the cutest thing you've ever seen?"] = "", -- A_Classic_Fairytale:journey +-- ["Well, yes. This was a cyborg television show."] = "", -- A_Classic_Fairytale:enemy +-- ["We made sure noone followed us!"] = "", -- A_Classic_Fairytale:backstab +-- ["We need to move!"] = "", -- A_Classic_Fairytale:united +-- ["We need to prevent their arrival!"] = "", -- A_Classic_Fairytale:backstab +-- ["We need to warn the village."] = "", -- A_Classic_Fairytale:shadow +-- ["We should head back to the village now."] = "", -- A_Classic_Fairytale:shadow +-- ["We were trying to save her and we got lost."] = "", -- A_Classic_Fairytale:family +-- ["We won't let you hurt her!"] = "", -- A_Classic_Fairytale:journey +-- ["What?! A cannibal? Here? There is no time to waste! Come, you are prepared."] = "", -- A_Classic_Fairytale:first_blood +-- ["What a douche!"] = "", -- A_Classic_Fairytale:enemy +-- ["What am I gonna...eat, yo?"] = "", -- A_Classic_Fairytale:family +-- ["What are you doing at a distance so great, young one?"] = "", -- A_Classic_Fairytale:first_blood +-- ["What are you doing? Let her go!"] = "", -- A_Classic_Fairytale:journey +-- ["What a ride!"] = "", -- A_Classic_Fairytale:shadow +-- ["What a strange cave!"] = "", -- A_Classic_Fairytale:dragon +-- ["What a strange feeling!"] = "", -- A_Classic_Fairytale:backstab +-- ["What do my faulty eyes observe? A spy!"] = "", -- A_Classic_Fairytale:first_blood +-- ["Whatever floats your boat..."] = "", -- A_Classic_Fairytale:shadow +-- [" What !! For all of this struggle i just win some ... TIME o0"] = "", -- portal +-- ["What has "] = "", -- A_Classic_Fairytale:backstab +-- ["What? Here? How did they find us?!"] = "", -- A_Classic_Fairytale:backstab +-- ["What is this place?"] = "", -- A_Classic_Fairytale:dragon, A_Classic_Fairytale:enemy +-- ["What shall we do with the traitor?"] = "", -- A_Classic_Fairytale:backstab +-- ["WHAT?! You're the ones attacking us!"] = "", -- A_Classic_Fairytale:enemy +-- ["When?"] = "", -- A_Classic_Fairytale:enemy +-- ["When I find it..."] = "", -- A_Classic_Fairytale:dragon +-- ["Where are all these crates coming from?!"] = "", -- A_Classic_Fairytale:shadow +-- ["Where are they?!"] = "", -- A_Classic_Fairytale:backstab +-- ["Where did that alien run?"] = "", -- A_Classic_Fairytale:dragon +-- ["Where did you get the exploding apples?"] = "", -- A_Classic_Fairytale:shadow +-- ["Where did you get the exploding apples and the magic bow that shoots many arrows?"] = "", -- A_Classic_Fairytale:shadow +-- ["Where did you get the magic bow that shoots many arrows?"] = "", -- A_Classic_Fairytale:shadow +-- ["Where did you get the weapons in the forest, Dense Cloud?"] = "", -- A_Classic_Fairytale:backstab +-- ["Where do you get that?!"] = "", -- A_Classic_Fairytale:enemy +-- ["Where have you been?!"] = "", -- A_Classic_Fairytale:backstab +-- ["Where have you been?"] = "", -- A_Classic_Fairytale:united +-- ["? Why?"] = "", -- A_Classic_Fairytale:backstab +-- ["Why "] = "", -- A_Classic_Fairytale:backstab +-- ["! Why?!"] = "", -- A_Classic_Fairytale:backstab, A_Classic_Fairytale:united +-- ["Why are you doing this?"] = "", -- A_Classic_Fairytale:journey +-- ["Why are you helping us, uhm...?"] = "", -- A_Classic_Fairytale:family +-- ["Why can't he just let her go?!"] = "", -- A_Classic_Fairytale:family +-- ["Why do men keep hurting me?"] = "", -- A_Classic_Fairytale:first_blood +-- ["Why do you not like me?"] = "", -- A_Classic_Fairytale:shadow +-- ["Why do you want to take over our island?"] = "", -- A_Classic_Fairytale:enemy +-- ["Why me?!"] = "", -- A_Classic_Fairytale:backstab +-- ["Why would they do this?"] = "", -- A_Classic_Fairytale:backstab +-- ["- Will Get 1-3 random weapons"] = "", -- Continental_supplies +-- ["- Will refresh Parachute each turn."] = "", -- Continental_supplies +-- ["- Will refresh portalgun each turn."] = "", -- Continental_supplies -- ["Will this ever end?"] = "", +-- ["WINNER IS "] = "", -- Mutant -- ["WINNING TIME: "] = "", +-- ["Wise Oak"] = "", -- A_Classic_Fairytale:backstab, A_Classic_Fairytale:dragon, A_Classic_Fairytale:enemy, A_Classic_Fairytale:epil, A_Classic_Fairytale:family, A_Classic_Fairytale:queen +-- ["With Dense Cloud on the land of shadows, I'm the village's only hope..."] = "", -- A_Classic_Fairytale:journey +-- ["With the rest of the tribe gone, it was up to "] = "", -- A_Classic_Fairytale:dragon +-- ["Worry not, for it is a peaceful animal! There is no reason to be afraid..."] = "", -- A_Classic_Fairytale:first_blood +-- ["Wow, what a dream!"] = "", -- A_Classic_Fairytale:backstab +-- ["Y3K1337"] = "", -- A_Classic_Fairytale:journey, A_Classic_Fairytale:shadow +-- ["Yay, we won!"] = "", -- A_Classic_Fairytale:enemy +-- ["Y Chwiliad"] = "", -- A_Classic_Fairytale:dragon +-- ["Yeah...I think it's a 'he', lol."] = "", -- A_Classic_Fairytale:shadow +-- ["Yeah, sure! I died. Hillarious!"] = "", -- A_Classic_Fairytale:backstab +-- ["Yeah, take that!"] = "", -- A_Classic_Fairytale:dragon +-- ["Yeah? Watcha gonna do? Cry?"] = "", -- A_Classic_Fairytale:journey +-- ["Yes!"] = "", -- A_Classic_Fairytale:enemy +-- ["Yes, yeees! You are now ready to enter the real world!"] = "", -- A_Classic_Fairytale:first_blood +-- ["Yo, dude, we're here, too!"] = "", -- A_Classic_Fairytale:family +-- ["You are given the chance to turn your life around..."] = "", -- A_Classic_Fairytale:shadow +-- ["You are playing with our lives here!"] = "", -- A_Classic_Fairytale:enemy +-- ["! You bastards!"] = "", -- A_Classic_Fairytale:backstab, A_Classic_Fairytale:united +-- ["You bear impressive skills, "] = "", -- A_Classic_Fairytale:dragon +-- ["You can't fire a portal on the blue surface"] = "", -- portal +-- ["You couldn't possibly believe that after refusing my offer I'd just let you go!"] = "", -- A_Classic_Fairytale:journey -- ["You'd almost swear the water was rising!"] = "", +-- ["You'd better watch your steps..."] = "", -- A_Classic_Fairytale:journey +-- ["You did not make it in time, try again!"] = "", -- Basic_Training_-_Rope +-- ["You have 7 turns until the next wave arrives.|Make sure the arriving cannibals are greeted appropriately!|If the hog dies, the cause is lost.|Hint: you might want to use some mines..."] = "", -- A_Classic_Fairytale:backstab +-- ["You have "] = "", -- A_Classic_Fairytale:dragon +-- ["You have been giving us out to the enemy, haven't you!"] = "", -- A_Classic_Fairytale:backstab +-- ["You have been respawned, at your last checkpoint!"] = "", -- Basic_Training_-_Rope +-- ["You have been respawned, be more carefull next time!"] = "", -- Basic_Training_-_Rope +-- ["You have chosen the perfect moment to leave."] = "", -- A_Classic_Fairytale:united +-- ["You have failed to complete your task, young one!"] = "", -- A_Classic_Fairytale:journey +-- ["You have failed to save the tribe!"] = "", -- A_Classic_Fairytale:backstab +-- ["You have finally figured it out!"] = "", -- A_Classic_Fairytale:enemy +-- ["You have kidnapped our whole tribe!"] = "", -- A_Classic_Fairytale:enemy +-- ["You have killed an innocent hedgehog!"] = "", -- A_Classic_Fairytale:backstab +-- ["You have proven yourself worthy to see our most ancient secret!"] = "", -- A_Classic_Fairytale:first_blood +-- ["You have proven yourselves worthy!"] = "", -- A_Classic_Fairytale:enemy -- ["You have SCORED!!"] = "", +-- ["You have to destroy 12 targets in 180 seconds"] = "", -- Basic_Training_-_Cluster_Bomb +-- ["You have won the game by proving true cooperative skills!"] = "", -- A_Classic_Fairytale:enemy +-- ["You just appeared out of thin air!"] = "", -- A_Classic_Fairytale:backstab +-- ["You just committed suicide..."] = "", -- A_Classic_Fairytale:shadow +-- ["You killed my father, you monster!"] = "", -- A_Classic_Fairytale:backstab +-- ["You know...taking a stroll."] = "", -- A_Classic_Fairytale:backstab +-- ["You know what? I don't even regret anything!"] = "", -- A_Classic_Fairytale:backstab +-- ["You'll see what I mean!"] = "", -- A_Classic_Fairytale:enemy +-- ["You may only attack from a rope!"] = "", -- WxW +-- ["You meatbags are pretty slow, you know!"] = "", -- A_Classic_Fairytale:enemy +-- ["You might want to find a way to instantly kill arriving cannibals!"] = "", -- A_Classic_Fairytale:backstab +-- ["Young one, you are telling us that they can instantly change location without a shaman?"] = "", -- A_Classic_Fairytale:united +-- ["You probably know what to do next..."] = "", -- A_Classic_Fairytale:first_blood +-- ["Your deaths will be avenged, cannibals!"] = "", -- A_Classic_Fairytale:enemy +-- ["Your death will not be in vain, Dense Cloud!"] = "", -- A_Classic_Fairytale:shadow +-- ["You're...alive!? But we saw you die!"] = "", -- A_Classic_Fairytale:backstab +-- ["You're a pathetic liar!"] = "", -- A_Classic_Fairytale:backstab +-- ["You're funny!"] = "", -- A_Classic_Fairytale:journey +-- ["You're getting pretty good! |Tip: When you shorten you rope you move faster! |and when you lengthen it you move slower"] = "", -- Basic_Training_-_Rope +-- ["You're pathetic! You are not worthy of my attention..."] = "", -- A_Classic_Fairytale:shadow +-- ["You're probably wondering why I bought you back..."] = "", -- A_Classic_Fairytale:backstab +-- ["You're terrorizing the forest...We won't catch anything like this!"] = "", -- A_Classic_Fairytale:shadow +-- ["Your hogs must survive!"] = "", -- A_Classic_Fairytale:journey +-- ["Your movement skills will be evaluated now."] = "", -- A_Classic_Fairytale:first_blood -- ["You saved"] = "", +-- ["You've been assaulting us, we have been just defending ourselves!"] = "", -- A_Classic_Fairytale:enemy -- ["You've failed. Try again."] = "", ["You've reached the goal!| |Time: "] = "Você alcançou o objetivo!| |Tempo: ", +-- ["You will be avenged!"] = "", -- A_Classic_Fairytale:shadow +-- ["You won't believe what happened to me!"] = "", -- A_Classic_Fairytale:backstab +-- ["Yuck! I bet they'll keep worshipping her even after I save the village!"] = "", -- A_Classic_Fairytale:family +-- ["Zealandia"] = "", -- Continental_supplies ["'Zooka Team"] = "Bazuqueiros", +-- ["Zork"] = "", -- A_Classic_Fairytale:dragon, A_Classic_Fairytale:family, A_Classic_Fairytale:queen } diff -r 3331b30e4ef1 -r 88fde28bbda6 share/hedgewars/Data/Locale/pt_PT.lua --- a/share/hedgewars/Data/Locale/pt_PT.lua Sun Oct 21 01:28:33 2012 +0400 +++ b/share/hedgewars/Data/Locale/pt_PT.lua Sat Nov 03 00:34:35 2012 +0400 @@ -2,157 +2,641 @@ [":("] = ":(", ["!!!"] = "!!!", ["..."] = "...", + ["011101000"] = "011101000", -- A_Classic_Fairytale:dragon + ["011101001"] = "011101001", -- A_Classic_Fairytale:backstab, A_Classic_Fairytale:dragon, A_Classic_Fairytale:enemy, A_Classic_Fairytale:family, A_Classic_Fairytale:journey, A_Classic_Fairytale:queen, A_Classic_Fairytale:shadow, A_Classic_Fairytale:united + ["30 minutes later..."] = "30 minutos depois...", -- A_Classic_Fairytale:shadow +-- ["About a month ago, a cyborg came and told us that you're the cannibals!"] = "ácerca de um mês atrás, um cyborg veio e disse-nos que voces é que eram os cabinais!", -- A_Classic_Fairytale:enemy ["Accuracy Bonus!"] = "Bónus de precisão!", --- ["Achievement Unlocked"] = "Desbloqueado", -- User_Mission_-_Bamboo_Thicket, User_Mission_-_That_Sinking_Feeling, Tumbler + ["Ace"] = "Ãs", -- User_Mission_-_RCPlane_Challenge, User_Mission_-_Rope_Knock_Challenge + ["Achievement Unlocked"] = "Proeza Desbloqueada", -- User_Mission_-_Bamboo_Thicket, User_Mission_-_That_Sinking_Feeling, Tumbler + ["???"] = "???", -- A_Classic_Fairytale:backstab +-- ["A Classic Fairytale"] = "Um Classico Conto de Fadas", -- A_Classic_Fairytale:first_blood +-- ["Actually, you aren't worthy of life! Take this..."] = "", -- A_Classic_Fairytale:shadow +-- ["A cy-what?"] = "", -- A_Classic_Fairytale:enemy +-- ["Adventurous"] = "", -- A_Classic_Fairytale:journey +-- ["Africa"] = "", -- Continental_supplies +-- ["After Leaks A Lot betrayed his tribe, he joined the cannibals..."] = "", -- A_Classic_Fairytale:first_blood +-- ["After the shock caused by the enemy spy, Leaks A Lot and Dense Cloud went hunting to relax."] = "", -- A_Classic_Fairytale:shadow +-- ["Again with the 'cannibals' thing!"] = "", -- A_Classic_Fairytale:enemy +-- ["a Hedgewars challenge"] = "", -- User_Mission_-_RCPlane_Challenge, User_Mission_-_Rope_Knock_Challenge ["a Hedgewars mini-game"] = "um mini-jogo Hedgewars", -- Space_Invasion, The_Specialists ["Aiming Practice"] = "Pratica a tua pontaria", --Bazooka, Shotgun, SniperRifle +-- ["A leap in a leap"] = "", -- A_Classic_Fairytale:first_blood +-- ["A little gift from the cyborgs"] = "", -- A_Classic_Fairytale:shadow +-- ["All gone...everything!"] = "", -- A_Classic_Fairytale:enemy +-- ["All right, we just need to get to the other side of the island!"] = "", -- A_Classic_Fairytale:journey +-- ["All walls touched!"] = "", -- WxW -- ["Ammo Depleted!"] = "", -- ["ammo extended!"] = "", -- ["Ammo is reset at the end of your turn."] = "", -- ["Ammo Maniac!"] = "", ["Ammo"] = "Munições", +-- ["And how am I alive?!"] = "", -- A_Classic_Fairytale:enemy +-- ["And so happenned that Leaks A Lot failed to complete the challenge! He landed, pressured by shame..."] = "", -- A_Classic_Fairytale:first_blood +-- ["And so it began..."] = "", -- A_Classic_Fairytale:first_blood +-- ["...and so the cyborgs took over the world..."] = "", -- A_Classic_Fairytale:shadow +-- ["And so they discovered that cyborgs weren't invulnerable..."] = "", -- A_Classic_Fairytale:journey +-- ["And where's all the weed?"] = "", -- A_Classic_Fairytale:dragon +-- ["And you believed me? Oh, god, that's cute!"] = "", -- A_Classic_Fairytale:journey +-- ["Anno 1032: [The explosion will make a strong push ~ wide range, wont affect hogs close to the target]"] = "", -- Continental_supplies +-- ["Antarctica"] = "", -- Continental_supplies +-- ["Are we there yet?"] = "", -- A_Classic_Fairytale:shadow +-- ["Are you accusing me of something?"] = "", -- A_Classic_Fairytale:backstab +-- ["Are you saying that many of us have died for your entertainment?"] = "", -- A_Classic_Fairytale:enemy +-- ["Artur Detour"] = "", -- A_Classic_Fairytale:queen +-- ["As a reward for your performance, here's some new technology!"] = "", -- A_Classic_Fairytale:dragon +-- ["a shoppa minigame"] = "", -- WxW +-- ["Asia"] = "", -- Continental_supplies +-- ["Assault Team"] = "", -- A_Classic_Fairytale:backstab +-- ["As the ammo is sparse, you might want to reuse ropes while mid-air.|"] = "", -- A_Classic_Fairytale:dragon +-- ["As the challenge was completed, Leaks A Lot set foot on the ground..."] = "", -- A_Classic_Fairytale:first_blood +-- ["As you can see, there is no way to get on the other side!"] = "", -- A_Classic_Fairytale:dragon +-- ["Attack From Rope"] = "", -- WxW +-- ["Australia"] = "", -- Continental_supplies -- ["Available points remaining: "] = "", +-- ["Back Breaker"] = "", -- A_Classic_Fairytale:backstab +-- ["Back in the village, after telling the villagers about the threat..."] = "", -- A_Classic_Fairytale:united ["[Backspace]"] = "[Retrocesso (backspace)]", +-- ["Backstab"] = "", -- A_Classic_Fairytale:backstab +-- ["Bad Team"] = "", -- User_Mission_-_The_Great_Escape -- ["Bamboo Thicket"] = "", -- ["Barrel Eater!"] = "", -- ["Barrel Launcher"] = "", +-- ["Baseballbat"] = "", -- Continental_supplies ["Bat balls at your enemies and|push them into the sea!"] = "Bate bolas contra os teus|enimigos e empurra-os ao mar!", ["Bat your opponents through the|baskets and out of the map!"] = "Bate os teus adversarios|fora do mapa acertando com eles no cesto!", ["Bazooka Training"] = "Treino com Bazuca", +-- ["Beep Loopers"] = "", -- A_Classic_Fairytale:queen ["Best laps per team: "] = "Melhores voltas por equipa: ", -- ["Best Team Times: "] = "", +-- ["Beware, though! If you are slow, you die!"] = "", -- A_Classic_Fairytale:dragon +-- ["Biomechanic Team"] = "", -- A_Classic_Fairytale:family +-- ["Blender"] = "", -- A_Classic_Fairytale:family +-- ["Bloodpie"] = "", -- A_Classic_Fairytale:backstab +-- ["Bloodrocutor"] = "", -- A_Classic_Fairytale:shadow +-- ["Bloodsucker"] = "", -- A_Classic_Fairytale:shadow -- ["Bloody Rookies"] = "", -- 01#Boot_Camp, User_Mission_-_Dangerous_Ducklings, User_Mission_-_Diver, User_Mission_-_Spooky_Tree +-- ["Bone Jackson"] = "", -- A_Classic_Fairytale:backstab +-- ["Bonely"] = "", -- A_Classic_Fairytale:shadow ["Boom!"] = "Boom!", ["BOOM!"] = "BOOM!", ["Boss defeated!"] = "Boss derrotado!", -- ["Boss Slayer!"] = "", +-- ["Brain Blower"] = "", -- A_Classic_Fairytale:journey +-- ["Brainiac"] = "", -- A_Classic_Fairytale:epil, A_Classic_Fairytale:first_blood, A_Classic_Fairytale:shadow +-- ["Brainila"] = "", -- A_Classic_Fairytale:united +-- ["Brain Stu"] = "", -- A_Classic_Fairytale:united +-- ["Brain Teaser"] = "", -- A_Classic_Fairytale:backstab +-- ["Brutal Lily"] = "", -- A_Classic_Fairytale:enemy, A_Classic_Fairytale:epil +-- ["Brutus"] = "", -- A_Classic_Fairytale:backstab -- ["Build a track and race."] = "", +-- ["Bullseye"] = "", -- A_Classic_Fairytale:dragon +-- ["But it proved to be no easy task!"] = "", -- A_Classic_Fairytale:dragon +-- ["But that's impossible!"] = "", -- A_Classic_Fairytale:backstab +-- ["But the ones alive are stronger in their heart!"] = "", -- A_Classic_Fairytale:enemy +-- ["But...we died!"] = "", -- A_Classic_Fairytale:backstab +-- ["But where can we go?"] = "", -- A_Classic_Fairytale:united +-- ["But why would they help us?"] = "", -- A_Classic_Fairytale:backstab +-- ["But you're cannibals. It's what you do."] = "", -- A_Classic_Fairytale:enemy +-- ["But you said you'd let her go!"] = "", -- A_Classic_Fairytale:journey +-- ["Call me Beep! Well, 'cause I'm such a nice...person!"] = "", -- A_Classic_Fairytale:family +-- ["Cannibals"] = "", -- A_Classic_Fairytale:enemy, A_Classic_Fairytale:epil, A_Classic_Fairytale:first_blood +-- ["Cannibal Sentry"] = "", -- A_Classic_Fairytale:journey +-- ["Cannibals?! You're the cannibals!"] = "", -- A_Classic_Fairytale:enemy ["CAPTURE THE FLAG"] = "CAPTURAR A BANDEIRA", ["Careless"] = "Descuidado", +-- ["Carol"] = "", -- A_Classic_Fairytale:family +-- ["CHALLENGE COMPLETE"] = "DESAFIO COMPLETO", -- User_Mission_-_RCPlane_Challenge ["Change Weapon"] = "Trocar Arma", +-- ["Choose your side! If you want to join the strange man, walk up to him.|Otherwise, walk away from him. If you decide to att...nevermind..."] = "", -- A_Classic_Fairytale:shadow -- ["Clumsy"] = "", +-- ["Cluster Bomb MASTER!"] = "", -- Basic_Training_-_Cluster_Bomb +-- ["Cluster Bomb Training"] = "", -- Basic_Training_-_Cluster_Bomb -- ["Codename: Teamwork"] = "", +-- ["Collateral Damage"] = "", -- A_Classic_Fairytale:journey +-- ["Collateral Damage II"] = "", -- A_Classic_Fairytale:journey +-- ["Collect all the crates, but remember, our time in this life is limited!"] = "", -- A_Classic_Fairytale:first_blood +-- ["Collect or destroy all the health crates."] = "", -- User_Mission_-_RCPlane_Challenge +-- ["Collect the crate on the right.|Hint: Select the rope, [Up] or [Down] to aim, [Space] to fire, directional keys to move.|Ropes can be fired again in the air!"] = "", -- A_Classic_Fairytale:first_blood +-- ["Collect the crates within the time limit!|If you fail, you'll have to try again."] = "", -- A_Classic_Fairytale:first_blood +-- ["Come closer, so that your training may continue!"] = "", -- A_Classic_Fairytale:first_blood +-- ["Compete to use as few planes as possible!"] = "", -- User_Mission_-_RCPlane_Challenge ["Complete the track as fast as you can!"] = "Completa a pista o mais rápido que conseguires!", +-- ["COMPLETION TIME"] = "", -- User_Mission_-_Rope_Knock_Challenge +-- ["Configuration accepted."] = "Configuração aceite", -- WxW ["Congratulations!"] = "Parabéns!", +-- ["Congratulations"] = "Parabéns", -- Basic_Training_-_Rope +-- ["Congratulations! You needed only half of time|to eliminate all targets."] = "", -- Basic_Training_-_Cluster_Bomb +-- ["Congratulations! You've completed the Rope tutorial! |- Tutorial ends in 10 seconds!"] = "", -- Basic_Training_-_Rope ["Congratulations! You've eliminated all targets|within the allowed time frame."] = "Parabéns! Eliminaste todos os alvos|dentro do tempo limite.", --Bazooka, Shotgun, SniperRifle +-- ["Continental supplies"] = "", -- Continental_supplies -- ["Control pillars to score points."] = "", +-- ["Corporationals"] = "", -- A_Classic_Fairytale:queen +-- ["Corpsemonger"] = "", -- A_Classic_Fairytale:shadow +-- ["Corpse Thrower"] = "", -- A_Classic_Fairytale:epil +-- ["Crates Left:"] = "", -- User_Mission_-_RCPlane_Challenge ["Cybernetic Empire"] = "Império Cibernético", +-- ["Cyborg. It's what the aliens call themselves."] = "Cyborg. É o que os extra terrestres se chamam a eles mesmos(errrr)", -- A_Classic_Fairytale:enemy +-- ["Dahmer"] = "", -- A_Classic_Fairytale:backstab -- ["DAMMIT, ROOKIE!"] = "", -- ["DAMMIT, ROOKIE! GET OFF MY HEAD!"] = "", ["Dangerous Ducklings"] = "Patinhos perigosos", -- ["Deadweight"] = "", +-- ["Defeat the cannibals"] = "", -- A_Classic_Fairytale:backstab +-- ["Defeat the cannibals!|"] = "", -- A_Classic_Fairytale:united +-- ["Defeat the cannibals!|Grenade hint: set the timer with [1-5], aim with [Up]/[Down] and hold [Space] to set power"] = "", -- A_Classic_Fairytale:shadow +-- ["Defeat the cyborgs!"] = "", -- A_Classic_Fairytale:enemy +-- ["Defend yourself!|Hint: You can get tips on using weapons by moving your mouse over them in the weapon selection menu"] = "", -- A_Classic_Fairytale:shadow -- ["Demolition is fun!"] = "", +-- ["Dense Cloud"] = "", -- A_Classic_Fairytale:backstab, A_Classic_Fairytale:dragon, A_Classic_Fairytale:enemy, A_Classic_Fairytale:epil, A_Classic_Fairytale:family, A_Classic_Fairytale:journey, A_Classic_Fairytale:queen, A_Classic_Fairytale:shadow, A_Classic_Fairytale:united +-- ["Dense Cloud must have already told them everything..."] = "", -- A_Classic_Fairytale:shadow -- ["Depleted Kamikaze!"] = "", +-- ["Destroy him, Leaks A Lot! He is responsible for the deaths of many of us!"] = "", -- A_Classic_Fairytale:first_blood -- ["Destroy invaders to score points."] = "", +-- ["Destroy the targets!|Hint: Select the Shoryuken and hit [Space]|P.S. You can use it mid-air."] = "", -- A_Classic_Fairytale:first_blood +-- ["Destroy the targets!|Hint: [Up], [Down] to aim, [Space] to shoot"] = "", -- A_Classic_Fairytale:first_blood +-- ["Did anyone follow you?"] = "", -- A_Classic_Fairytale:united +-- ["Did you see him coming?"] = "", -- A_Classic_Fairytale:shadow +-- ["Did you warn the village?"] = "", -- A_Classic_Fairytale:shadow +-- ["Die, die, die!"] = "", -- A_Classic_Fairytale:dragon +-- ["Disguise as a Rockhopper Penguin: [Swap place with a random enemy hog in the circle]"] = "", -- Continental_supplies +-- ["Dist: "] = "", -- Space_Invasion +-- ["Do not laugh, inexperienced one, for he speaks the truth!"] = "", -- A_Classic_Fairytale:backstab +-- ["Do not let his words fool you, young one! He will stab you in the back as soon as you turn away!"] = "", -- A_Classic_Fairytale:first_blood +-- ["Do the deed"] = "", -- A_Classic_Fairytale:first_blood -- ["Double Kill!"] = "", +-- ["DOUBLE KILL"] = "", -- Mutant +-- ["Do you have any idea how valuable grass is?"] = "", -- A_Classic_Fairytale:enemy +-- ["Do you think you're some kind of god?"] = "", -- A_Classic_Fairytale:enemy +-- ["Dragon's Lair"] = "", -- A_Classic_Fairytale:dragon +-- ["Drills"] = "", -- A_Classic_Fairytale:backstab -- ["Drone Hunter!"] = "", +-- ["Drop a bomb: [drop some heroic wind that will turn into a bomb on impact]"] = "", -- Continental_supplies -- ["Drowner"] = "", +-- ["Dude, all the plants are gone!"] = "", -- A_Classic_Fairytale:family +-- ["Dude, can you see Ramon and Spiky?"] = "", -- A_Classic_Fairytale:journey +-- ["Dude, that's so cool!"] = "", -- A_Classic_Fairytale:backstab +-- ["Dude, we really need a new shaman..."] = "", -- A_Classic_Fairytale:shadow +-- ["Dude, what's this place?!"] = "", -- A_Classic_Fairytale:dragon +-- ["Dude, where are we?"] = "", -- A_Classic_Fairytale:backstab +-- ["Dude, wow! I just had the weirdest high!"] = "", -- A_Classic_Fairytale:backstab +-- ["Duration"] = "", -- Continental_supplies +-- ["Dust storm: [Deals 20 damage to all enemies in the circle]"] = "", -- Continental_supplies -- ["Each turn you get 1-3 random weapons"] = "", -- ["Each turn you get one random weapon"] = "", +-- ["Eagle Eye"] = "", -- A_Classic_Fairytale:backstab +-- ["Eagle Eye: [Blink to the impact ~ one shot]"] = "", -- Continental_supplies +-- ["Ear Sniffer"] = "", -- A_Classic_Fairytale:backstab, A_Classic_Fairytale:epil +-- ["Elderbot"] = "", -- A_Classic_Fairytale:family +-- ["Elimate your captor."] = "", -- User_Mission_-_The_Great_Escape ["Eliminate all enemies"] = "Elimina todos os inimigos", ["Eliminate all targets before your time runs out.|You have unlimited ammo for this mission."] = "Destrói todos os alvos antes do tempo terminar.|Tens munições infinitas para esta missão.", --Bazooka, Shotgun, SniperRifle +-- ["Eliminate enemy hogs and take their weapons."] = "", -- Highlander ["Eliminate Poison before the time runs out"] = "Elimina o Poison antes do tempo terminar.", ["Eliminate the Blue Team"] = "Elimina a equipa azul", -- ["Eliminate the enemy before the time runs out"] = "", -- User_Mission_-_Bamboo_Thicket, User_Mission_-_Newton_and_the_Hammock -- ["Eliminate the enemy hogs to win."] = "Elimina os ouriços inimigos para ganhar.", -- ["Eliminate the enemy specialists."] = "Elimina os especialistas inimigos.", -- ["- Eliminate Unit 3378 |- Feeble Resistance must survive"] = "", +-- ["Elmo"] = "", -- A_Classic_Fairytale:dragon, A_Classic_Fairytale:family, A_Classic_Fairytale:queen -- ["Energetic Engineer"] = "", ["Enjoy the swim..."] = "Aproveita o mergulho", ["[Enter]"] = "[Enter]", +-- ["Europe"] = "", -- Continental_supplies +-- [" ever done to you?!"] = "", -- A_Classic_Fairytale:backstab +-- ["Everyone knows this."] = "", -- A_Classic_Fairytale:enemy +-- ["Every single time!"] = "", -- A_Classic_Fairytale:dragon +-- ["Everything looks OK..."] = "", -- A_Classic_Fairytale:enemy +-- ["Exactly, man! That was my dream."] = "", -- A_Classic_Fairytale:backstab +-- ["Eye Chewer"] = "", -- A_Classic_Fairytale:journey +-- ["FAG"] = "", -- Mutant +-- ["Family Reunion"] = "", -- A_Classic_Fairytale:family ["Fastest lap: "] = "Volta mais rápida: ", -- ["Feeble Resistance"] = "", +-- ["Fell From Grace"] = "", -- A_Classic_Fairytale:backstab, A_Classic_Fairytale:dragon, A_Classic_Fairytale:enemy, A_Classic_Fairytale:epil, A_Classic_Fairytale:family, A_Classic_Fairytale:queen +-- ["Fell From Heaven"] = "", -- A_Classic_Fairytale:enemy, A_Classic_Fairytale:epil, A_Classic_Fairytale:family, A_Classic_Fairytale:first_blood, A_Classic_Fairytale:journey, A_Classic_Fairytale:queen +-- ["Fell From Heaven is the best! Fell From Heaven is the greatest!"] = "", -- A_Classic_Fairytale:family +-- ["Femur Lover"] = "", -- A_Classic_Fairytale:shadow +-- ["Fierce Competition!"] = "", -- Space_Invasion +-- ["Fiery Water"] = "", -- A_Classic_Fairytale:backstab, A_Classic_Fairytale:dragon, A_Classic_Fairytale:enemy, A_Classic_Fairytale:epil, A_Classic_Fairytale:family, A_Classic_Fairytale:queen, A_Classic_Fairytale:united +-- ["Find your tribe!|Cross the lake!"] = "", -- A_Classic_Fairytale:dragon +-- ["Finish your training|Hint: Animations can be skipped with the [Precise] key."] = "", -- A_Classic_Fairytale:first_blood -- ["Fire"] = "", +-- ["Fire a mine: [Does what it says ~ Cant be dropped close to an enemy ~ 1 sec]"] = "", -- Continental_supplies +-- ["First aid kits?!"] = "", -- A_Classic_Fairytale:united +-- ["First Blood"] = "", -- A_Classic_Fairytale:first_blood +-- ["FIRST BLOOD MUTATES"] = "", -- Mutant +-- ["First Steps"] = "", -- A_Classic_Fairytale:first_blood ["Flag captured!"] = "Bandeira capturada!", ["Flag respawned!"] = "Bandeira reiniciada!", ["Flag returned!"] = "Bandeira devolvida!", -- ["Flags, and their home base will be placed where each team ends their first turn."] = "", -- ["Flamer"] = "", +-- ["Flaming Worm"] = "", -- A_Classic_Fairytale:backstab +-- ["Flare: [fire up some bombs depending on hogs depending on hogs in the circle"] = "", -- Continental_supplies +-- ["Flesh for Brainz"] = "", -- A_Classic_Fairytale:journey +-- ["For improved features/stability, play 0.9.18+"] = "", -- WxW +-- ["Free Dense Cloud and continue the mission!"] = "", -- A_Classic_Fairytale:journey -- ["Friendly Fire!"] = "", -- ["fuel extended!"] = "", -- ["GAME BEGUN!!!"] = "", ["Game Modifiers: "] = "Modificadores de Jogo: ", ["GAME OVER!"] = "GAME OVER!", -- ["Game Started!"] = "", +-- ["Game? Was this a game to you?!"] = "", -- A_Classic_Fairytale:enemy +-- ["GasBomb"] = "", -- Continental_supplies +-- ["Gas Gargler"] = "", -- A_Classic_Fairytale:queen +-- ["Get Dense Cloud out of the pit!"] = "", -- A_Classic_Fairytale:journey ["Get on over there and take him out!"] = "Chega-te aqui e acaba com ele!", +-- ["Get on the head of the mole"] = "", -- A_Classic_Fairytale:first_blood +-- ["Get out of there!"] = "", -- User_Mission_-_The_Great_Escape +-- ["Get that crate!"] = "", -- A_Classic_Fairytale:first_blood +-- ["Get the crate on the other side of the island!|"] = "", -- A_Classic_Fairytale:journey +-- ["Get to the target using your rope! |Controls: Left & Right to swing the rope - Up & Down to Contract and Expand!"] = "", -- Basic_Training_-_Rope +-- ["Get your teammates out of their natural prison and save the princess!|Hint: Drilling holes should solve everything.|Hint: It might be a good idea to place a girder before starting to drill. Just saying.|Hint: All your hedgehogs need to be above the marked height!|Hint: Leaks A Lot needs to get really close to the princess!"] = "", -- A_Classic_Fairytale:family +-- ["GG!"] = "", -- User_Mission_-_Rope_Knock_Challenge +-- ["Gimme Bones"] = "", -- A_Classic_Fairytale:backstab +-- ["Glark"] = "", -- A_Classic_Fairytale:shadow -- ["Goal"] = "", ["GO! GO! GO!"] = "GO! GO! GO!", -- ["Good birdy......"] = "Lindo\Bom passarito......" (needs ingame confirmation), +-- ["Good Dude"] = "", -- User_Mission_-_The_Great_Escape +-- ["Good idea, they'll never find us there!"] = "", -- A_Classic_Fairytale:united +-- ["Good luck...or else!"] = "", -- A_Classic_Fairytale:journey ["Good luck out there!"] = "Boa sorte aí fora!", -- ["Good so far!"] = "", -- ["Good to go!"] = "", +-- ["Go on top of the flower"] = "", -- A_Classic_Fairytale:first_blood +-- ["Go, quick!"] = "", -- A_Classic_Fairytale:backstab +-- ["Gorkij"] = "", -- A_Classic_Fairytale:journey +-- ["Go surf!"] = "", -- WxW -- ["GOTCHA!"] = "", -- ["Grab Mines/Explosives"] = "", +-- ["Great choice, Steve! Mind if I call you that?"] = "", -- A_Classic_Fairytale:shadow +-- ["Great work! Now hit it with your Baseball Bat! |Tip: You can change weapon with 'Right Click'!"] = "", -- Basic_Training_-_Rope +-- ["Great! You will be contacted soon for assistance."] = "", -- A_Classic_Fairytale:shadow +-- ["Green lipstick bullet: [Is poisonous]"] = "", -- Continental_supplies +-- ["Greetings, "] = "", -- A_Classic_Fairytale:dragon +-- ["Greetings, cloudy one!"] = "", -- A_Classic_Fairytale:shadow +-- ["Grenade Training"] = "", -- Basic_Training_-_Grenade +-- ["Grenadiers"] = "", -- Basic_Training_-_Grenade +-- ["Guys, do you think there's more of them?"] = "", -- A_Classic_Fairytale:backstab + ["HAHA!"] = "HAHA!", -- A_Classic_Fairytale:enemy + ["Haha!"] = "Haha!", -- A_Classic_Fairytale:united ["Hahahaha!"] = "Hahahaha!", -- ["Haha, now THAT would be something!"] = "", +-- ["Hannibal"] = "", -- A_Classic_Fairytale:epil -- ["Hapless Hogs"] = "", -- [" Hapless Hogs left!"] = "", +-- [" HAS MUTATED\" )"] = "", -- +-- ["Hatless Jerry"] = "", -- A_Classic_Fairytale:queen +-- ["Have no illusions, your tribe is dead, indifferent of your choice."] = "", -- A_Classic_Fairytale:shadow +-- ["Have we ever attacked you first?"] = "", -- A_Classic_Fairytale:enemy -- ["Health crates extend your time."] = "", -- ["Heavy"] = "", +-- ["Heavy Cannfantry"] = "", -- A_Classic_Fairytale:united +-- ["Hedge-cogs"] = "", -- A_Classic_Fairytale:enemy +-- ["Hedgehog projectile: [fire your hog like a Sticky Bomb]"] = "", -- Continental_supplies ["Hedgewars-Basketball"] = "Hedgewars-Basketball", ["Hedgewars-Knockball"] = "Hedgewars-Knockball", +-- ["Hedgibal Lecter"] = "", -- A_Classic_Fairytale:backstab -- ["Heh, it's not that bad."] = "", +-- ["Hello again, "] = "Olá novamente\outra vez, ", -- A_Classic_Fairytale:family +-- ["Help me, Leaks!"] = "", -- A_Classic_Fairytale:journey +-- ["Help me, please!!!"] = "", -- A_Classic_Fairytale:journey +-- ["Help me, please!"] = "", -- A_Classic_Fairytale:journey +-- ["He moves like an eagle in the sky."] = "", -- A_Classic_Fairytale:first_blood +-- ["He must be in the village already."] = "", -- A_Classic_Fairytale:journey +-- ["Here, let me help you!"] = "", -- A_Classic_Fairytale:backstab +-- ["Here, let me help you save her!"] = "", -- A_Classic_Fairytale:family +-- ["Here...pick your weapon!"] = "", -- A_Classic_Fairytale:first_blood +-- ["Hero Team"] = "", -- User_Mission_-_The_Great_Escape +-- ["He's so brave..."] = "", -- A_Classic_Fairytale:first_blood +-- ["He won't be selling us out anymore!"] = "", -- A_Classic_Fairytale:backstab +-- ["Hey, guys!"] = ",pessoal!", -- A_Classic_Fairytale:backstab +-- ["Hey guys!"] = "pessoal!", -- A_Classic_Fairytale:united +-- ["Hey! This is cheating!"] = "", -- A_Classic_Fairytale:journey +-- ["HIGHLANDER"] = "", -- Highlander +-- ["Hightime"] = "", -- A_Classic_Fairytale:first_blood +-- ["Hint: Double Jump - Press [Backspace] twice"] = "", -- A_Classic_Fairytale:first_blood +-- ["Hint: Select the BlowTorch, aim and press [Fire]. Press [Fire] again to stop.|Don't blow up the crate."] = "", -- A_Classic_Fairytale:journey +-- ["Hint: Select the LowGravity and press [Fire]."] = "", -- A_Classic_Fairytale:journey +-- ["Hint: you might want to stay out of sight and take all the crates...|"] = "", -- A_Classic_Fairytale:journey +-- ["His arms are so strong!"] = "", -- A_Classic_Fairytale:first_blood -- ["Hit Combo!"] = "", +-- ["Hmmm...actually...I didn't either."] = "", -- A_Classic_Fairytale:enemy ["Hmmm..."] = "Hmmm...", +-- ["Hmmm, I'll have to find some way of moving him off this anti-portal surface..."] = "", -- portal +-- ["Hmmm...it's a draw. How unfortunate!"] = "", -- A_Classic_Fairytale:enemy +-- ["Hmmm...perhaps a little more time will help."] = "", -- A_Classic_Fairytale:first_blood +-- ["Hogminator"] = "", -- A_Classic_Fairytale:family +-- ["Hogs in sight!"] = "", -- Continental_supplies +-- ["HOLY SHIT!"] = "", -- Mutant +-- ["Honest Lee"] = "", -- A_Classic_Fairytale:enemy ["Hooray!"] = "Hurra!", +-- ["Hostage Situation"] = "", -- A_Classic_Fairytale:family +-- ["How can I ever repay you for saving my life?"] = "", -- A_Classic_Fairytale:journey +-- ["How come in a village full of warriors, it's up to me to save it?"] = "", -- A_Classic_Fairytale:dragon +-- ["How difficult would you like it to be?"] = "", -- A_Classic_Fairytale:first_blood +-- ["HOW DO THEY KNOW WHERE WE ARE???"] = "", -- A_Classic_Fairytale:united +-- ["However, if you fail to do so, she dies a most violent death, just like your friend! Muahahaha!"] = "", -- A_Classic_Fairytale:journey +-- ["However, if you fail to do so, she dies a most violent death! Muahahaha!"] = "", -- A_Classic_Fairytale:journey +-- ["However, my mates don't agree with me on letting you go..."] = "", -- A_Classic_Fairytale:dragon +-- [" HP"] = "", -- Mutant ["Hunter"] = "Comando", --Bazooka, Shotgun, SniperRifle +-- ["I believe there's more of them."] = "", -- A_Classic_Fairytale:backstab +-- ["I can see you have been training diligently."] = "", -- A_Classic_Fairytale:first_blood +-- ["I can't believe it worked!"] = "", -- A_Classic_Fairytale:shadow +-- ["I can't believe this!"] = "", -- A_Classic_Fairytale:enemy +-- ["I can't believe what I'm hearing!"] = "", -- A_Classic_Fairytale:backstab +-- ["I can't wait any more, I have to save myself!"] = "", -- A_Classic_Fairytale:shadow +-- ["I could just teleport myself there..."] = "", -- A_Classic_Fairytale:family +-- ["I'd better get going myself."] = "", -- A_Classic_Fairytale:journey +-- ["I didn't until about a month ago."] = "", -- A_Classic_Fairytale:enemy +-- ["I don't know how you did that.. But good work! |The next one should be easy as cake for you!"] = "", -- Basic_Training_-_Rope +-- ["I feel something...a place! They will arrive near the circles!"] = "", -- A_Classic_Fairytale:backstab +-- ["If only I had a way..."] = "", -- A_Classic_Fairytale:backstab +-- ["If only I were given a chance to explain my being here..."] = "", -- A_Classic_Fairytale:first_blood +-- ["I forgot that she's the daughter of the chief, too..."] = "", -- A_Classic_Fairytale:backstab +-- ["If they try coming here, they can have a taste of my delicious knuckles!"] = "", -- A_Classic_Fairytale:united +-- ["If you agree to provide the information we need, you will be spared!"] = "", -- A_Classic_Fairytale:shadow +-- ["If you can get that crate fast enough, your beloved \"princess\" may go free."] = "", -- A_Classic_Fairytale:journey +-- ["If you decide to help us, though, we will no longer need to find a new governor for the island."] = "", -- A_Classic_Fairytale:shadow +-- ["If you get stuck, use your Desert Eagle or restart the mission!|"] = "", -- A_Classic_Fairytale:journey +-- ["If you know what I mean..."] = "", -- A_Classic_Fairytale:shadow +-- ["If you say so..."] = "", -- A_Classic_Fairytale:shadow +-- ["If you wish to restart the course, hold [Precise] while your turn ends (e.g with Skip)"] = "", -- +-- ["I guess you'll have to kill them."] = "", -- A_Classic_Fairytale:dragon +-- ["I have come to make you an offering..."] = "", -- A_Classic_Fairytale:shadow +-- ["I have no idea where that mole disappeared...Can you see it?"] = "", -- A_Classic_Fairytale:shadow +-- ["I have to follow that alien."] = "", -- A_Classic_Fairytale:backstab +-- ["I have to get back to the village!"] = "", -- A_Classic_Fairytale:shadow +-- ["I hope you are prepared for a small challenge, young one."] = "", -- A_Classic_Fairytale:first_blood +-- ["I just don't want to sink to your level."] = "", -- A_Classic_Fairytale:backstab +-- ["I just found out that they have captured your princess!"] = "", -- A_Classic_Fairytale:family +-- ["I just wonder where Ramon and Spiky disappeared..."] = "", -- A_Classic_Fairytale:journey +-- ["I'll hold them off while you return to the village!"] = "", -- A_Classic_Fairytale:shadow +-- ["Imagine those targets are the wolves that killed your parents! Take your anger out on them!"] = "", -- A_Classic_Fairytale:first_blood +-- ["I'm...alive? How? Why?"] = "", -- A_Classic_Fairytale:backstab +-- ["I'm a ninja."] = "", -- A_Classic_Fairytale:dragon +-- ["I marked the place of their arrival. You're welcome!"] = "", -- A_Classic_Fairytale:backstab +-- ["I'm certain that this is a misunderstanding, fellow hedgehogs!"] = "", -- A_Classic_Fairytale:first_blood +-- ["I mean, none of you ceased to live."] = "", -- A_Classic_Fairytale:enemy +-- ["I'm getting old for this!"] = "", -- A_Classic_Fairytale:family +-- ["I'm getting thirsty..."] = "", -- A_Classic_Fairytale:family +-- ["I'm here to help you rescue her."] = "", -- A_Classic_Fairytale:family +-- ["I'm not sure about that!"] = "", -- A_Classic_Fairytale:united +-- ["Impressive...you are still dry as the corpse of a hawk after a week in the desert..."] = "", -- A_Classic_Fairytale:first_blood +-- ["I'm so scared!"] = "", -- A_Classic_Fairytale:united +-- ["Incredible..."] = "", -- A_Classic_Fairytale:shadow +-- ["I need to find the others!"] = "", -- A_Classic_Fairytale:backstab +-- ["I need to get to the other side of this island, fast!"] = "", -- A_Classic_Fairytale:journey +-- ["I need to move the tribe!"] = "", -- A_Classic_Fairytale:united +-- ["I need to prevent their arrival!"] = "", -- A_Classic_Fairytale:backstab +-- ["I need to warn the others."] = "", -- A_Classic_Fairytale:backstab +-- ["In fact, you are the only one that's been acting strangely."] = "", -- A_Classic_Fairytale:backstab +-- ["In order to get to the other side, you need to collect the crates first.|"] = "", -- A_Classic_Fairytale:dragon ["Instructor"] = "Instrutor", -- 01#Boot_Camp, User_Mission_-_Dangerous_Ducklings +-- ["Interesting idea, haha!"] = "", -- A_Classic_Fairytale:enemy +-- ["Interesting! Last time you said you killed a cannibal!"] = "", -- A_Classic_Fairytale:backstab +-- ["In the meantime, take these and return to your \"friend\"!"] = "", -- A_Classic_Fairytale:shadow ["invaders destroyed"] = "invasores destruidos", +-- ["Invasion"] = "", -- A_Classic_Fairytale:united +-- ["I saw it with my own eyes!"] = "", -- A_Classic_Fairytale:shadow +-- ["I see..."] = "", -- A_Classic_Fairytale:shadow +-- ["I see you have already taken the leap of faith."] = "", -- A_Classic_Fairytale:first_blood +-- ["I see you would like his punishment to be more...personal..."] = "", -- A_Classic_Fairytale:first_blood +-- ["I sense another wave of cannibals heading my way!"] = "", -- A_Classic_Fairytale:backstab +-- ["I sense another wave of cannibals heading our way!"] = "", -- A_Classic_Fairytale:backstab +-- ["I shouldn't have drunk that last pint."] = "", -- A_Classic_Fairytale:dragon +-- ["Is this place in my head?"] = "", -- A_Classic_Fairytale:dragon +-- ["It doesn't matter. I won't let that alien hurt my daughter!"] = "", -- A_Classic_Fairytale:dragon +-- ["I think we are safe here."] = "", -- A_Classic_Fairytale:backstab +-- ["I thought their shaman died when he tried our medicine!"] = "", -- A_Classic_Fairytale:shadow +-- ["It is called 'Hogs of Steel'."] = "", -- A_Classic_Fairytale:enemy +-- ["It is time to practice your fighting skills."] = "", -- A_Classic_Fairytale:first_blood +-- ["It must be a childhood trauma..."] = "", -- A_Classic_Fairytale:family +-- ["It must be the aliens!"] = "", -- A_Classic_Fairytale:backstab +-- ["It must be the aliens' deed."] = "", -- A_Classic_Fairytale:backstab +-- ["It must be the cyborgs again!"] = "", -- A_Classic_Fairytale:enemy +-- ["I told you, I just found them."] = "", -- A_Classic_Fairytale:backstab -- ["It's a good thing SUDDEN DEATH is 99 turns away..."] = "", +-- ["It's always up to women to clear up the mess men created!"] = "", -- A_Classic_Fairytale:dragon +-- ["It's a shame, I forgot how to do that!"] = "", -- A_Classic_Fairytale:family +-- ["It's impossible to communicate with the spirits without a shaman."] = "", -- A_Classic_Fairytale:shadow +-- ["It's over..."] = "", -- A_Classic_Fairytale:shadow +-- ["It's time you learned that your actions have consequences!"] = "", -- A_Classic_Fairytale:journey +-- ["It's worth more than wood!"] = "", -- A_Classic_Fairytale:enemy +-- ["It wants our brains!"] = "", -- A_Classic_Fairytale:shadow +-- ["It was not a dream, unwise one!"] = "", -- A_Classic_Fairytale:backstab +-- ["I've seen this before. They just appear out of thin air."] = "", -- A_Classic_Fairytale:united +-- ["I want to play a game..."] = "", -- A_Classic_Fairytale:journey +-- ["I want to see how it handles this!"] = "", -- A_Classic_Fairytale:backstab +-- ["I wish to help you, "] = "", -- A_Classic_Fairytale:dragon +-- ["I wonder where Dense Cloud is..."] = "", -- A_Classic_Fairytale:journey, A_Classic_Fairytale:shadow +-- ["I wonder why I'm so angry all the time..."] = "", -- A_Classic_Fairytale:family +-- ["I won't let you kill her!"] = "", -- A_Classic_Fairytale:journey +-- ["Jack"] = "", -- A_Classic_Fairytale:dragon, A_Classic_Fairytale:family, A_Classic_Fairytale:queen +-- ["Jeremiah"] = "", -- A_Classic_Fairytale:dragon +-- ["John"] = "", -- A_Classic_Fairytale:journey +-- ["Judas"] = "", -- A_Classic_Fairytale:backstab -- ["Jumping is disabled"] = "", +-- ["Just kidding, none of you have died!"] = "", -- A_Classic_Fairytale:enemy +-- ["Just on a walk."] = "", -- A_Classic_Fairytale:united +-- ["Just wait till I get my hands on that trauma! ARGH!"] = "", -- A_Classic_Fairytale:family ["Kamikaze Expert!"] = "Kamikaze profissional!", -- ["Keep it up!"] = "Continua assim!", +-- ["Kerguelen"] = "", -- Continental_supplies -- ["Killing spree!"] = "", +-- ["KILL IT!"] = "", -- A_Classic_Fairytale:first_blood -- ["KILLS"] = "", +-- ["Kill the aliens!"] = "", -- A_Classic_Fairytale:dragon +-- ["Kill the cannibal!"] = "", -- A_Classic_Fairytale:first_blood +-- ["Kill the traitor...or spare his life!|Kill him or press [Precise]!"] = "", -- A_Classic_Fairytale:backstab -- ["Last Target!"] = "", +-- ["Leader"] = "", -- A_Classic_Fairytale:enemy +-- ["Leaderbot"] = "", -- A_Classic_Fairytale:queen +-- ["Leaks A Lot"] = "", -- A_Classic_Fairytale:backstab, A_Classic_Fairytale:dragon, A_Classic_Fairytale:enemy, A_Classic_Fairytale:epil, A_Classic_Fairytale:family, A_Classic_Fairytale:first_blood, A_Classic_Fairytale:journey, A_Classic_Fairytale:queen, A_Classic_Fairytale:shadow, A_Classic_Fairytale:united +-- ["Leaks A Lot, depressed for killing his loved one, failed to save the village..."] = "", -- A_Classic_Fairytale:journey +-- ["Leaks A Lot gave his life for his tribe! He should have survived!"] = "", -- A_Classic_Fairytale:first_blood +-- ["Leaks A Lot must survive!"] = "", -- A_Classic_Fairytale:journey +-- ["Led Heart"] = "", -- A_Classic_Fairytale:queen +-- ["Lee"] = "", -- A_Classic_Fairytale:dragon, A_Classic_Fairytale:family, A_Classic_Fairytale:queen ["[Left Shift]"] = "[Shift Esquerdo]", +-- ["Let a Continent provide your weapons!"] = "", -- Continental_supplies +-- ["Let me test your skills a little, will you?"] = "", -- A_Classic_Fairytale:journey +-- ["Let's go home!"] = "", -- A_Classic_Fairytale:journey +-- ["Let's head back to the village!"] = "", -- A_Classic_Fairytale:shadow +-- ["Let's see what your comrade does now!"] = "", -- A_Classic_Fairytale:journey +-- ["Let's show those cannibals what we're made of!"] = "", -- A_Classic_Fairytale:backstab +-- ["Let them have a taste of my fury!"] = "", -- A_Classic_Fairytale:backstab +-- ["Let us help, too!"] = "", -- A_Classic_Fairytale:backstab +-- ["Light Cannfantry"] = "", -- A_Classic_Fairytale:united ["Listen up, maggot!!"] = "Oiçam bem suas larvas!!", +-- ["Little did they know that this hunt will mark them forever..."] = "", -- A_Classic_Fairytale:shadow -- ["Lively Lifeguard"] = "", +-- ["Lonely Cries: [Rise the water if no hog is in the circle and deal 1 damage to all hogs]"] = "", -- Continental_supplies +-- ["Look, I had no choice!"] = "", -- A_Classic_Fairytale:backstab +-- ["Look out! There's more of them!"] = "", -- A_Classic_Fairytale:backstab +-- ["Look out! We're surrounded by cannibals!"] = "", -- A_Classic_Fairytale:enemy +-- ["Looks like the whole world is falling apart!"] = "", -- A_Classic_Fairytale:enemy +-- ["Luckily, I've managed to snatch some of them."] = "", -- A_Classic_Fairytale:united +-- ["LUDICROUS KILL"] = "", -- Mutant +-- ["May the spirits aid you in all your quests!"] = "", -- A_Classic_Fairytale:backstab +-- ["Medicine: [Fire some exploding medicine that will heal all hogs effected by the explosion]"] = "", -- Continental_supplies +-- ["MEGA KILL"] = "", -- Mutant +-- ["Meiwes"] = "", -- A_Classic_Fairytale:backstab +-- ["Mindy"] = "", -- A_Classic_Fairytale:united -- ["Mine Deployer"] = "", -- ["Mine Eater!"] = "", ["|- Mines Time:"] = "|- Tempo das minas:", -- User_Mission_-_Diver, User_Mission_-_Spooky_Tree, User_Mission_-_Teamwork ["MISSION FAILED"] = "MISSÃO FALHADA", -- User_Mission_-_Dangerous_Ducklings, User_Mission_-_Diver, User_Mission_-_Spooky_Tree, User_Mission_-_Teamwork ["MISSION SUCCESSFUL"] = "MISSÃO COMPLETA", -- User_Mission_-_Spooky_Tree, User_Mission_-_Teamwork ["MISSION SUCCESS"] = "MISSÃO COMPLETA", -- User_Mission_-_Diver, User_Mission_-_Spooky_Tree, User_Mission_-_Teamwork +-- ["Molotov"] = "", -- Continental_supplies +-- ["MONSTER KILL"] = "", -- Mutant +-- ["More Natives"] = "", -- A_Classic_Fairytale:epil ["Movement: [Up], [Down], [Left], [Right]"] = "Movimento: [Cima], [Baixo], [Esquerda], [Direita]", -- ["Multi-shot!"] = "", +-- ["Muriel"] = "", -- A_Classic_Fairytale:backstab, A_Classic_Fairytale:dragon, A_Classic_Fairytale:family, A_Classic_Fairytale:queen +-- ["Muscle Dissolver"] = "", -- A_Classic_Fairytale:shadow +-- ["-------"] = "", -- Mutant +-- ["Nade Boy"] = "", -- Basic_Training_-_Grenade +-- ["Name"] = "", -- A_Classic_Fairytale:queen -- ["Nameless Heroes"] = "", +-- ["Nancy Screw"] = "", -- A_Classic_Fairytale:enemy, A_Classic_Fairytale:queen +-- ["Napalm rocket: [Fire a bomb with napalm!]"] = "", -- Continental_supplies +-- ["Natives"] = "", -- A_Classic_Fairytale:backstab, A_Classic_Fairytale:dragon, A_Classic_Fairytale:enemy, A_Classic_Fairytale:epil, A_Classic_Fairytale:family, A_Classic_Fairytale:first_blood, A_Classic_Fairytale:journey, A_Classic_Fairytale:queen, A_Classic_Fairytale:shadow, A_Classic_Fairytale:united -- ["New Barrels Per Turn"] = "", -- ["NEW CLAN RECORD: "] = "", ["NEW fastest lap: "] = "NOVA volta recorde: ", -- ["New Mines Per Turn"] = "", -- ["NEW RACE RECORD: "] = "", -- ["Newton's Hammock"] = "", +-- ["Nicely done, meatbags!"] = "", -- A_Classic_Fairytale:enemy +-- ["Nice work, "] = "", -- A_Classic_Fairytale:dragon +-- ["Nice work!"] = "", -- A_Classic_Fairytale:enemy +-- ["Nilarian"] = "", -- A_Classic_Fairytale:queen +-- ["No, I came back to help you out..."] = "", -- A_Classic_Fairytale:shadow +-- ["No...I wonder where they disappeared?!"] = "", -- A_Classic_Fairytale:journey +-- ["Nom-Nom"] = "", -- A_Classic_Fairytale:journey +-- ["NomNom"] = "", -- A_Classic_Fairytale:united +-- ["Nope. It was one fast mole, that's for sure."] = "", -- A_Classic_Fairytale:shadow +-- ["No! Please, help me!"] = "", -- A_Classic_Fairytale:journey +-- ["NORMAL"] = "", -- Continental_supplies +-- ["North America"] = "", -- Continental_supplies +-- ["Not all hogs are born equal."] = "", -- Highlander -- ["NOT ENOUGH WAYPOINTS"] = "", +-- ["Not now, Fiery Water!"] = "", -- A_Classic_Fairytale:backstab ["Not So Friendly Match"] = "Partida não muito amigável", -- Basketball, Knockball +-- ["Not you again! My head still hurts from last time!"] = "", -- A_Classic_Fairytale:shadow +-- ["No, we made sure of that!"] = "", -- A_Classic_Fairytale:united +-- ["Now find the next target! |Tip: Normally you lose health by falling down, so be careful!"] = "", -- Basic_Training_-_Rope +-- ["No! What have I done?! What have YOU done?!"] = "", -- A_Classic_Fairytale:journey +-- ["No. Where did he come from?"] = "", -- A_Classic_Fairytale:shadow +-- ["Now how do I get on the other side?!"] = "", -- A_Classic_Fairytale:dragon +-- ["No. You and the rest of the tribe are safer there!"] = "", -- A_Classic_Fairytale:backstab +-- ["Obliterate them!|Hint: You might want to take cover..."] = "", -- A_Classic_Fairytale:shadow +-- ["Obstacle course"] = "", -- A_Classic_Fairytale:dragon +-- ["Of course I have to save her. What did I expect?!"] = "", -- A_Classic_Fairytale:family +-- ["OH, COME ON!"] = "", -- A_Classic_Fairytale:journey +-- ["Oh, my!"] = "", -- A_Classic_Fairytale:first_blood +-- ["Oh, my! This is even more entertaining than I've expected!"] = "", -- A_Classic_Fairytale:backstab ["Oh no! Just try again!"] = "Oh não! Tenta novamente!", -- User_Mission_-_Diver, User_Mission_-_Spooky_Tree, User_Mission_-_Teamwork +-- ["Oh no, not "] = "", -- A_Classic_Fairytale:backstab, A_Classic_Fairytale:united ["Oh no! Time's up! Just try again."] = "Oh não! Terminou o tempo! Tenta novamente.", --Bazooka, Shotgun, SniperRifle +-- ["Oh no! You failed! Just try again."] = "", -- Basic_Training_-_Cluster_Bomb +-- ["Oh, silly me! I forgot that I'm the shaman."] = "", -- A_Classic_Fairytale:backstab +-- ["Olive"] = "", -- A_Classic_Fairytale:united +-- ["Omnivore"] = "", -- A_Classic_Fairytale:first_blood +-- ["Once upon a time, on an island with great natural resources, lived two tribes in heated conflict..."] = "", -- A_Classic_Fairytale:first_blood +-- ["ONE HOG PER TEAM! KILLING EXCESS HEDGES"] = "", -- Mutant +-- ["One tribe was peaceful, spending their time hunting and training, enjoying the small pleasures of life..."] = "", -- A_Classic_Fairytale:first_blood +-- ["Oops...I dropped them."] = "", -- A_Classic_Fairytale:united +-- ["Open that crate and we will continue!"] = "", -- A_Classic_Fairytale:first_blood ["Operation Diver"] = "Operação Mergulho", ["Opposing Team: "] = "Equipa adversária", +-- ["Orlando Boom!"] = "", -- A_Classic_Fairytale:queen +-- ["Ouch!"] = "", -- User_Mission_-_Rope_Knock_Challenge +-- ["Our tribe, our beautiful island!"] = "", -- A_Classic_Fairytale:enemy +-- ["Parachute"] = "", -- Continental_supplies ["Pathetic Hog #%d"] = "Ouriço patético #%d", -- ["Pathetic Resistance"] = "", -- User_Mission_-_Bamboo_Thicket, User_Mission_-_Newton_and_the_Hammock +-- ["Perfect! Now try to get the next crate without hurting yourself!"] = "", -- A_Classic_Fairytale:first_blood -- ["Per-Hog Ammo"] = "", +-- ["- Per team weapons|- 9 weaponschemes|- Unique new weapons| |Select continent first round with the Weapon Menu or by ([switch/tab]=Increase,[presice/left shift]=Decrease)"] = "", -- +-- ["Pfew! That was close!"] = "", -- A_Classic_Fairytale:shadow +-- ["Piñata bullet: [Contains some sweet candy!]"] = "", -- Continental_supplies +-- ["Pings left:"] = "", -- Space_Invasion -- ["Place more waypoints using [ENTER]"] = "", -- ["Place more waypoints using the 'Air Attack' weapon."] = "", +-- ["Planes Used:"] = "", -- User_Mission_-_RCPlane_Challenge +-- ["Planes Used"] = "", -- User_Mission_-_RCPlane_Challenge +-- ["Play with me!"] = "", -- A_Classic_Fairytale:shadow +-- ["Please place the way-point further from the waterline."] = "", -- Racer +-- ["Please place the way-point in the open, within the map boundaries."] = "", -- Racer +-- ["Please, stop releasing your \"smoke signals\"!"] = "", -- A_Classic_Fairytale:shadow +-- ["Point Blank Combo!"] = "", -- Space_Invasion -- ["points"] = "", -- Control, Space_Invasion ["Poison"] = "Poison", +-- ["Portal hint: one goes to the destination, and one is the entrance.|"] = "", -- A_Classic_Fairytale:dragon +-- ["Portal mission"] = "", -- portal ["Power Remaining"] = "Energia Restante", ["Prepare yourself"] = "Prepara-te!", +-- ["Press [Enter] to accept this configuration."] = "", -- WxW +-- ["Press [Left] or [Right] to move around, [Enter] to jump"] = "", -- A_Classic_Fairytale:first_blood -- ["Press [Precise] to skip intro"] = "", +-- ["Private Novak"] = "", -- Basic_Training_-_Cluster_Bomb +-- ["Protect yourselves!|Grenade hint: set the timer with [1-5], aim with [Up]/[Down] and hold [Space] to set power"] = "", -- A_Classic_Fairytale:shadow -- ["Race complexity limit reached."] = "", -- ["RACER"] = "", +-- ["Rachel"] = "", -- A_Classic_Fairytale:dragon, A_Classic_Fairytale:family, A_Classic_Fairytale:queen +-- ["Radar Ping"] = "", -- Space_Invasion +-- ["Raging Buffalo"] = "", -- A_Classic_Fairytale:backstab, A_Classic_Fairytale:dragon, A_Classic_Fairytale:enemy, A_Classic_Fairytale:epil, A_Classic_Fairytale:family, A_Classic_Fairytale:queen, A_Classic_Fairytale:united +-- ["Ramon"] = "", -- A_Classic_Fairytale:enemy, A_Classic_Fairytale:epil, A_Classic_Fairytale:family, A_Classic_Fairytale:queen, A_Classic_Fairytale:shadow +-- ["RC PLANE TRAINING"] = "", -- User_Mission_-_RCPlane_Challenge +-- ["Really?! You thought you could harm me with your little toys?"] = "", -- A_Classic_Fairytale:shadow +-- ["Regurgitator"] = "", -- A_Classic_Fairytale:backstab +-- ["Reinforcements"] = "", -- A_Classic_Fairytale:backstab +-- ["Remember: The rope only bend around objects, |if it doesn't hit anything it's always stright!"] = "", -- Basic_Training_-_Rope +-- ["Remember this, pathetic animal: when the day comes, you will regret your blind loyalty!"] = "", -- A_Classic_Fairytale:shadow [" - 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"] = " - Traz a bandeira inimiga para tua base | - A primeira equipa a captura-la 3 vezes ganha | - Apenas podes marcar quando a tua bandeira está na tua base | - Os ouriços largam a bandeira se morrerem ou se afogarem | - As bandeiras abandonadas podem ser devolvidas ou recapturadas | - Os ouriços mortos ressuscitam", +-- ["Return to Leaks A Lot! If you get stuck, press [Precise] to try again!"] = "", -- A_Classic_Fairytale:shadow +-- ["Righteous Beard"] = "", -- A_Classic_Fairytale:backstab, A_Classic_Fairytale:dragon, A_Classic_Fairytale:enemy, A_Classic_Fairytale:epil, A_Classic_Fairytale:family, A_Classic_Fairytale:first_blood, A_Classic_Fairytale:queen, A_Classic_Fairytale:united +-- ["ROPE-KNOCKING"] = "", -- User_Mission_-_Rope_Knock_Challenge +-- ["Rope Training"] = "", -- Basic_Training_-_Rope +-- ["Rot Molester"] = "", -- A_Classic_Fairytale:shadow -- ["Round Limit:"] = "", -- ["Round Limit"] = "", -- ["Rounds Complete: "] = "", -- ["Rounds Complete"] = "", ["RULES OF THE GAME [Press ESC to view]"] = "REGRAS DE JOGO [Pressiona ESC para as visualizar]", +-- ["Rusty Joe"] = "", -- A_Classic_Fairytale:queen -- ["s|"] = "", +-- ["Sabotage: [Sabotage all hogs in the circle and deal ~10 dmg]"] = "", -- Continental_supplies +-- ["Salivaslurper"] = "", -- A_Classic_Fairytale:united +-- ["Salvation"] = "", -- A_Classic_Fairytale:family +-- ["Salvation was one step closer now..."] = "", -- A_Classic_Fairytale:dragon -- ["Save as many hapless hogs as possible!"] = "", +-- ["Save Fell From Heaven!"] = "", -- A_Classic_Fairytale:journey +-- ["Save Leaks A Lot!|Hint: The Switch utility might be of help to you."] = "", -- A_Classic_Fairytale:shadow +-- ["Save the princess! All your hogs must survive!|Hint: Kill the cyborgs first! Use the ammo very carefully!|Hint: You might want to spare a girder for cover!"] = "", -- A_Classic_Fairytale:family +-- ["Save the princess by collecting the crate in under 12 turns!"] = "", -- A_Classic_Fairytale:journey +-- ["Scalp Muncher"] = "", -- A_Classic_Fairytale:backstab +-- ["Score"] = "", -- Mutant ["SCORE"] = "RESULTADOS", +-- ["Scream from a Walrus: [Deal 20 damage + 10% of your hogs health to all hogs around you and get half back]"] = "", -- Continental_supplies ["sec"] = "seg", -- 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 +-- ["Seduction"] = "", -- Continental_supplies +-- ["Seems like every time you take a \"walk\", the enemy find us!"] = "", -- A_Classic_Fairytale:backstab +-- ["See that crate farther on the right?"] = "", -- A_Classic_Fairytale:first_blood ["See ya!"] = "Chau!", +-- ["Segmentation Paul"] = "", -- A_Classic_Fairytale:dragon +-- ["Select continent!"] = "", -- Continental_supplies +-- ["Select difficulty: [Left] - easier or [Right] - harder"] = "", -- A_Classic_Fairytale:first_blood ["selected!"] = "seleccionado!", +-- ["... share your beauty with the world every morning, my princess!"] = "", -- A_Classic_Fairytale:journey +-- ["She's behind that tall thingy."] = "", -- A_Classic_Fairytale:family -- ["Shield boosted! +30 power"] = "Escudo melhorado! +30 energia (-unconfirmed)", ["Shield Depleted"] = "Escudo Esgotado", ["Shield is fully recharged!"] = "Escudo completamente recarregado!", @@ -161,61 +645,340 @@ ["Shield OFF:"] = "Escudo DESLIGADO:", ["Shield ON:"] = "Escudo LIGADO:", -- ["Shield Seeker!"] = "", +-- ["Shotgun"] = "", -- Continental_supplies ["Shotgun Team"] = "Caçadores", ["Shotgun Training"] = "Treino com Caçadeira", -- ["shots remaining."] = "tiros restantes.", -- ["Silly"] = "", -- ["Sinky"] = "", +-- ["Sirius Lee"] = "", -- A_Classic_Fairytale:enemy ["%s is out and Team %d|scored a penalty!| |Score:"] = "%s está fora e a equipa %d|perde um ponto!| |Pontuação:", -- Basketball, Knockball ["%s is out and Team %d|scored a point!| |Score:"] = "%s está fora e a equipa %d|soma um ponto!| |Pontuação:", -- Basketball, Knockball +-- ["Slippery"] = "", -- A_Classic_Fairytale:journey +-- ["Smith 0.97"] = "", -- A_Classic_Fairytale:enemy +-- ["Smith 0.98"] = "", -- A_Classic_Fairytale:enemy +-- ["Smith 0.99a"] = "", -- A_Classic_Fairytale:enemy +-- ["Smith 0.99b"] = "", -- A_Classic_Fairytale:enemy +-- ["Smith 0.99f"] = "", -- A_Classic_Fairytale:enemy +-- ["Smith 1.0"] = "", -- A_Classic_Fairytale:enemy +-- ["Sniper Rifle"] = "", -- Continental_supplies +-- ["Sniper!"] = "", -- Space_Invasion ["Sniper Training"] = "Treino com Sniper", ["Sniperz"] = "Sniperz", +-- ["So humiliating..."] = "", -- A_Classic_Fairytale:first_blood +-- ["South America"] = "", -- Continental_supplies +-- ["So? What will it be?"] = "", -- A_Classic_Fairytale:shadow +-- ["Spawn the crate, and attack!"] = "", -- WxW +-- ["Special Weapons:"] = "", -- Continental_supplies +-- ["Spiky Cheese"] = "", -- A_Classic_Fairytale:enemy, A_Classic_Fairytale:epil, A_Classic_Fairytale:family, A_Classic_Fairytale:queen, A_Classic_Fairytale:shadow +-- ["Spleenlover"] = "", -- A_Classic_Fairytale:united -- ["Sponge"] = "", -- ["Spooky Tree"] = "", ["s"] = "s", -- GaudyRacer, Space_Invasion -- ["STATUS UPDATE"] = "", -- GaudyRacer, Space_Invasion +-- ["Steel Eye"] = "", -- A_Classic_Fairytale:queen +-- ["Step By Step"] = "", -- A_Classic_Fairytale:first_blood +-- ["Steve"] = "", -- A_Classic_Fairytale:dragon, A_Classic_Fairytale:family, A_Classic_Fairytale:queen +-- ["Sticky Mine"] = "", -- Continental_supplies +-- ["Stronglings"] = "", -- A_Classic_Fairytale:shadow +-- ["Structure"] = "", -- Continental_supplies +-- ["Super Weapons"] = "", -- WxW +-- ["Surf Before Crate"] = "", -- WxW +-- ["Surfer! +15 points!"] = "", -- Space_Invasion +-- ["Surfer!"] = "", -- WxW +-- ["Survive!|Hint: Cinematics can be skipped with the [Precise] key."] = "", -- A_Classic_Fairytale:shadow +-- ["Swing, Leaks A Lot, on the wings of the wind!"] = "", -- A_Classic_Fairytale:first_blood -- ["Switched to "] = "", +-- ["Syntax Errol"] = "", -- A_Classic_Fairytale:dragon +-- ["Talk about mixed signals..."] = "", -- A_Classic_Fairytale:dragon ["Team %d: "] = "Equipa %d: ", -- ["Team Scores"] = "", -- Control, Space_Invasion +-- ["Teleport hint: just use the mouse to select the destination!"] = "", -- A_Classic_Fairytale:dragon +-- ["Thanks!"] = "", -- A_Classic_Fairytale:family +-- ["Thank you, my hero!"] = "", -- A_Classic_Fairytale:family +-- ["Thank you, oh, thank you, Leaks A Lot!"] = "", -- A_Classic_Fairytale:journey +-- ["Thank you, oh, thank you, my heroes!"] = "", -- A_Classic_Fairytale:journey +-- ["That is, indeed, very weird..."] = "", -- A_Classic_Fairytale:united +-- ["That makes it almost invaluable!"] = "", -- A_Classic_Fairytale:enemy +-- ["That ought to show them!"] = "", -- A_Classic_Fairytale:backstab +-- ["That's for my father!"] = "", -- A_Classic_Fairytale:backstab +-- ["That shaman sure knows what he's doing!"] = "", -- A_Classic_Fairytale:shadow -- ["That Sinking Feeling"] = "", +-- ["That's not our problem!"] = "", -- A_Classic_Fairytale:enemy +-- ["That's typical of you!"] = "", -- A_Classic_Fairytale:family +-- ["That was just mean!"] = "", -- A_Classic_Fairytale:backstab, A_Classic_Fairytale:united ["That was pointless."] = "Isso foi completamente desnecessario.", +-- ["The answer is...entertaintment. You'll see what I mean."] = "", -- A_Classic_Fairytale:backstab +-- ["The anti-portal zone is all over the floor, and I have nothing to kill him...Droping something could hurt him enough to kill him..."] = "", -- portal +-- ["The Bull's Eye"] = "", -- A_Classic_Fairytale:first_blood +-- ["The caves are well hidden, they won't find us there!"] = "", -- A_Classic_Fairytale:united +-- ["The Crate Frenzy"] = "", -- A_Classic_Fairytale:first_blood +-- ["The Dilemma"] = "", -- A_Classic_Fairytale:shadow +-- ["The enemy can't move but it might be a good idea to stay out of sight!|"] = "", -- A_Classic_Fairytale:dragon ["The enemy is hiding out on yonder ducky!"] = "O inimigo está escondido ali a diante ao pé do patinho!", +-- ["The Enemy Of My Enemy"] = "", -- A_Classic_Fairytale:enemy +-- ["The First Blood"] = "", -- A_Classic_Fairytale:first_blood +-- ["The First Encounter"] = "", -- A_Classic_Fairytale:shadow ["The flag will respawn next round."] = "A bandeira ira reaparecer no próximo turno.", +-- ["The food bites back"] = "", -- A_Classic_Fairytale:backstab +-- ["The giant umbrella from the last crate should help break the fall."] = "", -- A_Classic_Fairytale:first_blood +-- ["The Great Escape"] = "", -- User_Mission_-_The_Great_Escape +-- ["The guardian"] = "", -- A_Classic_Fairytale:shadow +-- ["The Individualist"] = "", -- A_Classic_Fairytale:shadow +-- ["Their buildings were very primitive back then, even for an uncivilised island."] = "", -- A_Classic_Fairytale:united +-- ["The Journey Back"] = "", -- A_Classic_Fairytale:journey +-- ["The Leap of Faith"] = "", -- A_Classic_Fairytale:first_blood +-- ["The Moonwalk"] = "", -- A_Classic_Fairytale:journey -- ["The Nameless One"] = "", +-- ["The next one is pretty hard! |Tip: You have to do multiple swings!"] = "", -- Basic_Training_-_Rope +-- ["Then how do they keep appearing?"] = "", -- A_Classic_Fairytale:shadow +-- ["The other one were all cannibals, spending their time eating the organs of fellow hedgehogs..."] = "", -- A_Classic_Fairytale:first_blood +-- ["There must be a spy among us!"] = "", -- A_Classic_Fairytale:backstab +-- ["There's more of them? When did they become so hungry?"] = "", -- A_Classic_Fairytale:backstab, A_Classic_Fairytale:united +-- ["There's nothing more satisfying for me than seeing you share your beauty with the world every morning, my princess!"] = "", -- A_Classic_Fairytale:journey +-- ["There's nothing more satisfying to us than seeing you share your beauty..."] = "", -- A_Classic_Fairytale:journey +-- ["There's nothing more satisfying to us than seeing you share your beauty with the world every morning, my princess!"] = "", -- A_Classic_Fairytale:journey +-- ["The Rising"] = "", -- A_Classic_Fairytale:first_blood +-- ["The Savior"] = "", -- A_Classic_Fairytale:journey +-- ["These primitive people are so funny!"] = "", -- A_Classic_Fairytale:backstab +-- ["The Shadow Falls"] = "", -- A_Classic_Fairytale:shadow +-- ["The Showdown"] = "", -- A_Classic_Fairytale:shadow +-- ["The Slaughter"] = "", -- A_Classic_Fairytale:dragon, A_Classic_Fairytale:first_blood ["THE SPECIALISTS"] = "OS ESPECIALISTAS", +-- ["The spirits of the ancerstors are surely pleased, Leaks A Lot."] = "", -- A_Classic_Fairytale:first_blood +-- ["The Torment"] = "", -- A_Classic_Fairytale:first_blood +-- ["The Tunnel Maker"] = "", -- A_Classic_Fairytale:journey +-- ["The Ultimate Weapon"] = "", -- A_Classic_Fairytale:first_blood +-- ["The Union"] = "", -- A_Classic_Fairytale:enemy +-- ["The village, unprepared, was destroyed by the cyborgs..."] = "", -- A_Classic_Fairytale:journey +-- ["The walk of Fame"] = "", -- A_Classic_Fairytale:shadow +-- ["The wasted youth"] = "", -- A_Classic_Fairytale:first_blood +-- ["The weapon in that last crate was bestowed upon us by the ancients!"] = "", -- A_Classic_Fairytale:first_blood +-- ["The what?!"] = "", -- A_Classic_Fairytale:dragon +-- ["The wind whispers that you are ready to become familiar with tools, now..."] = "", -- A_Classic_Fairytale:first_blood +-- ["They are all waiting back in the village, haha."] = "", -- A_Classic_Fairytale:enemy +-- ["They Call Me Bullseye!"] = "", -- Space_Invasion +-- ["They have weapons we've never seen before!"] = "", -- A_Classic_Fairytale:united +-- ["They keep appearing like this. It's weird!"] = "", -- A_Classic_Fairytale:united +-- ["They killed "] = "", -- A_Classic_Fairytale:backstab, A_Classic_Fairytale:united +-- ["They must be trying to weaken us!"] = "", -- A_Classic_Fairytale:enemy +-- ["They never learn"] = "", -- A_Classic_Fairytale:journey +-- ["They told us to wear these clothes. They said that this is the newest trend."] = "", -- A_Classic_Fairytale:enemy +-- ["They've been manipulating us all this time!"] = "", -- A_Classic_Fairytale:enemy +-- ["Thighlicker"] = "", -- A_Classic_Fairytale:united +-- ["This is it! It's time to make Fell From Heaven fall for me..."] = "", -- A_Classic_Fairytale:first_blood +-- ["This island is the only place left on Earth with grass on it!"] = "", -- A_Classic_Fairytale:enemy +-- ["This is typical!"] = "", -- A_Classic_Fairytale:dragon +-- ["This must be some kind of sorcery!"] = "", -- A_Classic_Fairytale:shadow +-- ["This must be the caves!"] = "", -- A_Classic_Fairytale:backstab -- ["This one's tricky."] = "", -- ["This rain is really something..."] = "", +-- ["This will be fun!"] = "", -- A_Classic_Fairytale:enemy +-- ["Those aliens are destroying the island!"] = "", -- A_Classic_Fairytale:family -- ["Timed Kamikaze!"] = "", -- ["Time Extended!"] = "", -- ["Time Extension"] = "", ["TIME: "] = "TEMPO: ", +-- ["Tip: The rope physics are different than in the real world, |use it to your advantage!"] = "", -- Basic_Training_-_Rope ["Toggle Shield"] = "Ligar\Desligar Escudo", +-- ["To help you, of course!"] = "", -- A_Classic_Fairytale:journey +-- ["To place a girder, select it, use [Left] and [Right] to select angle and length, place with [Left Click]"] = "", -- A_Classic_Fairytale:shadow +-- ["Torn Muscle"] = "", -- A_Classic_Fairytale:journey +-- [" to save the village."] = "", -- A_Classic_Fairytale:dragon +-- ["To the caves..."] = "", -- A_Classic_Fairytale:united -- ["Toxic Team"] = "", -- User_Mission_-_Diver, User_Mission_-_Spooky_Tree, User_Mission_-_Teamwork -- ["TRACK COMPLETED"] = "PISTA COMPLETA", -- ["TRACK FAILED!"] = "PISTA", +-- ["training"] = "", -- portal +-- ["Traitors"] = "", -- A_Classic_Fairytale:epil +-- ["Tribe"] = "", -- A_Classic_Fairytale:backstab ["TrophyRace"] = "TrophyRace", +-- ["Try to protect the chief! You won't lose if he dies, but it is advised that he survives."] = "", -- A_Classic_Fairytale:united ["T_T"] = "T_T", -- ["Tumbling Time Extended!"] = "", +-- ["Turns until Sudden Death: "] = "", -- A_Classic_Fairytale:dragon +-- [" turns until Sudden Death! Better hurry!"] = "", -- A_Classic_Fairytale:dragon -- ["Turn Time"] = "", - ["Unit"] = "Unidade", +-- ["Two little hogs cooperating, getting past obstacles..."] = "", -- A_Classic_Fairytale:journey +-- ["Uhm...I met one of them and took his weapons."] = "", -- A_Classic_Fairytale:shadow +-- ["Uhmm...ok no."] = "", -- A_Classic_Fairytale:enemy +-- ["ULTRA KILL"] = "", -- Mutant +-- ["Under Construction"] = "", -- A_Classic_Fairytale:shadow +-- ["Unexpected Igor"] = "", -- A_Classic_Fairytale:dragon +-- ["Unit 0x0007"] = "", -- A_Classic_Fairytale:family +-- ["Unit 334a$7%;.*"] = "", -- A_Classic_Fairytale:backstab, A_Classic_Fairytale:dragon, A_Classic_Fairytale:enemy, A_Classic_Fairytale:family, A_Classic_Fairytale:queen, A_Classic_Fairytale:united ["Unit 3378"] = "Unidade 3378", ["Unit 835"] = "Unidade 835", +-- ["United We Stand"] = "", -- A_Classic_Fairytale:united + ["Unit"] = "Unidade", ["Unlimited Attacks"] = "Ataques Ilimitados", +-- ["Unlucky Sods"] = "", -- User_Mission_-_Rope_Knock_Challenge ["Unstoppable!"] = "Imparável!", +-- ["Unsuspecting Louts"] = "", -- User_Mission_-_Rope_Knock_Challenge +-- ["[Up], [Down] to aim, [Space] to shoot!"] = "", -- A_Classic_Fairytale:first_blood +-- ["Use it wisely!"] = "", -- A_Classic_Fairytale:dragon +-- ["Use it with precaution!"] = "", -- A_Classic_Fairytale:first_blood -- ["User Challenge"] = "", +-- ["Use the parachute ([Space] while in air)"] = "", -- +-- ["Use the portal gun to get to the next crate, then use the new gun to get to the final destination!|"] = "", -- A_Classic_Fairytale:dragon +-- ["Use the rope to get on the head of the mole, young one!"] = "", -- A_Classic_Fairytale:first_blood +-- ["Use the rope to knock your enemies to their doom."] = "", -- User_Mission_-_Rope_Knock_Challenge ["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!", +-- ["Vedgies"] = "", -- A_Classic_Fairytale:journey +-- ["Vegan Jack"] = "", -- A_Classic_Fairytale:enemy +-- ["Victory!"] = "", -- Basic_Training_-_Rope -- ["Victory for the "] = "", -- CTF_Blizzard, Capture_the_Flag ["Victory for the"] = "Vitória para a", +-- ["Violence is not the answer to your problems!"] = "", -- A_Classic_Fairytale:first_blood +-- ["Walls Left"] = "", -- WxW +-- ["Walls Required"] = "", -- WxW +-- ["WALL TO WALL"] = "", -- WxW +-- ["Wannabe Flyboys"] = "", -- User_Mission_-_RCPlane_Challenge +-- ["Wannabe Shoppsta"] = "", -- User_Mission_-_Rope_Knock_Challenge +-- ["Watch your steps, young one!"] = "", -- A_Classic_Fairytale:first_blood -- ["Waypoint placed."] = "", -- ["Way-Points Remaining"] = "", +-- ["Weaklings"] = "", -- A_Classic_Fairytale:shadow +-- ["We all know what happens when you get frightened..."] = "", -- A_Classic_Fairytale:first_blood -- ["Weapons Reset"] = "", +-- ["Weapons reset."] = "", -- Highlander +-- ["We are indeed."] = "", -- A_Classic_Fairytale:backstab +-- ["We can't defeat them!"] = "", -- A_Classic_Fairytale:shadow +-- ["We can't hold them up much longer!"] = "", -- A_Classic_Fairytale:united +-- ["We can't let them take over our little island!"] = "", -- A_Classic_Fairytale:enemy +-- ["We have no time to waste..."] = "", -- A_Classic_Fairytale:journey +-- ["We have nowhere else to live!"] = "", -- A_Classic_Fairytale:enemy +-- ["We have to protect the village!"] = "", -- A_Classic_Fairytale:united +-- ["We have to unite and defeat those cylergs!"] = "", -- A_Classic_Fairytale:enemy +-- ["Welcome, Leaks A Lot!"] = "", -- A_Classic_Fairytale:journey ["Well done."] = "Bom trabalho.", +-- ["We'll give you a problem then!"] = "", -- A_Classic_Fairytale:enemy +-- ["We'll spare your life for now!"] = "", -- A_Classic_Fairytale:backstab +-- ["Well, that was a waste of time."] = "", -- A_Classic_Fairytale:dragon +-- ["Well, well! Isn't that the cutest thing you've ever seen?"] = "", -- A_Classic_Fairytale:journey +-- ["Well, yes. This was a cyborg television show."] = "", -- A_Classic_Fairytale:enemy +-- ["We made sure noone followed us!"] = "", -- A_Classic_Fairytale:backstab +-- ["We need to move!"] = "", -- A_Classic_Fairytale:united +-- ["We need to prevent their arrival!"] = "", -- A_Classic_Fairytale:backstab +-- ["We need to warn the village."] = "", -- A_Classic_Fairytale:shadow +-- ["We should head back to the village now."] = "", -- A_Classic_Fairytale:shadow +-- ["We were trying to save her and we got lost."] = "", -- A_Classic_Fairytale:family +-- ["We won't let you hurt her!"] = "", -- A_Classic_Fairytale:journey +-- ["What?! A cannibal? Here? There is no time to waste! Come, you are prepared."] = "", -- A_Classic_Fairytale:first_blood +-- ["What a douche!"] = "", -- A_Classic_Fairytale:enemy +-- ["What am I gonna...eat, yo?"] = "", -- A_Classic_Fairytale:family +-- ["What are you doing at a distance so great, young one?"] = "", -- A_Classic_Fairytale:first_blood +-- ["What are you doing? Let her go!"] = "", -- A_Classic_Fairytale:journey +-- ["What a ride!"] = "", -- A_Classic_Fairytale:shadow +-- ["What a strange cave!"] = "", -- A_Classic_Fairytale:dragon +-- ["What a strange feeling!"] = "", -- A_Classic_Fairytale:backstab +-- ["What do my faulty eyes observe? A spy!"] = "", -- A_Classic_Fairytale:first_blood +-- ["Whatever floats your boat..."] = "", -- A_Classic_Fairytale:shadow +-- [" What !! For all of this struggle i just win some ... TIME o0"] = "", -- portal +-- ["What has "] = "", -- A_Classic_Fairytale:backstab +-- ["What? Here? How did they find us?!"] = "", -- A_Classic_Fairytale:backstab +-- ["What is this place?"] = "", -- A_Classic_Fairytale:dragon, A_Classic_Fairytale:enemy +-- ["What shall we do with the traitor?"] = "", -- A_Classic_Fairytale:backstab +-- ["WHAT?! You're the ones attacking us!"] = "", -- A_Classic_Fairytale:enemy +-- ["When?"] = "", -- A_Classic_Fairytale:enemy +-- ["When I find it..."] = "", -- A_Classic_Fairytale:dragon +-- ["Where are all these crates coming from?!"] = "", -- A_Classic_Fairytale:shadow +-- ["Where are they?!"] = "", -- A_Classic_Fairytale:backstab +-- ["Where did that alien run?"] = "", -- A_Classic_Fairytale:dragon +-- ["Where did you get the exploding apples?"] = "", -- A_Classic_Fairytale:shadow +-- ["Where did you get the exploding apples and the magic bow that shoots many arrows?"] = "", -- A_Classic_Fairytale:shadow +-- ["Where did you get the magic bow that shoots many arrows?"] = "", -- A_Classic_Fairytale:shadow +-- ["Where did you get the weapons in the forest, Dense Cloud?"] = "", -- A_Classic_Fairytale:backstab +-- ["Where do you get that?!"] = "", -- A_Classic_Fairytale:enemy +-- ["Where have you been?!"] = "", -- A_Classic_Fairytale:backstab +-- ["Where have you been?"] = "", -- A_Classic_Fairytale:united +-- ["? Why?"] = "", -- A_Classic_Fairytale:backstab +-- ["Why "] = "", -- A_Classic_Fairytale:backstab +-- ["! Why?!"] = "", -- A_Classic_Fairytale:backstab, A_Classic_Fairytale:united +-- ["Why are you doing this?"] = "", -- A_Classic_Fairytale:journey +-- ["Why are you helping us, uhm...?"] = "", -- A_Classic_Fairytale:family +-- ["Why can't he just let her go?!"] = "", -- A_Classic_Fairytale:family +-- ["Why do men keep hurting me?"] = "", -- A_Classic_Fairytale:first_blood +-- ["Why do you not like me?"] = "", -- A_Classic_Fairytale:shadow +-- ["Why do you want to take over our island?"] = "", -- A_Classic_Fairytale:enemy +-- ["Why me?!"] = "", -- A_Classic_Fairytale:backstab +-- ["Why would they do this?"] = "", -- A_Classic_Fairytale:backstab +-- ["- Will Get 1-3 random weapons"] = "", -- Continental_supplies +-- ["- Will refresh Parachute each turn."] = "", -- Continental_supplies +-- ["- Will refresh portalgun each turn."] = "", -- Continental_supplies -- ["Will this ever end?"] = "", +-- ["WINNER IS "] = "", -- Mutant ["WINNING TIME: "] = "TEMPO VENCEDOR: ", +-- ["Wise Oak"] = "", -- A_Classic_Fairytale:backstab, A_Classic_Fairytale:dragon, A_Classic_Fairytale:enemy, A_Classic_Fairytale:epil, A_Classic_Fairytale:family, A_Classic_Fairytale:queen +-- ["With Dense Cloud on the land of shadows, I'm the village's only hope..."] = "", -- A_Classic_Fairytale:journey +-- ["With the rest of the tribe gone, it was up to "] = "", -- A_Classic_Fairytale:dragon +-- ["Worry not, for it is a peaceful animal! There is no reason to be afraid..."] = "", -- A_Classic_Fairytale:first_blood +-- ["Wow, what a dream!"] = "", -- A_Classic_Fairytale:backstab +-- ["Y3K1337"] = "", -- A_Classic_Fairytale:journey, A_Classic_Fairytale:shadow +-- ["Yay, we won!"] = "", -- A_Classic_Fairytale:enemy +-- ["Y Chwiliad"] = "", -- A_Classic_Fairytale:dragon +-- ["Yeah...I think it's a 'he', lol."] = "", -- A_Classic_Fairytale:shadow +-- ["Yeah, sure! I died. Hillarious!"] = "", -- A_Classic_Fairytale:backstab +-- ["Yeah, take that!"] = "", -- A_Classic_Fairytale:dragon +-- ["Yeah? Watcha gonna do? Cry?"] = "", -- A_Classic_Fairytale:journey +-- ["Yes!"] = "", -- A_Classic_Fairytale:enemy +-- ["Yes, yeees! You are now ready to enter the real world!"] = "", -- A_Classic_Fairytale:first_blood +-- ["Yo, dude, we're here, too!"] = "", -- A_Classic_Fairytale:family +-- ["You are given the chance to turn your life around..."] = "", -- A_Classic_Fairytale:shadow +-- ["You are playing with our lives here!"] = "", -- A_Classic_Fairytale:enemy +-- ["! You bastards!"] = "", -- A_Classic_Fairytale:backstab, A_Classic_Fairytale:united +-- ["You bear impressive skills, "] = "", -- A_Classic_Fairytale:dragon +-- ["You can't fire a portal on the blue surface"] = "", -- portal +-- ["You couldn't possibly believe that after refusing my offer I'd just let you go!"] = "", -- A_Classic_Fairytale:journey ["You'd almost swear the water was rising!"] = "Quase eras capaz jurar que a água estava a subir!", +-- ["You'd better watch your steps..."] = "", -- A_Classic_Fairytale:journey +-- ["You did not make it in time, try again!"] = "", -- Basic_Training_-_Rope +-- ["You have 7 turns until the next wave arrives.|Make sure the arriving cannibals are greeted appropriately!|If the hog dies, the cause is lost.|Hint: you might want to use some mines..."] = "", -- A_Classic_Fairytale:backstab +-- ["You have "] = "", -- A_Classic_Fairytale:dragon +-- ["You have been giving us out to the enemy, haven't you!"] = "", -- A_Classic_Fairytale:backstab +-- ["You have been respawned, at your last checkpoint!"] = "", -- Basic_Training_-_Rope +-- ["You have been respawned, be more carefull next time!"] = "", -- Basic_Training_-_Rope +-- ["You have chosen the perfect moment to leave."] = "", -- A_Classic_Fairytale:united +-- ["You have failed to complete your task, young one!"] = "", -- A_Classic_Fairytale:journey +-- ["You have failed to save the tribe!"] = "", -- A_Classic_Fairytale:backstab +-- ["You have finally figured it out!"] = "", -- A_Classic_Fairytale:enemy +-- ["You have kidnapped our whole tribe!"] = "", -- A_Classic_Fairytale:enemy +-- ["You have killed an innocent hedgehog!"] = "", -- A_Classic_Fairytale:backstab +-- ["You have proven yourself worthy to see our most ancient secret!"] = "", -- A_Classic_Fairytale:first_blood +-- ["You have proven yourselves worthy!"] = "", -- A_Classic_Fairytale:enemy ["You have SCORED!!"] = "Marcaste!!", +-- ["You have to destroy 12 targets in 180 seconds"] = "", -- Basic_Training_-_Cluster_Bomb +-- ["You have won the game by proving true cooperative skills!"] = "", -- A_Classic_Fairytale:enemy +-- ["You just appeared out of thin air!"] = "", -- A_Classic_Fairytale:backstab +-- ["You just committed suicide..."] = "", -- A_Classic_Fairytale:shadow +-- ["You killed my father, you monster!"] = "", -- A_Classic_Fairytale:backstab +-- ["You know...taking a stroll."] = "", -- A_Classic_Fairytale:backstab +-- ["You know what? I don't even regret anything!"] = "", -- A_Classic_Fairytale:backstab +-- ["You'll see what I mean!"] = "", -- A_Classic_Fairytale:enemy +-- ["You may only attack from a rope!"] = "", -- WxW +-- ["You meatbags are pretty slow, you know!"] = "", -- A_Classic_Fairytale:enemy +-- ["You might want to find a way to instantly kill arriving cannibals!"] = "", -- A_Classic_Fairytale:backstab +-- ["Young one, you are telling us that they can instantly change location without a shaman?"] = "", -- A_Classic_Fairytale:united +-- ["You probably know what to do next..."] = "", -- A_Classic_Fairytale:first_blood +-- ["Your deaths will be avenged, cannibals!"] = "", -- A_Classic_Fairytale:enemy +-- ["Your death will not be in vain, Dense Cloud!"] = "", -- A_Classic_Fairytale:shadow +-- ["You're...alive!? But we saw you die!"] = "", -- A_Classic_Fairytale:backstab +-- ["You're a pathetic liar!"] = "", -- A_Classic_Fairytale:backstab +-- ["You're funny!"] = "", -- A_Classic_Fairytale:journey +-- ["You're getting pretty good! |Tip: When you shorten you rope you move faster! |and when you lengthen it you move slower"] = "", -- Basic_Training_-_Rope +-- ["You're pathetic! You are not worthy of my attention..."] = "", -- A_Classic_Fairytale:shadow +-- ["You're probably wondering why I bought you back..."] = "", -- A_Classic_Fairytale:backstab +-- ["You're terrorizing the forest...We won't catch anything like this!"] = "", -- A_Classic_Fairytale:shadow +-- ["Your hogs must survive!"] = "", -- A_Classic_Fairytale:journey +-- ["Your movement skills will be evaluated now."] = "", -- A_Classic_Fairytale:first_blood -- ["You saved"] = "", +-- ["You've been assaulting us, we have been just defending ourselves!"] = "", -- A_Classic_Fairytale:enemy ["You've failed. Try again."] = "Falhaste. Tenta novamente.", ["You've reached the goal!| |Time: "] = "Chegaste ao fim!| |Tempo: ", +-- ["You will be avenged!"] = "", -- A_Classic_Fairytale:shadow +-- ["You won't believe what happened to me!"] = "", -- A_Classic_Fairytale:backstab +-- ["Yuck! I bet they'll keep worshipping her even after I save the village!"] = "", -- A_Classic_Fairytale:family +-- ["Zealandia"] = "", -- Continental_supplies ["'Zooka Team"] = "Bazuqueiros", +-- ["Zork"] = "", -- A_Classic_Fairytale:dragon, A_Classic_Fairytale:family, A_Classic_Fairytale:queen } diff -r 3331b30e4ef1 -r 88fde28bbda6 share/hedgewars/Data/Locale/pt_PT.txt --- a/share/hedgewars/Data/Locale/pt_PT.txt Sun Oct 21 01:28:33 2012 +0400 +++ b/share/hedgewars/Data/Locale/pt_PT.txt Sat Nov 03 00:34:35 2012 +0400 @@ -56,6 +56,8 @@ 00:53=Caixote do Tempo 00:54=Estrutura 00:55=Terreno-instantâneo +00:56=Congelador +00:57=Cutelo 01:00=Vamos lutar! 01:01=Ronda empatada @@ -78,6 +80,7 @@ 01:18=Muito 01:19=Excessivo 01:20=Ressalto: %1 +01:21=Ãudio Silenciado ; Event messages ; Hog (%1) died diff -r 3331b30e4ef1 -r 88fde28bbda6 share/hedgewars/Data/Locale/ru.lua --- a/share/hedgewars/Data/Locale/ru.lua Sun Oct 21 01:28:33 2012 +0400 +++ b/share/hedgewars/Data/Locale/ru.lua Sat Nov 03 00:34:35 2012 +0400 @@ -2,158 +2,642 @@ -- [":("] = "", -- ["!!!"] = "", -- ["..."] = "", +-- ["011101000"] = "", -- A_Classic_Fairytale:dragon +-- ["011101001"] = "", -- A_Classic_Fairytale:backstab, A_Classic_Fairytale:dragon, A_Classic_Fairytale:enemy, A_Classic_Fairytale:family, A_Classic_Fairytale:journey, A_Classic_Fairytale:queen, A_Classic_Fairytale:shadow, A_Classic_Fairytale:united +-- ["30 minutes later..."] = "", -- A_Classic_Fairytale:shadow +-- ["About a month ago, a cyborg came and told us that you're the cannibals!"] = "", -- A_Classic_Fairytale:enemy ["Accuracy Bonus!"] = "Ð‘Ð¾Ð½ÑƒÑ Ð·Ð° аккуратноÑÑ‚ÑŒ!", +-- ["Ace"] = "", -- User_Mission_-_RCPlane_Challenge, User_Mission_-_Rope_Knock_Challenge -- ["Achievement Unlocked"] = "", -- User_Mission_-_Bamboo_Thicket, User_Mission_-_That_Sinking_Feeling, Tumbler +-- ["A Classic Fairytale"] = "", -- A_Classic_Fairytale:first_blood +-- ["???"] = "", -- A_Classic_Fairytale:backstab +-- ["Actually, you aren't worthy of life! Take this..."] = "", -- A_Classic_Fairytale:shadow +-- ["A cy-what?"] = "", -- A_Classic_Fairytale:enemy +-- ["Adventurous"] = "", -- A_Classic_Fairytale:journey +-- ["Africa"] = "", -- Continental_supplies +-- ["After Leaks A Lot betrayed his tribe, he joined the cannibals..."] = "", -- A_Classic_Fairytale:first_blood +-- ["After the shock caused by the enemy spy, Leaks A Lot and Dense Cloud went hunting to relax."] = "", -- A_Classic_Fairytale:shadow +-- ["Again with the 'cannibals' thing!"] = "", -- A_Classic_Fairytale:enemy +-- ["a Hedgewars challenge"] = "", -- User_Mission_-_RCPlane_Challenge, User_Mission_-_Rope_Knock_Challenge ["a Hedgewars mini-game"] = "Мини-игра в Hedgewars", -- Space_Invasion, The_Specialists ["Aiming Practice"] = "Упражнение на точноÑÑ‚ÑŒ", --Bazooka, Shotgun, SniperRifle +-- ["A leap in a leap"] = "", -- A_Classic_Fairytale:first_blood +-- ["A little gift from the cyborgs"] = "", -- A_Classic_Fairytale:shadow +-- ["All gone...everything!"] = "", -- A_Classic_Fairytale:enemy +-- ["All right, we just need to get to the other side of the island!"] = "", -- A_Classic_Fairytale:journey +-- ["All walls touched!"] = "", -- WxW -- ["Ammo"] = "", -- ["Ammo Depleted!"] = "", -- ["ammo extended!"] = "", -- ["Ammo is reset at the end of your turn."] = "", -- ["Ammo Maniac!"] = "", +-- ["And how am I alive?!"] = "", -- A_Classic_Fairytale:enemy +-- ["And so happenned that Leaks A Lot failed to complete the challenge! He landed, pressured by shame..."] = "", -- A_Classic_Fairytale:first_blood +-- ["And so it began..."] = "", -- A_Classic_Fairytale:first_blood +-- ["...and so the cyborgs took over the world..."] = "", -- A_Classic_Fairytale:shadow +-- ["And so they discovered that cyborgs weren't invulnerable..."] = "", -- A_Classic_Fairytale:journey +-- ["And where's all the weed?"] = "", -- A_Classic_Fairytale:dragon +-- ["And you believed me? Oh, god, that's cute!"] = "", -- A_Classic_Fairytale:journey +-- ["Anno 1032: [The explosion will make a strong push ~ wide range, wont affect hogs close to the target]"] = "", -- Continental_supplies +-- ["Antarctica"] = "", -- Continental_supplies +-- ["Are we there yet?"] = "", -- A_Classic_Fairytale:shadow +-- ["Are you accusing me of something?"] = "", -- A_Classic_Fairytale:backstab +-- ["Are you saying that many of us have died for your entertainment?"] = "", -- A_Classic_Fairytale:enemy +-- ["Artur Detour"] = "", -- A_Classic_Fairytale:queen +-- ["As a reward for your performance, here's some new technology!"] = "", -- A_Classic_Fairytale:dragon +-- ["a shoppa minigame"] = "", -- WxW +-- ["Asia"] = "", -- Continental_supplies +-- ["Assault Team"] = "", -- A_Classic_Fairytale:backstab +-- ["As the ammo is sparse, you might want to reuse ropes while mid-air.|"] = "", -- A_Classic_Fairytale:dragon +-- ["As the challenge was completed, Leaks A Lot set foot on the ground..."] = "", -- A_Classic_Fairytale:first_blood +-- ["As you can see, there is no way to get on the other side!"] = "", -- A_Classic_Fairytale:dragon +-- ["Attack From Rope"] = "", -- WxW +-- ["Australia"] = "", -- Continental_supplies -- ["Available points remaining: "] = "", +-- ["Back Breaker"] = "", -- A_Classic_Fairytale:backstab +-- ["Back in the village, after telling the villagers about the threat..."] = "", -- A_Classic_Fairytale:united -- ["[Backspace]"] = "", +-- ["Backstab"] = "", -- A_Classic_Fairytale:backstab +-- ["Bad Team"] = "", -- User_Mission_-_The_Great_Escape -- ["Bamboo Thicket"] = "", -- ["Barrel Eater!"] = "", -- ["Barrel Launcher"] = "", +-- ["Baseballbat"] = "", -- Continental_supplies -- ["Bat balls at your enemies and|push them into the sea!"] = "", -- ["Bat your opponents through the|baskets and out of the map!"] = "", ["Bazooka Training"] = "Упражнение Ñ Ð±Ð°Ð·ÑƒÐºÐ¾Ð¹", +-- ["Beep Loopers"] = "", -- A_Classic_Fairytale:queen -- ["Best laps per team: "] = "", -- ["Best Team Times: "] = "", +-- ["Beware, though! If you are slow, you die!"] = "", -- A_Classic_Fairytale:dragon +-- ["Biomechanic Team"] = "", -- A_Classic_Fairytale:family +-- ["Blender"] = "", -- A_Classic_Fairytale:family +-- ["Bloodpie"] = "", -- A_Classic_Fairytale:backstab +-- ["Bloodrocutor"] = "", -- A_Classic_Fairytale:shadow +-- ["Bloodsucker"] = "", -- A_Classic_Fairytale:shadow -- ["Bloody Rookies"] = "", -- 01#Boot_Camp, User_Mission_-_Dangerous_Ducklings, User_Mission_-_Diver, User_Mission_-_Spooky_Tree +-- ["Bone Jackson"] = "", -- A_Classic_Fairytale:backstab +-- ["Bonely"] = "", -- A_Classic_Fairytale:shadow + ["BOOM!"] = "БÐБÐÐ¥!", ["Boom!"] = "Бум!", - ["BOOM!"] = "БÐБÐÐ¥!", -- ["Boss defeated!"] = "", -- ["Boss Slayer!"] = "", +-- ["Brain Blower"] = "", -- A_Classic_Fairytale:journey +-- ["Brainiac"] = "", -- A_Classic_Fairytale:epil, A_Classic_Fairytale:first_blood, A_Classic_Fairytale:shadow +-- ["Brainila"] = "", -- A_Classic_Fairytale:united +-- ["Brain Stu"] = "", -- A_Classic_Fairytale:united +-- ["Brain Teaser"] = "", -- A_Classic_Fairytale:backstab +-- ["Brutal Lily"] = "", -- A_Classic_Fairytale:enemy, A_Classic_Fairytale:epil +-- ["Brutus"] = "", -- A_Classic_Fairytale:backstab -- ["Build a track and race."] = "", +-- ["Bullseye"] = "", -- A_Classic_Fairytale:dragon +-- ["But it proved to be no easy task!"] = "", -- A_Classic_Fairytale:dragon +-- ["But that's impossible!"] = "", -- A_Classic_Fairytale:backstab +-- ["But the ones alive are stronger in their heart!"] = "", -- A_Classic_Fairytale:enemy +-- ["But...we died!"] = "", -- A_Classic_Fairytale:backstab +-- ["But where can we go?"] = "", -- A_Classic_Fairytale:united +-- ["But why would they help us?"] = "", -- A_Classic_Fairytale:backstab +-- ["But you're cannibals. It's what you do."] = "", -- A_Classic_Fairytale:enemy +-- ["But you said you'd let her go!"] = "", -- A_Classic_Fairytale:journey +-- ["Call me Beep! Well, 'cause I'm such a nice...person!"] = "", -- A_Classic_Fairytale:family +-- ["Cannibals"] = "", -- A_Classic_Fairytale:enemy, A_Classic_Fairytale:epil, A_Classic_Fairytale:first_blood +-- ["Cannibal Sentry"] = "", -- A_Classic_Fairytale:journey +-- ["Cannibals?! You're the cannibals!"] = "", -- A_Classic_Fairytale:enemy ["CAPTURE THE FLAG"] = "ЗÐХВÐТ ФЛÐГÐ", -- ["Careless"] = "", +-- ["Carol"] = "", -- A_Classic_Fairytale:family +-- ["CHALLENGE COMPLETE"] = "", -- User_Mission_-_RCPlane_Challenge ["Change Weapon"] = "Сменить оружие", +-- ["Choose your side! If you want to join the strange man, walk up to him.|Otherwise, walk away from him. If you decide to att...nevermind..."] = "", -- A_Classic_Fairytale:shadow -- ["Clumsy"] = "", +-- ["Cluster Bomb MASTER!"] = "", -- Basic_Training_-_Cluster_Bomb +-- ["Cluster Bomb Training"] = "", -- Basic_Training_-_Cluster_Bomb -- ["Codename: Teamwork"] = "", +-- ["Collateral Damage"] = "", -- A_Classic_Fairytale:journey +-- ["Collateral Damage II"] = "", -- A_Classic_Fairytale:journey +-- ["Collect all the crates, but remember, our time in this life is limited!"] = "", -- A_Classic_Fairytale:first_blood +-- ["Collect or destroy all the health crates."] = "", -- User_Mission_-_RCPlane_Challenge +-- ["Collect the crate on the right.|Hint: Select the rope, [Up] or [Down] to aim, [Space] to fire, directional keys to move.|Ropes can be fired again in the air!"] = "", -- A_Classic_Fairytale:first_blood +-- ["Collect the crates within the time limit!|If you fail, you'll have to try again."] = "", -- A_Classic_Fairytale:first_blood +-- ["Come closer, so that your training may continue!"] = "", -- A_Classic_Fairytale:first_blood +-- ["Compete to use as few planes as possible!"] = "", -- User_Mission_-_RCPlane_Challenge -- ["Complete the track as fast as you can!"] = "", - ["Congratulations!"] = "ПоздравлениÑ!", +-- ["COMPLETION TIME"] = "", -- User_Mission_-_Rope_Knock_Challenge +-- ["Configuration accepted."] = "", -- WxW +-- ["Congratulations"] = "", -- Basic_Training_-_Rope +-- ["Congratulations! You needed only half of time|to eliminate all targets."] = "", -- Basic_Training_-_Cluster_Bomb +-- ["Congratulations! You've completed the Rope tutorial! |- Tutorial ends in 10 seconds!"] = "", -- Basic_Training_-_Rope -- ["Congratulations! You've eliminated all targets|within the allowed time frame."] = "", --Bazooka, Shotgun, SniperRifle + ["Congratulations!"] = "ПоздравлениÑ!", +-- ["Continental supplies"] = "", -- Continental_supplies -- ["Control pillars to score points."] = "", +-- ["Corporationals"] = "", -- A_Classic_Fairytale:queen +-- ["Corpsemonger"] = "", -- A_Classic_Fairytale:shadow +-- ["Corpse Thrower"] = "", -- A_Classic_Fairytale:epil + ["Crates Left:"] = "ОÑталоÑÑŒ Ñщиков:", -- User_Mission_-_RCPlane_Challenge -- ["Cybernetic Empire"] = "", +-- ["Cyborg. It's what the aliens call themselves."] = "", -- A_Classic_Fairytale:enemy +-- ["Dahmer"] = "", -- A_Classic_Fairytale:backstab -- ["DAMMIT, ROOKIE!"] = "", -- ["DAMMIT, ROOKIE! GET OFF MY HEAD!"] = "", -- ["Dangerous Ducklings"] = "", -- ["Deadweight"] = "", +-- ["Defeat the cannibals"] = "", -- A_Classic_Fairytale:backstab +-- ["Defeat the cannibals!|"] = "", -- A_Classic_Fairytale:united +-- ["Defeat the cannibals!|Grenade hint: set the timer with [1-5], aim with [Up]/[Down] and hold [Space] to set power"] = "", -- A_Classic_Fairytale:shadow +-- ["Defeat the cyborgs!"] = "", -- A_Classic_Fairytale:enemy +-- ["Defend yourself!|Hint: You can get tips on using weapons by moving your mouse over them in the weapon selection menu"] = "", -- A_Classic_Fairytale:shadow -- ["Demolition is fun!"] = "", +-- ["Dense Cloud"] = "", -- A_Classic_Fairytale:backstab, A_Classic_Fairytale:dragon, A_Classic_Fairytale:enemy, A_Classic_Fairytale:epil, A_Classic_Fairytale:family, A_Classic_Fairytale:journey, A_Classic_Fairytale:queen, A_Classic_Fairytale:shadow, A_Classic_Fairytale:united +-- ["Dense Cloud must have already told them everything..."] = "", -- A_Classic_Fairytale:shadow -- ["Depleted Kamikaze!"] = "", +-- ["Destroy him, Leaks A Lot! He is responsible for the deaths of many of us!"] = "", -- A_Classic_Fairytale:first_blood -- ["Destroy invaders to score points."] = "", +-- ["Destroy the targets!|Hint: Select the Shoryuken and hit [Space]|P.S. You can use it mid-air."] = "", -- A_Classic_Fairytale:first_blood +-- ["Destroy the targets!|Hint: [Up], [Down] to aim, [Space] to shoot"] = "", -- A_Classic_Fairytale:first_blood +-- ["Did anyone follow you?"] = "", -- A_Classic_Fairytale:united +-- ["Did you see him coming?"] = "", -- A_Classic_Fairytale:shadow +-- ["Did you warn the village?"] = "", -- A_Classic_Fairytale:shadow +-- ["Die, die, die!"] = "", -- A_Classic_Fairytale:dragon +-- ["Disguise as a Rockhopper Penguin: [Swap place with a random enemy hog in the circle]"] = "", -- Continental_supplies +-- ["Dist: "] = "", -- Space_Invasion +-- ["Do not laugh, inexperienced one, for he speaks the truth!"] = "", -- A_Classic_Fairytale:backstab +-- ["Do not let his words fool you, young one! He will stab you in the back as soon as you turn away!"] = "", -- A_Classic_Fairytale:first_blood +-- ["Do the deed"] = "", -- A_Classic_Fairytale:first_blood +-- ["DOUBLE KILL"] = "", -- Mutant ["Double Kill!"] = "Двойное убийÑтво!", +-- ["Do you have any idea how valuable grass is?"] = "", -- A_Classic_Fairytale:enemy +-- ["Do you think you're some kind of god?"] = "", -- A_Classic_Fairytale:enemy +-- ["Dragon's Lair"] = "", -- A_Classic_Fairytale:dragon +-- ["Drills"] = "", -- A_Classic_Fairytale:backstab -- ["Drone Hunter!"] = "", +-- ["Drop a bomb: [drop some heroic wind that will turn into a bomb on impact]"] = "", -- Continental_supplies -- ["Drowner"] = "", +-- ["Dude, all the plants are gone!"] = "", -- A_Classic_Fairytale:family +-- ["Dude, can you see Ramon and Spiky?"] = "", -- A_Classic_Fairytale:journey +-- ["Dude, that's so cool!"] = "", -- A_Classic_Fairytale:backstab +-- ["Dude, we really need a new shaman..."] = "", -- A_Classic_Fairytale:shadow +-- ["Dude, what's this place?!"] = "", -- A_Classic_Fairytale:dragon +-- ["Dude, where are we?"] = "", -- A_Classic_Fairytale:backstab +-- ["Dude, wow! I just had the weirdest high!"] = "", -- A_Classic_Fairytale:backstab +-- ["Duration"] = "", -- Continental_supplies +-- ["Dust storm: [Deals 20 damage to all enemies in the circle]"] = "", -- Continental_supplies -- ["Each turn you get 1-3 random weapons"] = "", -- ["Each turn you get one random weapon"] = "", +-- ["Eagle Eye"] = "", -- A_Classic_Fairytale:backstab +-- ["Eagle Eye: [Blink to the impact ~ one shot]"] = "", -- Continental_supplies +-- ["Ear Sniffer"] = "", -- A_Classic_Fairytale:backstab, A_Classic_Fairytale:epil +-- ["Elderbot"] = "", -- A_Classic_Fairytale:family +-- ["Elimate your captor."] = "", -- User_Mission_-_The_Great_Escape -- ["Eliminate all enemies"] = "", -- ["Eliminate all targets before your time runs out.|You have unlimited ammo for this mission."] = "", --Bazooka, Shotgun, SniperRifle +-- ["Eliminate enemy hogs and take their weapons."] = "", -- Highlander -- ["Eliminate Poison before the time runs out"] = "", -- ["Eliminate the Blue Team"] = "", -- ["Eliminate the enemy before the time runs out"] = "", -- User_Mission_-_Bamboo_Thicket, User_Mission_-_Newton_and_the_Hammock -- ["Eliminate the enemy hogs to win."] = "", -- ["Eliminate the enemy specialists."] = "", -- ["- Eliminate Unit 3378 |- Feeble Resistance must survive"] = "", +-- ["Elmo"] = "", -- A_Classic_Fairytale:dragon, A_Classic_Fairytale:family, A_Classic_Fairytale:queen -- ["Energetic Engineer"] = "", ["Enjoy the swim..."] = "ПриÑтного плаваниÑ...", -- ["[Enter]"] = "", +-- ["Europe"] = "", -- Continental_supplies +-- [" ever done to you?!"] = "", -- A_Classic_Fairytale:backstab +-- ["Everyone knows this."] = "", -- A_Classic_Fairytale:enemy +-- ["Every single time!"] = "", -- A_Classic_Fairytale:dragon +-- ["Everything looks OK..."] = "", -- A_Classic_Fairytale:enemy +-- ["Exactly, man! That was my dream."] = "", -- A_Classic_Fairytale:backstab +-- ["Eye Chewer"] = "", -- A_Classic_Fairytale:journey +-- ["FAG"] = "", -- Mutant +-- ["Family Reunion"] = "", -- A_Classic_Fairytale:family -- ["Fastest lap: "] = "", -- ["Feeble Resistance"] = "", +-- ["Fell From Grace"] = "", -- A_Classic_Fairytale:backstab, A_Classic_Fairytale:dragon, A_Classic_Fairytale:enemy, A_Classic_Fairytale:epil, A_Classic_Fairytale:family, A_Classic_Fairytale:queen +-- ["Fell From Heaven"] = "", -- A_Classic_Fairytale:enemy, A_Classic_Fairytale:epil, A_Classic_Fairytale:family, A_Classic_Fairytale:first_blood, A_Classic_Fairytale:journey, A_Classic_Fairytale:queen +-- ["Fell From Heaven is the best! Fell From Heaven is the greatest!"] = "", -- A_Classic_Fairytale:family +-- ["Femur Lover"] = "", -- A_Classic_Fairytale:shadow +-- ["Fierce Competition!"] = "", -- Space_Invasion +-- ["Fiery Water"] = "", -- A_Classic_Fairytale:backstab, A_Classic_Fairytale:dragon, A_Classic_Fairytale:enemy, A_Classic_Fairytale:epil, A_Classic_Fairytale:family, A_Classic_Fairytale:queen, A_Classic_Fairytale:united +-- ["Find your tribe!|Cross the lake!"] = "", -- A_Classic_Fairytale:dragon +-- ["Finish your training|Hint: Animations can be skipped with the [Precise] key."] = "", -- A_Classic_Fairytale:first_blood -- ["Fire"] = "", +-- ["Fire a mine: [Does what it says ~ Cant be dropped close to an enemy ~ 1 sec]"] = "", -- Continental_supplies +-- ["First aid kits?!"] = "", -- A_Classic_Fairytale:united +-- ["First Blood"] = "", -- A_Classic_Fairytale:first_blood +-- ["FIRST BLOOD MUTATES"] = "", -- Mutant +-- ["First Steps"] = "", -- A_Classic_Fairytale:first_blood -- ["Flag captured!"] = "", -- ["Flag respawned!"] = "", -- ["Flag returned!"] = "", -- ["Flags, and their home base will be placed where each team ends their first turn."] = "", -- ["Flamer"] = "", +-- ["Flaming Worm"] = "", -- A_Classic_Fairytale:backstab +-- ["Flare: [fire up some bombs depending on hogs depending on hogs in the circle"] = "", -- Continental_supplies +-- ["Flesh for Brainz"] = "", -- A_Classic_Fairytale:journey +-- ["For improved features/stability, play 0.9.18+"] = "", -- WxW +-- ["Free Dense Cloud and continue the mission!"] = "", -- A_Classic_Fairytale:journey -- ["Friendly Fire!"] = "", -- ["fuel extended!"] = "", -- ["GAME BEGUN!!!"] = "", -- ["Game Modifiers: "] = "", ["GAME OVER!"] = "ИГРРОКОÐЧЕÐÐ!", -- ["Game Started!"] = "", +-- ["Game? Was this a game to you?!"] = "", -- A_Classic_Fairytale:enemy +-- ["GasBomb"] = "", -- Continental_supplies +-- ["Gas Gargler"] = "", -- A_Classic_Fairytale:queen +-- ["Get Dense Cloud out of the pit!"] = "", -- A_Classic_Fairytale:journey -- ["Get on over there and take him out!"] = "", +-- ["Get on the head of the mole"] = "", -- A_Classic_Fairytale:first_blood +-- ["Get out of there!"] = "", -- User_Mission_-_The_Great_Escape +-- ["Get that crate!"] = "", -- A_Classic_Fairytale:first_blood +-- ["Get the crate on the other side of the island!|"] = "", -- A_Classic_Fairytale:journey +-- ["Get to the target using your rope! |Controls: Left & Right to swing the rope - Up & Down to Contract and Expand!"] = "", -- Basic_Training_-_Rope +-- ["Get your teammates out of their natural prison and save the princess!|Hint: Drilling holes should solve everything.|Hint: It might be a good idea to place a girder before starting to drill. Just saying.|Hint: All your hedgehogs need to be above the marked height!|Hint: Leaks A Lot needs to get really close to the princess!"] = "", -- A_Classic_Fairytale:family +-- ["GG!"] = "", -- User_Mission_-_Rope_Knock_Challenge +-- ["Gimme Bones"] = "", -- A_Classic_Fairytale:backstab +-- ["Glark"] = "", -- A_Classic_Fairytale:shadow ["Goal"] = "Цель", -- ["GO! GO! GO!"] = "", -- ["Good birdy......"] = "", +-- ["Good Dude"] = "", -- User_Mission_-_The_Great_Escape +-- ["Good idea, they'll never find us there!"] = "", -- A_Classic_Fairytale:united +-- ["Good luck...or else!"] = "", -- A_Classic_Fairytale:journey -- ["Good luck out there!"] = "", -- ["Good so far!"] = "", -- ["Good to go!"] = "", +-- ["Go on top of the flower"] = "", -- A_Classic_Fairytale:first_blood +-- ["Go, quick!"] = "", -- A_Classic_Fairytale:backstab +-- ["Gorkij"] = "", -- A_Classic_Fairytale:journey +-- ["Go surf!"] = "", -- WxW ["GOTCHA!"] = "ПОПÐЛСЯ!", -- ["Grab Mines/Explosives"] = "", +-- ["Great choice, Steve! Mind if I call you that?"] = "", -- A_Classic_Fairytale:shadow +-- ["Great work! Now hit it with your Baseball Bat! |Tip: You can change weapon with 'Right Click'!"] = "", -- Basic_Training_-_Rope +-- ["Great! You will be contacted soon for assistance."] = "", -- A_Classic_Fairytale:shadow +-- ["Green lipstick bullet: [Is poisonous]"] = "", -- Continental_supplies +-- ["Greetings, "] = "", -- A_Classic_Fairytale:dragon +-- ["Greetings, cloudy one!"] = "", -- A_Classic_Fairytale:shadow +-- ["Grenade Training"] = "", -- Basic_Training_-_Grenade +-- ["Grenadiers"] = "", -- Basic_Training_-_Grenade +-- ["Guys, do you think there's more of them?"] = "", -- A_Classic_Fairytale:backstab +-- ["HAHA!"] = "", -- A_Classic_Fairytale:enemy +-- ["Haha!"] = "", -- A_Classic_Fairytale:united -- ["Hahahaha!"] = "", -- ["Haha, now THAT would be something!"] = "", +-- ["Hannibal"] = "", -- A_Classic_Fairytale:epil -- ["Hapless Hogs"] = "", -- [" Hapless Hogs left!"] = "", +-- [" HAS MUTATED\" )"] = "", -- +-- ["Hatless Jerry"] = "", -- A_Classic_Fairytale:queen +-- ["Have no illusions, your tribe is dead, indifferent of your choice."] = "", -- A_Classic_Fairytale:shadow +-- ["Have we ever attacked you first?"] = "", -- A_Classic_Fairytale:enemy -- ["Health crates extend your time."] = "", -- ["Heavy"] = "", +-- ["Heavy Cannfantry"] = "", -- A_Classic_Fairytale:united +-- ["Hedge-cogs"] = "", -- A_Classic_Fairytale:enemy +-- ["Hedgehog projectile: [fire your hog like a Sticky Bomb]"] = "", -- Continental_supplies -- ["Hedgewars-Basketball"] = "", -- ["Hedgewars-Knockball"] = "", +-- ["Hedgibal Lecter"] = "", -- A_Classic_Fairytale:backstab -- ["Heh, it's not that bad."] = "", +-- ["Hello again, "] = "", -- A_Classic_Fairytale:family +-- ["Help me, Leaks!"] = "", -- A_Classic_Fairytale:journey +-- ["Help me, please!!!"] = "", -- A_Classic_Fairytale:journey +-- ["Help me, please!"] = "", -- A_Classic_Fairytale:journey +-- ["He moves like an eagle in the sky."] = "", -- A_Classic_Fairytale:first_blood +-- ["He must be in the village already."] = "", -- A_Classic_Fairytale:journey +-- ["Here, let me help you!"] = "", -- A_Classic_Fairytale:backstab +-- ["Here, let me help you save her!"] = "", -- A_Classic_Fairytale:family +-- ["Here...pick your weapon!"] = "", -- A_Classic_Fairytale:first_blood +-- ["Hero Team"] = "", -- User_Mission_-_The_Great_Escape +-- ["He's so brave..."] = "", -- A_Classic_Fairytale:first_blood +-- ["He won't be selling us out anymore!"] = "", -- A_Classic_Fairytale:backstab +-- ["Hey, guys!"] = "", -- A_Classic_Fairytale:backstab +-- ["Hey guys!"] = "", -- A_Classic_Fairytale:united +-- ["Hey! This is cheating!"] = "", -- A_Classic_Fairytale:journey + ["HIGHLANDER"] = "Царь горы", -- Highlander +-- ["Hightime"] = "", -- A_Classic_Fairytale:first_blood +-- ["Hint: Double Jump - Press [Backspace] twice"] = "", -- A_Classic_Fairytale:first_blood +-- ["Hint: Select the BlowTorch, aim and press [Fire]. Press [Fire] again to stop.|Don't blow up the crate."] = "", -- A_Classic_Fairytale:journey +-- ["Hint: Select the LowGravity and press [Fire]."] = "", -- A_Classic_Fairytale:journey +-- ["Hint: you might want to stay out of sight and take all the crates...|"] = "", -- A_Classic_Fairytale:journey +-- ["His arms are so strong!"] = "", -- A_Classic_Fairytale:first_blood -- ["Hit Combo!"] = "", +-- ["Hmmm...actually...I didn't either."] = "", -- A_Classic_Fairytale:enemy +-- ["Hmmm, I'll have to find some way of moving him off this anti-portal surface..."] = "", -- portal +-- ["Hmmm...it's a draw. How unfortunate!"] = "", -- A_Classic_Fairytale:enemy +-- ["Hmmm...perhaps a little more time will help."] = "", -- A_Classic_Fairytale:first_blood ["Hmmm..."] = "Хммм...", +-- ["Hogminator"] = "", -- A_Classic_Fairytale:family +-- ["Hogs in sight!"] = "", -- Continental_supplies +-- ["HOLY SHIT!"] = "", -- Mutant +-- ["Honest Lee"] = "", -- A_Classic_Fairytale:enemy ["Hooray!"] = "Ура!", +-- ["Hostage Situation"] = "", -- A_Classic_Fairytale:family +-- ["How can I ever repay you for saving my life?"] = "", -- A_Classic_Fairytale:journey +-- ["How come in a village full of warriors, it's up to me to save it?"] = "", -- A_Classic_Fairytale:dragon +-- ["How difficult would you like it to be?"] = "", -- A_Classic_Fairytale:first_blood +-- ["HOW DO THEY KNOW WHERE WE ARE???"] = "", -- A_Classic_Fairytale:united +-- ["However, if you fail to do so, she dies a most violent death, just like your friend! Muahahaha!"] = "", -- A_Classic_Fairytale:journey +-- ["However, if you fail to do so, she dies a most violent death! Muahahaha!"] = "", -- A_Classic_Fairytale:journey +-- ["However, my mates don't agree with me on letting you go..."] = "", -- A_Classic_Fairytale:dragon +-- [" HP"] = "", -- Mutant ["Hunter"] = "Охотник", --Bazooka, Shotgun, SniperRifle +-- ["I believe there's more of them."] = "", -- A_Classic_Fairytale:backstab +-- ["I can see you have been training diligently."] = "", -- A_Classic_Fairytale:first_blood +-- ["I can't believe it worked!"] = "", -- A_Classic_Fairytale:shadow +-- ["I can't believe this!"] = "", -- A_Classic_Fairytale:enemy +-- ["I can't believe what I'm hearing!"] = "", -- A_Classic_Fairytale:backstab +-- ["I can't wait any more, I have to save myself!"] = "", -- A_Classic_Fairytale:shadow +-- ["I could just teleport myself there..."] = "", -- A_Classic_Fairytale:family +-- ["I'd better get going myself."] = "", -- A_Classic_Fairytale:journey +-- ["I didn't until about a month ago."] = "", -- A_Classic_Fairytale:enemy +-- ["I don't know how you did that.. But good work! |The next one should be easy as cake for you!"] = "", -- Basic_Training_-_Rope +-- ["I feel something...a place! They will arrive near the circles!"] = "", -- A_Classic_Fairytale:backstab +-- ["If only I had a way..."] = "", -- A_Classic_Fairytale:backstab +-- ["If only I were given a chance to explain my being here..."] = "", -- A_Classic_Fairytale:first_blood +-- ["I forgot that she's the daughter of the chief, too..."] = "", -- A_Classic_Fairytale:backstab +-- ["If they try coming here, they can have a taste of my delicious knuckles!"] = "", -- A_Classic_Fairytale:united +-- ["If you agree to provide the information we need, you will be spared!"] = "", -- A_Classic_Fairytale:shadow +-- ["If you can get that crate fast enough, your beloved \"princess\" may go free."] = "", -- A_Classic_Fairytale:journey +-- ["If you decide to help us, though, we will no longer need to find a new governor for the island."] = "", -- A_Classic_Fairytale:shadow +-- ["If you get stuck, use your Desert Eagle or restart the mission!|"] = "", -- A_Classic_Fairytale:journey +-- ["If you know what I mean..."] = "", -- A_Classic_Fairytale:shadow +-- ["If you say so..."] = "", -- A_Classic_Fairytale:shadow +-- ["If you wish to restart the course, hold [Precise] while your turn ends (e.g with Skip)"] = "", -- +-- ["I guess you'll have to kill them."] = "", -- A_Classic_Fairytale:dragon +-- ["I have come to make you an offering..."] = "", -- A_Classic_Fairytale:shadow +-- ["I have no idea where that mole disappeared...Can you see it?"] = "", -- A_Classic_Fairytale:shadow +-- ["I have to follow that alien."] = "", -- A_Classic_Fairytale:backstab +-- ["I have to get back to the village!"] = "", -- A_Classic_Fairytale:shadow +-- ["I hope you are prepared for a small challenge, young one."] = "", -- A_Classic_Fairytale:first_blood +-- ["I just don't want to sink to your level."] = "", -- A_Classic_Fairytale:backstab +-- ["I just found out that they have captured your princess!"] = "", -- A_Classic_Fairytale:family +-- ["I just wonder where Ramon and Spiky disappeared..."] = "", -- A_Classic_Fairytale:journey +-- ["I'll hold them off while you return to the village!"] = "", -- A_Classic_Fairytale:shadow +-- ["Imagine those targets are the wolves that killed your parents! Take your anger out on them!"] = "", -- A_Classic_Fairytale:first_blood +-- ["I'm...alive? How? Why?"] = "", -- A_Classic_Fairytale:backstab +-- ["I'm a ninja."] = "", -- A_Classic_Fairytale:dragon +-- ["I marked the place of their arrival. You're welcome!"] = "", -- A_Classic_Fairytale:backstab +-- ["I'm certain that this is a misunderstanding, fellow hedgehogs!"] = "", -- A_Classic_Fairytale:first_blood +-- ["I mean, none of you ceased to live."] = "", -- A_Classic_Fairytale:enemy +-- ["I'm getting old for this!"] = "", -- A_Classic_Fairytale:family +-- ["I'm getting thirsty..."] = "", -- A_Classic_Fairytale:family +-- ["I'm here to help you rescue her."] = "", -- A_Classic_Fairytale:family +-- ["I'm not sure about that!"] = "", -- A_Classic_Fairytale:united +-- ["Impressive...you are still dry as the corpse of a hawk after a week in the desert..."] = "", -- A_Classic_Fairytale:first_blood +-- ["I'm so scared!"] = "", -- A_Classic_Fairytale:united +-- ["Incredible..."] = "", -- A_Classic_Fairytale:shadow +-- ["I need to find the others!"] = "", -- A_Classic_Fairytale:backstab +-- ["I need to get to the other side of this island, fast!"] = "", -- A_Classic_Fairytale:journey +-- ["I need to move the tribe!"] = "", -- A_Classic_Fairytale:united +-- ["I need to prevent their arrival!"] = "", -- A_Classic_Fairytale:backstab +-- ["I need to warn the others."] = "", -- A_Classic_Fairytale:backstab +-- ["In fact, you are the only one that's been acting strangely."] = "", -- A_Classic_Fairytale:backstab +-- ["In order to get to the other side, you need to collect the crates first.|"] = "", -- A_Classic_Fairytale:dragon ["Instructor"] = "ИнÑтруктор", -- 01#Boot_Camp, User_Mission_-_Dangerous_Ducklings +-- ["Interesting idea, haha!"] = "", -- A_Classic_Fairytale:enemy +-- ["Interesting! Last time you said you killed a cannibal!"] = "", -- A_Classic_Fairytale:backstab +-- ["In the meantime, take these and return to your \"friend\"!"] = "", -- A_Classic_Fairytale:shadow -- ["invaders destroyed"] = "", +-- ["Invasion"] = "", -- A_Classic_Fairytale:united +-- ["I saw it with my own eyes!"] = "", -- A_Classic_Fairytale:shadow +-- ["I see..."] = "", -- A_Classic_Fairytale:shadow +-- ["I see you have already taken the leap of faith."] = "", -- A_Classic_Fairytale:first_blood +-- ["I see you would like his punishment to be more...personal..."] = "", -- A_Classic_Fairytale:first_blood +-- ["I sense another wave of cannibals heading my way!"] = "", -- A_Classic_Fairytale:backstab +-- ["I sense another wave of cannibals heading our way!"] = "", -- A_Classic_Fairytale:backstab +-- ["I shouldn't have drunk that last pint."] = "", -- A_Classic_Fairytale:dragon +-- ["Is this place in my head?"] = "", -- A_Classic_Fairytale:dragon +-- ["It doesn't matter. I won't let that alien hurt my daughter!"] = "", -- A_Classic_Fairytale:dragon +-- ["I think we are safe here."] = "", -- A_Classic_Fairytale:backstab +-- ["I thought their shaman died when he tried our medicine!"] = "", -- A_Classic_Fairytale:shadow +-- ["It is called 'Hogs of Steel'."] = "", -- A_Classic_Fairytale:enemy +-- ["It is time to practice your fighting skills."] = "", -- A_Classic_Fairytale:first_blood +-- ["It must be a childhood trauma..."] = "", -- A_Classic_Fairytale:family +-- ["It must be the aliens!"] = "", -- A_Classic_Fairytale:backstab +-- ["It must be the aliens' deed."] = "", -- A_Classic_Fairytale:backstab +-- ["It must be the cyborgs again!"] = "", -- A_Classic_Fairytale:enemy +-- ["I told you, I just found them."] = "", -- A_Classic_Fairytale:backstab -- ["It's a good thing SUDDEN DEATH is 99 turns away..."] = "", +-- ["It's always up to women to clear up the mess men created!"] = "", -- A_Classic_Fairytale:dragon +-- ["It's a shame, I forgot how to do that!"] = "", -- A_Classic_Fairytale:family +-- ["It's impossible to communicate with the spirits without a shaman."] = "", -- A_Classic_Fairytale:shadow +-- ["It's over..."] = "", -- A_Classic_Fairytale:shadow +-- ["It's time you learned that your actions have consequences!"] = "", -- A_Classic_Fairytale:journey +-- ["It's worth more than wood!"] = "", -- A_Classic_Fairytale:enemy +-- ["It wants our brains!"] = "", -- A_Classic_Fairytale:shadow +-- ["It was not a dream, unwise one!"] = "", -- A_Classic_Fairytale:backstab +-- ["I've seen this before. They just appear out of thin air."] = "", -- A_Classic_Fairytale:united +-- ["I want to play a game..."] = "", -- A_Classic_Fairytale:journey +-- ["I want to see how it handles this!"] = "", -- A_Classic_Fairytale:backstab +-- ["I wish to help you, "] = "", -- A_Classic_Fairytale:dragon +-- ["I wonder where Dense Cloud is..."] = "", -- A_Classic_Fairytale:journey, A_Classic_Fairytale:shadow +-- ["I wonder why I'm so angry all the time..."] = "", -- A_Classic_Fairytale:family +-- ["I won't let you kill her!"] = "", -- A_Classic_Fairytale:journey +-- ["Jack"] = "", -- A_Classic_Fairytale:dragon, A_Classic_Fairytale:family, A_Classic_Fairytale:queen +-- ["Jeremiah"] = "", -- A_Classic_Fairytale:dragon +-- ["John"] = "", -- A_Classic_Fairytale:journey +-- ["Judas"] = "", -- A_Classic_Fairytale:backstab ["Jumping is disabled"] = "Прыжки отключены", +-- ["Just kidding, none of you have died!"] = "", -- A_Classic_Fairytale:enemy +-- ["Just on a walk."] = "", -- A_Classic_Fairytale:united +-- ["Just wait till I get my hands on that trauma! ARGH!"] = "", -- A_Classic_Fairytale:family -- ["Kamikaze Expert!"] = "", -- ["Keep it up!"] = "", +-- ["Kerguelen"] = "", -- Continental_supplies -- ["Killing spree!"] = "", +-- ["KILL IT!"] = "", -- A_Classic_Fairytale:first_blood -- ["KILLS"] = "", +-- ["Kill the aliens!"] = "", -- A_Classic_Fairytale:dragon +-- ["Kill the cannibal!"] = "", -- A_Classic_Fairytale:first_blood +-- ["Kill the traitor...or spare his life!|Kill him or press [Precise]!"] = "", -- A_Classic_Fairytale:backstab ["Last Target!"] = "ПоÑледнÑÑ Ñ†ÐµÐ»ÑŒ!", +-- ["Leader"] = "", -- A_Classic_Fairytale:enemy +-- ["Leaderbot"] = "", -- A_Classic_Fairytale:queen +-- ["Leaks A Lot"] = "", -- A_Classic_Fairytale:backstab, A_Classic_Fairytale:dragon, A_Classic_Fairytale:enemy, A_Classic_Fairytale:epil, A_Classic_Fairytale:family, A_Classic_Fairytale:first_blood, A_Classic_Fairytale:journey, A_Classic_Fairytale:queen, A_Classic_Fairytale:shadow, A_Classic_Fairytale:united +-- ["Leaks A Lot, depressed for killing his loved one, failed to save the village..."] = "", -- A_Classic_Fairytale:journey +-- ["Leaks A Lot gave his life for his tribe! He should have survived!"] = "", -- A_Classic_Fairytale:first_blood +-- ["Leaks A Lot must survive!"] = "", -- A_Classic_Fairytale:journey +-- ["Led Heart"] = "", -- A_Classic_Fairytale:queen +-- ["Lee"] = "", -- A_Classic_Fairytale:dragon, A_Classic_Fairytale:family, A_Classic_Fairytale:queen -- ["[Left Shift]"] = "", +-- ["Let a Continent provide your weapons!"] = "", -- Continental_supplies +-- ["Let me test your skills a little, will you?"] = "", -- A_Classic_Fairytale:journey +-- ["Let's go home!"] = "", -- A_Classic_Fairytale:journey +-- ["Let's head back to the village!"] = "", -- A_Classic_Fairytale:shadow +-- ["Let's see what your comrade does now!"] = "", -- A_Classic_Fairytale:journey +-- ["Let's show those cannibals what we're made of!"] = "", -- A_Classic_Fairytale:backstab +-- ["Let them have a taste of my fury!"] = "", -- A_Classic_Fairytale:backstab +-- ["Let us help, too!"] = "", -- A_Classic_Fairytale:backstab +-- ["Light Cannfantry"] = "", -- A_Classic_Fairytale:united -- ["Listen up, maggot!!"] = "", +-- ["Little did they know that this hunt will mark them forever..."] = "", -- A_Classic_Fairytale:shadow -- ["Lively Lifeguard"] = "", +-- ["Lonely Cries: [Rise the water if no hog is in the circle and deal 1 damage to all hogs]"] = "", -- Continental_supplies +-- ["Look, I had no choice!"] = "", -- A_Classic_Fairytale:backstab +-- ["Look out! There's more of them!"] = "", -- A_Classic_Fairytale:backstab +-- ["Look out! We're surrounded by cannibals!"] = "", -- A_Classic_Fairytale:enemy +-- ["Looks like the whole world is falling apart!"] = "", -- A_Classic_Fairytale:enemy +-- ["Luckily, I've managed to snatch some of them."] = "", -- A_Classic_Fairytale:united +-- ["LUDICROUS KILL"] = "", -- Mutant +-- ["May the spirits aid you in all your quests!"] = "", -- A_Classic_Fairytale:backstab +-- ["Medicine: [Fire some exploding medicine that will heal all hogs effected by the explosion]"] = "", -- Continental_supplies +-- ["MEGA KILL"] = "", -- Mutant +-- ["Meiwes"] = "", -- A_Classic_Fairytale:backstab +-- ["Mindy"] = "", -- A_Classic_Fairytale:united -- ["Mine Deployer"] = "", -- ["Mine Eater!"] = "", -- ["|- 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 SUCCESS"] = "", ["MISSION SUCCESSFUL"] = "МИССИЯ УСПЕШÐÐ", -- User_Mission_-_Diver, User_Mission_-_Spooky_Tree, User_Mission_-_Teamwork +-- ["Molotov"] = "", -- Continental_supplies +-- ["MONSTER KILL"] = "", -- Mutant +-- ["More Natives"] = "", -- A_Classic_Fairytale:epil -- ["Movement: [Up], [Down], [Left], [Right]"] = "", -- ["Multi-shot!"] = "", +-- ["Muriel"] = "", -- A_Classic_Fairytale:backstab, A_Classic_Fairytale:dragon, A_Classic_Fairytale:family, A_Classic_Fairytale:queen +-- ["Muscle Dissolver"] = "", -- A_Classic_Fairytale:shadow +-- ["-------"] = "", -- Mutant +-- ["Nade Boy"] = "", -- Basic_Training_-_Grenade +-- ["Name"] = "", -- A_Classic_Fairytale:queen ["Nameless Heroes"] = "БезымÑнные герои", +-- ["Nancy Screw"] = "", -- A_Classic_Fairytale:enemy, A_Classic_Fairytale:queen +-- ["Napalm rocket: [Fire a bomb with napalm!]"] = "", -- Continental_supplies +-- ["Natives"] = "", -- A_Classic_Fairytale:backstab, A_Classic_Fairytale:dragon, A_Classic_Fairytale:enemy, A_Classic_Fairytale:epil, A_Classic_Fairytale:family, A_Classic_Fairytale:first_blood, A_Classic_Fairytale:journey, A_Classic_Fairytale:queen, A_Classic_Fairytale:shadow, A_Classic_Fairytale:united -- ["New Barrels Per Turn"] = "", ["NEW CLAN RECORD: "] = "ÐОВЫЙ РЕКОРД КЛÐÐÐ: ", -- ["NEW fastest lap: "] = "", -- ["New Mines Per Turn"] = "", -- ["NEW RACE RECORD: "] = "", ["Newton's Hammock"] = "Гамак Ðьютона", +-- ["Nicely done, meatbags!"] = "", -- A_Classic_Fairytale:enemy +-- ["Nice work, "] = "", -- A_Classic_Fairytale:dragon +-- ["Nice work!"] = "", -- A_Classic_Fairytale:enemy +-- ["Nilarian"] = "", -- A_Classic_Fairytale:queen +-- ["No, I came back to help you out..."] = "", -- A_Classic_Fairytale:shadow +-- ["No...I wonder where they disappeared?!"] = "", -- A_Classic_Fairytale:journey +-- ["Nom-Nom"] = "", -- A_Classic_Fairytale:journey +-- ["NomNom"] = "", -- A_Classic_Fairytale:united +-- ["Nope. It was one fast mole, that's for sure."] = "", -- A_Classic_Fairytale:shadow +-- ["No! Please, help me!"] = "", -- A_Classic_Fairytale:journey +-- ["NORMAL"] = "", -- Continental_supplies +-- ["North America"] = "", -- Continental_supplies +-- ["Not all hogs are born equal."] = "", -- Highlander -- ["NOT ENOUGH WAYPOINTS"] = "", +-- ["Not now, Fiery Water!"] = "", -- A_Classic_Fairytale:backstab -- ["Not So Friendly Match"] = "", -- Basketball, Knockball +-- ["Not you again! My head still hurts from last time!"] = "", -- A_Classic_Fairytale:shadow +-- ["No, we made sure of that!"] = "", -- A_Classic_Fairytale:united +-- ["Now find the next target! |Tip: Normally you lose health by falling down, so be careful!"] = "", -- Basic_Training_-_Rope +-- ["No! What have I done?! What have YOU done?!"] = "", -- A_Classic_Fairytale:journey +-- ["No. Where did he come from?"] = "", -- A_Classic_Fairytale:shadow +-- ["Now how do I get on the other side?!"] = "", -- A_Classic_Fairytale:dragon +-- ["No. You and the rest of the tribe are safer there!"] = "", -- A_Classic_Fairytale:backstab +-- ["Obliterate them!|Hint: You might want to take cover..."] = "", -- A_Classic_Fairytale:shadow +-- ["Obstacle course"] = "", -- A_Classic_Fairytale:dragon +-- ["Of course I have to save her. What did I expect?!"] = "", -- A_Classic_Fairytale:family +-- ["OH, COME ON!"] = "", -- A_Classic_Fairytale:journey +-- ["Oh, my!"] = "", -- A_Classic_Fairytale:first_blood +-- ["Oh, my! This is even more entertaining than I've expected!"] = "", -- A_Classic_Fairytale:backstab -- ["Oh no! Just try again!"] = "", -- User_Mission_-_Diver, User_Mission_-_Spooky_Tree, User_Mission_-_Teamwork +-- ["Oh no, not "] = "", -- A_Classic_Fairytale:backstab, A_Classic_Fairytale:united -- ["Oh no! Time's up! Just try again."] = "", --Bazooka, Shotgun, SniperRifle +-- ["Oh no! You failed! Just try again."] = "", -- Basic_Training_-_Cluster_Bomb +-- ["Oh, silly me! I forgot that I'm the shaman."] = "", -- A_Classic_Fairytale:backstab +-- ["Olive"] = "", -- A_Classic_Fairytale:united +-- ["Omnivore"] = "", -- A_Classic_Fairytale:first_blood +-- ["Once upon a time, on an island with great natural resources, lived two tribes in heated conflict..."] = "", -- A_Classic_Fairytale:first_blood +-- ["ONE HOG PER TEAM! KILLING EXCESS HEDGES"] = "", -- Mutant +-- ["One tribe was peaceful, spending their time hunting and training, enjoying the small pleasures of life..."] = "", -- A_Classic_Fairytale:first_blood +-- ["Oops...I dropped them."] = "", -- A_Classic_Fairytale:united +-- ["Open that crate and we will continue!"] = "", -- A_Classic_Fairytale:first_blood -- ["Operation Diver"] = "", -- ["Opposing Team: "] = "", +-- ["Orlando Boom!"] = "", -- A_Classic_Fairytale:queen +-- ["Ouch!"] = "", -- User_Mission_-_Rope_Knock_Challenge +-- ["Our tribe, our beautiful island!"] = "", -- A_Classic_Fairytale:enemy +-- ["Parachute"] = "", -- Continental_supplies -- ["Pathetic Hog #%d"] = "", -- ["Pathetic Resistance"] = "", -- User_Mission_-_Bamboo_Thicket, User_Mission_-_Newton_and_the_Hammock +-- ["Perfect! Now try to get the next crate without hurting yourself!"] = "", -- A_Classic_Fairytale:first_blood -- ["Per-Hog Ammo"] = "", +-- ["- Per team weapons|- 9 weaponschemes|- Unique new weapons| |Select continent first round with the Weapon Menu or by ([switch/tab]=Increase,[presice/left shift]=Decrease)"] = "", -- +-- ["Pfew! That was close!"] = "", -- A_Classic_Fairytale:shadow +-- ["Piñata bullet: [Contains some sweet candy!]"] = "", -- Continental_supplies +-- ["Pings left:"] = "", -- Space_Invasion -- ["Place more waypoints using [ENTER]"] = "", -- ["Place more waypoints using the 'Air Attack' weapon."] = "", +-- ["Planes Used:"] = "", -- User_Mission_-_RCPlane_Challenge +-- ["Planes Used"] = "", -- User_Mission_-_RCPlane_Challenge +-- ["Play with me!"] = "", -- A_Classic_Fairytale:shadow +-- ["Please place the way-point further from the waterline."] = "", -- Racer +-- ["Please place the way-point in the open, within the map boundaries."] = "", -- Racer +-- ["Please, stop releasing your \"smoke signals\"!"] = "", -- A_Classic_Fairytale:shadow +-- ["Point Blank Combo!"] = "", -- Space_Invasion -- ["points"] = "", -- Control, CTF_Blizzard, Basic_Training_-_Bazooka, Basic_Training_-_Shotgun, Basic_Training_-_Sniper_Rifle ["Poison"] = "Яд", +-- ["Portal hint: one goes to the destination, and one is the entrance.|"] = "", -- A_Classic_Fairytale:dragon +-- ["Portal mission"] = "", -- portal -- ["Power Remaining"] = "", -- ["Prepare yourself"] = "", +-- ["Press [Enter] to accept this configuration."] = "", -- WxW +-- ["Press [Left] or [Right] to move around, [Enter] to jump"] = "", -- A_Classic_Fairytale:first_blood -- ["Press [Precise] to skip intro"] = "", +-- ["Private Novak"] = "", -- Basic_Training_-_Cluster_Bomb +-- ["Protect yourselves!|Grenade hint: set the timer with [1-5], aim with [Up]/[Down] and hold [Space] to set power"] = "", -- A_Classic_Fairytale:shadow -- ["Race complexity limit reached."] = "", -- ["RACER"] = "", +-- ["Rachel"] = "", -- A_Classic_Fairytale:dragon, A_Classic_Fairytale:family, A_Classic_Fairytale:queen +-- ["Radar Ping"] = "", -- Space_Invasion +-- ["Raging Buffalo"] = "", -- A_Classic_Fairytale:backstab, A_Classic_Fairytale:dragon, A_Classic_Fairytale:enemy, A_Classic_Fairytale:epil, A_Classic_Fairytale:family, A_Classic_Fairytale:queen, A_Classic_Fairytale:united +-- ["Ramon"] = "", -- A_Classic_Fairytale:enemy, A_Classic_Fairytale:epil, A_Classic_Fairytale:family, A_Classic_Fairytale:queen, A_Classic_Fairytale:shadow +-- ["RC PLANE TRAINING"] = "", -- User_Mission_-_RCPlane_Challenge +-- ["Really?! You thought you could harm me with your little toys?"] = "", -- A_Classic_Fairytale:shadow +-- ["Regurgitator"] = "", -- A_Classic_Fairytale:backstab +-- ["Reinforcements"] = "", -- A_Classic_Fairytale:backstab +-- ["Remember: The rope only bend around objects, |if it doesn't hit anything it's always stright!"] = "", -- Basic_Training_-_Rope +-- ["Remember this, pathetic animal: when the day comes, you will regret your blind loyalty!"] = "", -- A_Classic_Fairytale:shadow -- [" - 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 to Leaks A Lot! If you get stuck, press [Precise] to try again!"] = "", -- A_Classic_Fairytale:shadow +-- ["Righteous Beard"] = "", -- A_Classic_Fairytale:backstab, A_Classic_Fairytale:dragon, A_Classic_Fairytale:enemy, A_Classic_Fairytale:epil, A_Classic_Fairytale:family, A_Classic_Fairytale:first_blood, A_Classic_Fairytale:queen, A_Classic_Fairytale:united +-- ["ROPE-KNOCKING"] = "", -- User_Mission_-_Rope_Knock_Challenge +-- ["Rope Training"] = "", -- Basic_Training_-_Rope +-- ["Rot Molester"] = "", -- A_Classic_Fairytale:shadow -- ["Round Limit:"] = "", -- ["Round Limit"] = "", -- ["Rounds Complete: "] = "", -- ["Rounds Complete"] = "", -- ["RULES OF THE GAME [Press ESC to view]"] = "", +-- ["Rusty Joe"] = "", -- A_Classic_Fairytale:queen -- ["s|"] = "", +-- ["Sabotage: [Sabotage all hogs in the circle and deal ~10 dmg]"] = "", -- Continental_supplies +-- ["Salivaslurper"] = "", -- A_Classic_Fairytale:united +-- ["Salvation"] = "", -- A_Classic_Fairytale:family +-- ["Salvation was one step closer now..."] = "", -- A_Classic_Fairytale:dragon -- ["Save as many hapless hogs as possible!"] = "", +-- ["Save Fell From Heaven!"] = "", -- A_Classic_Fairytale:journey +-- ["Save Leaks A Lot!|Hint: The Switch utility might be of help to you."] = "", -- A_Classic_Fairytale:shadow +-- ["Save the princess! All your hogs must survive!|Hint: Kill the cyborgs first! Use the ammo very carefully!|Hint: You might want to spare a girder for cover!"] = "", -- A_Classic_Fairytale:family +-- ["Save the princess by collecting the crate in under 12 turns!"] = "", -- A_Classic_Fairytale:journey +-- ["Scalp Muncher"] = "", -- A_Classic_Fairytale:backstab -- ["SCORE"] = "", +-- ["Score"] = "", -- Mutant +-- ["Scream from a Walrus: [Deal 20 damage + 10% of your hogs health to all hogs around you and get half back]"] = "", -- Continental_supplies ["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 +-- ["Seduction"] = "", -- Continental_supplies +-- ["Seems like every time you take a \"walk\", the enemy find us!"] = "", -- A_Classic_Fairytale:backstab +-- ["See that crate farther on the right?"] = "", -- A_Classic_Fairytale:first_blood ["See ya!"] = "УвидимÑÑ!", +-- ["Segmentation Paul"] = "", -- A_Classic_Fairytale:dragon +-- ["Select continent!"] = "", -- Continental_supplies +-- ["Select difficulty: [Left] - easier or [Right] - harder"] = "", -- A_Classic_Fairytale:first_blood -- ["selected!"] = "", -- ["s"] = "", -- GaudyRacer, Space_Invasion +-- ["... share your beauty with the world every morning, my princess!"] = "", -- A_Classic_Fairytale:journey +-- ["She's behind that tall thingy."] = "", -- A_Classic_Fairytale:family -- ["Shield boosted! +30 power"] = "", -- ["Shield Depleted"] = "", -- ["Shield is fully recharged!"] = "", @@ -162,59 +646,338 @@ -- ["Shield OFF:"] = "", -- ["Shield ON:"] = "", -- ["Shield Seeker!"] = "", +-- ["Shotgun"] = "", -- Continental_supplies -- ["Shotgun Team"] = "", -- ["Shotgun Training"] = "", -- ["shots remaining."] = "", -- ["Silly"] = "", -- ["Sinky"] = "", +-- ["Sirius Lee"] = "", -- A_Classic_Fairytale:enemy -- ["%s is out and Team %d|scored a penalty!| |Score:"] = "", -- Basketball, Knockball -- ["%s is out and Team %d|scored a point!| |Score:"] = "", -- Basketball, Knockball +-- ["Slippery"] = "", -- A_Classic_Fairytale:journey +-- ["Smith 0.97"] = "", -- A_Classic_Fairytale:enemy +-- ["Smith 0.98"] = "", -- A_Classic_Fairytale:enemy +-- ["Smith 0.99a"] = "", -- A_Classic_Fairytale:enemy +-- ["Smith 0.99b"] = "", -- A_Classic_Fairytale:enemy +-- ["Smith 0.99f"] = "", -- A_Classic_Fairytale:enemy +-- ["Smith 1.0"] = "", -- A_Classic_Fairytale:enemy +-- ["Sniper Rifle"] = "", -- Continental_supplies +-- ["Sniper!"] = "", -- Space_Invasion ["Sniper Training"] = "Тренировка Ñнайпера", -- ["Sniperz"] = "", +-- ["So humiliating..."] = "", -- A_Classic_Fairytale:first_blood +-- ["South America"] = "", -- Continental_supplies +-- ["So? What will it be?"] = "", -- A_Classic_Fairytale:shadow +-- ["Spawn the crate, and attack!"] = "", -- WxW +-- ["Special Weapons:"] = "", -- Continental_supplies +-- ["Spiky Cheese"] = "", -- A_Classic_Fairytale:enemy, A_Classic_Fairytale:epil, A_Classic_Fairytale:family, A_Classic_Fairytale:queen, A_Classic_Fairytale:shadow +-- ["Spleenlover"] = "", -- A_Classic_Fairytale:united -- ["Sponge"] = "", -- ["Spooky Tree"] = "", -- ["STATUS UPDATE"] = "", -- GaudyRacer, Space_Invasion +-- ["Steel Eye"] = "", -- A_Classic_Fairytale:queen +-- ["Step By Step"] = "", -- A_Classic_Fairytale:first_blood +-- ["Steve"] = "", -- A_Classic_Fairytale:dragon, A_Classic_Fairytale:family, A_Classic_Fairytale:queen +-- ["Sticky Mine"] = "", -- Continental_supplies +-- ["Stronglings"] = "", -- A_Classic_Fairytale:shadow +-- ["Structure"] = "", -- Continental_supplies +-- ["Super Weapons"] = "", -- WxW +-- ["Surf Before Crate"] = "", -- WxW +-- ["Surfer! +15 points!"] = "", -- Space_Invasion +-- ["Surfer!"] = "", -- WxW +-- ["Survive!|Hint: Cinematics can be skipped with the [Precise] key."] = "", -- A_Classic_Fairytale:shadow +-- ["Swing, Leaks A Lot, on the wings of the wind!"] = "", -- A_Classic_Fairytale:first_blood -- ["Switched to "] = "", +-- ["Syntax Errol"] = "", -- A_Classic_Fairytale:dragon +-- ["Talk about mixed signals..."] = "", -- A_Classic_Fairytale:dragon ["Team %d: "] = "Команда %d: ", ["Team Scores"] = "Очки команды", -- Control, Space_Invasion +-- ["Teleport hint: just use the mouse to select the destination!"] = "", -- A_Classic_Fairytale:dragon +-- ["Thanks!"] = "", -- A_Classic_Fairytale:family +-- ["Thank you, my hero!"] = "", -- A_Classic_Fairytale:family +-- ["Thank you, oh, thank you, Leaks A Lot!"] = "", -- A_Classic_Fairytale:journey +-- ["Thank you, oh, thank you, my heroes!"] = "", -- A_Classic_Fairytale:journey +-- ["That is, indeed, very weird..."] = "", -- A_Classic_Fairytale:united +-- ["That makes it almost invaluable!"] = "", -- A_Classic_Fairytale:enemy +-- ["That ought to show them!"] = "", -- A_Classic_Fairytale:backstab +-- ["That's for my father!"] = "", -- A_Classic_Fairytale:backstab +-- ["That shaman sure knows what he's doing!"] = "", -- A_Classic_Fairytale:shadow -- ["That Sinking Feeling"] = "", +-- ["That's not our problem!"] = "", -- A_Classic_Fairytale:enemy +-- ["That's typical of you!"] = "", -- A_Classic_Fairytale:family +-- ["That was just mean!"] = "", -- A_Classic_Fairytale:backstab, A_Classic_Fairytale:united -- ["That was pointless."] = "", +-- ["The answer is...entertaintment. You'll see what I mean."] = "", -- A_Classic_Fairytale:backstab +-- ["The anti-portal zone is all over the floor, and I have nothing to kill him...Droping something could hurt him enough to kill him..."] = "", -- portal +-- ["The Bull's Eye"] = "", -- A_Classic_Fairytale:first_blood +-- ["The caves are well hidden, they won't find us there!"] = "", -- A_Classic_Fairytale:united +-- ["The Crate Frenzy"] = "", -- A_Classic_Fairytale:first_blood +-- ["The Dilemma"] = "", -- A_Classic_Fairytale:shadow +-- ["The enemy can't move but it might be a good idea to stay out of sight!|"] = "", -- A_Classic_Fairytale:dragon -- ["The enemy is hiding out on yonder ducky!"] = "", +-- ["The Enemy Of My Enemy"] = "", -- A_Classic_Fairytale:enemy +-- ["The First Blood"] = "", -- A_Classic_Fairytale:first_blood +-- ["The First Encounter"] = "", -- A_Classic_Fairytale:shadow -- ["The flag will respawn next round."] = "", +-- ["The food bites back"] = "", -- A_Classic_Fairytale:backstab +-- ["The giant umbrella from the last crate should help break the fall."] = "", -- A_Classic_Fairytale:first_blood +-- ["The Great Escape"] = "", -- User_Mission_-_The_Great_Escape +-- ["The guardian"] = "", -- A_Classic_Fairytale:shadow +-- ["The Individualist"] = "", -- A_Classic_Fairytale:shadow +-- ["Their buildings were very primitive back then, even for an uncivilised island."] = "", -- A_Classic_Fairytale:united +-- ["The Journey Back"] = "", -- A_Classic_Fairytale:journey +-- ["The Leap of Faith"] = "", -- A_Classic_Fairytale:first_blood +-- ["The Moonwalk"] = "", -- A_Classic_Fairytale:journey -- ["The Nameless One"] = "", +-- ["The next one is pretty hard! |Tip: You have to do multiple swings!"] = "", -- Basic_Training_-_Rope +-- ["Then how do they keep appearing?"] = "", -- A_Classic_Fairytale:shadow +-- ["The other one were all cannibals, spending their time eating the organs of fellow hedgehogs..."] = "", -- A_Classic_Fairytale:first_blood +-- ["There must be a spy among us!"] = "", -- A_Classic_Fairytale:backstab +-- ["There's more of them? When did they become so hungry?"] = "", -- A_Classic_Fairytale:backstab, A_Classic_Fairytale:united +-- ["There's nothing more satisfying for me than seeing you share your beauty with the world every morning, my princess!"] = "", -- A_Classic_Fairytale:journey +-- ["There's nothing more satisfying to us than seeing you share your beauty..."] = "", -- A_Classic_Fairytale:journey +-- ["There's nothing more satisfying to us than seeing you share your beauty with the world every morning, my princess!"] = "", -- A_Classic_Fairytale:journey +-- ["The Rising"] = "", -- A_Classic_Fairytale:first_blood +-- ["The Savior"] = "", -- A_Classic_Fairytale:journey +-- ["These primitive people are so funny!"] = "", -- A_Classic_Fairytale:backstab +-- ["The Shadow Falls"] = "", -- A_Classic_Fairytale:shadow +-- ["The Showdown"] = "", -- A_Classic_Fairytale:shadow +-- ["The Slaughter"] = "", -- A_Classic_Fairytale:dragon, A_Classic_Fairytale:first_blood -- ["THE SPECIALISTS"] = "", +-- ["The spirits of the ancerstors are surely pleased, Leaks A Lot."] = "", -- A_Classic_Fairytale:first_blood +-- ["The Torment"] = "", -- A_Classic_Fairytale:first_blood +-- ["The Tunnel Maker"] = "", -- A_Classic_Fairytale:journey +-- ["The Ultimate Weapon"] = "", -- A_Classic_Fairytale:first_blood +-- ["The Union"] = "", -- A_Classic_Fairytale:enemy +-- ["The village, unprepared, was destroyed by the cyborgs..."] = "", -- A_Classic_Fairytale:journey +-- ["The walk of Fame"] = "", -- A_Classic_Fairytale:shadow +-- ["The wasted youth"] = "", -- A_Classic_Fairytale:first_blood +-- ["The weapon in that last crate was bestowed upon us by the ancients!"] = "", -- A_Classic_Fairytale:first_blood +-- ["The what?!"] = "", -- A_Classic_Fairytale:dragon +-- ["The wind whispers that you are ready to become familiar with tools, now..."] = "", -- A_Classic_Fairytale:first_blood +-- ["They are all waiting back in the village, haha."] = "", -- A_Classic_Fairytale:enemy +-- ["They Call Me Bullseye!"] = "", -- Space_Invasion +-- ["They have weapons we've never seen before!"] = "", -- A_Classic_Fairytale:united +-- ["They keep appearing like this. It's weird!"] = "", -- A_Classic_Fairytale:united +-- ["They killed "] = "", -- A_Classic_Fairytale:backstab, A_Classic_Fairytale:united +-- ["They must be trying to weaken us!"] = "", -- A_Classic_Fairytale:enemy +-- ["They never learn"] = "", -- A_Classic_Fairytale:journey +-- ["They told us to wear these clothes. They said that this is the newest trend."] = "", -- A_Classic_Fairytale:enemy +-- ["They've been manipulating us all this time!"] = "", -- A_Classic_Fairytale:enemy +-- ["Thighlicker"] = "", -- A_Classic_Fairytale:united +-- ["This is it! It's time to make Fell From Heaven fall for me..."] = "", -- A_Classic_Fairytale:first_blood +-- ["This island is the only place left on Earth with grass on it!"] = "", -- A_Classic_Fairytale:enemy +-- ["This is typical!"] = "", -- A_Classic_Fairytale:dragon +-- ["This must be some kind of sorcery!"] = "", -- A_Classic_Fairytale:shadow +-- ["This must be the caves!"] = "", -- A_Classic_Fairytale:backstab -- ["This one's tricky."] = "", -- ["This rain is really something..."] = "", - ["TIME: "] = "ВРЕМЯ: ", +-- ["This will be fun!"] = "", -- A_Classic_Fairytale:enemy +-- ["Those aliens are destroying the island!"] = "", -- A_Classic_Fairytale:family -- ["Timed Kamikaze!"] = "", -- ["Time Extended!"] = "", -- ["Time Extension"] = "", + ["TIME: "] = "ВРЕМЯ: ", +-- ["Tip: The rope physics are different than in the real world, |use it to your advantage!"] = "", -- Basic_Training_-_Rope -- ["Toggle Shield"] = "", +-- ["To help you, of course!"] = "", -- A_Classic_Fairytale:journey +-- ["To place a girder, select it, use [Left] and [Right] to select angle and length, place with [Left Click]"] = "", -- A_Classic_Fairytale:shadow +-- ["Torn Muscle"] = "", -- A_Classic_Fairytale:journey +-- [" to save the village."] = "", -- A_Classic_Fairytale:dragon +-- ["To the caves..."] = "", -- A_Classic_Fairytale:united -- ["Toxic Team"] = "", -- User_Mission_-_Diver, User_Mission_-_Spooky_Tree, User_Mission_-_Teamwork -- ["TRACK COMPLETED"] = "", -- ["TRACK FAILED!"] = "", +-- ["training"] = "", -- portal +-- ["Traitors"] = "", -- A_Classic_Fairytale:epil +-- ["Tribe"] = "", -- A_Classic_Fairytale:backstab -- ["TrophyRace"] = "", +-- ["Try to protect the chief! You won't lose if he dies, but it is advised that he survives."] = "", -- A_Classic_Fairytale:united -- ["T_T"] = "", -- ["Tumbling Time Extended!"] = "", +-- ["Turns until Sudden Death: "] = "", -- A_Classic_Fairytale:dragon +-- [" turns until Sudden Death! Better hurry!"] = "", -- A_Classic_Fairytale:dragon -- ["Turn Time"] = "", +-- ["Two little hogs cooperating, getting past obstacles..."] = "", -- A_Classic_Fairytale:journey +-- ["Uhm...I met one of them and took his weapons."] = "", -- A_Classic_Fairytale:shadow +-- ["Uhmm...ok no."] = "", -- A_Classic_Fairytale:enemy +-- ["ULTRA KILL"] = "", -- Mutant +-- ["Under Construction"] = "", -- A_Classic_Fairytale:shadow +-- ["Unexpected Igor"] = "", -- A_Classic_Fairytale:dragon -- ["Unit"] = "", +-- ["Unit 0x0007"] = "", -- A_Classic_Fairytale:family +-- ["Unit 334a$7%;.*"] = "", -- A_Classic_Fairytale:backstab, A_Classic_Fairytale:dragon, A_Classic_Fairytale:enemy, A_Classic_Fairytale:family, A_Classic_Fairytale:queen, A_Classic_Fairytale:united -- ["Unit 3378"] = "", -- ["Unit 835"] = "", +-- ["United We Stand"] = "", -- A_Classic_Fairytale:united -- ["Unlimited Attacks"] = "", +-- ["Unlucky Sods"] = "", -- User_Mission_-_Rope_Knock_Challenge -- ["Unstoppable!"] = "", +-- ["Unsuspecting Louts"] = "", -- User_Mission_-_Rope_Knock_Challenge +-- ["[Up], [Down] to aim, [Space] to shoot!"] = "", -- A_Classic_Fairytale:first_blood +-- ["Use it wisely!"] = "", -- A_Classic_Fairytale:dragon +-- ["Use it with precaution!"] = "", -- A_Classic_Fairytale:first_blood -- ["User Challenge"] = "", +-- ["Use the parachute ([Space] while in air)"] = "", -- +-- ["Use the portal gun to get to the next crate, then use the new gun to get to the final destination!|"] = "", -- A_Classic_Fairytale:dragon +-- ["Use the rope to get on the head of the mole, young one!"] = "", -- A_Classic_Fairytale:first_blood +-- ["Use the rope to knock your enemies to their doom."] = "", -- User_Mission_-_Rope_Knock_Challenge -- ["Use your rope to get from start to finish as fast as you can!"] = "", +-- ["Vedgies"] = "", -- A_Classic_Fairytale:journey +-- ["Vegan Jack"] = "", -- A_Classic_Fairytale:enemy +-- ["Victory!"] = "", -- Basic_Training_-_Rope -- ["Victory for the "] = "", -- CTF_Blizzard, Capture_the_Flag +-- ["Violence is not the answer to your problems!"] = "", -- A_Classic_Fairytale:first_blood +-- ["Walls Left"] = "", -- WxW +-- ["Walls Required"] = "", -- WxW +-- ["WALL TO WALL"] = "", -- WxW +-- ["Wannabe Flyboys"] = "", -- User_Mission_-_RCPlane_Challenge +-- ["Wannabe Shoppsta"] = "", -- User_Mission_-_Rope_Knock_Challenge +-- ["Watch your steps, young one!"] = "", -- A_Classic_Fairytale:first_blood -- ["Waypoint placed."] = "", -- ["Way-Points Remaining"] = "", +-- ["Weaklings"] = "", -- A_Classic_Fairytale:shadow +-- ["We all know what happens when you get frightened..."] = "", -- A_Classic_Fairytale:first_blood -- ["Weapons Reset"] = "", +-- ["Weapons reset."] = "", -- Highlander +-- ["We are indeed."] = "", -- A_Classic_Fairytale:backstab +-- ["We can't defeat them!"] = "", -- A_Classic_Fairytale:shadow +-- ["We can't hold them up much longer!"] = "", -- A_Classic_Fairytale:united +-- ["We can't let them take over our little island!"] = "", -- A_Classic_Fairytale:enemy +-- ["We have no time to waste..."] = "", -- A_Classic_Fairytale:journey +-- ["We have nowhere else to live!"] = "", -- A_Classic_Fairytale:enemy +-- ["We have to protect the village!"] = "", -- A_Classic_Fairytale:united +-- ["We have to unite and defeat those cylergs!"] = "", -- A_Classic_Fairytale:enemy +-- ["Welcome, Leaks A Lot!"] = "", -- A_Classic_Fairytale:journey -- ["Well done."] = "", +-- ["We'll give you a problem then!"] = "", -- A_Classic_Fairytale:enemy +-- ["We'll spare your life for now!"] = "", -- A_Classic_Fairytale:backstab +-- ["Well, that was a waste of time."] = "", -- A_Classic_Fairytale:dragon +-- ["Well, well! Isn't that the cutest thing you've ever seen?"] = "", -- A_Classic_Fairytale:journey +-- ["Well, yes. This was a cyborg television show."] = "", -- A_Classic_Fairytale:enemy +-- ["We made sure noone followed us!"] = "", -- A_Classic_Fairytale:backstab +-- ["We need to move!"] = "", -- A_Classic_Fairytale:united +-- ["We need to prevent their arrival!"] = "", -- A_Classic_Fairytale:backstab +-- ["We need to warn the village."] = "", -- A_Classic_Fairytale:shadow +-- ["We should head back to the village now."] = "", -- A_Classic_Fairytale:shadow +-- ["We were trying to save her and we got lost."] = "", -- A_Classic_Fairytale:family +-- ["We won't let you hurt her!"] = "", -- A_Classic_Fairytale:journey +-- ["What?! A cannibal? Here? There is no time to waste! Come, you are prepared."] = "", -- A_Classic_Fairytale:first_blood +-- ["What a douche!"] = "", -- A_Classic_Fairytale:enemy +-- ["What am I gonna...eat, yo?"] = "", -- A_Classic_Fairytale:family +-- ["What are you doing at a distance so great, young one?"] = "", -- A_Classic_Fairytale:first_blood +-- ["What are you doing? Let her go!"] = "", -- A_Classic_Fairytale:journey +-- ["What a ride!"] = "", -- A_Classic_Fairytale:shadow +-- ["What a strange cave!"] = "", -- A_Classic_Fairytale:dragon +-- ["What a strange feeling!"] = "", -- A_Classic_Fairytale:backstab +-- ["What do my faulty eyes observe? A spy!"] = "", -- A_Classic_Fairytale:first_blood +-- ["Whatever floats your boat..."] = "", -- A_Classic_Fairytale:shadow +-- [" What !! For all of this struggle i just win some ... TIME o0"] = "", -- portal +-- ["What has "] = "", -- A_Classic_Fairytale:backstab +-- ["What? Here? How did they find us?!"] = "", -- A_Classic_Fairytale:backstab +-- ["What is this place?"] = "", -- A_Classic_Fairytale:dragon, A_Classic_Fairytale:enemy +-- ["What shall we do with the traitor?"] = "", -- A_Classic_Fairytale:backstab +-- ["WHAT?! You're the ones attacking us!"] = "", -- A_Classic_Fairytale:enemy +-- ["When?"] = "", -- A_Classic_Fairytale:enemy +-- ["When I find it..."] = "", -- A_Classic_Fairytale:dragon +-- ["Where are all these crates coming from?!"] = "", -- A_Classic_Fairytale:shadow +-- ["Where are they?!"] = "", -- A_Classic_Fairytale:backstab +-- ["Where did that alien run?"] = "", -- A_Classic_Fairytale:dragon +-- ["Where did you get the exploding apples?"] = "", -- A_Classic_Fairytale:shadow +-- ["Where did you get the exploding apples and the magic bow that shoots many arrows?"] = "", -- A_Classic_Fairytale:shadow +-- ["Where did you get the magic bow that shoots many arrows?"] = "", -- A_Classic_Fairytale:shadow +-- ["Where did you get the weapons in the forest, Dense Cloud?"] = "", -- A_Classic_Fairytale:backstab +-- ["Where do you get that?!"] = "", -- A_Classic_Fairytale:enemy +-- ["Where have you been?!"] = "", -- A_Classic_Fairytale:backstab +-- ["Where have you been?"] = "", -- A_Classic_Fairytale:united +-- ["? Why?"] = "", -- A_Classic_Fairytale:backstab +-- ["Why "] = "", -- A_Classic_Fairytale:backstab +-- ["! Why?!"] = "", -- A_Classic_Fairytale:backstab, A_Classic_Fairytale:united +-- ["Why are you doing this?"] = "", -- A_Classic_Fairytale:journey +-- ["Why are you helping us, uhm...?"] = "", -- A_Classic_Fairytale:family +-- ["Why can't he just let her go?!"] = "", -- A_Classic_Fairytale:family +-- ["Why do men keep hurting me?"] = "", -- A_Classic_Fairytale:first_blood +-- ["Why do you not like me?"] = "", -- A_Classic_Fairytale:shadow +-- ["Why do you want to take over our island?"] = "", -- A_Classic_Fairytale:enemy +-- ["Why me?!"] = "", -- A_Classic_Fairytale:backstab +-- ["Why would they do this?"] = "", -- A_Classic_Fairytale:backstab +-- ["- Will Get 1-3 random weapons"] = "", -- Continental_supplies +-- ["- Will refresh Parachute each turn."] = "", -- Continental_supplies +-- ["- Will refresh portalgun each turn."] = "", -- Continental_supplies -- ["Will this ever end?"] = "", +-- ["WINNER IS "] = "", -- Mutant -- ["WINNING TIME: "] = "", +-- ["Wise Oak"] = "", -- A_Classic_Fairytale:backstab, A_Classic_Fairytale:dragon, A_Classic_Fairytale:enemy, A_Classic_Fairytale:epil, A_Classic_Fairytale:family, A_Classic_Fairytale:queen +-- ["With Dense Cloud on the land of shadows, I'm the village's only hope..."] = "", -- A_Classic_Fairytale:journey +-- ["With the rest of the tribe gone, it was up to "] = "", -- A_Classic_Fairytale:dragon +-- ["Worry not, for it is a peaceful animal! There is no reason to be afraid..."] = "", -- A_Classic_Fairytale:first_blood +-- ["Wow, what a dream!"] = "", -- A_Classic_Fairytale:backstab +-- ["Y3K1337"] = "", -- A_Classic_Fairytale:journey, A_Classic_Fairytale:shadow +-- ["Yay, we won!"] = "", -- A_Classic_Fairytale:enemy +-- ["Y Chwiliad"] = "", -- A_Classic_Fairytale:dragon +-- ["Yeah...I think it's a 'he', lol."] = "", -- A_Classic_Fairytale:shadow +-- ["Yeah, sure! I died. Hillarious!"] = "", -- A_Classic_Fairytale:backstab +-- ["Yeah, take that!"] = "", -- A_Classic_Fairytale:dragon +-- ["Yeah? Watcha gonna do? Cry?"] = "", -- A_Classic_Fairytale:journey +-- ["Yes!"] = "", -- A_Classic_Fairytale:enemy +-- ["Yes, yeees! You are now ready to enter the real world!"] = "", -- A_Classic_Fairytale:first_blood +-- ["Yo, dude, we're here, too!"] = "", -- A_Classic_Fairytale:family +-- ["You are given the chance to turn your life around..."] = "", -- A_Classic_Fairytale:shadow +-- ["You are playing with our lives here!"] = "", -- A_Classic_Fairytale:enemy +-- ["! You bastards!"] = "", -- A_Classic_Fairytale:backstab, A_Classic_Fairytale:united +-- ["You bear impressive skills, "] = "", -- A_Classic_Fairytale:dragon +-- ["You can't fire a portal on the blue surface"] = "", -- portal +-- ["You couldn't possibly believe that after refusing my offer I'd just let you go!"] = "", -- A_Classic_Fairytale:journey -- ["You'd almost swear the water was rising!"] = "", +-- ["You'd better watch your steps..."] = "", -- A_Classic_Fairytale:journey +-- ["You did not make it in time, try again!"] = "", -- Basic_Training_-_Rope +-- ["You have 7 turns until the next wave arrives.|Make sure the arriving cannibals are greeted appropriately!|If the hog dies, the cause is lost.|Hint: you might want to use some mines..."] = "", -- A_Classic_Fairytale:backstab +-- ["You have "] = "", -- A_Classic_Fairytale:dragon +-- ["You have been giving us out to the enemy, haven't you!"] = "", -- A_Classic_Fairytale:backstab +-- ["You have been respawned, at your last checkpoint!"] = "", -- Basic_Training_-_Rope +-- ["You have been respawned, be more carefull next time!"] = "", -- Basic_Training_-_Rope +-- ["You have chosen the perfect moment to leave."] = "", -- A_Classic_Fairytale:united +-- ["You have failed to complete your task, young one!"] = "", -- A_Classic_Fairytale:journey +-- ["You have failed to save the tribe!"] = "", -- A_Classic_Fairytale:backstab +-- ["You have finally figured it out!"] = "", -- A_Classic_Fairytale:enemy +-- ["You have kidnapped our whole tribe!"] = "", -- A_Classic_Fairytale:enemy +-- ["You have killed an innocent hedgehog!"] = "", -- A_Classic_Fairytale:backstab +-- ["You have proven yourself worthy to see our most ancient secret!"] = "", -- A_Classic_Fairytale:first_blood +-- ["You have proven yourselves worthy!"] = "", -- A_Classic_Fairytale:enemy -- ["You have SCORED!!"] = "", +-- ["You have to destroy 12 targets in 180 seconds"] = "", -- Basic_Training_-_Cluster_Bomb +-- ["You have won the game by proving true cooperative skills!"] = "", -- A_Classic_Fairytale:enemy +-- ["You just appeared out of thin air!"] = "", -- A_Classic_Fairytale:backstab +-- ["You just committed suicide..."] = "", -- A_Classic_Fairytale:shadow +-- ["You killed my father, you monster!"] = "", -- A_Classic_Fairytale:backstab +-- ["You know...taking a stroll."] = "", -- A_Classic_Fairytale:backstab +-- ["You know what? I don't even regret anything!"] = "", -- A_Classic_Fairytale:backstab +-- ["You'll see what I mean!"] = "", -- A_Classic_Fairytale:enemy +-- ["You may only attack from a rope!"] = "", -- WxW +-- ["You meatbags are pretty slow, you know!"] = "", -- A_Classic_Fairytale:enemy +-- ["You might want to find a way to instantly kill arriving cannibals!"] = "", -- A_Classic_Fairytale:backstab +-- ["Young one, you are telling us that they can instantly change location without a shaman?"] = "", -- A_Classic_Fairytale:united +-- ["You probably know what to do next..."] = "", -- A_Classic_Fairytale:first_blood +-- ["Your deaths will be avenged, cannibals!"] = "", -- A_Classic_Fairytale:enemy +-- ["Your death will not be in vain, Dense Cloud!"] = "", -- A_Classic_Fairytale:shadow +-- ["You're...alive!? But we saw you die!"] = "", -- A_Classic_Fairytale:backstab +-- ["You're a pathetic liar!"] = "", -- A_Classic_Fairytale:backstab +-- ["You're funny!"] = "", -- A_Classic_Fairytale:journey +-- ["You're getting pretty good! |Tip: When you shorten you rope you move faster! |and when you lengthen it you move slower"] = "", -- Basic_Training_-_Rope +-- ["You're pathetic! You are not worthy of my attention..."] = "", -- A_Classic_Fairytale:shadow +-- ["You're probably wondering why I bought you back..."] = "", -- A_Classic_Fairytale:backstab +-- ["You're terrorizing the forest...We won't catch anything like this!"] = "", -- A_Classic_Fairytale:shadow +-- ["Your hogs must survive!"] = "", -- A_Classic_Fairytale:journey +-- ["Your movement skills will be evaluated now."] = "", -- A_Classic_Fairytale:first_blood -- ["You saved"] = "", +-- ["You've been assaulting us, we have been just defending ourselves!"] = "", -- A_Classic_Fairytale:enemy -- ["You've failed. Try again."] = "", -- ["You've reached the goal!| |Time: "] = "", +-- ["You will be avenged!"] = "", -- A_Classic_Fairytale:shadow +-- ["You won't believe what happened to me!"] = "", -- A_Classic_Fairytale:backstab +-- ["Yuck! I bet they'll keep worshipping her even after I save the village!"] = "", -- A_Classic_Fairytale:family +-- ["Zealandia"] = "", -- Continental_supplies -- ["'Zooka Team"] = "", +-- ["Zork"] = "", -- A_Classic_Fairytale:dragon, A_Classic_Fairytale:family, A_Classic_Fairytale:queen } diff -r 3331b30e4ef1 -r 88fde28bbda6 share/hedgewars/Data/Locale/ru.txt --- a/share/hedgewars/Data/Locale/ru.txt Sun Oct 21 01:28:33 2012 +0400 +++ b/share/hedgewars/Data/Locale/ru.txt Sat Nov 03 00:34:35 2012 +0400 @@ -56,6 +56,8 @@ 00:53=Будка времени 00:54=Структура 00:55=РаÑпылитель земли +00:56=Замораживатель +00:57=Секач 01:00=Вперёд к победе! 01:01=ÐÐ¸Ñ‡ÑŒÑ diff -r 3331b30e4ef1 -r 88fde28bbda6 share/hedgewars/Data/Locale/sk.lua --- a/share/hedgewars/Data/Locale/sk.lua Sun Oct 21 01:28:33 2012 +0400 +++ b/share/hedgewars/Data/Locale/sk.lua Sat Nov 03 00:34:35 2012 +0400 @@ -2,137 +2,640 @@ [":("] = ":(", ["!!!"] = "!!!", ["..."] = "...", +-- ["011101000"] = "", -- A_Classic_Fairytale:dragon +-- ["011101001"] = "", -- A_Classic_Fairytale:backstab, A_Classic_Fairytale:dragon, A_Classic_Fairytale:enemy, A_Classic_Fairytale:family, A_Classic_Fairytale:journey, A_Classic_Fairytale:queen, A_Classic_Fairytale:shadow, A_Classic_Fairytale:united +-- ["30 minutes later..."] = "", -- A_Classic_Fairytale:shadow +-- ["About a month ago, a cyborg came and told us that you're the cannibals!"] = "", -- A_Classic_Fairytale:enemy ["Accuracy Bonus!"] = "Bonus za presnosÅ¥!", +-- ["Ace"] = "", -- User_Mission_-_RCPlane_Challenge, User_Mission_-_Rope_Knock_Challenge +-- ["Achievement Unlocked"] = "", -- User_Mission_-_Bamboo_Thicket, User_Mission_-_That_Sinking_Feeling, Tumbler +-- ["A Classic Fairytale"] = "", -- A_Classic_Fairytale:first_blood +-- ["???"] = "", -- A_Classic_Fairytale:backstab +-- ["Actually, you aren't worthy of life! Take this..."] = "", -- A_Classic_Fairytale:shadow +-- ["A cy-what?"] = "", -- A_Classic_Fairytale:enemy +-- ["Adventurous"] = "", -- A_Classic_Fairytale:journey +-- ["Africa"] = "", -- Continental_supplies +-- ["After Leaks A Lot betrayed his tribe, he joined the cannibals..."] = "", -- A_Classic_Fairytale:first_blood +-- ["After the shock caused by the enemy spy, Leaks A Lot and Dense Cloud went hunting to relax."] = "", -- A_Classic_Fairytale:shadow +-- ["Again with the 'cannibals' thing!"] = "", -- A_Classic_Fairytale:enemy +-- ["a Hedgewars challenge"] = "", -- User_Mission_-_RCPlane_Challenge, User_Mission_-_Rope_Knock_Challenge ["a Hedgewars mini-game"] = "minihra Hedgewars", -- Space_Invasion, The_Specialists ["Aiming Practice"] = "Tréning presnosti", --Bazooka, Shotgun, SniperRifle - ["Ammo"] = "Výzbroj", +-- ["A leap in a leap"] = "", -- A_Classic_Fairytale:first_blood +-- ["A little gift from the cyborgs"] = "", -- A_Classic_Fairytale:shadow +-- ["All gone...everything!"] = "", -- A_Classic_Fairytale:enemy +-- ["All right, we just need to get to the other side of the island!"] = "", -- A_Classic_Fairytale:journey +-- ["All walls touched!"] = "", -- WxW ["Ammo Depleted!"] = "Výzbroj vyÄerpaná!", ["ammo extended!"] = "výzbroj doplnená!", ["Ammo is reset at the end of your turn."] = "Výzbroj je na konci každého kola resetovaná.", ["Ammo Maniac!"] = "MuniÄný maniak!", + ["Ammo"] = "Výzbroj", +-- ["And how am I alive?!"] = "", -- A_Classic_Fairytale:enemy +-- ["And so happenned that Leaks A Lot failed to complete the challenge! He landed, pressured by shame..."] = "", -- A_Classic_Fairytale:first_blood +-- ["And so it began..."] = "", -- A_Classic_Fairytale:first_blood +-- ["...and so the cyborgs took over the world..."] = "", -- A_Classic_Fairytale:shadow +-- ["And so they discovered that cyborgs weren't invulnerable..."] = "", -- A_Classic_Fairytale:journey +-- ["And where's all the weed?"] = "", -- A_Classic_Fairytale:dragon +-- ["And you believed me? Oh, god, that's cute!"] = "", -- A_Classic_Fairytale:journey +-- ["Anno 1032: [The explosion will make a strong push ~ wide range, wont affect hogs close to the target]"] = "", -- Continental_supplies +-- ["Antarctica"] = "", -- Continental_supplies +-- ["Are we there yet?"] = "", -- A_Classic_Fairytale:shadow +-- ["Are you accusing me of something?"] = "", -- A_Classic_Fairytale:backstab +-- ["Are you saying that many of us have died for your entertainment?"] = "", -- A_Classic_Fairytale:enemy +-- ["Artur Detour"] = "", -- A_Classic_Fairytale:queen +-- ["As a reward for your performance, here's some new technology!"] = "", -- A_Classic_Fairytale:dragon +-- ["a shoppa minigame"] = "", -- WxW +-- ["Asia"] = "", -- Continental_supplies +-- ["Assault Team"] = "", -- A_Classic_Fairytale:backstab +-- ["As the ammo is sparse, you might want to reuse ropes while mid-air.|"] = "", -- A_Classic_Fairytale:dragon +-- ["As the challenge was completed, Leaks A Lot set foot on the ground..."] = "", -- A_Classic_Fairytale:first_blood +-- ["As you can see, there is no way to get on the other side!"] = "", -- A_Classic_Fairytale:dragon +-- ["Attack From Rope"] = "", -- WxW +-- ["Australia"] = "", -- Continental_supplies ["Available points remaining: "] = "Zostávajúci poÄet bodov: ", +-- ["Back Breaker"] = "", -- A_Classic_Fairytale:backstab +-- ["Back in the village, after telling the villagers about the threat..."] = "", -- A_Classic_Fairytale:united ["[Backspace]"] = "[Backspace]", +-- ["Backstab"] = "", -- A_Classic_Fairytale:backstab +-- ["Bad Team"] = "", -- User_Mission_-_The_Great_Escape ["Bamboo Thicket"] = "Bambusové krovie", ["Barrel Eater!"] = "Sudový labužník!", ["Barrel Launcher"] = "VystreľovaÄ sudov", +-- ["Baseballbat"] = "", -- Continental_supplies ["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", +-- ["Beep Loopers"] = "", -- A_Classic_Fairytale:queen ["Best laps per team: "] = "NajrýchlejÅ¡ie kolá podľa tímov: ", ["Best Team Times: "] = "NajrýchlejÅ¡ie tímové Äasy: ", +-- ["Beware, though! If you are slow, you die!"] = "", -- A_Classic_Fairytale:dragon +-- ["Biomechanic Team"] = "", -- A_Classic_Fairytale:family +-- ["Blender"] = "", -- A_Classic_Fairytale:family +-- ["Bloodpie"] = "", -- A_Classic_Fairytale:backstab +-- ["Bloodrocutor"] = "", -- A_Classic_Fairytale:shadow +-- ["Bloodsucker"] = "", -- A_Classic_Fairytale:shadow ["Bloody Rookies"] = "Mizerní zelenáÄi", -- 01#Boot_Camp, User_Mission_-_Dangerous_Ducklings, User_Mission_-_Diver, User_Mission_-_Spooky_Tree +-- ["Bone Jackson"] = "", -- A_Classic_Fairytale:backstab +-- ["Bonely"] = "", -- A_Classic_Fairytale:shadow + ["Boom!"] = "Bum!", ["BOOM!"] = "BUM!", - ["Boom!"] = "Bum!", ["Boss defeated!"] = "Vodca bol porazený!", ["Boss Slayer!"] = "Vodca zabitý!", +-- ["Brain Blower"] = "", -- A_Classic_Fairytale:journey +-- ["Brainiac"] = "", -- A_Classic_Fairytale:epil, A_Classic_Fairytale:first_blood, A_Classic_Fairytale:shadow +-- ["Brainila"] = "", -- A_Classic_Fairytale:united +-- ["Brain Stu"] = "", -- A_Classic_Fairytale:united +-- ["Brain Teaser"] = "", -- A_Classic_Fairytale:backstab +-- ["Brutal Lily"] = "", -- A_Classic_Fairytale:enemy, A_Classic_Fairytale:epil +-- ["Brutus"] = "", -- A_Classic_Fairytale:backstab ["Build a track and race."] = "Vybudujte trasu a pretekajte.", +-- ["Bullseye"] = "", -- A_Classic_Fairytale:dragon +-- ["But it proved to be no easy task!"] = "", -- A_Classic_Fairytale:dragon +-- ["But that's impossible!"] = "", -- A_Classic_Fairytale:backstab +-- ["But the ones alive are stronger in their heart!"] = "", -- A_Classic_Fairytale:enemy +-- ["But...we died!"] = "", -- A_Classic_Fairytale:backstab +-- ["But where can we go?"] = "", -- A_Classic_Fairytale:united +-- ["But why would they help us?"] = "", -- A_Classic_Fairytale:backstab +-- ["But you're cannibals. It's what you do."] = "", -- A_Classic_Fairytale:enemy +-- ["But you said you'd let her go!"] = "", -- A_Classic_Fairytale:journey +-- ["Call me Beep! Well, 'cause I'm such a nice...person!"] = "", -- A_Classic_Fairytale:family +-- ["Cannibals"] = "", -- A_Classic_Fairytale:enemy, A_Classic_Fairytale:epil, A_Classic_Fairytale:first_blood +-- ["Cannibal Sentry"] = "", -- A_Classic_Fairytale:journey +-- ["Cannibals?! You're the cannibals!"] = "", -- A_Classic_Fairytale:enemy ["CAPTURE THE FLAG"] = "ZMOCNITE SA VLAJKY", ["Careless"] = "Bezstarostný", +-- ["Carol"] = "", -- A_Classic_Fairytale:family +-- ["CHALLENGE COMPLETE"] = "", -- User_Mission_-_RCPlane_Challenge ["Change Weapon"] = "ZmeniÅ¥ zbraň", +-- ["Choose your side! If you want to join the strange man, walk up to him.|Otherwise, walk away from him. If you decide to att...nevermind..."] = "", -- A_Classic_Fairytale:shadow ["Clumsy"] = "NeÅ¡ikovný", +-- ["Cluster Bomb MASTER!"] = "", -- Basic_Training_-_Cluster_Bomb +-- ["Cluster Bomb Training"] = "", -- Basic_Training_-_Cluster_Bomb ["Codename: Teamwork"] = "Kódové meno: Tímová práca", +-- ["Collateral Damage"] = "", -- A_Classic_Fairytale:journey +-- ["Collateral Damage II"] = "", -- A_Classic_Fairytale:journey +-- ["Collect all the crates, but remember, our time in this life is limited!"] = "", -- A_Classic_Fairytale:first_blood +-- ["Collect or destroy all the health crates."] = "", -- User_Mission_-_RCPlane_Challenge +-- ["Collect the crate on the right.|Hint: Select the rope, [Up] or [Down] to aim, [Space] to fire, directional keys to move.|Ropes can be fired again in the air!"] = "", -- A_Classic_Fairytale:first_blood +-- ["Collect the crates within the time limit!|If you fail, you'll have to try again."] = "", -- A_Classic_Fairytale:first_blood +-- ["Come closer, so that your training may continue!"] = "", -- A_Classic_Fairytale:first_blood +-- ["Compete to use as few planes as possible!"] = "", -- User_Mission_-_RCPlane_Challenge ["Complete the track as fast as you can!"] = "Prejdite trasu tak rýchlo, ako len viete!", +-- ["COMPLETION TIME"] = "", -- User_Mission_-_Rope_Knock_Challenge +-- ["Configuration accepted."] = "", -- WxW +-- ["Congratulations"] = "", -- Basic_Training_-_Rope ["Congratulations!"] = "Gratulujem!", +-- ["Congratulations! You needed only half of time|to eliminate all targets."] = "", -- Basic_Training_-_Cluster_Bomb +-- ["Congratulations! You've completed the Rope tutorial! |- Tutorial ends in 10 seconds!"] = "", -- Basic_Training_-_Rope ["Congratulations! You've eliminated all targets|within the allowed time frame."] = "Gratulujem! ZneÅ¡kodnili ste vÅ¡etky ciele|v stanovenom Äase.", --Bazooka, Shotgun, SniperRifle +-- ["Continental supplies"] = "", -- Continental_supplies ["Control pillars to score points."] = "Ovládnite piliere, aby ste skórovali", +-- ["Corporationals"] = "", -- A_Classic_Fairytale:queen +-- ["Corpsemonger"] = "", -- A_Classic_Fairytale:shadow +-- ["Corpse Thrower"] = "", -- A_Classic_Fairytale:epil +-- ["Crates Left:"] = "", -- User_Mission_-_RCPlane_Challenge ["Cybernetic Empire"] = "Kybertnetické impérium", +-- ["Cyborg. It's what the aliens call themselves."] = "", -- A_Classic_Fairytale:enemy +-- ["Dahmer"] = "", -- A_Classic_Fairytale:backstab ["DAMMIT, ROOKIE! GET OFF MY HEAD!"] = "Do kelu s tebou, zelenáÄ! Okamžite mi zlez z hlavy!", ["DAMMIT, ROOKIE!"] = "Prekliaty zelenáÄ!", ["Dangerous Ducklings"] = "NebezpeÄné kaÄiatka", ["Deadweight"] = "MÅ•tva váha", +-- ["Defeat the cannibals"] = "", -- A_Classic_Fairytale:backstab +-- ["Defeat the cannibals!|"] = "", -- A_Classic_Fairytale:united +-- ["Defeat the cannibals!|Grenade hint: set the timer with [1-5], aim with [Up]/[Down] and hold [Space] to set power"] = "", -- A_Classic_Fairytale:shadow +-- ["Defeat the cyborgs!"] = "", -- A_Classic_Fairytale:enemy +-- ["Defend yourself!|Hint: You can get tips on using weapons by moving your mouse over them in the weapon selection menu"] = "", -- A_Classic_Fairytale:shadow ["Demolition is fun!"] = "Demolícia je super!", +-- ["Dense Cloud"] = "", -- A_Classic_Fairytale:backstab, A_Classic_Fairytale:dragon, A_Classic_Fairytale:enemy, A_Classic_Fairytale:epil, A_Classic_Fairytale:family, A_Classic_Fairytale:journey, A_Classic_Fairytale:queen, A_Classic_Fairytale:shadow, A_Classic_Fairytale:united +-- ["Dense Cloud must have already told them everything..."] = "", -- A_Classic_Fairytale:shadow ["Depleted Kamikaze!"] = "VyÄerpané kamikadze!", +-- ["Destroy him, Leaks A Lot! He is responsible for the deaths of many of us!"] = "", -- A_Classic_Fairytale:first_blood ["Destroy invaders to score points."] = "NiÄte votrelcov a zbierajte tak body.", +-- ["Destroy the targets!|Hint: Select the Shoryuken and hit [Space]|P.S. You can use it mid-air."] = "", -- A_Classic_Fairytale:first_blood +-- ["Destroy the targets!|Hint: [Up], [Down] to aim, [Space] to shoot"] = "", -- A_Classic_Fairytale:first_blood +-- ["Did anyone follow you?"] = "", -- A_Classic_Fairytale:united +-- ["Did you see him coming?"] = "", -- A_Classic_Fairytale:shadow +-- ["Did you warn the village?"] = "", -- A_Classic_Fairytale:shadow +-- ["Die, die, die!"] = "", -- A_Classic_Fairytale:dragon +-- ["Disguise as a Rockhopper Penguin: [Swap place with a random enemy hog in the circle]"] = "", -- Continental_supplies +-- ["Dist: "] = "", -- Space_Invasion +-- ["Do not laugh, inexperienced one, for he speaks the truth!"] = "", -- A_Classic_Fairytale:backstab +-- ["Do not let his words fool you, young one! He will stab you in the back as soon as you turn away!"] = "", -- A_Classic_Fairytale:first_blood +-- ["Do the deed"] = "", -- A_Classic_Fairytale:first_blood ["Double Kill!"] = "Dvojitý zásah!", +-- ["DOUBLE KILL"] = "", -- Mutant +-- ["Do you have any idea how valuable grass is?"] = "", -- A_Classic_Fairytale:enemy +-- ["Do you think you're some kind of god?"] = "", -- A_Classic_Fairytale:enemy +-- ["Dragon's Lair"] = "", -- A_Classic_Fairytale:dragon +-- ["Drills"] = "", -- A_Classic_Fairytale:backstab ["Drone Hunter!"] = "Lovec Å¡pionážnych lietadiel!", +-- ["Drop a bomb: [drop some heroic wind that will turn into a bomb on impact]"] = "", -- Continental_supplies ["Drowner"] = "Utopenec", +-- ["Dude, all the plants are gone!"] = "", -- A_Classic_Fairytale:family +-- ["Dude, can you see Ramon and Spiky?"] = "", -- A_Classic_Fairytale:journey +-- ["Dude, that's so cool!"] = "", -- A_Classic_Fairytale:backstab +-- ["Dude, we really need a new shaman..."] = "", -- A_Classic_Fairytale:shadow +-- ["Dude, what's this place?!"] = "", -- A_Classic_Fairytale:dragon +-- ["Dude, where are we?"] = "", -- A_Classic_Fairytale:backstab +-- ["Dude, wow! I just had the weirdest high!"] = "", -- A_Classic_Fairytale:backstab +-- ["Duration"] = "", -- Continental_supplies +-- ["Dust storm: [Deals 20 damage to all enemies in the circle]"] = "", -- Continental_supplies ["Each turn you get 1-3 random weapons"] = "V každom Å¥ahu dostanete 1-3 náhodné zbrane", ["Each turn you get one random weapon"] = "Každé koho dostanete jednu náhodnú zbraň", +-- ["Eagle Eye"] = "", -- A_Classic_Fairytale:backstab +-- ["Eagle Eye: [Blink to the impact ~ one shot]"] = "", -- Continental_supplies +-- ["Ear Sniffer"] = "", -- A_Classic_Fairytale:backstab, A_Classic_Fairytale:epil +-- ["Elderbot"] = "", -- A_Classic_Fairytale:family +-- ["Elimate your captor."] = "", -- User_Mission_-_The_Great_Escape ["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 enemy hogs and take their weapons."] = "", -- Highlander ["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 the enemy before the time runs out"] = "ZneÅ¡kodnite nepriateľa skôr ako vyprší Äas", -- User_Mission_-_Bamboo_Thicket, User_Mission_-_Newton_and_the_Hammock ["Eliminate the enemy hogs to win."] = "Výhru si zaslúžite, ked zneÅ¡kodníte nepriateľských ježkov.", ["Eliminate the enemy specialists."] = "ZneÅ¡kodnite nepriateľských Å¡pecialistov.", ["- Eliminate Unit 3378 |- Feeble Resistance must survive"] = "- ZneÅ¡kodnite Jednotku 3378|- Slabý odpor musí prežiÅ¥", +-- ["Elmo"] = "", -- A_Classic_Fairytale:dragon, A_Classic_Fairytale:family, A_Classic_Fairytale:queen +-- ["Energetic Engineer"] = "", -- User_Mission_-_Bamboo_Thicket ["Enjoy the swim..."] = "Užite si plávanie...", ["[Enter]"] = "[Enter]", +-- ["Europe"] = "", -- Continental_supplies +-- [" ever done to you?!"] = "", -- A_Classic_Fairytale:backstab +-- ["Everyone knows this."] = "", -- A_Classic_Fairytale:enemy +-- ["Every single time!"] = "", -- A_Classic_Fairytale:dragon +-- ["Everything looks OK..."] = "", -- A_Classic_Fairytale:enemy +-- ["Exactly, man! That was my dream."] = "", -- A_Classic_Fairytale:backstab +-- ["Eye Chewer"] = "", -- A_Classic_Fairytale:journey +-- ["FAG"] = "", -- Mutant +-- ["Family Reunion"] = "", -- A_Classic_Fairytale:family ["Fastest lap: "] = "NajrýchlejÅ¡ie kolo: ", ["Feeble Resistance"] = "Slabý odpor", +-- ["Fell From Grace"] = "", -- A_Classic_Fairytale:backstab, A_Classic_Fairytale:dragon, A_Classic_Fairytale:enemy, A_Classic_Fairytale:epil, A_Classic_Fairytale:family, A_Classic_Fairytale:queen +-- ["Fell From Heaven"] = "", -- A_Classic_Fairytale:enemy, A_Classic_Fairytale:epil, A_Classic_Fairytale:family, A_Classic_Fairytale:first_blood, A_Classic_Fairytale:journey, A_Classic_Fairytale:queen +-- ["Fell From Heaven is the best! Fell From Heaven is the greatest!"] = "", -- A_Classic_Fairytale:family +-- ["Femur Lover"] = "", -- A_Classic_Fairytale:shadow +-- ["Fierce Competition!"] = "", -- Space_Invasion +-- ["Fiery Water"] = "", -- A_Classic_Fairytale:backstab, A_Classic_Fairytale:dragon, A_Classic_Fairytale:enemy, A_Classic_Fairytale:epil, A_Classic_Fairytale:family, A_Classic_Fairytale:queen, A_Classic_Fairytale:united +-- ["Find your tribe!|Cross the lake!"] = "", -- A_Classic_Fairytale:dragon +-- ["Finish your training|Hint: Animations can be skipped with the [Precise] key."] = "", -- A_Classic_Fairytale:first_blood -- ["Fire"] = "", +-- ["Fire a mine: [Does what it says ~ Cant be dropped close to an enemy ~ 1 sec]"] = "", -- Continental_supplies +-- ["First aid kits?!"] = "", -- A_Classic_Fairytale:united +-- ["First Blood"] = "", -- A_Classic_Fairytale:first_blood +-- ["FIRST BLOOD MUTATES"] = "", -- Mutant +-- ["First Steps"] = "", -- A_Classic_Fairytale:first_blood ["Flag captured!"] = "Získaná vlajka!", ["Flag respawned!"] = "Vlajka obnovená!", ["Flag returned!"] = "Vlajka vrátená!", ["Flags, and their home base will be placed where each team ends their first turn."] = "Vlajky a domovské základňe budú umiestnené tam, kde každý tím skonÄí svoj Å¥ah.", ["Flamer"] = "Plameňomet", +-- ["Flaming Worm"] = "", -- A_Classic_Fairytale:backstab +-- ["Flare: [fire up some bombs depending on hogs depending on hogs in the circle"] = "", -- Continental_supplies +-- ["Flesh for Brainz"] = "", -- A_Classic_Fairytale:journey +-- ["For improved features/stability, play 0.9.18+"] = "", -- WxW +-- ["Free Dense Cloud and continue the mission!"] = "", -- A_Classic_Fairytale:journey -- ["Friendly Fire!"] = "", ["fuel extended!"] = "palivo doplnené!", ["GAME BEGUN!!!"] = "HRA ZAÄŒALA!!!", ["Game Modifiers: "] = "Modifikátory hry: ", ["GAME OVER!"] = "KONIEC HRY!", ["Game Started!"] = "Hra zaÄala!", +-- ["Game? Was this a game to you?!"] = "", -- A_Classic_Fairytale:enemy +-- ["GasBomb"] = "", -- Continental_supplies +-- ["Gas Gargler"] = "", -- A_Classic_Fairytale:queen +-- ["Get Dense Cloud out of the pit!"] = "", -- A_Classic_Fairytale:journey ["Get on over there and take him out!"] = "Okamžite sa tam presuň a zneÅ¡kodni ho!", +-- ["Get on the head of the mole"] = "", -- A_Classic_Fairytale:first_blood +-- ["Get out of there!"] = "", -- User_Mission_-_The_Great_Escape +-- ["Get that crate!"] = "", -- A_Classic_Fairytale:first_blood +-- ["Get the crate on the other side of the island!|"] = "", -- A_Classic_Fairytale:journey +-- ["Get to the target using your rope! |Controls: Left & Right to swing the rope - Up & Down to Contract and Expand!"] = "", -- Basic_Training_-_Rope +-- ["Get your teammates out of their natural prison and save the princess!|Hint: Drilling holes should solve everything.|Hint: It might be a good idea to place a girder before starting to drill. Just saying.|Hint: All your hedgehogs need to be above the marked height!|Hint: Leaks A Lot needs to get really close to the princess!"] = "", -- A_Classic_Fairytale:family +-- ["GG!"] = "", -- User_Mission_-_Rope_Knock_Challenge +-- ["Gimme Bones"] = "", -- A_Classic_Fairytale:backstab +-- ["Glark"] = "", -- A_Classic_Fairytale:shadow ["Goal"] = "Cieľ", ["GO! GO! GO!"] = "POHYB! POHYB! POHYB!", ["Good birdy......"] = "Dobrý vtáÄik......", +-- ["Good Dude"] = "", -- User_Mission_-_The_Great_Escape +-- ["Good idea, they'll never find us there!"] = "", -- A_Classic_Fairytale:united +-- ["Good luck...or else!"] = "", -- A_Classic_Fairytale:journey ["Good luck out there!"] = "Veľa Å¡Å¥astia!", +-- ["Good so far!"] = "", -- Basic_Training_-_Sniper_Rifle +-- ["Good to go!"] = "", -- Racer, Tumbler +-- ["Go on top of the flower"] = "", -- A_Classic_Fairytale:first_blood +-- ["Go, quick!"] = "", -- A_Classic_Fairytale:backstab +-- ["Gorkij"] = "", -- A_Classic_Fairytale:journey +-- ["Go surf!"] = "", -- WxW ["GOTCHA!"] = "A MÃM ŤA!", +-- ["Grab Mines/Explosives"] = "", -- Tumbler +-- ["Great choice, Steve! Mind if I call you that?"] = "", -- A_Classic_Fairytale:shadow +-- ["Great work! Now hit it with your Baseball Bat! |Tip: You can change weapon with 'Right Click'!"] = "", -- Basic_Training_-_Rope +-- ["Great! You will be contacted soon for assistance."] = "", -- A_Classic_Fairytale:shadow +-- ["Green lipstick bullet: [Is poisonous]"] = "", -- Continental_supplies +-- ["Greetings, "] = "", -- A_Classic_Fairytale:dragon +-- ["Greetings, cloudy one!"] = "", -- A_Classic_Fairytale:shadow +-- ["Grenade Training"] = "", -- Basic_Training_-_Grenade +-- ["Grenadiers"] = "", -- Basic_Training_-_Grenade +-- ["Guys, do you think there's more of them?"] = "", -- A_Classic_Fairytale:backstab +-- ["HAHA!"] = "", -- A_Classic_Fairytale:enemy +-- ["Haha!"] = "", -- A_Classic_Fairytale:united ["Hahahaha!"] = "Hehehehe!", ["Haha, now THAT would be something!"] = "Haha, tak TO by bolo nieÄo!", +-- ["Hannibal"] = "", -- A_Classic_Fairytale:epil ["Hapless Hogs"] = "Bezmocní ježkovia", + [" Hapless Hogs left!"] = " Bezmocných ježkov ostalo!", +-- [" HAS MUTATED\" )"] = "", -- +-- ["Hatless Jerry"] = "", -- A_Classic_Fairytale:queen +-- ["Have no illusions, your tribe is dead, indifferent of your choice."] = "", -- A_Classic_Fairytale:shadow +-- ["Have we ever attacked you first?"] = "", -- A_Classic_Fairytale:enemy ["Health crates extend your time."] = "LekárniÄky vám dávajú Äas naviac.", - [" Hapless Hogs left!"] = " Bezmocných ježkov ostalo!", +-- ["Heavy Cannfantry"] = "", -- A_Classic_Fairytale:united ["Heavy"] = "Ťažký", +-- ["Hedge-cogs"] = "", -- A_Classic_Fairytale:enemy +-- ["Hedgehog projectile: [fire your hog like a Sticky Bomb]"] = "", -- Continental_supplies ["Hedgewars-Basketball"] = "Hedgewars-Basketbal", ["Hedgewars-Knockball"] = "Hedgewars-Knockball", +-- ["Hedgibal Lecter"] = "", -- A_Classic_Fairytale:backstab ["Heh, it's not that bad."] = "Heh, to nie je také zlé.", +-- ["Hello again, "] = "", -- A_Classic_Fairytale:family +-- ["Help me, Leaks!"] = "", -- A_Classic_Fairytale:journey +-- ["Help me, please!!!"] = "", -- A_Classic_Fairytale:journey +-- ["Help me, please!"] = "", -- A_Classic_Fairytale:journey +-- ["He moves like an eagle in the sky."] = "", -- A_Classic_Fairytale:first_blood +-- ["He must be in the village already."] = "", -- A_Classic_Fairytale:journey +-- ["Here, let me help you!"] = "", -- A_Classic_Fairytale:backstab +-- ["Here, let me help you save her!"] = "", -- A_Classic_Fairytale:family +-- ["Here...pick your weapon!"] = "", -- A_Classic_Fairytale:first_blood +-- ["Hero Team"] = "", -- User_Mission_-_The_Great_Escape +-- ["He's so brave..."] = "", -- A_Classic_Fairytale:first_blood +-- ["He won't be selling us out anymore!"] = "", -- A_Classic_Fairytale:backstab +-- ["Hey, guys!"] = "", -- A_Classic_Fairytale:backstab +-- ["Hey guys!"] = "", -- A_Classic_Fairytale:united +-- ["Hey! This is cheating!"] = "", -- A_Classic_Fairytale:journey +-- ["HIGHLANDER"] = "", -- Highlander +-- ["Hightime"] = "", -- A_Classic_Fairytale:first_blood +-- ["Hint: Double Jump - Press [Backspace] twice"] = "", -- A_Classic_Fairytale:first_blood +-- ["Hint: Select the BlowTorch, aim and press [Fire]. Press [Fire] again to stop.|Don't blow up the crate."] = "", -- A_Classic_Fairytale:journey +-- ["Hint: Select the LowGravity and press [Fire]."] = "", -- A_Classic_Fairytale:journey +-- ["Hint: you might want to stay out of sight and take all the crates...|"] = "", -- A_Classic_Fairytale:journey +-- ["His arms are so strong!"] = "", -- A_Classic_Fairytale:first_blood ["Hit Combo!"] = "Opakovaný zásah!", +-- ["Hmmm...actually...I didn't either."] = "", -- A_Classic_Fairytale:enemy ["Hmmm..."] = "Hmm..", +-- ["Hmmm, I'll have to find some way of moving him off this anti-portal surface..."] = "", -- portal +-- ["Hmmm...it's a draw. How unfortunate!"] = "", -- A_Classic_Fairytale:enemy +-- ["Hmmm...perhaps a little more time will help."] = "", -- A_Classic_Fairytale:first_blood +-- ["Hogminator"] = "", -- A_Classic_Fairytale:family +-- ["Hogs in sight!"] = "", -- Continental_supplies +-- ["HOLY SHIT!"] = "", -- Mutant +-- ["Honest Lee"] = "", -- A_Classic_Fairytale:enemy ["Hooray!"] = "Hurá!", +-- ["Hostage Situation"] = "", -- A_Classic_Fairytale:family +-- ["How can I ever repay you for saving my life?"] = "", -- A_Classic_Fairytale:journey +-- ["How come in a village full of warriors, it's up to me to save it?"] = "", -- A_Classic_Fairytale:dragon +-- ["How difficult would you like it to be?"] = "", -- A_Classic_Fairytale:first_blood +-- ["HOW DO THEY KNOW WHERE WE ARE???"] = "", -- A_Classic_Fairytale:united +-- ["However, if you fail to do so, she dies a most violent death, just like your friend! Muahahaha!"] = "", -- A_Classic_Fairytale:journey +-- ["However, if you fail to do so, she dies a most violent death! Muahahaha!"] = "", -- A_Classic_Fairytale:journey +-- ["However, my mates don't agree with me on letting you go..."] = "", -- A_Classic_Fairytale:dragon +-- [" HP"] = "", -- Mutant ["Hunter"] = "Lovec", --Bazooka, Shotgun, SniperRifle +-- ["I believe there's more of them."] = "", -- A_Classic_Fairytale:backstab +-- ["I can see you have been training diligently."] = "", -- A_Classic_Fairytale:first_blood +-- ["I can't believe it worked!"] = "", -- A_Classic_Fairytale:shadow +-- ["I can't believe this!"] = "", -- A_Classic_Fairytale:enemy +-- ["I can't believe what I'm hearing!"] = "", -- A_Classic_Fairytale:backstab +-- ["I can't wait any more, I have to save myself!"] = "", -- A_Classic_Fairytale:shadow +-- ["I could just teleport myself there..."] = "", -- A_Classic_Fairytale:family +-- ["I'd better get going myself."] = "", -- A_Classic_Fairytale:journey +-- ["I didn't until about a month ago."] = "", -- A_Classic_Fairytale:enemy +-- ["I don't know how you did that.. But good work! |The next one should be easy as cake for you!"] = "", -- Basic_Training_-_Rope +-- ["I feel something...a place! They will arrive near the circles!"] = "", -- A_Classic_Fairytale:backstab +-- ["If only I had a way..."] = "", -- A_Classic_Fairytale:backstab +-- ["If only I were given a chance to explain my being here..."] = "", -- A_Classic_Fairytale:first_blood +-- ["I forgot that she's the daughter of the chief, too..."] = "", -- A_Classic_Fairytale:backstab +-- ["If they try coming here, they can have a taste of my delicious knuckles!"] = "", -- A_Classic_Fairytale:united +-- ["If you agree to provide the information we need, you will be spared!"] = "", -- A_Classic_Fairytale:shadow +-- ["If you can get that crate fast enough, your beloved \"princess\" may go free."] = "", -- A_Classic_Fairytale:journey +-- ["If you decide to help us, though, we will no longer need to find a new governor for the island."] = "", -- A_Classic_Fairytale:shadow +-- ["If you get stuck, use your Desert Eagle or restart the mission!|"] = "", -- A_Classic_Fairytale:journey +-- ["If you know what I mean..."] = "", -- A_Classic_Fairytale:shadow +-- ["If you say so..."] = "", -- A_Classic_Fairytale:shadow +-- ["If you wish to restart the course, hold [Precise] while your turn ends (e.g with Skip)"] = "", -- +-- ["I guess you'll have to kill them."] = "", -- A_Classic_Fairytale:dragon +-- ["I have come to make you an offering..."] = "", -- A_Classic_Fairytale:shadow +-- ["I have no idea where that mole disappeared...Can you see it?"] = "", -- A_Classic_Fairytale:shadow +-- ["I have to follow that alien."] = "", -- A_Classic_Fairytale:backstab +-- ["I have to get back to the village!"] = "", -- A_Classic_Fairytale:shadow +-- ["I hope you are prepared for a small challenge, young one."] = "", -- A_Classic_Fairytale:first_blood +-- ["I just don't want to sink to your level."] = "", -- A_Classic_Fairytale:backstab +-- ["I just found out that they have captured your princess!"] = "", -- A_Classic_Fairytale:family +-- ["I just wonder where Ramon and Spiky disappeared..."] = "", -- A_Classic_Fairytale:journey +-- ["I'll hold them off while you return to the village!"] = "", -- A_Classic_Fairytale:shadow +-- ["Imagine those targets are the wolves that killed your parents! Take your anger out on them!"] = "", -- A_Classic_Fairytale:first_blood +-- ["I'm...alive? How? Why?"] = "", -- A_Classic_Fairytale:backstab +-- ["I'm a ninja."] = "", -- A_Classic_Fairytale:dragon +-- ["I marked the place of their arrival. You're welcome!"] = "", -- A_Classic_Fairytale:backstab +-- ["I'm certain that this is a misunderstanding, fellow hedgehogs!"] = "", -- A_Classic_Fairytale:first_blood +-- ["I mean, none of you ceased to live."] = "", -- A_Classic_Fairytale:enemy +-- ["I'm getting old for this!"] = "", -- A_Classic_Fairytale:family +-- ["I'm getting thirsty..."] = "", -- A_Classic_Fairytale:family +-- ["I'm here to help you rescue her."] = "", -- A_Classic_Fairytale:family +-- ["I'm not sure about that!"] = "", -- A_Classic_Fairytale:united +-- ["Impressive...you are still dry as the corpse of a hawk after a week in the desert..."] = "", -- A_Classic_Fairytale:first_blood +-- ["I'm so scared!"] = "", -- A_Classic_Fairytale:united +-- ["Incredible..."] = "", -- A_Classic_Fairytale:shadow +-- ["I need to find the others!"] = "", -- A_Classic_Fairytale:backstab +-- ["I need to get to the other side of this island, fast!"] = "", -- A_Classic_Fairytale:journey +-- ["I need to move the tribe!"] = "", -- A_Classic_Fairytale:united +-- ["I need to prevent their arrival!"] = "", -- A_Classic_Fairytale:backstab +-- ["I need to warn the others."] = "", -- A_Classic_Fairytale:backstab +-- ["In fact, you are the only one that's been acting strangely."] = "", -- A_Classic_Fairytale:backstab +-- ["In order to get to the other side, you need to collect the crates first.|"] = "", -- A_Classic_Fairytale:dragon ["Instructor"] = "InÅ¡truktor", -- 01#Boot_Camp, User_Mission_-_Dangerous_Ducklings +-- ["Interesting idea, haha!"] = "", -- A_Classic_Fairytale:enemy +-- ["Interesting! Last time you said you killed a cannibal!"] = "", -- A_Classic_Fairytale:backstab +-- ["In the meantime, take these and return to your \"friend\"!"] = "", -- A_Classic_Fairytale:shadow ["invaders destroyed"] = "votrelci zniÄení", +-- ["Invasion"] = "", -- A_Classic_Fairytale:united +-- ["I saw it with my own eyes!"] = "", -- A_Classic_Fairytale:shadow +-- ["I see..."] = "", -- A_Classic_Fairytale:shadow +-- ["I see you have already taken the leap of faith."] = "", -- A_Classic_Fairytale:first_blood +-- ["I see you would like his punishment to be more...personal..."] = "", -- A_Classic_Fairytale:first_blood +-- ["I sense another wave of cannibals heading my way!"] = "", -- A_Classic_Fairytale:backstab +-- ["I sense another wave of cannibals heading our way!"] = "", -- A_Classic_Fairytale:backstab +-- ["I shouldn't have drunk that last pint."] = "", -- A_Classic_Fairytale:dragon +-- ["Is this place in my head?"] = "", -- A_Classic_Fairytale:dragon +-- ["It doesn't matter. I won't let that alien hurt my daughter!"] = "", -- A_Classic_Fairytale:dragon +-- ["I think we are safe here."] = "", -- A_Classic_Fairytale:backstab +-- ["I thought their shaman died when he tried our medicine!"] = "", -- A_Classic_Fairytale:shadow +-- ["It is called 'Hogs of Steel'."] = "", -- A_Classic_Fairytale:enemy +-- ["It is time to practice your fighting skills."] = "", -- A_Classic_Fairytale:first_blood +-- ["It must be a childhood trauma..."] = "", -- A_Classic_Fairytale:family +-- ["It must be the aliens!"] = "", -- A_Classic_Fairytale:backstab +-- ["It must be the aliens' deed."] = "", -- A_Classic_Fairytale:backstab +-- ["It must be the cyborgs again!"] = "", -- A_Classic_Fairytale:enemy +-- ["I told you, I just found them."] = "", -- A_Classic_Fairytale:backstab ["It's a good thing SUDDEN DEATH is 99 turns away..."] = "Je dobre, že NÃHLA SMRŤ je tu až za 99 Å¥ahov...", +-- ["It's always up to women to clear up the mess men created!"] = "", -- A_Classic_Fairytale:dragon +-- ["It's a shame, I forgot how to do that!"] = "", -- A_Classic_Fairytale:family +-- ["It's impossible to communicate with the spirits without a shaman."] = "", -- A_Classic_Fairytale:shadow +-- ["It's over..."] = "", -- A_Classic_Fairytale:shadow +-- ["It's time you learned that your actions have consequences!"] = "", -- A_Classic_Fairytale:journey +-- ["It's worth more than wood!"] = "", -- A_Classic_Fairytale:enemy +-- ["It wants our brains!"] = "", -- A_Classic_Fairytale:shadow +-- ["It was not a dream, unwise one!"] = "", -- A_Classic_Fairytale:backstab +-- ["I've seen this before. They just appear out of thin air."] = "", -- A_Classic_Fairytale:united +-- ["I want to play a game..."] = "", -- A_Classic_Fairytale:journey +-- ["I want to see how it handles this!"] = "", -- A_Classic_Fairytale:backstab +-- ["I wish to help you, "] = "", -- A_Classic_Fairytale:dragon +-- ["I wonder where Dense Cloud is..."] = "", -- A_Classic_Fairytale:journey, A_Classic_Fairytale:shadow +-- ["I wonder why I'm so angry all the time..."] = "", -- A_Classic_Fairytale:family +-- ["I won't let you kill her!"] = "", -- A_Classic_Fairytale:journey +-- ["Jack"] = "", -- A_Classic_Fairytale:dragon, A_Classic_Fairytale:family, A_Classic_Fairytale:queen +-- ["Jeremiah"] = "", -- A_Classic_Fairytale:dragon +-- ["John"] = "", -- A_Classic_Fairytale:journey +-- ["Judas"] = "", -- A_Classic_Fairytale:backstab ["Jumping is disabled"] = "Skákanie je vypnuté", +-- ["Just kidding, none of you have died!"] = "", -- A_Classic_Fairytale:enemy +-- ["Just on a walk."] = "", -- A_Classic_Fairytale:united +-- ["Just wait till I get my hands on that trauma! ARGH!"] = "", -- A_Classic_Fairytale:family ["Kamikaze Expert!"] = "Expert na samovraždy!", +-- ["Keep it up!"] = "", -- Basic_Training_-_Sniper_Rifle +-- ["Kerguelen"] = "", -- Continental_supplies +-- ["Killing spree!"] = "", -- Tumbler +-- ["KILL IT!"] = "", -- A_Classic_Fairytale:first_blood ["KILLS"] = "ZABITÃ:", +-- ["Kill the aliens!"] = "", -- A_Classic_Fairytale:dragon +-- ["Kill the cannibal!"] = "", -- A_Classic_Fairytale:first_blood +-- ["Kill the traitor...or spare his life!|Kill him or press [Precise]!"] = "", -- A_Classic_Fairytale:backstab +-- ["Last Target!"] = "", -- Basic_Training_-_Sniper_Rifle +-- ["Leader"] = "", -- A_Classic_Fairytale:enemy +-- ["Leaderbot"] = "", -- A_Classic_Fairytale:queen +-- ["Leaks A Lot"] = "", -- A_Classic_Fairytale:backstab, A_Classic_Fairytale:dragon, A_Classic_Fairytale:enemy, A_Classic_Fairytale:epil, A_Classic_Fairytale:family, A_Classic_Fairytale:first_blood, A_Classic_Fairytale:journey, A_Classic_Fairytale:queen, A_Classic_Fairytale:shadow, A_Classic_Fairytale:united +-- ["Leaks A Lot, depressed for killing his loved one, failed to save the village..."] = "", -- A_Classic_Fairytale:journey +-- ["Leaks A Lot gave his life for his tribe! He should have survived!"] = "", -- A_Classic_Fairytale:first_blood +-- ["Leaks A Lot must survive!"] = "", -- A_Classic_Fairytale:journey +-- ["Led Heart"] = "", -- A_Classic_Fairytale:queen +-- ["Lee"] = "", -- A_Classic_Fairytale:dragon, A_Classic_Fairytale:family, A_Classic_Fairytale:queen ["[Left Shift]"] = "[Ľavý Shift]", +-- ["Let a Continent provide your weapons!"] = "", -- Continental_supplies +-- ["Let me test your skills a little, will you?"] = "", -- A_Classic_Fairytale:journey +-- ["Let's go home!"] = "", -- A_Classic_Fairytale:journey +-- ["Let's head back to the village!"] = "", -- A_Classic_Fairytale:shadow +-- ["Let's see what your comrade does now!"] = "", -- A_Classic_Fairytale:journey +-- ["Let's show those cannibals what we're made of!"] = "", -- A_Classic_Fairytale:backstab +-- ["Let them have a taste of my fury!"] = "", -- A_Classic_Fairytale:backstab +-- ["Let us help, too!"] = "", -- A_Classic_Fairytale:backstab +-- ["Light Cannfantry"] = "", -- A_Classic_Fairytale:united ["Listen up, maggot!!"] = "PoÄúvaj, ty biedny Äerv!", +-- ["Little did they know that this hunt will mark them forever..."] = "", -- A_Classic_Fairytale:shadow +-- ["Lively Lifeguard"] = "", -- User_Mission_-_That_Sinking_Feeling +-- ["Lonely Cries: [Rise the water if no hog is in the circle and deal 1 damage to all hogs]"] = "", -- Continental_supplies +-- ["Look, I had no choice!"] = "", -- A_Classic_Fairytale:backstab +-- ["Look out! There's more of them!"] = "", -- A_Classic_Fairytale:backstab +-- ["Look out! We're surrounded by cannibals!"] = "", -- A_Classic_Fairytale:enemy +-- ["Looks like the whole world is falling apart!"] = "", -- A_Classic_Fairytale:enemy +-- ["Luckily, I've managed to snatch some of them."] = "", -- A_Classic_Fairytale:united +-- ["LUDICROUS KILL"] = "", -- Mutant +-- ["May the spirits aid you in all your quests!"] = "", -- A_Classic_Fairytale:backstab +-- ["Medicine: [Fire some exploding medicine that will heal all hogs effected by the explosion]"] = "", -- Continental_supplies +-- ["MEGA KILL"] = "", -- Mutant +-- ["Meiwes"] = "", -- A_Classic_Fairytale:backstab +-- ["Mindy"] = "", -- A_Classic_Fairytale:united +-- ["Mine Deployer"] = "", -- Space_Invasion, Tumbler +-- ["Mine Eater!"] = "", -- Tumbler ["|- 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 ["MISSION SUCCESS"] = "MISIA ÚSPEÅ NÃ", - ["MISSION SUCCESSFUL"] = "MISIA ÚSPEÅ NÃ", -- User_Mission_-_Diver, User_Mission_-_Spooky_Tree, User_Mission_-_Teamwork +-- ["Molotov"] = "", -- Continental_supplies +-- ["MONSTER KILL"] = "", -- Mutant +-- ["More Natives"] = "", -- A_Classic_Fairytale:epil ["Movement: [Up], [Down], [Left], [Right]"] = "Pohyb: [Hore], [Dole], [Vľavo], [Vpravo]", ["Multi-shot!"] = "Viacnásobná rana!", +-- ["Muriel"] = "", -- A_Classic_Fairytale:backstab, A_Classic_Fairytale:dragon, A_Classic_Fairytale:family, A_Classic_Fairytale:queen +-- ["Muscle Dissolver"] = "", -- A_Classic_Fairytale:shadow +-- ["-------"] = "", -- Mutant +-- ["Nade Boy"] = "", -- Basic_Training_-_Grenade +-- ["Name"] = "", -- A_Classic_Fairytale:queen ["Nameless Heroes"] = "Hrdinovia bez mena", +-- ["Nancy Screw"] = "", -- A_Classic_Fairytale:enemy, A_Classic_Fairytale:queen +-- ["Napalm rocket: [Fire a bomb with napalm!]"] = "", -- Continental_supplies +-- ["Natives"] = "", -- A_Classic_Fairytale:backstab, A_Classic_Fairytale:dragon, A_Classic_Fairytale:enemy, A_Classic_Fairytale:epil, A_Classic_Fairytale:family, A_Classic_Fairytale:first_blood, A_Classic_Fairytale:journey, A_Classic_Fairytale:queen, A_Classic_Fairytale:shadow, A_Classic_Fairytale:united +-- ["New Barrels Per Turn"] = "", -- Tumbler ["NEW CLAN RECORD: "] = "NOVà KLANOVà REKORD: ", ["NEW fastest lap: "] = "NOVÉ najrýchlejÅ¡ie kolo: ", +-- ["New Mines Per Turn"] = "", -- Tumbler ["NEW RACE RECORD: "] = "NOVà REKORD ZÃVODU: ", +-- ["Newton's Hammock"] = "", -- User_Mission_-_Newton_and_the_Hammock +-- ["Nicely done, meatbags!"] = "", -- A_Classic_Fairytale:enemy +-- ["Nice work, "] = "", -- A_Classic_Fairytale:dragon +-- ["Nice work!"] = "", -- A_Classic_Fairytale:enemy +-- ["Nilarian"] = "", -- A_Classic_Fairytale:queen +-- ["No, I came back to help you out..."] = "", -- A_Classic_Fairytale:shadow +-- ["No...I wonder where they disappeared?!"] = "", -- A_Classic_Fairytale:journey +-- ["Nom-Nom"] = "", -- A_Classic_Fairytale:journey +-- ["NomNom"] = "", -- A_Classic_Fairytale:united +-- ["Nope. It was one fast mole, that's for sure."] = "", -- A_Classic_Fairytale:shadow +-- ["No! Please, help me!"] = "", -- A_Classic_Fairytale:journey +-- ["NORMAL"] = "", -- Continental_supplies +-- ["North America"] = "", -- Continental_supplies +-- ["Not all hogs are born equal."] = "", -- Highlander ["NOT ENOUGH WAYPOINTS"] = "NEDOSTATOK NAVIGAÄŒNÃCH BODOV", +-- ["Not now, Fiery Water!"] = "", -- A_Classic_Fairytale:backstab ["Not So Friendly Match"] = "Nie tak celkom priateľský zápas", -- Basketball, Knockball +-- ["Not you again! My head still hurts from last time!"] = "", -- A_Classic_Fairytale:shadow +-- ["No, we made sure of that!"] = "", -- A_Classic_Fairytale:united +-- ["Now find the next target! |Tip: Normally you lose health by falling down, so be careful!"] = "", -- Basic_Training_-_Rope +-- ["No! What have I done?! What have YOU done?!"] = "", -- A_Classic_Fairytale:journey +-- ["No. Where did he come from?"] = "", -- A_Classic_Fairytale:shadow +-- ["Now how do I get on the other side?!"] = "", -- A_Classic_Fairytale:dragon +-- ["No. You and the rest of the tribe are safer there!"] = "", -- A_Classic_Fairytale:backstab +-- ["Obliterate them!|Hint: You might want to take cover..."] = "", -- A_Classic_Fairytale:shadow +-- ["Obstacle course"] = "", -- A_Classic_Fairytale:dragon +-- ["Of course I have to save her. What did I expect?!"] = "", -- A_Classic_Fairytale:family +-- ["OH, COME ON!"] = "", -- A_Classic_Fairytale:journey +-- ["Oh, my!"] = "", -- A_Classic_Fairytale:first_blood +-- ["Oh, my! This is even more entertaining than I've expected!"] = "", -- A_Classic_Fairytale:backstab ["Oh no! Just try again!"] = "Ãále nie! Tak to skúste znovu!", -- User_Mission_-_Diver, User_Mission_-_Spooky_Tree, User_Mission_-_Teamwork +-- ["Oh no, not "] = "", -- A_Classic_Fairytale:backstab, A_Classic_Fairytale:united ["Oh no! Time's up! Just try again."] = "Ãále nie! ÄŒas vyprÅ¡al! Tak to skúste znovu.", --Bazooka, Shotgun, SniperRifle +-- ["Oh no! You failed! Just try again."] = "", -- Basic_Training_-_Cluster_Bomb +-- ["Oh, silly me! I forgot that I'm the shaman."] = "", -- A_Classic_Fairytale:backstab +-- ["Olive"] = "", -- A_Classic_Fairytale:united +-- ["Omnivore"] = "", -- A_Classic_Fairytale:first_blood +-- ["Once upon a time, on an island with great natural resources, lived two tribes in heated conflict..."] = "", -- A_Classic_Fairytale:first_blood +-- ["ONE HOG PER TEAM! KILLING EXCESS HEDGES"] = "", -- Mutant +-- ["One tribe was peaceful, spending their time hunting and training, enjoying the small pleasures of life..."] = "", -- A_Classic_Fairytale:first_blood +-- ["Oops...I dropped them."] = "", -- A_Classic_Fairytale:united +-- ["Open that crate and we will continue!"] = "", -- A_Classic_Fairytale:first_blood ["Operation Diver"] = "Operácia PotápaÄ", ["Opposing Team: "] = "Nepriateľský tím", +-- ["Orlando Boom!"] = "", -- A_Classic_Fairytale:queen +-- ["Ouch!"] = "", -- User_Mission_-_Rope_Knock_Challenge +-- ["Our tribe, our beautiful island!"] = "", -- A_Classic_Fairytale:enemy +-- ["Parachute"] = "", -- Continental_supplies ["Pathetic Hog #%d"] = "Žalostný ježko #%d", +-- ["Pathetic Resistance"] = "", -- User_Mission_-_Bamboo_Thicket, User_Mission_-_Newton_and_the_Hammock +-- ["Perfect! Now try to get the next crate without hurting yourself!"] = "", -- A_Classic_Fairytale:first_blood ["Per-Hog Ammo"] = "Samostatná munícia pre ježkov", +-- ["- Per team weapons|- 9 weaponschemes|- Unique new weapons| |Select continent first round with the Weapon Menu or by ([switch/tab]=Increase,[presice/left shift]=Decrease)"] = "", -- +-- ["Pfew! That was close!"] = "", -- A_Classic_Fairytale:shadow +-- ["Piñata bullet: [Contains some sweet candy!]"] = "", -- Continental_supplies +-- ["Pings left:"] = "", -- Space_Invasion ["Place more waypoints using [ENTER]"] = "Umiesnite viac bodov pomocou [ENTER]u", +-- ["Place more waypoints using the 'Air Attack' weapon."] = "", -- Racer +-- ["Planes Used:"] = "", -- User_Mission_-_RCPlane_Challenge +-- ["Planes Used"] = "", -- User_Mission_-_RCPlane_Challenge +-- ["Play with me!"] = "", -- A_Classic_Fairytale:shadow +-- ["Please place the way-point further from the waterline."] = "", -- Racer +-- ["Please place the way-point in the open, within the map boundaries."] = "", -- Racer +-- ["Please, stop releasing your \"smoke signals\"!"] = "", -- A_Classic_Fairytale:shadow +-- ["Point Blank Combo!"] = "", -- Space_Invasion ["points"] = "body", -- Control, CTF_Blizzard, Basic_Training_-_Bazooka, Basic_Training_-_Shotgun, Basic_Training_-_Sniper_Rifle ["Poison"] = "Poison", +-- ["Portal hint: one goes to the destination, and one is the entrance.|"] = "", -- A_Classic_Fairytale:dragon +-- ["Portal mission"] = "", -- portal ["Power Remaining"] = "Zostáva energie", +-- ["Prepare yourself"] = "", -- The_Specialists +-- ["Press [Enter] to accept this configuration."] = "", -- WxW +-- ["Press [Left] or [Right] to move around, [Enter] to jump"] = "", -- A_Classic_Fairytale:first_blood ["Press [Precise] to skip intro"] = "StlaÄte [PresnejÅ¡ie mierenie] pre preskoÄenie intra", +-- ["Private Novak"] = "", -- Basic_Training_-_Cluster_Bomb +-- ["Protect yourselves!|Grenade hint: set the timer with [1-5], aim with [Up]/[Down] and hold [Space] to set power"] = "", -- A_Classic_Fairytale:shadow ["Race complexity limit reached."] = "Bol dosiahnutý limit zložitosti závodu.", +-- ["RACER"] = "", -- Racer +-- ["Rachel"] = "", -- A_Classic_Fairytale:dragon, A_Classic_Fairytale:family, A_Classic_Fairytale:queen +-- ["Radar Ping"] = "", -- Space_Invasion +-- ["Raging Buffalo"] = "", -- A_Classic_Fairytale:backstab, A_Classic_Fairytale:dragon, A_Classic_Fairytale:enemy, A_Classic_Fairytale:epil, A_Classic_Fairytale:family, A_Classic_Fairytale:queen, A_Classic_Fairytale:united +-- ["Ramon"] = "", -- A_Classic_Fairytale:enemy, A_Classic_Fairytale:epil, A_Classic_Fairytale:family, A_Classic_Fairytale:queen, A_Classic_Fairytale:shadow +-- ["RC PLANE TRAINING"] = "", -- User_Mission_-_RCPlane_Challenge +-- ["Really?! You thought you could harm me with your little toys?"] = "", -- A_Classic_Fairytale:shadow +-- ["Regurgitator"] = "", -- A_Classic_Fairytale:backstab +-- ["Reinforcements"] = "", -- A_Classic_Fairytale:backstab +-- ["Remember: The rope only bend around objects, |if it doesn't hit anything it's always stright!"] = "", -- Basic_Training_-_Rope +-- ["Remember this, pathetic animal: when the day comes, you will regret your blind loyalty!"] = "", -- A_Classic_Fairytale:shadow [" - 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ú", +-- ["Return to Leaks A Lot! If you get stuck, press [Precise] to try again!"] = "", -- A_Classic_Fairytale:shadow +-- ["Righteous Beard"] = "", -- A_Classic_Fairytale:backstab, A_Classic_Fairytale:dragon, A_Classic_Fairytale:enemy, A_Classic_Fairytale:epil, A_Classic_Fairytale:family, A_Classic_Fairytale:first_blood, A_Classic_Fairytale:queen, A_Classic_Fairytale:united +-- ["ROPE-KNOCKING"] = "", -- User_Mission_-_Rope_Knock_Challenge +-- ["Rope Training"] = "", -- Basic_Training_-_Rope +-- ["Rot Molester"] = "", -- A_Classic_Fairytale:shadow ["Round Limit"] = "Limit na kolo", +-- ["Round Limit:"] = "", -- Racer ["Rounds Complete"] = "DokonÄených kôl", +-- ["Rounds Complete: "] = "", -- Racer ["RULES OF THE GAME [Press ESC to view]"] = "PRAVIDLà HRY [StlaÄte Esc pre ich zobrazenie]", - ["s|"] = "s|", +-- ["Rusty Joe"] = "", -- A_Classic_Fairytale:queen +-- ["Sabotage: [Sabotage all hogs in the circle and deal ~10 dmg]"] = "", -- Continental_supplies +-- ["Salivaslurper"] = "", -- A_Classic_Fairytale:united +-- ["Salvation"] = "", -- A_Classic_Fairytale:family +-- ["Salvation was one step closer now..."] = "", -- A_Classic_Fairytale:dragon ["Save as many hapless hogs as possible!"] = "Zachráňte toľko bezmocných ježkov, koľko len viete!", +-- ["Save Fell From Heaven!"] = "", -- A_Classic_Fairytale:journey +-- ["Save Leaks A Lot!|Hint: The Switch utility might be of help to you."] = "", -- A_Classic_Fairytale:shadow +-- ["Save the princess! All your hogs must survive!|Hint: Kill the cyborgs first! Use the ammo very carefully!|Hint: You might want to spare a girder for cover!"] = "", -- A_Classic_Fairytale:family +-- ["Save the princess by collecting the crate in under 12 turns!"] = "", -- A_Classic_Fairytale:journey +-- ["Scalp Muncher"] = "", -- A_Classic_Fairytale:backstab +-- ["Score"] = "", -- Mutant ["SCORE"] = "SKÓRE", +-- ["Scream from a Walrus: [Deal 20 damage + 10% of your hogs health to all hogs around you and get half back]"] = "", -- Continental_supplies ["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 +-- ["Seduction"] = "", -- Continental_supplies +-- ["Seems like every time you take a \"walk\", the enemy find us!"] = "", -- A_Classic_Fairytale:backstab +-- ["See that crate farther on the right?"] = "", -- A_Classic_Fairytale:first_blood ["See ya!"] = "Tak zatiaľ!", - ["s"] = "s", -- GaudyRacer, Space_Invasion +-- ["Segmentation Paul"] = "", -- A_Classic_Fairytale:dragon +-- ["Select continent!"] = "", -- Continental_supplies +-- ["Select difficulty: [Left] - easier or [Right] - harder"] = "", -- A_Classic_Fairytale:first_blood +-- ["selected!"] = "", -- Space_Invasion, Tumbler +-- ["... share your beauty with the world every morning, my princess!"] = "", -- A_Classic_Fairytale:journey +-- ["She's behind that tall thingy."] = "", -- A_Classic_Fairytale:family ["Shield boosted! +30 power"] = "Å tít posilnený! Energia +30", ["Shield Depleted"] = "Å tít vyÄerpaný", ["Shield is fully recharged!"] = "Å tít je plne nabitý!", @@ -141,61 +644,344 @@ ["Shield OFF:"] = "Å tít VYPNUTÃ:", ["Shield ON:"] = "Å tít ZAPNUTÃ:", ["Shield Seeker!"] = "HľadaÄ Å¡títov!", +-- ["Shotgun"] = "", -- Continental_supplies ["Shotgun Team"] = "Shotgun tím", ["Shotgun Training"] = "Tréning s brokovnicou", + ["Shots Left: "] = "Zostáva striel: ", -- GaudyRacer, Tumbler ["shots remaining."] = "striel ostáva.", - ["Shots Left: "] = "Zostáva striel: ", -- GaudyRacer, Tumbler ["Silly"] = "Hlúpy", ["Sinky"] = "Prepadnutý", +-- ["Sirius Lee"] = "", -- A_Classic_Fairytale:enemy ["%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 +-- ["Slippery"] = "", -- A_Classic_Fairytale:journey +-- ["Smith 0.97"] = "", -- A_Classic_Fairytale:enemy +-- ["Smith 0.98"] = "", -- A_Classic_Fairytale:enemy +-- ["Smith 0.99a"] = "", -- A_Classic_Fairytale:enemy +-- ["Smith 0.99b"] = "", -- A_Classic_Fairytale:enemy +-- ["Smith 0.99f"] = "", -- A_Classic_Fairytale:enemy +-- ["Smith 1.0"] = "", -- A_Classic_Fairytale:enemy +-- ["Sniper Rifle"] = "", -- Continental_supplies +-- ["Sniper!"] = "", -- Space_Invasion ["Sniper Training"] = "Tréning pre ostreľovaÄov", ["Sniperz"] = "OstreľovaÄi", +-- ["So humiliating..."] = "", -- A_Classic_Fairytale:first_blood +-- ["South America"] = "", -- Continental_supplies +-- ["So? What will it be?"] = "", -- A_Classic_Fairytale:shadow +-- ["Spawn the crate, and attack!"] = "", -- WxW +-- ["Special Weapons:"] = "", -- Continental_supplies +-- ["Spiky Cheese"] = "", -- A_Classic_Fairytale:enemy, A_Classic_Fairytale:epil, A_Classic_Fairytale:family, A_Classic_Fairytale:queen, A_Classic_Fairytale:shadow +-- ["Spleenlover"] = "", -- A_Classic_Fairytale:united ["Sponge"] = "Å pongia", ["Spooky Tree"] = "StraÅ¡idelný strom", + ["s|"] = "s|", + ["s"] = "s", -- GaudyRacer, Space_Invasion ["STATUS UPDATE"] = "AKTUALIZÃCIA STAVU", -- GaudyRacer, Space_Invasion +-- ["Steel Eye"] = "", -- A_Classic_Fairytale:queen +-- ["Step By Step"] = "", -- A_Classic_Fairytale:first_blood +-- ["Steve"] = "", -- A_Classic_Fairytale:dragon, A_Classic_Fairytale:family, A_Classic_Fairytale:queen +-- ["Sticky Mine"] = "", -- Continental_supplies +-- ["Stronglings"] = "", -- A_Classic_Fairytale:shadow +-- ["Structure"] = "", -- Continental_supplies +-- ["Super Weapons"] = "", -- WxW +-- ["Surf Before Crate"] = "", -- WxW +-- ["Surfer! +15 points!"] = "", -- Space_Invasion +-- ["Surfer!"] = "", -- WxW +-- ["Survive!|Hint: Cinematics can be skipped with the [Precise] key."] = "", -- A_Classic_Fairytale:shadow +-- ["Swing, Leaks A Lot, on the wings of the wind!"] = "", -- A_Classic_Fairytale:first_blood ["Switched to "] = "Prepnuté na ", +-- ["Syntax Errol"] = "", -- A_Classic_Fairytale:dragon +-- ["Talk about mixed signals..."] = "", -- A_Classic_Fairytale:dragon ["Team %d: "] = "Tím %d: ", ["Team Scores"] = "Tímové skóre", -- Control, Space_Invasion +-- ["Teleport hint: just use the mouse to select the destination!"] = "", -- A_Classic_Fairytale:dragon +-- ["Thanks!"] = "", -- A_Classic_Fairytale:family +-- ["Thank you, my hero!"] = "", -- A_Classic_Fairytale:family +-- ["Thank you, oh, thank you, Leaks A Lot!"] = "", -- A_Classic_Fairytale:journey +-- ["Thank you, oh, thank you, my heroes!"] = "", -- A_Classic_Fairytale:journey +-- ["That is, indeed, very weird..."] = "", -- A_Classic_Fairytale:united +-- ["That makes it almost invaluable!"] = "", -- A_Classic_Fairytale:enemy +-- ["That ought to show them!"] = "", -- A_Classic_Fairytale:backstab +-- ["That's for my father!"] = "", -- A_Classic_Fairytale:backstab +-- ["That shaman sure knows what he's doing!"] = "", -- A_Classic_Fairytale:shadow ["That Sinking Feeling"] = "Potopené pocity", +-- ["That's not our problem!"] = "", -- A_Classic_Fairytale:enemy +-- ["That's typical of you!"] = "", -- A_Classic_Fairytale:family +-- ["That was just mean!"] = "", -- A_Classic_Fairytale:backstab, A_Classic_Fairytale:united ["That was pointless."] = "To bolo zbytoÄné.", +-- ["The answer is...entertaintment. You'll see what I mean."] = "", -- A_Classic_Fairytale:backstab +-- ["The anti-portal zone is all over the floor, and I have nothing to kill him...Droping something could hurt him enough to kill him..."] = "", -- portal +-- ["The Bull's Eye"] = "", -- A_Classic_Fairytale:first_blood +-- ["The caves are well hidden, they won't find us there!"] = "", -- A_Classic_Fairytale:united +-- ["The Crate Frenzy"] = "", -- A_Classic_Fairytale:first_blood +-- ["The Dilemma"] = "", -- A_Classic_Fairytale:shadow +-- ["The enemy can't move but it might be a good idea to stay out of sight!|"] = "", -- A_Classic_Fairytale:dragon ["The enemy is hiding out on yonder ducky!"] = "Nepriateľ sa schováva na tamtej kaÄiÄke!", +-- ["The Enemy Of My Enemy"] = "", -- A_Classic_Fairytale:enemy +-- ["The First Blood"] = "", -- A_Classic_Fairytale:first_blood +-- ["The First Encounter"] = "", -- A_Classic_Fairytale:shadow ["The flag will respawn next round."] = "V ÄalÅ¡om kole sa obnoví vlajka.", +-- ["The food bites back"] = "", -- A_Classic_Fairytale:backstab +-- ["The giant umbrella from the last crate should help break the fall."] = "", -- A_Classic_Fairytale:first_blood +-- ["The Great Escape"] = "", -- User_Mission_-_The_Great_Escape +-- ["The guardian"] = "", -- A_Classic_Fairytale:shadow +-- ["The Individualist"] = "", -- A_Classic_Fairytale:shadow +-- ["Their buildings were very primitive back then, even for an uncivilised island."] = "", -- A_Classic_Fairytale:united +-- ["The Journey Back"] = "", -- A_Classic_Fairytale:journey +-- ["The Leap of Faith"] = "", -- A_Classic_Fairytale:first_blood +-- ["The Moonwalk"] = "", -- A_Classic_Fairytale:journey ["The Nameless One"] = "Bez mena", +-- ["The next one is pretty hard! |Tip: You have to do multiple swings!"] = "", -- Basic_Training_-_Rope +-- ["Then how do they keep appearing?"] = "", -- A_Classic_Fairytale:shadow +-- ["The other one were all cannibals, spending their time eating the organs of fellow hedgehogs..."] = "", -- A_Classic_Fairytale:first_blood +-- ["There must be a spy among us!"] = "", -- A_Classic_Fairytale:backstab +-- ["There's more of them? When did they become so hungry?"] = "", -- A_Classic_Fairytale:backstab, A_Classic_Fairytale:united +-- ["There's nothing more satisfying for me than seeing you share your beauty with the world every morning, my princess!"] = "", -- A_Classic_Fairytale:journey +-- ["There's nothing more satisfying to us than seeing you share your beauty..."] = "", -- A_Classic_Fairytale:journey +-- ["There's nothing more satisfying to us than seeing you share your beauty with the world every morning, my princess!"] = "", -- A_Classic_Fairytale:journey +-- ["The Rising"] = "", -- A_Classic_Fairytale:first_blood +-- ["The Savior"] = "", -- A_Classic_Fairytale:journey +-- ["These primitive people are so funny!"] = "", -- A_Classic_Fairytale:backstab +-- ["The Shadow Falls"] = "", -- A_Classic_Fairytale:shadow +-- ["The Showdown"] = "", -- A_Classic_Fairytale:shadow +-- ["The Slaughter"] = "", -- A_Classic_Fairytale:dragon, A_Classic_Fairytale:first_blood ["THE SPECIALISTS"] = "Å PECIALISTI", +-- ["The spirits of the ancerstors are surely pleased, Leaks A Lot."] = "", -- A_Classic_Fairytale:first_blood +-- ["The Torment"] = "", -- A_Classic_Fairytale:first_blood +-- ["The Tunnel Maker"] = "", -- A_Classic_Fairytale:journey +-- ["The Ultimate Weapon"] = "", -- A_Classic_Fairytale:first_blood +-- ["The Union"] = "", -- A_Classic_Fairytale:enemy +-- ["The village, unprepared, was destroyed by the cyborgs..."] = "", -- A_Classic_Fairytale:journey +-- ["The walk of Fame"] = "", -- A_Classic_Fairytale:shadow +-- ["The wasted youth"] = "", -- A_Classic_Fairytale:first_blood +-- ["The weapon in that last crate was bestowed upon us by the ancients!"] = "", -- A_Classic_Fairytale:first_blood +-- ["The what?!"] = "", -- A_Classic_Fairytale:dragon +-- ["The wind whispers that you are ready to become familiar with tools, now..."] = "", -- A_Classic_Fairytale:first_blood +-- ["They are all waiting back in the village, haha."] = "", -- A_Classic_Fairytale:enemy +-- ["They Call Me Bullseye!"] = "", -- Space_Invasion +-- ["They have weapons we've never seen before!"] = "", -- A_Classic_Fairytale:united +-- ["They keep appearing like this. It's weird!"] = "", -- A_Classic_Fairytale:united +-- ["They killed "] = "", -- A_Classic_Fairytale:backstab, A_Classic_Fairytale:united +-- ["They must be trying to weaken us!"] = "", -- A_Classic_Fairytale:enemy +-- ["They never learn"] = "", -- A_Classic_Fairytale:journey +-- ["They told us to wear these clothes. They said that this is the newest trend."] = "", -- A_Classic_Fairytale:enemy +-- ["They've been manipulating us all this time!"] = "", -- A_Classic_Fairytale:enemy +-- ["Thighlicker"] = "", -- A_Classic_Fairytale:united +-- ["This is it! It's time to make Fell From Heaven fall for me..."] = "", -- A_Classic_Fairytale:first_blood +-- ["This island is the only place left on Earth with grass on it!"] = "", -- A_Classic_Fairytale:enemy +-- ["This is typical!"] = "", -- A_Classic_Fairytale:dragon +-- ["This must be some kind of sorcery!"] = "", -- A_Classic_Fairytale:shadow +-- ["This must be the caves!"] = "", -- A_Classic_Fairytale:backstab +-- ["This one's tricky."] = "", -- Basic_Training_-_Sniper_Rifle ["This rain is really something..."] = "Ten dÃ¡Å¾Ä naozaj stojí za to...", +-- ["This will be fun!"] = "", -- A_Classic_Fairytale:enemy +-- ["Those aliens are destroying the island!"] = "", -- A_Classic_Fairytale:family ["TIME: "] = "ÄŒAS: ", ["Timed Kamikaze!"] = "ÄŒasovaná samovražda!", ["Time Extended!"] = "Predĺžený Äas!", ["Time Extension"] = "Predĺženie Äasu", ["Time Left: "] = "Zostávajúci Äas: ", +-- ["Tip: The rope physics are different than in the real world, |use it to your advantage!"] = "", -- Basic_Training_-_Rope ["Toggle Shield"] = "Prepnúť Å¡tít", +-- ["To help you, of course!"] = "", -- A_Classic_Fairytale:journey +-- ["To place a girder, select it, use [Left] and [Right] to select angle and length, place with [Left Click]"] = "", -- A_Classic_Fairytale:shadow +-- ["Torn Muscle"] = "", -- A_Classic_Fairytale:journey +-- [" to save the village."] = "", -- A_Classic_Fairytale:dragon +-- ["To the caves..."] = "", -- A_Classic_Fairytale:united ["Toxic Team"] = "Toxic tím", -- User_Mission_-_Diver, User_Mission_-_Spooky_Tree, User_Mission_-_Teamwork ["TRACK COMPLETED"] = "TRAŤ DOKONÄŒENÃ", ["TRACK FAILED!"] = "NEDOKONÄŒILI STE TRAŤ!", ["Track Time: "] = "ÄŒas: ", +-- ["training"] = "", -- portal +-- ["Traitors"] = "", -- A_Classic_Fairytale:epil +-- ["Tribe"] = "", -- A_Classic_Fairytale:backstab ["TrophyRace"] = "Preteky o trofej", +-- ["Try to protect the chief! You won't lose if he dies, but it is advised that he survives."] = "", -- A_Classic_Fairytale:united ["T_T"] = "T_T", +-- ["Tumbling Time Extended!"] = "", -- Tumbler +-- ["Turns until Sudden Death: "] = "", -- A_Classic_Fairytale:dragon +-- [" turns until Sudden Death! Better hurry!"] = "", -- A_Classic_Fairytale:dragon ["Turn Time"] = "ÄŒas na Å¥ah", - ["Unit"] = "Jednotka", +-- ["Two little hogs cooperating, getting past obstacles..."] = "", -- A_Classic_Fairytale:journey +-- ["Uhm...I met one of them and took his weapons."] = "", -- A_Classic_Fairytale:shadow +-- ["Uhmm...ok no."] = "", -- A_Classic_Fairytale:enemy +-- ["ULTRA KILL"] = "", -- Mutant +-- ["Under Construction"] = "", -- A_Classic_Fairytale:shadow +-- ["Unexpected Igor"] = "", -- A_Classic_Fairytale:dragon +-- ["Unit 0x0007"] = "", -- A_Classic_Fairytale:family +-- ["Unit 334a$7%;.*"] = "", -- A_Classic_Fairytale:backstab, A_Classic_Fairytale:dragon, A_Classic_Fairytale:enemy, A_Classic_Fairytale:family, A_Classic_Fairytale:queen, A_Classic_Fairytale:united ["Unit 3378"] = "Jednotka 3378", ["Unit 835"] = "Jednotka 835", +-- ["United We Stand"] = "", -- A_Classic_Fairytale:united + ["Unit"] = "Jednotka", ["Unlimited Attacks"] = "Neobmedzené útoky", +-- ["Unlucky Sods"] = "", -- User_Mission_-_Rope_Knock_Challenge ["Unstoppable!"] = "Nezastaviteľný!", +-- ["Unsuspecting Louts"] = "", -- User_Mission_-_Rope_Knock_Challenge +-- ["[Up], [Down] to aim, [Space] to shoot!"] = "", -- A_Classic_Fairytale:first_blood +-- ["Use it wisely!"] = "", -- A_Classic_Fairytale:dragon +-- ["Use it with precaution!"] = "", -- A_Classic_Fairytale:first_blood ["User Challenge"] = "Výzva", +-- ["Use the parachute ([Space] while in air)"] = "", -- +-- ["Use the portal gun to get to the next crate, then use the new gun to get to the final destination!|"] = "", -- A_Classic_Fairytale:dragon +-- ["Use the rope to get on the head of the mole, young one!"] = "", -- A_Classic_Fairytale:first_blood +-- ["Use the rope to knock your enemies to their doom."] = "", -- User_Mission_-_Rope_Knock_Challenge ["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!", ["v.06"] = "v.06", +-- ["Vedgies"] = "", -- A_Classic_Fairytale:journey +-- ["Vegan Jack"] = "", -- A_Classic_Fairytale:enemy +-- ["Victory!"] = "", -- Basic_Training_-_Rope ["Victory for the "] = "Víťazstvo pre", -- CTF_Blizzard, Capture_the_Flag +-- ["Violence is not the answer to your problems!"] = "", -- A_Classic_Fairytale:first_blood +-- ["Walls Left"] = "", -- WxW +-- ["Walls Required"] = "", -- WxW +-- ["WALL TO WALL"] = "", -- WxW +-- ["Wannabe Flyboys"] = "", -- User_Mission_-_RCPlane_Challenge +-- ["Wannabe Shoppsta"] = "", -- User_Mission_-_Rope_Knock_Challenge +-- ["Watch your steps, young one!"] = "", -- A_Classic_Fairytale:first_blood ["Waypoint placed."] = "NavigaÄný bod umiestnený.", ["Way-Points Remaining"] = "Ostáva navigaÄných bodov", +-- ["Weaklings"] = "", -- A_Classic_Fairytale:shadow +-- ["We all know what happens when you get frightened..."] = "", -- A_Classic_Fairytale:first_blood +-- ["Weapons reset."] = "", -- Highlander ["Weapons Reset"] = "Reset zbraní", +-- ["We are indeed."] = "", -- A_Classic_Fairytale:backstab +-- ["We can't defeat them!"] = "", -- A_Classic_Fairytale:shadow +-- ["We can't hold them up much longer!"] = "", -- A_Classic_Fairytale:united +-- ["We can't let them take over our little island!"] = "", -- A_Classic_Fairytale:enemy +-- ["We have no time to waste..."] = "", -- A_Classic_Fairytale:journey +-- ["We have nowhere else to live!"] = "", -- A_Classic_Fairytale:enemy +-- ["We have to protect the village!"] = "", -- A_Classic_Fairytale:united +-- ["We have to unite and defeat those cylergs!"] = "", -- A_Classic_Fairytale:enemy +-- ["Welcome, Leaks A Lot!"] = "", -- A_Classic_Fairytale:journey ["Well done."] = "Výborne.", +-- ["We'll give you a problem then!"] = "", -- A_Classic_Fairytale:enemy +-- ["We'll spare your life for now!"] = "", -- A_Classic_Fairytale:backstab +-- ["Well, that was a waste of time."] = "", -- A_Classic_Fairytale:dragon +-- ["Well, well! Isn't that the cutest thing you've ever seen?"] = "", -- A_Classic_Fairytale:journey +-- ["Well, yes. This was a cyborg television show."] = "", -- A_Classic_Fairytale:enemy +-- ["We made sure noone followed us!"] = "", -- A_Classic_Fairytale:backstab +-- ["We need to move!"] = "", -- A_Classic_Fairytale:united +-- ["We need to prevent their arrival!"] = "", -- A_Classic_Fairytale:backstab +-- ["We need to warn the village."] = "", -- A_Classic_Fairytale:shadow +-- ["We should head back to the village now."] = "", -- A_Classic_Fairytale:shadow +-- ["We were trying to save her and we got lost."] = "", -- A_Classic_Fairytale:family +-- ["We won't let you hurt her!"] = "", -- A_Classic_Fairytale:journey +-- ["What?! A cannibal? Here? There is no time to waste! Come, you are prepared."] = "", -- A_Classic_Fairytale:first_blood +-- ["What a douche!"] = "", -- A_Classic_Fairytale:enemy +-- ["What am I gonna...eat, yo?"] = "", -- A_Classic_Fairytale:family +-- ["What are you doing at a distance so great, young one?"] = "", -- A_Classic_Fairytale:first_blood +-- ["What are you doing? Let her go!"] = "", -- A_Classic_Fairytale:journey +-- ["What a ride!"] = "", -- A_Classic_Fairytale:shadow +-- ["What a strange cave!"] = "", -- A_Classic_Fairytale:dragon +-- ["What a strange feeling!"] = "", -- A_Classic_Fairytale:backstab +-- ["What do my faulty eyes observe? A spy!"] = "", -- A_Classic_Fairytale:first_blood +-- ["Whatever floats your boat..."] = "", -- A_Classic_Fairytale:shadow +-- [" What !! For all of this struggle i just win some ... TIME o0"] = "", -- portal +-- ["What has "] = "", -- A_Classic_Fairytale:backstab +-- ["What? Here? How did they find us?!"] = "", -- A_Classic_Fairytale:backstab +-- ["What is this place?"] = "", -- A_Classic_Fairytale:dragon, A_Classic_Fairytale:enemy +-- ["What shall we do with the traitor?"] = "", -- A_Classic_Fairytale:backstab +-- ["WHAT?! You're the ones attacking us!"] = "", -- A_Classic_Fairytale:enemy +-- ["When?"] = "", -- A_Classic_Fairytale:enemy +-- ["When I find it..."] = "", -- A_Classic_Fairytale:dragon +-- ["Where are all these crates coming from?!"] = "", -- A_Classic_Fairytale:shadow +-- ["Where are they?!"] = "", -- A_Classic_Fairytale:backstab +-- ["Where did that alien run?"] = "", -- A_Classic_Fairytale:dragon +-- ["Where did you get the exploding apples?"] = "", -- A_Classic_Fairytale:shadow +-- ["Where did you get the exploding apples and the magic bow that shoots many arrows?"] = "", -- A_Classic_Fairytale:shadow +-- ["Where did you get the magic bow that shoots many arrows?"] = "", -- A_Classic_Fairytale:shadow +-- ["Where did you get the weapons in the forest, Dense Cloud?"] = "", -- A_Classic_Fairytale:backstab +-- ["Where do you get that?!"] = "", -- A_Classic_Fairytale:enemy +-- ["Where have you been?!"] = "", -- A_Classic_Fairytale:backstab +-- ["Where have you been?"] = "", -- A_Classic_Fairytale:united +-- ["? Why?"] = "", -- A_Classic_Fairytale:backstab +-- ["Why "] = "", -- A_Classic_Fairytale:backstab +-- ["! Why?!"] = "", -- A_Classic_Fairytale:backstab, A_Classic_Fairytale:united +-- ["Why are you doing this?"] = "", -- A_Classic_Fairytale:journey +-- ["Why are you helping us, uhm...?"] = "", -- A_Classic_Fairytale:family +-- ["Why can't he just let her go?!"] = "", -- A_Classic_Fairytale:family +-- ["Why do men keep hurting me?"] = "", -- A_Classic_Fairytale:first_blood +-- ["Why do you not like me?"] = "", -- A_Classic_Fairytale:shadow +-- ["Why do you want to take over our island?"] = "", -- A_Classic_Fairytale:enemy +-- ["Why me?!"] = "", -- A_Classic_Fairytale:backstab +-- ["Why would they do this?"] = "", -- A_Classic_Fairytale:backstab +-- ["- Will Get 1-3 random weapons"] = "", -- Continental_supplies +-- ["- Will refresh Parachute each turn."] = "", -- Continental_supplies +-- ["- Will refresh portalgun each turn."] = "", -- Continental_supplies ["Will this ever end?"] = "SkonÄí to vôbec niekedy?", +-- ["WINNER IS "] = "", -- Mutant ["WINNING TIME: "] = "VÃŤAZNà ČAS: ", +-- ["Wise Oak"] = "", -- A_Classic_Fairytale:backstab, A_Classic_Fairytale:dragon, A_Classic_Fairytale:enemy, A_Classic_Fairytale:epil, A_Classic_Fairytale:family, A_Classic_Fairytale:queen +-- ["With Dense Cloud on the land of shadows, I'm the village's only hope..."] = "", -- A_Classic_Fairytale:journey +-- ["With the rest of the tribe gone, it was up to "] = "", -- A_Classic_Fairytale:dragon +-- ["Worry not, for it is a peaceful animal! There is no reason to be afraid..."] = "", -- A_Classic_Fairytale:first_blood +-- ["Wow, what a dream!"] = "", -- A_Classic_Fairytale:backstab +-- ["Y3K1337"] = "", -- A_Classic_Fairytale:journey, A_Classic_Fairytale:shadow +-- ["Yay, we won!"] = "", -- A_Classic_Fairytale:enemy +-- ["Y Chwiliad"] = "", -- A_Classic_Fairytale:dragon +-- ["Yeah...I think it's a 'he', lol."] = "", -- A_Classic_Fairytale:shadow +-- ["Yeah, sure! I died. Hillarious!"] = "", -- A_Classic_Fairytale:backstab +-- ["Yeah, take that!"] = "", -- A_Classic_Fairytale:dragon +-- ["Yeah? Watcha gonna do? Cry?"] = "", -- A_Classic_Fairytale:journey +-- ["Yes!"] = "", -- A_Classic_Fairytale:enemy +-- ["Yes, yeees! You are now ready to enter the real world!"] = "", -- A_Classic_Fairytale:first_blood +-- ["Yo, dude, we're here, too!"] = "", -- A_Classic_Fairytale:family +-- ["You are given the chance to turn your life around..."] = "", -- A_Classic_Fairytale:shadow +-- ["You are playing with our lives here!"] = "", -- A_Classic_Fairytale:enemy +-- ["! You bastards!"] = "", -- A_Classic_Fairytale:backstab, A_Classic_Fairytale:united +-- ["You bear impressive skills, "] = "", -- A_Classic_Fairytale:dragon +-- ["You can't fire a portal on the blue surface"] = "", -- portal +-- ["You couldn't possibly believe that after refusing my offer I'd just let you go!"] = "", -- A_Classic_Fairytale:journey ["You'd almost swear the water was rising!"] = "Prisahal by si, že voda stúpa!", +-- ["You'd better watch your steps..."] = "", -- A_Classic_Fairytale:journey +-- ["You did not make it in time, try again!"] = "", -- Basic_Training_-_Rope +-- ["You have 7 turns until the next wave arrives.|Make sure the arriving cannibals are greeted appropriately!|If the hog dies, the cause is lost.|Hint: you might want to use some mines..."] = "", -- A_Classic_Fairytale:backstab +-- ["You have "] = "", -- A_Classic_Fairytale:dragon +-- ["You have been giving us out to the enemy, haven't you!"] = "", -- A_Classic_Fairytale:backstab +-- ["You have been respawned, at your last checkpoint!"] = "", -- Basic_Training_-_Rope +-- ["You have been respawned, be more carefull next time!"] = "", -- Basic_Training_-_Rope +-- ["You have chosen the perfect moment to leave."] = "", -- A_Classic_Fairytale:united +-- ["You have failed to complete your task, young one!"] = "", -- A_Classic_Fairytale:journey +-- ["You have failed to save the tribe!"] = "", -- A_Classic_Fairytale:backstab +-- ["You have finally figured it out!"] = "", -- A_Classic_Fairytale:enemy +-- ["You have kidnapped our whole tribe!"] = "", -- A_Classic_Fairytale:enemy +-- ["You have killed an innocent hedgehog!"] = "", -- A_Classic_Fairytale:backstab +-- ["You have proven yourself worthy to see our most ancient secret!"] = "", -- A_Classic_Fairytale:first_blood +-- ["You have proven yourselves worthy!"] = "", -- A_Classic_Fairytale:enemy ["You have SCORED!!"] = "SKÓROVALI ste!!", +-- ["You have to destroy 12 targets in 180 seconds"] = "", -- Basic_Training_-_Cluster_Bomb +-- ["You have won the game by proving true cooperative skills!"] = "", -- A_Classic_Fairytale:enemy +-- ["You just appeared out of thin air!"] = "", -- A_Classic_Fairytale:backstab +-- ["You just committed suicide..."] = "", -- A_Classic_Fairytale:shadow +-- ["You killed my father, you monster!"] = "", -- A_Classic_Fairytale:backstab +-- ["You know...taking a stroll."] = "", -- A_Classic_Fairytale:backstab +-- ["You know what? I don't even regret anything!"] = "", -- A_Classic_Fairytale:backstab +-- ["You'll see what I mean!"] = "", -- A_Classic_Fairytale:enemy +-- ["You may only attack from a rope!"] = "", -- WxW +-- ["You meatbags are pretty slow, you know!"] = "", -- A_Classic_Fairytale:enemy +-- ["You might want to find a way to instantly kill arriving cannibals!"] = "", -- A_Classic_Fairytale:backstab +-- ["Young one, you are telling us that they can instantly change location without a shaman?"] = "", -- A_Classic_Fairytale:united +-- ["You probably know what to do next..."] = "", -- A_Classic_Fairytale:first_blood +-- ["Your deaths will be avenged, cannibals!"] = "", -- A_Classic_Fairytale:enemy +-- ["Your death will not be in vain, Dense Cloud!"] = "", -- A_Classic_Fairytale:shadow +-- ["You're...alive!? But we saw you die!"] = "", -- A_Classic_Fairytale:backstab +-- ["You're a pathetic liar!"] = "", -- A_Classic_Fairytale:backstab +-- ["You're funny!"] = "", -- A_Classic_Fairytale:journey +-- ["You're getting pretty good! |Tip: When you shorten you rope you move faster! |and when you lengthen it you move slower"] = "", -- Basic_Training_-_Rope +-- ["You're pathetic! You are not worthy of my attention..."] = "", -- A_Classic_Fairytale:shadow +-- ["You're probably wondering why I bought you back..."] = "", -- A_Classic_Fairytale:backstab +-- ["You're terrorizing the forest...We won't catch anything like this!"] = "", -- A_Classic_Fairytale:shadow +-- ["Your hogs must survive!"] = "", -- A_Classic_Fairytale:journey +-- ["Your movement skills will be evaluated now."] = "", -- A_Classic_Fairytale:first_blood ["You saved"] = "Zachránili ste", +-- ["You've been assaulting us, we have been just defending ourselves!"] = "", -- A_Classic_Fairytale:enemy ["You've failed. Try again."] = "Neuspeli ste. Skúste to znova.", ["You've reached the goal!| |Time: "] = "Dosiahli ste cieľ!| |ÄŒas: ", +-- ["You will be avenged!"] = "", -- A_Classic_Fairytale:shadow +-- ["You won't believe what happened to me!"] = "", -- A_Classic_Fairytale:backstab +-- ["Yuck! I bet they'll keep worshipping her even after I save the village!"] = "", -- A_Classic_Fairytale:family +-- ["Zealandia"] = "", -- Continental_supplies ["'Zooka Team"] = "Bazuka tím", +-- ["Zork"] = "", -- A_Classic_Fairytale:dragon, A_Classic_Fairytale:family, A_Classic_Fairytale:queen } diff -r 3331b30e4ef1 -r 88fde28bbda6 share/hedgewars/Data/Locale/stub.lua --- a/share/hedgewars/Data/Locale/stub.lua Sun Oct 21 01:28:33 2012 +0400 +++ b/share/hedgewars/Data/Locale/stub.lua Sat Nov 03 00:34:35 2012 +0400 @@ -2,158 +2,642 @@ -- [":("] = "", -- ["!!!"] = "", -- ["..."] = "", +-- ["011101000"] = "", -- A_Classic_Fairytale:dragon +-- ["011101001"] = "", -- A_Classic_Fairytale:backstab, A_Classic_Fairytale:dragon, A_Classic_Fairytale:enemy, A_Classic_Fairytale:family, A_Classic_Fairytale:journey, A_Classic_Fairytale:queen, A_Classic_Fairytale:shadow, A_Classic_Fairytale:united +-- ["30 minutes later..."] = "", -- A_Classic_Fairytale:shadow +-- ["About a month ago, a cyborg came and told us that you're the cannibals!"] = "", -- A_Classic_Fairytale:enemy -- ["Accuracy Bonus!"] = "", +-- ["Ace"] = "", -- User_Mission_-_RCPlane_Challenge, User_Mission_-_Rope_Knock_Challenge -- ["Achievement Unlocked"] = "", -- User_Mission_-_Bamboo_Thicket, User_Mission_-_That_Sinking_Feeling, Tumbler +-- ["A Classic Fairytale"] = "", -- A_Classic_Fairytale:first_blood +-- ["???"] = "", -- A_Classic_Fairytale:backstab +-- ["Actually, you aren't worthy of life! Take this..."] = "", -- A_Classic_Fairytale:shadow +-- ["A cy-what?"] = "", -- A_Classic_Fairytale:enemy +-- ["Adventurous"] = "", -- A_Classic_Fairytale:journey +-- ["Africa"] = "", -- Continental_supplies +-- ["After Leaks A Lot betrayed his tribe, he joined the cannibals..."] = "", -- A_Classic_Fairytale:first_blood +-- ["After the shock caused by the enemy spy, Leaks A Lot and Dense Cloud went hunting to relax."] = "", -- A_Classic_Fairytale:shadow +-- ["Again with the 'cannibals' thing!"] = "", -- A_Classic_Fairytale:enemy +-- ["a Hedgewars challenge"] = "", -- User_Mission_-_RCPlane_Challenge, User_Mission_-_Rope_Knock_Challenge -- ["a Hedgewars mini-game"] = "", -- Space_Invasion, The_Specialists -- ["Aiming Practice"] = "", --Bazooka, Shotgun, SniperRifle +-- ["A leap in a leap"] = "", -- A_Classic_Fairytale:first_blood +-- ["A little gift from the cyborgs"] = "", -- A_Classic_Fairytale:shadow +-- ["All gone...everything!"] = "", -- A_Classic_Fairytale:enemy +-- ["All right, we just need to get to the other side of the island!"] = "", -- A_Classic_Fairytale:journey +-- ["All walls touched!"] = "", -- WxW -- ["Ammo"] = "", -- ["Ammo Depleted!"] = "", -- ["ammo extended!"] = "", -- ["Ammo is reset at the end of your turn."] = "", -- ["Ammo Maniac!"] = "", +-- ["And how am I alive?!"] = "", -- A_Classic_Fairytale:enemy +-- ["And so happenned that Leaks A Lot failed to complete the challenge! He landed, pressured by shame..."] = "", -- A_Classic_Fairytale:first_blood +-- ["And so it began..."] = "", -- A_Classic_Fairytale:first_blood +-- ["...and so the cyborgs took over the world..."] = "", -- A_Classic_Fairytale:shadow +-- ["And so they discovered that cyborgs weren't invulnerable..."] = "", -- A_Classic_Fairytale:journey +-- ["And where's all the weed?"] = "", -- A_Classic_Fairytale:dragon +-- ["And you believed me? Oh, god, that's cute!"] = "", -- A_Classic_Fairytale:journey +-- ["Anno 1032: [The explosion will make a strong push ~ wide range, wont affect hogs close to the target]"] = "", -- Continental_supplies +-- ["Antarctica"] = "", -- Continental_supplies +-- ["Are we there yet?"] = "", -- A_Classic_Fairytale:shadow +-- ["Are you accusing me of something?"] = "", -- A_Classic_Fairytale:backstab +-- ["Are you saying that many of us have died for your entertainment?"] = "", -- A_Classic_Fairytale:enemy +-- ["Artur Detour"] = "", -- A_Classic_Fairytale:queen +-- ["As a reward for your performance, here's some new technology!"] = "", -- A_Classic_Fairytale:dragon +-- ["a shoppa minigame"] = "", -- WxW +-- ["Asia"] = "", -- Continental_supplies +-- ["Assault Team"] = "", -- A_Classic_Fairytale:backstab +-- ["As the ammo is sparse, you might want to reuse ropes while mid-air.|"] = "", -- A_Classic_Fairytale:dragon +-- ["As the challenge was completed, Leaks A Lot set foot on the ground..."] = "", -- A_Classic_Fairytale:first_blood +-- ["As you can see, there is no way to get on the other side!"] = "", -- A_Classic_Fairytale:dragon +-- ["Attack From Rope"] = "", -- WxW +-- ["Australia"] = "", -- Continental_supplies -- ["Available points remaining: "] = "", +-- ["Back Breaker"] = "", -- A_Classic_Fairytale:backstab +-- ["Back in the village, after telling the villagers about the threat..."] = "", -- A_Classic_Fairytale:united -- ["[Backspace]"] = "", +-- ["Backstab"] = "", -- A_Classic_Fairytale:backstab +-- ["Bad Team"] = "", -- User_Mission_-_The_Great_Escape -- ["Bamboo Thicket"] = "", -- ["Barrel Eater!"] = "", -- ["Barrel Launcher"] = "", +-- ["Baseballbat"] = "", -- Continental_supplies -- ["Bat balls at your enemies and|push them into the sea!"] = "", -- ["Bat your opponents through the|baskets and out of the map!"] = "", -- ["Bazooka Training"] = "", +-- ["Beep Loopers"] = "", -- A_Classic_Fairytale:queen -- ["Best laps per team: "] = "", -- ["Best Team Times: "] = "", +-- ["Beware, though! If you are slow, you die!"] = "", -- A_Classic_Fairytale:dragon +-- ["Biomechanic Team"] = "", -- A_Classic_Fairytale:family +-- ["Blender"] = "", -- A_Classic_Fairytale:family +-- ["Bloodpie"] = "", -- A_Classic_Fairytale:backstab +-- ["Bloodrocutor"] = "", -- A_Classic_Fairytale:shadow +-- ["Bloodsucker"] = "", -- A_Classic_Fairytale:shadow -- ["Bloody Rookies"] = "", -- 01#Boot_Camp, User_Mission_-_Dangerous_Ducklings, User_Mission_-_Diver, User_Mission_-_Spooky_Tree +-- ["Bone Jackson"] = "", -- A_Classic_Fairytale:backstab +-- ["Bonely"] = "", -- A_Classic_Fairytale:shadow -- ["Boom!"] = "", -- ["BOOM!"] = "", -- ["Boss defeated!"] = "", -- ["Boss Slayer!"] = "", +-- ["Brain Blower"] = "", -- A_Classic_Fairytale:journey +-- ["Brainiac"] = "", -- A_Classic_Fairytale:epil, A_Classic_Fairytale:first_blood, A_Classic_Fairytale:shadow +-- ["Brainila"] = "", -- A_Classic_Fairytale:united +-- ["Brain Stu"] = "", -- A_Classic_Fairytale:united +-- ["Brain Teaser"] = "", -- A_Classic_Fairytale:backstab +-- ["Brutal Lily"] = "", -- A_Classic_Fairytale:enemy, A_Classic_Fairytale:epil +-- ["Brutus"] = "", -- A_Classic_Fairytale:backstab -- ["Build a track and race."] = "", +-- ["Bullseye"] = "", -- A_Classic_Fairytale:dragon +-- ["But it proved to be no easy task!"] = "", -- A_Classic_Fairytale:dragon +-- ["But that's impossible!"] = "", -- A_Classic_Fairytale:backstab +-- ["But the ones alive are stronger in their heart!"] = "", -- A_Classic_Fairytale:enemy +-- ["But...we died!"] = "", -- A_Classic_Fairytale:backstab +-- ["But where can we go?"] = "", -- A_Classic_Fairytale:united +-- ["But why would they help us?"] = "", -- A_Classic_Fairytale:backstab +-- ["But you're cannibals. It's what you do."] = "", -- A_Classic_Fairytale:enemy +-- ["But you said you'd let her go!"] = "", -- A_Classic_Fairytale:journey +-- ["Call me Beep! Well, 'cause I'm such a nice...person!"] = "", -- A_Classic_Fairytale:family +-- ["Cannibals"] = "", -- A_Classic_Fairytale:enemy, A_Classic_Fairytale:epil, A_Classic_Fairytale:first_blood +-- ["Cannibal Sentry"] = "", -- A_Classic_Fairytale:journey +-- ["Cannibals?! You're the cannibals!"] = "", -- A_Classic_Fairytale:enemy -- ["CAPTURE THE FLAG"] = "", -- ["Careless"] = "", +-- ["Carol"] = "", -- A_Classic_Fairytale:family +-- ["CHALLENGE COMPLETE"] = "", -- User_Mission_-_RCPlane_Challenge -- ["Change Weapon"] = "", +-- ["Choose your side! If you want to join the strange man, walk up to him.|Otherwise, walk away from him. If you decide to att...nevermind..."] = "", -- A_Classic_Fairytale:shadow -- ["Clumsy"] = "", +-- ["Cluster Bomb MASTER!"] = "", -- Basic_Training_-_Cluster_Bomb +-- ["Cluster Bomb Training"] = "", -- Basic_Training_-_Cluster_Bomb -- ["Codename: Teamwork"] = "", +-- ["Collateral Damage"] = "", -- A_Classic_Fairytale:journey +-- ["Collateral Damage II"] = "", -- A_Classic_Fairytale:journey +-- ["Collect all the crates, but remember, our time in this life is limited!"] = "", -- A_Classic_Fairytale:first_blood +-- ["Collect or destroy all the health crates."] = "", -- User_Mission_-_RCPlane_Challenge +-- ["Collect the crate on the right.|Hint: Select the rope, [Up] or [Down] to aim, [Space] to fire, directional keys to move.|Ropes can be fired again in the air!"] = "", -- A_Classic_Fairytale:first_blood +-- ["Collect the crates within the time limit!|If you fail, you'll have to try again."] = "", -- A_Classic_Fairytale:first_blood +-- ["Come closer, so that your training may continue!"] = "", -- A_Classic_Fairytale:first_blood +-- ["Compete to use as few planes as possible!"] = "", -- User_Mission_-_RCPlane_Challenge -- ["Complete the track as fast as you can!"] = "", +-- ["COMPLETION TIME"] = "", -- User_Mission_-_Rope_Knock_Challenge +-- ["Configuration accepted."] = "", -- WxW -- ["Congratulations!"] = "", +-- ["Congratulations"] = "", -- Basic_Training_-_Rope +-- ["Congratulations! You needed only half of time|to eliminate all targets."] = "", -- Basic_Training_-_Cluster_Bomb +-- ["Congratulations! You've completed the Rope tutorial! |- Tutorial ends in 10 seconds!"] = "", -- Basic_Training_-_Rope -- ["Congratulations! You've eliminated all targets|within the allowed time frame."] = "", --Bazooka, Shotgun, SniperRifle +-- ["Continental supplies"] = "", -- Continental_supplies -- ["Control pillars to score points."] = "", +-- ["Corporationals"] = "", -- A_Classic_Fairytale:queen +-- ["Corpsemonger"] = "", -- A_Classic_Fairytale:shadow +-- ["Corpse Thrower"] = "", -- A_Classic_Fairytale:epil +-- ["Crates Left:"] = "", -- User_Mission_-_RCPlane_Challenge -- ["Cybernetic Empire"] = "", +-- ["Cyborg. It's what the aliens call themselves."] = "", -- A_Classic_Fairytale:enemy +-- ["Dahmer"] = "", -- A_Classic_Fairytale:backstab -- ["DAMMIT, ROOKIE!"] = "", -- ["DAMMIT, ROOKIE! GET OFF MY HEAD!"] = "", -- ["Dangerous Ducklings"] = "", -- ["Deadweight"] = "", +-- ["Defeat the cannibals"] = "", -- A_Classic_Fairytale:backstab +-- ["Defeat the cannibals!|"] = "", -- A_Classic_Fairytale:united +-- ["Defeat the cannibals!|Grenade hint: set the timer with [1-5], aim with [Up]/[Down] and hold [Space] to set power"] = "", -- A_Classic_Fairytale:shadow +-- ["Defeat the cyborgs!"] = "", -- A_Classic_Fairytale:enemy +-- ["Defend yourself!|Hint: You can get tips on using weapons by moving your mouse over them in the weapon selection menu"] = "", -- A_Classic_Fairytale:shadow -- ["Demolition is fun!"] = "", +-- ["Dense Cloud"] = "", -- A_Classic_Fairytale:backstab, A_Classic_Fairytale:dragon, A_Classic_Fairytale:enemy, A_Classic_Fairytale:epil, A_Classic_Fairytale:family, A_Classic_Fairytale:journey, A_Classic_Fairytale:queen, A_Classic_Fairytale:shadow, A_Classic_Fairytale:united +-- ["Dense Cloud must have already told them everything..."] = "", -- A_Classic_Fairytale:shadow -- ["Depleted Kamikaze!"] = "", +-- ["Destroy him, Leaks A Lot! He is responsible for the deaths of many of us!"] = "", -- A_Classic_Fairytale:first_blood -- ["Destroy invaders to score points."] = "", +-- ["Destroy the targets!|Hint: Select the Shoryuken and hit [Space]|P.S. You can use it mid-air."] = "", -- A_Classic_Fairytale:first_blood +-- ["Destroy the targets!|Hint: [Up], [Down] to aim, [Space] to shoot"] = "", -- A_Classic_Fairytale:first_blood +-- ["Did anyone follow you?"] = "", -- A_Classic_Fairytale:united +-- ["Did you see him coming?"] = "", -- A_Classic_Fairytale:shadow +-- ["Did you warn the village?"] = "", -- A_Classic_Fairytale:shadow +-- ["Die, die, die!"] = "", -- A_Classic_Fairytale:dragon +-- ["Disguise as a Rockhopper Penguin: [Swap place with a random enemy hog in the circle]"] = "", -- Continental_supplies +-- ["Dist: "] = "", -- Space_Invasion +-- ["Do not laugh, inexperienced one, for he speaks the truth!"] = "", -- A_Classic_Fairytale:backstab +-- ["Do not let his words fool you, young one! He will stab you in the back as soon as you turn away!"] = "", -- A_Classic_Fairytale:first_blood +-- ["Do the deed"] = "", -- A_Classic_Fairytale:first_blood -- ["Double Kill!"] = "", +-- ["DOUBLE KILL"] = "", -- Mutant +-- ["Do you have any idea how valuable grass is?"] = "", -- A_Classic_Fairytale:enemy +-- ["Do you think you're some kind of god?"] = "", -- A_Classic_Fairytale:enemy +-- ["Dragon's Lair"] = "", -- A_Classic_Fairytale:dragon +-- ["Drills"] = "", -- A_Classic_Fairytale:backstab -- ["Drone Hunter!"] = "", +-- ["Drop a bomb: [drop some heroic wind that will turn into a bomb on impact]"] = "", -- Continental_supplies -- ["Drowner"] = "", +-- ["Dude, all the plants are gone!"] = "", -- A_Classic_Fairytale:family +-- ["Dude, can you see Ramon and Spiky?"] = "", -- A_Classic_Fairytale:journey +-- ["Dude, that's so cool!"] = "", -- A_Classic_Fairytale:backstab +-- ["Dude, we really need a new shaman..."] = "", -- A_Classic_Fairytale:shadow +-- ["Dude, what's this place?!"] = "", -- A_Classic_Fairytale:dragon +-- ["Dude, where are we?"] = "", -- A_Classic_Fairytale:backstab +-- ["Dude, wow! I just had the weirdest high!"] = "", -- A_Classic_Fairytale:backstab +-- ["Duration"] = "", -- Continental_supplies +-- ["Dust storm: [Deals 20 damage to all enemies in the circle]"] = "", -- Continental_supplies -- ["Each turn you get 1-3 random weapons"] = "", -- ["Each turn you get one random weapon"] = "", +-- ["Eagle Eye"] = "", -- A_Classic_Fairytale:backstab +-- ["Eagle Eye: [Blink to the impact ~ one shot]"] = "", -- Continental_supplies +-- ["Ear Sniffer"] = "", -- A_Classic_Fairytale:backstab, A_Classic_Fairytale:epil +-- ["Elderbot"] = "", -- A_Classic_Fairytale:family +-- ["Elimate your captor."] = "", -- User_Mission_-_The_Great_Escape -- ["Eliminate all enemies"] = "", -- ["Eliminate all targets before your time runs out.|You have unlimited ammo for this mission."] = "", --Bazooka, Shotgun, SniperRifle +-- ["Eliminate enemy hogs and take their weapons."] = "", -- Highlander -- ["Eliminate Poison before the time runs out"] = "", -- ["Eliminate the Blue Team"] = "", -- ["Eliminate the enemy before the time runs out"] = "", -- User_Mission_-_Bamboo_Thicket, User_Mission_-_Newton_and_the_Hammock -- ["Eliminate the enemy hogs to win."] = "", -- ["Eliminate the enemy specialists."] = "", -- ["- Eliminate Unit 3378 |- Feeble Resistance must survive"] = "", +-- ["Elmo"] = "", -- A_Classic_Fairytale:dragon, A_Classic_Fairytale:family, A_Classic_Fairytale:queen -- ["Energetic Engineer"] = "", -- ["Enjoy the swim..."] = "", -- ["[Enter]"] = "", +-- ["Europe"] = "", -- Continental_supplies +-- [" ever done to you?!"] = "", -- A_Classic_Fairytale:backstab +-- ["Everyone knows this."] = "", -- A_Classic_Fairytale:enemy +-- ["Every single time!"] = "", -- A_Classic_Fairytale:dragon +-- ["Everything looks OK..."] = "", -- A_Classic_Fairytale:enemy +-- ["Exactly, man! That was my dream."] = "", -- A_Classic_Fairytale:backstab +-- ["Eye Chewer"] = "", -- A_Classic_Fairytale:journey +-- ["FAG"] = "", -- Mutant +-- ["Family Reunion"] = "", -- A_Classic_Fairytale:family -- ["Fastest lap: "] = "", -- ["Feeble Resistance"] = "", +-- ["Fell From Grace"] = "", -- A_Classic_Fairytale:backstab, A_Classic_Fairytale:dragon, A_Classic_Fairytale:enemy, A_Classic_Fairytale:epil, A_Classic_Fairytale:family, A_Classic_Fairytale:queen +-- ["Fell From Heaven"] = "", -- A_Classic_Fairytale:enemy, A_Classic_Fairytale:epil, A_Classic_Fairytale:family, A_Classic_Fairytale:first_blood, A_Classic_Fairytale:journey, A_Classic_Fairytale:queen +-- ["Fell From Heaven is the best! Fell From Heaven is the greatest!"] = "", -- A_Classic_Fairytale:family +-- ["Femur Lover"] = "", -- A_Classic_Fairytale:shadow +-- ["Fierce Competition!"] = "", -- Space_Invasion +-- ["Fiery Water"] = "", -- A_Classic_Fairytale:backstab, A_Classic_Fairytale:dragon, A_Classic_Fairytale:enemy, A_Classic_Fairytale:epil, A_Classic_Fairytale:family, A_Classic_Fairytale:queen, A_Classic_Fairytale:united +-- ["Find your tribe!|Cross the lake!"] = "", -- A_Classic_Fairytale:dragon +-- ["Finish your training|Hint: Animations can be skipped with the [Precise] key."] = "", -- A_Classic_Fairytale:first_blood -- ["Fire"] = "", +-- ["Fire a mine: [Does what it says ~ Cant be dropped close to an enemy ~ 1 sec]"] = "", -- Continental_supplies +-- ["First aid kits?!"] = "", -- A_Classic_Fairytale:united +-- ["First Blood"] = "", -- A_Classic_Fairytale:first_blood +-- ["FIRST BLOOD MUTATES"] = "", -- Mutant +-- ["First Steps"] = "", -- A_Classic_Fairytale:first_blood -- ["Flag captured!"] = "", -- ["Flag respawned!"] = "", -- ["Flag returned!"] = "", -- ["Flags, and their home base will be placed where each team ends their first turn."] = "", -- ["Flamer"] = "", +-- ["Flaming Worm"] = "", -- A_Classic_Fairytale:backstab +-- ["Flare: [fire up some bombs depending on hogs depending on hogs in the circle"] = "", -- Continental_supplies +-- ["Flesh for Brainz"] = "", -- A_Classic_Fairytale:journey +-- ["For improved features/stability, play 0.9.18+"] = "", -- WxW +-- ["Free Dense Cloud and continue the mission!"] = "", -- A_Classic_Fairytale:journey -- ["Friendly Fire!"] = "", -- ["fuel extended!"] = "", -- ["GAME BEGUN!!!"] = "", -- ["Game Modifiers: "] = "", -- ["GAME OVER!"] = "", -- ["Game Started!"] = "", +-- ["Game? Was this a game to you?!"] = "", -- A_Classic_Fairytale:enemy +-- ["GasBomb"] = "", -- Continental_supplies +-- ["Gas Gargler"] = "", -- A_Classic_Fairytale:queen +-- ["Get Dense Cloud out of the pit!"] = "", -- A_Classic_Fairytale:journey -- ["Get on over there and take him out!"] = "", +-- ["Get on the head of the mole"] = "", -- A_Classic_Fairytale:first_blood +-- ["Get out of there!"] = "", -- User_Mission_-_The_Great_Escape +-- ["Get that crate!"] = "", -- A_Classic_Fairytale:first_blood +-- ["Get the crate on the other side of the island!|"] = "", -- A_Classic_Fairytale:journey +-- ["Get to the target using your rope! |Controls: Left & Right to swing the rope - Up & Down to Contract and Expand!"] = "", -- Basic_Training_-_Rope +-- ["Get your teammates out of their natural prison and save the princess!|Hint: Drilling holes should solve everything.|Hint: It might be a good idea to place a girder before starting to drill. Just saying.|Hint: All your hedgehogs need to be above the marked height!|Hint: Leaks A Lot needs to get really close to the princess!"] = "", -- A_Classic_Fairytale:family +-- ["GG!"] = "", -- User_Mission_-_Rope_Knock_Challenge +-- ["Gimme Bones"] = "", -- A_Classic_Fairytale:backstab +-- ["Glark"] = "", -- A_Classic_Fairytale:shadow -- ["Goal"] = "", -- ["GO! GO! GO!"] = "", -- ["Good birdy......"] = "", +-- ["Good Dude"] = "", -- User_Mission_-_The_Great_Escape +-- ["Good idea, they'll never find us there!"] = "", -- A_Classic_Fairytale:united +-- ["Good luck...or else!"] = "", -- A_Classic_Fairytale:journey -- ["Good luck out there!"] = "", -- ["Good so far!"] = "", -- ["Good to go!"] = "", +-- ["Go on top of the flower"] = "", -- A_Classic_Fairytale:first_blood +-- ["Go, quick!"] = "", -- A_Classic_Fairytale:backstab +-- ["Gorkij"] = "", -- A_Classic_Fairytale:journey +-- ["Go surf!"] = "", -- WxW -- ["GOTCHA!"] = "", -- ["Grab Mines/Explosives"] = "", +-- ["Great choice, Steve! Mind if I call you that?"] = "", -- A_Classic_Fairytale:shadow +-- ["Great work! Now hit it with your Baseball Bat! |Tip: You can change weapon with 'Right Click'!"] = "", -- Basic_Training_-_Rope +-- ["Great! You will be contacted soon for assistance."] = "", -- A_Classic_Fairytale:shadow +-- ["Green lipstick bullet: [Is poisonous]"] = "", -- Continental_supplies +-- ["Greetings, "] = "", -- A_Classic_Fairytale:dragon +-- ["Greetings, cloudy one!"] = "", -- A_Classic_Fairytale:shadow +-- ["Grenade Training"] = "", -- Basic_Training_-_Grenade +-- ["Grenadiers"] = "", -- Basic_Training_-_Grenade +-- ["Guys, do you think there's more of them?"] = "", -- A_Classic_Fairytale:backstab +-- ["HAHA!"] = "", -- A_Classic_Fairytale:enemy +-- ["Haha!"] = "", -- A_Classic_Fairytale:united -- ["Hahahaha!"] = "", -- ["Haha, now THAT would be something!"] = "", +-- ["Hannibal"] = "", -- A_Classic_Fairytale:epil -- ["Hapless Hogs"] = "", -- [" Hapless Hogs left!"] = "", +-- [" HAS MUTATED\" )"] = "", -- +-- ["Hatless Jerry"] = "", -- A_Classic_Fairytale:queen +-- ["Have no illusions, your tribe is dead, indifferent of your choice."] = "", -- A_Classic_Fairytale:shadow +-- ["Have we ever attacked you first?"] = "", -- A_Classic_Fairytale:enemy -- ["Health crates extend your time."] = "", -- ["Heavy"] = "", +-- ["Heavy Cannfantry"] = "", -- A_Classic_Fairytale:united +-- ["Hedge-cogs"] = "", -- A_Classic_Fairytale:enemy +-- ["Hedgehog projectile: [fire your hog like a Sticky Bomb]"] = "", -- Continental_supplies -- ["Hedgewars-Basketball"] = "", -- ["Hedgewars-Knockball"] = "", +-- ["Hedgibal Lecter"] = "", -- A_Classic_Fairytale:backstab -- ["Heh, it's not that bad."] = "", +-- ["Hello again, "] = "", -- A_Classic_Fairytale:family +-- ["Help me, Leaks!"] = "", -- A_Classic_Fairytale:journey +-- ["Help me, please!!!"] = "", -- A_Classic_Fairytale:journey +-- ["Help me, please!"] = "", -- A_Classic_Fairytale:journey +-- ["He moves like an eagle in the sky."] = "", -- A_Classic_Fairytale:first_blood +-- ["He must be in the village already."] = "", -- A_Classic_Fairytale:journey +-- ["Here, let me help you!"] = "", -- A_Classic_Fairytale:backstab +-- ["Here, let me help you save her!"] = "", -- A_Classic_Fairytale:family +-- ["Here...pick your weapon!"] = "", -- A_Classic_Fairytale:first_blood +-- ["Hero Team"] = "", -- User_Mission_-_The_Great_Escape +-- ["He's so brave..."] = "", -- A_Classic_Fairytale:first_blood +-- ["He won't be selling us out anymore!"] = "", -- A_Classic_Fairytale:backstab +-- ["Hey, guys!"] = "", -- A_Classic_Fairytale:backstab +-- ["Hey guys!"] = "", -- A_Classic_Fairytale:united +-- ["Hey! This is cheating!"] = "", -- A_Classic_Fairytale:journey +-- ["HIGHLANDER"] = "", -- Highlander +-- ["Hightime"] = "", -- A_Classic_Fairytale:first_blood +-- ["Hint: Double Jump - Press [Backspace] twice"] = "", -- A_Classic_Fairytale:first_blood +-- ["Hint: Select the BlowTorch, aim and press [Fire]. Press [Fire] again to stop.|Don't blow up the crate."] = "", -- A_Classic_Fairytale:journey +-- ["Hint: Select the LowGravity and press [Fire]."] = "", -- A_Classic_Fairytale:journey +-- ["Hint: you might want to stay out of sight and take all the crates...|"] = "", -- A_Classic_Fairytale:journey +-- ["His arms are so strong!"] = "", -- A_Classic_Fairytale:first_blood -- ["Hit Combo!"] = "", -- ["Hmmm..."] = "", +-- ["Hmmm...actually...I didn't either."] = "", -- A_Classic_Fairytale:enemy +-- ["Hmmm, I'll have to find some way of moving him off this anti-portal surface..."] = "", -- portal +-- ["Hmmm...it's a draw. How unfortunate!"] = "", -- A_Classic_Fairytale:enemy +-- ["Hmmm...perhaps a little more time will help."] = "", -- A_Classic_Fairytale:first_blood +-- ["Hogminator"] = "", -- A_Classic_Fairytale:family +-- ["Hogs in sight!"] = "", -- Continental_supplies +-- ["HOLY SHIT!"] = "", -- Mutant +-- ["Honest Lee"] = "", -- A_Classic_Fairytale:enemy -- ["Hooray!"] = "", +-- ["Hostage Situation"] = "", -- A_Classic_Fairytale:family +-- ["How can I ever repay you for saving my life?"] = "", -- A_Classic_Fairytale:journey +-- ["How come in a village full of warriors, it's up to me to save it?"] = "", -- A_Classic_Fairytale:dragon +-- ["How difficult would you like it to be?"] = "", -- A_Classic_Fairytale:first_blood +-- ["HOW DO THEY KNOW WHERE WE ARE???"] = "", -- A_Classic_Fairytale:united +-- ["However, if you fail to do so, she dies a most violent death, just like your friend! Muahahaha!"] = "", -- A_Classic_Fairytale:journey +-- ["However, if you fail to do so, she dies a most violent death! Muahahaha!"] = "", -- A_Classic_Fairytale:journey +-- ["However, my mates don't agree with me on letting you go..."] = "", -- A_Classic_Fairytale:dragon +-- [" HP"] = "", -- Mutant -- ["Hunter"] = "", --Bazooka, Shotgun, SniperRifle +-- ["I believe there's more of them."] = "", -- A_Classic_Fairytale:backstab +-- ["I can see you have been training diligently."] = "", -- A_Classic_Fairytale:first_blood +-- ["I can't believe it worked!"] = "", -- A_Classic_Fairytale:shadow +-- ["I can't believe this!"] = "", -- A_Classic_Fairytale:enemy +-- ["I can't believe what I'm hearing!"] = "", -- A_Classic_Fairytale:backstab +-- ["I can't wait any more, I have to save myself!"] = "", -- A_Classic_Fairytale:shadow +-- ["I could just teleport myself there..."] = "", -- A_Classic_Fairytale:family +-- ["I'd better get going myself."] = "", -- A_Classic_Fairytale:journey +-- ["I didn't until about a month ago."] = "", -- A_Classic_Fairytale:enemy +-- ["I don't know how you did that.. But good work! |The next one should be easy as cake for you!"] = "", -- Basic_Training_-_Rope +-- ["I feel something...a place! They will arrive near the circles!"] = "", -- A_Classic_Fairytale:backstab +-- ["If only I had a way..."] = "", -- A_Classic_Fairytale:backstab +-- ["If only I were given a chance to explain my being here..."] = "", -- A_Classic_Fairytale:first_blood +-- ["I forgot that she's the daughter of the chief, too..."] = "", -- A_Classic_Fairytale:backstab +-- ["If they try coming here, they can have a taste of my delicious knuckles!"] = "", -- A_Classic_Fairytale:united +-- ["If you agree to provide the information we need, you will be spared!"] = "", -- A_Classic_Fairytale:shadow +-- ["If you can get that crate fast enough, your beloved \"princess\" may go free."] = "", -- A_Classic_Fairytale:journey +-- ["If you decide to help us, though, we will no longer need to find a new governor for the island."] = "", -- A_Classic_Fairytale:shadow +-- ["If you get stuck, use your Desert Eagle or restart the mission!|"] = "", -- A_Classic_Fairytale:journey +-- ["If you know what I mean..."] = "", -- A_Classic_Fairytale:shadow +-- ["If you say so..."] = "", -- A_Classic_Fairytale:shadow +-- ["If you wish to restart the course, hold [Precise] while your turn ends (e.g with Skip)"] = "", -- +-- ["I guess you'll have to kill them."] = "", -- A_Classic_Fairytale:dragon +-- ["I have come to make you an offering..."] = "", -- A_Classic_Fairytale:shadow +-- ["I have no idea where that mole disappeared...Can you see it?"] = "", -- A_Classic_Fairytale:shadow +-- ["I have to follow that alien."] = "", -- A_Classic_Fairytale:backstab +-- ["I have to get back to the village!"] = "", -- A_Classic_Fairytale:shadow +-- ["I hope you are prepared for a small challenge, young one."] = "", -- A_Classic_Fairytale:first_blood +-- ["I just don't want to sink to your level."] = "", -- A_Classic_Fairytale:backstab +-- ["I just found out that they have captured your princess!"] = "", -- A_Classic_Fairytale:family +-- ["I just wonder where Ramon and Spiky disappeared..."] = "", -- A_Classic_Fairytale:journey +-- ["I'll hold them off while you return to the village!"] = "", -- A_Classic_Fairytale:shadow +-- ["Imagine those targets are the wolves that killed your parents! Take your anger out on them!"] = "", -- A_Classic_Fairytale:first_blood +-- ["I'm...alive? How? Why?"] = "", -- A_Classic_Fairytale:backstab +-- ["I'm a ninja."] = "", -- A_Classic_Fairytale:dragon +-- ["I marked the place of their arrival. You're welcome!"] = "", -- A_Classic_Fairytale:backstab +-- ["I'm certain that this is a misunderstanding, fellow hedgehogs!"] = "", -- A_Classic_Fairytale:first_blood +-- ["I mean, none of you ceased to live."] = "", -- A_Classic_Fairytale:enemy +-- ["I'm getting old for this!"] = "", -- A_Classic_Fairytale:family +-- ["I'm getting thirsty..."] = "", -- A_Classic_Fairytale:family +-- ["I'm here to help you rescue her."] = "", -- A_Classic_Fairytale:family +-- ["I'm not sure about that!"] = "", -- A_Classic_Fairytale:united +-- ["Impressive...you are still dry as the corpse of a hawk after a week in the desert..."] = "", -- A_Classic_Fairytale:first_blood +-- ["I'm so scared!"] = "", -- A_Classic_Fairytale:united +-- ["Incredible..."] = "", -- A_Classic_Fairytale:shadow +-- ["I need to find the others!"] = "", -- A_Classic_Fairytale:backstab +-- ["I need to get to the other side of this island, fast!"] = "", -- A_Classic_Fairytale:journey +-- ["I need to move the tribe!"] = "", -- A_Classic_Fairytale:united +-- ["I need to prevent their arrival!"] = "", -- A_Classic_Fairytale:backstab +-- ["I need to warn the others."] = "", -- A_Classic_Fairytale:backstab +-- ["In fact, you are the only one that's been acting strangely."] = "", -- A_Classic_Fairytale:backstab +-- ["In order to get to the other side, you need to collect the crates first.|"] = "", -- A_Classic_Fairytale:dragon -- ["Instructor"] = "", -- 01#Boot_Camp, User_Mission_-_Dangerous_Ducklings +-- ["Interesting idea, haha!"] = "", -- A_Classic_Fairytale:enemy +-- ["Interesting! Last time you said you killed a cannibal!"] = "", -- A_Classic_Fairytale:backstab +-- ["In the meantime, take these and return to your \"friend\"!"] = "", -- A_Classic_Fairytale:shadow -- ["invaders destroyed"] = "", +-- ["Invasion"] = "", -- A_Classic_Fairytale:united +-- ["I saw it with my own eyes!"] = "", -- A_Classic_Fairytale:shadow +-- ["I see..."] = "", -- A_Classic_Fairytale:shadow +-- ["I see you have already taken the leap of faith."] = "", -- A_Classic_Fairytale:first_blood +-- ["I see you would like his punishment to be more...personal..."] = "", -- A_Classic_Fairytale:first_blood +-- ["I sense another wave of cannibals heading my way!"] = "", -- A_Classic_Fairytale:backstab +-- ["I sense another wave of cannibals heading our way!"] = "", -- A_Classic_Fairytale:backstab +-- ["I shouldn't have drunk that last pint."] = "", -- A_Classic_Fairytale:dragon +-- ["Is this place in my head?"] = "", -- A_Classic_Fairytale:dragon +-- ["It doesn't matter. I won't let that alien hurt my daughter!"] = "", -- A_Classic_Fairytale:dragon +-- ["I think we are safe here."] = "", -- A_Classic_Fairytale:backstab +-- ["I thought their shaman died when he tried our medicine!"] = "", -- A_Classic_Fairytale:shadow +-- ["It is called 'Hogs of Steel'."] = "", -- A_Classic_Fairytale:enemy +-- ["It is time to practice your fighting skills."] = "", -- A_Classic_Fairytale:first_blood +-- ["It must be a childhood trauma..."] = "", -- A_Classic_Fairytale:family +-- ["It must be the aliens!"] = "", -- A_Classic_Fairytale:backstab +-- ["It must be the aliens' deed."] = "", -- A_Classic_Fairytale:backstab +-- ["It must be the cyborgs again!"] = "", -- A_Classic_Fairytale:enemy +-- ["I told you, I just found them."] = "", -- A_Classic_Fairytale:backstab -- ["It's a good thing SUDDEN DEATH is 99 turns away..."] = "", +-- ["It's always up to women to clear up the mess men created!"] = "", -- A_Classic_Fairytale:dragon +-- ["It's a shame, I forgot how to do that!"] = "", -- A_Classic_Fairytale:family +-- ["It's impossible to communicate with the spirits without a shaman."] = "", -- A_Classic_Fairytale:shadow +-- ["It's over..."] = "", -- A_Classic_Fairytale:shadow +-- ["It's time you learned that your actions have consequences!"] = "", -- A_Classic_Fairytale:journey +-- ["It's worth more than wood!"] = "", -- A_Classic_Fairytale:enemy +-- ["It wants our brains!"] = "", -- A_Classic_Fairytale:shadow +-- ["It was not a dream, unwise one!"] = "", -- A_Classic_Fairytale:backstab +-- ["I've seen this before. They just appear out of thin air."] = "", -- A_Classic_Fairytale:united +-- ["I want to play a game..."] = "", -- A_Classic_Fairytale:journey +-- ["I want to see how it handles this!"] = "", -- A_Classic_Fairytale:backstab +-- ["I wish to help you, "] = "", -- A_Classic_Fairytale:dragon +-- ["I wonder where Dense Cloud is..."] = "", -- A_Classic_Fairytale:journey, A_Classic_Fairytale:shadow +-- ["I wonder why I'm so angry all the time..."] = "", -- A_Classic_Fairytale:family +-- ["I won't let you kill her!"] = "", -- A_Classic_Fairytale:journey +-- ["Jack"] = "", -- A_Classic_Fairytale:dragon, A_Classic_Fairytale:family, A_Classic_Fairytale:queen +-- ["Jeremiah"] = "", -- A_Classic_Fairytale:dragon +-- ["John"] = "", -- A_Classic_Fairytale:journey +-- ["Judas"] = "", -- A_Classic_Fairytale:backstab -- ["Jumping is disabled"] = "", +-- ["Just kidding, none of you have died!"] = "", -- A_Classic_Fairytale:enemy +-- ["Just on a walk."] = "", -- A_Classic_Fairytale:united +-- ["Just wait till I get my hands on that trauma! ARGH!"] = "", -- A_Classic_Fairytale:family -- ["Kamikaze Expert!"] = "", -- ["Keep it up!"] = "", +-- ["Kerguelen"] = "", -- Continental_supplies -- ["Killing spree!"] = "", +-- ["KILL IT!"] = "", -- A_Classic_Fairytale:first_blood -- ["KILLS"] = "", +-- ["Kill the aliens!"] = "", -- A_Classic_Fairytale:dragon +-- ["Kill the cannibal!"] = "", -- A_Classic_Fairytale:first_blood +-- ["Kill the traitor...or spare his life!|Kill him or press [Precise]!"] = "", -- A_Classic_Fairytale:backstab -- ["Last Target!"] = "", +-- ["Leader"] = "", -- A_Classic_Fairytale:enemy +-- ["Leaderbot"] = "", -- A_Classic_Fairytale:queen +-- ["Leaks A Lot"] = "", -- A_Classic_Fairytale:backstab, A_Classic_Fairytale:dragon, A_Classic_Fairytale:enemy, A_Classic_Fairytale:epil, A_Classic_Fairytale:family, A_Classic_Fairytale:first_blood, A_Classic_Fairytale:journey, A_Classic_Fairytale:queen, A_Classic_Fairytale:shadow, A_Classic_Fairytale:united +-- ["Leaks A Lot, depressed for killing his loved one, failed to save the village..."] = "", -- A_Classic_Fairytale:journey +-- ["Leaks A Lot gave his life for his tribe! He should have survived!"] = "", -- A_Classic_Fairytale:first_blood +-- ["Leaks A Lot must survive!"] = "", -- A_Classic_Fairytale:journey +-- ["Led Heart"] = "", -- A_Classic_Fairytale:queen +-- ["Lee"] = "", -- A_Classic_Fairytale:dragon, A_Classic_Fairytale:family, A_Classic_Fairytale:queen -- ["[Left Shift]"] = "", +-- ["Let a Continent provide your weapons!"] = "", -- Continental_supplies +-- ["Let me test your skills a little, will you?"] = "", -- A_Classic_Fairytale:journey +-- ["Let's go home!"] = "", -- A_Classic_Fairytale:journey +-- ["Let's head back to the village!"] = "", -- A_Classic_Fairytale:shadow +-- ["Let's see what your comrade does now!"] = "", -- A_Classic_Fairytale:journey +-- ["Let's show those cannibals what we're made of!"] = "", -- A_Classic_Fairytale:backstab +-- ["Let them have a taste of my fury!"] = "", -- A_Classic_Fairytale:backstab +-- ["Let us help, too!"] = "", -- A_Classic_Fairytale:backstab +-- ["Light Cannfantry"] = "", -- A_Classic_Fairytale:united -- ["Listen up, maggot!!"] = "", +-- ["Little did they know that this hunt will mark them forever..."] = "", -- A_Classic_Fairytale:shadow -- ["Lively Lifeguard"] = "", +-- ["Lonely Cries: [Rise the water if no hog is in the circle and deal 1 damage to all hogs]"] = "", -- Continental_supplies +-- ["Look, I had no choice!"] = "", -- A_Classic_Fairytale:backstab +-- ["Look out! There's more of them!"] = "", -- A_Classic_Fairytale:backstab +-- ["Look out! We're surrounded by cannibals!"] = "", -- A_Classic_Fairytale:enemy +-- ["Looks like the whole world is falling apart!"] = "", -- A_Classic_Fairytale:enemy +-- ["Luckily, I've managed to snatch some of them."] = "", -- A_Classic_Fairytale:united +-- ["LUDICROUS KILL"] = "", -- Mutant +-- ["May the spirits aid you in all your quests!"] = "", -- A_Classic_Fairytale:backstab +-- ["Medicine: [Fire some exploding medicine that will heal all hogs effected by the explosion]"] = "", -- Continental_supplies +-- ["MEGA KILL"] = "", -- Mutant +-- ["Meiwes"] = "", -- A_Classic_Fairytale:backstab +-- ["Mindy"] = "", -- A_Classic_Fairytale:united -- ["Mine Deployer"] = "", -- ["Mine Eater!"] = "", -- ["|- 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 SUCCESS"] = "", -- ["MISSION SUCCESSFUL"] = "", -- User_Mission_-_Diver, User_Mission_-_Spooky_Tree, User_Mission_-_Teamwork +-- ["Molotov"] = "", -- Continental_supplies +-- ["MONSTER KILL"] = "", -- Mutant +-- ["More Natives"] = "", -- A_Classic_Fairytale:epil -- ["Movement: [Up], [Down], [Left], [Right]"] = "", -- ["Multi-shot!"] = "", +-- ["Muriel"] = "", -- A_Classic_Fairytale:backstab, A_Classic_Fairytale:dragon, A_Classic_Fairytale:family, A_Classic_Fairytale:queen +-- ["Muscle Dissolver"] = "", -- A_Classic_Fairytale:shadow +-- ["-------"] = "", -- Mutant +-- ["Nade Boy"] = "", -- Basic_Training_-_Grenade +-- ["Name"] = "", -- A_Classic_Fairytale:queen -- ["Nameless Heroes"] = "", +-- ["Nancy Screw"] = "", -- A_Classic_Fairytale:enemy, A_Classic_Fairytale:queen +-- ["Napalm rocket: [Fire a bomb with napalm!]"] = "", -- Continental_supplies +-- ["Natives"] = "", -- A_Classic_Fairytale:backstab, A_Classic_Fairytale:dragon, A_Classic_Fairytale:enemy, A_Classic_Fairytale:epil, A_Classic_Fairytale:family, A_Classic_Fairytale:first_blood, A_Classic_Fairytale:journey, A_Classic_Fairytale:queen, A_Classic_Fairytale:shadow, A_Classic_Fairytale:united -- ["New Barrels Per Turn"] = "", -- ["NEW CLAN RECORD: "] = "", -- ["NEW fastest lap: "] = "", -- ["New Mines Per Turn"] = "", -- ["NEW RACE RECORD: "] = "", -- ["Newton's Hammock"] = "", +-- ["Nicely done, meatbags!"] = "", -- A_Classic_Fairytale:enemy +-- ["Nice work, "] = "", -- A_Classic_Fairytale:dragon +-- ["Nice work!"] = "", -- A_Classic_Fairytale:enemy +-- ["Nilarian"] = "", -- A_Classic_Fairytale:queen +-- ["No, I came back to help you out..."] = "", -- A_Classic_Fairytale:shadow +-- ["No...I wonder where they disappeared?!"] = "", -- A_Classic_Fairytale:journey +-- ["Nom-Nom"] = "", -- A_Classic_Fairytale:journey +-- ["NomNom"] = "", -- A_Classic_Fairytale:united +-- ["Nope. It was one fast mole, that's for sure."] = "", -- A_Classic_Fairytale:shadow +-- ["No! Please, help me!"] = "", -- A_Classic_Fairytale:journey +-- ["NORMAL"] = "", -- Continental_supplies +-- ["North America"] = "", -- Continental_supplies +-- ["Not all hogs are born equal."] = "", -- Highlander -- ["NOT ENOUGH WAYPOINTS"] = "", +-- ["Not now, Fiery Water!"] = "", -- A_Classic_Fairytale:backstab -- ["Not So Friendly Match"] = "", -- Basketball, Knockball +-- ["Not you again! My head still hurts from last time!"] = "", -- A_Classic_Fairytale:shadow +-- ["No, we made sure of that!"] = "", -- A_Classic_Fairytale:united +-- ["Now find the next target! |Tip: Normally you lose health by falling down, so be careful!"] = "", -- Basic_Training_-_Rope +-- ["No! What have I done?! What have YOU done?!"] = "", -- A_Classic_Fairytale:journey +-- ["No. Where did he come from?"] = "", -- A_Classic_Fairytale:shadow +-- ["Now how do I get on the other side?!"] = "", -- A_Classic_Fairytale:dragon +-- ["No. You and the rest of the tribe are safer there!"] = "", -- A_Classic_Fairytale:backstab +-- ["Obliterate them!|Hint: You might want to take cover..."] = "", -- A_Classic_Fairytale:shadow +-- ["Obstacle course"] = "", -- A_Classic_Fairytale:dragon +-- ["Of course I have to save her. What did I expect?!"] = "", -- A_Classic_Fairytale:family +-- ["OH, COME ON!"] = "", -- A_Classic_Fairytale:journey +-- ["Oh, my!"] = "", -- A_Classic_Fairytale:first_blood +-- ["Oh, my! This is even more entertaining than I've expected!"] = "", -- A_Classic_Fairytale:backstab -- ["Oh no! Just try again!"] = "", -- User_Mission_-_Diver, User_Mission_-_Spooky_Tree, User_Mission_-_Teamwork +-- ["Oh no, not "] = "", -- A_Classic_Fairytale:backstab, A_Classic_Fairytale:united -- ["Oh no! Time's up! Just try again."] = "", --Bazooka, Shotgun, SniperRifle +-- ["Oh no! You failed! Just try again."] = "", -- Basic_Training_-_Cluster_Bomb +-- ["Oh, silly me! I forgot that I'm the shaman."] = "", -- A_Classic_Fairytale:backstab +-- ["Olive"] = "", -- A_Classic_Fairytale:united +-- ["Omnivore"] = "", -- A_Classic_Fairytale:first_blood +-- ["Once upon a time, on an island with great natural resources, lived two tribes in heated conflict..."] = "", -- A_Classic_Fairytale:first_blood +-- ["ONE HOG PER TEAM! KILLING EXCESS HEDGES"] = "", -- Mutant +-- ["One tribe was peaceful, spending their time hunting and training, enjoying the small pleasures of life..."] = "", -- A_Classic_Fairytale:first_blood +-- ["Oops...I dropped them."] = "", -- A_Classic_Fairytale:united +-- ["Open that crate and we will continue!"] = "", -- A_Classic_Fairytale:first_blood -- ["Operation Diver"] = "", -- ["Opposing Team: "] = "", +-- ["Orlando Boom!"] = "", -- A_Classic_Fairytale:queen +-- ["Ouch!"] = "", -- User_Mission_-_Rope_Knock_Challenge +-- ["Our tribe, our beautiful island!"] = "", -- A_Classic_Fairytale:enemy +-- ["Parachute"] = "", -- Continental_supplies -- ["Pathetic Hog #%d"] = "", -- ["Pathetic Resistance"] = "", -- User_Mission_-_Bamboo_Thicket, User_Mission_-_Newton_and_the_Hammock +-- ["Perfect! Now try to get the next crate without hurting yourself!"] = "", -- A_Classic_Fairytale:first_blood -- ["Per-Hog Ammo"] = "", +-- ["- Per team weapons|- 9 weaponschemes|- Unique new weapons| |Select continent first round with the Weapon Menu or by ([switch/tab]=Increase,[presice/left shift]=Decrease)"] = "", -- +-- ["Pfew! That was close!"] = "", -- A_Classic_Fairytale:shadow +-- ["Piñata bullet: [Contains some sweet candy!]"] = "", -- Continental_supplies +-- ["Pings left:"] = "", -- Space_Invasion -- ["Place more waypoints using [ENTER]"] = "", -- ["Place more waypoints using the 'Air Attack' weapon."] = "", +-- ["Planes Used:"] = "", -- User_Mission_-_RCPlane_Challenge +-- ["Planes Used"] = "", -- User_Mission_-_RCPlane_Challenge +-- ["Play with me!"] = "", -- A_Classic_Fairytale:shadow +-- ["Please place the way-point further from the waterline."] = "", -- Racer +-- ["Please place the way-point in the open, within the map boundaries."] = "", -- Racer +-- ["Please, stop releasing your \"smoke signals\"!"] = "", -- A_Classic_Fairytale:shadow +-- ["Point Blank Combo!"] = "", -- Space_Invasion -- ["points"] = "", -- Control, CTF_Blizzard, Basic_Training_-_Bazooka, Basic_Training_-_Shotgun, Basic_Training_-_Sniper_Rifle -- ["Poison"] = "", +-- ["Portal hint: one goes to the destination, and one is the entrance.|"] = "", -- A_Classic_Fairytale:dragon +-- ["Portal mission"] = "", -- portal -- ["Power Remaining"] = "", -- ["Prepare yourself"] = "", +-- ["Press [Enter] to accept this configuration."] = "", -- WxW +-- ["Press [Left] or [Right] to move around, [Enter] to jump"] = "", -- A_Classic_Fairytale:first_blood -- ["Press [Precise] to skip intro"] = "", +-- ["Private Novak"] = "", -- Basic_Training_-_Cluster_Bomb +-- ["Protect yourselves!|Grenade hint: set the timer with [1-5], aim with [Up]/[Down] and hold [Space] to set power"] = "", -- A_Classic_Fairytale:shadow -- ["Race complexity limit reached."] = "", -- ["RACER"] = "", +-- ["Rachel"] = "", -- A_Classic_Fairytale:dragon, A_Classic_Fairytale:family, A_Classic_Fairytale:queen +-- ["Radar Ping"] = "", -- Space_Invasion +-- ["Raging Buffalo"] = "", -- A_Classic_Fairytale:backstab, A_Classic_Fairytale:dragon, A_Classic_Fairytale:enemy, A_Classic_Fairytale:epil, A_Classic_Fairytale:family, A_Classic_Fairytale:queen, A_Classic_Fairytale:united +-- ["Ramon"] = "", -- A_Classic_Fairytale:enemy, A_Classic_Fairytale:epil, A_Classic_Fairytale:family, A_Classic_Fairytale:queen, A_Classic_Fairytale:shadow +-- ["RC PLANE TRAINING"] = "", -- User_Mission_-_RCPlane_Challenge +-- ["Really?! You thought you could harm me with your little toys?"] = "", -- A_Classic_Fairytale:shadow +-- ["Regurgitator"] = "", -- A_Classic_Fairytale:backstab +-- ["Reinforcements"] = "", -- A_Classic_Fairytale:backstab +-- ["Remember: The rope only bend around objects, |if it doesn't hit anything it's always stright!"] = "", -- Basic_Training_-_Rope +-- ["Remember this, pathetic animal: when the day comes, you will regret your blind loyalty!"] = "", -- A_Classic_Fairytale:shadow -- [" - 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 to Leaks A Lot! If you get stuck, press [Precise] to try again!"] = "", -- A_Classic_Fairytale:shadow +-- ["Righteous Beard"] = "", -- A_Classic_Fairytale:backstab, A_Classic_Fairytale:dragon, A_Classic_Fairytale:enemy, A_Classic_Fairytale:epil, A_Classic_Fairytale:family, A_Classic_Fairytale:first_blood, A_Classic_Fairytale:queen, A_Classic_Fairytale:united +-- ["ROPE-KNOCKING"] = "", -- User_Mission_-_Rope_Knock_Challenge +-- ["Rope Training"] = "", -- Basic_Training_-_Rope +-- ["Rot Molester"] = "", -- A_Classic_Fairytale:shadow -- ["Round Limit:"] = "", -- ["Round Limit"] = "", -- ["Rounds Complete: "] = "", -- ["Rounds Complete"] = "", -- ["RULES OF THE GAME [Press ESC to view]"] = "", +-- ["Rusty Joe"] = "", -- A_Classic_Fairytale:queen -- ["s|"] = "", +-- ["Sabotage: [Sabotage all hogs in the circle and deal ~10 dmg]"] = "", -- Continental_supplies +-- ["Salivaslurper"] = "", -- A_Classic_Fairytale:united +-- ["Salvation"] = "", -- A_Classic_Fairytale:family +-- ["Salvation was one step closer now..."] = "", -- A_Classic_Fairytale:dragon -- ["Save as many hapless hogs as possible!"] = "", +-- ["Save Fell From Heaven!"] = "", -- A_Classic_Fairytale:journey +-- ["Save Leaks A Lot!|Hint: The Switch utility might be of help to you."] = "", -- A_Classic_Fairytale:shadow +-- ["Save the princess! All your hogs must survive!|Hint: Kill the cyborgs first! Use the ammo very carefully!|Hint: You might want to spare a girder for cover!"] = "", -- A_Classic_Fairytale:family +-- ["Save the princess by collecting the crate in under 12 turns!"] = "", -- A_Classic_Fairytale:journey +-- ["Scalp Muncher"] = "", -- A_Classic_Fairytale:backstab -- ["SCORE"] = "", +-- ["Score"] = "", -- Mutant +-- ["Scream from a Walrus: [Deal 20 damage + 10% of your hogs health to all hogs around you and get half back]"] = "", -- Continental_supplies -- ["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 +-- ["Seduction"] = "", -- Continental_supplies +-- ["Seems like every time you take a \"walk\", the enemy find us!"] = "", -- A_Classic_Fairytale:backstab +-- ["See that crate farther on the right?"] = "", -- A_Classic_Fairytale:first_blood -- ["See ya!"] = "", +-- ["Segmentation Paul"] = "", -- A_Classic_Fairytale:dragon +-- ["Select continent!"] = "", -- Continental_supplies +-- ["Select difficulty: [Left] - easier or [Right] - harder"] = "", -- A_Classic_Fairytale:first_blood -- ["selected!"] = "", -- ["s"] = "", -- GaudyRacer, Space_Invasion +-- ["... share your beauty with the world every morning, my princess!"] = "", -- A_Classic_Fairytale:journey +-- ["She's behind that tall thingy."] = "", -- A_Classic_Fairytale:family -- ["Shield boosted! +30 power"] = "", -- ["Shield Depleted"] = "", -- ["Shield is fully recharged!"] = "", @@ -162,59 +646,338 @@ -- ["Shield OFF:"] = "", -- ["Shield ON:"] = "", -- ["Shield Seeker!"] = "", +-- ["Shotgun"] = "", -- Continental_supplies -- ["Shotgun Team"] = "", -- ["Shotgun Training"] = "", -- ["shots remaining."] = "", -- ["Silly"] = "", -- ["Sinky"] = "", +-- ["Sirius Lee"] = "", -- A_Classic_Fairytale:enemy -- ["%s is out and Team %d|scored a penalty!| |Score:"] = "", -- Basketball, Knockball -- ["%s is out and Team %d|scored a point!| |Score:"] = "", -- Basketball, Knockball +-- ["Slippery"] = "", -- A_Classic_Fairytale:journey +-- ["Smith 0.97"] = "", -- A_Classic_Fairytale:enemy +-- ["Smith 0.98"] = "", -- A_Classic_Fairytale:enemy +-- ["Smith 0.99a"] = "", -- A_Classic_Fairytale:enemy +-- ["Smith 0.99b"] = "", -- A_Classic_Fairytale:enemy +-- ["Smith 0.99f"] = "", -- A_Classic_Fairytale:enemy +-- ["Smith 1.0"] = "", -- A_Classic_Fairytale:enemy +-- ["Sniper Rifle"] = "", -- Continental_supplies +-- ["Sniper!"] = "", -- Space_Invasion -- ["Sniper Training"] = "", -- ["Sniperz"] = "", +-- ["So humiliating..."] = "", -- A_Classic_Fairytale:first_blood +-- ["South America"] = "", -- Continental_supplies +-- ["So? What will it be?"] = "", -- A_Classic_Fairytale:shadow +-- ["Spawn the crate, and attack!"] = "", -- WxW +-- ["Special Weapons:"] = "", -- Continental_supplies +-- ["Spiky Cheese"] = "", -- A_Classic_Fairytale:enemy, A_Classic_Fairytale:epil, A_Classic_Fairytale:family, A_Classic_Fairytale:queen, A_Classic_Fairytale:shadow +-- ["Spleenlover"] = "", -- A_Classic_Fairytale:united -- ["Sponge"] = "", -- ["Spooky Tree"] = "", -- ["STATUS UPDATE"] = "", -- GaudyRacer, Space_Invasion +-- ["Steel Eye"] = "", -- A_Classic_Fairytale:queen +-- ["Step By Step"] = "", -- A_Classic_Fairytale:first_blood +-- ["Steve"] = "", -- A_Classic_Fairytale:dragon, A_Classic_Fairytale:family, A_Classic_Fairytale:queen +-- ["Sticky Mine"] = "", -- Continental_supplies +-- ["Stronglings"] = "", -- A_Classic_Fairytale:shadow +-- ["Structure"] = "", -- Continental_supplies +-- ["Super Weapons"] = "", -- WxW +-- ["Surf Before Crate"] = "", -- WxW +-- ["Surfer! +15 points!"] = "", -- Space_Invasion +-- ["Surfer!"] = "", -- WxW +-- ["Survive!|Hint: Cinematics can be skipped with the [Precise] key."] = "", -- A_Classic_Fairytale:shadow +-- ["Swing, Leaks A Lot, on the wings of the wind!"] = "", -- A_Classic_Fairytale:first_blood -- ["Switched to "] = "", +-- ["Syntax Errol"] = "", -- A_Classic_Fairytale:dragon +-- ["Talk about mixed signals..."] = "", -- A_Classic_Fairytale:dragon -- ["Team %d: "] = "", -- ["Team Scores"] = "", -- Control, Space_Invasion +-- ["Teleport hint: just use the mouse to select the destination!"] = "", -- A_Classic_Fairytale:dragon +-- ["Thanks!"] = "", -- A_Classic_Fairytale:family +-- ["Thank you, my hero!"] = "", -- A_Classic_Fairytale:family +-- ["Thank you, oh, thank you, Leaks A Lot!"] = "", -- A_Classic_Fairytale:journey +-- ["Thank you, oh, thank you, my heroes!"] = "", -- A_Classic_Fairytale:journey +-- ["That is, indeed, very weird..."] = "", -- A_Classic_Fairytale:united +-- ["That makes it almost invaluable!"] = "", -- A_Classic_Fairytale:enemy +-- ["That ought to show them!"] = "", -- A_Classic_Fairytale:backstab +-- ["That's for my father!"] = "", -- A_Classic_Fairytale:backstab +-- ["That shaman sure knows what he's doing!"] = "", -- A_Classic_Fairytale:shadow -- ["That Sinking Feeling"] = "", +-- ["That's not our problem!"] = "", -- A_Classic_Fairytale:enemy +-- ["That's typical of you!"] = "", -- A_Classic_Fairytale:family +-- ["That was just mean!"] = "", -- A_Classic_Fairytale:backstab, A_Classic_Fairytale:united -- ["That was pointless."] = "", +-- ["The answer is...entertaintment. You'll see what I mean."] = "", -- A_Classic_Fairytale:backstab +-- ["The anti-portal zone is all over the floor, and I have nothing to kill him...Droping something could hurt him enough to kill him..."] = "", -- portal +-- ["The Bull's Eye"] = "", -- A_Classic_Fairytale:first_blood +-- ["The caves are well hidden, they won't find us there!"] = "", -- A_Classic_Fairytale:united +-- ["The Crate Frenzy"] = "", -- A_Classic_Fairytale:first_blood +-- ["The Dilemma"] = "", -- A_Classic_Fairytale:shadow +-- ["The enemy can't move but it might be a good idea to stay out of sight!|"] = "", -- A_Classic_Fairytale:dragon -- ["The enemy is hiding out on yonder ducky!"] = "", +-- ["The Enemy Of My Enemy"] = "", -- A_Classic_Fairytale:enemy +-- ["The First Blood"] = "", -- A_Classic_Fairytale:first_blood +-- ["The First Encounter"] = "", -- A_Classic_Fairytale:shadow -- ["The flag will respawn next round."] = "", +-- ["The food bites back"] = "", -- A_Classic_Fairytale:backstab +-- ["The giant umbrella from the last crate should help break the fall."] = "", -- A_Classic_Fairytale:first_blood +-- ["The Great Escape"] = "", -- User_Mission_-_The_Great_Escape +-- ["The guardian"] = "", -- A_Classic_Fairytale:shadow +-- ["The Individualist"] = "", -- A_Classic_Fairytale:shadow +-- ["Their buildings were very primitive back then, even for an uncivilised island."] = "", -- A_Classic_Fairytale:united +-- ["The Journey Back"] = "", -- A_Classic_Fairytale:journey +-- ["The Leap of Faith"] = "", -- A_Classic_Fairytale:first_blood +-- ["The Moonwalk"] = "", -- A_Classic_Fairytale:journey -- ["The Nameless One"] = "", +-- ["The next one is pretty hard! |Tip: You have to do multiple swings!"] = "", -- Basic_Training_-_Rope +-- ["Then how do they keep appearing?"] = "", -- A_Classic_Fairytale:shadow +-- ["The other one were all cannibals, spending their time eating the organs of fellow hedgehogs..."] = "", -- A_Classic_Fairytale:first_blood +-- ["There must be a spy among us!"] = "", -- A_Classic_Fairytale:backstab +-- ["There's more of them? When did they become so hungry?"] = "", -- A_Classic_Fairytale:backstab, A_Classic_Fairytale:united +-- ["There's nothing more satisfying for me than seeing you share your beauty with the world every morning, my princess!"] = "", -- A_Classic_Fairytale:journey +-- ["There's nothing more satisfying to us than seeing you share your beauty..."] = "", -- A_Classic_Fairytale:journey +-- ["There's nothing more satisfying to us than seeing you share your beauty with the world every morning, my princess!"] = "", -- A_Classic_Fairytale:journey +-- ["The Rising"] = "", -- A_Classic_Fairytale:first_blood +-- ["The Savior"] = "", -- A_Classic_Fairytale:journey +-- ["These primitive people are so funny!"] = "", -- A_Classic_Fairytale:backstab +-- ["The Shadow Falls"] = "", -- A_Classic_Fairytale:shadow +-- ["The Showdown"] = "", -- A_Classic_Fairytale:shadow +-- ["The Slaughter"] = "", -- A_Classic_Fairytale:dragon, A_Classic_Fairytale:first_blood -- ["THE SPECIALISTS"] = "", +-- ["The spirits of the ancerstors are surely pleased, Leaks A Lot."] = "", -- A_Classic_Fairytale:first_blood +-- ["The Torment"] = "", -- A_Classic_Fairytale:first_blood +-- ["The Tunnel Maker"] = "", -- A_Classic_Fairytale:journey +-- ["The Ultimate Weapon"] = "", -- A_Classic_Fairytale:first_blood +-- ["The Union"] = "", -- A_Classic_Fairytale:enemy +-- ["The village, unprepared, was destroyed by the cyborgs..."] = "", -- A_Classic_Fairytale:journey +-- ["The walk of Fame"] = "", -- A_Classic_Fairytale:shadow +-- ["The wasted youth"] = "", -- A_Classic_Fairytale:first_blood +-- ["The weapon in that last crate was bestowed upon us by the ancients!"] = "", -- A_Classic_Fairytale:first_blood +-- ["The what?!"] = "", -- A_Classic_Fairytale:dragon +-- ["The wind whispers that you are ready to become familiar with tools, now..."] = "", -- A_Classic_Fairytale:first_blood +-- ["They are all waiting back in the village, haha."] = "", -- A_Classic_Fairytale:enemy +-- ["They Call Me Bullseye!"] = "", -- Space_Invasion +-- ["They have weapons we've never seen before!"] = "", -- A_Classic_Fairytale:united +-- ["They keep appearing like this. It's weird!"] = "", -- A_Classic_Fairytale:united +-- ["They killed "] = "", -- A_Classic_Fairytale:backstab, A_Classic_Fairytale:united +-- ["They must be trying to weaken us!"] = "", -- A_Classic_Fairytale:enemy +-- ["They never learn"] = "", -- A_Classic_Fairytale:journey +-- ["They told us to wear these clothes. They said that this is the newest trend."] = "", -- A_Classic_Fairytale:enemy +-- ["They've been manipulating us all this time!"] = "", -- A_Classic_Fairytale:enemy +-- ["Thighlicker"] = "", -- A_Classic_Fairytale:united +-- ["This is it! It's time to make Fell From Heaven fall for me..."] = "", -- A_Classic_Fairytale:first_blood +-- ["This island is the only place left on Earth with grass on it!"] = "", -- A_Classic_Fairytale:enemy +-- ["This is typical!"] = "", -- A_Classic_Fairytale:dragon +-- ["This must be some kind of sorcery!"] = "", -- A_Classic_Fairytale:shadow +-- ["This must be the caves!"] = "", -- A_Classic_Fairytale:backstab -- ["This one's tricky."] = "", -- ["This rain is really something..."] = "", +-- ["This will be fun!"] = "", -- A_Classic_Fairytale:enemy +-- ["Those aliens are destroying the island!"] = "", -- A_Classic_Fairytale:family -- ["TIME: "] = "", -- ["Timed Kamikaze!"] = "", -- ["Time Extended!"] = "", -- ["Time Extension"] = "", +-- ["Tip: The rope physics are different than in the real world, |use it to your advantage!"] = "", -- Basic_Training_-_Rope -- ["Toggle Shield"] = "", +-- ["To help you, of course!"] = "", -- A_Classic_Fairytale:journey +-- ["To place a girder, select it, use [Left] and [Right] to select angle and length, place with [Left Click]"] = "", -- A_Classic_Fairytale:shadow +-- ["Torn Muscle"] = "", -- A_Classic_Fairytale:journey +-- [" to save the village."] = "", -- A_Classic_Fairytale:dragon +-- ["To the caves..."] = "", -- A_Classic_Fairytale:united -- ["Toxic Team"] = "", -- User_Mission_-_Diver, User_Mission_-_Spooky_Tree, User_Mission_-_Teamwork -- ["TRACK COMPLETED"] = "", -- ["TRACK FAILED!"] = "", +-- ["training"] = "", -- portal +-- ["Traitors"] = "", -- A_Classic_Fairytale:epil +-- ["Tribe"] = "", -- A_Classic_Fairytale:backstab -- ["TrophyRace"] = "", +-- ["Try to protect the chief! You won't lose if he dies, but it is advised that he survives."] = "", -- A_Classic_Fairytale:united -- ["T_T"] = "", -- ["Tumbling Time Extended!"] = "", +-- ["Turns until Sudden Death: "] = "", -- A_Classic_Fairytale:dragon +-- [" turns until Sudden Death! Better hurry!"] = "", -- A_Classic_Fairytale:dragon -- ["Turn Time"] = "", +-- ["Two little hogs cooperating, getting past obstacles..."] = "", -- A_Classic_Fairytale:journey +-- ["Uhm...I met one of them and took his weapons."] = "", -- A_Classic_Fairytale:shadow +-- ["Uhmm...ok no."] = "", -- A_Classic_Fairytale:enemy +-- ["ULTRA KILL"] = "", -- Mutant +-- ["Under Construction"] = "", -- A_Classic_Fairytale:shadow +-- ["Unexpected Igor"] = "", -- A_Classic_Fairytale:dragon -- ["Unit"] = "", +-- ["Unit 0x0007"] = "", -- A_Classic_Fairytale:family +-- ["Unit 334a$7%;.*"] = "", -- A_Classic_Fairytale:backstab, A_Classic_Fairytale:dragon, A_Classic_Fairytale:enemy, A_Classic_Fairytale:family, A_Classic_Fairytale:queen, A_Classic_Fairytale:united -- ["Unit 3378"] = "", -- ["Unit 835"] = "", +-- ["United We Stand"] = "", -- A_Classic_Fairytale:united -- ["Unlimited Attacks"] = "", +-- ["Unlucky Sods"] = "", -- User_Mission_-_Rope_Knock_Challenge -- ["Unstoppable!"] = "", +-- ["Unsuspecting Louts"] = "", -- User_Mission_-_Rope_Knock_Challenge +-- ["[Up], [Down] to aim, [Space] to shoot!"] = "", -- A_Classic_Fairytale:first_blood +-- ["Use it wisely!"] = "", -- A_Classic_Fairytale:dragon +-- ["Use it with precaution!"] = "", -- A_Classic_Fairytale:first_blood -- ["User Challenge"] = "", +-- ["Use the parachute ([Space] while in air)"] = "", -- +-- ["Use the portal gun to get to the next crate, then use the new gun to get to the final destination!|"] = "", -- A_Classic_Fairytale:dragon +-- ["Use the rope to get on the head of the mole, young one!"] = "", -- A_Classic_Fairytale:first_blood +-- ["Use the rope to knock your enemies to their doom."] = "", -- User_Mission_-_Rope_Knock_Challenge -- ["Use your rope to get from start to finish as fast as you can!"] = "", +-- ["Vedgies"] = "", -- A_Classic_Fairytale:journey +-- ["Vegan Jack"] = "", -- A_Classic_Fairytale:enemy +-- ["Victory!"] = "", -- Basic_Training_-_Rope -- ["Victory for the "] = "", -- CTF_Blizzard, Capture_the_Flag +-- ["Violence is not the answer to your problems!"] = "", -- A_Classic_Fairytale:first_blood +-- ["Walls Left"] = "", -- WxW +-- ["Walls Required"] = "", -- WxW +-- ["WALL TO WALL"] = "", -- WxW +-- ["Wannabe Flyboys"] = "", -- User_Mission_-_RCPlane_Challenge +-- ["Wannabe Shoppsta"] = "", -- User_Mission_-_Rope_Knock_Challenge +-- ["Watch your steps, young one!"] = "", -- A_Classic_Fairytale:first_blood -- ["Waypoint placed."] = "", -- ["Way-Points Remaining"] = "", +-- ["Weaklings"] = "", -- A_Classic_Fairytale:shadow +-- ["We all know what happens when you get frightened..."] = "", -- A_Classic_Fairytale:first_blood -- ["Weapons Reset"] = "", +-- ["Weapons reset."] = "", -- Highlander +-- ["We are indeed."] = "", -- A_Classic_Fairytale:backstab +-- ["We can't defeat them!"] = "", -- A_Classic_Fairytale:shadow +-- ["We can't hold them up much longer!"] = "", -- A_Classic_Fairytale:united +-- ["We can't let them take over our little island!"] = "", -- A_Classic_Fairytale:enemy +-- ["We have no time to waste..."] = "", -- A_Classic_Fairytale:journey +-- ["We have nowhere else to live!"] = "", -- A_Classic_Fairytale:enemy +-- ["We have to protect the village!"] = "", -- A_Classic_Fairytale:united +-- ["We have to unite and defeat those cylergs!"] = "", -- A_Classic_Fairytale:enemy +-- ["Welcome, Leaks A Lot!"] = "", -- A_Classic_Fairytale:journey -- ["Well done."] = "", +-- ["We'll give you a problem then!"] = "", -- A_Classic_Fairytale:enemy +-- ["We'll spare your life for now!"] = "", -- A_Classic_Fairytale:backstab +-- ["Well, that was a waste of time."] = "", -- A_Classic_Fairytale:dragon +-- ["Well, well! Isn't that the cutest thing you've ever seen?"] = "", -- A_Classic_Fairytale:journey +-- ["Well, yes. This was a cyborg television show."] = "", -- A_Classic_Fairytale:enemy +-- ["We made sure noone followed us!"] = "", -- A_Classic_Fairytale:backstab +-- ["We need to move!"] = "", -- A_Classic_Fairytale:united +-- ["We need to prevent their arrival!"] = "", -- A_Classic_Fairytale:backstab +-- ["We need to warn the village."] = "", -- A_Classic_Fairytale:shadow +-- ["We should head back to the village now."] = "", -- A_Classic_Fairytale:shadow +-- ["We were trying to save her and we got lost."] = "", -- A_Classic_Fairytale:family +-- ["We won't let you hurt her!"] = "", -- A_Classic_Fairytale:journey +-- ["What?! A cannibal? Here? There is no time to waste! Come, you are prepared."] = "", -- A_Classic_Fairytale:first_blood +-- ["What a douche!"] = "", -- A_Classic_Fairytale:enemy +-- ["What am I gonna...eat, yo?"] = "", -- A_Classic_Fairytale:family +-- ["What are you doing at a distance so great, young one?"] = "", -- A_Classic_Fairytale:first_blood +-- ["What are you doing? Let her go!"] = "", -- A_Classic_Fairytale:journey +-- ["What a ride!"] = "", -- A_Classic_Fairytale:shadow +-- ["What a strange cave!"] = "", -- A_Classic_Fairytale:dragon +-- ["What a strange feeling!"] = "", -- A_Classic_Fairytale:backstab +-- ["What do my faulty eyes observe? A spy!"] = "", -- A_Classic_Fairytale:first_blood +-- ["Whatever floats your boat..."] = "", -- A_Classic_Fairytale:shadow +-- [" What !! For all of this struggle i just win some ... TIME o0"] = "", -- portal +-- ["What has "] = "", -- A_Classic_Fairytale:backstab +-- ["What? Here? How did they find us?!"] = "", -- A_Classic_Fairytale:backstab +-- ["What is this place?"] = "", -- A_Classic_Fairytale:dragon, A_Classic_Fairytale:enemy +-- ["What shall we do with the traitor?"] = "", -- A_Classic_Fairytale:backstab +-- ["WHAT?! You're the ones attacking us!"] = "", -- A_Classic_Fairytale:enemy +-- ["When?"] = "", -- A_Classic_Fairytale:enemy +-- ["When I find it..."] = "", -- A_Classic_Fairytale:dragon +-- ["Where are all these crates coming from?!"] = "", -- A_Classic_Fairytale:shadow +-- ["Where are they?!"] = "", -- A_Classic_Fairytale:backstab +-- ["Where did that alien run?"] = "", -- A_Classic_Fairytale:dragon +-- ["Where did you get the exploding apples?"] = "", -- A_Classic_Fairytale:shadow +-- ["Where did you get the exploding apples and the magic bow that shoots many arrows?"] = "", -- A_Classic_Fairytale:shadow +-- ["Where did you get the magic bow that shoots many arrows?"] = "", -- A_Classic_Fairytale:shadow +-- ["Where did you get the weapons in the forest, Dense Cloud?"] = "", -- A_Classic_Fairytale:backstab +-- ["Where do you get that?!"] = "", -- A_Classic_Fairytale:enemy +-- ["Where have you been?!"] = "", -- A_Classic_Fairytale:backstab +-- ["Where have you been?"] = "", -- A_Classic_Fairytale:united +-- ["? Why?"] = "", -- A_Classic_Fairytale:backstab +-- ["Why "] = "", -- A_Classic_Fairytale:backstab +-- ["! Why?!"] = "", -- A_Classic_Fairytale:backstab, A_Classic_Fairytale:united +-- ["Why are you doing this?"] = "", -- A_Classic_Fairytale:journey +-- ["Why are you helping us, uhm...?"] = "", -- A_Classic_Fairytale:family +-- ["Why can't he just let her go?!"] = "", -- A_Classic_Fairytale:family +-- ["Why do men keep hurting me?"] = "", -- A_Classic_Fairytale:first_blood +-- ["Why do you not like me?"] = "", -- A_Classic_Fairytale:shadow +-- ["Why do you want to take over our island?"] = "", -- A_Classic_Fairytale:enemy +-- ["Why me?!"] = "", -- A_Classic_Fairytale:backstab +-- ["Why would they do this?"] = "", -- A_Classic_Fairytale:backstab +-- ["- Will Get 1-3 random weapons"] = "", -- Continental_supplies +-- ["- Will refresh Parachute each turn."] = "", -- Continental_supplies +-- ["- Will refresh portalgun each turn."] = "", -- Continental_supplies -- ["Will this ever end?"] = "", +-- ["WINNER IS "] = "", -- Mutant -- ["WINNING TIME: "] = "", +-- ["Wise Oak"] = "", -- A_Classic_Fairytale:backstab, A_Classic_Fairytale:dragon, A_Classic_Fairytale:enemy, A_Classic_Fairytale:epil, A_Classic_Fairytale:family, A_Classic_Fairytale:queen +-- ["With Dense Cloud on the land of shadows, I'm the village's only hope..."] = "", -- A_Classic_Fairytale:journey +-- ["With the rest of the tribe gone, it was up to "] = "", -- A_Classic_Fairytale:dragon +-- ["Worry not, for it is a peaceful animal! There is no reason to be afraid..."] = "", -- A_Classic_Fairytale:first_blood +-- ["Wow, what a dream!"] = "", -- A_Classic_Fairytale:backstab +-- ["Y3K1337"] = "", -- A_Classic_Fairytale:journey, A_Classic_Fairytale:shadow +-- ["Yay, we won!"] = "", -- A_Classic_Fairytale:enemy +-- ["Y Chwiliad"] = "", -- A_Classic_Fairytale:dragon +-- ["Yeah...I think it's a 'he', lol."] = "", -- A_Classic_Fairytale:shadow +-- ["Yeah, sure! I died. Hillarious!"] = "", -- A_Classic_Fairytale:backstab +-- ["Yeah, take that!"] = "", -- A_Classic_Fairytale:dragon +-- ["Yeah? Watcha gonna do? Cry?"] = "", -- A_Classic_Fairytale:journey +-- ["Yes!"] = "", -- A_Classic_Fairytale:enemy +-- ["Yes, yeees! You are now ready to enter the real world!"] = "", -- A_Classic_Fairytale:first_blood +-- ["Yo, dude, we're here, too!"] = "", -- A_Classic_Fairytale:family +-- ["You are given the chance to turn your life around..."] = "", -- A_Classic_Fairytale:shadow +-- ["You are playing with our lives here!"] = "", -- A_Classic_Fairytale:enemy +-- ["! You bastards!"] = "", -- A_Classic_Fairytale:backstab, A_Classic_Fairytale:united +-- ["You bear impressive skills, "] = "", -- A_Classic_Fairytale:dragon +-- ["You can't fire a portal on the blue surface"] = "", -- portal +-- ["You couldn't possibly believe that after refusing my offer I'd just let you go!"] = "", -- A_Classic_Fairytale:journey -- ["You'd almost swear the water was rising!"] = "", +-- ["You'd better watch your steps..."] = "", -- A_Classic_Fairytale:journey +-- ["You did not make it in time, try again!"] = "", -- Basic_Training_-_Rope +-- ["You have 7 turns until the next wave arrives.|Make sure the arriving cannibals are greeted appropriately!|If the hog dies, the cause is lost.|Hint: you might want to use some mines..."] = "", -- A_Classic_Fairytale:backstab +-- ["You have "] = "", -- A_Classic_Fairytale:dragon +-- ["You have been giving us out to the enemy, haven't you!"] = "", -- A_Classic_Fairytale:backstab +-- ["You have been respawned, at your last checkpoint!"] = "", -- Basic_Training_-_Rope +-- ["You have been respawned, be more carefull next time!"] = "", -- Basic_Training_-_Rope +-- ["You have chosen the perfect moment to leave."] = "", -- A_Classic_Fairytale:united +-- ["You have failed to complete your task, young one!"] = "", -- A_Classic_Fairytale:journey +-- ["You have failed to save the tribe!"] = "", -- A_Classic_Fairytale:backstab +-- ["You have finally figured it out!"] = "", -- A_Classic_Fairytale:enemy +-- ["You have kidnapped our whole tribe!"] = "", -- A_Classic_Fairytale:enemy +-- ["You have killed an innocent hedgehog!"] = "", -- A_Classic_Fairytale:backstab +-- ["You have proven yourself worthy to see our most ancient secret!"] = "", -- A_Classic_Fairytale:first_blood +-- ["You have proven yourselves worthy!"] = "", -- A_Classic_Fairytale:enemy -- ["You have SCORED!!"] = "", +-- ["You have to destroy 12 targets in 180 seconds"] = "", -- Basic_Training_-_Cluster_Bomb +-- ["You have won the game by proving true cooperative skills!"] = "", -- A_Classic_Fairytale:enemy +-- ["You just appeared out of thin air!"] = "", -- A_Classic_Fairytale:backstab +-- ["You just committed suicide..."] = "", -- A_Classic_Fairytale:shadow +-- ["You killed my father, you monster!"] = "", -- A_Classic_Fairytale:backstab +-- ["You know...taking a stroll."] = "", -- A_Classic_Fairytale:backstab +-- ["You know what? I don't even regret anything!"] = "", -- A_Classic_Fairytale:backstab +-- ["You'll see what I mean!"] = "", -- A_Classic_Fairytale:enemy +-- ["You may only attack from a rope!"] = "", -- WxW +-- ["You meatbags are pretty slow, you know!"] = "", -- A_Classic_Fairytale:enemy +-- ["You might want to find a way to instantly kill arriving cannibals!"] = "", -- A_Classic_Fairytale:backstab +-- ["Young one, you are telling us that they can instantly change location without a shaman?"] = "", -- A_Classic_Fairytale:united +-- ["You probably know what to do next..."] = "", -- A_Classic_Fairytale:first_blood +-- ["Your deaths will be avenged, cannibals!"] = "", -- A_Classic_Fairytale:enemy +-- ["Your death will not be in vain, Dense Cloud!"] = "", -- A_Classic_Fairytale:shadow +-- ["You're...alive!? But we saw you die!"] = "", -- A_Classic_Fairytale:backstab +-- ["You're a pathetic liar!"] = "", -- A_Classic_Fairytale:backstab +-- ["You're funny!"] = "", -- A_Classic_Fairytale:journey +-- ["You're getting pretty good! |Tip: When you shorten you rope you move faster! |and when you lengthen it you move slower"] = "", -- Basic_Training_-_Rope +-- ["You're pathetic! You are not worthy of my attention..."] = "", -- A_Classic_Fairytale:shadow +-- ["You're probably wondering why I bought you back..."] = "", -- A_Classic_Fairytale:backstab +-- ["You're terrorizing the forest...We won't catch anything like this!"] = "", -- A_Classic_Fairytale:shadow +-- ["Your hogs must survive!"] = "", -- A_Classic_Fairytale:journey +-- ["Your movement skills will be evaluated now."] = "", -- A_Classic_Fairytale:first_blood -- ["You saved"] = "", +-- ["You've been assaulting us, we have been just defending ourselves!"] = "", -- A_Classic_Fairytale:enemy -- ["You've failed. Try again."] = "", -- ["You've reached the goal!| |Time: "] = "", +-- ["You will be avenged!"] = "", -- A_Classic_Fairytale:shadow +-- ["You won't believe what happened to me!"] = "", -- A_Classic_Fairytale:backstab +-- ["Yuck! I bet they'll keep worshipping her even after I save the village!"] = "", -- A_Classic_Fairytale:family +-- ["Zealandia"] = "", -- Continental_supplies -- ["'Zooka Team"] = "", +-- ["Zork"] = "", -- A_Classic_Fairytale:dragon, A_Classic_Fairytale:family, A_Classic_Fairytale:queen } diff -r 3331b30e4ef1 -r 88fde28bbda6 share/hedgewars/Data/Locale/sv.lua --- a/share/hedgewars/Data/Locale/sv.lua Sun Oct 21 01:28:33 2012 +0400 +++ b/share/hedgewars/Data/Locale/sv.lua Sat Nov 03 00:34:35 2012 +0400 @@ -2,158 +2,642 @@ -- ["..."] = "", [":("] = ":(", ["!!!"] = "!!!", +-- ["011101000"] = "", -- A_Classic_Fairytale:dragon +-- ["011101001"] = "", -- A_Classic_Fairytale:backstab, A_Classic_Fairytale:dragon, A_Classic_Fairytale:enemy, A_Classic_Fairytale:family, A_Classic_Fairytale:journey, A_Classic_Fairytale:queen, A_Classic_Fairytale:shadow, A_Classic_Fairytale:united +-- ["30 minutes later..."] = "", -- A_Classic_Fairytale:shadow +-- ["About a month ago, a cyborg came and told us that you're the cannibals!"] = "", -- A_Classic_Fairytale:enemy -- ["Accuracy Bonus!"] = "", +-- ["Ace"] = "", -- User_Mission_-_RCPlane_Challenge, User_Mission_-_Rope_Knock_Challenge -- ["Achievement Unlocked"] = "", -- User_Mission_-_Bamboo_Thicket, User_Mission_-_That_Sinking_Feeling, Tumbler +-- ["A Classic Fairytale"] = "", -- A_Classic_Fairytale:first_blood +-- ["???"] = "", -- A_Classic_Fairytale:backstab +-- ["Actually, you aren't worthy of life! Take this..."] = "", -- A_Classic_Fairytale:shadow +-- ["A cy-what?"] = "", -- A_Classic_Fairytale:enemy +-- ["Adventurous"] = "", -- A_Classic_Fairytale:journey +-- ["Africa"] = "", -- Continental_supplies +-- ["After Leaks A Lot betrayed his tribe, he joined the cannibals..."] = "", -- A_Classic_Fairytale:first_blood +-- ["After the shock caused by the enemy spy, Leaks A Lot and Dense Cloud went hunting to relax."] = "", -- A_Classic_Fairytale:shadow +-- ["Again with the 'cannibals' thing!"] = "", -- A_Classic_Fairytale:enemy +-- ["a Hedgewars challenge"] = "", -- User_Mission_-_RCPlane_Challenge, User_Mission_-_Rope_Knock_Challenge -- ["a Hedgewars mini-game"] = "", -- Space_Invasion, The_Specialists ["Aiming Practice"] = "Siktesövning", --Bazooka, Shotgun, SniperRifle +-- ["A leap in a leap"] = "", -- A_Classic_Fairytale:first_blood +-- ["A little gift from the cyborgs"] = "", -- A_Classic_Fairytale:shadow +-- ["All gone...everything!"] = "", -- A_Classic_Fairytale:enemy +-- ["All right, we just need to get to the other side of the island!"] = "", -- A_Classic_Fairytale:journey +-- ["All walls touched!"] = "", -- WxW -- ["Ammo"] = "", -- ["Ammo Depleted!"] = "", -- ["ammo extended!"] = "", -- ["Ammo is reset at the end of your turn."] = "", -- ["Ammo Maniac!"] = "", +-- ["And how am I alive?!"] = "", -- A_Classic_Fairytale:enemy +-- ["And so happenned that Leaks A Lot failed to complete the challenge! He landed, pressured by shame..."] = "", -- A_Classic_Fairytale:first_blood +-- ["And so it began..."] = "", -- A_Classic_Fairytale:first_blood +-- ["...and so the cyborgs took over the world..."] = "", -- A_Classic_Fairytale:shadow +-- ["And so they discovered that cyborgs weren't invulnerable..."] = "", -- A_Classic_Fairytale:journey +-- ["And where's all the weed?"] = "", -- A_Classic_Fairytale:dragon +-- ["And you believed me? Oh, god, that's cute!"] = "", -- A_Classic_Fairytale:journey +-- ["Anno 1032: [The explosion will make a strong push ~ wide range, wont affect hogs close to the target]"] = "", -- Continental_supplies +-- ["Antarctica"] = "", -- Continental_supplies +-- ["Are we there yet?"] = "", -- A_Classic_Fairytale:shadow +-- ["Are you accusing me of something?"] = "", -- A_Classic_Fairytale:backstab +-- ["Are you saying that many of us have died for your entertainment?"] = "", -- A_Classic_Fairytale:enemy +-- ["Artur Detour"] = "", -- A_Classic_Fairytale:queen +-- ["As a reward for your performance, here's some new technology!"] = "", -- A_Classic_Fairytale:dragon +-- ["a shoppa minigame"] = "", -- WxW +-- ["Asia"] = "", -- Continental_supplies +-- ["Assault Team"] = "", -- A_Classic_Fairytale:backstab +-- ["As the ammo is sparse, you might want to reuse ropes while mid-air.|"] = "", -- A_Classic_Fairytale:dragon +-- ["As the challenge was completed, Leaks A Lot set foot on the ground..."] = "", -- A_Classic_Fairytale:first_blood +-- ["As you can see, there is no way to get on the other side!"] = "", -- A_Classic_Fairytale:dragon +-- ["Attack From Rope"] = "", -- WxW +-- ["Australia"] = "", -- Continental_supplies -- ["Available points remaining: "] = "", +-- ["Back Breaker"] = "", -- A_Classic_Fairytale:backstab +-- ["Back in the village, after telling the villagers about the threat..."] = "", -- A_Classic_Fairytale:united -- ["[Backspace]"] = "", +-- ["Backstab"] = "", -- A_Classic_Fairytale:backstab +-- ["Bad Team"] = "", -- User_Mission_-_The_Great_Escape -- ["Bamboo Thicket"] = "", -- ["Barrel Eater!"] = "", -- ["Barrel Launcher"] = "", +-- ["Baseballbat"] = "", -- Continental_supplies ["Bat balls at your enemies and|push them into the sea!"] = "SlÃ¥ bollar mot dina fiender|och slÃ¥ ner dem i havet", ["Bat your opponents through the|baskets and out of the map!"] = "SlÃ¥ ner dina motstÃ¥ndare i|korgarna och ut ur kartan!", ["Bazooka Training"] = "Bazookaträning", +-- ["Beep Loopers"] = "", -- A_Classic_Fairytale:queen ["Best laps per team: "] = "Bästa varv per lag: ", -- ["Best Team Times: "] = "", +-- ["Beware, though! If you are slow, you die!"] = "", -- A_Classic_Fairytale:dragon +-- ["Biomechanic Team"] = "", -- A_Classic_Fairytale:family +-- ["Blender"] = "", -- A_Classic_Fairytale:family +-- ["Bloodpie"] = "", -- A_Classic_Fairytale:backstab +-- ["Bloodrocutor"] = "", -- A_Classic_Fairytale:shadow +-- ["Bloodsucker"] = "", -- A_Classic_Fairytale:shadow ["Bloody Rookies"] = "Blodiga gröngölingar", -- 01#Boot_Camp, User_Mission_-_Dangerous_Ducklings, User_Mission_-_Diver, User_Mission_-_Spooky_Tree +-- ["Bone Jackson"] = "", -- A_Classic_Fairytale:backstab +-- ["Bonely"] = "", -- A_Classic_Fairytale:shadow -- ["BOOM!"] = "", ["Boom!"] = "Bom!", -- ["Boss defeated!"] = "", -- ["Boss Slayer!"] = "", +-- ["Brain Blower"] = "", -- A_Classic_Fairytale:journey +-- ["Brainiac"] = "", -- A_Classic_Fairytale:epil, A_Classic_Fairytale:first_blood, A_Classic_Fairytale:shadow +-- ["Brainila"] = "", -- A_Classic_Fairytale:united +-- ["Brain Stu"] = "", -- A_Classic_Fairytale:united +-- ["Brain Teaser"] = "", -- A_Classic_Fairytale:backstab +-- ["Brutal Lily"] = "", -- A_Classic_Fairytale:enemy, A_Classic_Fairytale:epil +-- ["Brutus"] = "", -- A_Classic_Fairytale:backstab -- ["Build a track and race."] = "", +-- ["Bullseye"] = "", -- A_Classic_Fairytale:dragon +-- ["But it proved to be no easy task!"] = "", -- A_Classic_Fairytale:dragon +-- ["But that's impossible!"] = "", -- A_Classic_Fairytale:backstab +-- ["But the ones alive are stronger in their heart!"] = "", -- A_Classic_Fairytale:enemy +-- ["But...we died!"] = "", -- A_Classic_Fairytale:backstab +-- ["But where can we go?"] = "", -- A_Classic_Fairytale:united +-- ["But why would they help us?"] = "", -- A_Classic_Fairytale:backstab +-- ["But you're cannibals. It's what you do."] = "", -- A_Classic_Fairytale:enemy +-- ["But you said you'd let her go!"] = "", -- A_Classic_Fairytale:journey +-- ["Call me Beep! Well, 'cause I'm such a nice...person!"] = "", -- A_Classic_Fairytale:family +-- ["Cannibals"] = "", -- A_Classic_Fairytale:enemy, A_Classic_Fairytale:epil, A_Classic_Fairytale:first_blood +-- ["Cannibal Sentry"] = "", -- A_Classic_Fairytale:journey +-- ["Cannibals?! You're the cannibals!"] = "", -- A_Classic_Fairytale:enemy ["CAPTURE THE FLAG"] = "CAPTURE THE FLAG", -- ["Careless"] = "", +-- ["Carol"] = "", -- A_Classic_Fairytale:family +-- ["CHALLENGE COMPLETE"] = "", -- User_Mission_-_RCPlane_Challenge -- ["Change Weapon"] = "", +-- ["Choose your side! If you want to join the strange man, walk up to him.|Otherwise, walk away from him. If you decide to att...nevermind..."] = "", -- A_Classic_Fairytale:shadow -- ["Clumsy"] = "", +-- ["Cluster Bomb MASTER!"] = "", -- Basic_Training_-_Cluster_Bomb +-- ["Cluster Bomb Training"] = "", -- Basic_Training_-_Cluster_Bomb ["Codename: Teamwork"] = "Kodnamn: Lagarbete", +-- ["Collateral Damage"] = "", -- A_Classic_Fairytale:journey +-- ["Collateral Damage II"] = "", -- A_Classic_Fairytale:journey +-- ["Collect all the crates, but remember, our time in this life is limited!"] = "", -- A_Classic_Fairytale:first_blood +-- ["Collect or destroy all the health crates."] = "", -- User_Mission_-_RCPlane_Challenge +-- ["Collect the crate on the right.|Hint: Select the rope, [Up] or [Down] to aim, [Space] to fire, directional keys to move.|Ropes can be fired again in the air!"] = "", -- A_Classic_Fairytale:first_blood +-- ["Collect the crates within the time limit!|If you fail, you'll have to try again."] = "", -- A_Classic_Fairytale:first_blood +-- ["Come closer, so that your training may continue!"] = "", -- A_Classic_Fairytale:first_blood +-- ["Compete to use as few planes as possible!"] = "", -- User_Mission_-_RCPlane_Challenge -- ["Complete the track as fast as you can!"] = "", +-- ["COMPLETION TIME"] = "", -- User_Mission_-_Rope_Knock_Challenge +-- ["Configuration accepted."] = "", -- WxW +-- ["Congratulations"] = "", -- Basic_Training_-_Rope ["Congratulations!"] = "Grattis!", +-- ["Congratulations! You needed only half of time|to eliminate all targets."] = "", -- Basic_Training_-_Cluster_Bomb +-- ["Congratulations! You've completed the Rope tutorial! |- Tutorial ends in 10 seconds!"] = "", -- Basic_Training_-_Rope ["Congratulations! You've eliminated all targets|within the allowed time frame."] = "Grattis! Du har förstört alla mÃ¥len inom den|tillÃ¥tna tidsramen.", --Bazooka, Shotgun, SniperRifle +-- ["Continental supplies"] = "", -- Continental_supplies ["Control pillars to score points."] = "Kontrollera pelare för att ta poäng", +-- ["Corporationals"] = "", -- A_Classic_Fairytale:queen +-- ["Corpsemonger"] = "", -- A_Classic_Fairytale:shadow +-- ["Corpse Thrower"] = "", -- A_Classic_Fairytale:epil +-- ["Crates Left:"] = "", -- User_Mission_-_RCPlane_Challenge ["Cybernetic Empire"] = "Robotriket", +-- ["Cyborg. It's what the aliens call themselves."] = "", -- A_Classic_Fairytale:enemy +-- ["Dahmer"] = "", -- A_Classic_Fairytale:backstab ["DAMMIT, ROOKIE! GET OFF MY HEAD!"] = "SATAN, GRÖNGÖLING! SLUTA TJATA!", ["DAMMIT, ROOKIE!"] = "SATAN, GRÖNGÖLING!", ["Dangerous Ducklings"] = "Farliga ankungar", -- ["Deadweight"] = "", +-- ["Defeat the cannibals"] = "", -- A_Classic_Fairytale:backstab +-- ["Defeat the cannibals!|"] = "", -- A_Classic_Fairytale:united +-- ["Defeat the cannibals!|Grenade hint: set the timer with [1-5], aim with [Up]/[Down] and hold [Space] to set power"] = "", -- A_Classic_Fairytale:shadow +-- ["Defeat the cyborgs!"] = "", -- A_Classic_Fairytale:enemy +-- ["Defend yourself!|Hint: You can get tips on using weapons by moving your mouse over them in the weapon selection menu"] = "", -- A_Classic_Fairytale:shadow -- ["Demolition is fun!"] = "", +-- ["Dense Cloud"] = "", -- A_Classic_Fairytale:backstab, A_Classic_Fairytale:dragon, A_Classic_Fairytale:enemy, A_Classic_Fairytale:epil, A_Classic_Fairytale:family, A_Classic_Fairytale:journey, A_Classic_Fairytale:queen, A_Classic_Fairytale:shadow, A_Classic_Fairytale:united +-- ["Dense Cloud must have already told them everything..."] = "", -- A_Classic_Fairytale:shadow -- ["Depleted Kamikaze!"] = "", +-- ["Destroy him, Leaks A Lot! He is responsible for the deaths of many of us!"] = "", -- A_Classic_Fairytale:first_blood -- ["Destroy invaders to score points."] = "", +-- ["Destroy the targets!|Hint: Select the Shoryuken and hit [Space]|P.S. You can use it mid-air."] = "", -- A_Classic_Fairytale:first_blood +-- ["Destroy the targets!|Hint: [Up], [Down] to aim, [Space] to shoot"] = "", -- A_Classic_Fairytale:first_blood +-- ["Did anyone follow you?"] = "", -- A_Classic_Fairytale:united +-- ["Did you see him coming?"] = "", -- A_Classic_Fairytale:shadow +-- ["Did you warn the village?"] = "", -- A_Classic_Fairytale:shadow +-- ["Die, die, die!"] = "", -- A_Classic_Fairytale:dragon +-- ["Disguise as a Rockhopper Penguin: [Swap place with a random enemy hog in the circle]"] = "", -- Continental_supplies +-- ["Dist: "] = "", -- Space_Invasion +-- ["Do not laugh, inexperienced one, for he speaks the truth!"] = "", -- A_Classic_Fairytale:backstab +-- ["Do not let his words fool you, young one! He will stab you in the back as soon as you turn away!"] = "", -- A_Classic_Fairytale:first_blood +-- ["Do the deed"] = "", -- A_Classic_Fairytale:first_blood -- ["Double Kill!"] = "", +-- ["DOUBLE KILL"] = "", -- Mutant +-- ["Do you have any idea how valuable grass is?"] = "", -- A_Classic_Fairytale:enemy +-- ["Do you think you're some kind of god?"] = "", -- A_Classic_Fairytale:enemy +-- ["Dragon's Lair"] = "", -- A_Classic_Fairytale:dragon +-- ["Drills"] = "", -- A_Classic_Fairytale:backstab -- ["Drone Hunter!"] = "", +-- ["Drop a bomb: [drop some heroic wind that will turn into a bomb on impact]"] = "", -- Continental_supplies -- ["Drowner"] = "", +-- ["Dude, all the plants are gone!"] = "", -- A_Classic_Fairytale:family +-- ["Dude, can you see Ramon and Spiky?"] = "", -- A_Classic_Fairytale:journey +-- ["Dude, that's so cool!"] = "", -- A_Classic_Fairytale:backstab +-- ["Dude, we really need a new shaman..."] = "", -- A_Classic_Fairytale:shadow +-- ["Dude, what's this place?!"] = "", -- A_Classic_Fairytale:dragon +-- ["Dude, where are we?"] = "", -- A_Classic_Fairytale:backstab +-- ["Dude, wow! I just had the weirdest high!"] = "", -- A_Classic_Fairytale:backstab +-- ["Duration"] = "", -- Continental_supplies +-- ["Dust storm: [Deals 20 damage to all enemies in the circle]"] = "", -- Continental_supplies -- ["Each turn you get 1-3 random weapons"] = "", -- ["Each turn you get one random weapon"] = "", +-- ["Eagle Eye"] = "", -- A_Classic_Fairytale:backstab +-- ["Eagle Eye: [Blink to the impact ~ one shot]"] = "", -- Continental_supplies +-- ["Ear Sniffer"] = "", -- A_Classic_Fairytale:backstab, A_Classic_Fairytale:epil +-- ["Elderbot"] = "", -- A_Classic_Fairytale:family +-- ["Elimate your captor."] = "", -- User_Mission_-_The_Great_Escape ["Eliminate all enemies"] = "Förgör alla fiender", ["Eliminate all targets before your time runs out.|You have unlimited ammo for this mission."] = "Förstör alla mÃ¥len innan din tid tar slut.|Du har obegränsad ammunition för deta uppdrag", --Bazooka, Shotgun, SniperRifle +-- ["Eliminate enemy hogs and take their weapons."] = "", -- Highlander ["Eliminate Poison before the time runs out"] = "Förgör Gift innan tiden tar slut", ["Eliminate the Blue Team"] = "Förgör det BlÃ¥ laget", -- ["Eliminate the enemy before the time runs out"] = "", -- User_Mission_-_Bamboo_Thicket, User_Mission_-_Newton_and_the_Hammock -- ["Eliminate the enemy hogs to win."] = "", -- ["Eliminate the enemy specialists."] = "", ["- Eliminate Unit 3378 |- Feeble Resistance must survive"] = "- Förgör Enhet 3378 |- Klent motstÃ¥nd mÃ¥ste överleva", +-- ["Elmo"] = "", -- A_Classic_Fairytale:dragon, A_Classic_Fairytale:family, A_Classic_Fairytale:queen -- ["Energetic Engineer"] = "", ["Enjoy the swim..."] = "Ha en trevlig simtur...", -- ["[Enter]"] = "", +-- ["Europe"] = "", -- Continental_supplies +-- [" ever done to you?!"] = "", -- A_Classic_Fairytale:backstab +-- ["Everyone knows this."] = "", -- A_Classic_Fairytale:enemy +-- ["Every single time!"] = "", -- A_Classic_Fairytale:dragon +-- ["Everything looks OK..."] = "", -- A_Classic_Fairytale:enemy +-- ["Exactly, man! That was my dream."] = "", -- A_Classic_Fairytale:backstab +-- ["Eye Chewer"] = "", -- A_Classic_Fairytale:journey +-- ["FAG"] = "", -- Mutant +-- ["Family Reunion"] = "", -- A_Classic_Fairytale:family ["Fastest lap: "] = "Snabbast varv: ", ["Feeble Resistance"] = "Klent motstÃ¥nd", +-- ["Fell From Grace"] = "", -- A_Classic_Fairytale:backstab, A_Classic_Fairytale:dragon, A_Classic_Fairytale:enemy, A_Classic_Fairytale:epil, A_Classic_Fairytale:family, A_Classic_Fairytale:queen +-- ["Fell From Heaven"] = "", -- A_Classic_Fairytale:enemy, A_Classic_Fairytale:epil, A_Classic_Fairytale:family, A_Classic_Fairytale:first_blood, A_Classic_Fairytale:journey, A_Classic_Fairytale:queen +-- ["Fell From Heaven is the best! Fell From Heaven is the greatest!"] = "", -- A_Classic_Fairytale:family +-- ["Femur Lover"] = "", -- A_Classic_Fairytale:shadow +-- ["Fierce Competition!"] = "", -- Space_Invasion +-- ["Fiery Water"] = "", -- A_Classic_Fairytale:backstab, A_Classic_Fairytale:dragon, A_Classic_Fairytale:enemy, A_Classic_Fairytale:epil, A_Classic_Fairytale:family, A_Classic_Fairytale:queen, A_Classic_Fairytale:united +-- ["Find your tribe!|Cross the lake!"] = "", -- A_Classic_Fairytale:dragon +-- ["Finish your training|Hint: Animations can be skipped with the [Precise] key."] = "", -- A_Classic_Fairytale:first_blood -- ["Fire"] = "", +-- ["Fire a mine: [Does what it says ~ Cant be dropped close to an enemy ~ 1 sec]"] = "", -- Continental_supplies +-- ["First aid kits?!"] = "", -- A_Classic_Fairytale:united +-- ["First Blood"] = "", -- A_Classic_Fairytale:first_blood +-- ["FIRST BLOOD MUTATES"] = "", -- Mutant +-- ["First Steps"] = "", -- A_Classic_Fairytale:first_blood ["Flag captured!"] = "Flagga tagen!", ["Flag respawned!"] = "Flagga Ã¥terställd!", ["Flag returned!"] = "Flagga Ã¥tervänd!", -- ["Flags, and their home base will be placed where each team ends their first turn."] = "", -- ["Flamer"] = "", +-- ["Flaming Worm"] = "", -- A_Classic_Fairytale:backstab +-- ["Flare: [fire up some bombs depending on hogs depending on hogs in the circle"] = "", -- Continental_supplies +-- ["Flesh for Brainz"] = "", -- A_Classic_Fairytale:journey +-- ["For improved features/stability, play 0.9.18+"] = "", -- WxW +-- ["Free Dense Cloud and continue the mission!"] = "", -- A_Classic_Fairytale:journey -- ["Friendly Fire!"] = "", -- ["fuel extended!"] = "", -- ["GAME BEGUN!!!"] = "", -- ["Game Modifiers: "] = "", ["GAME OVER!"] = "SPELET ÄR SLUT!", ["Game Started!"] = "Spel startat!", +-- ["Game? Was this a game to you?!"] = "", -- A_Classic_Fairytale:enemy +-- ["GasBomb"] = "", -- Continental_supplies +-- ["Gas Gargler"] = "", -- A_Classic_Fairytale:queen +-- ["Get Dense Cloud out of the pit!"] = "", -- A_Classic_Fairytale:journey ["Get on over there and take him out!"] = "Ta dig bort där och gör dig av med honom!", +-- ["Get on the head of the mole"] = "", -- A_Classic_Fairytale:first_blood +-- ["Get out of there!"] = "", -- User_Mission_-_The_Great_Escape +-- ["Get that crate!"] = "", -- A_Classic_Fairytale:first_blood +-- ["Get the crate on the other side of the island!|"] = "", -- A_Classic_Fairytale:journey +-- ["Get to the target using your rope! |Controls: Left & Right to swing the rope - Up & Down to Contract and Expand!"] = "", -- Basic_Training_-_Rope +-- ["Get your teammates out of their natural prison and save the princess!|Hint: Drilling holes should solve everything.|Hint: It might be a good idea to place a girder before starting to drill. Just saying.|Hint: All your hedgehogs need to be above the marked height!|Hint: Leaks A Lot needs to get really close to the princess!"] = "", -- A_Classic_Fairytale:family +-- ["GG!"] = "", -- User_Mission_-_Rope_Knock_Challenge +-- ["Gimme Bones"] = "", -- A_Classic_Fairytale:backstab +-- ["Glark"] = "", -- A_Classic_Fairytale:shadow -- ["Goal"] = "", ["GO! GO! GO!"] = "Kör! Kör! Kör!", ["Good birdy......"] = "Fin fÃ¥gel......", +-- ["Good Dude"] = "", -- User_Mission_-_The_Great_Escape +-- ["Good idea, they'll never find us there!"] = "", -- A_Classic_Fairytale:united +-- ["Good luck...or else!"] = "", -- A_Classic_Fairytale:journey ["Good luck out there!"] = "Lycka till där ute!", -- ["Good so far!"] = "", -- ["Good to go!"] = "", +-- ["Go on top of the flower"] = "", -- A_Classic_Fairytale:first_blood +-- ["Go, quick!"] = "", -- A_Classic_Fairytale:backstab +-- ["Gorkij"] = "", -- A_Classic_Fairytale:journey +-- ["Go surf!"] = "", -- WxW -- ["GOTCHA!"] = "", -- ["Grab Mines/Explosives"] = "", +-- ["Great choice, Steve! Mind if I call you that?"] = "", -- A_Classic_Fairytale:shadow +-- ["Great work! Now hit it with your Baseball Bat! |Tip: You can change weapon with 'Right Click'!"] = "", -- Basic_Training_-_Rope +-- ["Great! You will be contacted soon for assistance."] = "", -- A_Classic_Fairytale:shadow +-- ["Green lipstick bullet: [Is poisonous]"] = "", -- Continental_supplies +-- ["Greetings, "] = "", -- A_Classic_Fairytale:dragon +-- ["Greetings, cloudy one!"] = "", -- A_Classic_Fairytale:shadow +-- ["Grenade Training"] = "", -- Basic_Training_-_Grenade +-- ["Grenadiers"] = "", -- Basic_Training_-_Grenade +-- ["Guys, do you think there's more of them?"] = "", -- A_Classic_Fairytale:backstab +-- ["HAHA!"] = "", -- A_Classic_Fairytale:enemy +-- ["Haha!"] = "", -- A_Classic_Fairytale:united -- ["Hahahaha!"] = "", -- ["Haha, now THAT would be something!"] = "", +-- ["Hannibal"] = "", -- A_Classic_Fairytale:epil -- ["Hapless Hogs"] = "", -- [" Hapless Hogs left!"] = "", +-- [" HAS MUTATED\" )"] = "", -- +-- ["Hatless Jerry"] = "", -- A_Classic_Fairytale:queen +-- ["Have no illusions, your tribe is dead, indifferent of your choice."] = "", -- A_Classic_Fairytale:shadow +-- ["Have we ever attacked you first?"] = "", -- A_Classic_Fairytale:enemy -- ["Health crates extend your time."] = "", -- ["Heavy"] = "", +-- ["Heavy Cannfantry"] = "", -- A_Classic_Fairytale:united +-- ["Hedge-cogs"] = "", -- A_Classic_Fairytale:enemy +-- ["Hedgehog projectile: [fire your hog like a Sticky Bomb]"] = "", -- Continental_supplies ["Hedgewars-Basketball"] = "Hedgewars-Basket", ["Hedgewars-Knockball"] = "Hedgewars-Knockball", +-- ["Hedgibal Lecter"] = "", -- A_Classic_Fairytale:backstab -- ["Heh, it's not that bad."] = "", +-- ["Hello again, "] = "", -- A_Classic_Fairytale:family +-- ["Help me, Leaks!"] = "", -- A_Classic_Fairytale:journey +-- ["Help me, please!!!"] = "", -- A_Classic_Fairytale:journey +-- ["Help me, please!"] = "", -- A_Classic_Fairytale:journey +-- ["He moves like an eagle in the sky."] = "", -- A_Classic_Fairytale:first_blood +-- ["He must be in the village already."] = "", -- A_Classic_Fairytale:journey +-- ["Here, let me help you!"] = "", -- A_Classic_Fairytale:backstab +-- ["Here, let me help you save her!"] = "", -- A_Classic_Fairytale:family +-- ["Here...pick your weapon!"] = "", -- A_Classic_Fairytale:first_blood +-- ["Hero Team"] = "", -- User_Mission_-_The_Great_Escape +-- ["He's so brave..."] = "", -- A_Classic_Fairytale:first_blood +-- ["He won't be selling us out anymore!"] = "", -- A_Classic_Fairytale:backstab +-- ["Hey, guys!"] = "", -- A_Classic_Fairytale:backstab +-- ["Hey guys!"] = "", -- A_Classic_Fairytale:united +-- ["Hey! This is cheating!"] = "", -- A_Classic_Fairytale:journey +-- ["HIGHLANDER"] = "", -- Highlander +-- ["Hightime"] = "", -- A_Classic_Fairytale:first_blood +-- ["Hint: Double Jump - Press [Backspace] twice"] = "", -- A_Classic_Fairytale:first_blood +-- ["Hint: Select the BlowTorch, aim and press [Fire]. Press [Fire] again to stop.|Don't blow up the crate."] = "", -- A_Classic_Fairytale:journey +-- ["Hint: Select the LowGravity and press [Fire]."] = "", -- A_Classic_Fairytale:journey +-- ["Hint: you might want to stay out of sight and take all the crates...|"] = "", -- A_Classic_Fairytale:journey +-- ["His arms are so strong!"] = "", -- A_Classic_Fairytale:first_blood -- ["Hit Combo!"] = "", +-- ["Hmmm...actually...I didn't either."] = "", -- A_Classic_Fairytale:enemy ["Hmmm..."] = "Hmmm...", +-- ["Hmmm, I'll have to find some way of moving him off this anti-portal surface..."] = "", -- portal +-- ["Hmmm...it's a draw. How unfortunate!"] = "", -- A_Classic_Fairytale:enemy +-- ["Hmmm...perhaps a little more time will help."] = "", -- A_Classic_Fairytale:first_blood +-- ["Hogminator"] = "", -- A_Classic_Fairytale:family +-- ["Hogs in sight!"] = "", -- Continental_supplies +-- ["HOLY SHIT!"] = "", -- Mutant +-- ["Honest Lee"] = "", -- A_Classic_Fairytale:enemy ["Hooray!"] = "Hurra!", +-- ["Hostage Situation"] = "", -- A_Classic_Fairytale:family +-- ["How can I ever repay you for saving my life?"] = "", -- A_Classic_Fairytale:journey +-- ["How come in a village full of warriors, it's up to me to save it?"] = "", -- A_Classic_Fairytale:dragon +-- ["How difficult would you like it to be?"] = "", -- A_Classic_Fairytale:first_blood +-- ["HOW DO THEY KNOW WHERE WE ARE???"] = "", -- A_Classic_Fairytale:united +-- ["However, if you fail to do so, she dies a most violent death, just like your friend! Muahahaha!"] = "", -- A_Classic_Fairytale:journey +-- ["However, if you fail to do so, she dies a most violent death! Muahahaha!"] = "", -- A_Classic_Fairytale:journey +-- ["However, my mates don't agree with me on letting you go..."] = "", -- A_Classic_Fairytale:dragon +-- [" HP"] = "", -- Mutant ["Hunter"] = "Jägare", --Bazooka, Shotgun, SniperRifle +-- ["I believe there's more of them."] = "", -- A_Classic_Fairytale:backstab +-- ["I can see you have been training diligently."] = "", -- A_Classic_Fairytale:first_blood +-- ["I can't believe it worked!"] = "", -- A_Classic_Fairytale:shadow +-- ["I can't believe this!"] = "", -- A_Classic_Fairytale:enemy +-- ["I can't believe what I'm hearing!"] = "", -- A_Classic_Fairytale:backstab +-- ["I can't wait any more, I have to save myself!"] = "", -- A_Classic_Fairytale:shadow +-- ["I could just teleport myself there..."] = "", -- A_Classic_Fairytale:family +-- ["I'd better get going myself."] = "", -- A_Classic_Fairytale:journey +-- ["I didn't until about a month ago."] = "", -- A_Classic_Fairytale:enemy +-- ["I don't know how you did that.. But good work! |The next one should be easy as cake for you!"] = "", -- Basic_Training_-_Rope +-- ["I feel something...a place! They will arrive near the circles!"] = "", -- A_Classic_Fairytale:backstab +-- ["If only I had a way..."] = "", -- A_Classic_Fairytale:backstab +-- ["If only I were given a chance to explain my being here..."] = "", -- A_Classic_Fairytale:first_blood +-- ["I forgot that she's the daughter of the chief, too..."] = "", -- A_Classic_Fairytale:backstab +-- ["If they try coming here, they can have a taste of my delicious knuckles!"] = "", -- A_Classic_Fairytale:united +-- ["If you agree to provide the information we need, you will be spared!"] = "", -- A_Classic_Fairytale:shadow +-- ["If you can get that crate fast enough, your beloved \"princess\" may go free."] = "", -- A_Classic_Fairytale:journey +-- ["If you decide to help us, though, we will no longer need to find a new governor for the island."] = "", -- A_Classic_Fairytale:shadow +-- ["If you get stuck, use your Desert Eagle or restart the mission!|"] = "", -- A_Classic_Fairytale:journey +-- ["If you know what I mean..."] = "", -- A_Classic_Fairytale:shadow +-- ["If you say so..."] = "", -- A_Classic_Fairytale:shadow +-- ["If you wish to restart the course, hold [Precise] while your turn ends (e.g with Skip)"] = "", -- +-- ["I guess you'll have to kill them."] = "", -- A_Classic_Fairytale:dragon +-- ["I have come to make you an offering..."] = "", -- A_Classic_Fairytale:shadow +-- ["I have no idea where that mole disappeared...Can you see it?"] = "", -- A_Classic_Fairytale:shadow +-- ["I have to follow that alien."] = "", -- A_Classic_Fairytale:backstab +-- ["I have to get back to the village!"] = "", -- A_Classic_Fairytale:shadow +-- ["I hope you are prepared for a small challenge, young one."] = "", -- A_Classic_Fairytale:first_blood +-- ["I just don't want to sink to your level."] = "", -- A_Classic_Fairytale:backstab +-- ["I just found out that they have captured your princess!"] = "", -- A_Classic_Fairytale:family +-- ["I just wonder where Ramon and Spiky disappeared..."] = "", -- A_Classic_Fairytale:journey +-- ["I'll hold them off while you return to the village!"] = "", -- A_Classic_Fairytale:shadow +-- ["Imagine those targets are the wolves that killed your parents! Take your anger out on them!"] = "", -- A_Classic_Fairytale:first_blood +-- ["I'm...alive? How? Why?"] = "", -- A_Classic_Fairytale:backstab +-- ["I'm a ninja."] = "", -- A_Classic_Fairytale:dragon +-- ["I marked the place of their arrival. You're welcome!"] = "", -- A_Classic_Fairytale:backstab +-- ["I'm certain that this is a misunderstanding, fellow hedgehogs!"] = "", -- A_Classic_Fairytale:first_blood +-- ["I mean, none of you ceased to live."] = "", -- A_Classic_Fairytale:enemy +-- ["I'm getting old for this!"] = "", -- A_Classic_Fairytale:family +-- ["I'm getting thirsty..."] = "", -- A_Classic_Fairytale:family +-- ["I'm here to help you rescue her."] = "", -- A_Classic_Fairytale:family +-- ["I'm not sure about that!"] = "", -- A_Classic_Fairytale:united +-- ["Impressive...you are still dry as the corpse of a hawk after a week in the desert..."] = "", -- A_Classic_Fairytale:first_blood +-- ["I'm so scared!"] = "", -- A_Classic_Fairytale:united +-- ["Incredible..."] = "", -- A_Classic_Fairytale:shadow +-- ["I need to find the others!"] = "", -- A_Classic_Fairytale:backstab +-- ["I need to get to the other side of this island, fast!"] = "", -- A_Classic_Fairytale:journey +-- ["I need to move the tribe!"] = "", -- A_Classic_Fairytale:united +-- ["I need to prevent their arrival!"] = "", -- A_Classic_Fairytale:backstab +-- ["I need to warn the others."] = "", -- A_Classic_Fairytale:backstab +-- ["In fact, you are the only one that's been acting strangely."] = "", -- A_Classic_Fairytale:backstab +-- ["In order to get to the other side, you need to collect the crates first.|"] = "", -- A_Classic_Fairytale:dragon ["Instructor"] = "Instruktör", -- 01#Boot_Camp, User_Mission_-_Dangerous_Ducklings +-- ["Interesting idea, haha!"] = "", -- A_Classic_Fairytale:enemy +-- ["Interesting! Last time you said you killed a cannibal!"] = "", -- A_Classic_Fairytale:backstab +-- ["In the meantime, take these and return to your \"friend\"!"] = "", -- A_Classic_Fairytale:shadow -- ["invaders destroyed"] = "", +-- ["Invasion"] = "", -- A_Classic_Fairytale:united +-- ["I saw it with my own eyes!"] = "", -- A_Classic_Fairytale:shadow +-- ["I see..."] = "", -- A_Classic_Fairytale:shadow +-- ["I see you have already taken the leap of faith."] = "", -- A_Classic_Fairytale:first_blood +-- ["I see you would like his punishment to be more...personal..."] = "", -- A_Classic_Fairytale:first_blood +-- ["I sense another wave of cannibals heading my way!"] = "", -- A_Classic_Fairytale:backstab +-- ["I sense another wave of cannibals heading our way!"] = "", -- A_Classic_Fairytale:backstab +-- ["I shouldn't have drunk that last pint."] = "", -- A_Classic_Fairytale:dragon +-- ["Is this place in my head?"] = "", -- A_Classic_Fairytale:dragon +-- ["It doesn't matter. I won't let that alien hurt my daughter!"] = "", -- A_Classic_Fairytale:dragon +-- ["I think we are safe here."] = "", -- A_Classic_Fairytale:backstab +-- ["I thought their shaman died when he tried our medicine!"] = "", -- A_Classic_Fairytale:shadow +-- ["It is called 'Hogs of Steel'."] = "", -- A_Classic_Fairytale:enemy +-- ["It is time to practice your fighting skills."] = "", -- A_Classic_Fairytale:first_blood +-- ["It must be a childhood trauma..."] = "", -- A_Classic_Fairytale:family +-- ["It must be the aliens!"] = "", -- A_Classic_Fairytale:backstab +-- ["It must be the aliens' deed."] = "", -- A_Classic_Fairytale:backstab +-- ["It must be the cyborgs again!"] = "", -- A_Classic_Fairytale:enemy +-- ["I told you, I just found them."] = "", -- A_Classic_Fairytale:backstab -- ["It's a good thing SUDDEN DEATH is 99 turns away..."] = "", +-- ["It's always up to women to clear up the mess men created!"] = "", -- A_Classic_Fairytale:dragon +-- ["It's a shame, I forgot how to do that!"] = "", -- A_Classic_Fairytale:family +-- ["It's impossible to communicate with the spirits without a shaman."] = "", -- A_Classic_Fairytale:shadow +-- ["It's over..."] = "", -- A_Classic_Fairytale:shadow +-- ["It's time you learned that your actions have consequences!"] = "", -- A_Classic_Fairytale:journey +-- ["It's worth more than wood!"] = "", -- A_Classic_Fairytale:enemy +-- ["It wants our brains!"] = "", -- A_Classic_Fairytale:shadow +-- ["It was not a dream, unwise one!"] = "", -- A_Classic_Fairytale:backstab +-- ["I've seen this before. They just appear out of thin air."] = "", -- A_Classic_Fairytale:united +-- ["I want to play a game..."] = "", -- A_Classic_Fairytale:journey +-- ["I want to see how it handles this!"] = "", -- A_Classic_Fairytale:backstab +-- ["I wish to help you, "] = "", -- A_Classic_Fairytale:dragon +-- ["I wonder where Dense Cloud is..."] = "", -- A_Classic_Fairytale:journey, A_Classic_Fairytale:shadow +-- ["I wonder why I'm so angry all the time..."] = "", -- A_Classic_Fairytale:family +-- ["I won't let you kill her!"] = "", -- A_Classic_Fairytale:journey +-- ["Jack"] = "", -- A_Classic_Fairytale:dragon, A_Classic_Fairytale:family, A_Classic_Fairytale:queen +-- ["Jeremiah"] = "", -- A_Classic_Fairytale:dragon +-- ["John"] = "", -- A_Classic_Fairytale:journey +-- ["Judas"] = "", -- A_Classic_Fairytale:backstab -- ["Jumping is disabled"] = "", +-- ["Just kidding, none of you have died!"] = "", -- A_Classic_Fairytale:enemy +-- ["Just on a walk."] = "", -- A_Classic_Fairytale:united +-- ["Just wait till I get my hands on that trauma! ARGH!"] = "", -- A_Classic_Fairytale:family -- ["Kamikaze Expert!"] = "", -- ["Keep it up!"] = "", +-- ["Kerguelen"] = "", -- Continental_supplies -- ["Killing spree!"] = "", +-- ["KILL IT!"] = "", -- A_Classic_Fairytale:first_blood -- ["KILLS"] = "", +-- ["Kill the aliens!"] = "", -- A_Classic_Fairytale:dragon +-- ["Kill the cannibal!"] = "", -- A_Classic_Fairytale:first_blood +-- ["Kill the traitor...or spare his life!|Kill him or press [Precise]!"] = "", -- A_Classic_Fairytale:backstab -- ["Last Target!"] = "", +-- ["Leader"] = "", -- A_Classic_Fairytale:enemy +-- ["Leaderbot"] = "", -- A_Classic_Fairytale:queen +-- ["Leaks A Lot"] = "", -- A_Classic_Fairytale:backstab, A_Classic_Fairytale:dragon, A_Classic_Fairytale:enemy, A_Classic_Fairytale:epil, A_Classic_Fairytale:family, A_Classic_Fairytale:first_blood, A_Classic_Fairytale:journey, A_Classic_Fairytale:queen, A_Classic_Fairytale:shadow, A_Classic_Fairytale:united +-- ["Leaks A Lot, depressed for killing his loved one, failed to save the village..."] = "", -- A_Classic_Fairytale:journey +-- ["Leaks A Lot gave his life for his tribe! He should have survived!"] = "", -- A_Classic_Fairytale:first_blood +-- ["Leaks A Lot must survive!"] = "", -- A_Classic_Fairytale:journey +-- ["Led Heart"] = "", -- A_Classic_Fairytale:queen +-- ["Lee"] = "", -- A_Classic_Fairytale:dragon, A_Classic_Fairytale:family, A_Classic_Fairytale:queen -- ["[Left Shift]"] = "", +-- ["Let a Continent provide your weapons!"] = "", -- Continental_supplies +-- ["Let me test your skills a little, will you?"] = "", -- A_Classic_Fairytale:journey +-- ["Let's go home!"] = "", -- A_Classic_Fairytale:journey +-- ["Let's head back to the village!"] = "", -- A_Classic_Fairytale:shadow +-- ["Let's see what your comrade does now!"] = "", -- A_Classic_Fairytale:journey +-- ["Let's show those cannibals what we're made of!"] = "", -- A_Classic_Fairytale:backstab +-- ["Let them have a taste of my fury!"] = "", -- A_Classic_Fairytale:backstab +-- ["Let us help, too!"] = "", -- A_Classic_Fairytale:backstab +-- ["Light Cannfantry"] = "", -- A_Classic_Fairytale:united ["Listen up, maggot!!"] = "Hör här, ynkrygg!!", +-- ["Little did they know that this hunt will mark them forever..."] = "", -- A_Classic_Fairytale:shadow -- ["Lively Lifeguard"] = "", +-- ["Lonely Cries: [Rise the water if no hog is in the circle and deal 1 damage to all hogs]"] = "", -- Continental_supplies +-- ["Look, I had no choice!"] = "", -- A_Classic_Fairytale:backstab +-- ["Look out! There's more of them!"] = "", -- A_Classic_Fairytale:backstab +-- ["Look out! We're surrounded by cannibals!"] = "", -- A_Classic_Fairytale:enemy +-- ["Looks like the whole world is falling apart!"] = "", -- A_Classic_Fairytale:enemy +-- ["Luckily, I've managed to snatch some of them."] = "", -- A_Classic_Fairytale:united +-- ["LUDICROUS KILL"] = "", -- Mutant +-- ["May the spirits aid you in all your quests!"] = "", -- A_Classic_Fairytale:backstab +-- ["Medicine: [Fire some exploding medicine that will heal all hogs effected by the explosion]"] = "", -- Continental_supplies +-- ["MEGA KILL"] = "", -- Mutant +-- ["Meiwes"] = "", -- A_Classic_Fairytale:backstab +-- ["Mindy"] = "", -- A_Classic_Fairytale:united -- ["Mine Deployer"] = "", -- ["Mine Eater!"] = "", ["|- 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 SUCCESS"] = "", ["MISSION SUCCESSFUL"] = "UPPDRAG SLUTFÖRT", -- User_Mission_-_Diver, User_Mission_-_Spooky_Tree, User_Mission_-_Teamwork +-- ["Molotov"] = "", -- Continental_supplies +-- ["MONSTER KILL"] = "", -- Mutant +-- ["More Natives"] = "", -- A_Classic_Fairytale:epil -- ["Movement: [Up], [Down], [Left], [Right]"] = "", -- ["Multi-shot!"] = "", +-- ["Muriel"] = "", -- A_Classic_Fairytale:backstab, A_Classic_Fairytale:dragon, A_Classic_Fairytale:family, A_Classic_Fairytale:queen +-- ["Muscle Dissolver"] = "", -- A_Classic_Fairytale:shadow +-- ["-------"] = "", -- Mutant +-- ["Nade Boy"] = "", -- Basic_Training_-_Grenade +-- ["Name"] = "", -- A_Classic_Fairytale:queen -- ["Nameless Heroes"] = "", +-- ["Nancy Screw"] = "", -- A_Classic_Fairytale:enemy, A_Classic_Fairytale:queen +-- ["Napalm rocket: [Fire a bomb with napalm!]"] = "", -- Continental_supplies +-- ["Natives"] = "", -- A_Classic_Fairytale:backstab, A_Classic_Fairytale:dragon, A_Classic_Fairytale:enemy, A_Classic_Fairytale:epil, A_Classic_Fairytale:family, A_Classic_Fairytale:first_blood, A_Classic_Fairytale:journey, A_Classic_Fairytale:queen, A_Classic_Fairytale:shadow, A_Classic_Fairytale:united -- ["New Barrels Per Turn"] = "", -- ["NEW CLAN RECORD: "] = "", ["NEW fastest lap: "] = "NYTT snabbast varv: ", -- ["New Mines Per Turn"] = "", -- ["NEW RACE RECORD: "] = "", -- ["Newton's Hammock"] = "", +-- ["Nicely done, meatbags!"] = "", -- A_Classic_Fairytale:enemy +-- ["Nice work, "] = "", -- A_Classic_Fairytale:dragon +-- ["Nice work!"] = "", -- A_Classic_Fairytale:enemy +-- ["Nilarian"] = "", -- A_Classic_Fairytale:queen +-- ["No, I came back to help you out..."] = "", -- A_Classic_Fairytale:shadow +-- ["No...I wonder where they disappeared?!"] = "", -- A_Classic_Fairytale:journey +-- ["Nom-Nom"] = "", -- A_Classic_Fairytale:journey +-- ["NomNom"] = "", -- A_Classic_Fairytale:united +-- ["Nope. It was one fast mole, that's for sure."] = "", -- A_Classic_Fairytale:shadow +-- ["No! Please, help me!"] = "", -- A_Classic_Fairytale:journey +-- ["NORMAL"] = "", -- Continental_supplies +-- ["North America"] = "", -- Continental_supplies +-- ["Not all hogs are born equal."] = "", -- Highlander -- ["NOT ENOUGH WAYPOINTS"] = "", +-- ["Not now, Fiery Water!"] = "", -- A_Classic_Fairytale:backstab ["Not So Friendly Match"] = "En inte sÃ¥ vänlig match", -- Basketball, Knockball +-- ["Not you again! My head still hurts from last time!"] = "", -- A_Classic_Fairytale:shadow +-- ["No, we made sure of that!"] = "", -- A_Classic_Fairytale:united +-- ["Now find the next target! |Tip: Normally you lose health by falling down, so be careful!"] = "", -- Basic_Training_-_Rope +-- ["No! What have I done?! What have YOU done?!"] = "", -- A_Classic_Fairytale:journey +-- ["No. Where did he come from?"] = "", -- A_Classic_Fairytale:shadow +-- ["Now how do I get on the other side?!"] = "", -- A_Classic_Fairytale:dragon +-- ["No. You and the rest of the tribe are safer there!"] = "", -- A_Classic_Fairytale:backstab +-- ["Obliterate them!|Hint: You might want to take cover..."] = "", -- A_Classic_Fairytale:shadow +-- ["Obstacle course"] = "", -- A_Classic_Fairytale:dragon +-- ["Of course I have to save her. What did I expect?!"] = "", -- A_Classic_Fairytale:family +-- ["OH, COME ON!"] = "", -- A_Classic_Fairytale:journey +-- ["Oh, my!"] = "", -- A_Classic_Fairytale:first_blood +-- ["Oh, my! This is even more entertaining than I've expected!"] = "", -- A_Classic_Fairytale:backstab ["Oh no! Just try again!"] = "Ã… nej! Bara att försöka igen!", -- User_Mission_-_Diver, User_Mission_-_Spooky_Tree, User_Mission_-_Teamwork +-- ["Oh no, not "] = "", -- A_Classic_Fairytale:backstab, A_Classic_Fairytale:united ["Oh no! Time's up! Just try again."] = "Ã…h nej! Tiden är ute! Pröva igen.", --Bazooka, Shotgun, SniperRifle +-- ["Oh no! You failed! Just try again."] = "", -- Basic_Training_-_Cluster_Bomb +-- ["Oh, silly me! I forgot that I'm the shaman."] = "", -- A_Classic_Fairytale:backstab +-- ["Olive"] = "", -- A_Classic_Fairytale:united +-- ["Omnivore"] = "", -- A_Classic_Fairytale:first_blood +-- ["Once upon a time, on an island with great natural resources, lived two tribes in heated conflict..."] = "", -- A_Classic_Fairytale:first_blood +-- ["ONE HOG PER TEAM! KILLING EXCESS HEDGES"] = "", -- Mutant +-- ["One tribe was peaceful, spending their time hunting and training, enjoying the small pleasures of life..."] = "", -- A_Classic_Fairytale:first_blood +-- ["Oops...I dropped them."] = "", -- A_Classic_Fairytale:united +-- ["Open that crate and we will continue!"] = "", -- A_Classic_Fairytale:first_blood ["Operation Diver"] = "Operationens dykare", ["Opposing Team: "] = "MotstÃ¥ndarlag: ", +-- ["Orlando Boom!"] = "", -- A_Classic_Fairytale:queen +-- ["Ouch!"] = "", -- User_Mission_-_Rope_Knock_Challenge +-- ["Our tribe, our beautiful island!"] = "", -- A_Classic_Fairytale:enemy +-- ["Parachute"] = "", -- Continental_supplies ["Pathetic Hog #%d"] = "Patetisk kott #%d", -- ["Pathetic Resistance"] = "", -- User_Mission_-_Bamboo_Thicket, User_Mission_-_Newton_and_the_Hammock +-- ["Perfect! Now try to get the next crate without hurting yourself!"] = "", -- A_Classic_Fairytale:first_blood -- ["Per-Hog Ammo"] = "", +-- ["- Per team weapons|- 9 weaponschemes|- Unique new weapons| |Select continent first round with the Weapon Menu or by ([switch/tab]=Increase,[presice/left shift]=Decrease)"] = "", -- +-- ["Pfew! That was close!"] = "", -- A_Classic_Fairytale:shadow +-- ["Piñata bullet: [Contains some sweet candy!]"] = "", -- Continental_supplies +-- ["Pings left:"] = "", -- Space_Invasion -- ["Place more waypoints using [ENTER]"] = "", -- ["Place more waypoints using the 'Air Attack' weapon."] = "", +-- ["Planes Used:"] = "", -- User_Mission_-_RCPlane_Challenge +-- ["Planes Used"] = "", -- User_Mission_-_RCPlane_Challenge +-- ["Play with me!"] = "", -- A_Classic_Fairytale:shadow +-- ["Please place the way-point further from the waterline."] = "", -- Racer +-- ["Please place the way-point in the open, within the map boundaries."] = "", -- Racer +-- ["Please, stop releasing your \"smoke signals\"!"] = "", -- A_Classic_Fairytale:shadow +-- ["Point Blank Combo!"] = "", -- Space_Invasion -- ["points"] = "", -- Control, CTF_Blizzard, Basic_Training_-_Bazooka, Basic_Training_-_Shotgun, Basic_Training_-_Sniper_Rifle ["Poison"] = "Gift", +-- ["Portal hint: one goes to the destination, and one is the entrance.|"] = "", -- A_Classic_Fairytale:dragon +-- ["Portal mission"] = "", -- portal -- ["Power Remaining"] = "", -- ["Prepare yourself"] = "", +-- ["Press [Enter] to accept this configuration."] = "", -- WxW +-- ["Press [Left] or [Right] to move around, [Enter] to jump"] = "", -- A_Classic_Fairytale:first_blood -- ["Press [Precise] to skip intro"] = "", +-- ["Private Novak"] = "", -- Basic_Training_-_Cluster_Bomb +-- ["Protect yourselves!|Grenade hint: set the timer with [1-5], aim with [Up]/[Down] and hold [Space] to set power"] = "", -- A_Classic_Fairytale:shadow -- ["Race complexity limit reached."] = "", -- ["RACER"] = "", +-- ["Rachel"] = "", -- A_Classic_Fairytale:dragon, A_Classic_Fairytale:family, A_Classic_Fairytale:queen +-- ["Radar Ping"] = "", -- Space_Invasion +-- ["Raging Buffalo"] = "", -- A_Classic_Fairytale:backstab, A_Classic_Fairytale:dragon, A_Classic_Fairytale:enemy, A_Classic_Fairytale:epil, A_Classic_Fairytale:family, A_Classic_Fairytale:queen, A_Classic_Fairytale:united +-- ["Ramon"] = "", -- A_Classic_Fairytale:enemy, A_Classic_Fairytale:epil, A_Classic_Fairytale:family, A_Classic_Fairytale:queen, A_Classic_Fairytale:shadow +-- ["RC PLANE TRAINING"] = "", -- User_Mission_-_RCPlane_Challenge +-- ["Really?! You thought you could harm me with your little toys?"] = "", -- A_Classic_Fairytale:shadow +-- ["Regurgitator"] = "", -- A_Classic_Fairytale:backstab +-- ["Reinforcements"] = "", -- A_Classic_Fairytale:backstab +-- ["Remember: The rope only bend around objects, |if it doesn't hit anything it's always stright!"] = "", -- Basic_Training_-_Rope +-- ["Remember this, pathetic animal: when the day comes, you will regret your blind loyalty!"] = "", -- A_Classic_Fairytale:shadow [" - 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", +-- ["Return to Leaks A Lot! If you get stuck, press [Precise] to try again!"] = "", -- A_Classic_Fairytale:shadow +-- ["Righteous Beard"] = "", -- A_Classic_Fairytale:backstab, A_Classic_Fairytale:dragon, A_Classic_Fairytale:enemy, A_Classic_Fairytale:epil, A_Classic_Fairytale:family, A_Classic_Fairytale:first_blood, A_Classic_Fairytale:queen, A_Classic_Fairytale:united +-- ["ROPE-KNOCKING"] = "", -- User_Mission_-_Rope_Knock_Challenge +-- ["Rope Training"] = "", -- Basic_Training_-_Rope +-- ["Rot Molester"] = "", -- A_Classic_Fairytale:shadow -- ["Round Limit:"] = "", -- ["Round Limit"] = "", -- ["Rounds Complete: "] = "", -- ["Rounds Complete"] = "", ["RULES OF THE GAME [Press ESC to view]"] = "SPELREGLER [Tryck ESC för att se]", +-- ["Rusty Joe"] = "", -- A_Classic_Fairytale:queen -- ["s|"] = "", +-- ["Sabotage: [Sabotage all hogs in the circle and deal ~10 dmg]"] = "", -- Continental_supplies +-- ["Salivaslurper"] = "", -- A_Classic_Fairytale:united +-- ["Salvation"] = "", -- A_Classic_Fairytale:family +-- ["Salvation was one step closer now..."] = "", -- A_Classic_Fairytale:dragon -- ["Save as many hapless hogs as possible!"] = "", +-- ["Save Fell From Heaven!"] = "", -- A_Classic_Fairytale:journey +-- ["Save Leaks A Lot!|Hint: The Switch utility might be of help to you."] = "", -- A_Classic_Fairytale:shadow +-- ["Save the princess! All your hogs must survive!|Hint: Kill the cyborgs first! Use the ammo very carefully!|Hint: You might want to spare a girder for cover!"] = "", -- A_Classic_Fairytale:family +-- ["Save the princess by collecting the crate in under 12 turns!"] = "", -- A_Classic_Fairytale:journey +-- ["Scalp Muncher"] = "", -- A_Classic_Fairytale:backstab -- ["SCORE"] = "", +-- ["Score"] = "", -- Mutant +-- ["Scream from a Walrus: [Deal 20 damage + 10% of your hogs health to all hogs around you and get half back]"] = "", -- Continental_supplies ["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 +-- ["Seduction"] = "", -- Continental_supplies +-- ["Seems like every time you take a \"walk\", the enemy find us!"] = "", -- A_Classic_Fairytale:backstab +-- ["See that crate farther on the right?"] = "", -- A_Classic_Fairytale:first_blood ["See ya!"] = "Ses!", +-- ["Segmentation Paul"] = "", -- A_Classic_Fairytale:dragon +-- ["Select continent!"] = "", -- Continental_supplies +-- ["Select difficulty: [Left] - easier or [Right] - harder"] = "", -- A_Classic_Fairytale:first_blood -- ["selected!"] = "", -- ["s"] = "", -- GaudyRacer, Space_Invasion +-- ["... share your beauty with the world every morning, my princess!"] = "", -- A_Classic_Fairytale:journey +-- ["She's behind that tall thingy."] = "", -- A_Classic_Fairytale:family -- ["Shield boosted! +30 power"] = "", -- ["Shield Depleted"] = "", -- ["Shield is fully recharged!"] = "", @@ -162,59 +646,338 @@ -- ["Shield OFF:"] = "", -- ["Shield ON:"] = "", -- ["Shield Seeker!"] = "", +-- ["Shotgun"] = "", -- Continental_supplies ["Shotgun Team"] = "Hagelgevärslaget", ["Shotgun Training"] = "Hagelgevärsträning", -- ["shots remaining."] = "", -- ["Silly"] = "", -- ["Sinky"] = "", +-- ["Sirius Lee"] = "", -- A_Classic_Fairytale:enemy ["%s is out and Team %d|scored a penalty!| |Score:"] = "%s är ute och lag %d|fick ett straff!| |Poängställning:", -- Basketball, Knockball ["%s is out and Team %d|scored a point!| |Score:"] = "%s är ute och lag %d|fick ett poäng!| |Poängställning:", -- Basketball, Knockball +-- ["Slippery"] = "", -- A_Classic_Fairytale:journey +-- ["Smith 0.97"] = "", -- A_Classic_Fairytale:enemy +-- ["Smith 0.98"] = "", -- A_Classic_Fairytale:enemy +-- ["Smith 0.99a"] = "", -- A_Classic_Fairytale:enemy +-- ["Smith 0.99b"] = "", -- A_Classic_Fairytale:enemy +-- ["Smith 0.99f"] = "", -- A_Classic_Fairytale:enemy +-- ["Smith 1.0"] = "", -- A_Classic_Fairytale:enemy +-- ["Sniper Rifle"] = "", -- Continental_supplies +-- ["Sniper!"] = "", -- Space_Invasion ["Sniper Training"] = "Prickskyttesträning", ["Sniperz"] = "Prickskyttarna", +-- ["So humiliating..."] = "", -- A_Classic_Fairytale:first_blood +-- ["South America"] = "", -- Continental_supplies +-- ["So? What will it be?"] = "", -- A_Classic_Fairytale:shadow +-- ["Spawn the crate, and attack!"] = "", -- WxW +-- ["Special Weapons:"] = "", -- Continental_supplies +-- ["Spiky Cheese"] = "", -- A_Classic_Fairytale:enemy, A_Classic_Fairytale:epil, A_Classic_Fairytale:family, A_Classic_Fairytale:queen, A_Classic_Fairytale:shadow +-- ["Spleenlover"] = "", -- A_Classic_Fairytale:united -- ["Sponge"] = "", ["Spooky Tree"] = "Kusligt träd", -- ["STATUS UPDATE"] = "", -- GaudyRacer, Space_Invasion +-- ["Steel Eye"] = "", -- A_Classic_Fairytale:queen +-- ["Step By Step"] = "", -- A_Classic_Fairytale:first_blood +-- ["Steve"] = "", -- A_Classic_Fairytale:dragon, A_Classic_Fairytale:family, A_Classic_Fairytale:queen +-- ["Sticky Mine"] = "", -- Continental_supplies +-- ["Stronglings"] = "", -- A_Classic_Fairytale:shadow +-- ["Structure"] = "", -- Continental_supplies +-- ["Super Weapons"] = "", -- WxW +-- ["Surf Before Crate"] = "", -- WxW +-- ["Surfer! +15 points!"] = "", -- Space_Invasion +-- ["Surfer!"] = "", -- WxW +-- ["Survive!|Hint: Cinematics can be skipped with the [Precise] key."] = "", -- A_Classic_Fairytale:shadow +-- ["Swing, Leaks A Lot, on the wings of the wind!"] = "", -- A_Classic_Fairytale:first_blood -- ["Switched to "] = "", +-- ["Syntax Errol"] = "", -- A_Classic_Fairytale:dragon +-- ["Talk about mixed signals..."] = "", -- A_Classic_Fairytale:dragon ["Team %d: "] = "Lag %d: ", -- ["Team Scores"] = "", -- Control, Space_Invasion +-- ["Teleport hint: just use the mouse to select the destination!"] = "", -- A_Classic_Fairytale:dragon +-- ["Thanks!"] = "", -- A_Classic_Fairytale:family +-- ["Thank you, my hero!"] = "", -- A_Classic_Fairytale:family +-- ["Thank you, oh, thank you, Leaks A Lot!"] = "", -- A_Classic_Fairytale:journey +-- ["Thank you, oh, thank you, my heroes!"] = "", -- A_Classic_Fairytale:journey +-- ["That is, indeed, very weird..."] = "", -- A_Classic_Fairytale:united +-- ["That makes it almost invaluable!"] = "", -- A_Classic_Fairytale:enemy +-- ["That ought to show them!"] = "", -- A_Classic_Fairytale:backstab +-- ["That's for my father!"] = "", -- A_Classic_Fairytale:backstab +-- ["That shaman sure knows what he's doing!"] = "", -- A_Classic_Fairytale:shadow -- ["That Sinking Feeling"] = "", +-- ["That's not our problem!"] = "", -- A_Classic_Fairytale:enemy +-- ["That's typical of you!"] = "", -- A_Classic_Fairytale:family +-- ["That was just mean!"] = "", -- A_Classic_Fairytale:backstab, A_Classic_Fairytale:united ["That was pointless."] = "Det där var meningslöst.", +-- ["The answer is...entertaintment. You'll see what I mean."] = "", -- A_Classic_Fairytale:backstab +-- ["The anti-portal zone is all over the floor, and I have nothing to kill him...Droping something could hurt him enough to kill him..."] = "", -- portal +-- ["The Bull's Eye"] = "", -- A_Classic_Fairytale:first_blood +-- ["The caves are well hidden, they won't find us there!"] = "", -- A_Classic_Fairytale:united +-- ["The Crate Frenzy"] = "", -- A_Classic_Fairytale:first_blood +-- ["The Dilemma"] = "", -- A_Classic_Fairytale:shadow +-- ["The enemy can't move but it might be a good idea to stay out of sight!|"] = "", -- A_Classic_Fairytale:dragon ["The enemy is hiding out on yonder ducky!"] = "Fienden gömmer sig pÃ¥ andra ankan!", +-- ["The Enemy Of My Enemy"] = "", -- A_Classic_Fairytale:enemy +-- ["The First Blood"] = "", -- A_Classic_Fairytale:first_blood +-- ["The First Encounter"] = "", -- A_Classic_Fairytale:shadow ["The flag will respawn next round."] = "Flaggan kommer tillbaka nästa runda.", +-- ["The food bites back"] = "", -- A_Classic_Fairytale:backstab +-- ["The giant umbrella from the last crate should help break the fall."] = "", -- A_Classic_Fairytale:first_blood +-- ["The Great Escape"] = "", -- User_Mission_-_The_Great_Escape +-- ["The guardian"] = "", -- A_Classic_Fairytale:shadow +-- ["The Individualist"] = "", -- A_Classic_Fairytale:shadow +-- ["Their buildings were very primitive back then, even for an uncivilised island."] = "", -- A_Classic_Fairytale:united +-- ["The Journey Back"] = "", -- A_Classic_Fairytale:journey +-- ["The Leap of Faith"] = "", -- A_Classic_Fairytale:first_blood +-- ["The Moonwalk"] = "", -- A_Classic_Fairytale:journey -- ["The Nameless One"] = "", +-- ["The next one is pretty hard! |Tip: You have to do multiple swings!"] = "", -- Basic_Training_-_Rope +-- ["Then how do they keep appearing?"] = "", -- A_Classic_Fairytale:shadow +-- ["The other one were all cannibals, spending their time eating the organs of fellow hedgehogs..."] = "", -- A_Classic_Fairytale:first_blood +-- ["There must be a spy among us!"] = "", -- A_Classic_Fairytale:backstab +-- ["There's more of them? When did they become so hungry?"] = "", -- A_Classic_Fairytale:backstab, A_Classic_Fairytale:united +-- ["There's nothing more satisfying for me than seeing you share your beauty with the world every morning, my princess!"] = "", -- A_Classic_Fairytale:journey +-- ["There's nothing more satisfying to us than seeing you share your beauty..."] = "", -- A_Classic_Fairytale:journey +-- ["There's nothing more satisfying to us than seeing you share your beauty with the world every morning, my princess!"] = "", -- A_Classic_Fairytale:journey +-- ["The Rising"] = "", -- A_Classic_Fairytale:first_blood +-- ["The Savior"] = "", -- A_Classic_Fairytale:journey +-- ["These primitive people are so funny!"] = "", -- A_Classic_Fairytale:backstab +-- ["The Shadow Falls"] = "", -- A_Classic_Fairytale:shadow +-- ["The Showdown"] = "", -- A_Classic_Fairytale:shadow +-- ["The Slaughter"] = "", -- A_Classic_Fairytale:dragon, A_Classic_Fairytale:first_blood -- ["THE SPECIALISTS"] = "", +-- ["The spirits of the ancerstors are surely pleased, Leaks A Lot."] = "", -- A_Classic_Fairytale:first_blood +-- ["The Torment"] = "", -- A_Classic_Fairytale:first_blood +-- ["The Tunnel Maker"] = "", -- A_Classic_Fairytale:journey +-- ["The Ultimate Weapon"] = "", -- A_Classic_Fairytale:first_blood +-- ["The Union"] = "", -- A_Classic_Fairytale:enemy +-- ["The village, unprepared, was destroyed by the cyborgs..."] = "", -- A_Classic_Fairytale:journey +-- ["The walk of Fame"] = "", -- A_Classic_Fairytale:shadow +-- ["The wasted youth"] = "", -- A_Classic_Fairytale:first_blood +-- ["The weapon in that last crate was bestowed upon us by the ancients!"] = "", -- A_Classic_Fairytale:first_blood +-- ["The what?!"] = "", -- A_Classic_Fairytale:dragon +-- ["The wind whispers that you are ready to become familiar with tools, now..."] = "", -- A_Classic_Fairytale:first_blood +-- ["They are all waiting back in the village, haha."] = "", -- A_Classic_Fairytale:enemy +-- ["They Call Me Bullseye!"] = "", -- Space_Invasion +-- ["They have weapons we've never seen before!"] = "", -- A_Classic_Fairytale:united +-- ["They keep appearing like this. It's weird!"] = "", -- A_Classic_Fairytale:united +-- ["They killed "] = "", -- A_Classic_Fairytale:backstab, A_Classic_Fairytale:united +-- ["They must be trying to weaken us!"] = "", -- A_Classic_Fairytale:enemy +-- ["They never learn"] = "", -- A_Classic_Fairytale:journey +-- ["They told us to wear these clothes. They said that this is the newest trend."] = "", -- A_Classic_Fairytale:enemy +-- ["They've been manipulating us all this time!"] = "", -- A_Classic_Fairytale:enemy +-- ["Thighlicker"] = "", -- A_Classic_Fairytale:united +-- ["This is it! It's time to make Fell From Heaven fall for me..."] = "", -- A_Classic_Fairytale:first_blood +-- ["This island is the only place left on Earth with grass on it!"] = "", -- A_Classic_Fairytale:enemy +-- ["This is typical!"] = "", -- A_Classic_Fairytale:dragon +-- ["This must be some kind of sorcery!"] = "", -- A_Classic_Fairytale:shadow +-- ["This must be the caves!"] = "", -- A_Classic_Fairytale:backstab -- ["This one's tricky."] = "", -- ["This rain is really something..."] = "", +-- ["This will be fun!"] = "", -- A_Classic_Fairytale:enemy +-- ["Those aliens are destroying the island!"] = "", -- A_Classic_Fairytale:family -- ["TIME: "] = "", -- ["Timed Kamikaze!"] = "", -- ["Time Extended!"] = "", -- ["Time Extension"] = "", +-- ["Tip: The rope physics are different than in the real world, |use it to your advantage!"] = "", -- Basic_Training_-_Rope -- ["Toggle Shield"] = "", +-- ["To help you, of course!"] = "", -- A_Classic_Fairytale:journey +-- ["To place a girder, select it, use [Left] and [Right] to select angle and length, place with [Left Click]"] = "", -- A_Classic_Fairytale:shadow +-- ["Torn Muscle"] = "", -- A_Classic_Fairytale:journey +-- [" to save the village."] = "", -- A_Classic_Fairytale:dragon +-- ["To the caves..."] = "", -- A_Classic_Fairytale:united ["Toxic Team"] = "Förgiftade laget", -- User_Mission_-_Diver, User_Mission_-_Spooky_Tree, User_Mission_-_Teamwork -- ["TRACK COMPLETED"] = "", -- ["TRACK FAILED!"] = "", +-- ["training"] = "", -- portal +-- ["Traitors"] = "", -- A_Classic_Fairytale:epil +-- ["Tribe"] = "", -- A_Classic_Fairytale:backstab ["TrophyRace"] = "TrophyRace", +-- ["Try to protect the chief! You won't lose if he dies, but it is advised that he survives."] = "", -- A_Classic_Fairytale:united ["T_T"] = "T_T", -- ["Tumbling Time Extended!"] = "", +-- ["Turns until Sudden Death: "] = "", -- A_Classic_Fairytale:dragon +-- [" turns until Sudden Death! Better hurry!"] = "", -- A_Classic_Fairytale:dragon -- ["Turn Time"] = "", +-- ["Two little hogs cooperating, getting past obstacles..."] = "", -- A_Classic_Fairytale:journey +-- ["Uhm...I met one of them and took his weapons."] = "", -- A_Classic_Fairytale:shadow +-- ["Uhmm...ok no."] = "", -- A_Classic_Fairytale:enemy +-- ["ULTRA KILL"] = "", -- Mutant +-- ["Under Construction"] = "", -- A_Classic_Fairytale:shadow +-- ["Unexpected Igor"] = "", -- A_Classic_Fairytale:dragon -- ["Unit"] = "", +-- ["Unit 0x0007"] = "", -- A_Classic_Fairytale:family +-- ["Unit 334a$7%;.*"] = "", -- A_Classic_Fairytale:backstab, A_Classic_Fairytale:dragon, A_Classic_Fairytale:enemy, A_Classic_Fairytale:family, A_Classic_Fairytale:queen, A_Classic_Fairytale:united ["Unit 3378"] = "Enhet 3378", -- ["Unit 835"] = "", +-- ["United We Stand"] = "", -- A_Classic_Fairytale:united -- ["Unlimited Attacks"] = "", +-- ["Unlucky Sods"] = "", -- User_Mission_-_Rope_Knock_Challenge -- ["Unstoppable!"] = "", +-- ["Unsuspecting Louts"] = "", -- User_Mission_-_Rope_Knock_Challenge +-- ["[Up], [Down] to aim, [Space] to shoot!"] = "", -- A_Classic_Fairytale:first_blood +-- ["Use it wisely!"] = "", -- A_Classic_Fairytale:dragon +-- ["Use it with precaution!"] = "", -- A_Classic_Fairytale:first_blood -- ["User Challenge"] = "", +-- ["Use the parachute ([Space] while in air)"] = "", -- +-- ["Use the portal gun to get to the next crate, then use the new gun to get to the final destination!|"] = "", -- A_Classic_Fairytale:dragon +-- ["Use the rope to get on the head of the mole, young one!"] = "", -- A_Classic_Fairytale:first_blood +-- ["Use the rope to knock your enemies to their doom."] = "", -- User_Mission_-_Rope_Knock_Challenge ["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!", +-- ["Vedgies"] = "", -- A_Classic_Fairytale:journey +-- ["Vegan Jack"] = "", -- A_Classic_Fairytale:enemy +-- ["Victory!"] = "", -- Basic_Training_-_Rope ["Victory for the "] = "Vinst för", -- CTF_Blizzard, Capture_the_Flag +-- ["Violence is not the answer to your problems!"] = "", -- A_Classic_Fairytale:first_blood +-- ["Walls Left"] = "", -- WxW +-- ["Walls Required"] = "", -- WxW +-- ["WALL TO WALL"] = "", -- WxW +-- ["Wannabe Flyboys"] = "", -- User_Mission_-_RCPlane_Challenge +-- ["Wannabe Shoppsta"] = "", -- User_Mission_-_Rope_Knock_Challenge +-- ["Watch your steps, young one!"] = "", -- A_Classic_Fairytale:first_blood -- ["Waypoint placed."] = "", -- ["Way-Points Remaining"] = "", +-- ["Weaklings"] = "", -- A_Classic_Fairytale:shadow +-- ["We all know what happens when you get frightened..."] = "", -- A_Classic_Fairytale:first_blood -- ["Weapons Reset"] = "", +-- ["Weapons reset."] = "", -- Highlander +-- ["We are indeed."] = "", -- A_Classic_Fairytale:backstab +-- ["We can't defeat them!"] = "", -- A_Classic_Fairytale:shadow +-- ["We can't hold them up much longer!"] = "", -- A_Classic_Fairytale:united +-- ["We can't let them take over our little island!"] = "", -- A_Classic_Fairytale:enemy +-- ["We have no time to waste..."] = "", -- A_Classic_Fairytale:journey +-- ["We have nowhere else to live!"] = "", -- A_Classic_Fairytale:enemy +-- ["We have to protect the village!"] = "", -- A_Classic_Fairytale:united +-- ["We have to unite and defeat those cylergs!"] = "", -- A_Classic_Fairytale:enemy +-- ["Welcome, Leaks A Lot!"] = "", -- A_Classic_Fairytale:journey -- ["Well done."] = "", +-- ["We'll give you a problem then!"] = "", -- A_Classic_Fairytale:enemy +-- ["We'll spare your life for now!"] = "", -- A_Classic_Fairytale:backstab +-- ["Well, that was a waste of time."] = "", -- A_Classic_Fairytale:dragon +-- ["Well, well! Isn't that the cutest thing you've ever seen?"] = "", -- A_Classic_Fairytale:journey +-- ["Well, yes. This was a cyborg television show."] = "", -- A_Classic_Fairytale:enemy +-- ["We made sure noone followed us!"] = "", -- A_Classic_Fairytale:backstab +-- ["We need to move!"] = "", -- A_Classic_Fairytale:united +-- ["We need to prevent their arrival!"] = "", -- A_Classic_Fairytale:backstab +-- ["We need to warn the village."] = "", -- A_Classic_Fairytale:shadow +-- ["We should head back to the village now."] = "", -- A_Classic_Fairytale:shadow +-- ["We were trying to save her and we got lost."] = "", -- A_Classic_Fairytale:family +-- ["We won't let you hurt her!"] = "", -- A_Classic_Fairytale:journey +-- ["What?! A cannibal? Here? There is no time to waste! Come, you are prepared."] = "", -- A_Classic_Fairytale:first_blood +-- ["What a douche!"] = "", -- A_Classic_Fairytale:enemy +-- ["What am I gonna...eat, yo?"] = "", -- A_Classic_Fairytale:family +-- ["What are you doing at a distance so great, young one?"] = "", -- A_Classic_Fairytale:first_blood +-- ["What are you doing? Let her go!"] = "", -- A_Classic_Fairytale:journey +-- ["What a ride!"] = "", -- A_Classic_Fairytale:shadow +-- ["What a strange cave!"] = "", -- A_Classic_Fairytale:dragon +-- ["What a strange feeling!"] = "", -- A_Classic_Fairytale:backstab +-- ["What do my faulty eyes observe? A spy!"] = "", -- A_Classic_Fairytale:first_blood +-- ["Whatever floats your boat..."] = "", -- A_Classic_Fairytale:shadow +-- [" What !! For all of this struggle i just win some ... TIME o0"] = "", -- portal +-- ["What has "] = "", -- A_Classic_Fairytale:backstab +-- ["What? Here? How did they find us?!"] = "", -- A_Classic_Fairytale:backstab +-- ["What is this place?"] = "", -- A_Classic_Fairytale:dragon, A_Classic_Fairytale:enemy +-- ["What shall we do with the traitor?"] = "", -- A_Classic_Fairytale:backstab +-- ["WHAT?! You're the ones attacking us!"] = "", -- A_Classic_Fairytale:enemy +-- ["When?"] = "", -- A_Classic_Fairytale:enemy +-- ["When I find it..."] = "", -- A_Classic_Fairytale:dragon +-- ["Where are all these crates coming from?!"] = "", -- A_Classic_Fairytale:shadow +-- ["Where are they?!"] = "", -- A_Classic_Fairytale:backstab +-- ["Where did that alien run?"] = "", -- A_Classic_Fairytale:dragon +-- ["Where did you get the exploding apples?"] = "", -- A_Classic_Fairytale:shadow +-- ["Where did you get the exploding apples and the magic bow that shoots many arrows?"] = "", -- A_Classic_Fairytale:shadow +-- ["Where did you get the magic bow that shoots many arrows?"] = "", -- A_Classic_Fairytale:shadow +-- ["Where did you get the weapons in the forest, Dense Cloud?"] = "", -- A_Classic_Fairytale:backstab +-- ["Where do you get that?!"] = "", -- A_Classic_Fairytale:enemy +-- ["Where have you been?!"] = "", -- A_Classic_Fairytale:backstab +-- ["Where have you been?"] = "", -- A_Classic_Fairytale:united +-- ["? Why?"] = "", -- A_Classic_Fairytale:backstab +-- ["Why "] = "", -- A_Classic_Fairytale:backstab +-- ["! Why?!"] = "", -- A_Classic_Fairytale:backstab, A_Classic_Fairytale:united +-- ["Why are you doing this?"] = "", -- A_Classic_Fairytale:journey +-- ["Why are you helping us, uhm...?"] = "", -- A_Classic_Fairytale:family +-- ["Why can't he just let her go?!"] = "", -- A_Classic_Fairytale:family +-- ["Why do men keep hurting me?"] = "", -- A_Classic_Fairytale:first_blood +-- ["Why do you not like me?"] = "", -- A_Classic_Fairytale:shadow +-- ["Why do you want to take over our island?"] = "", -- A_Classic_Fairytale:enemy +-- ["Why me?!"] = "", -- A_Classic_Fairytale:backstab +-- ["Why would they do this?"] = "", -- A_Classic_Fairytale:backstab +-- ["- Will Get 1-3 random weapons"] = "", -- Continental_supplies +-- ["- Will refresh Parachute each turn."] = "", -- Continental_supplies +-- ["- Will refresh portalgun each turn."] = "", -- Continental_supplies -- ["Will this ever end?"] = "", +-- ["WINNER IS "] = "", -- Mutant -- ["WINNING TIME: "] = "", +-- ["Wise Oak"] = "", -- A_Classic_Fairytale:backstab, A_Classic_Fairytale:dragon, A_Classic_Fairytale:enemy, A_Classic_Fairytale:epil, A_Classic_Fairytale:family, A_Classic_Fairytale:queen +-- ["With Dense Cloud on the land of shadows, I'm the village's only hope..."] = "", -- A_Classic_Fairytale:journey +-- ["With the rest of the tribe gone, it was up to "] = "", -- A_Classic_Fairytale:dragon +-- ["Worry not, for it is a peaceful animal! There is no reason to be afraid..."] = "", -- A_Classic_Fairytale:first_blood +-- ["Wow, what a dream!"] = "", -- A_Classic_Fairytale:backstab +-- ["Y3K1337"] = "", -- A_Classic_Fairytale:journey, A_Classic_Fairytale:shadow +-- ["Yay, we won!"] = "", -- A_Classic_Fairytale:enemy +-- ["Y Chwiliad"] = "", -- A_Classic_Fairytale:dragon +-- ["Yeah...I think it's a 'he', lol."] = "", -- A_Classic_Fairytale:shadow +-- ["Yeah, sure! I died. Hillarious!"] = "", -- A_Classic_Fairytale:backstab +-- ["Yeah, take that!"] = "", -- A_Classic_Fairytale:dragon +-- ["Yeah? Watcha gonna do? Cry?"] = "", -- A_Classic_Fairytale:journey +-- ["Yes!"] = "", -- A_Classic_Fairytale:enemy +-- ["Yes, yeees! You are now ready to enter the real world!"] = "", -- A_Classic_Fairytale:first_blood +-- ["Yo, dude, we're here, too!"] = "", -- A_Classic_Fairytale:family +-- ["You are given the chance to turn your life around..."] = "", -- A_Classic_Fairytale:shadow +-- ["You are playing with our lives here!"] = "", -- A_Classic_Fairytale:enemy +-- ["! You bastards!"] = "", -- A_Classic_Fairytale:backstab, A_Classic_Fairytale:united +-- ["You bear impressive skills, "] = "", -- A_Classic_Fairytale:dragon +-- ["You can't fire a portal on the blue surface"] = "", -- portal +-- ["You couldn't possibly believe that after refusing my offer I'd just let you go!"] = "", -- A_Classic_Fairytale:journey -- ["You'd almost swear the water was rising!"] = "", +-- ["You'd better watch your steps..."] = "", -- A_Classic_Fairytale:journey +-- ["You did not make it in time, try again!"] = "", -- Basic_Training_-_Rope +-- ["You have 7 turns until the next wave arrives.|Make sure the arriving cannibals are greeted appropriately!|If the hog dies, the cause is lost.|Hint: you might want to use some mines..."] = "", -- A_Classic_Fairytale:backstab +-- ["You have "] = "", -- A_Classic_Fairytale:dragon +-- ["You have been giving us out to the enemy, haven't you!"] = "", -- A_Classic_Fairytale:backstab +-- ["You have been respawned, at your last checkpoint!"] = "", -- Basic_Training_-_Rope +-- ["You have been respawned, be more carefull next time!"] = "", -- Basic_Training_-_Rope +-- ["You have chosen the perfect moment to leave."] = "", -- A_Classic_Fairytale:united +-- ["You have failed to complete your task, young one!"] = "", -- A_Classic_Fairytale:journey +-- ["You have failed to save the tribe!"] = "", -- A_Classic_Fairytale:backstab +-- ["You have finally figured it out!"] = "", -- A_Classic_Fairytale:enemy +-- ["You have kidnapped our whole tribe!"] = "", -- A_Classic_Fairytale:enemy +-- ["You have killed an innocent hedgehog!"] = "", -- A_Classic_Fairytale:backstab +-- ["You have proven yourself worthy to see our most ancient secret!"] = "", -- A_Classic_Fairytale:first_blood +-- ["You have proven yourselves worthy!"] = "", -- A_Classic_Fairytale:enemy ["You have SCORED!!"] = "Du har tagit poäng!", +-- ["You have to destroy 12 targets in 180 seconds"] = "", -- Basic_Training_-_Cluster_Bomb +-- ["You have won the game by proving true cooperative skills!"] = "", -- A_Classic_Fairytale:enemy +-- ["You just appeared out of thin air!"] = "", -- A_Classic_Fairytale:backstab +-- ["You just committed suicide..."] = "", -- A_Classic_Fairytale:shadow +-- ["You killed my father, you monster!"] = "", -- A_Classic_Fairytale:backstab +-- ["You know...taking a stroll."] = "", -- A_Classic_Fairytale:backstab +-- ["You know what? I don't even regret anything!"] = "", -- A_Classic_Fairytale:backstab +-- ["You'll see what I mean!"] = "", -- A_Classic_Fairytale:enemy +-- ["You may only attack from a rope!"] = "", -- WxW +-- ["You meatbags are pretty slow, you know!"] = "", -- A_Classic_Fairytale:enemy +-- ["You might want to find a way to instantly kill arriving cannibals!"] = "", -- A_Classic_Fairytale:backstab +-- ["Young one, you are telling us that they can instantly change location without a shaman?"] = "", -- A_Classic_Fairytale:united +-- ["You probably know what to do next..."] = "", -- A_Classic_Fairytale:first_blood +-- ["Your deaths will be avenged, cannibals!"] = "", -- A_Classic_Fairytale:enemy +-- ["Your death will not be in vain, Dense Cloud!"] = "", -- A_Classic_Fairytale:shadow +-- ["You're...alive!? But we saw you die!"] = "", -- A_Classic_Fairytale:backstab +-- ["You're a pathetic liar!"] = "", -- A_Classic_Fairytale:backstab +-- ["You're funny!"] = "", -- A_Classic_Fairytale:journey +-- ["You're getting pretty good! |Tip: When you shorten you rope you move faster! |and when you lengthen it you move slower"] = "", -- Basic_Training_-_Rope +-- ["You're pathetic! You are not worthy of my attention..."] = "", -- A_Classic_Fairytale:shadow +-- ["You're probably wondering why I bought you back..."] = "", -- A_Classic_Fairytale:backstab +-- ["You're terrorizing the forest...We won't catch anything like this!"] = "", -- A_Classic_Fairytale:shadow +-- ["Your hogs must survive!"] = "", -- A_Classic_Fairytale:journey +-- ["Your movement skills will be evaluated now."] = "", -- A_Classic_Fairytale:first_blood -- ["You saved"] = "", +-- ["You've been assaulting us, we have been just defending ourselves!"] = "", -- A_Classic_Fairytale:enemy ["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: ", +-- ["You will be avenged!"] = "", -- A_Classic_Fairytale:shadow +-- ["You won't believe what happened to me!"] = "", -- A_Classic_Fairytale:backstab +-- ["Yuck! I bet they'll keep worshipping her even after I save the village!"] = "", -- A_Classic_Fairytale:family +-- ["Zealandia"] = "", -- Continental_supplies ["'Zooka Team"] = "Bazookalaget", +-- ["Zork"] = "", -- A_Classic_Fairytale:dragon, A_Classic_Fairytale:family, A_Classic_Fairytale:queen } diff -r 3331b30e4ef1 -r 88fde28bbda6 share/hedgewars/Data/Locale/uk.lua --- a/share/hedgewars/Data/Locale/uk.lua Sun Oct 21 01:28:33 2012 +0400 +++ b/share/hedgewars/Data/Locale/uk.lua Sat Nov 03 00:34:35 2012 +0400 @@ -1,159 +1,640 @@ locale = { -- [":("] = "", - ["!!!"] = "Я!", -- ["..."] = "", +-- ["011101000"] = "", -- A_Classic_Fairytale:dragon +-- ["011101001"] = "", -- A_Classic_Fairytale:backstab, A_Classic_Fairytale:dragon, A_Classic_Fairytale:enemy, A_Classic_Fairytale:family, A_Classic_Fairytale:journey, A_Classic_Fairytale:queen, A_Classic_Fairytale:shadow, A_Classic_Fairytale:united +-- ["30 minutes later..."] = "", -- A_Classic_Fairytale:shadow +-- ["About a month ago, a cyborg came and told us that you're the cannibals!"] = "", -- A_Classic_Fairytale:enemy ["Accuracy Bonus!"] = "Ð‘Ð¾Ð½ÑƒÑ Ð¢Ð¾Ñ‡Ð½Ð¾ÑÑ‚Ñ–!", +-- ["Ace"] = "", -- User_Mission_-_RCPlane_Challenge, User_Mission_-_Rope_Knock_Challenge ["Achievement Unlocked"] = "ДоÑÑÐ³Ð½ÐµÐ½Ð½Ñ Ð Ð¾Ð·Ð±Ð»Ð¾ÐºÐ¾Ð²Ð°Ð½Ð¾", -- User_Mission_-_Bamboo_Thicket, User_Mission_-_That_Sinking_Feeling, Tumbler +-- ["A Classic Fairytale"] = "", -- A_Classic_Fairytale:first_blood +-- ["???"] = "", -- A_Classic_Fairytale:backstab +-- ["Actually, you aren't worthy of life! Take this..."] = "", -- A_Classic_Fairytale:shadow +-- ["A cy-what?"] = "", -- A_Classic_Fairytale:enemy +-- ["Adventurous"] = "", -- A_Classic_Fairytale:journey +-- ["Africa"] = "", -- Continental_supplies +-- ["After Leaks A Lot betrayed his tribe, he joined the cannibals..."] = "", -- A_Classic_Fairytale:first_blood +-- ["After the shock caused by the enemy spy, Leaks A Lot and Dense Cloud went hunting to relax."] = "", -- A_Classic_Fairytale:shadow +-- ["Again with the 'cannibals' thing!"] = "", -- A_Classic_Fairytale:enemy +-- ["a Hedgewars challenge"] = "", -- User_Mission_-_RCPlane_Challenge, User_Mission_-_Rope_Knock_Challenge ["a Hedgewars mini-game"] = "Міні-гра Hedgewars", -- Space_Invasion, The_Specialists ["Aiming Practice"] = "Практика прицілюваннÑ", --Bazooka, Shotgun, SniperRifle - ["Ammo"] = "БоєприпаÑи", +-- ["A leap in a leap"] = "", -- A_Classic_Fairytale:first_blood +-- ["A little gift from the cyborgs"] = "", -- A_Classic_Fairytale:shadow +-- ["All gone...everything!"] = "", -- A_Classic_Fairytale:enemy +-- ["All right, we just need to get to the other side of the island!"] = "", -- A_Classic_Fairytale:journey +-- ["All walls touched!"] = "", -- WxW ["Ammo Depleted!"] = "БоєприпаÑи СкінчилиÑÑŒ!", ["ammo extended!"] = "БоєприпаÑи поповнені!", ["Ammo is reset at the end of your turn."] = "БоєприпаÑи обнулÑÑŽÑ‚ÑŒÑÑ Ð² кінці вашого ходу.", ["Ammo Maniac!"] = "МаніÑк БоєприпаÑів!", + ["Ammo"] = "БоєприпаÑи", +-- ["And how am I alive?!"] = "", -- A_Classic_Fairytale:enemy +-- ["And so happenned that Leaks A Lot failed to complete the challenge! He landed, pressured by shame..."] = "", -- A_Classic_Fairytale:first_blood +-- ["And so it began..."] = "", -- A_Classic_Fairytale:first_blood +-- ["...and so the cyborgs took over the world..."] = "", -- A_Classic_Fairytale:shadow +-- ["And so they discovered that cyborgs weren't invulnerable..."] = "", -- A_Classic_Fairytale:journey +-- ["And where's all the weed?"] = "", -- A_Classic_Fairytale:dragon +-- ["And you believed me? Oh, god, that's cute!"] = "", -- A_Classic_Fairytale:journey +-- ["Anno 1032: [The explosion will make a strong push ~ wide range, wont affect hogs close to the target]"] = "", -- Continental_supplies +-- ["Antarctica"] = "", -- Continental_supplies +-- ["Are we there yet?"] = "", -- A_Classic_Fairytale:shadow +-- ["Are you accusing me of something?"] = "", -- A_Classic_Fairytale:backstab +-- ["Are you saying that many of us have died for your entertainment?"] = "", -- A_Classic_Fairytale:enemy +-- ["Artur Detour"] = "", -- A_Classic_Fairytale:queen +-- ["As a reward for your performance, here's some new technology!"] = "", -- A_Classic_Fairytale:dragon +-- ["a shoppa minigame"] = "", -- WxW +-- ["Asia"] = "", -- Continental_supplies +-- ["Assault Team"] = "", -- A_Classic_Fairytale:backstab +-- ["As the ammo is sparse, you might want to reuse ropes while mid-air.|"] = "", -- A_Classic_Fairytale:dragon +-- ["As the challenge was completed, Leaks A Lot set foot on the ground..."] = "", -- A_Classic_Fairytale:first_blood +-- ["As you can see, there is no way to get on the other side!"] = "", -- A_Classic_Fairytale:dragon +-- ["Attack From Rope"] = "", -- WxW +-- ["Australia"] = "", -- Continental_supplies ["Available points remaining: "] = "ЗалишилоÑÑŒ доÑтупних очків: ", +-- ["Back Breaker"] = "", -- A_Classic_Fairytale:backstab +-- ["Back in the village, after telling the villagers about the threat..."] = "", -- A_Classic_Fairytale:united -- ["[Backspace]"] = "", +-- ["Backstab"] = "", -- A_Classic_Fairytale:backstab +-- ["Bad Team"] = "", -- User_Mission_-_The_Great_Escape ["Bamboo Thicket"] = "Бамбукові Хащі", ["Barrel Eater!"] = "Поїдач Бочок!", ["Barrel Launcher"] = "Катапульта Ð´Ð»Ñ Ð±Ð¾Ñ‡Ð¾Ðº", +-- ["Baseballbat"] = "", -- Continental_supplies ["Bat balls at your enemies and|push them into the sea!"] = "Закидайте ворогів м'Ñчами щоб|зіштовути Ñ—Ñ… у море!", ["Bat your opponents through the|baskets and out of the map!"] = "ДубаÑьте опонентів битою через|кошики та за межі карти!", ["Bazooka Training"] = "Ð¢Ñ€ÐµÐ½ÑƒÐ²Ð°Ð½Ð½Ñ Ð· базукою", +-- ["Beep Loopers"] = "", -- A_Classic_Fairytale:queen ["Best laps per team: "] = "Кращі партії на команду: ", ["Best Team Times: "] = "Кращий Командний ЧаÑ: ", +-- ["Beware, though! If you are slow, you die!"] = "", -- A_Classic_Fairytale:dragon +-- ["Biomechanic Team"] = "", -- A_Classic_Fairytale:family +-- ["Blender"] = "", -- A_Classic_Fairytale:family +-- ["Bloodpie"] = "", -- A_Classic_Fairytale:backstab +-- ["Bloodrocutor"] = "", -- A_Classic_Fairytale:shadow +-- ["Bloodsucker"] = "", -- A_Classic_Fairytale:shadow ["Bloody Rookies"] = "Криваві Салаги", -- 01#Boot_Camp, User_Mission_-_Dangerous_Ducklings, User_Mission_-_Diver, User_Mission_-_Spooky_Tree +-- ["Bone Jackson"] = "", -- A_Classic_Fairytale:backstab +-- ["Bonely"] = "", -- A_Classic_Fairytale:shadow + ["Boom!"] = "Бабах!", ["BOOM!"] = "БÐБÐÐ¥!", - ["Boom!"] = "Бабах!", ["Boss defeated!"] = "БоÑа переможено!", ["Boss Slayer!"] = "Ð’Ð±Ð¸Ð²Ñ†Ñ Ð‘Ð¾Ñа!", +-- ["Brain Blower"] = "", -- A_Classic_Fairytale:journey +-- ["Brainiac"] = "", -- A_Classic_Fairytale:epil, A_Classic_Fairytale:first_blood, A_Classic_Fairytale:shadow +-- ["Brainila"] = "", -- A_Classic_Fairytale:united +-- ["Brain Stu"] = "", -- A_Classic_Fairytale:united +-- ["Brain Teaser"] = "", -- A_Classic_Fairytale:backstab +-- ["Brutal Lily"] = "", -- A_Classic_Fairytale:enemy, A_Classic_Fairytale:epil +-- ["Brutus"] = "", -- A_Classic_Fairytale:backstab ["Build a track and race."] = "Створіть траÑу та женіть.", +-- ["Bullseye"] = "", -- A_Classic_Fairytale:dragon +-- ["But it proved to be no easy task!"] = "", -- A_Classic_Fairytale:dragon +-- ["But that's impossible!"] = "", -- A_Classic_Fairytale:backstab +-- ["But the ones alive are stronger in their heart!"] = "", -- A_Classic_Fairytale:enemy +-- ["But...we died!"] = "", -- A_Classic_Fairytale:backstab +-- ["But where can we go?"] = "", -- A_Classic_Fairytale:united +-- ["But why would they help us?"] = "", -- A_Classic_Fairytale:backstab +-- ["But you're cannibals. It's what you do."] = "", -- A_Classic_Fairytale:enemy +-- ["But you said you'd let her go!"] = "", -- A_Classic_Fairytale:journey +-- ["Call me Beep! Well, 'cause I'm such a nice...person!"] = "", -- A_Classic_Fairytale:family +-- ["Cannibals"] = "", -- A_Classic_Fairytale:enemy, A_Classic_Fairytale:epil, A_Classic_Fairytale:first_blood +-- ["Cannibal Sentry"] = "", -- A_Classic_Fairytale:journey +-- ["Cannibals?! You're the cannibals!"] = "", -- A_Classic_Fairytale:enemy ["CAPTURE THE FLAG"] = "ЗÐХОПЛЕÐÐЯ ПРÐПОРÐ", ["Careless"] = "Безтурботний", +-- ["Carol"] = "", -- A_Classic_Fairytale:family +-- ["CHALLENGE COMPLETE"] = "", -- User_Mission_-_RCPlane_Challenge ["Change Weapon"] = "Змінити Зброю", +-- ["Choose your side! If you want to join the strange man, walk up to him.|Otherwise, walk away from him. If you decide to att...nevermind..."] = "", -- A_Classic_Fairytale:shadow ["Clumsy"] = "Ðезграбний", +-- ["Cluster Bomb MASTER!"] = "", -- Basic_Training_-_Cluster_Bomb +-- ["Cluster Bomb Training"] = "", -- Basic_Training_-_Cluster_Bomb ["Codename: Teamwork"] = "Кодова назва: Командна гра", +-- ["Collateral Damage"] = "", -- A_Classic_Fairytale:journey +-- ["Collateral Damage II"] = "", -- A_Classic_Fairytale:journey +-- ["Collect all the crates, but remember, our time in this life is limited!"] = "", -- A_Classic_Fairytale:first_blood +-- ["Collect or destroy all the health crates."] = "", -- User_Mission_-_RCPlane_Challenge +-- ["Collect the crate on the right.|Hint: Select the rope, [Up] or [Down] to aim, [Space] to fire, directional keys to move.|Ropes can be fired again in the air!"] = "", -- A_Classic_Fairytale:first_blood +-- ["Collect the crates within the time limit!|If you fail, you'll have to try again."] = "", -- A_Classic_Fairytale:first_blood +-- ["Come closer, so that your training may continue!"] = "", -- A_Classic_Fairytale:first_blood +-- ["Compete to use as few planes as possible!"] = "", -- User_Mission_-_RCPlane_Challenge ["Complete the track as fast as you can!"] = "Подолайте траÑу так швидко, Ñк тільки зможете!", +-- ["COMPLETION TIME"] = "", -- User_Mission_-_Rope_Knock_Challenge +-- ["Configuration accepted."] = "", -- WxW +-- ["Congratulations"] = "", -- Basic_Training_-_Rope +-- ["Congratulations! You needed only half of time|to eliminate all targets."] = "", -- Basic_Training_-_Cluster_Bomb +-- ["Congratulations! You've completed the Rope tutorial! |- Tutorial ends in 10 seconds!"] = "", -- Basic_Training_-_Rope ["Congratulations! You've eliminated all targets|within the allowed time frame."] = "Вітаємо! Ви знищили вÑÑ– цілі|в межах дозволеного чаÑу.", --Bazooka, Shotgun, SniperRifle ["Congratulations!"] = "Вітаємо!", +-- ["Continental supplies"] = "", -- Continental_supplies ["Control pillars to score points."] = "Контрольюй Ñтовпи щоб набрати очки.", +-- ["Corporationals"] = "", -- A_Classic_Fairytale:queen +-- ["Corpsemonger"] = "", -- A_Classic_Fairytale:shadow +-- ["Corpse Thrower"] = "", -- A_Classic_Fairytale:epil +-- ["Crates Left:"] = "", -- User_Mission_-_RCPlane_Challenge ["Cybernetic Empire"] = "Кібернетична ІмперіÑ", +-- ["Cyborg. It's what the aliens call themselves."] = "", -- A_Classic_Fairytale:enemy +-- ["Dahmer"] = "", -- A_Classic_Fairytale:backstab ["DAMMIT, ROOKIE! GET OFF MY HEAD!"] = "ЧОРТ ЗÐБИРÐЙ, СÐЛÐГÐ! ЗЛІЗЬ З МОЄЇ ГОЛОВИ!", ["DAMMIT, ROOKIE!"] = "ЧОРТ ЗÐБИРÐЙ, СÐЛÐГÐ!", ["Dangerous Ducklings"] = "Ðебезпечні КаченÑта", ["Deadweight"] = "ВлаÑна вага", +-- ["Defeat the cannibals"] = "", -- A_Classic_Fairytale:backstab +-- ["Defeat the cannibals!|"] = "", -- A_Classic_Fairytale:united +-- ["Defeat the cannibals!|Grenade hint: set the timer with [1-5], aim with [Up]/[Down] and hold [Space] to set power"] = "", -- A_Classic_Fairytale:shadow +-- ["Defeat the cyborgs!"] = "", -- A_Classic_Fairytale:enemy +-- ["Defend yourself!|Hint: You can get tips on using weapons by moving your mouse over them in the weapon selection menu"] = "", -- A_Classic_Fairytale:shadow ["Demolition is fun!"] = "Ð ÑƒÐ¹Ð½ÑƒÐ²Ð°Ð½Ð½Ñ Ñ†Ðµ веÑело!", +-- ["Dense Cloud"] = "", -- A_Classic_Fairytale:backstab, A_Classic_Fairytale:dragon, A_Classic_Fairytale:enemy, A_Classic_Fairytale:epil, A_Classic_Fairytale:family, A_Classic_Fairytale:journey, A_Classic_Fairytale:queen, A_Classic_Fairytale:shadow, A_Classic_Fairytale:united +-- ["Dense Cloud must have already told them everything..."] = "", -- A_Classic_Fairytale:shadow ["Depleted Kamikaze!"] = "ВиÑнажений Камікадзе!", +-- ["Destroy him, Leaks A Lot! He is responsible for the deaths of many of us!"] = "", -- A_Classic_Fairytale:first_blood ["Destroy invaders to score points."] = "Знищіть загарбників, щоб набрати очки.", +-- ["Destroy the targets!|Hint: Select the Shoryuken and hit [Space]|P.S. You can use it mid-air."] = "", -- A_Classic_Fairytale:first_blood +-- ["Destroy the targets!|Hint: [Up], [Down] to aim, [Space] to shoot"] = "", -- A_Classic_Fairytale:first_blood +-- ["Did anyone follow you?"] = "", -- A_Classic_Fairytale:united +-- ["Did you see him coming?"] = "", -- A_Classic_Fairytale:shadow +-- ["Did you warn the village?"] = "", -- A_Classic_Fairytale:shadow +-- ["Die, die, die!"] = "", -- A_Classic_Fairytale:dragon +-- ["Disguise as a Rockhopper Penguin: [Swap place with a random enemy hog in the circle]"] = "", -- Continental_supplies +-- ["Dist: "] = "", -- Space_Invasion +-- ["Do not laugh, inexperienced one, for he speaks the truth!"] = "", -- A_Classic_Fairytale:backstab +-- ["Do not let his words fool you, young one! He will stab you in the back as soon as you turn away!"] = "", -- A_Classic_Fairytale:first_blood +-- ["Do the deed"] = "", -- A_Classic_Fairytale:first_blood +-- ["DOUBLE KILL"] = "", -- Mutant ["Double Kill!"] = "Подвійне ВбивÑтво!", +-- ["Do you have any idea how valuable grass is?"] = "", -- A_Classic_Fairytale:enemy +-- ["Do you think you're some kind of god?"] = "", -- A_Classic_Fairytale:enemy +-- ["Dragon's Lair"] = "", -- A_Classic_Fairytale:dragon +-- ["Drills"] = "", -- A_Classic_Fairytale:backstab ["Drone Hunter!"] = "МиÑливець за ДжмелÑми!", +-- ["Drop a bomb: [drop some heroic wind that will turn into a bomb on impact]"] = "", -- Continental_supplies ["Drowner"] = "Потопаючий", +-- ["Dude, all the plants are gone!"] = "", -- A_Classic_Fairytale:family +-- ["Dude, can you see Ramon and Spiky?"] = "", -- A_Classic_Fairytale:journey +-- ["Dude, that's so cool!"] = "", -- A_Classic_Fairytale:backstab +-- ["Dude, we really need a new shaman..."] = "", -- A_Classic_Fairytale:shadow +-- ["Dude, what's this place?!"] = "", -- A_Classic_Fairytale:dragon +-- ["Dude, where are we?"] = "", -- A_Classic_Fairytale:backstab +-- ["Dude, wow! I just had the weirdest high!"] = "", -- A_Classic_Fairytale:backstab +-- ["Duration"] = "", -- Continental_supplies +-- ["Dust storm: [Deals 20 damage to all enemies in the circle]"] = "", -- Continental_supplies ["Each turn you get 1-3 random weapons"] = "Кожного ходу ви отримуєте 1-3 випадкової зброї", ["Each turn you get one random weapon"] = "Кожного ходу ви отримуєте одну випадкову зброю", +-- ["Eagle Eye"] = "", -- A_Classic_Fairytale:backstab +-- ["Eagle Eye: [Blink to the impact ~ one shot]"] = "", -- Continental_supplies +-- ["Ear Sniffer"] = "", -- A_Classic_Fairytale:backstab, A_Classic_Fairytale:epil +-- ["Elderbot"] = "", -- A_Classic_Fairytale:family +-- ["Elimate your captor."] = "", -- User_Mission_-_The_Great_Escape ["Eliminate all enemies"] = "Ліквідуйте вÑÑ–Ñ… ворогів", ["Eliminate all targets before your time runs out.|You have unlimited ammo for this mission."] = "Знищіть вÑÑ– цілі до Ð·Ð°ÐºÑ–Ð½Ñ‡ÐµÐ½Ð½Ñ Ñ‡Ð°Ñу.|У Ð²Ð°Ñ Ð±ÐµÐ·Ð¼ÐµÐ¶Ð½Ñ– боєприпаÑи.", --Bazooka, Shotgun, SniperRifle +-- ["Eliminate enemy hogs and take their weapons."] = "", -- Highlander ["Eliminate Poison before the time runs out"] = "Знешкодьте Смердюка до Ð·Ð°ÐºÑ–Ð½Ñ‡ÐµÐ½Ð½Ñ Ñ‡Ð°Ñу", ["Eliminate the Blue Team"] = "Знищіть Синю Команду", ["Eliminate the enemy before the time runs out"] = "Знешкодьте ворога до Ð·Ð°ÐºÑ–Ð½Ñ‡ÐµÐ½Ð½Ñ Ñ‡Ð°Ñу", -- User_Mission_-_Bamboo_Thicket, User_Mission_-_Newton_and_the_Hammock ["Eliminate the enemy hogs to win."] = "Знешкодьте ворожих їжаків щоб перемогти.", ["Eliminate the enemy specialists."] = "Знешкодьте ворожих ÑпеціаліÑтів.", ["- Eliminate Unit 3378 |- Feeble Resistance must survive"] = "- Знищіть Об'єкт 3378 |- Жалюгідні ПовÑтанці повинні вижити", +-- ["Elmo"] = "", -- A_Classic_Fairytale:dragon, A_Classic_Fairytale:family, A_Classic_Fairytale:queen ["Energetic Engineer"] = "Енергетичний Інженер", ["Enjoy the swim..."] = "ÐаÑолоджуйÑÑ Ð¿Ð»Ð°Ð²Ð°Ð½Ð½Ñм...", -- ["[Enter]"] = "", +-- ["Europe"] = "", -- Continental_supplies +-- [" ever done to you?!"] = "", -- A_Classic_Fairytale:backstab +-- ["Everyone knows this."] = "", -- A_Classic_Fairytale:enemy +-- ["Every single time!"] = "", -- A_Classic_Fairytale:dragon +-- ["Everything looks OK..."] = "", -- A_Classic_Fairytale:enemy +-- ["Exactly, man! That was my dream."] = "", -- A_Classic_Fairytale:backstab +-- ["Eye Chewer"] = "", -- A_Classic_Fairytale:journey +-- ["FAG"] = "", -- Mutant +-- ["Family Reunion"] = "", -- A_Classic_Fairytale:family ["Fastest lap: "] = "Ðайшвидша партіÑ: ", ["Feeble Resistance"] = "Жалюгідні ПовÑтанці", +-- ["Fell From Grace"] = "", -- A_Classic_Fairytale:backstab, A_Classic_Fairytale:dragon, A_Classic_Fairytale:enemy, A_Classic_Fairytale:epil, A_Classic_Fairytale:family, A_Classic_Fairytale:queen +-- ["Fell From Heaven"] = "", -- A_Classic_Fairytale:enemy, A_Classic_Fairytale:epil, A_Classic_Fairytale:family, A_Classic_Fairytale:first_blood, A_Classic_Fairytale:journey, A_Classic_Fairytale:queen +-- ["Fell From Heaven is the best! Fell From Heaven is the greatest!"] = "", -- A_Classic_Fairytale:family +-- ["Femur Lover"] = "", -- A_Classic_Fairytale:shadow +-- ["Fierce Competition!"] = "", -- Space_Invasion +-- ["Fiery Water"] = "", -- A_Classic_Fairytale:backstab, A_Classic_Fairytale:dragon, A_Classic_Fairytale:enemy, A_Classic_Fairytale:epil, A_Classic_Fairytale:family, A_Classic_Fairytale:queen, A_Classic_Fairytale:united +-- ["Find your tribe!|Cross the lake!"] = "", -- A_Classic_Fairytale:dragon +-- ["Finish your training|Hint: Animations can be skipped with the [Precise] key."] = "", -- A_Classic_Fairytale:first_blood +-- ["Fire a mine: [Does what it says ~ Cant be dropped close to an enemy ~ 1 sec]"] = "", -- Continental_supplies ["Fire"] = "Вогонь", +-- ["First aid kits?!"] = "", -- A_Classic_Fairytale:united +-- ["First Blood"] = "", -- A_Classic_Fairytale:first_blood +-- ["FIRST BLOOD MUTATES"] = "", -- Mutant +-- ["First Steps"] = "", -- A_Classic_Fairytale:first_blood ["Flag captured!"] = "Прапор захоплено!", ["Flag respawned!"] = "Прапор відновлено!", ["Flag returned!"] = "Прапор повернено!", ["Flags, and their home base will be placed where each team ends their first turn."] = "Прапори Ñ– Ñ—Ñ… Ð±Ð°Ð·ÑƒÐ²Ð°Ð½Ð½Ñ Ð±ÑƒÐ´ÑƒÑ‚ÑŒ розміщені там, де кожна команда закінчить Ñ—Ñ— перший хід.", ["Flamer"] = "Вогнемет", +-- ["Flaming Worm"] = "", -- A_Classic_Fairytale:backstab +-- ["Flare: [fire up some bombs depending on hogs depending on hogs in the circle"] = "", -- Continental_supplies +-- ["Flesh for Brainz"] = "", -- A_Classic_Fairytale:journey +-- ["For improved features/stability, play 0.9.18+"] = "", -- WxW +-- ["Free Dense Cloud and continue the mission!"] = "", -- A_Classic_Fairytale:journey ["Friendly Fire!"] = "Дружній Вогонь!", ["fuel extended!"] = "пальне поповнене!", ["GAME BEGUN!!!"] = "ГРРПОЧÐЛÐСЬ!!!", ["Game Modifiers: "] = "Модифікатори Гри: ", ["GAME OVER!"] = "КІÐЕЦЬ ГРИ!", ["Game Started!"] = "Гра почалаÑÑŒ!", +-- ["Game? Was this a game to you?!"] = "", -- A_Classic_Fairytale:enemy +-- ["GasBomb"] = "", -- Continental_supplies +-- ["Gas Gargler"] = "", -- A_Classic_Fairytale:queen +-- ["Get Dense Cloud out of the pit!"] = "", -- A_Classic_Fairytale:journey ["Get on over there and take him out!"] = "Залізь туди Ñ– прикінчи його!", +-- ["Get on the head of the mole"] = "", -- A_Classic_Fairytale:first_blood +-- ["Get out of there!"] = "", -- User_Mission_-_The_Great_Escape +-- ["Get that crate!"] = "", -- A_Classic_Fairytale:first_blood +-- ["Get the crate on the other side of the island!|"] = "", -- A_Classic_Fairytale:journey +-- ["Get to the target using your rope! |Controls: Left & Right to swing the rope - Up & Down to Contract and Expand!"] = "", -- Basic_Training_-_Rope +-- ["Get your teammates out of their natural prison and save the princess!|Hint: Drilling holes should solve everything.|Hint: It might be a good idea to place a girder before starting to drill. Just saying.|Hint: All your hedgehogs need to be above the marked height!|Hint: Leaks A Lot needs to get really close to the princess!"] = "", -- A_Classic_Fairytale:family +-- ["GG!"] = "", -- User_Mission_-_Rope_Knock_Challenge +-- ["Gimme Bones"] = "", -- A_Classic_Fairytale:backstab +-- ["Glark"] = "", -- A_Classic_Fairytale:shadow ["Goal"] = "Мета", ["GO! GO! GO!"] = "ДÐÐ’ÐЙ! ДÐÐ’ÐЙ! РУХÐЙСЯ!", ["Good birdy......"] = "Гарна пташка......", +-- ["Good Dude"] = "", -- User_Mission_-_The_Great_Escape +-- ["Good idea, they'll never find us there!"] = "", -- A_Classic_Fairytale:united +-- ["Good luck...or else!"] = "", -- A_Classic_Fairytale:journey ["Good luck out there!"] = "Удачі!", ["Good so far!"] = "Покищо добре!", ["Good to go!"] = "Так тримати!", +-- ["Go on top of the flower"] = "", -- A_Classic_Fairytale:first_blood +-- ["Go, quick!"] = "", -- A_Classic_Fairytale:backstab +-- ["Gorkij"] = "", -- A_Classic_Fairytale:journey +-- ["Go surf!"] = "", -- WxW ["GOTCHA!"] = "ПОПÐВСЯ!", ["Grab Mines/Explosives"] = "Схопити Міни/Вибухівку", +-- ["Great choice, Steve! Mind if I call you that?"] = "", -- A_Classic_Fairytale:shadow +-- ["Great work! Now hit it with your Baseball Bat! |Tip: You can change weapon with 'Right Click'!"] = "", -- Basic_Training_-_Rope +-- ["Great! You will be contacted soon for assistance."] = "", -- A_Classic_Fairytale:shadow +-- ["Green lipstick bullet: [Is poisonous]"] = "", -- Continental_supplies +-- ["Greetings, "] = "", -- A_Classic_Fairytale:dragon +-- ["Greetings, cloudy one!"] = "", -- A_Classic_Fairytale:shadow +-- ["Grenade Training"] = "", -- Basic_Training_-_Grenade +-- ["Grenadiers"] = "", -- Basic_Training_-_Grenade +-- ["Guys, do you think there's more of them?"] = "", -- A_Classic_Fairytale:backstab +-- ["HAHA!"] = "", -- A_Classic_Fairytale:enemy +-- ["Haha!"] = "", -- A_Classic_Fairytale:united ["Hahahaha!"] = "Хахахаха!", ["Haha, now THAT would be something!"] = "Хаха, от ЦЕ буде щоÑÑŒ!", - ["Hapless Hogs"] = "ÐещаÑні Їжаки", +-- ["Hannibal"] = "", -- A_Classic_Fairytale:epil [" Hapless Hogs left!"] = " ÐещаÑних Їжаків лишилоÑÑŒ!", + ["Hapless Hogs"] = "ÐещаÑні Їжаки", +-- [" HAS MUTATED\" )"] = "", -- +-- ["Hatless Jerry"] = "", -- A_Classic_Fairytale:queen +-- ["Have no illusions, your tribe is dead, indifferent of your choice."] = "", -- A_Classic_Fairytale:shadow +-- ["Have we ever attacked you first?"] = "", -- A_Classic_Fairytale:enemy ["Health crates extend your time."] = "Ящики зі здоров'Ñм продовжують ваш чаÑ.", +-- ["Heavy Cannfantry"] = "", -- A_Classic_Fairytale:united ["Heavy"] = "Ð’'Ñлий", +-- ["Hedge-cogs"] = "", -- A_Classic_Fairytale:enemy +-- ["Hedgehog projectile: [fire your hog like a Sticky Bomb]"] = "", -- Continental_supplies ["Hedgewars-Basketball"] = "БаÑкетбол Їжаками", ["Hedgewars-Knockball"] = "БейÑбол Їжаками", +-- ["Hedgibal Lecter"] = "", -- A_Classic_Fairytale:backstab ["Heh, it's not that bad."] = "хех, це не так вже й погано.", +-- ["Hello again, "] = "", -- A_Classic_Fairytale:family +-- ["Help me, Leaks!"] = "", -- A_Classic_Fairytale:journey +-- ["Help me, please!!!"] = "", -- A_Classic_Fairytale:journey +-- ["Help me, please!"] = "", -- A_Classic_Fairytale:journey +-- ["He moves like an eagle in the sky."] = "", -- A_Classic_Fairytale:first_blood +-- ["He must be in the village already."] = "", -- A_Classic_Fairytale:journey +-- ["Here, let me help you!"] = "", -- A_Classic_Fairytale:backstab +-- ["Here, let me help you save her!"] = "", -- A_Classic_Fairytale:family +-- ["Here...pick your weapon!"] = "", -- A_Classic_Fairytale:first_blood +-- ["Hero Team"] = "", -- User_Mission_-_The_Great_Escape +-- ["He's so brave..."] = "", -- A_Classic_Fairytale:first_blood +-- ["He won't be selling us out anymore!"] = "", -- A_Classic_Fairytale:backstab +-- ["Hey, guys!"] = "", -- A_Classic_Fairytale:backstab +-- ["Hey guys!"] = "", -- A_Classic_Fairytale:united +-- ["Hey! This is cheating!"] = "", -- A_Classic_Fairytale:journey +-- ["HIGHLANDER"] = "", -- Highlander +-- ["Hightime"] = "", -- A_Classic_Fairytale:first_blood +-- ["Hint: Double Jump - Press [Backspace] twice"] = "", -- A_Classic_Fairytale:first_blood +-- ["Hint: Select the BlowTorch, aim and press [Fire]. Press [Fire] again to stop.|Don't blow up the crate."] = "", -- A_Classic_Fairytale:journey +-- ["Hint: Select the LowGravity and press [Fire]."] = "", -- A_Classic_Fairytale:journey +-- ["Hint: you might want to stay out of sight and take all the crates...|"] = "", -- A_Classic_Fairytale:journey +-- ["His arms are so strong!"] = "", -- A_Classic_Fairytale:first_blood ["Hit Combo!"] = "Зробив Комбо!", +-- ["Hmmm...actually...I didn't either."] = "", -- A_Classic_Fairytale:enemy +-- ["Hmmm, I'll have to find some way of moving him off this anti-portal surface..."] = "", -- portal +-- ["Hmmm...it's a draw. How unfortunate!"] = "", -- A_Classic_Fairytale:enemy +-- ["Hmmm...perhaps a little more time will help."] = "", -- A_Classic_Fairytale:first_blood ["Hmmm..."] = "Хмм...", +-- ["Hogminator"] = "", -- A_Classic_Fairytale:family +-- ["Hogs in sight!"] = "", -- Continental_supplies +-- ["HOLY SHIT!"] = "", -- Mutant +-- ["Honest Lee"] = "", -- A_Classic_Fairytale:enemy ["Hooray!"] = "Урааа!", +-- ["Hostage Situation"] = "", -- A_Classic_Fairytale:family +-- ["How can I ever repay you for saving my life?"] = "", -- A_Classic_Fairytale:journey +-- ["How come in a village full of warriors, it's up to me to save it?"] = "", -- A_Classic_Fairytale:dragon +-- ["How difficult would you like it to be?"] = "", -- A_Classic_Fairytale:first_blood +-- ["HOW DO THEY KNOW WHERE WE ARE???"] = "", -- A_Classic_Fairytale:united +-- ["However, if you fail to do so, she dies a most violent death, just like your friend! Muahahaha!"] = "", -- A_Classic_Fairytale:journey +-- ["However, if you fail to do so, she dies a most violent death! Muahahaha!"] = "", -- A_Classic_Fairytale:journey +-- ["However, my mates don't agree with me on letting you go..."] = "", -- A_Classic_Fairytale:dragon +-- [" HP"] = "", -- Mutant ["Hunter"] = "МиÑливець", --Bazooka, Shotgun, SniperRifle +-- ["I believe there's more of them."] = "", -- A_Classic_Fairytale:backstab +-- ["I can see you have been training diligently."] = "", -- A_Classic_Fairytale:first_blood +-- ["I can't believe it worked!"] = "", -- A_Classic_Fairytale:shadow +-- ["I can't believe this!"] = "", -- A_Classic_Fairytale:enemy +-- ["I can't believe what I'm hearing!"] = "", -- A_Classic_Fairytale:backstab +-- ["I can't wait any more, I have to save myself!"] = "", -- A_Classic_Fairytale:shadow +-- ["I could just teleport myself there..."] = "", -- A_Classic_Fairytale:family +-- ["I'd better get going myself."] = "", -- A_Classic_Fairytale:journey +-- ["I didn't until about a month ago."] = "", -- A_Classic_Fairytale:enemy +-- ["I don't know how you did that.. But good work! |The next one should be easy as cake for you!"] = "", -- Basic_Training_-_Rope +-- ["I feel something...a place! They will arrive near the circles!"] = "", -- A_Classic_Fairytale:backstab +-- ["If only I had a way..."] = "", -- A_Classic_Fairytale:backstab +-- ["If only I were given a chance to explain my being here..."] = "", -- A_Classic_Fairytale:first_blood +-- ["I forgot that she's the daughter of the chief, too..."] = "", -- A_Classic_Fairytale:backstab +-- ["If they try coming here, they can have a taste of my delicious knuckles!"] = "", -- A_Classic_Fairytale:united +-- ["If you agree to provide the information we need, you will be spared!"] = "", -- A_Classic_Fairytale:shadow +-- ["If you can get that crate fast enough, your beloved \"princess\" may go free."] = "", -- A_Classic_Fairytale:journey +-- ["If you decide to help us, though, we will no longer need to find a new governor for the island."] = "", -- A_Classic_Fairytale:shadow +-- ["If you get stuck, use your Desert Eagle or restart the mission!|"] = "", -- A_Classic_Fairytale:journey +-- ["If you know what I mean..."] = "", -- A_Classic_Fairytale:shadow +-- ["If you say so..."] = "", -- A_Classic_Fairytale:shadow +-- ["If you wish to restart the course, hold [Precise] while your turn ends (e.g with Skip)"] = "", -- +-- ["I guess you'll have to kill them."] = "", -- A_Classic_Fairytale:dragon +-- ["I have come to make you an offering..."] = "", -- A_Classic_Fairytale:shadow +-- ["I have no idea where that mole disappeared...Can you see it?"] = "", -- A_Classic_Fairytale:shadow +-- ["I have to follow that alien."] = "", -- A_Classic_Fairytale:backstab +-- ["I have to get back to the village!"] = "", -- A_Classic_Fairytale:shadow +-- ["I hope you are prepared for a small challenge, young one."] = "", -- A_Classic_Fairytale:first_blood +-- ["I just don't want to sink to your level."] = "", -- A_Classic_Fairytale:backstab +-- ["I just found out that they have captured your princess!"] = "", -- A_Classic_Fairytale:family +-- ["I just wonder where Ramon and Spiky disappeared..."] = "", -- A_Classic_Fairytale:journey +-- ["I'll hold them off while you return to the village!"] = "", -- A_Classic_Fairytale:shadow +-- ["Imagine those targets are the wolves that killed your parents! Take your anger out on them!"] = "", -- A_Classic_Fairytale:first_blood +-- ["I'm...alive? How? Why?"] = "", -- A_Classic_Fairytale:backstab +-- ["I'm a ninja."] = "", -- A_Classic_Fairytale:dragon +-- ["I marked the place of their arrival. You're welcome!"] = "", -- A_Classic_Fairytale:backstab +-- ["I'm certain that this is a misunderstanding, fellow hedgehogs!"] = "", -- A_Classic_Fairytale:first_blood +-- ["I mean, none of you ceased to live."] = "", -- A_Classic_Fairytale:enemy +-- ["I'm getting old for this!"] = "", -- A_Classic_Fairytale:family +-- ["I'm getting thirsty..."] = "", -- A_Classic_Fairytale:family +-- ["I'm here to help you rescue her."] = "", -- A_Classic_Fairytale:family +-- ["I'm not sure about that!"] = "", -- A_Classic_Fairytale:united +-- ["Impressive...you are still dry as the corpse of a hawk after a week in the desert..."] = "", -- A_Classic_Fairytale:first_blood +-- ["I'm so scared!"] = "", -- A_Classic_Fairytale:united +-- ["Incredible..."] = "", -- A_Classic_Fairytale:shadow +-- ["I need to find the others!"] = "", -- A_Classic_Fairytale:backstab +-- ["I need to get to the other side of this island, fast!"] = "", -- A_Classic_Fairytale:journey +-- ["I need to move the tribe!"] = "", -- A_Classic_Fairytale:united +-- ["I need to prevent their arrival!"] = "", -- A_Classic_Fairytale:backstab +-- ["I need to warn the others."] = "", -- A_Classic_Fairytale:backstab +-- ["In fact, you are the only one that's been acting strangely."] = "", -- A_Classic_Fairytale:backstab +-- ["In order to get to the other side, you need to collect the crates first.|"] = "", -- A_Classic_Fairytale:dragon ["Instructor"] = "ІнÑтруктор", -- 01#Boot_Camp, User_Mission_-_Dangerous_Ducklings +-- ["Interesting idea, haha!"] = "", -- A_Classic_Fairytale:enemy +-- ["Interesting! Last time you said you killed a cannibal!"] = "", -- A_Classic_Fairytale:backstab +-- ["In the meantime, take these and return to your \"friend\"!"] = "", -- A_Classic_Fairytale:shadow ["invaders destroyed"] = "Загарбників знищено", +-- ["Invasion"] = "", -- A_Classic_Fairytale:united +-- ["I saw it with my own eyes!"] = "", -- A_Classic_Fairytale:shadow +-- ["I see..."] = "", -- A_Classic_Fairytale:shadow +-- ["I see you have already taken the leap of faith."] = "", -- A_Classic_Fairytale:first_blood +-- ["I see you would like his punishment to be more...personal..."] = "", -- A_Classic_Fairytale:first_blood +-- ["I sense another wave of cannibals heading my way!"] = "", -- A_Classic_Fairytale:backstab +-- ["I sense another wave of cannibals heading our way!"] = "", -- A_Classic_Fairytale:backstab +-- ["I shouldn't have drunk that last pint."] = "", -- A_Classic_Fairytale:dragon +-- ["Is this place in my head?"] = "", -- A_Classic_Fairytale:dragon +-- ["It doesn't matter. I won't let that alien hurt my daughter!"] = "", -- A_Classic_Fairytale:dragon +-- ["I think we are safe here."] = "", -- A_Classic_Fairytale:backstab +-- ["I thought their shaman died when he tried our medicine!"] = "", -- A_Classic_Fairytale:shadow +-- ["It is called 'Hogs of Steel'."] = "", -- A_Classic_Fairytale:enemy +-- ["It is time to practice your fighting skills."] = "", -- A_Classic_Fairytale:first_blood +-- ["It must be a childhood trauma..."] = "", -- A_Classic_Fairytale:family +-- ["It must be the aliens!"] = "", -- A_Classic_Fairytale:backstab +-- ["It must be the aliens' deed."] = "", -- A_Classic_Fairytale:backstab +-- ["It must be the cyborgs again!"] = "", -- A_Classic_Fairytale:enemy +-- ["I told you, I just found them."] = "", -- A_Classic_Fairytale:backstab ["It's a good thing SUDDEN DEATH is 99 turns away..."] = "Це чудово що РÐПТОВРСМЕРТЬ віддалилаÑÑŒ на 99 ходів...", +-- ["It's always up to women to clear up the mess men created!"] = "", -- A_Classic_Fairytale:dragon +-- ["It's a shame, I forgot how to do that!"] = "", -- A_Classic_Fairytale:family +-- ["It's impossible to communicate with the spirits without a shaman."] = "", -- A_Classic_Fairytale:shadow +-- ["It's over..."] = "", -- A_Classic_Fairytale:shadow +-- ["It's time you learned that your actions have consequences!"] = "", -- A_Classic_Fairytale:journey +-- ["It's worth more than wood!"] = "", -- A_Classic_Fairytale:enemy +-- ["It wants our brains!"] = "", -- A_Classic_Fairytale:shadow +-- ["It was not a dream, unwise one!"] = "", -- A_Classic_Fairytale:backstab +-- ["I've seen this before. They just appear out of thin air."] = "", -- A_Classic_Fairytale:united +-- ["I want to play a game..."] = "", -- A_Classic_Fairytale:journey +-- ["I want to see how it handles this!"] = "", -- A_Classic_Fairytale:backstab +-- ["I wish to help you, "] = "", -- A_Classic_Fairytale:dragon +-- ["I wonder where Dense Cloud is..."] = "", -- A_Classic_Fairytale:journey, A_Classic_Fairytale:shadow +-- ["I wonder why I'm so angry all the time..."] = "", -- A_Classic_Fairytale:family +-- ["I won't let you kill her!"] = "", -- A_Classic_Fairytale:journey +-- ["Jack"] = "", -- A_Classic_Fairytale:dragon, A_Classic_Fairytale:family, A_Classic_Fairytale:queen +-- ["Jeremiah"] = "", -- A_Classic_Fairytale:dragon +-- ["John"] = "", -- A_Classic_Fairytale:journey +-- ["Judas"] = "", -- A_Classic_Fairytale:backstab ["Jumping is disabled"] = "Ð¡Ñ‚Ñ€Ð¸Ð±Ð°Ð½Ð½Ñ Ð²Ð¸Ð¼ÐºÐ½ÐµÐ½Ðµ", +-- ["Just kidding, none of you have died!"] = "", -- A_Classic_Fairytale:enemy +-- ["Just on a walk."] = "", -- A_Classic_Fairytale:united +-- ["Just wait till I get my hands on that trauma! ARGH!"] = "", -- A_Classic_Fairytale:family ["Kamikaze Expert!"] = "Камікадзе ЕкÑперт!", ["Keep it up!"] = "Так тримати!", +-- ["Kerguelen"] = "", -- Continental_supplies ["Killing spree!"] = "Череда вбивÑтв!", +-- ["KILL IT!"] = "", -- A_Classic_Fairytale:first_blood ["KILLS"] = "ВБИВСТВ", +-- ["Kill the aliens!"] = "", -- A_Classic_Fairytale:dragon +-- ["Kill the cannibal!"] = "", -- A_Classic_Fairytale:first_blood +-- ["Kill the traitor...or spare his life!|Kill him or press [Precise]!"] = "", -- A_Classic_Fairytale:backstab ["Last Target!"] = "ОÑÑ‚Ð°Ð½Ð½Ñ Ð¦Ñ–Ð»ÑŒ!", +-- ["Leader"] = "", -- A_Classic_Fairytale:enemy +-- ["Leaderbot"] = "", -- A_Classic_Fairytale:queen +-- ["Leaks A Lot"] = "", -- A_Classic_Fairytale:backstab, A_Classic_Fairytale:dragon, A_Classic_Fairytale:enemy, A_Classic_Fairytale:epil, A_Classic_Fairytale:family, A_Classic_Fairytale:first_blood, A_Classic_Fairytale:journey, A_Classic_Fairytale:queen, A_Classic_Fairytale:shadow, A_Classic_Fairytale:united +-- ["Leaks A Lot, depressed for killing his loved one, failed to save the village..."] = "", -- A_Classic_Fairytale:journey +-- ["Leaks A Lot gave his life for his tribe! He should have survived!"] = "", -- A_Classic_Fairytale:first_blood +-- ["Leaks A Lot must survive!"] = "", -- A_Classic_Fairytale:journey +-- ["Led Heart"] = "", -- A_Classic_Fairytale:queen +-- ["Lee"] = "", -- A_Classic_Fairytale:dragon, A_Classic_Fairytale:family, A_Classic_Fairytale:queen ["[Left Shift]"] = "[Лівий Shift]", +-- ["Let a Continent provide your weapons!"] = "", -- Continental_supplies +-- ["Let me test your skills a little, will you?"] = "", -- A_Classic_Fairytale:journey +-- ["Let's go home!"] = "", -- A_Classic_Fairytale:journey +-- ["Let's head back to the village!"] = "", -- A_Classic_Fairytale:shadow +-- ["Let's see what your comrade does now!"] = "", -- A_Classic_Fairytale:journey +-- ["Let's show those cannibals what we're made of!"] = "", -- A_Classic_Fairytale:backstab +-- ["Let them have a taste of my fury!"] = "", -- A_Classic_Fairytale:backstab +-- ["Let us help, too!"] = "", -- A_Classic_Fairytale:backstab +-- ["Light Cannfantry"] = "", -- A_Classic_Fairytale:united ["Listen up, maggot!!"] = "Слухай, хробак!", +-- ["Little did they know that this hunt will mark them forever..."] = "", -- A_Classic_Fairytale:shadow ["Lively Lifeguard"] = "Жвавий РÑтівник", +-- ["Lonely Cries: [Rise the water if no hog is in the circle and deal 1 damage to all hogs]"] = "", -- Continental_supplies +-- ["Look, I had no choice!"] = "", -- A_Classic_Fairytale:backstab +-- ["Look out! There's more of them!"] = "", -- A_Classic_Fairytale:backstab +-- ["Look out! We're surrounded by cannibals!"] = "", -- A_Classic_Fairytale:enemy +-- ["Looks like the whole world is falling apart!"] = "", -- A_Classic_Fairytale:enemy +-- ["Luckily, I've managed to snatch some of them."] = "", -- A_Classic_Fairytale:united +-- ["LUDICROUS KILL"] = "", -- Mutant +-- ["May the spirits aid you in all your quests!"] = "", -- A_Classic_Fairytale:backstab +-- ["Medicine: [Fire some exploding medicine that will heal all hogs effected by the explosion]"] = "", -- Continental_supplies +-- ["MEGA KILL"] = "", -- Mutant +-- ["Meiwes"] = "", -- A_Classic_Fairytale:backstab +-- ["Mindy"] = "", -- A_Classic_Fairytale:united ["Mine Deployer"] = "Мінер", ["Mine Eater!"] = "Поїдач Мін!", ["|- 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_-_Diver, User_Mission_-_Spooky_Tree, User_Mission_-_Teamwork ["MISSION SUCCESS"] = "УСПІХ МІСІЇ", - ["MISSION SUCCESSFUL"] = "МІСІЮ ВИКОÐÐÐО", -- User_Mission_-_Diver, User_Mission_-_Spooky_Tree, User_Mission_-_Teamwork +-- ["Molotov"] = "", -- Continental_supplies +-- ["MONSTER KILL"] = "", -- Mutant +-- ["More Natives"] = "", -- A_Classic_Fairytale:epil ["Movement: [Up], [Down], [Left], [Right]"] = "КеруваннÑ: [Вверх], [Вниз], [Вліво], [Вправо]", ["Multi-shot!"] = "МультипоÑтріл!", +-- ["Muriel"] = "", -- A_Classic_Fairytale:backstab, A_Classic_Fairytale:dragon, A_Classic_Fairytale:family, A_Classic_Fairytale:queen +-- ["Muscle Dissolver"] = "", -- A_Classic_Fairytale:shadow +-- ["-------"] = "", -- Mutant +-- ["Nade Boy"] = "", -- Basic_Training_-_Grenade +-- ["Name"] = "", -- A_Classic_Fairytale:queen ["Nameless Heroes"] = "Безіменні Герої", +-- ["Nancy Screw"] = "", -- A_Classic_Fairytale:enemy, A_Classic_Fairytale:queen +-- ["Napalm rocket: [Fire a bomb with napalm!]"] = "", -- Continental_supplies +-- ["Natives"] = "", -- A_Classic_Fairytale:backstab, A_Classic_Fairytale:dragon, A_Classic_Fairytale:enemy, A_Classic_Fairytale:epil, A_Classic_Fairytale:family, A_Classic_Fairytale:first_blood, A_Classic_Fairytale:journey, A_Classic_Fairytale:queen, A_Classic_Fairytale:shadow, A_Classic_Fairytale:united ["New Barrels Per Turn"] = "Ðових Бочок на Хід", ["NEW CLAN RECORD: "] = "ÐОВИЙ РЕКОРД КЛÐÐУ: ", ["NEW fastest lap: "] = "ÐОВРнайшвидша партіÑ: ", ["New Mines Per Turn"] = "Ðових Мін на Хід", ["NEW RACE RECORD: "] = "ÐОВИЙ РЕКОРД ГОÐКИ: ", ["Newton's Hammock"] = "Гамак Ðьютона", +-- ["Nicely done, meatbags!"] = "", -- A_Classic_Fairytale:enemy +-- ["Nice work, "] = "", -- A_Classic_Fairytale:dragon +-- ["Nice work!"] = "", -- A_Classic_Fairytale:enemy +-- ["Nilarian"] = "", -- A_Classic_Fairytale:queen +-- ["No, I came back to help you out..."] = "", -- A_Classic_Fairytale:shadow +-- ["No...I wonder where they disappeared?!"] = "", -- A_Classic_Fairytale:journey +-- ["Nom-Nom"] = "", -- A_Classic_Fairytale:journey +-- ["NomNom"] = "", -- A_Classic_Fairytale:united +-- ["Nope. It was one fast mole, that's for sure."] = "", -- A_Classic_Fairytale:shadow +-- ["No! Please, help me!"] = "", -- A_Classic_Fairytale:journey +-- ["NORMAL"] = "", -- Continental_supplies +-- ["North America"] = "", -- Continental_supplies +-- ["Not all hogs are born equal."] = "", -- Highlander ["NOT ENOUGH WAYPOINTS"] = "ÐЕДОСТÐТÐЬО ТОЧОК ШЛЯХУ", +-- ["Not now, Fiery Water!"] = "", -- A_Classic_Fairytale:backstab ["Not So Friendly Match"] = "Ðе дуже товариÑький матч", -- Basketball, Knockball +-- ["Not you again! My head still hurts from last time!"] = "", -- A_Classic_Fairytale:shadow +-- ["No, we made sure of that!"] = "", -- A_Classic_Fairytale:united +-- ["Now find the next target! |Tip: Normally you lose health by falling down, so be careful!"] = "", -- Basic_Training_-_Rope +-- ["No! What have I done?! What have YOU done?!"] = "", -- A_Classic_Fairytale:journey +-- ["No. Where did he come from?"] = "", -- A_Classic_Fairytale:shadow +-- ["Now how do I get on the other side?!"] = "", -- A_Classic_Fairytale:dragon +-- ["No. You and the rest of the tribe are safer there!"] = "", -- A_Classic_Fairytale:backstab +-- ["Obliterate them!|Hint: You might want to take cover..."] = "", -- A_Classic_Fairytale:shadow +-- ["Obstacle course"] = "", -- A_Classic_Fairytale:dragon +-- ["Of course I have to save her. What did I expect?!"] = "", -- A_Classic_Fairytale:family +-- ["OH, COME ON!"] = "", -- A_Classic_Fairytale:journey +-- ["Oh, my!"] = "", -- A_Classic_Fairytale:first_blood +-- ["Oh, my! This is even more entertaining than I've expected!"] = "", -- A_Classic_Fairytale:backstab ["Oh no! Just try again!"] = "О, ні! Давай, Ñпробуй ще раз!", -- User_Mission_-_Diver, User_Mission_-_Spooky_Tree, User_Mission_-_Teamwork +-- ["Oh no, not "] = "", -- A_Classic_Fairytale:backstab, A_Classic_Fairytale:united ["Oh no! Time's up! Just try again."] = "О, ні! Ð§Ð°Ñ Ð¹Ð´Ðµ! Спробуй ще раз.", --Bazooka, Shotgun, SniperRifle +-- ["Oh no! You failed! Just try again."] = "", -- Basic_Training_-_Cluster_Bomb +-- ["Oh, silly me! I forgot that I'm the shaman."] = "", -- A_Classic_Fairytale:backstab +-- ["Olive"] = "", -- A_Classic_Fairytale:united +-- ["Omnivore"] = "", -- A_Classic_Fairytale:first_blood +-- ["Once upon a time, on an island with great natural resources, lived two tribes in heated conflict..."] = "", -- A_Classic_Fairytale:first_blood +-- ["ONE HOG PER TEAM! KILLING EXCESS HEDGES"] = "", -- Mutant +-- ["One tribe was peaceful, spending their time hunting and training, enjoying the small pleasures of life..."] = "", -- A_Classic_Fairytale:first_blood +-- ["Oops...I dropped them."] = "", -- A_Classic_Fairytale:united +-- ["Open that crate and we will continue!"] = "", -- A_Classic_Fairytale:first_blood ["Operation Diver"] = "ÐžÐ¿ÐµÑ€Ð°Ñ†Ñ–Ñ Ð’Ð¾Ð´Ð¾Ð»Ð°Ð·", ["Opposing Team: "] = "Команда-Противник: ", +-- ["Orlando Boom!"] = "", -- A_Classic_Fairytale:queen +-- ["Ouch!"] = "", -- User_Mission_-_Rope_Knock_Challenge +-- ["Our tribe, our beautiful island!"] = "", -- A_Classic_Fairytale:enemy +-- ["Parachute"] = "", -- Continental_supplies ["Pathetic Hog #%d"] = "Жалюгідний Їжак #%d", ["Pathetic Resistance"] = "Жалюгідний Опір", -- User_Mission_-_Bamboo_Thicket, User_Mission_-_Newton_and_the_Hammock +-- ["Perfect! Now try to get the next crate without hurting yourself!"] = "", -- A_Classic_Fairytale:first_blood ["Per-Hog Ammo"] = "БоєприпаÑи на їжака", +-- ["- Per team weapons|- 9 weaponschemes|- Unique new weapons| |Select continent first round with the Weapon Menu or by ([switch/tab]=Increase,[presice/left shift]=Decrease)"] = "", -- +-- ["Pfew! That was close!"] = "", -- A_Classic_Fairytale:shadow +-- ["Piñata bullet: [Contains some sweet candy!]"] = "", -- Continental_supplies +-- ["Pings left:"] = "", -- Space_Invasion ["Place more waypoints using [ENTER]"] = "РозміÑÑ‚Ñ–Ñ‚ÑŒ більше точок шлÑху за допомогою [Enter]", ["Place more waypoints using the 'Air Attack' weapon."] = "РозміÑÑ‚Ñ–Ñ‚ÑŒ більше точок шлÑху викориÑтавши зброю 'ПовітрÑна Ðтака'.", +-- ["Planes Used:"] = "", -- User_Mission_-_RCPlane_Challenge +-- ["Planes Used"] = "", -- User_Mission_-_RCPlane_Challenge +-- ["Play with me!"] = "", -- A_Classic_Fairytale:shadow +-- ["Please place the way-point further from the waterline."] = "", -- Racer +-- ["Please place the way-point in the open, within the map boundaries."] = "", -- Racer +-- ["Please, stop releasing your \"smoke signals\"!"] = "", -- A_Classic_Fairytale:shadow +-- ["Point Blank Combo!"] = "", -- Space_Invasion ["points"] = "очок", -- Control, CTF_Blizzard, Basic_Training_-_Bazooka, Basic_Training_-_Shotgun, Basic_Training_-_Sniper_Rifle ["Poison"] = "Смердюк", +-- ["Portal hint: one goes to the destination, and one is the entrance.|"] = "", -- A_Classic_Fairytale:dragon +-- ["Portal mission"] = "", -- portal ["Power Remaining"] = "ЗалишилоÑÑŒ Енергії", ["Prepare yourself"] = "ПриготуйÑÑ", +-- ["Press [Enter] to accept this configuration."] = "", -- WxW +-- ["Press [Left] or [Right] to move around, [Enter] to jump"] = "", -- A_Classic_Fairytale:first_blood ["Press [Precise] to skip intro"] = "ÐатиÑніть [Приціл] щоб пропуÑтити вÑтуп", +-- ["Private Novak"] = "", -- Basic_Training_-_Cluster_Bomb +-- ["Protect yourselves!|Grenade hint: set the timer with [1-5], aim with [Up]/[Down] and hold [Space] to set power"] = "", -- A_Classic_Fairytale:shadow ["Race complexity limit reached."] = "ДоÑÑгнута межа ÑкладноÑÑ‚Ñ– гонки.", ["RACER"] = "ГОÐЩИК", +-- ["Rachel"] = "", -- A_Classic_Fairytale:dragon, A_Classic_Fairytale:family, A_Classic_Fairytale:queen +-- ["Radar Ping"] = "", -- Space_Invasion +-- ["Raging Buffalo"] = "", -- A_Classic_Fairytale:backstab, A_Classic_Fairytale:dragon, A_Classic_Fairytale:enemy, A_Classic_Fairytale:epil, A_Classic_Fairytale:family, A_Classic_Fairytale:queen, A_Classic_Fairytale:united +-- ["Ramon"] = "", -- A_Classic_Fairytale:enemy, A_Classic_Fairytale:epil, A_Classic_Fairytale:family, A_Classic_Fairytale:queen, A_Classic_Fairytale:shadow +-- ["RC PLANE TRAINING"] = "", -- User_Mission_-_RCPlane_Challenge +-- ["Really?! You thought you could harm me with your little toys?"] = "", -- A_Classic_Fairytale:shadow +-- ["Regurgitator"] = "", -- A_Classic_Fairytale:backstab +-- ["Reinforcements"] = "", -- A_Classic_Fairytale:backstab +-- ["Remember: The rope only bend around objects, |if it doesn't hit anything it's always stright!"] = "", -- Basic_Training_-_Rope +-- ["Remember this, pathetic animal: when the day comes, you will regret your blind loyalty!"] = "", -- A_Classic_Fairytale:shadow [" - 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 to Leaks A Lot! If you get stuck, press [Precise] to try again!"] = "", -- A_Classic_Fairytale:shadow +-- ["Righteous Beard"] = "", -- A_Classic_Fairytale:backstab, A_Classic_Fairytale:dragon, A_Classic_Fairytale:enemy, A_Classic_Fairytale:epil, A_Classic_Fairytale:family, A_Classic_Fairytale:first_blood, A_Classic_Fairytale:queen, A_Classic_Fairytale:united +-- ["ROPE-KNOCKING"] = "", -- User_Mission_-_Rope_Knock_Challenge +-- ["Rope Training"] = "", -- Basic_Training_-_Rope +-- ["Rot Molester"] = "", -- A_Classic_Fairytale:shadow ["Round Limit:"] = "Межа Раунду:", ["Round Limit"] = "Межа Раунду", ["Rounds Complete: "] = "Раундів Завершено: ", ["Rounds Complete"] = "Раундів Завершено", ["RULES OF THE GAME [Press ESC to view]"] = "ПРÐВИЛРГРИ [ÐатиÑніть ESC Ð´Ð»Ñ Ð¿ÐµÑ€ÐµÐ³Ð»Ñду]", - ["s|"] = "Ñ|", +-- ["Rusty Joe"] = "", -- A_Classic_Fairytale:queen +-- ["Sabotage: [Sabotage all hogs in the circle and deal ~10 dmg]"] = "", -- Continental_supplies +-- ["Salivaslurper"] = "", -- A_Classic_Fairytale:united +-- ["Salvation"] = "", -- A_Classic_Fairytale:family +-- ["Salvation was one step closer now..."] = "", -- A_Classic_Fairytale:dragon ["Save as many hapless hogs as possible!"] = "Ð’Ñ€Ñтуйте Ñкнайбільше нещаÑних їжаків!", +-- ["Save Fell From Heaven!"] = "", -- A_Classic_Fairytale:journey +-- ["Save Leaks A Lot!|Hint: The Switch utility might be of help to you."] = "", -- A_Classic_Fairytale:shadow +-- ["Save the princess! All your hogs must survive!|Hint: Kill the cyborgs first! Use the ammo very carefully!|Hint: You might want to spare a girder for cover!"] = "", -- A_Classic_Fairytale:family +-- ["Save the princess by collecting the crate in under 12 turns!"] = "", -- A_Classic_Fairytale:journey +-- ["Scalp Muncher"] = "", -- A_Classic_Fairytale:backstab +-- ["Score"] = "", -- Mutant ["SCORE"] = "РÐХУÐОК", +-- ["Scream from a Walrus: [Deal 20 damage + 10% of your hogs health to all hogs around you and get half back]"] = "", -- Continental_supplies ["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 +-- ["Seduction"] = "", -- Continental_supplies +-- ["Seems like every time you take a \"walk\", the enemy find us!"] = "", -- A_Classic_Fairytale:backstab +-- ["See that crate farther on the right?"] = "", -- A_Classic_Fairytale:first_blood ["See ya!"] = "ПобачимоÑÑ!", +-- ["Segmentation Paul"] = "", -- A_Classic_Fairytale:dragon +-- ["Select continent!"] = "", -- Continental_supplies +-- ["Select difficulty: [Left] - easier or [Right] - harder"] = "", -- A_Classic_Fairytale:first_blood ["selected!"] = "вибрано!", - ["s"] = "Ñ", -- GaudyRacer, Space_Invasion +-- ["... share your beauty with the world every morning, my princess!"] = "", -- A_Classic_Fairytale:journey +-- ["She's behind that tall thingy."] = "", -- A_Classic_Fairytale:family ["Shield boosted! +30 power"] = "Щит підÑилено! +30 Ñили", ["Shield Depleted"] = "Щит Вичерпаний", ["Shield is fully recharged!"] = "Щит повніÑÑ‚ÑŽ зарÑджений!", @@ -162,59 +643,341 @@ ["Shield OFF:"] = "Щит Вимкнено:", ["Shield ON:"] = "Щит Ввімкнено:", ["Shield Seeker!"] = "Шукач Щита!", +-- ["Shotgun"] = "", -- Continental_supplies ["Shotgun Team"] = "Команда Рушниць", ["Shotgun Training"] = "Ð¢Ñ€ÐµÐ½ÑƒÐ²Ð°Ð½Ð½Ñ Ð· рушницею", ["shots remaining."] = "поÑтрілів залишилоÑÑŒ.", ["Silly"] = "Дурник", ["Sinky"] = "Любимчик", +-- ["Sirius Lee"] = "", -- A_Classic_Fairytale:enemy ["%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 +-- ["Slippery"] = "", -- A_Classic_Fairytale:journey +-- ["Smith 0.97"] = "", -- A_Classic_Fairytale:enemy +-- ["Smith 0.98"] = "", -- A_Classic_Fairytale:enemy +-- ["Smith 0.99a"] = "", -- A_Classic_Fairytale:enemy +-- ["Smith 0.99b"] = "", -- A_Classic_Fairytale:enemy +-- ["Smith 0.99f"] = "", -- A_Classic_Fairytale:enemy +-- ["Smith 1.0"] = "", -- A_Classic_Fairytale:enemy +-- ["Sniper Rifle"] = "", -- Continental_supplies +-- ["Sniper!"] = "", -- Space_Invasion ["Sniper Training"] = "СнайперÑьке тренуваннÑ", -- ["Sniperz"] = "", +-- ["So humiliating..."] = "", -- A_Classic_Fairytale:first_blood +-- ["South America"] = "", -- Continental_supplies +-- ["So? What will it be?"] = "", -- A_Classic_Fairytale:shadow +-- ["Spawn the crate, and attack!"] = "", -- WxW +-- ["Special Weapons:"] = "", -- Continental_supplies +-- ["Spiky Cheese"] = "", -- A_Classic_Fairytale:enemy, A_Classic_Fairytale:epil, A_Classic_Fairytale:family, A_Classic_Fairytale:queen, A_Classic_Fairytale:shadow +-- ["Spleenlover"] = "", -- A_Classic_Fairytale:united ["Sponge"] = "Губка", ["Spooky Tree"] = "Примарне Дерево", ["STATUS UPDATE"] = "ОÐОВЛЕÐÐЯ СТÐÐУ", -- GaudyRacer, Space_Invasion +-- ["Steel Eye"] = "", -- A_Classic_Fairytale:queen +-- ["Step By Step"] = "", -- A_Classic_Fairytale:first_blood +-- ["Steve"] = "", -- A_Classic_Fairytale:dragon, A_Classic_Fairytale:family, A_Classic_Fairytale:queen +-- ["Sticky Mine"] = "", -- Continental_supplies +-- ["Stronglings"] = "", -- A_Classic_Fairytale:shadow +-- ["Structure"] = "", -- Continental_supplies +-- ["Super Weapons"] = "", -- WxW +-- ["Surf Before Crate"] = "", -- WxW +-- ["Surfer! +15 points!"] = "", -- Space_Invasion +-- ["Surfer!"] = "", -- WxW +-- ["Survive!|Hint: Cinematics can be skipped with the [Precise] key."] = "", -- A_Classic_Fairytale:shadow +-- ["Swing, Leaks A Lot, on the wings of the wind!"] = "", -- A_Classic_Fairytale:first_blood ["Switched to "] = "Перейшов до ", +-- ["Syntax Errol"] = "", -- A_Classic_Fairytale:dragon + ["s|"] = "Ñ|", + ["s"] = "Ñ", -- GaudyRacer, Space_Invasion +-- ["Talk about mixed signals..."] = "", -- A_Classic_Fairytale:dragon ["Team %d: "] = "Команда %d: ", ["Team Scores"] = "Очки Команди", -- Control, Space_Invasion +-- ["Teleport hint: just use the mouse to select the destination!"] = "", -- A_Classic_Fairytale:dragon +-- ["Thanks!"] = "", -- A_Classic_Fairytale:family +-- ["Thank you, my hero!"] = "", -- A_Classic_Fairytale:family +-- ["Thank you, oh, thank you, Leaks A Lot!"] = "", -- A_Classic_Fairytale:journey +-- ["Thank you, oh, thank you, my heroes!"] = "", -- A_Classic_Fairytale:journey +-- ["That is, indeed, very weird..."] = "", -- A_Classic_Fairytale:united +-- ["That makes it almost invaluable!"] = "", -- A_Classic_Fairytale:enemy +-- ["That ought to show them!"] = "", -- A_Classic_Fairytale:backstab +-- ["That's for my father!"] = "", -- A_Classic_Fairytale:backstab +-- ["That shaman sure knows what he's doing!"] = "", -- A_Classic_Fairytale:shadow ["That Sinking Feeling"] = "Ð¦Ñ Ñ€Ð°Ð¿Ñ‚Ð¾Ð²Ð° ÑлабкіÑÑ‚ÑŒ", +-- ["That's not our problem!"] = "", -- A_Classic_Fairytale:enemy +-- ["That's typical of you!"] = "", -- A_Classic_Fairytale:family +-- ["That was just mean!"] = "", -- A_Classic_Fairytale:backstab, A_Classic_Fairytale:united ["That was pointless."] = "Це було безглуздо.", +-- ["The answer is...entertaintment. You'll see what I mean."] = "", -- A_Classic_Fairytale:backstab +-- ["The anti-portal zone is all over the floor, and I have nothing to kill him...Droping something could hurt him enough to kill him..."] = "", -- portal +-- ["The Bull's Eye"] = "", -- A_Classic_Fairytale:first_blood +-- ["The caves are well hidden, they won't find us there!"] = "", -- A_Classic_Fairytale:united +-- ["The Crate Frenzy"] = "", -- A_Classic_Fairytale:first_blood +-- ["The Dilemma"] = "", -- A_Classic_Fairytale:shadow +-- ["The enemy can't move but it might be a good idea to stay out of sight!|"] = "", -- A_Classic_Fairytale:dragon ["The enemy is hiding out on yonder ducky!"] = "Ворог ховаєтьÑÑ Ð½Ð° он тій качечці!", +-- ["The Enemy Of My Enemy"] = "", -- A_Classic_Fairytale:enemy +-- ["The First Blood"] = "", -- A_Classic_Fairytale:first_blood +-- ["The First Encounter"] = "", -- A_Classic_Fairytale:shadow ["The flag will respawn next round."] = "Прапор відновитьÑÑ Ð² наÑтупному раунді.", +-- ["The food bites back"] = "", -- A_Classic_Fairytale:backstab +-- ["The giant umbrella from the last crate should help break the fall."] = "", -- A_Classic_Fairytale:first_blood +-- ["The Great Escape"] = "", -- User_Mission_-_The_Great_Escape +-- ["The guardian"] = "", -- A_Classic_Fairytale:shadow +-- ["The Individualist"] = "", -- A_Classic_Fairytale:shadow +-- ["Their buildings were very primitive back then, even for an uncivilised island."] = "", -- A_Classic_Fairytale:united +-- ["The Journey Back"] = "", -- A_Classic_Fairytale:journey +-- ["The Leap of Faith"] = "", -- A_Classic_Fairytale:first_blood +-- ["The Moonwalk"] = "", -- A_Classic_Fairytale:journey ["The Nameless One"] = "Безіменний", +-- ["The next one is pretty hard! |Tip: You have to do multiple swings!"] = "", -- Basic_Training_-_Rope +-- ["Then how do they keep appearing?"] = "", -- A_Classic_Fairytale:shadow +-- ["The other one were all cannibals, spending their time eating the organs of fellow hedgehogs..."] = "", -- A_Classic_Fairytale:first_blood +-- ["There must be a spy among us!"] = "", -- A_Classic_Fairytale:backstab +-- ["There's more of them? When did they become so hungry?"] = "", -- A_Classic_Fairytale:backstab, A_Classic_Fairytale:united +-- ["There's nothing more satisfying for me than seeing you share your beauty with the world every morning, my princess!"] = "", -- A_Classic_Fairytale:journey +-- ["There's nothing more satisfying to us than seeing you share your beauty..."] = "", -- A_Classic_Fairytale:journey +-- ["There's nothing more satisfying to us than seeing you share your beauty with the world every morning, my princess!"] = "", -- A_Classic_Fairytale:journey +-- ["The Rising"] = "", -- A_Classic_Fairytale:first_blood +-- ["The Savior"] = "", -- A_Classic_Fairytale:journey +-- ["These primitive people are so funny!"] = "", -- A_Classic_Fairytale:backstab +-- ["The Shadow Falls"] = "", -- A_Classic_Fairytale:shadow +-- ["The Showdown"] = "", -- A_Classic_Fairytale:shadow +-- ["The Slaughter"] = "", -- A_Classic_Fairytale:dragon, A_Classic_Fairytale:first_blood ["THE SPECIALISTS"] = "СПЕЦІÐЛІСТИ", +-- ["The spirits of the ancerstors are surely pleased, Leaks A Lot."] = "", -- A_Classic_Fairytale:first_blood +-- ["The Torment"] = "", -- A_Classic_Fairytale:first_blood +-- ["The Tunnel Maker"] = "", -- A_Classic_Fairytale:journey +-- ["The Ultimate Weapon"] = "", -- A_Classic_Fairytale:first_blood +-- ["The Union"] = "", -- A_Classic_Fairytale:enemy +-- ["The village, unprepared, was destroyed by the cyborgs..."] = "", -- A_Classic_Fairytale:journey +-- ["The walk of Fame"] = "", -- A_Classic_Fairytale:shadow +-- ["The wasted youth"] = "", -- A_Classic_Fairytale:first_blood +-- ["The weapon in that last crate was bestowed upon us by the ancients!"] = "", -- A_Classic_Fairytale:first_blood +-- ["The what?!"] = "", -- A_Classic_Fairytale:dragon +-- ["The wind whispers that you are ready to become familiar with tools, now..."] = "", -- A_Classic_Fairytale:first_blood +-- ["They are all waiting back in the village, haha."] = "", -- A_Classic_Fairytale:enemy +-- ["They Call Me Bullseye!"] = "", -- Space_Invasion +-- ["They have weapons we've never seen before!"] = "", -- A_Classic_Fairytale:united +-- ["They keep appearing like this. It's weird!"] = "", -- A_Classic_Fairytale:united +-- ["They killed "] = "", -- A_Classic_Fairytale:backstab, A_Classic_Fairytale:united +-- ["They must be trying to weaken us!"] = "", -- A_Classic_Fairytale:enemy +-- ["They never learn"] = "", -- A_Classic_Fairytale:journey +-- ["They told us to wear these clothes. They said that this is the newest trend."] = "", -- A_Classic_Fairytale:enemy +-- ["They've been manipulating us all this time!"] = "", -- A_Classic_Fairytale:enemy +-- ["Thighlicker"] = "", -- A_Classic_Fairytale:united +-- ["This is it! It's time to make Fell From Heaven fall for me..."] = "", -- A_Classic_Fairytale:first_blood +-- ["This island is the only place left on Earth with grass on it!"] = "", -- A_Classic_Fairytale:enemy +-- ["This is typical!"] = "", -- A_Classic_Fairytale:dragon +-- ["This must be some kind of sorcery!"] = "", -- A_Classic_Fairytale:shadow +-- ["This must be the caves!"] = "", -- A_Classic_Fairytale:backstab ["This one's tricky."] = "Хитро придумано.", ["This rain is really something..."] = "Цей дощ дійÑно дещо...", - ["TIME: "] = "ЧÐС: ", +-- ["This will be fun!"] = "", -- A_Classic_Fairytale:enemy +-- ["Those aliens are destroying the island!"] = "", -- A_Classic_Fairytale:family ["Timed Kamikaze!"] = "ЧаÑовий Камікадзе!", ["Time Extended!"] = "Ð§Ð°Ñ ÐŸÑ€Ð¾Ð´Ð¾Ð²Ð¶ÐµÐ½Ð¾!", ["Time Extension"] = "Ð—Ð±Ñ–Ð»ÑŒÑˆÐµÐ½Ð½Ñ Ð§Ð°Ñу", + ["TIME: "] = "ЧÐС: ", +-- ["Tip: The rope physics are different than in the real world, |use it to your advantage!"] = "", -- Basic_Training_-_Rope ["Toggle Shield"] = "Перемкнути Щит", +-- ["To help you, of course!"] = "", -- A_Classic_Fairytale:journey +-- ["To place a girder, select it, use [Left] and [Right] to select angle and length, place with [Left Click]"] = "", -- A_Classic_Fairytale:shadow +-- ["Torn Muscle"] = "", -- A_Classic_Fairytale:journey +-- [" to save the village."] = "", -- A_Classic_Fairytale:dragon +-- ["To the caves..."] = "", -- A_Classic_Fairytale:united ["Toxic Team"] = "ТокÑична Команда", -- User_Mission_-_Diver, User_Mission_-_Spooky_Tree, User_Mission_-_Teamwork ["TRACK COMPLETED"] = "ТРÐСУ ПРОЙДЕÐО", ["TRACK FAILED!"] = "ТРÐСУ ÐЕ ПРОЙДЕÐО!", +-- ["training"] = "", -- portal +-- ["Traitors"] = "", -- A_Classic_Fairytale:epil +-- ["Tribe"] = "", -- A_Classic_Fairytale:backstab ["TrophyRace"] = "ÐŸÐ¾Ð³Ð¾Ð½Ñ Ð·Ð° Трофеєм", +-- ["Try to protect the chief! You won't lose if he dies, but it is advised that he survives."] = "", -- A_Classic_Fairytale:united ["T_T"] = "Ðаааа!!!", ["Tumbling Time Extended!"] = "Ð§Ð°Ñ ÐŸÐ°Ð´Ñ–Ð½Ð½Ñ Ð—Ð±Ñ–Ð»ÑŒÑˆÐµÐ½Ð¸Ð¹!", +-- ["Turns until Sudden Death: "] = "", -- A_Classic_Fairytale:dragon +-- [" turns until Sudden Death! Better hurry!"] = "", -- A_Classic_Fairytale:dragon ["Turn Time"] = "Ð§Ð°Ñ Ð¥Ð¾Ð´Ñƒ", - ["Unit"] = "Модуль", +-- ["Two little hogs cooperating, getting past obstacles..."] = "", -- A_Classic_Fairytale:journey +-- ["Uhm...I met one of them and took his weapons."] = "", -- A_Classic_Fairytale:shadow +-- ["Uhmm...ok no."] = "", -- A_Classic_Fairytale:enemy +-- ["ULTRA KILL"] = "", -- Mutant +-- ["Under Construction"] = "", -- A_Classic_Fairytale:shadow +-- ["Unexpected Igor"] = "", -- A_Classic_Fairytale:dragon +-- ["Unit 0x0007"] = "", -- A_Classic_Fairytale:family +-- ["Unit 334a$7%;.*"] = "", -- A_Classic_Fairytale:backstab, A_Classic_Fairytale:dragon, A_Classic_Fairytale:enemy, A_Classic_Fairytale:family, A_Classic_Fairytale:queen, A_Classic_Fairytale:united ["Unit 3378"] = "Об'єкт 3378", ["Unit 835"] = "Об'єкт 835", +-- ["United We Stand"] = "", -- A_Classic_Fairytale:united + ["Unit"] = "Модуль", ["Unlimited Attacks"] = "Ðеобмежені Ðтаки", +-- ["Unlucky Sods"] = "", -- User_Mission_-_Rope_Knock_Challenge ["Unstoppable!"] = "Ðевпинний!", +-- ["Unsuspecting Louts"] = "", -- User_Mission_-_Rope_Knock_Challenge +-- ["[Up], [Down] to aim, [Space] to shoot!"] = "", -- A_Classic_Fairytale:first_blood +-- ["Use it wisely!"] = "", -- A_Classic_Fairytale:dragon +-- ["Use it with precaution!"] = "", -- A_Classic_Fairytale:first_blood ["User Challenge"] = "Дуель між кориÑтувачами", +-- ["Use the parachute ([Space] while in air)"] = "", -- +-- ["Use the portal gun to get to the next crate, then use the new gun to get to the final destination!|"] = "", -- A_Classic_Fairytale:dragon +-- ["Use the rope to get on the head of the mole, young one!"] = "", -- A_Classic_Fairytale:first_blood +-- ["Use the rope to knock your enemies to their doom."] = "", -- User_Mission_-_Rope_Knock_Challenge ["Use your rope to get from start to finish as fast as you can!"] = "СкориÑтайÑÑ Ð¼Ð¾Ñ‚ÑƒÐ·ÐºÐ¾ÑŽ щоб Ñкнайшвидше доÑÑгнути фінішу!", +-- ["Vedgies"] = "", -- A_Classic_Fairytale:journey +-- ["Vegan Jack"] = "", -- A_Classic_Fairytale:enemy +-- ["Victory!"] = "", -- Basic_Training_-_Rope ["Victory for the "] = "Перемога Ð´Ð»Ñ ", -- CTF_Blizzard, Capture_the_Flag +-- ["Violence is not the answer to your problems!"] = "", -- A_Classic_Fairytale:first_blood +-- ["Walls Left"] = "", -- WxW +-- ["Walls Required"] = "", -- WxW +-- ["WALL TO WALL"] = "", -- WxW +-- ["Wannabe Flyboys"] = "", -- User_Mission_-_RCPlane_Challenge +-- ["Wannabe Shoppsta"] = "", -- User_Mission_-_Rope_Knock_Challenge +-- ["Watch your steps, young one!"] = "", -- A_Classic_Fairytale:first_blood ["Waypoint placed."] = "Точка шлÑху розміщена.", ["Way-Points Remaining"] = "ЗалишилоÑÑŒ Точок", +-- ["Weaklings"] = "", -- A_Classic_Fairytale:shadow +-- ["We all know what happens when you get frightened..."] = "", -- A_Classic_Fairytale:first_blood +-- ["Weapons reset."] = "", -- Highlander ["Weapons Reset"] = "Ð¡ÐºÐ¸Ð´Ð°Ð½Ð½Ñ Ð—Ð±Ñ€Ð¾Ñ—", +-- ["We are indeed."] = "", -- A_Classic_Fairytale:backstab +-- ["We can't defeat them!"] = "", -- A_Classic_Fairytale:shadow +-- ["We can't hold them up much longer!"] = "", -- A_Classic_Fairytale:united +-- ["We can't let them take over our little island!"] = "", -- A_Classic_Fairytale:enemy +-- ["We have no time to waste..."] = "", -- A_Classic_Fairytale:journey +-- ["We have nowhere else to live!"] = "", -- A_Classic_Fairytale:enemy +-- ["We have to protect the village!"] = "", -- A_Classic_Fairytale:united +-- ["We have to unite and defeat those cylergs!"] = "", -- A_Classic_Fairytale:enemy +-- ["Welcome, Leaks A Lot!"] = "", -- A_Classic_Fairytale:journey ["Well done."] = "Чудова робота.", +-- ["We'll give you a problem then!"] = "", -- A_Classic_Fairytale:enemy +-- ["We'll spare your life for now!"] = "", -- A_Classic_Fairytale:backstab +-- ["Well, that was a waste of time."] = "", -- A_Classic_Fairytale:dragon +-- ["Well, well! Isn't that the cutest thing you've ever seen?"] = "", -- A_Classic_Fairytale:journey +-- ["Well, yes. This was a cyborg television show."] = "", -- A_Classic_Fairytale:enemy +-- ["We made sure noone followed us!"] = "", -- A_Classic_Fairytale:backstab +-- ["We need to move!"] = "", -- A_Classic_Fairytale:united +-- ["We need to prevent their arrival!"] = "", -- A_Classic_Fairytale:backstab +-- ["We need to warn the village."] = "", -- A_Classic_Fairytale:shadow +-- ["We should head back to the village now."] = "", -- A_Classic_Fairytale:shadow +-- ["We were trying to save her and we got lost."] = "", -- A_Classic_Fairytale:family +-- ["We won't let you hurt her!"] = "", -- A_Classic_Fairytale:journey +-- ["What?! A cannibal? Here? There is no time to waste! Come, you are prepared."] = "", -- A_Classic_Fairytale:first_blood +-- ["What a douche!"] = "", -- A_Classic_Fairytale:enemy +-- ["What am I gonna...eat, yo?"] = "", -- A_Classic_Fairytale:family +-- ["What are you doing at a distance so great, young one?"] = "", -- A_Classic_Fairytale:first_blood +-- ["What are you doing? Let her go!"] = "", -- A_Classic_Fairytale:journey +-- ["What a ride!"] = "", -- A_Classic_Fairytale:shadow +-- ["What a strange cave!"] = "", -- A_Classic_Fairytale:dragon +-- ["What a strange feeling!"] = "", -- A_Classic_Fairytale:backstab +-- ["What do my faulty eyes observe? A spy!"] = "", -- A_Classic_Fairytale:first_blood +-- ["Whatever floats your boat..."] = "", -- A_Classic_Fairytale:shadow +-- [" What !! For all of this struggle i just win some ... TIME o0"] = "", -- portal +-- ["What has "] = "", -- A_Classic_Fairytale:backstab +-- ["What? Here? How did they find us?!"] = "", -- A_Classic_Fairytale:backstab +-- ["What is this place?"] = "", -- A_Classic_Fairytale:dragon, A_Classic_Fairytale:enemy +-- ["What shall we do with the traitor?"] = "", -- A_Classic_Fairytale:backstab +-- ["WHAT?! You're the ones attacking us!"] = "", -- A_Classic_Fairytale:enemy +-- ["When?"] = "", -- A_Classic_Fairytale:enemy +-- ["When I find it..."] = "", -- A_Classic_Fairytale:dragon +-- ["Where are all these crates coming from?!"] = "", -- A_Classic_Fairytale:shadow +-- ["Where are they?!"] = "", -- A_Classic_Fairytale:backstab +-- ["Where did that alien run?"] = "", -- A_Classic_Fairytale:dragon +-- ["Where did you get the exploding apples?"] = "", -- A_Classic_Fairytale:shadow +-- ["Where did you get the exploding apples and the magic bow that shoots many arrows?"] = "", -- A_Classic_Fairytale:shadow +-- ["Where did you get the magic bow that shoots many arrows?"] = "", -- A_Classic_Fairytale:shadow +-- ["Where did you get the weapons in the forest, Dense Cloud?"] = "", -- A_Classic_Fairytale:backstab +-- ["Where do you get that?!"] = "", -- A_Classic_Fairytale:enemy +-- ["Where have you been?!"] = "", -- A_Classic_Fairytale:backstab +-- ["Where have you been?"] = "", -- A_Classic_Fairytale:united +-- ["? Why?"] = "", -- A_Classic_Fairytale:backstab +-- ["Why "] = "", -- A_Classic_Fairytale:backstab +-- ["! Why?!"] = "", -- A_Classic_Fairytale:backstab, A_Classic_Fairytale:united +-- ["Why are you doing this?"] = "", -- A_Classic_Fairytale:journey +-- ["Why are you helping us, uhm...?"] = "", -- A_Classic_Fairytale:family +-- ["Why can't he just let her go?!"] = "", -- A_Classic_Fairytale:family +-- ["Why do men keep hurting me?"] = "", -- A_Classic_Fairytale:first_blood +-- ["Why do you not like me?"] = "", -- A_Classic_Fairytale:shadow +-- ["Why do you want to take over our island?"] = "", -- A_Classic_Fairytale:enemy +-- ["Why me?!"] = "", -- A_Classic_Fairytale:backstab +-- ["Why would they do this?"] = "", -- A_Classic_Fairytale:backstab +-- ["- Will Get 1-3 random weapons"] = "", -- Continental_supplies +-- ["- Will refresh Parachute each turn."] = "", -- Continental_supplies +-- ["- Will refresh portalgun each turn."] = "", -- Continental_supplies ["Will this ever end?"] = "Це коли-небудь закінчитьÑÑ?", +-- ["WINNER IS "] = "", -- Mutant ["WINNING TIME: "] = "ЧÐС ВИГРÐШУ: ", +-- ["Wise Oak"] = "", -- A_Classic_Fairytale:backstab, A_Classic_Fairytale:dragon, A_Classic_Fairytale:enemy, A_Classic_Fairytale:epil, A_Classic_Fairytale:family, A_Classic_Fairytale:queen +-- ["With Dense Cloud on the land of shadows, I'm the village's only hope..."] = "", -- A_Classic_Fairytale:journey +-- ["With the rest of the tribe gone, it was up to "] = "", -- A_Classic_Fairytale:dragon +-- ["Worry not, for it is a peaceful animal! There is no reason to be afraid..."] = "", -- A_Classic_Fairytale:first_blood +-- ["Wow, what a dream!"] = "", -- A_Classic_Fairytale:backstab +-- ["Y3K1337"] = "", -- A_Classic_Fairytale:journey, A_Classic_Fairytale:shadow +-- ["Yay, we won!"] = "", -- A_Classic_Fairytale:enemy +-- ["Y Chwiliad"] = "", -- A_Classic_Fairytale:dragon +-- ["Yeah...I think it's a 'he', lol."] = "", -- A_Classic_Fairytale:shadow +-- ["Yeah, sure! I died. Hillarious!"] = "", -- A_Classic_Fairytale:backstab +-- ["Yeah, take that!"] = "", -- A_Classic_Fairytale:dragon +-- ["Yeah? Watcha gonna do? Cry?"] = "", -- A_Classic_Fairytale:journey +-- ["Yes!"] = "", -- A_Classic_Fairytale:enemy +-- ["Yes, yeees! You are now ready to enter the real world!"] = "", -- A_Classic_Fairytale:first_blood +-- ["Yo, dude, we're here, too!"] = "", -- A_Classic_Fairytale:family +-- ["You are given the chance to turn your life around..."] = "", -- A_Classic_Fairytale:shadow +-- ["You are playing with our lives here!"] = "", -- A_Classic_Fairytale:enemy +-- ["! You bastards!"] = "", -- A_Classic_Fairytale:backstab, A_Classic_Fairytale:united +-- ["You bear impressive skills, "] = "", -- A_Classic_Fairytale:dragon +-- ["You can't fire a portal on the blue surface"] = "", -- portal +-- ["You couldn't possibly believe that after refusing my offer I'd just let you go!"] = "", -- A_Classic_Fairytale:journey ["You'd almost swear the water was rising!"] = "Ти ледь не приÑÑгавÑÑ, що вода піднімаєтьÑÑ!", +-- ["You'd better watch your steps..."] = "", -- A_Classic_Fairytale:journey +-- ["You did not make it in time, try again!"] = "", -- Basic_Training_-_Rope +-- ["You have 7 turns until the next wave arrives.|Make sure the arriving cannibals are greeted appropriately!|If the hog dies, the cause is lost.|Hint: you might want to use some mines..."] = "", -- A_Classic_Fairytale:backstab +-- ["You have "] = "", -- A_Classic_Fairytale:dragon +-- ["You have been giving us out to the enemy, haven't you!"] = "", -- A_Classic_Fairytale:backstab +-- ["You have been respawned, at your last checkpoint!"] = "", -- Basic_Training_-_Rope +-- ["You have been respawned, be more carefull next time!"] = "", -- Basic_Training_-_Rope +-- ["You have chosen the perfect moment to leave."] = "", -- A_Classic_Fairytale:united +-- ["You have failed to complete your task, young one!"] = "", -- A_Classic_Fairytale:journey +-- ["You have failed to save the tribe!"] = "", -- A_Classic_Fairytale:backstab +-- ["You have finally figured it out!"] = "", -- A_Classic_Fairytale:enemy +-- ["You have kidnapped our whole tribe!"] = "", -- A_Classic_Fairytale:enemy +-- ["You have killed an innocent hedgehog!"] = "", -- A_Classic_Fairytale:backstab +-- ["You have proven yourself worthy to see our most ancient secret!"] = "", -- A_Classic_Fairytale:first_blood +-- ["You have proven yourselves worthy!"] = "", -- A_Classic_Fairytale:enemy ["You have SCORED!!"] = "Ви заробили ОЧКО!!", +-- ["You have to destroy 12 targets in 180 seconds"] = "", -- Basic_Training_-_Cluster_Bomb +-- ["You have won the game by proving true cooperative skills!"] = "", -- A_Classic_Fairytale:enemy +-- ["You just appeared out of thin air!"] = "", -- A_Classic_Fairytale:backstab +-- ["You just committed suicide..."] = "", -- A_Classic_Fairytale:shadow +-- ["You killed my father, you monster!"] = "", -- A_Classic_Fairytale:backstab +-- ["You know...taking a stroll."] = "", -- A_Classic_Fairytale:backstab +-- ["You know what? I don't even regret anything!"] = "", -- A_Classic_Fairytale:backstab +-- ["You'll see what I mean!"] = "", -- A_Classic_Fairytale:enemy +-- ["You may only attack from a rope!"] = "", -- WxW +-- ["You meatbags are pretty slow, you know!"] = "", -- A_Classic_Fairytale:enemy +-- ["You might want to find a way to instantly kill arriving cannibals!"] = "", -- A_Classic_Fairytale:backstab +-- ["Young one, you are telling us that they can instantly change location without a shaman?"] = "", -- A_Classic_Fairytale:united +-- ["You probably know what to do next..."] = "", -- A_Classic_Fairytale:first_blood +-- ["Your deaths will be avenged, cannibals!"] = "", -- A_Classic_Fairytale:enemy +-- ["Your death will not be in vain, Dense Cloud!"] = "", -- A_Classic_Fairytale:shadow +-- ["You're...alive!? But we saw you die!"] = "", -- A_Classic_Fairytale:backstab +-- ["You're a pathetic liar!"] = "", -- A_Classic_Fairytale:backstab +-- ["You're funny!"] = "", -- A_Classic_Fairytale:journey +-- ["You're getting pretty good! |Tip: When you shorten you rope you move faster! |and when you lengthen it you move slower"] = "", -- Basic_Training_-_Rope +-- ["You're pathetic! You are not worthy of my attention..."] = "", -- A_Classic_Fairytale:shadow +-- ["You're probably wondering why I bought you back..."] = "", -- A_Classic_Fairytale:backstab +-- ["You're terrorizing the forest...We won't catch anything like this!"] = "", -- A_Classic_Fairytale:shadow +-- ["Your hogs must survive!"] = "", -- A_Classic_Fairytale:journey +-- ["Your movement skills will be evaluated now."] = "", -- A_Classic_Fairytale:first_blood ["You saved"] = "Ви врÑтували", +-- ["You've been assaulting us, we have been just defending ourselves!"] = "", -- A_Classic_Fairytale:enemy ["You've failed. Try again."] = "Спроба не вдалаÑÑŒ. Спробуйте знов.", ["You've reached the goal!| |Time: "] = "Ви доÑÑгли мети!| |ЧаÑ: ", +-- ["You will be avenged!"] = "", -- A_Classic_Fairytale:shadow +-- ["You won't believe what happened to me!"] = "", -- A_Classic_Fairytale:backstab +-- ["Yuck! I bet they'll keep worshipping her even after I save the village!"] = "", -- A_Classic_Fairytale:family +-- ["Zealandia"] = "", -- Continental_supplies ["'Zooka Team"] = "Команда 'Zooka", +-- ["Zork"] = "", -- A_Classic_Fairytale:dragon, A_Classic_Fairytale:family, A_Classic_Fairytale:queen + ["!!!"] = "Я!", } diff -r 3331b30e4ef1 -r 88fde28bbda6 share/hedgewars/Data/Locale/zh_CN.lua --- a/share/hedgewars/Data/Locale/zh_CN.lua Sun Oct 21 01:28:33 2012 +0400 +++ b/share/hedgewars/Data/Locale/zh_CN.lua Sat Nov 03 00:34:35 2012 +0400 @@ -1,162 +1,646 @@ locale = { ["!!!"] = "!!!", -- ["..."] = "", +-- ["011101000"] = "", -- A_Classic_Fairytale:dragon +-- ["011101001"] = "", -- A_Classic_Fairytale:backstab, A_Classic_Fairytale:dragon, A_Classic_Fairytale:enemy, A_Classic_Fairytale:family, A_Classic_Fairytale:journey, A_Classic_Fairytale:queen, A_Classic_Fairytale:shadow, A_Classic_Fairytale:united +-- ["30 minutes later..."] = "", -- A_Classic_Fairytale:shadow +-- ["About a month ago, a cyborg came and told us that you're the cannibals!"] = "", -- A_Classic_Fairytale:enemy -- ["Accuracy Bonus!"] = "", +-- ["Ace"] = "", -- User_Mission_-_RCPlane_Challenge, User_Mission_-_Rope_Knock_Challenge -- ["Achievement Unlocked"] = "", -- User_Mission_-_Bamboo_Thicket, User_Mission_-_That_Sinking_Feeling, Tumbler +-- ["A Classic Fairytale"] = "", -- A_Classic_Fairytale:first_blood +-- ["???"] = "", -- A_Classic_Fairytale:backstab +-- ["Actually, you aren't worthy of life! Take this..."] = "", -- A_Classic_Fairytale:shadow +-- ["A cy-what?"] = "", -- A_Classic_Fairytale:enemy +-- ["Adventurous"] = "", -- A_Classic_Fairytale:journey +-- ["Africa"] = "", -- Continental_supplies +-- ["After Leaks A Lot betrayed his tribe, he joined the cannibals..."] = "", -- A_Classic_Fairytale:first_blood +-- ["After the shock caused by the enemy spy, Leaks A Lot and Dense Cloud went hunting to relax."] = "", -- A_Classic_Fairytale:shadow +-- ["Again with the 'cannibals' thing!"] = "", -- A_Classic_Fairytale:enemy +-- ["a Hedgewars challenge"] = "", -- User_Mission_-_RCPlane_Challenge, User_Mission_-_Rope_Knock_Challenge -- ["a Hedgewars mini-game"] = "", -- Space_Invasion, The_Specialists ["Aiming Practice"] = "瞄准练习", --ç«ç®­ç­’ã€éœ°å¼¹æžªã€ç‹™å‡»æžª +-- ["A leap in a leap"] = "", -- A_Classic_Fairytale:first_blood +-- ["A little gift from the cyborgs"] = "", -- A_Classic_Fairytale:shadow +-- ["All gone...everything!"] = "", -- A_Classic_Fairytale:enemy +-- ["All right, we just need to get to the other side of the island!"] = "", -- A_Classic_Fairytale:journey +-- ["All walls touched!"] = "", -- WxW -- ["Ammo"] = "", -- ["Ammo Depleted!"] = "", -- ["ammo extended!"] = "", -- ["Ammo is reset at the end of your turn."] = "", -- ["Ammo Maniac!"] = "", +-- ["And how am I alive?!"] = "", -- A_Classic_Fairytale:enemy +-- ["And so happenned that Leaks A Lot failed to complete the challenge! He landed, pressured by shame..."] = "", -- A_Classic_Fairytale:first_blood +-- ["And so it began..."] = "", -- A_Classic_Fairytale:first_blood +-- ["...and so the cyborgs took over the world..."] = "", -- A_Classic_Fairytale:shadow +-- ["And so they discovered that cyborgs weren't invulnerable..."] = "", -- A_Classic_Fairytale:journey +-- ["And where's all the weed?"] = "", -- A_Classic_Fairytale:dragon +-- ["And you believed me? Oh, god, that's cute!"] = "", -- A_Classic_Fairytale:journey +-- ["Anno 1032: [The explosion will make a strong push ~ wide range, wont affect hogs close to the target]"] = "", -- Continental_supplies +-- ["Antarctica"] = "", -- Continental_supplies +-- ["Are we there yet?"] = "", -- A_Classic_Fairytale:shadow +-- ["Are you accusing me of something?"] = "", -- A_Classic_Fairytale:backstab +-- ["Are you saying that many of us have died for your entertainment?"] = "", -- A_Classic_Fairytale:enemy +-- ["Artur Detour"] = "", -- A_Classic_Fairytale:queen +-- ["As a reward for your performance, here's some new technology!"] = "", -- A_Classic_Fairytale:dragon +-- ["a shoppa minigame"] = "", -- WxW +-- ["Asia"] = "", -- Continental_supplies +-- ["Assault Team"] = "", -- A_Classic_Fairytale:backstab +-- ["As the ammo is sparse, you might want to reuse ropes while mid-air.|"] = "", -- A_Classic_Fairytale:dragon +-- ["As the challenge was completed, Leaks A Lot set foot on the ground..."] = "", -- A_Classic_Fairytale:first_blood +-- ["As you can see, there is no way to get on the other side!"] = "", -- A_Classic_Fairytale:dragon +-- ["Attack From Rope"] = "", -- WxW +-- ["Australia"] = "", -- Continental_supplies -- ["Available points remaining: "] = "", +-- ["Back Breaker"] = "", -- A_Classic_Fairytale:backstab +-- ["Back in the village, after telling the villagers about the threat..."] = "", -- A_Classic_Fairytale:united -- ["[Backspace]"] = "", +-- ["Backstab"] = "", -- A_Classic_Fairytale:backstab +-- ["Bad Team"] = "", -- User_Mission_-_The_Great_Escape -- ["Bamboo Thicket"] = "", -- ["Barrel Eater!"] = "", -- ["Barrel Launcher"] = "", +-- ["Baseballbat"] = "", -- Continental_supplies ["Bat balls at your enemies and|push them into the sea!"] = "å‘射棒çƒå°†æ•Œäººå‡»æ‰“入水", ["Bat your opponents through the|baskets and out of the map!"] = "把敌人击出场地——对准æ æ¡†", ["Bazooka Training"] = "ç«ç®­ç­’训练", +-- ["Beep Loopers"] = "", -- A_Classic_Fairytale:queen ["Best laps per team: "] = "æ¯ä¸€é˜Ÿæœ€ä½³é€Ÿåº¦:", -- ["Best Team Times: "] = "", +-- ["Beware, though! If you are slow, you die!"] = "", -- A_Classic_Fairytale:dragon +-- ["Biomechanic Team"] = "", -- A_Classic_Fairytale:family +-- ["Blender"] = "", -- A_Classic_Fairytale:family +-- ["Bloodpie"] = "", -- A_Classic_Fairytale:backstab +-- ["Bloodrocutor"] = "", -- A_Classic_Fairytale:shadow +-- ["Bloodsucker"] = "", -- A_Classic_Fairytale:shadow ["Bloody Rookies"] = "雉儿飞", -- 01#Boot_Camp, User_Mission_-_Dangerous_Ducklings, User_Mission_-_Diver, User_Mission_-_Spooky_Tree +-- ["Bone Jackson"] = "", -- A_Classic_Fairytale:backstab +-- ["Bonely"] = "", -- A_Classic_Fairytale:shadow -- ["Boom!"] = -- ["BOOM!"] = "", -- ["Boss defeated!"] = "", -- ["Boss Slayer!"] = "", +-- ["Brain Blower"] = "", -- A_Classic_Fairytale:journey +-- ["Brainiac"] = "", -- A_Classic_Fairytale:epil, A_Classic_Fairytale:first_blood, A_Classic_Fairytale:shadow +-- ["Brainila"] = "", -- A_Classic_Fairytale:united +-- ["Brain Stu"] = "", -- A_Classic_Fairytale:united +-- ["Brain Teaser"] = "", -- A_Classic_Fairytale:backstab +-- ["Brutal Lily"] = "", -- A_Classic_Fairytale:enemy, A_Classic_Fairytale:epil +-- ["Brutus"] = "", -- A_Classic_Fairytale:backstab -- ["Build a track and race."] = "", +-- ["Bullseye"] = "", -- A_Classic_Fairytale:dragon +-- ["But it proved to be no easy task!"] = "", -- A_Classic_Fairytale:dragon +-- ["But that's impossible!"] = "", -- A_Classic_Fairytale:backstab +-- ["But the ones alive are stronger in their heart!"] = "", -- A_Classic_Fairytale:enemy +-- ["But...we died!"] = "", -- A_Classic_Fairytale:backstab +-- ["But where can we go?"] = "", -- A_Classic_Fairytale:united +-- ["But why would they help us?"] = "", -- A_Classic_Fairytale:backstab +-- ["But you're cannibals. It's what you do."] = "", -- A_Classic_Fairytale:enemy +-- ["But you said you'd let her go!"] = "", -- A_Classic_Fairytale:journey +-- ["Call me Beep! Well, 'cause I'm such a nice...person!"] = "", -- A_Classic_Fairytale:family +-- ["Cannibals"] = "", -- A_Classic_Fairytale:enemy, A_Classic_Fairytale:epil, A_Classic_Fairytale:first_blood +-- ["Cannibal Sentry"] = "", -- A_Classic_Fairytale:journey +-- ["Cannibals?! You're the cannibals!"] = "", -- A_Classic_Fairytale:enemy ["CAPTURE THE FLAG"] = "抢旗å­", -- ["Careless"] = "", +-- ["Carol"] = "", -- A_Classic_Fairytale:family +-- ["CHALLENGE COMPLETE"] = "", -- User_Mission_-_RCPlane_Challenge -- ["Change Weapon"] = "", +-- ["Choose your side! If you want to join the strange man, walk up to him.|Otherwise, walk away from him. If you decide to att...nevermind..."] = "", -- A_Classic_Fairytale:shadow -- ["Clumsy"] = "", +-- ["Cluster Bomb MASTER!"] = "", -- Basic_Training_-_Cluster_Bomb +-- ["Cluster Bomb Training"] = "", -- Basic_Training_-_Cluster_Bomb ["Codename: Teamwork"] = "代å·ï¼šå›¢é˜Ÿè¡ŒåŠ¨", +-- ["Collateral Damage"] = "", -- A_Classic_Fairytale:journey +-- ["Collateral Damage II"] = "", -- A_Classic_Fairytale:journey +-- ["Collect all the crates, but remember, our time in this life is limited!"] = "", -- A_Classic_Fairytale:first_blood +-- ["Collect or destroy all the health crates."] = "", -- User_Mission_-_RCPlane_Challenge +-- ["Collect the crate on the right.|Hint: Select the rope, [Up] or [Down] to aim, [Space] to fire, directional keys to move.|Ropes can be fired again in the air!"] = "", -- A_Classic_Fairytale:first_blood +-- ["Collect the crates within the time limit!|If you fail, you'll have to try again."] = "", -- A_Classic_Fairytale:first_blood +-- ["Come closer, so that your training may continue!"] = "", -- A_Classic_Fairytale:first_blood +-- ["Compete to use as few planes as possible!"] = "", -- User_Mission_-_RCPlane_Challenge -- ["Complete the track as fast as you can!"] = "", +-- ["COMPLETION TIME"] = "", -- User_Mission_-_Rope_Knock_Challenge +-- ["Configuration accepted."] = "", -- WxW +-- ["Congratulations"] = "", -- Basic_Training_-_Rope +-- ["Congratulations! You needed only half of time|to eliminate all targets."] = "", -- Basic_Training_-_Cluster_Bomb +-- ["Congratulations! You've completed the Rope tutorial! |- Tutorial ends in 10 seconds!"] = "", -- Basic_Training_-_Rope ["Congratulations! You've eliminated all targets|within the allowed time frame."] = "æ­å–œï¼ä½ åœ¨è§„定时é™å†…清零全部目标。", --Bazooka, Shotgun, SniperRifle ["Congratulations!"] = "æ­å–œ", +-- ["Continental supplies"] = "", -- Continental_supplies ["Control pillars to score points."] = "控制支柱得分", +-- ["Corporationals"] = "", -- A_Classic_Fairytale:queen +-- ["Corpsemonger"] = "", -- A_Classic_Fairytale:shadow +-- ["Corpse Thrower"] = "", -- A_Classic_Fairytale:epil +-- ["Crates Left:"] = "", -- User_Mission_-_RCPlane_Challenge ["Cybernetic Empire"] = "自动化å¸å›½", +-- ["Cyborg. It's what the aliens call themselves."] = "", -- A_Classic_Fairytale:enemy +-- ["Dahmer"] = "", -- A_Classic_Fairytale:backstab ["DAMMIT, ROOKIE! GET OFF MY HEAD!"] = "新人,别让我看到", ["DAMMIT, ROOKIE!"] = "新人", ["Dangerous Ducklings"] = "å±é™©çš„å°é¸­å­", -- ["Deadweight"] = "", +-- ["Defeat the cannibals"] = "", -- A_Classic_Fairytale:backstab +-- ["Defeat the cannibals!|"] = "", -- A_Classic_Fairytale:united +-- ["Defeat the cannibals!|Grenade hint: set the timer with [1-5], aim with [Up]/[Down] and hold [Space] to set power"] = "", -- A_Classic_Fairytale:shadow +-- ["Defeat the cyborgs!"] = "", -- A_Classic_Fairytale:enemy +-- ["Defend yourself!|Hint: You can get tips on using weapons by moving your mouse over them in the weapon selection menu"] = "", -- A_Classic_Fairytale:shadow -- ["Demolition is fun!"] = "", +-- ["Dense Cloud"] = "", -- A_Classic_Fairytale:backstab, A_Classic_Fairytale:dragon, A_Classic_Fairytale:enemy, A_Classic_Fairytale:epil, A_Classic_Fairytale:family, A_Classic_Fairytale:journey, A_Classic_Fairytale:queen, A_Classic_Fairytale:shadow, A_Classic_Fairytale:united +-- ["Dense Cloud must have already told them everything..."] = "", -- A_Classic_Fairytale:shadow -- ["Depleted Kamikaze!"] = "", +-- ["Destroy him, Leaks A Lot! He is responsible for the deaths of many of us!"] = "", -- A_Classic_Fairytale:first_blood -- ["Destroy invaders to score points."] = "", +-- ["Destroy the targets!|Hint: Select the Shoryuken and hit [Space]|P.S. You can use it mid-air."] = "", -- A_Classic_Fairytale:first_blood +-- ["Destroy the targets!|Hint: [Up], [Down] to aim, [Space] to shoot"] = "", -- A_Classic_Fairytale:first_blood +-- ["Did anyone follow you?"] = "", -- A_Classic_Fairytale:united +-- ["Did you see him coming?"] = "", -- A_Classic_Fairytale:shadow +-- ["Did you warn the village?"] = "", -- A_Classic_Fairytale:shadow +-- ["Die, die, die!"] = "", -- A_Classic_Fairytale:dragon +-- ["Disguise as a Rockhopper Penguin: [Swap place with a random enemy hog in the circle]"] = "", -- Continental_supplies +-- ["Dist: "] = "", -- Space_Invasion +-- ["Do not laugh, inexperienced one, for he speaks the truth!"] = "", -- A_Classic_Fairytale:backstab +-- ["Do not let his words fool you, young one! He will stab you in the back as soon as you turn away!"] = "", -- A_Classic_Fairytale:first_blood +-- ["Do the deed"] = "", -- A_Classic_Fairytale:first_blood -- ["Double Kill!"] = "", +-- ["DOUBLE KILL"] = "", -- Mutant +-- ["Do you have any idea how valuable grass is?"] = "", -- A_Classic_Fairytale:enemy +-- ["Do you think you're some kind of god?"] = "", -- A_Classic_Fairytale:enemy +-- ["Dragon's Lair"] = "", -- A_Classic_Fairytale:dragon +-- ["Drills"] = "", -- A_Classic_Fairytale:backstab -- ["Drone Hunter!"] = "", +-- ["Drop a bomb: [drop some heroic wind that will turn into a bomb on impact]"] = "", -- Continental_supplies -- ["Drowner"] = "", +-- ["Dude, all the plants are gone!"] = "", -- A_Classic_Fairytale:family +-- ["Dude, can you see Ramon and Spiky?"] = "", -- A_Classic_Fairytale:journey +-- ["Dude, that's so cool!"] = "", -- A_Classic_Fairytale:backstab +-- ["Dude, we really need a new shaman..."] = "", -- A_Classic_Fairytale:shadow +-- ["Dude, what's this place?!"] = "", -- A_Classic_Fairytale:dragon +-- ["Dude, where are we?"] = "", -- A_Classic_Fairytale:backstab +-- ["Dude, wow! I just had the weirdest high!"] = "", -- A_Classic_Fairytale:backstab +-- ["Duration"] = "", -- Continental_supplies +-- ["Dust storm: [Deals 20 damage to all enemies in the circle]"] = "", -- Continental_supplies -- ["Each turn you get 1-3 random weapons"] = "", -- ["Each turn you get one random weapon"] = "", +-- ["Eagle Eye"] = "", -- A_Classic_Fairytale:backstab +-- ["Eagle Eye: [Blink to the impact ~ one shot]"] = "", -- Continental_supplies +-- ["Ear Sniffer"] = "", -- A_Classic_Fairytale:backstab, A_Classic_Fairytale:epil +-- ["Elderbot"] = "", -- A_Classic_Fairytale:family +-- ["Elimate your captor."] = "", -- User_Mission_-_The_Great_Escape ["Eliminate all enemies"] = "解决全部对手", ["Eliminate all targets before your time runs out.|You have unlimited ammo for this mission."] = "时间é™åˆ¶å†…清除全部目标。弹è¯æ— é™ã€‚", --Bazooka, Shotgun, SniperRifle +-- ["Eliminate enemy hogs and take their weapons."] = "", -- Highlander ["Eliminate Poison before the time runs out"] = "时间é™åˆ¶å†…清除毒素。", ["Eliminate the Blue Team"] = "解决è“色队ä¼", -- ["Eliminate the enemy before the time runs out"] = "", -- User_Mission_-_Bamboo_Thicket, User_Mission_-_Newton_and_the_Hammock -- ["Eliminate the enemy hogs to win."] = "", -- ["Eliminate the enemy specialists."] = "", ["- Eliminate Unit 3378 |- Feeble Resistance must survive"] = "- 打倒 3378 |-å抗者必须存活", +-- ["Elmo"] = "", -- A_Classic_Fairytale:dragon, A_Classic_Fairytale:family, A_Classic_Fairytale:queen -- ["Energetic Engineer"] = "", ["Enjoy the swim..."] = "游水愉快", -- ["[Enter]"] = "", +-- ["Europe"] = "", -- Continental_supplies +-- [" ever done to you?!"] = "", -- A_Classic_Fairytale:backstab +-- ["Everyone knows this."] = "", -- A_Classic_Fairytale:enemy +-- ["Every single time!"] = "", -- A_Classic_Fairytale:dragon +-- ["Everything looks OK..."] = "", -- A_Classic_Fairytale:enemy +-- ["Exactly, man! That was my dream."] = "", -- A_Classic_Fairytale:backstab +-- ["Eye Chewer"] = "", -- A_Classic_Fairytale:journey +-- ["FAG"] = "", -- Mutant +-- ["Family Reunion"] = "", -- A_Classic_Fairytale:family ["Fastest lap: "] = "最快记录:", ["Feeble Resistance"] = "å抗者", +-- ["Fell From Grace"] = "", -- A_Classic_Fairytale:backstab, A_Classic_Fairytale:dragon, A_Classic_Fairytale:enemy, A_Classic_Fairytale:epil, A_Classic_Fairytale:family, A_Classic_Fairytale:queen +-- ["Fell From Heaven"] = "", -- A_Classic_Fairytale:enemy, A_Classic_Fairytale:epil, A_Classic_Fairytale:family, A_Classic_Fairytale:first_blood, A_Classic_Fairytale:journey, A_Classic_Fairytale:queen +-- ["Fell From Heaven is the best! Fell From Heaven is the greatest!"] = "", -- A_Classic_Fairytale:family +-- ["Femur Lover"] = "", -- A_Classic_Fairytale:shadow +-- ["Fierce Competition!"] = "", -- Space_Invasion +-- ["Fiery Water"] = "", -- A_Classic_Fairytale:backstab, A_Classic_Fairytale:dragon, A_Classic_Fairytale:enemy, A_Classic_Fairytale:epil, A_Classic_Fairytale:family, A_Classic_Fairytale:queen, A_Classic_Fairytale:united +-- ["Find your tribe!|Cross the lake!"] = "", -- A_Classic_Fairytale:dragon +-- ["Finish your training|Hint: Animations can be skipped with the [Precise] key."] = "", -- A_Classic_Fairytale:first_blood -- ["Fire"] = "", +-- ["Fire a mine: [Does what it says ~ Cant be dropped close to an enemy ~ 1 sec]"] = "", -- Continental_supplies +-- ["First aid kits?!"] = "", -- A_Classic_Fairytale:united +-- ["First Blood"] = "", -- A_Classic_Fairytale:first_blood +-- ["FIRST BLOOD MUTATES"] = "", -- Mutant +-- ["First Steps"] = "", -- A_Classic_Fairytale:first_blood ["Flag captured!"] = "夺旗得分ï¼", ["Flag respawned!"] = "旗帜é‡ç”Ÿï¼", ["Flag returned!"] = "旗帜归还ï¼", -- ["Flags, and their home base will be placed where each team ends their first turn."] = "", -- ["Flamer"] = "", +-- ["Flaming Worm"] = "", -- A_Classic_Fairytale:backstab +-- ["Flare: [fire up some bombs depending on hogs depending on hogs in the circle"] = "", -- Continental_supplies +-- ["Flesh for Brainz"] = "", -- A_Classic_Fairytale:journey +-- ["For improved features/stability, play 0.9.18+"] = "", -- WxW +-- ["Free Dense Cloud and continue the mission!"] = "", -- A_Classic_Fairytale:journey -- ["Friendly Fire!"] = "", -- ["fuel extended!"] = "", -- ["GAME BEGUN!!!"] = "", -- ["Game Modifiers: "] = "", ["GAME OVER!"] = "结æŸäº†ï¼", ["Game Started!"] = "开始", +-- ["Game? Was this a game to you?!"] = "", -- A_Classic_Fairytale:enemy +-- ["GasBomb"] = "", -- Continental_supplies +-- ["Gas Gargler"] = "", -- A_Classic_Fairytale:queen +-- ["Get Dense Cloud out of the pit!"] = "", -- A_Classic_Fairytale:journey ["Get on over there and take him out!"] = "上去把它拉下æ¥ï¼", +-- ["Get on the head of the mole"] = "", -- A_Classic_Fairytale:first_blood +-- ["Get out of there!"] = "", -- User_Mission_-_The_Great_Escape +-- ["Get that crate!"] = "", -- A_Classic_Fairytale:first_blood +-- ["Get the crate on the other side of the island!|"] = "", -- A_Classic_Fairytale:journey +-- ["Get to the target using your rope! |Controls: Left & Right to swing the rope - Up & Down to Contract and Expand!"] = "", -- Basic_Training_-_Rope +-- ["Get your teammates out of their natural prison and save the princess!|Hint: Drilling holes should solve everything.|Hint: It might be a good idea to place a girder before starting to drill. Just saying.|Hint: All your hedgehogs need to be above the marked height!|Hint: Leaks A Lot needs to get really close to the princess!"] = "", -- A_Classic_Fairytale:family +-- ["GG!"] = "", -- User_Mission_-_Rope_Knock_Challenge +-- ["Gimme Bones"] = "", -- A_Classic_Fairytale:backstab +-- ["Glark"] = "", -- A_Classic_Fairytale:shadow -- ["Goal"] = "", ["GO! GO! GO!"] = "上!", ["Good birdy......"] = "乖鸟儿", +-- ["Good Dude"] = "", -- User_Mission_-_The_Great_Escape +-- ["Good idea, they'll never find us there!"] = "", -- A_Classic_Fairytale:united +-- ["Good luck...or else!"] = "", -- A_Classic_Fairytale:journey ["Good luck out there!"] = "ç¥å¥½è¿", -- ["Good so far!"] = "", -- ["Good to go!"] = "", +-- ["Go on top of the flower"] = "", -- A_Classic_Fairytale:first_blood +-- ["Go, quick!"] = "", -- A_Classic_Fairytale:backstab +-- ["Gorkij"] = "", -- A_Classic_Fairytale:journey +-- ["Go surf!"] = "", -- WxW -- ["GOTCHA!"] = "", -- ["Grab Mines/Explosives"] = "", +-- ["Great choice, Steve! Mind if I call you that?"] = "", -- A_Classic_Fairytale:shadow +-- ["Great work! Now hit it with your Baseball Bat! |Tip: You can change weapon with 'Right Click'!"] = "", -- Basic_Training_-_Rope +-- ["Great! You will be contacted soon for assistance."] = "", -- A_Classic_Fairytale:shadow +-- ["Green lipstick bullet: [Is poisonous]"] = "", -- Continental_supplies +-- ["Greetings, "] = "", -- A_Classic_Fairytale:dragon +-- ["Greetings, cloudy one!"] = "", -- A_Classic_Fairytale:shadow +-- ["Grenade Training"] = "", -- Basic_Training_-_Grenade +-- ["Grenadiers"] = "", -- Basic_Training_-_Grenade +-- ["Guys, do you think there's more of them?"] = "", -- A_Classic_Fairytale:backstab +-- ["HAHA!"] = "", -- A_Classic_Fairytale:enemy +-- ["Haha!"] = "", -- A_Classic_Fairytale:united -- ["Hahahaha!"] = "", -- ["Haha, now THAT would be something!"] = "", +-- ["Hannibal"] = "", -- A_Classic_Fairytale:epil -- ["Hapless Hogs"] = "", -- [" Hapless Hogs left!"] = "", +-- [" HAS MUTATED\" )"] = "", -- +-- ["Hatless Jerry"] = "", -- A_Classic_Fairytale:queen +-- ["Have no illusions, your tribe is dead, indifferent of your choice."] = "", -- A_Classic_Fairytale:shadow +-- ["Have we ever attacked you first?"] = "", -- A_Classic_Fairytale:enemy -- ["Health crates extend your time."] = "", -- ["Heavy"] = "", +-- ["Heavy Cannfantry"] = "", -- A_Classic_Fairytale:united +-- ["Hedge-cogs"] = "", -- A_Classic_Fairytale:enemy +-- ["Hedgehog projectile: [fire your hog like a Sticky Bomb]"] = "", -- Continental_supplies ["Hedgewars-Basketball"] = "刺猬大作战-篮çƒè®¡åˆ’", ["Hedgewars-Knockball"] = "刺猬大作战-击çƒè®¡åˆ’", +-- ["Hedgibal Lecter"] = "", -- A_Classic_Fairytale:backstab -- ["Heh, it's not that bad."] = "", +-- ["Hello again, "] = "", -- A_Classic_Fairytale:family +-- ["Help me, Leaks!"] = "", -- A_Classic_Fairytale:journey +-- ["Help me, please!!!"] = "", -- A_Classic_Fairytale:journey +-- ["Help me, please!"] = "", -- A_Classic_Fairytale:journey +-- ["He moves like an eagle in the sky."] = "", -- A_Classic_Fairytale:first_blood +-- ["He must be in the village already."] = "", -- A_Classic_Fairytale:journey +-- ["Here, let me help you!"] = "", -- A_Classic_Fairytale:backstab +-- ["Here, let me help you save her!"] = "", -- A_Classic_Fairytale:family +-- ["Here...pick your weapon!"] = "", -- A_Classic_Fairytale:first_blood +-- ["Hero Team"] = "", -- User_Mission_-_The_Great_Escape +-- ["He's so brave..."] = "", -- A_Classic_Fairytale:first_blood +-- ["He won't be selling us out anymore!"] = "", -- A_Classic_Fairytale:backstab +-- ["Hey, guys!"] = "", -- A_Classic_Fairytale:backstab +-- ["Hey guys!"] = "", -- A_Classic_Fairytale:united +-- ["Hey! This is cheating!"] = "", -- A_Classic_Fairytale:journey +-- ["HIGHLANDER"] = "", -- Highlander +-- ["Hightime"] = "", -- A_Classic_Fairytale:first_blood +-- ["Hint: Double Jump - Press [Backspace] twice"] = "", -- A_Classic_Fairytale:first_blood +-- ["Hint: Select the BlowTorch, aim and press [Fire]. Press [Fire] again to stop.|Don't blow up the crate."] = "", -- A_Classic_Fairytale:journey +-- ["Hint: Select the LowGravity and press [Fire]."] = "", -- A_Classic_Fairytale:journey +-- ["Hint: you might want to stay out of sight and take all the crates...|"] = "", -- A_Classic_Fairytale:journey +-- ["His arms are so strong!"] = "", -- A_Classic_Fairytale:first_blood -- ["Hit Combo!"] = "", +-- ["Hmmm...actually...I didn't either."] = "", -- A_Classic_Fairytale:enemy +-- ["Hmmm, I'll have to find some way of moving him off this anti-portal surface..."] = "", -- portal +-- ["Hmmm...it's a draw. How unfortunate!"] = "", -- A_Classic_Fairytale:enemy +-- ["Hmmm...perhaps a little more time will help."] = "", -- A_Classic_Fairytale:first_blood ["Hmmm..."] = "呃...", +-- ["Hogminator"] = "", -- A_Classic_Fairytale:family +-- ["Hogs in sight!"] = "", -- Continental_supplies +-- ["HOLY SHIT!"] = "", -- Mutant +-- ["Honest Lee"] = "", -- A_Classic_Fairytale:enemy ["Hooray!"] = "呼!", +-- ["Hostage Situation"] = "", -- A_Classic_Fairytale:family +-- ["How can I ever repay you for saving my life?"] = "", -- A_Classic_Fairytale:journey +-- ["How come in a village full of warriors, it's up to me to save it?"] = "", -- A_Classic_Fairytale:dragon +-- ["How difficult would you like it to be?"] = "", -- A_Classic_Fairytale:first_blood +-- ["HOW DO THEY KNOW WHERE WE ARE???"] = "", -- A_Classic_Fairytale:united +-- ["However, if you fail to do so, she dies a most violent death, just like your friend! Muahahaha!"] = "", -- A_Classic_Fairytale:journey +-- ["However, if you fail to do so, she dies a most violent death! Muahahaha!"] = "", -- A_Classic_Fairytale:journey +-- ["However, my mates don't agree with me on letting you go..."] = "", -- A_Classic_Fairytale:dragon +-- [" HP"] = "", -- Mutant ["Hunter"] = "猎人", --Bazooka, Shotgun, SniperRifle +-- ["I believe there's more of them."] = "", -- A_Classic_Fairytale:backstab +-- ["I can see you have been training diligently."] = "", -- A_Classic_Fairytale:first_blood +-- ["I can't believe it worked!"] = "", -- A_Classic_Fairytale:shadow +-- ["I can't believe this!"] = "", -- A_Classic_Fairytale:enemy +-- ["I can't believe what I'm hearing!"] = "", -- A_Classic_Fairytale:backstab +-- ["I can't wait any more, I have to save myself!"] = "", -- A_Classic_Fairytale:shadow +-- ["I could just teleport myself there..."] = "", -- A_Classic_Fairytale:family +-- ["I'd better get going myself."] = "", -- A_Classic_Fairytale:journey +-- ["I didn't until about a month ago."] = "", -- A_Classic_Fairytale:enemy +-- ["I don't know how you did that.. But good work! |The next one should be easy as cake for you!"] = "", -- Basic_Training_-_Rope +-- ["I feel something...a place! They will arrive near the circles!"] = "", -- A_Classic_Fairytale:backstab +-- ["If only I had a way..."] = "", -- A_Classic_Fairytale:backstab +-- ["If only I were given a chance to explain my being here..."] = "", -- A_Classic_Fairytale:first_blood +-- ["I forgot that she's the daughter of the chief, too..."] = "", -- A_Classic_Fairytale:backstab +-- ["If they try coming here, they can have a taste of my delicious knuckles!"] = "", -- A_Classic_Fairytale:united +-- ["If you agree to provide the information we need, you will be spared!"] = "", -- A_Classic_Fairytale:shadow +-- ["If you can get that crate fast enough, your beloved \"princess\" may go free."] = "", -- A_Classic_Fairytale:journey +-- ["If you decide to help us, though, we will no longer need to find a new governor for the island."] = "", -- A_Classic_Fairytale:shadow +-- ["If you get stuck, use your Desert Eagle or restart the mission!|"] = "", -- A_Classic_Fairytale:journey +-- ["If you know what I mean..."] = "", -- A_Classic_Fairytale:shadow +-- ["If you say so..."] = "", -- A_Classic_Fairytale:shadow +-- ["If you wish to restart the course, hold [Precise] while your turn ends (e.g with Skip)"] = "", -- +-- ["I guess you'll have to kill them."] = "", -- A_Classic_Fairytale:dragon +-- ["I have come to make you an offering..."] = "", -- A_Classic_Fairytale:shadow +-- ["I have no idea where that mole disappeared...Can you see it?"] = "", -- A_Classic_Fairytale:shadow +-- ["I have to follow that alien."] = "", -- A_Classic_Fairytale:backstab +-- ["I have to get back to the village!"] = "", -- A_Classic_Fairytale:shadow +-- ["I hope you are prepared for a small challenge, young one."] = "", -- A_Classic_Fairytale:first_blood +-- ["I just don't want to sink to your level."] = "", -- A_Classic_Fairytale:backstab +-- ["I just found out that they have captured your princess!"] = "", -- A_Classic_Fairytale:family +-- ["I just wonder where Ramon and Spiky disappeared..."] = "", -- A_Classic_Fairytale:journey +-- ["I'll hold them off while you return to the village!"] = "", -- A_Classic_Fairytale:shadow +-- ["Imagine those targets are the wolves that killed your parents! Take your anger out on them!"] = "", -- A_Classic_Fairytale:first_blood +-- ["I'm...alive? How? Why?"] = "", -- A_Classic_Fairytale:backstab +-- ["I'm a ninja."] = "", -- A_Classic_Fairytale:dragon +-- ["I marked the place of their arrival. You're welcome!"] = "", -- A_Classic_Fairytale:backstab +-- ["I'm certain that this is a misunderstanding, fellow hedgehogs!"] = "", -- A_Classic_Fairytale:first_blood +-- ["I mean, none of you ceased to live."] = "", -- A_Classic_Fairytale:enemy +-- ["I'm getting old for this!"] = "", -- A_Classic_Fairytale:family +-- ["I'm getting thirsty..."] = "", -- A_Classic_Fairytale:family +-- ["I'm here to help you rescue her."] = "", -- A_Classic_Fairytale:family +-- ["I'm not sure about that!"] = "", -- A_Classic_Fairytale:united +-- ["Impressive...you are still dry as the corpse of a hawk after a week in the desert..."] = "", -- A_Classic_Fairytale:first_blood +-- ["I'm so scared!"] = "", -- A_Classic_Fairytale:united +-- ["Incredible..."] = "", -- A_Classic_Fairytale:shadow +-- ["I need to find the others!"] = "", -- A_Classic_Fairytale:backstab +-- ["I need to get to the other side of this island, fast!"] = "", -- A_Classic_Fairytale:journey +-- ["I need to move the tribe!"] = "", -- A_Classic_Fairytale:united +-- ["I need to prevent their arrival!"] = "", -- A_Classic_Fairytale:backstab +-- ["I need to warn the others."] = "", -- A_Classic_Fairytale:backstab +-- ["In fact, you are the only one that's been acting strangely."] = "", -- A_Classic_Fairytale:backstab +-- ["In order to get to the other side, you need to collect the crates first.|"] = "", -- A_Classic_Fairytale:dragon ["Instructor"] = "引导员", -- 01#Boot_Camp, User_Mission_-_Dangerous_Ducklings +-- ["Interesting idea, haha!"] = "", -- A_Classic_Fairytale:enemy +-- ["Interesting! Last time you said you killed a cannibal!"] = "", -- A_Classic_Fairytale:backstab +-- ["In the meantime, take these and return to your \"friend\"!"] = "", -- A_Classic_Fairytale:shadow -- ["invaders destroyed"] = "", +-- ["Invasion"] = "", -- A_Classic_Fairytale:united +-- ["I saw it with my own eyes!"] = "", -- A_Classic_Fairytale:shadow +-- ["I see..."] = "", -- A_Classic_Fairytale:shadow +-- ["I see you have already taken the leap of faith."] = "", -- A_Classic_Fairytale:first_blood +-- ["I see you would like his punishment to be more...personal..."] = "", -- A_Classic_Fairytale:first_blood +-- ["I sense another wave of cannibals heading my way!"] = "", -- A_Classic_Fairytale:backstab +-- ["I sense another wave of cannibals heading our way!"] = "", -- A_Classic_Fairytale:backstab +-- ["I shouldn't have drunk that last pint."] = "", -- A_Classic_Fairytale:dragon +-- ["Is this place in my head?"] = "", -- A_Classic_Fairytale:dragon +-- ["It doesn't matter. I won't let that alien hurt my daughter!"] = "", -- A_Classic_Fairytale:dragon +-- ["I think we are safe here."] = "", -- A_Classic_Fairytale:backstab +-- ["I thought their shaman died when he tried our medicine!"] = "", -- A_Classic_Fairytale:shadow +-- ["It is called 'Hogs of Steel'."] = "", -- A_Classic_Fairytale:enemy +-- ["It is time to practice your fighting skills."] = "", -- A_Classic_Fairytale:first_blood +-- ["It must be a childhood trauma..."] = "", -- A_Classic_Fairytale:family +-- ["It must be the aliens!"] = "", -- A_Classic_Fairytale:backstab +-- ["It must be the aliens' deed."] = "", -- A_Classic_Fairytale:backstab +-- ["It must be the cyborgs again!"] = "", -- A_Classic_Fairytale:enemy +-- ["I told you, I just found them."] = "", -- A_Classic_Fairytale:backstab -- ["It's a good thing SUDDEN DEATH is 99 turns away..."] = "", +-- ["It's always up to women to clear up the mess men created!"] = "", -- A_Classic_Fairytale:dragon +-- ["It's a shame, I forgot how to do that!"] = "", -- A_Classic_Fairytale:family +-- ["It's impossible to communicate with the spirits without a shaman."] = "", -- A_Classic_Fairytale:shadow +-- ["It's over..."] = "", -- A_Classic_Fairytale:shadow +-- ["It's time you learned that your actions have consequences!"] = "", -- A_Classic_Fairytale:journey +-- ["It's worth more than wood!"] = "", -- A_Classic_Fairytale:enemy +-- ["It wants our brains!"] = "", -- A_Classic_Fairytale:shadow +-- ["It was not a dream, unwise one!"] = "", -- A_Classic_Fairytale:backstab +-- ["I've seen this before. They just appear out of thin air."] = "", -- A_Classic_Fairytale:united +-- ["I want to play a game..."] = "", -- A_Classic_Fairytale:journey +-- ["I want to see how it handles this!"] = "", -- A_Classic_Fairytale:backstab +-- ["I wish to help you, "] = "", -- A_Classic_Fairytale:dragon +-- ["I wonder where Dense Cloud is..."] = "", -- A_Classic_Fairytale:journey, A_Classic_Fairytale:shadow +-- ["I wonder why I'm so angry all the time..."] = "", -- A_Classic_Fairytale:family +-- ["I won't let you kill her!"] = "", -- A_Classic_Fairytale:journey +-- ["Jack"] = "", -- A_Classic_Fairytale:dragon, A_Classic_Fairytale:family, A_Classic_Fairytale:queen +-- ["Jeremiah"] = "", -- A_Classic_Fairytale:dragon +-- ["John"] = "", -- A_Classic_Fairytale:journey +-- ["Judas"] = "", -- A_Classic_Fairytale:backstab -- ["Jumping is disabled"] = "", +-- ["Just kidding, none of you have died!"] = "", -- A_Classic_Fairytale:enemy +-- ["Just on a walk."] = "", -- A_Classic_Fairytale:united +-- ["Just wait till I get my hands on that trauma! ARGH!"] = "", -- A_Classic_Fairytale:family -- ["Kamikaze Expert!"] = "", -- ["Keep it up!"] = "", +-- ["Kerguelen"] = "", -- Continental_supplies -- ["Killing spree!"] = "", +-- ["KILL IT!"] = "", -- A_Classic_Fairytale:first_blood -- ["KILLS"] = "", +-- ["Kill the aliens!"] = "", -- A_Classic_Fairytale:dragon +-- ["Kill the cannibal!"] = "", -- A_Classic_Fairytale:first_blood +-- ["Kill the traitor...or spare his life!|Kill him or press [Precise]!"] = "", -- A_Classic_Fairytale:backstab -- ["Last Target!"] = "", +-- ["Leader"] = "", -- A_Classic_Fairytale:enemy +-- ["Leaderbot"] = "", -- A_Classic_Fairytale:queen +-- ["Leaks A Lot"] = "", -- A_Classic_Fairytale:backstab, A_Classic_Fairytale:dragon, A_Classic_Fairytale:enemy, A_Classic_Fairytale:epil, A_Classic_Fairytale:family, A_Classic_Fairytale:first_blood, A_Classic_Fairytale:journey, A_Classic_Fairytale:queen, A_Classic_Fairytale:shadow, A_Classic_Fairytale:united +-- ["Leaks A Lot, depressed for killing his loved one, failed to save the village..."] = "", -- A_Classic_Fairytale:journey +-- ["Leaks A Lot gave his life for his tribe! He should have survived!"] = "", -- A_Classic_Fairytale:first_blood +-- ["Leaks A Lot must survive!"] = "", -- A_Classic_Fairytale:journey +-- ["Led Heart"] = "", -- A_Classic_Fairytale:queen +-- ["Lee"] = "", -- A_Classic_Fairytale:dragon, A_Classic_Fairytale:family, A_Classic_Fairytale:queen -- ["[Left Shift]"] = "", +-- ["Let a Continent provide your weapons!"] = "", -- Continental_supplies +-- ["Let me test your skills a little, will you?"] = "", -- A_Classic_Fairytale:journey +-- ["Let's go home!"] = "", -- A_Classic_Fairytale:journey +-- ["Let's head back to the village!"] = "", -- A_Classic_Fairytale:shadow +-- ["Let's see what your comrade does now!"] = "", -- A_Classic_Fairytale:journey +-- ["Let's show those cannibals what we're made of!"] = "", -- A_Classic_Fairytale:backstab +-- ["Let them have a taste of my fury!"] = "", -- A_Classic_Fairytale:backstab +-- ["Let us help, too!"] = "", -- A_Classic_Fairytale:backstab +-- ["Light Cannfantry"] = "", -- A_Classic_Fairytale:united ["Listen up, maggot!!"] = "å¬å¥½ï¼Œå°å­!!", +-- ["Little did they know that this hunt will mark them forever..."] = "", -- A_Classic_Fairytale:shadow -- ["Lively Lifeguard"] = "", +-- ["Lonely Cries: [Rise the water if no hog is in the circle and deal 1 damage to all hogs]"] = "", -- Continental_supplies +-- ["Look, I had no choice!"] = "", -- A_Classic_Fairytale:backstab +-- ["Look out! There's more of them!"] = "", -- A_Classic_Fairytale:backstab +-- ["Look out! We're surrounded by cannibals!"] = "", -- A_Classic_Fairytale:enemy +-- ["Looks like the whole world is falling apart!"] = "", -- A_Classic_Fairytale:enemy +-- ["Luckily, I've managed to snatch some of them."] = "", -- A_Classic_Fairytale:united +-- ["LUDICROUS KILL"] = "", -- Mutant +-- ["May the spirits aid you in all your quests!"] = "", -- A_Classic_Fairytale:backstab +-- ["Medicine: [Fire some exploding medicine that will heal all hogs effected by the explosion]"] = "", -- Continental_supplies +-- ["MEGA KILL"] = "", -- Mutant +-- ["Meiwes"] = "", -- A_Classic_Fairytale:backstab +-- ["Mindy"] = "", -- A_Classic_Fairytale:united -- ["Mine Deployer"] = "", -- ["Mine Eater!"] = "", -- ["|- Mines Time:"] = ["MISSION FAILED"] = "任务失败", -- User_Mission_-_Dangerous_Ducklings, User_Mission_-_Diver, User_Mission_-_Spooky_Tree, User_Mission_-_Teamwork -- ["MISSION SUCCESS"] = "", ["MISSION SUCCESSFUL"] = "任务æˆåŠŸ", -- User_Mission_-_Diver, User_Mission_-_Spooky_Tree, User_Mission_-_Teamwork +-- ["Molotov"] = "", -- Continental_supplies +-- ["MONSTER KILL"] = "", -- Mutant +-- ["More Natives"] = "", -- A_Classic_Fairytale:epil -- ["Movement: [Up], [Down], [Left], [Right]"] = "", -- ["Multi-shot!"] = "", +-- ["Muriel"] = "", -- A_Classic_Fairytale:backstab, A_Classic_Fairytale:dragon, A_Classic_Fairytale:family, A_Classic_Fairytale:queen +-- ["Muscle Dissolver"] = "", -- A_Classic_Fairytale:shadow +-- ["-------"] = "", -- Mutant +-- ["Nade Boy"] = "", -- Basic_Training_-_Grenade +-- ["Name"] = "", -- A_Classic_Fairytale:queen -- ["Nameless Heroes"] = "", +-- ["Nancy Screw"] = "", -- A_Classic_Fairytale:enemy, A_Classic_Fairytale:queen +-- ["Napalm rocket: [Fire a bomb with napalm!]"] = "", -- Continental_supplies +-- ["Natives"] = "", -- A_Classic_Fairytale:backstab, A_Classic_Fairytale:dragon, A_Classic_Fairytale:enemy, A_Classic_Fairytale:epil, A_Classic_Fairytale:family, A_Classic_Fairytale:first_blood, A_Classic_Fairytale:journey, A_Classic_Fairytale:queen, A_Classic_Fairytale:shadow, A_Classic_Fairytale:united -- ["New Barrels Per Turn"] = "", -- ["NEW CLAN RECORD: "] = "", ["NEW fastest lap: "] = "新记录", -- ["New Mines Per Turn"] = "", -- ["NEW RACE RECORD: "] = "", -- ["Newton's Hammock"] = "", +-- ["Nicely done, meatbags!"] = "", -- A_Classic_Fairytale:enemy +-- ["Nice work, "] = "", -- A_Classic_Fairytale:dragon +-- ["Nice work!"] = "", -- A_Classic_Fairytale:enemy +-- ["Nilarian"] = "", -- A_Classic_Fairytale:queen +-- ["No, I came back to help you out..."] = "", -- A_Classic_Fairytale:shadow +-- ["No...I wonder where they disappeared?!"] = "", -- A_Classic_Fairytale:journey +-- ["Nom-Nom"] = "", -- A_Classic_Fairytale:journey +-- ["NomNom"] = "", -- A_Classic_Fairytale:united +-- ["Nope. It was one fast mole, that's for sure."] = "", -- A_Classic_Fairytale:shadow +-- ["No! Please, help me!"] = "", -- A_Classic_Fairytale:journey +-- ["NORMAL"] = "", -- Continental_supplies +-- ["North America"] = "", -- Continental_supplies +-- ["Not all hogs are born equal."] = "", -- Highlander -- ["NOT ENOUGH WAYPOINTS"] = "", +-- ["Not now, Fiery Water!"] = "", -- A_Classic_Fairytale:backstab ["Not So Friendly Match"] = "éžå‹å–„对抗", -- Basketball, Knockball +-- ["Not you again! My head still hurts from last time!"] = "", -- A_Classic_Fairytale:shadow +-- ["No, we made sure of that!"] = "", -- A_Classic_Fairytale:united +-- ["Now find the next target! |Tip: Normally you lose health by falling down, so be careful!"] = "", -- Basic_Training_-_Rope +-- ["No! What have I done?! What have YOU done?!"] = "", -- A_Classic_Fairytale:journey +-- ["No. Where did he come from?"] = "", -- A_Classic_Fairytale:shadow +-- ["Now how do I get on the other side?!"] = "", -- A_Classic_Fairytale:dragon +-- ["No. You and the rest of the tribe are safer there!"] = "", -- A_Classic_Fairytale:backstab +-- ["Obliterate them!|Hint: You might want to take cover..."] = "", -- A_Classic_Fairytale:shadow +-- ["Obstacle course"] = "", -- A_Classic_Fairytale:dragon +-- ["Of course I have to save her. What did I expect?!"] = "", -- A_Classic_Fairytale:family +-- ["OH, COME ON!"] = "", -- A_Classic_Fairytale:journey +-- ["Oh, my!"] = "", -- A_Classic_Fairytale:first_blood +-- ["Oh, my! This is even more entertaining than I've expected!"] = "", -- A_Classic_Fairytale:backstab ["Oh no! Just try again!"] = "ä¸ï¼é‡æ–°å†æ¥ã€‚", -- User_Mission_-_Diver, User_Mission_-_Spooky_Tree, User_Mission_-_Teamwork +-- ["Oh no, not "] = "", -- A_Classic_Fairytale:backstab, A_Classic_Fairytale:united ["Oh no! Time's up! Just try again."] = "ä¸ï¼åˆ°ç‚¹äº†ï¼Œéœ€è¦é‡æ–°æ¥ã€‚", --Bazooka, Shotgun, SniperRifle +-- ["Oh no! You failed! Just try again."] = "", -- Basic_Training_-_Cluster_Bomb +-- ["Oh, silly me! I forgot that I'm the shaman."] = "", -- A_Classic_Fairytale:backstab +-- ["Olive"] = "", -- A_Classic_Fairytale:united +-- ["Omnivore"] = "", -- A_Classic_Fairytale:first_blood +-- ["Once upon a time, on an island with great natural resources, lived two tribes in heated conflict..."] = "", -- A_Classic_Fairytale:first_blood +-- ["ONE HOG PER TEAM! KILLING EXCESS HEDGES"] = "", -- Mutant +-- ["One tribe was peaceful, spending their time hunting and training, enjoying the small pleasures of life..."] = "", -- A_Classic_Fairytale:first_blood +-- ["Oops...I dropped them."] = "", -- A_Classic_Fairytale:united +-- ["Open that crate and we will continue!"] = "", -- A_Classic_Fairytale:first_blood ["Operation Diver"] = "水下行动", -- ["Opposing Team: "] = ["Opposing Team:"] = "对方队ä¼", +-- ["Orlando Boom!"] = "", -- A_Classic_Fairytale:queen +-- ["Ouch!"] = "", -- User_Mission_-_Rope_Knock_Challenge +-- ["Our tribe, our beautiful island!"] = "", -- A_Classic_Fairytale:enemy +-- ["Parachute"] = "", -- Continental_supplies ["Pathetic Hog #1"] = "å¯æ€œåˆºçŒ¬ä¸€å·", ["Pathetic Hog #2"] = "å¯æ€œåˆºçŒ¬äºŒå·", -- ["Pathetic Hog #%d"] = -- ["Pathetic Resistance"] = "", -- User_Mission_-_Bamboo_Thicket, User_Mission_-_Newton_and_the_Hammock +-- ["Perfect! Now try to get the next crate without hurting yourself!"] = "", -- A_Classic_Fairytale:first_blood -- ["Per-Hog Ammo"] = "", +-- ["- Per team weapons|- 9 weaponschemes|- Unique new weapons| |Select continent first round with the Weapon Menu or by ([switch/tab]=Increase,[presice/left shift]=Decrease)"] = "", -- +-- ["Pfew! That was close!"] = "", -- A_Classic_Fairytale:shadow +-- ["Piñata bullet: [Contains some sweet candy!]"] = "", -- Continental_supplies +-- ["Pings left:"] = "", -- Space_Invasion -- ["Place more waypoints using [ENTER]"] = "", -- ["Place more waypoints using the 'Air Attack' weapon."] = "", +-- ["Planes Used:"] = "", -- User_Mission_-_RCPlane_Challenge +-- ["Planes Used"] = "", -- User_Mission_-_RCPlane_Challenge +-- ["Play with me!"] = "", -- A_Classic_Fairytale:shadow +-- ["Please place the way-point further from the waterline."] = "", -- Racer +-- ["Please place the way-point in the open, within the map boundaries."] = "", -- Racer +-- ["Please, stop releasing your \"smoke signals\"!"] = "", -- A_Classic_Fairytale:shadow +-- ["Point Blank Combo!"] = "", -- Space_Invasion -- ["points"] = -- ["Poison"] = +-- ["Portal hint: one goes to the destination, and one is the entrance.|"] = "", -- A_Classic_Fairytale:dragon +-- ["Portal mission"] = "", -- portal -- ["Power Remaining"] = "", -- ["Prepare yourself"] = "", +-- ["Press [Enter] to accept this configuration."] = "", -- WxW +-- ["Press [Left] or [Right] to move around, [Enter] to jump"] = "", -- A_Classic_Fairytale:first_blood -- ["Press [Precise] to skip intro"] = "", +-- ["Private Novak"] = "", -- Basic_Training_-_Cluster_Bomb +-- ["Protect yourselves!|Grenade hint: set the timer with [1-5], aim with [Up]/[Down] and hold [Space] to set power"] = "", -- A_Classic_Fairytale:shadow -- ["Race complexity limit reached."] = "", -- ["RACER"] = "", +-- ["Rachel"] = "", -- A_Classic_Fairytale:dragon, A_Classic_Fairytale:family, A_Classic_Fairytale:queen +-- ["Radar Ping"] = "", -- Space_Invasion +-- ["Raging Buffalo"] = "", -- A_Classic_Fairytale:backstab, A_Classic_Fairytale:dragon, A_Classic_Fairytale:enemy, A_Classic_Fairytale:epil, A_Classic_Fairytale:family, A_Classic_Fairytale:queen, A_Classic_Fairytale:united +-- ["Ramon"] = "", -- A_Classic_Fairytale:enemy, A_Classic_Fairytale:epil, A_Classic_Fairytale:family, A_Classic_Fairytale:queen, A_Classic_Fairytale:shadow +-- ["RC PLANE TRAINING"] = "", -- User_Mission_-_RCPlane_Challenge +-- ["Really?! You thought you could harm me with your little toys?"] = "", -- A_Classic_Fairytale:shadow +-- ["Regurgitator"] = "", -- A_Classic_Fairytale:backstab +-- ["Reinforcements"] = "", -- A_Classic_Fairytale:backstab +-- ["Remember: The rope only bend around objects, |if it doesn't hit anything it's always stright!"] = "", -- Basic_Training_-_Rope +-- ["Remember this, pathetic animal: when the day comes, you will regret your blind loyalty!"] = "", -- A_Classic_Fairytale:shadow -- [" - 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次夺旗队ä¼èŽ·èƒœ| - åªæœ‰æ——帜在己方基地æ‰ç®—| -带旗刺猬消é€åˆ™æ——帜è½ä¸‹| -è½ä¸‹çš„旗帜使用方å¼ä¸å˜| -æŸå¤±çš„刺猬瞬间还原", +-- ["Return to Leaks A Lot! If you get stuck, press [Precise] to try again!"] = "", -- A_Classic_Fairytale:shadow +-- ["Righteous Beard"] = "", -- A_Classic_Fairytale:backstab, A_Classic_Fairytale:dragon, A_Classic_Fairytale:enemy, A_Classic_Fairytale:epil, A_Classic_Fairytale:family, A_Classic_Fairytale:first_blood, A_Classic_Fairytale:queen, A_Classic_Fairytale:united +-- ["ROPE-KNOCKING"] = "", -- User_Mission_-_Rope_Knock_Challenge +-- ["Rope Training"] = "", -- Basic_Training_-_Rope +-- ["Rot Molester"] = "", -- A_Classic_Fairytale:shadow -- ["Round Limit:"] = "", -- ["Round Limit"] = "", -- ["Rounds Complete: "] = "", -- ["Rounds Complete"] = "", ["RULES OF THE GAME [Press ESC to view]"] = "游æˆè§„则 [按下 ESCé”® 查看]", +-- ["Rusty Joe"] = "", -- A_Classic_Fairytale:queen -- ["s|"] = "", +-- ["Sabotage: [Sabotage all hogs in the circle and deal ~10 dmg]"] = "", -- Continental_supplies +-- ["Salivaslurper"] = "", -- A_Classic_Fairytale:united +-- ["Salvation"] = "", -- A_Classic_Fairytale:family +-- ["Salvation was one step closer now..."] = "", -- A_Classic_Fairytale:dragon -- ["Save as many hapless hogs as possible!"] = "", +-- ["Save Fell From Heaven!"] = "", -- A_Classic_Fairytale:journey +-- ["Save Leaks A Lot!|Hint: The Switch utility might be of help to you."] = "", -- A_Classic_Fairytale:shadow +-- ["Save the princess! All your hogs must survive!|Hint: Kill the cyborgs first! Use the ammo very carefully!|Hint: You might want to spare a girder for cover!"] = "", -- A_Classic_Fairytale:family +-- ["Save the princess by collecting the crate in under 12 turns!"] = "", -- A_Classic_Fairytale:journey +-- ["Scalp Muncher"] = "", -- A_Classic_Fairytale:backstab -- ["SCORE"] = "", +-- ["Score"] = "", -- Mutant +-- ["Scream from a Walrus: [Deal 20 damage + 10% of your hogs health to all hogs around you and get half back]"] = "", -- Continental_supplies -- ["sec"] = +-- ["Seduction"] = "", -- Continental_supplies +-- ["Seems like every time you take a \"walk\", the enemy find us!"] = "", -- A_Classic_Fairytale:backstab +-- ["See that crate farther on the right?"] = "", -- A_Classic_Fairytale:first_blood ["See ya!"] = "å†è§!", +-- ["Segmentation Paul"] = "", -- A_Classic_Fairytale:dragon +-- ["Select continent!"] = "", -- Continental_supplies +-- ["Select difficulty: [Left] - easier or [Right] - harder"] = "", -- A_Classic_Fairytale:first_blood -- ["selected!"] = "", -- ["s"] = "", -- GaudyRacer, Space_Invasion +-- ["... share your beauty with the world every morning, my princess!"] = "", -- A_Classic_Fairytale:journey +-- ["She's behind that tall thingy."] = "", -- A_Classic_Fairytale:family -- ["Shield boosted! +30 power"] = "", -- ["Shield Depleted"] = "", -- ["Shield is fully recharged!"] = "", @@ -165,60 +649,339 @@ -- ["Shield OFF:"] = "", -- ["Shield ON:"] = "", -- ["Shield Seeker!"] = "", +-- ["Shotgun"] = "", -- Continental_supplies ["Shotgun Team"] = "霰弹枪队", ["Shotgun Training"] = "霰弹枪训练", -- ["shots remaining."] = "", -- ["Silly"] = "", -- ["Sinky"] = "", +-- ["Sirius Lee"] = "", -- A_Classic_Fairytale:enemy ["%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 +-- ["Slippery"] = "", -- A_Classic_Fairytale:journey +-- ["Smith 0.97"] = "", -- A_Classic_Fairytale:enemy +-- ["Smith 0.98"] = "", -- A_Classic_Fairytale:enemy +-- ["Smith 0.99a"] = "", -- A_Classic_Fairytale:enemy +-- ["Smith 0.99b"] = "", -- A_Classic_Fairytale:enemy +-- ["Smith 0.99f"] = "", -- A_Classic_Fairytale:enemy +-- ["Smith 1.0"] = "", -- A_Classic_Fairytale:enemy +-- ["Sniper Rifle"] = "", -- Continental_supplies +-- ["Sniper!"] = "", -- Space_Invasion ["Sniper Training"] = "狙击训练", ["Sniperz"] = "狙击手", +-- ["So humiliating..."] = "", -- A_Classic_Fairytale:first_blood +-- ["South America"] = "", -- Continental_supplies +-- ["So? What will it be?"] = "", -- A_Classic_Fairytale:shadow +-- ["Spawn the crate, and attack!"] = "", -- WxW +-- ["Special Weapons:"] = "", -- Continental_supplies +-- ["Spiky Cheese"] = "", -- A_Classic_Fairytale:enemy, A_Classic_Fairytale:epil, A_Classic_Fairytale:family, A_Classic_Fairytale:queen, A_Classic_Fairytale:shadow +-- ["Spleenlover"] = "", -- A_Classic_Fairytale:united -- ["Sponge"] = "", ["Spooky Tree"] = "怪树", -- ["STATUS UPDATE"] = "", -- GaudyRacer, Space_Invasion +-- ["Steel Eye"] = "", -- A_Classic_Fairytale:queen +-- ["Step By Step"] = "", -- A_Classic_Fairytale:first_blood +-- ["Steve"] = "", -- A_Classic_Fairytale:dragon, A_Classic_Fairytale:family, A_Classic_Fairytale:queen +-- ["Sticky Mine"] = "", -- Continental_supplies +-- ["Stronglings"] = "", -- A_Classic_Fairytale:shadow +-- ["Structure"] = "", -- Continental_supplies +-- ["Super Weapons"] = "", -- WxW +-- ["Surf Before Crate"] = "", -- WxW +-- ["Surfer! +15 points!"] = "", -- Space_Invasion +-- ["Surfer!"] = "", -- WxW +-- ["Survive!|Hint: Cinematics can be skipped with the [Precise] key."] = "", -- A_Classic_Fairytale:shadow +-- ["Swing, Leaks A Lot, on the wings of the wind!"] = "", -- A_Classic_Fairytale:first_blood -- ["Switched to "] = "", +-- ["Syntax Errol"] = "", -- A_Classic_Fairytale:dragon +-- ["Talk about mixed signals..."] = "", -- A_Classic_Fairytale:dragon ["Team %d: "] = "é˜Ÿä¼ %d", -- ["Team Scores"] = "", -- Control, Space_Invasion +-- ["Teleport hint: just use the mouse to select the destination!"] = "", -- A_Classic_Fairytale:dragon +-- ["Thanks!"] = "", -- A_Classic_Fairytale:family +-- ["Thank you, my hero!"] = "", -- A_Classic_Fairytale:family +-- ["Thank you, oh, thank you, Leaks A Lot!"] = "", -- A_Classic_Fairytale:journey +-- ["Thank you, oh, thank you, my heroes!"] = "", -- A_Classic_Fairytale:journey +-- ["That is, indeed, very weird..."] = "", -- A_Classic_Fairytale:united +-- ["That makes it almost invaluable!"] = "", -- A_Classic_Fairytale:enemy +-- ["That ought to show them!"] = "", -- A_Classic_Fairytale:backstab +-- ["That's for my father!"] = "", -- A_Classic_Fairytale:backstab +-- ["That shaman sure knows what he's doing!"] = "", -- A_Classic_Fairytale:shadow -- ["That Sinking Feeling"] = "", +-- ["That's not our problem!"] = "", -- A_Classic_Fairytale:enemy +-- ["That's typical of you!"] = "", -- A_Classic_Fairytale:family +-- ["That was just mean!"] = "", -- A_Classic_Fairytale:backstab, A_Classic_Fairytale:united -- ["That was pointless."] = +-- ["The answer is...entertaintment. You'll see what I mean."] = "", -- A_Classic_Fairytale:backstab +-- ["The anti-portal zone is all over the floor, and I have nothing to kill him...Droping something could hurt him enough to kill him..."] = "", -- portal +-- ["The Bull's Eye"] = "", -- A_Classic_Fairytale:first_blood +-- ["The caves are well hidden, they won't find us there!"] = "", -- A_Classic_Fairytale:united +-- ["The Crate Frenzy"] = "", -- A_Classic_Fairytale:first_blood +-- ["The Dilemma"] = "", -- A_Classic_Fairytale:shadow +-- ["The enemy can't move but it might be a good idea to stay out of sight!|"] = "", -- A_Classic_Fairytale:dragon ["The enemy is hiding out on yonder ducky!"] = "敌人è—在那边!", +-- ["The Enemy Of My Enemy"] = "", -- A_Classic_Fairytale:enemy +-- ["The First Blood"] = "", -- A_Classic_Fairytale:first_blood +-- ["The First Encounter"] = "", -- A_Classic_Fairytale:shadow -- ["The flag will respawn next round."] = +-- ["The food bites back"] = "", -- A_Classic_Fairytale:backstab +-- ["The giant umbrella from the last crate should help break the fall."] = "", -- A_Classic_Fairytale:first_blood +-- ["The Great Escape"] = "", -- User_Mission_-_The_Great_Escape +-- ["The guardian"] = "", -- A_Classic_Fairytale:shadow +-- ["The Individualist"] = "", -- A_Classic_Fairytale:shadow +-- ["Their buildings were very primitive back then, even for an uncivilised island."] = "", -- A_Classic_Fairytale:united +-- ["The Journey Back"] = "", -- A_Classic_Fairytale:journey +-- ["The Leap of Faith"] = "", -- A_Classic_Fairytale:first_blood +-- ["The Moonwalk"] = "", -- A_Classic_Fairytale:journey -- ["The Nameless One"] = "", +-- ["The next one is pretty hard! |Tip: You have to do multiple swings!"] = "", -- Basic_Training_-_Rope +-- ["Then how do they keep appearing?"] = "", -- A_Classic_Fairytale:shadow +-- ["The other one were all cannibals, spending their time eating the organs of fellow hedgehogs..."] = "", -- A_Classic_Fairytale:first_blood +-- ["There must be a spy among us!"] = "", -- A_Classic_Fairytale:backstab +-- ["There's more of them? When did they become so hungry?"] = "", -- A_Classic_Fairytale:backstab, A_Classic_Fairytale:united +-- ["There's nothing more satisfying for me than seeing you share your beauty with the world every morning, my princess!"] = "", -- A_Classic_Fairytale:journey +-- ["There's nothing more satisfying to us than seeing you share your beauty..."] = "", -- A_Classic_Fairytale:journey +-- ["There's nothing more satisfying to us than seeing you share your beauty with the world every morning, my princess!"] = "", -- A_Classic_Fairytale:journey +-- ["The Rising"] = "", -- A_Classic_Fairytale:first_blood +-- ["The Savior"] = "", -- A_Classic_Fairytale:journey +-- ["These primitive people are so funny!"] = "", -- A_Classic_Fairytale:backstab +-- ["The Shadow Falls"] = "", -- A_Classic_Fairytale:shadow +-- ["The Showdown"] = "", -- A_Classic_Fairytale:shadow +-- ["The Slaughter"] = "", -- A_Classic_Fairytale:dragon, A_Classic_Fairytale:first_blood -- ["THE SPECIALISTS"] = "", +-- ["The spirits of the ancerstors are surely pleased, Leaks A Lot."] = "", -- A_Classic_Fairytale:first_blood +-- ["The Torment"] = "", -- A_Classic_Fairytale:first_blood +-- ["The Tunnel Maker"] = "", -- A_Classic_Fairytale:journey +-- ["The Ultimate Weapon"] = "", -- A_Classic_Fairytale:first_blood +-- ["The Union"] = "", -- A_Classic_Fairytale:enemy +-- ["The village, unprepared, was destroyed by the cyborgs..."] = "", -- A_Classic_Fairytale:journey +-- ["The walk of Fame"] = "", -- A_Classic_Fairytale:shadow +-- ["The wasted youth"] = "", -- A_Classic_Fairytale:first_blood +-- ["The weapon in that last crate was bestowed upon us by the ancients!"] = "", -- A_Classic_Fairytale:first_blood +-- ["The what?!"] = "", -- A_Classic_Fairytale:dragon +-- ["The wind whispers that you are ready to become familiar with tools, now..."] = "", -- A_Classic_Fairytale:first_blood +-- ["They are all waiting back in the village, haha."] = "", -- A_Classic_Fairytale:enemy +-- ["They Call Me Bullseye!"] = "", -- Space_Invasion +-- ["They have weapons we've never seen before!"] = "", -- A_Classic_Fairytale:united +-- ["They keep appearing like this. It's weird!"] = "", -- A_Classic_Fairytale:united +-- ["They killed "] = "", -- A_Classic_Fairytale:backstab, A_Classic_Fairytale:united +-- ["They must be trying to weaken us!"] = "", -- A_Classic_Fairytale:enemy +-- ["They never learn"] = "", -- A_Classic_Fairytale:journey +-- ["They told us to wear these clothes. They said that this is the newest trend."] = "", -- A_Classic_Fairytale:enemy +-- ["They've been manipulating us all this time!"] = "", -- A_Classic_Fairytale:enemy +-- ["Thighlicker"] = "", -- A_Classic_Fairytale:united +-- ["This is it! It's time to make Fell From Heaven fall for me..."] = "", -- A_Classic_Fairytale:first_blood +-- ["This island is the only place left on Earth with grass on it!"] = "", -- A_Classic_Fairytale:enemy +-- ["This is typical!"] = "", -- A_Classic_Fairytale:dragon +-- ["This must be some kind of sorcery!"] = "", -- A_Classic_Fairytale:shadow +-- ["This must be the caves!"] = "", -- A_Classic_Fairytale:backstab -- ["This one's tricky."] = "", -- ["This rain is really something..."] = "", +-- ["This will be fun!"] = "", -- A_Classic_Fairytale:enemy +-- ["Those aliens are destroying the island!"] = "", -- A_Classic_Fairytale:family -- ["TIME: "] = "", -- ["Timed Kamikaze!"] = "", -- ["Time Extended!"] = "", -- ["Time Extension"] = "", +-- ["Tip: The rope physics are different than in the real world, |use it to your advantage!"] = "", -- Basic_Training_-_Rope -- ["Toggle Shield"] = "", +-- ["To help you, of course!"] = "", -- A_Classic_Fairytale:journey +-- ["To place a girder, select it, use [Left] and [Right] to select angle and length, place with [Left Click]"] = "", -- A_Classic_Fairytale:shadow +-- ["Torn Muscle"] = "", -- A_Classic_Fairytale:journey +-- [" to save the village."] = "", -- A_Classic_Fairytale:dragon +-- ["To the caves..."] = "", -- A_Classic_Fairytale:united ["Toxic Team"] = "è…å的队ä¼", -- User_Mission_-_Diver, User_Mission_-_Spooky_Tree, User_Mission_-_Teamwork -- ["TRACK COMPLETED"] = "", -- ["TRACK FAILED!"] = "", +-- ["training"] = "", -- portal +-- ["Traitors"] = "", -- A_Classic_Fairytale:epil +-- ["Tribe"] = "", -- A_Classic_Fairytale:backstab ["TrophyRace"] = "竞速", +-- ["Try to protect the chief! You won't lose if he dies, but it is advised that he survives."] = "", -- A_Classic_Fairytale:united ["T_T"] = "T_T", -- ["Tumbling Time Extended!"] = "", +-- ["Turns until Sudden Death: "] = "", -- A_Classic_Fairytale:dragon +-- [" turns until Sudden Death! Better hurry!"] = "", -- A_Classic_Fairytale:dragon -- ["Turn Time"] = "", +-- ["Two little hogs cooperating, getting past obstacles..."] = "", -- A_Classic_Fairytale:journey +-- ["Uhm...I met one of them and took his weapons."] = "", -- A_Classic_Fairytale:shadow +-- ["Uhmm...ok no."] = "", -- A_Classic_Fairytale:enemy +-- ["ULTRA KILL"] = "", -- Mutant +-- ["Under Construction"] = "", -- A_Classic_Fairytale:shadow +-- ["Unexpected Igor"] = "", -- A_Classic_Fairytale:dragon -- ["Unit"] = "", +-- ["Unit 0x0007"] = "", -- A_Classic_Fairytale:family +-- ["Unit 334a$7%;.*"] = "", -- A_Classic_Fairytale:backstab, A_Classic_Fairytale:dragon, A_Classic_Fairytale:enemy, A_Classic_Fairytale:family, A_Classic_Fairytale:queen, A_Classic_Fairytale:united ["Unit 3378"] = "3378", -- ["Unit 835"] = "", +-- ["United We Stand"] = "", -- A_Classic_Fairytale:united -- ["Unlimited Attacks"] = "", +-- ["Unlucky Sods"] = "", -- User_Mission_-_Rope_Knock_Challenge -- ["Unstoppable!"] = "", +-- ["Unsuspecting Louts"] = "", -- User_Mission_-_Rope_Knock_Challenge +-- ["[Up], [Down] to aim, [Space] to shoot!"] = "", -- A_Classic_Fairytale:first_blood +-- ["Use it wisely!"] = "", -- A_Classic_Fairytale:dragon +-- ["Use it with precaution!"] = "", -- A_Classic_Fairytale:first_blood -- ["User Challenge"] = "", +-- ["Use the parachute ([Space] while in air)"] = "", -- +-- ["Use the portal gun to get to the next crate, then use the new gun to get to the final destination!|"] = "", -- A_Classic_Fairytale:dragon +-- ["Use the rope to get on the head of the mole, young one!"] = "", -- A_Classic_Fairytale:first_blood +-- ["Use the rope to knock your enemies to their doom."] = "", -- User_Mission_-_Rope_Knock_Challenge ["Use your rope to get from start to finish as fast as you can!"] = "抓起绳å­é£žå‘目的地,越快越好。", +-- ["Vedgies"] = "", -- A_Classic_Fairytale:journey +-- ["Vegan Jack"] = "", -- A_Classic_Fairytale:enemy +-- ["Victory!"] = "", -- Basic_Training_-_Rope ["Victory for the "] = "胜利属于", +-- ["Violence is not the answer to your problems!"] = "", -- A_Classic_Fairytale:first_blood +-- ["Walls Left"] = "", -- WxW +-- ["Walls Required"] = "", -- WxW +-- ["WALL TO WALL"] = "", -- WxW +-- ["Wannabe Flyboys"] = "", -- User_Mission_-_RCPlane_Challenge +-- ["Wannabe Shoppsta"] = "", -- User_Mission_-_Rope_Knock_Challenge +-- ["Watch your steps, young one!"] = "", -- A_Classic_Fairytale:first_blood -- ["Waypoint placed."] = "", -- ["Way-Points Remaining"] = "", +-- ["Weaklings"] = "", -- A_Classic_Fairytale:shadow +-- ["We all know what happens when you get frightened..."] = "", -- A_Classic_Fairytale:first_blood -- ["Weapons Reset"] = "", +-- ["Weapons reset."] = "", -- Highlander +-- ["We are indeed."] = "", -- A_Classic_Fairytale:backstab +-- ["We can't defeat them!"] = "", -- A_Classic_Fairytale:shadow +-- ["We can't hold them up much longer!"] = "", -- A_Classic_Fairytale:united +-- ["We can't let them take over our little island!"] = "", -- A_Classic_Fairytale:enemy +-- ["We have no time to waste..."] = "", -- A_Classic_Fairytale:journey +-- ["We have nowhere else to live!"] = "", -- A_Classic_Fairytale:enemy +-- ["We have to protect the village!"] = "", -- A_Classic_Fairytale:united +-- ["We have to unite and defeat those cylergs!"] = "", -- A_Classic_Fairytale:enemy +-- ["Welcome, Leaks A Lot!"] = "", -- A_Classic_Fairytale:journey -- ["Well done."] = "", +-- ["We'll give you a problem then!"] = "", -- A_Classic_Fairytale:enemy +-- ["We'll spare your life for now!"] = "", -- A_Classic_Fairytale:backstab +-- ["Well, that was a waste of time."] = "", -- A_Classic_Fairytale:dragon +-- ["Well, well! Isn't that the cutest thing you've ever seen?"] = "", -- A_Classic_Fairytale:journey +-- ["Well, yes. This was a cyborg television show."] = "", -- A_Classic_Fairytale:enemy +-- ["We made sure noone followed us!"] = "", -- A_Classic_Fairytale:backstab +-- ["We need to move!"] = "", -- A_Classic_Fairytale:united +-- ["We need to prevent their arrival!"] = "", -- A_Classic_Fairytale:backstab +-- ["We need to warn the village."] = "", -- A_Classic_Fairytale:shadow +-- ["We should head back to the village now."] = "", -- A_Classic_Fairytale:shadow +-- ["We were trying to save her and we got lost."] = "", -- A_Classic_Fairytale:family +-- ["We won't let you hurt her!"] = "", -- A_Classic_Fairytale:journey +-- ["What?! A cannibal? Here? There is no time to waste! Come, you are prepared."] = "", -- A_Classic_Fairytale:first_blood +-- ["What a douche!"] = "", -- A_Classic_Fairytale:enemy +-- ["What am I gonna...eat, yo?"] = "", -- A_Classic_Fairytale:family +-- ["What are you doing at a distance so great, young one?"] = "", -- A_Classic_Fairytale:first_blood +-- ["What are you doing? Let her go!"] = "", -- A_Classic_Fairytale:journey +-- ["What a ride!"] = "", -- A_Classic_Fairytale:shadow +-- ["What a strange cave!"] = "", -- A_Classic_Fairytale:dragon +-- ["What a strange feeling!"] = "", -- A_Classic_Fairytale:backstab +-- ["What do my faulty eyes observe? A spy!"] = "", -- A_Classic_Fairytale:first_blood +-- ["Whatever floats your boat..."] = "", -- A_Classic_Fairytale:shadow +-- [" What !! For all of this struggle i just win some ... TIME o0"] = "", -- portal +-- ["What has "] = "", -- A_Classic_Fairytale:backstab +-- ["What? Here? How did they find us?!"] = "", -- A_Classic_Fairytale:backstab +-- ["What is this place?"] = "", -- A_Classic_Fairytale:dragon, A_Classic_Fairytale:enemy +-- ["What shall we do with the traitor?"] = "", -- A_Classic_Fairytale:backstab +-- ["WHAT?! You're the ones attacking us!"] = "", -- A_Classic_Fairytale:enemy +-- ["When?"] = "", -- A_Classic_Fairytale:enemy +-- ["When I find it..."] = "", -- A_Classic_Fairytale:dragon +-- ["Where are all these crates coming from?!"] = "", -- A_Classic_Fairytale:shadow +-- ["Where are they?!"] = "", -- A_Classic_Fairytale:backstab +-- ["Where did that alien run?"] = "", -- A_Classic_Fairytale:dragon +-- ["Where did you get the exploding apples?"] = "", -- A_Classic_Fairytale:shadow +-- ["Where did you get the exploding apples and the magic bow that shoots many arrows?"] = "", -- A_Classic_Fairytale:shadow +-- ["Where did you get the magic bow that shoots many arrows?"] = "", -- A_Classic_Fairytale:shadow +-- ["Where did you get the weapons in the forest, Dense Cloud?"] = "", -- A_Classic_Fairytale:backstab +-- ["Where do you get that?!"] = "", -- A_Classic_Fairytale:enemy +-- ["Where have you been?!"] = "", -- A_Classic_Fairytale:backstab +-- ["Where have you been?"] = "", -- A_Classic_Fairytale:united +-- ["? Why?"] = "", -- A_Classic_Fairytale:backstab +-- ["Why "] = "", -- A_Classic_Fairytale:backstab +-- ["! Why?!"] = "", -- A_Classic_Fairytale:backstab, A_Classic_Fairytale:united +-- ["Why are you doing this?"] = "", -- A_Classic_Fairytale:journey +-- ["Why are you helping us, uhm...?"] = "", -- A_Classic_Fairytale:family +-- ["Why can't he just let her go?!"] = "", -- A_Classic_Fairytale:family +-- ["Why do men keep hurting me?"] = "", -- A_Classic_Fairytale:first_blood +-- ["Why do you not like me?"] = "", -- A_Classic_Fairytale:shadow +-- ["Why do you want to take over our island?"] = "", -- A_Classic_Fairytale:enemy +-- ["Why me?!"] = "", -- A_Classic_Fairytale:backstab +-- ["Why would they do this?"] = "", -- A_Classic_Fairytale:backstab +-- ["- Will Get 1-3 random weapons"] = "", -- Continental_supplies +-- ["- Will refresh Parachute each turn."] = "", -- Continental_supplies +-- ["- Will refresh portalgun each turn."] = "", -- Continental_supplies -- ["Will this ever end?"] = "", +-- ["WINNER IS "] = "", -- Mutant -- ["WINNING TIME: "] = "", +-- ["Wise Oak"] = "", -- A_Classic_Fairytale:backstab, A_Classic_Fairytale:dragon, A_Classic_Fairytale:enemy, A_Classic_Fairytale:epil, A_Classic_Fairytale:family, A_Classic_Fairytale:queen +-- ["With Dense Cloud on the land of shadows, I'm the village's only hope..."] = "", -- A_Classic_Fairytale:journey +-- ["With the rest of the tribe gone, it was up to "] = "", -- A_Classic_Fairytale:dragon +-- ["Worry not, for it is a peaceful animal! There is no reason to be afraid..."] = "", -- A_Classic_Fairytale:first_blood +-- ["Wow, what a dream!"] = "", -- A_Classic_Fairytale:backstab +-- ["Y3K1337"] = "", -- A_Classic_Fairytale:journey, A_Classic_Fairytale:shadow +-- ["Yay, we won!"] = "", -- A_Classic_Fairytale:enemy +-- ["Y Chwiliad"] = "", -- A_Classic_Fairytale:dragon +-- ["Yeah...I think it's a 'he', lol."] = "", -- A_Classic_Fairytale:shadow +-- ["Yeah, sure! I died. Hillarious!"] = "", -- A_Classic_Fairytale:backstab +-- ["Yeah, take that!"] = "", -- A_Classic_Fairytale:dragon +-- ["Yeah? Watcha gonna do? Cry?"] = "", -- A_Classic_Fairytale:journey +-- ["Yes!"] = "", -- A_Classic_Fairytale:enemy +-- ["Yes, yeees! You are now ready to enter the real world!"] = "", -- A_Classic_Fairytale:first_blood +-- ["Yo, dude, we're here, too!"] = "", -- A_Classic_Fairytale:family +-- ["You are given the chance to turn your life around..."] = "", -- A_Classic_Fairytale:shadow +-- ["You are playing with our lives here!"] = "", -- A_Classic_Fairytale:enemy +-- ["! You bastards!"] = "", -- A_Classic_Fairytale:backstab, A_Classic_Fairytale:united +-- ["You bear impressive skills, "] = "", -- A_Classic_Fairytale:dragon +-- ["You can't fire a portal on the blue surface"] = "", -- portal +-- ["You couldn't possibly believe that after refusing my offer I'd just let you go!"] = "", -- A_Classic_Fairytale:journey -- ["You'd almost swear the water was rising!"] = "", +-- ["You'd better watch your steps..."] = "", -- A_Classic_Fairytale:journey +-- ["You did not make it in time, try again!"] = "", -- Basic_Training_-_Rope +-- ["You have 7 turns until the next wave arrives.|Make sure the arriving cannibals are greeted appropriately!|If the hog dies, the cause is lost.|Hint: you might want to use some mines..."] = "", -- A_Classic_Fairytale:backstab +-- ["You have "] = "", -- A_Classic_Fairytale:dragon +-- ["You have been giving us out to the enemy, haven't you!"] = "", -- A_Classic_Fairytale:backstab +-- ["You have been respawned, at your last checkpoint!"] = "", -- Basic_Training_-_Rope +-- ["You have been respawned, be more carefull next time!"] = "", -- Basic_Training_-_Rope +-- ["You have chosen the perfect moment to leave."] = "", -- A_Classic_Fairytale:united +-- ["You have failed to complete your task, young one!"] = "", -- A_Classic_Fairytale:journey +-- ["You have failed to save the tribe!"] = "", -- A_Classic_Fairytale:backstab +-- ["You have finally figured it out!"] = "", -- A_Classic_Fairytale:enemy +-- ["You have kidnapped our whole tribe!"] = "", -- A_Classic_Fairytale:enemy +-- ["You have killed an innocent hedgehog!"] = "", -- A_Classic_Fairytale:backstab +-- ["You have proven yourself worthy to see our most ancient secret!"] = "", -- A_Classic_Fairytale:first_blood +-- ["You have proven yourselves worthy!"] = "", -- A_Classic_Fairytale:enemy ["You have SCORED!!"] = "得分", +-- ["You have to destroy 12 targets in 180 seconds"] = "", -- Basic_Training_-_Cluster_Bomb +-- ["You have won the game by proving true cooperative skills!"] = "", -- A_Classic_Fairytale:enemy +-- ["You just appeared out of thin air!"] = "", -- A_Classic_Fairytale:backstab +-- ["You just committed suicide..."] = "", -- A_Classic_Fairytale:shadow +-- ["You killed my father, you monster!"] = "", -- A_Classic_Fairytale:backstab +-- ["You know...taking a stroll."] = "", -- A_Classic_Fairytale:backstab +-- ["You know what? I don't even regret anything!"] = "", -- A_Classic_Fairytale:backstab +-- ["You'll see what I mean!"] = "", -- A_Classic_Fairytale:enemy +-- ["You may only attack from a rope!"] = "", -- WxW +-- ["You meatbags are pretty slow, you know!"] = "", -- A_Classic_Fairytale:enemy +-- ["You might want to find a way to instantly kill arriving cannibals!"] = "", -- A_Classic_Fairytale:backstab +-- ["Young one, you are telling us that they can instantly change location without a shaman?"] = "", -- A_Classic_Fairytale:united +-- ["You probably know what to do next..."] = "", -- A_Classic_Fairytale:first_blood +-- ["Your deaths will be avenged, cannibals!"] = "", -- A_Classic_Fairytale:enemy +-- ["Your death will not be in vain, Dense Cloud!"] = "", -- A_Classic_Fairytale:shadow +-- ["You're...alive!? But we saw you die!"] = "", -- A_Classic_Fairytale:backstab +-- ["You're a pathetic liar!"] = "", -- A_Classic_Fairytale:backstab +-- ["You're funny!"] = "", -- A_Classic_Fairytale:journey +-- ["You're getting pretty good! |Tip: When you shorten you rope you move faster! |and when you lengthen it you move slower"] = "", -- Basic_Training_-_Rope +-- ["You're pathetic! You are not worthy of my attention..."] = "", -- A_Classic_Fairytale:shadow +-- ["You're probably wondering why I bought you back..."] = "", -- A_Classic_Fairytale:backstab +-- ["You're terrorizing the forest...We won't catch anything like this!"] = "", -- A_Classic_Fairytale:shadow +-- ["Your hogs must survive!"] = "", -- A_Classic_Fairytale:journey +-- ["Your movement skills will be evaluated now."] = "", -- A_Classic_Fairytale:first_blood -- ["You saved"] = "", +-- ["You've been assaulting us, we have been just defending ourselves!"] = "", -- A_Classic_Fairytale:enemy ["You've failed. Try again."] = "失败了。å†å°è¯•å§ã€‚", ["You've reached the goal!| |Time: "] = "目标达æˆ| |时间:", +-- ["You will be avenged!"] = "", -- A_Classic_Fairytale:shadow +-- ["You won't believe what happened to me!"] = "", -- A_Classic_Fairytale:backstab +-- ["Yuck! I bet they'll keep worshipping her even after I save the village!"] = "", -- A_Classic_Fairytale:family +-- ["Zealandia"] = "", -- Continental_supplies ["'Zooka Team"] = "ç«ç®­é˜Ÿ", +-- ["Zork"] = "", -- A_Classic_Fairytale:dragon, A_Classic_Fairytale:family, A_Classic_Fairytale:queen [":("] = "囧", } diff -r 3331b30e4ef1 -r 88fde28bbda6 share/hedgewars/Data/Maps/CMakeLists.txt --- a/share/hedgewars/Data/Maps/CMakeLists.txt Sun Oct 21 01:28:33 2012 +0400 +++ b/share/hedgewars/Data/Maps/CMakeLists.txt Sat Nov 03 00:34:35 2012 +0400 @@ -30,6 +30,7 @@ Octorama PirateFlag Plane + portal Ropes Ruler Sheep diff -r 3331b30e4ef1 -r 88fde28bbda6 share/hedgewars/Data/Maps/CTF_Blizzard/map.lua --- a/share/hedgewars/Data/Maps/CTF_Blizzard/map.lua Sun Oct 21 01:28:33 2012 +0400 +++ b/share/hedgewars/Data/Maps/CTF_Blizzard/map.lua Sat Nov 03 00:34:35 2012 +0400 @@ -238,7 +238,7 @@ if fCaptures[teamID] == 3 then for i = 0, (numhhs-1) do if GetHogClan(hhs[i]) == alt then - SetEffect(hhs[i], heResurrectable, false) + SetEffect(hhs[i], heResurrectable, 0) SetHealth(hhs[i],0) end end @@ -784,7 +784,7 @@ hhs[numhhs] = gear numhhs = numhhs + 1 - SetEffect(gear, heResurrectable, true) + SetEffect(gear, heResurrectable, 1) end diff -r 3331b30e4ef1 -r 88fde28bbda6 share/hedgewars/Data/Maps/Control/map.lua --- a/share/hedgewars/Data/Maps/Control/map.lua Sun Oct 21 01:28:33 2012 +0400 +++ b/share/hedgewars/Data/Maps/Control/map.lua Sat Nov 03 00:34:35 2012 +0400 @@ -400,7 +400,7 @@ for i = 0, (numhhs-1) do if hhs[i] ~= nil then if GetHogClan(hhs[i]) ~= winnerClan then - SetEffect(hhs[i], heResurrectable, false) + SetEffect(hhs[i], heResurrectable, 0) SetHealth(hhs[i],0) end end @@ -501,7 +501,7 @@ if GetGearType(gear) == gtHedgehog then hhs[numhhs] = gear numhhs = numhhs + 1 - SetEffect(gear, heResurrectable, true) + SetEffect(gear, heResurrectable, 1) end end diff -r 3331b30e4ef1 -r 88fde28bbda6 share/hedgewars/Data/Maps/Knockball/map.lua --- a/share/hedgewars/Data/Maps/Knockball/map.lua Sun Oct 21 01:28:33 2012 +0400 +++ b/share/hedgewars/Data/Maps/Knockball/map.lua Sat Nov 03 00:34:35 2012 +0400 @@ -34,7 +34,7 @@ function onGearAdd(gear) if GetGearType(gear) == gtShover then - ball = AddGear(GetX(gear), GetY(gear), gtBall, 0, 0, 0, 0) + ball = AddGear(GetX(CurrentHedgehog), GetY(CurrentHedgehog), gtBall, 0, 0, 0, 0) if ball ~= nil then local dx, dy = GetGearVelocity(gear) SetGearVelocity(ball, dx * 2, dy * 2) diff -r 3331b30e4ef1 -r 88fde28bbda6 share/hedgewars/Data/Maps/TrophyRace/map.lua --- a/share/hedgewars/Data/Maps/TrophyRace/map.lua Sun Oct 21 01:28:33 2012 +0400 +++ b/share/hedgewars/Data/Maps/TrophyRace/map.lua Sat Nov 03 00:34:35 2012 +0400 @@ -70,19 +70,22 @@ SetAmmo(amRope, 9, 2, 0) end -function onGameTick() - if TurnTimeLeft == 1 and CurrentHedgehog ~= nil then +function onGameTick20() + if CurrentHedgehog ~= nil and TurnTimeLeft <= 20 and TurnTimeLeft > 0 then SetHealth(CurrentHedgehog, 0) x, y = GetGearPosition(CurrentHedgehog) - AddGear(x, y, gtAmmo_Grenade, 0, 0, 0, 0) + AddGear(x, y, gtShell, 0, 0, 0, 0) worsttime = 99999 worsthog = nil - elseif TurnTimeLeft == maxtime - 1 and CurrentHedgehog ~= nil then + elseif TurnTimeLeft > maxtime - 25 and CurrentHedgehog ~= nil then if lasthog ~= nil then SetGearPosition(lasthog, p , 0) end reached = false + SetGearVelocity(CurrentHedgehog, 1, 0) SetGearPosition(CurrentHedgehog, start_area[1] + start_area[3] / 2, start_area[2] + start_area[4] / 2) + ParseCommand("setweap " .. string.char(amRope)) + lasthog = CurrentHedgehog elseif CurrentHedgehog ~= nil then x, y = GetGearPosition(CurrentHedgehog) if not reached and x > goal_area[1] and x < goal_area[1] + goal_area[3] and y > goal_area[2] and y < goal_area[2] + goal_area[4] then -- hog is within goal rectangle @@ -148,15 +151,14 @@ hhs[numhhs] = gear times[numhhs] = 0 numhhs = numhhs + 1 - elseif GetGearType(gear) == gtRope then -- rope is shot - end +-- elseif GetGearType(gear) == gtRope then -- rope is shot end -function onGearDelete(gear) - if GetGearType(gear) == gtRope then -- rope deletion - hog didn't manage to rerope - --TurnTimeLeft = 0 -- end turn or not? hm... - lasthog = CurrentHedgehog - - end -end +--function onGearDelete(gear) +-- if GetGearType(gear) == gtRope then -- rope deletion - hog didn't manage to rerope +-- --TurnTimeLeft = 0 -- end turn or not? hm... +-- lasthog = CurrentHedgehog +-- +-- end +--end diff -r 3331b30e4ef1 -r 88fde28bbda6 share/hedgewars/Data/Maps/portal/CMakeLists.txt --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/share/hedgewars/Data/Maps/portal/CMakeLists.txt Sat Nov 03 00:34:35 2012 +0400 @@ -0,0 +1,6 @@ +install(FILES + map.png + mask.png + map.cfg + preview.png + DESTINATION ${SHAREPATH}Data/Maps/portal) diff -r 3331b30e4ef1 -r 88fde28bbda6 share/hedgewars/Data/Maps/portal/map.cfg --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/share/hedgewars/Data/Maps/portal/map.cfg Sat Nov 03 00:34:35 2012 +0400 @@ -0,0 +1,2 @@ +Eyes +48 \ No newline at end of file diff -r 3331b30e4ef1 -r 88fde28bbda6 share/hedgewars/Data/Maps/portal/map.png Binary file share/hedgewars/Data/Maps/portal/map.png has changed diff -r 3331b30e4ef1 -r 88fde28bbda6 share/hedgewars/Data/Maps/portal/mask.png Binary file share/hedgewars/Data/Maps/portal/mask.png has changed diff -r 3331b30e4ef1 -r 88fde28bbda6 share/hedgewars/Data/Maps/portal/preview.png Binary file share/hedgewars/Data/Maps/portal/preview.png has changed diff -r 3331b30e4ef1 -r 88fde28bbda6 share/hedgewars/Data/Missions/Campaign/A Classic Fairytale/backstab.lua --- a/share/hedgewars/Data/Missions/Campaign/A Classic Fairytale/backstab.lua Sun Oct 21 01:28:33 2012 +0400 +++ b/share/hedgewars/Data/Missions/Campaign/A Classic Fairytale/backstab.lua Sat Nov 03 00:34:35 2012 +0400 @@ -504,12 +504,12 @@ if nativesNum == 0 then return end - local hogDeadStrings = {loc("They killed " .. gear .."! You bastards!"), - loc(gear .. "! Why?!"), + local hogDeadStrings = {loc("They killed ") .. gear .. loc("! You bastards!"), + gear .. loc("! Why?!"), loc("That was just mean!"), - loc("Oh no, not " .. gear .. "!"), - loc("Why " .. gear .. "? Why?"), - loc("What has " .. gear .. " ever done to you?!")} + loc("Oh no, not ") .. gear .. "!", + loc("Why ") .. gear .. loc("? Why?"), + loc("What has ") .. gear .. loc(" ever done to you?!")} table.insert(hogDeadAnim, {func = AnimSay, args = {CurrentHedgehog, hogDeadStrings[7 - nativesNum], SAY_SHOUT, 4000}}) end diff -r 3331b30e4ef1 -r 88fde28bbda6 share/hedgewars/Data/Missions/Campaign/A Classic Fairytale/united.lua --- a/share/hedgewars/Data/Missions/Campaign/A Classic Fairytale/united.lua Sun Oct 21 01:28:33 2012 +0400 +++ b/share/hedgewars/Data/Missions/Campaign/A Classic Fairytale/united.lua Sat Nov 03 00:34:35 2012 +0400 @@ -212,10 +212,10 @@ if nativesNum == 0 then return end - local hogDeadStrings = {"They killed " .. gear .."! You bastards!", - gear .. "! Why?!", - "That was just mean!", - "Oh no, not " .. gear .. "!"} + local hogDeadStrings = {loc("They killed ") .. gear ..loc("! You bastards!"), + gear .. loc("! Why?!"), + loc("That was just mean!"), + loc("Oh no, not ") .. gear .. "!"} table.insert(hogDeadAnim, {func = AnimSay, args = {CurrentHedgehog, hogDeadStrings[nativesNum], SAY_SHOUT, 4000}}) end diff -r 3331b30e4ef1 -r 88fde28bbda6 share/hedgewars/Data/Missions/Training/Basic_Training_-_Bazooka.lua --- a/share/hedgewars/Data/Missions/Training/Basic_Training_-_Bazooka.lua Sun Oct 21 01:28:33 2012 +0400 +++ b/share/hedgewars/Data/Missions/Training/Basic_Training_-_Bazooka.lua Sat Nov 03 00:34:35 2012 +0400 @@ -46,7 +46,7 @@ -- move the target to a higher vertical position -- to ensure it's not somewhere down below x, y = GetGearPosition(gear) - SetGearPosition(gear, x, 500) + SetGearPosition(gear, x, 0) end -- This function is called before the game loads its @@ -84,7 +84,7 @@ AddTeam(loc("'Zooka Team"), 14483456, "Simple", "Island", "Default") -- And add a hog to it player = AddHog(loc("Hunter"), 0, 1, "NoHat") - SetGearPosition(player, 1960, 1160) + SetGearPosition(player, 936, 136) end -- This function is called when the round starts diff -r 3331b30e4ef1 -r 88fde28bbda6 share/hedgewars/Data/Missions/Training/Basic_Training_-_Cluster_Bomb.lua --- a/share/hedgewars/Data/Missions/Training/Basic_Training_-_Cluster_Bomb.lua Sun Oct 21 01:28:33 2012 +0400 +++ b/share/hedgewars/Data/Missions/Training/Basic_Training_-_Cluster_Bomb.lua Sat Nov 03 00:34:35 2012 +0400 @@ -1,123 +1,123 @@ -loadfile(GetDataPath() .. "Scripts/Locale.lua")() - -local player = nil -local scored = 0 -local end_timer = 5000 -local game_lost = false -local time_goal = 0 - -function spawnTarget() - - gear = AddGear(0, 0, gtTarget, 0, 0, 0, 0) - - if scored == 0 then x = 1652 end - if scored == 1 then x = 1915 end - if scored == 2 then x = 2333 end - if scored == 3 then x = 2152 end - if scored == 4 then x = 1434 end - if scored == 5 then x = 2588 end - if scored == 6 then x = 2372 end - if scored == 7 then x = 1193 end - if scored == 8 then x = 2744 end - if scored == 9 then x = 2465 end - if scored == 10 then x = 1623 end - if scored == 11 then x = 2662 end - - if scored == 6 then - SetGearPosition(gear, 2272, 1500) - else - SetGearPosition(gear, x, 1000) - end - -end - -function onGameInit() - - Seed = 1 - GameFlags = gfDisableWind + gfInfAttack + gfOneClanMode - TurnTime = 180 * 1000 - Map = "Trash" - Theme = "Golf" - Goals = "Take down all the targets|Achieve it using only Cluster Bomb" - CaseFreq = 0 - MinesNum = 0 - Explosives = 0 - - AddTeam("The Hogies", 2850005, "Statue", "Island", "Hog Islands") - - player = AddHog(loc("Private Novak"), 0, 1, "war_desertGrenadier1") - SetGearPosition(player, 1780, 1300) - -end - -function onAmmoStoreInit() - - SetAmmo(amClusterBomb, 9, 0, 0, 0) - -end - -function onGameStart() - - ShowMission(loc("Cluster Bomb Training"), loc("Aiming Practice"), loc("You have to destroy 12 targets in 180 seconds"), -amClusterBomb, 5000) - spawnTarget() - -end - -function onGameTick20() - - if TurnTimeLeft < 40 and TurnTimeLeft > 0 and scored < 12 and game_lost == false then - game_lost = true - ShowMission(loc("Cluster Bomb Training"), loc("Aiming Practice"), loc("Oh no! Time's up! Just try again."), -amSkip, 0) - SetHealth(player, 0) - time_goal = 1 - end - - if scored == 12 or game_lost then - if end_timer == 0 then - EndGame() - else - end_timer = end_timer - 20 - TurnTimeLeft = time_goal - end - end - -end - -function onNewTurn() - ParseCommand("setweap " .. string.char(amClusterBomb)) -end - ---function onGearAdd(gear) ---end - -function onGearDamage(gear, damage) - - if GetGearType(gear) == gtTarget then - scored = scored + 1 - if scored < 12 then - spawnTarget() - else - if not game_lost then - - if TurnTimeLeft > 90 * 10 then - ShowMission(loc("Cluster Bomb MASTER!"), loc("Aiming Practice"), loc("Congratulations! You needed only half of time|to eliminate all targets."), 4, 0) - else - ShowMission(loc("Cluster Bomb Training"), loc("Aiming Practice"), loc("Congratulations! You've eliminated all targets|within the allowed time frame."), 0, 0) - end - PlaySound(sndVictory) - time_goal = TurnTimeLeft - end - end - end - - if GetGearType(gear) == gtHedgehog then - game_lost = true - ShowMission(loc("Cluster Bomb Training"), loc("Aiming Practice"), loc("Oh no! You failed! Just try again."), -amSkip, 0) - SetHealth(player, 0) - time_goal = 1 - end - -end - -function onGearDelete(gear) -end +loadfile(GetDataPath() .. "Scripts/Locale.lua")() + +local player = nil +local scored = 0 +local end_timer = 5000 +local game_lost = false +local time_goal = 0 + +function spawnTarget() + + gear = AddGear(0, 0, gtTarget, 0, 0, 0, 0) + + if scored == 0 then x = 628 end + if scored == 1 then x = 891 end + if scored == 2 then x = 1309 end + if scored == 3 then x = 1128 end + if scored == 4 then x = 410 end + if scored == 5 then x = 1564 end + if scored == 6 then x = 1348 end + if scored == 7 then x = 169 end + if scored == 8 then x = 1720 end + if scored == 9 then x = 1441 end + if scored == 10 then x = 599 end + if scored == 11 then x = 1638 end + + if scored == 6 then + SetGearPosition(gear, 1248, 476) + else + SetGearPosition(gear, x, 0) + end + +end + +function onGameInit() + + Seed = 1 + GameFlags = gfDisableWind + gfInfAttack + gfOneClanMode + TurnTime = 180 * 1000 + Map = "Trash" + Theme = "Golf" + Goals = "Take down all the targets|Achieve it using only Cluster Bomb" + CaseFreq = 0 + MinesNum = 0 + Explosives = 0 + + AddTeam("The Hogies", 2850005, "Statue", "Island", "Hog Islands") + + player = AddHog(loc("Private Novak"), 0, 1, "war_desertGrenadier1") + SetGearPosition(player, 756, 370) + +end + +function onAmmoStoreInit() + + SetAmmo(amClusterBomb, 9, 0, 0, 0) + +end + +function onGameStart() + + ShowMission(loc("Cluster Bomb Training"), loc("Aiming Practice"), loc("You have to destroy 12 targets in 180 seconds"), -amClusterBomb, 5000) + spawnTarget() + +end + +function onGameTick20() + + if TurnTimeLeft < 40 and TurnTimeLeft > 0 and scored < 12 and game_lost == false then + game_lost = true + ShowMission(loc("Cluster Bomb Training"), loc("Aiming Practice"), loc("Oh no! Time's up! Just try again."), -amSkip, 0) + SetHealth(player, 0) + time_goal = 1 + end + + if scored == 12 or game_lost then + if end_timer == 0 then + EndGame() + else + end_timer = end_timer - 20 + TurnTimeLeft = time_goal + end + end + +end + +function onNewTurn() + ParseCommand("setweap " .. string.char(amClusterBomb)) +end + +--function onGearAdd(gear) +--end + +function onGearDamage(gear, damage) + + if GetGearType(gear) == gtTarget then + scored = scored + 1 + if scored < 12 then + spawnTarget() + else + if not game_lost then + + if TurnTimeLeft > 90 * 10 then + ShowMission(loc("Cluster Bomb MASTER!"), loc("Aiming Practice"), loc("Congratulations! You needed only half of time|to eliminate all targets."), 4, 0) + else + ShowMission(loc("Cluster Bomb Training"), loc("Aiming Practice"), loc("Congratulations! You've eliminated all targets|within the allowed time frame."), 0, 0) + end + PlaySound(sndVictory) + time_goal = TurnTimeLeft + end + end + end + + if GetGearType(gear) == gtHedgehog then + game_lost = true + ShowMission(loc("Cluster Bomb Training"), loc("Aiming Practice"), loc("Oh no! You failed! Just try again."), -amSkip, 0) + SetHealth(player, 0) + time_goal = 1 + end + +end + +function onGearDelete(gear) +end diff -r 3331b30e4ef1 -r 88fde28bbda6 share/hedgewars/Data/Missions/Training/Basic_Training_-_Grenade.lua --- a/share/hedgewars/Data/Missions/Training/Basic_Training_-_Grenade.lua Sun Oct 21 01:28:33 2012 +0400 +++ b/share/hedgewars/Data/Missions/Training/Basic_Training_-_Grenade.lua Sat Nov 03 00:34:35 2012 +0400 @@ -44,12 +44,12 @@ -- move it to a random position within 0 and -- LAND_WIDTH - the width of the map - FindPlace(gear, true, 0, LAND_WIDTH-1350) + FindPlace(gear, true, 0, LAND_WIDTH-326) -- move the target to a higher vertical position -- to ensure it's not somewhere down below x, y = GetGearPosition(gear) - SetGearPosition(gear, x, 500) + SetGearPosition(gear, x, 0) end -- This function is called before the game loads its @@ -87,7 +87,7 @@ AddTeam(loc("Grenadiers"), 14483456, "Simple", "Island", "Default") -- And add a hog to it player = AddHog(loc("Nade Boy"), 0, 1, "war_grenadier1") - SetGearPosition(player, 1530, 1100) + SetGearPosition(player, 506, 76) end -- This function is called when the round starts diff -r 3331b30e4ef1 -r 88fde28bbda6 share/hedgewars/Data/Missions/Training/Basic_Training_-_Rope.lua --- a/share/hedgewars/Data/Missions/Training/Basic_Training_-_Rope.lua Sun Oct 21 01:28:33 2012 +0400 +++ b/share/hedgewars/Data/Missions/Training/Basic_Training_-_Rope.lua Sat Nov 03 00:34:35 2012 +0400 @@ -31,7 +31,7 @@ TargetPos[ 4 ] = { X = 2870, Y = 400, Message = loc("I don't know how you did that.. But good work! |The next one should be easy as cake for you!") } TargetPos[ 5 ] = { X = 4000, Y = 1750, Message = "" } TargetPos[ 6 ] = { Modifier = true, Func = function() -- Last target is ALWAYS the "winning" target! - Info( "Congratulations", "Congratulations! You've completed the Rope tutorial! |- Tutorial ends in 10 seconds!", 0 ) -- Congrats + Info( loc("Congratulations"), loc("Congratulations! You've completed the Rope tutorial! |- Tutorial ends in 10 seconds!"), 0 ) -- Congrats HogSay( Player, loc("Victory!"), SAY_SHOUT) -- You win! PlaySound( sndVictory ) @@ -44,7 +44,7 @@ end } function Info( Title, Text, Icon ) -- I made a small wrapper to ease the process - ShowMission( loc("Rope Training"), loc(Title), loc( Text ), Icon, 0 ) + ShowMission( loc("Rope Training"), Title, Text, Icon, 0 ) end function NewFollowGear( Gear ) @@ -67,7 +67,7 @@ end if TargetNumber > 1 then - Info( "Aiming Practice", TargetPos[ TargetNumber - 1 ].Message, -amRope ) + Info(loc("Aiming Practice"), TargetPos[ TargetNumber - 1 ].Message, -amRope ) end SpawnTarget( TargetPos[ TargetNumber ].X, TargetPos[ TargetNumber ].Y ) -- Spawn target on the next position @@ -83,8 +83,8 @@ if (not BaseballIntro and not Objective) and (CurrentHedgehog ~= nil) then --Fail safe check if InRange( Hog, 1100, 1100, Distance ) then -- Check if the player is within predefined position of the first target BaseballIntro = true - Info( "Aiming Practice", "Great work! Now hit it with your Baseball Bat! |Tip: You can change weapon with 'Right Click'!", -amRope ) -- Guide them - Timer( 10000, "Remember: The rope only bend around objects, |if it doesn't hit anything it's always stright!" ) + Info(loc("Aiming Practice"), loc("Great work! Now hit it with your Baseball Bat! |Tip: You can change weapon with 'Right Click'!"), -amRope ) -- Guide them + Timer( 10000, loc("Remember: The rope only bend around objects, |if it doesn't hit anything it's always stright!")) end end end @@ -112,7 +112,7 @@ Player = AddHog( loc( "Hunter" ), 0, 1, "StrawHat" ) -- Add a hog for it, and name it "Hunter" SetGearPosition( Player, 420, 1750 ) -- Set player position - SetEffect( Player, heResurrectable, true ) -- By Suggestion :) + SetEffect( Player, heResurrectable, 1 ) -- By Suggestion :) end function onGameStart() -- Called when the game starts @@ -120,8 +120,8 @@ SetHealth( Player, 100 ) -- Give the player 100 Health points - Info( "Aiming Practice", "Get to the target using your rope! |Controls: Left & Right to swing the rope - Up & Down to Contract and Expand!", -amRope ) -- Short intro to tell the player what to do - Timer( 10000, "Tip: The rope physics are different than in the real world, |use it to your advantage!" ) -- After 15 sec, give them more help + Info(loc("Aiming Practice"), loc("Get to the target using your rope! |Controls: Left & Right to swing the rope - Up & Down to Contract and Expand!"), -amRope ) -- Short intro to tell the player what to do + Timer( 10000, loc("Tip: The rope physics are different than in the real world, |use it to your advantage!") ) -- After 15 sec, give them more help end function onNewTurn() @@ -131,10 +131,10 @@ function onGameTick20() if TurnTimeLeft < 40 and TurnTimeLeft > 0 then -- Round starts at 0, so we check if the round is finished by using 1 GameLost = true -- You lost the game - Info( "Aiming Practice", "You did not make it in time, try again!", -amSkip ) + Info(loc("Aiming Practice"), loc("You did not make it in time, try again!"), -amSkip ) SetHealth( Player, 0 ) -- Kill the player so he can't keep moving! - SetEffect( Player, heResurrectable, false ) + SetEffect( Player, heResurrectable, 0 ) end @@ -146,7 +146,7 @@ ParseCommand("teamgone " .. loc( "Rope Team" )) --SetHealth( Player, 0 ) -- Kill the player so he can't keep moving! - --SetEffect( Player, heResurrectable, false ) + --SetEffect( Player, heResurrectable, 0 ) TurnTimeLeft = 1 WaitTime = -1 @@ -167,7 +167,7 @@ for k, v in pairs( Timers ) do if v.End <= GetTime then - Info( "Aiming Practice", v.Message, -amRope ) + Info(loc("Aiming Practice"), v.Message, -amRope ) Timers[ k ] = nil end end @@ -185,10 +185,10 @@ function onGearResurrect( Gear ) if TargetNumber > 1 then SetGearPosition( Player, TargetPos[ TargetNumber - 1 ].X, TargetPos[ TargetNumber - 1 ].Y ) -- If the player dies spawn him where he last killed a target - Info( "Aiming Practice", "You have been respawned, at your last checkpoint!", -amRope ) + Info(loc("Aiming Practice"), loc("You have been respawned, at your last checkpoint!"), -amRope ) else SetGearPosition( Player, 420, 1750 ) -- If the player dies and didn't kill a target just spawn him at the default spawn - Info( "Aiming Practice", "You have been respawned, be more carefull next time!", -amRope ) + Info(loc("Aiming Practice"), loc("You have been respawned, be more carefull next time!"), -amRope ) end end diff -r 3331b30e4ef1 -r 88fde28bbda6 share/hedgewars/Data/Missions/Training/Basic_Training_-_Shotgun.lua --- a/share/hedgewars/Data/Missions/Training/Basic_Training_-_Shotgun.lua Sun Oct 21 01:28:33 2012 +0400 +++ b/share/hedgewars/Data/Missions/Training/Basic_Training_-_Shotgun.lua Sat Nov 03 00:34:35 2012 +0400 @@ -46,7 +46,7 @@ -- move the target to a higher vertical position -- to ensure it's not somewhere down below x, y = GetGearPosition(gear) - SetGearPosition(gear, x, 500) + SetGearPosition(gear, x, 0) end function onNewTurn() @@ -88,7 +88,7 @@ AddTeam(loc("Shotgun Team"), 14483456, "Simple", "Island", "Default") -- And add a hog to it player = AddHog(loc("Hunter"), 0, 1, "NoHat") - SetGearPosition(player, 2334, 1254) + SetGearPosition(player, 1210, 230) end -- This function is called when the round starts diff -r 3331b30e4ef1 -r 88fde28bbda6 share/hedgewars/Data/Missions/Training/User_Mission_-_Bamboo_Thicket.lua --- a/share/hedgewars/Data/Missions/Training/User_Mission_-_Bamboo_Thicket.lua Sun Oct 21 01:28:33 2012 +0400 +++ b/share/hedgewars/Data/Missions/Training/User_Mission_-_Bamboo_Thicket.lua Sat Nov 03 00:34:35 2012 +0400 @@ -26,8 +26,8 @@ AddTeam(loc("Cybernetic Empire"), 1175851, "Simple", "Island", "Default") enemy = AddHog(loc("Unit 835"), 1, 10, "cyborg1") - SetGearPosition(player,1166,1680) - SetGearPosition(enemy,2848,1443) + SetGearPosition(player,142,656) + SetGearPosition(enemy,1824,419) end @@ -37,10 +37,10 @@ ShowMission(loc("Bamboo Thicket"), loc("User Challenge"), loc("Eliminate the enemy before the time runs out"), -amBazooka, 0) --WEAPON CRATE LIST. WCRATES: 1 - SpawnAmmoCrate(1915,1876,amBazooka) + SpawnAmmoCrate(891,852,amBazooka) --UTILITY CRATE LIST. UCRATES: 2 - SpawnUtilityCrate(1986,1141,amBlowTorch) - SpawnUtilityCrate(1427,1527,amParachute) + SpawnUtilityCrate(962,117,amBlowTorch) + SpawnUtilityCrate(403,503,amParachute) AddAmmo(enemy, amGrenade, 100) diff -r 3331b30e4ef1 -r 88fde28bbda6 share/hedgewars/Data/Missions/Training/User_Mission_-_Dangerous_Ducklings.lua --- a/share/hedgewars/Data/Missions/Training/User_Mission_-_Dangerous_Ducklings.lua Sun Oct 21 01:28:33 2012 +0400 +++ b/share/hedgewars/Data/Missions/Training/User_Mission_-_Dangerous_Ducklings.lua Sat Nov 03 00:34:35 2012 +0400 @@ -40,9 +40,9 @@ AddTeam("Blue Team", 29439, "Simple", "Island", "Default") enemy = AddHog("Filthy Blue", 1, 100, "Skull") - SetGearPosition(player, 1170, 1926) - SetGearPosition(instructor, 1341, 1926) - SetGearPosition(enemy, 2942, 1861) + SetGearPosition(player,146,902) + SetGearPosition(instructor,317,902) + SetGearPosition(enemy,1918,837) HogSay(player, ".............................", SAY_THINK) @@ -54,8 +54,8 @@ function onGameStart() - SpawnAmmoCrate(1499,1500,amRope) - SpawnAmmoCrate(2753,1500,amFirePunch) + SpawnAmmoCrate(475,476,amRope) + SpawnAmmoCrate(1729,476,amFirePunch) FollowGear(player) diff -r 3331b30e4ef1 -r 88fde28bbda6 share/hedgewars/Data/Missions/Training/User_Mission_-_Diver.lua --- a/share/hedgewars/Data/Missions/Training/User_Mission_-_Diver.lua Sun Oct 21 01:28:33 2012 +0400 +++ b/share/hedgewars/Data/Missions/Training/User_Mission_-_Diver.lua Sat Nov 03 00:34:35 2012 +0400 @@ -28,8 +28,8 @@ AddTeam(loc("Toxic Team"), 1175851, "Simple", "Island", "Default") enemy = AddHog(loc("Poison"), 1, 100, "Skull") - SetGearPosition(player, 1454, 1540) - SetGearPosition(enemy, 2488, 1960) + SetGearPosition(player,430,516) + SetGearPosition(enemy,1464,936) end @@ -37,12 +37,12 @@ function onGameStart() - SpawnAmmoCrate(1450,1910,amJetpack) - SpawnAmmoCrate(2568,1714,amFirePunch) - SpawnAmmoCrate(1974,1875,amBlowTorch) - SpawnAmmoCrate(2056,1877,amParachute) + SpawnAmmoCrate(426,886,amJetpack) + SpawnAmmoCrate(1544,690,amFirePunch) + SpawnAmmoCrate(950,851,amBlowTorch) + SpawnAmmoCrate(1032,853,amParachute) - AddGear(1603, 1320, gtMine, 0, 0, 0, 0) + AddGear(579, 296, gtMine, 0, 0, 0, 0) ShowMission(loc("Operation Diver"), "", loc("Eliminate Poison before the time runs out") .. loc("|- Mines Time:") .. " " .. 1 .. " " .. loc("sec"), -amFirePunch, 0); --SetTag(AddGear(0, 0, gtATSmoothWindCh, 0, 0, 0, 1), -70) diff -r 3331b30e4ef1 -r 88fde28bbda6 share/hedgewars/Data/Missions/Training/User_Mission_-_Newton_and_the_Hammock.lua --- a/share/hedgewars/Data/Missions/Training/User_Mission_-_Newton_and_the_Hammock.lua Sun Oct 21 01:28:33 2012 +0400 +++ b/share/hedgewars/Data/Missions/Training/User_Mission_-_Newton_and_the_Hammock.lua Sat Nov 03 00:34:35 2012 +0400 @@ -27,8 +27,8 @@ AddTeam(loc("Cybernetic Empire"), 1175851, "Simple", "Island", "Default") enemy = AddHog(loc("Unit") .. " 811", 1, 100, "cyborg1") - SetGearPosition(player, 1454, 1540) - SetGearPosition(enemy, 2488, 1960) + SetGearPosition(player,430,1540) + SetGearPosition(enemy,1464,1960) end @@ -39,57 +39,57 @@ AddAmmo(enemy, amFirePunch, 100) --GIRDER LIST. - PlaceGirder(2097,2009,0) - PlaceGirder(1548,1487,3) - PlaceGirder(1662,1453,4) - PlaceGirder(1785,1453,0) - PlaceGirder(1864,1421,3) - PlaceGirder(1326,1388,6) - PlaceGirder(1351,1506,1) - PlaceGirder(2693,1832,3) + PlaceGirder(1073,2009,0) + PlaceGirder(524,1487,3) + PlaceGirder(638,1453,4) + PlaceGirder(761,1453,0) + PlaceGirder(840,1421,3) + PlaceGirder(302,1388,6) + PlaceGirder(327,1506,1) + PlaceGirder(1669,1832,3) --MINE LIST. - AddGear(2080,1987,gtMine, 0, 0, 0, 0) - AddGear(2110,1988,gtMine, 0, 0, 0, 0) + AddGear(1056,1987,gtMine, 0, 0, 0, 0) + AddGear(1086,1988,gtMine, 0, 0, 0, 0) --STICKY MINE LIST. - AddGear(2113,965,gtSMine, 0, 0, 0, 0) - AddGear(2157,945,gtSMine, 0, 0, 0, 0) - AddGear(2034,1081,gtSMine, 0, 0, 0, 0) - AddGear(2060,1049,gtSMine, 0, 0, 0, 0) - AddGear(2081,1004,gtSMine, 0, 0, 0, 0) - AddGear(1808,1252,gtSMine, 0, 0, 0, 0) - AddGear(1865,1257,gtSMine, 0, 0, 0, 0) - AddGear(1926,1263,gtSMine, 0, 0, 0, 0) - AddGear(1976,1281,gtSMine, 0, 0, 0, 0) - AddGear(1541,1546,gtSMine, 0, 0, 0, 0) - AddGear(1583,1597,gtSMine, 0, 0, 0, 0) - AddGear(1637,1650,gtSMine, 0, 0, 0, 0) - AddGear(1698,1705,gtSMine, 0, 0, 0, 0) - AddGear(1770,1692,gtSMine, 0, 0, 0, 0) - AddGear(1834,1692,gtSMine, 0, 0, 0, 0) - AddGear(1896,1673,gtSMine, 0, 0, 0, 0) - AddGear(1957,1666,gtSMine, 0, 0, 0, 0) - AddGear(2005,1662,gtSMine, 0, 0, 0, 0) - AddGear(2040,1634,gtSMine, 0, 0, 0, 0) - AddGear(2087,1595,gtSMine, 0, 0, 0, 0) - AddGear(2124,1574,gtSMine, 0, 0, 0, 0) - AddGear(2026,1461,gtSMine, 0, 0, 0, 0) - AddGear(2076,1438,gtSMine, 0, 0, 0, 0) - AddGear(2126,1464,gtSMine, 0, 0, 0, 0) + AddGear(1089,965,gtSMine, 0, 0, 0, 0) + AddGear(1133,945,gtSMine, 0, 0, 0, 0) + AddGear(1010,1081,gtSMine, 0, 0, 0, 0) + AddGear(1036,1049,gtSMine, 0, 0, 0, 0) + AddGear(1057,1004,gtSMine, 0, 0, 0, 0) + AddGear(784,1252,gtSMine, 0, 0, 0, 0) + AddGear(841,1257,gtSMine, 0, 0, 0, 0) + AddGear(902,1263,gtSMine, 0, 0, 0, 0) + AddGear(952,1281,gtSMine, 0, 0, 0, 0) + AddGear(517,1546,gtSMine, 0, 0, 0, 0) + AddGear(559,1597,gtSMine, 0, 0, 0, 0) + AddGear(613,1650,gtSMine, 0, 0, 0, 0) + AddGear(674,1705,gtSMine, 0, 0, 0, 0) + AddGear(746,1692,gtSMine, 0, 0, 0, 0) + AddGear(810,1692,gtSMine, 0, 0, 0, 0) + AddGear(872,1673,gtSMine, 0, 0, 0, 0) + AddGear(933,1666,gtSMine, 0, 0, 0, 0) + AddGear(981,1662,gtSMine, 0, 0, 0, 0) + AddGear(1016,1634,gtSMine, 0, 0, 0, 0) + AddGear(1063,1595,gtSMine, 0, 0, 0, 0) + AddGear(1100,1574,gtSMine, 0, 0, 0, 0) + AddGear(1002,1461,gtSMine, 0, 0, 0, 0) + AddGear(1052,1438,gtSMine, 0, 0, 0, 0) + AddGear(1102,1464,gtSMine, 0, 0, 0, 0) --WEAPON CRATE LIST. - SpawnAmmoCrate(2589,642,amSineGun) - SpawnAmmoCrate(1572,858,amBazooka) + SpawnAmmoCrate(1565,642,amSineGun) + SpawnAmmoCrate(548,858,amBazooka) --UTILITY CRATE LIST. - SpawnUtilityCrate(1503,847,amJetpack) - SpawnUtilityCrate(2574,1715,amBlowTorch) - SpawnUtilityCrate(2251,1941,amJetpack) - SpawnUtilityCrate(2094,1964,amInvulnerable) - SpawnUtilityCrate(2094,1875,amTeleport) + SpawnUtilityCrate(479,847,amJetpack) + SpawnUtilityCrate(1550,1715,amBlowTorch) + SpawnUtilityCrate(1227,1941,amJetpack) + SpawnUtilityCrate(1070,1964,amInvulnerable) + SpawnUtilityCrate(1070,1875,amTeleport) --HOG POSITION LIST. if hhs[0] ~= nil then - SetGearPosition(hhs[0],1421,865) + SetGearPosition(hhs[0],397,865) end if hhs[1] ~= nil then - SetGearPosition(hhs[1],1585,1365) + SetGearPosition(hhs[1],561,1365) end ShowMission(loc("Newton's Hammock"), loc("User Challenge"), loc("Eliminate the enemy before the time runs out"), -amParachute, 0) diff -r 3331b30e4ef1 -r 88fde28bbda6 share/hedgewars/Data/Missions/Training/User_Mission_-_RCPlane_Challenge.lua --- a/share/hedgewars/Data/Missions/Training/User_Mission_-_RCPlane_Challenge.lua Sun Oct 21 01:28:33 2012 +0400 +++ b/share/hedgewars/Data/Missions/Training/User_Mission_-_RCPlane_Challenge.lua Sat Nov 03 00:34:35 2012 +0400 @@ -1,338 +1,338 @@ -loadfile(GetDataPath() .. "Scripts/Locale.lua")() - -local player = nil -local RCGear = nil -local planesUsed = 0 -local cratesLeft = 0 - -function onGameInit() - - Seed = 1 - GameFlags = gfInfAttack + gfInvulnerable + gfOneClanMode + gfSolidLand - - TurnTime = 90 * 1000 - - Map = "Ropes" - Theme = "Eyes" - - CaseFreq = 0 - MinesNum = 0 - Explosives = 0 - - AddTeam(loc("Wannabe Flyboys"), 14483456, "Simple", "Island", "Default", "Hedgewars") - player = AddHog(loc("Ace"), 0, 80, "Gasmask") --NoHat - SetGearPosition(player, 1380, 1500) - -end - - - -function onGameStart() - - ShowMission ( - loc("RC PLANE TRAINING"), - loc("a Hedgewars challenge"), - - loc("Collect or destroy all the health crates.") .. "|" .. - loc("Compete to use as few planes as possible!") .. "|" .. - "", -amRCPlane, 4000 - ) - - PlaceGirder(2192, 508, 6) - PlaceGirder(2192, 670, 6) - PlaceGirder(2193, 792, 2) - PlaceGirder(2100, 825, 4) - PlaceGirder(2009, 899, 6) - PlaceGirder(2084, 992, 4) - PlaceGirder(2145, 1087, 6) - PlaceGirder(2199, 1235, 5) - PlaceGirder(2308, 1296, 0) - PlaceGirder(2424, 1234, 7) - PlaceGirder(2473, 1129, 2) - PlaceGirder(2437, 1046, 1) - PlaceGirder(2409, 927, 6) - PlaceGirder(2408, 763, 6) - PlaceGirder(2404, 540, 6) - PlaceGirder(2426, 423, 3) - PlaceGirder(2550, 400, 4) - PlaceGirder(2668, 425, 1) - PlaceGirder(2707, 541, 6) - PlaceGirder(2706, 703, 6) - PlaceGirder(2705, 867, 6) - PlaceGirder(2779, 962, 4) - PlaceGirder(2894, 924, 3) - PlaceGirder(2908, 802, 6) - PlaceGirder(2907, 639, 6) - PlaceGirder(3052, 566, 4) - PlaceGirder(2971, 394, 4) - PlaceGirder(3103, 448, 7) - PlaceGirder(3047, 654, 0) - PlaceGirder(3043, 746, 6) - PlaceGirder(3265, 1583, 6) - PlaceGirder(3256, 1491, 4) - PlaceGirder(3187, 1401, 6) - PlaceGirder(3326, 1400, 6) - PlaceGirder(774, 530, 5) - PlaceGirder(922, 595, 4) - PlaceGirder(1079, 533, 7) - PlaceGirder(1139, 386, 6) - PlaceGirder(1074, 237, 5) - PlaceGirder(723, 381, 6) - PlaceGirder(781, 229, 7) - PlaceGirder(927, 746, 6) - PlaceGirder(874, 736, 0) - PlaceGirder(982, 737, 0) - PlaceGirder(2430, 1730, 4) - - PlaceGirder(1613, 1104, 7) - PlaceGirder(1564, 1256, 6) - PlaceGirder(1643, 1341, 5) - PlaceGirder(1780, 1372, 4) - PlaceGirder(1869, 1296, 7) - PlaceGirder(1858, 1163, 5) - PlaceGirder(1739, 1044, 5) - PlaceGirder(1621, 926, 5) - PlaceGirder(1597, 985, 5) - PlaceGirder(1449, 939, 4) - PlaceGirder(1473, 874, 4) - PlaceGirder(2092, 1352, 7) - PlaceGirder(2145, 1444, 7) - PlaceGirder(2004, 1443, 3) - PlaceGirder(1978, 1523, 2) - PlaceGirder(2021, 1596, 1) - PlaceGirder(2103, 1625, 0) - PlaceGirder(2208, 1551, 7) - PlaceGirder(2327, 1431, 7) - PlaceGirder(2395, 1478, 6) - PlaceGirder(2396, 1600, 2) - PlaceGirder(2495, 1285, 6) - PlaceGirder(2494, 1408, 2) - PlaceGirder(2547, 530, 0) - - PlaceGirder(2451, 1551, 0) - PlaceGirder(2551, 706, 6) - PlaceGirder(2551, 869, 6) - PlaceGirder(2623, 1016, 5) - PlaceGirder(2773, 1083, 4) - PlaceGirder(2924, 1019, 7) - PlaceGirder(2568, 1491, 7) - PlaceGirder(2618, 1346, 6) - PlaceGirder(2674, 1195, 7) - PlaceGirder(2822, 1142, 4) - PlaceGirder(2963, 1069, 7) - PlaceGirder(3067, 938, 5) - PlaceGirder(2803, 1373, 2) - PlaceGirder(2811, 1559, 2) - - tempG = SpawnHealthCrate(930, 557) - SetHealth(tempG, 25) - tempG = SpawnHealthCrate(979, 692) - SetHealth(tempG, 25) - tempG = SpawnHealthCrate(876, 703) - SetHealth(tempG, 25) - tempG = SpawnHealthCrate(2309, 1260) - SetHealth(tempG, 25) - tempG = SpawnHealthCrate(1733, 1127) - SetHealth(tempG, 25) - tempG = SpawnHealthCrate(1738, 1320) - SetHealth(tempG, 25) - tempG = SpawnHealthCrate(3249, 1460) - SetHealth(tempG, 25) - tempG = SpawnHealthCrate(3051, 617) - SetHealth(tempG, 25) - tempG = SpawnHealthCrate(2972, 353) - SetHealth(tempG, 25) - tempG = SpawnHealthCrate(2548, 358) - - SetHealth(tempG, 25) - tempG = SpawnHealthCrate(2090, 1580) - SetHealth(tempG, 25) - tempG = SpawnHealthCrate(1752, 1753) - SetHealth(tempG, 25) - tempG = SpawnHealthCrate(1865, 1758) - SetHealth(tempG, 25) - tempG = SpawnHealthCrate(1985, 1760) - SetHealth(tempG, 25) - tempG = SpawnHealthCrate(2429, 1760) - SetHealth(tempG, 25) - tempG = SpawnHealthCrate(2810, 1480) - SetHealth(tempG, 25) - tempG = SpawnHealthCrate(2800, 1277) - SetHealth(tempG, 25) - tempG = SpawnHealthCrate(2806, 1107) - SetHealth(tempG, 25) - - PlaceGirder(1897, 903, 6) - PlaceGirder(1916, 784, 3) - PlaceGirder(2010, 732, 4) - PlaceGirder(2082, 639, 6) - PlaceGirder(2081, 516, 2) - PlaceGirder(1985, 487, 4) - PlaceGirder(1862, 407, 5) - PlaceGirder(1855, 224, 7) - PlaceGirder(2006, 163, 4) - PlaceGirder(2128, 187, 1) - PlaceGirder(2251, 213, 4) - PlaceGirder(2413, 213, 4) - PlaceGirder(1952, 618, 0) - PlaceGirder(957, 1068, 4) - PlaceGirder(794, 1069, 4) - PlaceGirder(728, 1163, 6) - PlaceGirder(728, 1287, 2) - PlaceGirder(802, 1342, 4) - PlaceGirder(966, 1342, 4) - PlaceGirder(674, 1032, 1) - PlaceGirder(554, 1011, 4) - PlaceGirder(445, 1056, 3) - PlaceGirder(422, 1174, 6) - PlaceGirder(369, 1341, 5) - PlaceGirder(495, 1313, 5) - PlaceGirder(568, 1379, 3) - PlaceGirder(577, 1202, 2) - PlaceGirder(744, 1490, 5) - PlaceGirder(760, 1617, 7) - PlaceGirder(622, 1693, 4) - PlaceGirder(476, 1623, 5) - PlaceGirder(376, 1697, 1) - PlaceGirder(955, 1746, 2) - PlaceGirder(1025, 1746, 2) - PlaceGirder(1090, 1745, 2) - PlaceGirder(1156, 1746, 2) - PlaceGirder(3806, 1530, 2) - PlaceGirder(3880, 1464, 2) - PlaceGirder(3738, 1458, 2) - PlaceGirder(3806, 1390, 2) - PlaceGirder(3805, 1588, 0) - PlaceGirder(3676, 1609, 3) - PlaceGirder(3930, 1615, 1) - PlaceGirder(3719, 1295, 0) - PlaceGirder(3888, 1294, 0) - PlaceGirder(3661, 1385, 2) - PlaceGirder(3955, 1377, 2) - PlaceGirder(3982, 1518, 0) - PlaceGirder(3378, 440, 2) - PlaceGirder(3447, 492, 4) - PlaceGirder(3564, 529, 1) - PlaceGirder(3596, 647, 6) - PlaceGirder(3521, 740, 4) - PlaceGirder(3524, 838, 4) - PlaceGirder(3644, 819, 3) - PlaceGirder(3691, 708, 6) - PlaceGirder(3690, 545, 6) - PlaceGirder(3612, 433, 5) - PlaceGirder(3463, 383, 4) - PlaceGirder(2815, 122, 7) - PlaceGirder(2960, 72, 4) - PlaceGirder(3032, 123, 2) - PlaceGirder(3063, 174, 0) - PlaceGirder(3095, 124, 2) - PlaceGirder(3169, 71, 4) - PlaceGirder(3320, 124, 5) - PlaceGirder(3210, 179, 2) - PlaceGirder(2932, 181, 2) - - tempG = SpawnHealthCrate(3804, 1461) - SetHealth(tempG, 25) - tempG = SpawnHealthCrate(3269, 1742) - SetHealth(tempG, 25) - tempG = SpawnHealthCrate(3066, 121) - SetHealth(tempG, 25) - tempG = SpawnHealthCrate(3207, 104) - SetHealth(tempG, 25) - tempG = SpawnHealthCrate(2928, 103) - SetHealth(tempG, 25) - tempG = SpawnHealthCrate(1997, 202) - SetHealth(tempG, 25) - tempG = SpawnHealthCrate(2253, 159) - SetHealth(tempG, 25) - tempG = SpawnHealthCrate(2132, 774) - SetHealth(tempG, 25) - tempG = SpawnHealthCrate(2549, 490) - SetHealth(tempG, 25) - tempG = SpawnHealthCrate(3527, 694) - SetHealth(tempG, 25) - tempG = SpawnHealthCrate(3777, 78) - SetHealth(tempG, 25) - tempG = SpawnHealthCrate(1124, 1746) - SetHealth(tempG, 25) - tempG = SpawnHealthCrate(1056, 1740) - SetHealth(tempG, 25) - tempG = SpawnHealthCrate(993, 1742) - SetHealth(tempG, 25) - tempG = SpawnHealthCrate(799, 1298) - SetHealth(tempG, 25) - tempG = SpawnHealthCrate(577, 1126) - SetHealth(tempG, 25) - tempG = SpawnHealthCrate(596, 1463) - SetHealth(tempG, 25) - tempG = SpawnHealthCrate(3854, 1043) - SetHealth(tempG, 25) - tempG = SpawnHealthCrate(1944, 567) - SetHealth(tempG, 25) - tempG = SpawnHealthCrate(338, 1748) - SetHealth(tempG, 25) - - -end - -function onGameTick() - - --if RCGear ~= nil then - -- AddCaption(GetTimer(RCGear)) - --end - -end - -function onNewTurn() - TurnTimeLeft = -1 -end - -function onGearAdd(gear) - - if GetGearType(gear) == gtRCPlane then - RCGear = gear - planesUsed = planesUsed + 1 - end - - if GetGearType(gear) == gtCase then - cratesLeft = cratesLeft + 1 - end - -end - -function onGearDelete(gear) - - if GetGearType(gear) == gtRCPlane then - - RCGear = nil - AddCaption(loc("Planes Used:") .. " " .. planesUsed) - - elseif GetGearType(gear) == gtCase then - - AddCaption(loc("Crates Left:") .. " " .. cratesLeft) - cratesLeft = cratesLeft - 1 - - if cratesLeft == 0 then - - ShowMission ( - loc("CHALLENGE COMPLETE"), - loc("Congratulations!"), - loc("Planes Used") .. ": " .. planesUsed .. "|" .. - "", 0, 0 - ) - - - ParseCommand("teamgone Wannabe Flyboys") - end - - if RCGear ~= nil then - SetTimer(RCGear, GetTimer(RCGear) + 10000) - end - - end - -end - -function onAmmoStoreInit() - SetAmmo(amRCPlane, 9, 0, 0, 0) -end +loadfile(GetDataPath() .. "Scripts/Locale.lua")() + +local player = nil +local RCGear = nil +local planesUsed = 0 +local cratesLeft = 0 + +function onGameInit() + + Seed = 1 + GameFlags = gfInfAttack + gfInvulnerable + gfOneClanMode + gfSolidLand + + TurnTime = 90 * 1000 + + Map = "Ropes" + Theme = "Eyes" + + CaseFreq = 0 + MinesNum = 0 + Explosives = 0 + + AddTeam(loc("Wannabe Flyboys"), 14483456, "Simple", "Island", "Default", "Hedgewars") + player = AddHog(loc("Ace"), 0, 80, "Gasmask") --NoHat + SetGearPosition(player, 1380, 1500) + +end + + + +function onGameStart() + + ShowMission ( + loc("RC PLANE TRAINING"), + loc("a Hedgewars challenge"), + + loc("Collect or destroy all the health crates.") .. "|" .. + loc("Compete to use as few planes as possible!") .. "|" .. + "", -amRCPlane, 4000 + ) + + PlaceGirder(2192, 508, 6) + PlaceGirder(2192, 670, 6) + PlaceGirder(2193, 792, 2) + PlaceGirder(2100, 825, 4) + PlaceGirder(2009, 899, 6) + PlaceGirder(2084, 992, 4) + PlaceGirder(2145, 1087, 6) + PlaceGirder(2199, 1235, 5) + PlaceGirder(2308, 1296, 0) + PlaceGirder(2424, 1234, 7) + PlaceGirder(2473, 1129, 2) + PlaceGirder(2437, 1046, 1) + PlaceGirder(2409, 927, 6) + PlaceGirder(2408, 763, 6) + PlaceGirder(2404, 540, 6) + PlaceGirder(2426, 423, 3) + PlaceGirder(2550, 400, 4) + PlaceGirder(2668, 425, 1) + PlaceGirder(2707, 541, 6) + PlaceGirder(2706, 703, 6) + PlaceGirder(2705, 867, 6) + PlaceGirder(2779, 962, 4) + PlaceGirder(2894, 924, 3) + PlaceGirder(2908, 802, 6) + PlaceGirder(2907, 639, 6) + PlaceGirder(3052, 566, 4) + PlaceGirder(2971, 394, 4) + PlaceGirder(3103, 448, 7) + PlaceGirder(3047, 654, 0) + PlaceGirder(3043, 746, 6) + PlaceGirder(3265, 1583, 6) + PlaceGirder(3256, 1491, 4) + PlaceGirder(3187, 1401, 6) + PlaceGirder(3326, 1400, 6) + PlaceGirder(774, 530, 5) + PlaceGirder(922, 595, 4) + PlaceGirder(1079, 533, 7) + PlaceGirder(1139, 386, 6) + PlaceGirder(1074, 237, 5) + PlaceGirder(723, 381, 6) + PlaceGirder(781, 229, 7) + PlaceGirder(927, 746, 6) + PlaceGirder(874, 736, 0) + PlaceGirder(982, 737, 0) + PlaceGirder(2430, 1730, 4) + + PlaceGirder(1613, 1104, 7) + PlaceGirder(1564, 1256, 6) + PlaceGirder(1643, 1341, 5) + PlaceGirder(1780, 1372, 4) + PlaceGirder(1869, 1296, 7) + PlaceGirder(1858, 1163, 5) + PlaceGirder(1739, 1044, 5) + PlaceGirder(1621, 926, 5) + PlaceGirder(1597, 985, 5) + PlaceGirder(1449, 939, 4) + PlaceGirder(1473, 874, 4) + PlaceGirder(2092, 1352, 7) + PlaceGirder(2145, 1444, 7) + PlaceGirder(2004, 1443, 3) + PlaceGirder(1978, 1523, 2) + PlaceGirder(2021, 1596, 1) + PlaceGirder(2103, 1625, 0) + PlaceGirder(2208, 1551, 7) + PlaceGirder(2327, 1431, 7) + PlaceGirder(2395, 1478, 6) + PlaceGirder(2396, 1600, 2) + PlaceGirder(2495, 1285, 6) + PlaceGirder(2494, 1408, 2) + PlaceGirder(2547, 530, 0) + + PlaceGirder(2451, 1551, 0) + PlaceGirder(2551, 706, 6) + PlaceGirder(2551, 869, 6) + PlaceGirder(2623, 1016, 5) + PlaceGirder(2773, 1083, 4) + PlaceGirder(2924, 1019, 7) + PlaceGirder(2568, 1491, 7) + PlaceGirder(2618, 1346, 6) + PlaceGirder(2674, 1195, 7) + PlaceGirder(2822, 1142, 4) + PlaceGirder(2963, 1069, 7) + PlaceGirder(3067, 938, 5) + PlaceGirder(2803, 1373, 2) + PlaceGirder(2811, 1559, 2) + + tempG = SpawnHealthCrate(930, 557) + SetHealth(tempG, 25) + tempG = SpawnHealthCrate(979, 692) + SetHealth(tempG, 25) + tempG = SpawnHealthCrate(876, 703) + SetHealth(tempG, 25) + tempG = SpawnHealthCrate(2309, 1260) + SetHealth(tempG, 25) + tempG = SpawnHealthCrate(1733, 1127) + SetHealth(tempG, 25) + tempG = SpawnHealthCrate(1738, 1320) + SetHealth(tempG, 25) + tempG = SpawnHealthCrate(3249, 1460) + SetHealth(tempG, 25) + tempG = SpawnHealthCrate(3051, 617) + SetHealth(tempG, 25) + tempG = SpawnHealthCrate(2972, 353) + SetHealth(tempG, 25) + tempG = SpawnHealthCrate(2548, 358) + + SetHealth(tempG, 25) + tempG = SpawnHealthCrate(2090, 1580) + SetHealth(tempG, 25) + tempG = SpawnHealthCrate(1752, 1753) + SetHealth(tempG, 25) + tempG = SpawnHealthCrate(1865, 1758) + SetHealth(tempG, 25) + tempG = SpawnHealthCrate(1985, 1760) + SetHealth(tempG, 25) + tempG = SpawnHealthCrate(2429, 1760) + SetHealth(tempG, 25) + tempG = SpawnHealthCrate(2810, 1480) + SetHealth(tempG, 25) + tempG = SpawnHealthCrate(2800, 1277) + SetHealth(tempG, 25) + tempG = SpawnHealthCrate(2806, 1107) + SetHealth(tempG, 25) + + PlaceGirder(1897, 903, 6) + PlaceGirder(1916, 784, 3) + PlaceGirder(2010, 732, 4) + PlaceGirder(2082, 639, 6) + PlaceGirder(2081, 516, 2) + PlaceGirder(1985, 487, 4) + PlaceGirder(1862, 407, 5) + PlaceGirder(1855, 224, 7) + PlaceGirder(2006, 163, 4) + PlaceGirder(2128, 187, 1) + PlaceGirder(2251, 213, 4) + PlaceGirder(2413, 213, 4) + PlaceGirder(1952, 618, 0) + PlaceGirder(957, 1068, 4) + PlaceGirder(794, 1069, 4) + PlaceGirder(728, 1163, 6) + PlaceGirder(728, 1287, 2) + PlaceGirder(802, 1342, 4) + PlaceGirder(966, 1342, 4) + PlaceGirder(674, 1032, 1) + PlaceGirder(554, 1011, 4) + PlaceGirder(445, 1056, 3) + PlaceGirder(422, 1174, 6) + PlaceGirder(369, 1341, 5) + PlaceGirder(495, 1313, 5) + PlaceGirder(568, 1379, 3) + PlaceGirder(577, 1202, 2) + PlaceGirder(744, 1490, 5) + PlaceGirder(760, 1617, 7) + PlaceGirder(622, 1693, 4) + PlaceGirder(476, 1623, 5) + PlaceGirder(376, 1697, 1) + PlaceGirder(955, 1746, 2) + PlaceGirder(1025, 1746, 2) + PlaceGirder(1090, 1745, 2) + PlaceGirder(1156, 1746, 2) + PlaceGirder(3806, 1530, 2) + PlaceGirder(3880, 1464, 2) + PlaceGirder(3738, 1458, 2) + PlaceGirder(3806, 1390, 2) + PlaceGirder(3805, 1588, 0) + PlaceGirder(3676, 1609, 3) + PlaceGirder(3930, 1615, 1) + PlaceGirder(3719, 1295, 0) + PlaceGirder(3888, 1294, 0) + PlaceGirder(3661, 1385, 2) + PlaceGirder(3955, 1377, 2) + PlaceGirder(3982, 1518, 0) + PlaceGirder(3378, 440, 2) + PlaceGirder(3447, 492, 4) + PlaceGirder(3564, 529, 1) + PlaceGirder(3596, 647, 6) + PlaceGirder(3521, 740, 4) + PlaceGirder(3524, 838, 4) + PlaceGirder(3644, 819, 3) + PlaceGirder(3691, 708, 6) + PlaceGirder(3690, 545, 6) + PlaceGirder(3612, 433, 5) + PlaceGirder(3463, 383, 4) + PlaceGirder(2815, 122, 7) + PlaceGirder(2960, 72, 4) + PlaceGirder(3032, 123, 2) + PlaceGirder(3063, 174, 0) + PlaceGirder(3095, 124, 2) + PlaceGirder(3169, 71, 4) + PlaceGirder(3320, 124, 5) + PlaceGirder(3210, 179, 2) + PlaceGirder(2932, 181, 2) + + tempG = SpawnHealthCrate(3804, 1461) + SetHealth(tempG, 25) + tempG = SpawnHealthCrate(3269, 1742) + SetHealth(tempG, 25) + tempG = SpawnHealthCrate(3066, 121) + SetHealth(tempG, 25) + tempG = SpawnHealthCrate(3207, 104) + SetHealth(tempG, 25) + tempG = SpawnHealthCrate(2928, 103) + SetHealth(tempG, 25) + tempG = SpawnHealthCrate(1997, 202) + SetHealth(tempG, 25) + tempG = SpawnHealthCrate(2253, 159) + SetHealth(tempG, 25) + tempG = SpawnHealthCrate(2132, 774) + SetHealth(tempG, 25) + tempG = SpawnHealthCrate(2549, 490) + SetHealth(tempG, 25) + tempG = SpawnHealthCrate(3527, 694) + SetHealth(tempG, 25) + tempG = SpawnHealthCrate(3777, 78) + SetHealth(tempG, 25) + tempG = SpawnHealthCrate(1124, 1746) + SetHealth(tempG, 25) + tempG = SpawnHealthCrate(1056, 1740) + SetHealth(tempG, 25) + tempG = SpawnHealthCrate(993, 1742) + SetHealth(tempG, 25) + tempG = SpawnHealthCrate(799, 1298) + SetHealth(tempG, 25) + tempG = SpawnHealthCrate(577, 1126) + SetHealth(tempG, 25) + tempG = SpawnHealthCrate(596, 1463) + SetHealth(tempG, 25) + tempG = SpawnHealthCrate(3854, 1043) + SetHealth(tempG, 25) + tempG = SpawnHealthCrate(1944, 567) + SetHealth(tempG, 25) + tempG = SpawnHealthCrate(338, 1748) + SetHealth(tempG, 25) + + +end + +--function onGameTick() + + --if RCGear ~= nil then + -- AddCaption(GetTimer(RCGear)) + --end + +--end + +function onNewTurn() + TurnTimeLeft = -1 +end + +function onGearAdd(gear) + + if GetGearType(gear) == gtRCPlane then + RCGear = gear + planesUsed = planesUsed + 1 + end + + if GetGearType(gear) == gtCase then + cratesLeft = cratesLeft + 1 + end + +end + +function onGearDelete(gear) + + if GetGearType(gear) == gtRCPlane then + + RCGear = nil + AddCaption(loc("Planes Used:") .. " " .. planesUsed) + + elseif GetGearType(gear) == gtCase then + + AddCaption(loc("Crates Left:") .. " " .. cratesLeft) + cratesLeft = cratesLeft - 1 + + if cratesLeft == 0 then + + ShowMission ( + loc("CHALLENGE COMPLETE"), + loc("Congratulations!"), + loc("Planes Used") .. ": " .. planesUsed .. "|" .. + "", 0, 0 + ) + + + ParseCommand("teamgone Wannabe Flyboys") + end + + if RCGear ~= nil then + SetTimer(RCGear, GetTimer(RCGear) + 10000) + end + + end + +end + +function onAmmoStoreInit() + SetAmmo(amRCPlane, 9, 0, 0, 0) +end diff -r 3331b30e4ef1 -r 88fde28bbda6 share/hedgewars/Data/Missions/Training/User_Mission_-_Rope_Knock_Challenge.lua --- a/share/hedgewars/Data/Missions/Training/User_Mission_-_Rope_Knock_Challenge.lua Sun Oct 21 01:28:33 2012 +0400 +++ b/share/hedgewars/Data/Missions/Training/User_Mission_-_Rope_Knock_Challenge.lua Sat Nov 03 00:34:35 2012 +0400 @@ -1,221 +1,221 @@ -loadfile(GetDataPath() .. "Scripts/Locale.lua")() - -local hhs = {} -local missionWon = nil -local endTimer = 1000 -local hogsKilled = 0 - -local HogData = { - {"Bufon", "ShaggyYeti",false}, - {"burp", "lambda",false}, - {"Blue", "cap_blue",false}, - {"bender", "NoHat",false}, - {"Castell", "NoHat",false}, - {"cekoto", "NoHat",false}, - {"CheezeMonkey", "NoHat",false}, - {"claymore", "NoHat",false}, - {"CIA-144", "cyborg1",false}, - {"doomy ", "NoHat",false}, - {"Falkenauge", "NoHat",false}, - {"FadeOne", "NoHat",false}, - {"hayaa", "NoHat",false}, - {"Hermes", "laurel",false}, - {"HedgeKing", "NoHat",false}, - {"Izack1535", "NoHat",false}, - {"Kiofspa", "NoHat",false}, - {"Komplex", "NoHat",false}, - {"koda", "poke_mudkip",false}, - {"Lalo", "NoHat",false}, - {"Logan", "NoHat",false}, - {"lollkiller", "NoHat",false}, - {"Luelle", "NoHat",false}, - {"mikade", "Skull",false}, - {"Mushi", "sm_daisy",false}, - {"Naboo", "NoHat",false}, - {"nemo", "bb_bub",false}, - {"practice", "NoHat",false}, - {"Prof. Panic", "NoHat",false}, - {"Randy", "zoo_Sheep",false}, - {"rhino", "NinjaTriangle",false}, - {"Radissthor", "NoHat",false}, - {"Sami", "sm_peach",false}, - {"soreau", "NoHat",false}, - {"sdw195", "NoHat",false}, - {"sphrix", "TeamTopHat",false}, - {"sheepluva", "zoo_Sheep",false}, - {"Smaxx", "NoHat",false}, - {"shadowzero", "NoHat",false}, - {"Star and Moon", "SparkleSuperFun",false}, - {"The 24", "NoHat",false}, - {"TLD", "NoHat",false}, - {"Tiyuri", "sf_ryu",false}, - {"unC0Rr", "cyborg1",false}, - {"Waldsau", "cyborg1",false}, - {"wolfmarc", "knight",false}, - {"Xeli", "android",false} - - } - -function GenericEnd() - ParseCommand("teamgone " .. loc("Wannabe Shoppsta")) - ParseCommand("teamgone " .. loc("Unsuspecting Louts")) - ParseCommand("teamgone " .. loc("Unlucky Sods")) -end - -function GameOverMan() - missionWon = false - ShowMission(loc("ROPE-KNOCKING"), loc("MISSION FAILED"), loc("Oh no! Just try again!"), -amSkip, 0) - PlaySound(sndHellish) -end - -function GG() - missionWon = true - ShowMission(loc("ROPE-KNOCKING"), loc("MISSION SUCCESS"), loc("Congratulations!") .. "|" .. loc("COMPLETION TIME") .. ": " .. (TurnTime - TurnTimeLeft) / 1000, 0, 0) - PlaySound(sndHomerun) -end - -function AssignCharacter(p) - - done = false - sanityCheck = 0 - - while(done == false) do - - i = 1+ GetRandom(#HogData) - if HogData[i][3] == false then - HogData[i][3] = true - done = true - SetHogName(hhs[p], HogData[i][1]) - SetHogHat(hhs[p], HogData[i][2]) - elseif HogData[i][3] == true then - sanityCheck = sanityCheck +1 - if sanityCheck == 100 then - done = true - SetHogName(hhs[p], "Newbie") - SetHogHat(hhs[p], "NoHat") - end - end - - end - -end - -function onGameInit() - - --Seed = 1 - GameFlags = gfBorder + gfSolidLand - - TurnTime = 180 * 1000 - Delay = 500 - Map = "Ropes" - Theme = "Eyes" - - CaseFreq = 0 - MinesNum = 0 - Explosives = 0 - - AddTeam(loc("Wannabe Shoppsta"), 1175851, "Simple", "Island", "Default", "Hedgewars") - hhs[0] = AddHog(loc("Ace"), 0, 1, "Gasmask") - SetGearPosition(player, 1380, 1500) - - AddTeam(loc("Unsuspecting Louts"), 14483456, "Simple", "Island", "Default", "Hedgewars") - for i = 1, 8 do - hhs[i] = AddHog("generic", 0, 1, "NoHat") - end - - AddTeam(loc("Unlucky Sods"), 14483456, "Simple", "Island", "Default", "Hedgewars") - for i = 9, 16 do - hhs[i] = AddHog("generic", 0, 1, "NoHat") - end - -end - - - -function onGameStart() - - ShowMission ( - loc("ROPE-KNOCKING"), - loc("a Hedgewars challenge"), - loc("Use the rope to knock your enemies to their doom.") .. "|" .. - - "", -amRope, 4000 - ) - - SetGearPosition(hhs[0], 2419, 1769) - SetGearPosition(hhs[1], 3350, 570) - SetGearPosition(hhs[2], 3039, 1300) - SetGearPosition(hhs[3], 2909, 430) - SetGearPosition(hhs[4], 2150, 879) - SetGearPosition(hhs[5], 1735, 1136) - SetGearPosition(hhs[6], 1563, 553) - SetGearPosition(hhs[7], 679, 859) - SetGearPosition(hhs[8], 1034, 251) - SetGearPosition(hhs[9], 255, 67) - SetGearPosition(hhs[10], 2671, 7) - SetGearPosition(hhs[11], 2929, 244) - SetGearPosition(hhs[12], 1946, 221) - SetGearPosition(hhs[13], 3849, 1067) - SetGearPosition(hhs[14], 3360, 659) - SetGearPosition(hhs[15], 3885, 285) - SetGearPosition(hhs[16], 935, 1160) - - for i = 1, 16 do - AssignCharacter(i) - end - -end - -function onGameTick() - - if (TurnTimeLeft == 1) and (missionWon == nil) then - GameOverMan() - end - - if missionWon ~= nil then - - endTimer = endTimer - 1 - if endTimer == 1 then - GenericEnd() - end - - if missionWon == true then - AddCaption(loc("GG!"), 0xffba00ff,capgrpGameState) - else - AddCaption(loc("Ouch!"), 0xffba00ff,capgrpGameState) - end - - end - -end - -function onGearDamage(gear, damage) - - if gear ~= hhs[0] then - - AddVisualGear(GetX(gear), GetY(gear), vgtBigExplosion, 0, false) - DeleteGear(gear) - PlaySound(sndExplosion) - - hogsKilled = hogsKilled +1 - if hogsKilled == 15 then - PlaySound(sndRideOfTheValkyries) - elseif hogsKilled == 16 then - GG() - end - - end - -end - -function onGearDelete(gear) - - if (gear == hhs[0]) and (missionWon == nil) then - GameOverMan() - end - -end - -function onAmmoStoreInit() - SetAmmo(amRope, 9, 0, 0, 0) -end +loadfile(GetDataPath() .. "Scripts/Locale.lua")() + +local hhs = {} +local missionWon = nil +local endTimer = 1000 +local hogsKilled = 0 + +local HogData = { + {"Bufon", "ShaggyYeti",false}, + {"burp", "lambda",false}, + {"Blue", "cap_blue",false}, + {"bender", "NoHat",false}, + {"Castell", "NoHat",false}, + {"cekoto", "NoHat",false}, + {"CheezeMonkey", "NoHat",false}, + {"claymore", "NoHat",false}, + {"CIA-144", "cyborg1",false}, + {"doomy ", "NoHat",false}, + {"Falkenauge", "NoHat",false}, + {"FadeOne", "NoHat",false}, + {"hayaa", "NoHat",false}, + {"Hermes", "laurel",false}, + {"HedgeKing", "NoHat",false}, + {"Izack1535", "NoHat",false}, + {"Kiofspa", "NoHat",false}, + {"Komplex", "NoHat",false}, + {"koda", "poke_mudkip",false}, + {"Lalo", "NoHat",false}, + {"Logan", "NoHat",false}, + {"lollkiller", "NoHat",false}, + {"Luelle", "NoHat",false}, + {"mikade", "Skull",false}, + {"Mushi", "sm_daisy",false}, + {"Naboo", "NoHat",false}, + {"nemo", "bb_bub",false}, + {"practice", "NoHat",false}, + {"Prof. Panic", "NoHat",false}, + {"Randy", "zoo_Sheep",false}, + {"rhino", "NinjaTriangle",false}, + {"Radissthor", "NoHat",false}, + {"Sami", "sm_peach",false}, + {"soreau", "NoHat",false}, + {"sdw195", "NoHat",false}, + {"sphrix", "TeamTopHat",false}, + {"sheepluva", "zoo_Sheep",false}, + {"Smaxx", "NoHat",false}, + {"shadowzero", "NoHat",false}, + {"Star and Moon", "SparkleSuperFun",false}, + {"The 24", "NoHat",false}, + {"TLD", "NoHat",false}, + {"Tiyuri", "sf_ryu",false}, + {"unC0Rr", "cyborg1",false}, + {"Waldsau", "cyborg1",false}, + {"wolfmarc", "knight",false}, + {"Xeli", "android",false} + + } + +function GenericEnd() + ParseCommand("teamgone " .. loc("Wannabe Shoppsta")) + ParseCommand("teamgone " .. loc("Unsuspecting Louts")) + ParseCommand("teamgone " .. loc("Unlucky Sods")) +end + +function GameOverMan() + missionWon = false + ShowMission(loc("ROPE-KNOCKING"), loc("MISSION FAILED"), loc("Oh no! Just try again!"), -amSkip, 0) + PlaySound(sndHellish) +end + +function GG() + missionWon = true + ShowMission(loc("ROPE-KNOCKING"), loc("MISSION SUCCESS"), loc("Congratulations!") .. "|" .. loc("COMPLETION TIME") .. ": " .. (TurnTime - TurnTimeLeft) / 1000, 0, 0) + PlaySound(sndHomerun) +end + +function AssignCharacter(p) + + done = false + sanityCheck = 0 + + while(done == false) do + + i = 1+ GetRandom(#HogData) + if HogData[i][3] == false then + HogData[i][3] = true + done = true + SetHogName(hhs[p], HogData[i][1]) + SetHogHat(hhs[p], HogData[i][2]) + elseif HogData[i][3] == true then + sanityCheck = sanityCheck +1 + if sanityCheck == 100 then + done = true + SetHogName(hhs[p], "Newbie") + SetHogHat(hhs[p], "NoHat") + end + end + + end + +end + +function onGameInit() + + --Seed = 1 + GameFlags = gfBorder + gfSolidLand + + TurnTime = 180 * 1000 + Delay = 500 + Map = "Ropes" + Theme = "Eyes" + + CaseFreq = 0 + MinesNum = 0 + Explosives = 0 + + AddTeam(loc("Wannabe Shoppsta"), 1175851, "Simple", "Island", "Default", "Hedgewars") + hhs[0] = AddHog(loc("Ace"), 0, 1, "Gasmask") + SetGearPosition(player, 1380, 1500) + + AddTeam(loc("Unsuspecting Louts"), 14483456, "Simple", "Island", "Default", "Hedgewars") + for i = 1, 8 do + hhs[i] = AddHog("generic", 0, 1, "NoHat") + end + + AddTeam(loc("Unlucky Sods"), 14483456, "Simple", "Island", "Default", "Hedgewars") + for i = 9, 16 do + hhs[i] = AddHog("generic", 0, 1, "NoHat") + end + +end + + + +function onGameStart() + + ShowMission ( + loc("ROPE-KNOCKING"), + loc("a Hedgewars challenge"), + loc("Use the rope to knock your enemies to their doom.") .. "|" .. + + "", -amRope, 4000 + ) + + SetGearPosition(hhs[0], 2419, 1769) + SetGearPosition(hhs[1], 3350, 570) + SetGearPosition(hhs[2], 3039, 1300) + SetGearPosition(hhs[3], 2909, 430) + SetGearPosition(hhs[4], 2150, 879) + SetGearPosition(hhs[5], 1735, 1136) + SetGearPosition(hhs[6], 1563, 553) + SetGearPosition(hhs[7], 679, 859) + SetGearPosition(hhs[8], 1034, 251) + SetGearPosition(hhs[9], 255, 67) + SetGearPosition(hhs[10], 2671, 7) + SetGearPosition(hhs[11], 2929, 244) + SetGearPosition(hhs[12], 1946, 221) + SetGearPosition(hhs[13], 3849, 1067) + SetGearPosition(hhs[14], 3360, 659) + SetGearPosition(hhs[15], 3885, 285) + SetGearPosition(hhs[16], 935, 1160) + + for i = 1, 16 do + AssignCharacter(i) + end + +end + +function onGameTick() + + if (TurnTimeLeft == 1) and (missionWon == nil) then + GameOverMan() + end + + if missionWon ~= nil then + + endTimer = endTimer - 1 + if endTimer == 1 then + GenericEnd() + end + + if missionWon == true then + AddCaption(loc("GG!"), 0xffba00ff,capgrpGameState) + else + AddCaption(loc("Ouch!"), 0xffba00ff,capgrpGameState) + end + + end + +end + +function onGearDamage(gear, damage) + + if gear ~= hhs[0] then + + AddVisualGear(GetX(gear), GetY(gear), vgtBigExplosion, 0, false) + DeleteGear(gear) + PlaySound(sndExplosion) + + hogsKilled = hogsKilled +1 + if hogsKilled == 15 then + PlaySound(sndRideOfTheValkyries) + elseif hogsKilled == 16 then + GG() + end + + end + +end + +function onGearDelete(gear) + + if (gear == hhs[0]) and (missionWon == nil) then + GameOverMan() + end + +end + +function onAmmoStoreInit() + SetAmmo(amRope, 9, 0, 0, 0) +end diff -r 3331b30e4ef1 -r 88fde28bbda6 share/hedgewars/Data/Missions/Training/User_Mission_-_Spooky_Tree.lua --- a/share/hedgewars/Data/Missions/Training/User_Mission_-_Spooky_Tree.lua Sun Oct 21 01:28:33 2012 +0400 +++ b/share/hedgewars/Data/Missions/Training/User_Mission_-_Spooky_Tree.lua Sat Nov 03 00:34:35 2012 +0400 @@ -34,8 +34,8 @@ AddTeam(loc("Toxic Team"), 1175851, "Simple", "Island", "Default") enemy = AddHog(loc("Poison"), 1, 10, "Skull") - SetGearPosition(player, 1994, 1047) - SetGearPosition(enemy, 1522, 1830) + SetGearPosition(player,970,23) + SetGearPosition(enemy,498,806) end @@ -43,42 +43,42 @@ function onGameStart() --right side mines - AddGear(2705, 1383, gtMine, 0, 0, 0, 0) - AddGear(2742, 1542, gtMine, 0, 0, 0, 0) - AddGear(2672, 1551, gtMine, 0, 0, 0, 0) - AddGear(2608, 1546, gtMine, 0, 0, 0, 0) + AddGear(1681,359,gtMine, 0, 0, 0, 0) + AddGear(1718,518,gtMine, 0, 0, 0, 0) + AddGear(1648,527,gtMine, 0, 0, 0, 0) + AddGear(1584,522,gtMine, 0, 0, 0, 0) --tunnel mines - AddGear(1325, 1593, gtSMine, 0, 0, 0, 0) - AddGear(1396, 1632, gtSMine, 0, 0, 0, 0) - AddGear(1477, 1652, gtSMine, 0, 0, 0, 0) - AddGear(1548, 1635, gtSMine, 0, 0, 0, 0) - AddGear(1637, 1635, gtSMine, 0, 0, 0, 0) + AddGear(301,569,gtSMine, 0, 0, 0, 0) + AddGear(372,608,gtSMine, 0, 0, 0, 0) + AddGear(453,628,gtSMine, 0, 0, 0, 0) + AddGear(524,611,gtSMine, 0, 0, 0, 0) + AddGear(613,611,gtSMine, 0, 0, 0, 0) - AddGear(1332, 1510, gtSMine, 0, 0, 0, 0) - AddGear(1396, 1502, gtSMine, 0, 0, 0, 0) - AddGear(1477, 1490, gtSMine, 0, 0, 0, 0) - AddGear(1548, 1495, gtSMine, 0, 0, 0, 0) - AddGear(1637, 1490, gtSMine, 0, 0, 0, 0) + AddGear(308,486,gtSMine, 0, 0, 0, 0) + AddGear(372,478,gtSMine, 0, 0, 0, 0) + AddGear(453,466,gtSMine, 0, 0, 0, 0) + AddGear(524,471,gtSMine, 0, 0, 0, 0) + AddGear(613,466,gtSMine, 0, 0, 0, 0) --above the tunnel mines - AddGear(1355, 1457, gtMine, 0, 0, 0, 0) - AddGear(1428, 1444, gtMine, 0, 0, 0, 0) - AddGear(1508, 1448, gtMine, 0, 0, 0, 0) - AddGear(1586, 1441, gtMine, 0, 0, 0, 0) - AddGear(1664, 1436, gtMine, 0, 0, 0, 0) + AddGear(331,433,gtMine, 0, 0, 0, 0) + AddGear(404,420,gtMine, 0, 0, 0, 0) + AddGear(484,424,gtMine, 0, 0, 0, 0) + AddGear(562,417,gtMine, 0, 0, 0, 0) + AddGear(640,412,gtMine, 0, 0, 0, 0) -- crates crates and more crates - SpawnAmmoCrate(2232,1600,amBlowTorch) - SpawnAmmoCrate(2491,1400,amPickHammer) - SpawnUtilityCrate(1397,1189,amGirder) - SpawnUtilityCrate(1728,1647,amJetpack) - SpawnUtilityCrate(2670,1773,amLaserSight) + SpawnAmmoCrate(1208,576,amBlowTorch) + SpawnAmmoCrate(1467,376,amPickHammer) + SpawnUtilityCrate(373,165,amGirder) + SpawnUtilityCrate(704,623,amJetpack) + SpawnUtilityCrate(1646,749,amLaserSight) - SpawnAmmoCrate(1769,1442,amShotgun) --shotgun1 - SpawnAmmoCrate(1857,1456,amFirePunch) --fire punch - GirderCrate = SpawnAmmoCrate(2813,1538,amShotgun) -- final shotgun - SpawnAmmoCrate(2205,1443,amBee) + SpawnAmmoCrate(745,418,amShotgun) --shotgun1 + SpawnAmmoCrate(833,432,amFirePunch) --fire punch + GirderCrate = SpawnAmmoCrate(1789,514,amShotgun) -- final shotgun + SpawnAmmoCrate(1181,419,amBee) ShowMission(loc("Spooky Tree"), "", loc("Eliminate all enemies") .. loc("|- Mines Time:") .. " " .. 0 .. " " .. loc("sec"), -amBee, 0) @@ -92,12 +92,12 @@ if CurrentHedgehog ~= nil then - if (birdSqualk == false) and (GetX(CurrentHedgehog) == 2126) and (GetY(CurrentHedgehog) == 1157) then + if (birdSqualk == false) and (GetX(CurrentHedgehog) == 1102) and (GetY(CurrentHedgehog) == 133) then birdSqualk = true PlaySound(sndBirdyLay) end - if (birdSpeech == false) and (GetX(CurrentHedgehog) == 2092) and (GetY(CurrentHedgehog) == 1186) then + if (birdSpeech == false) and (GetX(CurrentHedgehog) == 1068) and (GetY(CurrentHedgehog) == 162) then birdSpeech = true HogSay(player,loc("Good birdy......"),SAY_THINK) end diff -r 3331b30e4ef1 -r 88fde28bbda6 share/hedgewars/Data/Missions/Training/User_Mission_-_Teamwork.lua --- a/share/hedgewars/Data/Missions/Training/User_Mission_-_Teamwork.lua Sun Oct 21 01:28:33 2012 +0400 +++ b/share/hedgewars/Data/Missions/Training/User_Mission_-_Teamwork.lua Sat Nov 03 00:34:35 2012 +0400 @@ -30,9 +30,9 @@ AddTeam(loc("Cybernetic Empire"), 1175851, "Simple", "Island", "Robot", "cm_binary") enemy = AddHog(loc("Unit 3378"), 5, 30, "cyborg1") - SetGearPosition(player, 2427, 1259) - SetGearPosition(p2, 2293, 1263) - SetGearPosition(enemy, 1516, 1519) + SetGearPosition(player,1403,235) + SetGearPosition(p2,1269,239) + SetGearPosition(enemy,492,495) end @@ -40,43 +40,43 @@ function onGameStart() --mines - AddGear(1300, 1100, gtMine, 0, 0, 0, 0) - AddGear(1325, 1100, gtMine, 0, 0, 0, 0) - AddGear(1350, 1100, gtMine, 0, 0, 0, 0) - AddGear(1375, 1100, gtMine, 0, 0, 0, 0) - AddGear(1400, 1100, gtMine, 0, 0, 0, 0) - AddGear(1425, 1100, gtMine, 0, 0, 0, 0) - AddGear(1450, 1100, gtMine, 0, 0, 0, 0) - AddGear(1475, 1100, gtMine, 0, 0, 0, 0) - AddGear(1500, 1100, gtMine, 0, 0, 0, 0) + AddGear(276,76,gtMine, 0, 0, 0, 0) + AddGear(301,76,gtMine, 0, 0, 0, 0) + AddGear(326,76,gtMine, 0, 0, 0, 0) + AddGear(351,76,gtMine, 0, 0, 0, 0) + AddGear(376,76,gtMine, 0, 0, 0, 0) + AddGear(401,76,gtMine, 0, 0, 0, 0) + AddGear(426,76,gtMine, 0, 0, 0, 0) + AddGear(451,76,gtMine, 0, 0, 0, 0) + AddGear(476,76,gtMine, 0, 0, 0, 0) - AddGear(1910, 1380, gtMine, 0, 0, 0, 0) - AddGear(1925, 1380, gtMine, 0, 0, 0, 0) - AddGear(1950, 1380, gtMine, 0, 0, 0, 0) - AddGear(1975, 1380, gtMine, 0, 0, 0, 0) - AddGear(2000, 1380, gtMine, 0, 0, 0, 0) - AddGear(2025, 1380, gtMine, 0, 0, 0, 0) + AddGear(886,356,gtMine, 0, 0, 0, 0) + AddGear(901,356,gtMine, 0, 0, 0, 0) + AddGear(926,356,gtMine, 0, 0, 0, 0) + AddGear(951,356,gtMine, 0, 0, 0, 0) + AddGear(976,356,gtMine, 0, 0, 0, 0) + AddGear(1001,356,gtMine, 0, 0, 0, 0) -- crates crates and more crates - bCrate = SpawnAmmoCrate(2712,1500,amBaseballBat) - SpawnUtilityCrate(1596,1167,amGirder) - SpawnAmmoCrate(2728,1978,amPickHammer) - SpawnAmmoCrate(1728,1647,amBlowTorch) - SpawnUtilityCrate(2567,1768,amJetpack) - SpawnAmmoCrate(1251,1466,amDrill) + bCrate = SpawnAmmoCrate(1688,476,amBaseballBat) + SpawnUtilityCrate(572,143,amGirder) + SpawnAmmoCrate(1704,954,amPickHammer) + SpawnAmmoCrate(704,623,amBlowTorch) + SpawnUtilityCrate(1543,744,amJetpack) + SpawnAmmoCrate(227,442,amDrill) ShowMission(loc("Codename: Teamwork"), "", loc("- Eliminate Unit 3378 |- Feeble Resistance must survive") .. loc("|- Mines Time:") .. " " .. 0 .. " " .. loc("sec"), 0, 0) end -function onGameTick() +--function onGameTick() --if CurrentHedgehog ~= nil then -- AddCaption(GetX(CurrentHedgehog) .. ";" .. GetY(CurrentHedgehog)) --end -end +--end function onAmmoStoreInit() diff -r 3331b30e4ef1 -r 88fde28bbda6 share/hedgewars/Data/Missions/Training/User_Mission_-_The_Great_Escape.lua --- a/share/hedgewars/Data/Missions/Training/User_Mission_-_The_Great_Escape.lua Sun Oct 21 01:28:33 2012 +0400 +++ b/share/hedgewars/Data/Missions/Training/User_Mission_-_The_Great_Escape.lua Sat Nov 03 00:34:35 2012 +0400 @@ -1,122 +1,122 @@ -loadfile(GetDataPath() .. "Scripts/Locale.lua")() - -local player = nil -local enemy = nil - -function onGameInit() - - Map = "Castle" - Theme = "Nature" - Seed = 0 - GameFlags = gfInfAttack - - TurnTime = 45 * 1000 - - CaseFreq = 0 - MinesNum = 0 - Explosives = 0 - - AddTeam(loc("Hero Team"), 14483456, "Simple", "Island", "Default", "Hedgewars") - player = AddHog(loc("Good Dude"), 0, 80, "NoHat") --NoHat - - AddTeam(loc("Bad Team"), 1175851, "Simple", "Island", "Default", "Hedgewars") - enemy = AddHog("Bad Guy", 1, 40, "NoHat") - -end - -function onGameStart() - -ShowMission(loc("The Great Escape"), loc("Get out of there!"), loc("Elimate your captor."), -amGrenade, 0) - ------- GIRDER LIST ------ -PlaceGirder(2066, 1588, 0) -PlaceGirder(2052, 1498, 6) -PlaceGirder(2098, 1498, 6) -PlaceGirder(2074, 1409, 0) -PlaceGirder(2199, 1755, 7) -PlaceGirder(2476, 1929, 2) -PlaceGirder(2546, 1879, 4) -PlaceGirder(2520, 1924, 3) -PlaceGirder(2706, 1879, 4) -PlaceGirder(2797, 1911, 2) -PlaceGirder(2671, 1925, 1) -PlaceGirder(2895, 1907, 6) -PlaceGirder(2895, 1747, 6) -PlaceGirder(2798, 1792, 6) -PlaceGirder(2797, 1791, 6) -PlaceGirder(2845, 1928, 1) -PlaceGirder(2846, 1826, 3) -PlaceGirder(2844, 1747, 1) -PlaceGirder(2806, 1702, 4) -PlaceGirder(2846, 1685, 0) -PlaceGirder(2846, 1668, 0) -PlaceGirder(2766, 1668, 0) -PlaceGirder(2766, 1685, 0) -PlaceGirder(2718, 1700, 2) -PlaceGirder(2927, 1659, 0) ------- HEALTH CRATE LIST ------ -SpawnHealthCrate(2500, 1193) -SpawnHealthCrate(2575, 1201) -SpawnHealthCrate(2610, 1224) -SpawnHealthCrate(2463, 1213) -SpawnHealthCrate(2425, 1235) -SpawnHealthCrate(2657, 1234) ------- MINE LIST ------ -tempG = AddGear(2034, 1704, gtMine, 0, 0, 0, 0) -SetTimer(tempG, 1) -tempG = AddGear(2055, 1744, gtMine, 0, 0, 0, 0) -SetTimer(tempG, 1) -tempG = AddGear(2063, 1772, gtMine, 0, 0, 0, 0) -SetTimer(tempG, 1) -tempG = AddGear(2075, 1801, gtMine, 0, 0, 0, 0) -SetTimer(tempG, 1) -tempG = AddGear(2089, 1820, gtMine, 0, 0, 0, 0) -SetTimer(tempG, 1) -tempG = AddGear(2118, 1824, gtMine, 0, 0, 0, 0) -SetTimer(tempG, 1) ------- REPOSITION LIST ------ -SetGearPosition(player, 2074, 1558) -SetGearPosition(enemy, 2536, 1182) -SetHealth(player, 1) -SetHealth(enemy, 1) ------- AMMO CRATE LIST ------ -SpawnAmmoCrate(2656, 1967, 5) -SpawnAmmoCrate(2747, 1912, 12) -SpawnAmmoCrate(2939, 1623, 1) ------- UTILITY CRATE LIST ------ -SpawnUtilityCrate(2543, 1969, 15) -SpawnUtilityCrate(2251, 1664, 6) -SpawnUtilityCrate(2440, 1937, 18) ------- END LOADING DATA ------ - -end - -function onGameTick() - - if TurnTimeLeft == TurnTime-1 then - SetWind(100) - end - -end - -function onGearDelete(gear) - if (GetGearType(gear) == gtCase) and (CurrentHedgehog == player) then - if GetHealth(gear) > 0 then - AddGear(GetX(gear), GetY(gear), gtGrenade, 0, 0, 0, 1) - end - elseif gear == player then - ShowMission(loc("The Great Escape"), loc("MISSION FAILED"), loc("Oh no! Just try again!"), -amSkip, 0) - elseif gear == enemy then - ShowMission(loc("The Great Escape"), loc("MISSION SUCCESSFUL"), loc("Congratulations!"), 0, 0) - end -end - -function onAmmoStoreInit() - SetAmmo(amGrenade, 1, 0, 0, 1) - SetAmmo(amParachute, 1, 0, 0, 1) - SetAmmo(amFirePunch, 0, 0, 0, 3) - SetAmmo(amPickHammer, 0, 0, 0, 1) - SetAmmo(amBlowTorch, 0, 0, 0, 1) - SetAmmo(amShotgun, 0, 0, 0, 1) - SetAmmo(amSkip, 9, 0, 0, 0) -end +loadfile(GetDataPath() .. "Scripts/Locale.lua")() + +local player = nil +local enemy = nil + +function onGameInit() + + Map = "Castle" + Theme = "Nature" + Seed = 0 + GameFlags = gfInfAttack + + TurnTime = 45 * 1000 + + CaseFreq = 0 + MinesNum = 0 + Explosives = 0 + + AddTeam(loc("Hero Team"), 14483456, "Simple", "Island", "Default", "Hedgewars") + player = AddHog(loc("Good Dude"), 0, 80, "NoHat") --NoHat + + AddTeam(loc("Bad Team"), 1175851, "Simple", "Island", "Default", "Hedgewars") + enemy = AddHog("Bad Guy", 1, 40, "NoHat") + +end + +function onGameStart() + +ShowMission(loc("The Great Escape"), loc("Get out of there!"), loc("Elimate your captor."), -amGrenade, 0) + +------ GIRDER LIST ------ +PlaceGirder(1042,564,0) +PlaceGirder(1028,474,6) +PlaceGirder(1074,474,6) +PlaceGirder(1050,385,0) +PlaceGirder(1175,731,7) +PlaceGirder(1452,905,2) +PlaceGirder(1522,855,4) +PlaceGirder(1496,900,3) +PlaceGirder(1682,855,4) +PlaceGirder(1773,887,2) +PlaceGirder(1647,901,1) +PlaceGirder(1871,883,6) +PlaceGirder(1871,723,6) +PlaceGirder(1774,768,6) +PlaceGirder(1773,767,6) +PlaceGirder(1821,904,1) +PlaceGirder(1822,802,3) +PlaceGirder(1820,723,1) +PlaceGirder(1782,678,4) +PlaceGirder(1822,661,0) +PlaceGirder(1822,644,0) +PlaceGirder(1742,644,0) +PlaceGirder(1742,661,0) +PlaceGirder(1694,676,2) +PlaceGirder(1903,635,0) +------ HEALTH CRATE LIST ------ +SpawnHealthCrate(1476,169) +SpawnHealthCrate(1551,177) +SpawnHealthCrate(1586,200) +SpawnHealthCrate(1439,189) +SpawnHealthCrate(1401,211) +SpawnHealthCrate(1633,210) +------ MINE LIST ------ +tempG = AddGear(1010,680,gtMine, 0, 0, 0, 0) +SetTimer(tempG, 1) +tempG = AddGear(1031,720,gtMine, 0, 0, 0, 0) +SetTimer(tempG, 1) +tempG = AddGear(1039,748,gtMine, 0, 0, 0, 0) +SetTimer(tempG, 1) +tempG = AddGear(1051,777,gtMine, 0, 0, 0, 0) +SetTimer(tempG, 1) +tempG = AddGear(1065,796,gtMine, 0, 0, 0, 0) +SetTimer(tempG, 1) +tempG = AddGear(1094,800,gtMine, 0, 0, 0, 0) +SetTimer(tempG, 1) +------ REPOSITION LIST ------ +SetGearPosition(player,1050,534) +SetGearPosition(enemy,1512,158) +SetHealth(player, 1) +SetHealth(enemy, 1) +------ AMMO CRATE LIST ------ +SpawnAmmoCrate(1632,943,5) +SpawnAmmoCrate(1723,888,12) +SpawnAmmoCrate(1915,599,1) +------ UTILITY CRATE LIST ------ +SpawnUtilityCrate(1519,945,15) +SpawnUtilityCrate(1227,640,6) +SpawnUtilityCrate(1416,913,18) +------ END LOADING DATA ------ + +end + +function onGameTick() + + if TurnTimeLeft == TurnTime-1 then + SetWind(100) + end + +end + +function onGearDelete(gear) + if (GetGearType(gear) == gtCase) and (CurrentHedgehog == player) then + if GetHealth(gear) > 0 then + AddGear(GetX(gear), GetY(gear), gtGrenade, 0, 0, 0, 1) + end + elseif gear == player then + ShowMission(loc("The Great Escape"), loc("MISSION FAILED"), loc("Oh no! Just try again!"), -amSkip, 0) + elseif gear == enemy then + ShowMission(loc("The Great Escape"), loc("MISSION SUCCESSFUL"), loc("Congratulations!"), 0, 0) + end +end + +function onAmmoStoreInit() + SetAmmo(amGrenade, 1, 0, 0, 1) + SetAmmo(amParachute, 1, 0, 0, 1) + SetAmmo(amFirePunch, 0, 0, 0, 3) + SetAmmo(amPickHammer, 0, 0, 0, 1) + SetAmmo(amBlowTorch, 0, 0, 0, 1) + SetAmmo(amShotgun, 0, 0, 0, 1) + SetAmmo(amSkip, 9, 0, 0, 0) +end diff -r 3331b30e4ef1 -r 88fde28bbda6 share/hedgewars/Data/Missions/Training/portal.lua --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/share/hedgewars/Data/Missions/Training/portal.lua Sat Nov 03 00:34:35 2012 +0400 @@ -0,0 +1,235 @@ +loadfile(GetDataPath() .. "Scripts/Locale.lua")() +loadfile(GetDataPath() .. "Scripts/Utils.lua")() + +local MineArray = {} +local player +local adviceGiven = false +local adviceGiven2 = false + +function onGameInit() + Seed = 0 -- The base number for the random number generator + GameFlags = gfInfAttack +gfBorder +gfDisableWind +gfSolidLand + TurnTime = 1500000 -- 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 + Explosives = 0 -- The number of explosives being placed + Delay = 10 -- The delay between each round + Map = "portal" -- The map to be played + Theme = "Hell" -- The theme to be used + Goals = "use the portal to move fast and far, use it to kill, use it with caution !" --the goal ... + + +----AddTeam(teamname, color, grave, fort, voicepack, flag)-- + AddTeam("Subject", 14483406, "Simple", "Island", "Default", "cm_star") + player = AddHog("player", 0, 10, "Terminator_Glasses") + + AddTeam("Hell Army", 1170801, "Simple", "Island", "Default", "cm_galaxy") + enemy1 = AddHog("Lucifer", 1, 200, "thinkingcap") + enemy2 = AddHog("voldemort", 1, 150, "WizardHat") + enemy3 = AddHog("zombi", 1, 100, "zombi") + enemy4 = AddHog("Predator", 1, 14, "predator") + enemy5 = AddHog("oneye", 1, 50, "cyclops") + enemy6 = AddHog("razac", 1, 50, "plaguemask") + enemy7 = AddHog("C-2", 1, 50, "cyborg1") + enemy8 = AddHog("Rider", 1, 50, "scif_SparkssHelmet") + + AddTeam("badmad", 1170801, "Simple", "Island", "Default", "cm_jupiter") + enemy9 = AddHog("C-1", 1, 50, "cyborg2") + enemy10 = AddHog("hiden", 1, 40, "daftpunkguymanuel") + enemy11 = AddHog("ronald", 1, 70, "clown") + enemy12 = AddHog("phosphatoglucidique", 1, 50, "chef") + enemy13 = AddHog("Lestat", 1, 30, "draculakz") + + SetGearPosition(player, 350, 1820) + SetGearPosition(enemy1, 2037, 1313) + SetGearPosition(enemy2, 1369, 1605) + SetGearPosition(enemy3, 1750, 1937) + SetGearPosition(enemy4, 3125, 89) + SetGearPosition(enemy5, 743, 900) + SetGearPosition(enemy6, 130, 360) + SetGearPosition(enemy7, 1333, 640) + SetGearPosition(enemy8, 1355, 200) + SetGearPosition(enemy9, 2680, 225) + SetGearPosition(enemy10, 2970, 800) + SetGearPosition(enemy11, 4050, 1964) + SetGearPosition(enemy12, 2666, 950) + SetGearPosition(enemy13, 3306, 1205) + + + +end + +function onAmmoStoreInit() + + SetAmmo(amFirePunch, 0,0,0,1) + SetAmmo(amParachute, 0, 0, 0, 2) + SetAmmo(amGirder, 0, 0, 0, 3) + SetAmmo(amTeleport, 0, 0, 0, 1) + SetAmmo(amLaserSight,0,0,0,1) + SetAmmo(amHellishBomb,0,0,0,1) + SetAmmo(amGrenade,0,0,0,1) + SetAmmo(amRope,0,0,0,1) + SetAmmo(amDEagle,0,0,0,1) + SetAmmo(amExtraTime,0,0,0,2) + SetAmmo(amSkip,9,0,0,0) + SetAmmo(amBlowTorch, 0, 0, 0, 1) + SetAmmo(amPickHammer, 0, 0, 0, 1) + SetAmmo(amSnowball, 0, 0, 0, 1) + +end + +function onGameStart() + + SetWind(100)-- SetWind(windSpeed) Sets the current wind in the range of -100 to 100. Use together with gfDisableWind for full control. + -- -100to0 is to the left, and 0to100 is to the right (of course more its far from 0, more the speed is high + -- -100.............................0..................................+100 + -- <<<<<<<<--<<--<<<<<<<<<<<<<--<<<<<|||-->>>>>>>>-->>>>>>>>>>>>>>>-->>>>>> = wind direction + + + MineArray[0] = AddGear(840, 1847, gtMine, 0, 0, 0, 0) + MineArray[1] = AddGear(900, 1847, gtMine, 0, 0, 0, 0) + MineArray[2] = AddGear(1000, 1847, gtMine, 0, 0, 0, 0) + MineArray[3] = AddGear(1100, 1847, gtMine, 0, 0, 0, 0) + MineArray[4] = AddGear(1140, 1847, gtMine, 0, 0, 0, 0) + MineArray[5] = AddGear(1170, 1847, gtMine, 0, 0, 0, 0) + MineArray[6] = AddGear(1200, 1847, gtMine, 0, 0, 0, 0) + MineArray[7] = AddGear(1200, 1847, gtMine, 0, 0, 0, 0) + MineArray[8] = AddGear(1230, 1847, gtMine, 0, 0, 0, 0) + MineArray[9] = AddGear(1280, 1847, gtMine, 0, 0, 0, 0) + MineArray[10] = AddGear(1302, 1847, gtMine, 0, 0, 0, 0) + MineArray[11] = AddGear(1350, 1847, gtMine, 0, 0, 0, 0) + MineArray[12] = AddGear(1383, 1847, gtMine, 0, 0, 0, 0) + MineArray[13] = AddGear(1400, 1847, gtMine, 0, 0, 0, 0) + MineArray[14] = AddGear(1423, 1847, gtMine, 0, 0, 0, 0) + MineArray[15] = AddGear(1470, 1847, gtMine, 0, 0, 0, 0) + MineArray[16] = AddGear(1480, 1847, gtMine, 0, 0, 0, 0) + MineArray[17] = AddGear(1311, 1847, gtMine, 0, 0, 0, 0) + + MineArray[18] = AddGear(840, 1785, gtMine, 0, 0, 0, 0) + MineArray[19] = AddGear(900, 1785, gtMine, 0, 0, 0, 0) + MineArray[20] = AddGear(1000, 1785, gtMine, 0, 0, 0, 0) + MineArray[21] = AddGear(1100, 1785, gtMine, 0, 0, 0, 0) + MineArray[22] = AddGear(1140, 1785, gtMine, 0, 0, 0, 0) + MineArray[23] = AddGear(1170, 1785, gtMine, 0, 0, 0, 0) + MineArray[24] = AddGear(1200, 1785, gtMine, 0, 0, 0, 0) + MineArray[25] = AddGear(1230, 1785, gtMine, 0, 0, 0, 0) + MineArray[26] = AddGear(1280, 1785, gtMine, 0, 0, 0, 0) + MineArray[27] = AddGear(1302, 1785, gtMine, 0, 0, 0, 0) + MineArray[28] = AddGear(1350, 1785, gtMine, 0, 0, 0, 0) + MineArray[29] = AddGear(1383, 1785, gtMine, 0, 0, 0, 0) + MineArray[30] = AddGear(1400, 1785, gtMine, 0, 0, 0, 0) + MineArray[31] = AddGear(1423, 1785, gtMine, 0, 0, 0, 0) + MineArray[32] = AddGear(1470, 1785, gtMine, 0, 0, 0, 0) + MineArray[33] = AddGear(1480, 1785, gtMine, 0, 0, 0, 0) + MineArray[34] = AddGear(1311, 1785, gtMine, 0, 0, 0, 0) + + MineArray[35] = AddGear(4029, 89, gtMine, 0, 0, 0, 120) + --MineArray[36] = AddGear(3376, 1947, gtMine, 0, 0, 0, 10) + + for i = 0,#MineArray do + SetTimer(MineArray[i],050) + SetState(MineArray[i],544) + end + --needed this MineArray cause timer didn't work, its was always 3sec, i wanna instant mines + + + --UTILITY CRATE-- + parachute = SpawnUtilityCrate(1670, 1165, amParachute) + girder = SpawnUtilityCrate(2101, 1297, amGirder) + SpawnUtilityCrate(3965, 625, amBlowTorch) + SpawnUtilityCrate(2249, 93, amBlowTorch) + SpawnUtilityCrate(2181, 829, amBlowTorch) + SpawnUtilityCrate(1820, 567, amBlowTorch) + SpawnUtilityCrate(1375, 900, amTeleport) + SpawnUtilityCrate(130, 600, amPickHammer) + SpawnUtilityCrate(1660,1820, amLaserSight) + SpawnUtilityCrate(4070,1840, amLaserSight) + + + --AMMO CRATE-- + portalgun = SpawnAmmoCrate(505, 1943, amPortalGun, 1000) + extratime = SpawnAmmoCrate(4020, 785, amExtraTime, 2) + SpawnAmmoCrate(425, 613, amSnowball) + SpawnAmmoCrate(861, 633, amHellishBomb) + SpawnAmmoCrate(2510, 623, amSnowball) + SpawnAmmoCrate(2900, 1600, amGrenade) + SpawnAmmoCrate(2680, 320, amGrenade) + SpawnAmmoCrate(2650, 80, amDEagle) + SpawnAmmoCrate(3000, 100, amDEagle) + SpawnAmmoCrate(2900, 1400, amRope) + SpawnAmmoCrate(4025, 1117, amFirePunch) + + + --HEALTH CRATE-- + SpawnHealthCrate(2000, 780) + + --GIRDER-- + PlaceGirder(3363, 1323, 4) + + + ShowMission (loc("Portal mission"), loc("training"), "", -amPortalGun, 5000) + HogSay(player, "I should get myself a portal gun, maybe this crate has one", SAY_THINK) + + + + +end + +function onGameTick() + + if (player ~= nil) then + if (gearIsInBox(player, 1650, 1907, 200, 60) and (adviceGiven == false)) then + adviceGiven = true + HogSay(player, loc("Hmmm, I'll have to find some way of moving him off this anti-portal surface..."), SAY_THINK) + elseif (gearIsInBox(player, 2960, 790, 200, 60) and (adviceGiven2 == false)) then + adviceGiven2 = true + HogSay(player, loc("The anti-portal zone is all over the floor, and I have nothing to kill him...Droping something could hurt him enough to kill him..."), SAY_THINK) + end + end + + end + + + + + +function onNewturn() +end + + +function onGearAdd(gear) +end + +function onGearDelete(gear) + + if gear == portalgun then + --AddAmmo(player, amPortalGun, 10000) + HogSay(player, "GREAT ! Let's kill all this enemies, using portals", SAY_THINK) + end + + if gear == girder then + HogSay(player, "Will be useful if I need a new plateform or if I want to rise....", SAY_THINK) + end + + if gear == parachute then + HogSay(player, loc("You can't fire a portal on the blue surface"), SAY_THINK) + end +--if you wanted to check for collection only +--you could probably say +--if (gear == myParachuteGear) and (band(GetGearMessage(gear), gmDestroy) ~= 0) then + + if gear == extratime then + HogSay(player, loc(" What !! For all of this struggle i just win some ... TIME o0"), SAY_SHOUT) + end + + + if gear == player then + player = nil + end +end + + + + + + diff -r 3331b30e4ef1 -r 88fde28bbda6 share/hedgewars/Data/Scripts/Multiplayer/Capture_the_Flag.lua --- a/share/hedgewars/Data/Scripts/Multiplayer/Capture_the_Flag.lua Sun Oct 21 01:28:33 2012 +0400 +++ b/share/hedgewars/Data/Scripts/Multiplayer/Capture_the_Flag.lua Sat Nov 03 00:34:35 2012 +0400 @@ -144,7 +144,7 @@ for i = 0, (numhhs-1) do if hhs[i] ~= nil then if GetHogClan(hhs[i]) == alt then - SetEffect(hhs[i], heResurrectable, false) + SetEffect(hhs[i], heResurrectable, 0) SetHealth(hhs[i],0) end end @@ -607,7 +607,7 @@ if GetGearType(gear) == gtHedgehog then hhs[numhhs] = gear numhhs = numhhs + 1 - SetEffect(gear, heResurrectable, true) + SetEffect(gear, heResurrectable, 1) elseif GetGearType(gear) == gtPiano then diff -r 3331b30e4ef1 -r 88fde28bbda6 share/hedgewars/Data/Scripts/Multiplayer/Continental_supplies.cfg --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/share/hedgewars/Data/Scripts/Multiplayer/Continental_supplies.cfg Sat Nov 03 00:34:35 2012 +0400 @@ -0,0 +1,2 @@ +Default +locked diff -r 3331b30e4ef1 -r 88fde28bbda6 share/hedgewars/Data/Scripts/Multiplayer/Continental_supplies.lua --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/share/hedgewars/Data/Scripts/Multiplayer/Continental_supplies.lua Sat Nov 03 00:34:35 2012 +0400 @@ -0,0 +1,1063 @@ +--[[ +Continental Supplies version 1.1a + +Copyright (C) 2012 Vatten + +Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +]] + +loadfile(GetDataPath() .. "Scripts/Locale.lua")() +loadfile(GetDataPath() .. "Scripts/Utils.lua")() +loadfile(GetDataPath() .. "Scripts/Tracker.lua")() + +function int_sqrt(num) + temp=num + while(temp*temp-div(temp,2)>num) + do + temp=div((temp+div(num,temp)),2) + end + return math.abs(temp) +end + +function norm(xx,yy) + return int_sqrt((xx^2)+(yy^2)) +end + +function positive(num) + if(num<0) + then + return -1 + else + return 1 + end +end + +local teams_ok = {} +local wepcode_teams={} +local swapweps=false + +--run when game starts on real +local australianSpecial=false +local africanSpecial=0 +local africaspecial2=0 +local asianSpecial=false +local samericanSpecial=false +local namericanSpecial=1 +local sniper_s_in_use=false +local kergulenSpecial=1 +local shotgun_s=false +local europe_s=0 + +local austmine=nil +local inpara=false +local asianflame=0 + +local temp_val=0 + +--för sabotage +local disallowattack=0 +local disallowleft=true +local disable_moving={} + +--skall bytas till för alla teams +local continent = {} + +local weapontexts = { +loc("Green lipstick bullet: [Is poisonous]"), +loc("Piñata bullet: [Contains some sweet candy!]"), +loc("Anno 1032: [The explosion will make a strong push ~ wide range, wont affect hogs close to the target]"), +loc("Dust storm: [Deals 20 damage to all enemies in the circle]"), +loc("Fire a mine: [Does what it says ~ Cant be dropped close to an enemy ~ 1 sec]"), +loc("Drop a bomb: [drop some heroic wind that will turn into a bomb on impact]"), +loc("Scream from a Walrus: [Deal 20 damage + 10% of your hogs health to all hogs around you and get half back]"), +loc("Disguise as a Rockhopper Penguin: [Swap place with a random enemy hog in the circle]"), +loc("Flare: [fire up some bombs depending on hogs depending on hogs in the circle"), +loc("Lonely Cries: [Rise the water if no hog is in the circle and deal 1 damage to all hogs]"), +loc("Hedgehog projectile: [fire your hog like a Sticky Bomb]"), +loc("Napalm rocket: [Fire a bomb with napalm!]"), +loc("Eagle Eye: [Blink to the impact ~ one shot]"), +loc("Medicine: [Fire some exploding medicine that will heal all hogs effected by the explosion]"), +loc("Sabotage: [Sabotage all hogs in the circle and deal ~10 dmg]") +} + +local weaponsets = +{ +{loc("North America"),"Area: 24,709,000 km2, Population: 528,720,588",loc("Special Weapons:").."|"..loc("Shotgun")..": "..weapontexts[13].."|"..loc("Sniper Rifle")..": "..weapontexts[1].."|"..loc("Sniper Rifle")..": "..weapontexts[2],amSniperRifle, +{{amShotgun,100},{amDEagle,100},{amLaserSight,4},{amSniperRifle,100},{amCake,1},{amAirAttack,2},{amSwitch,6}}}, + +{loc("South America"),"Area: 17,840,000 km2, Population: 387,489,196 ",loc("Special Weapons:").."|"..loc("GasBomb")..": "..weapontexts[3],amGasBomb, +{{amBirdy,5},{amHellishBomb,1},{amBee,100},{amWhip,100},{amGasBomb,100},{amFlamethrower,100},{amNapalm,1},{amExtraDamage,2}}}, + +{loc("Europe"),"Area: 10,180,000 km2, Population: 739,165,030",loc("Special Weapons:").."|"..loc("Molotov")..": "..weapontexts[14],amBazooka, +{{amBazooka,100},{amGrenade,100},{amMortar,100},{amClusterBomb,5},{amMolotov,5},{amVampiric,4},{amPiano,1},{amResurrector,2},{amJetpack,2}}}, + +{loc("Africa"),"Area: 30,221,532 km2, Population: 1,032,532,974",loc("Special Weapons:").."|"..loc("Seduction")..": "..weapontexts[4].."|"..loc("Sticky Mine")..": "..weapontexts[11].."|"..loc("Sticky Mine")..": "..weapontexts[12],amSMine, +{{amSMine,6},{amWatermelon,1},{amDrillStrike,1},{amExtraTime,2},{amDrill,100},{amLandGun,3},{amSeduction,100}}}, + +{loc("Asia"),"Area: 44,579,000 km2, Population: 3,879,000,000",loc("- Will refresh Parachute each turn.").."|"..loc("Special Weapons:").."|"..loc("Parachute")..": "..weapontexts[6],amRope, +{{amKamikaze,4},{amRope,100},{amFirePunch,100},{amParachute,1},{amKnife,4},{amDynamite,1}}}, + +{loc("Australia"),"Area: 8,468,300 km2, Population: 31,260,000",loc("Special Weapons:").."|"..loc("Baseballbat")..": "..weapontexts[5],amBaseballBat, +{{amBaseballBat,100},{amMine,100},{amLowGravity,6},{amBlowTorch,100},{amRCPlane,2},{amTardis,100}}}, + +{loc("Antarctica"),"Area: 14,000,000 km2, Population: ~1,000",loc("- Will refresh portalgun each turn."),amTeleport, +{{amSnowball,4},{amTeleport,2},{amInvulnerable,6},{amPickHammer,100},{amSineGun,100},{amGirder,4},{amPortalGun,1}}}, + +{loc("Kerguelen"),"Area: 1,100,000 km2, Population: ~70",loc("Special Weapons:").."|"..loc("Structure")..": "..weapontexts[7].."|"..loc("Structure")..": "..weapontexts[8].." ("..loc("Duration")..": 2)|"..loc("Structure")..": "..weapontexts[9].."|"..loc("Structure")..": "..weapontexts[10],amStructure, +{{amHammer,100},{amMineStrike,2},{amBallgun,1},{amStructure,100}}}, +--no ,{amIceGun,4} for 0.9.18 + +{loc("Zealandia"),"Area: 3,500,000 km2, Population: 4,650,000",loc("- Will Get 1-3 random weapons"),amInvulnerable, +{{amBazooka,1},{amBlowTorch,1},{amSwitch,1}}} +} + +--weapontype,ammo,?,duration,*times your choice,affect on random team (should be placed with 1,0,1,0,1 on the 6th option for better randomness) +local weapons_dmg = { + {amKamikaze, 0, 1, 0, 1, 0}, + {amSineGun, 0, 1, 0, 1, 1}, + {amBazooka, 0, 1, 0, 1, 0}, + {amMineStrike, 0, 1, 5, 1, 2}, + {amGrenade, 0, 1, 0, 1, 0}, + {amPiano, 0, 1, 5, 1, 1}, + {amClusterBomb, 0, 1, 0, 1, 0}, + {amBee, 0, 1, 0, 1, 0}, + {amShotgun, 0, 0, 0, 1, 1}, + {amMine, 0, 1, 0, 1, 0}, + {amSniperRifle, 0, 1, 0, 1, 1}, + {amDEagle, 0, 1, 0, 1, 0}, + {amDynamite, 0, 1, 5, 1, 1}, + {amFirePunch, 0, 1, 0, 1, 0}, + {amHellishBomb, 0, 1, 5, 1, 2}, + {amWhip, 0, 1, 0, 1, 0}, + {amNapalm, 0, 1, 5, 1, 2}, + {amPickHammer, 0, 1, 0, 1, 0}, + {amBaseballBat, 0, 1, 0, 1, 1}, + {amMortar, 0, 1, 0, 1, 0}, + {amCake, 0, 1, 4, 1, 2}, + {amSeduction, 0, 0, 0, 1, 0}, + {amWatermelon, 0, 1, 5, 1, 2}, + {amDrill, 0, 1, 0, 1, 0}, + {amBallgun, 0, 1, 5, 1, 2}, + {amMolotov, 0, 1, 0, 1, 0}, + {amBirdy, 0, 1, 1, 1, 1}, + {amBlowTorch, 0, 1, 0, 1, 0}, + {amRCPlane, 0, 1, 5, 1, 2}, + {amGasBomb, 0, 0, 0, 1, 0}, + {amAirAttack, 0, 1, 4, 1, 1}, + {amFlamethrower, 0, 1, 0, 1, 0}, + {amSMine, 0, 1, 0, 1, 1}, + {amHammer, 0, 1, 0, 1, 0}, + {amDrillStrike, 0, 1, 4, 1, 2}, + {amSnowball, 0, 1, 0, 1, 0}, + {amStructure, 0, 0, 0, 1, 1} +} +local weapons_supp = { + {amParachute, 0, 1, 0, 1, 0}, + {amGirder, 0, 1, 0, 1, 0}, + {amSwitch, 0, 1, 0, 1, 0}, + {amLowGravity, 0, 1, 0, 1, 0}, + {amExtraDamage, 0, 1, 2, 1, 0}, + {amRope, 0, 1, 0, 1, 1}, + {amInvulnerable, 0, 1, 0, 1, 0}, + {amExtraTime, 0, 1, 0, 1, 0}, + {amLaserSight, 0, 1, 0, 1, 0}, + {amVampiric, 0, 1, 0, 1, 0}, + {amJetpack, 0, 1, 0, 1, 1}, + {amPortalGun, 0, 1, 2, 1, 1}, + {amResurrector, 0, 1, 3, 1, 0}, + {amTeleport, 0, 1, 0, 1, 0}, + {amLandGun, 0, 1, 0, 1, 0}, + {amTardis, 0, 1, 0, 1, 0}, + {amIceGun, 0, 1, 0, 1, 0}, + {amKnife, 0, 1, 0, 1, 0} +} + +function validate_weapon(hog,weapon,amount) + if(MapHasBorder() == false or (MapHasBorder() == true and weapon ~= amAirAttack and weapon ~= amMineStrike and weapon ~= amNapalm and weapon ~= amDrillStrike and weapon ~= amPiano)) + then + AddAmmo(hog, weapon,amount) + end +end + +--reset all weapons for a team +function cleanweps(hog) + + local i=1 + --+1 for skip + while(i<=table.getn(weapons_supp)+table.getn(weapons_dmg)+1) + do + AddAmmo(hog,i,0) + i=i+1 + end + + AddAmmo(hog,amSkip,100) +end + +function load_weaponset(hog, num) + for v,w in pairs(weaponsets[num][5]) + do + validate_weapon(hog, w[1],w[2]) + end +end + +function load_continent_selection(hog) + for v,w in pairs(weaponsets) + do + validate_weapon(hog, weaponsets[v][4],1) + end + AddAmmo(hog,amSwitch) --random continent +end + +function show_continent_info(continent,time) + local ns=false + if(time==-1) + then + time=0 + ns=true + end + ShowMission(weaponsets[continent][1],weaponsets[continent][2],weaponsets[continent][3], -weaponsets[continent][4], time) + if(ns) + then + HideMission() + end +end + +function visual_gear_explosion(range,xpos,ypos,gear1,gear2) + local degr=0 + local lap=30 + while(lapTotalRounds) + do + if(random_weapon>=table.getn(weapons_dmg)) + then + random_weapon=0 + end + random_weapon = random_weapon+1 + end + validate_weapon(hog, weapons_dmg[random_weapon][1],1) + rand_weaponset_power=weapons_dmg[random_weapon][6] + old_rand_weap = random_weapon + + if(rand_weaponset_power <2) + then + random_weapon = GetRandom(table.getn(weapons_supp))+1 + while(weapons_supp[random_weapon][4]>TotalRounds or rand_weaponset_power+weapons_supp[random_weapon][6]>2) + do + if(random_weapon>=table.getn(weapons_supp)) + then + random_weapon=0 + end + random_weapon = random_weapon+1 + end + validate_weapon(hog, weapons_supp[random_weapon][1],1) + rand_weaponset_power=rand_weaponset_power+weapons_supp[random_weapon][6] + end + --check again if the power is enough + if(rand_weaponset_power <1) + then + random_weapon = GetRandom(table.getn(weapons_dmg))+1 + while(weapons_dmg[random_weapon][4]>TotalRounds or old_rand_weap == random_weapon or weapons_dmg[random_weapon][6]>0) + do + if(random_weapon>=table.getn(weapons_dmg)) + then + random_weapon=0 + end + random_weapon = random_weapon+1 + end + validate_weapon(hog, weapons_dmg[random_weapon][1],1) + end + + setTeamValue(GetHogTeamName(hog), "rand-done-turn", true) + + if(GetHogTeamName(hog)==GetHogTeamName(CurrentHedgehog)) + then + temp_val=false + end + end + end +end + + +function setweapons(skipafter) + + cleanweps(CurrentHedgehog) + load_weaponset(CurrentHedgehog,continent[GetHogTeamName(CurrentHedgehog)]) + if(skipafter==true) + then + ParseCommand("setweap " .. string.char(amSkip)) + end + + show_continent_info(continent[GetHogTeamName(CurrentHedgehog)],0) +end + +function show_damage_tag(hog,damage) + healthtag=AddVisualGear(GetX(hog), GetY(hog), vgtHealthTag, damage, false) + v1, v2, v3, v4, v5, v6, v7, v8, v9, v10 = GetVisualGearValues(healthtag) + SetVisualGearValues(healthtag, v1, v2, v3, v4, v5, v6, v7, v8, v9, GetClanColor(GetHogClan(hog))) +end + +function fire_gear(hedgehog,geartype,vx,vy,timer) + return AddGear(div((GetGearRadius(hedgehog)*2*vx),norm(vx,vy))+GetX(hedgehog), div((GetGearRadius(hedgehog)*2*vy),norm(vx,vy))+GetY(hedgehog), geartype, 0, vx, vy, timer) +end + +--==========================run throw all hog/gear weapons ========================== +function weapon_aust_check(hog) + if(GetGearType(hog) == gtHedgehog) + then + if(gearIsInCircle(hog,GetX(CurrentHedgehog), GetY(CurrentHedgehog), 50, false)==true and hog ~= CurrentHedgehog) + then + temp_val=1 + end + end +end + +function weapon_duststorm(hog) + if(GetGearType(hog) == gtHedgehog) + then + local dmg=20 + if(gearIsInCircle(hog,GetX(CurrentHedgehog), GetY(CurrentHedgehog), 250, false)==true and GetHogClan(hog) ~= GetHogClan(CurrentHedgehog)) + then + if(GetHealth(hog) > dmg) + then + SetHealth(hog, GetHealth(hog)-dmg) + else + SetHealth(hog, 0) + end + show_damage_tag(hog,dmg) + end + end +end + +function weapon_scream_walrus(hog) + if(GetGearType(hog) == gtHedgehog) + then + if(gearIsInCircle(hog,GetX(CurrentHedgehog), GetY(CurrentHedgehog), 120, false)==true and GetHogClan(hog) ~= GetHogClan(CurrentHedgehog)) + then + if(GetHealth(hog)>(20+GetHealth(CurrentHedgehog)*0.1)) + then + SetHealth(hog, GetHealth(hog)-(20+GetHealth(CurrentHedgehog)*0.1)) + temp_val=temp_val+10+GetHealth(CurrentHedgehog)*0.05 + else + SetHealth(hog, 0) + temp_val=temp_val+(GetHealth(hog)*0.5)+(GetHealth(CurrentHedgehog)*0.05) + end + show_damage_tag(hog,(20+GetHealth(CurrentHedgehog)*0.1)) + AddVisualGear(GetX(hog), GetY(hog), vgtExplosion, 0, false) + AddVisualGear(GetX(CurrentHedgehog), GetY(CurrentHedgehog), vgtSmokeWhite, 0, false) + end + end +end + +function weapon_swap_kerg(hog) + if(GetGearType(hog) == gtHedgehog) + then + if(kergulenSpecial ~= -1 and GetHogClan(hog) ~= GetHogClan(CurrentHedgehog) and gearIsInCircle(hog,GetX(CurrentHedgehog), GetY(CurrentHedgehog), 450, false)) + then + local thisX=GetX(CurrentHedgehog) + local thisY=GetY(CurrentHedgehog) + SetGearPosition(CurrentHedgehog, GetX(hog), GetY(hog)) + SetGearPosition(hog, thisX, thisY) + kergulenSpecial=-1 + end + end +end + +function weapon_flare(hog) + if(GetGearType(hog) == gtHedgehog) + then + if(GetHogClan(hog) ~= GetHogClan(CurrentHedgehog) and gearIsInCircle(hog,GetX(CurrentHedgehog), GetY(CurrentHedgehog), 45, false)) + then + if(GetX(hog)<=GetX(CurrentHedgehog)) + then + dirker=1 + else + dirker=-1 + end + AddVisualGear(GetX(hog), GetY(hog), vgtFire, 0, false) + SetGearPosition(CurrentHedgehog, GetX(CurrentHedgehog), GetY(CurrentHedgehog)-5) + SetGearVelocity(CurrentHedgehog, 100000*dirker, -300000) + AddGear(GetX(CurrentHedgehog), GetY(CurrentHedgehog)-20, gtCluster, 0, -10000*dirker, -1000000, 35) + PlaySound(sndHellishImpact2) + end + end +end + +function weapon_sabotage(hog) + if(GetGearType(hog) == gtHedgehog) + then + if(GetHogClan(hog) ~= GetHogClan(CurrentHedgehog) and gearIsInCircle(hog,GetX(CurrentHedgehog), GetY(CurrentHedgehog), 100, false)) + then + disable_moving[hog]=true + AddGear(GetX(hog), GetY(hog), gtCluster, 0, 0, 0, 10) + PlaySound(sndNooo,hog) + end + end +end + +function weapon_anno_south(hog) + local power_radius_outer=250 + local power_radius_inner=40 + local power_sa=500000 + if(gearIsInCircle(hog,GetX(temp_val), GetY(temp_val), power_radius_outer, false) and gearIsInCircle(hog,GetX(temp_val), GetY(temp_val), power_radius_inner, false)==false) + then + if(hog == CurrentHedgehog) + then + SetState(CurrentHedgehog, gstMoving) + end + SetGearPosition(hog, GetX(hog),GetY(hog)-3) + SetGearVelocity(hog, div((power_radius_outer-norm(math.abs(GetX(hog)-GetX(temp_val)),math.abs(GetY(hog)-GetY(temp_val))))*power_sa*positive(GetX(hog)-GetX(temp_val)),power_radius_outer), div((power_radius_outer-norm(math.abs(GetX(hog)-GetX(temp_val)),math.abs(GetY(hog)-GetY(temp_val))))*power_sa*positive(GetY(hog)-GetY(temp_val)),power_radius_outer)) + end +end + +function weapon_cries_a(hog) + if(GetGearType(hog) == gtHedgehog) + then + if(GetHogClan(hog) ~= GetHogClan(CurrentHedgehog) and gearIsInCircle(hog,GetX(CurrentHedgehog), GetY(CurrentHedgehog), 500, false)) + then + kergulenSpecial=-1 + end + end +end + +function weapon_cries_b(hog) + if(GetGearType(hog) == gtHedgehog) + then + if(GetHogClan(hog) ~= GetHogClan(CurrentHedgehog)) + then + SetHealth(hog, GetHealth(hog)-1) + show_damage_tag(hog,1) + AddVisualGear(GetX(hog), GetY(hog)-30, vgtEvilTrace, 0, false) + end + end +end + +function weapon_lipstick(hog) + if(GetGearType(hog) == gtHedgehog) + then + if(gearIsInCircle(temp_val,GetX(hog), GetY(hog), 20, false)) + then + SetEffect(hog, hePoisoned, 1) + PlaySound(sndBump) + end + end +end + +function weapon_health(hog) + if(GetGearType(hog) == gtHedgehog) + then + if(gearIsInCircle(temp_val,GetX(hog), GetY(hog), 100, false)) + then + SetHealth(hog, GetHealth(hog)+25) + SetEffect(hog, hePoisoned, false) + end + end +end +--============================================================================ + +--set each weapons settings +function onAmmoStoreInit() + + SetAmmo(amSkip, 9, 0, 0, 0) + + for v,w in pairs(weapons_dmg) + do + SetAmmo(w[1], w[2], w[3], w[4], w[5]) + end + + for v,w in pairs(weapons_supp) + do + SetAmmo(w[1], w[2], w[3], w[4], w[5]) + end +end + +function onGameStart() + --trackTeams() + + ShowMission(loc("Continental supplies").." 1.1a",loc("Let a Continent provide your weapons!"), + loc("- Per team weapons|- 9 weaponschemes|- Unique new weapons| |Select continent first round with the Weapon Menu or by ([switch/tab]=Increase,[presice/left shift]=Decrease) on Skip|Some weapons have a second option. Find them with [switch/tab]"), -amLowGravity, 0) +end + +--what happen when a turn starts +function onNewTurn() + + australianSpecial=true + asianSpecial=false + austmine=nil + africanSpecial=0 + samericanSpecial=false + africaspecial2=0 + kergulenSpecial=1 + namericanSpecial=1 + asianflame=0 + shotgun_s=false + sniper_s_in_use=false + europe_s=0 + + temp_val=0 + + disallowattack=0 + disallowleft=true + --when all hogs are "placed" + + if(GetCurAmmoType()~=amTeleport) + then + --will run once when the game really starts (after placing hogs and so on + if(teams_ok[GetHogTeamName(CurrentHedgehog)] == nil) + then + disable_moving[CurrentHedgehog]=false + AddCaption("["..loc("Select continent!").."]") + load_continent_selection(CurrentHedgehog) + continent[GetHogTeamName(CurrentHedgehog)]=0 + swapweps=true + teams_ok[GetHogTeamName(CurrentHedgehog)] = 2 + else + swapweps=false + if(continent[GetHogTeamName(CurrentHedgehog)]==0) + then + continent[GetHogTeamName(CurrentHedgehog)]=GetRandom(table.getn(weaponsets))+1 + setweapons(false) + end + show_continent_info(continent[GetHogTeamName(CurrentHedgehog)],-1) + end + end + + if(continent[GetHogTeamName(CurrentHedgehog)]==7) + then + AddAmmo(CurrentHedgehog,amPortalGun,0) + AddAmmo(CurrentHedgehog,amPortalGun,1) + elseif(continent[GetHogTeamName(CurrentHedgehog)]==5) + then + AddAmmo(CurrentHedgehog,amParachute,0) + AddAmmo(CurrentHedgehog,amParachute,1) + end + + temp_val=true + runOnGears(get_random_weapon) + + if(temp_val==true and continent[GetHogTeamName(CurrentHedgehog)]==9 and getTeamValue(GetHogTeamName(CurrentHedgehog), "rand-done-turn")==true) + then + setTeamValue(GetHogTeamName(CurrentHedgehog), "rand-done-turn", false) + end + +end + +--what happens when you press "tab" (common button) +function onSwitch() + + --place mine (australia) + if(GetCurAmmoType() == amBaseballBat and australianSpecial==true) + then + temp_val=0 + runOnGears(weapon_aust_check) + + if(temp_val==0) + then + austmine=AddGear(GetX(CurrentHedgehog), GetY(CurrentHedgehog)+5, gtMine, 0, 0, 0, 0) + SetHealth(austmine, 100) + SetTimer(austmine, 1000) + australianSpecial=false + swapweps=false + else + PlaySound(sndDenied) + end + end + + --Asian special + if(asianSpecial==false and inpara~=false) + then + asiabomb=AddGear(GetX(CurrentHedgehog), GetY(CurrentHedgehog)+3, gtSnowball, 0, 0, 0, 0) + SetGearMessage(asiabomb, 1) + asianSpecial=true + swapweps=false + end + + --africa + if(GetCurAmmoType() == amSeduction) + then + if(africanSpecial==0) + then + africanSpecial = 1 + AddCaption(weapontexts[4]) + else + africanSpecial = 0 + AddCaption(loc("NORMAL")) + end + end + --south america + if(GetCurAmmoType() == amGasBomb) + then + if(samericanSpecial==false) + then + samericanSpecial = true + AddCaption(weapontexts[3]) + else + samericanSpecial = false + AddCaption(loc("NORMAL")) + end + end + --africa + if(GetCurAmmoType() == amSMine) + then + if(africaspecial2==0) + then + africaspecial2 = 1 + AddCaption(weapontexts[11]) + elseif(africaspecial2 == 1) + then + africaspecial2 = 2 + AddCaption(weapontexts[12]) + elseif(africaspecial2 == 2) + then + africaspecial2 = 0 + AddCaption(loc("NORMAL")) + end + end + + --north america + if(GetCurAmmoType() == amSniperRifle and sniper_s_in_use==false) + then + if(namericanSpecial==3) + then + namericanSpecial = 1 + AddCaption(loc("NORMAL")) + elseif(namericanSpecial==1) + then + namericanSpecial = 2 + AddCaption("#"..weapontexts[1]) + elseif(namericanSpecial==2) + then + namericanSpecial = 3 + AddCaption("##"..weapontexts[2]) + end + end + + if(GetCurAmmoType() == amShotgun and shotgun_s~=nil) + then + if(shotgun_s==false) + then + shotgun_s = true + AddCaption(weapontexts[13]) + else + shotgun_s = false + AddCaption(loc("NORMAL")) + end + end + + if(GetCurAmmoType() == amMolotov) + then + if(europe_s==0) + then + europe_s = 1 + AddCaption(weapontexts[14]) + else + europe_s = 0 + AddCaption(loc("NORMAL")) + end + end + + if(swapweps==true and GetCurAmmoType() == amSkip) + then + continent[GetHogTeamName(CurrentHedgehog)]=continent[GetHogTeamName(CurrentHedgehog)]+1 + + if(continent[GetHogTeamName(CurrentHedgehog)]> table.getn(weaponsets)) + then + continent[GetHogTeamName(CurrentHedgehog)]=1 + end + setweapons(true) + end + + if(GetCurAmmoType() == amStructure) + then + if(kergulenSpecial==5) + then + kergulenSpecial = 1 + AddCaption("#"..weapontexts[7]) + elseif(kergulenSpecial==1 and TotalRounds>=1) + then + kergulenSpecial = 2 + AddCaption("##"..weapontexts[8]) + elseif(kergulenSpecial==2 or (kergulenSpecial==1 and TotalRounds<1)) + then + kergulenSpecial = 3 + AddCaption("###"..weapontexts[9]) + elseif(kergulenSpecial==3) + then + kergulenSpecial = 4 + AddCaption("####"..weapontexts[10]) + elseif(kergulenSpecial==4) + then + kergulenSpecial = 5 + AddCaption("#####"..weapontexts[15]) + end + end +end + +function onPrecise() + if(swapweps==true and GetCurAmmoType() == amSkip) + then + continent[GetHogTeamName(CurrentHedgehog)]=continent[GetHogTeamName(CurrentHedgehog)]-1 + + if(continent[GetHogTeamName(CurrentHedgehog)]<=0) + then + continent[GetHogTeamName(CurrentHedgehog)]=9 + end + setweapons(true) + end +end + +function onSlot() + if(continent[GetHogTeamName(CurrentHedgehog)]==0) then + ParseCommand("setweap " .. string.char(amSkip)) + end +end + +function onGameTick20() + + if(teams_ok[GetHogTeamName(CurrentHedgehog)] == 2) + then + if(GetCurAmmoType()~=amTeleport and swapweps==true and TurnTime-TurnTimeLeft>=100) + then + teams_ok[GetHogTeamName(CurrentHedgehog)] = true + ParseCommand("setweap " .. string.char(amSkip)) + end + end + + if(continent[GetHogTeamName(CurrentHedgehog)]==0) + then + if(GetCurAmmoType()==amSniperRifle) then + continent[GetHogTeamName(CurrentHedgehog)]=1 + setweapons(false) + elseif(GetCurAmmoType()==amGasBomb) then + continent[GetHogTeamName(CurrentHedgehog)]=2 + setweapons(false) + elseif(GetCurAmmoType()==amBazooka) then + continent[GetHogTeamName(CurrentHedgehog)]=3 + setweapons(false) + elseif(GetCurAmmoType()==amSMine) then + continent[GetHogTeamName(CurrentHedgehog)]=4 + setweapons(false) + elseif(GetCurAmmoType()==amRope) then + continent[GetHogTeamName(CurrentHedgehog)]=5 + setweapons(false) + elseif(GetCurAmmoType()==amBaseballBat) then + continent[GetHogTeamName(CurrentHedgehog)]=6 + setweapons(false) + elseif(GetCurAmmoType()==amTeleport) then + continent[GetHogTeamName(CurrentHedgehog)]=7 + setweapons(false) + elseif(GetCurAmmoType()==amStructure) then + continent[GetHogTeamName(CurrentHedgehog)]=8 + setweapons(false) + elseif(GetCurAmmoType()==amInvulnerable) then + continent[GetHogTeamName(CurrentHedgehog)]=9 + setweapons(false) + elseif(GetCurAmmoType()==amSwitch) then + continent[GetHogTeamName(CurrentHedgehog)]=GetRandom(table.getn(weaponsets))+1 + setweapons(false) + end + end + + if(kergulenSpecial ~= 0 and GetCurAmmoType() == amStructure) + then + if(kergulenSpecial == 1) + then + if(visualcircle==nil) + then + visualcircle=AddVisualGear(GetX(CurrentHedgehog), GetY(CurrentHedgehog), vgtCircle, 120, false) + end + SetVisualGearValues(visualcircle, GetX(CurrentHedgehog), GetY(CurrentHedgehog),20, 200, 0, 0, 100, 120, 4, 0xff0000ee) + elseif(kergulenSpecial == 2) + then + if(visualcircle==nil) + then + visualcircle=AddVisualGear(GetX(CurrentHedgehog), GetY(CurrentHedgehog), vgtCircle, 450, false) + end + SetVisualGearValues(visualcircle, GetX(CurrentHedgehog), GetY(CurrentHedgehog),20, 200, 0, 0, 100, 450, 3, 0xffff00ee) + elseif(kergulenSpecial == 3) + then + if(visualcircle==nil) + then + visualcircle=AddVisualGear(GetX(CurrentHedgehog), GetY(CurrentHedgehog), vgtCircle, 45, false) + end + SetVisualGearValues(visualcircle, GetX(CurrentHedgehog), GetY(CurrentHedgehog),20, 200, 0, 0, 100, 45, 6, 0x00ff00ee) + elseif(kergulenSpecial == 4) + then + if(visualcircle==nil) + then + visualcircle=AddVisualGear(GetX(CurrentHedgehog), GetY(CurrentHedgehog), vgtCircle, 500, false) + end + SetVisualGearValues(visualcircle, GetX(CurrentHedgehog), GetY(CurrentHedgehog),20, 200, 0, 0, 100, 500, 1, 0x0000ffee) + elseif(kergulenSpecial == 5) + then + if(visualcircle==nil) + then + visualcircle=AddVisualGear(GetX(CurrentHedgehog), GetY(CurrentHedgehog), vgtCircle, 100, false) + end + SetVisualGearValues(visualcircle, GetX(CurrentHedgehog), GetY(CurrentHedgehog),20, 200, 0, 0, 100, 100, 10, 0xeeeeeeee) + end + + elseif(visualcircle~=nil) + then + DeleteVisualGear(visualcircle) + visualcircle=nil + end + + if(disable_moving[CurrentHedgehog]==true) + then + + if(TurnTimeLeft<=150) + then + disable_moving[CurrentHedgehog]=false + SetHogLevel(CurrentHedgehog,0) + elseif(disallowattack>=15 and disallowattack >= 20) + then + disallowattack=0 + SetHogLevel(CurrentHedgehog,1) + AddVisualGear(GetX(CurrentHedgehog), GetY(CurrentHedgehog), vgtSmokeWhite, 0, false) + elseif(GetHogLevel(CurrentHedgehog)==1) + then + SetHogLevel(CurrentHedgehog,0) + else + disallowattack=disallowattack+1 + end + + end + +end + +--if you used hogswitch or any similar weapon, dont enable any weaponchange +function onAttack() + swapweps=false + local around=false + + --african special + if(africanSpecial == 1 and GetCurAmmoType() == amSeduction) + then + SetState(CurrentHedgehog, gstAttacked) + + runOnGears(weapon_duststorm) + + --visual stuff + visual_gear_explosion(250,GetX(CurrentHedgehog), GetY(CurrentHedgehog),vgtSmoke,vgtSmokeWhite) + PlaySound(sndParachute) + end + + --Kerguelen specials + if(GetCurAmmoType() == amStructure) + then + SetState(CurrentHedgehog, gstAttacked) + if(kergulenSpecial == 1) + then + temp_val=0 + runOnGears(weapon_scream_walrus) + SetHealth(CurrentHedgehog, GetHealth(CurrentHedgehog)+temp_val) + PlaySound(sndHellish) + + elseif(kergulenSpecial == 2 and TotalRounds>=1) + then + runOnGears(weapon_swap_kerg) + PlaySound(sndPiano3) + elseif(kergulenSpecial == 3) + then + runOnGears(weapon_flare) + PlaySound(sndThrowRelease) + AddVisualGear(GetX(CurrentHedgehog), GetY(CurrentHedgehog), vgtSmokeWhite, 0, false) + AddGear(GetX(CurrentHedgehog), GetY(CurrentHedgehog)-20, gtCluster, 0, 0, -1000000, 30) + + elseif(kergulenSpecial == 4) + then + runOnGears(weapon_cries_a) + if(kergulenSpecial~=-1) + then + AddGear(0, 0, gtWaterUp, 0, 0,0,0) + PlaySound(sndWarp) + PlaySound(sndMolotov) + + runOnGears(weapon_cries_b) + else + HogSay(CurrentHedgehog, loc("Hogs in sight!"), SAY_SAY) + end + elseif(kergulenSpecial == 5) + then + runOnGears(weapon_sabotage) + end + DeleteVisualGear(visualcircle) + visualcircle=nil + end + + --Australian special + if(GetGearType(austmine) == gtMine and austmine ~= nil) + then + temp_val=0 + runOnGears(weapon_aust_check) + + if(gearIsInCircle(austmine,GetX(CurrentHedgehog), GetY(CurrentHedgehog), 30, false)==false or temp_val==1) + then + AddVisualGear(GetX(austmine), GetY(austmine), vgtDust, 0, false) + DeleteGear(austmine) + PlaySound(sndDenied) + end + + austmine=nil + end + + if(disable_moving[CurrentHedgehog]==true) + then + disable_moving[CurrentHedgehog]=false + SetHogLevel(CurrentHedgehog,0) + end + + australianSpecial=false +end + +function onGearAdd(gearUid) + swapweps=false + + if(GetGearType(gearUid) == gtHedgehog or GetGearType(gearUid) == gtMine or GetGearType(gearUid) == gtExplosives) + then + trackGear(gearUid) + end + + --remove gasclouds on gasbombspecial + if(GetGearType(gearUid)==gtPoisonCloud and samericanSpecial == true) + then + DeleteGear(gearUid) + + elseif(GetGearType(gearUid)==gtSMine) + then + vx,vy=GetGearVelocity(gearUid) + if(africaspecial2 == 1) + then + SetState(CurrentHedgehog, gstHHDriven+gstMoving) + SetGearPosition(CurrentHedgehog, GetX(CurrentHedgehog),GetY(CurrentHedgehog)-3) + SetGearVelocity(CurrentHedgehog, vx, vy) + DeleteGear(gearUid) + + elseif(africaspecial2 == 2) + then + fire_gear(CurrentHedgehog,gtNapalmBomb, vx, vy, 0) + DeleteGear(gearUid) + end + + elseif(GetGearType(gearUid)==gtSniperRifleShot) + then + sniper_s_in_use=true + if(namericanSpecial~=1) + then + SetHealth(gearUid, 1) + end + + elseif(GetGearType(gearUid)==gtShotgunShot) + then + if(shotgun_s==true) + then + AddVisualGear(GetX(gearUid), GetY(gearUid), vgtFeather, 0, false) + AddVisualGear(GetX(gearUid), GetY(gearUid), vgtFeather, 0, false) + AddVisualGear(GetX(gearUid), GetY(gearUid), vgtFeather, 0, false) + PlaySound(sndBirdyLay) + else + shotgun_s=nil + end + + elseif(GetGearType(gearUid)==gtMolotov and europe_s==1) + then + vx,vy=GetGearVelocity(gearUid) + e_health=fire_gear(CurrentHedgehog,gtCluster, vx, vy, 1) + SetGearMessage(e_health, 2) + DeleteGear(gearUid) + + elseif(GetGearType(gearUid)==gtParachute) + then + inpara=gearUid + end +end + +function onGearDelete(gearUid) + + if(GetGearType(gearUid) == gtHedgehog or GetGearType(gearUid) == gtMine or GetGearType(gearUid) == gtExplosives) + then + trackDeletion(gearUid) + end + --north american specials + if(GetGearType(gearUid)==gtSniperRifleShot ) + then + sniper_s_in_use=false + if(namericanSpecial==2) + then + temp_val=gearUid + runOnGears(weapon_lipstick) + + elseif(namericanSpecial==3) + then + AddVisualGear(GetX(gearUid), GetY(gearUid), vgtExplosion, 0, false) + + pinata=AddGear(GetX(gearUid), GetY(gearUid), gtCluster, 0, 0, 0, 5) + SetGearMessage(pinata,1) + end + + elseif(GetGearType(gearUid)==gtCluster and GetGearMessage(gearUid)==1 and namericanSpecial==3) + then + AddGear(GetX(gearUid), GetY(gearUid), gtCluster, 0, 0, 0, 20) + + elseif(GetGearType(gearUid)==gtShotgunShot and shotgun_s==true) + then + SetState(CurrentHedgehog, gstMoving) + SetGearPosition(CurrentHedgehog, GetX(gearUid), GetY(gearUid)+7) + PlaySound(sndWarp) + + --south american special + elseif(GetGearType(gearUid)==gtGasBomb and samericanSpecial == true) + then + temp_val=gearUid + runOnGears(weapon_anno_south) + AddVisualGear(GetX(gearUid), GetY(gearUid), vgtExplosion, 0, false) + + elseif(GetGearType(gearUid)==gtSnowball and GetGearMessage(gearUid)==1) + then + AddGear(GetX(gearUid), GetY(gearUid)+3, gtCluster, 0, 0, 0, 22) + + elseif(GetGearType(gearUid)==gtCluster and GetGearMessage(gearUid)==2) + then + temp_val=gearUid + runOnGears(weapon_health) + visual_gear_explosion(100,GetX(gearUid), GetY(gearUid),vgtSmokeWhite,vgtSmokeWhite) + AddVisualGear(GetX(gearUid), GetY(gearUid), vgtExplosion, 0, false) + PlaySound(sndGraveImpact) + + elseif(GetGearType(gearUid)==gtParachute) + then + inpara=false + end +end \ No newline at end of file diff -r 3331b30e4ef1 -r 88fde28bbda6 share/hedgewars/Data/Scripts/Multiplayer/Highlander.lua --- a/share/hedgewars/Data/Scripts/Multiplayer/Highlander.lua Sun Oct 21 01:28:33 2012 +0400 +++ b/share/hedgewars/Data/Scripts/Multiplayer/Highlander.lua Sat Nov 03 00:34:35 2012 +0400 @@ -175,9 +175,9 @@ end -function onNewTurn() +--function onNewTurn() -- -end +--end function onGameTick20() diff -r 3331b30e4ef1 -r 88fde28bbda6 share/hedgewars/Data/Scripts/Multiplayer/Mutant.lua --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/share/hedgewars/Data/Scripts/Multiplayer/Mutant.lua Sat Nov 03 00:34:35 2012 +0400 @@ -0,0 +1,614 @@ +local MUTANT_VERSION = "v0.9.4" + +--[[ ___ ___ + ( ) ( ) +___ .-. .-. ___ ___ | |_ .---. ___ .-. | |_ +( ) ' ( )( ( __) / .-, ( ) ( __) +| .-. .-. | | | | | | (__) ; || .-. .| | +| | | | | | | | | | | ___ .'` || | | || | ___ +| | | | | | | | | | |( / .'| || | | || |( ) +| | | | | | | | | | | | | / | || | | || | | | +| | | | | | | ; ' | ' | ; | ; || | | || ' | | +| | | | | ' `-' / ' `-' ' `-' || | | |' `-' ; +(___)(___)(___'.__.' `.__.`.__.'_(___)(___)`.__. + + +---- IMPORTANT! +---- +---- You should save (press Ctrl+S) this script to: +---- Program Files\Hedgewars\share\hedgewars\Data\Scripts\Multiplayer\Mutant.lua +---- or (on Linux): +---- ~/.hedgewars/Data/Scripts/Multiplayer/Mutant.lua +---- +---- (or wherever scripts like Highlander.lua, Racer.lua are on your system) +---- +---- Also, if you didn't have Mutant script yet, you need to restart Hedgewars for it to find the script file. +---- + + +---- GAME RULES +---- +---- Recommended settings: +---- * one hedgehog per team +---- * 'Small' one-island map +---- +---- First one to kill anyone becomes Mutant. Mutant has super-weapons +---- and a lot of health, which however depletes if he doesn't frag fast. +---- Goal of Mutant is to use his weapons to hold his status for as long +---- as he can. +---- Goal of others is to hunt the Mutant down. The one who kills Mutant, +---- becomes Mutant himself. +---- The player with least points (or most deaths) is Bottom Feeder. He +---- can gain points by killing anyone. Other normal players only get points +---- for killing Mutant. +---- +---- Points: +---- +2 for becoming a Mutant +---- +1 to a Mutant for killing anyone +---- +1 to a Bottom Feeder for killing anyone +---- -1 to anyone for a suicide +---- other kills don't give you points. +---- + +--]] + +loadfile(GetDataPath() .. "Scripts/Locale.lua")() +loadfile(GetDataPath() .. "Scripts/Tracker.lua")() + +--[[ + MUTANT SCRIPT + + To Do: -Clean-up this fucking piece of code + -Debug + -Find a girlfriend + -Fix Sheepluva's hat +[p] + -Cookies + +-----------------------]] + +local hhs = {} +local numhhs = 0 + +local gameOver=false + +local mutant = nil +local mutant_base_health = 200 +local mutant_base_disease = 25 +local disease_timer = 2000 + +local kill_reward = nil +local mt_hurt=false + +local killsCounter = 0 + +local team_fire_punishment = 3 +local mutant_kill_reward = 2 + +local hh_weapons = { amBazooka, amGrenade, amShotgun, amMine} + +local mt_weapons = {amWatermelon, amHellishBomb, amBallgun, amRCPlane, amTeleport} + +local disease=0 +local timer=0 + +local winScore = 15 +local hogsLimit = 1 + +local teams = {} + +local circles = {} +local circleFrame = -1 + +function onGameInit() + TurnTime = 20000 + WaterRise = 0 + GameFlags = GameFlags + gfResetWeps + gfPerHogAmmo + HealthCaseProb=0 + HealthCaseAmount=0 + MinesTime=1000 + CaseFreq = 2 + +end + + +function limitHogs(gear) + cnthhs = cnthhs + 1 + if cnthhs > 1 then + hogLimitHit = true + SetEffect(gear, heResurrectable, false) + --SetHealth(gear, 0) + SetGearPosition(gear, -100,LAND_HEIGHT) + end +end + +function onGameStart() + trackTeams() + teamScan() + runOnHogs(saveStuff) + --local str = "/say " .. MUTANT_VERSION + --ParseCommand(str) + + hogLimitHit = false + for i=0 , TeamsCount - 1 do + cnthhs = 0 + runOnHogsInTeam(limitHogs, teams[i]) + end + if hogLimitHit then + AddCaption(loc("ONE HOG PER TEAM! KILLING EXCESS HEDGES")) + end +end + + + +function giveWeapons(gear) + + if gear == mutant then + AddAmmo(gear, amRope) + for i=1, #mt_weapons do + AddAmmo(gear, mt_weapons[i]) + end + + else + for i=1, #hh_weapons do + AddAmmo(gear,hh_weapons[i]) + end + end +end + +function onAmmoStoreInit() + + SetAmmo(amSkip, 9, 0, 0, 0) + SetAmmo(amRope,0,1,0,5) + SetAmmo(amSnowball,0,1,0,1) + + for i=1, #hh_weapons do + SetAmmo(hh_weapons[i], 0, 0, 0, 1) + end + + for i=1, #mt_weapons do + SetAmmo(mt_weapons[i], 0, 3, 0, 1) + end + +end + +function drawCircles() + for i = 0, #hhs do + if circles[hhs[i]] ~= nil then + DeleteVisualGear(circles[hhs[i]]) + circles[hhs[i]] = nil + end + + if hhs[i] ~= CurrentHedgehog then + if mutant == nil then + circles[hhs[i]] = AddVisualGear(0, 0, vgtCircle, 0, false) + SetVisualGearValues(circles[hhs[i]], 0, 0, 0, 0, 0, 0, 0, 22, 5, 0xff000080) + elseif CurrentHedgehog == mutant then + circles[hhs[i]] = AddVisualGear(0, 0, vgtCircle, 0, false) + SetVisualGearValues(circles[hhs[i]], 0, 0, 0, 0, 0, 0, 0, 22, 3, 0xaa000070) + elseif getGearValue(CurrentHedgehog, "Feeder") and hhs[i] ~= mutant then + circles[hhs[i]] = AddVisualGear(0, 0, vgtCircle, 0, false) + SetVisualGearValues(circles[hhs[i]], 0, 0, 0, 0, 0, 0, 0, 22, 3, 0xaa000070) + elseif hhs[i] == mutant then + circles[hhs[i]] = AddVisualGear(0, 0, vgtCircle, 0, false) + SetVisualGearValues(circles[hhs[i]], 0, 0, 0, 0, 0, 0, 0, 22, 5, 0xff000080) + end + end + end + circleFrame = 0 +end + +function onNewTurn() + + trackTeams() + killsCounter = 0 + + if mutant == nil then + AddCaption( loc("FIRST BLOOD MUTATES") ) + end + + checkScore() + giveWeapons(CurrentHedgehog) + drawCircles() + kill_reward= numhhs*10 + + if CurrentHedgehog == mutant then + mt_hurt=true + disease= mutant_base_disease - numhhs + else + mt_hurt=false + end + + setGearValue(CurrentHedgehog, "Alive", true) + +end + +function countBodies() + if killsCounter == 2 then + AddCaption(loc("DOUBLE KILL")) + elseif killsCounter == 3 then + AddCaption(loc("MEGA KILL")) + PlaySound(sndRegret) + elseif killsCounter == 4 then + AddCaption(loc("ULTRA KILL")) + elseif killsCounter == 5 then + AddCaption(loc("MONSTER KILL")) + PlaySound(sndIllGetYou) + elseif killsCounter == 6 then + AddCaption(loc("LUDICROUS KILL")) + PlaySound(sndNutter) + elseif killsCounter == 7 then + AddCaption(loc("HOLY SHIT!")) + PlaySound(sndLaugh) + elseif killsCounter > 8 then + AddCaption(loc("FAG")) + end + +end + +function onGameTick() + + if circleFrame > -1 then + for i = 0, #hhs do + if circles[hhs[i]] ~= nil and hhs[i]~= nil then + hhx, hhy = GetGearPosition(hhs[i]) + X, Y, dX, dY, Angle, Frame, FrameTicks, State, Timer, Tint = GetVisualGearValues(circles[hhs[i]]) + SetVisualGearValues(circles[hhs[i]], hhx + 1, hhy - 3, 0, 0, 0, 0, 0, 40 - (circleFrame % 25), Timer, Tint) + end + end + + circleFrame = circleFrame + 0.06 + + if circleFrame >= 25 then + for i = 0, #hhs do + if circles[hhs[i]] ~= nil then + DeleteVisualGear(circles[hhs[i]]) + circles[hhs[i]] = nil + end + end + end + end + + if TurnTimeLeft==0 and mt_hurt then + mt_hurt = false + end + + if mt_hurt and mutant~=nil then + timer = timer + 1 + if timer > disease_timer then + timer = 0 + SetHealth(mutant, GetHealth(mutant)-disease ) + AddVisualGear(GetX(mutant), GetY(mutant)-5, vgtHealthTag, disease, true) + if GetHealth(mutant)<=0 then + SetHealth(mutant,0) + mt_hurt= false + setGearValue(mutant,"SelfDestruct",true) + TurnTimeLeft = 0 + end + end + end +end + +function saveStuff(gear) + setGearValue(gear,"Name",GetHogName(gear)) + setGearValue(gear,"Hat",GetHogHat(gear)) +end + +function armageddon(gear) + SetState(gear, gstLoser) + SetEffect(gear, heResurrectable, false) + SetHealth(gear, 0) +end + +function updateScore() +local showScore = "" + + for i=0, TeamsCount-1 do + if teams[i]~= nil then + + local curr_score = getTeamValue(teams[i], "Score") + showScore = showScore .. teams[i] .. ": " .. curr_score .. " (deaths: " .. getTeamValue(teams[i], "DeadHogs") .. ") " .. "|" + + end + end + + ShowMission(loc("Score"), + "-------", + showScore, 0, 200) + + HideMission() + +end + +function checkScore() +local showScore = "" +local lowest_score_team = nil +local min_score=nil +local winTeam = nil + +local only_low_score = true + + for i=0, TeamsCount-1 do + if teams[i]~=nil then + local curr_score = getTeamValue(teams[i], "Score") + + runOnHogsInTeam(removeFeeder, teams[i]) + + showScore = showScore .. teams[i] ..": " .. curr_score .. " (deaths: " .. getTeamValue(teams[i], "DeadHogs") .. ") " .. "|" + + if curr_score >= winScore then + gameOver = true + winTeam = teams[i] + end + + if min_score==nil then + min_score= curr_score + lowest_score_team = teams[i] + else + if curr_score <= min_score then + if curr_score == min_score then + if getTeamValue(teams[i], "DeadHogs") == getTeamValue(lowest_score_team, "DeadHogs") then + only_low_score = false + else + if getTeamValue(teams[i], "DeadHogs") > getTeamValue(lowest_score_team, "DeadHogs") then + lowest_score_team = teams[i] + end + only_low_score = true + end + + else + min_score= curr_score + lowest_score_team = teams[i] + only_low_score = true + end + end + end + end + end + + if gameOver then + TurnTimeLeft = 0 + for i=0, #teams do + if teams[i]~=winTeam then + runOnHogsInTeam(armageddon, teams[i]) + end + end + + ShowMission( loc("WINNER IS ") .. winTeam, + "~~~~~~~~~~~~~~~~~~~~~~~~~", + showScore, 0, 200) + else + + if only_low_score then + runOnHogsInTeam(setFeeder, lowest_score_team) + end + + ShowMission( loc("Score"), + loc("-------"), + showScore, 0, 200) + + end +end + +function backToNormal(gear) + + SetHogName(gear, getGearValue(gear,"Name")) + SetHogHat(gear, 'NoHat') + SetHogHat(gear, getGearValue(gear,"Hat")) + setGearValue(mutant,"SelfDestruct",false) + mt_hurt=false + mutant=nil +end + +function removeFeeder(gear) + + if gear~=nil then + setGearValue(gear,"Feeder",false) + if gear~= mutant then + SetHogName(gear, getGearValue(gear,"Name") ) + SetHogHat(gear, 'NoHat') + SetHogHat(gear, getGearValue(gear,"Hat")) + end + end +end + +function setFeeder(gear) + + if gear~= mutant and gear~= nil then + SetHogName(gear,"BOTTOM FEEDER") + SetHogHat(gear, 'poke_slowpoke') + setGearValue(gear,"Feeder", true) + end +end + +function setMutantStuff(gear) + mutant = gear + + SetHogName(gear,"MUTANT") + SetHogHat(gear,'WhySoSerious') + SetHealth(gear, ( mutant_base_health + numhhs*25) ) + SetEffect(gear, hePoisoned, 1) + setGearValue(mutant,"SelfDestruct",false) + setGearValue(gear, "Feeder", false) + + AddCaption(getGearValue(gear, "Name") .. loc(" HAS MUTATED" )) + + TurnTimeLeft=0 + + AddVisualGear(GetX(gear), GetY(gear), vgtSmokeRing, 0, false) + AddVisualGear(GetX(gear), GetY(gear), vgtSmokeRing, 0, false) + AddVisualGear(GetX(gear), GetY(gear), vgtSmokeRing, 0, false) + AddVisualGear(GetX(gear), GetY(gear), vgtSmokeRing, 0, false) + AddVisualGear(GetX(gear), GetY(gear), vgtSmokeRing, 0, false) + PlaySound(sndSuddenDeath) +end + +function teamScan() + + for i=0, TeamsCount-1 do --nil filling + teams[i]=nil + end + + for i=0, #hhs do + for j=0, TeamsCount-1 do + if teams[j] ==nil and hhs[i]~=nil then + teams[j] = GetHogTeamName(hhs[i]) + setTeamValue(teams[j],"Score",0) + setTeamValue(teams[j], "DeadHogs",0) + break + end + + if teams[j] == GetHogTeamName(hhs[i]) then + break + end + end + end + + ---***--- +end + + +function onGearDamage(gear, dmg) + +end + +function set_Mutant_and_Score(gear) + +local curr_team = GetHogTeamName(CurrentHedgehog) + + if gear == CurrentHedgehog then + if CurrentHedgehog == mutant then + PlaySound(sndHomerun) + if getGearValue(gear, "SelfDestruct")==false then + decreaseTeamValue(curr_team,"Score") + end + backToNormal(gear) + else + decreaseTeamValue(curr_team,"Score") + end + + else + if gear == mutant then + backToNormal(mutant) + if curr_team ~=GetHogTeamName(gear) then + if getGearValue(CurrentHedgehog, "Alive") then + setMutantStuff(CurrentHedgehog) + setTeamValue(curr_team,"Score",(getTeamValue(curr_team,"Score") + mutant_kill_reward)) + end + else + setTeamValue(curr_team,"Score",(getTeamValue(curr_team,"Score") - team_fire_punishment)) + end + else + if mutant==nil then + if curr_team ~=GetHogTeamName(gear) then + if getGearValue(CurrentHedgehog, "Alive") then + setMutantStuff(CurrentHedgehog) + setTeamValue(curr_team,"Score",(getTeamValue(curr_team,"Score") + mutant_kill_reward)) + else + increaseTeamValue(curr_team,"Score") + end + else + setTeamValue(curr_team,"Score",(getTeamValue(curr_team,"Score") - team_fire_punishment)) + end + else + if curr_team ~=GetHogTeamName(gear) then + if CurrentHedgehog==mutant and getGearValue(mutant,"SelfDestruct")==false then + SetHealth(CurrentHedgehog, GetHealth(CurrentHedgehog)+kill_reward) + AddCaption("+" .. kill_reward .. loc(" HP") ) + increaseTeamValue(curr_team,"Score") + end + if getGearValue(CurrentHedgehog,"Feeder") then + increaseTeamValue(curr_team,"Score") + end + else + setTeamValue(curr_team,"Score",(getTeamValue(curr_team,"Score") - team_fire_punishment)) + end + end + end + end +end + +function onGearResurrect(gear) +if not gameOver then + if GetGearType(gear) == gtHedgehog then + + increaseTeamValue(GetHogTeamName(gear), "DeadHogs") + + if gear==CurrentHedgehog then + setGearValue(CurrentHedgehog, "Alive", false) + end + set_Mutant_and_Score(gear) + if gear~=CurrentHedgehog then + killsCounter = killsCounter + 1 + countBodies() + end + AddVisualGear(GetX(gear), GetY(gear), vgtSmokeRing, 0, false) + PlaySound(sndWhack) + updateScore() + end +end +end + +function onGearAdd(gear) + + -- Catch hedgehogs for the tracker + if GetGearType(gear) == gtHedgehog then + trackGear(gear) + hhs[numhhs] = gear + numhhs = numhhs + 1 + SetEffect(gear, heResurrectable, 1) + end +end + +function checkEmptyTeam (teamName) + for i=0 , #hhs do + if hhs[i]~=nil then + if teamName == GetHogTeamName(hhs[i]) then + return false + end + end + end + return true +end + +function onGearDelete(gear) + -- Remove hogs that are gone + if GetGearType(gear) == gtHedgehog then + numhhs = numhhs - 1 + + local found + for i=0, #hhs do + if hhs[i] == gear then + found = i + break + end + end + for i = found, #hhs - 1 do + hhs[i] = hhs[i + 1] + end + hhs[#hhs] = nil + + local t_name = GetHogTeamName(gear) + if checkEmptyTeam(t_name) then + for i = 0, TeamsCount - 1 do + if teams[i] == t_name then + found = i + break + end + end + for i = found, TeamsCount - 2 do + teams[i] = teams[i + 1] + end + teams[TeamsCount - 1] = nil + TeamsCount = TeamsCount - 1 + end + AddVisualGear(GetX(gear), GetY(gear), vgtBigExplosion, 0, false) + trackDeletion(gear) + end +end + +--[[ +S T A R R I N G + + prof - Coding, implementing and evangelism + vos - Initial idea and script improvements +--]] diff -r 3331b30e4ef1 -r 88fde28bbda6 share/hedgewars/Data/Scripts/Multiplayer/Racer.lua --- a/share/hedgewars/Data/Scripts/Multiplayer/Racer.lua Sun Oct 21 01:28:33 2012 +0400 +++ b/share/hedgewars/Data/Scripts/Multiplayer/Racer.lua Sat Nov 03 00:34:35 2012 +0400 @@ -351,7 +351,7 @@ if roundNumber == roundLimit then for i = 0, (numhhs-1) do if GetHogClan(hhs[i]) ~= bestClan then - SetEffect(hhs[i], heResurrectable, false) + SetEffect(hhs[i], heResurrectable, 0) SetHealth(hhs[i],0) end end @@ -372,7 +372,7 @@ if turnN == 2 then for i = 0, (numhhs-1) do if hhs[i] ~= nil then - SetEffect(hhs[i], heResurrectable, false) + SetEffect(hhs[i], heResurrectable, 0) SetHealth(hhs[i],0) end end @@ -674,7 +674,7 @@ if GetGearType(gear) == gtHedgehog then hhs[numhhs] = gear numhhs = numhhs + 1 - SetEffect(gear, heResurrectable, true) + SetEffect(gear, heResurrectable, 1) end if GetGearType(gear) == gtAirAttack then diff -r 3331b30e4ef1 -r 88fde28bbda6 share/hedgewars/Data/Scripts/Multiplayer/Space_Invasion.lua --- a/share/hedgewars/Data/Scripts/Multiplayer/Space_Invasion.lua Sun Oct 21 01:28:33 2012 +0400 +++ b/share/hedgewars/Data/Scripts/Multiplayer/Space_Invasion.lua Sat Nov 03 00:34:35 2012 +0400 @@ -619,7 +619,7 @@ for i = 0, (numhhs-1) do if GetHogClan(hhs[i]) ~= bestClan then - SetEffect(hhs[i], heResurrectable, false) + SetEffect(hhs[i], heResurrectable, 0) SetHealth(hhs[i],0) end end @@ -1448,7 +1448,7 @@ --end if GetGearType(gear) == gtHedgehog then - SetEffect(gear, heResurrectable, true) + SetEffect(gear, heResurrectable, 1) ----------- -- control diff -r 3331b30e4ef1 -r 88fde28bbda6 share/hedgewars/Data/Scripts/Multiplayer/Tunnels.cfg --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/share/hedgewars/Data/Scripts/Multiplayer/Tunnels.cfg Sat Nov 03 00:34:35 2012 +0400 @@ -0,0 +1,2 @@ +Default +Default diff -r 3331b30e4ef1 -r 88fde28bbda6 share/hedgewars/Data/Scripts/Multiplayer/Tunnels.lua --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/share/hedgewars/Data/Scripts/Multiplayer/Tunnels.lua Sat Nov 03 00:34:35 2012 +0400 @@ -0,0 +1,98 @@ + PointsBuffer = '' -- A string to accumulate points in + function AddPoint(x, y, width, erase) + PointsBuffer = PointsBuffer .. string.char(band(x,0xff00) / 256 , band(x,0xff) , band(y,0xff00) / 256 , band(y,0xff)) + if width then + width = bor(width,0x80) + if erase then + width = bor(width,0x40) + end + PointsBuffer = PointsBuffer .. string.char(width) + else + PointsBuffer = PointsBuffer .. string.char(0) + end + if #PointsBuffer > 245 then + ParseCommand('draw '..PointsBuffer) + PointsBuffer = '' + end + end + function FlushPoints() + if #PointsBuffer > 0 then + ParseCommand('draw '..PointsBuffer) + PointsBuffer = '' + end + end + + +function onGameInit() + MapGen = 2 + TemplateFilter = 0 + for i = 200,2000,600 do + AddPoint(1,i,63) + AddPoint(4000,i) + end + + side = 0 + for i = 0,GetRandom(15)+25 do + if side > 3 then + size = GetRandom(4)+4 + else + size = GetRandom(12)+4 + end + --side = GetRandom(4) + dx = div(size,4) + maxshift = dx + dy = dx + if side == 0 then + x = 0 + y = GetRandom(2048-size*4)+size*2 + dy = 0 + elseif side == 1 then + x = GetRandom(4096-size*4)+size*2 + y = 0 + dx = 0 + elseif side == 2 then + x = 4096 + y = GetRandom(2048-size*4)+size*2 + dx = -dx + dy = 0 + elseif side == 3 then + x = GetRandom(4096-size*4)+size*2 + y = 2048 + dx = 0 + dy = -dy + elseif side > 3 then + x = GetRandom(2500)+500 + y = GetRandom(1250)+250 + dx = GetRandom(maxshift*2)-maxshift + dy = GetRandom(maxshift*2)-maxshift + end + length = GetRandom(500-size*25)+600 + while (length > 0) and (x > -300) and (y > -300) and (x < 4400) and (y < 2400) do + length = length - 1 + AddPoint(x,y,size,true) + x = x + dx + y = y + dy + if GetRandom(8) == 0 then + shift = GetRandom(10)-5 + if (shift > 0) and (dx < maxshift) then + dx = dx + shift + elseif (shift < 0) and (dx > -maxshift) then + dx = dx + shift + end + shift = GetRandom(10)-5 + if (shift > 0) and (dy < maxshift) then + dy = dy + shift + elseif (shift < 0) and (dy > -maxshift) then + dy = dy + shift + end + end + end + if side < 6 then + side = side + 1 + else + side = 0 + end + end + + FlushPoints() +end diff -r 3331b30e4ef1 -r 88fde28bbda6 share/hedgewars/Data/misc/CMakeLists.txt --- a/share/hedgewars/Data/misc/CMakeLists.txt Sun Oct 21 01:28:33 2012 +0400 +++ b/share/hedgewars/Data/misc/CMakeLists.txt Sat Nov 03 00:34:35 2012 +0400 @@ -1,9 +1,13 @@ -if(DEFINED DATA_INSTALL_DIR) - set(HEDGEWARS_DATADIR ${DATA_INSTALL_DIR}) -else() - set(HEDGEWARS_DATADIR ${CMAKE_INSTALL_PREFIX}/share/) +if(DEFINED DATA_INSTALL_DIR) + set(HEDGEWARS_DATADIR ${DATA_INSTALL_DIR} +) +else() + set(HEDGEWARS_DATADIR ${CMAKE_INSTALL_PREFIX}/share/) endif() + +if(UNIX AND NOT APPLE) configure_file(hwengine.desktop.in hwengine.desktop) +endif() file(GLOB miscfiles *.xml *.desktop) diff -r 3331b30e4ef1 -r 88fde28bbda6 tools/CMakeLists.txt --- a/tools/CMakeLists.txt Sun Oct 21 01:28:33 2012 +0400 +++ b/tools/CMakeLists.txt Sat Nov 03 00:34:35 2012 +0400 @@ -1,48 +1,54 @@ if (NOT APPLE) - configure_file( "${CMAKE_CURRENT_SOURCE_DIR}/cmake_uninstall.cmake.in" - "${CMAKE_CURRENT_BINARY_DIR}/cmake_uninstall.cmake" - IMMEDIATE @ONLY) + configure_file("${CMAKE_CURRENT_SOURCE_DIR}/cmake_uninstall.cmake.in" + "${CMAKE_CURRENT_BINARY_DIR}/cmake_uninstall.cmake" + IMMEDIATE @ONLY) - add_custom_target(uninstall "${CMAKE_COMMAND}" -P "${CMAKE_CURRENT_BINARY_DIR}/cmake_uninstall.cmake") + add_custom_target(uninstall "${CMAKE_COMMAND}" -P "${CMAKE_CURRENT_BINARY_DIR}/cmake_uninstall.cmake") endif() if (APPLE) - find_package(Qt4 REQUIRED) - find_package(SDL REQUIRED) - find_package(SDL_image REQUIRED) - find_package(SDL_net REQUIRED) - find_package(SDL_ttf REQUIRED) - find_package(SDL_mixer REQUIRED) - find_package(OGGVORBIS REQUIRED) - if(NOT NOAUTOUPDATE) - #needed for SPARKLE_FOUND variable - find_package(Sparkle QUIET) - #needed because the 'if' clause in the script prints silly policy warnings - if(${SPARKLE_FOUND}) - set(SPARKLE_FOUND 1) - else() - set(SPARKLE_FOUND 0) - endif() - endif() + find_package(Qt4 REQUIRED QUIET) + find_package(SDL REQUIRED) + find_package(SDL_image REQUIRED) + find_package(SDL_net REQUIRED) + find_package(SDL_ttf REQUIRED) + find_package(SDL_mixer REQUIRED) + find_package(OGGVORBIS REQUIRED) + if(NOT NOAUTOUPDATE) + #needed for SPARKLE_FOUND variable + find_package(Sparkle QUIET) + #needed because the 'if' clause in the script prints silly policy warnings + if(${SPARKLE_FOUND}) + set(SPARKLE_FOUND 1) + else() + set(SPARKLE_FOUND 0) + endif() + endif() + + #use the associated tool from the libraries we've selected + string(REGEX REPLACE "(.*)/include.*" "\\1" qt_base_dir "${QT_INCLUDE_DIR}") - #use the associated tool from the libraries we've selected - string(REGEX REPLACE "(.*)/include.*" "\\1" qt_base_dir "${QT_INCLUDE_DIR}") + #remove the ";-framework Cocoa" from the SDL_LIBRARY variable + string(REGEX REPLACE "(.*);-.*" "\\1" sdl_dir "${SDL_LIBRARY}") - #remove the ";-framework Cocoa" from the SDL_LIBRARY variable - string(REGEX REPLACE "(.*);-.*" "\\1" sdl_dir "${SDL_LIBRARY}") + if(NOT NOPNG) + #get the neme of the library (harmelss if it is static) + string(REGEX REPLACE ".*/(.*)$" "\\1" PNG_LIBNAME "${PNG_LIBRARY}") + endif() - #this tool is present in qt 4.5 but only if you compile from sources; from qt 4.6 is present also in the binary version - find_program(macdeployqt_executable NAMES macdeployqt macdeployqt-mac PATHS ${qt_base_dir}/bin) - if(NOT macdeployqt_executable) - message(FATAL_ERROR "The utility macdeployqt is required to create the bundle (seached: ${qt_base_dir})") - else() - message(STATUS "macdeployqt found in ${macdeployqt_executable}") - endif() + #this tool is present in qt 4.5 but only if you compile from sources + #from qt 4.6 is present also in the binary version + find_program(macdeployqt_executable NAMES macdeployqt macdeployqt-mac PATHS ${qt_base_dir}/bin) + if(NOT macdeployqt_executable) + message(FATAL_ERROR "The utility macdeployqt is required to create the bundle (seached: ${qt_base_dir})") + else() + message(STATUS "Found macdeployqt: ${macdeployqt_executable}") + endif() - #dummy target, we're interested in the postscript file - add_custom_target(bundle) - set_target_properties(bundle PROPERTIES POST_INSTALL_SCRIPT ${CMAKE_CURRENT_BINARY_DIR}/CreateMacBundle.cmake) + #dummy target, we're interested in the postscript file + add_custom_target(bundle) + set_target_properties(bundle PROPERTIES POST_INSTALL_SCRIPT ${CMAKE_CURRENT_BINARY_DIR}/CreateMacBundle.cmake) - configure_file(${CMAKE_CURRENT_SOURCE_DIR}/CreateMacBundle.cmake.in ${CMAKE_CURRENT_BINARY_DIR}/CreateMacBundle.cmake) + configure_file(${CMAKE_CURRENT_SOURCE_DIR}/CreateMacBundle.cmake.in ${CMAKE_CURRENT_BINARY_DIR}/CreateMacBundle.cmake) endif() diff -r 3331b30e4ef1 -r 88fde28bbda6 tools/CreateMacBundle.cmake.in --- a/tools/CreateMacBundle.cmake.in Sun Oct 21 01:28:33 2012 +0400 +++ b/tools/CreateMacBundle.cmake.in Sat Nov 03 00:34:35 2012 +0400 @@ -1,9 +1,22 @@ message(STATUS "Performing standalone bundle creation...") execute_process(COMMAND ls ${frameworks_dir} RESULT_VARIABLE doBundle OUTPUT_QUIET ERROR_QUIET) +execute_process(COMMAND mkdir -p ${frameworks_dir}) +# macdeployqt will convert safely any absolute path library for 'hedgewars' +execute_process(COMMAND ${macdeployqt_executable} ${CMAKE_BINARY_DIR}/${bundle_name} OUTPUT_QUIET ERROR_QUIET) -execute_process(COMMAND mkdir -p ${frameworks_dir}) -execute_process(COMMAND ${macdeployqt_executable} ${CMAKE_BINARY_DIR}/${bundle_name} OUTPUT_QUIET ERROR_QUIET) +if(NOT ${NOVIDEOREC}) + # but macdeployqt will not work for 'hwengine'; luckily the dylibs were already updated before + execute_process(COMMAND install_name_tool -change ${FFMPEG_LIBAVCODEC} @executable_path/../Frameworks/libavcodec.dylib ${CMAKE_BINARY_DIR}/${bundle_name}/Contents/MacOS/hwengine) + execute_process(COMMAND install_name_tool -change ${FFMPEG_LIBAVFORMAT} @executable_path/../Frameworks/libavformat.dylib ${CMAKE_BINARY_DIR}/${bundle_name}/Contents/MacOS/hwengine) + execute_process(COMMAND install_name_tool -change ${FFMPEG_LIBAVUTIL} @executable_path/../Frameworks/libavutil.dylib ${CMAKE_BINARY_DIR}/${bundle_name}/Contents/MacOS/hwengine) +endif() + +if(NOT ${NOPNG}) + #same here, for libpng and hwengine, let's assume the version pulled by macdeployqt is the same + #(yes libpng is pulled by macdeployqt even when NOVIDEOREC is active) + execute_process(COMMAND install_name_tool -change ${PNG_LIBRARY} @executable_path/../Frameworks/${PNG_LIBNAME} ${CMAKE_BINARY_DIR}/${bundle_name}/Contents/MacOS/hwengine) +endif() if(doBundle EQUAL 1) execute_process(COMMAND cp -pPR ${sdl_dir} ${CMAKE_BINARY_DIR}/${frameworks_dir}/SDL.framework) diff -r 3331b30e4ef1 -r 88fde28bbda6 tools/build_windows.bat --- a/tools/build_windows.bat Sun Oct 21 01:28:33 2012 +0400 +++ b/tools/build_windows.bat Sat Nov 03 00:34:35 2012 +0400 @@ -1,45 +1,63 @@ @echo off -:edit these variables if you need -SET PASCAL=C:\FPC\2.4.4\bin\i386-win32\ -SET QTDIR=C:\QtSDK\Desktop\Qt\4.7.4\mingw\bin -SET PATH=%PATH%;%PASCAL% +::edit these variables if you need +set PASCAL=C:\FPC\2.4.4\bin\i386-win32\ +set QTDIR=C:\QtSDK\Desktop\Qt\4.7.4\mingw\bin +set PATH=%PATH%;%PASCAL% +set BUILD_TYPE="Debug" -:SETUP +:setup +set CURRDIR="%CD%" cd .. -if not exist bin mkdir bin -cd bin + +echo Fetching all DLLs... +if %BUILD_TYPE%=="Debug" ( + for %%G in (QtCored4 QtGuid4 QtNetworkd4) do xcopy /d/y %QTDIR%\%%G.dll %CD%\bin\ +) +for %%G in (QtCore4 QtGui4 QtNetwork4 libgcc_s_dw2-1 mingwm10) do ( + xcopy /d/y %QTDIR%\%%G.dll %CD%\bin\ +) -echo Copying the DLLs... -xcopy /d/y ..\misc\winutils\bin\* . -xcopy /d/y %QTDIR%\QtCore4.dll . -xcopy /d/y %QTDIR%\QtGui4.dll . -xcopy /d/y %QTDIR%\QtNetwork4.dll . -xcopy /d/y %QTDIR%\libgcc_s_dw2-1.dll . -xcopy /d/y %QTDIR%\mingwm10.dll . +if not exist %CD%\misc\winutils\bin\ mkdir %CD%\misc\winutils\bin\ +if not exist %CD%\misc\winutils\bin\SDL.dll cscript %CD%\tools\w32DownloadUnzip.vbs http://www.libsdl.org/release/SDL-1.2.15-win32.zip %CD%\misc\winutils\bin +if not exist %CD%\misc\winutils\bin\SDL_image.dll cscript %CD%\tools\w32DownloadUnzip.vbs http://www.libsdl.org/projects/SDL_image/release/SDL_image-1.2.12-win32.zip %CD%\misc\winutils\bin +if not exist %CD%\misc\winutils\bin\SDL_net.dll cscript %CD%\tools\w32DownloadUnzip.vbs http://www.libsdl.org/projects/SDL_net/release/SDL_net-1.2.8-win32.zip %CD%\misc\winutils\bin +if not exist %CD%\misc\winutils\bin\SDL_mixer.dll cscript %CD%\tools\w32DownloadUnzip.vbs http://www.libsdl.org/projects/SDL_mixer/release/SDL_mixer-1.2.12-win32.zip %CD%\misc\winutils\bin +if not exist %CD%\misc\winutils\bin\SDL_ttf.dll cscript %CD%\tools\w32DownloadUnzip.vbs http://www.libsdl.org/projects/SDL_ttf/release/SDL_ttf-2.0.11-win32.zip %CD%\misc\winutils\bin -echo Setting up the environment... +::for video recording +if not exist %CD%\misc\winutils\bin\avformat-54.dll cscript %CD%\tools\w32DownloadUnzip.vbs http://hedgewars.googlecode.com/files/libav-win32-20121022-dll.zip %CD%\misc\winutils\bin +if not exist %CD%\misc\winutils\bin\glut32.dll cscript %CD%\tools\w32DownloadUnzip.vbs https://user.xmission.com/~nate/glut/glut-3.7.6-bin.zip %CD%\misc\winutils\bin +copy /y %CD%\misc\winutils\bin\glut-3.7.6-bin\glut32.dll %CD%\misc\winutils\bin\glut32.dll + +::this is needed because fpc png unit hardcodes libpng-1.2.12 +if not exist %CD%\misc\winutils\bin\libpng13.dll copy /y %CD%\misc\winutils\bin\libpng15-15.dll %CD%\misc\winutils\bin\libpng13.dll + +xcopy /d/y %CD%\misc\winutils\bin\*.dll %CD%\bin\ + +::setting up the environment... call %QTDIR%\qtenv2.bat echo Running cmake... -set errorlevel= -cmake -G "MinGW Makefiles" -DCMAKE_INCLUDE_PATH="%CD%\..\misc\winutils\include" -DCMAKE_LIBRARY_PATH="%CD%\..\misc\winutils\lib" .. +set ERRORLEVEL= +cmake -G "MinGW Makefiles" -DCMAKE_INCLUDE_PATH="%CD%\misc\winutils\include" -DCMAKE_LIBRARY_PATH="%CD%\misc\winutils\lib" -DPNG_LIBRARY="%CD%\misc\winutils\bin\libpng13.dll" . -DCMAKE_BUILD_TYPE=%BUILD_TYPE% -if %errorlevel% NEQ 0 goto exit +if %ERRORLEVEL% NEQ 0 goto exitpoint echo Running make... -set errorlevel= -mingw32-make -lSDL -lSDL_Mixer install - -if %errorlevel% NEQ 0 goto exit +set ERRORLEVEL= +mingw32-make +if %ERRORLEVEL% NEQ 0 goto exitpoint -echo Creating shortcut... -if /i "%PROGRAMFILES(X86)%"=="" ( - COPY /y ..\misc\winutils\Hedgewars_x86.lnk C:\%HOMEPATH%\Desktop\Hedgewars.lnk -) else ( - COPY /y ..\misc\winutils\Hedgewars_x64.lnk C:\%HOMEPATH%\Desktop\Hedgewars.lnk -) +echo Installing... +set ERRORLEVEL= +mingw32-make install > nul +if %ERRORLEVEL% NEQ 0 goto exitpoint + +echo Creating commodity shortcut... +copy /y %CD%\misc\winutils\Hedgewars.lnk C:%HOMEPATH%\Desktop\Hedgewars.lnk + echo ALL DONE, Hedgewars has been successfully compiled and installed -:exit -cd ../tools +:exitpoint +cd %CURRDIR% pause diff -r 3331b30e4ef1 -r 88fde28bbda6 tools/w32DownloadUnzip.vbs --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/tools/w32DownloadUnzip.vbs Sat Nov 03 00:34:35 2012 +0400 @@ -0,0 +1,64 @@ +' w32DownloadUnzip.vbs +' Download a zipfile and uncompress it with no external tools in Windows +' +' Copyright (c) 2012, Vittorio Giovara, +' Redistribution and use is allowed according to the terms of the BSD license. +' +' References +' http://superuser.com/questions/59465/is-it-possible-to-download-using-the-windows-command-line +' http://stackoverflow.com/questions/1021557/how-to-unzip-a-file-using-the-command-line + +Set ArgObj = WScript.Arguments + +If (Wscript.Arguments.Count = 1) Then + strFileURL = ArgObj(0) + strOutputPath = CreateObject("Scripting.FileSystemObject").GetAbsolutePathName(".") +Else + If (Wscript.Arguments.Count = 2) Then + strFileURL = ArgObj(0) + strOutputPath = ArgObj(1) + Else + WScript.Echo ("Usage: csript.exe w32DownloadUnzip.vbs url output") + WScript.Quit + End if +End if + +strHDLocation = "C:\Windows\Temp\temp.zip" + +' Fetch the file +WScript.Echo ( "Trying to download from " & strFileURL) +Set objXMLHTTP = CreateObject("MSXML2.XMLHTTP") +objXMLHTTP.open "GET", strFileURL, false +objXMLHTTP.send() + +If objXMLHTTP.Status = 200 Then + Set objADOStream = CreateObject("ADODB.Stream") + objADOStream.Open + objADOStream.Type = 1 'adTypeBinary + + objADOStream.Write objXMLHTTP.ResponseBody + objADOStream.Position = 0 'Set the stream position to the start + + Set objFSO = Createobject("Scripting.FileSystemObject") + If objFSO.Fileexists(strHDLocation) Then objFSO.DeleteFile strHDLocation + Set objFSO = Nothing + + objADOStream.SaveToFile strHDLocation + objADOStream.Close + Set objADOStream = Nothing +Else + WScript.Echo ("Error downloading file (error code: " & objXMLHTTP.Status & ")") + Set objXMLHTTP = Nothing + WScript.Quit +End if +Set objXMLHTTP = Nothing + +WScript.Echo ( "Extracting file to " & strOutputPath) +Set objShell = CreateObject( "Shell.Application" ) +Set objSource = objShell.NameSpace(strHDLocation).Items() +Set objTarget = objShell.NameSpace(strOutputPath) +intOptions = 16 'no user prompt +objTarget.CopyHere objSource, intOptions + +WScript.Echo ( "Success!" ) +Set objShell = Nothing