# HG changeset patch # User Xeli # Date 1351433557 -3600 # Node ID 2bc61f8841a1ea3b45ed40b31fb9343ee38ec88d # Parent ddcdedd3330b4bf32eaf613500f88eae0aa3c198# Parent 6237d2f002ba81d8962793c3270b139ded45a0da merge Medo's GSoC work diff -r 6237d2f002ba -r 2bc61f8841a1 .hgignore --- a/.hgignore Sun Sep 16 23:52:36 2012 +0200 +++ b/.hgignore Sun Oct 28 15:12:37 2012 +0100 @@ -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 6237d2f002ba -r 2bc61f8841a1 CMakeLists.txt --- a/CMakeLists.txt Sun Sep 16 23:52:36 2012 +0200 +++ b/CMakeLists.txt Sun Oct 28 15:12:37 2012 +0100 @@ -16,7 +16,8 @@ set(HGCHANGED "") IF(version_suffix MATCHES "-dev") set(HW_DEV true) - IF (EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/.hg) + set(default_build_type "DEBUG") + IF(EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/.hg) FIND_PROGRAM(HGCOMMAND hg) IF(HGCOMMAND) exec_program(${HGCOMMAND} @@ -35,6 +36,7 @@ ENDIF() ELSE() set(HW_DEV false) + set(default_build_type "RELEASE") ENDIF() @@ -46,11 +48,15 @@ set(HEDGEWARS_VERSION "${CPACK_PACKAGE_VERSION_MAJOR}.${CPACK_PACKAGE_VERSION_MINOR}.${CPACK_PACKAGE_VERSION_PATCH}") -#set some safe values -IF(NOT BUILD_ENGINE_LIBRARY) - SET(BUILD_ENGINE_LIBRARY 0) -ENDIF(NOT BUILD_ENGINE_LIBRARY) -set(target_dir "bin") +#set some default values +option(NOSERVER "Disable gameServer build [default: auto]" OFF) +option(NOPNG "Disable screenshoot compression [default: auto]" OFF) +option(NOVIDEOREC "Disable video recording [default: auto]" OFF) + +option(BUILD_ENGINE_LIBRARY "Enable hwengine library [default: off]" OFF) +option(ANDROID "Enable Android build [default: off]" OFF) +option(CROSSAPPLE "Enable OSX when not on OSX [default: off]" OFF) + #bundle .app setup if(APPLE OR CROSSAPPLE) @@ -61,6 +67,8 @@ set(DATA_INSTALL_DIR "../Resources/") set(target_dir ".") set(minimum_macosx_version "10.6") +else() + set(target_dir "bin") endif() if(APPLE) @@ -137,18 +145,16 @@ endif(APPLE) -#build Debug only when explicitally set -if (NOT CMAKE_BUILD_TYPE) - set (CMAKE_BUILD_TYPE RELEASE CACHE STRING "Choose the type of build, options are: Debug Release." FORCE) -endif (NOT CMAKE_BUILD_TYPE) - -if(CMAKE_BUILD_TYPE MATCHES DEBUG OR CMAKE_BUILD_TYPE MATCHES "Debug" OR CMAKE_BUILD_TYPE MATCHES "debug") - message(STATUS "Building Debug") - set(Optz false) -else() - message(STATUS "Building Release") - set(Optz true) -endif() +#when build type is not specified, assume Debug/Release according to build version information +if (CMAKE_BUILD_TYPE) + string (TOUPPER ${CMAKE_BUILD_TYPE} CMAKE_BUILD_TYPE) + if ( NOT( (CMAKE_BUILD_TYPE MATCHES "RELEASE") OR (CMAKE_BUILD_TYPE MATCHES "DEBUG") ) ) + set (CMAKE_BUILD_TYPE ${default_build_type} CACHE STRING "Only 'Debug' or 'Release' options are allowed." FORCE) + message (STATUS "Unknown build type, using default (${default_build_type})") + endif () +else (CMAKE_BUILD_TYPE) + set (CMAKE_BUILD_TYPE ${default_build_type} CACHE STRING "Choose the build type, options are: Debug Release." FORCE) +endif (CMAKE_BUILD_TYPE) #set default flags values for all projects @@ -163,34 +169,40 @@ if(FPFLAGS OR GHFLAGS) math(EXPR cmake_version "${CMAKE_MAJOR_VERSION}*10000 + ${CMAKE_MINOR_VERSION}*100 + ${CMAKE_PATCH_VERSION}") if(cmake_version LESS "020800") - message(STATUS "FPFLAGS and GHFLAGS are available only from Cmake 2.8, ignoring...") + message(STATUS "FPFLAGS and GHFLAGS are available only when using CMake >= 2.8") else() - separate_arguments(fpflags_full UNIX_COMMAND ${FPFLAGS}) - separate_arguments(ghflags_full UNIX_COMMAND ${GHFLAGS}) + separate_arguments(fpflags_parsed UNIX_COMMAND ${FPFLAGS}) + separate_arguments(ghflags_parsed UNIX_COMMAND ${GHFLAGS}) endif() endif() -set(pascal_flags ${fpflags_full} "-B" "-FE../bin" "-Cs2000000" "-vewn" "-dDEBUGFILE" ${pascal_flags}) -set(haskell_flags "-O2" ${ghflags_full} ${haskell_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}) -if(Optz) +#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" ${pascal_flags}) + set(haskell_flags "-Wall" "-debug" "-dcore-lint" "-fno-warn-unused-do-bind" ${haskell_flags}) +else() + message(STATUS "Building Release flavour") # set(pascal_flags "-O3" "-OpPENTIUM4" "-CfSSE3" "-Xs" "-Si" ${pascal_flags}) set(pascal_flags "-Os" "-Ooregvar" "-Xs" "-Si" ${pascal_flags}) set(haskell_flags "-w" "-fno-warn-unused-do-bind" ${haskell_flags}) -else(Optz) - set(pascal_flags "-O-" "-g" "-gl" "-gv" "-Ct" ${pascal_flags}) - set(haskell_flags "-Wall" "-debug" "-dcore-lint" "-fno-warn-unused-do-bind" ${haskell_flags}) -endif(Optz) +endif() +#finish setting paths if(DEFINED DATA_INSTALL_DIR) set(SHAREPATH ${DATA_INSTALL_DIR}/hedgewars/) else() set(SHAREPATH share/hedgewars/) endif() set(EXECUTABLE_OUTPUT_PATH ${PROJECT_BINARY_DIR}/bin) +set(LIBRARY_OUTPUT_PATH ${EXECUTABLE_OUTPUT_PATH}) +#server discovery if(NOT NOSERVER) if(GHC) set(ghc_executable ${GHC}) @@ -201,8 +213,9 @@ if(ghc_executable) set(HAVE_NETSERVER true) add_subdirectory(gameServer) + message(STATUS "Found GHC: ${ghc_executable}") else() - message(STATUS "No GHC executable found, server will not be built") + message(STATUS "Could NOT find GHC, server will not be built") set(HAVE_NETSERVER false) endif() else() @@ -210,29 +223,29 @@ set(HAVE_NETSERVER false) endif() + +#lua discovery find_package(Lua) if(LUA_FOUND) - message(STATUS "Lua library is present on your system (${LUA_DEFAULT})") + message(STATUS "Found LUA: ${LUA_DEFAULT}") else() - message(STATUS "Lua library not found, 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? - if(WIN32) - set(pascal_flags "-k${CMAKE_BINARY_DIR}/bin/liblua.dll.a" "-k-lreadline" ${pascal_flags}) - else() - set(pascal_flags "-k${CMAKE_BINARY_DIR}/bin/liblua.a" "-k-lreadline" ${pascal_flags}) - endif() + set(pascal_flags "-k${EXECUTABLE_OUTPUT_PATH}/lib${LUA_LIBRARY}.a" "-k-lreadline" ${pascal_flags}) endif() + +#main engine add_subdirectory(hedgewars) - -#run cmake -DANDROID=1 to enable this +#Android related build scripts if(ANDROID) + #run cmake -DANDROID=1 to enable this add_subdirectory(project_files/Android-build) endif() - +#TODO: when ANDROID, BUILD_ENGINE_LIBRARY should be set if(NOT (BUILD_ENGINE_LIBRARY OR ANDROID)) add_subdirectory(bin) add_subdirectory(misc/quazip) diff -r 6237d2f002ba -r 2bc61f8841a1 CREDITS --- a/CREDITS Sun Sep 16 23:52:36 2012 +0200 +++ b/CREDITS Sun Oct 28 15:12:37 2012 +0100 @@ -18,6 +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 Broda -> Cyclops (2011), Soldier (2011) + +========== += GRAVESTONES +========== +- Randy Broda -> Dragonball (2012) ========== = MAPS diff -r 6237d2f002ba -r 2bc61f8841a1 ChangeLog.txt --- a/ChangeLog.txt Sun Sep 16 23:52:36 2012 +0200 +++ b/ChangeLog.txt Sun Oct 28 15:12:37 2012 +0100 @@ -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 6237d2f002ba -r 2bc61f8841a1 QTfrontend/CMakeLists.txt --- a/QTfrontend/CMakeLists.txt Sun Sep 16 23:52:36 2012 +0200 +++ b/QTfrontend/CMakeLists.txt Sun Oct 28 15:12:37 2012 +0100 @@ -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) @@ -51,7 +53,7 @@ if(WIN32 AND NOT UNIX) set(HEDGEWARS_BINDIR ".") set(HEDGEWARS_DATADIR "../share/") - add_definitions(-DUSE_XFIRE) + add_definitions(-DUSE_XFIRE) else() set(HEDGEWARS_BINDIR ${CMAKE_INSTALL_PREFIX}) if(DEFINED DATA_INSTALL_DIR) @@ -73,8 +75,8 @@ file(GLOB_RECURSE UIcpp ui/*.cpp) file(GLOB UtilCpp util/*.cpp) -if((NOT NO_VIDEOREC) AND "${FFMPEG_FOUND}") - add_definitions(-DVIDEOREC) +if(${FFMPEG_FOUND}) + add_definitions(-DVIDEOREC -D__STDC_CONSTANT_MACROS) endif() set(hwfr_src diff -r 6237d2f002ba -r 2bc61f8841a1 QTfrontend/campaign.cpp --- a/QTfrontend/campaign.cpp Sun Sep 16 23:52:36 2012 +0200 +++ b/QTfrontend/campaign.cpp Sun Oct 28 15:12:37 2012 +0100 @@ -19,7 +19,6 @@ #include #include #include -#include #include #include #include diff -r 6237d2f002ba -r 2bc61f8841a1 QTfrontend/game.cpp --- a/QTfrontend/game.cpp Sun Sep 16 23:52:36 2012 +0200 +++ b/QTfrontend/game.cpp Sun Oct 28 15:12:37 2012 +0100 @@ -21,7 +21,6 @@ #include #include #include -#include #include #include "game.h" @@ -125,6 +124,8 @@ .arg((themeModel->rowCount() > 0) ? themeModel->index(rand() % themeModel->rowCount()).data().toString() : "steel")); HWProto::addStringToBuffer(teamscfg, "eseed " + QUuid::createUuid().toString()); + HWProto::addStringToBuffer(teamscfg, "e$template_filter 2"); + HWTeam team1; team1.setDifficulty(0); team1.setColor(0); diff -r 6237d2f002ba -r 2bc61f8841a1 QTfrontend/gameuiconfig.cpp --- a/QTfrontend/gameuiconfig.cpp Sun Sep 16 23:52:36 2012 +0200 +++ b/QTfrontend/gameuiconfig.cpp Sun Oct 28 15:12:37 2012 +0100 @@ -16,13 +16,14 @@ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA */ -#include #include #include #include #include #include #include +#include +#include #include "gameuiconfig.h" #include "hwform.h" @@ -34,6 +35,14 @@ #include "HWApplication.h" #include "DataManager.h" + +const QNetworkProxy::ProxyType proxyTypesMap[] = { + QNetworkProxy::NoProxy + , QNetworkProxy::NoProxy // dummy value + , QNetworkProxy::Socks5Proxy + , QNetworkProxy::HttpProxy}; + + GameUIConfig::GameUIConfig(HWForm * FormWidgets, const QString & fileName) : QSettings(fileName, QSettings::IniFormat) { @@ -109,6 +118,12 @@ Form->ui.pageOptions->CBLanguage->setCurrentIndex(Form->ui.pageOptions->CBLanguage->findData(value("misc/locale", "").toString())); + Form->ui.pageOptions->cbProxyType->setCurrentIndex(value("proxy/type", 0).toInt()); + Form->ui.pageOptions->leProxy->setText(value("proxy/host", "").toString()); + Form->ui.pageOptions->sbProxyPort->setValue(value("proxy/port", "8080").toInt()); + Form->ui.pageOptions->leProxyLogin->setText(value("proxy/login", "").toString()); + Form->ui.pageOptions->leProxyPassword->setText(value("proxy/password", "").toString()); + depth = HWApplication::desktop()->depth(); if (depth < 16) depth = 16; else if (depth > 16) depth = 32; @@ -217,6 +232,36 @@ setValue("misc/autoUpdate", isAutoUpdateEnabled()); #endif + { // setup proxy + int proxyType = Form->ui.pageOptions->cbProxyType->currentIndex(); + setValue("proxy/type", proxyType); + + if(proxyType == PageOptions::Socks5Proxy || proxyType == PageOptions::HTTPProxy) + { + setValue("proxy/host", Form->ui.pageOptions->leProxy->text()); + setValue("proxy/port", Form->ui.pageOptions->sbProxyPort->value()); + setValue("proxy/login", Form->ui.pageOptions->leProxyLogin->text()); + setValue("proxy/password", Form->ui.pageOptions->leProxyPassword->text()); + } + + QNetworkProxy proxy; + + if(proxyType == PageOptions::SystemProxy) + { + // use system proxy settings + proxy = QNetworkProxyFactory::systemProxyForQuery().at(0); + } else + { + proxy.setType(proxyTypesMap[proxyType]); + proxy.setHostName(Form->ui.pageOptions->leProxy->text()); + proxy.setPort(Form->ui.pageOptions->sbProxyPort->value()); + proxy.setUser(Form->ui.pageOptions->leProxyLogin->text()); + proxy.setPassword(Form->ui.pageOptions->leProxyPassword->text()); + } + + QNetworkProxy::setApplicationProxy(proxy); + } + { // save colors QStandardItemModel * model = DataManager::instance().colorsModel(); for(int i = model->rowCount() - 1; i >= 0; --i) diff -r 6237d2f002ba -r 2bc61f8841a1 QTfrontend/hedgewars.qrc --- a/QTfrontend/hedgewars.qrc Sun Sep 16 23:52:36 2012 +0200 +++ b/QTfrontend/hedgewars.qrc Sun Oct 28 15:12:37 2012 +0100 @@ -5,7 +5,7 @@ res/css/chat.css res/css/christmas.css res/css/easter.css - res/css/birthday.css + res/css/birthday.css res/hh25x25.png res/hh25x25grey.png res/ammopic.png @@ -102,20 +102,11 @@ res/iconRope.png res/dice.png res/Star.png - res/Flake.png - res/Egg.png - res/Confetti.png + res/Flake.png + res/Egg.png + res/Confetti.png res/file_save.png res/file_demo.png - res/chat_default.png - res/chat_ignore.png - res/chat_friend.png - res/chat_default_on.png - res/chat_ignore_on.png - res/chat_friend_on.png - res/chat_default_off.png - res/chat_ignore_off.png - res/chat_friend_off.png res/addfriend.png res/remfriend.png res/ignore.png @@ -143,5 +134,16 @@ res/mapMissing.png res/mapCustom.png res/mapMission.png + res/chat/friend.png + res/chat/ignore.png + res/chat/lamp.png + res/chat/hedgehog.png + res/chat/hedgehog_gray.png + res/chat/roomadmin.png + res/chat/roomadmin_gray.png + res/chat/serveradmin.png + res/chat/serveradmin_gray.png + res/chat/lamp_off.png + res/chat/ingame.png diff -r 6237d2f002ba -r 2bc61f8841a1 QTfrontend/hwconsts.h --- a/QTfrontend/hwconsts.h Sun Sep 16 23:52:36 2012 +0200 +++ b/QTfrontend/hwconsts.h Sun Oct 28 15:12:37 2012 +0100 @@ -63,40 +63,40 @@ #define HEDGEHOGS_PER_TEAM 8 -#define AMMOLINE_DEFAULT_QT "9391929422199121032235111001201000000211110101011111011" -#define AMMOLINE_DEFAULT_PROB "0405040541600655546554464776576666666155510101115411011" -#define AMMOLINE_DEFAULT_DELAY "0000000000000205500000040007004000000000220000000600000" -#define AMMOLINE_DEFAULT_CRATE "1311110312111111123114111111111111111211111101111111010" +#define AMMOLINE_DEFAULT_QT "93919294221991210322351110012010000002111101010111110101" +#define AMMOLINE_DEFAULT_PROB "04050405416006555465544647765766666661555101011154110101" +#define AMMOLINE_DEFAULT_DELAY "00000000000002055000000400070040000000002200000006000000" +#define AMMOLINE_DEFAULT_CRATE "13111103121111111231141111111111111112111111011111110101" -#define AMMOLINE_CRAZY_QT "9999999999999999992999999999999999299999999909999992099" -#define AMMOLINE_CRAZY_PROB "1111110111111111111111111111111111111111111101111111011" -#define AMMOLINE_CRAZY_DELAY "0000000000000000000000000000000000000000000000000000000" -#define AMMOLINE_CRAZY_CRATE "1311110312111111123114111111111111111211110101111111011" +#define AMMOLINE_CRAZY_QT "99999999999999999929999999999999992999999999099999920909" +#define AMMOLINE_CRAZY_PROB "11111101111111111111111111111111111111111111011111110101" +#define AMMOLINE_CRAZY_DELAY "00000000000000000000000000000000000000000000000000000000" +#define AMMOLINE_CRAZY_CRATE "13111103121111111231141111111111111112111101011111110101" -#define AMMOLINE_PROMODE_QT "9090009000000000000009000000000000000000000000000000000" -#define AMMOLINE_PROMODE_PROB "0000000000000000000000000000000000000000000000000000000" -#define AMMOLINE_PROMODE_DELAY "0000000000000205500000040007004000000000200000000000000" -#define AMMOLINE_PROMODE_CRATE "1111111111111111111111111111111111111111100101111111011" +#define AMMOLINE_PROMODE_QT "90900090000000000000090000000000000000000000000000000001" +#define AMMOLINE_PROMODE_PROB "00000000000000000000000000000000000000000000000000000000" +#define AMMOLINE_PROMODE_DELAY "00000000000002055000000400070040000000002000000000000009" +#define AMMOLINE_PROMODE_CRATE "11111111111111111111111111111111111111111001011111110101" -#define AMMOLINE_SHOPPA_QT "0000009900000000000000000000000000000000000000000000000" -#define AMMOLINE_SHOPPA_PROB "4444410044244402210112121222422000000002000400010011000" -#define AMMOLINE_SHOPPA_DELAY "0000000000000000000000000000000000000000000000000000000" -#define AMMOLINE_SHOPPA_CRATE "1111111111111111111111111111111111111111101101111111001" +#define AMMOLINE_SHOPPA_QT "00000099000000000000000000000000000000000000000000000000" +#define AMMOLINE_SHOPPA_PROB "44444100442444022101121212224220000000020004000100110000" +#define AMMOLINE_SHOPPA_DELAY "00000000000000000000000000000000000000000000000000000000" +#define AMMOLINE_SHOPPA_CRATE "11111111111111111111111111111111111111111011011111110001" -#define AMMOLINE_CLEAN_QT "1010009000010000011000000000000000000000000000001000000" -#define AMMOLINE_CLEAN_PROB "0405040541600655546554464776576666666155510101115411011" -#define AMMOLINE_CLEAN_DELAY "0000000000000000000000000000000000000000000000000000000" -#define AMMOLINE_CLEAN_CRATE "1311110312111111123114111111111111111211111101111111011" +#define AMMOLINE_CLEAN_QT "10100090000100000110000000000000000000000000000010000000" +#define AMMOLINE_CLEAN_PROB "04050405416006555465544647765766666661555101011154110101" +#define AMMOLINE_CLEAN_DELAY "00000000000000000000000000000000000000000000000000000000" +#define AMMOLINE_CLEAN_CRATE "13111103121111111231141111111111111112111111011111110101" -#define AMMOLINE_MINES_QT "0000009900090000000300000000000000000000000000000000000" -#define AMMOLINE_MINES_PROB "0000000000000000000000000000000000000000000000000000000" -#define AMMOLINE_MINES_DELAY "0000000000000205500000040007004000000000200000000600000" -#define AMMOLINE_MINES_CRATE "1111111111111111111111111111111111111111111101111111011" +#define AMMOLINE_MINES_QT "00000099000900000003000000000000000000000000000000000000" +#define AMMOLINE_MINES_PROB "00000000000000000000000000000000000000000000000000000000" +#define AMMOLINE_MINES_DELAY "00000000000002055000000400070040000000002000000006000000" +#define AMMOLINE_MINES_CRATE "11111111111111111111111111111111111111111111011111110101" -#define AMMOLINE_PORTALS_QT "9000009002000000002100000000000000110000090000000000000" -#define AMMOLINE_PORTALS_PROB "0405040541600655546554464776576666666155510101115411011" -#define AMMOLINE_PORTALS_DELAY "0000000000000205500000040007004000000000200000000600000" -#define AMMOLINE_PORTALS_CRATE "1311110312111111123114111111111111111211111101111111011" +#define AMMOLINE_PORTALS_QT "90000090020000000021000000000000001100000900000000000000" +#define AMMOLINE_PORTALS_PROB "04050405416006555465544647765766666661555101011154110100" +#define AMMOLINE_PORTALS_DELAY "00000000000002055000000400070040000000002000000006000000" +#define AMMOLINE_PORTALS_CRATE "13111103121111111231141111111111111112111111011111110101" //Different seasons; assigned to season (int) #define SEASON_NONE 0 diff -r 6237d2f002ba -r 2bc61f8841a1 QTfrontend/hwform.cpp --- a/QTfrontend/hwform.cpp Sun Sep 16 23:52:36 2012 +0200 +++ b/QTfrontend/hwform.cpp Sun Oct 28 15:12:37 2012 +0100 @@ -93,6 +93,7 @@ #include "mouseoverfilter.h" #include "roomslistmodel.h" #include "recorder.h" +#include "playerslistmodel.h" #include "DataManager.h" @@ -162,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(); @@ -189,8 +190,10 @@ connect(ui.pageMain->BtnSetup, SIGNAL(clicked()), pageSwitchMapper, SLOT(map())); pageSwitchMapper->setMapping(ui.pageMain->BtnSetup, ID_PAGE_SETUP); +#if 0 connect(ui.pageMain->BtnFeedback, SIGNAL(clicked()), pageSwitchMapper, SLOT(map())); pageSwitchMapper->setMapping(ui.pageMain->BtnFeedback, ID_PAGE_FEEDBACK); +#endif connect(ui.pageMain->BtnNet, SIGNAL(clicked()), pageSwitchMapper, SLOT(map())); pageSwitchMapper->setMapping(ui.pageMain->BtnNet, ID_PAGE_NETTYPE); @@ -201,8 +204,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())); @@ -625,19 +626,6 @@ { config->reloadVideosValues(); } - - // load and save ignore/friends lists - if (lastid == ID_PAGE_NETGAME) // leaving a room - ui.pageNetGame->pChatWidget->saveLists(ui.pageOptions->editNetNick->text()); - else if(lastid == ID_PAGE_ROOMSLIST) // leaving the lobby - ui.pageRoomsList->chatWidget->saveLists(ui.pageOptions->editNetNick->text()); - - if (id == ID_PAGE_NETGAME) // joining a room - ui.pageNetGame->pChatWidget->loadLists(ui.pageOptions->editNetNick->text()); -// joining the lobby - else if (id == ID_PAGE_ROOMSLIST) - ui.pageRoomsList->chatWidget->loadLists(ui.pageOptions->editNetNick->text()); - } void HWForm::GoToPage(int id) @@ -712,9 +700,10 @@ group->addAnimation(animationOldOpacity); group->addAnimation(animationNewOpacity); #endif + + connect(animationOldSlide, SIGNAL(finished()), ui.Pages->widget(lastid), SLOT(hide())); group->start(); - connect(animationOldSlide, SIGNAL(finished()), ui.Pages->widget(lastid), SLOT(hide())); /* 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(); } @@ -825,11 +814,18 @@ group->addAnimation(animationOldOpacity); group->addAnimation(animationNewOpacity); #endif - group->start(); connect(animationNewSlide, SIGNAL(finished()), ui.Pages->widget(curid), SLOT(hide())); + group->start(); } #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() @@ -909,10 +905,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() @@ -920,7 +924,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 { @@ -946,10 +950,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); @@ -1013,7 +1014,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()) { @@ -1091,6 +1092,9 @@ connect(hwnet, SIGNAL(AuthFailed()), this, SLOT(NetAuthFailed()), Qt::QueuedConnection); //connect(ui.pageNetGame->BtnBack, SIGNAL(clicked()), hwnet, SLOT(partRoom())); + ui.pageRoomsList->chatWidget->setUsersModel(hwnet->lobbyPlayersModel()); + ui.pageNetGame->pChatWidget->setUsersModel(hwnet->roomPlayersModel()); + // rooms list page stuff ui.pageRoomsList->setModel(hwnet->roomsListModel()); connect(hwnet, SIGNAL(adminAccess(bool)), @@ -1119,8 +1123,7 @@ // net page stuff connect(hwnet, SIGNAL(chatStringFromNet(const QString&)), ui.pageNetGame->pChatWidget, SLOT(onChatString(const QString&)), Qt::QueuedConnection); - connect(hwnet, SIGNAL(setReadyStatus(const QString &, bool)), - ui.pageNetGame->pChatWidget, SLOT(setReadyStatus(const QString &, bool)), Qt::QueuedConnection); + connect(hwnet, SIGNAL(chatStringFromMe(const QString&)), ui.pageNetGame->pChatWidget, SLOT(onChatString(const QString&)), Qt::QueuedConnection); connect(hwnet, SIGNAL(roomMaster(bool)), @@ -1239,10 +1242,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; @@ -1281,14 +1284,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() @@ -1389,9 +1398,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) @@ -1518,10 +1530,12 @@ // disconnect connections first to ensure their inexistance and not to connect twice ui.pageNetGame->BtnStart->disconnect(hwnet); ui.pageNetGame->BtnUpdate->disconnect(hwnet); - ui.pageNetGame->setRoomName(hwnet->getRoom()); ui.pageNetGame->restrictJoins->disconnect(hwnet); ui.pageNetGame->restrictTeamAdds->disconnect(hwnet); ui.pageNetGame->disconnect(hwnet, SLOT(updateRoomName(const QString&))); + + ui.pageNetGame->setRoomName(hwnet->getRoom()); + connect(ui.pageNetGame->BtnStart, SIGNAL(clicked()), hwnet, SLOT(startGame())); connect(ui.pageNetGame, SIGNAL(askForUpdateRoomName(const QString &)), hwnet, SLOT(updateRoomName(const QString &))); connect(ui.pageNetGame->restrictJoins, SIGNAL(triggered()), hwnet, SLOT(toggleRestrictJoins())); @@ -1682,8 +1696,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() @@ -1719,8 +1742,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; } @@ -1766,18 +1788,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; } @@ -1790,12 +1817,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.come directly)")); authToken = ""; } diff -r 6237d2f002ba -r 2bc61f8841a1 QTfrontend/main.cpp --- a/QTfrontend/main.cpp Sun Sep 16 23:52:36 2012 +0200 +++ b/QTfrontend/main.cpp Sun Oct 28 15:12:37 2012 +0100 @@ -91,10 +91,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; @@ -205,10 +207,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; } @@ -272,18 +278,10 @@ QFile resFile(":/res/css/" + fname); - QFile & file = (extFile.exists()?extFile:resFile); + QFile & file = (extFile.exists() ? extFile : resFile); if (file.open(QIODevice::ReadOnly | QIODevice::Text)) - { - QTextStream in(&file); - while (!in.atEnd()) - { - QString line = in.readLine(); - if(!line.isEmpty()) - style.append(line); - } - } + style.append(file.readAll()); app.form = new HWForm(NULL, style); app.form->show(); diff -r 6237d2f002ba -r 2bc61f8841a1 QTfrontend/model/playerslistmodel.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/QTfrontend/model/playerslistmodel.cpp Sun Oct 28 15:12:37 2012 +0100 @@ -0,0 +1,393 @@ +#include +#include +#include +#include +#include +#include + +#include "playerslistmodel.h" +#include "hwconsts.h" + +PlayersListModel::PlayersListModel(QObject *parent) : + QAbstractListModel(parent) +{ + +} + + +int PlayersListModel::rowCount(const QModelIndex &parent) const +{ + if(parent.isValid()) + return 0; + else + return m_data.size(); +} + + +QVariant PlayersListModel::data(const QModelIndex &index, int role) const +{ + if(!index.isValid() || index.row() < 0 || index.row() >= rowCount() || index.column() != 0) + return QVariant(QVariant::Invalid); + + return m_data.at(index.row()).value(role); +} + + +bool PlayersListModel::setData(const QModelIndex &index, const QVariant &value, int role) +{ + if(!index.isValid() || index.row() < 0 || index.row() >= rowCount() || index.column() != 0) + return false; + + m_data[index.row()].insert(role, value); + + emit dataChanged(index, index); + + return true; +} + + +bool PlayersListModel::insertRow(int row, const QModelIndex &parent) +{ + return insertRows(row, 1, parent); +} + + +bool PlayersListModel::insertRows(int row, int count, const QModelIndex &parent) +{ + if(parent.isValid() || row > rowCount() || row < 0 || count < 1) + return false; + + beginInsertRows(parent, row, row + count - 1); + + for(int i = 0; i < count; ++i) + m_data.insert(row, DataEntry()); + + endInsertRows(); + + return true; +} + + +bool PlayersListModel::removeRows(int row, int count, const QModelIndex &parent) +{ + if(parent.isValid() || row + count > rowCount() || row < 0 || count < 1) + return false; + + beginRemoveRows(parent, row, row + count - 1); + + for(int i = 0; i < count; ++i) + m_data.removeAt(row); + + endRemoveRows(); + + return true; +} + + +void PlayersListModel::addPlayer(const QString & nickname) +{ + insertRow(rowCount()); + + QModelIndex mi = index(rowCount() - 1); + setData(mi, nickname); + + checkFriendIgnore(mi); +} + + +void PlayersListModel::removePlayer(const QString & nickname) +{ + QModelIndexList mil = match(index(0), Qt::DisplayRole, nickname, 1, Qt::MatchExactly); + + if(mil.size()) + removeRow(mil[0].row()); +} + + +void PlayersListModel::playerJoinedRoom(const QString & nickname) +{ + QModelIndexList mil = match(index(0), Qt::DisplayRole, nickname, 1, Qt::MatchExactly); + + if(mil.size()) + { + setData(mil[0], true, RoomFilterRole); + updateIcon(mil[0]); + updateSortData(mil[0]); + } +} + + +void PlayersListModel::playerLeftRoom(const QString & nickname) +{ + QModelIndexList mil = match(index(0), Qt::DisplayRole, nickname, 1, Qt::MatchExactly); + + if(mil.size()) + { + setData(mil[0], false, RoomFilterRole); + setData(mil[0], false, RoomAdmin); + setData(mil[0], false, Ready); + setData(mil[0], false, InGame); + updateIcon(mil[0]); + } +} + + +void PlayersListModel::setFlag(const QString &nickname, StateFlag flagType, bool isSet) +{ + QModelIndexList mil = match(index(0), Qt::DisplayRole, nickname, 1, Qt::MatchExactly); + + if(mil.size()) + { + setData(mil[0], isSet, flagType); + + if(flagType == Friend || flagType == ServerAdmin + || flagType == Ignore || flagType == RoomAdmin) + updateSortData(mil[0]); + + if(flagType == Friend) + { + if(isSet) + m_friendsSet.insert(nickname.toLower()); + else + m_friendsSet.remove(nickname.toLower()); + + saveSet(m_friendsSet, "friends"); + } + + if(flagType == Ignore) + { + if(isSet) + m_ignoredSet.insert(nickname.toLower()); + else + m_ignoredSet.remove(nickname.toLower()); + + saveSet(m_ignoredSet, "ignore"); + } + + updateIcon(mil[0]); + } +} + + +bool PlayersListModel::isFlagSet(const QString & nickname, StateFlag flagType) +{ + QModelIndexList mil = match(index(0), Qt::DisplayRole, nickname, 1, Qt::MatchExactly); + + if(mil.size()) + return mil[0].data(flagType).toBool(); + else + return false; +} + +void PlayersListModel::resetRoomFlags() +{ + for(int i = rowCount() - 1; i >= 0; --i) + { + QModelIndex mi = index(i); + + if(mi.data(RoomFilterRole).toBool()) + { + setData(mi, false, RoomFilterRole); + setData(mi, false, RoomAdmin); + setData(mi, false, Ready); + setData(mi, false, InGame); + + updateSortData(mi); + updateIcon(mi); + } + } +} + +void PlayersListModel::updateIcon(const QModelIndex & index) +{ + quint32 iconNum = 0; + + QList flags; + flags + << index.data(Ready).toBool() + << index.data(ServerAdmin).toBool() + << index.data(RoomAdmin).toBool() + << index.data(Registered).toBool() + << index.data(Friend).toBool() + << index.data(Ignore).toBool() + << index.data(InGame).toBool() + << index.data(RoomFilterRole).toBool() + ; + + for(int i = flags.size() - 1; i >= 0; --i) + if(flags[i]) + iconNum |= 1 << i; + + if(m_icons().contains(iconNum)) + { + setData(index, m_icons().value(iconNum), Qt::DecorationRole); + } + else + { + QPixmap result(24, 16); + result.fill(Qt::transparent); + + QPainter painter(&result); + + 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/"); + + if(index.data(RoomAdmin).toBool()) + mainIconName += "roomadmin"; + else if(index.data(ServerAdmin).toBool()) + mainIconName += "serveradmin"; + else + mainIconName += "hedgehog"; + + if(!index.data(Registered).toBool()) + mainIconName += "_gray"; + + painter.drawPixmap(8, 0, 16, 16, QPixmap(mainIconName + ".png")); + + if(index.data(Ignore).toBool()) + painter.drawPixmap(8, 0, 16, 16, QPixmap(":/res/chat/ignore.png")); + else + if(index.data(Friend).toBool()) + painter.drawPixmap(8, 0, 16, 16, QPixmap(":/res/chat/friend.png")); + + painter.end(); + + QIcon icon(result); + + setData(index, icon, Qt::DecorationRole); + m_icons().insert(iconNum, icon); + } + + if(index.data(Ignore).toBool()) + setData(index, Qt::gray, Qt::ForegroundRole); + else + if(index.data(Friend).toBool()) + setData(index, Qt::green, Qt::ForegroundRole); + else + setData(index, QBrush(QColor(0xff, 0xcc, 0x00)), Qt::ForegroundRole); +} + + +QHash & PlayersListModel::m_icons() +{ + static QHash iconsCache; + + return iconsCache; +} + + +void PlayersListModel::updateSortData(const QModelIndex & index) +{ + QString result = QString("%1%2%3%4%5%6") + // room admins go first, then server admins, then friends + .arg(1 - index.data(RoomAdmin).toInt()) + .arg(1 - index.data(ServerAdmin).toInt()) + .arg(1 - index.data(Friend).toInt()) + // ignored at bottom + .arg(index.data(Ignore).toInt()) + // keep nicknames starting from non-letter character at bottom within group + // assume there are no empty nicks in list + .arg(index.data(Qt::DisplayRole).toString().at(0).isLetter() ? 0 : 1) + // sort ignoring case + .arg(index.data(Qt::DisplayRole).toString().toLower()) + ; + + setData(index, result, SortRole); +} + + +void PlayersListModel::setNickname(const QString &nickname) +{ + m_nickname = nickname; + + loadSet(m_friendsSet, "friends"); + loadSet(m_ignoredSet, "ignore"); + + for(int i = rowCount() - 1; i >= 0; --i) + checkFriendIgnore(index(i)); +} + + +void PlayersListModel::checkFriendIgnore(const QModelIndex &mi) +{ + setData(mi, m_friendsSet.contains(mi.data().toString().toLower()), Friend); + setData(mi, m_ignoredSet.contains(mi.data().toString().toLower()), Ignore); + + updateIcon(mi); + updateSortData(mi); +} + +void PlayersListModel::loadSet(QSet & set, const QString & suffix) +{ + set.clear(); + + QString fileName = QString("%1/%2_%3.txt").arg(cfgdir->absolutePath(), m_nickname.toLower(), suffix); + + QFile txt(fileName); + if(!txt.open(QIODevice::ReadOnly)) + return; + + QTextStream stream(&txt); + stream.setCodec("UTF-8"); + + while(!stream.atEnd()) + { + QString str = stream.readLine(); + if(str.startsWith(";") || str.isEmpty()) + continue; + + set.insert(str.trimmed()); + } + + txt.close(); +} + +void PlayersListModel::saveSet(const QSet & set, const QString & suffix) +{ + qDebug("saving set"); + + QString fileName = QString("%1/%2_%3.txt").arg(cfgdir->absolutePath(), m_nickname.toLower(), suffix); + + QFile txt(fileName); + + // list empty? => rather have no file for the list than an empty one + if (set.isEmpty()) + { + if (txt.exists()) + { + // try to remove file, if successful we're done here. + if (txt.remove()) + return; + } + else + // there is no file + return; + } + + if(!txt.open(QIODevice::WriteOnly | QIODevice::Truncate)) + return; + + QTextStream stream(&txt); + stream.setCodec("UTF-8"); + + stream << "; this list is used by Hedgewars - do not edit it unless you know what you're doing!" << endl; + + foreach(const QString & nick, set.values()) + stream << nick << endl; + + txt.close(); +} diff -r 6237d2f002ba -r 2bc61f8841a1 QTfrontend/model/playerslistmodel.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/QTfrontend/model/playerslistmodel.h Sun Oct 28 15:12:37 2012 +0100 @@ -0,0 +1,65 @@ +#ifndef PLAYERSLISTMODEL_H +#define PLAYERSLISTMODEL_H + +#include +#include +#include +#include +#include + +class PlayersListModel : public QAbstractListModel +{ + Q_OBJECT + +public: + enum StateFlag { + Ready = Qt::UserRole, + ServerAdmin = Qt::UserRole + 1, + RoomAdmin = Qt::UserRole + 2, + Registered = Qt::UserRole + 3, + Friend = Qt::UserRole + 4, + Ignore = Qt::UserRole + 5, + InGame = Qt::UserRole + 6 + }; + + enum SpecialRoles { + SortRole = Qt::UserRole + 100, + RoomFilterRole = Qt::UserRole + 101 + }; + + explicit PlayersListModel(QObject *parent = 0); + + int rowCount(const QModelIndex &parent = QModelIndex()) const; + + QVariant data(const QModelIndex &index, int role) const; + bool setData(const QModelIndex &index, const QVariant &value, int role = Qt::DisplayRole); + void setFlag(const QString & nickname, StateFlag flagType, bool isSet); + bool isFlagSet(const QString & nickname, StateFlag flagType); + + bool insertRow(int row, const QModelIndex &parent = QModelIndex()); + bool insertRows(int row, int count, const QModelIndex &parent = QModelIndex()); + bool removeRows(int row, int count, const QModelIndex &parent = QModelIndex()); + +public slots: + void addPlayer(const QString & nickname); + void removePlayer(const QString & nickname); + void playerJoinedRoom(const QString & nickname); + void playerLeftRoom(const QString & nickname); + void resetRoomFlags(); + void setNickname(const QString & nickname); + +private: + QHash & m_icons(); + typedef QHash DataEntry; + QList m_data; + QSet m_friendsSet, m_ignoredSet; + QString m_nickname; + + void updateIcon(const QModelIndex & index); + void updateSortData(const QModelIndex & index); + void loadSet(QSet & set, const QString & suffix); + void saveSet(const QSet & set, const QString & suffix); + void checkFriendIgnore(const QModelIndex & mi); +}; + +#endif // PLAYERSLISTMODEL_H diff -r 6237d2f002ba -r 2bc61f8841a1 QTfrontend/net/netserver.cpp --- a/QTfrontend/net/netserver.cpp Sun Sep 16 23:52:36 2012 +0200 +++ b/QTfrontend/net/netserver.cpp Sun Oct 28 15:12:37 2012 +0100 @@ -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 6237d2f002ba -r 2bc61f8841a1 QTfrontend/net/newnetclient.cpp --- a/QTfrontend/net/newnetclient.cpp Sun Sep 16 23:52:36 2012 +0200 +++ b/QTfrontend/net/newnetclient.cpp Sun Oct 28 15:12:37 2012 +0100 @@ -20,12 +20,14 @@ #include #include #include +#include #include "hwconsts.h" #include "newnetclient.h" #include "proto.h" #include "game.h" #include "roomslistmodel.h" +#include "playerslistmodel.h" char delimeter='\n'; @@ -36,7 +38,24 @@ netClientState(Disconnected) { m_roomsListModel = new RoomsListModel(this); -// socket stuff + + m_playersModel = new PlayersListModel(this); + + m_lobbyPlayersModel = new QSortFilterProxyModel(this); + m_lobbyPlayersModel->setSourceModel(m_playersModel); + m_lobbyPlayersModel->setSortRole(PlayersListModel::SortRole); + m_lobbyPlayersModel->setDynamicSortFilter(true); + m_lobbyPlayersModel->sort(0); + + m_roomPlayersModel = new QSortFilterProxyModel(this); + m_roomPlayersModel->setSourceModel(m_playersModel); + m_roomPlayersModel->setSortRole(PlayersListModel::SortRole); + m_roomPlayersModel->setDynamicSortFilter(true); + m_roomPlayersModel->sort(0); + m_roomPlayersModel->setFilterRole(PlayersListModel::RoomFilterRole); + m_roomPlayersModel->setFilterFixedString("true"); + + // socket stuff connect(&NetSocket, SIGNAL(readyRead()), this, SLOT(ClientRead())); connect(&NetSocket, SIGNAL(connected()), this, SLOT(OnConnect())); connect(&NetSocket, SIGNAL(disconnected()), this, SLOT(OnDisconnect())); @@ -83,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) @@ -224,6 +240,7 @@ if (lst[0] == "NICK") { mynick = lst[1]; + m_playersModel->setNickname(mynick); return ; } @@ -375,13 +392,19 @@ 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; + + case 'g': + foreach(const QString & nick, nicks) + m_playersModel->setFlag(nick, PlayersListModel::InGame, setFlag); break; // flag indicating if a player is the host/master of the room @@ -394,7 +417,7 @@ emit roomMaster(isChief); } - emit setRoomMasterStatus(nick, setFlag); + m_playersModel->setFlag(nick, PlayersListModel::RoomAdmin, setFlag); } break; @@ -405,7 +428,7 @@ if (nick == mynick) emit adminAccess(setFlag); - emit setAdminStatus(nick, setFlag); + m_playersModel->setFlag(nick, PlayersListModel::ServerAdmin, setFlag); } break; @@ -422,6 +445,8 @@ netClientState = InLobby; askRoomsList(); emit LeftRoom(tr("You got kicked")); + m_playersModel->resetRoomFlags(); + return; } @@ -444,6 +469,7 @@ emit nickAddedLobby(lst[i], false); emit chatStringLobby(lst[i], tr("%1 *** %2 has joined").arg('\x03').arg("|nick|")); + m_playersModel->addPlayer(lst[i]); } return; } @@ -466,6 +492,11 @@ QString roomName = tmp.takeFirst(); m_roomsListModel->updateRoom(roomName, tmp); + + // keep track of room name so correct name is displayed when you become room admin + if(myroom == roomName) + myroom = tmp[1]; + return; } @@ -487,6 +518,9 @@ emit chatStringLobby(tr("%1 *** %2 has left").arg('\x03').arg(lst[1])); else emit chatStringLobby(lst[1], tr("%1 *** %2 has left (%3)").arg('\x03').arg("|nick|", lst[2])); + + m_playersModel->removePlayer(lst[1]); + return; } @@ -561,6 +595,7 @@ emit nickAdded(lst[i], isChief && (lst[i] != mynick)); emit chatStringFromNet(tr("%1 *** %2 has joined the room").arg('\x03').arg(lst[i])); + m_playersModel->playerJoinedRoom(lst[i]); } return; } @@ -609,7 +644,7 @@ if(lst[0] == "ROOMABANDONED") { netClientState = InLobby; - askRoomsList(); + m_playersModel->resetRoomFlags(); emit LeftRoom(tr("Room destroyed")); return; } @@ -687,6 +722,7 @@ { emit nickAdded(lst[i], isChief && (lst[i] != mynick)); emit chatStringFromNet(tr("%1 *** %2 has joined the room").arg('\x03').arg(lst[i])); + m_playersModel->playerJoinedRoom(lst[i]); } return; } @@ -703,6 +739,7 @@ emit chatStringFromNet(tr("%1 *** %2 has left").arg('\x03').arg(lst[1])); else emit chatStringFromNet(tr("%1 *** %2 has left (%3)").arg('\x03').arg(lst[1], lst[2])); + m_playersModel->playerLeftRoom(lst[1]); return; } @@ -870,8 +907,8 @@ void HWNewNet::partRoom() { netClientState = InLobby; + m_playersModel->resetRoomFlags(); RawSendNet(QString("PART")); - askRoomsList(); } bool HWNewNet::isInRoom() @@ -915,3 +952,13 @@ { return m_roomsListModel; } + +QAbstractItemModel *HWNewNet::lobbyPlayersModel() +{ + return m_lobbyPlayersModel; +} + +QAbstractItemModel *HWNewNet::roomPlayersModel() +{ + return m_roomPlayersModel; +} diff -r 6237d2f002ba -r 2bc61f8841a1 QTfrontend/net/newnetclient.h --- a/QTfrontend/net/newnetclient.h Sun Sep 16 23:52:36 2012 +0200 +++ b/QTfrontend/net/newnetclient.h Sun Oct 28 15:12:37 2012 +0100 @@ -32,6 +32,9 @@ class GameCFGWidget; class TeamSelWidget; class RoomsListModel; +class PlayersListModel; +class QSortFilterProxyModel; +class QAbstractItemModel; extern char delimeter; @@ -55,6 +58,8 @@ QString getRoom(); QString getHost(); RoomsListModel * roomsListModel(); + QAbstractItemModel * lobbyPlayersModel(); + QAbstractItemModel * roomPlayersModel(); private: bool isChief; @@ -65,6 +70,9 @@ QString seed; bool m_game_connected; RoomsListModel * m_roomsListModel; + PlayersListModel * m_playersModel; + QSortFilterProxyModel * m_lobbyPlayersModel; + QSortFilterProxyModel * m_roomPlayersModel; QStringList cmdbuf; @@ -116,11 +124,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 6237d2f002ba -r 2bc61f8841a1 QTfrontend/net/recorder.cpp --- a/QTfrontend/net/recorder.cpp Sun Sep 16 23:52:36 2012 +0200 +++ b/QTfrontend/net/recorder.cpp Sun Oct 28 15:12:37 2012 +0100 @@ -18,7 +18,6 @@ #include #include -//#include #include "recorder.h" #include "gameuiconfig.h" diff -r 6237d2f002ba -r 2bc61f8841a1 QTfrontend/net/tcpBase.cpp --- a/QTfrontend/net/tcpBase.cpp Sun Sep 16 23:52:36 2012 +0200 +++ b/QTfrontend/net/tcpBase.cpp Sun Oct 28 15:12:37 2012 +0100 @@ -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 6237d2f002ba -r 2bc61f8841a1 QTfrontend/res/chat/friend.png Binary file QTfrontend/res/chat/friend.png has changed diff -r 6237d2f002ba -r 2bc61f8841a1 QTfrontend/res/chat/hedgehog.png Binary file QTfrontend/res/chat/hedgehog.png has changed diff -r 6237d2f002ba -r 2bc61f8841a1 QTfrontend/res/chat/hedgehog_gray.png Binary file QTfrontend/res/chat/hedgehog_gray.png has changed diff -r 6237d2f002ba -r 2bc61f8841a1 QTfrontend/res/chat/ignore.png Binary file QTfrontend/res/chat/ignore.png has changed diff -r 6237d2f002ba -r 2bc61f8841a1 QTfrontend/res/chat/ingame.png Binary file QTfrontend/res/chat/ingame.png has changed diff -r 6237d2f002ba -r 2bc61f8841a1 QTfrontend/res/chat/lamp.png Binary file QTfrontend/res/chat/lamp.png has changed diff -r 6237d2f002ba -r 2bc61f8841a1 QTfrontend/res/chat/lamp_off.png Binary file QTfrontend/res/chat/lamp_off.png has changed diff -r 6237d2f002ba -r 2bc61f8841a1 QTfrontend/res/chat/roomadmin.png Binary file QTfrontend/res/chat/roomadmin.png has changed diff -r 6237d2f002ba -r 2bc61f8841a1 QTfrontend/res/chat/roomadmin_gray.png Binary file QTfrontend/res/chat/roomadmin_gray.png has changed diff -r 6237d2f002ba -r 2bc61f8841a1 QTfrontend/res/chat/serveradmin.png Binary file QTfrontend/res/chat/serveradmin.png has changed diff -r 6237d2f002ba -r 2bc61f8841a1 QTfrontend/res/chat/serveradmin_gray.png Binary file QTfrontend/res/chat/serveradmin_gray.png has changed diff -r 6237d2f002ba -r 2bc61f8841a1 QTfrontend/res/chat_default.png Binary file QTfrontend/res/chat_default.png has changed diff -r 6237d2f002ba -r 2bc61f8841a1 QTfrontend/res/chat_default_off.png Binary file QTfrontend/res/chat_default_off.png has changed diff -r 6237d2f002ba -r 2bc61f8841a1 QTfrontend/res/chat_default_on.png Binary file QTfrontend/res/chat_default_on.png has changed diff -r 6237d2f002ba -r 2bc61f8841a1 QTfrontend/res/chat_friend.png Binary file QTfrontend/res/chat_friend.png has changed diff -r 6237d2f002ba -r 2bc61f8841a1 QTfrontend/res/chat_friend_off.png Binary file QTfrontend/res/chat_friend_off.png has changed diff -r 6237d2f002ba -r 2bc61f8841a1 QTfrontend/res/chat_friend_on.png Binary file QTfrontend/res/chat_friend_on.png has changed diff -r 6237d2f002ba -r 2bc61f8841a1 QTfrontend/res/chat_ignore.png Binary file QTfrontend/res/chat_ignore.png has changed diff -r 6237d2f002ba -r 2bc61f8841a1 QTfrontend/res/chat_ignore_off.png Binary file QTfrontend/res/chat_ignore_off.png has changed diff -r 6237d2f002ba -r 2bc61f8841a1 QTfrontend/res/chat_ignore_on.png Binary file QTfrontend/res/chat_ignore_on.png has changed diff -r 6237d2f002ba -r 2bc61f8841a1 QTfrontend/res/css/qt.css --- a/QTfrontend/res/css/qt.css Sun Sep 16 23:52:36 2012 +0200 +++ b/QTfrontend/res/css/qt.css Sun Oct 28 15:12:37 2012 +0100 @@ -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 { @@ -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 6237d2f002ba -r 2bc61f8841a1 QTfrontend/ui/dialog/ask_quit.cpp --- a/QTfrontend/ui/dialog/ask_quit.cpp Sun Sep 16 23:52:36 2012 +0200 +++ b/QTfrontend/ui/dialog/ask_quit.cpp Sun Oct 28 15:12:37 2012 +0100 @@ -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 6237d2f002ba -r 2bc61f8841a1 QTfrontend/ui/dialog/input_ip.cpp --- a/QTfrontend/ui/dialog/input_ip.cpp Sun Sep 16 23:52:36 2012 +0200 +++ b/QTfrontend/ui/dialog/input_ip.cpp Sun Oct 28 15:12:37 2012 +0100 @@ -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 6237d2f002ba -r 2bc61f8841a1 QTfrontend/ui/dialog/input_password.cpp --- a/QTfrontend/ui/dialog/input_password.cpp Sun Sep 16 23:52:36 2012 +0200 +++ b/QTfrontend/ui/dialog/input_password.cpp Sun Oct 28 15:12:37 2012 +0100 @@ -50,4 +50,6 @@ connect(pbOK, SIGNAL(clicked()), this, SLOT(accept())); connect(pbCancel, SIGNAL(clicked()), this, SLOT(reject())); + + this->setWindowModality(Qt::WindowModal); } diff -r 6237d2f002ba -r 2bc61f8841a1 QTfrontend/ui/dialog/upload_video.cpp --- a/QTfrontend/ui/dialog/upload_video.cpp Sun Sep 16 23:52:36 2012 +0200 +++ b/QTfrontend/ui/dialog/upload_video.cpp Sun Oct 28 15:12:37 2012 +0100 @@ -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 6237d2f002ba -r 2bc61f8841a1 QTfrontend/ui/page/AbstractPage.cpp --- a/QTfrontend/ui/page/AbstractPage.cpp Sun Sep 16 23:52:36 2012 +0200 +++ b/QTfrontend/ui/page/AbstractPage.cpp Sun Oct 28 15:12:37 2012 +0100 @@ -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 6237d2f002ba -r 2bc61f8841a1 QTfrontend/ui/page/AbstractPage.h --- a/QTfrontend/ui/page/AbstractPage.h Sun Sep 16 23:52:36 2012 +0200 +++ b/QTfrontend/ui/page/AbstractPage.h Sun Oct 28 15:12:37 2012 +0100 @@ -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 6237d2f002ba -r 2bc61f8841a1 QTfrontend/ui/page/pagedata.cpp --- a/QTfrontend/ui/page/pagedata.cpp Sun Sep 16 23:52:36 2012 +0200 +++ b/QTfrontend/ui/page/pagedata.cpp Sun Oct 28 15:12:37 2012 +0100 @@ -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 6237d2f002ba -r 2bc61f8841a1 QTfrontend/ui/page/pageeditteam.cpp --- a/QTfrontend/ui/page/pageeditteam.cpp Sun Sep 16 23:52:36 2012 +0200 +++ b/QTfrontend/ui/page/pageeditteam.cpp Sun Oct 28 15:12:37 2012 +0100 @@ -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 6237d2f002ba -r 2bc61f8841a1 QTfrontend/ui/page/pagegamestats.cpp --- a/QTfrontend/ui/page/pagegamestats.cpp Sun Sep 16 23:52:36 2012 +0200 +++ b/QTfrontend/ui/page/pagegamestats.cpp Sun Oct 28 15:12:37 2012 +0100 @@ -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 6237d2f002ba -r 2bc61f8841a1 QTfrontend/ui/page/pagemain.cpp --- a/QTfrontend/ui/page/pagemain.cpp Sun Sep 16 23:52:36 2012 +0200 +++ b/QTfrontend/ui/page/pagemain.cpp Sun Oct 28 15:12:37 2012 +0100 @@ -58,9 +58,11 @@ BtnInfo->setWhatsThis(tr("Read about who is behind the Hedgewars Project")); pageLayout->setAlignment(BtnInfo, Qt::AlignHCenter); +#if 0 BtnFeedback = addButton("Feedback", pageLayout, 4, 0, 1, 4, false); BtnFeedback->setWhatsThis(tr("Leave a feedback here reporting issues, suggesting features or just saying how you like Hedgewars")); pageLayout->setAlignment(BtnFeedback, Qt::AlignHCenter); +#endif BtnDataDownload = addButton(tr("Downloadable Content"), pageLayout, 5, 0, 1, 4, false); //BtnDataDownload->setToolTip(tr(Downloadable Content")); diff -r 6237d2f002ba -r 2bc61f8841a1 QTfrontend/ui/page/pagenet.cpp --- a/QTfrontend/ui/page/pagenet.cpp Sun Sep 16 23:52:36 2012 +0200 +++ b/QTfrontend/ui/page/pagenet.cpp Sun Oct 28 15:12:37 2012 +0100 @@ -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 6237d2f002ba -r 2bc61f8841a1 QTfrontend/ui/page/pagenetgame.cpp --- a/QTfrontend/ui/page/pagenetgame.cpp Sun Sep 16 23:52:36 2012 +0200 +++ b/QTfrontend/ui/page/pagenetgame.cpp Sun Oct 28 15:12:37 2012 +0100 @@ -38,7 +38,6 @@ // chatwidget pChatWidget = new HWChatWidget(this, m_gameSettings, true); - pChatWidget->setShowReady(true); // show status bulbs by default pChatWidget->setShowFollow(false); // don't show follow in nicks' context menus pChatWidget->setIgnoreListKick(true); // kick ignored players automatically pageLayout->addWidget(pChatWidget, 2, 0, 1, 2); @@ -63,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); @@ -80,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())); @@ -158,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(); } } @@ -178,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 6237d2f002ba -r 2bc61f8841a1 QTfrontend/ui/page/pagenetgame.h --- a/QTfrontend/ui/page/pagenetgame.h Sun Sep 16 23:52:36 2012 +0200 +++ b/QTfrontend/ui/page/pagenetgame.h Sun Oct 28 15:12:37 2012 +0100 @@ -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 6237d2f002ba -r 2bc61f8841a1 QTfrontend/ui/page/pageoptions.cpp --- a/QTfrontend/ui/page/pageoptions.cpp Sun Sep 16 23:52:36 2012 +0200 +++ b/QTfrontend/ui/page/pageoptions.cpp Sun Oct 28 15:12:37 2012 +0100 @@ -442,7 +442,55 @@ gbCLayout->addWidget(BtnAssociateFiles); } - page2Layout->addWidget(new QWidget(this), 1, 0); + { + IconedGroupBox * gbProxy = new IconedGroupBox(this); + gbProxy->setIcon(QIcon(":/res/Settings.png")); + gbProxy->setTitle(QGroupBox::tr("Proxy settings")); + page2Layout->addWidget(gbProxy, 1, 0); + QGridLayout * gbLayout = new QGridLayout(gbProxy); + + QStringList sl; + sl + << tr("Proxy host") + << tr("Proxy port") + << tr("Proxy login") + << tr("Proxy password") + ; + for(int i = 0; i < sl.size(); ++i) + { + QLabel * l = new QLabel(gbProxy); + l->setText(sl[i]); + gbLayout->addWidget(l, i + 1, 0); + } + + cbProxyType = new QComboBox(gbProxy); + cbProxyType->addItems(QStringList() + << tr("No proxy") + << tr("System proxy settings") + << tr("Socks5 proxy") + << tr("HTTP proxy")); + gbLayout->addWidget(cbProxyType, 0, 1); + + leProxy = new QLineEdit(gbProxy); + gbLayout->addWidget(leProxy, 1, 1); + + sbProxyPort = new QSpinBox(gbProxy); + sbProxyPort->setMaximum(65535); + gbLayout->addWidget(sbProxyPort, 2, 1); + + leProxyLogin = new QLineEdit(gbProxy); + gbLayout->addWidget(leProxyLogin, 3, 1); + + leProxyPassword = new QLineEdit(gbProxy); + leProxyPassword->setEchoMode(QLineEdit::Password); + gbLayout->addWidget(leProxyPassword, 4, 1); + + + connect(cbProxyType, SIGNAL(currentIndexChanged(int)), this, SLOT(onProxyTypeChanged())); + onProxyTypeChanged(); + } + + page2Layout->addWidget(new QWidget(this), 2, 0); } previousQuality = this->SLQuality->value(); @@ -576,3 +624,13 @@ m_colorButtons[topLeft.row()]->setStyleSheet(QString("background: %1").arg(model->item(topLeft.row())->data().value().name())); } + +void PageOptions::onProxyTypeChanged() +{ + bool b = cbProxyType->currentIndex() != NoProxy && cbProxyType->currentIndex() != SystemProxy ; + + sbProxyPort->setEnabled(b); + leProxy->setEnabled(b); + leProxyLogin->setEnabled(b); + leProxyPassword->setEnabled(b); +} diff -r 6237d2f002ba -r 2bc61f8841a1 QTfrontend/ui/page/pageoptions.h --- a/QTfrontend/ui/page/pageoptions.h Sun Sep 16 23:52:36 2012 +0200 +++ b/QTfrontend/ui/page/pageoptions.h Sun Oct 28 15:12:37 2012 +0100 @@ -30,6 +30,13 @@ Q_OBJECT public: + enum ProxyTypes { + NoProxy = 0, + SystemProxy = 1, + Socks5Proxy = 2, + HTTPProxy = 3 + }; + PageOptions(QWidget* parent = 0); QCheckBox *WeaponTooltip; @@ -44,7 +51,7 @@ QComboBox *CBLanguage; - IconedGroupBox *teamsBox;; + IconedGroupBox *teamsBox; QPushButton *BtnAssociateFiles; QComboBox *CBTeamName; IconedGroupBox *AGGroupBox; @@ -71,6 +78,11 @@ QLineEdit *editNetPassword; QSlider *SLQuality; QCheckBox *CBFrontendEffects; + QComboBox * cbProxyType; + QSpinBox * sbProxyPort; + QLineEdit * leProxy; + QLineEdit * leProxyLogin; + QLineEdit * leProxyPassword; void setTeamOptionsEnabled(bool enabled); @@ -105,6 +117,7 @@ void savePwdChanged(int state); void colorButtonClicked(int i); void onColorModelDataChanged(const QModelIndex & topLeft, const QModelIndex & bottomRight); + void onProxyTypeChanged(); }; #endif diff -r 6237d2f002ba -r 2bc61f8841a1 QTfrontend/ui/page/pageplayrecord.cpp --- a/QTfrontend/ui/page/pageplayrecord.cpp Sun Sep 16 23:52:36 2012 +0200 +++ b/QTfrontend/ui/page/pageplayrecord.cpp Sun Oct 28 15:12:37 2012 +0100 @@ -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 6237d2f002ba -r 2bc61f8841a1 QTfrontend/ui/page/pageroomslist.cpp --- a/QTfrontend/ui/page/pageroomslist.cpp Sun Sep 16 23:52:36 2012 +0200 +++ b/QTfrontend/ui/page/pageroomslist.cpp Sun Oct 28 15:12:37 2012 +0100 @@ -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 6237d2f002ba -r 2bc61f8841a1 QTfrontend/ui/page/pageroomslist.h --- a/QTfrontend/ui/page/pageroomslist.h Sun Sep 16 23:52:36 2012 +0200 +++ b/QTfrontend/ui/page/pageroomslist.h Sun Oct 28 15:12:37 2012 +0100 @@ -42,7 +42,6 @@ QTableView * roomsList; QPushButton * BtnCreate; QPushButton * BtnJoin; - QPushButton * BtnRefresh; QPushButton * BtnAdmin; QPushButton * BtnClear; QComboBox * CBState; diff -r 6237d2f002ba -r 2bc61f8841a1 QTfrontend/ui/page/pagescheme.cpp --- a/QTfrontend/ui/page/pagescheme.cpp Sun Sep 16 23:52:36 2012 +0200 +++ b/QTfrontend/ui/page/pagescheme.cpp Sun Oct 28 15:12:37 2012 +0100 @@ -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 6237d2f002ba -r 2bc61f8841a1 QTfrontend/ui/page/pagevideos.cpp --- a/QTfrontend/ui/page/pagevideos.cpp Sun Sep 16 23:52:36 2012 +0200 +++ b/QTfrontend/ui/page/pagevideos.cpp Sun Oct 28 15:12:37 2012 +0100 @@ -839,11 +839,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?").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 @@ -860,11 +863,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 +1087,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 6237d2f002ba -r 2bc61f8841a1 QTfrontend/ui/widget/about.cpp --- a/QTfrontend/ui/widget/about.cpp Sun Sep 16 23:52:36 2012 +0200 +++ b/QTfrontend/ui/widget/about.cpp Sun Oct 28 15:12:37 2012 +0100 @@ -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 6237d2f002ba -r 2bc61f8841a1 QTfrontend/ui/widget/chatwidget.cpp --- a/QTfrontend/ui/widget/chatwidget.cpp Sun Sep 16 23:52:36 2012 +0200 +++ b/QTfrontend/ui/widget/chatwidget.cpp Sun Oct 28 15:12:37 2012 +0100 @@ -19,88 +19,26 @@ #include #include -#include #include -#include #include -#include -#include #include #include #include -#include #include -#include #include #include - -#include - +#include +#include +#include +#include #include "DataManager.h" #include "hwconsts.h" #include "gameuiconfig.h" +#include "playerslistmodel.h" #include "chatwidget.h" -ListWidgetNickItem::ListWidgetNickItem(const QString& nick, bool isFriend, bool isIgnored) : QListWidgetItem(nick) -{ - this->aFriend = isFriend; - this->isIgnored = isIgnored; -} - -void ListWidgetNickItem::setFriend(bool isFriend) -{ - this->aFriend = isFriend; -} - -void ListWidgetNickItem::setIgnored(bool isIgnored) -{ - this->isIgnored = isIgnored; -} - -bool ListWidgetNickItem::isFriend() -{ - return aFriend; -} - -bool ListWidgetNickItem::ignored() -{ - return isIgnored; -} - -bool ListWidgetNickItem::operator< (const QListWidgetItem & other) const -{ - // case in-sensitive comparison of the associated strings - // chars that are no letters are sorted at the end of the list - - ListWidgetNickItem otherNick = const_cast(dynamic_cast(other)); - - // ignored always down - if (isIgnored != otherNick.ignored()) - return !isIgnored; - - // friends always up - if (aFriend != otherNick.isFriend()) - return aFriend; - - QString txt1 = text().toLower(); - QString txt2 = other.text().toLower(); - - bool firstIsShorter = (txt1.size() < txt2.size()); - int len = firstIsShorter?txt1.size():txt2.size(); - - for (int i = 0; i < len; i++) - { - if (txt1[i] == txt2[i]) - continue; - if (txt1[i].isLetter() != txt2[i].isLetter()) - return txt1[i].isLetter(); - return (txt1[i] < txt2[i]); - } - - return firstIsShorter; -} QString * HWChatWidget::s_styleSheet = NULL; QStringList * HWChatWidget::s_displayNone = NULL; @@ -289,16 +227,19 @@ this, SLOT(linkClicked(const QUrl&))); mainLayout.addWidget(chatText, 0, 0, 2, 1); - chatNicks = new QListWidget(this); + chatNicks = new QListView(this); + chatNicks->setIconSize(QSize(24, 16)); + chatNicks->setSelectionMode(QAbstractItemView::SingleSelection); + chatNicks->setEditTriggers(QAbstractItemView::NoEditTriggers); chatNicks->setMinimumHeight(10); chatNicks->setMinimumWidth(10); - chatNicks->setSortingEnabled(true); chatNicks->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding); - chatNicks->setContextMenuPolicy(Qt::ActionsContextMenu); - connect(chatNicks, SIGNAL(itemDoubleClicked(QListWidgetItem *)), - this, SLOT(chatNickDoubleClicked(QListWidgetItem *))); - connect(chatNicks, SIGNAL(currentRowChanged(int)), - this, SLOT(chatNickSelected(int))); + chatNicks->setContextMenuPolicy(Qt::CustomContextMenu); + + connect(chatNicks, SIGNAL(doubleClicked(QModelIndex)), + this, SLOT(chatNickDoubleClicked(QModelIndex))); + + connect(chatNicks, SIGNAL(customContextMenuRequested(QPoint)), this, SLOT(nicksContextMenuRequested(QPoint))); mainLayout.addWidget(chatNicks, 0, 1, 3, 1); @@ -333,10 +274,12 @@ chatNicks->insertAction(0, acInfo); chatNicks->insertAction(0, acIgnore); - showReady = false; setShowFollow(true); setAcceptDrops(true); + + m_nicksMenu = new QMenu(this); + clear(); } @@ -349,40 +292,21 @@ { // decode nick QString nick = QString::fromUtf8(QByteArray::fromBase64(link.encodedQuery())); - QList items = chatNicks->findItems(nick, Qt::MatchExactly); + QModelIndexList mil = chatNicks->model()->match(chatNicks->model()->index(0, 0), Qt::DisplayRole, nick); - bool isOffline = (items.size() < 1); - - QMenu * popup = new QMenu(this); + bool isOffline = (mil.size() < 1); if (isOffline) { m_clickedNick = nick; - chatNickSelected(0); // update friend and ignore entry - chatNicks->setCurrentItem(NULL, QItemSelectionModel::Clear); + chatNicks->selectionModel()->clearSelection(); } else { - // selecting an item will automatically scroll there, so let's save old position - QScrollBar * scrollBar = chatNicks->verticalScrollBar(); - int oldScrollPos = scrollBar->sliderPosition(); - // select the nick which we want to see the actions for - chatNicks->setCurrentItem(items[0], QItemSelectionModel::Clear); - // selecting an item will automatically scroll there, so let's save old position - scrollBar->setSliderPosition(oldScrollPos); + chatNicks->selectionModel()->select(mil[0], QItemSelectionModel::ClearAndSelect); } - // load actions - QList actions = chatNicks->actions(); - - foreach(QAction * action, actions) - { - if ((!isOffline) || (action->data().toBool())) - popup->addAction(action); - } - - // display menu popup at mouse cursor position - popup->popup(QCursor::pos()); + nicksContextMenuRequested(chatNicks->mapFromGlobal(QCursor::pos())); } } @@ -405,102 +329,6 @@ m_autoKickEnabled = enabled; } -void HWChatWidget::loadList(QStringList & list, const QString & file) -{ - list.clear(); - QFile txt(cfgdir->absolutePath() + "/" + file); - if(!txt.open(QIODevice::ReadOnly)) - return; - QTextStream stream(&txt); - stream.setCodec("UTF-8"); - - while(!stream.atEnd()) - { - QString str = stream.readLine(); - if(str.startsWith(";") || str.length() == 0) - continue; - list << str.trimmed(); - } - //readd once we require newer Qt than 4.4 - //list.removeDuplicates(); - txt.close(); -} - -void HWChatWidget::saveList(QStringList & list, const QString & file) -{ - QFile txt(cfgdir->absolutePath() + "/" + file); - - // list empty? => rather have no file for the list than an empty one - if (list.isEmpty()) - { - if (txt.exists()) - { - // try to remove file, if successful we're done here. - if (txt.remove()) - return; - } - else - // there is no file - return; - } - - if(!txt.open(QIODevice::WriteOnly | QIODevice::Truncate)) - return; - QTextStream stream(&txt); - stream.setCodec("UTF-8"); - - stream << "; this list is used by Hedgewars - do not edit it unless you know what you're doing!" << endl; - for(int i = 0; i < list.size(); i++) - stream << list[i] << endl; - txt.close(); -} - -void HWChatWidget::updateNickItem(QListWidgetItem *nickItem) -{ - QString nick = nickItem->text(); - ListWidgetNickItem * item = dynamic_cast(nickItem); - - item->setFriend(friendsList.contains(nick, Qt::CaseInsensitive)); - item->setIgnored(ignoreList.contains(nick, Qt::CaseInsensitive)); - - if(item->ignored()) - { - item->setIcon(QIcon(showReady ? (item->data(Qt::UserRole).toBool() ? ":/res/chat_ignore_on.png" : ":/res/chat_ignore_off.png") : ":/res/chat_ignore.png")); - item->setForeground(Qt::gray); - } - else if(item->isFriend()) - { - item->setIcon(QIcon(showReady ? (item->data(Qt::UserRole).toBool() ? ":/res/chat_friend_on.png" : ":/res/chat_friend_off.png") : ":/res/chat_friend.png")); - item->setForeground(Qt::green); - } - else - { - item->setIcon(QIcon(showReady ? (item->data(Qt::UserRole).toBool() ? ":/res/chat_default_on.png" : ":/res/chat_default_off.png") : ":/res/chat_default.png")); - item->setForeground(QBrush(QColor(0xff, 0xcc, 0x00))); - } -} - -void HWChatWidget::updateNickItems() -{ - for(int i = 0; i < chatNicks->count(); i++) - updateNickItem(chatNicks->item(i)); - - chatNicks->sortItems(); -} - -void HWChatWidget::loadLists(const QString & nick) -{ - loadList(ignoreList, nick.toLower() + "_ignore.txt"); - loadList(friendsList, nick.toLower() + "_friends.txt"); - updateNickItems(); -} - -void HWChatWidget::saveLists(const QString & nick) -{ - saveList(ignoreList, nick.toLower() + "_ignore.txt"); - saveList(friendsList, nick.toLower() + "_friends.txt"); -} - void HWChatWidget::returnPressed() { @@ -541,17 +369,24 @@ void HWChatWidget::onChatString(const QString& nick, const QString& str) { - bool isFriend = false; + QSortFilterProxyModel * playersSortFilterModel = qobject_cast(chatNicks->model()); + if(!playersSortFilterModel) + return; + + PlayersListModel * players = qobject_cast(playersSortFilterModel->sourceModel()); + + if(!players) + return; if (!nick.isEmpty()) { // don't show chat lines that are from ignored nicks - if (ignoreList.contains(nick, Qt::CaseInsensitive)) + if (players->isFlagSet(nick, PlayersListModel::Ignore)) return; - // friends will get special treatment, of course - isFriend = friendsList.contains(nick, Qt::CaseInsensitive); } + bool isFriend = (!nick.isEmpty()) && players->isFlagSet(nick, PlayersListModel::Friend); + QString formattedStr = Qt::escape(str.mid(1)); // make hedgewars.org urls actual links formattedStr = formattedStr.replace(URLREGEXP, "\\3"); @@ -639,9 +474,19 @@ chatText->moveCursor(QTextCursor::End); } + void HWChatWidget::nickAdded(const QString & nick, bool notifyNick) { - bool isIgnored = ignoreList.contains(nick, Qt::CaseInsensitive); + QSortFilterProxyModel * playersSortFilterModel = qobject_cast(chatNicks->model()); + if(!playersSortFilterModel) + return; + + PlayersListModel * players = qobject_cast(playersSortFilterModel->sourceModel()); + + if(!players) + return; + + bool isIgnored = players->isFlagSet(nick, PlayersListModel::Ignore); if (isIgnored && m_isAdmin && m_autoKickEnabled) { @@ -649,14 +494,10 @@ return; } - QListWidgetItem * item = new ListWidgetNickItem(nick, friendsList.contains(nick, Qt::CaseInsensitive), isIgnored); - updateNickItem(item); - chatNicks->addItem(item); - if ((!isIgnored) && (nick != m_userNick)) // don't auto-complete own name chatEditLine->addNickname(nick); - emit nickCountUpdate(chatNicks->count()); + emit nickCountUpdate(chatNicks->model()->rowCount()); if(notifyNick && notify && gameSettings->value("frontend/sound", true).toBool()) { @@ -669,10 +510,7 @@ { chatEditLine->removeNickname(nick); - foreach(QListWidgetItem * item, chatNicks->findItems(nick, Qt::MatchExactly)) - chatNicks->takeItem(chatNicks->row(item)); - - emit nickCountUpdate(chatNicks->count()); + emit nickCountUpdate(chatNicks->model()->rowCount()); } void HWChatWidget::clear() @@ -686,7 +524,7 @@ chatText->clear(); chatStrings.clear(); - chatNicks->clear(); + //chatNicks->clear(); // clear and re compile regexp for highlighting m_highlights.clear(); @@ -733,184 +571,123 @@ void HWChatWidget::onKick() { - QListWidgetItem * curritem = chatNicks->currentItem(); - if (curritem) - emit kick(curritem->text()); + QModelIndexList mil = chatNicks->selectionModel()->selectedRows(); + + if(mil.size()) + emit kick(mil[0].data().toString()); } void HWChatWidget::onBan() { - QListWidgetItem * curritem = chatNicks->currentItem(); - if (curritem) - emit ban(curritem->text()); + QModelIndexList mil = chatNicks->selectionModel()->selectedRows(); + + if(mil.size()) + emit ban(mil[0].data().toString()); } void HWChatWidget::onInfo() { - QListWidgetItem * curritem = chatNicks->currentItem(); - if (curritem) - emit info(curritem->text()); + QModelIndexList mil = chatNicks->selectionModel()->selectedRows(); + + if(mil.size()) + emit info(mil[0].data().toString()); } void HWChatWidget::onFollow() { - QListWidgetItem * curritem = chatNicks->currentItem(); - if (curritem) - emit follow(curritem->text()); + QModelIndexList mil = chatNicks->selectionModel()->selectedRows(); + + if(mil.size()) + emit follow(mil[0].data().toString()); } void HWChatWidget::onIgnore() { - QListWidgetItem * curritem = chatNicks->currentItem(); - QString nick = ""; - if(curritem != NULL) - nick = curritem->text(); + QModelIndexList mil = chatNicks->selectionModel()->selectedRows(); + + QString nick; + if(mil.size()) + nick = mil[0].data().toString(); else nick = m_clickedNick; - if(ignoreList.contains(nick, Qt::CaseInsensitive)) // already on list - remove him + QSortFilterProxyModel * playersSortFilterModel = qobject_cast(chatNicks->model()); + if(!playersSortFilterModel) + return; + + PlayersListModel * players = qobject_cast(playersSortFilterModel->sourceModel()); + + if(!players) + return; + + if(players->isFlagSet(nick, PlayersListModel::Ignore)) { - ignoreList.removeAll(nick.toLower()); + players->setFlag(nick, PlayersListModel::Ignore, false); chatEditLine->addNickname(nick); displayNotice(tr("%1 has been removed from your ignore list").arg(linkedNick(nick))); } else // not on list - add { // don't consider ignored people friends - if(friendsList.contains(nick, Qt::CaseInsensitive)) + if(players->isFlagSet(nick, PlayersListModel::Friend)) emit onFriend(); - // scroll down on first ignore added so that people see where that nick went to - if (ignoreList.isEmpty()) - chatNicks->scrollToBottom(); - - ignoreList << nick.toLower(); + players->setFlag(nick, PlayersListModel::Ignore, true); chatEditLine->removeNickname(nick); displayNotice(tr("%1 has been added to your ignore list").arg(linkedNick(nick))); } - if(curritem != NULL) - { - updateNickItem(curritem); // update icon/sort order/etc - chatNicks->sortItems(); - chatNickSelected(0); // update context menu - } + if(mil.size()) + chatNicks->scrollTo(chatNicks->selectionModel()->selectedRows()[0]); } void HWChatWidget::onFriend() { - QListWidgetItem * curritem = chatNicks->currentItem(); - QString nick = ""; - if(curritem != NULL) - nick = curritem->text(); + QModelIndexList mil = chatNicks->selectionModel()->selectedRows(); + + QString nick; + if(mil.size()) + nick = mil[0].data().toString(); else nick = m_clickedNick; - if(friendsList.contains(nick, Qt::CaseInsensitive)) // already on list - remove him + QSortFilterProxyModel * playersSortFilterModel = qobject_cast(chatNicks->model()); + if(!playersSortFilterModel) + return; + + PlayersListModel * players = qobject_cast(playersSortFilterModel->sourceModel()); + + if(!players) + return; + + if(players->isFlagSet(nick, PlayersListModel::Friend)) { - friendsList.removeAll(nick.toLower()); + players->setFlag(nick, PlayersListModel::Friend, false); + chatEditLine->removeNickname(nick); displayNotice(tr("%1 has been removed from your friends list").arg(linkedNick(nick))); } else // not on list - add { - // don't ignore the new friend - if(ignoreList.contains(nick, Qt::CaseInsensitive)) + if(players->isFlagSet(nick, PlayersListModel::Ignore)) emit onIgnore(); - // scroll up on first friend added so that people see where that nick went to - if (friendsList.isEmpty()) - chatNicks->scrollToTop(); - - friendsList << nick.toLower(); + players->setFlag(nick, PlayersListModel::Friend, true); + chatEditLine->addNickname(nick); displayNotice(tr("%1 has been added to your friends list").arg(linkedNick(nick))); } - if(curritem != NULL) - { - updateNickItem(curritem); // update icon/sort order/etc - chatNicks->sortItems(); - chatNickSelected(0); // update context menu - } + if(mil.size()) + chatNicks->scrollTo(chatNicks->selectionModel()->selectedRows()[0]); } -void HWChatWidget::chatNickDoubleClicked(QListWidgetItem * item) +void HWChatWidget::chatNickDoubleClicked(const QModelIndex &index) { - if (item != NULL) - m_clickedNick = item->text(); - else - m_clickedNick = ""; + m_clickedNick = index.data().toString(); + QList actions = chatNicks->actions(); actions.first()->activate(QAction::Trigger); } -void HWChatWidget::chatNickSelected(int index) -{ - Q_UNUSED(index); - - QListWidgetItem* item = chatNicks->currentItem(); - QString nick = ""; - if (item != NULL) - nick = item->text(); - else - nick = m_clickedNick; - - // don't display all actions for own nick - bool isSelf = (nick == m_userNick); - - acFollow->setVisible(!isSelf); - - // update context menu labels according to possible action - if(ignoreList.contains(nick, Qt::CaseInsensitive)) - { - acIgnore->setText(QAction::tr("Unignore")); - acIgnore->setIcon(QIcon(":/res/unignore.png")); - } - else - { - acIgnore->setText(QAction::tr("Ignore")); - acIgnore->setIcon(QIcon(":/res/ignore.png")); - acIgnore->setVisible(!isSelf); - } - - if(friendsList.contains(nick, Qt::CaseInsensitive)) - { - acFriend->setText(QAction::tr("Remove friend")); - acFriend->setIcon(QIcon(":/res/remfriend.png")); - } - else - { - acFriend->setText(QAction::tr("Add friend")); - acFriend->setIcon(QIcon(":/res/addfriend.png")); - acFriend->setVisible(!isSelf); - } - - if (m_isAdmin) - { - acKick->setVisible(!isSelf); - acBan->setVisible(!isSelf); - } -} - -void HWChatWidget::setShowReady(bool s) -{ - showReady = s; -} - -void HWChatWidget::setReadyStatus(const QString & nick, bool isReady) -{ - QList items = chatNicks->findItems(nick, Qt::MatchExactly); - if (items.size() != 1) - { - qWarning("Bug: cannot find user in chat"); - return; - } - - items[0]->setData(Qt::UserRole, isReady); // bulb status - updateNickItem(items[0]); - - // ensure we're still showing the status bulbs - showReady = true; -} void HWChatWidget::adminAccess(bool b) { @@ -1043,3 +820,75 @@ nickRemoved(nickname); clear(); } + + +void HWChatWidget::setUsersModel(QAbstractItemModel *model) +{ + chatNicks->selectionModel()->deleteLater(); + + chatNicks->setModel(model); + chatNicks->setModelColumn(0); +} + +void HWChatWidget::nicksContextMenuRequested(const QPoint &pos) +{ + QModelIndexList mil = chatNicks->selectionModel()->selectedRows(); + + QString nick; + + if(mil.size()) + nick = mil[0].data().toString(); + else + nick = m_clickedNick; + + QSortFilterProxyModel * playersSortFilterModel = qobject_cast(chatNicks->model()); + if(!playersSortFilterModel) + return; + + PlayersListModel * players = qobject_cast(playersSortFilterModel->sourceModel()); + + if(!players) + return; + + bool isSelf = (nick == m_userNick); + + acFollow->setVisible(!isSelf); + + // update context menu labels according to possible action + if(players->isFlagSet(nick, PlayersListModel::Ignore)) + { + acIgnore->setText(QAction::tr("Unignore")); + acIgnore->setIcon(QIcon(":/res/unignore.png")); + } + else + { + acIgnore->setText(QAction::tr("Ignore")); + acIgnore->setIcon(QIcon(":/res/ignore.png")); + acIgnore->setVisible(!isSelf); + } + + if(players->isFlagSet(nick, PlayersListModel::Friend)) + { + acFriend->setText(QAction::tr("Remove friend")); + acFriend->setIcon(QIcon(":/res/remfriend.png")); + } + else + { + acFriend->setText(QAction::tr("Add friend")); + acFriend->setIcon(QIcon(":/res/addfriend.png")); + acFriend->setVisible(!isSelf); + } + + if (m_isAdmin) + { + acKick->setVisible(!isSelf); + acBan->setVisible(!isSelf); + } + + m_nicksMenu->clear(); + + foreach(QAction * action, chatNicks->actions()) + m_nicksMenu->addAction(action); + + m_nicksMenu->popup(chatNicks->mapToGlobal(pos)); +} diff -r 6237d2f002ba -r 2bc61f8841a1 QTfrontend/ui/widget/chatwidget.h --- a/QTfrontend/ui/widget/chatwidget.h Sun Sep 16 23:52:36 2012 +0200 +++ b/QTfrontend/ui/widget/chatwidget.h Sun Oct 28 15:12:37 2012 +0100 @@ -21,39 +21,24 @@ #define _CHAT_WIDGET_INCLUDED #include -#include #include #include #include #include #include +#include +#include #include "SDLInteraction.h" #include "SmartLineEdit.h" -class ListWidgetNickItem; class QTextBrowser; class QLineEdit; -class QListWidget; +class QListView; class QSettings; - -/// Class for custom nickname sorting -class ListWidgetNickItem : public QListWidgetItem -{ - public: - ListWidgetNickItem(const QString& nick, bool isFriend, bool isIgnored); - bool operator<(const QListWidgetItem & other) const; - void setFriend(bool isFriend); - void setIgnored(bool isIgnored); - bool isFriend(); - bool ignored(); - - private: - bool aFriend; - bool isIgnored; -}; - +class QAbstractItemModel; +class QMenu; /** * @brief Chat widget. @@ -70,17 +55,14 @@ public: HWChatWidget(QWidget* parent, QSettings * gameSettings, bool notify); - void loadLists(const QString & nick); - void saveLists(const QString & nick); void setIgnoreListKick(bool enabled); ///< automatically kick people on ignore list (if possible) - void setShowReady(bool s); void setShowFollow(bool enabled); - QStringList ignoreList, friendsList; static const QString & styleSheet(); void displayError(const QString & message); void displayNotice(const QString & message); void displayWarning(const QString & message); void setUser(const QString & nickname); + void setUsersModel(QAbstractItemModel * model); protected: virtual void dragEnterEvent(QDragEnterEvent * event); @@ -95,10 +77,6 @@ static void setStyleSheet(const QString & styleSheet = ""); - void loadList(QStringList & list, const QString & file); - void saveList(QStringList & list, const QString & file); - void updateNickItem(QListWidgetItem *item); - void updateNickItems(); void addLine(const QString & cssClass, QString line, bool isHighlight = false); bool parseCommand(const QString & line); void discardStyleSheet(); @@ -112,7 +90,6 @@ void nickAdded(const QString& nick, bool notifyNick); void nickRemoved(const QString& nick); void clear(); - void setReadyStatus(const QString & nick, bool isReady); void adminAccess(bool); signals: @@ -128,7 +105,7 @@ QGridLayout mainLayout; QTextBrowser* chatText; QStringList chatStrings; - QListWidget* chatNicks; + QListView* chatNicks; SmartLineEdit* chatEditLine; QAction * acInfo; QAction * acKick; @@ -137,13 +114,13 @@ QAction * acIgnore; QAction * acFriend; QSettings * gameSettings; + QMenu * m_nicksMenu; QStringList m_helloSounds; QString m_hilightSound; QString m_userNick; QString m_clickedNick; QList m_highlights; ///< regular expressions used for highlighting bool notify; - bool showReady; bool m_autoKickEnabled; private slots: @@ -154,9 +131,9 @@ void onFollow(); void onIgnore(); void onFriend(); - void chatNickDoubleClicked(QListWidgetItem * item); - void chatNickSelected(int index); + void chatNickDoubleClicked(const QModelIndex & index); void linkClicked(const QUrl & link); + void nicksContextMenuRequested(const QPoint & pos); }; #endif // _CHAT_WIDGET_INCLUDED diff -r 6237d2f002ba -r 2bc61f8841a1 QTfrontend/ui/widget/colorwidget.cpp --- a/QTfrontend/ui/widget/colorwidget.cpp Sun Sep 16 23:52:36 2012 +0200 +++ b/QTfrontend/ui/widget/colorwidget.cpp Sun Oct 28 15:12:37 2012 +0100 @@ -1,17 +1,17 @@ #include #include #include +#include #include "colorwidget.h" #include "hwconsts.h" ColorWidget::ColorWidget(QStandardItemModel *colorsModel, QWidget *parent) : - QWidget(parent) + QFrame(parent) { m_colorsModel = colorsModel; setColor(0); - setStyleSheet(""); setAutoFillBackground(true); connect(m_colorsModel, SIGNAL(dataChanged(QModelIndex,QModelIndex)), this, SLOT(dataChanged(QModelIndex,QModelIndex))); @@ -30,9 +30,12 @@ QStandardItem * item = m_colorsModel->item(m_color); + setStyleSheet(QString("border: 2px solid orange; border-radius: 8px; background: %1").arg(item->data().value().name())); + /* QPalette p = palette(); p.setColor(QPalette::Window, item->data().value()); setPalette(p); + */ emit colorChanged(m_color); } @@ -53,10 +56,10 @@ switch(event->button()) { case Qt::LeftButton: - setColor((m_color + 1) % m_colorsModel->rowCount()); + nextColor(); break; case Qt::RightButton: - setColor((m_color + m_colorsModel->rowCount() - 1) % m_colorsModel->rowCount()); + previousColor(); break; default:; } @@ -65,7 +68,17 @@ void ColorWidget::wheelEvent(QWheelEvent *event) { if(event->delta() > 0) - setColor((m_color + 1) % m_colorsModel->rowCount()); + previousColor(); else - setColor((m_color + m_colorsModel->rowCount() - 1) % m_colorsModel->rowCount()); + nextColor(); } + +void ColorWidget::nextColor() +{ + setColor((m_color + 1) % m_colorsModel->rowCount()); +} + +void ColorWidget::previousColor() +{ + setColor((m_color + m_colorsModel->rowCount() - 1) % m_colorsModel->rowCount()); +} diff -r 6237d2f002ba -r 2bc61f8841a1 QTfrontend/ui/widget/colorwidget.h --- a/QTfrontend/ui/widget/colorwidget.h Sun Sep 16 23:52:36 2012 +0200 +++ b/QTfrontend/ui/widget/colorwidget.h Sun Oct 28 15:12:37 2012 +0100 @@ -1,7 +1,7 @@ #ifndef COLORWIDGET_H #define COLORWIDGET_H -#include +#include #include namespace Ui { @@ -10,7 +10,7 @@ class QStandardItemModel; -class ColorWidget : public QWidget +class ColorWidget : public QFrame { Q_OBJECT @@ -35,6 +35,8 @@ protected: void mousePressEvent(QMouseEvent * event); void wheelEvent(QWheelEvent * event); + void nextColor(); + void previousColor(); }; #endif // COLORWIDGET_H diff -r 6237d2f002ba -r 2bc61f8841a1 QTfrontend/ui/widget/drawmapwidget.cpp --- a/QTfrontend/ui/widget/drawmapwidget.cpp Sun Sep 16 23:52:36 2012 +0200 +++ b/QTfrontend/ui/widget/drawmapwidget.cpp Sun Oct 28 15:12:37 2012 +0100 @@ -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 6237d2f002ba -r 2bc61f8841a1 QTfrontend/ui/widget/gamecfgwidget.cpp --- a/QTfrontend/ui/widget/gamecfgwidget.cpp Sun Sep 16 23:52:36 2012 +0200 +++ b/QTfrontend/ui/widget/gamecfgwidget.cpp Sun Oct 28 15:12:37 2012 +0100 @@ -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 6237d2f002ba -r 2bc61f8841a1 QTfrontend/ui/widget/mapContainer.cpp --- a/QTfrontend/ui/widget/mapContainer.cpp Sun Sep 16 23:52:36 2012 +0200 +++ b/QTfrontend/ui/widget/mapContainer.cpp Sun Oct 28 15:12:37 2012 +0100 @@ -29,7 +29,6 @@ #include #include #include -#include #include #include "hwconsts.h" diff -r 6237d2f002ba -r 2bc61f8841a1 QTfrontend/ui/widget/qpushbuttonwithsound.cpp --- a/QTfrontend/ui/widget/qpushbuttonwithsound.cpp Sun Sep 16 23:52:36 2012 +0200 +++ b/QTfrontend/ui/widget/qpushbuttonwithsound.cpp Sun Oct 28 15:12:37 2012 +0100 @@ -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 6237d2f002ba -r 2bc61f8841a1 QTfrontend/ui/widget/qpushbuttonwithsound.h --- a/QTfrontend/ui/widget/qpushbuttonwithsound.h Sun Sep 16 23:52:36 2012 +0200 +++ b/QTfrontend/ui/widget/qpushbuttonwithsound.h Sun Oct 28 15:12:37 2012 +0100 @@ -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 6237d2f002ba -r 2bc61f8841a1 QTfrontend/ui/widget/selectWeapon.cpp --- a/QTfrontend/ui/widget/selectWeapon.cpp Sun Sep 16 23:52:36 2012 +0200 +++ b/QTfrontend/ui/widget/selectWeapon.cpp Sun Oct 28 15:12:37 2012 +0100 @@ -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 6237d2f002ba -r 2bc61f8841a1 QTfrontend/ui/widget/teamselect.cpp --- a/QTfrontend/ui/widget/teamselect.cpp Sun Sep 16 23:52:36 2012 +0200 +++ b/QTfrontend/ui/widget/teamselect.cpp Sun Oct 28 15:12:37 2012 +0100 @@ -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 6237d2f002ba -r 2bc61f8841a1 QTfrontend/ui/widget/teamselect.h --- a/QTfrontend/ui/widget/teamselect.h Sun Sep 16 23:52:36 2012 +0200 +++ b/QTfrontend/ui/widget/teamselect.h Sun Oct 28 15:12:37 2012 +0100 @@ -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 6237d2f002ba -r 2bc61f8841a1 QTfrontend/util/DataManager.cpp --- a/QTfrontend/util/DataManager.cpp Sun Sep 16 23:52:36 2012 +0200 +++ b/QTfrontend/util/DataManager.cpp Sun Oct 28 15:12:37 2012 +0100 @@ -201,11 +201,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 6237d2f002ba -r 2bc61f8841a1 QTfrontend/util/libav_iteraction.cpp --- a/QTfrontend/util/libav_iteraction.cpp Sun Sep 16 23:52:36 2012 +0200 +++ b/QTfrontend/util/libav_iteraction.cpp Sun Oct 28 15:12:37 2012 +0100 @@ -19,7 +19,6 @@ #include "libav_iteraction.h" #if VIDEOREC -#define __STDC_CONSTANT_MACROS extern "C" { #include "libavformat/avformat.h" @@ -27,7 +26,6 @@ #include #include -#include #include #include "HWApplication.h" @@ -272,7 +270,7 @@ QByteArray utf8path = filepath.toUtf8(); if (avformat_open_input(&pContext, utf8path.data(), NULL, NULL) < 0) return ""; -#if LIBAFORMAT_VERSION_MAJOR < 54 +#if LIBAVFORMAT_VERSION_MAJOR < 54 if (av_find_stream_info(pContext) < 0) #else if (avformat_find_stream_info(pContext, NULL) < 0) @@ -310,7 +308,7 @@ AVDictionaryEntry* pComment = av_dict_get(pContext->metadata, "comment", NULL, 0); if (pComment) desc += QString("\n") + pComment->value; -#if LIBAFORMAT_VERSION_MAJOR < 54 +#if LIBAVFORMAT_VERSION_MAJOR < 54 av_close_input_file(pContext); #else avformat_close_input(&pContext); diff -r 6237d2f002ba -r 2bc61f8841a1 bin/CMakeLists.txt diff -r 6237d2f002ba -r 2bc61f8841a1 cmake_modules/FindFFMPEG.cmake --- a/cmake_modules/FindFFMPEG.cmake Sun Sep 16 23:52:36 2012 +0200 +++ b/cmake_modules/FindFFMPEG.cmake Sun Oct 28 15:12:37 2012 +0100 @@ -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 6237d2f002ba -r 2bc61f8841a1 cmake_modules/FindSDL_Extras.cmake --- a/cmake_modules/FindSDL_Extras.cmake Sun Sep 16 23:52:36 2012 +0200 +++ b/cmake_modules/FindSDL_Extras.cmake Sun Oct 28 15:12:37 2012 +0100 @@ -1,22 +1,5 @@ #if the headers are not installed, the newer apis won't be activated -##find which version of SDL we are building against -#find_file(sdl_h SDL_version.h ${SDL_INCLUDE_DIR}) -#if(sdl_h) -# file(STRINGS ${sdl_h} sdl_majorversion_tmp REGEX "SDL_MAJOR_VERSION[\t' ']+[0-9]+") -# file(STRINGS ${sdl_h} sdl_minorversion_tmp REGEX "SDL_MINOR_VERSION[\t' ']+[0-9]+") -# file(STRINGS ${sdl_h} sdl_patchversion_tmp REGEX "SDL_PATCHLEVEL[\t' ']+[0-9]+") -# string(REGEX MATCH ".([0-9]+)" sdl_majorversion "${sdl_majorversion_tmp}") -# string(REGEX MATCH ".([0-9]+)" sdl_minorversion "${sdl_minorversion_tmp}") -# string(REGEX MATCH ".([0-9]+)" sdl_patchversion "${sdl_patchversion_tmp}") -# math(EXPR sdl_version "${sdl_majorversion}*10000 + ${sdl_minorversion}*100 + ${sdl_patchversion}") -# -# if(NOT (sdl_version LESS "010300")) -# message(STATUS "Enabling SDL-1.3+ calls") -# set(pascal_compiler_flags_cmn "-dSDL13" ${pascal_compiler_flags_cmn}) -# endif() -#endif() - #find which version of SDL_mixer we have (for Mix_Init) find_file(sdlmixer_h SDL_mixer.h ${SDLMIXER_INCLUDE_DIR}) if(sdlmixer_h) @@ -29,8 +12,8 @@ math(EXPR sdlmixer_version "${sdlmixer_majorversion}*10000 + ${sdlmixer_minorversion}*100 + ${sdlmixer_patchversion}") if(sdlmixer_version GREATER "10209") - message(STATUS "Enabling enhanced SDL_Mixer calls") - set(pascal_compiler_flags_cmn "-dSDL_MIXER_NEWER" ${pascal_compiler_flags_cmn}) + message(STATUS "Mix_Init() is present") + set(pascal_flags "-dSDL_MIXER_NEWER" ${pascal_flags}) endif() endif() @@ -46,8 +29,8 @@ math(EXPR sdlimage_version "${sdlimage_majorversion}*10000 + ${sdlimage_minorversion}*100 + ${sdlimage_patchversion}") if(sdlimage_version GREATER "010207") - message(STATUS "Enabling enhanced SDL_Image calls") - set(pascal_compiler_flags_cmn "-dSDL_IMAGE_NEWER" ${pascal_compiler_flags_cmn}) + message(STATUS "IMG_Init() is present") + set(pascal_flags "-dSDL_IMAGE_NEWER" ${pascal_flags}) endif() endif() diff -r 6237d2f002ba -r 2bc61f8841a1 gameServer/Actions.hs --- a/gameServer/Actions.hs Sun Sep 16 23:52:36 2012 +0200 +++ b/gameServer/Actions.hs Sun Oct 28 15:12:37 2012 +0100 @@ -1,4 +1,5 @@ {-# LANGUAGE CPP, OverloadedStrings #-} +{-# OPTIONS_GHC -fno-warn-orphans #-} module Actions where import Control.Concurrent @@ -20,7 +21,9 @@ import System.Process import Network.Socket ----------------------------- +#if defined(OFFICIAL_SERVER) import OfficialServer.GameReplayStore +#endif import CoreTypes import Utils import ClientIO @@ -50,10 +53,12 @@ | BanClient NominalDiffTime B.ByteString ClientIndex | BanIP B.ByteString NominalDiffTime B.ByteString | BanList + | Unban B.ByteString | ChangeMaster | RemoveClientTeams ClientIndex | ModifyClient (ClientInfo -> ClientInfo) | ModifyClient2 ClientIndex (ClientInfo -> ClientInfo) + | ModifyRoomClients (ClientInfo -> ClientInfo) | ModifyRoom (RoomInfo -> RoomInfo) | ModifyServerInfo (ServerInfo -> ServerInfo) | AddRoom B.ByteString B.ByteString @@ -151,7 +156,7 @@ mapM processAction [ AnswerClients [chan] ["BYE", msg] - , ModifyClient (\c -> c{logonPassed = False}) -- this will effectively hide client from others while he isn't deleted from list + , ModifyClient (\c -> c{nick = "", logonPassed = False}) -- this will effectively hide client from others while he isn't deleted from list ] s <- get @@ -181,6 +186,12 @@ io $ modifyClient rnc f ci return () +processAction (ModifyRoomClients f) = do + rnc <- gets roomsClients + ri <- clientRoomA + roomClIDs <- io $ roomClientsIndicesM rnc ri + io $ mapM_ (modifyClient rnc f) roomClIDs + processAction (ModifyRoom f) = do rnc <- gets roomsClients @@ -214,7 +225,7 @@ (Just ci) <- gets clientIndex ri <- clientRoomA rnc <- gets roomsClients - (gameProgress, playersNum) <- io $ room'sM rnc ((isJust . gameInfo) &&& playersIn) ri + playersNum <- io $ room'sM rnc playersIn ri master <- client's isMaster -- client <- client's id clNick <- client's nick @@ -237,8 +248,10 @@ }) ri moveClientToLobby rnc ci + processAction ChangeMaster = do (Just ci) <- gets clientIndex + proto <- client's clientProto ri <- clientRoomA rnc <- gets roomsClients newMasterId <- liftM (head . filter (/= ci)) . io $ roomClientsIndicesM rnc ri @@ -246,20 +259,23 @@ oldRoomName <- io $ room'sM rnc name ri oldMaster <- client's nick thisRoomChans <- liftM (map sendChan) $ roomClientsS ri - let newRoomName = nick newMaster + 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] ] - proto <- client's clientProto - newRoom <- io $ room'sM rnc id ri + newRoom' <- io $ room'sM rnc id ri chans <- liftM (map sendChan) $! sameProtoClientsS proto - processAction $ AnswerClients chans ("ROOM" : "UPD" : oldRoomName : roomInfo (nick newMaster) newRoom) + processAction $ AnswerClients chans ("ROOM" : "UPD" : oldRoomName : roomInfo newRoomName newRoom') processAction (AddRoom roomName roomPassword) = do @@ -267,7 +283,6 @@ rnc <- gets roomsClients proto <- client's clientProto n <- client's nick - chan <- client's sendChan let rm = newRoom{ masterID = clId, @@ -284,8 +299,6 @@ mapM_ processAction [ AnswerClients chans ("ROOM" : "ADD" : roomInfo n rm) - , AnswerClients [chan] ["CLIENT_FLAGS", "+h", n] - , ModifyClient (\cl -> cl{isMaster = True}) ] @@ -307,14 +320,14 @@ processAction UnreadyRoomClients = do - rnc <- gets roomsClients ri <- clientRoomA roomPlayers <- roomClientsS ri - roomClIDs <- io $ roomClientsIndicesM rnc ri pr <- client's clientProto - processAction $ AnswerClients (map sendChan roomPlayers) $ notReadyMessage pr (map nick roomPlayers) - io $ mapM_ (modifyClient rnc (\cl -> cl{isReady = False})) roomClIDs - processAction $ ModifyRoom (\r -> r{readyPlayers = 0}) + mapM_ processAction [ + 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 @@ -323,7 +336,6 @@ rnc <- gets roomsClients ri <- clientRoomA thisRoomChans <- liftM (map sendChan) $ roomClientsS ri - clNick <- client's nick answerRemovedTeams <- io $ room'sM rnc (map (\t -> AnswerClients thisRoomChans ["REMOVE_TEAM", t]) . leftTeams . fromJust . gameInfo) ri @@ -476,11 +488,15 @@ processAction BanList = do ch <- client's sendChan - bans <- gets (B.pack . unlines . map show . bans . serverInfo) + b <- gets (B.pack . unlines . map show . bans . serverInfo) processAction $ - AnswerClients [ch] ["BANLIST", bans] + AnswerClients [ch] ["BANLIST", b] - +processAction (Unban entry) = do + processAction $ ModifyServerInfo (\s -> s{bans = filter f $ bans s}) + where + f (BanByIP bip _ _) = bip == entry + f (BanByNick bn _ _) = bn == entry processAction (KickRoomClient kickId) = do modify (\s -> s{clientIndex = Just kickId}) diff -r 6237d2f002ba -r 2bc61f8841a1 gameServer/CoreTypes.hs --- a/gameServer/CoreTypes.hs Sun Sep 16 23:52:36 2012 +0200 +++ b/gameServer/CoreTypes.hs Sun Oct 28 15:12:37 2012 +0100 @@ -34,6 +34,7 @@ pingsQueue :: !Word, isMaster :: Bool, isReady :: !Bool, + isInGame :: Bool, isAdministrator :: Bool, clientClan :: Maybe B.ByteString, teamsInGame :: Word @@ -75,7 +76,12 @@ giParams :: Map.Map B.ByteString [B.ByteString] } deriving (Show, Read) ---newGameInfo :: -> GameInfo +newGameInfo :: [TeamInfo] + -> Int + -> Bool + -> Map.Map ByteString ByteString + -> Map.Map ByteString [ByteString] + -> GameInfo newGameInfo = GameInfo Data.Sequence.empty diff -r 6237d2f002ba -r 2bc61f8841a1 gameServer/EngineInteraction.hs --- a/gameServer/EngineInteraction.hs Sun Sep 16 23:52:36 2012 +0200 +++ b/gameServer/EngineInteraction.hs Sun Oct 28 15:12:37 2012 +0100 @@ -1,7 +1,6 @@ module EngineInteraction where import qualified Data.Set as Set -import qualified Data.List as List import Control.Monad import qualified Codec.Binary.Base64 as Base64 import qualified Data.ByteString.Char8 as B @@ -31,6 +30,7 @@ legalMessages = Set.fromList $ "M#+LlRrUuDdZzAaSjJ,sNpPwtghbc12345" ++ slotMessages slotMessages = "\128\129\130\131\132\133\134\135\136\137\138" + gameInfo2Replay :: GameInfo -> B.ByteString gameInfo2Replay GameInfo{roundMsgs = rm, teamsAtStart = teams, diff -r 6237d2f002ba -r 2bc61f8841a1 gameServer/HWProtoCore.hs --- a/gameServer/HWProtoCore.hs Sun Sep 16 23:52:36 2012 +0200 +++ b/gameServer/HWProtoCore.hs Sun Oct 28 15:12:37 2012 +0100 @@ -51,7 +51,7 @@ let clRoom = room rnc roomId let roomMasterSign = if isMaster cl then "@" else "" let adminSign = if isAdministrator cl then "@" else "" - let roomInfo = if roomId /= lobbyId then B.concat [roomMasterSign, "room ", name clRoom] else adminSign `B.append` "lobby" + let rInfo = if roomId /= lobbyId then B.concat [roomMasterSign, "room ", name clRoom] else adminSign `B.append` "lobby" let roomStatus = if isJust $ gameInfo clRoom then if teamsInGame cl > 0 then "(playing)" else "(spectating)" else @@ -65,7 +65,7 @@ nick cl, B.concat ["[", hostStr, "]"], protoNumber2ver $ clientProto cl, - B.concat ["[", roomInfo, "]", roomStatus] + B.concat ["[", rInfo, "]", roomStatus] ] diff -r 6237d2f002ba -r 2bc61f8841a1 gameServer/HWProtoInRoomState.hs --- a/gameServer/HWProtoInRoomState.hs Sun Sep 16 23:52:36 2012 +0200 +++ b/gameServer/HWProtoInRoomState.hs Sun Oct 28 15:12:37 2012 +0100 @@ -2,7 +2,7 @@ module HWProtoInRoomState where import qualified Data.Map as Map -import Data.Sequence((|>), empty) +import Data.Sequence((|>)) import Data.List import Data.Maybe import qualified Data.ByteString.Char8 as B @@ -157,14 +157,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 @@ -172,6 +175,7 @@ rm <- thisRoom chans <- roomClientsChans + let nicks = map (nick . client rnc) . roomClients rnc $ clientRoom rnc ci let allPlayersRegistered = all ((<) 0 . B.length . webPassword . client rnc . teamownerId) $ teams rm if isMaster cl && playersIn rm == readyPlayers rm && not (isJust $ gameInfo rm) then @@ -181,8 +185,10 @@ (\r -> r{ gameInfo = Just $ newGameInfo (teams rm) (length $ teams rm) allPlayersRegistered (mapParams rm) (params rm) } - ), - AnswerClients chans ["RUN_GAME"] + ) + , AnswerClients chans ["RUN_GAME"] + , AnswerClients chans $ "CLIENT_FLAGS" : "+g" : nicks + , ModifyRoomClients (\c -> c{isInGame = True}) ] else return [Warning "Less than two clans!"] @@ -206,17 +212,23 @@ handleCmd_inRoom ["ROUNDFINISHED", correctly] = do - clId <- asks fst cl <- thisClient rm <- thisRoom + chans <- roomClientsChans + let clTeams = map teamname . filter (\t -> teamowner t == nick cl) . teams $ rm + let unsetInGameState = [AnswerClients chans ["CLIENT_FLAGS", "-g", nick cl], ModifyClient (\c -> c{isInGame = False})] - if isJust $ gameInfo rm then - if (isMaster cl && isCorrect) then - return [FinishGame] - else return $ map SendTeamRemovalMessage clTeams + if isInGame cl then + if isJust $ gameInfo rm then + if (isMaster cl && isCorrect) then + return $ FinishGame : unsetInGameState + else + return $ unsetInGameState ++ map SendTeamRemovalMessage clTeams + else + return unsetInGameState else - return [] + return [] -- don't accept this message twice where isCorrect = correctly == "1" diff -r 6237d2f002ba -r 2bc61f8841a1 gameServer/HWProtoLobbyState.hs --- a/gameServer/HWProtoLobbyState.hs Sun Sep 16 23:52:36 2012 +0200 +++ b/gameServer/HWProtoLobbyState.hs Sun Oct 28 15:12:37 2012 +0100 @@ -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 (\cl -> cl{isMaster = True, isReady = True}) + , ModifyRoom (\r -> r{readyPlayers = 1}) ] @@ -131,7 +133,6 @@ handleCmd_lobby ["FOLLOW", asknick] = do (_, rnc) <- ask ci <- clientByNick asknick - cl <- thisClient let ri = clientRoom rnc $ fromJust ci let clRoom = room rnc ri if isNothing ci || ri == lobbyId then @@ -156,16 +157,19 @@ return [BanClient 60 reason (fromJust banId) | isAdministrator cl && isJust banId && fromJust banId /= ci] handleCmd_lobby ["BANIP", ip, reason, duration] = do - (ci, _) <- ask cl <- thisClient return [BanIP ip (readInt_ duration) reason | isAdministrator cl] handleCmd_lobby ["BANLIST"] = do - (ci, _) <- ask cl <- thisClient return [BanList | isAdministrator cl] +handleCmd_lobby ["UNBAN", entry] = do + cl <- thisClient + return [Unban entry | isAdministrator cl] + + handleCmd_lobby ["SET_SERVER_VAR", "MOTD_NEW", newMessage] = do cl <- thisClient return [ModifyServerInfo (\si -> si{serverMessage = newMessage}) | isAdministrator cl] diff -r 6237d2f002ba -r 2bc61f8841a1 gameServer/NetRoutines.hs --- a/gameServer/NetRoutines.hs Sun Sep 16 23:52:36 2012 +0200 +++ b/gameServer/NetRoutines.hs Sun Oct 28 15:12:37 2012 +0100 @@ -3,7 +3,6 @@ import Network.Socket import Control.Concurrent.Chan -import qualified Control.Exception as Exception import Data.Time import Control.Monad import Data.Unique @@ -41,6 +40,7 @@ False False False + False Nothing 0 ) diff -r 6237d2f002ba -r 2bc61f8841a1 gameServer/ServerCore.hs --- a/gameServer/ServerCore.hs Sun Sep 16 23:52:36 2012 +0200 +++ b/gameServer/ServerCore.hs Sun Oct 28 15:12:37 2012 +0100 @@ -1,6 +1,5 @@ module ServerCore where -import Network import Control.Concurrent import Control.Monad import System.Log.Logger diff -r 6237d2f002ba -r 2bc61f8841a1 gameServer/Store.hs --- a/gameServer/Store.hs Sun Sep 16 23:52:36 2012 +0200 +++ b/gameServer/Store.hs Sun Oct 28 15:12:37 2012 +0100 @@ -18,9 +18,9 @@ indices ) where -import qualified Data.Array.IArray as IA -import qualified Data.Array.IO as IOA import qualified Data.IntSet as IntSet +import qualified Data.Vector as V +import qualified Data.Vector.Mutable as MV import Data.IORef import Control.Monad import Control.DeepSeq @@ -28,8 +28,8 @@ newtype ElemIndex = ElemIndex Int deriving (Eq, Show, Read, Ord, NFData) -newtype MStore e = MStore (IORef (IntSet.IntSet, IntSet.IntSet, IOA.IOArray Int e)) -newtype IStore e = IStore (IntSet.IntSet, IA.Array Int e) +newtype MStore e = MStore (IORef (IntSet.IntSet, IntSet.IntSet, MV.IOVector e)) +newtype IStore e = IStore (IntSet.IntSet, V.Vector e) firstIndex :: ElemIndex @@ -50,7 +50,7 @@ newStore :: IO (MStore e) newStore = do - newar <- IOA.newArray_ (0, initialSize - 1) + newar <- MV.new initialSize new <- newIORef (IntSet.empty, IntSet.fromAscList [0..initialSize - 1], newar) return (MStore new) @@ -58,11 +58,10 @@ growStore :: MStore e -> IO () growStore (MStore ref) = do (busyElems, freeElems, arr) <- readIORef ref - (_, m') <- IOA.getBounds arr - let newM' = growFunc (m' + 1) - 1 - newArr <- IOA.newArray_ (0, newM') - sequence_ [IOA.readArray arr i >>= IOA.writeArray newArr i | i <- [0..m']] - writeIORef ref (busyElems, freeElems `IntSet.union` IntSet.fromAscList [m'+1..newM'], newArr) + let oldSize = MV.length arr + let newSize = growFunc oldSize + newArr <- MV.grow arr (newSize - oldSize) + writeIORef ref (busyElems, freeElems `IntSet.union` IntSet.fromAscList [oldSize .. newSize-1], newArr) growIfNeeded :: MStore e -> IO () @@ -74,12 +73,10 @@ truncateIfNeeded :: MStore e -> IO () truncateIfNeeded (MStore ref) = do (busyElems, _, arr) <- readIORef ref - (_, m') <- IOA.getBounds arr - let newM' = truncFunc (m' + 1) - 1 - when (newM' < m' && (not $ IntSet.null busyElems) && IntSet.findMax busyElems <= newM') $ do - newArr <- IOA.newArray_ (0, newM') - sequence_ [IOA.readArray arr i >>= IOA.writeArray newArr i | i <- IntSet.toList busyElems] - writeIORef ref (busyElems, IntSet.fromAscList [0..newM'] `IntSet.difference` busyElems, newArr) + let oldSize = MV.length arr + let newSize = truncFunc oldSize + when (newSize < oldSize && (not $ IntSet.null busyElems) && IntSet.findMax busyElems < newSize) $ do + writeIORef ref (busyElems, IntSet.fromAscList [0..newSize - 1] `IntSet.difference` busyElems, MV.take newSize arr) addElem :: MStore e -> e -> IO ElemIndex @@ -87,7 +84,7 @@ growIfNeeded m (busyElems, freeElems, arr) <- readIORef ref let (!n, freeElems') = IntSet.deleteFindMin freeElems - IOA.writeArray arr n element + MV.write arr n element writeIORef ref (IntSet.insert n busyElems, freeElems', arr) return $ ElemIndex n @@ -95,23 +92,23 @@ removeElem :: MStore e -> ElemIndex -> IO () removeElem m@(MStore ref) (ElemIndex n) = do (busyElems, freeElems, arr) <- readIORef ref - IOA.writeArray arr n (error $ "Store: no element " ++ show n) + MV.write arr n (error $ "Store: no element " ++ show n) writeIORef ref (IntSet.delete n busyElems, IntSet.insert n freeElems, arr) truncateIfNeeded m readElem :: MStore e -> ElemIndex -> IO e -readElem (MStore ref) (ElemIndex n) = readIORef ref >>= \(_, _, arr) -> IOA.readArray arr n +readElem (MStore ref) (ElemIndex n) = readIORef ref >>= \(_, _, arr) -> MV.read arr n writeElem :: MStore e -> ElemIndex -> e -> IO () -writeElem (MStore ref) (ElemIndex n) el = readIORef ref >>= \(_, _, arr) -> IOA.writeArray arr n el +writeElem (MStore ref) (ElemIndex n) el = readIORef ref >>= \(_, _, arr) -> MV.write arr n el modifyElem :: MStore e -> (e -> e) -> ElemIndex -> IO () modifyElem (MStore ref) f (ElemIndex n) = do (_, _, arr) <- readIORef ref - IOA.readArray arr n >>= IOA.writeArray arr n . f + MV.read arr n >>= MV.write arr n . f elemExists :: MStore e -> ElemIndex -> IO Bool elemExists (MStore ref) (ElemIndex n) = do @@ -128,13 +125,13 @@ m2i :: MStore e -> IO (IStore e) m2i (MStore ref) = do (a, _, c') <- readIORef ref - c <- IOA.unsafeFreeze c' + c <- V.unsafeFreeze c' return $ IStore (a, c) i2m :: MStore e -> IStore e -> IO () i2m (MStore ref) (IStore (_, arr)) = do (b, e, _) <- readIORef ref - a <- IOA.unsafeThaw arr + a <- V.unsafeThaw arr writeIORef ref (b, e, a) withIStore :: MStore e -> (IStore e -> a) -> IO a @@ -157,7 +154,7 @@ -- IStore code (!) :: IStore e -> ElemIndex -> e -(!) (IStore (_, arr)) (ElemIndex i) = (IA.!) arr i +(!) (IStore (_, arr)) (ElemIndex i) = (V.!) arr i indices :: IStore e -> [ElemIndex] indices (IStore (busy, _)) = map ElemIndex $ IntSet.toList busy diff -r 6237d2f002ba -r 2bc61f8841a1 gameServer/Utils.hs --- a/gameServer/Utils.hs Sun Sep 16 23:52:36 2012 +0200 +++ b/gameServer/Utils.hs Sun Oct 28 15:12:37 2012 +0100 @@ -4,19 +4,16 @@ import Data.Char import Data.Word import qualified Data.Map as Map -import qualified Data.Set as Set import qualified Data.Char as Char import Numeric import Network.Socket import System.IO import qualified Data.List as List import Control.Monad -import qualified Codec.Binary.Base64 as Base64 import qualified Data.ByteString.Lazy as BL import qualified Text.Show.ByteString as BS import qualified Data.ByteString.Char8 as B import qualified Data.ByteString.UTF8 as UTF8 -import qualified Data.ByteString as BW import Data.Maybe ------------------------------------------------- import CoreTypes @@ -123,6 +120,8 @@ where f = map Char.toUpper . UTF8.toString + +roomInfo :: B.ByteString -> RoomInfo -> [B.ByteString] roomInfo n r = [ showB $ isJust $ gameInfo r, name r, diff -r 6237d2f002ba -r 2bc61f8841a1 gameServer/hedgewars-server.cabal --- a/gameServer/hedgewars-server.cabal Sun Sep 16 23:52:36 2012 +0200 +++ b/gameServer/hedgewars-server.cabal Sun Oct 28 15:12:37 2012 +0100 @@ -18,7 +18,7 @@ base >= 4.3, unix, containers, - array, + vector, bytestring, bytestring-show, network >= 2.3, diff -r 6237d2f002ba -r 2bc61f8841a1 gameServer/stresstest3.hs --- a/gameServer/stresstest3.hs Sun Sep 16 23:52:36 2012 +0200 +++ b/gameServer/stresstest3.hs Sun Oct 28 15:12:37 2012 +0100 @@ -47,7 +47,7 @@ waitPacket "CONNECTED" sendPacket ["NICK", "test" ++ show n] waitPacket "NICK" - sendPacket ["PROTO", "31"] + sendPacket ["PROTO", "41"] waitPacket "PROTO" b <- waitPacket "LOBBY:JOINED" --io $ print b diff -r 6237d2f002ba -r 2bc61f8841a1 hedgewars/ArgParsers.inc --- a/hedgewars/ArgParsers.inc Sun Sep 16 23:52:36 2012 +0200 +++ b/hedgewars/ArgParsers.inc Sun Oct 28 15:12:37 2012 +0100 @@ -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 6237d2f002ba -r 2bc61f8841a1 hedgewars/CMakeLists.txt --- a/hedgewars/CMakeLists.txt Sun Sep 16 23:52:36 2012 +0200 +++ b/hedgewars/CMakeLists.txt Sun Oct 28 15:12:37 2012 +0100 @@ -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) @@ -15,10 +14,12 @@ set(engine_sources ${hwengine_project} + LuaPas.pas + PNGh.pas SDLh.pas - PNGh.pas uAI.pas uAIActions.pas + uAILandMarks.pas uAIAmmoTests.pas uAIMisc.pas uAmmos.pas @@ -29,12 +30,15 @@ uCommandHandlers.pas uConsole.pas uConsts.pas + uCursor.pas uDebug.pas uFloat.pas uGame.pas uGears.pas uGearsHandlers.pas uGearsHandlersRope.pas + uGearsHedgehog.pas + uGearsList.pas uGearsRender.pas uGearsUtils.pas uIO.pas @@ -60,6 +64,7 @@ uStore.pas uTeams.pas uTextures.pas + uTouch.pas uTypes.pas uUtils.pas uVariables.pas @@ -127,9 +132,9 @@ set(powerpc_build "powerpc") endif() - #on OSX we need to provide the main() function when building as executable + #on OSX we need to provide the SDL_main() function when building as executable if(NOT BUILD_ENGINE_LIBRARY) - #let's look for the bundled sdlmain, if not found build our own + #let's look for the installed sdlmain file; if it is not found, let's build our own find_package(SDL REQUIRED) #remove the ";-framework Cocoa" from the SDL_LIBRARY variable string(REGEX REPLACE "(.*);-.*" "\\1" sdl_dir "${SDL_LIBRARY}") @@ -137,12 +142,11 @@ find_file(SDLMAIN_LIB libSDLMain.a PATHS ${sdl_dir}/Resources/) if(SDLMAIN_LIB MATCHES "SDLMAIN_LIB-NOTFOUND") - set(LIBRARY_OUTPUT_PATH ${CMAKE_BINARY_DIR}/bin) include_directories(${SDL_INCLUDE_DIR}) add_library (SDLmain STATIC SDLMain.m) #add a dependency to the hwengine target set(engine_sources ${engine_sources} SDLmain) - set(SDLMAIN_LIB "${CMAKE_BINARY_DIR}/bin/libSDLmain.a") + set(SDLMAIN_LIB "${LIBRARY_OUTPUT_PATH}/libSDLmain.a") endif() set(pascal_flags "-k${SDLMAIN_LIB}" ${pascal_flags}) @@ -157,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") @@ -174,35 +178,31 @@ if(NOT NOPNG) find_package(PNG) if(${PNG_FOUND}) - message(STATUS "PNG screenshots enabled (library found at ${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 "PNG library not found, switching to screenshots in BMP format") + message(STATUS "Screenshots will be in BMP format because libpng was not found") endif() else() - message(STATUS "PNG screenshots disabled per user request, using BMP format") + message(STATUS "Screenshots will be in BMP format per user request") endif() -#this command is a workaround to some inlining issues present in older -# FreePascal versions and fixed in 2.6, That version is mandatory on OSX, -# hence the command is not needed there -if(NOT APPLE) +#this command is a workaround to some inlining issues present in older FreePascal versions and fixed in 2.6 +if(fpc_version LESS "020600") add_custom_target(ENGINECLEAN COMMAND ${CMAKE_BUILD_TOOL} "clean" "${PROJECT_BINARY_DIR}" "${hedgewars_SOURCE_DIR}/hedgewars") endif() -if(NOT NO_VIDEOREC) +if(NOT NOVIDEOREC) + set(FFMPEG_FIND_QUIETLY true) + find_package(FFMPEG) if(${FFMPEG_FOUND}) - message(STATUS "Compiling with video recording") include_directories(${FFMPEG_INCLUDE_DIR}) set(pascal_flags "-dUSE_VIDEO_RECORDING" ${pascal_flags}) - set(LIBRARY_OUTPUT_PATH ${EXECUTABLE_OUTPUT_PATH}) IF (WIN32) # there are some problems with linking our avwrapper as static lib, so link it as shared add_library(avwrapper SHARED avwrapper.c) @@ -211,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(NOT APPLE) + if(fpc_version LESS "020600") add_dependencies(avwrapper ENGINECLEAN) endif() else() - message(STATUS "FFMPEG library not found, 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") @@ -261,10 +260,9 @@ add_dependencies(${engine_output_name} lua) endif() -if(NOT APPLE) - if(NO_VIDEOREC OR NOT ${FFMPEG_FOUND}) - add_dependencies(${engine_output_name} ENGINECLEAN) - 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") 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 6237d2f002ba -r 2bc61f8841a1 hedgewars/GSHandlers.inc --- a/hedgewars/GSHandlers.inc Sun Sep 16 23:52:36 2012 +0200 +++ b/hedgewars/GSHandlers.inc Sun Oct 28 15:12:37 2012 +0100 @@ -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; @@ -315,14 +320,14 @@ CheckCollision(Gear); if (Gear^.State and gstCollision) <> 0 then doMakeExplosion(hwRound(Gear^.X), hwRound(Gear^.Y), 20, Gear^.Hedgehog, EXPLDontDraw or EXPLNoGfx); - end; + end; if (Gear^.Kind = gtGasBomb) and ((GameTicks mod 200) = 0) then begin vg:= AddVisualGear(hwRound(Gear^.X), hwRound(Gear^.Y), vgtSmokeWhite); if vg <> nil then vg^.Tint:= $FFC0C000; - end; + end; if Gear^.Timer = 0 then begin @@ -386,10 +391,10 @@ FollowGear:= AddGear(hwRound(Gear^.X) - 30 + x, hwRound(Gear^.Y) - 20 + y, gtPoisonCloud, 0, _0, _0, 0); end end; + end; + DeleteGear(Gear); + exit end; - DeleteGear(Gear); - exit - end; CalcRotationDirAngle(Gear); @@ -716,8 +721,8 @@ exit end; Gear^.Pos:= 0; - Gear^.X:= int2hwFloat(GetRandom(snowRight-snowLeft)+snowLeft); - Gear^.Y:= int2hwFloat(LAND_HEIGHT-1300+(GetRandom(50)-25)); + Gear^.X:= int2hwFloat(LongInt(GetRandom(snowRight - snowLeft)) + snowLeft); + Gear^.Y:= int2hwFloat(LongInt(LAND_HEIGHT + GetRandom(50)) - 1325); Gear^.State:= Gear^.State or gstInvisible; end 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; @@ -1414,30 +1419,26 @@ end; CalcRotationDirAngle(Gear); AllInactive := false - end - else - if ((GameTicks and $3F) = 25) then - doStepFallingGear(Gear); + end + else if (GameTicks and $3F) = 25 then + doStepFallingGear(Gear); if (Gear^.Health = 0) then begin - if not Gear^.dY.isNegative and (Gear^.dY > _0_2) and (TestCollisionYwithGear(Gear, 1) <> 0) then - inc(Gear^.Damage, hwRound(Gear^.dY * _70)) - - else if not Gear^.dX.isNegative and (Gear^.dX > _0_2) and TestCollisionXwithGear(Gear, 1) then - inc(Gear^.Damage, hwRound(Gear^.dX * _70)) - - else if Gear^.dY.isNegative and (Gear^.dY < -_0_2) and (TestCollisionYwithGear(Gear, -1) <> 0) then - inc(Gear^.Damage, hwRound(Gear^.dY * -_70)) - - else if Gear^.dX.isNegative and (Gear^.dX < -_0_2) and TestCollisionXwithGear(Gear, -1) then - inc(Gear^.Damage, hwRound(Gear^.dX * -_70)); + if not Gear^.dY.isNegative and (Gear^.dY > _0_2) and (TestCollisionYwithGear(Gear, 1) <> 0) then + inc(Gear^.Damage, hwRound(Gear^.dY * _70)) + else if not Gear^.dX.isNegative and (Gear^.dX > _0_2) and TestCollisionXwithGear(Gear, 1) then + inc(Gear^.Damage, hwRound(Gear^.dX * _70)) + else if Gear^.dY.isNegative and (Gear^.dY < -_0_2) and (TestCollisionYwithGear(Gear, -1) <> 0) then + inc(Gear^.Damage, hwRound(Gear^.dY * -_70)) + else if Gear^.dX.isNegative and (Gear^.dX < -_0_2) and TestCollisionXwithGear(Gear, -1) then + inc(Gear^.Damage, hwRound(Gear^.dX * -_70)); if ((GameTicks and $FF) = 0) and (Gear^.Damage > random(30)) then - begin - vg:= AddVisualGear(hwRound(Gear^.X) - 4 + Random(8), hwRound(Gear^.Y) - 4 - Random(4), vgtSmoke); - if vg <> nil then - vg^.Scale:= 0.5 - end; + begin + vg:= AddVisualGear(hwRound(Gear^.X) - 4 + Random(8), hwRound(Gear^.Y) - 4 - Random(4), vgtSmoke); + if vg <> nil then + vg^.Scale:= 0.5 + end; if (Gear^.Damage > 35) then begin @@ -2172,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); @@ -2192,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); @@ -2646,11 +2647,7 @@ procedure doStepCakeWork(Gear: PGear); - -const dirs: array[0..3] of TPoint = ((X: 0; Y: -1), (X: 1; Y: 0),(X: 0; Y: 1),(X: -1; Y: 0)); var - xx, yy, xxn, yyn: LongInt; - dA: LongInt; tdx, tdy: hwFloat; begin AllInactive := false; @@ -3728,7 +3725,7 @@ // calc gear offset in portal normal vector direction noffs:= (nx * ox + ny * oy); - if isBullet and (noffs.Round >= Gear^.Radius) then + if isBullet and (noffs.Round >= Longword(Gear^.Radius)) then continue; // avoid gravity related loops of not really moving gear @@ -3975,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; @@ -4050,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; @@ -4180,7 +4177,7 @@ sdY := -sdY; // initial angle depends on current GameTicks - t := GameTicks mod 4096; + t := getRandom(4096); // used for a work-around detection of area that is within land array, but outside borders @@ -4289,7 +4286,7 @@ end; procedure doStepSineGunShot(Gear: PGear); -var +var HHGear: PGear; begin PlaySound(sndSineGun); @@ -4658,7 +4655,7 @@ if ((Gear^.Message and gmAttack) <> 0) and (hh^.Gear^.Health > 0) and (TurnTimeLeft > 0) then begin - if graves.size <= Gear^.Tag then Gear^.Tag:= 0; + if LongInt(graves.size) <= Gear^.Tag then Gear^.Tag:= 0; dec(hh^.Gear^.Health); if (hh^.Gear^.Health = 0) and (hh^.Gear^.Damage = 0) then hh^.Gear^.Damage:= 1; @@ -4691,7 +4688,7 @@ // only make hat-less hedgehogs look like zombies, preserve existing hats if resgear^.Hedgehog^.Hat = 'NoHat' then - LoadHedgehogHat(resgear, 'Reserved/Zombie'); + LoadHedgehogHat(resgear^.Hedgehog^, 'Reserved/Zombie'); end; hh^.Gear^.dY := _0; @@ -5032,8 +5029,8 @@ A frozen hog stays frozen for a certain number of turns. Each turn the frozen overlay becomes fainter, until it fades and the hog animates normally again. *) procedure doStepIceGun(Gear: PGear); -var - HHGear, iter: PGear; +var + HHGear: PGear; ndX, ndY: hwFloat; i, t, gX, gY: LongInt; hogs: PGearArrayS; @@ -5117,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 @@ -5200,7 +5197,7 @@ exit end; -// Search out a new target, as target seek time has expired, target is dead, target is out of range, or we didn't have a target +// Search out a new target, as target seek time has expired, target is dead, target is out of range, or we did not have a target if (HHGear = nil) or (Gear^.Timer = 0) or (((abs(HHGear^.X.Round-Gear^.X.Round) + abs(HHGear^.Y.Round-Gear^.Y.Round) + 2) > Gear^.Angle) and (Distance(HHGear^.X-Gear^.X,HHGear^.Y-Gear^.Y) > int2hwFloat(Gear^.Angle))) @@ -5247,3 +5244,195 @@ end; end; end; + +//////////////////////////////////////////////////////////////////////////////// +procedure doStepKnife(Gear: PGear); +var ox, oy: LongInt; + la: hwFloat; +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^.Timer > 0 then dec(Gear^.Timer); + if (Gear^.State and gstMoving <> 0) and (Gear^.State and gstCollision = 0) then + begin + DeleteCI(Gear); + // used for damage and impact calc. needs balancing I think + Gear^.Health:= hwRound(hwSqr((hwAbs(Gear^.dY)+hwAbs(Gear^.dX))*_4)); + doStepFallingGear(Gear); + AllInactive := false; + CalcRotationDirAngle(Gear) + end + else if (Gear^.CollisionIndex = -1) and (Gear^.Timer = 0) then + begin + ox:= 0; oy:= 0; + if TestCollisionYwithGear(Gear, -1) <> 0 then oy:= -1; + if TestCollisionXwithGear(Gear, 1) then ox:= 1; + if TestCollisionXwithGear(Gear, -1) then ox:= -1; + if TestCollisionYwithGear(Gear, 1) <> 0 then oy:= 1; + if Gear^.Health > 0 then + PlaySound(sndRopeAttach); +(* + la:= _10000; + if (ox <> 0) or (oy <> 0) then + la:= CalcSlopeNearGear(Gear, ox, oy); + if la = _10000 then + begin + // 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(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 + // else Gear^.DirAngle:= hwFloat2Float(la)*90; // sheepluva's comment claims 45deg = 0.5 - yet orientation doesn't seem consistent? + // AddFileLog('la: '+floattostr(la)+' DirAngle: '+inttostr(round(Gear^.DirAngle))); + Gear^.dX:= _0; + Gear^.dY:= _0; + Gear^.State:= Gear^.State and (not gstMoving) or gstCollision; + Gear^.Radius:= 20; + if Gear^.Health > 0 then AmmoShove(Gear, Gear^.Health, 0); + Gear^.Radius:= 16; + Gear^.Health:= 0; + Gear^.Timer:= 500; + AddGearCI(Gear) + end + else if GameTicks and $3F = 0 then + begin + if (TestCollisionYwithGear(Gear, -1) = 0) + and (not TestCollisionXwithGear(Gear, 1)) + and (not TestCollisionXwithGear(Gear, -1)) + and (TestCollisionYwithGear(Gear, 1) = 0) then Gear^.State:= Gear^.State and (not gstCollision) or gstMoving; + end +end; +(* + This didn't end up getting used, but, who knows, might be reasonable for javellin or something +// Make the knife initial angle based on the hog attack angle, or is that too hard? +procedure doStepKnife(Gear: PGear); +var t, + gx, gy, ga, // gear x,y,angle + lx, ly, la, // land x,y,angle + ox, oy, // x,y offset + w, h, // wXh of clip area + tx, ty // tip position in sprite + : LongInt; + surf: PSDL_Surface; + s: hwFloat; + +begin + Gear^.dY := Gear^.dY + cGravity; + if (GameFlags and gfMoreWind) <> 0 then + Gear^.dX := Gear^.dX + cWindSpeed / Gear^.Density; + Gear^.X := Gear^.X + Gear^.dX; + Gear^.Y := Gear^.Y + Gear^.dY; + CheckGearDrowning(Gear); + gx:= hwRound(Gear^.X); + gy:= hwRound(Gear^.Y); + if Gear^.State and gstDrowning <> 0 then exit; + with Gear^ do + begin + if CheckLandValue(gx, gy, $FF00) then + begin + t:= Angle + hwRound((hwAbs(dX)+hwAbs(dY)) * _10); + + if t < 0 then inc(t, 4096) + else if 4095 < t then dec(t, 4096); + Angle:= t; + + DirAngle:= Angle / 4096 * 360 + end + else + begin +//This is the set of postions for the knife. +//Using FlipSurface and copyToXY the knife can be written to the LandPixels at 32 positions, and an appropriate line drawn in Land. + t:= Angle mod 1024; + case t div 128 of + 0: begin + ox:= 2; oy:= 5; + w := 25; h:= 5; + tx:= 0; ty:= 2 + end; + 1: begin + ox:= 2; oy:= 15; + w:= 24; h:= 8; + tx:= 0; ty:= 7 + end; + 2: begin + ox:= 2; oy:= 27; + w:= 23; h:= 12; + tx:= -12; ty:= -5 + end; + 3: begin + ox:= 2; oy:= 43; + w:= 21; h:= 15; + tx:= 0; ty:= 14 + end; + 4: begin + ox:= 29; oy:= 8; + w:= 19; h:= 19; + tx:= 0; ty:= 17 + end; + 5: begin + ox:= 29; oy:= 32; + w:= 15; h:= 21; + tx:= 0; ty:= 20 + end; + 6: begin + ox:= 51; oy:= 3; + w:= 11; h:= 23; + tx:= 0; ty:= 22 + end; + 7: begin + ox:= 51; oy:= 34; + w:= 7; h:= 24; + tx:= 0; ty:= 23 + end + end; + + surf:= SDL_CreateRGBSurface(SDL_SWSURFACE, w, h, 32, RMask, GMask, BMask, AMask); + copyToXYFromRect(SpritesData[sprKnife].Surface, surf, ox, oy, w, h, 0, 0); + // try to make the knife hit point first + lx := 0; + ly := 0; + if CalcSlopeTangent(Gear, gx, gy, lx, ly, 255) then + begin + la:= vector2Angle(int2hwFloat(lx), int2hwFloat(ly)); + ga:= vector2Angle(dX, dY); + AddFileLog('la: '+inttostr(la)+' ga: '+inttostr(ga)+' Angle: '+inttostr(Angle)); + // change to 0 to 4096 forced by LongWord in Gear + if la < 0 then la:= 4096+la; + if ga < 0 then ga:= 4096+ga; + if ((Angle > ga) and (Angle < la)) or ((Angle < ga) and (Angle > la)) then + begin + if Angle >= 2048 then dec(Angle, 2048) + else if Angle < 2048 then inc(Angle, 2048) + end; + AddFileLog('la: '+inttostr(la)+' ga: '+inttostr(ga)+' Angle: '+inttostr(Angle)) + end; + case Angle div 1024 of + 0: begin + flipSurface(surf, true); + flipSurface(surf, true); + BlitImageAndGenerateCollisionInfo(gx-(w-tx), gy-(h-ty), w, surf) + end; + 1: begin + flipSurface(surf, false); + BlitImageAndGenerateCollisionInfo(gx-(w-tx), gy-ty, w, surf) + end; + 2: begin // knife was actually drawn facing this way... + BlitImageAndGenerateCollisionInfo(gx-tx, gy-ty, w, surf) + end; + 3: begin + flipSurface(surf, true); + BlitImageAndGenerateCollisionInfo(gx-tx, gy-(h-ty), w, surf) + end + end; + SDL_FreeSurface(surf); + // this needs to calculate actual width/height + land clipping since update texture doesn't. + // i.e. this will crash if you fire near sides of map, but until I get the blit right, not going to put real values + UpdateLandTexture(hwRound(X)-32, 64, hwRound(Y)-32, 64, true); + DeleteGear(Gear); + exit + end + end; +end; +*) diff -r 6237d2f002ba -r 2bc61f8841a1 hedgewars/VGSHandlers.inc --- a/hedgewars/VGSHandlers.inc Sun Sep 16 23:52:36 2012 +0200 +++ b/hedgewars/VGSHandlers.inc Sun Oct 28 15:12:37 2012 +0100 @@ -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 6237d2f002ba -r 2bc61f8841a1 hedgewars/hwengine.pas --- a/hedgewars/hwengine.pas Sun Sep 16 23:52:36 2012 +0200 +++ b/hedgewars/hwengine.pas Sun Oct 28 15:12:37 2012 +0100 @@ -29,11 +29,13 @@ 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} @@ -48,7 +50,7 @@ procedure freeEverything(complete:boolean); forward; {$ENDIF} -//////////////////////////////// +//////////////////////////////////////////////////////////////////////////////// function DoTimer(Lag: LongInt): boolean; var s: shortstring; begin @@ -59,9 +61,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 +138,7 @@ end; end; -/////////////////// +//////////////////////////////////////////////////////////////////////////////// procedure MainLoop; var event: TSDL_Event; PrevTime, CurrTime: Longword; @@ -308,15 +310,14 @@ 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; + initEverything(true); cShowFPS:= {$IFDEF DEBUGFILE}true{$ELSE}false{$ENDIF}; ipcPort:= StrToInt(gameArgs[0]); cScreenWidth:= StrToInt(gameArgs[1]); @@ -345,7 +346,6 @@ cOrigScreenWidth:= cScreenWidth; cOrigScreenHeight:= cScreenHeight; - initEverything(true); WriteLnToConsole('Hedgewars ' + cVersionString + ' engine (network protocol: ' + inttostr(cNetProtoVersion) + ')'); AddFileLog('Prefix: "' + PathPrefix +'"'); AddFileLog('UserPrefix: "' + UserPathPrefix +'"'); @@ -443,40 +443,42 @@ freeEverything(true); end; +//////////////////////////////////////////////////////////////////////////////// +// As a rule of thumb, every module that is listed in either initEverything or +// freeEverything should come in pair, even if they are stubs. Only use this +// section for inialising variables and remeber that game args overwrite these, +// so handle this section with care. Pay attention to the init/free order too! procedure initEverything (complete:boolean); begin Randomize(); - uUtils.initModule(complete); // this opens the debug file, must be the first - uMisc.initModule; - uVariables.initModule; - uConsole.initModule; - uCommands.initModule; - uCommandHandlers.initModule; + 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; - uLandPainted.initModule; - uIO.initModule; + 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 +486,6 @@ uTeams.initModule; uVisualGears.initModule; uWorld.initModule; - uCaptions.initModule; end; end; @@ -493,9 +494,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 +505,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,18 +523,17 @@ 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 +{$IFDEF HWLIBRARY} initEverything(false); -{$IFDEF HWLIBRARY} WriteLnToConsole('Preview connecting on port ' + inttostr(port)); ipcPort:= port; InitStepsFlags:= cifRandomize; @@ -557,7 +551,7 @@ end; {$IFNDEF HWLIBRARY} -///////////////////// +//////////////////////////////////////////////////////////////////////////////// procedure DisplayUsage; var i: LongInt; begin @@ -583,7 +577,7 @@ WriteLn(stdout, ''); end; -//////////////////// +//////////////////////////////////////////////////////////////////////////////// {$INCLUDE "ArgParsers.inc"} procedure GetParams; @@ -591,16 +585,28 @@ 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 + initEverything(false); + ipcPort:= StrToInt(ParamStr(2)); + GameType:= gmtLandPreview; + exit; + end + else + begin + initEverything(true); + 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; //////////////////////////////////////////////////////////////////////////////// diff -r 6237d2f002ba -r 2bc61f8841a1 hedgewars/options.inc --- a/hedgewars/options.inc Sun Sep 16 23:52:36 2012 +0200 +++ b/hedgewars/options.inc Sun Oct 28 15:12:37 2012 +0100 @@ -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 6237d2f002ba -r 2bc61f8841a1 hedgewars/uAI.pas --- a/hedgewars/uAI.pas Sun Sep 16 23:52:36 2012 +0200 +++ b/hedgewars/uAI.pas Sun Oct 28 15:12:37 2012 +0100 @@ -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 6237d2f002ba -r 2bc61f8841a1 hedgewars/uAIActions.pas --- a/hedgewars/uAIActions.pas Sun Sep 16 23:52:36 2012 +0200 +++ b/hedgewars/uAIActions.pas Sun Oct 28 15:12:37 2012 +0100 @@ -234,7 +234,7 @@ doPut(X, Y, true); aia_waitAngle: - if Me^.Angle <> Abs(Param) then exit; + 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; diff -r 6237d2f002ba -r 2bc61f8841a1 hedgewars/uAIAmmoTests.pas --- a/hedgewars/uAIAmmoTests.pas Sun Sep 16 23:52:36 2012 +0200 +++ b/hedgewars/uAIAmmoTests.pas Sun Oct 28 15:12:37 2012 +0100 @@ -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 @@ -117,7 +117,8 @@ (proc: nil; flags: 0), // amTardis (proc: nil; flags: 0), // amStructure (proc: nil; flags: 0), // amLandGun - (proc: nil; flags: 0) // amIceGun + (proc: nil; flags: 0), // amIceGun + (proc: nil; flags: 0) // amKnife ); const BadTurn = Low(LongInt) div 4; @@ -227,7 +228,7 @@ EX:= trunc(x); EY:= trunc(y); - value:= RateShove(Me, trunc(x), trunc(y), 5, 1, trunc((abs(dX)+abs(dY))*20), -dX, -dY, afTrackFall); + value:= RateShove(trunc(x), trunc(y), 5, 1, trunc((abs(dX)+abs(dY))*20), -dX, -dY, afTrackFall); if value = 0 then value:= - Metric(Targ.X, Targ.Y, EX, EY) div 64; @@ -286,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; @@ -495,6 +495,7 @@ begin TestMortar:= BadTurn; ap.ExplR:= 0; + meX:= hwFloat2Float(Me^.X); meY:= hwFloat2Float(Me^.Y); @@ -601,7 +602,7 @@ d: Longword; fallDmg, valueResult: LongInt; begin -if Level > 3 then exit(BadTurn); +if Level > 4 then exit(BadTurn); dmgMod:= 0.01 * hwFloat2Float(cDamageModifier) * cDamagePercent; Level:= Level; // avoid compiler hint ap.ExplR:= 0; @@ -611,7 +612,7 @@ x:= hwFloat2Float(Me^.X); y:= hwFloat2Float(Me^.Y); -if Abs(trunc(x) - Targ.X) + Abs(trunc(y) - Targ.Y) < 40 then +if Abs(trunc(x) - Targ.X) + Abs(trunc(y) - Targ.Y) < 20 then exit(BadTurn); t:= 2 / sqrt(sqr(Targ.X - x)+sqr(Targ.Y-y)); @@ -631,14 +632,14 @@ or (y < 0) or (trunc(x) > LAND_WIDTH) or (trunc(y) > LAND_HEIGHT) - or (d > 50); + or (d > 48); if Abs(Targ.X - trunc(x)) + Abs(Targ.Y - trunc(y)) < 5 then begin fallDmg:= TraceShoveFall(Targ.X, Targ.Y, vX * 0.00125 * 20, vY * 0.00125 * 20); if fallDmg < 0 then valueResult:= 204800 - else valueResult:= Max(0, (4 - d div 50) * trunc((7+fallDmg)*dmgMod) * 1024) + else valueResult:= Max(0, (4 - d div 12) * trunc((7 + fallDmg) * dmgMod) * 1024) end else valueResult:= BadTurn; @@ -649,7 +650,7 @@ function TestSniperRifle(Me: PGear; Targ: TPoint; Level: LongInt; var ap: TAttackParams): LongInt; var Vx, Vy, x, y, t, dmg, dmgMod: real; d: Longword; - fallDmg, valueResult: LongInt; + fallDmg: LongInt; begin if Level > 3 then exit(BadTurn); dmgMod:= 0.01 * hwFloat2Float(cDamageModifier) * cDamagePercent; @@ -701,6 +702,8 @@ x, y, trackFall: LongInt; dx, dy: real; begin + Targ:= Targ; // avoid compiler hint + if Level < 3 then trackFall:= afTrackFall else trackFall:= 0; @@ -718,10 +721,10 @@ dx:= sin(a / cMaxAngle * pi) * 0.5; dy:= cos(a / cMaxAngle * pi) * 0.5; - v1:= RateShove(Me, x - 10, y + 2 + v1:= RateShove(x - 10, y + 2 , 32, 30, 115 , -dx, -dy, trackFall); - v2:= RateShove(Me, x + 10, y + 2 + v2:= RateShove(x + 10, y + 2 , 32, 30, 115 , dx, -dy, trackFall); if (v1 > valueResult) or (v2 > valueResult) then @@ -750,6 +753,8 @@ var valueResult, v1, v2, i: LongInt; x, y, trackFall: LongInt; begin + Targ:= Targ; // avoid compiler hint + if Level = 1 then trackFall:= afTrackFall else trackFall:= 0; @@ -762,11 +767,11 @@ v1:= 0; for i:= 0 to 8 do begin - v1:= v1 + RateShove(Me, x - 5, y - 10 * i + v1:= v1 + RateShove(x - 5, y - 10 * i , 19, 30, 40 , -0.45, -0.9, trackFall or afSetSkip); end; - v1:= v1 + RateShove(Me, x - 5, y - 90 + v1:= v1 + RateShove(x - 5, y - 90 , 19, 30, 40 , -0.45, -0.9, trackFall); @@ -775,11 +780,11 @@ v2:= 0; for i:= 0 to 8 do begin - v2:= v2 + RateShove(Me, x + 5, y - 10 * i + v2:= v2 + RateShove(x + 5, y - 10 * i , 19, 30, 40 , 0.45, -0.9, trackFall or afSetSkip); end; - v2:= v2 + RateShove(Me, x + 5, y - 90 + v2:= v2 + RateShove(x + 5, y - 90 , 19, 30, 40 , 0.45, -0.9, trackFall); @@ -806,6 +811,8 @@ var valueResult, v1, v2: LongInt; x, y, trackFall: LongInt; begin + Targ:= Targ; // avoid compiler hint + if Level = 1 then trackFall:= afTrackFall else trackFall:= 0; @@ -819,19 +826,19 @@ {first RateShove checks farthermost of two whip's AmmoShove attacks to encourage distant attacks (damaged hog is excluded from view of second RateShove call)} - v1:= RateShove(Me, x - 13, y + v1:= RateShove(x - 13, y , 30, 30, 25 , -1, -0.8, trackFall or afSetSkip); v1:= v1 + - RateShove(Me, x - 2, y + RateShove(x - 2, y , 30, 30, 25 , -1, -0.8, trackFall); // now try opposite direction - v2:= RateShove(Me, x + 13, y + v2:= RateShove(x + 13, y , 30, 30, 25 , 1, -0.8, trackFall or afSetSkip); v2:= v2 + - RateShove(Me, x + 2, y + RateShove(x + 2, y , 30, 30, 25 , 1, -0.8, trackFall); @@ -898,7 +905,7 @@ for i:= 0 to 512 div step - 2 do begin valueResult:= valueResult + - RateShove(Me, trunc(x), trunc(y) + RateShove(trunc(x), trunc(y) , 30, 30, 25 , cx, -0.9, trackFall or afSetSkip); @@ -910,14 +917,14 @@ x:= hwFloat2Float(Me^.X); y:= hwFloat2Float(Me^.Y); tx:= trunc(x); - v:= RateShove(Me, tx, trunc(y) + v:= RateShove(tx, trunc(y) , 30, 30, 25 , -cx, -0.9, trackFall); for i:= 1 to 512 div step - 2 do begin y:= y + dy; v:= v + - RateShove(Me, tx, trunc(y) + RateShove(tx, trunc(y) , 30, 30, 25 , -cx, -0.9, trackFall or afSetSkip); end @@ -927,12 +934,12 @@ ap.Angle:= -2048; valueResult:= v end; - - v:= RateShove(Me, trunc(x), trunc(y) + + v:= RateShove(trunc(x), trunc(y) , 30, 30, 25 , cx, -0.9, trackFall); valueResult:= valueResult + v - KillScore * friendlyfactor div 100 * 1024; - + if v < 65536 then inc(valueResult, RateExplosion(Me, trunc(x), trunc(y), 30)); @@ -943,6 +950,8 @@ var rate: LongInt; begin Level:= Level; // avoid compiler hint +Targ:= Targ; + ap.ExplR:= 0; ap.Time:= 0; ap.Power:= 1; @@ -1090,18 +1099,21 @@ function TestCake(Me: PGear; Targ: TPoint; Level: LongInt; var ap: TAttackParams): LongInt; var valueResult, v1, v2: LongInt; - x, y, trackFall: LongInt; cake: TGear; begin + Targ:= Targ; // avoid compiler hint + if (Level > 2) then exit(BadTurn); + ap.ExplR:= 0; ap.Time:= 0; ap.Power:= BadTurn; // use it as max score value in checkCakeWalk - FillChar(cake, sizeof(cake), 0); + //FillChar(cake, sizeof(cake), 0); cake.Radius:= 7; cake.CollisionMask:= $FF7F; + cake.Hedgehog:= Me^.Hedgehog; // check left direction cake.Angle:= 3; diff -r 6237d2f002ba -r 2bc61f8841a1 hedgewars/uAILandMarks.pas --- a/hedgewars/uAILandMarks.pas Sun Sep 16 23:52:36 2012 +0200 +++ b/hedgewars/uAILandMarks.pas Sun Oct 28 15:12:37 2012 +0100 @@ -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 6237d2f002ba -r 2bc61f8841a1 hedgewars/uAIMisc.pas --- a/hedgewars/uAIMisc.pas Sun Sep 16 23:52:36 2012 +0200 +++ b/hedgewars/uAIMisc.pas Sun Oct 28 15:12:37 2012 +0100 @@ -66,7 +66,7 @@ function RateExplosion(Me: PGear; x, y, r: LongInt): LongInt; inline; function RateExplosion(Me: PGear; x, y, r: LongInt; Flags: LongWord): LongInt; -function RateShove(Me: PGear; x, y, r, power, kick: LongInt; gdX, gdY: real; Flags: LongWord): LongInt; +function RateShove(x, y, r, power, kick: LongInt; gdX, gdY: real; Flags: LongWord): LongInt; function RateShotgun(Me: PGear; gdX, gdY: real; x, y: LongInt): LongInt; function RateHammer(Me: PGear): LongInt; @@ -88,9 +88,9 @@ const KillScore = 200; var friendlyfactor: LongInt = 300; - + implementation -uses uCollisions, uVariables, uUtils, uDebug, uLandTexture; +uses uCollisions, uVariables, uUtils, uLandTexture, uGearsUtils; var KnownExplosion: record @@ -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; @@ -364,9 +366,9 @@ end; function TraceShoveFall(x, y, dX, dY: Real): LongInt; -var dmg, v: LongInt; +var dmg: LongInt; begin -v:= random($FFFFFFFF); +//v:= random($FFFFFFFF); while true do begin x:= x + dX; @@ -457,7 +459,7 @@ RateExplosion:= rate; end; -function RateShove(Me: PGear; x, y, r, power, kick: LongInt; gdX, gdY: real; Flags: LongWord): LongInt; +function RateShove(x, y, r, power, kick: LongInt; gdX, gdY: real; Flags: LongWord): LongInt; var i, fallDmg, dmg, rate: LongInt; dX, dY, dmgMod: real; begin @@ -731,7 +733,7 @@ end; continue end; - + // usual walk if (Gear^.Message and gmLeft) <> 0 then Gear^.dX:= -cLittle @@ -740,77 +742,10 @@ Gear^.dX:= cLittle else exit(false); - - if TestCollisionXwithGear(Gear, hwSign(Gear^.dX)) then if (TestCollisionYwithGear(Gear, -1) = 0) then - begin - Gear^.Y:= Gear^.Y - _1; - if TestCollisionXwithGear(Gear, hwSign(Gear^.dX)) then if (TestCollisionYwithGear(Gear, -1) = 0) then - begin - Gear^.Y:= Gear^.Y - _1; - if TestCollisionXwithGear(Gear, hwSign(Gear^.dX)) then if (TestCollisionYwithGear(Gear, -1) = 0) then - begin - Gear^.Y:= Gear^.Y - _1; - if TestCollisionXwithGear(Gear, hwSign(Gear^.dX)) then if (TestCollisionYwithGear(Gear, -1) = 0) then - begin - Gear^.Y:= Gear^.Y - _1; - if TestCollisionXwithGear(Gear, hwSign(Gear^.dX)) then if (TestCollisionYwithGear(Gear, -1) = 0) then - begin - Gear^.Y:= Gear^.Y - _1; - if TestCollisionXwithGear(Gear, hwSign(Gear^.dX)) then if (TestCollisionYwithGear(Gear, -1) = 0) then - begin - Gear^.Y:= Gear^.Y - _1; - if TestCollisionXwithGear(Gear, hwSign(Gear^.dX)) then - Gear^.Y:= Gear^.Y + _6 - end else Gear^.Y:= Gear^.Y + _5 else - end else Gear^.Y:= Gear^.Y + _4 else - end else Gear^.Y:= Gear^.Y + _3 else - end else Gear^.Y:= Gear^.Y + _2 else - end else Gear^.Y:= Gear^.Y + _1 - end; - - if not TestCollisionXwithGear(Gear, hwSign(Gear^.dX)) then - begin - Gear^.X:= Gear^.X + int2hwFloat(hwSign(Gear^.dX)); - inc(GoInfo.Ticks, cHHStepTicks) - end; - // too scared to reformat this part - if TestCollisionYwithGear(Gear, 1) = 0 then - begin - Gear^.Y:= Gear^.Y + _1; - - if TestCollisionYwithGear(Gear, 1) = 0 then - begin - Gear^.Y:= Gear^.Y + _1; - - if TestCollisionYwithGear(Gear, 1) = 0 then - begin - Gear^.Y:= Gear^.Y + _1; - - if TestCollisionYwithGear(Gear, 1) = 0 then - begin - Gear^.Y:= Gear^.Y + _1; + if MakeHedgehogsStep(Gear) then + inc(GoInfo.Ticks, cHHStepTicks); - if TestCollisionYwithGear(Gear, 1) = 0 then - begin - Gear^.Y:= Gear^.Y + _1; - - if TestCollisionYwithGear(Gear, 1) = 0 then - begin - Gear^.Y:= Gear^.Y + _1; - - if TestCollisionYwithGear(Gear, 1) = 0 then - begin - Gear^.Y:= Gear^.Y - _6; - Gear^.dY:= _0; - Gear^.State:= Gear^.State or gstMoving - end - end - end - end - end - end - end; // we have moved for 1 px if (pX <> hwRound(Gear^.X)) and ((Gear^.State and gstMoving) = 0) then exit(true) @@ -837,7 +772,6 @@ procedure freeModule; begin - end; end. diff -r 6237d2f002ba -r 2bc61f8841a1 hedgewars/uAmmos.pas --- a/hedgewars/uAmmos.pas Sun Sep 16 23:52:36 2012 +0200 +++ b/hedgewars/uAmmos.pas Sun Oct 28 15:12:37 2012 +0100 @@ -20,7 +20,7 @@ unit uAmmos; interface -uses uConsts, uTypes; +uses uConsts, uTypes, uStore; procedure initModule; procedure freeModule; @@ -277,6 +277,7 @@ begin PackAmmo(Ammo, Ammoz[AmmoType].Slot); //SwitchNotHeldAmmo(Hedgehog); + if CurAmmoType = amKnife then LoadHedgehogHat(Hedgehog, Hedgehog.Hat); CurAmmoType:= amNothing end end @@ -347,6 +348,7 @@ end; TryDo(slot <= cMaxSlotIndex, 'Ammo slot index overflow', true); CurAmmoType:= Ammo^[slot, ammoidx].AmmoType; + if CurAmmoType = amKnife then LoadHedgehogHat(Hedgehog, 'Reserved/chef') end end; diff -r 6237d2f002ba -r 2bc61f8841a1 hedgewars/uChat.pas --- a/hedgewars/uChat.pas Sun Sep 16 23:52:36 2012 +0200 +++ b/hedgewars/uChat.pas Sun Oct 28 15:12:37 2012 +0100 @@ -376,6 +376,7 @@ else begin // err, does anyone have any documentation on this sequence? + // ^^ isn't it obvious? 27 is esc, 32 is space, inbetween is "/team" KeyPressChat(27); KeyPressChat(47); KeyPressChat(116); diff -r 6237d2f002ba -r 2bc61f8841a1 hedgewars/uCollisions.pas --- a/hedgewars/uCollisions.pas Sun Sep 16 23:52:36 2012 +0200 +++ b/hedgewars/uCollisions.pas Sun Oct 28 15:12:37 2012 +0100 @@ -56,6 +56,7 @@ // returns: negative sign if going downhill to left, value is steepness (noslope/error = _0, 45° = _0_5) function CalcSlopeBelowGear(Gear: PGear): hwFloat; +function CalcSlopeNearGear(Gear: PGear; dirX, dirY: LongInt): hwFloat; function CalcSlopeTangent(Gear: PGear; collisionX, collisionY: LongInt; var outDeltaX, outDeltaY: LongInt; TestWord: LongWord): Boolean; implementation @@ -139,8 +140,8 @@ begin // Special case to emulate the old intersect gear clearing, but with a bit of slop for pixel overlap if (Gear^.CollisionMask = $FF7F) and (Gear^.Kind <> gtHedgehog) and (Gear^.Hedgehog <> nil) and (Gear^.Hedgehog^.Gear <> nil) and - ((hwRound(Gear^.Hedgehog^.Gear^.X) + Gear^.Hedgehog^.Gear^.Radius + 4 < hwRound(Gear^.X) - Gear^.Radius) or - (hwRound(Gear^.Hedgehog^.Gear^.X) - Gear^.Hedgehog^.Gear^.Radius - 4 > hwRound(Gear^.X) + Gear^.Radius)) then + ((hwRound(Gear^.Hedgehog^.Gear^.X) + Gear^.Hedgehog^.Gear^.Radius + 16 < hwRound(Gear^.X) - Gear^.Radius) or + (hwRound(Gear^.Hedgehog^.Gear^.X) - Gear^.Hedgehog^.Gear^.Radius - 16 > hwRound(Gear^.X) + Gear^.Radius)) then Gear^.CollisionMask:= $FFFF; x:= hwRound(Gear^.X); @@ -169,8 +170,8 @@ begin // Special case to emulate the old intersect gear clearing, but with a bit of slop for pixel overlap if (Gear^.CollisionMask = $FF7F) and (Gear^.Kind <> gtHedgehog) and (Gear^.Hedgehog <> nil) and (Gear^.Hedgehog^.Gear <> nil) and - ((hwRound(Gear^.Hedgehog^.Gear^.Y) + Gear^.Hedgehog^.Gear^.Radius + 4 < hwRound(Gear^.Y) - Gear^.Radius) or - (hwRound(Gear^.Hedgehog^.Gear^.Y) - Gear^.Hedgehog^.Gear^.Radius - 4 > hwRound(Gear^.Y) + Gear^.Radius)) then + ((hwRound(Gear^.Hedgehog^.Gear^.Y) + Gear^.Hedgehog^.Gear^.Radius + 16 < hwRound(Gear^.Y) - Gear^.Radius) or + (hwRound(Gear^.Hedgehog^.Gear^.Y) - Gear^.Hedgehog^.Gear^.Radius - 16 > hwRound(Gear^.Y) + Gear^.Radius)) then Gear^.CollisionMask:= $FFFF; y:= hwRound(Gear^.Y); @@ -237,16 +238,18 @@ for i:= 0 to Pred(Count) do with cinfos[i] do if (Gear <> cGear) and (sqr(mx - x) + sqr(my - y) <= sqr(Radius + Gear^.Radius + 2)) - and ((mx > x) xor (Dir > 0)) then - if ((cGear^.Kind in [gtHedgehog, gtMine]) and ((Gear^.State and gstNotKickable) = 0)) or + and ((mx > x) xor (Dir > 0)) and + ( + ((cGear^.Kind in [gtHedgehog, gtMine, gtKnife]) and ((Gear^.State and gstNotKickable) = 0)) or // only apply X kick if the barrel is knocked over - ((cGear^.Kind = gtExplosives) and ((cGear^.State and gsttmpflag) <> 0)) then + ((cGear^.Kind = gtExplosives) and ((cGear^.State and gsttmpflag) <> 0))) then begin with cGear^ do begin dX:= Gear^.dX; dY:= Gear^.dY * _0_5; State:= State or gstMoving; + if Kind = gtKnife then State:= State and (not gstCollision); Active:= true end; DeleteCI(cGear); @@ -257,7 +260,7 @@ end; function TestCollisionYKick(Gear: PGear; Dir: LongInt): boolean; -var x, y, mx, my, i: LongInt; +var x, y, mx, my, myr, i: LongInt; flag: boolean; begin flag:= false; @@ -293,12 +296,15 @@ mx:= hwRound(Gear^.X); my:= hwRound(Gear^.Y); + myr:= my+Gear^.Radius; for i:= 0 to Pred(Count) do with cinfos[i] do if (Gear <> cGear) and (sqr(mx - x) + sqr(my - y) <= sqr(Radius + Gear^.Radius + 2)) - and ((my > y) xor (Dir > 0)) then - if (cGear^.Kind in [gtHedgehog, gtMine, gtExplosives]) and ((Gear^.State and gstNotKickable) = 0) then + and ((myr > y) xor (Dir > 0)) and + ( + (cGear^.Kind in [gtHedgehog, gtMine, gtKnife, gtExplosives]) and + ((Gear^.State and gstNotKickable) = 0)) then begin with cGear^ do begin @@ -306,6 +312,7 @@ dX:= Gear^.dX * _0_5; dY:= Gear^.dY; State:= State or gstMoving; + if Kind = gtKnife then State:= State and (not gstCollision); Active:= true end; DeleteCI(cGear); @@ -576,6 +583,99 @@ CalcSlopeTangent:= true; end; +function CalcSlopeNearGear(Gear: PGear; dirX, dirY: LongInt): hwFloat; +var dx, dy: hwFloat; + collX, collY, i, y, x, gx, gy, sdx, sdy: LongInt; + isColl, bSucc: Boolean; +begin + +if dirY <> 0 then + begin + y:= hwRound(Gear^.Y) + Gear^.Radius * dirY; + gx:= hwRound(Gear^.X); + collX := gx; + isColl:= false; + + if (y and LAND_HEIGHT_MASK) = 0 then + begin + x:= hwRound(Gear^.X) - Gear^.Radius + 1; + i:= x + Gear^.Radius * 2 - 2; + repeat + if (x and LAND_WIDTH_MASK) = 0 then + if Land[y, x] <> 0 then + if (not isColl) or (abs(x-gx) < abs(collX-gx)) then + begin + isColl:= true; + collX := x; + end; + inc(x) + until (x > i); + end; + end +else + begin + x:= hwRound(Gear^.X) + Gear^.Radius * dirX; + gy:= hwRound(Gear^.Y); + collY := gy; + isColl:= false; + + if (x and LAND_WIDTH_MASK) = 0 then + begin + y:= hwRound(Gear^.Y) - Gear^.Radius + 1; + i:= y + Gear^.Radius * 2 - 2; + repeat + if (y and LAND_HEIGHT_MASK) = 0 then + if Land[y, x] <> 0 then + if (not isColl) or (abs(y-gy) < abs(collY-gy)) then + begin + isColl:= true; + collY := y; + end; + inc(y) + until (y > i); + end; + end; + +if isColl then + begin + // save original dx/dy + dx := Gear^.dX; + dy := Gear^.dY; + + if dirY <> 0 then + begin + Gear^.dX.QWordValue:= 0; + Gear^.dX.isNegative:= (collX >= gx); + Gear^.dY:= _1*dirY + end + else + begin + Gear^.dY.QWordValue:= 0; + Gear^.dY.isNegative:= (collY >= gy); + Gear^.dX:= _1*dirX + end; + + sdx:= 0; + sdy:= 0; + if dirY <> 0 then + bSucc := CalcSlopeTangent(Gear, collX, y, sdx, sdy, 0) + else bSucc := CalcSlopeTangent(Gear, x, collY, sdx, sdy, 0); + + // restore original dx/dy + Gear^.dX := dx; + Gear^.dY := dy; + + if bSucc and ((sdx <> 0) or (sdy <> 0)) then + begin + dx := int2hwFloat(sdy) / (abs(sdx) + abs(sdy)); + dx.isNegative := (sdx * sdy) < 0; + exit (dx); + end + end; + +CalcSlopeNearGear := _0; +end; + function CalcSlopeBelowGear(Gear: PGear): hwFloat; var dx, dy: hwFloat; collX, i, y, x, gx, sdx, sdy: LongInt; @@ -595,7 +695,7 @@ repeat if (x and LAND_WIDTH_MASK) = 0 then if Land[y, x] > 255 then - if not isColl or (abs(x-gx) < abs(collX-gx)) then + if (not isColl) or (abs(x-gx) < abs(collX-gx)) then begin isColl:= true; collX := x; diff -r 6237d2f002ba -r 2bc61f8841a1 hedgewars/uCommandHandlers.pas --- a/hedgewars/uCommandHandlers.pas Sun Sep 16 23:52:36 2012 +0200 +++ b/hedgewars/uCommandHandlers.pas Sun Oct 28 15:12:37 2012 +0100 @@ -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 @@ -71,12 +71,12 @@ begin s:= s; // avoid compiler hint if GameState = gsConfirm then - begin + begin SendIPC(_S'Q'); GameState:= gsExit - end -else - ParseCommand('chat team', true); + end + else + ParseCommand('chat team', true); end; procedure chHalt (var s: shortstring); @@ -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 6237d2f002ba -r 2bc61f8841a1 hedgewars/uCommands.pas --- a/hedgewars/uCommands.pas Sun Sep 16 23:52:36 2012 +0200 +++ b/hedgewars/uCommands.pas Sun Oct 28 15:12:37 2012 +0100 @@ -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 6237d2f002ba -r 2bc61f8841a1 hedgewars/uFloat.pas --- a/hedgewars/uFloat.pas Sun Sep 16 23:52:36 2012 +0200 +++ b/hedgewars/uFloat.pas Sun Oct 28 15:12:37 2012 +0100 @@ -91,6 +91,7 @@ function DistanceI(const dx, dy: LongInt): hwFloat; // Same as above for integer parameters. function AngleSin(const Angle: Longword): hwFloat; function AngleCos(const Angle: Longword): hwFloat; +function vector2Angle(const x, y: hwFloat): LongInt; function SignAs(const num, signum: hwFloat): hwFloat; inline; // Returns an hwFloat with the value of parameter num and the sign of signum. function hwSign(r: hwFloat): LongInt; inline; // Returns an integer with value 1 and sign of parameter r. function hwSignf(r: real): LongInt; inline; // Returns an integer with value 1 and sign of parameter r. @@ -491,6 +492,9 @@ end; function hwSqrt(const t: hwFloat): hwFloat; +const pwr = 8; // even value, feel free to adjust + rThreshold = 1 shl (pwr + 32); + lThreshold = 1 shl (pwr div 2 + 32); var l, r: QWord; c: hwFloat; begin @@ -503,14 +507,24 @@ end else begin - l:= $100000000; - r:= t.QWordValue div 2 + $80000000; // r:= t / 2 + 0.5 - if r > $FFFFFFFFFFFF then - r:= $FFFFFFFFFFFF + if t.QWordValue > $FFFFFFFFFFFF then // t.Round > 65535.9999 + begin + l:= $10000000000; // 256 + r:= $FFFFFFFFFFFF; // 65535.9999 + end else + if t.QWordValue >= rThreshold then + begin + l:= lThreshold; + r:= $10000000000; // 256 + end else + begin + l:= $100000000; + r:= lThreshold; + end; end; repeat - c.QWordValue:= (l + r) div 2; + c.QWordValue:= (l + r) shr 1; if hwSqr(c).QWordValue > t.QWordValue then r:= c.QWordValue else @@ -573,6 +587,39 @@ else AngleCos.QWordValue:= SinTable[Angle - 1024] end; + +function vector2Angle(const x, y: hwFloat): LongInt; +var d, nf: hwFloat; + l, r, c, oc: Longword; + n: QWord; +begin + d:= _1 / Distance(x, y); + + nf:= y * d; + n:= nf.QWordValue; + + l:= 0; + r:= 1024; + c:= 0; + + repeat + oc:= c; + + c:= (l + r) shr 1; + + if n >= SinTable[c] then + l:= c + else + r:= c; + + until (oc = c); + + if x.isNegative then c:= 2048 - c; + if y.isNegative then c:= - c; + + vector2Angle:= c +end; + {$ENDIF} end. diff -r 6237d2f002ba -r 2bc61f8841a1 hedgewars/uGame.pas --- a/hedgewars/uGame.pas Sun Sep 16 23:52:36 2012 +0200 +++ b/hedgewars/uGame.pas Sun Oct 28 15:12:37 2012 +0100 @@ -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 6237d2f002ba -r 2bc61f8841a1 hedgewars/uGears.pas --- a/hedgewars/uGears.pas Sun Sep 16 23:52:36 2012 +0200 +++ b/hedgewars/uGears.pas Sun Oct 28 15:12:37 2012 +0100 @@ -652,9 +652,9 @@ snowRight:= max(LAND_WIDTH,4096)+512; snowLeft:= -(snowRight-LAND_WIDTH); -if not hasBorder and ((Theme = 'Snow') or (Theme = 'Christmas')) then - for i:= vobCount * max(LAND_WIDTH,4096) div 2048 downto 1 do - AddGear(GetRandom(snowRight-snowLeft)+snowLeft, LAND_HEIGHT-1300+GetRandom(750), gtFlake, 0, _0, _0, 0); +if (not hasBorder) and ((Theme = 'Snow') or (Theme = 'Christmas')) then + for i:= vobCount * Longword(max(LAND_WIDTH,4096)) div 2048 downto 1 do + AddGear(LongInt(GetRandom(snowRight - snowLeft)) + snowLeft, LongInt(LAND_HEIGHT + GetRandom(750)) - 1300, gtFlake, 0, _0, _0, 0); end; @@ -671,6 +671,7 @@ gtHedgehog, gtMine, gtSMine, + gtKnife, gtCase, gtTarget, gtExplosives, @@ -698,6 +699,7 @@ t^.dX:= t^.dX + Gear^.dX * dmg * _0_01 + SignAs(cHHKick, Gear^.dX); t^.dY:= t^.dY + Gear^.dY * dmg * _0_01; t^.State:= t^.State or gstMoving; + if t^.Kind = gtKnife then t^.State:= t^.State and (not gstCollision); t^.Active:= true; FollowGear:= t end @@ -730,7 +732,7 @@ procedure AmmoShove(Ammo: PGear; Damage, Power: LongInt); var t: PGearArray; Gear: PGear; - i, tmpDmg: LongInt; + i, j, tmpDmg: LongInt; VGear: PVisualGear; begin t:= CheckGearsCollision(Ammo); @@ -769,6 +771,7 @@ gtHedgehog, gtMine, gtSMine, + gtKnife, gtTarget, gtCase, gtExplosives, @@ -780,7 +783,28 @@ exit; end; if (not Gear^.Invulnerable) then + begin + if (Ammo^.Kind = gtKnife) and (tmpDmg > 0) then + for j:= 1 to max(1,min(3,tmpDmg div 5)) do + begin + VGear:= AddVisualGear(hwRound(Ammo^.X-((Ammo^.X-Gear^.X)/_2)), hwRound(Ammo^.Y-((Ammo^.Y-Gear^.Y)/_2)), vgtStraightShot); + if VGear <> nil then + with VGear^ do + begin + Tint:= $FFCC00FF; + Angle:= random(360); + dx:= 0.0005 * (random(100)); + dy:= 0.0005 * (random(100)); + if random(2) = 0 then + dx := -dx; + if random(2) = 0 then + dy := -dy; + FrameTicks:= 600+random(200); + State:= ord(sprStar) + end + end; ApplyDamage(Gear, Ammo^.Hedgehog, tmpDmg, dsShove) + end else Gear^.State:= Gear^.State or gstWinner; if (Gear^.Kind = gtExplosives) and (Ammo^.Kind = gtBlowtorch) then @@ -790,35 +814,39 @@ ApplyDamage(Gear, Ammo^.Hedgehog, tmpDmg * 100, dsUnknown); // crank up damage for explosives + blowtorch end; - DeleteCI(Gear); if (Gear^.Kind = gtHedgehog) and Gear^.Hedgehog^.King then begin Gear^.dX:= Ammo^.dX * Power * _0_005; Gear^.dY:= Ammo^.dY * Power * _0_005 end - else + else if ((Ammo^.Kind <> gtFlame) or (Gear^.Kind = gtHedgehog)) and (Power <> 0) then begin Gear^.dX:= Ammo^.dX * Power * _0_01; Gear^.dY:= Ammo^.dY * Power * _0_01 end; - Gear^.Active:= true; - Gear^.State:= Gear^.State or gstMoving; - - // move the gear upwards a bit to throw it over tiny obstacles at start - if TestCollisionXwithGear(Gear, hwSign(Gear^.dX)) then + if (not isZero(Gear^.dX)) or (not isZero(Gear^.dY)) then begin - if not (TestCollisionXwithXYShift(Gear, _0, -3, hwSign(Gear^.dX)) - or (TestCollisionYwithGear(Gear, -1) <> 0)) then - Gear^.Y:= Gear^.Y - _1; - if not (TestCollisionXwithXYShift(Gear, _0, -2, hwSign(Gear^.dX)) - or (TestCollisionYwithGear(Gear, -1) <> 0)) then - Gear^.Y:= Gear^.Y - _1; - if not (TestCollisionXwithXYShift(Gear, _0, -1, hwSign(Gear^.dX)) - or (TestCollisionYwithGear(Gear, -1) <> 0)) then - Gear^.Y:= Gear^.Y - _1; + Gear^.Active:= true; + DeleteCI(Gear); + Gear^.State:= Gear^.State or gstMoving; + if Gear^.Kind = gtKnife then Gear^.State:= Gear^.State and (not gstCollision); + // move the gear upwards a bit to throw it over tiny obstacles at start + if TestCollisionXwithGear(Gear, hwSign(Gear^.dX)) then + begin + if not (TestCollisionXwithXYShift(Gear, _0, -3, hwSign(Gear^.dX)) + or (TestCollisionYwithGear(Gear, -1) <> 0)) then + Gear^.Y:= Gear^.Y - _1; + if not (TestCollisionXwithXYShift(Gear, _0, -2, hwSign(Gear^.dX)) + or (TestCollisionYwithGear(Gear, -1) <> 0)) then + Gear^.Y:= Gear^.Y - _1; + if not (TestCollisionXwithXYShift(Gear, _0, -1, hwSign(Gear^.dX)) + or (TestCollisionYwithGear(Gear, -1) <> 0)) then + Gear^.Y:= Gear^.Y - _1; + end end; + if (Ammo^.Kind <> gtFlame) or ((Ammo^.State and gsttmpFlag) = 0) then FollowGear:= Gear end; @@ -1195,7 +1223,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 @@ -1341,7 +1369,8 @@ @doStepTardis, @doStepIceGun, @doStepAddAmmo, - @doStepGenericFaller); + @doStepGenericFaller, + @doStepKnife); begin doStepHandlers:= handlers; diff -r 6237d2f002ba -r 2bc61f8841a1 hedgewars/uGearsHandlers.pas --- a/hedgewars/uGearsHandlers.pas Sun Sep 16 23:52:36 2012 +0200 +++ b/hedgewars/uGearsHandlers.pas Sun Oct 28 15:12:37 2012 +0100 @@ -35,12 +35,12 @@ procedure PrevAngle(Gear: PGear; dA: LongInt); inline; begin - Gear^.Angle := (Gear^.Angle - dA) and 3 + Gear^.Angle := (LongInt(Gear^.Angle) - dA) and 3 end; procedure NextAngle(Gear: PGear; dA: LongInt); inline; begin - Gear^.Angle := (Gear^.Angle + dA) and 3 + Gear^.Angle := (LongInt(Gear^.Angle) + dA) and 3 end; procedure cakeStep(Gear: PGear); @@ -51,8 +51,8 @@ dA := hwSign(Gear^.dX); xx := dirs[Gear^.Angle].x; yy := dirs[Gear^.Angle].y; - xxn := dirs[(Gear^.Angle + dA) and 3].x; - yyn := dirs[(Gear^.Angle + dA) and 3].y; + xxn := dirs[(LongInt(Gear^.Angle) + dA) and 3].x; + yyn := dirs[(LongInt(Gear^.Angle) + dA) and 3].y; if (xx = 0) then if TestCollisionYwithGear(Gear, yy) <> 0 then diff -r 6237d2f002ba -r 2bc61f8841a1 hedgewars/uGearsHedgehog.pas --- a/hedgewars/uGearsHedgehog.pas Sun Sep 16 23:52:36 2012 +0200 +++ b/hedgewars/uGearsHedgehog.pas Sun Oct 28 15:12:37 2012 +0100 @@ -42,6 +42,7 @@ function ChangeAmmo(HHGear: PGear): boolean; var slot, i: Longword; ammoidx: LongInt; + prevAmmo: TAmmoType; begin ChangeAmmo:= false; slot:= HHGear^.MsgParam; @@ -49,6 +50,7 @@ with HHGear^.Hedgehog^ do begin HHGear^.Message:= HHGear^.Message and (not gmSlot); + prevAmmo:= CurAmmoType; ammoidx:= 0; if ((HHGear^.State and (gstAttacking or gstAttacked)) <> 0) or ((MultiShootAttacks > 0) and ((Ammoz[CurAmmoType].Ammo.Propz and ammoprop_NoRoundEnd) = 0)) @@ -95,6 +97,13 @@ end; if ammoidx >= 0 then CurAmmoType:= Ammo^[slot, ammoidx].AmmoType; + if (prevAmmo <> CurAmmoType) then + begin + if CurAmmoType = amKnife then + LoadHedgehogHat(HHGear^.Hedgehog^, 'Reserved/chef') + else if prevAmmo = amKnife then + LoadHedgehogHat(HHGear^.Hedgehog^, Hat); + end end end; @@ -262,6 +271,11 @@ amRope: newGear:= AddGear(hwRound(lx), hwRound(ly), gtRope, 0, xx, yy, 0); amMine: newGear:= AddGear(hwRound(lx) + hwSign(dX) * 7, hwRound(ly), gtMine, gstWait, SignAs(_0_02, dX), _0, 3000); amSMine: newGear:= AddGear(hwRound(lx), hwRound(ly), gtSMine, 0, xx*Power/cPowerDivisor, yy*Power/cPowerDivisor, 0); + amKnife: begin + newGear:= AddGear(hwRound(lx), hwRound(ly), gtKnife, 0, xx*Power/cPowerDivisor, yy*Power/cPowerDivisor, 0); + newGear^.State:= newGear^.State or gstMoving; + newGear^.Radius:= 6 // temporarily shrink so it doesn't instantly embed in the ground + end; amDEagle: newGear:= AddGear(hwRound(lx + xx * cHHRadius), hwRound(ly + yy * cHHRadius), gtDEagleShot, 0, xx * _0_5, yy * _0_5, 0); amSineGun: newGear:= AddGear(hwRound(lx + xx * cHHRadius), hwRound(ly + yy * cHHRadius), gtSineGunShot, 0, xx * _0_5, yy * _0_5, 0); amPortalGun: begin @@ -309,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); @@ -397,7 +411,7 @@ newGear^.Target.X:= TargetPoint.X; newGear^.Target.Y:= TargetPoint.Y end; - if newGear <> nil then newGear^.CollisionMask:= $FF7F; + if (newGear <> nil) and (newGear^.CollisionMask and $80 <> 0) then newGear^.CollisionMask:= newGear^.CollisionMask and (not $80); // Clear FollowGear if using on a rope/parachute/saucer etc so focus stays with the hog's movement if altUse then @@ -741,7 +755,7 @@ else exit; StepSoundTimer:= cHHStepTicks; - + GHStepTicks:= cHHStepTicks; if PrevdX <> hwSign(Gear^.dX) then begin @@ -752,69 +766,10 @@ Gear^.Hedgehog^.visStepPos:= (Gear^.Hedgehog^.visStepPos + 1) and 7; - if TestCollisionXwithGear(Gear, hwSign(Gear^.dX)) then if (TestCollisionYwithGear(Gear, -1) = 0) then - begin - Gear^.Y:= Gear^.Y - _1; - if TestCollisionXwithGear(Gear, hwSign(Gear^.dX)) then if (TestCollisionYwithGear(Gear, -1) = 0) then - begin - Gear^.Y:= Gear^.Y - _1; - if TestCollisionXwithGear(Gear, hwSign(Gear^.dX)) then if (TestCollisionYwithGear(Gear, -1) = 0) then - begin - Gear^.Y:= Gear^.Y - _1; - if TestCollisionXwithGear(Gear, hwSign(Gear^.dX)) then if (TestCollisionYwithGear(Gear, -1) = 0) then - begin - Gear^.Y:= Gear^.Y - _1; - if TestCollisionXwithGear(Gear, hwSign(Gear^.dX)) then if (TestCollisionYwithGear(Gear, -1) = 0) then - begin - Gear^.Y:= Gear^.Y - _1; - if TestCollisionXwithGear(Gear, hwSign(Gear^.dX)) then if (TestCollisionYwithGear(Gear, -1) = 0) then - begin - Gear^.Y:= Gear^.Y - _1; - if TestCollisionXwithGear(Gear, hwSign(Gear^.dX)) then - Gear^.Y:= Gear^.Y + _6 - end else Gear^.Y:= Gear^.Y + _5 else - end else Gear^.Y:= Gear^.Y + _4 else - end else Gear^.Y:= Gear^.Y + _3 else - end else Gear^.Y:= Gear^.Y + _2 else - end else Gear^.Y:= Gear^.Y + _1 - end; - - if (not cArtillery) and ((Gear^.Message and gmPrecise) = 0) and (not TestCollisionXwithGear(Gear, hwSign(Gear^.dX))) then - Gear^.X:= Gear^.X + SignAs(_1, Gear^.dX); - - SetAllHHToActive; + if (not cArtillery) and ((Gear^.Message and gmPrecise) = 0) then + MakeHedgehogsStep(Gear); - if TestCollisionYwithGear(Gear, 1) = 0 then - begin - Gear^.Y:= Gear^.Y + _1; - if TestCollisionYwithGear(Gear, 1) = 0 then - begin - Gear^.Y:= Gear^.Y + _1; - if TestCollisionYwithGear(Gear, 1) = 0 then - begin - Gear^.Y:= Gear^.Y + _1; - if TestCollisionYwithGear(Gear, 1) = 0 then - begin - Gear^.Y:= Gear^.Y + _1; - if TestCollisionYwithGear(Gear, 1) = 0 then - begin - Gear^.Y:= Gear^.Y + _1; - if TestCollisionYwithGear(Gear, 1) = 0 then - begin - Gear^.Y:= Gear^.Y + _1; - if TestCollisionYwithGear(Gear, 1) = 0 then - begin - Gear^.Y:= Gear^.Y - _6; - Gear^.dY:= _0; - Gear^.State:= Gear^.State or gstMoving; - exit - end; - end - end - end - end - end - end; + SetAllHHToActive; AddGearCI(Gear) end end; @@ -1013,12 +968,12 @@ if (CurrentHedgehog^.Gear = Gear) then isCursorVisible:= false end; -// IMO this should trigger homerun based on leftX/rightX + someval instead - that is 'knocking it out of the park' if (not isZero(Gear^.dY)) and (Gear^.FlightTime > 0) and ((GameFlags and gfLowGravity) = 0) then begin inc(Gear^.FlightTime); - if Gear^.FlightTime = 3000 then + if (Gear^.FlightTime > 1500) and ((hwRound(Gear^.X) < leftX-250) or (hwRound(Gear^.X) > rightX+250)) then begin + Gear^.FlightTime:= 0; AddCaption(GetEventString(eidHomerun), cWhiteColor, capgrpMessage); PlaySound(sndHomerun) end; diff -r 6237d2f002ba -r 2bc61f8841a1 hedgewars/uGearsList.pas --- a/hedgewars/uGearsList.pas Sun Sep 16 23:52:36 2012 +0200 +++ b/hedgewars/uGearsList.pas Sun Oct 28 15:12:37 2012 +0100 @@ -106,7 +106,12 @@ gear^.AmmoType:= GearKindAmmoTypeMap[Kind]; gear^.CollisionMask:= $FFFF; -if CurrentHedgehog <> nil then gear^.Hedgehog:= CurrentHedgehog; +if CurrentHedgehog <> nil then + begin + gear^.Hedgehog:= CurrentHedgehog; + if (CurrentHedgehog^.Gear <> nil) and (hwRound(CurrentHedgehog^.Gear^.X) = X) and (hwRound(CurrentHedgehog^.Gear^.Y) = Y) then + gear^.CollisionMask:= $FF7F + end; if (Ammoz[Gear^.AmmoType].Ammo.Propz and ammoprop_NeedTarget <> 0) then gear^.Z:= cHHZ+1 @@ -177,9 +182,9 @@ if State and gstTmpFlag = 0 then begin dx.isNegative:= GetRandom(2) = 0; - dx.QWordValue:= $40DA*GetRandom(10000)*8; + dx.QWordValue:= $40DA * GetRandom(10000) * 8; dy.isNegative:= false; - dy.QWordValue:= $3AD3*GetRandom(7000)*8; + dy.QWordValue:= $3AD3 * GetRandom(7000) * 8; if GetRandom(2) = 0 then dx := -dx end; @@ -245,6 +250,10 @@ gear^.Density:= _1_6; gear^.Timer:= 500; end; + gtKnife: begin + gear^.Density:= _4; + gear^.Radius:= 16 + end; gtCase: begin gear^.ImpactSound:= sndGraveImpact; gear^.nImpactSounds:= 1; diff -r 6237d2f002ba -r 2bc61f8841a1 hedgewars/uGearsRender.pas --- a/hedgewars/uGearsRender.pas Sun Sep 16 23:52:36 2012 +0200 +++ b/hedgewars/uGearsRender.pas Sun Oct 28 15:12:37 2012 +0100 @@ -321,8 +321,8 @@ // 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 @@ -628,6 +628,7 @@ amGasBomb: DrawSpriteRotated(sprHandCheese, hx, hy, sign, aangle); amMine: DrawSpriteRotated(sprHandMine, hx, hy, sign, aangle); amSMine: DrawSpriteRotated(sprHandSMine, hx, hy, sign, aangle); + amKnife: DrawSpriteRotatedF(sprHandKnife, hx, hy, 0, sign, aangle); amSeduction: begin DrawSpriteRotated(sprHandSeduction, hx, hy, sign, aangle); DrawCircle(ox, oy, 248, 4, $FF, $00, $00, $AA); @@ -988,6 +989,7 @@ else if Gear^.Health <> 0 then DrawSpriteRotated(sprSMineOn, x, y, 0, Gear^.DirAngle) else DrawSpriteRotated(sprMineDead, x, y, 0, Gear^.DirAngle); + gtKnife: DrawSpriteRotatedF(sprKnife, x, y, 0, hwSign(Gear^.dX), Gear^.DirAngle); gtCase: begin if Gear^.Timer > 1000 then @@ -1018,7 +1020,7 @@ if Gear^.Timer < 1833 then begin DrawTextureRotatedF(SpritesData[sprPortal].texture, min(abs(1.25 - (Gear^.Timer mod 1333) / 400), 1.25), 0, 0, - x, Gear^.Angle+WorldDy-16, 4+Gear^.Tag, 1, 32, 32, 270); + x, LongInt(Gear^.Angle) + WorldDy - 16, 4 + Gear^.Tag, 1, 32, 32, 270); end end; gtExplosives: begin @@ -1084,9 +1086,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 @@ -1095,9 +1097,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; @@ -1192,17 +1194,17 @@ HHGear := Gear^.Hedgehog^.Gear; if HHGear <> nil then begin - i:= hwRound(hwSqr(Gear^.X-HHGear^.X)+hwSqr(Gear^.Y-HHGear^.Y)); - if RealTicks mod max(1,50-(round(sqrt(i)) div 4)) = 0 then // experiment in "intensifying" might not get used + i:= hwRound(hwSqr(Gear^.X - HHGear^.X) + hwSqr(Gear^.Y - HHGear^.Y)); + if RealTicks mod max(1,50 - (round(sqrt(i)) div 4)) = 0 then // experiment in "intensifying" might not get used begin vg:= AddVisualGear(hwRound(Gear^.X), hwRound(Gear^.Y), vgtDust, 1); if vg <> nil then begin - i:= random(100)+155; - vg^.Tint:= i shl 24 or i shl 16 or $FF shl 8 or ((random(200)+55)); + i:= random(100) + 155; + vg^.Tint:= i shl 24 or i shl 16 or $FF shl 8 or Longword(random(200) + 55); vg^.Angle:= random(360); - vg^.dx:= 0.001 * (random(80)); - vg^.dy:= 0.001 * (random(80)) + vg^.dx:= 0.001 * random(80); + vg^.dy:= 0.001 * random(80) end end; if RealTicks mod 2 = 0 then diff -r 6237d2f002ba -r 2bc61f8841a1 hedgewars/uGearsUtils.pas --- a/hedgewars/uGearsUtils.pas Sun Sep 16 23:52:36 2012 +0200 +++ b/hedgewars/uGearsUtils.pas Sun Oct 28 15:12:37 2012 +0100 @@ -41,6 +41,8 @@ procedure CheckCollision(Gear: PGear); inline; procedure CheckCollisionWithLand(Gear: PGear); inline; +function MakeHedgehogsStep(Gear: PGear) : boolean; + var doStepHandlers: array[TGearType] of TGearStepProcedure; @@ -103,12 +105,13 @@ gtCase, gtTarget, gtFlame, + gtKnife, gtExplosives, gtStructure: begin // Run the calcs only once we know we have a type that will need damage tdX:= Gear^.X-fX; tdY:= Gear^.Y-fY; - if (tdX.Round + tdY.Round + 2) < dmgBase then + if LongInt(tdX.Round + tdY.Round + 2) < dmgBase then dmg:= dmgBase - hwRound(Distance(tdX, tdY)); if dmg > 1 then begin @@ -128,6 +131,7 @@ Gear^.dY:= Gear^.dY + SignAs(_0_005 * dmg + cHHKick, tdY)/(Gear^.Density/_3); Gear^.State:= (Gear^.State or gstMoving) and (not gstLoser); + if Gear^.Kind = gtKnife then Gear^.State:= Gear^.State and (not gstCollision); if not Gear^.Invulnerable then Gear^.State:= (Gear^.State or gstMoving) and (not gstWinner); Gear^.Active:= true; @@ -142,7 +146,7 @@ // Run the calcs only once we know we have a type that will need damage tdX:= Gear^.X-fX; tdY:= Gear^.Y-fY; - if (tdX.Round + tdY.Round + 2) < dmgBase then + if LongInt(tdX.Round + tdY.Round + 2) < dmgBase then dmg:= dmgBase - hwRound(Distance(tdX, tdY)); if dmg > 1 then begin @@ -319,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 @@ -682,4 +687,73 @@ Gear^.State := Gear^.State and (not gstCollision) end; +function MakeHedgehogsStep(Gear: PGear) : boolean; +begin + if TestCollisionXwithGear(Gear, hwSign(Gear^.dX)) then if (TestCollisionYwithGear(Gear, -1) = 0) then + begin + Gear^.Y:= Gear^.Y - _1; + if TestCollisionXwithGear(Gear, hwSign(Gear^.dX)) then if (TestCollisionYwithGear(Gear, -1) = 0) then + begin + Gear^.Y:= Gear^.Y - _1; + if TestCollisionXwithGear(Gear, hwSign(Gear^.dX)) then if (TestCollisionYwithGear(Gear, -1) = 0) then + begin + Gear^.Y:= Gear^.Y - _1; + if TestCollisionXwithGear(Gear, hwSign(Gear^.dX)) then if (TestCollisionYwithGear(Gear, -1) = 0) then + begin + Gear^.Y:= Gear^.Y - _1; + if TestCollisionXwithGear(Gear, hwSign(Gear^.dX)) then if (TestCollisionYwithGear(Gear, -1) = 0) then + begin + Gear^.Y:= Gear^.Y - _1; + if TestCollisionXwithGear(Gear, hwSign(Gear^.dX)) then if (TestCollisionYwithGear(Gear, -1) = 0) then + begin + Gear^.Y:= Gear^.Y - _1; + if TestCollisionXwithGear(Gear, hwSign(Gear^.dX)) then + Gear^.Y:= Gear^.Y + _6 + end else Gear^.Y:= Gear^.Y + _5 else + end else Gear^.Y:= Gear^.Y + _4 else + end else Gear^.Y:= Gear^.Y + _3 else + end else Gear^.Y:= Gear^.Y + _2 else + end else Gear^.Y:= Gear^.Y + _1 + end; + + if not TestCollisionXwithGear(Gear, hwSign(Gear^.dX)) then + begin + Gear^.X:= Gear^.X + SignAs(_1, Gear^.dX); + MakeHedgehogsStep:= true + end else + MakeHedgehogsStep:= false; + + if TestCollisionYwithGear(Gear, 1) = 0 then + begin + Gear^.Y:= Gear^.Y + _1; + if TestCollisionYwithGear(Gear, 1) = 0 then + begin + Gear^.Y:= Gear^.Y + _1; + if TestCollisionYwithGear(Gear, 1) = 0 then + begin + Gear^.Y:= Gear^.Y + _1; + if TestCollisionYwithGear(Gear, 1) = 0 then + begin + Gear^.Y:= Gear^.Y + _1; + if TestCollisionYwithGear(Gear, 1) = 0 then + begin + Gear^.Y:= Gear^.Y + _1; + if TestCollisionYwithGear(Gear, 1) = 0 then + begin + Gear^.Y:= Gear^.Y + _1; + if TestCollisionYwithGear(Gear, 1) = 0 then + begin + Gear^.Y:= Gear^.Y - _6; + Gear^.dY:= _0; + Gear^.State:= Gear^.State or gstMoving; + exit + end; + end + end + end + end + end + end; +end; + end. diff -r 6237d2f002ba -r 2bc61f8841a1 hedgewars/uInputHandler.pas --- a/hedgewars/uInputHandler.pas Sun Sep 16 23:52:36 2012 +0200 +++ b/hedgewars/uInputHandler.pas Sun Oct 28 15:12:37 2012 +0100 @@ -426,8 +426,6 @@ procedure initModule; begin - wheelUp:= false; - wheelDown:= false; end; procedure freeModule; diff -r 6237d2f002ba -r 2bc61f8841a1 hedgewars/uLandTemplates.pas --- a/hedgewars/uLandTemplates.pas Sun Sep 16 23:52:36 2012 +0200 +++ b/hedgewars/uLandTemplates.pas Sun Oct 28 15:12:37 2012 +0100 @@ -1756,8 +1756,60 @@ (X: 4095; Y: 0) ); +// 3 large caverns +const Template44Points: array[0..14] of TSDL_Rect = + ( + (x: 0; y: 100; 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: 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: 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) + ); + Template44FPoints: array[0..5] of TSDL_Rect = + ( + (X: 1; Y: 90; w: 0; h: 0), + (X: 1; Y: 500; w: 0; h: 0), + (X:4095; Y: 500; w: 0; h: 0), + (X: 1; Y:1200; w: 0; h: 0), + (X:4095; Y:1200; w: 0; h: 0), + (X: 1; Y:2010; w: 0; h: 0) + ); + +// large caverns with an island +const Template45Points: array[0..11] of TSDL_Rect = + ( + (x: 500; y: 100; w: 1; h: 300), + (x: 3700; y: 100; w: 1; h: 300), + (x: 3700; y: 900; w: 200; h: 300), + (x: 3700; y:1700; w: 1; h: 250), + (x: 500; y:1700; w: 1; h: 250), + (x: 300; y: 900; w: 200; h: 250), + (x: NTPX; y: 0; w: 1; h: 1), + (x: 1000; y: 800; w: 1; h: 1), + (x: 2700; y: 800; w: 600; h: 100), + (x: 2700; y:1200; w: 600; h: 200), + (x: 1000; y:1200; w: 200; h: 200), + (x: NTPX; y: 0; w: 1; h: 1) + ); + Template45FPoints: array[0..2] of TSDL_Rect = + ( + (X: 1; Y: 1; w: 0; h: 0), + (X: 1; Y:2047; w: 0; h: 0), + (X:1005; Y: 805; w: 0; h: 0) + ); + //////////////////////////////////////////////////////////////////////// -var EdgeTemplates: array[0..43] of TEdgeTemplate = +var EdgeTemplates: array[0..45] of TEdgeTemplate = ( (BasePoints: @Template0Points; BasePointsCount: Succ(High(Template0Points)); @@ -2242,6 +2294,28 @@ canMirror: true; canFlip: true; isNegative: false; canInvert: false; hasGirders: true; MaxHedgeHogs: 48; + ), + (BasePoints: @Template44Points; + BasePointsCount: Succ(High(Template44Points)); + FillPoints: @Template44FPoints; + FillPointsCount: Succ(High(Template44FPoints)); + BezierizeCount: 5; + RandPassesCount: 3; + TemplateHeight: 2048; TemplateWidth: 4096; + canMirror: false; canFlip: false; isNegative: true; canInvert: false; + hasGirders: false; + MaxHedgeHogs: 48; + ), + (BasePoints: @Template45Points; + BasePointsCount: Succ(High(Template45Points)); + FillPoints: @Template45FPoints; + FillPointsCount: Succ(High(Template45FPoints)); + BezierizeCount: 5; + RandPassesCount: 7; + TemplateHeight: 2048; TemplateWidth: 4096; + canMirror: false; canFlip: false; isNegative: true; canInvert: false; + hasGirders: false; + MaxHedgeHogs: 48; ) ); const SmallTemplates: array[0..2] of Longword = ( 39, 40, 42 ); @@ -2252,9 +2326,9 @@ 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 37, 38, 43 ); -const CavernTemplates: array[0..4] of Longword = (36, 2, 3, 21, 29); +const CavernTemplates: array[0..5] of Longword = (36, 2, 3, 21, 29, 45); //const WackyTemplates: array[0..4] of Longword = (37, 38, 39, 40, 41); -const WackyTemplates: array[0..3] of Longword = (37, 38, 41, 43); +const WackyTemplates: array[0..4] of Longword = (37, 38, 41, 43, 44); implementation diff -r 6237d2f002ba -r 2bc61f8841a1 hedgewars/uLandTexture.pas --- a/hedgewars/uLandTexture.pas Sun Sep 16 23:52:36 2012 +0200 +++ b/hedgewars/uLandTexture.pas Sun Oct 28 15:12:37 2012 +0100 @@ -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 6237d2f002ba -r 2bc61f8841a1 hedgewars/uMisc.pas --- a/hedgewars/uMisc.pas Sun Sep 16 23:52:36 2012 +0200 +++ b/hedgewars/uMisc.pas Sun Oct 28 15:12:37 2012 +0100 @@ -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 6237d2f002ba -r 2bc61f8841a1 hedgewars/uScript.pas --- a/hedgewars/uScript.pas Sun Sep 16 23:52:36 2012 +0200 +++ b/hedgewars/uScript.pas Sun Oct 28 15:12:37 2012 +0100 @@ -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 @@ -647,6 +647,39 @@ lc_setgearpos:= 0 end; +function lc_getgearcollisionmask(L : Plua_State) : LongInt; Cdecl; +var gear : PGear; +begin + if lua_gettop(L) <> 1 then + begin + LuaError('Lua: Wrong number of parameters passed to GetGearCollisionMask!'); + lua_pushnil(L); // return value on stack (nil) + end + else + begin + gear:= GearByUID(lua_tointeger(L, 1)); + if gear <> nil then + lua_pushinteger(L, gear^.CollisionMask) + else + lua_pushnil(L); + end; + lc_getgearcollisionmask:= 1 +end; + +function lc_setgearcollisionmask(L : Plua_State) : LongInt; Cdecl; +var gear : PGear; +begin + if lua_gettop(L) <> 2 then + LuaError('Lua: Wrong number of parameters passed to SetGearCollisionMask!') + else + begin + gear:= GearByUID(lua_tointeger(L, 1)); + if gear <> nil then + gear^.CollisionMask:= lua_tointeger(L, 2); + end; + lc_setgearcollisionmask:= 0 +end; + function lc_gethoglevel(L : Plua_State): LongInt; Cdecl; var gear : PGear; begin @@ -1273,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)); @@ -1296,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; @@ -1636,7 +1669,7 @@ if (gear <> nil) and (gear^.Kind = gtHedgehog) and (gear^.Hedgehog <> nil) then hat:= lua_tostring(L, 2); gear^.Hedgehog^.Hat:= hat; - LoadHedgehogHat(gear, hat); + LoadHedgehogHat(gear^.Hedgehog^, hat); end; lc_sethoghat:= 0; end; @@ -1708,7 +1741,7 @@ i := 0; while (i < hiddenHedgehogsNumber) do begin - if hiddenHedgehogs[i]^.gearHidden^.uid = lua_tointeger(L, 1) then + if hiddenHedgehogs[i]^.gearHidden^.uid = LongWord(lua_tointeger(L, 1)) then begin hog := hiddenHedgehogs[i]; RestoreHog(hog); @@ -1838,7 +1871,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'); @@ -1859,9 +1892,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. @@ -1983,6 +2017,7 @@ GetGlobals; end; +(* function ParseCommandOverride(key, value : shortstring) : shortstring; begin ParseCommandOverride:= value; @@ -2002,6 +2037,7 @@ lua_pop(luaState, 1) end; end; +*) function ScriptCall(fname : shortstring; par1: LongInt) : LongInt; begin @@ -2327,6 +2363,8 @@ lua_register(luaState, _P'SetGearMessage', @lc_setgearmessage); lua_register(luaState, _P'GetGearPos', @lc_getgearpos); lua_register(luaState, _P'SetGearPos', @lc_setgearpos); +lua_register(luaState, _P'GetGearCollisionMask', @lc_getgearcollisionmask); +lua_register(luaState, _P'SetGearCollisionMask', @lc_setgearcollisionmask); lua_register(luaState, _P'GetRandom', @lc_getrandom); lua_register(luaState, _P'SetWind', @lc_setwind); lua_register(luaState, _P'GetDataPath', @lc_getdatapath); @@ -2414,7 +2452,7 @@ fname:= fname; // avoid hint ScriptExists:= false end; - +(* function ParseCommandOverride(key, value : shortstring) : shortstring; begin // avoid hints @@ -2422,6 +2460,7 @@ value:= value; ParseCommandOverride:= '' end; +*) procedure ScriptOnScreenResize; begin diff -r 6237d2f002ba -r 2bc61f8841a1 hedgewars/uSound.pas --- a/hedgewars/uSound.pas Sun Sep 16 23:52:36 2012 +0200 +++ b/hedgewars/uSound.pas Sun Oct 28 15:12:37 2012 +0100 @@ -47,7 +47,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 +95,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 +114,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 +445,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 +494,7 @@ procedure MuteAudio; begin if (not isSoundEnabled) then - exit; + exit; if (isAudioMuted) then begin @@ -514,12 +514,10 @@ procedure SetMusic(enabled: boolean); begin isMusicEnabled:= enabled; - MusicFN:= ''; end; procedure SetMusicName(musicname: shortstring); begin - isMusicEnabled:= not (musicname = ''); MusicFN:= musicname; end; @@ -587,9 +585,13 @@ RegisterVariable('mute' , @chMute , true ); MusicFN:=''; + Mus:= nil; + isMusicEnabled:= true; + isSoundEnabled:= true; isAudioMuted:= false; isSEBackup:= isSoundEnabled; Volume:= 0; + cInitVolume:= 100; defVoicepack:= AskForVoicepack('Default'); for i:= Low(TSound) to High(TSound) do @@ -602,7 +604,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 +614,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 6237d2f002ba -r 2bc61f8841a1 hedgewars/uStats.pas --- a/hedgewars/uStats.pas Sun Sep 16 23:52:36 2012 +0200 +++ b/hedgewars/uStats.pas Sun Oct 28 15:12:37 2012 +0100 @@ -315,7 +315,6 @@ procedure freeModule; begin - end; end. diff -r 6237d2f002ba -r 2bc61f8841a1 hedgewars/uStore.pas --- a/hedgewars/uStore.pas Sun Sep 16 23:52:36 2012 +0200 +++ b/hedgewars/uStore.pas Sun Oct 28 15:12:37 2012 +0100 @@ -40,7 +40,7 @@ // like LoadDataImage but uses altFile as fallback-filename if file cannot be loaded function LoadDataImageAltFile(const path: TPathType; const filename, altFile: shortstring; imageFlags: LongInt): PSDL_Surface; -procedure LoadHedgehogHat(HHGear: PGear; newHat: shortstring); +procedure LoadHedgehogHat(var HH: THedgehog; newHat: shortstring); procedure SetupOpenGL; procedure SetScale(f: GLfloat); function RenderHelpWindow(caption, subcaption, description, extra: ansistring; extracolor: LongInt; iconsurf: PSDL_Surface; iconrect: PSDL_Rect): PTexture; @@ -101,7 +101,6 @@ var t: LongInt; tmpsurf, texsurf: PSDL_Surface; Color, i: Longword; - s: shortstring; begin tmpsurf:= LoadDataImage(ptGraphics, cCHFileName, ifAlpha or ifCritical); @@ -245,9 +244,9 @@ if Hat <> 'NoHat' then begin if (Length(Hat) > 39) and (Copy(Hat,1,8) = 'Reserved') and (Copy(Hat,9,32) = PlayerHash) then - LoadHedgehogHat(Gear, 'Reserved/' + Copy(Hat,9,Length(Hat)-8)) + LoadHedgehogHat(Hedgehogs[i], 'Reserved/' + Copy(Hat,9,Length(Hat)-8)) else - LoadHedgehogHat(Gear, Hat); + LoadHedgehogHat(Hedgehogs[i], Hat); end end; end; @@ -641,19 +640,20 @@ LoadDataImageAltFile:= tmpsurf; end; -procedure LoadHedgehogHat(HHGear: PGear; newHat: shortstring); +procedure LoadHedgehogHat(var HH: THedgehog; newHat: shortstring); var texsurf: PSDL_Surface; begin texsurf:= LoadDataImage(ptHats, newHat, ifNone); - +AddFileLog('Hat => '+newHat); // only do something if the hat could be loaded if texsurf <> nil then begin +AddFileLog('Got Hat'); // free the mem of any previously assigned texture - FreeTexture(HHGear^.Hedgehog^.HatTex); + FreeTexture(HH.HatTex); // assign new hat to hedgehog - HHGear^.Hedgehog^.HatTex:= Surface2Tex(texsurf, true); + HH.HatTex:= Surface2Tex(texsurf, true); // cleanup: free temporary surface mem SDL_FreeSurface(texsurf) diff -r 6237d2f002ba -r 2bc61f8841a1 hedgewars/uTeams.pas --- a/hedgewars/uTeams.pas Sun Sep 16 23:52:36 2012 +0200 +++ b/hedgewars/uTeams.pas Sun Oct 28 15:12:37 2012 +0100 @@ -20,8 +20,10 @@ unit uTeams; interface -uses uConsts, uInputHandler, uGears, uRandom, uFloat, uStats, uVisualGears, uCollisions, GLunit, uSound, - 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); @@ -628,12 +632,16 @@ var oldCI, newCI: boolean; oldHH: PHedgehog; begin + if (CurrentHedgehog <> nil) and (CurrentHedgehog^.CurAmmoType = amKnife) then + LoadHedgehogHat(CurrentHedgehog^, CurrentHedgehog^.Hat); oldCI:= (CurrentHedgehog <> nil) and (CurrentHedgehog^.Gear <> nil) and (CurrentHedgehog^.Gear^.CollisionIndex >= 0); newCI:= (newHog^.Gear <> nil) and (newHog^.Gear^.CollisionIndex >= 0); if oldCI then DeleteCI(CurrentHedgehog^.Gear); if newCI then DeleteCI(newHog^.Gear); oldHH:= CurrentHedgehog; CurrentHedgehog:= newHog; + if (CurrentHedgehog <> nil) and (CurrentHedgehog^.CurAmmoType = amKnife) then + LoadHedgehogHat(CurrentHedgehog^, 'Reserved/chef'); if oldCI then AddGearCI(oldHH^.Gear); if newCI then AddGearCI(newHog^.Gear) end; diff -r 6237d2f002ba -r 2bc61f8841a1 hedgewars/uTouch.pas --- a/hedgewars/uTouch.pas Sun Sep 16 23:52:36 2012 +0200 +++ b/hedgewars/uTouch.pas Sun Oct 28 15:12:37 2012 +0100 @@ -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 6237d2f002ba -r 2bc61f8841a1 hedgewars/uTypes.pas --- a/hedgewars/uTypes.pas Sun Sep 16 23:52:36 2012 +0200 +++ b/hedgewars/uTypes.pas Sun Oct 28 15:12:37 2012 +0100 @@ -86,7 +86,7 @@ sprHandResurrector, sprCross, sprAirDrill, sprNapalmBomb, sprBulletHit, sprSnowball, sprHandSnowball, sprSnow, sprSDFlake, sprSDWater, sprSDCloud, sprSDSplash, sprSDDroplet, sprTardis, - sprSlider, sprBotlevels + sprSlider, sprBotlevels, sprHandKnife, sprKnife, sprStar ); // Gears that interact with other Gears and/or Land @@ -102,7 +102,8 @@ gtSniperRifleShot, gtJetpack, gtMolotov, gtBirdy, // 44 gtEgg, gtPortal, gtPiano, gtGasBomb, gtSineGunShot, gtFlamethrower, // 50 gtSMine, gtPoisonCloud, gtHammer, gtHammerHit, gtResurrector, // 55 - gtNapalmBomb, gtSnowball, gtFlake, gtStructure, gtLandGun, gtTardis, gtIceGun, gtAddAmmo, gtGenericFaller); // 62 + gtNapalmBomb, gtSnowball, gtFlake, gtStructure, gtLandGun, gtTardis, // 61 + gtIceGun, gtAddAmmo, gtGenericFaller, gtKnife); // 65 // Gears that are _only_ of visual nature (e.g. background stuff, visual effects, speechbubbles, etc.) TVisualGearType = (vgtFlake, vgtCloud, vgtExplPart, vgtExplPart2, vgtFire, @@ -150,7 +151,7 @@ amRCPlane, amLowGravity, amExtraDamage, amInvulnerable, amExtraTime, // 35 amLaserSight, amVampiric, amSniperRifle, amJetpack, amMolotov, amBirdy, amPortalGun, // 42 amPiano, amGasBomb, amSineGun, amFlamethrower, amSMine, amHammer, // 48 - amResurrector, amDrillStrike, amSnowball, amTardis, amStructure, amLandGun, amIceGun); // 54 + amResurrector, amDrillStrike, amSnowball, amTardis, amStructure, amLandGun, amIceGun, amKnife); // 54 // Different kind of crates that e.g. hedgehogs can pick up TCrateType = (HealthCrate, AmmoCrate, UtilityCrate); @@ -409,7 +410,7 @@ sidMolotov, sidBirdy, sidPortalGun, sidPiano, sidGasBomb, sidSineGun, sidFlamethrower,sidSMine, sidHammer, sidResurrector, sidDrillStrike, sidSnowball, sidNothing, sidTardis, - sidStructure, sidLandGun, sidIceGun); + sidStructure, sidLandGun, sidIceGun, sidKnife); TMsgStrId = (sidStartFight, sidDraw, sidWinner, sidVolume, sidPaused, sidConfirm, sidSuddenDeath, sidRemaining, sidFuel, sidSync, diff -r 6237d2f002ba -r 2bc61f8841a1 hedgewars/uVariables.pas --- a/hedgewars/uVariables.pas Sun Sep 16 23:52:36 2012 +0200 +++ b/hedgewars/uVariables.pas Sun Oct 28 15:12:37 2012 +0100 @@ -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; @@ -661,7 +660,17 @@ (FileName: 'slider'; Path: ptGraphics; AltPath: ptNone; Texture: nil; Surface: nil; Width: 3; Height: 17; imageWidth: 3; imageHeight: 17; saveSurf: false; priority: tpLow; getDimensions: false; getImageDimensions: false), // sprSlider (FileName: 'botlevels'; Path: ptGraphics; AltPath: ptNone; Texture: nil; Surface: nil; - Width: 22; Height: 15; imageWidth: 22; imageHeight: 15; saveSurf: true; priority: tpLow; getDimensions: false; getImageDimensions: false) // sprBotlevels + Width: 22; Height: 15; imageWidth: 22; imageHeight: 15; saveSurf: true; priority: tpLow; getDimensions: false; getImageDimensions: false), // sprBotlevels + (* (FileName: 'amKnife'; Path: ptHedgehog; AltPath: ptNone; Texture: nil; Surface: nil; + Width: 64; Height: 64; imageWidth: 0; imageHeight: 0; saveSurf: false; priority: tpMedium; getDimensions: false; getImageDimensions: true),// sprHandKnife*) + (FileName: 'amCleaver'; Path: ptHedgehog; AltPath: ptNone; Texture: nil; Surface: nil; + Width: 64; Height: 64; imageWidth: 64; imageHeight: 64; saveSurf: false; priority: tpMedium; getDimensions: false; getImageDimensions: false),// sprHandKnife + (*(FileName: 'knife'; Path: ptGraphics; AltPath: ptNone; Texture: nil; Surface: nil; + Width: 29; Height: 14; imageWidth: 64; imageHeight: 64; saveSurf: true; priority: tpLow; getDimensions: false; getImageDimensions: false) // sprKnife*) + (FileName: 'cleaver'; Path: ptGraphics; AltPath: ptNone; Texture: nil; Surface: nil; + Width: 64; Height: 64; imageWidth: 64; imageHeight: 128; saveSurf: false; priority: tpLow; getDimensions: false; getImageDimensions: false), // sprKnife + (FileName: 'star'; Path: ptGraphics; AltPath: ptNone; Texture: nil; Surface: nil; + Width: 12; Height: 12; imageWidth: 12; imageHeight: 12; saveSurf: false; priority: tpLow; getDimensions: false; getImageDimensions: false) // sprStar ); const @@ -2095,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; @@ -2312,7 +2322,7 @@ AmmoType: amIceGun; AttackVoice: sndNone; Bounciness: 1000); - Slot: 6; + Slot: 9; TimeAfterTurn: 0; minAngle: 0; maxAngle: 0; @@ -2321,7 +2331,32 @@ PosCount: 1; PosSprite: sprWater; ejectX: 0; //20; - ejectY: -3) + ejectY: -3), +// Knife + (NameId: sidKnife; + NameTex: nil; + Probability: 100; + NumberInCase: 1; + Ammo: (Propz: ammoprop_Power or + ammoprop_AltUse or + ammoprop_NeedUpDown; + Count: 1; + NumPerTurn: 1; + Timer: 0; + Pos: 0; + AmmoType: amKnife; + AttackVoice: sndNone; + Bounciness: 1000); + Slot: 6; + TimeAfterTurn: 3000; + minAngle: 0; + maxAngle: 0; + isDamaging: true; + SkipTurns: 0; + PosCount: 1; + PosSprite: sprWater; + ejectX: 0; + ejectY: 0) ); const @@ -2391,6 +2426,7 @@ (* gtIceGun *) , amIceGun (* gtAddAmmo *) , amNothing (* gtGenericFaller *) , amNothing +(* gtKnife *) , amKnife ); var @@ -2474,8 +2510,6 @@ vobSDVelocity, vobSDFallSpeed: LongInt; hideAmmoMenu: boolean; - wheelUp: boolean; - wheelDown: boolean; ControllerNumControllers: Integer; ControllerEnabled: Integer; @@ -2506,6 +2540,32 @@ procedure initModule; begin + // initialisation flags - they are going to be overwritten by args or by msgs + cScreenWidth := 1024; + cScreenHeight := 768; + cBits := 32; + ipcPort := 0; + cFullScreen := false; + cLocaleFName := 'en.txt'; + cLocale := 'en'; + cTimerInterval := 8; + PathPrefix := './'; + UserPathPrefix := './'; + cShowFPS := false; + cFlattenFlakes := false; + cFlattenClouds := false; + cAltDamage := true; + cReducedQuality := rqNone; + UserNick := ''; + recordFileName := ''; + cScriptName := ''; + cReadyDelay := 5000; + cStereoMode := smNone; + GrayScale := false; + + cFlattenFlakes := false; + cFlattenClouds := false; + cOnlyStats := False; lastVisualGearByUID:= nil; lastGearByUID:= nil; @@ -2540,8 +2600,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; @@ -2591,7 +2653,6 @@ cExplosives := 2; GameState := Low(TGameState); -// GameType := gmtLocal; zoom := cDefaultZoomLevel; ZoomValue := cDefaultZoomLevel; WeaponTooltipTex:= nil; @@ -2638,11 +2699,18 @@ vobSDVelocity:= 15; vobSDFallSpeed:= 250; - ExplosionBorderColor:= $FF808080; - WaterOpacity:= $80; - SDWaterOpacity:= $80; + cMinScreenWidth := 640; + cMinScreenHeight := 480; + cScreenWidth := 1024; + cScreenHeight := 768; + cOrigScreenWidth := 1024; + cOrigScreenHeight := 768; + cNewScreenWidth := 1024; + cNewScreenHeight := 768; + cScreenResizeDelay := 0; LuaGoals:= ''; + cMapName:= ''; LuaTemplateNumber:= 0; hiddenHedgehogsNumber:=0; @@ -2650,27 +2718,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 6237d2f002ba -r 2bc61f8841a1 hedgewars/uVideoRec.pas --- a/hedgewars/uVideoRec.pas Sun Sep 16 23:52:36 2012 +0200 +++ b/hedgewars/uVideoRec.pas Sun Oct 28 15:12:37 2012 +0100 @@ -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 6237d2f002ba -r 2bc61f8841a1 hedgewars/uVisualGears.pas --- a/hedgewars/uVisualGears.pas Sun Sep 16 23:52:36 2012 +0200 +++ b/hedgewars/uVisualGears.pas Sun Oct 28 15:12:37 2012 +0100 @@ -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 6237d2f002ba -r 2bc61f8841a1 hedgewars/uWorld.pas --- a/hedgewars/uWorld.pas Sun Sep 16 23:52:36 2012 +0200 +++ b/hedgewars/uWorld.pas Sun Oct 28 15:12:37 2012 +0100 @@ -43,25 +43,27 @@ implementation uses - uStore, - uMisc, - uIO, - uLocale, - uSound, - uAmmos, - uVisualGears, - uChat, - uLandTexture, - GLunit, - uVariables, - uUtils, - uTextures, - uRender, - uCaptions, - uCursor, - uCommands, - uMobile, - uVideoRec + uStore + , uMisc + , uIO + , uLocale + , uSound + , uAmmos + , uVisualGears + , uChat + , uLandTexture + , GLunit + , uVariables + , uUtils + , uTextures + , uRender + , uCaptions + , uCursor + , uCommands + , uMobile +{$IFDEF USE_VIDEO_RECORDING} + , uVideoRec +{$ENDIF} ; var cWaveWidth, cWaveHeight: LongInt; @@ -627,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 @@ -645,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; @@ -661,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 @@ -679,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; @@ -1166,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); @@ -1391,6 +1363,29 @@ Tint($FF,$FF,$FF,$FF); end; +// 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; + + // Lag alert if isInLag then DrawSprite(sprLag, 32 - (cScreenWidth shr 1), 32, (RealTicks shr 7) mod 12); @@ -1638,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 @@ -1670,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 @@ -1791,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 @@ -1878,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 6237d2f002ba -r 2bc61f8841a1 misc/liblua/CMakeLists.txt --- a/misc/liblua/CMakeLists.txt Sun Sep 16 23:52:36 2012 +0200 +++ b/misc/liblua/CMakeLists.txt Sun Oct 28 15:12:37 2012 +0100 @@ -1,7 +1,6 @@ #this file is included only when system Lua library is not found file(GLOB lua_src *.c *.h) -set(LIBRARY_OUTPUT_PATH ${EXECUTABLE_OUTPUT_PATH}) if(WIN32) add_definitions(-DLUA_BUILD_AS_DLL) @@ -14,6 +13,7 @@ else(WIN32) add_definitions(-DLUA_USE_LINUX) add_library(lua STATIC ${lua_src}) + set(LUA_LIBRARY lua) endif(WIN32) diff -r 6237d2f002ba -r 2bc61f8841a1 misc/libtremor/Android.mk diff -r 6237d2f002ba -r 2bc61f8841a1 misc/libtremor/Xcode/Tremor.xcodeproj/project.pbxproj diff -r 6237d2f002ba -r 2bc61f8841a1 misc/libtremor/tremor/Makefile.am diff -r 6237d2f002ba -r 2bc61f8841a1 misc/libtremor/tremor/Version_script.in --- a/misc/libtremor/tremor/Version_script.in Sun Sep 16 23:52:36 2012 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,49 +0,0 @@ -# -# Export file for libvorbisidec -# -# Only the symbols listed in the global section will be callable from -# applications linking to libvorbisidec. -# - -@PACKAGE@.so.1 -{ - global: - ov_clear; - ov_open; - ov_open_callbacks; - ov_test; - ov_test_callbacks; - ov_test_open; - ov_bitrate; - ov_bitrate_instant; - ov_streams; - ov_seekable; - ov_serialnumber; - ov_raw_total; - ov_pcm_total; - ov_time_total; - ov_raw_seek; - ov_pcm_seek; - ov_pcm_seek_page; - ov_time_seek; - ov_time_seek_page; - ov_raw_tell; - ov_pcm_tell; - ov_time_tell; - ov_info; - ov_comment; - ov_read; - - vorbis_info_init; - vorbis_info_clear; - vorbis_info_blocksize; - vorbis_comment_init; - vorbis_comment_add; - vorbis_comment_add_tag; - vorbis_comment_query; - vorbis_comment_query_count; - vorbis_comment_clear; - - local: - *; -}; diff -r 6237d2f002ba -r 2bc61f8841a1 misc/libtremor/tremor/autogen.sh diff -r 6237d2f002ba -r 2bc61f8841a1 misc/libtremor/tremor/backends.h --- a/misc/libtremor/tremor/backends.h Sun Sep 16 23:52:36 2012 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,130 +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-2002 * - * BY THE Xiph.Org FOUNDATION http://www.xiph.org/ * - * * - ******************************************************************** - - function: backend and mapping structures - - ********************************************************************/ - -/* this is exposed up here because we need it for static modes. - Lookups for each backend aren't exposed because there's no reason - to do so */ - -#ifndef _vorbis_backend_h_ -#define _vorbis_backend_h_ - -#include "codec_internal.h" - -/* this would all be simpler/shorter with templates, but.... */ -/* Transform backend generic *************************************/ - -/* only mdct right now. Flesh it out more if we ever transcend mdct - in the transform domain */ - -/* Floor backend generic *****************************************/ -typedef struct{ - vorbis_info_floor *(*unpack)(vorbis_info *,oggpack_buffer *); - vorbis_look_floor *(*look) (vorbis_dsp_state *,vorbis_info_mode *, - vorbis_info_floor *); - void (*free_info) (vorbis_info_floor *); - void (*free_look) (vorbis_look_floor *); - void *(*inverse1) (struct vorbis_block *,vorbis_look_floor *); - int (*inverse2) (struct vorbis_block *,vorbis_look_floor *, - void *buffer,ogg_int32_t *); -} vorbis_func_floor; - -typedef struct{ - int order; - long rate; - long barkmap; - - int ampbits; - int ampdB; - - int numbooks; /* <= 16 */ - int books[16]; - -} vorbis_info_floor0; - -#define VIF_POSIT 63 -#define VIF_CLASS 16 -#define VIF_PARTS 31 -typedef struct{ - int partitions; /* 0 to 31 */ - int partitionclass[VIF_PARTS]; /* 0 to 15 */ - - int class_dim[VIF_CLASS]; /* 1 to 8 */ - int class_subs[VIF_CLASS]; /* 0,1,2,3 (bits: 1< -#include -#include -#include "ogg.h" -#include "ivorbiscodec.h" -#include "codec_internal.h" - -#include "window.h" -#include "registry.h" -#include "misc.h" - -static int ilog(unsigned int v){ - int ret=0; - if(v)--v; - while(v){ - ret++; - v>>=1; - } - return(ret); -} - -/* pcm accumulator examples (not exhaustive): - - <-------------- lW ----------------> - <--------------- W ----------------> -: .....|..... _______________ | -: .''' | '''_--- | |\ | -:.....''' |_____--- '''......| | \_______| -:.................|__________________|_______|__|______| - |<------ Sl ------>| > Sr < |endW - |beginSl |endSl | |endSr - |beginW |endlW |beginSr - - - |< lW >| - <--------------- W ----------------> - | | .. ______________ | - | | ' `/ | ---_ | - |___.'___/`. | ---_____| - |_______|__|_______|_________________| - | >|Sl|< |<------ Sr ----->|endW - | | |endSl |beginSr |endSr - |beginW | |endlW - mult[0] |beginSl mult[n] - - <-------------- lW -----------------> - |<--W-->| -: .............. ___ | | -: .''' |`/ \ | | -:.....''' |/`....\|...| -:.........................|___|___|___| - |Sl |Sr |endW - | | |endSr - | |beginSr - | |endSl - |beginSl - |beginW -*/ - -/* block abstraction setup *********************************************/ - -#ifndef WORD_ALIGN -#define WORD_ALIGN 8 -#endif - -int vorbis_block_init(vorbis_dsp_state *v, vorbis_block *vb){ - memset(vb,0,sizeof(*vb)); - vb->vd=v; - vb->localalloc=0; - vb->localstore=NULL; - - return(0); -} - -void *_vorbis_block_alloc(vorbis_block *vb,long bytes){ - bytes=(bytes+(WORD_ALIGN-1)) & ~(WORD_ALIGN-1); - if(bytes+vb->localtop>vb->localalloc){ - /* can't just _ogg_realloc... there are outstanding pointers */ - if(vb->localstore){ - struct alloc_chain *link=(struct alloc_chain *)_ogg_malloc(sizeof(*link)); - vb->totaluse+=vb->localtop; - link->next=vb->reap; - link->ptr=vb->localstore; - vb->reap=link; - } - /* highly conservative */ - vb->localalloc=bytes; - vb->localstore=_ogg_malloc(vb->localalloc); - vb->localtop=0; - } - { - void *ret=(void *)(((char *)vb->localstore)+vb->localtop); - vb->localtop+=bytes; - return ret; - } -} - -/* reap the chain, pull the ripcord */ -void _vorbis_block_ripcord(vorbis_block *vb){ - /* reap the chain */ - struct alloc_chain *reap=vb->reap; - while(reap){ - struct alloc_chain *next=reap->next; - _ogg_free(reap->ptr); - memset(reap,0,sizeof(*reap)); - _ogg_free(reap); - reap=next; - } - /* consolidate storage */ - if(vb->totaluse){ - vb->localstore=_ogg_realloc(vb->localstore,vb->totaluse+vb->localalloc); - vb->localalloc+=vb->totaluse; - vb->totaluse=0; - } - - /* pull the ripcord */ - vb->localtop=0; - vb->reap=NULL; -} - -int vorbis_block_clear(vorbis_block *vb){ - _vorbis_block_ripcord(vb); - if(vb->localstore)_ogg_free(vb->localstore); - - memset(vb,0,sizeof(*vb)); - return(0); -} - -static int _vds_init(vorbis_dsp_state *v,vorbis_info *vi){ - int i; - codec_setup_info *ci=(codec_setup_info *)vi->codec_setup; - private_state *b=NULL; - - memset(v,0,sizeof(*v)); - b=(private_state *)(v->backend_state=_ogg_calloc(1,sizeof(*b))); - - v->vi=vi; - b->modebits=ilog(ci->modes); - - /* Vorbis I uses only window type 0 */ - b->window[0]=_vorbis_window(0,ci->blocksizes[0]/2); - b->window[1]=_vorbis_window(0,ci->blocksizes[1]/2); - - /* finish the codebooks */ - if(!ci->fullbooks){ - ci->fullbooks=(codebook *)_ogg_calloc(ci->books,sizeof(*ci->fullbooks)); - for(i=0;ibooks;i++){ - vorbis_book_init_decode(ci->fullbooks+i,ci->book_param[i]); - /* decode codebooks are now standalone after init */ - vorbis_staticbook_destroy(ci->book_param[i]); - ci->book_param[i]=NULL; - } - } - - v->pcm_storage=ci->blocksizes[1]; - v->pcm=(ogg_int32_t **)_ogg_malloc(vi->channels*sizeof(*v->pcm)); - v->pcmret=(ogg_int32_t **)_ogg_malloc(vi->channels*sizeof(*v->pcmret)); - for(i=0;ichannels;i++) - v->pcm[i]=(ogg_int32_t *)_ogg_calloc(v->pcm_storage,sizeof(*v->pcm[i])); - - /* all 1 (large block) or 0 (small block) */ - /* explicitly set for the sake of clarity */ - v->lW=0; /* previous window size */ - v->W=0; /* current window size */ - - /* initialize all the mapping/backend lookups */ - b->mode=(vorbis_look_mapping **)_ogg_calloc(ci->modes,sizeof(*b->mode)); - for(i=0;imodes;i++){ - int mapnum=ci->mode_param[i]->mapping; - int maptype=ci->map_type[mapnum]; - b->mode[i]=_mapping_P[maptype]->look(v,ci->mode_param[i], - ci->map_param[mapnum]); - } - return(0); -} - -int vorbis_synthesis_restart(vorbis_dsp_state *v){ - vorbis_info *vi=v->vi; - codec_setup_info *ci; - - if(!v->backend_state)return -1; - if(!vi)return -1; - ci=vi->codec_setup; - if(!ci)return -1; - - v->centerW=ci->blocksizes[1]/2; - v->pcm_current=v->centerW; - - v->pcm_returned=-1; - v->granulepos=-1; - v->sequence=-1; - ((private_state *)(v->backend_state))->sample_count=-1; - - return(0); -} - -int vorbis_synthesis_init(vorbis_dsp_state *v,vorbis_info *vi){ - _vds_init(v,vi); - vorbis_synthesis_restart(v); - - return(0); -} - -void vorbis_dsp_clear(vorbis_dsp_state *v){ - int i; - if(v){ - vorbis_info *vi=v->vi; - codec_setup_info *ci=(codec_setup_info *)(vi?vi->codec_setup:NULL); - private_state *b=(private_state *)v->backend_state; - - if(v->pcm){ - for(i=0;ichannels;i++) - if(v->pcm[i])_ogg_free(v->pcm[i]); - _ogg_free(v->pcm); - if(v->pcmret)_ogg_free(v->pcmret); - } - - /* free mode lookups; these are actually vorbis_look_mapping structs */ - if(ci){ - for(i=0;imodes;i++){ - int mapnum=ci->mode_param[i]->mapping; - int maptype=ci->map_type[mapnum]; - if(b && b->mode)_mapping_P[maptype]->free_look(b->mode[i]); - } - } - - if(b){ - if(b->mode)_ogg_free(b->mode); - _ogg_free(b); - } - - memset(v,0,sizeof(*v)); - } -} - -/* Unlike in analysis, the window is only partially applied for each - block. The time domain envelope is not yet handled at the point of - calling (as it relies on the previous block). */ - -int vorbis_synthesis_blockin(vorbis_dsp_state *v,vorbis_block *vb){ - vorbis_info *vi=v->vi; - codec_setup_info *ci=(codec_setup_info *)vi->codec_setup; - private_state *b=v->backend_state; - int i,j; - - if(v->pcm_current>v->pcm_returned && v->pcm_returned!=-1)return(OV_EINVAL); - - v->lW=v->W; - v->W=vb->W; - v->nW=-1; - - if((v->sequence==-1)|| - (v->sequence+1 != vb->sequence)){ - v->granulepos=-1; /* out of sequence; lose count */ - b->sample_count=-1; - } - - v->sequence=vb->sequence; - - if(vb->pcm){ /* no pcm to process if vorbis_synthesis_trackonly - was called on block */ - int n=ci->blocksizes[v->W]/2; - int n0=ci->blocksizes[0]/2; - int n1=ci->blocksizes[1]/2; - - int thisCenter; - int prevCenter; - - if(v->centerW){ - thisCenter=n1; - prevCenter=0; - }else{ - thisCenter=0; - prevCenter=n1; - } - - /* v->pcm is now used like a two-stage double buffer. We don't want - to have to constantly shift *or* adjust memory usage. Don't - accept a new block until the old is shifted out */ - - /* overlap/add PCM */ - - for(j=0;jchannels;j++){ - /* the overlap/add section */ - if(v->lW){ - if(v->W){ - /* large/large */ - ogg_int32_t *pcm=v->pcm[j]+prevCenter; - ogg_int32_t *p=vb->pcm[j]; - for(i=0;ipcm[j]+prevCenter+n1/2-n0/2; - ogg_int32_t *p=vb->pcm[j]; - for(i=0;iW){ - /* small/large */ - ogg_int32_t *pcm=v->pcm[j]+prevCenter; - ogg_int32_t *p=vb->pcm[j]+n1/2-n0/2; - for(i=0;ipcm[j]+prevCenter; - ogg_int32_t *p=vb->pcm[j]; - for(i=0;ipcm[j]+thisCenter; - ogg_int32_t *p=vb->pcm[j]+n; - for(i=0;icenterW) - v->centerW=0; - else - v->centerW=n1; - - /* deal with initial packet state; we do this using the explicit - pcm_returned==-1 flag otherwise we're sensitive to first block - being short or long */ - - if(v->pcm_returned==-1){ - v->pcm_returned=thisCenter; - v->pcm_current=thisCenter; - }else{ - v->pcm_returned=prevCenter; - v->pcm_current=prevCenter+ - ci->blocksizes[v->lW]/4+ - ci->blocksizes[v->W]/4; - } - - } - - /* track the frame number... This is for convenience, but also - making sure our last packet doesn't end with added padding. If - the last packet is partial, the number of samples we'll have to - return will be past the vb->granulepos. - - 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(b->sample_count==-1){ - b->sample_count=0; - }else{ - b->sample_count+=ci->blocksizes[v->lW]/4+ci->blocksizes[v->W]/4; - } - - if(v->granulepos==-1){ - if(vb->granulepos!=-1){ /* only set if we have a position to set to */ - - v->granulepos=vb->granulepos; - - /* is this a short page? */ - if(b->sample_count>v->granulepos){ - /* corner case; if this is both the first and last audio page, - then spec says the end is cut, not beginning */ - if(vb->eofflag){ - /* 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 */ - - v->pcm_current-=(b->sample_count-v->granulepos); - }else{ - /* trim the beginning */ - v->pcm_returned+=(b->sample_count-v->granulepos); - if(v->pcm_returned>v->pcm_current) - v->pcm_returned=v->pcm_current; - } - - } - - } - }else{ - v->granulepos+=ci->blocksizes[v->lW]/4+ci->blocksizes[v->W]/4; - if(vb->granulepos!=-1 && v->granulepos!=vb->granulepos){ - - if(v->granulepos>vb->granulepos){ - long extra=v->granulepos-vb->granulepos; - - if(extra) - if(vb->eofflag){ - /* partial last frame. Strip the extra samples off */ - v->pcm_current-=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 } */ - v->granulepos=vb->granulepos; - } - } - - /* Update, cleanup */ - - if(vb->eofflag)v->eofflag=1; - return(0); -} - -/* pcm==NULL indicates we just want the pending samples, no more */ -int vorbis_synthesis_pcmout(vorbis_dsp_state *v,ogg_int32_t ***pcm){ - vorbis_info *vi=v->vi; - if(v->pcm_returned>-1 && v->pcm_returnedpcm_current){ - if(pcm){ - int i; - for(i=0;ichannels;i++) - v->pcmret[i]=v->pcm[i]+v->pcm_returned; - *pcm=v->pcmret; - } - return(v->pcm_current-v->pcm_returned); - } - return(0); -} - -int vorbis_synthesis_read(vorbis_dsp_state *v,int bytes){ - if(bytes && v->pcm_returned+bytes>v->pcm_current)return(OV_EINVAL); - v->pcm_returned+=bytes; - return(0); -} - diff -r 6237d2f002ba -r 2bc61f8841a1 misc/libtremor/tremor/block.h --- a/misc/libtremor/tremor/block.h Sun Sep 16 23:52:36 2012 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,26 +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-2008 * - * BY THE Xiph.Org FOUNDATION http://www.xiph.org/ * - * * - ******************************************************************** - - function: shared block functions - - ********************************************************************/ - -#ifndef _V_BLOCK_ -#define _V_BLOCK_ - -#include "ivorbiscodec.h" - -extern void _vorbis_block_ripcord(vorbis_block *vb); -extern void *_vorbis_block_alloc(vorbis_block *vb,long bytes); - -#endif diff -r 6237d2f002ba -r 2bc61f8841a1 misc/libtremor/tremor/codebook.c diff -r 6237d2f002ba -r 2bc61f8841a1 misc/libtremor/tremor/codebook.h diff -r 6237d2f002ba -r 2bc61f8841a1 misc/libtremor/tremor/codec_internal.h diff -r 6237d2f002ba -r 2bc61f8841a1 misc/libtremor/tremor/config_types.h diff -r 6237d2f002ba -r 2bc61f8841a1 misc/libtremor/tremor/configure.in diff -r 6237d2f002ba -r 2bc61f8841a1 misc/libtremor/tremor/floor0.c diff -r 6237d2f002ba -r 2bc61f8841a1 misc/libtremor/tremor/floor1.c diff -r 6237d2f002ba -r 2bc61f8841a1 misc/libtremor/tremor/framing.c diff -r 6237d2f002ba -r 2bc61f8841a1 misc/libtremor/tremor/info.c diff -r 6237d2f002ba -r 2bc61f8841a1 misc/libtremor/tremor/ivorbiscodec.h diff -r 6237d2f002ba -r 2bc61f8841a1 misc/libtremor/tremor/ivorbisfile.h diff -r 6237d2f002ba -r 2bc61f8841a1 misc/libtremor/tremor/lsp_lookup.h diff -r 6237d2f002ba -r 2bc61f8841a1 misc/libtremor/tremor/mapping0.c diff -r 6237d2f002ba -r 2bc61f8841a1 misc/libtremor/tremor/mdct.c diff -r 6237d2f002ba -r 2bc61f8841a1 misc/libtremor/tremor/mdct.h diff -r 6237d2f002ba -r 2bc61f8841a1 misc/libtremor/tremor/misc.h diff -r 6237d2f002ba -r 2bc61f8841a1 misc/libtremor/tremor/os.h diff -r 6237d2f002ba -r 2bc61f8841a1 misc/libtremor/tremor/os_types.h diff -r 6237d2f002ba -r 2bc61f8841a1 misc/libtremor/tremor/registry.c --- a/misc/libtremor/tremor/registry.c Sun Sep 16 23:52:36 2012 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,50 +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-2002 * - * BY THE Xiph.Org FOUNDATION http://www.xiph.org/ * - * * - ******************************************************************** - - function: registry for floor, res backends and channel mappings - - ********************************************************************/ - -#include "ivorbiscodec.h" -#include "codec_internal.h" -#include "registry.h" -#include "misc.h" - - -/* seems like major overkill now; the backend numbers will grow into - the infrastructure soon enough */ - -extern vorbis_func_floor floor0_exportbundle; -extern vorbis_func_floor floor1_exportbundle; -extern vorbis_func_residue residue0_exportbundle; -extern vorbis_func_residue residue1_exportbundle; -extern vorbis_func_residue residue2_exportbundle; -extern vorbis_func_mapping mapping0_exportbundle; - -vorbis_func_floor *_floor_P[]={ - &floor0_exportbundle, - &floor1_exportbundle, -}; - -vorbis_func_residue *_residue_P[]={ - &residue0_exportbundle, - &residue1_exportbundle, - &residue2_exportbundle, -}; - -vorbis_func_mapping *_mapping_P[]={ - &mapping0_exportbundle, -}; - - - diff -r 6237d2f002ba -r 2bc61f8841a1 misc/libtremor/tremor/registry.h --- a/misc/libtremor/tremor/registry.h Sun Sep 16 23:52:36 2012 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,40 +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-2002 * - * BY THE Xiph.Org FOUNDATION http://www.xiph.org/ * - * * - ******************************************************************** - - function: registry for time, floor, res backends and channel mappings - - ********************************************************************/ - -#ifndef _V_REG_H_ -#define _V_REG_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 - -#include "backends.h" - -#if defined(_WIN32) && defined(VORBISDLL_IMPORT) -# define EXTERN __declspec(dllimport) extern -#else -# define EXTERN extern -#endif - -EXTERN vorbis_func_floor *_floor_P[]; -EXTERN vorbis_func_residue *_residue_P[]; -EXTERN vorbis_func_mapping *_mapping_P[]; - -#endif diff -r 6237d2f002ba -r 2bc61f8841a1 misc/libtremor/tremor/res012.c diff -r 6237d2f002ba -r 2bc61f8841a1 misc/libtremor/tremor/sharedbook.c --- a/misc/libtremor/tremor/sharedbook.c Sun Sep 16 23:52:36 2012 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,439 +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-2002 * - * BY THE Xiph.Org FOUNDATION http://www.xiph.org/ * - * * - ******************************************************************** - - function: basic shared codebook operations - - ********************************************************************/ - -#include -#include -#include -#include "ogg.h" -#include "misc.h" -#include "ivorbiscodec.h" -#include "codebook.h" - -/**** pack/unpack helpers ******************************************/ -int _ilog(unsigned int v){ - int ret=0; - while(v){ - ret++; - v>>=1; - } - return(ret); -} - -/* 32 bit float (not IEEE; nonnormalized mantissa + - biased exponent) : neeeeeee eeemmmmm mmmmmmmm mmmmmmmm - Why not IEEE? It's just not that important here. */ - -#define VQ_FEXP 10 -#define VQ_FMAN 21 -#define VQ_FEXP_BIAS 768 /* bias toward values smaller than 1. */ - -static ogg_int32_t _float32_unpack(long val,int *point){ - long mant=val&0x1fffff; - int sign=val&0x80000000; - long exp =(val&0x7fe00000L)>>VQ_FMAN; - - exp-=(VQ_FMAN-1)+VQ_FEXP_BIAS; - - if(mant){ - while(!(mant&0x40000000)){ - mant<<=1; - exp-=1; - } - - if(sign)mant= -mant; - }else{ - sign=0; - exp=-9999; - } - - *point=exp; - return mant; -} - -/* given a list of word lengths, generate a list of codewords. Works - for length ordered or unordered, always assigns the lowest valued - codewords first. Extended to handle unused entries (length 0) */ -ogg_uint32_t *_make_words(long *l,long n,long sparsecount){ - long i,j,count=0; - ogg_uint32_t marker[33]; - ogg_uint32_t *r=(ogg_uint32_t *)_ogg_malloc((sparsecount?sparsecount:n)*sizeof(*r)); - memset(marker,0,sizeof(marker)); - - for(i=0;i0){ - ogg_uint32_t entry=marker[length]; - - /* when we claim a node for an entry, we also claim the nodes - below it (pruning off the imagined tree that may have dangled - from it) as well as blocking the use of any nodes directly - above for leaves */ - - /* update ourself */ - if(length<32 && (entry>>length)){ - /* error condition; the lengths must specify an overpopulated tree */ - _ogg_free(r); - return(NULL); - } - r[count++]=entry; - - /* 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){ - /* have to jump branches */ - if(j==1) - marker[1]++; - else - marker[j]=marker[j-1]<<1; - break; /* invariant says next upper marker would already - have been moved if it was on the same path */ - } - 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; - }else - if(sparsecount==0)count++; - } - - /* bitreverse the words because our bitwise packer/unpacker is LSb - endian */ - for(i=0,count=0;i>j)&1; - } - - if(sparsecount){ - if(l[i]) - r[count++]=temp; - }else - r[count++]=temp; - } - - return(r); -} - -/* there might be a straightforward one-line way to do the below - that's portable and totally safe against roundoff, but I haven't - thought of it. Therefore, we opt on the side of caution */ -long _book_maptype1_quantvals(const static_codebook *b){ - /* get us a starting hint, we'll polish it below */ - int bits=_ilog(b->entries); - 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++; - } - } - } -} - -/* different than what _book_unquantize does for mainline: - we repack the book in a fixed point format that shares the same - binary point. Upon first use, we can shift point if needed */ - -/* we need to deal with two map types: in map type 1, the values are - generated algorithmically (each column of the vector counts through - the values in the quant vector). in map type 2, all the values came - in in an explicit list. Both value lists must be unpacked */ - -ogg_int32_t *_book_unquantize(const static_codebook *b,int n,int *sparsemap, - int *maxpoint){ - long j,k,count=0; - if(b->maptype==1 || b->maptype==2){ - int quantvals; - int minpoint,delpoint; - ogg_int32_t mindel=_float32_unpack(b->q_min,&minpoint); - ogg_int32_t delta=_float32_unpack(b->q_delta,&delpoint); - ogg_int32_t *r=(ogg_int32_t *)_ogg_calloc(n*b->dim,sizeof(*r)); - int *rp=(int *)_ogg_calloc(n*b->dim,sizeof(*rp)); - - *maxpoint=minpoint; - - /* maptype 1 and 2 both use a quantized value vector, but - different sizes */ - switch(b->maptype){ - case 1: - /* 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;j++){ - if((sparsemap && b->lengthlist[j]) || !sparsemap){ - ogg_int32_t last=0; - int lastpoint=0; - int indexdiv=1; - for(k=0;kdim;k++){ - int index= (j/indexdiv)%quantvals; - int point=0; - int val=VFLOAT_MULTI(delta,delpoint, - abs(b->quantlist[index]),&point); - - val=VFLOAT_ADD(mindel,minpoint,val,point,&point); - val=VFLOAT_ADD(last,lastpoint,val,point,&point); - - if(b->q_sequencep){ - last=val; - lastpoint=point; - } - - if(sparsemap){ - r[sparsemap[count]*b->dim+k]=val; - rp[sparsemap[count]*b->dim+k]=point; - }else{ - r[count*b->dim+k]=val; - rp[count*b->dim+k]=point; - } - if(*maxpointentries;j++){ - if((sparsemap && b->lengthlist[j]) || !sparsemap){ - ogg_int32_t last=0; - int lastpoint=0; - - for(k=0;kdim;k++){ - int point=0; - int val=VFLOAT_MULTI(delta,delpoint, - abs(b->quantlist[j*b->dim+k]),&point); - - val=VFLOAT_ADD(mindel,minpoint,val,point,&point); - val=VFLOAT_ADD(last,lastpoint,val,point,&point); - - if(b->q_sequencep){ - last=val; - lastpoint=point; - } - - if(sparsemap){ - r[sparsemap[count]*b->dim+k]=val; - rp[sparsemap[count]*b->dim+k]=point; - }else{ - r[count*b->dim+k]=val; - rp[count*b->dim+k]=point; - } - if(*maxpointdim;j++) - if(rp[j]<*maxpoint) - r[j]>>=*maxpoint-rp[j]; - - _ogg_free(rp); - return(r); - } - return(NULL); -} - -void vorbis_staticbook_clear(static_codebook *b){ - if(b->quantlist)_ogg_free(b->quantlist); - if(b->lengthlist)_ogg_free(b->lengthlist); - memset(b,0,sizeof(*b)); - -} - -void vorbis_staticbook_destroy(static_codebook *b){ - vorbis_staticbook_clear(b); - _ogg_free(b); -} - -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->valuelist)_ogg_free(b->valuelist); - if(b->codelist)_ogg_free(b->codelist); - - if(b->dec_index)_ogg_free(b->dec_index); - if(b->dec_codelengths)_ogg_free(b->dec_codelengths); - if(b->dec_firsttable)_ogg_free(b->dec_firsttable); - - memset(b,0,sizeof(*b)); -} - -static ogg_uint32_t bitreverse(ogg_uint32_t x){ - x= ((x>>16)&0x0000ffffUL) | ((x<<16)&0xffff0000UL); - x= ((x>> 8)&0x00ff00ffUL) | ((x<< 8)&0xff00ff00UL); - x= ((x>> 4)&0x0f0f0f0fUL) | ((x<< 4)&0xf0f0f0f0UL); - x= ((x>> 2)&0x33333333UL) | ((x<< 2)&0xccccccccUL); - return((x>> 1)&0x55555555UL) | ((x<< 1)&0xaaaaaaaaUL); -} - -static int sort32a(const void *a,const void *b){ - return (**(ogg_uint32_t **)a>**(ogg_uint32_t **)b)- - (**(ogg_uint32_t **)a<**(ogg_uint32_t **)b); -} - -/* decode codebook arrangement is more heavily optimized than encode */ -int vorbis_book_init_decode(codebook *c,const static_codebook *s){ - int i,j,n=0,tabn; - int *sortindex; - memset(c,0,sizeof(*c)); - - /* count actually used entries */ - for(i=0;ientries;i++) - if(s->lengthlist[i]>0) - n++; - - c->entries=s->entries; - c->used_entries=n; - c->dim=s->dim; - - if(n>0){ - /* two different remappings go on here. - - First, we collapse the likely sparse codebook down only to - actually represented values/words. This collapsing needs to be - indexed as map-valueless books are used to encode original entry - positions as integers. - - Second, we reorder all vectors, including the entry index above, - by sorted bitreversed codeword to allow treeless decode. */ - - /* perform sort */ - ogg_uint32_t *codes=_make_words(s->lengthlist,s->entries,c->used_entries); - ogg_uint32_t **codep=(ogg_uint32_t **)alloca(sizeof(*codep)*n); - - if(codes==NULL)goto err_out; - - for(i=0;icodelist=(ogg_uint32_t *)_ogg_malloc(n*sizeof(*c->codelist)); - /* the index is a reverse index */ - for(i=0;icodelist[sortindex[i]]=codes[i]; - _ogg_free(codes); - - - - c->valuelist=_book_unquantize(s,n,sortindex,&c->binarypoint); - c->dec_index=(int *)_ogg_malloc(n*sizeof(*c->dec_index)); - - for(n=0,i=0;ientries;i++) - if(s->lengthlist[i]>0) - c->dec_index[sortindex[n++]]=i; - - c->dec_codelengths=(char *)_ogg_malloc(n*sizeof(*c->dec_codelengths)); - for(n=0,i=0;ientries;i++) - if(s->lengthlist[i]>0) - c->dec_codelengths[sortindex[n++]]=s->lengthlist[i]; - - c->dec_firsttablen=_ilog(c->used_entries)-4; /* this is magic */ - if(c->dec_firsttablen<5)c->dec_firsttablen=5; - if(c->dec_firsttablen>8)c->dec_firsttablen=8; - - tabn=1<dec_firsttablen; - c->dec_firsttable=(ogg_uint32_t *)_ogg_calloc(tabn,sizeof(*c->dec_firsttable)); - c->dec_maxlength=0; - - for(i=0;idec_maxlengthdec_codelengths[i]) - c->dec_maxlength=c->dec_codelengths[i]; - if(c->dec_codelengths[i]<=c->dec_firsttablen){ - ogg_uint32_t orig=bitreverse(c->codelist[i]); - for(j=0;j<(1<<(c->dec_firsttablen-c->dec_codelengths[i]));j++) - c->dec_firsttable[orig|(j<dec_codelengths[i])]=i+1; - } - } - - /* now fill in 'unused' entries in the firsttable with hi/lo search - hints for the non-direct-hits */ - { - ogg_uint32_t mask=0xfffffffeUL<<(31-c->dec_firsttablen); - long lo=0,hi=0; - - for(i=0;idec_firsttablen); - if(c->dec_firsttable[bitreverse(word)]==0){ - while((lo+1)codelist[lo+1]<=word)lo++; - while( hi=(c->codelist[hi]&mask))hi++; - - /* we only actually have 15 bits per hint to play with here. - In order to overflow gracefully (nothing breaks, efficiency - just drops), encode as the difference from the extremes. */ - { - unsigned long loval=lo; - unsigned long hival=n-hi; - - if(loval>0x7fff)loval=0x7fff; - if(hival>0x7fff)hival=0x7fff; - c->dec_firsttable[bitreverse(word)]= - 0x80000000UL | (loval<<15) | hival; - } - } - } - } - } - - return(0); - err_out: - vorbis_book_clear(c); - return(-1); -} - diff -r 6237d2f002ba -r 2bc61f8841a1 misc/libtremor/tremor/synthesis.c --- a/misc/libtremor/tremor/synthesis.c Sun Sep 16 23:52:36 2012 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,113 +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: single-block PCM synthesis - last mod: $Id: synthesis.c,v 1.4 2003/03/29 03:07:21 xiphmont Exp $ - - ********************************************************************/ - -#include -#include "ogg.h" -#include "ivorbiscodec.h" -#include "codec_internal.h" -#include "registry.h" -#include "misc.h" -#include "block.h" - -int vorbis_synthesis(vorbis_block *vb,ogg_packet *op,int decodep){ - vorbis_dsp_state *vd=vb->vd; - private_state *b=(private_state *)vd->backend_state; - vorbis_info *vi=vd->vi; - codec_setup_info *ci=(codec_setup_info *)vi->codec_setup; - oggpack_buffer *opb=&vb->opb; - int type,mode,i; - - /* first things first. Make sure decode is ready */ - _vorbis_block_ripcord(vb); - 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); - } - - /* read our mode and pre/post windowsize */ - mode=oggpack_read(opb,b->modebits); - if(mode==-1)return(OV_EBADPACKET); - - vb->mode=mode; - vb->W=ci->mode_param[mode]->blockflag; - if(vb->W){ - vb->lW=oggpack_read(opb,1); - vb->nW=oggpack_read(opb,1); - if(vb->nW==-1) return(OV_EBADPACKET); - }else{ - vb->lW=0; - vb->nW=0; - } - - /* more setup */ - vb->granulepos=op->granulepos; - vb->sequence=op->packetno-3; /* first block is third packet */ - vb->eofflag=op->e_o_s; - - if(decodep){ - /* alloc pcm passback storage */ - vb->pcmend=ci->blocksizes[vb->W]; - vb->pcm=(ogg_int32_t **)_vorbis_block_alloc(vb,sizeof(*vb->pcm)*vi->channels); - for(i=0;ichannels;i++) - vb->pcm[i]=(ogg_int32_t *)_vorbis_block_alloc(vb,vb->pcmend*sizeof(*vb->pcm[i])); - - /* unpack_header enforces range checking */ - type=ci->map_type[ci->mode_param[mode]->mapping]; - - return(_mapping_P[type]->inverse(vb,b->mode[mode])); - }else{ - /* no pcm */ - vb->pcmend=0; - vb->pcm=NULL; - - 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; - - 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); - } - - { - int modebits=0; - int v=ci->modes; - 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]); -} - - diff -r 6237d2f002ba -r 2bc61f8841a1 misc/libtremor/tremor/vorbisfile.c diff -r 6237d2f002ba -r 2bc61f8841a1 misc/libtremor/tremor/window.c --- a/misc/libtremor/tremor/window.c Sun Sep 16 23:52:36 2012 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,83 +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-2002 * - * BY THE Xiph.Org FOUNDATION http://www.xiph.org/ * - * * - ******************************************************************** - - function: window functions - - ********************************************************************/ - -#include -#include -#include "misc.h" -#include "window.h" -#include "window_lookup.h" - -const void *_vorbis_window(int type, int left){ - - switch(type){ - case 0: - - 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; - case 4096: - return vwin8192; - default: - return(0); - } - break; - default: - return(0); - } -} - -void _vorbis_apply_window(ogg_int32_t *d,const void *window_p[2], - long *blocksizes, - int lW,int W,int nW){ - - LOOKUP_T *window[2]={window_p[0],window_p[1]}; - long n=blocksizes[W]; - long ln=blocksizes[lW]; - long rn=blocksizes[nW]; - - long leftbegin=n/4-ln/4; - long leftend=leftbegin+ln/2; - - long rightbegin=n/2+n/4-rn/4; - long rightend=rightbegin+rn/2; - - int i,p; - - for(i=0;i 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 6237d2f002ba -r 2bc61f8841a1 misc/winutils/Hedgewars.lnk Binary file misc/winutils/Hedgewars.lnk has changed diff -r 6237d2f002ba -r 2bc61f8841a1 misc/winutils/Hedgewars_x64.lnk Binary file misc/winutils/Hedgewars_x64.lnk has changed diff -r 6237d2f002ba -r 2bc61f8841a1 misc/winutils/Hedgewars_x86.lnk Binary file misc/winutils/Hedgewars_x86.lnk has changed diff -r 6237d2f002ba -r 2bc61f8841a1 misc/winutils/include/SDL.h --- a/misc/winutils/include/SDL.h Sun Sep 16 23:52:36 2012 +0200 +++ b/misc/winutils/include/SDL.h Sun Oct 28 15:12:37 2012 +0100 @@ -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 6237d2f002ba -r 2bc61f8841a1 misc/winutils/include/SDL_active.h --- a/misc/winutils/include/SDL_active.h Sun Sep 16 23:52:36 2012 +0200 +++ b/misc/winutils/include/SDL_active.h Sun Oct 28 15:12:37 2012 +0100 @@ -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 6237d2f002ba -r 2bc61f8841a1 misc/winutils/include/SDL_audio.h --- a/misc/winutils/include/SDL_audio.h Sun Sep 16 23:52:36 2012 +0200 +++ b/misc/winutils/include/SDL_audio.h Sun Oct 28 15:12:37 2012 +0100 @@ -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 6237d2f002ba -r 2bc61f8841a1 misc/winutils/include/SDL_byteorder.h --- a/misc/winutils/include/SDL_byteorder.h Sun Sep 16 23:52:36 2012 +0200 +++ b/misc/winutils/include/SDL_byteorder.h Sun Oct 28 15:12:37 2012 +0100 @@ -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 6237d2f002ba -r 2bc61f8841a1 misc/winutils/include/SDL_cdrom.h --- a/misc/winutils/include/SDL_cdrom.h Sun Sep 16 23:52:36 2012 +0200 +++ b/misc/winutils/include/SDL_cdrom.h Sun Oct 28 15:12:37 2012 +0100 @@ -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 6237d2f002ba -r 2bc61f8841a1 misc/winutils/include/SDL_config.h --- a/misc/winutils/include/SDL_config.h Sun Sep 16 23:52:36 2012 +0200 +++ b/misc/winutils/include/SDL_config.h Sun Oct 28 15:12:37 2012 +0100 @@ -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 6237d2f002ba -r 2bc61f8841a1 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 Sun Oct 28 15:12:37 2012 +0100 @@ -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 6237d2f002ba -r 2bc61f8841a1 misc/winutils/include/SDL_cpuinfo.h --- a/misc/winutils/include/SDL_cpuinfo.h Sun Sep 16 23:52:36 2012 +0200 +++ b/misc/winutils/include/SDL_cpuinfo.h Sun Oct 28 15:12:37 2012 +0100 @@ -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 6237d2f002ba -r 2bc61f8841a1 misc/winutils/include/SDL_endian.h --- a/misc/winutils/include/SDL_endian.h Sun Sep 16 23:52:36 2012 +0200 +++ b/misc/winutils/include/SDL_endian.h Sun Oct 28 15:12:37 2012 +0100 @@ -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 6237d2f002ba -r 2bc61f8841a1 misc/winutils/include/SDL_error.h --- a/misc/winutils/include/SDL_error.h Sun Sep 16 23:52:36 2012 +0200 +++ b/misc/winutils/include/SDL_error.h Sun Oct 28 15:12:37 2012 +0100 @@ -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 6237d2f002ba -r 2bc61f8841a1 misc/winutils/include/SDL_events.h --- a/misc/winutils/include/SDL_events.h Sun Sep 16 23:52:36 2012 +0200 +++ b/misc/winutils/include/SDL_events.h Sun Oct 28 15:12:37 2012 +0100 @@ -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 6237d2f002ba -r 2bc61f8841a1 misc/winutils/include/SDL_getenv.h --- a/misc/winutils/include/SDL_getenv.h Sun Sep 16 23:52:36 2012 +0200 +++ b/misc/winutils/include/SDL_getenv.h Sun Oct 28 15:12:37 2012 +0100 @@ -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 6237d2f002ba -r 2bc61f8841a1 misc/winutils/include/SDL_joystick.h --- a/misc/winutils/include/SDL_joystick.h Sun Sep 16 23:52:36 2012 +0200 +++ b/misc/winutils/include/SDL_joystick.h Sun Oct 28 15:12:37 2012 +0100 @@ -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 6237d2f002ba -r 2bc61f8841a1 misc/winutils/include/SDL_keyboard.h --- a/misc/winutils/include/SDL_keyboard.h Sun Sep 16 23:52:36 2012 +0200 +++ b/misc/winutils/include/SDL_keyboard.h Sun Oct 28 15:12:37 2012 +0100 @@ -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 6237d2f002ba -r 2bc61f8841a1 misc/winutils/include/SDL_keysym.h --- a/misc/winutils/include/SDL_keysym.h Sun Sep 16 23:52:36 2012 +0200 +++ b/misc/winutils/include/SDL_keysym.h Sun Oct 28 15:12:37 2012 +0100 @@ -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 6237d2f002ba -r 2bc61f8841a1 misc/winutils/include/SDL_loadso.h --- a/misc/winutils/include/SDL_loadso.h Sun Sep 16 23:52:36 2012 +0200 +++ b/misc/winutils/include/SDL_loadso.h Sun Oct 28 15:12:37 2012 +0100 @@ -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 6237d2f002ba -r 2bc61f8841a1 misc/winutils/include/SDL_main.h --- a/misc/winutils/include/SDL_main.h Sun Sep 16 23:52:36 2012 +0200 +++ b/misc/winutils/include/SDL_main.h Sun Oct 28 15:12:37 2012 +0100 @@ -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 6237d2f002ba -r 2bc61f8841a1 misc/winutils/include/SDL_mixer.h --- a/misc/winutils/include/SDL_mixer.h Sun Sep 16 23:52:36 2012 +0200 +++ b/misc/winutils/include/SDL_mixer.h Sun Oct 28 15:12:37 2012 +0100 @@ -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 6237d2f002ba -r 2bc61f8841a1 misc/winutils/include/SDL_mouse.h --- a/misc/winutils/include/SDL_mouse.h Sun Sep 16 23:52:36 2012 +0200 +++ b/misc/winutils/include/SDL_mouse.h Sun Oct 28 15:12:37 2012 +0100 @@ -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 6237d2f002ba -r 2bc61f8841a1 misc/winutils/include/SDL_mutex.h --- a/misc/winutils/include/SDL_mutex.h Sun Sep 16 23:52:36 2012 +0200 +++ b/misc/winutils/include/SDL_mutex.h Sun Oct 28 15:12:37 2012 +0100 @@ -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 6237d2f002ba -r 2bc61f8841a1 misc/winutils/include/SDL_opengl.h --- a/misc/winutils/include/SDL_opengl.h Sun Sep 16 23:52:36 2012 +0200 +++ b/misc/winutils/include/SDL_opengl.h Sun Oct 28 15:12:37 2012 +0100 @@ -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 6237d2f002ba -r 2bc61f8841a1 misc/winutils/include/SDL_platform.h --- a/misc/winutils/include/SDL_platform.h Sun Sep 16 23:52:36 2012 +0200 +++ b/misc/winutils/include/SDL_platform.h Sun Oct 28 15:12:37 2012 +0100 @@ -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 6237d2f002ba -r 2bc61f8841a1 misc/winutils/include/SDL_quit.h --- a/misc/winutils/include/SDL_quit.h Sun Sep 16 23:52:36 2012 +0200 +++ b/misc/winutils/include/SDL_quit.h Sun Oct 28 15:12:37 2012 +0100 @@ -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 6237d2f002ba -r 2bc61f8841a1 misc/winutils/include/SDL_rwops.h --- a/misc/winutils/include/SDL_rwops.h Sun Sep 16 23:52:36 2012 +0200 +++ b/misc/winutils/include/SDL_rwops.h Sun Oct 28 15:12:37 2012 +0100 @@ -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 6237d2f002ba -r 2bc61f8841a1 misc/winutils/include/SDL_stdinc.h --- a/misc/winutils/include/SDL_stdinc.h Sun Sep 16 23:52:36 2012 +0200 +++ b/misc/winutils/include/SDL_stdinc.h Sun Oct 28 15:12:37 2012 +0100 @@ -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 6237d2f002ba -r 2bc61f8841a1 misc/winutils/include/SDL_syswm.h --- a/misc/winutils/include/SDL_syswm.h Sun Sep 16 23:52:36 2012 +0200 +++ b/misc/winutils/include/SDL_syswm.h Sun Oct 28 15:12:37 2012 +0100 @@ -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 6237d2f002ba -r 2bc61f8841a1 misc/winutils/include/SDL_thread.h --- a/misc/winutils/include/SDL_thread.h Sun Sep 16 23:52:36 2012 +0200 +++ b/misc/winutils/include/SDL_thread.h Sun Oct 28 15:12:37 2012 +0100 @@ -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 6237d2f002ba -r 2bc61f8841a1 misc/winutils/include/SDL_timer.h --- a/misc/winutils/include/SDL_timer.h Sun Sep 16 23:52:36 2012 +0200 +++ b/misc/winutils/include/SDL_timer.h Sun Oct 28 15:12:37 2012 +0100 @@ -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 6237d2f002ba -r 2bc61f8841a1 misc/winutils/include/SDL_types.h --- a/misc/winutils/include/SDL_types.h Sun Sep 16 23:52:36 2012 +0200 +++ b/misc/winutils/include/SDL_types.h Sun Oct 28 15:12:37 2012 +0100 @@ -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 6237d2f002ba -r 2bc61f8841a1 misc/winutils/include/SDL_version.h --- a/misc/winutils/include/SDL_version.h Sun Sep 16 23:52:36 2012 +0200 +++ b/misc/winutils/include/SDL_version.h Sun Oct 28 15:12:37 2012 +0100 @@ -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 6237d2f002ba -r 2bc61f8841a1 misc/winutils/include/SDL_video.h --- a/misc/winutils/include/SDL_video.h Sun Sep 16 23:52:36 2012 +0200 +++ b/misc/winutils/include/SDL_video.h Sun Oct 28 15:12:37 2012 +0100 @@ -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 6237d2f002ba -r 2bc61f8841a1 misc/winutils/include/begin_code.h --- a/misc/winutils/include/begin_code.h Sun Sep 16 23:52:36 2012 +0200 +++ b/misc/winutils/include/begin_code.h Sun Oct 28 15:12:37 2012 +0100 @@ -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 6237d2f002ba -r 2bc61f8841a1 misc/winutils/include/close_code.h --- a/misc/winutils/include/close_code.h Sun Sep 16 23:52:36 2012 +0200 +++ b/misc/winutils/include/close_code.h Sun Oct 28 15:12:37 2012 +0100 @@ -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 6237d2f002ba -r 2bc61f8841a1 misc/winutils/include/doxyfile --- a/misc/winutils/include/doxyfile Sun Sep 16 23:52:36 2012 +0200 +++ /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 6237d2f002ba -r 2bc61f8841a1 misc/winutils/include/libavcodec/avcodec.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/misc/winutils/include/libavcodec/avcodec.h Sun Oct 28 15:12:37 2012 +0100 @@ -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 6237d2f002ba -r 2bc61f8841a1 misc/winutils/include/libavcodec/avfft.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/misc/winutils/include/libavcodec/avfft.h Sun Oct 28 15:12:37 2012 +0100 @@ -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 6237d2f002ba -r 2bc61f8841a1 misc/winutils/include/libavcodec/dxva2.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/misc/winutils/include/libavcodec/dxva2.h Sun Oct 28 15:12:37 2012 +0100 @@ -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 6237d2f002ba -r 2bc61f8841a1 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 Sun Oct 28 15:12:37 2012 +0100 @@ -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 6237d2f002ba -r 2bc61f8841a1 misc/winutils/include/libavcodec/vaapi.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/misc/winutils/include/libavcodec/vaapi.h Sun Oct 28 15:12:37 2012 +0100 @@ -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 6237d2f002ba -r 2bc61f8841a1 misc/winutils/include/libavcodec/vda.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/misc/winutils/include/libavcodec/vda.h Sun Oct 28 15:12:37 2012 +0100 @@ -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 6237d2f002ba -r 2bc61f8841a1 misc/winutils/include/libavcodec/vdpau.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/misc/winutils/include/libavcodec/vdpau.h Sun Oct 28 15:12:37 2012 +0100 @@ -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 6237d2f002ba -r 2bc61f8841a1 misc/winutils/include/libavcodec/version.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/misc/winutils/include/libavcodec/version.h Sun Oct 28 15:12:37 2012 +0100 @@ -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 6237d2f002ba -r 2bc61f8841a1 misc/winutils/include/libavcodec/xvmc.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/misc/winutils/include/libavcodec/xvmc.h Sun Oct 28 15:12:37 2012 +0100 @@ -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 6237d2f002ba -r 2bc61f8841a1 misc/winutils/include/libavformat/avformat.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/misc/winutils/include/libavformat/avformat.h Sun Oct 28 15:12:37 2012 +0100 @@ -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 6237d2f002ba -r 2bc61f8841a1 misc/winutils/include/libavformat/avio.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/misc/winutils/include/libavformat/avio.h Sun Oct 28 15:12:37 2012 +0100 @@ -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 6237d2f002ba -r 2bc61f8841a1 misc/winutils/include/libavformat/version.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/misc/winutils/include/libavformat/version.h Sun Oct 28 15:12:37 2012 +0100 @@ -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 6237d2f002ba -r 2bc61f8841a1 misc/winutils/include/libavutil/adler32.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/misc/winutils/include/libavutil/adler32.h Sun Oct 28 15:12:37 2012 +0100 @@ -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 6237d2f002ba -r 2bc61f8841a1 misc/winutils/include/libavutil/aes.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/misc/winutils/include/libavutil/aes.h Sun Oct 28 15:12:37 2012 +0100 @@ -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 6237d2f002ba -r 2bc61f8841a1 misc/winutils/include/libavutil/attributes.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/misc/winutils/include/libavutil/attributes.h Sun Oct 28 15:12:37 2012 +0100 @@ -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 6237d2f002ba -r 2bc61f8841a1 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 Sun Oct 28 15:12:37 2012 +0100 @@ -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 6237d2f002ba -r 2bc61f8841a1 misc/winutils/include/libavutil/audioconvert.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/misc/winutils/include/libavutil/audioconvert.h Sun Oct 28 15:12:37 2012 +0100 @@ -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 6237d2f002ba -r 2bc61f8841a1 misc/winutils/include/libavutil/avassert.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/misc/winutils/include/libavutil/avassert.h Sun Oct 28 15:12:37 2012 +0100 @@ -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 6237d2f002ba -r 2bc61f8841a1 misc/winutils/include/libavutil/avconfig.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/misc/winutils/include/libavutil/avconfig.h Sun Oct 28 15:12:37 2012 +0100 @@ -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 6237d2f002ba -r 2bc61f8841a1 misc/winutils/include/libavutil/avstring.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/misc/winutils/include/libavutil/avstring.h Sun Oct 28 15:12:37 2012 +0100 @@ -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 6237d2f002ba -r 2bc61f8841a1 misc/winutils/include/libavutil/avutil.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/misc/winutils/include/libavutil/avutil.h Sun Oct 28 15:12:37 2012 +0100 @@ -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 6237d2f002ba -r 2bc61f8841a1 misc/winutils/include/libavutil/blowfish.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/misc/winutils/include/libavutil/blowfish.h Sun Oct 28 15:12:37 2012 +0100 @@ -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 6237d2f002ba -r 2bc61f8841a1 misc/winutils/include/libavutil/bswap.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/misc/winutils/include/libavutil/bswap.h Sun Oct 28 15:12:37 2012 +0100 @@ -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 6237d2f002ba -r 2bc61f8841a1 misc/winutils/include/libavutil/common.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/misc/winutils/include/libavutil/common.h Sun Oct 28 15:12:37 2012 +0100 @@ -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 6237d2f002ba -r 2bc61f8841a1 misc/winutils/include/libavutil/cpu.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/misc/winutils/include/libavutil/cpu.h Sun Oct 28 15:12:37 2012 +0100 @@ -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 6237d2f002ba -r 2bc61f8841a1 misc/winutils/include/libavutil/crc.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/misc/winutils/include/libavutil/crc.h Sun Oct 28 15:12:37 2012 +0100 @@ -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 6237d2f002ba -r 2bc61f8841a1 misc/winutils/include/libavutil/dict.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/misc/winutils/include/libavutil/dict.h Sun Oct 28 15:12:37 2012 +0100 @@ -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 6237d2f002ba -r 2bc61f8841a1 misc/winutils/include/libavutil/error.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/misc/winutils/include/libavutil/error.h Sun Oct 28 15:12:37 2012 +0100 @@ -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 6237d2f002ba -r 2bc61f8841a1 misc/winutils/include/libavutil/eval.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/misc/winutils/include/libavutil/eval.h Sun Oct 28 15:12:37 2012 +0100 @@ -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 6237d2f002ba -r 2bc61f8841a1 misc/winutils/include/libavutil/fifo.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/misc/winutils/include/libavutil/fifo.h Sun Oct 28 15:12:37 2012 +0100 @@ -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 6237d2f002ba -r 2bc61f8841a1 misc/winutils/include/libavutil/file.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/misc/winutils/include/libavutil/file.h Sun Oct 28 15:12:37 2012 +0100 @@ -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 6237d2f002ba -r 2bc61f8841a1 misc/winutils/include/libavutil/imgutils.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/misc/winutils/include/libavutil/imgutils.h Sun Oct 28 15:12:37 2012 +0100 @@ -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 6237d2f002ba -r 2bc61f8841a1 misc/winutils/include/libavutil/intfloat.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/misc/winutils/include/libavutil/intfloat.h Sun Oct 28 15:12:37 2012 +0100 @@ -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 6237d2f002ba -r 2bc61f8841a1 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 Sun Oct 28 15:12:37 2012 +0100 @@ -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 6237d2f002ba -r 2bc61f8841a1 misc/winutils/include/libavutil/intreadwrite.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/misc/winutils/include/libavutil/intreadwrite.h Sun Oct 28 15:12:37 2012 +0100 @@ -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 6237d2f002ba -r 2bc61f8841a1 misc/winutils/include/libavutil/lfg.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/misc/winutils/include/libavutil/lfg.h Sun Oct 28 15:12:37 2012 +0100 @@ -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 6237d2f002ba -r 2bc61f8841a1 misc/winutils/include/libavutil/log.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/misc/winutils/include/libavutil/log.h Sun Oct 28 15:12:37 2012 +0100 @@ -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 6237d2f002ba -r 2bc61f8841a1 misc/winutils/include/libavutil/lzo.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/misc/winutils/include/libavutil/lzo.h Sun Oct 28 15:12:37 2012 +0100 @@ -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 6237d2f002ba -r 2bc61f8841a1 misc/winutils/include/libavutil/mathematics.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/misc/winutils/include/libavutil/mathematics.h Sun Oct 28 15:12:37 2012 +0100 @@ -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 6237d2f002ba -r 2bc61f8841a1 misc/winutils/include/libavutil/md5.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/misc/winutils/include/libavutil/md5.h Sun Oct 28 15:12:37 2012 +0100 @@ -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 6237d2f002ba -r 2bc61f8841a1 misc/winutils/include/libavutil/mem.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/misc/winutils/include/libavutil/mem.h Sun Oct 28 15:12:37 2012 +0100 @@ -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 6237d2f002ba -r 2bc61f8841a1 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 Sun Oct 28 15:12:37 2012 +0100 @@ -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 6237d2f002ba -r 2bc61f8841a1 misc/winutils/include/libavutil/opt.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/misc/winutils/include/libavutil/opt.h Sun Oct 28 15:12:37 2012 +0100 @@ -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 6237d2f002ba -r 2bc61f8841a1 misc/winutils/include/libavutil/parseutils.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/misc/winutils/include/libavutil/parseutils.h Sun Oct 28 15:12:37 2012 +0100 @@ -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 6237d2f002ba -r 2bc61f8841a1 misc/winutils/include/libavutil/pixdesc.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/misc/winutils/include/libavutil/pixdesc.h Sun Oct 28 15:12:37 2012 +0100 @@ -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 6237d2f002ba -r 2bc61f8841a1 misc/winutils/include/libavutil/pixfmt.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/misc/winutils/include/libavutil/pixfmt.h Sun Oct 28 15:12:37 2012 +0100 @@ -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 6237d2f002ba -r 2bc61f8841a1 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 Sun Oct 28 15:12:37 2012 +0100 @@ -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 6237d2f002ba -r 2bc61f8841a1 misc/winutils/include/libavutil/rational.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/misc/winutils/include/libavutil/rational.h Sun Oct 28 15:12:37 2012 +0100 @@ -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 6237d2f002ba -r 2bc61f8841a1 misc/winutils/include/libavutil/samplefmt.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/misc/winutils/include/libavutil/samplefmt.h Sun Oct 28 15:12:37 2012 +0100 @@ -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 6237d2f002ba -r 2bc61f8841a1 misc/winutils/include/libavutil/sha.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/misc/winutils/include/libavutil/sha.h Sun Oct 28 15:12:37 2012 +0100 @@ -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 6237d2f002ba -r 2bc61f8841a1 misc/winutils/include/libavutil/time.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/misc/winutils/include/libavutil/time.h Sun Oct 28 15:12:37 2012 +0100 @@ -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 6237d2f002ba -r 2bc61f8841a1 misc/winutils/include/libavutil/version.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/misc/winutils/include/libavutil/version.h Sun Oct 28 15:12:37 2012 +0100 @@ -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 6237d2f002ba -r 2bc61f8841a1 misc/winutils/include/libavutil/xtea.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/misc/winutils/include/libavutil/xtea.h Sun Oct 28 15:12:37 2012 +0100 @@ -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 6237d2f002ba -r 2bc61f8841a1 misc/winutils/include/png.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/misc/winutils/include/png.h Sun Oct 28 15:12:37 2012 +0100 @@ -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 6237d2f002ba -r 2bc61f8841a1 misc/winutils/include/pngconf.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/misc/winutils/include/pngconf.h Sun Oct 28 15:12:37 2012 +0100 @@ -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 6237d2f002ba -r 2bc61f8841a1 misc/winutils/include/zconf.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/misc/winutils/include/zconf.h Sun Oct 28 15:12:37 2012 +0100 @@ -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 6237d2f002ba -r 2bc61f8841a1 misc/winutils/include/zlib.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/misc/winutils/include/zlib.h Sun Oct 28 15:12:37 2012 +0100 @@ -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 6237d2f002ba -r 2bc61f8841a1 misc/winutils/lib/libavcodec.dll.a Binary file misc/winutils/lib/libavcodec.dll.a has changed diff -r 6237d2f002ba -r 2bc61f8841a1 misc/winutils/lib/libavformat.dll.a Binary file misc/winutils/lib/libavformat.dll.a has changed diff -r 6237d2f002ba -r 2bc61f8841a1 misc/winutils/lib/libavutil.dll.a Binary file misc/winutils/lib/libavutil.dll.a has changed diff -r 6237d2f002ba -r 2bc61f8841a1 project_files/Android-build/SDL-android-project/jni/SDL_mixer/Android.mk diff -r 6237d2f002ba -r 2bc61f8841a1 project_files/Android-build/gles11.pp --- a/project_files/Android-build/gles11.pp Sun Sep 16 23:52:36 2012 +0200 +++ b/project_files/Android-build/gles11.pp Sun Oct 28 15:12:37 2012 +0100 @@ -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 6237d2f002ba -r 2bc61f8841a1 project_files/HedgewarsMobile/Classes/MainMenuViewController.m --- a/project_files/HedgewarsMobile/Classes/MainMenuViewController.m Sun Sep 16 23:52:36 2012 +0200 +++ b/project_files/HedgewarsMobile/Classes/MainMenuViewController.m Sun Oct 28 15:12:37 2012 +0100 @@ -18,6 +18,7 @@ #import "MainMenuViewController.h" +#import #import "GameConfigViewController.h" #import "SettingsContainerViewController.h" #import "AboutViewController.h" @@ -125,13 +126,29 @@ scroll.text = debugStr; [debugStr release]; scroll.editable = NO; + scroll.alpha = 0; UIButton *btn = [UIButton buttonWithType:UIButtonTypeCustom]; [btn addTarget:scroll action:@selector(removeFromSuperview) forControlEvents:UIControlEventTouchUpInside]; + [btn addTarget:btn action:@selector(removeFromSuperview) forControlEvents:UIControlEventTouchUpInside]; + btn.frame = CGRectMake(self.view.frame.size.height-58, -6, 64, 64); btn.backgroundColor = [UIColor blackColor]; - btn.frame = CGRectMake(self.view.frame.size.height-70, 0, 70, 70); - [scroll addSubview:btn]; + btn.titleLabel.textColor = [UIColor whiteColor]; + btn.titleLabel.textAlignment = UITextAlignmentCenter; + btn.titleLabel.font = [UIFont boldSystemFontOfSize:[UIFont systemFontSize]]; + [btn setTitle:@"Close" forState:UIControlStateNormal]; + btn.alpha = 0; + [btn.layer setCornerRadius:10.0f]; + [btn.layer setMasksToBounds:YES]; + [self.view addSubview:scroll]; + [self.view addSubview:btn]; + + [UIView beginAnimations:@"fadein" context:NULL]; + [UIView setAnimationDuration:0.25f]; + btn.alpha = 1; + scroll.alpha = 1; + [UIView commitAnimations]; [scroll release]; #else debugStr = debugStr; // prevent compiler warning diff -r 6237d2f002ba -r 2bc61f8841a1 project_files/HedgewarsMobile/Hedgewars.xcodeproj/project.pbxproj --- a/project_files/HedgewarsMobile/Hedgewars.xcodeproj/project.pbxproj Sun Sep 16 23:52:36 2012 +0200 +++ b/project_files/HedgewarsMobile/Hedgewars.xcodeproj/project.pbxproj Sun Oct 28 15:12:37 2012 +0100 @@ -174,6 +174,9 @@ 61889985129995B500D55FD6 /* title~ipad.png in Resources */ = {isa = PBXBuildFile; fileRef = 61889984129995B500D55FD6 /* title~ipad.png */; }; 61915D5B143A4E2C00299991 /* MissionTrainingViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 61915D59143A4E2C00299991 /* MissionTrainingViewController.m */; }; 61915D5C143A4E2C00299991 /* MissionTrainingViewController-iPhone.xib in Resources */ = {isa = PBXBuildFile; fileRef = 61915D5A143A4E2C00299991 /* MissionTrainingViewController-iPhone.xib */; }; + 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 */; }; 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 */; }; @@ -184,10 +187,10 @@ 619C5BA2124FA59000D041AE /* MapPreviewButtonView.m in Sources */ = {isa = PBXBuildFile; fileRef = 619C5BA1124FA59000D041AE /* MapPreviewButtonView.m */; }; 61A1188511683A8C00359010 /* CoreGraphics.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 61A117FE1168322700359010 /* CoreGraphics.framework */; settings = {ATTRIBUTES = (Required, ); }; }; 61A19AFC14D20170004B1E6D /* libSDL2.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 61A19AEA14D2010A004B1E6D /* libSDL2.a */; }; - 61A19B7714D20B7A004B1E6D /* libSDL_image.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 61A19B6614D20B6C004B1E6D /* libSDL_image.a */; }; - 61A19BC714D20CE7004B1E6D /* libSDL_ttf.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 61A19BC614D20CDA004B1E6D /* libSDL_ttf.a */; }; - 61A19BFA14D20D95004B1E6D /* libSDL_net.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 61A19BF914D20D83004B1E6D /* libSDL_net.a */; }; - 61A19C2414D20F5A004B1E6D /* libSDL_mixer.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 61A19C2314D20F51004B1E6D /* libSDL_mixer.a */; }; + 61A19B7714D20B7A004B1E6D /* libSDL2_image.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 61A19B6614D20B6C004B1E6D /* libSDL2_image.a */; }; + 61A19BC714D20CE7004B1E6D /* libSDL2_ttf.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 61A19BC614D20CDA004B1E6D /* libSDL2_ttf.a */; }; + 61A19BFA14D20D95004B1E6D /* libSDL2_net.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 61A19BF914D20D83004B1E6D /* libSDL2_net.a */; }; + 61A19C2414D20F5A004B1E6D /* libSDL2_mixer.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 61A19C2314D20F51004B1E6D /* libSDL2_mixer.a */; }; 61A4A39412A5CCC2004D81E6 /* uCommandHandlers.pas in Sources */ = {isa = PBXBuildFile; fileRef = 61A4A38912A5CCC2004D81E6 /* uCommandHandlers.pas */; }; 61A4A39512A5CCC2004D81E6 /* uCommands.pas in Sources */ = {isa = PBXBuildFile; fileRef = 61A4A38A12A5CCC2004D81E6 /* uCommands.pas */; }; 61A4A39612A5CCC2004D81E6 /* uDebug.pas in Sources */ = {isa = PBXBuildFile; fileRef = 61A4A38B12A5CCC2004D81E6 /* uDebug.pas */; }; @@ -545,6 +548,9 @@ 61915D58143A4E2C00299991 /* MissionTrainingViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MissionTrainingViewController.h; sourceTree = ""; }; 61915D59143A4E2C00299991 /* MissionTrainingViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MissionTrainingViewController.m; sourceTree = ""; }; 61915D5A143A4E2C00299991 /* MissionTrainingViewController-iPhone.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = "MissionTrainingViewController-iPhone.xib"; sourceTree = ""; }; + 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; }; 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; }; @@ -644,10 +650,10 @@ 619599451364C83D00B429B6 /* libLua.a in Frameworks */, 6195981F1364BCEF00B429B6 /* libTremor.a in Frameworks */, 61A19AFC14D20170004B1E6D /* libSDL2.a in Frameworks */, - 61A19B7714D20B7A004B1E6D /* libSDL_image.a in Frameworks */, - 61A19C2414D20F5A004B1E6D /* libSDL_mixer.a in Frameworks */, - 61A19BFA14D20D95004B1E6D /* libSDL_net.a in Frameworks */, - 61A19BC714D20CE7004B1E6D /* libSDL_ttf.a in Frameworks */, + 61A19B7714D20B7A004B1E6D /* libSDL2_image.a in Frameworks */, + 61A19C2414D20F5A004B1E6D /* libSDL2_mixer.a in Frameworks */, + 61A19BFA14D20D95004B1E6D /* libSDL2_net.a in Frameworks */, + 61A19BC714D20CE7004B1E6D /* libSDL2_ttf.a in Frameworks */, 1D60589F0D05DD5A006BFB54 /* Foundation.framework in Frameworks */, 61A1188511683A8C00359010 /* CoreGraphics.framework in Frameworks */, 1DF5F4E00D08C38300B7A737 /* UIKit.framework in Frameworks */, @@ -979,7 +985,7 @@ 61A19B6214D20B6C004B1E6D /* Products */ = { isa = PBXGroup; children = ( - 61A19B6614D20B6C004B1E6D /* libSDL_image.a */, + 61A19B6614D20B6C004B1E6D /* libSDL2_image.a */, ); name = Products; sourceTree = ""; @@ -987,7 +993,7 @@ 61A19BC214D20CDA004B1E6D /* Products */ = { isa = PBXGroup; children = ( - 61A19BC614D20CDA004B1E6D /* libSDL_ttf.a */, + 61A19BC614D20CDA004B1E6D /* libSDL2_ttf.a */, ); name = Products; sourceTree = ""; @@ -995,7 +1001,7 @@ 61A19BF514D20D83004B1E6D /* Products */ = { isa = PBXGroup; children = ( - 61A19BF914D20D83004B1E6D /* libSDL_net.a */, + 61A19BF914D20D83004B1E6D /* libSDL2_net.a */, ); name = Products; sourceTree = ""; @@ -1003,7 +1009,7 @@ 61A19C1F14D20F51004B1E6D /* Products */ = { isa = PBXGroup; children = ( - 61A19C2314D20F51004B1E6D /* libSDL_mixer.a */, + 61A19C2314D20F51004B1E6D /* libSDL2_mixer.a */, ); name = Products; sourceTree = ""; @@ -1127,6 +1133,9 @@ 9283015C0F10E48900CC5A3C /* Pascal Sources */ = { isa = PBXGroup; children = ( + 619349C5160BAF3E00A08518 /* uAILandMarks.pas */, + 619349C6160BAF3E00A08518 /* uGearsHandlers.pas */, + 619349C7160BAF3E00A08518 /* uGearsHandlersRope.pas */, 615BE3D3155C5DDF003CA34D /* uInputHandler.pas */, 61798892114AA56300BA94A9 /* inc */, 61D08D7114AEA7FE0007C078 /* uGearsHedgehog.pas */, @@ -1332,31 +1341,31 @@ remoteRef = 61A19AEB14D2010A004B1E6D /* PBXContainerItemProxy */; sourceTree = BUILT_PRODUCTS_DIR; }; - 61A19B6614D20B6C004B1E6D /* libSDL_image.a */ = { + 61A19B6614D20B6C004B1E6D /* libSDL2_image.a */ = { isa = PBXReferenceProxy; fileType = archive.ar; - path = libSDL_image.a; + path = libSDL2_image.a; remoteRef = 61A19B6514D20B6C004B1E6D /* PBXContainerItemProxy */; sourceTree = BUILT_PRODUCTS_DIR; }; - 61A19BC614D20CDA004B1E6D /* libSDL_ttf.a */ = { + 61A19BC614D20CDA004B1E6D /* libSDL2_ttf.a */ = { isa = PBXReferenceProxy; fileType = archive.ar; - path = libSDL_ttf.a; + path = libSDL2_ttf.a; remoteRef = 61A19BC514D20CDA004B1E6D /* PBXContainerItemProxy */; sourceTree = BUILT_PRODUCTS_DIR; }; - 61A19BF914D20D83004B1E6D /* libSDL_net.a */ = { + 61A19BF914D20D83004B1E6D /* libSDL2_net.a */ = { isa = PBXReferenceProxy; fileType = archive.ar; - path = libSDL_net.a; + path = libSDL2_net.a; remoteRef = 61A19BF814D20D83004B1E6D /* PBXContainerItemProxy */; sourceTree = BUILT_PRODUCTS_DIR; }; - 61A19C2314D20F51004B1E6D /* libSDL_mixer.a */ = { + 61A19C2314D20F51004B1E6D /* libSDL2_mixer.a */ = { isa = PBXReferenceProxy; fileType = archive.ar; - path = libSDL_mixer.a; + path = libSDL2_mixer.a; remoteRef = 61A19C2214D20F51004B1E6D /* PBXContainerItemProxy */; sourceTree = BUILT_PRODUCTS_DIR; }; @@ -1620,6 +1629,9 @@ 615E76BD14E4421200FBA131 /* MGSplitDividerView.m in Sources */, 615E76BE14E4421200FBA131 /* MGSplitViewController.m in Sources */, 615BE3D4155C5DDF003CA34D /* uInputHandler.pas in Sources */, + 619349C8160BAF3E00A08518 /* uAILandMarks.pas in Sources */, + 619349C9160BAF3E00A08518 /* uGearsHandlers.pas in Sources */, + 619349CA160BAF3E00A08518 /* uGearsHandlersRope.pas in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; diff -r 6237d2f002ba -r 2bc61f8841a1 project_files/hedgewars.pro --- a/project_files/hedgewars.pro Sun Sep 16 23:52:36 2012 +0200 +++ b/project_files/hedgewars.pro Sun Oct 28 15:12:37 2012 +0100 @@ -9,15 +9,9 @@ INCLUDEPATH += ../QTfrontend/ui/dialog INCLUDEPATH += ../QTfrontend/net INCLUDEPATH += ../QTfrontend/util -INCLUDEPATH += /usr/local/include/SDL -INCLUDEPATH += /usr/include/SDL INCLUDEPATH += ../misc/quazip/ -DESTDIR = . - -win32 { - RC_FILE = ../QTfrontend/hedgewars.rc -} +DESTDIR = ../bin QT += network QT += webkit @@ -110,7 +104,8 @@ ../QTfrontend/net/recorder.h \ ../QTfrontend/ui/dialog/ask_quit.h \ ../QTfrontend/ui/dialog/upload_video.h \ - ../QTfrontend/campaign.h + ../QTfrontend/campaign.h \ + ../QTfrontend/model/playerslistmodel.h SOURCES += ../QTfrontend/model/ammoSchemeModel.cpp \ ../QTfrontend/model/MapModel.cpp \ @@ -198,45 +193,40 @@ ../QTfrontend/net/recorder.cpp \ ../QTfrontend/ui/dialog/ask_quit.cpp \ ../QTfrontend/ui/dialog/upload_video.cpp \ - ../QTfrontend/campaign.cpp + ../QTfrontend/campaign.cpp \ + ../QTfrontend/model/playerslistmodel.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 +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../misc/quazip -lquazip +LIBS += -L../bin -lquazip -!macx { - LIBS += -lSDL -lSDL_mixer -} else { +macx { QMAKE_MACOSX_DEPLOYMENT_TARGET = 10.6 QMAKE_MAC_SDK=/Developer/SDKs/MacOSX10.6.sdk @@ -254,4 +244,18 @@ #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 6237d2f002ba -r 2bc61f8841a1 share/hedgewars/Data/Graphics/AmmoMenu/Ammos.png Binary file share/hedgewars/Data/Graphics/AmmoMenu/Ammos.png has changed diff -r 6237d2f002ba -r 2bc61f8841a1 share/hedgewars/Data/Graphics/AmmoMenu/Ammos_bw.png Binary file share/hedgewars/Data/Graphics/AmmoMenu/Ammos_bw.png has changed diff -r 6237d2f002ba -r 2bc61f8841a1 share/hedgewars/Data/Graphics/ExplPart.png Binary file share/hedgewars/Data/Graphics/ExplPart.png has changed diff -r 6237d2f002ba -r 2bc61f8841a1 share/hedgewars/Data/Graphics/ExplPart2.png Binary file share/hedgewars/Data/Graphics/ExplPart2.png has changed diff -r 6237d2f002ba -r 2bc61f8841a1 share/hedgewars/Data/Graphics/Flags/cm_soviet.png Binary file share/hedgewars/Data/Graphics/Flags/cm_soviet.png has changed diff -r 6237d2f002ba -r 2bc61f8841a1 share/hedgewars/Data/Graphics/Hats/Reserved/chef.png Binary file share/hedgewars/Data/Graphics/Hats/Reserved/chef.png has changed diff -r 6237d2f002ba -r 2bc61f8841a1 share/hedgewars/Data/Graphics/Hedgehog.png Binary file share/hedgewars/Data/Graphics/Hedgehog.png has changed diff -r 6237d2f002ba -r 2bc61f8841a1 share/hedgewars/Data/Graphics/Hedgehog/amCleaver.png Binary file share/hedgewars/Data/Graphics/Hedgehog/amCleaver.png has changed diff -r 6237d2f002ba -r 2bc61f8841a1 share/hedgewars/Data/Graphics/Hedgehog/amKnife.png Binary file share/hedgewars/Data/Graphics/Hedgehog/amKnife.png has changed diff -r 6237d2f002ba -r 2bc61f8841a1 share/hedgewars/Data/Graphics/cleaver.png Binary file share/hedgewars/Data/Graphics/cleaver.png has changed diff -r 6237d2f002ba -r 2bc61f8841a1 share/hedgewars/Data/Graphics/cleaver.svg --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/share/hedgewars/Data/Graphics/cleaver.svg Sun Oct 28 15:12:37 2012 +0100 @@ -0,0 +1,172 @@ + + + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + diff -r 6237d2f002ba -r 2bc61f8841a1 share/hedgewars/Data/Graphics/knife.png Binary file share/hedgewars/Data/Graphics/knife.png has changed diff -r 6237d2f002ba -r 2bc61f8841a1 share/hedgewars/Data/Graphics/knife.svg --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/share/hedgewars/Data/Graphics/knife.svg Sun Oct 28 15:12:37 2012 +0100 @@ -0,0 +1,365 @@ + + + + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff -r 6237d2f002ba -r 2bc61f8841a1 share/hedgewars/Data/Graphics/star.png Binary file share/hedgewars/Data/Graphics/star.png has changed diff -r 6237d2f002ba -r 2bc61f8841a1 share/hedgewars/Data/Locale/cs.lua --- a/share/hedgewars/Data/Locale/cs.lua Sun Sep 16 23:52:36 2012 +0200 +++ b/share/hedgewars/Data/Locale/cs.lua Sun Oct 28 15:12:37 2012 +0100 @@ -2,156 +2,592 @@ [":("] = ":(", ["!!!"] = "!!!", ["..."] = "...", +-- ["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 +-- ["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 +-- ["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 +-- ["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 ["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"] = "", ["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 ["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 +-- ["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!"] = "", +-- ["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ů!", ["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 ["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 +-- ["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]", +-- [" 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 +-- ["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"] = "Oheň", +-- ["First aid kits?!"] = "", -- A_Classic_Fairytale:united +-- ["First Blood"] = "", -- A_Classic_Fairytale:first_blood +-- ["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 +-- ["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 +-- ["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 +-- ["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", +-- ["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 ["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...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 +-- ["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 ["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!"] = "", -- ["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 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"] = "", +-- ["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 +-- ["May the spirits aid you in all your quests!"] = "", -- A_Classic_Fairytale:backstab +-- ["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Á", +-- ["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 +-- ["Nade Boy"] = "", -- Basic_Training_-_Grenade +-- ["Name"] = "", -- A_Classic_Fairytale:queen ["Nameless Heroes"] = "Bezejmenní hrdinové", +-- ["Nancy Screw"] = "", -- A_Classic_Fairytale:enemy, A_Classic_Fairytale:queen +-- ["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 +-- ["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 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 ["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", +-- ["Pfew! That was close!"] = "", -- A_Classic_Fairytale:shadow +-- ["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 ["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 +-- ["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"] = "SKÓRE", ["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 +-- ["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 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", @@ -165,56 +601,319 @@ -- ["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!"] = "", -- Space_Invasion ["Sniper Training"] = "Odstřelovací trénink", ["Sniperz"] = "Snajpři", +-- ["So humiliating..."] = "", -- A_Classic_Fairytale:first_blood +-- ["So? What will it be?"] = "", -- A_Classic_Fairytale:shadow +-- ["Spawn the crate, and attack!"] = "", -- WxW +-- ["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 +-- ["Stronglings"] = "", -- A_Classic_Fairytale:shadow +-- ["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 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!"] = "", +-- ["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 +-- ["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 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 this ever end?"] = "", ["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 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 ["'Zooka Team"] = "Bazukáři", +-- ["Zork"] = "", -- A_Classic_Fairytale:dragon, A_Classic_Fairytale:family, A_Classic_Fairytale:queen } diff -r 6237d2f002ba -r 2bc61f8841a1 share/hedgewars/Data/Locale/da.lua --- a/share/hedgewars/Data/Locale/da.lua Sun Sep 16 23:52:36 2012 +0200 +++ b/share/hedgewars/Data/Locale/da.lua Sun Oct 28 15:12:37 2012 +0100 @@ -2,158 +2,592 @@ [":("] = ":(", ["!!!"] = "!!!", ["..."] = "...", +-- ["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 +-- ["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 +-- ["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 +-- ["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 ["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", ["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 ["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 +-- ["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!", +-- ["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!", ["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 ["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 +-- ["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]", +-- [" 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 +-- ["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"] = "Skyd", +-- ["First aid kits?!"] = "", -- A_Classic_Fairytale:united +-- ["First Blood"] = "", -- A_Classic_Fairytale:first_blood +-- ["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 +-- ["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 +-- ["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 +-- ["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", +-- ["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 ["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...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 +-- ["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 ["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!", ["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 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", +-- ["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 +-- ["May the spirits aid you in all your quests!"] = "", -- A_Classic_Fairytale:backstab +-- ["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 +-- ["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 +-- ["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 +-- ["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 +-- ["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 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 ["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", +-- ["Pfew! That was close!"] = "", -- A_Classic_Fairytale:shadow +-- ["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 ["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 +-- ["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"] = "SCORE", ["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 +-- ["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 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!", @@ -167,54 +601,319 @@ ["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!"] = "", -- Space_Invasion ["Sniper Training"] = "Træning med Sniperriffel", ["Sniperz"] = "Sniperz", +-- ["So humiliating..."] = "", -- A_Classic_Fairytale:first_blood +-- ["So? What will it be?"] = "", -- A_Classic_Fairytale:shadow +-- ["Spawn the crate, and attack!"] = "", -- WxW +-- ["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 +-- ["Stronglings"] = "", -- A_Classic_Fairytale:shadow +-- ["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 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!", +-- ["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 +-- ["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 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 this ever end?"] = "Slutter det her nogensinde?", ["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 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 ["'Zooka Team"] = "'Zooka-hold", +-- ["Zork"] = "", -- A_Classic_Fairytale:dragon, A_Classic_Fairytale:family, A_Classic_Fairytale:queen } diff -r 6237d2f002ba -r 2bc61f8841a1 share/hedgewars/Data/Locale/de.lua --- a/share/hedgewars/Data/Locale/de.lua Sun Sep 16 23:52:36 2012 +0200 +++ b/share/hedgewars/Data/Locale/de.lua Sun Oct 28 15:12:37 2012 +0100 @@ -2,159 +2,596 @@ -- [":("] = "", -- ["!!!"] = "", -- ["..."] = "", +-- ["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 +-- ["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 +-- ["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 +-- ["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 ["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", ["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 ["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 +-- ["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!"] = "", +-- ["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!"] = "", ["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 ["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 +-- ["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]"] = "", +-- [" 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 +-- ["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"] = "Feuer", +-- ["First aid kits?!"] = "", -- A_Classic_Fairytale:united +-- ["First Blood"] = "", -- A_Classic_Fairytale:first_blood +-- ["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 +-- ["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 +-- ["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 +-- ["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!", +-- ["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 ["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...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 +-- ["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 ["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!", ["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 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"] = "", +-- ["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 +-- ["May the spirits aid you in all your quests!"] = "", -- A_Classic_Fairytale:backstab +-- ["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", +-- ["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 +-- ["Nade Boy"] = "", -- Basic_Training_-_Grenade +-- ["Name"] = "", -- A_Classic_Fairytale:queen ["Nameless Heroes"] = "Namenlose Helden", +-- ["Nancy Screw"] = "", -- A_Classic_Fairytale:enemy, A_Classic_Fairytale:queen +-- ["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 +-- ["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 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 ["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", +-- ["Pfew! That was close!"] = "", -- A_Classic_Fairytale:shadow +-- ["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 ["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|"] = "", +-- ["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"] = "", -- Space_Invasion -- ["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 +-- ["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 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!", @@ -168,55 +605,319 @@ ["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!"] = "", -- Space_Invasion ["Sniper Training"] = "Scharfschützen-Training", ["Sniperz"] = "Heckenschützen", +-- ["So humiliating..."] = "", -- A_Classic_Fairytale:first_blood +-- ["So? What will it be?"] = "", -- A_Classic_Fairytale:shadow +-- ["Spawn the crate, and attack!"] = "", -- WxW + ["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 +-- ["Stronglings"] = "", -- A_Classic_Fairytale:shadow +-- ["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 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", +-- ["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 +-- ["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 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 this ever end?"] = "Wird dies je enden?", ["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 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 ["'Zooka Team"] = "Die Knalltüten", +-- ["Zork"] = "", -- A_Classic_Fairytale:dragon, A_Classic_Fairytale:family, A_Classic_Fairytale:queen } diff -r 6237d2f002ba -r 2bc61f8841a1 share/hedgewars/Data/Locale/de.txt --- a/share/hedgewars/Data/Locale/de.txt Sun Sep 16 23:52:36 2012 +0200 +++ b/share/hedgewars/Data/Locale/de.txt Sun Oct 28 15:12:37 2012 +0100 @@ -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 6237d2f002ba -r 2bc61f8841a1 share/hedgewars/Data/Locale/en.txt --- a/share/hedgewars/Data/Locale/en.txt Sun Sep 16 23:52:36 2012 +0200 +++ b/share/hedgewars/Data/Locale/en.txt Sun Oct 28 15:12:37 2012 +0100 @@ -57,6 +57,7 @@ 00:54=Structure 00:55=Land Spray 00:56=Freezer +00:57=Cleaver 01:00=Let's fight! 01:01=Round draw diff -r 6237d2f002ba -r 2bc61f8841a1 share/hedgewars/Data/Locale/es.lua --- a/share/hedgewars/Data/Locale/es.lua Sun Sep 16 23:52:36 2012 +0200 +++ b/share/hedgewars/Data/Locale/es.lua Sun Oct 28 15:12:37 2012 +0100 @@ -1,159 +1,593 @@ 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 +-- ["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 +-- ["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 +-- ["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 ["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", ["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 ["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 +-- ["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!", +-- ["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", ["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 ["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 +-- ["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]", +-- [" 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 +-- ["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"] = "Fuego", +-- ["First aid kits?!"] = "", -- A_Classic_Fairytale:united +-- ["First Blood"] = "", -- A_Classic_Fairytale:first_blood +-- ["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 +-- ["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 +-- ["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 +-- ["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", +-- ["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 ["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...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 +-- ["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 ["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í!", ["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 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", +-- ["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 +-- ["May the spirits aid you in all your quests!"] = "", -- A_Classic_Fairytale:backstab +-- ["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 +-- ["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 +-- ["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 +-- ["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 +-- ["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 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 ["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", +-- ["Pfew! That was close!"] = "", -- A_Classic_Fairytale:shadow +-- ["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 ["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 +-- ["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"] = "PUNTUACIÓN", ["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 +-- ["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 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!", @@ -167,54 +601,319 @@ ["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!"] = "", -- Space_Invasion ["Sniper Training"] = "Entrenamiento con rifle francotirador", ["Sniperz"] = "Francotiradores", +-- ["So humiliating..."] = "", -- A_Classic_Fairytale:first_blood +-- ["So? What will it be?"] = "", -- A_Classic_Fairytale:shadow +-- ["Spawn the crate, and attack!"] = "", -- WxW +-- ["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 +-- ["Stronglings"] = "", -- A_Classic_Fairytale:shadow +-- ["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 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!", +-- ["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 +-- ["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 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 this ever end?"] = "¿Es que nunca se va a terminar?", ["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 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 ["'Zooka Team"] = "Bazuqueros", +-- ["Zork"] = "", -- A_Classic_Fairytale:dragon, A_Classic_Fairytale:family, A_Classic_Fairytale:queen } diff -r 6237d2f002ba -r 2bc61f8841a1 share/hedgewars/Data/Locale/fr.lua --- a/share/hedgewars/Data/Locale/fr.lua Sun Sep 16 23:52:36 2012 +0200 +++ b/share/hedgewars/Data/Locale/fr.lua Sun Oct 28 15:12:37 2012 +0100 @@ -1,220 +1,1183 @@ locale = { + ["???"] = "???", + ["..."] = "...", + ["..."] = "...", -- [":("] = "", -- ["!!!"] = "", -- ["..."] = "", --- ["Accuracy Bonus!"] = "", --- ["Achievement Unlocked"] = "", -- User_Mission_-_Bamboo_Thicket, User_Mission_-_That_Sinking_Feeling, Tumbler --- ["a Hedgewars mini-game"] = "", -- Space_Invasion, The_Specialists + ["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", + ["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", + ["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"] = "", --- ["Ammo Depleted!"] = "", --- ["ammo extended!"] = "", --- ["Ammo is reset at the end of your turn."] = "", --- ["Ammo Maniac!"] = "", --- ["Available points remaining: "] = "", --- ["[Backspace]"] = "", --- ["Bamboo Thicket"] = "", --- ["Barrel Eater!"] = "", --- ["Barrel Launcher"] = "", + ["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 !", + ["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 + ["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 + ["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 ["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 --- ["Boom!"] = "", --- ["BOOM!"] = "", --- ["Boss defeated!"] = "", --- ["Boss Slayer!"] = "", --- ["Build a track and race."] = "", + ["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"] = "", --- ["Change Weapon"] = "", --- ["Clumsy"] = "", + ["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", --- ["Complete the track as fast as you can!"] = "", + ["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 ["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"] = "", --- ["Demolition is fun!"] = "", --- ["Depleted Kamikaze!"] = "", --- ["Destroy invaders to score points."] = "", --- ["Double Kill!"] = "", --- ["Drone Hunter!"] = "", --- ["Drowner"] = "", --- ["Each turn you get 1-3 random weapons"] = "", --- ["Each turn you get one random weapon"] = "", +-- ["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 !", +-- ["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", + ["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", +-- ["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!"] = "", + ["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"] = "", + ["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"] = "", -- User_Mission_-_Bamboo_Thicket, User_Mission_-_Newton_and_the_Hammock --- ["Eliminate the enemy hogs to win."] = "", --- ["Eliminate the enemy specialists."] = "", + ["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]"] = "", +-- [" 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", + = "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"] = "", + ["First aid kits?!"] = "Des kits de premiers secours ?!", + ["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."] = "", + ["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"] = "", + ["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!"] = "", --- ["GAME BEGUN!!!"] = "", + ["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 ?!", + ["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!"] = "", --- ["GOTCHA!"] = "", --- ["Grab Mines/Explosives"] = "", + ["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.", + ["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, now THAT would be something!"] = "", + ["Haha!"] = "Haha !", + ["HAHA!"] = "HAHA !", + ["Haha, now THAT would be something!"] = "Haha, maintenant CA va être quelquechose !", + ["Hannibal"] = "Hannibal", -- ["Hapless Hogs"] = "", -- [" Hapless Hogs left!"] = "", --- ["Health crates extend your time."] = "", + ["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"] = "", -- ["Hedgewars-Basketball"] = "", -- ["Hedgewars-Knockball"] = "", --- ["Heh, it's not that bad."] = "", + ["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...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"] = "", + ["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 ...", ["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 --- ["invaders destroyed"] = "", --- ["It's a good thing SUDDEN DEATH is 99 turns away..."] = "", --- ["Jumping is disabled"] = "", + ["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!"] = "", --- ["Killing spree!"] = "", --- ["KILLS"] = "", --- ["Last Target!"] = "", --- ["[Left Shift]"] = "", + ["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 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"] = "", + ["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", + ["May the spirits aid you in all your quests!"] = "Puisse les esprits t'aider dans tes quêtes !", + ["Meiwes"] = "", + ["Mindy"] = "", -- ["Mine Deployer"] = "", --- ["Mine Eater!"] = "", + ["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 SUCCESS"] = "", ["MISSION SUCCESSFUL"] = "Mission réussie", -- User_Mission_-_Diver, User_Mission_-_Spooky_Tree, User_Mission_-_Teamwork --- ["Movement: [Up], [Down], [Left], [Right]"] = "", + ["MISSION SUCCESS"] = "SUCCES DE LA MISSION", + ["More Natives"] = "More Natives", + ["Movement: [Up], [Down], [Left], [Right]"] = "Mouvement: [haut], [bas], [gauche], [droite]", -- ["Multi-shot!"] = "", --- ["Nameless Heroes"] = "", --- ["New Barrels Per Turn"] = "", + ["Muriel"] = "", + ["Muriel"] = "", + ["Muriel"] = "", + ["Muriel"] = "", + ["Muscle Dissolver"] = "Muscle Dissolver", +-- ["Nade Boy"] = "", -- Basic_Training_-_Grenade + ["Name"] = "", + ["Nameless Heroes"] = "Heros sans noms", + ["Nancy Screw"] = "", + ["Nancy Screw"] = "", + ["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"] = "", --- ["NEW RACE RECORD: "] = "", --- ["Newton's Hammock"] = "", --- ["NOT ENOUGH WAYPOINTS"] = "", + ["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 !", +-- ["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 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 !", ["Pathetic Hog #%d"] = "Hérisson pathétique #%d", -- ["Pathetic Resistance"] = "", -- User_Mission_-_Bamboo_Thicket, User_Mission_-_Newton_and_the_Hammock --- ["Per-Hog Ammo"] = "", --- ["Place more waypoints using [ENTER]"] = "", --- ["Place more waypoints using the 'Air Attack' weapon."] = "", + ["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", + ["Pfew! That was close!"] = "Ouf! C'est pas passé loin !", + ["Pfew! That was close!"] = "Ouf ! C'étais pas loin !", +-- ["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 ", -- ["Power Remaining"] = "", --- ["Prepare yourself"] = "", --- ["Press [Precise] to skip intro"] = "", + ["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|"] = "", + ["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"] = "", -- ["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 +-- ["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 difficulty: [Left] - easier or [Right] - harder"] = "Choisis la difficulté : [Gauche] : plus facile, ou [Droite] : plus dur", -- ["selected!"] = "", -- ["s"] = "", -- GaudyRacer, Space_Invasion --- ["Shield boosted! +30 power"] = "", --- ["Shield Depleted"] = "", --- ["Shield is fully recharged!"] = "", --- ["Shield Master!"] = "", --- ["Shield Miser!"] = "", --- ["Shield OFF:"] = "", --- ["Shield ON:"] = "", + ["... 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!", + ["Shield Master!"] = "Bouclier master", + ["Shield Miser!"] = "", + ["Shield OFF:"] = "bouclier OFF", + ["Shield ON:"] = "Bouclier ON", -- ["Shield Seeker!"] = "", ["Shotgun Team"] = "Équipe de choc", ["Shotgun Training"] = "Entrainement au fusil", --- ["shots remaining."] = "", + ["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 + ["Slippery"] = "Glissant", + ["Smith 0.97"] = "", + ["Smith 0.98"] = "", + ["Smith 0.99a"] = "", + ["Smith 0.99b"] = "", + ["Smith 0.99f"] = "", + ["Smith 1.0"] = "", +-- ["Sniper!"] = "", -- Space_Invasion ["Sniper Training"] = "Entrainement au fusil de sniper", --- ["Sniperz"] = "", --- ["Sponge"] = "", + ["Sniperz"] = "Snipers", + ["So humiliating..."] = "Si humiliant...", + ["So? What will it be?"] = "Alors ? Qu'est ce que ce sera ?", +-- ["Spawn the crate, and attack!"] = "", -- WxW + ["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"] = "", + ["Stronglings"] = "Stronglings", +-- ["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 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 Nameless One"] = "", + ["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"] = "", --- ["This one's tricky."] = "", --- ["This rain is really something..."] = "", --- ["TIME: "] = "", + ["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 !", + ["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 !", + ["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"] = "", --- ["TRACK FAILED!"] = "", + ["TRACK COMPLETED"] = "COURSE COMPLETEE", + ["TRACK FAILED!"] = "COURSE RATEE", + ["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.", + ["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"] = "", --- ["Unlimited Attacks"] = "", + ["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 --- ["Waypoint placed."] = "", --- ["Way-Points Remaining"] = "", --- ["Weapons Reset"] = "", + ["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 !", + ["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 !", + ["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.", + ["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 !", + ["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 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 this ever end?"] = "", --- ["WINNING TIME: "] = "", + ["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!"] = "", + ["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 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!"] = "", + ["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 !", -- ["'Zooka Team"] = "", + ["Zork"] = "", + ["Zork"] = "", + ["Zork"] = "", } diff -r 6237d2f002ba -r 2bc61f8841a1 share/hedgewars/Data/Locale/hedgewars_ar.ts --- a/share/hedgewars/Data/Locale/hedgewars_ar.ts Sun Sep 16 23:52:36 2012 +0200 +++ b/share/hedgewars/Data/Locale/hedgewars_ar.ts Sun Oct 28 15:12:37 2012 +0100 @@ -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 @@ -86,22 +63,6 @@ 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. @@ -1063,18 +911,42 @@ Reset to default colors + + Proxy host + + + + Proxy port + + + + Proxy login + + + + Proxy password + + + + No proxy + + + + Socks5 proxy + + + + HTTP proxy + + + + System proxy settings + + PagePlayDemo - Error - خطأ - - - OK - OK - - Rename dialog تغيير الشباك @@ -1082,18 +954,6 @@ Enter new file name: ادخل اسم الملف - - Cannot rename to - لا استطيع التغيير الى - - - Cannot delete file - لا استطيع حذف الملف - - - Please select record from the list - اختر المقطع من القائمة - PageRoomsList @@ -1106,18 +966,6 @@ انضم - Refresh - تحديث - - - Error - خطأ - - - OK - OK - - Admin features الادارة @@ -1126,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: @@ -1202,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 @@ -1234,10 +1012,6 @@ الارض لا يمكن ان تدمر - Add an indestructable border around the terrain - اضف اطار لا يمكن تدميره - - Lower gravity جاذبية قليلة @@ -1250,10 +1024,6 @@ كل اللاعبين لهم حقل قوى - Enable random mines - فعل الالغام العشوائية - - Gain 80% of the damage you do back in health احصل على 80% من التدمير في صحتك @@ -1372,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 @@ -1485,21 +1235,6 @@ - Are you sure? - - - - Do you really want do remove %1? - - - - Do you really want do remove %1 file(s)? - - - - - - encoding @@ -1507,10 +1242,6 @@ uploading - - Do you really want do cancel uploading %1? - - QAction @@ -1598,10 +1329,6 @@ اضف التاريخ و اليوم الى الملف - Reduced quality - قلل الجودة - - Show ammo menu tooltips اضهر قوائم للعتاد @@ -1681,10 +1408,6 @@ - Default - التلقائي - - hand drawn map... @@ -1772,10 +1495,6 @@ فرق - Weapons - اسلحة - - Audio/Graphic options قوائم الصوتيات و المرئيات @@ -1827,6 +1546,10 @@ Description + + Proxy settings + + QLabel @@ -1843,10 +1566,6 @@ نسخة - This program is distributed under the GNU General Public License - This program is distributed under the GNU General Public License - - Developers: المطورون @@ -1879,10 +1598,6 @@ Port: - Net nick - اسم اللاعب - - Resolution الوضوح @@ -1959,10 +1674,6 @@ محلي - Restart game to apply - اعد تشغيل اللعبة لتفعيل التغيير - - Explosives متفجرات @@ -2011,10 +1722,6 @@ - Password - كلمة السر - - % Get Away Time @@ -2110,10 +1817,6 @@ QMessageBox - Network - شبكة - - Connection to server is lost ضاع الاتصال للخادم @@ -2122,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: @@ -2219,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.come 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 اسم اللاعب @@ -2343,37 +2149,6 @@ - QTableWidget - - Room Name - اسم الغرقة - - - C - C - - - T - T - - - Owner - المالك - - - Map - خارطة - - - Rules - قوانين - - - Weapons - اسلحة - - - RoomsListModel In progress @@ -2448,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 @@ -2505,10 +2265,6 @@ غير قابل للتدمير - Add Mines - اضف الغام - - Random Order توزيع عشوائي diff -r 6237d2f002ba -r 2bc61f8841a1 share/hedgewars/Data/Locale/hedgewars_bg.ts --- a/share/hedgewars/Data/Locale/hedgewars_bg.ts Sun Sep 16 23:52:36 2012 +0200 +++ b/share/hedgewars/Data/Locale/hedgewars_bg.ts Sun Oct 28 15:12:37 2012 +0100 @@ -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 Когато тази настройка е включена, при избирането на игрова схема автоматично ще се избере оръжие @@ -85,22 +62,6 @@ 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 @@ -1039,18 +913,42 @@ Reset to default colors + + Proxy host + + + + Proxy port + + + + Proxy login + + + + Proxy password + + + + No proxy + + + + Socks5 proxy + + + + HTTP proxy + + + + System proxy settings + + PagePlayDemo - Error - Грешка - - - OK - ОК - - Rename dialog Преименуване @@ -1058,18 +956,6 @@ Enter new file name: Въведете ново име на файл: - - Cannot rename to - Не може да се преименува в - - - Cannot delete file - Файлът не може да се изтрие - - - Please select record from the list - Изберете запис от списъка - PageRoomsList @@ -1082,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: Правила: @@ -1165,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 @@ -1328,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 @@ -1445,21 +1237,6 @@ - Are you sure? - - - - Do you really want do remove %1? - - - - Do you really want do remove %1 file(s)? - - - - - - encoding @@ -1467,10 +1244,6 @@ uploading - - Do you really want do cancel uploading %1? - - QAction @@ -1637,10 +1410,6 @@ В прогрес - Default - По подразбиране - - hand drawn map... Ръчно нарисувана карта... @@ -1748,10 +1517,6 @@ Мрежова игра - Weapons - Оръжия - - Team Settings Настройки на отборите @@ -1783,6 +1548,10 @@ Description + + Proxy settings + + QLabel @@ -1823,14 +1592,6 @@ Име на схемата: - Net nick - Прякор - - - This program is distributed under the GNU General Public License - Тази програма се разпространява под GNU (the GNU General Public License) лиценз - - Resolution Разделителна способност @@ -1915,10 +1676,6 @@ Локал - Restart game to apply - Рестартирайте играта за да влезе в сила - - Explosives Експлозиви @@ -1955,10 +1712,6 @@ % Дължина на въжето - Gameplay - Геймплей - - Stereo rendering Стерео режим @@ -1971,10 +1724,6 @@ - Password - Парола - - % Get Away Time @@ -2074,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: @@ -2179,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.come 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 Прякор @@ -2303,37 +2152,6 @@ - QTableWidget - - Room Name - Име на стаята - - - C - C - - - T - T - - - Owner - Притежател - - - Map - Карта - - - Rules - Правила - - - Weapons - Оръжия - - - RoomsListModel In progress @@ -2408,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 6237d2f002ba -r 2bc61f8841a1 share/hedgewars/Data/Locale/hedgewars_cs.ts --- a/share/hedgewars/Data/Locale/hedgewars_cs.ts Sun Sep 16 23:52:36 2012 +0200 +++ b/share/hedgewars/Data/Locale/hedgewars_cs.ts Sun Oct 28 15:12:37 2012 +0100 @@ -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 @@ -86,22 +63,6 @@ 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 @@ -1051,18 +920,42 @@ Reset to default colors + + Proxy host + + + + Proxy port + + + + Proxy login + + + + Proxy password + + + + No proxy + + + + Socks5 proxy + + + + HTTP proxy + + + + System proxy settings + + PagePlayDemo - Error - Chyba - - - OK - OK - - Rename dialog Přejmenovávací dialog @@ -1070,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 @@ -1094,18 +975,6 @@ Připojit se - Refresh - Obnovit - - - Error - Chyba - - - OK - OK - - Admin features Možnosti správce @@ -1114,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: @@ -1193,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 @@ -1235,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 @@ -1361,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 @@ -1479,22 +1246,6 @@ - Are you sure? - - - - Do you really want do remove %1? - - - - Do you really want do remove %1 file(s)? - - - - - - - encoding @@ -1502,10 +1253,6 @@ uploading - - Do you really want do cancel uploading %1? - - QAction @@ -1672,10 +1419,6 @@ Probíhá - Default - Základní - - hand drawn map... ručně kreslená mapa... @@ -1763,10 +1506,6 @@ Týmy - Weapons - Zbraně - - Audio/Graphic options Nastavení audio/video @@ -1818,6 +1557,10 @@ Description + + Proxy settings + + QLabel @@ -1826,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: @@ -1862,10 +1601,6 @@ Port: - Net nick - Síťová přezdívka - - Resolution Rozlišení @@ -1950,10 +1685,6 @@ Jazyk - Restart game to apply - Aby se nastavení použilo, restartuj hru - - Explosives Výbušniny @@ -1990,10 +1721,6 @@ % délky lana - Gameplay - Hra - - Stereo rendering Duální vykreslování @@ -2006,10 +1733,6 @@ - Password - Heslo - - % Get Away Time @@ -2105,10 +1828,6 @@ QMessageBox - Network - Síť - - Connection to server is lost Spojení se serverem ztraceno @@ -2117,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: @@ -2214,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.come 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 @@ -2338,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 @@ -2443,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 6237d2f002ba -r 2bc61f8841a1 share/hedgewars/Data/Locale/hedgewars_de.ts --- a/share/hedgewars/Data/Locale/hedgewars_de.ts Sun Sep 16 23:52:36 2012 +0200 +++ b/share/hedgewars/Data/Locale/hedgewars_de.ts Sun Oct 28 15:12:37 2012 +0100 @@ -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 @@ -79,28 +56,12 @@ HWAskQuitDialog Do yot 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,28 +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 @@ -1152,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 @@ -1176,18 +970,6 @@ Betreten - Refresh - Aktualisieren - - - Error - Fehler - - - OK - OK - - Admin features Verwalten @@ -1196,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: @@ -1273,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 @@ -1302,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 @@ -1440,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 verschidenen Trainingsmissionen Demos - + Demos Watch recorded demos - + Sehe aufgenommene Demos an Load - Laden + Laden Load a previously saved game - + Lade ein vormals gespeichtes Spiel @@ -1524,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 @@ -1674,10 +1333,6 @@ Beim Start nach neuen Versionen suchen - Reduced quality - Niedrige Qualität - - Show ammo menu tooltips Kurzinfos für Waffen anzeigen @@ -1695,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 @@ -1757,10 +1412,6 @@ Im Spiel - Default - Standard - - hand drawn map... Handgezeichnete Karte @@ -1852,10 +1503,6 @@ Audio-/Grafik-Einstellungen - Weapons - Waffen - - Net game Netzwerkspiel @@ -1885,32 +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: @@ -1947,10 +1594,6 @@ FPS-Limit - Net nick - Spitzname im Netz - - Server name: Servername: @@ -2035,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: @@ -2085,10 +1718,6 @@ Stereo-Rendering - Game Options - Spieloptionen - - Style Stil @@ -2097,10 +1726,6 @@ Spielprofil - Password - Passwort - - % Get Away Time % Rückzugszeit @@ -2112,63 +1737,65 @@ There are videos that are currently being processed. Exiting now will abort them. Do yot 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) @@ -2183,7 +1810,7 @@ anonymous - + anonym @@ -2196,10 +1823,6 @@ QMessageBox - Network - Netzwerk - - Connection to server is lost Verbindung zum Server wurde unterbrochen @@ -2208,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.come 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 @@ -2405,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 @@ -2534,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 @@ -2591,10 +2277,6 @@ Unverwundbarkeit - Add Mines - Minen hinzufügen - - Random Order Zufällige Reihenfolge @@ -2821,11 +2503,11 @@ mute audio - + stummschalten record - + aufnehmen @@ -2911,11 +2593,11 @@ Toggle labels above hedgehogs: - Ändere die Informationen über Igeln: + Einblendungen über Igeln ein/ausschalten: Record video: - + Video aufnehmen: diff -r 6237d2f002ba -r 2bc61f8841a1 share/hedgewars/Data/Locale/hedgewars_en.ts --- a/share/hedgewars/Data/Locale/hedgewars_en.ts Sun Sep 16 23:52:36 2012 +0200 +++ b/share/hedgewars/Data/Locale/hedgewars_en.ts Sun Oct 28 15:12:37 2012 +0100 @@ -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 @@ -85,22 +62,6 @@ 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 @@ -617,12 +494,14 @@ <b>%1</b> thought it's good to shoot his own hedgehogs with <b>%2</b> pts. + <b>%1</b> killed <b>%2</b> of his own hedgehogs. + @@ -650,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 @@ -955,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 @@ -1026,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. @@ -1077,18 +913,42 @@ Reset to default colors + + Proxy host + + + + Proxy port + + + + Proxy login + + + + Proxy password + + + + No proxy + + + + Socks5 proxy + + + + HTTP proxy + + + + System proxy settings + + PagePlayDemo - Error - Error - - - OK - OK - - Rename dialog Rename dialog @@ -1096,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 @@ -1120,18 +968,6 @@ Join - Refresh - Refresh - - - Error - Error - - - OK - OK - - Admin features Administration @@ -1140,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: @@ -1209,20 +991,11 @@ 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 + @@ -1241,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 @@ -1257,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 @@ -1379,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 @@ -1492,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 @@ -1514,10 +1244,6 @@ uploading - - Do you really want do cancel uploading %1? - - QAction @@ -1605,10 +1331,6 @@ Append date and time to record file name - Reduced quality - Reduced quality - - Show ammo menu tooltips Show ammo menu tooltips @@ -1688,10 +1410,6 @@ - Default - Default - - hand drawn map... @@ -1779,10 +1497,6 @@ Teams - Weapons - Weapons - - Audio/Graphic options Audio/Graphic options @@ -1834,6 +1548,10 @@ Description + + Proxy settings + + QLabel @@ -1850,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: @@ -1886,10 +1600,6 @@ Port: - Net nick - Net nick - - Resolution Resolution @@ -1966,10 +1676,6 @@ Locale - Restart game to apply - Restart game to apply - - Explosives Explosives @@ -2018,10 +1724,6 @@ - Password - Password - - % Get Away Time @@ -2117,10 +1819,6 @@ QMessageBox - Network - Network - - Connection to server is lost Connection to server is lost @@ -2129,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: @@ -2226,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.come 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 @@ -2350,37 +2152,6 @@ - QTableWidget - - Room Name - Room Name - - - C - C - - - T - T - - - Owner - Owner - - - Map - Map - - - Rules - Rules - - - Weapons - Weapons - - - RoomsListModel In progress @@ -2455,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 @@ -2512,10 +2268,6 @@ Invulnerable - Add Mines - Add Mines - - Random Order Random Order diff -r 6237d2f002ba -r 2bc61f8841a1 share/hedgewars/Data/Locale/hedgewars_es.ts --- a/share/hedgewars/Data/Locale/hedgewars_es.ts Sun Sep 16 23:52:36 2012 +0200 +++ b/share/hedgewars/Data/Locale/hedgewars_es.ts Sun Oct 28 15:12:37 2012 +0100 @@ -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 @@ -89,22 +62,6 @@ 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. @@ -1133,18 +913,42 @@ Reset to default colors + + Proxy host + + + + Proxy port + + + + Proxy login + + + + Proxy password + + + + No proxy + + + + Socks5 proxy + + + + HTTP proxy + + + + System proxy settings + + PagePlayDemo - Error - Error - - - OK - OK - - Rename dialog Renombrar @@ -1152,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 @@ -1176,18 +968,6 @@ Entrar - Refresh - Actualizar - - - Error - Error - - - OK - OK - - Admin features Parámetros del administrador @@ -1196,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: @@ -1273,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 @@ -1302,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 @@ -1338,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 @@ -1444,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 @@ -1561,21 +1237,6 @@ - Are you sure? - - - - Do you really want do remove %1? - - - - Do you really want do remove %1 file(s)? - - - - - - encoding @@ -1583,10 +1244,6 @@ uploading - - Do you really want do cancel uploading %1? - - QAction @@ -1674,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 @@ -1757,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... @@ -1884,10 +1501,6 @@ Opciones de Audio y Gráficos - Weapons - Sets de armas - - Net game Juego en red @@ -1935,14 +1548,14 @@ Description + + Proxy settings + + QLabel - This program is distributed under the GNU General Public License - Este programa está distribuido bajo la licencia GNU General Public License - - Developers: Desarrolladores: @@ -1979,10 +1592,6 @@ Límite de FPS - Net nick - Apodo - - Server name: Nombre del servidor: @@ -2067,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 @@ -2112,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 @@ -2140,10 +1726,6 @@ Modo de juego - Password - Contraseña - - % Get Away Time % duración de retirada @@ -2239,10 +1821,6 @@ QMessageBox - Network - Red - - Connection to server is lost Se perdió la conexión con el servidor @@ -2251,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: @@ -2348,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.come 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 @@ -2443,10 +2125,6 @@ Asociar tipos de archivo - Set - Establecer - - more más @@ -2476,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 @@ -2581,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 @@ -2638,10 +2270,6 @@ Invulnerabilidad - Add Mines - Añadir minas - - Random Order Orden aleatorio diff -r 6237d2f002ba -r 2bc61f8841a1 share/hedgewars/Data/Locale/hedgewars_fi.ts --- a/share/hedgewars/Data/Locale/hedgewars_fi.ts Sun Sep 16 23:52:36 2012 +0200 +++ b/share/hedgewars/Data/Locale/hedgewars_fi.ts Sun Oct 28 15:12:37 2012 +0100 @@ -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 @@ -85,22 +62,6 @@ 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. @@ -1108,18 +913,42 @@ Reset to default colors + + Proxy host + + + + Proxy port + + + + Proxy login + + + + Proxy password + + + + No proxy + + + + Socks5 proxy + + + + HTTP proxy + + + + System proxy settings + + PagePlayDemo - Error - Virhe - - - OK - OK - - Rename dialog Uudelleennimeämis-dialogi @@ -1127,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 @@ -1151,18 +968,6 @@ Liity - Refresh - Päivitä - - - Error - Virhe - - - OK - OK - - Admin features Ylläpitäjän ominaisuudet @@ -1171,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: @@ -1248,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 @@ -1281,10 +1014,6 @@ Maata ei voi tuhota! - Add an indestructable border around the terrain - Lisää tuhoutumattomat reunat kartan ympärille - - Lower gravity Matalampi painovoima @@ -1297,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 @@ -1419,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 @@ -1536,21 +1237,6 @@ - Are you sure? - - - - Do you really want do remove %1? - - - - Do you really want do remove %1 file(s)? - - - - - - encoding @@ -1558,10 +1244,6 @@ uploading - - Do you really want do cancel uploading %1? - - QAction @@ -1649,10 +1331,6 @@ Lisää päivämäärä ja aika nauhoitusten tiedostonimeen - Reduced quality - Huononnettu laatu - - Show ammo menu tooltips Näytä asevalikon vihjeet @@ -1732,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... @@ -1851,10 +1497,6 @@ Joukkueet - Weapons - Aseet - - Net game Verkkopeli @@ -1906,6 +1548,10 @@ Description + + Proxy settings + + QLabel @@ -1922,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: @@ -1958,10 +1600,6 @@ Portti: - Net nick - Verkkopeli-nimimerkki - - Resolution Resoluutio @@ -2038,10 +1676,6 @@ Kieli - Restart game to apply - Käynnistä peli uudelleen ottaaksesi muutokset käyttöön - - Explosives Räjähteet @@ -2090,10 +1724,6 @@ - Password - Salasana - - % Get Away Time @@ -2189,10 +1819,6 @@ QMessageBox - Network - Verkko - - Connection to server is lost Yhteys palvelimeen katosi @@ -2201,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: @@ -2298,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.come 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 @@ -2422,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 @@ -2527,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 @@ -2584,10 +2268,6 @@ Vahingoittumaton - Add Mines - Lisää miinat - - Random Order Satunnainen Järjestys diff -r 6237d2f002ba -r 2bc61f8841a1 share/hedgewars/Data/Locale/hedgewars_fr.ts --- a/share/hedgewars/Data/Locale/hedgewars_fr.ts Sun Sep 16 23:52:36 2012 +0200 +++ b/share/hedgewars/Data/Locale/hedgewars_fr.ts Sun Oct 28 15:12:37 2012 +0100 @@ -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 @@ -85,22 +62,6 @@ 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 @@ -1091,18 +913,42 @@ Reset to default colors + + Proxy host + + + + Proxy port + + + + Proxy login + + + + Proxy password + + + + No proxy + + + + Socks5 proxy + + + + HTTP proxy + + + + System proxy settings + + PagePlayDemo - Error - Erreur - - - OK - OK - - Rename dialog Boîte de dialogue de renommage @@ -1110,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 @@ -1134,18 +968,6 @@ Rejoindre - Refresh - Rafraîchir - - - Error - Erreur - - - OK - OK - - Admin features Fonctionnalités d'administration @@ -1154,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 : @@ -1231,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 @@ -1259,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é @@ -1295,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 @@ -1401,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 @@ -1518,21 +1237,6 @@ - Are you sure? - - - - Do you really want do remove %1? - - - - Do you really want do remove %1 file(s)? - - - - - - encoding @@ -1540,10 +1244,6 @@ uploading - - Do you really want do cancel uploading %1? - - QAction @@ -1631,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. @@ -1714,10 +1410,6 @@ En cours - Default - Défaut - - hand drawn map... Carte dessinée @@ -1817,10 +1509,6 @@ Partie en réseau - Weapons - Armes - - Game Modifiers Modificateurs de jeu @@ -1860,18 +1548,14 @@ Description + + Proxy settings + + 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 @@ -1992,10 +1676,6 @@ Langue - Restart game to apply - Relancez le jeu pour appliquer - - Explosives Explosifs @@ -2032,10 +1712,6 @@ % longueur de la Corde Ninja - Gameplay - Mode de jeu - - Stereo rendering Rendu stéréo @@ -2048,10 +1724,6 @@ - Password - Mot de passe - - % Get Away Time @@ -2151,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: @@ -2256,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.come 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 @@ -2380,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 @@ -2485,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 @@ -2542,10 +2267,6 @@ Invulnérable - Add Mines - Ajouter des Mines - - Random Order Ordre aléatoire diff -r 6237d2f002ba -r 2bc61f8841a1 share/hedgewars/Data/Locale/hedgewars_hu.ts --- a/share/hedgewars/Data/Locale/hedgewars_hu.ts Sun Sep 16 23:52:36 2012 +0200 +++ b/share/hedgewars/Data/Locale/hedgewars_hu.ts Sun Oct 28 15:12:37 2012 +0100 @@ -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 @@ -84,22 +61,6 @@ 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. @@ -1057,18 +903,42 @@ Reset to default colors + + Proxy host + + + + Proxy port + + + + Proxy login + + + + Proxy password + + + + No proxy + + + + Socks5 proxy + + + + HTTP proxy + + + + System proxy settings + + PagePlayDemo - Error - Hiba - - - OK - OK - - Rename dialog Párbeszéd átnevezése @@ -1076,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 @@ -1100,18 +958,6 @@ Csatlakozás - Refresh - Frissítés - - - Error - Hiba - - - OK - OK - - Admin features Adminisztráció @@ -1120,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: @@ -1191,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 @@ -1222,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ó @@ -1238,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 @@ -1360,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 @@ -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 @@ 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 @@ -1667,10 +1398,6 @@ - Default - Default - - hand drawn map... @@ -1758,10 +1485,6 @@ Csapatok - Weapons - Fegyverek - - Audio/Graphic options Hang- és képi beállítások @@ -1813,6 +1536,10 @@ Description + + Proxy settings + + QLabel @@ -1829,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: @@ -1865,10 +1588,6 @@ Port: - Net nick - Becenév a neten - - Resolution Felbontás @@ -1945,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: @@ -2003,10 +1712,6 @@ - Password - JElszó - - % Get Away Time @@ -2102,10 +1807,6 @@ QMessageBox - Network - Hálózat - - Connection to server is lost A kapcsolat a szerverrel megszakadt @@ -2114,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: @@ -2211,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.come 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 @@ -2335,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 @@ -2440,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 @@ -2497,10 +2254,6 @@ Sérthetetlenség - Add Mines - Aknák hozzáadása - - Random Order Véletlen sorrend diff -r 6237d2f002ba -r 2bc61f8841a1 share/hedgewars/Data/Locale/hedgewars_it.ts --- a/share/hedgewars/Data/Locale/hedgewars_it.ts Sun Sep 16 23:52:36 2012 +0200 +++ b/share/hedgewars/Data/Locale/hedgewars_it.ts Sun Oct 28 15:12:37 2012 +0100 @@ -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 @@ -85,22 +62,6 @@ 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,36 +306,12 @@ %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 Remote host has closed connection - L'host remoto ha terminato la connessione. + L'host remoto ha terminato la connessione. The server is too old. Disconnecting now. @@ -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. @@ -956,7 +795,7 @@ Read about who is behind the Hedgewars Project - Leggi chi c'è dietro allo sviluppo di Hedgewars + Leggi chi c'è dietro allo sviluppo di Hedgewars Leave a feedback here reporting issues, suggesting features or just saying how you like Hedgewars @@ -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. @@ -1109,18 +913,42 @@ Reset to default colors Ripristina colori originali + + Proxy host + + + + Proxy port + + + + Proxy login + + + + Proxy password + + + + No proxy + + + + Socks5 proxy + + + + HTTP proxy + + + + System proxy settings + + PagePlayDemo - Error - Errore - - - OK - OK - - Rename dialog Rinomina @@ -1128,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 @@ -1152,18 +968,6 @@ Entra - Refresh - Aggiorna - - - Error - Errore - - - OK - OK - - Admin features Opzioni amministrative @@ -1172,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: @@ -1249,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 @@ -1270,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 @@ -1314,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 @@ -1420,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 @@ -1545,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 @@ -1567,10 +1244,6 @@ uploading caricamento - - Do you really want do cancel uploading %1? - Vuoi veramente sospendere il carimento del file %1? - QAction @@ -1658,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 @@ -1741,10 +1410,6 @@ In corso - Default - Predefinito - - hand drawn map... Mappa disegnata... @@ -1836,10 +1501,6 @@ Opzioni Audio/Grafica - Weapons - Armi - - Net game Gioco in rete @@ -1887,6 +1548,10 @@ Description Descrizione + + Proxy settings + + QLabel @@ -1899,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: @@ -1939,10 +1600,6 @@ Limite FPS - Net nick - Nickname di rete - - Server name: Nome del server: @@ -2019,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 @@ -2065,18 +1712,10 @@ % Lunghezza della Corda - Gameplay - Tipo di gioco - - Stereo rendering Resa stereo - Game Options - Opzioni di gioco - - Style Stile @@ -2085,10 +1724,6 @@ Schema - Password - Password - - % Get Away Time % Tempo Regalo (Get Away Time) @@ -2106,7 +1741,7 @@ Please provide either the YouTube account name or the email address associated with the Google Account. - Inserire il nome utente YouTube o l'indirizzo e-mail associato all'account Google. + Inserire il nome utente YouTube o l'indirizzo e-mail associato all'account Google. Account name (or email): @@ -2186,10 +1821,6 @@ QMessageBox - Network - Rete - - Connection to server is lost Connessione con il server persa @@ -2198,93 +1829,17 @@ 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 + E' necessario compilare tutti i campi Error while authenticating at google.com: - Errore durante l'autenticazione su google.com: + Errore durante l'autenticazione su google.com: Login or password is incorrect @@ -2293,24 +1848,204 @@ Error while sending metadata to youtube.com: - Errore nell'invio dei dati a youtube.com: + 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.come 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 @@ -2419,37 +2154,6 @@ - QTableWidget - - Room Name - Nome della Stanza - - - C - C - - - T - T - - - Owner - Proprietario - - - Map - Mappa - - - Rules - Regole - - - Weapons - Armi - - - RoomsListModel In progress @@ -2524,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 @@ -2581,10 +2270,6 @@ Invulnerabilità - Add Mines - Aggiungi mine - - Random Order Ordine Casuale diff -r 6237d2f002ba -r 2bc61f8841a1 share/hedgewars/Data/Locale/hedgewars_ja.ts --- a/share/hedgewars/Data/Locale/hedgewars_ja.ts Sun Sep 16 23:52:36 2012 +0200 +++ b/share/hedgewars/Data/Locale/hedgewars_ja.ts Sun Oct 28 15:12:37 2012 +0100 @@ -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 しくみを編集 @@ -84,22 +61,6 @@ 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 @@ -1026,18 +907,42 @@ Reset to default colors + + Proxy host + + + + Proxy port + + + + Proxy login + + + + Proxy password + + + + No proxy + + + + Socks5 proxy + + + + HTTP proxy + + + + System proxy settings + + PagePlayDemo - Error - エラー - - - OK - OK - - Rename dialog Rename dialog @@ -1045,18 +950,6 @@ Enter new file name: 新しいファイル名: - - Cannot rename to - Cannot rename to - - - Cannot delete file - ファイル削除は不可能 - - - Please select record from the list - 録画を選択下さい - PageRoomsList @@ -1069,18 +962,6 @@ 接続 - Refresh - 更新 - - - Error - エラー - - - OK - OK - - Admin features アドミン機能 @@ -1089,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: @@ -1117,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 @@ -1278,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 @@ -1390,20 +1229,6 @@ - Are you sure? - - - - Do you really want do remove %1? - - - - Do you really want do remove %1 file(s)? - - - - - encoding @@ -1411,10 +1236,6 @@ uploading - - Do you really want do cancel uploading %1? - - QAction @@ -1581,10 +1402,6 @@ - Default - デフォールト - - hand drawn map... @@ -1672,10 +1489,6 @@ チーム - Weapons - 武器 - - Audio/Graphic options オディオ/画面 設定 @@ -1727,6 +1540,10 @@ Description + + Proxy settings + + QLabel @@ -1743,10 +1560,6 @@ バーション - This program is distributed under the GNU General Public License - This program is distributed under the GNU General Public License - - Developers: 開発者: @@ -1779,10 +1592,6 @@ Port: - Net nick - ネット別名 - - Resolution Resolution @@ -1907,10 +1716,6 @@ - Password - パスワード - - % Get Away Time @@ -2006,10 +1811,6 @@ QMessageBox - Network - ネットワーク - - Connection to server is lost サーバーの接続は切断された @@ -2018,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: @@ -2115,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.come 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 @@ -2239,17 +2142,6 @@ - QTableWidget - - Map - 地図 - - - Weapons - 武器 - - - RoomsListModel In progress @@ -2324,21 +2216,6 @@ - TCPBase - - Error - エラー - - - Unable to start the server: %1. - サーバー%1の起動は出来なかった - - - Unable to run engine: %1 ( - エンジン%1の起動は出来なかった - - - ToggleButtonWidget Vampirism diff -r 6237d2f002ba -r 2bc61f8841a1 share/hedgewars/Data/Locale/hedgewars_ko.ts --- a/share/hedgewars/Data/Locale/hedgewars_ko.ts Sun Sep 16 23:52:36 2012 +0200 +++ b/share/hedgewars/Data/Locale/hedgewars_ko.ts Sun Oct 28 15:12:37 2012 +0100 @@ -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 @@ -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 @@ -967,18 +903,42 @@ Reset to default colors + + Proxy host + + + + Proxy port + + + + Proxy login + + + + Proxy password + + + + No proxy + + + + Socks5 proxy + + + + HTTP proxy + + + + System proxy settings + + PagePlayDemo - Error - - - - OK - - - Rename dialog @@ -986,18 +946,6 @@ Enter new file name: - - Cannot rename to - - - - Cannot delete file - - - - Please select record from the list - - PageRoomsList @@ -1010,18 +958,6 @@ - Refresh - - - - Error - - - - OK - - - Admin features @@ -1030,14 +966,6 @@ - Please enter room name - - - - Please select room from the list - - - Rules: @@ -1053,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 @@ -1306,20 +1225,6 @@ - Are you sure? - - - - Do you really want do remove %1? - - - - Do you really want do remove %1 file(s)? - - - - - encoding @@ -1327,10 +1232,6 @@ uploading - - Do you really want do cancel uploading %1? - - QAction @@ -1635,6 +1536,10 @@ Description + + Proxy settings + + QLabel @@ -1902,10 +1807,6 @@ QMessageBox - Network - - - Connection to server is lost @@ -1914,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: @@ -2001,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.come directly) + + + + Main - Error @@ -2013,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 @@ -2199,21 +2212,6 @@ - TCPBase - - Error - - - - Unable to start the server: %1. - - - - Unable to run engine: %1 ( - - - - ToggleButtonWidget Vampirism diff -r 6237d2f002ba -r 2bc61f8841a1 share/hedgewars/Data/Locale/hedgewars_lt.ts --- a/share/hedgewars/Data/Locale/hedgewars_lt.ts Sun Sep 16 23:52:36 2012 +0200 +++ b/share/hedgewars/Data/Locale/hedgewars_lt.ts Sun Oct 28 15:12:37 2012 +0100 @@ -23,25 +23,6 @@ - DrawMapWidget - - - - File error - - - - - Cannot open file '%1' for writing - - - - - Cannot read file '%1' - - - - FreqSpinBox @@ -80,16 +61,6 @@ When this option is enabled selecting a game scheme will auto-select a weapon - - - Error - - - - - Illegal ammo scheme - - HWAskQuitDialog @@ -102,57 +73,57 @@ 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 @@ -1193,49 +1113,59 @@ Reset to default colors + + + Proxy host + + + + + Proxy port + + + + + Proxy login + + + + + Proxy password + + + + + No proxy + + + + + System proxy settings + + + + + Socks5 proxy + + + + + HTTP proxy + + PagePlayDemo - - - - - Error - - - - - - Please select record from the list - - - - - - OK - - - - + Rename dialog - + Enter new file name: - - - Cannot rename to - - - - - Cannot delete file - - PageRoomsList @@ -1271,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 @@ -1622,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 @@ -1726,7 +1592,7 @@ QCheckBox - + Show ammo menu tooltips @@ -1736,7 +1602,7 @@ - + Append date and time to record file name @@ -1781,7 +1647,7 @@ - + Show FPS @@ -1792,12 +1658,12 @@ - + Save account name and password - + Video is private @@ -1935,19 +1801,19 @@ + + + Any + + + - - Any + In lobby - In lobby - - - - In progress @@ -2005,11 +1871,16 @@ - + Miscellaneous + + Proxy settings + + + Game Modifiers @@ -2129,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! @@ -2185,7 +2056,7 @@ - + FPS limit @@ -2277,32 +2148,32 @@ - + 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): @@ -2345,7 +2216,7 @@ QLineEdit - + unnamed @@ -2372,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.come 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 @@ -2555,7 +2570,7 @@ - + more @@ -2572,7 +2587,7 @@ - + Setup @@ -2597,7 +2612,7 @@ - + Ready @@ -2607,7 +2622,7 @@ - + Associate file extensions @@ -2747,38 +2762,19 @@ - - + + new - - + + copy of - TCPBase - - - - Error - - - - - Unable to start the server: %1. - - - - - Unable to run engine: %1 ( - - - - ToggleButtonWidget diff -r 6237d2f002ba -r 2bc61f8841a1 share/hedgewars/Data/Locale/hedgewars_nl.ts --- a/share/hedgewars/Data/Locale/hedgewars_nl.ts Sun Sep 16 23:52:36 2012 +0200 +++ b/share/hedgewars/Data/Locale/hedgewars_nl.ts Sun Oct 28 15:12:37 2012 +0100 @@ -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 @@ -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 @@ -984,18 +910,42 @@ Reset to default colors + + Proxy host + + + + Proxy port + + + + Proxy login + + + + Proxy password + + + + No proxy + + + + Socks5 proxy + + + + HTTP proxy + + + + System proxy settings + + PagePlayDemo - Error - - - - OK - - - Rename dialog @@ -1003,18 +953,6 @@ Enter new file name: - - Cannot rename to - - - - Cannot delete file - - - - Please select record from the list - - PageRoomsList @@ -1027,18 +965,6 @@ - Refresh - - - - Error - - - - OK - - - Admin features @@ -1047,14 +973,6 @@ - Please enter room name - - - - Please select room from the list - - - Rules: @@ -1070,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 @@ -1325,21 +1234,6 @@ - Are you sure? - - - - Do you really want do remove %1? - - - - Do you really want do remove %1 file(s)? - - - - - - encoding @@ -1347,10 +1241,6 @@ uploading - - Do you really want do cancel uploading %1? - - QAction @@ -1655,6 +1545,10 @@ Description + + Proxy settings + + QLabel @@ -1922,10 +1816,6 @@ QMessageBox - Network - - - Connection to server is lost @@ -1934,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: @@ -2021,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.come directly) + + + + Main - Error @@ -2033,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 @@ -2219,21 +2222,6 @@ - TCPBase - - Error - - - - Unable to start the server: %1. - - - - Unable to run engine: %1 ( - - - - ToggleButtonWidget Vampirism diff -r 6237d2f002ba -r 2bc61f8841a1 share/hedgewars/Data/Locale/hedgewars_pl.ts --- a/share/hedgewars/Data/Locale/hedgewars_pl.ts Sun Sep 16 23:52:36 2012 +0200 +++ b/share/hedgewars/Data/Locale/hedgewars_pl.ts Sun Oct 28 15:12:37 2012 +0100 @@ -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 @@ -90,22 +63,6 @@ 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,14 @@ 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: + + HWGame @@ -293,10 +217,6 @@ Odjechane - Tunnel size - Tunele - - Type Typ @@ -371,20 +291,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,30 +307,6 @@ %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ł @@ -485,14 +367,6 @@ PageAdmin - Server message: - Wiadomość od serwera: - - - Set message - Ustaw wiadomość - - Clear Accounts Cache Wyczyść pamięć podręczną @@ -527,10 +401,6 @@ Connecting... Łączenie... - - Cancel - Anuluj - PageDrawMap @@ -555,10 +425,6 @@ Załaduj mapę - Drawn Maps (*.hwmap);;All files (*.*) - Narysowane mapy (*.hwmap);;Wszystkie pliki (*.*) - - Save drawn map Zapisz mapę @@ -589,26 +455,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 +494,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. @@ -694,14 +536,6 @@ 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 +551,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 +601,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 +626,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 +641,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 +691,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 +716,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 +746,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. @@ -1039,35 +833,12 @@ - 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 @@ -1110,18 +881,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. @@ -1161,18 +920,42 @@ Reset to default colors + + Proxy host + + + + Proxy port + + + + Proxy login + + + + Proxy password + + + + No proxy + + + + Socks5 proxy + + + + HTTP proxy + + + + System proxy settings + + PagePlayDemo - Error - Błąd - - - OK - OK - - Rename dialog Zmiana nazwy @@ -1180,18 +963,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 @@ -1204,18 +975,6 @@ Dołącz - Refresh - Odśwież - - - Error - Błąd - - - OK - OK - - Admin features Ustawienia admina @@ -1224,70 +983,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: @@ -1303,16 +998,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 @@ -1345,10 +1030,6 @@ Podłoże jest niezniszczalne! - Add an indestructable border around the terrain - Dodaje niezniszczalną ramkę dookoła terenu - - Lower gravity Niższa grawitacja @@ -1361,10 +1042,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ń @@ -1475,38 +1152,6 @@ 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 @@ -1601,22 +1246,6 @@ - Are you sure? - - - - Do you really want do remove %1? - - - - Do you really want do remove %1 file(s)? - - - - - - - encoding @@ -1624,10 +1253,6 @@ uploading - - Do you really want do cancel uploading %1? - - QAction @@ -1715,10 +1340,6 @@ Dodaj czas i datę do nazwy pliku - Reduced quality - Obniż jakość - - Show ammo menu tooltips Pokaż opisy broni @@ -1798,42 +1419,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... @@ -1925,10 +1510,6 @@ Ustawienia dźwięku/grafiki - Weapons - Uzbrojenie - - Net game Gra sieciowa @@ -1976,14 +1557,14 @@ Description + + Proxy settings + + QLabel - This program is distributed under the GNU General Public License - Ten program jest rozprowadzany na zasadach powszechnej licencji publicznej GNU - - Developers: Twórcy: @@ -2020,10 +1601,6 @@ Ograniczenie FPS - Net nick - Pseudonim sieciowy - - Server name: Nazwa serwera: @@ -2108,16 +1685,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 @@ -2126,11 +1693,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! @@ -2156,26 +1718,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 @@ -2184,10 +1734,6 @@ Schemat - Password - Hasło - - % Get Away Time Czas na ucieczkę w % @@ -2283,10 +1829,6 @@ QMessageBox - Network - Sieć - - Connection to server is lost Połączenie z serwerem zostało przerwane @@ -2295,90 +1837,14 @@ 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 - - - Error while authenticating at google.com: @@ -2392,22 +1858,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.come directly) + + + + Main - Error + + + + Cannot create directory %1 + Nie można utworzyć katalogu %1 + + + Failed to open data directory: +%1 + +Please check your installation! + + + + TCP - Error + + + + Unable to start the server: %1. + Nie można uruchomić serwera: %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 + Wprowadź nazwę pokoju + + + Record Play - Error + + + + Please select record from the list + Wybierz nagranie z listy + + + Cannot rename to + + + + Cannot delete file + + + + Room Name - Error + + + + Please select room from the list + Wybierz pokój z listy + + + Room Name - Are you sure? + + + + 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 + + + + 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 + Błąd pliku + + + 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 - Błąd - - - Cannot create directory %1 - Nie można utworzyć katalogu %1 - - - OK - OK - - Nickname Nick @@ -2487,10 +2134,6 @@ Powiąż typy plików z Hedgewars - Set - Ustaw - - more Więcej @@ -2520,37 +2163,6 @@ - QTableWidget - - Room Name - Nazwa pokoju - - - C - Kli - - - T - Druż - - - Owner - Właśc - - - Map - Mapa - - - Rules - Schemat - - - Weapons - Uzbrojenie - - - RoomsListModel In progress @@ -2625,21 +2237,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 @@ -2682,10 +2279,6 @@ Nieśmiertelność - Add Mines - Dodaj miny - - Random Order Losowa kolejność diff -r 6237d2f002ba -r 2bc61f8841a1 share/hedgewars/Data/Locale/hedgewars_pt_BR.ts --- a/share/hedgewars/Data/Locale/hedgewars_pt_BR.ts Sun Sep 16 23:52:36 2012 +0200 +++ b/share/hedgewars/Data/Locale/hedgewars_pt_BR.ts Sun Oct 28 15:12:37 2012 +0100 @@ -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 @@ -85,22 +62,6 @@ 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. @@ -1171,18 +915,42 @@ Reset to default colors + + Proxy host + + + + Proxy port + + + + Proxy login + + + + Proxy password + + + + No proxy + + + + Socks5 proxy + + + + HTTP proxy + + + + System proxy settings + + PagePlayDemo - Error - Erro - - - OK - OK - - Rename dialog Renomear @@ -1190,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 @@ -1214,18 +970,6 @@ Entrar - Refresh - Atualizar - - - Error - Erro - - - OK - OK - - Admin features Opções do Administrador @@ -1234,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: @@ -1311,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 @@ -1340,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ê @@ -1376,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 @@ -1482,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 @@ -1599,21 +1239,6 @@ - Are you sure? - - - - Do you really want do remove %1? - - - - Do you really want do remove %1 file(s)? - - - - - - encoding @@ -1621,10 +1246,6 @@ uploading - - Do you really want do cancel uploading %1? - - QAction @@ -1712,10 +1333,6 @@ Checar por atualizações ao iniciar - Reduced quality - Qualidade reduzida - - Show ammo menu tooltips Mostrar instruções no menu de armas @@ -1795,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... @@ -1922,10 +1503,6 @@ Opções de áudio e gráficos - Weapons - Armas - - Net game Jogo em rede @@ -1973,14 +1550,14 @@ Description + + Proxy settings + + QLabel - This program is distributed under the GNU General Public License - Este programa é distribuido sob a Licensa Pública GNU - - Developers: Desenvolvedores: @@ -2017,10 +1594,6 @@ Limite de FPS - Net nick - Apelido de rede - - Server name: Nome do servidor: @@ -2105,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: @@ -2155,10 +1714,6 @@ % Comprimento da Corda - Gameplay - Modo de Jogo - - Stereo rendering @@ -2171,10 +1726,6 @@ - Password - Senha - - % Get Away Time @@ -2270,10 +1821,6 @@ QMessageBox - Network - Rede - - Connection to server is lost A conexão com o servidor foi perdida @@ -2282,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: @@ -2381,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.come 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 @@ -2476,11 +2125,6 @@ Associar extensão de arquivos. - Set - Esquema esta muito genérico - Esquema - - more @@ -2510,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 @@ -2617,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 @@ -2674,10 +2271,6 @@ Invulnerabilidade - Add Mines - Adicionar Minas - - Random Order Ordem Aleatória diff -r 6237d2f002ba -r 2bc61f8841a1 share/hedgewars/Data/Locale/hedgewars_pt_PT.ts --- a/share/hedgewars/Data/Locale/hedgewars_pt_PT.ts Sun Sep 16 23:52:36 2012 +0200 +++ b/share/hedgewars/Data/Locale/hedgewars_pt_PT.ts Sun Oct 28 15:12:37 2012 +0100 @@ -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 @@ -85,22 +62,6 @@ 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,14 @@ 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: + + HWGame @@ -361,20 +290,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,29 +306,6 @@ %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 @@ -474,14 +366,6 @@ PageAdmin - Server message: - Mensagem do servidor: - - - Set message - Definir mensagem - - Clear Accounts Cache Limpar a cache das contas @@ -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 @@ -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 @@ -671,14 +529,6 @@ 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. @@ -976,35 +826,12 @@ - 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 @@ -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. @@ -1098,18 +913,42 @@ Reset to default colors + + Proxy host + + + + Proxy port + + + + Proxy login + + + + Proxy password + + + + No proxy + + + + Socks5 proxy + + + + HTTP proxy + + + + System proxy settings + + PagePlayDemo - Error - Erro - - - OK - OK - - Rename dialog Renomear @@ -1117,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 @@ -1141,18 +968,6 @@ Entrar - Refresh - Actualizar - - - Error - Erro - - - OK - OK - - Admin features Recursos de administrador @@ -1161,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 @@ -1238,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 @@ -1283,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 @@ -1405,38 +1144,6 @@ 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 @@ -1530,21 +1237,6 @@ - Are you sure? - - - - Do you really want do remove %1? - - - - Do you really want do remove %1 file(s)? - - - - - - encoding @@ -1552,10 +1244,6 @@ uploading - - Do you really want do cancel uploading %1? - - QAction @@ -1643,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 @@ -1726,10 +1410,6 @@ Em progresso - Default - Predefinido - - hand drawn map... mapa desenhado à mão... @@ -1817,10 +1497,6 @@ Equipas - Weapons - Armas - - Audio/Graphic options Opções de Áudio/Gráficos @@ -1872,6 +1548,10 @@ Description + + Proxy settings + + QLabel @@ -1888,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: @@ -1924,10 +1600,6 @@ Porta: - Net nick - Nick de rede - - Resolution Resolução @@ -2004,10 +1676,6 @@ Idioma - Restart game to apply - Reinicie o jogo para aplicar as alterações - - Explosives Explosivos @@ -2048,10 +1716,6 @@ Renderização estereoscópica - Game Options - Opções de Jogo - - Style Estilo @@ -2060,10 +1724,6 @@ Esquema - Password - Password - - % Get Away Time % Tempo Para Retirar @@ -2159,10 +1819,6 @@ QMessageBox - Network - Rede - - Connection to server is lost Conexão com o servidor perdida @@ -2171,90 +1827,14 @@ 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 - - - Error while authenticating at google.com: @@ -2268,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.come directly) + + + + Main - Error + + + + Cannot create directory %1 + Não foi possível criar o directó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 + + + + Record Play - Error + + + + Please select record from the list + Por favor seleccione uma gravação da lista + + + Cannot rename to + + + + Cannot delete file + + + + Room Name - Error + + + + Please select room from the list + Seleccione 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 a que te estas a tentar juntar já começou. +Desejas juntar-te ao jogo de qualquer maneira? + + + 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 + Erro no ficheiro + + + 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 directório %1 - - - OK - OK - - Nickname Nome de utilizador @@ -2392,37 +2152,6 @@ - QTableWidget - - Room Name - Nome da Sala - - - C - C - - - T - E - - - Owner - Anfitrião - - - Map - Mapa - - - Rules - Regras - - - Weapons - Armas - - - RoomsListModel In progress @@ -2497,21 +2226,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 @@ -2554,10 +2268,6 @@ Invulnerabilidade - Add Mines - Adicionar minas - - Random Order Ordem Aleatória diff -r 6237d2f002ba -r 2bc61f8841a1 share/hedgewars/Data/Locale/hedgewars_ru.ts --- a/share/hedgewars/Data/Locale/hedgewars_ru.ts Sun Sep 16 23:52:36 2012 +0200 +++ b/share/hedgewars/Data/Locale/hedgewars_ru.ts Sun Oct 28 15:12:37 2012 +0100 @@ -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 При включении этой опции выбор настроек игры автоматически выберет схему оружия @@ -90,22 +63,6 @@ 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,14 @@ Псевдоним - 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: + + HWGame @@ -363,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 вошёл в комнату @@ -393,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 Пользователь вышел @@ -477,14 +367,6 @@ PageAdmin - Server message: - Сообщение сервера: - - - Set message - Установить сообщение - - Clear Accounts Cache Очистить кэш учётных записей @@ -519,10 +401,6 @@ Connecting... Соединение... - - Cancel - Отмена - PageDrawMap @@ -547,10 +425,6 @@ Загрузить рисованную карту - Drawn Maps (*.hwmap);;All files (*.*) - Рисованные карты (*.hwmap);;Все файлы (*.*) - - Save drawn map Сохранить рисованную карту @@ -581,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 Подробности @@ -682,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 Выберите тот же цвет команда, что у друга, чтобы играть в союзе. Вы будете управлять своими ежами, но выиграете или проиграете вместе. @@ -987,35 +833,12 @@ - PageNet - - Error - Ошибка - - - Please select server from the list above - Выберите сервер из списка - - - PageNetGame Control Управление - Error - Ошибка - - - Please enter room name - Введите название комнаты - - - OK - ОК - - DLC @@ -1058,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. Невозможно редактировать команды со страницы выбора команд. Вернитесь в главное меню для добавления, редактирования или удаления команд. @@ -1109,18 +920,42 @@ Reset to default colors Сбросить на цвета по умолчанию + + Proxy host + Адрес прокси-сервера + + + Proxy port + Порт + + + Proxy login + Имя пользователя + + + Proxy password + Пароль + + + No proxy + Без прокси + + + Socks5 proxy + Socks5 прокси + + + HTTP proxy + HTTP прокси + + + System proxy settings + Системные настройки + PagePlayDemo - Error - Ошибка - - - OK - ОК - - Rename dialog Переименование @@ -1128,18 +963,6 @@ Enter new file name: Введите новое имя файла: - - Cannot rename to - Не могу переименовать в - - - Cannot delete file - Не могу удалить файл - - - Please select record from the list - Выберите запись из списка - PageRoomsList @@ -1152,18 +975,6 @@ Присоединиться - Refresh - Обновить - - - Error - Ошибка - - - OK - ОК - - Admin features Администрирование @@ -1172,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: Правила: @@ -1251,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 @@ -1273,10 +1010,6 @@ PageScheme - Enable random mines - Включить мины - - Gain 80% of the damage you do back in health 80% урона, нанесённого врагу, вернётся в виде здоровья вашему ежу @@ -1317,10 +1050,6 @@ Земля не может быть разрушена! - Add an indestructable border around the terrain - Добавить неразрушимую границу вокруг карты - - Lower gravity Пониженная гравитация @@ -1423,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) - Схватка (игра с друзьями за одним компьютером или против ботов) - - - 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 Простая игра @@ -1541,22 +1246,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 кодирование @@ -1564,10 +1253,6 @@ uploading отправка - - Do you really want do cancel uploading %1? - Отменить отправку %1? - QAction @@ -1655,10 +1340,6 @@ Указывать дату и время в названиях демок и сейвов - Reduced quality - Пониженное качество - - Show ammo menu tooltips Показывать подсказки к оружию @@ -1738,10 +1419,6 @@ В игре - Default - По умолчанию - - hand drawn map... рисованная карта... @@ -1841,10 +1518,6 @@ Сетевая игра - Weapons - Оружие - - Game Modifiers Модификаторы игры @@ -1884,6 +1557,10 @@ Description Описание + + Proxy settings + Настройки прокси + QLabel @@ -1896,14 +1573,6 @@ Мины - Net nick - Имя игрока - - - This program is distributed under the GNU General Public License - Эта программа распространяется на условиях лицензии GNU (the GNU General Public License) - - Resolution Разрешение @@ -2016,16 +1685,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 Взрывчатка @@ -2058,10 +1717,6 @@ Скорость уменьшения здоровья - Bind schemes and weapons - Объединить настройки игры и оружия - - % Rope Length % длины верёвки @@ -2070,10 +1725,6 @@ Стереоизображение - Game Options - Настройки игры - - Style Стиль @@ -2082,10 +1733,6 @@ Схема - Password - Пароль - - % Get Away Time % времени ухода @@ -2139,7 +1786,7 @@ Format - + Формат Audio codec @@ -2187,98 +1834,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: @@ -2292,22 +1859,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.come 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 Псевдоним @@ -2416,37 +2164,6 @@ - QTableWidget - - Room Name - Название - - - C - И - - - T - К - - - Owner - Главный - - - Map - Карта - - - Rules - Правила - - - Weapons - Оружие - - - RoomsListModel In progress @@ -2521,21 +2238,6 @@ - TCPBase - - Error - Ошибка - - - Unable to start the server: %1. - Ошибка запуска сервера: %1. - - - Unable to run engine: %1 ( - Ошибка запуска движка: %1 ( - - - ToggleButtonWidget Vampirism @@ -2578,10 +2280,6 @@ Неуязвимость - Add Mines - Добавить мины - - Random Order Случайный порядок diff -r 6237d2f002ba -r 2bc61f8841a1 share/hedgewars/Data/Locale/hedgewars_sk.ts --- a/share/hedgewars/Data/Locale/hedgewars_sk.ts Sun Sep 16 23:52:36 2012 +0200 +++ b/share/hedgewars/Data/Locale/hedgewars_sk.ts Sun Oct 28 15:12:37 2012 +0100 @@ -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ň @@ -90,22 +63,6 @@ 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. @@ -1156,18 +922,42 @@ Reset to default colors + + Proxy host + + + + Proxy port + + + + Proxy login + + + + Proxy password + + + + No proxy + + + + Socks5 proxy + + + + HTTP proxy + + + + System proxy settings + + PagePlayDemo - Error - Chyba - - - OK - OK - - Rename dialog Dialóg na zmenu mena @@ -1175,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 @@ -1199,18 +977,6 @@ Pripojiť sa - Refresh - Obnoviť - - - Error - Chyba - - - OK - OK - - Admin features Vlastnosti pre admina @@ -1219,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á: @@ -1298,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 @@ -1320,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 @@ -1364,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 @@ -1470,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 @@ -1596,22 +1248,6 @@ - Are you sure? - - - - Do you really want do remove %1? - - - - Do you really want do remove %1 file(s)? - - - - - - - encoding @@ -1619,10 +1255,6 @@ uploading - - Do you really want do cancel uploading %1? - - QAction @@ -1710,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 @@ -1793,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... @@ -1920,10 +1512,6 @@ Nastavenia zvuku/grafiky - Weapons - Zbrane - - Net game Sieťová hra @@ -1971,6 +1559,10 @@ Description + + Proxy settings + + QLabel @@ -1983,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: @@ -2023,10 +1611,6 @@ Limit FPS - Net nick - Sieťový nick - - Server name: Názov servera: @@ -2103,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 @@ -2130,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 @@ -2154,18 +1724,10 @@ % dĺžka lana - Gameplay - Hra - - Stereo rendering Zobrazenie stereo - Game Options - Voľby hry - - Style Štýl @@ -2174,10 +1736,6 @@ Schéma - Password - Heslo - - % Get Away Time % času na útek @@ -2273,10 +1831,6 @@ QMessageBox - Network - Sieť - - Connection to server is lost Spojenie so serverom bolo prerušené @@ -2285,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: @@ -2382,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.come 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 @@ -2477,10 +2136,6 @@ Asociovať prípony súborov. - Set - Nastaviť - - more viac @@ -2510,37 +2165,6 @@ - QTableWidget - - Room Name - Názov miestnosti - - - C - C - - - T - T - - - Owner - Majiteľ - - - Map - Mapa - - - Rules - Pravidlá - - - Weapons - Zbrane - - - RoomsListModel In progress @@ -2615,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 @@ -2672,10 +2281,6 @@ Nesmrteľnosť - Add Mines - Pridať míny - - Random Order Náhodné poradie diff -r 6237d2f002ba -r 2bc61f8841a1 share/hedgewars/Data/Locale/hedgewars_sv.ts --- a/share/hedgewars/Data/Locale/hedgewars_sv.ts Sun Sep 16 23:52:36 2012 +0200 +++ b/share/hedgewars/Data/Locale/hedgewars_sv.ts Sun Oct 28 15:12:37 2012 +0100 @@ -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 @@ -85,22 +62,6 @@ 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. @@ -1125,18 +913,42 @@ Reset to default colors + + Proxy host + + + + Proxy port + + + + Proxy login + + + + Proxy password + + + + No proxy + + + + Socks5 proxy + + + + HTTP proxy + + + + System proxy settings + + PagePlayDemo - Error - Fel - - - OK - OK - - Rename dialog Namnbytesdialig @@ -1144,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 @@ -1168,18 +968,6 @@ Anslut - Refresh - Uppdatera - - - Error - Fel - - - OK - OK - - Admin features Adminfunktioner @@ -1188,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: @@ -1265,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 @@ -1294,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 @@ -1330,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 @@ -1436,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 @@ -1553,21 +1237,6 @@ - Are you sure? - - - - Do you really want do remove %1? - - - - Do you really want do remove %1 file(s)? - - - - - - encoding @@ -1575,10 +1244,6 @@ uploading - - Do you really want do cancel uploading %1? - - QAction @@ -1666,10 +1331,6 @@ Leta efter uppdatering vid programstart - Reduced quality - Minskad kvalité - - Show ammo menu tooltips Visa hjälp i ammunitionsmenyn @@ -1749,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... @@ -1876,10 +1501,6 @@ Ljud/grafikinställningar - Weapons - Vapen - - Net game Internetspel @@ -1927,14 +1548,14 @@ Description + + Proxy settings + + QLabel - This program is distributed under the GNU General Public License - Detta program distribueras under GNU General Public License - - Developers: Utvecklare: @@ -1971,10 +1592,6 @@ FPS-begränsning - Net nick - Internetnamn - - Server name: Servernamn: @@ -2059,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 @@ -2105,18 +1712,10 @@ % replängd - Gameplay - Speltyp - - Stereo rendering Stereorendering - Game Options - Spelinställningar - - Style Stil @@ -2125,10 +1724,6 @@ Schema - Password - Lösenord - - % Get Away Time % flykttid @@ -2224,10 +1819,6 @@ QMessageBox - Network - Nätverk - - Connection to server is lost Ansluting till servern bröts @@ -2236,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: @@ -2333,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.come 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 @@ -2428,10 +2123,6 @@ Associera filextentioner - Set - Ange - - more mer @@ -2461,37 +2152,6 @@ - QTableWidget - - Room Name - Rumnamn - - - C - A - - - T - L - - - Owner - Ägare - - - Map - Karta - - - Rules - Regler - - - Weapons - Vapen - - - RoomsListModel In progress @@ -2566,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 @@ -2623,10 +2268,6 @@ Osårbar - Add Mines - Lägg till minor - - Random Order Slumpad ordning diff -r 6237d2f002ba -r 2bc61f8841a1 share/hedgewars/Data/Locale/hedgewars_tr_TR.ts --- a/share/hedgewars/Data/Locale/hedgewars_tr_TR.ts Sun Sep 16 23:52:36 2012 +0200 +++ b/share/hedgewars/Data/Locale/hedgewars_tr_TR.ts Sun Oct 28 15:12:37 2012 +0100 @@ -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 @@ -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 @@ -1003,18 +903,42 @@ Reset to default colors + + Proxy host + + + + Proxy port + + + + Proxy login + + + + Proxy password + + + + No proxy + + + + Socks5 proxy + + + + HTTP proxy + + + + System proxy settings + + PagePlayDemo - Error - Hata - - - OK - Tamam - - Rename dialog Yeniden adlandırma @@ -1022,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 @@ -1046,18 +958,6 @@ Katıl - Refresh - Tazele - - - Error - Hata - - - OK - Tamam - - Admin features Yönetici görevleri @@ -1066,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: @@ -1089,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 @@ -1120,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 @@ -1136,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 @@ -1258,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 @@ -1370,20 +1225,6 @@ - Are you sure? - - - - Do you really want do remove %1? - - - - Do you really want do remove %1 file(s)? - - - - - encoding @@ -1391,10 +1232,6 @@ uploading - - Do you really want do cancel uploading %1? - - QAction @@ -1561,10 +1398,6 @@ - Default - Öntanımlı - - hand drawn map... @@ -1652,10 +1485,6 @@ Takımlar - Weapons - Silahlar - - Audio/Graphic options Ses/Görüntü seçenekleri @@ -1707,6 +1536,10 @@ Description + + Proxy settings + + QLabel @@ -1723,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: @@ -1759,10 +1588,6 @@ Port: - Net nick - Takma ad - - Resolution Çözünürlük @@ -1887,10 +1712,6 @@ - Password - Parola - - % Get Away Time @@ -1986,10 +1807,6 @@ QMessageBox - Network - - - Connection to server is lost Sunucuyla olan bağlantı kesildi @@ -1998,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: @@ -2095,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.come 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 @@ -2219,17 +2138,6 @@ - QTableWidget - - Map - Harita - - - Weapons - Silahlar - - - RoomsListModel In progress @@ -2304,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 @@ -2361,10 +2254,6 @@ Ölümsüzlük - Add Mines - Mayın Ekle - - Random Order diff -r 6237d2f002ba -r 2bc61f8841a1 share/hedgewars/Data/Locale/hedgewars_uk.ts --- a/share/hedgewars/Data/Locale/hedgewars_uk.ts Sun Sep 16 23:52:36 2012 +0200 +++ b/share/hedgewars/Data/Locale/hedgewars_uk.ts Sun Oct 28 15:12:37 2012 +0100 @@ -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 Редагувати схеми @@ -86,22 +63,6 @@ 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. Не можна редагувати команду з меню вибору. Перейдіть в головне меню щоб додати, редагувати чи видалити команду. @@ -1105,18 +920,42 @@ Reset to default colors + + Proxy host + + + + Proxy port + + + + Proxy login + + + + Proxy password + + + + No proxy + + + + Socks5 proxy + + + + HTTP proxy + + + + System proxy settings + + PagePlayDemo - Error - Помилка - - - OK - Так - - Rename dialog Перейменування @@ -1124,18 +963,6 @@ Enter new file name: Введіть нове ім'я файлу: - - Cannot rename to - Не можу перейменувати на - - - Cannot delete file - Не можу видалити файл - - - Please select record from the list - Выберіть запис зі списку - PageRoomsList @@ -1148,18 +975,6 @@ Приєднатися - Refresh - Оновити - - - Error - Помилка - - - OK - Так - - Admin features Адміністрування @@ -1168,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: Правила: @@ -1247,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 @@ -1281,10 +1022,6 @@ Грунт не може бути знищений! - Add an indestructable border around the terrain - Додати невразливу рамку навколо місцевості - - Lower gravity Слабка гравітація @@ -1297,10 +1034,6 @@ Всі їжаки мають особисте силове поле - Enable random mines - Увімкнути випадкові міни - - Gain 80% of the damage you do back in health Отримання 80% здоров'я, яке втратив противник @@ -1419,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 @@ -1537,22 +1246,6 @@ - Are you sure? - - - - Do you really want do remove %1? - - - - Do you really want do remove %1 file(s)? - - - - - - - encoding @@ -1560,10 +1253,6 @@ uploading - - Do you really want do cancel uploading %1? - - QAction @@ -1651,10 +1340,6 @@ Додавати дату і час в назву записаного файлу - Reduced quality - Знижена якість - - Show ammo menu tooltips Показувати підказки в меню зброї @@ -1734,10 +1419,6 @@ В процесі - Default - За замовчуванням - - hand drawn map... вручну намальована мапа... @@ -1825,10 +1506,6 @@ Команди - Weapons - Зброя - - Audio/Graphic options Налаштування Звуку та Графіки @@ -1880,6 +1557,10 @@ Description + + Proxy settings + + QLabel @@ -1896,10 +1577,6 @@ Версія - This program is distributed under the GNU General Public License - Ця программа розповсюджується на умовах ліцензії GNU General Public License - - Developers: Розробники: @@ -1932,10 +1609,6 @@ Порт: - Net nick - Ім'я гравця - - Resolution Роздільна здатність @@ -2012,10 +1685,6 @@ Мова - Restart game to apply - Перезапустіть гру щоб застосувати - - Explosives Вибухівка @@ -2056,10 +1725,6 @@ Стерео рендеринг - Game Options - Параметри гри - - Style Стиль @@ -2068,10 +1733,6 @@ Схема - Password - Пароль - - % Get Away Time % Час Тікати @@ -2167,10 +1828,6 @@ QMessageBox - Network - Мережа - - Connection to server is lost З'єднання з сервером втрачено @@ -2179,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: @@ -2276,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.come 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 Ім'я @@ -2400,37 +2162,6 @@ - QTableWidget - - Room Name - Назва Кімнати - - - C - Кл - - - T - Км - - - Owner - Власник - - - Map - Мапа - - - Rules - Правила - - - Weapons - Зброя - - - RoomsListModel In progress @@ -2505,21 +2236,6 @@ - TCPBase - - Error - Помилка - - - Unable to start the server: %1. - Помилка запуску сервера: %1. - - - Unable to run engine: %1 ( - Помилка запуску движку: %1 ( - - - ToggleButtonWidget Vampirism @@ -2562,10 +2278,6 @@ Невразливість - Add Mines - Додати Міни - - Random Order Випадковий Порядок diff -r 6237d2f002ba -r 2bc61f8841a1 share/hedgewars/Data/Locale/hedgewars_zh_CN.ts --- a/share/hedgewars/Data/Locale/hedgewars_zh_CN.ts Sun Sep 16 23:52:36 2012 +0200 +++ b/share/hedgewars/Data/Locale/hedgewars_zh_CN.ts Sun Oct 28 15:12:37 2012 +0100 @@ -23,25 +23,6 @@ - DrawMapWidget - - - - File error - - - - - Cannot open file '%1' for writing - - - - - Cannot read file '%1' - - - - FreqSpinBox @@ -74,41 +55,12 @@ - - Error - 错误 - - - - Illegal ammo scheme - 无法使用此弹药设置 - - Edit schemes 修改游戏设置 - GameUIConfig - - Error - 错误 - - - Cannot create directory %1 - 不能创建路径 - - - Quit - 退出 - - - Cannot save options to file %1 - 不能把选项保存到 %1 - - - HWAskQuitDialog @@ -119,57 +71,57 @@ 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 @@ -1377,68 +1100,58 @@ - Save - 保存 - - - Back - 返回 - - - Weapons set - 新武器设定 - - - Edit - 修改当前武器设定 + + Proxy host + + + + + Proxy port + + + + + Proxy login + + + + + Proxy password + + + + + No proxy + + + + + System proxy settings + + + + + Socks5 proxy + + + + + HTTP proxy + 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 @@ -1474,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 管理员功能 @@ -1692,10 +1359,6 @@ PageSelectWeapon - Back - 返回 - - New 新游戏 @@ -1715,21 +1378,6 @@ Delete 删除 - - Save - 保存 - - - - PageSimpleGame - - Back - 返回 - - - Simple Game - 简单游戏 - PageSinglePlayer @@ -1780,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 @@ -1876,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 @@ -1988,11 +1584,7 @@ 游戏全屏幕 - Forts mode - 城堡模式 - - - + Show FPS 显示帧率 (FPS) @@ -2027,7 +1619,7 @@ 开启音乐 - + Show ammo menu tooltips @@ -2037,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 @@ -2113,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 级别 @@ -2223,19 +1783,19 @@ + + + Any + + + - - Any + In lobby - In lobby - - - - In progress @@ -2248,10 +1808,6 @@ 成员 - Team - 队伍 - - Team Settings @@ -2292,25 +1848,14 @@ - + Miscellaneous - Net nick - 昵称 - - - Net options - 网络选项 - - - Landscape - 地形 - - - Game scheme - 游戏设置 + + Proxy settings + @@ -2318,27 +1863,11 @@ 玩家队伍 - Team level - 队伍级别 - - Net game 网络游戏 - Servers list - 服务器列表 - - - Weapons - 武器 - - - Scheme options - 游戏设定 - - Game Modifiers 游戏修改 @@ -2367,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 @@ -2465,7 +1922,7 @@ - + FPS limit FPS 上限 @@ -2521,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: 声音: @@ -2614,10 +2063,6 @@ - Case Probability - 箱子掉落几率 - - Scheme Name: 设置名称: @@ -2640,32 +2085,32 @@ - + 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): @@ -2705,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! @@ -2753,7 +2198,7 @@ QLineEdit - + unnamed 无名 @@ -2772,14 +2217,6 @@ QMainWindow - -= by unC0Rr =- - -= by unC0Rr =- - - - Hedgewars - 刺猬大作战 - - Hedgewars %1 刺猬大作战 %1 @@ -2788,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.come 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 @@ -2968,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! @@ -3056,10 +2561,6 @@ 开始 - About - 关于 - - Start server 开始服务端 @@ -3070,23 +2571,11 @@ 更新 - Waiting - 等待中 - - Load 读取 - Weapons scheme - 武器设定 - - - Training - 训练 - - Specify 指定 @@ -3121,11 +2610,7 @@ 删除 - Join official server - 加入官方服务器 - - - + Ready 准备好了 @@ -3140,7 +2625,7 @@ - + Associate file extensions @@ -3171,46 +2656,12 @@ - + more - QTableWidget - - Room name - 房间名称 - - - Players number - 玩家数量 - - - Round in progress - 回合数 - - - - QToolBox - - Actions - 行动 - - - Weapons - 武器 - - - Weapon properties - 武器选项 - - - Other - 其他 - - - RoomsListModel @@ -3291,38 +2742,19 @@ - - + + new - - + + copy of - TCPBase - - - - Error - 错误 - - - - Unable to start the server: %1. - 无法开始服务端: %1. - - - - Unable to run engine: %1 ( - 无法运行引擎: %1 ( - - - ToggleButtonWidget @@ -3449,10 +2881,6 @@ Add Bottom Border - - Add Mines - 布置地雷 - binds @@ -3481,10 +2909,6 @@ - jump - - - attack 攻击 @@ -4188,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 6237d2f002ba -r 2bc61f8841a1 share/hedgewars/Data/Locale/hedgewars_zh_TW.ts --- a/share/hedgewars/Data/Locale/hedgewars_zh_TW.ts Sun Sep 16 23:52:36 2012 +0200 +++ b/share/hedgewars/Data/Locale/hedgewars_zh_TW.ts Sun Oct 28 15:12:37 2012 +0100 @@ -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 修改遊戲設置 @@ -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 @@ -1029,18 +903,42 @@ Reset to default colors + + Proxy host + + + + Proxy port + + + + Proxy login + + + + Proxy password + + + + No proxy + + + + Socks5 proxy + + + + HTTP proxy + + + + System proxy settings + + PagePlayDemo - Error - 錯誤 - - - OK - 確認 - - Rename dialog 重命名對話方塊 @@ -1048,18 +946,6 @@ Enter new file name: 輸入新的檔案名: - - Cannot rename to - 不能改變名字 - - - Cannot delete file - 不能刪除檔 - - - Please select record from the list - 請從清單選擇記錄 - PageRoomsList @@ -1072,18 +958,6 @@ 加入 - Refresh - 刷新 - - - Error - 錯誤 - - - OK - 確認 - - Admin features 管理員功能 @@ -1092,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: @@ -1159,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 @@ -1186,10 +999,6 @@ 刪除 - Enable random mines - 開啟隨機地雷 - - Gain 80% of the damage you do back in health 傷害的80%變成自身力量 @@ -1222,10 +1031,6 @@ 地面無法破壞! - Add an indestructable border around the terrain - 添加不可毀壞地邊界 - - Lower gravity 低重力 @@ -1328,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 @@ -1440,20 +1225,6 @@ - Are you sure? - - - - Do you really want do remove %1? - - - - Do you really want do remove %1 file(s)? - - - - - encoding @@ -1461,10 +1232,6 @@ uploading - - Do you really want do cancel uploading %1? - - QAction @@ -1552,10 +1319,6 @@ 啟動時檢查程式升級 - Reduced quality - 降低顯示效果 - - Show ammo menu tooltips 顯示武器提示訊息 @@ -1635,10 +1398,6 @@ - Default - 默認 - - hand drawn map... @@ -1738,10 +1497,6 @@ 網路遊戲 - Weapons - 武器 - - Game Modifiers 遊戲修改 @@ -1781,18 +1536,14 @@ Description + + Proxy settings + + QLabel - Net nick - 網路遊戲昵稱 - - - This program is distributed under the GNU General Public License - This program is distributed under the GNU General Public License - - Resolution 解析度 @@ -1961,10 +1712,6 @@ - Password - 密碼 - - % Get Away Time @@ -2064,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: @@ -2169,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.come 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 匿稱 @@ -2293,37 +2138,6 @@ - QTableWidget - - Room Name - 房間名 - - - C - 人數 - - - T - 隊伍 - - - Owner - 創建者 - - - Map - 地圖 - - - Rules - 規則 - - - Weapons - 武器 - - - RoomsListModel In progress @@ -2398,21 +2212,6 @@ - TCPBase - - Error - 錯誤 - - - Unable to start the server: %1. - 無法開始服務端: %1. - - - Unable to run engine: %1 ( - 無法運行引擎: %1 ( - - - ToggleButtonWidget Vampirism @@ -2455,10 +2254,6 @@ 刀槍不入 - Add Mines - 佈置地雷 - - Random Order 隨機順序 diff -r 6237d2f002ba -r 2bc61f8841a1 share/hedgewars/Data/Locale/it.lua --- a/share/hedgewars/Data/Locale/it.lua Sun Sep 16 23:52:36 2012 +0200 +++ b/share/hedgewars/Data/Locale/it.lua Sun Oct 28 15:12:37 2012 +0100 @@ -2,159 +2,594 @@ ["..."] = "...", [":("] = ":(", ["!!!"] = "!!!", +-- ["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 +-- ["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 +-- ["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 +-- ["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 ["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", ["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 ["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 +-- ["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!", +-- ["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!", ["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 ["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 +-- ["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]", +-- [" 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 +-- ["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"] = "Fuoco", +-- ["First aid kits?!"] = "", -- A_Classic_Fairytale:united +-- ["First Blood"] = "", -- A_Classic_Fairytale:first_blood +-- ["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 +-- ["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 +-- ["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 +-- ["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", +-- ["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 ["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...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 +-- ["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 ["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!", ["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 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", +-- ["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 +-- ["May the spirits aid you in all your quests!"] = "", -- A_Classic_Fairytale:backstab +-- ["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 +-- ["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 +-- ["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 +-- ["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 +-- ["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 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 ["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", +-- ["Pfew! That was close!"] = "", -- A_Classic_Fairytale:shadow +-- ["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 ["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 +-- ["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"] = "PUNTEGGIO", ["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 +-- ["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 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!", @@ -168,55 +603,320 @@ ["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!"] = "", -- Space_Invasion ["Sniper Training"] = "Addestramento sull'utilizzo del Fucile di Precisione", ["Sniperz"] = "Cecchini", +-- ["So humiliating..."] = "", -- A_Classic_Fairytale:first_blood +-- ["So? What will it be?"] = "", -- A_Classic_Fairytale:shadow +-- ["Spawn the crate, and attack!"] = "", -- WxW +-- ["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 +-- ["Stronglings"] = "", -- A_Classic_Fairytale:shadow +-- ["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 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!", +-- ["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 +-- ["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 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 this ever end?"] = "Finirà mai?", ["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 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 ["'Zooka Team"] = "Squadra 'Zooka", +-- ["Zork"] = "", -- A_Classic_Fairytale:dragon, A_Classic_Fairytale:family, A_Classic_Fairytale:queen } diff -r 6237d2f002ba -r 2bc61f8841a1 share/hedgewars/Data/Locale/it.txt --- a/share/hedgewars/Data/Locale/it.txt Sun Sep 16 23:52:36 2012 +0200 +++ b/share/hedgewars/Data/Locale/it.txt Sun Oct 28 15:12:37 2012 +0100 @@ -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à @@ -452,6 +453,8 @@ 03:53=TARDIS Modello 40 03:54=Kit di costruzione 03:55=Utilità di costruzione +03:56=Arma da congelamento di massa +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 6237d2f002ba -r 2bc61f8841a1 share/hedgewars/Data/Locale/ko.lua --- a/share/hedgewars/Data/Locale/ko.lua Sun Sep 16 23:52:36 2012 +0200 +++ b/share/hedgewars/Data/Locale/ko.lua Sun Oct 28 15:12:37 2012 +0100 @@ -2,158 +2,594 @@ -- [":("] = "", -- ["!!!"] = "", -- ["..."] = "", +-- ["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 +-- ["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 +-- ["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 +-- ["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 -- ["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"] = "", -- ["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 -- ["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 +-- ["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!"] = "", +-- ["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!"] = "", -- ["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 -- ["Each turn you get 1-3 random weapons"] = "", -- ["Each turn you get one random weapon"] = "", +-- ["Eagle Eye"] = "", -- A_Classic_Fairytale:backstab +-- ["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]"] = "", +-- [" 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 +-- ["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"] = "", +-- ["First aid kits?!"] = "", -- A_Classic_Fairytale:united +-- ["First Blood"] = "", -- A_Classic_Fairytale:first_blood +-- ["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 +-- ["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 +-- ["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 +-- ["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!"] = "", +-- ["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 -- ["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...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 +-- ["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 -- ["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!"] = "", -- ["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 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"] = "", +-- ["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 +-- ["May the spirits aid you in all your quests!"] = "", -- A_Classic_Fairytale:backstab +-- ["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 +-- ["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 +-- ["Nade Boy"] = "", -- Basic_Training_-_Grenade +-- ["Name"] = "", -- A_Classic_Fairytale:queen -- ["Nameless Heroes"] = "", +-- ["Nancy Screw"] = "", -- A_Classic_Fairytale:enemy, A_Classic_Fairytale:queen +-- ["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 +-- ["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 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 -- ["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"] = "", +-- ["Pfew! That was close!"] = "", -- A_Classic_Fairytale:shadow +-- ["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 -- ["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|"] = "", +-- ["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"] = "", -- ["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 +-- ["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 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!"] = "", @@ -167,54 +603,317 @@ -- ["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!"] = "", -- Space_Invasion -- ["Sniper Training"] = "", -- ["Sniperz"] = "", +-- ["So humiliating..."] = "", -- A_Classic_Fairytale:first_blood +-- ["So? What will it be?"] = "", -- A_Classic_Fairytale:shadow +-- ["Spawn the crate, and attack!"] = "", -- WxW +-- ["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 +-- ["Stronglings"] = "", -- A_Classic_Fairytale:shadow +-- ["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 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!"] = "", +-- ["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 +-- ["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 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 this ever end?"] = "", -- ["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 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 -- ["'Zooka Team"] = "", +-- ["Zork"] = "", -- A_Classic_Fairytale:dragon, A_Classic_Fairytale:family, A_Classic_Fairytale:queen } diff -r 6237d2f002ba -r 2bc61f8841a1 share/hedgewars/Data/Locale/lt.lua --- a/share/hedgewars/Data/Locale/lt.lua Sun Sep 16 23:52:36 2012 +0200 +++ b/share/hedgewars/Data/Locale/lt.lua Sun Oct 28 15:12:37 2012 +0100 @@ -2,156 +2,592 @@ [":("] = ":(", ["!!!"] = "!!!", ["..."] = "...", +-- ["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 +-- ["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 +-- ["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 +-- ["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 ["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"] = "", ["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 ["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 +-- ["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!"] = "", +-- ["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!", ["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 ["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 +-- ["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"], +-- [" 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 +-- ["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"] = "Ugnis", +-- ["First aid kits?!"] = "", -- A_Classic_Fairytale:united +-- ["First Blood"] = "", -- A_Classic_Fairytale:first_blood +-- ["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 +-- ["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 +-- ["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 +-- ["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", +-- ["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 ["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...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 +-- ["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 ["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!"] = "", -- ["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 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"] = "", +-- ["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 +-- ["May the spirits aid you in all your quests!"] = "", -- A_Classic_Fairytale:backstab +-- ["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", +-- ["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 +-- ["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 +-- ["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 +-- ["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 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 ["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", +-- ["Pfew! That was close!"] = "", -- A_Classic_Fairytale:shadow +-- ["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 ["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 +-- ["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"] = "Taðkai", ["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 +-- ["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 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!", @@ -165,56 +601,319 @@ -- ["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!"] = "", -- Space_Invasion ["Sniper Training"] = "Snaiperio Treniruotë", ["Sniperz"] = "Snaiperiai", +-- ["So humiliating..."] = "", -- A_Classic_Fairytale:first_blood +-- ["So? What will it be?"] = "", -- A_Classic_Fairytale:shadow +-- ["Spawn the crate, and attack!"] = "", -- WxW +-- ["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 +-- ["Stronglings"] = "", -- A_Classic_Fairytale:shadow +-- ["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 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!"] = "", +-- ["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 +-- ["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 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 this ever end?"] = "", ["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 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 ["'Zooka Team"] = "'Zukos Komanda", +-- ["Zork"] = "", -- A_Classic_Fairytale:dragon, A_Classic_Fairytale:family, A_Classic_Fairytale:queen } diff -r 6237d2f002ba -r 2bc61f8841a1 share/hedgewars/Data/Locale/missions_da.txt diff -r 6237d2f002ba -r 2bc61f8841a1 share/hedgewars/Data/Locale/pl.lua --- a/share/hedgewars/Data/Locale/pl.lua Sun Sep 16 23:52:36 2012 +0200 +++ b/share/hedgewars/Data/Locale/pl.lua Sun Oct 28 15:12:37 2012 +0100 @@ -2,156 +2,592 @@ [":("] = ":(", ["!!!"] = "!!!", ["..."] = "...", +-- ["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 +-- ["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 +-- ["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 +-- ["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 ["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", ["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.", ["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 +-- ["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!"] = "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", -- ["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 ["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 +-- ["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."] = "", -- 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]", +-- [" 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 +-- ["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"] = "Ogień", +-- ["First aid kits?!"] = "", -- A_Classic_Fairytale:united +-- ["First Blood"] = "", -- A_Classic_Fairytale:first_blood +-- ["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 +-- ["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 +-- ["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 +-- ["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", +-- ["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 ["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...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 +-- ["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 ["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!", ["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 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!", +-- ["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 +-- ["May the spirits aid you in all your quests!"] = "", -- A_Classic_Fairytale:backstab +-- ["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", +-- ["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 +-- ["Nade Boy"] = "", -- Basic_Training_-_Grenade +-- ["Name"] = "", -- A_Classic_Fairytale:queen ["Nameless Heroes"] = "Bezimienni Bohaterowie", +-- ["Nancy Screw"] = "", -- A_Classic_Fairytale:enemy, A_Classic_Fairytale:queen +-- ["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 +-- ["Not all hogs are born equal."] = "", -- 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 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 ["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", +-- ["Pfew! That was close!"] = "", -- A_Classic_Fairytale:shadow +-- ["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 ["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 +-- ["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"] = "PUNKTY", ["sec"] = "sek", +-- ["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 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", @@ -165,56 +601,319 @@ ["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!"] = "", -- Space_Invasion ["Sniper Training"] = "Trening Snajperski", ["Sniperz"] = "Snajperzy", +-- ["So humiliating..."] = "", -- A_Classic_Fairytale:first_blood +-- ["So? What will it be?"] = "", -- A_Classic_Fairytale:shadow +-- ["Spawn the crate, and attack!"] = "", -- WxW +-- ["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 +-- ["Stronglings"] = "", -- A_Classic_Fairytale:shadow +-- ["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 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!", +-- ["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 +-- ["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", +-- ["United We Stand"] = "", -- A_Classic_Fairytale:united + ["Unit"] = "Jednostka", -- ["Unlimited Attacks"] = "", +-- ["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."] = "", -- 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 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 this ever end?"] = "Co to się kiedyś skończy?", ["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 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 ["'Zooka Team"] = "Bazookinierzy", +-- ["Zork"] = "", -- A_Classic_Fairytale:dragon, A_Classic_Fairytale:family, A_Classic_Fairytale:queen } diff -r 6237d2f002ba -r 2bc61f8841a1 share/hedgewars/Data/Locale/pl.txt --- a/share/hedgewars/Data/Locale/pl.txt Sun Sep 16 23:52:36 2012 +0200 +++ b/share/hedgewars/Data/Locale/pl.txt Sun Oct 28 15:12:37 2012 +0100 @@ -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 6237d2f002ba -r 2bc61f8841a1 share/hedgewars/Data/Locale/pt_BR.lua --- a/share/hedgewars/Data/Locale/pt_BR.lua Sun Sep 16 23:52:36 2012 +0200 +++ b/share/hedgewars/Data/Locale/pt_BR.lua Sun Oct 28 15:12:37 2012 +0100 @@ -2,158 +2,594 @@ -- [":("] = "", -- ["!!!"] = "", -- ["..."] = "", +-- ["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 +-- ["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 +-- ["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 +-- ["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 -- ["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"] = "", ["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 -- ["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 +-- ["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!"] = "", +-- ["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!"] = "", -- ["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 -- ["Each turn you get 1-3 random weapons"] = "", -- ["Each turn you get one random weapon"] = "", +-- ["Eagle Eye"] = "", -- A_Classic_Fairytale:backstab +-- ["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]"] = "", +-- [" 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 +-- ["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"] = "", +-- ["First aid kits?!"] = "", -- A_Classic_Fairytale:united +-- ["First Blood"] = "", -- A_Classic_Fairytale:first_blood +-- ["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 +-- ["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 +-- ["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 +-- ["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!"] = "", +-- ["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 ["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...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 +-- ["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 ["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!"] = "", -- ["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 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"] = "", +-- ["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 +-- ["May the spirits aid you in all your quests!"] = "", -- A_Classic_Fairytale:backstab +-- ["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 +-- ["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 +-- ["Nade Boy"] = "", -- Basic_Training_-_Grenade +-- ["Name"] = "", -- A_Classic_Fairytale:queen -- ["Nameless Heroes"] = "", +-- ["Nancy Screw"] = "", -- A_Classic_Fairytale:enemy, A_Classic_Fairytale:queen +-- ["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 +-- ["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 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 -- ["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"] = "", +-- ["Pfew! That was close!"] = "", -- A_Classic_Fairytale:shadow +-- ["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 -- ["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|"] = "", +-- ["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"] = "", -- ["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 +-- ["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 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!"] = "", @@ -167,54 +603,317 @@ -- ["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!"] = "", -- Space_Invasion ["Sniper Training"] = "Treino com o Rifle Sniper", ["Sniperz"] = "Franco-Atiradores", +-- ["So humiliating..."] = "", -- A_Classic_Fairytale:first_blood +-- ["So? What will it be?"] = "", -- A_Classic_Fairytale:shadow +-- ["Spawn the crate, and attack!"] = "", -- WxW +-- ["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 +-- ["Stronglings"] = "", -- A_Classic_Fairytale:shadow +-- ["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 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!"] = "", +-- ["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 +-- ["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 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 this ever end?"] = "", -- ["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 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 ["'Zooka Team"] = "Bazuqueiros", +-- ["Zork"] = "", -- A_Classic_Fairytale:dragon, A_Classic_Fairytale:family, A_Classic_Fairytale:queen } diff -r 6237d2f002ba -r 2bc61f8841a1 share/hedgewars/Data/Locale/pt_PT.lua --- a/share/hedgewars/Data/Locale/pt_PT.lua Sun Sep 16 23:52:36 2012 +0200 +++ b/share/hedgewars/Data/Locale/pt_PT.lua Sun Oct 28 15:12:37 2012 +0100 @@ -2,157 +2,593 @@ [":("] = ":(", ["!!!"] = "!!!", ["..."] = "...", +-- ["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!"] = "Bónus de precisão!", +-- ["Ace"] = "", -- User_Mission_-_RCPlane_Challenge, User_Mission_-_Rope_Knock_Challenge -- ["Achievement Unlocked"] = "Desbloqueado", -- 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 +-- ["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 +-- ["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 +-- ["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 -- ["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"] = "", ["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"] = "", -- 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."] = "", -- WxW +-- ["Congratulations"] = "", -- Basic_Training_-_Rope ["Congratulations!"] = "Parabéns!", +-- ["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 -- ["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."] = "", -- 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 +-- ["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!"] = "", +-- ["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!"] = "", -- ["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 -- ["Each turn you get 1-3 random weapons"] = "", -- ["Each turn you get one random weapon"] = "", +-- ["Eagle Eye"] = "", -- A_Classic_Fairytale:backstab +-- ["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]", +-- [" 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 +-- ["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"] = "", +-- ["First aid kits?!"] = "", -- A_Classic_Fairytale:united +-- ["First Blood"] = "", -- A_Classic_Fairytale:first_blood +-- ["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 +-- ["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 +-- ["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 +-- ["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!"] = "", +-- ["Hannibal"] = "", -- A_Classic_Fairytale:epil -- ["Hapless Hogs"] = "", -- [" Hapless Hogs left!"] = "", +-- ["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 ["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...actually...I didn't either."] = "", -- A_Classic_Fairytale:enemy ["Hmmm..."] = "Hmmm...", +-- ["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 +-- ["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 ["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!", -- ["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 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"] = "", +-- ["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 +-- ["May the spirits aid you in all your quests!"] = "", -- A_Classic_Fairytale:backstab +-- ["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 +-- ["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 +-- ["Nade Boy"] = "", -- Basic_Training_-_Grenade +-- ["Name"] = "", -- A_Classic_Fairytale:queen -- ["Nameless Heroes"] = "", +-- ["Nancy Screw"] = "", -- A_Classic_Fairytale:enemy, A_Classic_Fairytale:queen +-- ["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 +-- ["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 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 ["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"] = "", +-- ["Pfew! That was close!"] = "", -- A_Classic_Fairytale:shadow +-- ["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 ["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|"] = "", +-- ["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"] = "RESULTADOS", ["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 +-- ["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 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!", @@ -166,56 +602,319 @@ -- ["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!"] = "", -- Space_Invasion ["Sniper Training"] = "Treino com Sniper", ["Sniperz"] = "Sniperz", +-- ["So humiliating..."] = "", -- A_Classic_Fairytale:first_blood +-- ["So? What will it be?"] = "", -- A_Classic_Fairytale:shadow +-- ["Spawn the crate, and attack!"] = "", -- WxW +-- ["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 +-- ["Stronglings"] = "", -- A_Classic_Fairytale:shadow +-- ["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 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", +-- ["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 +-- ["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 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 this ever end?"] = "", ["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 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 ["'Zooka Team"] = "Bazuqueiros", +-- ["Zork"] = "", -- A_Classic_Fairytale:dragon, A_Classic_Fairytale:family, A_Classic_Fairytale:queen } diff -r 6237d2f002ba -r 2bc61f8841a1 share/hedgewars/Data/Locale/ru.lua --- a/share/hedgewars/Data/Locale/ru.lua Sun Sep 16 23:52:36 2012 +0200 +++ b/share/hedgewars/Data/Locale/ru.lua Sun Oct 28 15:12:37 2012 +0100 @@ -2,158 +2,594 @@ -- [":("] = "", -- ["!!!"] = "", -- ["..."] = "", +-- ["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 +-- ["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 +-- ["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 +-- ["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 -- ["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"] = "", -- ["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!"] = "Поздравления!", -- ["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 +-- ["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!"] = "Двойное убийство!", +-- ["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!"] = "", -- ["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 -- ["Each turn you get 1-3 random weapons"] = "", -- ["Each turn you get one random weapon"] = "", +-- ["Eagle Eye"] = "", -- A_Classic_Fairytale:backstab +-- ["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]"] = "", +-- [" 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 +-- ["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"] = "", +-- ["First aid kits?!"] = "", -- A_Classic_Fairytale:united +-- ["First Blood"] = "", -- A_Classic_Fairytale:first_blood +-- ["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 +-- ["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 +-- ["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 +-- ["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!"] = "", +-- ["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 -- ["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...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 +-- ["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 ["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!"] = "", -- ["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 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"] = "", +-- ["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 +-- ["May the spirits aid you in all your quests!"] = "", -- A_Classic_Fairytale:backstab +-- ["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 +-- ["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 +-- ["Nade Boy"] = "", -- Basic_Training_-_Grenade +-- ["Name"] = "", -- A_Classic_Fairytale:queen ["Nameless Heroes"] = "Безымянные герои", +-- ["Nancy Screw"] = "", -- A_Classic_Fairytale:enemy, A_Classic_Fairytale:queen +-- ["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 +-- ["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 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 -- ["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"] = "", +-- ["Pfew! That was close!"] = "", -- A_Classic_Fairytale:shadow +-- ["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 -- ["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|"] = "", +-- ["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"] = "", ["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 +-- ["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 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!"] = "", @@ -167,54 +603,317 @@ -- ["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!"] = "", -- Space_Invasion ["Sniper Training"] = "Тренировка снайпера", -- ["Sniperz"] = "", +-- ["So humiliating..."] = "", -- A_Classic_Fairytale:first_blood +-- ["So? What will it be?"] = "", -- A_Classic_Fairytale:shadow +-- ["Spawn the crate, and attack!"] = "", -- WxW +-- ["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 +-- ["Stronglings"] = "", -- A_Classic_Fairytale:shadow +-- ["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 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!"] = "", +-- ["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 +-- ["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 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 this ever end?"] = "", -- ["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 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 -- ["'Zooka Team"] = "", +-- ["Zork"] = "", -- A_Classic_Fairytale:dragon, A_Classic_Fairytale:family, A_Classic_Fairytale:queen } diff -r 6237d2f002ba -r 2bc61f8841a1 share/hedgewars/Data/Locale/sk.lua --- a/share/hedgewars/Data/Locale/sk.lua Sun Sep 16 23:52:36 2012 +0200 +++ b/share/hedgewars/Data/Locale/sk.lua Sun Oct 28 15:12:37 2012 +0100 @@ -2,137 +2,592 @@ [":("] = ":(", ["!!!"] = "!!!", ["..."] = "...", +-- ["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 +-- ["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 +-- ["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 +-- ["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 ["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", ["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 ["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 +-- ["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!", +-- ["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!", ["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 ["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 +-- ["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]", +-- [" 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 +-- ["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"] = "", +-- ["First aid kits?!"] = "", -- A_Classic_Fairytale:united +-- ["First Blood"] = "", -- A_Classic_Fairytale:first_blood +-- ["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 +-- ["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 +-- ["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 +-- ["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!", +-- ["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 ["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...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 +-- ["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 ["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 +-- ["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 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 +-- ["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 +-- ["May the spirits aid you in all your quests!"] = "", -- A_Classic_Fairytale:backstab +-- ["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 +-- ["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 +-- ["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 +-- ["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 +-- ["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 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 ["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", +-- ["Pfew! That was close!"] = "", -- A_Classic_Fairytale:shadow +-- ["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 ["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 +-- ["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"] = "SKÓRE", ["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 +-- ["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 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ý!", @@ -143,59 +598,326 @@ ["Shield Seeker!"] = "Hľadač štítov!", ["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!"] = "", -- Space_Invasion ["Sniper Training"] = "Tréning pre ostreľovačov", ["Sniperz"] = "Ostreľovači", +-- ["So humiliating..."] = "", -- A_Classic_Fairytale:first_blood +-- ["So? What will it be?"] = "", -- A_Classic_Fairytale:shadow +-- ["Spawn the crate, and attack!"] = "", -- WxW +-- ["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 +-- ["Stronglings"] = "", -- A_Classic_Fairytale:shadow +-- ["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 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: ", +-- ["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 +-- ["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 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 this ever end?"] = "Skončí to vôbec niekedy?", ["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 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 ["'Zooka Team"] = "Bazuka tím", +-- ["Zork"] = "", -- A_Classic_Fairytale:dragon, A_Classic_Fairytale:family, A_Classic_Fairytale:queen } diff -r 6237d2f002ba -r 2bc61f8841a1 share/hedgewars/Data/Locale/stub.lua --- a/share/hedgewars/Data/Locale/stub.lua Sun Sep 16 23:52:36 2012 +0200 +++ b/share/hedgewars/Data/Locale/stub.lua Sun Oct 28 15:12:37 2012 +0100 @@ -2,158 +2,594 @@ -- [":("] = "", -- ["!!!"] = "", -- ["..."] = "", +-- ["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 +-- ["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 +-- ["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 +-- ["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 -- ["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"] = "", -- ["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 -- ["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 +-- ["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!"] = "", +-- ["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!"] = "", -- ["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 -- ["Each turn you get 1-3 random weapons"] = "", -- ["Each turn you get one random weapon"] = "", +-- ["Eagle Eye"] = "", -- A_Classic_Fairytale:backstab +-- ["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]"] = "", +-- [" 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 +-- ["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"] = "", +-- ["First aid kits?!"] = "", -- A_Classic_Fairytale:united +-- ["First Blood"] = "", -- A_Classic_Fairytale:first_blood +-- ["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 +-- ["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 +-- ["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 +-- ["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!"] = "", +-- ["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 -- ["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...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 +-- ["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 -- ["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!"] = "", -- ["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 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"] = "", +-- ["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 +-- ["May the spirits aid you in all your quests!"] = "", -- A_Classic_Fairytale:backstab +-- ["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 +-- ["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 +-- ["Nade Boy"] = "", -- Basic_Training_-_Grenade +-- ["Name"] = "", -- A_Classic_Fairytale:queen -- ["Nameless Heroes"] = "", +-- ["Nancy Screw"] = "", -- A_Classic_Fairytale:enemy, A_Classic_Fairytale:queen +-- ["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 +-- ["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 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 -- ["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"] = "", +-- ["Pfew! That was close!"] = "", -- A_Classic_Fairytale:shadow +-- ["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 -- ["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|"] = "", +-- ["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"] = "", -- ["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 +-- ["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 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!"] = "", @@ -167,54 +603,317 @@ -- ["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!"] = "", -- Space_Invasion -- ["Sniper Training"] = "", -- ["Sniperz"] = "", +-- ["So humiliating..."] = "", -- A_Classic_Fairytale:first_blood +-- ["So? What will it be?"] = "", -- A_Classic_Fairytale:shadow +-- ["Spawn the crate, and attack!"] = "", -- WxW +-- ["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 +-- ["Stronglings"] = "", -- A_Classic_Fairytale:shadow +-- ["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 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!"] = "", +-- ["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 +-- ["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 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 this ever end?"] = "", -- ["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 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 -- ["'Zooka Team"] = "", +-- ["Zork"] = "", -- A_Classic_Fairytale:dragon, A_Classic_Fairytale:family, A_Classic_Fairytale:queen } diff -r 6237d2f002ba -r 2bc61f8841a1 share/hedgewars/Data/Locale/sv.lua --- a/share/hedgewars/Data/Locale/sv.lua Sun Sep 16 23:52:36 2012 +0200 +++ b/share/hedgewars/Data/Locale/sv.lua Sun Oct 28 15:12:37 2012 +0100 @@ -2,158 +2,594 @@ -- ["..."] = "", [":("] = ":(", ["!!!"] = "!!!", +-- ["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 +-- ["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 +-- ["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 +-- ["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 -- ["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"] = "", ["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 ["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 +-- ["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!"] = "", +-- ["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!"] = "", -- ["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 -- ["Each turn you get 1-3 random weapons"] = "", -- ["Each turn you get one random weapon"] = "", +-- ["Eagle Eye"] = "", -- A_Classic_Fairytale:backstab +-- ["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]"] = "", +-- [" 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 +-- ["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"] = "", +-- ["First aid kits?!"] = "", -- A_Classic_Fairytale:united +-- ["First Blood"] = "", -- A_Classic_Fairytale:first_blood +-- ["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 +-- ["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 +-- ["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 +-- ["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!"] = "", +-- ["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 ["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...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 +-- ["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 ["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!"] = "", -- ["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 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"] = "", +-- ["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 +-- ["May the spirits aid you in all your quests!"] = "", -- A_Classic_Fairytale:backstab +-- ["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 +-- ["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 +-- ["Nade Boy"] = "", -- Basic_Training_-_Grenade +-- ["Name"] = "", -- A_Classic_Fairytale:queen -- ["Nameless Heroes"] = "", +-- ["Nancy Screw"] = "", -- A_Classic_Fairytale:enemy, A_Classic_Fairytale:queen +-- ["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 +-- ["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 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 ["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"] = "", +-- ["Pfew! That was close!"] = "", -- A_Classic_Fairytale:shadow +-- ["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 -- ["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|"] = "", +-- ["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"] = "", ["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 +-- ["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 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!"] = "", @@ -167,54 +603,317 @@ -- ["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!"] = "", -- Space_Invasion ["Sniper Training"] = "Prickskyttesträning", ["Sniperz"] = "Prickskyttarna", +-- ["So humiliating..."] = "", -- A_Classic_Fairytale:first_blood +-- ["So? What will it be?"] = "", -- A_Classic_Fairytale:shadow +-- ["Spawn the crate, and attack!"] = "", -- WxW +-- ["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 +-- ["Stronglings"] = "", -- A_Classic_Fairytale:shadow +-- ["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 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!"] = "", +-- ["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 +-- ["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 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 this ever end?"] = "", -- ["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 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 ["'Zooka Team"] = "Bazookalaget", +-- ["Zork"] = "", -- A_Classic_Fairytale:dragon, A_Classic_Fairytale:family, A_Classic_Fairytale:queen } diff -r 6237d2f002ba -r 2bc61f8841a1 share/hedgewars/Data/Locale/uk.lua --- a/share/hedgewars/Data/Locale/uk.lua Sun Sep 16 23:52:36 2012 +0200 +++ b/share/hedgewars/Data/Locale/uk.lua Sun Oct 28 15:12:37 2012 +0100 @@ -1,159 +1,592 @@ 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 +-- ["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 +-- ["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 +-- ["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 ["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"] = "Катапульта для бочок", ["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!"] = "Вітаємо!", ["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 +-- ["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!"] = "Подвійне Вбивство!", +-- ["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!"] = "Мисливець за Джмелями!", ["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 ["Each turn you get 1-3 random weapons"] = "Кожного ходу ви отримуєте 1-3 випадкової зброї", ["Each turn you get one random weapon"] = "Кожного ходу ви отримуєте одну випадкову зброю", +-- ["Eagle Eye"] = "", -- A_Classic_Fairytale:backstab +-- ["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]"] = "", +-- [" 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 +-- ["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"] = "Вогонь", +-- ["First aid kits?!"] = "", -- A_Classic_Fairytale:united +-- ["First Blood"] = "", -- A_Classic_Fairytale:first_blood +-- ["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 +-- ["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 +-- ["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 +-- ["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"] = "Нещасні Їжаки", +-- ["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 ["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...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 +-- ["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 ["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!"] = "Так тримати!", ["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 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"] = "Жвавий Рятівник", +-- ["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 +-- ["May the spirits aid you in all your quests!"] = "", -- A_Classic_Fairytale:backstab +-- ["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 +-- ["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 +-- ["Nade Boy"] = "", -- Basic_Training_-_Grenade +-- ["Name"] = "", -- A_Classic_Fairytale:queen ["Nameless Heroes"] = "Безіменні Герої", +-- ["Nancy Screw"] = "", -- A_Classic_Fairytale:enemy, A_Classic_Fairytale:queen +-- ["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 +-- ["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 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 ["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"] = "Боєприпаси на їжака", +-- ["Pfew! That was close!"] = "", -- A_Classic_Fairytale:shadow +-- ["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 ["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 +-- ["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"] = "РАХУНОК", ["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 +-- ["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 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!"] = "Щит повністю заряджений!", @@ -167,54 +600,320 @@ ["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!"] = "", -- Space_Invasion ["Sniper Training"] = "Снайперське тренування", -- ["Sniperz"] = "", +-- ["So humiliating..."] = "", -- A_Classic_Fairytale:first_blood +-- ["So? What will it be?"] = "", -- A_Classic_Fairytale:shadow +-- ["Spawn the crate, and attack!"] = "", -- WxW +-- ["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 +-- ["Stronglings"] = "", -- A_Classic_Fairytale:shadow +-- ["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 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!"] = "ТРАСУ НЕ ПРОЙДЕНО!", +-- ["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 +-- ["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 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 this ever end?"] = "Це коли-небудь закінчиться?", ["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 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 ["'Zooka Team"] = "Команда 'Zooka", +-- ["Zork"] = "", -- A_Classic_Fairytale:dragon, A_Classic_Fairytale:family, A_Classic_Fairytale:queen + ["!!!"] = "Я!", } diff -r 6237d2f002ba -r 2bc61f8841a1 share/hedgewars/Data/Locale/zh_CN.lua --- a/share/hedgewars/Data/Locale/zh_CN.lua Sun Sep 16 23:52:36 2012 +0200 +++ b/share/hedgewars/Data/Locale/zh_CN.lua Sun Oct 28 15:12:37 2012 +0100 @@ -1,162 +1,598 @@ 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 +-- ["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 +-- ["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 +-- ["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 -- ["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"] = "", ["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!"] = "恭喜", ["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 +-- ["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!"] = "", +-- ["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!"] = "", -- ["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 -- ["Each turn you get 1-3 random weapons"] = "", -- ["Each turn you get one random weapon"] = "", +-- ["Eagle Eye"] = "", -- A_Classic_Fairytale:backstab +-- ["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]"] = "", +-- [" 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 +-- ["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"] = "", +-- ["First aid kits?!"] = "", -- A_Classic_Fairytale:united +-- ["First Blood"] = "", -- A_Classic_Fairytale:first_blood +-- ["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 +-- ["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 +-- ["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 +-- ["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!"] = "", +-- ["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 ["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...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 +-- ["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 ["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!"] = "", -- ["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 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"] = "", +-- ["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 +-- ["May the spirits aid you in all your quests!"] = "", -- A_Classic_Fairytale:backstab +-- ["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 +-- ["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 +-- ["Nade Boy"] = "", -- Basic_Training_-_Grenade +-- ["Name"] = "", -- A_Classic_Fairytale:queen -- ["Nameless Heroes"] = "", +-- ["Nancy Screw"] = "", -- A_Classic_Fairytale:enemy, A_Classic_Fairytale:queen +-- ["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 +-- ["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 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 ["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"] = "", +-- ["Pfew! That was close!"] = "", -- A_Classic_Fairytale:shadow +-- ["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 -- ["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|"] = "", +-- ["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"] = "", -- ["sec"] = +-- ["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 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!"] = "", @@ -170,55 +606,318 @@ -- ["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!"] = "", -- Space_Invasion ["Sniper Training"] = "狙击训练", ["Sniperz"] = "狙击手", +-- ["So humiliating..."] = "", -- A_Classic_Fairytale:first_blood +-- ["So? What will it be?"] = "", -- A_Classic_Fairytale:shadow +-- ["Spawn the crate, and attack!"] = "", -- WxW +-- ["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 +-- ["Stronglings"] = "", -- A_Classic_Fairytale:shadow +-- ["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 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!"] = "", +-- ["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 +-- ["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 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 this ever end?"] = "", -- ["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 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 ["'Zooka Team"] = "火箭队", +-- ["Zork"] = "", -- A_Classic_Fairytale:dragon, A_Classic_Fairytale:family, A_Classic_Fairytale:queen [":("] = "囧", } diff -r 6237d2f002ba -r 2bc61f8841a1 share/hedgewars/Data/Maps/CTF_Blizzard/map.lua --- a/share/hedgewars/Data/Maps/CTF_Blizzard/map.lua Sun Sep 16 23:52:36 2012 +0200 +++ b/share/hedgewars/Data/Maps/CTF_Blizzard/map.lua Sun Oct 28 15:12:37 2012 +0100 @@ -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 6237d2f002ba -r 2bc61f8841a1 share/hedgewars/Data/Maps/Control/map.lua --- a/share/hedgewars/Data/Maps/Control/map.lua Sun Sep 16 23:52:36 2012 +0200 +++ b/share/hedgewars/Data/Maps/Control/map.lua Sun Oct 28 15:12:37 2012 +0100 @@ -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 6237d2f002ba -r 2bc61f8841a1 share/hedgewars/Data/Maps/Knockball/map.lua --- a/share/hedgewars/Data/Maps/Knockball/map.lua Sun Sep 16 23:52:36 2012 +0200 +++ b/share/hedgewars/Data/Maps/Knockball/map.lua Sun Oct 28 15:12:37 2012 +0100 @@ -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 6237d2f002ba -r 2bc61f8841a1 share/hedgewars/Data/Maps/TrophyRace/map.lua --- a/share/hedgewars/Data/Maps/TrophyRace/map.lua Sun Sep 16 23:52:36 2012 +0200 +++ b/share/hedgewars/Data/Maps/TrophyRace/map.lua Sun Oct 28 15:12:37 2012 +0100 @@ -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 6237d2f002ba -r 2bc61f8841a1 share/hedgewars/Data/Missions/Campaign/A Classic Fairytale/backstab.lua --- a/share/hedgewars/Data/Missions/Campaign/A Classic Fairytale/backstab.lua Sun Sep 16 23:52:36 2012 +0200 +++ b/share/hedgewars/Data/Missions/Campaign/A Classic Fairytale/backstab.lua Sun Oct 28 15:12:37 2012 +0100 @@ -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 6237d2f002ba -r 2bc61f8841a1 share/hedgewars/Data/Missions/Campaign/A Classic Fairytale/united.lua --- a/share/hedgewars/Data/Missions/Campaign/A Classic Fairytale/united.lua Sun Sep 16 23:52:36 2012 +0200 +++ b/share/hedgewars/Data/Missions/Campaign/A Classic Fairytale/united.lua Sun Oct 28 15:12:37 2012 +0100 @@ -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 6237d2f002ba -r 2bc61f8841a1 share/hedgewars/Data/Missions/Training/Basic_Training_-_Rope.lua --- a/share/hedgewars/Data/Missions/Training/Basic_Training_-_Rope.lua Sun Sep 16 23:52:36 2012 +0200 +++ b/share/hedgewars/Data/Missions/Training/Basic_Training_-_Rope.lua Sun Oct 28 15:12:37 2012 +0100 @@ -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 6237d2f002ba -r 2bc61f8841a1 share/hedgewars/Data/Scripts/Multiplayer/Capture_the_Flag.lua --- a/share/hedgewars/Data/Scripts/Multiplayer/Capture_the_Flag.lua Sun Sep 16 23:52:36 2012 +0200 +++ b/share/hedgewars/Data/Scripts/Multiplayer/Capture_the_Flag.lua Sun Oct 28 15:12:37 2012 +0100 @@ -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 6237d2f002ba -r 2bc61f8841a1 share/hedgewars/Data/Scripts/Multiplayer/Highlander.lua --- a/share/hedgewars/Data/Scripts/Multiplayer/Highlander.lua Sun Sep 16 23:52:36 2012 +0200 +++ b/share/hedgewars/Data/Scripts/Multiplayer/Highlander.lua Sun Oct 28 15:12:37 2012 +0100 @@ -175,9 +175,9 @@ end -function onNewTurn() +--function onNewTurn() -- -end +--end function onGameTick20() diff -r 6237d2f002ba -r 2bc61f8841a1 share/hedgewars/Data/Scripts/Multiplayer/Racer.lua --- a/share/hedgewars/Data/Scripts/Multiplayer/Racer.lua Sun Sep 16 23:52:36 2012 +0200 +++ b/share/hedgewars/Data/Scripts/Multiplayer/Racer.lua Sun Oct 28 15:12:37 2012 +0100 @@ -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 6237d2f002ba -r 2bc61f8841a1 share/hedgewars/Data/Scripts/Multiplayer/Space_Invasion.lua --- a/share/hedgewars/Data/Scripts/Multiplayer/Space_Invasion.lua Sun Sep 16 23:52:36 2012 +0200 +++ b/share/hedgewars/Data/Scripts/Multiplayer/Space_Invasion.lua Sun Oct 28 15:12:37 2012 +0100 @@ -235,6 +235,7 @@ -- some console stuff local shellID = 0 local explosivesID = 0 +local luaGameTicks = 0 -- gaudyRacer local boosterOn = false @@ -296,6 +297,7 @@ -- tumbler goods --------------------- +local moveTimer = 0 local leftOn = false local rightOn = false local upOn = false @@ -316,6 +318,7 @@ local primShotsMax = 5 local primShotsLeft = 0 +local TimeLeftCounter = 0 local TimeLeft = 0 local stopMovement = false local tumbleStarted = false @@ -328,6 +331,8 @@ local shockwaveHealth = 0 local shockwaveRad = 300 +local Timer100 = 0 + local vTag = {} ----------------------------------------------- @@ -341,7 +346,8 @@ local FadeAlpha = 0 -- used to fade the circles out gracefully when player dies local pTimer = 0 -- tracking projectiles following player ---local m2Count = 0 -- handle speed of circs +local circAdjustTimer = 0 -- handle adjustment of circs direction +local m2Count = 0 -- handle speed of circs local vCirc = {} local vCCount = 0 @@ -350,6 +356,7 @@ local rCircX = {} local rCircY = {} local rAlpha = 255 +local rPingTimer = 0 local radShotsLeft = 0 local vCircActive = {} @@ -612,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 @@ -1153,10 +1160,11 @@ end -function onGameTick20() +function onGameTick() --WriteLnToConsole("Start of GameTick") + luaGameTicks = luaGameTicks + 1 -- GameTime HandleCircles() @@ -1167,7 +1175,9 @@ --end - if GameTime%100 == 0 then + Timer100 = Timer100 + 1 + if Timer100 >= 100 then + Timer100 = 0 if beam == true then shieldHealth = shieldHealth - 1 @@ -1191,7 +1201,7 @@ --runOnGears(HandleLifeSpan) --runOnGears(DeleteFarFlungBarrel) - if CirclesAreGo == true and CurrentHedgehog ~= nil then + if CirclesAreGo == true then CheckDistances() --runOnGears(CheckVarious) -- used to be in handletracking for some bizarre reason --runOnGears(ProjectileTrack) @@ -1215,7 +1225,7 @@ if (TurnTimeLeft > 0) and (TurnTimeLeft ~= TurnTime) then --AddCaption(LOC_NOT("Good to go!")) tumbleStarted = true - TimeLeft = div(TurnTime, 1000) --45 + TimeLeft = (TurnTime/1000) --45 FadeAlpha = 0 rAlpha = 255 AddGear(GetX(CurrentHedgehog), GetY(CurrentHedgehog), gtGrenade, 0, 0, 0, 1) @@ -1233,7 +1243,9 @@ --AddCaption(GetX(CurrentHedgehog) .. ";" .. GetY(CurrentHedgehog) ) -- Calculate and display turn time - if GameTime%1000 == 0 then + TimeLeftCounter = TimeLeftCounter + 1 + if TimeLeftCounter == 1000 then + TimeLeftCounter = 0 TimeLeft = TimeLeft - 1 if TimeLeft >= 0 then @@ -1298,8 +1310,10 @@ end -- handle movement based on IO - if GameTime%100 == 0 then -- 100 + moveTimer = moveTimer + 1 + if moveTimer == 100 then -- 100 --nw WriteLnToConsole("Start of Player MoveTimer") + moveTimer = 0 --------------- -- new trail code @@ -1434,7 +1448,7 @@ --end if GetGearType(gear) == gtHedgehog then - SetEffect(gear, heResurrectable, true) + SetEffect(gear, heResurrectable, 1) ----------- -- control @@ -1608,7 +1622,7 @@ vType[i] = "generic" vCounter[i] = 0 - vCounterLim[i] = 150 + vCounterLim[i] = 3000 vCircScore[i] = 0 vCircHealth[i] = 1 @@ -1801,7 +1815,7 @@ vType[i] = "drone" vCircRadMin[i] = 50 *5 vCircRadMax[i] = 90 *5 - vCounterLim[i] = 150 + vCounterLim[i] = 3000 vCircScore[i] = 10 vCircHealth[i] = 1 --else @@ -1826,7 +1840,7 @@ vCircRadMin[i] = 100*5 vCircRadMax[i] = 180*5 vCircWidth[i] = 1 - vCounterLim[i] = 100 + vCounterLim[i] = 2000 vCircScore[i] = 30 vCircHealth[i] = 3 else @@ -1998,7 +2012,7 @@ end -- if player is hit by circle bazooka - elseif (GetGearType(gear) == gtShell) and (CurrentHedgehog ~= nil) then --or (GetGearType(gear) == gtBall) then + elseif (GetGearType(gear) == gtShell) then --or (GetGearType(gear) == gtBall) then dist = GetDistFromGearToGear(gear, CurrentHedgehog) @@ -2129,7 +2143,9 @@ if rAlpha ~= 255 then - if GameTime%100 == 0 then + rPingTimer = rPingTimer + 1 + if rPingTimer == 100 then + rPingTimer = 0 rAlpha = rAlpha + 5 if rAlpha >= 255 then @@ -2245,7 +2261,10 @@ end -- alter the circles velocities - if GameTime%2000 == 0 then + circAdjustTimer = circAdjustTimer + 1 + if circAdjustTimer == 2000 then + + circAdjustTimer = 0 for i = 0,(vCCount-1) do @@ -2253,9 +2272,9 @@ -- or make them move in random directions if vCircX[i] > 5500 then - vCircDX[i] = -4 --5 circmovchange + vCircDX[i] = -5 --5 circmovchange elseif vCircX[i] < -1500 then - vCircDX[i] = 4 --5 circmovchange + vCircDX[i] = 5 --5 circmovchange else z = GetRandom(2) @@ -2268,9 +2287,9 @@ end if vCircY[i] > 1500 then - vCircDY[i] = -4 --5 circmovchange + vCircDY[i] = -5 --5 circmovchange elseif vCircY[i] < -2900 then - vCircDY[i] = 4 --5 circmovchange + vCircDY[i] = 5 --5 circmovchange else z = GetRandom(2) if z == 1 then @@ -2286,10 +2305,10 @@ end -- move the circles according to their current velocities - --m2Count = m2Count + 1 - --if m2Count == 25 then --25 circmovchange - - -- m2Count = 0 + m2Count = m2Count + 1 + if m2Count == 25 then --25 circmovchange + + m2Count = 0 for i = 0,(vCCount-1) do vCircX[i] = vCircX[i] + vCircDX[i] vCircY[i] = vCircY[i] + vCircDY[i] @@ -2330,7 +2349,7 @@ - --end + end for i = 0,(vCCount-1) do g1, g2, g3, g4, g5, g6, g7, g8, g9, g10 = GetVisualGearValues(vCirc[i]) -- vCircCol[i] g10 @@ -2387,19 +2406,17 @@ --WriteLnToConsole("I just got the velocity of the shell. It is dx: " .. dx .. "; dy: " .. dy) --WriteLnToConsole("CurrentHedgehog is at X: " .. GetX(CurrentHedgehog) .. "; Y: " .. GetY(CurrentHedgehog) ) - if CurrentHedgehog ~= nil then - if GetX(gear) > GetX(CurrentHedgehog) then - dx = dx - turningSpeed--0.1 - else - dx = dx + turningSpeed--0.1 - end - - if GetY(gear) > GetY(CurrentHedgehog) then - dy = dy - turningSpeed--0.1 - else - dy = dy + turningSpeed--0.1 - end - end + if GetX(gear) > GetX(CurrentHedgehog) then + dx = dx - turningSpeed--0.1 + else + dx = dx + turningSpeed--0.1 + end + + if GetY(gear) > GetY(CurrentHedgehog) then + dy = dy - turningSpeed--0.1 + else + dy = dy + turningSpeed--0.1 + end if (GetGearType(gear) == gtShell) then diff -r 6237d2f002ba -r 2bc61f8841a1 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 Sun Oct 28 15:12:37 2012 +0100 @@ -0,0 +1,2 @@ +Default +Default diff -r 6237d2f002ba -r 2bc61f8841a1 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 Sun Oct 28 15:12:37 2012 +0100 @@ -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 6237d2f002ba -r 2bc61f8841a1 share/hedgewars/Data/misc/CMakeLists.txt --- a/share/hedgewars/Data/misc/CMakeLists.txt Sun Sep 16 23:52:36 2012 +0200 +++ b/share/hedgewars/Data/misc/CMakeLists.txt Sun Oct 28 15:12:37 2012 +0100 @@ -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 6237d2f002ba -r 2bc61f8841a1 tools/CMakeLists.txt --- a/tools/CMakeLists.txt Sun Sep 16 23:52:36 2012 +0200 +++ b/tools/CMakeLists.txt Sun Oct 28 15:12:37 2012 +0100 @@ -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 6237d2f002ba -r 2bc61f8841a1 tools/CreateMacBundle.cmake.in --- a/tools/CreateMacBundle.cmake.in Sun Sep 16 23:52:36 2012 +0200 +++ b/tools/CreateMacBundle.cmake.in Sun Oct 28 15:12:37 2012 +0100 @@ -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 6237d2f002ba -r 2bc61f8841a1 tools/PascalParser.hs --- a/tools/PascalParser.hs Sun Sep 16 23:52:36 2012 +0200 +++ b/tools/PascalParser.hs Sun Oct 28 15:12:37 2012 +0100 @@ -369,7 +369,7 @@ , char '$' >> many hexDigit >>= \h -> comments >> return (HexNumber h) --, char '-' >> expression >>= return . PrefixOp "-" , char '-' >> reference >>= return . PrefixOp "-" . Reference - , try $ string "not" >> error "unexpected not in term" + , (try $ string "not" >> notFollowedBy comments) >> unexpected "'not'" , try $ string "nil" >> return Null , reference >>= return . Reference ] "simple expression" @@ -565,8 +565,9 @@ term = comments >> choice [ liftM (uncurry BuiltInFunction) $ builtInFunction initExpression , try $ brackets pas (commaSep pas $ initExpression) >>= return . InitSet - , try $ parens pas (commaSep pas $ initExpression) >>= return . InitArray - , parens pas (sepEndBy recField (char ';' >> comments)) >>= return . InitRecord + , try $ parens pas (commaSep pas $ initExpression) >>= \ia -> when (null $ tail ia) mzero >> return (InitArray ia) + , try $ parens pas (sepEndBy recField (char ';' >> comments)) >>= return . InitRecord + , parens pas initExpression , try $ integer pas >>= \i -> notFollowedBy (char '.') >> (return . InitNumber . show) i , try $ float pas >>= return . InitFloat . show , try $ integer pas >>= return . InitNumber . show diff -r 6237d2f002ba -r 2bc61f8841a1 tools/PascalPreprocessor.hs --- a/tools/PascalPreprocessor.hs Sun Sep 16 23:52:36 2012 +0200 +++ b/tools/PascalPreprocessor.hs Sun Oct 28 15:12:37 2012 +0100 @@ -121,7 +121,7 @@ try $ string "DEFINE" spaces i <- identifier - d <- ((string ":=" >> return ())<|> spaces) >> many (noneOf "}") + d <- ((string ":=" >> return ()) <|> spaces) >> many (noneOf "}") char '}' updateState $ \(m, b) -> (if (and b) && (head i /= '_') then Map.insert i d m else m, b) return "" diff -r 6237d2f002ba -r 2bc61f8841a1 tools/build_windows.bat --- a/tools/build_windows.bat Sun Sep 16 23:52:36 2012 +0200 +++ b/tools/build_windows.bat Sun Oct 28 15:12:37 2012 +0100 @@ -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 6237d2f002ba -r 2bc61f8841a1 tools/w32DownloadUnzip.vbs --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/tools/w32DownloadUnzip.vbs Sun Oct 28 15:12:37 2012 +0100 @@ -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