Codebase list flare-engine / dfd732c
Import upstream version 1.11+git20210527.1.57aebe5 Debian Janitor 2 years ago
292 changed file(s) with 55113 addition(s) and 41344 deletion(s). Raw diff Collapse all Expand all
0 # do not export git related things
1 .gitattributes export-ignore
2 .gitignore export-ignore
3 .mailmap export-ignore
4
5 # formatting
6 astyle_flare.sh export-ignore
7
8 # related to coding and testing
9 .travis.yml export-ignore
10 qt.xml export-ignore
11
12 # do not export the language recreation script
13 mods/default/languages/regenerate_po.sh export-ignore
14 mods/default/languages/xgettext.py export-ignore
15
16 # regenerating the wiki pages
17 extract_xml.sh export-ignore
18 wiki.xslt export-ignore
19 regenerate_wiki_attributepage.sh export-ignore
20
21 # the script to generate tar balls
22 distribution/create_release_tarball.sh export-ignore
0 /flare
1 /flare.exe
2 /CMakeFiles/
3 /CMakeCache.txt
4 /Makefile
5 /cmake_install.cmake
6 /install_manifest.txt
7 /build/
8 /build-debug/
9 /build-release/
10 /config/
11 /saves/
12 # ignore also vim swap files
13 .*.sw*
14 /flare.desktop
15 gmon.out
16
17 # ignore copy-on-write backup files
18 *~
19
20 # a copy of the CMakeLists.txt generated by QtCreator:
21 /CMakeLists.txt.user
22 /Flare.cbp
23
24 # performance and benchmarking items
25 /perf.data
26
27 # from astyle:
28 *.orig
29
30 # from regenerate_wiki_attributepage.sh
31 /Attribute-Reference.md
32
33 # android stuff
34 /flare-android-project/.gradle
35 /flare-android-project/.idea
36 /flare-android-project/build
37 /flare-android-project/app/build
38 /flare-android-project/app/release
39 /flare-android-project/app/app.iml
40 /flare-android-project/local.properties
41 /flare-android-project/app/src/main/libs
42 /flare-android-project/app/src/main/obj
43 /flare-android-project/app/src/main/jni/SDL2
44 /flare-android-project/app/src/main/jni/SDL2_image
45 /flare-android-project/app/src/main/jni/SDL2_mixer
46 /flare-android-project/app/src/main/jni/SDL2_ttf
47
48 # os x
49 .DS_Store
50
51 # qt creator
52 *.autosave
53
54 # emscripten output
55 emscripten/
56 a.out.js
57 a.out.wasm
58
59 # visual studio and its cmake
60 .vs/
61 CMakeSettings.json
0 # Proper Name <proper@email.xx> Commit Name <commit@email.xx>
1 Clint Bellanger <clintbellanger@gmail.com> clintbellanger <clintbellanger@gmail.com>
2 Clint Bellanger <clintbellanger@gmail.com> unknown <cpb0001@LIB-AU16638.auburn.edu>
3 Clint Bellanger <clintbellanger@gmail.com> unknown <clintbellanger@gmail.com>
4 Thane Brimhall <thane.brimhall@gmail.com> Thane Brimhall <thane@lenny.(none)>
5 Thane Brimhall <thane.brimhall@gmail.com> Thane Brimhall <tbrimhall@turtle.(none)>
6 Thane Brimhall <thane.brimhall@gmail.com> Thane Brimhall <thane@thane-laptop.(none)>
7 Justin Jacobs <justin@justinjacobs.com> Justin Jacobs <jajdorkster@gmail.com>
8 Matthew Krohn <makrohn@gmail.com> makrohn <makrohn@gmail.com>
9 Stefan Beller <stefanbeller@gmail.com> stefanbeller
10 Stefan Beller <stefanbeller@gmail.com> <stefanbeller@googlemail.com>
11 Stefan Beller <stefanbeller@gmail.com> <sbeller@google.com>
12 Igor Paliychuk <mansonigor@gmail.com> igor <mansonigor@gmail.com>
13 Igor Paliychuk <mansonigor@gmail.com> igor Paliychuk <mansonigor@gmail.com>
14 Chris Oelmueller <chris.oelmueller@gmail.com> Chris Oelmueller <eoc.eoc.eoc@gmail.com>
15 Manuel A. Fernandez Montecelo <manuel.montezelo@gmail.com> Manuel A. Fernandez Montecelo <mafm@mafm-laptop.itsari.org>
16 Adrián Chaves Fernández (Gallaecio) <adriyetichaves@gmail.com> Adrian Chavez Fernandez (Gallaecio) <adriyetichaves@gmail.com>
17 Adrián Chaves Fernández (Gallaecio) <adriyetichaves@gmail.com> Adrian Chaves Fernandez <adriyetichaves@gmail.com>
18 Henrik Andersson <hean01@users.sourceforge.net> Henrik Andersson <henrik.4e@gmail.com>
19 Christoph J. Thompson <cjsthompson@gmail.com> Christoph <cjsthompson@gmail.com>
20 blazindragon <dragonslayer122@gmail.com> DRAGON <dragonslayer122@gmail.com>
21 Morel Bérenger <berenger.morel@neutralite.org> bmorel <berenger.morel@neutralite.org>
22
0 language: cpp
1 compiler:
2 - gcc
3 - clang
4 before_install:
5 # - yes | sudo add-apt-repository ppa:zoogie/sdl2-snapshots
6 - sudo apt-get clean -qq
7 - sudo apt-get update -qq
8 - sudo apt-get install -qq libegl1-mesa-dev libgles2-mesa-dev libsdl2-dev libsdl2-image-dev libsdl2-mixer-dev libsdl2-ttf-dev cppcheck
9 script: cmake . && make
10 after_script: cppcheck --quiet --verbose --enable=all `git ls-files src/\*.cpp`
11 notifications:
12 irc:
13 channels:
14 - "irc.freenode.org#flarerpg"
15 on_success: always
16 on_failure: always
17 use_notice: true
18 skip_join: true
19 template:
20 - "%{repository} (%{commit}) : %{message} %{build_url}"
11 cmake_minimum_required (VERSION 2.6)
22
33 Set (PACKAGE "FLARE")
4 Set (VERSION "1.09.01")
4 Set (VERSION "1.11")
55
66 set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${CMAKE_SOURCE_DIR}/cmake/")
77
8 # can't use add_compile_options here. Seems to have something to do with add_compile_options appending it after the "-O3 -DNDEBUG" flags
9 if (MINGW AND CMAKE_BUILD_TYPE STREQUAL "Release")
10 set(CMAKE_CXX_FLAGS_RELEASE "-Wl,-subsystem,windows ${CMAKE_CXX_FLAGS_RELEASE}")
11 endif()
12
813 # Default definitions
9 if (NOT MSVC)
10 set(CMAKE_CXX_FLAGS "-Wall -Wextra -Wunused -Wshadow -Woverloaded-virtual -Wunreachable-code -Wconversion -Wno-sign-conversion -Wformat-security ${CMAKE_CXX_FLAGS}")
11 set(CMAKE_CXX_FLAGS "-fno-math-errno -fno-exceptions ${CMAKE_CXX_FLAGS}")
12 set(CMAKE_CXX_FLAGS "-std=c++98 ${CMAKE_CXX_FLAGS}")
13 else (NOT MSVC)
14 add_definitions(-D_CRT_SECURE_NO_WARNINGS)
15 add_definitions(-D_CRT_SECURE_NO_DEPRECATE)
16 add_definitions(-D_CRT_NONSTDC_NO_DEPRECATE)
17 endif (NOT MSVC)
18
19 if(CMAKE_BUILD_TYPE STREQUAL "Release")
20 set(CMAKE_CXX_FLAGS_RELEASE "-O2 -g0")
21 if(MINGW)
22 set(CMAKE_CXX_FLAGS_RELEASE "-Wl,-subsystem,windows ${CMAKE_CXX_FLAGS_RELEASE}")
23 endif()
24 elseif(CMAKE_BUILD_TYPE STREQUAL "RelWithDebInfo")
25 set(CMAKE_CXX_FLAGS_RELWITHDEBINFO "-O2 -g")
26 elseif(CMAKE_BUILD_TYPE STREQUAL "MinSizeRel")
27 set(CMAKE_CXX_FLAGS_MINSIZEREL "-Os -g0")
28 elseif(CMAKE_BUILD_TYPE STREQUAL "Debug")
29 set(CMAKE_CXX_FLAGS_DEBUG "-O0 -g3 -pg")
30 set(CMAKE_EXE_LINKER_FLAGS_DEBUG "-pg")
31 set(CMAKE_SHARED_LINKER_FLAGS_DEBUG "-pg")
32 set(CMAKE_MODULE_LINKER_FLAGS_DEBUG "-pg")
14 if (MSVC)
15 add_definitions(-D_CRT_SECURE_NO_WARNINGS)
16 add_definitions(-D_CRT_SECURE_NO_DEPRECATE)
17 add_definitions(-D_CRT_NONSTDC_NO_DEPRECATE)
18 else ()
19 add_compile_options(
20 -Wall -Wextra -Wunused -Wshadow -Woverloaded-virtual -Wunreachable-code -Wconversion -Wno-sign-conversion -Wformat-security
21 -fno-math-errno -fno-exceptions
22 -std=c++98
23 )
24 endif ()
25
26 add_compile_options(
27 "$<$<CONFIG:RELEASE>:-O2>"
28 "$<$<CONFIG:RELEASE>:-g0>"
29
30 "$<$<CONFIG:RELWITHDEBINFO>:-O2>"
31 "$<$<CONFIG:RELWITHDEBINFO>:-g>"
32
33 "$<$<CONFIG:MINSIZEREL>:-Os>"
34 "$<$<CONFIG:MINSIZEREL>:-g0>"
35
36 "$<$<CONFIG:DEBUG>:-O0>"
37 "$<$<CONFIG:DEBUG>:-g3>"
38 "$<$<CONFIG:DEBUG>:-pg>"
39 )
40
41 # Not supported by CMake 3.12!
42 # Travis uses this version so we have to stick to modifying the strings...
43 # add_link_options(
44 # "$<$<CONFIG:DEBUG>:-pg>"
45 # )
46
47 if (CMAKE_BUILD_TYPE STREQUAL "Debug")
48 set(CMAKE_EXE_LINKER_FLAGS_DEBUG "-pg ${CMAKE_EXE_LINKER_FLAGS_DEBUG}")
49 set(CMAKE_SHARED_LINKER_FLAGS_DEBUG "-pg ${CMAKE_SHARED_LINKER_FLAGS_DEBUG}")
50 set(CMAKE_MODULE_LINKER_FLAGS_DEBUG "-pg ${CMAKE_MODULE_LINKER_FLAGS_DEBUG}")
3351 endif()
3452
3553 set(BINDIR "games" CACHE STRING "Directory from CMAKE_INSTALL_PREFIX where game executable will be installed.")
93111 # Sources
94112
95113 Set (FLARE_SOURCES
96 ./src/BehaviorAlly.cpp
97 ./src/Entity.cpp
98114 ./src/Animation.cpp
115 ./src/AnimationMedia.cpp
99116 ./src/AnimationManager.cpp
100117 ./src/AnimationSet.cpp
101118 ./src/AStarContainer.cpp
102119 ./src/AStarNode.cpp
103120 ./src/Avatar.cpp
104 ./src/BehaviorStandard.cpp
121 ./src/Camera.cpp
105122 ./src/CampaignManager.cpp
106123 ./src/CombatText.cpp
107124 ./src/CursorManager.cpp
108125 ./src/DeviceList.cpp
109126 ./src/EffectManager.cpp
110 ./src/Enemy.cpp
111 ./src/EnemyBehavior.cpp
112127 ./src/EnemyGroupManager.cpp
113 ./src/EnemyManager.cpp
114128 ./src/EngineSettings.cpp
129 ./src/Entity.cpp
130 ./src/EntityBehavior.cpp
131 ./src/EntityManager.cpp
115132 ./src/EventManager.cpp
116133 ./src/FileParser.cpp
117134 ./src/FontEngine.cpp
118135 ./src/GameSlotPreview.cpp
119136 ./src/GameState.cpp
120 ./src/GameStateConfigBase.cpp
121 ./src/GameStateConfigDesktop.cpp
137 ./src/GameStateConfig.cpp
122138 ./src/GameStateCutscene.cpp
123139 ./src/GameStateTitle.cpp
124140 ./src/GameStateLoad.cpp
143159 ./src/MenuActiveEffects.cpp
144160 ./src/MenuBook.cpp
145161 ./src/MenuCharacter.cpp
162 ./src/MenuConfig.cpp
146163 ./src/MenuConfirm.cpp
147164 ./src/MenuDevConsole.cpp
148165 ./src/MenuEnemy.cpp
149166 ./src/MenuExit.cpp
167 ./src/MenuGameOver.cpp
150168 ./src/MenuHUDLog.cpp
151169 ./src/MenuInventory.cpp
152170 ./src/MenuItemStorage.cpp
153171 ./src/MenuLog.cpp
154172 ./src/MenuManager.cpp
155173 ./src/MenuMiniMap.cpp
174 ./src/MenuMovementType.cpp
156175 ./src/MenuNumPicker.cpp
157176 ./src/MenuPowers.cpp
158177 ./src/MenuStash.cpp
172191 ./src/SDLSoftwareRenderDevice.cpp
173192 ./src/SDLSoundManager.cpp
174193 ./src/SDLHardwareRenderDevice.cpp
175 ./src/SDLFontEngine.cpp
194 ./src/SDLFontEngine.cpp
176195 ./src/Settings.cpp
177196 ./src/SharedGameResources.cpp
178197 ./src/SharedResources.cpp
191210 ./src/Widget.cpp
192211 ./src/WidgetCheckBox.cpp
193212 ./src/WidgetButton.cpp
213 ./src/WidgetHorizontalList.cpp
194214 ./src/WidgetInput.cpp
195 ./src/WidgetLabel.cpp
196 ./src/WidgetListBox.cpp
215 ./src/WidgetLabel.cpp
216 ./src/WidgetListBox.cpp
197217 ./src/WidgetLog.cpp
198218 ./src/WidgetScrollBar.cpp
199219 ./src/WidgetScrollBox.cpp
200220 ./src/WidgetSlider.cpp
201221 ./src/WidgetSlot.cpp
202 ./src/WidgetTabControl.cpp
222 ./src/WidgetTabControl.cpp
203223 ./src/WidgetTooltip.cpp
204224 ./src/main.cpp
205225 )
206226
207227 Set (FLARE_HEADERS
208 ./src/BehaviorAlly.h
209 ./src/Entity.h
210228 ./src/Animation.h
229 ./src/AnimationMedia.h
211230 ./src/AnimationManager.h
212231 ./src/AnimationSet.h
213232 ./src/AStarContainer.h
214233 ./src/AStarNode.h
215234 ./src/Avatar.h
216 ./src/BehaviorStandard.h
235 ./src/Camera.h
217236 ./src/CampaignManager.h
218237 ./src/CombatText.h
219238 ./src/CommonIncludes.h
220239 ./src/CursorManager.h
221240 ./src/DeviceList.h
222241 ./src/EffectManager.h
223 ./src/Enemy.h
224 ./src/EnemyBehavior.h
225242 ./src/EnemyGroupManager.h
226 ./src/EnemyManager.h
227243 ./src/EngineSettings.h
244 ./src/Entity.h
245 ./src/EntityBehavior.h
246 ./src/EntityManager.h
228247 ./src/EventManager.h
229248 ./src/FileParser.h
230249 ./src/FontEngine.h
231250 ./src/GameSlotPreview.h
232251 ./src/GameState.h
233 ./src/GameStateConfigBase.h
234 ./src/GameStateConfigDesktop.h
252 ./src/GameStateConfig.h
235253 ./src/GameStateCutscene.h
236254 ./src/GameStateTitle.h
237255 ./src/GameStateLoad.h
256274 ./src/MenuActiveEffects.h
257275 ./src/MenuBook.h
258276 ./src/MenuCharacter.h
277 ./src/MenuConfig.h
259278 ./src/MenuConfirm.h
260279 ./src/MenuDevConsole.h
261280 ./src/MenuEnemy.h
262281 ./src/MenuExit.h
282 ./src/MenuGameOver.h
263283 ./src/MenuHUDLog.h
264284 ./src/MenuInventory.h
265285 ./src/MenuItemStorage.h
266286 ./src/MenuLog.h
267287 ./src/MenuManager.h
268288 ./src/MenuMiniMap.h
289 ./src/MenuMovementType.h
269290 ./src/MenuNumPicker.h
270291 ./src/MenuPowers.h
271292 ./src/MenuStash.h
304325 ./src/Widget.h
305326 ./src/WidgetCheckBox.h
306327 ./src/WidgetButton.h
328 ./src/WidgetHorizontalList.h
307329 ./src/WidgetInput.h
308 ./src/WidgetLabel.h
309 ./src/WidgetListBox.h
330 ./src/WidgetLabel.h
331 ./src/WidgetListBox.h
310332 ./src/WidgetLog.h
311333 ./src/WidgetScrollBar.h
312334 ./src/WidgetScrollBox.h
313335 ./src/WidgetSlider.h
314336 ./src/WidgetSlot.h
315 ./src/WidgetTabControl.h
337 ./src/WidgetTabControl.h
316338 ./src/WidgetTooltip.h
317339 )
318340
319341 # Add icon and file info to executable for Windows systems
320342 IF (WIN32)
321 SET(FLARE_SOURCES
322 ${FLARE_SOURCES}
323 ./src/Flare.rc
324 )
343 SET(FLARE_SOURCES
344 ${FLARE_SOURCES}
345 ./src/Flare.rc
346 )
325347 ENDIF (WIN32)
326348
327349 Add_Executable (flare ${FLARE_SOURCES} ${FLARE_HEADERS})
328350
329351 # libSDLMain comes with libSDL if needed on certain platforms
330352 If (NOT SDL2MAIN_LIBRARY)
331 Set (SDL2MAIN_LIBRARY "")
353 Set (SDL2MAIN_LIBRARY "")
332354 EndIf (NOT SDL2MAIN_LIBRARY)
333355
334356 Target_Link_Libraries (flare ${CMAKE_LD_FLAGS} ${SDL2_LIBRARY} ${SDL2IMAGE_LIBRARY} ${SDL2MIXER_LIBRARY} ${SDL2TTF_LIBRARY} ${SDL2MAIN_LIBRARY})
336358
337359 # installing to the proper places
338360 install(PROGRAMS
339 ${CMAKE_CURRENT_BINARY_DIR}/flare
340 DESTINATION ${BINDIR})
361 ${CMAKE_CURRENT_BINARY_DIR}/flare
362 DESTINATION ${BINDIR})
341363 install(DIRECTORY
342 "${CMAKE_CURRENT_SOURCE_DIR}/mods"
343 DESTINATION ${DATADIR})
364 "${CMAKE_CURRENT_SOURCE_DIR}/mods"
365 DESTINATION ${DATADIR})
344366 install(FILES
345 "${CMAKE_CURRENT_SOURCE_DIR}/distribution/flare.man"
346 DESTINATION ${MANDIR}/man6
347 RENAME flare.6)
367 "${CMAKE_CURRENT_SOURCE_DIR}/distribution/flare.man"
368 DESTINATION ${MANDIR}/man6
369 RENAME flare.6)
348370 install(FILES
349 "${CMAKE_CURRENT_BINARY_DIR}/flare.desktop"
350 DESTINATION ${CMAKE_INSTALL_PREFIX}/share/applications)
371 "${CMAKE_CURRENT_BINARY_DIR}/flare.desktop"
372 DESTINATION ${CMAKE_INSTALL_PREFIX}/share/applications)
351373 install(FILES
352 "${CMAKE_CURRENT_SOURCE_DIR}/distribution/flare_logo.svg"
353 DESTINATION ${CMAKE_INSTALL_PREFIX}/share/icons/hicolor/scalable/apps
354 RENAME flare.svg)
374 "${CMAKE_CURRENT_SOURCE_DIR}/distribution/flare_logo.svg"
375 DESTINATION ${CMAKE_INSTALL_PREFIX}/share/icons/hicolor/scalable/apps
376 RENAME flare.svg)
55 Anton Golov | http://jesyspa.blogspot.com/
66 Artur "Zear" Rojek
77 blazindragon
8 bloodhero
89 Bonbadil
910 Chris Oelmueller
1011 Clint Bellanger | http://clintbellanger.net
2324 Matthew Krohn | https://github.com/makrohn
2425 Nojan
2526 Pavel Kirpichyov "Cheshire"
27 r-a-cristian-93
2628 runtime-x86
2729 Ryan Dansie | https://github.com/RyanDansie
2830 Stefan Beller | https://github.com/stefanbeller
4143
4244 (be) Belarussian by Mikhail Karalevich
4345 (bg) Bulgarian by Emil
44 (ca) Catalan by Marc Tormo i Bochaca
46 (ca) Catalan by Marc Tormo i Bochaca and Maria Cano
4547 (cs) Czech by Nikita Vanku (Zaraka), hark34
4648 (de) German by Thomas 'CruzR' Glamsch, Chris Oelmueller, Janet Hunt, Stefan Beller, and Wuzzy2
4749 (el) Greek by Yannis Anthymidis, Michael Papageorgiou, and Nea Retrogamer
4850 (es) Spanish by Juan Pablo 'morris989' Tamayo, Carlos Sanchez, Diego J. Romero López, and Eric R
4951 (fi) Finnish by Timo Sievänen
50 (fr) French by Quentin 'acieroid' Stievenart, Bonbadil, Morgan Strauss, and Christoph J. Thompson
52 (fr) French by Quentin 'acieroid' Stievenart, Bonbadil, Morgan Strauss, Christoph J. Thompson, syl_, and Christophe Nemo
5153 (gd) Scottish Gaelic by GunChleoc
5254 (gl) Galacian by Adrian Chaves Fernandez (Gallaecio)
55 (hu) Hungarian by bzt
5356 (it) Italian by Giovanni Dalla Torre, Gianfranco Del Borrello, Stefano Peris, Andrea Ranaldi, MOB2, and Fabio Loli
57 (ko) Korean by bnk159hair
5458 (ja) Japanese by Paul Wortmann, sujiniku
55 (nb) Norwegian Bokmal by Hans Joachim Desserud
59 (nb) Norwegian Bokmal by Hans Joachim Desserud, Elias Nykrem
5660 (nl) Dutch by Bas Doodeman
57 (pl) Polish by Paweł Puszczyński
61 (pl) Polish by Paweł Puszczyński, Błażej Pęksyk, and Grzegorz Szymaszek
5862 (pt) Portuguese by Rui
5963 (pt_BR) Brazilian Portuguese by Vicente Monteiro
60 (ru) Russian by Sergey Basalaev, Evgen Pavlov, and Ademaro
61 (sk) Slovak by Miro Jánošík
64 (ru) Russian by Sergey Basalaev, Evgen Pavlov, Ademaro, and Andrey Kapitonov
65 (sk) Slovak by Miro Jánošík, MiroslavR
6266 (sv) Swedish by Andreas Berheim Brudin
6367 (uk) Ukrainian by Igor Paliychuk, Denis Lysenko, Микола Франчук, Sergiy Borodych
6468 (vi) Vietnamese by Nguyễn Gia Phong
104104
105105 ### Windows
106106
107 #### MSYS2 / MinGW
108
109 We use [MSYS2](https://www.msys2.org/) as our official development environment on Windows.
110
111 ```
112 # install the build environment with SDL2 libraries
113 # 32-bit
114 pacman -S git mingw-w64-i686-SDL2 mingw-w64-i686-SDL2_image mingw-w64-i686-SDL2_mixer mingw-w64-i686-SDL2_ttf mingw-w64-i686-cmake mingw-w64-i686-gcc mingw-w64-i686-make
115 # 64-bit
116 pacman -S git mingw-w64-x86_64-SDL2 mingw-w64-x86_64-SDL2_image mingw-w64-x86_64-SDL2_mixer mingw-w64-x86_64-SDL2_ttf mingw-w64-x86_64-cmake mingw-w64-x86_64-gcc mingw-w64-x86_64-make
117
118 git clone https://github.com/flareteam/flare-engine.git
119 cd flare-engine
120 cmake . -DCMAKE_BUILD_TYPE=Release -G "MinGW Makefiles"
121 mingw32-make
122 ```
123
124 If you want a debug build, simply replace `Release` with `Debug` as the CMake build type.
125
126 It is highly recommended that you add `C:\msys64\mingw32\bin` (or `C:\msys64\mingw64\bin` for 64-bit) to your Windows PATH variable for running flare.exe outside of the MSYS environment.
127
128 To obtain and use the game files, continue from the previous set of commands:
129
130 ```
131 cd ../
132 git clone https://github.com/flareteam/flare-game.git
133 cd flare-game
134 cp -r mods/* ../flare-engine/mods/
135 ```
136
107137 #### Microsoft Visual C++
108138
109139 If you want to build flare under Microsoft Visual C++,
112142
113143 [dirent.h]: https://github.com/tronkko/dirent
114144
145 To get SDL2 [vcpkg](https://github.com/Microsoft/vcpkg) can be used. Its an elegant solution to manage C/C++ dependencies
146 in a central place.
147
148 Use Windows PowerShell or Git Bash and change to a directory where you want to store the dependencies:
149 ```bash
150 #get the vcpkg code
151 git clone https://github.com/Microsoft/vcpkg.git
152 cd vcpkg
153 #bootstrap vcpkg
154 ./bootstrap-vcpkg.bat
155 #install the dependencies (for 64bit builds, you can use x86-windows triplet instead if you want 32bit)
156 ./vcpkg install sdl2:x64-windows sdl2-image:x64-windows sdl2-mixer:x64-windows sdl2-ttf:x64-windows
157 ```
158 After that the dependencies have been downloaded and build. You can use them in your cmake projects by adding the path of the
159 toolchain file to your cmake configuration command line options: `-DCMAKE_TOOLCHAIN_FILE=[vcpkg root]\scripts\buildsystems\vcpkg.cmake`
160
115161 <a name="install_system_wide"></a>
116162 ## Install Flare system-wide
117163
142188 ```
143189
144190 **Windows** plus [MinGW]:
191
192 (Note: Due to an [issue](https://github.com/flareteam/flare-engine/issues/1723#issuecomment-511621267) with compilers that aren't VC++, it is recommended to use SDL\_image 2.0.4)
145193
146194 ```
147195 g++ -I C:\MinGW\include\SDL src\*.cpp -o flare.exe -lmingw32 -lSDLmain -lSDL2 -lSDL2_image -lSDL2_mixer -lSDL2_ttf
6969 ### Windows
7070 %APPDATA%\flare\config
7171 config\
72 ### Linux (Snap)
73 $HOME/snap/flare-rpg/current/.config/flare/
74 ### Linux (Flatpak)
75 $HOME/.var/app/org.flarerpg.Flare/config/flare/
7276
7377 Here you can enable fullscreen, change the game resolution, enable mouse-move, and change keybindings.
7478 The settings files are created the first time you run Flare.
8488 ### Windows
8589 %APPDATA%\flare\userdata
8690 userdata\
91 ### Linux (Snap)
92 $HOME/snap/flare-rpg/current/.local/share/flare/
93 ### Linux (Flatpak)
94 $HOME/.var/app/org.flarerpg.Flare/data/flare/
95
8796
8897 If permissions are correct, the game is automatically saved when you exit.
8998 In addition, there is a `mods` directory in this location, which can be used to override system-wide mods.
101110 | `--mods` | Starts the game with only these mods enabled.
102111 | `--load-slot` | Loads a save slot by numerical index.
103112 | `--load-script` | Execute's a script upon loading a saved game. The script path is mod-relative.
113 | `--safe-video` | Launches with the minimum video settings.
0 Flare v1.10 (WIP)
0 Flare v1.12 (WIP)
1
2 Engine features:
3
4 * NPC interactions are now canceled when the player is attacked. 'combat_aborts_npc_interact' has been added to engine/misc.txt to control this setting.
5 * Added 'bar_fill_offset' and 'bar_fill_size' to MenuStatBar and MenuEnemy properties.
6 * Added support for fading out combat text. See the 'fade_duration' property in engine/combat.txt.
7 * Added 'save_oncutscene' property to engine/misc.txt. Saving before a cutscene was previously controlled with 'save_onload', which caused issues with cutscenes when set to false.
8 * Added 'save_anywhere' property to engine/misc.txt. This allows for saving via the pause menu. (m7600)
9 * Added display of enemies, allies, NPCs, and intermap teleport events to the minimap.
10 * Added support for defining the colors of tiles and entities on the minimap.
11 * Added 'show_on_minimap' event component. Currently, this only applies to intermap teleport events.
12 * Added 'show_on_minimap' property to NPCs.
13 * Properties that take an alignment can now be aligned to the menu frame.
14 * Support multiple images in animation definitions. (bloodhero)
15 * Expanded slot widget configuration in engine/widget_settings.txt. Quantity text color can be changed, as well as label settings for displaying hotkeys.
16 * Re-implemented displaying hotkeys on action bar slots.
17 * Support for 'item:quantity' syntax for Event properties: 'requires_item', 'requires_not_item', 'remove_item', and 'reward_item'.
18 * Added 'show_randomize' property to new game menu configuration.
19 * Added 'disable_equip_slots' property for passive powers.
20 * 'Block' powers can now use post_power to trigger a power when taking damage.
21 * Power descriptions are now displayed in action bar tooltips. This can be controlled with the 'tooltip_length' property in menus/actionbar.txt.
22 * A dialog box is now displayed instead of a log message when the player dies, giving the options to exit or respawn (if applicable).
23 * Added movement input type dialog box. It is displayed for new players to easily select between keyboard, mouse, and joystick movement.
24 * Added '--safe-video' command line option. For troubleshooting purposes, this feature is displayed as an option when starting after a potential crash.
25 * The 'categories' property has been extended to the player character. The Power property 'target_categories' can now be used for the player as a result.
26 * The ability to stash quest items can now be controlled with the 'no_stash' property.
27 * Added a button for opening the pause/configuration menu as part of the minimap.
28 * Added 'script' property to items. This removes the need to create a power in order to execute a script via activating an item.
29 * Player 'melee_range' is now configurable in engine/stats.txt.
30 * Added comparison tooltips for items. These can be disabled in the Interface settings. (r-a-cristian-93, Justin Jacobs)
31 * Added 'parallax_layers' property to Events. This functions exactly like the Map property of the same name.
32 * Added 'visible' and 'visible_when_locked' to powers and upgrades in power trees.
33 * Added 'requires_status' and 'requires_not_status' to powers and upgrades in power trees. 'visible_requires_status' and 'visible_requires_not_status' have been marked as deprecated.
34 * Added 'on_interact' as a possible value for Event types. Essentially the same as 'on_trigger', except the event can ONLY be activated through the hotspot.
35 * Support an arbitrary number of Stash tabs. Each tab has a display name and an 'is_private' flag.
36 * Added 'save_onstash' property to engine/misc.txt, so it is now possible to disable the automatic save when modifying stash contents.
37 * The player's last used Stash tab is now remembered across sessions.
38 * Added the ability for NPCs to join the player's party. (Igor Paliychuk)
39
40 Engine fixes:
41
42 * Fix memory leak of tab control in stash menu (MiroslavR)
43 * Fixed stat bars not having any fill when the value they were representing was non-zero. Now they will always show at least 1 pixel of the bar's fill graphics.
44 * Fixed a bug where the game window could be resized below the minimum size after exiting fullscreen mode.
45 * Removed the default resolution scaling when virtual_heights is undefined.
46 * Improved performance when checking map event hotspots.
47 * Fix Windows-style paths with backslashes not working on non-Windows systems.
48 * Prevent allies counting as attack targets when using mouse movement.
49 * Fix needing to press the 'Cancel' key twice to exit the vendor menu.
50 * Fix unintended key presses being registered when quitting the game via an OS keyboard shortcut.
51 * Fix divide-by-zero crash when using the dev HUD with a game that uses orthogonal rendering.
52 * Fixed a memory leak in Loot copy constructor.
53 * Fixed 'resist_percent' property of engine/combat.txt not working when targets had 100% resistance.
54 * Support attack_speed effects with a magnitude less than 100%.
55 * Fixed bug where dead entities could steal HP/MP.
56 * Fix broken parsing of engine/default_keybindings.txt.
57 * Fix Effect animations not being synced properly in some cases.
58 * Removed hard-coded restrictions on using items from the inventory. Now any item that has a power and is not equipment can be used.
59 * Fix crash when fonts are missing. The engine will try to fall back to the next available font for the current language.
60 * Background color when using sdl_hardware renderer no longer fills entire window, instead only filling the drawing surface as it should.
61 * Fix crash when loading a cutscene from a book event.
62 * Fix infinite transformation loop when dying in a transformed state that was activated by a passive power.
63 * Fix bug where the player wasn't returned to their normal state after dying in a transformed state.
64 * Prevent combat text from overlapping.
65 * Improved performance when handling many status effects.
66 * Improved performance when an entity is repeatedly unable to find a path to thier target.
67 * Fix bug where killing an enemy with return damage would not set defeat status or reward XP/loot.
68 * Fix check of item requirements when a power requires an item but doesn't consume it.
69 * Fix 'respec' events to no longer remove item-based powers from the action bar.
70 * Fix log message when gaining more than one level at once.
71 * Fixed excessive memory usage when using Items, ItemSets, and Powers with high-value IDs.
72 * Fix bug where power upgrades that didn't require power points would not automatically upgrade if other requirements were met.
73 * Fix infinite loop bug when a power's list of upgrades contains the base power ID.
74 * Fix infinite loop bug when locking power upgrades.
75 * The executable directory is now used when trying to find PATH_DATA on Linux. (r-a-cristian-93)
76 * Fix 'corpse_timeout' in engine/misc.txt being parsed incorrectly (r-a-cristian-93)
77 * Reworked camera speed curve to prevent graphical "wiggle" during slow movement.
78 * Fix missing effect description text in power tooltips when using built-in types.
79 * Fix static events not executing on the same frame as on_load events.
80 * Fix parsing bug in power trees that would save base power properties to an upgrade power.
81 * Fix on_load events with requires_class not working in maps/spawn.txt
82 * Fix timing of Effects so that the first "tick" happens immediately.
83 * Fix "Press button to use" prompt no showing up for some items.
84
85 Game updates:
86
87 * New graphics for HP and MP status bars
88 * Reworked art for the Cleave power
89 * Cleave power radius reduced to closer match its artwork
90 * Reduced the strength and radius of Rakk's freeze attack
91 * Fixed the Goblin Thief being able to steal potions from a Summoned Zombie
92 * Reduced the hitbox for spike traps
93 * Greatly reduced the damage for spike traps in the Underworld. In exchange, the traps now inflict bleeding.
94 * Overall reduced drop rates for alchemy items
95 * Added animations for immunity and ice-based slow status effects
96 * Redesigned the Family Crypt map and quest
97 * Redesigned the Torture Chambers map and quest (again)
98 * Mortar & Pestle can now be placed on the action bar
99
100 Translation updates:
101
102 * Belarusian (be) update (Zmicer Turok)
103 * Catalan (ca) update (Maria Cano)
104 * German (de) update (Wuzzy2)
105 * Spanish (es) update (Agustin Ferrario)
106 * Basque (eu) by aitzkora
107 * French (fr) update (leø, Christophe Nemo)
108 * Scottish Gaelic (gd) update (GunChleoc)
109 * Hungarian (hu) update (litoll)
110 * Korean (ko) by Kor_OfenTHource (team members: bnk159hair, kangdonghun1230, HunSeongPark and paparad0x)
111 * Norwegian (nb) update (Elias Nykrem)
112 * Polish (pl) update (Błażej Pęksyk, Grzegorz Szymaszek)
113 * Portuguese (pt) update (Rui)
114 * Russian (ru) update (Igor Polyakov)
115 * Slovak (sk) update (MiroslavR)
116 * Ukranian (uk) update (Sergiy Borodych)
117 * Vietnamese (vi) update (Nguyễn Gia Phong)
118 * Chinese (zh) update (dumaosen, sakura09123)
119
120
121
122 Flare v1.11 (http://flarerpg.org/index.php/2019/07/27/flare-1-11/)
123
124 Engine features:
125
126 * Players now have their own private stash in addition to the shared stash.
127 * Expanded the 'no_stash' Item variable to account for having multiple stashes.
128
129 Engine fixes:
130
131 * Fix bug where items could be dragged from the vendor window and dropped in the opposite vendor tab.
132 * Fix bug that caused item max_quantity to be reset when attempting to append an item definition.
133 * Fix bug where Powers with 'replace_by_effect' would still use properties from the parent power, such as animation state.
134
135 Game updates:
136
137 * Items that couldn't be stashed in the last update can now be put in the private stash.
138 * Salted Field: moved chest to the south end of the map to prevent easy farming.
139
140 Translation updates:
141
142 * Belarusian (be) update (Zmicer Turok)
143 * German (de) update (Wuzzy2)
144 * Hungarian (hu) by bzt
145 * Ukranian (uk) update (Igor Paliychuk)
146
147
148
149 Flare v1.10 (http://flarerpg.org/index.php/2019/05/17/flare-1-10/)
150
151 Engine features:
152
153 * The configuration menu has been redesigned and is now used as the pause menu.
154 * The interface features from version 1.09 have been reverted due to being accessible from the pause menu.
155 * Added an Interface option to disable showing hidden entity markers.
156 * Support floating point values for loot drop chance values.
157 * Add 'hide_timeout' option to stat bar configuration to support auto-hiding. (Leszek Cimała)
158 * Added an Interface option to disable stat bar auto-hiding globally.
159 * Add 'no_stash' property to item definitions to prevent items from being placed in the stash.
160 * Add low HP notification system. (Leszek Cimała)
161 * Add ability to change the minimap zoom level by clicking on the minimap.
162
163 Engine fixes:
164
165 * Fixed event activation being tied to distance to the camera position. It is now correctly tied to distance from the player.
166 * Mouse movement and mouse aim now calculate direction relative to the player instead of relative to the screen.
167 * Fixed enemy AI so that enemies can now enter combat if a hero ally is in their proximity.
168 * Fix --data-path command line flag on Windows.
169 * Fixed dialog not being available if it lacked a topic.
170 * Fixed loot drop rate bonus having no effect when loot drop chance was too low.
171 * Fix bug where the wrong requirements were checked for passive powers that had been granted bonus points.
172 * Items that can't be stashed are now dropped on the ground upon opening the stash.
173 * Prevent re-binding the primary Main1 binding, which could break many interactions.
174 * Removed the ability to re-bind the Ctrl, Shift, Alt, and Delete keys, since they correspond to specific keyboard keys.
175 * Fix crash when trying to load a mod that contained 'engine/default_keybindings.txt'. (nwtour)
176 * Display XP stat bar value as relative to current level instead of total XP. (Leszek Cimała)
177 * Fix key bindings not working when switched to a non-US keyboard layout. (nwtour)
178 * Fix segfault when NPC filename is invalid.
179 * Fix inventory tooltips covering books when using no mouse.
180 * Fix navigation of dialog menu when using no mouse.
181 * Fix upgrading powers when using no mouse.
182 * When using the sdl_hardware renderer on Windows, OpenGL will now be used instead of Direct3D. This fixes the loss of some textures when resizing the window.
183 * Fixed the "level up" string to represent the ability to allocate multiple stat points. Also note if Power points can be allocated.
184 * Refactored 'requires_hpmp_state' for Powers to check against both stats at once. See the attribute reference for syntax changes.
185 * Greatly improved performance of loot tooltips.
186 * Fix bug where high item find chance prevented the player from finding currency.
187
188 Game updates:
189
190 * Fixed an oversight that allowed easy farming of the Torture Chambers boss and loot chests.
191 * Made it so that potions and scrolls can not be stashed. This fixes an exploit where players could utilize a low level character to get these items for cheap.
192 * Added new attack and interact cursors.
193 * Added sound effect and cursors for indicating low health.
194
195 Translation updates:
196
197 * Belarusian (be) update (Zmicer Turok)
198 * Brazilian Portuguese (pt_BR) update (Vinicius Rech)
199 * Catalan (ca) update (Marc Tormo i Bochaca)
200 * German (de) update (Fyrenic)
201 * Spanish (es) update (Agustin Ferrario)
202 * French (fr) update (syl_)
203 * Scottish Gaelic (gd) update (GunChleoc)
204 * Japanese (ja) update (sujiniku)
205 * Portuguese (pt) update (Rui)
206 * Russian (ru) update (Andrey Kapitonov, Igor Paliychuk, nwtour)
207 * Ukranian (uk) update (Igor Paliychuk)
208 * Chinese (zh) update (dumaosen, neverwin)
209
210
211
212 Flare v1.09.01 (http://flarerpg.org/index.php/2018/12/12/flare-1-09-01/)
1213
2214 Engine fixes:
3215
0 #!/bin/sh
1
2 astyle -S -T4 --style=java -y src/*.[cpp,h]
3
Binary diff not shown
0 #!/bin/sh
1
2 # get the name from the git tag:
3 name=$(git describe --tags)
4 # go into the root of the repository
5 cd $(git rev-parse --show-toplevel)
6
7 # create the tarball
8 filename=flare-engine-${name}.tar.gz
9 git archive --format=tar.gz --prefix=flare-engine-${name}/ HEAD > ${filename}
10
11 echo "Released to $(git rev-parse --show-toplevel)/${filename}"
2626
2727 #loadingDiv {
2828 text-align: center;
29 font-family: monospace;
30 font-weight: bold;
31 font-size: 150%;
2932 }
3033 </style>
3134 </head>
4548 var e = document.getElementById('loadingDiv');
4649 e.style.visibility = 'hidden';
4750 },
51 setStatus: function(text) {
52 var e = document.getElementById('loadingDiv');
53 if (text.search("Downloading data...") != -1) {
54 var download_str = text.split("(")[1].split(")")[0];
55 var download_progress = parseInt(download_str.split("/")[0]);
56 var download_total = parseInt(download_str.split("/")[1]);
57 e.innerHTML = "Downloading data... " + Math.round((download_progress / download_total) * 100) + "%";
58 }
59 else {
60 e.innerHTML = text;
61 }
62 },
4863 canvas: (function() {
4964 var canvas = document.getElementById('canvas');
5065 return canvas;
5469 <script>
5570
5671 (function() {
57 var memoryInitializer = 'index.html.mem';
72 var memoryInitializer = 'index.wasm';
5873 if (typeof Module['locateFile'] === 'function') {
5974 memoryInitializer = Module['locateFile'](memoryInitializer);
6075 } else if (Module['memoryInitializerPrefixURL']) {
7085 script.src = "index.js";
7186 document.body.appendChild(script);
7287
88 // iframe-fix.js
89 var lastTarget, canvas, body;
90 window.onload = function() {
91 body = document.querySelector('body'),
92 canvas = document.getElementById('canvas');
93 var activateCanvas = function (event) {
94 lastTarget = event.target;
95 window.focus();
96 console.log("Set focus on window");
97 }
98 var preventScroll = function (event) {
99 var keyCodes = [ 32, 37, 38, 39, 40 ];
100 if (lastTarget != canvas) {
101 return false;
102 }
103 // console.log('Key pressed: ' + event.keyCode);
104 if (keyCodes.includes(event.keyCode)) {
105 event.preventDefault();
106 }
107 }
108 var handleMouseDown = function (event) {
109 window.focus();
110 event.preventDefault();
111 event.stopPropagation();
112 }
113 body.addEventListener('keydown', preventScroll, false);
114 body.addEventListener('click', activateCanvas, false);
115 canvas.addEventListener('mousedown', handleMouseDown, false);
116
117 // Work-around chromium autoplay policy
118 // https://github.com/emscripten-core/emscripten/issues/6511
119 function resumeAudio(e) {
120 if (typeof Module === 'undefined'
121 || typeof Module.SDL2 == 'undefined'
122 || typeof Module.SDL2.audioContext == 'undefined')
123 return;
124 if (Module.SDL2.audioContext.state == 'suspended') {
125 Module.SDL2.audioContext.resume();
126 }
127 if (Module.SDL2.audioContext.state == 'running') {
128 document.getElementById('canvas').removeEventListener('click', resumeAudio);
129 document.removeEventListener('keydown', resumeAudio);
130 }
131 }
132 document.getElementById('canvas').addEventListener('click', resumeAudio);
133 document.addEventListener('keydown', resumeAudio);
134 }
73135 </script>
74136
75137 </body>
0 <?xml version="1.0" encoding="UTF-8" standalone="no"?>
1 <svg
2 xmlns:dc="http://purl.org/dc/elements/1.1/"
3 xmlns:cc="http://creativecommons.org/ns#"
4 xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
5 xmlns:svg="http://www.w3.org/2000/svg"
6 xmlns="http://www.w3.org/2000/svg"
7 xmlns:xlink="http://www.w3.org/1999/xlink"
8 xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
9 xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
10 version="1.1"
11 inkscape:output_extension="org.inkscape.output.svg.inkscape"
12 sodipodi:docname="flare_logo.svg"
13 inkscape:export-ydpi="48"
14 inkscape:export-xdpi="48"
15 inkscape:export-filename="/home/justin/Projects/flare-engine/mods/default/images/logo/icon.png"
16 inkscape:version="1.0 (4035a4fb49, 2020-05-01)"
17 sodipodi:version="0.32"
18 id="svg2"
19 height="512"
20 width="512">
21 <defs
22 id="defs4">
23 <linearGradient
24 id="linearGradient841"
25 inkscape:collect="always">
26 <stop
27 id="stop837"
28 offset="0"
29 style="stop-color:#984d00;stop-opacity:1" />
30 <stop
31 id="stop839"
32 offset="1"
33 style="stop-color:#cc6800;stop-opacity:1" />
34 </linearGradient>
35 <linearGradient
36 id="linearGradient3163">
37 <stop
38 id="stop3165"
39 offset="0"
40 style="stop-color:#ffc641;stop-opacity:1;" />
41 <stop
42 id="stop3167"
43 offset="1"
44 style="stop-color:#ff7f00;stop-opacity:1;" />
45 </linearGradient>
46 <inkscape:perspective
47 id="perspective10"
48 inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
49 inkscape:vp_z="744.09448 : 526.18109 : 1"
50 inkscape:vp_y="0 : 1000 : 0"
51 inkscape:vp_x="0 : 526.18109 : 1"
52 sodipodi:type="inkscape:persp3d" />
53 <radialGradient
54 gradientUnits="userSpaceOnUse"
55 gradientTransform="matrix(1.0205265,0,0,1.5879962,-134.70516,193.70975)"
56 r="166.96552"
57 fy="417.52182"
58 fx="381.88892"
59 cy="417.52182"
60 cx="381.88892"
61 id="radialGradient3197"
62 xlink:href="#linearGradient3163"
63 inkscape:collect="always" />
64 <linearGradient
65 gradientUnits="userSpaceOnUse"
66 y2="1025.47"
67 x2="264.221"
68 y1="551.576"
69 x1="264.221"
70 id="linearGradient843"
71 xlink:href="#linearGradient841"
72 inkscape:collect="always" />
73 </defs>
74 <sodipodi:namedview
75 inkscape:document-rotation="0"
76 inkscape:window-maximized="1"
77 inkscape:window-y="0"
78 inkscape:window-x="0"
79 inkscape:window-height="835"
80 inkscape:window-width="1600"
81 inkscape:snap-global="false"
82 showgrid="false"
83 inkscape:current-layer="layer1"
84 inkscape:document-units="px"
85 inkscape:cy="251.844"
86 inkscape:cx="166.208"
87 inkscape:zoom="0.844497"
88 inkscape:pageshadow="2"
89 inkscape:pageopacity="0.0"
90 objecttolerance="10"
91 guidetolerance="10"
92 gridtolerance="10000"
93 borderopacity="1.0"
94 bordercolor="#666666"
95 pagecolor="#ffffff"
96 id="base">
97 <inkscape:grid
98 id="grid2385"
99 type="xygrid" />
100 </sodipodi:namedview>
101 <metadata
102 id="metadata7">
103 <rdf:RDF>
104 <cc:Work
105 rdf:about="">
106 <dc:format>image/svg+xml</dc:format>
107 <dc:type
108 rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
109 <dc:title></dc:title>
110 </cc:Work>
111 </rdf:RDF>
112 </metadata>
113 <g
114 transform="translate(0,-540.36218)"
115 id="layer1"
116 inkscape:groupmode="layer"
117 inkscape:label="Layer 1">
118 <path
119 inkscape:connector-curvature="0"
120 sodipodi:nodetypes="csszczsczczzcccccccccccccscsccccccc"
121 id="path2383"
122 d="m 243.88464,563.00351 c 0,0 18.50806,81.75342 13.75477,109.3234 -4.67479,27.11462 -19.54913,61.3599 -45.49155,71.84691 -8.08294,3.26746 -32.95042,-13.30447 -42.00504,-23.63118 -9.05461,-10.32671 -15.2855,-39.32566 -15.2855,-39.32566 0,0 -5.79082,25.29208 -3.12621,49.69283 2.6646,24.40075 13.80668,60.15285 12.95592,78.89528 -0.91996,20.2666 -14.75939,42.4844 -14.75939,42.4844 0,0 -8.49818,-23.66422 -16.84347,-39.45783 -8.34529,-15.79361 -30.40054,-37.10158 -30.40054,-37.10158 0,0 11.44731,26.12679 11.86839,50.54845 0.42108,24.42166 -43.595202,76.06725 1.19301,143.20492 45.27464,67.86685 113.04859,59.95455 113.04859,59.95455 l 16.48789,-6.0625 -63.27265,-31.00003 81.64212,-40 -81.64212,-40 81.64212,-40 81.64212,40 71.08605,-34.84375 -1.97727,-11.28125 -69.10878,-33.875 60.17917,-29.46875 -2.42375,-19.8125 -9.95013,-73.15625 c 0,0 -11.4493,24.35655 -24.13109,32.91098 -8.34625,5.6299 -28.90597,7.64375 -28.90597,7.64375 0,0 -11.25588,-60.03153 -23.10376,-91.26566 -21.15345,-55.7661 -73.07293,-96.22353 -73.07293,-96.22353 z m 101.40846,349.37196 -81.64212,40 74.94492,36.71875 29.59526,-10.875 33.13522,-38.375 z"
123 style="fill:url(#radialGradient3197);fill-opacity:1;fill-rule:evenodd;stroke:url(#linearGradient843);stroke-width:16;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;stroke-miterlimit:8;stroke-dasharray:none" />
124 </g>
125 </svg>
0 #!/bin/bash
1 # requires: Inkscape
2
3 mkdir -p "flare.iconset"
4 cd "flare.iconset"
5
6 sizes=(1024 512 256 128 64 32)
7
8 for size in ${sizes[@]}; do
9 /Applications/Inkscape.app/Contents/MacOS/inkscape -w ${size} -h ${size} -o "icon_${size}x${size}.png" "../../flare_logo_icon.svg"
10 let half=size/2
11 cp "icon_${size}x${size}.png" "icon_${half}x${half}@2x.png"
12 done
13
14 cd ../
15 iconutil -c icns "flare.iconset"
16 rm -rf "flare.iconset"
7575 !insertmacro MUI_LANGUAGE "English"
7676
7777 ;--------------------------------
78 ; The "" makes the section hidden.
79 Section "" SecUninstallPrevious
80
81 Call UninstallPrevious
82
83 SectionEnd
84
85 Function UninstallPrevious
86
87 ; Check for uninstaller.
88 ReadRegStr $R0 HKLM "SOFTWARE\Flare" "Install_Dir"
89
90 ${If} $R0 == ""
91 Goto Done
92 ${EndIf}
93
94 DetailPrint "Removing previous installation."
95
96 ; Run the uninstaller silently.
97 ExecWait '"$R0\uninstall.exe /S"'
98
99 Done:
100
101 FunctionEnd
78102
79103 ; The stuff to install
80104 Section "Flare engine" SecEngine
172196 Delete "$INSTDIR\README.engine.md"
173197 Delete "$INSTDIR\README.md"
174198 Delete "$INSTDIR\RELEASE_NOTES.txt"
199 Delete "$INSTDIR\LICENSE.txt"
175200 Delete "$INSTDIR\*.dll"
176201 Delete "$INSTDIR\uninstall.exe"
177202 RMDir /r "$INSTDIR\mods\"
6969
7070 <p><code>predefined_string</code>, same as a string, but uses a value defined elsewhere</p>
7171
72 <p><code>alignment</code>, defined as: <code>["topleft", "top", "topright", "left", "center", "right", "bottomleft", "bottom", "bottomright"]</code></p>
72 <p><code>alignment</code>, defined as: <code>["topleft", "top", "topright", "left", "center", "right", "bottomleft", "bottom", "bottomright", "frame_topleft", "frame_top", "frame_topright", "frame_left", "frame_center", "frame_right", "frame_bottomleft", "frame_bottom", "frame_bottomright"]</code></p>
7373
7474 <p><code>direction</code>, defined as: <code>["N", "NE", "E", "SE", "S", "SW", "W", "NW", int]</code>. If defined as an integer, the value must be between 0-7 inclusive.</p>
7575
7777
7878 <p><code>label</code>, defined as: <code>"hidden"</code> <strong>or</strong> <code>int, int, ["left", "right", "center"], ["top", "center", "bottom"], string : X, Y, Justify, Vertical Align, Font style</code>. The font style can be any style defined in engine/font_settings.txt.</p>
7979
80 <p><code>loot</code>, defined as: <code>filename</code> <strong>or</strong> <code>["currency", item_id], ["fixed", int], int, int : Item, Drop chance, Min quantity, Max quantity</code>. There is a limitation when defining as part of a list(&hellip;): filenames can only be used in the first list element.</p>
80 <p><code>loot</code>, defined as: <code>filename</code> <strong>or</strong> <code>["currency", item_id], ["fixed", float], int, int : Item, Drop chance, Min quantity, Max quantity</code>. There is a limitation when defining as part of a list(&hellip;): filenames can only be used in the first list element.</p>
8181
8282 <p><code>version</code>, defined as: a string of three numbers, separated by dots (e.g. &ldquo;1.2.03&rdquo;)</p>
8383
8888
8989 <p>Description of animations in animations/</p>
9090
91 <p><strong>image</strong> | <code>filename</code> | Filename of sprite-sheet image.</p>
91 <p><strong>image</strong> | <code>filename, string : Filename, ID</code> | Filename of sprite-sheet image along with an identifier string. The identifier string may be omitted if there is only a single image.</p>
9292
9393 <p><strong>render_size</strong> | <code>int, int : Width, Height</code> | Width and height of animation.</p>
9494
110110
111111 <p><strong>animation.active_frame</strong> | <code>[list(int), "all"]</code> | A list of frames marked as &ldquo;active&rdquo;. Also, &ldquo;all&rdquo; can be used to mark all frames as active.</p>
112112
113 <p><strong>animation.frame</strong> | <code>int, int, int, int, int, int, int, int : Index, Direction, X, Y, Width, Height, X offset, Y offset</code> | A single frame of a compressed animation.</p>
113 <p><strong>animation.frame</strong> | <code>int, int, int, int, int, int, int, int, string : Index, Direction, X, Y, Width, Height, X offset, Y offset, Image ID</code> | A single frame of a compressed animation. The image ID may be omitted, in which case the first available image will be used.</p>
114114
115115 <hr />
116116
142142
143143 <p><strong>offset</strong> | <code>int</code> | The vertical offset for the combat text&rsquo;s starting position.</p>
144144
145 <p><strong>fade_duration</strong> | <code>duration</code> | How long the combat text will spend fading out in &lsquo;ms&rsquo; or &rsquo;s'.</p>
146
145147 <hr />
146148
147149 <h4>CursorManager</h4>
156158
157159 <p><strong>attack</strong> | <code>filename</code> | Filename of an image for the cursor when attacking enemies.</p>
158160
161 <p><strong>lowhp_normal</strong> | <code>filename</code> | Filename of an image for the normal cursor when health is low.</p>
162
163 <p><strong>lowhp_interact</strong> | <code>filename</code> | Filename of an image for the object interaction cursor when health is low.</p>
164
165 <p><strong>lowhp_talk</strong> | <code>filename</code> | Filename of an image for the NPC interaction cursor when health is low.</p>
166
167 <p><strong>lowhp_attack</strong> | <code>filename</code> | Filename of an image for the cursor when attacking enemies and health is low.</p>
168
159169 <hr />
160170
161171 <h4>EnemyGroupManager</h4>
206216
207217 <p><strong>save_pos_onexit</strong> | <code>bool</code> | If the game gets saved on exiting, store the player&rsquo;s current position instead of the map spawn position.</p>
208218
219 <p><strong>save_oncutscene</strong> | <code>bool</code> | Saves the game when triggering any cutscene via an Event.</p>
220
221 <p><strong>save_onstash</strong> | <code>[bool, "private", "shared"]</code> | Saves the game when changing the contents of a stash. The default is true (i.e. save when using both stash types). Use caution with the values &ldquo;private&rdquo; and false, since not saving shared stashes exposes an item duplication exploit.</p>
222
223 <p><strong>save_anywhere</strong> | <code>bool</code> | Saves the game when using a button.</p>
224
209225 <p><strong>camera_speed</strong> | <code>float</code> | Modifies how fast the camera moves to recenter on the player. Larger values mean a slower camera. Default value is 10.</p>
210226
211227 <p><strong>save_buyback</strong> | <code>bool</code> | Saves the vendor buyback stock whenever the game is saved.</p>
214230
215231 <p><strong>sfx_unable_to_cast</strong> | <code>filename</code> | Sound to play when the player lacks the MP to cast a power.</p>
216232
233 <p><strong>combat_aborts_npc_interact</strong> | <code>bool</code> | If true, the NPC dialog and vendor menus will be closed if the player is attacked.</p>
234
217235 <hr />
218236
219237 <h4>EngineSettings: Resolution</h4>
250268
251269 <p>Description of engine/combat.txt</p>
252270
253 <p><strong>absorb_percent</strong> | <code>int, int : Minimum, Maximum</code> | Limits the percentage of damage that can be absorbed.</p>
254
255 <p><strong>resist_percent</strong> | <code>int, int : Minimum, Maximum</code> | Limits the percentage of damage that can be resisted.</p>
256
257 <p><strong>block_percent</strong> | <code>int, int : Minimum, Maximum</code> | Limits the percentage of damage that can be blocked.</p>
271 <p><strong>absorb_percent</strong> | <code>int, int : Minimum, Maximum</code> | Limits the percentage of damage that can be absorbed. A max value less than 100 will ensure that the target always takes at least 1 damage from non-elemental attacks.</p>
272
273 <p><strong>resist_percent</strong> | <code>int, int : Minimum, Maximum</code> | Limits the percentage of damage that can be resisted. A max value less than 100 will ensure that the target always takes at least 1 damage from elemental attacks.</p>
274
275 <p><strong>block_percent</strong> | <code>int, int : Minimum, Maximum</code> | Limits the percentage of damage that can be absorbed when the target is in the &lsquo;block&rsquo; animation state. A max value less than 100 will ensure that the target always takes at least 1 damage from non-elemental attacks.</p>
258276
259277 <p><strong>avoidance_percent</strong> | <code>int, int : Minimum, Maximum</code> | Limits the percentage chance that damage will be avoided.</p>
260278
428446
429447 <p><strong>slot.quantity_label</strong> | <code>label</code> | Setting for the slot quantity text.</p>
430448
449 <p><strong>slot.quantity_color</strong> | <code>color</code> | Text color for the slot quantity text.</p>
450
431451 <p><strong>slot.quantity_bg_color</strong> | <code>color, int : Color, Alpha</code> | If a slot has a quantity, a rectangle filled with this color will be placed beneath the text.</p>
432452
453 <p><strong>slot.hotkey_label</strong> | <code>label</code> | Setting for the slot hotkey text.</p>
454
455 <p><strong>slot.hotkey_color</strong> | <code>color</code> | Text color for the slot hotkey text.</p>
456
457 <p><strong>slot.hotkey_bg_color</strong> | <code>color, int : Color, Alpha</code> | If a slot has a hotkey, a rectangle filled with this color will be placed beneath the text.</p>
458
433459 <p><strong>listbox.text_margin</strong> | <code>int, int : Left margin, Right margin</code> | The pixel margin to leave on the left and right sides of listbox element text.</p>
434460
461 <p><strong>horizontal_list.text_width</strong> | <code>int</code> | The pixel width of the text area that displays the currently selected item. Default is 150 pixels;</p>
462
435463 <hr />
436464
437465 <h4>EngineSettings: XP table</h4>
448476
449477 <p><strong>event.type</strong> | <code>string</code> | (IGNORED BY ENGINE) The &ldquo;type&rdquo; field, as used by Tiled and other mapping tools.</p>
450478
451 <p><strong>event.activate</strong> | <code>["on_trigger", "on_load", "on_leave", "on_mapexit", "on_clear", "static"]</code> | Set the state in which the event will be activated (map events only).</p>
479 <p><strong>event.activate</strong> | <code>["on_trigger", "on_interact", "on_load", "on_leave", "on_mapexit", "on_clear", "static"]</code> | Set the state in which the event will be activated (map events only). on_trigger = the player is standing in the event area or the player interacts with the hotspot. on_interact = the player ineracts with the hotspot. on_mapexit = as the player leaves the map. on_leave = as the player steps outside of an event area they were previously inside of. on_load = as the player enters a map. on_clear = all of the enemies on a map have been defeated. static = constantly, every frame.</p>
452480
453481 <p><strong>event.location</strong> | <code>rectangle</code> | Defines the location area for the event.</p>
454482
462490
463491 <p><strong>event.tooltip</strong> | <code>string</code> | Tooltip for event</p>
464492
465 <p><strong>event.power_path</strong> | <code>["hero", point]</code> | Event power path</p>
493 <p><strong>event.power_path</strong> | <code>int, int, ["hero", point] : Source X, Source Y, Destination</code> | Path that an event power will take.</p>
466494
467495 <p><strong>event.power_damage</strong> | <code>int, int : Min, Max</code> | Range of power damage</p>
468496
496524
497525 <p><strong>event.requires_not_currency</strong> | <code>int</code> | Event requires no more than this much currency</p>
498526
499 <p><strong>event.requires_item</strong> | <code>list(item_id)</code> | Event requires specific item (not equipped)</p>
500
501 <p><strong>event.requires_not_item</strong> | <code>list(item_id)</code> | Event requires not having a specific item (not equipped)</p>
527 <p><strong>event.requires_item</strong> | <code>list(item_id)</code> | Event requires specific item (not equipped). Quantity can be specified by appending &ldquo; Q&rdquo; to the item_id, where Q is an integer.</p>
528
529 <p><strong>event.requires_not_item</strong> | <code>list(item_id)</code> | Event requires not having a specific item (not equipped). Quantity can be specified by appending &ldquo; Q&rdquo; to the item_id, where Q is an integer.</p>
502530
503531 <p><strong>event.requires_class</strong> | <code>predefined_string</code> | Event requires this base class</p>
504532
510538
511539 <p><strong>event.remove_currency</strong> | <code>int</code> | Removes specified amount of currency from hero inventory</p>
512540
513 <p><strong>event.remove_item</strong> | <code>list(item_id)</code> | Removes specified item from hero inventory</p>
541 <p><strong>event.remove_item</strong> | <code>list(item_id)</code> | Removes specified item from hero inventory. Quantity can be specified by appending &ldquo; Q&rdquo; to the item_id, where Q is an integer.</p>
514542
515543 <p><strong>event.reward_xp</strong> | <code>int</code> | Reward hero with specified amount of experience points.</p>
516544
517545 <p><strong>event.reward_currency</strong> | <code>int</code> | Reward hero with specified amount of currency.</p>
518546
519 <p><strong>event.reward_item</strong> | <code>item_id, int : Item, Quantity</code> | Reward hero with y number of item x.</p>
547 <p><strong>event.reward_item</strong> | <code>(list(item_id)</code> | Reward hero with a specified item. Quantity can be specified by appending &ldquo; Q&rdquo; to the item_id, where Q is an integer. To maintain backwards compatibility, the quantity must be defined for at least the first item in the list in order to use this syntax.</p>
548
549 <p><strong>event.reward_item</strong> | <code>item_id, int : Item, Quantity</code> | Reward hero with y number of item x. NOTE This syntax is maintained for backwards compatibility. It is recommended to use the above syntax instead.</p>
520550
521551 <p><strong>event.reward_loot</strong> | <code>list(loot)</code> | Reward hero with random loot.</p>
522552
548578
549579 <p><strong>event.respec</strong> | <code>["xp", "stats", "powers"], bool : Respec mode, Ignore class defaults</code> | Resets various aspects of the character&rsquo;s progression. Resetting &ldquo;xp&rdquo; also resets &ldquo;stats&rdquo;. Resetting &ldquo;stats&rdquo; also resets &ldquo;powers&rdquo;.</p>
550580
581 <p><strong>event.show_on_minimap</strong> | <code>bool</code> | If true, this event will be shown on the minimap if it is the appropriate type (e.g. an intermap teleport).</p>
582
583 <p><strong>event.parallax_layers</strong> | <code>filename</code> | Filename of a parallax layers definition to load.</p>
584
551585 <hr />
552586
553587 <h4>EventManager: Random Map List</h4>
594628
595629 <hr />
596630
597 <h4>GameStateConfigBase</h4>
631 <h4>Cutscene</h4>
632
633 <p>Description of cutscenes in cutscenes/</p>
634
635 <p><strong>caption_margins</strong> | <code>float, float : X margin, Y margin</code> | Percentage-based margins for the caption text based on screen size</p>
636
637 <p><strong>caption_background</strong> | <code>color, int : Color, Alpha</code> | Color (RGBA) of the caption area background.</p>
638
639 <p><strong>vscroll_speed</strong> | <code>float</code> | The speed at which elements will scroll in &lsquo;vscroll&rsquo; scenes.</p>
640
641 <p><strong>menu_backgrounds</strong> | <code>bool</code> | This cutscene will use a random fullscreen background image, like the title screen does</p>
642
643 <p><strong>music</strong> | <code>filename</code> | The music file that will play during this cutscene.</p>
644
645 <p><strong>scene.caption</strong> | <code>string</code> | A caption that will be shown.</p>
646
647 <p><strong>scene.image</strong> | <code>filename, int : Filename, Scaling type</code> | Filename of an image that will be shown. The scaling type is a value between 0-2, corresponding to none, fit height, fit screen.</p>
648
649 <p><strong>scene.pause</strong> | <code>duration</code> | Pause before next component in &lsquo;ms&rsquo; or &rsquo;s'. A value of &lsquo;-1&rsquo; may be used to pause indefinitely.</p>
650
651 <p><strong>scene.soundfx</strong> | <code>filename</code> | Filename of a sound that will be played</p>
652
653 <p><strong>vscroll.text</strong> | <code>string</code> | A single, non-wrapping line of text.</p>
654
655 <p><strong>vscroll.image</strong> | <code>filename</code> | Filename of an image that will be shown.</p>
656
657 <p><strong>vscroll.separator</strong> | <code>int</code> | Places an invisible gap of a specified height between elements.</p>
658
659 <hr />
660
661 <h4>GameStateLoad</h4>
662
663 <p>Description of menus/gameload.txt</p>
664
665 <p><strong>button_new</strong> | <code>int, int, alignment : X, Y, Alignment</code> | Position of the &ldquo;New Game&rdquo; button.</p>
666
667 <p><strong>button_load</strong> | <code>int, int, alignment : X, Y, Alignment</code> | Position of the &ldquo;Load Game&rdquo; button.</p>
668
669 <p><strong>button_delete</strong> | <code>int, int, alignment : X, Y, Alignment</code> | Position of the &ldquo;Delete Save&rdquo; button.</p>
670
671 <p><strong>button_exit</strong> | <code>int, int, alignment : X, Y, Alignment</code> | Position of the &ldquo;Exit to Title&rdquo; button.</p>
672
673 <p><strong>portrait</strong> | <code>rectangle</code> | Position and dimensions of the portrait image.</p>
674
675 <p><strong>gameslot</strong> | <code>rectangle</code> | Position and dimensions of the first game slot.</p>
676
677 <p><strong>name</strong> | <code>label</code> | The label for the hero&rsquo;s name. Position is relative to game slot position.</p>
678
679 <p><strong>level</strong> | <code>label</code> | The label for the hero&rsquo;s level. Position is relative to game slot position.</p>
680
681 <p><strong>class</strong> | <code>label</code> | The label for the hero&rsquo;s class. Position is relative to game slot position.</p>
682
683 <p><strong>map</strong> | <code>label</code> | The label for the hero&rsquo;s current location. Position is relative to game slot position.</p>
684
685 <p><strong>slot_number</strong> | <code>label</code> | The label for the save slot index. Position is relative to game slot position.</p>
686
687 <p><strong>loading_label</strong> | <code>label</code> | The label for the &ldquo;Entering game world&hellip;&rdquo;/&ldquo;Loading saved game&hellip;&rdquo; text.</p>
688
689 <p><strong>sprite</strong> | <code>point</code> | Position for the avatar preview image in each slot</p>
690
691 <p><strong>visible_slots</strong> | <code>int</code> | The maximum numbers of visible save slots.</p>
692
693 <p><strong>text_trim_boundary</strong> | <code>int</code> | The position of the right-side boundary where text will be shortened with an ellipsis. Position is relative to game slot position.</p>
694
695 <hr />
696
697 <h4>GameStateNew: Layout</h4>
698
699 <p>Description of menus/gamenew.txt</p>
700
701 <p><strong>button_prev</strong> | <code>int, int, alignment : X, Y, Alignment</code> | Position of button to choose the previous preset hero.</p>
702
703 <p><strong>button_next</strong> | <code>int, int, alignment : X, Y, Alignment</code> | Position of button to choose the next preset hero.</p>
704
705 <p><strong>button_exit</strong> | <code>int, int, alignment : X, Y, Alignment</code> | Position of &ldquo;Cancel&rdquo; button.</p>
706
707 <p><strong>button_create</strong> | <code>int, int, alignment : X, Y, Alignment</code> | Position of &ldquo;Create&rdquo; button.</p>
708
709 <p><strong>button_permadeath</strong> | <code>int, int, alignment : X, Y, Alignment</code> | Position of checkbox for toggling permadeath.</p>
710
711 <p><strong>button_randomize</strong> | <code>int, int, alignment : X, Y, Alignment</code> | Position of the &ldquo;Randomize&rdquo; button.</p>
712
713 <p><strong>name_input</strong> | <code>int, int, alignment : X, Y, Alignment</code> | Position of the hero name textbox.</p>
714
715 <p><strong>portrait_label</strong> | <code>label</code> | Label for the &ldquo;Choose a Portrait&rdquo; text.</p>
716
717 <p><strong>name_label</strong> | <code>label</code> | Label for the &ldquo;Choose a Name&rdquo; text.</p>
718
719 <p><strong>permadeath_label</strong> | <code>label</code> | Label for the &ldquo;Permadeath?&rdquo; text.</p>
720
721 <p><strong>classlist_label</strong> | <code>label</code> | Label for the &ldquo;Choose a Class&rdquo; text.</p>
722
723 <p><strong>classlist_height</strong> | <code>int</code> | Number of visible rows for the class list widget.</p>
724
725 <p><strong>portrait</strong> | <code>rectangle</code> | Position and dimensions of the portrait image.</p>
726
727 <p><strong>class_list</strong> | <code>int, int, alignment : X, Y, Alignment</code> | Position of the class list.</p>
728
729 <p><strong>show_classlist</strong> | <code>bool</code> | Allows hiding the class list.</p>
730
731 <p><strong>show_randomize</strong> | <code>bool</code> | Toggles the visibility of the &ldquo;Randomize&rdquo; button.</p>
732
733 <p><strong>random_option</strong> | <code>bool</code> | Initially picks a random character option (aka portrait/name).</p>
734
735 <p><strong>random_class</strong> | <code>bool</code> | Initially picks a random character class.</p>
736
737 <hr />
738
739 <h4>GameStateNew: Hero options</h4>
740
741 <p>Description of engine/hero_options.txt</p>
742
743 <p><strong>option</strong> | <code>int, string, string, filename, string : Index, Base, Head, Portrait, Name</code> | A default body, head, portrait, and name for a hero.</p>
744
745 <hr />
746
747 <h4>GameStatePlay: Titles</h4>
748
749 <p>Description of engine/titles.txt</p>
750
751 <p><strong>title.title</strong> | <code>string</code> | The displayed title.</p>
752
753 <p><strong>title.level</strong> | <code>int</code> | Requires level.</p>
754
755 <p><strong>title.power</strong> | <code>power_id</code> | Requires power.</p>
756
757 <p><strong>title.requires_status</strong> | <code>list(string)</code> | Requires status.</p>
758
759 <p><strong>title.requires_not_status</strong> | <code>list(string)</code> | Requires not status.</p>
760
761 <p><strong>title.primary_stat</strong> | <code>predefined_string, predefined_string : Primary stat, Lesser primary stat</code> | Required primary stat(s). The lesser stat is optional.</p>
762
763 <hr />
764
765 <h4>GameStateTitle</h4>
766
767 <p>Description of menus/gametitle.txt</p>
768
769 <p><strong>logo</strong> | <code>filename, int, int, alignment : Image file, X, Y, Alignment</code> | Filename and position of the main logo image.</p>
770
771 <p><strong>play_pos</strong> | <code>int, int, alignment : X, Y, Alignment</code> | Position of the &ldquo;Play Game&rdquo; button.</p>
772
773 <p><strong>config_pos</strong> | <code>int, int, alignment : X, Y, Alignment</code> | Position of the &ldquo;Configuration&rdquo; button.</p>
774
775 <p><strong>credits_pos</strong> | <code>int, int, alignment : X, Y, Alignment</code> | Position of the &ldquo;Credits&rdquo; button.</p>
776
777 <p><strong>exit_pos</strong> | <code>int, int, alignment : X, Y, Alignment</code> | Position of the &ldquo;Exit Game&rdquo; button.</p>
778
779 <hr />
780
781 <h4>GameSwitcher: Default music</h4>
782
783 <p>Description of engine/default_music.txt</p>
784
785 <p><strong>music</strong> | <code>filename</code> | Filename of a music file to play during game states that don&rsquo;t already have music.</p>
786
787 <hr />
788
789 <h4>GameSwitcher: Background images</h4>
790
791 <p>Description of engine/menu_backgrounds.txt</p>
792
793 <p><strong>background</strong> | <code>repeatable(filename)</code> | Filename of a background image to be added to the pool of random menu backgrounds</p>
794
795 <hr />
796
797 <h4>GameSwitcher: FPS counter</h4>
798
799 <p>Description of menus/fps.txt</p>
800
801 <p><strong>position</strong> | <code>int, int, alignment : X, Y, Alignment</code> | Position of the fps counter.</p>
802
803 <p><strong>color</strong> | <code>color</code> | Color of the fps counter text.</p>
804
805 <hr />
806
807 <h4>IconManager</h4>
808
809 <p>Description of engine/icons.txt</p>
810
811 <p><strong>icon_set</strong> | <code>repeatable(icon_id, filename) : First ID, Image file</code> | Defines an icon graphics file to load, as well as the index of the first icon.</p>
812
813 <p><strong>text_offset</strong> | <code>point</code> | A pixel offset from the top-left to place item quantity text on icons.</p>
814
815 <hr />
816
817 <h4>InputState: Default Keybindings</h4>
818
819 <p>Description of engine/default_keybindings.txt. Use <strong>-1</strong> for no binding. Keyboard values can be any of the key names listed in the <a href="https://wiki.libsdl.org/SDL_Keycode">SDL docs</a>. Mouse values are in the format <strong>mouse_0</strong>. Joystick buttons are in the format <strong>joy_0</strong>. Joystick axis are in the format <strong>axis_0-</strong> or <strong>axis_0+</strong>.</p>
820
821 <p><strong>default.cancel</strong> | <code>string, string, string : Keyboard/mouse 1, Keyboard/mouse 2, Joystick</code> | Bindings for &ldquo;Cancel&rdquo;.</p>
822
823 <p><strong>default.accept</strong> | <code>string, string, string : Keyboard/mouse 1, Keyboard/mouse 2, Joystick</code> | Bindings for &ldquo;Accept&rdquo;.</p>
824
825 <p><strong>default.up</strong> | <code>string, string, string : Keyboard/mouse 1, Keyboard/mouse 2, Joystick</code> | Bindings for &ldquo;Up&rdquo;.</p>
826
827 <p><strong>default.down</strong> | <code>string, string, string : Keyboard/mouse 1, Keyboard/mouse 2, Joystick</code> | Bindings for &ldquo;Down&rdquo;.</p>
828
829 <p><strong>default.left</strong> | <code>string, string, string : Keyboard/mouse 1, Keyboard/mouse 2, Joystick</code> | Bindings for &ldquo;Left&rdquo;.</p>
830
831 <p><strong>default.right</strong> | <code>string, string, string : Keyboard/mouse 1, Keyboard/mouse 2, Joystick</code> | Bindings for &ldquo;Right&rdquo;.</p>
832
833 <p><strong>default.bar1</strong> | <code>string, string, string : Keyboard/mouse 1, Keyboard/mouse 2, Joystick</code> | Bindings for &ldquo;Bar1&rdquo;.</p>
834
835 <p><strong>default.bar2</strong> | <code>string, string, string : Keyboard/mouse 1, Keyboard/mouse 2, Joystick</code> | Bindings for &ldquo;Bar2&rdquo;.</p>
836
837 <p><strong>default.bar3</strong> | <code>string, string, string : Keyboard/mouse 1, Keyboard/mouse 2, Joystick</code> | Bindings for &ldquo;Bar3&rdquo;.</p>
838
839 <p><strong>default.bar4</strong> | <code>string, string, string : Keyboard/mouse 1, Keyboard/mouse 2, Joystick</code> | Bindings for &ldquo;Bar4&rdquo;.</p>
840
841 <p><strong>default.bar5</strong> | <code>string, string, string : Keyboard/mouse 1, Keyboard/mouse 2, Joystick</code> | Bindings for &ldquo;Bar5&rdquo;.</p>
842
843 <p><strong>default.bar6</strong> | <code>string, string, string : Keyboard/mouse 1, Keyboard/mouse 2, Joystick</code> | Bindings for &ldquo;Bar6&rdquo;.</p>
844
845 <p><strong>default.bar7</strong> | <code>string, string, string : Keyboard/mouse 1, Keyboard/mouse 2, Joystick</code> | Bindings for &ldquo;Bar7&rdquo;.</p>
846
847 <p><strong>default.bar8</strong> | <code>string, string, string : Keyboard/mouse 1, Keyboard/mouse 2, Joystick</code> | Bindings for &ldquo;Bar8&rdquo;.</p>
848
849 <p><strong>default.bar9</strong> | <code>string, string, string : Keyboard/mouse 1, Keyboard/mouse 2, Joystick</code> | Bindings for &ldquo;Bar9&rdquo;.</p>
850
851 <p><strong>default.bar0</strong> | <code>string, string, string : Keyboard/mouse 1, Keyboard/mouse 2, Joystick</code> | Bindings for &ldquo;Bar0&rdquo;.</p>
852
853 <p><strong>default.main1</strong> | <code>string, string, string : Keyboard/mouse 1, Keyboard/mouse 2, Joystick</code> | Bindings for &ldquo;Main1&rdquo;.</p>
854
855 <p><strong>default.main2</strong> | <code>string, string, string : Keyboard/mouse 1, Keyboard/mouse 2, Joystick</code> | Bindings for &ldquo;Main2&rdquo;.</p>
856
857 <p><strong>default.character</strong> | <code>string, string, string : Keyboard/mouse 1, Keyboard/mouse 2, Joystick</code> | Bindings for &ldquo;Character&rdquo;.</p>
858
859 <p><strong>default.inventory</strong> | <code>string, string, string : Keyboard/mouse 1, Keyboard/mouse 2, Joystick</code> | Bindings for &ldquo;Inventory&rdquo;.</p>
860
861 <p><strong>default.powers</strong> | <code>string, string, string : Keyboard/mouse 1, Keyboard/mouse 2, Joystick</code> | Bindings for &ldquo;Powers&rdquo;.</p>
862
863 <p><strong>default.log</strong> | <code>string, string, string : Keyboard/mouse 1, Keyboard/mouse 2, Joystick</code> | Bindings for &ldquo;Log&rdquo;.</p>
864
865 <p><strong>default.ctrl</strong> | <code>string, string, string : Keyboard/mouse 1, Keyboard/mouse 2, Joystick</code> | Bindings for &ldquo;Ctrl&rdquo;.</p>
866
867 <p><strong>default.shift</strong> | <code>string, string, string : Keyboard/mouse 1, Keyboard/mouse 2, Joystick</code> | Bindings for &ldquo;Shift&rdquo;.</p>
868
869 <p><strong>default.alt</strong> | <code>string, string, string : Keyboard/mouse 1, Keyboard/mouse 2, Joystick</code> | Bindings for &ldquo;Alt&rdquo;.</p>
870
871 <p><strong>default.delete</strong> | <code>string, string, string : Keyboard/mouse 1, Keyboard/mouse 2, Joystick</code> | Bindings for &ldquo;Delete&rdquo;.</p>
872
873 <p><strong>default.actionbar</strong> | <code>string, string, string : Keyboard/mouse 1, Keyboard/mouse 2, Joystick</code> | Bindings for &ldquo;Actionbar Accept&rdquo;.</p>
874
875 <p><strong>default.actionbar_back</strong> | <code>string, string, string : Keyboard/mouse 1, Keyboard/mouse 2, Joystick</code> | Bindings for &ldquo;Actionbar Left&rdquo;.</p>
876
877 <p><strong>default.actionbar_forward</strong> | <code>string, string, string : Keyboard/mouse 1, Keyboard/mouse 2, Joystick</code> | Bindings for &ldquo;Actionbar Right&rdquo;.</p>
878
879 <p><strong>default.actionbar_use</strong> | <code>string, string, string : Keyboard/mouse 1, Keyboard/mouse 2, Joystick</code> | Bindings for &ldquo;Actionbar Use&rdquo;.</p>
880
881 <p><strong>default.developer_menu</strong> | <code>string, string, string : Keyboard/mouse 1, Keyboard/mouse 2, Joystick</code> | Bindings for &ldquo;Developer Menu&rdquo;.</p>
882
883 <hr />
884
885 <h4>ItemManager: Items</h4>
886
887 <p>Description about the class and it usage, items/items.txt&hellip;</p>
888
889 <p><strong>id</strong> | <code>item_id</code> | An uniq id of the item used as reference from other classes.</p>
890
891 <p><strong>name</strong> | <code>string</code> | Item name displayed on long and short tooltips.</p>
892
893 <p><strong>flavor</strong> | <code>string</code> | A description of the item.</p>
894
895 <p><strong>level</strong> | <code>int</code> | The item&rsquo;s level. Has no gameplay impact. (Deprecated?)</p>
896
897 <p><strong>icon</strong> | <code>icon_id</code> | An id for the icon to display for this item.</p>
898
899 <p><strong>book</strong> | <code>filename</code> | A book file to open when this item is activated.</p>
900
901 <p><strong>book_is_readable</strong> | <code>bool</code> | If true, &ldquo;read&rdquo; is displayed in the tooltip instead of &ldquo;use&rdquo;. Defaults to true.</p>
902
903 <p><strong>quality</strong> | <code>predefined_string</code> | Item quality matching an id in items/qualities.txt</p>
904
905 <p><strong>item_type</strong> | <code>predefined_string</code> | Equipment slot matching an id in items/types.txt</p>
906
907 <p><strong>equip_flags</strong> | <code>list(predefined_string)</code> | A comma separated list of flags to set when this item is equipped. See engine/equip_flags.txt.</p>
908
909 <p><strong>dmg</strong> | <code>predefined_string, int, int : Damage type, Min, Max</code> | Defines the item&rsquo;s base damage type and range. Max may be ommitted and will default to Min.</p>
910
911 <p><strong>abs</strong> | <code>int, int : Min, Max</code> | Defines the item absorb value, if only min is specified the absorb value is fixed.</p>
912
913 <p><strong>requires_level</strong> | <code>int</code> | The hero&rsquo;s level must match or exceed this value in order to equip this item.</p>
914
915 <p><strong>requires_stat</strong> | <code>repeatable(predefined_string, int) : Primary stat name, Value</code> | Make item require specific stat level ex. requires_stat=physical,6 will require hero to have level 6 in physical stats</p>
916
917 <p><strong>requires_class</strong> | <code>predefined_string</code> | The hero&rsquo;s base class (engine/classes.txt) must match for this item to be equipped.</p>
918
919 <p><strong>bonus</strong> | <code>repeatable(predefined_string, int) : Stat name, Value</code> | Adds a bonus to the item by stat name, example bonus=hp, 50</p>
920
921 <p><strong>bonus_power_level</strong> | <code>repeatable(power_id, int) : Base power, Bonus levels</code> | Grants bonus levels to a given base power.</p>
922
923 <p><strong>soundfx</strong> | <code>filename</code> | Sound effect filename to play for the specific item.</p>
924
925 <p><strong>gfx</strong> | <code>filename</code> | Filename of an animation set to display when the item is equipped.</p>
926
927 <p><strong>loot_animation</strong> | <code>repeatable(filename, int, int) : Loot image, Min quantity, Max quantity</code> | Specifies the loot animation file for the item. The max quantity, or both quantity values, may be omitted.</p>
928
929 <p><strong>power</strong> | <code>power_id</code> | Adds a specific power to the item which makes it usable as a power and can be placed in action bar.</p>
930
931 <p><strong>replace_power</strong> | <code>repeatable(int, int) : Old power, New power</code> | Replaces the old power id with the new power id in the action bar when equipped.</p>
932
933 <p><strong>power_desc</strong> | <code>string</code> | A string describing the additional power.</p>
934
935 <p><strong>price</strong> | <code>int</code> | The amount of currency the item costs, if set to 0 the item cannot be sold.</p>
936
937 <p><strong>price_per_level</strong> | <code>int</code> | Additional price for each player level above 1</p>
938
939 <p><strong>price_sell</strong> | <code>int</code> | The amount of currency the item is sold for, if set to 0 the sell prices is prices*vendor_ratio.</p>
940
941 <p><strong>max_quantity</strong> | <code>int</code> | Max item count per stack.</p>
942
943 <p><strong>pickup_status</strong> | <code>string</code> | Set a campaign status when item is picked up, this is used for quest items.</p>
944
945 <p><strong>stepfx</strong> | <code>predefined_string</code> | Sound effect when walking, this applies only to armors.</p>
946
947 <p><strong>disable_slots</strong> | <code>list(predefined_string)</code> | A comma separated list of equip slot types to disable when this item is equipped.</p>
948
949 <p><strong>quest_item</strong> | <code>bool</code> | If true, this item is a quest item and can not be dropped or sold. The item also can&rsquo;t be stashed, unless the no_stash property is set to something other than &ldquo;all&rdquo;.</p>
950
951 <p><strong>no_stash</strong> | <code>["ignore", "private", "shared", "all"]</code> | If not set to &lsquo;ignore&rsquo;, this item will not be able to be put in the corresponding stash.</p>
952
953 <p><strong>item.script</strong> | <code>filename</code> | Loads and executes a script file when the item is activated from the player&rsquo;s inventory.</p>
954
955 <hr />
956
957 <h4>ItemManager: Types</h4>
958
959 <p>Definition of a item types, items/types.txt&hellip;</p>
960
961 <p><strong>type.id</strong> | <code>string</code> | Item type identifier.</p>
962
963 <p><strong>type.name</strong> | <code>string</code> | Item type name.</p>
964
965 <hr />
966
967 <h4>ItemManager: Qualities</h4>
968
969 <p>Definition of a item qualities, items/types.txt&hellip;</p>
970
971 <p><strong>quality.id</strong> | <code>string</code> | Item quality identifier.</p>
972
973 <p><strong>quality.name</strong> | <code>string</code> | Item quality name.</p>
974
975 <p><strong>quality.color</strong> | <code>color</code> | Item quality color.</p>
976
977 <p><strong>quality.overlay_icon</strong> | <code>icon_id</code> | The icon to be used as an overlay.</p>
978
979 <hr />
980
981 <h4>ItemManager: Sets</h4>
982
983 <p>Definition of a item sets, items/sets.txt&hellip;</p>
984
985 <p><strong>id</strong> | <code>int</code> | A uniq id for the item set.</p>
986
987 <p><strong>name</strong> | <code>string</code> | Name of the item set.</p>
988
989 <p><strong>items</strong> | <code>list(item_id)</code> | List of item id&rsquo;s that is part of the set.</p>
990
991 <p><strong>color</strong> | <code>color</code> | A specific of color for the set.</p>
992
993 <p><strong>bonus</strong> | <code>repeatable(int, string, int) : Required set item count, Stat name, Value</code> | Bonus to append to items in the set.</p>
994
995 <p><strong>bonus_power_level</strong> | <code>repeatable(int, power_id, int) : Required set item count, Base power, Bonus levels</code> | Grants bonus levels to a given base power.</p>
996
997 <hr />
998
999 <h4>Map</h4>
1000
1001 <p>Description of maps/</p>
1002
1003 <p><strong>title</strong> | <code>string</code> | Title of map</p>
1004
1005 <p><strong>width</strong> | <code>int</code> | Width of map</p>
1006
1007 <p><strong>height</strong> | <code>int</code> | Height of map</p>
1008
1009 <p><strong>tileset</strong> | <code>filename</code> | Filename of a tileset definition to use for map</p>
1010
1011 <p><strong>music</strong> | <code>filename</code> | Filename of background music to use for map</p>
1012
1013 <p><strong>hero_pos</strong> | <code>point</code> | The player will spawn in this location if no point was previously given.</p>
1014
1015 <p><strong>parallax_layers</strong> | <code>filename</code> | Filename of a parallax layers definition.</p>
1016
1017 <p><strong>background_color</strong> | <code>color, int : Color, alpha</code> | Background color for the map.</p>
1018
1019 <p><strong>tilewidth</strong> | <code>int</code> | Inherited from Tiled map file. Unused by engine.</p>
1020
1021 <p><strong>tileheight</strong> | <code>int</code> | Inherited from Tiled map file. Unused by engine.</p>
1022
1023 <p><strong>layer.type</strong> | <code>string</code> | Map layer type.</p>
1024
1025 <p><strong>layer.format</strong> | <code>string</code> | Format for map layer, must be &lsquo;dec&rsquo;</p>
1026
1027 <p><strong>layer.data</strong> | <code>raw</code> | Raw map layer data</p>
1028
1029 <p><strong>enemygroup.type</strong> | <code>string</code> | (IGNORED BY ENGINE) The &ldquo;type&rdquo; field, as used by Tiled and other mapping tools.</p>
1030
1031 <p><strong>enemygroup.category</strong> | <code>predefined_string</code> | The category of enemies that will spawn in this group.</p>
1032
1033 <p><strong>enemygroup.level</strong> | <code>int, int : Min, Max</code> | Defines the level range of enemies in group. If only one number is given, it&rsquo;s the exact level.</p>
1034
1035 <p><strong>enemygroup.location</strong> | <code>rectangle</code> | Location area for enemygroup</p>
1036
1037 <p><strong>enemygroup.number</strong> | <code>int, int : Min, Max</code> | Defines the range of enemies in group. If only one number is given, it&rsquo;s the exact amount.</p>
1038
1039 <p><strong>enemygroup.chance</strong> | <code>int</code> | Percentage of chance</p>
1040
1041 <p><strong>enemygroup.direction</strong> | <code>direction</code> | Direction that enemies will initially face.</p>
1042
1043 <p><strong>enemygroup.waypoints</strong> | <code>list(point)</code> | Enemy waypoints; single enemy only; negates wander_radius</p>
1044
1045 <p><strong>enemygroup.wander_radius</strong> | <code>int</code> | The radius (in tiles) that an enemy will wander around randomly; negates waypoints</p>
1046
1047 <p><strong>enemygroup.requires_status</strong> | <code>list(string)</code> | Status required for loading enemies</p>
1048
1049 <p><strong>enemygroup.requires_not_status</strong> | <code>list(string)</code> | Status required to be missing for loading enemies</p>
1050
1051 <p><strong>enemygroup.invincible_requires_status</strong> | <code>list(string)</code> | Enemies in this group are invincible to hero attacks when these statuses are set.</p>
1052
1053 <p><strong>enemygroup.invincible_requires_not_status</strong> | <code>list(string)</code> | Enemies in this group are invincible to hero attacks when these statuses are not set.</p>
1054
1055 <p><strong>npc.type</strong> | <code>string</code> | (IGNORED BY ENGINE) The &ldquo;type&rdquo; field, as used by Tiled and other mapping tools.</p>
1056
1057 <p><strong>npc.filename</strong> | <code>string</code> | Filename of an NPC definition.</p>
1058
1059 <p><strong>npc.requires_status</strong> | <code>list(string)</code> | Status required for NPC load. There can be multiple states, separated by comma</p>
1060
1061 <p><strong>npc.requires_not_status</strong> | <code>list(string)</code> | Status required to be missing for NPC load. There can be multiple states, separated by comma</p>
1062
1063 <p><strong>npc.location</strong> | <code>point</code> | Location of NPC</p>
1064
1065 <hr />
1066
1067 <h4>MapParallax</h4>
1068
1069 <p>Description of maps/parallax/</p>
1070
1071 <p><strong>layer.image</strong> | <code>filename</code> | Image file to use as a scrolling background.</p>
1072
1073 <p><strong>layer.speed</strong> | <code>float</code> | Speed at which the background will move relative to the camera.</p>
1074
1075 <p><strong>layer.fixed_speed</strong> | <code>float, float : X speed, Y speed</code> | Speed at which the background will move independent of the camera movement.</p>
1076
1077 <p><strong>layer.map_layer</strong> | <code>string</code> | The tile map layer that this parallax layer will be rendered on top of.</p>
1078
1079 <hr />
1080
1081 <h4>MenuActionBar</h4>
1082
1083 <p>Description of menus/actionbar.txt</p>
1084
1085 <p><strong>slot</strong> | <code>repeatable(int, int, int, bool) : Index, X, Y, Locked</code> | Index (max 10) and position for power slot. If a slot is locked, its Power can&rsquo;t be changed by the player.</p>
1086
1087 <p><strong>slot_M1</strong> | <code>point, bool : Position, Locked</code> | Position for the primary action slot. If the slot is locked, its Power can&rsquo;t be changed by the player.</p>
1088
1089 <p><strong>slot_M2</strong> | <code>point, bool : Position Locked</code> | Position for the secondary action slot. If the slot is locked, its Power can&rsquo;t be changed by the player.</p>
1090
1091 <p><strong>char_menu</strong> | <code>point</code> | Position for the Character menu button.</p>
1092
1093 <p><strong>inv_menu</strong> | <code>point</code> | Position for the Inventory menu button.</p>
1094
1095 <p><strong>powers_menu</strong> | <code>point</code> | Position for the Powers menu button.</p>
1096
1097 <p><strong>log_menu</strong> | <code>point</code> | Position for the Log menu button.</p>
1098
1099 <p><strong>tooltip_length</strong> | <code>["short", "long_menu", "long_all"]</code> | The length of power descriptions in tooltips. &lsquo;short&rsquo; will display only the power name. &lsquo;long_menu&rsquo; (the default setting) will display full tooltips, but only for powers that are in the Powers menu. &lsquo;long_all&rsquo; will display full tooltips for all powers.</p>
1100
1101 <hr />
1102
1103 <h4>MenuActiveEffects</h4>
1104
1105 <p>Description of menus/activeeffects.txt</p>
1106
1107 <p><strong>vertical</strong> | <code>bool</code> | True is vertical orientation; False is horizontal orientation.</p>
1108
1109 <hr />
1110
1111 <h4>MenuBook</h4>
1112
1113 <p>Description of books in books/</p>
1114
1115 <p><strong>close</strong> | <code>point</code> | Position of the close button.</p>
1116
1117 <p><strong>background</strong> | <code>filename</code> | Filename for the background image.</p>
1118
1119 <p><strong>image.image_pos</strong> | <code>point</code> | Position of the image.</p>
1120
1121 <p><strong>image.image</strong> | <code>filename</code> | Filename of the image.</p>
1122
1123 <p><strong>image_icon</strong> | <code>icon_id</code> | Use an icon as the image instead of a file.</p>
1124
1125 <p><strong>image.requires_status</strong> | <code>list(string)</code> | Image requires these campaign statuses in order to be visible.</p>
1126
1127 <p><strong>image.requires_not_status</strong> | <code>list(string)</code> | Image must not have any of these campaign statuses in order to be visible.</p>
1128
1129 <p><strong>text.text_pos</strong> | <code>int, int, int, ["left", "center", "right"] : X, Y, Width, Text justify</code> | Position of the text.</p>
1130
1131 <p><strong>text.text_font</strong> | <code>color, string : Font color, Font style</code> | Font color and style.</p>
1132
1133 <p><strong>text.shadow</strong> | <code>bool</code> | If true, the text will have a black shadow like the text labels in various menus.</p>
1134
1135 <p><strong>text.text</strong> | <code>string</code> | The text to be displayed.</p>
1136
1137 <p><strong>text.requires_status</strong> | <code>list(string)</code> | Text requires these campaign statuses in order to be visible.</p>
1138
1139 <p><strong>text.requires_not_status</strong> | <code>list(string)</code> | Text must not have any of these campaign statuses in order to be visible.</p>
1140
1141 <p><strong>button.button_pos</strong> | <code>point</code> | Position of the button.</p>
1142
1143 <p><strong>button.button_image</strong> | <code>filename</code> | Image file to use for this button. Default is the normal menu button.</p>
1144
1145 <p><strong>button.text</strong> | <code>string</code> | Optional text label for the button.</p>
1146
1147 <p><strong>book.${EVENT_COMPONENT}</strong> | <code>Event components to execute when the button is clicked. See the definitions in EventManager for possible attributes.</code> |</p>
1148
1149 <p><strong>event_open.${EVENT_COMPONENT}</strong> | <code>Event components to execute when the book is opened. See the definitions in EventManager for possible attributes.</code> |</p>
1150
1151 <p><strong>event_close.${EVENT_COMPONENT}</strong> | <code>Event components to execute when the book is closed. See the definitions in EventManager for possible attributes.</code> |</p>
1152
1153 <hr />
1154
1155 <h4>MenuCharacter</h4>
1156
1157 <p>Description of menus/character.txt</p>
1158
1159 <p><strong>close</strong> | <code>point</code> | Position of the close button.</p>
1160
1161 <p><strong>label_title</strong> | <code>label</code> | Position of the &ldquo;Character&rdquo; text.</p>
1162
1163 <p><strong>upgrade_primary</strong> | <code>predefined_string, point : Primary stat name, Button position</code> | Position of the button used to add a stat point to this primary stat.</p>
1164
1165 <p><strong>statlist</strong> | <code>point</code> | Position of the scrollbox containing non-primary stats.</p>
1166
1167 <p><strong>statlist_rows</strong> | <code>int</code> | The height of the statlist in rows.</p>
1168
1169 <p><strong>statlist_scrollbar_offset</strong> | <code>int</code> | Right margin in pixels for the statlist&rsquo;s scrollbar.</p>
1170
1171 <p><strong>label_name</strong> | <code>label</code> | Position of the &ldquo;Name&rdquo; text.</p>
1172
1173 <p><strong>label_level</strong> | <code>label</code> | Position of the &ldquo;Level&rdquo; text.</p>
1174
1175 <p><strong>label_primary</strong> | <code>predefined_string, label : Primary stat name, Text positioning</code> | Position of the text label for this primary stat.</p>
1176
1177 <p><strong>name</strong> | <code>rectangle</code> | Position of the player&rsquo;s name and dimensions of the tooltip hotspot.</p>
1178
1179 <p><strong>level</strong> | <code>rectangle</code> | Position of the player&rsquo;s level and dimensions of the tooltip hotspot.</p>
1180
1181 <p><strong>primary</strong> | <code>predefined_string, rectangle : Primary stat name, Hotspot position</code> | Position of this primary stat value display and dimensions of its tooltip hotspot.</p>
1182
1183 <p><strong>unspent</strong> | <code>label</code> | Position of the label showing the number of unspent stat points.</p>
1184
1185 <p><strong>show_resists</strong> | <code>bool</code> | Hide the elemental &ldquo;Resistance&rdquo; stats in the statlist if set to false.</p>
1186
1187 <p><strong>show_stat</strong> | <code>predefined_string, bool : Stat name / Damage type, Visible</code> | Hide the matching stat or damage type min/max in the statlist if set to false.</p>
1188
1189 <p><strong>name_max_width</strong> | <code>int</code> | The maxiumum width, in pixels, that the character name can occupy until it is abbreviated.</p>
1190
1191 <hr />
1192
1193 <h4>MenuConfig</h4>
5981194
5991195 <p>Description of menus/config.txt</p>
6001196
601 <p><strong>button_ok</strong> | <code>int, int, alignment : X, Y, Alignment</code> | Position of the &ldquo;OK&rdquo; button.</p>
602
603 <p><strong>button_defaults</strong> | <code>int, int, alignment : X, Y, Alignment</code> | Position of the &ldquo;Defaults&rdquo; button.</p>
604
605 <p><strong>button_cancel</strong> | <code>int, int, alignment : X, Y, Alignment</code> | Position of the &ldquo;Cancel&rdquo; button.</p>
1197 <p><strong>button_ok</strong> | <code>int, int, alignment : X, Y, Alignment</code> | Position of the &ldquo;OK&rdquo; button. Not used in the pause menu.</p>
1198
1199 <p><strong>button_defaults</strong> | <code>int, int, alignment : X, Y, Alignment</code> | Position of the &ldquo;Defaults&rdquo; button. Not used in the pause menu.</p>
1200
1201 <p><strong>button_cancel</strong> | <code>int, int, alignment : X, Y, Alignment</code> | Position of the &ldquo;Cancel&rdquo; button. Not used in the pause menu.</p>
6061202
6071203 <p><strong>listbox_scrollbar_offset</strong> | <code>int</code> | Horizontal offset from the right of listboxes (mods, languages, etc) to place the scrollbar.</p>
6081204
6101206
6111207 <p><strong>tab_offset</strong> | <code>point</code> | Offset for the row of tabs.</p>
6121208
613 <p><strong>music_volume</strong> | <code>int, int, int, int : Label X, Label Y, Widget X, Widget Y</code> | Position of the &ldquo;Music Volume&rdquo; slider relative to the frame.</p>
614
615 <p><strong>sound_volume</strong> | <code>int, int, int, int : Label X, Label Y, Widget X, Widget Y</code> | Position of the &ldquo;Sound Volume&rdquo; slider relative to the frame.</p>
616
617 <p><strong>language</strong> | <code>int, int, int, int : Label X, Label Y, Widget X, Widget Y</code> | Position of the &ldquo;Language&rdquo; list box relative to the frame.</p>
618
619 <p><strong>language_height</strong> | <code>int</code> | Number of visible rows for the &ldquo;Language&rdquo; list box.</p>
620
621 <p><strong>show_fps</strong> | <code>int, int, int, int : Label X, Label Y, Widget X, Widget Y</code> | Position of the &ldquo;Show FPS&rdquo; checkbox relative to the frame.</p>
622
623 <p><strong>colorblind</strong> | <code>int, int, int, int : Label X, Label Y, Widget X, Widget Y</code> | Position of the &ldquo;Colorblind Mode&rdquo; checkbox relative to the frame.</p>
624
625 <p><strong>hardware_cursor</strong> | <code>int, int, int, int : Label X, Label Y, Widget X, Widget Y</code> | Position of the &ldquo;Hardware mouse cursor&rdquo; checkbox relative to the frame.</p>
626
627 <p><strong>dev_mode</strong> | <code>int, int, int, int : Label X, Label Y, Widget X, Widget Y</code> | Position of the &ldquo;Developer Mode&rdquo; checkbox relative to the frame.</p>
628
629 <p><strong>subtitles</strong> | <code>int, int, int, int : Label X, Label Y, Widget X, Widget Y</code> | Position of the &ldquo;Subtitles&rdquo; checkbox relative to the frame.</p>
630
6311209 <p><strong>activemods</strong> | <code>int, int, int, int : Label X, Label Y, Widget X, Widget Y</code> | Position of the &ldquo;Active Mods&rdquo; list box relative to the frame.</p>
6321210
6331211 <p><strong>activemods_height</strong> | <code>int</code> | Number of visible rows for the &ldquo;Active Mods&rdquo; list box.</p>
6441222
6451223 <p><strong>inactivemods_activate</strong> | <code>point</code> | Position of the &ldquo;Enable&rdquo; button relative to the frame.</p>
6461224
647 <hr />
648
649 <h4>GameStateConfigDesktop</h4>
650
651 <p>Description of menus/config.txt</p>
652
653 <p><strong>renderer</strong> | <code>int, int, int, int : Label X, Label Y, Widget X, Widget Y</code> | Position of the &ldquo;Renderer&rdquo; list box relative to the frame.</p>
654
655 <p><strong>renderer_height</strong> | <code>int</code> | Number of visible rows for the &ldquo;Renderer&rdquo; list box.</p>
656
657 <p><strong>fullscreen</strong> | <code>int, int, int, int : Label X, Label Y, Widget X, Widget Y</code> | Position of the &ldquo;Full Screen Mode&rdquo; checkbox relative to the frame.</p>
658
659 <p><strong>mouse_move</strong> | <code>int, int, int, int : Label X, Label Y, Widget X, Widget Y</code> | Position of the &ldquo;Move hero using mouse&rdquo; checkbox relative to the frame.</p>
660
661 <p><strong>hwsurface</strong> | <code>int, int, int, int : Label X, Label Y, Widget X, Widget Y</code> | Position of the &ldquo;Hardware surfaces&rdquo; checkbox relative to the frame.</p>
662
663 <p><strong>vsync</strong> | <code>int, int, int, int : Label X, Label Y, Widget X, Widget Y</code> | Position of the &ldquo;V-Sync&rdquo; checkbox relative to the frame.</p>
664
665 <p><strong>texture_filter</strong> | <code>int, int, int, int : Label X, Label Y, Widget X, Widget Y</code> | Position of the &ldquo;Texture Filtering&rdquo; checkbox relative to the frame.</p>
666
667 <p><strong>dpi_scaling</strong> | <code>int, int, int, int : Label X, Label Y, Widget X, Widget Y</code> | Position of the &ldquo;DPI scaling&rdquo; checkbox relative to the frame.</p>
668
669 <p><strong>parallax_layers</strong> | <code>int, int, int, int : Label X, Label Y, Widget X, Widget Y</code> | Position of the &ldquo;Parallax Layers&rdquo; checkbox relative to the frame.</p>
670
671 <p><strong>change_gamma</strong> | <code>int, int, int, int : Label X, Label Y, Widget X, Widget Y</code> | Position of the &ldquo;Allow changing gamma&rdquo; checkbox relative to the frame.</p>
672
673 <p><strong>gamma</strong> | <code>int, int, int, int : Label X, Label Y, Widget X, Widget Y</code> | Position of the &ldquo;Gamma&rdquo; slider relative to the frame.</p>
674
675 <p><strong>enable_joystick</strong> | <code>int, int, int, int : Label X, Label Y, Widget X, Widget Y</code> | Position of the &ldquo;Use joystick&rdquo; checkbox relative to the frame.</p>
676
677 <p><strong>joystick_device</strong> | <code>int, int, int, int : Label X, Label Y, Widget X, Widget Y</code> | Position of the &ldquo;Joystick&rdquo; list box relative to the frame.</p>
678
679 <p><strong>joystick_device_height</strong> | <code>int</code> | Number of visible rows for the &ldquo;Joystick&rdquo; list box.</p>
680
681 <p><strong>mouse_aim</strong> | <code>int, int, int, int : Label X, Label Y, Widget X, Widget Y</code> | Position of the &ldquo;Mouse aim&rdquo; checkbox relative to the frame.</p>
682
683 <p><strong>no_mouse</strong> | <code>int, int, int, int : Label X, Label Y, Widget X, Widget Y</code> | Position of the &ldquo;Do not use mouse&rdquo; checkbox relative to the frame.</p>
684
685 <p><strong>mouse_move_swap</strong> | <code>int, int, int, int : Label X, Label Y, Widget X, Widget Y</code> | Position of the &ldquo;Swap mouse movement button&rdquo; checkbox relative to the frame.</p>
686
687 <p><strong>mouse_move_attack</strong> | <code>int, int, int, int : Label X, Label Y, Widget X, Widget Y</code> | Position of the &ldquo;Attack with mouse movement&rdquo; checkbox relative to the frame.</p>
688
689 <p><strong>joystick_deadzone</strong> | <code>int, int, int, int : Label X, Label Y, Widget X, Widget Y</code> | Position of the &ldquo;Joystick Deadzone&rdquo; slider relative to the frame.</p>
690
691 <p><strong>secondary_offset</strong> | <code>point</code> | Offset of the second (and third) columns of keybinds.</p>
692
693 <p><strong>keybinds_bg_color</strong> | <code>color</code> | Background color for the keybindings scrollbox.</p>
694
695 <p><strong>keybinds_bg_alpha</strong> | <code>int</code> | Alpha value for the keybindings scrollbox background color.</p>
696
6971225 <p><strong>scrollpane</strong> | <code>rectangle</code> | Position of the keybinding scrollbox relative to the frame.</p>
6981226
699 <p><strong>scrollpane_contents</strong> | <code>int</code> | The vertical size of the keybinding scrollbox&rsquo;s contents.</p>
700
701 <p><strong>cancel</strong> | <code>int, int, int, int : Label X, Label Y, Widget X, Widget Y</code> | Position of the &ldquo;Cancel&rdquo; keybind relative to the keybinding scrollbox.</p>
702
703 <p><strong>accept</strong> | <code>int, int, int, int : Label X, Label Y, Widget X, Widget Y</code> | Position of the &ldquo;Accept&rdquo; keybind relative to the keybinding scrollbox.</p>
704
705 <p><strong>up</strong> | <code>int, int, int, int : Label X, Label Y, Widget X, Widget Y</code> | Position of the &ldquo;Up&rdquo; keybind relative to the keybinding scrollbox.</p>
706
707 <p><strong>down</strong> | <code>int, int, int, int : Label X, Label Y, Widget X, Widget Y</code> | Position of the &ldquo;Down&rdquo; keybind relative to the keybinding scrollbox.</p>
708
709 <p><strong>left</strong> | <code>int, int, int, int : Label X, Label Y, Widget X, Widget Y</code> | Position of the &ldquo;Left&rdquo; keybind relative to the keybinding scrollbox.</p>
710
711 <p><strong>right</strong> | <code>int, int, int, int : Label X, Label Y, Widget X, Widget Y</code> | Position of the &ldquo;Right&rdquo; keybind relative to the keybinding scrollbox.</p>
712
713 <p><strong>bar1</strong> | <code>int, int, int, int : Label X, Label Y, Widget X, Widget Y</code> | Position of the &ldquo;Bar1&rdquo; keybind relative to the keybinding scrollbox.</p>
714
715 <p><strong>bar2</strong> | <code>int, int, int, int : Label X, Label Y, Widget X, Widget Y</code> | Position of the &ldquo;Bar2&rdquo; keybind relative to the keybinding scrollbox.</p>
716
717 <p><strong>bar3</strong> | <code>int, int, int, int : Label X, Label Y, Widget X, Widget Y</code> | Position of the &ldquo;Bar3&rdquo; keybind relative to the keybinding scrollbox.</p>
718
719 <p><strong>bar4</strong> | <code>int, int, int, int : Label X, Label Y, Widget X, Widget Y</code> | Position of the &ldquo;Bar4&rdquo; keybind relative to the keybinding scrollbox.</p>
720
721 <p><strong>bar5</strong> | <code>int, int, int, int : Label X, Label Y, Widget X, Widget Y</code> | Position of the &ldquo;Bar5&rdquo; keybind relative to the keybinding scrollbox.</p>
722
723 <p><strong>bar6</strong> | <code>int, int, int, int : Label X, Label Y, Widget X, Widget Y</code> | Position of the &ldquo;Bar6&rdquo; keybind relative to the keybinding scrollbox.</p>
724
725 <p><strong>bar7</strong> | <code>int, int, int, int : Label X, Label Y, Widget X, Widget Y</code> | Position of the &ldquo;Bar7&rdquo; keybind relative to the keybinding scrollbox.</p>
726
727 <p><strong>Bar8</strong> | <code>int, int, int, int : Label X, Label Y, Widget X, Widget Y</code> | Position of the &ldquo;Bar8&rdquo; keybind relative to the keybinding scrollbox.</p>
728
729 <p><strong>bar9</strong> | <code>int, int, int, int : Label X, Label Y, Widget X, Widget Y</code> | Position of the &ldquo;Bar9&rdquo; keybind relative to the keybinding scrollbox.</p>
730
731 <p><strong>bar0</strong> | <code>int, int, int, int : Label X, Label Y, Widget X, Widget Y</code> | Position of the &ldquo;Bar0&rdquo; keybind relative to the keybinding scrollbox.</p>
732
733 <p><strong>main1</strong> | <code>int, int, int, int : Label X, Label Y, Widget X, Widget Y</code> | Position of the &ldquo;Main1&rdquo; keybind relative to the keybinding scrollbox.</p>
734
735 <p><strong>main2</strong> | <code>int, int, int, int : Label X, Label Y, Widget X, Widget Y</code> | Position of the &ldquo;Main2&rdquo; keybind relative to the keybinding scrollbox.</p>
736
737 <p><strong>character</strong> | <code>int, int, int, int : Label X, Label Y, Widget X, Widget Y</code> | Position of the &ldquo;Character&rdquo; keybind relative to the keybinding scrollbox.</p>
738
739 <p><strong>inventory</strong> | <code>int, int, int, int : Label X, Label Y, Widget X, Widget Y</code> | Position of the &ldquo;Inventory&rdquo; keybind relative to the keybinding scrollbox.</p>
740
741 <p><strong>powers</strong> | <code>int, int, int, int : Label X, Label Y, Widget X, Widget Y</code> | Position of the &ldquo;Powers&rdquo; keybind relative to the keybinding scrollbox.</p>
742
743 <p><strong>log</strong> | <code>int, int, int, int : Label X, Label Y, Widget X, Widget Y</code> | Position of the &ldquo;Log&rdquo; keybind relative to the keybinding scrollbox.</p>
744
745 <p><strong>ctrl</strong> | <code>int, int, int, int : Label X, Label Y, Widget X, Widget Y</code> | Position of the &ldquo;Ctrl&rdquo; keybind relative to the keybinding scrollbox.</p>
746
747 <p><strong>shift</strong> | <code>int, int, int, int : Label X, Label Y, Widget X, Widget Y</code> | Position of the &ldquo;Shift&rdquo; keybind relative to the keybinding scrollbox.</p>
748
749 <p><strong>alt</strong> | <code>int, int, int, int : Label X, Label Y, Widget X, Widget Y</code> | Position of the &ldquo;Alt&rdquo; keybind relative to the keybinding scrollbox.</p>
750
751 <p><strong>delete</strong> | <code>int, int, int, int : Label X, Label Y, Widget X, Widget Y</code> | Position of the &ldquo;Delete&rdquo; keybind relative to the keybinding scrollbox.</p>
752
753 <p><strong>actionbar</strong> | <code>int, int, int, int : Label X, Label Y, Widget X, Widget Y</code> | Position of the &ldquo;ActionBar Accept&rdquo; keybind relative to the keybinding scrollbox.</p>
754
755 <p><strong>actionbar_back</strong> | <code>int, int, int, int : Label X, Label Y, Widget X, Widget Y</code> | Position of the &ldquo;ActionBar Left&rdquo; keybind relative to the keybinding scrollbox.</p>
756
757 <p><strong>actionbar_forward</strong> | <code>int, int, int, int : Label X, Label Y, Widget X, Widget Y</code> | Position of the &ldquo;ActionBar Right&rdquo; keybind relative to the keybinding scrollbox.</p>
758
759 <p><strong>actionbar_use</strong> | <code>int, int, int, int : Label X, Label Y, Widget X, Widget Y</code> | Position of the &ldquo;ActionBar Use&rdquo; keybind relative to the keybinding scrollbox.</p>
760
761 <p><strong>developer_menu</strong> | <code>int, int, int, int : Label X, Label Y, Widget X, Widget Y</code> | Position of the &ldquo;Developer Menu&rdquo; keybind relative to the keybinding scrollbox.</p>
762
763 <hr />
764
765 <h4>Cutscene</h4>
766
767 <p>Description of cutscenes in cutscenes/</p>
768
769 <p><strong>caption_margins</strong> | <code>float, float : X margin, Y margin</code> | Percentage-based margins for the caption text based on screen size</p>
770
771 <p><strong>caption_background</strong> | <code>color, int : Color, Alpha</code> | Color (RGBA) of the caption area background.</p>
772
773 <p><strong>vscroll_speed</strong> | <code>float</code> | The speed at which elements will scroll in &lsquo;vscroll&rsquo; scenes.</p>
774
775 <p><strong>menu_backgrounds</strong> | <code>bool</code> | This cutscene will use a random fullscreen background image, like the title screen does</p>
776
777 <p><strong>music</strong> | <code>filename</code> | The music file that will play during this cutscene.</p>
778
779 <p><strong>scene.caption</strong> | <code>string</code> | A caption that will be shown.</p>
780
781 <p><strong>scene.image</strong> | <code>filename, int : Filename, Scaling type</code> | Filename of an image that will be shown. The scaling type is a value between 0-2, corresponding to none, fit height, fit screen.</p>
782
783 <p><strong>scene.pause</strong> | <code>duration</code> | Pause before next component in &lsquo;ms&rsquo; or &rsquo;s'. A value of &lsquo;-1&rsquo; may be used to pause indefinitely.</p>
784
785 <p><strong>scene.soundfx</strong> | <code>filename</code> | Filename of a sound that will be played</p>
786
787 <p><strong>vscroll.text</strong> | <code>string</code> | A single, non-wrapping line of text.</p>
788
789 <p><strong>vscroll.image</strong> | <code>filename</code> | Filename of an image that will be shown.</p>
790
791 <p><strong>vscroll.separator</strong> | <code>int</code> | Places an invisible gap of a specified height between elements.</p>
792
793 <hr />
794
795 <h4>GameStateLoad</h4>
796
797 <p>Description of menus/gameload.txt</p>
798
799 <p><strong>button_new</strong> | <code>int, int, alignment : X, Y, Alignment</code> | Position of the &ldquo;New Game&rdquo; button.</p>
800
801 <p><strong>button_load</strong> | <code>int, int, alignment : X, Y, Alignment</code> | Position of the &ldquo;Load Game&rdquo; button.</p>
802
803 <p><strong>button_delete</strong> | <code>int, int, alignment : X, Y, Alignment</code> | Position of the &ldquo;Delete Save&rdquo; button.</p>
804
805 <p><strong>button_exit</strong> | <code>int, int, alignment : X, Y, Alignment</code> | Position of the &ldquo;Exit to Title&rdquo; button.</p>
806
807 <p><strong>portrait</strong> | <code>rectangle</code> | Position and dimensions of the portrait image.</p>
808
809 <p><strong>gameslot</strong> | <code>rectangle</code> | Position and dimensions of the first game slot.</p>
810
811 <p><strong>name</strong> | <code>label</code> | The label for the hero&rsquo;s name. Position is relative to game slot position.</p>
812
813 <p><strong>level</strong> | <code>label</code> | The label for the hero&rsquo;s level. Position is relative to game slot position.</p>
814
815 <p><strong>class</strong> | <code>label</code> | The label for the hero&rsquo;s class. Position is relative to game slot position.</p>
816
817 <p><strong>map</strong> | <code>label</code> | The label for the hero&rsquo;s current location. Position is relative to game slot position.</p>
818
819 <p><strong>slot_number</strong> | <code>label</code> | The label for the save slot index. Position is relative to game slot position.</p>
820
821 <p><strong>loading_label</strong> | <code>label</code> | The label for the &ldquo;Entering game world&hellip;&rdquo;/&ldquo;Loading saved game&hellip;&rdquo; text.</p>
822
823 <p><strong>sprite</strong> | <code>point</code> | Position for the avatar preview image in each slot</p>
824
825 <p><strong>visible_slots</strong> | <code>int</code> | The maximum numbers of visible save slots.</p>
826
827 <p><strong>text_trim_boundary</strong> | <code>int</code> | The position of the right-side boundary where text will be shortened with an ellipsis. Position is relative to game slot position.</p>
828
829 <hr />
830
831 <h4>GameStateNew: Layout</h4>
832
833 <p>Description of menus/gamenew.txt</p>
834
835 <p><strong>button_prev</strong> | <code>int, int, alignment : X, Y, Alignment</code> | Position of button to choose the previous preset hero.</p>
836
837 <p><strong>button_next</strong> | <code>int, int, alignment : X, Y, Alignment</code> | Position of button to choose the next preset hero.</p>
838
839 <p><strong>button_exit</strong> | <code>int, int, alignment : X, Y, Alignment</code> | Position of &ldquo;Cancel&rdquo; button.</p>
840
841 <p><strong>button_create</strong> | <code>int, int, alignment : X, Y, Alignment</code> | Position of &ldquo;Create&rdquo; button.</p>
842
843 <p><strong>button_permadeath</strong> | <code>int, int, alignment : X, Y, Alignment</code> | Position of checkbox for toggling permadeath.</p>
844
845 <p><strong>bytton_randomize</strong> | <code>int, int, alignment : X, Y, Alignment</code> | Position of the &ldquo;Randomize&rdquo; button.</p>
846
847 <p><strong>name_input</strong> | <code>int, int, alignment : X, Y, Alignment</code> | Position of the hero name textbox.</p>
848
849 <p><strong>portrait_label</strong> | <code>label</code> | Label for the &ldquo;Choose a Portrait&rdquo; text.</p>
850
851 <p><strong>name_label</strong> | <code>label</code> | Label for the &ldquo;Choose a Name&rdquo; text.</p>
852
853 <p><strong>permadeath_label</strong> | <code>label</code> | Label for the &ldquo;Permadeath?&rdquo; text.</p>
854
855 <p><strong>classlist_label</strong> | <code>label</code> | Label for the &ldquo;Choose a Class&rdquo; text.</p>
856
857 <p><strong>classlist_height</strong> | <code>int</code> | Number of visible rows for the class list widget.</p>
858
859 <p><strong>portrait</strong> | <code>rectangle</code> | Position and dimensions of the portrait image.</p>
860
861 <p><strong>class_list</strong> | <code>int, int, alignment : X, Y, Alignment</code> | Position of the class list.</p>
862
863 <p><strong>show_classlist</strong> | <code>bool</code> | Allows hiding the class list.</p>
864
865 <p><strong>random_option</strong> | <code>bool</code> | Initially picks a random character option (aka portrait/name).</p>
866
867 <p><strong>random_class</strong> | <code>bool</code> | Initially picks a random character class.</p>
868
869 <hr />
870
871 <h4>GameStateNew: Hero options</h4>
872
873 <p>Description of engine/hero_options.txt</p>
874
875 <p><strong>option</strong> | <code>int, string, string, filename, string : Index, Base, Head, Portrait, Name</code> | A default body, head, portrait, and name for a hero.</p>
876
877 <hr />
878
879 <h4>GameStatePlay: Titles</h4>
880
881 <p>Description of engine/titles.txt</p>
882
883 <p><strong>title.title</strong> | <code>string</code> | The displayed title.</p>
884
885 <p><strong>title.level</strong> | <code>int</code> | Requires level.</p>
886
887 <p><strong>title.power</strong> | <code>power_id</code> | Requires power.</p>
888
889 <p><strong>title.requires_status</strong> | <code>list(string)</code> | Requires status.</p>
890
891 <p><strong>title.requires_not_status</strong> | <code>list(string)</code> | Requires not status.</p>
892
893 <p><strong>title.primary_stat</strong> | <code>predefined_string, predefined_string : Primary stat, Lesser primary stat</code> | Required primary stat(s). The lesser stat is optional.</p>
894
895 <hr />
896
897 <h4>GameStateTitle</h4>
898
899 <p>Description of menus/gametitle.txt</p>
900
901 <p><strong>logo</strong> | <code>filename, int, int, alignment : Image file, X, Y, Alignment</code> | Filename and position of the main logo image.</p>
902
903 <p><strong>play_pos</strong> | <code>int, int, alignment : X, Y, Alignment</code> | Position of the &ldquo;Play Game&rdquo; button.</p>
904
905 <p><strong>config_pos</strong> | <code>int, int, alignment : X, Y, Alignment</code> | Position of the &ldquo;Configuration&rdquo; button.</p>
906
907 <p><strong>credits_pos</strong> | <code>int, int, alignment : X, Y, Alignment</code> | Position of the &ldquo;Credits&rdquo; button.</p>
908
909 <p><strong>exit_pos</strong> | <code>int, int, alignment : X, Y, Alignment</code> | Position of the &ldquo;Exit Game&rdquo; button.</p>
910
911 <hr />
912
913 <h4>GameSwitcher: Default music</h4>
914
915 <p>Description of engine/default_music.txt</p>
916
917 <p><strong>music</strong> | <code>filename</code> | Filename of a music file to play during game states that don&rsquo;t already have music.</p>
918
919 <hr />
920
921 <h4>GameSwitcher: Background images</h4>
922
923 <p>Description of engine/menu_backgrounds.txt</p>
924
925 <p><strong>background</strong> | <code>repeatable(filename)</code> | Filename of a background image to be added to the pool of random menu backgrounds</p>
926
927 <hr />
928
929 <h4>GameSwitcher: FPS counter</h4>
930
931 <p>Description of menus/fps.txt</p>
932
933 <p><strong>position</strong> | <code>int, int, alignment : X, Y, Alignment</code> | Position of the fps counter.</p>
934
935 <p><strong>color</strong> | <code>color</code> | Color of the fps counter text.</p>
936
937 <hr />
938
939 <h4>IconManager</h4>
940
941 <p>Description of engine/icons.txt</p>
942
943 <p><strong>icon_set</strong> | <code>repeatable(icon_id, filename) : First ID, Image file</code> | Defines an icon graphics file to load, as well as the index of the first icon.</p>
944
945 <p><strong>text_offset</strong> | <code>point</code> | A pixel offset from the top-left to place item quantity text on icons.</p>
946
947 <hr />
948
949 <h4>InputState: Default Keybindings</h4>
950
951 <p>Description of engine/default_keybindings.txt. Use <strong>-1</strong> for no binding. Keyboard values can be any of the key names listed in the <a href="https://wiki.libsdl.org/SDL_Keycode">SDL docs</a>. Mouse values are in the format <strong>mouse_0</strong>. Joystick buttons are in the format <strong>joy_0</strong>. Joystick axis are in the format <strong>axis_0-</strong> or <strong>axis_0+</strong>.</p>
952
953 <p><strong>default.cancel</strong> | <code>string, string, string : Keyboard/mouse 1, Keyboard/mouse 2, Joystick</code> | Bindings for &ldquo;Cancel&rdquo;.</p>
954
955 <p><strong>default.accept</strong> | <code>string, string, string : Keyboard/mouse 1, Keyboard/mouse 2, Joystick</code> | Bindings for &ldquo;Accept&rdquo;.</p>
956
957 <p><strong>default.up</strong> | <code>string, string, string : Keyboard/mouse 1, Keyboard/mouse 2, Joystick</code> | Bindings for &ldquo;Up&rdquo;.</p>
958
959 <p><strong>default.down</strong> | <code>string, string, string : Keyboard/mouse 1, Keyboard/mouse 2, Joystick</code> | Bindings for &ldquo;Down&rdquo;.</p>
960
961 <p><strong>default.left</strong> | <code>string, string, string : Keyboard/mouse 1, Keyboard/mouse 2, Joystick</code> | Bindings for &ldquo;Left&rdquo;.</p>
962
963 <p><strong>default.right</strong> | <code>string, string, string : Keyboard/mouse 1, Keyboard/mouse 2, Joystick</code> | Bindings for &ldquo;Right&rdquo;.</p>
964
965 <p><strong>default.bar1</strong> | <code>string, string, string : Keyboard/mouse 1, Keyboard/mouse 2, Joystick</code> | Bindings for &ldquo;Bar1&rdquo;.</p>
966
967 <p><strong>default.bar2</strong> | <code>string, string, string : Keyboard/mouse 1, Keyboard/mouse 2, Joystick</code> | Bindings for &ldquo;Bar2&rdquo;.</p>
968
969 <p><strong>default.bar3</strong> | <code>string, string, string : Keyboard/mouse 1, Keyboard/mouse 2, Joystick</code> | Bindings for &ldquo;Bar3&rdquo;.</p>
970
971 <p><strong>default.bar4</strong> | <code>string, string, string : Keyboard/mouse 1, Keyboard/mouse 2, Joystick</code> | Bindings for &ldquo;Bar4&rdquo;.</p>
972
973 <p><strong>default.bar5</strong> | <code>string, string, string : Keyboard/mouse 1, Keyboard/mouse 2, Joystick</code> | Bindings for &ldquo;Bar5&rdquo;.</p>
974
975 <p><strong>default.bar6</strong> | <code>string, string, string : Keyboard/mouse 1, Keyboard/mouse 2, Joystick</code> | Bindings for &ldquo;Bar6&rdquo;.</p>
976
977 <p><strong>default.bar7</strong> | <code>string, string, string : Keyboard/mouse 1, Keyboard/mouse 2, Joystick</code> | Bindings for &ldquo;Bar7&rdquo;.</p>
978
979 <p><strong>default.bar8</strong> | <code>string, string, string : Keyboard/mouse 1, Keyboard/mouse 2, Joystick</code> | Bindings for &ldquo;Bar8&rdquo;.</p>
980
981 <p><strong>default.bar9</strong> | <code>string, string, string : Keyboard/mouse 1, Keyboard/mouse 2, Joystick</code> | Bindings for &ldquo;Bar9&rdquo;.</p>
982
983 <p><strong>default.bar0</strong> | <code>string, string, string : Keyboard/mouse 1, Keyboard/mouse 2, Joystick</code> | Bindings for &ldquo;Bar0&rdquo;.</p>
984
985 <p><strong>default.main1</strong> | <code>string, string, string : Keyboard/mouse 1, Keyboard/mouse 2, Joystick</code> | Bindings for &ldquo;Main1&rdquo;.</p>
986
987 <p><strong>default.main2</strong> | <code>string, string, string : Keyboard/mouse 1, Keyboard/mouse 2, Joystick</code> | Bindings for &ldquo;Main2&rdquo;.</p>
988
989 <p><strong>default.character</strong> | <code>string, string, string : Keyboard/mouse 1, Keyboard/mouse 2, Joystick</code> | Bindings for &ldquo;Character&rdquo;.</p>
990
991 <p><strong>default.inventory</strong> | <code>string, string, string : Keyboard/mouse 1, Keyboard/mouse 2, Joystick</code> | Bindings for &ldquo;Inventory&rdquo;.</p>
992
993 <p><strong>default.powers</strong> | <code>string, string, string : Keyboard/mouse 1, Keyboard/mouse 2, Joystick</code> | Bindings for &ldquo;Powers&rdquo;.</p>
994
995 <p><strong>default.log</strong> | <code>string, string, string : Keyboard/mouse 1, Keyboard/mouse 2, Joystick</code> | Bindings for &ldquo;Log&rdquo;.</p>
996
997 <p><strong>default.ctrl</strong> | <code>string, string, string : Keyboard/mouse 1, Keyboard/mouse 2, Joystick</code> | Bindings for &ldquo;Ctrl&rdquo;.</p>
998
999 <p><strong>default.shift</strong> | <code>string, string, string : Keyboard/mouse 1, Keyboard/mouse 2, Joystick</code> | Bindings for &ldquo;Shift&rdquo;.</p>
1000
1001 <p><strong>default.alt</strong> | <code>string, string, string : Keyboard/mouse 1, Keyboard/mouse 2, Joystick</code> | Bindings for &ldquo;Alt&rdquo;.</p>
1002
1003 <p><strong>default.delete</strong> | <code>string, string, string : Keyboard/mouse 1, Keyboard/mouse 2, Joystick</code> | Bindings for &ldquo;Delete&rdquo;.</p>
1004
1005 <p><strong>default.actionbar</strong> | <code>string, string, string : Keyboard/mouse 1, Keyboard/mouse 2, Joystick</code> | Bindings for &ldquo;Actionbar Accept&rdquo;.</p>
1006
1007 <p><strong>default.actionbar_back</strong> | <code>string, string, string : Keyboard/mouse 1, Keyboard/mouse 2, Joystick</code> | Bindings for &ldquo;Actionbar Left&rdquo;.</p>
1008
1009 <p><strong>default.actionbar_forward</strong> | <code>string, string, string : Keyboard/mouse 1, Keyboard/mouse 2, Joystick</code> | Bindings for &ldquo;Actionbar Right&rdquo;.</p>
1010
1011 <p><strong>default.actionbar_use</strong> | <code>string, string, string : Keyboard/mouse 1, Keyboard/mouse 2, Joystick</code> | Bindings for &ldquo;Actionbar Use&rdquo;.</p>
1012
1013 <p><strong>default.developer_menu</strong> | <code>string, string, string : Keyboard/mouse 1, Keyboard/mouse 2, Joystick</code> | Bindings for &ldquo;Developer Menu&rdquo;.</p>
1014
1015 <hr />
1016
1017 <h4>ItemManager: Items</h4>
1018
1019 <p>Description about the class and it usage, items/items.txt&hellip;</p>
1020
1021 <p><strong>id</strong> | <code>item_id</code> | An uniq id of the item used as reference from other classes.</p>
1022
1023 <p><strong>name</strong> | <code>string</code> | Item name displayed on long and short tooltips.</p>
1024
1025 <p><strong>flavor</strong> | <code>string</code> | A description of the item.</p>
1026
1027 <p><strong>level</strong> | <code>int</code> | The item&rsquo;s level. Has no gameplay impact. (Deprecated?)</p>
1028
1029 <p><strong>icon</strong> | <code>icon_id</code> | An id for the icon to display for this item.</p>
1030
1031 <p><strong>book</strong> | <code>filename</code> | A book file to open when this item is activated.</p>
1032
1033 <p><strong>book_is_readable</strong> | <code>bool</code> | If true, &ldquo;read&rdquo; is displayed in the tooltip instead of &ldquo;use&rdquo;. Defaults to true.</p>
1034
1035 <p><strong>quality</strong> | <code>predefined_string</code> | Item quality matching an id in items/qualities.txt</p>
1036
1037 <p><strong>item_type</strong> | <code>predefined_string</code> | Equipment slot matching an id in items/types.txt</p>
1038
1039 <p><strong>equip_flags</strong> | <code>list(predefined_string)</code> | A comma separated list of flags to set when this item is equipped. See engine/equip_flags.txt.</p>
1040
1041 <p><strong>dmg</strong> | <code>predefined_string, int, int : Damage type, Min, Max</code> | Defines the item&rsquo;s base damage type and range. Max may be ommitted and will default to Min.</p>
1042
1043 <p><strong>abs</strong> | <code>int, int : Min, Max</code> | Defines the item absorb value, if only min is specified the absorb value is fixed.</p>
1044
1045 <p><strong>requires_level</strong> | <code>int</code> | The hero&rsquo;s level must match or exceed this value in order to equip this item.</p>
1046
1047 <p><strong>requires_stat</strong> | <code>repeatable(predefined_string, int) : Primary stat name, Value</code> | Make item require specific stat level ex. requires_stat=physical,6 will require hero to have level 6 in physical stats</p>
1048
1049 <p><strong>requires_class</strong> | <code>predefined_string</code> | The hero&rsquo;s base class (engine/classes.txt) must match for this item to be equipped.</p>
1050
1051 <p><strong>bonus</strong> | <code>repeatable(predefined_string, int) : Stat name, Value</code> | Adds a bonus to the item by stat name, example bonus=hp, 50</p>
1052
1053 <p><strong>bonus_power_level</strong> | <code>repeatable(power_id, int) : Base power, Bonus levels</code> | Grants bonus levels to a given base power.</p>
1054
1055 <p><strong>soundfx</strong> | <code>filename</code> | Sound effect filename to play for the specific item.</p>
1056
1057 <p><strong>gfx</strong> | <code>filename</code> | Filename of an animation set to display when the item is equipped.</p>
1058
1059 <p><strong>loot_animation</strong> | <code>repeatable(filename, int, int) : Loot image, Min quantity, Max quantity</code> | Specifies the loot animation file for the item. The max quantity, or both quantity values, may be omitted.</p>
1060
1061 <p><strong>power</strong> | <code>power_id</code> | Adds a specific power to the item which makes it usable as a power and can be placed in action bar.</p>
1062
1063 <p><strong>replace_power</strong> | <code>repeatable(int, int) : Old power, New power</code> | Replaces the old power id with the new power id in the action bar when equipped.</p>
1064
1065 <p><strong>power_desc</strong> | <code>string</code> | A string describing the additional power.</p>
1066
1067 <p><strong>price</strong> | <code>int</code> | The amount of currency the item costs, if set to 0 the item cannot be sold.</p>
1068
1069 <p><strong>price_per_level</strong> | <code>int</code> | Additional price for each player level above 1</p>
1070
1071 <p><strong>price_sell</strong> | <code>int</code> | The amount of currency the item is sold for, if set to 0 the sell prices is prices*vendor_ratio.</p>
1072
1073 <p><strong>max_quantity</strong> | <code>int</code> | Max item count per stack.</p>
1074
1075 <p><strong>pickup_status</strong> | <code>string</code> | Set a campaign status when item is picked up, this is used for quest items.</p>
1076
1077 <p><strong>stepfx</strong> | <code>predefined_string</code> | Sound effect when walking, this applies only to armors.</p>
1078
1079 <p><strong>disable_slots</strong> | <code>list(predefined_string)</code> | A comma separated list of equip slot types to disable when this item is equipped.</p>
1080
1081 <p><strong>quest_item</strong> | <code>bool</code> | If true, this item is a quest item and can not be dropped, stashed, or sold.</p>
1082
1083 <hr />
1084
1085 <h4>ItemManager: Types</h4>
1086
1087 <p>Definition of a item types, items/types.txt&hellip;</p>
1088
1089 <p><strong>type.id</strong> | <code>string</code> | Item type identifier.</p>
1090
1091 <p><strong>type.name</strong> | <code>string</code> | Item type name.</p>
1092
1093 <hr />
1094
1095 <h4>ItemManager: Qualities</h4>
1096
1097 <p>Definition of a item qualities, items/types.txt&hellip;</p>
1098
1099 <p><strong>quality.id</strong> | <code>string</code> | Item quality identifier.</p>
1100
1101 <p><strong>quality.name</strong> | <code>string</code> | Item quality name.</p>
1102
1103 <p><strong>quality.color</strong> | <code>color</code> | Item quality color.</p>
1104
1105 <p><strong>quality.overlay_icon</strong> | <code>icon_id</code> | The icon to be used as an overlay.</p>
1106
1107 <hr />
1108
1109 <h4>ItemManager: Sets</h4>
1110
1111 <p>Definition of a item sets, items/sets.txt&hellip;</p>
1112
1113 <p><strong>id</strong> | <code>int</code> | A uniq id for the item set.</p>
1114
1115 <p><strong>name</strong> | <code>string</code> | Name of the item set.</p>
1116
1117 <p><strong>items</strong> | <code>list(item_id)</code> | List of item id&rsquo;s that is part of the set.</p>
1118
1119 <p><strong>color</strong> | <code>color</code> | A specific of color for the set.</p>
1120
1121 <p><strong>bonus</strong> | <code>repeatable(int, string, int) : Required set item count, Stat name, Value</code> | Bonus to append to items in the set.</p>
1122
1123 <p><strong>bonus_power_level</strong> | <code>repeatable(int, power_id, int) : Required set item count, Base power, Bonus levels</code> | Grants bonus levels to a given base power.</p>
1124
1125 <hr />
1126
1127 <h4>Map</h4>
1128
1129 <p>Description of maps/</p>
1130
1131 <p><strong>title</strong> | <code>string</code> | Title of map</p>
1132
1133 <p><strong>width</strong> | <code>int</code> | Width of map</p>
1134
1135 <p><strong>height</strong> | <code>int</code> | Height of map</p>
1136
1137 <p><strong>tileset</strong> | <code>filename</code> | Filename of a tileset definition to use for map</p>
1138
1139 <p><strong>music</strong> | <code>filename</code> | Filename of background music to use for map</p>
1140
1141 <p><strong>hero_pos</strong> | <code>point</code> | The player will spawn in this location if no point was previously given.</p>
1142
1143 <p><strong>parallax_layers</strong> | <code>filename</code> | Filename of a parallax layers definition.</p>
1144
1145 <p><strong>background_color</strong> | <code>color, int : Color, alpha</code> | Background color for the map.</p>
1146
1147 <p><strong>tilewidth</strong> | <code>int</code> | Inherited from Tiled map file. Unused by engine.</p>
1148
1149 <p><strong>tileheight</strong> | <code>int</code> | Inherited from Tiled map file. Unused by engine.</p>
1150
1151 <p><strong>layer.type</strong> | <code>string</code> | Map layer type.</p>
1152
1153 <p><strong>layer.format</strong> | <code>string</code> | Format for map layer, must be &lsquo;dec&rsquo;</p>
1154
1155 <p><strong>layer.data</strong> | <code>raw</code> | Raw map layer data</p>
1156
1157 <p><strong>enemygroup.type</strong> | <code>string</code> | (IGNORED BY ENGINE) The &ldquo;type&rdquo; field, as used by Tiled and other mapping tools.</p>
1158
1159 <p><strong>enemygroup.category</strong> | <code>predefined_string</code> | The category of enemies that will spawn in this group.</p>
1160
1161 <p><strong>enemygroup.level</strong> | <code>int, int : Min, Max</code> | Defines the level range of enemies in group. If only one number is given, it&rsquo;s the exact level.</p>
1162
1163 <p><strong>enemygroup.location</strong> | <code>rectangle</code> | Location area for enemygroup</p>
1164
1165 <p><strong>enemygroup.number</strong> | <code>int, int : Min, Max</code> | Defines the range of enemies in group. If only one number is given, it&rsquo;s the exact amount.</p>
1166
1167 <p><strong>enemygroup.chance</strong> | <code>int</code> | Percentage of chance</p>
1168
1169 <p><strong>enemygroup.direction</strong> | <code>direction</code> | Direction that enemies will initially face.</p>
1170
1171 <p><strong>enemygroup.waypoints</strong> | <code>list(point)</code> | Enemy waypoints; single enemy only; negates wander_radius</p>
1172
1173 <p><strong>enemygroup.wander_radius</strong> | <code>int</code> | The radius (in tiles) that an enemy will wander around randomly; negates waypoints</p>
1174
1175 <p><strong>enemygroup.requires_status</strong> | <code>list(string)</code> | Status required for loading enemies</p>
1176
1177 <p><strong>enemygroup.requires_not_status</strong> | <code>list(string)</code> | Status required to be missing for loading enemies</p>
1178
1179 <p><strong>enemygroup.invincible_requires_status</strong> | <code>list(string)</code> | Enemies in this group are invincible to hero attacks when these statuses are set.</p>
1180
1181 <p><strong>enemygroup.invincible_requires_not_status</strong> | <code>list(string)</code> | Enemies in this group are invincible to hero attacks when these statuses are not set.</p>
1182
1183 <p><strong>npc.type</strong> | <code>string</code> | (IGNORED BY ENGINE) The &ldquo;type&rdquo; field, as used by Tiled and other mapping tools.</p>
1184
1185 <p><strong>npc.filename</strong> | <code>string</code> | Filename of an NPC definition.</p>
1186
1187 <p><strong>npc.requires_status</strong> | <code>list(string)</code> | Status required for NPC load. There can be multiple states, separated by comma</p>
1188
1189 <p><strong>npc.requires_not_status</strong> | <code>list(string)</code> | Status required to be missing for NPC load. There can be multiple states, separated by comma</p>
1190
1191 <p><strong>npc.location</strong> | <code>point</code> | Location of NPC</p>
1192
1193 <hr />
1194
1195 <h4>MapParallax</h4>
1196
1197 <p>Description of maps/parallax/</p>
1198
1199 <p><strong>layer.image</strong> | <code>filename</code> | Image file to use as a scrolling background.</p>
1200
1201 <p><strong>layer.speed</strong> | <code>float</code> | Speed at which the background will move relative to the camera.</p>
1202
1203 <p><strong>layer.fixed_speed</strong> | <code>float, float : X speed, Y speed</code> | Speed at which the background will move independent of the camera movement.</p>
1204
1205 <p><strong>layer.map_layer</strong> | <code>string</code> | The tile map layer that this parallax layer will be rendered on top of.</p>
1206
1207 <hr />
1208
1209 <h4>MenuActionBar</h4>
1210
1211 <p>Description of menus/actionbar.txt</p>
1212
1213 <p><strong>slot</strong> | <code>repeatable(int, int, int, bool) : Index, X, Y, Locked</code> | Index (max 10) and position for power slot. If a slot is locked, its Power can&rsquo;t be changed by the player.</p>
1214
1215 <p><strong>slot_M1</strong> | <code>point, bool : Position, Locked</code> | Position for the primary action slot. If the slot is locked, its Power can&rsquo;t be changed by the player.</p>
1216
1217 <p><strong>slot_M2</strong> | <code>point, bool : Position Locked</code> | Position for the secondary action slot. If the slot is locked, its Power can&rsquo;t be changed by the player.</p>
1218
1219 <p><strong>char_menu</strong> | <code>point</code> | Position for the Character menu button.</p>
1220
1221 <p><strong>inv_menu</strong> | <code>point</code> | Position for the Inventory menu button.</p>
1222
1223 <p><strong>powers_menu</strong> | <code>point</code> | Position for the Powers menu button.</p>
1224
1225 <p><strong>log_menu</strong> | <code>point</code> | Position for the Log menu button.</p>
1226
1227 <p><strong>loot_tip_toggle</strong> | <code>point</code> | Position for the button used to toggle loot tooltip visibility.</p>
1228
1229 <p><strong>minimap_mode_toggle</strong> | <code>point</code> | Position for the button used to toggle the mini-map mode.</p>
1230
1231 <p><strong>statbar_label_toggle</strong> | <code>point</code> | Position for the button used to toggle always showing the statbar labels.</p>
1232
1233 <p><strong>combat_text_toggle</strong> | <code>point</code> | Position for the button used to toggle the display of combat text.</p>
1234
1235 <hr />
1236
1237 <h4>MenuActiveEffects</h4>
1238
1239 <p>Description of menus/activeeffects.txt</p>
1240
1241 <p><strong>vertical</strong> | <code>bool</code> | True is vertical orientation; False is horizontal orientation.</p>
1242
1243 <hr />
1244
1245 <h4>MenuBook</h4>
1246
1247 <p>Description of books in books/</p>
1227 <p><strong>scrollpane_padding</strong> | <code>int, int : Horizontal padding, Vertical padding</code> | Pixel padding for each item listed in a tab&rsquo;s scroll box.</p>
1228
1229 <p><strong>scrollpane_separator_color</strong> | <code>color</code> | Color of the separator line in between scroll box items.</p>
1230
1231 <p><strong>keybinds_bg_color</strong> | <code>color, int : Color, Alpha</code> | Background color and alpha for the keybindings scrollbox.</p>
1232
1233 <hr />
1234
1235 <h4>Menu</h4>
1236
1237 <p>Description of menus in menus/</p>
1238
1239 <p><strong>pos</strong> | <code>rectangle</code> | Menu position and dimensions</p>
1240
1241 <p><strong>align</strong> | <code>alignment</code> | Position relative to screen edges</p>
1242
1243 <p><strong>soundfx_open</strong> | <code>filename</code> | Filename of a sound to play when opening this menu.</p>
1244
1245 <p><strong>soundfx_close</strong> | <code>filename</code> | Filename of a sound to play when closing this menu.</p>
1246
1247 <hr />
1248
1249 <h4>MenuDevConsole</h4>
1250
1251 <p>Description of menus/devconsole.txt</p>
12481252
12491253 <p><strong>close</strong> | <code>point</code> | Position of the close button.</p>
12501254
1251 <p><strong>background</strong> | <code>filename</code> | Filename for the background image.</p>
1252
1253 <p><strong>image.image_pos</strong> | <code>point</code> | Position of the image.</p>
1254
1255 <p><strong>image.image</strong> | <code>filename</code> | Filename of the image.</p>
1256
1257 <p><strong>image_icon</strong> | <code>icon_id</code> | Use an icon as the image instead of a file.</p>
1258
1259 <p><strong>image.requires_status</strong> | <code>list(string)</code> | Image requires these campaign statuses in order to be visible.</p>
1260
1261 <p><strong>image.requires_not_status</strong> | <code>list(string)</code> | Image must not have any of these campaign statuses in order to be visible.</p>
1262
1263 <p><strong>text.text_pos</strong> | <code>int, int, int, ["left", "center", "right"] : X, Y, Width, Text justify</code> | Position of the text.</p>
1264
1265 <p><strong>text.text_font</strong> | <code>color, string : Font color, Font style</code> | Font color and style.</p>
1266
1267 <p><strong>text.shadow</strong> | <code>bool</code> | If true, the text will have a black shadow like the text labels in various menus.</p>
1268
1269 <p><strong>text.text</strong> | <code>string</code> | The text to be displayed.</p>
1270
1271 <p><strong>text.requires_status</strong> | <code>list(string)</code> | Text requires these campaign statuses in order to be visible.</p>
1272
1273 <p><strong>text.requires_not_status</strong> | <code>list(string)</code> | Text must not have any of these campaign statuses in order to be visible.</p>
1274
1275 <p><strong>button.button_pos</strong> | <code>point</code> | Position of the button.</p>
1276
1277 <p><strong>button.button_image</strong> | <code>filename</code> | Image file to use for this button. Default is the normal menu button.</p>
1278
1279 <p><strong>button.text</strong> | <code>string</code> | Optional text label for the button.</p>
1280
1281 <p><strong>book.${EVENT_COMPONENT}</strong> | <code>Event components to execute when the button is clicked. See the definitions in EventManager for possible attributes.</code> |</p>
1282
1283 <p><strong>event_open.${EVENT_COMPONENT}</strong> | <code>Event components to execute when the book is opened. See the definitions in EventManager for possible attributes.</code> |</p>
1284
1285 <p><strong>event_close.${EVENT_COMPONENT}</strong> | <code>Event components to execute when the book is closed. See the definitions in EventManager for possible attributes.</code> |</p>
1286
1287 <hr />
1288
1289 <h4>MenuCharacter</h4>
1290
1291 <p>Description of menus/character.txt</p>
1255 <p><strong>label_title</strong> | <code>label</code> | Position of the &ldquo;Developer Console&rdquo; label.</p>
1256
1257 <p><strong>confirm</strong> | <code>point</code> | Position of the &ldquo;Execute&rdquo; button.</p>
1258
1259 <p><strong>input</strong> | <code>point</code> | Position of the command entry widget.</p>
1260
1261 <p><strong>history</strong> | <code>rectangle</code> | Position and dimensions of the command history.</p>
1262
1263 <hr />
1264
1265 <h4>MenuEnemy</h4>
1266
1267 <p>Description of menus/enemy.txt</p>
1268
1269 <p><strong>bar_pos</strong> | <code>rectangle</code> | Position and dimensions of the health bar.</p>
1270
1271 <p><strong>text_pos</strong> | <code>label</code> | Position of the text displaying the enemy&rsquo;s name and level.</p>
1272
1273 <p><strong>bar_fill_offset</strong> | <code>point</code> | Offset of the bar&rsquo;s fill graphics relative to the bar_pos X/Y.</p>
1274
1275 <p><strong>bar_fill_size</strong> | <code>int, int : Width, Height</code> | Size of the bar&rsquo;s fill graphics. If not defined, the width/height of bar_pos is used.</p>
1276
1277 <hr />
1278
1279 <h4>MenuGameOver</h4>
1280
1281 <p>Description of menus/game_over.txt</p>
1282
1283 <p><strong>label_title</strong> | <code>label</code> | Position of the &ldquo;Game Over&rdquo; text.</p>
1284
1285 <p><strong>button_continue</strong> | <code>point</code> | Position of the &ldquo;Continue&rdquo; button.</p>
1286
1287 <p><strong>button_exit</strong> | <code>point</code> | Position of the &ldquo;Exit&rdquo; button.</p>
1288
1289 <hr />
1290
1291 <h4>MenuHUDLog</h4>
1292
1293 <p>Description of menus/hudlog.txt</p>
1294
1295 <p><strong>enable_overlay</strong> | <code>bool</code> | If true, shows an overlay of the last message on top of other menus.</p>
1296
1297 <p><strong>start_at_bottom</strong> | <code>bool</code> | If true, messages start at the bottom and get pushed up. If false, messages start at the top and get pushed down.</p>
1298
1299 <p><strong>overlay_at_bottom</strong> | <code>bool</code> | If true, the overlay message will be at the bottom of the HUD log area. If false, it will be at the top.</p>
1300
1301 <hr />
1302
1303 <h4>MenuInventory</h4>
1304
1305 <p>Description of menus/inventory.txt</p>
12921306
12931307 <p><strong>close</strong> | <code>point</code> | Position of the close button.</p>
12941308
1295 <p><strong>label_title</strong> | <code>label</code> | Position of the &ldquo;Character&rdquo; text.</p>
1296
1297 <p><strong>upgrade_primary</strong> | <code>predefined_string, point : Primary stat name, Button position</code> | Position of the button used to add a stat point to this primary stat.</p>
1298
1299 <p><strong>statlist</strong> | <code>point</code> | Position of the scrollbox containing non-primary stats.</p>
1300
1301 <p><strong>statlist_rows</strong> | <code>int</code> | The height of the statlist in rows.</p>
1302
1303 <p><strong>statlist_scrollbar_offset</strong> | <code>int</code> | Right margin in pixels for the statlist&rsquo;s scrollbar.</p>
1304
1305 <p><strong>label_name</strong> | <code>label</code> | Position of the &ldquo;Name&rdquo; text.</p>
1306
1307 <p><strong>label_level</strong> | <code>label</code> | Position of the &ldquo;Level&rdquo; text.</p>
1308
1309 <p><strong>label_primary</strong> | <code>predefined_string, label : Primary stat name, Text positioning</code> | Position of the text label for this primary stat.</p>
1310
1311 <p><strong>name</strong> | <code>rectangle</code> | Position of the player&rsquo;s name and dimensions of the tooltip hotspot.</p>
1312
1313 <p><strong>level</strong> | <code>rectangle</code> | Position of the player&rsquo;s level and dimensions of the tooltip hotspot.</p>
1314
1315 <p><strong>primary</strong> | <code>predefined_string, rectangle : Primary stat name, Hotspot position</code> | Position of this primary stat value display and dimensions of its tooltip hotspot.</p>
1316
1317 <p><strong>unspent</strong> | <code>label</code> | Position of the label showing the number of unspent stat points.</p>
1318
1319 <p><strong>show_resists</strong> | <code>bool</code> | Hide the elemental &ldquo;Resistance&rdquo; stats in the statlist if set to false.</p>
1320
1321 <p><strong>show_stat</strong> | <code>predefined_string, bool : Stat name / Damage type, Visible</code> | Hide the matching stat or damage type min/max in the statlist if set to false.</p>
1322
1323 <p><strong>name_max_width</strong> | <code>int</code> | The maxiumum width, in pixels, that the character name can occupy until it is abbreviated.</p>
1324
1325 <hr />
1326
1327 <h4>Menu</h4>
1328
1329 <p>Description of menus in menus/</p>
1330
1331 <p><strong>pos</strong> | <code>rectangle</code> | Menu position and dimensions</p>
1332
1333 <p><strong>align</strong> | <code>alignment</code> | Position relative to screen edges</p>
1334
1335 <p><strong>soundfx_open</strong> | <code>filename</code> | Filename of a sound to play when opening this menu.</p>
1336
1337 <p><strong>soundfx_close</strong> | <code>filename</code> | Filename of a sound to play when closing this menu.</p>
1338
1339 <hr />
1340
1341 <h4>MenuDevConsole</h4>
1342
1343 <p>Description of menus/devconsole.txt</p>
1309 <p><strong>equipment_slot</strong> | <code>repeatable(int, int, string) : X, Y, Slot Type</code> | Position and item type of an equipment slot.</p>
1310
1311 <p><strong>carried_area</strong> | <code>point</code> | Position of the first normal inventory slot.</p>
1312
1313 <p><strong>carried_cols</strong> | <code>int</code> | The number of columns for the normal inventory.</p>
1314
1315 <p><strong>carried_rows</strong> | <code>int</code> | The number of rows for the normal inventory.</p>
1316
1317 <p><strong>label_title</strong> | <code>label</code> | Position of the &ldquo;Inventory&rdquo; label.</p>
1318
1319 <p><strong>currency</strong> | <code>label</code> | Position of the label that displays the total currency being carried.</p>
1320
1321 <p><strong>help</strong> | <code>rectangle</code> | A mouse-over area that displays some help text for inventory shortcuts.</p>
1322
1323 <hr />
1324
1325 <h4>MenuLog</h4>
1326
1327 <p>Description of menus/log.txt</p>
1328
1329 <p><strong>label_title</strong> | <code>label</code> | Position of the &ldquo;Log&rdquo; text.</p>
13441330
13451331 <p><strong>close</strong> | <code>point</code> | Position of the close button.</p>
13461332
1347 <p><strong>label_title</strong> | <code>label</code> | Position of the &ldquo;Developer Console&rdquo; label.</p>
1348
1349 <p><strong>confirm</strong> | <code>point</code> | Position of the &ldquo;Execute&rdquo; button.</p>
1350
1351 <p><strong>input</strong> | <code>point</code> | Position of the command entry widget.</p>
1352
1353 <p><strong>history</strong> | <code>rectangle</code> | Position and dimensions of the command history.</p>
1354
1355 <hr />
1356
1357 <h4>MenuEnemy</h4>
1358
1359 <p>Description of menus/enemy.txt</p>
1360
1361 <p><strong>bar_pos</strong> | <code>rectangle</code> | Position and dimensions of the health bar.</p>
1362
1363 <p><strong>text_pos</strong> | <code>label</code> | Position of the text displaying the enemy&rsquo;s name and level.</p>
1364
1365 <hr />
1366
1367 <h4>MenuExit</h4>
1368
1369 <p>Description of menus/exit.txt</p>
1370
1371 <p><strong>title</strong> | <code>label</code> | Position of the &ldquo;Paused&rdquo; text.</p>
1372
1373 <p><strong>exit</strong> | <code>point</code> | Position of the &ldquo;Save and Exit&rdquo; button.</p>
1374
1375 <p><strong>continue</strong> | <code>point</code> | Position of the &ldquo;Continue&rdquo; button.</p>
1376
1377 <p><strong>music_volume</strong> | <code>int, int, int, int : Label X, Label Y, Widget X, Widget Y</code> | Position of the &ldquo;Music Volume&rdquo; slider relative to the frame.</p>
1378
1379 <p><strong>sound_volume</strong> | <code>int, int, int, int : Label X, Label Y, Widget X, Widget Y</code> | Position of the &ldquo;Sound Volume&rdquo; slider relative to the frame.</p>
1380
1381 <p><strong>enable_overlay</strong> | <code>bool</code> | If true, shows an overlay of the last message on top of other menus.</p>
1382
1383 <p><strong>start_at_bottom</strong> | <code>bool</code> | If true, messages start at the bottom and get pushed up. If false, messages start at the top and get pushed down.</p>
1384
1385 <p><strong>overlay_at_bottom</strong> | <code>bool</code> | If true, the overlay message will be at the bottom of the HUD log area. If false, it will be at the top.</p>
1386
1387 <hr />
1388
1389 <h4>MenuInventory</h4>
1390
1391 <p>Description of menus/inventory.txt</p>
1333 <p><strong>tab_area</strong> | <code>rectangle</code> | The position of the row of tabs, followed by the dimensions of the log text area.</p>
1334
1335 <hr />
1336
1337 <h4>MenuMiniMap</h4>
1338
1339 <p>Description of menus/minimap.txt</p>
1340
1341 <p><strong>map_pos</strong> | <code>rectangle</code> | Position and dimensions of the map.</p>
1342
1343 <p><strong>text_pos</strong> | <code>label</code> | Position of the text label with the map name.</p>
1344
1345 <p><strong>background</strong> | <code>filename</code> | Optional background image.</p>
1346
1347 <p><strong>color_wall</strong> | <code>color, int : Color, Alpha</code> | Color used for walls.</p>
1348
1349 <p><strong>color_obst</strong> | <code>color, int : Color, Alpha</code> | Color used for small obstacles and pits.</p>
1350
1351 <p><strong>color_hero</strong> | <code>color, int : Color, Alpha</code> | Color used for the player character.</p>
1352
1353 <p><strong>color_enemy</strong> | <code>color, int : Color, Alpha</code> | Color used for enemies engaged in combat.</p>
1354
1355 <p><strong>color_ally</strong> | <code>color, int : Color, Alpha</code> | Color used for allies.</p>
1356
1357 <p><strong>color_npc</strong> | <code>color, int : Color, Alpha</code> | Color used for NPCs.</p>
1358
1359 <p><strong>color_teleport</strong> | <code>color, int : Color, Alpha</code> | Color used for intermap teleports.</p>
1360
1361 <p><strong>button_config</strong> | <code>point</code> | Position of the &lsquo;Configuration&rsquo; button. The button will be hidden if not defined.</p>
1362
1363 <hr />
1364
1365 <h4>MenuMovementType</h4>
1366
1367 <p>Description of menus/movement_type.txt</p>
1368
1369 <p><strong>label_title</strong> | <code>label</code> | Position of the &ldquo;Select a Movement Type&rdquo; text.</p>
1370
1371 <p><strong>label_config_hint</strong> | <code>label</code> | Position of the &ldquo;Can be changed later in the Configuration menu&rdquo; text.</p>
1372
1373 <p><strong>button_keyboard</strong> | <code>point</code> | Position of the &ldquo;Keyboard&rdquo; button.</p>
1374
1375 <p><strong>button_mouse</strong> | <code>point</code> | Position of the &ldquo;Mouse&rdquo; button.</p>
1376
1377 <p><strong>button_joystick</strong> | <code>point</code> | Position of the &ldquo;Joystick&rdquo; button.</p>
1378
1379 <p><strong>icon_keyboard</strong> | <code>point</code> | Position of the keyboard icon.</p>
1380
1381 <p><strong>icon_mouse</strong> | <code>point</code> | Position of the mouse icon.</p>
1382
1383 <p><strong>icon_joystick</strong> | <code>point</code> | Position of the joystick icon.</p>
1384
1385 <hr />
1386
1387 <h4>MenuNumPicker</h4>
1388
1389 <p>Description of menus/num_picker.txt</p>
1390
1391 <p><strong>label_title</strong> | <code>label</code> | Position of the &ldquo;Enter amount &rdquo; text.</p>
1392
1393 <p><strong>confirm</strong> | <code>point</code> | Position of the &ldquo;OK&rdquo; button.</p>
1394
1395 <p><strong>increase</strong> | <code>point</code> | Position of the button used to increase the value.</p>
1396
1397 <p><strong>decrease</strong> | <code>point</code> | Position of the button used to decrease the value.</p>
1398
1399 <p><strong>close</strong> | <code>point</code> | Position of the button used to close the number picker window.</p>
1400
1401 <p><strong>input</strong> | <code>point</code> | Position of the text input box.</p>
1402
1403 <hr />
1404
1405 <h4>MenuPowers: Menu layout</h4>
1406
1407 <p>Description of menus/powers.txt</p>
1408
1409 <p><strong>label_title</strong> | <code>label</code> | Position of the &ldquo;Powers&rdquo; text.</p>
1410
1411 <p><strong>unspent_points</strong> | <code>label</code> | Position of the text that displays the amount of unused power points.</p>
13921412
13931413 <p><strong>close</strong> | <code>point</code> | Position of the close button.</p>
13941414
1395 <p><strong>auto_equip</strong> | <code>point</code> | Position of the auto-equip toggle switch.</p>
1396
1397 <p><strong>equipment_slot</strong> | <code>repeatable(int, int, string) : X, Y, Slot Type</code> | Position and item type of an equipment slot.</p>
1398
1399 <p><strong>carried_area</strong> | <code>point</code> | Position of the first normal inventory slot.</p>
1400
1401 <p><strong>carried_cols</strong> | <code>int</code> | The number of columns for the normal inventory.</p>
1402
1403 <p><strong>carried_rows</strong> | <code>int</code> | The number of rows for the normal inventory.</p>
1404
1405 <p><strong>label_title</strong> | <code>label</code> | Position of the &ldquo;Inventory&rdquo; label.</p>
1406
1407 <p><strong>currency</strong> | <code>label</code> | Position of the label that displays the total currency being carried.</p>
1408
1409 <p><strong>help</strong> | <code>rectangle</code> | A mouse-over area that displays some help text for inventory shortcuts.</p>
1410
1411 <hr />
1412
1413 <h4>MenuLog</h4>
1414
1415 <p>Description of menus/log.txt</p>
1416
1417 <p><strong>label_title</strong> | <code>label</code> | Position of the &ldquo;Log&rdquo; text.</p>
1415 <p><strong>tab_area</strong> | <code>rectangle</code> | Position and dimensions of the tree pages.</p>
1416
1417 <hr />
1418
1419 <h4>MenuPowers: Power tree layout</h4>
1420
1421 <p>Description of powers/trees/</p>
1422
1423 <p><strong>background</strong> | <code>filename</code> | Filename of the default background image</p>
1424
1425 <p><strong>tab.title</strong> | <code>string</code> | The name of this power tree tab</p>
1426
1427 <p><strong>tab.background</strong> | <code>filename</code> | Filename of the background image for this tab&rsquo;s power tree</p>
1428
1429 <p><strong>power.id</strong> | <code>int</code> | A power id from powers/powers.txt for this slot.</p>
1430
1431 <p><strong>power.tab</strong> | <code>int</code> | Tab index to place this power on, starting from 0.</p>
1432
1433 <p><strong>power.position</strong> | <code>point</code> | Position of this power icon; relative to MenuPowers &ldquo;pos&rdquo;.</p>
1434
1435 <p><strong>power.requires_point</strong> | <code>bool</code> | Power requires a power point to unlock.</p>
1436
1437 <p><strong>power.requires_primary</strong> | <code>predefined_string, int : Primary stat name, Required value</code> | Power requires this primary stat to be at least the specificed value.</p>
1438
1439 <p><strong>power.requires_level</strong> | <code>int</code> | Power requires at least this level for the hero.</p>
1440
1441 <p><strong>power.requires_power</strong> | <code>power_id</code> | Power requires another power id.</p>
1442
1443 <p><strong>power.requires_status</strong> | <code>repeatable(string)</code> | Power requires this campaign status.</p>
1444
1445 <p><strong>power.requires_not_status</strong> | <code>repeatable(string)</code> | Power requires not having this campaign status.</p>
1446
1447 <p><strong>power.visible_requires_status</strong> | <code>repeatable(string)</code> | (Deprecated as of v1.11.75) Hide the power if we don&rsquo;t have this campaign status.</p>
1448
1449 <p><strong>power.visible_requires_not_status</strong> | <code>repeatable(string)</code> | (Deprecated as of v1.11.75) Hide the power if we have this campaign status.</p>
1450
1451 <p><strong>power.upgrades</strong> | <code>list(power_id)</code> | A list of upgrade power ids that this power slot can upgrade to. Each of these powers should have a matching upgrade section.</p>
1452
1453 <p><strong>power.visible</strong> | <code>bool</code> | Controls whether or not a power is visible or hidden regardless of unlocked state. Defaults to true.</p>
1454
1455 <p><strong>power.visible_when_locked</strong> | <code>bool</code> | Controls whether or not a power is visible or hidden when the power is locked. Defaults to true.</p>
1456
1457 <p><strong>upgrade.id</strong> | <code>int</code> | A power id from powers/powers.txt for this upgrade.</p>
1458
1459 <p><strong>upgrade.requires_primary</strong> | <code>predefined_string, int : Primary stat name, Required value</code> | Upgrade requires this primary stat to be at least the specificed value.</p>
1460
1461 <p><strong>upgrade.requires_point</strong> | <code>bool</code> | Upgrade requires a power point to unlock.</p>
1462
1463 <p><strong>upgrade.requires_level</strong> | <code>int</code> | Upgrade requires at least this level for the hero.</p>
1464
1465 <p><strong>upgrade.requires_power</strong> | <code>int</code> | Upgrade requires another power id.</p>
1466
1467 <p><strong>upgrade.requires_status</strong> | <code>repeatable(string)</code> | Upgrade requires this campaign status.</p>
1468
1469 <p><strong>upgrade.requires_not_status</strong> | <code>repeatable(string)</code> | Upgrade requires not having this campaign status.</p>
1470
1471 <p><strong>upgrade.visible_requires_status</strong> | <code>repeatable(string)</code> | (Deprecated as of v1.11.75) Hide the upgrade if we don&rsquo;t have this campaign status.</p>
1472
1473 <p><strong>upgrade.visible_requires_not_status</strong> | <code>repeatable(string)</code> | (Deprecated as of v1.11.75) Hide the upgrade if we have this campaign status.</p>
1474
1475 <p><strong>upgrade.visible</strong> | <code>bool</code> | Controls whether or not a power is visible or hidden regardless of unlocked state. Defaults to true.</p>
1476
1477 <p><strong>upgrade.visible_when_locked</strong> | <code>bool</code> | Controls whether or not a power is visible or hidden when the power is locked. Defaults to true.</p>
1478
1479 <hr />
1480
1481 <h4>MenuStash</h4>
1482
1483 <p>Description of menus/stash.txt</p>
14181484
14191485 <p><strong>close</strong> | <code>point</code> | Position of the close button.</p>
14201486
1421 <p><strong>tab_area</strong> | <code>rectangle</code> | The position of the row of tabs, followed by the dimensions of the log text area.</p>
1422
1423 <hr />
1424
1425 <h4>MenuMiniMap</h4>
1426
1427 <p>Description of menus/minimap.txt</p>
1428
1429 <p><strong>map_pos</strong> | <code>rectangle</code> | Position and dimensions of the map.</p>
1430
1431 <p><strong>text_pos</strong> | <code>label</code> | Position of the text label with the map name.</p>
1432
1433 <p><strong>background</strong> | <code>filename</code> | Optional background image.</p>
1434
1435 <hr />
1436
1437 <h4>MenuNumPicker</h4>
1438
1439 <p>Description of menus/num_picker.txt</p>
1440
1441 <p><strong>label_title</strong> | <code>label</code> | Position of the &ldquo;Enter amount &rdquo; text.</p>
1442
1443 <p><strong>confirm</strong> | <code>point</code> | Position of the &ldquo;OK&rdquo; button.</p>
1444
1445 <p><strong>increase</strong> | <code>point</code> | Position of the button used to increase the value.</p>
1446
1447 <p><strong>decrease</strong> | <code>point</code> | Position of the button used to decrease the value.</p>
1448
1449 <p><strong>close</strong> | <code>point</code> | Position of the button used to close the number picker window.</p>
1450
1451 <p><strong>input</strong> | <code>point</code> | Position of the text input box.</p>
1452
1453 <hr />
1454
1455 <h4>MenuPowers: Menu layout</h4>
1456
1457 <p>Description of menus/powers.txt</p>
1458
1459 <p><strong>label_title</strong> | <code>label</code> | Position of the &ldquo;Powers&rdquo; text.</p>
1460
1461 <p><strong>unspent_points</strong> | <code>label</code> | Position of the text that displays the amount of unused power points.</p>
1487 <p><strong>slots_area</strong> | <code>point</code> | Position of the top-left slot.</p>
1488
1489 <p><strong>stash_cols</strong> | <code>int</code> | The number of columns for the grid of slots.</p>
1490
1491 <p><strong>stash_rows</strong> | <code>int</code> | The number of rows for the grid of slots.</p>
1492
1493 <p><strong>label_title</strong> | <code>label</code> | Position of the &ldquo;Stash&rdquo; label.</p>
1494
1495 <p><strong>currency</strong> | <code>label</code> | Position of the label displaying the amount of currency stored in the stash.</p>
1496
1497 <p><strong>tab.name</strong> | <code>["Private", "Shared", string]</code> | The displayed name of this tab. It is also used to determine the filename of the stash file that the engine will create. &lsquo;Private&rsquo; and &lsquo;Shared&rsquo; will use their legacy filenames for compatibility.</p>
1498
1499 <p><strong>tab.is_private</strong> | <code>bool</code> | If true, this stash will not be shared across other saves.</p>
1500
1501 <hr />
1502
1503 <h4>MenuStatBar</h4>
1504
1505 <p>Description of menus/hp.txt, menus/mp.txt, menus/xp.txt</p>
1506
1507 <p><strong>bar_pos</strong> | <code>rectangle</code> | Position and dimensions of the bar graphics.</p>
1508
1509 <p><strong>text_pos</strong> | <code>label</code> | Position of the text displaying the current value of the relevant stat.</p>
1510
1511 <p><strong>orientation</strong> | <code>bool</code> | True is vertical orientation; false is horizontal.</p>
1512
1513 <p><strong>bar_gfx</strong> | <code>filename</code> | Filename of the image to use for the &ldquo;fill&rdquo; of the bar.</p>
1514
1515 <p><strong>bar_gfx_background</strong> | <code>filename</code> | Filename of the image to use for the base of the bar.</p>
1516
1517 <p><strong>hide_timeout</strong> | <code>duration</code> | Hide HP and MP bar if full mana or health, after given amount of seconds; Hide XP bar if no changes in XP points for given amount of seconds. 0 disable hiding.</p>
1518
1519 <p><strong>bar_fill_offset</strong> | <code>point</code> | Offset of the bar&rsquo;s fill graphics relative to the bar_pos X/Y.</p>
1520
1521 <p><strong>bar_fill_size</strong> | <code>int, int : Width, Height</code> | Size of the bar&rsquo;s fill graphics. If not defined, the width/height of bar_pos is used.</p>
1522
1523 <hr />
1524
1525 <h4>MenuTalker</h4>
1526
1527 <p>Description of menus/talker.txt</p>
14621528
14631529 <p><strong>close</strong> | <code>point</code> | Position of the close button.</p>
14641530
1465 <p><strong>tab_area</strong> | <code>rectangle</code> | Position and dimensions of the tree pages.</p>
1466
1467 <hr />
1468
1469 <h4>MenuPowers: Power tree layout</h4>
1470
1471 <p>Description of powers/trees/</p>
1472
1473 <p><strong>background</strong> | <code>filename</code> | Filename of the default background image</p>
1474
1475 <p><strong>tab.title</strong> | <code>string</code> | The name of this power tree tab</p>
1476
1477 <p><strong>tab.background</strong> | <code>filename</code> | Filename of the background image for this tab&rsquo;s power tree</p>
1478
1479 <p><strong>power.id</strong> | <code>int</code> | A power id from powers/powers.txt for this slot.</p>
1480
1481 <p><strong>power.tab</strong> | <code>int</code> | Tab index to place this power on, starting from 0.</p>
1482
1483 <p><strong>power.position</strong> | <code>point</code> | Position of this power icon; relative to MenuPowers &ldquo;pos&rdquo;.</p>
1484
1485 <p><strong>power.requires_primary</strong> | <code>predefined_string, int : Primary stat name, Required value</code> | Power requires this primary stat to be at least the specificed value.</p>
1486
1487 <p><strong>power.requires_point</strong> | <code>bool</code> | Power requires a power point to unlock.</p>
1488
1489 <p><strong>power.requires_level</strong> | <code>int</code> | Power requires at least this level for the hero.</p>
1490
1491 <p><strong>power.requires_power</strong> | <code>power_id</code> | Power requires another power id.</p>
1492
1493 <p><strong>power.visible_requires_status</strong> | <code>repeatable(string)</code> | Hide the power if we don&rsquo;t have this campaign status.</p>
1494
1495 <p><strong>power.visible_requires_not_status</strong> | <code>repeatable(string)</code> | Hide the power if we have this campaign status.</p>
1496
1497 <p><strong>power.upgrades</strong> | <code>list(power_id)</code> | A list of upgrade power ids that this power slot can upgrade to. Each of these powers should have a matching upgrade section.</p>
1498
1499 <p><strong>upgrade.id</strong> | <code>int</code> | A power id from powers/powers.txt for this upgrade.</p>
1500
1501 <p><strong>upgrade.requires_primary</strong> | <code>predefined_string, int : Primary stat name, Required value</code> | Upgrade requires this primary stat to be at least the specificed value.</p>
1502
1503 <p><strong>upgrade.requires_point</strong> | <code>bool</code> | Upgrade requires a power point to unlock.</p>
1504
1505 <p><strong>upgrade.requires_level</strong> | <code>int</code> | Upgrade requires at least this level for the hero.</p>
1506
1507 <p><strong>upgrade.requires_power</strong> | <code>int</code> | Upgrade requires another power id.</p>
1508
1509 <p><strong>upgrade.visible_requires_status</strong> | <code>repeatable(string)</code> | Hide the upgrade if we don&rsquo;t have this campaign status.</p>
1510
1511 <p><strong>upgrade.visible_requires_not_status</strong> | <code>repeatable(string)</code> | Hide the upgrade if we have this campaign status.</p>
1512
1513 <hr />
1514
1515 <h4>MenuStash</h4>
1516
1517 <p>Description of menus/stash.txt</p>
1531 <p><strong>advance</strong> | <code>point</code> | Position of the button to advance dialog.</p>
1532
1533 <p><strong>dialogbox</strong> | <code>rectangle</code> | Position and dimensions of the text box graphics.</p>
1534
1535 <p><strong>dialogtext</strong> | <code>rectangle</code> | Rectangle where the dialog text is placed.</p>
1536
1537 <p><strong>text_offset</strong> | <code>point</code> | Margins for the left/right and top/bottom of the dialog text.</p>
1538
1539 <p><strong>portrait_he</strong> | <code>rectangle</code> | Position and dimensions of the NPC portrait graphics.</p>
1540
1541 <p><strong>portrait_you</strong> | <code>rectangle</code> | Position and dimensions of the player&rsquo;s portrait graphics.</p>
1542
1543 <p><strong>font_who</strong> | <code>predefined_string</code> | Font style to use for the name of the currently talking person.</p>
1544
1545 <p><strong>font_dialog</strong> | <code>predefined_string</code> | Font style to use for the dialog text.</p>
1546
1547 <p><strong>topic_color_normal</strong> | <code>color</code> | The normal color for topic text.</p>
1548
1549 <p><strong>topic_color_hover</strong> | <code>color</code> | The color for topic text when highlighted.</p>
1550
1551 <p><strong>topic_color_normal</strong> | <code>color</code> | The color for topic text when clicked.</p>
1552
1553 <p><strong>trade_color_normal</strong> | <code>color</code> | The normal color for the &ldquo;Trade&rdquo; text.</p>
1554
1555 <p><strong>trade_color_hover</strong> | <code>color</code> | The color for the &ldquo;Trade&rdquo; text when highlighted.</p>
1556
1557 <p><strong>trade_color_normal</strong> | <code>color</code> | The color for the &ldquo;Trade&rdquo; text when clicked.</p>
1558
1559 <hr />
1560
1561 <h4>MenuVendor</h4>
1562
1563 <p>Description of menus/vendor.txt</p>
15181564
15191565 <p><strong>close</strong> | <code>point</code> | Position of the close button.</p>
15201566
15211567 <p><strong>slots_area</strong> | <code>point</code> | Position of the top-left slot.</p>
15221568
1523 <p><strong>stash_cols</strong> | <code>int</code> | The number of columns for the grid of slots.</p>
1524
1525 <p><strong>stash_rows</strong> | <code>int</code> | The number of rows for the grid of slots.</p>
1526
1527 <p><strong>label_title</strong> | <code>label</code> | Position of the &ldquo;Stash&rdquo; label.</p>
1528
1529 <p><strong>currency</strong> | <code>label</code> | Position of the label displaying the amount of currency stored in the stash.</p>
1530
1531 <hr />
1532
1533 <h4>MenuStatBar</h4>
1534
1535 <p>Description of menus/hp.txt, menus/mp.txt, menus/xp.txt</p>
1536
1537 <p><strong>bar_pos</strong> | <code>rectangle</code> | Position and dimensions of the bar graphics.</p>
1538
1539 <p><strong>text_pos</strong> | <code>label</code> | Position of the text displaying the current value of the relevant stat.</p>
1540
1541 <p><strong>orientation</strong> | <code>bool</code> | True is vertical orientation; false is horizontal.</p>
1542
1543 <p><strong>bar_gfx</strong> | <code>filename</code> | Filename of the image to use for the &ldquo;fill&rdquo; of the bar.</p>
1544
1545 <p><strong>bar_gfx_background</strong> | <code>filename</code> | Filename of the image to use for the base of the bar.</p>
1546
1547 <hr />
1548
1549 <h4>MenuTalker</h4>
1550
1551 <p>Description of menus/talker.txt</p>
1552
1553 <p><strong>close</strong> | <code>point</code> | Position of the close button.</p>
1554
1555 <p><strong>advance</strong> | <code>point</code> | Position of the button to advance dialog.</p>
1556
1557 <p><strong>dialogbox</strong> | <code>rectangle</code> | Position and dimensions of the text box graphics.</p>
1558
1559 <p><strong>dialogtext</strong> | <code>rectangle</code> | Rectangle where the dialog text is placed.</p>
1560
1561 <p><strong>text_offset</strong> | <code>point</code> | Margins for the left/right and top/bottom of the dialog text.</p>
1562
1563 <p><strong>portrait_he</strong> | <code>rectangle</code> | Position and dimensions of the NPC portrait graphics.</p>
1564
1565 <p><strong>portrait_you</strong> | <code>rectangle</code> | Position and dimensions of the player&rsquo;s portrait graphics.</p>
1566
1567 <p><strong>font_who</strong> | <code>predefined_string</code> | Font style to use for the name of the currently talking person.</p>
1568
1569 <p><strong>font_dialog</strong> | <code>predefined_string</code> | Font style to use for the dialog text.</p>
1570
1571 <p><strong>topic_color_normal</strong> | <code>color</code> | The normal color for topic text.</p>
1572
1573 <p><strong>topic_color_hover</strong> | <code>color</code> | The color for topic text when highlighted.</p>
1574
1575 <p><strong>topic_color_normal</strong> | <code>color</code> | The color for topic text when clicked.</p>
1576
1577 <p><strong>trade_color_normal</strong> | <code>color</code> | The normal color for the &ldquo;Trade&rdquo; text.</p>
1578
1579 <p><strong>trade_color_hover</strong> | <code>color</code> | The color for the &ldquo;Trade&rdquo; text when highlighted.</p>
1580
1581 <p><strong>trade_color_normal</strong> | <code>color</code> | The color for the &ldquo;Trade&rdquo; text when clicked.</p>
1582
1583 <hr />
1584
1585 <h4>MenuVendor</h4>
1586
1587 <p>Description of menus/vendor.txt</p>
1588
1589 <p><strong>close</strong> | <code>point</code> | Position of the close button.</p>
1590
1591 <p><strong>slots_area</strong> | <code>point</code> | Position of the top-left slot.</p>
1592
15931569 <p><strong>vendor_cols</strong> | <code>int</code> | The number of columns in the grid of slots.</p>
15941570
15951571 <p><strong>vendor_rows</strong> | <code>int</code> | The number of rows in the grid of slots.</p>
16441620
16451621 <p><strong>dialog.portrait_you</strong> | <code>repeatable(filename)</code> | Filename of a portrait to display for the player during this dialog.</p>
16461622
1623 <p><strong>dialog.take_a_party</strong> | <code>bool</code> | Start/stop taking a party with player.</p>
1624
16471625 <p><strong>dialog.response</strong> | <code>repeatable(string)</code> | A dialog ID to present as a selectable response. This key must precede the dialog text line.</p>
16481626
16491627 <p><strong>dialog.response_only</strong> | <code>bool</code> | If true, this dialog topic will only appear when explicitly referenced with the &ldquo;response&rdquo; key.</p>
16501628
16511629 <p><strong>name</strong> | <code>string</code> | NPC&rsquo;s name.</p>
16521630
1653 <p><strong>gfx</strong> | <code>filename</code> | Filename of an animation definition.</p>
1654
16551631 <p><strong>direction</strong> | <code>direction</code> | The direction to use for this NPC&rsquo;s stance animation.</p>
16561632
1633 <p><strong>show_on_minimap</strong> | <code>bool</code> | If true, this NPC will be shown on the minimap. The default is true.</p>
1634
16571635 <p><strong>talker</strong> | <code>bool</code> | Allows this NPC to be talked to.</p>
16581636
16591637 <p><strong>portrait</strong> | <code>filename</code> | Filename of the default portrait image.</p>
17641742
17651743 <p><strong>power.cooldown</strong> | <code>duration</code> | Specify the duration for cooldown of the power in &lsquo;ms&rsquo; or &rsquo;s'.</p>
17661744
1767 <p><strong>power.requires_hpmp_state</strong> | <code>["hp", "mp"], ["percent", "not_percent", "ignore"], int : Stat, Current state, Percentage value</code> | Power can only be used when HP/MP matches the specified state</p>
1745 <p><strong>power.requires_hpmp_state</strong> | <code>["all", "any"], ["percent", "not_percent", "ignore"], int , ["percent", "not_percent", "ignore"], int : Mode, HP state, HP Percentage value, MP state, MP Percentage value</code> | Power can only be used when HP/MP matches the specified state. In &lsquo;all&rsquo; mode, both HP and MP must meet the requirements, where as only one must in &lsquo;any&rsquo; mode. To check a single stat, use &lsquo;all&rsquo; mode and set the &lsquo;ignore&rsquo; state for the other stat.</p>
17681746
17691747 <p><strong>power.animation</strong> | <code>filename</code> | The filename of the power animation.</p>
17701748
18621840
18631841 <p><strong>power.pre_power</strong> | <code>power_id, int : Power, Chance to cast</code> | Trigger a power immediately when casting this one.</p>
18641842
1865 <p><strong>power.post_power</strong> | <code>power_id, int : Power, Chance to cast</code> | Trigger a power if the hazard did damage.</p>
1843 <p><strong>power.post_power</strong> | <code>power_id, int : Power, Chance to cast</code> | Trigger a power if the hazard did damage. For &lsquo;block&rsquo; type powers, this power will be triggered when the blocker takes damage.</p>
18661844
18671845 <p><strong>power.wall_power</strong> | <code>power_id, int : Power, Chance to cast</code> | Trigger a power if the hazard hit a wall.</p>
18681846
19041882
19051883 <p><strong>power.target_nearest</strong> | <code>float</code> | Will automatically target the nearest enemy within the specified range.</p>
19061884
1885 <p><strong>power.disable_equip_slots</strong> | <code>list(predefined_string)</code> | Passive powers only. A comma separated list of equip slot types to disable when this power is active.</p>
1886
19071887 <hr />
19081888
19091889 <h4>QuestLog</h4>
19681948
19691949 <p><strong>power_filter</strong> | <code>list(power_id)</code> | Only these powers are allowed to hit this entity.</p>
19701950
1951 <p><strong>categories</strong> | <code>list(string)</code> | Categories that this entity belongs to.</p>
1952
1953 <p><strong>melee_range</strong> | <code>float</code> | Determines the distance from the caster that some powers will be placed. For AI entities, it also means the minimum distance from target required to use melee powers.</p>
1954
19711955 <hr />
19721956
19731957 <h4>StatBlock: Sound effects</h4>
19861970
19871971 <p><strong>sfx_levelup</strong> | <code>filename</code> | Filename of sound effect for leveling up.</p>
19881972
1973 <p><strong>sfx_lowhp</strong> | <code>filename, bool : Sound file, loop</code> | Filename of sound effect for low health warning. Optionally, it can be looped.</p>
1974
19891975 <hr />
19901976
19911977 <h4>StatBlock: Enemies</h4>
20322018
20332019 <p><strong>passive_powers</strong> | <code>list(power_id)</code> | A list of passive powers this creature has.</p>
20342020
2035 <p><strong>melee_range</strong> | <code>float</code> | Minimum distance from target required to use melee powers.</p>
2036
20372021 <p><strong>threat_range</strong> | <code>float, float : Engage distance, Stop distance</code> | The first value is the radius of the area this creature will be able to start chasing the hero. The second, optional, value is the radius at which this creature will stop pursuing their target and defaults to double the first value.</p>
20382022
20392023 <p><strong>flee_range</strong> | <code>float</code> | The radius at which this creature will start moving to a safe distance. Defaults to half of the threat_range.</p>
20442028
20452029 <p><strong>suppress_hp</strong> | <code>bool</code> | Hides the enemy HP bar for this creature.</p>
20462030
2047 <p><strong>categories</strong> | <code>list(string)</code> | Categories that this enemy belongs to.</p>
2048
20492031 <p><strong>flee_duration</strong> | <code>duration</code> | The minimum amount of time that this creature will flee. They may flee longer than the specified time.</p>
20502032
20512033 <p><strong>flee_cooldown</strong> | <code>duration</code> | The amount of time this creature must wait before they can start fleeing again.</p>
21632145 <p><strong>shield</strong> | Create a damage absorbing barrier based on Mental damage stat. Duration is ignored.</p>
21642146
21652147 <p><strong>heal</strong> | Restore HP based on Mental damage stat.</p>
2148
2149 <hr />
2150
2151 <h4>ItemManager</h4>
2152
2153 <p>Description of &ldquo;bonus&rdquo; attribute in items/items.txt</p>
2154
2155 <p><strong>speed</strong> | Movement speed. A value of 100 is 100% speed (aka normal speed).</p>
2156
2157 <p><strong>attack_speed</strong> | Attack animation speed. A value of 100 is 100% speed (aka normal speed).</p>
2158
2159 <p><strong>${STATNAME}</strong> | Increases ${STATNAME}, where ${STATNAME} is any of the base stats. Examples: hp, avoidance, xp_gain</p>
2160
2161 <p><strong>${DAMAGE_TYPE}</strong> | Increases a damage min or max, where ${DAMAGE_TYPE} is any &lsquo;min&rsquo; or &lsquo;max&rsquo; value found in engine/damage_types.txt. Example: dmg_melee_min</p>
2162
2163 <p><strong>${ELEMENT}_resist</strong> | Increase Resistance % to ${ELEMENT}, where ${ELEMENT} is any found in engine/elements.txt. Example: fire_resist</p>
2164
2165 <p><strong>${PRIMARYSTAT}</strong> | Increases ${PRIMARYSTAT}, where ${PRIMARYSTAT} is any of the primary stats defined in engine/primary_stats.txt. Example: physical</p>
21662166
21672167 <hr />
21682168
3636
3737 `predefined_string`, same as a string, but uses a value defined elsewhere
3838
39 `alignment`, defined as: `["topleft", "top", "topright", "left", "center", "right", "bottomleft", "bottom", "bottomright"]`
39 `alignment`, defined as: `["topleft", "top", "topright", "left", "center", "right", "bottomleft", "bottom", "bottomright", "frame_topleft", "frame_top", "frame_topright", "frame_left", "frame_center", "frame_right", "frame_bottomleft", "frame_bottom", "frame_bottomright"]`
4040
4141 `direction`, defined as: `["N", "NE", "E", "SE", "S", "SW", "W", "NW", int]`. If defined as an integer, the value must be between 0-7 inclusive.
4242
4444
4545 `label`, defined as: `"hidden"` **or** `int, int, ["left", "right", "center"], ["top", "center", "bottom"], string : X, Y, Justify, Vertical Align, Font style`. The font style can be any style defined in engine/font\_settings.txt.
4646
47 `loot`, defined as: `filename` **or** `["currency", item_id], ["fixed", int], int, int : Item, Drop chance, Min quantity, Max quantity`. There is a limitation when defining as part of a list(...): filenames can only be used in the first list element.
47 `loot`, defined as: `filename` **or** `["currency", item_id], ["fixed", float], int, int : Item, Drop chance, Min quantity, Max quantity`. There is a limitation when defining as part of a list(...): filenames can only be used in the first list element.
4848
4949 `version`, defined as: a string of three numbers, separated by dots (e.g. "1.2.03")
5050
0 #!/bin/bash
1 IFS=$'\n'
2 HAVE_CLASS=0
3 echo "<?xml version=\"1.0\"?>"
4 echo "<classes>"
5 for line in `grep '@CLASS\|@ATTR\|@TYPE' src/*.cpp | sed s/^.*@//g | sed 's/CLASS /CLASS|/g' | sed 's/ATTR /ATTR|/g' | sed 's/TYPE /TYPE|/g' | sed 's/"/\&quot;/g'`
6 do
7 IFS='|'
8 fields=($line)
9 # Handle CLASS
10 if [ "${fields[0]}" == "CLASS" ]; then
11 if [ $HAVE_CLASS -eq 1 ]; then
12 echo ' </attributes>'
13 echo ' </class>'
14 fi
15 echo ' <class name="'${fields[1]}'">'
16 HAVE_CLASS=1
17 echo ' <description>'${fields[2]}'</description>'
18 echo ' <attributes>'
19 fi
20 # Handle ATTR
21 if [ "${fields[0]}" == "ATTR" ]; then
22 IFS=':'
23 TYPE_VAL=(${fields[2]})
24 echo ' <attribute name="'${fields[1]}'" type="'$(echo "${TYPE_VAL[0]}" | xargs)'" vars="'$(echo "${TYPE_VAL[1]}" | xargs)'">'${fields[3]}'</attribute>'
25 fi
26 # Handle TYPE
27 if [ "${fields[0]}" == "TYPE" ]; then
28 echo ' <type name="'${fields[1]}'">'${fields[2]}'</type>'
29 fi
30 done
31
32 # close last class if available
33 if [ $HAVE_CLASS -eq 1 ]; then
34 echo ' </attributes>'
35 echo ' </class>'
36 fi
37 echo "</classes>"
22 apply plugin: 'com.android.application'
33
44 android {
5 compileSdkVersion 22
5 compileSdkVersion 26
66 // Each version of the Android Gradle Plugin now has a default version of the build tools
7 //buildToolsVersion '25.0.0'
7 //buildToolsVersion '29.0.2'
88
99 // don't use Android.mk generated by Android Studio / Gradle
1010 sourceSets.main.jni.srcDirs = []
1313 defaultConfig {
1414 applicationId "org.flare.app"
1515 minSdkVersion 14
16 targetSdkVersion 22
16 targetSdkVersion 26
1717 }
1818
1919 buildTypes {
2222 proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.txt'
2323 }
2424 }
25 buildToolsVersion '27.0.3'
2625 }
2726
2827 // call regular ndk-build script from app directory
2424 </activity>
2525 </application>
2626
27 <!-- Android 3.2 -->
28 <uses-sdk android:minSdkVersion="14" android:targetSdkVersion="14" />
29
3027 <!-- OpenGL ES 2.0 -->
3128 <uses-feature android:glEsVersion="0x00020000" />
3229
00 package org.flare.app;
11
2 import org.libsdl.app.SDLActivity;
3 import android.os.*;
2 import org.libsdl.app.SDLActivity;
3 import android.os.*;
44
55 /*
66 * A sample wrapper class that just calls SDLActivity
0 package org.libsdl.app;
1
2 import android.hardware.usb.UsbDevice;
3
4 interface HIDDevice
5 {
6 public int getId();
7 public int getVendorId();
8 public int getProductId();
9 public String getSerialNumber();
10 public int getVersion();
11 public String getManufacturerName();
12 public String getProductName();
13 public UsbDevice getDevice();
14 public boolean open();
15 public int sendFeatureReport(byte[] report);
16 public int sendOutputReport(byte[] report);
17 public boolean getFeatureReport(byte[] report);
18 public void setFrozen(boolean frozen);
19 public void close();
20 public void shutdown();
21 }
0 package org.libsdl.app;
1
2 import android.content.Context;
3 import android.bluetooth.BluetoothDevice;
4 import android.bluetooth.BluetoothGatt;
5 import android.bluetooth.BluetoothGattCallback;
6 import android.bluetooth.BluetoothGattCharacteristic;
7 import android.bluetooth.BluetoothGattDescriptor;
8 import android.bluetooth.BluetoothManager;
9 import android.bluetooth.BluetoothProfile;
10 import android.bluetooth.BluetoothGattService;
11 import android.hardware.usb.UsbDevice;
12 import android.os.Handler;
13 import android.os.Looper;
14 import android.util.Log;
15 import android.os.*;
16
17 //import com.android.internal.util.HexDump;
18
19 import java.lang.Runnable;
20 import java.util.Arrays;
21 import java.util.LinkedList;
22 import java.util.UUID;
23
24 class HIDDeviceBLESteamController extends BluetoothGattCallback implements HIDDevice {
25
26 private static final String TAG = "hidapi";
27 private HIDDeviceManager mManager;
28 private BluetoothDevice mDevice;
29 private int mDeviceId;
30 private BluetoothGatt mGatt;
31 private boolean mIsRegistered = false;
32 private boolean mIsConnected = false;
33 private boolean mIsChromebook = false;
34 private boolean mIsReconnecting = false;
35 private boolean mFrozen = false;
36 private LinkedList<GattOperation> mOperations;
37 GattOperation mCurrentOperation = null;
38 private Handler mHandler;
39
40 private static final int TRANSPORT_AUTO = 0;
41 private static final int TRANSPORT_BREDR = 1;
42 private static final int TRANSPORT_LE = 2;
43
44 private static final int CHROMEBOOK_CONNECTION_CHECK_INTERVAL = 10000;
45
46 static public final UUID steamControllerService = UUID.fromString("100F6C32-1735-4313-B402-38567131E5F3");
47 static public final UUID inputCharacteristic = UUID.fromString("100F6C33-1735-4313-B402-38567131E5F3");
48 static public final UUID reportCharacteristic = UUID.fromString("100F6C34-1735-4313-B402-38567131E5F3");
49 static private final byte[] enterValveMode = new byte[] { (byte)0xC0, (byte)0x87, 0x03, 0x08, 0x07, 0x00 };
50
51 static class GattOperation {
52 private enum Operation {
53 CHR_READ,
54 CHR_WRITE,
55 ENABLE_NOTIFICATION
56 }
57
58 Operation mOp;
59 UUID mUuid;
60 byte[] mValue;
61 BluetoothGatt mGatt;
62 boolean mResult = true;
63
64 private GattOperation(BluetoothGatt gatt, GattOperation.Operation operation, UUID uuid) {
65 mGatt = gatt;
66 mOp = operation;
67 mUuid = uuid;
68 }
69
70 private GattOperation(BluetoothGatt gatt, GattOperation.Operation operation, UUID uuid, byte[] value) {
71 mGatt = gatt;
72 mOp = operation;
73 mUuid = uuid;
74 mValue = value;
75 }
76
77 public void run() {
78 // This is executed in main thread
79 BluetoothGattCharacteristic chr;
80
81 switch (mOp) {
82 case CHR_READ:
83 chr = getCharacteristic(mUuid);
84 //Log.v(TAG, "Reading characteristic " + chr.getUuid());
85 if (!mGatt.readCharacteristic(chr)) {
86 Log.e(TAG, "Unable to read characteristic " + mUuid.toString());
87 mResult = false;
88 break;
89 }
90 mResult = true;
91 break;
92 case CHR_WRITE:
93 chr = getCharacteristic(mUuid);
94 //Log.v(TAG, "Writing characteristic " + chr.getUuid() + " value=" + HexDump.toHexString(value));
95 chr.setValue(mValue);
96 if (!mGatt.writeCharacteristic(chr)) {
97 Log.e(TAG, "Unable to write characteristic " + mUuid.toString());
98 mResult = false;
99 break;
100 }
101 mResult = true;
102 break;
103 case ENABLE_NOTIFICATION:
104 chr = getCharacteristic(mUuid);
105 //Log.v(TAG, "Writing descriptor of " + chr.getUuid());
106 if (chr != null) {
107 BluetoothGattDescriptor cccd = chr.getDescriptor(UUID.fromString("00002902-0000-1000-8000-00805f9b34fb"));
108 if (cccd != null) {
109 int properties = chr.getProperties();
110 byte[] value;
111 if ((properties & BluetoothGattCharacteristic.PROPERTY_NOTIFY) == BluetoothGattCharacteristic.PROPERTY_NOTIFY) {
112 value = BluetoothGattDescriptor.ENABLE_NOTIFICATION_VALUE;
113 } else if ((properties & BluetoothGattCharacteristic.PROPERTY_INDICATE) == BluetoothGattCharacteristic.PROPERTY_INDICATE) {
114 value = BluetoothGattDescriptor.ENABLE_INDICATION_VALUE;
115 } else {
116 Log.e(TAG, "Unable to start notifications on input characteristic");
117 mResult = false;
118 return;
119 }
120
121 mGatt.setCharacteristicNotification(chr, true);
122 cccd.setValue(value);
123 if (!mGatt.writeDescriptor(cccd)) {
124 Log.e(TAG, "Unable to write descriptor " + mUuid.toString());
125 mResult = false;
126 return;
127 }
128 mResult = true;
129 }
130 }
131 }
132 }
133
134 public boolean finish() {
135 return mResult;
136 }
137
138 private BluetoothGattCharacteristic getCharacteristic(UUID uuid) {
139 BluetoothGattService valveService = mGatt.getService(steamControllerService);
140 if (valveService == null)
141 return null;
142 return valveService.getCharacteristic(uuid);
143 }
144
145 static public GattOperation readCharacteristic(BluetoothGatt gatt, UUID uuid) {
146 return new GattOperation(gatt, Operation.CHR_READ, uuid);
147 }
148
149 static public GattOperation writeCharacteristic(BluetoothGatt gatt, UUID uuid, byte[] value) {
150 return new GattOperation(gatt, Operation.CHR_WRITE, uuid, value);
151 }
152
153 static public GattOperation enableNotification(BluetoothGatt gatt, UUID uuid) {
154 return new GattOperation(gatt, Operation.ENABLE_NOTIFICATION, uuid);
155 }
156 }
157
158 public HIDDeviceBLESteamController(HIDDeviceManager manager, BluetoothDevice device) {
159 mManager = manager;
160 mDevice = device;
161 mDeviceId = mManager.getDeviceIDForIdentifier(getIdentifier());
162 mIsRegistered = false;
163 mIsChromebook = mManager.getContext().getPackageManager().hasSystemFeature("org.chromium.arc.device_management");
164 mOperations = new LinkedList<GattOperation>();
165 mHandler = new Handler(Looper.getMainLooper());
166
167 mGatt = connectGatt();
168 // final HIDDeviceBLESteamController finalThis = this;
169 // mHandler.postDelayed(new Runnable() {
170 // @Override
171 // public void run() {
172 // finalThis.checkConnectionForChromebookIssue();
173 // }
174 // }, CHROMEBOOK_CONNECTION_CHECK_INTERVAL);
175 }
176
177 public String getIdentifier() {
178 return String.format("SteamController.%s", mDevice.getAddress());
179 }
180
181 public BluetoothGatt getGatt() {
182 return mGatt;
183 }
184
185 // Because on Chromebooks we show up as a dual-mode device, it will attempt to connect TRANSPORT_AUTO, which will use TRANSPORT_BREDR instead
186 // of TRANSPORT_LE. Let's force ourselves to connect low energy.
187 private BluetoothGatt connectGatt(boolean managed) {
188 if (Build.VERSION.SDK_INT >= 23) {
189 try {
190 return mDevice.connectGatt(mManager.getContext(), managed, this, TRANSPORT_LE);
191 } catch (Exception e) {
192 return mDevice.connectGatt(mManager.getContext(), managed, this);
193 }
194 } else {
195 return mDevice.connectGatt(mManager.getContext(), managed, this);
196 }
197 }
198
199 private BluetoothGatt connectGatt() {
200 return connectGatt(false);
201 }
202
203 protected int getConnectionState() {
204
205 Context context = mManager.getContext();
206 if (context == null) {
207 // We are lacking any context to get our Bluetooth information. We'll just assume disconnected.
208 return BluetoothProfile.STATE_DISCONNECTED;
209 }
210
211 BluetoothManager btManager = (BluetoothManager)context.getSystemService(Context.BLUETOOTH_SERVICE);
212 if (btManager == null) {
213 // This device doesn't support Bluetooth. We should never be here, because how did
214 // we instantiate a device to start with?
215 return BluetoothProfile.STATE_DISCONNECTED;
216 }
217
218 return btManager.getConnectionState(mDevice, BluetoothProfile.GATT);
219 }
220
221 public void reconnect() {
222
223 if (getConnectionState() != BluetoothProfile.STATE_CONNECTED) {
224 mGatt.disconnect();
225 mGatt = connectGatt();
226 }
227
228 }
229
230 protected void checkConnectionForChromebookIssue() {
231 if (!mIsChromebook) {
232 // We only do this on Chromebooks, because otherwise it's really annoying to just attempt
233 // over and over.
234 return;
235 }
236
237 int connectionState = getConnectionState();
238
239 switch (connectionState) {
240 case BluetoothProfile.STATE_CONNECTED:
241 if (!mIsConnected) {
242 // We are in the Bad Chromebook Place. We can force a disconnect
243 // to try to recover.
244 Log.v(TAG, "Chromebook: We are in a very bad state; the controller shows as connected in the underlying Bluetooth layer, but we never received a callback. Forcing a reconnect.");
245 mIsReconnecting = true;
246 mGatt.disconnect();
247 mGatt = connectGatt(false);
248 break;
249 }
250 else if (!isRegistered()) {
251 if (mGatt.getServices().size() > 0) {
252 Log.v(TAG, "Chromebook: We are connected to a controller, but never got our registration. Trying to recover.");
253 probeService(this);
254 }
255 else {
256 Log.v(TAG, "Chromebook: We are connected to a controller, but never discovered services. Trying to recover.");
257 mIsReconnecting = true;
258 mGatt.disconnect();
259 mGatt = connectGatt(false);
260 break;
261 }
262 }
263 else {
264 Log.v(TAG, "Chromebook: We are connected, and registered. Everything's good!");
265 return;
266 }
267 break;
268
269 case BluetoothProfile.STATE_DISCONNECTED:
270 Log.v(TAG, "Chromebook: We have either been disconnected, or the Chromebook BtGatt.ContextMap bug has bitten us. Attempting a disconnect/reconnect, but we may not be able to recover.");
271
272 mIsReconnecting = true;
273 mGatt.disconnect();
274 mGatt = connectGatt(false);
275 break;
276
277 case BluetoothProfile.STATE_CONNECTING:
278 Log.v(TAG, "Chromebook: We're still trying to connect. Waiting a bit longer.");
279 break;
280 }
281
282 final HIDDeviceBLESteamController finalThis = this;
283 mHandler.postDelayed(new Runnable() {
284 @Override
285 public void run() {
286 finalThis.checkConnectionForChromebookIssue();
287 }
288 }, CHROMEBOOK_CONNECTION_CHECK_INTERVAL);
289 }
290
291 private boolean isRegistered() {
292 return mIsRegistered;
293 }
294
295 private void setRegistered() {
296 mIsRegistered = true;
297 }
298
299 private boolean probeService(HIDDeviceBLESteamController controller) {
300
301 if (isRegistered()) {
302 return true;
303 }
304
305 if (!mIsConnected) {
306 return false;
307 }
308
309 Log.v(TAG, "probeService controller=" + controller);
310
311 for (BluetoothGattService service : mGatt.getServices()) {
312 if (service.getUuid().equals(steamControllerService)) {
313 Log.v(TAG, "Found Valve steam controller service " + service.getUuid());
314
315 for (BluetoothGattCharacteristic chr : service.getCharacteristics()) {
316 if (chr.getUuid().equals(inputCharacteristic)) {
317 Log.v(TAG, "Found input characteristic");
318 // Start notifications
319 BluetoothGattDescriptor cccd = chr.getDescriptor(UUID.fromString("00002902-0000-1000-8000-00805f9b34fb"));
320 if (cccd != null) {
321 enableNotification(chr.getUuid());
322 }
323 }
324 }
325 return true;
326 }
327 }
328
329 if ((mGatt.getServices().size() == 0) && mIsChromebook && !mIsReconnecting) {
330 Log.e(TAG, "Chromebook: Discovered services were empty; this almost certainly means the BtGatt.ContextMap bug has bitten us.");
331 mIsConnected = false;
332 mIsReconnecting = true;
333 mGatt.disconnect();
334 mGatt = connectGatt(false);
335 }
336
337 return false;
338 }
339
340 //////////////////////////////////////////////////////////////////////////////////////////////////////
341 //////////////////////////////////////////////////////////////////////////////////////////////////////
342 //////////////////////////////////////////////////////////////////////////////////////////////////////
343
344 private void finishCurrentGattOperation() {
345 GattOperation op = null;
346 synchronized (mOperations) {
347 if (mCurrentOperation != null) {
348 op = mCurrentOperation;
349 mCurrentOperation = null;
350 }
351 }
352 if (op != null) {
353 boolean result = op.finish(); // TODO: Maybe in main thread as well?
354
355 // Our operation failed, let's add it back to the beginning of our queue.
356 if (!result) {
357 mOperations.addFirst(op);
358 }
359 }
360 executeNextGattOperation();
361 }
362
363 private void executeNextGattOperation() {
364 synchronized (mOperations) {
365 if (mCurrentOperation != null)
366 return;
367
368 if (mOperations.isEmpty())
369 return;
370
371 mCurrentOperation = mOperations.removeFirst();
372 }
373
374 // Run in main thread
375 mHandler.post(new Runnable() {
376 @Override
377 public void run() {
378 synchronized (mOperations) {
379 if (mCurrentOperation == null) {
380 Log.e(TAG, "Current operation null in executor?");
381 return;
382 }
383
384 mCurrentOperation.run();
385 // now wait for the GATT callback and when it comes, finish this operation
386 }
387 }
388 });
389 }
390
391 private void queueGattOperation(GattOperation op) {
392 synchronized (mOperations) {
393 mOperations.add(op);
394 }
395 executeNextGattOperation();
396 }
397
398 private void enableNotification(UUID chrUuid) {
399 GattOperation op = HIDDeviceBLESteamController.GattOperation.enableNotification(mGatt, chrUuid);
400 queueGattOperation(op);
401 }
402
403 public void writeCharacteristic(UUID uuid, byte[] value) {
404 GattOperation op = HIDDeviceBLESteamController.GattOperation.writeCharacteristic(mGatt, uuid, value);
405 queueGattOperation(op);
406 }
407
408 public void readCharacteristic(UUID uuid) {
409 GattOperation op = HIDDeviceBLESteamController.GattOperation.readCharacteristic(mGatt, uuid);
410 queueGattOperation(op);
411 }
412
413 //////////////////////////////////////////////////////////////////////////////////////////////////////
414 ////////////// BluetoothGattCallback overridden methods
415 //////////////////////////////////////////////////////////////////////////////////////////////////////
416
417 public void onConnectionStateChange(BluetoothGatt g, int status, int newState) {
418 //Log.v(TAG, "onConnectionStateChange status=" + status + " newState=" + newState);
419 mIsReconnecting = false;
420 if (newState == 2) {
421 mIsConnected = true;
422 // Run directly, without GattOperation
423 if (!isRegistered()) {
424 mHandler.post(new Runnable() {
425 @Override
426 public void run() {
427 mGatt.discoverServices();
428 }
429 });
430 }
431 }
432 else if (newState == 0) {
433 mIsConnected = false;
434 }
435
436 // Disconnection is handled in SteamLink using the ACTION_ACL_DISCONNECTED Intent.
437 }
438
439 public void onServicesDiscovered(BluetoothGatt gatt, int status) {
440 //Log.v(TAG, "onServicesDiscovered status=" + status);
441 if (status == 0) {
442 if (gatt.getServices().size() == 0) {
443 Log.v(TAG, "onServicesDiscovered returned zero services; something has gone horribly wrong down in Android's Bluetooth stack.");
444 mIsReconnecting = true;
445 mIsConnected = false;
446 gatt.disconnect();
447 mGatt = connectGatt(false);
448 }
449 else {
450 probeService(this);
451 }
452 }
453 }
454
455 public void onCharacteristicRead(BluetoothGatt gatt, BluetoothGattCharacteristic characteristic, int status) {
456 //Log.v(TAG, "onCharacteristicRead status=" + status + " uuid=" + characteristic.getUuid());
457
458 if (characteristic.getUuid().equals(reportCharacteristic) && !mFrozen) {
459 mManager.HIDDeviceFeatureReport(getId(), characteristic.getValue());
460 }
461
462 finishCurrentGattOperation();
463 }
464
465 public void onCharacteristicWrite(BluetoothGatt gatt, BluetoothGattCharacteristic characteristic, int status) {
466 //Log.v(TAG, "onCharacteristicWrite status=" + status + " uuid=" + characteristic.getUuid());
467
468 if (characteristic.getUuid().equals(reportCharacteristic)) {
469 // Only register controller with the native side once it has been fully configured
470 if (!isRegistered()) {
471 Log.v(TAG, "Registering Steam Controller with ID: " + getId());
472 mManager.HIDDeviceConnected(getId(), getIdentifier(), getVendorId(), getProductId(), getSerialNumber(), getVersion(), getManufacturerName(), getProductName(), 0, 0, 0, 0);
473 setRegistered();
474 }
475 }
476
477 finishCurrentGattOperation();
478 }
479
480 public void onCharacteristicChanged(BluetoothGatt gatt, BluetoothGattCharacteristic characteristic) {
481 // Enable this for verbose logging of controller input reports
482 //Log.v(TAG, "onCharacteristicChanged uuid=" + characteristic.getUuid() + " data=" + HexDump.dumpHexString(characteristic.getValue()));
483
484 if (characteristic.getUuid().equals(inputCharacteristic) && !mFrozen) {
485 mManager.HIDDeviceInputReport(getId(), characteristic.getValue());
486 }
487 }
488
489 public void onDescriptorRead(BluetoothGatt gatt, BluetoothGattDescriptor descriptor, int status) {
490 //Log.v(TAG, "onDescriptorRead status=" + status);
491 }
492
493 public void onDescriptorWrite(BluetoothGatt gatt, BluetoothGattDescriptor descriptor, int status) {
494 BluetoothGattCharacteristic chr = descriptor.getCharacteristic();
495 //Log.v(TAG, "onDescriptorWrite status=" + status + " uuid=" + chr.getUuid() + " descriptor=" + descriptor.getUuid());
496
497 if (chr.getUuid().equals(inputCharacteristic)) {
498 boolean hasWrittenInputDescriptor = true;
499 BluetoothGattCharacteristic reportChr = chr.getService().getCharacteristic(reportCharacteristic);
500 if (reportChr != null) {
501 Log.v(TAG, "Writing report characteristic to enter valve mode");
502 reportChr.setValue(enterValveMode);
503 gatt.writeCharacteristic(reportChr);
504 }
505 }
506
507 finishCurrentGattOperation();
508 }
509
510 public void onReliableWriteCompleted(BluetoothGatt gatt, int status) {
511 //Log.v(TAG, "onReliableWriteCompleted status=" + status);
512 }
513
514 public void onReadRemoteRssi(BluetoothGatt gatt, int rssi, int status) {
515 //Log.v(TAG, "onReadRemoteRssi status=" + status);
516 }
517
518 public void onMtuChanged(BluetoothGatt gatt, int mtu, int status) {
519 //Log.v(TAG, "onMtuChanged status=" + status);
520 }
521
522 //////////////////////////////////////////////////////////////////////////////////////////////////////
523 //////// Public API
524 //////////////////////////////////////////////////////////////////////////////////////////////////////
525
526 @Override
527 public int getId() {
528 return mDeviceId;
529 }
530
531 @Override
532 public int getVendorId() {
533 // Valve Corporation
534 final int VALVE_USB_VID = 0x28DE;
535 return VALVE_USB_VID;
536 }
537
538 @Override
539 public int getProductId() {
540 // We don't have an easy way to query from the Bluetooth device, but we know what it is
541 final int D0G_BLE2_PID = 0x1106;
542 return D0G_BLE2_PID;
543 }
544
545 @Override
546 public String getSerialNumber() {
547 // This will be read later via feature report by Steam
548 return "12345";
549 }
550
551 @Override
552 public int getVersion() {
553 return 0;
554 }
555
556 @Override
557 public String getManufacturerName() {
558 return "Valve Corporation";
559 }
560
561 @Override
562 public String getProductName() {
563 return "Steam Controller";
564 }
565
566 @Override
567 public UsbDevice getDevice() {
568 return null;
569 }
570
571 @Override
572 public boolean open() {
573 return true;
574 }
575
576 @Override
577 public int sendFeatureReport(byte[] report) {
578 if (!isRegistered()) {
579 Log.e(TAG, "Attempted sendFeatureReport before Steam Controller is registered!");
580 if (mIsConnected) {
581 probeService(this);
582 }
583 return -1;
584 }
585
586 // We need to skip the first byte, as that doesn't go over the air
587 byte[] actual_report = Arrays.copyOfRange(report, 1, report.length - 1);
588 //Log.v(TAG, "sendFeatureReport " + HexDump.dumpHexString(actual_report));
589 writeCharacteristic(reportCharacteristic, actual_report);
590 return report.length;
591 }
592
593 @Override
594 public int sendOutputReport(byte[] report) {
595 if (!isRegistered()) {
596 Log.e(TAG, "Attempted sendOutputReport before Steam Controller is registered!");
597 if (mIsConnected) {
598 probeService(this);
599 }
600 return -1;
601 }
602
603 //Log.v(TAG, "sendFeatureReport " + HexDump.dumpHexString(report));
604 writeCharacteristic(reportCharacteristic, report);
605 return report.length;
606 }
607
608 @Override
609 public boolean getFeatureReport(byte[] report) {
610 if (!isRegistered()) {
611 Log.e(TAG, "Attempted getFeatureReport before Steam Controller is registered!");
612 if (mIsConnected) {
613 probeService(this);
614 }
615 return false;
616 }
617
618 //Log.v(TAG, "getFeatureReport");
619 readCharacteristic(reportCharacteristic);
620 return true;
621 }
622
623 @Override
624 public void close() {
625 }
626
627 @Override
628 public void setFrozen(boolean frozen) {
629 mFrozen = frozen;
630 }
631
632 @Override
633 public void shutdown() {
634 close();
635
636 BluetoothGatt g = mGatt;
637 if (g != null) {
638 g.disconnect();
639 g.close();
640 mGatt = null;
641 }
642 mManager = null;
643 mIsRegistered = false;
644 mIsConnected = false;
645 mOperations.clear();
646 }
647
648 }
649
0 package org.libsdl.app;
1
2 import android.app.Activity;
3 import android.app.AlertDialog;
4 import android.app.PendingIntent;
5 import android.bluetooth.BluetoothAdapter;
6 import android.bluetooth.BluetoothDevice;
7 import android.bluetooth.BluetoothManager;
8 import android.bluetooth.BluetoothProfile;
9 import android.util.Log;
10 import android.content.BroadcastReceiver;
11 import android.content.Context;
12 import android.content.DialogInterface;
13 import android.content.Intent;
14 import android.content.IntentFilter;
15 import android.content.SharedPreferences;
16 import android.content.pm.PackageManager;
17 import android.hardware.usb.*;
18 import android.os.Handler;
19 import android.os.Looper;
20
21 import java.util.ArrayList;
22 import java.util.HashMap;
23 import java.util.Iterator;
24 import java.util.List;
25
26 public class HIDDeviceManager {
27 private static final String TAG = "hidapi";
28 private static final String ACTION_USB_PERMISSION = "org.libsdl.app.USB_PERMISSION";
29
30 private static HIDDeviceManager sManager;
31 private static int sManagerRefCount = 0;
32
33 public static HIDDeviceManager acquire(Context context) {
34 if (sManagerRefCount == 0) {
35 sManager = new HIDDeviceManager(context);
36 }
37 ++sManagerRefCount;
38 return sManager;
39 }
40
41 public static void release(HIDDeviceManager manager) {
42 if (manager == sManager) {
43 --sManagerRefCount;
44 if (sManagerRefCount == 0) {
45 sManager.close();
46 sManager = null;
47 }
48 }
49 }
50
51 private Context mContext;
52 private HashMap<Integer, HIDDevice> mDevicesById = new HashMap<Integer, HIDDevice>();
53 private HashMap<BluetoothDevice, HIDDeviceBLESteamController> mBluetoothDevices = new HashMap<BluetoothDevice, HIDDeviceBLESteamController>();
54 private int mNextDeviceId = 0;
55 private SharedPreferences mSharedPreferences = null;
56 private boolean mIsChromebook = false;
57 private UsbManager mUsbManager;
58 private Handler mHandler;
59 private BluetoothManager mBluetoothManager;
60 private List<BluetoothDevice> mLastBluetoothDevices;
61
62 private final BroadcastReceiver mUsbBroadcast = new BroadcastReceiver() {
63 @Override
64 public void onReceive(Context context, Intent intent) {
65 String action = intent.getAction();
66 if (action.equals(UsbManager.ACTION_USB_DEVICE_ATTACHED)) {
67 UsbDevice usbDevice = intent.getParcelableExtra(UsbManager.EXTRA_DEVICE);
68 handleUsbDeviceAttached(usbDevice);
69 } else if (action.equals(UsbManager.ACTION_USB_DEVICE_DETACHED)) {
70 UsbDevice usbDevice = intent.getParcelableExtra(UsbManager.EXTRA_DEVICE);
71 handleUsbDeviceDetached(usbDevice);
72 } else if (action.equals(HIDDeviceManager.ACTION_USB_PERMISSION)) {
73 UsbDevice usbDevice = intent.getParcelableExtra(UsbManager.EXTRA_DEVICE);
74 handleUsbDevicePermission(usbDevice, intent.getBooleanExtra(UsbManager.EXTRA_PERMISSION_GRANTED, false));
75 }
76 }
77 };
78
79 private final BroadcastReceiver mBluetoothBroadcast = new BroadcastReceiver() {
80 @Override
81 public void onReceive(Context context, Intent intent) {
82 String action = intent.getAction();
83 // Bluetooth device was connected. If it was a Steam Controller, handle it
84 if (action.equals(BluetoothDevice.ACTION_ACL_CONNECTED)) {
85 BluetoothDevice device = intent.getParcelableExtra(BluetoothDevice.EXTRA_DEVICE);
86 Log.d(TAG, "Bluetooth device connected: " + device);
87
88 if (isSteamController(device)) {
89 connectBluetoothDevice(device);
90 }
91 }
92
93 // Bluetooth device was disconnected, remove from controller manager (if any)
94 if (action.equals(BluetoothDevice.ACTION_ACL_DISCONNECTED)) {
95 BluetoothDevice device = intent.getParcelableExtra(BluetoothDevice.EXTRA_DEVICE);
96 Log.d(TAG, "Bluetooth device disconnected: " + device);
97
98 disconnectBluetoothDevice(device);
99 }
100 }
101 };
102
103 private HIDDeviceManager(final Context context) {
104 mContext = context;
105
106 // Make sure we have the HIDAPI library loaded with the native functions
107 try {
108 SDL.loadLibrary("hidapi");
109 } catch (Throwable e) {
110 Log.w(TAG, "Couldn't load hidapi: " + e.toString());
111
112 AlertDialog.Builder builder = new AlertDialog.Builder(context);
113 builder.setCancelable(false);
114 builder.setTitle("SDL HIDAPI Error");
115 builder.setMessage("Please report the following error to the SDL maintainers: " + e.getMessage());
116 builder.setNegativeButton("Quit", new DialogInterface.OnClickListener() {
117 @Override
118 public void onClick(DialogInterface dialog, int which) {
119 try {
120 // If our context is an activity, exit rather than crashing when we can't
121 // call our native functions.
122 Activity activity = (Activity)context;
123
124 activity.finish();
125 }
126 catch (ClassCastException cce) {
127 // Context wasn't an activity, there's nothing we can do. Give up and return.
128 }
129 }
130 });
131 builder.show();
132
133 return;
134 }
135
136 HIDDeviceRegisterCallback();
137
138 mSharedPreferences = mContext.getSharedPreferences("hidapi", Context.MODE_PRIVATE);
139 mIsChromebook = mContext.getPackageManager().hasSystemFeature("org.chromium.arc.device_management");
140
141 // if (shouldClear) {
142 // SharedPreferences.Editor spedit = mSharedPreferences.edit();
143 // spedit.clear();
144 // spedit.commit();
145 // }
146 // else
147 {
148 mNextDeviceId = mSharedPreferences.getInt("next_device_id", 0);
149 }
150
151 initializeUSB();
152 initializeBluetooth();
153 }
154
155 public Context getContext() {
156 return mContext;
157 }
158
159 public int getDeviceIDForIdentifier(String identifier) {
160 SharedPreferences.Editor spedit = mSharedPreferences.edit();
161
162 int result = mSharedPreferences.getInt(identifier, 0);
163 if (result == 0) {
164 result = mNextDeviceId++;
165 spedit.putInt("next_device_id", mNextDeviceId);
166 }
167
168 spedit.putInt(identifier, result);
169 spedit.commit();
170 return result;
171 }
172
173 private void initializeUSB() {
174 mUsbManager = (UsbManager)mContext.getSystemService(Context.USB_SERVICE);
175
176 /*
177 // Logging
178 for (UsbDevice device : mUsbManager.getDeviceList().values()) {
179 Log.i(TAG,"Path: " + device.getDeviceName());
180 Log.i(TAG,"Manufacturer: " + device.getManufacturerName());
181 Log.i(TAG,"Product: " + device.getProductName());
182 Log.i(TAG,"ID: " + device.getDeviceId());
183 Log.i(TAG,"Class: " + device.getDeviceClass());
184 Log.i(TAG,"Protocol: " + device.getDeviceProtocol());
185 Log.i(TAG,"Vendor ID " + device.getVendorId());
186 Log.i(TAG,"Product ID: " + device.getProductId());
187 Log.i(TAG,"Interface count: " + device.getInterfaceCount());
188 Log.i(TAG,"---------------------------------------");
189
190 // Get interface details
191 for (int index = 0; index < device.getInterfaceCount(); index++) {
192 UsbInterface mUsbInterface = device.getInterface(index);
193 Log.i(TAG," ***** *****");
194 Log.i(TAG," Interface index: " + index);
195 Log.i(TAG," Interface ID: " + mUsbInterface.getId());
196 Log.i(TAG," Interface class: " + mUsbInterface.getInterfaceClass());
197 Log.i(TAG," Interface subclass: " + mUsbInterface.getInterfaceSubclass());
198 Log.i(TAG," Interface protocol: " + mUsbInterface.getInterfaceProtocol());
199 Log.i(TAG," Endpoint count: " + mUsbInterface.getEndpointCount());
200
201 // Get endpoint details
202 for (int epi = 0; epi < mUsbInterface.getEndpointCount(); epi++)
203 {
204 UsbEndpoint mEndpoint = mUsbInterface.getEndpoint(epi);
205 Log.i(TAG," ++++ ++++ ++++");
206 Log.i(TAG," Endpoint index: " + epi);
207 Log.i(TAG," Attributes: " + mEndpoint.getAttributes());
208 Log.i(TAG," Direction: " + mEndpoint.getDirection());
209 Log.i(TAG," Number: " + mEndpoint.getEndpointNumber());
210 Log.i(TAG," Interval: " + mEndpoint.getInterval());
211 Log.i(TAG," Packet size: " + mEndpoint.getMaxPacketSize());
212 Log.i(TAG," Type: " + mEndpoint.getType());
213 }
214 }
215 }
216 Log.i(TAG," No more devices connected.");
217 */
218
219 // Register for USB broadcasts and permission completions
220 IntentFilter filter = new IntentFilter();
221 filter.addAction(UsbManager.ACTION_USB_DEVICE_ATTACHED);
222 filter.addAction(UsbManager.ACTION_USB_DEVICE_DETACHED);
223 filter.addAction(HIDDeviceManager.ACTION_USB_PERMISSION);
224 mContext.registerReceiver(mUsbBroadcast, filter);
225
226 for (UsbDevice usbDevice : mUsbManager.getDeviceList().values()) {
227 handleUsbDeviceAttached(usbDevice);
228 }
229 }
230
231 UsbManager getUSBManager() {
232 return mUsbManager;
233 }
234
235 private void shutdownUSB() {
236 try {
237 mContext.unregisterReceiver(mUsbBroadcast);
238 } catch (Exception e) {
239 // We may not have registered, that's okay
240 }
241 }
242
243 private boolean isHIDDeviceInterface(UsbDevice usbDevice, UsbInterface usbInterface) {
244 if (usbInterface.getInterfaceClass() == UsbConstants.USB_CLASS_HID) {
245 return true;
246 }
247 if (isXbox360Controller(usbDevice, usbInterface) || isXboxOneController(usbDevice, usbInterface)) {
248 return true;
249 }
250 return false;
251 }
252
253 private boolean isXbox360Controller(UsbDevice usbDevice, UsbInterface usbInterface) {
254 final int XB360_IFACE_SUBCLASS = 93;
255 final int XB360_IFACE_PROTOCOL = 1; // Wired
256 final int XB360W_IFACE_PROTOCOL = 129; // Wireless
257 final int[] SUPPORTED_VENDORS = {
258 0x0079, // GPD Win 2
259 0x044f, // Thrustmaster
260 0x045e, // Microsoft
261 0x046d, // Logitech
262 0x056e, // Elecom
263 0x06a3, // Saitek
264 0x0738, // Mad Catz
265 0x07ff, // Mad Catz
266 0x0e6f, // PDP
267 0x0f0d, // Hori
268 0x1038, // SteelSeries
269 0x11c9, // Nacon
270 0x12ab, // Unknown
271 0x1430, // RedOctane
272 0x146b, // BigBen
273 0x1532, // Razer Sabertooth
274 0x15e4, // Numark
275 0x162e, // Joytech
276 0x1689, // Razer Onza
277 0x1bad, // Harmonix
278 0x24c6, // PowerA
279 };
280
281 if (usbInterface.getInterfaceClass() == UsbConstants.USB_CLASS_VENDOR_SPEC &&
282 usbInterface.getInterfaceSubclass() == XB360_IFACE_SUBCLASS &&
283 (usbInterface.getInterfaceProtocol() == XB360_IFACE_PROTOCOL ||
284 usbInterface.getInterfaceProtocol() == XB360W_IFACE_PROTOCOL)) {
285 int vendor_id = usbDevice.getVendorId();
286 for (int supportedVid : SUPPORTED_VENDORS) {
287 if (vendor_id == supportedVid) {
288 return true;
289 }
290 }
291 }
292 return false;
293 }
294
295 private boolean isXboxOneController(UsbDevice usbDevice, UsbInterface usbInterface) {
296 final int XB1_IFACE_SUBCLASS = 71;
297 final int XB1_IFACE_PROTOCOL = 208;
298 final int[] SUPPORTED_VENDORS = {
299 0x045e, // Microsoft
300 0x0738, // Mad Catz
301 0x0e6f, // PDP
302 0x0f0d, // Hori
303 0x1532, // Razer Wildcat
304 0x24c6, // PowerA
305 0x2e24, // Hyperkin
306 };
307
308 if (usbInterface.getId() == 0 &&
309 usbInterface.getInterfaceClass() == UsbConstants.USB_CLASS_VENDOR_SPEC &&
310 usbInterface.getInterfaceSubclass() == XB1_IFACE_SUBCLASS &&
311 usbInterface.getInterfaceProtocol() == XB1_IFACE_PROTOCOL) {
312 int vendor_id = usbDevice.getVendorId();
313 for (int supportedVid : SUPPORTED_VENDORS) {
314 if (vendor_id == supportedVid) {
315 return true;
316 }
317 }
318 }
319 return false;
320 }
321
322 private void handleUsbDeviceAttached(UsbDevice usbDevice) {
323 connectHIDDeviceUSB(usbDevice);
324 }
325
326 private void handleUsbDeviceDetached(UsbDevice usbDevice) {
327 List<Integer> devices = new ArrayList<Integer>();
328 for (HIDDevice device : mDevicesById.values()) {
329 if (usbDevice.equals(device.getDevice())) {
330 devices.add(device.getId());
331 }
332 }
333 for (int id : devices) {
334 HIDDevice device = mDevicesById.get(id);
335 mDevicesById.remove(id);
336 device.shutdown();
337 HIDDeviceDisconnected(id);
338 }
339 }
340
341 private void handleUsbDevicePermission(UsbDevice usbDevice, boolean permission_granted) {
342 for (HIDDevice device : mDevicesById.values()) {
343 if (usbDevice.equals(device.getDevice())) {
344 boolean opened = false;
345 if (permission_granted) {
346 opened = device.open();
347 }
348 HIDDeviceOpenResult(device.getId(), opened);
349 }
350 }
351 }
352
353 private void connectHIDDeviceUSB(UsbDevice usbDevice) {
354 synchronized (this) {
355 for (int interface_index = 0; interface_index < usbDevice.getInterfaceCount(); interface_index++) {
356 UsbInterface usbInterface = usbDevice.getInterface(interface_index);
357 if (isHIDDeviceInterface(usbDevice, usbInterface)) {
358 HIDDeviceUSB device = new HIDDeviceUSB(this, usbDevice, interface_index);
359 int id = device.getId();
360 mDevicesById.put(id, device);
361 HIDDeviceConnected(id, device.getIdentifier(), device.getVendorId(), device.getProductId(), device.getSerialNumber(), device.getVersion(), device.getManufacturerName(), device.getProductName(), usbInterface.getId(), usbInterface.getInterfaceClass(), usbInterface.getInterfaceSubclass(), usbInterface.getInterfaceProtocol());
362 }
363 }
364 }
365 }
366
367 private void initializeBluetooth() {
368 Log.d(TAG, "Initializing Bluetooth");
369
370 if (mContext.getPackageManager().checkPermission(android.Manifest.permission.BLUETOOTH, mContext.getPackageName()) != PackageManager.PERMISSION_GRANTED) {
371 Log.d(TAG, "Couldn't initialize Bluetooth, missing android.permission.BLUETOOTH");
372 return;
373 }
374
375 // Find bonded bluetooth controllers and create SteamControllers for them
376 mBluetoothManager = (BluetoothManager)mContext.getSystemService(Context.BLUETOOTH_SERVICE);
377 if (mBluetoothManager == null) {
378 // This device doesn't support Bluetooth.
379 return;
380 }
381
382 BluetoothAdapter btAdapter = mBluetoothManager.getAdapter();
383 if (btAdapter == null) {
384 // This device has Bluetooth support in the codebase, but has no available adapters.
385 return;
386 }
387
388 // Get our bonded devices.
389 for (BluetoothDevice device : btAdapter.getBondedDevices()) {
390
391 Log.d(TAG, "Bluetooth device available: " + device);
392 if (isSteamController(device)) {
393 connectBluetoothDevice(device);
394 }
395
396 }
397
398 // NOTE: These don't work on Chromebooks, to my undying dismay.
399 IntentFilter filter = new IntentFilter();
400 filter.addAction(BluetoothDevice.ACTION_ACL_CONNECTED);
401 filter.addAction(BluetoothDevice.ACTION_ACL_DISCONNECTED);
402 mContext.registerReceiver(mBluetoothBroadcast, filter);
403
404 if (mIsChromebook) {
405 mHandler = new Handler(Looper.getMainLooper());
406 mLastBluetoothDevices = new ArrayList<BluetoothDevice>();
407
408 // final HIDDeviceManager finalThis = this;
409 // mHandler.postDelayed(new Runnable() {
410 // @Override
411 // public void run() {
412 // finalThis.chromebookConnectionHandler();
413 // }
414 // }, 5000);
415 }
416 }
417
418 private void shutdownBluetooth() {
419 try {
420 mContext.unregisterReceiver(mBluetoothBroadcast);
421 } catch (Exception e) {
422 // We may not have registered, that's okay
423 }
424 }
425
426 // Chromebooks do not pass along ACTION_ACL_CONNECTED / ACTION_ACL_DISCONNECTED properly.
427 // This function provides a sort of dummy version of that, watching for changes in the
428 // connected devices and attempting to add controllers as things change.
429 public void chromebookConnectionHandler() {
430 if (!mIsChromebook) {
431 return;
432 }
433
434 ArrayList<BluetoothDevice> disconnected = new ArrayList<BluetoothDevice>();
435 ArrayList<BluetoothDevice> connected = new ArrayList<BluetoothDevice>();
436
437 List<BluetoothDevice> currentConnected = mBluetoothManager.getConnectedDevices(BluetoothProfile.GATT);
438
439 for (BluetoothDevice bluetoothDevice : currentConnected) {
440 if (!mLastBluetoothDevices.contains(bluetoothDevice)) {
441 connected.add(bluetoothDevice);
442 }
443 }
444 for (BluetoothDevice bluetoothDevice : mLastBluetoothDevices) {
445 if (!currentConnected.contains(bluetoothDevice)) {
446 disconnected.add(bluetoothDevice);
447 }
448 }
449
450 mLastBluetoothDevices = currentConnected;
451
452 for (BluetoothDevice bluetoothDevice : disconnected) {
453 disconnectBluetoothDevice(bluetoothDevice);
454 }
455 for (BluetoothDevice bluetoothDevice : connected) {
456 connectBluetoothDevice(bluetoothDevice);
457 }
458
459 final HIDDeviceManager finalThis = this;
460 mHandler.postDelayed(new Runnable() {
461 @Override
462 public void run() {
463 finalThis.chromebookConnectionHandler();
464 }
465 }, 10000);
466 }
467
468 public boolean connectBluetoothDevice(BluetoothDevice bluetoothDevice) {
469 Log.v(TAG, "connectBluetoothDevice device=" + bluetoothDevice);
470 synchronized (this) {
471 if (mBluetoothDevices.containsKey(bluetoothDevice)) {
472 Log.v(TAG, "Steam controller with address " + bluetoothDevice + " already exists, attempting reconnect");
473
474 HIDDeviceBLESteamController device = mBluetoothDevices.get(bluetoothDevice);
475 device.reconnect();
476
477 return false;
478 }
479 HIDDeviceBLESteamController device = new HIDDeviceBLESteamController(this, bluetoothDevice);
480 int id = device.getId();
481 mBluetoothDevices.put(bluetoothDevice, device);
482 mDevicesById.put(id, device);
483
484 // The Steam Controller will mark itself connected once initialization is complete
485 }
486 return true;
487 }
488
489 public void disconnectBluetoothDevice(BluetoothDevice bluetoothDevice) {
490 synchronized (this) {
491 HIDDeviceBLESteamController device = mBluetoothDevices.get(bluetoothDevice);
492 if (device == null)
493 return;
494
495 int id = device.getId();
496 mBluetoothDevices.remove(bluetoothDevice);
497 mDevicesById.remove(id);
498 device.shutdown();
499 HIDDeviceDisconnected(id);
500 }
501 }
502
503 public boolean isSteamController(BluetoothDevice bluetoothDevice) {
504 // Sanity check. If you pass in a null device, by definition it is never a Steam Controller.
505 if (bluetoothDevice == null) {
506 return false;
507 }
508
509 // If the device has no local name, we really don't want to try an equality check against it.
510 if (bluetoothDevice.getName() == null) {
511 return false;
512 }
513
514 return bluetoothDevice.getName().equals("SteamController") && ((bluetoothDevice.getType() & BluetoothDevice.DEVICE_TYPE_LE) != 0);
515 }
516
517 private void close() {
518 shutdownUSB();
519 shutdownBluetooth();
520 synchronized (this) {
521 for (HIDDevice device : mDevicesById.values()) {
522 device.shutdown();
523 }
524 mDevicesById.clear();
525 mBluetoothDevices.clear();
526 HIDDeviceReleaseCallback();
527 }
528 }
529
530 public void setFrozen(boolean frozen) {
531 synchronized (this) {
532 for (HIDDevice device : mDevicesById.values()) {
533 device.setFrozen(frozen);
534 }
535 }
536 }
537
538 //////////////////////////////////////////////////////////////////////////////////////////////////////
539 //////////////////////////////////////////////////////////////////////////////////////////////////////
540 //////////////////////////////////////////////////////////////////////////////////////////////////////
541
542 private HIDDevice getDevice(int id) {
543 synchronized (this) {
544 HIDDevice result = mDevicesById.get(id);
545 if (result == null) {
546 Log.v(TAG, "No device for id: " + id);
547 Log.v(TAG, "Available devices: " + mDevicesById.keySet());
548 }
549 return result;
550 }
551 }
552
553 //////////////////////////////////////////////////////////////////////////////////////////////////////
554 ////////// JNI interface functions
555 //////////////////////////////////////////////////////////////////////////////////////////////////////
556
557 public boolean openDevice(int deviceID) {
558 Log.v(TAG, "openDevice deviceID=" + deviceID);
559 HIDDevice device = getDevice(deviceID);
560 if (device == null) {
561 HIDDeviceDisconnected(deviceID);
562 return false;
563 }
564
565 // Look to see if this is a USB device and we have permission to access it
566 UsbDevice usbDevice = device.getDevice();
567 if (usbDevice != null && !mUsbManager.hasPermission(usbDevice)) {
568 HIDDeviceOpenPending(deviceID);
569 try {
570 mUsbManager.requestPermission(usbDevice, PendingIntent.getBroadcast(mContext, 0, new Intent(HIDDeviceManager.ACTION_USB_PERMISSION), 0));
571 } catch (Exception e) {
572 Log.v(TAG, "Couldn't request permission for USB device " + usbDevice);
573 HIDDeviceOpenResult(deviceID, false);
574 }
575 return false;
576 }
577
578 try {
579 return device.open();
580 } catch (Exception e) {
581 Log.e(TAG, "Got exception: " + Log.getStackTraceString(e));
582 }
583 return false;
584 }
585
586 public int sendOutputReport(int deviceID, byte[] report) {
587 try {
588 //Log.v(TAG, "sendOutputReport deviceID=" + deviceID + " length=" + report.length);
589 HIDDevice device;
590 device = getDevice(deviceID);
591 if (device == null) {
592 HIDDeviceDisconnected(deviceID);
593 return -1;
594 }
595
596 return device.sendOutputReport(report);
597 } catch (Exception e) {
598 Log.e(TAG, "Got exception: " + Log.getStackTraceString(e));
599 }
600 return -1;
601 }
602
603 public int sendFeatureReport(int deviceID, byte[] report) {
604 try {
605 //Log.v(TAG, "sendFeatureReport deviceID=" + deviceID + " length=" + report.length);
606 HIDDevice device;
607 device = getDevice(deviceID);
608 if (device == null) {
609 HIDDeviceDisconnected(deviceID);
610 return -1;
611 }
612
613 return device.sendFeatureReport(report);
614 } catch (Exception e) {
615 Log.e(TAG, "Got exception: " + Log.getStackTraceString(e));
616 }
617 return -1;
618 }
619
620 public boolean getFeatureReport(int deviceID, byte[] report) {
621 try {
622 //Log.v(TAG, "getFeatureReport deviceID=" + deviceID);
623 HIDDevice device;
624 device = getDevice(deviceID);
625 if (device == null) {
626 HIDDeviceDisconnected(deviceID);
627 return false;
628 }
629
630 return device.getFeatureReport(report);
631 } catch (Exception e) {
632 Log.e(TAG, "Got exception: " + Log.getStackTraceString(e));
633 }
634 return false;
635 }
636
637 public void closeDevice(int deviceID) {
638 try {
639 Log.v(TAG, "closeDevice deviceID=" + deviceID);
640 HIDDevice device;
641 device = getDevice(deviceID);
642 if (device == null) {
643 HIDDeviceDisconnected(deviceID);
644 return;
645 }
646
647 device.close();
648 } catch (Exception e) {
649 Log.e(TAG, "Got exception: " + Log.getStackTraceString(e));
650 }
651 }
652
653
654 //////////////////////////////////////////////////////////////////////////////////////////////////////
655 /////////////// Native methods
656 //////////////////////////////////////////////////////////////////////////////////////////////////////
657
658 private native void HIDDeviceRegisterCallback();
659 private native void HIDDeviceReleaseCallback();
660
661 native void HIDDeviceConnected(int deviceID, String identifier, int vendorId, int productId, String serial_number, int release_number, String manufacturer_string, String product_string, int interface_number, int interface_class, int interface_subclass, int interface_protocol);
662 native void HIDDeviceOpenPending(int deviceID);
663 native void HIDDeviceOpenResult(int deviceID, boolean opened);
664 native void HIDDeviceDisconnected(int deviceID);
665
666 native void HIDDeviceInputReport(int deviceID, byte[] report);
667 native void HIDDeviceFeatureReport(int deviceID, byte[] report);
668 }
0 package org.libsdl.app;
1
2 import android.hardware.usb.*;
3 import android.os.Build;
4 import android.util.Log;
5 import java.util.Arrays;
6
7 class HIDDeviceUSB implements HIDDevice {
8
9 private static final String TAG = "hidapi";
10
11 protected HIDDeviceManager mManager;
12 protected UsbDevice mDevice;
13 protected int mInterfaceIndex;
14 protected int mInterface;
15 protected int mDeviceId;
16 protected UsbDeviceConnection mConnection;
17 protected UsbEndpoint mInputEndpoint;
18 protected UsbEndpoint mOutputEndpoint;
19 protected InputThread mInputThread;
20 protected boolean mRunning;
21 protected boolean mFrozen;
22
23 public HIDDeviceUSB(HIDDeviceManager manager, UsbDevice usbDevice, int interface_index) {
24 mManager = manager;
25 mDevice = usbDevice;
26 mInterfaceIndex = interface_index;
27 mInterface = mDevice.getInterface(mInterfaceIndex).getId();
28 mDeviceId = manager.getDeviceIDForIdentifier(getIdentifier());
29 mRunning = false;
30 }
31
32 public String getIdentifier() {
33 return String.format("%s/%x/%x/%d", mDevice.getDeviceName(), mDevice.getVendorId(), mDevice.getProductId(), mInterfaceIndex);
34 }
35
36 @Override
37 public int getId() {
38 return mDeviceId;
39 }
40
41 @Override
42 public int getVendorId() {
43 return mDevice.getVendorId();
44 }
45
46 @Override
47 public int getProductId() {
48 return mDevice.getProductId();
49 }
50
51 @Override
52 public String getSerialNumber() {
53 String result = null;
54 if (Build.VERSION.SDK_INT >= 21) {
55 try {
56 result = mDevice.getSerialNumber();
57 }
58 catch (SecurityException exception) {
59 //Log.w(TAG, "App permissions mean we cannot get serial number for device " + getDeviceName() + " message: " + exception.getMessage());
60 }
61 }
62 if (result == null) {
63 result = "";
64 }
65 return result;
66 }
67
68 @Override
69 public int getVersion() {
70 return 0;
71 }
72
73 @Override
74 public String getManufacturerName() {
75 String result = null;
76 if (Build.VERSION.SDK_INT >= 21) {
77 result = mDevice.getManufacturerName();
78 }
79 if (result == null) {
80 result = String.format("%x", getVendorId());
81 }
82 return result;
83 }
84
85 @Override
86 public String getProductName() {
87 String result = null;
88 if (Build.VERSION.SDK_INT >= 21) {
89 result = mDevice.getProductName();
90 }
91 if (result == null) {
92 result = String.format("%x", getProductId());
93 }
94 return result;
95 }
96
97 @Override
98 public UsbDevice getDevice() {
99 return mDevice;
100 }
101
102 public String getDeviceName() {
103 return getManufacturerName() + " " + getProductName() + "(0x" + String.format("%x", getVendorId()) + "/0x" + String.format("%x", getProductId()) + ")";
104 }
105
106 @Override
107 public boolean open() {
108 mConnection = mManager.getUSBManager().openDevice(mDevice);
109 if (mConnection == null) {
110 Log.w(TAG, "Unable to open USB device " + getDeviceName());
111 return false;
112 }
113
114 // Force claim our interface
115 UsbInterface iface = mDevice.getInterface(mInterfaceIndex);
116 if (!mConnection.claimInterface(iface, true)) {
117 Log.w(TAG, "Failed to claim interfaces on USB device " + getDeviceName());
118 close();
119 return false;
120 }
121
122 // Find the endpoints
123 for (int j = 0; j < iface.getEndpointCount(); j++) {
124 UsbEndpoint endpt = iface.getEndpoint(j);
125 switch (endpt.getDirection()) {
126 case UsbConstants.USB_DIR_IN:
127 if (mInputEndpoint == null) {
128 mInputEndpoint = endpt;
129 }
130 break;
131 case UsbConstants.USB_DIR_OUT:
132 if (mOutputEndpoint == null) {
133 mOutputEndpoint = endpt;
134 }
135 break;
136 }
137 }
138
139 // Make sure the required endpoints were present
140 if (mInputEndpoint == null || mOutputEndpoint == null) {
141 Log.w(TAG, "Missing required endpoint on USB device " + getDeviceName());
142 close();
143 return false;
144 }
145
146 // Start listening for input
147 mRunning = true;
148 mInputThread = new InputThread();
149 mInputThread.start();
150
151 return true;
152 }
153
154 @Override
155 public int sendFeatureReport(byte[] report) {
156 int res = -1;
157 int offset = 0;
158 int length = report.length;
159 boolean skipped_report_id = false;
160 byte report_number = report[0];
161
162 if (report_number == 0x0) {
163 ++offset;
164 --length;
165 skipped_report_id = true;
166 }
167
168 res = mConnection.controlTransfer(
169 UsbConstants.USB_TYPE_CLASS | 0x01 /*RECIPIENT_INTERFACE*/ | UsbConstants.USB_DIR_OUT,
170 0x09/*HID set_report*/,
171 (3/*HID feature*/ << 8) | report_number,
172 mInterface,
173 report, offset, length,
174 1000/*timeout millis*/);
175
176 if (res < 0) {
177 Log.w(TAG, "sendFeatureReport() returned " + res + " on device " + getDeviceName());
178 return -1;
179 }
180
181 if (skipped_report_id) {
182 ++length;
183 }
184 return length;
185 }
186
187 @Override
188 public int sendOutputReport(byte[] report) {
189 int r = mConnection.bulkTransfer(mOutputEndpoint, report, report.length, 1000);
190 if (r != report.length) {
191 Log.w(TAG, "sendOutputReport() returned " + r + " on device " + getDeviceName());
192 }
193 return r;
194 }
195
196 @Override
197 public boolean getFeatureReport(byte[] report) {
198 int res = -1;
199 int offset = 0;
200 int length = report.length;
201 boolean skipped_report_id = false;
202 byte report_number = report[0];
203
204 if (report_number == 0x0) {
205 /* Offset the return buffer by 1, so that the report ID
206 will remain in byte 0. */
207 ++offset;
208 --length;
209 skipped_report_id = true;
210 }
211
212 res = mConnection.controlTransfer(
213 UsbConstants.USB_TYPE_CLASS | 0x01 /*RECIPIENT_INTERFACE*/ | UsbConstants.USB_DIR_IN,
214 0x01/*HID get_report*/,
215 (3/*HID feature*/ << 8) | report_number,
216 mInterface,
217 report, offset, length,
218 1000/*timeout millis*/);
219
220 if (res < 0) {
221 Log.w(TAG, "getFeatureReport() returned " + res + " on device " + getDeviceName());
222 return false;
223 }
224
225 if (skipped_report_id) {
226 ++res;
227 ++length;
228 }
229
230 byte[] data;
231 if (res == length) {
232 data = report;
233 } else {
234 data = Arrays.copyOfRange(report, 0, res);
235 }
236 mManager.HIDDeviceFeatureReport(mDeviceId, data);
237
238 return true;
239 }
240
241 @Override
242 public void close() {
243 mRunning = false;
244 if (mInputThread != null) {
245 while (mInputThread.isAlive()) {
246 mInputThread.interrupt();
247 try {
248 mInputThread.join();
249 } catch (InterruptedException e) {
250 // Keep trying until we're done
251 }
252 }
253 mInputThread = null;
254 }
255 if (mConnection != null) {
256 UsbInterface iface = mDevice.getInterface(mInterfaceIndex);
257 mConnection.releaseInterface(iface);
258 mConnection.close();
259 mConnection = null;
260 }
261 }
262
263 @Override
264 public void shutdown() {
265 close();
266 mManager = null;
267 }
268
269 @Override
270 public void setFrozen(boolean frozen) {
271 mFrozen = frozen;
272 }
273
274 protected class InputThread extends Thread {
275 @Override
276 public void run() {
277 int packetSize = mInputEndpoint.getMaxPacketSize();
278 byte[] packet = new byte[packetSize];
279 while (mRunning) {
280 int r;
281 try
282 {
283 r = mConnection.bulkTransfer(mInputEndpoint, packet, packetSize, 1000);
284 }
285 catch (Exception e)
286 {
287 Log.v(TAG, "Exception in UsbDeviceConnection bulktransfer: " + e);
288 break;
289 }
290 if (r < 0) {
291 // Could be a timeout or an I/O error
292 }
293 if (r > 0) {
294 byte[] data;
295 if (r == packetSize) {
296 data = packet;
297 } else {
298 data = Arrays.copyOfRange(packet, 0, r);
299 }
300
301 if (!mFrozen) {
302 mManager.HIDDeviceInputReport(mDeviceId, data);
303 }
304 }
305 }
306 }
307 }
308 }
00 package org.libsdl.app;
11
22 import android.content.Context;
3
4 import java.lang.reflect.*;
35
46 /**
57 SDL library initialization
3234 return mContext;
3335 }
3436
37 public static void loadLibrary(String libraryName) throws UnsatisfiedLinkError, SecurityException, NullPointerException {
38
39 if (libraryName == null) {
40 throw new NullPointerException("No library name provided.");
41 }
42
43 try {
44 // Let's see if we have ReLinker available in the project. This is necessary for
45 // some projects that have huge numbers of local libraries bundled, and thus may
46 // trip a bug in Android's native library loader which ReLinker works around. (If
47 // loadLibrary works properly, ReLinker will simply use the normal Android method
48 // internally.)
49 //
50 // To use ReLinker, just add it as a dependency. For more information, see
51 // https://github.com/KeepSafe/ReLinker for ReLinker's repository.
52 //
53 Class relinkClass = mContext.getClassLoader().loadClass("com.getkeepsafe.relinker.ReLinker");
54 Class relinkListenerClass = mContext.getClassLoader().loadClass("com.getkeepsafe.relinker.ReLinker$LoadListener");
55 Class contextClass = mContext.getClassLoader().loadClass("android.content.Context");
56 Class stringClass = mContext.getClassLoader().loadClass("java.lang.String");
57
58 // Get a 'force' instance of the ReLinker, so we can ensure libraries are reinstalled if
59 // they've changed during updates.
60 Method forceMethod = relinkClass.getDeclaredMethod("force");
61 Object relinkInstance = forceMethod.invoke(null);
62 Class relinkInstanceClass = relinkInstance.getClass();
63
64 // Actually load the library!
65 Method loadMethod = relinkInstanceClass.getDeclaredMethod("loadLibrary", contextClass, stringClass, stringClass, relinkListenerClass);
66 loadMethod.invoke(relinkInstance, mContext, libraryName, null, null);
67 }
68 catch (final Throwable e) {
69 // Fall back
70 try {
71 System.loadLibrary(libraryName);
72 }
73 catch (final UnsatisfiedLinkError ule) {
74 throw ule;
75 }
76 catch (final SecurityException se) {
77 throw se;
78 }
79 }
80 }
81
3582 protected static Context mContext;
3683 }
33 import java.io.InputStream;
44 import java.util.Arrays;
55 import java.util.Hashtable;
6 import java.util.Locale;
67 import java.lang.reflect.Method;
8 import java.lang.Math;
79
810 import android.app.*;
911 import android.content.*;
3234 /**
3335 SDL Activity
3436 */
35 public class SDLActivity extends Activity {
37 public class SDLActivity extends Activity implements View.OnSystemUiVisibilityChangeListener {
3638 private static final String TAG = "SDL";
3739
38 public static boolean mIsResumedCalled, mIsSurfaceReady, mHasFocus;
40 public static boolean mIsResumedCalled, mHasFocus;
41 public static final boolean mHasMultiWindow = (Build.VERSION.SDK_INT >= 24);
3942
4043 // Cursor types
4144 private static final int SDL_SYSTEM_CURSOR_NONE = -1;
5255 private static final int SDL_SYSTEM_CURSOR_NO = 10;
5356 private static final int SDL_SYSTEM_CURSOR_HAND = 11;
5457
58 protected static final int SDL_ORIENTATION_UNKNOWN = 0;
59 protected static final int SDL_ORIENTATION_LANDSCAPE = 1;
60 protected static final int SDL_ORIENTATION_LANDSCAPE_FLIPPED = 2;
61 protected static final int SDL_ORIENTATION_PORTRAIT = 3;
62 protected static final int SDL_ORIENTATION_PORTRAIT_FLIPPED = 4;
63
64 protected static int mCurrentOrientation;
65 protected static Locale mCurrentLocale;
66
5567 // Handle the state of the native layer
5668 public enum NativeState {
5769 INIT, RESUMED, PAUSED
6072 public static NativeState mNextNativeState;
6173 public static NativeState mCurrentNativeState;
6274
63 public static boolean mExitCalledFromJava;
64
6575 /** If shared libraries (e.g. SDL or the native application) could not be loaded. */
6676 public static boolean mBrokenLibraries;
67
68 // If we want to separate mouse and touch events.
69 // This is only toggled in native code when a hint is set!
70 public static boolean mSeparateMouseAndTouch;
7177
7278 // Main components
7379 protected static SDLActivity mSingleton;
7682 protected static boolean mScreenKeyboardShown;
7783 protected static ViewGroup mLayout;
7884 protected static SDLClipboardHandler mClipboardHandler;
79 protected static Hashtable<Integer, Object> mCursors;
85 protected static Hashtable<Integer, PointerIcon> mCursors;
8086 protected static int mLastCursorID;
81
87 protected static SDLGenericMotionListener_API12 mMotionListener;
88 protected static HIDDeviceManager mHIDDeviceManager;
8289
8390 // This is what SDL runs in. It invokes SDL_main(), eventually
8491 protected static Thread mSDLThread;
92
93 protected static SDLGenericMotionListener_API12 getMotionListener() {
94 if (mMotionListener == null) {
95 if (Build.VERSION.SDK_INT >= 26) {
96 mMotionListener = new SDLGenericMotionListener_API26();
97 } else
98 if (Build.VERSION.SDK_INT >= 24) {
99 mMotionListener = new SDLGenericMotionListener_API24();
100 } else {
101 mMotionListener = new SDLGenericMotionListener_API12();
102 }
103 }
104
105 return mMotionListener;
106 }
85107
86108 /**
87109 * This method returns the name of the shared object with the application entry point
95117 } else {
96118 library = "libmain.so";
97119 }
98 return library;
120 return getContext().getApplicationInfo().nativeLibraryDir + "/" + library;
99121 }
100122
101123 /**
116138 */
117139 protected String[] getLibraries() {
118140 return new String[] {
141 "hidapi",
119142 "SDL2",
120 // "SDL2_image",
121 // "SDL2_mixer",
143 "SDL2_image",
144 "mpg123", // needed by SDL2_mixer
145 "SDL2_mixer",
122146 // "SDL2_net",
123 // "SDL2_ttf",
147 "SDL2_ttf",
124148 "main"
125149 };
126150 }
128152 // Load the .so
129153 public void loadLibraries() {
130154 for (String lib : getLibraries()) {
131 System.loadLibrary(lib);
155 SDL.loadLibrary(lib);
132156 }
133157 }
134158
150174 mTextEdit = null;
151175 mLayout = null;
152176 mClipboardHandler = null;
153 mCursors = new Hashtable<Integer, Object>();
177 mCursors = new Hashtable<Integer, PointerIcon>();
154178 mLastCursorID = 0;
155179 mSDLThread = null;
156 mExitCalledFromJava = false;
157180 mBrokenLibraries = false;
158181 mIsResumedCalled = false;
159 mIsSurfaceReady = false;
160182 mHasFocus = true;
161183 mNextNativeState = NativeState.INIT;
162184 mCurrentNativeState = NativeState.INIT;
165187 // Setup
166188 @Override
167189 protected void onCreate(Bundle savedInstanceState) {
168 Log.v(TAG, "Device: " + android.os.Build.DEVICE);
169 Log.v(TAG, "Model: " + android.os.Build.MODEL);
190 Log.v(TAG, "Device: " + Build.DEVICE);
191 Log.v(TAG, "Model: " + Build.MODEL);
170192 Log.v(TAG, "onCreate()");
171193 super.onCreate(savedInstanceState);
194
195 try {
196 Thread.currentThread().setName("SDLActivity");
197 } catch (Exception e) {
198 Log.v(TAG, "modify thread properties failed " + e.toString());
199 }
172200
173201 // Load shared libraries
174202 String errorMsgBrokenLib = "";
217245 mSingleton = this;
218246 SDL.setContext(this);
219247
220 if (Build.VERSION.SDK_INT >= 11) {
221 mClipboardHandler = new SDLClipboardHandler_API11();
222 } else {
223 /* Before API 11, no clipboard notification (eg no SDL_CLIPBOARDUPDATE) */
224 mClipboardHandler = new SDLClipboardHandler_Old();
225 }
248 mClipboardHandler = new SDLClipboardHandler_API11();
249
250 mHIDDeviceManager = HIDDeviceManager.acquire(this);
226251
227252 // Set up the surface
228253 mSurface = new SDLSurface(getApplication());
230255 mLayout = new RelativeLayout(this);
231256 mLayout.addView(mSurface);
232257
258 // Get our current screen orientation and pass it down.
259 mCurrentOrientation = SDLActivity.getCurrentOrientation();
260 // Only record current orientation
261 SDLActivity.onNativeOrientationChanged(mCurrentOrientation);
262
263 try {
264 if (Build.VERSION.SDK_INT < 24) {
265 mCurrentLocale = getContext().getResources().getConfiguration().locale;
266 } else {
267 mCurrentLocale = getContext().getResources().getConfiguration().getLocales().get(0);
268 }
269 } catch(Exception ignored) {
270 }
271
233272 setContentView(mLayout);
234273
235274 setWindowStyle(false);
275
276 getWindow().getDecorView().setOnSystemUiVisibilityChangeListener(this);
236277
237278 // Get filename from "Open with" of another application
238279 Intent intent = getIntent();
245286 }
246287 }
247288
289 protected void pauseNativeThread() {
290 mNextNativeState = NativeState.PAUSED;
291 mIsResumedCalled = false;
292
293 if (SDLActivity.mBrokenLibraries) {
294 return;
295 }
296
297 SDLActivity.handleNativeState();
298 }
299
300 protected void resumeNativeThread() {
301 mNextNativeState = NativeState.RESUMED;
302 mIsResumedCalled = true;
303
304 if (SDLActivity.mBrokenLibraries) {
305 return;
306 }
307
308 SDLActivity.handleNativeState();
309 }
310
248311 // Events
249312 @Override
250313 protected void onPause() {
251314 Log.v(TAG, "onPause()");
252315 super.onPause();
253 mNextNativeState = NativeState.PAUSED;
254 mIsResumedCalled = false;
255
256 if (SDLActivity.mBrokenLibraries) {
257 return;
258 }
259
260 SDLActivity.handleNativeState();
316
317 if (mHIDDeviceManager != null) {
318 mHIDDeviceManager.setFrozen(true);
319 }
320 if (!mHasMultiWindow) {
321 pauseNativeThread();
322 }
261323 }
262324
263325 @Override
264326 protected void onResume() {
265327 Log.v(TAG, "onResume()");
266328 super.onResume();
267 mNextNativeState = NativeState.RESUMED;
268 mIsResumedCalled = true;
269
270 if (SDLActivity.mBrokenLibraries) {
271 return;
272 }
273
274 SDLActivity.handleNativeState();
275 }
276
329
330 if (mHIDDeviceManager != null) {
331 mHIDDeviceManager.setFrozen(false);
332 }
333 if (!mHasMultiWindow) {
334 resumeNativeThread();
335 }
336 }
337
338 @Override
339 protected void onStop() {
340 Log.v(TAG, "onStop()");
341 super.onStop();
342 if (mHasMultiWindow) {
343 pauseNativeThread();
344 }
345 }
346
347 @Override
348 protected void onStart() {
349 Log.v(TAG, "onStart()");
350 super.onStart();
351 if (mHasMultiWindow) {
352 resumeNativeThread();
353 }
354 }
355
356 public static int getCurrentOrientation() {
357 final Context context = SDLActivity.getContext();
358 final Display display = ((WindowManager) context.getSystemService(Context.WINDOW_SERVICE)).getDefaultDisplay();
359
360 int result = SDL_ORIENTATION_UNKNOWN;
361
362 switch (display.getRotation()) {
363 case Surface.ROTATION_0:
364 result = SDL_ORIENTATION_PORTRAIT;
365 break;
366
367 case Surface.ROTATION_90:
368 result = SDL_ORIENTATION_LANDSCAPE;
369 break;
370
371 case Surface.ROTATION_180:
372 result = SDL_ORIENTATION_PORTRAIT_FLIPPED;
373 break;
374
375 case Surface.ROTATION_270:
376 result = SDL_ORIENTATION_LANDSCAPE_FLIPPED;
377 break;
378 }
379
380 return result;
381 }
277382
278383 @Override
279384 public void onWindowFocusChanged(boolean hasFocus) {
284389 return;
285390 }
286391
287 SDLActivity.mHasFocus = hasFocus;
392 mHasFocus = hasFocus;
288393 if (hasFocus) {
289394 mNextNativeState = NativeState.RESUMED;
395 SDLActivity.getMotionListener().reclaimRelativeMouseModeIfNeeded();
396
397 SDLActivity.handleNativeState();
398 nativeFocusChanged(true);
399
290400 } else {
291 mNextNativeState = NativeState.PAUSED;
292 }
293
294 SDLActivity.handleNativeState();
401 nativeFocusChanged(false);
402 if (!mHasMultiWindow) {
403 mNextNativeState = NativeState.PAUSED;
404 SDLActivity.handleNativeState();
405 }
406 }
295407 }
296408
297409 @Override
307419 }
308420
309421 @Override
422 public void onConfigurationChanged(Configuration newConfig) {
423 Log.v(TAG, "onConfigurationChanged()");
424 super.onConfigurationChanged(newConfig);
425
426 if (mCurrentLocale == null || !mCurrentLocale.equals(newConfig.locale)) {
427 mCurrentLocale = newConfig.locale;
428 SDLActivity.onNativeLocaleChanged();
429 }
430 }
431
432 @Override
310433 protected void onDestroy() {
311434 Log.v(TAG, "onDestroy()");
312435
436 if (mHIDDeviceManager != null) {
437 HIDDeviceManager.release(mHIDDeviceManager);
438 mHIDDeviceManager = null;
439 }
440
313441 if (SDLActivity.mBrokenLibraries) {
314442 super.onDestroy();
315 // Reset everything in case the user re opens the app
316 SDLActivity.initialize();
317443 return;
318444 }
319445
320 mNextNativeState = NativeState.PAUSED;
321 SDLActivity.handleNativeState();
322
323 // Send a quit message to the application
324 SDLActivity.mExitCalledFromJava = true;
325 SDLActivity.nativeQuit();
326
327 // Now wait for the SDL thread to quit
328446 if (SDLActivity.mSDLThread != null) {
447
448 // Send Quit event to "SDLThread" thread
449 SDLActivity.nativeSendQuit();
450
451 // Wait for "SDLThread" thread to end
329452 try {
330453 SDLActivity.mSDLThread.join();
331454 } catch(Exception e) {
332 Log.v(TAG, "Problem stopping thread: " + e);
333 }
334 SDLActivity.mSDLThread = null;
335
336 //Log.v(TAG, "Finished waiting for SDL thread");
337 }
455 Log.v(TAG, "Problem stopping SDLThread: " + e);
456 }
457 }
458
459 SDLActivity.nativeQuit();
338460
339461 super.onDestroy();
340
341 // Reset everything in case the user re opens the app
342 SDLActivity.initialize();
462 }
463
464 @Override
465 public void onBackPressed() {
466 // Check if we want to block the back button in case of mouse right click.
467 //
468 // If we do, the normal hardware back button will no longer work and people have to use home,
469 // but the mouse right click will work.
470 //
471 String trapBack = SDLActivity.nativeGetHint("SDL_ANDROID_TRAP_BACK_BUTTON");
472 if ((trapBack != null) && trapBack.equals("1")) {
473 // Exit and let the mouse handler handle this button (if appropriate)
474 return;
475 }
476
477 // Default system back button behavior.
478 if (!isFinishing()) {
479 super.onBackPressed();
480 }
481 }
482
483 // Called by JNI from SDL.
484 public static void manualBackButton() {
485 mSingleton.pressBackButton();
486 }
487
488 // Used to get us onto the activity's main thread
489 public void pressBackButton() {
490 runOnUiThread(new Runnable() {
491 @Override
492 public void run() {
493 if (!SDLActivity.this.isFinishing()) {
494 SDLActivity.this.superOnBackPressed();
495 }
496 }
497 });
498 }
499
500 // Used to access the system back behavior.
501 public void superOnBackPressed() {
502 super.onBackPressed();
343503 }
344504
345505 @Override
379539
380540 // Try a transition to paused state
381541 if (mNextNativeState == NativeState.PAUSED) {
382 nativePause();
383 if (mSurface != null)
542 if (mSDLThread != null) {
543 nativePause();
544 }
545 if (mSurface != null) {
384546 mSurface.handlePause();
547 }
385548 mCurrentNativeState = mNextNativeState;
386549 return;
387550 }
388551
389552 // Try a transition to resumed state
390553 if (mNextNativeState == NativeState.RESUMED) {
391 if (mIsSurfaceReady && mHasFocus && mIsResumedCalled) {
554 if (mSurface.mIsSurfaceReady && mHasFocus && mIsResumedCalled) {
392555 if (mSDLThread == null) {
393556 // This is the entry point to the C app.
394557 // Start up the C app thread and enable sensor input for the first time
397560 mSDLThread = new Thread(new SDLMain(), "SDLThread");
398561 mSurface.enableSensor(Sensor.TYPE_ACCELEROMETER, true);
399562 mSDLThread.start();
400 }
401
402 nativeResume();
403 mSurface.handleResume();
563
564 // No nativeResume(), don't signal Android_ResumeSem
565 mSurface.handleResume();
566 } else {
567 nativeResume();
568 mSurface.handleResume();
569 }
570
404571 mCurrentNativeState = mNextNativeState;
405572 }
406573 }
407574 }
408
409 /* The native thread has finished */
410 public static void handleNativeExit() {
411 SDLActivity.mSDLThread = null;
412 mSingleton.finish();
413 }
414
415575
416576 // Messages from the SDLMain thread
417577 static final int COMMAND_CHANGE_TITLE = 1;
418578 static final int COMMAND_CHANGE_WINDOW_STYLE = 2;
419579 static final int COMMAND_TEXTEDIT_HIDE = 3;
580 static final int COMMAND_CHANGE_SURFACEVIEW_FORMAT = 4;
420581 static final int COMMAND_SET_KEEP_SCREEN_ON = 5;
421582
422583 protected static final int COMMAND_USER = 0x8000;
584
585 protected static boolean mFullscreenModeActive;
423586
424587 /**
425588 * This method is called by SDL if SDL did not handle a message itself.
459622 // This version of Android doesn't support the immersive fullscreen mode
460623 break;
461624 }
462 /* This needs more testing, per bug 4096 - Enabling fullscreen on Android causes the app to toggle fullscreen mode continuously in a loop
463 ***
464625 if (context instanceof Activity) {
465626 Window window = ((Activity) context).getWindow();
466627 if (window != null) {
467628 if ((msg.obj instanceof Integer) && (((Integer) msg.obj).intValue() != 0)) {
468 int flags = View.SYSTEM_UI_FLAG_LAYOUT_STABLE |
629 int flags = View.SYSTEM_UI_FLAG_FULLSCREEN |
630 View.SYSTEM_UI_FLAG_HIDE_NAVIGATION |
631 View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY |
632 View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN |
469633 View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION |
470 View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN |
471 View.SYSTEM_UI_FLAG_HIDE_NAVIGATION |
472 View.SYSTEM_UI_FLAG_FULLSCREEN |
473 View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY;
474 window.getDecorView().setSystemUiVisibility(flags);
634 View.SYSTEM_UI_FLAG_LAYOUT_STABLE | View.INVISIBLE;
635 window.getDecorView().setSystemUiVisibility(flags);
475636 window.addFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN);
637 window.clearFlags(WindowManager.LayoutParams.FLAG_FORCE_NOT_FULLSCREEN);
638 SDLActivity.mFullscreenModeActive = true;
476639 } else {
477 int flags = View.SYSTEM_UI_FLAG_LAYOUT_STABLE;
478 window.getDecorView().setSystemUiVisibility(flags);
640 int flags = View.SYSTEM_UI_FLAG_LAYOUT_STABLE | View.SYSTEM_UI_FLAG_VISIBLE;
641 window.getDecorView().setSystemUiVisibility(flags);
642 window.addFlags(WindowManager.LayoutParams.FLAG_FORCE_NOT_FULLSCREEN);
479643 window.clearFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN);
644 SDLActivity.mFullscreenModeActive = false;
480645 }
481646 }
482647 } else {
483648 Log.e(TAG, "error handling message, getContext() returned no Activity");
484649 }
485 ***/
486650 break;
487651 case COMMAND_TEXTEDIT_HIDE:
488652 if (mTextEdit != null) {
493657
494658 InputMethodManager imm = (InputMethodManager) context.getSystemService(Context.INPUT_METHOD_SERVICE);
495659 imm.hideSoftInputFromWindow(mTextEdit.getWindowToken(), 0);
496
660
497661 mScreenKeyboardShown = false;
662
663 mSurface.requestFocus();
498664 }
499665 break;
500666 case COMMAND_SET_KEEP_SCREEN_ON:
511677 }
512678 break;
513679 }
680 case COMMAND_CHANGE_SURFACEVIEW_FORMAT:
681 {
682 int format = (Integer) msg.obj;
683 int pf;
684
685 if (SDLActivity.mSurface == null) {
686 return;
687 }
688
689 SurfaceHolder holder = SDLActivity.mSurface.getHolder();
690 if (holder == null) {
691 return;
692 }
693
694 if (format == 1) {
695 pf = PixelFormat.RGBA_8888;
696 } else if (format == 2) {
697 pf = PixelFormat.RGBX_8888;
698 } else {
699 pf = PixelFormat.RGB_565;
700 }
701
702 holder.setFormat(pf);
703
704 break;
705 }
514706 default:
515707 if ((context instanceof SDLActivity) && !((SDLActivity) context).onUnhandledMessage(msg.arg1, msg.obj)) {
516708 Log.e(TAG, "error handling message, command is " + msg.arg1);
527719 Message msg = commandHandler.obtainMessage();
528720 msg.arg1 = command;
529721 msg.obj = data;
530 return commandHandler.sendMessage(msg);
722 boolean result = commandHandler.sendMessage(msg);
723
724 if ((Build.VERSION.SDK_INT >= 19) && (command == COMMAND_CHANGE_WINDOW_STYLE)) {
725 // Ensure we don't return until the resize has actually happened,
726 // or 500ms have passed.
727
728 boolean bShouldWait = false;
729
730 if (data instanceof Integer) {
731 // Let's figure out if we're already laid out fullscreen or not.
732 Display display = ((WindowManager)getSystemService(Context.WINDOW_SERVICE)).getDefaultDisplay();
733 android.util.DisplayMetrics realMetrics = new android.util.DisplayMetrics();
734 display.getRealMetrics( realMetrics );
735
736 boolean bFullscreenLayout = ((realMetrics.widthPixels == mSurface.getWidth()) &&
737 (realMetrics.heightPixels == mSurface.getHeight()));
738
739 if (((Integer)data).intValue() == 1) {
740 // If we aren't laid out fullscreen or actively in fullscreen mode already, we're going
741 // to change size and should wait for surfaceChanged() before we return, so the size
742 // is right back in native code. If we're already laid out fullscreen, though, we're
743 // not going to change size even if we change decor modes, so we shouldn't wait for
744 // surfaceChanged() -- which may not even happen -- and should return immediately.
745 bShouldWait = !bFullscreenLayout;
746 }
747 else {
748 // If we're laid out fullscreen (even if the status bar and nav bar are present),
749 // or are actively in fullscreen, we're going to change size and should wait for
750 // surfaceChanged before we return, so the size is right back in native code.
751 bShouldWait = bFullscreenLayout;
752 }
753 }
754
755 if (bShouldWait && (SDLActivity.getContext() != null)) {
756 // We'll wait for the surfaceChanged() method, which will notify us
757 // when called. That way, we know our current size is really the
758 // size we need, instead of grabbing a size that's still got
759 // the navigation and/or status bars before they're hidden.
760 //
761 // We'll wait for up to half a second, because some devices
762 // take a surprisingly long time for the surface resize, but
763 // then we'll just give up and return.
764 //
765 synchronized(SDLActivity.getContext()) {
766 try {
767 SDLActivity.getContext().wait(500);
768 }
769 catch (InterruptedException ie) {
770 ie.printStackTrace();
771 }
772 }
773 }
774 }
775
776 return result;
531777 }
532778
533779 // C functions we call
534780 public static native int nativeSetupJNI();
535781 public static native int nativeRunMain(String library, String function, Object arguments);
536782 public static native void nativeLowMemory();
783 public static native void nativeSendQuit();
537784 public static native void nativeQuit();
538785 public static native void nativePause();
539786 public static native void nativeResume();
787 public static native void nativeFocusChanged(boolean hasFocus);
540788 public static native void onNativeDropFile(String filename);
541 public static native void onNativeResize(int x, int y, int format, float rate);
789 public static native void nativeSetScreenResolution(int surfaceWidth, int surfaceHeight, int deviceWidth, int deviceHeight, int format, float rate);
790 public static native void onNativeResize();
542791 public static native void onNativeKeyDown(int keycode);
543792 public static native void onNativeKeyUp(int keycode);
793 public static native boolean onNativeSoftReturnKey();
544794 public static native void onNativeKeyboardFocusLost();
545 public static native void onNativeMouse(int button, int action, float x, float y);
795 public static native void onNativeMouse(int button, int action, float x, float y, boolean relative);
546796 public static native void onNativeTouch(int touchDevId, int pointerFingerId,
547797 int action, float x,
548798 float y, float p);
549799 public static native void onNativeAccel(float x, float y, float z);
550800 public static native void onNativeClipboardChanged();
801 public static native void onNativeSurfaceCreated();
551802 public static native void onNativeSurfaceChanged();
552803 public static native void onNativeSurfaceDestroyed();
553804 public static native String nativeGetHint(String name);
554805 public static native void nativeSetenv(String name, String value);
806 public static native void onNativeOrientationChanged(int orientation);
807 public static native void nativeAddTouch(int touchId, String name);
808 public static native void nativePermissionResult(int requestCode, boolean result);
809 public static native void onNativeLocaleChanged();
555810
556811 /**
557812 * This method is called by SDL using JNI.
572827 /**
573828 * This method is called by SDL using JNI.
574829 * This is a static method for JNI convenience, it calls a non-static method
575 * so that is can be overridden
830 * so that is can be overridden
576831 */
577832 public static void setOrientation(int w, int h, boolean resizable, String hint)
578833 {
580835 mSingleton.setOrientationBis(w, h, resizable, hint);
581836 }
582837 }
583
838
584839 /**
585840 * This can be overridden
586841 */
587 public void setOrientationBis(int w, int h, boolean resizable, String hint)
842 public void setOrientationBis(int w, int h, boolean resizable, String hint)
588843 {
589 int orientation = -1;
590
844 int orientation_landscape = -1;
845 int orientation_portrait = -1;
846
847 /* If set, hint "explicitly controls which UI orientations are allowed". */
591848 if (hint.contains("LandscapeRight") && hint.contains("LandscapeLeft")) {
592 orientation = ActivityInfo.SCREEN_ORIENTATION_SENSOR_LANDSCAPE;
849 orientation_landscape = ActivityInfo.SCREEN_ORIENTATION_SENSOR_LANDSCAPE;
593850 } else if (hint.contains("LandscapeRight")) {
594 orientation = ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE;
851 orientation_landscape = ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE;
595852 } else if (hint.contains("LandscapeLeft")) {
596 orientation = ActivityInfo.SCREEN_ORIENTATION_REVERSE_LANDSCAPE;
597 } else if (hint.contains("Portrait") && hint.contains("PortraitUpsideDown")) {
598 orientation = ActivityInfo.SCREEN_ORIENTATION_SENSOR_PORTRAIT;
853 orientation_landscape = ActivityInfo.SCREEN_ORIENTATION_REVERSE_LANDSCAPE;
854 }
855
856 if (hint.contains("Portrait") && hint.contains("PortraitUpsideDown")) {
857 orientation_portrait = ActivityInfo.SCREEN_ORIENTATION_SENSOR_PORTRAIT;
599858 } else if (hint.contains("Portrait")) {
600 orientation = ActivityInfo.SCREEN_ORIENTATION_PORTRAIT;
859 orientation_portrait = ActivityInfo.SCREEN_ORIENTATION_PORTRAIT;
601860 } else if (hint.contains("PortraitUpsideDown")) {
602 orientation = ActivityInfo.SCREEN_ORIENTATION_REVERSE_PORTRAIT;
603 }
604
605 /* no valid hint */
606 if (orientation == -1) {
861 orientation_portrait = ActivityInfo.SCREEN_ORIENTATION_REVERSE_PORTRAIT;
862 }
863
864 boolean is_landscape_allowed = (orientation_landscape == -1 ? false : true);
865 boolean is_portrait_allowed = (orientation_portrait == -1 ? false : true);
866 int req = -1; /* Requested orientation */
867
868 /* No valid hint, nothing is explicitly allowed */
869 if (!is_portrait_allowed && !is_landscape_allowed) {
607870 if (resizable) {
608 /* no fixed orientation */
871 /* All orientations are allowed */
872 req = ActivityInfo.SCREEN_ORIENTATION_FULL_SENSOR;
609873 } else {
610 if (w > h) {
611 orientation = ActivityInfo.SCREEN_ORIENTATION_SENSOR_LANDSCAPE;
874 /* Fixed window and nothing specified. Get orientation from w/h of created window */
875 req = (w > h ? ActivityInfo.SCREEN_ORIENTATION_SENSOR_LANDSCAPE : ActivityInfo.SCREEN_ORIENTATION_SENSOR_PORTRAIT);
876 }
877 } else {
878 /* At least one orientation is allowed */
879 if (resizable) {
880 if (is_portrait_allowed && is_landscape_allowed) {
881 /* hint allows both landscape and portrait, promote to full sensor */
882 req = ActivityInfo.SCREEN_ORIENTATION_FULL_SENSOR;
612883 } else {
613 orientation = ActivityInfo.SCREEN_ORIENTATION_SENSOR_PORTRAIT;
614 }
615 }
616 }
617
618 Log.v("SDL", "setOrientation() orientation=" + orientation + " width=" + w +" height="+ h +" resizable=" + resizable + " hint=" + hint);
619 if (orientation != -1) {
620 mSingleton.setRequestedOrientation(orientation);
621 }
622 }
623
624
625 /**
626 * This method is called by SDL using JNI.
627 */
628 public static boolean isScreenKeyboardShown()
884 /* Use the only one allowed "orientation" */
885 req = (is_landscape_allowed ? orientation_landscape : orientation_portrait);
886 }
887 } else {
888 /* Fixed window and both orientations are allowed. Choose one. */
889 if (is_portrait_allowed && is_landscape_allowed) {
890 req = (w > h ? orientation_landscape : orientation_portrait);
891 } else {
892 /* Use the only one allowed "orientation" */
893 req = (is_landscape_allowed ? orientation_landscape : orientation_portrait);
894 }
895 }
896 }
897
898 Log.v(TAG, "setOrientation() requestedOrientation=" + req + " width=" + w +" height="+ h +" resizable=" + resizable + " hint=" + hint);
899 mSingleton.setRequestedOrientation(req);
900 }
901
902 /**
903 * This method is called by SDL using JNI.
904 */
905 public static void minimizeWindow() {
906
907 if (mSingleton == null) {
908 return;
909 }
910
911 Intent startMain = new Intent(Intent.ACTION_MAIN);
912 startMain.addCategory(Intent.CATEGORY_HOME);
913 startMain.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
914 mSingleton.startActivity(startMain);
915 }
916
917 /**
918 * This method is called by SDL using JNI.
919 */
920 public static boolean shouldMinimizeOnFocusLoss() {
921 /*
922 if (Build.VERSION.SDK_INT >= 24) {
923 if (mSingleton == null) {
924 return true;
925 }
926
927 if (mSingleton.isInMultiWindowMode()) {
928 return false;
929 }
930
931 if (mSingleton.isInPictureInPictureMode()) {
932 return false;
933 }
934 }
935
936 return true;
937 */
938 return false;
939 }
940
941 /**
942 * This method is called by SDL using JNI.
943 */
944 public static boolean isScreenKeyboardShown()
629945 {
630946 if (mTextEdit == null) {
631947 return false;
643959 /**
644960 * This method is called by SDL using JNI.
645961 */
962 public static boolean supportsRelativeMouse()
963 {
964 // ChromeOS doesn't provide relative mouse motion via the Android 7 APIs
965 if (isChromebook()) {
966 return false;
967 }
968
969 // DeX mode in Samsung Experience 9.0 and earlier doesn't support relative mice properly under
970 // Android 7 APIs, and simply returns no data under Android 8 APIs.
971 //
972 // This is fixed in Samsung Experience 9.5, which corresponds to Android 8.1.0, and
973 // thus SDK version 27. If we are in DeX mode and not API 27 or higher, as a result,
974 // we should stick to relative mode.
975 //
976 if ((Build.VERSION.SDK_INT < 27) && isDeXMode()) {
977 return false;
978 }
979
980 return SDLActivity.getMotionListener().supportsRelativeMouse();
981 }
982
983 /**
984 * This method is called by SDL using JNI.
985 */
986 public static boolean setRelativeMouseEnabled(boolean enabled)
987 {
988 if (enabled && !supportsRelativeMouse()) {
989 return false;
990 }
991
992 return SDLActivity.getMotionListener().setRelativeMouseEnabled(enabled);
993 }
994
995 /**
996 * This method is called by SDL using JNI.
997 */
646998 public static boolean sendMessage(int command, int param) {
647999 if (mSingleton == null) {
6481000 return false;
6621014 */
6631015 public static boolean isAndroidTV() {
6641016 UiModeManager uiModeManager = (UiModeManager) getContext().getSystemService(UI_MODE_SERVICE);
665 return (uiModeManager.getCurrentModeType() == Configuration.UI_MODE_TYPE_TELEVISION);
1017 if (uiModeManager.getCurrentModeType() == Configuration.UI_MODE_TYPE_TELEVISION) {
1018 return true;
1019 }
1020 if (Build.MANUFACTURER.equals("MINIX") && Build.MODEL.equals("NEO-U1")) {
1021 return true;
1022 }
1023 if (Build.MANUFACTURER.equals("Amlogic") && Build.MODEL.equals("X96-W")) {
1024 return true;
1025 }
1026 if (Build.MANUFACTURER.equals("Amlogic") && Build.MODEL.startsWith("TV")) {
1027 return true;
1028 }
1029 return false;
1030 }
1031
1032 /**
1033 * This method is called by SDL using JNI.
1034 */
1035 public static boolean isTablet() {
1036 DisplayMetrics metrics = new DisplayMetrics();
1037 Activity activity = (Activity)getContext();
1038 if (activity == null) {
1039 return false;
1040 }
1041 activity.getWindowManager().getDefaultDisplay().getMetrics(metrics);
1042
1043 double dWidthInches = metrics.widthPixels / (double)metrics.xdpi;
1044 double dHeightInches = metrics.heightPixels / (double)metrics.ydpi;
1045
1046 double dDiagonal = Math.sqrt((dWidthInches * dWidthInches) + (dHeightInches * dHeightInches));
1047
1048 // If our diagonal size is seven inches or greater, we consider ourselves a tablet.
1049 return (dDiagonal >= 7.0);
1050 }
1051
1052 /**
1053 * This method is called by SDL using JNI.
1054 */
1055 public static boolean isChromebook() {
1056 if (getContext() == null) {
1057 return false;
1058 }
1059 return getContext().getPackageManager().hasSystemFeature("org.chromium.arc.device_management");
1060 }
1061
1062 /**
1063 * This method is called by SDL using JNI.
1064 */
1065 public static boolean isDeXMode() {
1066 if (Build.VERSION.SDK_INT < 24) {
1067 return false;
1068 }
1069 try {
1070 final Configuration config = getContext().getResources().getConfiguration();
1071 final Class configClass = config.getClass();
1072 return configClass.getField("SEM_DESKTOP_MODE_ENABLED").getInt(configClass)
1073 == configClass.getField("semDesktopModeEnabled").getInt(config);
1074 } catch(Exception ignored) {
1075 return false;
1076 }
6661077 }
6671078
6681079 /**
6771088 */
6781089 public static boolean getManifestEnvironmentVariables() {
6791090 try {
1091 if (getContext() == null) {
1092 return false;
1093 }
1094
6801095 ApplicationInfo applicationInfo = getContext().getPackageManager().getApplicationInfo(getContext().getPackageName(), PackageManager.GET_META_DATA);
6811096 Bundle bundle = applicationInfo.metaData;
6821097 if (bundle == null) {
6921107 }
6931108 }
6941109 /* environment variables set! */
695 return true;
1110 return true;
6961111 } catch (Exception e) {
697 Log.v("SDL", "exception " + e.toString());
1112 Log.v(TAG, "exception " + e.toString());
6981113 }
6991114 return false;
1115 }
1116
1117 // This method is called by SDLControllerManager's API 26 Generic Motion Handler.
1118 public static View getContentView()
1119 {
1120 return mSingleton.mLayout;
7001121 }
7011122
7021123 static class ShowTextInputTask implements Runnable {
7141135 this.y = y;
7151136 this.w = w;
7161137 this.h = h;
1138
1139 /* Minimum size of 1 pixel, so it takes focus. */
1140 if (this.w <= 0) {
1141 this.w = 1;
1142 }
1143 if (this.h + HEIGHT_PADDING <= 0) {
1144 this.h = 1 - HEIGHT_PADDING;
1145 }
7171146 }
7181147
7191148 @Override
7491178 }
7501179
7511180 public static boolean isTextInputEvent(KeyEvent event) {
752
1181
7531182 // Key pressed with Ctrl should be sent as SDL_KEYDOWN/SDL_KEYUP and not SDL_TEXTINPUT
754 if (Build.VERSION.SDK_INT >= 11) {
755 if (event.isCtrlPressed()) {
756 return false;
757 }
1183 if (event.isCtrlPressed()) {
1184 return false;
7581185 }
7591186
7601187 return event.isPrintingKey() || event.getKeyCode() == KeyEvent.KEYCODE_SPACE;
7701197 return SDLActivity.mSurface.getNativeSurface();
7711198 }
7721199
1200 /**
1201 * This method is called by SDL using JNI.
1202 */
1203 public static void setSurfaceViewFormat(int format) {
1204 mSingleton.sendCommand(COMMAND_CHANGE_SURFACEVIEW_FORMAT, format);
1205 return;
1206 }
1207
7731208 // Input
7741209
7751210 /**
7761211 * This method is called by SDL using JNI.
777 * @return an array which may be empty but is never null.
778 */
779 public static int[] inputGetInputDeviceIds(int sources) {
1212 */
1213 public static void initTouch() {
7801214 int[] ids = InputDevice.getDeviceIds();
781 int[] filtered = new int[ids.length];
782 int used = 0;
1215
7831216 for (int i = 0; i < ids.length; ++i) {
7841217 InputDevice device = InputDevice.getDevice(ids[i]);
785 if ((device != null) && ((device.getSources() & sources) != 0)) {
786 filtered[used++] = device.getId();
787 }
788 }
789 return Arrays.copyOf(filtered, used);
1218 if (device != null && (device.getSources() & InputDevice.SOURCE_TOUCHSCREEN) != 0) {
1219 nativeAddTouch(device.getId(), device.getName());
1220 }
1221 }
7901222 }
7911223
7921224 // APK expansion files support
10641496 return dialog;
10651497 }
10661498
1499 private final Runnable rehideSystemUi = new Runnable() {
1500 @Override
1501 public void run() {
1502 int flags = View.SYSTEM_UI_FLAG_FULLSCREEN |
1503 View.SYSTEM_UI_FLAG_HIDE_NAVIGATION |
1504 View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY |
1505 View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN |
1506 View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION |
1507 View.SYSTEM_UI_FLAG_LAYOUT_STABLE | View.INVISIBLE;
1508
1509 SDLActivity.this.getWindow().getDecorView().setSystemUiVisibility(flags);
1510 }
1511 };
1512
1513 public void onSystemUiVisibilityChange(int visibility) {
1514 if (SDLActivity.mFullscreenModeActive && ((visibility & View.SYSTEM_UI_FLAG_FULLSCREEN) == 0 || (visibility & View.SYSTEM_UI_FLAG_HIDE_NAVIGATION) == 0)) {
1515
1516 Handler handler = getWindow().getDecorView().getHandler();
1517 if (handler != null) {
1518 handler.removeCallbacks(rehideSystemUi); // Prevent a hide loop.
1519 handler.postDelayed(rehideSystemUi, 2000);
1520 }
1521
1522 }
1523 }
1524
10671525 /**
10681526 * This method is called by SDL using JNI.
10691527 */
10911549 public static int createCustomCursor(int[] colors, int width, int height, int hotSpotX, int hotSpotY) {
10921550 Bitmap bitmap = Bitmap.createBitmap(colors, width, height, Bitmap.Config.ARGB_8888);
10931551 ++mLastCursorID;
1094 // This requires API 24, so use reflection to implement this
1095 try {
1096 Class PointerIconClass = Class.forName("android.view.PointerIcon");
1097 Class[] arg_types = new Class[] { Bitmap.class, float.class, float.class };
1098 Method create = PointerIconClass.getMethod("create", arg_types);
1099 mCursors.put(mLastCursorID, create.invoke(null, bitmap, hotSpotX, hotSpotY));
1100 } catch (Exception e) {
1552
1553 if (Build.VERSION.SDK_INT >= 24) {
1554 try {
1555 mCursors.put(mLastCursorID, PointerIcon.create(bitmap, hotSpotX, hotSpotY));
1556 } catch (Exception e) {
1557 return 0;
1558 }
1559 } else {
11011560 return 0;
11021561 }
11031562 return mLastCursorID;
11071566 * This method is called by SDL using JNI.
11081567 */
11091568 public static boolean setCustomCursor(int cursorID) {
1110 // This requires API 24, so use reflection to implement this
1111 try {
1112 Class PointerIconClass = Class.forName("android.view.PointerIcon");
1113 Method setPointerIcon = SDLSurface.class.getMethod("setPointerIcon", PointerIconClass);
1114 setPointerIcon.invoke(mSurface, mCursors.get(cursorID));
1115 } catch (Exception e) {
1569
1570 if (Build.VERSION.SDK_INT >= 24) {
1571 try {
1572 mSurface.setPointerIcon(mCursors.get(cursorID));
1573 } catch (Exception e) {
1574 return false;
1575 }
1576 } else {
11161577 return false;
11171578 }
11181579 return true;
11611622 cursor_type = 1002; //PointerIcon.TYPE_HAND;
11621623 break;
11631624 }
1164 // This requires API 24, so use reflection to implement this
1165 try {
1166 Class PointerIconClass = Class.forName("android.view.PointerIcon");
1167 Class[] arg_types = new Class[] { Context.class, int.class };
1168 Method getSystemIcon = PointerIconClass.getMethod("getSystemIcon", arg_types);
1169 Method setPointerIcon = SDLSurface.class.getMethod("setPointerIcon", PointerIconClass);
1170 setPointerIcon.invoke(mSurface, getSystemIcon.invoke(null, SDL.getContext(), cursor_type));
1171 } catch (Exception e) {
1172 return false;
1625 if (Build.VERSION.SDK_INT >= 24) {
1626 try {
1627 mSurface.setPointerIcon(PointerIcon.getSystemIcon(SDL.getContext(), cursor_type));
1628 } catch (Exception e) {
1629 return false;
1630 }
11731631 }
11741632 return true;
1633 }
1634
1635 /**
1636 * This method is called by SDL using JNI.
1637 */
1638 public static void requestPermission(String permission, int requestCode) {
1639 if (Build.VERSION.SDK_INT < 23) {
1640 nativePermissionResult(requestCode, true);
1641 return;
1642 }
1643
1644 Activity activity = (Activity)getContext();
1645 if (activity.checkSelfPermission(permission) != PackageManager.PERMISSION_GRANTED) {
1646 activity.requestPermissions(new String[]{permission}, requestCode);
1647 } else {
1648 nativePermissionResult(requestCode, true);
1649 }
1650 }
1651
1652 @Override
1653 public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) {
1654 if (grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED) {
1655 nativePermissionResult(requestCode, true);
1656 } else {
1657 nativePermissionResult(requestCode, false);
1658 }
11751659 }
11761660 }
11771661
11861670 String function = SDLActivity.mSingleton.getMainFunction();
11871671 String[] arguments = SDLActivity.mSingleton.getArguments();
11881672
1673 try {
1674 android.os.Process.setThreadPriority(android.os.Process.THREAD_PRIORITY_DISPLAY);
1675 } catch (Exception e) {
1676 Log.v("SDL", "modify thread properties failed " + e.toString());
1677 }
1678
11891679 Log.v("SDL", "Running main function " + function + " from library " + library);
1680
11901681 SDLActivity.nativeRunMain(library, function, arguments);
11911682
11921683 Log.v("SDL", "Finished main function");
11931684
1194 // Native thread has finished, let's finish the Activity
1195 if (!SDLActivity.mExitCalledFromJava) {
1196 SDLActivity.handleNativeExit();
1685 if (SDLActivity.mSingleton == null || SDLActivity.mSingleton.isFinishing()) {
1686 // Activity is already being destroyed
1687 } else {
1688 // Let's finish the Activity
1689 SDLActivity.mSDLThread = null;
1690 SDLActivity.mSingleton.finish();
11971691 }
11981692 }
11991693 }
12091703 View.OnKeyListener, View.OnTouchListener, SensorEventListener {
12101704
12111705 // Sensors
1212 protected static SensorManager mSensorManager;
1213 protected static Display mDisplay;
1706 protected SensorManager mSensorManager;
1707 protected Display mDisplay;
12141708
12151709 // Keep track of the surface size to normalize touch events
1216 protected static float mWidth, mHeight;
1710 protected float mWidth, mHeight;
1711
1712 // Is SurfaceView ready for rendering
1713 public boolean mIsSurfaceReady;
12171714
12181715 // Startup
12191716 public SDLSurface(Context context) {
12291726 mDisplay = ((WindowManager)context.getSystemService(Context.WINDOW_SERVICE)).getDefaultDisplay();
12301727 mSensorManager = (SensorManager)context.getSystemService(Context.SENSOR_SERVICE);
12311728
1232 if (Build.VERSION.SDK_INT >= 12) {
1233 setOnGenericMotionListener(new SDLGenericMotionListener_API12());
1234 }
1729 setOnGenericMotionListener(SDLActivity.getMotionListener());
12351730
12361731 // Some arbitrary defaults to avoid a potential division by zero
12371732 mWidth = 1.0f;
12381733 mHeight = 1.0f;
1734
1735 mIsSurfaceReady = false;
12391736 }
12401737
12411738 public void handlePause() {
12591756 @Override
12601757 public void surfaceCreated(SurfaceHolder holder) {
12611758 Log.v("SDL", "surfaceCreated()");
1262 holder.setType(SurfaceHolder.SURFACE_TYPE_GPU);
1759 SDLActivity.onNativeSurfaceCreated();
12631760 }
12641761
12651762 // Called when we lose the surface
12711768 SDLActivity.mNextNativeState = SDLActivity.NativeState.PAUSED;
12721769 SDLActivity.handleNativeState();
12731770
1274 SDLActivity.mIsSurfaceReady = false;
1771 mIsSurfaceReady = false;
12751772 SDLActivity.onNativeSurfaceDestroyed();
12761773 }
12771774
12811778 int format, int width, int height) {
12821779 Log.v("SDL", "surfaceChanged()");
12831780
1781 if (SDLActivity.mSingleton == null) {
1782 return;
1783 }
1784
12841785 int sdlFormat = 0x15151002; // SDL_PIXELFORMAT_RGB565 by default
12851786 switch (format) {
1286 case PixelFormat.A_8:
1287 Log.v("SDL", "pixel format A_8");
1288 break;
1289 case PixelFormat.LA_88:
1290 Log.v("SDL", "pixel format LA_88");
1291 break;
1292 case PixelFormat.L_8:
1293 Log.v("SDL", "pixel format L_8");
1294 break;
1295 case PixelFormat.RGBA_4444:
1296 Log.v("SDL", "pixel format RGBA_4444");
1297 sdlFormat = 0x15421002; // SDL_PIXELFORMAT_RGBA4444
1298 break;
1299 case PixelFormat.RGBA_5551:
1300 Log.v("SDL", "pixel format RGBA_5551");
1301 sdlFormat = 0x15441002; // SDL_PIXELFORMAT_RGBA5551
1302 break;
13031787 case PixelFormat.RGBA_8888:
13041788 Log.v("SDL", "pixel format RGBA_8888");
13051789 sdlFormat = 0x16462004; // SDL_PIXELFORMAT_RGBA8888
13071791 case PixelFormat.RGBX_8888:
13081792 Log.v("SDL", "pixel format RGBX_8888");
13091793 sdlFormat = 0x16261804; // SDL_PIXELFORMAT_RGBX8888
1310 break;
1311 case PixelFormat.RGB_332:
1312 Log.v("SDL", "pixel format RGB_332");
1313 sdlFormat = 0x14110801; // SDL_PIXELFORMAT_RGB332
13141794 break;
13151795 case PixelFormat.RGB_565:
13161796 Log.v("SDL", "pixel format RGB_565");
13281808
13291809 mWidth = width;
13301810 mHeight = height;
1331 SDLActivity.onNativeResize(width, height, sdlFormat, mDisplay.getRefreshRate());
1811 int nDeviceWidth = width;
1812 int nDeviceHeight = height;
1813 try
1814 {
1815 if (Build.VERSION.SDK_INT >= 17) {
1816 android.util.DisplayMetrics realMetrics = new android.util.DisplayMetrics();
1817 mDisplay.getRealMetrics( realMetrics );
1818 nDeviceWidth = realMetrics.widthPixels;
1819 nDeviceHeight = realMetrics.heightPixels;
1820 }
1821 }
1822 catch ( java.lang.Throwable throwable ) {}
1823
1824 synchronized(SDLActivity.getContext()) {
1825 // In case we're waiting on a size change after going fullscreen, send a notification.
1826 SDLActivity.getContext().notifyAll();
1827 }
1828
13321829 Log.v("SDL", "Window size: " + width + "x" + height);
1333
1334
1830 Log.v("SDL", "Device size: " + nDeviceWidth + "x" + nDeviceHeight);
1831 SDLActivity.nativeSetScreenResolution(width, height, nDeviceWidth, nDeviceHeight, sdlFormat, mDisplay.getRefreshRate());
1832 SDLActivity.onNativeResize();
1833
1834 // Prevent a screen distortion glitch,
1835 // for instance when the device is in Landscape and a Portrait App is resumed.
13351836 boolean skip = false;
13361837 int requestedOrientation = SDLActivity.mSingleton.getRequestedOrientation();
13371838
13611862 }
13621863 }
13631864
1865 // Don't skip in MultiWindow.
1866 if (skip) {
1867 if (Build.VERSION.SDK_INT >= 24) {
1868 if (SDLActivity.mSingleton.isInMultiWindowMode()) {
1869 Log.v("SDL", "Don't skip in Multi-Window");
1870 skip = false;
1871 }
1872 }
1873 }
1874
13641875 if (skip) {
13651876 Log.v("SDL", "Skip .. Surface is not ready.");
1366 SDLActivity.mIsSurfaceReady = false;
1877 mIsSurfaceReady = false;
13671878 return;
13681879 }
1369
1370 /* Surface is ready */
1371 SDLActivity.mIsSurfaceReady = true;
13721880
13731881 /* If the surface has been previously destroyed by onNativeSurfaceDestroyed, recreate it here */
13741882 SDLActivity.onNativeSurfaceChanged();
13751883
1884 /* Surface is ready */
1885 mIsSurfaceReady = true;
1886
1887 SDLActivity.mNextNativeState = SDLActivity.NativeState.RESUMED;
13761888 SDLActivity.handleNativeState();
13771889 }
13781890
13791891 // Key events
13801892 @Override
13811893 public boolean onKey(View v, int keyCode, KeyEvent event) {
1894
1895 int deviceId = event.getDeviceId();
1896 int source = event.getSource();
1897
1898 if (source == InputDevice.SOURCE_UNKNOWN) {
1899 InputDevice device = InputDevice.getDevice(deviceId);
1900 if (device != null) {
1901 source = device.getSources();
1902 }
1903 }
1904
1905 // if (event.getAction() == KeyEvent.ACTION_DOWN) {
1906 // Log.v("SDL", "key down: " + keyCode + ", deviceId = " + deviceId + ", source = " + source);
1907 // } else if (event.getAction() == KeyEvent.ACTION_UP) {
1908 // Log.v("SDL", "key up: " + keyCode + ", deviceId = " + deviceId + ", source = " + source);
1909 // }
1910
13821911 // Dispatch the different events depending on where they come from
13831912 // Some SOURCE_JOYSTICK, SOURCE_DPAD or SOURCE_GAMEPAD are also SOURCE_KEYBOARD
13841913 // So, we try to process them as JOYSTICK/DPAD/GAMEPAD events first, if that fails we try them as KEYBOARD
13861915 // Furthermore, it's possible a game controller has SOURCE_KEYBOARD and
13871916 // SOURCE_JOYSTICK, while its key events arrive from the keyboard source
13881917 // So, retrieve the device itself and check all of its sources
1389 if (SDLControllerManager.isDeviceSDLJoystick(event.getDeviceId())) {
1918 if (SDLControllerManager.isDeviceSDLJoystick(deviceId)) {
13901919 // Note that we process events with specific key codes here
13911920 if (event.getAction() == KeyEvent.ACTION_DOWN) {
1392 if (SDLControllerManager.onNativePadDown(event.getDeviceId(), keyCode) == 0) {
1921 if (SDLControllerManager.onNativePadDown(deviceId, keyCode) == 0) {
13931922 return true;
13941923 }
13951924 } else if (event.getAction() == KeyEvent.ACTION_UP) {
1396 if (SDLControllerManager.onNativePadUp(event.getDeviceId(), keyCode) == 0) {
1925 if (SDLControllerManager.onNativePadUp(deviceId, keyCode) == 0) {
13971926 return true;
13981927 }
13991928 }
14001929 }
14011930
1402 if ((event.getSource() & InputDevice.SOURCE_KEYBOARD) != 0) {
1931 if ((source & InputDevice.SOURCE_KEYBOARD) != 0) {
14031932 if (event.getAction() == KeyEvent.ACTION_DOWN) {
1404 //Log.v("SDL", "key down: " + keyCode);
14051933 if (SDLActivity.isTextInputEvent(event)) {
14061934 SDLInputConnection.nativeCommitText(String.valueOf((char) event.getUnicodeChar()), 1);
14071935 }
14081936 SDLActivity.onNativeKeyDown(keyCode);
14091937 return true;
1410 }
1411 else if (event.getAction() == KeyEvent.ACTION_UP) {
1412 //Log.v("SDL", "key up: " + keyCode);
1938 } else if (event.getAction() == KeyEvent.ACTION_UP) {
14131939 SDLActivity.onNativeKeyUp(keyCode);
14141940 return true;
14151941 }
14161942 }
14171943
1418 if ((event.getSource() & InputDevice.SOURCE_MOUSE) != 0) {
1944 if ((source & InputDevice.SOURCE_MOUSE) != 0) {
14191945 // on some devices key events are sent for mouse BUTTON_BACK/FORWARD presses
14201946 // they are ignored here because sending them as mouse input to SDL is messy
14211947 if ((keyCode == KeyEvent.KEYCODE_BACK) || (keyCode == KeyEvent.KEYCODE_FORWARD)) {
14441970 int i = -1;
14451971 float x,y,p;
14461972
1447 // !!! FIXME: dump this SDK check after 2.0.4 ships and require API14.
1448 if (event.getSource() == InputDevice.SOURCE_MOUSE && SDLActivity.mSeparateMouseAndTouch) {
1449 if (Build.VERSION.SDK_INT < 14) {
1450 mouseButton = 1; // all mouse buttons are the left button
1451 } else {
1452 try {
1453 mouseButton = (Integer) event.getClass().getMethod("getButtonState").invoke(event);
1454 } catch(Exception e) {
1455 mouseButton = 1; // oh well.
1456 }
1457 }
1458 SDLActivity.onNativeMouse(mouseButton, action, event.getX(0), event.getY(0));
1973 // 12290 = Samsung DeX mode desktop mouse
1974 // 12290 = 0x3002 = 0x2002 | 0x1002 = SOURCE_MOUSE | SOURCE_TOUCHSCREEN
1975 // 0x2 = SOURCE_CLASS_POINTER
1976 if (event.getSource() == InputDevice.SOURCE_MOUSE || event.getSource() == (InputDevice.SOURCE_MOUSE | InputDevice.SOURCE_TOUCHSCREEN)) {
1977 try {
1978 mouseButton = (Integer) event.getClass().getMethod("getButtonState").invoke(event);
1979 } catch(Exception e) {
1980 mouseButton = 1; // oh well.
1981 }
1982
1983 // We need to check if we're in relative mouse mode and get the axis offset rather than the x/y values
1984 // if we are. We'll leverage our existing mouse motion listener
1985 SDLGenericMotionListener_API12 motionListener = SDLActivity.getMotionListener();
1986 x = motionListener.getEventX(event);
1987 y = motionListener.getEventY(event);
1988
1989 SDLActivity.onNativeMouse(mouseButton, action, x, y, motionListener.inRelativeMode());
14591990 } else {
14601991 switch(action) {
14611992 case MotionEvent.ACTION_MOVE:
15402071 @Override
15412072 public void onSensorChanged(SensorEvent event) {
15422073 if (event.sensor.getType() == Sensor.TYPE_ACCELEROMETER) {
2074
2075 // Since we may have an orientation set, we won't receive onConfigurationChanged events.
2076 // We thus should check here.
2077 int newOrientation = SDLActivity.SDL_ORIENTATION_UNKNOWN;
2078
15432079 float x, y;
15442080 switch (mDisplay.getRotation()) {
15452081 case Surface.ROTATION_90:
15462082 x = -event.values[1];
15472083 y = event.values[0];
2084 newOrientation = SDLActivity.SDL_ORIENTATION_LANDSCAPE;
15482085 break;
15492086 case Surface.ROTATION_270:
15502087 x = event.values[1];
15512088 y = -event.values[0];
2089 newOrientation = SDLActivity.SDL_ORIENTATION_LANDSCAPE_FLIPPED;
15522090 break;
15532091 case Surface.ROTATION_180:
1554 x = -event.values[1];
1555 y = -event.values[0];
2092 x = -event.values[0];
2093 y = -event.values[1];
2094 newOrientation = SDLActivity.SDL_ORIENTATION_PORTRAIT_FLIPPED;
15562095 break;
15572096 default:
15582097 x = event.values[0];
15592098 y = event.values[1];
2099 newOrientation = SDLActivity.SDL_ORIENTATION_PORTRAIT;
15602100 break;
15612101 }
2102
2103 if (newOrientation != SDLActivity.mCurrentOrientation) {
2104 SDLActivity.mCurrentOrientation = newOrientation;
2105 SDLActivity.onNativeOrientationChanged(newOrientation);
2106 }
2107
15622108 SDLActivity.onNativeAccel(-x / SensorManager.GRAVITY_EARTH,
15632109 y / SensorManager.GRAVITY_EARTH,
15642110 event.values[2] / SensorManager.GRAVITY_EARTH);
1565 }
1566 }
2111
2112
2113 }
2114 }
2115
2116 // Captured pointer events for API 26.
2117 public boolean onCapturedPointerEvent(MotionEvent event)
2118 {
2119 int action = event.getActionMasked();
2120
2121 float x, y;
2122 switch (action) {
2123 case MotionEvent.ACTION_SCROLL:
2124 x = event.getAxisValue(MotionEvent.AXIS_HSCROLL, 0);
2125 y = event.getAxisValue(MotionEvent.AXIS_VSCROLL, 0);
2126 SDLActivity.onNativeMouse(0, action, x, y, false);
2127 return true;
2128
2129 case MotionEvent.ACTION_HOVER_MOVE:
2130 case MotionEvent.ACTION_MOVE:
2131 x = event.getX(0);
2132 y = event.getY(0);
2133 SDLActivity.onNativeMouse(0, action, x, y, true);
2134 return true;
2135
2136 case MotionEvent.ACTION_BUTTON_PRESS:
2137 case MotionEvent.ACTION_BUTTON_RELEASE:
2138
2139 // Change our action value to what SDL's code expects.
2140 if (action == MotionEvent.ACTION_BUTTON_PRESS) {
2141 action = MotionEvent.ACTION_DOWN;
2142 }
2143 else if (action == MotionEvent.ACTION_BUTTON_RELEASE) {
2144 action = MotionEvent.ACTION_UP;
2145 }
2146
2147 x = event.getX(0);
2148 y = event.getY(0);
2149 int button = event.getButtonState();
2150
2151 SDLActivity.onNativeMouse(button, action, x, y, true);
2152 return true;
2153 }
2154
2155 return false;
2156 }
2157
15672158 }
15682159
15692160 /* This is a fake invisible editor view that receives the input and defines the
15862177
15872178 @Override
15882179 public boolean onKey(View v, int keyCode, KeyEvent event) {
1589 /*
2180 /*
15902181 * This handles the hardware keyboard input
15912182 */
15922183 if (event.getAction() == KeyEvent.ACTION_DOWN) {
16542245 */
16552246
16562247 if (event.getKeyCode() == KeyEvent.KEYCODE_ENTER) {
1657 String imeHide = SDLActivity.nativeGetHint("SDL_RETURN_KEY_HIDES_IME");
1658 if ((imeHide != null) && imeHide.equals("1")) {
1659 Context c = SDL.getContext();
1660 if (c instanceof SDLActivity) {
1661 SDLActivity activity = (SDLActivity)c;
1662 activity.sendCommand(SDLActivity.COMMAND_TEXTEDIT_HIDE, null);
1663 return true;
1664 }
2248 if (SDLActivity.onNativeSoftReturnKey()) {
2249 return true;
16652250 }
16662251 }
16672252
16742259
16752260 for (int i = 0; i < text.length(); i++) {
16762261 char c = text.charAt(i);
2262 if (c == '\n') {
2263 if (SDLActivity.onNativeSoftReturnKey()) {
2264 return true;
2265 }
2266 }
16772267 nativeGenerateScancodeForUnichar(c);
16782268 }
16792269
17062296 while (beforeLength-- > 0) {
17072297 boolean ret_key = sendKeyEvent(new KeyEvent(KeyEvent.ACTION_DOWN, KeyEvent.KEYCODE_DEL))
17082298 && sendKeyEvent(new KeyEvent(KeyEvent.ACTION_UP, KeyEvent.KEYCODE_DEL));
1709 ret = ret && ret_key;
2299 ret = ret && ret_key;
17102300 }
17112301 return ret;
17122302 }
17252315
17262316
17272317 class SDLClipboardHandler_API11 implements
1728 SDLClipboardHandler,
2318 SDLClipboardHandler,
17292319 android.content.ClipboardManager.OnPrimaryClipChangedListener {
17302320
17312321 protected android.content.ClipboardManager mClipMgr;
17562346 mClipMgr.setText(string);
17572347 mClipMgr.addPrimaryClipChangedListener(this);
17582348 }
1759
2349
17602350 @Override
17612351 public void onPrimaryClipChanged() {
17622352 SDLActivity.onNativeClipboardChanged();
17642354
17652355 }
17662356
1767 class SDLClipboardHandler_Old implements
1768 SDLClipboardHandler {
1769
1770 protected android.text.ClipboardManager mClipMgrOld;
1771
1772 SDLClipboardHandler_Old() {
1773 mClipMgrOld = (android.text.ClipboardManager) SDL.getContext().getSystemService(Context.CLIPBOARD_SERVICE);
1774 }
1775
1776 @Override
1777 public boolean clipboardHasText() {
1778 return mClipMgrOld.hasText();
1779 }
1780
1781 @Override
1782 public String clipboardGetText() {
1783 CharSequence text;
1784 text = mClipMgrOld.getText();
1785 if (text != null) {
1786 return text.toString();
1787 }
1788 return null;
1789 }
1790
1791 @Override
1792 public void clipboardSetText(String string) {
1793 mClipMgrOld.setText(string);
1794 }
1795 }
1796
00 package org.libsdl.app;
11
22 import android.media.*;
3 import android.os.Build;
34 import android.util.Log;
45
56 public class SDLAudioManager
1617
1718 // Audio
1819
19 /**
20 * This method is called by SDL using JNI.
21 */
22 public static int audioOpen(int sampleRate, boolean is16Bit, boolean isStereo, int desiredFrames) {
23 int channelConfig = isStereo ? AudioFormat.CHANNEL_CONFIGURATION_STEREO : AudioFormat.CHANNEL_CONFIGURATION_MONO;
24 int audioFormat = is16Bit ? AudioFormat.ENCODING_PCM_16BIT : AudioFormat.ENCODING_PCM_8BIT;
25 int frameSize = (isStereo ? 2 : 1) * (is16Bit ? 2 : 1);
26
27 Log.v(TAG, "SDL audio: wanted " + (isStereo ? "stereo" : "mono") + " " + (is16Bit ? "16-bit" : "8-bit") + " " + (sampleRate / 1000f) + "kHz, " + desiredFrames + " frames buffer");
20 protected static String getAudioFormatString(int audioFormat) {
21 switch (audioFormat) {
22 case AudioFormat.ENCODING_PCM_8BIT:
23 return "8-bit";
24 case AudioFormat.ENCODING_PCM_16BIT:
25 return "16-bit";
26 case AudioFormat.ENCODING_PCM_FLOAT:
27 return "float";
28 default:
29 return Integer.toString(audioFormat);
30 }
31 }
32
33 protected static int[] open(boolean isCapture, int sampleRate, int audioFormat, int desiredChannels, int desiredFrames) {
34 int channelConfig;
35 int sampleSize;
36 int frameSize;
37
38 Log.v(TAG, "Opening " + (isCapture ? "capture" : "playback") + ", requested " + desiredFrames + " frames of " + desiredChannels + " channel " + getAudioFormatString(audioFormat) + " audio at " + sampleRate + " Hz");
39
40 /* On older devices let's use known good settings */
41 if (Build.VERSION.SDK_INT < 21) {
42 if (desiredChannels > 2) {
43 desiredChannels = 2;
44 }
45 if (sampleRate < 8000) {
46 sampleRate = 8000;
47 } else if (sampleRate > 48000) {
48 sampleRate = 48000;
49 }
50 }
51
52 if (audioFormat == AudioFormat.ENCODING_PCM_FLOAT) {
53 int minSDKVersion = (isCapture ? 23 : 21);
54 if (Build.VERSION.SDK_INT < minSDKVersion) {
55 audioFormat = AudioFormat.ENCODING_PCM_16BIT;
56 }
57 }
58 switch (audioFormat)
59 {
60 case AudioFormat.ENCODING_PCM_8BIT:
61 sampleSize = 1;
62 break;
63 case AudioFormat.ENCODING_PCM_16BIT:
64 sampleSize = 2;
65 break;
66 case AudioFormat.ENCODING_PCM_FLOAT:
67 sampleSize = 4;
68 break;
69 default:
70 Log.v(TAG, "Requested format " + audioFormat + ", getting ENCODING_PCM_16BIT");
71 audioFormat = AudioFormat.ENCODING_PCM_16BIT;
72 sampleSize = 2;
73 break;
74 }
75
76 if (isCapture) {
77 switch (desiredChannels) {
78 case 1:
79 channelConfig = AudioFormat.CHANNEL_IN_MONO;
80 break;
81 case 2:
82 channelConfig = AudioFormat.CHANNEL_IN_STEREO;
83 break;
84 default:
85 Log.v(TAG, "Requested " + desiredChannels + " channels, getting stereo");
86 desiredChannels = 2;
87 channelConfig = AudioFormat.CHANNEL_IN_STEREO;
88 break;
89 }
90 } else {
91 switch (desiredChannels) {
92 case 1:
93 channelConfig = AudioFormat.CHANNEL_OUT_MONO;
94 break;
95 case 2:
96 channelConfig = AudioFormat.CHANNEL_OUT_STEREO;
97 break;
98 case 3:
99 channelConfig = AudioFormat.CHANNEL_OUT_STEREO | AudioFormat.CHANNEL_OUT_FRONT_CENTER;
100 break;
101 case 4:
102 channelConfig = AudioFormat.CHANNEL_OUT_QUAD;
103 break;
104 case 5:
105 channelConfig = AudioFormat.CHANNEL_OUT_QUAD | AudioFormat.CHANNEL_OUT_FRONT_CENTER;
106 break;
107 case 6:
108 channelConfig = AudioFormat.CHANNEL_OUT_5POINT1;
109 break;
110 case 7:
111 channelConfig = AudioFormat.CHANNEL_OUT_5POINT1 | AudioFormat.CHANNEL_OUT_BACK_CENTER;
112 break;
113 case 8:
114 if (Build.VERSION.SDK_INT >= 23) {
115 channelConfig = AudioFormat.CHANNEL_OUT_7POINT1_SURROUND;
116 } else {
117 Log.v(TAG, "Requested " + desiredChannels + " channels, getting 5.1 surround");
118 desiredChannels = 6;
119 channelConfig = AudioFormat.CHANNEL_OUT_5POINT1;
120 }
121 break;
122 default:
123 Log.v(TAG, "Requested " + desiredChannels + " channels, getting stereo");
124 desiredChannels = 2;
125 channelConfig = AudioFormat.CHANNEL_OUT_STEREO;
126 break;
127 }
128
129 /*
130 Log.v(TAG, "Speaker configuration (and order of channels):");
131
132 if ((channelConfig & 0x00000004) != 0) {
133 Log.v(TAG, " CHANNEL_OUT_FRONT_LEFT");
134 }
135 if ((channelConfig & 0x00000008) != 0) {
136 Log.v(TAG, " CHANNEL_OUT_FRONT_RIGHT");
137 }
138 if ((channelConfig & 0x00000010) != 0) {
139 Log.v(TAG, " CHANNEL_OUT_FRONT_CENTER");
140 }
141 if ((channelConfig & 0x00000020) != 0) {
142 Log.v(TAG, " CHANNEL_OUT_LOW_FREQUENCY");
143 }
144 if ((channelConfig & 0x00000040) != 0) {
145 Log.v(TAG, " CHANNEL_OUT_BACK_LEFT");
146 }
147 if ((channelConfig & 0x00000080) != 0) {
148 Log.v(TAG, " CHANNEL_OUT_BACK_RIGHT");
149 }
150 if ((channelConfig & 0x00000100) != 0) {
151 Log.v(TAG, " CHANNEL_OUT_FRONT_LEFT_OF_CENTER");
152 }
153 if ((channelConfig & 0x00000200) != 0) {
154 Log.v(TAG, " CHANNEL_OUT_FRONT_RIGHT_OF_CENTER");
155 }
156 if ((channelConfig & 0x00000400) != 0) {
157 Log.v(TAG, " CHANNEL_OUT_BACK_CENTER");
158 }
159 if ((channelConfig & 0x00000800) != 0) {
160 Log.v(TAG, " CHANNEL_OUT_SIDE_LEFT");
161 }
162 if ((channelConfig & 0x00001000) != 0) {
163 Log.v(TAG, " CHANNEL_OUT_SIDE_RIGHT");
164 }
165 */
166 }
167 frameSize = (sampleSize * desiredChannels);
28168
29169 // Let the user pick a larger buffer if they really want -- but ye
30170 // gods they probably shouldn't, the minimums are horrifyingly high
31171 // latency already
32 desiredFrames = Math.max(desiredFrames, (AudioTrack.getMinBufferSize(sampleRate, channelConfig, audioFormat) + frameSize - 1) / frameSize);
33
172 int minBufferSize;
173 if (isCapture) {
174 minBufferSize = AudioRecord.getMinBufferSize(sampleRate, channelConfig, audioFormat);
175 } else {
176 minBufferSize = AudioTrack.getMinBufferSize(sampleRate, channelConfig, audioFormat);
177 }
178 desiredFrames = Math.max(desiredFrames, (minBufferSize + frameSize - 1) / frameSize);
179
180 int[] results = new int[4];
181
182 if (isCapture) {
183 if (mAudioRecord == null) {
184 mAudioRecord = new AudioRecord(MediaRecorder.AudioSource.DEFAULT, sampleRate,
185 channelConfig, audioFormat, desiredFrames * frameSize);
186
187 // see notes about AudioTrack state in audioOpen(), above. Probably also applies here.
188 if (mAudioRecord.getState() != AudioRecord.STATE_INITIALIZED) {
189 Log.e(TAG, "Failed during initialization of AudioRecord");
190 mAudioRecord.release();
191 mAudioRecord = null;
192 return null;
193 }
194
195 mAudioRecord.startRecording();
196 }
197
198 results[0] = mAudioRecord.getSampleRate();
199 results[1] = mAudioRecord.getAudioFormat();
200 results[2] = mAudioRecord.getChannelCount();
201 results[3] = desiredFrames;
202
203 } else {
204 if (mAudioTrack == null) {
205 mAudioTrack = new AudioTrack(AudioManager.STREAM_MUSIC, sampleRate, channelConfig, audioFormat, desiredFrames * frameSize, AudioTrack.MODE_STREAM);
206
207 // Instantiating AudioTrack can "succeed" without an exception and the track may still be invalid
208 // Ref: https://android.googlesource.com/platform/frameworks/base/+/refs/heads/master/media/java/android/media/AudioTrack.java
209 // Ref: http://developer.android.com/reference/android/media/AudioTrack.html#getState()
210 if (mAudioTrack.getState() != AudioTrack.STATE_INITIALIZED) {
211 /* Try again, with safer values */
212
213 Log.e(TAG, "Failed during initialization of Audio Track");
214 mAudioTrack.release();
215 mAudioTrack = null;
216 return null;
217 }
218
219 mAudioTrack.play();
220 }
221
222 results[0] = mAudioTrack.getSampleRate();
223 results[1] = mAudioTrack.getAudioFormat();
224 results[2] = mAudioTrack.getChannelCount();
225 results[3] = desiredFrames;
226 }
227
228 Log.v(TAG, "Opening " + (isCapture ? "capture" : "playback") + ", got " + results[3] + " frames of " + results[2] + " channel " + getAudioFormatString(results[1]) + " audio at " + results[0] + " Hz");
229
230 return results;
231 }
232
233 /**
234 * This method is called by SDL using JNI.
235 */
236 public static int[] audioOpen(int sampleRate, int audioFormat, int desiredChannels, int desiredFrames) {
237 return open(false, sampleRate, audioFormat, desiredChannels, desiredFrames);
238 }
239
240 /**
241 * This method is called by SDL using JNI.
242 */
243 public static void audioWriteFloatBuffer(float[] buffer) {
34244 if (mAudioTrack == null) {
35 mAudioTrack = new AudioTrack(AudioManager.STREAM_MUSIC, sampleRate,
36 channelConfig, audioFormat, desiredFrames * frameSize, AudioTrack.MODE_STREAM);
37
38 // Instantiating AudioTrack can "succeed" without an exception and the track may still be invalid
39 // Ref: https://android.googlesource.com/platform/frameworks/base/+/refs/heads/master/media/java/android/media/AudioTrack.java
40 // Ref: http://developer.android.com/reference/android/media/AudioTrack.html#getState()
41
42 if (mAudioTrack.getState() != AudioTrack.STATE_INITIALIZED) {
43 Log.e(TAG, "Failed during initialization of Audio Track");
44 mAudioTrack = null;
45 return -1;
46 }
47
48 mAudioTrack.play();
49 }
50
51 Log.v(TAG, "SDL audio: got " + ((mAudioTrack.getChannelCount() >= 2) ? "stereo" : "mono") + " " + ((mAudioTrack.getAudioFormat() == AudioFormat.ENCODING_PCM_16BIT) ? "16-bit" : "8-bit") + " " + (mAudioTrack.getSampleRate() / 1000f) + "kHz, " + desiredFrames + " frames buffer");
52
53 return 0;
245 Log.e(TAG, "Attempted to make audio call with uninitialized audio!");
246 return;
247 }
248
249 for (int i = 0; i < buffer.length;) {
250 int result = mAudioTrack.write(buffer, i, buffer.length - i, AudioTrack.WRITE_BLOCKING);
251 if (result > 0) {
252 i += result;
253 } else if (result == 0) {
254 try {
255 Thread.sleep(1);
256 } catch(InterruptedException e) {
257 // Nom nom
258 }
259 } else {
260 Log.w(TAG, "SDL audio: error return from write(float)");
261 return;
262 }
263 }
54264 }
55265
56266 /**
57267 * This method is called by SDL using JNI.
58268 */
59269 public static void audioWriteShortBuffer(short[] buffer) {
270 if (mAudioTrack == null) {
271 Log.e(TAG, "Attempted to make audio call with uninitialized audio!");
272 return;
273 }
274
275 for (int i = 0; i < buffer.length;) {
276 int result = mAudioTrack.write(buffer, i, buffer.length - i);
277 if (result > 0) {
278 i += result;
279 } else if (result == 0) {
280 try {
281 Thread.sleep(1);
282 } catch(InterruptedException e) {
283 // Nom nom
284 }
285 } else {
286 Log.w(TAG, "SDL audio: error return from write(short)");
287 return;
288 }
289 }
290 }
291
292 /**
293 * This method is called by SDL using JNI.
294 */
295 public static void audioWriteByteBuffer(byte[] buffer) {
60296 if (mAudioTrack == null) {
61297 Log.e(TAG, "Attempted to make audio call with uninitialized audio!");
62298 return;
73309 // Nom nom
74310 }
75311 } else {
76 Log.w(TAG, "SDL audio: error return from write(short)");
77 return;
78 }
79 }
80 }
81
82 /**
83 * This method is called by SDL using JNI.
84 */
85 public static void audioWriteByteBuffer(byte[] buffer) {
86 if (mAudioTrack == null) {
87 Log.e(TAG, "Attempted to make audio call with uninitialized audio!");
88 return;
89 }
90
91 for (int i = 0; i < buffer.length; ) {
92 int result = mAudioTrack.write(buffer, i, buffer.length - i);
93 if (result > 0) {
94 i += result;
95 } else if (result == 0) {
96 try {
97 Thread.sleep(1);
98 } catch(InterruptedException e) {
99 // Nom nom
100 }
101 } else {
102312 Log.w(TAG, "SDL audio: error return from write(byte)");
103313 return;
104314 }
108318 /**
109319 * This method is called by SDL using JNI.
110320 */
111 public static int captureOpen(int sampleRate, boolean is16Bit, boolean isStereo, int desiredFrames) {
112 int channelConfig = isStereo ? AudioFormat.CHANNEL_CONFIGURATION_STEREO : AudioFormat.CHANNEL_CONFIGURATION_MONO;
113 int audioFormat = is16Bit ? AudioFormat.ENCODING_PCM_16BIT : AudioFormat.ENCODING_PCM_8BIT;
114 int frameSize = (isStereo ? 2 : 1) * (is16Bit ? 2 : 1);
115
116 Log.v(TAG, "SDL capture: wanted " + (isStereo ? "stereo" : "mono") + " " + (is16Bit ? "16-bit" : "8-bit") + " " + (sampleRate / 1000f) + "kHz, " + desiredFrames + " frames buffer");
117
118 // Let the user pick a larger buffer if they really want -- but ye
119 // gods they probably shouldn't, the minimums are horrifyingly high
120 // latency already
121 desiredFrames = Math.max(desiredFrames, (AudioRecord.getMinBufferSize(sampleRate, channelConfig, audioFormat) + frameSize - 1) / frameSize);
122
123 if (mAudioRecord == null) {
124 mAudioRecord = new AudioRecord(MediaRecorder.AudioSource.DEFAULT, sampleRate,
125 channelConfig, audioFormat, desiredFrames * frameSize);
126
127 // see notes about AudioTrack state in audioOpen(), above. Probably also applies here.
128 if (mAudioRecord.getState() != AudioRecord.STATE_INITIALIZED) {
129 Log.e(TAG, "Failed during initialization of AudioRecord");
130 mAudioRecord.release();
131 mAudioRecord = null;
132 return -1;
133 }
134
135 mAudioRecord.startRecording();
136 }
137
138 Log.v(TAG, "SDL capture: got " + ((mAudioRecord.getChannelCount() >= 2) ? "stereo" : "mono") + " " + ((mAudioRecord.getAudioFormat() == AudioFormat.ENCODING_PCM_16BIT) ? "16-bit" : "8-bit") + " " + (mAudioRecord.getSampleRate() / 1000f) + "kHz, " + desiredFrames + " frames buffer");
139
140 return 0;
321 public static int[] captureOpen(int sampleRate, int audioFormat, int desiredChannels, int desiredFrames) {
322 return open(true, sampleRate, audioFormat, desiredChannels, desiredFrames);
323 }
324
325 /** This method is called by SDL using JNI. */
326 public static int captureReadFloatBuffer(float[] buffer, boolean blocking) {
327 return mAudioRecord.read(buffer, 0, buffer.length, blocking ? AudioRecord.READ_BLOCKING : AudioRecord.READ_NON_BLOCKING);
141328 }
142329
143330 /** This method is called by SDL using JNI. */
144331 public static int captureReadShortBuffer(short[] buffer, boolean blocking) {
145 // !!! FIXME: this is available in API Level 23. Until then, we always block. :(
146 //return mAudioRecord.read(buffer, 0, buffer.length, blocking ? AudioRecord.READ_BLOCKING : AudioRecord.READ_NON_BLOCKING);
147 return mAudioRecord.read(buffer, 0, buffer.length);
332 if (Build.VERSION.SDK_INT < 23) {
333 return mAudioRecord.read(buffer, 0, buffer.length);
334 } else {
335 return mAudioRecord.read(buffer, 0, buffer.length, blocking ? AudioRecord.READ_BLOCKING : AudioRecord.READ_NON_BLOCKING);
336 }
148337 }
149338
150339 /** This method is called by SDL using JNI. */
151340 public static int captureReadByteBuffer(byte[] buffer, boolean blocking) {
152 // !!! FIXME: this is available in API Level 23. Until then, we always block. :(
153 //return mAudioRecord.read(buffer, 0, buffer.length, blocking ? AudioRecord.READ_BLOCKING : AudioRecord.READ_NON_BLOCKING);
154 return mAudioRecord.read(buffer, 0, buffer.length);
155 }
156
341 if (Build.VERSION.SDK_INT < 23) {
342 return mAudioRecord.read(buffer, 0, buffer.length);
343 } else {
344 return mAudioRecord.read(buffer, 0, buffer.length, blocking ? AudioRecord.READ_BLOCKING : AudioRecord.READ_NON_BLOCKING);
345 }
346 }
157347
158348 /** This method is called by SDL using JNI. */
159349 public static void audioClose() {
173363 }
174364 }
175365
366 /** This method is called by SDL using JNI. */
367 public static void audioSetThreadPriority(boolean iscapture, int device_id) {
368 try {
369
370 /* Set thread name */
371 if (iscapture) {
372 Thread.currentThread().setName("SDLAudioC" + device_id);
373 } else {
374 Thread.currentThread().setName("SDLAudioP" + device_id);
375 }
376
377 /* Set thread priority */
378 android.os.Process.setThreadPriority(android.os.Process.THREAD_PRIORITY_AUDIO);
379
380 } catch (Exception e) {
381 Log.v(TAG, "modify thread properties failed " + e.toString());
382 }
383 }
384
176385 public static native int nativeSetupJNI();
177386 }
1010 import android.util.Log;
1111
1212
13 public class SDLControllerManager
13 public class SDLControllerManager
1414 {
1515
1616 public static native int nativeSetupJNI();
3535 private static final String TAG = "SDLControllerManager";
3636
3737 public static void initialize() {
38 mJoystickHandler = null;
39 mHapticHandler = null;
40
41 SDLControllerManager.setup();
42 }
43
44 public static void setup() {
45 if (Build.VERSION.SDK_INT >= 19) {
46 mJoystickHandler = new SDLJoystickHandler_API19();
47 } else if (Build.VERSION.SDK_INT >= 16) {
48 mJoystickHandler = new SDLJoystickHandler_API16();
49 } else if (Build.VERSION.SDK_INT >= 12) {
50 mJoystickHandler = new SDLJoystickHandler_API12();
51 } else {
52 mJoystickHandler = new SDLJoystickHandler();
53 }
54 mHapticHandler = new SDLHapticHandler();
38 if (mJoystickHandler == null) {
39 if (Build.VERSION.SDK_INT >= 19) {
40 mJoystickHandler = new SDLJoystickHandler_API19();
41 } else {
42 mJoystickHandler = new SDLJoystickHandler_API16();
43 }
44 }
45
46 if (mHapticHandler == null) {
47 if (Build.VERSION.SDK_INT >= 26) {
48 mHapticHandler = new SDLHapticHandler_API26();
49 } else {
50 mHapticHandler = new SDLHapticHandler();
51 }
52 }
5553 }
5654
5755 // Joystick glue code, just a series of stubs that redirect to the SDLJoystickHandler instance
7674 /**
7775 * This method is called by SDL using JNI.
7876 */
79 public static void hapticRun(int device_id, int length) {
80 mHapticHandler.run(device_id, length);
77 public static void hapticRun(int device_id, float intensity, int length) {
78 mHapticHandler.run(device_id, intensity, length);
79 }
80
81 /**
82 * This method is called by SDL using JNI.
83 */
84 public static void hapticStop(int device_id)
85 {
86 mHapticHandler.stop(device_id);
8187 }
8288
8389 // Check if a given device is considered a possible SDL joystick
9298
9399 /* This is called for every button press, so let's not spam the logs */
94100 /**
95 if ((sources & InputDevice.SOURCE_CLASS_JOYSTICK) == InputDevice.SOURCE_CLASS_JOYSTICK) {
96 Log.v(TAG, "Input device " + device.getName() + " is a joystick.");
101 if ((sources & InputDevice.SOURCE_CLASS_JOYSTICK) != 0) {
102 Log.v(TAG, "Input device " + device.getName() + " has class joystick.");
97103 }
98104 if ((sources & InputDevice.SOURCE_DPAD) == InputDevice.SOURCE_DPAD) {
99105 Log.v(TAG, "Input device " + device.getName() + " is a dpad.");
103109 }
104110 **/
105111
106 return (((sources & InputDevice.SOURCE_CLASS_JOYSTICK) == InputDevice.SOURCE_CLASS_JOYSTICK) ||
112 return ((sources & InputDevice.SOURCE_CLASS_JOYSTICK) != 0 ||
107113 ((sources & InputDevice.SOURCE_DPAD) == InputDevice.SOURCE_DPAD) ||
108114 ((sources & InputDevice.SOURCE_GAMEPAD) == InputDevice.SOURCE_GAMEPAD)
109115 );
111117
112118 }
113119
114 /* A null joystick handler for API level < 12 devices (the accelerometer is handled separately) */
115120 class SDLJoystickHandler {
116121
117122 /**
131136 }
132137
133138 /* Actual joystick functionality available for API >= 12 devices */
134 class SDLJoystickHandler_API12 extends SDLJoystickHandler {
139 class SDLJoystickHandler_API16 extends SDLJoystickHandler {
135140
136141 static class SDLJoystick {
137142 public int device_id;
143148 static class RangeComparator implements Comparator<InputDevice.MotionRange> {
144149 @Override
145150 public int compare(InputDevice.MotionRange arg0, InputDevice.MotionRange arg1) {
146 return arg0.getAxis() - arg1.getAxis();
151 // Some controllers, like the Moga Pro 2, return AXIS_GAS (22) for right trigger and AXIS_BRAKE (23) for left trigger - swap them so they're sorted in the right order for SDL
152 int arg0Axis = arg0.getAxis();
153 int arg1Axis = arg1.getAxis();
154 if (arg0Axis == MotionEvent.AXIS_GAS) {
155 arg0Axis = MotionEvent.AXIS_BRAKE;
156 } else if (arg0Axis == MotionEvent.AXIS_BRAKE) {
157 arg0Axis = MotionEvent.AXIS_GAS;
158 }
159 if (arg1Axis == MotionEvent.AXIS_GAS) {
160 arg1Axis = MotionEvent.AXIS_BRAKE;
161 } else if (arg1Axis == MotionEvent.AXIS_BRAKE) {
162 arg1Axis = MotionEvent.AXIS_GAS;
163 }
164
165 return arg0Axis - arg1Axis;
147166 }
148167 }
149168
150169 private ArrayList<SDLJoystick> mJoysticks;
151170
152 public SDLJoystickHandler_API12() {
171 public SDLJoystickHandler_API16() {
153172
154173 mJoysticks = new ArrayList<SDLJoystick>();
155174 }
253272 }
254273
255274 public String getJoystickDescriptor(InputDevice joystickDevice) {
275 String desc = joystickDevice.getDescriptor();
276
277 if (desc != null && !desc.isEmpty()) {
278 return desc;
279 }
280
256281 return joystickDevice.getName();
257282 }
258283 public int getProductId(InputDevice joystickDevice) {
263288 }
264289 public int getButtonMask(InputDevice joystickDevice) {
265290 return -1;
266 }
267 }
268
269 class SDLJoystickHandler_API16 extends SDLJoystickHandler_API12 {
270
271 @Override
272 public String getJoystickDescriptor(InputDevice joystickDevice) {
273 String desc = joystickDevice.getDescriptor();
274
275 if (desc != null && !desc.isEmpty()) {
276 return desc;
277 }
278
279 return super.getJoystickDescriptor(joystickDevice);
280291 }
281292 }
282293
386397 }
387398 }
388399
400 class SDLHapticHandler_API26 extends SDLHapticHandler {
401 @Override
402 public void run(int device_id, float intensity, int length) {
403 SDLHaptic haptic = getHaptic(device_id);
404 if (haptic != null) {
405 Log.d("SDL", "Rtest: Vibe with intensity " + intensity + " for " + length);
406 if (intensity == 0.0f) {
407 stop(device_id);
408 return;
409 }
410
411 int vibeValue = Math.round(intensity * 255);
412
413 if (vibeValue > 255) {
414 vibeValue = 255;
415 }
416 if (vibeValue < 1) {
417 stop(device_id);
418 return;
419 }
420 try {
421 haptic.vib.vibrate(VibrationEffect.createOneShot(length, vibeValue));
422 }
423 catch (Exception e) {
424 // Fall back to the generic method, which uses DEFAULT_AMPLITUDE, but works even if
425 // something went horribly wrong with the Android 8.0 APIs.
426 haptic.vib.vibrate(length);
427 }
428 }
429 }
430 }
431
389432 class SDLHapticHandler {
390433
391434 class SDLHaptic {
395438 }
396439
397440 private ArrayList<SDLHaptic> mHaptics;
398
441
399442 public SDLHapticHandler() {
400443 mHaptics = new ArrayList<SDLHaptic>();
401444 }
402445
403 public void run(int device_id, int length) {
446 public void run(int device_id, float intensity, int length) {
404447 SDLHaptic haptic = getHaptic(device_id);
405448 if (haptic != null) {
406 haptic.vib.vibrate (length);
449 haptic.vib.vibrate(length);
450 }
451 }
452
453 public void stop(int device_id) {
454 SDLHaptic haptic = getHaptic(device_id);
455 if (haptic != null) {
456 haptic.vib.cancel();
407457 }
408458 }
409459
410460 public void pollHapticDevices() {
411
461
412462 final int deviceId_VIBRATOR_SERVICE = 999999;
413463 boolean hasVibratorService = false;
414464
418468 // so the first controller seen by SDL matches what the receiver
419469 // considers to be the first controller
420470
421 if (Build.VERSION.SDK_INT >= 16)
422 {
423 for (int i = deviceIds.length - 1; i > -1; i--) {
424 SDLHaptic haptic = getHaptic(deviceIds[i]);
425 if (haptic == null) {
426 InputDevice device = InputDevice.getDevice(deviceIds[i]);
427 Vibrator vib = device.getVibrator();
428 if (vib.hasVibrator()) {
429 haptic = new SDLHaptic();
430 haptic.device_id = deviceIds[i];
431 haptic.name = device.getName();
432 haptic.vib = vib;
433 mHaptics.add(haptic);
434 SDLControllerManager.nativeAddHaptic(haptic.device_id, haptic.name);
435 }
471 for (int i = deviceIds.length - 1; i > -1; i--) {
472 SDLHaptic haptic = getHaptic(deviceIds[i]);
473 if (haptic == null) {
474 InputDevice device = InputDevice.getDevice(deviceIds[i]);
475 Vibrator vib = device.getVibrator();
476 if (vib.hasVibrator()) {
477 haptic = new SDLHaptic();
478 haptic.device_id = deviceIds[i];
479 haptic.name = device.getName();
480 haptic.vib = vib;
481 mHaptics.add(haptic);
482 SDLControllerManager.nativeAddHaptic(haptic.device_id, haptic.name);
436483 }
437484 }
438485 }
440487 /* Check VIBRATOR_SERVICE */
441488 Vibrator vib = (Vibrator) SDL.getContext().getSystemService(Context.VIBRATOR_SERVICE);
442489 if (vib != null) {
443 if (Build.VERSION.SDK_INT >= 11) {
444 hasVibratorService = vib.hasVibrator();
445 } else {
446 hasVibratorService = true;
447 }
490 hasVibratorService = vib.hasVibrator();
448491
449492 if (hasVibratorService) {
450493 SDLHaptic haptic = getHaptic(deviceId_VIBRATOR_SERVICE);
452495 haptic = new SDLHaptic();
453496 haptic.device_id = deviceId_VIBRATOR_SERVICE;
454497 haptic.name = "VIBRATOR_SERVICE";
455 haptic.vib = vib;
498 haptic.vib = vib;
456499 mHaptics.add(haptic);
457500 SDLControllerManager.nativeAddHaptic(haptic.device_id, haptic.name);
458501 }
494537 }
495538 }
496539 return null;
497 }
540 }
498541 }
499542
500543 class SDLGenericMotionListener_API12 implements View.OnGenericMotionListener {
511554 return SDLControllerManager.handleJoystickMotionEvent(event);
512555
513556 case InputDevice.SOURCE_MOUSE:
514 if (!SDLActivity.mSeparateMouseAndTouch) {
515 break;
516 }
517557 action = event.getActionMasked();
518558 switch (action) {
519559 case MotionEvent.ACTION_SCROLL:
520560 x = event.getAxisValue(MotionEvent.AXIS_HSCROLL, 0);
521561 y = event.getAxisValue(MotionEvent.AXIS_VSCROLL, 0);
522 SDLActivity.onNativeMouse(0, action, x, y);
562 SDLActivity.onNativeMouse(0, action, x, y, false);
523563 return true;
524564
525565 case MotionEvent.ACTION_HOVER_MOVE:
526566 x = event.getX(0);
527567 y = event.getY(0);
528568
529 SDLActivity.onNativeMouse(0, action, x, y);
569 SDLActivity.onNativeMouse(0, action, x, y, false);
530570 return true;
531571
532572 default:
541581 // Event was not managed
542582 return false;
543583 }
544 }
545
584
585 public boolean supportsRelativeMouse() {
586 return false;
587 }
588
589 public boolean inRelativeMode() {
590 return false;
591 }
592
593 public boolean setRelativeMouseEnabled(boolean enabled) {
594 return false;
595 }
596
597 public void reclaimRelativeMouseModeIfNeeded()
598 {
599
600 }
601
602 public float getEventX(MotionEvent event) {
603 return event.getX(0);
604 }
605
606 public float getEventY(MotionEvent event) {
607 return event.getY(0);
608 }
609
610 }
611
612 class SDLGenericMotionListener_API24 extends SDLGenericMotionListener_API12 {
613 // Generic Motion (mouse hover, joystick...) events go here
614
615 private boolean mRelativeModeEnabled;
616
617 @Override
618 public boolean onGenericMotion(View v, MotionEvent event) {
619
620 // Handle relative mouse mode
621 if (mRelativeModeEnabled) {
622 if (event.getSource() == InputDevice.SOURCE_MOUSE) {
623 int action = event.getActionMasked();
624 if (action == MotionEvent.ACTION_HOVER_MOVE) {
625 float x = event.getAxisValue(MotionEvent.AXIS_RELATIVE_X);
626 float y = event.getAxisValue(MotionEvent.AXIS_RELATIVE_Y);
627 SDLActivity.onNativeMouse(0, action, x, y, true);
628 return true;
629 }
630 }
631 }
632
633 // Event was not managed, call SDLGenericMotionListener_API12 method
634 return super.onGenericMotion(v, event);
635 }
636
637 @Override
638 public boolean supportsRelativeMouse() {
639 return true;
640 }
641
642 @Override
643 public boolean inRelativeMode() {
644 return mRelativeModeEnabled;
645 }
646
647 @Override
648 public boolean setRelativeMouseEnabled(boolean enabled) {
649 mRelativeModeEnabled = enabled;
650 return true;
651 }
652
653 @Override
654 public float getEventX(MotionEvent event) {
655 if (mRelativeModeEnabled) {
656 return event.getAxisValue(MotionEvent.AXIS_RELATIVE_X);
657 }
658 else {
659 return event.getX(0);
660 }
661 }
662
663 @Override
664 public float getEventY(MotionEvent event) {
665 if (mRelativeModeEnabled) {
666 return event.getAxisValue(MotionEvent.AXIS_RELATIVE_Y);
667 }
668 else {
669 return event.getY(0);
670 }
671 }
672 }
673
674
675 class SDLGenericMotionListener_API26 extends SDLGenericMotionListener_API24 {
676 // Generic Motion (mouse hover, joystick...) events go here
677 private boolean mRelativeModeEnabled;
678
679 @Override
680 public boolean onGenericMotion(View v, MotionEvent event) {
681 float x, y;
682 int action;
683
684 switch ( event.getSource() ) {
685 case InputDevice.SOURCE_JOYSTICK:
686 case InputDevice.SOURCE_GAMEPAD:
687 case InputDevice.SOURCE_DPAD:
688 return SDLControllerManager.handleJoystickMotionEvent(event);
689
690 case InputDevice.SOURCE_MOUSE:
691 // DeX desktop mouse cursor is a separate non-standard input type.
692 case InputDevice.SOURCE_MOUSE | InputDevice.SOURCE_TOUCHSCREEN:
693 action = event.getActionMasked();
694 switch (action) {
695 case MotionEvent.ACTION_SCROLL:
696 x = event.getAxisValue(MotionEvent.AXIS_HSCROLL, 0);
697 y = event.getAxisValue(MotionEvent.AXIS_VSCROLL, 0);
698 SDLActivity.onNativeMouse(0, action, x, y, false);
699 return true;
700
701 case MotionEvent.ACTION_HOVER_MOVE:
702 x = event.getX(0);
703 y = event.getY(0);
704 SDLActivity.onNativeMouse(0, action, x, y, false);
705 return true;
706
707 default:
708 break;
709 }
710 break;
711
712 case InputDevice.SOURCE_MOUSE_RELATIVE:
713 action = event.getActionMasked();
714 switch (action) {
715 case MotionEvent.ACTION_SCROLL:
716 x = event.getAxisValue(MotionEvent.AXIS_HSCROLL, 0);
717 y = event.getAxisValue(MotionEvent.AXIS_VSCROLL, 0);
718 SDLActivity.onNativeMouse(0, action, x, y, false);
719 return true;
720
721 case MotionEvent.ACTION_HOVER_MOVE:
722 x = event.getX(0);
723 y = event.getY(0);
724 SDLActivity.onNativeMouse(0, action, x, y, true);
725 return true;
726
727 default:
728 break;
729 }
730 break;
731
732 default:
733 break;
734 }
735
736 // Event was not managed
737 return false;
738 }
739
740 @Override
741 public boolean supportsRelativeMouse() {
742 return (!SDLActivity.isDeXMode() || (Build.VERSION.SDK_INT >= 27));
743 }
744
745 @Override
746 public boolean inRelativeMode() {
747 return mRelativeModeEnabled;
748 }
749
750 @Override
751 public boolean setRelativeMouseEnabled(boolean enabled) {
752 if (!SDLActivity.isDeXMode() || (Build.VERSION.SDK_INT >= 27)) {
753 if (enabled) {
754 SDLActivity.getContentView().requestPointerCapture();
755 }
756 else {
757 SDLActivity.getContentView().releasePointerCapture();
758 }
759 mRelativeModeEnabled = enabled;
760 return true;
761 }
762 else
763 {
764 return false;
765 }
766 }
767
768 @Override
769 public void reclaimRelativeMouseModeIfNeeded()
770 {
771 if (mRelativeModeEnabled && !SDLActivity.isDeXMode()) {
772 SDLActivity.getContentView().requestPointerCapture();
773 }
774 }
775
776 @Override
777 public float getEventX(MotionEvent event) {
778 // Relative mouse in capture mode will only have relative for X/Y
779 return event.getX(0);
780 }
781
782 @Override
783 public float getEventY(MotionEvent event) {
784 // Relative mouse in capture mode will only have relative for X/Y
785 return event.getY(0);
786 }
787 }
1313 # Add your application source files here...
1414 LOCAL_SRC_FILES := $(SDL_PATH)/src/main/android/SDL_android_main.c \
1515 ../../../../../../src/main.cpp \
16 ../../../../../../src/BehaviorAlly.cpp \
17 ../../../../../../src/Entity.cpp \
1816 ../../../../../../src/Animation.cpp \
1917 ../../../../../../src/AnimationManager.cpp \
18 ../../../../../../src/AnimationMedia.cpp \
2019 ../../../../../../src/AnimationSet.cpp \
2120 ../../../../../../src/AStarContainer.cpp \
2221 ../../../../../../src/AStarNode.cpp \
2322 ../../../../../../src/Avatar.cpp \
24 ../../../../../../src/BehaviorStandard.cpp \
23 ../../../../../../src/Camera.cpp \
2524 ../../../../../../src/CampaignManager.cpp \
2625 ../../../../../../src/CombatText.cpp \
2726 ../../../../../../src/CursorManager.cpp \
2827 ../../../../../../src/DeviceList.cpp \
2928 ../../../../../../src/EffectManager.cpp \
30 ../../../../../../src/Enemy.cpp \
31 ../../../../../../src/EnemyBehavior.cpp \
3229 ../../../../../../src/EnemyGroupManager.cpp \
33 ../../../../../../src/EnemyManager.cpp \
30 ../../../../../../src/Entity.cpp \
31 ../../../../../../src/EntityBehavior.cpp \
32 ../../../../../../src/EntityManager.cpp \
3433 ../../../../../../src/EngineSettings.cpp \
3534 ../../../../../../src/EventManager.cpp \
3635 ../../../../../../src/FileParser.cpp \
3736 ../../../../../../src/FontEngine.cpp \
3837 ../../../../../../src/GameSlotPreview.cpp \
3938 ../../../../../../src/GameState.cpp \
40 ../../../../../../src/GameStateConfigBase.cpp \
41 ../../../../../../src/GameStateConfigDesktop.cpp \
39 ../../../../../../src/GameStateConfig.cpp \
4240 ../../../../../../src/GameStateCutscene.cpp \
4341 ../../../../../../src/GameStateTitle.cpp \
4442 ../../../../../../src/GameStateLoad.cpp \
6361 ../../../../../../src/MenuActiveEffects.cpp \
6462 ../../../../../../src/MenuBook.cpp \
6563 ../../../../../../src/MenuCharacter.cpp \
64 ../../../../../../src/MenuConfig.cpp \
6665 ../../../../../../src/MenuConfirm.cpp \
6766 ../../../../../../src/MenuDevConsole.cpp \
6867 ../../../../../../src/MenuEnemy.cpp \
6968 ../../../../../../src/MenuExit.cpp \
69 ../../../../../../src/MenuGameOver.cpp \
7070 ../../../../../../src/MenuHUDLog.cpp \
7171 ../../../../../../src/MenuInventory.cpp \
7272 ../../../../../../src/MenuItemStorage.cpp \
7373 ../../../../../../src/MenuLog.cpp \
7474 ../../../../../../src/MenuManager.cpp \
7575 ../../../../../../src/MenuMiniMap.cpp \
76 ../../../../../../src/MenuMovementType.cpp \
7677 ../../../../../../src/MenuNumPicker.cpp \
7778 ../../../../../../src/MenuPowers.cpp \
7879 ../../../../../../src/MenuStash.cpp \
111112 ../../../../../../src/Widget.cpp \
112113 ../../../../../../src/WidgetCheckBox.cpp \
113114 ../../../../../../src/WidgetButton.cpp \
115 ../../../../../../src/WidgetHorizontalList.cpp \
114116 ../../../../../../src/WidgetInput.cpp \
115117 ../../../../../../src/WidgetLabel.cpp \
116118 ../../../../../../src/WidgetListBox.cpp \
44 google()
55 }
66 dependencies {
7 classpath 'com.android.tools.build:gradle:3.1.0'
7 classpath 'com.android.tools.build:gradle:4.0.1'
88 }
99 }
1010
00 <?xml version="1.0" encoding="UTF-8"?>
1 <module external.linked.project.id="flare-android-project" external.linked.project.path="$MODULE_DIR$" external.root.project.path="$MODULE_DIR$" external.system.id="GRADLE" type="JAVA_MODULE" version="4">
1 <module external.linked.project.id="flare-android-project" external.linked.project.path="$MODULE_DIR$" external.root.project.path="$MODULE_DIR$" external.system.id="GRADLE" external.system.module.group="" external.system.module.version="unspecified" type="JAVA_MODULE" version="4">
22 <component name="FacetManager">
33 <facet type="java-gradle" name="Java-Gradle">
44 <configuration>
1212 <content url="file://$MODULE_DIR$">
1313 <excludeFolder url="file://$MODULE_DIR$/.gradle" />
1414 </content>
15 <orderEntry type="jdk" jdkName="1.8" jdkType="JavaSDK" />
15 <orderEntry type="inheritedJdk" />
1616 <orderEntry type="sourceFolder" forTests="false" />
1717 </component>
1818 </module>
0 #Thu Apr 05 15:20:13 EDT 2018
0 #Mon Jun 08 12:29:11 EDT 2020
11 distributionBase=GRADLE_USER_HOME
22 distributionPath=wrapper/dists
33 zipStoreBase=GRADLE_USER_HOME
44 zipStorePath=wrapper/dists
5 distributionUrl=https\://services.gradle.org/distributions/gradle-4.4-all.zip
5 distributionUrl=https\://services.gradle.org/distributions/gradle-6.1.1-all.zip
88 cmake .
99
1010 emcc \
11 -Isrc/ \
12 src/*.cpp \
13 -O3 \
14 -s ASSERTIONS=1 \
15 -s ALLOW_MEMORY_GROWTH=1 \
16 -s USE_SDL=2 \
17 -s USE_SDL_IMAGE=2 \
18 -s SDL2_IMAGE_FORMATS='["png"]' \
11 -v \
12 -Isrc/ \
13 src/*.cpp \
14 -O3 \
15 -s ASSERTIONS=1 \
16 -s ALLOW_MEMORY_GROWTH=1 \
17 -s USE_SDL=2 \
18 -s USE_SDL_IMAGE=2 \
19 -s SDL2_IMAGE_FORMATS='["png"]' \
1920 -s USE_SDL_TTF=2 \
20 --preload-file mods \
21 -o emscripten/index.html
21 -s USE_SDL_MIXER=2 \
22 -s "EXTRA_EXPORTED_RUNTIME_METHODS=['print']" \
23 -lidbfs.js \
24 --preload-file mods \
25 --use-preload-cache \
26 -o emscripten/index.html
2227
2328 rm -rf mods/fantasycore
2429 rm -rf mods/empyrean_campaign
2222 text=Anton Golov
2323 text=Artur Rojek
2424 text=blazindragon
25 text=bloodhero
2526 text=Bonbadil
2627 text=Chris Oelmueller
2728 text=David Bariod
3132 text=Juan PabloTamayo
3233 text=Kitano
3334 text=Kyle Belanger
35 text=Leszek Cimała
3436 text=LongerDev
3537 text=Manuel A. Fernandez Montecelo
3638 text=Matthew Krohn
39 text=m7600
3740 text=Nojan
41 text=nwtour
3842 text=Pavel Kirpichyov
43 text=r-a-cristian-93
3944 text=runtime-x86
4045 text=Ryan Dansie
4146 separator=32
5156 text=Adrian Chaves Fernandez
5257 text=Andrea Ranaldi
5358 text=Andreas Berheim Brudin
59 text=Andrey Kapitonov
5460 text=Bas Doodeman
61 text=Błażej Pęksyk
5562 text=Bonbadil
63 text=bzt
5664 text=Carlos Sanchez
5765 text=Chris Oelmueller
5866 text=Christoph J. Thompson
67 text=Christophe Nemo
5968 text=Denis Lysenko
6069 text=Diego J. Romero López
6170 text=dumaosen
71 text=Elias Nykrem
6272 text=Emil
6373 text=Eric R
6474 text=Evgen Pavlov
6575 text=Fabio Loli
6676 text=Gianfranco Del Borrello
6777 text=Giovanni Dalla Torre
78 text=Grzegorz Szymaszek
6879 text=GunChleoc
6980 text=Hans Joachim Desserud
7081 text=hark34
7182 text=Igor Paliychuk
7283 text=Janet Hunt
7384 text=Juan Pablo Tamayo
85 text=Kor_OfenTHource
86 text=(bnk159hair, kangdonghun1230, HunSeongPark, paparad0x)
7487 text=losine
7588 text=Marc Tormo i Bochaca
89 text=Maria Cano
90 text=McSinyx
7691 text=Michael Papageorgiou
7792 text=Mikhail Karalevich
7893 text=Miro Jánošík
94 text=MiroslavR
7995 text=Mykola Franchuk
8096 text=MOB2
8197 text=Morgan Strauss
8298 text=Nea Retrogamer
83 text=Nguyễn Gia Phong
8499 text=Nikita Vanku
85100 text=Paul Wortmann
86101 text=Pawel Puszczynski
91106 text=Stefan Beller
92107 text=Stefano Peris
93108 text=sujiniku
109 text=syl_
94110 text=Thomas Glamsch
95111 text=Timo Sievänen
96112 text=Vicente Monteiro
0 # duration, in frames
10 duration=1s
2
3 # speed, in pixels per frame
1 fade_duration=400ms
42 speed=1
44 id=font_regular
55 style=default,LiberationSans-Regular.ttf,14,1
66 style=ja,unifont-10.0.06.ttf,14,1
7 style=ko,unifont-10.0.06.ttf,14,1
78 style=zh,unifont-10.0.06.ttf,14,1
89
910 [font]
1011 id=font_captions
1112 style=default,LiberationSans-Regular.ttf,18,1
1213 style=ja,unifont-10.0.06.ttf,18,1
14 style=ko,unifont-10.0.06.ttf,18,1
1315 style=zh,unifont-10.0.06.ttf,18,1
1416
1517 [font]
1618 id=font_subtitles
1719 style=default,LiberationSans-Regular.ttf,16,1
1820 style=ja,unifont-10.0.06.ttf,16,1
21 style=ko,unifont-10.0.06.ttf,16,1
1922 style=zh,unifont-10.0.06.ttf,16,1
2023
1313 el=Ελληνικά
1414 en=English
1515 es=Español
16 eu=Basque
1617 fi=Suomi
1718 fr=Français
1819 gd=Gàidhlig
1920 gl=Galego
21 hu=Magyar
2022 # he=עברית
2123 it=Italiano
2224 ja=Japanese
25 ko=Korean
2326 nb=Norsk Bokmål
2427 nl=Nederlands
2528 pl=Polski
22 #
33 # FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
44 # Translators:
5 # Zmicer Turok <zmicerturok@gmail.com>, 2018
5 # Zmicer Turok <nashtlumach@gmail.com>, 2018
66 #
77 msgid ""
88 msgstr ""
99 "Project-Id-Version: PACKAGE VERSION\n"
1010 "Report-Msgid-Bugs-To: \n"
11 "POT-Creation-Date: 2018-11-13 17:21+\n"
11 "POT-Creation-Date: 2019-07-29 09:34+\n"
1212 "PO-Revision-Date: 2018-03-28 19:16+0000\n"
13 "Last-Translator: Zmicer Turok <zmicerturok@gmail.com>, 2018\n"
13 "Last-Translator: Zmicer Turok <nashtlumach@gmail.com>, 2018\n"
1414 "Language-Team: Belarusian (https://www.transifex.com/flareorg/teams/84925/be/)\n"
1515 "MIME-Version: 1.0\n"
1616 "Content-Type: text/plain; charset=UTF-8\n"
9090 msgid "Lead Programmers"
9191 msgstr "Вядучыя праграмісты"
9292
93 #: ../cutscenes/credits.txt:12
94 msgid "Clint Bellanger"
95 msgstr "Clint Bellanger"
96
97 #: ../cutscenes/credits.txt:13
98 msgid "Henrik Andersson"
99 msgstr "Henrik Andersson"
100
101 #: ../cutscenes/credits.txt:14
102 msgid "Igor Paliychuk"
103 msgstr "Igor Paliychuk"
104
105 #: ../cutscenes/credits.txt:15
106 msgid "Justin Jacobs"
107 msgstr "Justin Jacobs"
108
109 #: ../cutscenes/credits.txt:16
110 msgid "Stefan Beller"
111 msgstr "Stefan Beller"
112
113 #: ../cutscenes/credits.txt:17
114 msgid "Thane Brimhall"
115 msgstr "Thane Brimhall"
116
11793 #: ../cutscenes/credits.txt:20
11894 msgid "Programmers"
11995 msgstr "Праграмісты"
120
121 #: ../cutscenes/credits.txt:22
122 msgid "Andrew Engelbrecht"
123 msgstr "Andrew Engelbrecht"
124
125 #: ../cutscenes/credits.txt:23
126 msgid "Anton Golov"
127 msgstr "Anton Golov"
128
129 #: ../cutscenes/credits.txt:24
130 msgid "Artur Rojek"
131 msgstr "Artur Rojek"
132
133 #: ../cutscenes/credits.txt:25
134 msgid "blazindragon"
135 msgstr "blazindragon"
136
137 #: ../cutscenes/credits.txt:26
138 msgid "Bonbadil"
139 msgstr "Bonbadil"
140
141 #: ../cutscenes/credits.txt:27
142 msgid "Chris Oelmueller"
143 msgstr "Chris Oelmueller"
144
145 #: ../cutscenes/credits.txt:28
146 msgid "David Bariod"
147 msgstr "David Bariod"
148
149 #: ../cutscenes/credits.txt:29
150 msgid "Daniel Santos"
151 msgstr "Daniel Santos"
152
153 #: ../cutscenes/credits.txt:30
154 msgid "Gallaecio"
155 msgstr "Gallaecio"
156
157 #: ../cutscenes/credits.txt:31
158 msgid "Joseph Bleu"
159 msgstr "Joseph Bleu"
160
161 #: ../cutscenes/credits.txt:32
162 msgid "Juan PabloTamayo"
163 msgstr "Juan PabloTamayo"
164
165 #: ../cutscenes/credits.txt:33
166 msgid "Kitano"
167 msgstr "Kitano"
168
169 #: ../cutscenes/credits.txt:34
170 msgid "Kyle Belanger"
171 msgstr "Kyle Belanger"
172
173 #: ../cutscenes/credits.txt:35
174 msgid "LongerDev"
175 msgstr "LongerDev"
176
177 #: ../cutscenes/credits.txt:36
178 msgid "Manuel A. Fernandez Montecelo"
179 msgstr "Manuel A. Fernandez Montecelo"
180
181 #: ../cutscenes/credits.txt:37
182 msgid "Matthew Krohn"
183 msgstr "Matthew Krohn"
184
185 #: ../cutscenes/credits.txt:38
186 msgid "Nojan"
187 msgstr "Nojan"
188
189 #: ../cutscenes/credits.txt:39
190 msgid "Pavel Kirpichyov"
191 msgstr "Pavel Kirpichyov"
192
193 #: ../cutscenes/credits.txt:40
194 msgid "runtime-x86"
195 msgstr "runtime-x86"
196
197 #: ../cutscenes/credits.txt:41
198 msgid "Ryan Dansie"
199 msgstr "Ryan Dansie"
20096
20197 #: ../cutscenes/credits.txt:44
20298 msgid "Default Art"
206102 msgid "Translators"
207103 msgstr "Перакладчыкі"
208104
209 #: ../cutscenes/credits.txt:51
210 msgid "Ademaro"
211 msgstr "Ademaro"
212
213 #: ../cutscenes/credits.txt:52
214 msgid "Adrian Chaves Fernandez"
215 msgstr "Adrian Chaves Fernandez"
216
217 #: ../cutscenes/credits.txt:53
218 msgid "Andrea Ranaldi"
219 msgstr "Andrea Ranaldi"
220
221 #: ../cutscenes/credits.txt:54
222 msgid "Andreas Berheim Brudin"
223 msgstr "Andreas Berheim Brudin"
224
225 #: ../cutscenes/credits.txt:55
226 msgid "Bas Doodeman"
227 msgstr "Bas Doodeman"
228
229 #: ../cutscenes/credits.txt:57
230 msgid "Carlos Sanchez"
231 msgstr "Carlos Sanchez"
232
233 #: ../cutscenes/credits.txt:59
234 msgid "Christoph J. Thompson"
235 msgstr "Christoph J. Thompson"
236
237 #: ../cutscenes/credits.txt:60
238 msgid "Denis Lysenko"
239 msgstr "Denis Lysenko"
240
241 #: ../cutscenes/credits.txt:61
242 msgid "Diego J. Romero López"
243 msgstr "Diego J. Romero Lopez"
244
245 #: ../cutscenes/credits.txt:62
246 msgid "dumaosen"
247 msgstr "dumaosen"
248
249 #: ../cutscenes/credits.txt:63
250 msgid "Emil"
251 msgstr "Эміль"
252
253 #: ../cutscenes/credits.txt:64
254 msgid "Eric R"
255 msgstr "Eric R"
256
257 #: ../cutscenes/credits.txt:65
258 msgid "Evgen Pavlov"
259 msgstr "Evgen Pavlov"
260
261 #: ../cutscenes/credits.txt:66
262 msgid "Fabio Loli"
263 msgstr ""
264
265 #: ../cutscenes/credits.txt:67
266 msgid "Gianfranco Del Borrello"
267 msgstr "Gianfranco Del Borrello"
268
269 #: ../cutscenes/credits.txt:68
270 msgid "Giovanni Dalla Torre"
271 msgstr "Giovanni Dalla Torre"
272
273 #: ../cutscenes/credits.txt:69
274 msgid "GunChleoc"
275 msgstr "GunChleoc"
276
277 #: ../cutscenes/credits.txt:70
278 msgid "Hans Joachim Desserud"
279 msgstr "Hans Joachim Desserud"
280
281 #: ../cutscenes/credits.txt:71
282 msgid "hark34"
283 msgstr "hark34"
284
285 #: ../cutscenes/credits.txt:73
286 msgid "Janet Hunt"
287 msgstr "Janet Hunt"
288
289 #: ../cutscenes/credits.txt:74
290 msgid "Juan Pablo Tamayo"
291 msgstr "Juan Pablo Tamayo"
292
293 #: ../cutscenes/credits.txt:75
294 msgid "losine"
295 msgstr "losine"
296
297 #: ../cutscenes/credits.txt:76
298 msgid "Marc Tormo i Bochaca"
299 msgstr ""
300
301 #: ../cutscenes/credits.txt:77
302 msgid "Michael Papageorgiou"
303 msgstr "Michael Papageorgiou"
304
305 #: ../cutscenes/credits.txt:78
306 msgid "Mikhail Karalevich"
307 msgstr "Mikhail Karalevich"
308
309 #: ../cutscenes/credits.txt:79
310 msgid "Miro Jánošík"
311 msgstr "Miro Jánošík"
312
313 #: ../cutscenes/credits.txt:80
314 msgid "Mykola Franchuk"
315 msgstr ""
316
317 #: ../cutscenes/credits.txt:81
318 msgid "MOB2"
319 msgstr "MOB2"
320
321 #: ../cutscenes/credits.txt:82
322 msgid "Morgan Strauss"
323 msgstr "Morgan Strauss"
324
325 #: ../cutscenes/credits.txt:83
326 msgid "Nea Retrogamer"
327 msgstr "Nea Retrogamer"
328
329 #: ../cutscenes/credits.txt:84
330 msgid "Nguyễn Gia Phong"
331 msgstr "Nguyen Gia Phong"
332
333 #: ../cutscenes/credits.txt:85
334 msgid "Nikita Vanku"
335 msgstr "Nikita Vanku"
336
337 #: ../cutscenes/credits.txt:86
338 msgid "Paul Wortmann"
339 msgstr "Paul Wortmann"
340
341 #: ../cutscenes/credits.txt:87
342 msgid "Pawel Puszczynski"
343 msgstr "Pawel Puszczynski"
344
345 #: ../cutscenes/credits.txt:88
346 msgid "Quentin Stievenart"
347 msgstr "Quentin Stievenart"
348
349 #: ../cutscenes/credits.txt:89
350 msgid "Rui"
351 msgstr "Rui"
352
353 #: ../cutscenes/credits.txt:90
354 msgid "Sergey Basalaev"
355 msgstr "Sergey Basalaev"
356
357 #: ../cutscenes/credits.txt:91
358 msgid "Sergiy Borodych"
359 msgstr "Sergiy Borodych"
360
361 #: ../cutscenes/credits.txt:93
362 msgid "Stefano Peris"
363 msgstr "Stefano Peris"
364
365 #: ../cutscenes/credits.txt:94
366 msgid "sujiniku"
367 msgstr "sujiniku"
368
369 #: ../cutscenes/credits.txt:95
370 msgid "Thomas Glamsch"
371 msgstr "Thomas Glamsch"
372
373 #: ../cutscenes/credits.txt:96
374 msgid "Timo Sievänen"
375 msgstr "Timo Sievänen"
376
377 #: ../cutscenes/credits.txt:97
378 msgid "Vicente Monteiro"
379 msgstr "Vicente Monteiro"
380
381 #: ../cutscenes/credits.txt:98
382 msgid "Wuzzy2"
383 msgstr "Wuzzy2"
384
385 #: ../cutscenes/credits.txt:99
386 msgid "Yannis Anthymidis"
387 msgstr "Yannis Anthymidis"
388
389 #: ../cutscenes/credits.txt:100
390 msgid "Zmicer Turok"
391 msgstr "Zmicer Turok"
392
393 #: ../cutscenes/credits.txt:103
105 #: ../cutscenes/credits.txt:108
394106 msgid "Distributors"
395107 msgstr "Распаўсюджвальнікі"
396108
397 #: ../cutscenes/credits.txt:105
398 msgid "Ablu"
399 msgstr "Ablu"
400
401 #: ../cutscenes/credits.txt:106
402 msgid "Feillyne"
403 msgstr "Feillyne"
404
405 #: ../cutscenes/credits.txt:107
406 msgid "Jan-Hendrik Peters"
407 msgstr "Jan-Hendrik Peters"
408
409 #: ../cutscenes/credits.txt:109
410 msgid "miffe"
411 msgstr "miffe"
412
413 #: ../cutscenes/credits.txt:112
109 #: ../cutscenes/credits.txt:117
414110 msgid "Special Thanks"
415111 msgstr "Шчырыя падзякі"
416112
417 #: ../cutscenes/credits.txt:116
113 #: ../cutscenes/credits.txt:121
418114 msgid "For giving constant feedback and testing:"
419115 msgstr "За шматлікія водгукі і тэставанне:"
420116
421 #: ../cutscenes/credits.txt:117
422 msgid "Bart Kelsey"
423 msgstr "Bart Kelsey"
424
425 #: ../cutscenes/credits.txt:118
117 #: ../cutscenes/credits.txt:123
426118 msgid "The community at OpenGameArt"
427119 msgstr "Суполка OpenGameArt"
428120
429 #: ../cutscenes/credits.txt:122
121 #: ../cutscenes/credits.txt:127
430122 msgid "For Tiled and the Flare map exporter:"
431123 msgstr "За Tiled і экспарт мапаў Flare:"
432
433 #: ../cutscenes/credits.txt:123
434 msgid "Thorbjørn Lindeijer"
435 msgstr "Thorbjørn Lindeijer"
436
437 #: ../cutscenes/credits.txt:125
438 msgid "Ranie Jade Ramiso"
439 msgstr "Ranie Jade Ramiso"
88 msgstr ""
99 "Project-Id-Version: PACKAGE VERSION\n"
1010 "Report-Msgid-Bugs-To: \n"
11 "POT-Creation-Date: 2018-11-13 17:21+\n"
11 "POT-Creation-Date: 2019-07-29 09:34+\n"
1212 "PO-Revision-Date: 2018-03-28 19:16+0000\n"
1313 "Last-Translator: 48719d321e4b4a9c2ca8c6a1f8b9cba8, 2018\n"
1414 "Language-Team: Bulgarian (https://www.transifex.com/flareorg/teams/84925/bg/)\n"
9090 msgid "Lead Programmers"
9191 msgstr "Водещи програмисти"
9292
93 #: ../cutscenes/credits.txt:12
94 msgid "Clint Bellanger"
95 msgstr "Clint Bellanger"
96
97 #: ../cutscenes/credits.txt:13
98 msgid "Henrik Andersson"
99 msgstr "Henrik Andersson"
100
101 #: ../cutscenes/credits.txt:14
102 msgid "Igor Paliychuk"
103 msgstr "Igor Paliychuk"
104
105 #: ../cutscenes/credits.txt:15
106 msgid "Justin Jacobs"
107 msgstr "Justin Jacobs"
108
109 #: ../cutscenes/credits.txt:16
110 msgid "Stefan Beller"
111 msgstr "Stefan Beller"
112
113 #: ../cutscenes/credits.txt:17
114 msgid "Thane Brimhall"
115 msgstr "Thane Brimhall"
116
11793 #: ../cutscenes/credits.txt:20
11894 msgid "Programmers"
11995 msgstr "Програмисти"
120
121 #: ../cutscenes/credits.txt:22
122 msgid "Andrew Engelbrecht"
123 msgstr "Andrew Engelbrecht"
124
125 #: ../cutscenes/credits.txt:23
126 msgid "Anton Golov"
127 msgstr "Anton Golov"
128
129 #: ../cutscenes/credits.txt:24
130 msgid "Artur Rojek"
131 msgstr "Artur Rojek"
132
133 #: ../cutscenes/credits.txt:25
134 msgid "blazindragon"
135 msgstr "blazindragon"
136
137 #: ../cutscenes/credits.txt:26
138 msgid "Bonbadil"
139 msgstr "Bonbadil"
140
141 #: ../cutscenes/credits.txt:27
142 msgid "Chris Oelmueller"
143 msgstr "Chris Oelmueller"
144
145 #: ../cutscenes/credits.txt:28
146 msgid "David Bariod"
147 msgstr "David Bariod"
148
149 #: ../cutscenes/credits.txt:29
150 msgid "Daniel Santos"
151 msgstr "Daniel Santos"
152
153 #: ../cutscenes/credits.txt:30
154 msgid "Gallaecio"
155 msgstr "Gallaecio"
156
157 #: ../cutscenes/credits.txt:31
158 msgid "Joseph Bleu"
159 msgstr "Joseph Bleu"
160
161 #: ../cutscenes/credits.txt:32
162 msgid "Juan PabloTamayo"
163 msgstr "Juan PabloTamayo"
164
165 #: ../cutscenes/credits.txt:33
166 msgid "Kitano"
167 msgstr "Kitano"
168
169 #: ../cutscenes/credits.txt:34
170 msgid "Kyle Belanger"
171 msgstr "Kyle Belanger"
172
173 #: ../cutscenes/credits.txt:35
174 msgid "LongerDev"
175 msgstr "LongerDev"
176
177 #: ../cutscenes/credits.txt:36
178 msgid "Manuel A. Fernandez Montecelo"
179 msgstr "Manuel A. Fernandez Montecelo"
180
181 #: ../cutscenes/credits.txt:37
182 msgid "Matthew Krohn"
183 msgstr "Matthew Krohn"
184
185 #: ../cutscenes/credits.txt:38
186 msgid "Nojan"
187 msgstr "Nojan"
188
189 #: ../cutscenes/credits.txt:39
190 msgid "Pavel Kirpichyov"
191 msgstr "Pavel Kirpichyov"
192
193 #: ../cutscenes/credits.txt:40
194 msgid "runtime-x86"
195 msgstr "runtime-x86"
196
197 #: ../cutscenes/credits.txt:41
198 msgid "Ryan Dansie"
199 msgstr "Ryan Dansie"
20096
20197 #: ../cutscenes/credits.txt:44
20298 msgid "Default Art"
206102 msgid "Translators"
207103 msgstr "Преводачи"
208104
209 #: ../cutscenes/credits.txt:51
210 msgid "Ademaro"
211 msgstr "Ademaro"
212
213 #: ../cutscenes/credits.txt:52
214 msgid "Adrian Chaves Fernandez"
215 msgstr "Adrian Chaves Fernandez"
216
217 #: ../cutscenes/credits.txt:53
218 msgid "Andrea Ranaldi"
219 msgstr "Andrea Ranaldi"
220
221 #: ../cutscenes/credits.txt:54
222 msgid "Andreas Berheim Brudin"
223 msgstr "Andreas Berheim Brudin"
224
225 #: ../cutscenes/credits.txt:55
226 msgid "Bas Doodeman"
227 msgstr "Bas Doodeman"
228
229 #: ../cutscenes/credits.txt:57
230 msgid "Carlos Sanchez"
231 msgstr "Carlos Sanchez"
232
233 #: ../cutscenes/credits.txt:59
234 msgid "Christoph J. Thompson"
235 msgstr "Christoph J. Thompson"
236
237 #: ../cutscenes/credits.txt:60
238 msgid "Denis Lysenko"
239 msgstr "Denis Lysenko"
240
241 #: ../cutscenes/credits.txt:61
242 msgid "Diego J. Romero López"
243 msgstr "Diego J. Romero López"
244
245 #: ../cutscenes/credits.txt:62
246 msgid "dumaosen"
247 msgstr "dumaosen"
248
249 #: ../cutscenes/credits.txt:63
250 msgid "Emil"
251 msgstr "Emil"
252
253 #: ../cutscenes/credits.txt:64
254 msgid "Eric R"
255 msgstr "Eric R"
256
257 #: ../cutscenes/credits.txt:65
258 msgid "Evgen Pavlov"
259 msgstr "Evgen Pavlov"
260
261 #: ../cutscenes/credits.txt:66
262 msgid "Fabio Loli"
263 msgstr ""
264
265 #: ../cutscenes/credits.txt:67
266 msgid "Gianfranco Del Borrello"
267 msgstr "Gianfranco Del Borrello"
268
269 #: ../cutscenes/credits.txt:68
270 msgid "Giovanni Dalla Torre"
271 msgstr "Giovanni Dalla Torre"
272
273 #: ../cutscenes/credits.txt:69
274 msgid "GunChleoc"
275 msgstr "GunChleoc"
276
277 #: ../cutscenes/credits.txt:70
278 msgid "Hans Joachim Desserud"
279 msgstr "Hans Joachim Desserud"
280
281 #: ../cutscenes/credits.txt:71
282 msgid "hark34"
283 msgstr "hark34"
284
285 #: ../cutscenes/credits.txt:73
286 msgid "Janet Hunt"
287 msgstr "Janet Hunt"
288
289 #: ../cutscenes/credits.txt:74
290 msgid "Juan Pablo Tamayo"
291 msgstr "Juan Pablo Tamayo"
292
293 #: ../cutscenes/credits.txt:75
294 msgid "losine"
295 msgstr "losine"
296
297 #: ../cutscenes/credits.txt:76
298 msgid "Marc Tormo i Bochaca"
299 msgstr ""
300
301 #: ../cutscenes/credits.txt:77
302 msgid "Michael Papageorgiou"
303 msgstr "Michael Papageorgiou"
304
305 #: ../cutscenes/credits.txt:78
306 msgid "Mikhail Karalevich"
307 msgstr "Mikhail Karalevich"
308
309 #: ../cutscenes/credits.txt:79
310 msgid "Miro Jánošík"
311 msgstr "Miro Jánošík"
312
313 #: ../cutscenes/credits.txt:80
314 msgid "Mykola Franchuk"
315 msgstr ""
316
317 #: ../cutscenes/credits.txt:81
318 msgid "MOB2"
319 msgstr "MOB2"
320
321 #: ../cutscenes/credits.txt:82
322 msgid "Morgan Strauss"
323 msgstr "Morgan Strauss"
324
325 #: ../cutscenes/credits.txt:83
326 msgid "Nea Retrogamer"
327 msgstr "Nea Retrogamer"
328
329 #: ../cutscenes/credits.txt:84
330 msgid "Nguyễn Gia Phong"
331 msgstr "Nguyễn Gia Phong"
332
333 #: ../cutscenes/credits.txt:85
334 msgid "Nikita Vanku"
335 msgstr "Nikita Vanku"
336
337 #: ../cutscenes/credits.txt:86
338 msgid "Paul Wortmann"
339 msgstr "Paul Wortmann"
340
341 #: ../cutscenes/credits.txt:87
342 msgid "Pawel Puszczynski"
343 msgstr "Pawel Puszczynski"
344
345 #: ../cutscenes/credits.txt:88
346 msgid "Quentin Stievenart"
347 msgstr "Quentin Stievenart"
348
349 #: ../cutscenes/credits.txt:89
350 msgid "Rui"
351 msgstr "Rui"
352
353 #: ../cutscenes/credits.txt:90
354 msgid "Sergey Basalaev"
355 msgstr "Sergey Basalaev"
356
357 #: ../cutscenes/credits.txt:91
358 msgid "Sergiy Borodych"
359 msgstr "Sergiy Borodych"
360
361 #: ../cutscenes/credits.txt:93
362 msgid "Stefano Peris"
363 msgstr "Stefano Peris"
364
365 #: ../cutscenes/credits.txt:94
366 msgid "sujiniku"
367 msgstr "sujiniku"
368
369 #: ../cutscenes/credits.txt:95
370 msgid "Thomas Glamsch"
371 msgstr "Thomas Glamsch"
372
373 #: ../cutscenes/credits.txt:96
374 msgid "Timo Sievänen"
375 msgstr "Timo Sievänen"
376
377 #: ../cutscenes/credits.txt:97
378 msgid "Vicente Monteiro"
379 msgstr "Vicente Monteiro"
380
381 #: ../cutscenes/credits.txt:98
382 msgid "Wuzzy2"
383 msgstr "Wuzzy2"
384
385 #: ../cutscenes/credits.txt:99
386 msgid "Yannis Anthymidis"
387 msgstr "Yannis Anthymidis"
388
389 #: ../cutscenes/credits.txt:100
390 msgid "Zmicer Turok"
391 msgstr "Zmicer Turok"
392
393 #: ../cutscenes/credits.txt:103
105 #: ../cutscenes/credits.txt:108
394106 msgid "Distributors"
395107 msgstr "Дистрибутори"
396108
397 #: ../cutscenes/credits.txt:105
398 msgid "Ablu"
399 msgstr "Ablu"
400
401 #: ../cutscenes/credits.txt:106
402 msgid "Feillyne"
403 msgstr "Feillyne"
404
405 #: ../cutscenes/credits.txt:107
406 msgid "Jan-Hendrik Peters"
407 msgstr "Jan-Hendrik Peters"
408
409 #: ../cutscenes/credits.txt:109
410 msgid "miffe"
411 msgstr "miffe"
412
413 #: ../cutscenes/credits.txt:112
109 #: ../cutscenes/credits.txt:117
414110 msgid "Special Thanks"
415111 msgstr "Специални благодарности"
416112
417 #: ../cutscenes/credits.txt:116
113 #: ../cutscenes/credits.txt:121
418114 msgid "For giving constant feedback and testing:"
419115 msgstr "За даване на постоянна обратна връзка и тестване:"
420116
421 #: ../cutscenes/credits.txt:117
422 msgid "Bart Kelsey"
423 msgstr "Bart Kelsey"
424
425 #: ../cutscenes/credits.txt:118
117 #: ../cutscenes/credits.txt:123
426118 msgid "The community at OpenGameArt"
427119 msgstr "Общността в OpenGameArt"
428120
429 #: ../cutscenes/credits.txt:122
121 #: ../cutscenes/credits.txt:127
430122 msgid "For Tiled and the Flare map exporter:"
431123 msgstr "За Tiled и експортърът на карти за Flare:"
432
433 #: ../cutscenes/credits.txt:123
434 msgid "Thorbjørn Lindeijer"
435 msgstr "Thorbjørn Lindeijer"
436
437 #: ../cutscenes/credits.txt:125
438 msgid "Ranie Jade Ramiso"
439 msgstr "Ranie Jade Ramiso"
88 msgstr ""
99 "Project-Id-Version: PACKAGE VERSION\n"
1010 "Report-Msgid-Bugs-To: \n"
11 "POT-Creation-Date: 2018-11-13 17:21+\n"
11 "POT-Creation-Date: 2019-07-29 09:34+\n"
1212 "PO-Revision-Date: 2018-03-28 19:16+0000\n"
1313 "Last-Translator: Marc Tormo i Bochaca <mtbochaca@gmail.com>, 2018\n"
1414 "Language-Team: Catalan (https://www.transifex.com/flareorg/teams/84925/ca/)\n"
9090 msgid "Lead Programmers"
9191 msgstr "Principals programadors"
9292
93 #: ../cutscenes/credits.txt:12
94 msgid "Clint Bellanger"
95 msgstr "Clint Bellanger"
96
97 #: ../cutscenes/credits.txt:13
98 msgid "Henrik Andersson"
99 msgstr "Henrik Andersson"
100
101 #: ../cutscenes/credits.txt:14
102 msgid "Igor Paliychuk"
103 msgstr "Igor Paliychuk"
104
105 #: ../cutscenes/credits.txt:15
106 msgid "Justin Jacobs"
107 msgstr "Justin Jacobs"
108
109 #: ../cutscenes/credits.txt:16
110 msgid "Stefan Beller"
111 msgstr "Stefan Beller"
112
113 #: ../cutscenes/credits.txt:17
114 msgid "Thane Brimhall"
115 msgstr "Thane Brimhall"
116
11793 #: ../cutscenes/credits.txt:20
11894 msgid "Programmers"
11995 msgstr "Programadors"
120
121 #: ../cutscenes/credits.txt:22
122 msgid "Andrew Engelbrecht"
123 msgstr "Andrew Engelbrecht"
124
125 #: ../cutscenes/credits.txt:23
126 msgid "Anton Golov"
127 msgstr "Anton Golov"
128
129 #: ../cutscenes/credits.txt:24
130 msgid "Artur Rojek"
131 msgstr "Artur Rojek"
132
133 #: ../cutscenes/credits.txt:25
134 msgid "blazindragon"
135 msgstr "blazindragon"
136
137 #: ../cutscenes/credits.txt:26
138 msgid "Bonbadil"
139 msgstr "Bonbadil"
140
141 #: ../cutscenes/credits.txt:27
142 msgid "Chris Oelmueller"
143 msgstr "Chris Oelmueller"
144
145 #: ../cutscenes/credits.txt:28
146 msgid "David Bariod"
147 msgstr "David Bariod"
148
149 #: ../cutscenes/credits.txt:29
150 msgid "Daniel Santos"
151 msgstr "Daniel Santos"
152
153 #: ../cutscenes/credits.txt:30
154 msgid "Gallaecio"
155 msgstr "Gallaecio"
156
157 #: ../cutscenes/credits.txt:31
158 msgid "Joseph Bleu"
159 msgstr "Joseph Bleu"
160
161 #: ../cutscenes/credits.txt:32
162 msgid "Juan PabloTamayo"
163 msgstr "Juan PabloTamayo"
164
165 #: ../cutscenes/credits.txt:33
166 msgid "Kitano"
167 msgstr "Kitano"
168
169 #: ../cutscenes/credits.txt:34
170 msgid "Kyle Belanger"
171 msgstr "Kyle Belanger"
172
173 #: ../cutscenes/credits.txt:35
174 msgid "LongerDev"
175 msgstr "LongerDev"
176
177 #: ../cutscenes/credits.txt:36
178 msgid "Manuel A. Fernandez Montecelo"
179 msgstr "Manuel A. Fernandez Montecelo"
180
181 #: ../cutscenes/credits.txt:37
182 msgid "Matthew Krohn"
183 msgstr "Matthew Krohn"
184
185 #: ../cutscenes/credits.txt:38
186 msgid "Nojan"
187 msgstr "Nojan"
188
189 #: ../cutscenes/credits.txt:39
190 msgid "Pavel Kirpichyov"
191 msgstr "Pavel Kirpichyov"
192
193 #: ../cutscenes/credits.txt:40
194 msgid "runtime-x86"
195 msgstr "runtime-x86"
196
197 #: ../cutscenes/credits.txt:41
198 msgid "Ryan Dansie"
199 msgstr "Ryan Dansie"
20096
20197 #: ../cutscenes/credits.txt:44
20298 msgid "Default Art"
206102 msgid "Translators"
207103 msgstr "Traductors"
208104
209 #: ../cutscenes/credits.txt:51
210 msgid "Ademaro"
211 msgstr "Ademaro"
212
213 #: ../cutscenes/credits.txt:52
214 msgid "Adrian Chaves Fernandez"
215 msgstr "Adrian Chaves Fernandez"
216
217 #: ../cutscenes/credits.txt:53
218 msgid "Andrea Ranaldi"
219 msgstr "Andrea Ranaldi"
220
221 #: ../cutscenes/credits.txt:54
222 msgid "Andreas Berheim Brudin"
223 msgstr "Andreas Berheim Brudin"
224
225 #: ../cutscenes/credits.txt:55
226 msgid "Bas Doodeman"
227 msgstr "Bas Doodeman"
228
229 #: ../cutscenes/credits.txt:57
230 msgid "Carlos Sanchez"
231 msgstr "Carlos Sanchez"
232
233 #: ../cutscenes/credits.txt:59
234 msgid "Christoph J. Thompson"
235 msgstr "Christoph J. Thompson"
236
237 #: ../cutscenes/credits.txt:60
238 msgid "Denis Lysenko"
239 msgstr "Denis Lysenko"
240
241 #: ../cutscenes/credits.txt:61
242 msgid "Diego J. Romero López"
243 msgstr "Diego J. Romero López"
244
245 #: ../cutscenes/credits.txt:62
246 msgid "dumaosen"
247 msgstr "dumaosen"
248
249 #: ../cutscenes/credits.txt:63
250 msgid "Emil"
251 msgstr "Emil"
252
253 #: ../cutscenes/credits.txt:64
254 msgid "Eric R"
255 msgstr "Eric R"
256
257 #: ../cutscenes/credits.txt:65
258 msgid "Evgen Pavlov"
259 msgstr "Evgen Pavlov"
260
261 #: ../cutscenes/credits.txt:66
262 msgid "Fabio Loli"
263 msgstr "Fabio Loli"
264
265 #: ../cutscenes/credits.txt:67
266 msgid "Gianfranco Del Borrello"
267 msgstr "Gianfranco Del Borrello"
268
269 #: ../cutscenes/credits.txt:68
270 msgid "Giovanni Dalla Torre"
271 msgstr "Giovanni Dalla Torre"
272
273 #: ../cutscenes/credits.txt:69
274 msgid "GunChleoc"
275 msgstr "GunChleoc"
276
277 #: ../cutscenes/credits.txt:70
278 msgid "Hans Joachim Desserud"
279 msgstr "Hans Joachim Desserud"
280
281 #: ../cutscenes/credits.txt:71
282 msgid "hark34"
283 msgstr "hark34"
284
285 #: ../cutscenes/credits.txt:73
286 msgid "Janet Hunt"
287 msgstr "Janet Hunt"
288
289 #: ../cutscenes/credits.txt:74
290 msgid "Juan Pablo Tamayo"
291 msgstr "Juan Pablo Tamayo"
292
293 #: ../cutscenes/credits.txt:75
294 msgid "losine"
295 msgstr "losine"
296
297 #: ../cutscenes/credits.txt:76
298 msgid "Marc Tormo i Bochaca"
299 msgstr ""
300
301 #: ../cutscenes/credits.txt:77
302 msgid "Michael Papageorgiou"
303 msgstr "Michael Papageorgiou"
304
305 #: ../cutscenes/credits.txt:78
306 msgid "Mikhail Karalevich"
307 msgstr "Mikhail Karalevich"
308
309 #: ../cutscenes/credits.txt:79
310 msgid "Miro Jánošík"
311 msgstr "Miro Jánošík"
312
313 #: ../cutscenes/credits.txt:80
314 msgid "Mykola Franchuk"
315 msgstr "Mykola Franchuk"
316
317 #: ../cutscenes/credits.txt:81
318 msgid "MOB2"
319 msgstr "MOB2"
320
321 #: ../cutscenes/credits.txt:82
322 msgid "Morgan Strauss"
323 msgstr "Morgan Strauss"
324
325 #: ../cutscenes/credits.txt:83
326 msgid "Nea Retrogamer"
327 msgstr "Nea Retrogamer"
328
329 #: ../cutscenes/credits.txt:84
330 msgid "Nguyễn Gia Phong"
331 msgstr "Nguyễn Gia Phong"
332
333 #: ../cutscenes/credits.txt:85
334 msgid "Nikita Vanku"
335 msgstr "Nikita Vanku"
336
337 #: ../cutscenes/credits.txt:86
338 msgid "Paul Wortmann"
339 msgstr "Paul Wortmann"
340
341 #: ../cutscenes/credits.txt:87
342 msgid "Pawel Puszczynski"
343 msgstr "Pawel Puszczynski"
344
345 #: ../cutscenes/credits.txt:88
346 msgid "Quentin Stievenart"
347 msgstr "Quentin Stievenart"
348
349 #: ../cutscenes/credits.txt:89
350 msgid "Rui"
351 msgstr "Rui"
352
353 #: ../cutscenes/credits.txt:90
354 msgid "Sergey Basalaev"
355 msgstr "Sergey Basalaev"
356
357 #: ../cutscenes/credits.txt:91
358 msgid "Sergiy Borodych"
359 msgstr "Sergiy Borodych"
360
361 #: ../cutscenes/credits.txt:93
362 msgid "Stefano Peris"
363 msgstr "Stefano Peris"
364
365 #: ../cutscenes/credits.txt:94
366 msgid "sujiniku"
367 msgstr "sujiniku"
368
369 #: ../cutscenes/credits.txt:95
370 msgid "Thomas Glamsch"
371 msgstr "Thomas Glamsch"
372
373 #: ../cutscenes/credits.txt:96
374 msgid "Timo Sievänen"
375 msgstr "Timo Sievänen"
376
377 #: ../cutscenes/credits.txt:97
378 msgid "Vicente Monteiro"
379 msgstr "Vicente Monteiro"
380
381 #: ../cutscenes/credits.txt:98
382 msgid "Wuzzy2"
383 msgstr "Wuzzy2"
384
385 #: ../cutscenes/credits.txt:99
386 msgid "Yannis Anthymidis"
387 msgstr "Yannis Anthymidis"
388
389 #: ../cutscenes/credits.txt:100
390 msgid "Zmicer Turok"
391 msgstr "Zmicer Turok"
392
393 #: ../cutscenes/credits.txt:103
105 #: ../cutscenes/credits.txt:108
394106 msgid "Distributors"
395107 msgstr "Distribuïdors"
396108
397 #: ../cutscenes/credits.txt:105
398 msgid "Ablu"
399 msgstr "Ablu"
400
401 #: ../cutscenes/credits.txt:106
402 msgid "Feillyne"
403 msgstr "Feillyne"
404
405 #: ../cutscenes/credits.txt:107
406 msgid "Jan-Hendrik Peters"
407 msgstr "Jan-Hendrik Peters"
408
409 #: ../cutscenes/credits.txt:109
410 msgid "miffe"
411 msgstr "miffe"
412
413 #: ../cutscenes/credits.txt:112
109 #: ../cutscenes/credits.txt:117
414110 msgid "Special Thanks"
415111 msgstr "Agraïments especials"
416112
417 #: ../cutscenes/credits.txt:116
113 #: ../cutscenes/credits.txt:121
418114 msgid "For giving constant feedback and testing:"
419115 msgstr "Per realitzar comentaris i proves constantment:"
420116
421 #: ../cutscenes/credits.txt:117
422 msgid "Bart Kelsey"
423 msgstr "Bart Kelsey"
424
425 #: ../cutscenes/credits.txt:118
117 #: ../cutscenes/credits.txt:123
426118 msgid "The community at OpenGameArt"
427119 msgstr "La comunitat de OpenGameArt"
428120
429 #: ../cutscenes/credits.txt:122
121 #: ../cutscenes/credits.txt:127
430122 msgid "For Tiled and the Flare map exporter:"
431123 msgstr "Per els mosaics i els exportadors de mapes de Flare:"
432
433 #: ../cutscenes/credits.txt:123
434 msgid "Thorbjørn Lindeijer"
435 msgstr "Thorbjørn Lindeijer"
436
437 #: ../cutscenes/credits.txt:125
438 msgid "Ranie Jade Ramiso"
439 msgstr "Ranie Jade Ramiso"
88 msgstr ""
99 "Project-Id-Version: PACKAGE VERSION\n"
1010 "Report-Msgid-Bugs-To: \n"
11 "POT-Creation-Date: 2018-11-13 17:21+\n"
11 "POT-Creation-Date: 2019-07-29 09:34+\n"
1212 "PO-Revision-Date: 2018-03-28 19:16+0000\n"
1313 "Last-Translator: a hark <vit.hrachovy@sandbox.cz>, 2018\n"
1414 "Language-Team: Czech (https://www.transifex.com/flareorg/teams/84925/cs/)\n"
9090 msgid "Lead Programmers"
9191 msgstr "vedoucí programátoři"
9292
93 #: ../cutscenes/credits.txt:12
94 msgid "Clint Bellanger"
95 msgstr "Clint Bellanger"
96
97 #: ../cutscenes/credits.txt:13
98 msgid "Henrik Andersson"
99 msgstr "Henrik Andersson"
100
101 #: ../cutscenes/credits.txt:14
102 msgid "Igor Paliychuk"
103 msgstr "Igor Paliychuk"
104
105 #: ../cutscenes/credits.txt:15
106 msgid "Justin Jacobs"
107 msgstr "Justin Jacobs"
108
109 #: ../cutscenes/credits.txt:16
110 msgid "Stefan Beller"
111 msgstr "Stefan Beller"
112
113 #: ../cutscenes/credits.txt:17
114 msgid "Thane Brimhall"
115 msgstr "Thane Brimhall"
116
11793 #: ../cutscenes/credits.txt:20
11894 msgid "Programmers"
11995 msgstr "programátoři"
120
121 #: ../cutscenes/credits.txt:22
122 msgid "Andrew Engelbrecht"
123 msgstr "Andrew Engelbrecht"
124
125 #: ../cutscenes/credits.txt:23
126 msgid "Anton Golov"
127 msgstr "Anton Golov"
128
129 #: ../cutscenes/credits.txt:24
130 msgid "Artur Rojek"
131 msgstr "Artur Rojek"
132
133 #: ../cutscenes/credits.txt:25
134 msgid "blazindragon"
135 msgstr "blazindragon"
136
137 #: ../cutscenes/credits.txt:26
138 msgid "Bonbadil"
139 msgstr "Bonbadil"
140
141 #: ../cutscenes/credits.txt:27
142 msgid "Chris Oelmueller"
143 msgstr "Chris Oelmueller"
144
145 #: ../cutscenes/credits.txt:28
146 msgid "David Bariod"
147 msgstr "David Bariod"
148
149 #: ../cutscenes/credits.txt:29
150 msgid "Daniel Santos"
151 msgstr "Daniel Santos"
152
153 #: ../cutscenes/credits.txt:30
154 msgid "Gallaecio"
155 msgstr "Gallaecio"
156
157 #: ../cutscenes/credits.txt:31
158 msgid "Joseph Bleu"
159 msgstr "Joseph Bleu"
160
161 #: ../cutscenes/credits.txt:32
162 msgid "Juan PabloTamayo"
163 msgstr "Juan PabloTamayo"
164
165 #: ../cutscenes/credits.txt:33
166 msgid "Kitano"
167 msgstr "Kitano"
168
169 #: ../cutscenes/credits.txt:34
170 msgid "Kyle Belanger"
171 msgstr "Kyle Belanger"
172
173 #: ../cutscenes/credits.txt:35
174 msgid "LongerDev"
175 msgstr "LongerDev"
176
177 #: ../cutscenes/credits.txt:36
178 msgid "Manuel A. Fernandez Montecelo"
179 msgstr "Manuel A. Fernandez Montecelo"
180
181 #: ../cutscenes/credits.txt:37
182 msgid "Matthew Krohn"
183 msgstr "Matthew Krohn"
184
185 #: ../cutscenes/credits.txt:38
186 msgid "Nojan"
187 msgstr "Nojan"
188
189 #: ../cutscenes/credits.txt:39
190 msgid "Pavel Kirpichyov"
191 msgstr "Pavel Kirpichyov"
192
193 #: ../cutscenes/credits.txt:40
194 msgid "runtime-x86"
195 msgstr "runtime-x86"
196
197 #: ../cutscenes/credits.txt:41
198 msgid "Ryan Dansie"
199 msgstr "Ryan Dansie"
20096
20197 #: ../cutscenes/credits.txt:44
20298 msgid "Default Art"
206102 msgid "Translators"
207103 msgstr "překladatelé"
208104
209 #: ../cutscenes/credits.txt:51
210 msgid "Ademaro"
211 msgstr "Ademaro"
212
213 #: ../cutscenes/credits.txt:52
214 msgid "Adrian Chaves Fernandez"
215 msgstr "Adrian Chaves Fernandez"
216
217 #: ../cutscenes/credits.txt:53
218 msgid "Andrea Ranaldi"
219 msgstr "Andrea Ranaldi"
220
221 #: ../cutscenes/credits.txt:54
222 msgid "Andreas Berheim Brudin"
223 msgstr "Andreas Berheim Brudin"
224
225 #: ../cutscenes/credits.txt:55
226 msgid "Bas Doodeman"
227 msgstr "Bas Doodeman"
228
229 #: ../cutscenes/credits.txt:57
230 msgid "Carlos Sanchez"
231 msgstr "Carlos Sanchez"
232
233 #: ../cutscenes/credits.txt:59
234 msgid "Christoph J. Thompson"
235 msgstr "Christoph J. Thompson"
236
237 #: ../cutscenes/credits.txt:60
238 msgid "Denis Lysenko"
239 msgstr "Denis Lysenko"
240
241 #: ../cutscenes/credits.txt:61
242 msgid "Diego J. Romero López"
243 msgstr "Diego J. Romero López"
244
245 #: ../cutscenes/credits.txt:62
246 msgid "dumaosen"
247 msgstr ""
248
249 #: ../cutscenes/credits.txt:63
250 msgid "Emil"
251 msgstr ""
252
253 #: ../cutscenes/credits.txt:64
254 msgid "Eric R"
255 msgstr "Eric R"
256
257 #: ../cutscenes/credits.txt:65
258 msgid "Evgen Pavlov"
259 msgstr "Evgen Pavlov"
260
261 #: ../cutscenes/credits.txt:66
262 msgid "Fabio Loli"
263 msgstr ""
264
265 #: ../cutscenes/credits.txt:67
266 msgid "Gianfranco Del Borrello"
267 msgstr "Gianfranco Del Borrello"
268
269 #: ../cutscenes/credits.txt:68
270 msgid "Giovanni Dalla Torre"
271 msgstr "Giovanni Dalla Torre"
272
273 #: ../cutscenes/credits.txt:69
274 msgid "GunChleoc"
275 msgstr "GunChleoc"
276
277 #: ../cutscenes/credits.txt:70
278 msgid "Hans Joachim Desserud"
279 msgstr "Hans Joachim Desserud"
280
281 #: ../cutscenes/credits.txt:71
282 msgid "hark34"
283 msgstr ""
284
285 #: ../cutscenes/credits.txt:73
286 msgid "Janet Hunt"
287 msgstr "Janet Hunt"
288
289 #: ../cutscenes/credits.txt:74
290 msgid "Juan Pablo Tamayo"
291 msgstr "Juan Pablo Tamayo"
292
293 #: ../cutscenes/credits.txt:75
294 msgid "losine"
295 msgstr "losine"
296
297 #: ../cutscenes/credits.txt:76
298 msgid "Marc Tormo i Bochaca"
299 msgstr ""
300
301 #: ../cutscenes/credits.txt:77
302 msgid "Michael Papageorgiou"
303 msgstr "Michael Papageorgiou"
304
305 #: ../cutscenes/credits.txt:78
306 msgid "Mikhail Karalevich"
307 msgstr "Mikhail Karalevich"
308
309 #: ../cutscenes/credits.txt:79
310 msgid "Miro Jánošík"
311 msgstr "Miro Jánošík"
312
313 #: ../cutscenes/credits.txt:80
314 msgid "Mykola Franchuk"
315 msgstr ""
316
317 #: ../cutscenes/credits.txt:81
318 msgid "MOB2"
319 msgstr "MOB2"
320
321 #: ../cutscenes/credits.txt:82
322 msgid "Morgan Strauss"
323 msgstr "Morgan Strauss"
324
325 #: ../cutscenes/credits.txt:83
326 msgid "Nea Retrogamer"
327 msgstr "Nea Retrogamer"
328
329 #: ../cutscenes/credits.txt:84
330 msgid "Nguyễn Gia Phong"
331 msgstr ""
332
333 #: ../cutscenes/credits.txt:85
334 msgid "Nikita Vanku"
335 msgstr "Nikita Vanku"
336
337 #: ../cutscenes/credits.txt:86
338 msgid "Paul Wortmann"
339 msgstr "Paul Wortmann"
340
341 #: ../cutscenes/credits.txt:87
342 msgid "Pawel Puszczynski"
343 msgstr "Pawel Puszczynski"
344
345 #: ../cutscenes/credits.txt:88
346 msgid "Quentin Stievenart"
347 msgstr "Quentin Stievenart"
348
349 #: ../cutscenes/credits.txt:89
350 msgid "Rui"
351 msgstr "Rui"
352
353 #: ../cutscenes/credits.txt:90
354 msgid "Sergey Basalaev"
355 msgstr "Sergey Basalaev"
356
357 #: ../cutscenes/credits.txt:91
358 msgid "Sergiy Borodych"
359 msgstr "Sergiy Borodych"
360
361 #: ../cutscenes/credits.txt:93
362 msgid "Stefano Peris"
363 msgstr "Stefano Peris"
364
365 #: ../cutscenes/credits.txt:94
366 msgid "sujiniku"
367 msgstr "sujiniku"
368
369 #: ../cutscenes/credits.txt:95
370 msgid "Thomas Glamsch"
371 msgstr "Thomas Glamsch"
372
373 #: ../cutscenes/credits.txt:96
374 msgid "Timo Sievänen"
375 msgstr "Timo Sievänen"
376
377 #: ../cutscenes/credits.txt:97
378 msgid "Vicente Monteiro"
379 msgstr ""
380
381 #: ../cutscenes/credits.txt:98
382 msgid "Wuzzy2"
383 msgstr "Wuzzy2"
384
385 #: ../cutscenes/credits.txt:99
386 msgid "Yannis Anthymidis"
387 msgstr "Yannis Anthymidis"
388
389 #: ../cutscenes/credits.txt:100
390 msgid "Zmicer Turok"
391 msgstr ""
392
393 #: ../cutscenes/credits.txt:103
105 #: ../cutscenes/credits.txt:108
394106 msgid "Distributors"
395107 msgstr "distributoři"
396108
397 #: ../cutscenes/credits.txt:105
398 msgid "Ablu"
399 msgstr "Ablu"
400
401 #: ../cutscenes/credits.txt:106
402 msgid "Feillyne"
403 msgstr "Feillyne"
404
405 #: ../cutscenes/credits.txt:107
406 msgid "Jan-Hendrik Peters"
407 msgstr "Jan-Hendrik Peters"
408
409 #: ../cutscenes/credits.txt:109
410 msgid "miffe"
411 msgstr "miffe"
412
413 #: ../cutscenes/credits.txt:112
109 #: ../cutscenes/credits.txt:117
414110 msgid "Special Thanks"
415111 msgstr "zvláštní poděkování"
416112
417 #: ../cutscenes/credits.txt:116
113 #: ../cutscenes/credits.txt:121
418114 msgid "For giving constant feedback and testing:"
419115 msgstr "za dlouhodobou zpětnou vazbu a testování"
420116
421 #: ../cutscenes/credits.txt:117
422 msgid "Bart Kelsey"
423 msgstr "Bart Kelsey"
424
425 #: ../cutscenes/credits.txt:118
117 #: ../cutscenes/credits.txt:123
426118 msgid "The community at OpenGameArt"
427119 msgstr "komunita na OpenGameArt"
428120
429 #: ../cutscenes/credits.txt:122
121 #: ../cutscenes/credits.txt:127
430122 msgid "For Tiled and the Flare map exporter:"
431123 msgstr "za Tiled a exportér map Flare "
432
433 #: ../cutscenes/credits.txt:123
434 msgid "Thorbjørn Lindeijer"
435 msgstr "Thorbjørn Lindeijer"
436
437 #: ../cutscenes/credits.txt:125
438 msgid "Ranie Jade Ramiso"
439 msgstr "Ranie Jade Ramiso"
1010 msgstr ""
1111 "Project-Id-Version: PACKAGE VERSION\n"
1212 "Report-Msgid-Bugs-To: \n"
13 "POT-Creation-Date: 2018-11-14 00:57+\n"
13 "POT-Creation-Date: 2019-07-29 09:34+\n"
1414 "PO-Revision-Date: 2018-03-28 19:16+0000\n"
1515 "Last-Translator: Fyrenic <fyrenic@protonmail.com>, 2018\n"
1616 "Language-Team: German (https://www.transifex.com/flareorg/teams/84925/de/)\n"
9797 msgid "Lead Programmers"
9898 msgstr "Hauptprogrammierer"
9999
100 #: ../cutscenes/credits.txt:12
101 msgid "Clint Bellanger"
102 msgstr "Clint Bellanger"
103
104 #: ../cutscenes/credits.txt:13
105 msgid "Henrik Andersson"
106 msgstr "Henrik Andersson"
107
108 #: ../cutscenes/credits.txt:14
109 msgid "Igor Paliychuk"
110 msgstr "Igor Paliychuk"
111
112 #: ../cutscenes/credits.txt:15
113 msgid "Justin Jacobs"
114 msgstr "Justin Jacobs"
115
116 #: ../cutscenes/credits.txt:16
117 msgid "Stefan Beller"
118 msgstr "Stefan Beller"
119
120 #: ../cutscenes/credits.txt:17
121 msgid "Thane Brimhall"
122 msgstr "Thane Brimhall"
123
124100 #: ../cutscenes/credits.txt:20
125101 msgid "Programmers"
126102 msgstr "Programmierer"
127
128 #: ../cutscenes/credits.txt:22
129 msgid "Andrew Engelbrecht"
130 msgstr "Andrew Engelbrecht"
131
132 #: ../cutscenes/credits.txt:23
133 msgid "Anton Golov"
134 msgstr "Anton Golov"
135
136 #: ../cutscenes/credits.txt:24
137 msgid "Artur Rojek"
138 msgstr "Artur Rojek"
139
140 #: ../cutscenes/credits.txt:25
141 msgid "blazindragon"
142 msgstr "blazindragon"
143
144 #: ../cutscenes/credits.txt:26
145 msgid "Bonbadil"
146 msgstr "Bonbadil"
147
148 #: ../cutscenes/credits.txt:27
149 msgid "Chris Oelmueller"
150 msgstr "Chris Oelmueller"
151
152 #: ../cutscenes/credits.txt:28
153 msgid "David Bariod"
154 msgstr "David Bariod"
155
156 #: ../cutscenes/credits.txt:29
157 msgid "Daniel Santos"
158 msgstr "Daniel Santos"
159
160 #: ../cutscenes/credits.txt:30
161 msgid "Gallaecio"
162 msgstr "Gallaecio"
163
164 #: ../cutscenes/credits.txt:31
165 msgid "Joseph Bleu"
166 msgstr "Joseph Bleu"
167
168 #: ../cutscenes/credits.txt:32
169 msgid "Juan PabloTamayo"
170 msgstr "Juan PabloTamayo"
171
172 #: ../cutscenes/credits.txt:33
173 msgid "Kitano"
174 msgstr "Kitano"
175
176 #: ../cutscenes/credits.txt:34
177 msgid "Kyle Belanger"
178 msgstr "Kyle Belanger"
179
180 #: ../cutscenes/credits.txt:35
181 msgid "LongerDev"
182 msgstr "LongerDev"
183
184 #: ../cutscenes/credits.txt:36
185 msgid "Manuel A. Fernandez Montecelo"
186 msgstr "Manuel A. Fernandez Montecelo"
187
188 #: ../cutscenes/credits.txt:37
189 msgid "Matthew Krohn"
190 msgstr "Matthew Krohn"
191
192 #: ../cutscenes/credits.txt:38
193 msgid "Nojan"
194 msgstr "Nojan"
195
196 #: ../cutscenes/credits.txt:39
197 msgid "Pavel Kirpichyov"
198 msgstr "Pavel Kirpichyov"
199
200 #: ../cutscenes/credits.txt:40
201 msgid "runtime-x86"
202 msgstr "runtime-x86"
203
204 #: ../cutscenes/credits.txt:41
205 msgid "Ryan Dansie"
206 msgstr "Ryan Dansie"
207103
208104 #: ../cutscenes/credits.txt:44
209105 msgid "Default Art"
213109 msgid "Translators"
214110 msgstr "Übersetzer"
215111
216 #: ../cutscenes/credits.txt:51
217 msgid "Ademaro"
218 msgstr "Ademaro"
219
220 #: ../cutscenes/credits.txt:52
221 msgid "Adrian Chaves Fernandez"
222 msgstr "Adrian Chaves Fernandez"
223
224 #: ../cutscenes/credits.txt:53
225 msgid "Andrea Ranaldi"
226 msgstr "Andrea Ranaldi"
227
228 #: ../cutscenes/credits.txt:54
229 msgid "Andreas Berheim Brudin"
230 msgstr "Andreas Berheim Brudin"
231
232 #: ../cutscenes/credits.txt:55
233 msgid "Bas Doodeman"
234 msgstr "Bas Doodeman"
235
236 #: ../cutscenes/credits.txt:57
237 msgid "Carlos Sanchez"
238 msgstr "Carlos Sanchez"
239
240 #: ../cutscenes/credits.txt:59
241 msgid "Christoph J. Thompson"
242 msgstr "Christoph J. Thompson"
243
244 #: ../cutscenes/credits.txt:60
245 msgid "Denis Lysenko"
246 msgstr "Denis Lysenko"
247
248 #: ../cutscenes/credits.txt:61
249 msgid "Diego J. Romero López"
250 msgstr "Diego J. Romero López"
251
252 #: ../cutscenes/credits.txt:62
253 msgid "dumaosen"
254 msgstr "dumaosen"
255
256 #: ../cutscenes/credits.txt:63
257 msgid "Emil"
258 msgstr "Emil"
259
260 #: ../cutscenes/credits.txt:64
261 msgid "Eric R"
262 msgstr "Eric R"
263
264 #: ../cutscenes/credits.txt:65
265 msgid "Evgen Pavlov"
266 msgstr "Evgen Pavlov"
267
268 #: ../cutscenes/credits.txt:66
269 msgid "Fabio Loli"
270 msgstr "Fabio Loli"
271
272 #: ../cutscenes/credits.txt:67
273 msgid "Gianfranco Del Borrello"
274 msgstr "Gianfranco Del Borrello"
275
276 #: ../cutscenes/credits.txt:68
277 msgid "Giovanni Dalla Torre"
278 msgstr "Giovanni Dalla Torre"
279
280 #: ../cutscenes/credits.txt:69
281 msgid "GunChleoc"
282 msgstr "GunChleoc"
283
284 #: ../cutscenes/credits.txt:70
285 msgid "Hans Joachim Desserud"
286 msgstr "Hans Joachim Desserud"
287
288 #: ../cutscenes/credits.txt:71
289 msgid "hark34"
290 msgstr "hark34"
291
292 #: ../cutscenes/credits.txt:73
293 msgid "Janet Hunt"
294 msgstr "Janet Hunt"
295
296 #: ../cutscenes/credits.txt:74
297 msgid "Juan Pablo Tamayo"
298 msgstr "Juan Pablo Tamayo"
299
300 #: ../cutscenes/credits.txt:75
301 msgid "losine"
302 msgstr "losine"
303
304 #: ../cutscenes/credits.txt:76
305 msgid "Marc Tormo i Bochaca"
306 msgstr "Marc Tormo i Bochaca"
307
308 #: ../cutscenes/credits.txt:77
309 msgid "Michael Papageorgiou"
310 msgstr "Michael Papageorgiou"
311
312 #: ../cutscenes/credits.txt:78
313 msgid "Mikhail Karalevich"
314 msgstr "Mikhail Karalevich"
315
316 #: ../cutscenes/credits.txt:79
317 msgid "Miro Jánošík"
318 msgstr "Miro Jánošík"
319
320 #: ../cutscenes/credits.txt:80
321 msgid "Mykola Franchuk"
322 msgstr "Mykola Franchuk"
323
324 #: ../cutscenes/credits.txt:81
325 msgid "MOB2"
326 msgstr "MOB2"
327
328 #: ../cutscenes/credits.txt:82
329 msgid "Morgan Strauss"
330 msgstr "Morgan Strauss"
331
332 #: ../cutscenes/credits.txt:83
333 msgid "Nea Retrogamer"
334 msgstr "Nea Retrogamer"
335
336 #: ../cutscenes/credits.txt:84
337 msgid "Nguyễn Gia Phong"
338 msgstr "Nguyễn Gia Phong"
339
340 #: ../cutscenes/credits.txt:85
341 msgid "Nikita Vanku"
342 msgstr "Nikita Vanku"
343
344 #: ../cutscenes/credits.txt:86
345 msgid "Paul Wortmann"
346 msgstr "Paul Wortmann"
347
348 #: ../cutscenes/credits.txt:87
349 msgid "Pawel Puszczynski"
350 msgstr "Pawel Puszczynski"
351
352 #: ../cutscenes/credits.txt:88
353 msgid "Quentin Stievenart"
354 msgstr "Quentin Stievenart"
355
356 #: ../cutscenes/credits.txt:89
357 msgid "Rui"
358 msgstr "Rui"
359
360 #: ../cutscenes/credits.txt:90
361 msgid "Sergey Basalaev"
362 msgstr "Sergey Basalaev"
363
364 #: ../cutscenes/credits.txt:91
365 msgid "Sergiy Borodych"
366 msgstr "Sergiy Borodych"
367
368 #: ../cutscenes/credits.txt:93
369 msgid "Stefano Peris"
370 msgstr "Stefano Peris"
371
372 #: ../cutscenes/credits.txt:94
373 msgid "sujiniku"
374 msgstr "sujiniku"
375
376 #: ../cutscenes/credits.txt:95
377 msgid "Thomas Glamsch"
378 msgstr "Thomas Glamsch"
379
380 #: ../cutscenes/credits.txt:96
381 msgid "Timo Sievänen"
382 msgstr "Timo Sievänen"
383
384 #: ../cutscenes/credits.txt:97
385 msgid "Vicente Monteiro"
386 msgstr "Vicente Monteiro"
387
388 #: ../cutscenes/credits.txt:98
389 msgid "Wuzzy2"
390 msgstr "Wuzzy2"
391
392 #: ../cutscenes/credits.txt:99
393 msgid "Yannis Anthymidis"
394 msgstr "Yannis Anthymidis"
395
396 #: ../cutscenes/credits.txt:100
397 msgid "Zmicer Turok"
398 msgstr "Zmicer Turok"
399
400 #: ../cutscenes/credits.txt:103
112 #: ../cutscenes/credits.txt:108
401113 msgid "Distributors"
402114 msgstr "Distributoren"
403115
404 #: ../cutscenes/credits.txt:105
405 msgid "Ablu"
406 msgstr "Ablu"
407
408 #: ../cutscenes/credits.txt:106
409 msgid "Feillyne"
410 msgstr "Feillyne"
411
412 #: ../cutscenes/credits.txt:107
413 msgid "Jan-Hendrik Peters"
414 msgstr "Jan-Hendrik Peters"
415
416 #: ../cutscenes/credits.txt:109
417 msgid "miffe"
418 msgstr "miffe"
419
420 #: ../cutscenes/credits.txt:112
116 #: ../cutscenes/credits.txt:117
421117 msgid "Special Thanks"
422118 msgstr "Besonderer Dank geht an"
423119
424 #: ../cutscenes/credits.txt:116
120 #: ../cutscenes/credits.txt:121
425121 msgid "For giving constant feedback and testing:"
426122 msgstr "Für Feedback und Testen:"
427123
428 #: ../cutscenes/credits.txt:117
429 msgid "Bart Kelsey"
430 msgstr "Bart Kelsey"
431
432 #: ../cutscenes/credits.txt:118
124 #: ../cutscenes/credits.txt:123
433125 msgid "The community at OpenGameArt"
434126 msgstr "Die Gemeinschaft von OpenGameArt"
435127
436 #: ../cutscenes/credits.txt:122
128 #: ../cutscenes/credits.txt:127
437129 msgid "For Tiled and the Flare map exporter:"
438130 msgstr "Für Tiled und den Flare-Kartenexportierer:"
439
440 #: ../cutscenes/credits.txt:123
441 msgid "Thorbjørn Lindeijer"
442 msgstr "Thorbjørn Lindeijer"
443
444 #: ../cutscenes/credits.txt:125
445 msgid "Ranie Jade Ramiso"
446 msgstr "Ranie Jade Ramiso"
88 msgstr ""
99 "Project-Id-Version: PACKAGE VERSION\n"
1010 "Report-Msgid-Bugs-To: \n"
11 "POT-Creation-Date: 2018-11-13 17:21+\n"
11 "POT-Creation-Date: 2019-07-29 09:34+\n"
1212 "PO-Revision-Date: 2018-03-28 19:16+0000\n"
1313 "Last-Translator: Nea Retrogamer (nearetrogamer), 2018\n"
1414 "Language-Team: Greek (https://www.transifex.com/flareorg/teams/84925/el/)\n"
9090 msgid "Lead Programmers"
9191 msgstr ""
9292
93 #: ../cutscenes/credits.txt:12
94 msgid "Clint Bellanger"
95 msgstr "Clint Bellanger"
96
97 #: ../cutscenes/credits.txt:13
98 msgid "Henrik Andersson"
99 msgstr "Henrik Andersson"
100
101 #: ../cutscenes/credits.txt:14
102 msgid "Igor Paliychuk"
103 msgstr "Igor Paliychuk"
104
105 #: ../cutscenes/credits.txt:15
106 msgid "Justin Jacobs"
107 msgstr "Justin Jacobs"
108
109 #: ../cutscenes/credits.txt:16
110 msgid "Stefan Beller"
111 msgstr "Stefan Beller"
112
113 #: ../cutscenes/credits.txt:17
114 msgid "Thane Brimhall"
115 msgstr "Thane Brimhall"
116
11793 #: ../cutscenes/credits.txt:20
11894 msgid "Programmers"
11995 msgstr "Προγραμματιστές"
120
121 #: ../cutscenes/credits.txt:22
122 msgid "Andrew Engelbrecht"
123 msgstr "Andrew Engelbrecht"
124
125 #: ../cutscenes/credits.txt:23
126 msgid "Anton Golov"
127 msgstr "Anton Golov"
128
129 #: ../cutscenes/credits.txt:24
130 msgid "Artur Rojek"
131 msgstr "Artur Rojek"
132
133 #: ../cutscenes/credits.txt:25
134 msgid "blazindragon"
135 msgstr "blazindragon"
136
137 #: ../cutscenes/credits.txt:26
138 msgid "Bonbadil"
139 msgstr "Bonbadil"
140
141 #: ../cutscenes/credits.txt:27
142 msgid "Chris Oelmueller"
143 msgstr "Chris Oelmueller"
144
145 #: ../cutscenes/credits.txt:28
146 msgid "David Bariod"
147 msgstr "David Bariod"
148
149 #: ../cutscenes/credits.txt:29
150 msgid "Daniel Santos"
151 msgstr "Daniel Santos"
152
153 #: ../cutscenes/credits.txt:30
154 msgid "Gallaecio"
155 msgstr "Gallaecio"
156
157 #: ../cutscenes/credits.txt:31
158 msgid "Joseph Bleu"
159 msgstr "Joseph Bleu"
160
161 #: ../cutscenes/credits.txt:32
162 msgid "Juan PabloTamayo"
163 msgstr "Juan PabloTamayo"
164
165 #: ../cutscenes/credits.txt:33
166 msgid "Kitano"
167 msgstr "Kitano"
168
169 #: ../cutscenes/credits.txt:34
170 msgid "Kyle Belanger"
171 msgstr "Kyle Belanger"
172
173 #: ../cutscenes/credits.txt:35
174 msgid "LongerDev"
175 msgstr "LongerDev"
176
177 #: ../cutscenes/credits.txt:36
178 msgid "Manuel A. Fernandez Montecelo"
179 msgstr "Manuel A. Fernandez Montecelo"
180
181 #: ../cutscenes/credits.txt:37
182 msgid "Matthew Krohn"
183 msgstr "Matthew Krohn"
184
185 #: ../cutscenes/credits.txt:38
186 msgid "Nojan"
187 msgstr "Nojan"
188
189 #: ../cutscenes/credits.txt:39
190 msgid "Pavel Kirpichyov"
191 msgstr "Pavel Kirpichyov"
192
193 #: ../cutscenes/credits.txt:40
194 msgid "runtime-x86"
195 msgstr ""
196
197 #: ../cutscenes/credits.txt:41
198 msgid "Ryan Dansie"
199 msgstr "Ryan Dansie"
20096
20197 #: ../cutscenes/credits.txt:44
20298 msgid "Default Art"
206102 msgid "Translators"
207103 msgstr "Μεταφραστές"
208104
209 #: ../cutscenes/credits.txt:51
210 msgid "Ademaro"
211 msgstr ""
212
213 #: ../cutscenes/credits.txt:52
214 msgid "Adrian Chaves Fernandez"
215 msgstr "Adrian Chaves Fernandez"
216
217 #: ../cutscenes/credits.txt:53
218 msgid "Andrea Ranaldi"
219 msgstr "Andrea Ranaldi"
220
221 #: ../cutscenes/credits.txt:54
222 msgid "Andreas Berheim Brudin"
223 msgstr "Andreas Berheim Brudin"
224
225 #: ../cutscenes/credits.txt:55
226 msgid "Bas Doodeman"
227 msgstr "Bas Doodeman"
228
229 #: ../cutscenes/credits.txt:57
230 msgid "Carlos Sanchez"
231 msgstr "Carlos Sanchez"
232
233 #: ../cutscenes/credits.txt:59
234 msgid "Christoph J. Thompson"
235 msgstr "Christoph J. Thompson"
236
237 #: ../cutscenes/credits.txt:60
238 msgid "Denis Lysenko"
239 msgstr ""
240
241 #: ../cutscenes/credits.txt:61
242 msgid "Diego J. Romero López"
243 msgstr ""
244
245 #: ../cutscenes/credits.txt:62
246 msgid "dumaosen"
247 msgstr ""
248
249 #: ../cutscenes/credits.txt:63
250 msgid "Emil"
251 msgstr ""
252
253 #: ../cutscenes/credits.txt:64
254 msgid "Eric R"
255 msgstr ""
256
257 #: ../cutscenes/credits.txt:65
258 msgid "Evgen Pavlov"
259 msgstr "Evgen Pavlov"
260
261 #: ../cutscenes/credits.txt:66
262 msgid "Fabio Loli"
263 msgstr ""
264
265 #: ../cutscenes/credits.txt:67
266 msgid "Gianfranco Del Borrello"
267 msgstr "Gianfranco Del Borrello"
268
269 #: ../cutscenes/credits.txt:68
270 msgid "Giovanni Dalla Torre"
271 msgstr "Giovanni Dalla Torre"
272
273 #: ../cutscenes/credits.txt:69
274 msgid "GunChleoc"
275 msgstr "GunChleoc"
276
277 #: ../cutscenes/credits.txt:70
278 msgid "Hans Joachim Desserud"
279 msgstr "Hans Joachim Desserud"
280
281 #: ../cutscenes/credits.txt:71
282 msgid "hark34"
283 msgstr ""
284
285 #: ../cutscenes/credits.txt:73
286 msgid "Janet Hunt"
287 msgstr "Janet Hunt"
288
289 #: ../cutscenes/credits.txt:74
290 msgid "Juan Pablo Tamayo"
291 msgstr "Juan Pablo Tamayo"
292
293 #: ../cutscenes/credits.txt:75
294 msgid "losine"
295 msgstr "Iosine"
296
297 #: ../cutscenes/credits.txt:76
298 msgid "Marc Tormo i Bochaca"
299 msgstr ""
300
301 #: ../cutscenes/credits.txt:77
302 msgid "Michael Papageorgiou"
303 msgstr "Michael Papageorgiou"
304
305 #: ../cutscenes/credits.txt:78
306 msgid "Mikhail Karalevich"
307 msgstr "Mikhail Karalevich"
308
309 #: ../cutscenes/credits.txt:79
310 msgid "Miro Jánošík"
311 msgstr "Miro Jánošík"
312
313 #: ../cutscenes/credits.txt:80
314 msgid "Mykola Franchuk"
315 msgstr ""
316
317 #: ../cutscenes/credits.txt:81
318 msgid "MOB2"
319 msgstr ""
320
321 #: ../cutscenes/credits.txt:82
322 msgid "Morgan Strauss"
323 msgstr "Morgan Strauss"
324
325 #: ../cutscenes/credits.txt:83
326 msgid "Nea Retrogamer"
327 msgstr ""
328
329 #: ../cutscenes/credits.txt:84
330 msgid "Nguyễn Gia Phong"
331 msgstr ""
332
333 #: ../cutscenes/credits.txt:85
334 msgid "Nikita Vanku"
335 msgstr "Nikita Vanku"
336
337 #: ../cutscenes/credits.txt:86
338 msgid "Paul Wortmann"
339 msgstr "Paul Wortmann"
340
341 #: ../cutscenes/credits.txt:87
342 msgid "Pawel Puszczynski"
343 msgstr "Pawel Puszczynski"
344
345 #: ../cutscenes/credits.txt:88
346 msgid "Quentin Stievenart"
347 msgstr "Quentin Stievenart"
348
349 #: ../cutscenes/credits.txt:89
350 msgid "Rui"
351 msgstr ""
352
353 #: ../cutscenes/credits.txt:90
354 msgid "Sergey Basalaev"
355 msgstr "Sergey Basalaev"
356
357 #: ../cutscenes/credits.txt:91
358 msgid "Sergiy Borodych"
359 msgstr ""
360
361 #: ../cutscenes/credits.txt:93
362 msgid "Stefano Peris"
363 msgstr "Stefano Peris"
364
365 #: ../cutscenes/credits.txt:94
366 msgid "sujiniku"
367 msgstr "sujiniku"
368
369 #: ../cutscenes/credits.txt:95
370 msgid "Thomas Glamsch"
371 msgstr "Thomas Glamsch"
372
373 #: ../cutscenes/credits.txt:96
374 msgid "Timo Sievänen"
375 msgstr "Timo Sievänen"
376
377 #: ../cutscenes/credits.txt:97
378 msgid "Vicente Monteiro"
379 msgstr ""
380
381 #: ../cutscenes/credits.txt:98
382 msgid "Wuzzy2"
383 msgstr "Wuzzy2"
384
385 #: ../cutscenes/credits.txt:99
386 msgid "Yannis Anthymidis"
387 msgstr "Yannis Anthymidis"
388
389 #: ../cutscenes/credits.txt:100
390 msgid "Zmicer Turok"
391 msgstr ""
392
393 #: ../cutscenes/credits.txt:103
105 #: ../cutscenes/credits.txt:108
394106 msgid "Distributors"
395107 msgstr "Διανομείς"
396108
397 #: ../cutscenes/credits.txt:105
398 msgid "Ablu"
399 msgstr "Ablu"
400
401 #: ../cutscenes/credits.txt:106
402 msgid "Feillyne"
403 msgstr "Feillyne"
404
405 #: ../cutscenes/credits.txt:107
406 msgid "Jan-Hendrik Peters"
407 msgstr "Jan-Hendrik Peters"
408
409 #: ../cutscenes/credits.txt:109
410 msgid "miffe"
411 msgstr "miffe"
412
413 #: ../cutscenes/credits.txt:112
109 #: ../cutscenes/credits.txt:117
414110 msgid "Special Thanks"
415111 msgstr ""
416112
417 #: ../cutscenes/credits.txt:116
113 #: ../cutscenes/credits.txt:121
418114 msgid "For giving constant feedback and testing:"
419115 msgstr ""
420116
421 #: ../cutscenes/credits.txt:117
422 msgid "Bart Kelsey"
423 msgstr "Bart Kelsey"
424
425 #: ../cutscenes/credits.txt:118
117 #: ../cutscenes/credits.txt:123
426118 msgid "The community at OpenGameArt"
427119 msgstr ""
428120
429 #: ../cutscenes/credits.txt:122
121 #: ../cutscenes/credits.txt:127
430122 msgid "For Tiled and the Flare map exporter:"
431123 msgstr ""
432
433 #: ../cutscenes/credits.txt:123
434 msgid "Thorbjørn Lindeijer"
435 msgstr "Thorbjørn Lindeijer"
436
437 #: ../cutscenes/credits.txt:125
438 msgid "Ranie Jade Ramiso"
439 msgstr "Ranie Jade Ramiso"
22 #
33 # FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
44 # Translators:
5 # Eric R, 2018
65 # Diego J. Romero López <diegojromerolopez@gmail.com>, 2018
76 #
87 msgid ""
98 msgstr ""
109 "Project-Id-Version: PACKAGE VERSION\n"
1110 "Report-Msgid-Bugs-To: \n"
12 "POT-Creation-Date: 2018-11-17 21:50+\n"
11 "POT-Creation-Date: 2019-07-29 09:34+\n"
1312 "PO-Revision-Date: 2018-03-28 19:16+0000\n"
1413 "Last-Translator: Diego J. Romero López <diegojromerolopez@gmail.com>, 2018\n"
1514 "Language-Team: Spanish (https://www.transifex.com/flareorg/teams/84925/es/)\n"
9190 msgid "Lead Programmers"
9291 msgstr "Programadores principales"
9392
94 #: ../cutscenes/credits.txt:12
95 msgid "Clint Bellanger"
96 msgstr "Clint Bellanger"
97
98 #: ../cutscenes/credits.txt:13
99 msgid "Henrik Andersson"
100 msgstr "Henrik Andersson"
101
102 #: ../cutscenes/credits.txt:14
103 msgid "Igor Paliychuk"
104 msgstr "Igor Paliychuk"
105
106 #: ../cutscenes/credits.txt:15
107 msgid "Justin Jacobs"
108 msgstr "Justin Jacobs"
109
110 #: ../cutscenes/credits.txt:16
111 msgid "Stefan Beller"
112 msgstr "Stefan Beller"
113
114 #: ../cutscenes/credits.txt:17
115 msgid "Thane Brimhall"
116 msgstr "Thane Brimhall"
117
11893 #: ../cutscenes/credits.txt:20
11994 msgid "Programmers"
12095 msgstr "Programadores"
121
122 #: ../cutscenes/credits.txt:22
123 msgid "Andrew Engelbrecht"
124 msgstr "Andrew Engelbrecht"
125
126 #: ../cutscenes/credits.txt:23
127 msgid "Anton Golov"
128 msgstr "Anton Golov"
129
130 #: ../cutscenes/credits.txt:24
131 msgid "Artur Rojek"
132 msgstr "Artur Rojek"
133
134 #: ../cutscenes/credits.txt:25
135 msgid "blazindragon"
136 msgstr "blazindragon"
137
138 #: ../cutscenes/credits.txt:26
139 msgid "Bonbadil"
140 msgstr "Bonbadil"
141
142 #: ../cutscenes/credits.txt:27
143 msgid "Chris Oelmueller"
144 msgstr "Chris Oelmueller"
145
146 #: ../cutscenes/credits.txt:28
147 msgid "David Bariod"
148 msgstr "David Bariod"
149
150 #: ../cutscenes/credits.txt:29
151 msgid "Daniel Santos"
152 msgstr "Daniel Santos"
153
154 #: ../cutscenes/credits.txt:30
155 msgid "Gallaecio"
156 msgstr "Gallaecio"
157
158 #: ../cutscenes/credits.txt:31
159 msgid "Joseph Bleu"
160 msgstr "Joseph Bleu"
161
162 #: ../cutscenes/credits.txt:32
163 msgid "Juan PabloTamayo"
164 msgstr "Juan PabloTamayo"
165
166 #: ../cutscenes/credits.txt:33
167 msgid "Kitano"
168 msgstr "Kitano"
169
170 #: ../cutscenes/credits.txt:34
171 msgid "Kyle Belanger"
172 msgstr "Kyle Belanger"
173
174 #: ../cutscenes/credits.txt:35
175 msgid "LongerDev"
176 msgstr "LongerDev"
177
178 #: ../cutscenes/credits.txt:36
179 msgid "Manuel A. Fernandez Montecelo"
180 msgstr "Manuel A. Fernandez Montecelo"
181
182 #: ../cutscenes/credits.txt:37
183 msgid "Matthew Krohn"
184 msgstr "Matthew Krohn"
185
186 #: ../cutscenes/credits.txt:38
187 msgid "Nojan"
188 msgstr "Nojan"
189
190 #: ../cutscenes/credits.txt:39
191 msgid "Pavel Kirpichyov"
192 msgstr "Pavel Kirpichyov"
193
194 #: ../cutscenes/credits.txt:40
195 msgid "runtime-x86"
196 msgstr "runtime-x86"
197
198 #: ../cutscenes/credits.txt:41
199 msgid "Ryan Dansie"
200 msgstr "Ryan Dansie"
20196
20297 #: ../cutscenes/credits.txt:44
20398 msgid "Default Art"
207102 msgid "Translators"
208103 msgstr "Traductores"
209104
210 #: ../cutscenes/credits.txt:51
211 msgid "Ademaro"
212 msgstr "Ademaro"
213
214 #: ../cutscenes/credits.txt:52
215 msgid "Adrian Chaves Fernandez"
216 msgstr "Adrian Chaves Fernandez"
217
218 #: ../cutscenes/credits.txt:53
219 msgid "Andrea Ranaldi"
220 msgstr "Andrea Ranaldi"
221
222 #: ../cutscenes/credits.txt:54
223 msgid "Andreas Berheim Brudin"
224 msgstr "Andreas Berheim Brudin"
225
226 #: ../cutscenes/credits.txt:55
227 msgid "Bas Doodeman"
228 msgstr "Bas Doodeman"
229
230 #: ../cutscenes/credits.txt:57
231 msgid "Carlos Sanchez"
232 msgstr "Carlos Sanchez"
233
234 #: ../cutscenes/credits.txt:59
235 msgid "Christoph J. Thompson"
236 msgstr "Christoph J. Thompson"
237
238 #: ../cutscenes/credits.txt:60
239 msgid "Denis Lysenko"
240 msgstr "Denis Lysenko"
241
242 #: ../cutscenes/credits.txt:61
243 msgid "Diego J. Romero López"
244 msgstr "Diego J. Romero López"
245
246 #: ../cutscenes/credits.txt:62
247 msgid "dumaosen"
248 msgstr "dumaosen"
249
250 #: ../cutscenes/credits.txt:63
251 msgid "Emil"
252 msgstr "Emil"
253
254 #: ../cutscenes/credits.txt:64
255 msgid "Eric R"
256 msgstr "Eric R"
257
258 #: ../cutscenes/credits.txt:65
259 msgid "Evgen Pavlov"
260 msgstr "Evgen Pavlov"
261
262 #: ../cutscenes/credits.txt:66
263 msgid "Fabio Loli"
264 msgstr "Fabio Loli"
265
266 #: ../cutscenes/credits.txt:67
267 msgid "Gianfranco Del Borrello"
268 msgstr "Gianfranco Del Borrello"
269
270 #: ../cutscenes/credits.txt:68
271 msgid "Giovanni Dalla Torre"
272 msgstr "Giovanni Dalla Torre"
273
274 #: ../cutscenes/credits.txt:69
275 msgid "GunChleoc"
276 msgstr "GunChleoc"
277
278 #: ../cutscenes/credits.txt:70
279 msgid "Hans Joachim Desserud"
280 msgstr "Hans Joachim Desserud"
281
282 #: ../cutscenes/credits.txt:71
283 msgid "hark34"
284 msgstr "hark34"
285
286 #: ../cutscenes/credits.txt:73
287 msgid "Janet Hunt"
288 msgstr "Janet Hunt"
289
290 #: ../cutscenes/credits.txt:74
291 msgid "Juan Pablo Tamayo"
292 msgstr "Juan Pablo Tamayo"
293
294 #: ../cutscenes/credits.txt:75
295 msgid "losine"
296 msgstr "losine"
297
298 #: ../cutscenes/credits.txt:76
299 msgid "Marc Tormo i Bochaca"
300 msgstr "Marc Tormo i Bochaca"
301
302 #: ../cutscenes/credits.txt:77
303 msgid "Michael Papageorgiou"
304 msgstr "Michael Papageorgiou"
305
306 #: ../cutscenes/credits.txt:78
307 msgid "Mikhail Karalevich"
308 msgstr "Mikhail Karalevich"
309
310 #: ../cutscenes/credits.txt:79
311 msgid "Miro Jánošík"
312 msgstr "Miro Jánošík"
313
314 #: ../cutscenes/credits.txt:80
315 msgid "Mykola Franchuk"
316 msgstr "Mykola Franchuk"
317
318 #: ../cutscenes/credits.txt:81
319 msgid "MOB2"
320 msgstr "MOB2"
321
322 #: ../cutscenes/credits.txt:82
323 msgid "Morgan Strauss"
324 msgstr "Morgan Strauss"
325
326 #: ../cutscenes/credits.txt:83
327 msgid "Nea Retrogamer"
328 msgstr "Nea Retrogamer"
329
330 #: ../cutscenes/credits.txt:84
331 msgid "Nguyễn Gia Phong"
332 msgstr "Nguyễn Gia Phong"
333
334 #: ../cutscenes/credits.txt:85
335 msgid "Nikita Vanku"
336 msgstr "Nikita Vanku"
337
338 #: ../cutscenes/credits.txt:86
339 msgid "Paul Wortmann"
340 msgstr "Paul Wortmann"
341
342 #: ../cutscenes/credits.txt:87
343 msgid "Pawel Puszczynski"
344 msgstr "Pawel Puszczynski"
345
346 #: ../cutscenes/credits.txt:88
347 msgid "Quentin Stievenart"
348 msgstr "Quentin Stievenart"
349
350 #: ../cutscenes/credits.txt:89
351 msgid "Rui"
352 msgstr "Rui"
353
354 #: ../cutscenes/credits.txt:90
355 msgid "Sergey Basalaev"
356 msgstr "Sergey Basalaev"
357
358 #: ../cutscenes/credits.txt:91
359 msgid "Sergiy Borodych"
360 msgstr "Sergiy Borodych"
361
362 #: ../cutscenes/credits.txt:93
363 msgid "Stefano Peris"
364 msgstr "Stefano Peris"
365
366 #: ../cutscenes/credits.txt:94
367 msgid "sujiniku"
368 msgstr "sujiniku"
369
370 #: ../cutscenes/credits.txt:95
371 msgid "Thomas Glamsch"
372 msgstr "Thomas Glamsch"
373
374 #: ../cutscenes/credits.txt:96
375 msgid "Timo Sievänen"
376 msgstr "Timo Sievänen"
377
378 #: ../cutscenes/credits.txt:97
379 msgid "Vicente Monteiro"
380 msgstr "Vicente Monteiro"
381
382 #: ../cutscenes/credits.txt:98
383 msgid "Wuzzy2"
384 msgstr "Wuzzy2"
385
386 #: ../cutscenes/credits.txt:99
387 msgid "Yannis Anthymidis"
388 msgstr "Yannis Anthymidis"
389
390 #: ../cutscenes/credits.txt:100
391 msgid "Zmicer Turok"
392 msgstr "Zmicer Turok"
393
394 #: ../cutscenes/credits.txt:103
105 #: ../cutscenes/credits.txt:108
395106 msgid "Distributors"
396107 msgstr "Distribuidores"
397108
398 #: ../cutscenes/credits.txt:105
399 msgid "Ablu"
400 msgstr "Ablu"
401
402 #: ../cutscenes/credits.txt:106
403 msgid "Feillyne"
404 msgstr "Feillyne"
405
406 #: ../cutscenes/credits.txt:107
407 msgid "Jan-Hendrik Peters"
408 msgstr "Jan-Hendrik Peters"
409
410 #: ../cutscenes/credits.txt:109
411 msgid "miffe"
412 msgstr "miffe"
413
414 #: ../cutscenes/credits.txt:112
109 #: ../cutscenes/credits.txt:117
415110 msgid "Special Thanks"
416111 msgstr "Agradecimientos especiales"
417112
418 #: ../cutscenes/credits.txt:116
113 #: ../cutscenes/credits.txt:121
419114 msgid "For giving constant feedback and testing:"
420115 msgstr "Por su retroalimentación y pruebas constantes"
421116
422 #: ../cutscenes/credits.txt:117
423 msgid "Bart Kelsey"
424 msgstr "Bart Kelsey"
425
426 #: ../cutscenes/credits.txt:118
117 #: ../cutscenes/credits.txt:123
427118 msgid "The community at OpenGameArt"
428119 msgstr "La comunidad de OpenGameArt"
429120
430 #: ../cutscenes/credits.txt:122
121 #: ../cutscenes/credits.txt:127
431122 msgid "For Tiled and the Flare map exporter:"
432123 msgstr "Por Tiled y el exportador de mapas de Flare:"
433
434 #: ../cutscenes/credits.txt:123
435 msgid "Thorbjørn Lindeijer"
436 msgstr "Thorbjørn Lindeijer"
437
438 #: ../cutscenes/credits.txt:125
439 msgid "Ranie Jade Ramiso"
440 msgstr "Ranie Jade Ramiso"
0 # Copyright (C) 2011 Clint Bellanger
1 # This file is distributed under the same license as the FLARE package.
2 #
3 # FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
4 msgid ""
5 msgstr ""
6 "Project-Id-Version: PACKAGE VERSION\n"
7 "Report-Msgid-Bugs-To: \n"
8 "POT-Creation-Date: 2019-07-29 09:34+\n"
9 "PO-Revision-Date: 2018-03-28 19:16+0000\n"
10 "Language-Team: Basque (https://www.transifex.com/flareorg/teams/84925/eu/)\n"
11 "MIME-Version: 1.0\n"
12 "Content-Type: text/plain; charset=UTF-8\n"
13 "Content-Transfer-Encoding: 8bit\n"
14 "Language: eu\n"
15 "Plural-Forms: nplurals=2; plural=(n != 1);\n"
16
17 #: ../engine/primary_stats.txt:3
18 msgid "Physical"
19 msgstr ""
20
21 #: ../engine/primary_stats.txt:7
22 msgid "Mental"
23 msgstr ""
24
25 #: ../engine/primary_stats.txt:11
26 msgid "Offense"
27 msgstr ""
28
29 #: ../engine/primary_stats.txt:15
30 msgid "Defense"
31 msgstr ""
32
33 #: ../engine/damage_types.txt:3
34 msgid "Melee Damage"
35 msgstr ""
36
37 #: ../engine/damage_types.txt:4
38 msgid "Increases the damage done with swords and other melee weapons."
39 msgstr ""
40
41 #: ../engine/damage_types.txt:5
42 msgid "Melee Damage Min"
43 msgstr ""
44
45 #: ../engine/damage_types.txt:6
46 msgid "Melee Damage Max"
47 msgstr ""
48
49 #: ../engine/damage_types.txt:12
50 msgid "Ranged Damage"
51 msgstr ""
52
53 #: ../engine/damage_types.txt:13
54 msgid "Increases the damage done with bows and other ranged weapons."
55 msgstr ""
56
57 #: ../engine/damage_types.txt:14
58 msgid "Ranged Damage Min"
59 msgstr ""
60
61 #: ../engine/damage_types.txt:15
62 msgid "Ranged Damage Max"
63 msgstr ""
64
65 #: ../engine/damage_types.txt:21
66 msgid "Mental Damage"
67 msgstr ""
68
69 #: ../engine/damage_types.txt:22
70 msgid "Increases the damage done with staves and other mental weapons."
71 msgstr ""
72
73 #: ../engine/damage_types.txt:23
74 msgid "Mental Damage Min"
75 msgstr ""
76
77 #: ../engine/damage_types.txt:24
78 msgid "Mental Damage Max"
79 msgstr ""
80
81 #: ../cutscenes/credits.txt:7
82 msgid "Flare Engine Credits"
83 msgstr ""
84
85 #: ../cutscenes/credits.txt:10
86 msgid "Lead Programmers"
87 msgstr ""
88
89 #: ../cutscenes/credits.txt:20
90 msgid "Programmers"
91 msgstr ""
92
93 #: ../cutscenes/credits.txt:44
94 msgid "Default Art"
95 msgstr ""
96
97 #: ../cutscenes/credits.txt:49
98 msgid "Translators"
99 msgstr ""
100
101 #: ../cutscenes/credits.txt:108
102 msgid "Distributors"
103 msgstr ""
104
105 #: ../cutscenes/credits.txt:117
106 msgid "Special Thanks"
107 msgstr ""
108
109 #: ../cutscenes/credits.txt:121
110 msgid "For giving constant feedback and testing:"
111 msgstr ""
112
113 #: ../cutscenes/credits.txt:123
114 msgid "The community at OpenGameArt"
115 msgstr ""
116
117 #: ../cutscenes/credits.txt:127
118 msgid "For Tiled and the Flare map exporter:"
119 msgstr ""
55 msgstr ""
66 "Project-Id-Version: PACKAGE VERSION\n"
77 "Report-Msgid-Bugs-To: \n"
8 "POT-Creation-Date: 2018-11-13 17:21+\n"
8 "POT-Creation-Date: 2019-07-29 09:34+\n"
99 "PO-Revision-Date: 2018-03-28 19:16+0000\n"
1010 "Language-Team: Finnish (https://www.transifex.com/flareorg/teams/84925/fi/)\n"
1111 "MIME-Version: 1.0\n"
8686 msgid "Lead Programmers"
8787 msgstr ""
8888
89 #: ../cutscenes/credits.txt:12
90 msgid "Clint Bellanger"
91 msgstr ""
92
93 #: ../cutscenes/credits.txt:13
94 msgid "Henrik Andersson"
95 msgstr ""
96
97 #: ../cutscenes/credits.txt:14
98 msgid "Igor Paliychuk"
99 msgstr ""
100
101 #: ../cutscenes/credits.txt:15
102 msgid "Justin Jacobs"
103 msgstr ""
104
105 #: ../cutscenes/credits.txt:16
106 msgid "Stefan Beller"
107 msgstr ""
108
109 #: ../cutscenes/credits.txt:17
110 msgid "Thane Brimhall"
111 msgstr ""
112
11389 #: ../cutscenes/credits.txt:20
11490 msgid "Programmers"
115 msgstr ""
116
117 #: ../cutscenes/credits.txt:22
118 msgid "Andrew Engelbrecht"
119 msgstr ""
120
121 #: ../cutscenes/credits.txt:23
122 msgid "Anton Golov"
123 msgstr ""
124
125 #: ../cutscenes/credits.txt:24
126 msgid "Artur Rojek"
127 msgstr ""
128
129 #: ../cutscenes/credits.txt:25
130 msgid "blazindragon"
131 msgstr ""
132
133 #: ../cutscenes/credits.txt:26
134 msgid "Bonbadil"
135 msgstr ""
136
137 #: ../cutscenes/credits.txt:27
138 msgid "Chris Oelmueller"
139 msgstr ""
140
141 #: ../cutscenes/credits.txt:28
142 msgid "David Bariod"
143 msgstr ""
144
145 #: ../cutscenes/credits.txt:29
146 msgid "Daniel Santos"
147 msgstr ""
148
149 #: ../cutscenes/credits.txt:30
150 msgid "Gallaecio"
151 msgstr ""
152
153 #: ../cutscenes/credits.txt:31
154 msgid "Joseph Bleu"
155 msgstr ""
156
157 #: ../cutscenes/credits.txt:32
158 msgid "Juan PabloTamayo"
159 msgstr ""
160
161 #: ../cutscenes/credits.txt:33
162 msgid "Kitano"
163 msgstr ""
164
165 #: ../cutscenes/credits.txt:34
166 msgid "Kyle Belanger"
167 msgstr ""
168
169 #: ../cutscenes/credits.txt:35
170 msgid "LongerDev"
171 msgstr ""
172
173 #: ../cutscenes/credits.txt:36
174 msgid "Manuel A. Fernandez Montecelo"
175 msgstr ""
176
177 #: ../cutscenes/credits.txt:37
178 msgid "Matthew Krohn"
179 msgstr ""
180
181 #: ../cutscenes/credits.txt:38
182 msgid "Nojan"
183 msgstr ""
184
185 #: ../cutscenes/credits.txt:39
186 msgid "Pavel Kirpichyov"
187 msgstr ""
188
189 #: ../cutscenes/credits.txt:40
190 msgid "runtime-x86"
191 msgstr ""
192
193 #: ../cutscenes/credits.txt:41
194 msgid "Ryan Dansie"
19591 msgstr ""
19692
19793 #: ../cutscenes/credits.txt:44
20298 msgid "Translators"
20399 msgstr ""
204100
205 #: ../cutscenes/credits.txt:51
206 msgid "Ademaro"
207 msgstr ""
208
209 #: ../cutscenes/credits.txt:52
210 msgid "Adrian Chaves Fernandez"
211 msgstr ""
212
213 #: ../cutscenes/credits.txt:53
214 msgid "Andrea Ranaldi"
215 msgstr ""
216
217 #: ../cutscenes/credits.txt:54
218 msgid "Andreas Berheim Brudin"
219 msgstr ""
220
221 #: ../cutscenes/credits.txt:55
222 msgid "Bas Doodeman"
223 msgstr ""
224
225 #: ../cutscenes/credits.txt:57
226 msgid "Carlos Sanchez"
227 msgstr ""
228
229 #: ../cutscenes/credits.txt:59
230 msgid "Christoph J. Thompson"
231 msgstr ""
232
233 #: ../cutscenes/credits.txt:60
234 msgid "Denis Lysenko"
235 msgstr ""
236
237 #: ../cutscenes/credits.txt:61
238 msgid "Diego J. Romero López"
239 msgstr ""
240
241 #: ../cutscenes/credits.txt:62
242 msgid "dumaosen"
243 msgstr ""
244
245 #: ../cutscenes/credits.txt:63
246 msgid "Emil"
247 msgstr ""
248
249 #: ../cutscenes/credits.txt:64
250 msgid "Eric R"
251 msgstr ""
252
253 #: ../cutscenes/credits.txt:65
254 msgid "Evgen Pavlov"
255 msgstr ""
256
257 #: ../cutscenes/credits.txt:66
258 msgid "Fabio Loli"
259 msgstr ""
260
261 #: ../cutscenes/credits.txt:67
262 msgid "Gianfranco Del Borrello"
263 msgstr ""
264
265 #: ../cutscenes/credits.txt:68
266 msgid "Giovanni Dalla Torre"
267 msgstr ""
268
269 #: ../cutscenes/credits.txt:69
270 msgid "GunChleoc"
271 msgstr ""
272
273 #: ../cutscenes/credits.txt:70
274 msgid "Hans Joachim Desserud"
275 msgstr ""
276
277 #: ../cutscenes/credits.txt:71
278 msgid "hark34"
279 msgstr ""
280
281 #: ../cutscenes/credits.txt:73
282 msgid "Janet Hunt"
283 msgstr ""
284
285 #: ../cutscenes/credits.txt:74
286 msgid "Juan Pablo Tamayo"
287 msgstr ""
288
289 #: ../cutscenes/credits.txt:75
290 msgid "losine"
291 msgstr ""
292
293 #: ../cutscenes/credits.txt:76
294 msgid "Marc Tormo i Bochaca"
295 msgstr ""
296
297 #: ../cutscenes/credits.txt:77
298 msgid "Michael Papageorgiou"
299 msgstr ""
300
301 #: ../cutscenes/credits.txt:78
302 msgid "Mikhail Karalevich"
303 msgstr ""
304
305 #: ../cutscenes/credits.txt:79
306 msgid "Miro Jánošík"
307 msgstr ""
308
309 #: ../cutscenes/credits.txt:80
310 msgid "Mykola Franchuk"
311 msgstr ""
312
313 #: ../cutscenes/credits.txt:81
314 msgid "MOB2"
315 msgstr ""
316
317 #: ../cutscenes/credits.txt:82
318 msgid "Morgan Strauss"
319 msgstr ""
320
321 #: ../cutscenes/credits.txt:83
322 msgid "Nea Retrogamer"
323 msgstr ""
324
325 #: ../cutscenes/credits.txt:84
326 msgid "Nguyễn Gia Phong"
327 msgstr ""
328
329 #: ../cutscenes/credits.txt:85
330 msgid "Nikita Vanku"
331 msgstr ""
332
333 #: ../cutscenes/credits.txt:86
334 msgid "Paul Wortmann"
335 msgstr ""
336
337 #: ../cutscenes/credits.txt:87
338 msgid "Pawel Puszczynski"
339 msgstr ""
340
341 #: ../cutscenes/credits.txt:88
342 msgid "Quentin Stievenart"
343 msgstr ""
344
345 #: ../cutscenes/credits.txt:89
346 msgid "Rui"
347 msgstr ""
348
349 #: ../cutscenes/credits.txt:90
350 msgid "Sergey Basalaev"
351 msgstr ""
352
353 #: ../cutscenes/credits.txt:91
354 msgid "Sergiy Borodych"
355 msgstr ""
356
357 #: ../cutscenes/credits.txt:93
358 msgid "Stefano Peris"
359 msgstr ""
360
361 #: ../cutscenes/credits.txt:94
362 msgid "sujiniku"
363 msgstr ""
364
365 #: ../cutscenes/credits.txt:95
366 msgid "Thomas Glamsch"
367 msgstr ""
368
369 #: ../cutscenes/credits.txt:96
370 msgid "Timo Sievänen"
371 msgstr ""
372
373 #: ../cutscenes/credits.txt:97
374 msgid "Vicente Monteiro"
375 msgstr ""
376
377 #: ../cutscenes/credits.txt:98
378 msgid "Wuzzy2"
379 msgstr ""
380
381 #: ../cutscenes/credits.txt:99
382 msgid "Yannis Anthymidis"
383 msgstr ""
384
385 #: ../cutscenes/credits.txt:100
386 msgid "Zmicer Turok"
387 msgstr ""
388
389 #: ../cutscenes/credits.txt:103
101 #: ../cutscenes/credits.txt:108
390102 msgid "Distributors"
391103 msgstr ""
392104
393 #: ../cutscenes/credits.txt:105
394 msgid "Ablu"
395 msgstr ""
396
397 #: ../cutscenes/credits.txt:106
398 msgid "Feillyne"
399 msgstr ""
400
401 #: ../cutscenes/credits.txt:107
402 msgid "Jan-Hendrik Peters"
403 msgstr ""
404
405 #: ../cutscenes/credits.txt:109
406 msgid "miffe"
407 msgstr ""
408
409 #: ../cutscenes/credits.txt:112
105 #: ../cutscenes/credits.txt:117
410106 msgid "Special Thanks"
411107 msgstr ""
412108
413 #: ../cutscenes/credits.txt:116
109 #: ../cutscenes/credits.txt:121
414110 msgid "For giving constant feedback and testing:"
415111 msgstr ""
416112
417 #: ../cutscenes/credits.txt:117
418 msgid "Bart Kelsey"
419 msgstr ""
420
421 #: ../cutscenes/credits.txt:118
113 #: ../cutscenes/credits.txt:123
422114 msgid "The community at OpenGameArt"
423115 msgstr ""
424116
425 #: ../cutscenes/credits.txt:122
117 #: ../cutscenes/credits.txt:127
426118 msgid "For Tiled and the Flare map exporter:"
427119 msgstr ""
428
429 #: ../cutscenes/credits.txt:123
430 msgid "Thorbjørn Lindeijer"
431 msgstr ""
432
433 #: ../cutscenes/credits.txt:125
434 msgid "Ranie Jade Ramiso"
435 msgstr ""
33 # FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
44 # Translators:
55 # Justin Jacobs <jajdorkster@gmail.com>, 2018
6 # syl_, 2019
7 # leø <leoboudet@orne-libre.fr>, 2020
68 #
79 msgid ""
810 msgstr ""
911 "Project-Id-Version: PACKAGE VERSION\n"
1012 "Report-Msgid-Bugs-To: \n"
11 "POT-Creation-Date: 2018-11-13 17:21+\n"
13 "POT-Creation-Date: 2020-05-20 16:39+\n"
1214 "PO-Revision-Date: 2018-03-28 19:16+0000\n"
13 "Last-Translator: Justin Jacobs <jajdorkster@gmail.com>, 2018\n"
15 "Last-Translator: leø <leoboudet@orne-libre.fr>, 2020\n"
1416 "Language-Team: French (https://www.transifex.com/flareorg/teams/84925/fr/)\n"
1517 "MIME-Version: 1.0\n"
1618 "Content-Type: text/plain; charset=UTF-8\n"
2830
2931 #: ../engine/primary_stats.txt:11
3032 msgid "Offense"
31 msgstr "Offense"
33 msgstr "Attaque"
3234
3335 #: ../engine/primary_stats.txt:15
3436 msgid "Defense"
3638
3739 #: ../engine/damage_types.txt:3
3840 msgid "Melee Damage"
39 msgstr "Dégats de mélée"
41 msgstr "Dégâts de mêlée"
4042
4143 #: ../engine/damage_types.txt:4
4244 msgid "Increases the damage done with swords and other melee weapons."
43 msgstr "Augmente les dégats infligés avec des épées et autres armes de mélée"
45 msgstr "Augmente les dégâts infligés avec des épées et autres armes de mêlée"
4446
4547 #: ../engine/damage_types.txt:5
4648 msgid "Melee Damage Min"
47 msgstr "Dégats de mélée Min"
49 msgstr "Dégâts de mêlée min"
4850
4951 #: ../engine/damage_types.txt:6
5052 msgid "Melee Damage Max"
51 msgstr "Dégats de mélée max"
53 msgstr "Dégâts de mêlée max"
5254
5355 #: ../engine/damage_types.txt:12
5456 msgid "Ranged Damage"
55 msgstr "Dégats a distance"
57 msgstr "Dégâts à distance"
5658
5759 #: ../engine/damage_types.txt:13
5860 msgid "Increases the damage done with bows and other ranged weapons."
59 msgstr "Augmente les dégats infligés avec des arcs et autres armes a distance"
61 msgstr ""
62 "Augmente les dégâts infligés avec des arcs et autres armes à distance."
6063
6164 #: ../engine/damage_types.txt:14
6265 msgid "Ranged Damage Min"
63 msgstr "Dégats a distance min"
66 msgstr "Dégâts à distance min"
6467
6568 #: ../engine/damage_types.txt:15
6669 msgid "Ranged Damage Max"
67 msgstr "Dégats a distance max"
70 msgstr "Dégâts à distance max"
6871
6972 #: ../engine/damage_types.txt:21
7073 msgid "Mental Damage"
71 msgstr "Dégats mentaux"
74 msgstr "Dégâts mentaux"
7275
7376 #: ../engine/damage_types.txt:22
7477 msgid "Increases the damage done with staves and other mental weapons."
75 msgstr "Augmente les dégats infligés avec des batons et autres armes mentales"
78 msgstr "Augmente les dégâts infligés avec des bâtons et autres armes mentales"
7679
7780 #: ../engine/damage_types.txt:23
7881 msgid "Mental Damage Min"
79 msgstr "Dégats mentaux min"
82 msgstr "Dégâts mentaux min"
8083
8184 #: ../engine/damage_types.txt:24
8285 msgid "Mental Damage Max"
83 msgstr "Dégats mentaux max"
86 msgstr "Dégâts mentaux max"
8487
8588 #: ../cutscenes/credits.txt:7
8689 msgid "Flare Engine Credits"
87 msgstr "Credits du Moteur de Flare"
90 msgstr "Crédits du moteur de Flare"
8891
8992 #: ../cutscenes/credits.txt:10
9093 msgid "Lead Programmers"
91 msgstr "Programmeurs Principaux"
92
93 #: ../cutscenes/credits.txt:12
94 msgid "Clint Bellanger"
95 msgstr ""
96
97 #: ../cutscenes/credits.txt:13
98 msgid "Henrik Andersson"
99 msgstr ""
100
101 #: ../cutscenes/credits.txt:14
102 msgid "Igor Paliychuk"
103 msgstr ""
104
105 #: ../cutscenes/credits.txt:15
106 msgid "Justin Jacobs"
107 msgstr ""
108
109 #: ../cutscenes/credits.txt:16
110 msgid "Stefan Beller"
111 msgstr ""
112
113 #: ../cutscenes/credits.txt:17
114 msgid "Thane Brimhall"
115 msgstr ""
94 msgstr "Programmeurs principaux"
11695
11796 #: ../cutscenes/credits.txt:20
11897 msgid "Programmers"
11998 msgstr "Programmeurs"
12099
121 #: ../cutscenes/credits.txt:22
122 msgid "Andrew Engelbrecht"
123 msgstr ""
100 #: ../cutscenes/credits.txt:48
101 msgid "Default Art"
102 msgstr "Illustrateurs"
124103
125 #: ../cutscenes/credits.txt:23
126 msgid "Anton Golov"
127 msgstr ""
128
129 #: ../cutscenes/credits.txt:24
130 msgid "Artur Rojek"
131 msgstr ""
132
133 #: ../cutscenes/credits.txt:25
134 msgid "blazindragon"
135 msgstr ""
136
137 #: ../cutscenes/credits.txt:26
138 msgid "Bonbadil"
139 msgstr ""
140
141 #: ../cutscenes/credits.txt:27
142 msgid "Chris Oelmueller"
143 msgstr ""
144
145 #: ../cutscenes/credits.txt:28
146 msgid "David Bariod"
147 msgstr ""
148
149 #: ../cutscenes/credits.txt:29
150 msgid "Daniel Santos"
151 msgstr ""
152
153 #: ../cutscenes/credits.txt:30
154 msgid "Gallaecio"
155 msgstr ""
156
157 #: ../cutscenes/credits.txt:31
158 msgid "Joseph Bleu"
159 msgstr ""
160
161 #: ../cutscenes/credits.txt:32
162 msgid "Juan PabloTamayo"
163 msgstr ""
164
165 #: ../cutscenes/credits.txt:33
166 msgid "Kitano"
167 msgstr ""
168
169 #: ../cutscenes/credits.txt:34
170 msgid "Kyle Belanger"
171 msgstr ""
172
173 #: ../cutscenes/credits.txt:35
174 msgid "LongerDev"
175 msgstr ""
176
177 #: ../cutscenes/credits.txt:36
178 msgid "Manuel A. Fernandez Montecelo"
179 msgstr ""
180
181 #: ../cutscenes/credits.txt:37
182 msgid "Matthew Krohn"
183 msgstr ""
184
185 #: ../cutscenes/credits.txt:38
186 msgid "Nojan"
187 msgstr ""
188
189 #: ../cutscenes/credits.txt:39
190 msgid "Pavel Kirpichyov"
191 msgstr ""
192
193 #: ../cutscenes/credits.txt:40
194 msgid "runtime-x86"
195 msgstr ""
196
197 #: ../cutscenes/credits.txt:41
198 msgid "Ryan Dansie"
199 msgstr ""
200
201 #: ../cutscenes/credits.txt:44
202 msgid "Default Art"
203 msgstr ""
204
205 #: ../cutscenes/credits.txt:49
104 #: ../cutscenes/credits.txt:53
206105 msgid "Translators"
207106 msgstr "Traducteurs"
208107
209 #: ../cutscenes/credits.txt:51
210 msgid "Ademaro"
211 msgstr ""
212
213 #: ../cutscenes/credits.txt:52
214 msgid "Adrian Chaves Fernandez"
215 msgstr ""
216
217 #: ../cutscenes/credits.txt:53
218 msgid "Andrea Ranaldi"
219 msgstr ""
220
221 #: ../cutscenes/credits.txt:54
222 msgid "Andreas Berheim Brudin"
223 msgstr ""
224
225 #: ../cutscenes/credits.txt:55
226 msgid "Bas Doodeman"
227 msgstr ""
228
229 #: ../cutscenes/credits.txt:57
230 msgid "Carlos Sanchez"
231 msgstr ""
232
233 #: ../cutscenes/credits.txt:59
234 msgid "Christoph J. Thompson"
235 msgstr ""
236
237 #: ../cutscenes/credits.txt:60
238 msgid "Denis Lysenko"
239 msgstr ""
240
241 #: ../cutscenes/credits.txt:61
242 msgid "Diego J. Romero López"
243 msgstr ""
244
245 #: ../cutscenes/credits.txt:62
246 msgid "dumaosen"
247 msgstr ""
248
249 #: ../cutscenes/credits.txt:63
250 msgid "Emil"
251 msgstr ""
252
253 #: ../cutscenes/credits.txt:64
254 msgid "Eric R"
255 msgstr ""
256
257 #: ../cutscenes/credits.txt:65
258 msgid "Evgen Pavlov"
259 msgstr ""
260
261 #: ../cutscenes/credits.txt:66
262 msgid "Fabio Loli"
263 msgstr ""
264
265 #: ../cutscenes/credits.txt:67
266 msgid "Gianfranco Del Borrello"
267 msgstr ""
268
269 #: ../cutscenes/credits.txt:68
270 msgid "Giovanni Dalla Torre"
271 msgstr ""
272
273 #: ../cutscenes/credits.txt:69
274 msgid "GunChleoc"
275 msgstr ""
276
277 #: ../cutscenes/credits.txt:70
278 msgid "Hans Joachim Desserud"
279 msgstr ""
280
281 #: ../cutscenes/credits.txt:71
282 msgid "hark34"
283 msgstr ""
284
285 #: ../cutscenes/credits.txt:73
286 msgid "Janet Hunt"
287 msgstr ""
288
289 #: ../cutscenes/credits.txt:74
290 msgid "Juan Pablo Tamayo"
291 msgstr ""
292
293 #: ../cutscenes/credits.txt:75
294 msgid "losine"
295 msgstr ""
296
297 #: ../cutscenes/credits.txt:76
298 msgid "Marc Tormo i Bochaca"
299 msgstr ""
300
301 #: ../cutscenes/credits.txt:77
302 msgid "Michael Papageorgiou"
303 msgstr ""
304
305 #: ../cutscenes/credits.txt:78
306 msgid "Mikhail Karalevich"
307 msgstr ""
308
309 #: ../cutscenes/credits.txt:79
310 msgid "Miro Jánošík"
311 msgstr ""
312
313 #: ../cutscenes/credits.txt:80
314 msgid "Mykola Franchuk"
315 msgstr ""
316
317 #: ../cutscenes/credits.txt:81
318 msgid "MOB2"
319 msgstr ""
320
321 #: ../cutscenes/credits.txt:82
322 msgid "Morgan Strauss"
323 msgstr ""
324
325 #: ../cutscenes/credits.txt:83
326 msgid "Nea Retrogamer"
327 msgstr ""
328
329 #: ../cutscenes/credits.txt:84
330 msgid "Nguyễn Gia Phong"
331 msgstr ""
332
333 #: ../cutscenes/credits.txt:85
334 msgid "Nikita Vanku"
335 msgstr ""
336
337 #: ../cutscenes/credits.txt:86
338 msgid "Paul Wortmann"
339 msgstr ""
340
341 #: ../cutscenes/credits.txt:87
342 msgid "Pawel Puszczynski"
343 msgstr ""
344
345 #: ../cutscenes/credits.txt:88
346 msgid "Quentin Stievenart"
347 msgstr ""
348
349 #: ../cutscenes/credits.txt:89
350 msgid "Rui"
351 msgstr ""
352
353 #: ../cutscenes/credits.txt:90
354 msgid "Sergey Basalaev"
355 msgstr ""
356
357 #: ../cutscenes/credits.txt:91
358 msgid "Sergiy Borodych"
359 msgstr ""
360
361 #: ../cutscenes/credits.txt:93
362 msgid "Stefano Peris"
363 msgstr ""
364
365 #: ../cutscenes/credits.txt:94
366 msgid "sujiniku"
367 msgstr ""
368
369 #: ../cutscenes/credits.txt:95
370 msgid "Thomas Glamsch"
371 msgstr ""
372
373 #: ../cutscenes/credits.txt:96
374 msgid "Timo Sievänen"
375 msgstr ""
376
377 #: ../cutscenes/credits.txt:97
378 msgid "Vicente Monteiro"
379 msgstr ""
380
381 #: ../cutscenes/credits.txt:98
382 msgid "Wuzzy2"
383 msgstr ""
384
385 #: ../cutscenes/credits.txt:99
386 msgid "Yannis Anthymidis"
387 msgstr ""
388
389 #: ../cutscenes/credits.txt:100
390 msgid "Zmicer Turok"
391 msgstr ""
392
393 #: ../cutscenes/credits.txt:103
108 #: ../cutscenes/credits.txt:112
394109 msgid "Distributors"
395110 msgstr "Distributeurs"
396111
397 #: ../cutscenes/credits.txt:105
398 msgid "Ablu"
399 msgstr ""
112 #: ../cutscenes/credits.txt:121
113 msgid "Special Thanks"
114 msgstr "Remerciements spéciaux"
400115
401 #: ../cutscenes/credits.txt:106
402 msgid "Feillyne"
403 msgstr ""
404
405 #: ../cutscenes/credits.txt:107
406 msgid "Jan-Hendrik Peters"
407 msgstr ""
408
409 #: ../cutscenes/credits.txt:109
410 msgid "miffe"
411 msgstr ""
412
413 #: ../cutscenes/credits.txt:112
414 msgid "Special Thanks"
415 msgstr "Remerciements spécials"
416
417 #: ../cutscenes/credits.txt:116
116 #: ../cutscenes/credits.txt:125
418117 msgid "For giving constant feedback and testing:"
419118 msgstr "Pour constamment donner leur avis et tester :"
420119
421 #: ../cutscenes/credits.txt:117
422 msgid "Bart Kelsey"
423 msgstr ""
424
425 #: ../cutscenes/credits.txt:118
120 #: ../cutscenes/credits.txt:127
426121 msgid "The community at OpenGameArt"
427122 msgstr "La communauté OpenGameArt"
428123
429 #: ../cutscenes/credits.txt:122
124 #: ../cutscenes/credits.txt:131
430125 msgid "For Tiled and the Flare map exporter:"
431 msgstr "Pour Tiled et l'exporteur de map de Flare"
432
433 #: ../cutscenes/credits.txt:123
434 msgid "Thorbjørn Lindeijer"
435 msgstr ""
436
437 #: ../cutscenes/credits.txt:125
438 msgid "Ranie Jade Ramiso"
439 msgstr ""
126 msgstr "Pour Tiled et l'exportateur de carte de Flare :"
99 msgstr ""
1010 "Project-Id-Version: PACKAGE VERSION\n"
1111 "Report-Msgid-Bugs-To: \n"
12 "POT-Creation-Date: 2018-11-14 00:57+\n"
12 "POT-Creation-Date: 2019-07-29 09:34+\n"
1313 "PO-Revision-Date: 2018-03-28 19:16+0000\n"
1414 "Last-Translator: GunChleoc, 2018\n"
1515 "Language-Team: Gaelic, Scottish (https://www.transifex.com/flareorg/teams/84925/gd/)\n"
9191 msgid "Lead Programmers"
9292 msgstr "Prìomh luchd-prògramachaidh"
9393
94 #: ../cutscenes/credits.txt:12
95 msgid "Clint Bellanger"
96 msgstr "Clint Bellanger"
97
98 #: ../cutscenes/credits.txt:13
99 msgid "Henrik Andersson"
100 msgstr "Henrik Andersson"
101
102 #: ../cutscenes/credits.txt:14
103 msgid "Igor Paliychuk"
104 msgstr "Igor Paliychuk"
105
106 #: ../cutscenes/credits.txt:15
107 msgid "Justin Jacobs"
108 msgstr "Justin Jacobs"
109
110 #: ../cutscenes/credits.txt:16
111 msgid "Stefan Beller"
112 msgstr "Stefan Beller"
113
114 #: ../cutscenes/credits.txt:17
115 msgid "Thane Brimhall"
116 msgstr "Thane Brimhall"
117
11894 #: ../cutscenes/credits.txt:20
11995 msgid "Programmers"
12096 msgstr "Luchd-prògramachaidh"
121
122 #: ../cutscenes/credits.txt:22
123 msgid "Andrew Engelbrecht"
124 msgstr "Andrew Engelbrecht"
125
126 #: ../cutscenes/credits.txt:23
127 msgid "Anton Golov"
128 msgstr "Anton Golov"
129
130 #: ../cutscenes/credits.txt:24
131 msgid "Artur Rojek"
132 msgstr "Artur Rojek"
133
134 #: ../cutscenes/credits.txt:25
135 msgid "blazindragon"
136 msgstr "blazindragon"
137
138 #: ../cutscenes/credits.txt:26
139 msgid "Bonbadil"
140 msgstr "Bonbadil"
141
142 #: ../cutscenes/credits.txt:27
143 msgid "Chris Oelmueller"
144 msgstr "Chris Oelmueller"
145
146 #: ../cutscenes/credits.txt:28
147 msgid "David Bariod"
148 msgstr "David Bariod"
149
150 #: ../cutscenes/credits.txt:29
151 msgid "Daniel Santos"
152 msgstr "Daniel Santos"
153
154 #: ../cutscenes/credits.txt:30
155 msgid "Gallaecio"
156 msgstr "Gallaecio"
157
158 #: ../cutscenes/credits.txt:31
159 msgid "Joseph Bleu"
160 msgstr "Joseph Bleu"
161
162 #: ../cutscenes/credits.txt:32
163 msgid "Juan PabloTamayo"
164 msgstr "Juan PabloTamayo"
165
166 #: ../cutscenes/credits.txt:33
167 msgid "Kitano"
168 msgstr "Kitano"
169
170 #: ../cutscenes/credits.txt:34
171 msgid "Kyle Belanger"
172 msgstr "Kyle Belanger"
173
174 #: ../cutscenes/credits.txt:35
175 msgid "LongerDev"
176 msgstr "LongerDev"
177
178 #: ../cutscenes/credits.txt:36
179 msgid "Manuel A. Fernandez Montecelo"
180 msgstr "Manuel A. Fernandez Montecelo"
181
182 #: ../cutscenes/credits.txt:37
183 msgid "Matthew Krohn"
184 msgstr "Matthew Krohn"
185
186 #: ../cutscenes/credits.txt:38
187 msgid "Nojan"
188 msgstr "Nojan"
189
190 #: ../cutscenes/credits.txt:39
191 msgid "Pavel Kirpichyov"
192 msgstr "Pavel Kirpichyov"
193
194 #: ../cutscenes/credits.txt:40
195 msgid "runtime-x86"
196 msgstr "runtime-x86"
197
198 #: ../cutscenes/credits.txt:41
199 msgid "Ryan Dansie"
200 msgstr "Ryan Dansie"
20197
20298 #: ../cutscenes/credits.txt:44
20399 msgid "Default Art"
207103 msgid "Translators"
208104 msgstr "Eadar-theangadairean"
209105
210 #: ../cutscenes/credits.txt:51
211 msgid "Ademaro"
212 msgstr "Ademaro"
213
214 #: ../cutscenes/credits.txt:52
215 msgid "Adrian Chaves Fernandez"
216 msgstr "Adrian Chaves Fernandez"
217
218 #: ../cutscenes/credits.txt:53
219 msgid "Andrea Ranaldi"
220 msgstr "Andrea Ranaldi"
221
222 #: ../cutscenes/credits.txt:54
223 msgid "Andreas Berheim Brudin"
224 msgstr "Andreas Berheim Brudin"
225
226 #: ../cutscenes/credits.txt:55
227 msgid "Bas Doodeman"
228 msgstr "Bas Doodeman"
229
230 #: ../cutscenes/credits.txt:57
231 msgid "Carlos Sanchez"
232 msgstr "Carlos Sanchez"
233
234 #: ../cutscenes/credits.txt:59
235 msgid "Christoph J. Thompson"
236 msgstr "Christoph J. Thompson"
237
238 #: ../cutscenes/credits.txt:60
239 msgid "Denis Lysenko"
240 msgstr "Denis Lysenko"
241
242 #: ../cutscenes/credits.txt:61
243 msgid "Diego J. Romero López"
244 msgstr "Diego J. Romero López"
245
246 #: ../cutscenes/credits.txt:62
247 msgid "dumaosen"
248 msgstr "dumaosen"
249
250 #: ../cutscenes/credits.txt:63
251 msgid "Emil"
252 msgstr "Emil"
253
254 #: ../cutscenes/credits.txt:64
255 msgid "Eric R"
256 msgstr "Eric R"
257
258 #: ../cutscenes/credits.txt:65
259 msgid "Evgen Pavlov"
260 msgstr "Evgen Pavlov"
261
262 #: ../cutscenes/credits.txt:66
263 msgid "Fabio Loli"
264 msgstr "Fabio Loli"
265
266 #: ../cutscenes/credits.txt:67
267 msgid "Gianfranco Del Borrello"
268 msgstr "Gianfranco Del Borrello"
269
270 #: ../cutscenes/credits.txt:68
271 msgid "Giovanni Dalla Torre"
272 msgstr "Giovanni Dalla Torre"
273
274 #: ../cutscenes/credits.txt:69
275 msgid "GunChleoc"
276 msgstr "GunChleoc"
277
278 #: ../cutscenes/credits.txt:70
279 msgid "Hans Joachim Desserud"
280 msgstr "Hans Joachim Desserud"
281
282 #: ../cutscenes/credits.txt:71
283 msgid "hark34"
284 msgstr "hark34"
285
286 #: ../cutscenes/credits.txt:73
287 msgid "Janet Hunt"
288 msgstr "Janet Hunt"
289
290 #: ../cutscenes/credits.txt:74
291 msgid "Juan Pablo Tamayo"
292 msgstr "Juan Pablo Tamayo"
293
294 #: ../cutscenes/credits.txt:75
295 msgid "losine"
296 msgstr "losine"
297
298 #: ../cutscenes/credits.txt:76
299 msgid "Marc Tormo i Bochaca"
300 msgstr "Marc Tormo i Bochaca"
301
302 #: ../cutscenes/credits.txt:77
303 msgid "Michael Papageorgiou"
304 msgstr "Michael Papageorgiou"
305
306 #: ../cutscenes/credits.txt:78
307 msgid "Mikhail Karalevich"
308 msgstr "Mikhail Karalevich"
309
310 #: ../cutscenes/credits.txt:79
311 msgid "Miro Jánošík"
312 msgstr "Miro Jánošík"
313
314 #: ../cutscenes/credits.txt:80
315 msgid "Mykola Franchuk"
316 msgstr "Mykola Franchuk"
317
318 #: ../cutscenes/credits.txt:81
319 msgid "MOB2"
320 msgstr "MOB2"
321
322 #: ../cutscenes/credits.txt:82
323 msgid "Morgan Strauss"
324 msgstr "Morgan Strauss"
325
326 #: ../cutscenes/credits.txt:83
327 msgid "Nea Retrogamer"
328 msgstr "Nea Retrogamer"
329
330 #: ../cutscenes/credits.txt:84
331 msgid "Nguyễn Gia Phong"
332 msgstr "Nguyễn Gia Phong"
333
334 #: ../cutscenes/credits.txt:85
335 msgid "Nikita Vanku"
336 msgstr "Nikita Vanku"
337
338 #: ../cutscenes/credits.txt:86
339 msgid "Paul Wortmann"
340 msgstr "Paul Wortmann"
341
342 #: ../cutscenes/credits.txt:87
343 msgid "Pawel Puszczynski"
344 msgstr "Pawel Puszczynski"
345
346 #: ../cutscenes/credits.txt:88
347 msgid "Quentin Stievenart"
348 msgstr "Quentin Stievenart"
349
350 #: ../cutscenes/credits.txt:89
351 msgid "Rui"
352 msgstr "Rui"
353
354 #: ../cutscenes/credits.txt:90
355 msgid "Sergey Basalaev"
356 msgstr "Sergey Basalaev"
357
358 #: ../cutscenes/credits.txt:91
359 msgid "Sergiy Borodych"
360 msgstr "Sergiy Borodych"
361
362 #: ../cutscenes/credits.txt:93
363 msgid "Stefano Peris"
364 msgstr "Stefano Peris"
365
366 #: ../cutscenes/credits.txt:94
367 msgid "sujiniku"
368 msgstr "sujiniku"
369
370 #: ../cutscenes/credits.txt:95
371 msgid "Thomas Glamsch"
372 msgstr "Thomas Glamsch"
373
374 #: ../cutscenes/credits.txt:96
375 msgid "Timo Sievänen"
376 msgstr "Timo Sievänen"
377
378 #: ../cutscenes/credits.txt:97
379 msgid "Vicente Monteiro"
380 msgstr "Vicente Monteiro"
381
382 #: ../cutscenes/credits.txt:98
383 msgid "Wuzzy2"
384 msgstr "Wuzzy2"
385
386 #: ../cutscenes/credits.txt:99
387 msgid "Yannis Anthymidis"
388 msgstr "Yannis Anthymidis"
389
390 #: ../cutscenes/credits.txt:100
391 msgid "Zmicer Turok"
392 msgstr "Zmicer Turok"
393
394 #: ../cutscenes/credits.txt:103
106 #: ../cutscenes/credits.txt:108
395107 msgid "Distributors"
396108 msgstr "Luchd-sgaoilidh"
397109
398 #: ../cutscenes/credits.txt:105
399 msgid "Ablu"
400 msgstr "Ablu"
401
402 #: ../cutscenes/credits.txt:106
403 msgid "Feillyne"
404 msgstr "Feillyne"
405
406 #: ../cutscenes/credits.txt:107
407 msgid "Jan-Hendrik Peters"
408 msgstr "Jan-Hendrik Peters"
409
410 #: ../cutscenes/credits.txt:109
411 msgid "miffe"
412 msgstr "miffe"
413
414 #: ../cutscenes/credits.txt:112
110 #: ../cutscenes/credits.txt:117
415111 msgid "Special Thanks"
416112 msgstr "Taing shònraichte"
417113
418 #: ../cutscenes/credits.txt:116
114 #: ../cutscenes/credits.txt:121
419115 msgid "For giving constant feedback and testing:"
420116 msgstr "Airson torr bheachdan is deuchainneachaidh:"
421117
422 #: ../cutscenes/credits.txt:117
423 msgid "Bart Kelsey"
424 msgstr "Bart Kelsey"
425
426 #: ../cutscenes/credits.txt:118
118 #: ../cutscenes/credits.txt:123
427119 msgid "The community at OpenGameArt"
428120 msgstr "Coimhearsnachd OpenGameArt"
429121
430 #: ../cutscenes/credits.txt:122
122 #: ../cutscenes/credits.txt:127
431123 msgid "For Tiled and the Flare map exporter:"
432124 msgstr "Airson Tiled agus inneal às-phortaidh mhapaichean Flare:"
433
434 #: ../cutscenes/credits.txt:123
435 msgid "Thorbjørn Lindeijer"
436 msgstr "Thorbjørn Lindeijer"
437
438 #: ../cutscenes/credits.txt:125
439 msgid "Ranie Jade Ramiso"
440 msgstr "Ranie Jade Ramiso"
88 msgstr ""
99 "Project-Id-Version: PACKAGE VERSION\n"
1010 "Report-Msgid-Bugs-To: \n"
11 "POT-Creation-Date: 2018-11-13 17:21+\n"
11 "POT-Creation-Date: 2019-07-29 09:34+\n"
1212 "PO-Revision-Date: 2018-03-28 19:16+0000\n"
1313 "Last-Translator: Justin Jacobs <jajdorkster@gmail.com>, 2018\n"
1414 "Language-Team: Galician (https://www.transifex.com/flareorg/teams/84925/gl/)\n"
9090 msgid "Lead Programmers"
9191 msgstr ""
9292
93 #: ../cutscenes/credits.txt:12
94 msgid "Clint Bellanger"
95 msgstr ""
96
97 #: ../cutscenes/credits.txt:13
98 msgid "Henrik Andersson"
99 msgstr ""
100
101 #: ../cutscenes/credits.txt:14
102 msgid "Igor Paliychuk"
103 msgstr ""
104
105 #: ../cutscenes/credits.txt:15
106 msgid "Justin Jacobs"
107 msgstr ""
108
109 #: ../cutscenes/credits.txt:16
110 msgid "Stefan Beller"
111 msgstr ""
112
113 #: ../cutscenes/credits.txt:17
114 msgid "Thane Brimhall"
115 msgstr ""
116
11793 #: ../cutscenes/credits.txt:20
11894 msgid "Programmers"
119 msgstr ""
120
121 #: ../cutscenes/credits.txt:22
122 msgid "Andrew Engelbrecht"
123 msgstr ""
124
125 #: ../cutscenes/credits.txt:23
126 msgid "Anton Golov"
127 msgstr ""
128
129 #: ../cutscenes/credits.txt:24
130 msgid "Artur Rojek"
131 msgstr ""
132
133 #: ../cutscenes/credits.txt:25
134 msgid "blazindragon"
135 msgstr ""
136
137 #: ../cutscenes/credits.txt:26
138 msgid "Bonbadil"
139 msgstr ""
140
141 #: ../cutscenes/credits.txt:27
142 msgid "Chris Oelmueller"
143 msgstr ""
144
145 #: ../cutscenes/credits.txt:28
146 msgid "David Bariod"
147 msgstr ""
148
149 #: ../cutscenes/credits.txt:29
150 msgid "Daniel Santos"
151 msgstr ""
152
153 #: ../cutscenes/credits.txt:30
154 msgid "Gallaecio"
155 msgstr ""
156
157 #: ../cutscenes/credits.txt:31
158 msgid "Joseph Bleu"
159 msgstr ""
160
161 #: ../cutscenes/credits.txt:32
162 msgid "Juan PabloTamayo"
163 msgstr ""
164
165 #: ../cutscenes/credits.txt:33
166 msgid "Kitano"
167 msgstr ""
168
169 #: ../cutscenes/credits.txt:34
170 msgid "Kyle Belanger"
171 msgstr ""
172
173 #: ../cutscenes/credits.txt:35
174 msgid "LongerDev"
175 msgstr ""
176
177 #: ../cutscenes/credits.txt:36
178 msgid "Manuel A. Fernandez Montecelo"
179 msgstr ""
180
181 #: ../cutscenes/credits.txt:37
182 msgid "Matthew Krohn"
183 msgstr ""
184
185 #: ../cutscenes/credits.txt:38
186 msgid "Nojan"
187 msgstr ""
188
189 #: ../cutscenes/credits.txt:39
190 msgid "Pavel Kirpichyov"
191 msgstr ""
192
193 #: ../cutscenes/credits.txt:40
194 msgid "runtime-x86"
195 msgstr ""
196
197 #: ../cutscenes/credits.txt:41
198 msgid "Ryan Dansie"
19995 msgstr ""
20096
20197 #: ../cutscenes/credits.txt:44
206102 msgid "Translators"
207103 msgstr ""
208104
209 #: ../cutscenes/credits.txt:51
210 msgid "Ademaro"
211 msgstr ""
212
213 #: ../cutscenes/credits.txt:52
214 msgid "Adrian Chaves Fernandez"
215 msgstr ""
216
217 #: ../cutscenes/credits.txt:53
218 msgid "Andrea Ranaldi"
219 msgstr ""
220
221 #: ../cutscenes/credits.txt:54
222 msgid "Andreas Berheim Brudin"
223 msgstr ""
224
225 #: ../cutscenes/credits.txt:55
226 msgid "Bas Doodeman"
227 msgstr ""
228
229 #: ../cutscenes/credits.txt:57
230 msgid "Carlos Sanchez"
231 msgstr ""
232
233 #: ../cutscenes/credits.txt:59
234 msgid "Christoph J. Thompson"
235 msgstr ""
236
237 #: ../cutscenes/credits.txt:60
238 msgid "Denis Lysenko"
239 msgstr ""
240
241 #: ../cutscenes/credits.txt:61
242 msgid "Diego J. Romero López"
243 msgstr ""
244
245 #: ../cutscenes/credits.txt:62
246 msgid "dumaosen"
247 msgstr ""
248
249 #: ../cutscenes/credits.txt:63
250 msgid "Emil"
251 msgstr ""
252
253 #: ../cutscenes/credits.txt:64
254 msgid "Eric R"
255 msgstr ""
256
257 #: ../cutscenes/credits.txt:65
258 msgid "Evgen Pavlov"
259 msgstr ""
260
261 #: ../cutscenes/credits.txt:66
262 msgid "Fabio Loli"
263 msgstr ""
264
265 #: ../cutscenes/credits.txt:67
266 msgid "Gianfranco Del Borrello"
267 msgstr ""
268
269 #: ../cutscenes/credits.txt:68
270 msgid "Giovanni Dalla Torre"
271 msgstr ""
272
273 #: ../cutscenes/credits.txt:69
274 msgid "GunChleoc"
275 msgstr ""
276
277 #: ../cutscenes/credits.txt:70
278 msgid "Hans Joachim Desserud"
279 msgstr ""
280
281 #: ../cutscenes/credits.txt:71
282 msgid "hark34"
283 msgstr ""
284
285 #: ../cutscenes/credits.txt:73
286 msgid "Janet Hunt"
287 msgstr ""
288
289 #: ../cutscenes/credits.txt:74
290 msgid "Juan Pablo Tamayo"
291 msgstr ""
292
293 #: ../cutscenes/credits.txt:75
294 msgid "losine"
295 msgstr ""
296
297 #: ../cutscenes/credits.txt:76
298 msgid "Marc Tormo i Bochaca"
299 msgstr ""
300
301 #: ../cutscenes/credits.txt:77
302 msgid "Michael Papageorgiou"
303 msgstr ""
304
305 #: ../cutscenes/credits.txt:78
306 msgid "Mikhail Karalevich"
307 msgstr ""
308
309 #: ../cutscenes/credits.txt:79
310 msgid "Miro Jánošík"
311 msgstr ""
312
313 #: ../cutscenes/credits.txt:80
314 msgid "Mykola Franchuk"
315 msgstr ""
316
317 #: ../cutscenes/credits.txt:81
318 msgid "MOB2"
319 msgstr ""
320
321 #: ../cutscenes/credits.txt:82
322 msgid "Morgan Strauss"
323 msgstr ""
324
325 #: ../cutscenes/credits.txt:83
326 msgid "Nea Retrogamer"
327 msgstr ""
328
329 #: ../cutscenes/credits.txt:84
330 msgid "Nguyễn Gia Phong"
331 msgstr ""
332
333 #: ../cutscenes/credits.txt:85
334 msgid "Nikita Vanku"
335 msgstr ""
336
337 #: ../cutscenes/credits.txt:86
338 msgid "Paul Wortmann"
339 msgstr ""
340
341 #: ../cutscenes/credits.txt:87
342 msgid "Pawel Puszczynski"
343 msgstr ""
344
345 #: ../cutscenes/credits.txt:88
346 msgid "Quentin Stievenart"
347 msgstr ""
348
349 #: ../cutscenes/credits.txt:89
350 msgid "Rui"
351 msgstr ""
352
353 #: ../cutscenes/credits.txt:90
354 msgid "Sergey Basalaev"
355 msgstr ""
356
357 #: ../cutscenes/credits.txt:91
358 msgid "Sergiy Borodych"
359 msgstr ""
360
361 #: ../cutscenes/credits.txt:93
362 msgid "Stefano Peris"
363 msgstr ""
364
365 #: ../cutscenes/credits.txt:94
366 msgid "sujiniku"
367 msgstr ""
368
369 #: ../cutscenes/credits.txt:95
370 msgid "Thomas Glamsch"
371 msgstr ""
372
373 #: ../cutscenes/credits.txt:96
374 msgid "Timo Sievänen"
375 msgstr ""
376
377 #: ../cutscenes/credits.txt:97
378 msgid "Vicente Monteiro"
379 msgstr ""
380
381 #: ../cutscenes/credits.txt:98
382 msgid "Wuzzy2"
383 msgstr ""
384
385 #: ../cutscenes/credits.txt:99
386 msgid "Yannis Anthymidis"
387 msgstr ""
388
389 #: ../cutscenes/credits.txt:100
390 msgid "Zmicer Turok"
391 msgstr ""
392
393 #: ../cutscenes/credits.txt:103
105 #: ../cutscenes/credits.txt:108
394106 msgid "Distributors"
395107 msgstr ""
396108
397 #: ../cutscenes/credits.txt:105
398 msgid "Ablu"
399 msgstr ""
400
401 #: ../cutscenes/credits.txt:106
402 msgid "Feillyne"
403 msgstr ""
404
405 #: ../cutscenes/credits.txt:107
406 msgid "Jan-Hendrik Peters"
407 msgstr ""
408
409 #: ../cutscenes/credits.txt:109
410 msgid "miffe"
411 msgstr ""
412
413 #: ../cutscenes/credits.txt:112
109 #: ../cutscenes/credits.txt:117
414110 msgid "Special Thanks"
415111 msgstr ""
416112
417 #: ../cutscenes/credits.txt:116
113 #: ../cutscenes/credits.txt:121
418114 msgid "For giving constant feedback and testing:"
419115 msgstr ""
420116
421 #: ../cutscenes/credits.txt:117
422 msgid "Bart Kelsey"
423 msgstr ""
424
425 #: ../cutscenes/credits.txt:118
117 #: ../cutscenes/credits.txt:123
426118 msgid "The community at OpenGameArt"
427119 msgstr ""
428120
429 #: ../cutscenes/credits.txt:122
121 #: ../cutscenes/credits.txt:127
430122 msgid "For Tiled and the Flare map exporter:"
431123 msgstr ""
432
433 #: ../cutscenes/credits.txt:123
434 msgid "Thorbjørn Lindeijer"
435 msgstr ""
436
437 #: ../cutscenes/credits.txt:125
438 msgid "Ranie Jade Ramiso"
439 msgstr ""
55 msgstr ""
66 "Project-Id-Version: PACKAGE VERSION\n"
77 "Report-Msgid-Bugs-To: \n"
8 "POT-Creation-Date: 2018-11-13 17:21+\n"
8 "POT-Creation-Date: 2019-07-29 09:34+\n"
99 "PO-Revision-Date: 2018-03-28 19:16+0000\n"
1010 "Language-Team: Hebrew (https://www.transifex.com/flareorg/teams/84925/he/)\n"
1111 "MIME-Version: 1.0\n"
8686 msgid "Lead Programmers"
8787 msgstr ""
8888
89 #: ../cutscenes/credits.txt:12
90 msgid "Clint Bellanger"
91 msgstr ""
92
93 #: ../cutscenes/credits.txt:13
94 msgid "Henrik Andersson"
95 msgstr ""
96
97 #: ../cutscenes/credits.txt:14
98 msgid "Igor Paliychuk"
99 msgstr ""
100
101 #: ../cutscenes/credits.txt:15
102 msgid "Justin Jacobs"
103 msgstr ""
104
105 #: ../cutscenes/credits.txt:16
106 msgid "Stefan Beller"
107 msgstr ""
108
109 #: ../cutscenes/credits.txt:17
110 msgid "Thane Brimhall"
111 msgstr ""
112
11389 #: ../cutscenes/credits.txt:20
11490 msgid "Programmers"
115 msgstr ""
116
117 #: ../cutscenes/credits.txt:22
118 msgid "Andrew Engelbrecht"
119 msgstr ""
120
121 #: ../cutscenes/credits.txt:23
122 msgid "Anton Golov"
123 msgstr ""
124
125 #: ../cutscenes/credits.txt:24
126 msgid "Artur Rojek"
127 msgstr ""
128
129 #: ../cutscenes/credits.txt:25
130 msgid "blazindragon"
131 msgstr ""
132
133 #: ../cutscenes/credits.txt:26
134 msgid "Bonbadil"
135 msgstr ""
136
137 #: ../cutscenes/credits.txt:27
138 msgid "Chris Oelmueller"
139 msgstr ""
140
141 #: ../cutscenes/credits.txt:28
142 msgid "David Bariod"
143 msgstr ""
144
145 #: ../cutscenes/credits.txt:29
146 msgid "Daniel Santos"
147 msgstr ""
148
149 #: ../cutscenes/credits.txt:30
150 msgid "Gallaecio"
151 msgstr ""
152
153 #: ../cutscenes/credits.txt:31
154 msgid "Joseph Bleu"
155 msgstr ""
156
157 #: ../cutscenes/credits.txt:32
158 msgid "Juan PabloTamayo"
159 msgstr ""
160
161 #: ../cutscenes/credits.txt:33
162 msgid "Kitano"
163 msgstr ""
164
165 #: ../cutscenes/credits.txt:34
166 msgid "Kyle Belanger"
167 msgstr ""
168
169 #: ../cutscenes/credits.txt:35
170 msgid "LongerDev"
171 msgstr ""
172
173 #: ../cutscenes/credits.txt:36
174 msgid "Manuel A. Fernandez Montecelo"
175 msgstr ""
176
177 #: ../cutscenes/credits.txt:37
178 msgid "Matthew Krohn"
179 msgstr ""
180
181 #: ../cutscenes/credits.txt:38
182 msgid "Nojan"
183 msgstr ""
184
185 #: ../cutscenes/credits.txt:39
186 msgid "Pavel Kirpichyov"
187 msgstr ""
188
189 #: ../cutscenes/credits.txt:40
190 msgid "runtime-x86"
191 msgstr ""
192
193 #: ../cutscenes/credits.txt:41
194 msgid "Ryan Dansie"
19591 msgstr ""
19692
19793 #: ../cutscenes/credits.txt:44
20298 msgid "Translators"
20399 msgstr ""
204100
205 #: ../cutscenes/credits.txt:51
206 msgid "Ademaro"
207 msgstr ""
208
209 #: ../cutscenes/credits.txt:52
210 msgid "Adrian Chaves Fernandez"
211 msgstr ""
212
213 #: ../cutscenes/credits.txt:53
214 msgid "Andrea Ranaldi"
215 msgstr ""
216
217 #: ../cutscenes/credits.txt:54
218 msgid "Andreas Berheim Brudin"
219 msgstr ""
220
221 #: ../cutscenes/credits.txt:55
222 msgid "Bas Doodeman"
223 msgstr ""
224
225 #: ../cutscenes/credits.txt:57
226 msgid "Carlos Sanchez"
227 msgstr ""
228
229 #: ../cutscenes/credits.txt:59
230 msgid "Christoph J. Thompson"
231 msgstr ""
232
233 #: ../cutscenes/credits.txt:60
234 msgid "Denis Lysenko"
235 msgstr ""
236
237 #: ../cutscenes/credits.txt:61
238 msgid "Diego J. Romero López"
239 msgstr ""
240
241 #: ../cutscenes/credits.txt:62
242 msgid "dumaosen"
243 msgstr ""
244
245 #: ../cutscenes/credits.txt:63
246 msgid "Emil"
247 msgstr ""
248
249 #: ../cutscenes/credits.txt:64
250 msgid "Eric R"
251 msgstr ""
252
253 #: ../cutscenes/credits.txt:65
254 msgid "Evgen Pavlov"
255 msgstr ""
256
257 #: ../cutscenes/credits.txt:66
258 msgid "Fabio Loli"
259 msgstr ""
260
261 #: ../cutscenes/credits.txt:67
262 msgid "Gianfranco Del Borrello"
263 msgstr ""
264
265 #: ../cutscenes/credits.txt:68
266 msgid "Giovanni Dalla Torre"
267 msgstr ""
268
269 #: ../cutscenes/credits.txt:69
270 msgid "GunChleoc"
271 msgstr ""
272
273 #: ../cutscenes/credits.txt:70
274 msgid "Hans Joachim Desserud"
275 msgstr ""
276
277 #: ../cutscenes/credits.txt:71
278 msgid "hark34"
279 msgstr ""
280
281 #: ../cutscenes/credits.txt:73
282 msgid "Janet Hunt"
283 msgstr ""
284
285 #: ../cutscenes/credits.txt:74
286 msgid "Juan Pablo Tamayo"
287 msgstr ""
288
289 #: ../cutscenes/credits.txt:75
290 msgid "losine"
291 msgstr ""
292
293 #: ../cutscenes/credits.txt:76
294 msgid "Marc Tormo i Bochaca"
295 msgstr ""
296
297 #: ../cutscenes/credits.txt:77
298 msgid "Michael Papageorgiou"
299 msgstr ""
300
301 #: ../cutscenes/credits.txt:78
302 msgid "Mikhail Karalevich"
303 msgstr ""
304
305 #: ../cutscenes/credits.txt:79
306 msgid "Miro Jánošík"
307 msgstr ""
308
309 #: ../cutscenes/credits.txt:80
310 msgid "Mykola Franchuk"
311 msgstr ""
312
313 #: ../cutscenes/credits.txt:81
314 msgid "MOB2"
315 msgstr ""
316
317 #: ../cutscenes/credits.txt:82
318 msgid "Morgan Strauss"
319 msgstr ""
320
321 #: ../cutscenes/credits.txt:83
322 msgid "Nea Retrogamer"
323 msgstr ""
324
325 #: ../cutscenes/credits.txt:84
326 msgid "Nguyễn Gia Phong"
327 msgstr ""
328
329 #: ../cutscenes/credits.txt:85
330 msgid "Nikita Vanku"
331 msgstr ""
332
333 #: ../cutscenes/credits.txt:86
334 msgid "Paul Wortmann"
335 msgstr ""
336
337 #: ../cutscenes/credits.txt:87
338 msgid "Pawel Puszczynski"
339 msgstr ""
340
341 #: ../cutscenes/credits.txt:88
342 msgid "Quentin Stievenart"
343 msgstr ""
344
345 #: ../cutscenes/credits.txt:89
346 msgid "Rui"
347 msgstr ""
348
349 #: ../cutscenes/credits.txt:90
350 msgid "Sergey Basalaev"
351 msgstr ""
352
353 #: ../cutscenes/credits.txt:91
354 msgid "Sergiy Borodych"
355 msgstr ""
356
357 #: ../cutscenes/credits.txt:93
358 msgid "Stefano Peris"
359 msgstr ""
360
361 #: ../cutscenes/credits.txt:94
362 msgid "sujiniku"
363 msgstr ""
364
365 #: ../cutscenes/credits.txt:95
366 msgid "Thomas Glamsch"
367 msgstr ""
368
369 #: ../cutscenes/credits.txt:96
370 msgid "Timo Sievänen"
371 msgstr ""
372
373 #: ../cutscenes/credits.txt:97
374 msgid "Vicente Monteiro"
375 msgstr ""
376
377 #: ../cutscenes/credits.txt:98
378 msgid "Wuzzy2"
379 msgstr ""
380
381 #: ../cutscenes/credits.txt:99
382 msgid "Yannis Anthymidis"
383 msgstr ""
384
385 #: ../cutscenes/credits.txt:100
386 msgid "Zmicer Turok"
387 msgstr ""
388
389 #: ../cutscenes/credits.txt:103
101 #: ../cutscenes/credits.txt:108
390102 msgid "Distributors"
391103 msgstr ""
392104
393 #: ../cutscenes/credits.txt:105
394 msgid "Ablu"
395 msgstr ""
396
397 #: ../cutscenes/credits.txt:106
398 msgid "Feillyne"
399 msgstr ""
400
401 #: ../cutscenes/credits.txt:107
402 msgid "Jan-Hendrik Peters"
403 msgstr ""
404
405 #: ../cutscenes/credits.txt:109
406 msgid "miffe"
407 msgstr ""
408
409 #: ../cutscenes/credits.txt:112
105 #: ../cutscenes/credits.txt:117
410106 msgid "Special Thanks"
411107 msgstr ""
412108
413 #: ../cutscenes/credits.txt:116
109 #: ../cutscenes/credits.txt:121
414110 msgid "For giving constant feedback and testing:"
415111 msgstr ""
416112
417 #: ../cutscenes/credits.txt:117
418 msgid "Bart Kelsey"
419 msgstr ""
420
421 #: ../cutscenes/credits.txt:118
113 #: ../cutscenes/credits.txt:123
422114 msgid "The community at OpenGameArt"
423115 msgstr ""
424116
425 #: ../cutscenes/credits.txt:122
117 #: ../cutscenes/credits.txt:127
426118 msgid "For Tiled and the Flare map exporter:"
427119 msgstr ""
428
429 #: ../cutscenes/credits.txt:123
430 msgid "Thorbjørn Lindeijer"
431 msgstr ""
432
433 #: ../cutscenes/credits.txt:125
434 msgid "Ranie Jade Ramiso"
435 msgstr ""
0 # Copyright (C) 2011 Clint Bellanger
1 # This file is distributed under the same license as the FLARE package.
2 #
3 # FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
4 # Translators:
5 # Justin Jacobs <jajdorkster@gmail.com>, 2019
6 #
7 msgid ""
8 msgstr ""
9 "Project-Id-Version: PACKAGE VERSION\n"
10 "Report-Msgid-Bugs-To: \n"
11 "POT-Creation-Date: 2019-07-29 09:34+\n"
12 "PO-Revision-Date: 2018-03-28 19:16+0000\n"
13 "Last-Translator: Justin Jacobs <jajdorkster@gmail.com>, 2019\n"
14 "Language-Team: Hungarian (https://www.transifex.com/flareorg/teams/84925/hu/)\n"
15 "MIME-Version: 1.0\n"
16 "Content-Type: text/plain; charset=UTF-8\n"
17 "Content-Transfer-Encoding: 8bit\n"
18 "Language: hu\n"
19 "Plural-Forms: nplurals=2; plural=(n != 1);\n"
20
21 #: ../engine/primary_stats.txt:3
22 msgid "Physical"
23 msgstr "Fizikai"
24
25 #: ../engine/primary_stats.txt:7
26 msgid "Mental"
27 msgstr "Mentális"
28
29 #: ../engine/primary_stats.txt:11
30 msgid "Offense"
31 msgstr "Támadó"
32
33 #: ../engine/primary_stats.txt:15
34 msgid "Defense"
35 msgstr "Védő"
36
37 #: ../engine/damage_types.txt:3
38 msgid "Melee Damage"
39 msgstr "Közeharc Sebzés"
40
41 #: ../engine/damage_types.txt:4
42 msgid "Increases the damage done with swords and other melee weapons."
43 msgstr ""
44
45 #: ../engine/damage_types.txt:5
46 msgid "Melee Damage Min"
47 msgstr "Közelharc Sebzés Min"
48
49 #: ../engine/damage_types.txt:6
50 msgid "Melee Damage Max"
51 msgstr "Közelharc Sebzés Max"
52
53 #: ../engine/damage_types.txt:12
54 msgid "Ranged Damage"
55 msgstr "Lővegyver Sebzés"
56
57 #: ../engine/damage_types.txt:13
58 msgid "Increases the damage done with bows and other ranged weapons."
59 msgstr ""
60
61 #: ../engine/damage_types.txt:14
62 msgid "Ranged Damage Min"
63 msgstr "Lőfegyver Sebzés Min"
64
65 #: ../engine/damage_types.txt:15
66 msgid "Ranged Damage Max"
67 msgstr "Lőfegyver Sebzés Max"
68
69 #: ../engine/damage_types.txt:21
70 msgid "Mental Damage"
71 msgstr "Mentális Sebzés"
72
73 #: ../engine/damage_types.txt:22
74 msgid "Increases the damage done with staves and other mental weapons."
75 msgstr ""
76
77 #: ../engine/damage_types.txt:23
78 msgid "Mental Damage Min"
79 msgstr "Mentális Sebzés Min"
80
81 #: ../engine/damage_types.txt:24
82 msgid "Mental Damage Max"
83 msgstr "Mentális Sebzés Max"
84
85 #: ../cutscenes/credits.txt:7
86 msgid "Flare Engine Credits"
87 msgstr "Flare Motor Készítők"
88
89 #: ../cutscenes/credits.txt:10
90 msgid "Lead Programmers"
91 msgstr "Vezető fejlesztők"
92
93 #: ../cutscenes/credits.txt:20
94 msgid "Programmers"
95 msgstr "Programozók"
96
97 #: ../cutscenes/credits.txt:44
98 msgid "Default Art"
99 msgstr ""
100
101 #: ../cutscenes/credits.txt:49
102 msgid "Translators"
103 msgstr ""
104
105 #: ../cutscenes/credits.txt:108
106 msgid "Distributors"
107 msgstr "Terjesztők"
108
109 #: ../cutscenes/credits.txt:117
110 msgid "Special Thanks"
111 msgstr "Külön köszönet"
112
113 #: ../cutscenes/credits.txt:121
114 msgid "For giving constant feedback and testing:"
115 msgstr "a folyamatos visszajelzésért és tesztelésért:"
116
117 #: ../cutscenes/credits.txt:123
118 msgid "The community at OpenGameArt"
119 msgstr "Az OpenGameArt közösség"
120
121 #: ../cutscenes/credits.txt:127
122 msgid "For Tiled and the Flare map exporter:"
123 msgstr "A Tiled és Flare térkép exporerért:"
88 msgstr ""
99 "Project-Id-Version: PACKAGE VERSION\n"
1010 "Report-Msgid-Bugs-To: \n"
11 "POT-Creation-Date: 2018-11-13 17:21+\n"
11 "POT-Creation-Date: 2019-07-29 09:34+\n"
1212 "PO-Revision-Date: 2018-03-28 19:16+0000\n"
1313 "Last-Translator: MOB2 <thewattyk@gmail.com>, 2018\n"
1414 "Language-Team: Italian (https://www.transifex.com/flareorg/teams/84925/it/)\n"
9090 msgid "Lead Programmers"
9191 msgstr "Capi Programmatori"
9292
93 #: ../cutscenes/credits.txt:12
94 msgid "Clint Bellanger"
95 msgstr "Clint Bellanger"
96
97 #: ../cutscenes/credits.txt:13
98 msgid "Henrik Andersson"
99 msgstr "Henrik Andersson"
100
101 #: ../cutscenes/credits.txt:14
102 msgid "Igor Paliychuk"
103 msgstr "Igor Paliychuk"
104
105 #: ../cutscenes/credits.txt:15
106 msgid "Justin Jacobs"
107 msgstr "Justin Jacobs"
108
109 #: ../cutscenes/credits.txt:16
110 msgid "Stefan Beller"
111 msgstr "Stefan Beller"
112
113 #: ../cutscenes/credits.txt:17
114 msgid "Thane Brimhall"
115 msgstr "Thane Brimhall"
116
11793 #: ../cutscenes/credits.txt:20
11894 msgid "Programmers"
11995 msgstr "Programmatori"
120
121 #: ../cutscenes/credits.txt:22
122 msgid "Andrew Engelbrecht"
123 msgstr "Andrew Engelbrecht"
124
125 #: ../cutscenes/credits.txt:23
126 msgid "Anton Golov"
127 msgstr "Anton Golov"
128
129 #: ../cutscenes/credits.txt:24
130 msgid "Artur Rojek"
131 msgstr "Artur Rojek"
132
133 #: ../cutscenes/credits.txt:25
134 msgid "blazindragon"
135 msgstr "blazindragon"
136
137 #: ../cutscenes/credits.txt:26
138 msgid "Bonbadil"
139 msgstr "Bonbadil"
140
141 #: ../cutscenes/credits.txt:27
142 msgid "Chris Oelmueller"
143 msgstr "Chris Oelmueller"
144
145 #: ../cutscenes/credits.txt:28
146 msgid "David Bariod"
147 msgstr "David Bariod"
148
149 #: ../cutscenes/credits.txt:29
150 msgid "Daniel Santos"
151 msgstr "Daniel Santos"
152
153 #: ../cutscenes/credits.txt:30
154 msgid "Gallaecio"
155 msgstr "Gallaecio"
156
157 #: ../cutscenes/credits.txt:31
158 msgid "Joseph Bleu"
159 msgstr "Joseph Bleu"
160
161 #: ../cutscenes/credits.txt:32
162 msgid "Juan PabloTamayo"
163 msgstr "Juan PabloTamayo"
164
165 #: ../cutscenes/credits.txt:33
166 msgid "Kitano"
167 msgstr "Kitano"
168
169 #: ../cutscenes/credits.txt:34
170 msgid "Kyle Belanger"
171 msgstr "Kyle Belanger"
172
173 #: ../cutscenes/credits.txt:35
174 msgid "LongerDev"
175 msgstr "LongerDev"
176
177 #: ../cutscenes/credits.txt:36
178 msgid "Manuel A. Fernandez Montecelo"
179 msgstr "Manuel A. Fernandez Montecelo"
180
181 #: ../cutscenes/credits.txt:37
182 msgid "Matthew Krohn"
183 msgstr "Matthew Krohn"
184
185 #: ../cutscenes/credits.txt:38
186 msgid "Nojan"
187 msgstr "Nojan"
188
189 #: ../cutscenes/credits.txt:39
190 msgid "Pavel Kirpichyov"
191 msgstr "Pavel Kirpichyov"
192
193 #: ../cutscenes/credits.txt:40
194 msgid "runtime-x86"
195 msgstr "runtime-x86"
196
197 #: ../cutscenes/credits.txt:41
198 msgid "Ryan Dansie"
199 msgstr "Ryan Dansie"
20096
20197 #: ../cutscenes/credits.txt:44
20298 msgid "Default Art"
206102 msgid "Translators"
207103 msgstr "Traduttori"
208104
209 #: ../cutscenes/credits.txt:51
210 msgid "Ademaro"
211 msgstr "Ademaro"
212
213 #: ../cutscenes/credits.txt:52
214 msgid "Adrian Chaves Fernandez"
215 msgstr "Adrian Chaves Fernandez"
216
217 #: ../cutscenes/credits.txt:53
218 msgid "Andrea Ranaldi"
219 msgstr "Andrea Ranaldi"
220
221 #: ../cutscenes/credits.txt:54
222 msgid "Andreas Berheim Brudin"
223 msgstr "Andreas Berheim Brudin"
224
225 #: ../cutscenes/credits.txt:55
226 msgid "Bas Doodeman"
227 msgstr "Bas Doodeman"
228
229 #: ../cutscenes/credits.txt:57
230 msgid "Carlos Sanchez"
231 msgstr "Carlos Sanchez"
232
233 #: ../cutscenes/credits.txt:59
234 msgid "Christoph J. Thompson"
235 msgstr "Christoph J. Thompson"
236
237 #: ../cutscenes/credits.txt:60
238 msgid "Denis Lysenko"
239 msgstr "Denis Lysenko"
240
241 #: ../cutscenes/credits.txt:61
242 msgid "Diego J. Romero López"
243 msgstr "Diego J. Romero López"
244
245 #: ../cutscenes/credits.txt:62
246 msgid "dumaosen"
247 msgstr "dumaosen"
248
249 #: ../cutscenes/credits.txt:63
250 msgid "Emil"
251 msgstr ""
252
253 #: ../cutscenes/credits.txt:64
254 msgid "Eric R"
255 msgstr "Eric R"
256
257 #: ../cutscenes/credits.txt:65
258 msgid "Evgen Pavlov"
259 msgstr "Evgen Pavlov"
260
261 #: ../cutscenes/credits.txt:66
262 msgid "Fabio Loli"
263 msgstr ""
264
265 #: ../cutscenes/credits.txt:67
266 msgid "Gianfranco Del Borrello"
267 msgstr "Gianfranco Del Borrello"
268
269 #: ../cutscenes/credits.txt:68
270 msgid "Giovanni Dalla Torre"
271 msgstr "Giovanni Dalla Torre"
272
273 #: ../cutscenes/credits.txt:69
274 msgid "GunChleoc"
275 msgstr "GunChleoc"
276
277 #: ../cutscenes/credits.txt:70
278 msgid "Hans Joachim Desserud"
279 msgstr "Hans Joachim Desserud"
280
281 #: ../cutscenes/credits.txt:71
282 msgid "hark34"
283 msgstr "hark34"
284
285 #: ../cutscenes/credits.txt:73
286 msgid "Janet Hunt"
287 msgstr "Janet Hunt"
288
289 #: ../cutscenes/credits.txt:74
290 msgid "Juan Pablo Tamayo"
291 msgstr "Juan Pablo Tamayo"
292
293 #: ../cutscenes/credits.txt:75
294 msgid "losine"
295 msgstr "losine"
296
297 #: ../cutscenes/credits.txt:76
298 msgid "Marc Tormo i Bochaca"
299 msgstr ""
300
301 #: ../cutscenes/credits.txt:77
302 msgid "Michael Papageorgiou"
303 msgstr "Michael Papageorgiou"
304
305 #: ../cutscenes/credits.txt:78
306 msgid "Mikhail Karalevich"
307 msgstr "Mikhail Karalevich"
308
309 #: ../cutscenes/credits.txt:79
310 msgid "Miro Jánošík"
311 msgstr "Miro Jánošík"
312
313 #: ../cutscenes/credits.txt:80
314 msgid "Mykola Franchuk"
315 msgstr ""
316
317 #: ../cutscenes/credits.txt:81
318 msgid "MOB2"
319 msgstr "MOB2"
320
321 #: ../cutscenes/credits.txt:82
322 msgid "Morgan Strauss"
323 msgstr "Morgan Strauss"
324
325 #: ../cutscenes/credits.txt:83
326 msgid "Nea Retrogamer"
327 msgstr "Nea Retrogamer"
328
329 #: ../cutscenes/credits.txt:84
330 msgid "Nguyễn Gia Phong"
331 msgstr "Nguyễn Gia Phong"
332
333 #: ../cutscenes/credits.txt:85
334 msgid "Nikita Vanku"
335 msgstr "Nikita Vanku"
336
337 #: ../cutscenes/credits.txt:86
338 msgid "Paul Wortmann"
339 msgstr "Paul Wortmann"
340
341 #: ../cutscenes/credits.txt:87
342 msgid "Pawel Puszczynski"
343 msgstr "Pawel Puszczynski"
344
345 #: ../cutscenes/credits.txt:88
346 msgid "Quentin Stievenart"
347 msgstr "Quentin Stievenart"
348
349 #: ../cutscenes/credits.txt:89
350 msgid "Rui"
351 msgstr "Rui"
352
353 #: ../cutscenes/credits.txt:90
354 msgid "Sergey Basalaev"
355 msgstr "Sergey Basalaev"
356
357 #: ../cutscenes/credits.txt:91
358 msgid "Sergiy Borodych"
359 msgstr "Sergiy Borodych"
360
361 #: ../cutscenes/credits.txt:93
362 msgid "Stefano Peris"
363 msgstr "Stefano Peris"
364
365 #: ../cutscenes/credits.txt:94
366 msgid "sujiniku"
367 msgstr "sujiniku"
368
369 #: ../cutscenes/credits.txt:95
370 msgid "Thomas Glamsch"
371 msgstr "Thomas Glamsch"
372
373 #: ../cutscenes/credits.txt:96
374 msgid "Timo Sievänen"
375 msgstr "Timo Sievänen"
376
377 #: ../cutscenes/credits.txt:97
378 msgid "Vicente Monteiro"
379 msgstr "Vicente Monteiro"
380
381 #: ../cutscenes/credits.txt:98
382 msgid "Wuzzy2"
383 msgstr "Wuzzy2"
384
385 #: ../cutscenes/credits.txt:99
386 msgid "Yannis Anthymidis"
387 msgstr "Yannis Anthymidis"
388
389 #: ../cutscenes/credits.txt:100
390 msgid "Zmicer Turok"
391 msgstr ""
392
393 #: ../cutscenes/credits.txt:103
105 #: ../cutscenes/credits.txt:108
394106 msgid "Distributors"
395107 msgstr "Distributori"
396108
397 #: ../cutscenes/credits.txt:105
398 msgid "Ablu"
399 msgstr "Ablu"
400
401 #: ../cutscenes/credits.txt:106
402 msgid "Feillyne"
403 msgstr "Feillyne"
404
405 #: ../cutscenes/credits.txt:107
406 msgid "Jan-Hendrik Peters"
407 msgstr "Jan-Hendrik Peters"
408
409 #: ../cutscenes/credits.txt:109
410 msgid "miffe"
411 msgstr "miffe"
412
413 #: ../cutscenes/credits.txt:112
109 #: ../cutscenes/credits.txt:117
414110 msgid "Special Thanks"
415111 msgstr "Speciali Ringraziamenti"
416112
417 #: ../cutscenes/credits.txt:116
113 #: ../cutscenes/credits.txt:121
418114 msgid "For giving constant feedback and testing:"
419115 msgstr "Per il costante feedback e il testing:"
420116
421 #: ../cutscenes/credits.txt:117
422 msgid "Bart Kelsey"
423 msgstr "Bart Kelsey"
424
425 #: ../cutscenes/credits.txt:118
117 #: ../cutscenes/credits.txt:123
426118 msgid "The community at OpenGameArt"
427119 msgstr "La comunità di OpenGameArt"
428120
429 #: ../cutscenes/credits.txt:122
121 #: ../cutscenes/credits.txt:127
430122 msgid "For Tiled and the Flare map exporter:"
431123 msgstr "Per l'editor Tiled e l'esportatore di mappe di Flare:"
432
433 #: ../cutscenes/credits.txt:123
434 msgid "Thorbjørn Lindeijer"
435 msgstr "Thorbjørn Lindeijer"
436
437 #: ../cutscenes/credits.txt:125
438 msgid "Ranie Jade Ramiso"
439 msgstr "Ranie Jade Ramiso"
88 msgstr ""
99 "Project-Id-Version: PACKAGE VERSION\n"
1010 "Report-Msgid-Bugs-To: \n"
11 "POT-Creation-Date: 2018-11-13 17:21+\n"
11 "POT-Creation-Date: 2019-07-29 09:34+\n"
1212 "PO-Revision-Date: 2018-03-28 19:16+0000\n"
1313 "Last-Translator: Justin Jacobs <jajdorkster@gmail.com>, 2018\n"
1414 "Language-Team: Japanese (https://www.transifex.com/flareorg/teams/84925/ja/)\n"
9090 msgid "Lead Programmers"
9191 msgstr ""
9292
93 #: ../cutscenes/credits.txt:12
94 msgid "Clint Bellanger"
95 msgstr ""
96
97 #: ../cutscenes/credits.txt:13
98 msgid "Henrik Andersson"
99 msgstr ""
100
101 #: ../cutscenes/credits.txt:14
102 msgid "Igor Paliychuk"
103 msgstr ""
104
105 #: ../cutscenes/credits.txt:15
106 msgid "Justin Jacobs"
107 msgstr ""
108
109 #: ../cutscenes/credits.txt:16
110 msgid "Stefan Beller"
111 msgstr ""
112
113 #: ../cutscenes/credits.txt:17
114 msgid "Thane Brimhall"
115 msgstr ""
116
11793 #: ../cutscenes/credits.txt:20
11894 msgid "Programmers"
119 msgstr ""
120
121 #: ../cutscenes/credits.txt:22
122 msgid "Andrew Engelbrecht"
123 msgstr ""
124
125 #: ../cutscenes/credits.txt:23
126 msgid "Anton Golov"
127 msgstr ""
128
129 #: ../cutscenes/credits.txt:24
130 msgid "Artur Rojek"
131 msgstr ""
132
133 #: ../cutscenes/credits.txt:25
134 msgid "blazindragon"
135 msgstr ""
136
137 #: ../cutscenes/credits.txt:26
138 msgid "Bonbadil"
139 msgstr ""
140
141 #: ../cutscenes/credits.txt:27
142 msgid "Chris Oelmueller"
143 msgstr ""
144
145 #: ../cutscenes/credits.txt:28
146 msgid "David Bariod"
147 msgstr ""
148
149 #: ../cutscenes/credits.txt:29
150 msgid "Daniel Santos"
151 msgstr ""
152
153 #: ../cutscenes/credits.txt:30
154 msgid "Gallaecio"
155 msgstr ""
156
157 #: ../cutscenes/credits.txt:31
158 msgid "Joseph Bleu"
159 msgstr ""
160
161 #: ../cutscenes/credits.txt:32
162 msgid "Juan PabloTamayo"
163 msgstr ""
164
165 #: ../cutscenes/credits.txt:33
166 msgid "Kitano"
167 msgstr ""
168
169 #: ../cutscenes/credits.txt:34
170 msgid "Kyle Belanger"
171 msgstr ""
172
173 #: ../cutscenes/credits.txt:35
174 msgid "LongerDev"
175 msgstr ""
176
177 #: ../cutscenes/credits.txt:36
178 msgid "Manuel A. Fernandez Montecelo"
179 msgstr ""
180
181 #: ../cutscenes/credits.txt:37
182 msgid "Matthew Krohn"
183 msgstr ""
184
185 #: ../cutscenes/credits.txt:38
186 msgid "Nojan"
187 msgstr ""
188
189 #: ../cutscenes/credits.txt:39
190 msgid "Pavel Kirpichyov"
191 msgstr ""
192
193 #: ../cutscenes/credits.txt:40
194 msgid "runtime-x86"
195 msgstr ""
196
197 #: ../cutscenes/credits.txt:41
198 msgid "Ryan Dansie"
19995 msgstr ""
20096
20197 #: ../cutscenes/credits.txt:44
206102 msgid "Translators"
207103 msgstr ""
208104
209 #: ../cutscenes/credits.txt:51
210 msgid "Ademaro"
211 msgstr ""
212
213 #: ../cutscenes/credits.txt:52
214 msgid "Adrian Chaves Fernandez"
215 msgstr ""
216
217 #: ../cutscenes/credits.txt:53
218 msgid "Andrea Ranaldi"
219 msgstr ""
220
221 #: ../cutscenes/credits.txt:54
222 msgid "Andreas Berheim Brudin"
223 msgstr ""
224
225 #: ../cutscenes/credits.txt:55
226 msgid "Bas Doodeman"
227 msgstr ""
228
229 #: ../cutscenes/credits.txt:57
230 msgid "Carlos Sanchez"
231 msgstr ""
232
233 #: ../cutscenes/credits.txt:59
234 msgid "Christoph J. Thompson"
235 msgstr ""
236
237 #: ../cutscenes/credits.txt:60
238 msgid "Denis Lysenko"
239 msgstr ""
240
241 #: ../cutscenes/credits.txt:61
242 msgid "Diego J. Romero López"
243 msgstr ""
244
245 #: ../cutscenes/credits.txt:62
246 msgid "dumaosen"
247 msgstr ""
248
249 #: ../cutscenes/credits.txt:63
250 msgid "Emil"
251 msgstr ""
252
253 #: ../cutscenes/credits.txt:64
254 msgid "Eric R"
255 msgstr ""
256
257 #: ../cutscenes/credits.txt:65
258 msgid "Evgen Pavlov"
259 msgstr ""
260
261 #: ../cutscenes/credits.txt:66
262 msgid "Fabio Loli"
263 msgstr ""
264
265 #: ../cutscenes/credits.txt:67
266 msgid "Gianfranco Del Borrello"
267 msgstr ""
268
269 #: ../cutscenes/credits.txt:68
270 msgid "Giovanni Dalla Torre"
271 msgstr ""
272
273 #: ../cutscenes/credits.txt:69
274 msgid "GunChleoc"
275 msgstr ""
276
277 #: ../cutscenes/credits.txt:70
278 msgid "Hans Joachim Desserud"
279 msgstr ""
280
281 #: ../cutscenes/credits.txt:71
282 msgid "hark34"
283 msgstr ""
284
285 #: ../cutscenes/credits.txt:73
286 msgid "Janet Hunt"
287 msgstr ""
288
289 #: ../cutscenes/credits.txt:74
290 msgid "Juan Pablo Tamayo"
291 msgstr ""
292
293 #: ../cutscenes/credits.txt:75
294 msgid "losine"
295 msgstr ""
296
297 #: ../cutscenes/credits.txt:76
298 msgid "Marc Tormo i Bochaca"
299 msgstr ""
300
301 #: ../cutscenes/credits.txt:77
302 msgid "Michael Papageorgiou"
303 msgstr ""
304
305 #: ../cutscenes/credits.txt:78
306 msgid "Mikhail Karalevich"
307 msgstr ""
308
309 #: ../cutscenes/credits.txt:79
310 msgid "Miro Jánošík"
311 msgstr ""
312
313 #: ../cutscenes/credits.txt:80
314 msgid "Mykola Franchuk"
315 msgstr ""
316
317 #: ../cutscenes/credits.txt:81
318 msgid "MOB2"
319 msgstr ""
320
321 #: ../cutscenes/credits.txt:82
322 msgid "Morgan Strauss"
323 msgstr ""
324
325 #: ../cutscenes/credits.txt:83
326 msgid "Nea Retrogamer"
327 msgstr ""
328
329 #: ../cutscenes/credits.txt:84
330 msgid "Nguyễn Gia Phong"
331 msgstr ""
332
333 #: ../cutscenes/credits.txt:85
334 msgid "Nikita Vanku"
335 msgstr ""
336
337 #: ../cutscenes/credits.txt:86
338 msgid "Paul Wortmann"
339 msgstr ""
340
341 #: ../cutscenes/credits.txt:87
342 msgid "Pawel Puszczynski"
343 msgstr ""
344
345 #: ../cutscenes/credits.txt:88
346 msgid "Quentin Stievenart"
347 msgstr ""
348
349 #: ../cutscenes/credits.txt:89
350 msgid "Rui"
351 msgstr ""
352
353 #: ../cutscenes/credits.txt:90
354 msgid "Sergey Basalaev"
355 msgstr ""
356
357 #: ../cutscenes/credits.txt:91
358 msgid "Sergiy Borodych"
359 msgstr ""
360
361 #: ../cutscenes/credits.txt:93
362 msgid "Stefano Peris"
363 msgstr ""
364
365 #: ../cutscenes/credits.txt:94
366 msgid "sujiniku"
367 msgstr ""
368
369 #: ../cutscenes/credits.txt:95
370 msgid "Thomas Glamsch"
371 msgstr ""
372
373 #: ../cutscenes/credits.txt:96
374 msgid "Timo Sievänen"
375 msgstr ""
376
377 #: ../cutscenes/credits.txt:97
378 msgid "Vicente Monteiro"
379 msgstr ""
380
381 #: ../cutscenes/credits.txt:98
382 msgid "Wuzzy2"
383 msgstr ""
384
385 #: ../cutscenes/credits.txt:99
386 msgid "Yannis Anthymidis"
387 msgstr ""
388
389 #: ../cutscenes/credits.txt:100
390 msgid "Zmicer Turok"
391 msgstr ""
392
393 #: ../cutscenes/credits.txt:103
105 #: ../cutscenes/credits.txt:108
394106 msgid "Distributors"
395107 msgstr ""
396108
397 #: ../cutscenes/credits.txt:105
398 msgid "Ablu"
399 msgstr ""
400
401 #: ../cutscenes/credits.txt:106
402 msgid "Feillyne"
403 msgstr ""
404
405 #: ../cutscenes/credits.txt:107
406 msgid "Jan-Hendrik Peters"
407 msgstr ""
408
409 #: ../cutscenes/credits.txt:109
410 msgid "miffe"
411 msgstr ""
412
413 #: ../cutscenes/credits.txt:112
109 #: ../cutscenes/credits.txt:117
414110 msgid "Special Thanks"
415111 msgstr ""
416112
417 #: ../cutscenes/credits.txt:116
113 #: ../cutscenes/credits.txt:121
418114 msgid "For giving constant feedback and testing:"
419115 msgstr ""
420116
421 #: ../cutscenes/credits.txt:117
422 msgid "Bart Kelsey"
423 msgstr ""
424
425 #: ../cutscenes/credits.txt:118
117 #: ../cutscenes/credits.txt:123
426118 msgid "The community at OpenGameArt"
427119 msgstr ""
428120
429 #: ../cutscenes/credits.txt:122
121 #: ../cutscenes/credits.txt:127
430122 msgid "For Tiled and the Flare map exporter:"
431123 msgstr ""
432
433 #: ../cutscenes/credits.txt:123
434 msgid "Thorbjørn Lindeijer"
435 msgstr ""
436
437 #: ../cutscenes/credits.txt:125
438 msgid "Ranie Jade Ramiso"
439 msgstr ""
0 # Copyright (C) 2011 Clint Bellanger
1 # This file is distributed under the same license as the FLARE package.
2 #
3 # FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
4 msgid ""
5 msgstr ""
6 "Project-Id-Version: PACKAGE VERSION\n"
7 "Report-Msgid-Bugs-To: \n"
8 "POT-Creation-Date: 2020-05-20 16:39+\n"
9 "PO-Revision-Date: 2018-03-28 19:16+0000\n"
10 "Language-Team: Korean (https://www.transifex.com/flareorg/teams/84925/ko/)\n"
11 "MIME-Version: 1.0\n"
12 "Content-Type: text/plain; charset=UTF-8\n"
13 "Content-Transfer-Encoding: 8bit\n"
14 "Language: ko\n"
15 "Plural-Forms: nplurals=1; plural=0;\n"
16
17 #: ../engine/primary_stats.txt:3
18 msgid "Physical"
19 msgstr ""
20
21 #: ../engine/primary_stats.txt:7
22 msgid "Mental"
23 msgstr ""
24
25 #: ../engine/primary_stats.txt:11
26 msgid "Offense"
27 msgstr ""
28
29 #: ../engine/primary_stats.txt:15
30 msgid "Defense"
31 msgstr ""
32
33 #: ../engine/damage_types.txt:3
34 msgid "Melee Damage"
35 msgstr ""
36
37 #: ../engine/damage_types.txt:4
38 msgid "Increases the damage done with swords and other melee weapons."
39 msgstr ""
40
41 #: ../engine/damage_types.txt:5
42 msgid "Melee Damage Min"
43 msgstr ""
44
45 #: ../engine/damage_types.txt:6
46 msgid "Melee Damage Max"
47 msgstr ""
48
49 #: ../engine/damage_types.txt:12
50 msgid "Ranged Damage"
51 msgstr ""
52
53 #: ../engine/damage_types.txt:13
54 msgid "Increases the damage done with bows and other ranged weapons."
55 msgstr ""
56
57 #: ../engine/damage_types.txt:14
58 msgid "Ranged Damage Min"
59 msgstr ""
60
61 #: ../engine/damage_types.txt:15
62 msgid "Ranged Damage Max"
63 msgstr ""
64
65 #: ../engine/damage_types.txt:21
66 msgid "Mental Damage"
67 msgstr ""
68
69 #: ../engine/damage_types.txt:22
70 msgid "Increases the damage done with staves and other mental weapons."
71 msgstr ""
72
73 #: ../engine/damage_types.txt:23
74 msgid "Mental Damage Min"
75 msgstr ""
76
77 #: ../engine/damage_types.txt:24
78 msgid "Mental Damage Max"
79 msgstr ""
80
81 #: ../cutscenes/credits.txt:7
82 msgid "Flare Engine Credits"
83 msgstr ""
84
85 #: ../cutscenes/credits.txt:10
86 msgid "Lead Programmers"
87 msgstr ""
88
89 #: ../cutscenes/credits.txt:20
90 msgid "Programmers"
91 msgstr ""
92
93 #: ../cutscenes/credits.txt:48
94 msgid "Default Art"
95 msgstr ""
96
97 #: ../cutscenes/credits.txt:53
98 msgid "Translators"
99 msgstr ""
100
101 #: ../cutscenes/credits.txt:112
102 msgid "Distributors"
103 msgstr ""
104
105 #: ../cutscenes/credits.txt:121
106 msgid "Special Thanks"
107 msgstr ""
108
109 #: ../cutscenes/credits.txt:125
110 msgid "For giving constant feedback and testing:"
111 msgstr ""
112
113 #: ../cutscenes/credits.txt:127
114 msgid "The community at OpenGameArt"
115 msgstr ""
116
117 #: ../cutscenes/credits.txt:131
118 msgid "For Tiled and the Flare map exporter:"
119 msgstr ""
11 # This file is distributed under the same license as the FLARE package.
22 #
33 # FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
4 # Translators:
5 # Elias Nykrem <bloodaxeNOR@protonmail.com>, 2019
6 #
47 msgid ""
58 msgstr ""
69 "Project-Id-Version: PACKAGE VERSION\n"
710 "Report-Msgid-Bugs-To: \n"
8 "POT-Creation-Date: 2018-11-13 17:21+\n"
11 "POT-Creation-Date: 2019-07-29 09:34+\n"
912 "PO-Revision-Date: 2018-03-28 19:16+0000\n"
13 "Last-Translator: Elias Nykrem <bloodaxeNOR@protonmail.com>, 2019\n"
1014 "Language-Team: Norwegian Bokmål (https://www.transifex.com/flareorg/teams/84925/nb/)\n"
1115 "MIME-Version: 1.0\n"
1216 "Content-Type: text/plain; charset=UTF-8\n"
1620
1721 #: ../engine/primary_stats.txt:3
1822 msgid "Physical"
19 msgstr ""
23 msgstr "Fysisk"
2024
2125 #: ../engine/primary_stats.txt:7
2226 msgid "Mental"
23 msgstr ""
27 msgstr "Mentalitet"
2428
2529 #: ../engine/primary_stats.txt:11
2630 msgid "Offense"
27 msgstr ""
31 msgstr "Offensiv"
2832
2933 #: ../engine/primary_stats.txt:15
3034 msgid "Defense"
31 msgstr ""
35 msgstr "Defensiv"
3236
3337 #: ../engine/damage_types.txt:3
3438 msgid "Melee Damage"
35 msgstr ""
39 msgstr "Nærkamp Skade"
3640
3741 #: ../engine/damage_types.txt:4
3842 msgid "Increases the damage done with swords and other melee weapons."
39 msgstr ""
43 msgstr "Øker skade gjort med sverd og andre nærkampsvåpen."
4044
4145 #: ../engine/damage_types.txt:5
4246 msgid "Melee Damage Min"
43 msgstr ""
47 msgstr "Nærkamp Skade Min"
4448
4549 #: ../engine/damage_types.txt:6
4650 msgid "Melee Damage Max"
47 msgstr ""
51 msgstr "Nærkamp Skade Maks"
4852
4953 #: ../engine/damage_types.txt:12
5054 msgid "Ranged Damage"
51 msgstr ""
55 msgstr "Distanse Skade"
5256
5357 #: ../engine/damage_types.txt:13
5458 msgid "Increases the damage done with bows and other ranged weapons."
55 msgstr ""
59 msgstr "Øker skade gjort med buer og andre distansevåpen."
5660
5761 #: ../engine/damage_types.txt:14
5862 msgid "Ranged Damage Min"
59 msgstr ""
63 msgstr "Distanse Skade Min"
6064
6165 #: ../engine/damage_types.txt:15
6266 msgid "Ranged Damage Max"
63 msgstr ""
67 msgstr "Distanse Skade Maks"
6468
6569 #: ../engine/damage_types.txt:21
6670 msgid "Mental Damage"
67 msgstr ""
71 msgstr "Mental Skade"
6872
6973 #: ../engine/damage_types.txt:22
7074 msgid "Increases the damage done with staves and other mental weapons."
71 msgstr ""
75 msgstr "Øker skade gjort med staver og andre mentalitetsvåpen."
7276
7377 #: ../engine/damage_types.txt:23
7478 msgid "Mental Damage Min"
75 msgstr ""
79 msgstr "Mental Skade Min"
7680
7781 #: ../engine/damage_types.txt:24
7882 msgid "Mental Damage Max"
79 msgstr ""
83 msgstr "Mental Skade Maks"
8084
8185 #: ../cutscenes/credits.txt:7
8286 msgid "Flare Engine Credits"
83 msgstr ""
87 msgstr "Flare Engine Rulletekst"
8488
8589 #: ../cutscenes/credits.txt:10
8690 msgid "Lead Programmers"
87 msgstr ""
88
89 #: ../cutscenes/credits.txt:12
90 msgid "Clint Bellanger"
91 msgstr ""
92
93 #: ../cutscenes/credits.txt:13
94 msgid "Henrik Andersson"
95 msgstr ""
96
97 #: ../cutscenes/credits.txt:14
98 msgid "Igor Paliychuk"
99 msgstr ""
100
101 #: ../cutscenes/credits.txt:15
102 msgid "Justin Jacobs"
103 msgstr ""
104
105 #: ../cutscenes/credits.txt:16
106 msgid "Stefan Beller"
107 msgstr ""
108
109 #: ../cutscenes/credits.txt:17
110 msgid "Thane Brimhall"
111 msgstr ""
91 msgstr "Ledende Programmerere"
11292
11393 #: ../cutscenes/credits.txt:20
11494 msgid "Programmers"
115 msgstr ""
116
117 #: ../cutscenes/credits.txt:22
118 msgid "Andrew Engelbrecht"
119 msgstr ""
120
121 #: ../cutscenes/credits.txt:23
122 msgid "Anton Golov"
123 msgstr ""
124
125 #: ../cutscenes/credits.txt:24
126 msgid "Artur Rojek"
127 msgstr ""
128
129 #: ../cutscenes/credits.txt:25
130 msgid "blazindragon"
131 msgstr ""
132
133 #: ../cutscenes/credits.txt:26
134 msgid "Bonbadil"
135 msgstr ""
136
137 #: ../cutscenes/credits.txt:27
138 msgid "Chris Oelmueller"
139 msgstr ""
140
141 #: ../cutscenes/credits.txt:28
142 msgid "David Bariod"
143 msgstr ""
144
145 #: ../cutscenes/credits.txt:29
146 msgid "Daniel Santos"
147 msgstr ""
148
149 #: ../cutscenes/credits.txt:30
150 msgid "Gallaecio"
151 msgstr ""
152
153 #: ../cutscenes/credits.txt:31
154 msgid "Joseph Bleu"
155 msgstr ""
156
157 #: ../cutscenes/credits.txt:32
158 msgid "Juan PabloTamayo"
159 msgstr ""
160
161 #: ../cutscenes/credits.txt:33
162 msgid "Kitano"
163 msgstr ""
164
165 #: ../cutscenes/credits.txt:34
166 msgid "Kyle Belanger"
167 msgstr ""
168
169 #: ../cutscenes/credits.txt:35
170 msgid "LongerDev"
171 msgstr ""
172
173 #: ../cutscenes/credits.txt:36
174 msgid "Manuel A. Fernandez Montecelo"
175 msgstr ""
176
177 #: ../cutscenes/credits.txt:37
178 msgid "Matthew Krohn"
179 msgstr ""
180
181 #: ../cutscenes/credits.txt:38
182 msgid "Nojan"
183 msgstr ""
184
185 #: ../cutscenes/credits.txt:39
186 msgid "Pavel Kirpichyov"
187 msgstr ""
188
189 #: ../cutscenes/credits.txt:40
190 msgid "runtime-x86"
191 msgstr ""
192
193 #: ../cutscenes/credits.txt:41
194 msgid "Ryan Dansie"
195 msgstr ""
95 msgstr "Programmerere"
19696
19797 #: ../cutscenes/credits.txt:44
19898 msgid "Default Art"
199 msgstr ""
99 msgstr "Standard Kunst"
200100
201101 #: ../cutscenes/credits.txt:49
202102 msgid "Translators"
203 msgstr ""
103 msgstr "Oversettere"
204104
205 #: ../cutscenes/credits.txt:51
206 msgid "Ademaro"
207 msgstr ""
208
209 #: ../cutscenes/credits.txt:52
210 msgid "Adrian Chaves Fernandez"
211 msgstr ""
212
213 #: ../cutscenes/credits.txt:53
214 msgid "Andrea Ranaldi"
215 msgstr ""
216
217 #: ../cutscenes/credits.txt:54
218 msgid "Andreas Berheim Brudin"
219 msgstr ""
220
221 #: ../cutscenes/credits.txt:55
222 msgid "Bas Doodeman"
223 msgstr ""
224
225 #: ../cutscenes/credits.txt:57
226 msgid "Carlos Sanchez"
227 msgstr ""
228
229 #: ../cutscenes/credits.txt:59
230 msgid "Christoph J. Thompson"
231 msgstr ""
232
233 #: ../cutscenes/credits.txt:60
234 msgid "Denis Lysenko"
235 msgstr ""
236
237 #: ../cutscenes/credits.txt:61
238 msgid "Diego J. Romero López"
239 msgstr ""
240
241 #: ../cutscenes/credits.txt:62
242 msgid "dumaosen"
243 msgstr ""
244
245 #: ../cutscenes/credits.txt:63
246 msgid "Emil"
247 msgstr ""
248
249 #: ../cutscenes/credits.txt:64
250 msgid "Eric R"
251 msgstr ""
252
253 #: ../cutscenes/credits.txt:65
254 msgid "Evgen Pavlov"
255 msgstr ""
256
257 #: ../cutscenes/credits.txt:66
258 msgid "Fabio Loli"
259 msgstr ""
260
261 #: ../cutscenes/credits.txt:67
262 msgid "Gianfranco Del Borrello"
263 msgstr ""
264
265 #: ../cutscenes/credits.txt:68
266 msgid "Giovanni Dalla Torre"
267 msgstr ""
268
269 #: ../cutscenes/credits.txt:69
270 msgid "GunChleoc"
271 msgstr ""
272
273 #: ../cutscenes/credits.txt:70
274 msgid "Hans Joachim Desserud"
275 msgstr ""
276
277 #: ../cutscenes/credits.txt:71
278 msgid "hark34"
279 msgstr ""
280
281 #: ../cutscenes/credits.txt:73
282 msgid "Janet Hunt"
283 msgstr ""
284
285 #: ../cutscenes/credits.txt:74
286 msgid "Juan Pablo Tamayo"
287 msgstr ""
288
289 #: ../cutscenes/credits.txt:75
290 msgid "losine"
291 msgstr ""
292
293 #: ../cutscenes/credits.txt:76
294 msgid "Marc Tormo i Bochaca"
295 msgstr ""
296
297 #: ../cutscenes/credits.txt:77
298 msgid "Michael Papageorgiou"
299 msgstr ""
300
301 #: ../cutscenes/credits.txt:78
302 msgid "Mikhail Karalevich"
303 msgstr ""
304
305 #: ../cutscenes/credits.txt:79
306 msgid "Miro Jánošík"
307 msgstr ""
308
309 #: ../cutscenes/credits.txt:80
310 msgid "Mykola Franchuk"
311 msgstr ""
312
313 #: ../cutscenes/credits.txt:81
314 msgid "MOB2"
315 msgstr ""
316
317 #: ../cutscenes/credits.txt:82
318 msgid "Morgan Strauss"
319 msgstr ""
320
321 #: ../cutscenes/credits.txt:83
322 msgid "Nea Retrogamer"
323 msgstr ""
324
325 #: ../cutscenes/credits.txt:84
326 msgid "Nguyễn Gia Phong"
327 msgstr ""
328
329 #: ../cutscenes/credits.txt:85
330 msgid "Nikita Vanku"
331 msgstr ""
332
333 #: ../cutscenes/credits.txt:86
334 msgid "Paul Wortmann"
335 msgstr ""
336
337 #: ../cutscenes/credits.txt:87
338 msgid "Pawel Puszczynski"
339 msgstr ""
340
341 #: ../cutscenes/credits.txt:88
342 msgid "Quentin Stievenart"
343 msgstr ""
344
345 #: ../cutscenes/credits.txt:89
346 msgid "Rui"
347 msgstr ""
348
349 #: ../cutscenes/credits.txt:90
350 msgid "Sergey Basalaev"
351 msgstr ""
352
353 #: ../cutscenes/credits.txt:91
354 msgid "Sergiy Borodych"
355 msgstr ""
356
357 #: ../cutscenes/credits.txt:93
358 msgid "Stefano Peris"
359 msgstr ""
360
361 #: ../cutscenes/credits.txt:94
362 msgid "sujiniku"
363 msgstr ""
364
365 #: ../cutscenes/credits.txt:95
366 msgid "Thomas Glamsch"
367 msgstr ""
368
369 #: ../cutscenes/credits.txt:96
370 msgid "Timo Sievänen"
371 msgstr ""
372
373 #: ../cutscenes/credits.txt:97
374 msgid "Vicente Monteiro"
375 msgstr ""
376
377 #: ../cutscenes/credits.txt:98
378 msgid "Wuzzy2"
379 msgstr ""
380
381 #: ../cutscenes/credits.txt:99
382 msgid "Yannis Anthymidis"
383 msgstr ""
384
385 #: ../cutscenes/credits.txt:100
386 msgid "Zmicer Turok"
387 msgstr ""
388
389 #: ../cutscenes/credits.txt:103
105 #: ../cutscenes/credits.txt:108
390106 msgid "Distributors"
391 msgstr ""
392
393 #: ../cutscenes/credits.txt:105
394 msgid "Ablu"
395 msgstr ""
396
397 #: ../cutscenes/credits.txt:106
398 msgid "Feillyne"
399 msgstr ""
400
401 #: ../cutscenes/credits.txt:107
402 msgid "Jan-Hendrik Peters"
403 msgstr ""
404
405 #: ../cutscenes/credits.txt:109
406 msgid "miffe"
407 msgstr ""
408
409 #: ../cutscenes/credits.txt:112
410 msgid "Special Thanks"
411 msgstr ""
412
413 #: ../cutscenes/credits.txt:116
414 msgid "For giving constant feedback and testing:"
415 msgstr ""
107 msgstr "Distributører"
416108
417109 #: ../cutscenes/credits.txt:117
418 msgid "Bart Kelsey"
419 msgstr ""
110 msgid "Special Thanks"
111 msgstr "Spesielt takk til"
420112
421 #: ../cutscenes/credits.txt:118
422 msgid "The community at OpenGameArt"
423 msgstr ""
424
425 #: ../cutscenes/credits.txt:122
426 msgid "For Tiled and the Flare map exporter:"
427 msgstr ""
113 #: ../cutscenes/credits.txt:121
114 msgid "For giving constant feedback and testing:"
115 msgstr "For konstant testing og tilbakemelding:"
428116
429117 #: ../cutscenes/credits.txt:123
430 msgid "Thorbjørn Lindeijer"
431 msgstr ""
118 msgid "The community at OpenGameArt"
119 msgstr "Fellesskapet ved OpenGameArt"
432120
433 #: ../cutscenes/credits.txt:125
434 msgid "Ranie Jade Ramiso"
435 msgstr ""
121 #: ../cutscenes/credits.txt:127
122 msgid "For Tiled and the Flare map exporter:"
123 msgstr "Til Tiled og Flare kart eksportør:"
55 msgstr ""
66 "Project-Id-Version: PACKAGE VERSION\n"
77 "Report-Msgid-Bugs-To: \n"
8 "POT-Creation-Date: 2018-11-13 17:21+\n"
8 "POT-Creation-Date: 2019-07-29 09:34+\n"
99 "PO-Revision-Date: 2018-03-28 19:16+0000\n"
1010 "Language-Team: Dutch (https://www.transifex.com/flareorg/teams/84925/nl/)\n"
1111 "MIME-Version: 1.0\n"
8686 msgid "Lead Programmers"
8787 msgstr ""
8888
89 #: ../cutscenes/credits.txt:12
90 msgid "Clint Bellanger"
91 msgstr ""
92
93 #: ../cutscenes/credits.txt:13
94 msgid "Henrik Andersson"
95 msgstr ""
96
97 #: ../cutscenes/credits.txt:14
98 msgid "Igor Paliychuk"
99 msgstr ""
100
101 #: ../cutscenes/credits.txt:15
102 msgid "Justin Jacobs"
103 msgstr ""
104
105 #: ../cutscenes/credits.txt:16
106 msgid "Stefan Beller"
107 msgstr ""
108
109 #: ../cutscenes/credits.txt:17
110 msgid "Thane Brimhall"
111 msgstr ""
112
11389 #: ../cutscenes/credits.txt:20
11490 msgid "Programmers"
115 msgstr ""
116
117 #: ../cutscenes/credits.txt:22
118 msgid "Andrew Engelbrecht"
119 msgstr ""
120
121 #: ../cutscenes/credits.txt:23
122 msgid "Anton Golov"
123 msgstr ""
124
125 #: ../cutscenes/credits.txt:24
126 msgid "Artur Rojek"
127 msgstr ""
128
129 #: ../cutscenes/credits.txt:25
130 msgid "blazindragon"
131 msgstr ""
132
133 #: ../cutscenes/credits.txt:26
134 msgid "Bonbadil"
135 msgstr ""
136
137 #: ../cutscenes/credits.txt:27
138 msgid "Chris Oelmueller"
139 msgstr ""
140
141 #: ../cutscenes/credits.txt:28
142 msgid "David Bariod"
143 msgstr ""
144
145 #: ../cutscenes/credits.txt:29
146 msgid "Daniel Santos"
147 msgstr ""
148
149 #: ../cutscenes/credits.txt:30
150 msgid "Gallaecio"
151 msgstr ""
152
153 #: ../cutscenes/credits.txt:31
154 msgid "Joseph Bleu"
155 msgstr ""
156
157 #: ../cutscenes/credits.txt:32
158 msgid "Juan PabloTamayo"
159 msgstr ""
160
161 #: ../cutscenes/credits.txt:33
162 msgid "Kitano"
163 msgstr ""
164
165 #: ../cutscenes/credits.txt:34
166 msgid "Kyle Belanger"
167 msgstr ""
168
169 #: ../cutscenes/credits.txt:35
170 msgid "LongerDev"
171 msgstr ""
172
173 #: ../cutscenes/credits.txt:36
174 msgid "Manuel A. Fernandez Montecelo"
175 msgstr ""
176
177 #: ../cutscenes/credits.txt:37
178 msgid "Matthew Krohn"
179 msgstr ""
180
181 #: ../cutscenes/credits.txt:38
182 msgid "Nojan"
183 msgstr ""
184
185 #: ../cutscenes/credits.txt:39
186 msgid "Pavel Kirpichyov"
187 msgstr ""
188
189 #: ../cutscenes/credits.txt:40
190 msgid "runtime-x86"
191 msgstr ""
192
193 #: ../cutscenes/credits.txt:41
194 msgid "Ryan Dansie"
19591 msgstr ""
19692
19793 #: ../cutscenes/credits.txt:44
20298 msgid "Translators"
20399 msgstr ""
204100
205 #: ../cutscenes/credits.txt:51
206 msgid "Ademaro"
207 msgstr ""
208
209 #: ../cutscenes/credits.txt:52
210 msgid "Adrian Chaves Fernandez"
211 msgstr ""
212
213 #: ../cutscenes/credits.txt:53
214 msgid "Andrea Ranaldi"
215 msgstr ""
216
217 #: ../cutscenes/credits.txt:54
218 msgid "Andreas Berheim Brudin"
219 msgstr ""
220
221 #: ../cutscenes/credits.txt:55
222 msgid "Bas Doodeman"
223 msgstr ""
224
225 #: ../cutscenes/credits.txt:57
226 msgid "Carlos Sanchez"
227 msgstr ""
228
229 #: ../cutscenes/credits.txt:59
230 msgid "Christoph J. Thompson"
231 msgstr ""
232
233 #: ../cutscenes/credits.txt:60
234 msgid "Denis Lysenko"
235 msgstr ""
236
237 #: ../cutscenes/credits.txt:61
238 msgid "Diego J. Romero López"
239 msgstr ""
240
241 #: ../cutscenes/credits.txt:62
242 msgid "dumaosen"
243 msgstr ""
244
245 #: ../cutscenes/credits.txt:63
246 msgid "Emil"
247 msgstr ""
248
249 #: ../cutscenes/credits.txt:64
250 msgid "Eric R"
251 msgstr ""
252
253 #: ../cutscenes/credits.txt:65
254 msgid "Evgen Pavlov"
255 msgstr ""
256
257 #: ../cutscenes/credits.txt:66
258 msgid "Fabio Loli"
259 msgstr ""
260
261 #: ../cutscenes/credits.txt:67
262 msgid "Gianfranco Del Borrello"
263 msgstr ""
264
265 #: ../cutscenes/credits.txt:68
266 msgid "Giovanni Dalla Torre"
267 msgstr ""
268
269 #: ../cutscenes/credits.txt:69
270 msgid "GunChleoc"
271 msgstr ""
272
273 #: ../cutscenes/credits.txt:70
274 msgid "Hans Joachim Desserud"
275 msgstr ""
276
277 #: ../cutscenes/credits.txt:71
278 msgid "hark34"
279 msgstr ""
280
281 #: ../cutscenes/credits.txt:73
282 msgid "Janet Hunt"
283 msgstr ""
284
285 #: ../cutscenes/credits.txt:74
286 msgid "Juan Pablo Tamayo"
287 msgstr ""
288
289 #: ../cutscenes/credits.txt:75
290 msgid "losine"
291 msgstr ""
292
293 #: ../cutscenes/credits.txt:76
294 msgid "Marc Tormo i Bochaca"
295 msgstr ""
296
297 #: ../cutscenes/credits.txt:77
298 msgid "Michael Papageorgiou"
299 msgstr ""
300
301 #: ../cutscenes/credits.txt:78
302 msgid "Mikhail Karalevich"
303 msgstr ""
304
305 #: ../cutscenes/credits.txt:79
306 msgid "Miro Jánošík"
307 msgstr ""
308
309 #: ../cutscenes/credits.txt:80
310 msgid "Mykola Franchuk"
311 msgstr ""
312
313 #: ../cutscenes/credits.txt:81
314 msgid "MOB2"
315 msgstr ""
316
317 #: ../cutscenes/credits.txt:82
318 msgid "Morgan Strauss"
319 msgstr ""
320
321 #: ../cutscenes/credits.txt:83
322 msgid "Nea Retrogamer"
323 msgstr ""
324
325 #: ../cutscenes/credits.txt:84
326 msgid "Nguyễn Gia Phong"
327 msgstr ""
328
329 #: ../cutscenes/credits.txt:85
330 msgid "Nikita Vanku"
331 msgstr ""
332
333 #: ../cutscenes/credits.txt:86
334 msgid "Paul Wortmann"
335 msgstr ""
336
337 #: ../cutscenes/credits.txt:87
338 msgid "Pawel Puszczynski"
339 msgstr ""
340
341 #: ../cutscenes/credits.txt:88
342 msgid "Quentin Stievenart"
343 msgstr ""
344
345 #: ../cutscenes/credits.txt:89
346 msgid "Rui"
347 msgstr ""
348
349 #: ../cutscenes/credits.txt:90
350 msgid "Sergey Basalaev"
351 msgstr ""
352
353 #: ../cutscenes/credits.txt:91
354 msgid "Sergiy Borodych"
355 msgstr ""
356
357 #: ../cutscenes/credits.txt:93
358 msgid "Stefano Peris"
359 msgstr ""
360
361 #: ../cutscenes/credits.txt:94
362 msgid "sujiniku"
363 msgstr ""
364
365 #: ../cutscenes/credits.txt:95
366 msgid "Thomas Glamsch"
367 msgstr ""
368
369 #: ../cutscenes/credits.txt:96
370 msgid "Timo Sievänen"
371 msgstr ""
372
373 #: ../cutscenes/credits.txt:97
374 msgid "Vicente Monteiro"
375 msgstr ""
376
377 #: ../cutscenes/credits.txt:98
378 msgid "Wuzzy2"
379 msgstr ""
380
381 #: ../cutscenes/credits.txt:99
382 msgid "Yannis Anthymidis"
383 msgstr ""
384
385 #: ../cutscenes/credits.txt:100
386 msgid "Zmicer Turok"
387 msgstr ""
388
389 #: ../cutscenes/credits.txt:103
101 #: ../cutscenes/credits.txt:108
390102 msgid "Distributors"
391103 msgstr ""
392104
393 #: ../cutscenes/credits.txt:105
394 msgid "Ablu"
395 msgstr ""
396
397 #: ../cutscenes/credits.txt:106
398 msgid "Feillyne"
399 msgstr ""
400
401 #: ../cutscenes/credits.txt:107
402 msgid "Jan-Hendrik Peters"
403 msgstr ""
404
405 #: ../cutscenes/credits.txt:109
406 msgid "miffe"
407 msgstr ""
408
409 #: ../cutscenes/credits.txt:112
105 #: ../cutscenes/credits.txt:117
410106 msgid "Special Thanks"
411107 msgstr ""
412108
413 #: ../cutscenes/credits.txt:116
109 #: ../cutscenes/credits.txt:121
414110 msgid "For giving constant feedback and testing:"
415111 msgstr ""
416112
417 #: ../cutscenes/credits.txt:117
418 msgid "Bart Kelsey"
419 msgstr ""
420
421 #: ../cutscenes/credits.txt:118
113 #: ../cutscenes/credits.txt:123
422114 msgid "The community at OpenGameArt"
423115 msgstr ""
424116
425 #: ../cutscenes/credits.txt:122
117 #: ../cutscenes/credits.txt:127
426118 msgid "For Tiled and the Flare map exporter:"
427119 msgstr ""
428
429 #: ../cutscenes/credits.txt:123
430 msgid "Thorbjørn Lindeijer"
431 msgstr ""
432
433 #: ../cutscenes/credits.txt:125
434 msgid "Ranie Jade Ramiso"
435 msgstr ""
22 #
33 # FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
44 # Translators:
5 # Justin Jacobs <jajdorkster@gmail.com>, 2018
5 # Justin Jacobs <jajdorkster@gmail.com>, 2019
66 #
77 msgid ""
88 msgstr ""
99 "Project-Id-Version: PACKAGE VERSION\n"
1010 "Report-Msgid-Bugs-To: \n"
11 "POT-Creation-Date: 2018-11-13 17:21+\n"
11 "POT-Creation-Date: 2019-07-29 09:34+\n"
1212 "PO-Revision-Date: 2018-03-28 19:16+0000\n"
13 "Last-Translator: Justin Jacobs <jajdorkster@gmail.com>, 2018\n"
13 "Last-Translator: Justin Jacobs <jajdorkster@gmail.com>, 2019\n"
1414 "Language-Team: Polish (https://www.transifex.com/flareorg/teams/84925/pl/)\n"
1515 "MIME-Version: 1.0\n"
1616 "Content-Type: text/plain; charset=UTF-8\n"
4141 #: ../engine/damage_types.txt:4
4242 msgid "Increases the damage done with swords and other melee weapons."
4343 msgstr ""
44 "Zwiększa obrażenia zadawane przez miecze i inne bronie służące do walki w "
45 "zwarciu."
4446
4547 #: ../engine/damage_types.txt:5
4648 msgid "Melee Damage Min"
5759 #: ../engine/damage_types.txt:13
5860 msgid "Increases the damage done with bows and other ranged weapons."
5961 msgstr ""
62 "Zwiększa obrażenia zadawane przez łuki i inne bronie do walki dystansowej."
6063
6164 #: ../engine/damage_types.txt:14
6265 msgid "Ranged Damage Min"
7376 #: ../engine/damage_types.txt:22
7477 msgid "Increases the damage done with staves and other mental weapons."
7578 msgstr ""
79 "Zwiększa obrażenia zadawane przez kostury i inne bronie korzystające z mocy "
80 "umysłu."
7681
7782 #: ../engine/damage_types.txt:23
7883 msgid "Mental Damage Min"
9095 msgid "Lead Programmers"
9196 msgstr "Główni programiści"
9297
93 #: ../cutscenes/credits.txt:12
94 msgid "Clint Bellanger"
95 msgstr "Clint Bellanger"
96
97 #: ../cutscenes/credits.txt:13
98 msgid "Henrik Andersson"
99 msgstr "Henrik Andersson"
100
101 #: ../cutscenes/credits.txt:14
102 msgid "Igor Paliychuk"
103 msgstr "Igor Paliychuk"
104
105 #: ../cutscenes/credits.txt:15
106 msgid "Justin Jacobs"
107 msgstr "Justin Jacobs"
108
109 #: ../cutscenes/credits.txt:16
110 msgid "Stefan Beller"
111 msgstr "Stefan Beller"
112
113 #: ../cutscenes/credits.txt:17
114 msgid "Thane Brimhall"
115 msgstr "Thane Brimhall"
116
11798 #: ../cutscenes/credits.txt:20
11899 msgid "Programmers"
119100 msgstr "Programiści"
120
121 #: ../cutscenes/credits.txt:22
122 msgid "Andrew Engelbrecht"
123 msgstr "Andrew Engelbrecht"
124
125 #: ../cutscenes/credits.txt:23
126 msgid "Anton Golov"
127 msgstr "Anton Golov"
128
129 #: ../cutscenes/credits.txt:24
130 msgid "Artur Rojek"
131 msgstr "Artur Rojek"
132
133 #: ../cutscenes/credits.txt:25
134 msgid "blazindragon"
135 msgstr "blazindragon"
136
137 #: ../cutscenes/credits.txt:26
138 msgid "Bonbadil"
139 msgstr "Bonbadil"
140
141 #: ../cutscenes/credits.txt:27
142 msgid "Chris Oelmueller"
143 msgstr "Chris Oelmueller"
144
145 #: ../cutscenes/credits.txt:28
146 msgid "David Bariod"
147 msgstr "David Bariod"
148
149 #: ../cutscenes/credits.txt:29
150 msgid "Daniel Santos"
151 msgstr "Daniel Santos"
152
153 #: ../cutscenes/credits.txt:30
154 msgid "Gallaecio"
155 msgstr "Gallaecio"
156
157 #: ../cutscenes/credits.txt:31
158 msgid "Joseph Bleu"
159 msgstr "Joseph Bleu"
160
161 #: ../cutscenes/credits.txt:32
162 msgid "Juan PabloTamayo"
163 msgstr "Juan PabloTamayo"
164
165 #: ../cutscenes/credits.txt:33
166 msgid "Kitano"
167 msgstr "Kitano"
168
169 #: ../cutscenes/credits.txt:34
170 msgid "Kyle Belanger"
171 msgstr "Kyle Belanger"
172
173 #: ../cutscenes/credits.txt:35
174 msgid "LongerDev"
175 msgstr "LongerDev"
176
177 #: ../cutscenes/credits.txt:36
178 msgid "Manuel A. Fernandez Montecelo"
179 msgstr "Manuel A. Fernandez Montecelo"
180
181 #: ../cutscenes/credits.txt:37
182 msgid "Matthew Krohn"
183 msgstr "Matthew Krohn"
184
185 #: ../cutscenes/credits.txt:38
186 msgid "Nojan"
187 msgstr "Nojan"
188
189 #: ../cutscenes/credits.txt:39
190 msgid "Pavel Kirpichyov"
191 msgstr "Pavel Kirpichyov"
192
193 #: ../cutscenes/credits.txt:40
194 msgid "runtime-x86"
195 msgstr "runtime-x86"
196
197 #: ../cutscenes/credits.txt:41
198 msgid "Ryan Dansie"
199 msgstr "Ryan Dansie"
200101
201102 #: ../cutscenes/credits.txt:44
202103 msgid "Default Art"
206107 msgid "Translators"
207108 msgstr "Tłumacze"
208109
209 #: ../cutscenes/credits.txt:51
210 msgid "Ademaro"
211 msgstr ""
212
213 #: ../cutscenes/credits.txt:52
214 msgid "Adrian Chaves Fernandez"
215 msgstr "Adrian Chaves Fernandez"
216
217 #: ../cutscenes/credits.txt:53
218 msgid "Andrea Ranaldi"
219 msgstr "Andrea Ranaldi"
220
221 #: ../cutscenes/credits.txt:54
222 msgid "Andreas Berheim Brudin"
223 msgstr "Andreas Berheim Brudin"
224
225 #: ../cutscenes/credits.txt:55
226 msgid "Bas Doodeman"
227 msgstr "Bas Doodeman"
228
229 #: ../cutscenes/credits.txt:57
230 msgid "Carlos Sanchez"
231 msgstr "Carlos Sanchez"
232
233 #: ../cutscenes/credits.txt:59
234 msgid "Christoph J. Thompson"
235 msgstr "Christoph J. Thompson"
236
237 #: ../cutscenes/credits.txt:60
238 msgid "Denis Lysenko"
239 msgstr "Denis Lysenko"
240
241 #: ../cutscenes/credits.txt:61
242 msgid "Diego J. Romero López"
243 msgstr "Diego J. Romero López"
244
245 #: ../cutscenes/credits.txt:62
246 msgid "dumaosen"
247 msgstr ""
248
249 #: ../cutscenes/credits.txt:63
250 msgid "Emil"
251 msgstr ""
252
253 #: ../cutscenes/credits.txt:64
254 msgid "Eric R"
255 msgstr ""
256
257 #: ../cutscenes/credits.txt:65
258 msgid "Evgen Pavlov"
259 msgstr "Evgen Pavlov"
260
261 #: ../cutscenes/credits.txt:66
262 msgid "Fabio Loli"
263 msgstr ""
264
265 #: ../cutscenes/credits.txt:67
266 msgid "Gianfranco Del Borrello"
267 msgstr "Gianfranco Del Borrello"
268
269 #: ../cutscenes/credits.txt:68
270 msgid "Giovanni Dalla Torre"
271 msgstr "Giovanni Dalla Torre"
272
273 #: ../cutscenes/credits.txt:69
274 msgid "GunChleoc"
275 msgstr "GunChleoc"
276
277 #: ../cutscenes/credits.txt:70
278 msgid "Hans Joachim Desserud"
279 msgstr "Hans Joachim Desserud"
280
281 #: ../cutscenes/credits.txt:71
282 msgid "hark34"
283 msgstr ""
284
285 #: ../cutscenes/credits.txt:73
286 msgid "Janet Hunt"
287 msgstr "Janet Hunt"
288
289 #: ../cutscenes/credits.txt:74
290 msgid "Juan Pablo Tamayo"
291 msgstr "Juan Pablo Tamayo"
292
293 #: ../cutscenes/credits.txt:75
294 msgid "losine"
295 msgstr "losine"
296
297 #: ../cutscenes/credits.txt:76
298 msgid "Marc Tormo i Bochaca"
299 msgstr ""
300
301 #: ../cutscenes/credits.txt:77
302 msgid "Michael Papageorgiou"
303 msgstr "Michael Papageorgiou"
304
305 #: ../cutscenes/credits.txt:78
306 msgid "Mikhail Karalevich"
307 msgstr "Mikhail Karalevich"
308
309 #: ../cutscenes/credits.txt:79
310 msgid "Miro Jánošík"
311 msgstr "Miro Jánošík"
312
313 #: ../cutscenes/credits.txt:80
314 msgid "Mykola Franchuk"
315 msgstr ""
316
317 #: ../cutscenes/credits.txt:81
318 msgid "MOB2"
319 msgstr "MOB2"
320
321 #: ../cutscenes/credits.txt:82
322 msgid "Morgan Strauss"
323 msgstr "Morgan Strauss"
324
325 #: ../cutscenes/credits.txt:83
326 msgid "Nea Retrogamer"
327 msgstr "Nea Retrogamer"
328
329 #: ../cutscenes/credits.txt:84
330 msgid "Nguyễn Gia Phong"
331 msgstr ""
332
333 #: ../cutscenes/credits.txt:85
334 msgid "Nikita Vanku"
335 msgstr "Nikita Vanku"
336
337 #: ../cutscenes/credits.txt:86
338 msgid "Paul Wortmann"
339 msgstr "Paul Wortmann"
340
341 #: ../cutscenes/credits.txt:87
342 msgid "Pawel Puszczynski"
343 msgstr "Paweł Puszczyński"
344
345 #: ../cutscenes/credits.txt:88
346 msgid "Quentin Stievenart"
347 msgstr "Quentin Stievenart"
348
349 #: ../cutscenes/credits.txt:89
350 msgid "Rui"
351 msgstr "Rui"
352
353 #: ../cutscenes/credits.txt:90
354 msgid "Sergey Basalaev"
355 msgstr "Sergey Basalaev"
356
357 #: ../cutscenes/credits.txt:91
358 msgid "Sergiy Borodych"
359 msgstr "Sergiy Borodych"
360
361 #: ../cutscenes/credits.txt:93
362 msgid "Stefano Peris"
363 msgstr "Stefano Peris"
364
365 #: ../cutscenes/credits.txt:94
366 msgid "sujiniku"
367 msgstr "sujiniku"
368
369 #: ../cutscenes/credits.txt:95
370 msgid "Thomas Glamsch"
371 msgstr "Thomas Glamsch"
372
373 #: ../cutscenes/credits.txt:96
374 msgid "Timo Sievänen"
375 msgstr "Timo Sievänen"
376
377 #: ../cutscenes/credits.txt:97
378 msgid "Vicente Monteiro"
379 msgstr ""
380
381 #: ../cutscenes/credits.txt:98
382 msgid "Wuzzy2"
383 msgstr "Wuzzy2"
384
385 #: ../cutscenes/credits.txt:99
386 msgid "Yannis Anthymidis"
387 msgstr "Yannis Anthymidis"
388
389 #: ../cutscenes/credits.txt:100
390 msgid "Zmicer Turok"
391 msgstr ""
392
393 #: ../cutscenes/credits.txt:103
110 #: ../cutscenes/credits.txt:108
394111 msgid "Distributors"
395112 msgstr "Dystrybutorzy"
396113
397 #: ../cutscenes/credits.txt:105
398 msgid "Ablu"
399 msgstr "Ablu"
400
401 #: ../cutscenes/credits.txt:106
402 msgid "Feillyne"
403 msgstr "Feillyne"
404
405 #: ../cutscenes/credits.txt:107
406 msgid "Jan-Hendrik Peters"
407 msgstr "Jan-Hendrik Peters"
408
409 #: ../cutscenes/credits.txt:109
410 msgid "miffe"
411 msgstr "miffe"
412
413 #: ../cutscenes/credits.txt:112
114 #: ../cutscenes/credits.txt:117
414115 msgid "Special Thanks"
415116 msgstr "Specjalne podziękowania"
416117
417 #: ../cutscenes/credits.txt:116
118 #: ../cutscenes/credits.txt:121
418119 msgid "For giving constant feedback and testing:"
419120 msgstr "Za nieustające wsparcie i testowanie:"
420121
421 #: ../cutscenes/credits.txt:117
422 msgid "Bart Kelsey"
423 msgstr "Bart Kelsey"
424
425 #: ../cutscenes/credits.txt:118
122 #: ../cutscenes/credits.txt:123
426123 msgid "The community at OpenGameArt"
427124 msgstr "Społeczność OpenGameArt"
428125
429 #: ../cutscenes/credits.txt:122
126 #: ../cutscenes/credits.txt:127
430127 msgid "For Tiled and the Flare map exporter:"
431128 msgstr "Za Tiled i eksporter map Flare:"
432
433 #: ../cutscenes/credits.txt:123
434 msgid "Thorbjørn Lindeijer"
435 msgstr "Thorbjørn Lindeijer"
436
437 #: ../cutscenes/credits.txt:125
438 msgid "Ranie Jade Ramiso"
439 msgstr "Ranie Jade Ramiso"
55 msgstr ""
66 "Project-Id-Version: PACKAGE VERSION\n"
77 "Report-Msgid-Bugs-To: \n"
8 "POT-Creation-Date: 2018-11-17 21:50+\n"
8 "POT-Creation-Date: 2021-05-23 20:34+\n"
99 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
1010 "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
1111 "Language-Team: LANGUAGE <LL@li.org>\n"
8686 msgid "Lead Programmers"
8787 msgstr ""
8888
89 #: ../cutscenes/credits.txt:12
90 msgid "Clint Bellanger"
91 msgstr ""
92
93 #: ../cutscenes/credits.txt:13
94 msgid "Henrik Andersson"
95 msgstr ""
96
97 #: ../cutscenes/credits.txt:14
98 msgid "Igor Paliychuk"
99 msgstr ""
100
101 #: ../cutscenes/credits.txt:15
102 msgid "Justin Jacobs"
103 msgstr ""
104
105 #: ../cutscenes/credits.txt:16
106 msgid "Stefan Beller"
107 msgstr ""
108
109 #: ../cutscenes/credits.txt:17
110 msgid "Thane Brimhall"
111 msgstr ""
112
11389 #: ../cutscenes/credits.txt:20
11490 msgid "Programmers"
11591 msgstr ""
11692
117 #: ../cutscenes/credits.txt:22
118 msgid "Andrew Engelbrecht"
119 msgstr ""
120
121 #: ../cutscenes/credits.txt:23
122 msgid "Anton Golov"
123 msgstr ""
124
125 #: ../cutscenes/credits.txt:24
126 msgid "Artur Rojek"
127 msgstr ""
128
129 #: ../cutscenes/credits.txt:25
130 msgid "blazindragon"
131 msgstr ""
132
133 #: ../cutscenes/credits.txt:26
134 msgid "Bonbadil"
135 msgstr ""
136
137 #: ../cutscenes/credits.txt:27
138 msgid "Chris Oelmueller"
139 msgstr ""
140
141 #: ../cutscenes/credits.txt:28
142 msgid "David Bariod"
143 msgstr ""
144
145 #: ../cutscenes/credits.txt:29
146 msgid "Daniel Santos"
147 msgstr ""
148
149 #: ../cutscenes/credits.txt:30
150 msgid "Gallaecio"
151 msgstr ""
152
153 #: ../cutscenes/credits.txt:31
154 msgid "Joseph Bleu"
155 msgstr ""
156
157 #: ../cutscenes/credits.txt:32
158 msgid "Juan PabloTamayo"
159 msgstr ""
160
161 #: ../cutscenes/credits.txt:33
162 msgid "Kitano"
163 msgstr ""
164
165 #: ../cutscenes/credits.txt:34
166 msgid "Kyle Belanger"
167 msgstr ""
168
169 #: ../cutscenes/credits.txt:35
170 msgid "LongerDev"
171 msgstr ""
172
173 #: ../cutscenes/credits.txt:36
174 msgid "Manuel A. Fernandez Montecelo"
175 msgstr ""
176
177 #: ../cutscenes/credits.txt:37
178 msgid "Matthew Krohn"
179 msgstr ""
180
181 #: ../cutscenes/credits.txt:38
182 msgid "Nojan"
183 msgstr ""
184
185 #: ../cutscenes/credits.txt:39
186 msgid "Pavel Kirpichyov"
187 msgstr ""
188
189 #: ../cutscenes/credits.txt:40
190 msgid "runtime-x86"
191 msgstr ""
192
193 #: ../cutscenes/credits.txt:41
194 msgid "Ryan Dansie"
195 msgstr ""
196
197 #: ../cutscenes/credits.txt:44
93 #: ../cutscenes/credits.txt:49
19894 msgid "Default Art"
19995 msgstr ""
20096
201 #: ../cutscenes/credits.txt:49
97 #: ../cutscenes/credits.txt:54
20298 msgid "Translators"
20399 msgstr ""
204100
205 #: ../cutscenes/credits.txt:51
206 msgid "Ademaro"
207 msgstr ""
208
209 #: ../cutscenes/credits.txt:52
210 msgid "Adrian Chaves Fernandez"
211 msgstr ""
212
213 #: ../cutscenes/credits.txt:53
214 msgid "Andrea Ranaldi"
215 msgstr ""
216
217 #: ../cutscenes/credits.txt:54
218 msgid "Andreas Berheim Brudin"
219 msgstr ""
220
221 #: ../cutscenes/credits.txt:55
222 msgid "Bas Doodeman"
223 msgstr ""
224
225 #: ../cutscenes/credits.txt:57
226 msgid "Carlos Sanchez"
227 msgstr ""
228
229 #: ../cutscenes/credits.txt:59
230 msgid "Christoph J. Thompson"
231 msgstr ""
232
233 #: ../cutscenes/credits.txt:60
234 msgid "Denis Lysenko"
235 msgstr ""
236
237 #: ../cutscenes/credits.txt:61
238 msgid "Diego J. Romero López"
239 msgstr ""
240
241 #: ../cutscenes/credits.txt:62
242 msgid "dumaosen"
243 msgstr ""
244
245 #: ../cutscenes/credits.txt:63
246 msgid "Emil"
247 msgstr ""
248
249 #: ../cutscenes/credits.txt:64
250 msgid "Eric R"
251 msgstr ""
252
253 #: ../cutscenes/credits.txt:65
254 msgid "Evgen Pavlov"
255 msgstr ""
256
257 #: ../cutscenes/credits.txt:66
258 msgid "Fabio Loli"
259 msgstr ""
260
261 #: ../cutscenes/credits.txt:67
262 msgid "Gianfranco Del Borrello"
263 msgstr ""
264
265 #: ../cutscenes/credits.txt:68
266 msgid "Giovanni Dalla Torre"
267 msgstr ""
268
269 #: ../cutscenes/credits.txt:69
270 msgid "GunChleoc"
271 msgstr ""
272
273 #: ../cutscenes/credits.txt:70
274 msgid "Hans Joachim Desserud"
275 msgstr ""
276
277 #: ../cutscenes/credits.txt:71
278 msgid "hark34"
279 msgstr ""
280
281 #: ../cutscenes/credits.txt:73
282 msgid "Janet Hunt"
283 msgstr ""
284
285 #: ../cutscenes/credits.txt:74
286 msgid "Juan Pablo Tamayo"
287 msgstr ""
288
289 #: ../cutscenes/credits.txt:75
290 msgid "losine"
291 msgstr ""
292
293 #: ../cutscenes/credits.txt:76
294 msgid "Marc Tormo i Bochaca"
295 msgstr ""
296
297 #: ../cutscenes/credits.txt:77
298 msgid "Michael Papageorgiou"
299 msgstr ""
300
301 #: ../cutscenes/credits.txt:78
302 msgid "Mikhail Karalevich"
303 msgstr ""
304
305 #: ../cutscenes/credits.txt:79
306 msgid "Miro Jánošík"
307 msgstr ""
308
309 #: ../cutscenes/credits.txt:80
310 msgid "Mykola Franchuk"
311 msgstr ""
312
313 #: ../cutscenes/credits.txt:81
314 msgid "MOB2"
315 msgstr ""
316
317 #: ../cutscenes/credits.txt:82
318 msgid "Morgan Strauss"
319 msgstr ""
320
321 #: ../cutscenes/credits.txt:83
322 msgid "Nea Retrogamer"
323 msgstr ""
324
325 #: ../cutscenes/credits.txt:84
326 msgid "Nguyễn Gia Phong"
327 msgstr ""
328
329 #: ../cutscenes/credits.txt:85
330 msgid "Nikita Vanku"
331 msgstr ""
332
333 #: ../cutscenes/credits.txt:86
334 msgid "Paul Wortmann"
335 msgstr ""
336
337 #: ../cutscenes/credits.txt:87
338 msgid "Pawel Puszczynski"
339 msgstr ""
340
341 #: ../cutscenes/credits.txt:88
342 msgid "Quentin Stievenart"
343 msgstr ""
344
345 #: ../cutscenes/credits.txt:89
346 msgid "Rui"
347 msgstr ""
348
349 #: ../cutscenes/credits.txt:90
350 msgid "Sergey Basalaev"
351 msgstr ""
352
353 #: ../cutscenes/credits.txt:91
354 msgid "Sergiy Borodych"
355 msgstr ""
356
357 #: ../cutscenes/credits.txt:93
358 msgid "Stefano Peris"
359 msgstr ""
360
361 #: ../cutscenes/credits.txt:94
362 msgid "sujiniku"
363 msgstr ""
364
365 #: ../cutscenes/credits.txt:95
366 msgid "Thomas Glamsch"
367 msgstr ""
368
369 #: ../cutscenes/credits.txt:96
370 msgid "Timo Sievänen"
371 msgstr ""
372
373 #: ../cutscenes/credits.txt:97
374 msgid "Vicente Monteiro"
375 msgstr ""
376
377 #: ../cutscenes/credits.txt:98
378 msgid "Wuzzy2"
379 msgstr ""
380
381 #: ../cutscenes/credits.txt:99
382 msgid "Yannis Anthymidis"
383 msgstr ""
384
385 #: ../cutscenes/credits.txt:100
386 msgid "Zmicer Turok"
387 msgstr ""
388
389 #: ../cutscenes/credits.txt:103
101 #: ../cutscenes/credits.txt:118
390102 msgid "Distributors"
391103 msgstr ""
392104
393 #: ../cutscenes/credits.txt:105
394 msgid "Ablu"
395 msgstr ""
396
397 #: ../cutscenes/credits.txt:106
398 msgid "Feillyne"
399 msgstr ""
400
401 #: ../cutscenes/credits.txt:107
402 msgid "Jan-Hendrik Peters"
403 msgstr ""
404
405 #: ../cutscenes/credits.txt:109
406 msgid "miffe"
407 msgstr ""
408
409 #: ../cutscenes/credits.txt:112
105 #: ../cutscenes/credits.txt:127
410106 msgid "Special Thanks"
411107 msgstr ""
412108
413 #: ../cutscenes/credits.txt:116
109 #: ../cutscenes/credits.txt:131
414110 msgid "For giving constant feedback and testing:"
415111 msgstr ""
416112
417 #: ../cutscenes/credits.txt:117
418 msgid "Bart Kelsey"
419 msgstr ""
420
421 #: ../cutscenes/credits.txt:118
113 #: ../cutscenes/credits.txt:133
422114 msgid "The community at OpenGameArt"
423115 msgstr ""
424116
425 #: ../cutscenes/credits.txt:122
117 #: ../cutscenes/credits.txt:137
426118 msgid "For Tiled and the Flare map exporter:"
427119 msgstr ""
428120
429 #: ../cutscenes/credits.txt:123
430 msgid "Thorbjørn Lindeijer"
431 msgstr ""
432
433 #: ../cutscenes/credits.txt:125
434 msgid "Ranie Jade Ramiso"
435 msgstr ""
436
88 msgstr ""
99 "Project-Id-Version: PACKAGE VERSION\n"
1010 "Report-Msgid-Bugs-To: \n"
11 "POT-Creation-Date: 2018-11-14 00:57+\n"
11 "POT-Creation-Date: 2019-07-29 09:34+\n"
1212 "PO-Revision-Date: 2018-03-28 19:16+0000\n"
1313 "Last-Translator: Rui <xymarior@yandex.com>, 2018\n"
1414 "Language-Team: Portuguese (https://www.transifex.com/flareorg/teams/84925/pt/)\n"
9191 msgid "Lead Programmers"
9292 msgstr "Programadores Principais"
9393
94 #: ../cutscenes/credits.txt:12
95 msgid "Clint Bellanger"
96 msgstr "Clint Bellanger"
97
98 #: ../cutscenes/credits.txt:13
99 msgid "Henrik Andersson"
100 msgstr "Henrik Andersson"
101
102 #: ../cutscenes/credits.txt:14
103 msgid "Igor Paliychuk"
104 msgstr "Igor Paliychuk"
105
106 #: ../cutscenes/credits.txt:15
107 msgid "Justin Jacobs"
108 msgstr "Justin Jacobs"
109
110 #: ../cutscenes/credits.txt:16
111 msgid "Stefan Beller"
112 msgstr "Stefan Beller"
113
114 #: ../cutscenes/credits.txt:17
115 msgid "Thane Brimhall"
116 msgstr "Thane Brimhall"
117
11894 #: ../cutscenes/credits.txt:20
11995 msgid "Programmers"
12096 msgstr "Programadores"
121
122 #: ../cutscenes/credits.txt:22
123 msgid "Andrew Engelbrecht"
124 msgstr "Andrew Engelbrecht"
125
126 #: ../cutscenes/credits.txt:23
127 msgid "Anton Golov"
128 msgstr "Anton Golov"
129
130 #: ../cutscenes/credits.txt:24
131 msgid "Artur Rojek"
132 msgstr "Artur Rojek"
133
134 #: ../cutscenes/credits.txt:25
135 msgid "blazindragon"
136 msgstr "blazindragon"
137
138 #: ../cutscenes/credits.txt:26
139 msgid "Bonbadil"
140 msgstr "Bonbadil"
141
142 #: ../cutscenes/credits.txt:27
143 msgid "Chris Oelmueller"
144 msgstr "Chris Oelmueller"
145
146 #: ../cutscenes/credits.txt:28
147 msgid "David Bariod"
148 msgstr "David Bariod"
149
150 #: ../cutscenes/credits.txt:29
151 msgid "Daniel Santos"
152 msgstr "Daniel Santos"
153
154 #: ../cutscenes/credits.txt:30
155 msgid "Gallaecio"
156 msgstr "Gallaecio"
157
158 #: ../cutscenes/credits.txt:31
159 msgid "Joseph Bleu"
160 msgstr "Joseph Bleu"
161
162 #: ../cutscenes/credits.txt:32
163 msgid "Juan PabloTamayo"
164 msgstr "Juan PabloTamayo"
165
166 #: ../cutscenes/credits.txt:33
167 msgid "Kitano"
168 msgstr "Kitano"
169
170 #: ../cutscenes/credits.txt:34
171 msgid "Kyle Belanger"
172 msgstr "Kyle Belanger"
173
174 #: ../cutscenes/credits.txt:35
175 msgid "LongerDev"
176 msgstr "LongerDev"
177
178 #: ../cutscenes/credits.txt:36
179 msgid "Manuel A. Fernandez Montecelo"
180 msgstr "Manuel A. Fernandez Montecelo"
181
182 #: ../cutscenes/credits.txt:37
183 msgid "Matthew Krohn"
184 msgstr "Matthew Krohn"
185
186 #: ../cutscenes/credits.txt:38
187 msgid "Nojan"
188 msgstr "Nojan"
189
190 #: ../cutscenes/credits.txt:39
191 msgid "Pavel Kirpichyov"
192 msgstr "Pavel Kirpichyov"
193
194 #: ../cutscenes/credits.txt:40
195 msgid "runtime-x86"
196 msgstr "runtime-x86"
197
198 #: ../cutscenes/credits.txt:41
199 msgid "Ryan Dansie"
200 msgstr "Ryan Dansie"
20197
20298 #: ../cutscenes/credits.txt:44
20399 msgid "Default Art"
207103 msgid "Translators"
208104 msgstr "Tradutores"
209105
210 #: ../cutscenes/credits.txt:51
211 msgid "Ademaro"
212 msgstr "Ademaro"
213
214 #: ../cutscenes/credits.txt:52
215 msgid "Adrian Chaves Fernandez"
216 msgstr "Adrian Chaves Fernandez"
217
218 #: ../cutscenes/credits.txt:53
219 msgid "Andrea Ranaldi"
220 msgstr "Andrea Ranaldi"
221
222 #: ../cutscenes/credits.txt:54
223 msgid "Andreas Berheim Brudin"
224 msgstr "Andreas Berheim Brudin"
225
226 #: ../cutscenes/credits.txt:55
227 msgid "Bas Doodeman"
228 msgstr "Bas Doodeman"
229
230 #: ../cutscenes/credits.txt:57
231 msgid "Carlos Sanchez"
232 msgstr "Carlos Sanchez"
233
234 #: ../cutscenes/credits.txt:59
235 msgid "Christoph J. Thompson"
236 msgstr "Christoph J. Thompson"
237
238 #: ../cutscenes/credits.txt:60
239 msgid "Denis Lysenko"
240 msgstr "Denis Lysenko"
241
242 #: ../cutscenes/credits.txt:61
243 msgid "Diego J. Romero López"
244 msgstr "Diego J. Romero López"
245
246 #: ../cutscenes/credits.txt:62
247 msgid "dumaosen"
248 msgstr "dumaosen"
249
250 #: ../cutscenes/credits.txt:63
251 msgid "Emil"
252 msgstr "Emil"
253
254 #: ../cutscenes/credits.txt:64
255 msgid "Eric R"
256 msgstr "Eric R"
257
258 #: ../cutscenes/credits.txt:65
259 msgid "Evgen Pavlov"
260 msgstr "Evgen Pavlov"
261
262 #: ../cutscenes/credits.txt:66
263 msgid "Fabio Loli"
264 msgstr "Fabio Loli"
265
266 #: ../cutscenes/credits.txt:67
267 msgid "Gianfranco Del Borrello"
268 msgstr "Gianfranco Del Borrello"
269
270 #: ../cutscenes/credits.txt:68
271 msgid "Giovanni Dalla Torre"
272 msgstr "Giovanni Dalla Torre"
273
274 #: ../cutscenes/credits.txt:69
275 msgid "GunChleoc"
276 msgstr "GunChleoc"
277
278 #: ../cutscenes/credits.txt:70
279 msgid "Hans Joachim Desserud"
280 msgstr "Hans Joachim Desserud"
281
282 #: ../cutscenes/credits.txt:71
283 msgid "hark34"
284 msgstr "hark34"
285
286 #: ../cutscenes/credits.txt:73
287 msgid "Janet Hunt"
288 msgstr "Janet Hunt"
289
290 #: ../cutscenes/credits.txt:74
291 msgid "Juan Pablo Tamayo"
292 msgstr "Juan Pablo Tamayo"
293
294 #: ../cutscenes/credits.txt:75
295 msgid "losine"
296 msgstr "losine"
297
298 #: ../cutscenes/credits.txt:76
299 msgid "Marc Tormo i Bochaca"
300 msgstr "Marc Tormo i Bochaca"
301
302 #: ../cutscenes/credits.txt:77
303 msgid "Michael Papageorgiou"
304 msgstr "Michael Papageorgiou"
305
306 #: ../cutscenes/credits.txt:78
307 msgid "Mikhail Karalevich"
308 msgstr "Mikhail Karalevich"
309
310 #: ../cutscenes/credits.txt:79
311 msgid "Miro Jánošík"
312 msgstr "Miro Jánošík"
313
314 #: ../cutscenes/credits.txt:80
315 msgid "Mykola Franchuk"
316 msgstr "Mykola Franchuk"
317
318 #: ../cutscenes/credits.txt:81
319 msgid "MOB2"
320 msgstr "MOB2"
321
322 #: ../cutscenes/credits.txt:82
323 msgid "Morgan Strauss"
324 msgstr "Morgan Strauss"
325
326 #: ../cutscenes/credits.txt:83
327 msgid "Nea Retrogamer"
328 msgstr "Nea Retrogamer"
329
330 #: ../cutscenes/credits.txt:84
331 msgid "Nguyễn Gia Phong"
332 msgstr "Nguyễn Gia Phong"
333
334 #: ../cutscenes/credits.txt:85
335 msgid "Nikita Vanku"
336 msgstr "Nikita Vanku"
337
338 #: ../cutscenes/credits.txt:86
339 msgid "Paul Wortmann"
340 msgstr "Paul Wortmann"
341
342 #: ../cutscenes/credits.txt:87
343 msgid "Pawel Puszczynski"
344 msgstr "Pawel Puszczynski"
345
346 #: ../cutscenes/credits.txt:88
347 msgid "Quentin Stievenart"
348 msgstr "Quentin Stievenart"
349
350 #: ../cutscenes/credits.txt:89
351 msgid "Rui"
352 msgstr "Rui (xendez)"
353
354 #: ../cutscenes/credits.txt:90
355 msgid "Sergey Basalaev"
356 msgstr "Sergey Basalaev"
357
358 #: ../cutscenes/credits.txt:91
359 msgid "Sergiy Borodych"
360 msgstr "Sergiy Borodych"
361
362 #: ../cutscenes/credits.txt:93
363 msgid "Stefano Peris"
364 msgstr "Stefano Peris"
365
366 #: ../cutscenes/credits.txt:94
367 msgid "sujiniku"
368 msgstr "sujiniku"
369
370 #: ../cutscenes/credits.txt:95
371 msgid "Thomas Glamsch"
372 msgstr "Thomas Glamsch"
373
374 #: ../cutscenes/credits.txt:96
375 msgid "Timo Sievänen"
376 msgstr "Timo Sievänen"
377
378 #: ../cutscenes/credits.txt:97
379 msgid "Vicente Monteiro"
380 msgstr "Vicente Monteiro"
381
382 #: ../cutscenes/credits.txt:98
383 msgid "Wuzzy2"
384 msgstr "Wuzzy2"
385
386 #: ../cutscenes/credits.txt:99
387 msgid "Yannis Anthymidis"
388 msgstr "Yannis Anthymidis"
389
390 #: ../cutscenes/credits.txt:100
391 msgid "Zmicer Turok"
392 msgstr "Zmicer Turok"
393
394 #: ../cutscenes/credits.txt:103
106 #: ../cutscenes/credits.txt:108
395107 msgid "Distributors"
396108 msgstr "Distribuidores"
397109
398 #: ../cutscenes/credits.txt:105
399 msgid "Ablu"
400 msgstr "Ablu"
401
402 #: ../cutscenes/credits.txt:106
403 msgid "Feillyne"
404 msgstr "Feillyne"
405
406 #: ../cutscenes/credits.txt:107
407 msgid "Jan-Hendrik Peters"
408 msgstr "Jan-Hendrik Peters"
409
410 #: ../cutscenes/credits.txt:109
411 msgid "miffe"
412 msgstr "miffe"
413
414 #: ../cutscenes/credits.txt:112
110 #: ../cutscenes/credits.txt:117
415111 msgid "Special Thanks"
416112 msgstr "Agradecimento Especial"
417113
418 #: ../cutscenes/credits.txt:116
114 #: ../cutscenes/credits.txt:121
419115 msgid "For giving constant feedback and testing:"
420116 msgstr "Por fornecer opiniões constantes e testes:"
421117
422 #: ../cutscenes/credits.txt:117
423 msgid "Bart Kelsey"
424 msgstr "Bart Kelsey"
425
426 #: ../cutscenes/credits.txt:118
118 #: ../cutscenes/credits.txt:123
427119 msgid "The community at OpenGameArt"
428120 msgstr "A comunidade do OpenGameArt"
429121
430 #: ../cutscenes/credits.txt:122
122 #: ../cutscenes/credits.txt:127
431123 msgid "For Tiled and the Flare map exporter:"
432124 msgstr "Pelo Tiled e o exportador de mapas do Flare:"
433
434 #: ../cutscenes/credits.txt:123
435 msgid "Thorbjørn Lindeijer"
436 msgstr "Thorbjørn Lindeijer"
437
438 #: ../cutscenes/credits.txt:125
439 msgid "Ranie Jade Ramiso"
440 msgstr "Ranie Jade Ramiso"
33 # FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
44 # Translators:
55 # Vicente Monteiro, 2018
6 # Rui <xymarior@yandex.com>, 2018
76 #
87 msgid ""
98 msgstr ""
109 "Project-Id-Version: PACKAGE VERSION\n"
1110 "Report-Msgid-Bugs-To: \n"
12 "POT-Creation-Date: 2018-11-13 17:21+\n"
11 "POT-Creation-Date: 2019-07-29 09:34+\n"
1312 "PO-Revision-Date: 2018-03-28 19:16+0000\n"
14 "Last-Translator: Rui <xymarior@yandex.com>, 2018\n"
13 "Last-Translator: Vicente Monteiro, 2018\n"
1514 "Language-Team: Portuguese (Brazil) (https://www.transifex.com/flareorg/teams/84925/pt_BR/)\n"
1615 "MIME-Version: 1.0\n"
1716 "Content-Type: text/plain; charset=UTF-8\n"
9190 msgid "Lead Programmers"
9291 msgstr "Programadores Principais"
9392
94 #: ../cutscenes/credits.txt:12
95 msgid "Clint Bellanger"
96 msgstr "Clint Bellanger"
97
98 #: ../cutscenes/credits.txt:13
99 msgid "Henrik Andersson"
100 msgstr "Henrik Andersson"
101
102 #: ../cutscenes/credits.txt:14
103 msgid "Igor Paliychuk"
104 msgstr "Igor Paliychuk"
105
106 #: ../cutscenes/credits.txt:15
107 msgid "Justin Jacobs"
108 msgstr "Justin Jacobs"
109
110 #: ../cutscenes/credits.txt:16
111 msgid "Stefan Beller"
112 msgstr "Stefan Beller"
113
114 #: ../cutscenes/credits.txt:17
115 msgid "Thane Brimhall"
116 msgstr "Thane Brimhall"
117
11893 #: ../cutscenes/credits.txt:20
11994 msgid "Programmers"
12095 msgstr "Programadores"
121
122 #: ../cutscenes/credits.txt:22
123 msgid "Andrew Engelbrecht"
124 msgstr "Andrew Engelbrecht"
125
126 #: ../cutscenes/credits.txt:23
127 msgid "Anton Golov"
128 msgstr "Anton Golov"
129
130 #: ../cutscenes/credits.txt:24
131 msgid "Artur Rojek"
132 msgstr "Artur Rojek"
133
134 #: ../cutscenes/credits.txt:25
135 msgid "blazindragon"
136 msgstr "blazindragon"
137
138 #: ../cutscenes/credits.txt:26
139 msgid "Bonbadil"
140 msgstr "Bonbadil"
141
142 #: ../cutscenes/credits.txt:27
143 msgid "Chris Oelmueller"
144 msgstr "Chris Oelmueller"
145
146 #: ../cutscenes/credits.txt:28
147 msgid "David Bariod"
148 msgstr "David Bariod"
149
150 #: ../cutscenes/credits.txt:29
151 msgid "Daniel Santos"
152 msgstr "Daniel Santos"
153
154 #: ../cutscenes/credits.txt:30
155 msgid "Gallaecio"
156 msgstr "Gallaecio"
157
158 #: ../cutscenes/credits.txt:31
159 msgid "Joseph Bleu"
160 msgstr "Joseph Bleu"
161
162 #: ../cutscenes/credits.txt:32
163 msgid "Juan PabloTamayo"
164 msgstr "Juan PabloTamayo"
165
166 #: ../cutscenes/credits.txt:33
167 msgid "Kitano"
168 msgstr "Kitano"
169
170 #: ../cutscenes/credits.txt:34
171 msgid "Kyle Belanger"
172 msgstr "Kyle Belanger"
173
174 #: ../cutscenes/credits.txt:35
175 msgid "LongerDev"
176 msgstr "LongerDev"
177
178 #: ../cutscenes/credits.txt:36
179 msgid "Manuel A. Fernandez Montecelo"
180 msgstr "Manuel A. Fernandez Montecelo"
181
182 #: ../cutscenes/credits.txt:37
183 msgid "Matthew Krohn"
184 msgstr "Matthew Krohn"
185
186 #: ../cutscenes/credits.txt:38
187 msgid "Nojan"
188 msgstr "Nojan"
189
190 #: ../cutscenes/credits.txt:39
191 msgid "Pavel Kirpichyov"
192 msgstr "Pavel Kirpichyov"
193
194 #: ../cutscenes/credits.txt:40
195 msgid "runtime-x86"
196 msgstr "runtime-x86"
197
198 #: ../cutscenes/credits.txt:41
199 msgid "Ryan Dansie"
200 msgstr "Ryan Dansie"
20196
20297 #: ../cutscenes/credits.txt:44
20398 msgid "Default Art"
207102 msgid "Translators"
208103 msgstr "Tradutores"
209104
210 #: ../cutscenes/credits.txt:51
211 msgid "Ademaro"
212 msgstr "Ademaro"
213
214 #: ../cutscenes/credits.txt:52
215 msgid "Adrian Chaves Fernandez"
216 msgstr "Adrian Chaves Fernandez"
217
218 #: ../cutscenes/credits.txt:53
219 msgid "Andrea Ranaldi"
220 msgstr "Andrea Ranaldi"
221
222 #: ../cutscenes/credits.txt:54
223 msgid "Andreas Berheim Brudin"
224 msgstr "Andreas Berheim Brudin"
225
226 #: ../cutscenes/credits.txt:55
227 msgid "Bas Doodeman"
228 msgstr "Bas Doodeman"
229
230 #: ../cutscenes/credits.txt:57
231 msgid "Carlos Sanchez"
232 msgstr "Carlos Sanchez"
233
234 #: ../cutscenes/credits.txt:59
235 msgid "Christoph J. Thompson"
236 msgstr "Christoph J. Thompson"
237
238 #: ../cutscenes/credits.txt:60
239 msgid "Denis Lysenko"
240 msgstr "Denis Lysenko"
241
242 #: ../cutscenes/credits.txt:61
243 msgid "Diego J. Romero López"
244 msgstr "Diego J. Romero López"
245
246 #: ../cutscenes/credits.txt:62
247 msgid "dumaosen"
248 msgstr "dumaosen"
249
250 #: ../cutscenes/credits.txt:63
251 msgid "Emil"
252 msgstr "Emil"
253
254 #: ../cutscenes/credits.txt:64
255 msgid "Eric R"
256 msgstr "Eric R"
257
258 #: ../cutscenes/credits.txt:65
259 msgid "Evgen Pavlov"
260 msgstr "Evgen Pavlov"
261
262 #: ../cutscenes/credits.txt:66
263 msgid "Fabio Loli"
264 msgstr "Fabio Loli"
265
266 #: ../cutscenes/credits.txt:67
267 msgid "Gianfranco Del Borrello"
268 msgstr "Gianfranco Del Borrello"
269
270 #: ../cutscenes/credits.txt:68
271 msgid "Giovanni Dalla Torre"
272 msgstr "Giovanni Dalla Torre"
273
274 #: ../cutscenes/credits.txt:69
275 msgid "GunChleoc"
276 msgstr "GunChleoc"
277
278 #: ../cutscenes/credits.txt:70
279 msgid "Hans Joachim Desserud"
280 msgstr "Hans Joachim Desserud"
281
282 #: ../cutscenes/credits.txt:71
283 msgid "hark34"
284 msgstr "hark34"
285
286 #: ../cutscenes/credits.txt:73
287 msgid "Janet Hunt"
288 msgstr "Janet Hunt"
289
290 #: ../cutscenes/credits.txt:74
291 msgid "Juan Pablo Tamayo"
292 msgstr "Juan Pablo Tamayo"
293
294 #: ../cutscenes/credits.txt:75
295 msgid "losine"
296 msgstr "losine"
297
298 #: ../cutscenes/credits.txt:76
299 msgid "Marc Tormo i Bochaca"
300 msgstr ""
301
302 #: ../cutscenes/credits.txt:77
303 msgid "Michael Papageorgiou"
304 msgstr "Michael Papageorgiou"
305
306 #: ../cutscenes/credits.txt:78
307 msgid "Mikhail Karalevich"
308 msgstr "Mikhail Karalevich"
309
310 #: ../cutscenes/credits.txt:79
311 msgid "Miro Jánošík"
312 msgstr "Miro Jánošík"
313
314 #: ../cutscenes/credits.txt:80
315 msgid "Mykola Franchuk"
316 msgstr ""
317
318 #: ../cutscenes/credits.txt:81
319 msgid "MOB2"
320 msgstr "MOB2"
321
322 #: ../cutscenes/credits.txt:82
323 msgid "Morgan Strauss"
324 msgstr "Morgan Strauss"
325
326 #: ../cutscenes/credits.txt:83
327 msgid "Nea Retrogamer"
328 msgstr "Nea Retrogamer"
329
330 #: ../cutscenes/credits.txt:84
331 msgid "Nguyễn Gia Phong"
332 msgstr "Nguyễn Gia Phong"
333
334 #: ../cutscenes/credits.txt:85
335 msgid "Nikita Vanku"
336 msgstr "Nikita Vanku"
337
338 #: ../cutscenes/credits.txt:86
339 msgid "Paul Wortmann"
340 msgstr "Paul Wortmann"
341
342 #: ../cutscenes/credits.txt:87
343 msgid "Pawel Puszczynski"
344 msgstr "Pawel Puszczynski"
345
346 #: ../cutscenes/credits.txt:88
347 msgid "Quentin Stievenart"
348 msgstr "Quentin Stievenart"
349
350 #: ../cutscenes/credits.txt:89
351 msgid "Rui"
352 msgstr "Rui"
353
354 #: ../cutscenes/credits.txt:90
355 msgid "Sergey Basalaev"
356 msgstr "Sergey Basalaev"
357
358 #: ../cutscenes/credits.txt:91
359 msgid "Sergiy Borodych"
360 msgstr "Sergiy Borodych"
361
362 #: ../cutscenes/credits.txt:93
363 msgid "Stefano Peris"
364 msgstr "Stefano Peris"
365
366 #: ../cutscenes/credits.txt:94
367 msgid "sujiniku"
368 msgstr "sujiniku"
369
370 #: ../cutscenes/credits.txt:95
371 msgid "Thomas Glamsch"
372 msgstr "Thomas Glamsch"
373
374 #: ../cutscenes/credits.txt:96
375 msgid "Timo Sievänen"
376 msgstr "Timo Sievänen"
377
378 #: ../cutscenes/credits.txt:97
379 msgid "Vicente Monteiro"
380 msgstr "Vicente Monteiro"
381
382 #: ../cutscenes/credits.txt:98
383 msgid "Wuzzy2"
384 msgstr "Wuzzy2"
385
386 #: ../cutscenes/credits.txt:99
387 msgid "Yannis Anthymidis"
388 msgstr "Yannis Anthymidis"
389
390 #: ../cutscenes/credits.txt:100
391 msgid "Zmicer Turok"
392 msgstr "Zmicer Turok"
393
394 #: ../cutscenes/credits.txt:103
105 #: ../cutscenes/credits.txt:108
395106 msgid "Distributors"
396107 msgstr "Distribuidores"
397108
398 #: ../cutscenes/credits.txt:105
399 msgid "Ablu"
400 msgstr "Ablu"
401
402 #: ../cutscenes/credits.txt:106
403 msgid "Feillyne"
404 msgstr "Feillyne"
405
406 #: ../cutscenes/credits.txt:107
407 msgid "Jan-Hendrik Peters"
408 msgstr "Jan-Hendrik Peters"
409
410 #: ../cutscenes/credits.txt:109
411 msgid "miffe"
412 msgstr "miffe"
413
414 #: ../cutscenes/credits.txt:112
109 #: ../cutscenes/credits.txt:117
415110 msgid "Special Thanks"
416111 msgstr "Agradecimento Especial"
417112
418 #: ../cutscenes/credits.txt:116
113 #: ../cutscenes/credits.txt:121
419114 msgid "For giving constant feedback and testing:"
420115 msgstr "Por constantes sugestões e testes:"
421116
422 #: ../cutscenes/credits.txt:117
423 msgid "Bart Kelsey"
424 msgstr "Bart Kelsey"
425
426 #: ../cutscenes/credits.txt:118
117 #: ../cutscenes/credits.txt:123
427118 msgid "The community at OpenGameArt"
428119 msgstr "A comunidade do OpenGameArt:"
429120
430 #: ../cutscenes/credits.txt:122
121 #: ../cutscenes/credits.txt:127
431122 msgid "For Tiled and the Flare map exporter:"
432123 msgstr "Pelo Tiled editor e exportador de mapas do Flare:"
433
434 #: ../cutscenes/credits.txt:123
435 msgid "Thorbjørn Lindeijer"
436 msgstr "Thorbjørn Lindeijer"
437
438 #: ../cutscenes/credits.txt:125
439 msgid "Ranie Jade Ramiso"
440 msgstr "Ranie Jade Ramiso"
22 #
33 # FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
44 # Translators:
5 # Justin Jacobs <jajdorkster@gmail.com>, 2018
5 # Justin Jacobs <jajdorkster@gmail.com>, 2019
66 #
77 msgid ""
88 msgstr ""
99 "Project-Id-Version: PACKAGE VERSION\n"
1010 "Report-Msgid-Bugs-To: \n"
11 "POT-Creation-Date: 2018-11-13 17:21+\n"
11 "POT-Creation-Date: 2019-07-29 09:34+\n"
1212 "PO-Revision-Date: 2018-03-28 19:16+0000\n"
13 "Last-Translator: Justin Jacobs <jajdorkster@gmail.com>, 2018\n"
13 "Last-Translator: Justin Jacobs <jajdorkster@gmail.com>, 2019\n"
1414 "Language-Team: Russian (https://www.transifex.com/flareorg/teams/84925/ru/)\n"
1515 "MIME-Version: 1.0\n"
1616 "Content-Type: text/plain; charset=UTF-8\n"
4040
4141 #: ../engine/damage_types.txt:4
4242 msgid "Increases the damage done with swords and other melee weapons."
43 msgstr ""
43 msgstr "Увеличивает урон мечом и другим оружием ближнего боя."
4444
4545 #: ../engine/damage_types.txt:5
4646 msgid "Melee Damage Min"
47 msgstr "Мин. Урон"
47 msgstr "Мин. Урон ближнего боя"
4848
4949 #: ../engine/damage_types.txt:6
5050 msgid "Melee Damage Max"
51 msgstr "Макс. Урон"
51 msgstr "Макс. Урон ближнего боя"
5252
5353 #: ../engine/damage_types.txt:12
5454 msgid "Ranged Damage"
5656
5757 #: ../engine/damage_types.txt:13
5858 msgid "Increases the damage done with bows and other ranged weapons."
59 msgstr ""
59 msgstr "Увеличивает урон из лука и другим оружием дальнего боя."
6060
6161 #: ../engine/damage_types.txt:14
6262 msgid "Ranged Damage Min"
63 msgstr "Мин. Урон"
63 msgstr "Мин. Урон дальнего боя"
6464
6565 #: ../engine/damage_types.txt:15
6666 msgid "Ranged Damage Max"
67 msgstr "Макс. Урон"
67 msgstr "Макс. Урон дальнего боя"
6868
6969 #: ../engine/damage_types.txt:21
7070 msgid "Mental Damage"
7272
7373 #: ../engine/damage_types.txt:22
7474 msgid "Increases the damage done with staves and other mental weapons."
75 msgstr ""
75 msgstr "Увеличивает урон посохом и другим оружием ментального урона."
7676
7777 #: ../engine/damage_types.txt:23
7878 msgid "Mental Damage Min"
79 msgstr "Мин. Урон"
79 msgstr "Мин. Ментальный урон"
8080
8181 #: ../engine/damage_types.txt:24
8282 msgid "Mental Damage Max"
83 msgstr "Макс. Урон"
83 msgstr "Макс. Ментальный урон"
8484
8585 #: ../cutscenes/credits.txt:7
8686 msgid "Flare Engine Credits"
9090 msgid "Lead Programmers"
9191 msgstr "Ведущие Программисты"
9292
93 #: ../cutscenes/credits.txt:12
94 msgid "Clint Bellanger"
95 msgstr "Clint Bellanger"
96
97 #: ../cutscenes/credits.txt:13
98 msgid "Henrik Andersson"
99 msgstr "Henrik Andersson"
100
101 #: ../cutscenes/credits.txt:14
102 msgid "Igor Paliychuk"
103 msgstr "Igor Paliychuk"
104
105 #: ../cutscenes/credits.txt:15
106 msgid "Justin Jacobs"
107 msgstr "Justin Jacobs"
108
109 #: ../cutscenes/credits.txt:16
110 msgid "Stefan Beller"
111 msgstr "Stefan Beller"
112
113 #: ../cutscenes/credits.txt:17
114 msgid "Thane Brimhall"
115 msgstr "Thane Brimhall"
116
11793 #: ../cutscenes/credits.txt:20
11894 msgid "Programmers"
11995 msgstr "Программисты"
120
121 #: ../cutscenes/credits.txt:22
122 msgid "Andrew Engelbrecht"
123 msgstr ""
124
125 #: ../cutscenes/credits.txt:23
126 msgid "Anton Golov"
127 msgstr "Anton Golov"
128
129 #: ../cutscenes/credits.txt:24
130 msgid "Artur Rojek"
131 msgstr "Artur Rojek"
132
133 #: ../cutscenes/credits.txt:25
134 msgid "blazindragon"
135 msgstr "blazindragon"
136
137 #: ../cutscenes/credits.txt:26
138 msgid "Bonbadil"
139 msgstr "Bonbadil"
140
141 #: ../cutscenes/credits.txt:27
142 msgid "Chris Oelmueller"
143 msgstr "Chris Oelmueller"
144
145 #: ../cutscenes/credits.txt:28
146 msgid "David Bariod"
147 msgstr "David Bariod"
148
149 #: ../cutscenes/credits.txt:29
150 msgid "Daniel Santos"
151 msgstr "Daniel Santos"
152
153 #: ../cutscenes/credits.txt:30
154 msgid "Gallaecio"
155 msgstr "Gallaecio"
156
157 #: ../cutscenes/credits.txt:31
158 msgid "Joseph Bleu"
159 msgstr "Joseph Bleu"
160
161 #: ../cutscenes/credits.txt:32
162 msgid "Juan PabloTamayo"
163 msgstr "Juan PabloTamayo"
164
165 #: ../cutscenes/credits.txt:33
166 msgid "Kitano"
167 msgstr "Kitano"
168
169 #: ../cutscenes/credits.txt:34
170 msgid "Kyle Belanger"
171 msgstr "Kyle Belanger"
172
173 #: ../cutscenes/credits.txt:35
174 msgid "LongerDev"
175 msgstr "LongerDev"
176
177 #: ../cutscenes/credits.txt:36
178 msgid "Manuel A. Fernandez Montecelo"
179 msgstr "Manuel A. Fernandez Montecelo"
180
181 #: ../cutscenes/credits.txt:37
182 msgid "Matthew Krohn"
183 msgstr "Matthew Krohn"
184
185 #: ../cutscenes/credits.txt:38
186 msgid "Nojan"
187 msgstr "Nojan"
188
189 #: ../cutscenes/credits.txt:39
190 msgid "Pavel Kirpichyov"
191 msgstr "Pavel Kirpichyov"
192
193 #: ../cutscenes/credits.txt:40
194 msgid "runtime-x86"
195 msgstr "runtime-x86"
196
197 #: ../cutscenes/credits.txt:41
198 msgid "Ryan Dansie"
199 msgstr "Ryan Dansie"
20096
20197 #: ../cutscenes/credits.txt:44
20298 msgid "Default Art"
206102 msgid "Translators"
207103 msgstr "Переводчики"
208104
209 #: ../cutscenes/credits.txt:51
210 msgid "Ademaro"
211 msgstr ""
212
213 #: ../cutscenes/credits.txt:52
214 msgid "Adrian Chaves Fernandez"
215 msgstr "Adrian Chaves Fernandez"
216
217 #: ../cutscenes/credits.txt:53
218 msgid "Andrea Ranaldi"
219 msgstr "Andrea Ranaldi"
220
221 #: ../cutscenes/credits.txt:54
222 msgid "Andreas Berheim Brudin"
223 msgstr "Andreas Berheim Brudin"
224
225 #: ../cutscenes/credits.txt:55
226 msgid "Bas Doodeman"
227 msgstr "Bas Doodeman"
228
229 #: ../cutscenes/credits.txt:57
230 msgid "Carlos Sanchez"
231 msgstr "Carlos Sanchez"
232
233 #: ../cutscenes/credits.txt:59
234 msgid "Christoph J. Thompson"
235 msgstr "Christoph J. Thompson"
236
237 #: ../cutscenes/credits.txt:60
238 msgid "Denis Lysenko"
239 msgstr ""
240
241 #: ../cutscenes/credits.txt:61
242 msgid "Diego J. Romero López"
243 msgstr ""
244
245 #: ../cutscenes/credits.txt:62
246 msgid "dumaosen"
247 msgstr ""
248
249 #: ../cutscenes/credits.txt:63
250 msgid "Emil"
251 msgstr ""
252
253 #: ../cutscenes/credits.txt:64
254 msgid "Eric R"
255 msgstr ""
256
257 #: ../cutscenes/credits.txt:65
258 msgid "Evgen Pavlov"
259 msgstr "Evgen Pavlov"
260
261 #: ../cutscenes/credits.txt:66
262 msgid "Fabio Loli"
263 msgstr ""
264
265 #: ../cutscenes/credits.txt:67
266 msgid "Gianfranco Del Borrello"
267 msgstr ""
268
269 #: ../cutscenes/credits.txt:68
270 msgid "Giovanni Dalla Torre"
271 msgstr "Giovanni Dalla Torre"
272
273 #: ../cutscenes/credits.txt:69
274 msgid "GunChleoc"
275 msgstr ""
276
277 #: ../cutscenes/credits.txt:70
278 msgid "Hans Joachim Desserud"
279 msgstr "Hans Joachim Desserud"
280
281 #: ../cutscenes/credits.txt:71
282 msgid "hark34"
283 msgstr ""
284
285 #: ../cutscenes/credits.txt:73
286 msgid "Janet Hunt"
287 msgstr ""
288
289 #: ../cutscenes/credits.txt:74
290 msgid "Juan Pablo Tamayo"
291 msgstr "Juan Pablo Tamayo"
292
293 #: ../cutscenes/credits.txt:75
294 msgid "losine"
295 msgstr "losine"
296
297 #: ../cutscenes/credits.txt:76
298 msgid "Marc Tormo i Bochaca"
299 msgstr ""
300
301 #: ../cutscenes/credits.txt:77
302 msgid "Michael Papageorgiou"
303 msgstr "Michael Papageorgiou"
304
305 #: ../cutscenes/credits.txt:78
306 msgid "Mikhail Karalevich"
307 msgstr "Mikhail Karalevich"
308
309 #: ../cutscenes/credits.txt:79
310 msgid "Miro Jánošík"
311 msgstr "Miro Jánošík"
312
313 #: ../cutscenes/credits.txt:80
314 msgid "Mykola Franchuk"
315 msgstr ""
316
317 #: ../cutscenes/credits.txt:81
318 msgid "MOB2"
319 msgstr ""
320
321 #: ../cutscenes/credits.txt:82
322 msgid "Morgan Strauss"
323 msgstr "Morgan Strauss"
324
325 #: ../cutscenes/credits.txt:83
326 msgid "Nea Retrogamer"
327 msgstr ""
328
329 #: ../cutscenes/credits.txt:84
330 msgid "Nguyễn Gia Phong"
331 msgstr ""
332
333 #: ../cutscenes/credits.txt:85
334 msgid "Nikita Vanku"
335 msgstr "Nikita Vanku"
336
337 #: ../cutscenes/credits.txt:86
338 msgid "Paul Wortmann"
339 msgstr "Paul Wortmann"
340
341 #: ../cutscenes/credits.txt:87
342 msgid "Pawel Puszczynski"
343 msgstr "Pawel Puszczynski"
344
345 #: ../cutscenes/credits.txt:88
346 msgid "Quentin Stievenart"
347 msgstr "Quentin Stievenart"
348
349 #: ../cutscenes/credits.txt:89
350 msgid "Rui"
351 msgstr ""
352
353 #: ../cutscenes/credits.txt:90
354 msgid "Sergey Basalaev"
355 msgstr "Sergey Basalaev"
356
357 #: ../cutscenes/credits.txt:91
358 msgid "Sergiy Borodych"
359 msgstr ""
360
361 #: ../cutscenes/credits.txt:93
362 msgid "Stefano Peris"
363 msgstr ""
364
365 #: ../cutscenes/credits.txt:94
366 msgid "sujiniku"
367 msgstr "sujiniku"
368
369 #: ../cutscenes/credits.txt:95
370 msgid "Thomas Glamsch"
371 msgstr "Thomas Glamsch"
372
373 #: ../cutscenes/credits.txt:96
374 msgid "Timo Sievänen"
375 msgstr "Timo Sievänen"
376
377 #: ../cutscenes/credits.txt:97
378 msgid "Vicente Monteiro"
379 msgstr ""
380
381 #: ../cutscenes/credits.txt:98
382 msgid "Wuzzy2"
383 msgstr "Wuzzy2"
384
385 #: ../cutscenes/credits.txt:99
386 msgid "Yannis Anthymidis"
387 msgstr "Yannis Anthymidis"
388
389 #: ../cutscenes/credits.txt:100
390 msgid "Zmicer Turok"
391 msgstr ""
392
393 #: ../cutscenes/credits.txt:103
105 #: ../cutscenes/credits.txt:108
394106 msgid "Distributors"
395107 msgstr "Распространители"
396108
397 #: ../cutscenes/credits.txt:105
398 msgid "Ablu"
399 msgstr "Ablu"
400
401 #: ../cutscenes/credits.txt:106
402 msgid "Feillyne"
403 msgstr "Feillyne"
404
405 #: ../cutscenes/credits.txt:107
406 msgid "Jan-Hendrik Peters"
407 msgstr "Jan-Hendrik Peters"
408
409 #: ../cutscenes/credits.txt:109
410 msgid "miffe"
411 msgstr "miffe"
412
413 #: ../cutscenes/credits.txt:112
109 #: ../cutscenes/credits.txt:117
414110 msgid "Special Thanks"
415111 msgstr "Особая благодарность"
416112
417 #: ../cutscenes/credits.txt:116
113 #: ../cutscenes/credits.txt:121
418114 msgid "For giving constant feedback and testing:"
419115 msgstr "За постоянные отзывы и тестирование:"
420116
421 #: ../cutscenes/credits.txt:117
422 msgid "Bart Kelsey"
423 msgstr "Bart Kelsey"
424
425 #: ../cutscenes/credits.txt:118
117 #: ../cutscenes/credits.txt:123
426118 msgid "The community at OpenGameArt"
427119 msgstr "Сообщество OpenGameArt"
428120
429 #: ../cutscenes/credits.txt:122
121 #: ../cutscenes/credits.txt:127
430122 msgid "For Tiled and the Flare map exporter:"
431123 msgstr "За Tiled и экспорт карт Flare:"
432
433 #: ../cutscenes/credits.txt:123
434 msgid "Thorbjørn Lindeijer"
435 msgstr "Thorbjørn Lindeijer"
436
437 #: ../cutscenes/credits.txt:125
438 msgid "Ranie Jade Ramiso"
439 msgstr "Ranie Jade Ramiso"
11 # This file is distributed under the same license as the FLARE package.
22 #
33 # FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
4 # Translators:
5 # MiroslavR <miroslavr256@gmail.com>, 2019
6 #
47 msgid ""
58 msgstr ""
69 "Project-Id-Version: PACKAGE VERSION\n"
710 "Report-Msgid-Bugs-To: \n"
8 "POT-Creation-Date: 2018-11-13 17:21+\n"
11 "POT-Creation-Date: 2019-07-29 09:34+\n"
912 "PO-Revision-Date: 2018-03-28 19:16+0000\n"
13 "Last-Translator: MiroslavR <miroslavr256@gmail.com>, 2019\n"
1014 "Language-Team: Slovak (https://www.transifex.com/flareorg/teams/84925/sk/)\n"
1115 "MIME-Version: 1.0\n"
1216 "Content-Type: text/plain; charset=UTF-8\n"
1620
1721 #: ../engine/primary_stats.txt:3
1822 msgid "Physical"
19 msgstr ""
23 msgstr "Fyzické"
2024
2125 #: ../engine/primary_stats.txt:7
2226 msgid "Mental"
23 msgstr ""
27 msgstr "Mentálne"
2428
2529 #: ../engine/primary_stats.txt:11
2630 msgid "Offense"
27 msgstr ""
31 msgstr "Útok"
2832
2933 #: ../engine/primary_stats.txt:15
3034 msgid "Defense"
31 msgstr ""
35 msgstr "Obrana"
3236
3337 #: ../engine/damage_types.txt:3
3438 msgid "Melee Damage"
35 msgstr ""
39 msgstr "Zranenie nablízko"
3640
3741 #: ../engine/damage_types.txt:4
3842 msgid "Increases the damage done with swords and other melee weapons."
39 msgstr ""
43 msgstr "Zvyšuje zranenie spôsobené mečmi a inými zbraňami nablízko."
4044
4145 #: ../engine/damage_types.txt:5
4246 msgid "Melee Damage Min"
43 msgstr ""
47 msgstr "Min. zranenie nablízko"
4448
4549 #: ../engine/damage_types.txt:6
4650 msgid "Melee Damage Max"
47 msgstr ""
51 msgstr "Max. zranenie nablízko"
4852
4953 #: ../engine/damage_types.txt:12
5054 msgid "Ranged Damage"
51 msgstr ""
55 msgstr "Zranenie na diaľku"
5256
5357 #: ../engine/damage_types.txt:13
5458 msgid "Increases the damage done with bows and other ranged weapons."
55 msgstr ""
59 msgstr "Zvyšuje zranenie spôsobené lukmi a inými zbraňami na diaľku."
5660
5761 #: ../engine/damage_types.txt:14
5862 msgid "Ranged Damage Min"
59 msgstr ""
63 msgstr "Min. zranenie na diaľku"
6064
6165 #: ../engine/damage_types.txt:15
6266 msgid "Ranged Damage Max"
63 msgstr ""
67 msgstr "Max. zranenie na diaľku"
6468
6569 #: ../engine/damage_types.txt:21
6670 msgid "Mental Damage"
67 msgstr ""
71 msgstr "Mentálne zranenie"
6872
6973 #: ../engine/damage_types.txt:22
7074 msgid "Increases the damage done with staves and other mental weapons."
71 msgstr ""
75 msgstr "Zvyšuje zranenie spôsobené palicami a inými mentálnymi zbraňami."
7276
7377 #: ../engine/damage_types.txt:23
7478 msgid "Mental Damage Min"
75 msgstr ""
79 msgstr "Min. mentálne zranenie"
7680
7781 #: ../engine/damage_types.txt:24
7882 msgid "Mental Damage Max"
79 msgstr ""
83 msgstr "Max. mentálne zranenie"
8084
8185 #: ../cutscenes/credits.txt:7
8286 msgid "Flare Engine Credits"
83 msgstr ""
87 msgstr "Autori Flare Engine"
8488
8589 #: ../cutscenes/credits.txt:10
8690 msgid "Lead Programmers"
87 msgstr ""
88
89 #: ../cutscenes/credits.txt:12
90 msgid "Clint Bellanger"
91 msgstr ""
92
93 #: ../cutscenes/credits.txt:13
94 msgid "Henrik Andersson"
95 msgstr ""
96
97 #: ../cutscenes/credits.txt:14
98 msgid "Igor Paliychuk"
99 msgstr ""
100
101 #: ../cutscenes/credits.txt:15
102 msgid "Justin Jacobs"
103 msgstr ""
104
105 #: ../cutscenes/credits.txt:16
106 msgid "Stefan Beller"
107 msgstr ""
108
109 #: ../cutscenes/credits.txt:17
110 msgid "Thane Brimhall"
111 msgstr ""
91 msgstr "Hlavní programátori"
11292
11393 #: ../cutscenes/credits.txt:20
11494 msgid "Programmers"
115 msgstr ""
116
117 #: ../cutscenes/credits.txt:22
118 msgid "Andrew Engelbrecht"
119 msgstr ""
120
121 #: ../cutscenes/credits.txt:23
122 msgid "Anton Golov"
123 msgstr ""
124
125 #: ../cutscenes/credits.txt:24
126 msgid "Artur Rojek"
127 msgstr ""
128
129 #: ../cutscenes/credits.txt:25
130 msgid "blazindragon"
131 msgstr ""
132
133 #: ../cutscenes/credits.txt:26
134 msgid "Bonbadil"
135 msgstr ""
136
137 #: ../cutscenes/credits.txt:27
138 msgid "Chris Oelmueller"
139 msgstr ""
140
141 #: ../cutscenes/credits.txt:28
142 msgid "David Bariod"
143 msgstr ""
144
145 #: ../cutscenes/credits.txt:29
146 msgid "Daniel Santos"
147 msgstr ""
148
149 #: ../cutscenes/credits.txt:30
150 msgid "Gallaecio"
151 msgstr ""
152
153 #: ../cutscenes/credits.txt:31
154 msgid "Joseph Bleu"
155 msgstr ""
156
157 #: ../cutscenes/credits.txt:32
158 msgid "Juan PabloTamayo"
159 msgstr ""
160
161 #: ../cutscenes/credits.txt:33
162 msgid "Kitano"
163 msgstr ""
164
165 #: ../cutscenes/credits.txt:34
166 msgid "Kyle Belanger"
167 msgstr ""
168
169 #: ../cutscenes/credits.txt:35
170 msgid "LongerDev"
171 msgstr ""
172
173 #: ../cutscenes/credits.txt:36
174 msgid "Manuel A. Fernandez Montecelo"
175 msgstr ""
176
177 #: ../cutscenes/credits.txt:37
178 msgid "Matthew Krohn"
179 msgstr ""
180
181 #: ../cutscenes/credits.txt:38
182 msgid "Nojan"
183 msgstr ""
184
185 #: ../cutscenes/credits.txt:39
186 msgid "Pavel Kirpichyov"
187 msgstr ""
188
189 #: ../cutscenes/credits.txt:40
190 msgid "runtime-x86"
191 msgstr ""
192
193 #: ../cutscenes/credits.txt:41
194 msgid "Ryan Dansie"
195 msgstr ""
95 msgstr "Programátori"
19696
19797 #: ../cutscenes/credits.txt:44
19898 msgid "Default Art"
199 msgstr ""
99 msgstr "Predvolená grafika"
200100
201101 #: ../cutscenes/credits.txt:49
202102 msgid "Translators"
203 msgstr ""
103 msgstr "Prekladatelia"
204104
205 #: ../cutscenes/credits.txt:51
206 msgid "Ademaro"
207 msgstr ""
208
209 #: ../cutscenes/credits.txt:52
210 msgid "Adrian Chaves Fernandez"
211 msgstr ""
212
213 #: ../cutscenes/credits.txt:53
214 msgid "Andrea Ranaldi"
215 msgstr ""
216
217 #: ../cutscenes/credits.txt:54
218 msgid "Andreas Berheim Brudin"
219 msgstr ""
220
221 #: ../cutscenes/credits.txt:55
222 msgid "Bas Doodeman"
223 msgstr ""
224
225 #: ../cutscenes/credits.txt:57
226 msgid "Carlos Sanchez"
227 msgstr ""
228
229 #: ../cutscenes/credits.txt:59
230 msgid "Christoph J. Thompson"
231 msgstr ""
232
233 #: ../cutscenes/credits.txt:60
234 msgid "Denis Lysenko"
235 msgstr ""
236
237 #: ../cutscenes/credits.txt:61
238 msgid "Diego J. Romero López"
239 msgstr ""
240
241 #: ../cutscenes/credits.txt:62
242 msgid "dumaosen"
243 msgstr ""
244
245 #: ../cutscenes/credits.txt:63
246 msgid "Emil"
247 msgstr ""
248
249 #: ../cutscenes/credits.txt:64
250 msgid "Eric R"
251 msgstr ""
252
253 #: ../cutscenes/credits.txt:65
254 msgid "Evgen Pavlov"
255 msgstr ""
256
257 #: ../cutscenes/credits.txt:66
258 msgid "Fabio Loli"
259 msgstr ""
260
261 #: ../cutscenes/credits.txt:67
262 msgid "Gianfranco Del Borrello"
263 msgstr ""
264
265 #: ../cutscenes/credits.txt:68
266 msgid "Giovanni Dalla Torre"
267 msgstr ""
268
269 #: ../cutscenes/credits.txt:69
270 msgid "GunChleoc"
271 msgstr ""
272
273 #: ../cutscenes/credits.txt:70
274 msgid "Hans Joachim Desserud"
275 msgstr ""
276
277 #: ../cutscenes/credits.txt:71
278 msgid "hark34"
279 msgstr ""
280
281 #: ../cutscenes/credits.txt:73
282 msgid "Janet Hunt"
283 msgstr ""
284
285 #: ../cutscenes/credits.txt:74
286 msgid "Juan Pablo Tamayo"
287 msgstr ""
288
289 #: ../cutscenes/credits.txt:75
290 msgid "losine"
291 msgstr ""
292
293 #: ../cutscenes/credits.txt:76
294 msgid "Marc Tormo i Bochaca"
295 msgstr ""
296
297 #: ../cutscenes/credits.txt:77
298 msgid "Michael Papageorgiou"
299 msgstr ""
300
301 #: ../cutscenes/credits.txt:78
302 msgid "Mikhail Karalevich"
303 msgstr ""
304
305 #: ../cutscenes/credits.txt:79
306 msgid "Miro Jánošík"
307 msgstr ""
308
309 #: ../cutscenes/credits.txt:80
310 msgid "Mykola Franchuk"
311 msgstr ""
312
313 #: ../cutscenes/credits.txt:81
314 msgid "MOB2"
315 msgstr ""
316
317 #: ../cutscenes/credits.txt:82
318 msgid "Morgan Strauss"
319 msgstr ""
320
321 #: ../cutscenes/credits.txt:83
322 msgid "Nea Retrogamer"
323 msgstr ""
324
325 #: ../cutscenes/credits.txt:84
326 msgid "Nguyễn Gia Phong"
327 msgstr ""
328
329 #: ../cutscenes/credits.txt:85
330 msgid "Nikita Vanku"
331 msgstr ""
332
333 #: ../cutscenes/credits.txt:86
334 msgid "Paul Wortmann"
335 msgstr ""
336
337 #: ../cutscenes/credits.txt:87
338 msgid "Pawel Puszczynski"
339 msgstr ""
340
341 #: ../cutscenes/credits.txt:88
342 msgid "Quentin Stievenart"
343 msgstr ""
344
345 #: ../cutscenes/credits.txt:89
346 msgid "Rui"
347 msgstr ""
348
349 #: ../cutscenes/credits.txt:90
350 msgid "Sergey Basalaev"
351 msgstr ""
352
353 #: ../cutscenes/credits.txt:91
354 msgid "Sergiy Borodych"
355 msgstr ""
356
357 #: ../cutscenes/credits.txt:93
358 msgid "Stefano Peris"
359 msgstr ""
360
361 #: ../cutscenes/credits.txt:94
362 msgid "sujiniku"
363 msgstr ""
364
365 #: ../cutscenes/credits.txt:95
366 msgid "Thomas Glamsch"
367 msgstr ""
368
369 #: ../cutscenes/credits.txt:96
370 msgid "Timo Sievänen"
371 msgstr ""
372
373 #: ../cutscenes/credits.txt:97
374 msgid "Vicente Monteiro"
375 msgstr ""
376
377 #: ../cutscenes/credits.txt:98
378 msgid "Wuzzy2"
379 msgstr ""
380
381 #: ../cutscenes/credits.txt:99
382 msgid "Yannis Anthymidis"
383 msgstr ""
384
385 #: ../cutscenes/credits.txt:100
386 msgid "Zmicer Turok"
387 msgstr ""
388
389 #: ../cutscenes/credits.txt:103
105 #: ../cutscenes/credits.txt:108
390106 msgid "Distributors"
391 msgstr ""
392
393 #: ../cutscenes/credits.txt:105
394 msgid "Ablu"
395 msgstr ""
396
397 #: ../cutscenes/credits.txt:106
398 msgid "Feillyne"
399 msgstr ""
400
401 #: ../cutscenes/credits.txt:107
402 msgid "Jan-Hendrik Peters"
403 msgstr ""
404
405 #: ../cutscenes/credits.txt:109
406 msgid "miffe"
407 msgstr ""
408
409 #: ../cutscenes/credits.txt:112
410 msgid "Special Thanks"
411 msgstr ""
412
413 #: ../cutscenes/credits.txt:116
414 msgid "For giving constant feedback and testing:"
415 msgstr ""
107 msgstr "Distribútori"
416108
417109 #: ../cutscenes/credits.txt:117
418 msgid "Bart Kelsey"
419 msgstr ""
110 msgid "Special Thanks"
111 msgstr "Špeciálne poďakovanie"
420112
421 #: ../cutscenes/credits.txt:118
422 msgid "The community at OpenGameArt"
423 msgstr ""
424
425 #: ../cutscenes/credits.txt:122
426 msgid "For Tiled and the Flare map exporter:"
427 msgstr ""
113 #: ../cutscenes/credits.txt:121
114 msgid "For giving constant feedback and testing:"
115 msgstr "Za pravidelné poskytovanie spätnej väzby a testovanie:"
428116
429117 #: ../cutscenes/credits.txt:123
430 msgid "Thorbjørn Lindeijer"
431 msgstr ""
118 msgid "The community at OpenGameArt"
119 msgstr "Komunita OpenGameArt"
432120
433 #: ../cutscenes/credits.txt:125
434 msgid "Ranie Jade Ramiso"
435 msgstr ""
121 #: ../cutscenes/credits.txt:127
122 msgid "For Tiled and the Flare map exporter:"
123 msgstr "Za nástroj Tiled a exportér máp Flare:"
55 msgstr ""
66 "Project-Id-Version: PACKAGE VERSION\n"
77 "Report-Msgid-Bugs-To: \n"
8 "POT-Creation-Date: 2018-11-13 17:21+\n"
8 "POT-Creation-Date: 2019-07-29 09:34+\n"
99 "PO-Revision-Date: 2018-03-28 19:16+0000\n"
1010 "Language-Team: Swedish (https://www.transifex.com/flareorg/teams/84925/sv/)\n"
1111 "MIME-Version: 1.0\n"
8686 msgid "Lead Programmers"
8787 msgstr ""
8888
89 #: ../cutscenes/credits.txt:12
90 msgid "Clint Bellanger"
91 msgstr ""
92
93 #: ../cutscenes/credits.txt:13
94 msgid "Henrik Andersson"
95 msgstr ""
96
97 #: ../cutscenes/credits.txt:14
98 msgid "Igor Paliychuk"
99 msgstr ""
100
101 #: ../cutscenes/credits.txt:15
102 msgid "Justin Jacobs"
103 msgstr ""
104
105 #: ../cutscenes/credits.txt:16
106 msgid "Stefan Beller"
107 msgstr ""
108
109 #: ../cutscenes/credits.txt:17
110 msgid "Thane Brimhall"
111 msgstr ""
112
11389 #: ../cutscenes/credits.txt:20
11490 msgid "Programmers"
115 msgstr ""
116
117 #: ../cutscenes/credits.txt:22
118 msgid "Andrew Engelbrecht"
119 msgstr ""
120
121 #: ../cutscenes/credits.txt:23
122 msgid "Anton Golov"
123 msgstr ""
124
125 #: ../cutscenes/credits.txt:24
126 msgid "Artur Rojek"
127 msgstr ""
128
129 #: ../cutscenes/credits.txt:25
130 msgid "blazindragon"
131 msgstr ""
132
133 #: ../cutscenes/credits.txt:26
134 msgid "Bonbadil"
135 msgstr ""
136
137 #: ../cutscenes/credits.txt:27
138 msgid "Chris Oelmueller"
139 msgstr ""
140
141 #: ../cutscenes/credits.txt:28
142 msgid "David Bariod"
143 msgstr ""
144
145 #: ../cutscenes/credits.txt:29
146 msgid "Daniel Santos"
147 msgstr ""
148
149 #: ../cutscenes/credits.txt:30
150 msgid "Gallaecio"
151 msgstr ""
152
153 #: ../cutscenes/credits.txt:31
154 msgid "Joseph Bleu"
155 msgstr ""
156
157 #: ../cutscenes/credits.txt:32
158 msgid "Juan PabloTamayo"
159 msgstr ""
160
161 #: ../cutscenes/credits.txt:33
162 msgid "Kitano"
163 msgstr ""
164
165 #: ../cutscenes/credits.txt:34
166 msgid "Kyle Belanger"
167 msgstr ""
168
169 #: ../cutscenes/credits.txt:35
170 msgid "LongerDev"
171 msgstr ""
172
173 #: ../cutscenes/credits.txt:36
174 msgid "Manuel A. Fernandez Montecelo"
175 msgstr ""
176
177 #: ../cutscenes/credits.txt:37
178 msgid "Matthew Krohn"
179 msgstr ""
180
181 #: ../cutscenes/credits.txt:38
182 msgid "Nojan"
183 msgstr ""
184
185 #: ../cutscenes/credits.txt:39
186 msgid "Pavel Kirpichyov"
187 msgstr ""
188
189 #: ../cutscenes/credits.txt:40
190 msgid "runtime-x86"
191 msgstr ""
192
193 #: ../cutscenes/credits.txt:41
194 msgid "Ryan Dansie"
19591 msgstr ""
19692
19793 #: ../cutscenes/credits.txt:44
20298 msgid "Translators"
20399 msgstr ""
204100
205 #: ../cutscenes/credits.txt:51
206 msgid "Ademaro"
207 msgstr ""
208
209 #: ../cutscenes/credits.txt:52
210 msgid "Adrian Chaves Fernandez"
211 msgstr ""
212
213 #: ../cutscenes/credits.txt:53
214 msgid "Andrea Ranaldi"
215 msgstr ""
216
217 #: ../cutscenes/credits.txt:54
218 msgid "Andreas Berheim Brudin"
219 msgstr ""
220
221 #: ../cutscenes/credits.txt:55
222 msgid "Bas Doodeman"
223 msgstr ""
224
225 #: ../cutscenes/credits.txt:57
226 msgid "Carlos Sanchez"
227 msgstr ""
228
229 #: ../cutscenes/credits.txt:59
230 msgid "Christoph J. Thompson"
231 msgstr ""
232
233 #: ../cutscenes/credits.txt:60
234 msgid "Denis Lysenko"
235 msgstr ""
236
237 #: ../cutscenes/credits.txt:61
238 msgid "Diego J. Romero López"
239 msgstr ""
240
241 #: ../cutscenes/credits.txt:62
242 msgid "dumaosen"
243 msgstr ""
244
245 #: ../cutscenes/credits.txt:63
246 msgid "Emil"
247 msgstr ""
248
249 #: ../cutscenes/credits.txt:64
250 msgid "Eric R"
251 msgstr ""
252
253 #: ../cutscenes/credits.txt:65
254 msgid "Evgen Pavlov"
255 msgstr ""
256
257 #: ../cutscenes/credits.txt:66
258 msgid "Fabio Loli"
259 msgstr ""
260
261 #: ../cutscenes/credits.txt:67
262 msgid "Gianfranco Del Borrello"
263 msgstr ""
264
265 #: ../cutscenes/credits.txt:68
266 msgid "Giovanni Dalla Torre"
267 msgstr ""
268
269 #: ../cutscenes/credits.txt:69
270 msgid "GunChleoc"
271 msgstr ""
272
273 #: ../cutscenes/credits.txt:70
274 msgid "Hans Joachim Desserud"
275 msgstr ""
276
277 #: ../cutscenes/credits.txt:71
278 msgid "hark34"
279 msgstr ""
280
281 #: ../cutscenes/credits.txt:73
282 msgid "Janet Hunt"
283 msgstr ""
284
285 #: ../cutscenes/credits.txt:74
286 msgid "Juan Pablo Tamayo"
287 msgstr ""
288
289 #: ../cutscenes/credits.txt:75
290 msgid "losine"
291 msgstr ""
292
293 #: ../cutscenes/credits.txt:76
294 msgid "Marc Tormo i Bochaca"
295 msgstr ""
296
297 #: ../cutscenes/credits.txt:77
298 msgid "Michael Papageorgiou"
299 msgstr ""
300
301 #: ../cutscenes/credits.txt:78
302 msgid "Mikhail Karalevich"
303 msgstr ""
304
305 #: ../cutscenes/credits.txt:79
306 msgid "Miro Jánošík"
307 msgstr ""
308
309 #: ../cutscenes/credits.txt:80
310 msgid "Mykola Franchuk"
311 msgstr ""
312
313 #: ../cutscenes/credits.txt:81
314 msgid "MOB2"
315 msgstr ""
316
317 #: ../cutscenes/credits.txt:82
318 msgid "Morgan Strauss"
319 msgstr ""
320
321 #: ../cutscenes/credits.txt:83
322 msgid "Nea Retrogamer"
323 msgstr ""
324
325 #: ../cutscenes/credits.txt:84
326 msgid "Nguyễn Gia Phong"
327 msgstr ""
328
329 #: ../cutscenes/credits.txt:85
330 msgid "Nikita Vanku"
331 msgstr ""
332
333 #: ../cutscenes/credits.txt:86
334 msgid "Paul Wortmann"
335 msgstr ""
336
337 #: ../cutscenes/credits.txt:87
338 msgid "Pawel Puszczynski"
339 msgstr ""
340
341 #: ../cutscenes/credits.txt:88
342 msgid "Quentin Stievenart"
343 msgstr ""
344
345 #: ../cutscenes/credits.txt:89
346 msgid "Rui"
347 msgstr ""
348
349 #: ../cutscenes/credits.txt:90
350 msgid "Sergey Basalaev"
351 msgstr ""
352
353 #: ../cutscenes/credits.txt:91
354 msgid "Sergiy Borodych"
355 msgstr ""
356
357 #: ../cutscenes/credits.txt:93
358 msgid "Stefano Peris"
359 msgstr ""
360
361 #: ../cutscenes/credits.txt:94
362 msgid "sujiniku"
363 msgstr ""
364
365 #: ../cutscenes/credits.txt:95
366 msgid "Thomas Glamsch"
367 msgstr ""
368
369 #: ../cutscenes/credits.txt:96
370 msgid "Timo Sievänen"
371 msgstr ""
372
373 #: ../cutscenes/credits.txt:97
374 msgid "Vicente Monteiro"
375 msgstr ""
376
377 #: ../cutscenes/credits.txt:98
378 msgid "Wuzzy2"
379 msgstr ""
380
381 #: ../cutscenes/credits.txt:99
382 msgid "Yannis Anthymidis"
383 msgstr ""
384
385 #: ../cutscenes/credits.txt:100
386 msgid "Zmicer Turok"
387 msgstr ""
388
389 #: ../cutscenes/credits.txt:103
101 #: ../cutscenes/credits.txt:108
390102 msgid "Distributors"
391103 msgstr ""
392104
393 #: ../cutscenes/credits.txt:105
394 msgid "Ablu"
395 msgstr ""
396
397 #: ../cutscenes/credits.txt:106
398 msgid "Feillyne"
399 msgstr ""
400
401 #: ../cutscenes/credits.txt:107
402 msgid "Jan-Hendrik Peters"
403 msgstr ""
404
405 #: ../cutscenes/credits.txt:109
406 msgid "miffe"
407 msgstr ""
408
409 #: ../cutscenes/credits.txt:112
105 #: ../cutscenes/credits.txt:117
410106 msgid "Special Thanks"
411107 msgstr ""
412108
413 #: ../cutscenes/credits.txt:116
109 #: ../cutscenes/credits.txt:121
414110 msgid "For giving constant feedback and testing:"
415111 msgstr ""
416112
417 #: ../cutscenes/credits.txt:117
418 msgid "Bart Kelsey"
419 msgstr ""
420
421 #: ../cutscenes/credits.txt:118
113 #: ../cutscenes/credits.txt:123
422114 msgid "The community at OpenGameArt"
423115 msgstr ""
424116
425 #: ../cutscenes/credits.txt:122
117 #: ../cutscenes/credits.txt:127
426118 msgid "For Tiled and the Flare map exporter:"
427119 msgstr ""
428
429 #: ../cutscenes/credits.txt:123
430 msgid "Thorbjørn Lindeijer"
431 msgstr ""
432
433 #: ../cutscenes/credits.txt:125
434 msgid "Ranie Jade Ramiso"
435 msgstr ""
1010 msgstr ""
1111 "Project-Id-Version: PACKAGE VERSION\n"
1212 "Report-Msgid-Bugs-To: \n"
13 "POT-Creation-Date: 2018-11-14 00:57+\n"
13 "POT-Creation-Date: 2019-07-29 09:34+\n"
1414 "PO-Revision-Date: 2018-03-28 19:16+0000\n"
1515 "Last-Translator: igorko <mansonigor@gmail.com>, 2018\n"
1616 "Language-Team: Ukrainian (https://www.transifex.com/flareorg/teams/84925/uk/)\n"
9292 msgid "Lead Programmers"
9393 msgstr "Провідні програмісти"
9494
95 #: ../cutscenes/credits.txt:12
96 msgid "Clint Bellanger"
97 msgstr "Клінт Беланжер"
98
99 #: ../cutscenes/credits.txt:13
100 msgid "Henrik Andersson"
101 msgstr "Генрік Андерсон"
102
103 #: ../cutscenes/credits.txt:14
104 msgid "Igor Paliychuk"
105 msgstr "Ігор Палійчук"
106
107 #: ../cutscenes/credits.txt:15
108 msgid "Justin Jacobs"
109 msgstr "Justin Jacobs"
110
111 #: ../cutscenes/credits.txt:16
112 msgid "Stefan Beller"
113 msgstr "Стефан Беллер"
114
115 #: ../cutscenes/credits.txt:17
116 msgid "Thane Brimhall"
117 msgstr "Thane Brimhall"
118
11995 #: ../cutscenes/credits.txt:20
12096 msgid "Programmers"
12197 msgstr "Програмісти"
122
123 #: ../cutscenes/credits.txt:22
124 msgid "Andrew Engelbrecht"
125 msgstr "Ендрю Енгельбрехт"
126
127 #: ../cutscenes/credits.txt:23
128 msgid "Anton Golov"
129 msgstr "Антон Голов"
130
131 #: ../cutscenes/credits.txt:24
132 msgid "Artur Rojek"
133 msgstr "Artur Rojek"
134
135 #: ../cutscenes/credits.txt:25
136 msgid "blazindragon"
137 msgstr "blazindragon"
138
139 #: ../cutscenes/credits.txt:26
140 msgid "Bonbadil"
141 msgstr "Bonbadil"
142
143 #: ../cutscenes/credits.txt:27
144 msgid "Chris Oelmueller"
145 msgstr "Chris Oelmueller"
146
147 #: ../cutscenes/credits.txt:28
148 msgid "David Bariod"
149 msgstr "Девід Баріод"
150
151 #: ../cutscenes/credits.txt:29
152 msgid "Daniel Santos"
153 msgstr "Даніель Сантос"
154
155 #: ../cutscenes/credits.txt:30
156 msgid "Gallaecio"
157 msgstr "Gallaecio"
158
159 #: ../cutscenes/credits.txt:31
160 msgid "Joseph Bleu"
161 msgstr "Жозеф Блю"
162
163 #: ../cutscenes/credits.txt:32
164 msgid "Juan PabloTamayo"
165 msgstr "Juan PabloTamayo"
166
167 #: ../cutscenes/credits.txt:33
168 msgid "Kitano"
169 msgstr "Kitano"
170
171 #: ../cutscenes/credits.txt:34
172 msgid "Kyle Belanger"
173 msgstr "Кайл Беланжер"
174
175 #: ../cutscenes/credits.txt:35
176 msgid "LongerDev"
177 msgstr "LongerDev"
178
179 #: ../cutscenes/credits.txt:36
180 msgid "Manuel A. Fernandez Montecelo"
181 msgstr "Manuel A. Fernandez Montecelo"
182
183 #: ../cutscenes/credits.txt:37
184 msgid "Matthew Krohn"
185 msgstr "Метью Крон"
186
187 #: ../cutscenes/credits.txt:38
188 msgid "Nojan"
189 msgstr "Nojan"
190
191 #: ../cutscenes/credits.txt:39
192 msgid "Pavel Kirpichyov"
193 msgstr "Павел Кірпічов"
194
195 #: ../cutscenes/credits.txt:40
196 msgid "runtime-x86"
197 msgstr "runtime-x86"
198
199 #: ../cutscenes/credits.txt:41
200 msgid "Ryan Dansie"
201 msgstr "Ryan Dansie"
20298
20399 #: ../cutscenes/credits.txt:44
204100 msgid "Default Art"
208104 msgid "Translators"
209105 msgstr "Перекладачі"
210106
211 #: ../cutscenes/credits.txt:51
212 msgid "Ademaro"
213 msgstr "Ademaro"
214
215 #: ../cutscenes/credits.txt:52
216 msgid "Adrian Chaves Fernandez"
217 msgstr "Adrian Chaves Fernandez"
218
219 #: ../cutscenes/credits.txt:53
220 msgid "Andrea Ranaldi"
221 msgstr "Андреа Ранальді"
222
223 #: ../cutscenes/credits.txt:54
224 msgid "Andreas Berheim Brudin"
225 msgstr "Andreas Berheim Brudin"
226
227 #: ../cutscenes/credits.txt:55
228 msgid "Bas Doodeman"
229 msgstr "Bas Doodeman"
230
231 #: ../cutscenes/credits.txt:57
232 msgid "Carlos Sanchez"
233 msgstr "Карлос Санчез"
234
235 #: ../cutscenes/credits.txt:59
236 msgid "Christoph J. Thompson"
237 msgstr "Christoph J. Thompson"
238
239 #: ../cutscenes/credits.txt:60
240 msgid "Denis Lysenko"
241 msgstr "Денис Лисенко"
242
243 #: ../cutscenes/credits.txt:61
244 msgid "Diego J. Romero López"
245 msgstr "Diego J. Romero López"
246
247 #: ../cutscenes/credits.txt:62
248 msgid "dumaosen"
249 msgstr "dumaosen"
250
251 #: ../cutscenes/credits.txt:63
252 msgid "Emil"
253 msgstr "Emil"
254
255 #: ../cutscenes/credits.txt:64
256 msgid "Eric R"
257 msgstr "Eric R"
258
259 #: ../cutscenes/credits.txt:65
260 msgid "Evgen Pavlov"
261 msgstr "Євген Павлов"
262
263 #: ../cutscenes/credits.txt:66
264 msgid "Fabio Loli"
265 msgstr "Фабіо Лолі"
266
267 #: ../cutscenes/credits.txt:67
268 msgid "Gianfranco Del Borrello"
269 msgstr "Gianfranco Del Borrello"
270
271 #: ../cutscenes/credits.txt:68
272 msgid "Giovanni Dalla Torre"
273 msgstr "Джованні Делла Торре"
274
275 #: ../cutscenes/credits.txt:69
276 msgid "GunChleoc"
277 msgstr "GunChleoc"
278
279 #: ../cutscenes/credits.txt:70
280 msgid "Hans Joachim Desserud"
281 msgstr "Hans Joachim Desserud"
282
283 #: ../cutscenes/credits.txt:71
284 msgid "hark34"
285 msgstr "hark34"
286
287 #: ../cutscenes/credits.txt:73
288 msgid "Janet Hunt"
289 msgstr "Джанет Хант"
290
291 #: ../cutscenes/credits.txt:74
292 msgid "Juan Pablo Tamayo"
293 msgstr "Juan Pablo Tamayo"
294
295 #: ../cutscenes/credits.txt:75
296 msgid "losine"
297 msgstr "losine"
298
299 #: ../cutscenes/credits.txt:76
300 msgid "Marc Tormo i Bochaca"
301 msgstr "Marc Tormo i Bochaca"
302
303 #: ../cutscenes/credits.txt:77
304 msgid "Michael Papageorgiou"
305 msgstr "Michael Papageorgiou"
306
307 #: ../cutscenes/credits.txt:78
308 msgid "Mikhail Karalevich"
309 msgstr "Михаїл Каралєвіч"
310
311 #: ../cutscenes/credits.txt:79
312 msgid "Miro Jánošík"
313 msgstr "Міро Яношик"
314
315 #: ../cutscenes/credits.txt:80
316 msgid "Mykola Franchuk"
317 msgstr "Микола Франчук"
318
319 #: ../cutscenes/credits.txt:81
320 msgid "MOB2"
321 msgstr "MOB2"
322
323 #: ../cutscenes/credits.txt:82
324 msgid "Morgan Strauss"
325 msgstr "Морган Штраус"
326
327 #: ../cutscenes/credits.txt:83
328 msgid "Nea Retrogamer"
329 msgstr "Nea Retrogamer"
330
331 #: ../cutscenes/credits.txt:84
332 msgid "Nguyễn Gia Phong"
333 msgstr "Nguyễn Gia Phong"
334
335 #: ../cutscenes/credits.txt:85
336 msgid "Nikita Vanku"
337 msgstr "Нікіта Ванку"
338
339 #: ../cutscenes/credits.txt:86
340 msgid "Paul Wortmann"
341 msgstr "Паул Вортман"
342
343 #: ../cutscenes/credits.txt:87
344 msgid "Pawel Puszczynski"
345 msgstr "Павел Пущинський"
346
347 #: ../cutscenes/credits.txt:88
348 msgid "Quentin Stievenart"
349 msgstr "Квентін Стівенарт"
350
351 #: ../cutscenes/credits.txt:89
352 msgid "Rui"
353 msgstr "Rui"
354
355 #: ../cutscenes/credits.txt:90
356 msgid "Sergey Basalaev"
357 msgstr "Сергей Басалаєв"
358
359 #: ../cutscenes/credits.txt:91
360 msgid "Sergiy Borodych"
361 msgstr "Сергій Бородич"
362
363 #: ../cutscenes/credits.txt:93
364 msgid "Stefano Peris"
365 msgstr "Стефано Періс"
366
367 #: ../cutscenes/credits.txt:94
368 msgid "sujiniku"
369 msgstr "sujiniku"
370
371 #: ../cutscenes/credits.txt:95
372 msgid "Thomas Glamsch"
373 msgstr "Thomas Glamsch"
374
375 #: ../cutscenes/credits.txt:96
376 msgid "Timo Sievänen"
377 msgstr "Timo Sievänen"
378
379 #: ../cutscenes/credits.txt:97
380 msgid "Vicente Monteiro"
381 msgstr "Вісенте Монтеіро"
382
383 #: ../cutscenes/credits.txt:98
384 msgid "Wuzzy2"
385 msgstr "Wuzzy2"
386
387 #: ../cutscenes/credits.txt:99
388 msgid "Yannis Anthymidis"
389 msgstr "Яніс Антімідіс"
390
391 #: ../cutscenes/credits.txt:100
392 msgid "Zmicer Turok"
393 msgstr "Zmicer Turok"
394
395 #: ../cutscenes/credits.txt:103
107 #: ../cutscenes/credits.txt:108
396108 msgid "Distributors"
397109 msgstr "Розповсюджувачі"
398110
399 #: ../cutscenes/credits.txt:105
400 msgid "Ablu"
401 msgstr "Ablu"
402
403 #: ../cutscenes/credits.txt:106
404 msgid "Feillyne"
405 msgstr "Feillyne"
406
407 #: ../cutscenes/credits.txt:107
408 msgid "Jan-Hendrik Peters"
409 msgstr "Jan-Hendrik Peters"
410
411 #: ../cutscenes/credits.txt:109
412 msgid "miffe"
413 msgstr "miffe"
414
415 #: ../cutscenes/credits.txt:112
111 #: ../cutscenes/credits.txt:117
416112 msgid "Special Thanks"
417113 msgstr "Особлива подяка"
418114
419 #: ../cutscenes/credits.txt:116
115 #: ../cutscenes/credits.txt:121
420116 msgid "For giving constant feedback and testing:"
421117 msgstr "За постійні відгуки і тестування:"
422118
423 #: ../cutscenes/credits.txt:117
424 msgid "Bart Kelsey"
425 msgstr "Барт Келсі"
426
427 #: ../cutscenes/credits.txt:118
119 #: ../cutscenes/credits.txt:123
428120 msgid "The community at OpenGameArt"
429121 msgstr "Спільноті OpenGameArt"
430122
431 #: ../cutscenes/credits.txt:122
123 #: ../cutscenes/credits.txt:127
432124 msgid "For Tiled and the Flare map exporter:"
433125 msgstr "За Tiled і експортер карт Flare:"
434
435 #: ../cutscenes/credits.txt:123
436 msgid "Thorbjørn Lindeijer"
437 msgstr "Thorbjørn Lindeijer"
438
439 #: ../cutscenes/credits.txt:125
440 msgid "Ranie Jade Ramiso"
441 msgstr "Ranie Jade Ramiso"
88 msgstr ""
99 "Project-Id-Version: PACKAGE VERSION\n"
1010 "Report-Msgid-Bugs-To: \n"
11 "POT-Creation-Date: 2018-11-13 17:21+\n"
11 "POT-Creation-Date: 2019-07-29 09:34+\n"
1212 "PO-Revision-Date: 2018-03-28 19:16+0000\n"
1313 "Last-Translator: Justin Jacobs <jajdorkster@gmail.com>, 2018\n"
1414 "Language-Team: Vietnamese (https://www.transifex.com/flareorg/teams/84925/vi/)\n"
4848
4949 #: ../engine/damage_types.txt:6
5050 msgid "Melee Damage Max"
51 msgstr "Sát thương tàm gần tối đa"
51 msgstr "Sát thương tầm gần tối đa"
5252
5353 #: ../engine/damage_types.txt:12
5454 msgid "Ranged Damage"
9090 msgid "Lead Programmers"
9191 msgstr "Các lập trình viên đứng đầu"
9292
93 #: ../cutscenes/credits.txt:12
94 msgid "Clint Bellanger"
95 msgstr ""
96
97 #: ../cutscenes/credits.txt:13
98 msgid "Henrik Andersson"
99 msgstr ""
100
101 #: ../cutscenes/credits.txt:14
102 msgid "Igor Paliychuk"
103 msgstr ""
104
105 #: ../cutscenes/credits.txt:15
106 msgid "Justin Jacobs"
107 msgstr ""
108
109 #: ../cutscenes/credits.txt:16
110 msgid "Stefan Beller"
111 msgstr ""
112
113 #: ../cutscenes/credits.txt:17
114 msgid "Thane Brimhall"
115 msgstr ""
116
11793 #: ../cutscenes/credits.txt:20
11894 msgid "Programmers"
11995 msgstr "Các lập trình viên"
120
121 #: ../cutscenes/credits.txt:22
122 msgid "Andrew Engelbrecht"
123 msgstr ""
124
125 #: ../cutscenes/credits.txt:23
126 msgid "Anton Golov"
127 msgstr ""
128
129 #: ../cutscenes/credits.txt:24
130 msgid "Artur Rojek"
131 msgstr ""
132
133 #: ../cutscenes/credits.txt:25
134 msgid "blazindragon"
135 msgstr ""
136
137 #: ../cutscenes/credits.txt:26
138 msgid "Bonbadil"
139 msgstr ""
140
141 #: ../cutscenes/credits.txt:27
142 msgid "Chris Oelmueller"
143 msgstr ""
144
145 #: ../cutscenes/credits.txt:28
146 msgid "David Bariod"
147 msgstr ""
148
149 #: ../cutscenes/credits.txt:29
150 msgid "Daniel Santos"
151 msgstr ""
152
153 #: ../cutscenes/credits.txt:30
154 msgid "Gallaecio"
155 msgstr ""
156
157 #: ../cutscenes/credits.txt:31
158 msgid "Joseph Bleu"
159 msgstr ""
160
161 #: ../cutscenes/credits.txt:32
162 msgid "Juan PabloTamayo"
163 msgstr ""
164
165 #: ../cutscenes/credits.txt:33
166 msgid "Kitano"
167 msgstr ""
168
169 #: ../cutscenes/credits.txt:34
170 msgid "Kyle Belanger"
171 msgstr ""
172
173 #: ../cutscenes/credits.txt:35
174 msgid "LongerDev"
175 msgstr ""
176
177 #: ../cutscenes/credits.txt:36
178 msgid "Manuel A. Fernandez Montecelo"
179 msgstr ""
180
181 #: ../cutscenes/credits.txt:37
182 msgid "Matthew Krohn"
183 msgstr ""
184
185 #: ../cutscenes/credits.txt:38
186 msgid "Nojan"
187 msgstr ""
188
189 #: ../cutscenes/credits.txt:39
190 msgid "Pavel Kirpichyov"
191 msgstr ""
192
193 #: ../cutscenes/credits.txt:40
194 msgid "runtime-x86"
195 msgstr ""
196
197 #: ../cutscenes/credits.txt:41
198 msgid "Ryan Dansie"
199 msgstr ""
20096
20197 #: ../cutscenes/credits.txt:44
20298 msgid "Default Art"
206102 msgid "Translators"
207103 msgstr "Các dịch giả"
208104
209 #: ../cutscenes/credits.txt:51
210 msgid "Ademaro"
211 msgstr ""
212
213 #: ../cutscenes/credits.txt:52
214 msgid "Adrian Chaves Fernandez"
215 msgstr ""
216
217 #: ../cutscenes/credits.txt:53
218 msgid "Andrea Ranaldi"
219 msgstr ""
220
221 #: ../cutscenes/credits.txt:54
222 msgid "Andreas Berheim Brudin"
223 msgstr ""
224
225 #: ../cutscenes/credits.txt:55
226 msgid "Bas Doodeman"
227 msgstr ""
228
229 #: ../cutscenes/credits.txt:57
230 msgid "Carlos Sanchez"
231 msgstr ""
232
233 #: ../cutscenes/credits.txt:59
234 msgid "Christoph J. Thompson"
235 msgstr ""
236
237 #: ../cutscenes/credits.txt:60
238 msgid "Denis Lysenko"
239 msgstr ""
240
241 #: ../cutscenes/credits.txt:61
242 msgid "Diego J. Romero López"
243 msgstr ""
244
245 #: ../cutscenes/credits.txt:62
246 msgid "dumaosen"
247 msgstr ""
248
249 #: ../cutscenes/credits.txt:63
250 msgid "Emil"
251 msgstr ""
252
253 #: ../cutscenes/credits.txt:64
254 msgid "Eric R"
255 msgstr ""
256
257 #: ../cutscenes/credits.txt:65
258 msgid "Evgen Pavlov"
259 msgstr ""
260
261 #: ../cutscenes/credits.txt:66
262 msgid "Fabio Loli"
263 msgstr ""
264
265 #: ../cutscenes/credits.txt:67
266 msgid "Gianfranco Del Borrello"
267 msgstr ""
268
269 #: ../cutscenes/credits.txt:68
270 msgid "Giovanni Dalla Torre"
271 msgstr ""
272
273 #: ../cutscenes/credits.txt:69
274 msgid "GunChleoc"
275 msgstr ""
276
277 #: ../cutscenes/credits.txt:70
278 msgid "Hans Joachim Desserud"
279 msgstr ""
280
281 #: ../cutscenes/credits.txt:71
282 msgid "hark34"
283 msgstr ""
284
285 #: ../cutscenes/credits.txt:73
286 msgid "Janet Hunt"
287 msgstr ""
288
289 #: ../cutscenes/credits.txt:74
290 msgid "Juan Pablo Tamayo"
291 msgstr ""
292
293 #: ../cutscenes/credits.txt:75
294 msgid "losine"
295 msgstr ""
296
297 #: ../cutscenes/credits.txt:76
298 msgid "Marc Tormo i Bochaca"
299 msgstr ""
300
301 #: ../cutscenes/credits.txt:77
302 msgid "Michael Papageorgiou"
303 msgstr ""
304
305 #: ../cutscenes/credits.txt:78
306 msgid "Mikhail Karalevich"
307 msgstr ""
308
309 #: ../cutscenes/credits.txt:79
310 msgid "Miro Jánošík"
311 msgstr ""
312
313 #: ../cutscenes/credits.txt:80
314 msgid "Mykola Franchuk"
315 msgstr ""
316
317 #: ../cutscenes/credits.txt:81
318 msgid "MOB2"
319 msgstr ""
320
321 #: ../cutscenes/credits.txt:82
322 msgid "Morgan Strauss"
323 msgstr ""
324
325 #: ../cutscenes/credits.txt:83
326 msgid "Nea Retrogamer"
327 msgstr ""
328
329 #: ../cutscenes/credits.txt:84
330 msgid "Nguyễn Gia Phong"
331 msgstr ""
332
333 #: ../cutscenes/credits.txt:85
334 msgid "Nikita Vanku"
335 msgstr ""
336
337 #: ../cutscenes/credits.txt:86
338 msgid "Paul Wortmann"
339 msgstr ""
340
341 #: ../cutscenes/credits.txt:87
342 msgid "Pawel Puszczynski"
343 msgstr ""
344
345 #: ../cutscenes/credits.txt:88
346 msgid "Quentin Stievenart"
347 msgstr ""
348
349 #: ../cutscenes/credits.txt:89
350 msgid "Rui"
351 msgstr ""
352
353 #: ../cutscenes/credits.txt:90
354 msgid "Sergey Basalaev"
355 msgstr ""
356
357 #: ../cutscenes/credits.txt:91
358 msgid "Sergiy Borodych"
359 msgstr ""
360
361 #: ../cutscenes/credits.txt:93
362 msgid "Stefano Peris"
363 msgstr ""
364
365 #: ../cutscenes/credits.txt:94
366 msgid "sujiniku"
367 msgstr ""
368
369 #: ../cutscenes/credits.txt:95
370 msgid "Thomas Glamsch"
371 msgstr ""
372
373 #: ../cutscenes/credits.txt:96
374 msgid "Timo Sievänen"
375 msgstr ""
376
377 #: ../cutscenes/credits.txt:97
378 msgid "Vicente Monteiro"
379 msgstr ""
380
381 #: ../cutscenes/credits.txt:98
382 msgid "Wuzzy2"
383 msgstr ""
384
385 #: ../cutscenes/credits.txt:99
386 msgid "Yannis Anthymidis"
387 msgstr ""
388
389 #: ../cutscenes/credits.txt:100
390 msgid "Zmicer Turok"
391 msgstr ""
392
393 #: ../cutscenes/credits.txt:103
105 #: ../cutscenes/credits.txt:108
394106 msgid "Distributors"
395107 msgstr "Các nhà phân phối"
396108
397 #: ../cutscenes/credits.txt:105
398 msgid "Ablu"
399 msgstr ""
400
401 #: ../cutscenes/credits.txt:106
402 msgid "Feillyne"
403 msgstr ""
404
405 #: ../cutscenes/credits.txt:107
406 msgid "Jan-Hendrik Peters"
407 msgstr ""
408
409 #: ../cutscenes/credits.txt:109
410 msgid "miffe"
411 msgstr ""
412
413 #: ../cutscenes/credits.txt:112
109 #: ../cutscenes/credits.txt:117
414110 msgid "Special Thanks"
415111 msgstr "Đặc biệt cảm ơn"
416112
417 #: ../cutscenes/credits.txt:116
113 #: ../cutscenes/credits.txt:121
418114 msgid "For giving constant feedback and testing:"
419 msgstr "Về việc thử nghiệm và phản hồi thường xuyên:"
115 msgstr "Trong việc thử nghiệm và phản hồi thường xuyên:"
420116
421 #: ../cutscenes/credits.txt:117
422 msgid "Bart Kelsey"
423 msgstr ""
424
425 #: ../cutscenes/credits.txt:118
117 #: ../cutscenes/credits.txt:123
426118 msgid "The community at OpenGameArt"
427119 msgstr "Cộng đồng ở OpenGameArt"
428120
429 #: ../cutscenes/credits.txt:122
121 #: ../cutscenes/credits.txt:127
430122 msgid "For Tiled and the Flare map exporter:"
431 msgstr "Về Tiled và công cụ kết xuất bản đồ cho Flare:"
432
433 #: ../cutscenes/credits.txt:123
434 msgid "Thorbjørn Lindeijer"
435 msgstr ""
436
437 #: ../cutscenes/credits.txt:125
438 msgid "Ranie Jade Ramiso"
439 msgstr ""
123 msgstr "Cho Tiled và công cụ kết xuất bản đồ cho Flare:"
11 # This file is distributed under the same license as the FLARE package.
22 #
33 # FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
4 # Translators:
5 # Justin Jacobs <jajdorkster@gmail.com>, 2019
6 # 杜茂森 <dumaosen_main01@outlook.com>, 2019
7 #
48 msgid ""
59 msgstr ""
610 "Project-Id-Version: PACKAGE VERSION\n"
711 "Report-Msgid-Bugs-To: \n"
8 "POT-Creation-Date: 2018-11-13 17:21+\n"
12 "POT-Creation-Date: 2019-07-29 09:34+\n"
913 "PO-Revision-Date: 2018-03-28 19:16+0000\n"
14 "Last-Translator: 杜茂森 <dumaosen_main01@outlook.com>, 2019\n"
1015 "Language-Team: Chinese (https://www.transifex.com/flareorg/teams/84925/zh/)\n"
1116 "MIME-Version: 1.0\n"
1217 "Content-Type: text/plain; charset=UTF-8\n"
1621
1722 #: ../engine/primary_stats.txt:3
1823 msgid "Physical"
19 msgstr ""
24 msgstr "物理"
2025
2126 #: ../engine/primary_stats.txt:7
2227 msgid "Mental"
23 msgstr ""
28 msgstr "魔法"
2429
2530 #: ../engine/primary_stats.txt:11
2631 msgid "Offense"
27 msgstr ""
32 msgstr "攻击"
2833
2934 #: ../engine/primary_stats.txt:15
3035 msgid "Defense"
31 msgstr ""
36 msgstr "防御"
3237
3338 #: ../engine/damage_types.txt:3
3439 msgid "Melee Damage"
35 msgstr ""
40 msgstr "近身伤害"
3641
3742 #: ../engine/damage_types.txt:4
3843 msgid "Increases the damage done with swords and other melee weapons."
39 msgstr ""
44 msgstr "增加剑和其他近身类武器的伤害。"
4045
4146 #: ../engine/damage_types.txt:5
4247 msgid "Melee Damage Min"
43 msgstr ""
48 msgstr "近身伤害最小值"
4449
4550 #: ../engine/damage_types.txt:6
4651 msgid "Melee Damage Max"
47 msgstr ""
52 msgstr "近身伤害最大值"
4853
4954 #: ../engine/damage_types.txt:12
5055 msgid "Ranged Damage"
51 msgstr ""
56 msgstr "范围伤害"
5257
5358 #: ../engine/damage_types.txt:13
5459 msgid "Increases the damage done with bows and other ranged weapons."
55 msgstr ""
60 msgstr "增加弓和其他范围类武器的伤害。"
5661
5762 #: ../engine/damage_types.txt:14
5863 msgid "Ranged Damage Min"
59 msgstr ""
64 msgstr "范围伤害最小值"
6065
6166 #: ../engine/damage_types.txt:15
6267 msgid "Ranged Damage Max"
63 msgstr ""
68 msgstr "范围伤害最大值"
6469
6570 #: ../engine/damage_types.txt:21
6671 msgid "Mental Damage"
67 msgstr ""
72 msgstr "魔法伤害"
6873
6974 #: ../engine/damage_types.txt:22
7075 msgid "Increases the damage done with staves and other mental weapons."
71 msgstr ""
76 msgstr "增加杖和其他魔法类武器的伤害。"
7277
7378 #: ../engine/damage_types.txt:23
7479 msgid "Mental Damage Min"
75 msgstr ""
80 msgstr "魔法伤害最小值"
7681
7782 #: ../engine/damage_types.txt:24
7883 msgid "Mental Damage Max"
79 msgstr ""
84 msgstr "精神伤害最大值"
8085
8186 #: ../cutscenes/credits.txt:7
8287 msgid "Flare Engine Credits"
83 msgstr ""
88 msgstr "Flare Engine 致谢"
8489
8590 #: ../cutscenes/credits.txt:10
8691 msgid "Lead Programmers"
87 msgstr ""
88
89 #: ../cutscenes/credits.txt:12
90 msgid "Clint Bellanger"
91 msgstr ""
92
93 #: ../cutscenes/credits.txt:13
94 msgid "Henrik Andersson"
95 msgstr ""
96
97 #: ../cutscenes/credits.txt:14
98 msgid "Igor Paliychuk"
99 msgstr ""
100
101 #: ../cutscenes/credits.txt:15
102 msgid "Justin Jacobs"
103 msgstr ""
104
105 #: ../cutscenes/credits.txt:16
106 msgid "Stefan Beller"
107 msgstr ""
108
109 #: ../cutscenes/credits.txt:17
110 msgid "Thane Brimhall"
111 msgstr ""
92 msgstr "首席程序员"
11293
11394 #: ../cutscenes/credits.txt:20
11495 msgid "Programmers"
115 msgstr ""
116
117 #: ../cutscenes/credits.txt:22
118 msgid "Andrew Engelbrecht"
119 msgstr ""
120
121 #: ../cutscenes/credits.txt:23
122 msgid "Anton Golov"
123 msgstr ""
124
125 #: ../cutscenes/credits.txt:24
126 msgid "Artur Rojek"
127 msgstr ""
128
129 #: ../cutscenes/credits.txt:25
130 msgid "blazindragon"
131 msgstr ""
132
133 #: ../cutscenes/credits.txt:26
134 msgid "Bonbadil"
135 msgstr ""
136
137 #: ../cutscenes/credits.txt:27
138 msgid "Chris Oelmueller"
139 msgstr ""
140
141 #: ../cutscenes/credits.txt:28
142 msgid "David Bariod"
143 msgstr ""
144
145 #: ../cutscenes/credits.txt:29
146 msgid "Daniel Santos"
147 msgstr ""
148
149 #: ../cutscenes/credits.txt:30
150 msgid "Gallaecio"
151 msgstr ""
152
153 #: ../cutscenes/credits.txt:31
154 msgid "Joseph Bleu"
155 msgstr ""
156
157 #: ../cutscenes/credits.txt:32
158 msgid "Juan PabloTamayo"
159 msgstr ""
160
161 #: ../cutscenes/credits.txt:33
162 msgid "Kitano"
163 msgstr ""
164
165 #: ../cutscenes/credits.txt:34
166 msgid "Kyle Belanger"
167 msgstr ""
168
169 #: ../cutscenes/credits.txt:35
170 msgid "LongerDev"
171 msgstr ""
172
173 #: ../cutscenes/credits.txt:36
174 msgid "Manuel A. Fernandez Montecelo"
175 msgstr ""
176
177 #: ../cutscenes/credits.txt:37
178 msgid "Matthew Krohn"
179 msgstr ""
180
181 #: ../cutscenes/credits.txt:38
182 msgid "Nojan"
183 msgstr ""
184
185 #: ../cutscenes/credits.txt:39
186 msgid "Pavel Kirpichyov"
187 msgstr ""
188
189 #: ../cutscenes/credits.txt:40
190 msgid "runtime-x86"
191 msgstr ""
192
193 #: ../cutscenes/credits.txt:41
194 msgid "Ryan Dansie"
195 msgstr ""
96 msgstr "程序员"
19697
19798 #: ../cutscenes/credits.txt:44
19899 msgid "Default Art"
199 msgstr ""
100 msgstr "默认素材"
200101
201102 #: ../cutscenes/credits.txt:49
202103 msgid "Translators"
203 msgstr ""
104 msgstr "翻译者"
204105
205 #: ../cutscenes/credits.txt:51
206 msgid "Ademaro"
207 msgstr ""
208
209 #: ../cutscenes/credits.txt:52
210 msgid "Adrian Chaves Fernandez"
211 msgstr ""
212
213 #: ../cutscenes/credits.txt:53
214 msgid "Andrea Ranaldi"
215 msgstr ""
216
217 #: ../cutscenes/credits.txt:54
218 msgid "Andreas Berheim Brudin"
219 msgstr ""
220
221 #: ../cutscenes/credits.txt:55
222 msgid "Bas Doodeman"
223 msgstr ""
224
225 #: ../cutscenes/credits.txt:57
226 msgid "Carlos Sanchez"
227 msgstr ""
228
229 #: ../cutscenes/credits.txt:59
230 msgid "Christoph J. Thompson"
231 msgstr ""
232
233 #: ../cutscenes/credits.txt:60
234 msgid "Denis Lysenko"
235 msgstr ""
236
237 #: ../cutscenes/credits.txt:61
238 msgid "Diego J. Romero López"
239 msgstr ""
240
241 #: ../cutscenes/credits.txt:62
242 msgid "dumaosen"
243 msgstr ""
244
245 #: ../cutscenes/credits.txt:63
246 msgid "Emil"
247 msgstr ""
248
249 #: ../cutscenes/credits.txt:64
250 msgid "Eric R"
251 msgstr ""
252
253 #: ../cutscenes/credits.txt:65
254 msgid "Evgen Pavlov"
255 msgstr ""
256
257 #: ../cutscenes/credits.txt:66
258 msgid "Fabio Loli"
259 msgstr ""
260
261 #: ../cutscenes/credits.txt:67
262 msgid "Gianfranco Del Borrello"
263 msgstr ""
264
265 #: ../cutscenes/credits.txt:68
266 msgid "Giovanni Dalla Torre"
267 msgstr ""
268
269 #: ../cutscenes/credits.txt:69
270 msgid "GunChleoc"
271 msgstr ""
272
273 #: ../cutscenes/credits.txt:70
274 msgid "Hans Joachim Desserud"
275 msgstr ""
276
277 #: ../cutscenes/credits.txt:71
278 msgid "hark34"
279 msgstr ""
280
281 #: ../cutscenes/credits.txt:73
282 msgid "Janet Hunt"
283 msgstr ""
284
285 #: ../cutscenes/credits.txt:74
286 msgid "Juan Pablo Tamayo"
287 msgstr ""
288
289 #: ../cutscenes/credits.txt:75
290 msgid "losine"
291 msgstr ""
292
293 #: ../cutscenes/credits.txt:76
294 msgid "Marc Tormo i Bochaca"
295 msgstr ""
296
297 #: ../cutscenes/credits.txt:77
298 msgid "Michael Papageorgiou"
299 msgstr ""
300
301 #: ../cutscenes/credits.txt:78
302 msgid "Mikhail Karalevich"
303 msgstr ""
304
305 #: ../cutscenes/credits.txt:79
306 msgid "Miro Jánošík"
307 msgstr ""
308
309 #: ../cutscenes/credits.txt:80
310 msgid "Mykola Franchuk"
311 msgstr ""
312
313 #: ../cutscenes/credits.txt:81
314 msgid "MOB2"
315 msgstr ""
316
317 #: ../cutscenes/credits.txt:82
318 msgid "Morgan Strauss"
319 msgstr ""
320
321 #: ../cutscenes/credits.txt:83
322 msgid "Nea Retrogamer"
323 msgstr ""
324
325 #: ../cutscenes/credits.txt:84
326 msgid "Nguyễn Gia Phong"
327 msgstr ""
328
329 #: ../cutscenes/credits.txt:85
330 msgid "Nikita Vanku"
331 msgstr ""
332
333 #: ../cutscenes/credits.txt:86
334 msgid "Paul Wortmann"
335 msgstr ""
336
337 #: ../cutscenes/credits.txt:87
338 msgid "Pawel Puszczynski"
339 msgstr ""
340
341 #: ../cutscenes/credits.txt:88
342 msgid "Quentin Stievenart"
343 msgstr ""
344
345 #: ../cutscenes/credits.txt:89
346 msgid "Rui"
347 msgstr ""
348
349 #: ../cutscenes/credits.txt:90
350 msgid "Sergey Basalaev"
351 msgstr ""
352
353 #: ../cutscenes/credits.txt:91
354 msgid "Sergiy Borodych"
355 msgstr ""
356
357 #: ../cutscenes/credits.txt:93
358 msgid "Stefano Peris"
359 msgstr ""
360
361 #: ../cutscenes/credits.txt:94
362 msgid "sujiniku"
363 msgstr ""
364
365 #: ../cutscenes/credits.txt:95
366 msgid "Thomas Glamsch"
367 msgstr ""
368
369 #: ../cutscenes/credits.txt:96
370 msgid "Timo Sievänen"
371 msgstr ""
372
373 #: ../cutscenes/credits.txt:97
374 msgid "Vicente Monteiro"
375 msgstr ""
376
377 #: ../cutscenes/credits.txt:98
378 msgid "Wuzzy2"
379 msgstr ""
380
381 #: ../cutscenes/credits.txt:99
382 msgid "Yannis Anthymidis"
383 msgstr ""
384
385 #: ../cutscenes/credits.txt:100
386 msgid "Zmicer Turok"
387 msgstr ""
388
389 #: ../cutscenes/credits.txt:103
106 #: ../cutscenes/credits.txt:108
390107 msgid "Distributors"
391 msgstr ""
392
393 #: ../cutscenes/credits.txt:105
394 msgid "Ablu"
395 msgstr ""
396
397 #: ../cutscenes/credits.txt:106
398 msgid "Feillyne"
399 msgstr ""
400
401 #: ../cutscenes/credits.txt:107
402 msgid "Jan-Hendrik Peters"
403 msgstr ""
404
405 #: ../cutscenes/credits.txt:109
406 msgid "miffe"
407 msgstr ""
408
409 #: ../cutscenes/credits.txt:112
410 msgid "Special Thanks"
411 msgstr ""
412
413 #: ../cutscenes/credits.txt:116
414 msgid "For giving constant feedback and testing:"
415 msgstr ""
108 msgstr "发行者"
416109
417110 #: ../cutscenes/credits.txt:117
418 msgid "Bart Kelsey"
419 msgstr ""
111 msgid "Special Thanks"
112 msgstr "特别感谢"
420113
421 #: ../cutscenes/credits.txt:118
422 msgid "The community at OpenGameArt"
423 msgstr ""
424
425 #: ../cutscenes/credits.txt:122
426 msgid "For Tiled and the Flare map exporter:"
427 msgstr ""
114 #: ../cutscenes/credits.txt:121
115 msgid "For giving constant feedback and testing:"
116 msgstr "给予不断反馈和测试的:"
428117
429118 #: ../cutscenes/credits.txt:123
430 msgid "Thorbjørn Lindeijer"
431 msgstr ""
119 msgid "The community at OpenGameArt"
120 msgstr "OpenGameArt 社区"
432121
433 #: ../cutscenes/credits.txt:125
434 msgid "Ranie Jade Ramiso"
435 msgstr ""
122 #: ../cutscenes/credits.txt:127
123 msgid "For Tiled and the Flare map exporter:"
124 msgstr "关于 Tiled 和 Flare地图导出器:"
44 #
55 # Translators:
66 # Justin Jacobs <jajdorkster@gmail.com>, 2018
7 # Zmicer Turok <zmicerturok@gmail.com>, 2018
7 # Źmicier Turok <nashtlumach@gmail.com>, 2020
88 #
99 #, fuzzy
1010 msgid ""
1111 msgstr ""
1212 "Project-Id-Version: PACKAGE VERSION\n"
1313 "Report-Msgid-Bugs-To: \n"
14 "POT-Creation-Date: 2018-11-17 21:50-0500\n"
14 "POT-Creation-Date: 2021-05-23 20:34-0400\n"
1515 "PO-Revision-Date: 2018-03-28 19:16+0000\n"
16 "Last-Translator: Zmicer Turok <zmicerturok@gmail.com>, 2018\n"
16 "Last-Translator: Źmicier Turok <nashtlumach@gmail.com>, 2020\n"
1717 "Language-Team: Belarusian (https://www.transifex.com/flareorg/teams/84925/be/)\n"
1818 "MIME-Version: 1.0\n"
1919 "Content-Type: text/plain; charset=UTF-8\n"
2121 "Language: be\n"
2222 "Plural-Forms: nplurals=4; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<12 || n%100>14) ? 1 : n%10==0 || (n%10>=5 && n%10<=9) || (n%100>=11 && n%100<=14)? 2 : 3);\n"
2323
24 #: ../../../src/Avatar.cpp:367
24 #: ../../../src/Avatar.cpp:391
25 msgid "Your health is low!"
26 msgstr "Ваша жыццё сыходзіць!"
27
28 #: ../../../src/Avatar.cpp:421
2529 #, c-format
2630 msgid "Congratulations, you have reached level %d!"
2731 msgstr "Віншуем, вы дасягнулі %d ўзроўня!"
2832
29 #: ../../../src/Avatar.cpp:369
30 msgid "You may increase one attribute through the Character Menu."
31 msgstr "Вы можаце палепшыць адзін атрыбут у меню персанажа."
32
33 #: ../../../src/Avatar.cpp:583
34 msgid "You are defeated. Game over! ${INPUT_CONTINUE} to exit to Title."
35 msgstr ""
36 "Вы зазналі паразу. Гульня завершана. Націсніце ${INPUT_CONTINUE}, каб выйсці"
37 " ў меню."
38
39 #: ../../../src/Avatar.cpp:589
40 msgid "You are defeated. ${INPUT_CONTINUE} to continue."
41 msgstr "Вы зазналі паразу. Націсніце ${INPUT_CONTINUE}, каб працягнуць."
42
43 #: ../../../src/Avatar.cpp:839
33 #: ../../../src/Avatar.cpp:423
34 msgid "You may increase one or more attributes through the Character Menu."
35 msgstr "Вы можаце палепшыць адзін альбо некалькі атрыбутаў у меню персанажа."
36
37 #: ../../../src/Avatar.cpp:427
38 msgid "You may unlock one or more abilities through the Powers Menu."
39 msgstr "Вы можаце разблакаваць адзін альбо некалькі талентаў у меню талентаў."
40
41 #: ../../../src/Avatar.cpp:689
42 msgid "You are defeated."
43 msgstr ""
44
45 #: ../../../src/Avatar.cpp:935
4446 msgid "Transformation expired. You have been moved back to a safe place."
45 msgstr "Трансфармацыя завершана. Вы вярнуліся ў бяспечнае месца."
46
47 #: ../../../src/CampaignManager.cpp:153
47 msgstr "Трансфармацыя завершаная. Вы вярнуліся ў бяспечнае месца."
48
49 #: ../../../src/CampaignManager.cpp:152
4850 #, c-format
4951 msgid "%d %s removed."
5052 msgstr "%d %s прыбрана."
5153
52 #: ../../../src/CampaignManager.cpp:162
54 #: ../../../src/CampaignManager.cpp:171
55 #, c-format
56 msgid "%s x%d removed."
57 msgstr ""
58
59 #: ../../../src/CampaignManager.cpp:173
5360 #, c-format
5461 msgid "%s removed."
5562 msgstr "%s прыбрана."
5663
57 #: ../../../src/CampaignManager.cpp:175
64 #: ../../../src/CampaignManager.cpp:187
65 #, c-format
66 msgid "You receive %d %s."
67 msgstr "Вы атрымліваеце %d %s."
68
69 #: ../../../src/CampaignManager.cpp:191
70 #, c-format
71 msgid "You receive %s x%d."
72 msgstr "Вы атрымліваеце %s x%d."
73
74 #: ../../../src/CampaignManager.cpp:193
5875 #, c-format
5976 msgid "You receive %s."
6077 msgstr "Вы атрымліваеце %s."
6178
62 #: ../../../src/CampaignManager.cpp:177
63 #, c-format
64 msgid "You receive %s x%d."
65 msgstr "Вы атрымліваеце %s x%d."
66
67 #: ../../../src/CampaignManager.cpp:186
68 #, c-format
69 msgid "You receive %d %s."
70 msgstr "Вы атрымліваеце %d %s."
71
72 #: ../../../src/CampaignManager.cpp:195
79 #: ../../../src/CampaignManager.cpp:210
7380 #, c-format
7481 msgid "You receive %d XP."
7582 msgstr "Вы атрымліваеце %d досведу."
7683
77 #: ../../../src/CampaignManager.cpp:201
84 #: ../../../src/CampaignManager.cpp:216
7885 msgid "HP restored."
7986 msgstr "Жыццё адноўлена."
8087
81 #: ../../../src/CampaignManager.cpp:205
88 #: ../../../src/CampaignManager.cpp:220
8289 msgid "MP restored."
83 msgstr "Мана адноўлена."
84
85 #: ../../../src/CampaignManager.cpp:210
90 msgstr "Мана адноўленая."
91
92 #: ../../../src/CampaignManager.cpp:225
8693 msgid "HP and MP restored."
87 msgstr "Жыццё і мана адноўлены."
88
89 #: ../../../src/CampaignManager.cpp:214
94 msgstr "Жыццё і мана адноўленыя."
95
96 #: ../../../src/CampaignManager.cpp:229
9097 msgid "Negative effects removed."
91 msgstr "Негатыўныя эфекты прыбраны."
92
93 #: ../../../src/CampaignManager.cpp:220
98 msgstr "Негатыўныя эфекты прыбраныя."
99
100 #: ../../../src/CampaignManager.cpp:235
94101 msgid "HP and MP restored, negative effects removed"
95 msgstr "Жыццё і мана адноўлены, негатыўныя эфекты зніклі"
102 msgstr "Жыццё і мана адноўленыя, негатыўныя эфекты зніклі"
96103
97104 #: ../../../src/DeviceList.cpp:56
98105 msgid ""
112119 "Апаратны адмалёўшчык SDL. Прадвызначаны адмалёўшчык, які найчасцей працуе "
113120 "хутчэй за праграмны адмалёўшчык SDL."
114121
115 #: ../../../src/EngineSettings.cpp:561
122 #: ../../../src/EngineSettings.cpp:586
116123 msgid "Adventurer"
117124 msgstr "Вандроўнік"
118125
119 #: ../../../src/Entity.cpp:511
126 #: ../../../src/Entity.cpp:527
120127 msgid "miss"
121128 msgstr "промах"
122129
123 #: ../../../src/Entity.cpp:548 ../../../src/PowerManager.cpp:1152
124 #: ../../../src/StatBlock.cpp:805 ../../../src/StatBlock.cpp:811
130 #: ../../../src/Entity.cpp:565 ../../../src/PowerManager.cpp:1224
131 #: ../../../src/StatBlock.cpp:917 ../../../src/StatBlock.cpp:923
125132 #, c-format
126133 msgid "+%d HP"
127134 msgstr "+%d жыцця"
128135
129 #: ../../../src/Entity.cpp:555 ../../../src/StatBlock.cpp:816
130 #: ../../../src/StatBlock.cpp:822
136 #: ../../../src/Entity.cpp:572 ../../../src/StatBlock.cpp:928
137 #: ../../../src/StatBlock.cpp:934
131138 #, c-format
132139 msgid "+%d MP"
133140 msgstr "+%d маны"
134141
135 #: ../../../src/EventManager.cpp:738
142 #: ../../../src/EventManager.cpp:792
136143 msgid "Unknown destination"
137144 msgstr "Невядомы накірунак"
138145
139 #: ../../../src/GameStateConfigBase.cpp:89
140 #: ../../../src/GameStateConfigBase.cpp:110
146 #: ../../../src/GameState.cpp:37 ../../../src/GameState.cpp:58
147 msgid "Loading..."
148 msgstr "Загрузка..."
149
150 #: ../../../src/GameStateLoad.cpp:90 ../../../src/GameStateLoad.cpp:103
151 msgid "Delete Save"
152 msgstr "Выдаліць гульню"
153
154 #: ../../../src/GameStateLoad.cpp:90
155 msgid "Delete this save?"
156 msgstr "Выдаліць захаваную гульню?"
157
158 #: ../../../src/GameStateLoad.cpp:92
159 msgid "Exit to Title"
160 msgstr "Выйсці ў меню"
161
162 #: ../../../src/GameStateLoad.cpp:95
163 msgid "New Game"
164 msgstr "Новая гульня"
165
166 #: ../../../src/GameStateLoad.cpp:99 ../../../src/GameStateLoad.cpp:607
167 msgid "Choose a Slot"
168 msgstr "Абярыце слот"
169
170 #: ../../../src/GameStateLoad.cpp:580 ../../../src/GameStateLoad.cpp:601
171 msgid "Enable a story mod to continue"
172 msgstr "Уключыце сюжэтны мод, каб працягнуць"
173
174 #: ../../../src/GameStateLoad.cpp:596
175 msgid "Load Game"
176 msgstr "Загрузіць гульню"
177
178 #: ../../../src/GameStateLoad.cpp:705
179 msgid "Entering game world..."
180 msgstr "Уваход у гульнявы свет..."
181
182 #: ../../../src/GameStateLoad.cpp:708
183 msgid "Loading saved game..."
184 msgstr "Загрузка захаванай гульні..."
185
186 #: ../../../src/GameStateLoad.cpp:741
187 msgid "Invalid save"
188 msgstr "Хібная гульня"
189
190 #: ../../../src/GameStateLoad.cpp:765 ../../../src/ItemManager.cpp:745
191 #: ../../../src/MenuPowers.cpp:860 ../../../src/MenuPowers.cpp:1219
192 #: ../../../src/MenuPowers.cpp:1631
193 #, c-format
194 msgid "Level %d"
195 msgstr "Узровень %d"
196
197 #: ../../../src/GameStateNew.cpp:66 ../../../src/InputState.cpp:416
198 #: ../../../src/MenuConfig.cpp:246
199 msgid "Cancel"
200 msgstr "Скасаваць"
201
202 #: ../../../src/GameStateNew.cpp:69
203 msgid "Create"
204 msgstr "Стварыць"
205
206 #: ../../../src/GameStateNew.cpp:77
207 msgid "Randomize"
208 msgstr "Перамяшаць"
209
210 #: ../../../src/GameStateNew.cpp:93
211 msgid "Choose a Portrait"
212 msgstr "Абярыце партрэт"
213
214 #: ../../../src/GameStateNew.cpp:97
215 msgid "Choose a Name"
216 msgstr "Абярыце імя"
217
218 #: ../../../src/GameStateNew.cpp:101
219 msgid "Permadeath?"
220 msgstr "Памерці можна толькі раз?"
221
222 #: ../../../src/GameStateNew.cpp:105
223 msgid "Choose a Class"
224 msgstr "Абярыце клас"
225
226 #: ../../../src/GameStateTitle.cpp:107
227 msgid "Play Game"
228 msgstr "Гуляць"
229
230 #: ../../../src/GameStateTitle.cpp:110
231 msgid "Enable a core mod to continue"
232 msgstr "Уключыце асноўны мод, каб працягнуць"
233
234 #: ../../../src/GameStateTitle.cpp:114 ../../../src/MenuMiniMap.cpp:152
235 msgid "Configuration"
236 msgstr "Канфігурацыя"
237
238 #: ../../../src/GameStateTitle.cpp:117
239 msgid "Credits"
240 msgstr "Стваральнікі"
241
242 #: ../../../src/GameStateTitle.cpp:120
243 msgid "Exit Game"
244 msgstr "Выйсці"
245
246 #: ../../../src/InputState.cpp:417
247 msgid "Accept"
248 msgstr "Пагадзіцца"
249
250 #: ../../../src/InputState.cpp:418 ../../../src/MenuMovementType.cpp:123
251 #: ../../../src/MenuMovementType.cpp:132 ../../../src/SDLInputState.cpp:668
252 #: ../../../src/SDLInputState.cpp:698
253 msgid "Up"
254 msgstr "Уверх"
255
256 #: ../../../src/InputState.cpp:419 ../../../src/MenuMovementType.cpp:125
257 #: ../../../src/MenuMovementType.cpp:134 ../../../src/SDLInputState.cpp:646
258 #: ../../../src/SDLInputState.cpp:676
259 msgid "Down"
260 msgstr "Уніз"
261
262 #: ../../../src/InputState.cpp:420 ../../../src/MenuMovementType.cpp:124
263 #: ../../../src/MenuMovementType.cpp:133 ../../../src/SDLInputState.cpp:653
264 #: ../../../src/SDLInputState.cpp:683
265 msgid "Left"
266 msgstr "Налева"
267
268 #: ../../../src/InputState.cpp:421 ../../../src/MenuMovementType.cpp:126
269 #: ../../../src/MenuMovementType.cpp:135 ../../../src/SDLInputState.cpp:663
270 #: ../../../src/SDLInputState.cpp:693
271 msgid "Right"
272 msgstr "Направа"
273
274 #: ../../../src/InputState.cpp:422
275 msgid "Bar1"
276 msgstr "Панэль1"
277
278 #: ../../../src/InputState.cpp:423
279 msgid "Bar2"
280 msgstr "Панэль2"
281
282 #: ../../../src/InputState.cpp:424
283 msgid "Bar3"
284 msgstr "Панэль3"
285
286 #: ../../../src/InputState.cpp:425
287 msgid "Bar4"
288 msgstr "Панэль4"
289
290 #: ../../../src/InputState.cpp:426
291 msgid "Bar5"
292 msgstr "Панэль5"
293
294 #: ../../../src/InputState.cpp:427
295 msgid "Bar6"
296 msgstr "Панэль6"
297
298 #: ../../../src/InputState.cpp:428
299 msgid "Bar7"
300 msgstr "Панэль7"
301
302 #: ../../../src/InputState.cpp:429
303 msgid "Bar8"
304 msgstr "Панэль8"
305
306 #: ../../../src/InputState.cpp:430
307 msgid "Bar9"
308 msgstr "Панэль9"
309
310 #: ../../../src/InputState.cpp:431
311 msgid "Bar0"
312 msgstr "Панэль0"
313
314 #: ../../../src/InputState.cpp:432 ../../../src/MenuActionBar.cpp:84
315 #: ../../../src/MenuCharacter.cpp:54
316 msgid "Character"
317 msgstr "Персанаж"
318
319 #: ../../../src/InputState.cpp:433 ../../../src/MenuActionBar.cpp:85
320 #: ../../../src/MenuInventory.cpp:130 ../../../src/MenuVendor.cpp:59
321 msgid "Inventory"
322 msgstr "Інвентар"
323
324 #: ../../../src/InputState.cpp:434 ../../../src/MenuActionBar.cpp:86
325 #: ../../../src/MenuPowers.cpp:158
326 msgid "Powers"
327 msgstr "Таленты"
328
329 #: ../../../src/InputState.cpp:435 ../../../src/MenuActionBar.cpp:87
330 #: ../../../src/MenuLog.cpp:72
331 msgid "Log"
332 msgstr "Нататнік"
333
334 #: ../../../src/InputState.cpp:436
335 msgid "Main1"
336 msgstr "Галоўнае1"
337
338 #: ../../../src/InputState.cpp:437
339 msgid "Main2"
340 msgstr "Галоўнае2"
341
342 #: ../../../src/InputState.cpp:438
343 msgid "Ctrl"
344 msgstr "Ctrl"
345
346 #: ../../../src/InputState.cpp:439
347 msgid "Shift"
348 msgstr "Shift"
349
350 #: ../../../src/InputState.cpp:440
351 msgid "Alt"
352 msgstr "Alt"
353
354 #: ../../../src/InputState.cpp:441 ../../../src/SDLInputState.cpp:675
355 msgid "Delete"
356 msgstr "Delete"
357
358 #: ../../../src/InputState.cpp:442
359 msgid "ActionBar Accept"
360 msgstr "Панэль дзеянняў: пагадзіцца"
361
362 #: ../../../src/InputState.cpp:443
363 msgid "ActionBar Left"
364 msgstr "Панэль дзеянняў: улева"
365
366 #: ../../../src/InputState.cpp:444
367 msgid "ActionBar Right"
368 msgstr "Панэль дзеянняў: управа"
369
370 #: ../../../src/InputState.cpp:445
371 msgid "ActionBar Use"
372 msgstr "Панэль дзеянняў: выкарыстаць"
373
374 #: ../../../src/InputState.cpp:446
375 msgid "Developer Menu"
376 msgstr "Меню распрацоўшчыка"
377
378 #: ../../../src/InputState.cpp:448
379 msgid "Left Mouse"
380 msgstr "Левая кнопка мышы"
381
382 #: ../../../src/InputState.cpp:449
383 msgid "Middle Mouse"
384 msgstr "Сярэдняя кнопка мышы"
385
386 #: ../../../src/InputState.cpp:450
387 msgid "Right Mouse"
388 msgstr "Правая кнопка мышы"
389
390 #: ../../../src/InputState.cpp:451
391 msgid "Wheel Up"
392 msgstr "Пракрутка ўверх"
393
394 #: ../../../src/InputState.cpp:452
395 msgid "Wheel Down"
396 msgstr "Пракрутка ўніз"
397
398 #: ../../../src/InputState.cpp:453
399 msgid "Mouse X1"
400 msgstr "Мыш х2"
401
402 #: ../../../src/InputState.cpp:454
403 msgid "Mouse X2"
404 msgstr "Мыш х1"
405
406 #: ../../../src/ItemManager.cpp:475
407 msgid "Unknown Item"
408 msgstr "Невядомы прадмет"
409
410 #: ../../../src/ItemManager.cpp:646 ../../../src/MenuPowers.cpp:959
411 #, c-format
412 msgid "%d%% Speed"
413 msgstr "Хуткасць %d%%"
414
415 #: ../../../src/ItemManager.cpp:650 ../../../src/MenuPowers.cpp:962
416 #, c-format
417 msgid "%d%% Attack Speed"
418 msgstr "Хуткасць атакі %d%%"
419
420 #: ../../../src/ItemManager.cpp:672 ../../../src/MenuCharacter.cpp:352
421 #: ../../../src/MenuPowers.cpp:931
422 #, c-format
423 msgid "Resistance (%s)"
424 msgstr "Супраціўленне (%s)"
425
426 #: ../../../src/ItemManager.cpp:682
427 #, c-format
428 msgid "Requires %s"
429 msgstr "Патрабуецца %s"
430
431 #: ../../../src/ItemManager.cpp:731
432 msgid "Quest Item"
433 msgstr "Прадмет задання"
434
435 #: ../../../src/ItemManager.cpp:758
436 #, c-format
437 msgid "Quality: %s"
438 msgstr "Якасць: %s"
439
440 #: ../../../src/ItemManager.cpp:783
441 #, c-format
442 msgid "Absorb: %d-%d"
443 msgstr "Паглынае: %d-%d"
444
445 #: ../../../src/ItemManager.cpp:785
446 #, c-format
447 msgid "Absorb: %d"
448 msgstr "Паглынае: %d"
449
450 #: ../../../src/ItemManager.cpp:825 ../../../src/MenuPowers.cpp:1206
451 #: ../../../src/MenuPowers.cpp:1209
452 #, c-format
453 msgid "Requires Level %d"
454 msgstr "Патрабуецца %d узровень"
455
456 #: ../../../src/ItemManager.cpp:836 ../../../src/MenuPowers.cpp:1198
457 #: ../../../src/MenuPowers.cpp:1200
458 #, c-format
459 msgid "Requires %s %d"
460 msgstr "Патрабуецца %s %d"
461
462 #: ../../../src/ItemManager.cpp:847
463 #, c-format
464 msgid "Requires Class: %s"
465 msgstr "Патрабуецца клас: %s"
466
467 #: ../../../src/ItemManager.cpp:863 ../../../src/ItemManager.cpp:875
468 #, c-format
469 msgid "Buy Price: %d %s"
470 msgstr "Кошт пакупкі: %d %s"
471
472 #: ../../../src/ItemManager.cpp:865 ../../../src/ItemManager.cpp:877
473 #, c-format
474 msgid "Buy Price: %d %s each"
475 msgstr "Кошт пакупкі: %d %s за кожны"
476
477 #: ../../../src/ItemManager.cpp:885
478 #, c-format
479 msgid "Sell Price: %d %s"
480 msgstr "Кошт продажу: %d %s"
481
482 #: ../../../src/ItemManager.cpp:887
483 #, c-format
484 msgid "Sell Price: %d %s each"
485 msgstr "Кошт продажу: %d %s за кожны"
486
487 #: ../../../src/ItemManager.cpp:896
488 msgid "Set:"
489 msgstr "Набор:"
490
491 #: ../../../src/ItemManager.cpp:903
492 #, c-format
493 msgid "%d items:"
494 msgstr "%d прадметаў:"
495
496 #: ../../../src/ItemManager.cpp:915
497 #, c-format
498 msgid "Press [%s] to read"
499 msgstr "Націсніце [%s], каб прачытаць"
500
501 #: ../../../src/ItemManager.cpp:918
502 #, c-format
503 msgid "Press [%s] to use"
504 msgstr "Націсніце [%s], каб выкарыстаць"
505
506 #: ../../../src/MenuActionBar.cpp:239 ../../../src/MenuActionBar.cpp:246
507 #: ../../../src/MenuActionBar.cpp:249 ../../../src/MenuActionBar.cpp:255
508 #, c-format
509 msgid "Hotkey: %s"
510 msgstr "Гарачая клавіша: %s"
511
512 #: ../../../src/MenuActionBar.cpp:621
513 msgid "Not enough MP."
514 msgstr "Не стае маны."
515
516 #: ../../../src/MenuActiveEffects.cpp:124
517 #, c-format
518 msgid "x%d"
519 msgstr "x%d"
520
521 #: ../../../src/MenuActiveEffects.cpp:219
522 msgid "Remaining:"
523 msgstr "Засталося:"
524
525 #: ../../../src/MenuActiveEffects.cpp:225
526 #, c-format
527 msgid "x%d stacks"
528 msgstr "x%d кампанентаў"
529
530 #: ../../../src/MenuCharacter.cpp:73 ../../../src/MenuCharacter.cpp:78
531 msgid "Name"
532 msgstr "Імя"
533
534 #: ../../../src/MenuCharacter.cpp:74 ../../../src/MenuCharacter.cpp:79
535 msgid "Level"
536 msgstr "Узровень"
537
538 #: ../../../src/MenuCharacter.cpp:309
539 #, c-format
540 msgid "Available stat points: %d"
541 msgstr ""
542
543 #: ../../../src/MenuCharacter.cpp:353
544 #, c-format
545 msgid "Reduces the damage taken from \"%s\" elemental attacks."
546 msgstr "Памяншае ўрон ад \"%s\" стыхійных атак."
547
548 #: ../../../src/MenuCharacter.cpp:363 ../../../src/MenuManager.cpp:301
549 #, c-format
550 msgid "XP: %d"
551 msgstr "Досвед: %d"
552
553 #: ../../../src/MenuCharacter.cpp:365
554 #, c-format
555 msgid "Next: %d"
556 msgstr "Наступны: %d"
557
558 #: ../../../src/MenuCharacter.cpp:371
559 #, c-format
560 msgid "base (%d), bonus (%d)"
561 msgstr "базавае (%d), бонус (%d)"
562
563 #: ../../../src/MenuCharacter.cpp:379 ../../../src/MenuCharacter.cpp:393
564 msgid "Related stats:"
565 msgstr "Звязаныя ўменні:"
566
567 #: ../../../src/MenuCharacter.cpp:419 ../../../src/MenuCharacter.cpp:443
568 #, c-format
569 msgid "Each level grants %d."
570 msgstr "З кожным узроўнем даецца %d."
571
572 #: ../../../src/MenuCharacter.cpp:423 ../../../src/MenuCharacter.cpp:447
573 #, c-format
574 msgid "Each point of %s grants %d."
575 msgstr "З кожным пунктам %s даецца %d"
576
577 #: ../../../src/MenuConfig.cpp:122 ../../../src/MenuConfig.cpp:1171
578 msgid "Clear"
579 msgstr "Ачысціць"
580
581 #: ../../../src/MenuConfig.cpp:122 ../../../src/MenuConfig.cpp:1169
582 msgid "Assign:"
583 msgstr "Прызначыць:"
584
585 #: ../../../src/MenuConfig.cpp:123 ../../../src/MenuConfig.cpp:245
141586 msgid "Defaults"
142587 msgstr "Прадвызначана"
143588
144 #: ../../../src/GameStateConfigBase.cpp:89
589 #: ../../../src/MenuConfig.cpp:123
145590 msgid "Reset ALL settings?"
146591 msgstr "Скінуць УСЕ налады?"
147592
148 #: ../../../src/GameStateConfigBase.cpp:109 ../../../src/MenuNumPicker.cpp:49
593 #: ../../../src/MenuConfig.cpp:244 ../../../src/MenuNumPicker.cpp:49
149594 msgid "OK"
150595 msgstr "Добра"
151596
152 #: ../../../src/GameStateConfigBase.cpp:111 ../../../src/GameStateNew.cpp:65
153 #: ../../../src/InputState.cpp:401
154 msgid "Cancel"
155 msgstr "Скасаваць"
156
157 #: ../../../src/GameStateConfigBase.cpp:160
158 #: ../../../src/GameStateConfigDesktop.cpp:130
597 #: ../../../src/MenuConfig.cpp:248 ../../../src/MenuGameOver.cpp:72
598 msgid "Continue"
599 msgstr "Працягнуць"
600
601 #: ../../../src/MenuConfig.cpp:250
602 msgid "Save Game"
603 msgstr ""
604
605 #: ../../../src/MenuConfig.cpp:293
606 msgid "Default"
607 msgstr "Прадвызначана"
608
609 #: ../../../src/MenuConfig.cpp:293
610 msgid ""
611 "Show all loot tooltips, except for those that would be obscured by the "
612 "player or an enemy. Temporarily show all loot tooltips with 'Alt'."
613 msgstr ""
614 "Паказваць усе выплыўныя падказкі аб здабычы, за выключэннем схаваных гульцом"
615 " альбо ворагам. Часова паказваць усе выплыўныя падказкі клавішай \"Alt\"."
616
617 #: ../../../src/MenuConfig.cpp:294
618 msgid "Show all"
619 msgstr "Паказваць усе"
620
621 #: ../../../src/MenuConfig.cpp:294
622 msgid ""
623 "Always show loot tooltips. Temporarily hide all loot tooltips with 'Alt'."
624 msgstr ""
625 "Заўсёды паказваць выплыўныя падказкі аб здабычы. Часова хаваць падказкі "
626 "клавішай \"Alt\"."
627
628 #: ../../../src/MenuConfig.cpp:295 ../../../src/MenuConfig.cpp:300
629 msgid "Hidden"
630 msgstr "Хаваць"
631
632 #: ../../../src/MenuConfig.cpp:295
633 msgid ""
634 "Always hide loot tooltips, except for when a piece of loot is hovered with "
635 "the mouse cursor. Temporarily show all loot tooltips with 'Alt'."
636 msgstr ""
637 "Заўсёды хаваць выплыўныя падказкі пра здабычу, за выключэннем калі частка "
638 "здабычы знаходзіцца пад курсорам мышы. Часова паказваць усе выплыўныя "
639 "падказкі «Alt»."
640
641 #: ../../../src/MenuConfig.cpp:298
642 msgid "Visible"
643 msgstr "Паказваць"
644
645 #: ../../../src/MenuConfig.cpp:299
646 msgid "Visible (2x zoom)"
647 msgstr "Паказваць (2х)"
648
649 #: ../../../src/MenuConfig.cpp:303
650 msgid ""
651 "Controls the type of warning to be activated when the player is below the "
652 "low health threshold."
653 msgstr ""
654 "Кіруе тыпам папярэджання, якое мусіць актывавацца калі ўзровень жыцця "
655 "апускаецца ніжэй за парог."
656
657 #: ../../../src/MenuConfig.cpp:304
658 msgid "- Display a message"
659 msgstr "- Вывесці паведамленне"
660
661 #: ../../../src/MenuConfig.cpp:305
662 msgid "- Play a sound"
663 msgstr "- Прайграць гук"
664
665 #: ../../../src/MenuConfig.cpp:306
666 msgid "- Change the cursor"
667 msgstr "- Змяніць курсор"
668
669 #: ../../../src/MenuConfig.cpp:308
670 msgid "Disabled"
671 msgstr "Выключана"
672
673 #: ../../../src/MenuConfig.cpp:309
674 msgid "All"
675 msgstr "Усё"
676
677 #: ../../../src/MenuConfig.cpp:310
678 msgid "Message & Cursor"
679 msgstr "Паведамленне і курсор"
680
681 #: ../../../src/MenuConfig.cpp:311
682 msgid "Message & Sound"
683 msgstr "Паведамленне і гук"
684
685 #: ../../../src/MenuConfig.cpp:312
686 msgid "Sound & Cursor"
687 msgstr "Гук і курсор"
688
689 #: ../../../src/MenuConfig.cpp:313
690 msgid "Message"
691 msgstr "Паведамленне"
692
693 #: ../../../src/MenuConfig.cpp:314
694 msgid "Cursor"
695 msgstr "Курсор"
696
697 #: ../../../src/MenuConfig.cpp:315
698 msgid "Sound"
699 msgstr "Гук"
700
701 #: ../../../src/MenuConfig.cpp:321
702 msgid ""
703 "When the player's health drops below the given threshold, the low health "
704 "notifications are triggered if one or more of them is enabled."
705 msgstr ""
706 "Калі жыццё гульца зніжаецца за прызначаны парог, паведамленні выведуцца, "
707 "калі адно альбо некалькі з іх уключаныя."
708
709 #: ../../../src/MenuConfig.cpp:334 ../../../src/MenuConfig.cpp:1587
710 #: ../../../src/MenuGameOver.cpp:116
711 msgid "Exit"
712 msgstr "Выйсці"
713
714 #: ../../../src/MenuConfig.cpp:335
715 msgid "Video"
716 msgstr "Відэа"
717
718 #: ../../../src/MenuConfig.cpp:336
159719 msgid "Audio"
160720 msgstr "Аўдыё"
161721
162 #: ../../../src/GameStateConfigBase.cpp:161
163 #: ../../../src/GameStateConfigDesktop.cpp:131
722 #: ../../../src/MenuConfig.cpp:337
164723 msgid "Interface"
165724 msgstr "Інтэрфейс"
166725
167 #: ../../../src/GameStateConfigBase.cpp:162
168 #: ../../../src/GameStateConfigDesktop.cpp:134
726 #: ../../../src/MenuConfig.cpp:338
727 msgid "Input"
728 msgstr "Увод"
729
730 #: ../../../src/MenuConfig.cpp:339
731 msgid "Keybindings"
732 msgstr "Клавішы"
733
734 #: ../../../src/MenuConfig.cpp:340
169735 msgid "Mods"
170736 msgstr "Моды"
171737
172 #: ../../../src/GameStateConfigBase.cpp:249 ../../../src/MenuExit.cpp:72
738 #: ../../../src/MenuConfig.cpp:352
739 msgid "Paused"
740 msgstr "Прыпыніць"
741
742 #: ../../../src/MenuConfig.cpp:355
743 msgid "Time Played"
744 msgstr "Час гульні"
745
746 #: ../../../src/MenuConfig.cpp:361
747 msgid "Renderer"
748 msgstr "Адмалёўшчык"
749
750 #: ../../../src/MenuConfig.cpp:362
751 msgid "Full Screen Mode"
752 msgstr "Поўнаэкранны рэжым"
753
754 #: ../../../src/MenuConfig.cpp:363
755 msgid "Hardware surfaces"
756 msgstr "Апаратныя паверхні"
757
758 #: ../../../src/MenuConfig.cpp:364
759 msgid "V-Sync"
760 msgstr "Вертыкальная сінхранізацыя"
761
762 #: ../../../src/MenuConfig.cpp:365
763 msgid "Texture Filtering"
764 msgstr "Фільтрацыя тэкстур"
765
766 #: ../../../src/MenuConfig.cpp:366
767 msgid "DPI scaling"
768 msgstr "Маштабаванне DPI"
769
770 #: ../../../src/MenuConfig.cpp:367
771 msgid "Parallax Layers"
772 msgstr "Пласты Parallax"
773
774 #: ../../../src/MenuConfig.cpp:368
775 msgid "Allow changing gamma"
776 msgstr "Дазволіць змяняць гаму"
777
778 #: ../../../src/MenuConfig.cpp:369
779 msgid "Gamma"
780 msgstr "Гама"
781
782 #: ../../../src/MenuConfig.cpp:371
783 msgid "Sound Volume"
784 msgstr "Гучнасць наваколля"
785
786 #: ../../../src/MenuConfig.cpp:372
173787 msgid "Music Volume"
174788 msgstr "Гучнасць музыкі"
175789
176 #: ../../../src/GameStateConfigBase.cpp:253 ../../../src/MenuExit.cpp:77
177 msgid "Sound Volume"
178 msgstr "Гучнасць наваколля"
179
180 #: ../../../src/GameStateConfigBase.cpp:257
790 #: ../../../src/MenuConfig.cpp:374
181791 msgid "Language"
182792 msgstr "Мова"
183793
184 #: ../../../src/GameStateConfigBase.cpp:266
794 #: ../../../src/MenuConfig.cpp:375
185795 msgid "Show FPS"
186796 msgstr "Паказваць FPS"
187797
188 #: ../../../src/GameStateConfigBase.cpp:270
798 #: ../../../src/MenuConfig.cpp:376
799 msgid "Hardware mouse cursor"
800 msgstr "Апаратны курсор мышы"
801
802 #: ../../../src/MenuConfig.cpp:377
189803 msgid "Colorblind Mode"
190804 msgstr "Рэжым дальтанізму"
191805
192 #: ../../../src/GameStateConfigBase.cpp:274
193 msgid "Hardware mouse cursor"
194 msgstr "Апаратны курсор мышы"
195
196 #: ../../../src/GameStateConfigBase.cpp:278
806 #: ../../../src/MenuConfig.cpp:378
197807 msgid "Developer Mode"
198808 msgstr "Рэжым распрацоўшчыка"
199809
200 #: ../../../src/GameStateConfigBase.cpp:282
810 #: ../../../src/MenuConfig.cpp:379
201811 msgid "Subtitles"
202 msgstr "Субтытры"
203
204 #: ../../../src/GameStateConfigBase.cpp:286
205 msgid "Active Mods"
206 msgstr "Актыўныя моды"
207
208 #: ../../../src/GameStateConfigBase.cpp:295
209 msgid "Available Mods"
210 msgstr "Наяўныя моды"
211
212 #: ../../../src/GameStateConfigBase.cpp:314
213 msgid "<< Disable"
214 msgstr "<< Выключыць"
215
216 #: ../../../src/GameStateConfigBase.cpp:320
217 msgid "Enable >>"
218 msgstr "Уключыць >>"
219
220 #: ../../../src/GameStateConfigBase.cpp:873
221 msgid "Version:"
222 msgstr "Версія:"
223
224 #: ../../../src/GameStateConfigBase.cpp:878
225 msgid "Game:"
226 msgstr "Гульня:"
227
228 #: ../../../src/GameStateConfigBase.cpp:883
229 msgid "Engine version:"
230 msgstr "Версія рухавіка:"
231
232 #: ../../../src/GameStateConfigBase.cpp:891
233 msgid "Requires mods:"
234 msgstr "Патрабуюцца моды:"
235
236 #: ../../../src/GameStateConfigDesktop.cpp:83
237 #: ../../../src/GameStateConfigDesktop.cpp:751
238 msgid "Clear"
239 msgstr "Ачысціць"
240
241 #: ../../../src/GameStateConfigDesktop.cpp:83
242 #: ../../../src/GameStateConfigDesktop.cpp:749
243 msgid "Assign:"
244 msgstr "Прызначыць:"
245
246 #: ../../../src/GameStateConfigDesktop.cpp:128
247 msgid "Video"
248 msgstr "Відэа"
249
250 #: ../../../src/GameStateConfigDesktop.cpp:132
251 msgid "Input"
252 msgstr "Увод"
253
254 #: ../../../src/GameStateConfigDesktop.cpp:133
255 msgid "Keybindings"
256 msgstr "Клавішы"
257
258 #: ../../../src/GameStateConfigDesktop.cpp:188
812 msgstr "Субцітры"
813
814 #: ../../../src/MenuConfig.cpp:380
815 msgid "Loot tooltip visibility"
816 msgstr "Паказваць падказкі пра здабычу"
817
818 #: ../../../src/MenuConfig.cpp:381
819 msgid "Mini-map mode"
820 msgstr "Рэжым мінімапы"
821
822 #: ../../../src/MenuConfig.cpp:382
823 msgid "Always show stat bar labels"
824 msgstr "Заўсёды паказваць адмеціны ў радку стану"
825
826 #: ../../../src/MenuConfig.cpp:383
827 msgid "Allow stat bar auto-hiding"
828 msgstr "Уключыць аўтаматычнае хаванне радку стану"
829
830 #: ../../../src/MenuConfig.cpp:384
831 msgid "Show combat text"
832 msgstr "Паказваць тэкст бою"
833
834 #: ../../../src/MenuConfig.cpp:385
835 msgid "Automatically equip items"
836 msgstr "Аўтаматычна апранаць прадметы"
837
838 #: ../../../src/MenuConfig.cpp:386
839 msgid "Show hidden entity markers"
840 msgstr "Паказваць схаваныя пазнакі"
841
842 #: ../../../src/MenuConfig.cpp:387
843 msgid "Low health notification"
844 msgstr "Апавяшчэнне пра нізкае жыццё"
845
846 #: ../../../src/MenuConfig.cpp:388
847 msgid "Low health threshold"
848 msgstr "Мінімальны парог жыцця"
849
850 #: ../../../src/MenuConfig.cpp:389
851 msgid "Show item comparison tooltips"
852 msgstr ""
853
854 #: ../../../src/MenuConfig.cpp:392 ../../../src/MenuMovementType.cpp:94
855 #: ../../../src/MenuMovementType.cpp:131
856 msgid "Joystick"
857 msgstr "Джойсцік"
858
859 #: ../../../src/MenuConfig.cpp:393
860 msgid "Move hero using mouse"
861 msgstr "Перамяшчаць героя мышшу"
862
863 #: ../../../src/MenuConfig.cpp:394
864 msgid "Mouse aim"
865 msgstr "Нацэльвацца мышшу"
866
867 #: ../../../src/MenuConfig.cpp:395
868 msgid "Do not use mouse"
869 msgstr "Не выкарыстоўваць мыш"
870
871 #: ../../../src/MenuConfig.cpp:396
872 msgid "Swap mouse movement button"
873 msgstr "Пераключыць кнопку руху мышы"
874
875 #: ../../../src/MenuConfig.cpp:397
876 msgid "Attack with mouse movement"
877 msgstr "Атакаваць рухамі мышшу"
878
879 #: ../../../src/MenuConfig.cpp:398
880 msgid "Joystick Deadzone"
881 msgstr "Мёртвая зона джойсціка"
882
883 #: ../../../src/MenuConfig.cpp:408
884 #, c-format
885 msgid "Primary binding: %s"
886 msgstr "Першасныя значэнні: %s"
887
888 #: ../../../src/MenuConfig.cpp:409
889 #, c-format
890 msgid "Alternate binding: %s"
891 msgstr "Альтэрнатыўныя значэнні: %s"
892
893 #: ../../../src/MenuConfig.cpp:410
894 #, c-format
895 msgid "Joystick binding: %s"
896 msgstr "Значэнні джойсціка: %s"
897
898 #: ../../../src/MenuConfig.cpp:511
259899 msgid ""
260900 "Will try to store surfaces in video memory versus system memory. The effect "
261901 "this has on performance depends on the renderer."
262902 msgstr ""
263 "Паспрабуйце апрацоўваць паверхні ў відэапамяці, а не ў сістэмнай памяці. "
903 "Спрабаваць апрацоўваць паверхні ў відэапамяці, а не ў сістэмнай памяці. "
264904 "Эфект залежыць ад адмалёўшчыка."
265905
266 #: ../../../src/GameStateConfigDesktop.cpp:189
906 #: ../../../src/MenuConfig.cpp:512
267907 msgid ""
268908 "Prevents screen tearing. Disable if you experience \"stuttering\" in "
269909 "windowed mode or input lag."
271911 "Прадухіляе разрывы экрану. Выключыце, калі ўзнікаюць праблемы з ўводам альбо"
272912 " ў аконным рэжыме."
273913
274 #: ../../../src/GameStateConfigDesktop.cpp:190
914 #: ../../../src/MenuConfig.cpp:513
275915 msgid ""
276916 "When enabled, this uses the screen DPI in addition to the window dimensions "
277917 "to scale the rendering resolution. Otherwise, only the window dimensions are"
280920 "Калі ўключана, дадаткова да маштабавання па памерах акна для адмалёўкі па "
281921 "раздзяляльнай здольнасці выкарыстоўваецца экран DPI."
282922
283 #: ../../../src/GameStateConfigDesktop.cpp:191
923 #: ../../../src/MenuConfig.cpp:514
284924 msgid ""
285925 "This enables parallax (non-tile) layers. Disabling this setting can improve "
286926 "performance in some cases."
287927 msgstr ""
288
289 #: ../../../src/GameStateConfigDesktop.cpp:192
290 msgid "Experimental"
291 msgstr "Эксперыментальна"
292
293 #: ../../../src/GameStateConfigDesktop.cpp:193
294 msgid "For handheld devices"
295 msgstr "Для мабільных прылад"
296
297 #: ../../../src/GameStateConfigDesktop.cpp:211
298 msgid "Renderer"
299 msgstr "Адмалёўшчык"
300
301 #: ../../../src/GameStateConfigDesktop.cpp:227
302 msgid "Full Screen Mode"
303 msgstr "Поўнаэкранны рэжым"
304
305 #: ../../../src/GameStateConfigDesktop.cpp:231
306 msgid "Move hero using mouse"
307 msgstr "Перамяшчаць героя мышшу"
308
309 #: ../../../src/GameStateConfigDesktop.cpp:235
310 msgid "Hardware surfaces"
311 msgstr "Апаратныя паверхні"
312
313 #: ../../../src/GameStateConfigDesktop.cpp:239
314 msgid "V-Sync"
315 msgstr "Вертыкальная сінхранізацыя"
316
317 #: ../../../src/GameStateConfigDesktop.cpp:243
318 msgid "Texture Filtering"
319 msgstr "Фільтрацыя тэкстур"
320
321 #: ../../../src/GameStateConfigDesktop.cpp:247
322 msgid "DPI scaling"
323 msgstr "Маштабаванне DPI"
324
325 #: ../../../src/GameStateConfigDesktop.cpp:251
326 msgid "Parallax Layers"
327 msgstr ""
328
329 #: ../../../src/GameStateConfigDesktop.cpp:255
330 msgid "Allow changing gamma"
331 msgstr "Дазволіць змяняць гаму"
332
333 #: ../../../src/GameStateConfigDesktop.cpp:259
334 msgid "Gamma"
335 msgstr "Гама"
336
337 #: ../../../src/GameStateConfigDesktop.cpp:263
338 msgid "Use joystick"
339 msgstr "Вкарыстоўваць джойсцік"
340
341 #: ../../../src/GameStateConfigDesktop.cpp:267
342 msgid "Joystick"
343 msgstr "Джойсцік"
344
345 #: ../../../src/GameStateConfigDesktop.cpp:283
346 msgid "Mouse aim"
347 msgstr "Нацэльвацца мышшу"
348
349 #: ../../../src/GameStateConfigDesktop.cpp:287
350 msgid "Do not use mouse"
351 msgstr "Не выкарыстоўваць мыш"
352
353 #: ../../../src/GameStateConfigDesktop.cpp:291
354 msgid "Joystick Deadzone"
355 msgstr "Мёртвая зона джойсціка"
356
357 #: ../../../src/GameState.cpp:37 ../../../src/GameState.cpp:58
358 msgid "Loading..."
359 msgstr "Загрузка..."
360
361 #: ../../../src/GameStateLoad.cpp:88 ../../../src/GameStateLoad.cpp:101
362 msgid "Delete Save"
363 msgstr "Выдаліць гульню"
364
365 #: ../../../src/GameStateLoad.cpp:88
366 msgid "Delete this save?"
367 msgstr "Выдаліць захаваную гульню?"
368
369 #: ../../../src/GameStateLoad.cpp:90
370 msgid "Exit to Title"
371 msgstr "Выйсці ў меню"
372
373 #: ../../../src/GameStateLoad.cpp:93
374 msgid "New Game"
375 msgstr "Новая гульня"
376
377 #: ../../../src/GameStateLoad.cpp:97 ../../../src/GameStateLoad.cpp:600
378 msgid "Choose a Slot"
379 msgstr "Абярыце слот"
380
381 #: ../../../src/GameStateLoad.cpp:573 ../../../src/GameStateLoad.cpp:594
382 msgid "Enable a story mod to continue"
383 msgstr "Уключыце сюжэтны мод, каб працягнуць"
384
385 #: ../../../src/GameStateLoad.cpp:589
386 msgid "Load Game"
387 msgstr "Загрузіць гульню"
388
389 #: ../../../src/GameStateLoad.cpp:695
390 msgid "Entering game world..."
391 msgstr "Уваход у гульнявы свет..."
392
393 #: ../../../src/GameStateLoad.cpp:698
394 msgid "Loading saved game..."
395 msgstr "Загрузка захаванай гульні..."
396
397 #: ../../../src/GameStateLoad.cpp:731
398 msgid "Invalid save"
399 msgstr "Хібная гульня"
400
401 #: ../../../src/GameStateLoad.cpp:755 ../../../src/ItemManager.cpp:747
402 #: ../../../src/MenuPowers.cpp:778 ../../../src/MenuPowers.cpp:1144
403 #: ../../../src/MenuPowers.cpp:1542
404 #, c-format
405 msgid "Level %d"
406 msgstr "Узровень %d"
407
408 #: ../../../src/GameStateNew.cpp:68
409 msgid "Create"
410 msgstr "Стварыць"
411
412 #: ../../../src/GameStateNew.cpp:76
413 msgid "Randomize"
414 msgstr "Перамяшайце"
415
416 #: ../../../src/GameStateNew.cpp:92
417 msgid "Choose a Portrait"
418 msgstr "Абярыце партрэт"
419
420 #: ../../../src/GameStateNew.cpp:96
421 msgid "Choose a Name"
422 msgstr "Абярыце імя"
423
424 #: ../../../src/GameStateNew.cpp:100
425 msgid "Permadeath?"
426 msgstr "Памерці можна толькі раз?"
427
428 #: ../../../src/GameStateNew.cpp:104
429 msgid "Choose a Class"
430 msgstr "Абярыце клас"
431
432 #: ../../../src/GameStateTitle.cpp:108
433 msgid "Play Game"
434 msgstr "Гуляць"
435
436 #: ../../../src/GameStateTitle.cpp:111
437 msgid "Enable a core mod to continue"
438 msgstr "Уключыце асноўны мод, каб працягнуць"
439
440 #: ../../../src/GameStateTitle.cpp:115
441 msgid "Configuration"
442 msgstr "Канфігурацыя"
443
444 #: ../../../src/GameStateTitle.cpp:118
445 msgid "Credits"
446 msgstr "Стваральнікі"
447
448 #: ../../../src/GameStateTitle.cpp:121
449 msgid "Exit Game"
450 msgstr "Выйсці"
451
452 #: ../../../src/InputState.cpp:402
453 msgid "Accept"
454 msgstr "Пагадзіцца"
455
456 #: ../../../src/InputState.cpp:403 ../../../src/SDLInputState.cpp:607
457 msgid "Up"
458 msgstr "Уверх"
459
460 #: ../../../src/InputState.cpp:404 ../../../src/SDLInputState.cpp:585
461 msgid "Down"
462 msgstr "Уніз"
463
464 #: ../../../src/InputState.cpp:405 ../../../src/SDLInputState.cpp:592
465 msgid "Left"
466 msgstr "Налева"
467
468 #: ../../../src/InputState.cpp:406 ../../../src/SDLInputState.cpp:602
469 msgid "Right"
470 msgstr "Направа"
471
472 #: ../../../src/InputState.cpp:407
473 msgid "Bar1"
474 msgstr "Панэль1"
475
476 #: ../../../src/InputState.cpp:408
477 msgid "Bar2"
478 msgstr "Панэль2"
479
480 #: ../../../src/InputState.cpp:409
481 msgid "Bar3"
482 msgstr "Панэль3"
483
484 #: ../../../src/InputState.cpp:410
485 msgid "Bar4"
486 msgstr "Панэль4"
487
488 #: ../../../src/InputState.cpp:411
489 msgid "Bar5"
490 msgstr "Панэль5"
491
492 #: ../../../src/InputState.cpp:412
493 msgid "Bar6"
494 msgstr "Панэль6"
495
496 #: ../../../src/InputState.cpp:413
497 msgid "Bar7"
498 msgstr "Панэль7"
499
500 #: ../../../src/InputState.cpp:414
501 msgid "Bar8"
502 msgstr "Панэль8"
503
504 #: ../../../src/InputState.cpp:415
505 msgid "Bar9"
506 msgstr "Панэль9"
507
508 #: ../../../src/InputState.cpp:416
509 msgid "Bar0"
510 msgstr "Панэль0"
511
512 #: ../../../src/InputState.cpp:417 ../../../src/MenuActionBar.cpp:83
513 #: ../../../src/MenuCharacter.cpp:54
514 msgid "Character"
515 msgstr "Персанаж"
516
517 #: ../../../src/InputState.cpp:418 ../../../src/MenuActionBar.cpp:84
518 #: ../../../src/MenuInventory.cpp:137 ../../../src/MenuVendor.cpp:57
519 msgid "Inventory"
520 msgstr "Інвентар"
521
522 #: ../../../src/InputState.cpp:419 ../../../src/MenuActionBar.cpp:85
523 #: ../../../src/MenuPowers.cpp:168
524 msgid "Powers"
525 msgstr "Таленты"
526
527 #: ../../../src/InputState.cpp:420 ../../../src/MenuActionBar.cpp:86
528 #: ../../../src/MenuLog.cpp:72
529 msgid "Log"
530 msgstr "Нататнік"
531
532 #: ../../../src/InputState.cpp:421
533 msgid "Main1"
534 msgstr "Галоўнае1"
535
536 #: ../../../src/InputState.cpp:422
537 msgid "Main2"
538 msgstr "Галоўнае2"
539
540 #: ../../../src/InputState.cpp:423
541 msgid "Ctrl"
542 msgstr "Ctrl"
543
544 #: ../../../src/InputState.cpp:424
545 msgid "Shift"
546 msgstr "Shift"
547
548 #: ../../../src/InputState.cpp:425
549 msgid "Alt"
550 msgstr "Alt"
551
552 #: ../../../src/InputState.cpp:426 ../../../src/SDLInputState.cpp:584
553 msgid "Delete"
554 msgstr "Delete"
555
556 #: ../../../src/InputState.cpp:427
557 msgid "ActionBar Accept"
558 msgstr "Панэль дзеянняў: пагадзіцца"
559
560 #: ../../../src/InputState.cpp:428
561 msgid "ActionBar Left"
562 msgstr "Панэль дзеянняў: улева"
563
564 #: ../../../src/InputState.cpp:429
565 msgid "ActionBar Right"
566 msgstr "Панэль дзеянняў: управа"
567
568 #: ../../../src/InputState.cpp:430
569 msgid "ActionBar Use"
570 msgstr "Панэль дзеянняў: выкарыстаць"
571
572 #: ../../../src/InputState.cpp:431
573 msgid "Developer Menu"
574 msgstr "Меню распрацоўшчыка"
575
576 #: ../../../src/InputState.cpp:433
577 msgid "Left Mouse"
578 msgstr "Левая кнопка мышы"
579
580 #: ../../../src/InputState.cpp:434
581 msgid "Middle Mouse"
582 msgstr "Сярэдняя кнопка мышы"
583
584 #: ../../../src/InputState.cpp:435
585 msgid "Right Mouse"
586 msgstr "Правая кнопка мышы"
587
588 #: ../../../src/InputState.cpp:436
589 msgid "Wheel Up"
590 msgstr "Пракрутка ўверх"
591
592 #: ../../../src/InputState.cpp:437
593 msgid "Wheel Down"
594 msgstr "Пракрутка ўніз"
595
596 #: ../../../src/InputState.cpp:438
597 msgid "Mouse X1"
598 msgstr "Мыш х2"
599
600 #: ../../../src/InputState.cpp:439
601 msgid "Mouse X2"
602 msgstr "Мыш х1"
603
604 #: ../../../src/ItemManager.cpp:450 ../../../src/ItemManager.cpp:453
605 msgid "Unknown Item"
606 msgstr "Невядомы прадмет"
607
608 #: ../../../src/ItemManager.cpp:648 ../../../src/MenuPowers.cpp:887
609 #, c-format
610 msgid "%d%% Speed"
611 msgstr "Хуткасць %d%%"
612
613 #: ../../../src/ItemManager.cpp:652 ../../../src/MenuPowers.cpp:890
614 #, c-format
615 msgid "%d%% Attack Speed"
616 msgstr "Хуткасць атакі %d%%"
617
618 #: ../../../src/ItemManager.cpp:674 ../../../src/MenuCharacter.cpp:354
619 #: ../../../src/MenuPowers.cpp:833
620 #, c-format
621 msgid "Resistance (%s)"
622 msgstr ""
623
624 #: ../../../src/ItemManager.cpp:684
625 #, c-format
626 msgid "Requires %s"
627 msgstr "Патрабуецца %s"
628
629 #: ../../../src/ItemManager.cpp:733
630 msgid "Quest Item"
631 msgstr "Прадмет задання"
632
633 #: ../../../src/ItemManager.cpp:760
634 #, c-format
635 msgid "Quality: %s"
636 msgstr "Якасць: %s"
637
638 #: ../../../src/ItemManager.cpp:785
639 #, c-format
640 msgid "Absorb: %d-%d"
641 msgstr "Паглынае: %d-%d"
642
643 #: ../../../src/ItemManager.cpp:787
644 #, c-format
645 msgid "Absorb: %d"
646 msgstr "Паглынае: %d"
647
648 #: ../../../src/ItemManager.cpp:827 ../../../src/MenuPowers.cpp:1131
649 #: ../../../src/MenuPowers.cpp:1134
650 #, c-format
651 msgid "Requires Level %d"
652 msgstr "Патрабуецца %d узровень"
653
654 #: ../../../src/ItemManager.cpp:838 ../../../src/MenuPowers.cpp:1123
655 #: ../../../src/MenuPowers.cpp:1125
656 #, c-format
657 msgid "Requires %s %d"
658 msgstr "Патрабуецца %s %d"
659
660 #: ../../../src/ItemManager.cpp:849
661 #, c-format
662 msgid "Requires Class: %s"
663 msgstr "Патрабуецца клас: %s"
664
665 #: ../../../src/ItemManager.cpp:864 ../../../src/ItemManager.cpp:876
666 #, c-format
667 msgid "Buy Price: %d %s"
668 msgstr "Кошт пакупкі: %d %s"
669
670 #: ../../../src/ItemManager.cpp:866 ../../../src/ItemManager.cpp:878
671 #, c-format
672 msgid "Buy Price: %d %s each"
673 msgstr "Кошт пакупкі: %d %s за кожны"
674
675 #: ../../../src/ItemManager.cpp:886
676 #, c-format
677 msgid "Sell Price: %d %s"
678 msgstr "Кошт продажу: %d %s"
679
680 #: ../../../src/ItemManager.cpp:888
681 #, c-format
682 msgid "Sell Price: %d %s each"
683 msgstr "Кошт продажу: %d %s за кожны"
684
685 #: ../../../src/ItemManager.cpp:897
686 msgid "Set:"
687 msgstr "Набор:"
688
689 #: ../../../src/ItemManager.cpp:904
690 #, c-format
691 msgid "%d items:"
692 msgstr "%d прадметаў:"
693
694 #: ../../../src/ItemManager.cpp:917
695 #, c-format
696 msgid "Press [%s] to use"
697 msgstr "Націсніце [%s], каб выкарыстаць"
698
699 #: ../../../src/ItemManager.cpp:920
700 #, c-format
701 msgid "Press [%s] to read"
702 msgstr "Націсніце [%s], каб прачытаць"
703
704 #: ../../../src/MenuActionBar.cpp:87
705 msgid "Loot tooltip visibility"
706 msgstr ""
707
708 #: ../../../src/MenuActionBar.cpp:88
709 msgid "Mini-map mode"
710 msgstr ""
711
712 #: ../../../src/MenuActionBar.cpp:89
713 msgid "Always show stat bar labels"
714 msgstr "Заўсёды паказваць адмеціны ў радку стану"
715
716 #: ../../../src/MenuActionBar.cpp:90
717 msgid "Show combat text"
718 msgstr "Паказваць тэкст бою"
719
720 #: ../../../src/MenuActionBar.cpp:254 ../../../src/MenuActionBar.cpp:261
721 #: ../../../src/MenuActionBar.cpp:264 ../../../src/MenuActionBar.cpp:271
722 #, c-format
723 msgid "Hotkey: %s"
724 msgstr "Гарачая клавіша: %s"
725
726 #: ../../../src/MenuActionBar.cpp:474
727 #, c-format
728 msgid "Default. Temporarily show all loot tooltips with '%s'."
729 msgstr ""
730
731 #: ../../../src/MenuActionBar.cpp:476
732 #, c-format
733 msgid "Show All. Temporarily hide all loot tooltips with '%s'."
734 msgstr ""
735
736 #: ../../../src/MenuActionBar.cpp:478
737 #, c-format
738 msgid "Hide All. Temporarily show all loot tooltips with '%s'."
739 msgstr ""
740
741 #: ../../../src/MenuActionBar.cpp:482
742 msgid "Visible"
743 msgstr ""
744
745 #: ../../../src/MenuActionBar.cpp:484
746 msgid "Visible (2x zoom)"
747 msgstr ""
748
749 #: ../../../src/MenuActionBar.cpp:486
750 msgid "Hidden"
751 msgstr ""
752
753 #: ../../../src/MenuActionBar.cpp:490 ../../../src/MenuActionBar.cpp:496
754 msgid "Enabled"
755 msgstr ""
756
757 #: ../../../src/MenuActionBar.cpp:492 ../../../src/MenuActionBar.cpp:498
758 msgid "Disabled"
759 msgstr ""
760
761 #: ../../../src/MenuActionBar.cpp:657
762 msgid "Not enough MP."
763 msgstr "Не стае маны."
764
765 #: ../../../src/MenuActiveEffects.cpp:124
766 #, c-format
767 msgid "x%d"
768 msgstr "x%d"
769
770 #: ../../../src/MenuActiveEffects.cpp:219
771 msgid "Remaining:"
772 msgstr "Засталося:"
773
774 #: ../../../src/MenuActiveEffects.cpp:225
775 #, c-format
776 msgid "x%d stacks"
777 msgstr "x%d кампанентаў"
778
779 #: ../../../src/MenuCharacter.cpp:73 ../../../src/MenuCharacter.cpp:78
780 msgid "Name"
781 msgstr "Імя"
782
783 #: ../../../src/MenuCharacter.cpp:74 ../../../src/MenuCharacter.cpp:79
784 msgid "Level"
785 msgstr "Узровень"
786
787 #: ../../../src/MenuCharacter.cpp:310
788 #, c-format
789 msgid "%d unspent stat point"
790 msgstr "%d невыкарыстаны пункт уменняў"
791
792 #: ../../../src/MenuCharacter.cpp:313
793 #, c-format
794 msgid "%d unspent stat points"
795 msgstr "%d невыкарыстаных пунктаў уменняў"
796
797 #: ../../../src/MenuCharacter.cpp:355
798 #, c-format
799 msgid "Reduces the damage taken from \"%s\" elemental attacks."
800 msgstr "Памяншае ўрон ад \"%s\" стыхійных атак."
801
802 #: ../../../src/MenuCharacter.cpp:365 ../../../src/MenuManager.cpp:283
803 #, c-format
804 msgid "XP: %d"
805 msgstr "Досвед: %d"
806
807 #: ../../../src/MenuCharacter.cpp:367
808 #, c-format
809 msgid "Next: %d"
810 msgstr "Наступны: %d"
811
812 #: ../../../src/MenuCharacter.cpp:373
813 #, c-format
814 msgid "base (%d), bonus (%d)"
815 msgstr "базавае (%d), бонус (%d)"
816
817 #: ../../../src/MenuCharacter.cpp:381 ../../../src/MenuCharacter.cpp:395
818 msgid "Related stats:"
819 msgstr "Звязаныя ўменні:"
820
821 #: ../../../src/MenuCharacter.cpp:421 ../../../src/MenuCharacter.cpp:445
822 #, c-format
823 msgid "Each level grants %d."
824 msgstr "З кожным узроўнем даецца %d."
825
826 #: ../../../src/MenuCharacter.cpp:425 ../../../src/MenuCharacter.cpp:449
827 #, c-format
828 msgid "Each point of %s grants %d."
829 msgstr "З кожным пунктам %s даецца %d"
830
831 #: ../../../src/MenuDevConsole.cpp:63
928 "Выключае пласты parallax. Выключэнне гэтага параметра ў некаторых выпадках "
929 "можа палепшыць прадукцыйнасць."
930
931 #: ../../../src/MenuConfig.cpp:515
932 msgid ""
933 "Enables the below setting that controls the screen gamma level. The behavior"
934 " of the gamma setting can vary between platforms."
935 msgstr ""
936 "Уключае параметр, што кіруе ўзроўнем гамы экрана. Паводзіны параметра могуць"
937 " змяняцца ў залежнасці ад платформы."
938
939 #: ../../../src/MenuConfig.cpp:516
940 msgid ""
941 "Provides additional text for information that is primarily conveyed through "
942 "color."
943 msgstr ""
944 "Падае дадатковы тэкст для інфармацыі, што пераважна падаецца праз колер."
945
946 #: ../../../src/MenuConfig.cpp:517
947 msgid ""
948 "Some mods will automatically hide the stat bars when they are inactive. "
949 "Disabling this option will keep them displayed at all times."
950 msgstr ""
951 "Некаторыя мадыфікацыі аўтаматычна хаваюць радкі стану, калі яны неактыўныя. "
952 "Калі выключыць гэты параметр, то яны будуць адлюстроўвацца заўсёды."
953
954 #: ../../../src/MenuConfig.cpp:518
955 msgid ""
956 "When enabled, empty equipment slots will be filled with applicable items "
957 "when they are obtained."
958 msgstr ""
959 "Калі параметр уключаны, пустыя слоты будуць запаўняцца адпаведнымі "
960 "прадметамі пры іх атрыманні."
961
962 #: ../../../src/MenuConfig.cpp:519
963 msgid ""
964 "Shows a marker above enemies, allies, and the player when they are obscured "
965 "by tall objects."
966 msgstr ""
967 "Паказвае адзнаку над ворагамі, сябрамі і гульцамі, калі яны схаваныя "
968 "высокімі аб'ектамі."
969
970 #: ../../../src/MenuConfig.cpp:520
971 msgid ""
972 "When enabled, tooltips for equipped items of the same type are shown next to"
973 " standard item tooltips."
974 msgstr ""
975
976 #: ../../../src/MenuConfig.cpp:521
977 msgid ""
978 "This allows the game to be controlled entirely with the keyboard (or "
979 "joystick)."
980 msgstr ""
981 "Дазваляе поўнасцю кіраваць гульнёй пры дапамозе клавіятуры альбо джойсціка."
982
983 #: ../../../src/MenuConfig.cpp:522
984 msgid ""
985 "When 'Move hero using mouse' is enabled, this setting controls if 'Main1' or"
986 " 'Main2' is used to move the hero. If enabled, 'Main2' will move the hero "
987 "instead of 'Main1'."
988 msgstr ""
989 "Калі параметр \"Перамяшчаць героя пры дапамозе мышы\" уключаны, то параметр "
990 "вызначае ці выкарыстоўваецца \"Галоўнае1\" ці \"Галоўнае2\" для перамяшчэння"
991 " героя. Калі ўключана \"Галоўнае2\" перамясціць героя замест \"Галоўнае1\"."
992
993 #: ../../../src/MenuConfig.cpp:523
994 msgid ""
995 "When 'Move hero using mouse' is enabled, this setting controls if the Power "
996 "assigned to the movement button can be used by targeting an enemy. If this "
997 "setting is disabled, it is required to use 'Shift' to access the Power "
998 "assigned to the movement button."
999 msgstr ""
1000 "Калі параметр \"Перамяшчаць героя пры дапамозе мышы\" уключаны, то параметр "
1001 "вызначае ці можна выкарыстоўваць талент, прызначаны кнопцы руху для "
1002 "вызначэння ворага. Калі параметр выключаны, для гэтага неабходна "
1003 "выкарыстоўваць \"Shift\"."
1004
1005 #: ../../../src/MenuConfig.cpp:524
1006 msgid ""
1007 "The player's attacks will be aimed in the direction of the mouse cursor when"
1008 " this is enabled."
1009 msgstr ""
1010 "Калі ўключана, атакі гульца будуць накіроўваца адпаведна накірунка курсора "
1011 "мышы."
1012
1013 #: ../../../src/MenuConfig.cpp:575
1014 msgid "Active Mods"
1015 msgstr "Актыўныя моды"
1016
1017 #: ../../../src/MenuConfig.cpp:584
1018 msgid "Available Mods"
1019 msgstr "Наяўныя моды"
1020
1021 #: ../../../src/MenuConfig.cpp:603
1022 msgid "<< Disable"
1023 msgstr "<< Выключыць"
1024
1025 #: ../../../src/MenuConfig.cpp:609
1026 msgid "Enable >>"
1027 msgstr "Уключыць >>"
1028
1029 #: ../../../src/MenuConfig.cpp:1444
1030 msgid "Version:"
1031 msgstr "Версія:"
1032
1033 #: ../../../src/MenuConfig.cpp:1449
1034 msgid "Game:"
1035 msgstr "Гульня:"
1036
1037 #: ../../../src/MenuConfig.cpp:1454
1038 msgid "Engine version:"
1039 msgstr "Версія рухавіка:"
1040
1041 #: ../../../src/MenuConfig.cpp:1462
1042 msgid "Requires mods:"
1043 msgstr "Патрабуюцца моды:"
1044
1045 #: ../../../src/MenuConfig.cpp:1570 ../../../src/SDLInputState.cpp:748
1046 msgid "(none)"
1047 msgstr "(няма)"
1048
1049 #: ../../../src/MenuConfig.cpp:1587 ../../../src/MenuGameOver.cpp:73
1050 msgid "Save & Exit"
1051 msgstr "Захаваць і выйсці"
1052
1053 #: ../../../src/MenuDevConsole.cpp:65
8321054 msgid "Execute"
8331055 msgstr "Запусціць"
8341056
835 #: ../../../src/MenuDevConsole.cpp:101 ../../../src/MenuDevConsole.cpp:151
1057 #: ../../../src/MenuDevConsole.cpp:103 ../../../src/MenuDevConsole.cpp:153
8361058 msgid "Developer Console"
8371059 msgstr "Кансоль распрацоўшчыка"
8381060
839 #: ../../../src/MenuDevConsole.cpp:141
1061 #: ../../../src/MenuDevConsole.cpp:143
8401062 #, c-format
8411063 msgid "Use '%s' to inspect with the cursor."
8421064 msgstr "Выкарыстоўвайце \"%s\" для агляду з дапамогай курсора."
8431065
844 #: ../../../src/MenuDevConsole.cpp:146
1066 #: ../../../src/MenuDevConsole.cpp:148
8451067 msgid "Arguments with spaces should be enclosed with double quotes. Example:"
8461068 msgstr "Аргументы з прагаламі мусяць быць у падвойных двукоссях. Прыклад:"
8471069
848 #: ../../../src/MenuDevConsole.cpp:147
1070 #: ../../../src/MenuDevConsole.cpp:149
8491071 msgid "Type 'help' to get a list of commands."
8501072 msgstr "Увядзіце \"help\", каб атрымаць спіс загадаў."
8511073
852 #: ../../../src/MenuDevConsole.cpp:209 ../../../src/MenuDevConsole.cpp:213
1074 #: ../../../src/MenuDevConsole.cpp:211 ../../../src/MenuDevConsole.cpp:215
8531075 msgid "px"
8541076 msgstr "пікс"
8551077
856 #: ../../../src/MenuDevConsole.cpp:224
1078 #: ../../../src/MenuDevConsole.cpp:226
8571079 msgid "Distance"
8581080 msgstr "Дыстанцыя"
8591081
860 #: ../../../src/MenuDevConsole.cpp:239 ../../../src/MenuDevConsole.cpp:286
1082 #: ../../../src/MenuDevConsole.cpp:241 ../../../src/MenuDevConsole.cpp:289
1083 #: ../../../src/MenuDevConsole.cpp:303
8611084 msgid "Entity"
8621085 msgstr "Аб'ект"
8631086
864 #: ../../../src/MenuDevConsole.cpp:261 ../../../src/MenuDevConsole.cpp:268
1087 #: ../../../src/MenuDevConsole.cpp:263 ../../../src/MenuDevConsole.cpp:270
8651088 msgid "none"
8661089 msgstr "няма"
8671090
868 #: ../../../src/MenuDevConsole.cpp:262 ../../../src/MenuDevConsole.cpp:264
1091 #: ../../../src/MenuDevConsole.cpp:264 ../../../src/MenuDevConsole.cpp:266
8691092 msgid "wall"
8701093 msgstr "перашкода"
8711094
872 #: ../../../src/MenuDevConsole.cpp:263 ../../../src/MenuDevConsole.cpp:265
1095 #: ../../../src/MenuDevConsole.cpp:265 ../../../src/MenuDevConsole.cpp:267
8731096 msgid "short wall / pit"
8741097 msgstr "малая перашкода/яма"
8751098
876 #: ../../../src/MenuDevConsole.cpp:266
1099 #: ../../../src/MenuDevConsole.cpp:268
8771100 msgid "entity"
8781101 msgstr "аб'ект"
8791102
880 #: ../../../src/MenuDevConsole.cpp:267
1103 #: ../../../src/MenuDevConsole.cpp:269
8811104 msgid "entity, ally"
882 msgstr "аб'ект/памочнік"
883
884 #: ../../../src/MenuDevConsole.cpp:274
1105 msgstr "аб'ект/памагаты"
1106
1107 #: ../../../src/MenuDevConsole.cpp:276
8851108 msgid "Tile"
8861109 msgstr "Плітка"
8871110
888 #: ../../../src/MenuDevConsole.cpp:360
1111 #: ../../../src/MenuDevConsole.cpp:377
8891112 msgid "adds a power to the action bar"
8901113 msgstr "дадае таленты на панэль дзеянняў"
8911114
892 #: ../../../src/MenuDevConsole.cpp:361
1115 #: ../../../src/MenuDevConsole.cpp:378
8931116 msgid "turns on/off the display of the FPS counter"
894 msgstr ""
895
896 #: ../../../src/MenuDevConsole.cpp:362
1117 msgstr "уключыць/выключыць адлюставанне лічыльніка FPS"
1118
1119 #: ../../../src/MenuDevConsole.cpp:379
8971120 msgid "turns on/off all of the HUD elements"
8981121 msgstr "пераключае адлюстраванне элементаў інтэрфейсу"
8991122
900 #: ../../../src/MenuDevConsole.cpp:363
1123 #: ../../../src/MenuDevConsole.cpp:380
9011124 msgid "turns on/off the developer hud"
9021125 msgstr "пераключае інтэрфейс распрацоўшчыка"
9031126
904 #: ../../../src/MenuDevConsole.cpp:364
1127 #: ../../../src/MenuDevConsole.cpp:381
9051128 msgid ""
9061129 "Prints a list of powers that match a search term. No search term will list "
9071130 "all items"
9081131 msgstr ""
9091132 "Выводзіць спіс знойдзеных талентаў. Калі нічога не ўвесці - выведзе ўсе."
9101133
911 #: ../../../src/MenuDevConsole.cpp:365
1134 #: ../../../src/MenuDevConsole.cpp:382
9121135 msgid "Prints out all the map filenames located in the \"maps/\" directory."
9131136 msgstr "Выводзіць спіс усіх назваў файлаў мапаў з каталога \"maps\"."
9141137
915 #: ../../../src/MenuDevConsole.cpp:366
1138 #: ../../../src/MenuDevConsole.cpp:383
9161139 msgid ""
9171140 "Prints out the active campaign statuses that match a search term. No search "
9181141 "term will list all active statuses"
9201143 "Выводзіць спіс знойдзеных статусаў актыўных кампаній. Калі нічога не ўвесці "
9211144 "- выведзе спіс усіх статусаў"
9221145
923 #: ../../../src/MenuDevConsole.cpp:367
1146 #: ../../../src/MenuDevConsole.cpp:384
9241147 msgid ""
9251148 "Prints a list of items that match a search term. No search term will list "
9261149 "all items"
9281151 "Выводзіць спіс знойдзеных прадметаў. Калі нічога не ўвесці - выведзе спіс "
9291152 "усіх прадметаў"
9301153
931 #: ../../../src/MenuDevConsole.cpp:368
1154 #: ../../../src/MenuDevConsole.cpp:385
9321155 msgid ""
9331156 "parses a series of event components and executes them as a single event"
9341157 msgstr "разбірае набор кампанентаў падзеі і выконвае іх як адну падзею"
9351158
936 #: ../../../src/MenuDevConsole.cpp:369
1159 #: ../../../src/MenuDevConsole.cpp:386
9371160 msgid "clears the command history"
9381161 msgstr "ачышчае гісторыю загадаў"
9391162
940 #: ../../../src/MenuDevConsole.cpp:370
1163 #: ../../../src/MenuDevConsole.cpp:387
9411164 msgid "displays this text"
9421165 msgstr "выводзіць гэты тэкст"
9431166
944 #: ../../../src/MenuDevConsole.cpp:377
1167 #: ../../../src/MenuDevConsole.cpp:394
9451168 msgid "Toggled the developer hud"
9461169 msgstr "Інтэрфейс распрацоўшчыка пераключаны"
9471170
948 #: ../../../src/MenuDevConsole.cpp:381
1171 #: ../../../src/MenuDevConsole.cpp:398
9491172 msgid "Toggled the hud"
9501173 msgstr "Інтэрфейс пераключаны"
9511174
952 #: ../../../src/MenuDevConsole.cpp:385
1175 #: ../../../src/MenuDevConsole.cpp:402
9531176 msgid "Toggled the FPS counter"
954 msgstr ""
955
956 #: ../../../src/MenuDevConsole.cpp:534
1177 msgstr "Пераключыць лічыльнік FPS"
1178
1179 #: ../../../src/MenuDevConsole.cpp:552
9571180 msgid "ERROR: Incorrect number of arguments"
9581181 msgstr "ПАМЫЛКА: хібная колькасць аргументаў"
9591182
960 #: ../../../src/MenuDevConsole.cpp:536 ../../../src/MenuDevConsole.cpp:564
1183 #: ../../../src/MenuDevConsole.cpp:554 ../../../src/MenuDevConsole.cpp:582
9611184 msgid "HINT:"
9621185 msgstr "ПАДКАЗКА:"
9631186
964 #: ../../../src/MenuDevConsole.cpp:536
1187 #: ../../../src/MenuDevConsole.cpp:554
9651188 msgid "<id>"
9661189 msgstr "<id>"
9671190
968 #: ../../../src/MenuDevConsole.cpp:552
1191 #: ../../../src/MenuDevConsole.cpp:570
9691192 #, c-format
9701193 msgid "ERROR: '%s' is not a valid event key"
9711194 msgstr "ПАМЫЛКА: \"%s\" - хібны ключ падзеі"
9721195
973 #: ../../../src/MenuDevConsole.cpp:562
1196 #: ../../../src/MenuDevConsole.cpp:580
9741197 msgid "ERROR: Too few arguments"
9751198 msgstr "ПАМЫЛКА: не стае аргументаў"
9761199
977 #: ../../../src/MenuDevConsole.cpp:564
1200 #: ../../../src/MenuDevConsole.cpp:582
9781201 msgid "<key>=<val> <key>=<val> ..."
9791202 msgstr "<key>=<val> <key>=<val> …"
9801203
981 #: ../../../src/MenuDevConsole.cpp:569
1204 #: ../../../src/MenuDevConsole.cpp:587
9821205 msgid "ERROR: Unknown command"
9831206 msgstr "ПАМЫЛКА: невядомы загад"
9841207
985 #: ../../../src/MenuDevConsole.cpp:571
1208 #: ../../../src/MenuDevConsole.cpp:589
9861209 msgid "HINT: Type help"
9871210 msgstr "ПАДКАЗКА: ўвядзіце help"
9881211
989 #: ../../../src/MenuEnemy.cpp:138
1212 #: ../../../src/MenuEnemy.cpp:162
9901213 #, c-format
9911214 msgid "%s level %d"
9921215 msgstr "%s узровень %d"
9931216
994 #: ../../../src/MenuEnemy.cpp:162
1217 #: ../../../src/MenuEnemy.cpp:186
9951218 msgid "Dead"
9961219 msgstr "Забіты"
9971220
998 #: ../../../src/MenuEnemy.cpp:164
1221 #: ../../../src/MenuEnemy.cpp:188
9991222 msgid "Destroyed"
10001223 msgstr "Знішчана"
10011224
1002 #: ../../../src/MenuExit.cpp:85 ../../../src/MenuExit.cpp:139
1003 msgid "Paused"
1004 msgstr "Прыпыніць"
1005
1006 #: ../../../src/MenuExit.cpp:91
1007 msgid "Save & Exit"
1008 msgstr "Захаваць і выйсці"
1009
1010 #: ../../../src/MenuExit.cpp:92
1011 msgid "Exit"
1012 msgstr "Выйсці"
1013
1014 #: ../../../src/MenuExit.cpp:96
1015 msgid "Continue"
1016 msgstr "Працягнуць"
1017
1018 #: ../../../src/MenuInventory.cpp:73
1019 msgid "Automatically equip items"
1020 msgstr "Аўтаматычна апранаць прадметы"
1021
1022 #: ../../../src/MenuInventory.cpp:188
1225 #: ../../../src/MenuGameOver.cpp:69
1226 msgid "Game Over"
1227 msgstr ""
1228
1229 #: ../../../src/MenuInventory.cpp:178
10231230 #, c-format
10241231 msgid "Lost %d%% of %s."
10251232 msgstr "Страчана %d%% %s."
10261233
1027 #: ../../../src/MenuInventory.cpp:195
1234 #: ../../../src/MenuInventory.cpp:185
10281235 #, c-format
10291236 msgid "Lost %d%% of total XP."
10301237 msgstr "Страчана %d%% агульнага досведу."
10311238
1032 #: ../../../src/MenuInventory.cpp:200
1239 #: ../../../src/MenuInventory.cpp:190
10331240 #, c-format
10341241 msgid "Lost %d%% of current level XP."
10351242 msgstr "Страчана %d%% бягучага ўзроўня досведу."
10361243
1037 #: ../../../src/MenuInventory.cpp:226
1244 #: ../../../src/MenuInventory.cpp:216
10381245 #, c-format
10391246 msgid "Lost %s."
10401247 msgstr "Страчана %s."
10411248
1042 #: ../../../src/MenuInventory.cpp:274 ../../../src/MenuStash.cpp:146
1249 #: ../../../src/MenuInventory.cpp:258 ../../../src/MenuStash.cpp:276
10431250 #, c-format
10441251 msgid "%d %s"
10451252 msgstr "%d %s"
10461253
1047 #: ../../../src/MenuInventory.cpp:317
1254 #: ../../../src/MenuInventory.cpp:301
10481255 msgid "Pick up item(s):"
10491256 msgstr "Паднята прадметаў:"
10501257
1051 #: ../../../src/MenuInventory.cpp:318
1258 #: ../../../src/MenuInventory.cpp:302
10521259 msgid "Use or equip item:"
10531260 msgstr "Выкарыстаць альбо апрануць прадмет:"
10541261
1055 #: ../../../src/MenuInventory.cpp:319
1262 #: ../../../src/MenuInventory.cpp:303
10561263 #, c-format
10571264 msgid "%s modifiers"
10581265 msgstr "%s мадыфікатараў"
10591266
1060 #: ../../../src/MenuInventory.cpp:320
1267 #: ../../../src/MenuInventory.cpp:304
10611268 msgid "Select a quantity of item:"
10621269 msgstr "Абраць колькасць прадметаў:"
10631270
1064 #: ../../../src/MenuInventory.cpp:323
1271 #: ../../../src/MenuInventory.cpp:307
10651272 msgid "Stash item stack:"
10661273 msgstr "Перамясціць набор прадметаў у схованку:"
10671274
1068 #: ../../../src/MenuInventory.cpp:325
1275 #: ../../../src/MenuInventory.cpp:309
10691276 msgid "Sell item stack:"
10701277 msgstr "Прадаць набор прадметаў:"
10711278
1072 #: ../../../src/MenuInventory.cpp:592
1279 #: ../../../src/MenuInventory.cpp:576
10731280 msgid "You don't have enough of the required item."
10741281 msgstr "Не стае патрэбных прадметаў."
10751282
1076 #: ../../../src/MenuInventory.cpp:599
1283 #: ../../../src/MenuInventory.cpp:588
10771284 msgid "You can't use this item right now."
10781285 msgstr "Зараз вы не можаце выкарыстаць гэты прадмет."
10791286
1080 #: ../../../src/MenuInventory.cpp:611
1287 #: ../../../src/MenuInventory.cpp:600
10811288 msgid "This item can only be used from the action bar."
10821289 msgstr "Гэты прадмет можна выкарыстаць толькі з панэлі дзеянняў."
10831290
1084 #: ../../../src/MenuInventory.cpp:729
1291 #: ../../../src/MenuInventory.cpp:718
10851292 msgid "Inventory is full."
10861293 msgstr "Інвентар поўны."
10871294
1088 #: ../../../src/MenuInventory.cpp:849
1295 #: ../../../src/MenuInventory.cpp:843
10891296 #, c-format
10901297 msgid "Not enough %s."
10911298 msgstr "Не стае %s."
10921299
1093 #: ../../../src/MenuInventory.cpp:869 ../../../src/MenuInventory.cpp:876
1300 #: ../../../src/MenuInventory.cpp:863 ../../../src/MenuInventory.cpp:870
10941301 msgid "This item can not be sold."
10951302 msgstr "Гэты прадмет немагчыма прадаць."
10961303
11021309 msgid "Quests"
11031310 msgstr "Заданні"
11041311
1105 #: ../../../src/MenuManager.cpp:286
1312 #: ../../../src/MenuManager.cpp:305
11061313 #, c-format
11071314 msgid "XP: %d/%d"
11081315 msgstr "Досвед: %d/%d"
11091316
1110 #: ../../../src/MenuManager.cpp:827
1317 #: ../../../src/MenuManager.cpp:875
11111318 msgid "This item can not be dropped."
11121319 msgstr "Гэты прадмет немагчыма выкінуць."
1320
1321 #: ../../../src/MenuManager.cpp:1501
1322 msgid "Equipped"
1323 msgstr ""
1324
1325 #: ../../../src/MenuMovementType.cpp:87
1326 msgid "Select a Movement Type"
1327 msgstr ""
1328
1329 #: ../../../src/MenuMovementType.cpp:89
1330 msgid "Can be changed later in the Configuration menu."
1331 msgstr ""
1332
1333 #: ../../../src/MenuMovementType.cpp:92 ../../../src/MenuMovementType.cpp:122
1334 msgid "Keyboard"
1335 msgstr ""
1336
1337 #: ../../../src/MenuMovementType.cpp:93 ../../../src/MenuMovementType.cpp:128
1338 msgid "Mouse"
1339 msgstr ""
1340
1341 #: ../../../src/MenuMovementType.cpp:129
1342 msgid "Button"
1343 msgstr ""
11131344
11141345 #: ../../../src/MenuNumPicker.cpp:59
11151346 msgid "Enter amount:"
11161347 msgstr "Увядзіце колькасць:"
11171348
1118 #: ../../../src/MenuPowers.cpp:787
1349 #: ../../../src/MenuPowers.cpp:872
11191350 msgid "Passive"
11201351 msgstr "Пасіўныя"
11211352
1122 #: ../../../src/MenuPowers.cpp:792
1353 #: ../../../src/MenuPowers.cpp:879
11231354 #, c-format
11241355 msgid "Costs %d MP"
11251356 msgstr "Каштуе %d маны"
11261357
1127 #: ../../../src/MenuPowers.cpp:796
1358 #: ../../../src/MenuPowers.cpp:883
11281359 #, c-format
11291360 msgid "Costs %d HP"
11301361 msgstr "Каштуе %d жыцця"
11311362
1132 #: ../../../src/MenuPowers.cpp:801
1363 #: ../../../src/MenuPowers.cpp:887
11331364 msgid "Cooldown:"
11341365 msgstr "Аднаўленне:"
11351366
1136 #: ../../../src/MenuPowers.cpp:866 ../../../src/MenuPowers.cpp:869
1367 #: ../../../src/MenuPowers.cpp:938 ../../../src/MenuPowers.cpp:941
11371368 msgid "Damage per second"
11381369 msgstr "Урон за секунду"
11391370
1140 #: ../../../src/MenuPowers.cpp:872 ../../../src/MenuPowers.cpp:875
1371 #: ../../../src/MenuPowers.cpp:944 ../../../src/MenuPowers.cpp:947
11411372 msgid "HP per second"
11421373 msgstr "Жыцця за секунду"
11431374
1144 #: ../../../src/MenuPowers.cpp:878 ../../../src/MenuPowers.cpp:881
1375 #: ../../../src/MenuPowers.cpp:950 ../../../src/MenuPowers.cpp:953
11451376 msgid "MP per second"
11461377 msgstr "Маны за секунду"
11471378
1148 #: ../../../src/MenuPowers.cpp:885
1379 #: ../../../src/MenuPowers.cpp:957
11491380 msgid "Immobilize"
11501381 msgstr "Зафіксаваць"
11511382
1152 #: ../../../src/MenuPowers.cpp:893
1383 #: ../../../src/MenuPowers.cpp:965
11531384 msgid "Immunity"
11541385 msgstr "Устойлівасць"
11551386
1156 #: ../../../src/MenuPowers.cpp:896
1387 #: ../../../src/MenuPowers.cpp:968
11571388 msgid "Immunity to damage over time"
11581389 msgstr "Устойлівасць да перыядычнага ўрону"
11591390
1160 #: ../../../src/MenuPowers.cpp:899
1391 #: ../../../src/MenuPowers.cpp:971
11611392 msgid "Immunity to slow"
11621393 msgstr "Устойлівасць да запавольвання"
11631394
1164 #: ../../../src/MenuPowers.cpp:902
1395 #: ../../../src/MenuPowers.cpp:974
11651396 msgid "Immunity to stun"
11661397 msgstr "Устойлівасць да аглушэння"
11671398
1168 #: ../../../src/MenuPowers.cpp:905
1399 #: ../../../src/MenuPowers.cpp:977
11691400 msgid "Immunity to HP steal"
11701401 msgstr "Устойлівасць да выцягвання жыцця"
11711402
1172 #: ../../../src/MenuPowers.cpp:908
1403 #: ../../../src/MenuPowers.cpp:980
11731404 msgid "Immunity to MP steal"
11741405 msgstr "Устойлівасць да выцягвання маны"
11751406
1176 #: ../../../src/MenuPowers.cpp:911
1407 #: ../../../src/MenuPowers.cpp:983
11771408 msgid "Immunity to knockback"
11781409 msgstr "Устойлівасць да скульвання"
11791410
1180 #: ../../../src/MenuPowers.cpp:914
1411 #: ../../../src/MenuPowers.cpp:986
11811412 msgid "Immunity to damage reflection"
11821413 msgstr "Устойлівасць да адбіцця ўрону"
11831414
1184 #: ../../../src/MenuPowers.cpp:917
1415 #: ../../../src/MenuPowers.cpp:992
11851416 msgid "Stun"
11861417 msgstr "Аглушэнне"
11871418
1188 #: ../../../src/MenuPowers.cpp:920
1419 #: ../../../src/MenuPowers.cpp:995
11891420 msgid "Automatic revive on death"
11901421 msgstr "Аўтаматычна адраджацца пасля смерці"
11911422
1192 #: ../../../src/MenuPowers.cpp:923
1423 #: ../../../src/MenuPowers.cpp:998
11931424 msgid "Convert"
11941425 msgstr "Пераўтварыць"
11951426
1196 #: ../../../src/MenuPowers.cpp:926
1427 #: ../../../src/MenuPowers.cpp:1001
11971428 msgid "Fear"
11981429 msgstr "Страх"
11991430
1200 #: ../../../src/MenuPowers.cpp:929
1431 #: ../../../src/MenuPowers.cpp:1004
12011432 msgid "Lifespan"
12021433 msgstr "Працягласць жыцця"
12031434
1204 #: ../../../src/MenuPowers.cpp:953
1435 #: ../../../src/MenuPowers.cpp:1028
12051436 msgid "Magical Shield"
12061437 msgstr "Магічны шчыт"
12071438
1208 #: ../../../src/MenuPowers.cpp:982
1439 #: ../../../src/MenuPowers.cpp:1057
12091440 msgid "Healing"
12101441 msgstr "Лекаванне"
12111442
1212 #: ../../../src/MenuPowers.cpp:985
1443 #: ../../../src/MenuPowers.cpp:1060
12131444 msgid "Knockback"
12141445 msgstr "Скульванне"
12151446
1216 #: ../../../src/MenuPowers.cpp:1010
1447 #: ../../../src/MenuPowers.cpp:1084
12171448 #, c-format
12181449 msgid "%d%% chance"
12191450 msgstr "%d%% шанец"
12201451
1221 #: ../../../src/MenuPowers.cpp:1062
1452 #: ../../../src/MenuPowers.cpp:1136
12221453 msgid "Base Accuracy"
12231454 msgstr "Базавая трапнасць"
12241455
1225 #: ../../../src/MenuPowers.cpp:1082
1456 #: ../../../src/MenuPowers.cpp:1156
12261457 msgid "Base Critical Chance"
12271458 msgstr "Базавы шанец крытычнага ўрону"
12281459
1229 #: ../../../src/MenuPowers.cpp:1090
1460 #: ../../../src/MenuPowers.cpp:1164
12301461 msgid "Ignores Absorbtion"
12311462 msgstr "Не зважае на паглынанне"
12321463
1233 #: ../../../src/MenuPowers.cpp:1095
1464 #: ../../../src/MenuPowers.cpp:1169
12341465 msgid "Ignores Avoidance"
12351466 msgstr "Не зважае на ўхіленне"
12361467
1237 #: ../../../src/MenuPowers.cpp:1100
1468 #: ../../../src/MenuPowers.cpp:1174
12381469 #, c-format
12391470 msgid "%d%% Chance to crit slowed targets"
12401471 msgstr "%d%% шанец нанесці крытычны ўрон запаволеным супраціўнікам"
12411472
1242 #: ../../../src/MenuPowers.cpp:1105
1473 #: ../../../src/MenuPowers.cpp:1179
12431474 #, c-format
12441475 msgid "Elemental Damage (%s)"
1245 msgstr ""
1246
1247 #: ../../../src/MenuPowers.cpp:1114
1476 msgstr "Стыхійны ўрон (%s)"
1477
1478 #: ../../../src/MenuPowers.cpp:1188
12481479 #, c-format
12491480 msgid "Requires a %s"
12501481 msgstr "Патрабуецца %s"
12511482
1252 #: ../../../src/MenuPowers.cpp:1151 ../../../src/MenuPowers.cpp:1154
1483 #: ../../../src/MenuPowers.cpp:1226 ../../../src/MenuPowers.cpp:1229
12531484 #, c-format
12541485 msgid "Requires Power: %s"
12551486 msgstr "Патрабуецца талент: %s"
12561487
1257 #: ../../../src/MenuPowers.cpp:1163
1488 #: ../../../src/MenuPowers.cpp:1238
12581489 msgid "Click to Unlock (uses 1 Skill Point)"
12591490 msgstr "Пстрыкніце, каб разблакаваць (за 1 пункт уменняў)"
12601491
1261 #: ../../../src/MenuPowers.cpp:1167 ../../../src/MenuPowers.cpp:1169
1492 #: ../../../src/MenuPowers.cpp:1242 ../../../src/MenuPowers.cpp:1244
12621493 msgid "Requires 1 Skill Point"
12631494 msgstr "Патрабуецца 1 пункт уменняў"
12641495
1265 #: ../../../src/MenuPowers.cpp:1355
1266 #, c-format
1267 msgid "%d unspent skill point"
1268 msgstr "%d невыкарыстаны пункт уменняў"
1269
1270 #: ../../../src/MenuPowers.cpp:1358
1271 #, c-format
1272 msgid "%d unspent skill points"
1273 msgstr "%d невыкарыстаных пунктаў уменняў"
1274
1275 #: ../../../src/MenuPowers.cpp:1388
1496 #: ../../../src/MenuPowers.cpp:1444
1497 #, c-format
1498 msgid "Available skill points: %d"
1499 msgstr ""
1500
1501 #: ../../../src/MenuPowers.cpp:1476
12761502 msgid "Next Level:"
12771503 msgstr "Наступны ўзровень:"
12781504
1279 #: ../../../src/MenuStash.cpp:96
1280 msgid "Shared Stash"
1281 msgstr "Агульныя запасы"
1282
1283 #: ../../../src/MenuStash.cpp:209
1284 msgid "Can not store quest items in the stash."
1285 msgstr "Прадметы заданняў нельга захоўваць у схованцы."
1286
1287 #: ../../../src/MenuStash.cpp:219
1505 #: ../../../src/MenuStash.cpp:80 ../../../src/MenuStash.cpp:161
1506 msgid "Stash"
1507 msgstr "Схованка"
1508
1509 #: ../../../src/MenuStash.cpp:174 ../../../src/MenuStash.cpp:188
1510 msgid "Private"
1511 msgstr "Асабістае"
1512
1513 #: ../../../src/MenuStash.cpp:175
1514 msgid "Shared"
1515 msgstr "Абагульнена"
1516
1517 #: ../../../src/MenuStash.cpp:340
1518 msgid "This item can not be stored in the stash."
1519 msgstr "Гэты аб'ект немагчыма захоўваць у схованцы."
1520
1521 #: ../../../src/MenuStash.cpp:345
1522 msgid "This item can not be stored in the private stash."
1523 msgstr "Гэты аб'ект немагчыма захоўваць у асабістай схованцы."
1524
1525 #: ../../../src/MenuStash.cpp:350
1526 msgid "This item can not be stored in the shared stash."
1527 msgstr "Гэты аб'ект немагчыма захоўваць у агульнай схованцы."
1528
1529 #: ../../../src/MenuStash.cpp:360
12881530 msgid "Stash is full."
12891531 msgstr "Схованка поўная."
12901532
1291 #: ../../../src/MenuTalker.cpp:454
1533 #: ../../../src/MenuStash.cpp:414
1534 #, c-format
1535 msgid "Can not store item in stash: %s"
1536 msgstr "Немагчыма захоўваць у схованцы: %s"
1537
1538 #: ../../../src/MenuTalker.cpp:448
1539 #, c-format
1540 msgid "<dialog node %d>"
1541 msgstr "<dialog node %d>"
1542
1543 #: ../../../src/MenuTalker.cpp:456
12921544 msgid "Trade"
12931545 msgstr "Гандляваць"
12941546
1295 #: ../../../src/MenuVendor.cpp:58
1547 #: ../../../src/MenuVendor.cpp:60
12961548 msgid "Buyback"
12971549 msgstr "Выкуп"
12981550
1299 #: ../../../src/MenuVendor.cpp:279
1551 #: ../../../src/MenuVendor.cpp:283
13001552 msgid "Vendor"
13011553 msgstr "Гандляр"
13021554
1303 #: ../../../src/PowerManager.cpp:1136
1555 #: ../../../src/PowerManager.cpp:1208
13041556 #, c-format
13051557 msgid "+%d Shield"
13061558 msgstr "+%d Шчыт"
13071559
1308 #: ../../../src/PowerManager.cpp:1392
1560 #: ../../../src/PowerManager.cpp:1465
13091561 msgid "You are already transformed, untransform first."
1310 msgstr "Вы ўжо трансфарміраваны, спачатку растрансфарміруўцеся."
1311
1312 #: ../../../src/PowerManager.cpp:1404
1562 msgstr "Вы ўжо трансфарманыя, спачатку растрансфармуўцеся."
1563
1564 #: ../../../src/PowerManager.cpp:1477
13131565 msgid "Could not untransform at this position."
1314 msgstr "Тут немагчыма растрансфарміравацца"
1566 msgstr "Тут немагчыма растрансфармавацца"
13151567
13161568 #: ../../../src/QuestLog.cpp:234
13171569 msgid "Completed Quests"
13181570 msgstr "Завершаныя заданні"
13191571
1320 #: ../../../src/SaveLoad.cpp:243 ../../../src/SaveLoad.cpp:244
1572 #: ../../../src/SaveLoad.cpp:250 ../../../src/SaveLoad.cpp:251
13211573 msgid "Game saved."
1322 msgstr "Гульня захавана."
1323
1324 #: ../../../src/SDLInputState.cpp:582
1574 msgstr "Гульня захаваная."
1575
1576 #: ../../../src/SDLInputState.cpp:643
1577 msgid "BkSp"
1578 msgstr ""
1579
1580 #: ../../../src/SDLInputState.cpp:644
1581 msgid "Caps"
1582 msgstr ""
1583
1584 #: ../../../src/SDLInputState.cpp:645
1585 msgid "Del"
1586 msgstr ""
1587
1588 #: ../../../src/SDLInputState.cpp:647 ../../../src/SDLInputState.cpp:677
1589 msgid "End"
1590 msgstr "End"
1591
1592 #: ../../../src/SDLInputState.cpp:648
1593 msgid "Esc"
1594 msgstr ""
1595
1596 #: ../../../src/SDLInputState.cpp:649 ../../../src/SDLInputState.cpp:679
1597 msgid "Home"
1598 msgstr "Home"
1599
1600 #: ../../../src/SDLInputState.cpp:650
1601 msgid "Ins"
1602 msgstr ""
1603
1604 #: ../../../src/SDLInputState.cpp:651
1605 msgid "LAlt"
1606 msgstr ""
1607
1608 #: ../../../src/SDLInputState.cpp:652
1609 msgid "LCtrl"
1610 msgstr ""
1611
1612 #: ../../../src/SDLInputState.cpp:654
1613 msgid "LShft"
1614 msgstr ""
1615
1616 #: ../../../src/SDLInputState.cpp:655
1617 msgid "Num"
1618 msgstr ""
1619
1620 #: ../../../src/SDLInputState.cpp:656
1621 msgid "PgDn"
1622 msgstr ""
1623
1624 #: ../../../src/SDLInputState.cpp:657
1625 msgid "PgUp"
1626 msgstr ""
1627
1628 #: ../../../src/SDLInputState.cpp:658 ../../../src/SDLInputState.cpp:688
1629 msgid "Pause"
1630 msgstr "Pause"
1631
1632 #: ../../../src/SDLInputState.cpp:659
1633 msgid "Print"
1634 msgstr ""
1635
1636 #: ../../../src/SDLInputState.cpp:660
1637 msgid "RAlt"
1638 msgstr ""
1639
1640 #: ../../../src/SDLInputState.cpp:661
1641 msgid "RCtrl"
1642 msgstr ""
1643
1644 #: ../../../src/SDLInputState.cpp:662
1645 msgid "Ret"
1646 msgstr ""
1647
1648 #: ../../../src/SDLInputState.cpp:664
1649 msgid "RShft"
1650 msgstr ""
1651
1652 #: ../../../src/SDLInputState.cpp:665
1653 msgid "SLock"
1654 msgstr ""
1655
1656 #: ../../../src/SDLInputState.cpp:666
1657 msgid "Spc"
1658 msgstr ""
1659
1660 #: ../../../src/SDLInputState.cpp:667 ../../../src/SDLInputState.cpp:697
1661 msgid "Tab"
1662 msgstr "Tab"
1663
1664 #: ../../../src/SDLInputState.cpp:673
13251665 msgid "Backspace"
13261666 msgstr "Backspace"
13271667
1328 #: ../../../src/SDLInputState.cpp:583
1668 #: ../../../src/SDLInputState.cpp:674
13291669 msgid "CapsLock"
13301670 msgstr "CapsLock"
13311671
1332 #: ../../../src/SDLInputState.cpp:586
1333 msgid "End"
1334 msgstr "End"
1335
1336 #: ../../../src/SDLInputState.cpp:587
1672 #: ../../../src/SDLInputState.cpp:678
13371673 msgid "Escape"
13381674 msgstr "Escape"
13391675
1340 #: ../../../src/SDLInputState.cpp:588
1341 msgid "Home"
1342 msgstr "Home"
1343
1344 #: ../../../src/SDLInputState.cpp:589
1676 #: ../../../src/SDLInputState.cpp:680
13451677 msgid "Insert"
13461678 msgstr "Insert"
13471679
1348 #: ../../../src/SDLInputState.cpp:590
1680 #: ../../../src/SDLInputState.cpp:681
13491681 msgid "Left Alt"
13501682 msgstr "Левы Alt"
13511683
1352 #: ../../../src/SDLInputState.cpp:591
1684 #: ../../../src/SDLInputState.cpp:682
13531685 msgid "Left Ctrl"
13541686 msgstr "Левы Ctrl"
13551687
1356 #: ../../../src/SDLInputState.cpp:593
1688 #: ../../../src/SDLInputState.cpp:684
13571689 msgid "Left Shift"
13581690 msgstr "Левы Shift"
13591691
1360 #: ../../../src/SDLInputState.cpp:594
1692 #: ../../../src/SDLInputState.cpp:685
13611693 msgid "NumLock"
13621694 msgstr "NumLock"
13631695
1364 #: ../../../src/SDLInputState.cpp:595
1696 #: ../../../src/SDLInputState.cpp:686
13651697 msgid "PageDown"
13661698 msgstr "PageDown"
13671699
1368 #: ../../../src/SDLInputState.cpp:596
1700 #: ../../../src/SDLInputState.cpp:687
13691701 msgid "PageUp"
13701702 msgstr "PageUp"
13711703
1372 #: ../../../src/SDLInputState.cpp:597
1373 msgid "Pause"
1374 msgstr "Pause"
1375
1376 #: ../../../src/SDLInputState.cpp:598
1704 #: ../../../src/SDLInputState.cpp:689
13771705 msgid "PrintScreen"
13781706 msgstr "PrintScreen"
13791707
1380 #: ../../../src/SDLInputState.cpp:599
1708 #: ../../../src/SDLInputState.cpp:690
13811709 msgid "Right Alt"
13821710 msgstr "Правы Alt"
13831711
1384 #: ../../../src/SDLInputState.cpp:600
1712 #: ../../../src/SDLInputState.cpp:691
13851713 msgid "Right Ctrl"
13861714 msgstr "Правы Ctrl"
13871715
1388 #: ../../../src/SDLInputState.cpp:601
1716 #: ../../../src/SDLInputState.cpp:692
13891717 msgid "Return"
13901718 msgstr "Enter"
13911719
1392 #: ../../../src/SDLInputState.cpp:603
1720 #: ../../../src/SDLInputState.cpp:694
13931721 msgid "Right Shift"
13941722 msgstr "Правы Shift"
13951723
1396 #: ../../../src/SDLInputState.cpp:604
1724 #: ../../../src/SDLInputState.cpp:695
13971725 msgid "ScrollLock"
13981726 msgstr "ScrollLock"
13991727
1400 #: ../../../src/SDLInputState.cpp:605
1728 #: ../../../src/SDLInputState.cpp:696
14011729 msgid "Space"
14021730 msgstr "Прагал"
14031731
1404 #: ../../../src/SDLInputState.cpp:606
1405 msgid "Tab"
1406 msgstr "Tab"
1407
1408 #: ../../../src/SDLInputState.cpp:620
1732 #: ../../../src/SDLInputState.cpp:710
1733 #, c-format
1734 msgid "M%d"
1735 msgstr ""
1736
1737 #: ../../../src/SDLInputState.cpp:716
14091738 #, c-format
14101739 msgid "Mouse %d"
14111740 msgstr "Мыш %d"
14121741
1413 #: ../../../src/SDLInputState.cpp:628
1742 #: ../../../src/SDLInputState.cpp:726
1743 #, c-format
1744 msgid "JX%d-"
1745 msgstr ""
1746
1747 #: ../../../src/SDLInputState.cpp:728
14141748 #, c-format
14151749 msgid "Axis %d -"
14161750 msgstr "Вось %d -"
14171751
1418 #: ../../../src/SDLInputState.cpp:630
1752 #: ../../../src/SDLInputState.cpp:732
1753 #, c-format
1754 msgid "JX%d+"
1755 msgstr ""
1756
1757 #: ../../../src/SDLInputState.cpp:734
14191758 #, c-format
14201759 msgid "Axis %d +"
14211760 msgstr "Вось %d +"
14221761
1423 #: ../../../src/SDLInputState.cpp:633
1762 #: ../../../src/SDLInputState.cpp:739
1763 #, c-format
1764 msgid "JB%d"
1765 msgstr ""
1766
1767 #: ../../../src/SDLInputState.cpp:741
14241768 #, c-format
14251769 msgid "Button %d"
14261770 msgstr "Кнопка %d"
14271771
1428 #: ../../../src/SDLInputState.cpp:637
1429 msgid "(none)"
1430 msgstr "(няма)"
1431
1432 #: ../../../src/SDLInputState.cpp:677
1772 #: ../../../src/SDLInputState.cpp:787
14331773 msgid "Touch control D-Pad"
1434 msgstr ""
1435
1436 #: ../../../src/SDLInputState.cpp:701
1774 msgstr "Сэнсарнае кіраванне D-Pad"
1775
1776 #: ../../../src/SDLInputState.cpp:810
14371777 msgid "Touch control buttons"
1438 msgstr ""
1439
1440 #: ../../../src/SDLInputState.cpp:716
1778 msgstr "Сэнсарныя кнопкі кіравання"
1779
1780 #: ../../../src/SDLInputState.cpp:824
14411781 msgid "Tap"
14421782 msgstr "Дакраніцеся"
14431783
1444 #: ../../../src/SDLInputState.cpp:760 ../../../src/SDLInputState.cpp:764
1445 #: ../../../src/SDLInputState.cpp:768
1784 #: ../../../src/SDLInputState.cpp:876 ../../../src/SDLInputState.cpp:878
1785 #, c-format
1786 msgid "Can not bind: %s"
1787 msgstr "Немагчыма прызначыць: %s"
1788
1789 #: ../../../src/SDLInputState.cpp:890 ../../../src/SDLInputState.cpp:894
1790 #: ../../../src/SDLInputState.cpp:898
14461791 #, c-format
14471792 msgid "'%s' is no longer bound to:"
14481793 msgstr "\"%s\" больш не звязана з:"
16051950 msgid "Base MP"
16061951 msgstr "Базавая мана"
16071952
1608 #: ../../../src/Utils.cpp:346
1953 #: ../../../src/Utils.cpp:365
16091954 msgid "k"
16101955 msgstr "k"
16111956
1612 #: ../../../src/Utils.cpp:580
1957 #: ../../../src/Utils.cpp:635
16131958 #, c-format
16141959 msgid "%s second"
16151960 msgstr "%s секунда"
16161961
1617 #: ../../../src/Utils.cpp:583
1962 #: ../../../src/Utils.cpp:638
16181963 #, c-format
16191964 msgid "%s seconds"
16201965 msgstr "%s секунд"
1010 msgstr ""
1111 "Project-Id-Version: PACKAGE VERSION\n"
1212 "Report-Msgid-Bugs-To: \n"
13 "POT-Creation-Date: 2018-11-17 21:50-0500\n"
13 "POT-Creation-Date: 2021-05-23 20:34-0400\n"
1414 "PO-Revision-Date: 2018-03-28 19:16+0000\n"
1515 "Last-Translator: 48719d321e4b4a9c2ca8c6a1f8b9cba8, 2018\n"
1616 "Language-Team: Bulgarian (https://www.transifex.com/flareorg/teams/84925/bg/)\n"
2020 "Language: bg\n"
2121 "Plural-Forms: nplurals=2; plural=(n != 1);\n"
2222
23 #: ../../../src/Avatar.cpp:367
23 #: ../../../src/Avatar.cpp:391
24 msgid "Your health is low!"
25 msgstr ""
26
27 #: ../../../src/Avatar.cpp:421
2428 #, c-format
2529 msgid "Congratulations, you have reached level %d!"
2630 msgstr "Поздравления, достигнахте ниво %d!"
2731
28 #: ../../../src/Avatar.cpp:369
29 msgid "You may increase one attribute through the Character Menu."
30 msgstr "Можете да увеличите един атрибут през менюто за характер."
31
32 #: ../../../src/Avatar.cpp:583
33 msgid "You are defeated. Game over! ${INPUT_CONTINUE} to exit to Title."
34 msgstr ""
35 "Вие сте победени. Играта приключи! ${INPUT_CONTINUE}, за да се върнете към "
36 "менюто."
37
38 #: ../../../src/Avatar.cpp:589
39 msgid "You are defeated. ${INPUT_CONTINUE} to continue."
40 msgstr "Вие сте победени. ${INPUT_CONTINUE}, за да продължите."
41
42 #: ../../../src/Avatar.cpp:839
32 #: ../../../src/Avatar.cpp:423
33 msgid "You may increase one or more attributes through the Character Menu."
34 msgstr ""
35
36 #: ../../../src/Avatar.cpp:427
37 msgid "You may unlock one or more abilities through the Powers Menu."
38 msgstr ""
39
40 #: ../../../src/Avatar.cpp:689
41 msgid "You are defeated."
42 msgstr ""
43
44 #: ../../../src/Avatar.cpp:935
4345 msgid "Transformation expired. You have been moved back to a safe place."
4446 msgstr "Преобразяването изтече. Върнахте се на сигурно място."
4547
46 #: ../../../src/CampaignManager.cpp:153
48 #: ../../../src/CampaignManager.cpp:152
4749 #, c-format
4850 msgid "%d %s removed."
4951 msgstr "%d %s е премахнато."
5052
51 #: ../../../src/CampaignManager.cpp:162
53 #: ../../../src/CampaignManager.cpp:171
54 #, c-format
55 msgid "%s x%d removed."
56 msgstr ""
57
58 #: ../../../src/CampaignManager.cpp:173
5259 #, c-format
5360 msgid "%s removed."
5461 msgstr "%s е премахнат."
5562
56 #: ../../../src/CampaignManager.cpp:175
63 #: ../../../src/CampaignManager.cpp:187
64 #, c-format
65 msgid "You receive %d %s."
66 msgstr "Получихте %d %s."
67
68 #: ../../../src/CampaignManager.cpp:191
69 #, c-format
70 msgid "You receive %s x%d."
71 msgstr "Получихте %s x%d."
72
73 #: ../../../src/CampaignManager.cpp:193
5774 #, c-format
5875 msgid "You receive %s."
5976 msgstr "Получихте %s."
6077
61 #: ../../../src/CampaignManager.cpp:177
62 #, c-format
63 msgid "You receive %s x%d."
64 msgstr "Получихте %s x%d."
65
66 #: ../../../src/CampaignManager.cpp:186
67 #, c-format
68 msgid "You receive %d %s."
69 msgstr "Получихте %d %s."
70
71 #: ../../../src/CampaignManager.cpp:195
78 #: ../../../src/CampaignManager.cpp:210
7279 #, c-format
7380 msgid "You receive %d XP."
7481 msgstr "Получихте %d опит."
7582
76 #: ../../../src/CampaignManager.cpp:201
83 #: ../../../src/CampaignManager.cpp:216
7784 msgid "HP restored."
7885 msgstr "Здравето е възстановено."
7986
80 #: ../../../src/CampaignManager.cpp:205
87 #: ../../../src/CampaignManager.cpp:220
8188 msgid "MP restored."
8289 msgstr "Маната е възстановена."
8390
84 #: ../../../src/CampaignManager.cpp:210
91 #: ../../../src/CampaignManager.cpp:225
8592 msgid "HP and MP restored."
8693 msgstr "Здравето и маната са възстановени."
8794
88 #: ../../../src/CampaignManager.cpp:214
95 #: ../../../src/CampaignManager.cpp:229
8996 msgid "Negative effects removed."
9097 msgstr "Негативните въздействия са премахнати."
9198
92 #: ../../../src/CampaignManager.cpp:220
99 #: ../../../src/CampaignManager.cpp:235
93100 msgid "HP and MP restored, negative effects removed"
94101 msgstr ""
95102 "Здравето и маната са възстановени, негативните въздействия са премахнати."
114121 "\n"
115122 "Рендерът по подразбиране, който често е по-бърз от софтуерния рендер за SDL."
116123
117 #: ../../../src/EngineSettings.cpp:561
124 #: ../../../src/EngineSettings.cpp:586
118125 msgid "Adventurer"
119126 msgstr "Авантюрист"
120127
121 #: ../../../src/Entity.cpp:511
128 #: ../../../src/Entity.cpp:527
122129 msgid "miss"
123130 msgstr "пропуск"
124131
125 #: ../../../src/Entity.cpp:548 ../../../src/PowerManager.cpp:1152
126 #: ../../../src/StatBlock.cpp:805 ../../../src/StatBlock.cpp:811
132 #: ../../../src/Entity.cpp:565 ../../../src/PowerManager.cpp:1224
133 #: ../../../src/StatBlock.cpp:917 ../../../src/StatBlock.cpp:923
127134 #, c-format
128135 msgid "+%d HP"
129136 msgstr "+%d здраве"
130137
131 #: ../../../src/Entity.cpp:555 ../../../src/StatBlock.cpp:816
132 #: ../../../src/StatBlock.cpp:822
138 #: ../../../src/Entity.cpp:572 ../../../src/StatBlock.cpp:928
139 #: ../../../src/StatBlock.cpp:934
133140 #, c-format
134141 msgid "+%d MP"
135142 msgstr "+%d мана"
136143
137 #: ../../../src/EventManager.cpp:738
144 #: ../../../src/EventManager.cpp:792
138145 msgid "Unknown destination"
139146 msgstr "Непозната дестинация"
140147
141 #: ../../../src/GameStateConfigBase.cpp:89
142 #: ../../../src/GameStateConfigBase.cpp:110
148 #: ../../../src/GameState.cpp:37 ../../../src/GameState.cpp:58
149 msgid "Loading..."
150 msgstr "Зареждане…"
151
152 #: ../../../src/GameStateLoad.cpp:90 ../../../src/GameStateLoad.cpp:103
153 msgid "Delete Save"
154 msgstr "Изтрий героя"
155
156 #: ../../../src/GameStateLoad.cpp:90
157 msgid "Delete this save?"
158 msgstr "Изтриване на героя?"
159
160 #: ../../../src/GameStateLoad.cpp:92
161 msgid "Exit to Title"
162 msgstr "Назад"
163
164 #: ../../../src/GameStateLoad.cpp:95
165 msgid "New Game"
166 msgstr "Нов герой"
167
168 #: ../../../src/GameStateLoad.cpp:99 ../../../src/GameStateLoad.cpp:607
169 msgid "Choose a Slot"
170 msgstr "Избери герой"
171
172 #: ../../../src/GameStateLoad.cpp:580 ../../../src/GameStateLoad.cpp:601
173 msgid "Enable a story mod to continue"
174 msgstr "Включете модификация на историята, за да продължите"
175
176 #: ../../../src/GameStateLoad.cpp:596
177 msgid "Load Game"
178 msgstr "Зареди героя"
179
180 #: ../../../src/GameStateLoad.cpp:705
181 msgid "Entering game world..."
182 msgstr "Влизане в игралния свят…"
183
184 #: ../../../src/GameStateLoad.cpp:708
185 msgid "Loading saved game..."
186 msgstr "Зареждане на запазената игра…"
187
188 #: ../../../src/GameStateLoad.cpp:741
189 msgid "Invalid save"
190 msgstr "Невалиден герой"
191
192 #: ../../../src/GameStateLoad.cpp:765 ../../../src/ItemManager.cpp:745
193 #: ../../../src/MenuPowers.cpp:860 ../../../src/MenuPowers.cpp:1219
194 #: ../../../src/MenuPowers.cpp:1631
195 #, c-format
196 msgid "Level %d"
197 msgstr "Ниво %d"
198
199 #: ../../../src/GameStateNew.cpp:66 ../../../src/InputState.cpp:416
200 #: ../../../src/MenuConfig.cpp:246
201 msgid "Cancel"
202 msgstr "Отказ"
203
204 #: ../../../src/GameStateNew.cpp:69
205 msgid "Create"
206 msgstr "Създай"
207
208 #: ../../../src/GameStateNew.cpp:77
209 msgid "Randomize"
210 msgstr "Разбъркай"
211
212 #: ../../../src/GameStateNew.cpp:93
213 msgid "Choose a Portrait"
214 msgstr "Избери портрет"
215
216 #: ../../../src/GameStateNew.cpp:97
217 msgid "Choose a Name"
218 msgstr "Избери име"
219
220 #: ../../../src/GameStateNew.cpp:101
221 msgid "Permadeath?"
222 msgstr "Без прераждане?"
223
224 #: ../../../src/GameStateNew.cpp:105
225 msgid "Choose a Class"
226 msgstr "Избери клас"
227
228 #: ../../../src/GameStateTitle.cpp:107
229 msgid "Play Game"
230 msgstr "Играй"
231
232 #: ../../../src/GameStateTitle.cpp:110
233 msgid "Enable a core mod to continue"
234 msgstr "Включете основна модификация, за да продължите"
235
236 #: ../../../src/GameStateTitle.cpp:114 ../../../src/MenuMiniMap.cpp:152
237 msgid "Configuration"
238 msgstr "Настройки"
239
240 #: ../../../src/GameStateTitle.cpp:117
241 msgid "Credits"
242 msgstr "Признания"
243
244 #: ../../../src/GameStateTitle.cpp:120
245 msgid "Exit Game"
246 msgstr "Изход"
247
248 #: ../../../src/InputState.cpp:417
249 msgid "Accept"
250 msgstr "Приемане"
251
252 #: ../../../src/InputState.cpp:418 ../../../src/MenuMovementType.cpp:123
253 #: ../../../src/MenuMovementType.cpp:132 ../../../src/SDLInputState.cpp:668
254 #: ../../../src/SDLInputState.cpp:698
255 msgid "Up"
256 msgstr "Up"
257
258 #: ../../../src/InputState.cpp:419 ../../../src/MenuMovementType.cpp:125
259 #: ../../../src/MenuMovementType.cpp:134 ../../../src/SDLInputState.cpp:646
260 #: ../../../src/SDLInputState.cpp:676
261 msgid "Down"
262 msgstr "Down"
263
264 #: ../../../src/InputState.cpp:420 ../../../src/MenuMovementType.cpp:124
265 #: ../../../src/MenuMovementType.cpp:133 ../../../src/SDLInputState.cpp:653
266 #: ../../../src/SDLInputState.cpp:683
267 msgid "Left"
268 msgstr "Left"
269
270 #: ../../../src/InputState.cpp:421 ../../../src/MenuMovementType.cpp:126
271 #: ../../../src/MenuMovementType.cpp:135 ../../../src/SDLInputState.cpp:663
272 #: ../../../src/SDLInputState.cpp:693
273 msgid "Right"
274 msgstr "Right"
275
276 #: ../../../src/InputState.cpp:422
277 msgid "Bar1"
278 msgstr "Лента1"
279
280 #: ../../../src/InputState.cpp:423
281 msgid "Bar2"
282 msgstr "Лента2"
283
284 #: ../../../src/InputState.cpp:424
285 msgid "Bar3"
286 msgstr "Лента3"
287
288 #: ../../../src/InputState.cpp:425
289 msgid "Bar4"
290 msgstr "Лента4"
291
292 #: ../../../src/InputState.cpp:426
293 msgid "Bar5"
294 msgstr "Лента5"
295
296 #: ../../../src/InputState.cpp:427
297 msgid "Bar6"
298 msgstr "Лента6"
299
300 #: ../../../src/InputState.cpp:428
301 msgid "Bar7"
302 msgstr "Лента7"
303
304 #: ../../../src/InputState.cpp:429
305 msgid "Bar8"
306 msgstr "Лента8"
307
308 #: ../../../src/InputState.cpp:430
309 msgid "Bar9"
310 msgstr "Лента9"
311
312 #: ../../../src/InputState.cpp:431
313 msgid "Bar0"
314 msgstr "Лента0"
315
316 #: ../../../src/InputState.cpp:432 ../../../src/MenuActionBar.cpp:84
317 #: ../../../src/MenuCharacter.cpp:54
318 msgid "Character"
319 msgstr "Характер"
320
321 #: ../../../src/InputState.cpp:433 ../../../src/MenuActionBar.cpp:85
322 #: ../../../src/MenuInventory.cpp:130 ../../../src/MenuVendor.cpp:59
323 msgid "Inventory"
324 msgstr "Инвентар"
325
326 #: ../../../src/InputState.cpp:434 ../../../src/MenuActionBar.cpp:86
327 #: ../../../src/MenuPowers.cpp:158
328 msgid "Powers"
329 msgstr "Умения"
330
331 #: ../../../src/InputState.cpp:435 ../../../src/MenuActionBar.cpp:87
332 #: ../../../src/MenuLog.cpp:72
333 msgid "Log"
334 msgstr "Дневник"
335
336 #: ../../../src/InputState.cpp:436
337 msgid "Main1"
338 msgstr "Главен1"
339
340 #: ../../../src/InputState.cpp:437
341 msgid "Main2"
342 msgstr "Главен2"
343
344 #: ../../../src/InputState.cpp:438
345 msgid "Ctrl"
346 msgstr "Ctrl"
347
348 #: ../../../src/InputState.cpp:439
349 msgid "Shift"
350 msgstr "Shift"
351
352 #: ../../../src/InputState.cpp:440
353 msgid "Alt"
354 msgstr "Alt"
355
356 #: ../../../src/InputState.cpp:441 ../../../src/SDLInputState.cpp:675
357 msgid "Delete"
358 msgstr "Delete"
359
360 #: ../../../src/InputState.cpp:442
361 msgid "ActionBar Accept"
362 msgstr "ActionBar Accept"
363
364 #: ../../../src/InputState.cpp:443
365 msgid "ActionBar Left"
366 msgstr "ActionBar Left"
367
368 #: ../../../src/InputState.cpp:444
369 msgid "ActionBar Right"
370 msgstr "ActionBar Right"
371
372 #: ../../../src/InputState.cpp:445
373 msgid "ActionBar Use"
374 msgstr "ActionBar Use"
375
376 #: ../../../src/InputState.cpp:446
377 msgid "Developer Menu"
378 msgstr "Developer меню"
379
380 #: ../../../src/InputState.cpp:448
381 msgid "Left Mouse"
382 msgstr "Left Mouse"
383
384 #: ../../../src/InputState.cpp:449
385 msgid "Middle Mouse"
386 msgstr "Middle Mouse"
387
388 #: ../../../src/InputState.cpp:450
389 msgid "Right Mouse"
390 msgstr "Right Mouse"
391
392 #: ../../../src/InputState.cpp:451
393 msgid "Wheel Up"
394 msgstr "Wheel Up"
395
396 #: ../../../src/InputState.cpp:452
397 msgid "Wheel Down"
398 msgstr "Wheel Down"
399
400 #: ../../../src/InputState.cpp:453
401 msgid "Mouse X1"
402 msgstr "Mouse X1"
403
404 #: ../../../src/InputState.cpp:454
405 msgid "Mouse X2"
406 msgstr "Mouse X2"
407
408 #: ../../../src/ItemManager.cpp:475
409 msgid "Unknown Item"
410 msgstr "Непознат предмет"
411
412 #: ../../../src/ItemManager.cpp:646 ../../../src/MenuPowers.cpp:959
413 #, c-format
414 msgid "%d%% Speed"
415 msgstr "%d%% Бързина"
416
417 #: ../../../src/ItemManager.cpp:650 ../../../src/MenuPowers.cpp:962
418 #, c-format
419 msgid "%d%% Attack Speed"
420 msgstr "%d%% Бързина на атака"
421
422 #: ../../../src/ItemManager.cpp:672 ../../../src/MenuCharacter.cpp:352
423 #: ../../../src/MenuPowers.cpp:931
424 #, c-format
425 msgid "Resistance (%s)"
426 msgstr ""
427
428 #: ../../../src/ItemManager.cpp:682
429 #, c-format
430 msgid "Requires %s"
431 msgstr "Изисква %s"
432
433 #: ../../../src/ItemManager.cpp:731
434 msgid "Quest Item"
435 msgstr "Предмет от куест"
436
437 #: ../../../src/ItemManager.cpp:758
438 #, c-format
439 msgid "Quality: %s"
440 msgstr "Качество: %s"
441
442 #: ../../../src/ItemManager.cpp:783
443 #, c-format
444 msgid "Absorb: %d-%d"
445 msgstr "Абсорбиране: %d – %d"
446
447 #: ../../../src/ItemManager.cpp:785
448 #, c-format
449 msgid "Absorb: %d"
450 msgstr "Абсорбиране: %d"
451
452 #: ../../../src/ItemManager.cpp:825 ../../../src/MenuPowers.cpp:1206
453 #: ../../../src/MenuPowers.cpp:1209
454 #, c-format
455 msgid "Requires Level %d"
456 msgstr "Изисква ниво %d"
457
458 #: ../../../src/ItemManager.cpp:836 ../../../src/MenuPowers.cpp:1198
459 #: ../../../src/MenuPowers.cpp:1200
460 #, c-format
461 msgid "Requires %s %d"
462 msgstr "Изисква %s %d"
463
464 #: ../../../src/ItemManager.cpp:847
465 #, c-format
466 msgid "Requires Class: %s"
467 msgstr "Изисква клас: %s"
468
469 #: ../../../src/ItemManager.cpp:863 ../../../src/ItemManager.cpp:875
470 #, c-format
471 msgid "Buy Price: %d %s"
472 msgstr "Цена за закупуване: %d %s"
473
474 #: ../../../src/ItemManager.cpp:865 ../../../src/ItemManager.cpp:877
475 #, c-format
476 msgid "Buy Price: %d %s each"
477 msgstr "Цена за закупуване: %d %s за брой"
478
479 #: ../../../src/ItemManager.cpp:885
480 #, c-format
481 msgid "Sell Price: %d %s"
482 msgstr "Продажна цена: %d %s"
483
484 #: ../../../src/ItemManager.cpp:887
485 #, c-format
486 msgid "Sell Price: %d %s each"
487 msgstr "Продажна цена: %d %s за брой"
488
489 #: ../../../src/ItemManager.cpp:896
490 msgid "Set:"
491 msgstr "Комплект:"
492
493 #: ../../../src/ItemManager.cpp:903
494 #, c-format
495 msgid "%d items:"
496 msgstr "%d предмета:"
497
498 #: ../../../src/ItemManager.cpp:915
499 #, c-format
500 msgid "Press [%s] to read"
501 msgstr "Натиснете [%s], за да прочетете"
502
503 #: ../../../src/ItemManager.cpp:918
504 #, c-format
505 msgid "Press [%s] to use"
506 msgstr "Натиснете [%s], за да използвате"
507
508 #: ../../../src/MenuActionBar.cpp:239 ../../../src/MenuActionBar.cpp:246
509 #: ../../../src/MenuActionBar.cpp:249 ../../../src/MenuActionBar.cpp:255
510 #, c-format
511 msgid "Hotkey: %s"
512 msgstr "Клавиш: %s"
513
514 #: ../../../src/MenuActionBar.cpp:621
515 msgid "Not enough MP."
516 msgstr "Нямате достатъчно мана."
517
518 #: ../../../src/MenuActiveEffects.cpp:124
519 #, c-format
520 msgid "x%d"
521 msgstr "x%d"
522
523 #: ../../../src/MenuActiveEffects.cpp:219
524 msgid "Remaining:"
525 msgstr "Остават:"
526
527 #: ../../../src/MenuActiveEffects.cpp:225
528 #, c-format
529 msgid "x%d stacks"
530 msgstr "x%d стека"
531
532 #: ../../../src/MenuCharacter.cpp:73 ../../../src/MenuCharacter.cpp:78
533 msgid "Name"
534 msgstr "Име"
535
536 #: ../../../src/MenuCharacter.cpp:74 ../../../src/MenuCharacter.cpp:79
537 msgid "Level"
538 msgstr "Ниво"
539
540 #: ../../../src/MenuCharacter.cpp:309
541 #, c-format
542 msgid "Available stat points: %d"
543 msgstr ""
544
545 #: ../../../src/MenuCharacter.cpp:353
546 #, c-format
547 msgid "Reduces the damage taken from \"%s\" elemental attacks."
548 msgstr "Намалява понесените щети от стихийната атака „%s“."
549
550 #: ../../../src/MenuCharacter.cpp:363 ../../../src/MenuManager.cpp:301
551 #, c-format
552 msgid "XP: %d"
553 msgstr "Опит: %d"
554
555 #: ../../../src/MenuCharacter.cpp:365
556 #, c-format
557 msgid "Next: %d"
558 msgstr "Следващо: %d"
559
560 #: ../../../src/MenuCharacter.cpp:371
561 #, c-format
562 msgid "base (%d), bonus (%d)"
563 msgstr "основа (%d), бонус (%d)"
564
565 #: ../../../src/MenuCharacter.cpp:379 ../../../src/MenuCharacter.cpp:393
566 msgid "Related stats:"
567 msgstr "Свързани характеристики:"
568
569 #: ../../../src/MenuCharacter.cpp:419 ../../../src/MenuCharacter.cpp:443
570 #, c-format
571 msgid "Each level grants %d."
572 msgstr "Всяко ниво дава %d."
573
574 #: ../../../src/MenuCharacter.cpp:423 ../../../src/MenuCharacter.cpp:447
575 #, c-format
576 msgid "Each point of %s grants %d."
577 msgstr "Всяка точка от %s дава %d."
578
579 #: ../../../src/MenuConfig.cpp:122 ../../../src/MenuConfig.cpp:1171
580 msgid "Clear"
581 msgstr "Изчисти"
582
583 #: ../../../src/MenuConfig.cpp:122 ../../../src/MenuConfig.cpp:1169
584 msgid "Assign:"
585 msgstr "Възложи"
586
587 #: ../../../src/MenuConfig.cpp:123 ../../../src/MenuConfig.cpp:245
143588 msgid "Defaults"
144589 msgstr "Нулиране"
145590
146 #: ../../../src/GameStateConfigBase.cpp:89
591 #: ../../../src/MenuConfig.cpp:123
147592 msgid "Reset ALL settings?"
148593 msgstr "Нулирай всички настройки?"
149594
150 #: ../../../src/GameStateConfigBase.cpp:109 ../../../src/MenuNumPicker.cpp:49
595 #: ../../../src/MenuConfig.cpp:244 ../../../src/MenuNumPicker.cpp:49
151596 msgid "OK"
152597 msgstr "Добре"
153598
154 #: ../../../src/GameStateConfigBase.cpp:111 ../../../src/GameStateNew.cpp:65
155 #: ../../../src/InputState.cpp:401
156 msgid "Cancel"
157 msgstr "Отказ"
158
159 #: ../../../src/GameStateConfigBase.cpp:160
160 #: ../../../src/GameStateConfigDesktop.cpp:130
599 #: ../../../src/MenuConfig.cpp:248 ../../../src/MenuGameOver.cpp:72
600 msgid "Continue"
601 msgstr ""
602
603 #: ../../../src/MenuConfig.cpp:250
604 msgid "Save Game"
605 msgstr ""
606
607 #: ../../../src/MenuConfig.cpp:293
608 msgid "Default"
609 msgstr ""
610
611 #: ../../../src/MenuConfig.cpp:293
612 msgid ""
613 "Show all loot tooltips, except for those that would be obscured by the "
614 "player or an enemy. Temporarily show all loot tooltips with 'Alt'."
615 msgstr ""
616
617 #: ../../../src/MenuConfig.cpp:294
618 msgid "Show all"
619 msgstr ""
620
621 #: ../../../src/MenuConfig.cpp:294
622 msgid ""
623 "Always show loot tooltips. Temporarily hide all loot tooltips with 'Alt'."
624 msgstr ""
625
626 #: ../../../src/MenuConfig.cpp:295 ../../../src/MenuConfig.cpp:300
627 msgid "Hidden"
628 msgstr ""
629
630 #: ../../../src/MenuConfig.cpp:295
631 msgid ""
632 "Always hide loot tooltips, except for when a piece of loot is hovered with "
633 "the mouse cursor. Temporarily show all loot tooltips with 'Alt'."
634 msgstr ""
635
636 #: ../../../src/MenuConfig.cpp:298
637 msgid "Visible"
638 msgstr ""
639
640 #: ../../../src/MenuConfig.cpp:299
641 msgid "Visible (2x zoom)"
642 msgstr ""
643
644 #: ../../../src/MenuConfig.cpp:303
645 msgid ""
646 "Controls the type of warning to be activated when the player is below the "
647 "low health threshold."
648 msgstr ""
649
650 #: ../../../src/MenuConfig.cpp:304
651 msgid "- Display a message"
652 msgstr ""
653
654 #: ../../../src/MenuConfig.cpp:305
655 msgid "- Play a sound"
656 msgstr ""
657
658 #: ../../../src/MenuConfig.cpp:306
659 msgid "- Change the cursor"
660 msgstr ""
661
662 #: ../../../src/MenuConfig.cpp:308
663 msgid "Disabled"
664 msgstr ""
665
666 #: ../../../src/MenuConfig.cpp:309
667 msgid "All"
668 msgstr ""
669
670 #: ../../../src/MenuConfig.cpp:310
671 msgid "Message & Cursor"
672 msgstr ""
673
674 #: ../../../src/MenuConfig.cpp:311
675 msgid "Message & Sound"
676 msgstr ""
677
678 #: ../../../src/MenuConfig.cpp:312
679 msgid "Sound & Cursor"
680 msgstr ""
681
682 #: ../../../src/MenuConfig.cpp:313
683 msgid "Message"
684 msgstr ""
685
686 #: ../../../src/MenuConfig.cpp:314
687 msgid "Cursor"
688 msgstr ""
689
690 #: ../../../src/MenuConfig.cpp:315
691 msgid "Sound"
692 msgstr ""
693
694 #: ../../../src/MenuConfig.cpp:321
695 msgid ""
696 "When the player's health drops below the given threshold, the low health "
697 "notifications are triggered if one or more of them is enabled."
698 msgstr ""
699
700 #: ../../../src/MenuConfig.cpp:334 ../../../src/MenuConfig.cpp:1587
701 #: ../../../src/MenuGameOver.cpp:116
702 msgid "Exit"
703 msgstr "Излез"
704
705 #: ../../../src/MenuConfig.cpp:335
706 msgid "Video"
707 msgstr "Видео"
708
709 #: ../../../src/MenuConfig.cpp:336
161710 msgid "Audio"
162711 msgstr "Звук"
163712
164 #: ../../../src/GameStateConfigBase.cpp:161
165 #: ../../../src/GameStateConfigDesktop.cpp:131
713 #: ../../../src/MenuConfig.cpp:337
166714 msgid "Interface"
167715 msgstr "Интерфейс"
168716
169 #: ../../../src/GameStateConfigBase.cpp:162
170 #: ../../../src/GameStateConfigDesktop.cpp:134
717 #: ../../../src/MenuConfig.cpp:338
718 msgid "Input"
719 msgstr "Вход"
720
721 #: ../../../src/MenuConfig.cpp:339
722 msgid "Keybindings"
723 msgstr "Клавиши"
724
725 #: ../../../src/MenuConfig.cpp:340
171726 msgid "Mods"
172727 msgstr "Модификации"
173728
174 #: ../../../src/GameStateConfigBase.cpp:249 ../../../src/MenuExit.cpp:72
729 #: ../../../src/MenuConfig.cpp:352
730 msgid "Paused"
731 msgstr "Пауза"
732
733 #: ../../../src/MenuConfig.cpp:355
734 msgid "Time Played"
735 msgstr ""
736
737 #: ../../../src/MenuConfig.cpp:361
738 msgid "Renderer"
739 msgstr "Рендер"
740
741 #: ../../../src/MenuConfig.cpp:362
742 msgid "Full Screen Mode"
743 msgstr "Режим на цял екран"
744
745 #: ../../../src/MenuConfig.cpp:363
746 msgid "Hardware surfaces"
747 msgstr "Хардуерни повърхности"
748
749 #: ../../../src/MenuConfig.cpp:364
750 msgid "V-Sync"
751 msgstr "Вертикална синхронизация (V-Sync)"
752
753 #: ../../../src/MenuConfig.cpp:365
754 msgid "Texture Filtering"
755 msgstr "Текстурно филтриране"
756
757 #: ../../../src/MenuConfig.cpp:366
758 msgid "DPI scaling"
759 msgstr "DPI мащабиране"
760
761 #: ../../../src/MenuConfig.cpp:367
762 msgid "Parallax Layers"
763 msgstr ""
764
765 #: ../../../src/MenuConfig.cpp:368
766 msgid "Allow changing gamma"
767 msgstr "Разрешаване промяна на гамата"
768
769 #: ../../../src/MenuConfig.cpp:369
770 msgid "Gamma"
771 msgstr "Гама"
772
773 #: ../../../src/MenuConfig.cpp:371
774 msgid "Sound Volume"
775 msgstr "Сила на звука"
776
777 #: ../../../src/MenuConfig.cpp:372
175778 msgid "Music Volume"
176779 msgstr "Сила на музиката"
177780
178 #: ../../../src/GameStateConfigBase.cpp:253 ../../../src/MenuExit.cpp:77
179 msgid "Sound Volume"
180 msgstr "Сила на звука"
181
182 #: ../../../src/GameStateConfigBase.cpp:257
781 #: ../../../src/MenuConfig.cpp:374
183782 msgid "Language"
184783 msgstr "Език"
185784
186 #: ../../../src/GameStateConfigBase.cpp:266
785 #: ../../../src/MenuConfig.cpp:375
187786 msgid "Show FPS"
188787 msgstr "Показване на FPS"
189788
190 #: ../../../src/GameStateConfigBase.cpp:270
789 #: ../../../src/MenuConfig.cpp:376
790 msgid "Hardware mouse cursor"
791 msgstr "Хардуер за курсора на мишката"
792
793 #: ../../../src/MenuConfig.cpp:377
191794 msgid "Colorblind Mode"
192795 msgstr "Режим за далтонисти"
193796
194 #: ../../../src/GameStateConfigBase.cpp:274
195 msgid "Hardware mouse cursor"
196 msgstr "Хардуер за курсора на мишката"
197
198 #: ../../../src/GameStateConfigBase.cpp:278
797 #: ../../../src/MenuConfig.cpp:378
199798 msgid "Developer Mode"
200799 msgstr "Режим за програмисти"
201800
202 #: ../../../src/GameStateConfigBase.cpp:282
801 #: ../../../src/MenuConfig.cpp:379
203802 msgid "Subtitles"
204803 msgstr "Субтитри"
205804
206 #: ../../../src/GameStateConfigBase.cpp:286
207 msgid "Active Mods"
208 msgstr "Включени модификации"
209
210 #: ../../../src/GameStateConfigBase.cpp:295
211 msgid "Available Mods"
212 msgstr "Налични модификации"
213
214 #: ../../../src/GameStateConfigBase.cpp:314
215 msgid "<< Disable"
216 msgstr "<< Изключи"
217
218 #: ../../../src/GameStateConfigBase.cpp:320
219 msgid "Enable >>"
220 msgstr "Включи >>"
221
222 #: ../../../src/GameStateConfigBase.cpp:873
223 msgid "Version:"
224 msgstr "Версия:"
225
226 #: ../../../src/GameStateConfigBase.cpp:878
227 msgid "Game:"
228 msgstr "Игра:"
229
230 #: ../../../src/GameStateConfigBase.cpp:883
231 msgid "Engine version:"
232 msgstr "Engine версия:"
233
234 #: ../../../src/GameStateConfigBase.cpp:891
235 msgid "Requires mods:"
236 msgstr "Изисква модификации:"
237
238 #: ../../../src/GameStateConfigDesktop.cpp:83
239 #: ../../../src/GameStateConfigDesktop.cpp:751
240 msgid "Clear"
241 msgstr "Изчисти"
242
243 #: ../../../src/GameStateConfigDesktop.cpp:83
244 #: ../../../src/GameStateConfigDesktop.cpp:749
245 msgid "Assign:"
246 msgstr "Възложи"
247
248 #: ../../../src/GameStateConfigDesktop.cpp:128
249 msgid "Video"
250 msgstr "Видео"
251
252 #: ../../../src/GameStateConfigDesktop.cpp:132
253 msgid "Input"
254 msgstr "Вход"
255
256 #: ../../../src/GameStateConfigDesktop.cpp:133
257 msgid "Keybindings"
258 msgstr "Клавиши"
259
260 #: ../../../src/GameStateConfigDesktop.cpp:188
805 #: ../../../src/MenuConfig.cpp:380
806 msgid "Loot tooltip visibility"
807 msgstr ""
808
809 #: ../../../src/MenuConfig.cpp:381
810 msgid "Mini-map mode"
811 msgstr ""
812
813 #: ../../../src/MenuConfig.cpp:382
814 msgid "Always show stat bar labels"
815 msgstr "Винаги да се показват статистики"
816
817 #: ../../../src/MenuConfig.cpp:383
818 msgid "Allow stat bar auto-hiding"
819 msgstr ""
820
821 #: ../../../src/MenuConfig.cpp:384
822 msgid "Show combat text"
823 msgstr "Показване на боен текст"
824
825 #: ../../../src/MenuConfig.cpp:385
826 msgid "Automatically equip items"
827 msgstr "Автоматично екипиране с предмети"
828
829 #: ../../../src/MenuConfig.cpp:386
830 msgid "Show hidden entity markers"
831 msgstr ""
832
833 #: ../../../src/MenuConfig.cpp:387
834 msgid "Low health notification"
835 msgstr ""
836
837 #: ../../../src/MenuConfig.cpp:388
838 msgid "Low health threshold"
839 msgstr ""
840
841 #: ../../../src/MenuConfig.cpp:389
842 msgid "Show item comparison tooltips"
843 msgstr ""
844
845 #: ../../../src/MenuConfig.cpp:392 ../../../src/MenuMovementType.cpp:94
846 #: ../../../src/MenuMovementType.cpp:131
847 msgid "Joystick"
848 msgstr "Джойстик"
849
850 #: ../../../src/MenuConfig.cpp:393
851 msgid "Move hero using mouse"
852 msgstr "Преместване на героя чрез мишка"
853
854 #: ../../../src/MenuConfig.cpp:394
855 msgid "Mouse aim"
856 msgstr "Прицелване чрез мишка"
857
858 #: ../../../src/MenuConfig.cpp:395
859 msgid "Do not use mouse"
860 msgstr "Да не се използва мишка"
861
862 #: ../../../src/MenuConfig.cpp:396
863 msgid "Swap mouse movement button"
864 msgstr ""
865
866 #: ../../../src/MenuConfig.cpp:397
867 msgid "Attack with mouse movement"
868 msgstr ""
869
870 #: ../../../src/MenuConfig.cpp:398
871 msgid "Joystick Deadzone"
872 msgstr "Мъртва зона на джойстик"
873
874 #: ../../../src/MenuConfig.cpp:408
875 #, c-format
876 msgid "Primary binding: %s"
877 msgstr ""
878
879 #: ../../../src/MenuConfig.cpp:409
880 #, c-format
881 msgid "Alternate binding: %s"
882 msgstr ""
883
884 #: ../../../src/MenuConfig.cpp:410
885 #, c-format
886 msgid "Joystick binding: %s"
887 msgstr ""
888
889 #: ../../../src/MenuConfig.cpp:511
261890 msgid ""
262891 "Will try to store surfaces in video memory versus system memory. The effect "
263892 "this has on performance depends on the renderer."
266895 "памет. Въздействието, което това има върху производителността зависи от "
267896 "рендера."
268897
269 #: ../../../src/GameStateConfigDesktop.cpp:189
898 #: ../../../src/MenuConfig.cpp:512
270899 msgid ""
271900 "Prevents screen tearing. Disable if you experience \"stuttering\" in "
272901 "windowed mode or input lag."
274903 "Предотвратява накъсването (screen tearing). Изключете, ако изпитвате "
275904 "проблеми в прозоречен режим или закъснение при въвеждане."
276905
277 #: ../../../src/GameStateConfigDesktop.cpp:190
906 #: ../../../src/MenuConfig.cpp:513
278907 msgid ""
279908 "When enabled, this uses the screen DPI in addition to the window dimensions "
280909 "to scale the rendering resolution. Otherwise, only the window dimensions are"
284913 " прозореца, за да мащабира разделителната способност на рендериране. В "
285914 "противен случай се използват само размерите на прозореца."
286915
287 #: ../../../src/GameStateConfigDesktop.cpp:191
916 #: ../../../src/MenuConfig.cpp:514
288917 msgid ""
289918 "This enables parallax (non-tile) layers. Disabling this setting can improve "
290919 "performance in some cases."
291920 msgstr ""
292921
293 #: ../../../src/GameStateConfigDesktop.cpp:192
294 msgid "Experimental"
295 msgstr "Експериментално"
296
297 #: ../../../src/GameStateConfigDesktop.cpp:193
298 msgid "For handheld devices"
299 msgstr "За преносими устройства"
300
301 #: ../../../src/GameStateConfigDesktop.cpp:211
302 msgid "Renderer"
303 msgstr "Рендер"
304
305 #: ../../../src/GameStateConfigDesktop.cpp:227
306 msgid "Full Screen Mode"
307 msgstr "Режим на цял екран"
308
309 #: ../../../src/GameStateConfigDesktop.cpp:231
310 msgid "Move hero using mouse"
311 msgstr "Преместване на героя чрез мишка"
312
313 #: ../../../src/GameStateConfigDesktop.cpp:235
314 msgid "Hardware surfaces"
315 msgstr "Хардуерни повърхности"
316
317 #: ../../../src/GameStateConfigDesktop.cpp:239
318 msgid "V-Sync"
319 msgstr "Вертикална синхронизация (V-Sync)"
320
321 #: ../../../src/GameStateConfigDesktop.cpp:243
322 msgid "Texture Filtering"
323 msgstr "Текстурно филтриране"
324
325 #: ../../../src/GameStateConfigDesktop.cpp:247
326 msgid "DPI scaling"
327 msgstr "DPI мащабиране"
328
329 #: ../../../src/GameStateConfigDesktop.cpp:251
330 msgid "Parallax Layers"
331 msgstr ""
332
333 #: ../../../src/GameStateConfigDesktop.cpp:255
334 msgid "Allow changing gamma"
335 msgstr "Разрешаване промяна на гамата"
336
337 #: ../../../src/GameStateConfigDesktop.cpp:259
338 msgid "Gamma"
339 msgstr "Гама"
340
341 #: ../../../src/GameStateConfigDesktop.cpp:263
342 msgid "Use joystick"
343 msgstr "Използване на джойстик"
344
345 #: ../../../src/GameStateConfigDesktop.cpp:267
346 msgid "Joystick"
347 msgstr "Джойстик"
348
349 #: ../../../src/GameStateConfigDesktop.cpp:283
350 msgid "Mouse aim"
351 msgstr "Прицелване чрез мишка"
352
353 #: ../../../src/GameStateConfigDesktop.cpp:287
354 msgid "Do not use mouse"
355 msgstr "Да не се използва мишка"
356
357 #: ../../../src/GameStateConfigDesktop.cpp:291
358 msgid "Joystick Deadzone"
359 msgstr "Мъртва зона на джойстик"
360
361 #: ../../../src/GameState.cpp:37 ../../../src/GameState.cpp:58
362 msgid "Loading..."
363 msgstr "Зареждане…"
364
365 #: ../../../src/GameStateLoad.cpp:88 ../../../src/GameStateLoad.cpp:101
366 msgid "Delete Save"
367 msgstr "Изтрий героя"
368
369 #: ../../../src/GameStateLoad.cpp:88
370 msgid "Delete this save?"
371 msgstr "Изтриване на героя?"
372
373 #: ../../../src/GameStateLoad.cpp:90
374 msgid "Exit to Title"
375 msgstr "Назад"
376
377 #: ../../../src/GameStateLoad.cpp:93
378 msgid "New Game"
379 msgstr "Нов герой"
380
381 #: ../../../src/GameStateLoad.cpp:97 ../../../src/GameStateLoad.cpp:600
382 msgid "Choose a Slot"
383 msgstr "Избери герой"
384
385 #: ../../../src/GameStateLoad.cpp:573 ../../../src/GameStateLoad.cpp:594
386 msgid "Enable a story mod to continue"
387 msgstr "Включете модификация на историята, за да продължите"
388
389 #: ../../../src/GameStateLoad.cpp:589
390 msgid "Load Game"
391 msgstr "Зареди героя"
392
393 #: ../../../src/GameStateLoad.cpp:695
394 msgid "Entering game world..."
395 msgstr "Влизане в игралния свят…"
396
397 #: ../../../src/GameStateLoad.cpp:698
398 msgid "Loading saved game..."
399 msgstr "Зареждане на запазената игра…"
400
401 #: ../../../src/GameStateLoad.cpp:731
402 msgid "Invalid save"
403 msgstr "Невалиден герой"
404
405 #: ../../../src/GameStateLoad.cpp:755 ../../../src/ItemManager.cpp:747
406 #: ../../../src/MenuPowers.cpp:778 ../../../src/MenuPowers.cpp:1144
407 #: ../../../src/MenuPowers.cpp:1542
408 #, c-format
409 msgid "Level %d"
410 msgstr "Ниво %d"
411
412 #: ../../../src/GameStateNew.cpp:68
413 msgid "Create"
414 msgstr "Създай"
415
416 #: ../../../src/GameStateNew.cpp:76
417 msgid "Randomize"
418 msgstr "Разбъркай"
419
420 #: ../../../src/GameStateNew.cpp:92
421 msgid "Choose a Portrait"
422 msgstr "Избери портрет"
423
424 #: ../../../src/GameStateNew.cpp:96
425 msgid "Choose a Name"
426 msgstr "Избери име"
427
428 #: ../../../src/GameStateNew.cpp:100
429 msgid "Permadeath?"
430 msgstr "Без прераждане?"
431
432 #: ../../../src/GameStateNew.cpp:104
433 msgid "Choose a Class"
434 msgstr "Избери клас"
435
436 #: ../../../src/GameStateTitle.cpp:108
437 msgid "Play Game"
438 msgstr "Играй"
439
440 #: ../../../src/GameStateTitle.cpp:111
441 msgid "Enable a core mod to continue"
442 msgstr "Включете основна модификация, за да продължите"
443
444 #: ../../../src/GameStateTitle.cpp:115
445 msgid "Configuration"
446 msgstr "Настройки"
447
448 #: ../../../src/GameStateTitle.cpp:118
449 msgid "Credits"
450 msgstr "Признания"
451
452 #: ../../../src/GameStateTitle.cpp:121
453 msgid "Exit Game"
454 msgstr "Изход"
455
456 #: ../../../src/InputState.cpp:402
457 msgid "Accept"
458 msgstr "Приемане"
459
460 #: ../../../src/InputState.cpp:403 ../../../src/SDLInputState.cpp:607
461 msgid "Up"
462 msgstr "Up"
463
464 #: ../../../src/InputState.cpp:404 ../../../src/SDLInputState.cpp:585
465 msgid "Down"
466 msgstr "Down"
467
468 #: ../../../src/InputState.cpp:405 ../../../src/SDLInputState.cpp:592
469 msgid "Left"
470 msgstr "Left"
471
472 #: ../../../src/InputState.cpp:406 ../../../src/SDLInputState.cpp:602
473 msgid "Right"
474 msgstr "Right"
475
476 #: ../../../src/InputState.cpp:407
477 msgid "Bar1"
478 msgstr "Лента1"
479
480 #: ../../../src/InputState.cpp:408
481 msgid "Bar2"
482 msgstr "Лента2"
483
484 #: ../../../src/InputState.cpp:409
485 msgid "Bar3"
486 msgstr "Лента3"
487
488 #: ../../../src/InputState.cpp:410
489 msgid "Bar4"
490 msgstr "Лента4"
491
492 #: ../../../src/InputState.cpp:411
493 msgid "Bar5"
494 msgstr "Лента5"
495
496 #: ../../../src/InputState.cpp:412
497 msgid "Bar6"
498 msgstr "Лента6"
499
500 #: ../../../src/InputState.cpp:413
501 msgid "Bar7"
502 msgstr "Лента7"
503
504 #: ../../../src/InputState.cpp:414
505 msgid "Bar8"
506 msgstr "Лента8"
507
508 #: ../../../src/InputState.cpp:415
509 msgid "Bar9"
510 msgstr "Лента9"
511
512 #: ../../../src/InputState.cpp:416
513 msgid "Bar0"
514 msgstr "Лента0"
515
516 #: ../../../src/InputState.cpp:417 ../../../src/MenuActionBar.cpp:83
517 #: ../../../src/MenuCharacter.cpp:54
518 msgid "Character"
519 msgstr "Характер"
520
521 #: ../../../src/InputState.cpp:418 ../../../src/MenuActionBar.cpp:84
522 #: ../../../src/MenuInventory.cpp:137 ../../../src/MenuVendor.cpp:57
523 msgid "Inventory"
524 msgstr "Инвентар"
525
526 #: ../../../src/InputState.cpp:419 ../../../src/MenuActionBar.cpp:85
527 #: ../../../src/MenuPowers.cpp:168
528 msgid "Powers"
529 msgstr "Умения"
530
531 #: ../../../src/InputState.cpp:420 ../../../src/MenuActionBar.cpp:86
532 #: ../../../src/MenuLog.cpp:72
533 msgid "Log"
534 msgstr "Дневник"
535
536 #: ../../../src/InputState.cpp:421
537 msgid "Main1"
538 msgstr "Главен1"
539
540 #: ../../../src/InputState.cpp:422
541 msgid "Main2"
542 msgstr "Главен2"
543
544 #: ../../../src/InputState.cpp:423
545 msgid "Ctrl"
546 msgstr "Ctrl"
547
548 #: ../../../src/InputState.cpp:424
549 msgid "Shift"
550 msgstr "Shift"
551
552 #: ../../../src/InputState.cpp:425
553 msgid "Alt"
554 msgstr "Alt"
555
556 #: ../../../src/InputState.cpp:426 ../../../src/SDLInputState.cpp:584
557 msgid "Delete"
558 msgstr "Delete"
559
560 #: ../../../src/InputState.cpp:427
561 msgid "ActionBar Accept"
562 msgstr "ActionBar Accept"
563
564 #: ../../../src/InputState.cpp:428
565 msgid "ActionBar Left"
566 msgstr "ActionBar Left"
567
568 #: ../../../src/InputState.cpp:429
569 msgid "ActionBar Right"
570 msgstr "ActionBar Right"
571
572 #: ../../../src/InputState.cpp:430
573 msgid "ActionBar Use"
574 msgstr "ActionBar Use"
575
576 #: ../../../src/InputState.cpp:431
577 msgid "Developer Menu"
578 msgstr "Developer меню"
579
580 #: ../../../src/InputState.cpp:433
581 msgid "Left Mouse"
582 msgstr "Left Mouse"
583
584 #: ../../../src/InputState.cpp:434
585 msgid "Middle Mouse"
586 msgstr "Middle Mouse"
587
588 #: ../../../src/InputState.cpp:435
589 msgid "Right Mouse"
590 msgstr "Right Mouse"
591
592 #: ../../../src/InputState.cpp:436
593 msgid "Wheel Up"
594 msgstr "Wheel Up"
595
596 #: ../../../src/InputState.cpp:437
597 msgid "Wheel Down"
598 msgstr "Wheel Down"
599
600 #: ../../../src/InputState.cpp:438
601 msgid "Mouse X1"
602 msgstr "Mouse X1"
603
604 #: ../../../src/InputState.cpp:439
605 msgid "Mouse X2"
606 msgstr "Mouse X2"
607
608 #: ../../../src/ItemManager.cpp:450 ../../../src/ItemManager.cpp:453
609 msgid "Unknown Item"
610 msgstr "Непознат предмет"
611
612 #: ../../../src/ItemManager.cpp:648 ../../../src/MenuPowers.cpp:887
613 #, c-format
614 msgid "%d%% Speed"
615 msgstr "%d%% Бързина"
616
617 #: ../../../src/ItemManager.cpp:652 ../../../src/MenuPowers.cpp:890
618 #, c-format
619 msgid "%d%% Attack Speed"
620 msgstr "%d%% Бързина на атака"
621
622 #: ../../../src/ItemManager.cpp:674 ../../../src/MenuCharacter.cpp:354
623 #: ../../../src/MenuPowers.cpp:833
624 #, c-format
625 msgid "Resistance (%s)"
626 msgstr ""
627
628 #: ../../../src/ItemManager.cpp:684
629 #, c-format
630 msgid "Requires %s"
631 msgstr "Изисква %s"
632
633 #: ../../../src/ItemManager.cpp:733
634 msgid "Quest Item"
635 msgstr "Предмет от куест"
636
637 #: ../../../src/ItemManager.cpp:760
638 #, c-format
639 msgid "Quality: %s"
640 msgstr "Качество: %s"
641
642 #: ../../../src/ItemManager.cpp:785
643 #, c-format
644 msgid "Absorb: %d-%d"
645 msgstr "Абсорбиране: %d – %d"
646
647 #: ../../../src/ItemManager.cpp:787
648 #, c-format
649 msgid "Absorb: %d"
650 msgstr "Абсорбиране: %d"
651
652 #: ../../../src/ItemManager.cpp:827 ../../../src/MenuPowers.cpp:1131
653 #: ../../../src/MenuPowers.cpp:1134
654 #, c-format
655 msgid "Requires Level %d"
656 msgstr "Изисква ниво %d"
657
658 #: ../../../src/ItemManager.cpp:838 ../../../src/MenuPowers.cpp:1123
659 #: ../../../src/MenuPowers.cpp:1125
660 #, c-format
661 msgid "Requires %s %d"
662 msgstr "Изисква %s %d"
663
664 #: ../../../src/ItemManager.cpp:849
665 #, c-format
666 msgid "Requires Class: %s"
667 msgstr "Изисква клас: %s"
668
669 #: ../../../src/ItemManager.cpp:864 ../../../src/ItemManager.cpp:876
670 #, c-format
671 msgid "Buy Price: %d %s"
672 msgstr "Цена за закупуване: %d %s"
673
674 #: ../../../src/ItemManager.cpp:866 ../../../src/ItemManager.cpp:878
675 #, c-format
676 msgid "Buy Price: %d %s each"
677 msgstr "Цена за закупуване: %d %s за брой"
678
679 #: ../../../src/ItemManager.cpp:886
680 #, c-format
681 msgid "Sell Price: %d %s"
682 msgstr "Продажна цена: %d %s"
683
684 #: ../../../src/ItemManager.cpp:888
685 #, c-format
686 msgid "Sell Price: %d %s each"
687 msgstr "Продажна цена: %d %s за брой"
688
689 #: ../../../src/ItemManager.cpp:897
690 msgid "Set:"
691 msgstr "Комплект:"
692
693 #: ../../../src/ItemManager.cpp:904
694 #, c-format
695 msgid "%d items:"
696 msgstr "%d предмета:"
697
698 #: ../../../src/ItemManager.cpp:917
699 #, c-format
700 msgid "Press [%s] to use"
701 msgstr "Натиснете [%s], за да използвате"
702
703 #: ../../../src/ItemManager.cpp:920
704 #, c-format
705 msgid "Press [%s] to read"
706 msgstr "Натиснете [%s], за да прочетете"
707
708 #: ../../../src/MenuActionBar.cpp:87
709 msgid "Loot tooltip visibility"
710 msgstr ""
711
712 #: ../../../src/MenuActionBar.cpp:88
713 msgid "Mini-map mode"
714 msgstr ""
715
716 #: ../../../src/MenuActionBar.cpp:89
717 msgid "Always show stat bar labels"
718 msgstr "Винаги да се показват статистики"
719
720 #: ../../../src/MenuActionBar.cpp:90
721 msgid "Show combat text"
722 msgstr "Показване на боен текст"
723
724 #: ../../../src/MenuActionBar.cpp:254 ../../../src/MenuActionBar.cpp:261
725 #: ../../../src/MenuActionBar.cpp:264 ../../../src/MenuActionBar.cpp:271
726 #, c-format
727 msgid "Hotkey: %s"
728 msgstr "Клавиш: %s"
729
730 #: ../../../src/MenuActionBar.cpp:474
731 #, c-format
732 msgid "Default. Temporarily show all loot tooltips with '%s'."
733 msgstr ""
734
735 #: ../../../src/MenuActionBar.cpp:476
736 #, c-format
737 msgid "Show All. Temporarily hide all loot tooltips with '%s'."
738 msgstr ""
739
740 #: ../../../src/MenuActionBar.cpp:478
741 #, c-format
742 msgid "Hide All. Temporarily show all loot tooltips with '%s'."
743 msgstr ""
744
745 #: ../../../src/MenuActionBar.cpp:482
746 msgid "Visible"
747 msgstr ""
748
749 #: ../../../src/MenuActionBar.cpp:484
750 msgid "Visible (2x zoom)"
751 msgstr ""
752
753 #: ../../../src/MenuActionBar.cpp:486
754 msgid "Hidden"
755 msgstr ""
756
757 #: ../../../src/MenuActionBar.cpp:490 ../../../src/MenuActionBar.cpp:496
758 msgid "Enabled"
759 msgstr ""
760
761 #: ../../../src/MenuActionBar.cpp:492 ../../../src/MenuActionBar.cpp:498
762 msgid "Disabled"
763 msgstr ""
764
765 #: ../../../src/MenuActionBar.cpp:657
766 msgid "Not enough MP."
767 msgstr "Нямате достатъчно мана."
768
769 #: ../../../src/MenuActiveEffects.cpp:124
770 #, c-format
771 msgid "x%d"
772 msgstr "x%d"
773
774 #: ../../../src/MenuActiveEffects.cpp:219
775 msgid "Remaining:"
776 msgstr "Остават:"
777
778 #: ../../../src/MenuActiveEffects.cpp:225
779 #, c-format
780 msgid "x%d stacks"
781 msgstr "x%d стека"
782
783 #: ../../../src/MenuCharacter.cpp:73 ../../../src/MenuCharacter.cpp:78
784 msgid "Name"
785 msgstr "Име"
786
787 #: ../../../src/MenuCharacter.cpp:74 ../../../src/MenuCharacter.cpp:79
788 msgid "Level"
789 msgstr "Ниво"
790
791 #: ../../../src/MenuCharacter.cpp:310
792 #, c-format
793 msgid "%d unspent stat point"
794 msgstr "%d неизразходвана точка за атрибути"
795
796 #: ../../../src/MenuCharacter.cpp:313
797 #, c-format
798 msgid "%d unspent stat points"
799 msgstr "%d неизразходвани точки за атрибути"
800
801 #: ../../../src/MenuCharacter.cpp:355
802 #, c-format
803 msgid "Reduces the damage taken from \"%s\" elemental attacks."
804 msgstr "Намалява понесените щети от стихийната атака „%s“."
805
806 #: ../../../src/MenuCharacter.cpp:365 ../../../src/MenuManager.cpp:283
807 #, c-format
808 msgid "XP: %d"
809 msgstr "Опит: %d"
810
811 #: ../../../src/MenuCharacter.cpp:367
812 #, c-format
813 msgid "Next: %d"
814 msgstr "Следващо: %d"
815
816 #: ../../../src/MenuCharacter.cpp:373
817 #, c-format
818 msgid "base (%d), bonus (%d)"
819 msgstr "основа (%d), бонус (%d)"
820
821 #: ../../../src/MenuCharacter.cpp:381 ../../../src/MenuCharacter.cpp:395
822 msgid "Related stats:"
823 msgstr "Свързани характеристики:"
824
825 #: ../../../src/MenuCharacter.cpp:421 ../../../src/MenuCharacter.cpp:445
826 #, c-format
827 msgid "Each level grants %d."
828 msgstr "Всяко ниво дава %d."
829
830 #: ../../../src/MenuCharacter.cpp:425 ../../../src/MenuCharacter.cpp:449
831 #, c-format
832 msgid "Each point of %s grants %d."
833 msgstr "Всяка точка от %s дава %d."
834
835 #: ../../../src/MenuDevConsole.cpp:63
922 #: ../../../src/MenuConfig.cpp:515
923 msgid ""
924 "Enables the below setting that controls the screen gamma level. The behavior"
925 " of the gamma setting can vary between platforms."
926 msgstr ""
927
928 #: ../../../src/MenuConfig.cpp:516
929 msgid ""
930 "Provides additional text for information that is primarily conveyed through "
931 "color."
932 msgstr ""
933
934 #: ../../../src/MenuConfig.cpp:517
935 msgid ""
936 "Some mods will automatically hide the stat bars when they are inactive. "
937 "Disabling this option will keep them displayed at all times."
938 msgstr ""
939
940 #: ../../../src/MenuConfig.cpp:518
941 msgid ""
942 "When enabled, empty equipment slots will be filled with applicable items "
943 "when they are obtained."
944 msgstr ""
945
946 #: ../../../src/MenuConfig.cpp:519
947 msgid ""
948 "Shows a marker above enemies, allies, and the player when they are obscured "
949 "by tall objects."
950 msgstr ""
951
952 #: ../../../src/MenuConfig.cpp:520
953 msgid ""
954 "When enabled, tooltips for equipped items of the same type are shown next to"
955 " standard item tooltips."
956 msgstr ""
957
958 #: ../../../src/MenuConfig.cpp:521
959 msgid ""
960 "This allows the game to be controlled entirely with the keyboard (or "
961 "joystick)."
962 msgstr ""
963
964 #: ../../../src/MenuConfig.cpp:522
965 msgid ""
966 "When 'Move hero using mouse' is enabled, this setting controls if 'Main1' or"
967 " 'Main2' is used to move the hero. If enabled, 'Main2' will move the hero "
968 "instead of 'Main1'."
969 msgstr ""
970
971 #: ../../../src/MenuConfig.cpp:523
972 msgid ""
973 "When 'Move hero using mouse' is enabled, this setting controls if the Power "
974 "assigned to the movement button can be used by targeting an enemy. If this "
975 "setting is disabled, it is required to use 'Shift' to access the Power "
976 "assigned to the movement button."
977 msgstr ""
978
979 #: ../../../src/MenuConfig.cpp:524
980 msgid ""
981 "The player's attacks will be aimed in the direction of the mouse cursor when"
982 " this is enabled."
983 msgstr ""
984
985 #: ../../../src/MenuConfig.cpp:575
986 msgid "Active Mods"
987 msgstr "Включени модификации"
988
989 #: ../../../src/MenuConfig.cpp:584
990 msgid "Available Mods"
991 msgstr "Налични модификации"
992
993 #: ../../../src/MenuConfig.cpp:603
994 msgid "<< Disable"
995 msgstr "<< Изключи"
996
997 #: ../../../src/MenuConfig.cpp:609
998 msgid "Enable >>"
999 msgstr "Включи >>"
1000
1001 #: ../../../src/MenuConfig.cpp:1444
1002 msgid "Version:"
1003 msgstr "Версия:"
1004
1005 #: ../../../src/MenuConfig.cpp:1449
1006 msgid "Game:"
1007 msgstr "Игра:"
1008
1009 #: ../../../src/MenuConfig.cpp:1454
1010 msgid "Engine version:"
1011 msgstr "Engine версия:"
1012
1013 #: ../../../src/MenuConfig.cpp:1462
1014 msgid "Requires mods:"
1015 msgstr "Изисква модификации:"
1016
1017 #: ../../../src/MenuConfig.cpp:1570 ../../../src/SDLInputState.cpp:748
1018 msgid "(none)"
1019 msgstr "(няма)"
1020
1021 #: ../../../src/MenuConfig.cpp:1587 ../../../src/MenuGameOver.cpp:73
1022 msgid "Save & Exit"
1023 msgstr "Запази и излез"
1024
1025 #: ../../../src/MenuDevConsole.cpp:65
8361026 msgid "Execute"
8371027 msgstr "Изпълни"
8381028
839 #: ../../../src/MenuDevConsole.cpp:101 ../../../src/MenuDevConsole.cpp:151
1029 #: ../../../src/MenuDevConsole.cpp:103 ../../../src/MenuDevConsole.cpp:153
8401030 msgid "Developer Console"
8411031 msgstr "Конзола за програмисти"
8421032
843 #: ../../../src/MenuDevConsole.cpp:141
1033 #: ../../../src/MenuDevConsole.cpp:143
8441034 #, c-format
8451035 msgid "Use '%s' to inspect with the cursor."
8461036 msgstr "Използвайте '%s', за да инспектирате с курсора."
8471037
848 #: ../../../src/MenuDevConsole.cpp:146
1038 #: ../../../src/MenuDevConsole.cpp:148
8491039 msgid "Arguments with spaces should be enclosed with double quotes. Example:"
8501040 msgstr "Аргументи с интервали трябва да бъдат оградени в кавички. Пример:"
8511041
852 #: ../../../src/MenuDevConsole.cpp:147
1042 #: ../../../src/MenuDevConsole.cpp:149
8531043 msgid "Type 'help' to get a list of commands."
8541044 msgstr "Напишете 'help', за да получите списък с команди."
8551045
856 #: ../../../src/MenuDevConsole.cpp:209 ../../../src/MenuDevConsole.cpp:213
1046 #: ../../../src/MenuDevConsole.cpp:211 ../../../src/MenuDevConsole.cpp:215
8571047 msgid "px"
8581048 msgstr "px"
8591049
860 #: ../../../src/MenuDevConsole.cpp:224
1050 #: ../../../src/MenuDevConsole.cpp:226
8611051 msgid "Distance"
8621052 msgstr "Distance"
8631053
864 #: ../../../src/MenuDevConsole.cpp:239 ../../../src/MenuDevConsole.cpp:286
1054 #: ../../../src/MenuDevConsole.cpp:241 ../../../src/MenuDevConsole.cpp:289
1055 #: ../../../src/MenuDevConsole.cpp:303
8651056 msgid "Entity"
8661057 msgstr "Entity"
8671058
868 #: ../../../src/MenuDevConsole.cpp:261 ../../../src/MenuDevConsole.cpp:268
1059 #: ../../../src/MenuDevConsole.cpp:263 ../../../src/MenuDevConsole.cpp:270
8691060 msgid "none"
8701061 msgstr "none"
8711062
872 #: ../../../src/MenuDevConsole.cpp:262 ../../../src/MenuDevConsole.cpp:264
1063 #: ../../../src/MenuDevConsole.cpp:264 ../../../src/MenuDevConsole.cpp:266
8731064 msgid "wall"
8741065 msgstr "wall"
8751066
876 #: ../../../src/MenuDevConsole.cpp:263 ../../../src/MenuDevConsole.cpp:265
1067 #: ../../../src/MenuDevConsole.cpp:265 ../../../src/MenuDevConsole.cpp:267
8771068 msgid "short wall / pit"
8781069 msgstr "short wall / pit"
8791070
880 #: ../../../src/MenuDevConsole.cpp:266
1071 #: ../../../src/MenuDevConsole.cpp:268
8811072 msgid "entity"
8821073 msgstr "entity"
8831074
884 #: ../../../src/MenuDevConsole.cpp:267
1075 #: ../../../src/MenuDevConsole.cpp:269
8851076 msgid "entity, ally"
8861077 msgstr "entity, ally"
8871078
888 #: ../../../src/MenuDevConsole.cpp:274
1079 #: ../../../src/MenuDevConsole.cpp:276
8891080 msgid "Tile"
8901081 msgstr "Tile"
8911082
892 #: ../../../src/MenuDevConsole.cpp:360
1083 #: ../../../src/MenuDevConsole.cpp:377
8931084 msgid "adds a power to the action bar"
8941085 msgstr "добавя умение към лентата за действия"
8951086
896 #: ../../../src/MenuDevConsole.cpp:361
1087 #: ../../../src/MenuDevConsole.cpp:378
8971088 msgid "turns on/off the display of the FPS counter"
8981089 msgstr ""
8991090
900 #: ../../../src/MenuDevConsole.cpp:362
1091 #: ../../../src/MenuDevConsole.cpp:379
9011092 msgid "turns on/off all of the HUD elements"
9021093 msgstr "включва/изключва всички елементи на HUD"
9031094
904 #: ../../../src/MenuDevConsole.cpp:363
1095 #: ../../../src/MenuDevConsole.cpp:380
9051096 msgid "turns on/off the developer hud"
9061097 msgstr "включва/изключва HUD за програмисти"
9071098
908 #: ../../../src/MenuDevConsole.cpp:364
1099 #: ../../../src/MenuDevConsole.cpp:381
9091100 msgid ""
9101101 "Prints a list of powers that match a search term. No search term will list "
9111102 "all items"
9131104 "Отпечатва списък с умения, които съответстват на термин за търсене. Без "
9141105 "термин за търсене ще се отпечатат всички умения."
9151106
916 #: ../../../src/MenuDevConsole.cpp:365
1107 #: ../../../src/MenuDevConsole.cpp:382
9171108 msgid "Prints out all the map filenames located in the \"maps/\" directory."
9181109 msgstr ""
9191110 "Отпечатва всички имена на файлове, намиращи се в директорията „maps/“."
9201111
921 #: ../../../src/MenuDevConsole.cpp:366
1112 #: ../../../src/MenuDevConsole.cpp:383
9221113 msgid ""
9231114 "Prints out the active campaign statuses that match a search term. No search "
9241115 "term will list all active statuses"
9261117 "Отпечатва активните състояния на кампания, които съответстват на термин за "
9271118 "търсене. Без термин за търсене ще се отпечатат всички активни състояния."
9281119
929 #: ../../../src/MenuDevConsole.cpp:367
1120 #: ../../../src/MenuDevConsole.cpp:384
9301121 msgid ""
9311122 "Prints a list of items that match a search term. No search term will list "
9321123 "all items"
9341125 "Отпечатва списък с предмети, които съответстват на термин за търсене. Без "
9351126 "термин за търсене ще се отпечатат всички предмети."
9361127
937 #: ../../../src/MenuDevConsole.cpp:368
1128 #: ../../../src/MenuDevConsole.cpp:385
9381129 msgid ""
9391130 "parses a series of event components and executes them as a single event"
9401131 msgstr ""
9411132 "анализира поредица от компоненти на събитие и ги изпълнява като единично "
9421133 "събитие"
9431134
944 #: ../../../src/MenuDevConsole.cpp:369
1135 #: ../../../src/MenuDevConsole.cpp:386
9451136 msgid "clears the command history"
9461137 msgstr "изчиства историята на командите"
9471138
948 #: ../../../src/MenuDevConsole.cpp:370
1139 #: ../../../src/MenuDevConsole.cpp:387
9491140 msgid "displays this text"
9501141 msgstr "показва този текст"
9511142
952 #: ../../../src/MenuDevConsole.cpp:377
1143 #: ../../../src/MenuDevConsole.cpp:394
9531144 msgid "Toggled the developer hud"
9541145 msgstr "HUD за програмисти е превключен"
9551146
956 #: ../../../src/MenuDevConsole.cpp:381
1147 #: ../../../src/MenuDevConsole.cpp:398
9571148 msgid "Toggled the hud"
9581149 msgstr "HUD е превключен"
9591150
960 #: ../../../src/MenuDevConsole.cpp:385
1151 #: ../../../src/MenuDevConsole.cpp:402
9611152 msgid "Toggled the FPS counter"
9621153 msgstr ""
9631154
964 #: ../../../src/MenuDevConsole.cpp:534
1155 #: ../../../src/MenuDevConsole.cpp:552
9651156 msgid "ERROR: Incorrect number of arguments"
9661157 msgstr "ГРЕШКА: Неправилен брой аргументи"
9671158
968 #: ../../../src/MenuDevConsole.cpp:536 ../../../src/MenuDevConsole.cpp:564
1159 #: ../../../src/MenuDevConsole.cpp:554 ../../../src/MenuDevConsole.cpp:582
9691160 msgid "HINT:"
9701161 msgstr "СЪВЕТ:"
9711162
972 #: ../../../src/MenuDevConsole.cpp:536
1163 #: ../../../src/MenuDevConsole.cpp:554
9731164 msgid "<id>"
9741165 msgstr "<id>"
9751166
976 #: ../../../src/MenuDevConsole.cpp:552
1167 #: ../../../src/MenuDevConsole.cpp:570
9771168 #, c-format
9781169 msgid "ERROR: '%s' is not a valid event key"
9791170 msgstr "ГРЕШКА: '%s' не е валиден ключ за събитие"
9801171
981 #: ../../../src/MenuDevConsole.cpp:562
1172 #: ../../../src/MenuDevConsole.cpp:580
9821173 msgid "ERROR: Too few arguments"
9831174 msgstr "ГРЕШКА: Твърде малко аргументи"
9841175
985 #: ../../../src/MenuDevConsole.cpp:564
1176 #: ../../../src/MenuDevConsole.cpp:582
9861177 msgid "<key>=<val> <key>=<val> ..."
9871178 msgstr "<key>=<val> <key>=<val> …"
9881179
989 #: ../../../src/MenuDevConsole.cpp:569
1180 #: ../../../src/MenuDevConsole.cpp:587
9901181 msgid "ERROR: Unknown command"
9911182 msgstr "ГРЕШКА: Непозната команда"
9921183
993 #: ../../../src/MenuDevConsole.cpp:571
1184 #: ../../../src/MenuDevConsole.cpp:589
9941185 msgid "HINT: Type help"
9951186 msgstr "СЪВЕТ: Напишете help"
9961187
997 #: ../../../src/MenuEnemy.cpp:138
1188 #: ../../../src/MenuEnemy.cpp:162
9981189 #, c-format
9991190 msgid "%s level %d"
10001191 msgstr "%s ниво %d"
10011192
1002 #: ../../../src/MenuEnemy.cpp:162
1193 #: ../../../src/MenuEnemy.cpp:186
10031194 msgid "Dead"
10041195 msgstr "Мъртъв"
10051196
1006 #: ../../../src/MenuEnemy.cpp:164
1197 #: ../../../src/MenuEnemy.cpp:188
10071198 msgid "Destroyed"
10081199 msgstr "Разрушен"
10091200
1010 #: ../../../src/MenuExit.cpp:85 ../../../src/MenuExit.cpp:139
1011 msgid "Paused"
1012 msgstr "Пауза"
1013
1014 #: ../../../src/MenuExit.cpp:91
1015 msgid "Save & Exit"
1016 msgstr "Запази и излез"
1017
1018 #: ../../../src/MenuExit.cpp:92
1019 msgid "Exit"
1020 msgstr "Излез"
1021
1022 #: ../../../src/MenuExit.cpp:96
1023 msgid "Continue"
1024 msgstr "Продължи"
1025
1026 #: ../../../src/MenuInventory.cpp:73
1027 msgid "Automatically equip items"
1028 msgstr "Автоматично екипиране с предмети"
1029
1030 #: ../../../src/MenuInventory.cpp:188
1201 #: ../../../src/MenuGameOver.cpp:69
1202 msgid "Game Over"
1203 msgstr ""
1204
1205 #: ../../../src/MenuInventory.cpp:178
10311206 #, c-format
10321207 msgid "Lost %d%% of %s."
10331208 msgstr "Загубихте %d%% от %s."
10341209
1035 #: ../../../src/MenuInventory.cpp:195
1210 #: ../../../src/MenuInventory.cpp:185
10361211 #, c-format
10371212 msgid "Lost %d%% of total XP."
10381213 msgstr "Загубихте %d%% от общия опит."
10391214
1040 #: ../../../src/MenuInventory.cpp:200
1215 #: ../../../src/MenuInventory.cpp:190
10411216 #, c-format
10421217 msgid "Lost %d%% of current level XP."
10431218 msgstr "Загубихте %d%% опит от текущото ниво."
10441219
1045 #: ../../../src/MenuInventory.cpp:226
1220 #: ../../../src/MenuInventory.cpp:216
10461221 #, c-format
10471222 msgid "Lost %s."
10481223 msgstr "Загубихте %s."
10491224
1050 #: ../../../src/MenuInventory.cpp:274 ../../../src/MenuStash.cpp:146
1225 #: ../../../src/MenuInventory.cpp:258 ../../../src/MenuStash.cpp:276
10511226 #, c-format
10521227 msgid "%d %s"
10531228 msgstr "%d %s"
10541229
1055 #: ../../../src/MenuInventory.cpp:317
1230 #: ../../../src/MenuInventory.cpp:301
10561231 msgid "Pick up item(s):"
10571232 msgstr "Вдигане на предмет:"
10581233
1059 #: ../../../src/MenuInventory.cpp:318
1234 #: ../../../src/MenuInventory.cpp:302
10601235 msgid "Use or equip item:"
10611236 msgstr "Използване на предмет:"
10621237
1063 #: ../../../src/MenuInventory.cpp:319
1238 #: ../../../src/MenuInventory.cpp:303
10641239 #, c-format
10651240 msgid "%s modifiers"
10661241 msgstr "Модификатори за %s"
10671242
1068 #: ../../../src/MenuInventory.cpp:320
1243 #: ../../../src/MenuInventory.cpp:304
10691244 msgid "Select a quantity of item:"
10701245 msgstr "Избиране на количество:"
10711246
1072 #: ../../../src/MenuInventory.cpp:323
1247 #: ../../../src/MenuInventory.cpp:307
10731248 msgid "Stash item stack:"
10741249 msgstr "Скриване на предмет:"
10751250
1076 #: ../../../src/MenuInventory.cpp:325
1251 #: ../../../src/MenuInventory.cpp:309
10771252 msgid "Sell item stack:"
10781253 msgstr "Продаване на предмет:"
10791254
1080 #: ../../../src/MenuInventory.cpp:592
1255 #: ../../../src/MenuInventory.cpp:576
10811256 msgid "You don't have enough of the required item."
10821257 msgstr "Нямате достатъчно от необходимия предмет."
10831258
1084 #: ../../../src/MenuInventory.cpp:599
1259 #: ../../../src/MenuInventory.cpp:588
10851260 msgid "You can't use this item right now."
10861261 msgstr "Не можете да използвате този предмет точно сега."
10871262
1088 #: ../../../src/MenuInventory.cpp:611
1263 #: ../../../src/MenuInventory.cpp:600
10891264 msgid "This item can only be used from the action bar."
10901265 msgstr "Този предмет може да бъде използван само от лентата за действия."
10911266
1092 #: ../../../src/MenuInventory.cpp:729
1267 #: ../../../src/MenuInventory.cpp:718
10931268 msgid "Inventory is full."
10941269 msgstr "Инвентарът е пълен."
10951270
1096 #: ../../../src/MenuInventory.cpp:849
1271 #: ../../../src/MenuInventory.cpp:843
10971272 #, c-format
10981273 msgid "Not enough %s."
10991274 msgstr "Нямате достатъчно %s."
11001275
1101 #: ../../../src/MenuInventory.cpp:869 ../../../src/MenuInventory.cpp:876
1276 #: ../../../src/MenuInventory.cpp:863 ../../../src/MenuInventory.cpp:870
11021277 msgid "This item can not be sold."
11031278 msgstr "Този предмет не може да бъде продаден."
11041279
11101285 msgid "Quests"
11111286 msgstr "Куестове"
11121287
1113 #: ../../../src/MenuManager.cpp:286
1288 #: ../../../src/MenuManager.cpp:305
11141289 #, c-format
11151290 msgid "XP: %d/%d"
11161291 msgstr "Опит: %d/%d"
11171292
1118 #: ../../../src/MenuManager.cpp:827
1293 #: ../../../src/MenuManager.cpp:875
11191294 msgid "This item can not be dropped."
11201295 msgstr "Този предмет не може да бъде пуснат."
1296
1297 #: ../../../src/MenuManager.cpp:1501
1298 msgid "Equipped"
1299 msgstr ""
1300
1301 #: ../../../src/MenuMovementType.cpp:87
1302 msgid "Select a Movement Type"
1303 msgstr ""
1304
1305 #: ../../../src/MenuMovementType.cpp:89
1306 msgid "Can be changed later in the Configuration menu."
1307 msgstr ""
1308
1309 #: ../../../src/MenuMovementType.cpp:92 ../../../src/MenuMovementType.cpp:122
1310 msgid "Keyboard"
1311 msgstr ""
1312
1313 #: ../../../src/MenuMovementType.cpp:93 ../../../src/MenuMovementType.cpp:128
1314 msgid "Mouse"
1315 msgstr ""
1316
1317 #: ../../../src/MenuMovementType.cpp:129
1318 msgid "Button"
1319 msgstr ""
11211320
11221321 #: ../../../src/MenuNumPicker.cpp:59
11231322 msgid "Enter amount:"
11241323 msgstr "Въведи количество:"
11251324
1126 #: ../../../src/MenuPowers.cpp:787
1325 #: ../../../src/MenuPowers.cpp:872
11271326 msgid "Passive"
11281327 msgstr "Пасивно"
11291328
1130 #: ../../../src/MenuPowers.cpp:792
1329 #: ../../../src/MenuPowers.cpp:879
11311330 #, c-format
11321331 msgid "Costs %d MP"
11331332 msgstr "Изразходва %d мана"
11341333
1135 #: ../../../src/MenuPowers.cpp:796
1334 #: ../../../src/MenuPowers.cpp:883
11361335 #, c-format
11371336 msgid "Costs %d HP"
11381337 msgstr "Изразходва %d здраве"
11391338
1140 #: ../../../src/MenuPowers.cpp:801
1339 #: ../../../src/MenuPowers.cpp:887
11411340 msgid "Cooldown:"
11421341 msgstr "Време на изчакване:"
11431342
1144 #: ../../../src/MenuPowers.cpp:866 ../../../src/MenuPowers.cpp:869
1343 #: ../../../src/MenuPowers.cpp:938 ../../../src/MenuPowers.cpp:941
11451344 msgid "Damage per second"
11461345 msgstr "Щети в секунда"
11471346
1148 #: ../../../src/MenuPowers.cpp:872 ../../../src/MenuPowers.cpp:875
1347 #: ../../../src/MenuPowers.cpp:944 ../../../src/MenuPowers.cpp:947
11491348 msgid "HP per second"
11501349 msgstr "Здраве в секунда"
11511350
1152 #: ../../../src/MenuPowers.cpp:878 ../../../src/MenuPowers.cpp:881
1351 #: ../../../src/MenuPowers.cpp:950 ../../../src/MenuPowers.cpp:953
11531352 msgid "MP per second"
11541353 msgstr "Мана в секунда"
11551354
1156 #: ../../../src/MenuPowers.cpp:885
1355 #: ../../../src/MenuPowers.cpp:957
11571356 msgid "Immobilize"
11581357 msgstr "Приковаване"
11591358
1160 #: ../../../src/MenuPowers.cpp:893
1359 #: ../../../src/MenuPowers.cpp:965
11611360 msgid "Immunity"
11621361 msgstr "Имунитет"
11631362
1164 #: ../../../src/MenuPowers.cpp:896
1363 #: ../../../src/MenuPowers.cpp:968
11651364 msgid "Immunity to damage over time"
11661365 msgstr "Имунитет към щети за интервал от време"
11671366
1168 #: ../../../src/MenuPowers.cpp:899
1367 #: ../../../src/MenuPowers.cpp:971
11691368 msgid "Immunity to slow"
11701369 msgstr "Имунитет към забавяне"
11711370
1172 #: ../../../src/MenuPowers.cpp:902
1371 #: ../../../src/MenuPowers.cpp:974
11731372 msgid "Immunity to stun"
11741373 msgstr "Имунитет към зашеметяване"
11751374
1176 #: ../../../src/MenuPowers.cpp:905
1375 #: ../../../src/MenuPowers.cpp:977
11771376 msgid "Immunity to HP steal"
11781377 msgstr "Имунитет към крадене на здраве"
11791378
1180 #: ../../../src/MenuPowers.cpp:908
1379 #: ../../../src/MenuPowers.cpp:980
11811380 msgid "Immunity to MP steal"
11821381 msgstr "Имунитет към крадене на мана"
11831382
1184 #: ../../../src/MenuPowers.cpp:911
1383 #: ../../../src/MenuPowers.cpp:983
11851384 msgid "Immunity to knockback"
11861385 msgstr "Имунитет към бутащ удар"
11871386
1188 #: ../../../src/MenuPowers.cpp:914
1387 #: ../../../src/MenuPowers.cpp:986
11891388 msgid "Immunity to damage reflection"
11901389 msgstr "Имунитет към отразяване на щети"
11911390
1192 #: ../../../src/MenuPowers.cpp:917
1391 #: ../../../src/MenuPowers.cpp:992
11931392 msgid "Stun"
11941393 msgstr "Зашеметяване"
11951394
1196 #: ../../../src/MenuPowers.cpp:920
1395 #: ../../../src/MenuPowers.cpp:995
11971396 msgid "Automatic revive on death"
11981397 msgstr "Автоматично прераждане при смърт"
11991398
1200 #: ../../../src/MenuPowers.cpp:923
1399 #: ../../../src/MenuPowers.cpp:998
12011400 msgid "Convert"
12021401 msgstr "Превръщане"
12031402
1204 #: ../../../src/MenuPowers.cpp:926
1403 #: ../../../src/MenuPowers.cpp:1001
12051404 msgid "Fear"
12061405 msgstr "Страх"
12071406
1208 #: ../../../src/MenuPowers.cpp:929
1407 #: ../../../src/MenuPowers.cpp:1004
12091408 msgid "Lifespan"
12101409 msgstr "Продължителност на живота"
12111410
1212 #: ../../../src/MenuPowers.cpp:953
1411 #: ../../../src/MenuPowers.cpp:1028
12131412 msgid "Magical Shield"
12141413 msgstr "Магически щит"
12151414
1216 #: ../../../src/MenuPowers.cpp:982
1415 #: ../../../src/MenuPowers.cpp:1057
12171416 msgid "Healing"
12181417 msgstr "Излекуване"
12191418
1220 #: ../../../src/MenuPowers.cpp:985
1419 #: ../../../src/MenuPowers.cpp:1060
12211420 msgid "Knockback"
12221421 msgstr "Бутащ удар"
12231422
1224 #: ../../../src/MenuPowers.cpp:1010
1423 #: ../../../src/MenuPowers.cpp:1084
12251424 #, c-format
12261425 msgid "%d%% chance"
12271426 msgstr "%d%% шанс"
12281427
1229 #: ../../../src/MenuPowers.cpp:1062
1428 #: ../../../src/MenuPowers.cpp:1136
12301429 msgid "Base Accuracy"
12311430 msgstr "Основна точност"
12321431
1233 #: ../../../src/MenuPowers.cpp:1082
1432 #: ../../../src/MenuPowers.cpp:1156
12341433 msgid "Base Critical Chance"
12351434 msgstr "Основен критичен шанс"
12361435
1237 #: ../../../src/MenuPowers.cpp:1090
1436 #: ../../../src/MenuPowers.cpp:1164
12381437 msgid "Ignores Absorbtion"
12391438 msgstr "Игнорира абсорбиране"
12401439
1241 #: ../../../src/MenuPowers.cpp:1095
1440 #: ../../../src/MenuPowers.cpp:1169
12421441 msgid "Ignores Avoidance"
12431442 msgstr "Игнорира избягване"
12441443
1245 #: ../../../src/MenuPowers.cpp:1100
1444 #: ../../../src/MenuPowers.cpp:1174
12461445 #, c-format
12471446 msgid "%d%% Chance to crit slowed targets"
12481447 msgstr "%d%% Шанс за критичен удар на забавени мишени"
12491448
1250 #: ../../../src/MenuPowers.cpp:1105
1449 #: ../../../src/MenuPowers.cpp:1179
12511450 #, c-format
12521451 msgid "Elemental Damage (%s)"
12531452 msgstr ""
12541453
1255 #: ../../../src/MenuPowers.cpp:1114
1454 #: ../../../src/MenuPowers.cpp:1188
12561455 #, c-format
12571456 msgid "Requires a %s"
12581457 msgstr "Изисква %s"
12591458
1260 #: ../../../src/MenuPowers.cpp:1151 ../../../src/MenuPowers.cpp:1154
1459 #: ../../../src/MenuPowers.cpp:1226 ../../../src/MenuPowers.cpp:1229
12611460 #, c-format
12621461 msgid "Requires Power: %s"
12631462 msgstr "Изисква умение: %s"
12641463
1265 #: ../../../src/MenuPowers.cpp:1163
1464 #: ../../../src/MenuPowers.cpp:1238
12661465 msgid "Click to Unlock (uses 1 Skill Point)"
12671466 msgstr "Натиснете, за да отключите (използва 1 точка за умения)"
12681467
1269 #: ../../../src/MenuPowers.cpp:1167 ../../../src/MenuPowers.cpp:1169
1468 #: ../../../src/MenuPowers.cpp:1242 ../../../src/MenuPowers.cpp:1244
12701469 msgid "Requires 1 Skill Point"
12711470 msgstr "Изисква 1 точка за умения"
12721471
1273 #: ../../../src/MenuPowers.cpp:1355
1274 #, c-format
1275 msgid "%d unspent skill point"
1276 msgstr "%d неизразходвана точка за умения"
1277
1278 #: ../../../src/MenuPowers.cpp:1358
1279 #, c-format
1280 msgid "%d unspent skill points"
1281 msgstr "%d неизразходвани точки за умения"
1282
1283 #: ../../../src/MenuPowers.cpp:1388
1472 #: ../../../src/MenuPowers.cpp:1444
1473 #, c-format
1474 msgid "Available skill points: %d"
1475 msgstr ""
1476
1477 #: ../../../src/MenuPowers.cpp:1476
12841478 msgid "Next Level:"
12851479 msgstr "Следващо ниво:"
12861480
1287 #: ../../../src/MenuStash.cpp:96
1288 msgid "Shared Stash"
1289 msgstr "Споделен сандък"
1290
1291 #: ../../../src/MenuStash.cpp:209
1292 msgid "Can not store quest items in the stash."
1293 msgstr "Не могат да се скриват предмети от куестове."
1294
1295 #: ../../../src/MenuStash.cpp:219
1481 #: ../../../src/MenuStash.cpp:80 ../../../src/MenuStash.cpp:161
1482 msgid "Stash"
1483 msgstr ""
1484
1485 #: ../../../src/MenuStash.cpp:174 ../../../src/MenuStash.cpp:188
1486 msgid "Private"
1487 msgstr ""
1488
1489 #: ../../../src/MenuStash.cpp:175
1490 msgid "Shared"
1491 msgstr ""
1492
1493 #: ../../../src/MenuStash.cpp:340
1494 msgid "This item can not be stored in the stash."
1495 msgstr ""
1496
1497 #: ../../../src/MenuStash.cpp:345
1498 msgid "This item can not be stored in the private stash."
1499 msgstr ""
1500
1501 #: ../../../src/MenuStash.cpp:350
1502 msgid "This item can not be stored in the shared stash."
1503 msgstr ""
1504
1505 #: ../../../src/MenuStash.cpp:360
12961506 msgid "Stash is full."
12971507 msgstr "Сандъка е пълен."
12981508
1299 #: ../../../src/MenuTalker.cpp:454
1509 #: ../../../src/MenuStash.cpp:414
1510 #, c-format
1511 msgid "Can not store item in stash: %s"
1512 msgstr ""
1513
1514 #: ../../../src/MenuTalker.cpp:448
1515 #, c-format
1516 msgid "<dialog node %d>"
1517 msgstr ""
1518
1519 #: ../../../src/MenuTalker.cpp:456
13001520 msgid "Trade"
13011521 msgstr "Търгувай"
13021522
1303 #: ../../../src/MenuVendor.cpp:58
1523 #: ../../../src/MenuVendor.cpp:60
13041524 msgid "Buyback"
13051525 msgstr "Откупуване"
13061526
1307 #: ../../../src/MenuVendor.cpp:279
1527 #: ../../../src/MenuVendor.cpp:283
13081528 msgid "Vendor"
13091529 msgstr "Продавач"
13101530
1311 #: ../../../src/PowerManager.cpp:1136
1531 #: ../../../src/PowerManager.cpp:1208
13121532 #, c-format
13131533 msgid "+%d Shield"
13141534 msgstr "+%d Щит"
13151535
1316 #: ../../../src/PowerManager.cpp:1392
1536 #: ../../../src/PowerManager.cpp:1465
13171537 msgid "You are already transformed, untransform first."
13181538 msgstr "Вече сте преобразени, първо се преобразете обратно."
13191539
1320 #: ../../../src/PowerManager.cpp:1404
1540 #: ../../../src/PowerManager.cpp:1477
13211541 msgid "Could not untransform at this position."
13221542 msgstr "Не можахте да се преобразите на това място."
13231543
13251545 msgid "Completed Quests"
13261546 msgstr "Завършени куестове"
13271547
1328 #: ../../../src/SaveLoad.cpp:243 ../../../src/SaveLoad.cpp:244
1548 #: ../../../src/SaveLoad.cpp:250 ../../../src/SaveLoad.cpp:251
13291549 msgid "Game saved."
13301550 msgstr "Играта е запазена."
13311551
1332 #: ../../../src/SDLInputState.cpp:582
1552 #: ../../../src/SDLInputState.cpp:643
1553 msgid "BkSp"
1554 msgstr ""
1555
1556 #: ../../../src/SDLInputState.cpp:644
1557 msgid "Caps"
1558 msgstr ""
1559
1560 #: ../../../src/SDLInputState.cpp:645
1561 msgid "Del"
1562 msgstr ""
1563
1564 #: ../../../src/SDLInputState.cpp:647 ../../../src/SDLInputState.cpp:677
1565 msgid "End"
1566 msgstr "End"
1567
1568 #: ../../../src/SDLInputState.cpp:648
1569 msgid "Esc"
1570 msgstr ""
1571
1572 #: ../../../src/SDLInputState.cpp:649 ../../../src/SDLInputState.cpp:679
1573 msgid "Home"
1574 msgstr "Home"
1575
1576 #: ../../../src/SDLInputState.cpp:650
1577 msgid "Ins"
1578 msgstr ""
1579
1580 #: ../../../src/SDLInputState.cpp:651
1581 msgid "LAlt"
1582 msgstr ""
1583
1584 #: ../../../src/SDLInputState.cpp:652
1585 msgid "LCtrl"
1586 msgstr ""
1587
1588 #: ../../../src/SDLInputState.cpp:654
1589 msgid "LShft"
1590 msgstr ""
1591
1592 #: ../../../src/SDLInputState.cpp:655
1593 msgid "Num"
1594 msgstr ""
1595
1596 #: ../../../src/SDLInputState.cpp:656
1597 msgid "PgDn"
1598 msgstr ""
1599
1600 #: ../../../src/SDLInputState.cpp:657
1601 msgid "PgUp"
1602 msgstr ""
1603
1604 #: ../../../src/SDLInputState.cpp:658 ../../../src/SDLInputState.cpp:688
1605 msgid "Pause"
1606 msgstr "Pause"
1607
1608 #: ../../../src/SDLInputState.cpp:659
1609 msgid "Print"
1610 msgstr ""
1611
1612 #: ../../../src/SDLInputState.cpp:660
1613 msgid "RAlt"
1614 msgstr ""
1615
1616 #: ../../../src/SDLInputState.cpp:661
1617 msgid "RCtrl"
1618 msgstr ""
1619
1620 #: ../../../src/SDLInputState.cpp:662
1621 msgid "Ret"
1622 msgstr ""
1623
1624 #: ../../../src/SDLInputState.cpp:664
1625 msgid "RShft"
1626 msgstr ""
1627
1628 #: ../../../src/SDLInputState.cpp:665
1629 msgid "SLock"
1630 msgstr ""
1631
1632 #: ../../../src/SDLInputState.cpp:666
1633 msgid "Spc"
1634 msgstr ""
1635
1636 #: ../../../src/SDLInputState.cpp:667 ../../../src/SDLInputState.cpp:697
1637 msgid "Tab"
1638 msgstr "Tab"
1639
1640 #: ../../../src/SDLInputState.cpp:673
13331641 msgid "Backspace"
13341642 msgstr "Backspace"
13351643
1336 #: ../../../src/SDLInputState.cpp:583
1644 #: ../../../src/SDLInputState.cpp:674
13371645 msgid "CapsLock"
13381646 msgstr "CapsLock"
13391647
1340 #: ../../../src/SDLInputState.cpp:586
1341 msgid "End"
1342 msgstr "End"
1343
1344 #: ../../../src/SDLInputState.cpp:587
1648 #: ../../../src/SDLInputState.cpp:678
13451649 msgid "Escape"
13461650 msgstr "Escape"
13471651
1348 #: ../../../src/SDLInputState.cpp:588
1349 msgid "Home"
1350 msgstr "Home"
1351
1352 #: ../../../src/SDLInputState.cpp:589
1652 #: ../../../src/SDLInputState.cpp:680
13531653 msgid "Insert"
13541654 msgstr "Insert"
13551655
1356 #: ../../../src/SDLInputState.cpp:590
1656 #: ../../../src/SDLInputState.cpp:681
13571657 msgid "Left Alt"
13581658 msgstr "Left Alt"
13591659
1360 #: ../../../src/SDLInputState.cpp:591
1660 #: ../../../src/SDLInputState.cpp:682
13611661 msgid "Left Ctrl"
13621662 msgstr "Left Ctrl"
13631663
1364 #: ../../../src/SDLInputState.cpp:593
1664 #: ../../../src/SDLInputState.cpp:684
13651665 msgid "Left Shift"
13661666 msgstr "Left Shift"
13671667
1368 #: ../../../src/SDLInputState.cpp:594
1668 #: ../../../src/SDLInputState.cpp:685
13691669 msgid "NumLock"
13701670 msgstr "NumLock"
13711671
1372 #: ../../../src/SDLInputState.cpp:595
1672 #: ../../../src/SDLInputState.cpp:686
13731673 msgid "PageDown"
13741674 msgstr "PageDown"
13751675
1376 #: ../../../src/SDLInputState.cpp:596
1676 #: ../../../src/SDLInputState.cpp:687
13771677 msgid "PageUp"
13781678 msgstr "PageUp"
13791679
1380 #: ../../../src/SDLInputState.cpp:597
1381 msgid "Pause"
1382 msgstr "Pause"
1383
1384 #: ../../../src/SDLInputState.cpp:598
1680 #: ../../../src/SDLInputState.cpp:689
13851681 msgid "PrintScreen"
13861682 msgstr "PrintScreen"
13871683
1388 #: ../../../src/SDLInputState.cpp:599
1684 #: ../../../src/SDLInputState.cpp:690
13891685 msgid "Right Alt"
13901686 msgstr "Right Alt"
13911687
1392 #: ../../../src/SDLInputState.cpp:600
1688 #: ../../../src/SDLInputState.cpp:691
13931689 msgid "Right Ctrl"
13941690 msgstr "Right Ctrl"
13951691
1396 #: ../../../src/SDLInputState.cpp:601
1692 #: ../../../src/SDLInputState.cpp:692
13971693 msgid "Return"
13981694 msgstr "Return"
13991695
1400 #: ../../../src/SDLInputState.cpp:603
1696 #: ../../../src/SDLInputState.cpp:694
14011697 msgid "Right Shift"
14021698 msgstr "Right Shift"
14031699
1404 #: ../../../src/SDLInputState.cpp:604
1700 #: ../../../src/SDLInputState.cpp:695
14051701 msgid "ScrollLock"
14061702 msgstr "ScrollLock"
14071703
1408 #: ../../../src/SDLInputState.cpp:605
1704 #: ../../../src/SDLInputState.cpp:696
14091705 msgid "Space"
14101706 msgstr "Space"
14111707
1412 #: ../../../src/SDLInputState.cpp:606
1413 msgid "Tab"
1414 msgstr "Tab"
1415
1416 #: ../../../src/SDLInputState.cpp:620
1708 #: ../../../src/SDLInputState.cpp:710
1709 #, c-format
1710 msgid "M%d"
1711 msgstr ""
1712
1713 #: ../../../src/SDLInputState.cpp:716
14171714 #, c-format
14181715 msgid "Mouse %d"
14191716 msgstr "Mouse %d"
14201717
1421 #: ../../../src/SDLInputState.cpp:628
1718 #: ../../../src/SDLInputState.cpp:726
1719 #, c-format
1720 msgid "JX%d-"
1721 msgstr ""
1722
1723 #: ../../../src/SDLInputState.cpp:728
14221724 #, c-format
14231725 msgid "Axis %d -"
14241726 msgstr "Axis %d -"
14251727
1426 #: ../../../src/SDLInputState.cpp:630
1728 #: ../../../src/SDLInputState.cpp:732
1729 #, c-format
1730 msgid "JX%d+"
1731 msgstr ""
1732
1733 #: ../../../src/SDLInputState.cpp:734
14271734 #, c-format
14281735 msgid "Axis %d +"
14291736 msgstr "Axis %d +"
14301737
1431 #: ../../../src/SDLInputState.cpp:633
1738 #: ../../../src/SDLInputState.cpp:739
1739 #, c-format
1740 msgid "JB%d"
1741 msgstr ""
1742
1743 #: ../../../src/SDLInputState.cpp:741
14321744 #, c-format
14331745 msgid "Button %d"
14341746 msgstr "Бутон %d"
14351747
1436 #: ../../../src/SDLInputState.cpp:637
1437 msgid "(none)"
1438 msgstr "(няма)"
1439
1440 #: ../../../src/SDLInputState.cpp:677
1748 #: ../../../src/SDLInputState.cpp:787
14411749 msgid "Touch control D-Pad"
14421750 msgstr ""
14431751
1444 #: ../../../src/SDLInputState.cpp:701
1752 #: ../../../src/SDLInputState.cpp:810
14451753 msgid "Touch control buttons"
14461754 msgstr ""
14471755
1448 #: ../../../src/SDLInputState.cpp:716
1756 #: ../../../src/SDLInputState.cpp:824
14491757 msgid "Tap"
14501758 msgstr "Натискане"
14511759
1452 #: ../../../src/SDLInputState.cpp:760 ../../../src/SDLInputState.cpp:764
1453 #: ../../../src/SDLInputState.cpp:768
1760 #: ../../../src/SDLInputState.cpp:876 ../../../src/SDLInputState.cpp:878
1761 #, c-format
1762 msgid "Can not bind: %s"
1763 msgstr ""
1764
1765 #: ../../../src/SDLInputState.cpp:890 ../../../src/SDLInputState.cpp:894
1766 #: ../../../src/SDLInputState.cpp:898
14541767 #, c-format
14551768 msgid "'%s' is no longer bound to:"
14561769 msgstr "'%s' вече не е свързан с:"
16131926 msgid "Base MP"
16141927 msgstr "Основна мана"
16151928
1616 #: ../../../src/Utils.cpp:346
1929 #: ../../../src/Utils.cpp:365
16171930 msgid "k"
16181931 msgstr "к"
16191932
1620 #: ../../../src/Utils.cpp:580
1933 #: ../../../src/Utils.cpp:635
16211934 #, c-format
16221935 msgid "%s second"
16231936 msgstr "%s секунда"
16241937
1625 #: ../../../src/Utils.cpp:583
1938 #: ../../../src/Utils.cpp:638
16261939 #, c-format
16271940 msgid "%s seconds"
16281941 msgstr "%s секунди"
33 # FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
44 #
55 # Translators:
6 # Marc Tormo i Bochaca <mtbochaca@gmail.com>, 2018
6 # Marc Tormo i Bochaca <mtbochaca@gmail.com>, 2019
7 # Maria Cano <mariacdavila98@gmail.com>, 2020
78 #
89 #, fuzzy
910 msgid ""
1011 msgstr ""
1112 "Project-Id-Version: PACKAGE VERSION\n"
1213 "Report-Msgid-Bugs-To: \n"
13 "POT-Creation-Date: 2018-11-17 21:50-0500\n"
14 "POT-Creation-Date: 2021-05-23 20:34-0400\n"
1415 "PO-Revision-Date: 2018-03-28 19:16+0000\n"
15 "Last-Translator: Marc Tormo i Bochaca <mtbochaca@gmail.com>, 2018\n"
16 "Last-Translator: Maria Cano <mariacdavila98@gmail.com>, 2020\n"
1617 "Language-Team: Catalan (https://www.transifex.com/flareorg/teams/84925/ca/)\n"
1718 "MIME-Version: 1.0\n"
1819 "Content-Type: text/plain; charset=UTF-8\n"
2021 "Language: ca\n"
2122 "Plural-Forms: nplurals=2; plural=(n != 1);\n"
2223
23 #: ../../../src/Avatar.cpp:367
24 #: ../../../src/Avatar.cpp:391
25 msgid "Your health is low!"
26 msgstr "Tens la salut baixa!"
27
28 #: ../../../src/Avatar.cpp:421
2429 #, c-format
2530 msgid "Congratulations, you have reached level %d!"
26 msgstr "Felicitacions, has arribat al nivell %d!"
27
28 #: ../../../src/Avatar.cpp:369
29 msgid "You may increase one attribute through the Character Menu."
30 msgstr "Podeu incrementar un atribut a través del Menú del Personatge."
31
32 #: ../../../src/Avatar.cpp:583
33 msgid "You are defeated. Game over! ${INPUT_CONTINUE} to exit to Title."
34 msgstr ""
35 "Has estat vençut. El joc s'ha acabat! Prem ${INPUT_CONTINUE} per sortir al "
36 "títol."
37
38 #: ../../../src/Avatar.cpp:589
39 msgid "You are defeated. ${INPUT_CONTINUE} to continue."
40 msgstr "Has estat vençut. Prem ${INPUT_CONTINUE} per continuar."
41
42 #: ../../../src/Avatar.cpp:839
31 msgstr "Felicitats, has pujat a nivell %d!"
32
33 #: ../../../src/Avatar.cpp:423
34 msgid "You may increase one or more attributes through the Character Menu."
35 msgstr "Pots augmentar un atribut o més al Menú del Personatge."
36
37 #: ../../../src/Avatar.cpp:427
38 msgid "You may unlock one or more abilities through the Powers Menu."
39 msgstr "Pots desbloquejar una habilitat o més al Menú de Poders."
40
41 #: ../../../src/Avatar.cpp:689
42 msgid "You are defeated."
43 msgstr ""
44
45 #: ../../../src/Avatar.cpp:935
4346 msgid "Transformation expired. You have been moved back to a safe place."
4447 msgstr "La transformació ha caducat. Us heu mogut a un lloc segur."
4548
46 #: ../../../src/CampaignManager.cpp:153
49 #: ../../../src/CampaignManager.cpp:152
4750 #, c-format
4851 msgid "%d %s removed."
4952 msgstr "%d %s eliminat."
5053
51 #: ../../../src/CampaignManager.cpp:162
54 #: ../../../src/CampaignManager.cpp:171
55 #, c-format
56 msgid "%s x%d removed."
57 msgstr "%s%d eliminat."
58
59 #: ../../../src/CampaignManager.cpp:173
5260 #, c-format
5361 msgid "%s removed."
5462 msgstr "%s eliminat."
5563
56 #: ../../../src/CampaignManager.cpp:175
64 #: ../../../src/CampaignManager.cpp:187
65 #, c-format
66 msgid "You receive %d %s."
67 msgstr "Reps %d %s."
68
69 #: ../../../src/CampaignManager.cpp:191
70 #, c-format
71 msgid "You receive %s x%d."
72 msgstr "Reps %s x%d."
73
74 #: ../../../src/CampaignManager.cpp:193
5775 #, c-format
5876 msgid "You receive %s."
5977 msgstr "Reps %s."
6078
61 #: ../../../src/CampaignManager.cpp:177
62 #, c-format
63 msgid "You receive %s x%d."
64 msgstr "Reps %s x%d."
65
66 #: ../../../src/CampaignManager.cpp:186
67 #, c-format
68 msgid "You receive %d %s."
69 msgstr "Reps %d %s."
70
71 #: ../../../src/CampaignManager.cpp:195
79 #: ../../../src/CampaignManager.cpp:210
7280 #, c-format
7381 msgid "You receive %d XP."
7482 msgstr "Reps %d XP."
7583
76 #: ../../../src/CampaignManager.cpp:201
84 #: ../../../src/CampaignManager.cpp:216
7785 msgid "HP restored."
7886 msgstr "PV restaurats."
7987
80 #: ../../../src/CampaignManager.cpp:205
88 #: ../../../src/CampaignManager.cpp:220
8189 msgid "MP restored."
8290 msgstr "PM restaurats."
8391
84 #: ../../../src/CampaignManager.cpp:210
92 #: ../../../src/CampaignManager.cpp:225
8593 msgid "HP and MP restored."
8694 msgstr "PV i PM restaurats."
8795
88 #: ../../../src/CampaignManager.cpp:214
96 #: ../../../src/CampaignManager.cpp:229
8997 msgid "Negative effects removed."
9098 msgstr "Efectes negatius eliminats."
9199
92 #: ../../../src/CampaignManager.cpp:220
100 #: ../../../src/CampaignManager.cpp:235
93101 msgid "HP and MP restored, negative effects removed"
94102 msgstr "Restaurats PV i PM, efectes negatius eliminats"
95103
113121 "\n"
114122 "El renderitzador per defecte és sovint més ràpid que el renderitzat SDL per programari."
115123
116 #: ../../../src/EngineSettings.cpp:561
124 #: ../../../src/EngineSettings.cpp:586
117125 msgid "Adventurer"
118126 msgstr "Aventurer"
119127
120 #: ../../../src/Entity.cpp:511
128 #: ../../../src/Entity.cpp:527
121129 msgid "miss"
122 msgstr "faltar"
123
124 #: ../../../src/Entity.cpp:548 ../../../src/PowerManager.cpp:1152
125 #: ../../../src/StatBlock.cpp:805 ../../../src/StatBlock.cpp:811
130 msgstr "fallar"
131
132 #: ../../../src/Entity.cpp:565 ../../../src/PowerManager.cpp:1224
133 #: ../../../src/StatBlock.cpp:917 ../../../src/StatBlock.cpp:923
126134 #, c-format
127135 msgid "+%d HP"
128136 msgstr "+%d PV"
129137
130 #: ../../../src/Entity.cpp:555 ../../../src/StatBlock.cpp:816
131 #: ../../../src/StatBlock.cpp:822
138 #: ../../../src/Entity.cpp:572 ../../../src/StatBlock.cpp:928
139 #: ../../../src/StatBlock.cpp:934
132140 #, c-format
133141 msgid "+%d MP"
134142 msgstr "+%d PM"
135143
136 #: ../../../src/EventManager.cpp:738
144 #: ../../../src/EventManager.cpp:792
137145 msgid "Unknown destination"
138146 msgstr "Destinació desconeguda"
139147
140 #: ../../../src/GameStateConfigBase.cpp:89
141 #: ../../../src/GameStateConfigBase.cpp:110
148 #: ../../../src/GameState.cpp:37 ../../../src/GameState.cpp:58
149 msgid "Loading..."
150 msgstr "Carregant..."
151
152 #: ../../../src/GameStateLoad.cpp:90 ../../../src/GameStateLoad.cpp:103
153 msgid "Delete Save"
154 msgstr "Esborrar i Desar"
155
156 #: ../../../src/GameStateLoad.cpp:90
157 msgid "Delete this save?"
158 msgstr "Eliminar aquesta partida desada?"
159
160 #: ../../../src/GameStateLoad.cpp:92
161 msgid "Exit to Title"
162 msgstr "Sortir als títols"
163
164 #: ../../../src/GameStateLoad.cpp:95
165 msgid "New Game"
166 msgstr "Partida nova"
167
168 #: ../../../src/GameStateLoad.cpp:99 ../../../src/GameStateLoad.cpp:607
169 msgid "Choose a Slot"
170 msgstr "Triar un espai"
171
172 #: ../../../src/GameStateLoad.cpp:580 ../../../src/GameStateLoad.cpp:601
173 msgid "Enable a story mod to continue"
174 msgstr "Habilitar un mod d'història per continuar"
175
176 #: ../../../src/GameStateLoad.cpp:596
177 msgid "Load Game"
178 msgstr "Carregar la partida"
179
180 #: ../../../src/GameStateLoad.cpp:705
181 msgid "Entering game world..."
182 msgstr "Entrant al món del joc..."
183
184 #: ../../../src/GameStateLoad.cpp:708
185 msgid "Loading saved game..."
186 msgstr "Carregant partida desada..."
187
188 #: ../../../src/GameStateLoad.cpp:741
189 msgid "Invalid save"
190 msgstr "Desat erroni"
191
192 #: ../../../src/GameStateLoad.cpp:765 ../../../src/ItemManager.cpp:745
193 #: ../../../src/MenuPowers.cpp:860 ../../../src/MenuPowers.cpp:1219
194 #: ../../../src/MenuPowers.cpp:1631
195 #, c-format
196 msgid "Level %d"
197 msgstr "Nivell %d"
198
199 #: ../../../src/GameStateNew.cpp:66 ../../../src/InputState.cpp:416
200 #: ../../../src/MenuConfig.cpp:246
201 msgid "Cancel"
202 msgstr "Cancel·lar"
203
204 #: ../../../src/GameStateNew.cpp:69
205 msgid "Create"
206 msgstr "Crear"
207
208 #: ../../../src/GameStateNew.cpp:77
209 msgid "Randomize"
210 msgstr "Aleatoritzar"
211
212 #: ../../../src/GameStateNew.cpp:93
213 msgid "Choose a Portrait"
214 msgstr "Tria un retrat"
215
216 #: ../../../src/GameStateNew.cpp:97
217 msgid "Choose a Name"
218 msgstr "Tria un nom"
219
220 #: ../../../src/GameStateNew.cpp:101
221 msgid "Permadeath?"
222 msgstr "Mort permanent?"
223
224 #: ../../../src/GameStateNew.cpp:105
225 msgid "Choose a Class"
226 msgstr "Trieu una classe"
227
228 #: ../../../src/GameStateTitle.cpp:107
229 msgid "Play Game"
230 msgstr "Jugar"
231
232 #: ../../../src/GameStateTitle.cpp:110
233 msgid "Enable a core mod to continue"
234 msgstr "Activar un mod del nucli per a continuar"
235
236 #: ../../../src/GameStateTitle.cpp:114 ../../../src/MenuMiniMap.cpp:152
237 msgid "Configuration"
238 msgstr "Configuració"
239
240 #: ../../../src/GameStateTitle.cpp:117
241 msgid "Credits"
242 msgstr "Crèdits"
243
244 #: ../../../src/GameStateTitle.cpp:120
245 msgid "Exit Game"
246 msgstr "Sortir del Joc"
247
248 #: ../../../src/InputState.cpp:417
249 msgid "Accept"
250 msgstr "Acceptar"
251
252 #: ../../../src/InputState.cpp:418 ../../../src/MenuMovementType.cpp:123
253 #: ../../../src/MenuMovementType.cpp:132 ../../../src/SDLInputState.cpp:668
254 #: ../../../src/SDLInputState.cpp:698
255 msgid "Up"
256 msgstr "Amunt"
257
258 #: ../../../src/InputState.cpp:419 ../../../src/MenuMovementType.cpp:125
259 #: ../../../src/MenuMovementType.cpp:134 ../../../src/SDLInputState.cpp:646
260 #: ../../../src/SDLInputState.cpp:676
261 msgid "Down"
262 msgstr "Avall"
263
264 #: ../../../src/InputState.cpp:420 ../../../src/MenuMovementType.cpp:124
265 #: ../../../src/MenuMovementType.cpp:133 ../../../src/SDLInputState.cpp:653
266 #: ../../../src/SDLInputState.cpp:683
267 msgid "Left"
268 msgstr "Esquerra"
269
270 #: ../../../src/InputState.cpp:421 ../../../src/MenuMovementType.cpp:126
271 #: ../../../src/MenuMovementType.cpp:135 ../../../src/SDLInputState.cpp:663
272 #: ../../../src/SDLInputState.cpp:693
273 msgid "Right"
274 msgstr "Dreta"
275
276 #: ../../../src/InputState.cpp:422
277 msgid "Bar1"
278 msgstr "Bar1"
279
280 #: ../../../src/InputState.cpp:423
281 msgid "Bar2"
282 msgstr "Bar2"
283
284 #: ../../../src/InputState.cpp:424
285 msgid "Bar3"
286 msgstr "Bar3"
287
288 #: ../../../src/InputState.cpp:425
289 msgid "Bar4"
290 msgstr "Bar4"
291
292 #: ../../../src/InputState.cpp:426
293 msgid "Bar5"
294 msgstr "Bar5"
295
296 #: ../../../src/InputState.cpp:427
297 msgid "Bar6"
298 msgstr "Bar6"
299
300 #: ../../../src/InputState.cpp:428
301 msgid "Bar7"
302 msgstr "Bar7"
303
304 #: ../../../src/InputState.cpp:429
305 msgid "Bar8"
306 msgstr "Bar8"
307
308 #: ../../../src/InputState.cpp:430
309 msgid "Bar9"
310 msgstr "Bar9"
311
312 #: ../../../src/InputState.cpp:431
313 msgid "Bar0"
314 msgstr "Bar0"
315
316 #: ../../../src/InputState.cpp:432 ../../../src/MenuActionBar.cpp:84
317 #: ../../../src/MenuCharacter.cpp:54
318 msgid "Character"
319 msgstr "Personatge"
320
321 #: ../../../src/InputState.cpp:433 ../../../src/MenuActionBar.cpp:85
322 #: ../../../src/MenuInventory.cpp:130 ../../../src/MenuVendor.cpp:59
323 msgid "Inventory"
324 msgstr "Inventari"
325
326 #: ../../../src/InputState.cpp:434 ../../../src/MenuActionBar.cpp:86
327 #: ../../../src/MenuPowers.cpp:158
328 msgid "Powers"
329 msgstr "Poders"
330
331 #: ../../../src/InputState.cpp:435 ../../../src/MenuActionBar.cpp:87
332 #: ../../../src/MenuLog.cpp:72
333 msgid "Log"
334 msgstr "Registre"
335
336 #: ../../../src/InputState.cpp:436
337 msgid "Main1"
338 msgstr "Principal1"
339
340 #: ../../../src/InputState.cpp:437
341 msgid "Main2"
342 msgstr "Principal2"
343
344 #: ../../../src/InputState.cpp:438
345 msgid "Ctrl"
346 msgstr "Ctrl"
347
348 #: ../../../src/InputState.cpp:439
349 msgid "Shift"
350 msgstr "Shift"
351
352 #: ../../../src/InputState.cpp:440
353 msgid "Alt"
354 msgstr "Alt"
355
356 #: ../../../src/InputState.cpp:441 ../../../src/SDLInputState.cpp:675
357 msgid "Delete"
358 msgstr "Esborrar"
359
360 #: ../../../src/InputState.cpp:442
361 msgid "ActionBar Accept"
362 msgstr "Acceptar barra d'acció"
363
364 #: ../../../src/InputState.cpp:443
365 msgid "ActionBar Left"
366 msgstr "Barra d'acció esquerra"
367
368 #: ../../../src/InputState.cpp:444
369 msgid "ActionBar Right"
370 msgstr "Barra d'acció dreta"
371
372 #: ../../../src/InputState.cpp:445
373 msgid "ActionBar Use"
374 msgstr "Utilitzar la barra d'acció"
375
376 #: ../../../src/InputState.cpp:446
377 msgid "Developer Menu"
378 msgstr "Menú de desenvolupadors"
379
380 #: ../../../src/InputState.cpp:448
381 msgid "Left Mouse"
382 msgstr "Botó esquerre del ratolí"
383
384 #: ../../../src/InputState.cpp:449
385 msgid "Middle Mouse"
386 msgstr "Botó central del ratolí"
387
388 #: ../../../src/InputState.cpp:450
389 msgid "Right Mouse"
390 msgstr "Botó dret del ratolí"
391
392 #: ../../../src/InputState.cpp:451
393 msgid "Wheel Up"
394 msgstr "Roda amunt"
395
396 #: ../../../src/InputState.cpp:452
397 msgid "Wheel Down"
398 msgstr "Roda avall"
399
400 #: ../../../src/InputState.cpp:453
401 msgid "Mouse X1"
402 msgstr "Ratolí X1"
403
404 #: ../../../src/InputState.cpp:454
405 msgid "Mouse X2"
406 msgstr "Ratolí X2"
407
408 #: ../../../src/ItemManager.cpp:475
409 msgid "Unknown Item"
410 msgstr "Objecte desconegut"
411
412 #: ../../../src/ItemManager.cpp:646 ../../../src/MenuPowers.cpp:959
413 #, c-format
414 msgid "%d%% Speed"
415 msgstr "%d%% Velocitat"
416
417 #: ../../../src/ItemManager.cpp:650 ../../../src/MenuPowers.cpp:962
418 #, c-format
419 msgid "%d%% Attack Speed"
420 msgstr "%d%% Velocitat d'atac"
421
422 #: ../../../src/ItemManager.cpp:672 ../../../src/MenuCharacter.cpp:352
423 #: ../../../src/MenuPowers.cpp:931
424 #, c-format
425 msgid "Resistance (%s)"
426 msgstr "Resistència (%s)"
427
428 #: ../../../src/ItemManager.cpp:682
429 #, c-format
430 msgid "Requires %s"
431 msgstr "Demana %s"
432
433 #: ../../../src/ItemManager.cpp:731
434 msgid "Quest Item"
435 msgstr "Objecte de missió"
436
437 #: ../../../src/ItemManager.cpp:758
438 #, c-format
439 msgid "Quality: %s"
440 msgstr "Qualitat: %s"
441
442 #: ../../../src/ItemManager.cpp:783
443 #, c-format
444 msgid "Absorb: %d-%d"
445 msgstr "Amortidor: %d-%d"
446
447 #: ../../../src/ItemManager.cpp:785
448 #, c-format
449 msgid "Absorb: %d"
450 msgstr "Absorbir: %d"
451
452 #: ../../../src/ItemManager.cpp:825 ../../../src/MenuPowers.cpp:1206
453 #: ../../../src/MenuPowers.cpp:1209
454 #, c-format
455 msgid "Requires Level %d"
456 msgstr "Fa falta el nivell %d"
457
458 #: ../../../src/ItemManager.cpp:836 ../../../src/MenuPowers.cpp:1198
459 #: ../../../src/MenuPowers.cpp:1200
460 #, c-format
461 msgid "Requires %s %d"
462 msgstr "Requereix%s %d"
463
464 #: ../../../src/ItemManager.cpp:847
465 #, c-format
466 msgid "Requires Class: %s"
467 msgstr "Requereix la classe: %s"
468
469 #: ../../../src/ItemManager.cpp:863 ../../../src/ItemManager.cpp:875
470 #, c-format
471 msgid "Buy Price: %d %s"
472 msgstr "Preu de compra: %d %s"
473
474 #: ../../../src/ItemManager.cpp:865 ../../../src/ItemManager.cpp:877
475 #, c-format
476 msgid "Buy Price: %d %s each"
477 msgstr "Preu de compra: %d %s cadascun"
478
479 #: ../../../src/ItemManager.cpp:885
480 #, c-format
481 msgid "Sell Price: %d %s"
482 msgstr "Preu de venda: %d %s"
483
484 #: ../../../src/ItemManager.cpp:887
485 #, c-format
486 msgid "Sell Price: %d %s each"
487 msgstr "Preu de venda: %d %s cadascun"
488
489 #: ../../../src/ItemManager.cpp:896
490 msgid "Set:"
491 msgstr "Conjunt:"
492
493 #: ../../../src/ItemManager.cpp:903
494 #, c-format
495 msgid "%d items:"
496 msgstr "%d objectes:"
497
498 #: ../../../src/ItemManager.cpp:915
499 #, c-format
500 msgid "Press [%s] to read"
501 msgstr "Prem [%s] per llegir"
502
503 #: ../../../src/ItemManager.cpp:918
504 #, c-format
505 msgid "Press [%s] to use"
506 msgstr "Prem [%s] per utilitzar"
507
508 #: ../../../src/MenuActionBar.cpp:239 ../../../src/MenuActionBar.cpp:246
509 #: ../../../src/MenuActionBar.cpp:249 ../../../src/MenuActionBar.cpp:255
510 #, c-format
511 msgid "Hotkey: %s"
512 msgstr "Drecera: %s"
513
514 #: ../../../src/MenuActionBar.cpp:621
515 msgid "Not enough MP."
516 msgstr "PM insuficients."
517
518 #: ../../../src/MenuActiveEffects.cpp:124
519 #, c-format
520 msgid "x%d"
521 msgstr "x%d"
522
523 #: ../../../src/MenuActiveEffects.cpp:219
524 msgid "Remaining:"
525 msgstr "Restants:"
526
527 #: ../../../src/MenuActiveEffects.cpp:225
528 #, c-format
529 msgid "x%d stacks"
530 msgstr "x%d piles"
531
532 #: ../../../src/MenuCharacter.cpp:73 ../../../src/MenuCharacter.cpp:78
533 msgid "Name"
534 msgstr "Nom"
535
536 #: ../../../src/MenuCharacter.cpp:74 ../../../src/MenuCharacter.cpp:79
537 msgid "Level"
538 msgstr "Nivell"
539
540 #: ../../../src/MenuCharacter.cpp:309
541 #, c-format
542 msgid "Available stat points: %d"
543 msgstr ""
544
545 #: ../../../src/MenuCharacter.cpp:353
546 #, c-format
547 msgid "Reduces the damage taken from \"%s\" elemental attacks."
548 msgstr "Redueix el dany rebut de \"%s\" als atacs elementals."
549
550 #: ../../../src/MenuCharacter.cpp:363 ../../../src/MenuManager.cpp:301
551 #, c-format
552 msgid "XP: %d"
553 msgstr "Experiència: %d"
554
555 #: ../../../src/MenuCharacter.cpp:365
556 #, c-format
557 msgid "Next: %d"
558 msgstr "Següent: %d"
559
560 #: ../../../src/MenuCharacter.cpp:371
561 #, c-format
562 msgid "base (%d), bonus (%d)"
563 msgstr "base (%d), bonificació (%d)"
564
565 #: ../../../src/MenuCharacter.cpp:379 ../../../src/MenuCharacter.cpp:393
566 msgid "Related stats:"
567 msgstr "Atributs relacionats:"
568
569 #: ../../../src/MenuCharacter.cpp:419 ../../../src/MenuCharacter.cpp:443
570 #, c-format
571 msgid "Each level grants %d."
572 msgstr "Cada nivell concedeix %d."
573
574 #: ../../../src/MenuCharacter.cpp:423 ../../../src/MenuCharacter.cpp:447
575 #, c-format
576 msgid "Each point of %s grants %d."
577 msgstr "Cada punt de %s concedeix %d."
578
579 #: ../../../src/MenuConfig.cpp:122 ../../../src/MenuConfig.cpp:1171
580 msgid "Clear"
581 msgstr "Netejar"
582
583 #: ../../../src/MenuConfig.cpp:122 ../../../src/MenuConfig.cpp:1169
584 msgid "Assign:"
585 msgstr "Assignar:"
586
587 #: ../../../src/MenuConfig.cpp:123 ../../../src/MenuConfig.cpp:245
142588 msgid "Defaults"
143589 msgstr "Per defecte"
144590
145 #: ../../../src/GameStateConfigBase.cpp:89
591 #: ../../../src/MenuConfig.cpp:123
146592 msgid "Reset ALL settings?"
147593 msgstr "Restablir TOTS els ajustaments?"
148594
149 #: ../../../src/GameStateConfigBase.cpp:109 ../../../src/MenuNumPicker.cpp:49
595 #: ../../../src/MenuConfig.cpp:244 ../../../src/MenuNumPicker.cpp:49
150596 msgid "OK"
151597 msgstr "Acceptar"
152598
153 #: ../../../src/GameStateConfigBase.cpp:111 ../../../src/GameStateNew.cpp:65
154 #: ../../../src/InputState.cpp:401
155 msgid "Cancel"
156 msgstr "Cancel·lar"
157
158 #: ../../../src/GameStateConfigBase.cpp:160
159 #: ../../../src/GameStateConfigDesktop.cpp:130
599 #: ../../../src/MenuConfig.cpp:248 ../../../src/MenuGameOver.cpp:72
600 msgid "Continue"
601 msgstr "Continuar"
602
603 #: ../../../src/MenuConfig.cpp:250
604 msgid "Save Game"
605 msgstr "Guardar la partida"
606
607 #: ../../../src/MenuConfig.cpp:293
608 msgid "Default"
609 msgstr "Per defecte"
610
611 #: ../../../src/MenuConfig.cpp:293
612 msgid ""
613 "Show all loot tooltips, except for those that would be obscured by the "
614 "player or an enemy. Temporarily show all loot tooltips with 'Alt'."
615 msgstr ""
616 "Mostra tots els consells d'eines de saqueig, excepte aquells que serien "
617 "ocultats pel jugador o l'enemic. Mostra temporalment tots les consells "
618 "d'eines de saqueig prement la tecla 'Alt'."
619
620 #: ../../../src/MenuConfig.cpp:294
621 msgid "Show all"
622 msgstr "Mostrar tot"
623
624 #: ../../../src/MenuConfig.cpp:294
625 msgid ""
626 "Always show loot tooltips. Temporarily hide all loot tooltips with 'Alt'."
627 msgstr ""
628 "Sempre mostra consells d'eines de saqueig. Amaga temporalment tots els "
629 "consells d'eines de saqueig prement la tecla 'Alt'."
630
631 #: ../../../src/MenuConfig.cpp:295 ../../../src/MenuConfig.cpp:300
632 msgid "Hidden"
633 msgstr "Ocult"
634
635 #: ../../../src/MenuConfig.cpp:295
636 msgid ""
637 "Always hide loot tooltips, except for when a piece of loot is hovered with "
638 "the mouse cursor. Temporarily show all loot tooltips with 'Alt'."
639 msgstr ""
640 "Amaga sempre els consells d'eines de saqueig excepte quan passis el cursor "
641 "per sobre d'una peça de saqueig. Mostra temporalment tots els consells "
642 "d'eines de saquieg prement la tecla 'Alt'."
643
644 #: ../../../src/MenuConfig.cpp:298
645 msgid "Visible"
646 msgstr "Visible"
647
648 #: ../../../src/MenuConfig.cpp:299
649 msgid "Visible (2x zoom)"
650 msgstr "Visible (2x d'augment)"
651
652 #: ../../../src/MenuConfig.cpp:303
653 msgid ""
654 "Controls the type of warning to be activated when the player is below the "
655 "low health threshold."
656 msgstr ""
657 "Controla el tipus d'avís que s'ha d'activar quan la salut del jugador està "
658 "per sota del llindar."
659
660 #: ../../../src/MenuConfig.cpp:304
661 msgid "- Display a message"
662 msgstr "- Mostra un missatge"
663
664 #: ../../../src/MenuConfig.cpp:305
665 msgid "- Play a sound"
666 msgstr "- Fes sonar un soroll"
667
668 #: ../../../src/MenuConfig.cpp:306
669 msgid "- Change the cursor"
670 msgstr "- Canvia el cursor"
671
672 #: ../../../src/MenuConfig.cpp:308
673 msgid "Disabled"
674 msgstr "Desactivat"
675
676 #: ../../../src/MenuConfig.cpp:309
677 msgid "All"
678 msgstr "Tots"
679
680 #: ../../../src/MenuConfig.cpp:310
681 msgid "Message & Cursor"
682 msgstr "Missatge i Cursor"
683
684 #: ../../../src/MenuConfig.cpp:311
685 msgid "Message & Sound"
686 msgstr "Missatge i So"
687
688 #: ../../../src/MenuConfig.cpp:312
689 msgid "Sound & Cursor"
690 msgstr "So i Cursor"
691
692 #: ../../../src/MenuConfig.cpp:313
693 msgid "Message"
694 msgstr "Missatge"
695
696 #: ../../../src/MenuConfig.cpp:314
697 msgid "Cursor"
698 msgstr "Cursor"
699
700 #: ../../../src/MenuConfig.cpp:315
701 msgid "Sound"
702 msgstr "So"
703
704 #: ../../../src/MenuConfig.cpp:321
705 msgid ""
706 "When the player's health drops below the given threshold, the low health "
707 "notifications are triggered if one or more of them is enabled."
708 msgstr ""
709 "Quan la salut del jugador cau sota el llindar, es disparen les notificacions"
710 " si una o més d'elles estan activades."
711
712 #: ../../../src/MenuConfig.cpp:334 ../../../src/MenuConfig.cpp:1587
713 #: ../../../src/MenuGameOver.cpp:116
714 msgid "Exit"
715 msgstr "Sortir"
716
717 #: ../../../src/MenuConfig.cpp:335
718 msgid "Video"
719 msgstr "Video"
720
721 #: ../../../src/MenuConfig.cpp:336
160722 msgid "Audio"
161723 msgstr "Audio"
162724
163 #: ../../../src/GameStateConfigBase.cpp:161
164 #: ../../../src/GameStateConfigDesktop.cpp:131
725 #: ../../../src/MenuConfig.cpp:337
165726 msgid "Interface"
166727 msgstr "Interfície"
167728
168 #: ../../../src/GameStateConfigBase.cpp:162
169 #: ../../../src/GameStateConfigDesktop.cpp:134
729 #: ../../../src/MenuConfig.cpp:338
730 msgid "Input"
731 msgstr "Entrada"
732
733 #: ../../../src/MenuConfig.cpp:339
734 msgid "Keybindings"
735 msgstr "Enllaços de teclat"
736
737 #: ../../../src/MenuConfig.cpp:340
170738 msgid "Mods"
171739 msgstr "Mods"
172740
173 #: ../../../src/GameStateConfigBase.cpp:249 ../../../src/MenuExit.cpp:72
741 #: ../../../src/MenuConfig.cpp:352
742 msgid "Paused"
743 msgstr "Pausat"
744
745 #: ../../../src/MenuConfig.cpp:355
746 msgid "Time Played"
747 msgstr "Temps de joc"
748
749 #: ../../../src/MenuConfig.cpp:361
750 msgid "Renderer"
751 msgstr "Renderitzador"
752
753 #: ../../../src/MenuConfig.cpp:362
754 msgid "Full Screen Mode"
755 msgstr "Mode Pantalla Complerta"
756
757 #: ../../../src/MenuConfig.cpp:363
758 msgid "Hardware surfaces"
759 msgstr "Superfícies de maquinari"
760
761 #: ../../../src/MenuConfig.cpp:364
762 msgid "V-Sync"
763 msgstr "V-Sync"
764
765 #: ../../../src/MenuConfig.cpp:365
766 msgid "Texture Filtering"
767 msgstr "Filtre de Textura"
768
769 #: ../../../src/MenuConfig.cpp:366
770 msgid "DPI scaling"
771 msgstr "Escalat per PPP"
772
773 #: ../../../src/MenuConfig.cpp:367
774 msgid "Parallax Layers"
775 msgstr "Capes Parallax"
776
777 #: ../../../src/MenuConfig.cpp:368
778 msgid "Allow changing gamma"
779 msgstr "Permetre canviar gamma"
780
781 #: ../../../src/MenuConfig.cpp:369
782 msgid "Gamma"
783 msgstr "Gamma"
784
785 #: ../../../src/MenuConfig.cpp:371
786 msgid "Sound Volume"
787 msgstr "Volum del so"
788
789 #: ../../../src/MenuConfig.cpp:372
174790 msgid "Music Volume"
175791 msgstr "Volum de la música"
176792
177 #: ../../../src/GameStateConfigBase.cpp:253 ../../../src/MenuExit.cpp:77
178 msgid "Sound Volume"
179 msgstr "Volum del so"
180
181 #: ../../../src/GameStateConfigBase.cpp:257
793 #: ../../../src/MenuConfig.cpp:374
182794 msgid "Language"
183795 msgstr "Idioma"
184796
185 #: ../../../src/GameStateConfigBase.cpp:266
797 #: ../../../src/MenuConfig.cpp:375
186798 msgid "Show FPS"
187799 msgstr "Mostrar FPS"
188800
189 #: ../../../src/GameStateConfigBase.cpp:270
801 #: ../../../src/MenuConfig.cpp:376
802 msgid "Hardware mouse cursor"
803 msgstr "Cursos del ratolí per maquinari"
804
805 #: ../../../src/MenuConfig.cpp:377
190806 msgid "Colorblind Mode"
191807 msgstr "Mode per daltònics"
192808
193 #: ../../../src/GameStateConfigBase.cpp:274
194 msgid "Hardware mouse cursor"
195 msgstr "Cursos del ratolí per maquinari"
196
197 #: ../../../src/GameStateConfigBase.cpp:278
809 #: ../../../src/MenuConfig.cpp:378
198810 msgid "Developer Mode"
199811 msgstr "Mode de desenvolupadors"
200812
201 #: ../../../src/GameStateConfigBase.cpp:282
813 #: ../../../src/MenuConfig.cpp:379
202814 msgid "Subtitles"
203815 msgstr "Subtítols"
204816
205 #: ../../../src/GameStateConfigBase.cpp:286
206 msgid "Active Mods"
207 msgstr "Mods Actius"
208
209 #: ../../../src/GameStateConfigBase.cpp:295
210 msgid "Available Mods"
211 msgstr "Mods disponibles"
212
213 #: ../../../src/GameStateConfigBase.cpp:314
214 msgid "<< Disable"
215 msgstr "<< Inhabilitar"
216
217 #: ../../../src/GameStateConfigBase.cpp:320
218 msgid "Enable >>"
219 msgstr "Habilitar >>"
220
221 #: ../../../src/GameStateConfigBase.cpp:873
222 msgid "Version:"
223 msgstr "Versió:"
224
225 #: ../../../src/GameStateConfigBase.cpp:878
226 msgid "Game:"
227 msgstr "Joc:"
228
229 #: ../../../src/GameStateConfigBase.cpp:883
230 msgid "Engine version:"
231 msgstr "Versió del motor de joc:"
232
233 #: ../../../src/GameStateConfigBase.cpp:891
234 msgid "Requires mods:"
235 msgstr "Mods demanats:"
236
237 #: ../../../src/GameStateConfigDesktop.cpp:83
238 #: ../../../src/GameStateConfigDesktop.cpp:751
239 msgid "Clear"
240 msgstr "Netejar"
241
242 #: ../../../src/GameStateConfigDesktop.cpp:83
243 #: ../../../src/GameStateConfigDesktop.cpp:749
244 msgid "Assign:"
245 msgstr "Assignar:"
246
247 #: ../../../src/GameStateConfigDesktop.cpp:128
248 msgid "Video"
249 msgstr "Video"
250
251 #: ../../../src/GameStateConfigDesktop.cpp:132
252 msgid "Input"
253 msgstr "Entrada"
254
255 #: ../../../src/GameStateConfigDesktop.cpp:133
256 msgid "Keybindings"
257 msgstr "Enllaços de teclat"
258
259 #: ../../../src/GameStateConfigDesktop.cpp:188
817 #: ../../../src/MenuConfig.cpp:380
818 msgid "Loot tooltip visibility"
819 msgstr "Visibilitat de consells d'eines de saqueig"
820
821 #: ../../../src/MenuConfig.cpp:381
822 msgid "Mini-map mode"
823 msgstr "Mode mini-mapa"
824
825 #: ../../../src/MenuConfig.cpp:382
826 msgid "Always show stat bar labels"
827 msgstr "Mostrar sempre les etiquetes de la barra d'atributs"
828
829 #: ../../../src/MenuConfig.cpp:383
830 msgid "Allow stat bar auto-hiding"
831 msgstr "Permet auto-amagar la barra d'estats"
832
833 #: ../../../src/MenuConfig.cpp:384
834 msgid "Show combat text"
835 msgstr "Mostrar text de combat"
836
837 #: ../../../src/MenuConfig.cpp:385
838 msgid "Automatically equip items"
839 msgstr "Equipar objectes automàticament"
840
841 #: ../../../src/MenuConfig.cpp:386
842 msgid "Show hidden entity markers"
843 msgstr "Mostra els marcadors d'entitat ocults"
844
845 #: ../../../src/MenuConfig.cpp:387
846 msgid "Low health notification"
847 msgstr "Notificació de salut baixa"
848
849 #: ../../../src/MenuConfig.cpp:388
850 msgid "Low health threshold"
851 msgstr "Llindar de salut baixa"
852
853 #: ../../../src/MenuConfig.cpp:389
854 msgid "Show item comparison tooltips"
855 msgstr ""
856
857 #: ../../../src/MenuConfig.cpp:392 ../../../src/MenuMovementType.cpp:94
858 #: ../../../src/MenuMovementType.cpp:131
859 msgid "Joystick"
860 msgstr "Joystick"
861
862 #: ../../../src/MenuConfig.cpp:393
863 msgid "Move hero using mouse"
864 msgstr "Mou l'heroi utilitzant el ratolí"
865
866 #: ../../../src/MenuConfig.cpp:394
867 msgid "Mouse aim"
868 msgstr "Objectiu amb ratolí"
869
870 #: ../../../src/MenuConfig.cpp:395
871 msgid "Do not use mouse"
872 msgstr "No utilitzar ratolí"
873
874 #: ../../../src/MenuConfig.cpp:396
875 msgid "Swap mouse movement button"
876 msgstr "Moviment de ratolí per botó de canvi "
877
878 #: ../../../src/MenuConfig.cpp:397
879 msgid "Attack with mouse movement"
880 msgstr "Atacar amb moviment de ratolí"
881
882 #: ../../../src/MenuConfig.cpp:398
883 msgid "Joystick Deadzone"
884 msgstr "Zona morta del joystick"
885
886 #: ../../../src/MenuConfig.cpp:408
887 #, c-format
888 msgid "Primary binding: %s"
889 msgstr "Vincle primari: %s"
890
891 #: ../../../src/MenuConfig.cpp:409
892 #, c-format
893 msgid "Alternate binding: %s"
894 msgstr "Vincle alternatiu: %s"
895
896 #: ../../../src/MenuConfig.cpp:410
897 #, c-format
898 msgid "Joystick binding: %s"
899 msgstr "Vincle del Joystick: %s"
900
901 #: ../../../src/MenuConfig.cpp:511
260902 msgid ""
261903 "Will try to store surfaces in video memory versus system memory. The effect "
262904 "this has on performance depends on the renderer."
265907 "la memòria del sistema. L'efecte que això tindrà sobre el rendiment, variarà"
266908 " segons el renderitzador. "
267909
268 #: ../../../src/GameStateConfigDesktop.cpp:189
910 #: ../../../src/MenuConfig.cpp:512
269911 msgid ""
270912 "Prevents screen tearing. Disable if you experience \"stuttering\" in "
271913 "windowed mode or input lag."
273915 "Evita l'esquinçament de la pantalla. Desactiveu si experimenteu "
274916 "\"tartamudesa\" en mode finestra o retràs en les entrades. "
275917
276 #: ../../../src/GameStateConfigDesktop.cpp:190
918 #: ../../../src/MenuConfig.cpp:513
277919 msgid ""
278920 "When enabled, this uses the screen DPI in addition to the window dimensions "
279921 "to scale the rendering resolution. Otherwise, only the window dimensions are"
283925 "de la finestra per escalar la resolució. Contràriament, només s'usaran les "
284926 "mides de la pantalla."
285927
286 #: ../../../src/GameStateConfigDesktop.cpp:191
928 #: ../../../src/MenuConfig.cpp:514
287929 msgid ""
288930 "This enables parallax (non-tile) layers. Disabling this setting can improve "
289931 "performance in some cases."
290932 msgstr ""
291
292 #: ../../../src/GameStateConfigDesktop.cpp:192
293 msgid "Experimental"
294 msgstr "Experimental"
295
296 #: ../../../src/GameStateConfigDesktop.cpp:193
297 msgid "For handheld devices"
298 msgstr "Per a dispositius mòbils"
299
300 #: ../../../src/GameStateConfigDesktop.cpp:211
301 msgid "Renderer"
302 msgstr "Renderitzador"
303
304 #: ../../../src/GameStateConfigDesktop.cpp:227
305 msgid "Full Screen Mode"
306 msgstr "Mode Pantalla Complerta"
307
308 #: ../../../src/GameStateConfigDesktop.cpp:231
309 msgid "Move hero using mouse"
310 msgstr "Mou l'heroi utilitzant el ratolí"
311
312 #: ../../../src/GameStateConfigDesktop.cpp:235
313 msgid "Hardware surfaces"
314 msgstr "Superfícies de maquinari"
315
316 #: ../../../src/GameStateConfigDesktop.cpp:239
317 msgid "V-Sync"
318 msgstr "V-Sync"
319
320 #: ../../../src/GameStateConfigDesktop.cpp:243
321 msgid "Texture Filtering"
322 msgstr "Filtre de Textura"
323
324 #: ../../../src/GameStateConfigDesktop.cpp:247
325 msgid "DPI scaling"
326 msgstr "Escalat per PPP"
327
328 #: ../../../src/GameStateConfigDesktop.cpp:251
329 msgid "Parallax Layers"
330 msgstr ""
331
332 #: ../../../src/GameStateConfigDesktop.cpp:255
333 msgid "Allow changing gamma"
334 msgstr "Permetre canviar gamma"
335
336 #: ../../../src/GameStateConfigDesktop.cpp:259
337 msgid "Gamma"
338 msgstr "Gamma"
339
340 #: ../../../src/GameStateConfigDesktop.cpp:263
341 msgid "Use joystick"
342 msgstr "Utilitzar joystick "
343
344 #: ../../../src/GameStateConfigDesktop.cpp:267
345 msgid "Joystick"
346 msgstr "Joystick"
347
348 #: ../../../src/GameStateConfigDesktop.cpp:283
349 msgid "Mouse aim"
350 msgstr "Objectiu amb ratolí"
351
352 #: ../../../src/GameStateConfigDesktop.cpp:287
353 msgid "Do not use mouse"
354 msgstr "No utilitzar ratolí"
355
356 #: ../../../src/GameStateConfigDesktop.cpp:291
357 msgid "Joystick Deadzone"
358 msgstr "Zona morta del joystick"
359
360 #: ../../../src/GameState.cpp:37 ../../../src/GameState.cpp:58
361 msgid "Loading..."
362 msgstr "Carregant..."
363
364 #: ../../../src/GameStateLoad.cpp:88 ../../../src/GameStateLoad.cpp:101
365 msgid "Delete Save"
366 msgstr "Esborrar i Desar"
367
368 #: ../../../src/GameStateLoad.cpp:88
369 msgid "Delete this save?"
370 msgstr "Eliminar aquesta partida desada?"
371
372 #: ../../../src/GameStateLoad.cpp:90
373 msgid "Exit to Title"
374 msgstr "Sortir als títols"
375
376 #: ../../../src/GameStateLoad.cpp:93
377 msgid "New Game"
378 msgstr "Joc Nou"
379
380 #: ../../../src/GameStateLoad.cpp:97 ../../../src/GameStateLoad.cpp:600
381 msgid "Choose a Slot"
382 msgstr "Elegiu un espai"
383
384 #: ../../../src/GameStateLoad.cpp:573 ../../../src/GameStateLoad.cpp:594
385 msgid "Enable a story mod to continue"
386 msgstr "Habilitar un mod d'història per continuar"
387
388 #: ../../../src/GameStateLoad.cpp:589
389 msgid "Load Game"
390 msgstr "Carregar Joc"
391
392 #: ../../../src/GameStateLoad.cpp:695
393 msgid "Entering game world..."
394 msgstr "Entrant al mon del joc..."
395
396 #: ../../../src/GameStateLoad.cpp:698
397 msgid "Loading saved game..."
398 msgstr "Carregant partida desada..."
399
400 #: ../../../src/GameStateLoad.cpp:731
401 msgid "Invalid save"
402 msgstr "Desat erroni"
403
404 #: ../../../src/GameStateLoad.cpp:755 ../../../src/ItemManager.cpp:747
405 #: ../../../src/MenuPowers.cpp:778 ../../../src/MenuPowers.cpp:1144
406 #: ../../../src/MenuPowers.cpp:1542
407 #, c-format
408 msgid "Level %d"
409 msgstr "Nivell %d"
410
411 #: ../../../src/GameStateNew.cpp:68
412 msgid "Create"
413 msgstr "Crear"
414
415 #: ../../../src/GameStateNew.cpp:76
416 msgid "Randomize"
417 msgstr "Aleatoritzar"
418
419 #: ../../../src/GameStateNew.cpp:92
420 msgid "Choose a Portrait"
421 msgstr "Elegeix un retrat"
422
423 #: ../../../src/GameStateNew.cpp:96
424 msgid "Choose a Name"
425 msgstr "Tria un nom"
426
427 #: ../../../src/GameStateNew.cpp:100
428 msgid "Permadeath?"
429 msgstr "Mort permanent?"
430
431 #: ../../../src/GameStateNew.cpp:104
432 msgid "Choose a Class"
433 msgstr "Trieu una classe"
434
435 #: ../../../src/GameStateTitle.cpp:108
436 msgid "Play Game"
437 msgstr "Jugar"
438
439 #: ../../../src/GameStateTitle.cpp:111
440 msgid "Enable a core mod to continue"
441 msgstr "Activar un mod del nucli per a continuar"
442
443 #: ../../../src/GameStateTitle.cpp:115
444 msgid "Configuration"
445 msgstr "Configuració"
446
447 #: ../../../src/GameStateTitle.cpp:118
448 msgid "Credits"
449 msgstr "Crèdits"
450
451 #: ../../../src/GameStateTitle.cpp:121
452 msgid "Exit Game"
453 msgstr "Sortir del Joc"
454
455 #: ../../../src/InputState.cpp:402
456 msgid "Accept"
457 msgstr "Acceptar"
458
459 #: ../../../src/InputState.cpp:403 ../../../src/SDLInputState.cpp:607
460 msgid "Up"
461 msgstr "Amunt"
462
463 #: ../../../src/InputState.cpp:404 ../../../src/SDLInputState.cpp:585
464 msgid "Down"
465 msgstr "Avall"
466
467 #: ../../../src/InputState.cpp:405 ../../../src/SDLInputState.cpp:592
468 msgid "Left"
469 msgstr "Esquerra"
470
471 #: ../../../src/InputState.cpp:406 ../../../src/SDLInputState.cpp:602
472 msgid "Right"
473 msgstr "Dreta"
474
475 #: ../../../src/InputState.cpp:407
476 msgid "Bar1"
477 msgstr "Bar1"
478
479 #: ../../../src/InputState.cpp:408
480 msgid "Bar2"
481 msgstr "Bar2"
482
483 #: ../../../src/InputState.cpp:409
484 msgid "Bar3"
485 msgstr "Bar3"
486
487 #: ../../../src/InputState.cpp:410
488 msgid "Bar4"
489 msgstr "Bar4"
490
491 #: ../../../src/InputState.cpp:411
492 msgid "Bar5"
493 msgstr "Bar5"
494
495 #: ../../../src/InputState.cpp:412
496 msgid "Bar6"
497 msgstr "Bar6"
498
499 #: ../../../src/InputState.cpp:413
500 msgid "Bar7"
501 msgstr "Bar7"
502
503 #: ../../../src/InputState.cpp:414
504 msgid "Bar8"
505 msgstr "Bar8"
506
507 #: ../../../src/InputState.cpp:415
508 msgid "Bar9"
509 msgstr "Bar9"
510
511 #: ../../../src/InputState.cpp:416
512 msgid "Bar0"
513 msgstr "Bar0"
514
515 #: ../../../src/InputState.cpp:417 ../../../src/MenuActionBar.cpp:83
516 #: ../../../src/MenuCharacter.cpp:54
517 msgid "Character"
518 msgstr "Personatge"
519
520 #: ../../../src/InputState.cpp:418 ../../../src/MenuActionBar.cpp:84
521 #: ../../../src/MenuInventory.cpp:137 ../../../src/MenuVendor.cpp:57
522 msgid "Inventory"
523 msgstr "Inventari"
524
525 #: ../../../src/InputState.cpp:419 ../../../src/MenuActionBar.cpp:85
526 #: ../../../src/MenuPowers.cpp:168
527 msgid "Powers"
528 msgstr "Poders"
529
530 #: ../../../src/InputState.cpp:420 ../../../src/MenuActionBar.cpp:86
531 #: ../../../src/MenuLog.cpp:72
532 msgid "Log"
533 msgstr "Registre"
534
535 #: ../../../src/InputState.cpp:421
536 msgid "Main1"
537 msgstr "Principal1"
538
539 #: ../../../src/InputState.cpp:422
540 msgid "Main2"
541 msgstr "Principal2"
542
543 #: ../../../src/InputState.cpp:423
544 msgid "Ctrl"
545 msgstr "Ctrl"
546
547 #: ../../../src/InputState.cpp:424
548 msgid "Shift"
549 msgstr "Shift"
550
551 #: ../../../src/InputState.cpp:425
552 msgid "Alt"
553 msgstr "Alt"
554
555 #: ../../../src/InputState.cpp:426 ../../../src/SDLInputState.cpp:584
556 msgid "Delete"
557 msgstr "Esborrar"
558
559 #: ../../../src/InputState.cpp:427
560 msgid "ActionBar Accept"
561 msgstr "Acceptació de la barra d'acció"
562
563 #: ../../../src/InputState.cpp:428
564 msgid "ActionBar Left"
565 msgstr "Barra d'acció esquerra"
566
567 #: ../../../src/InputState.cpp:429
568 msgid "ActionBar Right"
569 msgstr "Barra d'acció dreta"
570
571 #: ../../../src/InputState.cpp:430
572 msgid "ActionBar Use"
573 msgstr "Utilitzar la barra d'acció"
574
575 #: ../../../src/InputState.cpp:431
576 msgid "Developer Menu"
577 msgstr "Menú de desenvolupadors"
578
579 #: ../../../src/InputState.cpp:433
580 msgid "Left Mouse"
581 msgstr "Botó esquerre del ratolí"
582
583 #: ../../../src/InputState.cpp:434
584 msgid "Middle Mouse"
585 msgstr "Botó central del ratolí"
586
587 #: ../../../src/InputState.cpp:435
588 msgid "Right Mouse"
589 msgstr "Botó dret del ratolí"
590
591 #: ../../../src/InputState.cpp:436
592 msgid "Wheel Up"
593 msgstr "Roda amunt"
594
595 #: ../../../src/InputState.cpp:437
596 msgid "Wheel Down"
597 msgstr "Roda avall"
598
599 #: ../../../src/InputState.cpp:438
600 msgid "Mouse X1"
601 msgstr "Ratolí X1"
602
603 #: ../../../src/InputState.cpp:439
604 msgid "Mouse X2"
605 msgstr "Ratolí X2"
606
607 #: ../../../src/ItemManager.cpp:450 ../../../src/ItemManager.cpp:453
608 msgid "Unknown Item"
609 msgstr "Objecte desconegut"
610
611 #: ../../../src/ItemManager.cpp:648 ../../../src/MenuPowers.cpp:887
612 #, c-format
613 msgid "%d%% Speed"
614 msgstr "%d%% Velocitat"
615
616 #: ../../../src/ItemManager.cpp:652 ../../../src/MenuPowers.cpp:890
617 #, c-format
618 msgid "%d%% Attack Speed"
619 msgstr "%d%% Velocitat d'atac"
620
621 #: ../../../src/ItemManager.cpp:674 ../../../src/MenuCharacter.cpp:354
622 #: ../../../src/MenuPowers.cpp:833
623 #, c-format
624 msgid "Resistance (%s)"
625 msgstr "Resistència (%s)"
626
627 #: ../../../src/ItemManager.cpp:684
628 #, c-format
629 msgid "Requires %s"
630 msgstr "Demana %s"
631
632 #: ../../../src/ItemManager.cpp:733
633 msgid "Quest Item"
634 msgstr "Objecte de missió"
635
636 #: ../../../src/ItemManager.cpp:760
637 #, c-format
638 msgid "Quality: %s"
639 msgstr "Qualitat: %s"
640
641 #: ../../../src/ItemManager.cpp:785
642 #, c-format
643 msgid "Absorb: %d-%d"
644 msgstr "Amortidor: %d-%d"
645
646 #: ../../../src/ItemManager.cpp:787
647 #, c-format
648 msgid "Absorb: %d"
649 msgstr "Absorbir: %d"
650
651 #: ../../../src/ItemManager.cpp:827 ../../../src/MenuPowers.cpp:1131
652 #: ../../../src/MenuPowers.cpp:1134
653 #, c-format
654 msgid "Requires Level %d"
655 msgstr "Demana nivell %d"
656
657 #: ../../../src/ItemManager.cpp:838 ../../../src/MenuPowers.cpp:1123
658 #: ../../../src/MenuPowers.cpp:1125
659 #, c-format
660 msgid "Requires %s %d"
661 msgstr "Demana %s %d"
662
663 #: ../../../src/ItemManager.cpp:849
664 #, c-format
665 msgid "Requires Class: %s"
666 msgstr "Demana classe: %s"
667
668 #: ../../../src/ItemManager.cpp:864 ../../../src/ItemManager.cpp:876
669 #, c-format
670 msgid "Buy Price: %d %s"
671 msgstr "Preu de compra: %d %s"
672
673 #: ../../../src/ItemManager.cpp:866 ../../../src/ItemManager.cpp:878
674 #, c-format
675 msgid "Buy Price: %d %s each"
676 msgstr "Preu de compra: %d %s cadascun"
677
678 #: ../../../src/ItemManager.cpp:886
679 #, c-format
680 msgid "Sell Price: %d %s"
681 msgstr "Preu de venda: %d %s"
682
683 #: ../../../src/ItemManager.cpp:888
684 #, c-format
685 msgid "Sell Price: %d %s each"
686 msgstr "Preu de venda: %d %s cadascun"
687
688 #: ../../../src/ItemManager.cpp:897
689 msgid "Set:"
690 msgstr "Conjunt:"
691
692 #: ../../../src/ItemManager.cpp:904
693 #, c-format
694 msgid "%d items:"
695 msgstr "%d objectes:"
696
697 #: ../../../src/ItemManager.cpp:917
698 #, c-format
699 msgid "Press [%s] to use"
700 msgstr "Premi [%s] per utilitzar"
701
702 #: ../../../src/ItemManager.cpp:920
703 #, c-format
704 msgid "Press [%s] to read"
705 msgstr "Premi [%s] per llegir"
706
707 #: ../../../src/MenuActionBar.cpp:87
708 msgid "Loot tooltip visibility"
709 msgstr ""
710
711 #: ../../../src/MenuActionBar.cpp:88
712 msgid "Mini-map mode"
713 msgstr ""
714
715 #: ../../../src/MenuActionBar.cpp:89
716 msgid "Always show stat bar labels"
717 msgstr "Mostrar sempre les etiquetes de la barra d'atributs"
718
719 #: ../../../src/MenuActionBar.cpp:90
720 msgid "Show combat text"
721 msgstr "Mostrar text de combat"
722
723 #: ../../../src/MenuActionBar.cpp:254 ../../../src/MenuActionBar.cpp:261
724 #: ../../../src/MenuActionBar.cpp:264 ../../../src/MenuActionBar.cpp:271
725 #, c-format
726 msgid "Hotkey: %s"
727 msgstr "Drecera: %s"
728
729 #: ../../../src/MenuActionBar.cpp:474
730 #, c-format
731 msgid "Default. Temporarily show all loot tooltips with '%s'."
732 msgstr ""
733
734 #: ../../../src/MenuActionBar.cpp:476
735 #, c-format
736 msgid "Show All. Temporarily hide all loot tooltips with '%s'."
737 msgstr ""
738
739 #: ../../../src/MenuActionBar.cpp:478
740 #, c-format
741 msgid "Hide All. Temporarily show all loot tooltips with '%s'."
742 msgstr ""
743
744 #: ../../../src/MenuActionBar.cpp:482
745 msgid "Visible"
746 msgstr ""
747
748 #: ../../../src/MenuActionBar.cpp:484
749 msgid "Visible (2x zoom)"
750 msgstr ""
751
752 #: ../../../src/MenuActionBar.cpp:486
753 msgid "Hidden"
754 msgstr ""
755
756 #: ../../../src/MenuActionBar.cpp:490 ../../../src/MenuActionBar.cpp:496
757 msgid "Enabled"
758 msgstr ""
759
760 #: ../../../src/MenuActionBar.cpp:492 ../../../src/MenuActionBar.cpp:498
761 msgid "Disabled"
762 msgstr ""
763
764 #: ../../../src/MenuActionBar.cpp:657
765 msgid "Not enough MP."
766 msgstr "PM insuficients."
767
768 #: ../../../src/MenuActiveEffects.cpp:124
769 #, c-format
770 msgid "x%d"
771 msgstr "x%d"
772
773 #: ../../../src/MenuActiveEffects.cpp:219
774 msgid "Remaining:"
775 msgstr "Restants:"
776
777 #: ../../../src/MenuActiveEffects.cpp:225
778 #, c-format
779 msgid "x%d stacks"
780 msgstr "x%d piles"
781
782 #: ../../../src/MenuCharacter.cpp:73 ../../../src/MenuCharacter.cpp:78
783 msgid "Name"
784 msgstr "Nom"
785
786 #: ../../../src/MenuCharacter.cpp:74 ../../../src/MenuCharacter.cpp:79
787 msgid "Level"
788 msgstr "Nivell"
789
790 #: ../../../src/MenuCharacter.cpp:310
791 #, c-format
792 msgid "%d unspent stat point"
793 msgstr "%d punt d'estat no gastat"
794
795 #: ../../../src/MenuCharacter.cpp:313
796 #, c-format
797 msgid "%d unspent stat points"
798 msgstr "%d punts d'estat no gastats"
799
800 #: ../../../src/MenuCharacter.cpp:355
801 #, c-format
802 msgid "Reduces the damage taken from \"%s\" elemental attacks."
803 msgstr "Redueix el dany rebut de \"%s\" als atacs elementals."
804
805 #: ../../../src/MenuCharacter.cpp:365 ../../../src/MenuManager.cpp:283
806 #, c-format
807 msgid "XP: %d"
808 msgstr "Experiència: %d"
809
810 #: ../../../src/MenuCharacter.cpp:367
811 #, c-format
812 msgid "Next: %d"
813 msgstr "Següent: %d"
814
815 #: ../../../src/MenuCharacter.cpp:373
816 #, c-format
817 msgid "base (%d), bonus (%d)"
818 msgstr "base (%d), bonificació (%d)"
819
820 #: ../../../src/MenuCharacter.cpp:381 ../../../src/MenuCharacter.cpp:395
821 msgid "Related stats:"
822 msgstr "Atributs relacionats:"
823
824 #: ../../../src/MenuCharacter.cpp:421 ../../../src/MenuCharacter.cpp:445
825 #, c-format
826 msgid "Each level grants %d."
827 msgstr "Cada nivell concedeix %d."
828
829 #: ../../../src/MenuCharacter.cpp:425 ../../../src/MenuCharacter.cpp:449
830 #, c-format
831 msgid "Each point of %s grants %d."
832 msgstr "Cada punt de %s concedeix %d."
833
834 #: ../../../src/MenuDevConsole.cpp:63
933 "Això activa les capes parallax (sense rajoles). Desactivar aquesta opció pot"
934 " millorar el rendiment en alguns casos."
935
936 #: ../../../src/MenuConfig.cpp:515
937 msgid ""
938 "Enables the below setting that controls the screen gamma level. The behavior"
939 " of the gamma setting can vary between platforms."
940 msgstr ""
941 "Activa l'opció de sota que controla el nivel gamma de la pantalla. El "
942 "comportament de l'opció gamma pot variar entre plataformes."
943
944 #: ../../../src/MenuConfig.cpp:516
945 msgid ""
946 "Provides additional text for information that is primarily conveyed through "
947 "color."
948 msgstr ""
949 "T'ofereix text addicional per informació que es transmet principalment a "
950 "través de color."
951
952 #: ../../../src/MenuConfig.cpp:517
953 msgid ""
954 "Some mods will automatically hide the stat bars when they are inactive. "
955 "Disabling this option will keep them displayed at all times."
956 msgstr ""
957 "Alguns mods amagaran automàticament les barres d'estat quan estiguin "
958 "inactives. Deshabilitar aquesta opció lesmantindrà visibles en tot moment."
959
960 #: ../../../src/MenuConfig.cpp:518
961 msgid ""
962 "When enabled, empty equipment slots will be filled with applicable items "
963 "when they are obtained."
964 msgstr ""
965
966 #: ../../../src/MenuConfig.cpp:519
967 msgid ""
968 "Shows a marker above enemies, allies, and the player when they are obscured "
969 "by tall objects."
970 msgstr ""
971
972 #: ../../../src/MenuConfig.cpp:520
973 msgid ""
974 "When enabled, tooltips for equipped items of the same type are shown next to"
975 " standard item tooltips."
976 msgstr ""
977
978 #: ../../../src/MenuConfig.cpp:521
979 msgid ""
980 "This allows the game to be controlled entirely with the keyboard (or "
981 "joystick)."
982 msgstr ""
983
984 #: ../../../src/MenuConfig.cpp:522
985 msgid ""
986 "When 'Move hero using mouse' is enabled, this setting controls if 'Main1' or"
987 " 'Main2' is used to move the hero. If enabled, 'Main2' will move the hero "
988 "instead of 'Main1'."
989 msgstr ""
990
991 #: ../../../src/MenuConfig.cpp:523
992 msgid ""
993 "When 'Move hero using mouse' is enabled, this setting controls if the Power "
994 "assigned to the movement button can be used by targeting an enemy. If this "
995 "setting is disabled, it is required to use 'Shift' to access the Power "
996 "assigned to the movement button."
997 msgstr ""
998
999 #: ../../../src/MenuConfig.cpp:524
1000 msgid ""
1001 "The player's attacks will be aimed in the direction of the mouse cursor when"
1002 " this is enabled."
1003 msgstr ""
1004
1005 #: ../../../src/MenuConfig.cpp:575
1006 msgid "Active Mods"
1007 msgstr "Mods Actius"
1008
1009 #: ../../../src/MenuConfig.cpp:584
1010 msgid "Available Mods"
1011 msgstr "Mods disponibles"
1012
1013 #: ../../../src/MenuConfig.cpp:603
1014 msgid "<< Disable"
1015 msgstr "<< Inhabilitar"
1016
1017 #: ../../../src/MenuConfig.cpp:609
1018 msgid "Enable >>"
1019 msgstr "Habilitar >>"
1020
1021 #: ../../../src/MenuConfig.cpp:1444
1022 msgid "Version:"
1023 msgstr "Versió:"
1024
1025 #: ../../../src/MenuConfig.cpp:1449
1026 msgid "Game:"
1027 msgstr "Joc:"
1028
1029 #: ../../../src/MenuConfig.cpp:1454
1030 msgid "Engine version:"
1031 msgstr "Versió del motor de joc:"
1032
1033 #: ../../../src/MenuConfig.cpp:1462
1034 msgid "Requires mods:"
1035 msgstr "Mods demanats:"
1036
1037 #: ../../../src/MenuConfig.cpp:1570 ../../../src/SDLInputState.cpp:748
1038 msgid "(none)"
1039 msgstr "(cap)"
1040
1041 #: ../../../src/MenuConfig.cpp:1587 ../../../src/MenuGameOver.cpp:73
1042 msgid "Save & Exit"
1043 msgstr "Desar i sortir"
1044
1045 #: ../../../src/MenuDevConsole.cpp:65
8351046 msgid "Execute"
8361047 msgstr "Executar"
8371048
838 #: ../../../src/MenuDevConsole.cpp:101 ../../../src/MenuDevConsole.cpp:151
1049 #: ../../../src/MenuDevConsole.cpp:103 ../../../src/MenuDevConsole.cpp:153
8391050 msgid "Developer Console"
8401051 msgstr "Consola de desenvolupadors"
8411052
842 #: ../../../src/MenuDevConsole.cpp:141
1053 #: ../../../src/MenuDevConsole.cpp:143
8431054 #, c-format
8441055 msgid "Use '%s' to inspect with the cursor."
8451056 msgstr "Usa '%s' per a inspeccionar amb el cursor."
8461057
847 #: ../../../src/MenuDevConsole.cpp:146
1058 #: ../../../src/MenuDevConsole.cpp:148
8481059 msgid "Arguments with spaces should be enclosed with double quotes. Example:"
8491060 msgstr ""
8501061 "Els arguments amb espais han d'estar entre cometes dobles. Per exemple:"
8511062
852 #: ../../../src/MenuDevConsole.cpp:147
1063 #: ../../../src/MenuDevConsole.cpp:149
8531064 msgid "Type 'help' to get a list of commands."
8541065 msgstr "Escrigui 'help' per a obtenir una llista d'ordres."
8551066
856 #: ../../../src/MenuDevConsole.cpp:209 ../../../src/MenuDevConsole.cpp:213
1067 #: ../../../src/MenuDevConsole.cpp:211 ../../../src/MenuDevConsole.cpp:215
8571068 msgid "px"
8581069 msgstr "px"
8591070
860 #: ../../../src/MenuDevConsole.cpp:224
1071 #: ../../../src/MenuDevConsole.cpp:226
8611072 msgid "Distance"
8621073 msgstr "Distància"
8631074
864 #: ../../../src/MenuDevConsole.cpp:239 ../../../src/MenuDevConsole.cpp:286
1075 #: ../../../src/MenuDevConsole.cpp:241 ../../../src/MenuDevConsole.cpp:289
1076 #: ../../../src/MenuDevConsole.cpp:303
8651077 msgid "Entity"
8661078 msgstr "Entitat"
8671079
868 #: ../../../src/MenuDevConsole.cpp:261 ../../../src/MenuDevConsole.cpp:268
1080 #: ../../../src/MenuDevConsole.cpp:263 ../../../src/MenuDevConsole.cpp:270
8691081 msgid "none"
8701082 msgstr "cap"
8711083
872 #: ../../../src/MenuDevConsole.cpp:262 ../../../src/MenuDevConsole.cpp:264
1084 #: ../../../src/MenuDevConsole.cpp:264 ../../../src/MenuDevConsole.cpp:266
8731085 msgid "wall"
8741086 msgstr "mur"
8751087
876 #: ../../../src/MenuDevConsole.cpp:263 ../../../src/MenuDevConsole.cpp:265
1088 #: ../../../src/MenuDevConsole.cpp:265 ../../../src/MenuDevConsole.cpp:267
8771089 msgid "short wall / pit"
8781090 msgstr "paret curta / pou"
8791091
880 #: ../../../src/MenuDevConsole.cpp:266
1092 #: ../../../src/MenuDevConsole.cpp:268
8811093 msgid "entity"
8821094 msgstr "entitat"
8831095
884 #: ../../../src/MenuDevConsole.cpp:267
1096 #: ../../../src/MenuDevConsole.cpp:269
8851097 msgid "entity, ally"
8861098 msgstr "entitat, aliat"
8871099
888 #: ../../../src/MenuDevConsole.cpp:274
1100 #: ../../../src/MenuDevConsole.cpp:276
8891101 msgid "Tile"
8901102 msgstr "Títol"
8911103
892 #: ../../../src/MenuDevConsole.cpp:360
1104 #: ../../../src/MenuDevConsole.cpp:377
8931105 msgid "adds a power to the action bar"
8941106 msgstr "afegeix un poder a la barra d'acció"
8951107
896 #: ../../../src/MenuDevConsole.cpp:361
1108 #: ../../../src/MenuDevConsole.cpp:378
8971109 msgid "turns on/off the display of the FPS counter"
8981110 msgstr ""
8991111
900 #: ../../../src/MenuDevConsole.cpp:362
1112 #: ../../../src/MenuDevConsole.cpp:379
9011113 msgid "turns on/off all of the HUD elements"
9021114 msgstr ""
9031115
904 #: ../../../src/MenuDevConsole.cpp:363
1116 #: ../../../src/MenuDevConsole.cpp:380
9051117 msgid "turns on/off the developer hud"
9061118 msgstr ""
9071119
908 #: ../../../src/MenuDevConsole.cpp:364
1120 #: ../../../src/MenuDevConsole.cpp:381
9091121 msgid ""
9101122 "Prints a list of powers that match a search term. No search term will list "
9111123 "all items"
9121124 msgstr ""
9131125
914 #: ../../../src/MenuDevConsole.cpp:365
1126 #: ../../../src/MenuDevConsole.cpp:382
9151127 msgid "Prints out all the map filenames located in the \"maps/\" directory."
9161128 msgstr ""
9171129
918 #: ../../../src/MenuDevConsole.cpp:366
1130 #: ../../../src/MenuDevConsole.cpp:383
9191131 msgid ""
9201132 "Prints out the active campaign statuses that match a search term. No search "
9211133 "term will list all active statuses"
9221134 msgstr ""
9231135
924 #: ../../../src/MenuDevConsole.cpp:367
1136 #: ../../../src/MenuDevConsole.cpp:384
9251137 msgid ""
9261138 "Prints a list of items that match a search term. No search term will list "
9271139 "all items"
9281140 msgstr ""
9291141
930 #: ../../../src/MenuDevConsole.cpp:368
1142 #: ../../../src/MenuDevConsole.cpp:385
9311143 msgid ""
9321144 "parses a series of event components and executes them as a single event"
9331145 msgstr ""
9341146
935 #: ../../../src/MenuDevConsole.cpp:369
1147 #: ../../../src/MenuDevConsole.cpp:386
9361148 msgid "clears the command history"
9371149 msgstr ""
9381150
939 #: ../../../src/MenuDevConsole.cpp:370
1151 #: ../../../src/MenuDevConsole.cpp:387
9401152 msgid "displays this text"
9411153 msgstr "mostra aquest text"
9421154
943 #: ../../../src/MenuDevConsole.cpp:377
1155 #: ../../../src/MenuDevConsole.cpp:394
9441156 msgid "Toggled the developer hud"
9451157 msgstr ""
9461158
947 #: ../../../src/MenuDevConsole.cpp:381
1159 #: ../../../src/MenuDevConsole.cpp:398
9481160 msgid "Toggled the hud"
9491161 msgstr ""
9501162
951 #: ../../../src/MenuDevConsole.cpp:385
1163 #: ../../../src/MenuDevConsole.cpp:402
9521164 msgid "Toggled the FPS counter"
9531165 msgstr ""
9541166
955 #: ../../../src/MenuDevConsole.cpp:534
1167 #: ../../../src/MenuDevConsole.cpp:552
9561168 msgid "ERROR: Incorrect number of arguments"
9571169 msgstr ""
9581170
959 #: ../../../src/MenuDevConsole.cpp:536 ../../../src/MenuDevConsole.cpp:564
1171 #: ../../../src/MenuDevConsole.cpp:554 ../../../src/MenuDevConsole.cpp:582
9601172 msgid "HINT:"
9611173 msgstr "CONSELL:"
9621174
963 #: ../../../src/MenuDevConsole.cpp:536
1175 #: ../../../src/MenuDevConsole.cpp:554
9641176 msgid "<id>"
965 msgstr ""
966
967 #: ../../../src/MenuDevConsole.cpp:552
1177 msgstr "<id>"
1178
1179 #: ../../../src/MenuDevConsole.cpp:570
9681180 #, c-format
9691181 msgid "ERROR: '%s' is not a valid event key"
9701182 msgstr ""
9711183
972 #: ../../../src/MenuDevConsole.cpp:562
1184 #: ../../../src/MenuDevConsole.cpp:580
9731185 msgid "ERROR: Too few arguments"
9741186 msgstr ""
9751187
976 #: ../../../src/MenuDevConsole.cpp:564
1188 #: ../../../src/MenuDevConsole.cpp:582
9771189 msgid "<key>=<val> <key>=<val> ..."
978 msgstr ""
979
980 #: ../../../src/MenuDevConsole.cpp:569
1190 msgstr "<key>=<val> <key>=<val> ..."
1191
1192 #: ../../../src/MenuDevConsole.cpp:587
9811193 msgid "ERROR: Unknown command"
9821194 msgstr ""
9831195
984 #: ../../../src/MenuDevConsole.cpp:571
1196 #: ../../../src/MenuDevConsole.cpp:589
9851197 msgid "HINT: Type help"
9861198 msgstr ""
9871199
988 #: ../../../src/MenuEnemy.cpp:138
1200 #: ../../../src/MenuEnemy.cpp:162
9891201 #, c-format
9901202 msgid "%s level %d"
9911203 msgstr "%s nivell %d"
9921204
993 #: ../../../src/MenuEnemy.cpp:162
1205 #: ../../../src/MenuEnemy.cpp:186
9941206 msgid "Dead"
9951207 msgstr "Mort"
9961208
997 #: ../../../src/MenuEnemy.cpp:164
1209 #: ../../../src/MenuEnemy.cpp:188
9981210 msgid "Destroyed"
9991211 msgstr "Destruït"
10001212
1001 #: ../../../src/MenuExit.cpp:85 ../../../src/MenuExit.cpp:139
1002 msgid "Paused"
1003 msgstr "Pausat"
1004
1005 #: ../../../src/MenuExit.cpp:91
1006 msgid "Save & Exit"
1007 msgstr "Desar i sortir"
1008
1009 #: ../../../src/MenuExit.cpp:92
1010 msgid "Exit"
1011 msgstr "Sortir"
1012
1013 #: ../../../src/MenuExit.cpp:96
1014 msgid "Continue"
1015 msgstr "Continuar"
1016
1017 #: ../../../src/MenuInventory.cpp:73
1018 msgid "Automatically equip items"
1019 msgstr "Equipar objectes automàticament"
1020
1021 #: ../../../src/MenuInventory.cpp:188
1213 #: ../../../src/MenuGameOver.cpp:69
1214 msgid "Game Over"
1215 msgstr ""
1216
1217 #: ../../../src/MenuInventory.cpp:178
10221218 #, c-format
10231219 msgid "Lost %d%% of %s."
10241220 msgstr "Ha perdut %d%% de %s."
10251221
1026 #: ../../../src/MenuInventory.cpp:195
1222 #: ../../../src/MenuInventory.cpp:185
10271223 #, c-format
10281224 msgid "Lost %d%% of total XP."
10291225 msgstr "Ha perdut %d%% de PX."
10301226
1031 #: ../../../src/MenuInventory.cpp:200
1227 #: ../../../src/MenuInventory.cpp:190
10321228 #, c-format
10331229 msgid "Lost %d%% of current level XP."
10341230 msgstr "Ha perdut %d%% del nivell de PX actual."
10351231
1036 #: ../../../src/MenuInventory.cpp:226
1232 #: ../../../src/MenuInventory.cpp:216
10371233 #, c-format
10381234 msgid "Lost %s."
10391235 msgstr "Ha perdut %s."
10401236
1041 #: ../../../src/MenuInventory.cpp:274 ../../../src/MenuStash.cpp:146
1237 #: ../../../src/MenuInventory.cpp:258 ../../../src/MenuStash.cpp:276
10421238 #, c-format
10431239 msgid "%d %s"
10441240 msgstr "%d %s"
10451241
1046 #: ../../../src/MenuInventory.cpp:317
1242 #: ../../../src/MenuInventory.cpp:301
10471243 msgid "Pick up item(s):"
10481244 msgstr "Agafar objecte(s):"
10491245
1050 #: ../../../src/MenuInventory.cpp:318
1246 #: ../../../src/MenuInventory.cpp:302
10511247 msgid "Use or equip item:"
10521248 msgstr "Utilitzar o equipar-se amb l'objecte:"
10531249
1054 #: ../../../src/MenuInventory.cpp:319
1250 #: ../../../src/MenuInventory.cpp:303
10551251 #, c-format
10561252 msgid "%s modifiers"
10571253 msgstr "%s modificadors"
10581254
1059 #: ../../../src/MenuInventory.cpp:320
1255 #: ../../../src/MenuInventory.cpp:304
10601256 msgid "Select a quantity of item:"
10611257 msgstr "Selecciona la quantitat d'objectes:"
10621258
1063 #: ../../../src/MenuInventory.cpp:323
1259 #: ../../../src/MenuInventory.cpp:307
10641260 msgid "Stash item stack:"
10651261 msgstr ""
10661262
1067 #: ../../../src/MenuInventory.cpp:325
1263 #: ../../../src/MenuInventory.cpp:309
10681264 msgid "Sell item stack:"
10691265 msgstr "Vendre la pila d'objectes:"
10701266
1071 #: ../../../src/MenuInventory.cpp:592
1267 #: ../../../src/MenuInventory.cpp:576
10721268 msgid "You don't have enough of the required item."
10731269 msgstr "No en teniu prou del objecte requerit."
10741270
1075 #: ../../../src/MenuInventory.cpp:599
1271 #: ../../../src/MenuInventory.cpp:588
10761272 msgid "You can't use this item right now."
10771273 msgstr "No podeu utilitzar aquest objecte ara mateix."
10781274
1079 #: ../../../src/MenuInventory.cpp:611
1275 #: ../../../src/MenuInventory.cpp:600
10801276 msgid "This item can only be used from the action bar."
10811277 msgstr ""
10821278
1083 #: ../../../src/MenuInventory.cpp:729
1279 #: ../../../src/MenuInventory.cpp:718
10841280 msgid "Inventory is full."
1085 msgstr ""
1086
1087 #: ../../../src/MenuInventory.cpp:849
1281 msgstr "L'inventari està complert"
1282
1283 #: ../../../src/MenuInventory.cpp:843
10881284 #, c-format
10891285 msgid "Not enough %s."
10901286 msgstr ""
10911287
1092 #: ../../../src/MenuInventory.cpp:869 ../../../src/MenuInventory.cpp:876
1288 #: ../../../src/MenuInventory.cpp:863 ../../../src/MenuInventory.cpp:870
10931289 msgid "This item can not be sold."
10941290 msgstr "Aquest objecte no es pot vendre."
10951291
11011297 msgid "Quests"
11021298 msgstr "Missions"
11031299
1104 #: ../../../src/MenuManager.cpp:286
1300 #: ../../../src/MenuManager.cpp:305
11051301 #, c-format
11061302 msgid "XP: %d/%d"
11071303 msgstr "PX: %d/%d"
11081304
1109 #: ../../../src/MenuManager.cpp:827
1305 #: ../../../src/MenuManager.cpp:875
11101306 msgid "This item can not be dropped."
11111307 msgstr "Aquest objecte no es pot deixar anar."
1308
1309 #: ../../../src/MenuManager.cpp:1501
1310 msgid "Equipped"
1311 msgstr ""
1312
1313 #: ../../../src/MenuMovementType.cpp:87
1314 msgid "Select a Movement Type"
1315 msgstr ""
1316
1317 #: ../../../src/MenuMovementType.cpp:89
1318 msgid "Can be changed later in the Configuration menu."
1319 msgstr ""
1320
1321 #: ../../../src/MenuMovementType.cpp:92 ../../../src/MenuMovementType.cpp:122
1322 msgid "Keyboard"
1323 msgstr ""
1324
1325 #: ../../../src/MenuMovementType.cpp:93 ../../../src/MenuMovementType.cpp:128
1326 msgid "Mouse"
1327 msgstr ""
1328
1329 #: ../../../src/MenuMovementType.cpp:129
1330 msgid "Button"
1331 msgstr ""
11121332
11131333 #: ../../../src/MenuNumPicker.cpp:59
11141334 msgid "Enter amount:"
11151335 msgstr "Introdueix l'import:"
11161336
1117 #: ../../../src/MenuPowers.cpp:787
1337 #: ../../../src/MenuPowers.cpp:872
11181338 msgid "Passive"
11191339 msgstr "Passiu"
11201340
1121 #: ../../../src/MenuPowers.cpp:792
1341 #: ../../../src/MenuPowers.cpp:879
11221342 #, c-format
11231343 msgid "Costs %d MP"
11241344 msgstr "Costs %d PM"
11251345
1126 #: ../../../src/MenuPowers.cpp:796
1346 #: ../../../src/MenuPowers.cpp:883
11271347 #, c-format
11281348 msgid "Costs %d HP"
11291349 msgstr "Costs %d PV"
11301350
1131 #: ../../../src/MenuPowers.cpp:801
1351 #: ../../../src/MenuPowers.cpp:887
11321352 msgid "Cooldown:"
11331353 msgstr "Refredar:"
11341354
1135 #: ../../../src/MenuPowers.cpp:866 ../../../src/MenuPowers.cpp:869
1355 #: ../../../src/MenuPowers.cpp:938 ../../../src/MenuPowers.cpp:941
11361356 msgid "Damage per second"
11371357 msgstr "Dany per segon"
11381358
1139 #: ../../../src/MenuPowers.cpp:872 ../../../src/MenuPowers.cpp:875
1359 #: ../../../src/MenuPowers.cpp:944 ../../../src/MenuPowers.cpp:947
11401360 msgid "HP per second"
11411361 msgstr "PV per segon"
11421362
1143 #: ../../../src/MenuPowers.cpp:878 ../../../src/MenuPowers.cpp:881
1363 #: ../../../src/MenuPowers.cpp:950 ../../../src/MenuPowers.cpp:953
11441364 msgid "MP per second"
11451365 msgstr "PM per segon"
11461366
1147 #: ../../../src/MenuPowers.cpp:885
1367 #: ../../../src/MenuPowers.cpp:957
11481368 msgid "Immobilize"
11491369 msgstr "Immobilitzar"
11501370
1151 #: ../../../src/MenuPowers.cpp:893
1371 #: ../../../src/MenuPowers.cpp:965
11521372 msgid "Immunity"
11531373 msgstr "Immunitat"
11541374
1155 #: ../../../src/MenuPowers.cpp:896
1375 #: ../../../src/MenuPowers.cpp:968
11561376 msgid "Immunity to damage over time"
11571377 msgstr ""
11581378
1159 #: ../../../src/MenuPowers.cpp:899
1379 #: ../../../src/MenuPowers.cpp:971
11601380 msgid "Immunity to slow"
11611381 msgstr ""
11621382
1163 #: ../../../src/MenuPowers.cpp:902
1383 #: ../../../src/MenuPowers.cpp:974
11641384 msgid "Immunity to stun"
11651385 msgstr ""
11661386
1167 #: ../../../src/MenuPowers.cpp:905
1387 #: ../../../src/MenuPowers.cpp:977
11681388 msgid "Immunity to HP steal"
11691389 msgstr "Immunitat al robatori de PV"
11701390
1171 #: ../../../src/MenuPowers.cpp:908
1391 #: ../../../src/MenuPowers.cpp:980
11721392 msgid "Immunity to MP steal"
11731393 msgstr ""
11741394
1175 #: ../../../src/MenuPowers.cpp:911
1395 #: ../../../src/MenuPowers.cpp:983
11761396 msgid "Immunity to knockback"
11771397 msgstr ""
11781398
1179 #: ../../../src/MenuPowers.cpp:914
1399 #: ../../../src/MenuPowers.cpp:986
11801400 msgid "Immunity to damage reflection"
11811401 msgstr ""
11821402
1183 #: ../../../src/MenuPowers.cpp:917
1403 #: ../../../src/MenuPowers.cpp:992
11841404 msgid "Stun"
11851405 msgstr ""
11861406
1187 #: ../../../src/MenuPowers.cpp:920
1407 #: ../../../src/MenuPowers.cpp:995
11881408 msgid "Automatic revive on death"
11891409 msgstr ""
11901410
1191 #: ../../../src/MenuPowers.cpp:923
1411 #: ../../../src/MenuPowers.cpp:998
11921412 msgid "Convert"
1193 msgstr ""
1194
1195 #: ../../../src/MenuPowers.cpp:926
1413 msgstr "Convertir"
1414
1415 #: ../../../src/MenuPowers.cpp:1001
11961416 msgid "Fear"
11971417 msgstr "Por"
11981418
1199 #: ../../../src/MenuPowers.cpp:929
1419 #: ../../../src/MenuPowers.cpp:1004
12001420 msgid "Lifespan"
12011421 msgstr ""
12021422
1203 #: ../../../src/MenuPowers.cpp:953
1423 #: ../../../src/MenuPowers.cpp:1028
12041424 msgid "Magical Shield"
12051425 msgstr ""
12061426
1207 #: ../../../src/MenuPowers.cpp:982
1427 #: ../../../src/MenuPowers.cpp:1057
12081428 msgid "Healing"
12091429 msgstr ""
12101430
1211 #: ../../../src/MenuPowers.cpp:985
1431 #: ../../../src/MenuPowers.cpp:1060
12121432 msgid "Knockback"
12131433 msgstr ""
12141434
1215 #: ../../../src/MenuPowers.cpp:1010
1435 #: ../../../src/MenuPowers.cpp:1084
12161436 #, c-format
12171437 msgid "%d%% chance"
12181438 msgstr ""
12191439
1220 #: ../../../src/MenuPowers.cpp:1062
1440 #: ../../../src/MenuPowers.cpp:1136
12211441 msgid "Base Accuracy"
12221442 msgstr ""
12231443
1224 #: ../../../src/MenuPowers.cpp:1082
1444 #: ../../../src/MenuPowers.cpp:1156
12251445 msgid "Base Critical Chance"
12261446 msgstr ""
12271447
1228 #: ../../../src/MenuPowers.cpp:1090
1448 #: ../../../src/MenuPowers.cpp:1164
12291449 msgid "Ignores Absorbtion"
12301450 msgstr ""
12311451
1232 #: ../../../src/MenuPowers.cpp:1095
1452 #: ../../../src/MenuPowers.cpp:1169
12331453 msgid "Ignores Avoidance"
12341454 msgstr ""
12351455
1236 #: ../../../src/MenuPowers.cpp:1100
1456 #: ../../../src/MenuPowers.cpp:1174
12371457 #, c-format
12381458 msgid "%d%% Chance to crit slowed targets"
12391459 msgstr ""
12401460
1241 #: ../../../src/MenuPowers.cpp:1105
1461 #: ../../../src/MenuPowers.cpp:1179
12421462 #, c-format
12431463 msgid "Elemental Damage (%s)"
12441464 msgstr ""
12451465
1246 #: ../../../src/MenuPowers.cpp:1114
1466 #: ../../../src/MenuPowers.cpp:1188
12471467 #, c-format
12481468 msgid "Requires a %s"
12491469 msgstr ""
12501470
1251 #: ../../../src/MenuPowers.cpp:1151 ../../../src/MenuPowers.cpp:1154
1471 #: ../../../src/MenuPowers.cpp:1226 ../../../src/MenuPowers.cpp:1229
12521472 #, c-format
12531473 msgid "Requires Power: %s"
12541474 msgstr ""
12551475
1256 #: ../../../src/MenuPowers.cpp:1163
1476 #: ../../../src/MenuPowers.cpp:1238
12571477 msgid "Click to Unlock (uses 1 Skill Point)"
12581478 msgstr ""
12591479
1260 #: ../../../src/MenuPowers.cpp:1167 ../../../src/MenuPowers.cpp:1169
1480 #: ../../../src/MenuPowers.cpp:1242 ../../../src/MenuPowers.cpp:1244
12611481 msgid "Requires 1 Skill Point"
12621482 msgstr ""
12631483
1264 #: ../../../src/MenuPowers.cpp:1355
1265 #, c-format
1266 msgid "%d unspent skill point"
1267 msgstr ""
1268
1269 #: ../../../src/MenuPowers.cpp:1358
1270 #, c-format
1271 msgid "%d unspent skill points"
1272 msgstr ""
1273
1274 #: ../../../src/MenuPowers.cpp:1388
1484 #: ../../../src/MenuPowers.cpp:1444
1485 #, c-format
1486 msgid "Available skill points: %d"
1487 msgstr ""
1488
1489 #: ../../../src/MenuPowers.cpp:1476
12751490 msgid "Next Level:"
12761491 msgstr ""
12771492
1278 #: ../../../src/MenuStash.cpp:96
1279 msgid "Shared Stash"
1280 msgstr ""
1281
1282 #: ../../../src/MenuStash.cpp:209
1283 msgid "Can not store quest items in the stash."
1284 msgstr ""
1285
1286 #: ../../../src/MenuStash.cpp:219
1493 #: ../../../src/MenuStash.cpp:80 ../../../src/MenuStash.cpp:161
1494 msgid "Stash"
1495 msgstr ""
1496
1497 #: ../../../src/MenuStash.cpp:174 ../../../src/MenuStash.cpp:188
1498 msgid "Private"
1499 msgstr ""
1500
1501 #: ../../../src/MenuStash.cpp:175
1502 msgid "Shared"
1503 msgstr ""
1504
1505 #: ../../../src/MenuStash.cpp:340
1506 msgid "This item can not be stored in the stash."
1507 msgstr ""
1508
1509 #: ../../../src/MenuStash.cpp:345
1510 msgid "This item can not be stored in the private stash."
1511 msgstr ""
1512
1513 #: ../../../src/MenuStash.cpp:350
1514 msgid "This item can not be stored in the shared stash."
1515 msgstr ""
1516
1517 #: ../../../src/MenuStash.cpp:360
12871518 msgid "Stash is full."
12881519 msgstr ""
12891520
1290 #: ../../../src/MenuTalker.cpp:454
1521 #: ../../../src/MenuStash.cpp:414
1522 #, c-format
1523 msgid "Can not store item in stash: %s"
1524 msgstr ""
1525
1526 #: ../../../src/MenuTalker.cpp:448
1527 #, c-format
1528 msgid "<dialog node %d>"
1529 msgstr ""
1530
1531 #: ../../../src/MenuTalker.cpp:456
12911532 msgid "Trade"
12921533 msgstr "Comerç"
12931534
1294 #: ../../../src/MenuVendor.cpp:58
1535 #: ../../../src/MenuVendor.cpp:60
12951536 msgid "Buyback"
12961537 msgstr ""
12971538
1298 #: ../../../src/MenuVendor.cpp:279
1539 #: ../../../src/MenuVendor.cpp:283
12991540 msgid "Vendor"
13001541 msgstr ""
13011542
1302 #: ../../../src/PowerManager.cpp:1136
1543 #: ../../../src/PowerManager.cpp:1208
13031544 #, c-format
13041545 msgid "+%d Shield"
13051546 msgstr ""
13061547
1307 #: ../../../src/PowerManager.cpp:1392
1548 #: ../../../src/PowerManager.cpp:1465
13081549 msgid "You are already transformed, untransform first."
13091550 msgstr ""
13101551
1311 #: ../../../src/PowerManager.cpp:1404
1552 #: ../../../src/PowerManager.cpp:1477
13121553 msgid "Could not untransform at this position."
13131554 msgstr ""
13141555
13161557 msgid "Completed Quests"
13171558 msgstr ""
13181559
1319 #: ../../../src/SaveLoad.cpp:243 ../../../src/SaveLoad.cpp:244
1560 #: ../../../src/SaveLoad.cpp:250 ../../../src/SaveLoad.cpp:251
13201561 msgid "Game saved."
13211562 msgstr ""
13221563
1323 #: ../../../src/SDLInputState.cpp:582
1324 msgid "Backspace"
1325 msgstr ""
1326
1327 #: ../../../src/SDLInputState.cpp:583
1328 msgid "CapsLock"
1329 msgstr ""
1330
1331 #: ../../../src/SDLInputState.cpp:586
1564 #: ../../../src/SDLInputState.cpp:643
1565 msgid "BkSp"
1566 msgstr ""
1567
1568 #: ../../../src/SDLInputState.cpp:644
1569 msgid "Caps"
1570 msgstr ""
1571
1572 #: ../../../src/SDLInputState.cpp:645
1573 msgid "Del"
1574 msgstr ""
1575
1576 #: ../../../src/SDLInputState.cpp:647 ../../../src/SDLInputState.cpp:677
13321577 msgid "End"
13331578 msgstr "Fi"
13341579
1335 #: ../../../src/SDLInputState.cpp:587
1336 msgid "Escape"
1337 msgstr ""
1338
1339 #: ../../../src/SDLInputState.cpp:588
1580 #: ../../../src/SDLInputState.cpp:648
1581 msgid "Esc"
1582 msgstr ""
1583
1584 #: ../../../src/SDLInputState.cpp:649 ../../../src/SDLInputState.cpp:679
13401585 msgid "Home"
13411586 msgstr ""
13421587
1343 #: ../../../src/SDLInputState.cpp:589
1344 msgid "Insert"
1345 msgstr ""
1346
1347 #: ../../../src/SDLInputState.cpp:590
1348 msgid "Left Alt"
1349 msgstr ""
1350
1351 #: ../../../src/SDLInputState.cpp:591
1352 msgid "Left Ctrl"
1353 msgstr ""
1354
1355 #: ../../../src/SDLInputState.cpp:593
1356 msgid "Left Shift"
1357 msgstr ""
1358
1359 #: ../../../src/SDLInputState.cpp:594
1360 msgid "NumLock"
1361 msgstr ""
1362
1363 #: ../../../src/SDLInputState.cpp:595
1364 msgid "PageDown"
1365 msgstr ""
1366
1367 #: ../../../src/SDLInputState.cpp:596
1368 msgid "PageUp"
1369 msgstr ""
1370
1371 #: ../../../src/SDLInputState.cpp:597
1588 #: ../../../src/SDLInputState.cpp:650
1589 msgid "Ins"
1590 msgstr ""
1591
1592 #: ../../../src/SDLInputState.cpp:651
1593 msgid "LAlt"
1594 msgstr ""
1595
1596 #: ../../../src/SDLInputState.cpp:652
1597 msgid "LCtrl"
1598 msgstr ""
1599
1600 #: ../../../src/SDLInputState.cpp:654
1601 msgid "LShft"
1602 msgstr ""
1603
1604 #: ../../../src/SDLInputState.cpp:655
1605 msgid "Num"
1606 msgstr ""
1607
1608 #: ../../../src/SDLInputState.cpp:656
1609 msgid "PgDn"
1610 msgstr ""
1611
1612 #: ../../../src/SDLInputState.cpp:657
1613 msgid "PgUp"
1614 msgstr ""
1615
1616 #: ../../../src/SDLInputState.cpp:658 ../../../src/SDLInputState.cpp:688
13721617 msgid "Pause"
13731618 msgstr "Pausa"
13741619
1375 #: ../../../src/SDLInputState.cpp:598
1620 #: ../../../src/SDLInputState.cpp:659
1621 msgid "Print"
1622 msgstr ""
1623
1624 #: ../../../src/SDLInputState.cpp:660
1625 msgid "RAlt"
1626 msgstr ""
1627
1628 #: ../../../src/SDLInputState.cpp:661
1629 msgid "RCtrl"
1630 msgstr ""
1631
1632 #: ../../../src/SDLInputState.cpp:662
1633 msgid "Ret"
1634 msgstr ""
1635
1636 #: ../../../src/SDLInputState.cpp:664
1637 msgid "RShft"
1638 msgstr ""
1639
1640 #: ../../../src/SDLInputState.cpp:665
1641 msgid "SLock"
1642 msgstr ""
1643
1644 #: ../../../src/SDLInputState.cpp:666
1645 msgid "Spc"
1646 msgstr ""
1647
1648 #: ../../../src/SDLInputState.cpp:667 ../../../src/SDLInputState.cpp:697
1649 msgid "Tab"
1650 msgstr "Tabulador"
1651
1652 #: ../../../src/SDLInputState.cpp:673
1653 msgid "Backspace"
1654 msgstr ""
1655
1656 #: ../../../src/SDLInputState.cpp:674
1657 msgid "CapsLock"
1658 msgstr ""
1659
1660 #: ../../../src/SDLInputState.cpp:678
1661 msgid "Escape"
1662 msgstr ""
1663
1664 #: ../../../src/SDLInputState.cpp:680
1665 msgid "Insert"
1666 msgstr ""
1667
1668 #: ../../../src/SDLInputState.cpp:681
1669 msgid "Left Alt"
1670 msgstr ""
1671
1672 #: ../../../src/SDLInputState.cpp:682
1673 msgid "Left Ctrl"
1674 msgstr ""
1675
1676 #: ../../../src/SDLInputState.cpp:684
1677 msgid "Left Shift"
1678 msgstr ""
1679
1680 #: ../../../src/SDLInputState.cpp:685
1681 msgid "NumLock"
1682 msgstr ""
1683
1684 #: ../../../src/SDLInputState.cpp:686
1685 msgid "PageDown"
1686 msgstr ""
1687
1688 #: ../../../src/SDLInputState.cpp:687
1689 msgid "PageUp"
1690 msgstr ""
1691
1692 #: ../../../src/SDLInputState.cpp:689
13761693 msgid "PrintScreen"
13771694 msgstr ""
13781695
1379 #: ../../../src/SDLInputState.cpp:599
1696 #: ../../../src/SDLInputState.cpp:690
13801697 msgid "Right Alt"
13811698 msgstr ""
13821699
1383 #: ../../../src/SDLInputState.cpp:600
1700 #: ../../../src/SDLInputState.cpp:691
13841701 msgid "Right Ctrl"
13851702 msgstr ""
13861703
1387 #: ../../../src/SDLInputState.cpp:601
1704 #: ../../../src/SDLInputState.cpp:692
13881705 msgid "Return"
13891706 msgstr ""
13901707
1391 #: ../../../src/SDLInputState.cpp:603
1708 #: ../../../src/SDLInputState.cpp:694
13921709 msgid "Right Shift"
13931710 msgstr ""
13941711
1395 #: ../../../src/SDLInputState.cpp:604
1712 #: ../../../src/SDLInputState.cpp:695
13961713 msgid "ScrollLock"
13971714 msgstr ""
13981715
1399 #: ../../../src/SDLInputState.cpp:605
1716 #: ../../../src/SDLInputState.cpp:696
14001717 msgid "Space"
14011718 msgstr "Espai"
14021719
1403 #: ../../../src/SDLInputState.cpp:606
1404 msgid "Tab"
1405 msgstr "Tabulador"
1406
1407 #: ../../../src/SDLInputState.cpp:620
1720 #: ../../../src/SDLInputState.cpp:710
1721 #, c-format
1722 msgid "M%d"
1723 msgstr ""
1724
1725 #: ../../../src/SDLInputState.cpp:716
14081726 #, c-format
14091727 msgid "Mouse %d"
14101728 msgstr ""
14111729
1412 #: ../../../src/SDLInputState.cpp:628
1730 #: ../../../src/SDLInputState.cpp:726
1731 #, c-format
1732 msgid "JX%d-"
1733 msgstr ""
1734
1735 #: ../../../src/SDLInputState.cpp:728
14131736 #, c-format
14141737 msgid "Axis %d -"
14151738 msgstr ""
14161739
1417 #: ../../../src/SDLInputState.cpp:630
1740 #: ../../../src/SDLInputState.cpp:732
1741 #, c-format
1742 msgid "JX%d+"
1743 msgstr ""
1744
1745 #: ../../../src/SDLInputState.cpp:734
14181746 #, c-format
14191747 msgid "Axis %d +"
14201748 msgstr ""
14211749
1422 #: ../../../src/SDLInputState.cpp:633
1750 #: ../../../src/SDLInputState.cpp:739
1751 #, c-format
1752 msgid "JB%d"
1753 msgstr ""
1754
1755 #: ../../../src/SDLInputState.cpp:741
14231756 #, c-format
14241757 msgid "Button %d"
14251758 msgstr ""
14261759
1427 #: ../../../src/SDLInputState.cpp:637
1428 msgid "(none)"
1429 msgstr ""
1430
1431 #: ../../../src/SDLInputState.cpp:677
1760 #: ../../../src/SDLInputState.cpp:787
14321761 msgid "Touch control D-Pad"
14331762 msgstr ""
14341763
1435 #: ../../../src/SDLInputState.cpp:701
1764 #: ../../../src/SDLInputState.cpp:810
14361765 msgid "Touch control buttons"
14371766 msgstr ""
14381767
1439 #: ../../../src/SDLInputState.cpp:716
1768 #: ../../../src/SDLInputState.cpp:824
14401769 msgid "Tap"
14411770 msgstr ""
14421771
1443 #: ../../../src/SDLInputState.cpp:760 ../../../src/SDLInputState.cpp:764
1444 #: ../../../src/SDLInputState.cpp:768
1772 #: ../../../src/SDLInputState.cpp:876 ../../../src/SDLInputState.cpp:878
1773 #, c-format
1774 msgid "Can not bind: %s"
1775 msgstr ""
1776
1777 #: ../../../src/SDLInputState.cpp:890 ../../../src/SDLInputState.cpp:894
1778 #: ../../../src/SDLInputState.cpp:898
14451779 #, c-format
14461780 msgid "'%s' is no longer bound to:"
14471781 msgstr ""
16001934 msgid "Base MP"
16011935 msgstr "PM base"
16021936
1603 #: ../../../src/Utils.cpp:346
1937 #: ../../../src/Utils.cpp:365
16041938 msgid "k"
16051939 msgstr "k"
16061940
1607 #: ../../../src/Utils.cpp:580
1941 #: ../../../src/Utils.cpp:635
16081942 #, c-format
16091943 msgid "%s second"
16101944 msgstr "%s segon"
16111945
1612 #: ../../../src/Utils.cpp:583
1946 #: ../../../src/Utils.cpp:638
16131947 #, c-format
16141948 msgid "%s seconds"
16151949 msgstr "%s segons"
1111 msgstr ""
1212 "Project-Id-Version: PACKAGE VERSION\n"
1313 "Report-Msgid-Bugs-To: \n"
14 "POT-Creation-Date: 2018-11-17 21:50-0500\n"
14 "POT-Creation-Date: 2021-05-23 20:34-0400\n"
1515 "PO-Revision-Date: 2018-03-28 19:16+0000\n"
1616 "Last-Translator: a hark <vit.hrachovy@sandbox.cz>, 2018\n"
1717 "Language-Team: Czech (https://www.transifex.com/flareorg/teams/84925/cs/)\n"
2121 "Language: cs\n"
2222 "Plural-Forms: nplurals=4; plural=(n == 1 && n % 1 == 0) ? 0 : (n >= 2 && n <= 4 && n % 1 == 0) ? 1: (n % 1 != 0 ) ? 2 : 3;\n"
2323
24 #: ../../../src/Avatar.cpp:367
24 #: ../../../src/Avatar.cpp:391
25 msgid "Your health is low!"
26 msgstr ""
27
28 #: ../../../src/Avatar.cpp:421
2529 #, c-format
2630 msgid "Congratulations, you have reached level %d!"
2731 msgstr "Dosáhl jsi levelu %d!"
2832
29 #: ../../../src/Avatar.cpp:369
30 msgid "You may increase one attribute through the Character Menu."
31 msgstr "Můžete zvýšit jeden atribtu v Menu Postavy"
32
33 #: ../../../src/Avatar.cpp:583
34 msgid "You are defeated. Game over! ${INPUT_CONTINUE} to exit to Title."
35 msgstr ""
36
37 #: ../../../src/Avatar.cpp:589
38 msgid "You are defeated. ${INPUT_CONTINUE} to continue."
39 msgstr ""
40
41 #: ../../../src/Avatar.cpp:839
33 #: ../../../src/Avatar.cpp:423
34 msgid "You may increase one or more attributes through the Character Menu."
35 msgstr ""
36
37 #: ../../../src/Avatar.cpp:427
38 msgid "You may unlock one or more abilities through the Powers Menu."
39 msgstr ""
40
41 #: ../../../src/Avatar.cpp:689
42 msgid "You are defeated."
43 msgstr ""
44
45 #: ../../../src/Avatar.cpp:935
4246 msgid "Transformation expired. You have been moved back to a safe place."
4347 msgstr ""
4448
45 #: ../../../src/CampaignManager.cpp:153
49 #: ../../../src/CampaignManager.cpp:152
4650 #, c-format
4751 msgid "%d %s removed."
4852 msgstr ""
4953
50 #: ../../../src/CampaignManager.cpp:162
54 #: ../../../src/CampaignManager.cpp:171
55 #, c-format
56 msgid "%s x%d removed."
57 msgstr ""
58
59 #: ../../../src/CampaignManager.cpp:173
5160 #, c-format
5261 msgid "%s removed."
5362 msgstr ""
5463
55 #: ../../../src/CampaignManager.cpp:175
64 #: ../../../src/CampaignManager.cpp:187
65 #, c-format
66 msgid "You receive %d %s."
67 msgstr "Dostáváš %d %s."
68
69 #: ../../../src/CampaignManager.cpp:191
70 #, c-format
71 msgid "You receive %s x%d."
72 msgstr "Dostáváš %s x%d."
73
74 #: ../../../src/CampaignManager.cpp:193
5675 #, c-format
5776 msgid "You receive %s."
5877 msgstr "Dostáváš %s."
5978
60 #: ../../../src/CampaignManager.cpp:177
61 #, c-format
62 msgid "You receive %s x%d."
63 msgstr "Dostáváš %s x%d."
64
65 #: ../../../src/CampaignManager.cpp:186
66 #, c-format
67 msgid "You receive %d %s."
68 msgstr "Dostáváš %d %s."
69
70 #: ../../../src/CampaignManager.cpp:195
79 #: ../../../src/CampaignManager.cpp:210
7180 #, c-format
7281 msgid "You receive %d XP."
7382 msgstr "Dostáváš %d XP."
7483
75 #: ../../../src/CampaignManager.cpp:201
84 #: ../../../src/CampaignManager.cpp:216
7685 msgid "HP restored."
7786 msgstr "HP obnoveno."
7887
79 #: ../../../src/CampaignManager.cpp:205
88 #: ../../../src/CampaignManager.cpp:220
8089 msgid "MP restored."
8190 msgstr "MP obnoveno."
8291
83 #: ../../../src/CampaignManager.cpp:210
92 #: ../../../src/CampaignManager.cpp:225
8493 msgid "HP and MP restored."
8594 msgstr "HP a MP obnoveno."
8695
87 #: ../../../src/CampaignManager.cpp:214
96 #: ../../../src/CampaignManager.cpp:229
8897 msgid "Negative effects removed."
8998 msgstr "Negativní účinky odstraněny."
9099
91 #: ../../../src/CampaignManager.cpp:220
100 #: ../../../src/CampaignManager.cpp:235
92101 msgid "HP and MP restored, negative effects removed"
93102 msgstr "HP a MP obnoveno, negativní účtinky odstraněny"
94103
106115 "The default renderer that is often faster than the SDL software renderer."
107116 msgstr ""
108117
109 #: ../../../src/EngineSettings.cpp:561
118 #: ../../../src/EngineSettings.cpp:586
110119 msgid "Adventurer"
111120 msgstr "Dobrodruh"
112121
113 #: ../../../src/Entity.cpp:511
122 #: ../../../src/Entity.cpp:527
114123 msgid "miss"
115124 msgstr "minout"
116125
117 #: ../../../src/Entity.cpp:548 ../../../src/PowerManager.cpp:1152
118 #: ../../../src/StatBlock.cpp:805 ../../../src/StatBlock.cpp:811
126 #: ../../../src/Entity.cpp:565 ../../../src/PowerManager.cpp:1224
127 #: ../../../src/StatBlock.cpp:917 ../../../src/StatBlock.cpp:923
119128 #, c-format
120129 msgid "+%d HP"
121130 msgstr ""
122131
123 #: ../../../src/Entity.cpp:555 ../../../src/StatBlock.cpp:816
124 #: ../../../src/StatBlock.cpp:822
132 #: ../../../src/Entity.cpp:572 ../../../src/StatBlock.cpp:928
133 #: ../../../src/StatBlock.cpp:934
125134 #, c-format
126135 msgid "+%d MP"
127136 msgstr "%d MP"
128137
129 #: ../../../src/EventManager.cpp:738
138 #: ../../../src/EventManager.cpp:792
130139 msgid "Unknown destination"
131140 msgstr "Neznámá lokace"
132141
133 #: ../../../src/GameStateConfigBase.cpp:89
134 #: ../../../src/GameStateConfigBase.cpp:110
142 #: ../../../src/GameState.cpp:37 ../../../src/GameState.cpp:58
143 msgid "Loading..."
144 msgstr "Nahrávám..."
145
146 #: ../../../src/GameStateLoad.cpp:90 ../../../src/GameStateLoad.cpp:103
147 msgid "Delete Save"
148 msgstr "Vymazat uložené pozice"
149
150 #: ../../../src/GameStateLoad.cpp:90
151 msgid "Delete this save?"
152 msgstr "Vymazat tuto pozici?"
153
154 #: ../../../src/GameStateLoad.cpp:92
155 msgid "Exit to Title"
156 msgstr "Ukončit do menu"
157
158 #: ../../../src/GameStateLoad.cpp:95
159 msgid "New Game"
160 msgstr "Nová Hra"
161
162 #: ../../../src/GameStateLoad.cpp:99 ../../../src/GameStateLoad.cpp:607
163 msgid "Choose a Slot"
164 msgstr "Vyber si pozici"
165
166 #: ../../../src/GameStateLoad.cpp:580 ../../../src/GameStateLoad.cpp:601
167 msgid "Enable a story mod to continue"
168 msgstr "Pro pokračování povol příběhový mod"
169
170 #: ../../../src/GameStateLoad.cpp:596
171 msgid "Load Game"
172 msgstr "Nahrát Hru"
173
174 #: ../../../src/GameStateLoad.cpp:705
175 msgid "Entering game world..."
176 msgstr "Vstupuji do herního světa..."
177
178 #: ../../../src/GameStateLoad.cpp:708
179 msgid "Loading saved game..."
180 msgstr "Nahrávám uloženou pozici..."
181
182 #: ../../../src/GameStateLoad.cpp:741
183 msgid "Invalid save"
184 msgstr ""
185
186 #: ../../../src/GameStateLoad.cpp:765 ../../../src/ItemManager.cpp:745
187 #: ../../../src/MenuPowers.cpp:860 ../../../src/MenuPowers.cpp:1219
188 #: ../../../src/MenuPowers.cpp:1631
189 #, c-format
190 msgid "Level %d"
191 msgstr ""
192
193 #: ../../../src/GameStateNew.cpp:66 ../../../src/InputState.cpp:416
194 #: ../../../src/MenuConfig.cpp:246
195 msgid "Cancel"
196 msgstr "Zrušit"
197
198 #: ../../../src/GameStateNew.cpp:69
199 msgid "Create"
200 msgstr "Vytvořit"
201
202 #: ../../../src/GameStateNew.cpp:77
203 msgid "Randomize"
204 msgstr ""
205
206 #: ../../../src/GameStateNew.cpp:93
207 msgid "Choose a Portrait"
208 msgstr "Zvol si Portrét"
209
210 #: ../../../src/GameStateNew.cpp:97
211 msgid "Choose a Name"
212 msgstr "Zvol své Jméno"
213
214 #: ../../../src/GameStateNew.cpp:101
215 msgid "Permadeath?"
216 msgstr "Pernamentní smrt?"
217
218 #: ../../../src/GameStateNew.cpp:105
219 msgid "Choose a Class"
220 msgstr "Zvol své povolání"
221
222 #: ../../../src/GameStateTitle.cpp:107
223 msgid "Play Game"
224 msgstr "Hrát Hru"
225
226 #: ../../../src/GameStateTitle.cpp:110
227 msgid "Enable a core mod to continue"
228 msgstr "Pro pokračování povol mod jádra"
229
230 #: ../../../src/GameStateTitle.cpp:114 ../../../src/MenuMiniMap.cpp:152
231 msgid "Configuration"
232 msgstr "Nastavení"
233
234 #: ../../../src/GameStateTitle.cpp:117
235 msgid "Credits"
236 msgstr ""
237
238 #: ../../../src/GameStateTitle.cpp:120
239 msgid "Exit Game"
240 msgstr "Ukončit Hru"
241
242 #: ../../../src/InputState.cpp:417
243 msgid "Accept"
244 msgstr "Příjmout"
245
246 #: ../../../src/InputState.cpp:418 ../../../src/MenuMovementType.cpp:123
247 #: ../../../src/MenuMovementType.cpp:132 ../../../src/SDLInputState.cpp:668
248 #: ../../../src/SDLInputState.cpp:698
249 msgid "Up"
250 msgstr "Nahoru"
251
252 #: ../../../src/InputState.cpp:419 ../../../src/MenuMovementType.cpp:125
253 #: ../../../src/MenuMovementType.cpp:134 ../../../src/SDLInputState.cpp:646
254 #: ../../../src/SDLInputState.cpp:676
255 msgid "Down"
256 msgstr "Dolů"
257
258 #: ../../../src/InputState.cpp:420 ../../../src/MenuMovementType.cpp:124
259 #: ../../../src/MenuMovementType.cpp:133 ../../../src/SDLInputState.cpp:653
260 #: ../../../src/SDLInputState.cpp:683
261 msgid "Left"
262 msgstr "Doleva"
263
264 #: ../../../src/InputState.cpp:421 ../../../src/MenuMovementType.cpp:126
265 #: ../../../src/MenuMovementType.cpp:135 ../../../src/SDLInputState.cpp:663
266 #: ../../../src/SDLInputState.cpp:693
267 msgid "Right"
268 msgstr "Doprava"
269
270 #: ../../../src/InputState.cpp:422
271 msgid "Bar1"
272 msgstr ""
273
274 #: ../../../src/InputState.cpp:423
275 msgid "Bar2"
276 msgstr ""
277
278 #: ../../../src/InputState.cpp:424
279 msgid "Bar3"
280 msgstr ""
281
282 #: ../../../src/InputState.cpp:425
283 msgid "Bar4"
284 msgstr ""
285
286 #: ../../../src/InputState.cpp:426
287 msgid "Bar5"
288 msgstr ""
289
290 #: ../../../src/InputState.cpp:427
291 msgid "Bar6"
292 msgstr ""
293
294 #: ../../../src/InputState.cpp:428
295 msgid "Bar7"
296 msgstr ""
297
298 #: ../../../src/InputState.cpp:429
299 msgid "Bar8"
300 msgstr ""
301
302 #: ../../../src/InputState.cpp:430
303 msgid "Bar9"
304 msgstr ""
305
306 #: ../../../src/InputState.cpp:431
307 msgid "Bar0"
308 msgstr ""
309
310 #: ../../../src/InputState.cpp:432 ../../../src/MenuActionBar.cpp:84
311 #: ../../../src/MenuCharacter.cpp:54
312 msgid "Character"
313 msgstr "Postava"
314
315 #: ../../../src/InputState.cpp:433 ../../../src/MenuActionBar.cpp:85
316 #: ../../../src/MenuInventory.cpp:130 ../../../src/MenuVendor.cpp:59
317 msgid "Inventory"
318 msgstr "Inventář"
319
320 #: ../../../src/InputState.cpp:434 ../../../src/MenuActionBar.cpp:86
321 #: ../../../src/MenuPowers.cpp:158
322 msgid "Powers"
323 msgstr "Schopnosti"
324
325 #: ../../../src/InputState.cpp:435 ../../../src/MenuActionBar.cpp:87
326 #: ../../../src/MenuLog.cpp:72
327 msgid "Log"
328 msgstr "Deník"
329
330 #: ../../../src/InputState.cpp:436
331 msgid "Main1"
332 msgstr ""
333
334 #: ../../../src/InputState.cpp:437
335 msgid "Main2"
336 msgstr ""
337
338 #: ../../../src/InputState.cpp:438
339 msgid "Ctrl"
340 msgstr ""
341
342 #: ../../../src/InputState.cpp:439
343 msgid "Shift"
344 msgstr ""
345
346 #: ../../../src/InputState.cpp:440
347 msgid "Alt"
348 msgstr ""
349
350 #: ../../../src/InputState.cpp:441 ../../../src/SDLInputState.cpp:675
351 msgid "Delete"
352 msgstr ""
353
354 #: ../../../src/InputState.cpp:442
355 msgid "ActionBar Accept"
356 msgstr ""
357
358 #: ../../../src/InputState.cpp:443
359 msgid "ActionBar Left"
360 msgstr ""
361
362 #: ../../../src/InputState.cpp:444
363 msgid "ActionBar Right"
364 msgstr ""
365
366 #: ../../../src/InputState.cpp:445
367 msgid "ActionBar Use"
368 msgstr ""
369
370 #: ../../../src/InputState.cpp:446
371 msgid "Developer Menu"
372 msgstr ""
373
374 #: ../../../src/InputState.cpp:448
375 msgid "Left Mouse"
376 msgstr ""
377
378 #: ../../../src/InputState.cpp:449
379 msgid "Middle Mouse"
380 msgstr ""
381
382 #: ../../../src/InputState.cpp:450
383 msgid "Right Mouse"
384 msgstr ""
385
386 #: ../../../src/InputState.cpp:451
387 msgid "Wheel Up"
388 msgstr ""
389
390 #: ../../../src/InputState.cpp:452
391 msgid "Wheel Down"
392 msgstr ""
393
394 #: ../../../src/InputState.cpp:453
395 msgid "Mouse X1"
396 msgstr ""
397
398 #: ../../../src/InputState.cpp:454
399 msgid "Mouse X2"
400 msgstr ""
401
402 #: ../../../src/ItemManager.cpp:475
403 msgid "Unknown Item"
404 msgstr ""
405
406 #: ../../../src/ItemManager.cpp:646 ../../../src/MenuPowers.cpp:959
407 #, c-format
408 msgid "%d%% Speed"
409 msgstr ""
410
411 #: ../../../src/ItemManager.cpp:650 ../../../src/MenuPowers.cpp:962
412 #, c-format
413 msgid "%d%% Attack Speed"
414 msgstr ""
415
416 #: ../../../src/ItemManager.cpp:672 ../../../src/MenuCharacter.cpp:352
417 #: ../../../src/MenuPowers.cpp:931
418 #, c-format
419 msgid "Resistance (%s)"
420 msgstr ""
421
422 #: ../../../src/ItemManager.cpp:682
423 #, c-format
424 msgid "Requires %s"
425 msgstr ""
426
427 #: ../../../src/ItemManager.cpp:731
428 msgid "Quest Item"
429 msgstr ""
430
431 #: ../../../src/ItemManager.cpp:758
432 #, c-format
433 msgid "Quality: %s"
434 msgstr ""
435
436 #: ../../../src/ItemManager.cpp:783
437 #, c-format
438 msgid "Absorb: %d-%d"
439 msgstr "Absorbuje: %d-%d"
440
441 #: ../../../src/ItemManager.cpp:785
442 #, c-format
443 msgid "Absorb: %d"
444 msgstr "Absorbuje: %d"
445
446 #: ../../../src/ItemManager.cpp:825 ../../../src/MenuPowers.cpp:1206
447 #: ../../../src/MenuPowers.cpp:1209
448 #, c-format
449 msgid "Requires Level %d"
450 msgstr "Potřebuje Level %d"
451
452 #: ../../../src/ItemManager.cpp:836 ../../../src/MenuPowers.cpp:1198
453 #: ../../../src/MenuPowers.cpp:1200
454 #, c-format
455 msgid "Requires %s %d"
456 msgstr ""
457
458 #: ../../../src/ItemManager.cpp:847
459 #, c-format
460 msgid "Requires Class: %s"
461 msgstr ""
462
463 #: ../../../src/ItemManager.cpp:863 ../../../src/ItemManager.cpp:875
464 #, c-format
465 msgid "Buy Price: %d %s"
466 msgstr "Nákupní Cena: %d %s"
467
468 #: ../../../src/ItemManager.cpp:865 ../../../src/ItemManager.cpp:877
469 #, c-format
470 msgid "Buy Price: %d %s each"
471 msgstr "Nákupní Cena: %d %s každý"
472
473 #: ../../../src/ItemManager.cpp:885
474 #, c-format
475 msgid "Sell Price: %d %s"
476 msgstr "Prodejní Cena: %d %s"
477
478 #: ../../../src/ItemManager.cpp:887
479 #, c-format
480 msgid "Sell Price: %d %s each"
481 msgstr "Prodejní Cena: %d %s každý"
482
483 #: ../../../src/ItemManager.cpp:896
484 msgid "Set:"
485 msgstr ""
486
487 #: ../../../src/ItemManager.cpp:903
488 #, c-format
489 msgid "%d items:"
490 msgstr ""
491
492 #: ../../../src/ItemManager.cpp:915
493 #, c-format
494 msgid "Press [%s] to read"
495 msgstr ""
496
497 #: ../../../src/ItemManager.cpp:918
498 #, c-format
499 msgid "Press [%s] to use"
500 msgstr ""
501
502 #: ../../../src/MenuActionBar.cpp:239 ../../../src/MenuActionBar.cpp:246
503 #: ../../../src/MenuActionBar.cpp:249 ../../../src/MenuActionBar.cpp:255
504 #, c-format
505 msgid "Hotkey: %s"
506 msgstr ""
507
508 #: ../../../src/MenuActionBar.cpp:621
509 msgid "Not enough MP."
510 msgstr ""
511
512 #: ../../../src/MenuActiveEffects.cpp:124
513 #, c-format
514 msgid "x%d"
515 msgstr ""
516
517 #: ../../../src/MenuActiveEffects.cpp:219
518 msgid "Remaining:"
519 msgstr ""
520
521 #: ../../../src/MenuActiveEffects.cpp:225
522 #, c-format
523 msgid "x%d stacks"
524 msgstr ""
525
526 #: ../../../src/MenuCharacter.cpp:73 ../../../src/MenuCharacter.cpp:78
527 msgid "Name"
528 msgstr "Jméno"
529
530 #: ../../../src/MenuCharacter.cpp:74 ../../../src/MenuCharacter.cpp:79
531 msgid "Level"
532 msgstr ""
533
534 #: ../../../src/MenuCharacter.cpp:309
535 #, c-format
536 msgid "Available stat points: %d"
537 msgstr ""
538
539 #: ../../../src/MenuCharacter.cpp:353
540 #, c-format
541 msgid "Reduces the damage taken from \"%s\" elemental attacks."
542 msgstr ""
543
544 #: ../../../src/MenuCharacter.cpp:363 ../../../src/MenuManager.cpp:301
545 #, c-format
546 msgid "XP: %d"
547 msgstr ""
548
549 #: ../../../src/MenuCharacter.cpp:365
550 #, c-format
551 msgid "Next: %d"
552 msgstr "Další: %d"
553
554 #: ../../../src/MenuCharacter.cpp:371
555 #, c-format
556 msgid "base (%d), bonus (%d)"
557 msgstr "základní (%d), bonus (%d)"
558
559 #: ../../../src/MenuCharacter.cpp:379 ../../../src/MenuCharacter.cpp:393
560 msgid "Related stats:"
561 msgstr ""
562
563 #: ../../../src/MenuCharacter.cpp:419 ../../../src/MenuCharacter.cpp:443
564 #, c-format
565 msgid "Each level grants %d."
566 msgstr ""
567
568 #: ../../../src/MenuCharacter.cpp:423 ../../../src/MenuCharacter.cpp:447
569 #, c-format
570 msgid "Each point of %s grants %d."
571 msgstr ""
572
573 #: ../../../src/MenuConfig.cpp:122 ../../../src/MenuConfig.cpp:1171
574 msgid "Clear"
575 msgstr ""
576
577 #: ../../../src/MenuConfig.cpp:122 ../../../src/MenuConfig.cpp:1169
578 msgid "Assign:"
579 msgstr ""
580
581 #: ../../../src/MenuConfig.cpp:123 ../../../src/MenuConfig.cpp:245
135582 msgid "Defaults"
136583 msgstr "Původní"
137584
138 #: ../../../src/GameStateConfigBase.cpp:89
585 #: ../../../src/MenuConfig.cpp:123
139586 msgid "Reset ALL settings?"
140587 msgstr "Vrátit původní nastavení?"
141588
142 #: ../../../src/GameStateConfigBase.cpp:109 ../../../src/MenuNumPicker.cpp:49
589 #: ../../../src/MenuConfig.cpp:244 ../../../src/MenuNumPicker.cpp:49
143590 msgid "OK"
144591 msgstr ""
145592
146 #: ../../../src/GameStateConfigBase.cpp:111 ../../../src/GameStateNew.cpp:65
147 #: ../../../src/InputState.cpp:401
148 msgid "Cancel"
149 msgstr "Zrušit"
150
151 #: ../../../src/GameStateConfigBase.cpp:160
152 #: ../../../src/GameStateConfigDesktop.cpp:130
593 #: ../../../src/MenuConfig.cpp:248 ../../../src/MenuGameOver.cpp:72
594 msgid "Continue"
595 msgstr ""
596
597 #: ../../../src/MenuConfig.cpp:250
598 msgid "Save Game"
599 msgstr ""
600
601 #: ../../../src/MenuConfig.cpp:293
602 msgid "Default"
603 msgstr ""
604
605 #: ../../../src/MenuConfig.cpp:293
606 msgid ""
607 "Show all loot tooltips, except for those that would be obscured by the "
608 "player or an enemy. Temporarily show all loot tooltips with 'Alt'."
609 msgstr ""
610
611 #: ../../../src/MenuConfig.cpp:294
612 msgid "Show all"
613 msgstr ""
614
615 #: ../../../src/MenuConfig.cpp:294
616 msgid ""
617 "Always show loot tooltips. Temporarily hide all loot tooltips with 'Alt'."
618 msgstr ""
619
620 #: ../../../src/MenuConfig.cpp:295 ../../../src/MenuConfig.cpp:300
621 msgid "Hidden"
622 msgstr ""
623
624 #: ../../../src/MenuConfig.cpp:295
625 msgid ""
626 "Always hide loot tooltips, except for when a piece of loot is hovered with "
627 "the mouse cursor. Temporarily show all loot tooltips with 'Alt'."
628 msgstr ""
629
630 #: ../../../src/MenuConfig.cpp:298
631 msgid "Visible"
632 msgstr ""
633
634 #: ../../../src/MenuConfig.cpp:299
635 msgid "Visible (2x zoom)"
636 msgstr ""
637
638 #: ../../../src/MenuConfig.cpp:303
639 msgid ""
640 "Controls the type of warning to be activated when the player is below the "
641 "low health threshold."
642 msgstr ""
643
644 #: ../../../src/MenuConfig.cpp:304
645 msgid "- Display a message"
646 msgstr ""
647
648 #: ../../../src/MenuConfig.cpp:305
649 msgid "- Play a sound"
650 msgstr ""
651
652 #: ../../../src/MenuConfig.cpp:306
653 msgid "- Change the cursor"
654 msgstr ""
655
656 #: ../../../src/MenuConfig.cpp:308
657 msgid "Disabled"
658 msgstr ""
659
660 #: ../../../src/MenuConfig.cpp:309
661 msgid "All"
662 msgstr ""
663
664 #: ../../../src/MenuConfig.cpp:310
665 msgid "Message & Cursor"
666 msgstr ""
667
668 #: ../../../src/MenuConfig.cpp:311
669 msgid "Message & Sound"
670 msgstr ""
671
672 #: ../../../src/MenuConfig.cpp:312
673 msgid "Sound & Cursor"
674 msgstr ""
675
676 #: ../../../src/MenuConfig.cpp:313
677 msgid "Message"
678 msgstr ""
679
680 #: ../../../src/MenuConfig.cpp:314
681 msgid "Cursor"
682 msgstr ""
683
684 #: ../../../src/MenuConfig.cpp:315
685 msgid "Sound"
686 msgstr ""
687
688 #: ../../../src/MenuConfig.cpp:321
689 msgid ""
690 "When the player's health drops below the given threshold, the low health "
691 "notifications are triggered if one or more of them is enabled."
692 msgstr ""
693
694 #: ../../../src/MenuConfig.cpp:334 ../../../src/MenuConfig.cpp:1587
695 #: ../../../src/MenuGameOver.cpp:116
696 msgid "Exit"
697 msgstr "Konec"
698
699 #: ../../../src/MenuConfig.cpp:335
700 msgid "Video"
701 msgstr ""
702
703 #: ../../../src/MenuConfig.cpp:336
153704 msgid "Audio"
154705 msgstr ""
155706
156 #: ../../../src/GameStateConfigBase.cpp:161
157 #: ../../../src/GameStateConfigDesktop.cpp:131
707 #: ../../../src/MenuConfig.cpp:337
158708 msgid "Interface"
159709 msgstr ""
160710
161 #: ../../../src/GameStateConfigBase.cpp:162
162 #: ../../../src/GameStateConfigDesktop.cpp:134
711 #: ../../../src/MenuConfig.cpp:338
712 msgid "Input"
713 msgstr "Vstup"
714
715 #: ../../../src/MenuConfig.cpp:339
716 msgid "Keybindings"
717 msgstr "Nastavení kláves"
718
719 #: ../../../src/MenuConfig.cpp:340
163720 msgid "Mods"
164721 msgstr "Mody"
165722
166 #: ../../../src/GameStateConfigBase.cpp:249 ../../../src/MenuExit.cpp:72
723 #: ../../../src/MenuConfig.cpp:352
724 msgid "Paused"
725 msgstr ""
726
727 #: ../../../src/MenuConfig.cpp:355
728 msgid "Time Played"
729 msgstr ""
730
731 #: ../../../src/MenuConfig.cpp:361
732 msgid "Renderer"
733 msgstr ""
734
735 #: ../../../src/MenuConfig.cpp:362
736 msgid "Full Screen Mode"
737 msgstr "Mod plné obrazovky"
738
739 #: ../../../src/MenuConfig.cpp:363
740 msgid "Hardware surfaces"
741 msgstr "Hardwarové povrchy"
742
743 #: ../../../src/MenuConfig.cpp:364
744 msgid "V-Sync"
745 msgstr ""
746
747 #: ../../../src/MenuConfig.cpp:365
748 msgid "Texture Filtering"
749 msgstr ""
750
751 #: ../../../src/MenuConfig.cpp:366
752 msgid "DPI scaling"
753 msgstr ""
754
755 #: ../../../src/MenuConfig.cpp:367
756 msgid "Parallax Layers"
757 msgstr ""
758
759 #: ../../../src/MenuConfig.cpp:368
760 msgid "Allow changing gamma"
761 msgstr "Povolit změnu gammy"
762
763 #: ../../../src/MenuConfig.cpp:369
764 msgid "Gamma"
765 msgstr ""
766
767 #: ../../../src/MenuConfig.cpp:371
768 msgid "Sound Volume"
769 msgstr "Hlasitost Zvuku"
770
771 #: ../../../src/MenuConfig.cpp:372
167772 msgid "Music Volume"
168773 msgstr "Hlasitost Hudby"
169774
170 #: ../../../src/GameStateConfigBase.cpp:253 ../../../src/MenuExit.cpp:77
171 msgid "Sound Volume"
172 msgstr "Hlasitost Zvuku"
173
174 #: ../../../src/GameStateConfigBase.cpp:257
775 #: ../../../src/MenuConfig.cpp:374
175776 msgid "Language"
176777 msgstr "Jazyk"
177778
178 #: ../../../src/GameStateConfigBase.cpp:266
779 #: ../../../src/MenuConfig.cpp:375
179780 msgid "Show FPS"
180781 msgstr "Zobraz FPS"
181782
182 #: ../../../src/GameStateConfigBase.cpp:270
783 #: ../../../src/MenuConfig.cpp:376
784 msgid "Hardware mouse cursor"
785 msgstr ""
786
787 #: ../../../src/MenuConfig.cpp:377
183788 msgid "Colorblind Mode"
184789 msgstr ""
185790
186 #: ../../../src/GameStateConfigBase.cpp:274
187 msgid "Hardware mouse cursor"
188 msgstr ""
189
190 #: ../../../src/GameStateConfigBase.cpp:278
791 #: ../../../src/MenuConfig.cpp:378
191792 msgid "Developer Mode"
192793 msgstr ""
193794
194 #: ../../../src/GameStateConfigBase.cpp:282
795 #: ../../../src/MenuConfig.cpp:379
195796 msgid "Subtitles"
196797 msgstr ""
197798
198 #: ../../../src/GameStateConfigBase.cpp:286
199 msgid "Active Mods"
200 msgstr "Aktivní mody"
201
202 #: ../../../src/GameStateConfigBase.cpp:295
203 msgid "Available Mods"
204 msgstr "Mody k dispozici"
205
206 #: ../../../src/GameStateConfigBase.cpp:314
207 msgid "<< Disable"
208 msgstr "<< Zakázat"
209
210 #: ../../../src/GameStateConfigBase.cpp:320
211 msgid "Enable >>"
212 msgstr "Povolit >>"
213
214 #: ../../../src/GameStateConfigBase.cpp:873
215 msgid "Version:"
216 msgstr ""
217
218 #: ../../../src/GameStateConfigBase.cpp:878
219 msgid "Game:"
220 msgstr ""
221
222 #: ../../../src/GameStateConfigBase.cpp:883
223 msgid "Engine version:"
224 msgstr ""
225
226 #: ../../../src/GameStateConfigBase.cpp:891
227 msgid "Requires mods:"
228 msgstr ""
229
230 #: ../../../src/GameStateConfigDesktop.cpp:83
231 #: ../../../src/GameStateConfigDesktop.cpp:751
232 msgid "Clear"
233 msgstr ""
234
235 #: ../../../src/GameStateConfigDesktop.cpp:83
236 #: ../../../src/GameStateConfigDesktop.cpp:749
237 msgid "Assign:"
238 msgstr ""
239
240 #: ../../../src/GameStateConfigDesktop.cpp:128
241 msgid "Video"
242 msgstr ""
243
244 #: ../../../src/GameStateConfigDesktop.cpp:132
245 msgid "Input"
246 msgstr "Vstup"
247
248 #: ../../../src/GameStateConfigDesktop.cpp:133
249 msgid "Keybindings"
250 msgstr "Nastavení kláves"
251
252 #: ../../../src/GameStateConfigDesktop.cpp:188
799 #: ../../../src/MenuConfig.cpp:380
800 msgid "Loot tooltip visibility"
801 msgstr ""
802
803 #: ../../../src/MenuConfig.cpp:381
804 msgid "Mini-map mode"
805 msgstr ""
806
807 #: ../../../src/MenuConfig.cpp:382
808 msgid "Always show stat bar labels"
809 msgstr ""
810
811 #: ../../../src/MenuConfig.cpp:383
812 msgid "Allow stat bar auto-hiding"
813 msgstr ""
814
815 #: ../../../src/MenuConfig.cpp:384
816 msgid "Show combat text"
817 msgstr "Zobraz bojový text"
818
819 #: ../../../src/MenuConfig.cpp:385
820 msgid "Automatically equip items"
821 msgstr ""
822
823 #: ../../../src/MenuConfig.cpp:386
824 msgid "Show hidden entity markers"
825 msgstr ""
826
827 #: ../../../src/MenuConfig.cpp:387
828 msgid "Low health notification"
829 msgstr ""
830
831 #: ../../../src/MenuConfig.cpp:388
832 msgid "Low health threshold"
833 msgstr ""
834
835 #: ../../../src/MenuConfig.cpp:389
836 msgid "Show item comparison tooltips"
837 msgstr ""
838
839 #: ../../../src/MenuConfig.cpp:392 ../../../src/MenuMovementType.cpp:94
840 #: ../../../src/MenuMovementType.cpp:131
841 msgid "Joystick"
842 msgstr ""
843
844 #: ../../../src/MenuConfig.cpp:393
845 msgid "Move hero using mouse"
846 msgstr "Chůze pomocí myši"
847
848 #: ../../../src/MenuConfig.cpp:394
849 msgid "Mouse aim"
850 msgstr "Míření myší"
851
852 #: ../../../src/MenuConfig.cpp:395
853 msgid "Do not use mouse"
854 msgstr ""
855
856 #: ../../../src/MenuConfig.cpp:396
857 msgid "Swap mouse movement button"
858 msgstr ""
859
860 #: ../../../src/MenuConfig.cpp:397
861 msgid "Attack with mouse movement"
862 msgstr ""
863
864 #: ../../../src/MenuConfig.cpp:398
865 msgid "Joystick Deadzone"
866 msgstr ""
867
868 #: ../../../src/MenuConfig.cpp:408
869 #, c-format
870 msgid "Primary binding: %s"
871 msgstr ""
872
873 #: ../../../src/MenuConfig.cpp:409
874 #, c-format
875 msgid "Alternate binding: %s"
876 msgstr ""
877
878 #: ../../../src/MenuConfig.cpp:410
879 #, c-format
880 msgid "Joystick binding: %s"
881 msgstr ""
882
883 #: ../../../src/MenuConfig.cpp:511
253884 msgid ""
254885 "Will try to store surfaces in video memory versus system memory. The effect "
255886 "this has on performance depends on the renderer."
256887 msgstr ""
257888
258 #: ../../../src/GameStateConfigDesktop.cpp:189
889 #: ../../../src/MenuConfig.cpp:512
259890 msgid ""
260891 "Prevents screen tearing. Disable if you experience \"stuttering\" in "
261892 "windowed mode or input lag."
262893 msgstr ""
263894
264 #: ../../../src/GameStateConfigDesktop.cpp:190
895 #: ../../../src/MenuConfig.cpp:513
265896 msgid ""
266897 "When enabled, this uses the screen DPI in addition to the window dimensions "
267898 "to scale the rendering resolution. Otherwise, only the window dimensions are"
268899 " used."
269900 msgstr ""
270901
271 #: ../../../src/GameStateConfigDesktop.cpp:191
902 #: ../../../src/MenuConfig.cpp:514
272903 msgid ""
273904 "This enables parallax (non-tile) layers. Disabling this setting can improve "
274905 "performance in some cases."
275906 msgstr ""
276907
277 #: ../../../src/GameStateConfigDesktop.cpp:192
278 msgid "Experimental"
279 msgstr "Experimentální"
280
281 #: ../../../src/GameStateConfigDesktop.cpp:193
282 msgid "For handheld devices"
283 msgstr ""
284
285 #: ../../../src/GameStateConfigDesktop.cpp:211
286 msgid "Renderer"
287 msgstr ""
288
289 #: ../../../src/GameStateConfigDesktop.cpp:227
290 msgid "Full Screen Mode"
291 msgstr "Mod plné obrazovky"
292
293 #: ../../../src/GameStateConfigDesktop.cpp:231
294 msgid "Move hero using mouse"
295 msgstr "Chůze pomocí myši"
296
297 #: ../../../src/GameStateConfigDesktop.cpp:235
298 msgid "Hardware surfaces"
299 msgstr "Hardwarové povrchy"
300
301 #: ../../../src/GameStateConfigDesktop.cpp:239
302 msgid "V-Sync"
303 msgstr ""
304
305 #: ../../../src/GameStateConfigDesktop.cpp:243
306 msgid "Texture Filtering"
307 msgstr ""
308
309 #: ../../../src/GameStateConfigDesktop.cpp:247
310 msgid "DPI scaling"
311 msgstr ""
312
313 #: ../../../src/GameStateConfigDesktop.cpp:251
314 msgid "Parallax Layers"
315 msgstr ""
316
317 #: ../../../src/GameStateConfigDesktop.cpp:255
318 msgid "Allow changing gamma"
319 msgstr "Povolit změnu gammy"
320
321 #: ../../../src/GameStateConfigDesktop.cpp:259
322 msgid "Gamma"
323 msgstr ""
324
325 #: ../../../src/GameStateConfigDesktop.cpp:263
326 msgid "Use joystick"
327 msgstr "Použít joystick"
328
329 #: ../../../src/GameStateConfigDesktop.cpp:267
330 msgid "Joystick"
331 msgstr ""
332
333 #: ../../../src/GameStateConfigDesktop.cpp:283
334 msgid "Mouse aim"
335 msgstr "Míření myší"
336
337 #: ../../../src/GameStateConfigDesktop.cpp:287
338 msgid "Do not use mouse"
339 msgstr ""
340
341 #: ../../../src/GameStateConfigDesktop.cpp:291
342 msgid "Joystick Deadzone"
343 msgstr ""
344
345 #: ../../../src/GameState.cpp:37 ../../../src/GameState.cpp:58
346 msgid "Loading..."
347 msgstr "Nahrávám..."
348
349 #: ../../../src/GameStateLoad.cpp:88 ../../../src/GameStateLoad.cpp:101
350 msgid "Delete Save"
351 msgstr "Vymazat uložené pozice"
352
353 #: ../../../src/GameStateLoad.cpp:88
354 msgid "Delete this save?"
355 msgstr "Vymazat tuto pozici?"
356
357 #: ../../../src/GameStateLoad.cpp:90
358 msgid "Exit to Title"
359 msgstr "Ukončit do menu"
360
361 #: ../../../src/GameStateLoad.cpp:93
362 msgid "New Game"
363 msgstr "Nová Hra"
364
365 #: ../../../src/GameStateLoad.cpp:97 ../../../src/GameStateLoad.cpp:600
366 msgid "Choose a Slot"
367 msgstr "Vyber si pozici"
368
369 #: ../../../src/GameStateLoad.cpp:573 ../../../src/GameStateLoad.cpp:594
370 msgid "Enable a story mod to continue"
371 msgstr "Pro pokračování povol příběhový mod"
372
373 #: ../../../src/GameStateLoad.cpp:589
374 msgid "Load Game"
375 msgstr "Nahrát Hru"
376
377 #: ../../../src/GameStateLoad.cpp:695
378 msgid "Entering game world..."
379 msgstr "Vstupuji do herního světa..."
380
381 #: ../../../src/GameStateLoad.cpp:698
382 msgid "Loading saved game..."
383 msgstr "Nahrávám uloženou pozici..."
384
385 #: ../../../src/GameStateLoad.cpp:731
386 msgid "Invalid save"
387 msgstr ""
388
389 #: ../../../src/GameStateLoad.cpp:755 ../../../src/ItemManager.cpp:747
390 #: ../../../src/MenuPowers.cpp:778 ../../../src/MenuPowers.cpp:1144
391 #: ../../../src/MenuPowers.cpp:1542
392 #, c-format
393 msgid "Level %d"
394 msgstr ""
395
396 #: ../../../src/GameStateNew.cpp:68
397 msgid "Create"
398 msgstr "Vytvořit"
399
400 #: ../../../src/GameStateNew.cpp:76
401 msgid "Randomize"
402 msgstr ""
403
404 #: ../../../src/GameStateNew.cpp:92
405 msgid "Choose a Portrait"
406 msgstr "Zvol si Portrét"
407
408 #: ../../../src/GameStateNew.cpp:96
409 msgid "Choose a Name"
410 msgstr "Zvol své Jméno"
411
412 #: ../../../src/GameStateNew.cpp:100
413 msgid "Permadeath?"
414 msgstr "Pernamentní smrt?"
415
416 #: ../../../src/GameStateNew.cpp:104
417 msgid "Choose a Class"
418 msgstr "Zvol své povolání"
419
420 #: ../../../src/GameStateTitle.cpp:108
421 msgid "Play Game"
422 msgstr "Hrát Hru"
423
424 #: ../../../src/GameStateTitle.cpp:111
425 msgid "Enable a core mod to continue"
426 msgstr "Pro pokračování povol mod jádra"
427
428 #: ../../../src/GameStateTitle.cpp:115
429 msgid "Configuration"
430 msgstr "Nastavení"
431
432 #: ../../../src/GameStateTitle.cpp:118
433 msgid "Credits"
434 msgstr ""
435
436 #: ../../../src/GameStateTitle.cpp:121
437 msgid "Exit Game"
438 msgstr "Ukončit Hru"
439
440 #: ../../../src/InputState.cpp:402
441 msgid "Accept"
442 msgstr "Příjmout"
443
444 #: ../../../src/InputState.cpp:403 ../../../src/SDLInputState.cpp:607
445 msgid "Up"
446 msgstr "Nahoru"
447
448 #: ../../../src/InputState.cpp:404 ../../../src/SDLInputState.cpp:585
449 msgid "Down"
450 msgstr "Dolů"
451
452 #: ../../../src/InputState.cpp:405 ../../../src/SDLInputState.cpp:592
453 msgid "Left"
454 msgstr "Doleva"
455
456 #: ../../../src/InputState.cpp:406 ../../../src/SDLInputState.cpp:602
457 msgid "Right"
458 msgstr "Doprava"
459
460 #: ../../../src/InputState.cpp:407
461 msgid "Bar1"
462 msgstr ""
463
464 #: ../../../src/InputState.cpp:408
465 msgid "Bar2"
466 msgstr ""
467
468 #: ../../../src/InputState.cpp:409
469 msgid "Bar3"
470 msgstr ""
471
472 #: ../../../src/InputState.cpp:410
473 msgid "Bar4"
474 msgstr ""
475
476 #: ../../../src/InputState.cpp:411
477 msgid "Bar5"
478 msgstr ""
479
480 #: ../../../src/InputState.cpp:412
481 msgid "Bar6"
482 msgstr ""
483
484 #: ../../../src/InputState.cpp:413
485 msgid "Bar7"
486 msgstr ""
487
488 #: ../../../src/InputState.cpp:414
489 msgid "Bar8"
490 msgstr ""
491
492 #: ../../../src/InputState.cpp:415
493 msgid "Bar9"
494 msgstr ""
495
496 #: ../../../src/InputState.cpp:416
497 msgid "Bar0"
498 msgstr ""
499
500 #: ../../../src/InputState.cpp:417 ../../../src/MenuActionBar.cpp:83
501 #: ../../../src/MenuCharacter.cpp:54
502 msgid "Character"
503 msgstr "Postava"
504
505 #: ../../../src/InputState.cpp:418 ../../../src/MenuActionBar.cpp:84
506 #: ../../../src/MenuInventory.cpp:137 ../../../src/MenuVendor.cpp:57
507 msgid "Inventory"
508 msgstr "Inventář"
509
510 #: ../../../src/InputState.cpp:419 ../../../src/MenuActionBar.cpp:85
511 #: ../../../src/MenuPowers.cpp:168
512 msgid "Powers"
513 msgstr "Schopnosti"
514
515 #: ../../../src/InputState.cpp:420 ../../../src/MenuActionBar.cpp:86
516 #: ../../../src/MenuLog.cpp:72
517 msgid "Log"
518 msgstr "Deník"
519
520 #: ../../../src/InputState.cpp:421
521 msgid "Main1"
522 msgstr ""
523
524 #: ../../../src/InputState.cpp:422
525 msgid "Main2"
526 msgstr ""
527
528 #: ../../../src/InputState.cpp:423
529 msgid "Ctrl"
530 msgstr ""
531
532 #: ../../../src/InputState.cpp:424
533 msgid "Shift"
534 msgstr ""
535
536 #: ../../../src/InputState.cpp:425
537 msgid "Alt"
538 msgstr ""
539
540 #: ../../../src/InputState.cpp:426 ../../../src/SDLInputState.cpp:584
541 msgid "Delete"
542 msgstr ""
543
544 #: ../../../src/InputState.cpp:427
545 msgid "ActionBar Accept"
546 msgstr ""
547
548 #: ../../../src/InputState.cpp:428
549 msgid "ActionBar Left"
550 msgstr ""
551
552 #: ../../../src/InputState.cpp:429
553 msgid "ActionBar Right"
554 msgstr ""
555
556 #: ../../../src/InputState.cpp:430
557 msgid "ActionBar Use"
558 msgstr ""
559
560 #: ../../../src/InputState.cpp:431
561 msgid "Developer Menu"
562 msgstr ""
563
564 #: ../../../src/InputState.cpp:433
565 msgid "Left Mouse"
566 msgstr ""
567
568 #: ../../../src/InputState.cpp:434
569 msgid "Middle Mouse"
570 msgstr ""
571
572 #: ../../../src/InputState.cpp:435
573 msgid "Right Mouse"
574 msgstr ""
575
576 #: ../../../src/InputState.cpp:436
577 msgid "Wheel Up"
578 msgstr ""
579
580 #: ../../../src/InputState.cpp:437
581 msgid "Wheel Down"
582 msgstr ""
583
584 #: ../../../src/InputState.cpp:438
585 msgid "Mouse X1"
586 msgstr ""
587
588 #: ../../../src/InputState.cpp:439
589 msgid "Mouse X2"
590 msgstr ""
591
592 #: ../../../src/ItemManager.cpp:450 ../../../src/ItemManager.cpp:453
593 msgid "Unknown Item"
594 msgstr ""
595
596 #: ../../../src/ItemManager.cpp:648 ../../../src/MenuPowers.cpp:887
597 #, c-format
598 msgid "%d%% Speed"
599 msgstr ""
600
601 #: ../../../src/ItemManager.cpp:652 ../../../src/MenuPowers.cpp:890
602 #, c-format
603 msgid "%d%% Attack Speed"
604 msgstr ""
605
606 #: ../../../src/ItemManager.cpp:674 ../../../src/MenuCharacter.cpp:354
607 #: ../../../src/MenuPowers.cpp:833
608 #, c-format
609 msgid "Resistance (%s)"
610 msgstr ""
611
612 #: ../../../src/ItemManager.cpp:684
613 #, c-format
614 msgid "Requires %s"
615 msgstr ""
616
617 #: ../../../src/ItemManager.cpp:733
618 msgid "Quest Item"
619 msgstr ""
620
621 #: ../../../src/ItemManager.cpp:760
622 #, c-format
623 msgid "Quality: %s"
624 msgstr ""
625
626 #: ../../../src/ItemManager.cpp:785
627 #, c-format
628 msgid "Absorb: %d-%d"
629 msgstr "Absorbuje: %d-%d"
630
631 #: ../../../src/ItemManager.cpp:787
632 #, c-format
633 msgid "Absorb: %d"
634 msgstr "Absorbuje: %d"
635
636 #: ../../../src/ItemManager.cpp:827 ../../../src/MenuPowers.cpp:1131
637 #: ../../../src/MenuPowers.cpp:1134
638 #, c-format
639 msgid "Requires Level %d"
640 msgstr "Potřebuje Level %d"
641
642 #: ../../../src/ItemManager.cpp:838 ../../../src/MenuPowers.cpp:1123
643 #: ../../../src/MenuPowers.cpp:1125
644 #, c-format
645 msgid "Requires %s %d"
646 msgstr ""
647
648 #: ../../../src/ItemManager.cpp:849
649 #, c-format
650 msgid "Requires Class: %s"
651 msgstr ""
652
653 #: ../../../src/ItemManager.cpp:864 ../../../src/ItemManager.cpp:876
654 #, c-format
655 msgid "Buy Price: %d %s"
656 msgstr "Nákupní Cena: %d %s"
657
658 #: ../../../src/ItemManager.cpp:866 ../../../src/ItemManager.cpp:878
659 #, c-format
660 msgid "Buy Price: %d %s each"
661 msgstr "Nákupní Cena: %d %s každý"
662
663 #: ../../../src/ItemManager.cpp:886
664 #, c-format
665 msgid "Sell Price: %d %s"
666 msgstr "Prodejní Cena: %d %s"
667
668 #: ../../../src/ItemManager.cpp:888
669 #, c-format
670 msgid "Sell Price: %d %s each"
671 msgstr "Prodejní Cena: %d %s každý"
672
673 #: ../../../src/ItemManager.cpp:897
674 msgid "Set:"
675 msgstr ""
676
677 #: ../../../src/ItemManager.cpp:904
678 #, c-format
679 msgid "%d items:"
680 msgstr ""
681
682 #: ../../../src/ItemManager.cpp:917
683 #, c-format
684 msgid "Press [%s] to use"
685 msgstr ""
686
687 #: ../../../src/ItemManager.cpp:920
688 #, c-format
689 msgid "Press [%s] to read"
690 msgstr ""
691
692 #: ../../../src/MenuActionBar.cpp:87
693 msgid "Loot tooltip visibility"
694 msgstr ""
695
696 #: ../../../src/MenuActionBar.cpp:88
697 msgid "Mini-map mode"
698 msgstr ""
699
700 #: ../../../src/MenuActionBar.cpp:89
701 msgid "Always show stat bar labels"
702 msgstr ""
703
704 #: ../../../src/MenuActionBar.cpp:90
705 msgid "Show combat text"
706 msgstr "Zobraz bojový text"
707
708 #: ../../../src/MenuActionBar.cpp:254 ../../../src/MenuActionBar.cpp:261
709 #: ../../../src/MenuActionBar.cpp:264 ../../../src/MenuActionBar.cpp:271
710 #, c-format
711 msgid "Hotkey: %s"
712 msgstr ""
713
714 #: ../../../src/MenuActionBar.cpp:474
715 #, c-format
716 msgid "Default. Temporarily show all loot tooltips with '%s'."
717 msgstr ""
718
719 #: ../../../src/MenuActionBar.cpp:476
720 #, c-format
721 msgid "Show All. Temporarily hide all loot tooltips with '%s'."
722 msgstr ""
723
724 #: ../../../src/MenuActionBar.cpp:478
725 #, c-format
726 msgid "Hide All. Temporarily show all loot tooltips with '%s'."
727 msgstr ""
728
729 #: ../../../src/MenuActionBar.cpp:482
730 msgid "Visible"
731 msgstr ""
732
733 #: ../../../src/MenuActionBar.cpp:484
734 msgid "Visible (2x zoom)"
735 msgstr ""
736
737 #: ../../../src/MenuActionBar.cpp:486
738 msgid "Hidden"
739 msgstr ""
740
741 #: ../../../src/MenuActionBar.cpp:490 ../../../src/MenuActionBar.cpp:496
742 msgid "Enabled"
743 msgstr ""
744
745 #: ../../../src/MenuActionBar.cpp:492 ../../../src/MenuActionBar.cpp:498
746 msgid "Disabled"
747 msgstr ""
748
749 #: ../../../src/MenuActionBar.cpp:657
750 msgid "Not enough MP."
751 msgstr ""
752
753 #: ../../../src/MenuActiveEffects.cpp:124
754 #, c-format
755 msgid "x%d"
756 msgstr ""
757
758 #: ../../../src/MenuActiveEffects.cpp:219
759 msgid "Remaining:"
760 msgstr ""
761
762 #: ../../../src/MenuActiveEffects.cpp:225
763 #, c-format
764 msgid "x%d stacks"
765 msgstr ""
766
767 #: ../../../src/MenuCharacter.cpp:73 ../../../src/MenuCharacter.cpp:78
768 msgid "Name"
769 msgstr "Jméno"
770
771 #: ../../../src/MenuCharacter.cpp:74 ../../../src/MenuCharacter.cpp:79
772 msgid "Level"
773 msgstr ""
774
775 #: ../../../src/MenuCharacter.cpp:310
776 #, c-format
777 msgid "%d unspent stat point"
778 msgstr ""
779
780 #: ../../../src/MenuCharacter.cpp:313
781 #, c-format
782 msgid "%d unspent stat points"
783 msgstr ""
784
785 #: ../../../src/MenuCharacter.cpp:355
786 #, c-format
787 msgid "Reduces the damage taken from \"%s\" elemental attacks."
788 msgstr ""
789
790 #: ../../../src/MenuCharacter.cpp:365 ../../../src/MenuManager.cpp:283
791 #, c-format
792 msgid "XP: %d"
793 msgstr ""
794
795 #: ../../../src/MenuCharacter.cpp:367
796 #, c-format
797 msgid "Next: %d"
798 msgstr "Další: %d"
799
800 #: ../../../src/MenuCharacter.cpp:373
801 #, c-format
802 msgid "base (%d), bonus (%d)"
803 msgstr "základní (%d), bonus (%d)"
804
805 #: ../../../src/MenuCharacter.cpp:381 ../../../src/MenuCharacter.cpp:395
806 msgid "Related stats:"
807 msgstr ""
808
809 #: ../../../src/MenuCharacter.cpp:421 ../../../src/MenuCharacter.cpp:445
810 #, c-format
811 msgid "Each level grants %d."
812 msgstr ""
813
814 #: ../../../src/MenuCharacter.cpp:425 ../../../src/MenuCharacter.cpp:449
815 #, c-format
816 msgid "Each point of %s grants %d."
817 msgstr ""
818
819 #: ../../../src/MenuDevConsole.cpp:63
908 #: ../../../src/MenuConfig.cpp:515
909 msgid ""
910 "Enables the below setting that controls the screen gamma level. The behavior"
911 " of the gamma setting can vary between platforms."
912 msgstr ""
913
914 #: ../../../src/MenuConfig.cpp:516
915 msgid ""
916 "Provides additional text for information that is primarily conveyed through "
917 "color."
918 msgstr ""
919
920 #: ../../../src/MenuConfig.cpp:517
921 msgid ""
922 "Some mods will automatically hide the stat bars when they are inactive. "
923 "Disabling this option will keep them displayed at all times."
924 msgstr ""
925
926 #: ../../../src/MenuConfig.cpp:518
927 msgid ""
928 "When enabled, empty equipment slots will be filled with applicable items "
929 "when they are obtained."
930 msgstr ""
931
932 #: ../../../src/MenuConfig.cpp:519
933 msgid ""
934 "Shows a marker above enemies, allies, and the player when they are obscured "
935 "by tall objects."
936 msgstr ""
937
938 #: ../../../src/MenuConfig.cpp:520
939 msgid ""
940 "When enabled, tooltips for equipped items of the same type are shown next to"
941 " standard item tooltips."
942 msgstr ""
943
944 #: ../../../src/MenuConfig.cpp:521
945 msgid ""
946 "This allows the game to be controlled entirely with the keyboard (or "
947 "joystick)."
948 msgstr ""
949
950 #: ../../../src/MenuConfig.cpp:522
951 msgid ""
952 "When 'Move hero using mouse' is enabled, this setting controls if 'Main1' or"
953 " 'Main2' is used to move the hero. If enabled, 'Main2' will move the hero "
954 "instead of 'Main1'."
955 msgstr ""
956
957 #: ../../../src/MenuConfig.cpp:523
958 msgid ""
959 "When 'Move hero using mouse' is enabled, this setting controls if the Power "
960 "assigned to the movement button can be used by targeting an enemy. If this "
961 "setting is disabled, it is required to use 'Shift' to access the Power "
962 "assigned to the movement button."
963 msgstr ""
964
965 #: ../../../src/MenuConfig.cpp:524
966 msgid ""
967 "The player's attacks will be aimed in the direction of the mouse cursor when"
968 " this is enabled."
969 msgstr ""
970
971 #: ../../../src/MenuConfig.cpp:575
972 msgid "Active Mods"
973 msgstr "Aktivní mody"
974
975 #: ../../../src/MenuConfig.cpp:584
976 msgid "Available Mods"
977 msgstr "Mody k dispozici"
978
979 #: ../../../src/MenuConfig.cpp:603
980 msgid "<< Disable"
981 msgstr "<< Zakázat"
982
983 #: ../../../src/MenuConfig.cpp:609
984 msgid "Enable >>"
985 msgstr "Povolit >>"
986
987 #: ../../../src/MenuConfig.cpp:1444
988 msgid "Version:"
989 msgstr ""
990
991 #: ../../../src/MenuConfig.cpp:1449
992 msgid "Game:"
993 msgstr ""
994
995 #: ../../../src/MenuConfig.cpp:1454
996 msgid "Engine version:"
997 msgstr ""
998
999 #: ../../../src/MenuConfig.cpp:1462
1000 msgid "Requires mods:"
1001 msgstr ""
1002
1003 #: ../../../src/MenuConfig.cpp:1570 ../../../src/SDLInputState.cpp:748
1004 msgid "(none)"
1005 msgstr ""
1006
1007 #: ../../../src/MenuConfig.cpp:1587 ../../../src/MenuGameOver.cpp:73
1008 msgid "Save & Exit"
1009 msgstr ""
1010
1011 #: ../../../src/MenuDevConsole.cpp:65
8201012 msgid "Execute"
8211013 msgstr ""
8221014
823 #: ../../../src/MenuDevConsole.cpp:101 ../../../src/MenuDevConsole.cpp:151
1015 #: ../../../src/MenuDevConsole.cpp:103 ../../../src/MenuDevConsole.cpp:153
8241016 msgid "Developer Console"
8251017 msgstr ""
8261018
827 #: ../../../src/MenuDevConsole.cpp:141
1019 #: ../../../src/MenuDevConsole.cpp:143
8281020 #, c-format
8291021 msgid "Use '%s' to inspect with the cursor."
8301022 msgstr ""
8311023
832 #: ../../../src/MenuDevConsole.cpp:146
1024 #: ../../../src/MenuDevConsole.cpp:148
8331025 msgid "Arguments with spaces should be enclosed with double quotes. Example:"
8341026 msgstr ""
8351027
836 #: ../../../src/MenuDevConsole.cpp:147
1028 #: ../../../src/MenuDevConsole.cpp:149
8371029 msgid "Type 'help' to get a list of commands."
8381030 msgstr ""
8391031
840 #: ../../../src/MenuDevConsole.cpp:209 ../../../src/MenuDevConsole.cpp:213
1032 #: ../../../src/MenuDevConsole.cpp:211 ../../../src/MenuDevConsole.cpp:215
8411033 msgid "px"
8421034 msgstr ""
8431035
844 #: ../../../src/MenuDevConsole.cpp:224
1036 #: ../../../src/MenuDevConsole.cpp:226
8451037 msgid "Distance"
8461038 msgstr ""
8471039
848 #: ../../../src/MenuDevConsole.cpp:239 ../../../src/MenuDevConsole.cpp:286
1040 #: ../../../src/MenuDevConsole.cpp:241 ../../../src/MenuDevConsole.cpp:289
1041 #: ../../../src/MenuDevConsole.cpp:303
8491042 msgid "Entity"
8501043 msgstr ""
8511044
852 #: ../../../src/MenuDevConsole.cpp:261 ../../../src/MenuDevConsole.cpp:268
1045 #: ../../../src/MenuDevConsole.cpp:263 ../../../src/MenuDevConsole.cpp:270
8531046 msgid "none"
8541047 msgstr ""
8551048
856 #: ../../../src/MenuDevConsole.cpp:262 ../../../src/MenuDevConsole.cpp:264
1049 #: ../../../src/MenuDevConsole.cpp:264 ../../../src/MenuDevConsole.cpp:266
8571050 msgid "wall"
8581051 msgstr ""
8591052
860 #: ../../../src/MenuDevConsole.cpp:263 ../../../src/MenuDevConsole.cpp:265
1053 #: ../../../src/MenuDevConsole.cpp:265 ../../../src/MenuDevConsole.cpp:267
8611054 msgid "short wall / pit"
8621055 msgstr ""
8631056
864 #: ../../../src/MenuDevConsole.cpp:266
1057 #: ../../../src/MenuDevConsole.cpp:268
8651058 msgid "entity"
8661059 msgstr ""
8671060
868 #: ../../../src/MenuDevConsole.cpp:267
1061 #: ../../../src/MenuDevConsole.cpp:269
8691062 msgid "entity, ally"
8701063 msgstr ""
8711064
872 #: ../../../src/MenuDevConsole.cpp:274
1065 #: ../../../src/MenuDevConsole.cpp:276
8731066 msgid "Tile"
8741067 msgstr ""
8751068
876 #: ../../../src/MenuDevConsole.cpp:360
1069 #: ../../../src/MenuDevConsole.cpp:377
8771070 msgid "adds a power to the action bar"
8781071 msgstr ""
8791072
880 #: ../../../src/MenuDevConsole.cpp:361
1073 #: ../../../src/MenuDevConsole.cpp:378
8811074 msgid "turns on/off the display of the FPS counter"
8821075 msgstr ""
8831076
884 #: ../../../src/MenuDevConsole.cpp:362
1077 #: ../../../src/MenuDevConsole.cpp:379
8851078 msgid "turns on/off all of the HUD elements"
8861079 msgstr ""
8871080
888 #: ../../../src/MenuDevConsole.cpp:363
1081 #: ../../../src/MenuDevConsole.cpp:380
8891082 msgid "turns on/off the developer hud"
8901083 msgstr ""
8911084
892 #: ../../../src/MenuDevConsole.cpp:364
1085 #: ../../../src/MenuDevConsole.cpp:381
8931086 msgid ""
8941087 "Prints a list of powers that match a search term. No search term will list "
8951088 "all items"
8961089 msgstr ""
8971090
898 #: ../../../src/MenuDevConsole.cpp:365
1091 #: ../../../src/MenuDevConsole.cpp:382
8991092 msgid "Prints out all the map filenames located in the \"maps/\" directory."
9001093 msgstr ""
9011094
902 #: ../../../src/MenuDevConsole.cpp:366
1095 #: ../../../src/MenuDevConsole.cpp:383
9031096 msgid ""
9041097 "Prints out the active campaign statuses that match a search term. No search "
9051098 "term will list all active statuses"
9061099 msgstr ""
9071100
908 #: ../../../src/MenuDevConsole.cpp:367
1101 #: ../../../src/MenuDevConsole.cpp:384
9091102 msgid ""
9101103 "Prints a list of items that match a search term. No search term will list "
9111104 "all items"
9121105 msgstr ""
9131106
914 #: ../../../src/MenuDevConsole.cpp:368
1107 #: ../../../src/MenuDevConsole.cpp:385
9151108 msgid ""
9161109 "parses a series of event components and executes them as a single event"
9171110 msgstr ""
9181111
919 #: ../../../src/MenuDevConsole.cpp:369
1112 #: ../../../src/MenuDevConsole.cpp:386
9201113 msgid "clears the command history"
9211114 msgstr ""
9221115
923 #: ../../../src/MenuDevConsole.cpp:370
1116 #: ../../../src/MenuDevConsole.cpp:387
9241117 msgid "displays this text"
9251118 msgstr ""
9261119
927 #: ../../../src/MenuDevConsole.cpp:377
1120 #: ../../../src/MenuDevConsole.cpp:394
9281121 msgid "Toggled the developer hud"
9291122 msgstr ""
9301123
931 #: ../../../src/MenuDevConsole.cpp:381
1124 #: ../../../src/MenuDevConsole.cpp:398
9321125 msgid "Toggled the hud"
9331126 msgstr ""
9341127
935 #: ../../../src/MenuDevConsole.cpp:385
1128 #: ../../../src/MenuDevConsole.cpp:402
9361129 msgid "Toggled the FPS counter"
9371130 msgstr ""
9381131
939 #: ../../../src/MenuDevConsole.cpp:534
1132 #: ../../../src/MenuDevConsole.cpp:552
9401133 msgid "ERROR: Incorrect number of arguments"
9411134 msgstr ""
9421135
943 #: ../../../src/MenuDevConsole.cpp:536 ../../../src/MenuDevConsole.cpp:564
1136 #: ../../../src/MenuDevConsole.cpp:554 ../../../src/MenuDevConsole.cpp:582
9441137 msgid "HINT:"
9451138 msgstr ""
9461139
947 #: ../../../src/MenuDevConsole.cpp:536
1140 #: ../../../src/MenuDevConsole.cpp:554
9481141 msgid "<id>"
9491142 msgstr ""
9501143
951 #: ../../../src/MenuDevConsole.cpp:552
1144 #: ../../../src/MenuDevConsole.cpp:570
9521145 #, c-format
9531146 msgid "ERROR: '%s' is not a valid event key"
9541147 msgstr ""
9551148
956 #: ../../../src/MenuDevConsole.cpp:562
1149 #: ../../../src/MenuDevConsole.cpp:580
9571150 msgid "ERROR: Too few arguments"
9581151 msgstr ""
9591152
960 #: ../../../src/MenuDevConsole.cpp:564
1153 #: ../../../src/MenuDevConsole.cpp:582
9611154 msgid "<key>=<val> <key>=<val> ..."
9621155 msgstr ""
9631156
964 #: ../../../src/MenuDevConsole.cpp:569
1157 #: ../../../src/MenuDevConsole.cpp:587
9651158 msgid "ERROR: Unknown command"
9661159 msgstr ""
9671160
968 #: ../../../src/MenuDevConsole.cpp:571
1161 #: ../../../src/MenuDevConsole.cpp:589
9691162 msgid "HINT: Type help"
9701163 msgstr ""
9711164
972 #: ../../../src/MenuEnemy.cpp:138
1165 #: ../../../src/MenuEnemy.cpp:162
9731166 #, c-format
9741167 msgid "%s level %d"
9751168 msgstr ""
9761169
977 #: ../../../src/MenuEnemy.cpp:162
1170 #: ../../../src/MenuEnemy.cpp:186
9781171 msgid "Dead"
9791172 msgstr "Mrtvý"
9801173
981 #: ../../../src/MenuEnemy.cpp:164
1174 #: ../../../src/MenuEnemy.cpp:188
9821175 msgid "Destroyed"
9831176 msgstr ""
9841177
985 #: ../../../src/MenuExit.cpp:85 ../../../src/MenuExit.cpp:139
986 msgid "Paused"
987 msgstr ""
988
989 #: ../../../src/MenuExit.cpp:91
990 msgid "Save & Exit"
991 msgstr ""
992
993 #: ../../../src/MenuExit.cpp:92
994 msgid "Exit"
995 msgstr "Konec"
996
997 #: ../../../src/MenuExit.cpp:96
998 msgid "Continue"
999 msgstr ""
1000
1001 #: ../../../src/MenuInventory.cpp:73
1002 msgid "Automatically equip items"
1003 msgstr ""
1004
1005 #: ../../../src/MenuInventory.cpp:188
1178 #: ../../../src/MenuGameOver.cpp:69
1179 msgid "Game Over"
1180 msgstr ""
1181
1182 #: ../../../src/MenuInventory.cpp:178
10061183 #, c-format
10071184 msgid "Lost %d%% of %s."
10081185 msgstr ""
10091186
1010 #: ../../../src/MenuInventory.cpp:195
1187 #: ../../../src/MenuInventory.cpp:185
10111188 #, c-format
10121189 msgid "Lost %d%% of total XP."
10131190 msgstr ""
10141191
1015 #: ../../../src/MenuInventory.cpp:200
1192 #: ../../../src/MenuInventory.cpp:190
10161193 #, c-format
10171194 msgid "Lost %d%% of current level XP."
10181195 msgstr ""
10191196
1020 #: ../../../src/MenuInventory.cpp:226
1197 #: ../../../src/MenuInventory.cpp:216
10211198 #, c-format
10221199 msgid "Lost %s."
10231200 msgstr ""
10241201
1025 #: ../../../src/MenuInventory.cpp:274 ../../../src/MenuStash.cpp:146
1202 #: ../../../src/MenuInventory.cpp:258 ../../../src/MenuStash.cpp:276
10261203 #, c-format
10271204 msgid "%d %s"
10281205 msgstr ""
10291206
1030 #: ../../../src/MenuInventory.cpp:317
1207 #: ../../../src/MenuInventory.cpp:301
10311208 msgid "Pick up item(s):"
10321209 msgstr ""
10331210
1034 #: ../../../src/MenuInventory.cpp:318
1211 #: ../../../src/MenuInventory.cpp:302
10351212 msgid "Use or equip item:"
10361213 msgstr ""
10371214
1038 #: ../../../src/MenuInventory.cpp:319
1215 #: ../../../src/MenuInventory.cpp:303
10391216 #, c-format
10401217 msgid "%s modifiers"
10411218 msgstr ""
10421219
1043 #: ../../../src/MenuInventory.cpp:320
1220 #: ../../../src/MenuInventory.cpp:304
10441221 msgid "Select a quantity of item:"
10451222 msgstr ""
10461223
1047 #: ../../../src/MenuInventory.cpp:323
1224 #: ../../../src/MenuInventory.cpp:307
10481225 msgid "Stash item stack:"
10491226 msgstr ""
10501227
1051 #: ../../../src/MenuInventory.cpp:325
1228 #: ../../../src/MenuInventory.cpp:309
10521229 msgid "Sell item stack:"
10531230 msgstr ""
10541231
1055 #: ../../../src/MenuInventory.cpp:592
1232 #: ../../../src/MenuInventory.cpp:576
10561233 msgid "You don't have enough of the required item."
10571234 msgstr ""
10581235
1059 #: ../../../src/MenuInventory.cpp:599
1236 #: ../../../src/MenuInventory.cpp:588
10601237 msgid "You can't use this item right now."
10611238 msgstr ""
10621239
1063 #: ../../../src/MenuInventory.cpp:611
1240 #: ../../../src/MenuInventory.cpp:600
10641241 msgid "This item can only be used from the action bar."
10651242 msgstr "Tento předmět může být použit pouze z akčního menu"
10661243
1067 #: ../../../src/MenuInventory.cpp:729
1244 #: ../../../src/MenuInventory.cpp:718
10681245 msgid "Inventory is full."
10691246 msgstr "Inventář je plný."
10701247
1071 #: ../../../src/MenuInventory.cpp:849
1248 #: ../../../src/MenuInventory.cpp:843
10721249 #, c-format
10731250 msgid "Not enough %s."
10741251 msgstr ""
10751252
1076 #: ../../../src/MenuInventory.cpp:869 ../../../src/MenuInventory.cpp:876
1253 #: ../../../src/MenuInventory.cpp:863 ../../../src/MenuInventory.cpp:870
10771254 msgid "This item can not be sold."
10781255 msgstr ""
10791256
10851262 msgid "Quests"
10861263 msgstr "Úkoly"
10871264
1088 #: ../../../src/MenuManager.cpp:286
1265 #: ../../../src/MenuManager.cpp:305
10891266 #, c-format
10901267 msgid "XP: %d/%d"
10911268 msgstr ""
10921269
1093 #: ../../../src/MenuManager.cpp:827
1270 #: ../../../src/MenuManager.cpp:875
10941271 msgid "This item can not be dropped."
1272 msgstr ""
1273
1274 #: ../../../src/MenuManager.cpp:1501
1275 msgid "Equipped"
1276 msgstr ""
1277
1278 #: ../../../src/MenuMovementType.cpp:87
1279 msgid "Select a Movement Type"
1280 msgstr ""
1281
1282 #: ../../../src/MenuMovementType.cpp:89
1283 msgid "Can be changed later in the Configuration menu."
1284 msgstr ""
1285
1286 #: ../../../src/MenuMovementType.cpp:92 ../../../src/MenuMovementType.cpp:122
1287 msgid "Keyboard"
1288 msgstr ""
1289
1290 #: ../../../src/MenuMovementType.cpp:93 ../../../src/MenuMovementType.cpp:128
1291 msgid "Mouse"
1292 msgstr ""
1293
1294 #: ../../../src/MenuMovementType.cpp:129
1295 msgid "Button"
10951296 msgstr ""
10961297
10971298 #: ../../../src/MenuNumPicker.cpp:59
10981299 msgid "Enter amount:"
10991300 msgstr ""
11001301
1101 #: ../../../src/MenuPowers.cpp:787
1302 #: ../../../src/MenuPowers.cpp:872
11021303 msgid "Passive"
11031304 msgstr ""
11041305
1105 #: ../../../src/MenuPowers.cpp:792
1306 #: ../../../src/MenuPowers.cpp:879
11061307 #, c-format
11071308 msgid "Costs %d MP"
11081309 msgstr "Stojí %d MP"
11091310
1110 #: ../../../src/MenuPowers.cpp:796
1311 #: ../../../src/MenuPowers.cpp:883
11111312 #, c-format
11121313 msgid "Costs %d HP"
11131314 msgstr "Stojí %d HP"
11141315
1115 #: ../../../src/MenuPowers.cpp:801
1316 #: ../../../src/MenuPowers.cpp:887
11161317 msgid "Cooldown:"
11171318 msgstr ""
11181319
1119 #: ../../../src/MenuPowers.cpp:866 ../../../src/MenuPowers.cpp:869
1320 #: ../../../src/MenuPowers.cpp:938 ../../../src/MenuPowers.cpp:941
11201321 msgid "Damage per second"
11211322 msgstr ""
11221323
1123 #: ../../../src/MenuPowers.cpp:872 ../../../src/MenuPowers.cpp:875
1324 #: ../../../src/MenuPowers.cpp:944 ../../../src/MenuPowers.cpp:947
11241325 msgid "HP per second"
11251326 msgstr ""
11261327
1127 #: ../../../src/MenuPowers.cpp:878 ../../../src/MenuPowers.cpp:881
1328 #: ../../../src/MenuPowers.cpp:950 ../../../src/MenuPowers.cpp:953
11281329 msgid "MP per second"
11291330 msgstr ""
11301331
1131 #: ../../../src/MenuPowers.cpp:885
1332 #: ../../../src/MenuPowers.cpp:957
11321333 msgid "Immobilize"
11331334 msgstr ""
11341335
1135 #: ../../../src/MenuPowers.cpp:893
1336 #: ../../../src/MenuPowers.cpp:965
11361337 msgid "Immunity"
11371338 msgstr ""
11381339
1139 #: ../../../src/MenuPowers.cpp:896
1340 #: ../../../src/MenuPowers.cpp:968
11401341 msgid "Immunity to damage over time"
11411342 msgstr ""
11421343
1143 #: ../../../src/MenuPowers.cpp:899
1344 #: ../../../src/MenuPowers.cpp:971
11441345 msgid "Immunity to slow"
11451346 msgstr ""
11461347
1147 #: ../../../src/MenuPowers.cpp:902
1348 #: ../../../src/MenuPowers.cpp:974
11481349 msgid "Immunity to stun"
11491350 msgstr ""
11501351
1151 #: ../../../src/MenuPowers.cpp:905
1352 #: ../../../src/MenuPowers.cpp:977
11521353 msgid "Immunity to HP steal"
11531354 msgstr ""
11541355
1155 #: ../../../src/MenuPowers.cpp:908
1356 #: ../../../src/MenuPowers.cpp:980
11561357 msgid "Immunity to MP steal"
11571358 msgstr ""
11581359
1159 #: ../../../src/MenuPowers.cpp:911
1360 #: ../../../src/MenuPowers.cpp:983
11601361 msgid "Immunity to knockback"
11611362 msgstr ""
11621363
1163 #: ../../../src/MenuPowers.cpp:914
1364 #: ../../../src/MenuPowers.cpp:986
11641365 msgid "Immunity to damage reflection"
11651366 msgstr ""
11661367
1167 #: ../../../src/MenuPowers.cpp:917
1368 #: ../../../src/MenuPowers.cpp:992
11681369 msgid "Stun"
11691370 msgstr ""
11701371
1171 #: ../../../src/MenuPowers.cpp:920
1372 #: ../../../src/MenuPowers.cpp:995
11721373 msgid "Automatic revive on death"
11731374 msgstr ""
11741375
1175 #: ../../../src/MenuPowers.cpp:923
1376 #: ../../../src/MenuPowers.cpp:998
11761377 msgid "Convert"
11771378 msgstr ""
11781379
1179 #: ../../../src/MenuPowers.cpp:926
1380 #: ../../../src/MenuPowers.cpp:1001
11801381 msgid "Fear"
11811382 msgstr ""
11821383
1183 #: ../../../src/MenuPowers.cpp:929
1384 #: ../../../src/MenuPowers.cpp:1004
11841385 msgid "Lifespan"
11851386 msgstr ""
11861387
1187 #: ../../../src/MenuPowers.cpp:953
1388 #: ../../../src/MenuPowers.cpp:1028
11881389 msgid "Magical Shield"
11891390 msgstr ""
11901391
1191 #: ../../../src/MenuPowers.cpp:982
1392 #: ../../../src/MenuPowers.cpp:1057
11921393 msgid "Healing"
11931394 msgstr ""
11941395
1195 #: ../../../src/MenuPowers.cpp:985
1396 #: ../../../src/MenuPowers.cpp:1060
11961397 msgid "Knockback"
11971398 msgstr ""
11981399
1199 #: ../../../src/MenuPowers.cpp:1010
1400 #: ../../../src/MenuPowers.cpp:1084
12001401 #, c-format
12011402 msgid "%d%% chance"
12021403 msgstr ""
12031404
1204 #: ../../../src/MenuPowers.cpp:1062
1405 #: ../../../src/MenuPowers.cpp:1136
12051406 msgid "Base Accuracy"
12061407 msgstr ""
12071408
1208 #: ../../../src/MenuPowers.cpp:1082
1409 #: ../../../src/MenuPowers.cpp:1156
12091410 msgid "Base Critical Chance"
12101411 msgstr ""
12111412
1212 #: ../../../src/MenuPowers.cpp:1090
1413 #: ../../../src/MenuPowers.cpp:1164
12131414 msgid "Ignores Absorbtion"
12141415 msgstr ""
12151416
1216 #: ../../../src/MenuPowers.cpp:1095
1417 #: ../../../src/MenuPowers.cpp:1169
12171418 msgid "Ignores Avoidance"
12181419 msgstr ""
12191420
1220 #: ../../../src/MenuPowers.cpp:1100
1421 #: ../../../src/MenuPowers.cpp:1174
12211422 #, c-format
12221423 msgid "%d%% Chance to crit slowed targets"
12231424 msgstr ""
12241425
1225 #: ../../../src/MenuPowers.cpp:1105
1426 #: ../../../src/MenuPowers.cpp:1179
12261427 #, c-format
12271428 msgid "Elemental Damage (%s)"
12281429 msgstr ""
12291430
1230 #: ../../../src/MenuPowers.cpp:1114
1431 #: ../../../src/MenuPowers.cpp:1188
12311432 #, c-format
12321433 msgid "Requires a %s"
12331434 msgstr ""
12341435
1235 #: ../../../src/MenuPowers.cpp:1151 ../../../src/MenuPowers.cpp:1154
1436 #: ../../../src/MenuPowers.cpp:1226 ../../../src/MenuPowers.cpp:1229
12361437 #, c-format
12371438 msgid "Requires Power: %s"
12381439 msgstr "Potřebuje Schopnost: %s"
12391440
1240 #: ../../../src/MenuPowers.cpp:1163
1441 #: ../../../src/MenuPowers.cpp:1238
12411442 msgid "Click to Unlock (uses 1 Skill Point)"
12421443 msgstr ""
12431444
1244 #: ../../../src/MenuPowers.cpp:1167 ../../../src/MenuPowers.cpp:1169
1445 #: ../../../src/MenuPowers.cpp:1242 ../../../src/MenuPowers.cpp:1244
12451446 msgid "Requires 1 Skill Point"
12461447 msgstr ""
12471448
1248 #: ../../../src/MenuPowers.cpp:1355
1249 #, c-format
1250 msgid "%d unspent skill point"
1251 msgstr ""
1252
1253 #: ../../../src/MenuPowers.cpp:1358
1254 #, c-format
1255 msgid "%d unspent skill points"
1256 msgstr ""
1257
1258 #: ../../../src/MenuPowers.cpp:1388
1449 #: ../../../src/MenuPowers.cpp:1444
1450 #, c-format
1451 msgid "Available skill points: %d"
1452 msgstr ""
1453
1454 #: ../../../src/MenuPowers.cpp:1476
12591455 msgid "Next Level:"
12601456 msgstr ""
12611457
1262 #: ../../../src/MenuStash.cpp:96
1263 msgid "Shared Stash"
1264 msgstr "Sdílená Skrýš"
1265
1266 #: ../../../src/MenuStash.cpp:209
1267 msgid "Can not store quest items in the stash."
1268 msgstr ""
1269
1270 #: ../../../src/MenuStash.cpp:219
1458 #: ../../../src/MenuStash.cpp:80 ../../../src/MenuStash.cpp:161
1459 msgid "Stash"
1460 msgstr ""
1461
1462 #: ../../../src/MenuStash.cpp:174 ../../../src/MenuStash.cpp:188
1463 msgid "Private"
1464 msgstr ""
1465
1466 #: ../../../src/MenuStash.cpp:175
1467 msgid "Shared"
1468 msgstr ""
1469
1470 #: ../../../src/MenuStash.cpp:340
1471 msgid "This item can not be stored in the stash."
1472 msgstr ""
1473
1474 #: ../../../src/MenuStash.cpp:345
1475 msgid "This item can not be stored in the private stash."
1476 msgstr ""
1477
1478 #: ../../../src/MenuStash.cpp:350
1479 msgid "This item can not be stored in the shared stash."
1480 msgstr ""
1481
1482 #: ../../../src/MenuStash.cpp:360
12711483 msgid "Stash is full."
12721484 msgstr ""
12731485
1274 #: ../../../src/MenuTalker.cpp:454
1486 #: ../../../src/MenuStash.cpp:414
1487 #, c-format
1488 msgid "Can not store item in stash: %s"
1489 msgstr ""
1490
1491 #: ../../../src/MenuTalker.cpp:448
1492 #, c-format
1493 msgid "<dialog node %d>"
1494 msgstr ""
1495
1496 #: ../../../src/MenuTalker.cpp:456
12751497 msgid "Trade"
12761498 msgstr "Obchodovat"
12771499
1278 #: ../../../src/MenuVendor.cpp:58
1500 #: ../../../src/MenuVendor.cpp:60
12791501 msgid "Buyback"
12801502 msgstr "Koupit Zpět"
12811503
1282 #: ../../../src/MenuVendor.cpp:279
1504 #: ../../../src/MenuVendor.cpp:283
12831505 msgid "Vendor"
12841506 msgstr "Obchodník"
12851507
1286 #: ../../../src/PowerManager.cpp:1136
1508 #: ../../../src/PowerManager.cpp:1208
12871509 #, c-format
12881510 msgid "+%d Shield"
12891511 msgstr "%d Štít"
12901512
1291 #: ../../../src/PowerManager.cpp:1392
1513 #: ../../../src/PowerManager.cpp:1465
12921514 msgid "You are already transformed, untransform first."
12931515 msgstr "Už jsi transformovaný, nejdřív se transformuj zpět."
12941516
1295 #: ../../../src/PowerManager.cpp:1404
1517 #: ../../../src/PowerManager.cpp:1477
12961518 msgid "Could not untransform at this position."
12971519 msgstr ""
12981520
13001522 msgid "Completed Quests"
13011523 msgstr ""
13021524
1303 #: ../../../src/SaveLoad.cpp:243 ../../../src/SaveLoad.cpp:244
1525 #: ../../../src/SaveLoad.cpp:250 ../../../src/SaveLoad.cpp:251
13041526 msgid "Game saved."
13051527 msgstr ""
13061528
1307 #: ../../../src/SDLInputState.cpp:582
1529 #: ../../../src/SDLInputState.cpp:643
1530 msgid "BkSp"
1531 msgstr ""
1532
1533 #: ../../../src/SDLInputState.cpp:644
1534 msgid "Caps"
1535 msgstr ""
1536
1537 #: ../../../src/SDLInputState.cpp:645
1538 msgid "Del"
1539 msgstr ""
1540
1541 #: ../../../src/SDLInputState.cpp:647 ../../../src/SDLInputState.cpp:677
1542 msgid "End"
1543 msgstr ""
1544
1545 #: ../../../src/SDLInputState.cpp:648
1546 msgid "Esc"
1547 msgstr ""
1548
1549 #: ../../../src/SDLInputState.cpp:649 ../../../src/SDLInputState.cpp:679
1550 msgid "Home"
1551 msgstr ""
1552
1553 #: ../../../src/SDLInputState.cpp:650
1554 msgid "Ins"
1555 msgstr ""
1556
1557 #: ../../../src/SDLInputState.cpp:651
1558 msgid "LAlt"
1559 msgstr ""
1560
1561 #: ../../../src/SDLInputState.cpp:652
1562 msgid "LCtrl"
1563 msgstr ""
1564
1565 #: ../../../src/SDLInputState.cpp:654
1566 msgid "LShft"
1567 msgstr ""
1568
1569 #: ../../../src/SDLInputState.cpp:655
1570 msgid "Num"
1571 msgstr ""
1572
1573 #: ../../../src/SDLInputState.cpp:656
1574 msgid "PgDn"
1575 msgstr ""
1576
1577 #: ../../../src/SDLInputState.cpp:657
1578 msgid "PgUp"
1579 msgstr ""
1580
1581 #: ../../../src/SDLInputState.cpp:658 ../../../src/SDLInputState.cpp:688
1582 msgid "Pause"
1583 msgstr ""
1584
1585 #: ../../../src/SDLInputState.cpp:659
1586 msgid "Print"
1587 msgstr ""
1588
1589 #: ../../../src/SDLInputState.cpp:660
1590 msgid "RAlt"
1591 msgstr ""
1592
1593 #: ../../../src/SDLInputState.cpp:661
1594 msgid "RCtrl"
1595 msgstr ""
1596
1597 #: ../../../src/SDLInputState.cpp:662
1598 msgid "Ret"
1599 msgstr ""
1600
1601 #: ../../../src/SDLInputState.cpp:664
1602 msgid "RShft"
1603 msgstr ""
1604
1605 #: ../../../src/SDLInputState.cpp:665
1606 msgid "SLock"
1607 msgstr ""
1608
1609 #: ../../../src/SDLInputState.cpp:666
1610 msgid "Spc"
1611 msgstr ""
1612
1613 #: ../../../src/SDLInputState.cpp:667 ../../../src/SDLInputState.cpp:697
1614 msgid "Tab"
1615 msgstr ""
1616
1617 #: ../../../src/SDLInputState.cpp:673
13081618 msgid "Backspace"
13091619 msgstr ""
13101620
1311 #: ../../../src/SDLInputState.cpp:583
1621 #: ../../../src/SDLInputState.cpp:674
13121622 msgid "CapsLock"
13131623 msgstr ""
13141624
1315 #: ../../../src/SDLInputState.cpp:586
1316 msgid "End"
1317 msgstr ""
1318
1319 #: ../../../src/SDLInputState.cpp:587
1625 #: ../../../src/SDLInputState.cpp:678
13201626 msgid "Escape"
13211627 msgstr ""
13221628
1323 #: ../../../src/SDLInputState.cpp:588
1324 msgid "Home"
1325 msgstr ""
1326
1327 #: ../../../src/SDLInputState.cpp:589
1629 #: ../../../src/SDLInputState.cpp:680
13281630 msgid "Insert"
13291631 msgstr ""
13301632
1331 #: ../../../src/SDLInputState.cpp:590
1633 #: ../../../src/SDLInputState.cpp:681
13321634 msgid "Left Alt"
13331635 msgstr ""
13341636
1335 #: ../../../src/SDLInputState.cpp:591
1637 #: ../../../src/SDLInputState.cpp:682
13361638 msgid "Left Ctrl"
13371639 msgstr ""
13381640
1339 #: ../../../src/SDLInputState.cpp:593
1641 #: ../../../src/SDLInputState.cpp:684
13401642 msgid "Left Shift"
13411643 msgstr ""
13421644
1343 #: ../../../src/SDLInputState.cpp:594
1645 #: ../../../src/SDLInputState.cpp:685
13441646 msgid "NumLock"
13451647 msgstr ""
13461648
1347 #: ../../../src/SDLInputState.cpp:595
1649 #: ../../../src/SDLInputState.cpp:686
13481650 msgid "PageDown"
13491651 msgstr ""
13501652
1351 #: ../../../src/SDLInputState.cpp:596
1653 #: ../../../src/SDLInputState.cpp:687
13521654 msgid "PageUp"
13531655 msgstr ""
13541656
1355 #: ../../../src/SDLInputState.cpp:597
1356 msgid "Pause"
1357 msgstr ""
1358
1359 #: ../../../src/SDLInputState.cpp:598
1657 #: ../../../src/SDLInputState.cpp:689
13601658 msgid "PrintScreen"
13611659 msgstr ""
13621660
1363 #: ../../../src/SDLInputState.cpp:599
1661 #: ../../../src/SDLInputState.cpp:690
13641662 msgid "Right Alt"
13651663 msgstr ""
13661664
1367 #: ../../../src/SDLInputState.cpp:600
1665 #: ../../../src/SDLInputState.cpp:691
13681666 msgid "Right Ctrl"
13691667 msgstr ""
13701668
1371 #: ../../../src/SDLInputState.cpp:601
1669 #: ../../../src/SDLInputState.cpp:692
13721670 msgid "Return"
13731671 msgstr ""
13741672
1375 #: ../../../src/SDLInputState.cpp:603
1673 #: ../../../src/SDLInputState.cpp:694
13761674 msgid "Right Shift"
13771675 msgstr ""
13781676
1379 #: ../../../src/SDLInputState.cpp:604
1677 #: ../../../src/SDLInputState.cpp:695
13801678 msgid "ScrollLock"
13811679 msgstr ""
13821680
1383 #: ../../../src/SDLInputState.cpp:605
1681 #: ../../../src/SDLInputState.cpp:696
13841682 msgid "Space"
13851683 msgstr ""
13861684
1387 #: ../../../src/SDLInputState.cpp:606
1388 msgid "Tab"
1389 msgstr ""
1390
1391 #: ../../../src/SDLInputState.cpp:620
1685 #: ../../../src/SDLInputState.cpp:710
1686 #, c-format
1687 msgid "M%d"
1688 msgstr ""
1689
1690 #: ../../../src/SDLInputState.cpp:716
13921691 #, c-format
13931692 msgid "Mouse %d"
13941693 msgstr ""
13951694
1396 #: ../../../src/SDLInputState.cpp:628
1695 #: ../../../src/SDLInputState.cpp:726
1696 #, c-format
1697 msgid "JX%d-"
1698 msgstr ""
1699
1700 #: ../../../src/SDLInputState.cpp:728
13971701 #, c-format
13981702 msgid "Axis %d -"
13991703 msgstr ""
14001704
1401 #: ../../../src/SDLInputState.cpp:630
1705 #: ../../../src/SDLInputState.cpp:732
1706 #, c-format
1707 msgid "JX%d+"
1708 msgstr ""
1709
1710 #: ../../../src/SDLInputState.cpp:734
14021711 #, c-format
14031712 msgid "Axis %d +"
14041713 msgstr ""
14051714
1406 #: ../../../src/SDLInputState.cpp:633
1715 #: ../../../src/SDLInputState.cpp:739
1716 #, c-format
1717 msgid "JB%d"
1718 msgstr ""
1719
1720 #: ../../../src/SDLInputState.cpp:741
14071721 #, c-format
14081722 msgid "Button %d"
14091723 msgstr ""
14101724
1411 #: ../../../src/SDLInputState.cpp:637
1412 msgid "(none)"
1413 msgstr ""
1414
1415 #: ../../../src/SDLInputState.cpp:677
1725 #: ../../../src/SDLInputState.cpp:787
14161726 msgid "Touch control D-Pad"
14171727 msgstr ""
14181728
1419 #: ../../../src/SDLInputState.cpp:701
1729 #: ../../../src/SDLInputState.cpp:810
14201730 msgid "Touch control buttons"
14211731 msgstr ""
14221732
1423 #: ../../../src/SDLInputState.cpp:716
1733 #: ../../../src/SDLInputState.cpp:824
14241734 msgid "Tap"
14251735 msgstr ""
14261736
1427 #: ../../../src/SDLInputState.cpp:760 ../../../src/SDLInputState.cpp:764
1428 #: ../../../src/SDLInputState.cpp:768
1737 #: ../../../src/SDLInputState.cpp:876 ../../../src/SDLInputState.cpp:878
1738 #, c-format
1739 msgid "Can not bind: %s"
1740 msgstr ""
1741
1742 #: ../../../src/SDLInputState.cpp:890 ../../../src/SDLInputState.cpp:894
1743 #: ../../../src/SDLInputState.cpp:898
14291744 #, c-format
14301745 msgid "'%s' is no longer bound to:"
14311746 msgstr ""
15841899 msgid "Base MP"
15851900 msgstr ""
15861901
1587 #: ../../../src/Utils.cpp:346
1902 #: ../../../src/Utils.cpp:365
15881903 msgid "k"
15891904 msgstr ""
15901905
1591 #: ../../../src/Utils.cpp:580
1906 #: ../../../src/Utils.cpp:635
15921907 #, c-format
15931908 msgid "%s second"
15941909 msgstr "1%s sekunda"
15951910
1596 #: ../../../src/Utils.cpp:583
1911 #: ../../../src/Utils.cpp:638
15971912 #, c-format
15981913 msgid "%s seconds"
15991914 msgstr "1%s sekundy"
33 # FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
44 #
55 # Translators:
6 # Justin Jacobs <jajdorkster@gmail.com>, 2018
7 # Wuzzy <almikes@aol.com>, 2018
8 # Fyrenic <fyrenic@protonmail.com>, 2018
6 # Justin Jacobs <jajdorkster@gmail.com>, 2019
7 # a287ca4390ac1060252ff7344e07cfb3_ddf63c0 <12d9bb92f00a9c2841133eeaac7a25bb_727560>, 2019
8 # Wuzzy <almikes@aol.com>, 2020
99 #
1010 #, fuzzy
1111 msgid ""
1212 msgstr ""
1313 "Project-Id-Version: PACKAGE VERSION\n"
1414 "Report-Msgid-Bugs-To: \n"
15 "POT-Creation-Date: 2018-11-17 21:50-0500\n"
15 "POT-Creation-Date: 2021-05-23 20:34-0400\n"
1616 "PO-Revision-Date: 2018-03-28 19:16+0000\n"
17 "Last-Translator: Fyrenic <fyrenic@protonmail.com>, 2018\n"
17 "Last-Translator: Wuzzy <almikes@aol.com>, 2020\n"
1818 "Language-Team: German (https://www.transifex.com/flareorg/teams/84925/de/)\n"
1919 "MIME-Version: 1.0\n"
2020 "Content-Type: text/plain; charset=UTF-8\n"
2222 "Language: de\n"
2323 "Plural-Forms: nplurals=2; plural=(n != 1);\n"
2424
25 #: ../../../src/Avatar.cpp:367
25 #: ../../../src/Avatar.cpp:391
26 msgid "Your health is low!"
27 msgstr "Deine Gesundheit ist niedrig!"
28
29 #: ../../../src/Avatar.cpp:421
2630 #, c-format
2731 msgid "Congratulations, you have reached level %d!"
2832 msgstr "Glückwunsch, du hast Stufe %d erreicht!"
2933
30 #: ../../../src/Avatar.cpp:369
31 msgid "You may increase one attribute through the Character Menu."
32 msgstr "Du kannst ein Attribut im Charaktermenü erhöhen."
33
34 #: ../../../src/Avatar.cpp:583
35 msgid "You are defeated. Game over! ${INPUT_CONTINUE} to exit to Title."
36 msgstr ""
37 "Du wurdest besiegt, das Spiel ist vorbei! Kehre mit ${INPUT_CONTINUE} zum "
38 "Hauptmenü zurück."
39
40 #: ../../../src/Avatar.cpp:589
41 msgid "You are defeated. ${INPUT_CONTINUE} to continue."
42 msgstr "Du wurdest besiegt. Drücke ${INPUT_CONTINUE} um fortzufahren"
43
44 #: ../../../src/Avatar.cpp:839
34 #: ../../../src/Avatar.cpp:423
35 msgid "You may increase one or more attributes through the Character Menu."
36 msgstr "Du kannst einen oder mehrere Attribute im Charakter-Menü erhöhen."
37
38 #: ../../../src/Avatar.cpp:427
39 msgid "You may unlock one or more abilities through the Powers Menu."
40 msgstr ""
41 "Du kannst eine oder mehrere Fähigkeiten im Fähigkeiten-Menü freischalten."
42
43 #: ../../../src/Avatar.cpp:689
44 msgid "You are defeated."
45 msgstr ""
46
47 #: ../../../src/Avatar.cpp:935
4548 msgid "Transformation expired. You have been moved back to a safe place."
4649 msgstr ""
4750 "Die Transformation ist aufgehoben. Du wurdest an einen sicheren Ort "
4851 "gebracht."
4952
50 #: ../../../src/CampaignManager.cpp:153
53 #: ../../../src/CampaignManager.cpp:152
5154 #, c-format
5255 msgid "%d %s removed."
5356 msgstr "%d %s entfernt."
5457
55 #: ../../../src/CampaignManager.cpp:162
58 #: ../../../src/CampaignManager.cpp:171
59 #, c-format
60 msgid "%s x%d removed."
61 msgstr "%s ×%d entfernt."
62
63 #: ../../../src/CampaignManager.cpp:173
5664 #, c-format
5765 msgid "%s removed."
5866 msgstr "%s entfernt."
5967
60 #: ../../../src/CampaignManager.cpp:175
68 #: ../../../src/CampaignManager.cpp:187
69 #, c-format
70 msgid "You receive %d %s."
71 msgstr "Du erhältst %d %s."
72
73 #: ../../../src/CampaignManager.cpp:191
74 #, c-format
75 msgid "You receive %s x%d."
76 msgstr "Du erhältst %s ×%d."
77
78 #: ../../../src/CampaignManager.cpp:193
6179 #, c-format
6280 msgid "You receive %s."
6381 msgstr "Du erhältst %s."
6482
65 #: ../../../src/CampaignManager.cpp:177
66 #, c-format
67 msgid "You receive %s x%d."
68 msgstr "Du erhältst %s ×%d."
69
70 #: ../../../src/CampaignManager.cpp:186
71 #, c-format
72 msgid "You receive %d %s."
73 msgstr "Du erhältst %d %s."
74
75 #: ../../../src/CampaignManager.cpp:195
83 #: ../../../src/CampaignManager.cpp:210
7684 #, c-format
7785 msgid "You receive %d XP."
7886 msgstr "Du erhältst %d EP."
7987
80 #: ../../../src/CampaignManager.cpp:201
88 #: ../../../src/CampaignManager.cpp:216
8189 msgid "HP restored."
8290 msgstr "TP wiederhergestellt."
8391
84 #: ../../../src/CampaignManager.cpp:205
92 #: ../../../src/CampaignManager.cpp:220
8593 msgid "MP restored."
8694 msgstr "MP wiederhergestellt."
8795
88 #: ../../../src/CampaignManager.cpp:210
96 #: ../../../src/CampaignManager.cpp:225
8997 msgid "HP and MP restored."
9098 msgstr "TP und MP wiederhergestellt."
9199
92 #: ../../../src/CampaignManager.cpp:214
100 #: ../../../src/CampaignManager.cpp:229
93101 msgid "Negative effects removed."
94102 msgstr "Negative Wirkungen entfernt."
95103
96 #: ../../../src/CampaignManager.cpp:220
104 #: ../../../src/CampaignManager.cpp:235
97105 msgid "HP and MP restored, negative effects removed"
98 msgstr "TP und MP wiederhergestellt, Negativwirkungen entfernt."
106 msgstr "TP und MP wiederhergestellt, Negativwirkungen entfernt"
99107
100108 #: ../../../src/DeviceList.cpp:56
101109 msgid ""
117125 "\n"
118126 "Der Standard-Renderer, der oft schneller als der SDL-Software-Renderer ist."
119127
120 #: ../../../src/EngineSettings.cpp:561
128 #: ../../../src/EngineSettings.cpp:586
121129 msgid "Adventurer"
122130 msgstr "Abenteurer"
123131
124 #: ../../../src/Entity.cpp:511
132 #: ../../../src/Entity.cpp:527
125133 msgid "miss"
126134 msgstr "verfehlt"
127135
128 #: ../../../src/Entity.cpp:548 ../../../src/PowerManager.cpp:1152
129 #: ../../../src/StatBlock.cpp:805 ../../../src/StatBlock.cpp:811
136 #: ../../../src/Entity.cpp:565 ../../../src/PowerManager.cpp:1224
137 #: ../../../src/StatBlock.cpp:917 ../../../src/StatBlock.cpp:923
130138 #, c-format
131139 msgid "+%d HP"
132140 msgstr "+%d TP"
133141
134 #: ../../../src/Entity.cpp:555 ../../../src/StatBlock.cpp:816
135 #: ../../../src/StatBlock.cpp:822
142 #: ../../../src/Entity.cpp:572 ../../../src/StatBlock.cpp:928
143 #: ../../../src/StatBlock.cpp:934
136144 #, c-format
137145 msgid "+%d MP"
138146 msgstr "+%d MP"
139147
140 #: ../../../src/EventManager.cpp:738
148 #: ../../../src/EventManager.cpp:792
141149 msgid "Unknown destination"
142150 msgstr "Unbekanntes Ziel"
143151
144 #: ../../../src/GameStateConfigBase.cpp:89
145 #: ../../../src/GameStateConfigBase.cpp:110
152 #: ../../../src/GameState.cpp:37 ../../../src/GameState.cpp:58
153 msgid "Loading..."
154 msgstr "Laden ..."
155
156 #: ../../../src/GameStateLoad.cpp:90 ../../../src/GameStateLoad.cpp:103
157 msgid "Delete Save"
158 msgstr "Spiel löschen"
159
160 #: ../../../src/GameStateLoad.cpp:90
161 msgid "Delete this save?"
162 msgstr "Diesen Spielstand löschen?"
163
164 #: ../../../src/GameStateLoad.cpp:92
165 msgid "Exit to Title"
166 msgstr "Hauptmenü"
167
168 #: ../../../src/GameStateLoad.cpp:95
169 msgid "New Game"
170 msgstr "Neues Spiel"
171
172 #: ../../../src/GameStateLoad.cpp:99 ../../../src/GameStateLoad.cpp:607
173 msgid "Choose a Slot"
174 msgstr "Eintrag wählen"
175
176 #: ../../../src/GameStateLoad.cpp:580 ../../../src/GameStateLoad.cpp:601
177 msgid "Enable a story mod to continue"
178 msgstr "Aktiviere eine Erzähl-Mod, um fortzufahren"
179
180 #: ../../../src/GameStateLoad.cpp:596
181 msgid "Load Game"
182 msgstr "Spiel laden"
183
184 #: ../../../src/GameStateLoad.cpp:705
185 msgid "Entering game world..."
186 msgstr "Spielwelt wird betreten ..."
187
188 #: ../../../src/GameStateLoad.cpp:708
189 msgid "Loading saved game..."
190 msgstr "Spielstand wird geladen ..."
191
192 #: ../../../src/GameStateLoad.cpp:741
193 msgid "Invalid save"
194 msgstr "Ungültiger Spielstand"
195
196 #: ../../../src/GameStateLoad.cpp:765 ../../../src/ItemManager.cpp:745
197 #: ../../../src/MenuPowers.cpp:860 ../../../src/MenuPowers.cpp:1219
198 #: ../../../src/MenuPowers.cpp:1631
199 #, c-format
200 msgid "Level %d"
201 msgstr "Stufe %d"
202
203 #: ../../../src/GameStateNew.cpp:66 ../../../src/InputState.cpp:416
204 #: ../../../src/MenuConfig.cpp:246
205 msgid "Cancel"
206 msgstr "Abbrechen"
207
208 #: ../../../src/GameStateNew.cpp:69
209 msgid "Create"
210 msgstr "Erstellen"
211
212 #: ../../../src/GameStateNew.cpp:77
213 msgid "Randomize"
214 msgstr "Würfeln"
215
216 #: ../../../src/GameStateNew.cpp:93
217 msgid "Choose a Portrait"
218 msgstr "Wähle dein Porträt"
219
220 #: ../../../src/GameStateNew.cpp:97
221 msgid "Choose a Name"
222 msgstr "Wähle deinen Namen"
223
224 #: ../../../src/GameStateNew.cpp:101
225 msgid "Permadeath?"
226 msgstr "Dauerhafter Tod?"
227
228 #: ../../../src/GameStateNew.cpp:105
229 msgid "Choose a Class"
230 msgstr "Wähle eine Klasse"
231
232 #: ../../../src/GameStateTitle.cpp:107
233 msgid "Play Game"
234 msgstr "Spiel starten"
235
236 #: ../../../src/GameStateTitle.cpp:110
237 msgid "Enable a core mod to continue"
238 msgstr "Aktiviere eine Kern-Mod, um fortzufahren"
239
240 #: ../../../src/GameStateTitle.cpp:114 ../../../src/MenuMiniMap.cpp:152
241 msgid "Configuration"
242 msgstr "Einstellungen"
243
244 #: ../../../src/GameStateTitle.cpp:117
245 msgid "Credits"
246 msgstr "Mitwirkende"
247
248 #: ../../../src/GameStateTitle.cpp:120
249 msgid "Exit Game"
250 msgstr "Beenden"
251
252 #: ../../../src/InputState.cpp:417
253 msgid "Accept"
254 msgstr "Bestätigen"
255
256 #: ../../../src/InputState.cpp:418 ../../../src/MenuMovementType.cpp:123
257 #: ../../../src/MenuMovementType.cpp:132 ../../../src/SDLInputState.cpp:668
258 #: ../../../src/SDLInputState.cpp:698
259 msgid "Up"
260 msgstr "Hoch"
261
262 #: ../../../src/InputState.cpp:419 ../../../src/MenuMovementType.cpp:125
263 #: ../../../src/MenuMovementType.cpp:134 ../../../src/SDLInputState.cpp:646
264 #: ../../../src/SDLInputState.cpp:676
265 msgid "Down"
266 msgstr "Runter"
267
268 #: ../../../src/InputState.cpp:420 ../../../src/MenuMovementType.cpp:124
269 #: ../../../src/MenuMovementType.cpp:133 ../../../src/SDLInputState.cpp:653
270 #: ../../../src/SDLInputState.cpp:683
271 msgid "Left"
272 msgstr "Links"
273
274 #: ../../../src/InputState.cpp:421 ../../../src/MenuMovementType.cpp:126
275 #: ../../../src/MenuMovementType.cpp:135 ../../../src/SDLInputState.cpp:663
276 #: ../../../src/SDLInputState.cpp:693
277 msgid "Right"
278 msgstr "Rechts"
279
280 #: ../../../src/InputState.cpp:422
281 msgid "Bar1"
282 msgstr "Aktionsleiste 1"
283
284 #: ../../../src/InputState.cpp:423
285 msgid "Bar2"
286 msgstr "Aktionsleiste 2"
287
288 #: ../../../src/InputState.cpp:424
289 msgid "Bar3"
290 msgstr "Aktionsleiste 3"
291
292 #: ../../../src/InputState.cpp:425
293 msgid "Bar4"
294 msgstr "Aktionsleiste 4"
295
296 #: ../../../src/InputState.cpp:426
297 msgid "Bar5"
298 msgstr "Aktionsleiste 5"
299
300 #: ../../../src/InputState.cpp:427
301 msgid "Bar6"
302 msgstr "Aktionsleiste 6"
303
304 #: ../../../src/InputState.cpp:428
305 msgid "Bar7"
306 msgstr "Aktionsleiste 7"
307
308 #: ../../../src/InputState.cpp:429
309 msgid "Bar8"
310 msgstr "Aktionsleiste 8"
311
312 #: ../../../src/InputState.cpp:430
313 msgid "Bar9"
314 msgstr "Aktionsleiste 9"
315
316 #: ../../../src/InputState.cpp:431
317 msgid "Bar0"
318 msgstr "Aktionsleiste 0"
319
320 #: ../../../src/InputState.cpp:432 ../../../src/MenuActionBar.cpp:84
321 #: ../../../src/MenuCharacter.cpp:54
322 msgid "Character"
323 msgstr "Charakter"
324
325 #: ../../../src/InputState.cpp:433 ../../../src/MenuActionBar.cpp:85
326 #: ../../../src/MenuInventory.cpp:130 ../../../src/MenuVendor.cpp:59
327 msgid "Inventory"
328 msgstr "Inventar"
329
330 #: ../../../src/InputState.cpp:434 ../../../src/MenuActionBar.cpp:86
331 #: ../../../src/MenuPowers.cpp:158
332 msgid "Powers"
333 msgstr "Fähigkeiten"
334
335 #: ../../../src/InputState.cpp:435 ../../../src/MenuActionBar.cpp:87
336 #: ../../../src/MenuLog.cpp:72
337 msgid "Log"
338 msgstr "Journal"
339
340 #: ../../../src/InputState.cpp:436
341 msgid "Main1"
342 msgstr "Aktionstaste 1"
343
344 #: ../../../src/InputState.cpp:437
345 msgid "Main2"
346 msgstr "Aktionstaste 2"
347
348 #: ../../../src/InputState.cpp:438
349 msgid "Ctrl"
350 msgstr "Strg"
351
352 #: ../../../src/InputState.cpp:439
353 msgid "Shift"
354 msgstr "Umschalt"
355
356 #: ../../../src/InputState.cpp:440
357 msgid "Alt"
358 msgstr "Alt"
359
360 #: ../../../src/InputState.cpp:441 ../../../src/SDLInputState.cpp:675
361 msgid "Delete"
362 msgstr "Entf"
363
364 #: ../../../src/InputState.cpp:442
365 msgid "ActionBar Accept"
366 msgstr "Leiste Annehmen"
367
368 #: ../../../src/InputState.cpp:443
369 msgid "ActionBar Left"
370 msgstr "Leiste Links"
371
372 #: ../../../src/InputState.cpp:444
373 msgid "ActionBar Right"
374 msgstr "Leiste Rechts"
375
376 #: ../../../src/InputState.cpp:445
377 msgid "ActionBar Use"
378 msgstr "Leiste Benutzen"
379
380 #: ../../../src/InputState.cpp:446
381 msgid "Developer Menu"
382 msgstr "Entwicklermenü"
383
384 #: ../../../src/InputState.cpp:448
385 msgid "Left Mouse"
386 msgstr "Maus links"
387
388 #: ../../../src/InputState.cpp:449
389 msgid "Middle Mouse"
390 msgstr "Maus mittig"
391
392 #: ../../../src/InputState.cpp:450
393 msgid "Right Mouse"
394 msgstr "Maus rechts"
395
396 #: ../../../src/InputState.cpp:451
397 msgid "Wheel Up"
398 msgstr "Mausrad auf"
399
400 #: ../../../src/InputState.cpp:452
401 msgid "Wheel Down"
402 msgstr "Mausrad ab"
403
404 #: ../../../src/InputState.cpp:453
405 msgid "Mouse X1"
406 msgstr "Maus X1"
407
408 #: ../../../src/InputState.cpp:454
409 msgid "Mouse X2"
410 msgstr "Maus X2"
411
412 #: ../../../src/ItemManager.cpp:475
413 msgid "Unknown Item"
414 msgstr "Unbekannter Gegenstand"
415
416 #: ../../../src/ItemManager.cpp:646 ../../../src/MenuPowers.cpp:959
417 #, c-format
418 msgid "%d%% Speed"
419 msgstr "%d%% Geschwindigkeit"
420
421 #: ../../../src/ItemManager.cpp:650 ../../../src/MenuPowers.cpp:962
422 #, c-format
423 msgid "%d%% Attack Speed"
424 msgstr "%d%% Angriffsgeschwindigkeit"
425
426 #: ../../../src/ItemManager.cpp:672 ../../../src/MenuCharacter.cpp:352
427 #: ../../../src/MenuPowers.cpp:931
428 #, c-format
429 msgid "Resistance (%s)"
430 msgstr "Widerstand (%s)"
431
432 #: ../../../src/ItemManager.cpp:682
433 #, c-format
434 msgid "Requires %s"
435 msgstr "Benötigt %s"
436
437 #: ../../../src/ItemManager.cpp:731
438 msgid "Quest Item"
439 msgstr "Aufgabengegenstand"
440
441 #: ../../../src/ItemManager.cpp:758
442 #, c-format
443 msgid "Quality: %s"
444 msgstr "Qualität: %s"
445
446 #: ../../../src/ItemManager.cpp:783
447 #, c-format
448 msgid "Absorb: %d-%d"
449 msgstr "Absorbieren: %d-%d"
450
451 #: ../../../src/ItemManager.cpp:785
452 #, c-format
453 msgid "Absorb: %d"
454 msgstr "Absorbieren: %d"
455
456 #: ../../../src/ItemManager.cpp:825 ../../../src/MenuPowers.cpp:1206
457 #: ../../../src/MenuPowers.cpp:1209
458 #, c-format
459 msgid "Requires Level %d"
460 msgstr "Benötigt Stufe %d"
461
462 #: ../../../src/ItemManager.cpp:836 ../../../src/MenuPowers.cpp:1198
463 #: ../../../src/MenuPowers.cpp:1200
464 #, c-format
465 msgid "Requires %s %d"
466 msgstr "Benötigt %s %d"
467
468 #: ../../../src/ItemManager.cpp:847
469 #, c-format
470 msgid "Requires Class: %s"
471 msgstr "Benötigt Klasse: %s"
472
473 #: ../../../src/ItemManager.cpp:863 ../../../src/ItemManager.cpp:875
474 #, c-format
475 msgid "Buy Price: %d %s"
476 msgstr "Kaufpreis: %d %s"
477
478 #: ../../../src/ItemManager.cpp:865 ../../../src/ItemManager.cpp:877
479 #, c-format
480 msgid "Buy Price: %d %s each"
481 msgstr "Kaufpreis: je %d %s"
482
483 #: ../../../src/ItemManager.cpp:885
484 #, c-format
485 msgid "Sell Price: %d %s"
486 msgstr "Verkaufspreis: %d %s"
487
488 #: ../../../src/ItemManager.cpp:887
489 #, c-format
490 msgid "Sell Price: %d %s each"
491 msgstr "Verkaufspreis: je %d %s"
492
493 #: ../../../src/ItemManager.cpp:896
494 msgid "Set:"
495 msgstr "Set:"
496
497 #: ../../../src/ItemManager.cpp:903
498 #, c-format
499 msgid "%d items:"
500 msgstr "%d Gegenstände:"
501
502 #: ../../../src/ItemManager.cpp:915
503 #, c-format
504 msgid "Press [%s] to read"
505 msgstr "Drücke [%s] zum Lesen"
506
507 #: ../../../src/ItemManager.cpp:918
508 #, c-format
509 msgid "Press [%s] to use"
510 msgstr "Drücke [%s] zum Verwenden"
511
512 #: ../../../src/MenuActionBar.cpp:239 ../../../src/MenuActionBar.cpp:246
513 #: ../../../src/MenuActionBar.cpp:249 ../../../src/MenuActionBar.cpp:255
514 #, c-format
515 msgid "Hotkey: %s"
516 msgstr "Schnelltaste: %s"
517
518 #: ../../../src/MenuActionBar.cpp:621
519 msgid "Not enough MP."
520 msgstr "Nicht genügend MP."
521
522 #: ../../../src/MenuActiveEffects.cpp:124
523 #, c-format
524 msgid "x%d"
525 msgstr "×%d"
526
527 #: ../../../src/MenuActiveEffects.cpp:219
528 msgid "Remaining:"
529 msgstr "Verbleibend:"
530
531 #: ../../../src/MenuActiveEffects.cpp:225
532 #, c-format
533 msgid "x%d stacks"
534 msgstr "×%d Stapel"
535
536 #: ../../../src/MenuCharacter.cpp:73 ../../../src/MenuCharacter.cpp:78
537 msgid "Name"
538 msgstr "Name"
539
540 #: ../../../src/MenuCharacter.cpp:74 ../../../src/MenuCharacter.cpp:79
541 msgid "Level"
542 msgstr "Stufe"
543
544 #: ../../../src/MenuCharacter.cpp:309
545 #, c-format
546 msgid "Available stat points: %d"
547 msgstr ""
548
549 #: ../../../src/MenuCharacter.cpp:353
550 #, c-format
551 msgid "Reduces the damage taken from \"%s\" elemental attacks."
552 msgstr "Reduziert den Schaden von „%s“-Elementarangriffen."
553
554 #: ../../../src/MenuCharacter.cpp:363 ../../../src/MenuManager.cpp:301
555 #, c-format
556 msgid "XP: %d"
557 msgstr "EP: %d"
558
559 #: ../../../src/MenuCharacter.cpp:365
560 #, c-format
561 msgid "Next: %d"
562 msgstr "Nächste: %d"
563
564 #: ../../../src/MenuCharacter.cpp:371
565 #, c-format
566 msgid "base (%d), bonus (%d)"
567 msgstr "Basis (%d), Bonus (%d)"
568
569 #: ../../../src/MenuCharacter.cpp:379 ../../../src/MenuCharacter.cpp:393
570 msgid "Related stats:"
571 msgstr "Verwandte Werte:"
572
573 #: ../../../src/MenuCharacter.cpp:419 ../../../src/MenuCharacter.cpp:443
574 #, c-format
575 msgid "Each level grants %d."
576 msgstr "Jede Stufe gewährt %d."
577
578 #: ../../../src/MenuCharacter.cpp:423 ../../../src/MenuCharacter.cpp:447
579 #, c-format
580 msgid "Each point of %s grants %d."
581 msgstr "Jeder Punkt %s gewährt %d."
582
583 #: ../../../src/MenuConfig.cpp:122 ../../../src/MenuConfig.cpp:1171
584 msgid "Clear"
585 msgstr "Löschen"
586
587 #: ../../../src/MenuConfig.cpp:122 ../../../src/MenuConfig.cpp:1169
588 msgid "Assign:"
589 msgstr "Zuweisen:"
590
591 #: ../../../src/MenuConfig.cpp:123 ../../../src/MenuConfig.cpp:245
146592 msgid "Defaults"
147593 msgstr "Standard"
148594
149 #: ../../../src/GameStateConfigBase.cpp:89
595 #: ../../../src/MenuConfig.cpp:123
150596 msgid "Reset ALL settings?"
151597 msgstr "ALLE Einstellungen zurücksetzen?"
152598
153 #: ../../../src/GameStateConfigBase.cpp:109 ../../../src/MenuNumPicker.cpp:49
599 #: ../../../src/MenuConfig.cpp:244 ../../../src/MenuNumPicker.cpp:49
154600 msgid "OK"
155601 msgstr "OK"
156602
157 #: ../../../src/GameStateConfigBase.cpp:111 ../../../src/GameStateNew.cpp:65
158 #: ../../../src/InputState.cpp:401
159 msgid "Cancel"
160 msgstr "Abbrechen"
161
162 #: ../../../src/GameStateConfigBase.cpp:160
163 #: ../../../src/GameStateConfigDesktop.cpp:130
603 #: ../../../src/MenuConfig.cpp:248 ../../../src/MenuGameOver.cpp:72
604 msgid "Continue"
605 msgstr "Fortfahren"
606
607 #: ../../../src/MenuConfig.cpp:250
608 msgid "Save Game"
609 msgstr "Spiel speichern"
610
611 #: ../../../src/MenuConfig.cpp:293
612 msgid "Default"
613 msgstr "Standard"
614
615 #: ../../../src/MenuConfig.cpp:293
616 msgid ""
617 "Show all loot tooltips, except for those that would be obscured by the "
618 "player or an enemy. Temporarily show all loot tooltips with 'Alt'."
619 msgstr ""
620 "Zeige alle Beute-Hinweise, außer diejenigen, welche durch den Spieler oder "
621 "einen Gegner verdeckt werden. Zeige temporär alle Hinweise mit „Alt“."
622
623 #: ../../../src/MenuConfig.cpp:294
624 msgid "Show all"
625 msgstr "Alles anzeigen"
626
627 #: ../../../src/MenuConfig.cpp:294
628 msgid ""
629 "Always show loot tooltips. Temporarily hide all loot tooltips with 'Alt'."
630 msgstr ""
631 "Zeige alle Beute-Hinweise. Verstecke temporär alle Hinweise mit „Alt“."
632
633 #: ../../../src/MenuConfig.cpp:295 ../../../src/MenuConfig.cpp:300
634 msgid "Hidden"
635 msgstr "Versteckt"
636
637 #: ../../../src/MenuConfig.cpp:295
638 msgid ""
639 "Always hide loot tooltips, except for when a piece of loot is hovered with "
640 "the mouse cursor. Temporarily show all loot tooltips with 'Alt'."
641 msgstr ""
642 "Verstecke alle Beute-Hinweise, außer der Mauszeiger zeigt auf den "
643 "Gegenstand. Zeige temporär alle Hinweise mit „Alt“."
644
645 #: ../../../src/MenuConfig.cpp:298
646 msgid "Visible"
647 msgstr "Sichtbar"
648
649 #: ../../../src/MenuConfig.cpp:299
650 msgid "Visible (2x zoom)"
651 msgstr "Sichtbar (2×-Zoom)"
652
653 #: ../../../src/MenuConfig.cpp:303
654 msgid ""
655 "Controls the type of warning to be activated when the player is below the "
656 "low health threshold."
657 msgstr ""
658 "Legt die Art der Warnung fest, die benutzt wird, wenn sich die "
659 "Spielergesundheit unter dem Niedrige-Gesundheit-Schwellwert befindet."
660
661 #: ../../../src/MenuConfig.cpp:304
662 msgid "- Display a message"
663 msgstr "- Nachricht anzeigen"
664
665 #: ../../../src/MenuConfig.cpp:305
666 msgid "- Play a sound"
667 msgstr "- Ton abspielen"
668
669 #: ../../../src/MenuConfig.cpp:306
670 msgid "- Change the cursor"
671 msgstr "- Mauszeiger ändern"
672
673 #: ../../../src/MenuConfig.cpp:308
674 msgid "Disabled"
675 msgstr "Deaktiviert"
676
677 #: ../../../src/MenuConfig.cpp:309
678 msgid "All"
679 msgstr "Alle"
680
681 #: ../../../src/MenuConfig.cpp:310
682 msgid "Message & Cursor"
683 msgstr "Nachricht u. Mauszeiger"
684
685 #: ../../../src/MenuConfig.cpp:311
686 msgid "Message & Sound"
687 msgstr "Nachricht u. Ton"
688
689 #: ../../../src/MenuConfig.cpp:312
690 msgid "Sound & Cursor"
691 msgstr "Ton u. Mauszeiger"
692
693 #: ../../../src/MenuConfig.cpp:313
694 msgid "Message"
695 msgstr "Nachricht"
696
697 #: ../../../src/MenuConfig.cpp:314
698 msgid "Cursor"
699 msgstr "Mauszeiger"
700
701 #: ../../../src/MenuConfig.cpp:315
702 msgid "Sound"
703 msgstr "Ton"
704
705 #: ../../../src/MenuConfig.cpp:321
706 msgid ""
707 "When the player's health drops below the given threshold, the low health "
708 "notifications are triggered if one or more of them is enabled."
709 msgstr ""
710 "Wenn die Spielergesundheit unter den angegebenem Wert fällt, werden die "
711 "Warnungen für niedrige Gesundheit aktiviert, wenn eine davon aktiviert ist."
712
713 #: ../../../src/MenuConfig.cpp:334 ../../../src/MenuConfig.cpp:1587
714 #: ../../../src/MenuGameOver.cpp:116
715 msgid "Exit"
716 msgstr "Beenden"
717
718 #: ../../../src/MenuConfig.cpp:335
719 msgid "Video"
720 msgstr "Grafik"
721
722 #: ../../../src/MenuConfig.cpp:336
164723 msgid "Audio"
165724 msgstr "Ton"
166725
167 #: ../../../src/GameStateConfigBase.cpp:161
168 #: ../../../src/GameStateConfigDesktop.cpp:131
726 #: ../../../src/MenuConfig.cpp:337
169727 msgid "Interface"
170728 msgstr "Interface"
171729
172 #: ../../../src/GameStateConfigBase.cpp:162
173 #: ../../../src/GameStateConfigDesktop.cpp:134
730 #: ../../../src/MenuConfig.cpp:338
731 msgid "Input"
732 msgstr "Eingabe"
733
734 #: ../../../src/MenuConfig.cpp:339
735 msgid "Keybindings"
736 msgstr "Tastenbelegung"
737
738 #: ../../../src/MenuConfig.cpp:340
174739 msgid "Mods"
175740 msgstr "Mods"
176741
177 #: ../../../src/GameStateConfigBase.cpp:249 ../../../src/MenuExit.cpp:72
742 #: ../../../src/MenuConfig.cpp:352
743 msgid "Paused"
744 msgstr "Pausiert"
745
746 #: ../../../src/MenuConfig.cpp:355
747 msgid "Time Played"
748 msgstr "Spielzeit"
749
750 #: ../../../src/MenuConfig.cpp:361
751 msgid "Renderer"
752 msgstr "Renderer"
753
754 #: ../../../src/MenuConfig.cpp:362
755 msgid "Full Screen Mode"
756 msgstr "Vollbildmodus"
757
758 #: ../../../src/MenuConfig.cpp:363
759 msgid "Hardware surfaces"
760 msgstr "Hardwareoberflächen"
761
762 #: ../../../src/MenuConfig.cpp:364
763 msgid "V-Sync"
764 msgstr "V-Sync"
765
766 #: ../../../src/MenuConfig.cpp:365
767 msgid "Texture Filtering"
768 msgstr "Texturfilter"
769
770 #: ../../../src/MenuConfig.cpp:366
771 msgid "DPI scaling"
772 msgstr "DPI-Skalierung"
773
774 #: ../../../src/MenuConfig.cpp:367
775 msgid "Parallax Layers"
776 msgstr "Parallax-Ebenen"
777
778 #: ../../../src/MenuConfig.cpp:368
779 msgid "Allow changing gamma"
780 msgstr "Änderbarer Gamma-Wert"
781
782 #: ../../../src/MenuConfig.cpp:369
783 msgid "Gamma"
784 msgstr "Gamma-Wert"
785
786 #: ../../../src/MenuConfig.cpp:371
787 msgid "Sound Volume"
788 msgstr "Soundlautstärke"
789
790 #: ../../../src/MenuConfig.cpp:372
178791 msgid "Music Volume"
179792 msgstr "Musiklautstärke"
180793
181 #: ../../../src/GameStateConfigBase.cpp:253 ../../../src/MenuExit.cpp:77
182 msgid "Sound Volume"
183 msgstr "Soundlautstärke"
184
185 #: ../../../src/GameStateConfigBase.cpp:257
794 #: ../../../src/MenuConfig.cpp:374
186795 msgid "Language"
187796 msgstr "Sprache"
188797
189 #: ../../../src/GameStateConfigBase.cpp:266
798 #: ../../../src/MenuConfig.cpp:375
190799 msgid "Show FPS"
191800 msgstr "Framerate anzeigen"
192801
193 #: ../../../src/GameStateConfigBase.cpp:270
802 #: ../../../src/MenuConfig.cpp:376
803 msgid "Hardware mouse cursor"
804 msgstr "Hardware-Mauszeiger"
805
806 #: ../../../src/MenuConfig.cpp:377
194807 msgid "Colorblind Mode"
195808 msgstr "Modus für Farbblinde"
196809
197 #: ../../../src/GameStateConfigBase.cpp:274
198 msgid "Hardware mouse cursor"
199 msgstr "Hardware-Mauszeiger"
200
201 #: ../../../src/GameStateConfigBase.cpp:278
810 #: ../../../src/MenuConfig.cpp:378
202811 msgid "Developer Mode"
203812 msgstr "Entwicklermodus"
204813
205 #: ../../../src/GameStateConfigBase.cpp:282
814 #: ../../../src/MenuConfig.cpp:379
206815 msgid "Subtitles"
207816 msgstr "Untertitel"
208817
209 #: ../../../src/GameStateConfigBase.cpp:286
210 msgid "Active Mods"
211 msgstr "Aktive Mods"
212
213 #: ../../../src/GameStateConfigBase.cpp:295
214 msgid "Available Mods"
215 msgstr "Verfügbare Mods"
216
217 #: ../../../src/GameStateConfigBase.cpp:314
218 msgid "<< Disable"
219 msgstr "<< Deaktivieren"
220
221 #: ../../../src/GameStateConfigBase.cpp:320
222 msgid "Enable >>"
223 msgstr "Aktivieren >>"
224
225 #: ../../../src/GameStateConfigBase.cpp:873
226 msgid "Version:"
227 msgstr "Version:"
228
229 #: ../../../src/GameStateConfigBase.cpp:878
230 msgid "Game:"
231 msgstr "Spiel:"
232
233 #: ../../../src/GameStateConfigBase.cpp:883
234 msgid "Engine version:"
235 msgstr "Engine-Version:"
236
237 #: ../../../src/GameStateConfigBase.cpp:891
238 msgid "Requires mods:"
239 msgstr "Benötigte Mods:"
240
241 #: ../../../src/GameStateConfigDesktop.cpp:83
242 #: ../../../src/GameStateConfigDesktop.cpp:751
243 msgid "Clear"
244 msgstr "Löschen"
245
246 #: ../../../src/GameStateConfigDesktop.cpp:83
247 #: ../../../src/GameStateConfigDesktop.cpp:749
248 msgid "Assign:"
249 msgstr "Zuweisen:"
250
251 #: ../../../src/GameStateConfigDesktop.cpp:128
252 msgid "Video"
253 msgstr "Grafik"
254
255 #: ../../../src/GameStateConfigDesktop.cpp:132
256 msgid "Input"
257 msgstr "Eingabe"
258
259 #: ../../../src/GameStateConfigDesktop.cpp:133
260 msgid "Keybindings"
261 msgstr "Tastenbelegung"
262
263 #: ../../../src/GameStateConfigDesktop.cpp:188
818 #: ../../../src/MenuConfig.cpp:380
819 msgid "Loot tooltip visibility"
820 msgstr "Sichtbarkeit der Beute-Hinweise"
821
822 #: ../../../src/MenuConfig.cpp:381
823 msgid "Mini-map mode"
824 msgstr "Minikarten-Modus"
825
826 #: ../../../src/MenuConfig.cpp:382
827 msgid "Always show stat bar labels"
828 msgstr "Immer Werteleistenbeschriftung anzeigen"
829
830 #: ../../../src/MenuConfig.cpp:383
831 msgid "Allow stat bar auto-hiding"
832 msgstr "Erlaube automatisches Verstecken der Werteleiste"
833
834 #: ../../../src/MenuConfig.cpp:384
835 msgid "Show combat text"
836 msgstr "Kampftexte anzeigen"
837
838 #: ../../../src/MenuConfig.cpp:385
839 msgid "Automatically equip items"
840 msgstr "Automatisch ausrüsten"
841
842 #: ../../../src/MenuConfig.cpp:386
843 msgid "Show hidden entity markers"
844 msgstr "Zeige versteckte Entitätsmarker"
845
846 #: ../../../src/MenuConfig.cpp:387
847 msgid "Low health notification"
848 msgstr "Niedrige-Gesundheit-Warnung"
849
850 #: ../../../src/MenuConfig.cpp:388
851 msgid "Low health threshold"
852 msgstr "Niedrige-Gesundheit-Schwellwert"
853
854 #: ../../../src/MenuConfig.cpp:389
855 msgid "Show item comparison tooltips"
856 msgstr ""
857
858 #: ../../../src/MenuConfig.cpp:392 ../../../src/MenuMovementType.cpp:94
859 #: ../../../src/MenuMovementType.cpp:131
860 msgid "Joystick"
861 msgstr "Joystick"
862
863 #: ../../../src/MenuConfig.cpp:393
864 msgid "Move hero using mouse"
865 msgstr "Maus steuert Bewegung"
866
867 #: ../../../src/MenuConfig.cpp:394
868 msgid "Mouse aim"
869 msgstr "Zielen mit der Maus"
870
871 #: ../../../src/MenuConfig.cpp:395
872 msgid "Do not use mouse"
873 msgstr "Maus nicht benutzen"
874
875 #: ../../../src/MenuConfig.cpp:396
876 msgid "Swap mouse movement button"
877 msgstr "Maustasten zum Bewegen umschalten"
878
879 #: ../../../src/MenuConfig.cpp:397
880 msgid "Attack with mouse movement"
881 msgstr "Mit Maussteuerung angreifen"
882
883 #: ../../../src/MenuConfig.cpp:398
884 msgid "Joystick Deadzone"
885 msgstr "Joystick-Todeszone"
886
887 #: ../../../src/MenuConfig.cpp:408
888 #, c-format
889 msgid "Primary binding: %s"
890 msgstr "Primäre Belegung: %s"
891
892 #: ../../../src/MenuConfig.cpp:409
893 #, c-format
894 msgid "Alternate binding: %s"
895 msgstr "Alternative Belegung: %s"
896
897 #: ../../../src/MenuConfig.cpp:410
898 #, c-format
899 msgid "Joystick binding: %s"
900 msgstr "Joystick Belegung: %s"
901
902 #: ../../../src/MenuConfig.cpp:511
264903 msgid ""
265904 "Will try to store surfaces in video memory versus system memory. The effect "
266905 "this has on performance depends on the renderer."
268907 "Wird versuchen, Oberflächen im Grafikspeicher anstelle des Systemspeichers "
269908 "zu speichern. Die Auswirkung auf die Performanz hängt vom Renderer ab."
270909
271 #: ../../../src/GameStateConfigDesktop.cpp:189
910 #: ../../../src/MenuConfig.cpp:512
272911 msgid ""
273912 "Prevents screen tearing. Disable if you experience \"stuttering\" in "
274913 "windowed mode or input lag."
276915 "Verhindert Screen Tearing. Deaktivieren, wenn du im Fenstermodus ein "
277916 "„Stottern“ oder Eingabeverzögerungen bemerkst."
278917
279 #: ../../../src/GameStateConfigDesktop.cpp:190
918 #: ../../../src/MenuConfig.cpp:513
280919 msgid ""
281920 "When enabled, this uses the screen DPI in addition to the window dimensions "
282921 "to scale the rendering resolution. Otherwise, only the window dimensions are"
286925 " anwenden, um die zum Zeichnen benutzte Auflösung zu skalieren. Ansonsten "
287926 "wird nur die Fenstergröße verwendet."
288927
289 #: ../../../src/GameStateConfigDesktop.cpp:191
928 #: ../../../src/MenuConfig.cpp:514
290929 msgid ""
291930 "This enables parallax (non-tile) layers. Disabling this setting can improve "
292931 "performance in some cases."
294933 "Aktiviert Parallax-Ebenen (Nicht-Kachel-Ebenen). Das Deaktivieren dieser "
295934 "Einstellung kann in einigen Fällen die Performanz erhöhen."
296935
297 #: ../../../src/GameStateConfigDesktop.cpp:192
298 msgid "Experimental"
299 msgstr "Experimentell"
300
301 #: ../../../src/GameStateConfigDesktop.cpp:193
302 msgid "For handheld devices"
303 msgstr "Für tragbare Geräte"
304
305 #: ../../../src/GameStateConfigDesktop.cpp:211
306 msgid "Renderer"
307 msgstr "Renderer"
308
309 #: ../../../src/GameStateConfigDesktop.cpp:227
310 msgid "Full Screen Mode"
311 msgstr "Vollbildmodus"
312
313 #: ../../../src/GameStateConfigDesktop.cpp:231
314 msgid "Move hero using mouse"
315 msgstr "Maus steuert Bewegung"
316
317 #: ../../../src/GameStateConfigDesktop.cpp:235
318 msgid "Hardware surfaces"
319 msgstr "Hardwareoberflächen"
320
321 #: ../../../src/GameStateConfigDesktop.cpp:239
322 msgid "V-Sync"
323 msgstr "V-Sync"
324
325 #: ../../../src/GameStateConfigDesktop.cpp:243
326 msgid "Texture Filtering"
327 msgstr "Texturfilter"
328
329 #: ../../../src/GameStateConfigDesktop.cpp:247
330 msgid "DPI scaling"
331 msgstr "DPI-Skalierung"
332
333 #: ../../../src/GameStateConfigDesktop.cpp:251
334 msgid "Parallax Layers"
335 msgstr "Parallax-Ebenen"
336
337 #: ../../../src/GameStateConfigDesktop.cpp:255
338 msgid "Allow changing gamma"
339 msgstr "Änderbarer Gamma-Wert"
340
341 #: ../../../src/GameStateConfigDesktop.cpp:259
342 msgid "Gamma"
343 msgstr "Gamma-Wert"
344
345 #: ../../../src/GameStateConfigDesktop.cpp:263
346 msgid "Use joystick"
347 msgstr "Joystick benutzen"
348
349 #: ../../../src/GameStateConfigDesktop.cpp:267
350 msgid "Joystick"
351 msgstr "Joystick"
352
353 #: ../../../src/GameStateConfigDesktop.cpp:283
354 msgid "Mouse aim"
355 msgstr "Zielen mit der Maus"
356
357 #: ../../../src/GameStateConfigDesktop.cpp:287
358 msgid "Do not use mouse"
359 msgstr "Maus nicht benutzen"
360
361 #: ../../../src/GameStateConfigDesktop.cpp:291
362 msgid "Joystick Deadzone"
363 msgstr "Joystick-Deadzone"
364
365 #: ../../../src/GameState.cpp:37 ../../../src/GameState.cpp:58
366 msgid "Loading..."
367 msgstr "Laden ..."
368
369 #: ../../../src/GameStateLoad.cpp:88 ../../../src/GameStateLoad.cpp:101
370 msgid "Delete Save"
371 msgstr "Spiel löschen"
372
373 #: ../../../src/GameStateLoad.cpp:88
374 msgid "Delete this save?"
375 msgstr "Diesen Spielstand löschen?"
376
377 #: ../../../src/GameStateLoad.cpp:90
378 msgid "Exit to Title"
379 msgstr "Hauptmenü"
380
381 #: ../../../src/GameStateLoad.cpp:93
382 msgid "New Game"
383 msgstr "Neues Spiel"
384
385 #: ../../../src/GameStateLoad.cpp:97 ../../../src/GameStateLoad.cpp:600
386 msgid "Choose a Slot"
387 msgstr "Eintrag wählen"
388
389 #: ../../../src/GameStateLoad.cpp:573 ../../../src/GameStateLoad.cpp:594
390 msgid "Enable a story mod to continue"
391 msgstr "Aktiviere eine Erzähl-Mod um fortzufahren"
392
393 #: ../../../src/GameStateLoad.cpp:589
394 msgid "Load Game"
395 msgstr "Spiel laden"
396
397 #: ../../../src/GameStateLoad.cpp:695
398 msgid "Entering game world..."
399 msgstr "Spielwelt wird betreten ..."
400
401 #: ../../../src/GameStateLoad.cpp:698
402 msgid "Loading saved game..."
403 msgstr "Spielstand wird geladen ..."
404
405 #: ../../../src/GameStateLoad.cpp:731
406 msgid "Invalid save"
407 msgstr "Ungültiger Spielstand"
408
409 #: ../../../src/GameStateLoad.cpp:755 ../../../src/ItemManager.cpp:747
410 #: ../../../src/MenuPowers.cpp:778 ../../../src/MenuPowers.cpp:1144
411 #: ../../../src/MenuPowers.cpp:1542
412 #, c-format
413 msgid "Level %d"
414 msgstr "Stufe %d"
415
416 #: ../../../src/GameStateNew.cpp:68
417 msgid "Create"
418 msgstr "Erstellen"
419
420 #: ../../../src/GameStateNew.cpp:76
421 msgid "Randomize"
422 msgstr "Würfeln"
423
424 #: ../../../src/GameStateNew.cpp:92
425 msgid "Choose a Portrait"
426 msgstr "Wähle dein Porträt"
427
428 #: ../../../src/GameStateNew.cpp:96
429 msgid "Choose a Name"
430 msgstr "Wähle deinen Namen"
431
432 #: ../../../src/GameStateNew.cpp:100
433 msgid "Permadeath?"
434 msgstr "Dauerhafter Tod?"
435
436 #: ../../../src/GameStateNew.cpp:104
437 msgid "Choose a Class"
438 msgstr "Wähle eine Klasse"
439
440 #: ../../../src/GameStateTitle.cpp:108
441 msgid "Play Game"
442 msgstr "Spiel starten"
443
444 #: ../../../src/GameStateTitle.cpp:111
445 msgid "Enable a core mod to continue"
446 msgstr "Aktiviere eine Kern-Mod um fortzufahren"
447
448 #: ../../../src/GameStateTitle.cpp:115
449 msgid "Configuration"
450 msgstr "Einstellungen"
451
452 #: ../../../src/GameStateTitle.cpp:118
453 msgid "Credits"
454 msgstr "Mitwirkende"
455
456 #: ../../../src/GameStateTitle.cpp:121
457 msgid "Exit Game"
936 #: ../../../src/MenuConfig.cpp:515
937 msgid ""
938 "Enables the below setting that controls the screen gamma level. The behavior"
939 " of the gamma setting can vary between platforms."
940 msgstr ""
941 "Aktiviert die Möglichkeit, den Gammawert des Spiels zu ändern. Das Verhalten"
942 " dieser Einstellung schwankt stark zwischen Plattformen."
943
944 #: ../../../src/MenuConfig.cpp:516
945 msgid ""
946 "Provides additional text for information that is primarily conveyed through "
947 "color."
948 msgstr ""
949 "Zeigt zusätzlichen Text für Informationen, die hauptsächlich durch Farben "
950 "dargestellt werden."
951
952 #: ../../../src/MenuConfig.cpp:517
953 msgid ""
954 "Some mods will automatically hide the stat bars when they are inactive. "
955 "Disabling this option will keep them displayed at all times."
956 msgstr ""
957 "Einige Mods verstecken automatisch die Werteleisten, wenn inaktiv. Das "
958 "Deaktivieren dieser Option wird sie durchgehend anzeigen."
959
960 #: ../../../src/MenuConfig.cpp:518
961 msgid ""
962 "When enabled, empty equipment slots will be filled with applicable items "
963 "when they are obtained."
964 msgstr ""
965 "Wenn aktiviert, werden leere Ausrüstungseinträge automatisch mit gefundenen "
966 "Gegenständen gefüllt."
967
968 #: ../../../src/MenuConfig.cpp:519
969 msgid ""
970 "Shows a marker above enemies, allies, and the player when they are obscured "
971 "by tall objects."
972 msgstr ""
973 "Zeige einen Marker über Gegner, Verbündeten und dem Spieler, wenn sie von "
974 "großen Objekten verdeckt werden."
975
976 #: ../../../src/MenuConfig.cpp:520
977 msgid ""
978 "When enabled, tooltips for equipped items of the same type are shown next to"
979 " standard item tooltips."
980 msgstr ""
981
982 #: ../../../src/MenuConfig.cpp:521
983 msgid ""
984 "This allows the game to be controlled entirely with the keyboard (or "
985 "joystick)."
986 msgstr "Erlaubt Steuerung des gesamten Spiels mit Tastatur (oder Joystick)."
987
988 #: ../../../src/MenuConfig.cpp:522
989 msgid ""
990 "When 'Move hero using mouse' is enabled, this setting controls if 'Main1' or"
991 " 'Main2' is used to move the hero. If enabled, 'Main2' will move the hero "
992 "instead of 'Main1'."
993 msgstr ""
994 "Wenn „Maus steuert Bewegung“ aktiviert ist, legt diese Einstellung fest, ob "
995 "„Aktionstaste 1“ oder „Aktionstaste 2“ benutzt wird, um den Helden zu "
996 "bewegen. Falls aktiviert, steuert „Aktionstaste 2“ statt „Aktionstaste 1“ "
997 "die Bewegung."
998
999 #: ../../../src/MenuConfig.cpp:523
1000 msgid ""
1001 "When 'Move hero using mouse' is enabled, this setting controls if the Power "
1002 "assigned to the movement button can be used by targeting an enemy. If this "
1003 "setting is disabled, it is required to use 'Shift' to access the Power "
1004 "assigned to the movement button."
1005 msgstr ""
1006 "Wenn „Maus steuert Bewegung“ aktiviert ist, steuert diese Einstellung, ob "
1007 "die auf Maustasten gelegte Attacke benutzt wird, indem auf einen Gegner "
1008 "gezielt wird. Wenn diese Einstellung deaktiviert ist, muss „Umschalt“ "
1009 "verwendet werden, um die auf Maustasten gelegte Attacke auszuführen."
1010
1011 #: ../../../src/MenuConfig.cpp:524
1012 msgid ""
1013 "The player's attacks will be aimed in the direction of the mouse cursor when"
1014 " this is enabled."
1015 msgstr ""
1016 "Wenn aktiviert, greift der Spieler in die Richtung des Mauszeigers an."
1017
1018 #: ../../../src/MenuConfig.cpp:575
1019 msgid "Active Mods"
1020 msgstr "Aktive Mods"
1021
1022 #: ../../../src/MenuConfig.cpp:584
1023 msgid "Available Mods"
1024 msgstr "Verfügbare Mods"
1025
1026 #: ../../../src/MenuConfig.cpp:603
1027 msgid "<< Disable"
1028 msgstr "<< Deaktivieren"
1029
1030 #: ../../../src/MenuConfig.cpp:609
1031 msgid "Enable >>"
1032 msgstr "Aktivieren >>"
1033
1034 #: ../../../src/MenuConfig.cpp:1444
1035 msgid "Version:"
1036 msgstr "Version:"
1037
1038 #: ../../../src/MenuConfig.cpp:1449
1039 msgid "Game:"
1040 msgstr "Spiel:"
1041
1042 #: ../../../src/MenuConfig.cpp:1454
1043 msgid "Engine version:"
1044 msgstr "Engine-Version:"
1045
1046 #: ../../../src/MenuConfig.cpp:1462
1047 msgid "Requires mods:"
1048 msgstr "Benötigte Mods:"
1049
1050 #: ../../../src/MenuConfig.cpp:1570 ../../../src/SDLInputState.cpp:748
1051 msgid "(none)"
1052 msgstr "(keine)"
1053
1054 #: ../../../src/MenuConfig.cpp:1587 ../../../src/MenuGameOver.cpp:73
1055 msgid "Save & Exit"
4581056 msgstr "Beenden"
4591057
460 #: ../../../src/InputState.cpp:402
461 msgid "Accept"
462 msgstr "Bestätigen"
463
464 #: ../../../src/InputState.cpp:403 ../../../src/SDLInputState.cpp:607
465 msgid "Up"
466 msgstr "Hoch"
467
468 #: ../../../src/InputState.cpp:404 ../../../src/SDLInputState.cpp:585
469 msgid "Down"
470 msgstr "Runter"
471
472 #: ../../../src/InputState.cpp:405 ../../../src/SDLInputState.cpp:592
473 msgid "Left"
474 msgstr "Links"
475
476 #: ../../../src/InputState.cpp:406 ../../../src/SDLInputState.cpp:602
477 msgid "Right"
478 msgstr "Rechts"
479
480 #: ../../../src/InputState.cpp:407
481 msgid "Bar1"
482 msgstr "Aktionsleiste 1"
483
484 #: ../../../src/InputState.cpp:408
485 msgid "Bar2"
486 msgstr "Aktionsleiste 2"
487
488 #: ../../../src/InputState.cpp:409
489 msgid "Bar3"
490 msgstr "Aktionsleiste 3"
491
492 #: ../../../src/InputState.cpp:410
493 msgid "Bar4"
494 msgstr "Aktionsleiste 4"
495
496 #: ../../../src/InputState.cpp:411
497 msgid "Bar5"
498 msgstr "Aktionsleiste 5"
499
500 #: ../../../src/InputState.cpp:412
501 msgid "Bar6"
502 msgstr "Aktionsleiste 6"
503
504 #: ../../../src/InputState.cpp:413
505 msgid "Bar7"
506 msgstr "Aktionsleiste 7"
507
508 #: ../../../src/InputState.cpp:414
509 msgid "Bar8"
510 msgstr "Aktionsleiste 8"
511
512 #: ../../../src/InputState.cpp:415
513 msgid "Bar9"
514 msgstr "Aktionsleiste 9"
515
516 #: ../../../src/InputState.cpp:416
517 msgid "Bar0"
518 msgstr "Aktionsleiste 0"
519
520 #: ../../../src/InputState.cpp:417 ../../../src/MenuActionBar.cpp:83
521 #: ../../../src/MenuCharacter.cpp:54
522 msgid "Character"
523 msgstr "Charakter"
524
525 #: ../../../src/InputState.cpp:418 ../../../src/MenuActionBar.cpp:84
526 #: ../../../src/MenuInventory.cpp:137 ../../../src/MenuVendor.cpp:57
527 msgid "Inventory"
528 msgstr "Inventar"
529
530 #: ../../../src/InputState.cpp:419 ../../../src/MenuActionBar.cpp:85
531 #: ../../../src/MenuPowers.cpp:168
532 msgid "Powers"
533 msgstr "Fähigkeiten"
534
535 #: ../../../src/InputState.cpp:420 ../../../src/MenuActionBar.cpp:86
536 #: ../../../src/MenuLog.cpp:72
537 msgid "Log"
538 msgstr "Journal"
539
540 #: ../../../src/InputState.cpp:421
541 msgid "Main1"
542 msgstr "Aktionstaste 1"
543
544 #: ../../../src/InputState.cpp:422
545 msgid "Main2"
546 msgstr "Aktionstaste 2"
547
548 #: ../../../src/InputState.cpp:423
549 msgid "Ctrl"
550 msgstr "Strg"
551
552 #: ../../../src/InputState.cpp:424
553 msgid "Shift"
554 msgstr "Umschalt"
555
556 #: ../../../src/InputState.cpp:425
557 msgid "Alt"
558 msgstr "Alt"
559
560 #: ../../../src/InputState.cpp:426 ../../../src/SDLInputState.cpp:584
561 msgid "Delete"
562 msgstr "Entf"
563
564 #: ../../../src/InputState.cpp:427
565 msgid "ActionBar Accept"
566 msgstr "Leiste Annehmen"
567
568 #: ../../../src/InputState.cpp:428
569 msgid "ActionBar Left"
570 msgstr "Leiste Links"
571
572 #: ../../../src/InputState.cpp:429
573 msgid "ActionBar Right"
574 msgstr "Leiste Rechts"
575
576 #: ../../../src/InputState.cpp:430
577 msgid "ActionBar Use"
578 msgstr "Leiste Benutzen"
579
580 #: ../../../src/InputState.cpp:431
581 msgid "Developer Menu"
582 msgstr "Entwicklermenü"
583
584 #: ../../../src/InputState.cpp:433
585 msgid "Left Mouse"
586 msgstr "Maus links"
587
588 #: ../../../src/InputState.cpp:434
589 msgid "Middle Mouse"
590 msgstr "Maus mittig"
591
592 #: ../../../src/InputState.cpp:435
593 msgid "Right Mouse"
594 msgstr "Maus rechts"
595
596 #: ../../../src/InputState.cpp:436
597 msgid "Wheel Up"
598 msgstr "Mausrad auf"
599
600 #: ../../../src/InputState.cpp:437
601 msgid "Wheel Down"
602 msgstr "Mausrad ab"
603
604 #: ../../../src/InputState.cpp:438
605 msgid "Mouse X1"
606 msgstr "Maus X1"
607
608 #: ../../../src/InputState.cpp:439
609 msgid "Mouse X2"
610 msgstr "Maus X2"
611
612 #: ../../../src/ItemManager.cpp:450 ../../../src/ItemManager.cpp:453
613 msgid "Unknown Item"
614 msgstr "Unbekannter Gegenstand"
615
616 #: ../../../src/ItemManager.cpp:648 ../../../src/MenuPowers.cpp:887
617 #, c-format
618 msgid "%d%% Speed"
619 msgstr "%d%% Geschwindigkeit"
620
621 #: ../../../src/ItemManager.cpp:652 ../../../src/MenuPowers.cpp:890
622 #, c-format
623 msgid "%d%% Attack Speed"
624 msgstr "%d%% Angriffsgeschwindigkeit"
625
626 #: ../../../src/ItemManager.cpp:674 ../../../src/MenuCharacter.cpp:354
627 #: ../../../src/MenuPowers.cpp:833
628 #, c-format
629 msgid "Resistance (%s)"
630 msgstr "Widerstand (%s)"
631
632 #: ../../../src/ItemManager.cpp:684
633 #, c-format
634 msgid "Requires %s"
635 msgstr "Benötigt %s"
636
637 #: ../../../src/ItemManager.cpp:733
638 msgid "Quest Item"
639 msgstr "Aufgabengegenstand"
640
641 #: ../../../src/ItemManager.cpp:760
642 #, c-format
643 msgid "Quality: %s"
644 msgstr "Qualität: %s"
645
646 #: ../../../src/ItemManager.cpp:785
647 #, c-format
648 msgid "Absorb: %d-%d"
649 msgstr "Absorbieren: %d-%d"
650
651 #: ../../../src/ItemManager.cpp:787
652 #, c-format
653 msgid "Absorb: %d"
654 msgstr "Absorbieren: %d"
655
656 #: ../../../src/ItemManager.cpp:827 ../../../src/MenuPowers.cpp:1131
657 #: ../../../src/MenuPowers.cpp:1134
658 #, c-format
659 msgid "Requires Level %d"
660 msgstr "Benötigt Stufe %d"
661
662 #: ../../../src/ItemManager.cpp:838 ../../../src/MenuPowers.cpp:1123
663 #: ../../../src/MenuPowers.cpp:1125
664 #, c-format
665 msgid "Requires %s %d"
666 msgstr "Benötigt %s %d"
667
668 #: ../../../src/ItemManager.cpp:849
669 #, c-format
670 msgid "Requires Class: %s"
671 msgstr "Benötigt Klasse: %s"
672
673 #: ../../../src/ItemManager.cpp:864 ../../../src/ItemManager.cpp:876
674 #, c-format
675 msgid "Buy Price: %d %s"
676 msgstr "Kaufpreis: %d %s"
677
678 #: ../../../src/ItemManager.cpp:866 ../../../src/ItemManager.cpp:878
679 #, c-format
680 msgid "Buy Price: %d %s each"
681 msgstr "Kaufpreis: je %d %s"
682
683 #: ../../../src/ItemManager.cpp:886
684 #, c-format
685 msgid "Sell Price: %d %s"
686 msgstr "Verkaufspreis: %d %s"
687
688 #: ../../../src/ItemManager.cpp:888
689 #, c-format
690 msgid "Sell Price: %d %s each"
691 msgstr "Verkaufspreis: je %d %s"
692
693 #: ../../../src/ItemManager.cpp:897
694 msgid "Set:"
695 msgstr "Set:"
696
697 #: ../../../src/ItemManager.cpp:904
698 #, c-format
699 msgid "%d items:"
700 msgstr "%d Gegenstände:"
701
702 #: ../../../src/ItemManager.cpp:917
703 #, c-format
704 msgid "Press [%s] to use"
705 msgstr "Drücke [%s] zum Verwenden"
706
707 #: ../../../src/ItemManager.cpp:920
708 #, c-format
709 msgid "Press [%s] to read"
710 msgstr "Drücke [%s] zum Lesen"
711
712 #: ../../../src/MenuActionBar.cpp:87
713 msgid "Loot tooltip visibility"
714 msgstr "Sichtbarkeit der Beute-Hinweise"
715
716 #: ../../../src/MenuActionBar.cpp:88
717 msgid "Mini-map mode"
718 msgstr "Minikarten-Modus"
719
720 #: ../../../src/MenuActionBar.cpp:89
721 msgid "Always show stat bar labels"
722 msgstr "Immer Werteleistenbeschriftung anzeigen"
723
724 #: ../../../src/MenuActionBar.cpp:90
725 msgid "Show combat text"
726 msgstr "Kampftexte anzeigen"
727
728 #: ../../../src/MenuActionBar.cpp:254 ../../../src/MenuActionBar.cpp:261
729 #: ../../../src/MenuActionBar.cpp:264 ../../../src/MenuActionBar.cpp:271
730 #, c-format
731 msgid "Hotkey: %s"
732 msgstr "Schnelltaste: %s"
733
734 #: ../../../src/MenuActionBar.cpp:474
735 #, c-format
736 msgid "Default. Temporarily show all loot tooltips with '%s'."
737 msgstr "Standard. Zeige vorübergehend alle Beute-Hinweise mit '%s'."
738
739 #: ../../../src/MenuActionBar.cpp:476
740 #, c-format
741 msgid "Show All. Temporarily hide all loot tooltips with '%s'."
742 msgstr "Zeige Alles. Verstecke vorübergehend alle Beute-Hinweise mit '%s'."
743
744 #: ../../../src/MenuActionBar.cpp:478
745 #, c-format
746 msgid "Hide All. Temporarily show all loot tooltips with '%s'."
747 msgstr "Verstecke Alles. Zeige vorübergehend alle Beute-Hinweise mit '%s'."
748
749 #: ../../../src/MenuActionBar.cpp:482
750 msgid "Visible"
751 msgstr "Sichtbar"
752
753 #: ../../../src/MenuActionBar.cpp:484
754 msgid "Visible (2x zoom)"
755 msgstr "Sichtbar (2x Zoom)"
756
757 #: ../../../src/MenuActionBar.cpp:486
758 msgid "Hidden"
759 msgstr "Versteckt"
760
761 #: ../../../src/MenuActionBar.cpp:490 ../../../src/MenuActionBar.cpp:496
762 msgid "Enabled"
763 msgstr "Aktiviert"
764
765 #: ../../../src/MenuActionBar.cpp:492 ../../../src/MenuActionBar.cpp:498
766 msgid "Disabled"
767 msgstr "Deaktiviert"
768
769 #: ../../../src/MenuActionBar.cpp:657
770 msgid "Not enough MP."
771 msgstr "Nicht genügend MP."
772
773 #: ../../../src/MenuActiveEffects.cpp:124
774 #, c-format
775 msgid "x%d"
776 msgstr "×%d"
777
778 #: ../../../src/MenuActiveEffects.cpp:219
779 msgid "Remaining:"
780 msgstr "Verbleibend:"
781
782 #: ../../../src/MenuActiveEffects.cpp:225
783 #, c-format
784 msgid "x%d stacks"
785 msgstr "×%d Stapel"
786
787 #: ../../../src/MenuCharacter.cpp:73 ../../../src/MenuCharacter.cpp:78
788 msgid "Name"
789 msgstr "Name"
790
791 #: ../../../src/MenuCharacter.cpp:74 ../../../src/MenuCharacter.cpp:79
792 msgid "Level"
793 msgstr "Stufe"
794
795 #: ../../../src/MenuCharacter.cpp:310
796 #, c-format
797 msgid "%d unspent stat point"
798 msgstr "%d verfügbarer Wertepunkt"
799
800 #: ../../../src/MenuCharacter.cpp:313
801 #, c-format
802 msgid "%d unspent stat points"
803 msgstr "%d verfügbare Wertepunkte"
804
805 #: ../../../src/MenuCharacter.cpp:355
806 #, c-format
807 msgid "Reduces the damage taken from \"%s\" elemental attacks."
808 msgstr "Reduziert den Schaden von „%s“-Elementarangriffen."
809
810 #: ../../../src/MenuCharacter.cpp:365 ../../../src/MenuManager.cpp:283
811 #, c-format
812 msgid "XP: %d"
813 msgstr "EP: %d"
814
815 #: ../../../src/MenuCharacter.cpp:367
816 #, c-format
817 msgid "Next: %d"
818 msgstr "Nächste: %d"
819
820 #: ../../../src/MenuCharacter.cpp:373
821 #, c-format
822 msgid "base (%d), bonus (%d)"
823 msgstr "Basis (%d), Bonus (%d)"
824
825 #: ../../../src/MenuCharacter.cpp:381 ../../../src/MenuCharacter.cpp:395
826 msgid "Related stats:"
827 msgstr "Verwandte Werte: "
828
829 #: ../../../src/MenuCharacter.cpp:421 ../../../src/MenuCharacter.cpp:445
830 #, c-format
831 msgid "Each level grants %d."
832 msgstr "Jede Stufe gewährt %d."
833
834 #: ../../../src/MenuCharacter.cpp:425 ../../../src/MenuCharacter.cpp:449
835 #, c-format
836 msgid "Each point of %s grants %d."
837 msgstr "Jeder Punkt %s gewährt %d."
838
839 #: ../../../src/MenuDevConsole.cpp:63
1058 #: ../../../src/MenuDevConsole.cpp:65
8401059 msgid "Execute"
8411060 msgstr "Ausführen"
8421061
843 #: ../../../src/MenuDevConsole.cpp:101 ../../../src/MenuDevConsole.cpp:151
1062 #: ../../../src/MenuDevConsole.cpp:103 ../../../src/MenuDevConsole.cpp:153
8441063 msgid "Developer Console"
8451064 msgstr "Entwicklerkonsole"
8461065
847 #: ../../../src/MenuDevConsole.cpp:141
1066 #: ../../../src/MenuDevConsole.cpp:143
8481067 #, c-format
8491068 msgid "Use '%s' to inspect with the cursor."
8501069 msgstr "Benutze „%s“, um mit dem Mauszeiger zu untersuchen."
8511070
852 #: ../../../src/MenuDevConsole.cpp:146
1071 #: ../../../src/MenuDevConsole.cpp:148
8531072 msgid "Arguments with spaces should be enclosed with double quotes. Example:"
8541073 msgstr ""
8551074 "Argumente mit Leerzeichen sollten in doppelte Anführungszeichen gesetzt "
856 "sein. Beispiel: "
857
858 #: ../../../src/MenuDevConsole.cpp:147
1075 "sein. Beispiel:"
1076
1077 #: ../../../src/MenuDevConsole.cpp:149
8591078 msgid "Type 'help' to get a list of commands."
8601079 msgstr "„help“ eingeben, um Liste an Befehlen zu erhalten."
8611080
862 #: ../../../src/MenuDevConsole.cpp:209 ../../../src/MenuDevConsole.cpp:213
1081 #: ../../../src/MenuDevConsole.cpp:211 ../../../src/MenuDevConsole.cpp:215
8631082 msgid "px"
8641083 msgstr "px"
8651084
866 #: ../../../src/MenuDevConsole.cpp:224
1085 #: ../../../src/MenuDevConsole.cpp:226
8671086 msgid "Distance"
8681087 msgstr "Distanz"
8691088
870 #: ../../../src/MenuDevConsole.cpp:239 ../../../src/MenuDevConsole.cpp:286
1089 #: ../../../src/MenuDevConsole.cpp:241 ../../../src/MenuDevConsole.cpp:289
1090 #: ../../../src/MenuDevConsole.cpp:303
8711091 msgid "Entity"
872 msgstr "Entity"
873
874 #: ../../../src/MenuDevConsole.cpp:261 ../../../src/MenuDevConsole.cpp:268
1092 msgstr "Entität"
1093
1094 #: ../../../src/MenuDevConsole.cpp:263 ../../../src/MenuDevConsole.cpp:270
8751095 msgid "none"
8761096 msgstr "kein"
8771097
878 #: ../../../src/MenuDevConsole.cpp:262 ../../../src/MenuDevConsole.cpp:264
1098 #: ../../../src/MenuDevConsole.cpp:264 ../../../src/MenuDevConsole.cpp:266
8791099 msgid "wall"
8801100 msgstr "Wand"
8811101
882 #: ../../../src/MenuDevConsole.cpp:263 ../../../src/MenuDevConsole.cpp:265
1102 #: ../../../src/MenuDevConsole.cpp:265 ../../../src/MenuDevConsole.cpp:267
8831103 msgid "short wall / pit"
8841104 msgstr "kurze Wand / Grube"
8851105
886 #: ../../../src/MenuDevConsole.cpp:266
1106 #: ../../../src/MenuDevConsole.cpp:268
8871107 msgid "entity"
888 msgstr "Entity"
889
890 #: ../../../src/MenuDevConsole.cpp:267
1108 msgstr "Entität"
1109
1110 #: ../../../src/MenuDevConsole.cpp:269
8911111 msgid "entity, ally"
892 msgstr "Entity, verbündet"
893
894 #: ../../../src/MenuDevConsole.cpp:274
1112 msgstr "Entität, verbündet"
1113
1114 #: ../../../src/MenuDevConsole.cpp:276
8951115 msgid "Tile"
8961116 msgstr "Kachel"
8971117
898 #: ../../../src/MenuDevConsole.cpp:360
1118 #: ../../../src/MenuDevConsole.cpp:377
8991119 msgid "adds a power to the action bar"
9001120 msgstr "fügt eine Fähigkeit zur Aktionsleiste hinzu"
9011121
902 #: ../../../src/MenuDevConsole.cpp:361
1122 #: ../../../src/MenuDevConsole.cpp:378
9031123 msgid "turns on/off the display of the FPS counter"
9041124 msgstr "schaltet die FPS-Anzeige an/aus"
9051125
906 #: ../../../src/MenuDevConsole.cpp:362
1126 #: ../../../src/MenuDevConsole.cpp:379
9071127 msgid "turns on/off all of the HUD elements"
9081128 msgstr "schaltet alle HUD-Elemente an/aus"
9091129
910 #: ../../../src/MenuDevConsole.cpp:363
1130 #: ../../../src/MenuDevConsole.cpp:380
9111131 msgid "turns on/off the developer hud"
9121132 msgstr "schaltet das Entwickler-HUD an/aus"
9131133
914 #: ../../../src/MenuDevConsole.cpp:364
1134 #: ../../../src/MenuDevConsole.cpp:381
9151135 msgid ""
9161136 "Prints a list of powers that match a search term. No search term will list "
9171137 "all items"
9191139 "Gibt eine Liste an Kräften aus, die auf einen Suchbegriff passen. Ohne "
9201140 "Suchbegriff werden alle aufgelistet"
9211141
922 #: ../../../src/MenuDevConsole.cpp:365
1142 #: ../../../src/MenuDevConsole.cpp:382
9231143 msgid "Prints out all the map filenames located in the \"maps/\" directory."
9241144 msgstr "Gibt alle Karten-Dateinamen der Dateien im „maps/“-Verzeichnis aus."
9251145
926 #: ../../../src/MenuDevConsole.cpp:366
1146 #: ../../../src/MenuDevConsole.cpp:383
9271147 msgid ""
9281148 "Prints out the active campaign statuses that match a search term. No search "
9291149 "term will list all active statuses"
9311151 "Gibt die aktiven Kampagnen-Status, die auf einen Suchbegriff passen, aus. "
9321152 "Ohne Suchbegriff werden die aktiven Status aufgelistet"
9331153
934 #: ../../../src/MenuDevConsole.cpp:367
1154 #: ../../../src/MenuDevConsole.cpp:384
9351155 msgid ""
9361156 "Prints a list of items that match a search term. No search term will list "
9371157 "all items"
9391159 "Gibt eine Liste an Gegenständen, die auf einen Suchbegriff passen, aus. Ohne"
9401160 " Suchbegriff werden alle Gegenstände aufgelistet"
9411161
942 #: ../../../src/MenuDevConsole.cpp:368
1162 #: ../../../src/MenuDevConsole.cpp:385
9431163 msgid ""
9441164 "parses a series of event components and executes them as a single event"
9451165 msgstr ""
9461166 "parst eine Reihe an Ereigniskomponenten und führt sie als ein einzelnes "
9471167 "Ereignis aus"
9481168
949 #: ../../../src/MenuDevConsole.cpp:369
1169 #: ../../../src/MenuDevConsole.cpp:386
9501170 msgid "clears the command history"
9511171 msgstr "löscht die Befehlshistorie"
9521172
953 #: ../../../src/MenuDevConsole.cpp:370
1173 #: ../../../src/MenuDevConsole.cpp:387
9541174 msgid "displays this text"
9551175 msgstr "zeigt diesen Text an"
9561176
957 #: ../../../src/MenuDevConsole.cpp:377
1177 #: ../../../src/MenuDevConsole.cpp:394
9581178 msgid "Toggled the developer hud"
9591179 msgstr "Entwickler-HUD umgeschaltet"
9601180
961 #: ../../../src/MenuDevConsole.cpp:381
1181 #: ../../../src/MenuDevConsole.cpp:398
9621182 msgid "Toggled the hud"
9631183 msgstr "HUD umgeschaltet"
9641184
965 #: ../../../src/MenuDevConsole.cpp:385
1185 #: ../../../src/MenuDevConsole.cpp:402
9661186 msgid "Toggled the FPS counter"
9671187 msgstr "FPS-Anzeige umgeschaltet"
9681188
969 #: ../../../src/MenuDevConsole.cpp:534
1189 #: ../../../src/MenuDevConsole.cpp:552
9701190 msgid "ERROR: Incorrect number of arguments"
9711191 msgstr "FEHLER: Ungültige Anzahl an Argumenten"
9721192
973 #: ../../../src/MenuDevConsole.cpp:536 ../../../src/MenuDevConsole.cpp:564
1193 #: ../../../src/MenuDevConsole.cpp:554 ../../../src/MenuDevConsole.cpp:582
9741194 msgid "HINT:"
9751195 msgstr "TIPP:"
9761196
977 #: ../../../src/MenuDevConsole.cpp:536
1197 #: ../../../src/MenuDevConsole.cpp:554
9781198 msgid "<id>"
979 msgstr "<id>"
980
981 #: ../../../src/MenuDevConsole.cpp:552
1199 msgstr "<ID>"
1200
1201 #: ../../../src/MenuDevConsole.cpp:570
9821202 #, c-format
9831203 msgid "ERROR: '%s' is not a valid event key"
9841204 msgstr "FEHLER: „%s“ ist kein gültiger Ereignisschlüssel"
9851205
986 #: ../../../src/MenuDevConsole.cpp:562
1206 #: ../../../src/MenuDevConsole.cpp:580
9871207 msgid "ERROR: Too few arguments"
9881208 msgstr "FEHLER: zu wenig Argumente"
9891209
990 #: ../../../src/MenuDevConsole.cpp:564
1210 #: ../../../src/MenuDevConsole.cpp:582
9911211 msgid "<key>=<val> <key>=<val> ..."
992 msgstr "<key>=<val> <key>=<val> ..."
993
994 #: ../../../src/MenuDevConsole.cpp:569
1212 msgstr "<Schlüssel>=<Wert> <Schlüssel>=<Wert> ..."
1213
1214 #: ../../../src/MenuDevConsole.cpp:587
9951215 msgid "ERROR: Unknown command"
9961216 msgstr "FEHLER: unbekannter Befehl"
9971217
998 #: ../../../src/MenuDevConsole.cpp:571
1218 #: ../../../src/MenuDevConsole.cpp:589
9991219 msgid "HINT: Type help"
10001220 msgstr "TIPP: Gib „help“ ein"
10011221
1002 #: ../../../src/MenuEnemy.cpp:138
1222 #: ../../../src/MenuEnemy.cpp:162
10031223 #, c-format
10041224 msgid "%s level %d"
10051225 msgstr "%s Stufe %d"
10061226
1007 #: ../../../src/MenuEnemy.cpp:162
1227 #: ../../../src/MenuEnemy.cpp:186
10081228 msgid "Dead"
10091229 msgstr "Tot"
10101230
1011 #: ../../../src/MenuEnemy.cpp:164
1231 #: ../../../src/MenuEnemy.cpp:188
10121232 msgid "Destroyed"
10131233 msgstr "Zerstört"
10141234
1015 #: ../../../src/MenuExit.cpp:85 ../../../src/MenuExit.cpp:139
1016 msgid "Paused"
1017 msgstr "Pausiert"
1018
1019 #: ../../../src/MenuExit.cpp:91
1020 msgid "Save & Exit"
1021 msgstr "Beenden"
1022
1023 #: ../../../src/MenuExit.cpp:92
1024 msgid "Exit"
1025 msgstr "Beenden"
1026
1027 #: ../../../src/MenuExit.cpp:96
1028 msgid "Continue"
1029 msgstr "Fortsetzen"
1030
1031 #: ../../../src/MenuInventory.cpp:73
1032 msgid "Automatically equip items"
1033 msgstr "Automatisch ausrüsten"
1034
1035 #: ../../../src/MenuInventory.cpp:188
1235 #: ../../../src/MenuGameOver.cpp:69
1236 msgid "Game Over"
1237 msgstr ""
1238
1239 #: ../../../src/MenuInventory.cpp:178
10361240 #, c-format
10371241 msgid "Lost %d%% of %s."
10381242 msgstr "%d%% an %s verloren."
10391243
1040 #: ../../../src/MenuInventory.cpp:195
1244 #: ../../../src/MenuInventory.cpp:185
10411245 #, c-format
10421246 msgid "Lost %d%% of total XP."
10431247 msgstr "%d%% der gesamten EP verloren."
10441248
1045 #: ../../../src/MenuInventory.cpp:200
1249 #: ../../../src/MenuInventory.cpp:190
10461250 #, c-format
10471251 msgid "Lost %d%% of current level XP."
10481252 msgstr "%d%% EP der aktuellen Stufe verloren."
10491253
1050 #: ../../../src/MenuInventory.cpp:226
1254 #: ../../../src/MenuInventory.cpp:216
10511255 #, c-format
10521256 msgid "Lost %s."
10531257 msgstr "%s verloren."
10541258
1055 #: ../../../src/MenuInventory.cpp:274 ../../../src/MenuStash.cpp:146
1259 #: ../../../src/MenuInventory.cpp:258 ../../../src/MenuStash.cpp:276
10561260 #, c-format
10571261 msgid "%d %s"
10581262 msgstr "%d %s"
10591263
1060 #: ../../../src/MenuInventory.cpp:317
1264 #: ../../../src/MenuInventory.cpp:301
10611265 msgid "Pick up item(s):"
10621266 msgstr "Aufnehmen:"
10631267
1064 #: ../../../src/MenuInventory.cpp:318
1268 #: ../../../src/MenuInventory.cpp:302
10651269 msgid "Use or equip item:"
10661270 msgstr "Ausrüsten:"
10671271
1068 #: ../../../src/MenuInventory.cpp:319
1272 #: ../../../src/MenuInventory.cpp:303
10691273 #, c-format
10701274 msgid "%s modifiers"
10711275 msgstr "Tastenkombinationen mit %s:"
10721276
1073 #: ../../../src/MenuInventory.cpp:320
1277 #: ../../../src/MenuInventory.cpp:304
10741278 msgid "Select a quantity of item:"
10751279 msgstr "Anzahl wählen:"
10761280
1077 #: ../../../src/MenuInventory.cpp:323
1281 #: ../../../src/MenuInventory.cpp:307
10781282 msgid "Stash item stack:"
10791283 msgstr "Stapel einlagern:"
10801284
1081 #: ../../../src/MenuInventory.cpp:325
1285 #: ../../../src/MenuInventory.cpp:309
10821286 msgid "Sell item stack:"
10831287 msgstr "Stapel verkaufen:"
10841288
1085 #: ../../../src/MenuInventory.cpp:592
1289 #: ../../../src/MenuInventory.cpp:576
10861290 msgid "You don't have enough of the required item."
10871291 msgstr "Du hast nicht genug von diesem Gegenstand."
10881292
1089 #: ../../../src/MenuInventory.cpp:599
1293 #: ../../../src/MenuInventory.cpp:588
10901294 msgid "You can't use this item right now."
10911295 msgstr "Du kannst diesen Gegenstand jetzt nicht benutzen."
10921296
1093 #: ../../../src/MenuInventory.cpp:611
1297 #: ../../../src/MenuInventory.cpp:600
10941298 msgid "This item can only be used from the action bar."
10951299 msgstr "Dieser Gegenstand kann nur von der Aktionsleiste benutzt werden."
10961300
1097 #: ../../../src/MenuInventory.cpp:729
1301 #: ../../../src/MenuInventory.cpp:718
10981302 msgid "Inventory is full."
10991303 msgstr "Inventar ist voll."
11001304
1101 #: ../../../src/MenuInventory.cpp:849
1305 #: ../../../src/MenuInventory.cpp:843
11021306 #, c-format
11031307 msgid "Not enough %s."
11041308 msgstr "Nicht genug %s."
11051309
1106 #: ../../../src/MenuInventory.cpp:869 ../../../src/MenuInventory.cpp:876
1310 #: ../../../src/MenuInventory.cpp:863 ../../../src/MenuInventory.cpp:870
11071311 msgid "This item can not be sold."
11081312 msgstr "Dieser Gegenstand kann nicht verkauft werden."
11091313
11151319 msgid "Quests"
11161320 msgstr "Aufgaben"
11171321
1118 #: ../../../src/MenuManager.cpp:286
1322 #: ../../../src/MenuManager.cpp:305
11191323 #, c-format
11201324 msgid "XP: %d/%d"
11211325 msgstr "EP: %d/%d"
11221326
1123 #: ../../../src/MenuManager.cpp:827
1327 #: ../../../src/MenuManager.cpp:875
11241328 msgid "This item can not be dropped."
11251329 msgstr "Dieser Gegenstand kann nicht abgelegt werden."
1330
1331 #: ../../../src/MenuManager.cpp:1501
1332 msgid "Equipped"
1333 msgstr ""
1334
1335 #: ../../../src/MenuMovementType.cpp:87
1336 msgid "Select a Movement Type"
1337 msgstr ""
1338
1339 #: ../../../src/MenuMovementType.cpp:89
1340 msgid "Can be changed later in the Configuration menu."
1341 msgstr ""
1342
1343 #: ../../../src/MenuMovementType.cpp:92 ../../../src/MenuMovementType.cpp:122
1344 msgid "Keyboard"
1345 msgstr ""
1346
1347 #: ../../../src/MenuMovementType.cpp:93 ../../../src/MenuMovementType.cpp:128
1348 msgid "Mouse"
1349 msgstr ""
1350
1351 #: ../../../src/MenuMovementType.cpp:129
1352 msgid "Button"
1353 msgstr ""
11261354
11271355 #: ../../../src/MenuNumPicker.cpp:59
11281356 msgid "Enter amount:"
11291357 msgstr "Anzahl eingeben:"
11301358
1131 #: ../../../src/MenuPowers.cpp:787
1359 #: ../../../src/MenuPowers.cpp:872
11321360 msgid "Passive"
11331361 msgstr "Passiv"
11341362
1135 #: ../../../src/MenuPowers.cpp:792
1363 #: ../../../src/MenuPowers.cpp:879
11361364 #, c-format
11371365 msgid "Costs %d MP"
11381366 msgstr "Kostet %d MP"
11391367
1140 #: ../../../src/MenuPowers.cpp:796
1368 #: ../../../src/MenuPowers.cpp:883
11411369 #, c-format
11421370 msgid "Costs %d HP"
11431371 msgstr "Kostet %d TP"
11441372
1145 #: ../../../src/MenuPowers.cpp:801
1373 #: ../../../src/MenuPowers.cpp:887
11461374 msgid "Cooldown:"
11471375 msgstr "Abklingzeit:"
11481376
1149 #: ../../../src/MenuPowers.cpp:866 ../../../src/MenuPowers.cpp:869
1377 #: ../../../src/MenuPowers.cpp:938 ../../../src/MenuPowers.cpp:941
11501378 msgid "Damage per second"
11511379 msgstr "Schaden je Sekunde"
11521380
1153 #: ../../../src/MenuPowers.cpp:872 ../../../src/MenuPowers.cpp:875
1381 #: ../../../src/MenuPowers.cpp:944 ../../../src/MenuPowers.cpp:947
11541382 msgid "HP per second"
11551383 msgstr "TP je Sekunde"
11561384
1157 #: ../../../src/MenuPowers.cpp:878 ../../../src/MenuPowers.cpp:881
1385 #: ../../../src/MenuPowers.cpp:950 ../../../src/MenuPowers.cpp:953
11581386 msgid "MP per second"
11591387 msgstr "MP je Sekunde"
11601388
1161 #: ../../../src/MenuPowers.cpp:885
1389 #: ../../../src/MenuPowers.cpp:957
11621390 msgid "Immobilize"
11631391 msgstr "Erstarren"
11641392
1165 #: ../../../src/MenuPowers.cpp:893
1393 #: ../../../src/MenuPowers.cpp:965
11661394 msgid "Immunity"
11671395 msgstr "Immunität"
11681396
1169 #: ../../../src/MenuPowers.cpp:896
1397 #: ../../../src/MenuPowers.cpp:968
11701398 msgid "Immunity to damage over time"
11711399 msgstr "Immunität gegen Zeitschaden"
11721400
1173 #: ../../../src/MenuPowers.cpp:899
1401 #: ../../../src/MenuPowers.cpp:971
11741402 msgid "Immunity to slow"
11751403 msgstr "Immunität gegen Verzögerung"
11761404
1177 #: ../../../src/MenuPowers.cpp:902
1405 #: ../../../src/MenuPowers.cpp:974
11781406 msgid "Immunity to stun"
11791407 msgstr "Immunität gegen Schock"
11801408
1181 #: ../../../src/MenuPowers.cpp:905
1409 #: ../../../src/MenuPowers.cpp:977
11821410 msgid "Immunity to HP steal"
11831411 msgstr "Immunität gegen TP-Stehlen"
11841412
1185 #: ../../../src/MenuPowers.cpp:908
1413 #: ../../../src/MenuPowers.cpp:980
11861414 msgid "Immunity to MP steal"
11871415 msgstr "Immunität gegen MP-Stehlen"
11881416
1189 #: ../../../src/MenuPowers.cpp:911
1417 #: ../../../src/MenuPowers.cpp:983
11901418 msgid "Immunity to knockback"
11911419 msgstr "Immunität gegen Rückschlag"
11921420
1193 #: ../../../src/MenuPowers.cpp:914
1421 #: ../../../src/MenuPowers.cpp:986
11941422 msgid "Immunity to damage reflection"
11951423 msgstr "Immunität gegen Reflektionsschaden"
11961424
1197 #: ../../../src/MenuPowers.cpp:917
1425 #: ../../../src/MenuPowers.cpp:992
11981426 msgid "Stun"
11991427 msgstr "Schock"
12001428
1201 #: ../../../src/MenuPowers.cpp:920
1429 #: ../../../src/MenuPowers.cpp:995
12021430 msgid "Automatic revive on death"
12031431 msgstr "Automatisch wiederbeleben"
12041432
1205 #: ../../../src/MenuPowers.cpp:923
1433 #: ../../../src/MenuPowers.cpp:998
12061434 msgid "Convert"
12071435 msgstr "Umwandeln"
12081436
1209 #: ../../../src/MenuPowers.cpp:926
1437 #: ../../../src/MenuPowers.cpp:1001
12101438 msgid "Fear"
12111439 msgstr "Angst"
12121440
1213 #: ../../../src/MenuPowers.cpp:929
1441 #: ../../../src/MenuPowers.cpp:1004
12141442 msgid "Lifespan"
12151443 msgstr "Lebenszeit"
12161444
1217 #: ../../../src/MenuPowers.cpp:953
1445 #: ../../../src/MenuPowers.cpp:1028
12181446 msgid "Magical Shield"
12191447 msgstr "Magischer Schild"
12201448
1221 #: ../../../src/MenuPowers.cpp:982
1449 #: ../../../src/MenuPowers.cpp:1057
12221450 msgid "Healing"
12231451 msgstr "Heilung"
12241452
1225 #: ../../../src/MenuPowers.cpp:985
1453 #: ../../../src/MenuPowers.cpp:1060
12261454 msgid "Knockback"
12271455 msgstr "Rückschlag"
12281456
1229 #: ../../../src/MenuPowers.cpp:1010
1457 #: ../../../src/MenuPowers.cpp:1084
12301458 #, c-format
12311459 msgid "%d%% chance"
12321460 msgstr "%d%% Wahrscheinlichkeit"
12331461
1234 #: ../../../src/MenuPowers.cpp:1062
1462 #: ../../../src/MenuPowers.cpp:1136
12351463 msgid "Base Accuracy"
1236 msgstr "Basis-Genauigkeit:"
1237
1238 #: ../../../src/MenuPowers.cpp:1082
1464 msgstr "Basis-Genauigkeit"
1465
1466 #: ../../../src/MenuPowers.cpp:1156
12391467 msgid "Base Critical Chance"
12401468 msgstr "Basis-Chance für krit. Treffer"
12411469
1242 #: ../../../src/MenuPowers.cpp:1090
1470 #: ../../../src/MenuPowers.cpp:1164
12431471 msgid "Ignores Absorbtion"
12441472 msgstr "Ignoriert Rüstung"
12451473
1246 #: ../../../src/MenuPowers.cpp:1095
1474 #: ../../../src/MenuPowers.cpp:1169
12471475 msgid "Ignores Avoidance"
12481476 msgstr "Ignoriert Ausweichen"
12491477
1250 #: ../../../src/MenuPowers.cpp:1100
1478 #: ../../../src/MenuPowers.cpp:1174
12511479 #, c-format
12521480 msgid "%d%% Chance to crit slowed targets"
12531481 msgstr "%d%% Wahrsch. für krit. verlangsamte Ziele"
12541482
1255 #: ../../../src/MenuPowers.cpp:1105
1483 #: ../../../src/MenuPowers.cpp:1179
12561484 #, c-format
12571485 msgid "Elemental Damage (%s)"
12581486 msgstr "Elementarschaden (%s)"
12591487
1260 #: ../../../src/MenuPowers.cpp:1114
1488 #: ../../../src/MenuPowers.cpp:1188
12611489 #, c-format
12621490 msgid "Requires a %s"
12631491 msgstr "Benötigt: %s"
12641492
1265 #: ../../../src/MenuPowers.cpp:1151 ../../../src/MenuPowers.cpp:1154
1493 #: ../../../src/MenuPowers.cpp:1226 ../../../src/MenuPowers.cpp:1229
12661494 #, c-format
12671495 msgid "Requires Power: %s"
12681496 msgstr "Benötigt Fähigkeit: %s"
12691497
1270 #: ../../../src/MenuPowers.cpp:1163
1498 #: ../../../src/MenuPowers.cpp:1238
12711499 msgid "Click to Unlock (uses 1 Skill Point)"
12721500 msgstr "Klicken zum Freischalten (benutzt 1 Fertigkeitspunkt)"
12731501
1274 #: ../../../src/MenuPowers.cpp:1167 ../../../src/MenuPowers.cpp:1169
1502 #: ../../../src/MenuPowers.cpp:1242 ../../../src/MenuPowers.cpp:1244
12751503 msgid "Requires 1 Skill Point"
12761504 msgstr "Benötigt 1 Fertigkeitspunkt"
12771505
1278 #: ../../../src/MenuPowers.cpp:1355
1279 #, c-format
1280 msgid "%d unspent skill point"
1281 msgstr "%d verfügbarer Fertigkeitspunkt"
1282
1283 #: ../../../src/MenuPowers.cpp:1358
1284 #, c-format
1285 msgid "%d unspent skill points"
1286 msgstr "%d verfügbare Fertigkeitspunkte"
1287
1288 #: ../../../src/MenuPowers.cpp:1388
1506 #: ../../../src/MenuPowers.cpp:1444
1507 #, c-format
1508 msgid "Available skill points: %d"
1509 msgstr ""
1510
1511 #: ../../../src/MenuPowers.cpp:1476
12891512 msgid "Next Level:"
12901513 msgstr "Nächste Stufe:"
12911514
1292 #: ../../../src/MenuStash.cpp:96
1293 msgid "Shared Stash"
1294 msgstr "Gemeinschaftslager"
1295
1296 #: ../../../src/MenuStash.cpp:209
1297 msgid "Can not store quest items in the stash."
1298 msgstr "Aufgabengegenstände können nicht eingelagert werden."
1299
1300 #: ../../../src/MenuStash.cpp:219
1515 #: ../../../src/MenuStash.cpp:80 ../../../src/MenuStash.cpp:161
1516 msgid "Stash"
1517 msgstr "Lagerraum"
1518
1519 #: ../../../src/MenuStash.cpp:174 ../../../src/MenuStash.cpp:188
1520 msgid "Private"
1521 msgstr "Privat"
1522
1523 #: ../../../src/MenuStash.cpp:175
1524 msgid "Shared"
1525 msgstr "Gemeinsam"
1526
1527 #: ../../../src/MenuStash.cpp:340
1528 msgid "This item can not be stored in the stash."
1529 msgstr "Dieser Gegenstand kann nicht eingelagert werden."
1530
1531 #: ../../../src/MenuStash.cpp:345
1532 msgid "This item can not be stored in the private stash."
1533 msgstr "Dieser Gegenstand kann nicht im privaten Lager eingelagert werden."
1534
1535 #: ../../../src/MenuStash.cpp:350
1536 msgid "This item can not be stored in the shared stash."
1537 msgstr ""
1538 "Dieser Gegenstand kann nicht im Gemeinschaftslager eingelagert werden."
1539
1540 #: ../../../src/MenuStash.cpp:360
13011541 msgid "Stash is full."
13021542 msgstr "Lagerraum ist voll."
13031543
1304 #: ../../../src/MenuTalker.cpp:454
1544 #: ../../../src/MenuStash.cpp:414
1545 #, c-format
1546 msgid "Can not store item in stash: %s"
1547 msgstr "Gegenstand kann nicht eingelagert werden: %s"
1548
1549 #: ../../../src/MenuTalker.cpp:448
1550 #, c-format
1551 msgid "<dialog node %d>"
1552 msgstr "<dialog node %d>"
1553
1554 #: ../../../src/MenuTalker.cpp:456
13051555 msgid "Trade"
13061556 msgstr "Handeln"
13071557
1308 #: ../../../src/MenuVendor.cpp:58
1558 #: ../../../src/MenuVendor.cpp:60
13091559 msgid "Buyback"
13101560 msgstr "Rückkauf"
13111561
1312 #: ../../../src/MenuVendor.cpp:279
1562 #: ../../../src/MenuVendor.cpp:283
13131563 msgid "Vendor"
13141564 msgstr "Verkäufer"
13151565
1316 #: ../../../src/PowerManager.cpp:1136
1566 #: ../../../src/PowerManager.cpp:1208
13171567 #, c-format
13181568 msgid "+%d Shield"
13191569 msgstr "+%d Schild"
13201570
1321 #: ../../../src/PowerManager.cpp:1392
1571 #: ../../../src/PowerManager.cpp:1465
13221572 msgid "You are already transformed, untransform first."
13231573 msgstr "Du bist bereits verwandelt, beende die Verwandlung zunächst."
13241574
1325 #: ../../../src/PowerManager.cpp:1404
1575 #: ../../../src/PowerManager.cpp:1477
13261576 msgid "Could not untransform at this position."
13271577 msgstr "An diesem Ort ist eine Zurückverwandlung nicht möglich."
13281578
13301580 msgid "Completed Quests"
13311581 msgstr "Erledigte Aufgaben"
13321582
1333 #: ../../../src/SaveLoad.cpp:243 ../../../src/SaveLoad.cpp:244
1583 #: ../../../src/SaveLoad.cpp:250 ../../../src/SaveLoad.cpp:251
13341584 msgid "Game saved."
13351585 msgstr "Spiel gespeichert."
13361586
1337 #: ../../../src/SDLInputState.cpp:582
1587 #: ../../../src/SDLInputState.cpp:643
1588 msgid "BkSp"
1589 msgstr "Rück"
1590
1591 #: ../../../src/SDLInputState.cpp:644
1592 msgid "Caps"
1593 msgstr "Festst"
1594
1595 #: ../../../src/SDLInputState.cpp:645
1596 msgid "Del"
1597 msgstr "Entf"
1598
1599 #: ../../../src/SDLInputState.cpp:647 ../../../src/SDLInputState.cpp:677
1600 msgid "End"
1601 msgstr "Ende"
1602
1603 #: ../../../src/SDLInputState.cpp:648
1604 msgid "Esc"
1605 msgstr "Esc"
1606
1607 #: ../../../src/SDLInputState.cpp:649 ../../../src/SDLInputState.cpp:679
1608 msgid "Home"
1609 msgstr "Pos1"
1610
1611 #: ../../../src/SDLInputState.cpp:650
1612 msgid "Ins"
1613 msgstr "Einfg"
1614
1615 #: ../../../src/SDLInputState.cpp:651
1616 msgid "LAlt"
1617 msgstr "LAlt"
1618
1619 #: ../../../src/SDLInputState.cpp:652
1620 msgid "LCtrl"
1621 msgstr "LStrg"
1622
1623 #: ../../../src/SDLInputState.cpp:654
1624 msgid "LShft"
1625 msgstr "LUmsch"
1626
1627 #: ../../../src/SDLInputState.cpp:655
1628 msgid "Num"
1629 msgstr "Num"
1630
1631 #: ../../../src/SDLInputState.cpp:656
1632 msgid "PgDn"
1633 msgstr "Bild↓"
1634
1635 #: ../../../src/SDLInputState.cpp:657
1636 msgid "PgUp"
1637 msgstr "Bild↑"
1638
1639 #: ../../../src/SDLInputState.cpp:658 ../../../src/SDLInputState.cpp:688
1640 msgid "Pause"
1641 msgstr "Pause"
1642
1643 #: ../../../src/SDLInputState.cpp:659
1644 msgid "Print"
1645 msgstr "Druck"
1646
1647 #: ../../../src/SDLInputState.cpp:660
1648 msgid "RAlt"
1649 msgstr "RAlt"
1650
1651 #: ../../../src/SDLInputState.cpp:661
1652 msgid "RCtrl"
1653 msgstr "RStrg"
1654
1655 #: ../../../src/SDLInputState.cpp:662
1656 msgid "Ret"
1657 msgstr "Enter"
1658
1659 #: ../../../src/SDLInputState.cpp:664
1660 msgid "RShft"
1661 msgstr "RUmsch"
1662
1663 #: ../../../src/SDLInputState.cpp:665
1664 msgid "SLock"
1665 msgstr "Rollen"
1666
1667 #: ../../../src/SDLInputState.cpp:666
1668 msgid "Spc"
1669 msgstr "Leer"
1670
1671 #: ../../../src/SDLInputState.cpp:667 ../../../src/SDLInputState.cpp:697
1672 msgid "Tab"
1673 msgstr "Tab"
1674
1675 #: ../../../src/SDLInputState.cpp:673
13381676 msgid "Backspace"
13391677 msgstr "Rücktaste"
13401678
1341 #: ../../../src/SDLInputState.cpp:583
1679 #: ../../../src/SDLInputState.cpp:674
13421680 msgid "CapsLock"
13431681 msgstr "Feststelltaste"
13441682
1345 #: ../../../src/SDLInputState.cpp:586
1346 msgid "End"
1347 msgstr "Ende"
1348
1349 #: ../../../src/SDLInputState.cpp:587
1683 #: ../../../src/SDLInputState.cpp:678
13501684 msgid "Escape"
13511685 msgstr "Escape"
13521686
1353 #: ../../../src/SDLInputState.cpp:588
1354 msgid "Home"
1355 msgstr "Pos1"
1356
1357 #: ../../../src/SDLInputState.cpp:589
1687 #: ../../../src/SDLInputState.cpp:680
13581688 msgid "Insert"
13591689 msgstr "Einfügen"
13601690
1361 #: ../../../src/SDLInputState.cpp:590
1691 #: ../../../src/SDLInputState.cpp:681
13621692 msgid "Left Alt"
13631693 msgstr "Alt links"
13641694
1365 #: ../../../src/SDLInputState.cpp:591
1695 #: ../../../src/SDLInputState.cpp:682
13661696 msgid "Left Ctrl"
13671697 msgstr "Strg links"
13681698
1369 #: ../../../src/SDLInputState.cpp:593
1699 #: ../../../src/SDLInputState.cpp:684
13701700 msgid "Left Shift"
13711701 msgstr "Umschalt links"
13721702
1373 #: ../../../src/SDLInputState.cpp:594
1703 #: ../../../src/SDLInputState.cpp:685
13741704 msgid "NumLock"
13751705 msgstr "Numlock"
13761706
1377 #: ../../../src/SDLInputState.cpp:595
1707 #: ../../../src/SDLInputState.cpp:686
13781708 msgid "PageDown"
13791709 msgstr "Bild ab"
13801710
1381 #: ../../../src/SDLInputState.cpp:596
1711 #: ../../../src/SDLInputState.cpp:687
13821712 msgid "PageUp"
13831713 msgstr "Bild auf"
13841714
1385 #: ../../../src/SDLInputState.cpp:597
1386 msgid "Pause"
1387 msgstr "Pause"
1388
1389 #: ../../../src/SDLInputState.cpp:598
1715 #: ../../../src/SDLInputState.cpp:689
13901716 msgid "PrintScreen"
13911717 msgstr "Drucken"
13921718
1393 #: ../../../src/SDLInputState.cpp:599
1719 #: ../../../src/SDLInputState.cpp:690
13941720 msgid "Right Alt"
13951721 msgstr "Alt rechts"
13961722
1397 #: ../../../src/SDLInputState.cpp:600
1723 #: ../../../src/SDLInputState.cpp:691
13981724 msgid "Right Ctrl"
13991725 msgstr "Strg rechts"
14001726
1401 #: ../../../src/SDLInputState.cpp:601
1727 #: ../../../src/SDLInputState.cpp:692
14021728 msgid "Return"
14031729 msgstr "Eingabe"
14041730
1405 #: ../../../src/SDLInputState.cpp:603
1731 #: ../../../src/SDLInputState.cpp:694
14061732 msgid "Right Shift"
14071733 msgstr "Umschalt rechts"
14081734
1409 #: ../../../src/SDLInputState.cpp:604
1735 #: ../../../src/SDLInputState.cpp:695
14101736 msgid "ScrollLock"
14111737 msgstr "Rollen"
14121738
1413 #: ../../../src/SDLInputState.cpp:605
1739 #: ../../../src/SDLInputState.cpp:696
14141740 msgid "Space"
14151741 msgstr "Leertaste"
14161742
1417 #: ../../../src/SDLInputState.cpp:606
1418 msgid "Tab"
1419 msgstr "Tab"
1420
1421 #: ../../../src/SDLInputState.cpp:620
1743 #: ../../../src/SDLInputState.cpp:710
1744 #, c-format
1745 msgid "M%d"
1746 msgstr "M%d"
1747
1748 #: ../../../src/SDLInputState.cpp:716
14221749 #, c-format
14231750 msgid "Mouse %d"
14241751 msgstr "Maus %d"
14251752
1426 #: ../../../src/SDLInputState.cpp:628
1753 #: ../../../src/SDLInputState.cpp:726
1754 #, c-format
1755 msgid "JX%d-"
1756 msgstr "JX%d-"
1757
1758 #: ../../../src/SDLInputState.cpp:728
14271759 #, c-format
14281760 msgid "Axis %d -"
14291761 msgstr "Achse %d -"
14301762
1431 #: ../../../src/SDLInputState.cpp:630
1763 #: ../../../src/SDLInputState.cpp:732
1764 #, c-format
1765 msgid "JX%d+"
1766 msgstr "JX%d+"
1767
1768 #: ../../../src/SDLInputState.cpp:734
14321769 #, c-format
14331770 msgid "Axis %d +"
14341771 msgstr "Achse %d +"
14351772
1436 #: ../../../src/SDLInputState.cpp:633
1773 #: ../../../src/SDLInputState.cpp:739
1774 #, c-format
1775 msgid "JB%d"
1776 msgstr "JB%d"
1777
1778 #: ../../../src/SDLInputState.cpp:741
14371779 #, c-format
14381780 msgid "Button %d"
14391781 msgstr "Taste %d"
14401782
1441 #: ../../../src/SDLInputState.cpp:637
1442 msgid "(none)"
1443 msgstr "(keine)"
1444
1445 #: ../../../src/SDLInputState.cpp:677
1783 #: ../../../src/SDLInputState.cpp:787
14461784 msgid "Touch control D-Pad"
14471785 msgstr "Touchscreen Steuerkreuz"
14481786
1449 #: ../../../src/SDLInputState.cpp:701
1787 #: ../../../src/SDLInputState.cpp:810
14501788 msgid "Touch control buttons"
14511789 msgstr "Touchscreen Tasten"
14521790
1453 #: ../../../src/SDLInputState.cpp:716
1791 #: ../../../src/SDLInputState.cpp:824
14541792 msgid "Tap"
14551793 msgstr "Antippen"
14561794
1457 #: ../../../src/SDLInputState.cpp:760 ../../../src/SDLInputState.cpp:764
1458 #: ../../../src/SDLInputState.cpp:768
1795 #: ../../../src/SDLInputState.cpp:876 ../../../src/SDLInputState.cpp:878
1796 #, c-format
1797 msgid "Can not bind: %s"
1798 msgstr "Kann nicht belegt werden: %s"
1799
1800 #: ../../../src/SDLInputState.cpp:890 ../../../src/SDLInputState.cpp:894
1801 #: ../../../src/SDLInputState.cpp:898
14591802 #, c-format
14601803 msgid "'%s' is no longer bound to:"
14611804 msgstr "„%s“ ist nicht mehr zugewiesen auf:"
15441887
15451888 #: ../../../src/Stats.cpp:84
15461889 msgid "Increases the XP gained per kill."
1547 msgstr "Erhöht die EP für getötete Gegner"
1890 msgstr "Erhöht die EP für getötete Gegner."
15481891
15491892 #: ../../../src/Stats.cpp:88
15501893 #, c-format
15541897 #: ../../../src/Stats.cpp:89
15551898 #, c-format
15561899 msgid "Increases the %s found per drop."
1557 msgstr "Erhöht die Chance auf %s"
1900 msgstr "Erhöht die Chance auf %s."
15581901
15591902 #: ../../../src/Stats.cpp:93
15601903 msgid "Item Find Chance"
16211964 msgid "Base MP"
16221965 msgstr "Basis-MP"
16231966
1624 #: ../../../src/Utils.cpp:346
1967 #: ../../../src/Utils.cpp:365
16251968 msgid "k"
16261969 msgstr "k"
16271970
1628 #: ../../../src/Utils.cpp:580
1971 #: ../../../src/Utils.cpp:635
16291972 #, c-format
16301973 msgid "%s second"
16311974 msgstr "%s Sekunde"
16321975
1633 #: ../../../src/Utils.cpp:583
1976 #: ../../../src/Utils.cpp:638
16341977 #, c-format
16351978 msgid "%s seconds"
16361979 msgstr "%s Sekunden"
1111 msgstr ""
1212 "Project-Id-Version: PACKAGE VERSION\n"
1313 "Report-Msgid-Bugs-To: \n"
14 "POT-Creation-Date: 2018-11-17 21:50-0500\n"
14 "POT-Creation-Date: 2021-05-23 20:34-0400\n"
1515 "PO-Revision-Date: 2018-03-28 19:16+0000\n"
1616 "Last-Translator: Nea Retrogamer (nearetrogamer), 2018\n"
1717 "Language-Team: Greek (https://www.transifex.com/flareorg/teams/84925/el/)\n"
2121 "Language: el\n"
2222 "Plural-Forms: nplurals=2; plural=(n != 1);\n"
2323
24 #: ../../../src/Avatar.cpp:367
24 #: ../../../src/Avatar.cpp:391
25 msgid "Your health is low!"
26 msgstr ""
27
28 #: ../../../src/Avatar.cpp:421
2529 #, c-format
2630 msgid "Congratulations, you have reached level %d!"
2731 msgstr "Συγχαρητήρια, έφτασες στο επίπεδο %d!"
2832
29 #: ../../../src/Avatar.cpp:369
30 msgid "You may increase one attribute through the Character Menu."
31 msgstr "Μπορείς να αυξήσεις μία ικανότητα μέσω του Μενού Χαρακτήρα."
32
33 #: ../../../src/Avatar.cpp:583
34 msgid "You are defeated. Game over! ${INPUT_CONTINUE} to exit to Title."
35 msgstr ""
36
37 #: ../../../src/Avatar.cpp:589
38 msgid "You are defeated. ${INPUT_CONTINUE} to continue."
39 msgstr ""
40
41 #: ../../../src/Avatar.cpp:839
33 #: ../../../src/Avatar.cpp:423
34 msgid "You may increase one or more attributes through the Character Menu."
35 msgstr ""
36
37 #: ../../../src/Avatar.cpp:427
38 msgid "You may unlock one or more abilities through the Powers Menu."
39 msgstr ""
40
41 #: ../../../src/Avatar.cpp:689
42 msgid "You are defeated."
43 msgstr ""
44
45 #: ../../../src/Avatar.cpp:935
4246 msgid "Transformation expired. You have been moved back to a safe place."
4347 msgstr ""
4448
45 #: ../../../src/CampaignManager.cpp:153
49 #: ../../../src/CampaignManager.cpp:152
4650 #, c-format
4751 msgid "%d %s removed."
4852 msgstr "%d %s αφαιρέθηκαν."
4953
50 #: ../../../src/CampaignManager.cpp:162
54 #: ../../../src/CampaignManager.cpp:171
55 #, c-format
56 msgid "%s x%d removed."
57 msgstr ""
58
59 #: ../../../src/CampaignManager.cpp:173
5160 #, c-format
5261 msgid "%s removed."
5362 msgstr "Αφαιρέθηκε: %s"
5463
55 #: ../../../src/CampaignManager.cpp:175
64 #: ../../../src/CampaignManager.cpp:187
65 #, c-format
66 msgid "You receive %d %s."
67 msgstr "Λαμβάνεις %d %s."
68
69 #: ../../../src/CampaignManager.cpp:191
70 #, c-format
71 msgid "You receive %s x%d."
72 msgstr "Λαμβάνεις %s x%d."
73
74 #: ../../../src/CampaignManager.cpp:193
5675 #, c-format
5776 msgid "You receive %s."
5877 msgstr "Λαμβάνεις %s."
5978
60 #: ../../../src/CampaignManager.cpp:177
61 #, c-format
62 msgid "You receive %s x%d."
63 msgstr "Λαμβάνεις %s x%d."
64
65 #: ../../../src/CampaignManager.cpp:186
66 #, c-format
67 msgid "You receive %d %s."
68 msgstr "Λαμβάνεις %d %s."
69
70 #: ../../../src/CampaignManager.cpp:195
79 #: ../../../src/CampaignManager.cpp:210
7180 #, c-format
7281 msgid "You receive %d XP."
7382 msgstr "Λαμβάνεις %d XP."
7483
75 #: ../../../src/CampaignManager.cpp:201
84 #: ../../../src/CampaignManager.cpp:216
7685 msgid "HP restored."
7786 msgstr "HP αναζωογονήθηκαν."
7887
79 #: ../../../src/CampaignManager.cpp:205
88 #: ../../../src/CampaignManager.cpp:220
8089 msgid "MP restored."
8190 msgstr "MP αναζωογονήθηκαν."
8291
83 #: ../../../src/CampaignManager.cpp:210
92 #: ../../../src/CampaignManager.cpp:225
8493 msgid "HP and MP restored."
8594 msgstr "HP και MP αναζωογονήθηκαν."
8695
87 #: ../../../src/CampaignManager.cpp:214
96 #: ../../../src/CampaignManager.cpp:229
8897 msgid "Negative effects removed."
8998 msgstr "Αρνητικές επιδράσεις αφαιρέθηκαν."
9099
91 #: ../../../src/CampaignManager.cpp:220
100 #: ../../../src/CampaignManager.cpp:235
92101 msgid "HP and MP restored, negative effects removed"
93102 msgstr "HP και MP αναζωογονήθηκαν, αρνητικές επιδράσεις αφαιρέθηκαν."
94103
106115 "The default renderer that is often faster than the SDL software renderer."
107116 msgstr ""
108117
109 #: ../../../src/EngineSettings.cpp:561
118 #: ../../../src/EngineSettings.cpp:586
110119 msgid "Adventurer"
111120 msgstr "Τυχοδιώκτης"
112121
113 #: ../../../src/Entity.cpp:511
122 #: ../../../src/Entity.cpp:527
114123 msgid "miss"
115124 msgstr "αστοχία"
116125
117 #: ../../../src/Entity.cpp:548 ../../../src/PowerManager.cpp:1152
118 #: ../../../src/StatBlock.cpp:805 ../../../src/StatBlock.cpp:811
126 #: ../../../src/Entity.cpp:565 ../../../src/PowerManager.cpp:1224
127 #: ../../../src/StatBlock.cpp:917 ../../../src/StatBlock.cpp:923
119128 #, c-format
120129 msgid "+%d HP"
121130 msgstr "+%d HP"
122131
123 #: ../../../src/Entity.cpp:555 ../../../src/StatBlock.cpp:816
124 #: ../../../src/StatBlock.cpp:822
132 #: ../../../src/Entity.cpp:572 ../../../src/StatBlock.cpp:928
133 #: ../../../src/StatBlock.cpp:934
125134 #, c-format
126135 msgid "+%d MP"
127136 msgstr "+%d MP"
128137
129 #: ../../../src/EventManager.cpp:738
138 #: ../../../src/EventManager.cpp:792
130139 msgid "Unknown destination"
131140 msgstr "Άγνωστος προορισμός"
132141
133 #: ../../../src/GameStateConfigBase.cpp:89
134 #: ../../../src/GameStateConfigBase.cpp:110
142 #: ../../../src/GameState.cpp:37 ../../../src/GameState.cpp:58
143 msgid "Loading..."
144 msgstr "Φόρτωση..."
145
146 #: ../../../src/GameStateLoad.cpp:90 ../../../src/GameStateLoad.cpp:103
147 msgid "Delete Save"
148 msgstr "Διαγραφή"
149
150 #: ../../../src/GameStateLoad.cpp:90
151 msgid "Delete this save?"
152 msgstr "Διαγραφή παιχνιδιού;"
153
154 #: ../../../src/GameStateLoad.cpp:92
155 msgid "Exit to Title"
156 msgstr "Έξοδος προς Τίτλο"
157
158 #: ../../../src/GameStateLoad.cpp:95
159 msgid "New Game"
160 msgstr "Νέο Παιχνίδι"
161
162 #: ../../../src/GameStateLoad.cpp:99 ../../../src/GameStateLoad.cpp:607
163 msgid "Choose a Slot"
164 msgstr "Επίλεξε μία Θέση"
165
166 #: ../../../src/GameStateLoad.cpp:580 ../../../src/GameStateLoad.cpp:601
167 msgid "Enable a story mod to continue"
168 msgstr "Ενεργοποίησε ένα πρόσθετο με σενάριο για να συνεχίσεις"
169
170 #: ../../../src/GameStateLoad.cpp:596
171 msgid "Load Game"
172 msgstr "Φόρτωση Παιχνιδιού"
173
174 #: ../../../src/GameStateLoad.cpp:705
175 msgid "Entering game world..."
176 msgstr "Είσοδος στο παιχνίδι..."
177
178 #: ../../../src/GameStateLoad.cpp:708
179 msgid "Loading saved game..."
180 msgstr "Φόρτωση αποθηκευμένου παιχνιδιού..."
181
182 #: ../../../src/GameStateLoad.cpp:741
183 msgid "Invalid save"
184 msgstr ""
185
186 #: ../../../src/GameStateLoad.cpp:765 ../../../src/ItemManager.cpp:745
187 #: ../../../src/MenuPowers.cpp:860 ../../../src/MenuPowers.cpp:1219
188 #: ../../../src/MenuPowers.cpp:1631
189 #, c-format
190 msgid "Level %d"
191 msgstr "Επίπεδο %d"
192
193 #: ../../../src/GameStateNew.cpp:66 ../../../src/InputState.cpp:416
194 #: ../../../src/MenuConfig.cpp:246
195 msgid "Cancel"
196 msgstr "Ακύρωση"
197
198 #: ../../../src/GameStateNew.cpp:69
199 msgid "Create"
200 msgstr "Δημιουργία"
201
202 #: ../../../src/GameStateNew.cpp:77
203 msgid "Randomize"
204 msgstr ""
205
206 #: ../../../src/GameStateNew.cpp:93
207 msgid "Choose a Portrait"
208 msgstr "Επιλογή Πορτραίτου"
209
210 #: ../../../src/GameStateNew.cpp:97
211 msgid "Choose a Name"
212 msgstr "Επιλογή Ονόματος"
213
214 #: ../../../src/GameStateNew.cpp:101
215 msgid "Permadeath?"
216 msgstr "Μόνιμος θάνατος;"
217
218 #: ../../../src/GameStateNew.cpp:105
219 msgid "Choose a Class"
220 msgstr "Επιλογή Κλάσης"
221
222 #: ../../../src/GameStateTitle.cpp:107
223 msgid "Play Game"
224 msgstr "Έναρξη Παιχνιδιού"
225
226 #: ../../../src/GameStateTitle.cpp:110
227 msgid "Enable a core mod to continue"
228 msgstr "Ενεργοποίησε ένα πρόσθετο πυρήνα για να συνεχίσεις"
229
230 #: ../../../src/GameStateTitle.cpp:114 ../../../src/MenuMiniMap.cpp:152
231 msgid "Configuration"
232 msgstr "Ρυθμίσεις"
233
234 #: ../../../src/GameStateTitle.cpp:117
235 msgid "Credits"
236 msgstr "Μνεία"
237
238 #: ../../../src/GameStateTitle.cpp:120
239 msgid "Exit Game"
240 msgstr "Έξοδος"
241
242 #: ../../../src/InputState.cpp:417
243 msgid "Accept"
244 msgstr "Αποδοχή"
245
246 #: ../../../src/InputState.cpp:418 ../../../src/MenuMovementType.cpp:123
247 #: ../../../src/MenuMovementType.cpp:132 ../../../src/SDLInputState.cpp:668
248 #: ../../../src/SDLInputState.cpp:698
249 msgid "Up"
250 msgstr "Πάνω"
251
252 #: ../../../src/InputState.cpp:419 ../../../src/MenuMovementType.cpp:125
253 #: ../../../src/MenuMovementType.cpp:134 ../../../src/SDLInputState.cpp:646
254 #: ../../../src/SDLInputState.cpp:676
255 msgid "Down"
256 msgstr "Κάτω"
257
258 #: ../../../src/InputState.cpp:420 ../../../src/MenuMovementType.cpp:124
259 #: ../../../src/MenuMovementType.cpp:133 ../../../src/SDLInputState.cpp:653
260 #: ../../../src/SDLInputState.cpp:683
261 msgid "Left"
262 msgstr "Αριστερά"
263
264 #: ../../../src/InputState.cpp:421 ../../../src/MenuMovementType.cpp:126
265 #: ../../../src/MenuMovementType.cpp:135 ../../../src/SDLInputState.cpp:663
266 #: ../../../src/SDLInputState.cpp:693
267 msgid "Right"
268 msgstr "Δεξιά"
269
270 #: ../../../src/InputState.cpp:422
271 msgid "Bar1"
272 msgstr "Μπάρα 1"
273
274 #: ../../../src/InputState.cpp:423
275 msgid "Bar2"
276 msgstr "Μπάρα 2"
277
278 #: ../../../src/InputState.cpp:424
279 msgid "Bar3"
280 msgstr "Μπάρα 3"
281
282 #: ../../../src/InputState.cpp:425
283 msgid "Bar4"
284 msgstr "Μπάρα 4"
285
286 #: ../../../src/InputState.cpp:426
287 msgid "Bar5"
288 msgstr "Μπάρα 5"
289
290 #: ../../../src/InputState.cpp:427
291 msgid "Bar6"
292 msgstr "Μπάρα 6"
293
294 #: ../../../src/InputState.cpp:428
295 msgid "Bar7"
296 msgstr "Μπάρα 7"
297
298 #: ../../../src/InputState.cpp:429
299 msgid "Bar8"
300 msgstr "Μπάρα 8"
301
302 #: ../../../src/InputState.cpp:430
303 msgid "Bar9"
304 msgstr "Μπάρα 9"
305
306 #: ../../../src/InputState.cpp:431
307 msgid "Bar0"
308 msgstr "Μπάρα 0"
309
310 #: ../../../src/InputState.cpp:432 ../../../src/MenuActionBar.cpp:84
311 #: ../../../src/MenuCharacter.cpp:54
312 msgid "Character"
313 msgstr "Χαρακτήρας"
314
315 #: ../../../src/InputState.cpp:433 ../../../src/MenuActionBar.cpp:85
316 #: ../../../src/MenuInventory.cpp:130 ../../../src/MenuVendor.cpp:59
317 msgid "Inventory"
318 msgstr "Εξοπλισμός"
319
320 #: ../../../src/InputState.cpp:434 ../../../src/MenuActionBar.cpp:86
321 #: ../../../src/MenuPowers.cpp:158
322 msgid "Powers"
323 msgstr "Δυνάμεις"
324
325 #: ../../../src/InputState.cpp:435 ../../../src/MenuActionBar.cpp:87
326 #: ../../../src/MenuLog.cpp:72
327 msgid "Log"
328 msgstr "Ημερολόγιο"
329
330 #: ../../../src/InputState.cpp:436
331 msgid "Main1"
332 msgstr "Κύρια Ενέργεια 1"
333
334 #: ../../../src/InputState.cpp:437
335 msgid "Main2"
336 msgstr "Κύρια Ενέργεια 2"
337
338 #: ../../../src/InputState.cpp:438
339 msgid "Ctrl"
340 msgstr "Ctrl"
341
342 #: ../../../src/InputState.cpp:439
343 msgid "Shift"
344 msgstr "Shift"
345
346 #: ../../../src/InputState.cpp:440
347 msgid "Alt"
348 msgstr "Alt"
349
350 #: ../../../src/InputState.cpp:441 ../../../src/SDLInputState.cpp:675
351 msgid "Delete"
352 msgstr "Διαγραφή"
353
354 #: ../../../src/InputState.cpp:442
355 msgid "ActionBar Accept"
356 msgstr "Μπάρα Ενεργειών Αποδοχή"
357
358 #: ../../../src/InputState.cpp:443
359 msgid "ActionBar Left"
360 msgstr "Μπάρα Ενεργειών Αριστερά"
361
362 #: ../../../src/InputState.cpp:444
363 msgid "ActionBar Right"
364 msgstr "Μπάρα Ενεργειών Δεξιά"
365
366 #: ../../../src/InputState.cpp:445
367 msgid "ActionBar Use"
368 msgstr "Μπάρα Ενεργειών Χρήση"
369
370 #: ../../../src/InputState.cpp:446
371 msgid "Developer Menu"
372 msgstr ""
373
374 #: ../../../src/InputState.cpp:448
375 msgid "Left Mouse"
376 msgstr ""
377
378 #: ../../../src/InputState.cpp:449
379 msgid "Middle Mouse"
380 msgstr ""
381
382 #: ../../../src/InputState.cpp:450
383 msgid "Right Mouse"
384 msgstr ""
385
386 #: ../../../src/InputState.cpp:451
387 msgid "Wheel Up"
388 msgstr ""
389
390 #: ../../../src/InputState.cpp:452
391 msgid "Wheel Down"
392 msgstr ""
393
394 #: ../../../src/InputState.cpp:453
395 msgid "Mouse X1"
396 msgstr ""
397
398 #: ../../../src/InputState.cpp:454
399 msgid "Mouse X2"
400 msgstr ""
401
402 #: ../../../src/ItemManager.cpp:475
403 msgid "Unknown Item"
404 msgstr ""
405
406 #: ../../../src/ItemManager.cpp:646 ../../../src/MenuPowers.cpp:959
407 #, c-format
408 msgid "%d%% Speed"
409 msgstr "%d%%Ταχύτητα"
410
411 #: ../../../src/ItemManager.cpp:650 ../../../src/MenuPowers.cpp:962
412 #, c-format
413 msgid "%d%% Attack Speed"
414 msgstr "%d%%Ταχύτητα Επίθεσης"
415
416 #: ../../../src/ItemManager.cpp:672 ../../../src/MenuCharacter.cpp:352
417 #: ../../../src/MenuPowers.cpp:931
418 #, c-format
419 msgid "Resistance (%s)"
420 msgstr ""
421
422 #: ../../../src/ItemManager.cpp:682
423 #, c-format
424 msgid "Requires %s"
425 msgstr ""
426
427 #: ../../../src/ItemManager.cpp:731
428 msgid "Quest Item"
429 msgstr "Αντικείμενο Αποστολής"
430
431 #: ../../../src/ItemManager.cpp:758
432 #, c-format
433 msgid "Quality: %s"
434 msgstr "Ποιότητα: %s"
435
436 #: ../../../src/ItemManager.cpp:783
437 #, c-format
438 msgid "Absorb: %d-%d"
439 msgstr "Απορρόφηση: %d-%d"
440
441 #: ../../../src/ItemManager.cpp:785
442 #, c-format
443 msgid "Absorb: %d"
444 msgstr "Απορρόφηση: %d"
445
446 #: ../../../src/ItemManager.cpp:825 ../../../src/MenuPowers.cpp:1206
447 #: ../../../src/MenuPowers.cpp:1209
448 #, c-format
449 msgid "Requires Level %d"
450 msgstr "Χρειάζεται Επίπεδο %d"
451
452 #: ../../../src/ItemManager.cpp:836 ../../../src/MenuPowers.cpp:1198
453 #: ../../../src/MenuPowers.cpp:1200
454 #, c-format
455 msgid "Requires %s %d"
456 msgstr "Χρειάζεται %s%d"
457
458 #: ../../../src/ItemManager.cpp:847
459 #, c-format
460 msgid "Requires Class: %s"
461 msgstr ""
462
463 #: ../../../src/ItemManager.cpp:863 ../../../src/ItemManager.cpp:875
464 #, c-format
465 msgid "Buy Price: %d %s"
466 msgstr "Τιμή Αγοράς: %d %s"
467
468 #: ../../../src/ItemManager.cpp:865 ../../../src/ItemManager.cpp:877
469 #, c-format
470 msgid "Buy Price: %d %s each"
471 msgstr "Τιμή Αγοράς: %d %s έκαστο"
472
473 #: ../../../src/ItemManager.cpp:885
474 #, c-format
475 msgid "Sell Price: %d %s"
476 msgstr "Τιμή Πώλησης: %d %s"
477
478 #: ../../../src/ItemManager.cpp:887
479 #, c-format
480 msgid "Sell Price: %d %s each"
481 msgstr "Τιμή Πώλησης: %d %s έκαστο"
482
483 #: ../../../src/ItemManager.cpp:896
484 msgid "Set:"
485 msgstr ""
486
487 #: ../../../src/ItemManager.cpp:903
488 #, c-format
489 msgid "%d items:"
490 msgstr ""
491
492 #: ../../../src/ItemManager.cpp:915
493 #, c-format
494 msgid "Press [%s] to read"
495 msgstr ""
496
497 #: ../../../src/ItemManager.cpp:918
498 #, c-format
499 msgid "Press [%s] to use"
500 msgstr ""
501
502 #: ../../../src/MenuActionBar.cpp:239 ../../../src/MenuActionBar.cpp:246
503 #: ../../../src/MenuActionBar.cpp:249 ../../../src/MenuActionBar.cpp:255
504 #, c-format
505 msgid "Hotkey: %s"
506 msgstr ""
507
508 #: ../../../src/MenuActionBar.cpp:621
509 msgid "Not enough MP."
510 msgstr ""
511
512 #: ../../../src/MenuActiveEffects.cpp:124
513 #, c-format
514 msgid "x%d"
515 msgstr ""
516
517 #: ../../../src/MenuActiveEffects.cpp:219
518 msgid "Remaining:"
519 msgstr ""
520
521 #: ../../../src/MenuActiveEffects.cpp:225
522 #, c-format
523 msgid "x%d stacks"
524 msgstr ""
525
526 #: ../../../src/MenuCharacter.cpp:73 ../../../src/MenuCharacter.cpp:78
527 msgid "Name"
528 msgstr "Όνομα"
529
530 #: ../../../src/MenuCharacter.cpp:74 ../../../src/MenuCharacter.cpp:79
531 msgid "Level"
532 msgstr "Επίπεδο"
533
534 #: ../../../src/MenuCharacter.cpp:309
535 #, c-format
536 msgid "Available stat points: %d"
537 msgstr ""
538
539 #: ../../../src/MenuCharacter.cpp:353
540 #, c-format
541 msgid "Reduces the damage taken from \"%s\" elemental attacks."
542 msgstr ""
543
544 #: ../../../src/MenuCharacter.cpp:363 ../../../src/MenuManager.cpp:301
545 #, c-format
546 msgid "XP: %d"
547 msgstr "XP (Πόντοι Εμπειρίας): %d"
548
549 #: ../../../src/MenuCharacter.cpp:365
550 #, c-format
551 msgid "Next: %d"
552 msgstr "Επόμενο: %d"
553
554 #: ../../../src/MenuCharacter.cpp:371
555 #, c-format
556 msgid "base (%d), bonus (%d)"
557 msgstr "βάση (%d), μπόνους (%d)"
558
559 #: ../../../src/MenuCharacter.cpp:379 ../../../src/MenuCharacter.cpp:393
560 msgid "Related stats:"
561 msgstr ""
562
563 #: ../../../src/MenuCharacter.cpp:419 ../../../src/MenuCharacter.cpp:443
564 #, c-format
565 msgid "Each level grants %d."
566 msgstr ""
567
568 #: ../../../src/MenuCharacter.cpp:423 ../../../src/MenuCharacter.cpp:447
569 #, c-format
570 msgid "Each point of %s grants %d."
571 msgstr ""
572
573 #: ../../../src/MenuConfig.cpp:122 ../../../src/MenuConfig.cpp:1171
574 msgid "Clear"
575 msgstr ""
576
577 #: ../../../src/MenuConfig.cpp:122 ../../../src/MenuConfig.cpp:1169
578 msgid "Assign:"
579 msgstr ""
580
581 #: ../../../src/MenuConfig.cpp:123 ../../../src/MenuConfig.cpp:245
135582 msgid "Defaults"
136583 msgstr "Προκαθορισμένα"
137584
138 #: ../../../src/GameStateConfigBase.cpp:89
585 #: ../../../src/MenuConfig.cpp:123
139586 msgid "Reset ALL settings?"
140587 msgstr "Επαναφορά ΌΛΩΝ των ρυθμίσεων;"
141588
142 #: ../../../src/GameStateConfigBase.cpp:109 ../../../src/MenuNumPicker.cpp:49
589 #: ../../../src/MenuConfig.cpp:244 ../../../src/MenuNumPicker.cpp:49
143590 msgid "OK"
144591 msgstr "Εντάξει"
145592
146 #: ../../../src/GameStateConfigBase.cpp:111 ../../../src/GameStateNew.cpp:65
147 #: ../../../src/InputState.cpp:401
148 msgid "Cancel"
149 msgstr "Ακύρωση"
150
151 #: ../../../src/GameStateConfigBase.cpp:160
152 #: ../../../src/GameStateConfigDesktop.cpp:130
593 #: ../../../src/MenuConfig.cpp:248 ../../../src/MenuGameOver.cpp:72
594 msgid "Continue"
595 msgstr ""
596
597 #: ../../../src/MenuConfig.cpp:250
598 msgid "Save Game"
599 msgstr ""
600
601 #: ../../../src/MenuConfig.cpp:293
602 msgid "Default"
603 msgstr ""
604
605 #: ../../../src/MenuConfig.cpp:293
606 msgid ""
607 "Show all loot tooltips, except for those that would be obscured by the "
608 "player or an enemy. Temporarily show all loot tooltips with 'Alt'."
609 msgstr ""
610
611 #: ../../../src/MenuConfig.cpp:294
612 msgid "Show all"
613 msgstr ""
614
615 #: ../../../src/MenuConfig.cpp:294
616 msgid ""
617 "Always show loot tooltips. Temporarily hide all loot tooltips with 'Alt'."
618 msgstr ""
619
620 #: ../../../src/MenuConfig.cpp:295 ../../../src/MenuConfig.cpp:300
621 msgid "Hidden"
622 msgstr ""
623
624 #: ../../../src/MenuConfig.cpp:295
625 msgid ""
626 "Always hide loot tooltips, except for when a piece of loot is hovered with "
627 "the mouse cursor. Temporarily show all loot tooltips with 'Alt'."
628 msgstr ""
629
630 #: ../../../src/MenuConfig.cpp:298
631 msgid "Visible"
632 msgstr ""
633
634 #: ../../../src/MenuConfig.cpp:299
635 msgid "Visible (2x zoom)"
636 msgstr ""
637
638 #: ../../../src/MenuConfig.cpp:303
639 msgid ""
640 "Controls the type of warning to be activated when the player is below the "
641 "low health threshold."
642 msgstr ""
643
644 #: ../../../src/MenuConfig.cpp:304
645 msgid "- Display a message"
646 msgstr ""
647
648 #: ../../../src/MenuConfig.cpp:305
649 msgid "- Play a sound"
650 msgstr ""
651
652 #: ../../../src/MenuConfig.cpp:306
653 msgid "- Change the cursor"
654 msgstr ""
655
656 #: ../../../src/MenuConfig.cpp:308
657 msgid "Disabled"
658 msgstr ""
659
660 #: ../../../src/MenuConfig.cpp:309
661 msgid "All"
662 msgstr ""
663
664 #: ../../../src/MenuConfig.cpp:310
665 msgid "Message & Cursor"
666 msgstr ""
667
668 #: ../../../src/MenuConfig.cpp:311
669 msgid "Message & Sound"
670 msgstr ""
671
672 #: ../../../src/MenuConfig.cpp:312
673 msgid "Sound & Cursor"
674 msgstr ""
675
676 #: ../../../src/MenuConfig.cpp:313
677 msgid "Message"
678 msgstr ""
679
680 #: ../../../src/MenuConfig.cpp:314
681 msgid "Cursor"
682 msgstr ""
683
684 #: ../../../src/MenuConfig.cpp:315
685 msgid "Sound"
686 msgstr ""
687
688 #: ../../../src/MenuConfig.cpp:321
689 msgid ""
690 "When the player's health drops below the given threshold, the low health "
691 "notifications are triggered if one or more of them is enabled."
692 msgstr ""
693
694 #: ../../../src/MenuConfig.cpp:334 ../../../src/MenuConfig.cpp:1587
695 #: ../../../src/MenuGameOver.cpp:116
696 msgid "Exit"
697 msgstr "Έξοδος"
698
699 #: ../../../src/MenuConfig.cpp:335
700 msgid "Video"
701 msgstr "Εικόνα"
702
703 #: ../../../src/MenuConfig.cpp:336
153704 msgid "Audio"
154705 msgstr "Ήχος"
155706
156 #: ../../../src/GameStateConfigBase.cpp:161
157 #: ../../../src/GameStateConfigDesktop.cpp:131
707 #: ../../../src/MenuConfig.cpp:337
158708 msgid "Interface"
159709 msgstr "Περιβάλλον"
160710
161 #: ../../../src/GameStateConfigBase.cpp:162
162 #: ../../../src/GameStateConfigDesktop.cpp:134
711 #: ../../../src/MenuConfig.cpp:338
712 msgid "Input"
713 msgstr "Εισαγωγή"
714
715 #: ../../../src/MenuConfig.cpp:339
716 msgid "Keybindings"
717 msgstr "Πλήκτρα"
718
719 #: ../../../src/MenuConfig.cpp:340
163720 msgid "Mods"
164721 msgstr "Πρόσθετα"
165722
166 #: ../../../src/GameStateConfigBase.cpp:249 ../../../src/MenuExit.cpp:72
723 #: ../../../src/MenuConfig.cpp:352
724 msgid "Paused"
725 msgstr ""
726
727 #: ../../../src/MenuConfig.cpp:355
728 msgid "Time Played"
729 msgstr ""
730
731 #: ../../../src/MenuConfig.cpp:361
732 msgid "Renderer"
733 msgstr ""
734
735 #: ../../../src/MenuConfig.cpp:362
736 msgid "Full Screen Mode"
737 msgstr "Λειτουργία πλήρους οθόνης"
738
739 #: ../../../src/MenuConfig.cpp:363
740 msgid "Hardware surfaces"
741 msgstr "Χρήση κάρτας γραφικών για επιφάνειες"
742
743 #: ../../../src/MenuConfig.cpp:364
744 msgid "V-Sync"
745 msgstr ""
746
747 #: ../../../src/MenuConfig.cpp:365
748 msgid "Texture Filtering"
749 msgstr ""
750
751 #: ../../../src/MenuConfig.cpp:366
752 msgid "DPI scaling"
753 msgstr ""
754
755 #: ../../../src/MenuConfig.cpp:367
756 msgid "Parallax Layers"
757 msgstr ""
758
759 #: ../../../src/MenuConfig.cpp:368
760 msgid "Allow changing gamma"
761 msgstr "Επιτρέπεται η αλλαγή Φωτεινότητας"
762
763 #: ../../../src/MenuConfig.cpp:369
764 msgid "Gamma"
765 msgstr "Φωτεινότητα"
766
767 #: ../../../src/MenuConfig.cpp:371
768 msgid "Sound Volume"
769 msgstr "Ένταση Ήχου"
770
771 #: ../../../src/MenuConfig.cpp:372
167772 msgid "Music Volume"
168773 msgstr "Ένταση Μουσικής"
169774
170 #: ../../../src/GameStateConfigBase.cpp:253 ../../../src/MenuExit.cpp:77
171 msgid "Sound Volume"
172 msgstr "Ένταση Ήχου"
173
174 #: ../../../src/GameStateConfigBase.cpp:257
775 #: ../../../src/MenuConfig.cpp:374
175776 msgid "Language"
176777 msgstr "Γλώσσα"
177778
178 #: ../../../src/GameStateConfigBase.cpp:266
779 #: ../../../src/MenuConfig.cpp:375
179780 msgid "Show FPS"
180781 msgstr "Εμφάνιση καρέ ανά δευτερόλεπτο"
181782
182 #: ../../../src/GameStateConfigBase.cpp:270
783 #: ../../../src/MenuConfig.cpp:376
784 msgid "Hardware mouse cursor"
785 msgstr ""
786
787 #: ../../../src/MenuConfig.cpp:377
183788 msgid "Colorblind Mode"
184789 msgstr "Ρύθμιση Δυσχρωματοψίας"
185790
186 #: ../../../src/GameStateConfigBase.cpp:274
187 msgid "Hardware mouse cursor"
188 msgstr ""
189
190 #: ../../../src/GameStateConfigBase.cpp:278
791 #: ../../../src/MenuConfig.cpp:378
191792 msgid "Developer Mode"
192793 msgstr ""
193794
194 #: ../../../src/GameStateConfigBase.cpp:282
795 #: ../../../src/MenuConfig.cpp:379
195796 msgid "Subtitles"
196797 msgstr "Υπότιτλοι"
197798
198 #: ../../../src/GameStateConfigBase.cpp:286
199 msgid "Active Mods"
200 msgstr "Ενεργά Πρόσθετα"
201
202 #: ../../../src/GameStateConfigBase.cpp:295
203 msgid "Available Mods"
204 msgstr "Διαθέσιμα Πρόσθετα"
205
206 #: ../../../src/GameStateConfigBase.cpp:314
207 msgid "<< Disable"
208 msgstr "<< Απενεργοποίηση"
209
210 #: ../../../src/GameStateConfigBase.cpp:320
211 msgid "Enable >>"
212 msgstr "Ενεργοποίηση >>"
213
214 #: ../../../src/GameStateConfigBase.cpp:873
215 msgid "Version:"
216 msgstr ""
217
218 #: ../../../src/GameStateConfigBase.cpp:878
219 msgid "Game:"
220 msgstr "Παιχνίδι:"
221
222 #: ../../../src/GameStateConfigBase.cpp:883
223 msgid "Engine version:"
224 msgstr ""
225
226 #: ../../../src/GameStateConfigBase.cpp:891
227 msgid "Requires mods:"
228 msgstr ""
229
230 #: ../../../src/GameStateConfigDesktop.cpp:83
231 #: ../../../src/GameStateConfigDesktop.cpp:751
232 msgid "Clear"
233 msgstr ""
234
235 #: ../../../src/GameStateConfigDesktop.cpp:83
236 #: ../../../src/GameStateConfigDesktop.cpp:749
237 msgid "Assign:"
238 msgstr ""
239
240 #: ../../../src/GameStateConfigDesktop.cpp:128
241 msgid "Video"
242 msgstr "Εικόνα"
243
244 #: ../../../src/GameStateConfigDesktop.cpp:132
245 msgid "Input"
246 msgstr "Εισαγωγή"
247
248 #: ../../../src/GameStateConfigDesktop.cpp:133
249 msgid "Keybindings"
250 msgstr "Πλήκτρα"
251
252 #: ../../../src/GameStateConfigDesktop.cpp:188
799 #: ../../../src/MenuConfig.cpp:380
800 msgid "Loot tooltip visibility"
801 msgstr ""
802
803 #: ../../../src/MenuConfig.cpp:381
804 msgid "Mini-map mode"
805 msgstr ""
806
807 #: ../../../src/MenuConfig.cpp:382
808 msgid "Always show stat bar labels"
809 msgstr ""
810
811 #: ../../../src/MenuConfig.cpp:383
812 msgid "Allow stat bar auto-hiding"
813 msgstr ""
814
815 #: ../../../src/MenuConfig.cpp:384
816 msgid "Show combat text"
817 msgstr "Προβολή κειμένου μάχης"
818
819 #: ../../../src/MenuConfig.cpp:385
820 msgid "Automatically equip items"
821 msgstr ""
822
823 #: ../../../src/MenuConfig.cpp:386
824 msgid "Show hidden entity markers"
825 msgstr ""
826
827 #: ../../../src/MenuConfig.cpp:387
828 msgid "Low health notification"
829 msgstr ""
830
831 #: ../../../src/MenuConfig.cpp:388
832 msgid "Low health threshold"
833 msgstr ""
834
835 #: ../../../src/MenuConfig.cpp:389
836 msgid "Show item comparison tooltips"
837 msgstr ""
838
839 #: ../../../src/MenuConfig.cpp:392 ../../../src/MenuMovementType.cpp:94
840 #: ../../../src/MenuMovementType.cpp:131
841 msgid "Joystick"
842 msgstr "Χειριστήριο"
843
844 #: ../../../src/MenuConfig.cpp:393
845 msgid "Move hero using mouse"
846 msgstr "Κίνηση ήρωα με ποντίκι"
847
848 #: ../../../src/MenuConfig.cpp:394
849 msgid "Mouse aim"
850 msgstr "Σκόπευση με το ποντίκι"
851
852 #: ../../../src/MenuConfig.cpp:395
853 msgid "Do not use mouse"
854 msgstr "Απενεργοποίηση του ποντικιού"
855
856 #: ../../../src/MenuConfig.cpp:396
857 msgid "Swap mouse movement button"
858 msgstr ""
859
860 #: ../../../src/MenuConfig.cpp:397
861 msgid "Attack with mouse movement"
862 msgstr ""
863
864 #: ../../../src/MenuConfig.cpp:398
865 msgid "Joystick Deadzone"
866 msgstr "Νεκρή Ζώνη Χειριστηρίου"
867
868 #: ../../../src/MenuConfig.cpp:408
869 #, c-format
870 msgid "Primary binding: %s"
871 msgstr ""
872
873 #: ../../../src/MenuConfig.cpp:409
874 #, c-format
875 msgid "Alternate binding: %s"
876 msgstr ""
877
878 #: ../../../src/MenuConfig.cpp:410
879 #, c-format
880 msgid "Joystick binding: %s"
881 msgstr ""
882
883 #: ../../../src/MenuConfig.cpp:511
253884 msgid ""
254885 "Will try to store surfaces in video memory versus system memory. The effect "
255886 "this has on performance depends on the renderer."
256887 msgstr ""
257888
258 #: ../../../src/GameStateConfigDesktop.cpp:189
889 #: ../../../src/MenuConfig.cpp:512
259890 msgid ""
260891 "Prevents screen tearing. Disable if you experience \"stuttering\" in "
261892 "windowed mode or input lag."
262893 msgstr ""
263894
264 #: ../../../src/GameStateConfigDesktop.cpp:190
895 #: ../../../src/MenuConfig.cpp:513
265896 msgid ""
266897 "When enabled, this uses the screen DPI in addition to the window dimensions "
267898 "to scale the rendering resolution. Otherwise, only the window dimensions are"
268899 " used."
269900 msgstr ""
270901
271 #: ../../../src/GameStateConfigDesktop.cpp:191
902 #: ../../../src/MenuConfig.cpp:514
272903 msgid ""
273904 "This enables parallax (non-tile) layers. Disabling this setting can improve "
274905 "performance in some cases."
275906 msgstr ""
276907
277 #: ../../../src/GameStateConfigDesktop.cpp:192
278 msgid "Experimental"
279 msgstr "Πειραματικό"
280
281 #: ../../../src/GameStateConfigDesktop.cpp:193
282 msgid "For handheld devices"
283 msgstr "Για φορητές συσκευές"
284
285 #: ../../../src/GameStateConfigDesktop.cpp:211
286 msgid "Renderer"
287 msgstr ""
288
289 #: ../../../src/GameStateConfigDesktop.cpp:227
290 msgid "Full Screen Mode"
291 msgstr "Λειτουργία πλήρους οθόνης"
292
293 #: ../../../src/GameStateConfigDesktop.cpp:231
294 msgid "Move hero using mouse"
295 msgstr "Κίνηση ήρωα με ποντίκι"
296
297 #: ../../../src/GameStateConfigDesktop.cpp:235
298 msgid "Hardware surfaces"
299 msgstr "Χρήση κάρτας γραφικών για επιφάνειες"
300
301 #: ../../../src/GameStateConfigDesktop.cpp:239
302 msgid "V-Sync"
303 msgstr ""
304
305 #: ../../../src/GameStateConfigDesktop.cpp:243
306 msgid "Texture Filtering"
307 msgstr ""
308
309 #: ../../../src/GameStateConfigDesktop.cpp:247
310 msgid "DPI scaling"
311 msgstr ""
312
313 #: ../../../src/GameStateConfigDesktop.cpp:251
314 msgid "Parallax Layers"
315 msgstr ""
316
317 #: ../../../src/GameStateConfigDesktop.cpp:255
318 msgid "Allow changing gamma"
319 msgstr "Επιτρέπεται η αλλαγή Φωτεινότητας"
320
321 #: ../../../src/GameStateConfigDesktop.cpp:259
322 msgid "Gamma"
323 msgstr "Φωτεινότητα"
324
325 #: ../../../src/GameStateConfigDesktop.cpp:263
326 msgid "Use joystick"
327 msgstr "Χρήση χειριστηρίου"
328
329 #: ../../../src/GameStateConfigDesktop.cpp:267
330 msgid "Joystick"
331 msgstr "Χειριστήριο"
332
333 #: ../../../src/GameStateConfigDesktop.cpp:283
334 msgid "Mouse aim"
335 msgstr "Σκόπευση με το ποντίκι"
336
337 #: ../../../src/GameStateConfigDesktop.cpp:287
338 msgid "Do not use mouse"
339 msgstr "Απενεργοποίηση του ποντικιού"
340
341 #: ../../../src/GameStateConfigDesktop.cpp:291
342 msgid "Joystick Deadzone"
343 msgstr "Νεκρή Ζώνη Χειριστηρίου"
344
345 #: ../../../src/GameState.cpp:37 ../../../src/GameState.cpp:58
346 msgid "Loading..."
347 msgstr "Φόρτωση..."
348
349 #: ../../../src/GameStateLoad.cpp:88 ../../../src/GameStateLoad.cpp:101
350 msgid "Delete Save"
351 msgstr "Διαγραφή"
352
353 #: ../../../src/GameStateLoad.cpp:88
354 msgid "Delete this save?"
355 msgstr "Διαγραφή παιχνιδιού;"
356
357 #: ../../../src/GameStateLoad.cpp:90
358 msgid "Exit to Title"
359 msgstr "Έξοδος προς Τίτλο"
360
361 #: ../../../src/GameStateLoad.cpp:93
362 msgid "New Game"
363 msgstr "Νέο Παιχνίδι"
364
365 #: ../../../src/GameStateLoad.cpp:97 ../../../src/GameStateLoad.cpp:600
366 msgid "Choose a Slot"
367 msgstr "Επίλεξε μία Θέση"
368
369 #: ../../../src/GameStateLoad.cpp:573 ../../../src/GameStateLoad.cpp:594
370 msgid "Enable a story mod to continue"
371 msgstr "Ενεργοποίησε ένα πρόσθετο με σενάριο για να συνεχίσεις"
372
373 #: ../../../src/GameStateLoad.cpp:589
374 msgid "Load Game"
375 msgstr "Φόρτωση Παιχνιδιού"
376
377 #: ../../../src/GameStateLoad.cpp:695
378 msgid "Entering game world..."
379 msgstr "Είσοδος στο παιχνίδι..."
380
381 #: ../../../src/GameStateLoad.cpp:698
382 msgid "Loading saved game..."
383 msgstr "Φόρτωση αποθηκευμένου παιχνιδιού..."
384
385 #: ../../../src/GameStateLoad.cpp:731
386 msgid "Invalid save"
387 msgstr ""
388
389 #: ../../../src/GameStateLoad.cpp:755 ../../../src/ItemManager.cpp:747
390 #: ../../../src/MenuPowers.cpp:778 ../../../src/MenuPowers.cpp:1144
391 #: ../../../src/MenuPowers.cpp:1542
392 #, c-format
393 msgid "Level %d"
394 msgstr "Επίπεδο %d"
395
396 #: ../../../src/GameStateNew.cpp:68
397 msgid "Create"
398 msgstr "Δημιουργία"
399
400 #: ../../../src/GameStateNew.cpp:76
401 msgid "Randomize"
402 msgstr ""
403
404 #: ../../../src/GameStateNew.cpp:92
405 msgid "Choose a Portrait"
406 msgstr "Επιλογή Πορτραίτου"
407
408 #: ../../../src/GameStateNew.cpp:96
409 msgid "Choose a Name"
410 msgstr "Επιλογή Ονόματος"
411
412 #: ../../../src/GameStateNew.cpp:100
413 msgid "Permadeath?"
414 msgstr "Μόνιμος θάνατος;"
415
416 #: ../../../src/GameStateNew.cpp:104
417 msgid "Choose a Class"
418 msgstr "Επιλογή Κλάσης"
419
420 #: ../../../src/GameStateTitle.cpp:108
421 msgid "Play Game"
422 msgstr "Έναρξη Παιχνιδιού"
423
424 #: ../../../src/GameStateTitle.cpp:111
425 msgid "Enable a core mod to continue"
426 msgstr "Ενεργοποίησε ένα πρόσθετο πυρήνα για να συνεχίσεις"
427
428 #: ../../../src/GameStateTitle.cpp:115
429 msgid "Configuration"
430 msgstr "Ρυθμίσεις"
431
432 #: ../../../src/GameStateTitle.cpp:118
433 msgid "Credits"
434 msgstr "Μνεία"
435
436 #: ../../../src/GameStateTitle.cpp:121
437 msgid "Exit Game"
438 msgstr "Έξοδος"
439
440 #: ../../../src/InputState.cpp:402
441 msgid "Accept"
442 msgstr "Αποδοχή"
443
444 #: ../../../src/InputState.cpp:403 ../../../src/SDLInputState.cpp:607
445 msgid "Up"
446 msgstr "Πάνω"
447
448 #: ../../../src/InputState.cpp:404 ../../../src/SDLInputState.cpp:585
449 msgid "Down"
450 msgstr "Κάτω"
451
452 #: ../../../src/InputState.cpp:405 ../../../src/SDLInputState.cpp:592
453 msgid "Left"
454 msgstr "Αριστερά"
455
456 #: ../../../src/InputState.cpp:406 ../../../src/SDLInputState.cpp:602
457 msgid "Right"
458 msgstr "Δεξιά"
459
460 #: ../../../src/InputState.cpp:407
461 msgid "Bar1"
462 msgstr "Μπάρα 1"
463
464 #: ../../../src/InputState.cpp:408
465 msgid "Bar2"
466 msgstr "Μπάρα 2"
467
468 #: ../../../src/InputState.cpp:409
469 msgid "Bar3"
470 msgstr "Μπάρα 3"
471
472 #: ../../../src/InputState.cpp:410
473 msgid "Bar4"
474 msgstr "Μπάρα 4"
475
476 #: ../../../src/InputState.cpp:411
477 msgid "Bar5"
478 msgstr "Μπάρα 5"
479
480 #: ../../../src/InputState.cpp:412
481 msgid "Bar6"
482 msgstr "Μπάρα 6"
483
484 #: ../../../src/InputState.cpp:413
485 msgid "Bar7"
486 msgstr "Μπάρα 7"
487
488 #: ../../../src/InputState.cpp:414
489 msgid "Bar8"
490 msgstr "Μπάρα 8"
491
492 #: ../../../src/InputState.cpp:415
493 msgid "Bar9"
494 msgstr "Μπάρα 9"
495
496 #: ../../../src/InputState.cpp:416
497 msgid "Bar0"
498 msgstr "Μπάρα 0"
499
500 #: ../../../src/InputState.cpp:417 ../../../src/MenuActionBar.cpp:83
501 #: ../../../src/MenuCharacter.cpp:54
502 msgid "Character"
503 msgstr "Χαρακτήρας"
504
505 #: ../../../src/InputState.cpp:418 ../../../src/MenuActionBar.cpp:84
506 #: ../../../src/MenuInventory.cpp:137 ../../../src/MenuVendor.cpp:57
507 msgid "Inventory"
508 msgstr "Εξοπλισμός"
509
510 #: ../../../src/InputState.cpp:419 ../../../src/MenuActionBar.cpp:85
511 #: ../../../src/MenuPowers.cpp:168
512 msgid "Powers"
513 msgstr "Δυνάμεις"
514
515 #: ../../../src/InputState.cpp:420 ../../../src/MenuActionBar.cpp:86
516 #: ../../../src/MenuLog.cpp:72
517 msgid "Log"
518 msgstr "Ημερολόγιο"
519
520 #: ../../../src/InputState.cpp:421
521 msgid "Main1"
522 msgstr "Κύρια Ενέργεια 1"
523
524 #: ../../../src/InputState.cpp:422
525 msgid "Main2"
526 msgstr "Κύρια Ενέργεια 2"
527
528 #: ../../../src/InputState.cpp:423
529 msgid "Ctrl"
530 msgstr "Ctrl"
531
532 #: ../../../src/InputState.cpp:424
533 msgid "Shift"
534 msgstr "Shift"
535
536 #: ../../../src/InputState.cpp:425
537 msgid "Alt"
538 msgstr "Alt"
539
540 #: ../../../src/InputState.cpp:426 ../../../src/SDLInputState.cpp:584
541 msgid "Delete"
542 msgstr "Διαγραφή"
543
544 #: ../../../src/InputState.cpp:427
545 msgid "ActionBar Accept"
546 msgstr "Μπάρα Ενεργειών Αποδοχή"
547
548 #: ../../../src/InputState.cpp:428
549 msgid "ActionBar Left"
550 msgstr "Μπάρα Ενεργειών Αριστερά"
551
552 #: ../../../src/InputState.cpp:429
553 msgid "ActionBar Right"
554 msgstr "Μπάρα Ενεργειών Δεξιά"
555
556 #: ../../../src/InputState.cpp:430
557 msgid "ActionBar Use"
558 msgstr "Μπάρα Ενεργειών Χρήση"
559
560 #: ../../../src/InputState.cpp:431
561 msgid "Developer Menu"
562 msgstr ""
563
564 #: ../../../src/InputState.cpp:433
565 msgid "Left Mouse"
566 msgstr ""
567
568 #: ../../../src/InputState.cpp:434
569 msgid "Middle Mouse"
570 msgstr ""
571
572 #: ../../../src/InputState.cpp:435
573 msgid "Right Mouse"
574 msgstr ""
575
576 #: ../../../src/InputState.cpp:436
577 msgid "Wheel Up"
578 msgstr ""
579
580 #: ../../../src/InputState.cpp:437
581 msgid "Wheel Down"
582 msgstr ""
583
584 #: ../../../src/InputState.cpp:438
585 msgid "Mouse X1"
586 msgstr ""
587
588 #: ../../../src/InputState.cpp:439
589 msgid "Mouse X2"
590 msgstr ""
591
592 #: ../../../src/ItemManager.cpp:450 ../../../src/ItemManager.cpp:453
593 msgid "Unknown Item"
594 msgstr ""
595
596 #: ../../../src/ItemManager.cpp:648 ../../../src/MenuPowers.cpp:887
597 #, c-format
598 msgid "%d%% Speed"
599 msgstr "%d%%Ταχύτητα"
600
601 #: ../../../src/ItemManager.cpp:652 ../../../src/MenuPowers.cpp:890
602 #, c-format
603 msgid "%d%% Attack Speed"
604 msgstr "%d%%Ταχύτητα Επίθεσης"
605
606 #: ../../../src/ItemManager.cpp:674 ../../../src/MenuCharacter.cpp:354
607 #: ../../../src/MenuPowers.cpp:833
608 #, c-format
609 msgid "Resistance (%s)"
610 msgstr ""
611
612 #: ../../../src/ItemManager.cpp:684
613 #, c-format
614 msgid "Requires %s"
615 msgstr ""
616
617 #: ../../../src/ItemManager.cpp:733
618 msgid "Quest Item"
619 msgstr "Αντικείμενο Αποστολής"
620
621 #: ../../../src/ItemManager.cpp:760
622 #, c-format
623 msgid "Quality: %s"
624 msgstr "Ποιότητα: %s"
625
626 #: ../../../src/ItemManager.cpp:785
627 #, c-format
628 msgid "Absorb: %d-%d"
629 msgstr "Απορρόφηση: %d-%d"
630
631 #: ../../../src/ItemManager.cpp:787
632 #, c-format
633 msgid "Absorb: %d"
634 msgstr "Απορρόφηση: %d"
635
636 #: ../../../src/ItemManager.cpp:827 ../../../src/MenuPowers.cpp:1131
637 #: ../../../src/MenuPowers.cpp:1134
638 #, c-format
639 msgid "Requires Level %d"
640 msgstr "Χρειάζεται Επίπεδο %d"
641
642 #: ../../../src/ItemManager.cpp:838 ../../../src/MenuPowers.cpp:1123
643 #: ../../../src/MenuPowers.cpp:1125
644 #, c-format
645 msgid "Requires %s %d"
646 msgstr "Χρειάζεται %s%d"
647
648 #: ../../../src/ItemManager.cpp:849
649 #, c-format
650 msgid "Requires Class: %s"
651 msgstr ""
652
653 #: ../../../src/ItemManager.cpp:864 ../../../src/ItemManager.cpp:876
654 #, c-format
655 msgid "Buy Price: %d %s"
656 msgstr "Τιμή Αγοράς: %d %s"
657
658 #: ../../../src/ItemManager.cpp:866 ../../../src/ItemManager.cpp:878
659 #, c-format
660 msgid "Buy Price: %d %s each"
661 msgstr "Τιμή Αγοράς: %d %s έκαστο"
662
663 #: ../../../src/ItemManager.cpp:886
664 #, c-format
665 msgid "Sell Price: %d %s"
666 msgstr "Τιμή Πώλησης: %d %s"
667
668 #: ../../../src/ItemManager.cpp:888
669 #, c-format
670 msgid "Sell Price: %d %s each"
671 msgstr "Τιμή Πώλησης: %d %s έκαστο"
672
673 #: ../../../src/ItemManager.cpp:897
674 msgid "Set:"
675 msgstr ""
676
677 #: ../../../src/ItemManager.cpp:904
678 #, c-format
679 msgid "%d items:"
680 msgstr ""
681
682 #: ../../../src/ItemManager.cpp:917
683 #, c-format
684 msgid "Press [%s] to use"
685 msgstr ""
686
687 #: ../../../src/ItemManager.cpp:920
688 #, c-format
689 msgid "Press [%s] to read"
690 msgstr ""
691
692 #: ../../../src/MenuActionBar.cpp:87
693 msgid "Loot tooltip visibility"
694 msgstr ""
695
696 #: ../../../src/MenuActionBar.cpp:88
697 msgid "Mini-map mode"
698 msgstr ""
699
700 #: ../../../src/MenuActionBar.cpp:89
701 msgid "Always show stat bar labels"
702 msgstr ""
703
704 #: ../../../src/MenuActionBar.cpp:90
705 msgid "Show combat text"
706 msgstr "Προβολή κειμένου μάχης"
707
708 #: ../../../src/MenuActionBar.cpp:254 ../../../src/MenuActionBar.cpp:261
709 #: ../../../src/MenuActionBar.cpp:264 ../../../src/MenuActionBar.cpp:271
710 #, c-format
711 msgid "Hotkey: %s"
712 msgstr ""
713
714 #: ../../../src/MenuActionBar.cpp:474
715 #, c-format
716 msgid "Default. Temporarily show all loot tooltips with '%s'."
717 msgstr ""
718
719 #: ../../../src/MenuActionBar.cpp:476
720 #, c-format
721 msgid "Show All. Temporarily hide all loot tooltips with '%s'."
722 msgstr ""
723
724 #: ../../../src/MenuActionBar.cpp:478
725 #, c-format
726 msgid "Hide All. Temporarily show all loot tooltips with '%s'."
727 msgstr ""
728
729 #: ../../../src/MenuActionBar.cpp:482
730 msgid "Visible"
731 msgstr ""
732
733 #: ../../../src/MenuActionBar.cpp:484
734 msgid "Visible (2x zoom)"
735 msgstr ""
736
737 #: ../../../src/MenuActionBar.cpp:486
738 msgid "Hidden"
739 msgstr ""
740
741 #: ../../../src/MenuActionBar.cpp:490 ../../../src/MenuActionBar.cpp:496
742 msgid "Enabled"
743 msgstr ""
744
745 #: ../../../src/MenuActionBar.cpp:492 ../../../src/MenuActionBar.cpp:498
746 msgid "Disabled"
747 msgstr ""
748
749 #: ../../../src/MenuActionBar.cpp:657
750 msgid "Not enough MP."
751 msgstr ""
752
753 #: ../../../src/MenuActiveEffects.cpp:124
754 #, c-format
755 msgid "x%d"
756 msgstr ""
757
758 #: ../../../src/MenuActiveEffects.cpp:219
759 msgid "Remaining:"
760 msgstr ""
761
762 #: ../../../src/MenuActiveEffects.cpp:225
763 #, c-format
764 msgid "x%d stacks"
765 msgstr ""
766
767 #: ../../../src/MenuCharacter.cpp:73 ../../../src/MenuCharacter.cpp:78
768 msgid "Name"
769 msgstr "Όνομα"
770
771 #: ../../../src/MenuCharacter.cpp:74 ../../../src/MenuCharacter.cpp:79
772 msgid "Level"
773 msgstr "Επίπεδο"
774
775 #: ../../../src/MenuCharacter.cpp:310
776 #, c-format
777 msgid "%d unspent stat point"
778 msgstr ""
779
780 #: ../../../src/MenuCharacter.cpp:313
781 #, c-format
782 msgid "%d unspent stat points"
783 msgstr ""
784
785 #: ../../../src/MenuCharacter.cpp:355
786 #, c-format
787 msgid "Reduces the damage taken from \"%s\" elemental attacks."
788 msgstr ""
789
790 #: ../../../src/MenuCharacter.cpp:365 ../../../src/MenuManager.cpp:283
791 #, c-format
792 msgid "XP: %d"
793 msgstr "XP (Πόντοι Εμπειρίας): %d"
794
795 #: ../../../src/MenuCharacter.cpp:367
796 #, c-format
797 msgid "Next: %d"
798 msgstr "Επόμενο: %d"
799
800 #: ../../../src/MenuCharacter.cpp:373
801 #, c-format
802 msgid "base (%d), bonus (%d)"
803 msgstr "βάση (%d), μπόνους (%d)"
804
805 #: ../../../src/MenuCharacter.cpp:381 ../../../src/MenuCharacter.cpp:395
806 msgid "Related stats:"
807 msgstr ""
808
809 #: ../../../src/MenuCharacter.cpp:421 ../../../src/MenuCharacter.cpp:445
810 #, c-format
811 msgid "Each level grants %d."
812 msgstr ""
813
814 #: ../../../src/MenuCharacter.cpp:425 ../../../src/MenuCharacter.cpp:449
815 #, c-format
816 msgid "Each point of %s grants %d."
817 msgstr ""
818
819 #: ../../../src/MenuDevConsole.cpp:63
908 #: ../../../src/MenuConfig.cpp:515
909 msgid ""
910 "Enables the below setting that controls the screen gamma level. The behavior"
911 " of the gamma setting can vary between platforms."
912 msgstr ""
913
914 #: ../../../src/MenuConfig.cpp:516
915 msgid ""
916 "Provides additional text for information that is primarily conveyed through "
917 "color."
918 msgstr ""
919
920 #: ../../../src/MenuConfig.cpp:517
921 msgid ""
922 "Some mods will automatically hide the stat bars when they are inactive. "
923 "Disabling this option will keep them displayed at all times."
924 msgstr ""
925
926 #: ../../../src/MenuConfig.cpp:518
927 msgid ""
928 "When enabled, empty equipment slots will be filled with applicable items "
929 "when they are obtained."
930 msgstr ""
931
932 #: ../../../src/MenuConfig.cpp:519
933 msgid ""
934 "Shows a marker above enemies, allies, and the player when they are obscured "
935 "by tall objects."
936 msgstr ""
937
938 #: ../../../src/MenuConfig.cpp:520
939 msgid ""
940 "When enabled, tooltips for equipped items of the same type are shown next to"
941 " standard item tooltips."
942 msgstr ""
943
944 #: ../../../src/MenuConfig.cpp:521
945 msgid ""
946 "This allows the game to be controlled entirely with the keyboard (or "
947 "joystick)."
948 msgstr ""
949
950 #: ../../../src/MenuConfig.cpp:522
951 msgid ""
952 "When 'Move hero using mouse' is enabled, this setting controls if 'Main1' or"
953 " 'Main2' is used to move the hero. If enabled, 'Main2' will move the hero "
954 "instead of 'Main1'."
955 msgstr ""
956
957 #: ../../../src/MenuConfig.cpp:523
958 msgid ""
959 "When 'Move hero using mouse' is enabled, this setting controls if the Power "
960 "assigned to the movement button can be used by targeting an enemy. If this "
961 "setting is disabled, it is required to use 'Shift' to access the Power "
962 "assigned to the movement button."
963 msgstr ""
964
965 #: ../../../src/MenuConfig.cpp:524
966 msgid ""
967 "The player's attacks will be aimed in the direction of the mouse cursor when"
968 " this is enabled."
969 msgstr ""
970
971 #: ../../../src/MenuConfig.cpp:575
972 msgid "Active Mods"
973 msgstr "Ενεργά Πρόσθετα"
974
975 #: ../../../src/MenuConfig.cpp:584
976 msgid "Available Mods"
977 msgstr "Διαθέσιμα Πρόσθετα"
978
979 #: ../../../src/MenuConfig.cpp:603
980 msgid "<< Disable"
981 msgstr "<< Απενεργοποίηση"
982
983 #: ../../../src/MenuConfig.cpp:609
984 msgid "Enable >>"
985 msgstr "Ενεργοποίηση >>"
986
987 #: ../../../src/MenuConfig.cpp:1444
988 msgid "Version:"
989 msgstr ""
990
991 #: ../../../src/MenuConfig.cpp:1449
992 msgid "Game:"
993 msgstr "Παιχνίδι:"
994
995 #: ../../../src/MenuConfig.cpp:1454
996 msgid "Engine version:"
997 msgstr ""
998
999 #: ../../../src/MenuConfig.cpp:1462
1000 msgid "Requires mods:"
1001 msgstr ""
1002
1003 #: ../../../src/MenuConfig.cpp:1570 ../../../src/SDLInputState.cpp:748
1004 msgid "(none)"
1005 msgstr ""
1006
1007 #: ../../../src/MenuConfig.cpp:1587 ../../../src/MenuGameOver.cpp:73
1008 msgid "Save & Exit"
1009 msgstr "Αποθήκευση & Έξοδος"
1010
1011 #: ../../../src/MenuDevConsole.cpp:65
8201012 msgid "Execute"
8211013 msgstr ""
8221014
823 #: ../../../src/MenuDevConsole.cpp:101 ../../../src/MenuDevConsole.cpp:151
1015 #: ../../../src/MenuDevConsole.cpp:103 ../../../src/MenuDevConsole.cpp:153
8241016 msgid "Developer Console"
8251017 msgstr ""
8261018
827 #: ../../../src/MenuDevConsole.cpp:141
1019 #: ../../../src/MenuDevConsole.cpp:143
8281020 #, c-format
8291021 msgid "Use '%s' to inspect with the cursor."
8301022 msgstr ""
8311023
832 #: ../../../src/MenuDevConsole.cpp:146
1024 #: ../../../src/MenuDevConsole.cpp:148
8331025 msgid "Arguments with spaces should be enclosed with double quotes. Example:"
8341026 msgstr ""
8351027
836 #: ../../../src/MenuDevConsole.cpp:147
1028 #: ../../../src/MenuDevConsole.cpp:149
8371029 msgid "Type 'help' to get a list of commands."
8381030 msgstr ""
8391031
840 #: ../../../src/MenuDevConsole.cpp:209 ../../../src/MenuDevConsole.cpp:213
1032 #: ../../../src/MenuDevConsole.cpp:211 ../../../src/MenuDevConsole.cpp:215
8411033 msgid "px"
8421034 msgstr ""
8431035
844 #: ../../../src/MenuDevConsole.cpp:224
1036 #: ../../../src/MenuDevConsole.cpp:226
8451037 msgid "Distance"
8461038 msgstr ""
8471039
848 #: ../../../src/MenuDevConsole.cpp:239 ../../../src/MenuDevConsole.cpp:286
1040 #: ../../../src/MenuDevConsole.cpp:241 ../../../src/MenuDevConsole.cpp:289
1041 #: ../../../src/MenuDevConsole.cpp:303
8491042 msgid "Entity"
8501043 msgstr ""
8511044
852 #: ../../../src/MenuDevConsole.cpp:261 ../../../src/MenuDevConsole.cpp:268
1045 #: ../../../src/MenuDevConsole.cpp:263 ../../../src/MenuDevConsole.cpp:270
8531046 msgid "none"
8541047 msgstr ""
8551048
856 #: ../../../src/MenuDevConsole.cpp:262 ../../../src/MenuDevConsole.cpp:264
1049 #: ../../../src/MenuDevConsole.cpp:264 ../../../src/MenuDevConsole.cpp:266
8571050 msgid "wall"
8581051 msgstr ""
8591052
860 #: ../../../src/MenuDevConsole.cpp:263 ../../../src/MenuDevConsole.cpp:265
1053 #: ../../../src/MenuDevConsole.cpp:265 ../../../src/MenuDevConsole.cpp:267
8611054 msgid "short wall / pit"
8621055 msgstr ""
8631056
864 #: ../../../src/MenuDevConsole.cpp:266
1057 #: ../../../src/MenuDevConsole.cpp:268
8651058 msgid "entity"
8661059 msgstr ""
8671060
868 #: ../../../src/MenuDevConsole.cpp:267
1061 #: ../../../src/MenuDevConsole.cpp:269
8691062 msgid "entity, ally"
8701063 msgstr ""
8711064
872 #: ../../../src/MenuDevConsole.cpp:274
1065 #: ../../../src/MenuDevConsole.cpp:276
8731066 msgid "Tile"
8741067 msgstr ""
8751068
876 #: ../../../src/MenuDevConsole.cpp:360
1069 #: ../../../src/MenuDevConsole.cpp:377
8771070 msgid "adds a power to the action bar"
8781071 msgstr ""
8791072
880 #: ../../../src/MenuDevConsole.cpp:361
1073 #: ../../../src/MenuDevConsole.cpp:378
8811074 msgid "turns on/off the display of the FPS counter"
8821075 msgstr ""
8831076
884 #: ../../../src/MenuDevConsole.cpp:362
1077 #: ../../../src/MenuDevConsole.cpp:379
8851078 msgid "turns on/off all of the HUD elements"
8861079 msgstr ""
8871080
888 #: ../../../src/MenuDevConsole.cpp:363
1081 #: ../../../src/MenuDevConsole.cpp:380
8891082 msgid "turns on/off the developer hud"
8901083 msgstr ""
8911084
892 #: ../../../src/MenuDevConsole.cpp:364
1085 #: ../../../src/MenuDevConsole.cpp:381
8931086 msgid ""
8941087 "Prints a list of powers that match a search term. No search term will list "
8951088 "all items"
8961089 msgstr ""
8971090
898 #: ../../../src/MenuDevConsole.cpp:365
1091 #: ../../../src/MenuDevConsole.cpp:382
8991092 msgid "Prints out all the map filenames located in the \"maps/\" directory."
9001093 msgstr ""
9011094
902 #: ../../../src/MenuDevConsole.cpp:366
1095 #: ../../../src/MenuDevConsole.cpp:383
9031096 msgid ""
9041097 "Prints out the active campaign statuses that match a search term. No search "
9051098 "term will list all active statuses"
9061099 msgstr ""
9071100
908 #: ../../../src/MenuDevConsole.cpp:367
1101 #: ../../../src/MenuDevConsole.cpp:384
9091102 msgid ""
9101103 "Prints a list of items that match a search term. No search term will list "
9111104 "all items"
9121105 msgstr ""
9131106
914 #: ../../../src/MenuDevConsole.cpp:368
1107 #: ../../../src/MenuDevConsole.cpp:385
9151108 msgid ""
9161109 "parses a series of event components and executes them as a single event"
9171110 msgstr ""
9181111
919 #: ../../../src/MenuDevConsole.cpp:369
1112 #: ../../../src/MenuDevConsole.cpp:386
9201113 msgid "clears the command history"
9211114 msgstr ""
9221115
923 #: ../../../src/MenuDevConsole.cpp:370
1116 #: ../../../src/MenuDevConsole.cpp:387
9241117 msgid "displays this text"
9251118 msgstr ""
9261119
927 #: ../../../src/MenuDevConsole.cpp:377
1120 #: ../../../src/MenuDevConsole.cpp:394
9281121 msgid "Toggled the developer hud"
9291122 msgstr ""
9301123
931 #: ../../../src/MenuDevConsole.cpp:381
1124 #: ../../../src/MenuDevConsole.cpp:398
9321125 msgid "Toggled the hud"
9331126 msgstr ""
9341127
935 #: ../../../src/MenuDevConsole.cpp:385
1128 #: ../../../src/MenuDevConsole.cpp:402
9361129 msgid "Toggled the FPS counter"
9371130 msgstr ""
9381131
939 #: ../../../src/MenuDevConsole.cpp:534
1132 #: ../../../src/MenuDevConsole.cpp:552
9401133 msgid "ERROR: Incorrect number of arguments"
9411134 msgstr ""
9421135
943 #: ../../../src/MenuDevConsole.cpp:536 ../../../src/MenuDevConsole.cpp:564
1136 #: ../../../src/MenuDevConsole.cpp:554 ../../../src/MenuDevConsole.cpp:582
9441137 msgid "HINT:"
9451138 msgstr ""
9461139
947 #: ../../../src/MenuDevConsole.cpp:536
1140 #: ../../../src/MenuDevConsole.cpp:554
9481141 msgid "<id>"
9491142 msgstr ""
9501143
951 #: ../../../src/MenuDevConsole.cpp:552
1144 #: ../../../src/MenuDevConsole.cpp:570
9521145 #, c-format
9531146 msgid "ERROR: '%s' is not a valid event key"
9541147 msgstr ""
9551148
956 #: ../../../src/MenuDevConsole.cpp:562
1149 #: ../../../src/MenuDevConsole.cpp:580
9571150 msgid "ERROR: Too few arguments"
9581151 msgstr ""
9591152
960 #: ../../../src/MenuDevConsole.cpp:564
1153 #: ../../../src/MenuDevConsole.cpp:582
9611154 msgid "<key>=<val> <key>=<val> ..."
9621155 msgstr "<key>=<val><key>=<val>..."
9631156
964 #: ../../../src/MenuDevConsole.cpp:569
1157 #: ../../../src/MenuDevConsole.cpp:587
9651158 msgid "ERROR: Unknown command"
9661159 msgstr ""
9671160
968 #: ../../../src/MenuDevConsole.cpp:571
1161 #: ../../../src/MenuDevConsole.cpp:589
9691162 msgid "HINT: Type help"
9701163 msgstr ""
9711164
972 #: ../../../src/MenuEnemy.cpp:138
1165 #: ../../../src/MenuEnemy.cpp:162
9731166 #, c-format
9741167 msgid "%s level %d"
9751168 msgstr "%s επιπέδου %d"
9761169
977 #: ../../../src/MenuEnemy.cpp:162
1170 #: ../../../src/MenuEnemy.cpp:186
9781171 msgid "Dead"
9791172 msgstr "Νεκρός"
9801173
981 #: ../../../src/MenuEnemy.cpp:164
1174 #: ../../../src/MenuEnemy.cpp:188
9821175 msgid "Destroyed"
9831176 msgstr ""
9841177
985 #: ../../../src/MenuExit.cpp:85 ../../../src/MenuExit.cpp:139
986 msgid "Paused"
987 msgstr ""
988
989 #: ../../../src/MenuExit.cpp:91
990 msgid "Save & Exit"
991 msgstr "Αποθήκευση & Έξοδος"
992
993 #: ../../../src/MenuExit.cpp:92
994 msgid "Exit"
995 msgstr "Έξοδος"
996
997 #: ../../../src/MenuExit.cpp:96
998 msgid "Continue"
999 msgstr "Συνέχιση"
1000
1001 #: ../../../src/MenuInventory.cpp:73
1002 msgid "Automatically equip items"
1003 msgstr ""
1004
1005 #: ../../../src/MenuInventory.cpp:188
1178 #: ../../../src/MenuGameOver.cpp:69
1179 msgid "Game Over"
1180 msgstr ""
1181
1182 #: ../../../src/MenuInventory.cpp:178
10061183 #, c-format
10071184 msgid "Lost %d%% of %s."
10081185 msgstr ""
10091186
1010 #: ../../../src/MenuInventory.cpp:195
1187 #: ../../../src/MenuInventory.cpp:185
10111188 #, c-format
10121189 msgid "Lost %d%% of total XP."
10131190 msgstr ""
10141191
1015 #: ../../../src/MenuInventory.cpp:200
1192 #: ../../../src/MenuInventory.cpp:190
10161193 #, c-format
10171194 msgid "Lost %d%% of current level XP."
10181195 msgstr ""
10191196
1020 #: ../../../src/MenuInventory.cpp:226
1197 #: ../../../src/MenuInventory.cpp:216
10211198 #, c-format
10221199 msgid "Lost %s."
10231200 msgstr "Έχασες %s."
10241201
1025 #: ../../../src/MenuInventory.cpp:274 ../../../src/MenuStash.cpp:146
1202 #: ../../../src/MenuInventory.cpp:258 ../../../src/MenuStash.cpp:276
10261203 #, c-format
10271204 msgid "%d %s"
10281205 msgstr "%d %s"
10291206
1030 #: ../../../src/MenuInventory.cpp:317
1207 #: ../../../src/MenuInventory.cpp:301
10311208 msgid "Pick up item(s):"
10321209 msgstr ""
10331210
1034 #: ../../../src/MenuInventory.cpp:318
1211 #: ../../../src/MenuInventory.cpp:302
10351212 msgid "Use or equip item:"
10361213 msgstr ""
10371214
1038 #: ../../../src/MenuInventory.cpp:319
1215 #: ../../../src/MenuInventory.cpp:303
10391216 #, c-format
10401217 msgid "%s modifiers"
10411218 msgstr ""
10421219
1043 #: ../../../src/MenuInventory.cpp:320
1220 #: ../../../src/MenuInventory.cpp:304
10441221 msgid "Select a quantity of item:"
10451222 msgstr ""
10461223
1047 #: ../../../src/MenuInventory.cpp:323
1224 #: ../../../src/MenuInventory.cpp:307
10481225 msgid "Stash item stack:"
10491226 msgstr ""
10501227
1051 #: ../../../src/MenuInventory.cpp:325
1228 #: ../../../src/MenuInventory.cpp:309
10521229 msgid "Sell item stack:"
10531230 msgstr ""
10541231
1055 #: ../../../src/MenuInventory.cpp:592
1232 #: ../../../src/MenuInventory.cpp:576
10561233 msgid "You don't have enough of the required item."
10571234 msgstr ""
10581235
1059 #: ../../../src/MenuInventory.cpp:599
1236 #: ../../../src/MenuInventory.cpp:588
10601237 msgid "You can't use this item right now."
10611238 msgstr ""
10621239
1063 #: ../../../src/MenuInventory.cpp:611
1240 #: ../../../src/MenuInventory.cpp:600
10641241 msgid "This item can only be used from the action bar."
10651242 msgstr ""
10661243 "Αυτό το αντικείμενο μπορεί να χρησιμοποιηθεί μόνο από την μπάρα ενεργειών."
10671244
1068 #: ../../../src/MenuInventory.cpp:729
1245 #: ../../../src/MenuInventory.cpp:718
10691246 msgid "Inventory is full."
10701247 msgstr "Έχεις παραφορτωθεί."
10711248
1072 #: ../../../src/MenuInventory.cpp:849
1249 #: ../../../src/MenuInventory.cpp:843
10731250 #, c-format
10741251 msgid "Not enough %s."
10751252 msgstr "Έλλειψη από %s."
10761253
1077 #: ../../../src/MenuInventory.cpp:869 ../../../src/MenuInventory.cpp:876
1254 #: ../../../src/MenuInventory.cpp:863 ../../../src/MenuInventory.cpp:870
10781255 msgid "This item can not be sold."
10791256 msgstr ""
10801257
10861263 msgid "Quests"
10871264 msgstr "Αποστολές"
10881265
1089 #: ../../../src/MenuManager.cpp:286
1266 #: ../../../src/MenuManager.cpp:305
10901267 #, c-format
10911268 msgid "XP: %d/%d"
10921269 msgstr "XP: %d/%d"
10931270
1094 #: ../../../src/MenuManager.cpp:827
1271 #: ../../../src/MenuManager.cpp:875
10951272 msgid "This item can not be dropped."
1273 msgstr ""
1274
1275 #: ../../../src/MenuManager.cpp:1501
1276 msgid "Equipped"
1277 msgstr ""
1278
1279 #: ../../../src/MenuMovementType.cpp:87
1280 msgid "Select a Movement Type"
1281 msgstr ""
1282
1283 #: ../../../src/MenuMovementType.cpp:89
1284 msgid "Can be changed later in the Configuration menu."
1285 msgstr ""
1286
1287 #: ../../../src/MenuMovementType.cpp:92 ../../../src/MenuMovementType.cpp:122
1288 msgid "Keyboard"
1289 msgstr ""
1290
1291 #: ../../../src/MenuMovementType.cpp:93 ../../../src/MenuMovementType.cpp:128
1292 msgid "Mouse"
1293 msgstr ""
1294
1295 #: ../../../src/MenuMovementType.cpp:129
1296 msgid "Button"
10961297 msgstr ""
10971298
10981299 #: ../../../src/MenuNumPicker.cpp:59
10991300 msgid "Enter amount:"
11001301 msgstr ""
11011302
1102 #: ../../../src/MenuPowers.cpp:787
1303 #: ../../../src/MenuPowers.cpp:872
11031304 msgid "Passive"
11041305 msgstr ""
11051306
1106 #: ../../../src/MenuPowers.cpp:792
1307 #: ../../../src/MenuPowers.cpp:879
11071308 #, c-format
11081309 msgid "Costs %d MP"
11091310 msgstr "Κοστίζει %d MP"
11101311
1111 #: ../../../src/MenuPowers.cpp:796
1312 #: ../../../src/MenuPowers.cpp:883
11121313 #, c-format
11131314 msgid "Costs %d HP"
11141315 msgstr "Κοστίζει %d ΗP"
11151316
1116 #: ../../../src/MenuPowers.cpp:801
1317 #: ../../../src/MenuPowers.cpp:887
11171318 msgid "Cooldown:"
11181319 msgstr ""
11191320
1120 #: ../../../src/MenuPowers.cpp:866 ../../../src/MenuPowers.cpp:869
1321 #: ../../../src/MenuPowers.cpp:938 ../../../src/MenuPowers.cpp:941
11211322 msgid "Damage per second"
11221323 msgstr ""
11231324
1124 #: ../../../src/MenuPowers.cpp:872 ../../../src/MenuPowers.cpp:875
1325 #: ../../../src/MenuPowers.cpp:944 ../../../src/MenuPowers.cpp:947
11251326 msgid "HP per second"
11261327 msgstr ""
11271328
1128 #: ../../../src/MenuPowers.cpp:878 ../../../src/MenuPowers.cpp:881
1329 #: ../../../src/MenuPowers.cpp:950 ../../../src/MenuPowers.cpp:953
11291330 msgid "MP per second"
11301331 msgstr ""
11311332
1132 #: ../../../src/MenuPowers.cpp:885
1333 #: ../../../src/MenuPowers.cpp:957
11331334 msgid "Immobilize"
11341335 msgstr ""
11351336
1136 #: ../../../src/MenuPowers.cpp:893
1337 #: ../../../src/MenuPowers.cpp:965
11371338 msgid "Immunity"
11381339 msgstr ""
11391340
1140 #: ../../../src/MenuPowers.cpp:896
1341 #: ../../../src/MenuPowers.cpp:968
11411342 msgid "Immunity to damage over time"
11421343 msgstr ""
11431344
1144 #: ../../../src/MenuPowers.cpp:899
1345 #: ../../../src/MenuPowers.cpp:971
11451346 msgid "Immunity to slow"
11461347 msgstr ""
11471348
1148 #: ../../../src/MenuPowers.cpp:902
1349 #: ../../../src/MenuPowers.cpp:974
11491350 msgid "Immunity to stun"
11501351 msgstr ""
11511352
1152 #: ../../../src/MenuPowers.cpp:905
1353 #: ../../../src/MenuPowers.cpp:977
11531354 msgid "Immunity to HP steal"
11541355 msgstr ""
11551356
1156 #: ../../../src/MenuPowers.cpp:908
1357 #: ../../../src/MenuPowers.cpp:980
11571358 msgid "Immunity to MP steal"
11581359 msgstr ""
11591360
1160 #: ../../../src/MenuPowers.cpp:911
1361 #: ../../../src/MenuPowers.cpp:983
11611362 msgid "Immunity to knockback"
11621363 msgstr ""
11631364
1164 #: ../../../src/MenuPowers.cpp:914
1365 #: ../../../src/MenuPowers.cpp:986
11651366 msgid "Immunity to damage reflection"
11661367 msgstr ""
11671368
1168 #: ../../../src/MenuPowers.cpp:917
1369 #: ../../../src/MenuPowers.cpp:992
11691370 msgid "Stun"
11701371 msgstr ""
11711372
1172 #: ../../../src/MenuPowers.cpp:920
1373 #: ../../../src/MenuPowers.cpp:995
11731374 msgid "Automatic revive on death"
11741375 msgstr ""
11751376
1176 #: ../../../src/MenuPowers.cpp:923
1377 #: ../../../src/MenuPowers.cpp:998
11771378 msgid "Convert"
11781379 msgstr ""
11791380
1180 #: ../../../src/MenuPowers.cpp:926
1381 #: ../../../src/MenuPowers.cpp:1001
11811382 msgid "Fear"
11821383 msgstr ""
11831384
1184 #: ../../../src/MenuPowers.cpp:929
1385 #: ../../../src/MenuPowers.cpp:1004
11851386 msgid "Lifespan"
11861387 msgstr ""
11871388
1188 #: ../../../src/MenuPowers.cpp:953
1389 #: ../../../src/MenuPowers.cpp:1028
11891390 msgid "Magical Shield"
11901391 msgstr ""
11911392
1192 #: ../../../src/MenuPowers.cpp:982
1393 #: ../../../src/MenuPowers.cpp:1057
11931394 msgid "Healing"
11941395 msgstr ""
11951396
1196 #: ../../../src/MenuPowers.cpp:985
1397 #: ../../../src/MenuPowers.cpp:1060
11971398 msgid "Knockback"
11981399 msgstr ""
11991400
1200 #: ../../../src/MenuPowers.cpp:1010
1401 #: ../../../src/MenuPowers.cpp:1084
12011402 #, c-format
12021403 msgid "%d%% chance"
12031404 msgstr ""
12041405
1205 #: ../../../src/MenuPowers.cpp:1062
1406 #: ../../../src/MenuPowers.cpp:1136
12061407 msgid "Base Accuracy"
12071408 msgstr ""
12081409
1209 #: ../../../src/MenuPowers.cpp:1082
1410 #: ../../../src/MenuPowers.cpp:1156
12101411 msgid "Base Critical Chance"
12111412 msgstr ""
12121413
1213 #: ../../../src/MenuPowers.cpp:1090
1414 #: ../../../src/MenuPowers.cpp:1164
12141415 msgid "Ignores Absorbtion"
12151416 msgstr ""
12161417
1217 #: ../../../src/MenuPowers.cpp:1095
1418 #: ../../../src/MenuPowers.cpp:1169
12181419 msgid "Ignores Avoidance"
12191420 msgstr ""
12201421
1221 #: ../../../src/MenuPowers.cpp:1100
1422 #: ../../../src/MenuPowers.cpp:1174
12221423 #, c-format
12231424 msgid "%d%% Chance to crit slowed targets"
12241425 msgstr ""
12251426
1226 #: ../../../src/MenuPowers.cpp:1105
1427 #: ../../../src/MenuPowers.cpp:1179
12271428 #, c-format
12281429 msgid "Elemental Damage (%s)"
12291430 msgstr ""
12301431
1231 #: ../../../src/MenuPowers.cpp:1114
1432 #: ../../../src/MenuPowers.cpp:1188
12321433 #, c-format
12331434 msgid "Requires a %s"
12341435 msgstr "Χρειάζεται ένα %s"
12351436
1236 #: ../../../src/MenuPowers.cpp:1151 ../../../src/MenuPowers.cpp:1154
1437 #: ../../../src/MenuPowers.cpp:1226 ../../../src/MenuPowers.cpp:1229
12371438 #, c-format
12381439 msgid "Requires Power: %s"
12391440 msgstr "Χρειάζεται Δύναμη: %s"
12401441
1241 #: ../../../src/MenuPowers.cpp:1163
1442 #: ../../../src/MenuPowers.cpp:1238
12421443 msgid "Click to Unlock (uses 1 Skill Point)"
12431444 msgstr ""
12441445
1245 #: ../../../src/MenuPowers.cpp:1167 ../../../src/MenuPowers.cpp:1169
1446 #: ../../../src/MenuPowers.cpp:1242 ../../../src/MenuPowers.cpp:1244
12461447 msgid "Requires 1 Skill Point"
12471448 msgstr "Χρειάζεται 1 Πόντο Ικανότητας"
12481449
1249 #: ../../../src/MenuPowers.cpp:1355
1250 #, c-format
1251 msgid "%d unspent skill point"
1252 msgstr ""
1253
1254 #: ../../../src/MenuPowers.cpp:1358
1255 #, c-format
1256 msgid "%d unspent skill points"
1257 msgstr ""
1258
1259 #: ../../../src/MenuPowers.cpp:1388
1450 #: ../../../src/MenuPowers.cpp:1444
1451 #, c-format
1452 msgid "Available skill points: %d"
1453 msgstr ""
1454
1455 #: ../../../src/MenuPowers.cpp:1476
12601456 msgid "Next Level:"
12611457 msgstr "Επόμενο Επίπεδο:"
12621458
1263 #: ../../../src/MenuStash.cpp:96
1264 msgid "Shared Stash"
1265 msgstr "Κοινόχρηστη Αποθήκη"
1266
1267 #: ../../../src/MenuStash.cpp:209
1268 msgid "Can not store quest items in the stash."
1269 msgstr ""
1270
1271 #: ../../../src/MenuStash.cpp:219
1459 #: ../../../src/MenuStash.cpp:80 ../../../src/MenuStash.cpp:161
1460 msgid "Stash"
1461 msgstr ""
1462
1463 #: ../../../src/MenuStash.cpp:174 ../../../src/MenuStash.cpp:188
1464 msgid "Private"
1465 msgstr ""
1466
1467 #: ../../../src/MenuStash.cpp:175
1468 msgid "Shared"
1469 msgstr ""
1470
1471 #: ../../../src/MenuStash.cpp:340
1472 msgid "This item can not be stored in the stash."
1473 msgstr ""
1474
1475 #: ../../../src/MenuStash.cpp:345
1476 msgid "This item can not be stored in the private stash."
1477 msgstr ""
1478
1479 #: ../../../src/MenuStash.cpp:350
1480 msgid "This item can not be stored in the shared stash."
1481 msgstr ""
1482
1483 #: ../../../src/MenuStash.cpp:360
12721484 msgid "Stash is full."
12731485 msgstr ""
12741486
1275 #: ../../../src/MenuTalker.cpp:454
1487 #: ../../../src/MenuStash.cpp:414
1488 #, c-format
1489 msgid "Can not store item in stash: %s"
1490 msgstr ""
1491
1492 #: ../../../src/MenuTalker.cpp:448
1493 #, c-format
1494 msgid "<dialog node %d>"
1495 msgstr ""
1496
1497 #: ../../../src/MenuTalker.cpp:456
12761498 msgid "Trade"
12771499 msgstr "Εμπόριο"
12781500
1279 #: ../../../src/MenuVendor.cpp:58
1501 #: ../../../src/MenuVendor.cpp:60
12801502 msgid "Buyback"
12811503 msgstr "Επαναγορά"
12821504
1283 #: ../../../src/MenuVendor.cpp:279
1505 #: ../../../src/MenuVendor.cpp:283
12841506 msgid "Vendor"
12851507 msgstr "Πωλητής"
12861508
1287 #: ../../../src/PowerManager.cpp:1136
1509 #: ../../../src/PowerManager.cpp:1208
12881510 #, c-format
12891511 msgid "+%d Shield"
12901512 msgstr "+%d Άμυνα"
12911513
1292 #: ../../../src/PowerManager.cpp:1392
1514 #: ../../../src/PowerManager.cpp:1465
12931515 msgid "You are already transformed, untransform first."
12941516 msgstr "Έχεις ήδη μεταμορφωθεί, απομεταμορφώσου πρώτα."
12951517
1296 #: ../../../src/PowerManager.cpp:1404
1518 #: ../../../src/PowerManager.cpp:1477
12971519 msgid "Could not untransform at this position."
12981520 msgstr ""
12991521
13011523 msgid "Completed Quests"
13021524 msgstr ""
13031525
1304 #: ../../../src/SaveLoad.cpp:243 ../../../src/SaveLoad.cpp:244
1526 #: ../../../src/SaveLoad.cpp:250 ../../../src/SaveLoad.cpp:251
13051527 msgid "Game saved."
13061528 msgstr ""
13071529
1308 #: ../../../src/SDLInputState.cpp:582
1530 #: ../../../src/SDLInputState.cpp:643
1531 msgid "BkSp"
1532 msgstr ""
1533
1534 #: ../../../src/SDLInputState.cpp:644
1535 msgid "Caps"
1536 msgstr ""
1537
1538 #: ../../../src/SDLInputState.cpp:645
1539 msgid "Del"
1540 msgstr ""
1541
1542 #: ../../../src/SDLInputState.cpp:647 ../../../src/SDLInputState.cpp:677
1543 msgid "End"
1544 msgstr ""
1545
1546 #: ../../../src/SDLInputState.cpp:648
1547 msgid "Esc"
1548 msgstr ""
1549
1550 #: ../../../src/SDLInputState.cpp:649 ../../../src/SDLInputState.cpp:679
1551 msgid "Home"
1552 msgstr ""
1553
1554 #: ../../../src/SDLInputState.cpp:650
1555 msgid "Ins"
1556 msgstr ""
1557
1558 #: ../../../src/SDLInputState.cpp:651
1559 msgid "LAlt"
1560 msgstr ""
1561
1562 #: ../../../src/SDLInputState.cpp:652
1563 msgid "LCtrl"
1564 msgstr ""
1565
1566 #: ../../../src/SDLInputState.cpp:654
1567 msgid "LShft"
1568 msgstr ""
1569
1570 #: ../../../src/SDLInputState.cpp:655
1571 msgid "Num"
1572 msgstr ""
1573
1574 #: ../../../src/SDLInputState.cpp:656
1575 msgid "PgDn"
1576 msgstr ""
1577
1578 #: ../../../src/SDLInputState.cpp:657
1579 msgid "PgUp"
1580 msgstr ""
1581
1582 #: ../../../src/SDLInputState.cpp:658 ../../../src/SDLInputState.cpp:688
1583 msgid "Pause"
1584 msgstr ""
1585
1586 #: ../../../src/SDLInputState.cpp:659
1587 msgid "Print"
1588 msgstr ""
1589
1590 #: ../../../src/SDLInputState.cpp:660
1591 msgid "RAlt"
1592 msgstr ""
1593
1594 #: ../../../src/SDLInputState.cpp:661
1595 msgid "RCtrl"
1596 msgstr ""
1597
1598 #: ../../../src/SDLInputState.cpp:662
1599 msgid "Ret"
1600 msgstr ""
1601
1602 #: ../../../src/SDLInputState.cpp:664
1603 msgid "RShft"
1604 msgstr ""
1605
1606 #: ../../../src/SDLInputState.cpp:665
1607 msgid "SLock"
1608 msgstr ""
1609
1610 #: ../../../src/SDLInputState.cpp:666
1611 msgid "Spc"
1612 msgstr ""
1613
1614 #: ../../../src/SDLInputState.cpp:667 ../../../src/SDLInputState.cpp:697
1615 msgid "Tab"
1616 msgstr ""
1617
1618 #: ../../../src/SDLInputState.cpp:673
13091619 msgid "Backspace"
13101620 msgstr ""
13111621
1312 #: ../../../src/SDLInputState.cpp:583
1622 #: ../../../src/SDLInputState.cpp:674
13131623 msgid "CapsLock"
13141624 msgstr ""
13151625
1316 #: ../../../src/SDLInputState.cpp:586
1317 msgid "End"
1318 msgstr ""
1319
1320 #: ../../../src/SDLInputState.cpp:587
1626 #: ../../../src/SDLInputState.cpp:678
13211627 msgid "Escape"
13221628 msgstr ""
13231629
1324 #: ../../../src/SDLInputState.cpp:588
1325 msgid "Home"
1326 msgstr ""
1327
1328 #: ../../../src/SDLInputState.cpp:589
1630 #: ../../../src/SDLInputState.cpp:680
13291631 msgid "Insert"
13301632 msgstr ""
13311633
1332 #: ../../../src/SDLInputState.cpp:590
1634 #: ../../../src/SDLInputState.cpp:681
13331635 msgid "Left Alt"
13341636 msgstr ""
13351637
1336 #: ../../../src/SDLInputState.cpp:591
1638 #: ../../../src/SDLInputState.cpp:682
13371639 msgid "Left Ctrl"
13381640 msgstr ""
13391641
1340 #: ../../../src/SDLInputState.cpp:593
1642 #: ../../../src/SDLInputState.cpp:684
13411643 msgid "Left Shift"
13421644 msgstr ""
13431645
1344 #: ../../../src/SDLInputState.cpp:594
1646 #: ../../../src/SDLInputState.cpp:685
13451647 msgid "NumLock"
13461648 msgstr ""
13471649
1348 #: ../../../src/SDLInputState.cpp:595
1650 #: ../../../src/SDLInputState.cpp:686
13491651 msgid "PageDown"
13501652 msgstr ""
13511653
1352 #: ../../../src/SDLInputState.cpp:596
1654 #: ../../../src/SDLInputState.cpp:687
13531655 msgid "PageUp"
13541656 msgstr ""
13551657
1356 #: ../../../src/SDLInputState.cpp:597
1357 msgid "Pause"
1358 msgstr ""
1359
1360 #: ../../../src/SDLInputState.cpp:598
1658 #: ../../../src/SDLInputState.cpp:689
13611659 msgid "PrintScreen"
13621660 msgstr ""
13631661
1364 #: ../../../src/SDLInputState.cpp:599
1662 #: ../../../src/SDLInputState.cpp:690
13651663 msgid "Right Alt"
13661664 msgstr ""
13671665
1368 #: ../../../src/SDLInputState.cpp:600
1666 #: ../../../src/SDLInputState.cpp:691
13691667 msgid "Right Ctrl"
13701668 msgstr ""
13711669
1372 #: ../../../src/SDLInputState.cpp:601
1670 #: ../../../src/SDLInputState.cpp:692
13731671 msgid "Return"
13741672 msgstr ""
13751673
1376 #: ../../../src/SDLInputState.cpp:603
1674 #: ../../../src/SDLInputState.cpp:694
13771675 msgid "Right Shift"
13781676 msgstr ""
13791677
1380 #: ../../../src/SDLInputState.cpp:604
1678 #: ../../../src/SDLInputState.cpp:695
13811679 msgid "ScrollLock"
13821680 msgstr ""
13831681
1384 #: ../../../src/SDLInputState.cpp:605
1682 #: ../../../src/SDLInputState.cpp:696
13851683 msgid "Space"
13861684 msgstr ""
13871685
1388 #: ../../../src/SDLInputState.cpp:606
1389 msgid "Tab"
1390 msgstr ""
1391
1392 #: ../../../src/SDLInputState.cpp:620
1686 #: ../../../src/SDLInputState.cpp:710
1687 #, c-format
1688 msgid "M%d"
1689 msgstr ""
1690
1691 #: ../../../src/SDLInputState.cpp:716
13931692 #, c-format
13941693 msgid "Mouse %d"
13951694 msgstr "Ποντίκι %d"
13961695
1397 #: ../../../src/SDLInputState.cpp:628
1696 #: ../../../src/SDLInputState.cpp:726
1697 #, c-format
1698 msgid "JX%d-"
1699 msgstr ""
1700
1701 #: ../../../src/SDLInputState.cpp:728
13981702 #, c-format
13991703 msgid "Axis %d -"
14001704 msgstr "Άξονας %d -"
14011705
1402 #: ../../../src/SDLInputState.cpp:630
1706 #: ../../../src/SDLInputState.cpp:732
1707 #, c-format
1708 msgid "JX%d+"
1709 msgstr ""
1710
1711 #: ../../../src/SDLInputState.cpp:734
14031712 #, c-format
14041713 msgid "Axis %d +"
14051714 msgstr "Άξονας %d +"
14061715
1407 #: ../../../src/SDLInputState.cpp:633
1716 #: ../../../src/SDLInputState.cpp:739
1717 #, c-format
1718 msgid "JB%d"
1719 msgstr ""
1720
1721 #: ../../../src/SDLInputState.cpp:741
14081722 #, c-format
14091723 msgid "Button %d"
14101724 msgstr ""
14111725
1412 #: ../../../src/SDLInputState.cpp:637
1413 msgid "(none)"
1414 msgstr ""
1415
1416 #: ../../../src/SDLInputState.cpp:677
1726 #: ../../../src/SDLInputState.cpp:787
14171727 msgid "Touch control D-Pad"
14181728 msgstr ""
14191729
1420 #: ../../../src/SDLInputState.cpp:701
1730 #: ../../../src/SDLInputState.cpp:810
14211731 msgid "Touch control buttons"
14221732 msgstr ""
14231733
1424 #: ../../../src/SDLInputState.cpp:716
1734 #: ../../../src/SDLInputState.cpp:824
14251735 msgid "Tap"
14261736 msgstr ""
14271737
1428 #: ../../../src/SDLInputState.cpp:760 ../../../src/SDLInputState.cpp:764
1429 #: ../../../src/SDLInputState.cpp:768
1738 #: ../../../src/SDLInputState.cpp:876 ../../../src/SDLInputState.cpp:878
1739 #, c-format
1740 msgid "Can not bind: %s"
1741 msgstr ""
1742
1743 #: ../../../src/SDLInputState.cpp:890 ../../../src/SDLInputState.cpp:894
1744 #: ../../../src/SDLInputState.cpp:898
14301745 #, c-format
14311746 msgid "'%s' is no longer bound to:"
14321747 msgstr ""
15851900 msgid "Base MP"
15861901 msgstr ""
15871902
1588 #: ../../../src/Utils.cpp:346
1903 #: ../../../src/Utils.cpp:365
15891904 msgid "k"
15901905 msgstr "κ"
15911906
1592 #: ../../../src/Utils.cpp:580
1907 #: ../../../src/Utils.cpp:635
15931908 #, c-format
15941909 msgid "%s second"
15951910 msgstr "%s δευτερόλεπτο"
15961911
1597 #: ../../../src/Utils.cpp:583
1912 #: ../../../src/Utils.cpp:638
15981913 #, c-format
15991914 msgid "%s seconds"
16001915 msgstr "%s δευτερόλεπτα"
55 # Translators:
66 # Justin Jacobs <jajdorkster@gmail.com>, 2018
77 # Eric R, 2018
8 # Diego J. Romero López <diegojromerolopez@gmail.com>, 2018
8 # Agustin Ferrario <agustin.ferrario@hotmail.com.ar>, 2020
9 # Diego J. Romero López <diegojromerolopez@gmail.com>, 2020
910 #
1011 #, fuzzy
1112 msgid ""
1213 msgstr ""
1314 "Project-Id-Version: PACKAGE VERSION\n"
1415 "Report-Msgid-Bugs-To: \n"
15 "POT-Creation-Date: 2018-11-17 21:50-0500\n"
16 "POT-Creation-Date: 2021-05-23 20:34-0400\n"
1617 "PO-Revision-Date: 2018-03-28 19:16+0000\n"
17 "Last-Translator: Diego J. Romero López <diegojromerolopez@gmail.com>, 2018\n"
18 "Last-Translator: Diego J. Romero López <diegojromerolopez@gmail.com>, 2020\n"
1819 "Language-Team: Spanish (https://www.transifex.com/flareorg/teams/84925/es/)\n"
1920 "MIME-Version: 1.0\n"
2021 "Content-Type: text/plain; charset=UTF-8\n"
2223 "Language: es\n"
2324 "Plural-Forms: nplurals=2; plural=(n != 1);\n"
2425
25 #: ../../../src/Avatar.cpp:367
26 #: ../../../src/Avatar.cpp:391
27 msgid "Your health is low!"
28 msgstr "Tu salud es baja"
29
30 #: ../../../src/Avatar.cpp:421
2631 #, c-format
2732 msgid "Congratulations, you have reached level %d!"
2833 msgstr "¡Felicidades, has alcanzado el nivel %d!"
2934
30 #: ../../../src/Avatar.cpp:369
31 msgid "You may increase one attribute through the Character Menu."
32 msgstr "Puedes aumentar un atributo a través del Menú de Personaje."
33
34 #: ../../../src/Avatar.cpp:583
35 msgid "You are defeated. Game over! ${INPUT_CONTINUE} to exit to Title."
36 msgstr ""
37 "Has sido derrotado y el juego ha terminado. Pulsa ${INPUT_CONTINUE} para "
38 "salir al título."
39
40 #: ../../../src/Avatar.cpp:589
41 msgid "You are defeated. ${INPUT_CONTINUE} to continue."
42 msgstr "Has sido derrotado. Pulsa ${INPUT_CONTINUE} para continuar."
43
44 #: ../../../src/Avatar.cpp:839
35 #: ../../../src/Avatar.cpp:423
36 msgid "You may increase one or more attributes through the Character Menu."
37 msgstr "Puedes avanzar uno o más atributos desde el Menú de Personaje"
38
39 #: ../../../src/Avatar.cpp:427
40 msgid "You may unlock one or more abilities through the Powers Menu."
41 msgstr "Puedes desbloquear una o más habilidades a través del Menú de Poderes"
42
43 #: ../../../src/Avatar.cpp:689
44 msgid "You are defeated."
45 msgstr ""
46
47 #: ../../../src/Avatar.cpp:935
4548 msgid "Transformation expired. You have been moved back to a safe place."
4649 msgstr "La transformación ha expirado. Se te ha movido a un lugar seguro."
4750
48 #: ../../../src/CampaignManager.cpp:153
51 #: ../../../src/CampaignManager.cpp:152
4952 #, c-format
5053 msgid "%d %s removed."
5154 msgstr "%d %s quitado."
5255
53 #: ../../../src/CampaignManager.cpp:162
56 #: ../../../src/CampaignManager.cpp:171
57 #, c-format
58 msgid "%s x%d removed."
59 msgstr "%s x%d quitado."
60
61 #: ../../../src/CampaignManager.cpp:173
5462 #, c-format
5563 msgid "%s removed."
5664 msgstr "%s quitado."
5765
58 #: ../../../src/CampaignManager.cpp:175
66 #: ../../../src/CampaignManager.cpp:187
67 #, c-format
68 msgid "You receive %d %s."
69 msgstr "Recibes %d %s."
70
71 #: ../../../src/CampaignManager.cpp:191
72 #, c-format
73 msgid "You receive %s x%d."
74 msgstr "Recibes %s x%d."
75
76 #: ../../../src/CampaignManager.cpp:193
5977 #, c-format
6078 msgid "You receive %s."
6179 msgstr "Recibes %s."
6280
63 #: ../../../src/CampaignManager.cpp:177
64 #, c-format
65 msgid "You receive %s x%d."
66 msgstr "Recibes %s x%d."
67
68 #: ../../../src/CampaignManager.cpp:186
69 #, c-format
70 msgid "You receive %d %s."
71 msgstr "Recibes %d %s."
72
73 #: ../../../src/CampaignManager.cpp:195
81 #: ../../../src/CampaignManager.cpp:210
7482 #, c-format
7583 msgid "You receive %d XP."
7684 msgstr "Recibes %d XP."
7785
78 #: ../../../src/CampaignManager.cpp:201
86 #: ../../../src/CampaignManager.cpp:216
7987 msgid "HP restored."
8088 msgstr "PV restaurados."
8189
82 #: ../../../src/CampaignManager.cpp:205
90 #: ../../../src/CampaignManager.cpp:220
8391 msgid "MP restored."
8492 msgstr "PM restaurados."
8593
86 #: ../../../src/CampaignManager.cpp:210
94 #: ../../../src/CampaignManager.cpp:225
8795 msgid "HP and MP restored."
8896 msgstr "PV y PM restaurados."
8997
90 #: ../../../src/CampaignManager.cpp:214
98 #: ../../../src/CampaignManager.cpp:229
9199 msgid "Negative effects removed."
92100 msgstr "Efectos negativos eliminados."
93101
94 #: ../../../src/CampaignManager.cpp:220
102 #: ../../../src/CampaignManager.cpp:235
95103 msgid "HP and MP restored, negative effects removed"
96104 msgstr "Restaurados PV y PM, efectos negativos eliminados"
97105
115123 "\n"
116124 "El renderizador predeterminado que suele ser más rápido que el renderizador SDL por software."
117125
118 #: ../../../src/EngineSettings.cpp:561
126 #: ../../../src/EngineSettings.cpp:586
119127 msgid "Adventurer"
120128 msgstr "Aventurero"
121129
122 #: ../../../src/Entity.cpp:511
130 #: ../../../src/Entity.cpp:527
123131 msgid "miss"
124132 msgstr "fallo"
125133
126 #: ../../../src/Entity.cpp:548 ../../../src/PowerManager.cpp:1152
127 #: ../../../src/StatBlock.cpp:805 ../../../src/StatBlock.cpp:811
134 #: ../../../src/Entity.cpp:565 ../../../src/PowerManager.cpp:1224
135 #: ../../../src/StatBlock.cpp:917 ../../../src/StatBlock.cpp:923
128136 #, c-format
129137 msgid "+%d HP"
130138 msgstr "+%d PV"
131139
132 #: ../../../src/Entity.cpp:555 ../../../src/StatBlock.cpp:816
133 #: ../../../src/StatBlock.cpp:822
140 #: ../../../src/Entity.cpp:572 ../../../src/StatBlock.cpp:928
141 #: ../../../src/StatBlock.cpp:934
134142 #, c-format
135143 msgid "+%d MP"
136144 msgstr "+%d PM"
137145
138 #: ../../../src/EventManager.cpp:738
146 #: ../../../src/EventManager.cpp:792
139147 msgid "Unknown destination"
140148 msgstr "Destino desconocido"
141149
142 #: ../../../src/GameStateConfigBase.cpp:89
143 #: ../../../src/GameStateConfigBase.cpp:110
150 #: ../../../src/GameState.cpp:37 ../../../src/GameState.cpp:58
151 msgid "Loading..."
152 msgstr "Cargando..."
153
154 #: ../../../src/GameStateLoad.cpp:90 ../../../src/GameStateLoad.cpp:103
155 msgid "Delete Save"
156 msgstr "Eliminar"
157
158 #: ../../../src/GameStateLoad.cpp:90
159 msgid "Delete this save?"
160 msgstr "¿Eliminar esta partida guardada?"
161
162 #: ../../../src/GameStateLoad.cpp:92
163 msgid "Exit to Title"
164 msgstr "Salir al Título"
165
166 #: ../../../src/GameStateLoad.cpp:95
167 msgid "New Game"
168 msgstr "Nuevo Juego"
169
170 #: ../../../src/GameStateLoad.cpp:99 ../../../src/GameStateLoad.cpp:607
171 msgid "Choose a Slot"
172 msgstr "Elija una ranura"
173
174 #: ../../../src/GameStateLoad.cpp:580 ../../../src/GameStateLoad.cpp:601
175 msgid "Enable a story mod to continue"
176 msgstr "Habilitar un mod de historia para continuar"
177
178 #: ../../../src/GameStateLoad.cpp:596
179 msgid "Load Game"
180 msgstr "Cargar Juego"
181
182 #: ../../../src/GameStateLoad.cpp:705
183 msgid "Entering game world..."
184 msgstr "Entrando en mundo del juego..."
185
186 #: ../../../src/GameStateLoad.cpp:708
187 msgid "Loading saved game..."
188 msgstr "Cargando partida guardada..."
189
190 #: ../../../src/GameStateLoad.cpp:741
191 msgid "Invalid save"
192 msgstr "Partida guardada inválida"
193
194 #: ../../../src/GameStateLoad.cpp:765 ../../../src/ItemManager.cpp:745
195 #: ../../../src/MenuPowers.cpp:860 ../../../src/MenuPowers.cpp:1219
196 #: ../../../src/MenuPowers.cpp:1631
197 #, c-format
198 msgid "Level %d"
199 msgstr "Nivel %d"
200
201 #: ../../../src/GameStateNew.cpp:66 ../../../src/InputState.cpp:416
202 #: ../../../src/MenuConfig.cpp:246
203 msgid "Cancel"
204 msgstr "Cancelar"
205
206 #: ../../../src/GameStateNew.cpp:69
207 msgid "Create"
208 msgstr "Crear"
209
210 #: ../../../src/GameStateNew.cpp:77
211 msgid "Randomize"
212 msgstr "Aleatorizar"
213
214 #: ../../../src/GameStateNew.cpp:93
215 msgid "Choose a Portrait"
216 msgstr "Elige un retrato"
217
218 #: ../../../src/GameStateNew.cpp:97
219 msgid "Choose a Name"
220 msgstr "Elige un nombre"
221
222 #: ../../../src/GameStateNew.cpp:101
223 msgid "Permadeath?"
224 msgstr "¿Muerte permanente?"
225
226 #: ../../../src/GameStateNew.cpp:105
227 msgid "Choose a Class"
228 msgstr "Elige una clase"
229
230 #: ../../../src/GameStateTitle.cpp:107
231 msgid "Play Game"
232 msgstr "Jugar"
233
234 #: ../../../src/GameStateTitle.cpp:110
235 msgid "Enable a core mod to continue"
236 msgstr "Habilitar un mod de núcleo para continuar"
237
238 #: ../../../src/GameStateTitle.cpp:114 ../../../src/MenuMiniMap.cpp:152
239 msgid "Configuration"
240 msgstr "Configuración"
241
242 #: ../../../src/GameStateTitle.cpp:117
243 msgid "Credits"
244 msgstr "Créditos"
245
246 #: ../../../src/GameStateTitle.cpp:120
247 msgid "Exit Game"
248 msgstr "Salir del juego"
249
250 #: ../../../src/InputState.cpp:417
251 msgid "Accept"
252 msgstr "Aceptar"
253
254 #: ../../../src/InputState.cpp:418 ../../../src/MenuMovementType.cpp:123
255 #: ../../../src/MenuMovementType.cpp:132 ../../../src/SDLInputState.cpp:668
256 #: ../../../src/SDLInputState.cpp:698
257 msgid "Up"
258 msgstr "Arriba"
259
260 #: ../../../src/InputState.cpp:419 ../../../src/MenuMovementType.cpp:125
261 #: ../../../src/MenuMovementType.cpp:134 ../../../src/SDLInputState.cpp:646
262 #: ../../../src/SDLInputState.cpp:676
263 msgid "Down"
264 msgstr "Abajo"
265
266 #: ../../../src/InputState.cpp:420 ../../../src/MenuMovementType.cpp:124
267 #: ../../../src/MenuMovementType.cpp:133 ../../../src/SDLInputState.cpp:653
268 #: ../../../src/SDLInputState.cpp:683
269 msgid "Left"
270 msgstr "Izquierda"
271
272 #: ../../../src/InputState.cpp:421 ../../../src/MenuMovementType.cpp:126
273 #: ../../../src/MenuMovementType.cpp:135 ../../../src/SDLInputState.cpp:663
274 #: ../../../src/SDLInputState.cpp:693
275 msgid "Right"
276 msgstr "Derecha"
277
278 #: ../../../src/InputState.cpp:422
279 msgid "Bar1"
280 msgstr "Bar1"
281
282 #: ../../../src/InputState.cpp:423
283 msgid "Bar2"
284 msgstr "Bar2"
285
286 #: ../../../src/InputState.cpp:424
287 msgid "Bar3"
288 msgstr "Bar3"
289
290 #: ../../../src/InputState.cpp:425
291 msgid "Bar4"
292 msgstr "Bar4"
293
294 #: ../../../src/InputState.cpp:426
295 msgid "Bar5"
296 msgstr "Bar5"
297
298 #: ../../../src/InputState.cpp:427
299 msgid "Bar6"
300 msgstr "Bar6"
301
302 #: ../../../src/InputState.cpp:428
303 msgid "Bar7"
304 msgstr "Bar7"
305
306 #: ../../../src/InputState.cpp:429
307 msgid "Bar8"
308 msgstr "Bar8"
309
310 #: ../../../src/InputState.cpp:430
311 msgid "Bar9"
312 msgstr "Bar9"
313
314 #: ../../../src/InputState.cpp:431
315 msgid "Bar0"
316 msgstr "Bar0"
317
318 #: ../../../src/InputState.cpp:432 ../../../src/MenuActionBar.cpp:84
319 #: ../../../src/MenuCharacter.cpp:54
320 msgid "Character"
321 msgstr "Personaje"
322
323 #: ../../../src/InputState.cpp:433 ../../../src/MenuActionBar.cpp:85
324 #: ../../../src/MenuInventory.cpp:130 ../../../src/MenuVendor.cpp:59
325 msgid "Inventory"
326 msgstr "Inventario"
327
328 #: ../../../src/InputState.cpp:434 ../../../src/MenuActionBar.cpp:86
329 #: ../../../src/MenuPowers.cpp:158
330 msgid "Powers"
331 msgstr "Poderes"
332
333 #: ../../../src/InputState.cpp:435 ../../../src/MenuActionBar.cpp:87
334 #: ../../../src/MenuLog.cpp:72
335 msgid "Log"
336 msgstr "Registro"
337
338 #: ../../../src/InputState.cpp:436
339 msgid "Main1"
340 msgstr "Principal1"
341
342 #: ../../../src/InputState.cpp:437
343 msgid "Main2"
344 msgstr "Principal2"
345
346 #: ../../../src/InputState.cpp:438
347 msgid "Ctrl"
348 msgstr "Ctrl"
349
350 #: ../../../src/InputState.cpp:439
351 msgid "Shift"
352 msgstr "Shift"
353
354 #: ../../../src/InputState.cpp:440
355 msgid "Alt"
356 msgstr "Alt"
357
358 #: ../../../src/InputState.cpp:441 ../../../src/SDLInputState.cpp:675
359 msgid "Delete"
360 msgstr "Suprimir"
361
362 #: ../../../src/InputState.cpp:442
363 msgid "ActionBar Accept"
364 msgstr "Aceptación de la barra de acción"
365
366 #: ../../../src/InputState.cpp:443
367 msgid "ActionBar Left"
368 msgstr "Barra de acción izquierda"
369
370 #: ../../../src/InputState.cpp:444
371 msgid "ActionBar Right"
372 msgstr "Barra de acción derecha"
373
374 #: ../../../src/InputState.cpp:445
375 msgid "ActionBar Use"
376 msgstr "Uso de la barra de acción"
377
378 #: ../../../src/InputState.cpp:446
379 msgid "Developer Menu"
380 msgstr "Menú de desarrolladores"
381
382 #: ../../../src/InputState.cpp:448
383 msgid "Left Mouse"
384 msgstr "Botón izquierdo del ratón"
385
386 #: ../../../src/InputState.cpp:449
387 msgid "Middle Mouse"
388 msgstr "Botón central del ratón"
389
390 #: ../../../src/InputState.cpp:450
391 msgid "Right Mouse"
392 msgstr "Botón derecho del ratón"
393
394 #: ../../../src/InputState.cpp:451
395 msgid "Wheel Up"
396 msgstr "Rueda hacia arriba"
397
398 #: ../../../src/InputState.cpp:452
399 msgid "Wheel Down"
400 msgstr "Rueda hacia abajo"
401
402 #: ../../../src/InputState.cpp:453
403 msgid "Mouse X1"
404 msgstr "Ratón X1"
405
406 #: ../../../src/InputState.cpp:454
407 msgid "Mouse X2"
408 msgstr "Ratón X2"
409
410 #: ../../../src/ItemManager.cpp:475
411 msgid "Unknown Item"
412 msgstr "Objeto desconocido"
413
414 #: ../../../src/ItemManager.cpp:646 ../../../src/MenuPowers.cpp:959
415 #, c-format
416 msgid "%d%% Speed"
417 msgstr "%d%% velocidad"
418
419 #: ../../../src/ItemManager.cpp:650 ../../../src/MenuPowers.cpp:962
420 #, c-format
421 msgid "%d%% Attack Speed"
422 msgstr "%d%% velocidad de ataque"
423
424 #: ../../../src/ItemManager.cpp:672 ../../../src/MenuCharacter.cpp:352
425 #: ../../../src/MenuPowers.cpp:931
426 #, c-format
427 msgid "Resistance (%s)"
428 msgstr "Resistencia (%s)"
429
430 #: ../../../src/ItemManager.cpp:682
431 #, c-format
432 msgid "Requires %s"
433 msgstr "Requiere %s"
434
435 #: ../../../src/ItemManager.cpp:731
436 msgid "Quest Item"
437 msgstr "Objeto de gesta"
438
439 #: ../../../src/ItemManager.cpp:758
440 #, c-format
441 msgid "Quality: %s"
442 msgstr "Calidad: %s"
443
444 #: ../../../src/ItemManager.cpp:783
445 #, c-format
446 msgid "Absorb: %d-%d"
447 msgstr "Absorber: %d-%d"
448
449 #: ../../../src/ItemManager.cpp:785
450 #, c-format
451 msgid "Absorb: %d"
452 msgstr "Absorber: %d"
453
454 #: ../../../src/ItemManager.cpp:825 ../../../src/MenuPowers.cpp:1206
455 #: ../../../src/MenuPowers.cpp:1209
456 #, c-format
457 msgid "Requires Level %d"
458 msgstr "Requiere nivel %d"
459
460 #: ../../../src/ItemManager.cpp:836 ../../../src/MenuPowers.cpp:1198
461 #: ../../../src/MenuPowers.cpp:1200
462 #, c-format
463 msgid "Requires %s %d"
464 msgstr "Requiere %s %d"
465
466 #: ../../../src/ItemManager.cpp:847
467 #, c-format
468 msgid "Requires Class: %s"
469 msgstr "Requiere clase: %s"
470
471 #: ../../../src/ItemManager.cpp:863 ../../../src/ItemManager.cpp:875
472 #, c-format
473 msgid "Buy Price: %d %s"
474 msgstr "Precio de compra: %d %s"
475
476 #: ../../../src/ItemManager.cpp:865 ../../../src/ItemManager.cpp:877
477 #, c-format
478 msgid "Buy Price: %d %s each"
479 msgstr "Precio de compra: %d %s cada"
480
481 #: ../../../src/ItemManager.cpp:885
482 #, c-format
483 msgid "Sell Price: %d %s"
484 msgstr "Precio de venta: %d %s"
485
486 #: ../../../src/ItemManager.cpp:887
487 #, c-format
488 msgid "Sell Price: %d %s each"
489 msgstr "Precio de venta: %d %s cada"
490
491 #: ../../../src/ItemManager.cpp:896
492 msgid "Set:"
493 msgstr "Conjunto:"
494
495 #: ../../../src/ItemManager.cpp:903
496 #, c-format
497 msgid "%d items:"
498 msgstr "%d objetos:"
499
500 #: ../../../src/ItemManager.cpp:915
501 #, c-format
502 msgid "Press [%s] to read"
503 msgstr "Pulsa [%s] para leer"
504
505 #: ../../../src/ItemManager.cpp:918
506 #, c-format
507 msgid "Press [%s] to use"
508 msgstr "Pulsa [%s] para usar"
509
510 #: ../../../src/MenuActionBar.cpp:239 ../../../src/MenuActionBar.cpp:246
511 #: ../../../src/MenuActionBar.cpp:249 ../../../src/MenuActionBar.cpp:255
512 #, c-format
513 msgid "Hotkey: %s"
514 msgstr "Atajo: %s"
515
516 #: ../../../src/MenuActionBar.cpp:621
517 msgid "Not enough MP."
518 msgstr "PM insuficientes."
519
520 #: ../../../src/MenuActiveEffects.cpp:124
521 #, c-format
522 msgid "x%d"
523 msgstr "x%d"
524
525 #: ../../../src/MenuActiveEffects.cpp:219
526 msgid "Remaining:"
527 msgstr "Restantes:"
528
529 #: ../../../src/MenuActiveEffects.cpp:225
530 #, c-format
531 msgid "x%d stacks"
532 msgstr "x%d pilas"
533
534 #: ../../../src/MenuCharacter.cpp:73 ../../../src/MenuCharacter.cpp:78
535 msgid "Name"
536 msgstr "Nombre"
537
538 #: ../../../src/MenuCharacter.cpp:74 ../../../src/MenuCharacter.cpp:79
539 msgid "Level"
540 msgstr "Nivel"
541
542 #: ../../../src/MenuCharacter.cpp:309
543 #, c-format
544 msgid "Available stat points: %d"
545 msgstr ""
546
547 #: ../../../src/MenuCharacter.cpp:353
548 #, c-format
549 msgid "Reduces the damage taken from \"%s\" elemental attacks."
550 msgstr "Reduce el daño recibido de ataques elementales de \"%s\"."
551
552 #: ../../../src/MenuCharacter.cpp:363 ../../../src/MenuManager.cpp:301
553 #, c-format
554 msgid "XP: %d"
555 msgstr "Experiencia: %d"
556
557 #: ../../../src/MenuCharacter.cpp:365
558 #, c-format
559 msgid "Next: %d"
560 msgstr "Siguiente: %d"
561
562 #: ../../../src/MenuCharacter.cpp:371
563 #, c-format
564 msgid "base (%d), bonus (%d)"
565 msgstr "base (%d), bonus (%d)"
566
567 #: ../../../src/MenuCharacter.cpp:379 ../../../src/MenuCharacter.cpp:393
568 msgid "Related stats:"
569 msgstr "Atributos relacionadas:"
570
571 #: ../../../src/MenuCharacter.cpp:419 ../../../src/MenuCharacter.cpp:443
572 #, c-format
573 msgid "Each level grants %d."
574 msgstr "Cada nivel otorga %d."
575
576 #: ../../../src/MenuCharacter.cpp:423 ../../../src/MenuCharacter.cpp:447
577 #, c-format
578 msgid "Each point of %s grants %d."
579 msgstr "Cada punto de %s otorga %d."
580
581 #: ../../../src/MenuConfig.cpp:122 ../../../src/MenuConfig.cpp:1171
582 msgid "Clear"
583 msgstr "Limpiar"
584
585 #: ../../../src/MenuConfig.cpp:122 ../../../src/MenuConfig.cpp:1169
586 msgid "Assign:"
587 msgstr "Asignar:"
588
589 #: ../../../src/MenuConfig.cpp:123 ../../../src/MenuConfig.cpp:245
144590 msgid "Defaults"
145591 msgstr "Por defecto"
146592
147 #: ../../../src/GameStateConfigBase.cpp:89
593 #: ../../../src/MenuConfig.cpp:123
148594 msgid "Reset ALL settings?"
149595 msgstr "¿Restablecer TODOS los ajustes?"
150596
151 #: ../../../src/GameStateConfigBase.cpp:109 ../../../src/MenuNumPicker.cpp:49
597 #: ../../../src/MenuConfig.cpp:244 ../../../src/MenuNumPicker.cpp:49
152598 msgid "OK"
153599 msgstr "Aceptar"
154600
155 #: ../../../src/GameStateConfigBase.cpp:111 ../../../src/GameStateNew.cpp:65
156 #: ../../../src/InputState.cpp:401
157 msgid "Cancel"
158 msgstr "Cancelar"
159
160 #: ../../../src/GameStateConfigBase.cpp:160
161 #: ../../../src/GameStateConfigDesktop.cpp:130
601 #: ../../../src/MenuConfig.cpp:248 ../../../src/MenuGameOver.cpp:72
602 msgid "Continue"
603 msgstr "Continuar"
604
605 #: ../../../src/MenuConfig.cpp:250
606 msgid "Save Game"
607 msgstr "Guardar la partida"
608
609 #: ../../../src/MenuConfig.cpp:293
610 msgid "Default"
611 msgstr "Opción por defecto"
612
613 #: ../../../src/MenuConfig.cpp:293
614 msgid ""
615 "Show all loot tooltips, except for those that would be obscured by the "
616 "player or an enemy. Temporarily show all loot tooltips with 'Alt'."
617 msgstr ""
618 "Mostrar los consejos referidos al botín, exceptuando aquellos ocultos por el"
619 " jugador o un enemigo. Para mostrar todos los consejos pulsa \"Alt\"."
620
621 #: ../../../src/MenuConfig.cpp:294
622 msgid "Show all"
623 msgstr "Mostrar todos"
624
625 #: ../../../src/MenuConfig.cpp:294
626 msgid ""
627 "Always show loot tooltips. Temporarily hide all loot tooltips with 'Alt'."
628 msgstr ""
629 "Siempre mostrar las ayudas del botín. Ocultar temporalmente todas las ayudas"
630 " del botín con \"Alt\"."
631
632 #: ../../../src/MenuConfig.cpp:295 ../../../src/MenuConfig.cpp:300
633 msgid "Hidden"
634 msgstr "Oculto"
635
636 #: ../../../src/MenuConfig.cpp:295
637 msgid ""
638 "Always hide loot tooltips, except for when a piece of loot is hovered with "
639 "the mouse cursor. Temporarily show all loot tooltips with 'Alt'."
640 msgstr ""
641 "Ocultar siempre los consejos referidos al botín, exceptuando cuando uno de "
642 "los objetos tenga el cursor del ratón encima. Para mostrar todos los "
643 "consejos pulsa \"Alt\"."
644
645 #: ../../../src/MenuConfig.cpp:298
646 msgid "Visible"
647 msgstr "Visible"
648
649 #: ../../../src/MenuConfig.cpp:299
650 msgid "Visible (2x zoom)"
651 msgstr "Visible (aumento: 2x)"
652
653 #: ../../../src/MenuConfig.cpp:303
654 msgid ""
655 "Controls the type of warning to be activated when the player is below the "
656 "low health threshold."
657 msgstr ""
658 "Controla el tipo de aviso que se activará cuando la salud del jugador esté "
659 "por debajo del umbral de bajo nivel de salud."
660
661 #: ../../../src/MenuConfig.cpp:304
662 msgid "- Display a message"
663 msgstr "- Muestra un mensaje"
664
665 #: ../../../src/MenuConfig.cpp:305
666 msgid "- Play a sound"
667 msgstr "- Reproduce un sonido"
668
669 #: ../../../src/MenuConfig.cpp:306
670 msgid "- Change the cursor"
671 msgstr "- Cambia el cursor"
672
673 #: ../../../src/MenuConfig.cpp:308
674 msgid "Disabled"
675 msgstr "Deshabilitado"
676
677 #: ../../../src/MenuConfig.cpp:309
678 msgid "All"
679 msgstr "Todos"
680
681 #: ../../../src/MenuConfig.cpp:310
682 msgid "Message & Cursor"
683 msgstr "Mensaje y cursor"
684
685 #: ../../../src/MenuConfig.cpp:311
686 msgid "Message & Sound"
687 msgstr "Mensaje y sonido"
688
689 #: ../../../src/MenuConfig.cpp:312
690 msgid "Sound & Cursor"
691 msgstr "Sonido y cursor"
692
693 #: ../../../src/MenuConfig.cpp:313
694 msgid "Message"
695 msgstr "Mensaje"
696
697 #: ../../../src/MenuConfig.cpp:314
698 msgid "Cursor"
699 msgstr "Cursor"
700
701 #: ../../../src/MenuConfig.cpp:315
702 msgid "Sound"
703 msgstr "Sonido"
704
705 #: ../../../src/MenuConfig.cpp:321
706 msgid ""
707 "When the player's health drops below the given threshold, the low health "
708 "notifications are triggered if one or more of them is enabled."
709 msgstr ""
710 "Cuando la salud del jugador esté por debajo de un umbral determinado, las "
711 "notificaciones de baja saludo se activarán si al menos una de de ellas están"
712 " activadas."
713
714 #: ../../../src/MenuConfig.cpp:334 ../../../src/MenuConfig.cpp:1587
715 #: ../../../src/MenuGameOver.cpp:116
716 msgid "Exit"
717 msgstr "Salir"
718
719 #: ../../../src/MenuConfig.cpp:335
720 msgid "Video"
721 msgstr "Vídeo"
722
723 #: ../../../src/MenuConfig.cpp:336
162724 msgid "Audio"
163725 msgstr "Audio"
164726
165 #: ../../../src/GameStateConfigBase.cpp:161
166 #: ../../../src/GameStateConfigDesktop.cpp:131
727 #: ../../../src/MenuConfig.cpp:337
167728 msgid "Interface"
168729 msgstr "Interfaz"
169730
170 #: ../../../src/GameStateConfigBase.cpp:162
171 #: ../../../src/GameStateConfigDesktop.cpp:134
731 #: ../../../src/MenuConfig.cpp:338
732 msgid "Input"
733 msgstr "Entrada"
734
735 #: ../../../src/MenuConfig.cpp:339
736 msgid "Keybindings"
737 msgstr "Teclas"
738
739 #: ../../../src/MenuConfig.cpp:340
172740 msgid "Mods"
173741 msgstr "Mods"
174742
175 #: ../../../src/GameStateConfigBase.cpp:249 ../../../src/MenuExit.cpp:72
743 #: ../../../src/MenuConfig.cpp:352
744 msgid "Paused"
745 msgstr "Pausado"
746
747 #: ../../../src/MenuConfig.cpp:355
748 msgid "Time Played"
749 msgstr "Tiempo de juego"
750
751 #: ../../../src/MenuConfig.cpp:361
752 msgid "Renderer"
753 msgstr "Renderizador"
754
755 #: ../../../src/MenuConfig.cpp:362
756 msgid "Full Screen Mode"
757 msgstr "Modo de pantalla completa"
758
759 #: ../../../src/MenuConfig.cpp:363
760 msgid "Hardware surfaces"
761 msgstr "Superficies de hardware"
762
763 #: ../../../src/MenuConfig.cpp:364
764 msgid "V-Sync"
765 msgstr "V-Sync"
766
767 #: ../../../src/MenuConfig.cpp:365
768 msgid "Texture Filtering"
769 msgstr "Filtro de textura"
770
771 #: ../../../src/MenuConfig.cpp:366
772 msgid "DPI scaling"
773 msgstr "Escalado por PPP"
774
775 #: ../../../src/MenuConfig.cpp:367
776 msgid "Parallax Layers"
777 msgstr "Capas de paralaje"
778
779 #: ../../../src/MenuConfig.cpp:368
780 msgid "Allow changing gamma"
781 msgstr "Permitir cambiar gama"
782
783 #: ../../../src/MenuConfig.cpp:369
784 msgid "Gamma"
785 msgstr "Gama"
786
787 #: ../../../src/MenuConfig.cpp:371
788 msgid "Sound Volume"
789 msgstr "Volumen de sonido"
790
791 #: ../../../src/MenuConfig.cpp:372
176792 msgid "Music Volume"
177793 msgstr "Volumen de música"
178794
179 #: ../../../src/GameStateConfigBase.cpp:253 ../../../src/MenuExit.cpp:77
180 msgid "Sound Volume"
181 msgstr "Volumen de sonido"
182
183 #: ../../../src/GameStateConfigBase.cpp:257
795 #: ../../../src/MenuConfig.cpp:374
184796 msgid "Language"
185797 msgstr "Idioma"
186798
187 #: ../../../src/GameStateConfigBase.cpp:266
799 #: ../../../src/MenuConfig.cpp:375
188800 msgid "Show FPS"
189801 msgstr "Mostrar FPS"
190802
191 #: ../../../src/GameStateConfigBase.cpp:270
803 #: ../../../src/MenuConfig.cpp:376
804 msgid "Hardware mouse cursor"
805 msgstr "Cursor del ratón por hardware"
806
807 #: ../../../src/MenuConfig.cpp:377
192808 msgid "Colorblind Mode"
193809 msgstr "Modo para daltónicos"
194810
195 #: ../../../src/GameStateConfigBase.cpp:274
196 msgid "Hardware mouse cursor"
197 msgstr "Cursor del ratón por hardware"
198
199 #: ../../../src/GameStateConfigBase.cpp:278
811 #: ../../../src/MenuConfig.cpp:378
200812 msgid "Developer Mode"
201813 msgstr "Modo desarrollador"
202814
203 #: ../../../src/GameStateConfigBase.cpp:282
815 #: ../../../src/MenuConfig.cpp:379
204816 msgid "Subtitles"
205817 msgstr "Subtítulos"
206818
207 #: ../../../src/GameStateConfigBase.cpp:286
208 msgid "Active Mods"
209 msgstr "Mods Activos"
210
211 #: ../../../src/GameStateConfigBase.cpp:295
212 msgid "Available Mods"
213 msgstr "Mods Disponibles"
214
215 #: ../../../src/GameStateConfigBase.cpp:314
216 msgid "<< Disable"
217 msgstr "<< Inhabilitar"
218
219 #: ../../../src/GameStateConfigBase.cpp:320
220 msgid "Enable >>"
221 msgstr "Habilitar >>"
222
223 #: ../../../src/GameStateConfigBase.cpp:873
224 msgid "Version:"
225 msgstr "Versión:"
226
227 #: ../../../src/GameStateConfigBase.cpp:878
228 msgid "Game:"
229 msgstr "Juego:"
230
231 #: ../../../src/GameStateConfigBase.cpp:883
232 msgid "Engine version:"
233 msgstr "Versión del motor de juego:"
234
235 #: ../../../src/GameStateConfigBase.cpp:891
236 msgid "Requires mods:"
237 msgstr "Mods requeridos:"
238
239 #: ../../../src/GameStateConfigDesktop.cpp:83
240 #: ../../../src/GameStateConfigDesktop.cpp:751
241 msgid "Clear"
242 msgstr "Limpiar"
243
244 #: ../../../src/GameStateConfigDesktop.cpp:83
245 #: ../../../src/GameStateConfigDesktop.cpp:749
246 msgid "Assign:"
247 msgstr "Asignar:"
248
249 #: ../../../src/GameStateConfigDesktop.cpp:128
250 msgid "Video"
251 msgstr "Vídeo"
252
253 #: ../../../src/GameStateConfigDesktop.cpp:132
254 msgid "Input"
255 msgstr "Entrada"
256
257 #: ../../../src/GameStateConfigDesktop.cpp:133
258 msgid "Keybindings"
259 msgstr "Teclas"
260
261 #: ../../../src/GameStateConfigDesktop.cpp:188
819 #: ../../../src/MenuConfig.cpp:380
820 msgid "Loot tooltip visibility"
821 msgstr "Ayuda a la visibilidad del botín"
822
823 #: ../../../src/MenuConfig.cpp:381
824 msgid "Mini-map mode"
825 msgstr "Modo minimapa"
826
827 #: ../../../src/MenuConfig.cpp:382
828 msgid "Always show stat bar labels"
829 msgstr "Mostrar etiquetas en las barra de atributos"
830
831 #: ../../../src/MenuConfig.cpp:383
832 msgid "Allow stat bar auto-hiding"
833 msgstr "Permitir ocultar automáticamente la barra de estado"
834
835 #: ../../../src/MenuConfig.cpp:384
836 msgid "Show combat text"
837 msgstr "Mostrar texto de combate"
838
839 #: ../../../src/MenuConfig.cpp:385
840 msgid "Automatically equip items"
841 msgstr "Automáticamente equipar con objetos"
842
843 #: ../../../src/MenuConfig.cpp:386
844 msgid "Show hidden entity markers"
845 msgstr "Mostrar marcadores de entidad ocultos"
846
847 #: ../../../src/MenuConfig.cpp:387
848 msgid "Low health notification"
849 msgstr "Notificación de salud baja"
850
851 #: ../../../src/MenuConfig.cpp:388
852 msgid "Low health threshold"
853 msgstr "Notificación de salud baja"
854
855 #: ../../../src/MenuConfig.cpp:389
856 msgid "Show item comparison tooltips"
857 msgstr ""
858
859 #: ../../../src/MenuConfig.cpp:392 ../../../src/MenuMovementType.cpp:94
860 #: ../../../src/MenuMovementType.cpp:131
861 msgid "Joystick"
862 msgstr "Joystick"
863
864 #: ../../../src/MenuConfig.cpp:393
865 msgid "Move hero using mouse"
866 msgstr "Mover héroe a través del ratón"
867
868 #: ../../../src/MenuConfig.cpp:394
869 msgid "Mouse aim"
870 msgstr "Ratón para apuntar"
871
872 #: ../../../src/MenuConfig.cpp:395
873 msgid "Do not use mouse"
874 msgstr "No usar ratón"
875
876 #: ../../../src/MenuConfig.cpp:396
877 msgid "Swap mouse movement button"
878 msgstr "Intercambiar botón de movimiento de ratón"
879
880 #: ../../../src/MenuConfig.cpp:397
881 msgid "Attack with mouse movement"
882 msgstr "Atacar con movimiento de ratón"
883
884 #: ../../../src/MenuConfig.cpp:398
885 msgid "Joystick Deadzone"
886 msgstr "Zona sin joystick"
887
888 #: ../../../src/MenuConfig.cpp:408
889 #, c-format
890 msgid "Primary binding: %s"
891 msgstr "Vinculación primaria: %s"
892
893 #: ../../../src/MenuConfig.cpp:409
894 #, c-format
895 msgid "Alternate binding: %s"
896 msgstr "Vinculación alternativa: %s"
897
898 #: ../../../src/MenuConfig.cpp:410
899 #, c-format
900 msgid "Joystick binding: %s"
901 msgstr "Vinculación con Joystick: %s"
902
903 #: ../../../src/MenuConfig.cpp:511
262904 msgid ""
263905 "Will try to store surfaces in video memory versus system memory. The effect "
264906 "this has on performance depends on the renderer."
266908 "Intentará almacenar las superficies en la memoria de vídeo en vez de en la "
267909 "memoria del sistema. Esto afectará de forma distinta según el renderizador."
268910
269 #: ../../../src/GameStateConfigDesktop.cpp:189
911 #: ../../../src/MenuConfig.cpp:512
270912 msgid ""
271913 "Prevents screen tearing. Disable if you experience \"stuttering\" in "
272914 "windowed mode or input lag."
274916 "Evita que la pantalla se muestre rota. Se puede desactivar si se detectan "
275917 "\"parpadeos\" de imagen en el modo ventana o retraso en las entradas"
276918
277 #: ../../../src/GameStateConfigDesktop.cpp:190
919 #: ../../../src/MenuConfig.cpp:513
278920 msgid ""
279921 "When enabled, this uses the screen DPI in addition to the window dimensions "
280922 "to scale the rendering resolution. Otherwise, only the window dimensions are"
284926 "dimensiones de la ventana para escalar la resolución. De lo contrario, sólo "
285927 "se usarán las dimensiones de la ventana."
286928
287 #: ../../../src/GameStateConfigDesktop.cpp:191
929 #: ../../../src/MenuConfig.cpp:514
288930 msgid ""
289931 "This enables parallax (non-tile) layers. Disabling this setting can improve "
290932 "performance in some cases."
292934 "Activa las capas de paralaje (sin teselas). Desactivar esta opción puede "
293935 "mejorar el rendimiento en algunos casos."
294936
295 #: ../../../src/GameStateConfigDesktop.cpp:192
296 msgid "Experimental"
297 msgstr "Experimental"
298
299 #: ../../../src/GameStateConfigDesktop.cpp:193
300 msgid "For handheld devices"
301 msgstr "Para dispositivos móviles"
302
303 #: ../../../src/GameStateConfigDesktop.cpp:211
304 msgid "Renderer"
305 msgstr "Renderizador"
306
307 #: ../../../src/GameStateConfigDesktop.cpp:227
308 msgid "Full Screen Mode"
309 msgstr "Modo de pantalla completa"
310
311 #: ../../../src/GameStateConfigDesktop.cpp:231
312 msgid "Move hero using mouse"
313 msgstr "Mover héroe a través del ratón"
314
315 #: ../../../src/GameStateConfigDesktop.cpp:235
316 msgid "Hardware surfaces"
317 msgstr "Superficies de hardware"
318
319 #: ../../../src/GameStateConfigDesktop.cpp:239
320 msgid "V-Sync"
321 msgstr "V-Sync"
322
323 #: ../../../src/GameStateConfigDesktop.cpp:243
324 msgid "Texture Filtering"
325 msgstr "Filtro de textura"
326
327 #: ../../../src/GameStateConfigDesktop.cpp:247
328 msgid "DPI scaling"
329 msgstr "Escalado por PPP"
330
331 #: ../../../src/GameStateConfigDesktop.cpp:251
332 msgid "Parallax Layers"
333 msgstr "Capas de paralaje"
334
335 #: ../../../src/GameStateConfigDesktop.cpp:255
336 msgid "Allow changing gamma"
337 msgstr "Permitir cambiar gama"
338
339 #: ../../../src/GameStateConfigDesktop.cpp:259
340 msgid "Gamma"
341 msgstr "Gama"
342
343 #: ../../../src/GameStateConfigDesktop.cpp:263
344 msgid "Use joystick"
345 msgstr "Usar joystick"
346
347 #: ../../../src/GameStateConfigDesktop.cpp:267
348 msgid "Joystick"
349 msgstr "Joystick"
350
351 #: ../../../src/GameStateConfigDesktop.cpp:283
352 msgid "Mouse aim"
353 msgstr "Ratón para apuntar"
354
355 #: ../../../src/GameStateConfigDesktop.cpp:287
356 msgid "Do not use mouse"
357 msgstr "No usar ratón"
358
359 #: ../../../src/GameStateConfigDesktop.cpp:291
360 msgid "Joystick Deadzone"
361 msgstr "Zona sin joystick"
362
363 #: ../../../src/GameState.cpp:37 ../../../src/GameState.cpp:58
364 msgid "Loading..."
365 msgstr "Cargando..."
366
367 #: ../../../src/GameStateLoad.cpp:88 ../../../src/GameStateLoad.cpp:101
368 msgid "Delete Save"
369 msgstr "Eliminar"
370
371 #: ../../../src/GameStateLoad.cpp:88
372 msgid "Delete this save?"
373 msgstr "¿Eliminar esta partida guardada?"
374
375 #: ../../../src/GameStateLoad.cpp:90
376 msgid "Exit to Title"
377 msgstr "Salir al Título"
378
379 #: ../../../src/GameStateLoad.cpp:93
380 msgid "New Game"
381 msgstr "Nuevo Juego"
382
383 #: ../../../src/GameStateLoad.cpp:97 ../../../src/GameStateLoad.cpp:600
384 msgid "Choose a Slot"
385 msgstr "Elija una ranura"
386
387 #: ../../../src/GameStateLoad.cpp:573 ../../../src/GameStateLoad.cpp:594
388 msgid "Enable a story mod to continue"
389 msgstr "Habilitar un mod de historia para continuar"
390
391 #: ../../../src/GameStateLoad.cpp:589
392 msgid "Load Game"
393 msgstr "Cargar Juego"
394
395 #: ../../../src/GameStateLoad.cpp:695
396 msgid "Entering game world..."
397 msgstr "Entrando en mundo del juego..."
398
399 #: ../../../src/GameStateLoad.cpp:698
400 msgid "Loading saved game..."
401 msgstr "Cargando partida guardada..."
402
403 #: ../../../src/GameStateLoad.cpp:731
404 msgid "Invalid save"
405 msgstr "Partida guardada inválida"
406
407 #: ../../../src/GameStateLoad.cpp:755 ../../../src/ItemManager.cpp:747
408 #: ../../../src/MenuPowers.cpp:778 ../../../src/MenuPowers.cpp:1144
409 #: ../../../src/MenuPowers.cpp:1542
410 #, c-format
411 msgid "Level %d"
412 msgstr "Nivel %d"
413
414 #: ../../../src/GameStateNew.cpp:68
415 msgid "Create"
416 msgstr "Crear"
417
418 #: ../../../src/GameStateNew.cpp:76
419 msgid "Randomize"
420 msgstr "Aleatorizar"
421
422 #: ../../../src/GameStateNew.cpp:92
423 msgid "Choose a Portrait"
424 msgstr "Elige un retrato"
425
426 #: ../../../src/GameStateNew.cpp:96
427 msgid "Choose a Name"
428 msgstr "Elige un nombre"
429
430 #: ../../../src/GameStateNew.cpp:100
431 msgid "Permadeath?"
432 msgstr "¿Muerte permanente?"
433
434 #: ../../../src/GameStateNew.cpp:104
435 msgid "Choose a Class"
436 msgstr "Elige una clase"
437
438 #: ../../../src/GameStateTitle.cpp:108
439 msgid "Play Game"
440 msgstr "Jugar"
441
442 #: ../../../src/GameStateTitle.cpp:111
443 msgid "Enable a core mod to continue"
444 msgstr "Habilitar un mod de núcleo para continuar"
445
446 #: ../../../src/GameStateTitle.cpp:115
447 msgid "Configuration"
448 msgstr "Configuración"
449
450 #: ../../../src/GameStateTitle.cpp:118
451 msgid "Credits"
452 msgstr "Créditos"
453
454 #: ../../../src/GameStateTitle.cpp:121
455 msgid "Exit Game"
456 msgstr "Salir del juego"
457
458 #: ../../../src/InputState.cpp:402
459 msgid "Accept"
460 msgstr "Aceptar"
461
462 #: ../../../src/InputState.cpp:403 ../../../src/SDLInputState.cpp:607
463 msgid "Up"
464 msgstr "Arriba"
465
466 #: ../../../src/InputState.cpp:404 ../../../src/SDLInputState.cpp:585
467 msgid "Down"
468 msgstr "Abajo"
469
470 #: ../../../src/InputState.cpp:405 ../../../src/SDLInputState.cpp:592
471 msgid "Left"
472 msgstr "Izquierda"
473
474 #: ../../../src/InputState.cpp:406 ../../../src/SDLInputState.cpp:602
475 msgid "Right"
476 msgstr "Derecha"
477
478 #: ../../../src/InputState.cpp:407
479 msgid "Bar1"
480 msgstr "Bar1"
481
482 #: ../../../src/InputState.cpp:408
483 msgid "Bar2"
484 msgstr "Bar2"
485
486 #: ../../../src/InputState.cpp:409
487 msgid "Bar3"
488 msgstr "Bar3"
489
490 #: ../../../src/InputState.cpp:410
491 msgid "Bar4"
492 msgstr "Bar4"
493
494 #: ../../../src/InputState.cpp:411
495 msgid "Bar5"
496 msgstr "Bar5"
497
498 #: ../../../src/InputState.cpp:412
499 msgid "Bar6"
500 msgstr "Bar6"
501
502 #: ../../../src/InputState.cpp:413
503 msgid "Bar7"
504 msgstr "Bar7"
505
506 #: ../../../src/InputState.cpp:414
507 msgid "Bar8"
508 msgstr "Bar8"
509
510 #: ../../../src/InputState.cpp:415
511 msgid "Bar9"
512 msgstr "Bar9"
513
514 #: ../../../src/InputState.cpp:416
515 msgid "Bar0"
516 msgstr "Bar0"
517
518 #: ../../../src/InputState.cpp:417 ../../../src/MenuActionBar.cpp:83
519 #: ../../../src/MenuCharacter.cpp:54
520 msgid "Character"
521 msgstr "Personaje"
522
523 #: ../../../src/InputState.cpp:418 ../../../src/MenuActionBar.cpp:84
524 #: ../../../src/MenuInventory.cpp:137 ../../../src/MenuVendor.cpp:57
525 msgid "Inventory"
526 msgstr "Inventario"
527
528 #: ../../../src/InputState.cpp:419 ../../../src/MenuActionBar.cpp:85
529 #: ../../../src/MenuPowers.cpp:168
530 msgid "Powers"
531 msgstr "Poderes"
532
533 #: ../../../src/InputState.cpp:420 ../../../src/MenuActionBar.cpp:86
534 #: ../../../src/MenuLog.cpp:72
535 msgid "Log"
536 msgstr "Registro"
537
538 #: ../../../src/InputState.cpp:421
539 msgid "Main1"
540 msgstr "Principal1"
541
542 #: ../../../src/InputState.cpp:422
543 msgid "Main2"
544 msgstr "Principal2"
545
546 #: ../../../src/InputState.cpp:423
547 msgid "Ctrl"
548 msgstr "Ctrl"
549
550 #: ../../../src/InputState.cpp:424
551 msgid "Shift"
552 msgstr "Shift"
553
554 #: ../../../src/InputState.cpp:425
555 msgid "Alt"
556 msgstr "Alt"
557
558 #: ../../../src/InputState.cpp:426 ../../../src/SDLInputState.cpp:584
559 msgid "Delete"
560 msgstr "Suprimir"
561
562 #: ../../../src/InputState.cpp:427
563 msgid "ActionBar Accept"
564 msgstr "Aceptación de la barra de acción"
565
566 #: ../../../src/InputState.cpp:428
567 msgid "ActionBar Left"
568 msgstr "Barra de acción izquierda"
569
570 #: ../../../src/InputState.cpp:429
571 msgid "ActionBar Right"
572 msgstr "Barra de acción derecha"
573
574 #: ../../../src/InputState.cpp:430
575 msgid "ActionBar Use"
576 msgstr "Uso de la barra de acción"
577
578 #: ../../../src/InputState.cpp:431
579 msgid "Developer Menu"
580 msgstr "Menú de desarrolladores"
581
582 #: ../../../src/InputState.cpp:433
583 msgid "Left Mouse"
584 msgstr "Botón izquierdo del ratón"
585
586 #: ../../../src/InputState.cpp:434
587 msgid "Middle Mouse"
588 msgstr "Botón central del ratón"
589
590 #: ../../../src/InputState.cpp:435
591 msgid "Right Mouse"
592 msgstr "Botón derecho del ratón"
593
594 #: ../../../src/InputState.cpp:436
595 msgid "Wheel Up"
596 msgstr "Rueda hacia arriba"
597
598 #: ../../../src/InputState.cpp:437
599 msgid "Wheel Down"
600 msgstr "Rueda hacia abajo"
601
602 #: ../../../src/InputState.cpp:438
603 msgid "Mouse X1"
604 msgstr "Ratón X1"
605
606 #: ../../../src/InputState.cpp:439
607 msgid "Mouse X2"
608 msgstr "Ratón X2"
609
610 #: ../../../src/ItemManager.cpp:450 ../../../src/ItemManager.cpp:453
611 msgid "Unknown Item"
612 msgstr "Objeto desconocido"
613
614 #: ../../../src/ItemManager.cpp:648 ../../../src/MenuPowers.cpp:887
615 #, c-format
616 msgid "%d%% Speed"
617 msgstr "%d%% velocidad"
618
619 #: ../../../src/ItemManager.cpp:652 ../../../src/MenuPowers.cpp:890
620 #, c-format
621 msgid "%d%% Attack Speed"
622 msgstr "%d%% velocidad de ataque"
623
624 #: ../../../src/ItemManager.cpp:674 ../../../src/MenuCharacter.cpp:354
625 #: ../../../src/MenuPowers.cpp:833
626 #, c-format
627 msgid "Resistance (%s)"
628 msgstr "Resistencia (%s)"
629
630 #: ../../../src/ItemManager.cpp:684
631 #, c-format
632 msgid "Requires %s"
633 msgstr "Requiere %s"
634
635 #: ../../../src/ItemManager.cpp:733
636 msgid "Quest Item"
637 msgstr "Objeto de gesta"
638
639 #: ../../../src/ItemManager.cpp:760
640 #, c-format
641 msgid "Quality: %s"
642 msgstr "Calidad: %s"
643
644 #: ../../../src/ItemManager.cpp:785
645 #, c-format
646 msgid "Absorb: %d-%d"
647 msgstr "Absorber: %d-%d"
648
649 #: ../../../src/ItemManager.cpp:787
650 #, c-format
651 msgid "Absorb: %d"
652 msgstr "Absorber: %d"
653
654 #: ../../../src/ItemManager.cpp:827 ../../../src/MenuPowers.cpp:1131
655 #: ../../../src/MenuPowers.cpp:1134
656 #, c-format
657 msgid "Requires Level %d"
658 msgstr "Requiere nivel %d"
659
660 #: ../../../src/ItemManager.cpp:838 ../../../src/MenuPowers.cpp:1123
661 #: ../../../src/MenuPowers.cpp:1125
662 #, c-format
663 msgid "Requires %s %d"
664 msgstr "Requiere %s %d"
665
666 #: ../../../src/ItemManager.cpp:849
667 #, c-format
668 msgid "Requires Class: %s"
669 msgstr "Requiere clase: %s"
670
671 #: ../../../src/ItemManager.cpp:864 ../../../src/ItemManager.cpp:876
672 #, c-format
673 msgid "Buy Price: %d %s"
674 msgstr "Precio de compra: %d %s"
675
676 #: ../../../src/ItemManager.cpp:866 ../../../src/ItemManager.cpp:878
677 #, c-format
678 msgid "Buy Price: %d %s each"
679 msgstr "Precio de compra: %d %s cada"
680
681 #: ../../../src/ItemManager.cpp:886
682 #, c-format
683 msgid "Sell Price: %d %s"
684 msgstr "Precio de venta: %d %s"
685
686 #: ../../../src/ItemManager.cpp:888
687 #, c-format
688 msgid "Sell Price: %d %s each"
689 msgstr "Precio de venta: %d %s cada"
690
691 #: ../../../src/ItemManager.cpp:897
692 msgid "Set:"
693 msgstr "Conjunto:"
694
695 #: ../../../src/ItemManager.cpp:904
696 #, c-format
697 msgid "%d items:"
698 msgstr "%d objetos:"
699
700 #: ../../../src/ItemManager.cpp:917
701 #, c-format
702 msgid "Press [%s] to use"
703 msgstr "Pulsa [%s] para usar"
704
705 #: ../../../src/ItemManager.cpp:920
706 #, c-format
707 msgid "Press [%s] to read"
708 msgstr "Pulsa [%s] para leer"
709
710 #: ../../../src/MenuActionBar.cpp:87
711 msgid "Loot tooltip visibility"
712 msgstr "Ayuda a la visibilidad del botín"
713
714 #: ../../../src/MenuActionBar.cpp:88
715 msgid "Mini-map mode"
716 msgstr "Modo minimapa"
717
718 #: ../../../src/MenuActionBar.cpp:89
719 msgid "Always show stat bar labels"
720 msgstr "Mostrar etiquetas en las barra de atributos"
721
722 #: ../../../src/MenuActionBar.cpp:90
723 msgid "Show combat text"
724 msgstr "Mostrar texto de combate"
725
726 #: ../../../src/MenuActionBar.cpp:254 ../../../src/MenuActionBar.cpp:261
727 #: ../../../src/MenuActionBar.cpp:264 ../../../src/MenuActionBar.cpp:271
728 #, c-format
729 msgid "Hotkey: %s"
730 msgstr "Atajo: %s"
731
732 #: ../../../src/MenuActionBar.cpp:474
733 #, c-format
734 msgid "Default. Temporarily show all loot tooltips with '%s'."
735 msgstr ""
736 "Predeterminado. Muestra temporalmente todas las ayudas de botín con '%s'."
737
738 #: ../../../src/MenuActionBar.cpp:476
739 #, c-format
740 msgid "Show All. Temporarily hide all loot tooltips with '%s'."
741 msgstr ""
742 "Mostrar todas. Muestra temporalmente todas las ayudas de botín con '%s'."
743
744 #: ../../../src/MenuActionBar.cpp:478
745 #, c-format
746 msgid "Hide All. Temporarily show all loot tooltips with '%s'."
747 msgstr ""
748 "Ocultar todas. Muestra temporalmente todas las ayudas de botín con '%s'."
749
750 #: ../../../src/MenuActionBar.cpp:482
751 msgid "Visible"
752 msgstr "Visible"
753
754 #: ../../../src/MenuActionBar.cpp:484
755 msgid "Visible (2x zoom)"
756 msgstr "Visible (aumento: 2x)"
757
758 #: ../../../src/MenuActionBar.cpp:486
759 msgid "Hidden"
760 msgstr "Oculto"
761
762 #: ../../../src/MenuActionBar.cpp:490 ../../../src/MenuActionBar.cpp:496
763 msgid "Enabled"
764 msgstr "Habilitado"
765
766 #: ../../../src/MenuActionBar.cpp:492 ../../../src/MenuActionBar.cpp:498
767 msgid "Disabled"
768 msgstr "Deshabilitado"
769
770 #: ../../../src/MenuActionBar.cpp:657
771 msgid "Not enough MP."
772 msgstr "PM insuficientes."
773
774 #: ../../../src/MenuActiveEffects.cpp:124
775 #, c-format
776 msgid "x%d"
777 msgstr "x%d"
778
779 #: ../../../src/MenuActiveEffects.cpp:219
780 msgid "Remaining:"
781 msgstr "Restantes:"
782
783 #: ../../../src/MenuActiveEffects.cpp:225
784 #, c-format
785 msgid "x%d stacks"
786 msgstr "x%d pilas"
787
788 #: ../../../src/MenuCharacter.cpp:73 ../../../src/MenuCharacter.cpp:78
789 msgid "Name"
790 msgstr "Nombre"
791
792 #: ../../../src/MenuCharacter.cpp:74 ../../../src/MenuCharacter.cpp:79
793 msgid "Level"
794 msgstr "Nivel"
795
796 #: ../../../src/MenuCharacter.cpp:310
797 #, c-format
798 msgid "%d unspent stat point"
799 msgstr "%d punto de atributo restante"
800
801 #: ../../../src/MenuCharacter.cpp:313
802 #, c-format
803 msgid "%d unspent stat points"
804 msgstr "%d puntos de atributos restantes"
805
806 #: ../../../src/MenuCharacter.cpp:355
807 #, c-format
808 msgid "Reduces the damage taken from \"%s\" elemental attacks."
809 msgstr "Reduce el daño recibido de ataques elementales de \"%s\"."
810
811 #: ../../../src/MenuCharacter.cpp:365 ../../../src/MenuManager.cpp:283
812 #, c-format
813 msgid "XP: %d"
814 msgstr "Experiencia: %d"
815
816 #: ../../../src/MenuCharacter.cpp:367
817 #, c-format
818 msgid "Next: %d"
819 msgstr "Siguiente: %d"
820
821 #: ../../../src/MenuCharacter.cpp:373
822 #, c-format
823 msgid "base (%d), bonus (%d)"
824 msgstr "base (%d), bonus (%d)"
825
826 #: ../../../src/MenuCharacter.cpp:381 ../../../src/MenuCharacter.cpp:395
827 msgid "Related stats:"
828 msgstr "Atributos relacionadas:"
829
830 #: ../../../src/MenuCharacter.cpp:421 ../../../src/MenuCharacter.cpp:445
831 #, c-format
832 msgid "Each level grants %d."
833 msgstr "Cada nivel otorga %d."
834
835 #: ../../../src/MenuCharacter.cpp:425 ../../../src/MenuCharacter.cpp:449
836 #, c-format
837 msgid "Each point of %s grants %d."
838 msgstr "Cada punto de %s otorga %d."
839
840 #: ../../../src/MenuDevConsole.cpp:63
937 #: ../../../src/MenuConfig.cpp:515
938 msgid ""
939 "Enables the below setting that controls the screen gamma level. The behavior"
940 " of the gamma setting can vary between platforms."
941 msgstr ""
942 "Activa la opción inferior que controla el nivel de transparencia de la "
943 "pantalla. El comportamiento de transparencia puede variar entre plataformas."
944
945 #: ../../../src/MenuConfig.cpp:516
946 msgid ""
947 "Provides additional text for information that is primarily conveyed through "
948 "color."
949 msgstr ""
950 "Proporciona text adicional para la información que se muestra principalmente"
951 " mediante colores."
952
953 #: ../../../src/MenuConfig.cpp:517
954 msgid ""
955 "Some mods will automatically hide the stat bars when they are inactive. "
956 "Disabling this option will keep them displayed at all times."
957 msgstr ""
958 "Algunos mods ocultan automáticamente las barras de estado cuando no están "
959 "activas. Desactivar esta opción hace que se muestren siempre."
960
961 #: ../../../src/MenuConfig.cpp:518
962 msgid ""
963 "When enabled, empty equipment slots will be filled with applicable items "
964 "when they are obtained."
965 msgstr ""
966 "Cuando está activado, las ranuras de equipamiento libres se asignarán con "
967 "elementos que se puedan usar en cuanto se obtengan."
968
969 #: ../../../src/MenuConfig.cpp:519
970 msgid ""
971 "Shows a marker above enemies, allies, and the player when they are obscured "
972 "by tall objects."
973 msgstr ""
974 "Muestra un marcador por encima de los enemigos, aliados y el jugador cuando "
975 "se vean tapados por objetos de gran altura."
976
977 #: ../../../src/MenuConfig.cpp:520
978 msgid ""
979 "When enabled, tooltips for equipped items of the same type are shown next to"
980 " standard item tooltips."
981 msgstr ""
982
983 #: ../../../src/MenuConfig.cpp:521
984 msgid ""
985 "This allows the game to be controlled entirely with the keyboard (or "
986 "joystick)."
987 msgstr ""
988 "Esto permite controlar el juego por completo con el teclado (o con un "
989 "joystick)."
990
991 #: ../../../src/MenuConfig.cpp:522
992 msgid ""
993 "When 'Move hero using mouse' is enabled, this setting controls if 'Main1' or"
994 " 'Main2' is used to move the hero. If enabled, 'Main2' will move the hero "
995 "instead of 'Main1'."
996 msgstr ""
997 "Cuando \"Mover héroe usando el ratón\" está activado, esta opción controla "
998 "si \"Principal1\" o \"Principal2\" se usan para moverlo. Si activado, se "
999 "usará \"Principal2\" en vez de \"Principal1\"."
1000
1001 #: ../../../src/MenuConfig.cpp:523
1002 msgid ""
1003 "When 'Move hero using mouse' is enabled, this setting controls if the Power "
1004 "assigned to the movement button can be used by targeting an enemy. If this "
1005 "setting is disabled, it is required to use 'Shift' to access the Power "
1006 "assigned to the movement button."
1007 msgstr ""
1008 "Cuando la opción de \"Mover héroe usando el ratón\" está activa, esta opción"
1009 " controla si el Poder asignado al botón de movimiento puede usarse en cuanto"
1010 " se apunta a un enemigo. Si esta opción está desactivada, se necesita usar "
1011 "el botón \"Mayús\" para acceder al Poder asignado al botón de movimiento."
1012
1013 #: ../../../src/MenuConfig.cpp:524
1014 msgid ""
1015 "The player's attacks will be aimed in the direction of the mouse cursor when"
1016 " this is enabled."
1017 msgstr ""
1018 "Los ataques del jugador se dirigirán a la dirección del cursor del ratón "
1019 "cuando esta opción esté activada."
1020
1021 #: ../../../src/MenuConfig.cpp:575
1022 msgid "Active Mods"
1023 msgstr "Mods Activos"
1024
1025 #: ../../../src/MenuConfig.cpp:584
1026 msgid "Available Mods"
1027 msgstr "Mods Disponibles"
1028
1029 #: ../../../src/MenuConfig.cpp:603
1030 msgid "<< Disable"
1031 msgstr "<< Inhabilitar"
1032
1033 #: ../../../src/MenuConfig.cpp:609
1034 msgid "Enable >>"
1035 msgstr "Habilitar >>"
1036
1037 #: ../../../src/MenuConfig.cpp:1444
1038 msgid "Version:"
1039 msgstr "Versión:"
1040
1041 #: ../../../src/MenuConfig.cpp:1449
1042 msgid "Game:"
1043 msgstr "Juego:"
1044
1045 #: ../../../src/MenuConfig.cpp:1454
1046 msgid "Engine version:"
1047 msgstr "Versión del motor de juego:"
1048
1049 #: ../../../src/MenuConfig.cpp:1462
1050 msgid "Requires mods:"
1051 msgstr "Mods requeridos:"
1052
1053 #: ../../../src/MenuConfig.cpp:1570 ../../../src/SDLInputState.cpp:748
1054 msgid "(none)"
1055 msgstr "(ninguno)"
1056
1057 #: ../../../src/MenuConfig.cpp:1587 ../../../src/MenuGameOver.cpp:73
1058 msgid "Save & Exit"
1059 msgstr "Guardar y salir"
1060
1061 #: ../../../src/MenuDevConsole.cpp:65
8411062 msgid "Execute"
8421063 msgstr "Ejecutar"
8431064
844 #: ../../../src/MenuDevConsole.cpp:101 ../../../src/MenuDevConsole.cpp:151
1065 #: ../../../src/MenuDevConsole.cpp:103 ../../../src/MenuDevConsole.cpp:153
8451066 msgid "Developer Console"
8461067 msgstr "Consola de desarrollador"
8471068
848 #: ../../../src/MenuDevConsole.cpp:141
1069 #: ../../../src/MenuDevConsole.cpp:143
8491070 #, c-format
8501071 msgid "Use '%s' to inspect with the cursor."
8511072 msgstr "Usa '%s' para inspeccionar con el cursor."
8521073
853 #: ../../../src/MenuDevConsole.cpp:146
1074 #: ../../../src/MenuDevConsole.cpp:148
8541075 msgid "Arguments with spaces should be enclosed with double quotes. Example:"
8551076 msgstr ""
8561077 "Los argumentos con espacios deben estar entre comillas dobles. Ejemplo:"
8571078
858 #: ../../../src/MenuDevConsole.cpp:147
1079 #: ../../../src/MenuDevConsole.cpp:149
8591080 msgid "Type 'help' to get a list of commands."
8601081 msgstr "Escriba 'help' para una lista de las órdenes disponibles."
8611082
862 #: ../../../src/MenuDevConsole.cpp:209 ../../../src/MenuDevConsole.cpp:213
1083 #: ../../../src/MenuDevConsole.cpp:211 ../../../src/MenuDevConsole.cpp:215
8631084 msgid "px"
8641085 msgstr "px"
8651086
866 #: ../../../src/MenuDevConsole.cpp:224
1087 #: ../../../src/MenuDevConsole.cpp:226
8671088 msgid "Distance"
8681089 msgstr "Distancia"
8691090
870 #: ../../../src/MenuDevConsole.cpp:239 ../../../src/MenuDevConsole.cpp:286
1091 #: ../../../src/MenuDevConsole.cpp:241 ../../../src/MenuDevConsole.cpp:289
1092 #: ../../../src/MenuDevConsole.cpp:303
8711093 msgid "Entity"
8721094 msgstr "Entidad"
8731095
874 #: ../../../src/MenuDevConsole.cpp:261 ../../../src/MenuDevConsole.cpp:268
1096 #: ../../../src/MenuDevConsole.cpp:263 ../../../src/MenuDevConsole.cpp:270
8751097 msgid "none"
8761098 msgstr "ninguno"
8771099
878 #: ../../../src/MenuDevConsole.cpp:262 ../../../src/MenuDevConsole.cpp:264
1100 #: ../../../src/MenuDevConsole.cpp:264 ../../../src/MenuDevConsole.cpp:266
8791101 msgid "wall"
8801102 msgstr "muro"
8811103
882 #: ../../../src/MenuDevConsole.cpp:263 ../../../src/MenuDevConsole.cpp:265
1104 #: ../../../src/MenuDevConsole.cpp:265 ../../../src/MenuDevConsole.cpp:267
8831105 msgid "short wall / pit"
8841106 msgstr "muro bajo/pozo"
8851107
886 #: ../../../src/MenuDevConsole.cpp:266
1108 #: ../../../src/MenuDevConsole.cpp:268
8871109 msgid "entity"
8881110 msgstr "entidad"
8891111
890 #: ../../../src/MenuDevConsole.cpp:267
1112 #: ../../../src/MenuDevConsole.cpp:269
8911113 msgid "entity, ally"
8921114 msgstr "entidad, aliado"
8931115
894 #: ../../../src/MenuDevConsole.cpp:274
1116 #: ../../../src/MenuDevConsole.cpp:276
8951117 msgid "Tile"
8961118 msgstr "Título"
8971119
898 #: ../../../src/MenuDevConsole.cpp:360
1120 #: ../../../src/MenuDevConsole.cpp:377
8991121 msgid "adds a power to the action bar"
9001122 msgstr "añade poder a la barra de acción"
9011123
902 #: ../../../src/MenuDevConsole.cpp:361
1124 #: ../../../src/MenuDevConsole.cpp:378
9031125 msgid "turns on/off the display of the FPS counter"
9041126 msgstr "enciende/apaga el contador de FPS"
9051127
906 #: ../../../src/MenuDevConsole.cpp:362
1128 #: ../../../src/MenuDevConsole.cpp:379
9071129 msgid "turns on/off all of the HUD elements"
9081130 msgstr "Activa/Desactiva todos los elementos con información en pantalla"
9091131
910 #: ../../../src/MenuDevConsole.cpp:363
1132 #: ../../../src/MenuDevConsole.cpp:380
9111133 msgid "turns on/off the developer hud"
9121134 msgstr ""
9131135 "Activa/Desactiva todos la información en pantalla para desarrolladores"
9141136
915 #: ../../../src/MenuDevConsole.cpp:364
1137 #: ../../../src/MenuDevConsole.cpp:381
9161138 msgid ""
9171139 "Prints a list of powers that match a search term. No search term will list "
9181140 "all items"
9201142 "Muestra una lista de poderes que se emparejan con un término de búsqueda. Si"
9211143 " no hay ningún término, se listarán todos los elementos"
9221144
923 #: ../../../src/MenuDevConsole.cpp:365
1145 #: ../../../src/MenuDevConsole.cpp:382
9241146 msgid "Prints out all the map filenames located in the \"maps/\" directory."
9251147 msgstr "Muestra todos los ficheros de mapa del directorio \"maps/\"."
9261148
927 #: ../../../src/MenuDevConsole.cpp:366
1149 #: ../../../src/MenuDevConsole.cpp:383
9281150 msgid ""
9291151 "Prints out the active campaign statuses that match a search term. No search "
9301152 "term will list all active statuses"
9321154 "Muestra los estados de la campaña activa que emparejan con un término de "
9331155 "búsqueda. Si no hay ningún término, se listarán todos los estados activos"
9341156
935 #: ../../../src/MenuDevConsole.cpp:367
1157 #: ../../../src/MenuDevConsole.cpp:384
9361158 msgid ""
9371159 "Prints a list of items that match a search term. No search term will list "
9381160 "all items"
9401162 "Muestra una lista de todos los objetos que emparejan con un término de "
9411163 "búsqueda. Si no hay ningún término de búsqueda, listará todos los objetos"
9421164
943 #: ../../../src/MenuDevConsole.cpp:368
1165 #: ../../../src/MenuDevConsole.cpp:385
9441166 msgid ""
9451167 "parses a series of event components and executes them as a single event"
9461168 msgstr ""
9471169 "analiza una serie de componentes de eventos y los ejecuta como un solo "
9481170 "evento"
9491171
950 #: ../../../src/MenuDevConsole.cpp:369
1172 #: ../../../src/MenuDevConsole.cpp:386
9511173 msgid "clears the command history"
9521174 msgstr "limpia el histórico de órdenes"
9531175
954 #: ../../../src/MenuDevConsole.cpp:370
1176 #: ../../../src/MenuDevConsole.cpp:387
9551177 msgid "displays this text"
9561178 msgstr "muestra este texto"
9571179
958 #: ../../../src/MenuDevConsole.cpp:377
1180 #: ../../../src/MenuDevConsole.cpp:394
9591181 msgid "Toggled the developer hud"
9601182 msgstr "Activar/Desactivar información para desarrolladores"
9611183
962 #: ../../../src/MenuDevConsole.cpp:381
1184 #: ../../../src/MenuDevConsole.cpp:398
9631185 msgid "Toggled the hud"
9641186 msgstr "Estado de información en pantalla cambiado"
9651187
966 #: ../../../src/MenuDevConsole.cpp:385
1188 #: ../../../src/MenuDevConsole.cpp:402
9671189 msgid "Toggled the FPS counter"
9681190 msgstr "Conmutador del contador de FPS"
9691191
970 #: ../../../src/MenuDevConsole.cpp:534
1192 #: ../../../src/MenuDevConsole.cpp:552
9711193 msgid "ERROR: Incorrect number of arguments"
9721194 msgstr "ERROR: número de argumentos incorrecto"
9731195
974 #: ../../../src/MenuDevConsole.cpp:536 ../../../src/MenuDevConsole.cpp:564
1196 #: ../../../src/MenuDevConsole.cpp:554 ../../../src/MenuDevConsole.cpp:582
9751197 msgid "HINT:"
9761198 msgstr "CONSEJO:"
9771199
978 #: ../../../src/MenuDevConsole.cpp:536
1200 #: ../../../src/MenuDevConsole.cpp:554
9791201 msgid "<id>"
9801202 msgstr "<id>"
9811203
982 #: ../../../src/MenuDevConsole.cpp:552
1204 #: ../../../src/MenuDevConsole.cpp:570
9831205 #, c-format
9841206 msgid "ERROR: '%s' is not a valid event key"
9851207 msgstr "ERROR: '%s' no es una clave válida de evento"
9861208
987 #: ../../../src/MenuDevConsole.cpp:562
1209 #: ../../../src/MenuDevConsole.cpp:580
9881210 msgid "ERROR: Too few arguments"
9891211 msgstr "ERROR: muy pocos argumentos"
9901212
991 #: ../../../src/MenuDevConsole.cpp:564
1213 #: ../../../src/MenuDevConsole.cpp:582
9921214 msgid "<key>=<val> <key>=<val> ..."
9931215 msgstr "<key>=<val> <key>=<val> ..."
9941216
995 #: ../../../src/MenuDevConsole.cpp:569
1217 #: ../../../src/MenuDevConsole.cpp:587
9961218 msgid "ERROR: Unknown command"
9971219 msgstr "ERROR: orden desconocida"
9981220
999 #: ../../../src/MenuDevConsole.cpp:571
1221 #: ../../../src/MenuDevConsole.cpp:589
10001222 msgid "HINT: Type help"
10011223 msgstr "CONSEJO: escribe help"
10021224
1003 #: ../../../src/MenuEnemy.cpp:138
1225 #: ../../../src/MenuEnemy.cpp:162
10041226 #, c-format
10051227 msgid "%s level %d"
10061228 msgstr "%s nivel%d"
10071229
1008 #: ../../../src/MenuEnemy.cpp:162
1230 #: ../../../src/MenuEnemy.cpp:186
10091231 msgid "Dead"
10101232 msgstr "Muerto"
10111233
1012 #: ../../../src/MenuEnemy.cpp:164
1234 #: ../../../src/MenuEnemy.cpp:188
10131235 msgid "Destroyed"
10141236 msgstr "Destruido"
10151237
1016 #: ../../../src/MenuExit.cpp:85 ../../../src/MenuExit.cpp:139
1017 msgid "Paused"
1018 msgstr "Pausado"
1019
1020 #: ../../../src/MenuExit.cpp:91
1021 msgid "Save & Exit"
1022 msgstr "Guardar y salir"
1023
1024 #: ../../../src/MenuExit.cpp:92
1025 msgid "Exit"
1026 msgstr "Salir"
1027
1028 #: ../../../src/MenuExit.cpp:96
1029 msgid "Continue"
1030 msgstr "Continuar"
1031
1032 #: ../../../src/MenuInventory.cpp:73
1033 msgid "Automatically equip items"
1034 msgstr "Automáticamente equipar con objetos"
1035
1036 #: ../../../src/MenuInventory.cpp:188
1238 #: ../../../src/MenuGameOver.cpp:69
1239 msgid "Game Over"
1240 msgstr ""
1241
1242 #: ../../../src/MenuInventory.cpp:178
10371243 #, c-format
10381244 msgid "Lost %d%% of %s."
10391245 msgstr "Perdió %d%% de %s."
10401246
1041 #: ../../../src/MenuInventory.cpp:195
1247 #: ../../../src/MenuInventory.cpp:185
10421248 #, c-format
10431249 msgid "Lost %d%% of total XP."
10441250 msgstr "Perdió %d%% de PX."
10451251
1046 #: ../../../src/MenuInventory.cpp:200
1252 #: ../../../src/MenuInventory.cpp:190
10471253 #, c-format
10481254 msgid "Lost %d%% of current level XP."
10491255 msgstr "Perdió %d%% del nivel de PX actual."
10501256
1051 #: ../../../src/MenuInventory.cpp:226
1257 #: ../../../src/MenuInventory.cpp:216
10521258 #, c-format
10531259 msgid "Lost %s."
10541260 msgstr "Perdió %s."
10551261
1056 #: ../../../src/MenuInventory.cpp:274 ../../../src/MenuStash.cpp:146
1262 #: ../../../src/MenuInventory.cpp:258 ../../../src/MenuStash.cpp:276
10571263 #, c-format
10581264 msgid "%d %s"
10591265 msgstr "%d %s"
10601266
1061 #: ../../../src/MenuInventory.cpp:317
1267 #: ../../../src/MenuInventory.cpp:301
10621268 msgid "Pick up item(s):"
10631269 msgstr "Coger objeto/s:"
10641270
1065 #: ../../../src/MenuInventory.cpp:318
1271 #: ../../../src/MenuInventory.cpp:302
10661272 msgid "Use or equip item:"
10671273 msgstr "Usar o equiparse con objeto:"
10681274
1069 #: ../../../src/MenuInventory.cpp:319
1275 #: ../../../src/MenuInventory.cpp:303
10701276 #, c-format
10711277 msgid "%s modifiers"
10721278 msgstr "modificadores %s"
10731279
1074 #: ../../../src/MenuInventory.cpp:320
1280 #: ../../../src/MenuInventory.cpp:304
10751281 msgid "Select a quantity of item:"
10761282 msgstr "Selecciona la cantidad de elementos:"
10771283
1078 #: ../../../src/MenuInventory.cpp:323
1284 #: ../../../src/MenuInventory.cpp:307
10791285 msgid "Stash item stack:"
1080 msgstr "Devolver un objeto a la pila:"
1081
1082 #: ../../../src/MenuInventory.cpp:325
1286 msgstr "Devolver un objeto al almacén:"
1287
1288 #: ../../../src/MenuInventory.cpp:309
10831289 msgid "Sell item stack:"
10841290 msgstr "Vender pila de objetos:"
10851291
1086 #: ../../../src/MenuInventory.cpp:592
1292 #: ../../../src/MenuInventory.cpp:576
10871293 msgid "You don't have enough of the required item."
10881294 msgstr "No tienes suficiente del objeto requerido."
10891295
1090 #: ../../../src/MenuInventory.cpp:599
1296 #: ../../../src/MenuInventory.cpp:588
10911297 msgid "You can't use this item right now."
10921298 msgstr "Ahora no puedes usar este objeto."
10931299
1094 #: ../../../src/MenuInventory.cpp:611
1300 #: ../../../src/MenuInventory.cpp:600
10951301 msgid "This item can only be used from the action bar."
10961302 msgstr "Este elemento sólo se puede utilizar en la barra de acción."
10971303
1098 #: ../../../src/MenuInventory.cpp:729
1304 #: ../../../src/MenuInventory.cpp:718
10991305 msgid "Inventory is full."
11001306 msgstr "El inventario esta completo."
11011307
1102 #: ../../../src/MenuInventory.cpp:849
1308 #: ../../../src/MenuInventory.cpp:843
11031309 #, c-format
11041310 msgid "Not enough %s."
11051311 msgstr "No hay suficientes %s."
11061312
1107 #: ../../../src/MenuInventory.cpp:869 ../../../src/MenuInventory.cpp:876
1313 #: ../../../src/MenuInventory.cpp:863 ../../../src/MenuInventory.cpp:870
11081314 msgid "This item can not be sold."
11091315 msgstr "Este objeto no se puede vender."
11101316
11161322 msgid "Quests"
11171323 msgstr "Gestas"
11181324
1119 #: ../../../src/MenuManager.cpp:286
1325 #: ../../../src/MenuManager.cpp:305
11201326 #, c-format
11211327 msgid "XP: %d/%d"
11221328 msgstr "Experiencia: %d/%d"
11231329
1124 #: ../../../src/MenuManager.cpp:827
1330 #: ../../../src/MenuManager.cpp:875
11251331 msgid "This item can not be dropped."
11261332 msgstr "Este objeto no se puede soltar."
1333
1334 #: ../../../src/MenuManager.cpp:1501
1335 msgid "Equipped"
1336 msgstr ""
1337
1338 #: ../../../src/MenuMovementType.cpp:87
1339 msgid "Select a Movement Type"
1340 msgstr ""
1341
1342 #: ../../../src/MenuMovementType.cpp:89
1343 msgid "Can be changed later in the Configuration menu."
1344 msgstr ""
1345
1346 #: ../../../src/MenuMovementType.cpp:92 ../../../src/MenuMovementType.cpp:122
1347 msgid "Keyboard"
1348 msgstr ""
1349
1350 #: ../../../src/MenuMovementType.cpp:93 ../../../src/MenuMovementType.cpp:128
1351 msgid "Mouse"
1352 msgstr ""
1353
1354 #: ../../../src/MenuMovementType.cpp:129
1355 msgid "Button"
1356 msgstr ""
11271357
11281358 #: ../../../src/MenuNumPicker.cpp:59
11291359 msgid "Enter amount:"
11301360 msgstr "Introduce cantidad:"
11311361
1132 #: ../../../src/MenuPowers.cpp:787
1362 #: ../../../src/MenuPowers.cpp:872
11331363 msgid "Passive"
11341364 msgstr "Pasivo"
11351365
1136 #: ../../../src/MenuPowers.cpp:792
1366 #: ../../../src/MenuPowers.cpp:879
11371367 #, c-format
11381368 msgid "Costs %d MP"
11391369 msgstr "Costos %d PM"
11401370
1141 #: ../../../src/MenuPowers.cpp:796
1371 #: ../../../src/MenuPowers.cpp:883
11421372 #, c-format
11431373 msgid "Costs %d HP"
11441374 msgstr "Costos %d HP"
11451375
1146 #: ../../../src/MenuPowers.cpp:801
1376 #: ../../../src/MenuPowers.cpp:887
11471377 msgid "Cooldown:"
11481378 msgstr "Enfriar:"
11491379
1150 #: ../../../src/MenuPowers.cpp:866 ../../../src/MenuPowers.cpp:869
1380 #: ../../../src/MenuPowers.cpp:938 ../../../src/MenuPowers.cpp:941
11511381 msgid "Damage per second"
11521382 msgstr "Daño por segundo"
11531383
1154 #: ../../../src/MenuPowers.cpp:872 ../../../src/MenuPowers.cpp:875
1384 #: ../../../src/MenuPowers.cpp:944 ../../../src/MenuPowers.cpp:947
11551385 msgid "HP per second"
11561386 msgstr "PV por segundo"
11571387
1158 #: ../../../src/MenuPowers.cpp:878 ../../../src/MenuPowers.cpp:881
1388 #: ../../../src/MenuPowers.cpp:950 ../../../src/MenuPowers.cpp:953
11591389 msgid "MP per second"
11601390 msgstr "PM por segundo"
11611391
1162 #: ../../../src/MenuPowers.cpp:885
1392 #: ../../../src/MenuPowers.cpp:957
11631393 msgid "Immobilize"
11641394 msgstr "Inmovilizar"
11651395
1166 #: ../../../src/MenuPowers.cpp:893
1396 #: ../../../src/MenuPowers.cpp:965
11671397 msgid "Immunity"
11681398 msgstr "Inmunidad"
11691399
1170 #: ../../../src/MenuPowers.cpp:896
1400 #: ../../../src/MenuPowers.cpp:968
11711401 msgid "Immunity to damage over time"
11721402 msgstr "Inmunidad al daño durante un tiempo"
11731403
1174 #: ../../../src/MenuPowers.cpp:899
1404 #: ../../../src/MenuPowers.cpp:971
11751405 msgid "Immunity to slow"
11761406 msgstr "Inmunidad a la lentidud"
11771407
1178 #: ../../../src/MenuPowers.cpp:902
1408 #: ../../../src/MenuPowers.cpp:974
11791409 msgid "Immunity to stun"
11801410 msgstr "Inmunidad al aturdimiento"
11811411
1182 #: ../../../src/MenuPowers.cpp:905
1412 #: ../../../src/MenuPowers.cpp:977
11831413 msgid "Immunity to HP steal"
11841414 msgstr "Inmunidad al robo de PV"
11851415
1186 #: ../../../src/MenuPowers.cpp:908
1416 #: ../../../src/MenuPowers.cpp:980
11871417 msgid "Immunity to MP steal"
11881418 msgstr "Inmunidad al robo de PM"
11891419
1190 #: ../../../src/MenuPowers.cpp:911
1420 #: ../../../src/MenuPowers.cpp:983
11911421 msgid "Immunity to knockback"
11921422 msgstr "Inmunidad al contragolpe"
11931423
1194 #: ../../../src/MenuPowers.cpp:914
1424 #: ../../../src/MenuPowers.cpp:986
11951425 msgid "Immunity to damage reflection"
11961426 msgstr "Inmunidad a la reflexión de daño"
11971427
1198 #: ../../../src/MenuPowers.cpp:917
1428 #: ../../../src/MenuPowers.cpp:992
11991429 msgid "Stun"
12001430 msgstr "Aturdir"
12011431
1202 #: ../../../src/MenuPowers.cpp:920
1432 #: ../../../src/MenuPowers.cpp:995
12031433 msgid "Automatic revive on death"
12041434 msgstr "Revivir automáticamente al morir"
12051435
1206 #: ../../../src/MenuPowers.cpp:923
1436 #: ../../../src/MenuPowers.cpp:998
12071437 msgid "Convert"
12081438 msgstr "Convertir"
12091439
1210 #: ../../../src/MenuPowers.cpp:926
1440 #: ../../../src/MenuPowers.cpp:1001
12111441 msgid "Fear"
12121442 msgstr "Miedo"
12131443
1214 #: ../../../src/MenuPowers.cpp:929
1444 #: ../../../src/MenuPowers.cpp:1004
12151445 msgid "Lifespan"
12161446 msgstr "Vida"
12171447
1218 #: ../../../src/MenuPowers.cpp:953
1448 #: ../../../src/MenuPowers.cpp:1028
12191449 msgid "Magical Shield"
12201450 msgstr "Armadura mágica"
12211451
1222 #: ../../../src/MenuPowers.cpp:982
1452 #: ../../../src/MenuPowers.cpp:1057
12231453 msgid "Healing"
12241454 msgstr "Sanación"
12251455
1226 #: ../../../src/MenuPowers.cpp:985
1456 #: ../../../src/MenuPowers.cpp:1060
12271457 msgid "Knockback"
12281458 msgstr "Contragolpe"
12291459
1230 #: ../../../src/MenuPowers.cpp:1010
1460 #: ../../../src/MenuPowers.cpp:1084
12311461 #, c-format
12321462 msgid "%d%% chance"
12331463 msgstr "%d%% probabilidad "
12341464
1235 #: ../../../src/MenuPowers.cpp:1062
1465 #: ../../../src/MenuPowers.cpp:1136
12361466 msgid "Base Accuracy"
12371467 msgstr "Exactitud base"
12381468
1239 #: ../../../src/MenuPowers.cpp:1082
1469 #: ../../../src/MenuPowers.cpp:1156
12401470 msgid "Base Critical Chance"
12411471 msgstr "Probabilidad base de crítico"
12421472
1243 #: ../../../src/MenuPowers.cpp:1090
1473 #: ../../../src/MenuPowers.cpp:1164
12441474 msgid "Ignores Absorbtion"
12451475 msgstr "Ignora absorción"
12461476
1247 #: ../../../src/MenuPowers.cpp:1095
1477 #: ../../../src/MenuPowers.cpp:1169
12481478 msgid "Ignores Avoidance"
12491479 msgstr "Ignora evitación"
12501480
1251 #: ../../../src/MenuPowers.cpp:1100
1481 #: ../../../src/MenuPowers.cpp:1174
12521482 #, c-format
12531483 msgid "%d%% Chance to crit slowed targets"
12541484 msgstr "%d%% Probabilidad de crítico en objetivos lentos"
12551485
1256 #: ../../../src/MenuPowers.cpp:1105
1486 #: ../../../src/MenuPowers.cpp:1179
12571487 #, c-format
12581488 msgid "Elemental Damage (%s)"
12591489 msgstr "Daño elemental (%s)"
12601490
1261 #: ../../../src/MenuPowers.cpp:1114
1491 #: ../../../src/MenuPowers.cpp:1188
12621492 #, c-format
12631493 msgid "Requires a %s"
12641494 msgstr "Requiere un/a %s"
12651495
1266 #: ../../../src/MenuPowers.cpp:1151 ../../../src/MenuPowers.cpp:1154
1496 #: ../../../src/MenuPowers.cpp:1226 ../../../src/MenuPowers.cpp:1229
12671497 #, c-format
12681498 msgid "Requires Power: %s"
12691499 msgstr "Requiere Poder: %s"
12701500
1271 #: ../../../src/MenuPowers.cpp:1163
1501 #: ../../../src/MenuPowers.cpp:1238
12721502 msgid "Click to Unlock (uses 1 Skill Point)"
12731503 msgstr "Pulsa para desbloquear (usa 1 punto de habilidad)"
12741504
1275 #: ../../../src/MenuPowers.cpp:1167 ../../../src/MenuPowers.cpp:1169
1505 #: ../../../src/MenuPowers.cpp:1242 ../../../src/MenuPowers.cpp:1244
12761506 msgid "Requires 1 Skill Point"
12771507 msgstr "Requiere 1 punto de habilidad"
12781508
1279 #: ../../../src/MenuPowers.cpp:1355
1280 #, c-format
1281 msgid "%d unspent skill point"
1282 msgstr "%d punto de habilidad restante"
1283
1284 #: ../../../src/MenuPowers.cpp:1358
1285 #, c-format
1286 msgid "%d unspent skill points"
1287 msgstr "%d puntos de habilidad restantes"
1288
1289 #: ../../../src/MenuPowers.cpp:1388
1509 #: ../../../src/MenuPowers.cpp:1444
1510 #, c-format
1511 msgid "Available skill points: %d"
1512 msgstr ""
1513
1514 #: ../../../src/MenuPowers.cpp:1476
12901515 msgid "Next Level:"
12911516 msgstr "Siguiente nivel:"
12921517
1293 #: ../../../src/MenuStash.cpp:96
1294 msgid "Shared Stash"
1295 msgstr "Almacén compartido"
1296
1297 #: ../../../src/MenuStash.cpp:209
1298 msgid "Can not store quest items in the stash."
1299 msgstr "No puedes guardar objetos de gesta en tu almacén."
1300
1301 #: ../../../src/MenuStash.cpp:219
1518 #: ../../../src/MenuStash.cpp:80 ../../../src/MenuStash.cpp:161
1519 msgid "Stash"
1520 msgstr "Almacén"
1521
1522 #: ../../../src/MenuStash.cpp:174 ../../../src/MenuStash.cpp:188
1523 msgid "Private"
1524 msgstr "Privado"
1525
1526 #: ../../../src/MenuStash.cpp:175
1527 msgid "Shared"
1528 msgstr "Compartido"
1529
1530 #: ../../../src/MenuStash.cpp:340
1531 msgid "This item can not be stored in the stash."
1532 msgstr "Este objeto no se puede guardar en el almacén."
1533
1534 #: ../../../src/MenuStash.cpp:345
1535 msgid "This item can not be stored in the private stash."
1536 msgstr "Este objeto no se puede guardar en el almacén privado."
1537
1538 #: ../../../src/MenuStash.cpp:350
1539 msgid "This item can not be stored in the shared stash."
1540 msgstr "Este objeto no se puede guardar en el almacén compartido."
1541
1542 #: ../../../src/MenuStash.cpp:360
13021543 msgid "Stash is full."
13031544 msgstr "Almacén lleno."
13041545
1305 #: ../../../src/MenuTalker.cpp:454
1546 #: ../../../src/MenuStash.cpp:414
1547 #, c-format
1548 msgid "Can not store item in stash: %s"
1549 msgstr "No se puede guardar objeto en el amacén: %s"
1550
1551 #: ../../../src/MenuTalker.cpp:448
1552 #, c-format
1553 msgid "<dialog node %d>"
1554 msgstr "<dialog node %d>"
1555
1556 #: ../../../src/MenuTalker.cpp:456
13061557 msgid "Trade"
13071558 msgstr "Comerciar"
13081559
1309 #: ../../../src/MenuVendor.cpp:58
1560 #: ../../../src/MenuVendor.cpp:60
13101561 msgid "Buyback"
13111562 msgstr "Recompra"
13121563
1313 #: ../../../src/MenuVendor.cpp:279
1564 #: ../../../src/MenuVendor.cpp:283
13141565 msgid "Vendor"
13151566 msgstr "Vendedor"
13161567
1317 #: ../../../src/PowerManager.cpp:1136
1568 #: ../../../src/PowerManager.cpp:1208
13181569 #, c-format
13191570 msgid "+%d Shield"
13201571 msgstr "+%d Escudo"
13211572
1322 #: ../../../src/PowerManager.cpp:1392
1573 #: ../../../src/PowerManager.cpp:1465
13231574 msgid "You are already transformed, untransform first."
13241575 msgstr "Usted ya está transformado, destransformase primero."
13251576
1326 #: ../../../src/PowerManager.cpp:1404
1577 #: ../../../src/PowerManager.cpp:1477
13271578 msgid "Could not untransform at this position."
13281579 msgstr "No se puede quitar la transformación en esta posición."
13291580
13311582 msgid "Completed Quests"
13321583 msgstr "Gestas completadas"
13331584
1334 #: ../../../src/SaveLoad.cpp:243 ../../../src/SaveLoad.cpp:244
1585 #: ../../../src/SaveLoad.cpp:250 ../../../src/SaveLoad.cpp:251
13351586 msgid "Game saved."
13361587 msgstr "Partida guardada."
13371588
1338 #: ../../../src/SDLInputState.cpp:582
1589 #: ../../../src/SDLInputState.cpp:643
1590 msgid "BkSp"
1591 msgstr "Retroceso"
1592
1593 #: ../../../src/SDLInputState.cpp:644
1594 msgid "Caps"
1595 msgstr "BloqMayús"
1596
1597 #: ../../../src/SDLInputState.cpp:645
1598 msgid "Del"
1599 msgstr "Suprimir"
1600
1601 #: ../../../src/SDLInputState.cpp:647 ../../../src/SDLInputState.cpp:677
1602 msgid "End"
1603 msgstr "Fin"
1604
1605 #: ../../../src/SDLInputState.cpp:648
1606 msgid "Esc"
1607 msgstr "Esc"
1608
1609 #: ../../../src/SDLInputState.cpp:649 ../../../src/SDLInputState.cpp:679
1610 msgid "Home"
1611 msgstr "Inicio"
1612
1613 #: ../../../src/SDLInputState.cpp:650
1614 msgid "Ins"
1615 msgstr "Ins"
1616
1617 #: ../../../src/SDLInputState.cpp:651
1618 msgid "LAlt"
1619 msgstr "AltIzq"
1620
1621 #: ../../../src/SDLInputState.cpp:652
1622 msgid "LCtrl"
1623 msgstr "CtrlIzq"
1624
1625 #: ../../../src/SDLInputState.cpp:654
1626 msgid "LShft"
1627 msgstr "MayúsIzq"
1628
1629 #: ../../../src/SDLInputState.cpp:655
1630 msgid "Num"
1631 msgstr "BloqNum"
1632
1633 #: ../../../src/SDLInputState.cpp:656
1634 msgid "PgDn"
1635 msgstr "AvPág"
1636
1637 #: ../../../src/SDLInputState.cpp:657
1638 msgid "PgUp"
1639 msgstr "RePág"
1640
1641 #: ../../../src/SDLInputState.cpp:658 ../../../src/SDLInputState.cpp:688
1642 msgid "Pause"
1643 msgstr "Pausar"
1644
1645 #: ../../../src/SDLInputState.cpp:659
1646 msgid "Print"
1647 msgstr "Impr"
1648
1649 #: ../../../src/SDLInputState.cpp:660
1650 msgid "RAlt"
1651 msgstr "AltDch"
1652
1653 #: ../../../src/SDLInputState.cpp:661
1654 msgid "RCtrl"
1655 msgstr "CtrlDch"
1656
1657 #: ../../../src/SDLInputState.cpp:662
1658 msgid "Ret"
1659 msgstr "Intro"
1660
1661 #: ../../../src/SDLInputState.cpp:664
1662 msgid "RShft"
1663 msgstr "MayúsDch"
1664
1665 #: ../../../src/SDLInputState.cpp:665
1666 msgid "SLock"
1667 msgstr "BloqDespl"
1668
1669 #: ../../../src/SDLInputState.cpp:666
1670 msgid "Spc"
1671 msgstr "Esp"
1672
1673 #: ../../../src/SDLInputState.cpp:667 ../../../src/SDLInputState.cpp:697
1674 msgid "Tab"
1675 msgstr "Tabulador"
1676
1677 #: ../../../src/SDLInputState.cpp:673
13391678 msgid "Backspace"
13401679 msgstr "Retroceso"
13411680
1342 #: ../../../src/SDLInputState.cpp:583
1681 #: ../../../src/SDLInputState.cpp:674
13431682 msgid "CapsLock"
13441683 msgstr "BloqMayús"
13451684
1346 #: ../../../src/SDLInputState.cpp:586
1347 msgid "End"
1348 msgstr "Fin"
1349
1350 #: ../../../src/SDLInputState.cpp:587
1685 #: ../../../src/SDLInputState.cpp:678
13511686 msgid "Escape"
13521687 msgstr "Escape"
13531688
1354 #: ../../../src/SDLInputState.cpp:588
1355 msgid "Home"
1356 msgstr "Inicio"
1357
1358 #: ../../../src/SDLInputState.cpp:589
1689 #: ../../../src/SDLInputState.cpp:680
13591690 msgid "Insert"
13601691 msgstr "Insertar"
13611692
1362 #: ../../../src/SDLInputState.cpp:590
1693 #: ../../../src/SDLInputState.cpp:681
13631694 msgid "Left Alt"
13641695 msgstr "Alt Izquierdo"
13651696
1366 #: ../../../src/SDLInputState.cpp:591
1697 #: ../../../src/SDLInputState.cpp:682
13671698 msgid "Left Ctrl"
13681699 msgstr "Ctrl Izquierdo"
13691700
1370 #: ../../../src/SDLInputState.cpp:593
1701 #: ../../../src/SDLInputState.cpp:684
13711702 msgid "Left Shift"
13721703 msgstr "Mayús Izquierdo"
13731704
1374 #: ../../../src/SDLInputState.cpp:594
1705 #: ../../../src/SDLInputState.cpp:685
13751706 msgid "NumLock"
13761707 msgstr "BloqueoDeNúmeros"
13771708
1378 #: ../../../src/SDLInputState.cpp:595
1709 #: ../../../src/SDLInputState.cpp:686
13791710 msgid "PageDown"
13801711 msgstr "Avanzar Página"
13811712
1382 #: ../../../src/SDLInputState.cpp:596
1713 #: ../../../src/SDLInputState.cpp:687
13831714 msgid "PageUp"
13841715 msgstr "Retroceder Página"
13851716
1386 #: ../../../src/SDLInputState.cpp:597
1387 msgid "Pause"
1388 msgstr "Pausar"
1389
1390 #: ../../../src/SDLInputState.cpp:598
1717 #: ../../../src/SDLInputState.cpp:689
13911718 msgid "PrintScreen"
13921719 msgstr "Imprimir Pantalla"
13931720
1394 #: ../../../src/SDLInputState.cpp:599
1721 #: ../../../src/SDLInputState.cpp:690
13951722 msgid "Right Alt"
13961723 msgstr "Alt Derecho"
13971724
1398 #: ../../../src/SDLInputState.cpp:600
1725 #: ../../../src/SDLInputState.cpp:691
13991726 msgid "Right Ctrl"
14001727 msgstr "Ctrl Derecho"
14011728
1402 #: ../../../src/SDLInputState.cpp:601
1729 #: ../../../src/SDLInputState.cpp:692
14031730 msgid "Return"
14041731 msgstr "Retorno"
14051732
1406 #: ../../../src/SDLInputState.cpp:603
1733 #: ../../../src/SDLInputState.cpp:694
14071734 msgid "Right Shift"
14081735 msgstr "Mayús. derecho"
14091736
1410 #: ../../../src/SDLInputState.cpp:604
1737 #: ../../../src/SDLInputState.cpp:695
14111738 msgid "ScrollLock"
14121739 msgstr "BloqDesplazamiento"
14131740
1414 #: ../../../src/SDLInputState.cpp:605
1741 #: ../../../src/SDLInputState.cpp:696
14151742 msgid "Space"
14161743 msgstr "Espacio"
14171744
1418 #: ../../../src/SDLInputState.cpp:606
1419 msgid "Tab"
1420 msgstr "Tabulador"
1421
1422 #: ../../../src/SDLInputState.cpp:620
1745 #: ../../../src/SDLInputState.cpp:710
1746 #, c-format
1747 msgid "M%d"
1748 msgstr "M%d"
1749
1750 #: ../../../src/SDLInputState.cpp:716
14231751 #, c-format
14241752 msgid "Mouse %d"
14251753 msgstr "Ratón %d"
14261754
1427 #: ../../../src/SDLInputState.cpp:628
1755 #: ../../../src/SDLInputState.cpp:726
1756 #, c-format
1757 msgid "JX%d-"
1758 msgstr "JX%d-"
1759
1760 #: ../../../src/SDLInputState.cpp:728
14281761 #, c-format
14291762 msgid "Axis %d -"
14301763 msgstr "Eje %d -"
14311764
1432 #: ../../../src/SDLInputState.cpp:630
1765 #: ../../../src/SDLInputState.cpp:732
1766 #, c-format
1767 msgid "JX%d+"
1768 msgstr "JX%d+"
1769
1770 #: ../../../src/SDLInputState.cpp:734
14331771 #, c-format
14341772 msgid "Axis %d +"
14351773 msgstr "Eje %d +"
14361774
1437 #: ../../../src/SDLInputState.cpp:633
1775 #: ../../../src/SDLInputState.cpp:739
1776 #, c-format
1777 msgid "JB%d"
1778 msgstr "JB%d"
1779
1780 #: ../../../src/SDLInputState.cpp:741
14381781 #, c-format
14391782 msgid "Button %d"
14401783 msgstr "Botón %d"
14411784
1442 #: ../../../src/SDLInputState.cpp:637
1443 msgid "(none)"
1444 msgstr "(ninguno)"
1445
1446 #: ../../../src/SDLInputState.cpp:677
1785 #: ../../../src/SDLInputState.cpp:787
14471786 msgid "Touch control D-Pad"
14481787 msgstr "Cruceta direccional"
14491788
1450 #: ../../../src/SDLInputState.cpp:701
1789 #: ../../../src/SDLInputState.cpp:810
14511790 msgid "Touch control buttons"
14521791 msgstr "Botones de control táctiles"
14531792
1454 #: ../../../src/SDLInputState.cpp:716
1793 #: ../../../src/SDLInputState.cpp:824
14551794 msgid "Tap"
14561795 msgstr "Palmadita"
14571796
1458 #: ../../../src/SDLInputState.cpp:760 ../../../src/SDLInputState.cpp:764
1459 #: ../../../src/SDLInputState.cpp:768
1797 #: ../../../src/SDLInputState.cpp:876 ../../../src/SDLInputState.cpp:878
1798 #, c-format
1799 msgid "Can not bind: %s"
1800 msgstr "No se puede vincular: %s"
1801
1802 #: ../../../src/SDLInputState.cpp:890 ../../../src/SDLInputState.cpp:894
1803 #: ../../../src/SDLInputState.cpp:898
14601804 #, c-format
14611805 msgid "'%s' is no longer bound to:"
14621806 msgstr "'%s' no está ligado más a:"
16201964 msgid "Base MP"
16211965 msgstr "PM base"
16221966
1623 #: ../../../src/Utils.cpp:346
1967 #: ../../../src/Utils.cpp:365
16241968 msgid "k"
16251969 msgstr "Aceptar"
16261970
1627 #: ../../../src/Utils.cpp:580
1971 #: ../../../src/Utils.cpp:635
16281972 #, c-format
16291973 msgid "%s second"
16301974 msgstr "%s segundo"
16311975
1632 #: ../../../src/Utils.cpp:583
1976 #: ../../../src/Utils.cpp:638
16331977 #, c-format
16341978 msgid "%s seconds"
16351979 msgstr "%s segundos"
0 # SOME DESCRIPTIVE TITLE.
1 # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
2 # This file is distributed under the same license as the PACKAGE package.
3 # FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
4 #
5 #, fuzzy
6 msgid ""
7 msgstr ""
8 "Project-Id-Version: PACKAGE VERSION\n"
9 "Report-Msgid-Bugs-To: \n"
10 "POT-Creation-Date: 2021-05-23 20:34-0400\n"
11 "PO-Revision-Date: 2018-03-28 19:16+0000\n"
12 "Language-Team: Basque (https://www.transifex.com/flareorg/teams/84925/eu/)\n"
13 "MIME-Version: 1.0\n"
14 "Content-Type: text/plain; charset=UTF-8\n"
15 "Content-Transfer-Encoding: 8bit\n"
16 "Language: eu\n"
17 "Plural-Forms: nplurals=2; plural=(n != 1);\n"
18
19 #: ../../../src/Avatar.cpp:391
20 msgid "Your health is low!"
21 msgstr ""
22
23 #: ../../../src/Avatar.cpp:421
24 #, c-format
25 msgid "Congratulations, you have reached level %d!"
26 msgstr ""
27
28 #: ../../../src/Avatar.cpp:423
29 msgid "You may increase one or more attributes through the Character Menu."
30 msgstr ""
31
32 #: ../../../src/Avatar.cpp:427
33 msgid "You may unlock one or more abilities through the Powers Menu."
34 msgstr ""
35
36 #: ../../../src/Avatar.cpp:689
37 msgid "You are defeated."
38 msgstr ""
39
40 #: ../../../src/Avatar.cpp:935
41 msgid "Transformation expired. You have been moved back to a safe place."
42 msgstr ""
43
44 #: ../../../src/CampaignManager.cpp:152
45 #, c-format
46 msgid "%d %s removed."
47 msgstr ""
48
49 #: ../../../src/CampaignManager.cpp:171
50 #, c-format
51 msgid "%s x%d removed."
52 msgstr ""
53
54 #: ../../../src/CampaignManager.cpp:173
55 #, c-format
56 msgid "%s removed."
57 msgstr ""
58
59 #: ../../../src/CampaignManager.cpp:187
60 #, c-format
61 msgid "You receive %d %s."
62 msgstr ""
63
64 #: ../../../src/CampaignManager.cpp:191
65 #, c-format
66 msgid "You receive %s x%d."
67 msgstr ""
68
69 #: ../../../src/CampaignManager.cpp:193
70 #, c-format
71 msgid "You receive %s."
72 msgstr ""
73
74 #: ../../../src/CampaignManager.cpp:210
75 #, c-format
76 msgid "You receive %d XP."
77 msgstr ""
78
79 #: ../../../src/CampaignManager.cpp:216
80 msgid "HP restored."
81 msgstr ""
82
83 #: ../../../src/CampaignManager.cpp:220
84 msgid "MP restored."
85 msgstr ""
86
87 #: ../../../src/CampaignManager.cpp:225
88 msgid "HP and MP restored."
89 msgstr ""
90
91 #: ../../../src/CampaignManager.cpp:229
92 msgid "Negative effects removed."
93 msgstr ""
94
95 #: ../../../src/CampaignManager.cpp:235
96 msgid "HP and MP restored, negative effects removed"
97 msgstr ""
98
99 #: ../../../src/DeviceList.cpp:56
100 msgid ""
101 "SDL software renderer\n"
102 "\n"
103 "Often slower, but less likely to have issues."
104 msgstr ""
105
106 #: ../../../src/DeviceList.cpp:59
107 msgid ""
108 "SDL hardware renderer\n"
109 "\n"
110 "The default renderer that is often faster than the SDL software renderer."
111 msgstr ""
112
113 #: ../../../src/EngineSettings.cpp:586
114 msgid "Adventurer"
115 msgstr ""
116
117 #: ../../../src/Entity.cpp:527
118 msgid "miss"
119 msgstr ""
120
121 #: ../../../src/Entity.cpp:565 ../../../src/PowerManager.cpp:1224
122 #: ../../../src/StatBlock.cpp:917 ../../../src/StatBlock.cpp:923
123 #, c-format
124 msgid "+%d HP"
125 msgstr ""
126
127 #: ../../../src/Entity.cpp:572 ../../../src/StatBlock.cpp:928
128 #: ../../../src/StatBlock.cpp:934
129 #, c-format
130 msgid "+%d MP"
131 msgstr ""
132
133 #: ../../../src/EventManager.cpp:792
134 msgid "Unknown destination"
135 msgstr ""
136
137 #: ../../../src/GameState.cpp:37 ../../../src/GameState.cpp:58
138 msgid "Loading..."
139 msgstr ""
140
141 #: ../../../src/GameStateLoad.cpp:90 ../../../src/GameStateLoad.cpp:103
142 msgid "Delete Save"
143 msgstr ""
144
145 #: ../../../src/GameStateLoad.cpp:90
146 msgid "Delete this save?"
147 msgstr ""
148
149 #: ../../../src/GameStateLoad.cpp:92
150 msgid "Exit to Title"
151 msgstr ""
152
153 #: ../../../src/GameStateLoad.cpp:95
154 msgid "New Game"
155 msgstr ""
156
157 #: ../../../src/GameStateLoad.cpp:99 ../../../src/GameStateLoad.cpp:607
158 msgid "Choose a Slot"
159 msgstr ""
160
161 #: ../../../src/GameStateLoad.cpp:580 ../../../src/GameStateLoad.cpp:601
162 msgid "Enable a story mod to continue"
163 msgstr ""
164
165 #: ../../../src/GameStateLoad.cpp:596
166 msgid "Load Game"
167 msgstr ""
168
169 #: ../../../src/GameStateLoad.cpp:705
170 msgid "Entering game world..."
171 msgstr ""
172
173 #: ../../../src/GameStateLoad.cpp:708
174 msgid "Loading saved game..."
175 msgstr ""
176
177 #: ../../../src/GameStateLoad.cpp:741
178 msgid "Invalid save"
179 msgstr ""
180
181 #: ../../../src/GameStateLoad.cpp:765 ../../../src/ItemManager.cpp:745
182 #: ../../../src/MenuPowers.cpp:860 ../../../src/MenuPowers.cpp:1219
183 #: ../../../src/MenuPowers.cpp:1631
184 #, c-format
185 msgid "Level %d"
186 msgstr ""
187
188 #: ../../../src/GameStateNew.cpp:66 ../../../src/InputState.cpp:416
189 #: ../../../src/MenuConfig.cpp:246
190 msgid "Cancel"
191 msgstr ""
192
193 #: ../../../src/GameStateNew.cpp:69
194 msgid "Create"
195 msgstr ""
196
197 #: ../../../src/GameStateNew.cpp:77
198 msgid "Randomize"
199 msgstr ""
200
201 #: ../../../src/GameStateNew.cpp:93
202 msgid "Choose a Portrait"
203 msgstr ""
204
205 #: ../../../src/GameStateNew.cpp:97
206 msgid "Choose a Name"
207 msgstr ""
208
209 #: ../../../src/GameStateNew.cpp:101
210 msgid "Permadeath?"
211 msgstr ""
212
213 #: ../../../src/GameStateNew.cpp:105
214 msgid "Choose a Class"
215 msgstr ""
216
217 #: ../../../src/GameStateTitle.cpp:107
218 msgid "Play Game"
219 msgstr ""
220
221 #: ../../../src/GameStateTitle.cpp:110
222 msgid "Enable a core mod to continue"
223 msgstr ""
224
225 #: ../../../src/GameStateTitle.cpp:114 ../../../src/MenuMiniMap.cpp:152
226 msgid "Configuration"
227 msgstr ""
228
229 #: ../../../src/GameStateTitle.cpp:117
230 msgid "Credits"
231 msgstr ""
232
233 #: ../../../src/GameStateTitle.cpp:120
234 msgid "Exit Game"
235 msgstr ""
236
237 #: ../../../src/InputState.cpp:417
238 msgid "Accept"
239 msgstr ""
240
241 #: ../../../src/InputState.cpp:418 ../../../src/MenuMovementType.cpp:123
242 #: ../../../src/MenuMovementType.cpp:132 ../../../src/SDLInputState.cpp:668
243 #: ../../../src/SDLInputState.cpp:698
244 msgid "Up"
245 msgstr ""
246
247 #: ../../../src/InputState.cpp:419 ../../../src/MenuMovementType.cpp:125
248 #: ../../../src/MenuMovementType.cpp:134 ../../../src/SDLInputState.cpp:646
249 #: ../../../src/SDLInputState.cpp:676
250 msgid "Down"
251 msgstr ""
252
253 #: ../../../src/InputState.cpp:420 ../../../src/MenuMovementType.cpp:124
254 #: ../../../src/MenuMovementType.cpp:133 ../../../src/SDLInputState.cpp:653
255 #: ../../../src/SDLInputState.cpp:683
256 msgid "Left"
257 msgstr ""
258
259 #: ../../../src/InputState.cpp:421 ../../../src/MenuMovementType.cpp:126
260 #: ../../../src/MenuMovementType.cpp:135 ../../../src/SDLInputState.cpp:663
261 #: ../../../src/SDLInputState.cpp:693
262 msgid "Right"
263 msgstr ""
264
265 #: ../../../src/InputState.cpp:422
266 msgid "Bar1"
267 msgstr ""
268
269 #: ../../../src/InputState.cpp:423
270 msgid "Bar2"
271 msgstr ""
272
273 #: ../../../src/InputState.cpp:424
274 msgid "Bar3"
275 msgstr ""
276
277 #: ../../../src/InputState.cpp:425
278 msgid "Bar4"
279 msgstr ""
280
281 #: ../../../src/InputState.cpp:426
282 msgid "Bar5"
283 msgstr ""
284
285 #: ../../../src/InputState.cpp:427
286 msgid "Bar6"
287 msgstr ""
288
289 #: ../../../src/InputState.cpp:428
290 msgid "Bar7"
291 msgstr ""
292
293 #: ../../../src/InputState.cpp:429
294 msgid "Bar8"
295 msgstr ""
296
297 #: ../../../src/InputState.cpp:430
298 msgid "Bar9"
299 msgstr ""
300
301 #: ../../../src/InputState.cpp:431
302 msgid "Bar0"
303 msgstr ""
304
305 #: ../../../src/InputState.cpp:432 ../../../src/MenuActionBar.cpp:84
306 #: ../../../src/MenuCharacter.cpp:54
307 msgid "Character"
308 msgstr ""
309
310 #: ../../../src/InputState.cpp:433 ../../../src/MenuActionBar.cpp:85
311 #: ../../../src/MenuInventory.cpp:130 ../../../src/MenuVendor.cpp:59
312 msgid "Inventory"
313 msgstr ""
314
315 #: ../../../src/InputState.cpp:434 ../../../src/MenuActionBar.cpp:86
316 #: ../../../src/MenuPowers.cpp:158
317 msgid "Powers"
318 msgstr ""
319
320 #: ../../../src/InputState.cpp:435 ../../../src/MenuActionBar.cpp:87
321 #: ../../../src/MenuLog.cpp:72
322 msgid "Log"
323 msgstr ""
324
325 #: ../../../src/InputState.cpp:436
326 msgid "Main1"
327 msgstr ""
328
329 #: ../../../src/InputState.cpp:437
330 msgid "Main2"
331 msgstr ""
332
333 #: ../../../src/InputState.cpp:438
334 msgid "Ctrl"
335 msgstr ""
336
337 #: ../../../src/InputState.cpp:439
338 msgid "Shift"
339 msgstr ""
340
341 #: ../../../src/InputState.cpp:440
342 msgid "Alt"
343 msgstr ""
344
345 #: ../../../src/InputState.cpp:441 ../../../src/SDLInputState.cpp:675
346 msgid "Delete"
347 msgstr ""
348
349 #: ../../../src/InputState.cpp:442
350 msgid "ActionBar Accept"
351 msgstr ""
352
353 #: ../../../src/InputState.cpp:443
354 msgid "ActionBar Left"
355 msgstr ""
356
357 #: ../../../src/InputState.cpp:444
358 msgid "ActionBar Right"
359 msgstr ""
360
361 #: ../../../src/InputState.cpp:445
362 msgid "ActionBar Use"
363 msgstr ""
364
365 #: ../../../src/InputState.cpp:446
366 msgid "Developer Menu"
367 msgstr ""
368
369 #: ../../../src/InputState.cpp:448
370 msgid "Left Mouse"
371 msgstr ""
372
373 #: ../../../src/InputState.cpp:449
374 msgid "Middle Mouse"
375 msgstr ""
376
377 #: ../../../src/InputState.cpp:450
378 msgid "Right Mouse"
379 msgstr ""
380
381 #: ../../../src/InputState.cpp:451
382 msgid "Wheel Up"
383 msgstr ""
384
385 #: ../../../src/InputState.cpp:452
386 msgid "Wheel Down"
387 msgstr ""
388
389 #: ../../../src/InputState.cpp:453
390 msgid "Mouse X1"
391 msgstr ""
392
393 #: ../../../src/InputState.cpp:454
394 msgid "Mouse X2"
395 msgstr ""
396
397 #: ../../../src/ItemManager.cpp:475
398 msgid "Unknown Item"
399 msgstr ""
400
401 #: ../../../src/ItemManager.cpp:646 ../../../src/MenuPowers.cpp:959
402 #, c-format
403 msgid "%d%% Speed"
404 msgstr ""
405
406 #: ../../../src/ItemManager.cpp:650 ../../../src/MenuPowers.cpp:962
407 #, c-format
408 msgid "%d%% Attack Speed"
409 msgstr ""
410
411 #: ../../../src/ItemManager.cpp:672 ../../../src/MenuCharacter.cpp:352
412 #: ../../../src/MenuPowers.cpp:931
413 #, c-format
414 msgid "Resistance (%s)"
415 msgstr ""
416
417 #: ../../../src/ItemManager.cpp:682
418 #, c-format
419 msgid "Requires %s"
420 msgstr ""
421
422 #: ../../../src/ItemManager.cpp:731
423 msgid "Quest Item"
424 msgstr ""
425
426 #: ../../../src/ItemManager.cpp:758
427 #, c-format
428 msgid "Quality: %s"
429 msgstr ""
430
431 #: ../../../src/ItemManager.cpp:783
432 #, c-format
433 msgid "Absorb: %d-%d"
434 msgstr ""
435
436 #: ../../../src/ItemManager.cpp:785
437 #, c-format
438 msgid "Absorb: %d"
439 msgstr ""
440
441 #: ../../../src/ItemManager.cpp:825 ../../../src/MenuPowers.cpp:1206
442 #: ../../../src/MenuPowers.cpp:1209
443 #, c-format
444 msgid "Requires Level %d"
445 msgstr ""
446
447 #: ../../../src/ItemManager.cpp:836 ../../../src/MenuPowers.cpp:1198
448 #: ../../../src/MenuPowers.cpp:1200
449 #, c-format
450 msgid "Requires %s %d"
451 msgstr ""
452
453 #: ../../../src/ItemManager.cpp:847
454 #, c-format
455 msgid "Requires Class: %s"
456 msgstr ""
457
458 #: ../../../src/ItemManager.cpp:863 ../../../src/ItemManager.cpp:875
459 #, c-format
460 msgid "Buy Price: %d %s"
461 msgstr ""
462
463 #: ../../../src/ItemManager.cpp:865 ../../../src/ItemManager.cpp:877
464 #, c-format
465 msgid "Buy Price: %d %s each"
466 msgstr ""
467
468 #: ../../../src/ItemManager.cpp:885
469 #, c-format
470 msgid "Sell Price: %d %s"
471 msgstr ""
472
473 #: ../../../src/ItemManager.cpp:887
474 #, c-format
475 msgid "Sell Price: %d %s each"
476 msgstr ""
477
478 #: ../../../src/ItemManager.cpp:896
479 msgid "Set:"
480 msgstr ""
481
482 #: ../../../src/ItemManager.cpp:903
483 #, c-format
484 msgid "%d items:"
485 msgstr ""
486
487 #: ../../../src/ItemManager.cpp:915
488 #, c-format
489 msgid "Press [%s] to read"
490 msgstr ""
491
492 #: ../../../src/ItemManager.cpp:918
493 #, c-format
494 msgid "Press [%s] to use"
495 msgstr ""
496
497 #: ../../../src/MenuActionBar.cpp:239 ../../../src/MenuActionBar.cpp:246
498 #: ../../../src/MenuActionBar.cpp:249 ../../../src/MenuActionBar.cpp:255
499 #, c-format
500 msgid "Hotkey: %s"
501 msgstr ""
502
503 #: ../../../src/MenuActionBar.cpp:621
504 msgid "Not enough MP."
505 msgstr ""
506
507 #: ../../../src/MenuActiveEffects.cpp:124
508 #, c-format
509 msgid "x%d"
510 msgstr ""
511
512 #: ../../../src/MenuActiveEffects.cpp:219
513 msgid "Remaining:"
514 msgstr ""
515
516 #: ../../../src/MenuActiveEffects.cpp:225
517 #, c-format
518 msgid "x%d stacks"
519 msgstr ""
520
521 #: ../../../src/MenuCharacter.cpp:73 ../../../src/MenuCharacter.cpp:78
522 msgid "Name"
523 msgstr ""
524
525 #: ../../../src/MenuCharacter.cpp:74 ../../../src/MenuCharacter.cpp:79
526 msgid "Level"
527 msgstr ""
528
529 #: ../../../src/MenuCharacter.cpp:309
530 #, c-format
531 msgid "Available stat points: %d"
532 msgstr ""
533
534 #: ../../../src/MenuCharacter.cpp:353
535 #, c-format
536 msgid "Reduces the damage taken from \"%s\" elemental attacks."
537 msgstr ""
538
539 #: ../../../src/MenuCharacter.cpp:363 ../../../src/MenuManager.cpp:301
540 #, c-format
541 msgid "XP: %d"
542 msgstr ""
543
544 #: ../../../src/MenuCharacter.cpp:365
545 #, c-format
546 msgid "Next: %d"
547 msgstr ""
548
549 #: ../../../src/MenuCharacter.cpp:371
550 #, c-format
551 msgid "base (%d), bonus (%d)"
552 msgstr ""
553
554 #: ../../../src/MenuCharacter.cpp:379 ../../../src/MenuCharacter.cpp:393
555 msgid "Related stats:"
556 msgstr ""
557
558 #: ../../../src/MenuCharacter.cpp:419 ../../../src/MenuCharacter.cpp:443
559 #, c-format
560 msgid "Each level grants %d."
561 msgstr ""
562
563 #: ../../../src/MenuCharacter.cpp:423 ../../../src/MenuCharacter.cpp:447
564 #, c-format
565 msgid "Each point of %s grants %d."
566 msgstr ""
567
568 #: ../../../src/MenuConfig.cpp:122 ../../../src/MenuConfig.cpp:1171
569 msgid "Clear"
570 msgstr ""
571
572 #: ../../../src/MenuConfig.cpp:122 ../../../src/MenuConfig.cpp:1169
573 msgid "Assign:"
574 msgstr ""
575
576 #: ../../../src/MenuConfig.cpp:123 ../../../src/MenuConfig.cpp:245
577 msgid "Defaults"
578 msgstr ""
579
580 #: ../../../src/MenuConfig.cpp:123
581 msgid "Reset ALL settings?"
582 msgstr ""
583
584 #: ../../../src/MenuConfig.cpp:244 ../../../src/MenuNumPicker.cpp:49
585 msgid "OK"
586 msgstr ""
587
588 #: ../../../src/MenuConfig.cpp:248 ../../../src/MenuGameOver.cpp:72
589 msgid "Continue"
590 msgstr ""
591
592 #: ../../../src/MenuConfig.cpp:250
593 msgid "Save Game"
594 msgstr ""
595
596 #: ../../../src/MenuConfig.cpp:293
597 msgid "Default"
598 msgstr ""
599
600 #: ../../../src/MenuConfig.cpp:293
601 msgid ""
602 "Show all loot tooltips, except for those that would be obscured by the "
603 "player or an enemy. Temporarily show all loot tooltips with 'Alt'."
604 msgstr ""
605
606 #: ../../../src/MenuConfig.cpp:294
607 msgid "Show all"
608 msgstr ""
609
610 #: ../../../src/MenuConfig.cpp:294
611 msgid ""
612 "Always show loot tooltips. Temporarily hide all loot tooltips with 'Alt'."
613 msgstr ""
614
615 #: ../../../src/MenuConfig.cpp:295 ../../../src/MenuConfig.cpp:300
616 msgid "Hidden"
617 msgstr ""
618
619 #: ../../../src/MenuConfig.cpp:295
620 msgid ""
621 "Always hide loot tooltips, except for when a piece of loot is hovered with "
622 "the mouse cursor. Temporarily show all loot tooltips with 'Alt'."
623 msgstr ""
624
625 #: ../../../src/MenuConfig.cpp:298
626 msgid "Visible"
627 msgstr ""
628
629 #: ../../../src/MenuConfig.cpp:299
630 msgid "Visible (2x zoom)"
631 msgstr ""
632
633 #: ../../../src/MenuConfig.cpp:303
634 msgid ""
635 "Controls the type of warning to be activated when the player is below the "
636 "low health threshold."
637 msgstr ""
638
639 #: ../../../src/MenuConfig.cpp:304
640 msgid "- Display a message"
641 msgstr ""
642
643 #: ../../../src/MenuConfig.cpp:305
644 msgid "- Play a sound"
645 msgstr ""
646
647 #: ../../../src/MenuConfig.cpp:306
648 msgid "- Change the cursor"
649 msgstr ""
650
651 #: ../../../src/MenuConfig.cpp:308
652 msgid "Disabled"
653 msgstr ""
654
655 #: ../../../src/MenuConfig.cpp:309
656 msgid "All"
657 msgstr ""
658
659 #: ../../../src/MenuConfig.cpp:310
660 msgid "Message & Cursor"
661 msgstr ""
662
663 #: ../../../src/MenuConfig.cpp:311
664 msgid "Message & Sound"
665 msgstr ""
666
667 #: ../../../src/MenuConfig.cpp:312
668 msgid "Sound & Cursor"
669 msgstr ""
670
671 #: ../../../src/MenuConfig.cpp:313
672 msgid "Message"
673 msgstr ""
674
675 #: ../../../src/MenuConfig.cpp:314
676 msgid "Cursor"
677 msgstr ""
678
679 #: ../../../src/MenuConfig.cpp:315
680 msgid "Sound"
681 msgstr ""
682
683 #: ../../../src/MenuConfig.cpp:321
684 msgid ""
685 "When the player's health drops below the given threshold, the low health "
686 "notifications are triggered if one or more of them is enabled."
687 msgstr ""
688
689 #: ../../../src/MenuConfig.cpp:334 ../../../src/MenuConfig.cpp:1587
690 #: ../../../src/MenuGameOver.cpp:116
691 msgid "Exit"
692 msgstr ""
693
694 #: ../../../src/MenuConfig.cpp:335
695 msgid "Video"
696 msgstr ""
697
698 #: ../../../src/MenuConfig.cpp:336
699 msgid "Audio"
700 msgstr ""
701
702 #: ../../../src/MenuConfig.cpp:337
703 msgid "Interface"
704 msgstr ""
705
706 #: ../../../src/MenuConfig.cpp:338
707 msgid "Input"
708 msgstr ""
709
710 #: ../../../src/MenuConfig.cpp:339
711 msgid "Keybindings"
712 msgstr ""
713
714 #: ../../../src/MenuConfig.cpp:340
715 msgid "Mods"
716 msgstr ""
717
718 #: ../../../src/MenuConfig.cpp:352
719 msgid "Paused"
720 msgstr ""
721
722 #: ../../../src/MenuConfig.cpp:355
723 msgid "Time Played"
724 msgstr ""
725
726 #: ../../../src/MenuConfig.cpp:361
727 msgid "Renderer"
728 msgstr ""
729
730 #: ../../../src/MenuConfig.cpp:362
731 msgid "Full Screen Mode"
732 msgstr ""
733
734 #: ../../../src/MenuConfig.cpp:363
735 msgid "Hardware surfaces"
736 msgstr ""
737
738 #: ../../../src/MenuConfig.cpp:364
739 msgid "V-Sync"
740 msgstr ""
741
742 #: ../../../src/MenuConfig.cpp:365
743 msgid "Texture Filtering"
744 msgstr ""
745
746 #: ../../../src/MenuConfig.cpp:366
747 msgid "DPI scaling"
748 msgstr ""
749
750 #: ../../../src/MenuConfig.cpp:367
751 msgid "Parallax Layers"
752 msgstr ""
753
754 #: ../../../src/MenuConfig.cpp:368
755 msgid "Allow changing gamma"
756 msgstr ""
757
758 #: ../../../src/MenuConfig.cpp:369
759 msgid "Gamma"
760 msgstr ""
761
762 #: ../../../src/MenuConfig.cpp:371
763 msgid "Sound Volume"
764 msgstr ""
765
766 #: ../../../src/MenuConfig.cpp:372
767 msgid "Music Volume"
768 msgstr ""
769
770 #: ../../../src/MenuConfig.cpp:374
771 msgid "Language"
772 msgstr ""
773
774 #: ../../../src/MenuConfig.cpp:375
775 msgid "Show FPS"
776 msgstr ""
777
778 #: ../../../src/MenuConfig.cpp:376
779 msgid "Hardware mouse cursor"
780 msgstr ""
781
782 #: ../../../src/MenuConfig.cpp:377
783 msgid "Colorblind Mode"
784 msgstr ""
785
786 #: ../../../src/MenuConfig.cpp:378
787 msgid "Developer Mode"
788 msgstr ""
789
790 #: ../../../src/MenuConfig.cpp:379
791 msgid "Subtitles"
792 msgstr ""
793
794 #: ../../../src/MenuConfig.cpp:380
795 msgid "Loot tooltip visibility"
796 msgstr ""
797
798 #: ../../../src/MenuConfig.cpp:381
799 msgid "Mini-map mode"
800 msgstr ""
801
802 #: ../../../src/MenuConfig.cpp:382
803 msgid "Always show stat bar labels"
804 msgstr ""
805
806 #: ../../../src/MenuConfig.cpp:383
807 msgid "Allow stat bar auto-hiding"
808 msgstr ""
809
810 #: ../../../src/MenuConfig.cpp:384
811 msgid "Show combat text"
812 msgstr ""
813
814 #: ../../../src/MenuConfig.cpp:385
815 msgid "Automatically equip items"
816 msgstr ""
817
818 #: ../../../src/MenuConfig.cpp:386
819 msgid "Show hidden entity markers"
820 msgstr ""
821
822 #: ../../../src/MenuConfig.cpp:387
823 msgid "Low health notification"
824 msgstr ""
825
826 #: ../../../src/MenuConfig.cpp:388
827 msgid "Low health threshold"
828 msgstr ""
829
830 #: ../../../src/MenuConfig.cpp:389
831 msgid "Show item comparison tooltips"
832 msgstr ""
833
834 #: ../../../src/MenuConfig.cpp:392 ../../../src/MenuMovementType.cpp:94
835 #: ../../../src/MenuMovementType.cpp:131
836 msgid "Joystick"
837 msgstr ""
838
839 #: ../../../src/MenuConfig.cpp:393
840 msgid "Move hero using mouse"
841 msgstr ""
842
843 #: ../../../src/MenuConfig.cpp:394
844 msgid "Mouse aim"
845 msgstr ""
846
847 #: ../../../src/MenuConfig.cpp:395
848 msgid "Do not use mouse"
849 msgstr ""
850
851 #: ../../../src/MenuConfig.cpp:396
852 msgid "Swap mouse movement button"
853 msgstr ""
854
855 #: ../../../src/MenuConfig.cpp:397
856 msgid "Attack with mouse movement"
857 msgstr ""
858
859 #: ../../../src/MenuConfig.cpp:398
860 msgid "Joystick Deadzone"
861 msgstr ""
862
863 #: ../../../src/MenuConfig.cpp:408
864 #, c-format
865 msgid "Primary binding: %s"
866 msgstr ""
867
868 #: ../../../src/MenuConfig.cpp:409
869 #, c-format
870 msgid "Alternate binding: %s"
871 msgstr ""
872
873 #: ../../../src/MenuConfig.cpp:410
874 #, c-format
875 msgid "Joystick binding: %s"
876 msgstr ""
877
878 #: ../../../src/MenuConfig.cpp:511
879 msgid ""
880 "Will try to store surfaces in video memory versus system memory. The effect "
881 "this has on performance depends on the renderer."
882 msgstr ""
883
884 #: ../../../src/MenuConfig.cpp:512
885 msgid ""
886 "Prevents screen tearing. Disable if you experience \"stuttering\" in "
887 "windowed mode or input lag."
888 msgstr ""
889
890 #: ../../../src/MenuConfig.cpp:513
891 msgid ""
892 "When enabled, this uses the screen DPI in addition to the window dimensions "
893 "to scale the rendering resolution. Otherwise, only the window dimensions are"
894 " used."
895 msgstr ""
896
897 #: ../../../src/MenuConfig.cpp:514
898 msgid ""
899 "This enables parallax (non-tile) layers. Disabling this setting can improve "
900 "performance in some cases."
901 msgstr ""
902
903 #: ../../../src/MenuConfig.cpp:515
904 msgid ""
905 "Enables the below setting that controls the screen gamma level. The behavior"
906 " of the gamma setting can vary between platforms."
907 msgstr ""
908
909 #: ../../../src/MenuConfig.cpp:516
910 msgid ""
911 "Provides additional text for information that is primarily conveyed through "
912 "color."
913 msgstr ""
914
915 #: ../../../src/MenuConfig.cpp:517
916 msgid ""
917 "Some mods will automatically hide the stat bars when they are inactive. "
918 "Disabling this option will keep them displayed at all times."
919 msgstr ""
920
921 #: ../../../src/MenuConfig.cpp:518
922 msgid ""
923 "When enabled, empty equipment slots will be filled with applicable items "
924 "when they are obtained."
925 msgstr ""
926
927 #: ../../../src/MenuConfig.cpp:519
928 msgid ""
929 "Shows a marker above enemies, allies, and the player when they are obscured "
930 "by tall objects."
931 msgstr ""
932
933 #: ../../../src/MenuConfig.cpp:520
934 msgid ""
935 "When enabled, tooltips for equipped items of the same type are shown next to"
936 " standard item tooltips."
937 msgstr ""
938
939 #: ../../../src/MenuConfig.cpp:521
940 msgid ""
941 "This allows the game to be controlled entirely with the keyboard (or "
942 "joystick)."
943 msgstr ""
944
945 #: ../../../src/MenuConfig.cpp:522
946 msgid ""
947 "When 'Move hero using mouse' is enabled, this setting controls if 'Main1' or"
948 " 'Main2' is used to move the hero. If enabled, 'Main2' will move the hero "
949 "instead of 'Main1'."
950 msgstr ""
951
952 #: ../../../src/MenuConfig.cpp:523
953 msgid ""
954 "When 'Move hero using mouse' is enabled, this setting controls if the Power "
955 "assigned to the movement button can be used by targeting an enemy. If this "
956 "setting is disabled, it is required to use 'Shift' to access the Power "
957 "assigned to the movement button."
958 msgstr ""
959
960 #: ../../../src/MenuConfig.cpp:524
961 msgid ""
962 "The player's attacks will be aimed in the direction of the mouse cursor when"
963 " this is enabled."
964 msgstr ""
965
966 #: ../../../src/MenuConfig.cpp:575
967 msgid "Active Mods"
968 msgstr ""
969
970 #: ../../../src/MenuConfig.cpp:584
971 msgid "Available Mods"
972 msgstr ""
973
974 #: ../../../src/MenuConfig.cpp:603
975 msgid "<< Disable"
976 msgstr ""
977
978 #: ../../../src/MenuConfig.cpp:609
979 msgid "Enable >>"
980 msgstr ""
981
982 #: ../../../src/MenuConfig.cpp:1444
983 msgid "Version:"
984 msgstr ""
985
986 #: ../../../src/MenuConfig.cpp:1449
987 msgid "Game:"
988 msgstr ""
989
990 #: ../../../src/MenuConfig.cpp:1454
991 msgid "Engine version:"
992 msgstr ""
993
994 #: ../../../src/MenuConfig.cpp:1462
995 msgid "Requires mods:"
996 msgstr ""
997
998 #: ../../../src/MenuConfig.cpp:1570 ../../../src/SDLInputState.cpp:748
999 msgid "(none)"
1000 msgstr ""
1001
1002 #: ../../../src/MenuConfig.cpp:1587 ../../../src/MenuGameOver.cpp:73
1003 msgid "Save & Exit"
1004 msgstr ""
1005
1006 #: ../../../src/MenuDevConsole.cpp:65
1007 msgid "Execute"
1008 msgstr ""
1009
1010 #: ../../../src/MenuDevConsole.cpp:103 ../../../src/MenuDevConsole.cpp:153
1011 msgid "Developer Console"
1012 msgstr ""
1013
1014 #: ../../../src/MenuDevConsole.cpp:143
1015 #, c-format
1016 msgid "Use '%s' to inspect with the cursor."
1017 msgstr ""
1018
1019 #: ../../../src/MenuDevConsole.cpp:148
1020 msgid "Arguments with spaces should be enclosed with double quotes. Example:"
1021 msgstr ""
1022
1023 #: ../../../src/MenuDevConsole.cpp:149
1024 msgid "Type 'help' to get a list of commands."
1025 msgstr ""
1026
1027 #: ../../../src/MenuDevConsole.cpp:211 ../../../src/MenuDevConsole.cpp:215
1028 msgid "px"
1029 msgstr ""
1030
1031 #: ../../../src/MenuDevConsole.cpp:226
1032 msgid "Distance"
1033 msgstr ""
1034
1035 #: ../../../src/MenuDevConsole.cpp:241 ../../../src/MenuDevConsole.cpp:289
1036 #: ../../../src/MenuDevConsole.cpp:303
1037 msgid "Entity"
1038 msgstr ""
1039
1040 #: ../../../src/MenuDevConsole.cpp:263 ../../../src/MenuDevConsole.cpp:270
1041 msgid "none"
1042 msgstr ""
1043
1044 #: ../../../src/MenuDevConsole.cpp:264 ../../../src/MenuDevConsole.cpp:266
1045 msgid "wall"
1046 msgstr ""
1047
1048 #: ../../../src/MenuDevConsole.cpp:265 ../../../src/MenuDevConsole.cpp:267
1049 msgid "short wall / pit"
1050 msgstr ""
1051
1052 #: ../../../src/MenuDevConsole.cpp:268
1053 msgid "entity"
1054 msgstr ""
1055
1056 #: ../../../src/MenuDevConsole.cpp:269
1057 msgid "entity, ally"
1058 msgstr ""
1059
1060 #: ../../../src/MenuDevConsole.cpp:276
1061 msgid "Tile"
1062 msgstr ""
1063
1064 #: ../../../src/MenuDevConsole.cpp:377
1065 msgid "adds a power to the action bar"
1066 msgstr ""
1067
1068 #: ../../../src/MenuDevConsole.cpp:378
1069 msgid "turns on/off the display of the FPS counter"
1070 msgstr ""
1071
1072 #: ../../../src/MenuDevConsole.cpp:379
1073 msgid "turns on/off all of the HUD elements"
1074 msgstr ""
1075
1076 #: ../../../src/MenuDevConsole.cpp:380
1077 msgid "turns on/off the developer hud"
1078 msgstr ""
1079
1080 #: ../../../src/MenuDevConsole.cpp:381
1081 msgid ""
1082 "Prints a list of powers that match a search term. No search term will list "
1083 "all items"
1084 msgstr ""
1085
1086 #: ../../../src/MenuDevConsole.cpp:382
1087 msgid "Prints out all the map filenames located in the \"maps/\" directory."
1088 msgstr ""
1089
1090 #: ../../../src/MenuDevConsole.cpp:383
1091 msgid ""
1092 "Prints out the active campaign statuses that match a search term. No search "
1093 "term will list all active statuses"
1094 msgstr ""
1095
1096 #: ../../../src/MenuDevConsole.cpp:384
1097 msgid ""
1098 "Prints a list of items that match a search term. No search term will list "
1099 "all items"
1100 msgstr ""
1101
1102 #: ../../../src/MenuDevConsole.cpp:385
1103 msgid ""
1104 "parses a series of event components and executes them as a single event"
1105 msgstr ""
1106
1107 #: ../../../src/MenuDevConsole.cpp:386
1108 msgid "clears the command history"
1109 msgstr ""
1110
1111 #: ../../../src/MenuDevConsole.cpp:387
1112 msgid "displays this text"
1113 msgstr ""
1114
1115 #: ../../../src/MenuDevConsole.cpp:394
1116 msgid "Toggled the developer hud"
1117 msgstr ""
1118
1119 #: ../../../src/MenuDevConsole.cpp:398
1120 msgid "Toggled the hud"
1121 msgstr ""
1122
1123 #: ../../../src/MenuDevConsole.cpp:402
1124 msgid "Toggled the FPS counter"
1125 msgstr ""
1126
1127 #: ../../../src/MenuDevConsole.cpp:552
1128 msgid "ERROR: Incorrect number of arguments"
1129 msgstr ""
1130
1131 #: ../../../src/MenuDevConsole.cpp:554 ../../../src/MenuDevConsole.cpp:582
1132 msgid "HINT:"
1133 msgstr ""
1134
1135 #: ../../../src/MenuDevConsole.cpp:554
1136 msgid "<id>"
1137 msgstr ""
1138
1139 #: ../../../src/MenuDevConsole.cpp:570
1140 #, c-format
1141 msgid "ERROR: '%s' is not a valid event key"
1142 msgstr ""
1143
1144 #: ../../../src/MenuDevConsole.cpp:580
1145 msgid "ERROR: Too few arguments"
1146 msgstr ""
1147
1148 #: ../../../src/MenuDevConsole.cpp:582
1149 msgid "<key>=<val> <key>=<val> ..."
1150 msgstr ""
1151
1152 #: ../../../src/MenuDevConsole.cpp:587
1153 msgid "ERROR: Unknown command"
1154 msgstr ""
1155
1156 #: ../../../src/MenuDevConsole.cpp:589
1157 msgid "HINT: Type help"
1158 msgstr ""
1159
1160 #: ../../../src/MenuEnemy.cpp:162
1161 #, c-format
1162 msgid "%s level %d"
1163 msgstr ""
1164
1165 #: ../../../src/MenuEnemy.cpp:186
1166 msgid "Dead"
1167 msgstr ""
1168
1169 #: ../../../src/MenuEnemy.cpp:188
1170 msgid "Destroyed"
1171 msgstr ""
1172
1173 #: ../../../src/MenuGameOver.cpp:69
1174 msgid "Game Over"
1175 msgstr ""
1176
1177 #: ../../../src/MenuInventory.cpp:178
1178 #, c-format
1179 msgid "Lost %d%% of %s."
1180 msgstr ""
1181
1182 #: ../../../src/MenuInventory.cpp:185
1183 #, c-format
1184 msgid "Lost %d%% of total XP."
1185 msgstr ""
1186
1187 #: ../../../src/MenuInventory.cpp:190
1188 #, c-format
1189 msgid "Lost %d%% of current level XP."
1190 msgstr ""
1191
1192 #: ../../../src/MenuInventory.cpp:216
1193 #, c-format
1194 msgid "Lost %s."
1195 msgstr ""
1196
1197 #: ../../../src/MenuInventory.cpp:258 ../../../src/MenuStash.cpp:276
1198 #, c-format
1199 msgid "%d %s"
1200 msgstr ""
1201
1202 #: ../../../src/MenuInventory.cpp:301
1203 msgid "Pick up item(s):"
1204 msgstr ""
1205
1206 #: ../../../src/MenuInventory.cpp:302
1207 msgid "Use or equip item:"
1208 msgstr ""
1209
1210 #: ../../../src/MenuInventory.cpp:303
1211 #, c-format
1212 msgid "%s modifiers"
1213 msgstr ""
1214
1215 #: ../../../src/MenuInventory.cpp:304
1216 msgid "Select a quantity of item:"
1217 msgstr ""
1218
1219 #: ../../../src/MenuInventory.cpp:307
1220 msgid "Stash item stack:"
1221 msgstr ""
1222
1223 #: ../../../src/MenuInventory.cpp:309
1224 msgid "Sell item stack:"
1225 msgstr ""
1226
1227 #: ../../../src/MenuInventory.cpp:576
1228 msgid "You don't have enough of the required item."
1229 msgstr ""
1230
1231 #: ../../../src/MenuInventory.cpp:588
1232 msgid "You can't use this item right now."
1233 msgstr ""
1234
1235 #: ../../../src/MenuInventory.cpp:600
1236 msgid "This item can only be used from the action bar."
1237 msgstr ""
1238
1239 #: ../../../src/MenuInventory.cpp:718
1240 msgid "Inventory is full."
1241 msgstr ""
1242
1243 #: ../../../src/MenuInventory.cpp:843
1244 #, c-format
1245 msgid "Not enough %s."
1246 msgstr ""
1247
1248 #: ../../../src/MenuInventory.cpp:863 ../../../src/MenuInventory.cpp:870
1249 msgid "This item can not be sold."
1250 msgstr ""
1251
1252 #: ../../../src/MenuLog.cpp:91
1253 msgid "Notes"
1254 msgstr ""
1255
1256 #: ../../../src/MenuLog.cpp:92
1257 msgid "Quests"
1258 msgstr ""
1259
1260 #: ../../../src/MenuManager.cpp:305
1261 #, c-format
1262 msgid "XP: %d/%d"
1263 msgstr ""
1264
1265 #: ../../../src/MenuManager.cpp:875
1266 msgid "This item can not be dropped."
1267 msgstr ""
1268
1269 #: ../../../src/MenuManager.cpp:1501
1270 msgid "Equipped"
1271 msgstr ""
1272
1273 #: ../../../src/MenuMovementType.cpp:87
1274 msgid "Select a Movement Type"
1275 msgstr ""
1276
1277 #: ../../../src/MenuMovementType.cpp:89
1278 msgid "Can be changed later in the Configuration menu."
1279 msgstr ""
1280
1281 #: ../../../src/MenuMovementType.cpp:92 ../../../src/MenuMovementType.cpp:122
1282 msgid "Keyboard"
1283 msgstr ""
1284
1285 #: ../../../src/MenuMovementType.cpp:93 ../../../src/MenuMovementType.cpp:128
1286 msgid "Mouse"
1287 msgstr ""
1288
1289 #: ../../../src/MenuMovementType.cpp:129
1290 msgid "Button"
1291 msgstr ""
1292
1293 #: ../../../src/MenuNumPicker.cpp:59
1294 msgid "Enter amount:"
1295 msgstr ""
1296
1297 #: ../../../src/MenuPowers.cpp:872
1298 msgid "Passive"
1299 msgstr ""
1300
1301 #: ../../../src/MenuPowers.cpp:879
1302 #, c-format
1303 msgid "Costs %d MP"
1304 msgstr ""
1305
1306 #: ../../../src/MenuPowers.cpp:883
1307 #, c-format
1308 msgid "Costs %d HP"
1309 msgstr ""
1310
1311 #: ../../../src/MenuPowers.cpp:887
1312 msgid "Cooldown:"
1313 msgstr ""
1314
1315 #: ../../../src/MenuPowers.cpp:938 ../../../src/MenuPowers.cpp:941
1316 msgid "Damage per second"
1317 msgstr ""
1318
1319 #: ../../../src/MenuPowers.cpp:944 ../../../src/MenuPowers.cpp:947
1320 msgid "HP per second"
1321 msgstr ""
1322
1323 #: ../../../src/MenuPowers.cpp:950 ../../../src/MenuPowers.cpp:953
1324 msgid "MP per second"
1325 msgstr ""
1326
1327 #: ../../../src/MenuPowers.cpp:957
1328 msgid "Immobilize"
1329 msgstr ""
1330
1331 #: ../../../src/MenuPowers.cpp:965
1332 msgid "Immunity"
1333 msgstr ""
1334
1335 #: ../../../src/MenuPowers.cpp:968
1336 msgid "Immunity to damage over time"
1337 msgstr ""
1338
1339 #: ../../../src/MenuPowers.cpp:971
1340 msgid "Immunity to slow"
1341 msgstr ""
1342
1343 #: ../../../src/MenuPowers.cpp:974
1344 msgid "Immunity to stun"
1345 msgstr ""
1346
1347 #: ../../../src/MenuPowers.cpp:977
1348 msgid "Immunity to HP steal"
1349 msgstr ""
1350
1351 #: ../../../src/MenuPowers.cpp:980
1352 msgid "Immunity to MP steal"
1353 msgstr ""
1354
1355 #: ../../../src/MenuPowers.cpp:983
1356 msgid "Immunity to knockback"
1357 msgstr ""
1358
1359 #: ../../../src/MenuPowers.cpp:986
1360 msgid "Immunity to damage reflection"
1361 msgstr ""
1362
1363 #: ../../../src/MenuPowers.cpp:992
1364 msgid "Stun"
1365 msgstr ""
1366
1367 #: ../../../src/MenuPowers.cpp:995
1368 msgid "Automatic revive on death"
1369 msgstr ""
1370
1371 #: ../../../src/MenuPowers.cpp:998
1372 msgid "Convert"
1373 msgstr ""
1374
1375 #: ../../../src/MenuPowers.cpp:1001
1376 msgid "Fear"
1377 msgstr ""
1378
1379 #: ../../../src/MenuPowers.cpp:1004
1380 msgid "Lifespan"
1381 msgstr ""
1382
1383 #: ../../../src/MenuPowers.cpp:1028
1384 msgid "Magical Shield"
1385 msgstr ""
1386
1387 #: ../../../src/MenuPowers.cpp:1057
1388 msgid "Healing"
1389 msgstr ""
1390
1391 #: ../../../src/MenuPowers.cpp:1060
1392 msgid "Knockback"
1393 msgstr ""
1394
1395 #: ../../../src/MenuPowers.cpp:1084
1396 #, c-format
1397 msgid "%d%% chance"
1398 msgstr ""
1399
1400 #: ../../../src/MenuPowers.cpp:1136
1401 msgid "Base Accuracy"
1402 msgstr ""
1403
1404 #: ../../../src/MenuPowers.cpp:1156
1405 msgid "Base Critical Chance"
1406 msgstr ""
1407
1408 #: ../../../src/MenuPowers.cpp:1164
1409 msgid "Ignores Absorbtion"
1410 msgstr ""
1411
1412 #: ../../../src/MenuPowers.cpp:1169
1413 msgid "Ignores Avoidance"
1414 msgstr ""
1415
1416 #: ../../../src/MenuPowers.cpp:1174
1417 #, c-format
1418 msgid "%d%% Chance to crit slowed targets"
1419 msgstr ""
1420
1421 #: ../../../src/MenuPowers.cpp:1179
1422 #, c-format
1423 msgid "Elemental Damage (%s)"
1424 msgstr ""
1425
1426 #: ../../../src/MenuPowers.cpp:1188
1427 #, c-format
1428 msgid "Requires a %s"
1429 msgstr ""
1430
1431 #: ../../../src/MenuPowers.cpp:1226 ../../../src/MenuPowers.cpp:1229
1432 #, c-format
1433 msgid "Requires Power: %s"
1434 msgstr ""
1435
1436 #: ../../../src/MenuPowers.cpp:1238
1437 msgid "Click to Unlock (uses 1 Skill Point)"
1438 msgstr ""
1439
1440 #: ../../../src/MenuPowers.cpp:1242 ../../../src/MenuPowers.cpp:1244
1441 msgid "Requires 1 Skill Point"
1442 msgstr ""
1443
1444 #: ../../../src/MenuPowers.cpp:1444
1445 #, c-format
1446 msgid "Available skill points: %d"
1447 msgstr ""
1448
1449 #: ../../../src/MenuPowers.cpp:1476
1450 msgid "Next Level:"
1451 msgstr ""
1452
1453 #: ../../../src/MenuStash.cpp:80 ../../../src/MenuStash.cpp:161
1454 msgid "Stash"
1455 msgstr ""
1456
1457 #: ../../../src/MenuStash.cpp:174 ../../../src/MenuStash.cpp:188
1458 msgid "Private"
1459 msgstr ""
1460
1461 #: ../../../src/MenuStash.cpp:175
1462 msgid "Shared"
1463 msgstr ""
1464
1465 #: ../../../src/MenuStash.cpp:340
1466 msgid "This item can not be stored in the stash."
1467 msgstr ""
1468
1469 #: ../../../src/MenuStash.cpp:345
1470 msgid "This item can not be stored in the private stash."
1471 msgstr ""
1472
1473 #: ../../../src/MenuStash.cpp:350
1474 msgid "This item can not be stored in the shared stash."
1475 msgstr ""
1476
1477 #: ../../../src/MenuStash.cpp:360
1478 msgid "Stash is full."
1479 msgstr ""
1480
1481 #: ../../../src/MenuStash.cpp:414
1482 #, c-format
1483 msgid "Can not store item in stash: %s"
1484 msgstr ""
1485
1486 #: ../../../src/MenuTalker.cpp:448
1487 #, c-format
1488 msgid "<dialog node %d>"
1489 msgstr ""
1490
1491 #: ../../../src/MenuTalker.cpp:456
1492 msgid "Trade"
1493 msgstr ""
1494
1495 #: ../../../src/MenuVendor.cpp:60
1496 msgid "Buyback"
1497 msgstr ""
1498
1499 #: ../../../src/MenuVendor.cpp:283
1500 msgid "Vendor"
1501 msgstr ""
1502
1503 #: ../../../src/PowerManager.cpp:1208
1504 #, c-format
1505 msgid "+%d Shield"
1506 msgstr ""
1507
1508 #: ../../../src/PowerManager.cpp:1465
1509 msgid "You are already transformed, untransform first."
1510 msgstr ""
1511
1512 #: ../../../src/PowerManager.cpp:1477
1513 msgid "Could not untransform at this position."
1514 msgstr ""
1515
1516 #: ../../../src/QuestLog.cpp:234
1517 msgid "Completed Quests"
1518 msgstr ""
1519
1520 #: ../../../src/SaveLoad.cpp:250 ../../../src/SaveLoad.cpp:251
1521 msgid "Game saved."
1522 msgstr ""
1523
1524 #: ../../../src/SDLInputState.cpp:643
1525 msgid "BkSp"
1526 msgstr ""
1527
1528 #: ../../../src/SDLInputState.cpp:644
1529 msgid "Caps"
1530 msgstr ""
1531
1532 #: ../../../src/SDLInputState.cpp:645
1533 msgid "Del"
1534 msgstr ""
1535
1536 #: ../../../src/SDLInputState.cpp:647 ../../../src/SDLInputState.cpp:677
1537 msgid "End"
1538 msgstr ""
1539
1540 #: ../../../src/SDLInputState.cpp:648
1541 msgid "Esc"
1542 msgstr ""
1543
1544 #: ../../../src/SDLInputState.cpp:649 ../../../src/SDLInputState.cpp:679
1545 msgid "Home"
1546 msgstr ""
1547
1548 #: ../../../src/SDLInputState.cpp:650
1549 msgid "Ins"
1550 msgstr ""
1551
1552 #: ../../../src/SDLInputState.cpp:651
1553 msgid "LAlt"
1554 msgstr ""
1555
1556 #: ../../../src/SDLInputState.cpp:652
1557 msgid "LCtrl"
1558 msgstr ""
1559
1560 #: ../../../src/SDLInputState.cpp:654
1561 msgid "LShft"
1562 msgstr ""
1563
1564 #: ../../../src/SDLInputState.cpp:655
1565 msgid "Num"
1566 msgstr ""
1567
1568 #: ../../../src/SDLInputState.cpp:656
1569 msgid "PgDn"
1570 msgstr ""
1571
1572 #: ../../../src/SDLInputState.cpp:657
1573 msgid "PgUp"
1574 msgstr ""
1575
1576 #: ../../../src/SDLInputState.cpp:658 ../../../src/SDLInputState.cpp:688
1577 msgid "Pause"
1578 msgstr ""
1579
1580 #: ../../../src/SDLInputState.cpp:659
1581 msgid "Print"
1582 msgstr ""
1583
1584 #: ../../../src/SDLInputState.cpp:660
1585 msgid "RAlt"
1586 msgstr ""
1587
1588 #: ../../../src/SDLInputState.cpp:661
1589 msgid "RCtrl"
1590 msgstr ""
1591
1592 #: ../../../src/SDLInputState.cpp:662
1593 msgid "Ret"
1594 msgstr ""
1595
1596 #: ../../../src/SDLInputState.cpp:664
1597 msgid "RShft"
1598 msgstr ""
1599
1600 #: ../../../src/SDLInputState.cpp:665
1601 msgid "SLock"
1602 msgstr ""
1603
1604 #: ../../../src/SDLInputState.cpp:666
1605 msgid "Spc"
1606 msgstr ""
1607
1608 #: ../../../src/SDLInputState.cpp:667 ../../../src/SDLInputState.cpp:697
1609 msgid "Tab"
1610 msgstr ""
1611
1612 #: ../../../src/SDLInputState.cpp:673
1613 msgid "Backspace"
1614 msgstr ""
1615
1616 #: ../../../src/SDLInputState.cpp:674
1617 msgid "CapsLock"
1618 msgstr ""
1619
1620 #: ../../../src/SDLInputState.cpp:678
1621 msgid "Escape"
1622 msgstr ""
1623
1624 #: ../../../src/SDLInputState.cpp:680
1625 msgid "Insert"
1626 msgstr ""
1627
1628 #: ../../../src/SDLInputState.cpp:681
1629 msgid "Left Alt"
1630 msgstr ""
1631
1632 #: ../../../src/SDLInputState.cpp:682
1633 msgid "Left Ctrl"
1634 msgstr ""
1635
1636 #: ../../../src/SDLInputState.cpp:684
1637 msgid "Left Shift"
1638 msgstr ""
1639
1640 #: ../../../src/SDLInputState.cpp:685
1641 msgid "NumLock"
1642 msgstr ""
1643
1644 #: ../../../src/SDLInputState.cpp:686
1645 msgid "PageDown"
1646 msgstr ""
1647
1648 #: ../../../src/SDLInputState.cpp:687
1649 msgid "PageUp"
1650 msgstr ""
1651
1652 #: ../../../src/SDLInputState.cpp:689
1653 msgid "PrintScreen"
1654 msgstr ""
1655
1656 #: ../../../src/SDLInputState.cpp:690
1657 msgid "Right Alt"
1658 msgstr ""
1659
1660 #: ../../../src/SDLInputState.cpp:691
1661 msgid "Right Ctrl"
1662 msgstr ""
1663
1664 #: ../../../src/SDLInputState.cpp:692
1665 msgid "Return"
1666 msgstr ""
1667
1668 #: ../../../src/SDLInputState.cpp:694
1669 msgid "Right Shift"
1670 msgstr ""
1671
1672 #: ../../../src/SDLInputState.cpp:695
1673 msgid "ScrollLock"
1674 msgstr ""
1675
1676 #: ../../../src/SDLInputState.cpp:696
1677 msgid "Space"
1678 msgstr ""
1679
1680 #: ../../../src/SDLInputState.cpp:710
1681 #, c-format
1682 msgid "M%d"
1683 msgstr ""
1684
1685 #: ../../../src/SDLInputState.cpp:716
1686 #, c-format
1687 msgid "Mouse %d"
1688 msgstr ""
1689
1690 #: ../../../src/SDLInputState.cpp:726
1691 #, c-format
1692 msgid "JX%d-"
1693 msgstr ""
1694
1695 #: ../../../src/SDLInputState.cpp:728
1696 #, c-format
1697 msgid "Axis %d -"
1698 msgstr ""
1699
1700 #: ../../../src/SDLInputState.cpp:732
1701 #, c-format
1702 msgid "JX%d+"
1703 msgstr ""
1704
1705 #: ../../../src/SDLInputState.cpp:734
1706 #, c-format
1707 msgid "Axis %d +"
1708 msgstr ""
1709
1710 #: ../../../src/SDLInputState.cpp:739
1711 #, c-format
1712 msgid "JB%d"
1713 msgstr ""
1714
1715 #: ../../../src/SDLInputState.cpp:741
1716 #, c-format
1717 msgid "Button %d"
1718 msgstr ""
1719
1720 #: ../../../src/SDLInputState.cpp:787
1721 msgid "Touch control D-Pad"
1722 msgstr ""
1723
1724 #: ../../../src/SDLInputState.cpp:810
1725 msgid "Touch control buttons"
1726 msgstr ""
1727
1728 #: ../../../src/SDLInputState.cpp:824
1729 msgid "Tap"
1730 msgstr ""
1731
1732 #: ../../../src/SDLInputState.cpp:876 ../../../src/SDLInputState.cpp:878
1733 #, c-format
1734 msgid "Can not bind: %s"
1735 msgstr ""
1736
1737 #: ../../../src/SDLInputState.cpp:890 ../../../src/SDLInputState.cpp:894
1738 #: ../../../src/SDLInputState.cpp:898
1739 #, c-format
1740 msgid "'%s' is no longer bound to:"
1741 msgstr ""
1742
1743 #: ../../../src/Stats.cpp:38
1744 msgid "Max HP"
1745 msgstr ""
1746
1747 #: ../../../src/Stats.cpp:39
1748 msgid "Total amount of HP."
1749 msgstr ""
1750
1751 #: ../../../src/Stats.cpp:43
1752 msgid "HP Regen"
1753 msgstr ""
1754
1755 #: ../../../src/Stats.cpp:44
1756 msgid "Ticks of HP regen per minute."
1757 msgstr ""
1758
1759 #: ../../../src/Stats.cpp:48
1760 msgid "Max MP"
1761 msgstr ""
1762
1763 #: ../../../src/Stats.cpp:49
1764 msgid "Total amount of MP."
1765 msgstr ""
1766
1767 #: ../../../src/Stats.cpp:53
1768 msgid "MP Regen"
1769 msgstr ""
1770
1771 #: ../../../src/Stats.cpp:54
1772 msgid "Ticks of MP regen per minute."
1773 msgstr ""
1774
1775 #: ../../../src/Stats.cpp:58
1776 msgid "Accuracy"
1777 msgstr ""
1778
1779 #: ../../../src/Stats.cpp:59
1780 msgid ""
1781 "Accuracy rating. The enemy's Avoidance rating is subtracted from this value "
1782 "to calculate your likeliness to land a direct hit."
1783 msgstr ""
1784
1785 #: ../../../src/Stats.cpp:63
1786 msgid "Avoidance"
1787 msgstr ""
1788
1789 #: ../../../src/Stats.cpp:64
1790 msgid ""
1791 "Avoidance rating. This value is subtracted from the enemy's Accuracy rating "
1792 "to calculate their likeliness to land a direct hit."
1793 msgstr ""
1794
1795 #: ../../../src/Stats.cpp:68
1796 msgid "Absorb Min"
1797 msgstr ""
1798
1799 #: ../../../src/Stats.cpp:69 ../../../src/Stats.cpp:74
1800 msgid "Reduces the amount of damage taken."
1801 msgstr ""
1802
1803 #: ../../../src/Stats.cpp:73
1804 msgid "Absorb Max"
1805 msgstr ""
1806
1807 #: ../../../src/Stats.cpp:78
1808 msgid "Critical Hit Chance"
1809 msgstr ""
1810
1811 #: ../../../src/Stats.cpp:79
1812 msgid "Chance for an attack to do extra damage."
1813 msgstr ""
1814
1815 #: ../../../src/Stats.cpp:83
1816 msgid "Bonus XP"
1817 msgstr ""
1818
1819 #: ../../../src/Stats.cpp:84
1820 msgid "Increases the XP gained per kill."
1821 msgstr ""
1822
1823 #: ../../../src/Stats.cpp:88
1824 #, c-format
1825 msgid "Bonus %s"
1826 msgstr ""
1827
1828 #: ../../../src/Stats.cpp:89
1829 #, c-format
1830 msgid "Increases the %s found per drop."
1831 msgstr ""
1832
1833 #: ../../../src/Stats.cpp:93
1834 msgid "Item Find Chance"
1835 msgstr ""
1836
1837 #: ../../../src/Stats.cpp:94
1838 msgid "Increases the chance that an enemy will drop an item."
1839 msgstr ""
1840
1841 #: ../../../src/Stats.cpp:98
1842 msgid "Stealth"
1843 msgstr ""
1844
1845 #: ../../../src/Stats.cpp:99
1846 msgid "Increases your ability to move undetected."
1847 msgstr ""
1848
1849 #: ../../../src/Stats.cpp:103
1850 msgid "Poise"
1851 msgstr ""
1852
1853 #: ../../../src/Stats.cpp:104
1854 msgid "Reduces your chance of stumbling when hit."
1855 msgstr ""
1856
1857 #: ../../../src/Stats.cpp:108
1858 msgid "Missile Reflect Chance"
1859 msgstr ""
1860
1861 #: ../../../src/Stats.cpp:109
1862 msgid "Increases your chance of reflecting missiles back at enemies."
1863 msgstr ""
1864
1865 #: ../../../src/Stats.cpp:113
1866 msgid "Damage Reflection"
1867 msgstr ""
1868
1869 #: ../../../src/Stats.cpp:114
1870 msgid "Deals a percentage of damage taken back to the attacker."
1871 msgstr ""
1872
1873 #: ../../../src/Stats.cpp:118
1874 msgid "HP Steal"
1875 msgstr ""
1876
1877 #: ../../../src/Stats.cpp:119
1878 msgid "Percentage of HP stolen per hit."
1879 msgstr ""
1880
1881 #: ../../../src/Stats.cpp:123
1882 msgid "MP Steal"
1883 msgstr ""
1884
1885 #: ../../../src/Stats.cpp:124
1886 msgid "Percentage of MP stolen per hit."
1887 msgstr ""
1888
1889 #: ../../../src/Stats.cpp:128
1890 msgid "Base HP"
1891 msgstr ""
1892
1893 #: ../../../src/Stats.cpp:133
1894 msgid "Base MP"
1895 msgstr ""
1896
1897 #: ../../../src/Utils.cpp:365
1898 msgid "k"
1899 msgstr ""
1900
1901 #: ../../../src/Utils.cpp:635
1902 #, c-format
1903 msgid "%s second"
1904 msgstr ""
1905
1906 #: ../../../src/Utils.cpp:638
1907 #, c-format
1908 msgid "%s seconds"
1909 msgstr ""
1910
1911 #: ../../../src/Version.cpp:139
1912 msgid "or newer"
1913 msgstr ""
1914
1915 #: ../../../src/Version.cpp:142
1916 msgid "or older"
1917 msgstr ""
1010 msgstr ""
1111 "Project-Id-Version: PACKAGE VERSION\n"
1212 "Report-Msgid-Bugs-To: \n"
13 "POT-Creation-Date: 2018-11-17 21:50-0500\n"
13 "POT-Creation-Date: 2021-05-23 20:34-0400\n"
1414 "PO-Revision-Date: 2018-03-28 19:16+0000\n"
1515 "Last-Translator: Justin Jacobs <jajdorkster@gmail.com>, 2018\n"
1616 "Language-Team: Finnish (https://www.transifex.com/flareorg/teams/84925/fi/)\n"
2020 "Language: fi\n"
2121 "Plural-Forms: nplurals=2; plural=(n != 1);\n"
2222
23 #: ../../../src/Avatar.cpp:367
23 #: ../../../src/Avatar.cpp:391
24 msgid "Your health is low!"
25 msgstr ""
26
27 #: ../../../src/Avatar.cpp:421
2428 #, c-format
2529 msgid "Congratulations, you have reached level %d!"
2630 msgstr "Onnittelut, olet päässyt tasolle %d!"
2731
28 #: ../../../src/Avatar.cpp:369
29 msgid "You may increase one attribute through the Character Menu."
30 msgstr "Voit nostaa yhtä kyvyistäsi hahmovalikossa."
31
32 #: ../../../src/Avatar.cpp:583
33 msgid "You are defeated. Game over! ${INPUT_CONTINUE} to exit to Title."
34 msgstr ""
35
36 #: ../../../src/Avatar.cpp:589
37 msgid "You are defeated. ${INPUT_CONTINUE} to continue."
38 msgstr ""
39
40 #: ../../../src/Avatar.cpp:839
32 #: ../../../src/Avatar.cpp:423
33 msgid "You may increase one or more attributes through the Character Menu."
34 msgstr ""
35
36 #: ../../../src/Avatar.cpp:427
37 msgid "You may unlock one or more abilities through the Powers Menu."
38 msgstr ""
39
40 #: ../../../src/Avatar.cpp:689
41 msgid "You are defeated."
42 msgstr ""
43
44 #: ../../../src/Avatar.cpp:935
4145 msgid "Transformation expired. You have been moved back to a safe place."
4246 msgstr ""
4347
44 #: ../../../src/CampaignManager.cpp:153
48 #: ../../../src/CampaignManager.cpp:152
4549 #, c-format
4650 msgid "%d %s removed."
4751 msgstr ""
4852
49 #: ../../../src/CampaignManager.cpp:162
53 #: ../../../src/CampaignManager.cpp:171
54 #, c-format
55 msgid "%s x%d removed."
56 msgstr ""
57
58 #: ../../../src/CampaignManager.cpp:173
5059 #, c-format
5160 msgid "%s removed."
5261 msgstr ""
5362
54 #: ../../../src/CampaignManager.cpp:175
63 #: ../../../src/CampaignManager.cpp:187
64 #, c-format
65 msgid "You receive %d %s."
66 msgstr "Saat %d %s"
67
68 #: ../../../src/CampaignManager.cpp:191
69 #, c-format
70 msgid "You receive %s x%d."
71 msgstr "Saat %s x%d"
72
73 #: ../../../src/CampaignManager.cpp:193
5574 #, c-format
5675 msgid "You receive %s."
5776 msgstr "Hallussasi on nyt %s."
5877
59 #: ../../../src/CampaignManager.cpp:177
60 #, c-format
61 msgid "You receive %s x%d."
62 msgstr "Saat %s x%d"
63
64 #: ../../../src/CampaignManager.cpp:186
65 #, c-format
66 msgid "You receive %d %s."
67 msgstr "Saat %d %s"
68
69 #: ../../../src/CampaignManager.cpp:195
78 #: ../../../src/CampaignManager.cpp:210
7079 #, c-format
7180 msgid "You receive %d XP."
7281 msgstr "Saat %d kokemusta."
7382
74 #: ../../../src/CampaignManager.cpp:201
83 #: ../../../src/CampaignManager.cpp:216
7584 msgid "HP restored."
7685 msgstr "Osumapisteet palautuneet."
7786
78 #: ../../../src/CampaignManager.cpp:205
87 #: ../../../src/CampaignManager.cpp:220
7988 msgid "MP restored."
8089 msgstr "Mentaalipisteet palautuneet."
8190
82 #: ../../../src/CampaignManager.cpp:210
91 #: ../../../src/CampaignManager.cpp:225
8392 msgid "HP and MP restored."
8493 msgstr "OP ja MP palautuneet."
8594
86 #: ../../../src/CampaignManager.cpp:214
95 #: ../../../src/CampaignManager.cpp:229
8796 msgid "Negative effects removed."
8897 msgstr "Haitalliset vaikutukset poistuneet."
8998
90 #: ../../../src/CampaignManager.cpp:220
99 #: ../../../src/CampaignManager.cpp:235
91100 msgid "HP and MP restored, negative effects removed"
92101 msgstr "OP ja MP palautuneet ja haitalliset vaikutukset poistuneet."
93102
105114 "The default renderer that is often faster than the SDL software renderer."
106115 msgstr ""
107116
108 #: ../../../src/EngineSettings.cpp:561
117 #: ../../../src/EngineSettings.cpp:586
109118 msgid "Adventurer"
110119 msgstr "Seikkailija"
111120
112 #: ../../../src/Entity.cpp:511
121 #: ../../../src/Entity.cpp:527
113122 msgid "miss"
114123 msgstr "ohi"
115124
116 #: ../../../src/Entity.cpp:548 ../../../src/PowerManager.cpp:1152
117 #: ../../../src/StatBlock.cpp:805 ../../../src/StatBlock.cpp:811
125 #: ../../../src/Entity.cpp:565 ../../../src/PowerManager.cpp:1224
126 #: ../../../src/StatBlock.cpp:917 ../../../src/StatBlock.cpp:923
118127 #, c-format
119128 msgid "+%d HP"
120129 msgstr "+%d OP"
121130
122 #: ../../../src/Entity.cpp:555 ../../../src/StatBlock.cpp:816
123 #: ../../../src/StatBlock.cpp:822
131 #: ../../../src/Entity.cpp:572 ../../../src/StatBlock.cpp:928
132 #: ../../../src/StatBlock.cpp:934
124133 #, c-format
125134 msgid "+%d MP"
126135 msgstr "+%d MP"
127136
128 #: ../../../src/EventManager.cpp:738
137 #: ../../../src/EventManager.cpp:792
129138 msgid "Unknown destination"
130139 msgstr "Tuntematon määränpää"
131140
132 #: ../../../src/GameStateConfigBase.cpp:89
133 #: ../../../src/GameStateConfigBase.cpp:110
141 #: ../../../src/GameState.cpp:37 ../../../src/GameState.cpp:58
142 msgid "Loading..."
143 msgstr "Ladataan..."
144
145 #: ../../../src/GameStateLoad.cpp:90 ../../../src/GameStateLoad.cpp:103
146 msgid "Delete Save"
147 msgstr "Poista tallennus"
148
149 #: ../../../src/GameStateLoad.cpp:90
150 msgid "Delete this save?"
151 msgstr "Poistetaanko tallennus?"
152
153 #: ../../../src/GameStateLoad.cpp:92
154 msgid "Exit to Title"
155 msgstr "Palaa päävalikkoon"
156
157 #: ../../../src/GameStateLoad.cpp:95
158 msgid "New Game"
159 msgstr "Uusi peli"
160
161 #: ../../../src/GameStateLoad.cpp:99 ../../../src/GameStateLoad.cpp:607
162 msgid "Choose a Slot"
163 msgstr "Valitse ura"
164
165 #: ../../../src/GameStateLoad.cpp:580 ../../../src/GameStateLoad.cpp:601
166 msgid "Enable a story mod to continue"
167 msgstr "Salli tarinamodin jatkaa"
168
169 #: ../../../src/GameStateLoad.cpp:596
170 msgid "Load Game"
171 msgstr "Lataa peli"
172
173 #: ../../../src/GameStateLoad.cpp:705
174 msgid "Entering game world..."
175 msgstr "Saavutaan pelimaailmaan..."
176
177 #: ../../../src/GameStateLoad.cpp:708
178 msgid "Loading saved game..."
179 msgstr "Ladataan tallennettu peli..."
180
181 #: ../../../src/GameStateLoad.cpp:741
182 msgid "Invalid save"
183 msgstr ""
184
185 #: ../../../src/GameStateLoad.cpp:765 ../../../src/ItemManager.cpp:745
186 #: ../../../src/MenuPowers.cpp:860 ../../../src/MenuPowers.cpp:1219
187 #: ../../../src/MenuPowers.cpp:1631
188 #, c-format
189 msgid "Level %d"
190 msgstr "Taso %d"
191
192 #: ../../../src/GameStateNew.cpp:66 ../../../src/InputState.cpp:416
193 #: ../../../src/MenuConfig.cpp:246
194 msgid "Cancel"
195 msgstr "Peru"
196
197 #: ../../../src/GameStateNew.cpp:69
198 msgid "Create"
199 msgstr "Aloita"
200
201 #: ../../../src/GameStateNew.cpp:77
202 msgid "Randomize"
203 msgstr ""
204
205 #: ../../../src/GameStateNew.cpp:93
206 msgid "Choose a Portrait"
207 msgstr "Valitse muotokuva"
208
209 #: ../../../src/GameStateNew.cpp:97
210 msgid "Choose a Name"
211 msgstr "Valitse nimi"
212
213 #: ../../../src/GameStateNew.cpp:101
214 msgid "Permadeath?"
215 msgstr "Lopullinen kuolema?"
216
217 #: ../../../src/GameStateNew.cpp:105
218 msgid "Choose a Class"
219 msgstr "Valitse luokka"
220
221 #: ../../../src/GameStateTitle.cpp:107
222 msgid "Play Game"
223 msgstr "Pelaa"
224
225 #: ../../../src/GameStateTitle.cpp:110
226 msgid "Enable a core mod to continue"
227 msgstr "Salli ydinmodin jatkaa"
228
229 #: ../../../src/GameStateTitle.cpp:114 ../../../src/MenuMiniMap.cpp:152
230 msgid "Configuration"
231 msgstr "Asetukset"
232
233 #: ../../../src/GameStateTitle.cpp:117
234 msgid "Credits"
235 msgstr ""
236
237 #: ../../../src/GameStateTitle.cpp:120
238 msgid "Exit Game"
239 msgstr "Lopeta peli"
240
241 #: ../../../src/InputState.cpp:417
242 msgid "Accept"
243 msgstr "Hyväksy"
244
245 #: ../../../src/InputState.cpp:418 ../../../src/MenuMovementType.cpp:123
246 #: ../../../src/MenuMovementType.cpp:132 ../../../src/SDLInputState.cpp:668
247 #: ../../../src/SDLInputState.cpp:698
248 msgid "Up"
249 msgstr "Ylös"
250
251 #: ../../../src/InputState.cpp:419 ../../../src/MenuMovementType.cpp:125
252 #: ../../../src/MenuMovementType.cpp:134 ../../../src/SDLInputState.cpp:646
253 #: ../../../src/SDLInputState.cpp:676
254 msgid "Down"
255 msgstr "Alas"
256
257 #: ../../../src/InputState.cpp:420 ../../../src/MenuMovementType.cpp:124
258 #: ../../../src/MenuMovementType.cpp:133 ../../../src/SDLInputState.cpp:653
259 #: ../../../src/SDLInputState.cpp:683
260 msgid "Left"
261 msgstr "Vasen"
262
263 #: ../../../src/InputState.cpp:421 ../../../src/MenuMovementType.cpp:126
264 #: ../../../src/MenuMovementType.cpp:135 ../../../src/SDLInputState.cpp:663
265 #: ../../../src/SDLInputState.cpp:693
266 msgid "Right"
267 msgstr "Oikea"
268
269 #: ../../../src/InputState.cpp:422
270 msgid "Bar1"
271 msgstr ""
272
273 #: ../../../src/InputState.cpp:423
274 msgid "Bar2"
275 msgstr ""
276
277 #: ../../../src/InputState.cpp:424
278 msgid "Bar3"
279 msgstr ""
280
281 #: ../../../src/InputState.cpp:425
282 msgid "Bar4"
283 msgstr ""
284
285 #: ../../../src/InputState.cpp:426
286 msgid "Bar5"
287 msgstr ""
288
289 #: ../../../src/InputState.cpp:427
290 msgid "Bar6"
291 msgstr ""
292
293 #: ../../../src/InputState.cpp:428
294 msgid "Bar7"
295 msgstr ""
296
297 #: ../../../src/InputState.cpp:429
298 msgid "Bar8"
299 msgstr ""
300
301 #: ../../../src/InputState.cpp:430
302 msgid "Bar9"
303 msgstr ""
304
305 #: ../../../src/InputState.cpp:431
306 msgid "Bar0"
307 msgstr ""
308
309 #: ../../../src/InputState.cpp:432 ../../../src/MenuActionBar.cpp:84
310 #: ../../../src/MenuCharacter.cpp:54
311 msgid "Character"
312 msgstr "Hahmo"
313
314 #: ../../../src/InputState.cpp:433 ../../../src/MenuActionBar.cpp:85
315 #: ../../../src/MenuInventory.cpp:130 ../../../src/MenuVendor.cpp:59
316 msgid "Inventory"
317 msgstr "Tavaraluettelo"
318
319 #: ../../../src/InputState.cpp:434 ../../../src/MenuActionBar.cpp:86
320 #: ../../../src/MenuPowers.cpp:158
321 msgid "Powers"
322 msgstr "Voimat"
323
324 #: ../../../src/InputState.cpp:435 ../../../src/MenuActionBar.cpp:87
325 #: ../../../src/MenuLog.cpp:72
326 msgid "Log"
327 msgstr "Loki"
328
329 #: ../../../src/InputState.cpp:436
330 msgid "Main1"
331 msgstr ""
332
333 #: ../../../src/InputState.cpp:437
334 msgid "Main2"
335 msgstr ""
336
337 #: ../../../src/InputState.cpp:438
338 msgid "Ctrl"
339 msgstr ""
340
341 #: ../../../src/InputState.cpp:439
342 msgid "Shift"
343 msgstr "Vaihto"
344
345 #: ../../../src/InputState.cpp:440
346 msgid "Alt"
347 msgstr ""
348
349 #: ../../../src/InputState.cpp:441 ../../../src/SDLInputState.cpp:675
350 msgid "Delete"
351 msgstr ""
352
353 #: ../../../src/InputState.cpp:442
354 msgid "ActionBar Accept"
355 msgstr ""
356
357 #: ../../../src/InputState.cpp:443
358 msgid "ActionBar Left"
359 msgstr ""
360
361 #: ../../../src/InputState.cpp:444
362 msgid "ActionBar Right"
363 msgstr ""
364
365 #: ../../../src/InputState.cpp:445
366 msgid "ActionBar Use"
367 msgstr ""
368
369 #: ../../../src/InputState.cpp:446
370 msgid "Developer Menu"
371 msgstr ""
372
373 #: ../../../src/InputState.cpp:448
374 msgid "Left Mouse"
375 msgstr ""
376
377 #: ../../../src/InputState.cpp:449
378 msgid "Middle Mouse"
379 msgstr ""
380
381 #: ../../../src/InputState.cpp:450
382 msgid "Right Mouse"
383 msgstr ""
384
385 #: ../../../src/InputState.cpp:451
386 msgid "Wheel Up"
387 msgstr ""
388
389 #: ../../../src/InputState.cpp:452
390 msgid "Wheel Down"
391 msgstr ""
392
393 #: ../../../src/InputState.cpp:453
394 msgid "Mouse X1"
395 msgstr ""
396
397 #: ../../../src/InputState.cpp:454
398 msgid "Mouse X2"
399 msgstr ""
400
401 #: ../../../src/ItemManager.cpp:475
402 msgid "Unknown Item"
403 msgstr ""
404
405 #: ../../../src/ItemManager.cpp:646 ../../../src/MenuPowers.cpp:959
406 #, c-format
407 msgid "%d%% Speed"
408 msgstr ""
409
410 #: ../../../src/ItemManager.cpp:650 ../../../src/MenuPowers.cpp:962
411 #, c-format
412 msgid "%d%% Attack Speed"
413 msgstr ""
414
415 #: ../../../src/ItemManager.cpp:672 ../../../src/MenuCharacter.cpp:352
416 #: ../../../src/MenuPowers.cpp:931
417 #, c-format
418 msgid "Resistance (%s)"
419 msgstr ""
420
421 #: ../../../src/ItemManager.cpp:682
422 #, c-format
423 msgid "Requires %s"
424 msgstr ""
425
426 #: ../../../src/ItemManager.cpp:731
427 msgid "Quest Item"
428 msgstr ""
429
430 #: ../../../src/ItemManager.cpp:758
431 #, c-format
432 msgid "Quality: %s"
433 msgstr ""
434
435 #: ../../../src/ItemManager.cpp:783
436 #, c-format
437 msgid "Absorb: %d-%d"
438 msgstr "Vaimennus: %d-%d"
439
440 #: ../../../src/ItemManager.cpp:785
441 #, c-format
442 msgid "Absorb: %d"
443 msgstr "Vaimennus: %d"
444
445 #: ../../../src/ItemManager.cpp:825 ../../../src/MenuPowers.cpp:1206
446 #: ../../../src/MenuPowers.cpp:1209
447 #, c-format
448 msgid "Requires Level %d"
449 msgstr "Vaatii tason %d"
450
451 #: ../../../src/ItemManager.cpp:836 ../../../src/MenuPowers.cpp:1198
452 #: ../../../src/MenuPowers.cpp:1200
453 #, c-format
454 msgid "Requires %s %d"
455 msgstr ""
456
457 #: ../../../src/ItemManager.cpp:847
458 #, c-format
459 msgid "Requires Class: %s"
460 msgstr ""
461
462 #: ../../../src/ItemManager.cpp:863 ../../../src/ItemManager.cpp:875
463 #, c-format
464 msgid "Buy Price: %d %s"
465 msgstr "Ostohinta: %d kultaa"
466
467 #: ../../../src/ItemManager.cpp:865 ../../../src/ItemManager.cpp:877
468 #, c-format
469 msgid "Buy Price: %d %s each"
470 msgstr "Ostohinta: á %d kultaa"
471
472 #: ../../../src/ItemManager.cpp:885
473 #, c-format
474 msgid "Sell Price: %d %s"
475 msgstr "Myyntihinta: %d kultaa"
476
477 #: ../../../src/ItemManager.cpp:887
478 #, c-format
479 msgid "Sell Price: %d %s each"
480 msgstr "Myyntihinta: á %d kultaa"
481
482 #: ../../../src/ItemManager.cpp:896
483 msgid "Set:"
484 msgstr ""
485
486 #: ../../../src/ItemManager.cpp:903
487 #, c-format
488 msgid "%d items:"
489 msgstr ""
490
491 #: ../../../src/ItemManager.cpp:915
492 #, c-format
493 msgid "Press [%s] to read"
494 msgstr ""
495
496 #: ../../../src/ItemManager.cpp:918
497 #, c-format
498 msgid "Press [%s] to use"
499 msgstr ""
500
501 #: ../../../src/MenuActionBar.cpp:239 ../../../src/MenuActionBar.cpp:246
502 #: ../../../src/MenuActionBar.cpp:249 ../../../src/MenuActionBar.cpp:255
503 #, c-format
504 msgid "Hotkey: %s"
505 msgstr ""
506
507 #: ../../../src/MenuActionBar.cpp:621
508 msgid "Not enough MP."
509 msgstr ""
510
511 #: ../../../src/MenuActiveEffects.cpp:124
512 #, c-format
513 msgid "x%d"
514 msgstr ""
515
516 #: ../../../src/MenuActiveEffects.cpp:219
517 msgid "Remaining:"
518 msgstr ""
519
520 #: ../../../src/MenuActiveEffects.cpp:225
521 #, c-format
522 msgid "x%d stacks"
523 msgstr ""
524
525 #: ../../../src/MenuCharacter.cpp:73 ../../../src/MenuCharacter.cpp:78
526 msgid "Name"
527 msgstr "Nimi"
528
529 #: ../../../src/MenuCharacter.cpp:74 ../../../src/MenuCharacter.cpp:79
530 msgid "Level"
531 msgstr "Taso"
532
533 #: ../../../src/MenuCharacter.cpp:309
534 #, c-format
535 msgid "Available stat points: %d"
536 msgstr ""
537
538 #: ../../../src/MenuCharacter.cpp:353
539 #, c-format
540 msgid "Reduces the damage taken from \"%s\" elemental attacks."
541 msgstr ""
542
543 #: ../../../src/MenuCharacter.cpp:363 ../../../src/MenuManager.cpp:301
544 #, c-format
545 msgid "XP: %d"
546 msgstr "Kokemus: %d"
547
548 #: ../../../src/MenuCharacter.cpp:365
549 #, c-format
550 msgid "Next: %d"
551 msgstr "Seuraava: %d"
552
553 #: ../../../src/MenuCharacter.cpp:371
554 #, c-format
555 msgid "base (%d), bonus (%d)"
556 msgstr "perus (%d), lisä (%d)"
557
558 #: ../../../src/MenuCharacter.cpp:379 ../../../src/MenuCharacter.cpp:393
559 msgid "Related stats:"
560 msgstr ""
561
562 #: ../../../src/MenuCharacter.cpp:419 ../../../src/MenuCharacter.cpp:443
563 #, c-format
564 msgid "Each level grants %d."
565 msgstr ""
566
567 #: ../../../src/MenuCharacter.cpp:423 ../../../src/MenuCharacter.cpp:447
568 #, c-format
569 msgid "Each point of %s grants %d."
570 msgstr ""
571
572 #: ../../../src/MenuConfig.cpp:122 ../../../src/MenuConfig.cpp:1171
573 msgid "Clear"
574 msgstr ""
575
576 #: ../../../src/MenuConfig.cpp:122 ../../../src/MenuConfig.cpp:1169
577 msgid "Assign:"
578 msgstr ""
579
580 #: ../../../src/MenuConfig.cpp:123 ../../../src/MenuConfig.cpp:245
134581 msgid "Defaults"
135582 msgstr "Oletukset"
136583
137 #: ../../../src/GameStateConfigBase.cpp:89
584 #: ../../../src/MenuConfig.cpp:123
138585 msgid "Reset ALL settings?"
139586 msgstr "Palauta KAIKKI asetukset?"
140587
141 #: ../../../src/GameStateConfigBase.cpp:109 ../../../src/MenuNumPicker.cpp:49
588 #: ../../../src/MenuConfig.cpp:244 ../../../src/MenuNumPicker.cpp:49
142589 msgid "OK"
143590 msgstr "OK"
144591
145 #: ../../../src/GameStateConfigBase.cpp:111 ../../../src/GameStateNew.cpp:65
146 #: ../../../src/InputState.cpp:401
147 msgid "Cancel"
148 msgstr "Peru"
149
150 #: ../../../src/GameStateConfigBase.cpp:160
151 #: ../../../src/GameStateConfigDesktop.cpp:130
592 #: ../../../src/MenuConfig.cpp:248 ../../../src/MenuGameOver.cpp:72
593 msgid "Continue"
594 msgstr ""
595
596 #: ../../../src/MenuConfig.cpp:250
597 msgid "Save Game"
598 msgstr ""
599
600 #: ../../../src/MenuConfig.cpp:293
601 msgid "Default"
602 msgstr ""
603
604 #: ../../../src/MenuConfig.cpp:293
605 msgid ""
606 "Show all loot tooltips, except for those that would be obscured by the "
607 "player or an enemy. Temporarily show all loot tooltips with 'Alt'."
608 msgstr ""
609
610 #: ../../../src/MenuConfig.cpp:294
611 msgid "Show all"
612 msgstr ""
613
614 #: ../../../src/MenuConfig.cpp:294
615 msgid ""
616 "Always show loot tooltips. Temporarily hide all loot tooltips with 'Alt'."
617 msgstr ""
618
619 #: ../../../src/MenuConfig.cpp:295 ../../../src/MenuConfig.cpp:300
620 msgid "Hidden"
621 msgstr ""
622
623 #: ../../../src/MenuConfig.cpp:295
624 msgid ""
625 "Always hide loot tooltips, except for when a piece of loot is hovered with "
626 "the mouse cursor. Temporarily show all loot tooltips with 'Alt'."
627 msgstr ""
628
629 #: ../../../src/MenuConfig.cpp:298
630 msgid "Visible"
631 msgstr ""
632
633 #: ../../../src/MenuConfig.cpp:299
634 msgid "Visible (2x zoom)"
635 msgstr ""
636
637 #: ../../../src/MenuConfig.cpp:303
638 msgid ""
639 "Controls the type of warning to be activated when the player is below the "
640 "low health threshold."
641 msgstr ""
642
643 #: ../../../src/MenuConfig.cpp:304
644 msgid "- Display a message"
645 msgstr ""
646
647 #: ../../../src/MenuConfig.cpp:305
648 msgid "- Play a sound"
649 msgstr ""
650
651 #: ../../../src/MenuConfig.cpp:306
652 msgid "- Change the cursor"
653 msgstr ""
654
655 #: ../../../src/MenuConfig.cpp:308
656 msgid "Disabled"
657 msgstr ""
658
659 #: ../../../src/MenuConfig.cpp:309
660 msgid "All"
661 msgstr ""
662
663 #: ../../../src/MenuConfig.cpp:310
664 msgid "Message & Cursor"
665 msgstr ""
666
667 #: ../../../src/MenuConfig.cpp:311
668 msgid "Message & Sound"
669 msgstr ""
670
671 #: ../../../src/MenuConfig.cpp:312
672 msgid "Sound & Cursor"
673 msgstr ""
674
675 #: ../../../src/MenuConfig.cpp:313
676 msgid "Message"
677 msgstr ""
678
679 #: ../../../src/MenuConfig.cpp:314
680 msgid "Cursor"
681 msgstr ""
682
683 #: ../../../src/MenuConfig.cpp:315
684 msgid "Sound"
685 msgstr ""
686
687 #: ../../../src/MenuConfig.cpp:321
688 msgid ""
689 "When the player's health drops below the given threshold, the low health "
690 "notifications are triggered if one or more of them is enabled."
691 msgstr ""
692
693 #: ../../../src/MenuConfig.cpp:334 ../../../src/MenuConfig.cpp:1587
694 #: ../../../src/MenuGameOver.cpp:116
695 msgid "Exit"
696 msgstr "Poistu"
697
698 #: ../../../src/MenuConfig.cpp:335
699 msgid "Video"
700 msgstr "Video"
701
702 #: ../../../src/MenuConfig.cpp:336
152703 msgid "Audio"
153704 msgstr "Audio"
154705
155 #: ../../../src/GameStateConfigBase.cpp:161
156 #: ../../../src/GameStateConfigDesktop.cpp:131
706 #: ../../../src/MenuConfig.cpp:337
157707 msgid "Interface"
158708 msgstr "Käyttöliittymä"
159709
160 #: ../../../src/GameStateConfigBase.cpp:162
161 #: ../../../src/GameStateConfigDesktop.cpp:134
710 #: ../../../src/MenuConfig.cpp:338
711 msgid "Input"
712 msgstr "Ohjaus"
713
714 #: ../../../src/MenuConfig.cpp:339
715 msgid "Keybindings"
716 msgstr "Näppäimet"
717
718 #: ../../../src/MenuConfig.cpp:340
162719 msgid "Mods"
163720 msgstr "Modit"
164721
165 #: ../../../src/GameStateConfigBase.cpp:249 ../../../src/MenuExit.cpp:72
722 #: ../../../src/MenuConfig.cpp:352
723 msgid "Paused"
724 msgstr ""
725
726 #: ../../../src/MenuConfig.cpp:355
727 msgid "Time Played"
728 msgstr ""
729
730 #: ../../../src/MenuConfig.cpp:361
731 msgid "Renderer"
732 msgstr ""
733
734 #: ../../../src/MenuConfig.cpp:362
735 msgid "Full Screen Mode"
736 msgstr "Täysi ruutu"
737
738 #: ../../../src/MenuConfig.cpp:363
739 msgid "Hardware surfaces"
740 msgstr "Hardware surfaces"
741
742 #: ../../../src/MenuConfig.cpp:364
743 msgid "V-Sync"
744 msgstr ""
745
746 #: ../../../src/MenuConfig.cpp:365
747 msgid "Texture Filtering"
748 msgstr ""
749
750 #: ../../../src/MenuConfig.cpp:366
751 msgid "DPI scaling"
752 msgstr ""
753
754 #: ../../../src/MenuConfig.cpp:367
755 msgid "Parallax Layers"
756 msgstr ""
757
758 #: ../../../src/MenuConfig.cpp:368
759 msgid "Allow changing gamma"
760 msgstr "Salli gamma-muutokset"
761
762 #: ../../../src/MenuConfig.cpp:369
763 msgid "Gamma"
764 msgstr "Gamma"
765
766 #: ../../../src/MenuConfig.cpp:371
767 msgid "Sound Volume"
768 msgstr "äänenvoimakkuus"
769
770 #: ../../../src/MenuConfig.cpp:372
166771 msgid "Music Volume"
167772 msgstr "Musiikin voimakkuus"
168773
169 #: ../../../src/GameStateConfigBase.cpp:253 ../../../src/MenuExit.cpp:77
170 msgid "Sound Volume"
171 msgstr "äänenvoimakkuus"
172
173 #: ../../../src/GameStateConfigBase.cpp:257
774 #: ../../../src/MenuConfig.cpp:374
174775 msgid "Language"
175776 msgstr "Kieli"
176777
177 #: ../../../src/GameStateConfigBase.cpp:266
778 #: ../../../src/MenuConfig.cpp:375
178779 msgid "Show FPS"
179780 msgstr "Näytä päivitystaso (FPS)"
180781
181 #: ../../../src/GameStateConfigBase.cpp:270
782 #: ../../../src/MenuConfig.cpp:376
783 msgid "Hardware mouse cursor"
784 msgstr ""
785
786 #: ../../../src/MenuConfig.cpp:377
182787 msgid "Colorblind Mode"
183788 msgstr ""
184789
185 #: ../../../src/GameStateConfigBase.cpp:274
186 msgid "Hardware mouse cursor"
187 msgstr ""
188
189 #: ../../../src/GameStateConfigBase.cpp:278
790 #: ../../../src/MenuConfig.cpp:378
190791 msgid "Developer Mode"
191792 msgstr ""
192793
193 #: ../../../src/GameStateConfigBase.cpp:282
794 #: ../../../src/MenuConfig.cpp:379
194795 msgid "Subtitles"
195796 msgstr ""
196797
197 #: ../../../src/GameStateConfigBase.cpp:286
198 msgid "Active Mods"
199 msgstr "Käytössäolevat modit"
200
201 #: ../../../src/GameStateConfigBase.cpp:295
202 msgid "Available Mods"
203 msgstr "Saatavilla olevat modit"
204
205 #: ../../../src/GameStateConfigBase.cpp:314
206 msgid "<< Disable"
207 msgstr "<< Poista käytöstä"
208
209 #: ../../../src/GameStateConfigBase.cpp:320
210 msgid "Enable >>"
211 msgstr "Ota käyttöön >>"
212
213 #: ../../../src/GameStateConfigBase.cpp:873
214 msgid "Version:"
215 msgstr ""
216
217 #: ../../../src/GameStateConfigBase.cpp:878
218 msgid "Game:"
219 msgstr ""
220
221 #: ../../../src/GameStateConfigBase.cpp:883
222 msgid "Engine version:"
223 msgstr ""
224
225 #: ../../../src/GameStateConfigBase.cpp:891
226 msgid "Requires mods:"
227 msgstr ""
228
229 #: ../../../src/GameStateConfigDesktop.cpp:83
230 #: ../../../src/GameStateConfigDesktop.cpp:751
231 msgid "Clear"
232 msgstr ""
233
234 #: ../../../src/GameStateConfigDesktop.cpp:83
235 #: ../../../src/GameStateConfigDesktop.cpp:749
236 msgid "Assign:"
237 msgstr ""
238
239 #: ../../../src/GameStateConfigDesktop.cpp:128
240 msgid "Video"
241 msgstr "Video"
242
243 #: ../../../src/GameStateConfigDesktop.cpp:132
244 msgid "Input"
245 msgstr "Ohjaus"
246
247 #: ../../../src/GameStateConfigDesktop.cpp:133
248 msgid "Keybindings"
249 msgstr "Näppäimet"
250
251 #: ../../../src/GameStateConfigDesktop.cpp:188
798 #: ../../../src/MenuConfig.cpp:380
799 msgid "Loot tooltip visibility"
800 msgstr ""
801
802 #: ../../../src/MenuConfig.cpp:381
803 msgid "Mini-map mode"
804 msgstr ""
805
806 #: ../../../src/MenuConfig.cpp:382
807 msgid "Always show stat bar labels"
808 msgstr ""
809
810 #: ../../../src/MenuConfig.cpp:383
811 msgid "Allow stat bar auto-hiding"
812 msgstr ""
813
814 #: ../../../src/MenuConfig.cpp:384
815 msgid "Show combat text"
816 msgstr "Näytä taisteluteksti"
817
818 #: ../../../src/MenuConfig.cpp:385
819 msgid "Automatically equip items"
820 msgstr ""
821
822 #: ../../../src/MenuConfig.cpp:386
823 msgid "Show hidden entity markers"
824 msgstr ""
825
826 #: ../../../src/MenuConfig.cpp:387
827 msgid "Low health notification"
828 msgstr ""
829
830 #: ../../../src/MenuConfig.cpp:388
831 msgid "Low health threshold"
832 msgstr ""
833
834 #: ../../../src/MenuConfig.cpp:389
835 msgid "Show item comparison tooltips"
836 msgstr ""
837
838 #: ../../../src/MenuConfig.cpp:392 ../../../src/MenuMovementType.cpp:94
839 #: ../../../src/MenuMovementType.cpp:131
840 msgid "Joystick"
841 msgstr "Peliohjain"
842
843 #: ../../../src/MenuConfig.cpp:393
844 msgid "Move hero using mouse"
845 msgstr "Liikuta sankaria hiirellä"
846
847 #: ../../../src/MenuConfig.cpp:394
848 msgid "Mouse aim"
849 msgstr "Hiiritähtäys"
850
851 #: ../../../src/MenuConfig.cpp:395
852 msgid "Do not use mouse"
853 msgstr ""
854
855 #: ../../../src/MenuConfig.cpp:396
856 msgid "Swap mouse movement button"
857 msgstr ""
858
859 #: ../../../src/MenuConfig.cpp:397
860 msgid "Attack with mouse movement"
861 msgstr ""
862
863 #: ../../../src/MenuConfig.cpp:398
864 msgid "Joystick Deadzone"
865 msgstr ""
866
867 #: ../../../src/MenuConfig.cpp:408
868 #, c-format
869 msgid "Primary binding: %s"
870 msgstr ""
871
872 #: ../../../src/MenuConfig.cpp:409
873 #, c-format
874 msgid "Alternate binding: %s"
875 msgstr ""
876
877 #: ../../../src/MenuConfig.cpp:410
878 #, c-format
879 msgid "Joystick binding: %s"
880 msgstr ""
881
882 #: ../../../src/MenuConfig.cpp:511
252883 msgid ""
253884 "Will try to store surfaces in video memory versus system memory. The effect "
254885 "this has on performance depends on the renderer."
255886 msgstr ""
256887
257 #: ../../../src/GameStateConfigDesktop.cpp:189
888 #: ../../../src/MenuConfig.cpp:512
258889 msgid ""
259890 "Prevents screen tearing. Disable if you experience \"stuttering\" in "
260891 "windowed mode or input lag."
261892 msgstr ""
262893
263 #: ../../../src/GameStateConfigDesktop.cpp:190
894 #: ../../../src/MenuConfig.cpp:513
264895 msgid ""
265896 "When enabled, this uses the screen DPI in addition to the window dimensions "
266897 "to scale the rendering resolution. Otherwise, only the window dimensions are"
267898 " used."
268899 msgstr ""
269900
270 #: ../../../src/GameStateConfigDesktop.cpp:191
901 #: ../../../src/MenuConfig.cpp:514
271902 msgid ""
272903 "This enables parallax (non-tile) layers. Disabling this setting can improve "
273904 "performance in some cases."
274905 msgstr ""
275906
276 #: ../../../src/GameStateConfigDesktop.cpp:192
277 msgid "Experimental"
278 msgstr "Kokeellinen"
279
280 #: ../../../src/GameStateConfigDesktop.cpp:193
281 msgid "For handheld devices"
282 msgstr ""
283
284 #: ../../../src/GameStateConfigDesktop.cpp:211
285 msgid "Renderer"
286 msgstr ""
287
288 #: ../../../src/GameStateConfigDesktop.cpp:227
289 msgid "Full Screen Mode"
290 msgstr "Täysi ruutu"
291
292 #: ../../../src/GameStateConfigDesktop.cpp:231
293 msgid "Move hero using mouse"
294 msgstr "Liikuta sankaria hiirellä"
295
296 #: ../../../src/GameStateConfigDesktop.cpp:235
297 msgid "Hardware surfaces"
298 msgstr "Hardware surfaces"
299
300 #: ../../../src/GameStateConfigDesktop.cpp:239
301 msgid "V-Sync"
302 msgstr ""
303
304 #: ../../../src/GameStateConfigDesktop.cpp:243
305 msgid "Texture Filtering"
306 msgstr ""
307
308 #: ../../../src/GameStateConfigDesktop.cpp:247
309 msgid "DPI scaling"
310 msgstr ""
311
312 #: ../../../src/GameStateConfigDesktop.cpp:251
313 msgid "Parallax Layers"
314 msgstr ""
315
316 #: ../../../src/GameStateConfigDesktop.cpp:255
317 msgid "Allow changing gamma"
318 msgstr "Salli gamma-muutokset"
319
320 #: ../../../src/GameStateConfigDesktop.cpp:259
321 msgid "Gamma"
322 msgstr "Gamma"
323
324 #: ../../../src/GameStateConfigDesktop.cpp:263
325 msgid "Use joystick"
326 msgstr "Käytä peliohjainta"
327
328 #: ../../../src/GameStateConfigDesktop.cpp:267
329 msgid "Joystick"
330 msgstr "Peliohjain"
331
332 #: ../../../src/GameStateConfigDesktop.cpp:283
333 msgid "Mouse aim"
334 msgstr "Hiiritähtäys"
335
336 #: ../../../src/GameStateConfigDesktop.cpp:287
337 msgid "Do not use mouse"
338 msgstr ""
339
340 #: ../../../src/GameStateConfigDesktop.cpp:291
341 msgid "Joystick Deadzone"
342 msgstr ""
343
344 #: ../../../src/GameState.cpp:37 ../../../src/GameState.cpp:58
345 msgid "Loading..."
346 msgstr "Ladataan..."
347
348 #: ../../../src/GameStateLoad.cpp:88 ../../../src/GameStateLoad.cpp:101
349 msgid "Delete Save"
350 msgstr "Poista tallennus"
351
352 #: ../../../src/GameStateLoad.cpp:88
353 msgid "Delete this save?"
354 msgstr "Poistetaanko tallennus?"
355
356 #: ../../../src/GameStateLoad.cpp:90
357 msgid "Exit to Title"
358 msgstr "Palaa päävalikkoon"
359
360 #: ../../../src/GameStateLoad.cpp:93
361 msgid "New Game"
362 msgstr "Uusi peli"
363
364 #: ../../../src/GameStateLoad.cpp:97 ../../../src/GameStateLoad.cpp:600
365 msgid "Choose a Slot"
366 msgstr "Valitse ura"
367
368 #: ../../../src/GameStateLoad.cpp:573 ../../../src/GameStateLoad.cpp:594
369 msgid "Enable a story mod to continue"
370 msgstr "Salli tarinamodin jatkaa"
371
372 #: ../../../src/GameStateLoad.cpp:589
373 msgid "Load Game"
374 msgstr "Lataa peli"
375
376 #: ../../../src/GameStateLoad.cpp:695
377 msgid "Entering game world..."
378 msgstr "Saavutaan pelimaailmaan..."
379
380 #: ../../../src/GameStateLoad.cpp:698
381 msgid "Loading saved game..."
382 msgstr "Ladataan tallennettu peli..."
383
384 #: ../../../src/GameStateLoad.cpp:731
385 msgid "Invalid save"
386 msgstr ""
387
388 #: ../../../src/GameStateLoad.cpp:755 ../../../src/ItemManager.cpp:747
389 #: ../../../src/MenuPowers.cpp:778 ../../../src/MenuPowers.cpp:1144
390 #: ../../../src/MenuPowers.cpp:1542
391 #, c-format
392 msgid "Level %d"
393 msgstr "Taso %d"
394
395 #: ../../../src/GameStateNew.cpp:68
396 msgid "Create"
397 msgstr "Aloita"
398
399 #: ../../../src/GameStateNew.cpp:76
400 msgid "Randomize"
401 msgstr ""
402
403 #: ../../../src/GameStateNew.cpp:92
404 msgid "Choose a Portrait"
405 msgstr "Valitse muotokuva"
406
407 #: ../../../src/GameStateNew.cpp:96
408 msgid "Choose a Name"
409 msgstr "Valitse nimi"
410
411 #: ../../../src/GameStateNew.cpp:100
412 msgid "Permadeath?"
413 msgstr "Lopullinen kuolema?"
414
415 #: ../../../src/GameStateNew.cpp:104
416 msgid "Choose a Class"
417 msgstr "Valitse luokka"
418
419 #: ../../../src/GameStateTitle.cpp:108
420 msgid "Play Game"
421 msgstr "Pelaa"
422
423 #: ../../../src/GameStateTitle.cpp:111
424 msgid "Enable a core mod to continue"
425 msgstr "Salli ydinmodin jatkaa"
426
427 #: ../../../src/GameStateTitle.cpp:115
428 msgid "Configuration"
429 msgstr "Asetukset"
430
431 #: ../../../src/GameStateTitle.cpp:118
432 msgid "Credits"
433 msgstr ""
434
435 #: ../../../src/GameStateTitle.cpp:121
436 msgid "Exit Game"
437 msgstr "Lopeta peli"
438
439 #: ../../../src/InputState.cpp:402
440 msgid "Accept"
441 msgstr "Hyväksy"
442
443 #: ../../../src/InputState.cpp:403 ../../../src/SDLInputState.cpp:607
444 msgid "Up"
445 msgstr "Ylös"
446
447 #: ../../../src/InputState.cpp:404 ../../../src/SDLInputState.cpp:585
448 msgid "Down"
449 msgstr "Alas"
450
451 #: ../../../src/InputState.cpp:405 ../../../src/SDLInputState.cpp:592
452 msgid "Left"
453 msgstr "Vasen"
454
455 #: ../../../src/InputState.cpp:406 ../../../src/SDLInputState.cpp:602
456 msgid "Right"
457 msgstr "Oikea"
458
459 #: ../../../src/InputState.cpp:407
460 msgid "Bar1"
461 msgstr ""
462
463 #: ../../../src/InputState.cpp:408
464 msgid "Bar2"
465 msgstr ""
466
467 #: ../../../src/InputState.cpp:409
468 msgid "Bar3"
469 msgstr ""
470
471 #: ../../../src/InputState.cpp:410
472 msgid "Bar4"
473 msgstr ""
474
475 #: ../../../src/InputState.cpp:411
476 msgid "Bar5"
477 msgstr ""
478
479 #: ../../../src/InputState.cpp:412
480 msgid "Bar6"
481 msgstr ""
482
483 #: ../../../src/InputState.cpp:413
484 msgid "Bar7"
485 msgstr ""
486
487 #: ../../../src/InputState.cpp:414
488 msgid "Bar8"
489 msgstr ""
490
491 #: ../../../src/InputState.cpp:415
492 msgid "Bar9"
493 msgstr ""
494
495 #: ../../../src/InputState.cpp:416
496 msgid "Bar0"
497 msgstr ""
498
499 #: ../../../src/InputState.cpp:417 ../../../src/MenuActionBar.cpp:83
500 #: ../../../src/MenuCharacter.cpp:54
501 msgid "Character"
502 msgstr "Hahmo"
503
504 #: ../../../src/InputState.cpp:418 ../../../src/MenuActionBar.cpp:84
505 #: ../../../src/MenuInventory.cpp:137 ../../../src/MenuVendor.cpp:57
506 msgid "Inventory"
507 msgstr "Tavaraluettelo"
508
509 #: ../../../src/InputState.cpp:419 ../../../src/MenuActionBar.cpp:85
510 #: ../../../src/MenuPowers.cpp:168
511 msgid "Powers"
512 msgstr "Voimat"
513
514 #: ../../../src/InputState.cpp:420 ../../../src/MenuActionBar.cpp:86
515 #: ../../../src/MenuLog.cpp:72
516 msgid "Log"
517 msgstr "Loki"
518
519 #: ../../../src/InputState.cpp:421
520 msgid "Main1"
521 msgstr ""
522
523 #: ../../../src/InputState.cpp:422
524 msgid "Main2"
525 msgstr ""
526
527 #: ../../../src/InputState.cpp:423
528 msgid "Ctrl"
529 msgstr ""
530
531 #: ../../../src/InputState.cpp:424
532 msgid "Shift"
533 msgstr "Vaihto"
534
535 #: ../../../src/InputState.cpp:425
536 msgid "Alt"
537 msgstr ""
538
539 #: ../../../src/InputState.cpp:426 ../../../src/SDLInputState.cpp:584
540 msgid "Delete"
541 msgstr ""
542
543 #: ../../../src/InputState.cpp:427
544 msgid "ActionBar Accept"
545 msgstr ""
546
547 #: ../../../src/InputState.cpp:428
548 msgid "ActionBar Left"
549 msgstr ""
550
551 #: ../../../src/InputState.cpp:429
552 msgid "ActionBar Right"
553 msgstr ""
554
555 #: ../../../src/InputState.cpp:430
556 msgid "ActionBar Use"
557 msgstr ""
558
559 #: ../../../src/InputState.cpp:431
560 msgid "Developer Menu"
561 msgstr ""
562
563 #: ../../../src/InputState.cpp:433
564 msgid "Left Mouse"
565 msgstr ""
566
567 #: ../../../src/InputState.cpp:434
568 msgid "Middle Mouse"
569 msgstr ""
570
571 #: ../../../src/InputState.cpp:435
572 msgid "Right Mouse"
573 msgstr ""
574
575 #: ../../../src/InputState.cpp:436
576 msgid "Wheel Up"
577 msgstr ""
578
579 #: ../../../src/InputState.cpp:437
580 msgid "Wheel Down"
581 msgstr ""
582
583 #: ../../../src/InputState.cpp:438
584 msgid "Mouse X1"
585 msgstr ""
586
587 #: ../../../src/InputState.cpp:439
588 msgid "Mouse X2"
589 msgstr ""
590
591 #: ../../../src/ItemManager.cpp:450 ../../../src/ItemManager.cpp:453
592 msgid "Unknown Item"
593 msgstr ""
594
595 #: ../../../src/ItemManager.cpp:648 ../../../src/MenuPowers.cpp:887
596 #, c-format
597 msgid "%d%% Speed"
598 msgstr ""
599
600 #: ../../../src/ItemManager.cpp:652 ../../../src/MenuPowers.cpp:890
601 #, c-format
602 msgid "%d%% Attack Speed"
603 msgstr ""
604
605 #: ../../../src/ItemManager.cpp:674 ../../../src/MenuCharacter.cpp:354
606 #: ../../../src/MenuPowers.cpp:833
607 #, c-format
608 msgid "Resistance (%s)"
609 msgstr ""
610
611 #: ../../../src/ItemManager.cpp:684
612 #, c-format
613 msgid "Requires %s"
614 msgstr ""
615
616 #: ../../../src/ItemManager.cpp:733
617 msgid "Quest Item"
618 msgstr ""
619
620 #: ../../../src/ItemManager.cpp:760
621 #, c-format
622 msgid "Quality: %s"
623 msgstr ""
624
625 #: ../../../src/ItemManager.cpp:785
626 #, c-format
627 msgid "Absorb: %d-%d"
628 msgstr "Vaimennus: %d-%d"
629
630 #: ../../../src/ItemManager.cpp:787
631 #, c-format
632 msgid "Absorb: %d"
633 msgstr "Vaimennus: %d"
634
635 #: ../../../src/ItemManager.cpp:827 ../../../src/MenuPowers.cpp:1131
636 #: ../../../src/MenuPowers.cpp:1134
637 #, c-format
638 msgid "Requires Level %d"
639 msgstr "Vaatii tason %d"
640
641 #: ../../../src/ItemManager.cpp:838 ../../../src/MenuPowers.cpp:1123
642 #: ../../../src/MenuPowers.cpp:1125
643 #, c-format
644 msgid "Requires %s %d"
645 msgstr ""
646
647 #: ../../../src/ItemManager.cpp:849
648 #, c-format
649 msgid "Requires Class: %s"
650 msgstr ""
651
652 #: ../../../src/ItemManager.cpp:864 ../../../src/ItemManager.cpp:876
653 #, c-format
654 msgid "Buy Price: %d %s"
655 msgstr "Ostohinta: %d kultaa"
656
657 #: ../../../src/ItemManager.cpp:866 ../../../src/ItemManager.cpp:878
658 #, c-format
659 msgid "Buy Price: %d %s each"
660 msgstr "Ostohinta: á %d kultaa"
661
662 #: ../../../src/ItemManager.cpp:886
663 #, c-format
664 msgid "Sell Price: %d %s"
665 msgstr "Myyntihinta: %d kultaa"
666
667 #: ../../../src/ItemManager.cpp:888
668 #, c-format
669 msgid "Sell Price: %d %s each"
670 msgstr "Myyntihinta: á %d kultaa"
671
672 #: ../../../src/ItemManager.cpp:897
673 msgid "Set:"
674 msgstr ""
675
676 #: ../../../src/ItemManager.cpp:904
677 #, c-format
678 msgid "%d items:"
679 msgstr ""
680
681 #: ../../../src/ItemManager.cpp:917
682 #, c-format
683 msgid "Press [%s] to use"
684 msgstr ""
685
686 #: ../../../src/ItemManager.cpp:920
687 #, c-format
688 msgid "Press [%s] to read"
689 msgstr ""
690
691 #: ../../../src/MenuActionBar.cpp:87
692 msgid "Loot tooltip visibility"
693 msgstr ""
694
695 #: ../../../src/MenuActionBar.cpp:88
696 msgid "Mini-map mode"
697 msgstr ""
698
699 #: ../../../src/MenuActionBar.cpp:89
700 msgid "Always show stat bar labels"
701 msgstr ""
702
703 #: ../../../src/MenuActionBar.cpp:90
704 msgid "Show combat text"
705 msgstr "Näytä taisteluteksti"
706
707 #: ../../../src/MenuActionBar.cpp:254 ../../../src/MenuActionBar.cpp:261
708 #: ../../../src/MenuActionBar.cpp:264 ../../../src/MenuActionBar.cpp:271
709 #, c-format
710 msgid "Hotkey: %s"
711 msgstr ""
712
713 #: ../../../src/MenuActionBar.cpp:474
714 #, c-format
715 msgid "Default. Temporarily show all loot tooltips with '%s'."
716 msgstr ""
717
718 #: ../../../src/MenuActionBar.cpp:476
719 #, c-format
720 msgid "Show All. Temporarily hide all loot tooltips with '%s'."
721 msgstr ""
722
723 #: ../../../src/MenuActionBar.cpp:478
724 #, c-format
725 msgid "Hide All. Temporarily show all loot tooltips with '%s'."
726 msgstr ""
727
728 #: ../../../src/MenuActionBar.cpp:482
729 msgid "Visible"
730 msgstr ""
731
732 #: ../../../src/MenuActionBar.cpp:484
733 msgid "Visible (2x zoom)"
734 msgstr ""
735
736 #: ../../../src/MenuActionBar.cpp:486
737 msgid "Hidden"
738 msgstr ""
739
740 #: ../../../src/MenuActionBar.cpp:490 ../../../src/MenuActionBar.cpp:496
741 msgid "Enabled"
742 msgstr ""
743
744 #: ../../../src/MenuActionBar.cpp:492 ../../../src/MenuActionBar.cpp:498
745 msgid "Disabled"
746 msgstr ""
747
748 #: ../../../src/MenuActionBar.cpp:657
749 msgid "Not enough MP."
750 msgstr ""
751
752 #: ../../../src/MenuActiveEffects.cpp:124
753 #, c-format
754 msgid "x%d"
755 msgstr ""
756
757 #: ../../../src/MenuActiveEffects.cpp:219
758 msgid "Remaining:"
759 msgstr ""
760
761 #: ../../../src/MenuActiveEffects.cpp:225
762 #, c-format
763 msgid "x%d stacks"
764 msgstr ""
765
766 #: ../../../src/MenuCharacter.cpp:73 ../../../src/MenuCharacter.cpp:78
767 msgid "Name"
768 msgstr "Nimi"
769
770 #: ../../../src/MenuCharacter.cpp:74 ../../../src/MenuCharacter.cpp:79
771 msgid "Level"
772 msgstr "Taso"
773
774 #: ../../../src/MenuCharacter.cpp:310
775 #, c-format
776 msgid "%d unspent stat point"
777 msgstr ""
778
779 #: ../../../src/MenuCharacter.cpp:313
780 #, c-format
781 msgid "%d unspent stat points"
782 msgstr ""
783
784 #: ../../../src/MenuCharacter.cpp:355
785 #, c-format
786 msgid "Reduces the damage taken from \"%s\" elemental attacks."
787 msgstr ""
788
789 #: ../../../src/MenuCharacter.cpp:365 ../../../src/MenuManager.cpp:283
790 #, c-format
791 msgid "XP: %d"
792 msgstr "Kokemus: %d"
793
794 #: ../../../src/MenuCharacter.cpp:367
795 #, c-format
796 msgid "Next: %d"
797 msgstr "Seuraava: %d"
798
799 #: ../../../src/MenuCharacter.cpp:373
800 #, c-format
801 msgid "base (%d), bonus (%d)"
802 msgstr "perus (%d), lisä (%d)"
803
804 #: ../../../src/MenuCharacter.cpp:381 ../../../src/MenuCharacter.cpp:395
805 msgid "Related stats:"
806 msgstr ""
807
808 #: ../../../src/MenuCharacter.cpp:421 ../../../src/MenuCharacter.cpp:445
809 #, c-format
810 msgid "Each level grants %d."
811 msgstr ""
812
813 #: ../../../src/MenuCharacter.cpp:425 ../../../src/MenuCharacter.cpp:449
814 #, c-format
815 msgid "Each point of %s grants %d."
816 msgstr ""
817
818 #: ../../../src/MenuDevConsole.cpp:63
907 #: ../../../src/MenuConfig.cpp:515
908 msgid ""
909 "Enables the below setting that controls the screen gamma level. The behavior"
910 " of the gamma setting can vary between platforms."
911 msgstr ""
912
913 #: ../../../src/MenuConfig.cpp:516
914 msgid ""
915 "Provides additional text for information that is primarily conveyed through "
916 "color."
917 msgstr ""
918
919 #: ../../../src/MenuConfig.cpp:517
920 msgid ""
921 "Some mods will automatically hide the stat bars when they are inactive. "
922 "Disabling this option will keep them displayed at all times."
923 msgstr ""
924
925 #: ../../../src/MenuConfig.cpp:518
926 msgid ""
927 "When enabled, empty equipment slots will be filled with applicable items "
928 "when they are obtained."
929 msgstr ""
930
931 #: ../../../src/MenuConfig.cpp:519
932 msgid ""
933 "Shows a marker above enemies, allies, and the player when they are obscured "
934 "by tall objects."
935 msgstr ""
936
937 #: ../../../src/MenuConfig.cpp:520
938 msgid ""
939 "When enabled, tooltips for equipped items of the same type are shown next to"
940 " standard item tooltips."
941 msgstr ""
942
943 #: ../../../src/MenuConfig.cpp:521
944 msgid ""
945 "This allows the game to be controlled entirely with the keyboard (or "
946 "joystick)."
947 msgstr ""
948
949 #: ../../../src/MenuConfig.cpp:522
950 msgid ""
951 "When 'Move hero using mouse' is enabled, this setting controls if 'Main1' or"
952 " 'Main2' is used to move the hero. If enabled, 'Main2' will move the hero "
953 "instead of 'Main1'."
954 msgstr ""
955
956 #: ../../../src/MenuConfig.cpp:523
957 msgid ""
958 "When 'Move hero using mouse' is enabled, this setting controls if the Power "
959 "assigned to the movement button can be used by targeting an enemy. If this "
960 "setting is disabled, it is required to use 'Shift' to access the Power "
961 "assigned to the movement button."
962 msgstr ""
963
964 #: ../../../src/MenuConfig.cpp:524
965 msgid ""
966 "The player's attacks will be aimed in the direction of the mouse cursor when"
967 " this is enabled."
968 msgstr ""
969
970 #: ../../../src/MenuConfig.cpp:575
971 msgid "Active Mods"
972 msgstr "Käytössäolevat modit"
973
974 #: ../../../src/MenuConfig.cpp:584
975 msgid "Available Mods"
976 msgstr "Saatavilla olevat modit"
977
978 #: ../../../src/MenuConfig.cpp:603
979 msgid "<< Disable"
980 msgstr "<< Poista käytöstä"
981
982 #: ../../../src/MenuConfig.cpp:609
983 msgid "Enable >>"
984 msgstr "Ota käyttöön >>"
985
986 #: ../../../src/MenuConfig.cpp:1444
987 msgid "Version:"
988 msgstr ""
989
990 #: ../../../src/MenuConfig.cpp:1449
991 msgid "Game:"
992 msgstr ""
993
994 #: ../../../src/MenuConfig.cpp:1454
995 msgid "Engine version:"
996 msgstr ""
997
998 #: ../../../src/MenuConfig.cpp:1462
999 msgid "Requires mods:"
1000 msgstr ""
1001
1002 #: ../../../src/MenuConfig.cpp:1570 ../../../src/SDLInputState.cpp:748
1003 msgid "(none)"
1004 msgstr ""
1005
1006 #: ../../../src/MenuConfig.cpp:1587 ../../../src/MenuGameOver.cpp:73
1007 msgid "Save & Exit"
1008 msgstr ""
1009
1010 #: ../../../src/MenuDevConsole.cpp:65
8191011 msgid "Execute"
8201012 msgstr ""
8211013
822 #: ../../../src/MenuDevConsole.cpp:101 ../../../src/MenuDevConsole.cpp:151
1014 #: ../../../src/MenuDevConsole.cpp:103 ../../../src/MenuDevConsole.cpp:153
8231015 msgid "Developer Console"
8241016 msgstr ""
8251017
826 #: ../../../src/MenuDevConsole.cpp:141
1018 #: ../../../src/MenuDevConsole.cpp:143
8271019 #, c-format
8281020 msgid "Use '%s' to inspect with the cursor."
8291021 msgstr ""
8301022
831 #: ../../../src/MenuDevConsole.cpp:146
1023 #: ../../../src/MenuDevConsole.cpp:148
8321024 msgid "Arguments with spaces should be enclosed with double quotes. Example:"
8331025 msgstr ""
8341026
835 #: ../../../src/MenuDevConsole.cpp:147
1027 #: ../../../src/MenuDevConsole.cpp:149
8361028 msgid "Type 'help' to get a list of commands."
8371029 msgstr ""
8381030
839 #: ../../../src/MenuDevConsole.cpp:209 ../../../src/MenuDevConsole.cpp:213
1031 #: ../../../src/MenuDevConsole.cpp:211 ../../../src/MenuDevConsole.cpp:215
8401032 msgid "px"
8411033 msgstr ""
8421034
843 #: ../../../src/MenuDevConsole.cpp:224
1035 #: ../../../src/MenuDevConsole.cpp:226
8441036 msgid "Distance"
8451037 msgstr ""
8461038
847 #: ../../../src/MenuDevConsole.cpp:239 ../../../src/MenuDevConsole.cpp:286
1039 #: ../../../src/MenuDevConsole.cpp:241 ../../../src/MenuDevConsole.cpp:289
1040 #: ../../../src/MenuDevConsole.cpp:303
8481041 msgid "Entity"
8491042 msgstr ""
8501043
851 #: ../../../src/MenuDevConsole.cpp:261 ../../../src/MenuDevConsole.cpp:268
1044 #: ../../../src/MenuDevConsole.cpp:263 ../../../src/MenuDevConsole.cpp:270
8521045 msgid "none"
8531046 msgstr ""
8541047
855 #: ../../../src/MenuDevConsole.cpp:262 ../../../src/MenuDevConsole.cpp:264
1048 #: ../../../src/MenuDevConsole.cpp:264 ../../../src/MenuDevConsole.cpp:266
8561049 msgid "wall"
8571050 msgstr ""
8581051
859 #: ../../../src/MenuDevConsole.cpp:263 ../../../src/MenuDevConsole.cpp:265
1052 #: ../../../src/MenuDevConsole.cpp:265 ../../../src/MenuDevConsole.cpp:267
8601053 msgid "short wall / pit"
8611054 msgstr ""
8621055
863 #: ../../../src/MenuDevConsole.cpp:266
1056 #: ../../../src/MenuDevConsole.cpp:268
8641057 msgid "entity"
8651058 msgstr ""
8661059
867 #: ../../../src/MenuDevConsole.cpp:267
1060 #: ../../../src/MenuDevConsole.cpp:269
8681061 msgid "entity, ally"
8691062 msgstr ""
8701063
871 #: ../../../src/MenuDevConsole.cpp:274
1064 #: ../../../src/MenuDevConsole.cpp:276
8721065 msgid "Tile"
8731066 msgstr ""
8741067
875 #: ../../../src/MenuDevConsole.cpp:360
1068 #: ../../../src/MenuDevConsole.cpp:377
8761069 msgid "adds a power to the action bar"
8771070 msgstr ""
8781071
879 #: ../../../src/MenuDevConsole.cpp:361
1072 #: ../../../src/MenuDevConsole.cpp:378
8801073 msgid "turns on/off the display of the FPS counter"
8811074 msgstr ""
8821075
883 #: ../../../src/MenuDevConsole.cpp:362
1076 #: ../../../src/MenuDevConsole.cpp:379
8841077 msgid "turns on/off all of the HUD elements"
8851078 msgstr ""
8861079
887 #: ../../../src/MenuDevConsole.cpp:363
1080 #: ../../../src/MenuDevConsole.cpp:380
8881081 msgid "turns on/off the developer hud"
8891082 msgstr ""
8901083
891 #: ../../../src/MenuDevConsole.cpp:364
1084 #: ../../../src/MenuDevConsole.cpp:381
8921085 msgid ""
8931086 "Prints a list of powers that match a search term. No search term will list "
8941087 "all items"
8951088 msgstr ""
8961089
897 #: ../../../src/MenuDevConsole.cpp:365
1090 #: ../../../src/MenuDevConsole.cpp:382
8981091 msgid "Prints out all the map filenames located in the \"maps/\" directory."
8991092 msgstr ""
9001093
901 #: ../../../src/MenuDevConsole.cpp:366
1094 #: ../../../src/MenuDevConsole.cpp:383
9021095 msgid ""
9031096 "Prints out the active campaign statuses that match a search term. No search "
9041097 "term will list all active statuses"
9051098 msgstr ""
9061099
907 #: ../../../src/MenuDevConsole.cpp:367
1100 #: ../../../src/MenuDevConsole.cpp:384
9081101 msgid ""
9091102 "Prints a list of items that match a search term. No search term will list "
9101103 "all items"
9111104 msgstr ""
9121105
913 #: ../../../src/MenuDevConsole.cpp:368
1106 #: ../../../src/MenuDevConsole.cpp:385
9141107 msgid ""
9151108 "parses a series of event components and executes them as a single event"
9161109 msgstr ""
9171110
918 #: ../../../src/MenuDevConsole.cpp:369
1111 #: ../../../src/MenuDevConsole.cpp:386
9191112 msgid "clears the command history"
9201113 msgstr ""
9211114
922 #: ../../../src/MenuDevConsole.cpp:370
1115 #: ../../../src/MenuDevConsole.cpp:387
9231116 msgid "displays this text"
9241117 msgstr ""
9251118
926 #: ../../../src/MenuDevConsole.cpp:377
1119 #: ../../../src/MenuDevConsole.cpp:394
9271120 msgid "Toggled the developer hud"
9281121 msgstr ""
9291122
930 #: ../../../src/MenuDevConsole.cpp:381
1123 #: ../../../src/MenuDevConsole.cpp:398
9311124 msgid "Toggled the hud"
9321125 msgstr ""
9331126
934 #: ../../../src/MenuDevConsole.cpp:385
1127 #: ../../../src/MenuDevConsole.cpp:402
9351128 msgid "Toggled the FPS counter"
9361129 msgstr ""
9371130
938 #: ../../../src/MenuDevConsole.cpp:534
1131 #: ../../../src/MenuDevConsole.cpp:552
9391132 msgid "ERROR: Incorrect number of arguments"
9401133 msgstr ""
9411134
942 #: ../../../src/MenuDevConsole.cpp:536 ../../../src/MenuDevConsole.cpp:564
1135 #: ../../../src/MenuDevConsole.cpp:554 ../../../src/MenuDevConsole.cpp:582
9431136 msgid "HINT:"
9441137 msgstr ""
9451138
946 #: ../../../src/MenuDevConsole.cpp:536
1139 #: ../../../src/MenuDevConsole.cpp:554
9471140 msgid "<id>"
9481141 msgstr ""
9491142
950 #: ../../../src/MenuDevConsole.cpp:552
1143 #: ../../../src/MenuDevConsole.cpp:570
9511144 #, c-format
9521145 msgid "ERROR: '%s' is not a valid event key"
9531146 msgstr ""
9541147
955 #: ../../../src/MenuDevConsole.cpp:562
1148 #: ../../../src/MenuDevConsole.cpp:580
9561149 msgid "ERROR: Too few arguments"
9571150 msgstr ""
9581151
959 #: ../../../src/MenuDevConsole.cpp:564
1152 #: ../../../src/MenuDevConsole.cpp:582
9601153 msgid "<key>=<val> <key>=<val> ..."
9611154 msgstr ""
9621155
963 #: ../../../src/MenuDevConsole.cpp:569
1156 #: ../../../src/MenuDevConsole.cpp:587
9641157 msgid "ERROR: Unknown command"
9651158 msgstr ""
9661159
967 #: ../../../src/MenuDevConsole.cpp:571
1160 #: ../../../src/MenuDevConsole.cpp:589
9681161 msgid "HINT: Type help"
9691162 msgstr ""
9701163
971 #: ../../../src/MenuEnemy.cpp:138
1164 #: ../../../src/MenuEnemy.cpp:162
9721165 #, c-format
9731166 msgid "%s level %d"
9741167 msgstr "%s taso %d"
9751168
976 #: ../../../src/MenuEnemy.cpp:162
1169 #: ../../../src/MenuEnemy.cpp:186
9771170 msgid "Dead"
9781171 msgstr "Kuollut"
9791172
980 #: ../../../src/MenuEnemy.cpp:164
1173 #: ../../../src/MenuEnemy.cpp:188
9811174 msgid "Destroyed"
9821175 msgstr ""
9831176
984 #: ../../../src/MenuExit.cpp:85 ../../../src/MenuExit.cpp:139
985 msgid "Paused"
986 msgstr ""
987
988 #: ../../../src/MenuExit.cpp:91
989 msgid "Save & Exit"
990 msgstr ""
991
992 #: ../../../src/MenuExit.cpp:92
993 msgid "Exit"
994 msgstr "Poistu"
995
996 #: ../../../src/MenuExit.cpp:96
997 msgid "Continue"
998 msgstr ""
999
1000 #: ../../../src/MenuInventory.cpp:73
1001 msgid "Automatically equip items"
1002 msgstr ""
1003
1004 #: ../../../src/MenuInventory.cpp:188
1177 #: ../../../src/MenuGameOver.cpp:69
1178 msgid "Game Over"
1179 msgstr ""
1180
1181 #: ../../../src/MenuInventory.cpp:178
10051182 #, c-format
10061183 msgid "Lost %d%% of %s."
10071184 msgstr ""
10081185
1009 #: ../../../src/MenuInventory.cpp:195
1186 #: ../../../src/MenuInventory.cpp:185
10101187 #, c-format
10111188 msgid "Lost %d%% of total XP."
10121189 msgstr ""
10131190
1014 #: ../../../src/MenuInventory.cpp:200
1191 #: ../../../src/MenuInventory.cpp:190
10151192 #, c-format
10161193 msgid "Lost %d%% of current level XP."
10171194 msgstr ""
10181195
1019 #: ../../../src/MenuInventory.cpp:226
1196 #: ../../../src/MenuInventory.cpp:216
10201197 #, c-format
10211198 msgid "Lost %s."
10221199 msgstr ""
10231200
1024 #: ../../../src/MenuInventory.cpp:274 ../../../src/MenuStash.cpp:146
1201 #: ../../../src/MenuInventory.cpp:258 ../../../src/MenuStash.cpp:276
10251202 #, c-format
10261203 msgid "%d %s"
10271204 msgstr ""
10281205
1029 #: ../../../src/MenuInventory.cpp:317
1206 #: ../../../src/MenuInventory.cpp:301
10301207 msgid "Pick up item(s):"
10311208 msgstr ""
10321209
1033 #: ../../../src/MenuInventory.cpp:318
1210 #: ../../../src/MenuInventory.cpp:302
10341211 msgid "Use or equip item:"
10351212 msgstr ""
10361213
1037 #: ../../../src/MenuInventory.cpp:319
1214 #: ../../../src/MenuInventory.cpp:303
10381215 #, c-format
10391216 msgid "%s modifiers"
10401217 msgstr ""
10411218
1042 #: ../../../src/MenuInventory.cpp:320
1219 #: ../../../src/MenuInventory.cpp:304
10431220 msgid "Select a quantity of item:"
10441221 msgstr ""
10451222
1046 #: ../../../src/MenuInventory.cpp:323
1223 #: ../../../src/MenuInventory.cpp:307
10471224 msgid "Stash item stack:"
10481225 msgstr ""
10491226
1050 #: ../../../src/MenuInventory.cpp:325
1227 #: ../../../src/MenuInventory.cpp:309
10511228 msgid "Sell item stack:"
10521229 msgstr ""
10531230
1054 #: ../../../src/MenuInventory.cpp:592
1231 #: ../../../src/MenuInventory.cpp:576
10551232 msgid "You don't have enough of the required item."
10561233 msgstr ""
10571234
1058 #: ../../../src/MenuInventory.cpp:599
1235 #: ../../../src/MenuInventory.cpp:588
10591236 msgid "You can't use this item right now."
10601237 msgstr ""
10611238
1062 #: ../../../src/MenuInventory.cpp:611
1239 #: ../../../src/MenuInventory.cpp:600
10631240 msgid "This item can only be used from the action bar."
10641241 msgstr "Tätä tavaraa voit käyttää vain toimintapalkista."
10651242
1066 #: ../../../src/MenuInventory.cpp:729
1243 #: ../../../src/MenuInventory.cpp:718
10671244 msgid "Inventory is full."
10681245 msgstr "Tavaraluettelo on täynnä."
10691246
1070 #: ../../../src/MenuInventory.cpp:849
1247 #: ../../../src/MenuInventory.cpp:843
10711248 #, c-format
10721249 msgid "Not enough %s."
10731250 msgstr ""
10741251
1075 #: ../../../src/MenuInventory.cpp:869 ../../../src/MenuInventory.cpp:876
1252 #: ../../../src/MenuInventory.cpp:863 ../../../src/MenuInventory.cpp:870
10761253 msgid "This item can not be sold."
10771254 msgstr ""
10781255
10841261 msgid "Quests"
10851262 msgstr "Etsinnät"
10861263
1087 #: ../../../src/MenuManager.cpp:286
1264 #: ../../../src/MenuManager.cpp:305
10881265 #, c-format
10891266 msgid "XP: %d/%d"
10901267 msgstr "Kokemus: %d/%d"
10911268
1092 #: ../../../src/MenuManager.cpp:827
1269 #: ../../../src/MenuManager.cpp:875
10931270 msgid "This item can not be dropped."
1271 msgstr ""
1272
1273 #: ../../../src/MenuManager.cpp:1501
1274 msgid "Equipped"
1275 msgstr ""
1276
1277 #: ../../../src/MenuMovementType.cpp:87
1278 msgid "Select a Movement Type"
1279 msgstr ""
1280
1281 #: ../../../src/MenuMovementType.cpp:89
1282 msgid "Can be changed later in the Configuration menu."
1283 msgstr ""
1284
1285 #: ../../../src/MenuMovementType.cpp:92 ../../../src/MenuMovementType.cpp:122
1286 msgid "Keyboard"
1287 msgstr ""
1288
1289 #: ../../../src/MenuMovementType.cpp:93 ../../../src/MenuMovementType.cpp:128
1290 msgid "Mouse"
1291 msgstr ""
1292
1293 #: ../../../src/MenuMovementType.cpp:129
1294 msgid "Button"
10941295 msgstr ""
10951296
10961297 #: ../../../src/MenuNumPicker.cpp:59
10971298 msgid "Enter amount:"
10981299 msgstr ""
10991300
1100 #: ../../../src/MenuPowers.cpp:787
1301 #: ../../../src/MenuPowers.cpp:872
11011302 msgid "Passive"
11021303 msgstr ""
11031304
1104 #: ../../../src/MenuPowers.cpp:792
1305 #: ../../../src/MenuPowers.cpp:879
11051306 #, c-format
11061307 msgid "Costs %d MP"
11071308 msgstr "Kustannus %d MP"
11081309
1109 #: ../../../src/MenuPowers.cpp:796
1310 #: ../../../src/MenuPowers.cpp:883
11101311 #, c-format
11111312 msgid "Costs %d HP"
11121313 msgstr "Kustannus %d OP"
11131314
1114 #: ../../../src/MenuPowers.cpp:801
1315 #: ../../../src/MenuPowers.cpp:887
11151316 msgid "Cooldown:"
11161317 msgstr ""
11171318
1118 #: ../../../src/MenuPowers.cpp:866 ../../../src/MenuPowers.cpp:869
1319 #: ../../../src/MenuPowers.cpp:938 ../../../src/MenuPowers.cpp:941
11191320 msgid "Damage per second"
11201321 msgstr ""
11211322
1122 #: ../../../src/MenuPowers.cpp:872 ../../../src/MenuPowers.cpp:875
1323 #: ../../../src/MenuPowers.cpp:944 ../../../src/MenuPowers.cpp:947
11231324 msgid "HP per second"
11241325 msgstr ""
11251326
1126 #: ../../../src/MenuPowers.cpp:878 ../../../src/MenuPowers.cpp:881
1327 #: ../../../src/MenuPowers.cpp:950 ../../../src/MenuPowers.cpp:953
11271328 msgid "MP per second"
11281329 msgstr ""
11291330
1130 #: ../../../src/MenuPowers.cpp:885
1331 #: ../../../src/MenuPowers.cpp:957
11311332 msgid "Immobilize"
11321333 msgstr ""
11331334
1134 #: ../../../src/MenuPowers.cpp:893
1335 #: ../../../src/MenuPowers.cpp:965
11351336 msgid "Immunity"
11361337 msgstr ""
11371338
1138 #: ../../../src/MenuPowers.cpp:896
1339 #: ../../../src/MenuPowers.cpp:968
11391340 msgid "Immunity to damage over time"
11401341 msgstr ""
11411342
1142 #: ../../../src/MenuPowers.cpp:899
1343 #: ../../../src/MenuPowers.cpp:971
11431344 msgid "Immunity to slow"
11441345 msgstr ""
11451346
1146 #: ../../../src/MenuPowers.cpp:902
1347 #: ../../../src/MenuPowers.cpp:974
11471348 msgid "Immunity to stun"
11481349 msgstr ""
11491350
1150 #: ../../../src/MenuPowers.cpp:905
1351 #: ../../../src/MenuPowers.cpp:977
11511352 msgid "Immunity to HP steal"
11521353 msgstr ""
11531354
1154 #: ../../../src/MenuPowers.cpp:908
1355 #: ../../../src/MenuPowers.cpp:980
11551356 msgid "Immunity to MP steal"
11561357 msgstr ""
11571358
1158 #: ../../../src/MenuPowers.cpp:911
1359 #: ../../../src/MenuPowers.cpp:983
11591360 msgid "Immunity to knockback"
11601361 msgstr ""
11611362
1162 #: ../../../src/MenuPowers.cpp:914
1363 #: ../../../src/MenuPowers.cpp:986
11631364 msgid "Immunity to damage reflection"
11641365 msgstr ""
11651366
1166 #: ../../../src/MenuPowers.cpp:917
1367 #: ../../../src/MenuPowers.cpp:992
11671368 msgid "Stun"
11681369 msgstr ""
11691370
1170 #: ../../../src/MenuPowers.cpp:920
1371 #: ../../../src/MenuPowers.cpp:995
11711372 msgid "Automatic revive on death"
11721373 msgstr ""
11731374
1174 #: ../../../src/MenuPowers.cpp:923
1375 #: ../../../src/MenuPowers.cpp:998
11751376 msgid "Convert"
11761377 msgstr ""
11771378
1178 #: ../../../src/MenuPowers.cpp:926
1379 #: ../../../src/MenuPowers.cpp:1001
11791380 msgid "Fear"
11801381 msgstr ""
11811382
1182 #: ../../../src/MenuPowers.cpp:929
1383 #: ../../../src/MenuPowers.cpp:1004
11831384 msgid "Lifespan"
11841385 msgstr ""
11851386
1186 #: ../../../src/MenuPowers.cpp:953
1387 #: ../../../src/MenuPowers.cpp:1028
11871388 msgid "Magical Shield"
11881389 msgstr ""
11891390
1190 #: ../../../src/MenuPowers.cpp:982
1391 #: ../../../src/MenuPowers.cpp:1057
11911392 msgid "Healing"
11921393 msgstr ""
11931394
1194 #: ../../../src/MenuPowers.cpp:985
1395 #: ../../../src/MenuPowers.cpp:1060
11951396 msgid "Knockback"
11961397 msgstr ""
11971398
1198 #: ../../../src/MenuPowers.cpp:1010
1399 #: ../../../src/MenuPowers.cpp:1084
11991400 #, c-format
12001401 msgid "%d%% chance"
12011402 msgstr ""
12021403
1203 #: ../../../src/MenuPowers.cpp:1062
1404 #: ../../../src/MenuPowers.cpp:1136
12041405 msgid "Base Accuracy"
12051406 msgstr ""
12061407
1207 #: ../../../src/MenuPowers.cpp:1082
1408 #: ../../../src/MenuPowers.cpp:1156
12081409 msgid "Base Critical Chance"
12091410 msgstr ""
12101411
1211 #: ../../../src/MenuPowers.cpp:1090
1412 #: ../../../src/MenuPowers.cpp:1164
12121413 msgid "Ignores Absorbtion"
12131414 msgstr ""
12141415
1215 #: ../../../src/MenuPowers.cpp:1095
1416 #: ../../../src/MenuPowers.cpp:1169
12161417 msgid "Ignores Avoidance"
12171418 msgstr ""
12181419
1219 #: ../../../src/MenuPowers.cpp:1100
1420 #: ../../../src/MenuPowers.cpp:1174
12201421 #, c-format
12211422 msgid "%d%% Chance to crit slowed targets"
12221423 msgstr ""
12231424
1224 #: ../../../src/MenuPowers.cpp:1105
1425 #: ../../../src/MenuPowers.cpp:1179
12251426 #, c-format
12261427 msgid "Elemental Damage (%s)"
12271428 msgstr ""
12281429
1229 #: ../../../src/MenuPowers.cpp:1114
1430 #: ../../../src/MenuPowers.cpp:1188
12301431 #, c-format
12311432 msgid "Requires a %s"
12321433 msgstr ""
12331434
1234 #: ../../../src/MenuPowers.cpp:1151 ../../../src/MenuPowers.cpp:1154
1435 #: ../../../src/MenuPowers.cpp:1226 ../../../src/MenuPowers.cpp:1229
12351436 #, c-format
12361437 msgid "Requires Power: %s"
12371438 msgstr "Vaatii voiman: %s"
12381439
1239 #: ../../../src/MenuPowers.cpp:1163
1440 #: ../../../src/MenuPowers.cpp:1238
12401441 msgid "Click to Unlock (uses 1 Skill Point)"
12411442 msgstr ""
12421443
1243 #: ../../../src/MenuPowers.cpp:1167 ../../../src/MenuPowers.cpp:1169
1444 #: ../../../src/MenuPowers.cpp:1242 ../../../src/MenuPowers.cpp:1244
12441445 msgid "Requires 1 Skill Point"
12451446 msgstr ""
12461447
1247 #: ../../../src/MenuPowers.cpp:1355
1248 #, c-format
1249 msgid "%d unspent skill point"
1250 msgstr ""
1251
1252 #: ../../../src/MenuPowers.cpp:1358
1253 #, c-format
1254 msgid "%d unspent skill points"
1255 msgstr ""
1256
1257 #: ../../../src/MenuPowers.cpp:1388
1448 #: ../../../src/MenuPowers.cpp:1444
1449 #, c-format
1450 msgid "Available skill points: %d"
1451 msgstr ""
1452
1453 #: ../../../src/MenuPowers.cpp:1476
12581454 msgid "Next Level:"
12591455 msgstr ""
12601456
1261 #: ../../../src/MenuStash.cpp:96
1262 msgid "Shared Stash"
1263 msgstr "Jaettu kätkö"
1264
1265 #: ../../../src/MenuStash.cpp:209
1266 msgid "Can not store quest items in the stash."
1267 msgstr ""
1268
1269 #: ../../../src/MenuStash.cpp:219
1457 #: ../../../src/MenuStash.cpp:80 ../../../src/MenuStash.cpp:161
1458 msgid "Stash"
1459 msgstr ""
1460
1461 #: ../../../src/MenuStash.cpp:174 ../../../src/MenuStash.cpp:188
1462 msgid "Private"
1463 msgstr ""
1464
1465 #: ../../../src/MenuStash.cpp:175
1466 msgid "Shared"
1467 msgstr ""
1468
1469 #: ../../../src/MenuStash.cpp:340
1470 msgid "This item can not be stored in the stash."
1471 msgstr ""
1472
1473 #: ../../../src/MenuStash.cpp:345
1474 msgid "This item can not be stored in the private stash."
1475 msgstr ""
1476
1477 #: ../../../src/MenuStash.cpp:350
1478 msgid "This item can not be stored in the shared stash."
1479 msgstr ""
1480
1481 #: ../../../src/MenuStash.cpp:360
12701482 msgid "Stash is full."
12711483 msgstr ""
12721484
1273 #: ../../../src/MenuTalker.cpp:454
1485 #: ../../../src/MenuStash.cpp:414
1486 #, c-format
1487 msgid "Can not store item in stash: %s"
1488 msgstr ""
1489
1490 #: ../../../src/MenuTalker.cpp:448
1491 #, c-format
1492 msgid "<dialog node %d>"
1493 msgstr ""
1494
1495 #: ../../../src/MenuTalker.cpp:456
12741496 msgid "Trade"
12751497 msgstr "Tee kaupat"
12761498
1277 #: ../../../src/MenuVendor.cpp:58
1499 #: ../../../src/MenuVendor.cpp:60
12781500 msgid "Buyback"
12791501 msgstr "Takaisinosto"
12801502
1281 #: ../../../src/MenuVendor.cpp:279
1503 #: ../../../src/MenuVendor.cpp:283
12821504 msgid "Vendor"
12831505 msgstr "Kauppias"
12841506
1285 #: ../../../src/PowerManager.cpp:1136
1507 #: ../../../src/PowerManager.cpp:1208
12861508 #, c-format
12871509 msgid "+%d Shield"
12881510 msgstr "+%d kilpi"
12891511
1290 #: ../../../src/PowerManager.cpp:1392
1512 #: ../../../src/PowerManager.cpp:1465
12911513 msgid "You are already transformed, untransform first."
12921514 msgstr "Olet jo muuntunut, palaa ensin entisellesi."
12931515
1294 #: ../../../src/PowerManager.cpp:1404
1516 #: ../../../src/PowerManager.cpp:1477
12951517 msgid "Could not untransform at this position."
12961518 msgstr ""
12971519
12991521 msgid "Completed Quests"
13001522 msgstr ""
13011523
1302 #: ../../../src/SaveLoad.cpp:243 ../../../src/SaveLoad.cpp:244
1524 #: ../../../src/SaveLoad.cpp:250 ../../../src/SaveLoad.cpp:251
13031525 msgid "Game saved."
13041526 msgstr ""
13051527
1306 #: ../../../src/SDLInputState.cpp:582
1528 #: ../../../src/SDLInputState.cpp:643
1529 msgid "BkSp"
1530 msgstr ""
1531
1532 #: ../../../src/SDLInputState.cpp:644
1533 msgid "Caps"
1534 msgstr ""
1535
1536 #: ../../../src/SDLInputState.cpp:645
1537 msgid "Del"
1538 msgstr ""
1539
1540 #: ../../../src/SDLInputState.cpp:647 ../../../src/SDLInputState.cpp:677
1541 msgid "End"
1542 msgstr ""
1543
1544 #: ../../../src/SDLInputState.cpp:648
1545 msgid "Esc"
1546 msgstr ""
1547
1548 #: ../../../src/SDLInputState.cpp:649 ../../../src/SDLInputState.cpp:679
1549 msgid "Home"
1550 msgstr ""
1551
1552 #: ../../../src/SDLInputState.cpp:650
1553 msgid "Ins"
1554 msgstr ""
1555
1556 #: ../../../src/SDLInputState.cpp:651
1557 msgid "LAlt"
1558 msgstr ""
1559
1560 #: ../../../src/SDLInputState.cpp:652
1561 msgid "LCtrl"
1562 msgstr ""
1563
1564 #: ../../../src/SDLInputState.cpp:654
1565 msgid "LShft"
1566 msgstr ""
1567
1568 #: ../../../src/SDLInputState.cpp:655
1569 msgid "Num"
1570 msgstr ""
1571
1572 #: ../../../src/SDLInputState.cpp:656
1573 msgid "PgDn"
1574 msgstr ""
1575
1576 #: ../../../src/SDLInputState.cpp:657
1577 msgid "PgUp"
1578 msgstr ""
1579
1580 #: ../../../src/SDLInputState.cpp:658 ../../../src/SDLInputState.cpp:688
1581 msgid "Pause"
1582 msgstr ""
1583
1584 #: ../../../src/SDLInputState.cpp:659
1585 msgid "Print"
1586 msgstr ""
1587
1588 #: ../../../src/SDLInputState.cpp:660
1589 msgid "RAlt"
1590 msgstr ""
1591
1592 #: ../../../src/SDLInputState.cpp:661
1593 msgid "RCtrl"
1594 msgstr ""
1595
1596 #: ../../../src/SDLInputState.cpp:662
1597 msgid "Ret"
1598 msgstr ""
1599
1600 #: ../../../src/SDLInputState.cpp:664
1601 msgid "RShft"
1602 msgstr ""
1603
1604 #: ../../../src/SDLInputState.cpp:665
1605 msgid "SLock"
1606 msgstr ""
1607
1608 #: ../../../src/SDLInputState.cpp:666
1609 msgid "Spc"
1610 msgstr ""
1611
1612 #: ../../../src/SDLInputState.cpp:667 ../../../src/SDLInputState.cpp:697
1613 msgid "Tab"
1614 msgstr ""
1615
1616 #: ../../../src/SDLInputState.cpp:673
13071617 msgid "Backspace"
13081618 msgstr ""
13091619
1310 #: ../../../src/SDLInputState.cpp:583
1620 #: ../../../src/SDLInputState.cpp:674
13111621 msgid "CapsLock"
13121622 msgstr ""
13131623
1314 #: ../../../src/SDLInputState.cpp:586
1315 msgid "End"
1316 msgstr ""
1317
1318 #: ../../../src/SDLInputState.cpp:587
1624 #: ../../../src/SDLInputState.cpp:678
13191625 msgid "Escape"
13201626 msgstr ""
13211627
1322 #: ../../../src/SDLInputState.cpp:588
1323 msgid "Home"
1324 msgstr ""
1325
1326 #: ../../../src/SDLInputState.cpp:589
1628 #: ../../../src/SDLInputState.cpp:680
13271629 msgid "Insert"
13281630 msgstr ""
13291631
1330 #: ../../../src/SDLInputState.cpp:590
1632 #: ../../../src/SDLInputState.cpp:681
13311633 msgid "Left Alt"
13321634 msgstr ""
13331635
1334 #: ../../../src/SDLInputState.cpp:591
1636 #: ../../../src/SDLInputState.cpp:682
13351637 msgid "Left Ctrl"
13361638 msgstr ""
13371639
1338 #: ../../../src/SDLInputState.cpp:593
1640 #: ../../../src/SDLInputState.cpp:684
13391641 msgid "Left Shift"
13401642 msgstr ""
13411643
1342 #: ../../../src/SDLInputState.cpp:594
1644 #: ../../../src/SDLInputState.cpp:685
13431645 msgid "NumLock"
13441646 msgstr ""
13451647
1346 #: ../../../src/SDLInputState.cpp:595
1648 #: ../../../src/SDLInputState.cpp:686
13471649 msgid "PageDown"
13481650 msgstr ""
13491651
1350 #: ../../../src/SDLInputState.cpp:596
1652 #: ../../../src/SDLInputState.cpp:687
13511653 msgid "PageUp"
13521654 msgstr ""
13531655
1354 #: ../../../src/SDLInputState.cpp:597
1355 msgid "Pause"
1356 msgstr ""
1357
1358 #: ../../../src/SDLInputState.cpp:598
1656 #: ../../../src/SDLInputState.cpp:689
13591657 msgid "PrintScreen"
13601658 msgstr ""
13611659
1362 #: ../../../src/SDLInputState.cpp:599
1660 #: ../../../src/SDLInputState.cpp:690
13631661 msgid "Right Alt"
13641662 msgstr ""
13651663
1366 #: ../../../src/SDLInputState.cpp:600
1664 #: ../../../src/SDLInputState.cpp:691
13671665 msgid "Right Ctrl"
13681666 msgstr ""
13691667
1370 #: ../../../src/SDLInputState.cpp:601
1668 #: ../../../src/SDLInputState.cpp:692
13711669 msgid "Return"
13721670 msgstr ""
13731671
1374 #: ../../../src/SDLInputState.cpp:603
1672 #: ../../../src/SDLInputState.cpp:694
13751673 msgid "Right Shift"
13761674 msgstr ""
13771675
1378 #: ../../../src/SDLInputState.cpp:604
1676 #: ../../../src/SDLInputState.cpp:695
13791677 msgid "ScrollLock"
13801678 msgstr ""
13811679
1382 #: ../../../src/SDLInputState.cpp:605
1680 #: ../../../src/SDLInputState.cpp:696
13831681 msgid "Space"
13841682 msgstr ""
13851683
1386 #: ../../../src/SDLInputState.cpp:606
1387 msgid "Tab"
1388 msgstr ""
1389
1390 #: ../../../src/SDLInputState.cpp:620
1684 #: ../../../src/SDLInputState.cpp:710
1685 #, c-format
1686 msgid "M%d"
1687 msgstr ""
1688
1689 #: ../../../src/SDLInputState.cpp:716
13911690 #, c-format
13921691 msgid "Mouse %d"
13931692 msgstr ""
13941693
1395 #: ../../../src/SDLInputState.cpp:628
1694 #: ../../../src/SDLInputState.cpp:726
1695 #, c-format
1696 msgid "JX%d-"
1697 msgstr ""
1698
1699 #: ../../../src/SDLInputState.cpp:728
13961700 #, c-format
13971701 msgid "Axis %d -"
13981702 msgstr ""
13991703
1400 #: ../../../src/SDLInputState.cpp:630
1704 #: ../../../src/SDLInputState.cpp:732
1705 #, c-format
1706 msgid "JX%d+"
1707 msgstr ""
1708
1709 #: ../../../src/SDLInputState.cpp:734
14011710 #, c-format
14021711 msgid "Axis %d +"
14031712 msgstr ""
14041713
1405 #: ../../../src/SDLInputState.cpp:633
1714 #: ../../../src/SDLInputState.cpp:739
1715 #, c-format
1716 msgid "JB%d"
1717 msgstr ""
1718
1719 #: ../../../src/SDLInputState.cpp:741
14061720 #, c-format
14071721 msgid "Button %d"
14081722 msgstr ""
14091723
1410 #: ../../../src/SDLInputState.cpp:637
1411 msgid "(none)"
1412 msgstr ""
1413
1414 #: ../../../src/SDLInputState.cpp:677
1724 #: ../../../src/SDLInputState.cpp:787
14151725 msgid "Touch control D-Pad"
14161726 msgstr ""
14171727
1418 #: ../../../src/SDLInputState.cpp:701
1728 #: ../../../src/SDLInputState.cpp:810
14191729 msgid "Touch control buttons"
14201730 msgstr ""
14211731
1422 #: ../../../src/SDLInputState.cpp:716
1732 #: ../../../src/SDLInputState.cpp:824
14231733 msgid "Tap"
14241734 msgstr ""
14251735
1426 #: ../../../src/SDLInputState.cpp:760 ../../../src/SDLInputState.cpp:764
1427 #: ../../../src/SDLInputState.cpp:768
1736 #: ../../../src/SDLInputState.cpp:876 ../../../src/SDLInputState.cpp:878
1737 #, c-format
1738 msgid "Can not bind: %s"
1739 msgstr ""
1740
1741 #: ../../../src/SDLInputState.cpp:890 ../../../src/SDLInputState.cpp:894
1742 #: ../../../src/SDLInputState.cpp:898
14281743 #, c-format
14291744 msgid "'%s' is no longer bound to:"
14301745 msgstr ""
15831898 msgid "Base MP"
15841899 msgstr ""
15851900
1586 #: ../../../src/Utils.cpp:346
1901 #: ../../../src/Utils.cpp:365
15871902 msgid "k"
15881903 msgstr ""
15891904
1590 #: ../../../src/Utils.cpp:580
1905 #: ../../../src/Utils.cpp:635
15911906 #, c-format
15921907 msgid "%s second"
15931908 msgstr ""
15941909
1595 #: ../../../src/Utils.cpp:583
1910 #: ../../../src/Utils.cpp:638
15961911 #, c-format
15971912 msgid "%s seconds"
15981913 msgstr ""
44 #
55 # Translators:
66 # Justin Jacobs <jajdorkster@gmail.com>, 2018
7 # syl_, 2019
8 # Christophe Nemo <djlittlenemo@gmail.com>, 2020
79 #
810 #, fuzzy
911 msgid ""
1012 msgstr ""
1113 "Project-Id-Version: PACKAGE VERSION\n"
1214 "Report-Msgid-Bugs-To: \n"
13 "POT-Creation-Date: 2018-11-17 21:50-0500\n"
15 "POT-Creation-Date: 2021-05-23 20:34-0400\n"
1416 "PO-Revision-Date: 2018-03-28 19:16+0000\n"
15 "Last-Translator: Justin Jacobs <jajdorkster@gmail.com>, 2018\n"
17 "Last-Translator: Christophe Nemo <djlittlenemo@gmail.com>, 2020\n"
1618 "Language-Team: French (https://www.transifex.com/flareorg/teams/84925/fr/)\n"
1719 "MIME-Version: 1.0\n"
1820 "Content-Type: text/plain; charset=UTF-8\n"
2022 "Language: fr\n"
2123 "Plural-Forms: nplurals=2; plural=(n > 1);\n"
2224
23 #: ../../../src/Avatar.cpp:367
25 #: ../../../src/Avatar.cpp:391
26 msgid "Your health is low!"
27 msgstr "Votre santé est basse !"
28
29 #: ../../../src/Avatar.cpp:421
2430 #, c-format
2531 msgid "Congratulations, you have reached level %d!"
2632 msgstr "Félicitations, vous avez atteint le niveau %d !"
2733
28 #: ../../../src/Avatar.cpp:369
29 msgid "You may increase one attribute through the Character Menu."
30 msgstr "Vous pouvez améliorer un attribut via le menu Personnage."
31
32 #: ../../../src/Avatar.cpp:583
33 msgid "You are defeated. Game over! ${INPUT_CONTINUE} to exit to Title."
34 msgstr ""
35
36 #: ../../../src/Avatar.cpp:589
37 msgid "You are defeated. ${INPUT_CONTINUE} to continue."
38 msgstr ""
39
40 #: ../../../src/Avatar.cpp:839
34 #: ../../../src/Avatar.cpp:423
35 msgid "You may increase one or more attributes through the Character Menu."
36 msgstr ""
37 "Vous pouvez améliorer un ou plusieurs attributs via le menu Personnage."
38
39 #: ../../../src/Avatar.cpp:427
40 msgid "You may unlock one or more abilities through the Powers Menu."
41 msgstr "Vous pouvez débloquer une ou plusieurs capacités via le menu Pouvoirs"
42
43 #: ../../../src/Avatar.cpp:689
44 msgid "You are defeated."
45 msgstr ""
46
47 #: ../../../src/Avatar.cpp:935
4148 msgid "Transformation expired. You have been moved back to a safe place."
4249 msgstr "Transformation expirée. On vous a ramené à un endroit sûr."
4350
44 #: ../../../src/CampaignManager.cpp:153
51 #: ../../../src/CampaignManager.cpp:152
4552 #, c-format
4653 msgid "%d %s removed."
4754 msgstr "%d %s supprimé."
4855
49 #: ../../../src/CampaignManager.cpp:162
56 #: ../../../src/CampaignManager.cpp:171
57 #, c-format
58 msgid "%s x%d removed."
59 msgstr "%s x%d supprimés."
60
61 #: ../../../src/CampaignManager.cpp:173
5062 #, c-format
5163 msgid "%s removed."
5264 msgstr "%s supprimé."
5365
54 #: ../../../src/CampaignManager.cpp:175
66 #: ../../../src/CampaignManager.cpp:187
67 #, c-format
68 msgid "You receive %d %s."
69 msgstr "Vous recevez %d %s."
70
71 #: ../../../src/CampaignManager.cpp:191
72 #, c-format
73 msgid "You receive %s x%d."
74 msgstr "Vous recevez %s x%d."
75
76 #: ../../../src/CampaignManager.cpp:193
5577 #, c-format
5678 msgid "You receive %s."
5779 msgstr "Vous recevez %s."
5880
59 #: ../../../src/CampaignManager.cpp:177
60 #, c-format
61 msgid "You receive %s x%d."
62 msgstr "Vous recevez %s x%d."
63
64 #: ../../../src/CampaignManager.cpp:186
65 #, c-format
66 msgid "You receive %d %s."
67 msgstr "Vous recevez %d %s."
68
69 #: ../../../src/CampaignManager.cpp:195
81 #: ../../../src/CampaignManager.cpp:210
7082 #, c-format
7183 msgid "You receive %d XP."
7284 msgstr "Vous recevez %d points d'expérience."
7385
74 #: ../../../src/CampaignManager.cpp:201
86 #: ../../../src/CampaignManager.cpp:216
7587 msgid "HP restored."
7688 msgstr "PV restaurés."
7789
78 #: ../../../src/CampaignManager.cpp:205
90 #: ../../../src/CampaignManager.cpp:220
7991 msgid "MP restored."
8092 msgstr "PM restaurés."
8193
82 #: ../../../src/CampaignManager.cpp:210
94 #: ../../../src/CampaignManager.cpp:225
8395 msgid "HP and MP restored."
8496 msgstr "PV et PM restaurés."
8597
86 #: ../../../src/CampaignManager.cpp:214
98 #: ../../../src/CampaignManager.cpp:229
8799 msgid "Negative effects removed."
88100 msgstr "Effet négatif supprimé"
89101
90 #: ../../../src/CampaignManager.cpp:220
102 #: ../../../src/CampaignManager.cpp:235
91103 msgid "HP and MP restored, negative effects removed"
92104 msgstr "PV et PM restaurés, effet négatif supprimé"
93105
97109 "\n"
98110 "Often slower, but less likely to have issues."
99111 msgstr ""
112 "Rendu SDL logiciel\n"
113 "\n"
114 "Souvent plus lent, mais plus stable."
100115
101116 #: ../../../src/DeviceList.cpp:59
102117 msgid ""
104119 "\n"
105120 "The default renderer that is often faster than the SDL software renderer."
106121 msgstr ""
107
108 #: ../../../src/EngineSettings.cpp:561
122 "Rendu SDL matériel\n"
123 "\n"
124 "Le rendu par défaut souvent plus rapide que le rendu SDL logiciel."
125
126 #: ../../../src/EngineSettings.cpp:586
109127 msgid "Adventurer"
110128 msgstr "Aventurier"
111129
112 #: ../../../src/Entity.cpp:511
130 #: ../../../src/Entity.cpp:527
113131 msgid "miss"
114132 msgstr "manqué"
115133
116 #: ../../../src/Entity.cpp:548 ../../../src/PowerManager.cpp:1152
117 #: ../../../src/StatBlock.cpp:805 ../../../src/StatBlock.cpp:811
134 #: ../../../src/Entity.cpp:565 ../../../src/PowerManager.cpp:1224
135 #: ../../../src/StatBlock.cpp:917 ../../../src/StatBlock.cpp:923
118136 #, c-format
119137 msgid "+%d HP"
120138 msgstr "+%d PV"
121139
122 #: ../../../src/Entity.cpp:555 ../../../src/StatBlock.cpp:816
123 #: ../../../src/StatBlock.cpp:822
140 #: ../../../src/Entity.cpp:572 ../../../src/StatBlock.cpp:928
141 #: ../../../src/StatBlock.cpp:934
124142 #, c-format
125143 msgid "+%d MP"
126144 msgstr "+%d PM"
127145
128 #: ../../../src/EventManager.cpp:738
146 #: ../../../src/EventManager.cpp:792
129147 msgid "Unknown destination"
130148 msgstr "Destination inconnue"
131149
132 #: ../../../src/GameStateConfigBase.cpp:89
133 #: ../../../src/GameStateConfigBase.cpp:110
150 #: ../../../src/GameState.cpp:37 ../../../src/GameState.cpp:58
151 msgid "Loading..."
152 msgstr "Chargement..."
153
154 #: ../../../src/GameStateLoad.cpp:90 ../../../src/GameStateLoad.cpp:103
155 msgid "Delete Save"
156 msgstr "Suppr. sauvegarde"
157
158 #: ../../../src/GameStateLoad.cpp:90
159 msgid "Delete this save?"
160 msgstr "Supprimer cette sauvegarde ?"
161
162 #: ../../../src/GameStateLoad.cpp:92
163 msgid "Exit to Title"
164 msgstr "Retour au menu"
165
166 #: ../../../src/GameStateLoad.cpp:95
167 msgid "New Game"
168 msgstr "Nouvelle partie"
169
170 #: ../../../src/GameStateLoad.cpp:99 ../../../src/GameStateLoad.cpp:607
171 msgid "Choose a Slot"
172 msgstr "Choisir une partie"
173
174 #: ../../../src/GameStateLoad.cpp:580 ../../../src/GameStateLoad.cpp:601
175 msgid "Enable a story mod to continue"
176 msgstr "Activez un mod scénario pour continuer"
177
178 #: ../../../src/GameStateLoad.cpp:596
179 msgid "Load Game"
180 msgstr "Charger la partie"
181
182 #: ../../../src/GameStateLoad.cpp:705
183 msgid "Entering game world..."
184 msgstr "Entrée dans le monde du jeu..."
185
186 #: ../../../src/GameStateLoad.cpp:708
187 msgid "Loading saved game..."
188 msgstr "Chargement d'une partie..."
189
190 #: ../../../src/GameStateLoad.cpp:741
191 msgid "Invalid save"
192 msgstr "Sauvegarde invalide"
193
194 #: ../../../src/GameStateLoad.cpp:765 ../../../src/ItemManager.cpp:745
195 #: ../../../src/MenuPowers.cpp:860 ../../../src/MenuPowers.cpp:1219
196 #: ../../../src/MenuPowers.cpp:1631
197 #, c-format
198 msgid "Level %d"
199 msgstr "Niveau %d"
200
201 #: ../../../src/GameStateNew.cpp:66 ../../../src/InputState.cpp:416
202 #: ../../../src/MenuConfig.cpp:246
203 msgid "Cancel"
204 msgstr "Annuler"
205
206 #: ../../../src/GameStateNew.cpp:69
207 msgid "Create"
208 msgstr "Créer"
209
210 #: ../../../src/GameStateNew.cpp:77
211 msgid "Randomize"
212 msgstr "Aléatoire"
213
214 #: ../../../src/GameStateNew.cpp:93
215 msgid "Choose a Portrait"
216 msgstr "Choisissez un portrait"
217
218 #: ../../../src/GameStateNew.cpp:97
219 msgid "Choose a Name"
220 msgstr "Choisissez un nom"
221
222 #: ../../../src/GameStateNew.cpp:101
223 msgid "Permadeath?"
224 msgstr "Mort permanente ? "
225
226 #: ../../../src/GameStateNew.cpp:105
227 msgid "Choose a Class"
228 msgstr "Choisissez une classe"
229
230 #: ../../../src/GameStateTitle.cpp:107
231 msgid "Play Game"
232 msgstr "Jouer"
233
234 #: ../../../src/GameStateTitle.cpp:110
235 msgid "Enable a core mod to continue"
236 msgstr "Activez un mod de base pour continuer"
237
238 #: ../../../src/GameStateTitle.cpp:114 ../../../src/MenuMiniMap.cpp:152
239 msgid "Configuration"
240 msgstr "Configuration"
241
242 #: ../../../src/GameStateTitle.cpp:117
243 msgid "Credits"
244 msgstr "Crédits"
245
246 #: ../../../src/GameStateTitle.cpp:120
247 msgid "Exit Game"
248 msgstr "Quitter"
249
250 #: ../../../src/InputState.cpp:417
251 msgid "Accept"
252 msgstr "Accepter"
253
254 #: ../../../src/InputState.cpp:418 ../../../src/MenuMovementType.cpp:123
255 #: ../../../src/MenuMovementType.cpp:132 ../../../src/SDLInputState.cpp:668
256 #: ../../../src/SDLInputState.cpp:698
257 msgid "Up"
258 msgstr "Haut"
259
260 #: ../../../src/InputState.cpp:419 ../../../src/MenuMovementType.cpp:125
261 #: ../../../src/MenuMovementType.cpp:134 ../../../src/SDLInputState.cpp:646
262 #: ../../../src/SDLInputState.cpp:676
263 msgid "Down"
264 msgstr "Bas"
265
266 #: ../../../src/InputState.cpp:420 ../../../src/MenuMovementType.cpp:124
267 #: ../../../src/MenuMovementType.cpp:133 ../../../src/SDLInputState.cpp:653
268 #: ../../../src/SDLInputState.cpp:683
269 msgid "Left"
270 msgstr "Gauche"
271
272 #: ../../../src/InputState.cpp:421 ../../../src/MenuMovementType.cpp:126
273 #: ../../../src/MenuMovementType.cpp:135 ../../../src/SDLInputState.cpp:663
274 #: ../../../src/SDLInputState.cpp:693
275 msgid "Right"
276 msgstr "Droite"
277
278 #: ../../../src/InputState.cpp:422
279 msgid "Bar1"
280 msgstr "Emplacement 1"
281
282 #: ../../../src/InputState.cpp:423
283 msgid "Bar2"
284 msgstr "Emplacement 2"
285
286 #: ../../../src/InputState.cpp:424
287 msgid "Bar3"
288 msgstr "Emplacement 3"
289
290 #: ../../../src/InputState.cpp:425
291 msgid "Bar4"
292 msgstr "Emplacement 4"
293
294 #: ../../../src/InputState.cpp:426
295 msgid "Bar5"
296 msgstr "Emplacement 5"
297
298 #: ../../../src/InputState.cpp:427
299 msgid "Bar6"
300 msgstr "Emplacement 6"
301
302 #: ../../../src/InputState.cpp:428
303 msgid "Bar7"
304 msgstr "Emplacement 7"
305
306 #: ../../../src/InputState.cpp:429
307 msgid "Bar8"
308 msgstr "Emplacement 8"
309
310 #: ../../../src/InputState.cpp:430
311 msgid "Bar9"
312 msgstr "Emplacement 9"
313
314 #: ../../../src/InputState.cpp:431
315 msgid "Bar0"
316 msgstr "Emplacement 0"
317
318 #: ../../../src/InputState.cpp:432 ../../../src/MenuActionBar.cpp:84
319 #: ../../../src/MenuCharacter.cpp:54
320 msgid "Character"
321 msgstr "Personnage"
322
323 #: ../../../src/InputState.cpp:433 ../../../src/MenuActionBar.cpp:85
324 #: ../../../src/MenuInventory.cpp:130 ../../../src/MenuVendor.cpp:59
325 msgid "Inventory"
326 msgstr "Inventaire"
327
328 #: ../../../src/InputState.cpp:434 ../../../src/MenuActionBar.cpp:86
329 #: ../../../src/MenuPowers.cpp:158
330 msgid "Powers"
331 msgstr "Pouvoirs"
332
333 #: ../../../src/InputState.cpp:435 ../../../src/MenuActionBar.cpp:87
334 #: ../../../src/MenuLog.cpp:72
335 msgid "Log"
336 msgstr "Journal"
337
338 #: ../../../src/InputState.cpp:436
339 msgid "Main1"
340 msgstr "Principal 1"
341
342 #: ../../../src/InputState.cpp:437
343 msgid "Main2"
344 msgstr "Principal 2"
345
346 #: ../../../src/InputState.cpp:438
347 msgid "Ctrl"
348 msgstr "Ctrl"
349
350 #: ../../../src/InputState.cpp:439
351 msgid "Shift"
352 msgstr "Maj"
353
354 #: ../../../src/InputState.cpp:440
355 msgid "Alt"
356 msgstr "Alt"
357
358 #: ../../../src/InputState.cpp:441 ../../../src/SDLInputState.cpp:675
359 msgid "Delete"
360 msgstr "Supprimer"
361
362 #: ../../../src/InputState.cpp:442
363 msgid "ActionBar Accept"
364 msgstr "Barre d'action Accepter"
365
366 #: ../../../src/InputState.cpp:443
367 msgid "ActionBar Left"
368 msgstr "Barre d'action Gauche"
369
370 #: ../../../src/InputState.cpp:444
371 msgid "ActionBar Right"
372 msgstr "Barre d'action Droite"
373
374 #: ../../../src/InputState.cpp:445
375 msgid "ActionBar Use"
376 msgstr "Barre d'action Utiliser"
377
378 #: ../../../src/InputState.cpp:446
379 msgid "Developer Menu"
380 msgstr "Menu développeur"
381
382 #: ../../../src/InputState.cpp:448
383 msgid "Left Mouse"
384 msgstr "Clic gauche"
385
386 #: ../../../src/InputState.cpp:449
387 msgid "Middle Mouse"
388 msgstr "Clic molette"
389
390 #: ../../../src/InputState.cpp:450
391 msgid "Right Mouse"
392 msgstr "Clic droit"
393
394 #: ../../../src/InputState.cpp:451
395 msgid "Wheel Up"
396 msgstr "Molette haut"
397
398 #: ../../../src/InputState.cpp:452
399 msgid "Wheel Down"
400 msgstr "Molette bas"
401
402 #: ../../../src/InputState.cpp:453
403 msgid "Mouse X1"
404 msgstr "Souris X1"
405
406 #: ../../../src/InputState.cpp:454
407 msgid "Mouse X2"
408 msgstr "Souris X2"
409
410 #: ../../../src/ItemManager.cpp:475
411 msgid "Unknown Item"
412 msgstr "Objet inconnu"
413
414 #: ../../../src/ItemManager.cpp:646 ../../../src/MenuPowers.cpp:959
415 #, c-format
416 msgid "%d%% Speed"
417 msgstr "%d%% Vitesse"
418
419 #: ../../../src/ItemManager.cpp:650 ../../../src/MenuPowers.cpp:962
420 #, c-format
421 msgid "%d%% Attack Speed"
422 msgstr "%d%%Vitesse d'attaque"
423
424 #: ../../../src/ItemManager.cpp:672 ../../../src/MenuCharacter.cpp:352
425 #: ../../../src/MenuPowers.cpp:931
426 #, c-format
427 msgid "Resistance (%s)"
428 msgstr "Résistance (%s)"
429
430 #: ../../../src/ItemManager.cpp:682
431 #, c-format
432 msgid "Requires %s"
433 msgstr "Nécessite %s"
434
435 #: ../../../src/ItemManager.cpp:731
436 msgid "Quest Item"
437 msgstr "Objet de quête"
438
439 #: ../../../src/ItemManager.cpp:758
440 #, c-format
441 msgid "Quality: %s"
442 msgstr "Qualité : %s"
443
444 #: ../../../src/ItemManager.cpp:783
445 #, c-format
446 msgid "Absorb: %d-%d"
447 msgstr "Absorbe : %d-%d"
448
449 #: ../../../src/ItemManager.cpp:785
450 #, c-format
451 msgid "Absorb: %d"
452 msgstr "Absorbe : %d"
453
454 #: ../../../src/ItemManager.cpp:825 ../../../src/MenuPowers.cpp:1206
455 #: ../../../src/MenuPowers.cpp:1209
456 #, c-format
457 msgid "Requires Level %d"
458 msgstr "Nécessite le niveau %d"
459
460 #: ../../../src/ItemManager.cpp:836 ../../../src/MenuPowers.cpp:1198
461 #: ../../../src/MenuPowers.cpp:1200
462 #, c-format
463 msgid "Requires %s %d"
464 msgstr "Nécessite %s %d"
465
466 #: ../../../src/ItemManager.cpp:847
467 #, c-format
468 msgid "Requires Class: %s"
469 msgstr "Classe nécessaire : %s"
470
471 #: ../../../src/ItemManager.cpp:863 ../../../src/ItemManager.cpp:875
472 #, c-format
473 msgid "Buy Price: %d %s"
474 msgstr "Prix d'achat : %d %s"
475
476 #: ../../../src/ItemManager.cpp:865 ../../../src/ItemManager.cpp:877
477 #, c-format
478 msgid "Buy Price: %d %s each"
479 msgstr "Prix d'achat : %d %s par pièce"
480
481 #: ../../../src/ItemManager.cpp:885
482 #, c-format
483 msgid "Sell Price: %d %s"
484 msgstr "Prix de vente : %d %s"
485
486 #: ../../../src/ItemManager.cpp:887
487 #, c-format
488 msgid "Sell Price: %d %s each"
489 msgstr "Prix de vente : %d %s par pièce"
490
491 #: ../../../src/ItemManager.cpp:896
492 msgid "Set:"
493 msgstr "Ensemble :"
494
495 #: ../../../src/ItemManager.cpp:903
496 #, c-format
497 msgid "%d items:"
498 msgstr "%dobjets :"
499
500 #: ../../../src/ItemManager.cpp:915
501 #, c-format
502 msgid "Press [%s] to read"
503 msgstr "Appuyer sur [%s] pour lire"
504
505 #: ../../../src/ItemManager.cpp:918
506 #, c-format
507 msgid "Press [%s] to use"
508 msgstr "Appuyer sur [%s] pour utiliser"
509
510 #: ../../../src/MenuActionBar.cpp:239 ../../../src/MenuActionBar.cpp:246
511 #: ../../../src/MenuActionBar.cpp:249 ../../../src/MenuActionBar.cpp:255
512 #, c-format
513 msgid "Hotkey: %s"
514 msgstr "Touche : %s"
515
516 #: ../../../src/MenuActionBar.cpp:621
517 msgid "Not enough MP."
518 msgstr "Pas assez de PM."
519
520 #: ../../../src/MenuActiveEffects.cpp:124
521 #, c-format
522 msgid "x%d"
523 msgstr "x%d"
524
525 #: ../../../src/MenuActiveEffects.cpp:219
526 msgid "Remaining:"
527 msgstr "Restants :"
528
529 #: ../../../src/MenuActiveEffects.cpp:225
530 #, c-format
531 msgid "x%d stacks"
532 msgstr "x%dpiles d'objets"
533
534 #: ../../../src/MenuCharacter.cpp:73 ../../../src/MenuCharacter.cpp:78
535 msgid "Name"
536 msgstr "Nom"
537
538 #: ../../../src/MenuCharacter.cpp:74 ../../../src/MenuCharacter.cpp:79
539 msgid "Level"
540 msgstr "Niveau"
541
542 #: ../../../src/MenuCharacter.cpp:309
543 #, c-format
544 msgid "Available stat points: %d"
545 msgstr ""
546
547 #: ../../../src/MenuCharacter.cpp:353
548 #, c-format
549 msgid "Reduces the damage taken from \"%s\" elemental attacks."
550 msgstr "Réduit la quantité de dégât reçue des attaques élémentaires \"%s\"."
551
552 #: ../../../src/MenuCharacter.cpp:363 ../../../src/MenuManager.cpp:301
553 #, c-format
554 msgid "XP: %d"
555 msgstr "XP : %d"
556
557 #: ../../../src/MenuCharacter.cpp:365
558 #, c-format
559 msgid "Next: %d"
560 msgstr "Prochain : %d"
561
562 #: ../../../src/MenuCharacter.cpp:371
563 #, c-format
564 msgid "base (%d), bonus (%d)"
565 msgstr "base (%d), bonus (%d)"
566
567 #: ../../../src/MenuCharacter.cpp:379 ../../../src/MenuCharacter.cpp:393
568 msgid "Related stats:"
569 msgstr "Statistiques liées : "
570
571 #: ../../../src/MenuCharacter.cpp:419 ../../../src/MenuCharacter.cpp:443
572 #, c-format
573 msgid "Each level grants %d."
574 msgstr "Chaque niveau donne %d."
575
576 #: ../../../src/MenuCharacter.cpp:423 ../../../src/MenuCharacter.cpp:447
577 #, c-format
578 msgid "Each point of %s grants %d."
579 msgstr "Chaque point de %s donne %d."
580
581 #: ../../../src/MenuConfig.cpp:122 ../../../src/MenuConfig.cpp:1171
582 msgid "Clear"
583 msgstr "Effacer"
584
585 #: ../../../src/MenuConfig.cpp:122 ../../../src/MenuConfig.cpp:1169
586 msgid "Assign:"
587 msgstr "Assigner :"
588
589 #: ../../../src/MenuConfig.cpp:123 ../../../src/MenuConfig.cpp:245
134590 msgid "Defaults"
135591 msgstr "Par défaut"
136592
137 #: ../../../src/GameStateConfigBase.cpp:89
593 #: ../../../src/MenuConfig.cpp:123
138594 msgid "Reset ALL settings?"
139595 msgstr "Réinitaliser TOUS les réglages ?"
140596
141 #: ../../../src/GameStateConfigBase.cpp:109 ../../../src/MenuNumPicker.cpp:49
597 #: ../../../src/MenuConfig.cpp:244 ../../../src/MenuNumPicker.cpp:49
142598 msgid "OK"
143599 msgstr "OK"
144600
145 #: ../../../src/GameStateConfigBase.cpp:111 ../../../src/GameStateNew.cpp:65
146 #: ../../../src/InputState.cpp:401
147 msgid "Cancel"
148 msgstr "Annuler"
149
150 #: ../../../src/GameStateConfigBase.cpp:160
151 #: ../../../src/GameStateConfigDesktop.cpp:130
601 #: ../../../src/MenuConfig.cpp:248 ../../../src/MenuGameOver.cpp:72
602 msgid "Continue"
603 msgstr "Continuer"
604
605 #: ../../../src/MenuConfig.cpp:250
606 msgid "Save Game"
607 msgstr "Sauvegarder la partie"
608
609 #: ../../../src/MenuConfig.cpp:293
610 msgid "Default"
611 msgstr "Défaut"
612
613 #: ../../../src/MenuConfig.cpp:293
614 msgid ""
615 "Show all loot tooltips, except for those that would be obscured by the "
616 "player or an enemy. Temporarily show all loot tooltips with 'Alt'."
617 msgstr ""
618 "Montrer toutes les infobulles de butin, sauf celles qui pourraient être "
619 "masquées par le joueur ou un ennemi. Afficher toutes les infobulles de butin"
620 " temporairement avec la touche 'Alt'."
621
622 #: ../../../src/MenuConfig.cpp:294
623 msgid "Show all"
624 msgstr "Afficher tout"
625
626 #: ../../../src/MenuConfig.cpp:294
627 msgid ""
628 "Always show loot tooltips. Temporarily hide all loot tooltips with 'Alt'."
629 msgstr ""
630 "Toujours montrer les infobulles de butin. Cacher temporairement les "
631 "infobulles de butin avec la touche 'Alt'."
632
633 #: ../../../src/MenuConfig.cpp:295 ../../../src/MenuConfig.cpp:300
634 msgid "Hidden"
635 msgstr "Caché"
636
637 #: ../../../src/MenuConfig.cpp:295
638 msgid ""
639 "Always hide loot tooltips, except for when a piece of loot is hovered with "
640 "the mouse cursor. Temporarily show all loot tooltips with 'Alt'."
641 msgstr ""
642 "Toujours masquer les infobulles de butin, sauf lorsqu'une pièce du butin est"
643 " survolée par la souris. Montrer temporairement toutes les infobulles de "
644 "butin avec la touche 'Alt'."
645
646 #: ../../../src/MenuConfig.cpp:298
647 msgid "Visible"
648 msgstr "Visible"
649
650 #: ../../../src/MenuConfig.cpp:299
651 msgid "Visible (2x zoom)"
652 msgstr "Visible (zoom x2)"
653
654 #: ../../../src/MenuConfig.cpp:303
655 msgid ""
656 "Controls the type of warning to be activated when the player is below the "
657 "low health threshold."
658 msgstr ""
659 "Contrôle le type d'alerte activée lorsque la santé du joueur est sous le "
660 "seuil de santé bas."
661
662 #: ../../../src/MenuConfig.cpp:304
663 msgid "- Display a message"
664 msgstr "- Afficher un message"
665
666 #: ../../../src/MenuConfig.cpp:305
667 msgid "- Play a sound"
668 msgstr "- Jouer un son"
669
670 #: ../../../src/MenuConfig.cpp:306
671 msgid "- Change the cursor"
672 msgstr "- Changer le curseur"
673
674 #: ../../../src/MenuConfig.cpp:308
675 msgid "Disabled"
676 msgstr "Désactivé"
677
678 #: ../../../src/MenuConfig.cpp:309
679 msgid "All"
680 msgstr "Tout"
681
682 #: ../../../src/MenuConfig.cpp:310
683 msgid "Message & Cursor"
684 msgstr "Message & Curseur"
685
686 #: ../../../src/MenuConfig.cpp:311
687 msgid "Message & Sound"
688 msgstr "Message & Son"
689
690 #: ../../../src/MenuConfig.cpp:312
691 msgid "Sound & Cursor"
692 msgstr "Son & Curseur"
693
694 #: ../../../src/MenuConfig.cpp:313
695 msgid "Message"
696 msgstr "Message"
697
698 #: ../../../src/MenuConfig.cpp:314
699 msgid "Cursor"
700 msgstr "Curseur"
701
702 #: ../../../src/MenuConfig.cpp:315
703 msgid "Sound"
704 msgstr "Son"
705
706 #: ../../../src/MenuConfig.cpp:321
707 msgid ""
708 "When the player's health drops below the given threshold, the low health "
709 "notifications are triggered if one or more of them is enabled."
710 msgstr ""
711 "Lorsque la santé du joueur tombe en dessous du seuil donné, les "
712 "notifications de santé basse sont déclenchées si au moins l'une d'entre "
713 "elles est activée."
714
715 #: ../../../src/MenuConfig.cpp:334 ../../../src/MenuConfig.cpp:1587
716 #: ../../../src/MenuGameOver.cpp:116
717 msgid "Exit"
718 msgstr "Quitter"
719
720 #: ../../../src/MenuConfig.cpp:335
721 msgid "Video"
722 msgstr "Vidéo"
723
724 #: ../../../src/MenuConfig.cpp:336
152725 msgid "Audio"
153726 msgstr "Audio"
154727
155 #: ../../../src/GameStateConfigBase.cpp:161
156 #: ../../../src/GameStateConfigDesktop.cpp:131
728 #: ../../../src/MenuConfig.cpp:337
157729 msgid "Interface"
158730 msgstr "Interface"
159731
160 #: ../../../src/GameStateConfigBase.cpp:162
161 #: ../../../src/GameStateConfigDesktop.cpp:134
732 #: ../../../src/MenuConfig.cpp:338
733 msgid "Input"
734 msgstr "Entrée"
735
736 #: ../../../src/MenuConfig.cpp:339
737 msgid "Keybindings"
738 msgstr "Commandes"
739
740 #: ../../../src/MenuConfig.cpp:340
162741 msgid "Mods"
163742 msgstr "Mods"
164743
165 #: ../../../src/GameStateConfigBase.cpp:249 ../../../src/MenuExit.cpp:72
744 #: ../../../src/MenuConfig.cpp:352
745 msgid "Paused"
746 msgstr "En pause"
747
748 #: ../../../src/MenuConfig.cpp:355
749 msgid "Time Played"
750 msgstr "Temps de jeu"
751
752 #: ../../../src/MenuConfig.cpp:361
753 msgid "Renderer"
754 msgstr "Rendu"
755
756 #: ../../../src/MenuConfig.cpp:362
757 msgid "Full Screen Mode"
758 msgstr "Mode plein écran"
759
760 #: ../../../src/MenuConfig.cpp:363
761 msgid "Hardware surfaces"
762 msgstr "Surfaces matérielles"
763
764 #: ../../../src/MenuConfig.cpp:364
765 msgid "V-Sync"
766 msgstr "V-Sync"
767
768 #: ../../../src/MenuConfig.cpp:365
769 msgid "Texture Filtering"
770 msgstr "Filtrage de textures"
771
772 #: ../../../src/MenuConfig.cpp:366
773 msgid "DPI scaling"
774 msgstr "Echelonnage DPI"
775
776 #: ../../../src/MenuConfig.cpp:367
777 msgid "Parallax Layers"
778 msgstr "Couches parallax"
779
780 #: ../../../src/MenuConfig.cpp:368
781 msgid "Allow changing gamma"
782 msgstr "Régler le gamma"
783
784 #: ../../../src/MenuConfig.cpp:369
785 msgid "Gamma"
786 msgstr "Gamma"
787
788 #: ../../../src/MenuConfig.cpp:371
789 msgid "Sound Volume"
790 msgstr "Volume des sons"
791
792 #: ../../../src/MenuConfig.cpp:372
166793 msgid "Music Volume"
167794 msgstr "Volume de la musique"
168795
169 #: ../../../src/GameStateConfigBase.cpp:253 ../../../src/MenuExit.cpp:77
170 msgid "Sound Volume"
171 msgstr "Volume des sons"
172
173 #: ../../../src/GameStateConfigBase.cpp:257
796 #: ../../../src/MenuConfig.cpp:374
174797 msgid "Language"
175798 msgstr "Langues"
176799
177 #: ../../../src/GameStateConfigBase.cpp:266
800 #: ../../../src/MenuConfig.cpp:375
178801 msgid "Show FPS"
179802 msgstr "Afficher les FPS"
180803
181 #: ../../../src/GameStateConfigBase.cpp:270
804 #: ../../../src/MenuConfig.cpp:376
805 msgid "Hardware mouse cursor"
806 msgstr "Curseur matériel"
807
808 #: ../../../src/MenuConfig.cpp:377
182809 msgid "Colorblind Mode"
183810 msgstr "Mode daltonien"
184811
185 #: ../../../src/GameStateConfigBase.cpp:274
186 msgid "Hardware mouse cursor"
187 msgstr ""
188
189 #: ../../../src/GameStateConfigBase.cpp:278
812 #: ../../../src/MenuConfig.cpp:378
190813 msgid "Developer Mode"
191814 msgstr "Mode développeur"
192815
193 #: ../../../src/GameStateConfigBase.cpp:282
816 #: ../../../src/MenuConfig.cpp:379
194817 msgid "Subtitles"
195 msgstr ""
196
197 #: ../../../src/GameStateConfigBase.cpp:286
198 msgid "Active Mods"
199 msgstr "Mods actifs"
200
201 #: ../../../src/GameStateConfigBase.cpp:295
202 msgid "Available Mods"
203 msgstr "Mods disponibles"
204
205 #: ../../../src/GameStateConfigBase.cpp:314
206 msgid "<< Disable"
207 msgstr "<< Désactiver"
208
209 #: ../../../src/GameStateConfigBase.cpp:320
210 msgid "Enable >>"
211 msgstr "Activer >>"
212
213 #: ../../../src/GameStateConfigBase.cpp:873
214 msgid "Version:"
215 msgstr ""
216
217 #: ../../../src/GameStateConfigBase.cpp:878
218 msgid "Game:"
219 msgstr ""
220
221 #: ../../../src/GameStateConfigBase.cpp:883
222 msgid "Engine version:"
223 msgstr ""
224
225 #: ../../../src/GameStateConfigBase.cpp:891
226 msgid "Requires mods:"
227 msgstr ""
228
229 #: ../../../src/GameStateConfigDesktop.cpp:83
230 #: ../../../src/GameStateConfigDesktop.cpp:751
231 msgid "Clear"
232 msgstr "Effacer"
233
234 #: ../../../src/GameStateConfigDesktop.cpp:83
235 #: ../../../src/GameStateConfigDesktop.cpp:749
236 msgid "Assign:"
237 msgstr ""
238
239 #: ../../../src/GameStateConfigDesktop.cpp:128
240 msgid "Video"
241 msgstr "Vidéo"
242
243 #: ../../../src/GameStateConfigDesktop.cpp:132
244 msgid "Input"
245 msgstr "Entrée"
246
247 #: ../../../src/GameStateConfigDesktop.cpp:133
248 msgid "Keybindings"
249 msgstr "Commandes"
250
251 #: ../../../src/GameStateConfigDesktop.cpp:188
818 msgstr "Sous-titres"
819
820 #: ../../../src/MenuConfig.cpp:380
821 msgid "Loot tooltip visibility"
822 msgstr "Visibilité infobulle butin"
823
824 #: ../../../src/MenuConfig.cpp:381
825 msgid "Mini-map mode"
826 msgstr "Mode mini-carte"
827
828 #: ../../../src/MenuConfig.cpp:382
829 msgid "Always show stat bar labels"
830 msgstr "Toujours montrer les étiquettes de la barre de statistiques"
831
832 #: ../../../src/MenuConfig.cpp:383
833 msgid "Allow stat bar auto-hiding"
834 msgstr "Autorise le masquage auto de la barre de statut"
835
836 #: ../../../src/MenuConfig.cpp:384
837 msgid "Show combat text"
838 msgstr "Afficher le texte des combats"
839
840 #: ../../../src/MenuConfig.cpp:385
841 msgid "Automatically equip items"
842 msgstr "Équiper automatiquement les objets"
843
844 #: ../../../src/MenuConfig.cpp:386
845 msgid "Show hidden entity markers"
846 msgstr "Montre les marqueurs d'entité cachés"
847
848 #: ../../../src/MenuConfig.cpp:387
849 msgid "Low health notification"
850 msgstr "Notification de santé basse"
851
852 #: ../../../src/MenuConfig.cpp:388
853 msgid "Low health threshold"
854 msgstr "Seuil de santé basse"
855
856 #: ../../../src/MenuConfig.cpp:389
857 msgid "Show item comparison tooltips"
858 msgstr ""
859
860 #: ../../../src/MenuConfig.cpp:392 ../../../src/MenuMovementType.cpp:94
861 #: ../../../src/MenuMovementType.cpp:131
862 msgid "Joystick"
863 msgstr "Manette"
864
865 #: ../../../src/MenuConfig.cpp:393
866 msgid "Move hero using mouse"
867 msgstr "Déplacement du héro à la souris"
868
869 #: ../../../src/MenuConfig.cpp:394
870 msgid "Mouse aim"
871 msgstr "Visée à la souris"
872
873 #: ../../../src/MenuConfig.cpp:395
874 msgid "Do not use mouse"
875 msgstr "Ne pas utiliser la souris"
876
877 #: ../../../src/MenuConfig.cpp:396
878 msgid "Swap mouse movement button"
879 msgstr "Inverser les boutons de mouvement de la souris"
880
881 #: ../../../src/MenuConfig.cpp:397
882 msgid "Attack with mouse movement"
883 msgstr "Attaquer avec les mouvement de la souris"
884
885 #: ../../../src/MenuConfig.cpp:398
886 msgid "Joystick Deadzone"
887 msgstr "Zone morte du joystick"
888
889 #: ../../../src/MenuConfig.cpp:408
890 #, c-format
891 msgid "Primary binding: %s"
892 msgstr "Affectation principale : %s"
893
894 #: ../../../src/MenuConfig.cpp:409
895 #, c-format
896 msgid "Alternate binding: %s"
897 msgstr "Affectation secondaire : %s"
898
899 #: ../../../src/MenuConfig.cpp:410
900 #, c-format
901 msgid "Joystick binding: %s"
902 msgstr "Affectation de la manette : %s"
903
904 #: ../../../src/MenuConfig.cpp:511
252905 msgid ""
253906 "Will try to store surfaces in video memory versus system memory. The effect "
254907 "this has on performance depends on the renderer."
255908 msgstr ""
256
257 #: ../../../src/GameStateConfigDesktop.cpp:189
909 "Tentera de stocker les surfaces dans la mémoire vidéo plutôt que la mémoire "
910 "du système. L'effet sur les performances dépend de la carte vidéo."
911
912 #: ../../../src/MenuConfig.cpp:512
258913 msgid ""
259914 "Prevents screen tearing. Disable if you experience \"stuttering\" in "
260915 "windowed mode or input lag."
261916 msgstr ""
262
263 #: ../../../src/GameStateConfigDesktop.cpp:190
917 "Evite l'apparition de déchirement d'écran. A désactiver si vous subissez des"
918 " 'bégaiements' en mode fenêtré ou des retards de saisie. "
919
920 #: ../../../src/MenuConfig.cpp:513
264921 msgid ""
265922 "When enabled, this uses the screen DPI in addition to the window dimensions "
266923 "to scale the rendering resolution. Otherwise, only the window dimensions are"
267924 " used."
268925 msgstr ""
269
270 #: ../../../src/GameStateConfigDesktop.cpp:191
926 "Si activé, utilise le DPI de votre écran en plus de la taille de la fenêtre "
927 "pour échelonner la résolution de rendu. Autrement, seule les dimensions de "
928 "la fenêtre sont utilisées."
929
930 #: ../../../src/MenuConfig.cpp:514
271931 msgid ""
272932 "This enables parallax (non-tile) layers. Disabling this setting can improve "
273933 "performance in some cases."
274934 msgstr ""
275
276 #: ../../../src/GameStateConfigDesktop.cpp:192
277 msgid "Experimental"
278 msgstr "Expérimental"
279
280 #: ../../../src/GameStateConfigDesktop.cpp:193
281 msgid "For handheld devices"
282 msgstr "Pour les terminaux portables"
283
284 #: ../../../src/GameStateConfigDesktop.cpp:211
285 msgid "Renderer"
286 msgstr ""
287
288 #: ../../../src/GameStateConfigDesktop.cpp:227
289 msgid "Full Screen Mode"
290 msgstr "Mode plein écran"
291
292 #: ../../../src/GameStateConfigDesktop.cpp:231
293 msgid "Move hero using mouse"
294 msgstr "Déplacement du héro à la souris"
295
296 #: ../../../src/GameStateConfigDesktop.cpp:235
297 msgid "Hardware surfaces"
298 msgstr "Hardware surfaces"
299
300 #: ../../../src/GameStateConfigDesktop.cpp:239
301 msgid "V-Sync"
302 msgstr "V-Sync"
303
304 #: ../../../src/GameStateConfigDesktop.cpp:243
305 msgid "Texture Filtering"
306 msgstr "Filtrage de textures"
307
308 #: ../../../src/GameStateConfigDesktop.cpp:247
309 msgid "DPI scaling"
310 msgstr ""
311
312 #: ../../../src/GameStateConfigDesktop.cpp:251
313 msgid "Parallax Layers"
314 msgstr ""
315
316 #: ../../../src/GameStateConfigDesktop.cpp:255
317 msgid "Allow changing gamma"
318 msgstr "Régler le gamma"
319
320 #: ../../../src/GameStateConfigDesktop.cpp:259
321 msgid "Gamma"
322 msgstr "Gamma"
323
324 #: ../../../src/GameStateConfigDesktop.cpp:263
325 msgid "Use joystick"
326 msgstr "Utiliser une manette"
327
328 #: ../../../src/GameStateConfigDesktop.cpp:267
329 msgid "Joystick"
330 msgstr "Manette"
331
332 #: ../../../src/GameStateConfigDesktop.cpp:283
333 msgid "Mouse aim"
334 msgstr "Visée à la souris"
335
336 #: ../../../src/GameStateConfigDesktop.cpp:287
337 msgid "Do not use mouse"
338 msgstr ""
339
340 #: ../../../src/GameStateConfigDesktop.cpp:291
341 msgid "Joystick Deadzone"
342 msgstr ""
343
344 #: ../../../src/GameState.cpp:37 ../../../src/GameState.cpp:58
345 msgid "Loading..."
346 msgstr "Chargement..."
347
348 #: ../../../src/GameStateLoad.cpp:88 ../../../src/GameStateLoad.cpp:101
349 msgid "Delete Save"
350 msgstr "Suppr. sauvegarde"
351
352 #: ../../../src/GameStateLoad.cpp:88
353 msgid "Delete this save?"
354 msgstr "Supprimer cette sauvegarde ?"
355
356 #: ../../../src/GameStateLoad.cpp:90
357 msgid "Exit to Title"
358 msgstr "Retour au menu"
359
360 #: ../../../src/GameStateLoad.cpp:93
361 msgid "New Game"
362 msgstr "Nouvelle partie"
363
364 #: ../../../src/GameStateLoad.cpp:97 ../../../src/GameStateLoad.cpp:600
365 msgid "Choose a Slot"
366 msgstr "Choisir une partie"
367
368 #: ../../../src/GameStateLoad.cpp:573 ../../../src/GameStateLoad.cpp:594
369 msgid "Enable a story mod to continue"
370 msgstr "Activez un mod scenario pour continuer"
371
372 #: ../../../src/GameStateLoad.cpp:589
373 msgid "Load Game"
374 msgstr "Charger la partie"
375
376 #: ../../../src/GameStateLoad.cpp:695
377 msgid "Entering game world..."
378 msgstr "Entrée dans le monde du jeu..."
379
380 #: ../../../src/GameStateLoad.cpp:698
381 msgid "Loading saved game..."
382 msgstr "Chargement d'une partie..."
383
384 #: ../../../src/GameStateLoad.cpp:731
385 msgid "Invalid save"
386 msgstr ""
387
388 #: ../../../src/GameStateLoad.cpp:755 ../../../src/ItemManager.cpp:747
389 #: ../../../src/MenuPowers.cpp:778 ../../../src/MenuPowers.cpp:1144
390 #: ../../../src/MenuPowers.cpp:1542
391 #, c-format
392 msgid "Level %d"
393 msgstr "Niveau %d"
394
395 #: ../../../src/GameStateNew.cpp:68
396 msgid "Create"
397 msgstr "Créer"
398
399 #: ../../../src/GameStateNew.cpp:76
400 msgid "Randomize"
401 msgstr ""
402
403 #: ../../../src/GameStateNew.cpp:92
404 msgid "Choose a Portrait"
405 msgstr "Choisissez un portrait"
406
407 #: ../../../src/GameStateNew.cpp:96
408 msgid "Choose a Name"
409 msgstr "Choisissez un nom"
410
411 #: ../../../src/GameStateNew.cpp:100
412 msgid "Permadeath?"
413 msgstr "Mort permanente ? "
414
415 #: ../../../src/GameStateNew.cpp:104
416 msgid "Choose a Class"
417 msgstr "Choisir une classe"
418
419 #: ../../../src/GameStateTitle.cpp:108
420 msgid "Play Game"
421 msgstr "Jouer"
422
423 #: ../../../src/GameStateTitle.cpp:111
424 msgid "Enable a core mod to continue"
425 msgstr "Activez un mod de base pour continuer"
426
427 #: ../../../src/GameStateTitle.cpp:115
428 msgid "Configuration"
429 msgstr "Configuration"
430
431 #: ../../../src/GameStateTitle.cpp:118
432 msgid "Credits"
433 msgstr "Crédits"
434
435 #: ../../../src/GameStateTitle.cpp:121
436 msgid "Exit Game"
437 msgstr "Quitter"
438
439 #: ../../../src/InputState.cpp:402
440 msgid "Accept"
441 msgstr "Accepter"
442
443 #: ../../../src/InputState.cpp:403 ../../../src/SDLInputState.cpp:607
444 msgid "Up"
445 msgstr "Haut"
446
447 #: ../../../src/InputState.cpp:404 ../../../src/SDLInputState.cpp:585
448 msgid "Down"
449 msgstr "Bas"
450
451 #: ../../../src/InputState.cpp:405 ../../../src/SDLInputState.cpp:592
452 msgid "Left"
453 msgstr "Gauche"
454
455 #: ../../../src/InputState.cpp:406 ../../../src/SDLInputState.cpp:602
456 msgid "Right"
457 msgstr "Droite"
458
459 #: ../../../src/InputState.cpp:407
460 msgid "Bar1"
461 msgstr "Emplacement 1"
462
463 #: ../../../src/InputState.cpp:408
464 msgid "Bar2"
465 msgstr "Emplacement 2"
466
467 #: ../../../src/InputState.cpp:409
468 msgid "Bar3"
469 msgstr "Emplacement 3"
470
471 #: ../../../src/InputState.cpp:410
472 msgid "Bar4"
473 msgstr "Emplacement 4"
474
475 #: ../../../src/InputState.cpp:411
476 msgid "Bar5"
477 msgstr "Emplacement 5"
478
479 #: ../../../src/InputState.cpp:412
480 msgid "Bar6"
481 msgstr "Emplacement 6"
482
483 #: ../../../src/InputState.cpp:413
484 msgid "Bar7"
485 msgstr "Emplacement 7"
486
487 #: ../../../src/InputState.cpp:414
488 msgid "Bar8"
489 msgstr "Emplacement 8"
490
491 #: ../../../src/InputState.cpp:415
492 msgid "Bar9"
493 msgstr "Emplacement 9"
494
495 #: ../../../src/InputState.cpp:416
496 msgid "Bar0"
497 msgstr "Emplacement 0"
498
499 #: ../../../src/InputState.cpp:417 ../../../src/MenuActionBar.cpp:83
500 #: ../../../src/MenuCharacter.cpp:54
501 msgid "Character"
502 msgstr "Personnage"
503
504 #: ../../../src/InputState.cpp:418 ../../../src/MenuActionBar.cpp:84
505 #: ../../../src/MenuInventory.cpp:137 ../../../src/MenuVendor.cpp:57
506 msgid "Inventory"
507 msgstr "Inventaire"
508
509 #: ../../../src/InputState.cpp:419 ../../../src/MenuActionBar.cpp:85
510 #: ../../../src/MenuPowers.cpp:168
511 msgid "Powers"
512 msgstr "Pouvoirs"
513
514 #: ../../../src/InputState.cpp:420 ../../../src/MenuActionBar.cpp:86
515 #: ../../../src/MenuLog.cpp:72
516 msgid "Log"
517 msgstr "Journal"
518
519 #: ../../../src/InputState.cpp:421
520 msgid "Main1"
521 msgstr "Principal 1"
522
523 #: ../../../src/InputState.cpp:422
524 msgid "Main2"
525 msgstr "Principal 2"
526
527 #: ../../../src/InputState.cpp:423
528 msgid "Ctrl"
529 msgstr "Ctrl"
530
531 #: ../../../src/InputState.cpp:424
532 msgid "Shift"
533 msgstr "Maj"
534
535 #: ../../../src/InputState.cpp:425
536 msgid "Alt"
537 msgstr "Alt"
538
539 #: ../../../src/InputState.cpp:426 ../../../src/SDLInputState.cpp:584
540 msgid "Delete"
541 msgstr "Supprimer"
542
543 #: ../../../src/InputState.cpp:427
544 msgid "ActionBar Accept"
545 msgstr ""
546
547 #: ../../../src/InputState.cpp:428
548 msgid "ActionBar Left"
549 msgstr "Barre d'action Gauche"
550
551 #: ../../../src/InputState.cpp:429
552 msgid "ActionBar Right"
553 msgstr "Barre d'action Droite"
554
555 #: ../../../src/InputState.cpp:430
556 msgid "ActionBar Use"
557 msgstr "Utilisation de la barre d'action"
558
559 #: ../../../src/InputState.cpp:431
560 msgid "Developer Menu"
561 msgstr "Menu du développeur"
562
563 #: ../../../src/InputState.cpp:433
564 msgid "Left Mouse"
565 msgstr "Clic gauche"
566
567 #: ../../../src/InputState.cpp:434
568 msgid "Middle Mouse"
569 msgstr "Clic molette"
570
571 #: ../../../src/InputState.cpp:435
572 msgid "Right Mouse"
573 msgstr ""
574
575 #: ../../../src/InputState.cpp:436
576 msgid "Wheel Up"
577 msgstr ""
578
579 #: ../../../src/InputState.cpp:437
580 msgid "Wheel Down"
581 msgstr ""
582
583 #: ../../../src/InputState.cpp:438
584 msgid "Mouse X1"
585 msgstr ""
586
587 #: ../../../src/InputState.cpp:439
588 msgid "Mouse X2"
589 msgstr ""
590
591 #: ../../../src/ItemManager.cpp:450 ../../../src/ItemManager.cpp:453
592 msgid "Unknown Item"
593 msgstr "Objet inconnu"
594
595 #: ../../../src/ItemManager.cpp:648 ../../../src/MenuPowers.cpp:887
596 #, c-format
597 msgid "%d%% Speed"
598 msgstr ""
599
600 #: ../../../src/ItemManager.cpp:652 ../../../src/MenuPowers.cpp:890
601 #, c-format
602 msgid "%d%% Attack Speed"
603 msgstr ""
604
605 #: ../../../src/ItemManager.cpp:674 ../../../src/MenuCharacter.cpp:354
606 #: ../../../src/MenuPowers.cpp:833
607 #, c-format
608 msgid "Resistance (%s)"
609 msgstr ""
610
611 #: ../../../src/ItemManager.cpp:684
612 #, c-format
613 msgid "Requires %s"
614 msgstr ""
615
616 #: ../../../src/ItemManager.cpp:733
617 msgid "Quest Item"
618 msgstr ""
619
620 #: ../../../src/ItemManager.cpp:760
621 #, c-format
622 msgid "Quality: %s"
623 msgstr "Qualité: %s"
624
625 #: ../../../src/ItemManager.cpp:785
626 #, c-format
627 msgid "Absorb: %d-%d"
628 msgstr "Absorbe : %d-%d"
629
630 #: ../../../src/ItemManager.cpp:787
631 #, c-format
632 msgid "Absorb: %d"
633 msgstr "Absorbe : %d"
634
635 #: ../../../src/ItemManager.cpp:827 ../../../src/MenuPowers.cpp:1131
636 #: ../../../src/MenuPowers.cpp:1134
637 #, c-format
638 msgid "Requires Level %d"
639 msgstr "Nécessite le niveau %d"
640
641 #: ../../../src/ItemManager.cpp:838 ../../../src/MenuPowers.cpp:1123
642 #: ../../../src/MenuPowers.cpp:1125
643 #, c-format
644 msgid "Requires %s %d"
645 msgstr ""
646
647 #: ../../../src/ItemManager.cpp:849
648 #, c-format
649 msgid "Requires Class: %s"
650 msgstr ""
651
652 #: ../../../src/ItemManager.cpp:864 ../../../src/ItemManager.cpp:876
653 #, c-format
654 msgid "Buy Price: %d %s"
655 msgstr "Prix d'achat : %d %s"
656
657 #: ../../../src/ItemManager.cpp:866 ../../../src/ItemManager.cpp:878
658 #, c-format
659 msgid "Buy Price: %d %s each"
660 msgstr "Prix d'achat : %d %s par pièce"
661
662 #: ../../../src/ItemManager.cpp:886
663 #, c-format
664 msgid "Sell Price: %d %s"
665 msgstr "Prix de vente : %d %s"
666
667 #: ../../../src/ItemManager.cpp:888
668 #, c-format
669 msgid "Sell Price: %d %s each"
670 msgstr "Prix de vente : %d %s par pièce"
671
672 #: ../../../src/ItemManager.cpp:897
673 msgid "Set:"
674 msgstr ""
675
676 #: ../../../src/ItemManager.cpp:904
677 #, c-format
678 msgid "%d items:"
679 msgstr ""
680
681 #: ../../../src/ItemManager.cpp:917
682 #, c-format
683 msgid "Press [%s] to use"
684 msgstr ""
685
686 #: ../../../src/ItemManager.cpp:920
687 #, c-format
688 msgid "Press [%s] to read"
689 msgstr ""
690
691 #: ../../../src/MenuActionBar.cpp:87
692 msgid "Loot tooltip visibility"
693 msgstr ""
694
695 #: ../../../src/MenuActionBar.cpp:88
696 msgid "Mini-map mode"
697 msgstr ""
698
699 #: ../../../src/MenuActionBar.cpp:89
700 msgid "Always show stat bar labels"
701 msgstr "Toujours montrer les étiquettes de la bare de statistiques"
702
703 #: ../../../src/MenuActionBar.cpp:90
704 msgid "Show combat text"
705 msgstr "Afficher le texte des combats"
706
707 #: ../../../src/MenuActionBar.cpp:254 ../../../src/MenuActionBar.cpp:261
708 #: ../../../src/MenuActionBar.cpp:264 ../../../src/MenuActionBar.cpp:271
709 #, c-format
710 msgid "Hotkey: %s"
711 msgstr "Touche: %s"
712
713 #: ../../../src/MenuActionBar.cpp:474
714 #, c-format
715 msgid "Default. Temporarily show all loot tooltips with '%s'."
716 msgstr ""
717
718 #: ../../../src/MenuActionBar.cpp:476
719 #, c-format
720 msgid "Show All. Temporarily hide all loot tooltips with '%s'."
721 msgstr ""
722
723 #: ../../../src/MenuActionBar.cpp:478
724 #, c-format
725 msgid "Hide All. Temporarily show all loot tooltips with '%s'."
726 msgstr ""
727
728 #: ../../../src/MenuActionBar.cpp:482
729 msgid "Visible"
730 msgstr ""
731
732 #: ../../../src/MenuActionBar.cpp:484
733 msgid "Visible (2x zoom)"
734 msgstr ""
735
736 #: ../../../src/MenuActionBar.cpp:486
737 msgid "Hidden"
738 msgstr ""
739
740 #: ../../../src/MenuActionBar.cpp:490 ../../../src/MenuActionBar.cpp:496
741 msgid "Enabled"
742 msgstr ""
743
744 #: ../../../src/MenuActionBar.cpp:492 ../../../src/MenuActionBar.cpp:498
745 msgid "Disabled"
746 msgstr ""
747
748 #: ../../../src/MenuActionBar.cpp:657
749 msgid "Not enough MP."
750 msgstr ""
751
752 #: ../../../src/MenuActiveEffects.cpp:124
753 #, c-format
754 msgid "x%d"
755 msgstr ""
756
757 #: ../../../src/MenuActiveEffects.cpp:219
758 msgid "Remaining:"
759 msgstr ""
760
761 #: ../../../src/MenuActiveEffects.cpp:225
762 #, c-format
763 msgid "x%d stacks"
764 msgstr ""
765
766 #: ../../../src/MenuCharacter.cpp:73 ../../../src/MenuCharacter.cpp:78
767 msgid "Name"
768 msgstr "Nom"
769
770 #: ../../../src/MenuCharacter.cpp:74 ../../../src/MenuCharacter.cpp:79
771 msgid "Level"
772 msgstr "Niveau"
773
774 #: ../../../src/MenuCharacter.cpp:310
775 #, c-format
776 msgid "%d unspent stat point"
777 msgstr ""
778
779 #: ../../../src/MenuCharacter.cpp:313
780 #, c-format
781 msgid "%d unspent stat points"
782 msgstr ""
783
784 #: ../../../src/MenuCharacter.cpp:355
785 #, c-format
786 msgid "Reduces the damage taken from \"%s\" elemental attacks."
787 msgstr ""
788
789 #: ../../../src/MenuCharacter.cpp:365 ../../../src/MenuManager.cpp:283
790 #, c-format
791 msgid "XP: %d"
792 msgstr "XP : %d"
793
794 #: ../../../src/MenuCharacter.cpp:367
795 #, c-format
796 msgid "Next: %d"
797 msgstr "Prochain : %d"
798
799 #: ../../../src/MenuCharacter.cpp:373
800 #, c-format
801 msgid "base (%d), bonus (%d)"
802 msgstr "base (%d), bonus (%d)"
803
804 #: ../../../src/MenuCharacter.cpp:381 ../../../src/MenuCharacter.cpp:395
805 msgid "Related stats:"
806 msgstr "Statistiques liées: "
807
808 #: ../../../src/MenuCharacter.cpp:421 ../../../src/MenuCharacter.cpp:445
809 #, c-format
810 msgid "Each level grants %d."
811 msgstr ""
812
813 #: ../../../src/MenuCharacter.cpp:425 ../../../src/MenuCharacter.cpp:449
814 #, c-format
815 msgid "Each point of %s grants %d."
816 msgstr ""
817
818 #: ../../../src/MenuDevConsole.cpp:63
935 "Active les couches parallax. La désactivation de cette option peut améliorer"
936 " les performances dans certains cas."
937
938 #: ../../../src/MenuConfig.cpp:515
939 msgid ""
940 "Enables the below setting that controls the screen gamma level. The behavior"
941 " of the gamma setting can vary between platforms."
942 msgstr ""
943 "Active le réglage ci-dessous qui contrôle le niveau gamma de l'écran. Le "
944 "comportement du paramètre gamma peut varier selon les plateformes."
945
946 #: ../../../src/MenuConfig.cpp:516
947 msgid ""
948 "Provides additional text for information that is primarily conveyed through "
949 "color."
950 msgstr ""
951 "Fournit du texte supplémentaire aux informations principalement transmises "
952 "par la couleur."
953
954 #: ../../../src/MenuConfig.cpp:517
955 msgid ""
956 "Some mods will automatically hide the stat bars when they are inactive. "
957 "Disabling this option will keep them displayed at all times."
958 msgstr ""
959 "Certains mods cachent automatiquement les barres de statistiques quand ils "
960 "sont inactifs. Désactiver cette option les affichera en permanence."
961
962 #: ../../../src/MenuConfig.cpp:518
963 msgid ""
964 "When enabled, empty equipment slots will be filled with applicable items "
965 "when they are obtained."
966 msgstr ""
967 "En activant cette option, les emplacements d'équipement vides seront remplis"
968 " des objets adéquats obtenus."
969
970 #: ../../../src/MenuConfig.cpp:519
971 msgid ""
972 "Shows a marker above enemies, allies, and the player when they are obscured "
973 "by tall objects."
974 msgstr ""
975 "Place un marqueur au-dessus des ennemis, des alliés et du joueur lorsqu'ils "
976 "sont masqués par de grands objets."
977
978 #: ../../../src/MenuConfig.cpp:520
979 msgid ""
980 "When enabled, tooltips for equipped items of the same type are shown next to"
981 " standard item tooltips."
982 msgstr ""
983
984 #: ../../../src/MenuConfig.cpp:521
985 msgid ""
986 "This allows the game to be controlled entirely with the keyboard (or "
987 "joystick)."
988 msgstr ""
989 "Cela permet au jeu d'être entièrement contrôlé via le clavier (ou le "
990 "joystick)."
991
992 #: ../../../src/MenuConfig.cpp:522
993 msgid ""
994 "When 'Move hero using mouse' is enabled, this setting controls if 'Main1' or"
995 " 'Main2' is used to move the hero. If enabled, 'Main2' will move the hero "
996 "instead of 'Main1'."
997 msgstr ""
998 "Lorsque 'Déplacer le héros à la souris' est activé, ce paramètre contrôle si"
999 " 'Principal1' ou 'Principal2' est utilisé pour déplacer le héros. S'il est "
1000 "activé, 'Principal2' déplacera le héros à la place de 'Principal1'."
1001
1002 #: ../../../src/MenuConfig.cpp:523
1003 msgid ""
1004 "When 'Move hero using mouse' is enabled, this setting controls if the Power "
1005 "assigned to the movement button can be used by targeting an enemy. If this "
1006 "setting is disabled, it is required to use 'Shift' to access the Power "
1007 "assigned to the movement button."
1008 msgstr ""
1009 "Si 'Déplacer le héros avec la souris' est activé, ce paramètre contrôle si "
1010 "la Pouvoir assigné au bouton de mouvement peut être utilisé pour cibler un "
1011 "ennemi. S'il est désactivé, il est nécessaire d'utiliser la touche 'Shift' "
1012 "pour activer le Pouvoir assigné au bouton de mouvement."
1013
1014 #: ../../../src/MenuConfig.cpp:524
1015 msgid ""
1016 "The player's attacks will be aimed in the direction of the mouse cursor when"
1017 " this is enabled."
1018 msgstr ""
1019 "L'attaque du joueur sera dirigée dans la direction du curseur de la souris "
1020 "si ce paramètre est activé."
1021
1022 #: ../../../src/MenuConfig.cpp:575
1023 msgid "Active Mods"
1024 msgstr "Mods actifs"
1025
1026 #: ../../../src/MenuConfig.cpp:584
1027 msgid "Available Mods"
1028 msgstr "Mods disponibles"
1029
1030 #: ../../../src/MenuConfig.cpp:603
1031 msgid "<< Disable"
1032 msgstr "<< Désactiver"
1033
1034 #: ../../../src/MenuConfig.cpp:609
1035 msgid "Enable >>"
1036 msgstr "Activer >>"
1037
1038 #: ../../../src/MenuConfig.cpp:1444
1039 msgid "Version:"
1040 msgstr "Version :"
1041
1042 #: ../../../src/MenuConfig.cpp:1449
1043 msgid "Game:"
1044 msgstr "Jeu :"
1045
1046 #: ../../../src/MenuConfig.cpp:1454
1047 msgid "Engine version:"
1048 msgstr "Version du moteur :"
1049
1050 #: ../../../src/MenuConfig.cpp:1462
1051 msgid "Requires mods:"
1052 msgstr "Mods nécessaires :"
1053
1054 #: ../../../src/MenuConfig.cpp:1570 ../../../src/SDLInputState.cpp:748
1055 msgid "(none)"
1056 msgstr "(rien)"
1057
1058 #: ../../../src/MenuConfig.cpp:1587 ../../../src/MenuGameOver.cpp:73
1059 msgid "Save & Exit"
1060 msgstr "Sauvegarder & Quitter"
1061
1062 #: ../../../src/MenuDevConsole.cpp:65
8191063 msgid "Execute"
8201064 msgstr "Éxécuter"
8211065
822 #: ../../../src/MenuDevConsole.cpp:101 ../../../src/MenuDevConsole.cpp:151
1066 #: ../../../src/MenuDevConsole.cpp:103 ../../../src/MenuDevConsole.cpp:153
8231067 msgid "Developer Console"
8241068 msgstr "Console de développement"
8251069
826 #: ../../../src/MenuDevConsole.cpp:141
1070 #: ../../../src/MenuDevConsole.cpp:143
8271071 #, c-format
8281072 msgid "Use '%s' to inspect with the cursor."
829 msgstr ""
830
831 #: ../../../src/MenuDevConsole.cpp:146
1073 msgstr "Utilisez '%s' pour inspecter avec le curseur."
1074
1075 #: ../../../src/MenuDevConsole.cpp:148
8321076 msgid "Arguments with spaces should be enclosed with double quotes. Example:"
8331077 msgstr ""
8341078 "Les arguments contenants des espaces devraient être mis entre guillemets. "
8351079 "Exemple :"
8361080
837 #: ../../../src/MenuDevConsole.cpp:147
1081 #: ../../../src/MenuDevConsole.cpp:149
8381082 msgid "Type 'help' to get a list of commands."
839 msgstr ""
840
841 #: ../../../src/MenuDevConsole.cpp:209 ../../../src/MenuDevConsole.cpp:213
1083 msgstr "Tapez 'help' pour obtenir une liste des commandes."
1084
1085 #: ../../../src/MenuDevConsole.cpp:211 ../../../src/MenuDevConsole.cpp:215
8421086 msgid "px"
843 msgstr ""
844
845 #: ../../../src/MenuDevConsole.cpp:224
1087 msgstr "px"
1088
1089 #: ../../../src/MenuDevConsole.cpp:226
8461090 msgid "Distance"
847 msgstr ""
848
849 #: ../../../src/MenuDevConsole.cpp:239 ../../../src/MenuDevConsole.cpp:286
1091 msgstr "Distance"
1092
1093 #: ../../../src/MenuDevConsole.cpp:241 ../../../src/MenuDevConsole.cpp:289
1094 #: ../../../src/MenuDevConsole.cpp:303
8501095 msgid "Entity"
851 msgstr ""
852
853 #: ../../../src/MenuDevConsole.cpp:261 ../../../src/MenuDevConsole.cpp:268
1096 msgstr "Entité"
1097
1098 #: ../../../src/MenuDevConsole.cpp:263 ../../../src/MenuDevConsole.cpp:270
8541099 msgid "none"
855 msgstr ""
856
857 #: ../../../src/MenuDevConsole.cpp:262 ../../../src/MenuDevConsole.cpp:264
1100 msgstr "aucun"
1101
1102 #: ../../../src/MenuDevConsole.cpp:264 ../../../src/MenuDevConsole.cpp:266
8581103 msgid "wall"
859 msgstr ""
860
861 #: ../../../src/MenuDevConsole.cpp:263 ../../../src/MenuDevConsole.cpp:265
1104 msgstr "mur"
1105
1106 #: ../../../src/MenuDevConsole.cpp:265 ../../../src/MenuDevConsole.cpp:267
8621107 msgid "short wall / pit"
863 msgstr ""
864
865 #: ../../../src/MenuDevConsole.cpp:266
1108 msgstr "petit mur / fossé"
1109
1110 #: ../../../src/MenuDevConsole.cpp:268
8661111 msgid "entity"
867 msgstr ""
868
869 #: ../../../src/MenuDevConsole.cpp:267
1112 msgstr "entité"
1113
1114 #: ../../../src/MenuDevConsole.cpp:269
8701115 msgid "entity, ally"
871 msgstr ""
872
873 #: ../../../src/MenuDevConsole.cpp:274
1116 msgstr "entité, allié"
1117
1118 #: ../../../src/MenuDevConsole.cpp:276
8741119 msgid "Tile"
875 msgstr ""
876
877 #: ../../../src/MenuDevConsole.cpp:360
1120 msgstr "Tuile"
1121
1122 #: ../../../src/MenuDevConsole.cpp:377
8781123 msgid "adds a power to the action bar"
879 msgstr ""
880
881 #: ../../../src/MenuDevConsole.cpp:361
1124 msgstr "ajoute un pouvoir à la barre d'action"
1125
1126 #: ../../../src/MenuDevConsole.cpp:378
8821127 msgid "turns on/off the display of the FPS counter"
883 msgstr ""
884
885 #: ../../../src/MenuDevConsole.cpp:362
1128 msgstr "allume ou éteint l'affichage du compteur de FPS"
1129
1130 #: ../../../src/MenuDevConsole.cpp:379
8861131 msgid "turns on/off all of the HUD elements"
8871132 msgstr "Activer/Désactiver tous les éléments de l'affichage HUD"
8881133
889 #: ../../../src/MenuDevConsole.cpp:363
1134 #: ../../../src/MenuDevConsole.cpp:380
8901135 msgid "turns on/off the developer hud"
8911136 msgstr "Activer/Désactiver l'affichage HUD"
8921137
893 #: ../../../src/MenuDevConsole.cpp:364
1138 #: ../../../src/MenuDevConsole.cpp:381
8941139 msgid ""
8951140 "Prints a list of powers that match a search term. No search term will list "
8961141 "all items"
8971142 msgstr ""
898
899 #: ../../../src/MenuDevConsole.cpp:365
1143 "Imprime une liste des pouvoirs correspondant au terme recherché. Sans terme "
1144 "recherché, affiche tous les objets."
1145
1146 #: ../../../src/MenuDevConsole.cpp:382
9001147 msgid "Prints out all the map filenames located in the \"maps/\" directory."
901 msgstr ""
902
903 #: ../../../src/MenuDevConsole.cpp:366
1148 msgstr "Imprime tous les fichiers cartes situés dans le répertoire \"/maps\"."
1149
1150 #: ../../../src/MenuDevConsole.cpp:383
9041151 msgid ""
9051152 "Prints out the active campaign statuses that match a search term. No search "
9061153 "term will list all active statuses"
9091156 "recherché. L'absence de terme de recherche affichera la liste de tous les "
9101157 "états actifs"
9111158
912 #: ../../../src/MenuDevConsole.cpp:367
1159 #: ../../../src/MenuDevConsole.cpp:384
9131160 msgid ""
9141161 "Prints a list of items that match a search term. No search term will list "
9151162 "all items"
9171164 "Affiche une liste des objets qui correspondent au terme recherché. L'absence"
9181165 " de terme de recherche affichera tous les objets"
9191166
920 #: ../../../src/MenuDevConsole.cpp:368
1167 #: ../../../src/MenuDevConsole.cpp:385
9211168 msgid ""
9221169 "parses a series of event components and executes them as a single event"
9231170 msgstr ""
9241171 "parcourt une série de composants d'événements et les exécutent en tant "
9251172 "qu'événement unique"
9261173
927 #: ../../../src/MenuDevConsole.cpp:369
1174 #: ../../../src/MenuDevConsole.cpp:386
9281175 msgid "clears the command history"
9291176 msgstr "Effacer l'historique de commandes"
9301177
931 #: ../../../src/MenuDevConsole.cpp:370
1178 #: ../../../src/MenuDevConsole.cpp:387
9321179 msgid "displays this text"
9331180 msgstr "affiche ce texte"
9341181
935 #: ../../../src/MenuDevConsole.cpp:377
1182 #: ../../../src/MenuDevConsole.cpp:394
9361183 msgid "Toggled the developer hud"
9371184 msgstr "Affichage HUD développeur basculé"
9381185
939 #: ../../../src/MenuDevConsole.cpp:381
1186 #: ../../../src/MenuDevConsole.cpp:398
9401187 msgid "Toggled the hud"
9411188 msgstr "Affichage HUD basculé"
9421189
943 #: ../../../src/MenuDevConsole.cpp:385
1190 #: ../../../src/MenuDevConsole.cpp:402
9441191 msgid "Toggled the FPS counter"
945 msgstr ""
946
947 #: ../../../src/MenuDevConsole.cpp:534
1192 msgstr "Alterne le compteur FPS"
1193
1194 #: ../../../src/MenuDevConsole.cpp:552
9481195 msgid "ERROR: Incorrect number of arguments"
949 msgstr ""
950
951 #: ../../../src/MenuDevConsole.cpp:536 ../../../src/MenuDevConsole.cpp:564
1196 msgstr "ERREUR : nombre d'arguments incorrect"
1197
1198 #: ../../../src/MenuDevConsole.cpp:554 ../../../src/MenuDevConsole.cpp:582
9521199 msgid "HINT:"
953 msgstr ""
954
955 #: ../../../src/MenuDevConsole.cpp:536
1200 msgstr "SUGGESTION :"
1201
1202 #: ../../../src/MenuDevConsole.cpp:554
9561203 msgid "<id>"
957 msgstr ""
958
959 #: ../../../src/MenuDevConsole.cpp:552
1204 msgstr "<id>"
1205
1206 #: ../../../src/MenuDevConsole.cpp:570
9601207 #, c-format
9611208 msgid "ERROR: '%s' is not a valid event key"
962 msgstr "ERREUR: '%s' n'est pas une clé d'évènement valide"
963
964 #: ../../../src/MenuDevConsole.cpp:562
1209 msgstr "ERREUR : '%s' n'est pas une clé d'évènement valide"
1210
1211 #: ../../../src/MenuDevConsole.cpp:580
9651212 msgid "ERROR: Too few arguments"
966 msgstr "ERREUR: Trop peu d'arguments"
967
968 #: ../../../src/MenuDevConsole.cpp:564
1213 msgstr "ERREUR : Trop peu d'arguments"
1214
1215 #: ../../../src/MenuDevConsole.cpp:582
9691216 msgid "<key>=<val> <key>=<val> ..."
970 msgstr ""
971
972 #: ../../../src/MenuDevConsole.cpp:569
1217 msgstr "<key>=<val> <key>=<val> ..."
1218
1219 #: ../../../src/MenuDevConsole.cpp:587
9731220 msgid "ERROR: Unknown command"
974 msgstr "ERREUR: Commande inconnue"
975
976 #: ../../../src/MenuDevConsole.cpp:571
1221 msgstr "ERREUR : Commande inconnue"
1222
1223 #: ../../../src/MenuDevConsole.cpp:589
9771224 msgid "HINT: Type help"
9781225 msgstr "SUGGESTION : tapez help"
9791226
980 #: ../../../src/MenuEnemy.cpp:138
1227 #: ../../../src/MenuEnemy.cpp:162
9811228 #, c-format
9821229 msgid "%s level %d"
9831230 msgstr "%s niveau %d"
9841231
985 #: ../../../src/MenuEnemy.cpp:162
1232 #: ../../../src/MenuEnemy.cpp:186
9861233 msgid "Dead"
9871234 msgstr "Mort"
9881235
989 #: ../../../src/MenuEnemy.cpp:164
1236 #: ../../../src/MenuEnemy.cpp:188
9901237 msgid "Destroyed"
991 msgstr ""
992
993 #: ../../../src/MenuExit.cpp:85 ../../../src/MenuExit.cpp:139
994 msgid "Paused"
995 msgstr "En pause"
996
997 #: ../../../src/MenuExit.cpp:91
998 msgid "Save & Exit"
999 msgstr "Sauvegarder & Quitter"
1000
1001 #: ../../../src/MenuExit.cpp:92
1002 msgid "Exit"
1003 msgstr "Quitter"
1004
1005 #: ../../../src/MenuExit.cpp:96
1006 msgid "Continue"
1007 msgstr "Continuer"
1008
1009 #: ../../../src/MenuInventory.cpp:73
1010 msgid "Automatically equip items"
1011 msgstr "Équiper automatiquement les objets"
1012
1013 #: ../../../src/MenuInventory.cpp:188
1238 msgstr "Détruit"
1239
1240 #: ../../../src/MenuGameOver.cpp:69
1241 msgid "Game Over"
1242 msgstr ""
1243
1244 #: ../../../src/MenuInventory.cpp:178
10141245 #, c-format
10151246 msgid "Lost %d%% of %s."
1016 msgstr ""
1017
1018 #: ../../../src/MenuInventory.cpp:195
1247 msgstr "Perte %d %% de %s."
1248
1249 #: ../../../src/MenuInventory.cpp:185
10191250 #, c-format
10201251 msgid "Lost %d%% of total XP."
1021 msgstr ""
1022
1023 #: ../../../src/MenuInventory.cpp:200
1252 msgstr "Perte de %d %% des XP totaux."
1253
1254 #: ../../../src/MenuInventory.cpp:190
10241255 #, c-format
10251256 msgid "Lost %d%% of current level XP."
1026 msgstr ""
1027
1028 #: ../../../src/MenuInventory.cpp:226
1257 msgstr "Perte de %d %% du niveau d'XP actuel."
1258
1259 #: ../../../src/MenuInventory.cpp:216
10291260 #, c-format
10301261 msgid "Lost %s."
10311262 msgstr "Perdu %s."
10321263
1033 #: ../../../src/MenuInventory.cpp:274 ../../../src/MenuStash.cpp:146
1264 #: ../../../src/MenuInventory.cpp:258 ../../../src/MenuStash.cpp:276
10341265 #, c-format
10351266 msgid "%d %s"
10361267 msgstr "%d %s"
10371268
1038 #: ../../../src/MenuInventory.cpp:317
1269 #: ../../../src/MenuInventory.cpp:301
10391270 msgid "Pick up item(s):"
1040 msgstr "Rammaser les objet(s):"
1041
1042 #: ../../../src/MenuInventory.cpp:318
1271 msgstr "Ramasser les objet(s) :"
1272
1273 #: ../../../src/MenuInventory.cpp:302
10431274 msgid "Use or equip item:"
1044 msgstr "Utilisez ou équipez un objet:"
1045
1046 #: ../../../src/MenuInventory.cpp:319
1275 msgstr "Utiliser ou équiper un objet :"
1276
1277 #: ../../../src/MenuInventory.cpp:303
10471278 #, c-format
10481279 msgid "%s modifiers"
1049 msgstr "modificateurs de %s"
1050
1051 #: ../../../src/MenuInventory.cpp:320
1280 msgstr "Modificateurs de %s"
1281
1282 #: ../../../src/MenuInventory.cpp:304
10521283 msgid "Select a quantity of item:"
1053 msgstr "Sélectionnez une quantitée d'objet:"
1054
1055 #: ../../../src/MenuInventory.cpp:323
1284 msgstr "Sélectionner une quantité d'objet :"
1285
1286 #: ../../../src/MenuInventory.cpp:307
10561287 msgid "Stash item stack:"
10571288 msgstr "Mettre au coffre la pile d'objets :"
10581289
1059 #: ../../../src/MenuInventory.cpp:325
1290 #: ../../../src/MenuInventory.cpp:309
10601291 msgid "Sell item stack:"
10611292 msgstr "Vendre la pile d'objets :"
10621293
1063 #: ../../../src/MenuInventory.cpp:592
1294 #: ../../../src/MenuInventory.cpp:576
10641295 msgid "You don't have enough of the required item."
10651296 msgstr "Vous n'avez pas l'objet nécessaire en quantité suffisante."
10661297
1067 #: ../../../src/MenuInventory.cpp:599
1298 #: ../../../src/MenuInventory.cpp:588
10681299 msgid "You can't use this item right now."
1069 msgstr ""
1070
1071 #: ../../../src/MenuInventory.cpp:611
1300 msgstr "Vous ne pouvez pas utiliser cet objet maintenant."
1301
1302 #: ../../../src/MenuInventory.cpp:600
10721303 msgid "This item can only be used from the action bar."
10731304 msgstr "Cet objet ne peut être utilisé que depuis la barre d'action."
10741305
1075 #: ../../../src/MenuInventory.cpp:729
1306 #: ../../../src/MenuInventory.cpp:718
10761307 msgid "Inventory is full."
10771308 msgstr "L'inventaire est complet."
10781309
1079 #: ../../../src/MenuInventory.cpp:849
1310 #: ../../../src/MenuInventory.cpp:843
10801311 #, c-format
10811312 msgid "Not enough %s."
1082 msgstr ""
1083
1084 #: ../../../src/MenuInventory.cpp:869 ../../../src/MenuInventory.cpp:876
1313 msgstr "Pas assez de %s."
1314
1315 #: ../../../src/MenuInventory.cpp:863 ../../../src/MenuInventory.cpp:870
10851316 msgid "This item can not be sold."
1086 msgstr ""
1317 msgstr "Cet objet ne peut pas être vendu."
10871318
10881319 #: ../../../src/MenuLog.cpp:91
10891320 msgid "Notes"
10931324 msgid "Quests"
10941325 msgstr "Quêtes"
10951326
1096 #: ../../../src/MenuManager.cpp:286
1327 #: ../../../src/MenuManager.cpp:305
10971328 #, c-format
10981329 msgid "XP: %d/%d"
1099 msgstr "XP: %d/%d"
1100
1101 #: ../../../src/MenuManager.cpp:827
1330 msgstr "XP : %d/%d"
1331
1332 #: ../../../src/MenuManager.cpp:875
11021333 msgid "This item can not be dropped."
1334 msgstr "Cet objet ne peut pas être abandonné."
1335
1336 #: ../../../src/MenuManager.cpp:1501
1337 msgid "Equipped"
1338 msgstr ""
1339
1340 #: ../../../src/MenuMovementType.cpp:87
1341 msgid "Select a Movement Type"
1342 msgstr ""
1343
1344 #: ../../../src/MenuMovementType.cpp:89
1345 msgid "Can be changed later in the Configuration menu."
1346 msgstr ""
1347
1348 #: ../../../src/MenuMovementType.cpp:92 ../../../src/MenuMovementType.cpp:122
1349 msgid "Keyboard"
1350 msgstr ""
1351
1352 #: ../../../src/MenuMovementType.cpp:93 ../../../src/MenuMovementType.cpp:128
1353 msgid "Mouse"
1354 msgstr ""
1355
1356 #: ../../../src/MenuMovementType.cpp:129
1357 msgid "Button"
11031358 msgstr ""
11041359
11051360 #: ../../../src/MenuNumPicker.cpp:59
11061361 msgid "Enter amount:"
11071362 msgstr "Saisir la quantité :"
11081363
1109 #: ../../../src/MenuPowers.cpp:787
1364 #: ../../../src/MenuPowers.cpp:872
11101365 msgid "Passive"
1111 msgstr ""
1112
1113 #: ../../../src/MenuPowers.cpp:792
1366 msgstr "Passif"
1367
1368 #: ../../../src/MenuPowers.cpp:879
11141369 #, c-format
11151370 msgid "Costs %d MP"
11161371 msgstr "Consomme %d PM"
11171372
1118 #: ../../../src/MenuPowers.cpp:796
1373 #: ../../../src/MenuPowers.cpp:883
11191374 #, c-format
11201375 msgid "Costs %d HP"
11211376 msgstr "Consomme %d PV"
11221377
1123 #: ../../../src/MenuPowers.cpp:801
1378 #: ../../../src/MenuPowers.cpp:887
11241379 msgid "Cooldown:"
1125 msgstr ""
1126
1127 #: ../../../src/MenuPowers.cpp:866 ../../../src/MenuPowers.cpp:869
1380 msgstr "Rechargement :"
1381
1382 #: ../../../src/MenuPowers.cpp:938 ../../../src/MenuPowers.cpp:941
11281383 msgid "Damage per second"
1129 msgstr "Dommages par secondes"
1130
1131 #: ../../../src/MenuPowers.cpp:872 ../../../src/MenuPowers.cpp:875
1384 msgstr "Dégâts par seconde"
1385
1386 #: ../../../src/MenuPowers.cpp:944 ../../../src/MenuPowers.cpp:947
11321387 msgid "HP per second"
11331388 msgstr "PV par seconde"
11341389
1135 #: ../../../src/MenuPowers.cpp:878 ../../../src/MenuPowers.cpp:881
1390 #: ../../../src/MenuPowers.cpp:950 ../../../src/MenuPowers.cpp:953
11361391 msgid "MP per second"
11371392 msgstr "PM par seconde"
11381393
1139 #: ../../../src/MenuPowers.cpp:885
1394 #: ../../../src/MenuPowers.cpp:957
11401395 msgid "Immobilize"
11411396 msgstr "Immobilise"
11421397
1143 #: ../../../src/MenuPowers.cpp:893
1398 #: ../../../src/MenuPowers.cpp:965
11441399 msgid "Immunity"
11451400 msgstr "Immunité"
11461401
1147 #: ../../../src/MenuPowers.cpp:896
1402 #: ../../../src/MenuPowers.cpp:968
11481403 msgid "Immunity to damage over time"
11491404 msgstr "Immunité aux dommages progressifs"
11501405
1151 #: ../../../src/MenuPowers.cpp:899
1406 #: ../../../src/MenuPowers.cpp:971
11521407 msgid "Immunity to slow"
11531408 msgstr "Immunité à la lenteur"
11541409
1155 #: ../../../src/MenuPowers.cpp:902
1410 #: ../../../src/MenuPowers.cpp:974
11561411 msgid "Immunity to stun"
11571412 msgstr "Immunité à l'étourdissement"
11581413
1159 #: ../../../src/MenuPowers.cpp:905
1414 #: ../../../src/MenuPowers.cpp:977
11601415 msgid "Immunity to HP steal"
11611416 msgstr "Immunité au vol de PV"
11621417
1163 #: ../../../src/MenuPowers.cpp:908
1418 #: ../../../src/MenuPowers.cpp:980
11641419 msgid "Immunity to MP steal"
11651420 msgstr "Immunité au vol de PM"
11661421
1167 #: ../../../src/MenuPowers.cpp:911
1422 #: ../../../src/MenuPowers.cpp:983
11681423 msgid "Immunity to knockback"
11691424 msgstr "Immunité au recul"
11701425
1171 #: ../../../src/MenuPowers.cpp:914
1426 #: ../../../src/MenuPowers.cpp:986
11721427 msgid "Immunity to damage reflection"
11731428 msgstr "Immunité au renvoi de dommage"
11741429
1175 #: ../../../src/MenuPowers.cpp:917
1430 #: ../../../src/MenuPowers.cpp:992
11761431 msgid "Stun"
11771432 msgstr "Étourdissement"
11781433
1179 #: ../../../src/MenuPowers.cpp:920
1434 #: ../../../src/MenuPowers.cpp:995
11801435 msgid "Automatic revive on death"
11811436 msgstr "Résurection automatique lors de la mort"
11821437
1183 #: ../../../src/MenuPowers.cpp:923
1438 #: ../../../src/MenuPowers.cpp:998
11841439 msgid "Convert"
11851440 msgstr "Convertir"
11861441
1187 #: ../../../src/MenuPowers.cpp:926
1442 #: ../../../src/MenuPowers.cpp:1001
11881443 msgid "Fear"
11891444 msgstr "Peur"
11901445
1191 #: ../../../src/MenuPowers.cpp:929
1446 #: ../../../src/MenuPowers.cpp:1004
11921447 msgid "Lifespan"
11931448 msgstr "Durée de vie"
11941449
1195 #: ../../../src/MenuPowers.cpp:953
1450 #: ../../../src/MenuPowers.cpp:1028
11961451 msgid "Magical Shield"
11971452 msgstr "Bouclier magique"
11981453
1199 #: ../../../src/MenuPowers.cpp:982
1454 #: ../../../src/MenuPowers.cpp:1057
12001455 msgid "Healing"
12011456 msgstr "Soin"
12021457
1203 #: ../../../src/MenuPowers.cpp:985
1458 #: ../../../src/MenuPowers.cpp:1060
12041459 msgid "Knockback"
12051460 msgstr "Recul"
12061461
1207 #: ../../../src/MenuPowers.cpp:1010
1462 #: ../../../src/MenuPowers.cpp:1084
12081463 #, c-format
12091464 msgid "%d%% chance"
12101465 msgstr ""
12111466
1212 #: ../../../src/MenuPowers.cpp:1062
1467 #: ../../../src/MenuPowers.cpp:1136
12131468 msgid "Base Accuracy"
1214 msgstr ""
1215
1216 #: ../../../src/MenuPowers.cpp:1082
1469 msgstr "Précision de base"
1470
1471 #: ../../../src/MenuPowers.cpp:1156
12171472 msgid "Base Critical Chance"
12181473 msgstr "Chance criticales de base"
12191474
1220 #: ../../../src/MenuPowers.cpp:1090
1475 #: ../../../src/MenuPowers.cpp:1164
12211476 msgid "Ignores Absorbtion"
1222 msgstr "Ignore l'Absorption"
1223
1224 #: ../../../src/MenuPowers.cpp:1095
1477 msgstr "Ignore l'absorption"
1478
1479 #: ../../../src/MenuPowers.cpp:1169
12251480 msgid "Ignores Avoidance"
1226 msgstr ""
1227
1228 #: ../../../src/MenuPowers.cpp:1100
1481 msgstr "Ignore l'esquive"
1482
1483 #: ../../../src/MenuPowers.cpp:1174
12291484 #, c-format
12301485 msgid "%d%% Chance to crit slowed targets"
12311486 msgstr "%d%% chances de coup critique sur les cibles lentes"
12321487
1233 #: ../../../src/MenuPowers.cpp:1105
1488 #: ../../../src/MenuPowers.cpp:1179
12341489 #, c-format
12351490 msgid "Elemental Damage (%s)"
1236 msgstr ""
1237
1238 #: ../../../src/MenuPowers.cpp:1114
1491 msgstr "Dégâts élémentaires (%s)"
1492
1493 #: ../../../src/MenuPowers.cpp:1188
12391494 #, c-format
12401495 msgid "Requires a %s"
1241 msgstr ""
1242
1243 #: ../../../src/MenuPowers.cpp:1151 ../../../src/MenuPowers.cpp:1154
1496 msgstr "Nécessite un(e) %s"
1497
1498 #: ../../../src/MenuPowers.cpp:1226 ../../../src/MenuPowers.cpp:1229
12441499 #, c-format
12451500 msgid "Requires Power: %s"
1246 msgstr "Nécessite le pouvoir: %s"
1247
1248 #: ../../../src/MenuPowers.cpp:1163
1501 msgstr "Nécessite le pouvoir : %s"
1502
1503 #: ../../../src/MenuPowers.cpp:1238
12491504 msgid "Click to Unlock (uses 1 Skill Point)"
12501505 msgstr "Cliquez pour débloquer (utilise 1 point de compétence)"
12511506
1252 #: ../../../src/MenuPowers.cpp:1167 ../../../src/MenuPowers.cpp:1169
1507 #: ../../../src/MenuPowers.cpp:1242 ../../../src/MenuPowers.cpp:1244
12531508 msgid "Requires 1 Skill Point"
1254 msgstr ""
1255
1256 #: ../../../src/MenuPowers.cpp:1355
1257 #, c-format
1258 msgid "%d unspent skill point"
1259 msgstr ""
1260
1261 #: ../../../src/MenuPowers.cpp:1358
1262 #, c-format
1263 msgid "%d unspent skill points"
1264 msgstr ""
1265
1266 #: ../../../src/MenuPowers.cpp:1388
1509 msgstr "Nécessite 1 point de compétence"
1510
1511 #: ../../../src/MenuPowers.cpp:1444
1512 #, c-format
1513 msgid "Available skill points: %d"
1514 msgstr ""
1515
1516 #: ../../../src/MenuPowers.cpp:1476
12671517 msgid "Next Level:"
1268 msgstr ""
1269
1270 #: ../../../src/MenuStash.cpp:96
1271 msgid "Shared Stash"
1272 msgstr "Coffre commun"
1273
1274 #: ../../../src/MenuStash.cpp:209
1275 msgid "Can not store quest items in the stash."
1276 msgstr "Impossible de stocker l'objet d'une quête dans le coffre."
1277
1278 #: ../../../src/MenuStash.cpp:219
1518 msgstr "Niveau suivant :"
1519
1520 #: ../../../src/MenuStash.cpp:80 ../../../src/MenuStash.cpp:161
1521 msgid "Stash"
1522 msgstr "Coffre"
1523
1524 #: ../../../src/MenuStash.cpp:174 ../../../src/MenuStash.cpp:188
1525 msgid "Private"
1526 msgstr "Privé"
1527
1528 #: ../../../src/MenuStash.cpp:175
1529 msgid "Shared"
1530 msgstr "Partagé"
1531
1532 #: ../../../src/MenuStash.cpp:340
1533 msgid "This item can not be stored in the stash."
1534 msgstr "Cet objet ne peut pas être placé dans le coffre."
1535
1536 #: ../../../src/MenuStash.cpp:345
1537 msgid "This item can not be stored in the private stash."
1538 msgstr "Cet objet ne peut pas être placé dans le coffre privé."
1539
1540 #: ../../../src/MenuStash.cpp:350
1541 msgid "This item can not be stored in the shared stash."
1542 msgstr "Cet objet ne peut pas être placé dans le coffre partagé."
1543
1544 #: ../../../src/MenuStash.cpp:360
12791545 msgid "Stash is full."
1280 msgstr ""
1281
1282 #: ../../../src/MenuTalker.cpp:454
1546 msgstr "le coffre est complet."
1547
1548 #: ../../../src/MenuStash.cpp:414
1549 #, c-format
1550 msgid "Can not store item in stash: %s"
1551 msgstr "Impossible de placer l'objet dans le coffre : %s"
1552
1553 #: ../../../src/MenuTalker.cpp:448
1554 #, c-format
1555 msgid "<dialog node %d>"
1556 msgstr "<dialog node %d>"
1557
1558 #: ../../../src/MenuTalker.cpp:456
12831559 msgid "Trade"
12841560 msgstr "Commercer"
12851561
1286 #: ../../../src/MenuVendor.cpp:58
1562 #: ../../../src/MenuVendor.cpp:60
12871563 msgid "Buyback"
12881564 msgstr "Racheter"
12891565
1290 #: ../../../src/MenuVendor.cpp:279
1566 #: ../../../src/MenuVendor.cpp:283
12911567 msgid "Vendor"
12921568 msgstr "Vendeur"
12931569
1294 #: ../../../src/PowerManager.cpp:1136
1570 #: ../../../src/PowerManager.cpp:1208
12951571 #, c-format
12961572 msgid "+%d Shield"
12971573 msgstr "Bouclier +%d"
12981574
1299 #: ../../../src/PowerManager.cpp:1392
1575 #: ../../../src/PowerManager.cpp:1465
13001576 msgid "You are already transformed, untransform first."
13011577 msgstr "Vous êtes deja transformé, reprenez forme humaine avant."
13021578
1303 #: ../../../src/PowerManager.cpp:1404
1579 #: ../../../src/PowerManager.cpp:1477
13041580 msgid "Could not untransform at this position."
13051581 msgstr "Vous ne pouvez pas reprendre forme humaine à cette position."
13061582
13071583 #: ../../../src/QuestLog.cpp:234
13081584 msgid "Completed Quests"
1309 msgstr ""
1310
1311 #: ../../../src/SaveLoad.cpp:243 ../../../src/SaveLoad.cpp:244
1585 msgstr "Quêtes terminées"
1586
1587 #: ../../../src/SaveLoad.cpp:250 ../../../src/SaveLoad.cpp:251
13121588 msgid "Game saved."
13131589 msgstr "Jeu sauvegardé."
13141590
1315 #: ../../../src/SDLInputState.cpp:582
1591 #: ../../../src/SDLInputState.cpp:643
1592 msgid "BkSp"
1593 msgstr "RetArr"
1594
1595 #: ../../../src/SDLInputState.cpp:644
1596 msgid "Caps"
1597 msgstr "Maj"
1598
1599 #: ../../../src/SDLInputState.cpp:645
1600 msgid "Del"
1601 msgstr "Suppr"
1602
1603 #: ../../../src/SDLInputState.cpp:647 ../../../src/SDLInputState.cpp:677
1604 msgid "End"
1605 msgstr "Fin"
1606
1607 #: ../../../src/SDLInputState.cpp:648
1608 msgid "Esc"
1609 msgstr "Ech"
1610
1611 #: ../../../src/SDLInputState.cpp:649 ../../../src/SDLInputState.cpp:679
1612 msgid "Home"
1613 msgstr "Orig"
1614
1615 #: ../../../src/SDLInputState.cpp:650
1616 msgid "Ins"
1617 msgstr "Ins"
1618
1619 #: ../../../src/SDLInputState.cpp:651
1620 msgid "LAlt"
1621 msgstr "AltG"
1622
1623 #: ../../../src/SDLInputState.cpp:652
1624 msgid "LCtrl"
1625 msgstr "CtrlG"
1626
1627 #: ../../../src/SDLInputState.cpp:654
1628 msgid "LShft"
1629 msgstr "ShfG"
1630
1631 #: ../../../src/SDLInputState.cpp:655
1632 msgid "Num"
1633 msgstr "Num"
1634
1635 #: ../../../src/SDLInputState.cpp:656
1636 msgid "PgDn"
1637 msgstr "PgDn"
1638
1639 #: ../../../src/SDLInputState.cpp:657
1640 msgid "PgUp"
1641 msgstr "PgUp"
1642
1643 #: ../../../src/SDLInputState.cpp:658 ../../../src/SDLInputState.cpp:688
1644 msgid "Pause"
1645 msgstr "Pause"
1646
1647 #: ../../../src/SDLInputState.cpp:659
1648 msgid "Print"
1649 msgstr "Imp"
1650
1651 #: ../../../src/SDLInputState.cpp:660
1652 msgid "RAlt"
1653 msgstr "AltD"
1654
1655 #: ../../../src/SDLInputState.cpp:661
1656 msgid "RCtrl"
1657 msgstr "CtrlD"
1658
1659 #: ../../../src/SDLInputState.cpp:662
1660 msgid "Ret"
1661 msgstr "Ret"
1662
1663 #: ../../../src/SDLInputState.cpp:664
1664 msgid "RShft"
1665 msgstr "ShfD"
1666
1667 #: ../../../src/SDLInputState.cpp:665
1668 msgid "SLock"
1669 msgstr "ArrDefil"
1670
1671 #: ../../../src/SDLInputState.cpp:666
1672 msgid "Spc"
1673 msgstr "Esp"
1674
1675 #: ../../../src/SDLInputState.cpp:667 ../../../src/SDLInputState.cpp:697
1676 msgid "Tab"
1677 msgstr "Tab"
1678
1679 #: ../../../src/SDLInputState.cpp:673
13161680 msgid "Backspace"
1317 msgstr ""
1318
1319 #: ../../../src/SDLInputState.cpp:583
1681 msgstr "Retour arrière"
1682
1683 #: ../../../src/SDLInputState.cpp:674
13201684 msgid "CapsLock"
1321 msgstr ""
1322
1323 #: ../../../src/SDLInputState.cpp:586
1324 msgid "End"
1325 msgstr ""
1326
1327 #: ../../../src/SDLInputState.cpp:587
1685 msgstr "Verr Maj"
1686
1687 #: ../../../src/SDLInputState.cpp:678
13281688 msgid "Escape"
1329 msgstr ""
1330
1331 #: ../../../src/SDLInputState.cpp:588
1332 msgid "Home"
1333 msgstr ""
1334
1335 #: ../../../src/SDLInputState.cpp:589
1689 msgstr "Échap"
1690
1691 #: ../../../src/SDLInputState.cpp:680
13361692 msgid "Insert"
1337 msgstr ""
1338
1339 #: ../../../src/SDLInputState.cpp:590
1693 msgstr "Inser"
1694
1695 #: ../../../src/SDLInputState.cpp:681
13401696 msgid "Left Alt"
1341 msgstr ""
1342
1343 #: ../../../src/SDLInputState.cpp:591
1697 msgstr "Alt gauche"
1698
1699 #: ../../../src/SDLInputState.cpp:682
13441700 msgid "Left Ctrl"
1345 msgstr ""
1346
1347 #: ../../../src/SDLInputState.cpp:593
1701 msgstr "Ctrl gauche"
1702
1703 #: ../../../src/SDLInputState.cpp:684
13481704 msgid "Left Shift"
1349 msgstr ""
1350
1351 #: ../../../src/SDLInputState.cpp:594
1705 msgstr "Maj gauche"
1706
1707 #: ../../../src/SDLInputState.cpp:685
13521708 msgid "NumLock"
1353 msgstr ""
1354
1355 #: ../../../src/SDLInputState.cpp:595
1709 msgstr "Ver Num"
1710
1711 #: ../../../src/SDLInputState.cpp:686
13561712 msgid "PageDown"
1357 msgstr ""
1358
1359 #: ../../../src/SDLInputState.cpp:596
1713 msgstr "PgSuiv"
1714
1715 #: ../../../src/SDLInputState.cpp:687
13601716 msgid "PageUp"
1361 msgstr ""
1362
1363 #: ../../../src/SDLInputState.cpp:597
1364 msgid "Pause"
1365 msgstr ""
1366
1367 #: ../../../src/SDLInputState.cpp:598
1717 msgstr "PgPréc"
1718
1719 #: ../../../src/SDLInputState.cpp:689
13681720 msgid "PrintScreen"
1369 msgstr ""
1370
1371 #: ../../../src/SDLInputState.cpp:599
1721 msgstr "Impr Écran"
1722
1723 #: ../../../src/SDLInputState.cpp:690
13721724 msgid "Right Alt"
1373 msgstr ""
1374
1375 #: ../../../src/SDLInputState.cpp:600
1725 msgstr "Alt droit"
1726
1727 #: ../../../src/SDLInputState.cpp:691
13761728 msgid "Right Ctrl"
1377 msgstr ""
1378
1379 #: ../../../src/SDLInputState.cpp:601
1729 msgstr "Ctrl droit"
1730
1731 #: ../../../src/SDLInputState.cpp:692
13801732 msgid "Return"
1381 msgstr ""
1382
1383 #: ../../../src/SDLInputState.cpp:603
1733 msgstr "Entrée"
1734
1735 #: ../../../src/SDLInputState.cpp:694
13841736 msgid "Right Shift"
1385 msgstr ""
1386
1387 #: ../../../src/SDLInputState.cpp:604
1737 msgstr "Maj droit"
1738
1739 #: ../../../src/SDLInputState.cpp:695
13881740 msgid "ScrollLock"
1389 msgstr ""
1390
1391 #: ../../../src/SDLInputState.cpp:605
1741 msgstr "Arrêt défil"
1742
1743 #: ../../../src/SDLInputState.cpp:696
13921744 msgid "Space"
1393 msgstr ""
1394
1395 #: ../../../src/SDLInputState.cpp:606
1396 msgid "Tab"
1397 msgstr ""
1398
1399 #: ../../../src/SDLInputState.cpp:620
1745 msgstr "Espace"
1746
1747 #: ../../../src/SDLInputState.cpp:710
1748 #, c-format
1749 msgid "M%d"
1750 msgstr "M%d"
1751
1752 #: ../../../src/SDLInputState.cpp:716
14001753 #, c-format
14011754 msgid "Mouse %d"
1402 msgstr ""
1403
1404 #: ../../../src/SDLInputState.cpp:628
1755 msgstr "Souris %d"
1756
1757 #: ../../../src/SDLInputState.cpp:726
1758 #, c-format
1759 msgid "JX%d-"
1760 msgstr "JX%d-"
1761
1762 #: ../../../src/SDLInputState.cpp:728
14051763 #, c-format
14061764 msgid "Axis %d -"
14071765 msgstr "Axe %d -"
14081766
1409 #: ../../../src/SDLInputState.cpp:630
1767 #: ../../../src/SDLInputState.cpp:732
1768 #, c-format
1769 msgid "JX%d+"
1770 msgstr "JX%d+"
1771
1772 #: ../../../src/SDLInputState.cpp:734
14101773 #, c-format
14111774 msgid "Axis %d +"
14121775 msgstr "Axe %d +"
14131776
1414 #: ../../../src/SDLInputState.cpp:633
1777 #: ../../../src/SDLInputState.cpp:739
1778 #, c-format
1779 msgid "JB%d"
1780 msgstr "JB%d"
1781
1782 #: ../../../src/SDLInputState.cpp:741
14151783 #, c-format
14161784 msgid "Button %d"
14171785 msgstr "Bouton %d"
14181786
1419 #: ../../../src/SDLInputState.cpp:637
1420 msgid "(none)"
1421 msgstr "(rien)"
1422
1423 #: ../../../src/SDLInputState.cpp:677
1787 #: ../../../src/SDLInputState.cpp:787
14241788 msgid "Touch control D-Pad"
1425 msgstr ""
1426
1427 #: ../../../src/SDLInputState.cpp:701
1789 msgstr "Touch control D-Pad"
1790
1791 #: ../../../src/SDLInputState.cpp:810
14281792 msgid "Touch control buttons"
1429 msgstr ""
1430
1431 #: ../../../src/SDLInputState.cpp:716
1793 msgstr "Touch control buttons"
1794
1795 #: ../../../src/SDLInputState.cpp:824
14321796 msgid "Tap"
14331797 msgstr "Touchez"
14341798
1435 #: ../../../src/SDLInputState.cpp:760 ../../../src/SDLInputState.cpp:764
1436 #: ../../../src/SDLInputState.cpp:768
1799 #: ../../../src/SDLInputState.cpp:876 ../../../src/SDLInputState.cpp:878
1800 #, c-format
1801 msgid "Can not bind: %s"
1802 msgstr "Impossible d'affecter : %s"
1803
1804 #: ../../../src/SDLInputState.cpp:890 ../../../src/SDLInputState.cpp:894
1805 #: ../../../src/SDLInputState.cpp:898
14371806 #, c-format
14381807 msgid "'%s' is no longer bound to:"
1439 msgstr ""
1808 msgstr "'%s' n'est plus assigné à :"
14401809
14411810 #: ../../../src/Stats.cpp:38
14421811 msgid "Max HP"
1443 msgstr ""
1812 msgstr "PV max"
14441813
14451814 #: ../../../src/Stats.cpp:39
14461815 msgid "Total amount of HP."
1447 msgstr ""
1816 msgstr "Nombre total de PV."
14481817
14491818 #: ../../../src/Stats.cpp:43
14501819 msgid "HP Regen"
1451 msgstr ""
1820 msgstr "Régénération PV"
14521821
14531822 #: ../../../src/Stats.cpp:44
14541823 msgid "Ticks of HP regen per minute."
1455 msgstr "Quantité de PV regénérés par minute."
1824 msgstr "Quantité de PV régénérés par minute."
14561825
14571826 #: ../../../src/Stats.cpp:48
14581827 msgid "Max MP"
1459 msgstr ""
1828 msgstr "PM max"
14601829
14611830 #: ../../../src/Stats.cpp:49
14621831 msgid "Total amount of MP."
1463 msgstr ""
1832 msgstr "Nombre total de PM."
14641833
14651834 #: ../../../src/Stats.cpp:53
14661835 msgid "MP Regen"
1467 msgstr ""
1836 msgstr "Régénération PM"
14681837
14691838 #: ../../../src/Stats.cpp:54
14701839 msgid "Ticks of MP regen per minute."
1471 msgstr "Quanité de PM regénérés par minute."
1840 msgstr "Quantité de PM régénérés par minute."
14721841
14731842 #: ../../../src/Stats.cpp:58
14741843 msgid "Accuracy"
1475 msgstr ""
1844 msgstr "Précision"
14761845
14771846 #: ../../../src/Stats.cpp:59
14781847 msgid ""
14791848 "Accuracy rating. The enemy's Avoidance rating is subtracted from this value "
14801849 "to calculate your likeliness to land a direct hit."
14811850 msgstr ""
1851 "Score de précision. Le score d'esquive de l'ennemi est soustrait à cette "
1852 "valeur pour calculer votre probabilité de porter un coup direct."
14821853
14831854 #: ../../../src/Stats.cpp:63
14841855 msgid "Avoidance"
1485 msgstr ""
1856 msgstr "Esquive"
14861857
14871858 #: ../../../src/Stats.cpp:64
14881859 msgid ""
14891860 "Avoidance rating. This value is subtracted from the enemy's Accuracy rating "
14901861 "to calculate their likeliness to land a direct hit."
14911862 msgstr ""
1863 "Score d'esquive. Cette valeur est soustraite au score de précision de "
1864 "l'ennemi pour calculer sa probabilité de porter un coup direct."
14921865
14931866 #: ../../../src/Stats.cpp:68
14941867 msgid "Absorb Min"
1495 msgstr ""
1868 msgstr "Absorption min"
14961869
14971870 #: ../../../src/Stats.cpp:69 ../../../src/Stats.cpp:74
14981871 msgid "Reduces the amount of damage taken."
1499 msgstr ""
1872 msgstr "Réduit la quantité de dégât reçue."
15001873
15011874 #: ../../../src/Stats.cpp:73
15021875 msgid "Absorb Max"
1503 msgstr ""
1876 msgstr "Absorption max"
15041877
15051878 #: ../../../src/Stats.cpp:78
15061879 msgid "Critical Hit Chance"
15081881
15091882 #: ../../../src/Stats.cpp:79
15101883 msgid "Chance for an attack to do extra damage."
1511 msgstr ""
1884 msgstr "Chance pour une attaque de faire des dégâts supplémentaires."
15121885
15131886 #: ../../../src/Stats.cpp:83
15141887 msgid "Bonus XP"
1515 msgstr ""
1888 msgstr "Bonus XP"
15161889
15171890 #: ../../../src/Stats.cpp:84
15181891 msgid "Increases the XP gained per kill."
1519 msgstr ""
1892 msgstr "Augmente l'XP gagnée pour chaque mort."
15201893
15211894 #: ../../../src/Stats.cpp:88
15221895 #, c-format
15231896 msgid "Bonus %s"
1524 msgstr ""
1897 msgstr "Bonus %s"
15251898
15261899 #: ../../../src/Stats.cpp:89
15271900 #, c-format
15281901 msgid "Increases the %s found per drop."
1529 msgstr ""
1902 msgstr "Augmente %s trouvé dans chaque butin."
15301903
15311904 #: ../../../src/Stats.cpp:93
15321905 msgid "Item Find Chance"
1533 msgstr ""
1906 msgstr "Chance de trouver un objet"
15341907
15351908 #: ../../../src/Stats.cpp:94
15361909 msgid "Increases the chance that an enemy will drop an item."
1537 msgstr ""
1910 msgstr "Augmente les chances qu'un ennemi laisse un objet."
15381911
15391912 #: ../../../src/Stats.cpp:98
15401913 msgid "Stealth"
1541 msgstr ""
1914 msgstr "Furtivité"
15421915
15431916 #: ../../../src/Stats.cpp:99
15441917 msgid "Increases your ability to move undetected."
1545 msgstr ""
1918 msgstr "Augmente votre capacité à vous déplacer sans être détecté."
15461919
15471920 #: ../../../src/Stats.cpp:103
15481921 msgid "Poise"
1549 msgstr ""
1922 msgstr "Équilibre"
15501923
15511924 #: ../../../src/Stats.cpp:104
15521925 msgid "Reduces your chance of stumbling when hit."
1553 msgstr ""
1926 msgstr "Réduit vos risques de trébucher quand vous êtes touché."
15541927
15551928 #: ../../../src/Stats.cpp:108
15561929 msgid "Missile Reflect Chance"
15621935
15631936 #: ../../../src/Stats.cpp:113
15641937 msgid "Damage Reflection"
1565 msgstr "Renvoi de Dommages"
1938 msgstr "Renvoi de dégâts"
15661939
15671940 #: ../../../src/Stats.cpp:114
15681941 msgid "Deals a percentage of damage taken back to the attacker."
15701943
15711944 #: ../../../src/Stats.cpp:118
15721945 msgid "HP Steal"
1573 msgstr ""
1946 msgstr "Vol de PV"
15741947
15751948 #: ../../../src/Stats.cpp:119
15761949 msgid "Percentage of HP stolen per hit."
1577 msgstr ""
1950 msgstr "Pourcentage de PV volé par coup."
15781951
15791952 #: ../../../src/Stats.cpp:123
15801953 msgid "MP Steal"
1581 msgstr ""
1954 msgstr "Vol de PM"
15821955
15831956 #: ../../../src/Stats.cpp:124
15841957 msgid "Percentage of MP stolen per hit."
1585 msgstr ""
1958 msgstr "Pourcentage de PM volé par coup."
15861959
15871960 #: ../../../src/Stats.cpp:128
15881961 msgid "Base HP"
15921965 msgid "Base MP"
15931966 msgstr "PM de base"
15941967
1595 #: ../../../src/Utils.cpp:346
1968 #: ../../../src/Utils.cpp:365
15961969 msgid "k"
1597 msgstr ""
1598
1599 #: ../../../src/Utils.cpp:580
1970 msgstr "k"
1971
1972 #: ../../../src/Utils.cpp:635
16001973 #, c-format
16011974 msgid "%s second"
1602 msgstr ""
1603
1604 #: ../../../src/Utils.cpp:583
1975 msgstr "%s seconde"
1976
1977 #: ../../../src/Utils.cpp:638
16051978 #, c-format
16061979 msgid "%s seconds"
1607 msgstr ""
1980 msgstr "%s secondes"
16081981
16091982 #: ../../../src/Version.cpp:139
16101983 msgid "or newer"
1611 msgstr ""
1984 msgstr "ou plus récent"
16121985
16131986 #: ../../../src/Version.cpp:142
16141987 msgid "or older"
1615 msgstr ""
1988 msgstr "ou plus ancien"
44 #
55 # Translators:
66 # Justin Jacobs <jajdorkster@gmail.com>, 2018
7 # GunChleoc, 2018
7 # GunChleoc, 2020
88 #
99 #, fuzzy
1010 msgid ""
1111 msgstr ""
1212 "Project-Id-Version: PACKAGE VERSION\n"
1313 "Report-Msgid-Bugs-To: \n"
14 "POT-Creation-Date: 2018-11-17 21:50-0500\n"
14 "POT-Creation-Date: 2021-05-23 20:34-0400\n"
1515 "PO-Revision-Date: 2018-03-28 19:16+0000\n"
16 "Last-Translator: GunChleoc, 2018\n"
16 "Last-Translator: GunChleoc, 2020\n"
1717 "Language-Team: Gaelic, Scottish (https://www.transifex.com/flareorg/teams/84925/gd/)\n"
1818 "MIME-Version: 1.0\n"
1919 "Content-Type: text/plain; charset=UTF-8\n"
2121 "Language: gd\n"
2222 "Plural-Forms: nplurals=4; plural=(n==1 || n==11) ? 0 : (n==2 || n==12) ? 1 : (n > 2 && n < 20) ? 2 : 3;\n"
2323
24 #: ../../../src/Avatar.cpp:367
24 #: ../../../src/Avatar.cpp:391
25 msgid "Your health is low!"
26 msgstr "Tha droch-shlàinte ort!"
27
28 #: ../../../src/Avatar.cpp:421
2529 #, c-format
2630 msgid "Congratulations, you have reached level %d!"
2731 msgstr "Meal do naidheachd, ràinig thu leibheil %d!"
2832
29 #: ../../../src/Avatar.cpp:369
30 msgid "You may increase one attribute through the Character Menu."
31 msgstr "Faodaidh tu buadh àrdachadh air clàr-taice a’ phearsa."
32
33 #: ../../../src/Avatar.cpp:583
34 msgid "You are defeated. Game over! ${INPUT_CONTINUE} to exit to Title."
35 msgstr ""
36 "Chaidh do ruaig. Crìoch a’ gheama! ${INPUT_CONTINUE} gus fàgail gun tiotal."
37
38 #: ../../../src/Avatar.cpp:589
39 msgid "You are defeated. ${INPUT_CONTINUE} to continue."
40 msgstr "Chaidh do ruaig. ${INPUT_CONTINUE} gus leantainn air adhart."
41
42 #: ../../../src/Avatar.cpp:839
33 #: ../../../src/Avatar.cpp:423
34 msgid "You may increase one or more attributes through the Character Menu."
35 msgstr "Faodaidh tu buadh no dhà àrdachadh air clàr-taice a’ phearsa."
36
37 #: ../../../src/Avatar.cpp:427
38 msgid "You may unlock one or more abilities through the Powers Menu."
39 msgstr ""
40 "Faodaidh tu a’ ghlas a thoirt far comas no dhà air clàr-taice nan "
41 "cumhachdan."
42
43 #: ../../../src/Avatar.cpp:689
44 msgid "You are defeated."
45 msgstr ""
46
47 #: ../../../src/Avatar.cpp:935
4348 msgid "Transformation expired. You have been moved back to a safe place."
4449 msgstr ""
4550 "Dh’fhalbh an ùine air a’ chruth-atharrachadh. Chaidh do ghluasad air ais gu "
4651 "ionad sàbhailte."
4752
48 #: ../../../src/CampaignManager.cpp:153
53 #: ../../../src/CampaignManager.cpp:152
4954 #, c-format
5055 msgid "%d %s removed."
5156 msgstr "Chaidh %d %s a thoirt air falbh."
5257
53 #: ../../../src/CampaignManager.cpp:162
58 #: ../../../src/CampaignManager.cpp:171
59 #, c-format
60 msgid "%s x%d removed."
61 msgstr "Chaidh %s x%d a thoirt air falbh."
62
63 #: ../../../src/CampaignManager.cpp:173
5464 #, c-format
5565 msgid "%s removed."
5666 msgstr "Chaidh %s a thoirt air falbh."
5767
58 #: ../../../src/CampaignManager.cpp:175
68 #: ../../../src/CampaignManager.cpp:187
69 #, c-format
70 msgid "You receive %d %s."
71 msgstr "Fhuair thu %d %s."
72
73 #: ../../../src/CampaignManager.cpp:191
74 #, c-format
75 msgid "You receive %s x%d."
76 msgstr "Fhuair thu %s x%d."
77
78 #: ../../../src/CampaignManager.cpp:193
5979 #, c-format
6080 msgid "You receive %s."
6181 msgstr "Fhuair thu %s."
6282
63 #: ../../../src/CampaignManager.cpp:177
64 #, c-format
65 msgid "You receive %s x%d."
66 msgstr "Fhuair thu %s x%d."
67
68 #: ../../../src/CampaignManager.cpp:186
69 #, c-format
70 msgid "You receive %d %s."
71 msgstr "Fhuair thu %d %s."
72
73 #: ../../../src/CampaignManager.cpp:195
83 #: ../../../src/CampaignManager.cpp:210
7484 #, c-format
7585 msgid "You receive %d XP."
7686 msgstr "Fhuair thu %d puing-eòlais."
7787
78 #: ../../../src/CampaignManager.cpp:201
88 #: ../../../src/CampaignManager.cpp:216
7989 msgid "HP restored."
8090 msgstr "Chaidh puingean-beatha a leigheas."
8191
82 #: ../../../src/CampaignManager.cpp:205
92 #: ../../../src/CampaignManager.cpp:220
8393 msgid "MP restored."
8494 msgstr "Chaidh puingean-gluasaid a leigheas."
8595
86 #: ../../../src/CampaignManager.cpp:210
96 #: ../../../src/CampaignManager.cpp:225
8797 msgid "HP and MP restored."
8898 msgstr "Chaidh puingean-beatha is puingean-gluasaid a leigheas."
8999
90 #: ../../../src/CampaignManager.cpp:214
100 #: ../../../src/CampaignManager.cpp:229
91101 msgid "Negative effects removed."
92102 msgstr "Chaidh èifeachdan dona a thoirt air falbh."
93103
94 #: ../../../src/CampaignManager.cpp:220
104 #: ../../../src/CampaignManager.cpp:235
95105 msgid "HP and MP restored, negative effects removed"
96106 msgstr ""
97107 "Chaidh puingean-beatha is puingean-gluasaid a leigheas is èifeachdan dona a "
117127 "\n"
118128 "An t-inneal-reandaraidh tùsail a bhios nas luaithe mar as trice na an t-inneal-reandaraidh bathair-bhog SDL."
119129
120 #: ../../../src/EngineSettings.cpp:561
130 #: ../../../src/EngineSettings.cpp:586
121131 msgid "Adventurer"
122132 msgstr "Baoghlair"
123133
124 #: ../../../src/Entity.cpp:511
134 #: ../../../src/Entity.cpp:527
125135 msgid "miss"
126136 msgstr "mì-amais"
127137
128 #: ../../../src/Entity.cpp:548 ../../../src/PowerManager.cpp:1152
129 #: ../../../src/StatBlock.cpp:805 ../../../src/StatBlock.cpp:811
138 #: ../../../src/Entity.cpp:565 ../../../src/PowerManager.cpp:1224
139 #: ../../../src/StatBlock.cpp:917 ../../../src/StatBlock.cpp:923
130140 #, c-format
131141 msgid "+%d HP"
132142 msgstr "+%d puingean-beatha"
133143
134 #: ../../../src/Entity.cpp:555 ../../../src/StatBlock.cpp:816
135 #: ../../../src/StatBlock.cpp:822
144 #: ../../../src/Entity.cpp:572 ../../../src/StatBlock.cpp:928
145 #: ../../../src/StatBlock.cpp:934
136146 #, c-format
137147 msgid "+%d MP"
138148 msgstr "+%d puingean-gluasaid"
139149
140 #: ../../../src/EventManager.cpp:738
150 #: ../../../src/EventManager.cpp:792
141151 msgid "Unknown destination"
142152 msgstr "Ceann-uidhe neo-aithnichte"
143153
144 #: ../../../src/GameStateConfigBase.cpp:89
145 #: ../../../src/GameStateConfigBase.cpp:110
154 #: ../../../src/GameState.cpp:37 ../../../src/GameState.cpp:58
155 msgid "Loading..."
156 msgstr "’Ga luchdadh…"
157
158 #: ../../../src/GameStateLoad.cpp:90 ../../../src/GameStateLoad.cpp:103
159 msgid "Delete Save"
160 msgstr "Sguab às"
161
162 #: ../../../src/GameStateLoad.cpp:90
163 msgid "Delete this save?"
164 msgstr "An sguab sinn an geama às?"
165
166 #: ../../../src/GameStateLoad.cpp:92
167 msgid "Exit to Title"
168 msgstr "Fàg gun tiotal"
169
170 #: ../../../src/GameStateLoad.cpp:95
171 msgid "New Game"
172 msgstr "Geama ùr"
173
174 #: ../../../src/GameStateLoad.cpp:99 ../../../src/GameStateLoad.cpp:607
175 msgid "Choose a Slot"
176 msgstr "Tagh slot"
177
178 #: ../../../src/GameStateLoad.cpp:580 ../../../src/GameStateLoad.cpp:601
179 msgid "Enable a story mod to continue"
180 msgstr "Cuir tuilleadan sgeulachd an comas gus leantainn air adhart"
181
182 #: ../../../src/GameStateLoad.cpp:596
183 msgid "Load Game"
184 msgstr "Luchdaich"
185
186 #: ../../../src/GameStateLoad.cpp:705
187 msgid "Entering game world..."
188 msgstr "A’ dol a-steach do shaoghal a’ gheama…"
189
190 #: ../../../src/GameStateLoad.cpp:708
191 msgid "Loading saved game..."
192 msgstr "A’ luchdadh geama air a shàbhaladh…"
193
194 #: ../../../src/GameStateLoad.cpp:741
195 msgid "Invalid save"
196 msgstr "Geama air a shàbhaladh mì-dhligheach"
197
198 #: ../../../src/GameStateLoad.cpp:765 ../../../src/ItemManager.cpp:745
199 #: ../../../src/MenuPowers.cpp:860 ../../../src/MenuPowers.cpp:1219
200 #: ../../../src/MenuPowers.cpp:1631
201 #, c-format
202 msgid "Level %d"
203 msgstr "Leibheil %d"
204
205 #: ../../../src/GameStateNew.cpp:66 ../../../src/InputState.cpp:416
206 #: ../../../src/MenuConfig.cpp:246
207 msgid "Cancel"
208 msgstr "Sguir dheth"
209
210 #: ../../../src/GameStateNew.cpp:69
211 msgid "Create"
212 msgstr "Cruthaich"
213
214 #: ../../../src/GameStateNew.cpp:77
215 msgid "Randomize"
216 msgstr "Cuir air thuaiream"
217
218 #: ../../../src/GameStateNew.cpp:93
219 msgid "Choose a Portrait"
220 msgstr "Tagh dealbh"
221
222 #: ../../../src/GameStateNew.cpp:97
223 msgid "Choose a Name"
224 msgstr "Tagh ainm"
225
226 #: ../../../src/GameStateNew.cpp:101
227 msgid "Permadeath?"
228 msgstr "Bàs maireannach?"
229
230 #: ../../../src/GameStateNew.cpp:105
231 msgid "Choose a Class"
232 msgstr "Tagh clas"
233
234 #: ../../../src/GameStateTitle.cpp:107
235 msgid "Play Game"
236 msgstr "Cluich geama"
237
238 #: ../../../src/GameStateTitle.cpp:110
239 msgid "Enable a core mod to continue"
240 msgstr "Cuir bun-thuilleadan an comas gus leantainn air adhart"
241
242 #: ../../../src/GameStateTitle.cpp:114 ../../../src/MenuMiniMap.cpp:152
243 msgid "Configuration"
244 msgstr "Rèiteachadh"
245
246 #: ../../../src/GameStateTitle.cpp:117
247 msgid "Credits"
248 msgstr "Urram"
249
250 #: ../../../src/GameStateTitle.cpp:120
251 msgid "Exit Game"
252 msgstr "Fàg an geama"
253
254 #: ../../../src/InputState.cpp:417
255 msgid "Accept"
256 msgstr "Gabh ris"
257
258 #: ../../../src/InputState.cpp:418 ../../../src/MenuMovementType.cpp:123
259 #: ../../../src/MenuMovementType.cpp:132 ../../../src/SDLInputState.cpp:668
260 #: ../../../src/SDLInputState.cpp:698
261 msgid "Up"
262 msgstr "Suas"
263
264 #: ../../../src/InputState.cpp:419 ../../../src/MenuMovementType.cpp:125
265 #: ../../../src/MenuMovementType.cpp:134 ../../../src/SDLInputState.cpp:646
266 #: ../../../src/SDLInputState.cpp:676
267 msgid "Down"
268 msgstr "Sìos"
269
270 #: ../../../src/InputState.cpp:420 ../../../src/MenuMovementType.cpp:124
271 #: ../../../src/MenuMovementType.cpp:133 ../../../src/SDLInputState.cpp:653
272 #: ../../../src/SDLInputState.cpp:683
273 msgid "Left"
274 msgstr "Gu clì"
275
276 #: ../../../src/InputState.cpp:421 ../../../src/MenuMovementType.cpp:126
277 #: ../../../src/MenuMovementType.cpp:135 ../../../src/SDLInputState.cpp:663
278 #: ../../../src/SDLInputState.cpp:693
279 msgid "Right"
280 msgstr "Gu deas"
281
282 #: ../../../src/InputState.cpp:422
283 msgid "Bar1"
284 msgstr "Bàr 1"
285
286 #: ../../../src/InputState.cpp:423
287 msgid "Bar2"
288 msgstr "Bàr 2"
289
290 #: ../../../src/InputState.cpp:424
291 msgid "Bar3"
292 msgstr "Bàr 3"
293
294 #: ../../../src/InputState.cpp:425
295 msgid "Bar4"
296 msgstr "Bàr 4"
297
298 #: ../../../src/InputState.cpp:426
299 msgid "Bar5"
300 msgstr "Bàr 5"
301
302 #: ../../../src/InputState.cpp:427
303 msgid "Bar6"
304 msgstr "Bàr 6"
305
306 #: ../../../src/InputState.cpp:428
307 msgid "Bar7"
308 msgstr "Bàr 7"
309
310 #: ../../../src/InputState.cpp:429
311 msgid "Bar8"
312 msgstr "Bàr 8"
313
314 #: ../../../src/InputState.cpp:430
315 msgid "Bar9"
316 msgstr "Bàr 9"
317
318 #: ../../../src/InputState.cpp:431
319 msgid "Bar0"
320 msgstr "Bàr 0"
321
322 #: ../../../src/InputState.cpp:432 ../../../src/MenuActionBar.cpp:84
323 #: ../../../src/MenuCharacter.cpp:54
324 msgid "Character"
325 msgstr "Pearsa"
326
327 #: ../../../src/InputState.cpp:433 ../../../src/MenuActionBar.cpp:85
328 #: ../../../src/MenuInventory.cpp:130 ../../../src/MenuVendor.cpp:59
329 msgid "Inventory"
330 msgstr "Tasgadh"
331
332 #: ../../../src/InputState.cpp:434 ../../../src/MenuActionBar.cpp:86
333 #: ../../../src/MenuPowers.cpp:158
334 msgid "Powers"
335 msgstr "Cumhachdan"
336
337 #: ../../../src/InputState.cpp:435 ../../../src/MenuActionBar.cpp:87
338 #: ../../../src/MenuLog.cpp:72
339 msgid "Log"
340 msgstr "Leabhar-latha"
341
342 #: ../../../src/InputState.cpp:436
343 msgid "Main1"
344 msgstr "Prìomh-ghnìomh"
345
346 #: ../../../src/InputState.cpp:437
347 msgid "Main2"
348 msgstr "Gnìomh dàrnach"
349
350 #: ../../../src/InputState.cpp:438
351 msgid "Ctrl"
352 msgstr "Ctrl"
353
354 #: ../../../src/InputState.cpp:439
355 msgid "Shift"
356 msgstr "Shift"
357
358 #: ../../../src/InputState.cpp:440
359 msgid "Alt"
360 msgstr "Alt"
361
362 #: ../../../src/InputState.cpp:441 ../../../src/SDLInputState.cpp:675
363 msgid "Delete"
364 msgstr "Delete"
365
366 #: ../../../src/InputState.cpp:442
367 msgid "ActionBar Accept"
368 msgstr "Bàr – Gabh ris"
369
370 #: ../../../src/InputState.cpp:443
371 msgid "ActionBar Left"
372 msgstr "Bàr – Gu clì"
373
374 #: ../../../src/InputState.cpp:444
375 msgid "ActionBar Right"
376 msgstr "Bàr – Gu deas"
377
378 #: ../../../src/InputState.cpp:445
379 msgid "ActionBar Use"
380 msgstr "Bàr – Cleachd"
381
382 #: ../../../src/InputState.cpp:446
383 msgid "Developer Menu"
384 msgstr "Clàr-taice an luchd-leasachaidh"
385
386 #: ../../../src/InputState.cpp:448
387 msgid "Left Mouse"
388 msgstr "Clì na luchaige"
389
390 #: ../../../src/InputState.cpp:449
391 msgid "Middle Mouse"
392 msgstr "Meadhanach na luchaige"
393
394 #: ../../../src/InputState.cpp:450
395 msgid "Right Mouse"
396 msgstr "Deas na luchaige"
397
398 #: ../../../src/InputState.cpp:451
399 msgid "Wheel Up"
400 msgstr "Cuibhle suas"
401
402 #: ../../../src/InputState.cpp:452
403 msgid "Wheel Down"
404 msgstr "Cuibhle sìos"
405
406 #: ../../../src/InputState.cpp:453
407 msgid "Mouse X1"
408 msgstr "X1 na luchaige"
409
410 #: ../../../src/InputState.cpp:454
411 msgid "Mouse X2"
412 msgstr "X2 na luchaige"
413
414 #: ../../../src/ItemManager.cpp:475
415 msgid "Unknown Item"
416 msgstr "Nì nach aithne dhuinn"
417
418 #: ../../../src/ItemManager.cpp:646 ../../../src/MenuPowers.cpp:959
419 #, c-format
420 msgid "%d%% Speed"
421 msgstr "Luaths de %d%%"
422
423 #: ../../../src/ItemManager.cpp:650 ../../../src/MenuPowers.cpp:962
424 #, c-format
425 msgid "%d%% Attack Speed"
426 msgstr "Luaths ionnsaighe de %d%%"
427
428 #: ../../../src/ItemManager.cpp:672 ../../../src/MenuCharacter.cpp:352
429 #: ../../../src/MenuPowers.cpp:931
430 #, c-format
431 msgid "Resistance (%s)"
432 msgstr "Comas-seasaimh (%s)"
433
434 #: ../../../src/ItemManager.cpp:682
435 #, c-format
436 msgid "Requires %s"
437 msgstr "Feumach air %s"
438
439 #: ../../../src/ItemManager.cpp:731
440 msgid "Quest Item"
441 msgstr "Nì cinn-thurais"
442
443 #: ../../../src/ItemManager.cpp:758
444 #, c-format
445 msgid "Quality: %s"
446 msgstr "Càileachd: %s"
447
448 #: ../../../src/ItemManager.cpp:783
449 #, c-format
450 msgid "Absorb: %d-%d"
451 msgstr "Ceapadh: %d–%d"
452
453 #: ../../../src/ItemManager.cpp:785
454 #, c-format
455 msgid "Absorb: %d"
456 msgstr "Ceapadh: %d"
457
458 #: ../../../src/ItemManager.cpp:825 ../../../src/MenuPowers.cpp:1206
459 #: ../../../src/MenuPowers.cpp:1209
460 #, c-format
461 msgid "Requires Level %d"
462 msgstr "Feum air leibheil %d"
463
464 #: ../../../src/ItemManager.cpp:836 ../../../src/MenuPowers.cpp:1198
465 #: ../../../src/MenuPowers.cpp:1200
466 #, c-format
467 msgid "Requires %s %d"
468 msgstr "Feum air: %s %d"
469
470 #: ../../../src/ItemManager.cpp:847
471 #, c-format
472 msgid "Requires Class: %s"
473 msgstr "Feum air a’ chlas: %s"
474
475 #: ../../../src/ItemManager.cpp:863 ../../../src/ItemManager.cpp:875
476 #, c-format
477 msgid "Buy Price: %d %s"
478 msgstr "Prìs ceannaich: %d %s"
479
480 #: ../../../src/ItemManager.cpp:865 ../../../src/ItemManager.cpp:877
481 #, c-format
482 msgid "Buy Price: %d %s each"
483 msgstr "Prìs ceannaich: %d %s an urra"
484
485 #: ../../../src/ItemManager.cpp:885
486 #, c-format
487 msgid "Sell Price: %d %s"
488 msgstr "Prìs reic: %d %s"
489
490 #: ../../../src/ItemManager.cpp:887
491 #, c-format
492 msgid "Sell Price: %d %s each"
493 msgstr "Prìs reic: %d %s an urra"
494
495 #: ../../../src/ItemManager.cpp:896
496 msgid "Set:"
497 msgstr "Seata:"
498
499 #: ../../../src/ItemManager.cpp:903
500 #, c-format
501 msgid "%d items:"
502 msgstr "%d nithean:"
503
504 #: ../../../src/ItemManager.cpp:915
505 #, c-format
506 msgid "Press [%s] to read"
507 msgstr "Brùth air [%s] gus a leughadh"
508
509 #: ../../../src/ItemManager.cpp:918
510 #, c-format
511 msgid "Press [%s] to use"
512 msgstr "Brùth air [%s] gus a chleachdadh"
513
514 #: ../../../src/MenuActionBar.cpp:239 ../../../src/MenuActionBar.cpp:246
515 #: ../../../src/MenuActionBar.cpp:249 ../../../src/MenuActionBar.cpp:255
516 #, c-format
517 msgid "Hotkey: %s"
518 msgstr "Grad-iuchair: %s"
519
520 #: ../../../src/MenuActionBar.cpp:621
521 msgid "Not enough MP."
522 msgstr "Chan fhoghainn na PG."
523
524 #: ../../../src/MenuActiveEffects.cpp:124
525 #, c-format
526 msgid "x%d"
527 msgstr "x%d"
528
529 #: ../../../src/MenuActiveEffects.cpp:219
530 msgid "Remaining:"
531 msgstr "Air fhàgail:"
532
533 #: ../../../src/MenuActiveEffects.cpp:225
534 #, c-format
535 msgid "x%d stacks"
536 msgstr "x%d cruach(an)"
537
538 #: ../../../src/MenuCharacter.cpp:73 ../../../src/MenuCharacter.cpp:78
539 msgid "Name"
540 msgstr "Ainm"
541
542 #: ../../../src/MenuCharacter.cpp:74 ../../../src/MenuCharacter.cpp:79
543 msgid "Level"
544 msgstr "Leibheil"
545
546 #: ../../../src/MenuCharacter.cpp:309
547 #, c-format
548 msgid "Available stat points: %d"
549 msgstr ""
550
551 #: ../../../src/MenuCharacter.cpp:353
552 #, c-format
553 msgid "Reduces the damage taken from \"%s\" elemental attacks."
554 msgstr ""
555 "Ìslichidh seo an dochann a dh’fhulaingeas tu o ionnsaighean dùileach “%s”."
556
557 #: ../../../src/MenuCharacter.cpp:363 ../../../src/MenuManager.cpp:301
558 #, c-format
559 msgid "XP: %d"
560 msgstr "Puingean-eòlais: %d"
561
562 #: ../../../src/MenuCharacter.cpp:365
563 #, c-format
564 msgid "Next: %d"
565 msgstr "An ath-fhear: %d"
566
567 #: ../../../src/MenuCharacter.cpp:371
568 #, c-format
569 msgid "base (%d), bonus (%d)"
570 msgstr "bunait (%d), duais (%d)"
571
572 #: ../../../src/MenuCharacter.cpp:379 ../../../src/MenuCharacter.cpp:393
573 msgid "Related stats:"
574 msgstr "Stadastaireachd cho-cheangailte:"
575
576 #: ../../../src/MenuCharacter.cpp:419 ../../../src/MenuCharacter.cpp:443
577 #, c-format
578 msgid "Each level grants %d."
579 msgstr "Bheir gach leibheil %d dhut."
580
581 #: ../../../src/MenuCharacter.cpp:423 ../../../src/MenuCharacter.cpp:447
582 #, c-format
583 msgid "Each point of %s grants %d."
584 msgstr "Bheir gach puing dhe %s %d dhut."
585
586 #: ../../../src/MenuConfig.cpp:122 ../../../src/MenuConfig.cpp:1171
587 msgid "Clear"
588 msgstr "Falamhaich"
589
590 #: ../../../src/MenuConfig.cpp:122 ../../../src/MenuConfig.cpp:1169
591 msgid "Assign:"
592 msgstr "Sònraich:"
593
594 #: ../../../src/MenuConfig.cpp:123 ../../../src/MenuConfig.cpp:245
146595 msgid "Defaults"
147596 msgstr "Bun-roghainnean"
148597
149 #: ../../../src/GameStateConfigBase.cpp:89
598 #: ../../../src/MenuConfig.cpp:123
150599 msgid "Reset ALL settings?"
151600 msgstr "A bheil thu airson GACH roghainn ath-shuidheachadh?"
152601
153 #: ../../../src/GameStateConfigBase.cpp:109 ../../../src/MenuNumPicker.cpp:49
602 #: ../../../src/MenuConfig.cpp:244 ../../../src/MenuNumPicker.cpp:49
154603 msgid "OK"
155604 msgstr "Ceart ma-thà"
156605
157 #: ../../../src/GameStateConfigBase.cpp:111 ../../../src/GameStateNew.cpp:65
158 #: ../../../src/InputState.cpp:401
159 msgid "Cancel"
160 msgstr "Sguir dheth"
161
162 #: ../../../src/GameStateConfigBase.cpp:160
163 #: ../../../src/GameStateConfigDesktop.cpp:130
606 #: ../../../src/MenuConfig.cpp:248 ../../../src/MenuGameOver.cpp:72
607 msgid "Continue"
608 msgstr "Lean air adhart"
609
610 #: ../../../src/MenuConfig.cpp:250
611 msgid "Save Game"
612 msgstr "Sàbhail an geama"
613
614 #: ../../../src/MenuConfig.cpp:293
615 msgid "Default"
616 msgstr "Bun-roghainn"
617
618 #: ../../../src/MenuConfig.cpp:293
619 msgid ""
620 "Show all loot tooltips, except for those that would be obscured by the "
621 "player or an enemy. Temporarily show all loot tooltips with 'Alt'."
622 msgstr ""
623 "Seall a h-uile gliocas-sgrìn air spùinn ach an fheadhainn a rachadh fhalach "
624 "leis a’ cluicheadair no le nàmhaid. Seall a h-uile gliocas-sgrìn air spùinn "
625 "rè seal le “Alt”."
626
627 #: ../../../src/MenuConfig.cpp:294
628 msgid "Show all"
629 msgstr "Seall na h-uile"
630
631 #: ../../../src/MenuConfig.cpp:294
632 msgid ""
633 "Always show loot tooltips. Temporarily hide all loot tooltips with 'Alt'."
634 msgstr ""
635 "Seall gliocasan-sgrìn air spùinn an-còmhnaidh. Falaich a h-uile gliocas-"
636 "sgrìn air spùinn rè seal le “Alt”."
637
638 #: ../../../src/MenuConfig.cpp:295 ../../../src/MenuConfig.cpp:300
639 msgid "Hidden"
640 msgstr "Falaichte"
641
642 #: ../../../src/MenuConfig.cpp:295
643 msgid ""
644 "Always hide loot tooltips, except for when a piece of loot is hovered with "
645 "the mouse cursor. Temporarily show all loot tooltips with 'Alt'."
646 msgstr ""
647 "Falaich gliocasan-sgrìn air spùinn an-còmhnaidh ach nuair a chumas tu an "
648 "luchag air cuid spùinne. Seall a h-uile gliocas-sgrìn air spùinn rè seal le "
649 "“Alt”."
650
651 #: ../../../src/MenuConfig.cpp:298
652 msgid "Visible"
653 msgstr "Ri fhaicinn"
654
655 #: ../../../src/MenuConfig.cpp:299
656 msgid "Visible (2x zoom)"
657 msgstr "Ri fhaicinn (sùm 2x)"
658
659 #: ../../../src/MenuConfig.cpp:303
660 msgid ""
661 "Controls the type of warning to be activated when the player is below the "
662 "low health threshold."
663 msgstr ""
664 "Stiùirichidh seo an seòrsa de rabhadh a gheibh an cluicheadair nuair a bhios"
665 " an t-slàinte nas ìsle na an stairsneach."
666
667 #: ../../../src/MenuConfig.cpp:304
668 msgid "- Display a message"
669 msgstr "- Seall teachdaireachd"
670
671 #: ../../../src/MenuConfig.cpp:305
672 msgid "- Play a sound"
673 msgstr "- Cluich fuaim"
674
675 #: ../../../src/MenuConfig.cpp:306
676 msgid "- Change the cursor"
677 msgstr "- Atharraich an cùrsair"
678
679 #: ../../../src/MenuConfig.cpp:308
680 msgid "Disabled"
681 msgstr "À comas"
682
683 #: ../../../src/MenuConfig.cpp:309
684 msgid "All"
685 msgstr "Na h-uile"
686
687 #: ../../../src/MenuConfig.cpp:310
688 msgid "Message & Cursor"
689 msgstr "Teachdaireachd ⁊ cùrsair"
690
691 #: ../../../src/MenuConfig.cpp:311
692 msgid "Message & Sound"
693 msgstr "Teachdaireachd ⁊ fuaim"
694
695 #: ../../../src/MenuConfig.cpp:312
696 msgid "Sound & Cursor"
697 msgstr "Fuaim ⁊ cùrsair"
698
699 #: ../../../src/MenuConfig.cpp:313
700 msgid "Message"
701 msgstr "Teachdaireachd"
702
703 #: ../../../src/MenuConfig.cpp:314
704 msgid "Cursor"
705 msgstr "Cùrsair"
706
707 #: ../../../src/MenuConfig.cpp:315
708 msgid "Sound"
709 msgstr "Fuaim"
710
711 #: ../../../src/MenuConfig.cpp:321
712 msgid ""
713 "When the player's health drops below the given threshold, the low health "
714 "notifications are triggered if one or more of them is enabled."
715 msgstr ""
716 "Nuair a thèid slàinte a’ chluicheadair nas ìsle na an stairsneach, nochdaidh"
717 " na brathan droch-shlàinte a tha an comas."
718
719 #: ../../../src/MenuConfig.cpp:334 ../../../src/MenuConfig.cpp:1587
720 #: ../../../src/MenuGameOver.cpp:116
721 msgid "Exit"
722 msgstr "Fàg an geama"
723
724 #: ../../../src/MenuConfig.cpp:335
725 msgid "Video"
726 msgstr "Video"
727
728 #: ../../../src/MenuConfig.cpp:336
164729 msgid "Audio"
165730 msgstr "Fuaim"
166731
167 #: ../../../src/GameStateConfigBase.cpp:161
168 #: ../../../src/GameStateConfigDesktop.cpp:131
732 #: ../../../src/MenuConfig.cpp:337
169733 msgid "Interface"
170734 msgstr "Eadar-aghaidh"
171735
172 #: ../../../src/GameStateConfigBase.cpp:162
173 #: ../../../src/GameStateConfigDesktop.cpp:134
736 #: ../../../src/MenuConfig.cpp:338
737 msgid "Input"
738 msgstr "Ion-chur"
739
740 #: ../../../src/MenuConfig.cpp:339
741 msgid "Keybindings"
742 msgstr "Nasgadh iuchraichean"
743
744 #: ../../../src/MenuConfig.cpp:340
174745 msgid "Mods"
175746 msgstr "Tuilleadain"
176747
177 #: ../../../src/GameStateConfigBase.cpp:249 ../../../src/MenuExit.cpp:72
748 #: ../../../src/MenuConfig.cpp:352
749 msgid "Paused"
750 msgstr "’Na stad"
751
752 #: ../../../src/MenuConfig.cpp:355
753 msgid "Time Played"
754 msgstr "Ùine air a chluich"
755
756 #: ../../../src/MenuConfig.cpp:361
757 msgid "Renderer"
758 msgstr "Inneal-reandaraidh"
759
760 #: ../../../src/MenuConfig.cpp:362
761 msgid "Full Screen Mode"
762 msgstr "Modh làn-sgrìn"
763
764 #: ../../../src/MenuConfig.cpp:363
765 msgid "Hardware surfaces"
766 msgstr "Uachdaran bathair-chruaidh"
767
768 #: ../../../src/MenuConfig.cpp:364
769 msgid "V-Sync"
770 msgstr "Sioncronachadh-V"
771
772 #: ../../../src/MenuConfig.cpp:365
773 msgid "Texture Filtering"
774 msgstr "Criathrag innich"
775
776 #: ../../../src/MenuConfig.cpp:366
777 msgid "DPI scaling"
778 msgstr "Sgèileadh DPI"
779
780 #: ../../../src/MenuConfig.cpp:367
781 msgid "Parallax Layers"
782 msgstr "Breathan paraileige"
783
784 #: ../../../src/MenuConfig.cpp:368
785 msgid "Allow changing gamma"
786 msgstr "Faodar gamma atharrachadh"
787
788 #: ../../../src/MenuConfig.cpp:369
789 msgid "Gamma"
790 msgstr "Gamma"
791
792 #: ../../../src/MenuConfig.cpp:371
793 msgid "Sound Volume"
794 msgstr "Àirde na fuaime"
795
796 #: ../../../src/MenuConfig.cpp:372
178797 msgid "Music Volume"
179798 msgstr "Àirde a’ chiùil"
180799
181 #: ../../../src/GameStateConfigBase.cpp:253 ../../../src/MenuExit.cpp:77
182 msgid "Sound Volume"
183 msgstr "Àirde na fuaime"
184
185 #: ../../../src/GameStateConfigBase.cpp:257
800 #: ../../../src/MenuConfig.cpp:374
186801 msgid "Language"
187802 msgstr "Cànan"
188803
189 #: ../../../src/GameStateConfigBase.cpp:266
804 #: ../../../src/MenuConfig.cpp:375
190805 msgid "Show FPS"
191806 msgstr "Seall FPS"
192807
193 #: ../../../src/GameStateConfigBase.cpp:270
808 #: ../../../src/MenuConfig.cpp:376
809 msgid "Hardware mouse cursor"
810 msgstr "Cùrsair luchaige bathair-chruaidh"
811
812 #: ../../../src/MenuConfig.cpp:377
194813 msgid "Colorblind Mode"
195814 msgstr "Modh dath-dhoille"
196815
197 #: ../../../src/GameStateConfigBase.cpp:274
198 msgid "Hardware mouse cursor"
199 msgstr "Cùrsair luchaige bathair-chruaidh"
200
201 #: ../../../src/GameStateConfigBase.cpp:278
816 #: ../../../src/MenuConfig.cpp:378
202817 msgid "Developer Mode"
203818 msgstr "Modh an luchd-leasachaidh"
204819
205 #: ../../../src/GameStateConfigBase.cpp:282
820 #: ../../../src/MenuConfig.cpp:379
206821 msgid "Subtitles"
207822 msgstr "Fo-thiotalan"
208823
209 #: ../../../src/GameStateConfigBase.cpp:286
210 msgid "Active Mods"
211 msgstr "Tuilleadain ghnìomhach"
212
213 #: ../../../src/GameStateConfigBase.cpp:295
214 msgid "Available Mods"
215 msgstr "Tuilleadain ri làimh"
216
217 #: ../../../src/GameStateConfigBase.cpp:314
218 msgid "<< Disable"
219 msgstr "<< Cuir à comas"
220
221 #: ../../../src/GameStateConfigBase.cpp:320
222 msgid "Enable >>"
223 msgstr "Cuir an comas >>"
224
225 #: ../../../src/GameStateConfigBase.cpp:873
226 msgid "Version:"
227 msgstr "Tionndadh:"
228
229 #: ../../../src/GameStateConfigBase.cpp:878
230 msgid "Game:"
231 msgstr "Geama:"
232
233 #: ../../../src/GameStateConfigBase.cpp:883
234 msgid "Engine version:"
235 msgstr "Tionndadh an einnsein:"
236
237 #: ../../../src/GameStateConfigBase.cpp:891
238 msgid "Requires mods:"
239 msgstr "Feum air tuilleadain:"
240
241 #: ../../../src/GameStateConfigDesktop.cpp:83
242 #: ../../../src/GameStateConfigDesktop.cpp:751
243 msgid "Clear"
244 msgstr "Falamhaich"
245
246 #: ../../../src/GameStateConfigDesktop.cpp:83
247 #: ../../../src/GameStateConfigDesktop.cpp:749
248 msgid "Assign:"
249 msgstr "Sònraich:"
250
251 #: ../../../src/GameStateConfigDesktop.cpp:128
252 msgid "Video"
253 msgstr "Video"
254
255 #: ../../../src/GameStateConfigDesktop.cpp:132
256 msgid "Input"
257 msgstr "Ion-chur"
258
259 #: ../../../src/GameStateConfigDesktop.cpp:133
260 msgid "Keybindings"
261 msgstr "Nasgadh iuchraichean"
262
263 #: ../../../src/GameStateConfigDesktop.cpp:188
824 #: ../../../src/MenuConfig.cpp:380
825 msgid "Loot tooltip visibility"
826 msgstr "Faicsinneachd gliocasan-sgrìn nam spùinn"
827
828 #: ../../../src/MenuConfig.cpp:381
829 msgid "Mini-map mode"
830 msgstr "Modh a’ mheanbh-mhapa"
831
832 #: ../../../src/MenuConfig.cpp:382
833 msgid "Always show stat bar labels"
834 msgstr "Seall leubailean bàr na stadastaireachd an-còmhnaidh"
835
836 #: ../../../src/MenuConfig.cpp:383
837 msgid "Allow stat bar auto-hiding"
838 msgstr "Ceadaich falach fèin-obrachail air bàr na stadastaireachd"
839
840 #: ../../../src/MenuConfig.cpp:384
841 msgid "Show combat text"
842 msgstr "Seall teacsa na còmhraige"
843
844 #: ../../../src/MenuConfig.cpp:385
845 msgid "Automatically equip items"
846 msgstr "Uidheamaich nithean gu fèin-obrachail"
847
848 #: ../../../src/MenuConfig.cpp:386
849 msgid "Show hidden entity markers"
850 msgstr "Seall comharraidhean nan nithean falaichte"
851
852 #: ../../../src/MenuConfig.cpp:387
853 msgid "Low health notification"
854 msgstr "Brath na droch-shlàinte"
855
856 #: ../../../src/MenuConfig.cpp:388
857 msgid "Low health threshold"
858 msgstr "Stairsneach na droch-shlàinte"
859
860 #: ../../../src/MenuConfig.cpp:389
861 msgid "Show item comparison tooltips"
862 msgstr ""
863
864 #: ../../../src/MenuConfig.cpp:392 ../../../src/MenuMovementType.cpp:94
865 #: ../../../src/MenuMovementType.cpp:131
866 msgid "Joystick"
867 msgstr "Joystick"
868
869 #: ../../../src/MenuConfig.cpp:393
870 msgid "Move hero using mouse"
871 msgstr "Gluais an gaisgeach leis an luchag"
872
873 #: ../../../src/MenuConfig.cpp:394
874 msgid "Mouse aim"
875 msgstr "Amas luchaige"
876
877 #: ../../../src/MenuConfig.cpp:395
878 msgid "Do not use mouse"
879 msgstr "Na cleachd an luchag"
880
881 #: ../../../src/MenuConfig.cpp:396
882 msgid "Swap mouse movement button"
883 msgstr "Suaip putan luchaige a’ ghluasaid"
884
885 #: ../../../src/MenuConfig.cpp:397
886 msgid "Attack with mouse movement"
887 msgstr "Thoir ionnsaigh le gluasad na luchaige"
888
889 #: ../../../src/MenuConfig.cpp:398
890 msgid "Joystick Deadzone"
891 msgstr "Marbh-sòn an joystick"
892
893 #: ../../../src/MenuConfig.cpp:408
894 #, c-format
895 msgid "Primary binding: %s"
896 msgstr "Prìomh-nasgadh: %s"
897
898 #: ../../../src/MenuConfig.cpp:409
899 #, c-format
900 msgid "Alternate binding: %s"
901 msgstr "Nasgadh eile: %s"
902
903 #: ../../../src/MenuConfig.cpp:410
904 #, c-format
905 msgid "Joystick binding: %s"
906 msgstr "Nasgadh joystick: %s"
907
908 #: ../../../src/MenuConfig.cpp:511
264909 msgid ""
265910 "Will try to store surfaces in video memory versus system memory. The effect "
266911 "this has on performance depends on the renderer."
269914 "t-siostaim. Tha a’ bhuaidh a th’ aige air an dèanadas a-rèir an inneil-"
270915 "reandaraidh."
271916
272 #: ../../../src/GameStateConfigDesktop.cpp:189
917 #: ../../../src/MenuConfig.cpp:512
273918 msgid ""
274919 "Prevents screen tearing. Disable if you experience \"stuttering\" in "
275920 "windowed mode or input lag."
277922 "Tha seo an aghaidh reubadh na sgrìn. cuir à comas e ma tha a modh uinneagach"
278923 " “stadach” no ma tha maille air an ion-chur."
279924
280 #: ../../../src/GameStateConfigDesktop.cpp:190
925 #: ../../../src/MenuConfig.cpp:513
281926 msgid ""
282927 "When enabled, this uses the screen DPI in addition to the window dimensions "
283928 "to scale the rendering resolution. Otherwise, only the window dimensions are"
287932 "na h-uinneige airson dùmhlachd-bhreacaidh an reandaraidh a sgèileadh. Mur "
288933 "eil, cha dèid ach meud na h-uinneige a chleachdadh."
289934
290 #: ../../../src/GameStateConfigDesktop.cpp:191
935 #: ../../../src/MenuConfig.cpp:514
291936 msgid ""
292937 "This enables parallax (non-tile) layers. Disabling this setting can improve "
293938 "performance in some cases."
294939 msgstr ""
295
296 #: ../../../src/GameStateConfigDesktop.cpp:192
297 msgid "Experimental"
298 msgstr "Deuchainneil"
299
300 #: ../../../src/GameStateConfigDesktop.cpp:193
301 msgid "For handheld devices"
302 msgstr "Airson innealan-làimhe"
303
304 #: ../../../src/GameStateConfigDesktop.cpp:211
305 msgid "Renderer"
306 msgstr "Inneal-reandaraidh"
307
308 #: ../../../src/GameStateConfigDesktop.cpp:227
309 msgid "Full Screen Mode"
310 msgstr "Modh làn-sgrìn"
311
312 #: ../../../src/GameStateConfigDesktop.cpp:231
313 msgid "Move hero using mouse"
314 msgstr "Gluais an gaisgeach le luchag"
315
316 #: ../../../src/GameStateConfigDesktop.cpp:235
317 msgid "Hardware surfaces"
318 msgstr "Uachdaran bathair-chruaidh"
319
320 #: ../../../src/GameStateConfigDesktop.cpp:239
321 msgid "V-Sync"
322 msgstr "Sioncronachadh-V"
323
324 #: ../../../src/GameStateConfigDesktop.cpp:243
325 msgid "Texture Filtering"
326 msgstr "Criathrag innich"
327
328 #: ../../../src/GameStateConfigDesktop.cpp:247
329 msgid "DPI scaling"
330 msgstr "Sgèileadh DPI"
331
332 #: ../../../src/GameStateConfigDesktop.cpp:251
333 msgid "Parallax Layers"
334 msgstr ""
335
336 #: ../../../src/GameStateConfigDesktop.cpp:255
337 msgid "Allow changing gamma"
338 msgstr "Faodar gamma atharrachadh"
339
340 #: ../../../src/GameStateConfigDesktop.cpp:259
341 msgid "Gamma"
342 msgstr "Gamma"
343
344 #: ../../../src/GameStateConfigDesktop.cpp:263
345 msgid "Use joystick"
346 msgstr "Cleachd joystick"
347
348 #: ../../../src/GameStateConfigDesktop.cpp:267
349 msgid "Joystick"
350 msgstr "Joystick"
351
352 #: ../../../src/GameStateConfigDesktop.cpp:283
353 msgid "Mouse aim"
354 msgstr "Amas luchaige"
355
356 #: ../../../src/GameStateConfigDesktop.cpp:287
357 msgid "Do not use mouse"
358 msgstr "Na cleachd an luchag"
359
360 #: ../../../src/GameStateConfigDesktop.cpp:291
361 msgid "Joystick Deadzone"
362 msgstr "Marbh-sòn an joystick"
363
364 #: ../../../src/GameState.cpp:37 ../../../src/GameState.cpp:58
365 msgid "Loading..."
366 msgstr "’Ga luchdadh…"
367
368 #: ../../../src/GameStateLoad.cpp:88 ../../../src/GameStateLoad.cpp:101
369 msgid "Delete Save"
370 msgstr "Sguab às"
371
372 #: ../../../src/GameStateLoad.cpp:88
373 msgid "Delete this save?"
374 msgstr "An sguab sinn an geama às?"
375
376 #: ../../../src/GameStateLoad.cpp:90
377 msgid "Exit to Title"
378 msgstr "Fàg gun tiotal"
379
380 #: ../../../src/GameStateLoad.cpp:93
381 msgid "New Game"
382 msgstr "Geama ùr"
383
384 #: ../../../src/GameStateLoad.cpp:97 ../../../src/GameStateLoad.cpp:600
385 msgid "Choose a Slot"
386 msgstr "Tagh slot"
387
388 #: ../../../src/GameStateLoad.cpp:573 ../../../src/GameStateLoad.cpp:594
389 msgid "Enable a story mod to continue"
390 msgstr "Cuir tuilleadan sgeulachd an comas gus leantainn air adhart"
391
392 #: ../../../src/GameStateLoad.cpp:589
393 msgid "Load Game"
394 msgstr "Luchdaich"
395
396 #: ../../../src/GameStateLoad.cpp:695
397 msgid "Entering game world..."
398 msgstr "A’ dol a-steach do shaoghal a’ gheama…"
399
400 #: ../../../src/GameStateLoad.cpp:698
401 msgid "Loading saved game..."
402 msgstr "A’ luchdadh geama air a shàbhaladh…"
403
404 #: ../../../src/GameStateLoad.cpp:731
405 msgid "Invalid save"
406 msgstr "Geama air a shàbhaladh mì-dhligheach"
407
408 #: ../../../src/GameStateLoad.cpp:755 ../../../src/ItemManager.cpp:747
409 #: ../../../src/MenuPowers.cpp:778 ../../../src/MenuPowers.cpp:1144
410 #: ../../../src/MenuPowers.cpp:1542
411 #, c-format
412 msgid "Level %d"
413 msgstr "Leibheil %d"
414
415 #: ../../../src/GameStateNew.cpp:68
416 msgid "Create"
417 msgstr "Cruthaich"
418
419 #: ../../../src/GameStateNew.cpp:76
420 msgid "Randomize"
421 msgstr "Cuir air thuaiream"
422
423 #: ../../../src/GameStateNew.cpp:92
424 msgid "Choose a Portrait"
425 msgstr "Tagh dealbh"
426
427 #: ../../../src/GameStateNew.cpp:96
428 msgid "Choose a Name"
429 msgstr "Tagh ainm"
430
431 #: ../../../src/GameStateNew.cpp:100
432 msgid "Permadeath?"
433 msgstr "Bàs maireannach?"
434
435 #: ../../../src/GameStateNew.cpp:104
436 msgid "Choose a Class"
437 msgstr "Tagh clas"
438
439 #: ../../../src/GameStateTitle.cpp:108
440 msgid "Play Game"
441 msgstr "Cluich geama"
442
443 #: ../../../src/GameStateTitle.cpp:111
444 msgid "Enable a core mod to continue"
445 msgstr "Cuir bun-thuilleadan an comas gus leantainn air adhart"
446
447 #: ../../../src/GameStateTitle.cpp:115
448 msgid "Configuration"
449 msgstr "Rèiteachadh"
450
451 #: ../../../src/GameStateTitle.cpp:118
452 msgid "Credits"
453 msgstr "Urram"
454
455 #: ../../../src/GameStateTitle.cpp:121
456 msgid "Exit Game"
457 msgstr "Fàg an geama"
458
459 #: ../../../src/InputState.cpp:402
460 msgid "Accept"
461 msgstr "Gabh ris"
462
463 #: ../../../src/InputState.cpp:403 ../../../src/SDLInputState.cpp:607
464 msgid "Up"
465 msgstr "Suas"
466
467 #: ../../../src/InputState.cpp:404 ../../../src/SDLInputState.cpp:585
468 msgid "Down"
469 msgstr "Sìos"
470
471 #: ../../../src/InputState.cpp:405 ../../../src/SDLInputState.cpp:592
472 msgid "Left"
473 msgstr "Gu clì"
474
475 #: ../../../src/InputState.cpp:406 ../../../src/SDLInputState.cpp:602
476 msgid "Right"
477 msgstr "Gu deas"
478
479 #: ../../../src/InputState.cpp:407
480 msgid "Bar1"
481 msgstr "Bàr 1"
482
483 #: ../../../src/InputState.cpp:408
484 msgid "Bar2"
485 msgstr "Bàr 2"
486
487 #: ../../../src/InputState.cpp:409
488 msgid "Bar3"
489 msgstr "Bàr 3"
490
491 #: ../../../src/InputState.cpp:410
492 msgid "Bar4"
493 msgstr "Bàr 4"
494
495 #: ../../../src/InputState.cpp:411
496 msgid "Bar5"
497 msgstr "Bàr 5"
498
499 #: ../../../src/InputState.cpp:412
500 msgid "Bar6"
501 msgstr "Bàr 6"
502
503 #: ../../../src/InputState.cpp:413
504 msgid "Bar7"
505 msgstr "Bàr 7"
506
507 #: ../../../src/InputState.cpp:414
508 msgid "Bar8"
509 msgstr "Bàr 8"
510
511 #: ../../../src/InputState.cpp:415
512 msgid "Bar9"
513 msgstr "Bàr 9"
514
515 #: ../../../src/InputState.cpp:416
516 msgid "Bar0"
517 msgstr "Bàr 0"
518
519 #: ../../../src/InputState.cpp:417 ../../../src/MenuActionBar.cpp:83
520 #: ../../../src/MenuCharacter.cpp:54
521 msgid "Character"
522 msgstr "Pearsa"
523
524 #: ../../../src/InputState.cpp:418 ../../../src/MenuActionBar.cpp:84
525 #: ../../../src/MenuInventory.cpp:137 ../../../src/MenuVendor.cpp:57
526 msgid "Inventory"
527 msgstr "Tasgadh"
528
529 #: ../../../src/InputState.cpp:419 ../../../src/MenuActionBar.cpp:85
530 #: ../../../src/MenuPowers.cpp:168
531 msgid "Powers"
532 msgstr "Cumhachdan"
533
534 #: ../../../src/InputState.cpp:420 ../../../src/MenuActionBar.cpp:86
535 #: ../../../src/MenuLog.cpp:72
536 msgid "Log"
537 msgstr "Leabhar-latha"
538
539 #: ../../../src/InputState.cpp:421
540 msgid "Main1"
541 msgstr "Prìomh-ghnìomh"
542
543 #: ../../../src/InputState.cpp:422
544 msgid "Main2"
545 msgstr "Gnìomh dàrnach"
546
547 #: ../../../src/InputState.cpp:423
548 msgid "Ctrl"
549 msgstr "Ctrl"
550
551 #: ../../../src/InputState.cpp:424
552 msgid "Shift"
553 msgstr "Shift"
554
555 #: ../../../src/InputState.cpp:425
556 msgid "Alt"
557 msgstr "Alt"
558
559 #: ../../../src/InputState.cpp:426 ../../../src/SDLInputState.cpp:584
560 msgid "Delete"
561 msgstr "Delete"
562
563 #: ../../../src/InputState.cpp:427
564 msgid "ActionBar Accept"
565 msgstr "Bàr – Gabh ris"
566
567 #: ../../../src/InputState.cpp:428
568 msgid "ActionBar Left"
569 msgstr "Bàr – Gu clì"
570
571 #: ../../../src/InputState.cpp:429
572 msgid "ActionBar Right"
573 msgstr "Bàr – Gu deas"
574
575 #: ../../../src/InputState.cpp:430
576 msgid "ActionBar Use"
577 msgstr "Bàr – Cleachd"
578
579 #: ../../../src/InputState.cpp:431
580 msgid "Developer Menu"
581 msgstr "Clàr-taice an luchd-leasachaidh"
582
583 #: ../../../src/InputState.cpp:433
584 msgid "Left Mouse"
585 msgstr "Clì na luchaige"
586
587 #: ../../../src/InputState.cpp:434
588 msgid "Middle Mouse"
589 msgstr "Meadhanach na luchaige"
590
591 #: ../../../src/InputState.cpp:435
592 msgid "Right Mouse"
593 msgstr "Deas na luchaige"
594
595 #: ../../../src/InputState.cpp:436
596 msgid "Wheel Up"
597 msgstr "Cuibhle suas"
598
599 #: ../../../src/InputState.cpp:437
600 msgid "Wheel Down"
601 msgstr "Cuibhle sìos"
602
603 #: ../../../src/InputState.cpp:438
604 msgid "Mouse X1"
605 msgstr "X1 na luchaige"
606
607 #: ../../../src/InputState.cpp:439
608 msgid "Mouse X2"
609 msgstr "X2 na luchaige"
610
611 #: ../../../src/ItemManager.cpp:450 ../../../src/ItemManager.cpp:453
612 msgid "Unknown Item"
613 msgstr "Nì nach aithne dhuinn"
614
615 #: ../../../src/ItemManager.cpp:648 ../../../src/MenuPowers.cpp:887
616 #, c-format
617 msgid "%d%% Speed"
618 msgstr "Luaths de %d%%"
619
620 #: ../../../src/ItemManager.cpp:652 ../../../src/MenuPowers.cpp:890
621 #, c-format
622 msgid "%d%% Attack Speed"
623 msgstr "Luaths ionnsaighe de %d%%"
624
625 #: ../../../src/ItemManager.cpp:674 ../../../src/MenuCharacter.cpp:354
626 #: ../../../src/MenuPowers.cpp:833
627 #, c-format
628 msgid "Resistance (%s)"
629 msgstr "Comas-seasaimh (%s)"
630
631 #: ../../../src/ItemManager.cpp:684
632 #, c-format
633 msgid "Requires %s"
634 msgstr "Feumach air %s"
635
636 #: ../../../src/ItemManager.cpp:733
637 msgid "Quest Item"
638 msgstr "Nì cinn-thurais"
639
640 #: ../../../src/ItemManager.cpp:760
641 #, c-format
642 msgid "Quality: %s"
643 msgstr "Càileachd: %s"
644
645 #: ../../../src/ItemManager.cpp:785
646 #, c-format
647 msgid "Absorb: %d-%d"
648 msgstr "Ceapadh: %d–%d"
649
650 #: ../../../src/ItemManager.cpp:787
651 #, c-format
652 msgid "Absorb: %d"
653 msgstr "Ceapadh: %d"
654
655 #: ../../../src/ItemManager.cpp:827 ../../../src/MenuPowers.cpp:1131
656 #: ../../../src/MenuPowers.cpp:1134
657 #, c-format
658 msgid "Requires Level %d"
659 msgstr "Feum air leibheil %d"
660
661 #: ../../../src/ItemManager.cpp:838 ../../../src/MenuPowers.cpp:1123
662 #: ../../../src/MenuPowers.cpp:1125
663 #, c-format
664 msgid "Requires %s %d"
665 msgstr "Feum air: %s %d"
666
667 #: ../../../src/ItemManager.cpp:849
668 #, c-format
669 msgid "Requires Class: %s"
670 msgstr "Feum air a’ chlas: %s"
671
672 #: ../../../src/ItemManager.cpp:864 ../../../src/ItemManager.cpp:876
673 #, c-format
674 msgid "Buy Price: %d %s"
675 msgstr "Prìs ceannaich: %d %s"
676
677 #: ../../../src/ItemManager.cpp:866 ../../../src/ItemManager.cpp:878
678 #, c-format
679 msgid "Buy Price: %d %s each"
680 msgstr "Prìs ceannaich: %d %s an urra"
681
682 #: ../../../src/ItemManager.cpp:886
683 #, c-format
684 msgid "Sell Price: %d %s"
685 msgstr "Prìs reic: %d %s"
686
687 #: ../../../src/ItemManager.cpp:888
688 #, c-format
689 msgid "Sell Price: %d %s each"
690 msgstr "Prìs reic: %d %s an urra"
691
692 #: ../../../src/ItemManager.cpp:897
693 msgid "Set:"
694 msgstr "Seata:"
695
696 #: ../../../src/ItemManager.cpp:904
697 #, c-format
698 msgid "%d items:"
699 msgstr "%d nithean:"
700
701 #: ../../../src/ItemManager.cpp:917
702 #, c-format
703 msgid "Press [%s] to use"
704 msgstr "Brùth air [%s] gus a chleachdadh"
705
706 #: ../../../src/ItemManager.cpp:920
707 #, c-format
708 msgid "Press [%s] to read"
709 msgstr "Brùth air [%s] gus a leughadh"
710
711 #: ../../../src/MenuActionBar.cpp:87
712 msgid "Loot tooltip visibility"
713 msgstr "Faicsinneachd gliocasan-sgrìn nam spùinn"
714
715 #: ../../../src/MenuActionBar.cpp:88
716 msgid "Mini-map mode"
717 msgstr "Modh a’ mheanbh-mhapa"
718
719 #: ../../../src/MenuActionBar.cpp:89
720 msgid "Always show stat bar labels"
721 msgstr "Seall leubailean bàr na stadastaireachd an-còmhnaidh"
722
723 #: ../../../src/MenuActionBar.cpp:90
724 msgid "Show combat text"
725 msgstr "Seall teacsa na còmhraige"
726
727 #: ../../../src/MenuActionBar.cpp:254 ../../../src/MenuActionBar.cpp:261
728 #: ../../../src/MenuActionBar.cpp:264 ../../../src/MenuActionBar.cpp:271
729 #, c-format
730 msgid "Hotkey: %s"
731 msgstr "Grad-iuchair: %s"
732
733 #: ../../../src/MenuActionBar.cpp:474
734 #, c-format
735 msgid "Default. Temporarily show all loot tooltips with '%s'."
736 msgstr "Tùsail. Seall a h-uile gliocas-sgrìn nam spùinn rè seal le “%s”."
737
738 #: ../../../src/MenuActionBar.cpp:476
739 #, c-format
740 msgid "Show All. Temporarily hide all loot tooltips with '%s'."
741 msgstr ""
742 "Seall na h-uile. Falaich a h-uile gliocas-sgrìn nam spùinn rè seal le “%s”."
743
744 #: ../../../src/MenuActionBar.cpp:478
745 #, c-format
746 msgid "Hide All. Temporarily show all loot tooltips with '%s'."
747 msgstr ""
748 "Falaich na h-uile. Falaich a h-uile gliocas-sgrìn nam spùinn rè seal le "
749 "“%s”."
750
751 #: ../../../src/MenuActionBar.cpp:482
752 msgid "Visible"
753 msgstr "Ri fhaicinn"
754
755 #: ../../../src/MenuActionBar.cpp:484
756 msgid "Visible (2x zoom)"
757 msgstr ""
758
759 #: ../../../src/MenuActionBar.cpp:486
760 msgid "Hidden"
761 msgstr "Falaichte"
762
763 #: ../../../src/MenuActionBar.cpp:490 ../../../src/MenuActionBar.cpp:496
764 msgid "Enabled"
765 msgstr "An comas"
766
767 #: ../../../src/MenuActionBar.cpp:492 ../../../src/MenuActionBar.cpp:498
768 msgid "Disabled"
769 msgstr "À comas"
770
771 #: ../../../src/MenuActionBar.cpp:657
772 msgid "Not enough MP."
773 msgstr "Chan fhoghainn na PG."
774
775 #: ../../../src/MenuActiveEffects.cpp:124
776 #, c-format
777 msgid "x%d"
778 msgstr "x%d"
779
780 #: ../../../src/MenuActiveEffects.cpp:219
781 msgid "Remaining:"
782 msgstr "Air fhàgail:"
783
784 #: ../../../src/MenuActiveEffects.cpp:225
785 #, c-format
786 msgid "x%d stacks"
787 msgstr "x%d cruach(an)"
788
789 #: ../../../src/MenuCharacter.cpp:73 ../../../src/MenuCharacter.cpp:78
790 msgid "Name"
791 msgstr "Ainm"
792
793 #: ../../../src/MenuCharacter.cpp:74 ../../../src/MenuCharacter.cpp:79
794 msgid "Level"
795 msgstr "Leibheil"
796
797 #: ../../../src/MenuCharacter.cpp:310
798 #, c-format
799 msgid "%d unspent stat point"
800 msgstr "%d phuing-pearsa nach deach a chleachdadh"
801
802 #: ../../../src/MenuCharacter.cpp:313
803 #, c-format
804 msgid "%d unspent stat points"
805 msgstr "%d puing(ean)-pearsa nach deach a chleachdadh"
806
807 #: ../../../src/MenuCharacter.cpp:355
808 #, c-format
809 msgid "Reduces the damage taken from \"%s\" elemental attacks."
810 msgstr ""
811 "Ìslichidh seo an dochann a dh’fhulaingeas tu o ionnsaighean dùileach “%s”"
812
813 #: ../../../src/MenuCharacter.cpp:365 ../../../src/MenuManager.cpp:283
814 #, c-format
815 msgid "XP: %d"
816 msgstr "Puingean-eòlais: %d"
817
818 #: ../../../src/MenuCharacter.cpp:367
819 #, c-format
820 msgid "Next: %d"
821 msgstr "An ath-fhear: %d"
822
823 #: ../../../src/MenuCharacter.cpp:373
824 #, c-format
825 msgid "base (%d), bonus (%d)"
826 msgstr "bunait (%d), duais (%d)"
827
828 #: ../../../src/MenuCharacter.cpp:381 ../../../src/MenuCharacter.cpp:395
829 msgid "Related stats:"
830 msgstr "Stadastaireachd cho-cheangailte:"
831
832 #: ../../../src/MenuCharacter.cpp:421 ../../../src/MenuCharacter.cpp:445
833 #, c-format
834 msgid "Each level grants %d."
835 msgstr "Bheir gach leibheil %d dhut."
836
837 #: ../../../src/MenuCharacter.cpp:425 ../../../src/MenuCharacter.cpp:449
838 #, c-format
839 msgid "Each point of %s grants %d."
840 msgstr "Bheir gach puing dhe %s %d dhut."
841
842 #: ../../../src/MenuDevConsole.cpp:63
940 "Cuiridh seo breathan paraileige (nach eil ’nan leacagan) an comas. "
941 "Dh’fhaoidte gum faigh thu barrachd dèanadais ma chuireas tu seo à comas."
942
943 #: ../../../src/MenuConfig.cpp:515
944 msgid ""
945 "Enables the below setting that controls the screen gamma level. The behavior"
946 " of the gamma setting can vary between platforms."
947 msgstr ""
948 "Cuiridh seo an comas an roghainn gu h-ìosal air leibheil gamma na sgrìn. "
949 "Dh’fhaoidte gum bi giùlan eadar-dhealaichte na roghainn gamma air ùrlaran "
950 "eadar-dhealaichte."
951
952 #: ../../../src/MenuConfig.cpp:516
953 msgid ""
954 "Provides additional text for information that is primarily conveyed through "
955 "color."
956 msgstr ""
957 "Solairidh seo teacsa a bharrachd airson fiosrachadh a thèid a shealltainn le"
958 " dath gu h-àraidh."
959
960 #: ../../../src/MenuConfig.cpp:517
961 msgid ""
962 "Some mods will automatically hide the stat bars when they are inactive. "
963 "Disabling this option will keep them displayed at all times."
964 msgstr ""
965 "Falaichidh cuid a thuilleadain bàraichean na stadastaireachd nuair a bhios "
966 "iad à comas. Ma chuireas tu an roghainn seo à comas, thèid an sealltainn an-"
967 "còmhnaidh."
968
969 #: ../../../src/MenuConfig.cpp:518
970 msgid ""
971 "When enabled, empty equipment slots will be filled with applicable items "
972 "when they are obtained."
973 msgstr ""
974 "Nuair a bhios seo an comas, thèid slotaichean uidheamachd falamh a lìonadh "
975 "le nithean iomchaidh nuair a gheibh thu iad."
976
977 #: ../../../src/MenuConfig.cpp:519
978 msgid ""
979 "Shows a marker above enemies, allies, and the player when they are obscured "
980 "by tall objects."
981 msgstr ""
982 "Seallaidh seo comharra os cionn nan nàimhdean, nan caidreabhach ’s a’ "
983 "chluicheadair nuair a thèid am falach le nithean mòra."
984
985 #: ../../../src/MenuConfig.cpp:520
986 msgid ""
987 "When enabled, tooltips for equipped items of the same type are shown next to"
988 " standard item tooltips."
989 msgstr ""
990
991 #: ../../../src/MenuConfig.cpp:521
992 msgid ""
993 "This allows the game to be controlled entirely with the keyboard (or "
994 "joystick)."
995 msgstr ""
996 "Nuair a bhiod seo air, ’s urrainn dhut an geama a stiùireadh leis a’ mheur-"
997 "chlàr (no joystick) a-mhàin."
998
999 #: ../../../src/MenuConfig.cpp:522
1000 msgid ""
1001 "When 'Move hero using mouse' is enabled, this setting controls if 'Main1' or"
1002 " 'Main2' is used to move the hero. If enabled, 'Main2' will move the hero "
1003 "instead of 'Main1'."
1004 msgstr ""
1005 "Nuair a bhios “Gluais an gaisgeach leis an luchag” an comas, stiùirichidh an"
1006 " roghainn seo co-dhiù an dèid “Prìomh-ghnìomh” no “Gnìomh dàrnach” a "
1007 "chleachdadh airson an gaisgeach a ghluasad. Ma bhios e an comas, gluaisidh "
1008 "“Gnìomh dàrnach” seach “Prìomh-ghnìomh” an gaisgeach."
1009
1010 #: ../../../src/MenuConfig.cpp:523
1011 msgid ""
1012 "When 'Move hero using mouse' is enabled, this setting controls if the Power "
1013 "assigned to the movement button can be used by targeting an enemy. If this "
1014 "setting is disabled, it is required to use 'Shift' to access the Power "
1015 "assigned to the movement button."
1016 msgstr ""
1017 "Nuair a bhios “Gluais an gaisgeach leis an luchag” an comas, stiùirichidh an"
1018 " roghainn seo ma ghabhas a’ chumhachd a chaidh iomruineadh do phutan a’ "
1019 "ghluasaid a chleachdadh le amas air nàmhaid. Ma tha an roghainn seo à comas,"
1020 " feumaidh tu “Shift” a chleachdadh ach an cleachd thu a’ chumhachd a chaidh "
1021 "iomruineadh do phutan a’ ghluasaid."
1022
1023 #: ../../../src/MenuConfig.cpp:524
1024 msgid ""
1025 "The player's attacks will be aimed in the direction of the mouse cursor when"
1026 " this is enabled."
1027 msgstr ""
1028 "Thèid ionnsaighean a’ chluicheadair a dh’amas an comhair cùrsair na luchaige"
1029 " nuair a bhios seo an comas."
1030
1031 #: ../../../src/MenuConfig.cpp:575
1032 msgid "Active Mods"
1033 msgstr "Tuilleadain ghnìomhach"
1034
1035 #: ../../../src/MenuConfig.cpp:584
1036 msgid "Available Mods"
1037 msgstr "Tuilleadain ri làimh"
1038
1039 #: ../../../src/MenuConfig.cpp:603
1040 msgid "<< Disable"
1041 msgstr "<< Cuir à comas"
1042
1043 #: ../../../src/MenuConfig.cpp:609
1044 msgid "Enable >>"
1045 msgstr "Cuir an comas >>"
1046
1047 #: ../../../src/MenuConfig.cpp:1444
1048 msgid "Version:"
1049 msgstr "Tionndadh:"
1050
1051 #: ../../../src/MenuConfig.cpp:1449
1052 msgid "Game:"
1053 msgstr "Geama:"
1054
1055 #: ../../../src/MenuConfig.cpp:1454
1056 msgid "Engine version:"
1057 msgstr "Tionndadh an einnsein:"
1058
1059 #: ../../../src/MenuConfig.cpp:1462
1060 msgid "Requires mods:"
1061 msgstr "Feum air tuilleadain:"
1062
1063 #: ../../../src/MenuConfig.cpp:1570 ../../../src/SDLInputState.cpp:748
1064 msgid "(none)"
1065 msgstr "(chan eil gin)"
1066
1067 #: ../../../src/MenuConfig.cpp:1587 ../../../src/MenuGameOver.cpp:73
1068 msgid "Save & Exit"
1069 msgstr "Sàbhail is fàg"
1070
1071 #: ../../../src/MenuDevConsole.cpp:65
8431072 msgid "Execute"
8441073 msgstr "Gnìomhaich"
8451074
846 #: ../../../src/MenuDevConsole.cpp:101 ../../../src/MenuDevConsole.cpp:151
1075 #: ../../../src/MenuDevConsole.cpp:103 ../../../src/MenuDevConsole.cpp:153
8471076 msgid "Developer Console"
8481077 msgstr "Modh an luchd-leasachaidh"
8491078
850 #: ../../../src/MenuDevConsole.cpp:141
1079 #: ../../../src/MenuDevConsole.cpp:143
8511080 #, c-format
8521081 msgid "Use '%s' to inspect with the cursor."
8531082 msgstr "Cleachd “%s” gus a sgrùdadh leis a’ chùrsair."
8541083
855 #: ../../../src/MenuDevConsole.cpp:146
1084 #: ../../../src/MenuDevConsole.cpp:148
8561085 msgid "Arguments with spaces should be enclosed with double quotes. Example:"
8571086 msgstr ""
8581087 "Bu chòir dhut comharran-labhairt dùbailte a chur timcheall air argamaidean "
8591088 "sa bheil geal-spàs. Mar eisimpleir:"
8601089
861 #: ../../../src/MenuDevConsole.cpp:147
1090 #: ../../../src/MenuDevConsole.cpp:149
8621091 msgid "Type 'help' to get a list of commands."
8631092 msgstr "Sgrìobh “help” gus liosta de na h-àitheantan fhaighinn."
8641093
865 #: ../../../src/MenuDevConsole.cpp:209 ../../../src/MenuDevConsole.cpp:213
1094 #: ../../../src/MenuDevConsole.cpp:211 ../../../src/MenuDevConsole.cpp:215
8661095 msgid "px"
8671096 msgstr "px"
8681097
869 #: ../../../src/MenuDevConsole.cpp:224
1098 #: ../../../src/MenuDevConsole.cpp:226
8701099 msgid "Distance"
8711100 msgstr "Astar"
8721101
873 #: ../../../src/MenuDevConsole.cpp:239 ../../../src/MenuDevConsole.cpp:286
1102 #: ../../../src/MenuDevConsole.cpp:241 ../../../src/MenuDevConsole.cpp:289
1103 #: ../../../src/MenuDevConsole.cpp:303
8741104 msgid "Entity"
8751105 msgstr "Nì"
8761106
877 #: ../../../src/MenuDevConsole.cpp:261 ../../../src/MenuDevConsole.cpp:268
1107 #: ../../../src/MenuDevConsole.cpp:263 ../../../src/MenuDevConsole.cpp:270
8781108 msgid "none"
8791109 msgstr "chan eil gin"
8801110
881 #: ../../../src/MenuDevConsole.cpp:262 ../../../src/MenuDevConsole.cpp:264
1111 #: ../../../src/MenuDevConsole.cpp:264 ../../../src/MenuDevConsole.cpp:266
8821112 msgid "wall"
8831113 msgstr "balla"
8841114
885 #: ../../../src/MenuDevConsole.cpp:263 ../../../src/MenuDevConsole.cpp:265
1115 #: ../../../src/MenuDevConsole.cpp:265 ../../../src/MenuDevConsole.cpp:267
8861116 msgid "short wall / pit"
8871117 msgstr "balla goirid / sloc"
8881118
889 #: ../../../src/MenuDevConsole.cpp:266
1119 #: ../../../src/MenuDevConsole.cpp:268
8901120 msgid "entity"
8911121 msgstr "nì"
8921122
893 #: ../../../src/MenuDevConsole.cpp:267
1123 #: ../../../src/MenuDevConsole.cpp:269
8941124 msgid "entity, ally"
8951125 msgstr "nì, caidreabhach"
8961126
897 #: ../../../src/MenuDevConsole.cpp:274
1127 #: ../../../src/MenuDevConsole.cpp:276
8981128 msgid "Tile"
8991129 msgstr "Leacag"
9001130
901 #: ../../../src/MenuDevConsole.cpp:360
1131 #: ../../../src/MenuDevConsole.cpp:377
9021132 msgid "adds a power to the action bar"
9031133 msgstr "cuiridh seo cumhachd ri bàr nan gnìomh"
9041134
905 #: ../../../src/MenuDevConsole.cpp:361
1135 #: ../../../src/MenuDevConsole.cpp:378
9061136 msgid "turns on/off the display of the FPS counter"
907 msgstr ""
908
909 #: ../../../src/MenuDevConsole.cpp:362
1137 msgstr "seallaidh/falaichidh seo cunntas nan FPS"
1138
1139 #: ../../../src/MenuDevConsole.cpp:379
9101140 msgid "turns on/off all of the HUD elements"
9111141 msgstr "cuiridh seo a h-uile nì a’ HUD air no dheth"
9121142
913 #: ../../../src/MenuDevConsole.cpp:363
1143 #: ../../../src/MenuDevConsole.cpp:380
9141144 msgid "turns on/off the developer hud"
9151145 msgstr "cuiridh seo HUD an luchd-leasachaidh air no dheth"
9161146
917 #: ../../../src/MenuDevConsole.cpp:364
1147 #: ../../../src/MenuDevConsole.cpp:381
9181148 msgid ""
9191149 "Prints a list of powers that match a search term. No search term will list "
9201150 "all items"
9221152 "Seallaidh seo liosta nan cumhachdan a fhreagras ris an fhacal-luirg. Mur eil"
9231153 " facal-luirg ann, thèid gach nì a shealltainn"
9241154
925 #: ../../../src/MenuDevConsole.cpp:365
1155 #: ../../../src/MenuDevConsole.cpp:382
9261156 msgid "Prints out all the map filenames located in the \"maps/\" directory."
9271157 msgstr ""
9281158 "Seallaidh seo ainmean faidhle nam mapaichean uile a tha sa phasgan “maps/”."
9291159
930 #: ../../../src/MenuDevConsole.cpp:366
1160 #: ../../../src/MenuDevConsole.cpp:383
9311161 msgid ""
9321162 "Prints out the active campaign statuses that match a search term. No search "
9331163 "term will list all active statuses"
9351165 "Seallaidh seo staidean gnìomhach nan iomairtean a fhreagras ris an fhacal-"
9361166 "luirg. Mur eil facal-luirg ann, thèid gach staid ghnìomhach a shealltainn"
9371167
938 #: ../../../src/MenuDevConsole.cpp:367
1168 #: ../../../src/MenuDevConsole.cpp:384
9391169 msgid ""
9401170 "Prints a list of items that match a search term. No search term will list "
9411171 "all items"
9431173 "Seallaidh seo liosta nan nithean a fhreagras ris an fhacal-luirg. Mur eil "
9441174 "facal-luirg ann, thèid gach nì a shealltainn"
9451175
946 #: ../../../src/MenuDevConsole.cpp:368
1176 #: ../../../src/MenuDevConsole.cpp:385
9471177 msgid ""
9481178 "parses a series of event components and executes them as a single event"
9491179 msgstr ""
9501180 "parsaidh seo sreath dhe cho-phàirtean thachartasan agus ruithidh e ann an "
9511181 "aon tachartas iad"
9521182
953 #: ../../../src/MenuDevConsole.cpp:369
1183 #: ../../../src/MenuDevConsole.cpp:386
9541184 msgid "clears the command history"
9551185 msgstr "falamhaichidh seo eachdraidh nan àitheantan"
9561186
957 #: ../../../src/MenuDevConsole.cpp:370
1187 #: ../../../src/MenuDevConsole.cpp:387
9581188 msgid "displays this text"
9591189 msgstr "seallaidh seo an teacsa seo"
9601190
961 #: ../../../src/MenuDevConsole.cpp:377
1191 #: ../../../src/MenuDevConsole.cpp:394
9621192 msgid "Toggled the developer hud"
9631193 msgstr "Chaidh HUD an luchd-leasachaidh a thoglachadh"
9641194
965 #: ../../../src/MenuDevConsole.cpp:381
1195 #: ../../../src/MenuDevConsole.cpp:398
9661196 msgid "Toggled the hud"
9671197 msgstr "Chaidh an HUD a thoglachadh"
9681198
969 #: ../../../src/MenuDevConsole.cpp:385
1199 #: ../../../src/MenuDevConsole.cpp:402
9701200 msgid "Toggled the FPS counter"
971 msgstr ""
972
973 #: ../../../src/MenuDevConsole.cpp:534
1201 msgstr "Chaidh cunntar nan FPS a thoglachadh"
1202
1203 #: ../../../src/MenuDevConsole.cpp:552
9741204 msgid "ERROR: Incorrect number of arguments"
9751205 msgstr "MEARACHD: Chan eil argamaidean gu leòr ann"
9761206
977 #: ../../../src/MenuDevConsole.cpp:536 ../../../src/MenuDevConsole.cpp:564
1207 #: ../../../src/MenuDevConsole.cpp:554 ../../../src/MenuDevConsole.cpp:582
9781208 msgid "HINT:"
9791209 msgstr "OIDHEAM:"
9801210
981 #: ../../../src/MenuDevConsole.cpp:536
1211 #: ../../../src/MenuDevConsole.cpp:554
9821212 msgid "<id>"
9831213 msgstr "<id>"
9841214
985 #: ../../../src/MenuDevConsole.cpp:552
1215 #: ../../../src/MenuDevConsole.cpp:570
9861216 #, c-format
9871217 msgid "ERROR: '%s' is not a valid event key"
9881218 msgstr "MEARACHD: Chan eil “%s” ’na h-iuchair tachartais dhligheach"
9891219
990 #: ../../../src/MenuDevConsole.cpp:562
1220 #: ../../../src/MenuDevConsole.cpp:580
9911221 msgid "ERROR: Too few arguments"
9921222 msgstr "MEARACHD: Chan eil argamaidean gu leòr ann"
9931223
994 #: ../../../src/MenuDevConsole.cpp:564
1224 #: ../../../src/MenuDevConsole.cpp:582
9951225 msgid "<key>=<val> <key>=<val> ..."
9961226 msgstr "<key>=<val> <key>=<val> …"
9971227
998 #: ../../../src/MenuDevConsole.cpp:569
1228 #: ../../../src/MenuDevConsole.cpp:587
9991229 msgid "ERROR: Unknown command"
10001230 msgstr "MEARACHD: Àithne nach aithne dhuinn"
10011231
1002 #: ../../../src/MenuDevConsole.cpp:571
1232 #: ../../../src/MenuDevConsole.cpp:589
10031233 msgid "HINT: Type help"
10041234 msgstr "OIDHEAM: Sgrìobh “help”"
10051235
1006 #: ../../../src/MenuEnemy.cpp:138
1236 #: ../../../src/MenuEnemy.cpp:162
10071237 #, c-format
10081238 msgid "%s level %d"
10091239 msgstr "%s leibheil %d"
10101240
1011 #: ../../../src/MenuEnemy.cpp:162
1241 #: ../../../src/MenuEnemy.cpp:186
10121242 msgid "Dead"
10131243 msgstr "Marbh"
10141244
1015 #: ../../../src/MenuEnemy.cpp:164
1245 #: ../../../src/MenuEnemy.cpp:188
10161246 msgid "Destroyed"
10171247 msgstr "Air a mhilleadh"
10181248
1019 #: ../../../src/MenuExit.cpp:85 ../../../src/MenuExit.cpp:139
1020 msgid "Paused"
1021 msgstr "’Na stad"
1022
1023 #: ../../../src/MenuExit.cpp:91
1024 msgid "Save & Exit"
1025 msgstr "Sàbhail is fàg"
1026
1027 #: ../../../src/MenuExit.cpp:92
1028 msgid "Exit"
1029 msgstr "Fàg an geama"
1030
1031 #: ../../../src/MenuExit.cpp:96
1032 msgid "Continue"
1033 msgstr "Lean air adhart"
1034
1035 #: ../../../src/MenuInventory.cpp:73
1036 msgid "Automatically equip items"
1037 msgstr "Uidheamaich nithean gu fèin-obrachail"
1038
1039 #: ../../../src/MenuInventory.cpp:188
1249 #: ../../../src/MenuGameOver.cpp:69
1250 msgid "Game Over"
1251 msgstr ""
1252
1253 #: ../../../src/MenuInventory.cpp:178
10401254 #, c-format
10411255 msgid "Lost %d%% of %s."
10421256 msgstr "Chaill thu %d%% dhe %s."
10431257
1044 #: ../../../src/MenuInventory.cpp:195
1258 #: ../../../src/MenuInventory.cpp:185
10451259 #, c-format
10461260 msgid "Lost %d%% of total XP."
10471261 msgstr "Chaill thu %d%% dhe na puingean-eòlais iomlan."
10481262
1049 #: ../../../src/MenuInventory.cpp:200
1263 #: ../../../src/MenuInventory.cpp:190
10501264 #, c-format
10511265 msgid "Lost %d%% of current level XP."
10521266 msgstr "Chaill thu %d%% dhe na puingean-eòlais airson an leibheil seo."
10531267
1054 #: ../../../src/MenuInventory.cpp:226
1268 #: ../../../src/MenuInventory.cpp:216
10551269 #, c-format
10561270 msgid "Lost %s."
10571271 msgstr "Chaill thu %s."
10581272
1059 #: ../../../src/MenuInventory.cpp:274 ../../../src/MenuStash.cpp:146
1273 #: ../../../src/MenuInventory.cpp:258 ../../../src/MenuStash.cpp:276
10601274 #, c-format
10611275 msgid "%d %s"
10621276 msgstr "%d %s"
10631277
1064 #: ../../../src/MenuInventory.cpp:317
1278 #: ../../../src/MenuInventory.cpp:301
10651279 msgid "Pick up item(s):"
10661280 msgstr "Tog nì:"
10671281
1068 #: ../../../src/MenuInventory.cpp:318
1282 #: ../../../src/MenuInventory.cpp:302
10691283 msgid "Use or equip item:"
10701284 msgstr "Cleachd no uidheamaich nì:"
10711285
1072 #: ../../../src/MenuInventory.cpp:319
1286 #: ../../../src/MenuInventory.cpp:303
10731287 #, c-format
10741288 msgid "%s modifiers"
10751289 msgstr "Atharraichearan air %s"
10761290
1077 #: ../../../src/MenuInventory.cpp:320
1291 #: ../../../src/MenuInventory.cpp:304
10781292 msgid "Select a quantity of item:"
10791293 msgstr "Tagh uiread dhen nì:"
10801294
1081 #: ../../../src/MenuInventory.cpp:323
1295 #: ../../../src/MenuInventory.cpp:307
10821296 msgid "Stash item stack:"
10831297 msgstr "Cuir stac nan nithean dhan stòr:"
10841298
1085 #: ../../../src/MenuInventory.cpp:325
1299 #: ../../../src/MenuInventory.cpp:309
10861300 msgid "Sell item stack:"
10871301 msgstr "Reic stac nan nithean:"
10881302
1089 #: ../../../src/MenuInventory.cpp:592
1303 #: ../../../src/MenuInventory.cpp:576
10901304 msgid "You don't have enough of the required item."
10911305 msgstr "Chan eil gu leòr dhen nì riatanach agad."
10921306
1093 #: ../../../src/MenuInventory.cpp:599
1307 #: ../../../src/MenuInventory.cpp:588
10941308 msgid "You can't use this item right now."
10951309 msgstr "Chan urrainn dhut an nì seo a chleachdadh an-dràsta."
10961310
1097 #: ../../../src/MenuInventory.cpp:611
1311 #: ../../../src/MenuInventory.cpp:600
10981312 msgid "This item can only be used from the action bar."
10991313 msgstr "Cha ghabh an nì seo cleachdadh ach on bhàr-ghnìomhan."
11001314
1101 #: ../../../src/MenuInventory.cpp:729
1315 #: ../../../src/MenuInventory.cpp:718
11021316 msgid "Inventory is full."
11031317 msgstr "Tha an tasgadh làn."
11041318
1105 #: ../../../src/MenuInventory.cpp:849
1319 #: ../../../src/MenuInventory.cpp:843
11061320 #, c-format
11071321 msgid "Not enough %s."
11081322 msgstr "Chan eil %s gu leòr agad."
11091323
1110 #: ../../../src/MenuInventory.cpp:869 ../../../src/MenuInventory.cpp:876
1324 #: ../../../src/MenuInventory.cpp:863 ../../../src/MenuInventory.cpp:870
11111325 msgid "This item can not be sold."
11121326 msgstr "Cha ghabh an nì seo reic."
11131327
11191333 msgid "Quests"
11201334 msgstr "Cinn-thurais"
11211335
1122 #: ../../../src/MenuManager.cpp:286
1336 #: ../../../src/MenuManager.cpp:305
11231337 #, c-format
11241338 msgid "XP: %d/%d"
11251339 msgstr "Puingean-eòlais: %d/%d"
11261340
1127 #: ../../../src/MenuManager.cpp:827
1341 #: ../../../src/MenuManager.cpp:875
11281342 msgid "This item can not be dropped."
11291343 msgstr "Chan urrainn dhut an nì seo a leigeil às."
1344
1345 #: ../../../src/MenuManager.cpp:1501
1346 msgid "Equipped"
1347 msgstr ""
1348
1349 #: ../../../src/MenuMovementType.cpp:87
1350 msgid "Select a Movement Type"
1351 msgstr ""
1352
1353 #: ../../../src/MenuMovementType.cpp:89
1354 msgid "Can be changed later in the Configuration menu."
1355 msgstr ""
1356
1357 #: ../../../src/MenuMovementType.cpp:92 ../../../src/MenuMovementType.cpp:122
1358 msgid "Keyboard"
1359 msgstr ""
1360
1361 #: ../../../src/MenuMovementType.cpp:93 ../../../src/MenuMovementType.cpp:128
1362 msgid "Mouse"
1363 msgstr ""
1364
1365 #: ../../../src/MenuMovementType.cpp:129
1366 msgid "Button"
1367 msgstr ""
11301368
11311369 #: ../../../src/MenuNumPicker.cpp:59
11321370 msgid "Enter amount:"
11331371 msgstr "Cuir a-steach àireamh:"
11341372
1135 #: ../../../src/MenuPowers.cpp:787
1373 #: ../../../src/MenuPowers.cpp:872
11361374 msgid "Passive"
11371375 msgstr "Fulangach"
11381376
1139 #: ../../../src/MenuPowers.cpp:792
1377 #: ../../../src/MenuPowers.cpp:879
11401378 #, c-format
11411379 msgid "Costs %d MP"
11421380 msgstr "Cosgaidh e %d puingean-gluasaid"
11431381
1144 #: ../../../src/MenuPowers.cpp:796
1382 #: ../../../src/MenuPowers.cpp:883
11451383 #, c-format
11461384 msgid "Costs %d HP"
11471385 msgstr "Cosgaidh e %d puingean-beatha"
11481386
1149 #: ../../../src/MenuPowers.cpp:801
1387 #: ../../../src/MenuPowers.cpp:887
11501388 msgid "Cooldown:"
11511389 msgstr "Fuarachadh:"
11521390
1153 #: ../../../src/MenuPowers.cpp:866 ../../../src/MenuPowers.cpp:869
1391 #: ../../../src/MenuPowers.cpp:938 ../../../src/MenuPowers.cpp:941
11541392 msgid "Damage per second"
11551393 msgstr "Dochann gach diog"
11561394
1157 #: ../../../src/MenuPowers.cpp:872 ../../../src/MenuPowers.cpp:875
1395 #: ../../../src/MenuPowers.cpp:944 ../../../src/MenuPowers.cpp:947
11581396 msgid "HP per second"
11591397 msgstr "Puingean-beatha gach diog"
11601398
1161 #: ../../../src/MenuPowers.cpp:878 ../../../src/MenuPowers.cpp:881
1399 #: ../../../src/MenuPowers.cpp:950 ../../../src/MenuPowers.cpp:953
11621400 msgid "MP per second"
11631401 msgstr "Puingean-gluasaid gach diog"
11641402
1165 #: ../../../src/MenuPowers.cpp:885
1403 #: ../../../src/MenuPowers.cpp:957
11661404 msgid "Immobilize"
11671405 msgstr "Do-ghluasad"
11681406
1169 #: ../../../src/MenuPowers.cpp:893
1407 #: ../../../src/MenuPowers.cpp:965
11701408 msgid "Immunity"
11711409 msgstr "Dìonachd"
11721410
1173 #: ../../../src/MenuPowers.cpp:896
1411 #: ../../../src/MenuPowers.cpp:968
11741412 msgid "Immunity to damage over time"
11751413 msgstr "Dìonachd an aghaidh dochainn rè ùine"
11761414
1177 #: ../../../src/MenuPowers.cpp:899
1415 #: ../../../src/MenuPowers.cpp:971
11781416 msgid "Immunity to slow"
11791417 msgstr "Dìonachd an aghaidh maille"
11801418
1181 #: ../../../src/MenuPowers.cpp:902
1419 #: ../../../src/MenuPowers.cpp:974
11821420 msgid "Immunity to stun"
11831421 msgstr "Dìonachd an aghaidh tuainealaich"
11841422
1185 #: ../../../src/MenuPowers.cpp:905
1423 #: ../../../src/MenuPowers.cpp:977
11861424 msgid "Immunity to HP steal"
11871425 msgstr "Dìonachd an aghaidh goid phuingean-beatha"
11881426
1189 #: ../../../src/MenuPowers.cpp:908
1427 #: ../../../src/MenuPowers.cpp:980
11901428 msgid "Immunity to MP steal"
11911429 msgstr "Dìonachd an aghaidh goid phuingean-gluasaid"
11921430
1193 #: ../../../src/MenuPowers.cpp:911
1431 #: ../../../src/MenuPowers.cpp:983
11941432 msgid "Immunity to knockback"
11951433 msgstr "Dìonachd an aghaidh bualaidh air ais"
11961434
1197 #: ../../../src/MenuPowers.cpp:914
1435 #: ../../../src/MenuPowers.cpp:986
11981436 msgid "Immunity to damage reflection"
11991437 msgstr "Dìonachd an aghaidh frith-thilgeil dochainn"
12001438
1201 #: ../../../src/MenuPowers.cpp:917
1439 #: ../../../src/MenuPowers.cpp:992
12021440 msgid "Stun"
12031441 msgstr "Tuainealaich"
12041442
1205 #: ../../../src/MenuPowers.cpp:920
1443 #: ../../../src/MenuPowers.cpp:995
12061444 msgid "Automatic revive on death"
12071445 msgstr "Ath-ghin fèin-obrachail seach bàs"
12081446
1209 #: ../../../src/MenuPowers.cpp:923
1447 #: ../../../src/MenuPowers.cpp:998
12101448 msgid "Convert"
12111449 msgstr "Iompaich"
12121450
1213 #: ../../../src/MenuPowers.cpp:926
1451 #: ../../../src/MenuPowers.cpp:1001
12141452 msgid "Fear"
12151453 msgstr "Eagal"
12161454
1217 #: ../../../src/MenuPowers.cpp:929
1455 #: ../../../src/MenuPowers.cpp:1004
12181456 msgid "Lifespan"
12191457 msgstr "Faid-bheatha"
12201458
1221 #: ../../../src/MenuPowers.cpp:953
1459 #: ../../../src/MenuPowers.cpp:1028
12221460 msgid "Magical Shield"
12231461 msgstr "Sgiath dhraoidheach"
12241462
1225 #: ../../../src/MenuPowers.cpp:982
1463 #: ../../../src/MenuPowers.cpp:1057
12261464 msgid "Healing"
12271465 msgstr "Slànachadh"
12281466
1229 #: ../../../src/MenuPowers.cpp:985
1467 #: ../../../src/MenuPowers.cpp:1060
12301468 msgid "Knockback"
12311469 msgstr "Bualadh air ais"
12321470
1233 #: ../../../src/MenuPowers.cpp:1010
1471 #: ../../../src/MenuPowers.cpp:1084
12341472 #, c-format
12351473 msgid "%d%% chance"
12361474 msgstr "teans de %d%%"
12371475
1238 #: ../../../src/MenuPowers.cpp:1062
1476 #: ../../../src/MenuPowers.cpp:1136
12391477 msgid "Base Accuracy"
12401478 msgstr "Pongalachd bhunasach"
12411479
1242 #: ../../../src/MenuPowers.cpp:1082
1480 #: ../../../src/MenuPowers.cpp:1156
12431481 msgid "Base Critical Chance"
12441482 msgstr "Teans bunasach air bualadh èiginneach"
12451483
1246 #: ../../../src/MenuPowers.cpp:1090
1484 #: ../../../src/MenuPowers.cpp:1164
12471485 msgid "Ignores Absorbtion"
12481486 msgstr "Leigidh seo seachad an ceapadh"
12491487
1250 #: ../../../src/MenuPowers.cpp:1095
1488 #: ../../../src/MenuPowers.cpp:1169
12511489 msgid "Ignores Avoidance"
12521490 msgstr "Leigidh seo seachad an seachnadh"
12531491
1254 #: ../../../src/MenuPowers.cpp:1100
1492 #: ../../../src/MenuPowers.cpp:1174
12551493 #, c-format
12561494 msgid "%d%% Chance to crit slowed targets"
12571495 msgstr "Teans dhe %d%% gun dèan thu bualadh èiginneach air amas le maille air"
12581496
1259 #: ../../../src/MenuPowers.cpp:1105
1497 #: ../../../src/MenuPowers.cpp:1179
12601498 #, c-format
12611499 msgid "Elemental Damage (%s)"
12621500 msgstr "Dochann dùile (%s)"
12631501
1264 #: ../../../src/MenuPowers.cpp:1114
1502 #: ../../../src/MenuPowers.cpp:1188
12651503 #, c-format
12661504 msgid "Requires a %s"
12671505 msgstr "Feum air: %s"
12681506
1269 #: ../../../src/MenuPowers.cpp:1151 ../../../src/MenuPowers.cpp:1154
1507 #: ../../../src/MenuPowers.cpp:1226 ../../../src/MenuPowers.cpp:1229
12701508 #, c-format
12711509 msgid "Requires Power: %s"
12721510 msgstr "Feum air cumhachd: %s"
12731511
1274 #: ../../../src/MenuPowers.cpp:1163
1512 #: ../../../src/MenuPowers.cpp:1238
12751513 msgid "Click to Unlock (uses 1 Skill Point)"
12761514 msgstr "Briog gus a neo-ghlasadh (cleachdaidh seo 1 phuing-sgil)"
12771515
1278 #: ../../../src/MenuPowers.cpp:1167 ../../../src/MenuPowers.cpp:1169
1516 #: ../../../src/MenuPowers.cpp:1242 ../../../src/MenuPowers.cpp:1244
12791517 msgid "Requires 1 Skill Point"
12801518 msgstr "Feum air 1 phuing-sgil"
12811519
1282 #: ../../../src/MenuPowers.cpp:1355
1283 #, c-format
1284 msgid "%d unspent skill point"
1285 msgstr "%dphuing-sgil nach deach a chleachdadh"
1286
1287 #: ../../../src/MenuPowers.cpp:1358
1288 #, c-format
1289 msgid "%d unspent skill points"
1290 msgstr "%d puing(ean)-sgil nach deach a chleachdadh"
1291
1292 #: ../../../src/MenuPowers.cpp:1388
1520 #: ../../../src/MenuPowers.cpp:1444
1521 #, c-format
1522 msgid "Available skill points: %d"
1523 msgstr ""
1524
1525 #: ../../../src/MenuPowers.cpp:1476
12931526 msgid "Next Level:"
12941527 msgstr "An t-ath leibheil:"
12951528
1296 #: ../../../src/MenuStash.cpp:96
1297 msgid "Shared Stash"
1298 msgstr "Stòr co-roinnte"
1299
1300 #: ../../../src/MenuStash.cpp:209
1301 msgid "Can not store quest items in the stash."
1302 msgstr "Cha ghabh nithean cinn-thurais a chur dhan stòr."
1303
1304 #: ../../../src/MenuStash.cpp:219
1529 #: ../../../src/MenuStash.cpp:80 ../../../src/MenuStash.cpp:161
1530 msgid "Stash"
1531 msgstr "Stòr"
1532
1533 #: ../../../src/MenuStash.cpp:174 ../../../src/MenuStash.cpp:188
1534 msgid "Private"
1535 msgstr "Prìobhaideach"
1536
1537 #: ../../../src/MenuStash.cpp:175
1538 msgid "Shared"
1539 msgstr "Co-roinnte"
1540
1541 #: ../../../src/MenuStash.cpp:340
1542 msgid "This item can not be stored in the stash."
1543 msgstr "Cha ghabh an nì seo a chur dhan stòr."
1544
1545 #: ../../../src/MenuStash.cpp:345
1546 msgid "This item can not be stored in the private stash."
1547 msgstr "Cha ghabh an nì seo a chur dhan stòr phrìobhaideach."
1548
1549 #: ../../../src/MenuStash.cpp:350
1550 msgid "This item can not be stored in the shared stash."
1551 msgstr "Cha ghabh an nì seo a chur dhan stòr cho-roinnte."
1552
1553 #: ../../../src/MenuStash.cpp:360
13051554 msgid "Stash is full."
13061555 msgstr "Tha an stòr làn."
13071556
1308 #: ../../../src/MenuTalker.cpp:454
1557 #: ../../../src/MenuStash.cpp:414
1558 #, c-format
1559 msgid "Can not store item in stash: %s"
1560 msgstr "Cha ghabh an nì a chur dhan stòr: %s"
1561
1562 #: ../../../src/MenuTalker.cpp:448
1563 #, c-format
1564 msgid "<dialog node %d>"
1565 msgstr "<nòd còmhraidh %d>"
1566
1567 #: ../../../src/MenuTalker.cpp:456
13091568 msgid "Trade"
13101569 msgstr "Malart"
13111570
1312 #: ../../../src/MenuVendor.cpp:58
1571 #: ../../../src/MenuVendor.cpp:60
13131572 msgid "Buyback"
13141573 msgstr "Na reic thu roimhe"
13151574
1316 #: ../../../src/MenuVendor.cpp:279
1575 #: ../../../src/MenuVendor.cpp:283
13171576 msgid "Vendor"
13181577 msgstr "Reiceadair"
13191578
1320 #: ../../../src/PowerManager.cpp:1136
1579 #: ../../../src/PowerManager.cpp:1208
13211580 #, c-format
13221581 msgid "+%d Shield"
13231582 msgstr "Sgiath +%d"
13241583
1325 #: ../../../src/PowerManager.cpp:1392
1584 #: ../../../src/PowerManager.cpp:1465
13261585 msgid "You are already transformed, untransform first."
13271586 msgstr ""
13281587 "Tha thu air cruth-atharrachadh mar-thà, feumaidh tu an cruth tùsail agad a "
13291588 "ghabhail an toiseach."
13301589
1331 #: ../../../src/PowerManager.cpp:1404
1590 #: ../../../src/PowerManager.cpp:1477
13321591 msgid "Could not untransform at this position."
13331592 msgstr "Cha b’ urrainn dhut neo-chruth-atharrachadh air an ionad seo."
13341593
13361595 msgid "Completed Quests"
13371596 msgstr "Cinn-thurais air a choileanadh"
13381597
1339 #: ../../../src/SaveLoad.cpp:243 ../../../src/SaveLoad.cpp:244
1598 #: ../../../src/SaveLoad.cpp:250 ../../../src/SaveLoad.cpp:251
13401599 msgid "Game saved."
13411600 msgstr "Chaidh an geama a shàbhaladh."
13421601
1343 #: ../../../src/SDLInputState.cpp:582
1602 #: ../../../src/SDLInputState.cpp:643
1603 msgid "BkSp"
1604 msgstr "BkSp"
1605
1606 #: ../../../src/SDLInputState.cpp:644
1607 msgid "Caps"
1608 msgstr "Caps"
1609
1610 #: ../../../src/SDLInputState.cpp:645
1611 msgid "Del"
1612 msgstr "Del"
1613
1614 #: ../../../src/SDLInputState.cpp:647 ../../../src/SDLInputState.cpp:677
1615 msgid "End"
1616 msgstr "End"
1617
1618 #: ../../../src/SDLInputState.cpp:648
1619 msgid "Esc"
1620 msgstr "Esc"
1621
1622 #: ../../../src/SDLInputState.cpp:649 ../../../src/SDLInputState.cpp:679
1623 msgid "Home"
1624 msgstr "Home"
1625
1626 #: ../../../src/SDLInputState.cpp:650
1627 msgid "Ins"
1628 msgstr "Ins"
1629
1630 #: ../../../src/SDLInputState.cpp:651
1631 msgid "LAlt"
1632 msgstr "Alt clì"
1633
1634 #: ../../../src/SDLInputState.cpp:652
1635 msgid "LCtrl"
1636 msgstr "Ctrl clì"
1637
1638 #: ../../../src/SDLInputState.cpp:654
1639 msgid "LShft"
1640 msgstr "Shift clì"
1641
1642 #: ../../../src/SDLInputState.cpp:655
1643 msgid "Num"
1644 msgstr "Num"
1645
1646 #: ../../../src/SDLInputState.cpp:656
1647 msgid "PgDn"
1648 msgstr "PgDn"
1649
1650 #: ../../../src/SDLInputState.cpp:657
1651 msgid "PgUp"
1652 msgstr "PgUp"
1653
1654 #: ../../../src/SDLInputState.cpp:658 ../../../src/SDLInputState.cpp:688
1655 msgid "Pause"
1656 msgstr "Pause"
1657
1658 #: ../../../src/SDLInputState.cpp:659
1659 msgid "Print"
1660 msgstr "Print"
1661
1662 #: ../../../src/SDLInputState.cpp:660
1663 msgid "RAlt"
1664 msgstr "Alt deas"
1665
1666 #: ../../../src/SDLInputState.cpp:661
1667 msgid "RCtrl"
1668 msgstr "Ctrl deas"
1669
1670 #: ../../../src/SDLInputState.cpp:662
1671 msgid "Ret"
1672 msgstr "Return"
1673
1674 #: ../../../src/SDLInputState.cpp:664
1675 msgid "RShft"
1676 msgstr "Shift deas"
1677
1678 #: ../../../src/SDLInputState.cpp:665
1679 msgid "SLock"
1680 msgstr "SLock"
1681
1682 #: ../../../src/SDLInputState.cpp:666
1683 msgid "Spc"
1684 msgstr "Spc"
1685
1686 #: ../../../src/SDLInputState.cpp:667 ../../../src/SDLInputState.cpp:697
1687 msgid "Tab"
1688 msgstr "Tab"
1689
1690 #: ../../../src/SDLInputState.cpp:673
13441691 msgid "Backspace"
13451692 msgstr "Backspace"
13461693
1347 #: ../../../src/SDLInputState.cpp:583
1694 #: ../../../src/SDLInputState.cpp:674
13481695 msgid "CapsLock"
13491696 msgstr "CapsLock"
13501697
1351 #: ../../../src/SDLInputState.cpp:586
1352 msgid "End"
1353 msgstr "End"
1354
1355 #: ../../../src/SDLInputState.cpp:587
1698 #: ../../../src/SDLInputState.cpp:678
13561699 msgid "Escape"
13571700 msgstr "Escape"
13581701
1359 #: ../../../src/SDLInputState.cpp:588
1360 msgid "Home"
1361 msgstr "Home"
1362
1363 #: ../../../src/SDLInputState.cpp:589
1702 #: ../../../src/SDLInputState.cpp:680
13641703 msgid "Insert"
13651704 msgstr "Insert"
13661705
1367 #: ../../../src/SDLInputState.cpp:590
1706 #: ../../../src/SDLInputState.cpp:681
13681707 msgid "Left Alt"
13691708 msgstr "Alt clì"
13701709
1371 #: ../../../src/SDLInputState.cpp:591
1710 #: ../../../src/SDLInputState.cpp:682
13721711 msgid "Left Ctrl"
13731712 msgstr "Ctrl clì"
13741713
1375 #: ../../../src/SDLInputState.cpp:593
1714 #: ../../../src/SDLInputState.cpp:684
13761715 msgid "Left Shift"
13771716 msgstr "Shift clì"
13781717
1379 #: ../../../src/SDLInputState.cpp:594
1718 #: ../../../src/SDLInputState.cpp:685
13801719 msgid "NumLock"
13811720 msgstr "NumLock"
13821721
1383 #: ../../../src/SDLInputState.cpp:595
1722 #: ../../../src/SDLInputState.cpp:686
13841723 msgid "PageDown"
13851724 msgstr "PageDown"
13861725
1387 #: ../../../src/SDLInputState.cpp:596
1726 #: ../../../src/SDLInputState.cpp:687
13881727 msgid "PageUp"
13891728 msgstr "PageUp"
13901729
1391 #: ../../../src/SDLInputState.cpp:597
1392 msgid "Pause"
1393 msgstr "Pause"
1394
1395 #: ../../../src/SDLInputState.cpp:598
1730 #: ../../../src/SDLInputState.cpp:689
13961731 msgid "PrintScreen"
13971732 msgstr "PrintScreen"
13981733
1399 #: ../../../src/SDLInputState.cpp:599
1734 #: ../../../src/SDLInputState.cpp:690
14001735 msgid "Right Alt"
14011736 msgstr "Alt deas"
14021737
1403 #: ../../../src/SDLInputState.cpp:600
1738 #: ../../../src/SDLInputState.cpp:691
14041739 msgid "Right Ctrl"
14051740 msgstr "Ctrl deas"
14061741
1407 #: ../../../src/SDLInputState.cpp:601
1742 #: ../../../src/SDLInputState.cpp:692
14081743 msgid "Return"
14091744 msgstr "Return"
14101745
1411 #: ../../../src/SDLInputState.cpp:603
1746 #: ../../../src/SDLInputState.cpp:694
14121747 msgid "Right Shift"
14131748 msgstr "Shift deas"
14141749
1415 #: ../../../src/SDLInputState.cpp:604
1750 #: ../../../src/SDLInputState.cpp:695
14161751 msgid "ScrollLock"
14171752 msgstr "ScrollLock"
14181753
1419 #: ../../../src/SDLInputState.cpp:605
1754 #: ../../../src/SDLInputState.cpp:696
14201755 msgid "Space"
14211756 msgstr "Space"
14221757
1423 #: ../../../src/SDLInputState.cpp:606
1424 msgid "Tab"
1425 msgstr "Tab"
1426
1427 #: ../../../src/SDLInputState.cpp:620
1758 #: ../../../src/SDLInputState.cpp:710
1759 #, c-format
1760 msgid "M%d"
1761 msgstr "Luch%d"
1762
1763 #: ../../../src/SDLInputState.cpp:716
14281764 #, c-format
14291765 msgid "Mouse %d"
14301766 msgstr "%d na luchaige"
14311767
1432 #: ../../../src/SDLInputState.cpp:628
1768 #: ../../../src/SDLInputState.cpp:726
1769 #, c-format
1770 msgid "JX%d-"
1771 msgstr "BiorX%d-"
1772
1773 #: ../../../src/SDLInputState.cpp:728
14331774 #, c-format
14341775 msgid "Axis %d -"
14351776 msgstr "Aiseal %d -"
14361777
1437 #: ../../../src/SDLInputState.cpp:630
1778 #: ../../../src/SDLInputState.cpp:732
1779 #, c-format
1780 msgid "JX%d+"
1781 msgstr "BiorX%d+"
1782
1783 #: ../../../src/SDLInputState.cpp:734
14381784 #, c-format
14391785 msgid "Axis %d +"
14401786 msgstr "Aiseal %d +"
14411787
1442 #: ../../../src/SDLInputState.cpp:633
1788 #: ../../../src/SDLInputState.cpp:739
1789 #, c-format
1790 msgid "JB%d"
1791 msgstr "BiorPut%d"
1792
1793 #: ../../../src/SDLInputState.cpp:741
14431794 #, c-format
14441795 msgid "Button %d"
14451796 msgstr "Putan %d"
14461797
1447 #: ../../../src/SDLInputState.cpp:637
1448 msgid "(none)"
1449 msgstr "(chan eil gin)"
1450
1451 #: ../../../src/SDLInputState.cpp:677
1798 #: ../../../src/SDLInputState.cpp:787
14521799 msgid "Touch control D-Pad"
14531800 msgstr "Pada-D an t-suathaidh"
14541801
1455 #: ../../../src/SDLInputState.cpp:701
1802 #: ../../../src/SDLInputState.cpp:810
14561803 msgid "Touch control buttons"
14571804 msgstr "Putanan an t-suathaidh"
14581805
1459 #: ../../../src/SDLInputState.cpp:716
1806 #: ../../../src/SDLInputState.cpp:824
14601807 msgid "Tap"
14611808 msgstr "Gnogadh"
14621809
1463 #: ../../../src/SDLInputState.cpp:760 ../../../src/SDLInputState.cpp:764
1464 #: ../../../src/SDLInputState.cpp:768
1810 #: ../../../src/SDLInputState.cpp:876 ../../../src/SDLInputState.cpp:878
1811 #, c-format
1812 msgid "Can not bind: %s"
1813 msgstr "Cha ghabh a nasgadh: %s"
1814
1815 #: ../../../src/SDLInputState.cpp:890 ../../../src/SDLInputState.cpp:894
1816 #: ../../../src/SDLInputState.cpp:898
14651817 #, c-format
14661818 msgid "'%s' is no longer bound to:"
14671819 msgstr "Chan eil “%s” naisgte tuilleadh ri:"
16261978 msgid "Base MP"
16271979 msgstr "Puingean-gluasaid bunasach"
16281980
1629 #: ../../../src/Utils.cpp:346
1981 #: ../../../src/Utils.cpp:365
16301982 msgid "k"
16311983 msgstr "k"
16321984
1633 #: ../../../src/Utils.cpp:580
1985 #: ../../../src/Utils.cpp:635
16341986 #, c-format
16351987 msgid "%s second"
16361988 msgstr "%s diog"
16371989
1638 #: ../../../src/Utils.cpp:583
1990 #: ../../../src/Utils.cpp:638
16391991 #, c-format
16401992 msgid "%s seconds"
16411993 msgstr "%s diog(an)"
1010 msgstr ""
1111 "Project-Id-Version: PACKAGE VERSION\n"
1212 "Report-Msgid-Bugs-To: \n"
13 "POT-Creation-Date: 2018-11-17 21:50-0500\n"
13 "POT-Creation-Date: 2021-05-23 20:34-0400\n"
1414 "PO-Revision-Date: 2018-03-28 19:16+0000\n"
1515 "Last-Translator: Justin Jacobs <jajdorkster@gmail.com>, 2018\n"
1616 "Language-Team: Galician (https://www.transifex.com/flareorg/teams/84925/gl/)\n"
2020 "Language: gl\n"
2121 "Plural-Forms: nplurals=2; plural=(n != 1);\n"
2222
23 #: ../../../src/Avatar.cpp:367
23 #: ../../../src/Avatar.cpp:391
24 msgid "Your health is low!"
25 msgstr ""
26
27 #: ../../../src/Avatar.cpp:421
2428 #, c-format
2529 msgid "Congratulations, you have reached level %d!"
2630 msgstr "Parabéns, chegaches ao nivel %d!"
2731
28 #: ../../../src/Avatar.cpp:369
29 msgid "You may increase one attribute through the Character Menu."
30 msgstr "Podes aumentar un atributo desde o menú da personaxe."
31
32 #: ../../../src/Avatar.cpp:583
33 msgid "You are defeated. Game over! ${INPUT_CONTINUE} to exit to Title."
34 msgstr ""
35
36 #: ../../../src/Avatar.cpp:589
37 msgid "You are defeated. ${INPUT_CONTINUE} to continue."
38 msgstr ""
39
40 #: ../../../src/Avatar.cpp:839
32 #: ../../../src/Avatar.cpp:423
33 msgid "You may increase one or more attributes through the Character Menu."
34 msgstr ""
35
36 #: ../../../src/Avatar.cpp:427
37 msgid "You may unlock one or more abilities through the Powers Menu."
38 msgstr ""
39
40 #: ../../../src/Avatar.cpp:689
41 msgid "You are defeated."
42 msgstr ""
43
44 #: ../../../src/Avatar.cpp:935
4145 msgid "Transformation expired. You have been moved back to a safe place."
4246 msgstr ""
4347
44 #: ../../../src/CampaignManager.cpp:153
48 #: ../../../src/CampaignManager.cpp:152
4549 #, c-format
4650 msgid "%d %s removed."
4751 msgstr "%d %s menos."
4852
49 #: ../../../src/CampaignManager.cpp:162
53 #: ../../../src/CampaignManager.cpp:171
54 #, c-format
55 msgid "%s x%d removed."
56 msgstr ""
57
58 #: ../../../src/CampaignManager.cpp:173
5059 #, c-format
5160 msgid "%s removed."
5261 msgstr "%s menos."
5362
54 #: ../../../src/CampaignManager.cpp:175
63 #: ../../../src/CampaignManager.cpp:187
64 #, c-format
65 msgid "You receive %d %s."
66 msgstr "Obtiveches %d %s."
67
68 #: ../../../src/CampaignManager.cpp:191
69 #, c-format
70 msgid "You receive %s x%d."
71 msgstr "Obtiveches %d unidades de %s."
72
73 #: ../../../src/CampaignManager.cpp:193
5574 #, c-format
5675 msgid "You receive %s."
5776 msgstr "Obtiveches unha unidade de %s."
5877
59 #: ../../../src/CampaignManager.cpp:177
60 #, c-format
61 msgid "You receive %s x%d."
62 msgstr "Obtiveches %d unidades de %s."
63
64 #: ../../../src/CampaignManager.cpp:186
65 #, c-format
66 msgid "You receive %d %s."
67 msgstr "Obtiveches %d %s."
68
69 #: ../../../src/CampaignManager.cpp:195
78 #: ../../../src/CampaignManager.cpp:210
7079 #, c-format
7180 msgid "You receive %d XP."
7281 msgstr "A túa experiencia aumentou %d puntos."
7382
74 #: ../../../src/CampaignManager.cpp:201
83 #: ../../../src/CampaignManager.cpp:216
7584 msgid "HP restored."
7685 msgstr "Recuperaches a vida."
7786
78 #: ../../../src/CampaignManager.cpp:205
87 #: ../../../src/CampaignManager.cpp:220
7988 msgid "MP restored."
8089 msgstr "Recuperaches a enerxía."
8190
82 #: ../../../src/CampaignManager.cpp:210
91 #: ../../../src/CampaignManager.cpp:225
8392 msgid "HP and MP restored."
8493 msgstr "Recuperaches a vida e a enerxía."
8594
86 #: ../../../src/CampaignManager.cpp:214
95 #: ../../../src/CampaignManager.cpp:229
8796 msgid "Negative effects removed."
8897 msgstr "Elimináronse os efectos negativos."
8998
90 #: ../../../src/CampaignManager.cpp:220
99 #: ../../../src/CampaignManager.cpp:235
91100 msgid "HP and MP restored, negative effects removed"
92101 msgstr "Recuperaches a vida e a enerxía, e elimináronse os efectos negativos."
93102
105114 "The default renderer that is often faster than the SDL software renderer."
106115 msgstr ""
107116
108 #: ../../../src/EngineSettings.cpp:561
117 #: ../../../src/EngineSettings.cpp:586
109118 msgid "Adventurer"
110119 msgstr "Aventureiro"
111120
112 #: ../../../src/Entity.cpp:511
121 #: ../../../src/Entity.cpp:527
113122 msgid "miss"
114123 msgstr "fallo"
115124
116 #: ../../../src/Entity.cpp:548 ../../../src/PowerManager.cpp:1152
117 #: ../../../src/StatBlock.cpp:805 ../../../src/StatBlock.cpp:811
125 #: ../../../src/Entity.cpp:565 ../../../src/PowerManager.cpp:1224
126 #: ../../../src/StatBlock.cpp:917 ../../../src/StatBlock.cpp:923
118127 #, c-format
119128 msgid "+%d HP"
120129 msgstr "+%d de vida"
121130
122 #: ../../../src/Entity.cpp:555 ../../../src/StatBlock.cpp:816
123 #: ../../../src/StatBlock.cpp:822
131 #: ../../../src/Entity.cpp:572 ../../../src/StatBlock.cpp:928
132 #: ../../../src/StatBlock.cpp:934
124133 #, c-format
125134 msgid "+%d MP"
126135 msgstr "+%d de enerxía"
127136
128 #: ../../../src/EventManager.cpp:738
137 #: ../../../src/EventManager.cpp:792
129138 msgid "Unknown destination"
130139 msgstr "Destino descoñecido."
131140
132 #: ../../../src/GameStateConfigBase.cpp:89
133 #: ../../../src/GameStateConfigBase.cpp:110
141 #: ../../../src/GameState.cpp:37 ../../../src/GameState.cpp:58
142 msgid "Loading..."
143 msgstr "Cargando…"
144
145 #: ../../../src/GameStateLoad.cpp:90 ../../../src/GameStateLoad.cpp:103
146 msgid "Delete Save"
147 msgstr "Borrar a partida"
148
149 #: ../../../src/GameStateLoad.cpp:90
150 msgid "Delete this save?"
151 msgstr "Estás seguro?"
152
153 #: ../../../src/GameStateLoad.cpp:92
154 msgid "Exit to Title"
155 msgstr "Menú principal"
156
157 #: ../../../src/GameStateLoad.cpp:95
158 msgid "New Game"
159 msgstr "Nova partida"
160
161 #: ../../../src/GameStateLoad.cpp:99 ../../../src/GameStateLoad.cpp:607
162 msgid "Choose a Slot"
163 msgstr "Escolla un espazo"
164
165 #: ../../../src/GameStateLoad.cpp:580 ../../../src/GameStateLoad.cpp:601
166 msgid "Enable a story mod to continue"
167 msgstr "Activa unha modificación de historia para continuar."
168
169 #: ../../../src/GameStateLoad.cpp:596
170 msgid "Load Game"
171 msgstr "Cargar a partida"
172
173 #: ../../../src/GameStateLoad.cpp:705
174 msgid "Entering game world..."
175 msgstr "Cargando o mundo…"
176
177 #: ../../../src/GameStateLoad.cpp:708
178 msgid "Loading saved game..."
179 msgstr "Cargando a partida..."
180
181 #: ../../../src/GameStateLoad.cpp:741
182 msgid "Invalid save"
183 msgstr ""
184
185 #: ../../../src/GameStateLoad.cpp:765 ../../../src/ItemManager.cpp:745
186 #: ../../../src/MenuPowers.cpp:860 ../../../src/MenuPowers.cpp:1219
187 #: ../../../src/MenuPowers.cpp:1631
188 #, c-format
189 msgid "Level %d"
190 msgstr "Nivel %d"
191
192 #: ../../../src/GameStateNew.cpp:66 ../../../src/InputState.cpp:416
193 #: ../../../src/MenuConfig.cpp:246
194 msgid "Cancel"
195 msgstr "Cancelar"
196
197 #: ../../../src/GameStateNew.cpp:69
198 msgid "Create"
199 msgstr "Crear"
200
201 #: ../../../src/GameStateNew.cpp:77
202 msgid "Randomize"
203 msgstr ""
204
205 #: ../../../src/GameStateNew.cpp:93
206 msgid "Choose a Portrait"
207 msgstr "Retrato:"
208
209 #: ../../../src/GameStateNew.cpp:97
210 msgid "Choose a Name"
211 msgstr "Nome:"
212
213 #: ../../../src/GameStateNew.cpp:101
214 msgid "Permadeath?"
215 msgstr "Perder a partida ao morrer."
216
217 #: ../../../src/GameStateNew.cpp:105
218 msgid "Choose a Class"
219 msgstr "Clase:"
220
221 #: ../../../src/GameStateTitle.cpp:107
222 msgid "Play Game"
223 msgstr "Xogar"
224
225 #: ../../../src/GameStateTitle.cpp:110
226 msgid "Enable a core mod to continue"
227 msgstr "Activa unha modificación base para continuar."
228
229 #: ../../../src/GameStateTitle.cpp:114 ../../../src/MenuMiniMap.cpp:152
230 msgid "Configuration"
231 msgstr "Configuración"
232
233 #: ../../../src/GameStateTitle.cpp:117
234 msgid "Credits"
235 msgstr "Autores"
236
237 #: ../../../src/GameStateTitle.cpp:120
238 msgid "Exit Game"
239 msgstr "Saír"
240
241 #: ../../../src/InputState.cpp:417
242 msgid "Accept"
243 msgstr "Aceptar"
244
245 #: ../../../src/InputState.cpp:418 ../../../src/MenuMovementType.cpp:123
246 #: ../../../src/MenuMovementType.cpp:132 ../../../src/SDLInputState.cpp:668
247 #: ../../../src/SDLInputState.cpp:698
248 msgid "Up"
249 msgstr "Arriba"
250
251 #: ../../../src/InputState.cpp:419 ../../../src/MenuMovementType.cpp:125
252 #: ../../../src/MenuMovementType.cpp:134 ../../../src/SDLInputState.cpp:646
253 #: ../../../src/SDLInputState.cpp:676
254 msgid "Down"
255 msgstr "Abaixo"
256
257 #: ../../../src/InputState.cpp:420 ../../../src/MenuMovementType.cpp:124
258 #: ../../../src/MenuMovementType.cpp:133 ../../../src/SDLInputState.cpp:653
259 #: ../../../src/SDLInputState.cpp:683
260 msgid "Left"
261 msgstr "Esquerda"
262
263 #: ../../../src/InputState.cpp:421 ../../../src/MenuMovementType.cpp:126
264 #: ../../../src/MenuMovementType.cpp:135 ../../../src/SDLInputState.cpp:663
265 #: ../../../src/SDLInputState.cpp:693
266 msgid "Right"
267 msgstr "Dereita"
268
269 #: ../../../src/InputState.cpp:422
270 msgid "Bar1"
271 msgstr "Acción 1"
272
273 #: ../../../src/InputState.cpp:423
274 msgid "Bar2"
275 msgstr "Acción 2"
276
277 #: ../../../src/InputState.cpp:424
278 msgid "Bar3"
279 msgstr "Acción 3"
280
281 #: ../../../src/InputState.cpp:425
282 msgid "Bar4"
283 msgstr "Acción 4"
284
285 #: ../../../src/InputState.cpp:426
286 msgid "Bar5"
287 msgstr "Acción 5"
288
289 #: ../../../src/InputState.cpp:427
290 msgid "Bar6"
291 msgstr "Acción 6"
292
293 #: ../../../src/InputState.cpp:428
294 msgid "Bar7"
295 msgstr "Acción 7"
296
297 #: ../../../src/InputState.cpp:429
298 msgid "Bar8"
299 msgstr "Acción 8"
300
301 #: ../../../src/InputState.cpp:430
302 msgid "Bar9"
303 msgstr "Acción 9"
304
305 #: ../../../src/InputState.cpp:431
306 msgid "Bar0"
307 msgstr "Acción 0"
308
309 #: ../../../src/InputState.cpp:432 ../../../src/MenuActionBar.cpp:84
310 #: ../../../src/MenuCharacter.cpp:54
311 msgid "Character"
312 msgstr "Personaxe"
313
314 #: ../../../src/InputState.cpp:433 ../../../src/MenuActionBar.cpp:85
315 #: ../../../src/MenuInventory.cpp:130 ../../../src/MenuVendor.cpp:59
316 msgid "Inventory"
317 msgstr "Inventario"
318
319 #: ../../../src/InputState.cpp:434 ../../../src/MenuActionBar.cpp:86
320 #: ../../../src/MenuPowers.cpp:158
321 msgid "Powers"
322 msgstr "Habilidades"
323
324 #: ../../../src/InputState.cpp:435 ../../../src/MenuActionBar.cpp:87
325 #: ../../../src/MenuLog.cpp:72
326 msgid "Log"
327 msgstr "Rexistro"
328
329 #: ../../../src/InputState.cpp:436
330 msgid "Main1"
331 msgstr "Acción principal"
332
333 #: ../../../src/InputState.cpp:437
334 msgid "Main2"
335 msgstr "Acción secundaria"
336
337 #: ../../../src/InputState.cpp:438
338 msgid "Ctrl"
339 msgstr "Control"
340
341 #: ../../../src/InputState.cpp:439
342 msgid "Shift"
343 msgstr "Maiúsculas"
344
345 #: ../../../src/InputState.cpp:440
346 msgid "Alt"
347 msgstr ""
348
349 #: ../../../src/InputState.cpp:441 ../../../src/SDLInputState.cpp:675
350 msgid "Delete"
351 msgstr "Suprimir"
352
353 #: ../../../src/InputState.cpp:442
354 msgid "ActionBar Accept"
355 msgstr "Aceptar (barra de accións)"
356
357 #: ../../../src/InputState.cpp:443
358 msgid "ActionBar Left"
359 msgstr "Esquerda (barra de accións)"
360
361 #: ../../../src/InputState.cpp:444
362 msgid "ActionBar Right"
363 msgstr "Dereita (barra de accións)"
364
365 #: ../../../src/InputState.cpp:445
366 msgid "ActionBar Use"
367 msgstr "Usar (barra de accións)"
368
369 #: ../../../src/InputState.cpp:446
370 msgid "Developer Menu"
371 msgstr "Menú de desenvolvedor"
372
373 #: ../../../src/InputState.cpp:448
374 msgid "Left Mouse"
375 msgstr ""
376
377 #: ../../../src/InputState.cpp:449
378 msgid "Middle Mouse"
379 msgstr ""
380
381 #: ../../../src/InputState.cpp:450
382 msgid "Right Mouse"
383 msgstr ""
384
385 #: ../../../src/InputState.cpp:451
386 msgid "Wheel Up"
387 msgstr ""
388
389 #: ../../../src/InputState.cpp:452
390 msgid "Wheel Down"
391 msgstr ""
392
393 #: ../../../src/InputState.cpp:453
394 msgid "Mouse X1"
395 msgstr ""
396
397 #: ../../../src/InputState.cpp:454
398 msgid "Mouse X2"
399 msgstr ""
400
401 #: ../../../src/ItemManager.cpp:475
402 msgid "Unknown Item"
403 msgstr "Elemento descoñecido"
404
405 #: ../../../src/ItemManager.cpp:646 ../../../src/MenuPowers.cpp:959
406 #, c-format
407 msgid "%d%% Speed"
408 msgstr "%d%% velocidade"
409
410 #: ../../../src/ItemManager.cpp:650 ../../../src/MenuPowers.cpp:962
411 #, c-format
412 msgid "%d%% Attack Speed"
413 msgstr ""
414
415 #: ../../../src/ItemManager.cpp:672 ../../../src/MenuCharacter.cpp:352
416 #: ../../../src/MenuPowers.cpp:931
417 #, c-format
418 msgid "Resistance (%s)"
419 msgstr ""
420
421 #: ../../../src/ItemManager.cpp:682
422 #, c-format
423 msgid "Requires %s"
424 msgstr ""
425
426 #: ../../../src/ItemManager.cpp:731
427 msgid "Quest Item"
428 msgstr "Obxecto dunha misión"
429
430 #: ../../../src/ItemManager.cpp:758
431 #, c-format
432 msgid "Quality: %s"
433 msgstr "Calidade: %s"
434
435 #: ../../../src/ItemManager.cpp:783
436 #, c-format
437 msgid "Absorb: %d-%d"
438 msgstr "Absorción: %d-%d"
439
440 #: ../../../src/ItemManager.cpp:785
441 #, c-format
442 msgid "Absorb: %d"
443 msgstr "Absorción: %d"
444
445 #: ../../../src/ItemManager.cpp:825 ../../../src/MenuPowers.cpp:1206
446 #: ../../../src/MenuPowers.cpp:1209
447 #, c-format
448 msgid "Requires Level %d"
449 msgstr "Require o nivel %d."
450
451 #: ../../../src/ItemManager.cpp:836 ../../../src/MenuPowers.cpp:1198
452 #: ../../../src/MenuPowers.cpp:1200
453 #, c-format
454 msgid "Requires %s %d"
455 msgstr ""
456
457 #: ../../../src/ItemManager.cpp:847
458 #, c-format
459 msgid "Requires Class: %s"
460 msgstr "Require a clase «%s»."
461
462 #: ../../../src/ItemManager.cpp:863 ../../../src/ItemManager.cpp:875
463 #, c-format
464 msgid "Buy Price: %d %s"
465 msgstr "Prezo de compra: %d %s"
466
467 #: ../../../src/ItemManager.cpp:865 ../../../src/ItemManager.cpp:877
468 #, c-format
469 msgid "Buy Price: %d %s each"
470 msgstr "Prezo de compra: %d %s por unidade"
471
472 #: ../../../src/ItemManager.cpp:885
473 #, c-format
474 msgid "Sell Price: %d %s"
475 msgstr "Prezo de venda: %d %s"
476
477 #: ../../../src/ItemManager.cpp:887
478 #, c-format
479 msgid "Sell Price: %d %s each"
480 msgstr "Prezo de venda: %d %s por unidade"
481
482 #: ../../../src/ItemManager.cpp:896
483 msgid "Set:"
484 msgstr ""
485
486 #: ../../../src/ItemManager.cpp:903
487 #, c-format
488 msgid "%d items:"
489 msgstr ""
490
491 #: ../../../src/ItemManager.cpp:915
492 #, c-format
493 msgid "Press [%s] to read"
494 msgstr ""
495
496 #: ../../../src/ItemManager.cpp:918
497 #, c-format
498 msgid "Press [%s] to use"
499 msgstr ""
500
501 #: ../../../src/MenuActionBar.cpp:239 ../../../src/MenuActionBar.cpp:246
502 #: ../../../src/MenuActionBar.cpp:249 ../../../src/MenuActionBar.cpp:255
503 #, c-format
504 msgid "Hotkey: %s"
505 msgstr ""
506
507 #: ../../../src/MenuActionBar.cpp:621
508 msgid "Not enough MP."
509 msgstr ""
510
511 #: ../../../src/MenuActiveEffects.cpp:124
512 #, c-format
513 msgid "x%d"
514 msgstr ""
515
516 #: ../../../src/MenuActiveEffects.cpp:219
517 msgid "Remaining:"
518 msgstr ""
519
520 #: ../../../src/MenuActiveEffects.cpp:225
521 #, c-format
522 msgid "x%d stacks"
523 msgstr ""
524
525 #: ../../../src/MenuCharacter.cpp:73 ../../../src/MenuCharacter.cpp:78
526 msgid "Name"
527 msgstr "Nome"
528
529 #: ../../../src/MenuCharacter.cpp:74 ../../../src/MenuCharacter.cpp:79
530 msgid "Level"
531 msgstr "Nivel"
532
533 #: ../../../src/MenuCharacter.cpp:309
534 #, c-format
535 msgid "Available stat points: %d"
536 msgstr ""
537
538 #: ../../../src/MenuCharacter.cpp:353
539 #, c-format
540 msgid "Reduces the damage taken from \"%s\" elemental attacks."
541 msgstr ""
542
543 #: ../../../src/MenuCharacter.cpp:363 ../../../src/MenuManager.cpp:301
544 #, c-format
545 msgid "XP: %d"
546 msgstr "Experiencia: %d"
547
548 #: ../../../src/MenuCharacter.cpp:365
549 #, c-format
550 msgid "Next: %d"
551 msgstr "Seguinte nivel: %d"
552
553 #: ../../../src/MenuCharacter.cpp:371
554 #, c-format
555 msgid "base (%d), bonus (%d)"
556 msgstr "Base: %d. Bonificación: %d."
557
558 #: ../../../src/MenuCharacter.cpp:379 ../../../src/MenuCharacter.cpp:393
559 msgid "Related stats:"
560 msgstr ""
561
562 #: ../../../src/MenuCharacter.cpp:419 ../../../src/MenuCharacter.cpp:443
563 #, c-format
564 msgid "Each level grants %d."
565 msgstr ""
566
567 #: ../../../src/MenuCharacter.cpp:423 ../../../src/MenuCharacter.cpp:447
568 #, c-format
569 msgid "Each point of %s grants %d."
570 msgstr ""
571
572 #: ../../../src/MenuConfig.cpp:122 ../../../src/MenuConfig.cpp:1171
573 msgid "Clear"
574 msgstr "Baleirar"
575
576 #: ../../../src/MenuConfig.cpp:122 ../../../src/MenuConfig.cpp:1169
577 msgid "Assign:"
578 msgstr ""
579
580 #: ../../../src/MenuConfig.cpp:123 ../../../src/MenuConfig.cpp:245
134581 msgid "Defaults"
135582 msgstr "Restablecer"
136583
137 #: ../../../src/GameStateConfigBase.cpp:89
584 #: ../../../src/MenuConfig.cpp:123
138585 msgid "Reset ALL settings?"
139586 msgstr "Volver á configuración inicial?"
140587
141 #: ../../../src/GameStateConfigBase.cpp:109 ../../../src/MenuNumPicker.cpp:49
588 #: ../../../src/MenuConfig.cpp:244 ../../../src/MenuNumPicker.cpp:49
142589 msgid "OK"
143590 msgstr "Aceptar"
144591
145 #: ../../../src/GameStateConfigBase.cpp:111 ../../../src/GameStateNew.cpp:65
146 #: ../../../src/InputState.cpp:401
147 msgid "Cancel"
148 msgstr "Cancelar"
149
150 #: ../../../src/GameStateConfigBase.cpp:160
151 #: ../../../src/GameStateConfigDesktop.cpp:130
592 #: ../../../src/MenuConfig.cpp:248 ../../../src/MenuGameOver.cpp:72
593 msgid "Continue"
594 msgstr ""
595
596 #: ../../../src/MenuConfig.cpp:250
597 msgid "Save Game"
598 msgstr ""
599
600 #: ../../../src/MenuConfig.cpp:293
601 msgid "Default"
602 msgstr ""
603
604 #: ../../../src/MenuConfig.cpp:293
605 msgid ""
606 "Show all loot tooltips, except for those that would be obscured by the "
607 "player or an enemy. Temporarily show all loot tooltips with 'Alt'."
608 msgstr ""
609
610 #: ../../../src/MenuConfig.cpp:294
611 msgid "Show all"
612 msgstr ""
613
614 #: ../../../src/MenuConfig.cpp:294
615 msgid ""
616 "Always show loot tooltips. Temporarily hide all loot tooltips with 'Alt'."
617 msgstr ""
618
619 #: ../../../src/MenuConfig.cpp:295 ../../../src/MenuConfig.cpp:300
620 msgid "Hidden"
621 msgstr ""
622
623 #: ../../../src/MenuConfig.cpp:295
624 msgid ""
625 "Always hide loot tooltips, except for when a piece of loot is hovered with "
626 "the mouse cursor. Temporarily show all loot tooltips with 'Alt'."
627 msgstr ""
628
629 #: ../../../src/MenuConfig.cpp:298
630 msgid "Visible"
631 msgstr ""
632
633 #: ../../../src/MenuConfig.cpp:299
634 msgid "Visible (2x zoom)"
635 msgstr ""
636
637 #: ../../../src/MenuConfig.cpp:303
638 msgid ""
639 "Controls the type of warning to be activated when the player is below the "
640 "low health threshold."
641 msgstr ""
642
643 #: ../../../src/MenuConfig.cpp:304
644 msgid "- Display a message"
645 msgstr ""
646
647 #: ../../../src/MenuConfig.cpp:305
648 msgid "- Play a sound"
649 msgstr ""
650
651 #: ../../../src/MenuConfig.cpp:306
652 msgid "- Change the cursor"
653 msgstr ""
654
655 #: ../../../src/MenuConfig.cpp:308
656 msgid "Disabled"
657 msgstr ""
658
659 #: ../../../src/MenuConfig.cpp:309
660 msgid "All"
661 msgstr ""
662
663 #: ../../../src/MenuConfig.cpp:310
664 msgid "Message & Cursor"
665 msgstr ""
666
667 #: ../../../src/MenuConfig.cpp:311
668 msgid "Message & Sound"
669 msgstr ""
670
671 #: ../../../src/MenuConfig.cpp:312
672 msgid "Sound & Cursor"
673 msgstr ""
674
675 #: ../../../src/MenuConfig.cpp:313
676 msgid "Message"
677 msgstr ""
678
679 #: ../../../src/MenuConfig.cpp:314
680 msgid "Cursor"
681 msgstr ""
682
683 #: ../../../src/MenuConfig.cpp:315
684 msgid "Sound"
685 msgstr ""
686
687 #: ../../../src/MenuConfig.cpp:321
688 msgid ""
689 "When the player's health drops below the given threshold, the low health "
690 "notifications are triggered if one or more of them is enabled."
691 msgstr ""
692
693 #: ../../../src/MenuConfig.cpp:334 ../../../src/MenuConfig.cpp:1587
694 #: ../../../src/MenuGameOver.cpp:116
695 msgid "Exit"
696 msgstr "Volver ao menú"
697
698 #: ../../../src/MenuConfig.cpp:335
699 msgid "Video"
700 msgstr "Vídeo"
701
702 #: ../../../src/MenuConfig.cpp:336
152703 msgid "Audio"
153704 msgstr "Son"
154705
155 #: ../../../src/GameStateConfigBase.cpp:161
156 #: ../../../src/GameStateConfigDesktop.cpp:131
706 #: ../../../src/MenuConfig.cpp:337
157707 msgid "Interface"
158708 msgstr "Interface"
159709
160 #: ../../../src/GameStateConfigBase.cpp:162
161 #: ../../../src/GameStateConfigDesktop.cpp:134
710 #: ../../../src/MenuConfig.cpp:338
711 msgid "Input"
712 msgstr "Entrada"
713
714 #: ../../../src/MenuConfig.cpp:339
715 msgid "Keybindings"
716 msgstr "Controis"
717
718 #: ../../../src/MenuConfig.cpp:340
162719 msgid "Mods"
163720 msgstr "Mods"
164721
165 #: ../../../src/GameStateConfigBase.cpp:249 ../../../src/MenuExit.cpp:72
722 #: ../../../src/MenuConfig.cpp:352
723 msgid "Paused"
724 msgstr ""
725
726 #: ../../../src/MenuConfig.cpp:355
727 msgid "Time Played"
728 msgstr ""
729
730 #: ../../../src/MenuConfig.cpp:361
731 msgid "Renderer"
732 msgstr ""
733
734 #: ../../../src/MenuConfig.cpp:362
735 msgid "Full Screen Mode"
736 msgstr "Pantalla completa:"
737
738 #: ../../../src/MenuConfig.cpp:363
739 msgid "Hardware surfaces"
740 msgstr "Superficies por hardware:"
741
742 #: ../../../src/MenuConfig.cpp:364
743 msgid "V-Sync"
744 msgstr ""
745
746 #: ../../../src/MenuConfig.cpp:365
747 msgid "Texture Filtering"
748 msgstr ""
749
750 #: ../../../src/MenuConfig.cpp:366
751 msgid "DPI scaling"
752 msgstr ""
753
754 #: ../../../src/MenuConfig.cpp:367
755 msgid "Parallax Layers"
756 msgstr ""
757
758 #: ../../../src/MenuConfig.cpp:368
759 msgid "Allow changing gamma"
760 msgstr "Permitir cambiar o gamma:"
761
762 #: ../../../src/MenuConfig.cpp:369
763 msgid "Gamma"
764 msgstr "Gamma:"
765
766 #: ../../../src/MenuConfig.cpp:371
767 msgid "Sound Volume"
768 msgstr "Volume dos sons:"
769
770 #: ../../../src/MenuConfig.cpp:372
166771 msgid "Music Volume"
167772 msgstr "Volume da música:"
168773
169 #: ../../../src/GameStateConfigBase.cpp:253 ../../../src/MenuExit.cpp:77
170 msgid "Sound Volume"
171 msgstr "Volume dos sons:"
172
173 #: ../../../src/GameStateConfigBase.cpp:257
774 #: ../../../src/MenuConfig.cpp:374
174775 msgid "Language"
175776 msgstr "Idioma:"
176777
177 #: ../../../src/GameStateConfigBase.cpp:266
778 #: ../../../src/MenuConfig.cpp:375
178779 msgid "Show FPS"
179780 msgstr "Mostrar os FPS:"
180781
181 #: ../../../src/GameStateConfigBase.cpp:270
782 #: ../../../src/MenuConfig.cpp:376
783 msgid "Hardware mouse cursor"
784 msgstr "Cursor do rato por hardware:"
785
786 #: ../../../src/MenuConfig.cpp:377
182787 msgid "Colorblind Mode"
183788 msgstr "Modo daltónico:"
184789
185 #: ../../../src/GameStateConfigBase.cpp:274
186 msgid "Hardware mouse cursor"
187 msgstr "Cursor do rato por hardware:"
188
189 #: ../../../src/GameStateConfigBase.cpp:278
790 #: ../../../src/MenuConfig.cpp:378
190791 msgid "Developer Mode"
191792 msgstr "Modo de desenvolvedor"
192793
193 #: ../../../src/GameStateConfigBase.cpp:282
794 #: ../../../src/MenuConfig.cpp:379
194795 msgid "Subtitles"
195796 msgstr ""
196797
197 #: ../../../src/GameStateConfigBase.cpp:286
198 msgid "Active Mods"
199 msgstr "Mods activos:"
200
201 #: ../../../src/GameStateConfigBase.cpp:295
202 msgid "Available Mods"
203 msgstr "Mods dispoñíbeis:"
204
205 #: ../../../src/GameStateConfigBase.cpp:314
206 msgid "<< Disable"
207 msgstr "← Desactivar"
208
209 #: ../../../src/GameStateConfigBase.cpp:320
210 msgid "Enable >>"
211 msgstr "Activar →"
212
213 #: ../../../src/GameStateConfigBase.cpp:873
214 msgid "Version:"
215 msgstr ""
216
217 #: ../../../src/GameStateConfigBase.cpp:878
218 msgid "Game:"
219 msgstr ""
220
221 #: ../../../src/GameStateConfigBase.cpp:883
222 msgid "Engine version:"
223 msgstr ""
224
225 #: ../../../src/GameStateConfigBase.cpp:891
226 msgid "Requires mods:"
227 msgstr ""
228
229 #: ../../../src/GameStateConfigDesktop.cpp:83
230 #: ../../../src/GameStateConfigDesktop.cpp:751
231 msgid "Clear"
232 msgstr "Baleirar"
233
234 #: ../../../src/GameStateConfigDesktop.cpp:83
235 #: ../../../src/GameStateConfigDesktop.cpp:749
236 msgid "Assign:"
237 msgstr ""
238
239 #: ../../../src/GameStateConfigDesktop.cpp:128
240 msgid "Video"
241 msgstr "Vídeo"
242
243 #: ../../../src/GameStateConfigDesktop.cpp:132
244 msgid "Input"
245 msgstr "Entrada"
246
247 #: ../../../src/GameStateConfigDesktop.cpp:133
248 msgid "Keybindings"
249 msgstr "Controis"
250
251 #: ../../../src/GameStateConfigDesktop.cpp:188
798 #: ../../../src/MenuConfig.cpp:380
799 msgid "Loot tooltip visibility"
800 msgstr ""
801
802 #: ../../../src/MenuConfig.cpp:381
803 msgid "Mini-map mode"
804 msgstr ""
805
806 #: ../../../src/MenuConfig.cpp:382
807 msgid "Always show stat bar labels"
808 msgstr ""
809
810 #: ../../../src/MenuConfig.cpp:383
811 msgid "Allow stat bar auto-hiding"
812 msgstr ""
813
814 #: ../../../src/MenuConfig.cpp:384
815 msgid "Show combat text"
816 msgstr "Mostrar texto de combate:"
817
818 #: ../../../src/MenuConfig.cpp:385
819 msgid "Automatically equip items"
820 msgstr ""
821
822 #: ../../../src/MenuConfig.cpp:386
823 msgid "Show hidden entity markers"
824 msgstr ""
825
826 #: ../../../src/MenuConfig.cpp:387
827 msgid "Low health notification"
828 msgstr ""
829
830 #: ../../../src/MenuConfig.cpp:388
831 msgid "Low health threshold"
832 msgstr ""
833
834 #: ../../../src/MenuConfig.cpp:389
835 msgid "Show item comparison tooltips"
836 msgstr ""
837
838 #: ../../../src/MenuConfig.cpp:392 ../../../src/MenuMovementType.cpp:94
839 #: ../../../src/MenuMovementType.cpp:131
840 msgid "Joystick"
841 msgstr "Mando:"
842
843 #: ../../../src/MenuConfig.cpp:393
844 msgid "Move hero using mouse"
845 msgstr "Mover a personaxe co cursor:"
846
847 #: ../../../src/MenuConfig.cpp:394
848 msgid "Mouse aim"
849 msgstr "Apuntar co rato:"
850
851 #: ../../../src/MenuConfig.cpp:395
852 msgid "Do not use mouse"
853 msgstr "Non usar o rato:"
854
855 #: ../../../src/MenuConfig.cpp:396
856 msgid "Swap mouse movement button"
857 msgstr ""
858
859 #: ../../../src/MenuConfig.cpp:397
860 msgid "Attack with mouse movement"
861 msgstr ""
862
863 #: ../../../src/MenuConfig.cpp:398
864 msgid "Joystick Deadzone"
865 msgstr "Límite do mando"
866
867 #: ../../../src/MenuConfig.cpp:408
868 #, c-format
869 msgid "Primary binding: %s"
870 msgstr ""
871
872 #: ../../../src/MenuConfig.cpp:409
873 #, c-format
874 msgid "Alternate binding: %s"
875 msgstr ""
876
877 #: ../../../src/MenuConfig.cpp:410
878 #, c-format
879 msgid "Joystick binding: %s"
880 msgstr ""
881
882 #: ../../../src/MenuConfig.cpp:511
252883 msgid ""
253884 "Will try to store surfaces in video memory versus system memory. The effect "
254885 "this has on performance depends on the renderer."
255886 msgstr ""
256887
257 #: ../../../src/GameStateConfigDesktop.cpp:189
888 #: ../../../src/MenuConfig.cpp:512
258889 msgid ""
259890 "Prevents screen tearing. Disable if you experience \"stuttering\" in "
260891 "windowed mode or input lag."
261892 msgstr ""
262893
263 #: ../../../src/GameStateConfigDesktop.cpp:190
894 #: ../../../src/MenuConfig.cpp:513
264895 msgid ""
265896 "When enabled, this uses the screen DPI in addition to the window dimensions "
266897 "to scale the rendering resolution. Otherwise, only the window dimensions are"
267898 " used."
268899 msgstr ""
269900
270 #: ../../../src/GameStateConfigDesktop.cpp:191
901 #: ../../../src/MenuConfig.cpp:514
271902 msgid ""
272903 "This enables parallax (non-tile) layers. Disabling this setting can improve "
273904 "performance in some cases."
274905 msgstr ""
275906
276 #: ../../../src/GameStateConfigDesktop.cpp:192
277 msgid "Experimental"
278 msgstr "Experimental."
279
280 #: ../../../src/GameStateConfigDesktop.cpp:193
281 msgid "For handheld devices"
282 msgstr "Para dispositivos móbiles."
283
284 #: ../../../src/GameStateConfigDesktop.cpp:211
285 msgid "Renderer"
286 msgstr ""
287
288 #: ../../../src/GameStateConfigDesktop.cpp:227
289 msgid "Full Screen Mode"
290 msgstr "Pantalla completa:"
291
292 #: ../../../src/GameStateConfigDesktop.cpp:231
293 msgid "Move hero using mouse"
294 msgstr "Mover a personaxe co cursor:"
295
296 #: ../../../src/GameStateConfigDesktop.cpp:235
297 msgid "Hardware surfaces"
298 msgstr "Superficies por hardware:"
299
300 #: ../../../src/GameStateConfigDesktop.cpp:239
301 msgid "V-Sync"
302 msgstr ""
303
304 #: ../../../src/GameStateConfigDesktop.cpp:243
305 msgid "Texture Filtering"
306 msgstr ""
307
308 #: ../../../src/GameStateConfigDesktop.cpp:247
309 msgid "DPI scaling"
310 msgstr ""
311
312 #: ../../../src/GameStateConfigDesktop.cpp:251
313 msgid "Parallax Layers"
314 msgstr ""
315
316 #: ../../../src/GameStateConfigDesktop.cpp:255
317 msgid "Allow changing gamma"
318 msgstr "Permitir cambiar o gamma:"
319
320 #: ../../../src/GameStateConfigDesktop.cpp:259
321 msgid "Gamma"
322 msgstr "Gamma:"
323
324 #: ../../../src/GameStateConfigDesktop.cpp:263
325 msgid "Use joystick"
326 msgstr "Empregar un mando:"
327
328 #: ../../../src/GameStateConfigDesktop.cpp:267
329 msgid "Joystick"
330 msgstr "Mando:"
331
332 #: ../../../src/GameStateConfigDesktop.cpp:283
333 msgid "Mouse aim"
334 msgstr "Apuntar co rato:"
335
336 #: ../../../src/GameStateConfigDesktop.cpp:287
337 msgid "Do not use mouse"
338 msgstr "Non usar o rato:"
339
340 #: ../../../src/GameStateConfigDesktop.cpp:291
341 msgid "Joystick Deadzone"
342 msgstr "Límite do mando"
343
344 #: ../../../src/GameState.cpp:37 ../../../src/GameState.cpp:58
345 msgid "Loading..."
346 msgstr "Cargando…"
347
348 #: ../../../src/GameStateLoad.cpp:88 ../../../src/GameStateLoad.cpp:101
349 msgid "Delete Save"
350 msgstr "Borrar a partida"
351
352 #: ../../../src/GameStateLoad.cpp:88
353 msgid "Delete this save?"
354 msgstr "Estás seguro?"
355
356 #: ../../../src/GameStateLoad.cpp:90
357 msgid "Exit to Title"
358 msgstr "Menú principal"
359
360 #: ../../../src/GameStateLoad.cpp:93
361 msgid "New Game"
362 msgstr "Nova partida"
363
364 #: ../../../src/GameStateLoad.cpp:97 ../../../src/GameStateLoad.cpp:600
365 msgid "Choose a Slot"
366 msgstr "Escolla un espazo"
367
368 #: ../../../src/GameStateLoad.cpp:573 ../../../src/GameStateLoad.cpp:594
369 msgid "Enable a story mod to continue"
370 msgstr "Activa unha modificación de historia para continuar."
371
372 #: ../../../src/GameStateLoad.cpp:589
373 msgid "Load Game"
374 msgstr "Cargar a partida"
375
376 #: ../../../src/GameStateLoad.cpp:695
377 msgid "Entering game world..."
378 msgstr "Cargando o mundo…"
379
380 #: ../../../src/GameStateLoad.cpp:698
381 msgid "Loading saved game..."
382 msgstr "Cargando a partida..."
383
384 #: ../../../src/GameStateLoad.cpp:731
385 msgid "Invalid save"
386 msgstr ""
387
388 #: ../../../src/GameStateLoad.cpp:755 ../../../src/ItemManager.cpp:747
389 #: ../../../src/MenuPowers.cpp:778 ../../../src/MenuPowers.cpp:1144
390 #: ../../../src/MenuPowers.cpp:1542
391 #, c-format
392 msgid "Level %d"
393 msgstr "Nivel %d"
394
395 #: ../../../src/GameStateNew.cpp:68
396 msgid "Create"
397 msgstr "Crear"
398
399 #: ../../../src/GameStateNew.cpp:76
400 msgid "Randomize"
401 msgstr ""
402
403 #: ../../../src/GameStateNew.cpp:92
404 msgid "Choose a Portrait"
405 msgstr "Retrato:"
406
407 #: ../../../src/GameStateNew.cpp:96
408 msgid "Choose a Name"
409 msgstr "Nome:"
410
411 #: ../../../src/GameStateNew.cpp:100
412 msgid "Permadeath?"
413 msgstr "Perder a partida ao morrer."
414
415 #: ../../../src/GameStateNew.cpp:104
416 msgid "Choose a Class"
417 msgstr "Clase:"
418
419 #: ../../../src/GameStateTitle.cpp:108
420 msgid "Play Game"
421 msgstr "Xogar"
422
423 #: ../../../src/GameStateTitle.cpp:111
424 msgid "Enable a core mod to continue"
425 msgstr "Activa unha modificación base para continuar."
426
427 #: ../../../src/GameStateTitle.cpp:115
428 msgid "Configuration"
429 msgstr "Configuración"
430
431 #: ../../../src/GameStateTitle.cpp:118
432 msgid "Credits"
433 msgstr "Autores"
434
435 #: ../../../src/GameStateTitle.cpp:121
436 msgid "Exit Game"
437 msgstr "Saír"
438
439 #: ../../../src/InputState.cpp:402
440 msgid "Accept"
441 msgstr "Aceptar"
442
443 #: ../../../src/InputState.cpp:403 ../../../src/SDLInputState.cpp:607
444 msgid "Up"
445 msgstr "Arriba"
446
447 #: ../../../src/InputState.cpp:404 ../../../src/SDLInputState.cpp:585
448 msgid "Down"
449 msgstr "Abaixo"
450
451 #: ../../../src/InputState.cpp:405 ../../../src/SDLInputState.cpp:592
452 msgid "Left"
453 msgstr "Esquerda"
454
455 #: ../../../src/InputState.cpp:406 ../../../src/SDLInputState.cpp:602
456 msgid "Right"
457 msgstr "Dereita"
458
459 #: ../../../src/InputState.cpp:407
460 msgid "Bar1"
461 msgstr "Acción 1"
462
463 #: ../../../src/InputState.cpp:408
464 msgid "Bar2"
465 msgstr "Acción 2"
466
467 #: ../../../src/InputState.cpp:409
468 msgid "Bar3"
469 msgstr "Acción 3"
470
471 #: ../../../src/InputState.cpp:410
472 msgid "Bar4"
473 msgstr "Acción 4"
474
475 #: ../../../src/InputState.cpp:411
476 msgid "Bar5"
477 msgstr "Acción 5"
478
479 #: ../../../src/InputState.cpp:412
480 msgid "Bar6"
481 msgstr "Acción 6"
482
483 #: ../../../src/InputState.cpp:413
484 msgid "Bar7"
485 msgstr "Acción 7"
486
487 #: ../../../src/InputState.cpp:414
488 msgid "Bar8"
489 msgstr "Acción 8"
490
491 #: ../../../src/InputState.cpp:415
492 msgid "Bar9"
493 msgstr "Acción 9"
494
495 #: ../../../src/InputState.cpp:416
496 msgid "Bar0"
497 msgstr "Acción 0"
498
499 #: ../../../src/InputState.cpp:417 ../../../src/MenuActionBar.cpp:83
500 #: ../../../src/MenuCharacter.cpp:54
501 msgid "Character"
502 msgstr "Personaxe"
503
504 #: ../../../src/InputState.cpp:418 ../../../src/MenuActionBar.cpp:84
505 #: ../../../src/MenuInventory.cpp:137 ../../../src/MenuVendor.cpp:57
506 msgid "Inventory"
507 msgstr "Inventario"
508
509 #: ../../../src/InputState.cpp:419 ../../../src/MenuActionBar.cpp:85
510 #: ../../../src/MenuPowers.cpp:168
511 msgid "Powers"
512 msgstr "Habilidades"
513
514 #: ../../../src/InputState.cpp:420 ../../../src/MenuActionBar.cpp:86
515 #: ../../../src/MenuLog.cpp:72
516 msgid "Log"
517 msgstr "Rexistro"
518
519 #: ../../../src/InputState.cpp:421
520 msgid "Main1"
521 msgstr "Acción principal"
522
523 #: ../../../src/InputState.cpp:422
524 msgid "Main2"
525 msgstr "Acción secundaria"
526
527 #: ../../../src/InputState.cpp:423
528 msgid "Ctrl"
529 msgstr "Control"
530
531 #: ../../../src/InputState.cpp:424
532 msgid "Shift"
533 msgstr "Maiúsculas"
534
535 #: ../../../src/InputState.cpp:425
536 msgid "Alt"
537 msgstr ""
538
539 #: ../../../src/InputState.cpp:426 ../../../src/SDLInputState.cpp:584
540 msgid "Delete"
541 msgstr "Suprimir"
542
543 #: ../../../src/InputState.cpp:427
544 msgid "ActionBar Accept"
545 msgstr "Aceptar (barra de accións)"
546
547 #: ../../../src/InputState.cpp:428
548 msgid "ActionBar Left"
549 msgstr "Esquerda (barra de accións)"
550
551 #: ../../../src/InputState.cpp:429
552 msgid "ActionBar Right"
553 msgstr "Dereita (barra de accións)"
554
555 #: ../../../src/InputState.cpp:430
556 msgid "ActionBar Use"
557 msgstr "Usar (barra de accións)"
558
559 #: ../../../src/InputState.cpp:431
560 msgid "Developer Menu"
561 msgstr "Menú de desenvolvedor"
562
563 #: ../../../src/InputState.cpp:433
564 msgid "Left Mouse"
565 msgstr ""
566
567 #: ../../../src/InputState.cpp:434
568 msgid "Middle Mouse"
569 msgstr ""
570
571 #: ../../../src/InputState.cpp:435
572 msgid "Right Mouse"
573 msgstr ""
574
575 #: ../../../src/InputState.cpp:436
576 msgid "Wheel Up"
577 msgstr ""
578
579 #: ../../../src/InputState.cpp:437
580 msgid "Wheel Down"
581 msgstr ""
582
583 #: ../../../src/InputState.cpp:438
584 msgid "Mouse X1"
585 msgstr ""
586
587 #: ../../../src/InputState.cpp:439
588 msgid "Mouse X2"
589 msgstr ""
590
591 #: ../../../src/ItemManager.cpp:450 ../../../src/ItemManager.cpp:453
592 msgid "Unknown Item"
593 msgstr "Elemento descoñecido"
594
595 #: ../../../src/ItemManager.cpp:648 ../../../src/MenuPowers.cpp:887
596 #, c-format
597 msgid "%d%% Speed"
598 msgstr "%d%% velocidade"
599
600 #: ../../../src/ItemManager.cpp:652 ../../../src/MenuPowers.cpp:890
601 #, c-format
602 msgid "%d%% Attack Speed"
603 msgstr ""
604
605 #: ../../../src/ItemManager.cpp:674 ../../../src/MenuCharacter.cpp:354
606 #: ../../../src/MenuPowers.cpp:833
607 #, c-format
608 msgid "Resistance (%s)"
609 msgstr ""
610
611 #: ../../../src/ItemManager.cpp:684
612 #, c-format
613 msgid "Requires %s"
614 msgstr ""
615
616 #: ../../../src/ItemManager.cpp:733
617 msgid "Quest Item"
618 msgstr "Obxecto dunha misión"
619
620 #: ../../../src/ItemManager.cpp:760
621 #, c-format
622 msgid "Quality: %s"
623 msgstr "Calidade: %s"
624
625 #: ../../../src/ItemManager.cpp:785
626 #, c-format
627 msgid "Absorb: %d-%d"
628 msgstr "Absorción: %d-%d"
629
630 #: ../../../src/ItemManager.cpp:787
631 #, c-format
632 msgid "Absorb: %d"
633 msgstr "Absorción: %d"
634
635 #: ../../../src/ItemManager.cpp:827 ../../../src/MenuPowers.cpp:1131
636 #: ../../../src/MenuPowers.cpp:1134
637 #, c-format
638 msgid "Requires Level %d"
639 msgstr "Require o nivel %d."
640
641 #: ../../../src/ItemManager.cpp:838 ../../../src/MenuPowers.cpp:1123
642 #: ../../../src/MenuPowers.cpp:1125
643 #, c-format
644 msgid "Requires %s %d"
645 msgstr ""
646
647 #: ../../../src/ItemManager.cpp:849
648 #, c-format
649 msgid "Requires Class: %s"
650 msgstr "Require a clase «%s»."
651
652 #: ../../../src/ItemManager.cpp:864 ../../../src/ItemManager.cpp:876
653 #, c-format
654 msgid "Buy Price: %d %s"
655 msgstr "Prezo de compra: %d %s"
656
657 #: ../../../src/ItemManager.cpp:866 ../../../src/ItemManager.cpp:878
658 #, c-format
659 msgid "Buy Price: %d %s each"
660 msgstr "Prezo de compra: %d %s por unidade"
661
662 #: ../../../src/ItemManager.cpp:886
663 #, c-format
664 msgid "Sell Price: %d %s"
665 msgstr "Prezo de venda: %d %s"
666
667 #: ../../../src/ItemManager.cpp:888
668 #, c-format
669 msgid "Sell Price: %d %s each"
670 msgstr "Prezo de venda: %d %s por unidade"
671
672 #: ../../../src/ItemManager.cpp:897
673 msgid "Set:"
674 msgstr ""
675
676 #: ../../../src/ItemManager.cpp:904
677 #, c-format
678 msgid "%d items:"
679 msgstr ""
680
681 #: ../../../src/ItemManager.cpp:917
682 #, c-format
683 msgid "Press [%s] to use"
684 msgstr ""
685
686 #: ../../../src/ItemManager.cpp:920
687 #, c-format
688 msgid "Press [%s] to read"
689 msgstr ""
690
691 #: ../../../src/MenuActionBar.cpp:87
692 msgid "Loot tooltip visibility"
693 msgstr ""
694
695 #: ../../../src/MenuActionBar.cpp:88
696 msgid "Mini-map mode"
697 msgstr ""
698
699 #: ../../../src/MenuActionBar.cpp:89
700 msgid "Always show stat bar labels"
701 msgstr ""
702
703 #: ../../../src/MenuActionBar.cpp:90
704 msgid "Show combat text"
705 msgstr "Mostrar texto de combate:"
706
707 #: ../../../src/MenuActionBar.cpp:254 ../../../src/MenuActionBar.cpp:261
708 #: ../../../src/MenuActionBar.cpp:264 ../../../src/MenuActionBar.cpp:271
709 #, c-format
710 msgid "Hotkey: %s"
711 msgstr ""
712
713 #: ../../../src/MenuActionBar.cpp:474
714 #, c-format
715 msgid "Default. Temporarily show all loot tooltips with '%s'."
716 msgstr ""
717
718 #: ../../../src/MenuActionBar.cpp:476
719 #, c-format
720 msgid "Show All. Temporarily hide all loot tooltips with '%s'."
721 msgstr ""
722
723 #: ../../../src/MenuActionBar.cpp:478
724 #, c-format
725 msgid "Hide All. Temporarily show all loot tooltips with '%s'."
726 msgstr ""
727
728 #: ../../../src/MenuActionBar.cpp:482
729 msgid "Visible"
730 msgstr ""
731
732 #: ../../../src/MenuActionBar.cpp:484
733 msgid "Visible (2x zoom)"
734 msgstr ""
735
736 #: ../../../src/MenuActionBar.cpp:486
737 msgid "Hidden"
738 msgstr ""
739
740 #: ../../../src/MenuActionBar.cpp:490 ../../../src/MenuActionBar.cpp:496
741 msgid "Enabled"
742 msgstr ""
743
744 #: ../../../src/MenuActionBar.cpp:492 ../../../src/MenuActionBar.cpp:498
745 msgid "Disabled"
746 msgstr ""
747
748 #: ../../../src/MenuActionBar.cpp:657
749 msgid "Not enough MP."
750 msgstr ""
751
752 #: ../../../src/MenuActiveEffects.cpp:124
753 #, c-format
754 msgid "x%d"
755 msgstr ""
756
757 #: ../../../src/MenuActiveEffects.cpp:219
758 msgid "Remaining:"
759 msgstr ""
760
761 #: ../../../src/MenuActiveEffects.cpp:225
762 #, c-format
763 msgid "x%d stacks"
764 msgstr ""
765
766 #: ../../../src/MenuCharacter.cpp:73 ../../../src/MenuCharacter.cpp:78
767 msgid "Name"
768 msgstr "Nome"
769
770 #: ../../../src/MenuCharacter.cpp:74 ../../../src/MenuCharacter.cpp:79
771 msgid "Level"
772 msgstr "Nivel"
773
774 #: ../../../src/MenuCharacter.cpp:310
775 #, c-format
776 msgid "%d unspent stat point"
777 msgstr ""
778
779 #: ../../../src/MenuCharacter.cpp:313
780 #, c-format
781 msgid "%d unspent stat points"
782 msgstr ""
783
784 #: ../../../src/MenuCharacter.cpp:355
785 #, c-format
786 msgid "Reduces the damage taken from \"%s\" elemental attacks."
787 msgstr ""
788
789 #: ../../../src/MenuCharacter.cpp:365 ../../../src/MenuManager.cpp:283
790 #, c-format
791 msgid "XP: %d"
792 msgstr "Experiencia: %d"
793
794 #: ../../../src/MenuCharacter.cpp:367
795 #, c-format
796 msgid "Next: %d"
797 msgstr "Seguinte nivel: %d"
798
799 #: ../../../src/MenuCharacter.cpp:373
800 #, c-format
801 msgid "base (%d), bonus (%d)"
802 msgstr "Base: %d. Bonificación: %d."
803
804 #: ../../../src/MenuCharacter.cpp:381 ../../../src/MenuCharacter.cpp:395
805 msgid "Related stats:"
806 msgstr ""
807
808 #: ../../../src/MenuCharacter.cpp:421 ../../../src/MenuCharacter.cpp:445
809 #, c-format
810 msgid "Each level grants %d."
811 msgstr ""
812
813 #: ../../../src/MenuCharacter.cpp:425 ../../../src/MenuCharacter.cpp:449
814 #, c-format
815 msgid "Each point of %s grants %d."
816 msgstr ""
817
818 #: ../../../src/MenuDevConsole.cpp:63
907 #: ../../../src/MenuConfig.cpp:515
908 msgid ""
909 "Enables the below setting that controls the screen gamma level. The behavior"
910 " of the gamma setting can vary between platforms."
911 msgstr ""
912
913 #: ../../../src/MenuConfig.cpp:516
914 msgid ""
915 "Provides additional text for information that is primarily conveyed through "
916 "color."
917 msgstr ""
918
919 #: ../../../src/MenuConfig.cpp:517
920 msgid ""
921 "Some mods will automatically hide the stat bars when they are inactive. "
922 "Disabling this option will keep them displayed at all times."
923 msgstr ""
924
925 #: ../../../src/MenuConfig.cpp:518
926 msgid ""
927 "When enabled, empty equipment slots will be filled with applicable items "
928 "when they are obtained."
929 msgstr ""
930
931 #: ../../../src/MenuConfig.cpp:519
932 msgid ""
933 "Shows a marker above enemies, allies, and the player when they are obscured "
934 "by tall objects."
935 msgstr ""
936
937 #: ../../../src/MenuConfig.cpp:520
938 msgid ""
939 "When enabled, tooltips for equipped items of the same type are shown next to"
940 " standard item tooltips."
941 msgstr ""
942
943 #: ../../../src/MenuConfig.cpp:521
944 msgid ""
945 "This allows the game to be controlled entirely with the keyboard (or "
946 "joystick)."
947 msgstr ""
948
949 #: ../../../src/MenuConfig.cpp:522
950 msgid ""
951 "When 'Move hero using mouse' is enabled, this setting controls if 'Main1' or"
952 " 'Main2' is used to move the hero. If enabled, 'Main2' will move the hero "
953 "instead of 'Main1'."
954 msgstr ""
955
956 #: ../../../src/MenuConfig.cpp:523
957 msgid ""
958 "When 'Move hero using mouse' is enabled, this setting controls if the Power "
959 "assigned to the movement button can be used by targeting an enemy. If this "
960 "setting is disabled, it is required to use 'Shift' to access the Power "
961 "assigned to the movement button."
962 msgstr ""
963
964 #: ../../../src/MenuConfig.cpp:524
965 msgid ""
966 "The player's attacks will be aimed in the direction of the mouse cursor when"
967 " this is enabled."
968 msgstr ""
969
970 #: ../../../src/MenuConfig.cpp:575
971 msgid "Active Mods"
972 msgstr "Mods activos:"
973
974 #: ../../../src/MenuConfig.cpp:584
975 msgid "Available Mods"
976 msgstr "Mods dispoñíbeis:"
977
978 #: ../../../src/MenuConfig.cpp:603
979 msgid "<< Disable"
980 msgstr "← Desactivar"
981
982 #: ../../../src/MenuConfig.cpp:609
983 msgid "Enable >>"
984 msgstr "Activar →"
985
986 #: ../../../src/MenuConfig.cpp:1444
987 msgid "Version:"
988 msgstr ""
989
990 #: ../../../src/MenuConfig.cpp:1449
991 msgid "Game:"
992 msgstr ""
993
994 #: ../../../src/MenuConfig.cpp:1454
995 msgid "Engine version:"
996 msgstr ""
997
998 #: ../../../src/MenuConfig.cpp:1462
999 msgid "Requires mods:"
1000 msgstr ""
1001
1002 #: ../../../src/MenuConfig.cpp:1570 ../../../src/SDLInputState.cpp:748
1003 msgid "(none)"
1004 msgstr "(ningún)"
1005
1006 #: ../../../src/MenuConfig.cpp:1587 ../../../src/MenuGameOver.cpp:73
1007 msgid "Save & Exit"
1008 msgstr "Gardar e saír"
1009
1010 #: ../../../src/MenuDevConsole.cpp:65
8191011 msgid "Execute"
8201012 msgstr "Executar"
8211013
822 #: ../../../src/MenuDevConsole.cpp:101 ../../../src/MenuDevConsole.cpp:151
1014 #: ../../../src/MenuDevConsole.cpp:103 ../../../src/MenuDevConsole.cpp:153
8231015 msgid "Developer Console"
8241016 msgstr "Consola de desenvolvedor"
8251017
826 #: ../../../src/MenuDevConsole.cpp:141
1018 #: ../../../src/MenuDevConsole.cpp:143
8271019 #, c-format
8281020 msgid "Use '%s' to inspect with the cursor."
8291021 msgstr ""
8301022
831 #: ../../../src/MenuDevConsole.cpp:146
1023 #: ../../../src/MenuDevConsole.cpp:148
8321024 msgid "Arguments with spaces should be enclosed with double quotes. Example:"
8331025 msgstr ""
8341026
835 #: ../../../src/MenuDevConsole.cpp:147
1027 #: ../../../src/MenuDevConsole.cpp:149
8361028 msgid "Type 'help' to get a list of commands."
8371029 msgstr ""
8381030
839 #: ../../../src/MenuDevConsole.cpp:209 ../../../src/MenuDevConsole.cpp:213
1031 #: ../../../src/MenuDevConsole.cpp:211 ../../../src/MenuDevConsole.cpp:215
8401032 msgid "px"
8411033 msgstr ""
8421034
843 #: ../../../src/MenuDevConsole.cpp:224
1035 #: ../../../src/MenuDevConsole.cpp:226
8441036 msgid "Distance"
8451037 msgstr ""
8461038
847 #: ../../../src/MenuDevConsole.cpp:239 ../../../src/MenuDevConsole.cpp:286
1039 #: ../../../src/MenuDevConsole.cpp:241 ../../../src/MenuDevConsole.cpp:289
1040 #: ../../../src/MenuDevConsole.cpp:303
8481041 msgid "Entity"
8491042 msgstr ""
8501043
851 #: ../../../src/MenuDevConsole.cpp:261 ../../../src/MenuDevConsole.cpp:268
1044 #: ../../../src/MenuDevConsole.cpp:263 ../../../src/MenuDevConsole.cpp:270
8521045 msgid "none"
8531046 msgstr ""
8541047
855 #: ../../../src/MenuDevConsole.cpp:262 ../../../src/MenuDevConsole.cpp:264
1048 #: ../../../src/MenuDevConsole.cpp:264 ../../../src/MenuDevConsole.cpp:266
8561049 msgid "wall"
8571050 msgstr ""
8581051
859 #: ../../../src/MenuDevConsole.cpp:263 ../../../src/MenuDevConsole.cpp:265
1052 #: ../../../src/MenuDevConsole.cpp:265 ../../../src/MenuDevConsole.cpp:267
8601053 msgid "short wall / pit"
8611054 msgstr ""
8621055
863 #: ../../../src/MenuDevConsole.cpp:266
1056 #: ../../../src/MenuDevConsole.cpp:268
8641057 msgid "entity"
8651058 msgstr ""
8661059
867 #: ../../../src/MenuDevConsole.cpp:267
1060 #: ../../../src/MenuDevConsole.cpp:269
8681061 msgid "entity, ally"
8691062 msgstr ""
8701063
871 #: ../../../src/MenuDevConsole.cpp:274
1064 #: ../../../src/MenuDevConsole.cpp:276
8721065 msgid "Tile"
8731066 msgstr ""
8741067
875 #: ../../../src/MenuDevConsole.cpp:360
1068 #: ../../../src/MenuDevConsole.cpp:377
8761069 msgid "adds a power to the action bar"
8771070 msgstr ""
8781071
879 #: ../../../src/MenuDevConsole.cpp:361
1072 #: ../../../src/MenuDevConsole.cpp:378
8801073 msgid "turns on/off the display of the FPS counter"
8811074 msgstr ""
8821075
883 #: ../../../src/MenuDevConsole.cpp:362
1076 #: ../../../src/MenuDevConsole.cpp:379
8841077 msgid "turns on/off all of the HUD elements"
8851078 msgstr ""
8861079
887 #: ../../../src/MenuDevConsole.cpp:363
1080 #: ../../../src/MenuDevConsole.cpp:380
8881081 msgid "turns on/off the developer hud"
8891082 msgstr "Activa ou desactiva a interface do desenvolvedor."
8901083
891 #: ../../../src/MenuDevConsole.cpp:364
1084 #: ../../../src/MenuDevConsole.cpp:381
8921085 msgid ""
8931086 "Prints a list of powers that match a search term. No search term will list "
8941087 "all items"
8951088 msgstr ""
8961089
897 #: ../../../src/MenuDevConsole.cpp:365
1090 #: ../../../src/MenuDevConsole.cpp:382
8981091 msgid "Prints out all the map filenames located in the \"maps/\" directory."
8991092 msgstr ""
9001093
901 #: ../../../src/MenuDevConsole.cpp:366
1094 #: ../../../src/MenuDevConsole.cpp:383
9021095 msgid ""
9031096 "Prints out the active campaign statuses that match a search term. No search "
9041097 "term will list all active statuses"
9051098 msgstr ""
9061099
907 #: ../../../src/MenuDevConsole.cpp:367
1100 #: ../../../src/MenuDevConsole.cpp:384
9081101 msgid ""
9091102 "Prints a list of items that match a search term. No search term will list "
9101103 "all items"
9111104 msgstr ""
9121105
913 #: ../../../src/MenuDevConsole.cpp:368
1106 #: ../../../src/MenuDevConsole.cpp:385
9141107 msgid ""
9151108 "parses a series of event components and executes them as a single event"
9161109 msgstr ""
9171110
918 #: ../../../src/MenuDevConsole.cpp:369
1111 #: ../../../src/MenuDevConsole.cpp:386
9191112 msgid "clears the command history"
9201113 msgstr "Baleira o historial de ordes."
9211114
922 #: ../../../src/MenuDevConsole.cpp:370
1115 #: ../../../src/MenuDevConsole.cpp:387
9231116 msgid "displays this text"
9241117 msgstr "Mostra este texto."
9251118
926 #: ../../../src/MenuDevConsole.cpp:377
1119 #: ../../../src/MenuDevConsole.cpp:394
9271120 msgid "Toggled the developer hud"
9281121 msgstr "Activou ou desactivou a interface de desenvolvedor."
9291122
930 #: ../../../src/MenuDevConsole.cpp:381
1123 #: ../../../src/MenuDevConsole.cpp:398
9311124 msgid "Toggled the hud"
9321125 msgstr ""
9331126
934 #: ../../../src/MenuDevConsole.cpp:385
1127 #: ../../../src/MenuDevConsole.cpp:402
9351128 msgid "Toggled the FPS counter"
9361129 msgstr ""
9371130
938 #: ../../../src/MenuDevConsole.cpp:534
1131 #: ../../../src/MenuDevConsole.cpp:552
9391132 msgid "ERROR: Incorrect number of arguments"
9401133 msgstr ""
9411134
942 #: ../../../src/MenuDevConsole.cpp:536 ../../../src/MenuDevConsole.cpp:564
1135 #: ../../../src/MenuDevConsole.cpp:554 ../../../src/MenuDevConsole.cpp:582
9431136 msgid "HINT:"
9441137 msgstr ""
9451138
946 #: ../../../src/MenuDevConsole.cpp:536
1139 #: ../../../src/MenuDevConsole.cpp:554
9471140 msgid "<id>"
9481141 msgstr ""
9491142
950 #: ../../../src/MenuDevConsole.cpp:552
1143 #: ../../../src/MenuDevConsole.cpp:570
9511144 #, c-format
9521145 msgid "ERROR: '%s' is not a valid event key"
9531146 msgstr ""
9541147
955 #: ../../../src/MenuDevConsole.cpp:562
1148 #: ../../../src/MenuDevConsole.cpp:580
9561149 msgid "ERROR: Too few arguments"
9571150 msgstr "Erro: Non hai argumentos dabondo."
9581151
959 #: ../../../src/MenuDevConsole.cpp:564
1152 #: ../../../src/MenuDevConsole.cpp:582
9601153 msgid "<key>=<val> <key>=<val> ..."
9611154 msgstr ""
9621155
963 #: ../../../src/MenuDevConsole.cpp:569
1156 #: ../../../src/MenuDevConsole.cpp:587
9641157 msgid "ERROR: Unknown command"
9651158 msgstr "Erro: Orde descoñecida"
9661159
967 #: ../../../src/MenuDevConsole.cpp:571
1160 #: ../../../src/MenuDevConsole.cpp:589
9681161 msgid "HINT: Type help"
9691162 msgstr ""
9701163
971 #: ../../../src/MenuEnemy.cpp:138
1164 #: ../../../src/MenuEnemy.cpp:162
9721165 #, c-format
9731166 msgid "%s level %d"
9741167 msgstr "%s (nivel %d)"
9751168
976 #: ../../../src/MenuEnemy.cpp:162
1169 #: ../../../src/MenuEnemy.cpp:186
9771170 msgid "Dead"
9781171 msgstr "Morto"
9791172
980 #: ../../../src/MenuEnemy.cpp:164
1173 #: ../../../src/MenuEnemy.cpp:188
9811174 msgid "Destroyed"
9821175 msgstr ""
9831176
984 #: ../../../src/MenuExit.cpp:85 ../../../src/MenuExit.cpp:139
985 msgid "Paused"
986 msgstr ""
987
988 #: ../../../src/MenuExit.cpp:91
989 msgid "Save & Exit"
990 msgstr "Gardar e saír"
991
992 #: ../../../src/MenuExit.cpp:92
993 msgid "Exit"
994 msgstr "Volver ao menú"
995
996 #: ../../../src/MenuExit.cpp:96
997 msgid "Continue"
998 msgstr ""
999
1000 #: ../../../src/MenuInventory.cpp:73
1001 msgid "Automatically equip items"
1002 msgstr ""
1003
1004 #: ../../../src/MenuInventory.cpp:188
1177 #: ../../../src/MenuGameOver.cpp:69
1178 msgid "Game Over"
1179 msgstr ""
1180
1181 #: ../../../src/MenuInventory.cpp:178
10051182 #, c-format
10061183 msgid "Lost %d%% of %s."
10071184 msgstr ""
10081185
1009 #: ../../../src/MenuInventory.cpp:195
1186 #: ../../../src/MenuInventory.cpp:185
10101187 #, c-format
10111188 msgid "Lost %d%% of total XP."
10121189 msgstr ""
10131190
1014 #: ../../../src/MenuInventory.cpp:200
1191 #: ../../../src/MenuInventory.cpp:190
10151192 #, c-format
10161193 msgid "Lost %d%% of current level XP."
10171194 msgstr ""
10181195
1019 #: ../../../src/MenuInventory.cpp:226
1196 #: ../../../src/MenuInventory.cpp:216
10201197 #, c-format
10211198 msgid "Lost %s."
10221199 msgstr "Perdiches %s."
10231200
1024 #: ../../../src/MenuInventory.cpp:274 ../../../src/MenuStash.cpp:146
1201 #: ../../../src/MenuInventory.cpp:258 ../../../src/MenuStash.cpp:276
10251202 #, c-format
10261203 msgid "%d %s"
10271204 msgstr "%d %s"
10281205
1029 #: ../../../src/MenuInventory.cpp:317
1206 #: ../../../src/MenuInventory.cpp:301
10301207 msgid "Pick up item(s):"
10311208 msgstr ""
10321209
1033 #: ../../../src/MenuInventory.cpp:318
1210 #: ../../../src/MenuInventory.cpp:302
10341211 msgid "Use or equip item:"
10351212 msgstr ""
10361213
1037 #: ../../../src/MenuInventory.cpp:319
1214 #: ../../../src/MenuInventory.cpp:303
10381215 #, c-format
10391216 msgid "%s modifiers"
10401217 msgstr ""
10411218
1042 #: ../../../src/MenuInventory.cpp:320
1219 #: ../../../src/MenuInventory.cpp:304
10431220 msgid "Select a quantity of item:"
10441221 msgstr ""
10451222
1046 #: ../../../src/MenuInventory.cpp:323
1223 #: ../../../src/MenuInventory.cpp:307
10471224 msgid "Stash item stack:"
10481225 msgstr ""
10491226
1050 #: ../../../src/MenuInventory.cpp:325
1227 #: ../../../src/MenuInventory.cpp:309
10511228 msgid "Sell item stack:"
10521229 msgstr ""
10531230
1054 #: ../../../src/MenuInventory.cpp:592
1231 #: ../../../src/MenuInventory.cpp:576
10551232 msgid "You don't have enough of the required item."
10561233 msgstr "Non ten unha cantidade suficiente do elemento necesario."
10571234
1058 #: ../../../src/MenuInventory.cpp:599
1235 #: ../../../src/MenuInventory.cpp:588
10591236 msgid "You can't use this item right now."
10601237 msgstr ""
10611238
1062 #: ../../../src/MenuInventory.cpp:611
1239 #: ../../../src/MenuInventory.cpp:600
10631240 msgid "This item can only be used from the action bar."
10641241 msgstr "Este obxecto só pode empregarse desde a barra de acción."
10651242
1066 #: ../../../src/MenuInventory.cpp:729
1243 #: ../../../src/MenuInventory.cpp:718
10671244 msgid "Inventory is full."
10681245 msgstr "O inventario está cheo."
10691246
1070 #: ../../../src/MenuInventory.cpp:849
1247 #: ../../../src/MenuInventory.cpp:843
10711248 #, c-format
10721249 msgid "Not enough %s."
10731250 msgstr "Non tes %s dabondo."
10741251
1075 #: ../../../src/MenuInventory.cpp:869 ../../../src/MenuInventory.cpp:876
1252 #: ../../../src/MenuInventory.cpp:863 ../../../src/MenuInventory.cpp:870
10761253 msgid "This item can not be sold."
10771254 msgstr ""
10781255
10841261 msgid "Quests"
10851262 msgstr "Misións"
10861263
1087 #: ../../../src/MenuManager.cpp:286
1264 #: ../../../src/MenuManager.cpp:305
10881265 #, c-format
10891266 msgid "XP: %d/%d"
10901267 msgstr "Experiencia: %d/%d"
10911268
1092 #: ../../../src/MenuManager.cpp:827
1269 #: ../../../src/MenuManager.cpp:875
10931270 msgid "This item can not be dropped."
1271 msgstr ""
1272
1273 #: ../../../src/MenuManager.cpp:1501
1274 msgid "Equipped"
1275 msgstr ""
1276
1277 #: ../../../src/MenuMovementType.cpp:87
1278 msgid "Select a Movement Type"
1279 msgstr ""
1280
1281 #: ../../../src/MenuMovementType.cpp:89
1282 msgid "Can be changed later in the Configuration menu."
1283 msgstr ""
1284
1285 #: ../../../src/MenuMovementType.cpp:92 ../../../src/MenuMovementType.cpp:122
1286 msgid "Keyboard"
1287 msgstr ""
1288
1289 #: ../../../src/MenuMovementType.cpp:93 ../../../src/MenuMovementType.cpp:128
1290 msgid "Mouse"
1291 msgstr ""
1292
1293 #: ../../../src/MenuMovementType.cpp:129
1294 msgid "Button"
10941295 msgstr ""
10951296
10961297 #: ../../../src/MenuNumPicker.cpp:59
10971298 msgid "Enter amount:"
10981299 msgstr ""
10991300
1100 #: ../../../src/MenuPowers.cpp:787
1301 #: ../../../src/MenuPowers.cpp:872
11011302 msgid "Passive"
11021303 msgstr ""
11031304
1104 #: ../../../src/MenuPowers.cpp:792
1305 #: ../../../src/MenuPowers.cpp:879
11051306 #, c-format
11061307 msgid "Costs %d MP"
11071308 msgstr "Consume %d de enerxía"
11081309
1109 #: ../../../src/MenuPowers.cpp:796
1310 #: ../../../src/MenuPowers.cpp:883
11101311 #, c-format
11111312 msgid "Costs %d HP"
11121313 msgstr "Consume %d de vida"
11131314
1114 #: ../../../src/MenuPowers.cpp:801
1315 #: ../../../src/MenuPowers.cpp:887
11151316 msgid "Cooldown:"
11161317 msgstr ""
11171318
1118 #: ../../../src/MenuPowers.cpp:866 ../../../src/MenuPowers.cpp:869
1319 #: ../../../src/MenuPowers.cpp:938 ../../../src/MenuPowers.cpp:941
11191320 msgid "Damage per second"
11201321 msgstr ""
11211322
1122 #: ../../../src/MenuPowers.cpp:872 ../../../src/MenuPowers.cpp:875
1323 #: ../../../src/MenuPowers.cpp:944 ../../../src/MenuPowers.cpp:947
11231324 msgid "HP per second"
11241325 msgstr ""
11251326
1126 #: ../../../src/MenuPowers.cpp:878 ../../../src/MenuPowers.cpp:881
1327 #: ../../../src/MenuPowers.cpp:950 ../../../src/MenuPowers.cpp:953
11271328 msgid "MP per second"
11281329 msgstr ""
11291330
1130 #: ../../../src/MenuPowers.cpp:885
1331 #: ../../../src/MenuPowers.cpp:957
11311332 msgid "Immobilize"
11321333 msgstr ""
11331334
1134 #: ../../../src/MenuPowers.cpp:893
1335 #: ../../../src/MenuPowers.cpp:965
11351336 msgid "Immunity"
11361337 msgstr ""
11371338
1138 #: ../../../src/MenuPowers.cpp:896
1339 #: ../../../src/MenuPowers.cpp:968
11391340 msgid "Immunity to damage over time"
11401341 msgstr ""
11411342
1142 #: ../../../src/MenuPowers.cpp:899
1343 #: ../../../src/MenuPowers.cpp:971
11431344 msgid "Immunity to slow"
11441345 msgstr ""
11451346
1146 #: ../../../src/MenuPowers.cpp:902
1347 #: ../../../src/MenuPowers.cpp:974
11471348 msgid "Immunity to stun"
11481349 msgstr ""
11491350
1150 #: ../../../src/MenuPowers.cpp:905
1351 #: ../../../src/MenuPowers.cpp:977
11511352 msgid "Immunity to HP steal"
11521353 msgstr ""
11531354
1154 #: ../../../src/MenuPowers.cpp:908
1355 #: ../../../src/MenuPowers.cpp:980
11551356 msgid "Immunity to MP steal"
11561357 msgstr ""
11571358
1158 #: ../../../src/MenuPowers.cpp:911
1359 #: ../../../src/MenuPowers.cpp:983
11591360 msgid "Immunity to knockback"
11601361 msgstr ""
11611362
1162 #: ../../../src/MenuPowers.cpp:914
1363 #: ../../../src/MenuPowers.cpp:986
11631364 msgid "Immunity to damage reflection"
11641365 msgstr ""
11651366
1166 #: ../../../src/MenuPowers.cpp:917
1367 #: ../../../src/MenuPowers.cpp:992
11671368 msgid "Stun"
11681369 msgstr ""
11691370
1170 #: ../../../src/MenuPowers.cpp:920
1371 #: ../../../src/MenuPowers.cpp:995
11711372 msgid "Automatic revive on death"
11721373 msgstr ""
11731374
1174 #: ../../../src/MenuPowers.cpp:923
1375 #: ../../../src/MenuPowers.cpp:998
11751376 msgid "Convert"
11761377 msgstr ""
11771378
1178 #: ../../../src/MenuPowers.cpp:926
1379 #: ../../../src/MenuPowers.cpp:1001
11791380 msgid "Fear"
11801381 msgstr ""
11811382
1182 #: ../../../src/MenuPowers.cpp:929
1383 #: ../../../src/MenuPowers.cpp:1004
11831384 msgid "Lifespan"
11841385 msgstr ""
11851386
1186 #: ../../../src/MenuPowers.cpp:953
1387 #: ../../../src/MenuPowers.cpp:1028
11871388 msgid "Magical Shield"
11881389 msgstr ""
11891390
1190 #: ../../../src/MenuPowers.cpp:982
1391 #: ../../../src/MenuPowers.cpp:1057
11911392 msgid "Healing"
11921393 msgstr ""
11931394
1194 #: ../../../src/MenuPowers.cpp:985
1395 #: ../../../src/MenuPowers.cpp:1060
11951396 msgid "Knockback"
11961397 msgstr ""
11971398
1198 #: ../../../src/MenuPowers.cpp:1010
1399 #: ../../../src/MenuPowers.cpp:1084
11991400 #, c-format
12001401 msgid "%d%% chance"
12011402 msgstr ""
12021403
1203 #: ../../../src/MenuPowers.cpp:1062
1404 #: ../../../src/MenuPowers.cpp:1136
12041405 msgid "Base Accuracy"
12051406 msgstr ""
12061407
1207 #: ../../../src/MenuPowers.cpp:1082
1408 #: ../../../src/MenuPowers.cpp:1156
12081409 msgid "Base Critical Chance"
12091410 msgstr ""
12101411
1211 #: ../../../src/MenuPowers.cpp:1090
1412 #: ../../../src/MenuPowers.cpp:1164
12121413 msgid "Ignores Absorbtion"
12131414 msgstr ""
12141415
1215 #: ../../../src/MenuPowers.cpp:1095
1416 #: ../../../src/MenuPowers.cpp:1169
12161417 msgid "Ignores Avoidance"
12171418 msgstr ""
12181419
1219 #: ../../../src/MenuPowers.cpp:1100
1420 #: ../../../src/MenuPowers.cpp:1174
12201421 #, c-format
12211422 msgid "%d%% Chance to crit slowed targets"
12221423 msgstr ""
12231424
1224 #: ../../../src/MenuPowers.cpp:1105
1425 #: ../../../src/MenuPowers.cpp:1179
12251426 #, c-format
12261427 msgid "Elemental Damage (%s)"
12271428 msgstr ""
12281429
1229 #: ../../../src/MenuPowers.cpp:1114
1430 #: ../../../src/MenuPowers.cpp:1188
12301431 #, c-format
12311432 msgid "Requires a %s"
12321433 msgstr "Require unha unidade de %s."
12331434
1234 #: ../../../src/MenuPowers.cpp:1151 ../../../src/MenuPowers.cpp:1154
1435 #: ../../../src/MenuPowers.cpp:1226 ../../../src/MenuPowers.cpp:1229
12351436 #, c-format
12361437 msgid "Requires Power: %s"
12371438 msgstr "Require a habilidade «%s»."
12381439
1239 #: ../../../src/MenuPowers.cpp:1163
1440 #: ../../../src/MenuPowers.cpp:1238
12401441 msgid "Click to Unlock (uses 1 Skill Point)"
12411442 msgstr ""
12421443
1243 #: ../../../src/MenuPowers.cpp:1167 ../../../src/MenuPowers.cpp:1169
1444 #: ../../../src/MenuPowers.cpp:1242 ../../../src/MenuPowers.cpp:1244
12441445 msgid "Requires 1 Skill Point"
12451446 msgstr ""
12461447
1247 #: ../../../src/MenuPowers.cpp:1355
1248 #, c-format
1249 msgid "%d unspent skill point"
1250 msgstr ""
1251
1252 #: ../../../src/MenuPowers.cpp:1358
1253 #, c-format
1254 msgid "%d unspent skill points"
1255 msgstr ""
1256
1257 #: ../../../src/MenuPowers.cpp:1388
1448 #: ../../../src/MenuPowers.cpp:1444
1449 #, c-format
1450 msgid "Available skill points: %d"
1451 msgstr ""
1452
1453 #: ../../../src/MenuPowers.cpp:1476
12581454 msgid "Next Level:"
12591455 msgstr "Seguinte nivel:"
12601456
1261 #: ../../../src/MenuStash.cpp:96
1262 msgid "Shared Stash"
1263 msgstr "Reserva compartida"
1264
1265 #: ../../../src/MenuStash.cpp:209
1266 msgid "Can not store quest items in the stash."
1267 msgstr ""
1268
1269 #: ../../../src/MenuStash.cpp:219
1457 #: ../../../src/MenuStash.cpp:80 ../../../src/MenuStash.cpp:161
1458 msgid "Stash"
1459 msgstr ""
1460
1461 #: ../../../src/MenuStash.cpp:174 ../../../src/MenuStash.cpp:188
1462 msgid "Private"
1463 msgstr ""
1464
1465 #: ../../../src/MenuStash.cpp:175
1466 msgid "Shared"
1467 msgstr ""
1468
1469 #: ../../../src/MenuStash.cpp:340
1470 msgid "This item can not be stored in the stash."
1471 msgstr ""
1472
1473 #: ../../../src/MenuStash.cpp:345
1474 msgid "This item can not be stored in the private stash."
1475 msgstr ""
1476
1477 #: ../../../src/MenuStash.cpp:350
1478 msgid "This item can not be stored in the shared stash."
1479 msgstr ""
1480
1481 #: ../../../src/MenuStash.cpp:360
12701482 msgid "Stash is full."
12711483 msgstr ""
12721484
1273 #: ../../../src/MenuTalker.cpp:454
1485 #: ../../../src/MenuStash.cpp:414
1486 #, c-format
1487 msgid "Can not store item in stash: %s"
1488 msgstr ""
1489
1490 #: ../../../src/MenuTalker.cpp:448
1491 #, c-format
1492 msgid "<dialog node %d>"
1493 msgstr ""
1494
1495 #: ../../../src/MenuTalker.cpp:456
12741496 msgid "Trade"
12751497 msgstr "Comercio"
12761498
1277 #: ../../../src/MenuVendor.cpp:58
1499 #: ../../../src/MenuVendor.cpp:60
12781500 msgid "Buyback"
12791501 msgstr "Recuperar"
12801502
1281 #: ../../../src/MenuVendor.cpp:279
1503 #: ../../../src/MenuVendor.cpp:283
12821504 msgid "Vendor"
12831505 msgstr "Vendedor"
12841506
1285 #: ../../../src/PowerManager.cpp:1136
1507 #: ../../../src/PowerManager.cpp:1208
12861508 #, c-format
12871509 msgid "+%d Shield"
12881510 msgstr "+%d de escudo"
12891511
1290 #: ../../../src/PowerManager.cpp:1392
1512 #: ../../../src/PowerManager.cpp:1465
12911513 msgid "You are already transformed, untransform first."
12921514 msgstr "Xa estás transformado, primeiro recupera a forma orixinal."
12931515
1294 #: ../../../src/PowerManager.cpp:1404
1516 #: ../../../src/PowerManager.cpp:1477
12951517 msgid "Could not untransform at this position."
12961518 msgstr ""
12971519
12991521 msgid "Completed Quests"
13001522 msgstr ""
13011523
1302 #: ../../../src/SaveLoad.cpp:243 ../../../src/SaveLoad.cpp:244
1524 #: ../../../src/SaveLoad.cpp:250 ../../../src/SaveLoad.cpp:251
13031525 msgid "Game saved."
13041526 msgstr "Gardouse a partida."
13051527
1306 #: ../../../src/SDLInputState.cpp:582
1528 #: ../../../src/SDLInputState.cpp:643
1529 msgid "BkSp"
1530 msgstr ""
1531
1532 #: ../../../src/SDLInputState.cpp:644
1533 msgid "Caps"
1534 msgstr ""
1535
1536 #: ../../../src/SDLInputState.cpp:645
1537 msgid "Del"
1538 msgstr ""
1539
1540 #: ../../../src/SDLInputState.cpp:647 ../../../src/SDLInputState.cpp:677
1541 msgid "End"
1542 msgstr ""
1543
1544 #: ../../../src/SDLInputState.cpp:648
1545 msgid "Esc"
1546 msgstr ""
1547
1548 #: ../../../src/SDLInputState.cpp:649 ../../../src/SDLInputState.cpp:679
1549 msgid "Home"
1550 msgstr ""
1551
1552 #: ../../../src/SDLInputState.cpp:650
1553 msgid "Ins"
1554 msgstr ""
1555
1556 #: ../../../src/SDLInputState.cpp:651
1557 msgid "LAlt"
1558 msgstr ""
1559
1560 #: ../../../src/SDLInputState.cpp:652
1561 msgid "LCtrl"
1562 msgstr ""
1563
1564 #: ../../../src/SDLInputState.cpp:654
1565 msgid "LShft"
1566 msgstr ""
1567
1568 #: ../../../src/SDLInputState.cpp:655
1569 msgid "Num"
1570 msgstr ""
1571
1572 #: ../../../src/SDLInputState.cpp:656
1573 msgid "PgDn"
1574 msgstr ""
1575
1576 #: ../../../src/SDLInputState.cpp:657
1577 msgid "PgUp"
1578 msgstr ""
1579
1580 #: ../../../src/SDLInputState.cpp:658 ../../../src/SDLInputState.cpp:688
1581 msgid "Pause"
1582 msgstr ""
1583
1584 #: ../../../src/SDLInputState.cpp:659
1585 msgid "Print"
1586 msgstr ""
1587
1588 #: ../../../src/SDLInputState.cpp:660
1589 msgid "RAlt"
1590 msgstr ""
1591
1592 #: ../../../src/SDLInputState.cpp:661
1593 msgid "RCtrl"
1594 msgstr ""
1595
1596 #: ../../../src/SDLInputState.cpp:662
1597 msgid "Ret"
1598 msgstr ""
1599
1600 #: ../../../src/SDLInputState.cpp:664
1601 msgid "RShft"
1602 msgstr ""
1603
1604 #: ../../../src/SDLInputState.cpp:665
1605 msgid "SLock"
1606 msgstr ""
1607
1608 #: ../../../src/SDLInputState.cpp:666
1609 msgid "Spc"
1610 msgstr ""
1611
1612 #: ../../../src/SDLInputState.cpp:667 ../../../src/SDLInputState.cpp:697
1613 msgid "Tab"
1614 msgstr ""
1615
1616 #: ../../../src/SDLInputState.cpp:673
13071617 msgid "Backspace"
13081618 msgstr ""
13091619
1310 #: ../../../src/SDLInputState.cpp:583
1620 #: ../../../src/SDLInputState.cpp:674
13111621 msgid "CapsLock"
13121622 msgstr ""
13131623
1314 #: ../../../src/SDLInputState.cpp:586
1315 msgid "End"
1316 msgstr ""
1317
1318 #: ../../../src/SDLInputState.cpp:587
1624 #: ../../../src/SDLInputState.cpp:678
13191625 msgid "Escape"
13201626 msgstr ""
13211627
1322 #: ../../../src/SDLInputState.cpp:588
1323 msgid "Home"
1324 msgstr ""
1325
1326 #: ../../../src/SDLInputState.cpp:589
1628 #: ../../../src/SDLInputState.cpp:680
13271629 msgid "Insert"
13281630 msgstr ""
13291631
1330 #: ../../../src/SDLInputState.cpp:590
1632 #: ../../../src/SDLInputState.cpp:681
13311633 msgid "Left Alt"
13321634 msgstr ""
13331635
1334 #: ../../../src/SDLInputState.cpp:591
1636 #: ../../../src/SDLInputState.cpp:682
13351637 msgid "Left Ctrl"
13361638 msgstr ""
13371639
1338 #: ../../../src/SDLInputState.cpp:593
1640 #: ../../../src/SDLInputState.cpp:684
13391641 msgid "Left Shift"
13401642 msgstr ""
13411643
1342 #: ../../../src/SDLInputState.cpp:594
1644 #: ../../../src/SDLInputState.cpp:685
13431645 msgid "NumLock"
13441646 msgstr ""
13451647
1346 #: ../../../src/SDLInputState.cpp:595
1648 #: ../../../src/SDLInputState.cpp:686
13471649 msgid "PageDown"
13481650 msgstr ""
13491651
1350 #: ../../../src/SDLInputState.cpp:596
1652 #: ../../../src/SDLInputState.cpp:687
13511653 msgid "PageUp"
13521654 msgstr ""
13531655
1354 #: ../../../src/SDLInputState.cpp:597
1355 msgid "Pause"
1356 msgstr ""
1357
1358 #: ../../../src/SDLInputState.cpp:598
1656 #: ../../../src/SDLInputState.cpp:689
13591657 msgid "PrintScreen"
13601658 msgstr ""
13611659
1362 #: ../../../src/SDLInputState.cpp:599
1660 #: ../../../src/SDLInputState.cpp:690
13631661 msgid "Right Alt"
13641662 msgstr ""
13651663
1366 #: ../../../src/SDLInputState.cpp:600
1664 #: ../../../src/SDLInputState.cpp:691
13671665 msgid "Right Ctrl"
13681666 msgstr ""
13691667
1370 #: ../../../src/SDLInputState.cpp:601
1668 #: ../../../src/SDLInputState.cpp:692
13711669 msgid "Return"
13721670 msgstr ""
13731671
1374 #: ../../../src/SDLInputState.cpp:603
1672 #: ../../../src/SDLInputState.cpp:694
13751673 msgid "Right Shift"
13761674 msgstr ""
13771675
1378 #: ../../../src/SDLInputState.cpp:604
1676 #: ../../../src/SDLInputState.cpp:695
13791677 msgid "ScrollLock"
13801678 msgstr ""
13811679
1382 #: ../../../src/SDLInputState.cpp:605
1680 #: ../../../src/SDLInputState.cpp:696
13831681 msgid "Space"
13841682 msgstr ""
13851683
1386 #: ../../../src/SDLInputState.cpp:606
1387 msgid "Tab"
1388 msgstr ""
1389
1390 #: ../../../src/SDLInputState.cpp:620
1684 #: ../../../src/SDLInputState.cpp:710
1685 #, c-format
1686 msgid "M%d"
1687 msgstr ""
1688
1689 #: ../../../src/SDLInputState.cpp:716
13911690 #, c-format
13921691 msgid "Mouse %d"
13931692 msgstr ""
13941693
1395 #: ../../../src/SDLInputState.cpp:628
1694 #: ../../../src/SDLInputState.cpp:726
1695 #, c-format
1696 msgid "JX%d-"
1697 msgstr ""
1698
1699 #: ../../../src/SDLInputState.cpp:728
13961700 #, c-format
13971701 msgid "Axis %d -"
13981702 msgstr ""
13991703
1400 #: ../../../src/SDLInputState.cpp:630
1704 #: ../../../src/SDLInputState.cpp:732
1705 #, c-format
1706 msgid "JX%d+"
1707 msgstr ""
1708
1709 #: ../../../src/SDLInputState.cpp:734
14011710 #, c-format
14021711 msgid "Axis %d +"
14031712 msgstr ""
14041713
1405 #: ../../../src/SDLInputState.cpp:633
1714 #: ../../../src/SDLInputState.cpp:739
1715 #, c-format
1716 msgid "JB%d"
1717 msgstr ""
1718
1719 #: ../../../src/SDLInputState.cpp:741
14061720 #, c-format
14071721 msgid "Button %d"
14081722 msgstr "Botón %d"
14091723
1410 #: ../../../src/SDLInputState.cpp:637
1411 msgid "(none)"
1412 msgstr "(ningún)"
1413
1414 #: ../../../src/SDLInputState.cpp:677
1724 #: ../../../src/SDLInputState.cpp:787
14151725 msgid "Touch control D-Pad"
14161726 msgstr ""
14171727
1418 #: ../../../src/SDLInputState.cpp:701
1728 #: ../../../src/SDLInputState.cpp:810
14191729 msgid "Touch control buttons"
14201730 msgstr ""
14211731
1422 #: ../../../src/SDLInputState.cpp:716
1732 #: ../../../src/SDLInputState.cpp:824
14231733 msgid "Tap"
14241734 msgstr ""
14251735
1426 #: ../../../src/SDLInputState.cpp:760 ../../../src/SDLInputState.cpp:764
1427 #: ../../../src/SDLInputState.cpp:768
1736 #: ../../../src/SDLInputState.cpp:876 ../../../src/SDLInputState.cpp:878
1737 #, c-format
1738 msgid "Can not bind: %s"
1739 msgstr ""
1740
1741 #: ../../../src/SDLInputState.cpp:890 ../../../src/SDLInputState.cpp:894
1742 #: ../../../src/SDLInputState.cpp:898
14281743 #, c-format
14291744 msgid "'%s' is no longer bound to:"
14301745 msgstr ""
15831898 msgid "Base MP"
15841899 msgstr ""
15851900
1586 #: ../../../src/Utils.cpp:346
1901 #: ../../../src/Utils.cpp:365
15871902 msgid "k"
15881903 msgstr "k"
15891904
1590 #: ../../../src/Utils.cpp:580
1905 #: ../../../src/Utils.cpp:635
15911906 #, c-format
15921907 msgid "%s second"
15931908 msgstr ""
15941909
1595 #: ../../../src/Utils.cpp:583
1910 #: ../../../src/Utils.cpp:638
15961911 #, c-format
15971912 msgid "%s seconds"
15981913 msgstr ""
77 msgstr ""
88 "Project-Id-Version: PACKAGE VERSION\n"
99 "Report-Msgid-Bugs-To: \n"
10 "POT-Creation-Date: 2018-11-17 21:50-0500\n"
10 "POT-Creation-Date: 2021-05-23 20:34-0400\n"
1111 "PO-Revision-Date: 2018-03-28 19:16+0000\n"
1212 "Language-Team: Hebrew (https://www.transifex.com/flareorg/teams/84925/he/)\n"
1313 "MIME-Version: 1.0\n"
1616 "Language: he\n"
1717 "Plural-Forms: nplurals=4; plural=(n == 1 && n % 1 == 0) ? 0 : (n == 2 && n % 1 == 0) ? 1: (n % 10 == 0 && n % 1 == 0 && n > 10) ? 2 : 3;\n"
1818
19 #: ../../../src/Avatar.cpp:367
19 #: ../../../src/Avatar.cpp:391
20 msgid "Your health is low!"
21 msgstr ""
22
23 #: ../../../src/Avatar.cpp:421
2024 #, c-format
2125 msgid "Congratulations, you have reached level %d!"
2226 msgstr ""
2327
24 #: ../../../src/Avatar.cpp:369
25 msgid "You may increase one attribute through the Character Menu."
26 msgstr ""
27
28 #: ../../../src/Avatar.cpp:583
29 msgid "You are defeated. Game over! ${INPUT_CONTINUE} to exit to Title."
30 msgstr ""
31
32 #: ../../../src/Avatar.cpp:589
33 msgid "You are defeated. ${INPUT_CONTINUE} to continue."
34 msgstr ""
35
36 #: ../../../src/Avatar.cpp:839
28 #: ../../../src/Avatar.cpp:423
29 msgid "You may increase one or more attributes through the Character Menu."
30 msgstr ""
31
32 #: ../../../src/Avatar.cpp:427
33 msgid "You may unlock one or more abilities through the Powers Menu."
34 msgstr ""
35
36 #: ../../../src/Avatar.cpp:689
37 msgid "You are defeated."
38 msgstr ""
39
40 #: ../../../src/Avatar.cpp:935
3741 msgid "Transformation expired. You have been moved back to a safe place."
3842 msgstr ""
3943
40 #: ../../../src/CampaignManager.cpp:153
44 #: ../../../src/CampaignManager.cpp:152
4145 #, c-format
4246 msgid "%d %s removed."
4347 msgstr ""
4448
45 #: ../../../src/CampaignManager.cpp:162
49 #: ../../../src/CampaignManager.cpp:171
50 #, c-format
51 msgid "%s x%d removed."
52 msgstr ""
53
54 #: ../../../src/CampaignManager.cpp:173
4655 #, c-format
4756 msgid "%s removed."
4857 msgstr ""
4958
50 #: ../../../src/CampaignManager.cpp:175
59 #: ../../../src/CampaignManager.cpp:187
60 #, c-format
61 msgid "You receive %d %s."
62 msgstr ""
63
64 #: ../../../src/CampaignManager.cpp:191
65 #, c-format
66 msgid "You receive %s x%d."
67 msgstr ""
68
69 #: ../../../src/CampaignManager.cpp:193
5170 #, c-format
5271 msgid "You receive %s."
5372 msgstr ""
5473
55 #: ../../../src/CampaignManager.cpp:177
56 #, c-format
57 msgid "You receive %s x%d."
58 msgstr ""
59
60 #: ../../../src/CampaignManager.cpp:186
61 #, c-format
62 msgid "You receive %d %s."
63 msgstr ""
64
65 #: ../../../src/CampaignManager.cpp:195
74 #: ../../../src/CampaignManager.cpp:210
6675 #, c-format
6776 msgid "You receive %d XP."
6877 msgstr ""
6978
70 #: ../../../src/CampaignManager.cpp:201
79 #: ../../../src/CampaignManager.cpp:216
7180 msgid "HP restored."
7281 msgstr ""
7382
74 #: ../../../src/CampaignManager.cpp:205
83 #: ../../../src/CampaignManager.cpp:220
7584 msgid "MP restored."
7685 msgstr ""
7786
78 #: ../../../src/CampaignManager.cpp:210
87 #: ../../../src/CampaignManager.cpp:225
7988 msgid "HP and MP restored."
8089 msgstr ""
8190
82 #: ../../../src/CampaignManager.cpp:214
91 #: ../../../src/CampaignManager.cpp:229
8392 msgid "Negative effects removed."
8493 msgstr ""
8594
86 #: ../../../src/CampaignManager.cpp:220
95 #: ../../../src/CampaignManager.cpp:235
8796 msgid "HP and MP restored, negative effects removed"
8897 msgstr ""
8998
101110 "The default renderer that is often faster than the SDL software renderer."
102111 msgstr ""
103112
104 #: ../../../src/EngineSettings.cpp:561
113 #: ../../../src/EngineSettings.cpp:586
105114 msgid "Adventurer"
106115 msgstr ""
107116
108 #: ../../../src/Entity.cpp:511
117 #: ../../../src/Entity.cpp:527
109118 msgid "miss"
110119 msgstr ""
111120
112 #: ../../../src/Entity.cpp:548 ../../../src/PowerManager.cpp:1152
113 #: ../../../src/StatBlock.cpp:805 ../../../src/StatBlock.cpp:811
121 #: ../../../src/Entity.cpp:565 ../../../src/PowerManager.cpp:1224
122 #: ../../../src/StatBlock.cpp:917 ../../../src/StatBlock.cpp:923
114123 #, c-format
115124 msgid "+%d HP"
116125 msgstr ""
117126
118 #: ../../../src/Entity.cpp:555 ../../../src/StatBlock.cpp:816
119 #: ../../../src/StatBlock.cpp:822
127 #: ../../../src/Entity.cpp:572 ../../../src/StatBlock.cpp:928
128 #: ../../../src/StatBlock.cpp:934
120129 #, c-format
121130 msgid "+%d MP"
122131 msgstr ""
123132
124 #: ../../../src/EventManager.cpp:738
133 #: ../../../src/EventManager.cpp:792
125134 msgid "Unknown destination"
126135 msgstr ""
127136
128 #: ../../../src/GameStateConfigBase.cpp:89
129 #: ../../../src/GameStateConfigBase.cpp:110
137 #: ../../../src/GameState.cpp:37 ../../../src/GameState.cpp:58
138 msgid "Loading..."
139 msgstr ""
140
141 #: ../../../src/GameStateLoad.cpp:90 ../../../src/GameStateLoad.cpp:103
142 msgid "Delete Save"
143 msgstr ""
144
145 #: ../../../src/GameStateLoad.cpp:90
146 msgid "Delete this save?"
147 msgstr ""
148
149 #: ../../../src/GameStateLoad.cpp:92
150 msgid "Exit to Title"
151 msgstr ""
152
153 #: ../../../src/GameStateLoad.cpp:95
154 msgid "New Game"
155 msgstr ""
156
157 #: ../../../src/GameStateLoad.cpp:99 ../../../src/GameStateLoad.cpp:607
158 msgid "Choose a Slot"
159 msgstr ""
160
161 #: ../../../src/GameStateLoad.cpp:580 ../../../src/GameStateLoad.cpp:601
162 msgid "Enable a story mod to continue"
163 msgstr ""
164
165 #: ../../../src/GameStateLoad.cpp:596
166 msgid "Load Game"
167 msgstr ""
168
169 #: ../../../src/GameStateLoad.cpp:705
170 msgid "Entering game world..."
171 msgstr ""
172
173 #: ../../../src/GameStateLoad.cpp:708
174 msgid "Loading saved game..."
175 msgstr ""
176
177 #: ../../../src/GameStateLoad.cpp:741
178 msgid "Invalid save"
179 msgstr ""
180
181 #: ../../../src/GameStateLoad.cpp:765 ../../../src/ItemManager.cpp:745
182 #: ../../../src/MenuPowers.cpp:860 ../../../src/MenuPowers.cpp:1219
183 #: ../../../src/MenuPowers.cpp:1631
184 #, c-format
185 msgid "Level %d"
186 msgstr ""
187
188 #: ../../../src/GameStateNew.cpp:66 ../../../src/InputState.cpp:416
189 #: ../../../src/MenuConfig.cpp:246
190 msgid "Cancel"
191 msgstr ""
192
193 #: ../../../src/GameStateNew.cpp:69
194 msgid "Create"
195 msgstr ""
196
197 #: ../../../src/GameStateNew.cpp:77
198 msgid "Randomize"
199 msgstr ""
200
201 #: ../../../src/GameStateNew.cpp:93
202 msgid "Choose a Portrait"
203 msgstr ""
204
205 #: ../../../src/GameStateNew.cpp:97
206 msgid "Choose a Name"
207 msgstr ""
208
209 #: ../../../src/GameStateNew.cpp:101
210 msgid "Permadeath?"
211 msgstr ""
212
213 #: ../../../src/GameStateNew.cpp:105
214 msgid "Choose a Class"
215 msgstr ""
216
217 #: ../../../src/GameStateTitle.cpp:107
218 msgid "Play Game"
219 msgstr ""
220
221 #: ../../../src/GameStateTitle.cpp:110
222 msgid "Enable a core mod to continue"
223 msgstr ""
224
225 #: ../../../src/GameStateTitle.cpp:114 ../../../src/MenuMiniMap.cpp:152
226 msgid "Configuration"
227 msgstr ""
228
229 #: ../../../src/GameStateTitle.cpp:117
230 msgid "Credits"
231 msgstr ""
232
233 #: ../../../src/GameStateTitle.cpp:120
234 msgid "Exit Game"
235 msgstr ""
236
237 #: ../../../src/InputState.cpp:417
238 msgid "Accept"
239 msgstr ""
240
241 #: ../../../src/InputState.cpp:418 ../../../src/MenuMovementType.cpp:123
242 #: ../../../src/MenuMovementType.cpp:132 ../../../src/SDLInputState.cpp:668
243 #: ../../../src/SDLInputState.cpp:698
244 msgid "Up"
245 msgstr ""
246
247 #: ../../../src/InputState.cpp:419 ../../../src/MenuMovementType.cpp:125
248 #: ../../../src/MenuMovementType.cpp:134 ../../../src/SDLInputState.cpp:646
249 #: ../../../src/SDLInputState.cpp:676
250 msgid "Down"
251 msgstr ""
252
253 #: ../../../src/InputState.cpp:420 ../../../src/MenuMovementType.cpp:124
254 #: ../../../src/MenuMovementType.cpp:133 ../../../src/SDLInputState.cpp:653
255 #: ../../../src/SDLInputState.cpp:683
256 msgid "Left"
257 msgstr ""
258
259 #: ../../../src/InputState.cpp:421 ../../../src/MenuMovementType.cpp:126
260 #: ../../../src/MenuMovementType.cpp:135 ../../../src/SDLInputState.cpp:663
261 #: ../../../src/SDLInputState.cpp:693
262 msgid "Right"
263 msgstr ""
264
265 #: ../../../src/InputState.cpp:422
266 msgid "Bar1"
267 msgstr ""
268
269 #: ../../../src/InputState.cpp:423
270 msgid "Bar2"
271 msgstr ""
272
273 #: ../../../src/InputState.cpp:424
274 msgid "Bar3"
275 msgstr ""
276
277 #: ../../../src/InputState.cpp:425
278 msgid "Bar4"
279 msgstr ""
280
281 #: ../../../src/InputState.cpp:426
282 msgid "Bar5"
283 msgstr ""
284
285 #: ../../../src/InputState.cpp:427
286 msgid "Bar6"
287 msgstr ""
288
289 #: ../../../src/InputState.cpp:428
290 msgid "Bar7"
291 msgstr ""
292
293 #: ../../../src/InputState.cpp:429
294 msgid "Bar8"
295 msgstr ""
296
297 #: ../../../src/InputState.cpp:430
298 msgid "Bar9"
299 msgstr ""
300
301 #: ../../../src/InputState.cpp:431
302 msgid "Bar0"
303 msgstr ""
304
305 #: ../../../src/InputState.cpp:432 ../../../src/MenuActionBar.cpp:84
306 #: ../../../src/MenuCharacter.cpp:54
307 msgid "Character"
308 msgstr ""
309
310 #: ../../../src/InputState.cpp:433 ../../../src/MenuActionBar.cpp:85
311 #: ../../../src/MenuInventory.cpp:130 ../../../src/MenuVendor.cpp:59
312 msgid "Inventory"
313 msgstr ""
314
315 #: ../../../src/InputState.cpp:434 ../../../src/MenuActionBar.cpp:86
316 #: ../../../src/MenuPowers.cpp:158
317 msgid "Powers"
318 msgstr ""
319
320 #: ../../../src/InputState.cpp:435 ../../../src/MenuActionBar.cpp:87
321 #: ../../../src/MenuLog.cpp:72
322 msgid "Log"
323 msgstr ""
324
325 #: ../../../src/InputState.cpp:436
326 msgid "Main1"
327 msgstr ""
328
329 #: ../../../src/InputState.cpp:437
330 msgid "Main2"
331 msgstr ""
332
333 #: ../../../src/InputState.cpp:438
334 msgid "Ctrl"
335 msgstr ""
336
337 #: ../../../src/InputState.cpp:439
338 msgid "Shift"
339 msgstr ""
340
341 #: ../../../src/InputState.cpp:440
342 msgid "Alt"
343 msgstr ""
344
345 #: ../../../src/InputState.cpp:441 ../../../src/SDLInputState.cpp:675
346 msgid "Delete"
347 msgstr ""
348
349 #: ../../../src/InputState.cpp:442
350 msgid "ActionBar Accept"
351 msgstr ""
352
353 #: ../../../src/InputState.cpp:443
354 msgid "ActionBar Left"
355 msgstr ""
356
357 #: ../../../src/InputState.cpp:444
358 msgid "ActionBar Right"
359 msgstr ""
360
361 #: ../../../src/InputState.cpp:445
362 msgid "ActionBar Use"
363 msgstr ""
364
365 #: ../../../src/InputState.cpp:446
366 msgid "Developer Menu"
367 msgstr ""
368
369 #: ../../../src/InputState.cpp:448
370 msgid "Left Mouse"
371 msgstr ""
372
373 #: ../../../src/InputState.cpp:449
374 msgid "Middle Mouse"
375 msgstr ""
376
377 #: ../../../src/InputState.cpp:450
378 msgid "Right Mouse"
379 msgstr ""
380
381 #: ../../../src/InputState.cpp:451
382 msgid "Wheel Up"
383 msgstr ""
384
385 #: ../../../src/InputState.cpp:452
386 msgid "Wheel Down"
387 msgstr ""
388
389 #: ../../../src/InputState.cpp:453
390 msgid "Mouse X1"
391 msgstr ""
392
393 #: ../../../src/InputState.cpp:454
394 msgid "Mouse X2"
395 msgstr ""
396
397 #: ../../../src/ItemManager.cpp:475
398 msgid "Unknown Item"
399 msgstr ""
400
401 #: ../../../src/ItemManager.cpp:646 ../../../src/MenuPowers.cpp:959
402 #, c-format
403 msgid "%d%% Speed"
404 msgstr ""
405
406 #: ../../../src/ItemManager.cpp:650 ../../../src/MenuPowers.cpp:962
407 #, c-format
408 msgid "%d%% Attack Speed"
409 msgstr ""
410
411 #: ../../../src/ItemManager.cpp:672 ../../../src/MenuCharacter.cpp:352
412 #: ../../../src/MenuPowers.cpp:931
413 #, c-format
414 msgid "Resistance (%s)"
415 msgstr ""
416
417 #: ../../../src/ItemManager.cpp:682
418 #, c-format
419 msgid "Requires %s"
420 msgstr ""
421
422 #: ../../../src/ItemManager.cpp:731
423 msgid "Quest Item"
424 msgstr ""
425
426 #: ../../../src/ItemManager.cpp:758
427 #, c-format
428 msgid "Quality: %s"
429 msgstr ""
430
431 #: ../../../src/ItemManager.cpp:783
432 #, c-format
433 msgid "Absorb: %d-%d"
434 msgstr ""
435
436 #: ../../../src/ItemManager.cpp:785
437 #, c-format
438 msgid "Absorb: %d"
439 msgstr ""
440
441 #: ../../../src/ItemManager.cpp:825 ../../../src/MenuPowers.cpp:1206
442 #: ../../../src/MenuPowers.cpp:1209
443 #, c-format
444 msgid "Requires Level %d"
445 msgstr ""
446
447 #: ../../../src/ItemManager.cpp:836 ../../../src/MenuPowers.cpp:1198
448 #: ../../../src/MenuPowers.cpp:1200
449 #, c-format
450 msgid "Requires %s %d"
451 msgstr ""
452
453 #: ../../../src/ItemManager.cpp:847
454 #, c-format
455 msgid "Requires Class: %s"
456 msgstr ""
457
458 #: ../../../src/ItemManager.cpp:863 ../../../src/ItemManager.cpp:875
459 #, c-format
460 msgid "Buy Price: %d %s"
461 msgstr ""
462
463 #: ../../../src/ItemManager.cpp:865 ../../../src/ItemManager.cpp:877
464 #, c-format
465 msgid "Buy Price: %d %s each"
466 msgstr ""
467
468 #: ../../../src/ItemManager.cpp:885
469 #, c-format
470 msgid "Sell Price: %d %s"
471 msgstr ""
472
473 #: ../../../src/ItemManager.cpp:887
474 #, c-format
475 msgid "Sell Price: %d %s each"
476 msgstr ""
477
478 #: ../../../src/ItemManager.cpp:896
479 msgid "Set:"
480 msgstr ""
481
482 #: ../../../src/ItemManager.cpp:903
483 #, c-format
484 msgid "%d items:"
485 msgstr ""
486
487 #: ../../../src/ItemManager.cpp:915
488 #, c-format
489 msgid "Press [%s] to read"
490 msgstr ""
491
492 #: ../../../src/ItemManager.cpp:918
493 #, c-format
494 msgid "Press [%s] to use"
495 msgstr ""
496
497 #: ../../../src/MenuActionBar.cpp:239 ../../../src/MenuActionBar.cpp:246
498 #: ../../../src/MenuActionBar.cpp:249 ../../../src/MenuActionBar.cpp:255
499 #, c-format
500 msgid "Hotkey: %s"
501 msgstr ""
502
503 #: ../../../src/MenuActionBar.cpp:621
504 msgid "Not enough MP."
505 msgstr ""
506
507 #: ../../../src/MenuActiveEffects.cpp:124
508 #, c-format
509 msgid "x%d"
510 msgstr ""
511
512 #: ../../../src/MenuActiveEffects.cpp:219
513 msgid "Remaining:"
514 msgstr ""
515
516 #: ../../../src/MenuActiveEffects.cpp:225
517 #, c-format
518 msgid "x%d stacks"
519 msgstr ""
520
521 #: ../../../src/MenuCharacter.cpp:73 ../../../src/MenuCharacter.cpp:78
522 msgid "Name"
523 msgstr ""
524
525 #: ../../../src/MenuCharacter.cpp:74 ../../../src/MenuCharacter.cpp:79
526 msgid "Level"
527 msgstr ""
528
529 #: ../../../src/MenuCharacter.cpp:309
530 #, c-format
531 msgid "Available stat points: %d"
532 msgstr ""
533
534 #: ../../../src/MenuCharacter.cpp:353
535 #, c-format
536 msgid "Reduces the damage taken from \"%s\" elemental attacks."
537 msgstr ""
538
539 #: ../../../src/MenuCharacter.cpp:363 ../../../src/MenuManager.cpp:301
540 #, c-format
541 msgid "XP: %d"
542 msgstr ""
543
544 #: ../../../src/MenuCharacter.cpp:365
545 #, c-format
546 msgid "Next: %d"
547 msgstr ""
548
549 #: ../../../src/MenuCharacter.cpp:371
550 #, c-format
551 msgid "base (%d), bonus (%d)"
552 msgstr ""
553
554 #: ../../../src/MenuCharacter.cpp:379 ../../../src/MenuCharacter.cpp:393
555 msgid "Related stats:"
556 msgstr ""
557
558 #: ../../../src/MenuCharacter.cpp:419 ../../../src/MenuCharacter.cpp:443
559 #, c-format
560 msgid "Each level grants %d."
561 msgstr ""
562
563 #: ../../../src/MenuCharacter.cpp:423 ../../../src/MenuCharacter.cpp:447
564 #, c-format
565 msgid "Each point of %s grants %d."
566 msgstr ""
567
568 #: ../../../src/MenuConfig.cpp:122 ../../../src/MenuConfig.cpp:1171
569 msgid "Clear"
570 msgstr ""
571
572 #: ../../../src/MenuConfig.cpp:122 ../../../src/MenuConfig.cpp:1169
573 msgid "Assign:"
574 msgstr ""
575
576 #: ../../../src/MenuConfig.cpp:123 ../../../src/MenuConfig.cpp:245
130577 msgid "Defaults"
131578 msgstr ""
132579
133 #: ../../../src/GameStateConfigBase.cpp:89
580 #: ../../../src/MenuConfig.cpp:123
134581 msgid "Reset ALL settings?"
135582 msgstr ""
136583
137 #: ../../../src/GameStateConfigBase.cpp:109 ../../../src/MenuNumPicker.cpp:49
584 #: ../../../src/MenuConfig.cpp:244 ../../../src/MenuNumPicker.cpp:49
138585 msgid "OK"
139586 msgstr ""
140587
141 #: ../../../src/GameStateConfigBase.cpp:111 ../../../src/GameStateNew.cpp:65
142 #: ../../../src/InputState.cpp:401
143 msgid "Cancel"
144 msgstr ""
145
146 #: ../../../src/GameStateConfigBase.cpp:160
147 #: ../../../src/GameStateConfigDesktop.cpp:130
588 #: ../../../src/MenuConfig.cpp:248 ../../../src/MenuGameOver.cpp:72
589 msgid "Continue"
590 msgstr ""
591
592 #: ../../../src/MenuConfig.cpp:250
593 msgid "Save Game"
594 msgstr ""
595
596 #: ../../../src/MenuConfig.cpp:293
597 msgid "Default"
598 msgstr ""
599
600 #: ../../../src/MenuConfig.cpp:293
601 msgid ""
602 "Show all loot tooltips, except for those that would be obscured by the "
603 "player or an enemy. Temporarily show all loot tooltips with 'Alt'."
604 msgstr ""
605
606 #: ../../../src/MenuConfig.cpp:294
607 msgid "Show all"
608 msgstr ""
609
610 #: ../../../src/MenuConfig.cpp:294
611 msgid ""
612 "Always show loot tooltips. Temporarily hide all loot tooltips with 'Alt'."
613 msgstr ""
614
615 #: ../../../src/MenuConfig.cpp:295 ../../../src/MenuConfig.cpp:300
616 msgid "Hidden"
617 msgstr ""
618
619 #: ../../../src/MenuConfig.cpp:295
620 msgid ""
621 "Always hide loot tooltips, except for when a piece of loot is hovered with "
622 "the mouse cursor. Temporarily show all loot tooltips with 'Alt'."
623 msgstr ""
624
625 #: ../../../src/MenuConfig.cpp:298
626 msgid "Visible"
627 msgstr ""
628
629 #: ../../../src/MenuConfig.cpp:299
630 msgid "Visible (2x zoom)"
631 msgstr ""
632
633 #: ../../../src/MenuConfig.cpp:303
634 msgid ""
635 "Controls the type of warning to be activated when the player is below the "
636 "low health threshold."
637 msgstr ""
638
639 #: ../../../src/MenuConfig.cpp:304
640 msgid "- Display a message"
641 msgstr ""
642
643 #: ../../../src/MenuConfig.cpp:305
644 msgid "- Play a sound"
645 msgstr ""
646
647 #: ../../../src/MenuConfig.cpp:306
648 msgid "- Change the cursor"
649 msgstr ""
650
651 #: ../../../src/MenuConfig.cpp:308
652 msgid "Disabled"
653 msgstr ""
654
655 #: ../../../src/MenuConfig.cpp:309
656 msgid "All"
657 msgstr ""
658
659 #: ../../../src/MenuConfig.cpp:310
660 msgid "Message & Cursor"
661 msgstr ""
662
663 #: ../../../src/MenuConfig.cpp:311
664 msgid "Message & Sound"
665 msgstr ""
666
667 #: ../../../src/MenuConfig.cpp:312
668 msgid "Sound & Cursor"
669 msgstr ""
670
671 #: ../../../src/MenuConfig.cpp:313
672 msgid "Message"
673 msgstr ""
674
675 #: ../../../src/MenuConfig.cpp:314
676 msgid "Cursor"
677 msgstr ""
678
679 #: ../../../src/MenuConfig.cpp:315
680 msgid "Sound"
681 msgstr ""
682
683 #: ../../../src/MenuConfig.cpp:321
684 msgid ""
685 "When the player's health drops below the given threshold, the low health "
686 "notifications are triggered if one or more of them is enabled."
687 msgstr ""
688
689 #: ../../../src/MenuConfig.cpp:334 ../../../src/MenuConfig.cpp:1587
690 #: ../../../src/MenuGameOver.cpp:116
691 msgid "Exit"
692 msgstr ""
693
694 #: ../../../src/MenuConfig.cpp:335
695 msgid "Video"
696 msgstr ""
697
698 #: ../../../src/MenuConfig.cpp:336
148699 msgid "Audio"
149700 msgstr ""
150701
151 #: ../../../src/GameStateConfigBase.cpp:161
152 #: ../../../src/GameStateConfigDesktop.cpp:131
702 #: ../../../src/MenuConfig.cpp:337
153703 msgid "Interface"
154704 msgstr ""
155705
156 #: ../../../src/GameStateConfigBase.cpp:162
157 #: ../../../src/GameStateConfigDesktop.cpp:134
706 #: ../../../src/MenuConfig.cpp:338
707 msgid "Input"
708 msgstr ""
709
710 #: ../../../src/MenuConfig.cpp:339
711 msgid "Keybindings"
712 msgstr ""
713
714 #: ../../../src/MenuConfig.cpp:340
158715 msgid "Mods"
159716 msgstr ""
160717
161 #: ../../../src/GameStateConfigBase.cpp:249 ../../../src/MenuExit.cpp:72
718 #: ../../../src/MenuConfig.cpp:352
719 msgid "Paused"
720 msgstr ""
721
722 #: ../../../src/MenuConfig.cpp:355
723 msgid "Time Played"
724 msgstr ""
725
726 #: ../../../src/MenuConfig.cpp:361
727 msgid "Renderer"
728 msgstr ""
729
730 #: ../../../src/MenuConfig.cpp:362
731 msgid "Full Screen Mode"
732 msgstr ""
733
734 #: ../../../src/MenuConfig.cpp:363
735 msgid "Hardware surfaces"
736 msgstr ""
737
738 #: ../../../src/MenuConfig.cpp:364
739 msgid "V-Sync"
740 msgstr ""
741
742 #: ../../../src/MenuConfig.cpp:365
743 msgid "Texture Filtering"
744 msgstr ""
745
746 #: ../../../src/MenuConfig.cpp:366
747 msgid "DPI scaling"
748 msgstr ""
749
750 #: ../../../src/MenuConfig.cpp:367
751 msgid "Parallax Layers"
752 msgstr ""
753
754 #: ../../../src/MenuConfig.cpp:368
755 msgid "Allow changing gamma"
756 msgstr ""
757
758 #: ../../../src/MenuConfig.cpp:369
759 msgid "Gamma"
760 msgstr ""
761
762 #: ../../../src/MenuConfig.cpp:371
763 msgid "Sound Volume"
764 msgstr ""
765
766 #: ../../../src/MenuConfig.cpp:372
162767 msgid "Music Volume"
163768 msgstr ""
164769
165 #: ../../../src/GameStateConfigBase.cpp:253 ../../../src/MenuExit.cpp:77
166 msgid "Sound Volume"
167 msgstr ""
168
169 #: ../../../src/GameStateConfigBase.cpp:257
770 #: ../../../src/MenuConfig.cpp:374
170771 msgid "Language"
171772 msgstr ""
172773
173 #: ../../../src/GameStateConfigBase.cpp:266
774 #: ../../../src/MenuConfig.cpp:375
174775 msgid "Show FPS"
175776 msgstr ""
176777
177 #: ../../../src/GameStateConfigBase.cpp:270
778 #: ../../../src/MenuConfig.cpp:376
779 msgid "Hardware mouse cursor"
780 msgstr ""
781
782 #: ../../../src/MenuConfig.cpp:377
178783 msgid "Colorblind Mode"
179784 msgstr ""
180785
181 #: ../../../src/GameStateConfigBase.cpp:274
182 msgid "Hardware mouse cursor"
183 msgstr ""
184
185 #: ../../../src/GameStateConfigBase.cpp:278
786 #: ../../../src/MenuConfig.cpp:378
186787 msgid "Developer Mode"
187788 msgstr ""
188789
189 #: ../../../src/GameStateConfigBase.cpp:282
790 #: ../../../src/MenuConfig.cpp:379
190791 msgid "Subtitles"
191792 msgstr ""
192793
193 #: ../../../src/GameStateConfigBase.cpp:286
194 msgid "Active Mods"
195 msgstr ""
196
197 #: ../../../src/GameStateConfigBase.cpp:295
198 msgid "Available Mods"
199 msgstr ""
200
201 #: ../../../src/GameStateConfigBase.cpp:314
202 msgid "<< Disable"
203 msgstr ""
204
205 #: ../../../src/GameStateConfigBase.cpp:320
206 msgid "Enable >>"
207 msgstr ""
208
209 #: ../../../src/GameStateConfigBase.cpp:873
210 msgid "Version:"
211 msgstr ""
212
213 #: ../../../src/GameStateConfigBase.cpp:878
214 msgid "Game:"
215 msgstr ""
216
217 #: ../../../src/GameStateConfigBase.cpp:883
218 msgid "Engine version:"
219 msgstr ""
220
221 #: ../../../src/GameStateConfigBase.cpp:891
222 msgid "Requires mods:"
223 msgstr ""
224
225 #: ../../../src/GameStateConfigDesktop.cpp:83
226 #: ../../../src/GameStateConfigDesktop.cpp:751
227 msgid "Clear"
228 msgstr ""
229
230 #: ../../../src/GameStateConfigDesktop.cpp:83
231 #: ../../../src/GameStateConfigDesktop.cpp:749
232 msgid "Assign:"
233 msgstr ""
234
235 #: ../../../src/GameStateConfigDesktop.cpp:128
236 msgid "Video"
237 msgstr ""
238
239 #: ../../../src/GameStateConfigDesktop.cpp:132
240 msgid "Input"
241 msgstr ""
242
243 #: ../../../src/GameStateConfigDesktop.cpp:133
244 msgid "Keybindings"
245 msgstr ""
246
247 #: ../../../src/GameStateConfigDesktop.cpp:188
794 #: ../../../src/MenuConfig.cpp:380
795 msgid "Loot tooltip visibility"
796 msgstr ""
797
798 #: ../../../src/MenuConfig.cpp:381
799 msgid "Mini-map mode"
800 msgstr ""
801
802 #: ../../../src/MenuConfig.cpp:382
803 msgid "Always show stat bar labels"
804 msgstr ""
805
806 #: ../../../src/MenuConfig.cpp:383
807 msgid "Allow stat bar auto-hiding"
808 msgstr ""
809
810 #: ../../../src/MenuConfig.cpp:384
811 msgid "Show combat text"
812 msgstr ""
813
814 #: ../../../src/MenuConfig.cpp:385
815 msgid "Automatically equip items"
816 msgstr ""
817
818 #: ../../../src/MenuConfig.cpp:386
819 msgid "Show hidden entity markers"
820 msgstr ""
821
822 #: ../../../src/MenuConfig.cpp:387
823 msgid "Low health notification"
824 msgstr ""
825
826 #: ../../../src/MenuConfig.cpp:388
827 msgid "Low health threshold"
828 msgstr ""
829
830 #: ../../../src/MenuConfig.cpp:389
831 msgid "Show item comparison tooltips"
832 msgstr ""
833
834 #: ../../../src/MenuConfig.cpp:392 ../../../src/MenuMovementType.cpp:94
835 #: ../../../src/MenuMovementType.cpp:131
836 msgid "Joystick"
837 msgstr ""
838
839 #: ../../../src/MenuConfig.cpp:393
840 msgid "Move hero using mouse"
841 msgstr ""
842
843 #: ../../../src/MenuConfig.cpp:394
844 msgid "Mouse aim"
845 msgstr ""
846
847 #: ../../../src/MenuConfig.cpp:395
848 msgid "Do not use mouse"
849 msgstr ""
850
851 #: ../../../src/MenuConfig.cpp:396
852 msgid "Swap mouse movement button"
853 msgstr ""
854
855 #: ../../../src/MenuConfig.cpp:397
856 msgid "Attack with mouse movement"
857 msgstr ""
858
859 #: ../../../src/MenuConfig.cpp:398
860 msgid "Joystick Deadzone"
861 msgstr ""
862
863 #: ../../../src/MenuConfig.cpp:408
864 #, c-format
865 msgid "Primary binding: %s"
866 msgstr ""
867
868 #: ../../../src/MenuConfig.cpp:409
869 #, c-format
870 msgid "Alternate binding: %s"
871 msgstr ""
872
873 #: ../../../src/MenuConfig.cpp:410
874 #, c-format
875 msgid "Joystick binding: %s"
876 msgstr ""
877
878 #: ../../../src/MenuConfig.cpp:511
248879 msgid ""
249880 "Will try to store surfaces in video memory versus system memory. The effect "
250881 "this has on performance depends on the renderer."
251882 msgstr ""
252883
253 #: ../../../src/GameStateConfigDesktop.cpp:189
884 #: ../../../src/MenuConfig.cpp:512
254885 msgid ""
255886 "Prevents screen tearing. Disable if you experience \"stuttering\" in "
256887 "windowed mode or input lag."
257888 msgstr ""
258889
259 #: ../../../src/GameStateConfigDesktop.cpp:190
890 #: ../../../src/MenuConfig.cpp:513
260891 msgid ""
261892 "When enabled, this uses the screen DPI in addition to the window dimensions "
262893 "to scale the rendering resolution. Otherwise, only the window dimensions are"
263894 " used."
264895 msgstr ""
265896
266 #: ../../../src/GameStateConfigDesktop.cpp:191
897 #: ../../../src/MenuConfig.cpp:514
267898 msgid ""
268899 "This enables parallax (non-tile) layers. Disabling this setting can improve "
269900 "performance in some cases."
270901 msgstr ""
271902
272 #: ../../../src/GameStateConfigDesktop.cpp:192
273 msgid "Experimental"
274 msgstr ""
275
276 #: ../../../src/GameStateConfigDesktop.cpp:193
277 msgid "For handheld devices"
278 msgstr ""
279
280 #: ../../../src/GameStateConfigDesktop.cpp:211
281 msgid "Renderer"
282 msgstr ""
283
284 #: ../../../src/GameStateConfigDesktop.cpp:227
285 msgid "Full Screen Mode"
286 msgstr ""
287
288 #: ../../../src/GameStateConfigDesktop.cpp:231
289 msgid "Move hero using mouse"
290 msgstr ""
291
292 #: ../../../src/GameStateConfigDesktop.cpp:235
293 msgid "Hardware surfaces"
294 msgstr ""
295
296 #: ../../../src/GameStateConfigDesktop.cpp:239
297 msgid "V-Sync"
298 msgstr ""
299
300 #: ../../../src/GameStateConfigDesktop.cpp:243
301 msgid "Texture Filtering"
302 msgstr ""
303
304 #: ../../../src/GameStateConfigDesktop.cpp:247
305 msgid "DPI scaling"
306 msgstr ""
307
308 #: ../../../src/GameStateConfigDesktop.cpp:251
309 msgid "Parallax Layers"
310 msgstr ""
311
312 #: ../../../src/GameStateConfigDesktop.cpp:255
313 msgid "Allow changing gamma"
314 msgstr ""
315
316 #: ../../../src/GameStateConfigDesktop.cpp:259
317 msgid "Gamma"
318 msgstr ""
319
320 #: ../../../src/GameStateConfigDesktop.cpp:263
321 msgid "Use joystick"
322 msgstr ""
323
324 #: ../../../src/GameStateConfigDesktop.cpp:267
325 msgid "Joystick"
326 msgstr ""
327
328 #: ../../../src/GameStateConfigDesktop.cpp:283
329 msgid "Mouse aim"
330 msgstr ""
331
332 #: ../../../src/GameStateConfigDesktop.cpp:287
333 msgid "Do not use mouse"
334 msgstr ""
335
336 #: ../../../src/GameStateConfigDesktop.cpp:291
337 msgid "Joystick Deadzone"
338 msgstr ""
339
340 #: ../../../src/GameState.cpp:37 ../../../src/GameState.cpp:58
341 msgid "Loading..."
342 msgstr ""
343
344 #: ../../../src/GameStateLoad.cpp:88 ../../../src/GameStateLoad.cpp:101
345 msgid "Delete Save"
346 msgstr ""
347
348 #: ../../../src/GameStateLoad.cpp:88
349 msgid "Delete this save?"
350 msgstr ""
351
352 #: ../../../src/GameStateLoad.cpp:90
353 msgid "Exit to Title"
354 msgstr ""
355
356 #: ../../../src/GameStateLoad.cpp:93
357 msgid "New Game"
358 msgstr ""
359
360 #: ../../../src/GameStateLoad.cpp:97 ../../../src/GameStateLoad.cpp:600
361 msgid "Choose a Slot"
362 msgstr ""
363
364 #: ../../../src/GameStateLoad.cpp:573 ../../../src/GameStateLoad.cpp:594
365 msgid "Enable a story mod to continue"
366 msgstr ""
367
368 #: ../../../src/GameStateLoad.cpp:589
369 msgid "Load Game"
370 msgstr ""
371
372 #: ../../../src/GameStateLoad.cpp:695
373 msgid "Entering game world..."
374 msgstr ""
375
376 #: ../../../src/GameStateLoad.cpp:698
377 msgid "Loading saved game..."
378 msgstr ""
379
380 #: ../../../src/GameStateLoad.cpp:731
381 msgid "Invalid save"
382 msgstr ""
383
384 #: ../../../src/GameStateLoad.cpp:755 ../../../src/ItemManager.cpp:747
385 #: ../../../src/MenuPowers.cpp:778 ../../../src/MenuPowers.cpp:1144
386 #: ../../../src/MenuPowers.cpp:1542
387 #, c-format
388 msgid "Level %d"
389 msgstr ""
390
391 #: ../../../src/GameStateNew.cpp:68
392 msgid "Create"
393 msgstr ""
394
395 #: ../../../src/GameStateNew.cpp:76
396 msgid "Randomize"
397 msgstr ""
398
399 #: ../../../src/GameStateNew.cpp:92
400 msgid "Choose a Portrait"
401 msgstr ""
402
403 #: ../../../src/GameStateNew.cpp:96
404 msgid "Choose a Name"
405 msgstr ""
406
407 #: ../../../src/GameStateNew.cpp:100
408 msgid "Permadeath?"
409 msgstr ""
410
411 #: ../../../src/GameStateNew.cpp:104
412 msgid "Choose a Class"
413 msgstr ""
414
415 #: ../../../src/GameStateTitle.cpp:108
416 msgid "Play Game"
417 msgstr ""
418
419 #: ../../../src/GameStateTitle.cpp:111
420 msgid "Enable a core mod to continue"
421 msgstr ""
422
423 #: ../../../src/GameStateTitle.cpp:115
424 msgid "Configuration"
425 msgstr ""
426
427 #: ../../../src/GameStateTitle.cpp:118
428 msgid "Credits"
429 msgstr ""
430
431 #: ../../../src/GameStateTitle.cpp:121
432 msgid "Exit Game"
433 msgstr ""
434
435 #: ../../../src/InputState.cpp:402
436 msgid "Accept"
437 msgstr ""
438
439 #: ../../../src/InputState.cpp:403 ../../../src/SDLInputState.cpp:607
440 msgid "Up"
441 msgstr ""
442
443 #: ../../../src/InputState.cpp:404 ../../../src/SDLInputState.cpp:585
444 msgid "Down"
445 msgstr ""
446
447 #: ../../../src/InputState.cpp:405 ../../../src/SDLInputState.cpp:592
448 msgid "Left"
449 msgstr ""
450
451 #: ../../../src/InputState.cpp:406 ../../../src/SDLInputState.cpp:602
452 msgid "Right"
453 msgstr ""
454
455 #: ../../../src/InputState.cpp:407
456 msgid "Bar1"
457 msgstr ""
458
459 #: ../../../src/InputState.cpp:408
460 msgid "Bar2"
461 msgstr ""
462
463 #: ../../../src/InputState.cpp:409
464 msgid "Bar3"
465 msgstr ""
466
467 #: ../../../src/InputState.cpp:410
468 msgid "Bar4"
469 msgstr ""
470
471 #: ../../../src/InputState.cpp:411
472 msgid "Bar5"
473 msgstr ""
474
475 #: ../../../src/InputState.cpp:412
476 msgid "Bar6"
477 msgstr ""
478
479 #: ../../../src/InputState.cpp:413
480 msgid "Bar7"
481 msgstr ""
482
483 #: ../../../src/InputState.cpp:414
484 msgid "Bar8"
485 msgstr ""
486
487 #: ../../../src/InputState.cpp:415
488 msgid "Bar9"
489 msgstr ""
490
491 #: ../../../src/InputState.cpp:416
492 msgid "Bar0"
493 msgstr ""
494
495 #: ../../../src/InputState.cpp:417 ../../../src/MenuActionBar.cpp:83
496 #: ../../../src/MenuCharacter.cpp:54
497 msgid "Character"
498 msgstr ""
499
500 #: ../../../src/InputState.cpp:418 ../../../src/MenuActionBar.cpp:84
501 #: ../../../src/MenuInventory.cpp:137 ../../../src/MenuVendor.cpp:57
502 msgid "Inventory"
503 msgstr ""
504
505 #: ../../../src/InputState.cpp:419 ../../../src/MenuActionBar.cpp:85
506 #: ../../../src/MenuPowers.cpp:168
507 msgid "Powers"
508 msgstr ""
509
510 #: ../../../src/InputState.cpp:420 ../../../src/MenuActionBar.cpp:86
511 #: ../../../src/MenuLog.cpp:72
512 msgid "Log"
513 msgstr ""
514
515 #: ../../../src/InputState.cpp:421
516 msgid "Main1"
517 msgstr ""
518
519 #: ../../../src/InputState.cpp:422
520 msgid "Main2"
521 msgstr ""
522
523 #: ../../../src/InputState.cpp:423
524 msgid "Ctrl"
525 msgstr ""
526
527 #: ../../../src/InputState.cpp:424
528 msgid "Shift"
529 msgstr ""
530
531 #: ../../../src/InputState.cpp:425
532 msgid "Alt"
533 msgstr ""
534
535 #: ../../../src/InputState.cpp:426 ../../../src/SDLInputState.cpp:584
536 msgid "Delete"
537 msgstr ""
538
539 #: ../../../src/InputState.cpp:427
540 msgid "ActionBar Accept"
541 msgstr ""
542
543 #: ../../../src/InputState.cpp:428
544 msgid "ActionBar Left"
545 msgstr ""
546
547 #: ../../../src/InputState.cpp:429
548 msgid "ActionBar Right"
549 msgstr ""
550
551 #: ../../../src/InputState.cpp:430
552 msgid "ActionBar Use"
553 msgstr ""
554
555 #: ../../../src/InputState.cpp:431
556 msgid "Developer Menu"
557 msgstr ""
558
559 #: ../../../src/InputState.cpp:433
560 msgid "Left Mouse"
561 msgstr ""
562
563 #: ../../../src/InputState.cpp:434
564 msgid "Middle Mouse"
565 msgstr ""
566
567 #: ../../../src/InputState.cpp:435
568 msgid "Right Mouse"
569 msgstr ""
570
571 #: ../../../src/InputState.cpp:436
572 msgid "Wheel Up"
573 msgstr ""
574
575 #: ../../../src/InputState.cpp:437
576 msgid "Wheel Down"
577 msgstr ""
578
579 #: ../../../src/InputState.cpp:438
580 msgid "Mouse X1"
581 msgstr ""
582
583 #: ../../../src/InputState.cpp:439
584 msgid "Mouse X2"
585 msgstr ""
586
587 #: ../../../src/ItemManager.cpp:450 ../../../src/ItemManager.cpp:453
588 msgid "Unknown Item"
589 msgstr ""
590
591 #: ../../../src/ItemManager.cpp:648 ../../../src/MenuPowers.cpp:887
592 #, c-format
593 msgid "%d%% Speed"
594 msgstr ""
595
596 #: ../../../src/ItemManager.cpp:652 ../../../src/MenuPowers.cpp:890
597 #, c-format
598 msgid "%d%% Attack Speed"
599 msgstr ""
600
601 #: ../../../src/ItemManager.cpp:674 ../../../src/MenuCharacter.cpp:354
602 #: ../../../src/MenuPowers.cpp:833
603 #, c-format
604 msgid "Resistance (%s)"
605 msgstr ""
606
607 #: ../../../src/ItemManager.cpp:684
608 #, c-format
609 msgid "Requires %s"
610 msgstr ""
611
612 #: ../../../src/ItemManager.cpp:733
613 msgid "Quest Item"
614 msgstr ""
615
616 #: ../../../src/ItemManager.cpp:760
617 #, c-format
618 msgid "Quality: %s"
619 msgstr ""
620
621 #: ../../../src/ItemManager.cpp:785
622 #, c-format
623 msgid "Absorb: %d-%d"
624 msgstr ""
625
626 #: ../../../src/ItemManager.cpp:787
627 #, c-format
628 msgid "Absorb: %d"
629 msgstr ""
630
631 #: ../../../src/ItemManager.cpp:827 ../../../src/MenuPowers.cpp:1131
632 #: ../../../src/MenuPowers.cpp:1134
633 #, c-format
634 msgid "Requires Level %d"
635 msgstr ""
636
637 #: ../../../src/ItemManager.cpp:838 ../../../src/MenuPowers.cpp:1123
638 #: ../../../src/MenuPowers.cpp:1125
639 #, c-format
640 msgid "Requires %s %d"
641 msgstr ""
642
643 #: ../../../src/ItemManager.cpp:849
644 #, c-format
645 msgid "Requires Class: %s"
646 msgstr ""
647
648 #: ../../../src/ItemManager.cpp:864 ../../../src/ItemManager.cpp:876
649 #, c-format
650 msgid "Buy Price: %d %s"
651 msgstr ""
652
653 #: ../../../src/ItemManager.cpp:866 ../../../src/ItemManager.cpp:878
654 #, c-format
655 msgid "Buy Price: %d %s each"
656 msgstr ""
657
658 #: ../../../src/ItemManager.cpp:886
659 #, c-format
660 msgid "Sell Price: %d %s"
661 msgstr ""
662
663 #: ../../../src/ItemManager.cpp:888
664 #, c-format
665 msgid "Sell Price: %d %s each"
666 msgstr ""
667
668 #: ../../../src/ItemManager.cpp:897
669 msgid "Set:"
670 msgstr ""
671
672 #: ../../../src/ItemManager.cpp:904
673 #, c-format
674 msgid "%d items:"
675 msgstr ""
676
677 #: ../../../src/ItemManager.cpp:917
678 #, c-format
679 msgid "Press [%s] to use"
680 msgstr ""
681
682 #: ../../../src/ItemManager.cpp:920
683 #, c-format
684 msgid "Press [%s] to read"
685 msgstr ""
686
687 #: ../../../src/MenuActionBar.cpp:87
688 msgid "Loot tooltip visibility"
689 msgstr ""
690
691 #: ../../../src/MenuActionBar.cpp:88
692 msgid "Mini-map mode"
693 msgstr ""
694
695 #: ../../../src/MenuActionBar.cpp:89
696 msgid "Always show stat bar labels"
697 msgstr ""
698
699 #: ../../../src/MenuActionBar.cpp:90
700 msgid "Show combat text"
701 msgstr ""
702
703 #: ../../../src/MenuActionBar.cpp:254 ../../../src/MenuActionBar.cpp:261
704 #: ../../../src/MenuActionBar.cpp:264 ../../../src/MenuActionBar.cpp:271
705 #, c-format
706 msgid "Hotkey: %s"
707 msgstr ""
708
709 #: ../../../src/MenuActionBar.cpp:474
710 #, c-format
711 msgid "Default. Temporarily show all loot tooltips with '%s'."
712 msgstr ""
713
714 #: ../../../src/MenuActionBar.cpp:476
715 #, c-format
716 msgid "Show All. Temporarily hide all loot tooltips with '%s'."
717 msgstr ""
718
719 #: ../../../src/MenuActionBar.cpp:478
720 #, c-format
721 msgid "Hide All. Temporarily show all loot tooltips with '%s'."
722 msgstr ""
723
724 #: ../../../src/MenuActionBar.cpp:482
725 msgid "Visible"
726 msgstr ""
727
728 #: ../../../src/MenuActionBar.cpp:484
729 msgid "Visible (2x zoom)"
730 msgstr ""
731
732 #: ../../../src/MenuActionBar.cpp:486
733 msgid "Hidden"
734 msgstr ""
735
736 #: ../../../src/MenuActionBar.cpp:490 ../../../src/MenuActionBar.cpp:496
737 msgid "Enabled"
738 msgstr ""
739
740 #: ../../../src/MenuActionBar.cpp:492 ../../../src/MenuActionBar.cpp:498
741 msgid "Disabled"
742 msgstr ""
743
744 #: ../../../src/MenuActionBar.cpp:657
745 msgid "Not enough MP."
746 msgstr ""
747
748 #: ../../../src/MenuActiveEffects.cpp:124
749 #, c-format
750 msgid "x%d"
751 msgstr ""
752
753 #: ../../../src/MenuActiveEffects.cpp:219
754 msgid "Remaining:"
755 msgstr ""
756
757 #: ../../../src/MenuActiveEffects.cpp:225
758 #, c-format
759 msgid "x%d stacks"
760 msgstr ""
761
762 #: ../../../src/MenuCharacter.cpp:73 ../../../src/MenuCharacter.cpp:78
763 msgid "Name"
764 msgstr ""
765
766 #: ../../../src/MenuCharacter.cpp:74 ../../../src/MenuCharacter.cpp:79
767 msgid "Level"
768 msgstr ""
769
770 #: ../../../src/MenuCharacter.cpp:310
771 #, c-format
772 msgid "%d unspent stat point"
773 msgstr ""
774
775 #: ../../../src/MenuCharacter.cpp:313
776 #, c-format
777 msgid "%d unspent stat points"
778 msgstr ""
779
780 #: ../../../src/MenuCharacter.cpp:355
781 #, c-format
782 msgid "Reduces the damage taken from \"%s\" elemental attacks."
783 msgstr ""
784
785 #: ../../../src/MenuCharacter.cpp:365 ../../../src/MenuManager.cpp:283
786 #, c-format
787 msgid "XP: %d"
788 msgstr ""
789
790 #: ../../../src/MenuCharacter.cpp:367
791 #, c-format
792 msgid "Next: %d"
793 msgstr ""
794
795 #: ../../../src/MenuCharacter.cpp:373
796 #, c-format
797 msgid "base (%d), bonus (%d)"
798 msgstr ""
799
800 #: ../../../src/MenuCharacter.cpp:381 ../../../src/MenuCharacter.cpp:395
801 msgid "Related stats:"
802 msgstr ""
803
804 #: ../../../src/MenuCharacter.cpp:421 ../../../src/MenuCharacter.cpp:445
805 #, c-format
806 msgid "Each level grants %d."
807 msgstr ""
808
809 #: ../../../src/MenuCharacter.cpp:425 ../../../src/MenuCharacter.cpp:449
810 #, c-format
811 msgid "Each point of %s grants %d."
812 msgstr ""
813
814 #: ../../../src/MenuDevConsole.cpp:63
903 #: ../../../src/MenuConfig.cpp:515
904 msgid ""
905 "Enables the below setting that controls the screen gamma level. The behavior"
906 " of the gamma setting can vary between platforms."
907 msgstr ""
908
909 #: ../../../src/MenuConfig.cpp:516
910 msgid ""
911 "Provides additional text for information that is primarily conveyed through "
912 "color."
913 msgstr ""
914
915 #: ../../../src/MenuConfig.cpp:517
916 msgid ""
917 "Some mods will automatically hide the stat bars when they are inactive. "
918 "Disabling this option will keep them displayed at all times."
919 msgstr ""
920
921 #: ../../../src/MenuConfig.cpp:518
922 msgid ""
923 "When enabled, empty equipment slots will be filled with applicable items "
924 "when they are obtained."
925 msgstr ""
926
927 #: ../../../src/MenuConfig.cpp:519
928 msgid ""
929 "Shows a marker above enemies, allies, and the player when they are obscured "
930 "by tall objects."
931 msgstr ""
932
933 #: ../../../src/MenuConfig.cpp:520
934 msgid ""
935 "When enabled, tooltips for equipped items of the same type are shown next to"
936 " standard item tooltips."
937 msgstr ""
938
939 #: ../../../src/MenuConfig.cpp:521
940 msgid ""
941 "This allows the game to be controlled entirely with the keyboard (or "
942 "joystick)."
943 msgstr ""
944
945 #: ../../../src/MenuConfig.cpp:522
946 msgid ""
947 "When 'Move hero using mouse' is enabled, this setting controls if 'Main1' or"
948 " 'Main2' is used to move the hero. If enabled, 'Main2' will move the hero "
949 "instead of 'Main1'."
950 msgstr ""
951
952 #: ../../../src/MenuConfig.cpp:523
953 msgid ""
954 "When 'Move hero using mouse' is enabled, this setting controls if the Power "
955 "assigned to the movement button can be used by targeting an enemy. If this "
956 "setting is disabled, it is required to use 'Shift' to access the Power "
957 "assigned to the movement button."
958 msgstr ""
959
960 #: ../../../src/MenuConfig.cpp:524
961 msgid ""
962 "The player's attacks will be aimed in the direction of the mouse cursor when"
963 " this is enabled."
964 msgstr ""
965
966 #: ../../../src/MenuConfig.cpp:575
967 msgid "Active Mods"
968 msgstr ""
969
970 #: ../../../src/MenuConfig.cpp:584
971 msgid "Available Mods"
972 msgstr ""
973
974 #: ../../../src/MenuConfig.cpp:603
975 msgid "<< Disable"
976 msgstr ""
977
978 #: ../../../src/MenuConfig.cpp:609
979 msgid "Enable >>"
980 msgstr ""
981
982 #: ../../../src/MenuConfig.cpp:1444
983 msgid "Version:"
984 msgstr ""
985
986 #: ../../../src/MenuConfig.cpp:1449
987 msgid "Game:"
988 msgstr ""
989
990 #: ../../../src/MenuConfig.cpp:1454
991 msgid "Engine version:"
992 msgstr ""
993
994 #: ../../../src/MenuConfig.cpp:1462
995 msgid "Requires mods:"
996 msgstr ""
997
998 #: ../../../src/MenuConfig.cpp:1570 ../../../src/SDLInputState.cpp:748
999 msgid "(none)"
1000 msgstr ""
1001
1002 #: ../../../src/MenuConfig.cpp:1587 ../../../src/MenuGameOver.cpp:73
1003 msgid "Save & Exit"
1004 msgstr ""
1005
1006 #: ../../../src/MenuDevConsole.cpp:65
8151007 msgid "Execute"
8161008 msgstr ""
8171009
818 #: ../../../src/MenuDevConsole.cpp:101 ../../../src/MenuDevConsole.cpp:151
1010 #: ../../../src/MenuDevConsole.cpp:103 ../../../src/MenuDevConsole.cpp:153
8191011 msgid "Developer Console"
8201012 msgstr ""
8211013
822 #: ../../../src/MenuDevConsole.cpp:141
1014 #: ../../../src/MenuDevConsole.cpp:143
8231015 #, c-format
8241016 msgid "Use '%s' to inspect with the cursor."
8251017 msgstr ""
8261018
827 #: ../../../src/MenuDevConsole.cpp:146
1019 #: ../../../src/MenuDevConsole.cpp:148
8281020 msgid "Arguments with spaces should be enclosed with double quotes. Example:"
8291021 msgstr ""
8301022
831 #: ../../../src/MenuDevConsole.cpp:147
1023 #: ../../../src/MenuDevConsole.cpp:149
8321024 msgid "Type 'help' to get a list of commands."
8331025 msgstr ""
8341026
835 #: ../../../src/MenuDevConsole.cpp:209 ../../../src/MenuDevConsole.cpp:213
1027 #: ../../../src/MenuDevConsole.cpp:211 ../../../src/MenuDevConsole.cpp:215
8361028 msgid "px"
8371029 msgstr ""
8381030
839 #: ../../../src/MenuDevConsole.cpp:224
1031 #: ../../../src/MenuDevConsole.cpp:226
8401032 msgid "Distance"
8411033 msgstr ""
8421034
843 #: ../../../src/MenuDevConsole.cpp:239 ../../../src/MenuDevConsole.cpp:286
1035 #: ../../../src/MenuDevConsole.cpp:241 ../../../src/MenuDevConsole.cpp:289
1036 #: ../../../src/MenuDevConsole.cpp:303
8441037 msgid "Entity"
8451038 msgstr ""
8461039
847 #: ../../../src/MenuDevConsole.cpp:261 ../../../src/MenuDevConsole.cpp:268
1040 #: ../../../src/MenuDevConsole.cpp:263 ../../../src/MenuDevConsole.cpp:270
8481041 msgid "none"
8491042 msgstr ""
8501043
851 #: ../../../src/MenuDevConsole.cpp:262 ../../../src/MenuDevConsole.cpp:264
1044 #: ../../../src/MenuDevConsole.cpp:264 ../../../src/MenuDevConsole.cpp:266
8521045 msgid "wall"
8531046 msgstr ""
8541047
855 #: ../../../src/MenuDevConsole.cpp:263 ../../../src/MenuDevConsole.cpp:265
1048 #: ../../../src/MenuDevConsole.cpp:265 ../../../src/MenuDevConsole.cpp:267
8561049 msgid "short wall / pit"
8571050 msgstr ""
8581051
859 #: ../../../src/MenuDevConsole.cpp:266
1052 #: ../../../src/MenuDevConsole.cpp:268
8601053 msgid "entity"
8611054 msgstr ""
8621055
863 #: ../../../src/MenuDevConsole.cpp:267
1056 #: ../../../src/MenuDevConsole.cpp:269
8641057 msgid "entity, ally"
8651058 msgstr ""
8661059
867 #: ../../../src/MenuDevConsole.cpp:274
1060 #: ../../../src/MenuDevConsole.cpp:276
8681061 msgid "Tile"
8691062 msgstr ""
8701063
871 #: ../../../src/MenuDevConsole.cpp:360
1064 #: ../../../src/MenuDevConsole.cpp:377
8721065 msgid "adds a power to the action bar"
8731066 msgstr ""
8741067
875 #: ../../../src/MenuDevConsole.cpp:361
1068 #: ../../../src/MenuDevConsole.cpp:378
8761069 msgid "turns on/off the display of the FPS counter"
8771070 msgstr ""
8781071
879 #: ../../../src/MenuDevConsole.cpp:362
1072 #: ../../../src/MenuDevConsole.cpp:379
8801073 msgid "turns on/off all of the HUD elements"
8811074 msgstr ""
8821075
883 #: ../../../src/MenuDevConsole.cpp:363
1076 #: ../../../src/MenuDevConsole.cpp:380
8841077 msgid "turns on/off the developer hud"
8851078 msgstr ""
8861079
887 #: ../../../src/MenuDevConsole.cpp:364
1080 #: ../../../src/MenuDevConsole.cpp:381
8881081 msgid ""
8891082 "Prints a list of powers that match a search term. No search term will list "
8901083 "all items"
8911084 msgstr ""
8921085
893 #: ../../../src/MenuDevConsole.cpp:365
1086 #: ../../../src/MenuDevConsole.cpp:382
8941087 msgid "Prints out all the map filenames located in the \"maps/\" directory."
8951088 msgstr ""
8961089
897 #: ../../../src/MenuDevConsole.cpp:366
1090 #: ../../../src/MenuDevConsole.cpp:383
8981091 msgid ""
8991092 "Prints out the active campaign statuses that match a search term. No search "
9001093 "term will list all active statuses"
9011094 msgstr ""
9021095
903 #: ../../../src/MenuDevConsole.cpp:367
1096 #: ../../../src/MenuDevConsole.cpp:384
9041097 msgid ""
9051098 "Prints a list of items that match a search term. No search term will list "
9061099 "all items"
9071100 msgstr ""
9081101
909 #: ../../../src/MenuDevConsole.cpp:368
1102 #: ../../../src/MenuDevConsole.cpp:385
9101103 msgid ""
9111104 "parses a series of event components and executes them as a single event"
9121105 msgstr ""
9131106
914 #: ../../../src/MenuDevConsole.cpp:369
1107 #: ../../../src/MenuDevConsole.cpp:386
9151108 msgid "clears the command history"
9161109 msgstr ""
9171110
918 #: ../../../src/MenuDevConsole.cpp:370
1111 #: ../../../src/MenuDevConsole.cpp:387
9191112 msgid "displays this text"
9201113 msgstr ""
9211114
922 #: ../../../src/MenuDevConsole.cpp:377
1115 #: ../../../src/MenuDevConsole.cpp:394
9231116 msgid "Toggled the developer hud"
9241117 msgstr ""
9251118
926 #: ../../../src/MenuDevConsole.cpp:381
1119 #: ../../../src/MenuDevConsole.cpp:398
9271120 msgid "Toggled the hud"
9281121 msgstr ""
9291122
930 #: ../../../src/MenuDevConsole.cpp:385
1123 #: ../../../src/MenuDevConsole.cpp:402
9311124 msgid "Toggled the FPS counter"
9321125 msgstr ""
9331126
934 #: ../../../src/MenuDevConsole.cpp:534
1127 #: ../../../src/MenuDevConsole.cpp:552
9351128 msgid "ERROR: Incorrect number of arguments"
9361129 msgstr ""
9371130
938 #: ../../../src/MenuDevConsole.cpp:536 ../../../src/MenuDevConsole.cpp:564
1131 #: ../../../src/MenuDevConsole.cpp:554 ../../../src/MenuDevConsole.cpp:582
9391132 msgid "HINT:"
9401133 msgstr ""
9411134
942 #: ../../../src/MenuDevConsole.cpp:536
1135 #: ../../../src/MenuDevConsole.cpp:554
9431136 msgid "<id>"
9441137 msgstr ""
9451138
946 #: ../../../src/MenuDevConsole.cpp:552
1139 #: ../../../src/MenuDevConsole.cpp:570
9471140 #, c-format
9481141 msgid "ERROR: '%s' is not a valid event key"
9491142 msgstr ""
9501143
951 #: ../../../src/MenuDevConsole.cpp:562
1144 #: ../../../src/MenuDevConsole.cpp:580
9521145 msgid "ERROR: Too few arguments"
9531146 msgstr ""
9541147
955 #: ../../../src/MenuDevConsole.cpp:564
1148 #: ../../../src/MenuDevConsole.cpp:582
9561149 msgid "<key>=<val> <key>=<val> ..."
9571150 msgstr ""
9581151
959 #: ../../../src/MenuDevConsole.cpp:569
1152 #: ../../../src/MenuDevConsole.cpp:587
9601153 msgid "ERROR: Unknown command"
9611154 msgstr ""
9621155
963 #: ../../../src/MenuDevConsole.cpp:571
1156 #: ../../../src/MenuDevConsole.cpp:589
9641157 msgid "HINT: Type help"
9651158 msgstr ""
9661159
967 #: ../../../src/MenuEnemy.cpp:138
1160 #: ../../../src/MenuEnemy.cpp:162
9681161 #, c-format
9691162 msgid "%s level %d"
9701163 msgstr ""
9711164
972 #: ../../../src/MenuEnemy.cpp:162
1165 #: ../../../src/MenuEnemy.cpp:186
9731166 msgid "Dead"
9741167 msgstr ""
9751168
976 #: ../../../src/MenuEnemy.cpp:164
1169 #: ../../../src/MenuEnemy.cpp:188
9771170 msgid "Destroyed"
9781171 msgstr ""
9791172
980 #: ../../../src/MenuExit.cpp:85 ../../../src/MenuExit.cpp:139
981 msgid "Paused"
982 msgstr ""
983
984 #: ../../../src/MenuExit.cpp:91
985 msgid "Save & Exit"
986 msgstr ""
987
988 #: ../../../src/MenuExit.cpp:92
989 msgid "Exit"
990 msgstr ""
991
992 #: ../../../src/MenuExit.cpp:96
993 msgid "Continue"
994 msgstr ""
995
996 #: ../../../src/MenuInventory.cpp:73
997 msgid "Automatically equip items"
998 msgstr ""
999
1000 #: ../../../src/MenuInventory.cpp:188
1173 #: ../../../src/MenuGameOver.cpp:69
1174 msgid "Game Over"
1175 msgstr ""
1176
1177 #: ../../../src/MenuInventory.cpp:178
10011178 #, c-format
10021179 msgid "Lost %d%% of %s."
10031180 msgstr ""
10041181
1005 #: ../../../src/MenuInventory.cpp:195
1182 #: ../../../src/MenuInventory.cpp:185
10061183 #, c-format
10071184 msgid "Lost %d%% of total XP."
10081185 msgstr ""
10091186
1010 #: ../../../src/MenuInventory.cpp:200
1187 #: ../../../src/MenuInventory.cpp:190
10111188 #, c-format
10121189 msgid "Lost %d%% of current level XP."
10131190 msgstr ""
10141191
1015 #: ../../../src/MenuInventory.cpp:226
1192 #: ../../../src/MenuInventory.cpp:216
10161193 #, c-format
10171194 msgid "Lost %s."
10181195 msgstr ""
10191196
1020 #: ../../../src/MenuInventory.cpp:274 ../../../src/MenuStash.cpp:146
1197 #: ../../../src/MenuInventory.cpp:258 ../../../src/MenuStash.cpp:276
10211198 #, c-format
10221199 msgid "%d %s"
10231200 msgstr ""
10241201
1025 #: ../../../src/MenuInventory.cpp:317
1202 #: ../../../src/MenuInventory.cpp:301
10261203 msgid "Pick up item(s):"
10271204 msgstr ""
10281205
1029 #: ../../../src/MenuInventory.cpp:318
1206 #: ../../../src/MenuInventory.cpp:302
10301207 msgid "Use or equip item:"
10311208 msgstr ""
10321209
1033 #: ../../../src/MenuInventory.cpp:319
1210 #: ../../../src/MenuInventory.cpp:303
10341211 #, c-format
10351212 msgid "%s modifiers"
10361213 msgstr ""
10371214
1038 #: ../../../src/MenuInventory.cpp:320
1215 #: ../../../src/MenuInventory.cpp:304
10391216 msgid "Select a quantity of item:"
10401217 msgstr ""
10411218
1042 #: ../../../src/MenuInventory.cpp:323
1219 #: ../../../src/MenuInventory.cpp:307
10431220 msgid "Stash item stack:"
10441221 msgstr ""
10451222
1046 #: ../../../src/MenuInventory.cpp:325
1223 #: ../../../src/MenuInventory.cpp:309
10471224 msgid "Sell item stack:"
10481225 msgstr ""
10491226
1050 #: ../../../src/MenuInventory.cpp:592
1227 #: ../../../src/MenuInventory.cpp:576
10511228 msgid "You don't have enough of the required item."
10521229 msgstr ""
10531230
1054 #: ../../../src/MenuInventory.cpp:599
1231 #: ../../../src/MenuInventory.cpp:588
10551232 msgid "You can't use this item right now."
10561233 msgstr ""
10571234
1058 #: ../../../src/MenuInventory.cpp:611
1235 #: ../../../src/MenuInventory.cpp:600
10591236 msgid "This item can only be used from the action bar."
10601237 msgstr ""
10611238
1062 #: ../../../src/MenuInventory.cpp:729
1239 #: ../../../src/MenuInventory.cpp:718
10631240 msgid "Inventory is full."
10641241 msgstr ""
10651242
1066 #: ../../../src/MenuInventory.cpp:849
1243 #: ../../../src/MenuInventory.cpp:843
10671244 #, c-format
10681245 msgid "Not enough %s."
10691246 msgstr ""
10701247
1071 #: ../../../src/MenuInventory.cpp:869 ../../../src/MenuInventory.cpp:876
1248 #: ../../../src/MenuInventory.cpp:863 ../../../src/MenuInventory.cpp:870
10721249 msgid "This item can not be sold."
10731250 msgstr ""
10741251
10801257 msgid "Quests"
10811258 msgstr ""
10821259
1083 #: ../../../src/MenuManager.cpp:286
1260 #: ../../../src/MenuManager.cpp:305
10841261 #, c-format
10851262 msgid "XP: %d/%d"
10861263 msgstr ""
10871264
1088 #: ../../../src/MenuManager.cpp:827
1265 #: ../../../src/MenuManager.cpp:875
10891266 msgid "This item can not be dropped."
1267 msgstr ""
1268
1269 #: ../../../src/MenuManager.cpp:1501
1270 msgid "Equipped"
1271 msgstr ""
1272
1273 #: ../../../src/MenuMovementType.cpp:87
1274 msgid "Select a Movement Type"
1275 msgstr ""
1276
1277 #: ../../../src/MenuMovementType.cpp:89
1278 msgid "Can be changed later in the Configuration menu."
1279 msgstr ""
1280
1281 #: ../../../src/MenuMovementType.cpp:92 ../../../src/MenuMovementType.cpp:122
1282 msgid "Keyboard"
1283 msgstr ""
1284
1285 #: ../../../src/MenuMovementType.cpp:93 ../../../src/MenuMovementType.cpp:128
1286 msgid "Mouse"
1287 msgstr ""
1288
1289 #: ../../../src/MenuMovementType.cpp:129
1290 msgid "Button"
10901291 msgstr ""
10911292
10921293 #: ../../../src/MenuNumPicker.cpp:59
10931294 msgid "Enter amount:"
10941295 msgstr ""
10951296
1096 #: ../../../src/MenuPowers.cpp:787
1297 #: ../../../src/MenuPowers.cpp:872
10971298 msgid "Passive"
10981299 msgstr ""
10991300
1100 #: ../../../src/MenuPowers.cpp:792
1301 #: ../../../src/MenuPowers.cpp:879
11011302 #, c-format
11021303 msgid "Costs %d MP"
11031304 msgstr ""
11041305
1105 #: ../../../src/MenuPowers.cpp:796
1306 #: ../../../src/MenuPowers.cpp:883
11061307 #, c-format
11071308 msgid "Costs %d HP"
11081309 msgstr ""
11091310
1110 #: ../../../src/MenuPowers.cpp:801
1311 #: ../../../src/MenuPowers.cpp:887
11111312 msgid "Cooldown:"
11121313 msgstr ""
11131314
1114 #: ../../../src/MenuPowers.cpp:866 ../../../src/MenuPowers.cpp:869
1315 #: ../../../src/MenuPowers.cpp:938 ../../../src/MenuPowers.cpp:941
11151316 msgid "Damage per second"
11161317 msgstr ""
11171318
1118 #: ../../../src/MenuPowers.cpp:872 ../../../src/MenuPowers.cpp:875
1319 #: ../../../src/MenuPowers.cpp:944 ../../../src/MenuPowers.cpp:947
11191320 msgid "HP per second"
11201321 msgstr ""
11211322
1122 #: ../../../src/MenuPowers.cpp:878 ../../../src/MenuPowers.cpp:881
1323 #: ../../../src/MenuPowers.cpp:950 ../../../src/MenuPowers.cpp:953
11231324 msgid "MP per second"
11241325 msgstr ""
11251326
1126 #: ../../../src/MenuPowers.cpp:885
1327 #: ../../../src/MenuPowers.cpp:957
11271328 msgid "Immobilize"
11281329 msgstr ""
11291330
1130 #: ../../../src/MenuPowers.cpp:893
1331 #: ../../../src/MenuPowers.cpp:965
11311332 msgid "Immunity"
11321333 msgstr ""
11331334
1134 #: ../../../src/MenuPowers.cpp:896
1335 #: ../../../src/MenuPowers.cpp:968
11351336 msgid "Immunity to damage over time"
11361337 msgstr ""
11371338
1138 #: ../../../src/MenuPowers.cpp:899
1339 #: ../../../src/MenuPowers.cpp:971
11391340 msgid "Immunity to slow"
11401341 msgstr ""
11411342
1142 #: ../../../src/MenuPowers.cpp:902
1343 #: ../../../src/MenuPowers.cpp:974
11431344 msgid "Immunity to stun"
11441345 msgstr ""
11451346
1146 #: ../../../src/MenuPowers.cpp:905
1347 #: ../../../src/MenuPowers.cpp:977
11471348 msgid "Immunity to HP steal"
11481349 msgstr ""
11491350
1150 #: ../../../src/MenuPowers.cpp:908
1351 #: ../../../src/MenuPowers.cpp:980
11511352 msgid "Immunity to MP steal"
11521353 msgstr ""
11531354
1154 #: ../../../src/MenuPowers.cpp:911
1355 #: ../../../src/MenuPowers.cpp:983
11551356 msgid "Immunity to knockback"
11561357 msgstr ""
11571358
1158 #: ../../../src/MenuPowers.cpp:914
1359 #: ../../../src/MenuPowers.cpp:986
11591360 msgid "Immunity to damage reflection"
11601361 msgstr ""
11611362
1162 #: ../../../src/MenuPowers.cpp:917
1363 #: ../../../src/MenuPowers.cpp:992
11631364 msgid "Stun"
11641365 msgstr ""
11651366
1166 #: ../../../src/MenuPowers.cpp:920
1367 #: ../../../src/MenuPowers.cpp:995
11671368 msgid "Automatic revive on death"
11681369 msgstr ""
11691370
1170 #: ../../../src/MenuPowers.cpp:923
1371 #: ../../../src/MenuPowers.cpp:998
11711372 msgid "Convert"
11721373 msgstr ""
11731374
1174 #: ../../../src/MenuPowers.cpp:926
1375 #: ../../../src/MenuPowers.cpp:1001
11751376 msgid "Fear"
11761377 msgstr ""
11771378
1178 #: ../../../src/MenuPowers.cpp:929
1379 #: ../../../src/MenuPowers.cpp:1004
11791380 msgid "Lifespan"
11801381 msgstr ""
11811382
1182 #: ../../../src/MenuPowers.cpp:953
1383 #: ../../../src/MenuPowers.cpp:1028
11831384 msgid "Magical Shield"
11841385 msgstr ""
11851386
1186 #: ../../../src/MenuPowers.cpp:982
1387 #: ../../../src/MenuPowers.cpp:1057
11871388 msgid "Healing"
11881389 msgstr ""
11891390
1190 #: ../../../src/MenuPowers.cpp:985
1391 #: ../../../src/MenuPowers.cpp:1060
11911392 msgid "Knockback"
11921393 msgstr ""
11931394
1194 #: ../../../src/MenuPowers.cpp:1010
1395 #: ../../../src/MenuPowers.cpp:1084
11951396 #, c-format
11961397 msgid "%d%% chance"
11971398 msgstr ""
11981399
1199 #: ../../../src/MenuPowers.cpp:1062
1400 #: ../../../src/MenuPowers.cpp:1136
12001401 msgid "Base Accuracy"
12011402 msgstr ""
12021403
1203 #: ../../../src/MenuPowers.cpp:1082
1404 #: ../../../src/MenuPowers.cpp:1156
12041405 msgid "Base Critical Chance"
12051406 msgstr ""
12061407
1207 #: ../../../src/MenuPowers.cpp:1090
1408 #: ../../../src/MenuPowers.cpp:1164
12081409 msgid "Ignores Absorbtion"
12091410 msgstr ""
12101411
1211 #: ../../../src/MenuPowers.cpp:1095
1412 #: ../../../src/MenuPowers.cpp:1169
12121413 msgid "Ignores Avoidance"
12131414 msgstr ""
12141415
1215 #: ../../../src/MenuPowers.cpp:1100
1416 #: ../../../src/MenuPowers.cpp:1174
12161417 #, c-format
12171418 msgid "%d%% Chance to crit slowed targets"
12181419 msgstr ""
12191420
1220 #: ../../../src/MenuPowers.cpp:1105
1421 #: ../../../src/MenuPowers.cpp:1179
12211422 #, c-format
12221423 msgid "Elemental Damage (%s)"
12231424 msgstr ""
12241425
1225 #: ../../../src/MenuPowers.cpp:1114
1426 #: ../../../src/MenuPowers.cpp:1188
12261427 #, c-format
12271428 msgid "Requires a %s"
12281429 msgstr ""
12291430
1230 #: ../../../src/MenuPowers.cpp:1151 ../../../src/MenuPowers.cpp:1154
1431 #: ../../../src/MenuPowers.cpp:1226 ../../../src/MenuPowers.cpp:1229
12311432 #, c-format
12321433 msgid "Requires Power: %s"
12331434 msgstr ""
12341435
1235 #: ../../../src/MenuPowers.cpp:1163
1436 #: ../../../src/MenuPowers.cpp:1238
12361437 msgid "Click to Unlock (uses 1 Skill Point)"
12371438 msgstr ""
12381439
1239 #: ../../../src/MenuPowers.cpp:1167 ../../../src/MenuPowers.cpp:1169
1440 #: ../../../src/MenuPowers.cpp:1242 ../../../src/MenuPowers.cpp:1244
12401441 msgid "Requires 1 Skill Point"
12411442 msgstr ""
12421443
1243 #: ../../../src/MenuPowers.cpp:1355
1244 #, c-format
1245 msgid "%d unspent skill point"
1246 msgstr ""
1247
1248 #: ../../../src/MenuPowers.cpp:1358
1249 #, c-format
1250 msgid "%d unspent skill points"
1251 msgstr ""
1252
1253 #: ../../../src/MenuPowers.cpp:1388
1444 #: ../../../src/MenuPowers.cpp:1444
1445 #, c-format
1446 msgid "Available skill points: %d"
1447 msgstr ""
1448
1449 #: ../../../src/MenuPowers.cpp:1476
12541450 msgid "Next Level:"
12551451 msgstr ""
12561452
1257 #: ../../../src/MenuStash.cpp:96
1258 msgid "Shared Stash"
1259 msgstr ""
1260
1261 #: ../../../src/MenuStash.cpp:209
1262 msgid "Can not store quest items in the stash."
1263 msgstr ""
1264
1265 #: ../../../src/MenuStash.cpp:219
1453 #: ../../../src/MenuStash.cpp:80 ../../../src/MenuStash.cpp:161
1454 msgid "Stash"
1455 msgstr ""
1456
1457 #: ../../../src/MenuStash.cpp:174 ../../../src/MenuStash.cpp:188
1458 msgid "Private"
1459 msgstr ""
1460
1461 #: ../../../src/MenuStash.cpp:175
1462 msgid "Shared"
1463 msgstr ""
1464
1465 #: ../../../src/MenuStash.cpp:340
1466 msgid "This item can not be stored in the stash."
1467 msgstr ""
1468
1469 #: ../../../src/MenuStash.cpp:345
1470 msgid "This item can not be stored in the private stash."
1471 msgstr ""
1472
1473 #: ../../../src/MenuStash.cpp:350
1474 msgid "This item can not be stored in the shared stash."
1475 msgstr ""
1476
1477 #: ../../../src/MenuStash.cpp:360
12661478 msgid "Stash is full."
12671479 msgstr ""
12681480
1269 #: ../../../src/MenuTalker.cpp:454
1481 #: ../../../src/MenuStash.cpp:414
1482 #, c-format
1483 msgid "Can not store item in stash: %s"
1484 msgstr ""
1485
1486 #: ../../../src/MenuTalker.cpp:448
1487 #, c-format
1488 msgid "<dialog node %d>"
1489 msgstr ""
1490
1491 #: ../../../src/MenuTalker.cpp:456
12701492 msgid "Trade"
12711493 msgstr ""
12721494
1273 #: ../../../src/MenuVendor.cpp:58
1495 #: ../../../src/MenuVendor.cpp:60
12741496 msgid "Buyback"
12751497 msgstr ""
12761498
1277 #: ../../../src/MenuVendor.cpp:279
1499 #: ../../../src/MenuVendor.cpp:283
12781500 msgid "Vendor"
12791501 msgstr ""
12801502
1281 #: ../../../src/PowerManager.cpp:1136
1503 #: ../../../src/PowerManager.cpp:1208
12821504 #, c-format
12831505 msgid "+%d Shield"
12841506 msgstr ""
12851507
1286 #: ../../../src/PowerManager.cpp:1392
1508 #: ../../../src/PowerManager.cpp:1465
12871509 msgid "You are already transformed, untransform first."
12881510 msgstr ""
12891511
1290 #: ../../../src/PowerManager.cpp:1404
1512 #: ../../../src/PowerManager.cpp:1477
12911513 msgid "Could not untransform at this position."
12921514 msgstr ""
12931515
12951517 msgid "Completed Quests"
12961518 msgstr ""
12971519
1298 #: ../../../src/SaveLoad.cpp:243 ../../../src/SaveLoad.cpp:244
1520 #: ../../../src/SaveLoad.cpp:250 ../../../src/SaveLoad.cpp:251
12991521 msgid "Game saved."
13001522 msgstr ""
13011523
1302 #: ../../../src/SDLInputState.cpp:582
1524 #: ../../../src/SDLInputState.cpp:643
1525 msgid "BkSp"
1526 msgstr ""
1527
1528 #: ../../../src/SDLInputState.cpp:644
1529 msgid "Caps"
1530 msgstr ""
1531
1532 #: ../../../src/SDLInputState.cpp:645
1533 msgid "Del"
1534 msgstr ""
1535
1536 #: ../../../src/SDLInputState.cpp:647 ../../../src/SDLInputState.cpp:677
1537 msgid "End"
1538 msgstr ""
1539
1540 #: ../../../src/SDLInputState.cpp:648
1541 msgid "Esc"
1542 msgstr ""
1543
1544 #: ../../../src/SDLInputState.cpp:649 ../../../src/SDLInputState.cpp:679
1545 msgid "Home"
1546 msgstr ""
1547
1548 #: ../../../src/SDLInputState.cpp:650
1549 msgid "Ins"
1550 msgstr ""
1551
1552 #: ../../../src/SDLInputState.cpp:651
1553 msgid "LAlt"
1554 msgstr ""
1555
1556 #: ../../../src/SDLInputState.cpp:652
1557 msgid "LCtrl"
1558 msgstr ""
1559
1560 #: ../../../src/SDLInputState.cpp:654
1561 msgid "LShft"
1562 msgstr ""
1563
1564 #: ../../../src/SDLInputState.cpp:655
1565 msgid "Num"
1566 msgstr ""
1567
1568 #: ../../../src/SDLInputState.cpp:656
1569 msgid "PgDn"
1570 msgstr ""
1571
1572 #: ../../../src/SDLInputState.cpp:657
1573 msgid "PgUp"
1574 msgstr ""
1575
1576 #: ../../../src/SDLInputState.cpp:658 ../../../src/SDLInputState.cpp:688
1577 msgid "Pause"
1578 msgstr ""
1579
1580 #: ../../../src/SDLInputState.cpp:659
1581 msgid "Print"
1582 msgstr ""
1583
1584 #: ../../../src/SDLInputState.cpp:660
1585 msgid "RAlt"
1586 msgstr ""
1587
1588 #: ../../../src/SDLInputState.cpp:661
1589 msgid "RCtrl"
1590 msgstr ""
1591
1592 #: ../../../src/SDLInputState.cpp:662
1593 msgid "Ret"
1594 msgstr ""
1595
1596 #: ../../../src/SDLInputState.cpp:664
1597 msgid "RShft"
1598 msgstr ""
1599
1600 #: ../../../src/SDLInputState.cpp:665
1601 msgid "SLock"
1602 msgstr ""
1603
1604 #: ../../../src/SDLInputState.cpp:666
1605 msgid "Spc"
1606 msgstr ""
1607
1608 #: ../../../src/SDLInputState.cpp:667 ../../../src/SDLInputState.cpp:697
1609 msgid "Tab"
1610 msgstr ""
1611
1612 #: ../../../src/SDLInputState.cpp:673
13031613 msgid "Backspace"
13041614 msgstr ""
13051615
1306 #: ../../../src/SDLInputState.cpp:583
1616 #: ../../../src/SDLInputState.cpp:674
13071617 msgid "CapsLock"
13081618 msgstr ""
13091619
1310 #: ../../../src/SDLInputState.cpp:586
1311 msgid "End"
1312 msgstr ""
1313
1314 #: ../../../src/SDLInputState.cpp:587
1620 #: ../../../src/SDLInputState.cpp:678
13151621 msgid "Escape"
13161622 msgstr ""
13171623
1318 #: ../../../src/SDLInputState.cpp:588
1319 msgid "Home"
1320 msgstr ""
1321
1322 #: ../../../src/SDLInputState.cpp:589
1624 #: ../../../src/SDLInputState.cpp:680
13231625 msgid "Insert"
13241626 msgstr ""
13251627
1326 #: ../../../src/SDLInputState.cpp:590
1628 #: ../../../src/SDLInputState.cpp:681
13271629 msgid "Left Alt"
13281630 msgstr ""
13291631
1330 #: ../../../src/SDLInputState.cpp:591
1632 #: ../../../src/SDLInputState.cpp:682
13311633 msgid "Left Ctrl"
13321634 msgstr ""
13331635
1334 #: ../../../src/SDLInputState.cpp:593
1636 #: ../../../src/SDLInputState.cpp:684
13351637 msgid "Left Shift"
13361638 msgstr ""
13371639
1338 #: ../../../src/SDLInputState.cpp:594
1640 #: ../../../src/SDLInputState.cpp:685
13391641 msgid "NumLock"
13401642 msgstr ""
13411643
1342 #: ../../../src/SDLInputState.cpp:595
1644 #: ../../../src/SDLInputState.cpp:686
13431645 msgid "PageDown"
13441646 msgstr ""
13451647
1346 #: ../../../src/SDLInputState.cpp:596
1648 #: ../../../src/SDLInputState.cpp:687
13471649 msgid "PageUp"
13481650 msgstr ""
13491651
1350 #: ../../../src/SDLInputState.cpp:597
1351 msgid "Pause"
1352 msgstr ""
1353
1354 #: ../../../src/SDLInputState.cpp:598
1652 #: ../../../src/SDLInputState.cpp:689
13551653 msgid "PrintScreen"
13561654 msgstr ""
13571655
1358 #: ../../../src/SDLInputState.cpp:599
1656 #: ../../../src/SDLInputState.cpp:690
13591657 msgid "Right Alt"
13601658 msgstr ""
13611659
1362 #: ../../../src/SDLInputState.cpp:600
1660 #: ../../../src/SDLInputState.cpp:691
13631661 msgid "Right Ctrl"
13641662 msgstr ""
13651663
1366 #: ../../../src/SDLInputState.cpp:601
1664 #: ../../../src/SDLInputState.cpp:692
13671665 msgid "Return"
13681666 msgstr ""
13691667
1370 #: ../../../src/SDLInputState.cpp:603
1668 #: ../../../src/SDLInputState.cpp:694
13711669 msgid "Right Shift"
13721670 msgstr ""
13731671
1374 #: ../../../src/SDLInputState.cpp:604
1672 #: ../../../src/SDLInputState.cpp:695
13751673 msgid "ScrollLock"
13761674 msgstr ""
13771675
1378 #: ../../../src/SDLInputState.cpp:605
1676 #: ../../../src/SDLInputState.cpp:696
13791677 msgid "Space"
13801678 msgstr ""
13811679
1382 #: ../../../src/SDLInputState.cpp:606
1383 msgid "Tab"
1384 msgstr ""
1385
1386 #: ../../../src/SDLInputState.cpp:620
1680 #: ../../../src/SDLInputState.cpp:710
1681 #, c-format
1682 msgid "M%d"
1683 msgstr ""
1684
1685 #: ../../../src/SDLInputState.cpp:716
13871686 #, c-format
13881687 msgid "Mouse %d"
13891688 msgstr ""
13901689
1391 #: ../../../src/SDLInputState.cpp:628
1690 #: ../../../src/SDLInputState.cpp:726
1691 #, c-format
1692 msgid "JX%d-"
1693 msgstr ""
1694
1695 #: ../../../src/SDLInputState.cpp:728
13921696 #, c-format
13931697 msgid "Axis %d -"
13941698 msgstr ""
13951699
1396 #: ../../../src/SDLInputState.cpp:630
1700 #: ../../../src/SDLInputState.cpp:732
1701 #, c-format
1702 msgid "JX%d+"
1703 msgstr ""
1704
1705 #: ../../../src/SDLInputState.cpp:734
13971706 #, c-format
13981707 msgid "Axis %d +"
13991708 msgstr ""
14001709
1401 #: ../../../src/SDLInputState.cpp:633
1710 #: ../../../src/SDLInputState.cpp:739
1711 #, c-format
1712 msgid "JB%d"
1713 msgstr ""
1714
1715 #: ../../../src/SDLInputState.cpp:741
14021716 #, c-format
14031717 msgid "Button %d"
14041718 msgstr ""
14051719
1406 #: ../../../src/SDLInputState.cpp:637
1407 msgid "(none)"
1408 msgstr ""
1409
1410 #: ../../../src/SDLInputState.cpp:677
1720 #: ../../../src/SDLInputState.cpp:787
14111721 msgid "Touch control D-Pad"
14121722 msgstr ""
14131723
1414 #: ../../../src/SDLInputState.cpp:701
1724 #: ../../../src/SDLInputState.cpp:810
14151725 msgid "Touch control buttons"
14161726 msgstr ""
14171727
1418 #: ../../../src/SDLInputState.cpp:716
1728 #: ../../../src/SDLInputState.cpp:824
14191729 msgid "Tap"
14201730 msgstr ""
14211731
1422 #: ../../../src/SDLInputState.cpp:760 ../../../src/SDLInputState.cpp:764
1423 #: ../../../src/SDLInputState.cpp:768
1732 #: ../../../src/SDLInputState.cpp:876 ../../../src/SDLInputState.cpp:878
1733 #, c-format
1734 msgid "Can not bind: %s"
1735 msgstr ""
1736
1737 #: ../../../src/SDLInputState.cpp:890 ../../../src/SDLInputState.cpp:894
1738 #: ../../../src/SDLInputState.cpp:898
14241739 #, c-format
14251740 msgid "'%s' is no longer bound to:"
14261741 msgstr ""
15791894 msgid "Base MP"
15801895 msgstr ""
15811896
1582 #: ../../../src/Utils.cpp:346
1897 #: ../../../src/Utils.cpp:365
15831898 msgid "k"
15841899 msgstr ""
15851900
1586 #: ../../../src/Utils.cpp:580
1901 #: ../../../src/Utils.cpp:635
15871902 #, c-format
15881903 msgid "%s second"
15891904 msgstr ""
15901905
1591 #: ../../../src/Utils.cpp:583
1906 #: ../../../src/Utils.cpp:638
15921907 #, c-format
15931908 msgid "%s seconds"
15941909 msgstr ""
0 # SOME DESCRIPTIVE TITLE.
1 # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
2 # This file is distributed under the same license as the PACKAGE package.
3 # FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
4 #
5 # Translators:
6 # Justin Jacobs <jajdorkster@gmail.com>, 2019
7 #
8 #, fuzzy
9 msgid ""
10 msgstr ""
11 "Project-Id-Version: PACKAGE VERSION\n"
12 "Report-Msgid-Bugs-To: \n"
13 "POT-Creation-Date: 2021-05-23 20:34-0400\n"
14 "PO-Revision-Date: 2018-03-28 19:16+0000\n"
15 "Last-Translator: Justin Jacobs <jajdorkster@gmail.com>, 2019\n"
16 "Language-Team: Hungarian (https://www.transifex.com/flareorg/teams/84925/hu/)\n"
17 "MIME-Version: 1.0\n"
18 "Content-Type: text/plain; charset=UTF-8\n"
19 "Content-Transfer-Encoding: 8bit\n"
20 "Language: hu\n"
21 "Plural-Forms: nplurals=2; plural=(n != 1);\n"
22
23 #: ../../../src/Avatar.cpp:391
24 msgid "Your health is low!"
25 msgstr ""
26
27 #: ../../../src/Avatar.cpp:421
28 #, c-format
29 msgid "Congratulations, you have reached level %d!"
30 msgstr "Gratulálunk, %d szintre léptél!"
31
32 #: ../../../src/Avatar.cpp:423
33 msgid "You may increase one or more attributes through the Character Menu."
34 msgstr ""
35
36 #: ../../../src/Avatar.cpp:427
37 msgid "You may unlock one or more abilities through the Powers Menu."
38 msgstr ""
39
40 #: ../../../src/Avatar.cpp:689
41 msgid "You are defeated."
42 msgstr ""
43
44 #: ../../../src/Avatar.cpp:935
45 msgid "Transformation expired. You have been moved back to a safe place."
46 msgstr "A transzformáció elmúlt. Visszakerültél egy biztonságos helyre."
47
48 #: ../../../src/CampaignManager.cpp:152
49 #, c-format
50 msgid "%d %s removed."
51 msgstr "%d %s eltávolítva."
52
53 #: ../../../src/CampaignManager.cpp:171
54 #, c-format
55 msgid "%s x%d removed."
56 msgstr ""
57
58 #: ../../../src/CampaignManager.cpp:173
59 #, c-format
60 msgid "%s removed."
61 msgstr "%s eltávolítva."
62
63 #: ../../../src/CampaignManager.cpp:187
64 #, c-format
65 msgid "You receive %d %s."
66 msgstr "Kaptál: %d %s."
67
68 #: ../../../src/CampaignManager.cpp:191
69 #, c-format
70 msgid "You receive %s x%d."
71 msgstr "Kaptál: %s x%d"
72
73 #: ../../../src/CampaignManager.cpp:193
74 #, c-format
75 msgid "You receive %s."
76 msgstr "Kaptál: %s"
77
78 #: ../../../src/CampaignManager.cpp:210
79 #, c-format
80 msgid "You receive %d XP."
81 msgstr "Kaptál %d TP-t."
82
83 #: ../../../src/CampaignManager.cpp:216
84 msgid "HP restored."
85 msgstr "ÉP visszaállítva."
86
87 #: ../../../src/CampaignManager.cpp:220
88 msgid "MP restored."
89 msgstr "MP visszaállítva."
90
91 #: ../../../src/CampaignManager.cpp:225
92 msgid "HP and MP restored."
93 msgstr "ÉP és MP visszaállítva."
94
95 #: ../../../src/CampaignManager.cpp:229
96 msgid "Negative effects removed."
97 msgstr "Negatív hatások elmúltak."
98
99 #: ../../../src/CampaignManager.cpp:235
100 msgid "HP and MP restored, negative effects removed"
101 msgstr "ÉP és MP visszaállítva, negatív hatások elmúltak"
102
103 #: ../../../src/DeviceList.cpp:56
104 msgid ""
105 "SDL software renderer\n"
106 "\n"
107 "Often slower, but less likely to have issues."
108 msgstr ""
109 "SDL szoftver megjelenítő\n"
110 "Általában lassabb, de tutira működik."
111
112 #: ../../../src/DeviceList.cpp:59
113 msgid ""
114 "SDL hardware renderer\n"
115 "\n"
116 "The default renderer that is often faster than the SDL software renderer."
117 msgstr ""
118 "SDL hardver megjelenítő\n"
119 "Alapértelmezett, általában gyorsabb, mint a szoftveres."
120
121 #: ../../../src/EngineSettings.cpp:586
122 msgid "Adventurer"
123 msgstr "Kalandozó"
124
125 #: ../../../src/Entity.cpp:527
126 msgid "miss"
127 msgstr "elvétve"
128
129 #: ../../../src/Entity.cpp:565 ../../../src/PowerManager.cpp:1224
130 #: ../../../src/StatBlock.cpp:917 ../../../src/StatBlock.cpp:923
131 #, c-format
132 msgid "+%d HP"
133 msgstr "+%d ÉP"
134
135 #: ../../../src/Entity.cpp:572 ../../../src/StatBlock.cpp:928
136 #: ../../../src/StatBlock.cpp:934
137 #, c-format
138 msgid "+%d MP"
139 msgstr ""
140
141 #: ../../../src/EventManager.cpp:792
142 msgid "Unknown destination"
143 msgstr "Ismeretlen célállomás"
144
145 #: ../../../src/GameState.cpp:37 ../../../src/GameState.cpp:58
146 msgid "Loading..."
147 msgstr "Betöltés..."
148
149 #: ../../../src/GameStateLoad.cpp:90 ../../../src/GameStateLoad.cpp:103
150 msgid "Delete Save"
151 msgstr "Állás törlése"
152
153 #: ../../../src/GameStateLoad.cpp:90
154 msgid "Delete this save?"
155 msgstr "Letöröljem ezt a mentést?"
156
157 #: ../../../src/GameStateLoad.cpp:92
158 msgid "Exit to Title"
159 msgstr "Vissza"
160
161 #: ../../../src/GameStateLoad.cpp:95
162 msgid "New Game"
163 msgstr "Új Játék"
164
165 #: ../../../src/GameStateLoad.cpp:99 ../../../src/GameStateLoad.cpp:607
166 msgid "Choose a Slot"
167 msgstr "Válassz rekeszt"
168
169 #: ../../../src/GameStateLoad.cpp:580 ../../../src/GameStateLoad.cpp:601
170 msgid "Enable a story mod to continue"
171 msgstr "Engedélyezz egy sztori mod-ot a folytatáshoz"
172
173 #: ../../../src/GameStateLoad.cpp:596
174 msgid "Load Game"
175 msgstr "Betöltés"
176
177 #: ../../../src/GameStateLoad.cpp:705
178 msgid "Entering game world..."
179 msgstr "Belépés a játék világába..."
180
181 #: ../../../src/GameStateLoad.cpp:708
182 msgid "Loading saved game..."
183 msgstr "Elmentett játék betöltése..."
184
185 #: ../../../src/GameStateLoad.cpp:741
186 msgid "Invalid save"
187 msgstr "Hibás mentés"
188
189 #: ../../../src/GameStateLoad.cpp:765 ../../../src/ItemManager.cpp:745
190 #: ../../../src/MenuPowers.cpp:860 ../../../src/MenuPowers.cpp:1219
191 #: ../../../src/MenuPowers.cpp:1631
192 #, c-format
193 msgid "Level %d"
194 msgstr "%d. szint"
195
196 #: ../../../src/GameStateNew.cpp:66 ../../../src/InputState.cpp:416
197 #: ../../../src/MenuConfig.cpp:246
198 msgid "Cancel"
199 msgstr "Mégsem"
200
201 #: ../../../src/GameStateNew.cpp:69
202 msgid "Create"
203 msgstr "Létrehoz"
204
205 #: ../../../src/GameStateNew.cpp:77
206 msgid "Randomize"
207 msgstr ""
208
209 #: ../../../src/GameStateNew.cpp:93
210 msgid "Choose a Portrait"
211 msgstr "Válassz arcot"
212
213 #: ../../../src/GameStateNew.cpp:97
214 msgid "Choose a Name"
215 msgstr "Válassz nevet"
216
217 #: ../../../src/GameStateNew.cpp:101
218 msgid "Permadeath?"
219 msgstr "Végleges halál?"
220
221 #: ../../../src/GameStateNew.cpp:105
222 msgid "Choose a Class"
223 msgstr "Válassz hivatást"
224
225 #: ../../../src/GameStateTitle.cpp:107
226 msgid "Play Game"
227 msgstr "Játék indítása"
228
229 #: ../../../src/GameStateTitle.cpp:110
230 msgid "Enable a core mod to continue"
231 msgstr "Engedélyezd a mag mod-ot a folytatáshoz"
232
233 #: ../../../src/GameStateTitle.cpp:114 ../../../src/MenuMiniMap.cpp:152
234 msgid "Configuration"
235 msgstr "Konfiguráció"
236
237 #: ../../../src/GameStateTitle.cpp:117
238 msgid "Credits"
239 msgstr "Készítők"
240
241 #: ../../../src/GameStateTitle.cpp:120
242 msgid "Exit Game"
243 msgstr "Kilépés"
244
245 #: ../../../src/InputState.cpp:417
246 msgid "Accept"
247 msgstr "Elfogad"
248
249 #: ../../../src/InputState.cpp:418 ../../../src/MenuMovementType.cpp:123
250 #: ../../../src/MenuMovementType.cpp:132 ../../../src/SDLInputState.cpp:668
251 #: ../../../src/SDLInputState.cpp:698
252 msgid "Up"
253 msgstr "Fel"
254
255 #: ../../../src/InputState.cpp:419 ../../../src/MenuMovementType.cpp:125
256 #: ../../../src/MenuMovementType.cpp:134 ../../../src/SDLInputState.cpp:646
257 #: ../../../src/SDLInputState.cpp:676
258 msgid "Down"
259 msgstr "Le"
260
261 #: ../../../src/InputState.cpp:420 ../../../src/MenuMovementType.cpp:124
262 #: ../../../src/MenuMovementType.cpp:133 ../../../src/SDLInputState.cpp:653
263 #: ../../../src/SDLInputState.cpp:683
264 msgid "Left"
265 msgstr "Balra"
266
267 #: ../../../src/InputState.cpp:421 ../../../src/MenuMovementType.cpp:126
268 #: ../../../src/MenuMovementType.cpp:135 ../../../src/SDLInputState.cpp:663
269 #: ../../../src/SDLInputState.cpp:693
270 msgid "Right"
271 msgstr "Jobbra"
272
273 #: ../../../src/InputState.cpp:422
274 msgid "Bar1"
275 msgstr ""
276
277 #: ../../../src/InputState.cpp:423
278 msgid "Bar2"
279 msgstr ""
280
281 #: ../../../src/InputState.cpp:424
282 msgid "Bar3"
283 msgstr ""
284
285 #: ../../../src/InputState.cpp:425
286 msgid "Bar4"
287 msgstr ""
288
289 #: ../../../src/InputState.cpp:426
290 msgid "Bar5"
291 msgstr ""
292
293 #: ../../../src/InputState.cpp:427
294 msgid "Bar6"
295 msgstr ""
296
297 #: ../../../src/InputState.cpp:428
298 msgid "Bar7"
299 msgstr ""
300
301 #: ../../../src/InputState.cpp:429
302 msgid "Bar8"
303 msgstr ""
304
305 #: ../../../src/InputState.cpp:430
306 msgid "Bar9"
307 msgstr ""
308
309 #: ../../../src/InputState.cpp:431
310 msgid "Bar0"
311 msgstr ""
312
313 #: ../../../src/InputState.cpp:432 ../../../src/MenuActionBar.cpp:84
314 #: ../../../src/MenuCharacter.cpp:54
315 msgid "Character"
316 msgstr "Karakter"
317
318 #: ../../../src/InputState.cpp:433 ../../../src/MenuActionBar.cpp:85
319 #: ../../../src/MenuInventory.cpp:130 ../../../src/MenuVendor.cpp:59
320 msgid "Inventory"
321 msgstr "Felszerelés"
322
323 #: ../../../src/InputState.cpp:434 ../../../src/MenuActionBar.cpp:86
324 #: ../../../src/MenuPowers.cpp:158
325 msgid "Powers"
326 msgstr "Erők"
327
328 #: ../../../src/InputState.cpp:435 ../../../src/MenuActionBar.cpp:87
329 #: ../../../src/MenuLog.cpp:72
330 msgid "Log"
331 msgstr "Jegyzetek"
332
333 #: ../../../src/InputState.cpp:436
334 msgid "Main1"
335 msgstr "Támad1"
336
337 #: ../../../src/InputState.cpp:437
338 msgid "Main2"
339 msgstr "Támad2"
340
341 #: ../../../src/InputState.cpp:438
342 msgid "Ctrl"
343 msgstr ""
344
345 #: ../../../src/InputState.cpp:439
346 msgid "Shift"
347 msgstr ""
348
349 #: ../../../src/InputState.cpp:440
350 msgid "Alt"
351 msgstr ""
352
353 #: ../../../src/InputState.cpp:441 ../../../src/SDLInputState.cpp:675
354 msgid "Delete"
355 msgstr "Törlés"
356
357 #: ../../../src/InputState.cpp:442
358 msgid "ActionBar Accept"
359 msgstr "AkcióSáv Elfogad"
360
361 #: ../../../src/InputState.cpp:443
362 msgid "ActionBar Left"
363 msgstr "Akciósáv Bal"
364
365 #: ../../../src/InputState.cpp:444
366 msgid "ActionBar Right"
367 msgstr "AkcióSáv Jobb"
368
369 #: ../../../src/InputState.cpp:445
370 msgid "ActionBar Use"
371 msgstr "AkcióSáv Használ"
372
373 #: ../../../src/InputState.cpp:446
374 msgid "Developer Menu"
375 msgstr "Fejlesztői Menü"
376
377 #: ../../../src/InputState.cpp:448
378 msgid "Left Mouse"
379 msgstr "Bal egér"
380
381 #: ../../../src/InputState.cpp:449
382 msgid "Middle Mouse"
383 msgstr "Középső egér"
384
385 #: ../../../src/InputState.cpp:450
386 msgid "Right Mouse"
387 msgstr "Jobb egér"
388
389 #: ../../../src/InputState.cpp:451
390 msgid "Wheel Up"
391 msgstr "Görgetés fel"
392
393 #: ../../../src/InputState.cpp:452
394 msgid "Wheel Down"
395 msgstr "Görgetés le"
396
397 #: ../../../src/InputState.cpp:453
398 msgid "Mouse X1"
399 msgstr "Egér X1"
400
401 #: ../../../src/InputState.cpp:454
402 msgid "Mouse X2"
403 msgstr "Egér X2"
404
405 #: ../../../src/ItemManager.cpp:475
406 msgid "Unknown Item"
407 msgstr "Ismeretlen tárgy"
408
409 #: ../../../src/ItemManager.cpp:646 ../../../src/MenuPowers.cpp:959
410 #, c-format
411 msgid "%d%% Speed"
412 msgstr "%d%% sebesség"
413
414 #: ../../../src/ItemManager.cpp:650 ../../../src/MenuPowers.cpp:962
415 #, c-format
416 msgid "%d%% Attack Speed"
417 msgstr "%d%% támadás sebesség"
418
419 #: ../../../src/ItemManager.cpp:672 ../../../src/MenuCharacter.cpp:352
420 #: ../../../src/MenuPowers.cpp:931
421 #, c-format
422 msgid "Resistance (%s)"
423 msgstr ""
424
425 #: ../../../src/ItemManager.cpp:682
426 #, c-format
427 msgid "Requires %s"
428 msgstr ""
429
430 #: ../../../src/ItemManager.cpp:731
431 msgid "Quest Item"
432 msgstr "Küldetéstárgy"
433
434 #: ../../../src/ItemManager.cpp:758
435 #, c-format
436 msgid "Quality: %s"
437 msgstr "Gyakoriság: %s"
438
439 #: ../../../src/ItemManager.cpp:783
440 #, c-format
441 msgid "Absorb: %d-%d"
442 msgstr "Felfog: %d-%d"
443
444 #: ../../../src/ItemManager.cpp:785
445 #, c-format
446 msgid "Absorb: %d"
447 msgstr "Felfog: %d"
448
449 #: ../../../src/ItemManager.cpp:825 ../../../src/MenuPowers.cpp:1206
450 #: ../../../src/MenuPowers.cpp:1209
451 #, c-format
452 msgid "Requires Level %d"
453 msgstr "%d szint kell hozzá"
454
455 #: ../../../src/ItemManager.cpp:836 ../../../src/MenuPowers.cpp:1198
456 #: ../../../src/MenuPowers.cpp:1200
457 #, c-format
458 msgid "Requires %s %d"
459 msgstr "%s %d kell hozzá"
460
461 #: ../../../src/ItemManager.cpp:847
462 #, c-format
463 msgid "Requires Class: %s"
464 msgstr "%s hivatás kell hozzá"
465
466 #: ../../../src/ItemManager.cpp:863 ../../../src/ItemManager.cpp:875
467 #, c-format
468 msgid "Buy Price: %d %s"
469 msgstr "Vételár: %d %s"
470
471 #: ../../../src/ItemManager.cpp:865 ../../../src/ItemManager.cpp:877
472 #, c-format
473 msgid "Buy Price: %d %s each"
474 msgstr "Vételár: %d %s per db"
475
476 #: ../../../src/ItemManager.cpp:885
477 #, c-format
478 msgid "Sell Price: %d %s"
479 msgstr "Eladási ár: %d %s"
480
481 #: ../../../src/ItemManager.cpp:887
482 #, c-format
483 msgid "Sell Price: %d %s each"
484 msgstr "Eladási ár: %d %s per db"
485
486 #: ../../../src/ItemManager.cpp:896
487 msgid "Set:"
488 msgstr "Gyűjtemény:"
489
490 #: ../../../src/ItemManager.cpp:903
491 #, c-format
492 msgid "%d items:"
493 msgstr "%d tárgy:"
494
495 #: ../../../src/ItemManager.cpp:915
496 #, c-format
497 msgid "Press [%s] to read"
498 msgstr "Üsd le a [%s]-t az elolvasáshoz"
499
500 #: ../../../src/ItemManager.cpp:918
501 #, c-format
502 msgid "Press [%s] to use"
503 msgstr "Üsd le a [%s]-t a használathoz"
504
505 #: ../../../src/MenuActionBar.cpp:239 ../../../src/MenuActionBar.cpp:246
506 #: ../../../src/MenuActionBar.cpp:249 ../../../src/MenuActionBar.cpp:255
507 #, c-format
508 msgid "Hotkey: %s"
509 msgstr "Gyorsgomb: %s"
510
511 #: ../../../src/MenuActionBar.cpp:621
512 msgid "Not enough MP."
513 msgstr ""
514
515 #: ../../../src/MenuActiveEffects.cpp:124
516 #, c-format
517 msgid "x%d"
518 msgstr ""
519
520 #: ../../../src/MenuActiveEffects.cpp:219
521 msgid "Remaining:"
522 msgstr "Visszavan:"
523
524 #: ../../../src/MenuActiveEffects.cpp:225
525 #, c-format
526 msgid "x%d stacks"
527 msgstr "x%d dugihely"
528
529 #: ../../../src/MenuCharacter.cpp:73 ../../../src/MenuCharacter.cpp:78
530 msgid "Name"
531 msgstr "Név"
532
533 #: ../../../src/MenuCharacter.cpp:74 ../../../src/MenuCharacter.cpp:79
534 msgid "Level"
535 msgstr "Szint"
536
537 #: ../../../src/MenuCharacter.cpp:309
538 #, c-format
539 msgid "Available stat points: %d"
540 msgstr ""
541
542 #: ../../../src/MenuCharacter.cpp:353
543 #, c-format
544 msgid "Reduces the damage taken from \"%s\" elemental attacks."
545 msgstr ""
546
547 #: ../../../src/MenuCharacter.cpp:363 ../../../src/MenuManager.cpp:301
548 #, c-format
549 msgid "XP: %d"
550 msgstr "TP: %d"
551
552 #: ../../../src/MenuCharacter.cpp:365
553 #, c-format
554 msgid "Next: %d"
555 msgstr "Következő: %d"
556
557 #: ../../../src/MenuCharacter.cpp:371
558 #, c-format
559 msgid "base (%d), bonus (%d)"
560 msgstr "alap (%d), bónusz (%d)"
561
562 #: ../../../src/MenuCharacter.cpp:379 ../../../src/MenuCharacter.cpp:393
563 msgid "Related stats:"
564 msgstr "Kapcsolódó statisztika:"
565
566 #: ../../../src/MenuCharacter.cpp:419 ../../../src/MenuCharacter.cpp:443
567 #, c-format
568 msgid "Each level grants %d."
569 msgstr "Minden szint %d-t ad."
570
571 #: ../../../src/MenuCharacter.cpp:423 ../../../src/MenuCharacter.cpp:447
572 #, c-format
573 msgid "Each point of %s grants %d."
574 msgstr "Minden %s pont ad %d-t."
575
576 #: ../../../src/MenuConfig.cpp:122 ../../../src/MenuConfig.cpp:1171
577 msgid "Clear"
578 msgstr "Törlés"
579
580 #: ../../../src/MenuConfig.cpp:122 ../../../src/MenuConfig.cpp:1169
581 msgid "Assign:"
582 msgstr "Hozzáad:"
583
584 #: ../../../src/MenuConfig.cpp:123 ../../../src/MenuConfig.cpp:245
585 msgid "Defaults"
586 msgstr "Alapértelmezés"
587
588 #: ../../../src/MenuConfig.cpp:123
589 msgid "Reset ALL settings?"
590 msgstr "Minden beállítást visszaállítsak?"
591
592 #: ../../../src/MenuConfig.cpp:244 ../../../src/MenuNumPicker.cpp:49
593 msgid "OK"
594 msgstr ""
595
596 #: ../../../src/MenuConfig.cpp:248 ../../../src/MenuGameOver.cpp:72
597 msgid "Continue"
598 msgstr "Folytatás"
599
600 #: ../../../src/MenuConfig.cpp:250
601 msgid "Save Game"
602 msgstr ""
603
604 #: ../../../src/MenuConfig.cpp:293
605 msgid "Default"
606 msgstr ""
607
608 #: ../../../src/MenuConfig.cpp:293
609 msgid ""
610 "Show all loot tooltips, except for those that would be obscured by the "
611 "player or an enemy. Temporarily show all loot tooltips with 'Alt'."
612 msgstr ""
613
614 #: ../../../src/MenuConfig.cpp:294
615 msgid "Show all"
616 msgstr ""
617
618 #: ../../../src/MenuConfig.cpp:294
619 msgid ""
620 "Always show loot tooltips. Temporarily hide all loot tooltips with 'Alt'."
621 msgstr ""
622
623 #: ../../../src/MenuConfig.cpp:295 ../../../src/MenuConfig.cpp:300
624 msgid "Hidden"
625 msgstr ""
626
627 #: ../../../src/MenuConfig.cpp:295
628 msgid ""
629 "Always hide loot tooltips, except for when a piece of loot is hovered with "
630 "the mouse cursor. Temporarily show all loot tooltips with 'Alt'."
631 msgstr ""
632
633 #: ../../../src/MenuConfig.cpp:298
634 msgid "Visible"
635 msgstr ""
636
637 #: ../../../src/MenuConfig.cpp:299
638 msgid "Visible (2x zoom)"
639 msgstr ""
640
641 #: ../../../src/MenuConfig.cpp:303
642 msgid ""
643 "Controls the type of warning to be activated when the player is below the "
644 "low health threshold."
645 msgstr ""
646
647 #: ../../../src/MenuConfig.cpp:304
648 msgid "- Display a message"
649 msgstr ""
650
651 #: ../../../src/MenuConfig.cpp:305
652 msgid "- Play a sound"
653 msgstr ""
654
655 #: ../../../src/MenuConfig.cpp:306
656 msgid "- Change the cursor"
657 msgstr ""
658
659 #: ../../../src/MenuConfig.cpp:308
660 msgid "Disabled"
661 msgstr ""
662
663 #: ../../../src/MenuConfig.cpp:309
664 msgid "All"
665 msgstr ""
666
667 #: ../../../src/MenuConfig.cpp:310
668 msgid "Message & Cursor"
669 msgstr ""
670
671 #: ../../../src/MenuConfig.cpp:311
672 msgid "Message & Sound"
673 msgstr ""
674
675 #: ../../../src/MenuConfig.cpp:312
676 msgid "Sound & Cursor"
677 msgstr ""
678
679 #: ../../../src/MenuConfig.cpp:313
680 msgid "Message"
681 msgstr ""
682
683 #: ../../../src/MenuConfig.cpp:314
684 msgid "Cursor"
685 msgstr ""
686
687 #: ../../../src/MenuConfig.cpp:315
688 msgid "Sound"
689 msgstr ""
690
691 #: ../../../src/MenuConfig.cpp:321
692 msgid ""
693 "When the player's health drops below the given threshold, the low health "
694 "notifications are triggered if one or more of them is enabled."
695 msgstr ""
696
697 #: ../../../src/MenuConfig.cpp:334 ../../../src/MenuConfig.cpp:1587
698 #: ../../../src/MenuGameOver.cpp:116
699 msgid "Exit"
700 msgstr "Kilépés"
701
702 #: ../../../src/MenuConfig.cpp:335
703 msgid "Video"
704 msgstr "Videó"
705
706 #: ../../../src/MenuConfig.cpp:336
707 msgid "Audio"
708 msgstr "Hang"
709
710 #: ../../../src/MenuConfig.cpp:337
711 msgid "Interface"
712 msgstr "Felület"
713
714 #: ../../../src/MenuConfig.cpp:338
715 msgid "Input"
716 msgstr "Bemenet"
717
718 #: ../../../src/MenuConfig.cpp:339
719 msgid "Keybindings"
720 msgstr "Billentyűk"
721
722 #: ../../../src/MenuConfig.cpp:340
723 msgid "Mods"
724 msgstr "Modok"
725
726 #: ../../../src/MenuConfig.cpp:352
727 msgid "Paused"
728 msgstr "Megállítva"
729
730 #: ../../../src/MenuConfig.cpp:355
731 msgid "Time Played"
732 msgstr ""
733
734 #: ../../../src/MenuConfig.cpp:361
735 msgid "Renderer"
736 msgstr "Megjelenítő"
737
738 #: ../../../src/MenuConfig.cpp:362
739 msgid "Full Screen Mode"
740 msgstr "Teljes képernyő"
741
742 #: ../../../src/MenuConfig.cpp:363
743 msgid "Hardware surfaces"
744 msgstr "Hardveres felületek"
745
746 #: ../../../src/MenuConfig.cpp:364
747 msgid "V-Sync"
748 msgstr ""
749
750 #: ../../../src/MenuConfig.cpp:365
751 msgid "Texture Filtering"
752 msgstr "Textúra szűrő"
753
754 #: ../../../src/MenuConfig.cpp:366
755 msgid "DPI scaling"
756 msgstr "DPI skálázás"
757
758 #: ../../../src/MenuConfig.cpp:367
759 msgid "Parallax Layers"
760 msgstr ""
761
762 #: ../../../src/MenuConfig.cpp:368
763 msgid "Allow changing gamma"
764 msgstr "Gamma korrekció engedélyezés"
765
766 #: ../../../src/MenuConfig.cpp:369
767 msgid "Gamma"
768 msgstr ""
769
770 #: ../../../src/MenuConfig.cpp:371
771 msgid "Sound Volume"
772 msgstr "Effektek hangereje"
773
774 #: ../../../src/MenuConfig.cpp:372
775 msgid "Music Volume"
776 msgstr "Zene hangereje"
777
778 #: ../../../src/MenuConfig.cpp:374
779 msgid "Language"
780 msgstr "Nyelv"
781
782 #: ../../../src/MenuConfig.cpp:375
783 msgid "Show FPS"
784 msgstr "FPS mutatása"
785
786 #: ../../../src/MenuConfig.cpp:376
787 msgid "Hardware mouse cursor"
788 msgstr "Hardveres egérmutató"
789
790 #: ../../../src/MenuConfig.cpp:377
791 msgid "Colorblind Mode"
792 msgstr "Színvak mód"
793
794 #: ../../../src/MenuConfig.cpp:378
795 msgid "Developer Mode"
796 msgstr "Fejlesztői mód"
797
798 #: ../../../src/MenuConfig.cpp:379
799 msgid "Subtitles"
800 msgstr "Feliratok"
801
802 #: ../../../src/MenuConfig.cpp:380
803 msgid "Loot tooltip visibility"
804 msgstr ""
805
806 #: ../../../src/MenuConfig.cpp:381
807 msgid "Mini-map mode"
808 msgstr ""
809
810 #: ../../../src/MenuConfig.cpp:382
811 msgid "Always show stat bar labels"
812 msgstr "Mindig mutassa a státusz cimkéit"
813
814 #: ../../../src/MenuConfig.cpp:383
815 msgid "Allow stat bar auto-hiding"
816 msgstr ""
817
818 #: ../../../src/MenuConfig.cpp:384
819 msgid "Show combat text"
820 msgstr "Küzdelem kiírása szövegesen"
821
822 #: ../../../src/MenuConfig.cpp:385
823 msgid "Automatically equip items"
824 msgstr "Automatikusan használja a tárgyakat"
825
826 #: ../../../src/MenuConfig.cpp:386
827 msgid "Show hidden entity markers"
828 msgstr ""
829
830 #: ../../../src/MenuConfig.cpp:387
831 msgid "Low health notification"
832 msgstr ""
833
834 #: ../../../src/MenuConfig.cpp:388
835 msgid "Low health threshold"
836 msgstr ""
837
838 #: ../../../src/MenuConfig.cpp:389
839 msgid "Show item comparison tooltips"
840 msgstr ""
841
842 #: ../../../src/MenuConfig.cpp:392 ../../../src/MenuMovementType.cpp:94
843 #: ../../../src/MenuMovementType.cpp:131
844 msgid "Joystick"
845 msgstr "Botkormány"
846
847 #: ../../../src/MenuConfig.cpp:393
848 msgid "Move hero using mouse"
849 msgstr "Hős mozgatása egérrel"
850
851 #: ../../../src/MenuConfig.cpp:394
852 msgid "Mouse aim"
853 msgstr "Egérrel célzás"
854
855 #: ../../../src/MenuConfig.cpp:395
856 msgid "Do not use mouse"
857 msgstr "Ne használja az egeret"
858
859 #: ../../../src/MenuConfig.cpp:396
860 msgid "Swap mouse movement button"
861 msgstr ""
862
863 #: ../../../src/MenuConfig.cpp:397
864 msgid "Attack with mouse movement"
865 msgstr ""
866
867 #: ../../../src/MenuConfig.cpp:398
868 msgid "Joystick Deadzone"
869 msgstr "Botkormány holttér"
870
871 #: ../../../src/MenuConfig.cpp:408
872 #, c-format
873 msgid "Primary binding: %s"
874 msgstr ""
875
876 #: ../../../src/MenuConfig.cpp:409
877 #, c-format
878 msgid "Alternate binding: %s"
879 msgstr ""
880
881 #: ../../../src/MenuConfig.cpp:410
882 #, c-format
883 msgid "Joystick binding: %s"
884 msgstr ""
885
886 #: ../../../src/MenuConfig.cpp:511
887 msgid ""
888 "Will try to store surfaces in video memory versus system memory. The effect "
889 "this has on performance depends on the renderer."
890 msgstr ""
891 "A felületeket a videó memóriában próbálja tárolni a rendszermemória "
892 "helyett.A sebességnövekedés a megjelenítőtől is függ."
893
894 #: ../../../src/MenuConfig.cpp:512
895 msgid ""
896 "Prevents screen tearing. Disable if you experience \"stuttering\" in "
897 "windowed mode or input lag."
898 msgstr ""
899 "Megakadályozza a villogást. Kapcsold ki, ha szaggat ablakosmódban vagy "
900 "lassan reagál a bemenetre."
901
902 #: ../../../src/MenuConfig.cpp:513
903 msgid ""
904 "When enabled, this uses the screen DPI in addition to the window dimensions "
905 "to scale the rendering resolution. Otherwise, only the window dimensions are"
906 " used."
907 msgstr ""
908 "Ha be van kapcsolva, a képernyő DPI-t is használja a felbontás mellé, hogy a"
909 " végleges megjelenítést kiszámolja. Máskülönben csak az ablak mérete számít."
910
911 #: ../../../src/MenuConfig.cpp:514
912 msgid ""
913 "This enables parallax (non-tile) layers. Disabling this setting can improve "
914 "performance in some cases."
915 msgstr ""
916
917 #: ../../../src/MenuConfig.cpp:515
918 msgid ""
919 "Enables the below setting that controls the screen gamma level. The behavior"
920 " of the gamma setting can vary between platforms."
921 msgstr ""
922
923 #: ../../../src/MenuConfig.cpp:516
924 msgid ""
925 "Provides additional text for information that is primarily conveyed through "
926 "color."
927 msgstr ""
928
929 #: ../../../src/MenuConfig.cpp:517
930 msgid ""
931 "Some mods will automatically hide the stat bars when they are inactive. "
932 "Disabling this option will keep them displayed at all times."
933 msgstr ""
934
935 #: ../../../src/MenuConfig.cpp:518
936 msgid ""
937 "When enabled, empty equipment slots will be filled with applicable items "
938 "when they are obtained."
939 msgstr ""
940
941 #: ../../../src/MenuConfig.cpp:519
942 msgid ""
943 "Shows a marker above enemies, allies, and the player when they are obscured "
944 "by tall objects."
945 msgstr ""
946
947 #: ../../../src/MenuConfig.cpp:520
948 msgid ""
949 "When enabled, tooltips for equipped items of the same type are shown next to"
950 " standard item tooltips."
951 msgstr ""
952
953 #: ../../../src/MenuConfig.cpp:521
954 msgid ""
955 "This allows the game to be controlled entirely with the keyboard (or "
956 "joystick)."
957 msgstr ""
958
959 #: ../../../src/MenuConfig.cpp:522
960 msgid ""
961 "When 'Move hero using mouse' is enabled, this setting controls if 'Main1' or"
962 " 'Main2' is used to move the hero. If enabled, 'Main2' will move the hero "
963 "instead of 'Main1'."
964 msgstr ""
965
966 #: ../../../src/MenuConfig.cpp:523
967 msgid ""
968 "When 'Move hero using mouse' is enabled, this setting controls if the Power "
969 "assigned to the movement button can be used by targeting an enemy. If this "
970 "setting is disabled, it is required to use 'Shift' to access the Power "
971 "assigned to the movement button."
972 msgstr ""
973
974 #: ../../../src/MenuConfig.cpp:524
975 msgid ""
976 "The player's attacks will be aimed in the direction of the mouse cursor when"
977 " this is enabled."
978 msgstr ""
979
980 #: ../../../src/MenuConfig.cpp:575
981 msgid "Active Mods"
982 msgstr "Aktív modok"
983
984 #: ../../../src/MenuConfig.cpp:584
985 msgid "Available Mods"
986 msgstr "Rendelkezésreálló modok"
987
988 #: ../../../src/MenuConfig.cpp:603
989 msgid "<< Disable"
990 msgstr "<< Kikapcsol"
991
992 #: ../../../src/MenuConfig.cpp:609
993 msgid "Enable >>"
994 msgstr "Bekapcsol >>"
995
996 #: ../../../src/MenuConfig.cpp:1444
997 msgid "Version:"
998 msgstr "Verzió:"
999
1000 #: ../../../src/MenuConfig.cpp:1449
1001 msgid "Game:"
1002 msgstr "Játék:"
1003
1004 #: ../../../src/MenuConfig.cpp:1454
1005 msgid "Engine version:"
1006 msgstr "Motor verzió:"
1007
1008 #: ../../../src/MenuConfig.cpp:1462
1009 msgid "Requires mods:"
1010 msgstr "Szükséges modok:"
1011
1012 #: ../../../src/MenuConfig.cpp:1570 ../../../src/SDLInputState.cpp:748
1013 msgid "(none)"
1014 msgstr "(nincs)"
1015
1016 #: ../../../src/MenuConfig.cpp:1587 ../../../src/MenuGameOver.cpp:73
1017 msgid "Save & Exit"
1018 msgstr "Mentés, kilépés"
1019
1020 #: ../../../src/MenuDevConsole.cpp:65
1021 msgid "Execute"
1022 msgstr "Végrehajt"
1023
1024 #: ../../../src/MenuDevConsole.cpp:103 ../../../src/MenuDevConsole.cpp:153
1025 msgid "Developer Console"
1026 msgstr "Fejlesztői Konzol"
1027
1028 #: ../../../src/MenuDevConsole.cpp:143
1029 #, c-format
1030 msgid "Use '%s' to inspect with the cursor."
1031 msgstr "Használd a '%s'-t majd a kurzort a megvizsgáláshoz"
1032
1033 #: ../../../src/MenuDevConsole.cpp:148
1034 msgid "Arguments with spaces should be enclosed with double quotes. Example:"
1035 msgstr "A szóközöket tartalmazó paramétereket idézőjelbe kell tenni, pl:"
1036
1037 #: ../../../src/MenuDevConsole.cpp:149
1038 msgid "Type 'help' to get a list of commands."
1039 msgstr "A 'help'-re kilistázza a parancsokat."
1040
1041 #: ../../../src/MenuDevConsole.cpp:211 ../../../src/MenuDevConsole.cpp:215
1042 msgid "px"
1043 msgstr ""
1044
1045 #: ../../../src/MenuDevConsole.cpp:226
1046 msgid "Distance"
1047 msgstr "Távolság"
1048
1049 #: ../../../src/MenuDevConsole.cpp:241 ../../../src/MenuDevConsole.cpp:289
1050 #: ../../../src/MenuDevConsole.cpp:303
1051 msgid "Entity"
1052 msgstr "Entitás"
1053
1054 #: ../../../src/MenuDevConsole.cpp:263 ../../../src/MenuDevConsole.cpp:270
1055 msgid "none"
1056 msgstr "nincs"
1057
1058 #: ../../../src/MenuDevConsole.cpp:264 ../../../src/MenuDevConsole.cpp:266
1059 msgid "wall"
1060 msgstr "fal"
1061
1062 #: ../../../src/MenuDevConsole.cpp:265 ../../../src/MenuDevConsole.cpp:267
1063 msgid "short wall / pit"
1064 msgstr "rövid fal / verem"
1065
1066 #: ../../../src/MenuDevConsole.cpp:268
1067 msgid "entity"
1068 msgstr "entitás"
1069
1070 #: ../../../src/MenuDevConsole.cpp:269
1071 msgid "entity, ally"
1072 msgstr "entitás, barát"
1073
1074 #: ../../../src/MenuDevConsole.cpp:276
1075 msgid "Tile"
1076 msgstr ""
1077
1078 #: ../../../src/MenuDevConsole.cpp:377
1079 msgid "adds a power to the action bar"
1080 msgstr "hozzáad egy erőt az akció sávhoz"
1081
1082 #: ../../../src/MenuDevConsole.cpp:378
1083 msgid "turns on/off the display of the FPS counter"
1084 msgstr ""
1085
1086 #: ../../../src/MenuDevConsole.cpp:379
1087 msgid "turns on/off all of the HUD elements"
1088 msgstr "ki/bekapcsolja az összes infót"
1089
1090 #: ../../../src/MenuDevConsole.cpp:380
1091 msgid "turns on/off the developer hud"
1092 msgstr "ki/bekapcsolja a fejlesztői infókat"
1093
1094 #: ../../../src/MenuDevConsole.cpp:381
1095 msgid ""
1096 "Prints a list of powers that match a search term. No search term will list "
1097 "all items"
1098 msgstr "Kilistázza a keresésnek megfelelő erőket. Keresés nélkül az összeset."
1099
1100 #: ../../../src/MenuDevConsole.cpp:382
1101 msgid "Prints out all the map filenames located in the \"maps/\" directory."
1102 msgstr "Kilistázza a 'maps' mappában található térképeket."
1103
1104 #: ../../../src/MenuDevConsole.cpp:383
1105 msgid ""
1106 "Prints out the active campaign statuses that match a search term. No search "
1107 "term will list all active statuses"
1108 msgstr ""
1109 "Kilistázza a keresésnek megfelelő aktív kampány státuszokat. Keresés "
1110 "nélkülmindet"
1111
1112 #: ../../../src/MenuDevConsole.cpp:384
1113 msgid ""
1114 "Prints a list of items that match a search term. No search term will list "
1115 "all items"
1116 msgstr "Kilistázza a keresésnek megfelelő tárgyakat. Keresés nélkül mindet"
1117
1118 #: ../../../src/MenuDevConsole.cpp:385
1119 msgid ""
1120 "parses a series of event components and executes them as a single event"
1121 msgstr "kiértékel egy eseménysort, és egy egységes eseményként hajta végre"
1122
1123 #: ../../../src/MenuDevConsole.cpp:386
1124 msgid "clears the command history"
1125 msgstr "törli a parancssor történetet"
1126
1127 #: ../../../src/MenuDevConsole.cpp:387
1128 msgid "displays this text"
1129 msgstr "megjeleníti ezt"
1130
1131 #: ../../../src/MenuDevConsole.cpp:394
1132 msgid "Toggled the developer hud"
1133 msgstr "Fejlesztői infók kapcsolva"
1134
1135 #: ../../../src/MenuDevConsole.cpp:398
1136 msgid "Toggled the hud"
1137 msgstr "Infók kapcsolva"
1138
1139 #: ../../../src/MenuDevConsole.cpp:402
1140 msgid "Toggled the FPS counter"
1141 msgstr ""
1142
1143 #: ../../../src/MenuDevConsole.cpp:552
1144 msgid "ERROR: Incorrect number of arguments"
1145 msgstr "HIBA: hibás paraméterszám"
1146
1147 #: ../../../src/MenuDevConsole.cpp:554 ../../../src/MenuDevConsole.cpp:582
1148 msgid "HINT:"
1149 msgstr "TIPP:"
1150
1151 #: ../../../src/MenuDevConsole.cpp:554
1152 msgid "<id>"
1153 msgstr ""
1154
1155 #: ../../../src/MenuDevConsole.cpp:570
1156 #, c-format
1157 msgid "ERROR: '%s' is not a valid event key"
1158 msgstr "HIBA: '%s' nem egy eseménykulcs"
1159
1160 #: ../../../src/MenuDevConsole.cpp:580
1161 msgid "ERROR: Too few arguments"
1162 msgstr "HIBA: túl kevés paraméter"
1163
1164 #: ../../../src/MenuDevConsole.cpp:582
1165 msgid "<key>=<val> <key>=<val> ..."
1166 msgstr "<kulcs>=<érték> <kulcs>=<érték> ..."
1167
1168 #: ../../../src/MenuDevConsole.cpp:587
1169 msgid "ERROR: Unknown command"
1170 msgstr "HIBA: ismeretlen parancs"
1171
1172 #: ../../../src/MenuDevConsole.cpp:589
1173 msgid "HINT: Type help"
1174 msgstr "TIPP: használd a 'help'-et"
1175
1176 #: ../../../src/MenuEnemy.cpp:162
1177 #, c-format
1178 msgid "%s level %d"
1179 msgstr "%s %d. szint"
1180
1181 #: ../../../src/MenuEnemy.cpp:186
1182 msgid "Dead"
1183 msgstr "Halott"
1184
1185 #: ../../../src/MenuEnemy.cpp:188
1186 msgid "Destroyed"
1187 msgstr ""
1188
1189 #: ../../../src/MenuGameOver.cpp:69
1190 msgid "Game Over"
1191 msgstr ""
1192
1193 #: ../../../src/MenuInventory.cpp:178
1194 #, c-format
1195 msgid "Lost %d%% of %s."
1196 msgstr "Elveszett %d%% a %s-ból."
1197
1198 #: ../../../src/MenuInventory.cpp:185
1199 #, c-format
1200 msgid "Lost %d%% of total XP."
1201 msgstr "Elveszett %d%% a teljes TP-ból."
1202
1203 #: ../../../src/MenuInventory.cpp:190
1204 #, c-format
1205 msgid "Lost %d%% of current level XP."
1206 msgstr "Elveszett %d%% a szinten gyűjtött TP-ból."
1207
1208 #: ../../../src/MenuInventory.cpp:216
1209 #, c-format
1210 msgid "Lost %s."
1211 msgstr "Elveszett %s."
1212
1213 #: ../../../src/MenuInventory.cpp:258 ../../../src/MenuStash.cpp:276
1214 #, c-format
1215 msgid "%d %s"
1216 msgstr ""
1217
1218 #: ../../../src/MenuInventory.cpp:301
1219 msgid "Pick up item(s):"
1220 msgstr "Tárgyak felvétele:"
1221
1222 #: ../../../src/MenuInventory.cpp:302
1223 msgid "Use or equip item:"
1224 msgstr "Használd vagy hord:"
1225
1226 #: ../../../src/MenuInventory.cpp:303
1227 #, c-format
1228 msgid "%s modifiers"
1229 msgstr "%s módosító"
1230
1231 #: ../../../src/MenuInventory.cpp:304
1232 msgid "Select a quantity of item:"
1233 msgstr "Válassz mennyiséget:"
1234
1235 #: ../../../src/MenuInventory.cpp:307
1236 msgid "Stash item stack:"
1237 msgstr "Dugihelyre helyez:"
1238
1239 #: ../../../src/MenuInventory.cpp:309
1240 msgid "Sell item stack:"
1241 msgstr "Tárgy eladása:"
1242
1243 #: ../../../src/MenuInventory.cpp:576
1244 msgid "You don't have enough of the required item."
1245 msgstr "Nincs elegendő a szükséges tárgyból."
1246
1247 #: ../../../src/MenuInventory.cpp:588
1248 msgid "You can't use this item right now."
1249 msgstr "Most nem tudod ezt a tárgyat használni."
1250
1251 #: ../../../src/MenuInventory.cpp:600
1252 msgid "This item can only be used from the action bar."
1253 msgstr "Ezt csak az akció sávról használhatod."
1254
1255 #: ../../../src/MenuInventory.cpp:718
1256 msgid "Inventory is full."
1257 msgstr "Tele a hátizsák."
1258
1259 #: ../../../src/MenuInventory.cpp:843
1260 #, c-format
1261 msgid "Not enough %s."
1262 msgstr "Nincs elég %s."
1263
1264 #: ../../../src/MenuInventory.cpp:863 ../../../src/MenuInventory.cpp:870
1265 msgid "This item can not be sold."
1266 msgstr "Ezt nem lehet eladni."
1267
1268 #: ../../../src/MenuLog.cpp:91
1269 msgid "Notes"
1270 msgstr "Jegyzetek"
1271
1272 #: ../../../src/MenuLog.cpp:92
1273 msgid "Quests"
1274 msgstr "Küldetések"
1275
1276 #: ../../../src/MenuManager.cpp:305
1277 #, c-format
1278 msgid "XP: %d/%d"
1279 msgstr "TP: %d/%d"
1280
1281 #: ../../../src/MenuManager.cpp:875
1282 msgid "This item can not be dropped."
1283 msgstr "Ezt nem tudod lerakni."
1284
1285 #: ../../../src/MenuManager.cpp:1501
1286 msgid "Equipped"
1287 msgstr ""
1288
1289 #: ../../../src/MenuMovementType.cpp:87
1290 msgid "Select a Movement Type"
1291 msgstr ""
1292
1293 #: ../../../src/MenuMovementType.cpp:89
1294 msgid "Can be changed later in the Configuration menu."
1295 msgstr ""
1296
1297 #: ../../../src/MenuMovementType.cpp:92 ../../../src/MenuMovementType.cpp:122
1298 msgid "Keyboard"
1299 msgstr ""
1300
1301 #: ../../../src/MenuMovementType.cpp:93 ../../../src/MenuMovementType.cpp:128
1302 msgid "Mouse"
1303 msgstr ""
1304
1305 #: ../../../src/MenuMovementType.cpp:129
1306 msgid "Button"
1307 msgstr ""
1308
1309 #: ../../../src/MenuNumPicker.cpp:59
1310 msgid "Enter amount:"
1311 msgstr "Add meg a mennyiséget:"
1312
1313 #: ../../../src/MenuPowers.cpp:872
1314 msgid "Passive"
1315 msgstr "Passzív"
1316
1317 #: ../../../src/MenuPowers.cpp:879
1318 #, c-format
1319 msgid "Costs %d MP"
1320 msgstr "%d MP-be kerül"
1321
1322 #: ../../../src/MenuPowers.cpp:883
1323 #, c-format
1324 msgid "Costs %d HP"
1325 msgstr "%d ÉP-be kerül"
1326
1327 #: ../../../src/MenuPowers.cpp:887
1328 msgid "Cooldown:"
1329 msgstr "Lehűlés:"
1330
1331 #: ../../../src/MenuPowers.cpp:938 ../../../src/MenuPowers.cpp:941
1332 msgid "Damage per second"
1333 msgstr "Sebzés per másodperc"
1334
1335 #: ../../../src/MenuPowers.cpp:944 ../../../src/MenuPowers.cpp:947
1336 msgid "HP per second"
1337 msgstr "ÉP per másodperc"
1338
1339 #: ../../../src/MenuPowers.cpp:950 ../../../src/MenuPowers.cpp:953
1340 msgid "MP per second"
1341 msgstr "MP per másodperc"
1342
1343 #: ../../../src/MenuPowers.cpp:957
1344 msgid "Immobilize"
1345 msgstr "Megbénítás"
1346
1347 #: ../../../src/MenuPowers.cpp:965
1348 msgid "Immunity"
1349 msgstr "Immunitás"
1350
1351 #: ../../../src/MenuPowers.cpp:968
1352 msgid "Immunity to damage over time"
1353 msgstr "Idővel immunis a sebzésre"
1354
1355 #: ../../../src/MenuPowers.cpp:971
1356 msgid "Immunity to slow"
1357 msgstr "Immunis a lassításra"
1358
1359 #: ../../../src/MenuPowers.cpp:974
1360 msgid "Immunity to stun"
1361 msgstr "Immunis a bénításra"
1362
1363 #: ../../../src/MenuPowers.cpp:977
1364 msgid "Immunity to HP steal"
1365 msgstr "Immunis az ÉP lopásra"
1366
1367 #: ../../../src/MenuPowers.cpp:980
1368 msgid "Immunity to MP steal"
1369 msgstr "Immunis az MP lopásra"
1370
1371 #: ../../../src/MenuPowers.cpp:983
1372 msgid "Immunity to knockback"
1373 msgstr "Immunis a leütésre"
1374
1375 #: ../../../src/MenuPowers.cpp:986
1376 msgid "Immunity to damage reflection"
1377 msgstr "Immunis a sebzésvisszaküldésre"
1378
1379 #: ../../../src/MenuPowers.cpp:992
1380 msgid "Stun"
1381 msgstr "Bénítás"
1382
1383 #: ../../../src/MenuPowers.cpp:995
1384 msgid "Automatic revive on death"
1385 msgstr "Halál esetén visszahoz"
1386
1387 #: ../../../src/MenuPowers.cpp:998
1388 msgid "Convert"
1389 msgstr "Konvertálás"
1390
1391 #: ../../../src/MenuPowers.cpp:1001
1392 msgid "Fear"
1393 msgstr "Félelem"
1394
1395 #: ../../../src/MenuPowers.cpp:1004
1396 msgid "Lifespan"
1397 msgstr "Élettartam"
1398
1399 #: ../../../src/MenuPowers.cpp:1028
1400 msgid "Magical Shield"
1401 msgstr "Mágikus pajzs"
1402
1403 #: ../../../src/MenuPowers.cpp:1057
1404 msgid "Healing"
1405 msgstr "Gyógyítás"
1406
1407 #: ../../../src/MenuPowers.cpp:1060
1408 msgid "Knockback"
1409 msgstr "Leütés"
1410
1411 #: ../../../src/MenuPowers.cpp:1084
1412 #, c-format
1413 msgid "%d%% chance"
1414 msgstr "%d%% esély"
1415
1416 #: ../../../src/MenuPowers.cpp:1136
1417 msgid "Base Accuracy"
1418 msgstr "Alap pontosság"
1419
1420 #: ../../../src/MenuPowers.cpp:1156
1421 msgid "Base Critical Chance"
1422 msgstr "Alap kritikus találat"
1423
1424 #: ../../../src/MenuPowers.cpp:1164
1425 msgid "Ignores Absorbtion"
1426 msgstr "Felfogást kivédi"
1427
1428 #: ../../../src/MenuPowers.cpp:1169
1429 msgid "Ignores Avoidance"
1430 msgstr "Kitérést kivédi"
1431
1432 #: ../../../src/MenuPowers.cpp:1174
1433 #, c-format
1434 msgid "%d%% Chance to crit slowed targets"
1435 msgstr "%d%% esély a kritikusra lassítottnál"
1436
1437 #: ../../../src/MenuPowers.cpp:1179
1438 #, c-format
1439 msgid "Elemental Damage (%s)"
1440 msgstr ""
1441
1442 #: ../../../src/MenuPowers.cpp:1188
1443 #, c-format
1444 msgid "Requires a %s"
1445 msgstr "%s kell hozzá"
1446
1447 #: ../../../src/MenuPowers.cpp:1226 ../../../src/MenuPowers.cpp:1229
1448 #, c-format
1449 msgid "Requires Power: %s"
1450 msgstr "%s erő kell hozzá"
1451
1452 #: ../../../src/MenuPowers.cpp:1238
1453 msgid "Click to Unlock (uses 1 Skill Point)"
1454 msgstr "Kattint a feloldáshoz (1 tulajdonság pontért)"
1455
1456 #: ../../../src/MenuPowers.cpp:1242 ../../../src/MenuPowers.cpp:1244
1457 msgid "Requires 1 Skill Point"
1458 msgstr "1 tulajdonság pont kell hozzá"
1459
1460 #: ../../../src/MenuPowers.cpp:1444
1461 #, c-format
1462 msgid "Available skill points: %d"
1463 msgstr ""
1464
1465 #: ../../../src/MenuPowers.cpp:1476
1466 msgid "Next Level:"
1467 msgstr "Következő szint:"
1468
1469 #: ../../../src/MenuStash.cpp:80 ../../../src/MenuStash.cpp:161
1470 msgid "Stash"
1471 msgstr ""
1472
1473 #: ../../../src/MenuStash.cpp:174 ../../../src/MenuStash.cpp:188
1474 msgid "Private"
1475 msgstr ""
1476
1477 #: ../../../src/MenuStash.cpp:175
1478 msgid "Shared"
1479 msgstr ""
1480
1481 #: ../../../src/MenuStash.cpp:340
1482 msgid "This item can not be stored in the stash."
1483 msgstr ""
1484
1485 #: ../../../src/MenuStash.cpp:345
1486 msgid "This item can not be stored in the private stash."
1487 msgstr ""
1488
1489 #: ../../../src/MenuStash.cpp:350
1490 msgid "This item can not be stored in the shared stash."
1491 msgstr ""
1492
1493 #: ../../../src/MenuStash.cpp:360
1494 msgid "Stash is full."
1495 msgstr "Dugihely megtelt."
1496
1497 #: ../../../src/MenuStash.cpp:414
1498 #, c-format
1499 msgid "Can not store item in stash: %s"
1500 msgstr ""
1501
1502 #: ../../../src/MenuTalker.cpp:448
1503 #, c-format
1504 msgid "<dialog node %d>"
1505 msgstr ""
1506
1507 #: ../../../src/MenuTalker.cpp:456
1508 msgid "Trade"
1509 msgstr "Csere"
1510
1511 #: ../../../src/MenuVendor.cpp:60
1512 msgid "Buyback"
1513 msgstr "Visszavásárol"
1514
1515 #: ../../../src/MenuVendor.cpp:283
1516 msgid "Vendor"
1517 msgstr "Eladó"
1518
1519 #: ../../../src/PowerManager.cpp:1208
1520 #, c-format
1521 msgid "+%d Shield"
1522 msgstr "+%d pajzs"
1523
1524 #: ../../../src/PowerManager.cpp:1465
1525 msgid "You are already transformed, untransform first."
1526 msgstr "Már transzformáltál, változz vissza előbb."
1527
1528 #: ../../../src/PowerManager.cpp:1477
1529 msgid "Could not untransform at this position."
1530 msgstr "Itt nem lehet vissza változni."
1531
1532 #: ../../../src/QuestLog.cpp:234
1533 msgid "Completed Quests"
1534 msgstr ""
1535
1536 #: ../../../src/SaveLoad.cpp:250 ../../../src/SaveLoad.cpp:251
1537 msgid "Game saved."
1538 msgstr "Játék elmentve."
1539
1540 #: ../../../src/SDLInputState.cpp:643
1541 msgid "BkSp"
1542 msgstr ""
1543
1544 #: ../../../src/SDLInputState.cpp:644
1545 msgid "Caps"
1546 msgstr ""
1547
1548 #: ../../../src/SDLInputState.cpp:645
1549 msgid "Del"
1550 msgstr ""
1551
1552 #: ../../../src/SDLInputState.cpp:647 ../../../src/SDLInputState.cpp:677
1553 msgid "End"
1554 msgstr "Vége"
1555
1556 #: ../../../src/SDLInputState.cpp:648
1557 msgid "Esc"
1558 msgstr ""
1559
1560 #: ../../../src/SDLInputState.cpp:649 ../../../src/SDLInputState.cpp:679
1561 msgid "Home"
1562 msgstr "Eleje"
1563
1564 #: ../../../src/SDLInputState.cpp:650
1565 msgid "Ins"
1566 msgstr ""
1567
1568 #: ../../../src/SDLInputState.cpp:651
1569 msgid "LAlt"
1570 msgstr ""
1571
1572 #: ../../../src/SDLInputState.cpp:652
1573 msgid "LCtrl"
1574 msgstr ""
1575
1576 #: ../../../src/SDLInputState.cpp:654
1577 msgid "LShft"
1578 msgstr ""
1579
1580 #: ../../../src/SDLInputState.cpp:655
1581 msgid "Num"
1582 msgstr ""
1583
1584 #: ../../../src/SDLInputState.cpp:656
1585 msgid "PgDn"
1586 msgstr ""
1587
1588 #: ../../../src/SDLInputState.cpp:657
1589 msgid "PgUp"
1590 msgstr ""
1591
1592 #: ../../../src/SDLInputState.cpp:658 ../../../src/SDLInputState.cpp:688
1593 msgid "Pause"
1594 msgstr "Állj"
1595
1596 #: ../../../src/SDLInputState.cpp:659
1597 msgid "Print"
1598 msgstr ""
1599
1600 #: ../../../src/SDLInputState.cpp:660
1601 msgid "RAlt"
1602 msgstr ""
1603
1604 #: ../../../src/SDLInputState.cpp:661
1605 msgid "RCtrl"
1606 msgstr ""
1607
1608 #: ../../../src/SDLInputState.cpp:662
1609 msgid "Ret"
1610 msgstr ""
1611
1612 #: ../../../src/SDLInputState.cpp:664
1613 msgid "RShft"
1614 msgstr ""
1615
1616 #: ../../../src/SDLInputState.cpp:665
1617 msgid "SLock"
1618 msgstr ""
1619
1620 #: ../../../src/SDLInputState.cpp:666
1621 msgid "Spc"
1622 msgstr ""
1623
1624 #: ../../../src/SDLInputState.cpp:667 ../../../src/SDLInputState.cpp:697
1625 msgid "Tab"
1626 msgstr ""
1627
1628 #: ../../../src/SDLInputState.cpp:673
1629 msgid "Backspace"
1630 msgstr "Visszatörlés"
1631
1632 #: ../../../src/SDLInputState.cpp:674
1633 msgid "CapsLock"
1634 msgstr ""
1635
1636 #: ../../../src/SDLInputState.cpp:678
1637 msgid "Escape"
1638 msgstr ""
1639
1640 #: ../../../src/SDLInputState.cpp:680
1641 msgid "Insert"
1642 msgstr "Beszúr"
1643
1644 #: ../../../src/SDLInputState.cpp:681
1645 msgid "Left Alt"
1646 msgstr "Bal Alt"
1647
1648 #: ../../../src/SDLInputState.cpp:682
1649 msgid "Left Ctrl"
1650 msgstr "Bal Ctrl"
1651
1652 #: ../../../src/SDLInputState.cpp:684
1653 msgid "Left Shift"
1654 msgstr "Bal Shift"
1655
1656 #: ../../../src/SDLInputState.cpp:685
1657 msgid "NumLock"
1658 msgstr ""
1659
1660 #: ../../../src/SDLInputState.cpp:686
1661 msgid "PageDown"
1662 msgstr "LapozásLe"
1663
1664 #: ../../../src/SDLInputState.cpp:687
1665 msgid "PageUp"
1666 msgstr "LapozásFel"
1667
1668 #: ../../../src/SDLInputState.cpp:689
1669 msgid "PrintScreen"
1670 msgstr "Képernyőnyomtatás"
1671
1672 #: ../../../src/SDLInputState.cpp:690
1673 msgid "Right Alt"
1674 msgstr "Jobb Alt"
1675
1676 #: ../../../src/SDLInputState.cpp:691
1677 msgid "Right Ctrl"
1678 msgstr "Jobb Ctrl"
1679
1680 #: ../../../src/SDLInputState.cpp:692
1681 msgid "Return"
1682 msgstr "Kocsivissza"
1683
1684 #: ../../../src/SDLInputState.cpp:694
1685 msgid "Right Shift"
1686 msgstr "Jobb Shift"
1687
1688 #: ../../../src/SDLInputState.cpp:695
1689 msgid "ScrollLock"
1690 msgstr ""
1691
1692 #: ../../../src/SDLInputState.cpp:696
1693 msgid "Space"
1694 msgstr "Szóköz"
1695
1696 #: ../../../src/SDLInputState.cpp:710
1697 #, c-format
1698 msgid "M%d"
1699 msgstr ""
1700
1701 #: ../../../src/SDLInputState.cpp:716
1702 #, c-format
1703 msgid "Mouse %d"
1704 msgstr "Egér %d"
1705
1706 #: ../../../src/SDLInputState.cpp:726
1707 #, c-format
1708 msgid "JX%d-"
1709 msgstr ""
1710
1711 #: ../../../src/SDLInputState.cpp:728
1712 #, c-format
1713 msgid "Axis %d -"
1714 msgstr "Tengely %d -"
1715
1716 #: ../../../src/SDLInputState.cpp:732
1717 #, c-format
1718 msgid "JX%d+"
1719 msgstr ""
1720
1721 #: ../../../src/SDLInputState.cpp:734
1722 #, c-format
1723 msgid "Axis %d +"
1724 msgstr "Tengely %d +"
1725
1726 #: ../../../src/SDLInputState.cpp:739
1727 #, c-format
1728 msgid "JB%d"
1729 msgstr ""
1730
1731 #: ../../../src/SDLInputState.cpp:741
1732 #, c-format
1733 msgid "Button %d"
1734 msgstr "Gomb %d"
1735
1736 #: ../../../src/SDLInputState.cpp:787
1737 msgid "Touch control D-Pad"
1738 msgstr ""
1739
1740 #: ../../../src/SDLInputState.cpp:810
1741 msgid "Touch control buttons"
1742 msgstr ""
1743
1744 #: ../../../src/SDLInputState.cpp:824
1745 msgid "Tap"
1746 msgstr ""
1747
1748 #: ../../../src/SDLInputState.cpp:876 ../../../src/SDLInputState.cpp:878
1749 #, c-format
1750 msgid "Can not bind: %s"
1751 msgstr ""
1752
1753 #: ../../../src/SDLInputState.cpp:890 ../../../src/SDLInputState.cpp:894
1754 #: ../../../src/SDLInputState.cpp:898
1755 #, c-format
1756 msgid "'%s' is no longer bound to:"
1757 msgstr "'%s' nem kötődik ehhez: "
1758
1759 #: ../../../src/Stats.cpp:38
1760 msgid "Max HP"
1761 msgstr "Max ÉP"
1762
1763 #: ../../../src/Stats.cpp:39
1764 msgid "Total amount of HP."
1765 msgstr ""
1766
1767 #: ../../../src/Stats.cpp:43
1768 msgid "HP Regen"
1769 msgstr "ÉP gyógyulás"
1770
1771 #: ../../../src/Stats.cpp:44
1772 msgid "Ticks of HP regen per minute."
1773 msgstr "ÉP gyógyulás másodpercenként."
1774
1775 #: ../../../src/Stats.cpp:48
1776 msgid "Max MP"
1777 msgstr ""
1778
1779 #: ../../../src/Stats.cpp:49
1780 msgid "Total amount of MP."
1781 msgstr ""
1782
1783 #: ../../../src/Stats.cpp:53
1784 msgid "MP Regen"
1785 msgstr "MP töltés"
1786
1787 #: ../../../src/Stats.cpp:54
1788 msgid "Ticks of MP regen per minute."
1789 msgstr "MP töltés másodpercenként."
1790
1791 #: ../../../src/Stats.cpp:58
1792 msgid "Accuracy"
1793 msgstr "Pontosság"
1794
1795 #: ../../../src/Stats.cpp:59
1796 msgid ""
1797 "Accuracy rating. The enemy's Avoidance rating is subtracted from this value "
1798 "to calculate your likeliness to land a direct hit."
1799 msgstr ""
1800
1801 #: ../../../src/Stats.cpp:63
1802 msgid "Avoidance"
1803 msgstr "Kitérés"
1804
1805 #: ../../../src/Stats.cpp:64
1806 msgid ""
1807 "Avoidance rating. This value is subtracted from the enemy's Accuracy rating "
1808 "to calculate their likeliness to land a direct hit."
1809 msgstr ""
1810
1811 #: ../../../src/Stats.cpp:68
1812 msgid "Absorb Min"
1813 msgstr "Felfogás Min"
1814
1815 #: ../../../src/Stats.cpp:69 ../../../src/Stats.cpp:74
1816 msgid "Reduces the amount of damage taken."
1817 msgstr ""
1818
1819 #: ../../../src/Stats.cpp:73
1820 msgid "Absorb Max"
1821 msgstr "Felfogás Max"
1822
1823 #: ../../../src/Stats.cpp:78
1824 msgid "Critical Hit Chance"
1825 msgstr "Kritikus ütés esélye"
1826
1827 #: ../../../src/Stats.cpp:79
1828 msgid "Chance for an attack to do extra damage."
1829 msgstr ""
1830
1831 #: ../../../src/Stats.cpp:83
1832 msgid "Bonus XP"
1833 msgstr "Bónusz TP"
1834
1835 #: ../../../src/Stats.cpp:84
1836 msgid "Increases the XP gained per kill."
1837 msgstr "Növeli a TP-t minden győzelemnél."
1838
1839 #: ../../../src/Stats.cpp:88
1840 #, c-format
1841 msgid "Bonus %s"
1842 msgstr "Bónusz %s"
1843
1844 #: ../../../src/Stats.cpp:89
1845 #, c-format
1846 msgid "Increases the %s found per drop."
1847 msgstr "Növeli a %s-t találat esélyét lerakásnál."
1848
1849 #: ../../../src/Stats.cpp:93
1850 msgid "Item Find Chance"
1851 msgstr "Tárgytalálat esélye"
1852
1853 #: ../../../src/Stats.cpp:94
1854 msgid "Increases the chance that an enemy will drop an item."
1855 msgstr "Növeli az esélyét, hogy az ellenség elejt valamit."
1856
1857 #: ../../../src/Stats.cpp:98
1858 msgid "Stealth"
1859 msgstr "Lopakodás"
1860
1861 #: ../../../src/Stats.cpp:99
1862 msgid "Increases your ability to move undetected."
1863 msgstr "Növeli az esélyét, hogy ne vegyenek észre."
1864
1865 #: ../../../src/Stats.cpp:103
1866 msgid "Poise"
1867 msgstr "Tökösség"
1868
1869 #: ../../../src/Stats.cpp:104
1870 msgid "Reduces your chance of stumbling when hit."
1871 msgstr "Csökkenti az esélyét az ájulásnak ha eltalálnak."
1872
1873 #: ../../../src/Stats.cpp:108
1874 msgid "Missile Reflect Chance"
1875 msgstr "Lövedék elhárítás esélye"
1876
1877 #: ../../../src/Stats.cpp:109
1878 msgid "Increases your chance of reflecting missiles back at enemies."
1879 msgstr "Növeli az esélyét hogy visszaküldöd a lövedéket a támadóra."
1880
1881 #: ../../../src/Stats.cpp:113
1882 msgid "Damage Reflection"
1883 msgstr "Sebzés vissza"
1884
1885 #: ../../../src/Stats.cpp:114
1886 msgid "Deals a percentage of damage taken back to the attacker."
1887 msgstr "A sebzést adott százalékban a visszahárítja a támadóra."
1888
1889 #: ../../../src/Stats.cpp:118
1890 msgid "HP Steal"
1891 msgstr "ÉP lopás"
1892
1893 #: ../../../src/Stats.cpp:119
1894 msgid "Percentage of HP stolen per hit."
1895 msgstr "Ütésenként ellopott ÉP-k százalékban."
1896
1897 #: ../../../src/Stats.cpp:123
1898 msgid "MP Steal"
1899 msgstr "MP lopás"
1900
1901 #: ../../../src/Stats.cpp:124
1902 msgid "Percentage of MP stolen per hit."
1903 msgstr "Ütésenként ellopott MP-k százalékban."
1904
1905 #: ../../../src/Stats.cpp:128
1906 msgid "Base HP"
1907 msgstr "Alap ÉP"
1908
1909 #: ../../../src/Stats.cpp:133
1910 msgid "Base MP"
1911 msgstr "Alap MP"
1912
1913 #: ../../../src/Utils.cpp:365
1914 msgid "k"
1915 msgstr "k"
1916
1917 #: ../../../src/Utils.cpp:635
1918 #, c-format
1919 msgid "%s second"
1920 msgstr "%s másodperc"
1921
1922 #: ../../../src/Utils.cpp:638
1923 #, c-format
1924 msgid "%s seconds"
1925 msgstr "%s másodperc"
1926
1927 #: ../../../src/Version.cpp:139
1928 msgid "or newer"
1929 msgstr "vagy újabb"
1930
1931 #: ../../../src/Version.cpp:142
1932 msgid "or older"
1933 msgstr "vagy régebbi"
1212 msgstr ""
1313 "Project-Id-Version: PACKAGE VERSION\n"
1414 "Report-Msgid-Bugs-To: \n"
15 "POT-Creation-Date: 2018-11-17 21:50-0500\n"
15 "POT-Creation-Date: 2021-05-23 20:34-0400\n"
1616 "PO-Revision-Date: 2018-03-28 19:16+0000\n"
1717 "Last-Translator: Fabio Loli, 2018\n"
1818 "Language-Team: Italian (https://www.transifex.com/flareorg/teams/84925/it/)\n"
2222 "Language: it\n"
2323 "Plural-Forms: nplurals=2; plural=(n != 1);\n"
2424
25 #: ../../../src/Avatar.cpp:367
25 #: ../../../src/Avatar.cpp:391
26 msgid "Your health is low!"
27 msgstr ""
28
29 #: ../../../src/Avatar.cpp:421
2630 #, c-format
2731 msgid "Congratulations, you have reached level %d!"
2832 msgstr "Congratulazioni, hai raggiunto il livello %d!"
2933
30 #: ../../../src/Avatar.cpp:369
31 msgid "You may increase one attribute through the Character Menu."
32 msgstr "Puoi aumentare un attributo nel Menu Personaggio."
33
34 #: ../../../src/Avatar.cpp:583
35 msgid "You are defeated. Game over! ${INPUT_CONTINUE} to exit to Title."
36 msgstr ""
37 "La morte ti ha raggiunto. Partita finita! Premi ${INPUT_CONTINUE} per "
38 "tornare ai Titoli."
39
40 #: ../../../src/Avatar.cpp:589
41 msgid "You are defeated. ${INPUT_CONTINUE} to continue."
42 msgstr "La morte ti ha raggiunto. Premi ${INPUT_CONTINUE} per continuare."
43
44 #: ../../../src/Avatar.cpp:839
34 #: ../../../src/Avatar.cpp:423
35 msgid "You may increase one or more attributes through the Character Menu."
36 msgstr ""
37
38 #: ../../../src/Avatar.cpp:427
39 msgid "You may unlock one or more abilities through the Powers Menu."
40 msgstr ""
41
42 #: ../../../src/Avatar.cpp:689
43 msgid "You are defeated."
44 msgstr ""
45
46 #: ../../../src/Avatar.cpp:935
4547 msgid "Transformation expired. You have been moved back to a safe place."
4648 msgstr "Trasformazione finita. Sei stato riportato in un luogo sicuro."
4749
48 #: ../../../src/CampaignManager.cpp:153
50 #: ../../../src/CampaignManager.cpp:152
4951 #, c-format
5052 msgid "%d %s removed."
5153 msgstr "%d %s rimosso."
5254
53 #: ../../../src/CampaignManager.cpp:162
55 #: ../../../src/CampaignManager.cpp:171
56 #, c-format
57 msgid "%s x%d removed."
58 msgstr ""
59
60 #: ../../../src/CampaignManager.cpp:173
5461 #, c-format
5562 msgid "%s removed."
5663 msgstr "%s rimosso."
5764
58 #: ../../../src/CampaignManager.cpp:175
65 #: ../../../src/CampaignManager.cpp:187
66 #, c-format
67 msgid "You receive %d %s."
68 msgstr "Ricevi %d %s."
69
70 #: ../../../src/CampaignManager.cpp:191
71 #, c-format
72 msgid "You receive %s x%d."
73 msgstr "Ricevi %s x%d."
74
75 #: ../../../src/CampaignManager.cpp:193
5976 #, c-format
6077 msgid "You receive %s."
6178 msgstr "Ricevi %s."
6279
63 #: ../../../src/CampaignManager.cpp:177
64 #, c-format
65 msgid "You receive %s x%d."
66 msgstr "Ricevi %s x%d."
67
68 #: ../../../src/CampaignManager.cpp:186
69 #, c-format
70 msgid "You receive %d %s."
71 msgstr "Ricevi %d %s."
72
73 #: ../../../src/CampaignManager.cpp:195
80 #: ../../../src/CampaignManager.cpp:210
7481 #, c-format
7582 msgid "You receive %d XP."
7683 msgstr "Ricevi %d ESP."
7784
78 #: ../../../src/CampaignManager.cpp:201
85 #: ../../../src/CampaignManager.cpp:216
7986 msgid "HP restored."
8087 msgstr "Salute ripristinata."
8188
82 #: ../../../src/CampaignManager.cpp:205
89 #: ../../../src/CampaignManager.cpp:220
8390 msgid "MP restored."
8491 msgstr "Mana ripristinato."
8592
86 #: ../../../src/CampaignManager.cpp:210
93 #: ../../../src/CampaignManager.cpp:225
8794 msgid "HP and MP restored."
8895 msgstr "Salute e Mana ripristinati."
8996
90 #: ../../../src/CampaignManager.cpp:214
97 #: ../../../src/CampaignManager.cpp:229
9198 msgid "Negative effects removed."
9299 msgstr "Effetti negativi rimossi."
93100
94 #: ../../../src/CampaignManager.cpp:220
101 #: ../../../src/CampaignManager.cpp:235
95102 msgid "HP and MP restored, negative effects removed"
96103 msgstr "Salute e Mana ripristinati, effetti negativi rimossi"
97104
115122 "\n"
116123 "Il renderer di default, spesso più veloce del renderer software."
117124
118 #: ../../../src/EngineSettings.cpp:561
125 #: ../../../src/EngineSettings.cpp:586
119126 msgid "Adventurer"
120127 msgstr "Avventuriero"
121128
122 #: ../../../src/Entity.cpp:511
129 #: ../../../src/Entity.cpp:527
123130 msgid "miss"
124131 msgstr "mancato"
125132
126 #: ../../../src/Entity.cpp:548 ../../../src/PowerManager.cpp:1152
127 #: ../../../src/StatBlock.cpp:805 ../../../src/StatBlock.cpp:811
133 #: ../../../src/Entity.cpp:565 ../../../src/PowerManager.cpp:1224
134 #: ../../../src/StatBlock.cpp:917 ../../../src/StatBlock.cpp:923
128135 #, c-format
129136 msgid "+%d HP"
130137 msgstr "+%d Salute"
131138
132 #: ../../../src/Entity.cpp:555 ../../../src/StatBlock.cpp:816
133 #: ../../../src/StatBlock.cpp:822
139 #: ../../../src/Entity.cpp:572 ../../../src/StatBlock.cpp:928
140 #: ../../../src/StatBlock.cpp:934
134141 #, c-format
135142 msgid "+%d MP"
136143 msgstr "+%d Mana"
137144
138 #: ../../../src/EventManager.cpp:738
145 #: ../../../src/EventManager.cpp:792
139146 msgid "Unknown destination"
140147 msgstr "Destinazione sconosciuta"
141148
142 #: ../../../src/GameStateConfigBase.cpp:89
143 #: ../../../src/GameStateConfigBase.cpp:110
149 #: ../../../src/GameState.cpp:37 ../../../src/GameState.cpp:58
150 msgid "Loading..."
151 msgstr "Caricamento..."
152
153 #: ../../../src/GameStateLoad.cpp:90 ../../../src/GameStateLoad.cpp:103
154 msgid "Delete Save"
155 msgstr "Elimina salvataggio"
156
157 #: ../../../src/GameStateLoad.cpp:90
158 msgid "Delete this save?"
159 msgstr "Eliminare questo salvataggio?"
160
161 #: ../../../src/GameStateLoad.cpp:92
162 msgid "Exit to Title"
163 msgstr "Torna ai Titoli"
164
165 #: ../../../src/GameStateLoad.cpp:95
166 msgid "New Game"
167 msgstr "Nuova Partita"
168
169 #: ../../../src/GameStateLoad.cpp:99 ../../../src/GameStateLoad.cpp:607
170 msgid "Choose a Slot"
171 msgstr "Scegli Slot"
172
173 #: ../../../src/GameStateLoad.cpp:580 ../../../src/GameStateLoad.cpp:601
174 msgid "Enable a story mod to continue"
175 msgstr "Abilita una mod storia per continuare"
176
177 #: ../../../src/GameStateLoad.cpp:596
178 msgid "Load Game"
179 msgstr "Carica partita"
180
181 #: ../../../src/GameStateLoad.cpp:705
182 msgid "Entering game world..."
183 msgstr "Ingresso nel mondo di gioco..."
184
185 #: ../../../src/GameStateLoad.cpp:708
186 msgid "Loading saved game..."
187 msgstr "Caricamento partita..."
188
189 #: ../../../src/GameStateLoad.cpp:741
190 msgid "Invalid save"
191 msgstr "Salvataggio corrotto"
192
193 #: ../../../src/GameStateLoad.cpp:765 ../../../src/ItemManager.cpp:745
194 #: ../../../src/MenuPowers.cpp:860 ../../../src/MenuPowers.cpp:1219
195 #: ../../../src/MenuPowers.cpp:1631
196 #, c-format
197 msgid "Level %d"
198 msgstr "Livello %d"
199
200 #: ../../../src/GameStateNew.cpp:66 ../../../src/InputState.cpp:416
201 #: ../../../src/MenuConfig.cpp:246
202 msgid "Cancel"
203 msgstr "Annulla"
204
205 #: ../../../src/GameStateNew.cpp:69
206 msgid "Create"
207 msgstr "Crea"
208
209 #: ../../../src/GameStateNew.cpp:77
210 msgid "Randomize"
211 msgstr ""
212
213 #: ../../../src/GameStateNew.cpp:93
214 msgid "Choose a Portrait"
215 msgstr "Scegli un ritratto"
216
217 #: ../../../src/GameStateNew.cpp:97
218 msgid "Choose a Name"
219 msgstr "Scegli un nome"
220
221 #: ../../../src/GameStateNew.cpp:101
222 msgid "Permadeath?"
223 msgstr "Morte definitiva?"
224
225 #: ../../../src/GameStateNew.cpp:105
226 msgid "Choose a Class"
227 msgstr "Scegli una classe"
228
229 #: ../../../src/GameStateTitle.cpp:107
230 msgid "Play Game"
231 msgstr "Gioca"
232
233 #: ../../../src/GameStateTitle.cpp:110
234 msgid "Enable a core mod to continue"
235 msgstr "Abilitare una mod core per continuare"
236
237 #: ../../../src/GameStateTitle.cpp:114 ../../../src/MenuMiniMap.cpp:152
238 msgid "Configuration"
239 msgstr "Impostazioni"
240
241 #: ../../../src/GameStateTitle.cpp:117
242 msgid "Credits"
243 msgstr "Riconoscimenti"
244
245 #: ../../../src/GameStateTitle.cpp:120
246 msgid "Exit Game"
247 msgstr "Esci dal gioco"
248
249 #: ../../../src/InputState.cpp:417
250 msgid "Accept"
251 msgstr "Accetta"
252
253 #: ../../../src/InputState.cpp:418 ../../../src/MenuMovementType.cpp:123
254 #: ../../../src/MenuMovementType.cpp:132 ../../../src/SDLInputState.cpp:668
255 #: ../../../src/SDLInputState.cpp:698
256 msgid "Up"
257 msgstr "Su"
258
259 #: ../../../src/InputState.cpp:419 ../../../src/MenuMovementType.cpp:125
260 #: ../../../src/MenuMovementType.cpp:134 ../../../src/SDLInputState.cpp:646
261 #: ../../../src/SDLInputState.cpp:676
262 msgid "Down"
263 msgstr "Giù"
264
265 #: ../../../src/InputState.cpp:420 ../../../src/MenuMovementType.cpp:124
266 #: ../../../src/MenuMovementType.cpp:133 ../../../src/SDLInputState.cpp:653
267 #: ../../../src/SDLInputState.cpp:683
268 msgid "Left"
269 msgstr "Sinistra"
270
271 #: ../../../src/InputState.cpp:421 ../../../src/MenuMovementType.cpp:126
272 #: ../../../src/MenuMovementType.cpp:135 ../../../src/SDLInputState.cpp:663
273 #: ../../../src/SDLInputState.cpp:693
274 msgid "Right"
275 msgstr "Destra"
276
277 #: ../../../src/InputState.cpp:422
278 msgid "Bar1"
279 msgstr "Barra1"
280
281 #: ../../../src/InputState.cpp:423
282 msgid "Bar2"
283 msgstr "Barra2"
284
285 #: ../../../src/InputState.cpp:424
286 msgid "Bar3"
287 msgstr "Barra3"
288
289 #: ../../../src/InputState.cpp:425
290 msgid "Bar4"
291 msgstr "Barra4"
292
293 #: ../../../src/InputState.cpp:426
294 msgid "Bar5"
295 msgstr "Barra5"
296
297 #: ../../../src/InputState.cpp:427
298 msgid "Bar6"
299 msgstr "Barra6"
300
301 #: ../../../src/InputState.cpp:428
302 msgid "Bar7"
303 msgstr "Barra7"
304
305 #: ../../../src/InputState.cpp:429
306 msgid "Bar8"
307 msgstr "Barra8"
308
309 #: ../../../src/InputState.cpp:430
310 msgid "Bar9"
311 msgstr "Barra9"
312
313 #: ../../../src/InputState.cpp:431
314 msgid "Bar0"
315 msgstr "Barra0"
316
317 #: ../../../src/InputState.cpp:432 ../../../src/MenuActionBar.cpp:84
318 #: ../../../src/MenuCharacter.cpp:54
319 msgid "Character"
320 msgstr "Personaggio"
321
322 #: ../../../src/InputState.cpp:433 ../../../src/MenuActionBar.cpp:85
323 #: ../../../src/MenuInventory.cpp:130 ../../../src/MenuVendor.cpp:59
324 msgid "Inventory"
325 msgstr "Inventario"
326
327 #: ../../../src/InputState.cpp:434 ../../../src/MenuActionBar.cpp:86
328 #: ../../../src/MenuPowers.cpp:158
329 msgid "Powers"
330 msgstr "Poteri"
331
332 #: ../../../src/InputState.cpp:435 ../../../src/MenuActionBar.cpp:87
333 #: ../../../src/MenuLog.cpp:72
334 msgid "Log"
335 msgstr "Diario"
336
337 #: ../../../src/InputState.cpp:436
338 msgid "Main1"
339 msgstr "Principale 1"
340
341 #: ../../../src/InputState.cpp:437
342 msgid "Main2"
343 msgstr "Principale 2"
344
345 #: ../../../src/InputState.cpp:438
346 msgid "Ctrl"
347 msgstr "Ctrl"
348
349 #: ../../../src/InputState.cpp:439
350 msgid "Shift"
351 msgstr "Shift"
352
353 #: ../../../src/InputState.cpp:440
354 msgid "Alt"
355 msgstr "Alt"
356
357 #: ../../../src/InputState.cpp:441 ../../../src/SDLInputState.cpp:675
358 msgid "Delete"
359 msgstr "Cancella"
360
361 #: ../../../src/InputState.cpp:442
362 msgid "ActionBar Accept"
363 msgstr "ActionBar Accetta"
364
365 #: ../../../src/InputState.cpp:443
366 msgid "ActionBar Left"
367 msgstr "ActionBar Sinistra"
368
369 #: ../../../src/InputState.cpp:444
370 msgid "ActionBar Right"
371 msgstr "ActionBar Destra"
372
373 #: ../../../src/InputState.cpp:445
374 msgid "ActionBar Use"
375 msgstr "ActionBar Usa"
376
377 #: ../../../src/InputState.cpp:446
378 msgid "Developer Menu"
379 msgstr "Menu Sviluppatore"
380
381 #: ../../../src/InputState.cpp:448
382 msgid "Left Mouse"
383 msgstr "Mouse sinistro"
384
385 #: ../../../src/InputState.cpp:449
386 msgid "Middle Mouse"
387 msgstr "Mouse centrale"
388
389 #: ../../../src/InputState.cpp:450
390 msgid "Right Mouse"
391 msgstr "Mouse destro"
392
393 #: ../../../src/InputState.cpp:451
394 msgid "Wheel Up"
395 msgstr "Rotella in alto"
396
397 #: ../../../src/InputState.cpp:452
398 msgid "Wheel Down"
399 msgstr "Rotella in basso"
400
401 #: ../../../src/InputState.cpp:453
402 msgid "Mouse X1"
403 msgstr "Mouse X1"
404
405 #: ../../../src/InputState.cpp:454
406 msgid "Mouse X2"
407 msgstr "Mouse X2"
408
409 #: ../../../src/ItemManager.cpp:475
410 msgid "Unknown Item"
411 msgstr "Oggetto sconosciuto"
412
413 #: ../../../src/ItemManager.cpp:646 ../../../src/MenuPowers.cpp:959
414 #, c-format
415 msgid "%d%% Speed"
416 msgstr "%d%% Velocità"
417
418 #: ../../../src/ItemManager.cpp:650 ../../../src/MenuPowers.cpp:962
419 #, c-format
420 msgid "%d%% Attack Speed"
421 msgstr "%d%% Velocità di Attacco"
422
423 #: ../../../src/ItemManager.cpp:672 ../../../src/MenuCharacter.cpp:352
424 #: ../../../src/MenuPowers.cpp:931
425 #, c-format
426 msgid "Resistance (%s)"
427 msgstr ""
428
429 #: ../../../src/ItemManager.cpp:682
430 #, c-format
431 msgid "Requires %s"
432 msgstr ""
433
434 #: ../../../src/ItemManager.cpp:731
435 msgid "Quest Item"
436 msgstr "Oggetto della missione"
437
438 #: ../../../src/ItemManager.cpp:758
439 #, c-format
440 msgid "Quality: %s"
441 msgstr "Qualità: %s"
442
443 #: ../../../src/ItemManager.cpp:783
444 #, c-format
445 msgid "Absorb: %d-%d"
446 msgstr "Assorbimento: %d-%d"
447
448 #: ../../../src/ItemManager.cpp:785
449 #, c-format
450 msgid "Absorb: %d"
451 msgstr "Assorbimento: %d"
452
453 #: ../../../src/ItemManager.cpp:825 ../../../src/MenuPowers.cpp:1206
454 #: ../../../src/MenuPowers.cpp:1209
455 #, c-format
456 msgid "Requires Level %d"
457 msgstr "Richiede Livello %d"
458
459 #: ../../../src/ItemManager.cpp:836 ../../../src/MenuPowers.cpp:1198
460 #: ../../../src/MenuPowers.cpp:1200
461 #, c-format
462 msgid "Requires %s %d"
463 msgstr "Richiede %s %d"
464
465 #: ../../../src/ItemManager.cpp:847
466 #, c-format
467 msgid "Requires Class: %s"
468 msgstr "Richiede Classe %s"
469
470 #: ../../../src/ItemManager.cpp:863 ../../../src/ItemManager.cpp:875
471 #, c-format
472 msgid "Buy Price: %d %s"
473 msgstr "Prezzo d'acquisto: %d %s"
474
475 #: ../../../src/ItemManager.cpp:865 ../../../src/ItemManager.cpp:877
476 #, c-format
477 msgid "Buy Price: %d %s each"
478 msgstr "Prezzo d'acquisto: %d %s ciascuno"
479
480 #: ../../../src/ItemManager.cpp:885
481 #, c-format
482 msgid "Sell Price: %d %s"
483 msgstr "Prezzo di vendita: %d %s"
484
485 #: ../../../src/ItemManager.cpp:887
486 #, c-format
487 msgid "Sell Price: %d %s each"
488 msgstr "Prezzo di vendita: %d %s ciascuno"
489
490 #: ../../../src/ItemManager.cpp:896
491 msgid "Set:"
492 msgstr "Completo:"
493
494 #: ../../../src/ItemManager.cpp:903
495 #, c-format
496 msgid "%d items:"
497 msgstr "%d oggetti:"
498
499 #: ../../../src/ItemManager.cpp:915
500 #, c-format
501 msgid "Press [%s] to read"
502 msgstr "Premi [%s] per leggere"
503
504 #: ../../../src/ItemManager.cpp:918
505 #, c-format
506 msgid "Press [%s] to use"
507 msgstr "Premi [%s] per usare"
508
509 #: ../../../src/MenuActionBar.cpp:239 ../../../src/MenuActionBar.cpp:246
510 #: ../../../src/MenuActionBar.cpp:249 ../../../src/MenuActionBar.cpp:255
511 #, c-format
512 msgid "Hotkey: %s"
513 msgstr "Tasto rapido: %s"
514
515 #: ../../../src/MenuActionBar.cpp:621
516 msgid "Not enough MP."
517 msgstr ""
518
519 #: ../../../src/MenuActiveEffects.cpp:124
520 #, c-format
521 msgid "x%d"
522 msgstr "x%d"
523
524 #: ../../../src/MenuActiveEffects.cpp:219
525 msgid "Remaining:"
526 msgstr "Rimanenti:"
527
528 #: ../../../src/MenuActiveEffects.cpp:225
529 #, c-format
530 msgid "x%d stacks"
531 msgstr "x%d mucchi"
532
533 #: ../../../src/MenuCharacter.cpp:73 ../../../src/MenuCharacter.cpp:78
534 msgid "Name"
535 msgstr "Nome"
536
537 #: ../../../src/MenuCharacter.cpp:74 ../../../src/MenuCharacter.cpp:79
538 msgid "Level"
539 msgstr "Livello"
540
541 #: ../../../src/MenuCharacter.cpp:309
542 #, c-format
543 msgid "Available stat points: %d"
544 msgstr ""
545
546 #: ../../../src/MenuCharacter.cpp:353
547 #, c-format
548 msgid "Reduces the damage taken from \"%s\" elemental attacks."
549 msgstr ""
550
551 #: ../../../src/MenuCharacter.cpp:363 ../../../src/MenuManager.cpp:301
552 #, c-format
553 msgid "XP: %d"
554 msgstr "ESP: %d"
555
556 #: ../../../src/MenuCharacter.cpp:365
557 #, c-format
558 msgid "Next: %d"
559 msgstr "Prossimo: %d"
560
561 #: ../../../src/MenuCharacter.cpp:371
562 #, c-format
563 msgid "base (%d), bonus (%d)"
564 msgstr "base (%d), bonus (%d)"
565
566 #: ../../../src/MenuCharacter.cpp:379 ../../../src/MenuCharacter.cpp:393
567 msgid "Related stats:"
568 msgstr "Statistiche associate:"
569
570 #: ../../../src/MenuCharacter.cpp:419 ../../../src/MenuCharacter.cpp:443
571 #, c-format
572 msgid "Each level grants %d."
573 msgstr "Ad ogni livello ottieni %d."
574
575 #: ../../../src/MenuCharacter.cpp:423 ../../../src/MenuCharacter.cpp:447
576 #, c-format
577 msgid "Each point of %s grants %d."
578 msgstr "Per ogni punto di %s ottieni %d."
579
580 #: ../../../src/MenuConfig.cpp:122 ../../../src/MenuConfig.cpp:1171
581 msgid "Clear"
582 msgstr "Pulisci"
583
584 #: ../../../src/MenuConfig.cpp:122 ../../../src/MenuConfig.cpp:1169
585 msgid "Assign:"
586 msgstr "Assegnazioni:"
587
588 #: ../../../src/MenuConfig.cpp:123 ../../../src/MenuConfig.cpp:245
144589 msgid "Defaults"
145590 msgstr "Predefiniti"
146591
147 #: ../../../src/GameStateConfigBase.cpp:89
592 #: ../../../src/MenuConfig.cpp:123
148593 msgid "Reset ALL settings?"
149594 msgstr "Resettare TUTTE le impostazioni?"
150595
151 #: ../../../src/GameStateConfigBase.cpp:109 ../../../src/MenuNumPicker.cpp:49
596 #: ../../../src/MenuConfig.cpp:244 ../../../src/MenuNumPicker.cpp:49
152597 msgid "OK"
153598 msgstr "Ok"
154599
155 #: ../../../src/GameStateConfigBase.cpp:111 ../../../src/GameStateNew.cpp:65
156 #: ../../../src/InputState.cpp:401
157 msgid "Cancel"
158 msgstr "Annulla"
159
160 #: ../../../src/GameStateConfigBase.cpp:160
161 #: ../../../src/GameStateConfigDesktop.cpp:130
600 #: ../../../src/MenuConfig.cpp:248 ../../../src/MenuGameOver.cpp:72
601 msgid "Continue"
602 msgstr ""
603
604 #: ../../../src/MenuConfig.cpp:250
605 msgid "Save Game"
606 msgstr ""
607
608 #: ../../../src/MenuConfig.cpp:293
609 msgid "Default"
610 msgstr ""
611
612 #: ../../../src/MenuConfig.cpp:293
613 msgid ""
614 "Show all loot tooltips, except for those that would be obscured by the "
615 "player or an enemy. Temporarily show all loot tooltips with 'Alt'."
616 msgstr ""
617
618 #: ../../../src/MenuConfig.cpp:294
619 msgid "Show all"
620 msgstr ""
621
622 #: ../../../src/MenuConfig.cpp:294
623 msgid ""
624 "Always show loot tooltips. Temporarily hide all loot tooltips with 'Alt'."
625 msgstr ""
626
627 #: ../../../src/MenuConfig.cpp:295 ../../../src/MenuConfig.cpp:300
628 msgid "Hidden"
629 msgstr ""
630
631 #: ../../../src/MenuConfig.cpp:295
632 msgid ""
633 "Always hide loot tooltips, except for when a piece of loot is hovered with "
634 "the mouse cursor. Temporarily show all loot tooltips with 'Alt'."
635 msgstr ""
636
637 #: ../../../src/MenuConfig.cpp:298
638 msgid "Visible"
639 msgstr ""
640
641 #: ../../../src/MenuConfig.cpp:299
642 msgid "Visible (2x zoom)"
643 msgstr ""
644
645 #: ../../../src/MenuConfig.cpp:303
646 msgid ""
647 "Controls the type of warning to be activated when the player is below the "
648 "low health threshold."
649 msgstr ""
650
651 #: ../../../src/MenuConfig.cpp:304
652 msgid "- Display a message"
653 msgstr ""
654
655 #: ../../../src/MenuConfig.cpp:305
656 msgid "- Play a sound"
657 msgstr ""
658
659 #: ../../../src/MenuConfig.cpp:306
660 msgid "- Change the cursor"
661 msgstr ""
662
663 #: ../../../src/MenuConfig.cpp:308
664 msgid "Disabled"
665 msgstr ""
666
667 #: ../../../src/MenuConfig.cpp:309
668 msgid "All"
669 msgstr ""
670
671 #: ../../../src/MenuConfig.cpp:310
672 msgid "Message & Cursor"
673 msgstr ""
674
675 #: ../../../src/MenuConfig.cpp:311
676 msgid "Message & Sound"
677 msgstr ""
678
679 #: ../../../src/MenuConfig.cpp:312
680 msgid "Sound & Cursor"
681 msgstr ""
682
683 #: ../../../src/MenuConfig.cpp:313
684 msgid "Message"
685 msgstr ""
686
687 #: ../../../src/MenuConfig.cpp:314
688 msgid "Cursor"
689 msgstr ""
690
691 #: ../../../src/MenuConfig.cpp:315
692 msgid "Sound"
693 msgstr ""
694
695 #: ../../../src/MenuConfig.cpp:321
696 msgid ""
697 "When the player's health drops below the given threshold, the low health "
698 "notifications are triggered if one or more of them is enabled."
699 msgstr ""
700
701 #: ../../../src/MenuConfig.cpp:334 ../../../src/MenuConfig.cpp:1587
702 #: ../../../src/MenuGameOver.cpp:116
703 msgid "Exit"
704 msgstr "Esci"
705
706 #: ../../../src/MenuConfig.cpp:335
707 msgid "Video"
708 msgstr "Video"
709
710 #: ../../../src/MenuConfig.cpp:336
162711 msgid "Audio"
163712 msgstr "Audio"
164713
165 #: ../../../src/GameStateConfigBase.cpp:161
166 #: ../../../src/GameStateConfigDesktop.cpp:131
714 #: ../../../src/MenuConfig.cpp:337
167715 msgid "Interface"
168716 msgstr "Interfaccia"
169717
170 #: ../../../src/GameStateConfigBase.cpp:162
171 #: ../../../src/GameStateConfigDesktop.cpp:134
718 #: ../../../src/MenuConfig.cpp:338
719 msgid "Input"
720 msgstr "Input"
721
722 #: ../../../src/MenuConfig.cpp:339
723 msgid "Keybindings"
724 msgstr "Scorciatoie da tastiera"
725
726 #: ../../../src/MenuConfig.cpp:340
172727 msgid "Mods"
173728 msgstr "Mod"
174729
175 #: ../../../src/GameStateConfigBase.cpp:249 ../../../src/MenuExit.cpp:72
730 #: ../../../src/MenuConfig.cpp:352
731 msgid "Paused"
732 msgstr "In pausa"
733
734 #: ../../../src/MenuConfig.cpp:355
735 msgid "Time Played"
736 msgstr ""
737
738 #: ../../../src/MenuConfig.cpp:361
739 msgid "Renderer"
740 msgstr "Renderer"
741
742 #: ../../../src/MenuConfig.cpp:362
743 msgid "Full Screen Mode"
744 msgstr "Modalità schermo intero"
745
746 #: ../../../src/MenuConfig.cpp:363
747 msgid "Hardware surfaces"
748 msgstr "Superfici solide"
749
750 #: ../../../src/MenuConfig.cpp:364
751 msgid "V-Sync"
752 msgstr "V-Sync"
753
754 #: ../../../src/MenuConfig.cpp:365
755 msgid "Texture Filtering"
756 msgstr "Filtro texture"
757
758 #: ../../../src/MenuConfig.cpp:366
759 msgid "DPI scaling"
760 msgstr "dimensione DPI"
761
762 #: ../../../src/MenuConfig.cpp:367
763 msgid "Parallax Layers"
764 msgstr ""
765
766 #: ../../../src/MenuConfig.cpp:368
767 msgid "Allow changing gamma"
768 msgstr "Permetti cambio di gamma"
769
770 #: ../../../src/MenuConfig.cpp:369
771 msgid "Gamma"
772 msgstr "Gamma"
773
774 #: ../../../src/MenuConfig.cpp:371
775 msgid "Sound Volume"
776 msgstr "Volume audio"
777
778 #: ../../../src/MenuConfig.cpp:372
176779 msgid "Music Volume"
177780 msgstr "Volume musica"
178781
179 #: ../../../src/GameStateConfigBase.cpp:253 ../../../src/MenuExit.cpp:77
180 msgid "Sound Volume"
181 msgstr "Volume audio"
182
183 #: ../../../src/GameStateConfigBase.cpp:257
782 #: ../../../src/MenuConfig.cpp:374
184783 msgid "Language"
185784 msgstr "Lingua"
186785
187 #: ../../../src/GameStateConfigBase.cpp:266
786 #: ../../../src/MenuConfig.cpp:375
188787 msgid "Show FPS"
189788 msgstr "Mostra FPS"
190789
191 #: ../../../src/GameStateConfigBase.cpp:270
790 #: ../../../src/MenuConfig.cpp:376
791 msgid "Hardware mouse cursor"
792 msgstr "Hardware cursore mouse"
793
794 #: ../../../src/MenuConfig.cpp:377
192795 msgid "Colorblind Mode"
193796 msgstr "Modalità per daltonici"
194797
195 #: ../../../src/GameStateConfigBase.cpp:274
196 msgid "Hardware mouse cursor"
197 msgstr "Hardware cursore mouse"
198
199 #: ../../../src/GameStateConfigBase.cpp:278
798 #: ../../../src/MenuConfig.cpp:378
200799 msgid "Developer Mode"
201800 msgstr "Modalità Sviluppatore"
202801
203 #: ../../../src/GameStateConfigBase.cpp:282
802 #: ../../../src/MenuConfig.cpp:379
204803 msgid "Subtitles"
205804 msgstr "Sottotitoli"
206805
207 #: ../../../src/GameStateConfigBase.cpp:286
208 msgid "Active Mods"
209 msgstr "Mod attive"
210
211 #: ../../../src/GameStateConfigBase.cpp:295
212 msgid "Available Mods"
213 msgstr "Mod disponibili"
214
215 #: ../../../src/GameStateConfigBase.cpp:314
216 msgid "<< Disable"
217 msgstr "<< Disabilita"
218
219 #: ../../../src/GameStateConfigBase.cpp:320
220 msgid "Enable >>"
221 msgstr "Abilita >>"
222
223 #: ../../../src/GameStateConfigBase.cpp:873
224 msgid "Version:"
225 msgstr "Versione:"
226
227 #: ../../../src/GameStateConfigBase.cpp:878
228 msgid "Game:"
229 msgstr "Gioco:"
230
231 #: ../../../src/GameStateConfigBase.cpp:883
232 msgid "Engine version:"
233 msgstr "Versione motore di gioco:"
234
235 #: ../../../src/GameStateConfigBase.cpp:891
236 msgid "Requires mods:"
237 msgstr "Richiede mod:"
238
239 #: ../../../src/GameStateConfigDesktop.cpp:83
240 #: ../../../src/GameStateConfigDesktop.cpp:751
241 msgid "Clear"
242 msgstr "Pulisci"
243
244 #: ../../../src/GameStateConfigDesktop.cpp:83
245 #: ../../../src/GameStateConfigDesktop.cpp:749
246 msgid "Assign:"
247 msgstr "Assegnazioni:"
248
249 #: ../../../src/GameStateConfigDesktop.cpp:128
250 msgid "Video"
251 msgstr "Video"
252
253 #: ../../../src/GameStateConfigDesktop.cpp:132
254 msgid "Input"
255 msgstr "Input"
256
257 #: ../../../src/GameStateConfigDesktop.cpp:133
258 msgid "Keybindings"
259 msgstr "Scorciatoie da tastiera"
260
261 #: ../../../src/GameStateConfigDesktop.cpp:188
806 #: ../../../src/MenuConfig.cpp:380
807 msgid "Loot tooltip visibility"
808 msgstr ""
809
810 #: ../../../src/MenuConfig.cpp:381
811 msgid "Mini-map mode"
812 msgstr ""
813
814 #: ../../../src/MenuConfig.cpp:382
815 msgid "Always show stat bar labels"
816 msgstr "Mostra sempre le etichette della barra"
817
818 #: ../../../src/MenuConfig.cpp:383
819 msgid "Allow stat bar auto-hiding"
820 msgstr ""
821
822 #: ../../../src/MenuConfig.cpp:384
823 msgid "Show combat text"
824 msgstr "Mostra testo combattimento"
825
826 #: ../../../src/MenuConfig.cpp:385
827 msgid "Automatically equip items"
828 msgstr "Equipaggia gli oggetti automaticamente"
829
830 #: ../../../src/MenuConfig.cpp:386
831 msgid "Show hidden entity markers"
832 msgstr ""
833
834 #: ../../../src/MenuConfig.cpp:387
835 msgid "Low health notification"
836 msgstr ""
837
838 #: ../../../src/MenuConfig.cpp:388
839 msgid "Low health threshold"
840 msgstr ""
841
842 #: ../../../src/MenuConfig.cpp:389
843 msgid "Show item comparison tooltips"
844 msgstr ""
845
846 #: ../../../src/MenuConfig.cpp:392 ../../../src/MenuMovementType.cpp:94
847 #: ../../../src/MenuMovementType.cpp:131
848 msgid "Joystick"
849 msgstr "Joystick"
850
851 #: ../../../src/MenuConfig.cpp:393
852 msgid "Move hero using mouse"
853 msgstr "Muovi Eroe tramite mouse"
854
855 #: ../../../src/MenuConfig.cpp:394
856 msgid "Mouse aim"
857 msgstr "Mira via mouse"
858
859 #: ../../../src/MenuConfig.cpp:395
860 msgid "Do not use mouse"
861 msgstr "Non usare il mouse"
862
863 #: ../../../src/MenuConfig.cpp:396
864 msgid "Swap mouse movement button"
865 msgstr ""
866
867 #: ../../../src/MenuConfig.cpp:397
868 msgid "Attack with mouse movement"
869 msgstr ""
870
871 #: ../../../src/MenuConfig.cpp:398
872 msgid "Joystick Deadzone"
873 msgstr "Zona neutra Joystick"
874
875 #: ../../../src/MenuConfig.cpp:408
876 #, c-format
877 msgid "Primary binding: %s"
878 msgstr ""
879
880 #: ../../../src/MenuConfig.cpp:409
881 #, c-format
882 msgid "Alternate binding: %s"
883 msgstr ""
884
885 #: ../../../src/MenuConfig.cpp:410
886 #, c-format
887 msgid "Joystick binding: %s"
888 msgstr ""
889
890 #: ../../../src/MenuConfig.cpp:511
262891 msgid ""
263892 "Will try to store surfaces in video memory versus system memory. The effect "
264893 "this has on performance depends on the renderer."
266895 "Cerca di caricare le superfici nella memoria video anziché in quella di "
267896 "sistema. L'effetto sulla performance dipende dalla scheda video."
268897
269 #: ../../../src/GameStateConfigDesktop.cpp:189
898 #: ../../../src/MenuConfig.cpp:512
270899 msgid ""
271900 "Prevents screen tearing. Disable if you experience \"stuttering\" in "
272901 "windowed mode or input lag."
274903 "Previene il tearing dello schermo. Disabilita se sperimenti lo "
275904 "\"stuttering\" nel modo 'windowed' o un ritardo nell'input."
276905
277 #: ../../../src/GameStateConfigDesktop.cpp:190
906 #: ../../../src/MenuConfig.cpp:513
278907 msgid ""
279908 "When enabled, this uses the screen DPI in addition to the window dimensions "
280909 "to scale the rendering resolution. Otherwise, only the window dimensions are"
284913 "della finestra per modificare la risoluzione. Altrimenti, sono utilizzate "
285914 "solo le dimensioni della finestra."
286915
287 #: ../../../src/GameStateConfigDesktop.cpp:191
916 #: ../../../src/MenuConfig.cpp:514
288917 msgid ""
289918 "This enables parallax (non-tile) layers. Disabling this setting can improve "
290919 "performance in some cases."
291920 msgstr ""
292921
293 #: ../../../src/GameStateConfigDesktop.cpp:192
294 msgid "Experimental"
295 msgstr "Sperimentale"
296
297 #: ../../../src/GameStateConfigDesktop.cpp:193
298 msgid "For handheld devices"
299 msgstr "Per dispositivi tascabili"
300
301 #: ../../../src/GameStateConfigDesktop.cpp:211
302 msgid "Renderer"
303 msgstr "Renderer"
304
305 #: ../../../src/GameStateConfigDesktop.cpp:227
306 msgid "Full Screen Mode"
307 msgstr "Modalità schermo intero"
308
309 #: ../../../src/GameStateConfigDesktop.cpp:231
310 msgid "Move hero using mouse"
311 msgstr "Muovi Eroe tramite mouse"
312
313 #: ../../../src/GameStateConfigDesktop.cpp:235
314 msgid "Hardware surfaces"
315 msgstr "Superfici solide"
316
317 #: ../../../src/GameStateConfigDesktop.cpp:239
318 msgid "V-Sync"
319 msgstr "V-Sync"
320
321 #: ../../../src/GameStateConfigDesktop.cpp:243
322 msgid "Texture Filtering"
323 msgstr "Filtro texture"
324
325 #: ../../../src/GameStateConfigDesktop.cpp:247
326 msgid "DPI scaling"
327 msgstr "dimensione DPI"
328
329 #: ../../../src/GameStateConfigDesktop.cpp:251
330 msgid "Parallax Layers"
331 msgstr ""
332
333 #: ../../../src/GameStateConfigDesktop.cpp:255
334 msgid "Allow changing gamma"
335 msgstr "Permetti cambio di gamma"
336
337 #: ../../../src/GameStateConfigDesktop.cpp:259
338 msgid "Gamma"
339 msgstr "Gamma"
340
341 #: ../../../src/GameStateConfigDesktop.cpp:263
342 msgid "Use joystick"
343 msgstr "Usa joystick"
344
345 #: ../../../src/GameStateConfigDesktop.cpp:267
346 msgid "Joystick"
347 msgstr "Joystick"
348
349 #: ../../../src/GameStateConfigDesktop.cpp:283
350 msgid "Mouse aim"
351 msgstr "Mira via mouse"
352
353 #: ../../../src/GameStateConfigDesktop.cpp:287
354 msgid "Do not use mouse"
355 msgstr "Non usare il mouse"
356
357 #: ../../../src/GameStateConfigDesktop.cpp:291
358 msgid "Joystick Deadzone"
359 msgstr "Zona neutra Joystick"
360
361 #: ../../../src/GameState.cpp:37 ../../../src/GameState.cpp:58
362 msgid "Loading..."
363 msgstr "Caricamento..."
364
365 #: ../../../src/GameStateLoad.cpp:88 ../../../src/GameStateLoad.cpp:101
366 msgid "Delete Save"
367 msgstr "Elimina salvataggio"
368
369 #: ../../../src/GameStateLoad.cpp:88
370 msgid "Delete this save?"
371 msgstr "Eliminare questo salvataggio?"
372
373 #: ../../../src/GameStateLoad.cpp:90
374 msgid "Exit to Title"
375 msgstr "Torna ai Titoli"
376
377 #: ../../../src/GameStateLoad.cpp:93
378 msgid "New Game"
379 msgstr "Nuova Partita"
380
381 #: ../../../src/GameStateLoad.cpp:97 ../../../src/GameStateLoad.cpp:600
382 msgid "Choose a Slot"
383 msgstr "Scegli Slot"
384
385 #: ../../../src/GameStateLoad.cpp:573 ../../../src/GameStateLoad.cpp:594
386 msgid "Enable a story mod to continue"
387 msgstr "Abilita una mod storia per continuare"
388
389 #: ../../../src/GameStateLoad.cpp:589
390 msgid "Load Game"
391 msgstr "Carica partita"
392
393 #: ../../../src/GameStateLoad.cpp:695
394 msgid "Entering game world..."
395 msgstr "Ingresso nel mondo di gioco..."
396
397 #: ../../../src/GameStateLoad.cpp:698
398 msgid "Loading saved game..."
399 msgstr "Caricamento partita..."
400
401 #: ../../../src/GameStateLoad.cpp:731
402 msgid "Invalid save"
403 msgstr "Salvataggio corrotto"
404
405 #: ../../../src/GameStateLoad.cpp:755 ../../../src/ItemManager.cpp:747
406 #: ../../../src/MenuPowers.cpp:778 ../../../src/MenuPowers.cpp:1144
407 #: ../../../src/MenuPowers.cpp:1542
408 #, c-format
409 msgid "Level %d"
410 msgstr "Livello %d"
411
412 #: ../../../src/GameStateNew.cpp:68
413 msgid "Create"
414 msgstr "Crea"
415
416 #: ../../../src/GameStateNew.cpp:76
417 msgid "Randomize"
418 msgstr ""
419
420 #: ../../../src/GameStateNew.cpp:92
421 msgid "Choose a Portrait"
422 msgstr "Scegli un ritratto"
423
424 #: ../../../src/GameStateNew.cpp:96
425 msgid "Choose a Name"
426 msgstr "Scegli un nome"
427
428 #: ../../../src/GameStateNew.cpp:100
429 msgid "Permadeath?"
430 msgstr "Morte definitiva?"
431
432 #: ../../../src/GameStateNew.cpp:104
433 msgid "Choose a Class"
434 msgstr "Scegli una classe"
435
436 #: ../../../src/GameStateTitle.cpp:108
437 msgid "Play Game"
438 msgstr "Gioca"
439
440 #: ../../../src/GameStateTitle.cpp:111
441 msgid "Enable a core mod to continue"
442 msgstr "Abilitare una mod core per continuare"
443
444 #: ../../../src/GameStateTitle.cpp:115
445 msgid "Configuration"
446 msgstr "Impostazioni"
447
448 #: ../../../src/GameStateTitle.cpp:118
449 msgid "Credits"
450 msgstr "Riconoscimenti"
451
452 #: ../../../src/GameStateTitle.cpp:121
453 msgid "Exit Game"
454 msgstr "Esci dal gioco"
455
456 #: ../../../src/InputState.cpp:402
457 msgid "Accept"
458 msgstr "Accetta"
459
460 #: ../../../src/InputState.cpp:403 ../../../src/SDLInputState.cpp:607
461 msgid "Up"
462 msgstr "Su"
463
464 #: ../../../src/InputState.cpp:404 ../../../src/SDLInputState.cpp:585
465 msgid "Down"
466 msgstr "Giù"
467
468 #: ../../../src/InputState.cpp:405 ../../../src/SDLInputState.cpp:592
469 msgid "Left"
470 msgstr "Sinistra"
471
472 #: ../../../src/InputState.cpp:406 ../../../src/SDLInputState.cpp:602
473 msgid "Right"
474 msgstr "Destra"
475
476 #: ../../../src/InputState.cpp:407
477 msgid "Bar1"
478 msgstr "Barra1"
479
480 #: ../../../src/InputState.cpp:408
481 msgid "Bar2"
482 msgstr "Barra2"
483
484 #: ../../../src/InputState.cpp:409
485 msgid "Bar3"
486 msgstr "Barra3"
487
488 #: ../../../src/InputState.cpp:410
489 msgid "Bar4"
490 msgstr "Barra4"
491
492 #: ../../../src/InputState.cpp:411
493 msgid "Bar5"
494 msgstr "Barra5"
495
496 #: ../../../src/InputState.cpp:412
497 msgid "Bar6"
498 msgstr "Barra6"
499
500 #: ../../../src/InputState.cpp:413
501 msgid "Bar7"
502 msgstr "Barra7"
503
504 #: ../../../src/InputState.cpp:414
505 msgid "Bar8"
506 msgstr "Barra8"
507
508 #: ../../../src/InputState.cpp:415
509 msgid "Bar9"
510 msgstr "Barra9"
511
512 #: ../../../src/InputState.cpp:416
513 msgid "Bar0"
514 msgstr "Barra0"
515
516 #: ../../../src/InputState.cpp:417 ../../../src/MenuActionBar.cpp:83
517 #: ../../../src/MenuCharacter.cpp:54
518 msgid "Character"
519 msgstr "Personaggio"
520
521 #: ../../../src/InputState.cpp:418 ../../../src/MenuActionBar.cpp:84
522 #: ../../../src/MenuInventory.cpp:137 ../../../src/MenuVendor.cpp:57
523 msgid "Inventory"
524 msgstr "Inventario"
525
526 #: ../../../src/InputState.cpp:419 ../../../src/MenuActionBar.cpp:85
527 #: ../../../src/MenuPowers.cpp:168
528 msgid "Powers"
529 msgstr "Poteri"
530
531 #: ../../../src/InputState.cpp:420 ../../../src/MenuActionBar.cpp:86
532 #: ../../../src/MenuLog.cpp:72
533 msgid "Log"
534 msgstr "Diario"
535
536 #: ../../../src/InputState.cpp:421
537 msgid "Main1"
538 msgstr "Principale 1"
539
540 #: ../../../src/InputState.cpp:422
541 msgid "Main2"
542 msgstr "Principale 2"
543
544 #: ../../../src/InputState.cpp:423
545 msgid "Ctrl"
546 msgstr "Ctrl"
547
548 #: ../../../src/InputState.cpp:424
549 msgid "Shift"
550 msgstr "Shift"
551
552 #: ../../../src/InputState.cpp:425
553 msgid "Alt"
554 msgstr "Alt"
555
556 #: ../../../src/InputState.cpp:426 ../../../src/SDLInputState.cpp:584
557 msgid "Delete"
558 msgstr "Cancella"
559
560 #: ../../../src/InputState.cpp:427
561 msgid "ActionBar Accept"
562 msgstr "ActionBar Accetta"
563
564 #: ../../../src/InputState.cpp:428
565 msgid "ActionBar Left"
566 msgstr "ActionBar Sinistra"
567
568 #: ../../../src/InputState.cpp:429
569 msgid "ActionBar Right"
570 msgstr "ActionBar Destra"
571
572 #: ../../../src/InputState.cpp:430
573 msgid "ActionBar Use"
574 msgstr "ActionBar Usa"
575
576 #: ../../../src/InputState.cpp:431
577 msgid "Developer Menu"
578 msgstr "Menu Sviluppatore"
579
580 #: ../../../src/InputState.cpp:433
581 msgid "Left Mouse"
582 msgstr "Mouse sinistro"
583
584 #: ../../../src/InputState.cpp:434
585 msgid "Middle Mouse"
586 msgstr "Mouse centrale"
587
588 #: ../../../src/InputState.cpp:435
589 msgid "Right Mouse"
590 msgstr "Mouse destro"
591
592 #: ../../../src/InputState.cpp:436
593 msgid "Wheel Up"
594 msgstr "Rotella in alto"
595
596 #: ../../../src/InputState.cpp:437
597 msgid "Wheel Down"
598 msgstr "Rotella in basso"
599
600 #: ../../../src/InputState.cpp:438
601 msgid "Mouse X1"
602 msgstr "Mouse X1"
603
604 #: ../../../src/InputState.cpp:439
605 msgid "Mouse X2"
606 msgstr "Mouse X2"
607
608 #: ../../../src/ItemManager.cpp:450 ../../../src/ItemManager.cpp:453
609 msgid "Unknown Item"
610 msgstr "Oggetto sconosciuto"
611
612 #: ../../../src/ItemManager.cpp:648 ../../../src/MenuPowers.cpp:887
613 #, c-format
614 msgid "%d%% Speed"
615 msgstr "%d%% Velocità"
616
617 #: ../../../src/ItemManager.cpp:652 ../../../src/MenuPowers.cpp:890
618 #, c-format
619 msgid "%d%% Attack Speed"
620 msgstr "%d%% Velocità di Attacco"
621
622 #: ../../../src/ItemManager.cpp:674 ../../../src/MenuCharacter.cpp:354
623 #: ../../../src/MenuPowers.cpp:833
624 #, c-format
625 msgid "Resistance (%s)"
626 msgstr ""
627
628 #: ../../../src/ItemManager.cpp:684
629 #, c-format
630 msgid "Requires %s"
631 msgstr ""
632
633 #: ../../../src/ItemManager.cpp:733
634 msgid "Quest Item"
635 msgstr "Oggetto della missione"
636
637 #: ../../../src/ItemManager.cpp:760
638 #, c-format
639 msgid "Quality: %s"
640 msgstr "Qualità: %s"
641
642 #: ../../../src/ItemManager.cpp:785
643 #, c-format
644 msgid "Absorb: %d-%d"
645 msgstr "Assorbimento: %d-%d"
646
647 #: ../../../src/ItemManager.cpp:787
648 #, c-format
649 msgid "Absorb: %d"
650 msgstr "Assorbimento: %d"
651
652 #: ../../../src/ItemManager.cpp:827 ../../../src/MenuPowers.cpp:1131
653 #: ../../../src/MenuPowers.cpp:1134
654 #, c-format
655 msgid "Requires Level %d"
656 msgstr "Richiede Livello %d"
657
658 #: ../../../src/ItemManager.cpp:838 ../../../src/MenuPowers.cpp:1123
659 #: ../../../src/MenuPowers.cpp:1125
660 #, c-format
661 msgid "Requires %s %d"
662 msgstr "Richiede %s %d"
663
664 #: ../../../src/ItemManager.cpp:849
665 #, c-format
666 msgid "Requires Class: %s"
667 msgstr "Richiede Classe %s"
668
669 #: ../../../src/ItemManager.cpp:864 ../../../src/ItemManager.cpp:876
670 #, c-format
671 msgid "Buy Price: %d %s"
672 msgstr "Prezzo d'acquisto: %d %s"
673
674 #: ../../../src/ItemManager.cpp:866 ../../../src/ItemManager.cpp:878
675 #, c-format
676 msgid "Buy Price: %d %s each"
677 msgstr "Prezzo d'acquisto: %d %s ciascuno"
678
679 #: ../../../src/ItemManager.cpp:886
680 #, c-format
681 msgid "Sell Price: %d %s"
682 msgstr "Prezzo di vendita: %d %s"
683
684 #: ../../../src/ItemManager.cpp:888
685 #, c-format
686 msgid "Sell Price: %d %s each"
687 msgstr "Prezzo di vendita: %d %s ciascuno"
688
689 #: ../../../src/ItemManager.cpp:897
690 msgid "Set:"
691 msgstr "Completo:"
692
693 #: ../../../src/ItemManager.cpp:904
694 #, c-format
695 msgid "%d items:"
696 msgstr "%d oggetti:"
697
698 #: ../../../src/ItemManager.cpp:917
699 #, c-format
700 msgid "Press [%s] to use"
701 msgstr "Premi [%s] per usare"
702
703 #: ../../../src/ItemManager.cpp:920
704 #, c-format
705 msgid "Press [%s] to read"
706 msgstr "Premi [%s] per leggere"
707
708 #: ../../../src/MenuActionBar.cpp:87
709 msgid "Loot tooltip visibility"
710 msgstr ""
711
712 #: ../../../src/MenuActionBar.cpp:88
713 msgid "Mini-map mode"
714 msgstr ""
715
716 #: ../../../src/MenuActionBar.cpp:89
717 msgid "Always show stat bar labels"
718 msgstr "Mostra sempre le etichette della barra"
719
720 #: ../../../src/MenuActionBar.cpp:90
721 msgid "Show combat text"
722 msgstr "Mostra testo combattimento"
723
724 #: ../../../src/MenuActionBar.cpp:254 ../../../src/MenuActionBar.cpp:261
725 #: ../../../src/MenuActionBar.cpp:264 ../../../src/MenuActionBar.cpp:271
726 #, c-format
727 msgid "Hotkey: %s"
728 msgstr "Tasto rapido: %s"
729
730 #: ../../../src/MenuActionBar.cpp:474
731 #, c-format
732 msgid "Default. Temporarily show all loot tooltips with '%s'."
733 msgstr ""
734
735 #: ../../../src/MenuActionBar.cpp:476
736 #, c-format
737 msgid "Show All. Temporarily hide all loot tooltips with '%s'."
738 msgstr ""
739
740 #: ../../../src/MenuActionBar.cpp:478
741 #, c-format
742 msgid "Hide All. Temporarily show all loot tooltips with '%s'."
743 msgstr ""
744
745 #: ../../../src/MenuActionBar.cpp:482
746 msgid "Visible"
747 msgstr ""
748
749 #: ../../../src/MenuActionBar.cpp:484
750 msgid "Visible (2x zoom)"
751 msgstr ""
752
753 #: ../../../src/MenuActionBar.cpp:486
754 msgid "Hidden"
755 msgstr ""
756
757 #: ../../../src/MenuActionBar.cpp:490 ../../../src/MenuActionBar.cpp:496
758 msgid "Enabled"
759 msgstr ""
760
761 #: ../../../src/MenuActionBar.cpp:492 ../../../src/MenuActionBar.cpp:498
762 msgid "Disabled"
763 msgstr ""
764
765 #: ../../../src/MenuActionBar.cpp:657
766 msgid "Not enough MP."
767 msgstr ""
768
769 #: ../../../src/MenuActiveEffects.cpp:124
770 #, c-format
771 msgid "x%d"
772 msgstr "x%d"
773
774 #: ../../../src/MenuActiveEffects.cpp:219
775 msgid "Remaining:"
776 msgstr "Rimanenti:"
777
778 #: ../../../src/MenuActiveEffects.cpp:225
779 #, c-format
780 msgid "x%d stacks"
781 msgstr "x%d mucchi"
782
783 #: ../../../src/MenuCharacter.cpp:73 ../../../src/MenuCharacter.cpp:78
784 msgid "Name"
785 msgstr "Nome"
786
787 #: ../../../src/MenuCharacter.cpp:74 ../../../src/MenuCharacter.cpp:79
788 msgid "Level"
789 msgstr "Livello"
790
791 #: ../../../src/MenuCharacter.cpp:310
792 #, c-format
793 msgid "%d unspent stat point"
794 msgstr "%d punto statistiche non utilizzato"
795
796 #: ../../../src/MenuCharacter.cpp:313
797 #, c-format
798 msgid "%d unspent stat points"
799 msgstr "%d punti statistiche non utilizzati"
800
801 #: ../../../src/MenuCharacter.cpp:355
802 #, c-format
803 msgid "Reduces the damage taken from \"%s\" elemental attacks."
804 msgstr ""
805
806 #: ../../../src/MenuCharacter.cpp:365 ../../../src/MenuManager.cpp:283
807 #, c-format
808 msgid "XP: %d"
809 msgstr "ESP: %d"
810
811 #: ../../../src/MenuCharacter.cpp:367
812 #, c-format
813 msgid "Next: %d"
814 msgstr "Prossimo: %d"
815
816 #: ../../../src/MenuCharacter.cpp:373
817 #, c-format
818 msgid "base (%d), bonus (%d)"
819 msgstr "base (%d), bonus (%d)"
820
821 #: ../../../src/MenuCharacter.cpp:381 ../../../src/MenuCharacter.cpp:395
822 msgid "Related stats:"
823 msgstr "Statistiche associate:"
824
825 #: ../../../src/MenuCharacter.cpp:421 ../../../src/MenuCharacter.cpp:445
826 #, c-format
827 msgid "Each level grants %d."
828 msgstr "Ad ogni livello ottieni %d."
829
830 #: ../../../src/MenuCharacter.cpp:425 ../../../src/MenuCharacter.cpp:449
831 #, c-format
832 msgid "Each point of %s grants %d."
833 msgstr "Per ogni punto di %s ottieni %d."
834
835 #: ../../../src/MenuDevConsole.cpp:63
922 #: ../../../src/MenuConfig.cpp:515
923 msgid ""
924 "Enables the below setting that controls the screen gamma level. The behavior"
925 " of the gamma setting can vary between platforms."
926 msgstr ""
927
928 #: ../../../src/MenuConfig.cpp:516
929 msgid ""
930 "Provides additional text for information that is primarily conveyed through "
931 "color."
932 msgstr ""
933
934 #: ../../../src/MenuConfig.cpp:517
935 msgid ""
936 "Some mods will automatically hide the stat bars when they are inactive. "
937 "Disabling this option will keep them displayed at all times."
938 msgstr ""
939
940 #: ../../../src/MenuConfig.cpp:518
941 msgid ""
942 "When enabled, empty equipment slots will be filled with applicable items "
943 "when they are obtained."
944 msgstr ""
945
946 #: ../../../src/MenuConfig.cpp:519
947 msgid ""
948 "Shows a marker above enemies, allies, and the player when they are obscured "
949 "by tall objects."
950 msgstr ""
951
952 #: ../../../src/MenuConfig.cpp:520
953 msgid ""
954 "When enabled, tooltips for equipped items of the same type are shown next to"
955 " standard item tooltips."
956 msgstr ""
957
958 #: ../../../src/MenuConfig.cpp:521
959 msgid ""
960 "This allows the game to be controlled entirely with the keyboard (or "
961 "joystick)."
962 msgstr ""
963
964 #: ../../../src/MenuConfig.cpp:522
965 msgid ""
966 "When 'Move hero using mouse' is enabled, this setting controls if 'Main1' or"
967 " 'Main2' is used to move the hero. If enabled, 'Main2' will move the hero "
968 "instead of 'Main1'."
969 msgstr ""
970
971 #: ../../../src/MenuConfig.cpp:523
972 msgid ""
973 "When 'Move hero using mouse' is enabled, this setting controls if the Power "
974 "assigned to the movement button can be used by targeting an enemy. If this "
975 "setting is disabled, it is required to use 'Shift' to access the Power "
976 "assigned to the movement button."
977 msgstr ""
978
979 #: ../../../src/MenuConfig.cpp:524
980 msgid ""
981 "The player's attacks will be aimed in the direction of the mouse cursor when"
982 " this is enabled."
983 msgstr ""
984
985 #: ../../../src/MenuConfig.cpp:575
986 msgid "Active Mods"
987 msgstr "Mod attive"
988
989 #: ../../../src/MenuConfig.cpp:584
990 msgid "Available Mods"
991 msgstr "Mod disponibili"
992
993 #: ../../../src/MenuConfig.cpp:603
994 msgid "<< Disable"
995 msgstr "<< Disabilita"
996
997 #: ../../../src/MenuConfig.cpp:609
998 msgid "Enable >>"
999 msgstr "Abilita >>"
1000
1001 #: ../../../src/MenuConfig.cpp:1444
1002 msgid "Version:"
1003 msgstr "Versione:"
1004
1005 #: ../../../src/MenuConfig.cpp:1449
1006 msgid "Game:"
1007 msgstr "Gioco:"
1008
1009 #: ../../../src/MenuConfig.cpp:1454
1010 msgid "Engine version:"
1011 msgstr "Versione motore di gioco:"
1012
1013 #: ../../../src/MenuConfig.cpp:1462
1014 msgid "Requires mods:"
1015 msgstr "Richiede mod:"
1016
1017 #: ../../../src/MenuConfig.cpp:1570 ../../../src/SDLInputState.cpp:748
1018 msgid "(none)"
1019 msgstr "(nessuno)"
1020
1021 #: ../../../src/MenuConfig.cpp:1587 ../../../src/MenuGameOver.cpp:73
1022 msgid "Save & Exit"
1023 msgstr "Salva ed esci"
1024
1025 #: ../../../src/MenuDevConsole.cpp:65
8361026 msgid "Execute"
8371027 msgstr "Esegui"
8381028
839 #: ../../../src/MenuDevConsole.cpp:101 ../../../src/MenuDevConsole.cpp:151
1029 #: ../../../src/MenuDevConsole.cpp:103 ../../../src/MenuDevConsole.cpp:153
8401030 msgid "Developer Console"
8411031 msgstr "Console Sviluppatore"
8421032
843 #: ../../../src/MenuDevConsole.cpp:141
1033 #: ../../../src/MenuDevConsole.cpp:143
8441034 #, c-format
8451035 msgid "Use '%s' to inspect with the cursor."
8461036 msgstr "Usa '%s' per esaminare col cursore."
8471037
848 #: ../../../src/MenuDevConsole.cpp:146
1038 #: ../../../src/MenuDevConsole.cpp:148
8491039 msgid "Arguments with spaces should be enclosed with double quotes. Example:"
8501040 msgstr ""
8511041 "Gli argomenti con gli spazi devono essere racchiusi con doppie virgolette. "
8521042 "Esempio:"
8531043
854 #: ../../../src/MenuDevConsole.cpp:147
1044 #: ../../../src/MenuDevConsole.cpp:149
8551045 msgid "Type 'help' to get a list of commands."
8561046 msgstr "Digita 'help' per ottenere un elenco di comandi."
8571047
858 #: ../../../src/MenuDevConsole.cpp:209 ../../../src/MenuDevConsole.cpp:213
1048 #: ../../../src/MenuDevConsole.cpp:211 ../../../src/MenuDevConsole.cpp:215
8591049 msgid "px"
8601050 msgstr "px"
8611051
862 #: ../../../src/MenuDevConsole.cpp:224
1052 #: ../../../src/MenuDevConsole.cpp:226
8631053 msgid "Distance"
8641054 msgstr "Distanza"
8651055
866 #: ../../../src/MenuDevConsole.cpp:239 ../../../src/MenuDevConsole.cpp:286
1056 #: ../../../src/MenuDevConsole.cpp:241 ../../../src/MenuDevConsole.cpp:289
1057 #: ../../../src/MenuDevConsole.cpp:303
8671058 msgid "Entity"
8681059 msgstr "Entità"
8691060
870 #: ../../../src/MenuDevConsole.cpp:261 ../../../src/MenuDevConsole.cpp:268
1061 #: ../../../src/MenuDevConsole.cpp:263 ../../../src/MenuDevConsole.cpp:270
8711062 msgid "none"
8721063 msgstr "nessuno"
8731064
874 #: ../../../src/MenuDevConsole.cpp:262 ../../../src/MenuDevConsole.cpp:264
1065 #: ../../../src/MenuDevConsole.cpp:264 ../../../src/MenuDevConsole.cpp:266
8751066 msgid "wall"
8761067 msgstr "muro"
8771068
878 #: ../../../src/MenuDevConsole.cpp:263 ../../../src/MenuDevConsole.cpp:265
1069 #: ../../../src/MenuDevConsole.cpp:265 ../../../src/MenuDevConsole.cpp:267
8791070 msgid "short wall / pit"
8801071 msgstr "muretto / pozzo"
8811072
882 #: ../../../src/MenuDevConsole.cpp:266
1073 #: ../../../src/MenuDevConsole.cpp:268
8831074 msgid "entity"
8841075 msgstr "entità"
8851076
886 #: ../../../src/MenuDevConsole.cpp:267
1077 #: ../../../src/MenuDevConsole.cpp:269
8871078 msgid "entity, ally"
8881079 msgstr "entità, alleato"
8891080
890 #: ../../../src/MenuDevConsole.cpp:274
1081 #: ../../../src/MenuDevConsole.cpp:276
8911082 msgid "Tile"
8921083 msgstr "Mattonella"
8931084
894 #: ../../../src/MenuDevConsole.cpp:360
1085 #: ../../../src/MenuDevConsole.cpp:377
8951086 msgid "adds a power to the action bar"
8961087 msgstr "aggiunge un potere alla barra delle azioni"
8971088
898 #: ../../../src/MenuDevConsole.cpp:361
1089 #: ../../../src/MenuDevConsole.cpp:378
8991090 msgid "turns on/off the display of the FPS counter"
9001091 msgstr ""
9011092
902 #: ../../../src/MenuDevConsole.cpp:362
1093 #: ../../../src/MenuDevConsole.cpp:379
9031094 msgid "turns on/off all of the HUD elements"
9041095 msgstr "attiva/disattiva tutti gli elementi dell'Interfaccia"
9051096
906 #: ../../../src/MenuDevConsole.cpp:363
1097 #: ../../../src/MenuDevConsole.cpp:380
9071098 msgid "turns on/off the developer hud"
9081099 msgstr "accende/spegne lo schermo sviluppatore"
9091100
910 #: ../../../src/MenuDevConsole.cpp:364
1101 #: ../../../src/MenuDevConsole.cpp:381
9111102 msgid ""
9121103 "Prints a list of powers that match a search term. No search term will list "
9131104 "all items"
9151106 "Mostra un elenco di poteri che corrispondono a un termine di ricerca. Nessun"
9161107 " termine di ricerca elenca tutti gli oggetti"
9171108
918 #: ../../../src/MenuDevConsole.cpp:365
1109 #: ../../../src/MenuDevConsole.cpp:382
9191110 msgid "Prints out all the map filenames located in the \"maps/\" directory."
9201111 msgstr ""
9211112 "Stampa tutti i nomi dei file della mappa che si trovano nella directory "
9221113 "\"maps/\"."
9231114
924 #: ../../../src/MenuDevConsole.cpp:366
1115 #: ../../../src/MenuDevConsole.cpp:383
9251116 msgid ""
9261117 "Prints out the active campaign statuses that match a search term. No search "
9271118 "term will list all active statuses"
9291120 "Stampa gli stati di campagna attivi che corrispondono a un termine di "
9301121 "ricerca. Nessun termine di ricerca elenca tutti gli stati attivi"
9311122
932 #: ../../../src/MenuDevConsole.cpp:367
1123 #: ../../../src/MenuDevConsole.cpp:384
9331124 msgid ""
9341125 "Prints a list of items that match a search term. No search term will list "
9351126 "all items"
9371128 "Mostra un elenco di elementi che corrispondono a un termine di ricerca. "
9381129 "Nessun termine di ricerca elenca tutti gli elementi"
9391130
940 #: ../../../src/MenuDevConsole.cpp:368
1131 #: ../../../src/MenuDevConsole.cpp:385
9411132 msgid ""
9421133 "parses a series of event components and executes them as a single event"
9431134 msgstr ""
9441135 "Analizza una serie di componenti di evento e li esegue come un singolo "
9451136 "evento"
9461137
947 #: ../../../src/MenuDevConsole.cpp:369
1138 #: ../../../src/MenuDevConsole.cpp:386
9481139 msgid "clears the command history"
9491140 msgstr "pulisce la cronologia comandi"
9501141
951 #: ../../../src/MenuDevConsole.cpp:370
1142 #: ../../../src/MenuDevConsole.cpp:387
9521143 msgid "displays this text"
9531144 msgstr "mostra questo testo"
9541145
955 #: ../../../src/MenuDevConsole.cpp:377
1146 #: ../../../src/MenuDevConsole.cpp:394
9561147 msgid "Toggled the developer hud"
9571148 msgstr "Alterna lo schermo sviluppatore"
9581149
959 #: ../../../src/MenuDevConsole.cpp:381
1150 #: ../../../src/MenuDevConsole.cpp:398
9601151 msgid "Toggled the hud"
9611152 msgstr "Attiva l'Interfaccia"
9621153
963 #: ../../../src/MenuDevConsole.cpp:385
1154 #: ../../../src/MenuDevConsole.cpp:402
9641155 msgid "Toggled the FPS counter"
9651156 msgstr ""
9661157
967 #: ../../../src/MenuDevConsole.cpp:534
1158 #: ../../../src/MenuDevConsole.cpp:552
9681159 msgid "ERROR: Incorrect number of arguments"
9691160 msgstr "ERRORE: Numero errato di argomenti"
9701161
971 #: ../../../src/MenuDevConsole.cpp:536 ../../../src/MenuDevConsole.cpp:564
1162 #: ../../../src/MenuDevConsole.cpp:554 ../../../src/MenuDevConsole.cpp:582
9721163 msgid "HINT:"
9731164 msgstr "SUGGERIMENTO:"
9741165
975 #: ../../../src/MenuDevConsole.cpp:536
1166 #: ../../../src/MenuDevConsole.cpp:554
9761167 msgid "<id>"
9771168 msgstr "<id>"
9781169
979 #: ../../../src/MenuDevConsole.cpp:552
1170 #: ../../../src/MenuDevConsole.cpp:570
9801171 #, c-format
9811172 msgid "ERROR: '%s' is not a valid event key"
9821173 msgstr "ERRORE: '%s' non è un valido evento chiave"
9831174
984 #: ../../../src/MenuDevConsole.cpp:562
1175 #: ../../../src/MenuDevConsole.cpp:580
9851176 msgid "ERROR: Too few arguments"
9861177 msgstr "ERRORE: Troppo pochi argomenti"
9871178
988 #: ../../../src/MenuDevConsole.cpp:564
1179 #: ../../../src/MenuDevConsole.cpp:582
9891180 msgid "<key>=<val> <key>=<val> ..."
9901181 msgstr "<key>=<val> <key>=<val> ..."
9911182
992 #: ../../../src/MenuDevConsole.cpp:569
1183 #: ../../../src/MenuDevConsole.cpp:587
9931184 msgid "ERROR: Unknown command"
9941185 msgstr "ERRORE: Comando sconosciuto"
9951186
996 #: ../../../src/MenuDevConsole.cpp:571
1187 #: ../../../src/MenuDevConsole.cpp:589
9971188 msgid "HINT: Type help"
9981189 msgstr "SUGGERIMENTO: Digita help"
9991190
1000 #: ../../../src/MenuEnemy.cpp:138
1191 #: ../../../src/MenuEnemy.cpp:162
10011192 #, c-format
10021193 msgid "%s level %d"
10031194 msgstr "%s livello %d"
10041195
1005 #: ../../../src/MenuEnemy.cpp:162
1196 #: ../../../src/MenuEnemy.cpp:186
10061197 msgid "Dead"
10071198 msgstr "Morto"
10081199
1009 #: ../../../src/MenuEnemy.cpp:164
1200 #: ../../../src/MenuEnemy.cpp:188
10101201 msgid "Destroyed"
10111202 msgstr "Distrutto"
10121203
1013 #: ../../../src/MenuExit.cpp:85 ../../../src/MenuExit.cpp:139
1014 msgid "Paused"
1015 msgstr "In pausa"
1016
1017 #: ../../../src/MenuExit.cpp:91
1018 msgid "Save & Exit"
1019 msgstr "Salva ed esci"
1020
1021 #: ../../../src/MenuExit.cpp:92
1022 msgid "Exit"
1023 msgstr "Esci"
1024
1025 #: ../../../src/MenuExit.cpp:96
1026 msgid "Continue"
1027 msgstr "Continua"
1028
1029 #: ../../../src/MenuInventory.cpp:73
1030 msgid "Automatically equip items"
1031 msgstr "Equipaggia gli oggetti automaticamente"
1032
1033 #: ../../../src/MenuInventory.cpp:188
1204 #: ../../../src/MenuGameOver.cpp:69
1205 msgid "Game Over"
1206 msgstr ""
1207
1208 #: ../../../src/MenuInventory.cpp:178
10341209 #, c-format
10351210 msgid "Lost %d%% of %s."
10361211 msgstr "Hai perso il %d%% di %s."
10371212
1038 #: ../../../src/MenuInventory.cpp:195
1213 #: ../../../src/MenuInventory.cpp:185
10391214 #, c-format
10401215 msgid "Lost %d%% of total XP."
10411216 msgstr "Hai perso il %d%% di ESP totale."
10421217
1043 #: ../../../src/MenuInventory.cpp:200
1218 #: ../../../src/MenuInventory.cpp:190
10441219 #, c-format
10451220 msgid "Lost %d%% of current level XP."
10461221 msgstr "Hai perso il %d%% del livello ESP attuale."
10471222
1048 #: ../../../src/MenuInventory.cpp:226
1223 #: ../../../src/MenuInventory.cpp:216
10491224 #, c-format
10501225 msgid "Lost %s."
10511226 msgstr "Hai perso %s."
10521227
1053 #: ../../../src/MenuInventory.cpp:274 ../../../src/MenuStash.cpp:146
1228 #: ../../../src/MenuInventory.cpp:258 ../../../src/MenuStash.cpp:276
10541229 #, c-format
10551230 msgid "%d %s"
10561231 msgstr "%d %s"
10571232
1058 #: ../../../src/MenuInventory.cpp:317
1233 #: ../../../src/MenuInventory.cpp:301
10591234 msgid "Pick up item(s):"
10601235 msgstr "Raccogli oggetto/i:"
10611236
1062 #: ../../../src/MenuInventory.cpp:318
1237 #: ../../../src/MenuInventory.cpp:302
10631238 msgid "Use or equip item:"
10641239 msgstr "Usa o equipaggia oggetto:"
10651240
1066 #: ../../../src/MenuInventory.cpp:319
1241 #: ../../../src/MenuInventory.cpp:303
10671242 #, c-format
10681243 msgid "%s modifiers"
10691244 msgstr "%s modificatori"
10701245
1071 #: ../../../src/MenuInventory.cpp:320
1246 #: ../../../src/MenuInventory.cpp:304
10721247 msgid "Select a quantity of item:"
10731248 msgstr "Seleziona una quantità di oggetti:"
10741249
1075 #: ../../../src/MenuInventory.cpp:323
1250 #: ../../../src/MenuInventory.cpp:307
10761251 msgid "Stash item stack:"
10771252 msgstr "Accantona gruppo di oggetti:"
10781253
1079 #: ../../../src/MenuInventory.cpp:325
1254 #: ../../../src/MenuInventory.cpp:309
10801255 msgid "Sell item stack:"
10811256 msgstr "Vendi gruppo di oggetti:"
10821257
1083 #: ../../../src/MenuInventory.cpp:592
1258 #: ../../../src/MenuInventory.cpp:576
10841259 msgid "You don't have enough of the required item."
10851260 msgstr "Non ne hai a sufficienza."
10861261
1087 #: ../../../src/MenuInventory.cpp:599
1262 #: ../../../src/MenuInventory.cpp:588
10881263 msgid "You can't use this item right now."
10891264 msgstr "Adesso non puoi usare questo oggetto."
10901265
1091 #: ../../../src/MenuInventory.cpp:611
1266 #: ../../../src/MenuInventory.cpp:600
10921267 msgid "This item can only be used from the action bar."
10931268 msgstr "Questo elemento può essere usato solo dalla barra azioni."
10941269
1095 #: ../../../src/MenuInventory.cpp:729
1270 #: ../../../src/MenuInventory.cpp:718
10961271 msgid "Inventory is full."
10971272 msgstr "L'inventario è pieno."
10981273
1099 #: ../../../src/MenuInventory.cpp:849
1274 #: ../../../src/MenuInventory.cpp:843
11001275 #, c-format
11011276 msgid "Not enough %s."
11021277 msgstr "Non hai abbastanza %s."
11031278
1104 #: ../../../src/MenuInventory.cpp:869 ../../../src/MenuInventory.cpp:876
1279 #: ../../../src/MenuInventory.cpp:863 ../../../src/MenuInventory.cpp:870
11051280 msgid "This item can not be sold."
11061281 msgstr "Questo oggetto non può essere venduto."
11071282
11131288 msgid "Quests"
11141289 msgstr "Missioni"
11151290
1116 #: ../../../src/MenuManager.cpp:286
1291 #: ../../../src/MenuManager.cpp:305
11171292 #, c-format
11181293 msgid "XP: %d/%d"
11191294 msgstr "ESP: %d/%d"
11201295
1121 #: ../../../src/MenuManager.cpp:827
1296 #: ../../../src/MenuManager.cpp:875
11221297 msgid "This item can not be dropped."
11231298 msgstr "Questo oggetto non può essere gettato via."
1299
1300 #: ../../../src/MenuManager.cpp:1501
1301 msgid "Equipped"
1302 msgstr ""
1303
1304 #: ../../../src/MenuMovementType.cpp:87
1305 msgid "Select a Movement Type"
1306 msgstr ""
1307
1308 #: ../../../src/MenuMovementType.cpp:89
1309 msgid "Can be changed later in the Configuration menu."
1310 msgstr ""
1311
1312 #: ../../../src/MenuMovementType.cpp:92 ../../../src/MenuMovementType.cpp:122
1313 msgid "Keyboard"
1314 msgstr ""
1315
1316 #: ../../../src/MenuMovementType.cpp:93 ../../../src/MenuMovementType.cpp:128
1317 msgid "Mouse"
1318 msgstr ""
1319
1320 #: ../../../src/MenuMovementType.cpp:129
1321 msgid "Button"
1322 msgstr ""
11241323
11251324 #: ../../../src/MenuNumPicker.cpp:59
11261325 msgid "Enter amount:"
11271326 msgstr "Inserisci quantità:"
11281327
1129 #: ../../../src/MenuPowers.cpp:787
1328 #: ../../../src/MenuPowers.cpp:872
11301329 msgid "Passive"
11311330 msgstr "Passivo"
11321331
1133 #: ../../../src/MenuPowers.cpp:792
1332 #: ../../../src/MenuPowers.cpp:879
11341333 #, c-format
11351334 msgid "Costs %d MP"
11361335 msgstr "Costa %d Mana"
11371336
1138 #: ../../../src/MenuPowers.cpp:796
1337 #: ../../../src/MenuPowers.cpp:883
11391338 #, c-format
11401339 msgid "Costs %d HP"
11411340 msgstr "Costa %d Salute"
11421341
1143 #: ../../../src/MenuPowers.cpp:801
1342 #: ../../../src/MenuPowers.cpp:887
11441343 msgid "Cooldown:"
11451344 msgstr "Raffreddamento:"
11461345
1147 #: ../../../src/MenuPowers.cpp:866 ../../../src/MenuPowers.cpp:869
1346 #: ../../../src/MenuPowers.cpp:938 ../../../src/MenuPowers.cpp:941
11481347 msgid "Damage per second"
11491348 msgstr "Danno per secondo"
11501349
1151 #: ../../../src/MenuPowers.cpp:872 ../../../src/MenuPowers.cpp:875
1350 #: ../../../src/MenuPowers.cpp:944 ../../../src/MenuPowers.cpp:947
11521351 msgid "HP per second"
11531352 msgstr "Salute per secondo"
11541353
1155 #: ../../../src/MenuPowers.cpp:878 ../../../src/MenuPowers.cpp:881
1354 #: ../../../src/MenuPowers.cpp:950 ../../../src/MenuPowers.cpp:953
11561355 msgid "MP per second"
11571356 msgstr "Mana per secondo"
11581357
1159 #: ../../../src/MenuPowers.cpp:885
1358 #: ../../../src/MenuPowers.cpp:957
11601359 msgid "Immobilize"
11611360 msgstr "Immobilizzare"
11621361
1163 #: ../../../src/MenuPowers.cpp:893
1362 #: ../../../src/MenuPowers.cpp:965
11641363 msgid "Immunity"
11651364 msgstr "Immunità"
11661365
1167 #: ../../../src/MenuPowers.cpp:896
1366 #: ../../../src/MenuPowers.cpp:968
11681367 msgid "Immunity to damage over time"
11691368 msgstr "Immunità ai danni nel tempo"
11701369
1171 #: ../../../src/MenuPowers.cpp:899
1370 #: ../../../src/MenuPowers.cpp:971
11721371 msgid "Immunity to slow"
11731372 msgstr "Immunità al rallentamento"
11741373
1175 #: ../../../src/MenuPowers.cpp:902
1374 #: ../../../src/MenuPowers.cpp:974
11761375 msgid "Immunity to stun"
11771376 msgstr "Immunità allo stordimento"
11781377
1179 #: ../../../src/MenuPowers.cpp:905
1378 #: ../../../src/MenuPowers.cpp:977
11801379 msgid "Immunity to HP steal"
11811380 msgstr "Immunità al furto di Salute"
11821381
1183 #: ../../../src/MenuPowers.cpp:908
1382 #: ../../../src/MenuPowers.cpp:980
11841383 msgid "Immunity to MP steal"
11851384 msgstr "Immunità al furto di Mana"
11861385
1187 #: ../../../src/MenuPowers.cpp:911
1386 #: ../../../src/MenuPowers.cpp:983
11881387 msgid "Immunity to knockback"
11891388 msgstr "Immunità al colpo all'indietro"
11901389
1191 #: ../../../src/MenuPowers.cpp:914
1390 #: ../../../src/MenuPowers.cpp:986
11921391 msgid "Immunity to damage reflection"
11931392 msgstr "Immunità al danno riflesso"
11941393
1195 #: ../../../src/MenuPowers.cpp:917
1394 #: ../../../src/MenuPowers.cpp:992
11961395 msgid "Stun"
11971396 msgstr "Stordimento"
11981397
1199 #: ../../../src/MenuPowers.cpp:920
1398 #: ../../../src/MenuPowers.cpp:995
12001399 msgid "Automatic revive on death"
12011400 msgstr "Rivive automaticamente alla la morte"
12021401
1203 #: ../../../src/MenuPowers.cpp:923
1402 #: ../../../src/MenuPowers.cpp:998
12041403 msgid "Convert"
12051404 msgstr "Convertire"
12061405
1207 #: ../../../src/MenuPowers.cpp:926
1406 #: ../../../src/MenuPowers.cpp:1001
12081407 msgid "Fear"
12091408 msgstr "Paura"
12101409
1211 #: ../../../src/MenuPowers.cpp:929
1410 #: ../../../src/MenuPowers.cpp:1004
12121411 msgid "Lifespan"
12131412 msgstr "Durata della vita"
12141413
1215 #: ../../../src/MenuPowers.cpp:953
1414 #: ../../../src/MenuPowers.cpp:1028
12161415 msgid "Magical Shield"
12171416 msgstr "Scudo Magico"
12181417
1219 #: ../../../src/MenuPowers.cpp:982
1418 #: ../../../src/MenuPowers.cpp:1057
12201419 msgid "Healing"
12211420 msgstr "Guarigione"
12221421
1223 #: ../../../src/MenuPowers.cpp:985
1422 #: ../../../src/MenuPowers.cpp:1060
12241423 msgid "Knockback"
12251424 msgstr "Contraccolpo"
12261425
1227 #: ../../../src/MenuPowers.cpp:1010
1426 #: ../../../src/MenuPowers.cpp:1084
12281427 #, c-format
12291428 msgid "%d%% chance"
12301429 msgstr "possibilità %d%%"
12311430
1232 #: ../../../src/MenuPowers.cpp:1062
1431 #: ../../../src/MenuPowers.cpp:1136
12331432 msgid "Base Accuracy"
12341433 msgstr "Precisione di Base"
12351434
1236 #: ../../../src/MenuPowers.cpp:1082
1435 #: ../../../src/MenuPowers.cpp:1156
12371436 msgid "Base Critical Chance"
12381437 msgstr "Possibilità di Colpo Critico di Base"
12391438
1240 #: ../../../src/MenuPowers.cpp:1090
1439 #: ../../../src/MenuPowers.cpp:1164
12411440 msgid "Ignores Absorbtion"
12421441 msgstr "Ignora l'assorbimento"
12431442
1244 #: ../../../src/MenuPowers.cpp:1095
1443 #: ../../../src/MenuPowers.cpp:1169
12451444 msgid "Ignores Avoidance"
12461445 msgstr "Ignora Schivata"
12471446
1248 #: ../../../src/MenuPowers.cpp:1100
1447 #: ../../../src/MenuPowers.cpp:1174
12491448 #, c-format
12501449 msgid "%d%% Chance to crit slowed targets"
12511450 msgstr "%d%% Possibilità di colpo critico sui bersagli rallentati"
12521451
1253 #: ../../../src/MenuPowers.cpp:1105
1452 #: ../../../src/MenuPowers.cpp:1179
12541453 #, c-format
12551454 msgid "Elemental Damage (%s)"
12561455 msgstr ""
12571456
1258 #: ../../../src/MenuPowers.cpp:1114
1457 #: ../../../src/MenuPowers.cpp:1188
12591458 #, c-format
12601459 msgid "Requires a %s"
12611460 msgstr "Richiede un %s"
12621461
1263 #: ../../../src/MenuPowers.cpp:1151 ../../../src/MenuPowers.cpp:1154
1462 #: ../../../src/MenuPowers.cpp:1226 ../../../src/MenuPowers.cpp:1229
12641463 #, c-format
12651464 msgid "Requires Power: %s"
12661465 msgstr "Richiede Potere: %s"
12671466
1268 #: ../../../src/MenuPowers.cpp:1163
1467 #: ../../../src/MenuPowers.cpp:1238
12691468 msgid "Click to Unlock (uses 1 Skill Point)"
12701469 msgstr "Clicca per sbloccare (usa 1 Punto Abilità)"
12711470
1272 #: ../../../src/MenuPowers.cpp:1167 ../../../src/MenuPowers.cpp:1169
1471 #: ../../../src/MenuPowers.cpp:1242 ../../../src/MenuPowers.cpp:1244
12731472 msgid "Requires 1 Skill Point"
12741473 msgstr "Richiede 1 Punto Abilità"
12751474
1276 #: ../../../src/MenuPowers.cpp:1355
1277 #, c-format
1278 msgid "%d unspent skill point"
1279 msgstr "%d punto abilità non utilizzato"
1280
1281 #: ../../../src/MenuPowers.cpp:1358
1282 #, c-format
1283 msgid "%d unspent skill points"
1284 msgstr "%d punti abilità non utilizzati"
1285
1286 #: ../../../src/MenuPowers.cpp:1388
1475 #: ../../../src/MenuPowers.cpp:1444
1476 #, c-format
1477 msgid "Available skill points: %d"
1478 msgstr ""
1479
1480 #: ../../../src/MenuPowers.cpp:1476
12871481 msgid "Next Level:"
12881482 msgstr "Prossimo livello:"
12891483
1290 #: ../../../src/MenuStash.cpp:96
1291 msgid "Shared Stash"
1292 msgstr "Scorta condivisa"
1293
1294 #: ../../../src/MenuStash.cpp:209
1295 msgid "Can not store quest items in the stash."
1296 msgstr "Impossibile memorizzare gli elementi della ricerca nello stash."
1297
1298 #: ../../../src/MenuStash.cpp:219
1484 #: ../../../src/MenuStash.cpp:80 ../../../src/MenuStash.cpp:161
1485 msgid "Stash"
1486 msgstr ""
1487
1488 #: ../../../src/MenuStash.cpp:174 ../../../src/MenuStash.cpp:188
1489 msgid "Private"
1490 msgstr ""
1491
1492 #: ../../../src/MenuStash.cpp:175
1493 msgid "Shared"
1494 msgstr ""
1495
1496 #: ../../../src/MenuStash.cpp:340
1497 msgid "This item can not be stored in the stash."
1498 msgstr ""
1499
1500 #: ../../../src/MenuStash.cpp:345
1501 msgid "This item can not be stored in the private stash."
1502 msgstr ""
1503
1504 #: ../../../src/MenuStash.cpp:350
1505 msgid "This item can not be stored in the shared stash."
1506 msgstr ""
1507
1508 #: ../../../src/MenuStash.cpp:360
12991509 msgid "Stash is full."
13001510 msgstr "L'inventario è pieno."
13011511
1302 #: ../../../src/MenuTalker.cpp:454
1512 #: ../../../src/MenuStash.cpp:414
1513 #, c-format
1514 msgid "Can not store item in stash: %s"
1515 msgstr ""
1516
1517 #: ../../../src/MenuTalker.cpp:448
1518 #, c-format
1519 msgid "<dialog node %d>"
1520 msgstr ""
1521
1522 #: ../../../src/MenuTalker.cpp:456
13031523 msgid "Trade"
13041524 msgstr "Commercio"
13051525
1306 #: ../../../src/MenuVendor.cpp:58
1526 #: ../../../src/MenuVendor.cpp:60
13071527 msgid "Buyback"
13081528 msgstr "Ricompra"
13091529
1310 #: ../../../src/MenuVendor.cpp:279
1530 #: ../../../src/MenuVendor.cpp:283
13111531 msgid "Vendor"
13121532 msgstr "Venditore"
13131533
1314 #: ../../../src/PowerManager.cpp:1136
1534 #: ../../../src/PowerManager.cpp:1208
13151535 #, c-format
13161536 msgid "+%d Shield"
13171537 msgstr "+%d Scudo"
13181538
1319 #: ../../../src/PowerManager.cpp:1392
1539 #: ../../../src/PowerManager.cpp:1465
13201540 msgid "You are already transformed, untransform first."
13211541 msgstr "Sei già trasformato, annulla trasformazione prima."
13221542
1323 #: ../../../src/PowerManager.cpp:1404
1543 #: ../../../src/PowerManager.cpp:1477
13241544 msgid "Could not untransform at this position."
13251545 msgstr "Impossibile detrasformarsi da questa posizione."
13261546
13281548 msgid "Completed Quests"
13291549 msgstr ""
13301550
1331 #: ../../../src/SaveLoad.cpp:243 ../../../src/SaveLoad.cpp:244
1551 #: ../../../src/SaveLoad.cpp:250 ../../../src/SaveLoad.cpp:251
13321552 msgid "Game saved."
13331553 msgstr "Partita salvata."
13341554
1335 #: ../../../src/SDLInputState.cpp:582
1555 #: ../../../src/SDLInputState.cpp:643
1556 msgid "BkSp"
1557 msgstr ""
1558
1559 #: ../../../src/SDLInputState.cpp:644
1560 msgid "Caps"
1561 msgstr ""
1562
1563 #: ../../../src/SDLInputState.cpp:645
1564 msgid "Del"
1565 msgstr ""
1566
1567 #: ../../../src/SDLInputState.cpp:647 ../../../src/SDLInputState.cpp:677
1568 msgid "End"
1569 msgstr "Fine"
1570
1571 #: ../../../src/SDLInputState.cpp:648
1572 msgid "Esc"
1573 msgstr ""
1574
1575 #: ../../../src/SDLInputState.cpp:649 ../../../src/SDLInputState.cpp:679
1576 msgid "Home"
1577 msgstr "Tasto Home"
1578
1579 #: ../../../src/SDLInputState.cpp:650
1580 msgid "Ins"
1581 msgstr ""
1582
1583 #: ../../../src/SDLInputState.cpp:651
1584 msgid "LAlt"
1585 msgstr ""
1586
1587 #: ../../../src/SDLInputState.cpp:652
1588 msgid "LCtrl"
1589 msgstr ""
1590
1591 #: ../../../src/SDLInputState.cpp:654
1592 msgid "LShft"
1593 msgstr ""
1594
1595 #: ../../../src/SDLInputState.cpp:655
1596 msgid "Num"
1597 msgstr ""
1598
1599 #: ../../../src/SDLInputState.cpp:656
1600 msgid "PgDn"
1601 msgstr ""
1602
1603 #: ../../../src/SDLInputState.cpp:657
1604 msgid "PgUp"
1605 msgstr ""
1606
1607 #: ../../../src/SDLInputState.cpp:658 ../../../src/SDLInputState.cpp:688
1608 msgid "Pause"
1609 msgstr "Pausa"
1610
1611 #: ../../../src/SDLInputState.cpp:659
1612 msgid "Print"
1613 msgstr ""
1614
1615 #: ../../../src/SDLInputState.cpp:660
1616 msgid "RAlt"
1617 msgstr ""
1618
1619 #: ../../../src/SDLInputState.cpp:661
1620 msgid "RCtrl"
1621 msgstr ""
1622
1623 #: ../../../src/SDLInputState.cpp:662
1624 msgid "Ret"
1625 msgstr ""
1626
1627 #: ../../../src/SDLInputState.cpp:664
1628 msgid "RShft"
1629 msgstr ""
1630
1631 #: ../../../src/SDLInputState.cpp:665
1632 msgid "SLock"
1633 msgstr ""
1634
1635 #: ../../../src/SDLInputState.cpp:666
1636 msgid "Spc"
1637 msgstr ""
1638
1639 #: ../../../src/SDLInputState.cpp:667 ../../../src/SDLInputState.cpp:697
1640 msgid "Tab"
1641 msgstr "Tasto di Tabulazione"
1642
1643 #: ../../../src/SDLInputState.cpp:673
13361644 msgid "Backspace"
13371645 msgstr "Backspace"
13381646
1339 #: ../../../src/SDLInputState.cpp:583
1647 #: ../../../src/SDLInputState.cpp:674
13401648 msgid "CapsLock"
13411649 msgstr "Blocco Maiuscole"
13421650
1343 #: ../../../src/SDLInputState.cpp:586
1344 msgid "End"
1345 msgstr "Fine"
1346
1347 #: ../../../src/SDLInputState.cpp:587
1651 #: ../../../src/SDLInputState.cpp:678
13481652 msgid "Escape"
13491653 msgstr "Esc"
13501654
1351 #: ../../../src/SDLInputState.cpp:588
1352 msgid "Home"
1353 msgstr "Tasto Home"
1354
1355 #: ../../../src/SDLInputState.cpp:589
1655 #: ../../../src/SDLInputState.cpp:680
13561656 msgid "Insert"
13571657 msgstr "Inserisci"
13581658
1359 #: ../../../src/SDLInputState.cpp:590
1659 #: ../../../src/SDLInputState.cpp:681
13601660 msgid "Left Alt"
13611661 msgstr "Alt sinistro"
13621662
1363 #: ../../../src/SDLInputState.cpp:591
1663 #: ../../../src/SDLInputState.cpp:682
13641664 msgid "Left Ctrl"
13651665 msgstr "Ctrl sinistro"
13661666
1367 #: ../../../src/SDLInputState.cpp:593
1667 #: ../../../src/SDLInputState.cpp:684
13681668 msgid "Left Shift"
13691669 msgstr "Shift sinistro"
13701670
1371 #: ../../../src/SDLInputState.cpp:594
1671 #: ../../../src/SDLInputState.cpp:685
13721672 msgid "NumLock"
13731673 msgstr "Blocco Tastiera Numerica"
13741674
1375 #: ../../../src/SDLInputState.cpp:595
1675 #: ../../../src/SDLInputState.cpp:686
13761676 msgid "PageDown"
13771677 msgstr "Pagina giù"
13781678
1379 #: ../../../src/SDLInputState.cpp:596
1679 #: ../../../src/SDLInputState.cpp:687
13801680 msgid "PageUp"
13811681 msgstr "Pagina su"
13821682
1383 #: ../../../src/SDLInputState.cpp:597
1384 msgid "Pause"
1385 msgstr "Pausa"
1386
1387 #: ../../../src/SDLInputState.cpp:598
1683 #: ../../../src/SDLInputState.cpp:689
13881684 msgid "PrintScreen"
13891685 msgstr "Stampa Schermo"
13901686
1391 #: ../../../src/SDLInputState.cpp:599
1687 #: ../../../src/SDLInputState.cpp:690
13921688 msgid "Right Alt"
13931689 msgstr "Alt destro"
13941690
1395 #: ../../../src/SDLInputState.cpp:600
1691 #: ../../../src/SDLInputState.cpp:691
13961692 msgid "Right Ctrl"
13971693 msgstr "Ctrl destro"
13981694
1399 #: ../../../src/SDLInputState.cpp:601
1695 #: ../../../src/SDLInputState.cpp:692
14001696 msgid "Return"
14011697 msgstr "Invio"
14021698
1403 #: ../../../src/SDLInputState.cpp:603
1699 #: ../../../src/SDLInputState.cpp:694
14041700 msgid "Right Shift"
14051701 msgstr "Shift destro"
14061702
1407 #: ../../../src/SDLInputState.cpp:604
1703 #: ../../../src/SDLInputState.cpp:695
14081704 msgid "ScrollLock"
14091705 msgstr "Blocco Scorrimento"
14101706
1411 #: ../../../src/SDLInputState.cpp:605
1707 #: ../../../src/SDLInputState.cpp:696
14121708 msgid "Space"
14131709 msgstr "Spazio"
14141710
1415 #: ../../../src/SDLInputState.cpp:606
1416 msgid "Tab"
1417 msgstr "Tasto di Tabulazione"
1418
1419 #: ../../../src/SDLInputState.cpp:620
1711 #: ../../../src/SDLInputState.cpp:710
1712 #, c-format
1713 msgid "M%d"
1714 msgstr ""
1715
1716 #: ../../../src/SDLInputState.cpp:716
14201717 #, c-format
14211718 msgid "Mouse %d"
14221719 msgstr "Mouse %d"
14231720
1424 #: ../../../src/SDLInputState.cpp:628
1721 #: ../../../src/SDLInputState.cpp:726
1722 #, c-format
1723 msgid "JX%d-"
1724 msgstr ""
1725
1726 #: ../../../src/SDLInputState.cpp:728
14251727 #, c-format
14261728 msgid "Axis %d -"
14271729 msgstr "Asse %d -"
14281730
1429 #: ../../../src/SDLInputState.cpp:630
1731 #: ../../../src/SDLInputState.cpp:732
1732 #, c-format
1733 msgid "JX%d+"
1734 msgstr ""
1735
1736 #: ../../../src/SDLInputState.cpp:734
14301737 #, c-format
14311738 msgid "Axis %d +"
14321739 msgstr "Asse %d +"
14331740
1434 #: ../../../src/SDLInputState.cpp:633
1741 #: ../../../src/SDLInputState.cpp:739
1742 #, c-format
1743 msgid "JB%d"
1744 msgstr ""
1745
1746 #: ../../../src/SDLInputState.cpp:741
14351747 #, c-format
14361748 msgid "Button %d"
14371749 msgstr "Tasto %d"
14381750
1439 #: ../../../src/SDLInputState.cpp:637
1440 msgid "(none)"
1441 msgstr "(nessuno)"
1442
1443 #: ../../../src/SDLInputState.cpp:677
1751 #: ../../../src/SDLInputState.cpp:787
14441752 msgid "Touch control D-Pad"
14451753 msgstr ""
14461754
1447 #: ../../../src/SDLInputState.cpp:701
1755 #: ../../../src/SDLInputState.cpp:810
14481756 msgid "Touch control buttons"
14491757 msgstr ""
14501758
1451 #: ../../../src/SDLInputState.cpp:716
1759 #: ../../../src/SDLInputState.cpp:824
14521760 msgid "Tap"
14531761 msgstr "Colpetto"
14541762
1455 #: ../../../src/SDLInputState.cpp:760 ../../../src/SDLInputState.cpp:764
1456 #: ../../../src/SDLInputState.cpp:768
1763 #: ../../../src/SDLInputState.cpp:876 ../../../src/SDLInputState.cpp:878
1764 #, c-format
1765 msgid "Can not bind: %s"
1766 msgstr ""
1767
1768 #: ../../../src/SDLInputState.cpp:890 ../../../src/SDLInputState.cpp:894
1769 #: ../../../src/SDLInputState.cpp:898
14571770 #, c-format
14581771 msgid "'%s' is no longer bound to:"
14591772 msgstr "'%s' non è più collegato a:"
16121925 msgid "Base MP"
16131926 msgstr "Mana base"
16141927
1615 #: ../../../src/Utils.cpp:346
1928 #: ../../../src/Utils.cpp:365
16161929 msgid "k"
16171930 msgstr "k"
16181931
1619 #: ../../../src/Utils.cpp:580
1932 #: ../../../src/Utils.cpp:635
16201933 #, c-format
16211934 msgid "%s second"
16221935 msgstr "%s secondo"
16231936
1624 #: ../../../src/Utils.cpp:583
1937 #: ../../../src/Utils.cpp:638
16251938 #, c-format
16261939 msgid "%s seconds"
16271940 msgstr "%s secondi"
44 #
55 # Translators:
66 # Justin Jacobs <jajdorkster@gmail.com>, 2018
7 # Ooyama Yosiyuki <qqke6wd9k@apricot.ocn.ne.jp>, 2019
78 #
89 #, fuzzy
910 msgid ""
1011 msgstr ""
1112 "Project-Id-Version: PACKAGE VERSION\n"
1213 "Report-Msgid-Bugs-To: \n"
13 "POT-Creation-Date: 2018-11-17 21:50-0500\n"
14 "POT-Creation-Date: 2021-05-23 20:34-0400\n"
1415 "PO-Revision-Date: 2018-03-28 19:16+0000\n"
15 "Last-Translator: Justin Jacobs <jajdorkster@gmail.com>, 2018\n"
16 "Last-Translator: Ooyama Yosiyuki <qqke6wd9k@apricot.ocn.ne.jp>, 2019\n"
1617 "Language-Team: Japanese (https://www.transifex.com/flareorg/teams/84925/ja/)\n"
1718 "MIME-Version: 1.0\n"
1819 "Content-Type: text/plain; charset=UTF-8\n"
2021 "Language: ja\n"
2122 "Plural-Forms: nplurals=1; plural=0;\n"
2223
23 #: ../../../src/Avatar.cpp:367
24 #: ../../../src/Avatar.cpp:391
25 msgid "Your health is low!"
26 msgstr "ヘルスが低いです!"
27
28 #: ../../../src/Avatar.cpp:421
2429 #, c-format
2530 msgid "Congratulations, you have reached level %d!"
2631 msgstr "おめでとう、 レベル %d に達している!"
2732
28 #: ../../../src/Avatar.cpp:369
29 msgid "You may increase one attribute through the Character Menu."
30 msgstr "キャラクターメニューを介して 1つの属性を高めることが可能です。"
31
32 #: ../../../src/Avatar.cpp:583
33 msgid "You are defeated. Game over! ${INPUT_CONTINUE} to exit to Title."
34 msgstr "あなたは負けてしまった。 ゲームオーバー! ${INPUT_CONTINUE} を押すと終了してタイトル画面に戻ります。"
35
36 #: ../../../src/Avatar.cpp:589
37 msgid "You are defeated. ${INPUT_CONTINUE} to continue."
38 msgstr "あなたは負けてしまった。 ${INPUT_CONTINUE} を押して続行します。"
39
40 #: ../../../src/Avatar.cpp:839
33 #: ../../../src/Avatar.cpp:423
34 msgid "You may increase one or more attributes through the Character Menu."
35 msgstr "メニューのキャラクターを通して属性を上げることができます。"
36
37 #: ../../../src/Avatar.cpp:427
38 msgid "You may unlock one or more abilities through the Powers Menu."
39 msgstr "メニューのパワーを通してアビリティー解放ができます。"
40
41 #: ../../../src/Avatar.cpp:689
42 msgid "You are defeated."
43 msgstr ""
44
45 #: ../../../src/Avatar.cpp:935
4146 msgid "Transformation expired. You have been moved back to a safe place."
4247 msgstr ""
4348
44 #: ../../../src/CampaignManager.cpp:153
49 #: ../../../src/CampaignManager.cpp:152
4550 #, c-format
4651 msgid "%d %s removed."
4752 msgstr "%d %s を失った。"
4853
49 #: ../../../src/CampaignManager.cpp:162
54 #: ../../../src/CampaignManager.cpp:171
55 #, c-format
56 msgid "%s x%d removed."
57 msgstr ""
58
59 #: ../../../src/CampaignManager.cpp:173
5060 #, c-format
5161 msgid "%s removed."
5262 msgstr "%s を失った。"
5363
54 #: ../../../src/CampaignManager.cpp:175
64 #: ../../../src/CampaignManager.cpp:187
65 #, c-format
66 msgid "You receive %d %s."
67 msgstr "あなたは %d %s を入手する。"
68
69 #: ../../../src/CampaignManager.cpp:191
70 #, c-format
71 msgid "You receive %s x%d."
72 msgstr "あなたは %s x %d を入手する。"
73
74 #: ../../../src/CampaignManager.cpp:193
5575 #, c-format
5676 msgid "You receive %s."
5777 msgstr "あなたは %s を入手する。"
5878
59 #: ../../../src/CampaignManager.cpp:177
60 #, c-format
61 msgid "You receive %s x%d."
62 msgstr "あなたは %s x %d を入手する。"
63
64 #: ../../../src/CampaignManager.cpp:186
65 #, c-format
66 msgid "You receive %d %s."
67 msgstr "あなたは %d %s を入手する。"
68
69 #: ../../../src/CampaignManager.cpp:195
79 #: ../../../src/CampaignManager.cpp:210
7080 #, c-format
7181 msgid "You receive %d XP."
7282 msgstr "あなたは %d XP を入手する。"
7383
74 #: ../../../src/CampaignManager.cpp:201
84 #: ../../../src/CampaignManager.cpp:216
7585 msgid "HP restored."
7686 msgstr "HP が回復した。"
7787
78 #: ../../../src/CampaignManager.cpp:205
88 #: ../../../src/CampaignManager.cpp:220
7989 msgid "MP restored."
8090 msgstr "MP が回復した。"
8191
82 #: ../../../src/CampaignManager.cpp:210
92 #: ../../../src/CampaignManager.cpp:225
8393 msgid "HP and MP restored."
8494 msgstr "HP と MP が回復した。"
8595
86 #: ../../../src/CampaignManager.cpp:214
96 #: ../../../src/CampaignManager.cpp:229
8797 msgid "Negative effects removed."
8898 msgstr "負の影響は排除"
8999
90 #: ../../../src/CampaignManager.cpp:220
100 #: ../../../src/CampaignManager.cpp:235
91101 msgid "HP and MP restored, negative effects removed"
92102 msgstr "HPとMPが回復、負の効果は除去"
93103
96106 "SDL software renderer\n"
97107 "\n"
98108 "Often slower, but less likely to have issues."
99 msgstr ""
109 msgstr "SDL ソフトウェアレンダラーはおそいですが、いくつかのトラブルを無くせるかもしれません。"
100110
101111 #: ../../../src/DeviceList.cpp:59
102112 msgid ""
103113 "SDL hardware renderer\n"
104114 "\n"
105115 "The default renderer that is often faster than the SDL software renderer."
106 msgstr ""
107
108 #: ../../../src/EngineSettings.cpp:561
116 msgstr "SDL ハードウェアレンダラーは標準設定であり、SDLソフトウェアレンダラーよりも速いでしょう。"
117
118 #: ../../../src/EngineSettings.cpp:586
109119 msgid "Adventurer"
110120 msgstr "冒険家"
111121
112 #: ../../../src/Entity.cpp:511
122 #: ../../../src/Entity.cpp:527
113123 msgid "miss"
114124 msgstr "ミス"
115125
116 #: ../../../src/Entity.cpp:548 ../../../src/PowerManager.cpp:1152
117 #: ../../../src/StatBlock.cpp:805 ../../../src/StatBlock.cpp:811
126 #: ../../../src/Entity.cpp:565 ../../../src/PowerManager.cpp:1224
127 #: ../../../src/StatBlock.cpp:917 ../../../src/StatBlock.cpp:923
118128 #, c-format
119129 msgid "+%d HP"
120130 msgstr "+%d HP"
121131
122 #: ../../../src/Entity.cpp:555 ../../../src/StatBlock.cpp:816
123 #: ../../../src/StatBlock.cpp:822
132 #: ../../../src/Entity.cpp:572 ../../../src/StatBlock.cpp:928
133 #: ../../../src/StatBlock.cpp:934
124134 #, c-format
125135 msgid "+%d MP"
126136 msgstr "+%d MP"
127137
128 #: ../../../src/EventManager.cpp:738
138 #: ../../../src/EventManager.cpp:792
129139 msgid "Unknown destination"
130140 msgstr "未知の目的地"
131141
132 #: ../../../src/GameStateConfigBase.cpp:89
133 #: ../../../src/GameStateConfigBase.cpp:110
142 #: ../../../src/GameState.cpp:37 ../../../src/GameState.cpp:58
143 msgid "Loading..."
144 msgstr "読み込み中..."
145
146 #: ../../../src/GameStateLoad.cpp:90 ../../../src/GameStateLoad.cpp:103
147 msgid "Delete Save"
148 msgstr "セーブデータを削除"
149
150 #: ../../../src/GameStateLoad.cpp:90
151 msgid "Delete this save?"
152 msgstr "このセーブデータを削除しますか?"
153
154 #: ../../../src/GameStateLoad.cpp:92
155 msgid "Exit to Title"
156 msgstr "タイトルに戻る"
157
158 #: ../../../src/GameStateLoad.cpp:95
159 msgid "New Game"
160 msgstr "新しいゲーム"
161
162 #: ../../../src/GameStateLoad.cpp:99 ../../../src/GameStateLoad.cpp:607
163 msgid "Choose a Slot"
164 msgstr "スロットを選択"
165
166 #: ../../../src/GameStateLoad.cpp:580 ../../../src/GameStateLoad.cpp:601
167 msgid "Enable a story mod to continue"
168 msgstr "話モッズを有効にして継続する"
169
170 #: ../../../src/GameStateLoad.cpp:596
171 msgid "Load Game"
172 msgstr "ゲームをロード"
173
174 #: ../../../src/GameStateLoad.cpp:705
175 msgid "Entering game world..."
176 msgstr "ゲームの世界に入ります..."
177
178 #: ../../../src/GameStateLoad.cpp:708
179 msgid "Loading saved game..."
180 msgstr "セーブデータをロードしています..."
181
182 #: ../../../src/GameStateLoad.cpp:741
183 msgid "Invalid save"
184 msgstr ""
185
186 #: ../../../src/GameStateLoad.cpp:765 ../../../src/ItemManager.cpp:745
187 #: ../../../src/MenuPowers.cpp:860 ../../../src/MenuPowers.cpp:1219
188 #: ../../../src/MenuPowers.cpp:1631
189 #, c-format
190 msgid "Level %d"
191 msgstr "レベル %d"
192
193 #: ../../../src/GameStateNew.cpp:66 ../../../src/InputState.cpp:416
194 #: ../../../src/MenuConfig.cpp:246
195 msgid "Cancel"
196 msgstr "キャンセル"
197
198 #: ../../../src/GameStateNew.cpp:69
199 msgid "Create"
200 msgstr "作る"
201
202 #: ../../../src/GameStateNew.cpp:77
203 msgid "Randomize"
204 msgstr "ランダム"
205
206 #: ../../../src/GameStateNew.cpp:93
207 msgid "Choose a Portrait"
208 msgstr "肖像を選択"
209
210 #: ../../../src/GameStateNew.cpp:97
211 msgid "Choose a Name"
212 msgstr "名前を選択"
213
214 #: ../../../src/GameStateNew.cpp:101
215 msgid "Permadeath?"
216 msgstr "永久に死亡させますか?"
217
218 #: ../../../src/GameStateNew.cpp:105
219 msgid "Choose a Class"
220 msgstr "クラスを選択"
221
222 #: ../../../src/GameStateTitle.cpp:107
223 msgid "Play Game"
224 msgstr "ゲームをプレイ"
225
226 #: ../../../src/GameStateTitle.cpp:110
227 msgid "Enable a core mod to continue"
228 msgstr "コアモッズを有効にして続行"
229
230 #: ../../../src/GameStateTitle.cpp:114 ../../../src/MenuMiniMap.cpp:152
231 msgid "Configuration"
232 msgstr "設定"
233
234 #: ../../../src/GameStateTitle.cpp:117
235 msgid "Credits"
236 msgstr "クレジット"
237
238 #: ../../../src/GameStateTitle.cpp:120
239 msgid "Exit Game"
240 msgstr "ゲームを終了"
241
242 #: ../../../src/InputState.cpp:417
243 msgid "Accept"
244 msgstr "了解する"
245
246 #: ../../../src/InputState.cpp:418 ../../../src/MenuMovementType.cpp:123
247 #: ../../../src/MenuMovementType.cpp:132 ../../../src/SDLInputState.cpp:668
248 #: ../../../src/SDLInputState.cpp:698
249 msgid "Up"
250 msgstr "上"
251
252 #: ../../../src/InputState.cpp:419 ../../../src/MenuMovementType.cpp:125
253 #: ../../../src/MenuMovementType.cpp:134 ../../../src/SDLInputState.cpp:646
254 #: ../../../src/SDLInputState.cpp:676
255 msgid "Down"
256 msgstr "下"
257
258 #: ../../../src/InputState.cpp:420 ../../../src/MenuMovementType.cpp:124
259 #: ../../../src/MenuMovementType.cpp:133 ../../../src/SDLInputState.cpp:653
260 #: ../../../src/SDLInputState.cpp:683
261 msgid "Left"
262 msgstr "左"
263
264 #: ../../../src/InputState.cpp:421 ../../../src/MenuMovementType.cpp:126
265 #: ../../../src/MenuMovementType.cpp:135 ../../../src/SDLInputState.cpp:663
266 #: ../../../src/SDLInputState.cpp:693
267 msgid "Right"
268 msgstr "右"
269
270 #: ../../../src/InputState.cpp:422
271 msgid "Bar1"
272 msgstr "バー1"
273
274 #: ../../../src/InputState.cpp:423
275 msgid "Bar2"
276 msgstr "バー2"
277
278 #: ../../../src/InputState.cpp:424
279 msgid "Bar3"
280 msgstr "バー3"
281
282 #: ../../../src/InputState.cpp:425
283 msgid "Bar4"
284 msgstr "バー4"
285
286 #: ../../../src/InputState.cpp:426
287 msgid "Bar5"
288 msgstr "バー5"
289
290 #: ../../../src/InputState.cpp:427
291 msgid "Bar6"
292 msgstr "バー6"
293
294 #: ../../../src/InputState.cpp:428
295 msgid "Bar7"
296 msgstr "バー7"
297
298 #: ../../../src/InputState.cpp:429
299 msgid "Bar8"
300 msgstr "バー8"
301
302 #: ../../../src/InputState.cpp:430
303 msgid "Bar9"
304 msgstr "バー9"
305
306 #: ../../../src/InputState.cpp:431
307 msgid "Bar0"
308 msgstr "バー0"
309
310 #: ../../../src/InputState.cpp:432 ../../../src/MenuActionBar.cpp:84
311 #: ../../../src/MenuCharacter.cpp:54
312 msgid "Character"
313 msgstr "キャラクター"
314
315 #: ../../../src/InputState.cpp:433 ../../../src/MenuActionBar.cpp:85
316 #: ../../../src/MenuInventory.cpp:130 ../../../src/MenuVendor.cpp:59
317 msgid "Inventory"
318 msgstr "物品"
319
320 #: ../../../src/InputState.cpp:434 ../../../src/MenuActionBar.cpp:86
321 #: ../../../src/MenuPowers.cpp:158
322 msgid "Powers"
323 msgstr "能力"
324
325 #: ../../../src/InputState.cpp:435 ../../../src/MenuActionBar.cpp:87
326 #: ../../../src/MenuLog.cpp:72
327 msgid "Log"
328 msgstr "ログ"
329
330 #: ../../../src/InputState.cpp:436
331 msgid "Main1"
332 msgstr "メイン1"
333
334 #: ../../../src/InputState.cpp:437
335 msgid "Main2"
336 msgstr "メイン2"
337
338 #: ../../../src/InputState.cpp:438
339 msgid "Ctrl"
340 msgstr "Ctrl"
341
342 #: ../../../src/InputState.cpp:439
343 msgid "Shift"
344 msgstr "Shift"
345
346 #: ../../../src/InputState.cpp:440
347 msgid "Alt"
348 msgstr "Alt"
349
350 #: ../../../src/InputState.cpp:441 ../../../src/SDLInputState.cpp:675
351 msgid "Delete"
352 msgstr "削除"
353
354 #: ../../../src/InputState.cpp:442
355 msgid "ActionBar Accept"
356 msgstr "アクションバー受入"
357
358 #: ../../../src/InputState.cpp:443
359 msgid "ActionBar Left"
360 msgstr "アクションバー左"
361
362 #: ../../../src/InputState.cpp:444
363 msgid "ActionBar Right"
364 msgstr "アクションバー右"
365
366 #: ../../../src/InputState.cpp:445
367 msgid "ActionBar Use"
368 msgstr "アクションバー使用"
369
370 #: ../../../src/InputState.cpp:446
371 msgid "Developer Menu"
372 msgstr ""
373
374 #: ../../../src/InputState.cpp:448
375 msgid "Left Mouse"
376 msgstr "左マウス"
377
378 #: ../../../src/InputState.cpp:449
379 msgid "Middle Mouse"
380 msgstr "中央マウス"
381
382 #: ../../../src/InputState.cpp:450
383 msgid "Right Mouse"
384 msgstr "右マウス"
385
386 #: ../../../src/InputState.cpp:451
387 msgid "Wheel Up"
388 msgstr "マウスホイール アップ"
389
390 #: ../../../src/InputState.cpp:452
391 msgid "Wheel Down"
392 msgstr "マウスホイール ダウン"
393
394 #: ../../../src/InputState.cpp:453
395 msgid "Mouse X1"
396 msgstr "マウス X1"
397
398 #: ../../../src/InputState.cpp:454
399 msgid "Mouse X2"
400 msgstr "マウス X2"
401
402 #: ../../../src/ItemManager.cpp:475
403 msgid "Unknown Item"
404 msgstr "不明なアイテム"
405
406 #: ../../../src/ItemManager.cpp:646 ../../../src/MenuPowers.cpp:959
407 #, c-format
408 msgid "%d%% Speed"
409 msgstr "%d%% スピード"
410
411 #: ../../../src/ItemManager.cpp:650 ../../../src/MenuPowers.cpp:962
412 #, c-format
413 msgid "%d%% Attack Speed"
414 msgstr "%d%% スピード"
415
416 #: ../../../src/ItemManager.cpp:672 ../../../src/MenuCharacter.cpp:352
417 #: ../../../src/MenuPowers.cpp:931
418 #, c-format
419 msgid "Resistance (%s)"
420 msgstr "抵抗(%s)"
421
422 #: ../../../src/ItemManager.cpp:682
423 #, c-format
424 msgid "Requires %s"
425 msgstr ""
426
427 #: ../../../src/ItemManager.cpp:731
428 msgid "Quest Item"
429 msgstr "クエスト品"
430
431 #: ../../../src/ItemManager.cpp:758
432 #, c-format
433 msgid "Quality: %s"
434 msgstr "品質: %s"
435
436 #: ../../../src/ItemManager.cpp:783
437 #, c-format
438 msgid "Absorb: %d-%d"
439 msgstr "吸収: %d-%d"
440
441 #: ../../../src/ItemManager.cpp:785
442 #, c-format
443 msgid "Absorb: %d"
444 msgstr "吸収: %d"
445
446 #: ../../../src/ItemManager.cpp:825 ../../../src/MenuPowers.cpp:1206
447 #: ../../../src/MenuPowers.cpp:1209
448 #, c-format
449 msgid "Requires Level %d"
450 msgstr "レベル %d が必要です"
451
452 #: ../../../src/ItemManager.cpp:836 ../../../src/MenuPowers.cpp:1198
453 #: ../../../src/MenuPowers.cpp:1200
454 #, c-format
455 msgid "Requires %s %d"
456 msgstr "%s %d が必要です"
457
458 #: ../../../src/ItemManager.cpp:847
459 #, c-format
460 msgid "Requires Class: %s"
461 msgstr "必要なクラス: %s"
462
463 #: ../../../src/ItemManager.cpp:863 ../../../src/ItemManager.cpp:875
464 #, c-format
465 msgid "Buy Price: %d %s"
466 msgstr "購入価格: %d %s"
467
468 #: ../../../src/ItemManager.cpp:865 ../../../src/ItemManager.cpp:877
469 #, c-format
470 msgid "Buy Price: %d %s each"
471 msgstr "購入価格: %d %s ひとつあたり"
472
473 #: ../../../src/ItemManager.cpp:885
474 #, c-format
475 msgid "Sell Price: %d %s"
476 msgstr "売却価格: %d %s"
477
478 #: ../../../src/ItemManager.cpp:887
479 #, c-format
480 msgid "Sell Price: %d %s each"
481 msgstr "売却価格: %d %s ひとつあたり"
482
483 #: ../../../src/ItemManager.cpp:896
484 msgid "Set:"
485 msgstr "組合わせ:"
486
487 #: ../../../src/ItemManager.cpp:903
488 #, c-format
489 msgid "%d items:"
490 msgstr "%d アイテム:"
491
492 #: ../../../src/ItemManager.cpp:915
493 #, c-format
494 msgid "Press [%s] to read"
495 msgstr ""
496
497 #: ../../../src/ItemManager.cpp:918
498 #, c-format
499 msgid "Press [%s] to use"
500 msgstr "使用は[%s]"
501
502 #: ../../../src/MenuActionBar.cpp:239 ../../../src/MenuActionBar.cpp:246
503 #: ../../../src/MenuActionBar.cpp:249 ../../../src/MenuActionBar.cpp:255
504 #, c-format
505 msgid "Hotkey: %s"
506 msgstr "ホットキー: %s"
507
508 #: ../../../src/MenuActionBar.cpp:621
509 msgid "Not enough MP."
510 msgstr ""
511
512 #: ../../../src/MenuActiveEffects.cpp:124
513 #, c-format
514 msgid "x%d"
515 msgstr ""
516
517 #: ../../../src/MenuActiveEffects.cpp:219
518 msgid "Remaining:"
519 msgstr "残り:"
520
521 #: ../../../src/MenuActiveEffects.cpp:225
522 #, c-format
523 msgid "x%d stacks"
524 msgstr ""
525
526 #: ../../../src/MenuCharacter.cpp:73 ../../../src/MenuCharacter.cpp:78
527 msgid "Name"
528 msgstr "名"
529
530 #: ../../../src/MenuCharacter.cpp:74 ../../../src/MenuCharacter.cpp:79
531 msgid "Level"
532 msgstr "レベル"
533
534 #: ../../../src/MenuCharacter.cpp:309
535 #, c-format
536 msgid "Available stat points: %d"
537 msgstr ""
538
539 #: ../../../src/MenuCharacter.cpp:353
540 #, c-format
541 msgid "Reduces the damage taken from \"%s\" elemental attacks."
542 msgstr "%sエレメンタルの攻撃を受けたときのダメージを減らします。"
543
544 #: ../../../src/MenuCharacter.cpp:363 ../../../src/MenuManager.cpp:301
545 #, c-format
546 msgid "XP: %d"
547 msgstr "XP: %d"
548
549 #: ../../../src/MenuCharacter.cpp:365
550 #, c-format
551 msgid "Next: %d"
552 msgstr "次: %d"
553
554 #: ../../../src/MenuCharacter.cpp:371
555 #, c-format
556 msgid "base (%d), bonus (%d)"
557 msgstr "基本 (%d), ボーナス (%d)"
558
559 #: ../../../src/MenuCharacter.cpp:379 ../../../src/MenuCharacter.cpp:393
560 msgid "Related stats:"
561 msgstr "関連する統計:"
562
563 #: ../../../src/MenuCharacter.cpp:419 ../../../src/MenuCharacter.cpp:443
564 #, c-format
565 msgid "Each level grants %d."
566 msgstr "レベルごとに %d が付与されます。"
567
568 #: ../../../src/MenuCharacter.cpp:423 ../../../src/MenuCharacter.cpp:447
569 #, c-format
570 msgid "Each point of %s grants %d."
571 msgstr "%s の各点ごとに %d が付与されます。"
572
573 #: ../../../src/MenuConfig.cpp:122 ../../../src/MenuConfig.cpp:1171
574 msgid "Clear"
575 msgstr "クリア"
576
577 #: ../../../src/MenuConfig.cpp:122 ../../../src/MenuConfig.cpp:1169
578 msgid "Assign:"
579 msgstr "割り当て:"
580
581 #: ../../../src/MenuConfig.cpp:123 ../../../src/MenuConfig.cpp:245
134582 msgid "Defaults"
135583 msgstr "デフォルト"
136584
137 #: ../../../src/GameStateConfigBase.cpp:89
585 #: ../../../src/MenuConfig.cpp:123
138586 msgid "Reset ALL settings?"
139587 msgstr "すべての設定をリセット?"
140588
141 #: ../../../src/GameStateConfigBase.cpp:109 ../../../src/MenuNumPicker.cpp:49
589 #: ../../../src/MenuConfig.cpp:244 ../../../src/MenuNumPicker.cpp:49
142590 msgid "OK"
143591 msgstr "オーケー"
144592
145 #: ../../../src/GameStateConfigBase.cpp:111 ../../../src/GameStateNew.cpp:65
146 #: ../../../src/InputState.cpp:401
147 msgid "Cancel"
148 msgstr "キャンセル"
149
150 #: ../../../src/GameStateConfigBase.cpp:160
151 #: ../../../src/GameStateConfigDesktop.cpp:130
593 #: ../../../src/MenuConfig.cpp:248 ../../../src/MenuGameOver.cpp:72
594 msgid "Continue"
595 msgstr "続行"
596
597 #: ../../../src/MenuConfig.cpp:250
598 msgid "Save Game"
599 msgstr ""
600
601 #: ../../../src/MenuConfig.cpp:293
602 msgid "Default"
603 msgstr ""
604
605 #: ../../../src/MenuConfig.cpp:293
606 msgid ""
607 "Show all loot tooltips, except for those that would be obscured by the "
608 "player or an enemy. Temporarily show all loot tooltips with 'Alt'."
609 msgstr ""
610
611 #: ../../../src/MenuConfig.cpp:294
612 msgid "Show all"
613 msgstr ""
614
615 #: ../../../src/MenuConfig.cpp:294
616 msgid ""
617 "Always show loot tooltips. Temporarily hide all loot tooltips with 'Alt'."
618 msgstr ""
619
620 #: ../../../src/MenuConfig.cpp:295 ../../../src/MenuConfig.cpp:300
621 msgid "Hidden"
622 msgstr ""
623
624 #: ../../../src/MenuConfig.cpp:295
625 msgid ""
626 "Always hide loot tooltips, except for when a piece of loot is hovered with "
627 "the mouse cursor. Temporarily show all loot tooltips with 'Alt'."
628 msgstr ""
629
630 #: ../../../src/MenuConfig.cpp:298
631 msgid "Visible"
632 msgstr ""
633
634 #: ../../../src/MenuConfig.cpp:299
635 msgid "Visible (2x zoom)"
636 msgstr ""
637
638 #: ../../../src/MenuConfig.cpp:303
639 msgid ""
640 "Controls the type of warning to be activated when the player is below the "
641 "low health threshold."
642 msgstr ""
643
644 #: ../../../src/MenuConfig.cpp:304
645 msgid "- Display a message"
646 msgstr ""
647
648 #: ../../../src/MenuConfig.cpp:305
649 msgid "- Play a sound"
650 msgstr ""
651
652 #: ../../../src/MenuConfig.cpp:306
653 msgid "- Change the cursor"
654 msgstr ""
655
656 #: ../../../src/MenuConfig.cpp:308
657 msgid "Disabled"
658 msgstr ""
659
660 #: ../../../src/MenuConfig.cpp:309
661 msgid "All"
662 msgstr ""
663
664 #: ../../../src/MenuConfig.cpp:310
665 msgid "Message & Cursor"
666 msgstr ""
667
668 #: ../../../src/MenuConfig.cpp:311
669 msgid "Message & Sound"
670 msgstr ""
671
672 #: ../../../src/MenuConfig.cpp:312
673 msgid "Sound & Cursor"
674 msgstr ""
675
676 #: ../../../src/MenuConfig.cpp:313
677 msgid "Message"
678 msgstr ""
679
680 #: ../../../src/MenuConfig.cpp:314
681 msgid "Cursor"
682 msgstr ""
683
684 #: ../../../src/MenuConfig.cpp:315
685 msgid "Sound"
686 msgstr ""
687
688 #: ../../../src/MenuConfig.cpp:321
689 msgid ""
690 "When the player's health drops below the given threshold, the low health "
691 "notifications are triggered if one or more of them is enabled."
692 msgstr ""
693
694 #: ../../../src/MenuConfig.cpp:334 ../../../src/MenuConfig.cpp:1587
695 #: ../../../src/MenuGameOver.cpp:116
696 msgid "Exit"
697 msgstr "終了"
698
699 #: ../../../src/MenuConfig.cpp:335
700 msgid "Video"
701 msgstr "ビデオ"
702
703 #: ../../../src/MenuConfig.cpp:336
152704 msgid "Audio"
153705 msgstr "オーディオ"
154706
155 #: ../../../src/GameStateConfigBase.cpp:161
156 #: ../../../src/GameStateConfigDesktop.cpp:131
707 #: ../../../src/MenuConfig.cpp:337
157708 msgid "Interface"
158709 msgstr "インタフェース"
159710
160 #: ../../../src/GameStateConfigBase.cpp:162
161 #: ../../../src/GameStateConfigDesktop.cpp:134
711 #: ../../../src/MenuConfig.cpp:338
712 msgid "Input"
713 msgstr "入力"
714
715 #: ../../../src/MenuConfig.cpp:339
716 msgid "Keybindings"
717 msgstr "キー設定"
718
719 #: ../../../src/MenuConfig.cpp:340
162720 msgid "Mods"
163721 msgstr "モッズ"
164722
165 #: ../../../src/GameStateConfigBase.cpp:249 ../../../src/MenuExit.cpp:72
723 #: ../../../src/MenuConfig.cpp:352
724 msgid "Paused"
725 msgstr "ポーズ"
726
727 #: ../../../src/MenuConfig.cpp:355
728 msgid "Time Played"
729 msgstr "プレイ時間"
730
731 #: ../../../src/MenuConfig.cpp:361
732 msgid "Renderer"
733 msgstr ""
734
735 #: ../../../src/MenuConfig.cpp:362
736 msgid "Full Screen Mode"
737 msgstr "フルスクリーンモード"
738
739 #: ../../../src/MenuConfig.cpp:363
740 msgid "Hardware surfaces"
741 msgstr "ハードウェアサーフェス"
742
743 #: ../../../src/MenuConfig.cpp:364
744 msgid "V-Sync"
745 msgstr ""
746
747 #: ../../../src/MenuConfig.cpp:365
748 msgid "Texture Filtering"
749 msgstr ""
750
751 #: ../../../src/MenuConfig.cpp:366
752 msgid "DPI scaling"
753 msgstr ""
754
755 #: ../../../src/MenuConfig.cpp:367
756 msgid "Parallax Layers"
757 msgstr ""
758
759 #: ../../../src/MenuConfig.cpp:368
760 msgid "Allow changing gamma"
761 msgstr "ガンマの変更許可"
762
763 #: ../../../src/MenuConfig.cpp:369
764 msgid "Gamma"
765 msgstr "ガンマ"
766
767 #: ../../../src/MenuConfig.cpp:371
768 msgid "Sound Volume"
769 msgstr "効果音の音量"
770
771 #: ../../../src/MenuConfig.cpp:372
166772 msgid "Music Volume"
167773 msgstr "音楽の音量"
168774
169 #: ../../../src/GameStateConfigBase.cpp:253 ../../../src/MenuExit.cpp:77
170 msgid "Sound Volume"
171 msgstr "効果音の音量"
172
173 #: ../../../src/GameStateConfigBase.cpp:257
775 #: ../../../src/MenuConfig.cpp:374
174776 msgid "Language"
175777 msgstr "言語"
176778
177 #: ../../../src/GameStateConfigBase.cpp:266
779 #: ../../../src/MenuConfig.cpp:375
178780 msgid "Show FPS"
179781 msgstr "FPSを表示"
180782
181 #: ../../../src/GameStateConfigBase.cpp:270
783 #: ../../../src/MenuConfig.cpp:376
784 msgid "Hardware mouse cursor"
785 msgstr ""
786
787 #: ../../../src/MenuConfig.cpp:377
182788 msgid "Colorblind Mode"
183789 msgstr "色盲モード"
184790
185 #: ../../../src/GameStateConfigBase.cpp:274
186 msgid "Hardware mouse cursor"
187 msgstr ""
188
189 #: ../../../src/GameStateConfigBase.cpp:278
791 #: ../../../src/MenuConfig.cpp:378
190792 msgid "Developer Mode"
191793 msgstr ""
192794
193 #: ../../../src/GameStateConfigBase.cpp:282
795 #: ../../../src/MenuConfig.cpp:379
194796 msgid "Subtitles"
195797 msgstr "字幕"
196798
197 #: ../../../src/GameStateConfigBase.cpp:286
198 msgid "Active Mods"
199 msgstr "アクティブモッズ"
200
201 #: ../../../src/GameStateConfigBase.cpp:295
202 msgid "Available Mods"
203 msgstr "利用可能モッズ"
204
205 #: ../../../src/GameStateConfigBase.cpp:314
206 msgid "<< Disable"
207 msgstr "<< 無効"
208
209 #: ../../../src/GameStateConfigBase.cpp:320
210 msgid "Enable >>"
211 msgstr "有効 >>"
212
213 #: ../../../src/GameStateConfigBase.cpp:873
214 msgid "Version:"
215 msgstr ""
216
217 #: ../../../src/GameStateConfigBase.cpp:878
218 msgid "Game:"
219 msgstr "ゲーム:"
220
221 #: ../../../src/GameStateConfigBase.cpp:883
222 msgid "Engine version:"
223 msgstr "必要バージョン:"
224
225 #: ../../../src/GameStateConfigBase.cpp:891
226 msgid "Requires mods:"
227 msgstr "必要モッズ:"
228
229 #: ../../../src/GameStateConfigDesktop.cpp:83
230 #: ../../../src/GameStateConfigDesktop.cpp:751
231 msgid "Clear"
232 msgstr "クリア"
233
234 #: ../../../src/GameStateConfigDesktop.cpp:83
235 #: ../../../src/GameStateConfigDesktop.cpp:749
236 msgid "Assign:"
237 msgstr "割り当て:"
238
239 #: ../../../src/GameStateConfigDesktop.cpp:128
240 msgid "Video"
241 msgstr "ビデオ"
242
243 #: ../../../src/GameStateConfigDesktop.cpp:132
244 msgid "Input"
245 msgstr "入力"
246
247 #: ../../../src/GameStateConfigDesktop.cpp:133
248 msgid "Keybindings"
249 msgstr "キー設定"
250
251 #: ../../../src/GameStateConfigDesktop.cpp:188
799 #: ../../../src/MenuConfig.cpp:380
800 msgid "Loot tooltip visibility"
801 msgstr ""
802
803 #: ../../../src/MenuConfig.cpp:381
804 msgid "Mini-map mode"
805 msgstr ""
806
807 #: ../../../src/MenuConfig.cpp:382
808 msgid "Always show stat bar labels"
809 msgstr ""
810
811 #: ../../../src/MenuConfig.cpp:383
812 msgid "Allow stat bar auto-hiding"
813 msgstr ""
814
815 #: ../../../src/MenuConfig.cpp:384
816 msgid "Show combat text"
817 msgstr "戦闘のテキストを表示"
818
819 #: ../../../src/MenuConfig.cpp:385
820 msgid "Automatically equip items"
821 msgstr ""
822
823 #: ../../../src/MenuConfig.cpp:386
824 msgid "Show hidden entity markers"
825 msgstr ""
826
827 #: ../../../src/MenuConfig.cpp:387
828 msgid "Low health notification"
829 msgstr ""
830
831 #: ../../../src/MenuConfig.cpp:388
832 msgid "Low health threshold"
833 msgstr ""
834
835 #: ../../../src/MenuConfig.cpp:389
836 msgid "Show item comparison tooltips"
837 msgstr ""
838
839 #: ../../../src/MenuConfig.cpp:392 ../../../src/MenuMovementType.cpp:94
840 #: ../../../src/MenuMovementType.cpp:131
841 msgid "Joystick"
842 msgstr "ジョイスティック"
843
844 #: ../../../src/MenuConfig.cpp:393
845 msgid "Move hero using mouse"
846 msgstr "マウスでキャラクターを動かす"
847
848 #: ../../../src/MenuConfig.cpp:394
849 msgid "Mouse aim"
850 msgstr "マウスの狙い"
851
852 #: ../../../src/MenuConfig.cpp:395
853 msgid "Do not use mouse"
854 msgstr "マウスの不利用"
855
856 #: ../../../src/MenuConfig.cpp:396
857 msgid "Swap mouse movement button"
858 msgstr ""
859
860 #: ../../../src/MenuConfig.cpp:397
861 msgid "Attack with mouse movement"
862 msgstr ""
863
864 #: ../../../src/MenuConfig.cpp:398
865 msgid "Joystick Deadzone"
866 msgstr "Joystick Deadzone"
867
868 #: ../../../src/MenuConfig.cpp:408
869 #, c-format
870 msgid "Primary binding: %s"
871 msgstr ""
872
873 #: ../../../src/MenuConfig.cpp:409
874 #, c-format
875 msgid "Alternate binding: %s"
876 msgstr ""
877
878 #: ../../../src/MenuConfig.cpp:410
879 #, c-format
880 msgid "Joystick binding: %s"
881 msgstr ""
882
883 #: ../../../src/MenuConfig.cpp:511
252884 msgid ""
253885 "Will try to store surfaces in video memory versus system memory. The effect "
254886 "this has on performance depends on the renderer."
255887 msgstr ""
256888
257 #: ../../../src/GameStateConfigDesktop.cpp:189
889 #: ../../../src/MenuConfig.cpp:512
258890 msgid ""
259891 "Prevents screen tearing. Disable if you experience \"stuttering\" in "
260892 "windowed mode or input lag."
261893 msgstr ""
262894
263 #: ../../../src/GameStateConfigDesktop.cpp:190
895 #: ../../../src/MenuConfig.cpp:513
264896 msgid ""
265897 "When enabled, this uses the screen DPI in addition to the window dimensions "
266898 "to scale the rendering resolution. Otherwise, only the window dimensions are"
267899 " used."
268900 msgstr ""
269901
270 #: ../../../src/GameStateConfigDesktop.cpp:191
902 #: ../../../src/MenuConfig.cpp:514
271903 msgid ""
272904 "This enables parallax (non-tile) layers. Disabling this setting can improve "
273905 "performance in some cases."
274906 msgstr ""
275907
276 #: ../../../src/GameStateConfigDesktop.cpp:192
277 msgid "Experimental"
278 msgstr "実験的"
279
280 #: ../../../src/GameStateConfigDesktop.cpp:193
281 msgid "For handheld devices"
282 msgstr "携帯電話モード"
283
284 #: ../../../src/GameStateConfigDesktop.cpp:211
285 msgid "Renderer"
286 msgstr ""
287
288 #: ../../../src/GameStateConfigDesktop.cpp:227
289 msgid "Full Screen Mode"
290 msgstr "フルスクリーンモード"
291
292 #: ../../../src/GameStateConfigDesktop.cpp:231
293 msgid "Move hero using mouse"
294 msgstr "マウスでキャラクターを動かす"
295
296 #: ../../../src/GameStateConfigDesktop.cpp:235
297 msgid "Hardware surfaces"
298 msgstr "ハードウェアサーフェス"
299
300 #: ../../../src/GameStateConfigDesktop.cpp:239
301 msgid "V-Sync"
302 msgstr ""
303
304 #: ../../../src/GameStateConfigDesktop.cpp:243
305 msgid "Texture Filtering"
306 msgstr ""
307
308 #: ../../../src/GameStateConfigDesktop.cpp:247
309 msgid "DPI scaling"
310 msgstr ""
311
312 #: ../../../src/GameStateConfigDesktop.cpp:251
313 msgid "Parallax Layers"
314 msgstr ""
315
316 #: ../../../src/GameStateConfigDesktop.cpp:255
317 msgid "Allow changing gamma"
318 msgstr "ガンマの変更許可"
319
320 #: ../../../src/GameStateConfigDesktop.cpp:259
321 msgid "Gamma"
322 msgstr "ガンマ"
323
324 #: ../../../src/GameStateConfigDesktop.cpp:263
325 msgid "Use joystick"
326 msgstr "ジョイスティックを使用する"
327
328 #: ../../../src/GameStateConfigDesktop.cpp:267
329 msgid "Joystick"
330 msgstr "ジョイスティック"
331
332 #: ../../../src/GameStateConfigDesktop.cpp:283
333 msgid "Mouse aim"
334 msgstr "マウスの狙い"
335
336 #: ../../../src/GameStateConfigDesktop.cpp:287
337 msgid "Do not use mouse"
338 msgstr "マウスの不利用"
339
340 #: ../../../src/GameStateConfigDesktop.cpp:291
341 msgid "Joystick Deadzone"
342 msgstr "Joystick Deadzone"
343
344 #: ../../../src/GameState.cpp:37 ../../../src/GameState.cpp:58
345 msgid "Loading..."
346 msgstr "読み込み中..."
347
348 #: ../../../src/GameStateLoad.cpp:88 ../../../src/GameStateLoad.cpp:101
349 msgid "Delete Save"
350 msgstr "セーブデータを削除"
351
352 #: ../../../src/GameStateLoad.cpp:88
353 msgid "Delete this save?"
354 msgstr "このセーブデータを削除しますか?"
355
356 #: ../../../src/GameStateLoad.cpp:90
357 msgid "Exit to Title"
358 msgstr "タイトルに戻る"
359
360 #: ../../../src/GameStateLoad.cpp:93
361 msgid "New Game"
362 msgstr "新しいゲーム"
363
364 #: ../../../src/GameStateLoad.cpp:97 ../../../src/GameStateLoad.cpp:600
365 msgid "Choose a Slot"
366 msgstr "スロットを選択"
367
368 #: ../../../src/GameStateLoad.cpp:573 ../../../src/GameStateLoad.cpp:594
369 msgid "Enable a story mod to continue"
370 msgstr "話モッズを有効にして継続する"
371
372 #: ../../../src/GameStateLoad.cpp:589
373 msgid "Load Game"
374 msgstr "ゲームをロード"
375
376 #: ../../../src/GameStateLoad.cpp:695
377 msgid "Entering game world..."
378 msgstr "ゲームの世界に入ります..."
379
380 #: ../../../src/GameStateLoad.cpp:698
381 msgid "Loading saved game..."
382 msgstr "セーブデータをロードしています..."
383
384 #: ../../../src/GameStateLoad.cpp:731
385 msgid "Invalid save"
386 msgstr ""
387
388 #: ../../../src/GameStateLoad.cpp:755 ../../../src/ItemManager.cpp:747
389 #: ../../../src/MenuPowers.cpp:778 ../../../src/MenuPowers.cpp:1144
390 #: ../../../src/MenuPowers.cpp:1542
391 #, c-format
392 msgid "Level %d"
393 msgstr "レベル %d"
394
395 #: ../../../src/GameStateNew.cpp:68
396 msgid "Create"
397 msgstr "作る"
398
399 #: ../../../src/GameStateNew.cpp:76
400 msgid "Randomize"
401 msgstr ""
402
403 #: ../../../src/GameStateNew.cpp:92
404 msgid "Choose a Portrait"
405 msgstr "肖像を選択"
406
407 #: ../../../src/GameStateNew.cpp:96
408 msgid "Choose a Name"
409 msgstr "名前を選択"
410
411 #: ../../../src/GameStateNew.cpp:100
412 msgid "Permadeath?"
413 msgstr "永久に死亡させますか?"
414
415 #: ../../../src/GameStateNew.cpp:104
416 msgid "Choose a Class"
417 msgstr "クラスを選択"
418
419 #: ../../../src/GameStateTitle.cpp:108
420 msgid "Play Game"
421 msgstr "ゲームをプレイ"
422
423 #: ../../../src/GameStateTitle.cpp:111
424 msgid "Enable a core mod to continue"
425 msgstr "コアモッズを有効にして続行"
426
427 #: ../../../src/GameStateTitle.cpp:115
428 msgid "Configuration"
429 msgstr "設定"
430
431 #: ../../../src/GameStateTitle.cpp:118
432 msgid "Credits"
433 msgstr "クレジット"
434
435 #: ../../../src/GameStateTitle.cpp:121
436 msgid "Exit Game"
437 msgstr "ゲームを終了"
438
439 #: ../../../src/InputState.cpp:402
440 msgid "Accept"
441 msgstr "了解する"
442
443 #: ../../../src/InputState.cpp:403 ../../../src/SDLInputState.cpp:607
444 msgid "Up"
445 msgstr "上"
446
447 #: ../../../src/InputState.cpp:404 ../../../src/SDLInputState.cpp:585
448 msgid "Down"
449 msgstr "下"
450
451 #: ../../../src/InputState.cpp:405 ../../../src/SDLInputState.cpp:592
452 msgid "Left"
453 msgstr "左"
454
455 #: ../../../src/InputState.cpp:406 ../../../src/SDLInputState.cpp:602
456 msgid "Right"
457 msgstr "右"
458
459 #: ../../../src/InputState.cpp:407
460 msgid "Bar1"
461 msgstr "バー1"
462
463 #: ../../../src/InputState.cpp:408
464 msgid "Bar2"
465 msgstr "バー2"
466
467 #: ../../../src/InputState.cpp:409
468 msgid "Bar3"
469 msgstr "バー3"
470
471 #: ../../../src/InputState.cpp:410
472 msgid "Bar4"
473 msgstr "バー4"
474
475 #: ../../../src/InputState.cpp:411
476 msgid "Bar5"
477 msgstr "バー5"
478
479 #: ../../../src/InputState.cpp:412
480 msgid "Bar6"
481 msgstr "バー6"
482
483 #: ../../../src/InputState.cpp:413
484 msgid "Bar7"
485 msgstr "バー7"
486
487 #: ../../../src/InputState.cpp:414
488 msgid "Bar8"
489 msgstr "バー8"
490
491 #: ../../../src/InputState.cpp:415
492 msgid "Bar9"
493 msgstr "バー9"
494
495 #: ../../../src/InputState.cpp:416
496 msgid "Bar0"
497 msgstr "バー0"
498
499 #: ../../../src/InputState.cpp:417 ../../../src/MenuActionBar.cpp:83
500 #: ../../../src/MenuCharacter.cpp:54
501 msgid "Character"
502 msgstr "キャラクター"
503
504 #: ../../../src/InputState.cpp:418 ../../../src/MenuActionBar.cpp:84
505 #: ../../../src/MenuInventory.cpp:137 ../../../src/MenuVendor.cpp:57
506 msgid "Inventory"
507 msgstr "物品"
508
509 #: ../../../src/InputState.cpp:419 ../../../src/MenuActionBar.cpp:85
510 #: ../../../src/MenuPowers.cpp:168
511 msgid "Powers"
512 msgstr "能力"
513
514 #: ../../../src/InputState.cpp:420 ../../../src/MenuActionBar.cpp:86
515 #: ../../../src/MenuLog.cpp:72
516 msgid "Log"
517 msgstr "ログ"
518
519 #: ../../../src/InputState.cpp:421
520 msgid "Main1"
521 msgstr "メイン1"
522
523 #: ../../../src/InputState.cpp:422
524 msgid "Main2"
525 msgstr "メイン2"
526
527 #: ../../../src/InputState.cpp:423
528 msgid "Ctrl"
529 msgstr "Ctrl"
530
531 #: ../../../src/InputState.cpp:424
532 msgid "Shift"
533 msgstr "Shift"
534
535 #: ../../../src/InputState.cpp:425
536 msgid "Alt"
537 msgstr "Alt"
538
539 #: ../../../src/InputState.cpp:426 ../../../src/SDLInputState.cpp:584
540 msgid "Delete"
541 msgstr "削除"
542
543 #: ../../../src/InputState.cpp:427
544 msgid "ActionBar Accept"
545 msgstr "アクションバー受入"
546
547 #: ../../../src/InputState.cpp:428
548 msgid "ActionBar Left"
549 msgstr "アクションバー左"
550
551 #: ../../../src/InputState.cpp:429
552 msgid "ActionBar Right"
553 msgstr "アクションバー右"
554
555 #: ../../../src/InputState.cpp:430
556 msgid "ActionBar Use"
557 msgstr "アクションバー使用"
558
559 #: ../../../src/InputState.cpp:431
560 msgid "Developer Menu"
561 msgstr ""
562
563 #: ../../../src/InputState.cpp:433
564 msgid "Left Mouse"
565 msgstr "左マウス"
566
567 #: ../../../src/InputState.cpp:434
568 msgid "Middle Mouse"
569 msgstr "中央マウス"
570
571 #: ../../../src/InputState.cpp:435
572 msgid "Right Mouse"
573 msgstr "右マウス"
574
575 #: ../../../src/InputState.cpp:436
576 msgid "Wheel Up"
577 msgstr "マウスホイール アップ"
578
579 #: ../../../src/InputState.cpp:437
580 msgid "Wheel Down"
581 msgstr "マウスホイール ダウン"
582
583 #: ../../../src/InputState.cpp:438
584 msgid "Mouse X1"
585 msgstr "マウス X1"
586
587 #: ../../../src/InputState.cpp:439
588 msgid "Mouse X2"
589 msgstr "マウス X2"
590
591 #: ../../../src/ItemManager.cpp:450 ../../../src/ItemManager.cpp:453
592 msgid "Unknown Item"
593 msgstr "不明なアイテム"
594
595 #: ../../../src/ItemManager.cpp:648 ../../../src/MenuPowers.cpp:887
596 #, c-format
597 msgid "%d%% Speed"
598 msgstr "%d%% スピード"
599
600 #: ../../../src/ItemManager.cpp:652 ../../../src/MenuPowers.cpp:890
601 #, c-format
602 msgid "%d%% Attack Speed"
603 msgstr "%d%% スピード"
604
605 #: ../../../src/ItemManager.cpp:674 ../../../src/MenuCharacter.cpp:354
606 #: ../../../src/MenuPowers.cpp:833
607 #, c-format
608 msgid "Resistance (%s)"
609 msgstr ""
610
611 #: ../../../src/ItemManager.cpp:684
612 #, c-format
613 msgid "Requires %s"
614 msgstr ""
615
616 #: ../../../src/ItemManager.cpp:733
617 msgid "Quest Item"
618 msgstr "クエスト品"
619
620 #: ../../../src/ItemManager.cpp:760
621 #, c-format
622 msgid "Quality: %s"
623 msgstr "品質: %s"
624
625 #: ../../../src/ItemManager.cpp:785
626 #, c-format
627 msgid "Absorb: %d-%d"
628 msgstr "吸収: %d-%d"
629
630 #: ../../../src/ItemManager.cpp:787
631 #, c-format
632 msgid "Absorb: %d"
633 msgstr "吸収: %d"
634
635 #: ../../../src/ItemManager.cpp:827 ../../../src/MenuPowers.cpp:1131
636 #: ../../../src/MenuPowers.cpp:1134
637 #, c-format
638 msgid "Requires Level %d"
639 msgstr "レベル %d が必要です"
640
641 #: ../../../src/ItemManager.cpp:838 ../../../src/MenuPowers.cpp:1123
642 #: ../../../src/MenuPowers.cpp:1125
643 #, c-format
644 msgid "Requires %s %d"
645 msgstr "%s %d が必要です"
646
647 #: ../../../src/ItemManager.cpp:849
648 #, c-format
649 msgid "Requires Class: %s"
650 msgstr "必要なクラス: %s"
651
652 #: ../../../src/ItemManager.cpp:864 ../../../src/ItemManager.cpp:876
653 #, c-format
654 msgid "Buy Price: %d %s"
655 msgstr "購入価格: %d %s"
656
657 #: ../../../src/ItemManager.cpp:866 ../../../src/ItemManager.cpp:878
658 #, c-format
659 msgid "Buy Price: %d %s each"
660 msgstr "購入価格: %d %s ひとつあたり"
661
662 #: ../../../src/ItemManager.cpp:886
663 #, c-format
664 msgid "Sell Price: %d %s"
665 msgstr "売却価格: %d %s"
666
667 #: ../../../src/ItemManager.cpp:888
668 #, c-format
669 msgid "Sell Price: %d %s each"
670 msgstr "売却価格: %d %s ひとつあたり"
671
672 #: ../../../src/ItemManager.cpp:897
673 msgid "Set:"
674 msgstr "組合わせ:"
675
676 #: ../../../src/ItemManager.cpp:904
677 #, c-format
678 msgid "%d items:"
679 msgstr "%d アイテム:"
680
681 #: ../../../src/ItemManager.cpp:917
682 #, c-format
683 msgid "Press [%s] to use"
684 msgstr ""
685
686 #: ../../../src/ItemManager.cpp:920
687 #, c-format
688 msgid "Press [%s] to read"
689 msgstr ""
690
691 #: ../../../src/MenuActionBar.cpp:87
692 msgid "Loot tooltip visibility"
693 msgstr ""
694
695 #: ../../../src/MenuActionBar.cpp:88
696 msgid "Mini-map mode"
697 msgstr ""
698
699 #: ../../../src/MenuActionBar.cpp:89
700 msgid "Always show stat bar labels"
701 msgstr ""
702
703 #: ../../../src/MenuActionBar.cpp:90
704 msgid "Show combat text"
705 msgstr "戦闘のテキストを表示"
706
707 #: ../../../src/MenuActionBar.cpp:254 ../../../src/MenuActionBar.cpp:261
708 #: ../../../src/MenuActionBar.cpp:264 ../../../src/MenuActionBar.cpp:271
709 #, c-format
710 msgid "Hotkey: %s"
711 msgstr "ホットキー: %s"
712
713 #: ../../../src/MenuActionBar.cpp:474
714 #, c-format
715 msgid "Default. Temporarily show all loot tooltips with '%s'."
716 msgstr ""
717
718 #: ../../../src/MenuActionBar.cpp:476
719 #, c-format
720 msgid "Show All. Temporarily hide all loot tooltips with '%s'."
721 msgstr ""
722
723 #: ../../../src/MenuActionBar.cpp:478
724 #, c-format
725 msgid "Hide All. Temporarily show all loot tooltips with '%s'."
726 msgstr ""
727
728 #: ../../../src/MenuActionBar.cpp:482
729 msgid "Visible"
730 msgstr ""
731
732 #: ../../../src/MenuActionBar.cpp:484
733 msgid "Visible (2x zoom)"
734 msgstr ""
735
736 #: ../../../src/MenuActionBar.cpp:486
737 msgid "Hidden"
738 msgstr ""
739
740 #: ../../../src/MenuActionBar.cpp:490 ../../../src/MenuActionBar.cpp:496
741 msgid "Enabled"
742 msgstr ""
743
744 #: ../../../src/MenuActionBar.cpp:492 ../../../src/MenuActionBar.cpp:498
745 msgid "Disabled"
746 msgstr ""
747
748 #: ../../../src/MenuActionBar.cpp:657
749 msgid "Not enough MP."
750 msgstr ""
751
752 #: ../../../src/MenuActiveEffects.cpp:124
753 #, c-format
754 msgid "x%d"
755 msgstr ""
756
757 #: ../../../src/MenuActiveEffects.cpp:219
758 msgid "Remaining:"
759 msgstr "残り:"
760
761 #: ../../../src/MenuActiveEffects.cpp:225
762 #, c-format
763 msgid "x%d stacks"
764 msgstr ""
765
766 #: ../../../src/MenuCharacter.cpp:73 ../../../src/MenuCharacter.cpp:78
767 msgid "Name"
768 msgstr "名"
769
770 #: ../../../src/MenuCharacter.cpp:74 ../../../src/MenuCharacter.cpp:79
771 msgid "Level"
772 msgstr "レベル"
773
774 #: ../../../src/MenuCharacter.cpp:310
775 #, c-format
776 msgid "%d unspent stat point"
777 msgstr ""
778
779 #: ../../../src/MenuCharacter.cpp:313
780 #, c-format
781 msgid "%d unspent stat points"
782 msgstr ""
783
784 #: ../../../src/MenuCharacter.cpp:355
785 #, c-format
786 msgid "Reduces the damage taken from \"%s\" elemental attacks."
787 msgstr ""
788
789 #: ../../../src/MenuCharacter.cpp:365 ../../../src/MenuManager.cpp:283
790 #, c-format
791 msgid "XP: %d"
792 msgstr "XP: %d"
793
794 #: ../../../src/MenuCharacter.cpp:367
795 #, c-format
796 msgid "Next: %d"
797 msgstr "次: %d"
798
799 #: ../../../src/MenuCharacter.cpp:373
800 #, c-format
801 msgid "base (%d), bonus (%d)"
802 msgstr "基本 (%d), ボーナス (%d)"
803
804 #: ../../../src/MenuCharacter.cpp:381 ../../../src/MenuCharacter.cpp:395
805 msgid "Related stats:"
806 msgstr "関連する統計:"
807
808 #: ../../../src/MenuCharacter.cpp:421 ../../../src/MenuCharacter.cpp:445
809 #, c-format
810 msgid "Each level grants %d."
811 msgstr "レベルごとに %d が付与されます。"
812
813 #: ../../../src/MenuCharacter.cpp:425 ../../../src/MenuCharacter.cpp:449
814 #, c-format
815 msgid "Each point of %s grants %d."
816 msgstr "%s の各点ごとに %d が付与されます。"
817
818 #: ../../../src/MenuDevConsole.cpp:63
908 #: ../../../src/MenuConfig.cpp:515
909 msgid ""
910 "Enables the below setting that controls the screen gamma level. The behavior"
911 " of the gamma setting can vary between platforms."
912 msgstr ""
913
914 #: ../../../src/MenuConfig.cpp:516
915 msgid ""
916 "Provides additional text for information that is primarily conveyed through "
917 "color."
918 msgstr ""
919
920 #: ../../../src/MenuConfig.cpp:517
921 msgid ""
922 "Some mods will automatically hide the stat bars when they are inactive. "
923 "Disabling this option will keep them displayed at all times."
924 msgstr ""
925
926 #: ../../../src/MenuConfig.cpp:518
927 msgid ""
928 "When enabled, empty equipment slots will be filled with applicable items "
929 "when they are obtained."
930 msgstr ""
931
932 #: ../../../src/MenuConfig.cpp:519
933 msgid ""
934 "Shows a marker above enemies, allies, and the player when they are obscured "
935 "by tall objects."
936 msgstr ""
937
938 #: ../../../src/MenuConfig.cpp:520
939 msgid ""
940 "When enabled, tooltips for equipped items of the same type are shown next to"
941 " standard item tooltips."
942 msgstr ""
943
944 #: ../../../src/MenuConfig.cpp:521
945 msgid ""
946 "This allows the game to be controlled entirely with the keyboard (or "
947 "joystick)."
948 msgstr ""
949
950 #: ../../../src/MenuConfig.cpp:522
951 msgid ""
952 "When 'Move hero using mouse' is enabled, this setting controls if 'Main1' or"
953 " 'Main2' is used to move the hero. If enabled, 'Main2' will move the hero "
954 "instead of 'Main1'."
955 msgstr ""
956
957 #: ../../../src/MenuConfig.cpp:523
958 msgid ""
959 "When 'Move hero using mouse' is enabled, this setting controls if the Power "
960 "assigned to the movement button can be used by targeting an enemy. If this "
961 "setting is disabled, it is required to use 'Shift' to access the Power "
962 "assigned to the movement button."
963 msgstr ""
964
965 #: ../../../src/MenuConfig.cpp:524
966 msgid ""
967 "The player's attacks will be aimed in the direction of the mouse cursor when"
968 " this is enabled."
969 msgstr ""
970
971 #: ../../../src/MenuConfig.cpp:575
972 msgid "Active Mods"
973 msgstr "アクティブモッズ"
974
975 #: ../../../src/MenuConfig.cpp:584
976 msgid "Available Mods"
977 msgstr "利用可能モッズ"
978
979 #: ../../../src/MenuConfig.cpp:603
980 msgid "<< Disable"
981 msgstr "<< 無効"
982
983 #: ../../../src/MenuConfig.cpp:609
984 msgid "Enable >>"
985 msgstr "有効 >>"
986
987 #: ../../../src/MenuConfig.cpp:1444
988 msgid "Version:"
989 msgstr ""
990
991 #: ../../../src/MenuConfig.cpp:1449
992 msgid "Game:"
993 msgstr "ゲーム:"
994
995 #: ../../../src/MenuConfig.cpp:1454
996 msgid "Engine version:"
997 msgstr "必要バージョン:"
998
999 #: ../../../src/MenuConfig.cpp:1462
1000 msgid "Requires mods:"
1001 msgstr "必要モッズ:"
1002
1003 #: ../../../src/MenuConfig.cpp:1570 ../../../src/SDLInputState.cpp:748
1004 msgid "(none)"
1005 msgstr ""
1006
1007 #: ../../../src/MenuConfig.cpp:1587 ../../../src/MenuGameOver.cpp:73
1008 msgid "Save & Exit"
1009 msgstr "セーブ & 終了"
1010
1011 #: ../../../src/MenuDevConsole.cpp:65
8191012 msgid "Execute"
8201013 msgstr "執行"
8211014
822 #: ../../../src/MenuDevConsole.cpp:101 ../../../src/MenuDevConsole.cpp:151
1015 #: ../../../src/MenuDevConsole.cpp:103 ../../../src/MenuDevConsole.cpp:153
8231016 msgid "Developer Console"
8241017 msgstr ""
8251018
826 #: ../../../src/MenuDevConsole.cpp:141
1019 #: ../../../src/MenuDevConsole.cpp:143
8271020 #, c-format
8281021 msgid "Use '%s' to inspect with the cursor."
8291022 msgstr ""
8301023
831 #: ../../../src/MenuDevConsole.cpp:146
1024 #: ../../../src/MenuDevConsole.cpp:148
8321025 msgid "Arguments with spaces should be enclosed with double quotes. Example:"
8331026 msgstr ""
8341027
835 #: ../../../src/MenuDevConsole.cpp:147
1028 #: ../../../src/MenuDevConsole.cpp:149
8361029 msgid "Type 'help' to get a list of commands."
8371030 msgstr ""
8381031
839 #: ../../../src/MenuDevConsole.cpp:209 ../../../src/MenuDevConsole.cpp:213
1032 #: ../../../src/MenuDevConsole.cpp:211 ../../../src/MenuDevConsole.cpp:215
8401033 msgid "px"
8411034 msgstr ""
8421035
843 #: ../../../src/MenuDevConsole.cpp:224
1036 #: ../../../src/MenuDevConsole.cpp:226
8441037 msgid "Distance"
8451038 msgstr ""
8461039
847 #: ../../../src/MenuDevConsole.cpp:239 ../../../src/MenuDevConsole.cpp:286
1040 #: ../../../src/MenuDevConsole.cpp:241 ../../../src/MenuDevConsole.cpp:289
1041 #: ../../../src/MenuDevConsole.cpp:303
8481042 msgid "Entity"
8491043 msgstr ""
8501044
851 #: ../../../src/MenuDevConsole.cpp:261 ../../../src/MenuDevConsole.cpp:268
1045 #: ../../../src/MenuDevConsole.cpp:263 ../../../src/MenuDevConsole.cpp:270
8521046 msgid "none"
8531047 msgstr ""
8541048
855 #: ../../../src/MenuDevConsole.cpp:262 ../../../src/MenuDevConsole.cpp:264
1049 #: ../../../src/MenuDevConsole.cpp:264 ../../../src/MenuDevConsole.cpp:266
8561050 msgid "wall"
8571051 msgstr ""
8581052
859 #: ../../../src/MenuDevConsole.cpp:263 ../../../src/MenuDevConsole.cpp:265
1053 #: ../../../src/MenuDevConsole.cpp:265 ../../../src/MenuDevConsole.cpp:267
8601054 msgid "short wall / pit"
8611055 msgstr ""
8621056
863 #: ../../../src/MenuDevConsole.cpp:266
1057 #: ../../../src/MenuDevConsole.cpp:268
8641058 msgid "entity"
8651059 msgstr ""
8661060
867 #: ../../../src/MenuDevConsole.cpp:267
1061 #: ../../../src/MenuDevConsole.cpp:269
8681062 msgid "entity, ally"
8691063 msgstr ""
8701064
871 #: ../../../src/MenuDevConsole.cpp:274
1065 #: ../../../src/MenuDevConsole.cpp:276
8721066 msgid "Tile"
8731067 msgstr ""
8741068
875 #: ../../../src/MenuDevConsole.cpp:360
1069 #: ../../../src/MenuDevConsole.cpp:377
8761070 msgid "adds a power to the action bar"
8771071 msgstr ""
8781072
879 #: ../../../src/MenuDevConsole.cpp:361
1073 #: ../../../src/MenuDevConsole.cpp:378
8801074 msgid "turns on/off the display of the FPS counter"
8811075 msgstr ""
8821076
883 #: ../../../src/MenuDevConsole.cpp:362
1077 #: ../../../src/MenuDevConsole.cpp:379
8841078 msgid "turns on/off all of the HUD elements"
8851079 msgstr ""
8861080
887 #: ../../../src/MenuDevConsole.cpp:363
1081 #: ../../../src/MenuDevConsole.cpp:380
8881082 msgid "turns on/off the developer hud"
8891083 msgstr ""
8901084
891 #: ../../../src/MenuDevConsole.cpp:364
1085 #: ../../../src/MenuDevConsole.cpp:381
8921086 msgid ""
8931087 "Prints a list of powers that match a search term. No search term will list "
8941088 "all items"
8951089 msgstr ""
8961090
897 #: ../../../src/MenuDevConsole.cpp:365
1091 #: ../../../src/MenuDevConsole.cpp:382
8981092 msgid "Prints out all the map filenames located in the \"maps/\" directory."
8991093 msgstr ""
9001094
901 #: ../../../src/MenuDevConsole.cpp:366
1095 #: ../../../src/MenuDevConsole.cpp:383
9021096 msgid ""
9031097 "Prints out the active campaign statuses that match a search term. No search "
9041098 "term will list all active statuses"
9051099 msgstr ""
9061100
907 #: ../../../src/MenuDevConsole.cpp:367
1101 #: ../../../src/MenuDevConsole.cpp:384
9081102 msgid ""
9091103 "Prints a list of items that match a search term. No search term will list "
9101104 "all items"
9111105 msgstr ""
9121106
913 #: ../../../src/MenuDevConsole.cpp:368
1107 #: ../../../src/MenuDevConsole.cpp:385
9141108 msgid ""
9151109 "parses a series of event components and executes them as a single event"
9161110 msgstr ""
9171111
918 #: ../../../src/MenuDevConsole.cpp:369
1112 #: ../../../src/MenuDevConsole.cpp:386
9191113 msgid "clears the command history"
9201114 msgstr ""
9211115
922 #: ../../../src/MenuDevConsole.cpp:370
1116 #: ../../../src/MenuDevConsole.cpp:387
9231117 msgid "displays this text"
9241118 msgstr ""
9251119
926 #: ../../../src/MenuDevConsole.cpp:377
1120 #: ../../../src/MenuDevConsole.cpp:394
9271121 msgid "Toggled the developer hud"
9281122 msgstr ""
9291123
930 #: ../../../src/MenuDevConsole.cpp:381
1124 #: ../../../src/MenuDevConsole.cpp:398
9311125 msgid "Toggled the hud"
9321126 msgstr ""
9331127
934 #: ../../../src/MenuDevConsole.cpp:385
1128 #: ../../../src/MenuDevConsole.cpp:402
9351129 msgid "Toggled the FPS counter"
9361130 msgstr ""
9371131
938 #: ../../../src/MenuDevConsole.cpp:534
1132 #: ../../../src/MenuDevConsole.cpp:552
9391133 msgid "ERROR: Incorrect number of arguments"
9401134 msgstr ""
9411135
942 #: ../../../src/MenuDevConsole.cpp:536 ../../../src/MenuDevConsole.cpp:564
1136 #: ../../../src/MenuDevConsole.cpp:554 ../../../src/MenuDevConsole.cpp:582
9431137 msgid "HINT:"
9441138 msgstr ""
9451139
946 #: ../../../src/MenuDevConsole.cpp:536
1140 #: ../../../src/MenuDevConsole.cpp:554
9471141 msgid "<id>"
9481142 msgstr ""
9491143
950 #: ../../../src/MenuDevConsole.cpp:552
1144 #: ../../../src/MenuDevConsole.cpp:570
9511145 #, c-format
9521146 msgid "ERROR: '%s' is not a valid event key"
9531147 msgstr ""
9541148
955 #: ../../../src/MenuDevConsole.cpp:562
1149 #: ../../../src/MenuDevConsole.cpp:580
9561150 msgid "ERROR: Too few arguments"
9571151 msgstr ""
9581152
959 #: ../../../src/MenuDevConsole.cpp:564
1153 #: ../../../src/MenuDevConsole.cpp:582
9601154 msgid "<key>=<val> <key>=<val> ..."
9611155 msgstr ""
9621156
963 #: ../../../src/MenuDevConsole.cpp:569
1157 #: ../../../src/MenuDevConsole.cpp:587
9641158 msgid "ERROR: Unknown command"
9651159 msgstr ""
9661160
967 #: ../../../src/MenuDevConsole.cpp:571
1161 #: ../../../src/MenuDevConsole.cpp:589
9681162 msgid "HINT: Type help"
9691163 msgstr ""
9701164
971 #: ../../../src/MenuEnemy.cpp:138
1165 #: ../../../src/MenuEnemy.cpp:162
9721166 #, c-format
9731167 msgid "%s level %d"
9741168 msgstr "%s レベル %d"
9751169
976 #: ../../../src/MenuEnemy.cpp:162
1170 #: ../../../src/MenuEnemy.cpp:186
9771171 msgid "Dead"
9781172 msgstr "死亡"
9791173
980 #: ../../../src/MenuEnemy.cpp:164
1174 #: ../../../src/MenuEnemy.cpp:188
9811175 msgid "Destroyed"
982 msgstr ""
983
984 #: ../../../src/MenuExit.cpp:85 ../../../src/MenuExit.cpp:139
985 msgid "Paused"
986 msgstr "ポーズ"
987
988 #: ../../../src/MenuExit.cpp:91
989 msgid "Save & Exit"
990 msgstr "セーブ & 終了"
991
992 #: ../../../src/MenuExit.cpp:92
993 msgid "Exit"
994 msgstr "終了"
995
996 #: ../../../src/MenuExit.cpp:96
997 msgid "Continue"
998 msgstr "続行"
999
1000 #: ../../../src/MenuInventory.cpp:73
1001 msgid "Automatically equip items"
1002 msgstr ""
1003
1004 #: ../../../src/MenuInventory.cpp:188
1176 msgstr "破壊ずみ"
1177
1178 #: ../../../src/MenuGameOver.cpp:69
1179 msgid "Game Over"
1180 msgstr ""
1181
1182 #: ../../../src/MenuInventory.cpp:178
10051183 #, c-format
10061184 msgid "Lost %d%% of %s."
10071185 msgstr "%s を %d%% 失った。"
10081186
1009 #: ../../../src/MenuInventory.cpp:195
1187 #: ../../../src/MenuInventory.cpp:185
10101188 #, c-format
10111189 msgid "Lost %d%% of total XP."
10121190 msgstr "合計XPを %d%% 失った。"
10131191
1014 #: ../../../src/MenuInventory.cpp:200
1192 #: ../../../src/MenuInventory.cpp:190
10151193 #, c-format
10161194 msgid "Lost %d%% of current level XP."
10171195 msgstr "現在レベルXPを %d%% 失った。"
10181196
1019 #: ../../../src/MenuInventory.cpp:226
1197 #: ../../../src/MenuInventory.cpp:216
10201198 #, c-format
10211199 msgid "Lost %s."
10221200 msgstr "%s を失った。"
10231201
1024 #: ../../../src/MenuInventory.cpp:274 ../../../src/MenuStash.cpp:146
1202 #: ../../../src/MenuInventory.cpp:258 ../../../src/MenuStash.cpp:276
10251203 #, c-format
10261204 msgid "%d %s"
10271205 msgstr "%d %s"
10281206
1029 #: ../../../src/MenuInventory.cpp:317
1207 #: ../../../src/MenuInventory.cpp:301
10301208 msgid "Pick up item(s):"
10311209 msgstr ""
10321210
1033 #: ../../../src/MenuInventory.cpp:318
1211 #: ../../../src/MenuInventory.cpp:302
10341212 msgid "Use or equip item:"
10351213 msgstr "使用または装備 (アイテム):"
10361214
1037 #: ../../../src/MenuInventory.cpp:319
1215 #: ../../../src/MenuInventory.cpp:303
10381216 #, c-format
10391217 msgid "%s modifiers"
10401218 msgstr ""
10411219
1042 #: ../../../src/MenuInventory.cpp:320
1220 #: ../../../src/MenuInventory.cpp:304
10431221 msgid "Select a quantity of item:"
10441222 msgstr "アイテム量の選択"
10451223
1046 #: ../../../src/MenuInventory.cpp:323
1224 #: ../../../src/MenuInventory.cpp:307
10471225 msgid "Stash item stack:"
10481226 msgstr "各アイテムのスタッシュ:"
10491227
1050 #: ../../../src/MenuInventory.cpp:325
1228 #: ../../../src/MenuInventory.cpp:309
10511229 msgid "Sell item stack:"
10521230 msgstr "各アイテムの売買:"
10531231
1054 #: ../../../src/MenuInventory.cpp:592
1232 #: ../../../src/MenuInventory.cpp:576
10551233 msgid "You don't have enough of the required item."
10561234 msgstr "必要なアイテムが充分ではない。"
10571235
1058 #: ../../../src/MenuInventory.cpp:599
1236 #: ../../../src/MenuInventory.cpp:588
10591237 msgid "You can't use this item right now."
10601238 msgstr ""
10611239
1062 #: ../../../src/MenuInventory.cpp:611
1240 #: ../../../src/MenuInventory.cpp:600
10631241 msgid "This item can only be used from the action bar."
10641242 msgstr "この項目は、アクションバーだけから使用することができます。"
10651243
1066 #: ../../../src/MenuInventory.cpp:729
1244 #: ../../../src/MenuInventory.cpp:718
10671245 msgid "Inventory is full."
10681246 msgstr "物品は満杯です。"
10691247
1070 #: ../../../src/MenuInventory.cpp:849
1248 #: ../../../src/MenuInventory.cpp:843
10711249 #, c-format
10721250 msgid "Not enough %s."
10731251 msgstr "%s が足りない。"
10741252
1075 #: ../../../src/MenuInventory.cpp:869 ../../../src/MenuInventory.cpp:876
1253 #: ../../../src/MenuInventory.cpp:863 ../../../src/MenuInventory.cpp:870
10761254 msgid "This item can not be sold."
10771255 msgstr "このアイテムは売れない。"
10781256
10841262 msgid "Quests"
10851263 msgstr "クエスト"
10861264
1087 #: ../../../src/MenuManager.cpp:286
1265 #: ../../../src/MenuManager.cpp:305
10881266 #, c-format
10891267 msgid "XP: %d/%d"
10901268 msgstr "XP: %d/%d"
10911269
1092 #: ../../../src/MenuManager.cpp:827
1270 #: ../../../src/MenuManager.cpp:875
10931271 msgid "This item can not be dropped."
10941272 msgstr "このアイテムを すてることは、できない。"
1273
1274 #: ../../../src/MenuManager.cpp:1501
1275 msgid "Equipped"
1276 msgstr ""
1277
1278 #: ../../../src/MenuMovementType.cpp:87
1279 msgid "Select a Movement Type"
1280 msgstr ""
1281
1282 #: ../../../src/MenuMovementType.cpp:89
1283 msgid "Can be changed later in the Configuration menu."
1284 msgstr ""
1285
1286 #: ../../../src/MenuMovementType.cpp:92 ../../../src/MenuMovementType.cpp:122
1287 msgid "Keyboard"
1288 msgstr ""
1289
1290 #: ../../../src/MenuMovementType.cpp:93 ../../../src/MenuMovementType.cpp:128
1291 msgid "Mouse"
1292 msgstr ""
1293
1294 #: ../../../src/MenuMovementType.cpp:129
1295 msgid "Button"
1296 msgstr ""
10951297
10961298 #: ../../../src/MenuNumPicker.cpp:59
10971299 msgid "Enter amount:"
10981300 msgstr "量の入力:"
10991301
1100 #: ../../../src/MenuPowers.cpp:787
1302 #: ../../../src/MenuPowers.cpp:872
11011303 msgid "Passive"
11021304 msgstr "パッシブ スキル"
11031305
1104 #: ../../../src/MenuPowers.cpp:792
1306 #: ../../../src/MenuPowers.cpp:879
11051307 #, c-format
11061308 msgid "Costs %d MP"
11071309 msgstr "費用は %d MP"
11081310
1109 #: ../../../src/MenuPowers.cpp:796
1311 #: ../../../src/MenuPowers.cpp:883
11101312 #, c-format
11111313 msgid "Costs %d HP"
11121314 msgstr "費用は %d HP"
11131315
1114 #: ../../../src/MenuPowers.cpp:801
1316 #: ../../../src/MenuPowers.cpp:887
11151317 msgid "Cooldown:"
11161318 msgstr "クールダウン:"
11171319
1118 #: ../../../src/MenuPowers.cpp:866 ../../../src/MenuPowers.cpp:869
1320 #: ../../../src/MenuPowers.cpp:938 ../../../src/MenuPowers.cpp:941
11191321 msgid "Damage per second"
11201322 msgstr "ダメージ毎秒"
11211323
1122 #: ../../../src/MenuPowers.cpp:872 ../../../src/MenuPowers.cpp:875
1324 #: ../../../src/MenuPowers.cpp:944 ../../../src/MenuPowers.cpp:947
11231325 msgid "HP per second"
11241326 msgstr "HP毎秒"
11251327
1126 #: ../../../src/MenuPowers.cpp:878 ../../../src/MenuPowers.cpp:881
1328 #: ../../../src/MenuPowers.cpp:950 ../../../src/MenuPowers.cpp:953
11271329 msgid "MP per second"
11281330 msgstr "MP毎秒"
11291331
1130 #: ../../../src/MenuPowers.cpp:885
1332 #: ../../../src/MenuPowers.cpp:957
11311333 msgid "Immobilize"
11321334 msgstr "動けなくする"
11331335
1134 #: ../../../src/MenuPowers.cpp:893
1336 #: ../../../src/MenuPowers.cpp:965
11351337 msgid "Immunity"
11361338 msgstr "まぬがれ"
11371339
1138 #: ../../../src/MenuPowers.cpp:896
1340 #: ../../../src/MenuPowers.cpp:968
11391341 msgid "Immunity to damage over time"
11401342 msgstr ""
11411343
1142 #: ../../../src/MenuPowers.cpp:899
1344 #: ../../../src/MenuPowers.cpp:971
11431345 msgid "Immunity to slow"
11441346 msgstr ""
11451347
1146 #: ../../../src/MenuPowers.cpp:902
1348 #: ../../../src/MenuPowers.cpp:974
11471349 msgid "Immunity to stun"
11481350 msgstr ""
11491351
1150 #: ../../../src/MenuPowers.cpp:905
1352 #: ../../../src/MenuPowers.cpp:977
11511353 msgid "Immunity to HP steal"
11521354 msgstr ""
11531355
1154 #: ../../../src/MenuPowers.cpp:908
1356 #: ../../../src/MenuPowers.cpp:980
11551357 msgid "Immunity to MP steal"
11561358 msgstr ""
11571359
1158 #: ../../../src/MenuPowers.cpp:911
1360 #: ../../../src/MenuPowers.cpp:983
11591361 msgid "Immunity to knockback"
11601362 msgstr ""
11611363
1162 #: ../../../src/MenuPowers.cpp:914
1364 #: ../../../src/MenuPowers.cpp:986
11631365 msgid "Immunity to damage reflection"
11641366 msgstr ""
11651367
1166 #: ../../../src/MenuPowers.cpp:917
1368 #: ../../../src/MenuPowers.cpp:992
11671369 msgid "Stun"
11681370 msgstr "スタン"
11691371
1170 #: ../../../src/MenuPowers.cpp:920
1372 #: ../../../src/MenuPowers.cpp:995
11711373 msgid "Automatic revive on death"
11721374 msgstr "死からの自動復帰"
11731375
1174 #: ../../../src/MenuPowers.cpp:923
1376 #: ../../../src/MenuPowers.cpp:998
11751377 msgid "Convert"
11761378 msgstr ""
11771379
1178 #: ../../../src/MenuPowers.cpp:926
1380 #: ../../../src/MenuPowers.cpp:1001
11791381 msgid "Fear"
11801382 msgstr ""
11811383
1182 #: ../../../src/MenuPowers.cpp:929
1384 #: ../../../src/MenuPowers.cpp:1004
11831385 msgid "Lifespan"
11841386 msgstr ""
11851387
1186 #: ../../../src/MenuPowers.cpp:953
1388 #: ../../../src/MenuPowers.cpp:1028
11871389 msgid "Magical Shield"
11881390 msgstr "魔法シールド"
11891391
1190 #: ../../../src/MenuPowers.cpp:982
1392 #: ../../../src/MenuPowers.cpp:1057
11911393 msgid "Healing"
11921394 msgstr "ヒーリング"
11931395
1194 #: ../../../src/MenuPowers.cpp:985
1396 #: ../../../src/MenuPowers.cpp:1060
11951397 msgid "Knockback"
11961398 msgstr "はね返し"
11971399
1198 #: ../../../src/MenuPowers.cpp:1010
1400 #: ../../../src/MenuPowers.cpp:1084
11991401 #, c-format
12001402 msgid "%d%% chance"
12011403 msgstr ""
12021404
1203 #: ../../../src/MenuPowers.cpp:1062
1405 #: ../../../src/MenuPowers.cpp:1136
12041406 msgid "Base Accuracy"
12051407 msgstr "ベース精度"
12061408
1207 #: ../../../src/MenuPowers.cpp:1082
1409 #: ../../../src/MenuPowers.cpp:1156
12081410 msgid "Base Critical Chance"
12091411 msgstr "ベースのクリティカル機会"
12101412
1211 #: ../../../src/MenuPowers.cpp:1090
1413 #: ../../../src/MenuPowers.cpp:1164
12121414 msgid "Ignores Absorbtion"
12131415 msgstr "吸収を無視"
12141416
1215 #: ../../../src/MenuPowers.cpp:1095
1417 #: ../../../src/MenuPowers.cpp:1169
12161418 msgid "Ignores Avoidance"
12171419 msgstr "回避を無視"
12181420
1219 #: ../../../src/MenuPowers.cpp:1100
1421 #: ../../../src/MenuPowers.cpp:1174
12201422 #, c-format
12211423 msgid "%d%% Chance to crit slowed targets"
12221424 msgstr ""
12231425
1224 #: ../../../src/MenuPowers.cpp:1105
1426 #: ../../../src/MenuPowers.cpp:1179
12251427 #, c-format
12261428 msgid "Elemental Damage (%s)"
12271429 msgstr ""
12281430
1229 #: ../../../src/MenuPowers.cpp:1114
1431 #: ../../../src/MenuPowers.cpp:1188
12301432 #, c-format
12311433 msgid "Requires a %s"
12321434 msgstr "%s が必要です"
12331435
1234 #: ../../../src/MenuPowers.cpp:1151 ../../../src/MenuPowers.cpp:1154
1436 #: ../../../src/MenuPowers.cpp:1226 ../../../src/MenuPowers.cpp:1229
12351437 #, c-format
12361438 msgid "Requires Power: %s"
12371439 msgstr "必要な能力: %s"
12381440
1239 #: ../../../src/MenuPowers.cpp:1163
1441 #: ../../../src/MenuPowers.cpp:1238
12401442 msgid "Click to Unlock (uses 1 Skill Point)"
12411443 msgstr "クリックすると解放(スキルポイントを1消費)"
12421444
1243 #: ../../../src/MenuPowers.cpp:1167 ../../../src/MenuPowers.cpp:1169
1445 #: ../../../src/MenuPowers.cpp:1242 ../../../src/MenuPowers.cpp:1244
12441446 msgid "Requires 1 Skill Point"
12451447 msgstr "スキルポイント 1 個が 必要です"
12461448
1247 #: ../../../src/MenuPowers.cpp:1355
1248 #, c-format
1249 msgid "%d unspent skill point"
1250 msgstr ""
1251
1252 #: ../../../src/MenuPowers.cpp:1358
1253 #, c-format
1254 msgid "%d unspent skill points"
1255 msgstr ""
1256
1257 #: ../../../src/MenuPowers.cpp:1388
1449 #: ../../../src/MenuPowers.cpp:1444
1450 #, c-format
1451 msgid "Available skill points: %d"
1452 msgstr ""
1453
1454 #: ../../../src/MenuPowers.cpp:1476
12581455 msgid "Next Level:"
12591456 msgstr "次のレベル:"
12601457
1261 #: ../../../src/MenuStash.cpp:96
1262 msgid "Shared Stash"
1263 msgstr "共有スタッシュ"
1264
1265 #: ../../../src/MenuStash.cpp:209
1266 msgid "Can not store quest items in the stash."
1267 msgstr "クエスト品はスタッシュには保管できない。"
1268
1269 #: ../../../src/MenuStash.cpp:219
1458 #: ../../../src/MenuStash.cpp:80 ../../../src/MenuStash.cpp:161
1459 msgid "Stash"
1460 msgstr ""
1461
1462 #: ../../../src/MenuStash.cpp:174 ../../../src/MenuStash.cpp:188
1463 msgid "Private"
1464 msgstr ""
1465
1466 #: ../../../src/MenuStash.cpp:175
1467 msgid "Shared"
1468 msgstr ""
1469
1470 #: ../../../src/MenuStash.cpp:340
1471 msgid "This item can not be stored in the stash."
1472 msgstr ""
1473
1474 #: ../../../src/MenuStash.cpp:345
1475 msgid "This item can not be stored in the private stash."
1476 msgstr ""
1477
1478 #: ../../../src/MenuStash.cpp:350
1479 msgid "This item can not be stored in the shared stash."
1480 msgstr ""
1481
1482 #: ../../../src/MenuStash.cpp:360
12701483 msgid "Stash is full."
12711484 msgstr "スタッシュは満杯です。"
12721485
1273 #: ../../../src/MenuTalker.cpp:454
1486 #: ../../../src/MenuStash.cpp:414
1487 #, c-format
1488 msgid "Can not store item in stash: %s"
1489 msgstr ""
1490
1491 #: ../../../src/MenuTalker.cpp:448
1492 #, c-format
1493 msgid "<dialog node %d>"
1494 msgstr ""
1495
1496 #: ../../../src/MenuTalker.cpp:456
12741497 msgid "Trade"
12751498 msgstr "売買"
12761499
1277 #: ../../../src/MenuVendor.cpp:58
1500 #: ../../../src/MenuVendor.cpp:60
12781501 msgid "Buyback"
12791502 msgstr "買い戻し"
12801503
1281 #: ../../../src/MenuVendor.cpp:279
1504 #: ../../../src/MenuVendor.cpp:283
12821505 msgid "Vendor"
12831506 msgstr "売り手"
12841507
1285 #: ../../../src/PowerManager.cpp:1136
1508 #: ../../../src/PowerManager.cpp:1208
12861509 #, c-format
12871510 msgid "+%d Shield"
12881511 msgstr "+%d シールド"
12891512
1290 #: ../../../src/PowerManager.cpp:1392
1513 #: ../../../src/PowerManager.cpp:1465
12911514 msgid "You are already transformed, untransform first."
12921515 msgstr ""
12931516
1294 #: ../../../src/PowerManager.cpp:1404
1517 #: ../../../src/PowerManager.cpp:1477
12951518 msgid "Could not untransform at this position."
12961519 msgstr "この位置では、変身をとくことは、できない。"
12971520
12981521 #: ../../../src/QuestLog.cpp:234
12991522 msgid "Completed Quests"
1300 msgstr ""
1301
1302 #: ../../../src/SaveLoad.cpp:243 ../../../src/SaveLoad.cpp:244
1523 msgstr "完了したクエスト"
1524
1525 #: ../../../src/SaveLoad.cpp:250 ../../../src/SaveLoad.cpp:251
13031526 msgid "Game saved."
13041527 msgstr "ゲームをセーブしました。"
13051528
1306 #: ../../../src/SDLInputState.cpp:582
1529 #: ../../../src/SDLInputState.cpp:643
1530 msgid "BkSp"
1531 msgstr ""
1532
1533 #: ../../../src/SDLInputState.cpp:644
1534 msgid "Caps"
1535 msgstr ""
1536
1537 #: ../../../src/SDLInputState.cpp:645
1538 msgid "Del"
1539 msgstr ""
1540
1541 #: ../../../src/SDLInputState.cpp:647 ../../../src/SDLInputState.cpp:677
1542 msgid "End"
1543 msgstr ""
1544
1545 #: ../../../src/SDLInputState.cpp:648
1546 msgid "Esc"
1547 msgstr ""
1548
1549 #: ../../../src/SDLInputState.cpp:649 ../../../src/SDLInputState.cpp:679
1550 msgid "Home"
1551 msgstr ""
1552
1553 #: ../../../src/SDLInputState.cpp:650
1554 msgid "Ins"
1555 msgstr ""
1556
1557 #: ../../../src/SDLInputState.cpp:651
1558 msgid "LAlt"
1559 msgstr ""
1560
1561 #: ../../../src/SDLInputState.cpp:652
1562 msgid "LCtrl"
1563 msgstr ""
1564
1565 #: ../../../src/SDLInputState.cpp:654
1566 msgid "LShft"
1567 msgstr ""
1568
1569 #: ../../../src/SDLInputState.cpp:655
1570 msgid "Num"
1571 msgstr ""
1572
1573 #: ../../../src/SDLInputState.cpp:656
1574 msgid "PgDn"
1575 msgstr ""
1576
1577 #: ../../../src/SDLInputState.cpp:657
1578 msgid "PgUp"
1579 msgstr ""
1580
1581 #: ../../../src/SDLInputState.cpp:658 ../../../src/SDLInputState.cpp:688
1582 msgid "Pause"
1583 msgstr ""
1584
1585 #: ../../../src/SDLInputState.cpp:659
1586 msgid "Print"
1587 msgstr ""
1588
1589 #: ../../../src/SDLInputState.cpp:660
1590 msgid "RAlt"
1591 msgstr ""
1592
1593 #: ../../../src/SDLInputState.cpp:661
1594 msgid "RCtrl"
1595 msgstr ""
1596
1597 #: ../../../src/SDLInputState.cpp:662
1598 msgid "Ret"
1599 msgstr ""
1600
1601 #: ../../../src/SDLInputState.cpp:664
1602 msgid "RShft"
1603 msgstr ""
1604
1605 #: ../../../src/SDLInputState.cpp:665
1606 msgid "SLock"
1607 msgstr ""
1608
1609 #: ../../../src/SDLInputState.cpp:666
1610 msgid "Spc"
1611 msgstr ""
1612
1613 #: ../../../src/SDLInputState.cpp:667 ../../../src/SDLInputState.cpp:697
1614 msgid "Tab"
1615 msgstr ""
1616
1617 #: ../../../src/SDLInputState.cpp:673
13071618 msgid "Backspace"
13081619 msgstr ""
13091620
1310 #: ../../../src/SDLInputState.cpp:583
1621 #: ../../../src/SDLInputState.cpp:674
13111622 msgid "CapsLock"
13121623 msgstr ""
13131624
1314 #: ../../../src/SDLInputState.cpp:586
1315 msgid "End"
1316 msgstr ""
1317
1318 #: ../../../src/SDLInputState.cpp:587
1625 #: ../../../src/SDLInputState.cpp:678
13191626 msgid "Escape"
13201627 msgstr ""
13211628
1322 #: ../../../src/SDLInputState.cpp:588
1323 msgid "Home"
1324 msgstr ""
1325
1326 #: ../../../src/SDLInputState.cpp:589
1629 #: ../../../src/SDLInputState.cpp:680
13271630 msgid "Insert"
13281631 msgstr ""
13291632
1330 #: ../../../src/SDLInputState.cpp:590
1633 #: ../../../src/SDLInputState.cpp:681
13311634 msgid "Left Alt"
13321635 msgstr ""
13331636
1334 #: ../../../src/SDLInputState.cpp:591
1637 #: ../../../src/SDLInputState.cpp:682
13351638 msgid "Left Ctrl"
13361639 msgstr ""
13371640
1338 #: ../../../src/SDLInputState.cpp:593
1641 #: ../../../src/SDLInputState.cpp:684
13391642 msgid "Left Shift"
13401643 msgstr ""
13411644
1342 #: ../../../src/SDLInputState.cpp:594
1645 #: ../../../src/SDLInputState.cpp:685
13431646 msgid "NumLock"
13441647 msgstr ""
13451648
1346 #: ../../../src/SDLInputState.cpp:595
1649 #: ../../../src/SDLInputState.cpp:686
13471650 msgid "PageDown"
13481651 msgstr ""
13491652
1350 #: ../../../src/SDLInputState.cpp:596
1653 #: ../../../src/SDLInputState.cpp:687
13511654 msgid "PageUp"
13521655 msgstr ""
13531656
1354 #: ../../../src/SDLInputState.cpp:597
1355 msgid "Pause"
1356 msgstr ""
1357
1358 #: ../../../src/SDLInputState.cpp:598
1657 #: ../../../src/SDLInputState.cpp:689
13591658 msgid "PrintScreen"
13601659 msgstr ""
13611660
1362 #: ../../../src/SDLInputState.cpp:599
1661 #: ../../../src/SDLInputState.cpp:690
13631662 msgid "Right Alt"
13641663 msgstr ""
13651664
1366 #: ../../../src/SDLInputState.cpp:600
1665 #: ../../../src/SDLInputState.cpp:691
13671666 msgid "Right Ctrl"
13681667 msgstr ""
13691668
1370 #: ../../../src/SDLInputState.cpp:601
1669 #: ../../../src/SDLInputState.cpp:692
13711670 msgid "Return"
13721671 msgstr ""
13731672
1374 #: ../../../src/SDLInputState.cpp:603
1673 #: ../../../src/SDLInputState.cpp:694
13751674 msgid "Right Shift"
13761675 msgstr ""
13771676
1378 #: ../../../src/SDLInputState.cpp:604
1677 #: ../../../src/SDLInputState.cpp:695
13791678 msgid "ScrollLock"
13801679 msgstr ""
13811680
1382 #: ../../../src/SDLInputState.cpp:605
1681 #: ../../../src/SDLInputState.cpp:696
13831682 msgid "Space"
13841683 msgstr ""
13851684
1386 #: ../../../src/SDLInputState.cpp:606
1387 msgid "Tab"
1388 msgstr ""
1389
1390 #: ../../../src/SDLInputState.cpp:620
1685 #: ../../../src/SDLInputState.cpp:710
1686 #, c-format
1687 msgid "M%d"
1688 msgstr ""
1689
1690 #: ../../../src/SDLInputState.cpp:716
13911691 #, c-format
13921692 msgid "Mouse %d"
13931693 msgstr ""
13941694
1395 #: ../../../src/SDLInputState.cpp:628
1695 #: ../../../src/SDLInputState.cpp:726
1696 #, c-format
1697 msgid "JX%d-"
1698 msgstr ""
1699
1700 #: ../../../src/SDLInputState.cpp:728
13961701 #, c-format
13971702 msgid "Axis %d -"
13981703 msgstr ""
13991704
1400 #: ../../../src/SDLInputState.cpp:630
1705 #: ../../../src/SDLInputState.cpp:732
1706 #, c-format
1707 msgid "JX%d+"
1708 msgstr ""
1709
1710 #: ../../../src/SDLInputState.cpp:734
14011711 #, c-format
14021712 msgid "Axis %d +"
14031713 msgstr ""
14041714
1405 #: ../../../src/SDLInputState.cpp:633
1715 #: ../../../src/SDLInputState.cpp:739
1716 #, c-format
1717 msgid "JB%d"
1718 msgstr ""
1719
1720 #: ../../../src/SDLInputState.cpp:741
14061721 #, c-format
14071722 msgid "Button %d"
14081723 msgstr ""
14091724
1410 #: ../../../src/SDLInputState.cpp:637
1411 msgid "(none)"
1412 msgstr ""
1413
1414 #: ../../../src/SDLInputState.cpp:677
1725 #: ../../../src/SDLInputState.cpp:787
14151726 msgid "Touch control D-Pad"
14161727 msgstr ""
14171728
1418 #: ../../../src/SDLInputState.cpp:701
1729 #: ../../../src/SDLInputState.cpp:810
14191730 msgid "Touch control buttons"
14201731 msgstr ""
14211732
1422 #: ../../../src/SDLInputState.cpp:716
1733 #: ../../../src/SDLInputState.cpp:824
14231734 msgid "Tap"
14241735 msgstr ""
14251736
1426 #: ../../../src/SDLInputState.cpp:760 ../../../src/SDLInputState.cpp:764
1427 #: ../../../src/SDLInputState.cpp:768
1737 #: ../../../src/SDLInputState.cpp:876 ../../../src/SDLInputState.cpp:878
1738 #, c-format
1739 msgid "Can not bind: %s"
1740 msgstr ""
1741
1742 #: ../../../src/SDLInputState.cpp:890 ../../../src/SDLInputState.cpp:894
1743 #: ../../../src/SDLInputState.cpp:898
14281744 #, c-format
14291745 msgid "'%s' is no longer bound to:"
14301746 msgstr ""
14351751
14361752 #: ../../../src/Stats.cpp:39
14371753 msgid "Total amount of HP."
1438 msgstr ""
1754 msgstr "HP の 上限 です。"
14391755
14401756 #: ../../../src/Stats.cpp:43
14411757 msgid "HP Regen"
14511767
14521768 #: ../../../src/Stats.cpp:49
14531769 msgid "Total amount of MP."
1454 msgstr ""
1770 msgstr "MP の 上限 です。"
14551771
14561772 #: ../../../src/Stats.cpp:53
14571773 msgid "MP Regen"
14871803
14881804 #: ../../../src/Stats.cpp:69 ../../../src/Stats.cpp:74
14891805 msgid "Reduces the amount of damage taken."
1490 msgstr ""
1806 msgstr "攻撃を受けたときの ダメージ が どんだけ へるか のポイント"
14911807
14921808 #: ../../../src/Stats.cpp:73
14931809 msgid "Absorb Max"
15831899 msgid "Base MP"
15841900 msgstr "ベースMP"
15851901
1586 #: ../../../src/Utils.cpp:346
1902 #: ../../../src/Utils.cpp:365
15871903 msgid "k"
15881904 msgstr "千"
15891905
1590 #: ../../../src/Utils.cpp:580
1906 #: ../../../src/Utils.cpp:635
15911907 #, c-format
15921908 msgid "%s second"
15931909 msgstr "%s 秒"
15941910
1595 #: ../../../src/Utils.cpp:583
1911 #: ../../../src/Utils.cpp:638
15961912 #, c-format
15971913 msgid "%s seconds"
15981914 msgstr "%s 秒"
0 # SOME DESCRIPTIVE TITLE.
1 # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
2 # This file is distributed under the same license as the PACKAGE package.
3 # FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
4 #
5 # Translators:
6 # bnk159hair <bnk159hair@naver.com>, 2020
7 #
8 #, fuzzy
9 msgid ""
10 msgstr ""
11 "Project-Id-Version: PACKAGE VERSION\n"
12 "Report-Msgid-Bugs-To: \n"
13 "POT-Creation-Date: 2021-05-23 20:34-0400\n"
14 "PO-Revision-Date: 2018-03-28 19:16+0000\n"
15 "Last-Translator: bnk159hair <bnk159hair@naver.com>, 2020\n"
16 "Language-Team: Korean (https://www.transifex.com/flareorg/teams/84925/ko/)\n"
17 "MIME-Version: 1.0\n"
18 "Content-Type: text/plain; charset=UTF-8\n"
19 "Content-Transfer-Encoding: 8bit\n"
20 "Language: ko\n"
21 "Plural-Forms: nplurals=1; plural=0;\n"
22
23 #: ../../../src/Avatar.cpp:391
24 msgid "Your health is low!"
25 msgstr "체력이 낮습니다!"
26
27 #: ../../../src/Avatar.cpp:421
28 #, c-format
29 msgid "Congratulations, you have reached level %d!"
30 msgstr "축하합니다. 레벨이 %d로 올랐습니다!"
31
32 #: ../../../src/Avatar.cpp:423
33 msgid "You may increase one or more attributes through the Character Menu."
34 msgstr "캐릭터 메뉴를 통해 하나 이상의 속성을 증가시킬 수 있습니다."
35
36 #: ../../../src/Avatar.cpp:427
37 msgid "You may unlock one or more abilities through the Powers Menu."
38 msgstr "능력창을 통해서 하나 이상의 능력을 얻을 수 있습니다."
39
40 #: ../../../src/Avatar.cpp:689
41 msgid "You are defeated."
42 msgstr ""
43
44 #: ../../../src/Avatar.cpp:935
45 msgid "Transformation expired. You have been moved back to a safe place."
46 msgstr "변신이 끝났습니다. 안전한 장소로 이동되었습니다."
47
48 #: ../../../src/CampaignManager.cpp:152
49 #, c-format
50 msgid "%d %s removed."
51 msgstr "%d %s 제거되었습니다."
52
53 #: ../../../src/CampaignManager.cpp:171
54 #, c-format
55 msgid "%s x%d removed."
56 msgstr "%s x%d 제거되었습니다."
57
58 #: ../../../src/CampaignManager.cpp:173
59 #, c-format
60 msgid "%s removed."
61 msgstr "%s제거되었습니다. "
62
63 #: ../../../src/CampaignManager.cpp:187
64 #, c-format
65 msgid "You receive %d %s."
66 msgstr ""
67
68 #: ../../../src/CampaignManager.cpp:191
69 #, c-format
70 msgid "You receive %s x%d."
71 msgstr ""
72
73 #: ../../../src/CampaignManager.cpp:193
74 #, c-format
75 msgid "You receive %s."
76 msgstr ""
77
78 #: ../../../src/CampaignManager.cpp:210
79 #, c-format
80 msgid "You receive %d XP."
81 msgstr ""
82
83 #: ../../../src/CampaignManager.cpp:216
84 msgid "HP restored."
85 msgstr "체력이 회복되었습니다."
86
87 #: ../../../src/CampaignManager.cpp:220
88 msgid "MP restored."
89 msgstr "마나가 회복되었습니다."
90
91 #: ../../../src/CampaignManager.cpp:225
92 msgid "HP and MP restored."
93 msgstr "체력과 마나가 회복되었습니다."
94
95 #: ../../../src/CampaignManager.cpp:229
96 msgid "Negative effects removed."
97 msgstr "디버프 효과가 해제되었습니다."
98
99 #: ../../../src/CampaignManager.cpp:235
100 msgid "HP and MP restored, negative effects removed"
101 msgstr "체력과 마나가 회복되고, 디버프 효과가 해제되었습니다."
102
103 #: ../../../src/DeviceList.cpp:56
104 msgid ""
105 "SDL software renderer\n"
106 "\n"
107 "Often slower, but less likely to have issues."
108 msgstr ""
109
110 #: ../../../src/DeviceList.cpp:59
111 msgid ""
112 "SDL hardware renderer\n"
113 "\n"
114 "The default renderer that is often faster than the SDL software renderer."
115 msgstr ""
116
117 #: ../../../src/EngineSettings.cpp:586
118 msgid "Adventurer"
119 msgstr "모험가"
120
121 #: ../../../src/Entity.cpp:527
122 msgid "miss"
123 msgstr ""
124
125 #: ../../../src/Entity.cpp:565 ../../../src/PowerManager.cpp:1224
126 #: ../../../src/StatBlock.cpp:917 ../../../src/StatBlock.cpp:923
127 #, c-format
128 msgid "+%d HP"
129 msgstr ""
130
131 #: ../../../src/Entity.cpp:572 ../../../src/StatBlock.cpp:928
132 #: ../../../src/StatBlock.cpp:934
133 #, c-format
134 msgid "+%d MP"
135 msgstr ""
136
137 #: ../../../src/EventManager.cpp:792
138 msgid "Unknown destination"
139 msgstr "알려지지 않은 장소"
140
141 #: ../../../src/GameState.cpp:37 ../../../src/GameState.cpp:58
142 msgid "Loading..."
143 msgstr "로딩중..."
144
145 #: ../../../src/GameStateLoad.cpp:90 ../../../src/GameStateLoad.cpp:103
146 msgid "Delete Save"
147 msgstr "세이브 삭제"
148
149 #: ../../../src/GameStateLoad.cpp:90
150 msgid "Delete this save?"
151 msgstr "현재 세이브가 삭제되었습니다."
152
153 #: ../../../src/GameStateLoad.cpp:92
154 msgid "Exit to Title"
155 msgstr "타이틀로 나가기"
156
157 #: ../../../src/GameStateLoad.cpp:95
158 msgid "New Game"
159 msgstr "게임 새로 시작하기"
160
161 #: ../../../src/GameStateLoad.cpp:99 ../../../src/GameStateLoad.cpp:607
162 msgid "Choose a Slot"
163 msgstr "슬롯 선택하기"
164
165 #: ../../../src/GameStateLoad.cpp:580 ../../../src/GameStateLoad.cpp:601
166 msgid "Enable a story mod to continue"
167 msgstr "계속하기 위해 스토리 모드 선택"
168
169 #: ../../../src/GameStateLoad.cpp:596
170 msgid "Load Game"
171 msgstr "게임 불러오기"
172
173 #: ../../../src/GameStateLoad.cpp:705
174 msgid "Entering game world..."
175 msgstr "게임 월드로 들어가는 중..."
176
177 #: ../../../src/GameStateLoad.cpp:708
178 msgid "Loading saved game..."
179 msgstr "저장된 게임 불러오는 중..."
180
181 #: ../../../src/GameStateLoad.cpp:741
182 msgid "Invalid save"
183 msgstr "손상된 세이브"
184
185 #: ../../../src/GameStateLoad.cpp:765 ../../../src/ItemManager.cpp:745
186 #: ../../../src/MenuPowers.cpp:860 ../../../src/MenuPowers.cpp:1219
187 #: ../../../src/MenuPowers.cpp:1631
188 #, c-format
189 msgid "Level %d"
190 msgstr ""
191
192 #: ../../../src/GameStateNew.cpp:66 ../../../src/InputState.cpp:416
193 #: ../../../src/MenuConfig.cpp:246
194 msgid "Cancel"
195 msgstr "취소"
196
197 #: ../../../src/GameStateNew.cpp:69
198 msgid "Create"
199 msgstr "생성"
200
201 #: ../../../src/GameStateNew.cpp:77
202 msgid "Randomize"
203 msgstr "랜덤"
204
205 #: ../../../src/GameStateNew.cpp:93
206 msgid "Choose a Portrait"
207 msgstr "프로필 이미지 선택"
208
209 #: ../../../src/GameStateNew.cpp:97
210 msgid "Choose a Name"
211 msgstr "이름 선택"
212
213 #: ../../../src/GameStateNew.cpp:101
214 msgid "Permadeath?"
215 msgstr "부활할 수 없는 죽음?"
216
217 #: ../../../src/GameStateNew.cpp:105
218 msgid "Choose a Class"
219 msgstr "직업을 선택하세요"
220
221 #: ../../../src/GameStateTitle.cpp:107
222 msgid "Play Game"
223 msgstr "게임 플레이"
224
225 #: ../../../src/GameStateTitle.cpp:110
226 msgid "Enable a core mod to continue"
227 msgstr "계속하기 위해 코어 모드 활성화"
228
229 #: ../../../src/GameStateTitle.cpp:114 ../../../src/MenuMiniMap.cpp:152
230 msgid "Configuration"
231 msgstr "설정"
232
233 #: ../../../src/GameStateTitle.cpp:117
234 msgid "Credits"
235 msgstr "개발진"
236
237 #: ../../../src/GameStateTitle.cpp:120
238 msgid "Exit Game"
239 msgstr "게임 나가기"
240
241 #: ../../../src/InputState.cpp:417
242 msgid "Accept"
243 msgstr ""
244
245 #: ../../../src/InputState.cpp:418 ../../../src/MenuMovementType.cpp:123
246 #: ../../../src/MenuMovementType.cpp:132 ../../../src/SDLInputState.cpp:668
247 #: ../../../src/SDLInputState.cpp:698
248 msgid "Up"
249 msgstr ""
250
251 #: ../../../src/InputState.cpp:419 ../../../src/MenuMovementType.cpp:125
252 #: ../../../src/MenuMovementType.cpp:134 ../../../src/SDLInputState.cpp:646
253 #: ../../../src/SDLInputState.cpp:676
254 msgid "Down"
255 msgstr ""
256
257 #: ../../../src/InputState.cpp:420 ../../../src/MenuMovementType.cpp:124
258 #: ../../../src/MenuMovementType.cpp:133 ../../../src/SDLInputState.cpp:653
259 #: ../../../src/SDLInputState.cpp:683
260 msgid "Left"
261 msgstr ""
262
263 #: ../../../src/InputState.cpp:421 ../../../src/MenuMovementType.cpp:126
264 #: ../../../src/MenuMovementType.cpp:135 ../../../src/SDLInputState.cpp:663
265 #: ../../../src/SDLInputState.cpp:693
266 msgid "Right"
267 msgstr ""
268
269 #: ../../../src/InputState.cpp:422
270 msgid "Bar1"
271 msgstr ""
272
273 #: ../../../src/InputState.cpp:423
274 msgid "Bar2"
275 msgstr ""
276
277 #: ../../../src/InputState.cpp:424
278 msgid "Bar3"
279 msgstr ""
280
281 #: ../../../src/InputState.cpp:425
282 msgid "Bar4"
283 msgstr ""
284
285 #: ../../../src/InputState.cpp:426
286 msgid "Bar5"
287 msgstr ""
288
289 #: ../../../src/InputState.cpp:427
290 msgid "Bar6"
291 msgstr ""
292
293 #: ../../../src/InputState.cpp:428
294 msgid "Bar7"
295 msgstr ""
296
297 #: ../../../src/InputState.cpp:429
298 msgid "Bar8"
299 msgstr ""
300
301 #: ../../../src/InputState.cpp:430
302 msgid "Bar9"
303 msgstr ""
304
305 #: ../../../src/InputState.cpp:431
306 msgid "Bar0"
307 msgstr ""
308
309 #: ../../../src/InputState.cpp:432 ../../../src/MenuActionBar.cpp:84
310 #: ../../../src/MenuCharacter.cpp:54
311 msgid "Character"
312 msgstr ""
313
314 #: ../../../src/InputState.cpp:433 ../../../src/MenuActionBar.cpp:85
315 #: ../../../src/MenuInventory.cpp:130 ../../../src/MenuVendor.cpp:59
316 msgid "Inventory"
317 msgstr ""
318
319 #: ../../../src/InputState.cpp:434 ../../../src/MenuActionBar.cpp:86
320 #: ../../../src/MenuPowers.cpp:158
321 msgid "Powers"
322 msgstr ""
323
324 #: ../../../src/InputState.cpp:435 ../../../src/MenuActionBar.cpp:87
325 #: ../../../src/MenuLog.cpp:72
326 msgid "Log"
327 msgstr ""
328
329 #: ../../../src/InputState.cpp:436
330 msgid "Main1"
331 msgstr ""
332
333 #: ../../../src/InputState.cpp:437
334 msgid "Main2"
335 msgstr ""
336
337 #: ../../../src/InputState.cpp:438
338 msgid "Ctrl"
339 msgstr ""
340
341 #: ../../../src/InputState.cpp:439
342 msgid "Shift"
343 msgstr ""
344
345 #: ../../../src/InputState.cpp:440
346 msgid "Alt"
347 msgstr ""
348
349 #: ../../../src/InputState.cpp:441 ../../../src/SDLInputState.cpp:675
350 msgid "Delete"
351 msgstr ""
352
353 #: ../../../src/InputState.cpp:442
354 msgid "ActionBar Accept"
355 msgstr ""
356
357 #: ../../../src/InputState.cpp:443
358 msgid "ActionBar Left"
359 msgstr ""
360
361 #: ../../../src/InputState.cpp:444
362 msgid "ActionBar Right"
363 msgstr ""
364
365 #: ../../../src/InputState.cpp:445
366 msgid "ActionBar Use"
367 msgstr ""
368
369 #: ../../../src/InputState.cpp:446
370 msgid "Developer Menu"
371 msgstr ""
372
373 #: ../../../src/InputState.cpp:448
374 msgid "Left Mouse"
375 msgstr ""
376
377 #: ../../../src/InputState.cpp:449
378 msgid "Middle Mouse"
379 msgstr ""
380
381 #: ../../../src/InputState.cpp:450
382 msgid "Right Mouse"
383 msgstr ""
384
385 #: ../../../src/InputState.cpp:451
386 msgid "Wheel Up"
387 msgstr ""
388
389 #: ../../../src/InputState.cpp:452
390 msgid "Wheel Down"
391 msgstr ""
392
393 #: ../../../src/InputState.cpp:453
394 msgid "Mouse X1"
395 msgstr ""
396
397 #: ../../../src/InputState.cpp:454
398 msgid "Mouse X2"
399 msgstr ""
400
401 #: ../../../src/ItemManager.cpp:475
402 msgid "Unknown Item"
403 msgstr ""
404
405 #: ../../../src/ItemManager.cpp:646 ../../../src/MenuPowers.cpp:959
406 #, c-format
407 msgid "%d%% Speed"
408 msgstr ""
409
410 #: ../../../src/ItemManager.cpp:650 ../../../src/MenuPowers.cpp:962
411 #, c-format
412 msgid "%d%% Attack Speed"
413 msgstr ""
414
415 #: ../../../src/ItemManager.cpp:672 ../../../src/MenuCharacter.cpp:352
416 #: ../../../src/MenuPowers.cpp:931
417 #, c-format
418 msgid "Resistance (%s)"
419 msgstr ""
420
421 #: ../../../src/ItemManager.cpp:682
422 #, c-format
423 msgid "Requires %s"
424 msgstr ""
425
426 #: ../../../src/ItemManager.cpp:731
427 msgid "Quest Item"
428 msgstr ""
429
430 #: ../../../src/ItemManager.cpp:758
431 #, c-format
432 msgid "Quality: %s"
433 msgstr ""
434
435 #: ../../../src/ItemManager.cpp:783
436 #, c-format
437 msgid "Absorb: %d-%d"
438 msgstr ""
439
440 #: ../../../src/ItemManager.cpp:785
441 #, c-format
442 msgid "Absorb: %d"
443 msgstr ""
444
445 #: ../../../src/ItemManager.cpp:825 ../../../src/MenuPowers.cpp:1206
446 #: ../../../src/MenuPowers.cpp:1209
447 #, c-format
448 msgid "Requires Level %d"
449 msgstr ""
450
451 #: ../../../src/ItemManager.cpp:836 ../../../src/MenuPowers.cpp:1198
452 #: ../../../src/MenuPowers.cpp:1200
453 #, c-format
454 msgid "Requires %s %d"
455 msgstr ""
456
457 #: ../../../src/ItemManager.cpp:847
458 #, c-format
459 msgid "Requires Class: %s"
460 msgstr ""
461
462 #: ../../../src/ItemManager.cpp:863 ../../../src/ItemManager.cpp:875
463 #, c-format
464 msgid "Buy Price: %d %s"
465 msgstr ""
466
467 #: ../../../src/ItemManager.cpp:865 ../../../src/ItemManager.cpp:877
468 #, c-format
469 msgid "Buy Price: %d %s each"
470 msgstr ""
471
472 #: ../../../src/ItemManager.cpp:885
473 #, c-format
474 msgid "Sell Price: %d %s"
475 msgstr ""
476
477 #: ../../../src/ItemManager.cpp:887
478 #, c-format
479 msgid "Sell Price: %d %s each"
480 msgstr ""
481
482 #: ../../../src/ItemManager.cpp:896
483 msgid "Set:"
484 msgstr ""
485
486 #: ../../../src/ItemManager.cpp:903
487 #, c-format
488 msgid "%d items:"
489 msgstr ""
490
491 #: ../../../src/ItemManager.cpp:915
492 #, c-format
493 msgid "Press [%s] to read"
494 msgstr ""
495
496 #: ../../../src/ItemManager.cpp:918
497 #, c-format
498 msgid "Press [%s] to use"
499 msgstr ""
500
501 #: ../../../src/MenuActionBar.cpp:239 ../../../src/MenuActionBar.cpp:246
502 #: ../../../src/MenuActionBar.cpp:249 ../../../src/MenuActionBar.cpp:255
503 #, c-format
504 msgid "Hotkey: %s"
505 msgstr ""
506
507 #: ../../../src/MenuActionBar.cpp:621
508 msgid "Not enough MP."
509 msgstr ""
510
511 #: ../../../src/MenuActiveEffects.cpp:124
512 #, c-format
513 msgid "x%d"
514 msgstr ""
515
516 #: ../../../src/MenuActiveEffects.cpp:219
517 msgid "Remaining:"
518 msgstr ""
519
520 #: ../../../src/MenuActiveEffects.cpp:225
521 #, c-format
522 msgid "x%d stacks"
523 msgstr ""
524
525 #: ../../../src/MenuCharacter.cpp:73 ../../../src/MenuCharacter.cpp:78
526 msgid "Name"
527 msgstr ""
528
529 #: ../../../src/MenuCharacter.cpp:74 ../../../src/MenuCharacter.cpp:79
530 msgid "Level"
531 msgstr ""
532
533 #: ../../../src/MenuCharacter.cpp:309
534 #, c-format
535 msgid "Available stat points: %d"
536 msgstr ""
537
538 #: ../../../src/MenuCharacter.cpp:353
539 #, c-format
540 msgid "Reduces the damage taken from \"%s\" elemental attacks."
541 msgstr ""
542
543 #: ../../../src/MenuCharacter.cpp:363 ../../../src/MenuManager.cpp:301
544 #, c-format
545 msgid "XP: %d"
546 msgstr ""
547
548 #: ../../../src/MenuCharacter.cpp:365
549 #, c-format
550 msgid "Next: %d"
551 msgstr ""
552
553 #: ../../../src/MenuCharacter.cpp:371
554 #, c-format
555 msgid "base (%d), bonus (%d)"
556 msgstr ""
557
558 #: ../../../src/MenuCharacter.cpp:379 ../../../src/MenuCharacter.cpp:393
559 msgid "Related stats:"
560 msgstr ""
561
562 #: ../../../src/MenuCharacter.cpp:419 ../../../src/MenuCharacter.cpp:443
563 #, c-format
564 msgid "Each level grants %d."
565 msgstr ""
566
567 #: ../../../src/MenuCharacter.cpp:423 ../../../src/MenuCharacter.cpp:447
568 #, c-format
569 msgid "Each point of %s grants %d."
570 msgstr ""
571
572 #: ../../../src/MenuConfig.cpp:122 ../../../src/MenuConfig.cpp:1171
573 msgid "Clear"
574 msgstr ""
575
576 #: ../../../src/MenuConfig.cpp:122 ../../../src/MenuConfig.cpp:1169
577 msgid "Assign:"
578 msgstr ""
579
580 #: ../../../src/MenuConfig.cpp:123 ../../../src/MenuConfig.cpp:245
581 msgid "Defaults"
582 msgstr ""
583
584 #: ../../../src/MenuConfig.cpp:123
585 msgid "Reset ALL settings?"
586 msgstr ""
587
588 #: ../../../src/MenuConfig.cpp:244 ../../../src/MenuNumPicker.cpp:49
589 msgid "OK"
590 msgstr ""
591
592 #: ../../../src/MenuConfig.cpp:248 ../../../src/MenuGameOver.cpp:72
593 msgid "Continue"
594 msgstr ""
595
596 #: ../../../src/MenuConfig.cpp:250
597 msgid "Save Game"
598 msgstr ""
599
600 #: ../../../src/MenuConfig.cpp:293
601 msgid "Default"
602 msgstr ""
603
604 #: ../../../src/MenuConfig.cpp:293
605 msgid ""
606 "Show all loot tooltips, except for those that would be obscured by the "
607 "player or an enemy. Temporarily show all loot tooltips with 'Alt'."
608 msgstr ""
609
610 #: ../../../src/MenuConfig.cpp:294
611 msgid "Show all"
612 msgstr ""
613
614 #: ../../../src/MenuConfig.cpp:294
615 msgid ""
616 "Always show loot tooltips. Temporarily hide all loot tooltips with 'Alt'."
617 msgstr ""
618
619 #: ../../../src/MenuConfig.cpp:295 ../../../src/MenuConfig.cpp:300
620 msgid "Hidden"
621 msgstr ""
622
623 #: ../../../src/MenuConfig.cpp:295
624 msgid ""
625 "Always hide loot tooltips, except for when a piece of loot is hovered with "
626 "the mouse cursor. Temporarily show all loot tooltips with 'Alt'."
627 msgstr ""
628
629 #: ../../../src/MenuConfig.cpp:298
630 msgid "Visible"
631 msgstr ""
632
633 #: ../../../src/MenuConfig.cpp:299
634 msgid "Visible (2x zoom)"
635 msgstr ""
636
637 #: ../../../src/MenuConfig.cpp:303
638 msgid ""
639 "Controls the type of warning to be activated when the player is below the "
640 "low health threshold."
641 msgstr ""
642
643 #: ../../../src/MenuConfig.cpp:304
644 msgid "- Display a message"
645 msgstr ""
646
647 #: ../../../src/MenuConfig.cpp:305
648 msgid "- Play a sound"
649 msgstr ""
650
651 #: ../../../src/MenuConfig.cpp:306
652 msgid "- Change the cursor"
653 msgstr ""
654
655 #: ../../../src/MenuConfig.cpp:308
656 msgid "Disabled"
657 msgstr ""
658
659 #: ../../../src/MenuConfig.cpp:309
660 msgid "All"
661 msgstr ""
662
663 #: ../../../src/MenuConfig.cpp:310
664 msgid "Message & Cursor"
665 msgstr ""
666
667 #: ../../../src/MenuConfig.cpp:311
668 msgid "Message & Sound"
669 msgstr ""
670
671 #: ../../../src/MenuConfig.cpp:312
672 msgid "Sound & Cursor"
673 msgstr ""
674
675 #: ../../../src/MenuConfig.cpp:313
676 msgid "Message"
677 msgstr ""
678
679 #: ../../../src/MenuConfig.cpp:314
680 msgid "Cursor"
681 msgstr ""
682
683 #: ../../../src/MenuConfig.cpp:315
684 msgid "Sound"
685 msgstr ""
686
687 #: ../../../src/MenuConfig.cpp:321
688 msgid ""
689 "When the player's health drops below the given threshold, the low health "
690 "notifications are triggered if one or more of them is enabled."
691 msgstr ""
692
693 #: ../../../src/MenuConfig.cpp:334 ../../../src/MenuConfig.cpp:1587
694 #: ../../../src/MenuGameOver.cpp:116
695 msgid "Exit"
696 msgstr ""
697
698 #: ../../../src/MenuConfig.cpp:335
699 msgid "Video"
700 msgstr ""
701
702 #: ../../../src/MenuConfig.cpp:336
703 msgid "Audio"
704 msgstr ""
705
706 #: ../../../src/MenuConfig.cpp:337
707 msgid "Interface"
708 msgstr ""
709
710 #: ../../../src/MenuConfig.cpp:338
711 msgid "Input"
712 msgstr ""
713
714 #: ../../../src/MenuConfig.cpp:339
715 msgid "Keybindings"
716 msgstr ""
717
718 #: ../../../src/MenuConfig.cpp:340
719 msgid "Mods"
720 msgstr ""
721
722 #: ../../../src/MenuConfig.cpp:352
723 msgid "Paused"
724 msgstr ""
725
726 #: ../../../src/MenuConfig.cpp:355
727 msgid "Time Played"
728 msgstr ""
729
730 #: ../../../src/MenuConfig.cpp:361
731 msgid "Renderer"
732 msgstr ""
733
734 #: ../../../src/MenuConfig.cpp:362
735 msgid "Full Screen Mode"
736 msgstr ""
737
738 #: ../../../src/MenuConfig.cpp:363
739 msgid "Hardware surfaces"
740 msgstr ""
741
742 #: ../../../src/MenuConfig.cpp:364
743 msgid "V-Sync"
744 msgstr ""
745
746 #: ../../../src/MenuConfig.cpp:365
747 msgid "Texture Filtering"
748 msgstr ""
749
750 #: ../../../src/MenuConfig.cpp:366
751 msgid "DPI scaling"
752 msgstr ""
753
754 #: ../../../src/MenuConfig.cpp:367
755 msgid "Parallax Layers"
756 msgstr ""
757
758 #: ../../../src/MenuConfig.cpp:368
759 msgid "Allow changing gamma"
760 msgstr ""
761
762 #: ../../../src/MenuConfig.cpp:369
763 msgid "Gamma"
764 msgstr ""
765
766 #: ../../../src/MenuConfig.cpp:371
767 msgid "Sound Volume"
768 msgstr ""
769
770 #: ../../../src/MenuConfig.cpp:372
771 msgid "Music Volume"
772 msgstr ""
773
774 #: ../../../src/MenuConfig.cpp:374
775 msgid "Language"
776 msgstr ""
777
778 #: ../../../src/MenuConfig.cpp:375
779 msgid "Show FPS"
780 msgstr ""
781
782 #: ../../../src/MenuConfig.cpp:376
783 msgid "Hardware mouse cursor"
784 msgstr ""
785
786 #: ../../../src/MenuConfig.cpp:377
787 msgid "Colorblind Mode"
788 msgstr ""
789
790 #: ../../../src/MenuConfig.cpp:378
791 msgid "Developer Mode"
792 msgstr ""
793
794 #: ../../../src/MenuConfig.cpp:379
795 msgid "Subtitles"
796 msgstr ""
797
798 #: ../../../src/MenuConfig.cpp:380
799 msgid "Loot tooltip visibility"
800 msgstr ""
801
802 #: ../../../src/MenuConfig.cpp:381
803 msgid "Mini-map mode"
804 msgstr ""
805
806 #: ../../../src/MenuConfig.cpp:382
807 msgid "Always show stat bar labels"
808 msgstr ""
809
810 #: ../../../src/MenuConfig.cpp:383
811 msgid "Allow stat bar auto-hiding"
812 msgstr ""
813
814 #: ../../../src/MenuConfig.cpp:384
815 msgid "Show combat text"
816 msgstr ""
817
818 #: ../../../src/MenuConfig.cpp:385
819 msgid "Automatically equip items"
820 msgstr ""
821
822 #: ../../../src/MenuConfig.cpp:386
823 msgid "Show hidden entity markers"
824 msgstr ""
825
826 #: ../../../src/MenuConfig.cpp:387
827 msgid "Low health notification"
828 msgstr ""
829
830 #: ../../../src/MenuConfig.cpp:388
831 msgid "Low health threshold"
832 msgstr ""
833
834 #: ../../../src/MenuConfig.cpp:389
835 msgid "Show item comparison tooltips"
836 msgstr ""
837
838 #: ../../../src/MenuConfig.cpp:392 ../../../src/MenuMovementType.cpp:94
839 #: ../../../src/MenuMovementType.cpp:131
840 msgid "Joystick"
841 msgstr ""
842
843 #: ../../../src/MenuConfig.cpp:393
844 msgid "Move hero using mouse"
845 msgstr ""
846
847 #: ../../../src/MenuConfig.cpp:394
848 msgid "Mouse aim"
849 msgstr ""
850
851 #: ../../../src/MenuConfig.cpp:395
852 msgid "Do not use mouse"
853 msgstr ""
854
855 #: ../../../src/MenuConfig.cpp:396
856 msgid "Swap mouse movement button"
857 msgstr ""
858
859 #: ../../../src/MenuConfig.cpp:397
860 msgid "Attack with mouse movement"
861 msgstr ""
862
863 #: ../../../src/MenuConfig.cpp:398
864 msgid "Joystick Deadzone"
865 msgstr ""
866
867 #: ../../../src/MenuConfig.cpp:408
868 #, c-format
869 msgid "Primary binding: %s"
870 msgstr ""
871
872 #: ../../../src/MenuConfig.cpp:409
873 #, c-format
874 msgid "Alternate binding: %s"
875 msgstr ""
876
877 #: ../../../src/MenuConfig.cpp:410
878 #, c-format
879 msgid "Joystick binding: %s"
880 msgstr ""
881
882 #: ../../../src/MenuConfig.cpp:511
883 msgid ""
884 "Will try to store surfaces in video memory versus system memory. The effect "
885 "this has on performance depends on the renderer."
886 msgstr ""
887
888 #: ../../../src/MenuConfig.cpp:512
889 msgid ""
890 "Prevents screen tearing. Disable if you experience \"stuttering\" in "
891 "windowed mode or input lag."
892 msgstr ""
893
894 #: ../../../src/MenuConfig.cpp:513
895 msgid ""
896 "When enabled, this uses the screen DPI in addition to the window dimensions "
897 "to scale the rendering resolution. Otherwise, only the window dimensions are"
898 " used."
899 msgstr ""
900
901 #: ../../../src/MenuConfig.cpp:514
902 msgid ""
903 "This enables parallax (non-tile) layers. Disabling this setting can improve "
904 "performance in some cases."
905 msgstr ""
906
907 #: ../../../src/MenuConfig.cpp:515
908 msgid ""
909 "Enables the below setting that controls the screen gamma level. The behavior"
910 " of the gamma setting can vary between platforms."
911 msgstr ""
912
913 #: ../../../src/MenuConfig.cpp:516
914 msgid ""
915 "Provides additional text for information that is primarily conveyed through "
916 "color."
917 msgstr ""
918
919 #: ../../../src/MenuConfig.cpp:517
920 msgid ""
921 "Some mods will automatically hide the stat bars when they are inactive. "
922 "Disabling this option will keep them displayed at all times."
923 msgstr ""
924
925 #: ../../../src/MenuConfig.cpp:518
926 msgid ""
927 "When enabled, empty equipment slots will be filled with applicable items "
928 "when they are obtained."
929 msgstr ""
930
931 #: ../../../src/MenuConfig.cpp:519
932 msgid ""
933 "Shows a marker above enemies, allies, and the player when they are obscured "
934 "by tall objects."
935 msgstr ""
936
937 #: ../../../src/MenuConfig.cpp:520
938 msgid ""
939 "When enabled, tooltips for equipped items of the same type are shown next to"
940 " standard item tooltips."
941 msgstr ""
942
943 #: ../../../src/MenuConfig.cpp:521
944 msgid ""
945 "This allows the game to be controlled entirely with the keyboard (or "
946 "joystick)."
947 msgstr ""
948
949 #: ../../../src/MenuConfig.cpp:522
950 msgid ""
951 "When 'Move hero using mouse' is enabled, this setting controls if 'Main1' or"
952 " 'Main2' is used to move the hero. If enabled, 'Main2' will move the hero "
953 "instead of 'Main1'."
954 msgstr ""
955
956 #: ../../../src/MenuConfig.cpp:523
957 msgid ""
958 "When 'Move hero using mouse' is enabled, this setting controls if the Power "
959 "assigned to the movement button can be used by targeting an enemy. If this "
960 "setting is disabled, it is required to use 'Shift' to access the Power "
961 "assigned to the movement button."
962 msgstr ""
963
964 #: ../../../src/MenuConfig.cpp:524
965 msgid ""
966 "The player's attacks will be aimed in the direction of the mouse cursor when"
967 " this is enabled."
968 msgstr ""
969
970 #: ../../../src/MenuConfig.cpp:575
971 msgid "Active Mods"
972 msgstr ""
973
974 #: ../../../src/MenuConfig.cpp:584
975 msgid "Available Mods"
976 msgstr ""
977
978 #: ../../../src/MenuConfig.cpp:603
979 msgid "<< Disable"
980 msgstr ""
981
982 #: ../../../src/MenuConfig.cpp:609
983 msgid "Enable >>"
984 msgstr ""
985
986 #: ../../../src/MenuConfig.cpp:1444
987 msgid "Version:"
988 msgstr ""
989
990 #: ../../../src/MenuConfig.cpp:1449
991 msgid "Game:"
992 msgstr ""
993
994 #: ../../../src/MenuConfig.cpp:1454
995 msgid "Engine version:"
996 msgstr ""
997
998 #: ../../../src/MenuConfig.cpp:1462
999 msgid "Requires mods:"
1000 msgstr ""
1001
1002 #: ../../../src/MenuConfig.cpp:1570 ../../../src/SDLInputState.cpp:748
1003 msgid "(none)"
1004 msgstr ""
1005
1006 #: ../../../src/MenuConfig.cpp:1587 ../../../src/MenuGameOver.cpp:73
1007 msgid "Save & Exit"
1008 msgstr ""
1009
1010 #: ../../../src/MenuDevConsole.cpp:65
1011 msgid "Execute"
1012 msgstr ""
1013
1014 #: ../../../src/MenuDevConsole.cpp:103 ../../../src/MenuDevConsole.cpp:153
1015 msgid "Developer Console"
1016 msgstr ""
1017
1018 #: ../../../src/MenuDevConsole.cpp:143
1019 #, c-format
1020 msgid "Use '%s' to inspect with the cursor."
1021 msgstr ""
1022
1023 #: ../../../src/MenuDevConsole.cpp:148
1024 msgid "Arguments with spaces should be enclosed with double quotes. Example:"
1025 msgstr ""
1026
1027 #: ../../../src/MenuDevConsole.cpp:149
1028 msgid "Type 'help' to get a list of commands."
1029 msgstr ""
1030
1031 #: ../../../src/MenuDevConsole.cpp:211 ../../../src/MenuDevConsole.cpp:215
1032 msgid "px"
1033 msgstr ""
1034
1035 #: ../../../src/MenuDevConsole.cpp:226
1036 msgid "Distance"
1037 msgstr ""
1038
1039 #: ../../../src/MenuDevConsole.cpp:241 ../../../src/MenuDevConsole.cpp:289
1040 #: ../../../src/MenuDevConsole.cpp:303
1041 msgid "Entity"
1042 msgstr ""
1043
1044 #: ../../../src/MenuDevConsole.cpp:263 ../../../src/MenuDevConsole.cpp:270
1045 msgid "none"
1046 msgstr ""
1047
1048 #: ../../../src/MenuDevConsole.cpp:264 ../../../src/MenuDevConsole.cpp:266
1049 msgid "wall"
1050 msgstr ""
1051
1052 #: ../../../src/MenuDevConsole.cpp:265 ../../../src/MenuDevConsole.cpp:267
1053 msgid "short wall / pit"
1054 msgstr ""
1055
1056 #: ../../../src/MenuDevConsole.cpp:268
1057 msgid "entity"
1058 msgstr ""
1059
1060 #: ../../../src/MenuDevConsole.cpp:269
1061 msgid "entity, ally"
1062 msgstr ""
1063
1064 #: ../../../src/MenuDevConsole.cpp:276
1065 msgid "Tile"
1066 msgstr ""
1067
1068 #: ../../../src/MenuDevConsole.cpp:377
1069 msgid "adds a power to the action bar"
1070 msgstr ""
1071
1072 #: ../../../src/MenuDevConsole.cpp:378
1073 msgid "turns on/off the display of the FPS counter"
1074 msgstr ""
1075
1076 #: ../../../src/MenuDevConsole.cpp:379
1077 msgid "turns on/off all of the HUD elements"
1078 msgstr ""
1079
1080 #: ../../../src/MenuDevConsole.cpp:380
1081 msgid "turns on/off the developer hud"
1082 msgstr ""
1083
1084 #: ../../../src/MenuDevConsole.cpp:381
1085 msgid ""
1086 "Prints a list of powers that match a search term. No search term will list "
1087 "all items"
1088 msgstr ""
1089
1090 #: ../../../src/MenuDevConsole.cpp:382
1091 msgid "Prints out all the map filenames located in the \"maps/\" directory."
1092 msgstr ""
1093
1094 #: ../../../src/MenuDevConsole.cpp:383
1095 msgid ""
1096 "Prints out the active campaign statuses that match a search term. No search "
1097 "term will list all active statuses"
1098 msgstr ""
1099
1100 #: ../../../src/MenuDevConsole.cpp:384
1101 msgid ""
1102 "Prints a list of items that match a search term. No search term will list "
1103 "all items"
1104 msgstr ""
1105
1106 #: ../../../src/MenuDevConsole.cpp:385
1107 msgid ""
1108 "parses a series of event components and executes them as a single event"
1109 msgstr ""
1110
1111 #: ../../../src/MenuDevConsole.cpp:386
1112 msgid "clears the command history"
1113 msgstr ""
1114
1115 #: ../../../src/MenuDevConsole.cpp:387
1116 msgid "displays this text"
1117 msgstr ""
1118
1119 #: ../../../src/MenuDevConsole.cpp:394
1120 msgid "Toggled the developer hud"
1121 msgstr ""
1122
1123 #: ../../../src/MenuDevConsole.cpp:398
1124 msgid "Toggled the hud"
1125 msgstr ""
1126
1127 #: ../../../src/MenuDevConsole.cpp:402
1128 msgid "Toggled the FPS counter"
1129 msgstr ""
1130
1131 #: ../../../src/MenuDevConsole.cpp:552
1132 msgid "ERROR: Incorrect number of arguments"
1133 msgstr ""
1134
1135 #: ../../../src/MenuDevConsole.cpp:554 ../../../src/MenuDevConsole.cpp:582
1136 msgid "HINT:"
1137 msgstr ""
1138
1139 #: ../../../src/MenuDevConsole.cpp:554
1140 msgid "<id>"
1141 msgstr ""
1142
1143 #: ../../../src/MenuDevConsole.cpp:570
1144 #, c-format
1145 msgid "ERROR: '%s' is not a valid event key"
1146 msgstr ""
1147
1148 #: ../../../src/MenuDevConsole.cpp:580
1149 msgid "ERROR: Too few arguments"
1150 msgstr ""
1151
1152 #: ../../../src/MenuDevConsole.cpp:582
1153 msgid "<key>=<val> <key>=<val> ..."
1154 msgstr ""
1155
1156 #: ../../../src/MenuDevConsole.cpp:587
1157 msgid "ERROR: Unknown command"
1158 msgstr ""
1159
1160 #: ../../../src/MenuDevConsole.cpp:589
1161 msgid "HINT: Type help"
1162 msgstr ""
1163
1164 #: ../../../src/MenuEnemy.cpp:162
1165 #, c-format
1166 msgid "%s level %d"
1167 msgstr ""
1168
1169 #: ../../../src/MenuEnemy.cpp:186
1170 msgid "Dead"
1171 msgstr ""
1172
1173 #: ../../../src/MenuEnemy.cpp:188
1174 msgid "Destroyed"
1175 msgstr ""
1176
1177 #: ../../../src/MenuGameOver.cpp:69
1178 msgid "Game Over"
1179 msgstr ""
1180
1181 #: ../../../src/MenuInventory.cpp:178
1182 #, c-format
1183 msgid "Lost %d%% of %s."
1184 msgstr ""
1185
1186 #: ../../../src/MenuInventory.cpp:185
1187 #, c-format
1188 msgid "Lost %d%% of total XP."
1189 msgstr ""
1190
1191 #: ../../../src/MenuInventory.cpp:190
1192 #, c-format
1193 msgid "Lost %d%% of current level XP."
1194 msgstr ""
1195
1196 #: ../../../src/MenuInventory.cpp:216
1197 #, c-format
1198 msgid "Lost %s."
1199 msgstr ""
1200
1201 #: ../../../src/MenuInventory.cpp:258 ../../../src/MenuStash.cpp:276
1202 #, c-format
1203 msgid "%d %s"
1204 msgstr ""
1205
1206 #: ../../../src/MenuInventory.cpp:301
1207 msgid "Pick up item(s):"
1208 msgstr ""
1209
1210 #: ../../../src/MenuInventory.cpp:302
1211 msgid "Use or equip item:"
1212 msgstr ""
1213
1214 #: ../../../src/MenuInventory.cpp:303
1215 #, c-format
1216 msgid "%s modifiers"
1217 msgstr ""
1218
1219 #: ../../../src/MenuInventory.cpp:304
1220 msgid "Select a quantity of item:"
1221 msgstr ""
1222
1223 #: ../../../src/MenuInventory.cpp:307
1224 msgid "Stash item stack:"
1225 msgstr ""
1226
1227 #: ../../../src/MenuInventory.cpp:309
1228 msgid "Sell item stack:"
1229 msgstr ""
1230
1231 #: ../../../src/MenuInventory.cpp:576
1232 msgid "You don't have enough of the required item."
1233 msgstr ""
1234
1235 #: ../../../src/MenuInventory.cpp:588
1236 msgid "You can't use this item right now."
1237 msgstr ""
1238
1239 #: ../../../src/MenuInventory.cpp:600
1240 msgid "This item can only be used from the action bar."
1241 msgstr ""
1242
1243 #: ../../../src/MenuInventory.cpp:718
1244 msgid "Inventory is full."
1245 msgstr ""
1246
1247 #: ../../../src/MenuInventory.cpp:843
1248 #, c-format
1249 msgid "Not enough %s."
1250 msgstr ""
1251
1252 #: ../../../src/MenuInventory.cpp:863 ../../../src/MenuInventory.cpp:870
1253 msgid "This item can not be sold."
1254 msgstr ""
1255
1256 #: ../../../src/MenuLog.cpp:91
1257 msgid "Notes"
1258 msgstr ""
1259
1260 #: ../../../src/MenuLog.cpp:92
1261 msgid "Quests"
1262 msgstr ""
1263
1264 #: ../../../src/MenuManager.cpp:305
1265 #, c-format
1266 msgid "XP: %d/%d"
1267 msgstr ""
1268
1269 #: ../../../src/MenuManager.cpp:875
1270 msgid "This item can not be dropped."
1271 msgstr ""
1272
1273 #: ../../../src/MenuManager.cpp:1501
1274 msgid "Equipped"
1275 msgstr ""
1276
1277 #: ../../../src/MenuMovementType.cpp:87
1278 msgid "Select a Movement Type"
1279 msgstr ""
1280
1281 #: ../../../src/MenuMovementType.cpp:89
1282 msgid "Can be changed later in the Configuration menu."
1283 msgstr ""
1284
1285 #: ../../../src/MenuMovementType.cpp:92 ../../../src/MenuMovementType.cpp:122
1286 msgid "Keyboard"
1287 msgstr ""
1288
1289 #: ../../../src/MenuMovementType.cpp:93 ../../../src/MenuMovementType.cpp:128
1290 msgid "Mouse"
1291 msgstr ""
1292
1293 #: ../../../src/MenuMovementType.cpp:129
1294 msgid "Button"
1295 msgstr ""
1296
1297 #: ../../../src/MenuNumPicker.cpp:59
1298 msgid "Enter amount:"
1299 msgstr ""
1300
1301 #: ../../../src/MenuPowers.cpp:872
1302 msgid "Passive"
1303 msgstr ""
1304
1305 #: ../../../src/MenuPowers.cpp:879
1306 #, c-format
1307 msgid "Costs %d MP"
1308 msgstr ""
1309
1310 #: ../../../src/MenuPowers.cpp:883
1311 #, c-format
1312 msgid "Costs %d HP"
1313 msgstr ""
1314
1315 #: ../../../src/MenuPowers.cpp:887
1316 msgid "Cooldown:"
1317 msgstr ""
1318
1319 #: ../../../src/MenuPowers.cpp:938 ../../../src/MenuPowers.cpp:941
1320 msgid "Damage per second"
1321 msgstr ""
1322
1323 #: ../../../src/MenuPowers.cpp:944 ../../../src/MenuPowers.cpp:947
1324 msgid "HP per second"
1325 msgstr ""
1326
1327 #: ../../../src/MenuPowers.cpp:950 ../../../src/MenuPowers.cpp:953
1328 msgid "MP per second"
1329 msgstr ""
1330
1331 #: ../../../src/MenuPowers.cpp:957
1332 msgid "Immobilize"
1333 msgstr ""
1334
1335 #: ../../../src/MenuPowers.cpp:965
1336 msgid "Immunity"
1337 msgstr ""
1338
1339 #: ../../../src/MenuPowers.cpp:968
1340 msgid "Immunity to damage over time"
1341 msgstr ""
1342
1343 #: ../../../src/MenuPowers.cpp:971
1344 msgid "Immunity to slow"
1345 msgstr ""
1346
1347 #: ../../../src/MenuPowers.cpp:974
1348 msgid "Immunity to stun"
1349 msgstr ""
1350
1351 #: ../../../src/MenuPowers.cpp:977
1352 msgid "Immunity to HP steal"
1353 msgstr ""
1354
1355 #: ../../../src/MenuPowers.cpp:980
1356 msgid "Immunity to MP steal"
1357 msgstr ""
1358
1359 #: ../../../src/MenuPowers.cpp:983
1360 msgid "Immunity to knockback"
1361 msgstr ""
1362
1363 #: ../../../src/MenuPowers.cpp:986
1364 msgid "Immunity to damage reflection"
1365 msgstr ""
1366
1367 #: ../../../src/MenuPowers.cpp:992
1368 msgid "Stun"
1369 msgstr ""
1370
1371 #: ../../../src/MenuPowers.cpp:995
1372 msgid "Automatic revive on death"
1373 msgstr ""
1374
1375 #: ../../../src/MenuPowers.cpp:998
1376 msgid "Convert"
1377 msgstr ""
1378
1379 #: ../../../src/MenuPowers.cpp:1001
1380 msgid "Fear"
1381 msgstr ""
1382
1383 #: ../../../src/MenuPowers.cpp:1004
1384 msgid "Lifespan"
1385 msgstr ""
1386
1387 #: ../../../src/MenuPowers.cpp:1028
1388 msgid "Magical Shield"
1389 msgstr ""
1390
1391 #: ../../../src/MenuPowers.cpp:1057
1392 msgid "Healing"
1393 msgstr ""
1394
1395 #: ../../../src/MenuPowers.cpp:1060
1396 msgid "Knockback"
1397 msgstr ""
1398
1399 #: ../../../src/MenuPowers.cpp:1084
1400 #, c-format
1401 msgid "%d%% chance"
1402 msgstr ""
1403
1404 #: ../../../src/MenuPowers.cpp:1136
1405 msgid "Base Accuracy"
1406 msgstr ""
1407
1408 #: ../../../src/MenuPowers.cpp:1156
1409 msgid "Base Critical Chance"
1410 msgstr ""
1411
1412 #: ../../../src/MenuPowers.cpp:1164
1413 msgid "Ignores Absorbtion"
1414 msgstr ""
1415
1416 #: ../../../src/MenuPowers.cpp:1169
1417 msgid "Ignores Avoidance"
1418 msgstr ""
1419
1420 #: ../../../src/MenuPowers.cpp:1174
1421 #, c-format
1422 msgid "%d%% Chance to crit slowed targets"
1423 msgstr ""
1424
1425 #: ../../../src/MenuPowers.cpp:1179
1426 #, c-format
1427 msgid "Elemental Damage (%s)"
1428 msgstr ""
1429
1430 #: ../../../src/MenuPowers.cpp:1188
1431 #, c-format
1432 msgid "Requires a %s"
1433 msgstr ""
1434
1435 #: ../../../src/MenuPowers.cpp:1226 ../../../src/MenuPowers.cpp:1229
1436 #, c-format
1437 msgid "Requires Power: %s"
1438 msgstr ""
1439
1440 #: ../../../src/MenuPowers.cpp:1238
1441 msgid "Click to Unlock (uses 1 Skill Point)"
1442 msgstr ""
1443
1444 #: ../../../src/MenuPowers.cpp:1242 ../../../src/MenuPowers.cpp:1244
1445 msgid "Requires 1 Skill Point"
1446 msgstr ""
1447
1448 #: ../../../src/MenuPowers.cpp:1444
1449 #, c-format
1450 msgid "Available skill points: %d"
1451 msgstr ""
1452
1453 #: ../../../src/MenuPowers.cpp:1476
1454 msgid "Next Level:"
1455 msgstr ""
1456
1457 #: ../../../src/MenuStash.cpp:80 ../../../src/MenuStash.cpp:161
1458 msgid "Stash"
1459 msgstr ""
1460
1461 #: ../../../src/MenuStash.cpp:174 ../../../src/MenuStash.cpp:188
1462 msgid "Private"
1463 msgstr ""
1464
1465 #: ../../../src/MenuStash.cpp:175
1466 msgid "Shared"
1467 msgstr ""
1468
1469 #: ../../../src/MenuStash.cpp:340
1470 msgid "This item can not be stored in the stash."
1471 msgstr ""
1472
1473 #: ../../../src/MenuStash.cpp:345
1474 msgid "This item can not be stored in the private stash."
1475 msgstr ""
1476
1477 #: ../../../src/MenuStash.cpp:350
1478 msgid "This item can not be stored in the shared stash."
1479 msgstr ""
1480
1481 #: ../../../src/MenuStash.cpp:360
1482 msgid "Stash is full."
1483 msgstr ""
1484
1485 #: ../../../src/MenuStash.cpp:414
1486 #, c-format
1487 msgid "Can not store item in stash: %s"
1488 msgstr ""
1489
1490 #: ../../../src/MenuTalker.cpp:448
1491 #, c-format
1492 msgid "<dialog node %d>"
1493 msgstr ""
1494
1495 #: ../../../src/MenuTalker.cpp:456
1496 msgid "Trade"
1497 msgstr ""
1498
1499 #: ../../../src/MenuVendor.cpp:60
1500 msgid "Buyback"
1501 msgstr ""
1502
1503 #: ../../../src/MenuVendor.cpp:283
1504 msgid "Vendor"
1505 msgstr ""
1506
1507 #: ../../../src/PowerManager.cpp:1208
1508 #, c-format
1509 msgid "+%d Shield"
1510 msgstr ""
1511
1512 #: ../../../src/PowerManager.cpp:1465
1513 msgid "You are already transformed, untransform first."
1514 msgstr ""
1515
1516 #: ../../../src/PowerManager.cpp:1477
1517 msgid "Could not untransform at this position."
1518 msgstr ""
1519
1520 #: ../../../src/QuestLog.cpp:234
1521 msgid "Completed Quests"
1522 msgstr ""
1523
1524 #: ../../../src/SaveLoad.cpp:250 ../../../src/SaveLoad.cpp:251
1525 msgid "Game saved."
1526 msgstr ""
1527
1528 #: ../../../src/SDLInputState.cpp:643
1529 msgid "BkSp"
1530 msgstr ""
1531
1532 #: ../../../src/SDLInputState.cpp:644
1533 msgid "Caps"
1534 msgstr ""
1535
1536 #: ../../../src/SDLInputState.cpp:645
1537 msgid "Del"
1538 msgstr ""
1539
1540 #: ../../../src/SDLInputState.cpp:647 ../../../src/SDLInputState.cpp:677
1541 msgid "End"
1542 msgstr ""
1543
1544 #: ../../../src/SDLInputState.cpp:648
1545 msgid "Esc"
1546 msgstr ""
1547
1548 #: ../../../src/SDLInputState.cpp:649 ../../../src/SDLInputState.cpp:679
1549 msgid "Home"
1550 msgstr ""
1551
1552 #: ../../../src/SDLInputState.cpp:650
1553 msgid "Ins"
1554 msgstr ""
1555
1556 #: ../../../src/SDLInputState.cpp:651
1557 msgid "LAlt"
1558 msgstr ""
1559
1560 #: ../../../src/SDLInputState.cpp:652
1561 msgid "LCtrl"
1562 msgstr ""
1563
1564 #: ../../../src/SDLInputState.cpp:654
1565 msgid "LShft"
1566 msgstr ""
1567
1568 #: ../../../src/SDLInputState.cpp:655
1569 msgid "Num"
1570 msgstr ""
1571
1572 #: ../../../src/SDLInputState.cpp:656
1573 msgid "PgDn"
1574 msgstr ""
1575
1576 #: ../../../src/SDLInputState.cpp:657
1577 msgid "PgUp"
1578 msgstr ""
1579
1580 #: ../../../src/SDLInputState.cpp:658 ../../../src/SDLInputState.cpp:688
1581 msgid "Pause"
1582 msgstr ""
1583
1584 #: ../../../src/SDLInputState.cpp:659
1585 msgid "Print"
1586 msgstr ""
1587
1588 #: ../../../src/SDLInputState.cpp:660
1589 msgid "RAlt"
1590 msgstr ""
1591
1592 #: ../../../src/SDLInputState.cpp:661
1593 msgid "RCtrl"
1594 msgstr ""
1595
1596 #: ../../../src/SDLInputState.cpp:662
1597 msgid "Ret"
1598 msgstr ""
1599
1600 #: ../../../src/SDLInputState.cpp:664
1601 msgid "RShft"
1602 msgstr ""
1603
1604 #: ../../../src/SDLInputState.cpp:665
1605 msgid "SLock"
1606 msgstr ""
1607
1608 #: ../../../src/SDLInputState.cpp:666
1609 msgid "Spc"
1610 msgstr ""
1611
1612 #: ../../../src/SDLInputState.cpp:667 ../../../src/SDLInputState.cpp:697
1613 msgid "Tab"
1614 msgstr ""
1615
1616 #: ../../../src/SDLInputState.cpp:673
1617 msgid "Backspace"
1618 msgstr ""
1619
1620 #: ../../../src/SDLInputState.cpp:674
1621 msgid "CapsLock"
1622 msgstr ""
1623
1624 #: ../../../src/SDLInputState.cpp:678
1625 msgid "Escape"
1626 msgstr ""
1627
1628 #: ../../../src/SDLInputState.cpp:680
1629 msgid "Insert"
1630 msgstr ""
1631
1632 #: ../../../src/SDLInputState.cpp:681
1633 msgid "Left Alt"
1634 msgstr ""
1635
1636 #: ../../../src/SDLInputState.cpp:682
1637 msgid "Left Ctrl"
1638 msgstr ""
1639
1640 #: ../../../src/SDLInputState.cpp:684
1641 msgid "Left Shift"
1642 msgstr ""
1643
1644 #: ../../../src/SDLInputState.cpp:685
1645 msgid "NumLock"
1646 msgstr ""
1647
1648 #: ../../../src/SDLInputState.cpp:686
1649 msgid "PageDown"
1650 msgstr ""
1651
1652 #: ../../../src/SDLInputState.cpp:687
1653 msgid "PageUp"
1654 msgstr ""
1655
1656 #: ../../../src/SDLInputState.cpp:689
1657 msgid "PrintScreen"
1658 msgstr ""
1659
1660 #: ../../../src/SDLInputState.cpp:690
1661 msgid "Right Alt"
1662 msgstr ""
1663
1664 #: ../../../src/SDLInputState.cpp:691
1665 msgid "Right Ctrl"
1666 msgstr ""
1667
1668 #: ../../../src/SDLInputState.cpp:692
1669 msgid "Return"
1670 msgstr ""
1671
1672 #: ../../../src/SDLInputState.cpp:694
1673 msgid "Right Shift"
1674 msgstr ""
1675
1676 #: ../../../src/SDLInputState.cpp:695
1677 msgid "ScrollLock"
1678 msgstr ""
1679
1680 #: ../../../src/SDLInputState.cpp:696
1681 msgid "Space"
1682 msgstr ""
1683
1684 #: ../../../src/SDLInputState.cpp:710
1685 #, c-format
1686 msgid "M%d"
1687 msgstr ""
1688
1689 #: ../../../src/SDLInputState.cpp:716
1690 #, c-format
1691 msgid "Mouse %d"
1692 msgstr ""
1693
1694 #: ../../../src/SDLInputState.cpp:726
1695 #, c-format
1696 msgid "JX%d-"
1697 msgstr ""
1698
1699 #: ../../../src/SDLInputState.cpp:728
1700 #, c-format
1701 msgid "Axis %d -"
1702 msgstr ""
1703
1704 #: ../../../src/SDLInputState.cpp:732
1705 #, c-format
1706 msgid "JX%d+"
1707 msgstr ""
1708
1709 #: ../../../src/SDLInputState.cpp:734
1710 #, c-format
1711 msgid "Axis %d +"
1712 msgstr ""
1713
1714 #: ../../../src/SDLInputState.cpp:739
1715 #, c-format
1716 msgid "JB%d"
1717 msgstr ""
1718
1719 #: ../../../src/SDLInputState.cpp:741
1720 #, c-format
1721 msgid "Button %d"
1722 msgstr ""
1723
1724 #: ../../../src/SDLInputState.cpp:787
1725 msgid "Touch control D-Pad"
1726 msgstr ""
1727
1728 #: ../../../src/SDLInputState.cpp:810
1729 msgid "Touch control buttons"
1730 msgstr ""
1731
1732 #: ../../../src/SDLInputState.cpp:824
1733 msgid "Tap"
1734 msgstr ""
1735
1736 #: ../../../src/SDLInputState.cpp:876 ../../../src/SDLInputState.cpp:878
1737 #, c-format
1738 msgid "Can not bind: %s"
1739 msgstr ""
1740
1741 #: ../../../src/SDLInputState.cpp:890 ../../../src/SDLInputState.cpp:894
1742 #: ../../../src/SDLInputState.cpp:898
1743 #, c-format
1744 msgid "'%s' is no longer bound to:"
1745 msgstr ""
1746
1747 #: ../../../src/Stats.cpp:38
1748 msgid "Max HP"
1749 msgstr ""
1750
1751 #: ../../../src/Stats.cpp:39
1752 msgid "Total amount of HP."
1753 msgstr ""
1754
1755 #: ../../../src/Stats.cpp:43
1756 msgid "HP Regen"
1757 msgstr ""
1758
1759 #: ../../../src/Stats.cpp:44
1760 msgid "Ticks of HP regen per minute."
1761 msgstr ""
1762
1763 #: ../../../src/Stats.cpp:48
1764 msgid "Max MP"
1765 msgstr ""
1766
1767 #: ../../../src/Stats.cpp:49
1768 msgid "Total amount of MP."
1769 msgstr ""
1770
1771 #: ../../../src/Stats.cpp:53
1772 msgid "MP Regen"
1773 msgstr ""
1774
1775 #: ../../../src/Stats.cpp:54
1776 msgid "Ticks of MP regen per minute."
1777 msgstr ""
1778
1779 #: ../../../src/Stats.cpp:58
1780 msgid "Accuracy"
1781 msgstr ""
1782
1783 #: ../../../src/Stats.cpp:59
1784 msgid ""
1785 "Accuracy rating. The enemy's Avoidance rating is subtracted from this value "
1786 "to calculate your likeliness to land a direct hit."
1787 msgstr ""
1788
1789 #: ../../../src/Stats.cpp:63
1790 msgid "Avoidance"
1791 msgstr ""
1792
1793 #: ../../../src/Stats.cpp:64
1794 msgid ""
1795 "Avoidance rating. This value is subtracted from the enemy's Accuracy rating "
1796 "to calculate their likeliness to land a direct hit."
1797 msgstr ""
1798
1799 #: ../../../src/Stats.cpp:68
1800 msgid "Absorb Min"
1801 msgstr ""
1802
1803 #: ../../../src/Stats.cpp:69 ../../../src/Stats.cpp:74
1804 msgid "Reduces the amount of damage taken."
1805 msgstr ""
1806
1807 #: ../../../src/Stats.cpp:73
1808 msgid "Absorb Max"
1809 msgstr ""
1810
1811 #: ../../../src/Stats.cpp:78
1812 msgid "Critical Hit Chance"
1813 msgstr ""
1814
1815 #: ../../../src/Stats.cpp:79
1816 msgid "Chance for an attack to do extra damage."
1817 msgstr ""
1818
1819 #: ../../../src/Stats.cpp:83
1820 msgid "Bonus XP"
1821 msgstr ""
1822
1823 #: ../../../src/Stats.cpp:84
1824 msgid "Increases the XP gained per kill."
1825 msgstr ""
1826
1827 #: ../../../src/Stats.cpp:88
1828 #, c-format
1829 msgid "Bonus %s"
1830 msgstr ""
1831
1832 #: ../../../src/Stats.cpp:89
1833 #, c-format
1834 msgid "Increases the %s found per drop."
1835 msgstr ""
1836
1837 #: ../../../src/Stats.cpp:93
1838 msgid "Item Find Chance"
1839 msgstr ""
1840
1841 #: ../../../src/Stats.cpp:94
1842 msgid "Increases the chance that an enemy will drop an item."
1843 msgstr ""
1844
1845 #: ../../../src/Stats.cpp:98
1846 msgid "Stealth"
1847 msgstr ""
1848
1849 #: ../../../src/Stats.cpp:99
1850 msgid "Increases your ability to move undetected."
1851 msgstr ""
1852
1853 #: ../../../src/Stats.cpp:103
1854 msgid "Poise"
1855 msgstr ""
1856
1857 #: ../../../src/Stats.cpp:104
1858 msgid "Reduces your chance of stumbling when hit."
1859 msgstr ""
1860
1861 #: ../../../src/Stats.cpp:108
1862 msgid "Missile Reflect Chance"
1863 msgstr ""
1864
1865 #: ../../../src/Stats.cpp:109
1866 msgid "Increases your chance of reflecting missiles back at enemies."
1867 msgstr ""
1868
1869 #: ../../../src/Stats.cpp:113
1870 msgid "Damage Reflection"
1871 msgstr ""
1872
1873 #: ../../../src/Stats.cpp:114
1874 msgid "Deals a percentage of damage taken back to the attacker."
1875 msgstr ""
1876
1877 #: ../../../src/Stats.cpp:118
1878 msgid "HP Steal"
1879 msgstr ""
1880
1881 #: ../../../src/Stats.cpp:119
1882 msgid "Percentage of HP stolen per hit."
1883 msgstr ""
1884
1885 #: ../../../src/Stats.cpp:123
1886 msgid "MP Steal"
1887 msgstr ""
1888
1889 #: ../../../src/Stats.cpp:124
1890 msgid "Percentage of MP stolen per hit."
1891 msgstr ""
1892
1893 #: ../../../src/Stats.cpp:128
1894 msgid "Base HP"
1895 msgstr ""
1896
1897 #: ../../../src/Stats.cpp:133
1898 msgid "Base MP"
1899 msgstr ""
1900
1901 #: ../../../src/Utils.cpp:365
1902 msgid "k"
1903 msgstr ""
1904
1905 #: ../../../src/Utils.cpp:635
1906 #, c-format
1907 msgid "%s second"
1908 msgstr ""
1909
1910 #: ../../../src/Utils.cpp:638
1911 #, c-format
1912 msgid "%s seconds"
1913 msgstr ""
1914
1915 #: ../../../src/Version.cpp:139
1916 msgid "or newer"
1917 msgstr ""
1918
1919 #: ../../../src/Version.cpp:142
1920 msgid "or older"
1921 msgstr ""
44 #
55 # Translators:
66 # Justin Jacobs <jajdorkster@gmail.com>, 2018
7 # Elias Nykrem <bloodaxeNOR@protonmail.com>, 2019
78 #
89 #, fuzzy
910 msgid ""
1011 msgstr ""
1112 "Project-Id-Version: PACKAGE VERSION\n"
1213 "Report-Msgid-Bugs-To: \n"
13 "POT-Creation-Date: 2018-11-17 21:50-0500\n"
14 "POT-Creation-Date: 2021-05-23 20:34-0400\n"
1415 "PO-Revision-Date: 2018-03-28 19:16+0000\n"
15 "Last-Translator: Justin Jacobs <jajdorkster@gmail.com>, 2018\n"
16 "Last-Translator: Elias Nykrem <bloodaxeNOR@protonmail.com>, 2019\n"
1617 "Language-Team: Norwegian Bokmål (https://www.transifex.com/flareorg/teams/84925/nb/)\n"
1718 "MIME-Version: 1.0\n"
1819 "Content-Type: text/plain; charset=UTF-8\n"
2021 "Language: nb\n"
2122 "Plural-Forms: nplurals=2; plural=(n != 1);\n"
2223
23 #: ../../../src/Avatar.cpp:367
24 #: ../../../src/Avatar.cpp:391
25 msgid "Your health is low!"
26 msgstr "Helsen din er lav!"
27
28 #: ../../../src/Avatar.cpp:421
2429 #, c-format
2530 msgid "Congratulations, you have reached level %d!"
2631 msgstr "Gratulerer, du har nådd nivå %d!"
2732
28 #: ../../../src/Avatar.cpp:369
29 msgid "You may increase one attribute through the Character Menu."
30 msgstr ""
31
32 #: ../../../src/Avatar.cpp:583
33 msgid "You are defeated. Game over! ${INPUT_CONTINUE} to exit to Title."
34 msgstr ""
35 "Du har blitt beseiret. Spillet er slutt! Trykk ${INPUT_CONTINUE} for å gå "
36 "til hovedmenyen."
37
38 #: ../../../src/Avatar.cpp:589
39 msgid "You are defeated. ${INPUT_CONTINUE} to continue."
40 msgstr "Du har blitt beseiret. Trykk ${INPUT_CONTINUE} for å fortsette."
41
42 #: ../../../src/Avatar.cpp:839
33 #: ../../../src/Avatar.cpp:423
34 msgid "You may increase one or more attributes through the Character Menu."
35 msgstr "Du kan øke en eller flere egenskaper gjennom Karaktermenyen."
36
37 #: ../../../src/Avatar.cpp:427
38 msgid "You may unlock one or more abilities through the Powers Menu."
39 msgstr "Du kan øke en eller flere ferdigheter gjennom Evnemenyen."
40
41 #: ../../../src/Avatar.cpp:689
42 msgid "You are defeated."
43 msgstr ""
44
45 #: ../../../src/Avatar.cpp:935
4346 msgid "Transformation expired. You have been moved back to a safe place."
44 msgstr ""
45
46 #: ../../../src/CampaignManager.cpp:153
47 msgstr "Forvandling utgått. Du har blitt flyttet tilbake til et trygt sted."
48
49 #: ../../../src/CampaignManager.cpp:152
4750 #, c-format
4851 msgid "%d %s removed."
4952 msgstr "%d %s fjernet."
5053
51 #: ../../../src/CampaignManager.cpp:162
54 #: ../../../src/CampaignManager.cpp:171
55 #, c-format
56 msgid "%s x%d removed."
57 msgstr ""
58
59 #: ../../../src/CampaignManager.cpp:173
5260 #, c-format
5361 msgid "%s removed."
5462 msgstr "%s fjernet."
5563
56 #: ../../../src/CampaignManager.cpp:175
64 #: ../../../src/CampaignManager.cpp:187
65 #, c-format
66 msgid "You receive %d %s."
67 msgstr "Du mottar %s x%d."
68
69 #: ../../../src/CampaignManager.cpp:191
70 #, c-format
71 msgid "You receive %s x%d."
72 msgstr "Du mottar %s x%d."
73
74 #: ../../../src/CampaignManager.cpp:193
5775 #, c-format
5876 msgid "You receive %s."
5977 msgstr "Du mottar %s."
6078
61 #: ../../../src/CampaignManager.cpp:177
62 #, c-format
63 msgid "You receive %s x%d."
64 msgstr "Du mottar %s x%d."
65
66 #: ../../../src/CampaignManager.cpp:186
67 #, c-format
68 msgid "You receive %d %s."
69 msgstr "Du mottar %s x%d."
70
71 #: ../../../src/CampaignManager.cpp:195
79 #: ../../../src/CampaignManager.cpp:210
7280 #, c-format
7381 msgid "You receive %d XP."
74 msgstr ""
75
76 #: ../../../src/CampaignManager.cpp:201
82 msgstr "Du mottar %d EP."
83
84 #: ../../../src/CampaignManager.cpp:216
7785 msgid "HP restored."
78 msgstr ""
79
80 #: ../../../src/CampaignManager.cpp:205
86 msgstr "HP gjenopprettet."
87
88 #: ../../../src/CampaignManager.cpp:220
8189 msgid "MP restored."
82 msgstr ""
83
84 #: ../../../src/CampaignManager.cpp:210
90 msgstr "MP gjenopprettet."
91
92 #: ../../../src/CampaignManager.cpp:225
8593 msgid "HP and MP restored."
86 msgstr ""
87
88 #: ../../../src/CampaignManager.cpp:214
94 msgstr "HP og MP gjenopprettet."
95
96 #: ../../../src/CampaignManager.cpp:229
8997 msgid "Negative effects removed."
9098 msgstr "Negative effekter fjernet."
9199
92 #: ../../../src/CampaignManager.cpp:220
100 #: ../../../src/CampaignManager.cpp:235
93101 msgid "HP and MP restored, negative effects removed"
94 msgstr ""
102 msgstr "HP og MP gjenopprettet, og negative effekter fjernet"
95103
96104 #: ../../../src/DeviceList.cpp:56
97105 msgid ""
99107 "\n"
100108 "Often slower, but less likely to have issues."
101109 msgstr ""
110 "SDL programvare rendering\n"
111 "\n"
112 "Ofte tregere, men mindre sannsynlighet for problemer."
102113
103114 #: ../../../src/DeviceList.cpp:59
104115 msgid ""
106117 "\n"
107118 "The default renderer that is often faster than the SDL software renderer."
108119 msgstr ""
109
110 #: ../../../src/EngineSettings.cpp:561
120 "SDL maskinvare rendering\n"
121 "\n"
122 "Standard renderingsmetode som ofte er raskere en SDL programvare rendering."
123
124 #: ../../../src/EngineSettings.cpp:586
111125 msgid "Adventurer"
112126 msgstr "Eventyrer"
113127
114 #: ../../../src/Entity.cpp:511
128 #: ../../../src/Entity.cpp:527
115129 msgid "miss"
116130 msgstr "bom"
117131
118 #: ../../../src/Entity.cpp:548 ../../../src/PowerManager.cpp:1152
119 #: ../../../src/StatBlock.cpp:805 ../../../src/StatBlock.cpp:811
132 #: ../../../src/Entity.cpp:565 ../../../src/PowerManager.cpp:1224
133 #: ../../../src/StatBlock.cpp:917 ../../../src/StatBlock.cpp:923
120134 #, c-format
121135 msgid "+%d HP"
122 msgstr ""
123
124 #: ../../../src/Entity.cpp:555 ../../../src/StatBlock.cpp:816
125 #: ../../../src/StatBlock.cpp:822
136 msgstr "+%d HP"
137
138 #: ../../../src/Entity.cpp:572 ../../../src/StatBlock.cpp:928
139 #: ../../../src/StatBlock.cpp:934
126140 #, c-format
127141 msgid "+%d MP"
128 msgstr ""
129
130 #: ../../../src/EventManager.cpp:738
142 msgstr "+%d MP"
143
144 #: ../../../src/EventManager.cpp:792
131145 msgid "Unknown destination"
132146 msgstr "Ukjent destinasjon"
133147
134 #: ../../../src/GameStateConfigBase.cpp:89
135 #: ../../../src/GameStateConfigBase.cpp:110
148 #: ../../../src/GameState.cpp:37 ../../../src/GameState.cpp:58
149 msgid "Loading..."
150 msgstr "Laster..."
151
152 #: ../../../src/GameStateLoad.cpp:90 ../../../src/GameStateLoad.cpp:103
153 msgid "Delete Save"
154 msgstr "Slett lagret spill"
155
156 #: ../../../src/GameStateLoad.cpp:90
157 msgid "Delete this save?"
158 msgstr "Slett dette spillet?"
159
160 #: ../../../src/GameStateLoad.cpp:92
161 msgid "Exit to Title"
162 msgstr "Avslutt til hovedmeny"
163
164 #: ../../../src/GameStateLoad.cpp:95
165 msgid "New Game"
166 msgstr "Nytt spill"
167
168 #: ../../../src/GameStateLoad.cpp:99 ../../../src/GameStateLoad.cpp:607
169 msgid "Choose a Slot"
170 msgstr "Velg en plass"
171
172 #: ../../../src/GameStateLoad.cpp:580 ../../../src/GameStateLoad.cpp:601
173 msgid "Enable a story mod to continue"
174 msgstr "Aktiver en historie tilleggspakke for å fortsette"
175
176 #: ../../../src/GameStateLoad.cpp:596
177 msgid "Load Game"
178 msgstr "Last spill"
179
180 #: ../../../src/GameStateLoad.cpp:705
181 msgid "Entering game world..."
182 msgstr "Åpner spillverden..."
183
184 #: ../../../src/GameStateLoad.cpp:708
185 msgid "Loading saved game..."
186 msgstr "Laster lagret spill..."
187
188 #: ../../../src/GameStateLoad.cpp:741
189 msgid "Invalid save"
190 msgstr "Ugyldig spill"
191
192 #: ../../../src/GameStateLoad.cpp:765 ../../../src/ItemManager.cpp:745
193 #: ../../../src/MenuPowers.cpp:860 ../../../src/MenuPowers.cpp:1219
194 #: ../../../src/MenuPowers.cpp:1631
195 #, c-format
196 msgid "Level %d"
197 msgstr "Nivå %d"
198
199 #: ../../../src/GameStateNew.cpp:66 ../../../src/InputState.cpp:416
200 #: ../../../src/MenuConfig.cpp:246
201 msgid "Cancel"
202 msgstr "Avbryt"
203
204 #: ../../../src/GameStateNew.cpp:69
205 msgid "Create"
206 msgstr "Opprett"
207
208 #: ../../../src/GameStateNew.cpp:77
209 msgid "Randomize"
210 msgstr "Tilfeldiggjør"
211
212 #: ../../../src/GameStateNew.cpp:93
213 msgid "Choose a Portrait"
214 msgstr "Velg et portrett"
215
216 #: ../../../src/GameStateNew.cpp:97
217 msgid "Choose a Name"
218 msgstr "Velg et navn"
219
220 #: ../../../src/GameStateNew.cpp:101
221 msgid "Permadeath?"
222 msgstr "Permanent død?"
223
224 #: ../../../src/GameStateNew.cpp:105
225 msgid "Choose a Class"
226 msgstr "Velg en klasse"
227
228 #: ../../../src/GameStateTitle.cpp:107
229 msgid "Play Game"
230 msgstr "Start spill"
231
232 #: ../../../src/GameStateTitle.cpp:110
233 msgid "Enable a core mod to continue"
234 msgstr "Aktiver en kjerne tilleggspakke for å fortsette"
235
236 #: ../../../src/GameStateTitle.cpp:114 ../../../src/MenuMiniMap.cpp:152
237 msgid "Configuration"
238 msgstr "Innstillinger"
239
240 #: ../../../src/GameStateTitle.cpp:117
241 msgid "Credits"
242 msgstr "Takk til"
243
244 #: ../../../src/GameStateTitle.cpp:120
245 msgid "Exit Game"
246 msgstr "Avslutt spill"
247
248 #: ../../../src/InputState.cpp:417
249 msgid "Accept"
250 msgstr "Godta"
251
252 #: ../../../src/InputState.cpp:418 ../../../src/MenuMovementType.cpp:123
253 #: ../../../src/MenuMovementType.cpp:132 ../../../src/SDLInputState.cpp:668
254 #: ../../../src/SDLInputState.cpp:698
255 msgid "Up"
256 msgstr "Opp"
257
258 #: ../../../src/InputState.cpp:419 ../../../src/MenuMovementType.cpp:125
259 #: ../../../src/MenuMovementType.cpp:134 ../../../src/SDLInputState.cpp:646
260 #: ../../../src/SDLInputState.cpp:676
261 msgid "Down"
262 msgstr "Ned"
263
264 #: ../../../src/InputState.cpp:420 ../../../src/MenuMovementType.cpp:124
265 #: ../../../src/MenuMovementType.cpp:133 ../../../src/SDLInputState.cpp:653
266 #: ../../../src/SDLInputState.cpp:683
267 msgid "Left"
268 msgstr "Venstre"
269
270 #: ../../../src/InputState.cpp:421 ../../../src/MenuMovementType.cpp:126
271 #: ../../../src/MenuMovementType.cpp:135 ../../../src/SDLInputState.cpp:663
272 #: ../../../src/SDLInputState.cpp:693
273 msgid "Right"
274 msgstr "Høyre"
275
276 #: ../../../src/InputState.cpp:422
277 msgid "Bar1"
278 msgstr "Felt1 "
279
280 #: ../../../src/InputState.cpp:423
281 msgid "Bar2"
282 msgstr "Felt2"
283
284 #: ../../../src/InputState.cpp:424
285 msgid "Bar3"
286 msgstr "Felt3"
287
288 #: ../../../src/InputState.cpp:425
289 msgid "Bar4"
290 msgstr "Felt4"
291
292 #: ../../../src/InputState.cpp:426
293 msgid "Bar5"
294 msgstr "Felt5"
295
296 #: ../../../src/InputState.cpp:427
297 msgid "Bar6"
298 msgstr "Felt6"
299
300 #: ../../../src/InputState.cpp:428
301 msgid "Bar7"
302 msgstr "Felt7"
303
304 #: ../../../src/InputState.cpp:429
305 msgid "Bar8"
306 msgstr "Felt8"
307
308 #: ../../../src/InputState.cpp:430
309 msgid "Bar9"
310 msgstr "Felt9"
311
312 #: ../../../src/InputState.cpp:431
313 msgid "Bar0"
314 msgstr "Felt0"
315
316 #: ../../../src/InputState.cpp:432 ../../../src/MenuActionBar.cpp:84
317 #: ../../../src/MenuCharacter.cpp:54
318 msgid "Character"
319 msgstr "Karakter"
320
321 #: ../../../src/InputState.cpp:433 ../../../src/MenuActionBar.cpp:85
322 #: ../../../src/MenuInventory.cpp:130 ../../../src/MenuVendor.cpp:59
323 msgid "Inventory"
324 msgstr "Inventar"
325
326 #: ../../../src/InputState.cpp:434 ../../../src/MenuActionBar.cpp:86
327 #: ../../../src/MenuPowers.cpp:158
328 msgid "Powers"
329 msgstr "Evner"
330
331 #: ../../../src/InputState.cpp:435 ../../../src/MenuActionBar.cpp:87
332 #: ../../../src/MenuLog.cpp:72
333 msgid "Log"
334 msgstr "Logg"
335
336 #: ../../../src/InputState.cpp:436
337 msgid "Main1"
338 msgstr "Hoved1"
339
340 #: ../../../src/InputState.cpp:437
341 msgid "Main2"
342 msgstr "Hoved2"
343
344 #: ../../../src/InputState.cpp:438
345 msgid "Ctrl"
346 msgstr "Ctrl"
347
348 #: ../../../src/InputState.cpp:439
349 msgid "Shift"
350 msgstr "Shift"
351
352 #: ../../../src/InputState.cpp:440
353 msgid "Alt"
354 msgstr "Alt"
355
356 #: ../../../src/InputState.cpp:441 ../../../src/SDLInputState.cpp:675
357 msgid "Delete"
358 msgstr "Delete"
359
360 #: ../../../src/InputState.cpp:442
361 msgid "ActionBar Accept"
362 msgstr "Handlingsfelt Aksepter"
363
364 #: ../../../src/InputState.cpp:443
365 msgid "ActionBar Left"
366 msgstr "Handlingsfelt Venstre"
367
368 #: ../../../src/InputState.cpp:444
369 msgid "ActionBar Right"
370 msgstr "Handlingsfelt Høyre"
371
372 #: ../../../src/InputState.cpp:445
373 msgid "ActionBar Use"
374 msgstr "Handlingsfelt Bruk"
375
376 #: ../../../src/InputState.cpp:446
377 msgid "Developer Menu"
378 msgstr "Utviklermeny"
379
380 #: ../../../src/InputState.cpp:448
381 msgid "Left Mouse"
382 msgstr "Venstre Museknapp"
383
384 #: ../../../src/InputState.cpp:449
385 msgid "Middle Mouse"
386 msgstr "Musehjul Knapp"
387
388 #: ../../../src/InputState.cpp:450
389 msgid "Right Mouse"
390 msgstr "Høyre Museknapp"
391
392 #: ../../../src/InputState.cpp:451
393 msgid "Wheel Up"
394 msgstr "Hjul Opp"
395
396 #: ../../../src/InputState.cpp:452
397 msgid "Wheel Down"
398 msgstr "Hjul Ned"
399
400 #: ../../../src/InputState.cpp:453
401 msgid "Mouse X1"
402 msgstr "Mus X1"
403
404 #: ../../../src/InputState.cpp:454
405 msgid "Mouse X2"
406 msgstr "Mus X2"
407
408 #: ../../../src/ItemManager.cpp:475
409 msgid "Unknown Item"
410 msgstr "Ukjent gjenstand"
411
412 #: ../../../src/ItemManager.cpp:646 ../../../src/MenuPowers.cpp:959
413 #, c-format
414 msgid "%d%% Speed"
415 msgstr "%d%% Hastighet"
416
417 #: ../../../src/ItemManager.cpp:650 ../../../src/MenuPowers.cpp:962
418 #, c-format
419 msgid "%d%% Attack Speed"
420 msgstr "%d%% Angrepshastighet"
421
422 #: ../../../src/ItemManager.cpp:672 ../../../src/MenuCharacter.cpp:352
423 #: ../../../src/MenuPowers.cpp:931
424 #, c-format
425 msgid "Resistance (%s)"
426 msgstr "Motstandsdyktighet (%s)"
427
428 #: ../../../src/ItemManager.cpp:682
429 #, c-format
430 msgid "Requires %s"
431 msgstr "Krever %s"
432
433 #: ../../../src/ItemManager.cpp:731
434 msgid "Quest Item"
435 msgstr "Oppdragsgjenstand"
436
437 #: ../../../src/ItemManager.cpp:758
438 #, c-format
439 msgid "Quality: %s"
440 msgstr "Kvalitet: %s"
441
442 #: ../../../src/ItemManager.cpp:783
443 #, c-format
444 msgid "Absorb: %d-%d"
445 msgstr "Absorberer: %d-%d"
446
447 #: ../../../src/ItemManager.cpp:785
448 #, c-format
449 msgid "Absorb: %d"
450 msgstr "Absorberer: %d"
451
452 #: ../../../src/ItemManager.cpp:825 ../../../src/MenuPowers.cpp:1206
453 #: ../../../src/MenuPowers.cpp:1209
454 #, c-format
455 msgid "Requires Level %d"
456 msgstr "Krever nivå %d"
457
458 #: ../../../src/ItemManager.cpp:836 ../../../src/MenuPowers.cpp:1198
459 #: ../../../src/MenuPowers.cpp:1200
460 #, c-format
461 msgid "Requires %s %d"
462 msgstr "Krever %s %d"
463
464 #: ../../../src/ItemManager.cpp:847
465 #, c-format
466 msgid "Requires Class: %s"
467 msgstr "Krever klasse: %s"
468
469 #: ../../../src/ItemManager.cpp:863 ../../../src/ItemManager.cpp:875
470 #, c-format
471 msgid "Buy Price: %d %s"
472 msgstr "Kjøp for: %d %s"
473
474 #: ../../../src/ItemManager.cpp:865 ../../../src/ItemManager.cpp:877
475 #, c-format
476 msgid "Buy Price: %d %s each"
477 msgstr "Kjøp for: %d %s hver"
478
479 #: ../../../src/ItemManager.cpp:885
480 #, c-format
481 msgid "Sell Price: %d %s"
482 msgstr "Selg for: %d %s"
483
484 #: ../../../src/ItemManager.cpp:887
485 #, c-format
486 msgid "Sell Price: %d %s each"
487 msgstr "Selg for: %d %s hver"
488
489 #: ../../../src/ItemManager.cpp:896
490 msgid "Set:"
491 msgstr "Still:"
492
493 #: ../../../src/ItemManager.cpp:903
494 #, c-format
495 msgid "%d items:"
496 msgstr "%d gjenstander:"
497
498 #: ../../../src/ItemManager.cpp:915
499 #, c-format
500 msgid "Press [%s] to read"
501 msgstr "Trykk [%s] for å lese"
502
503 #: ../../../src/ItemManager.cpp:918
504 #, c-format
505 msgid "Press [%s] to use"
506 msgstr "Trykk [%s] for å bruke"
507
508 #: ../../../src/MenuActionBar.cpp:239 ../../../src/MenuActionBar.cpp:246
509 #: ../../../src/MenuActionBar.cpp:249 ../../../src/MenuActionBar.cpp:255
510 #, c-format
511 msgid "Hotkey: %s"
512 msgstr "Hurtigtast: %s"
513
514 #: ../../../src/MenuActionBar.cpp:621
515 msgid "Not enough MP."
516 msgstr "Ikke nok MP."
517
518 #: ../../../src/MenuActiveEffects.cpp:124
519 #, c-format
520 msgid "x%d"
521 msgstr "x%d"
522
523 #: ../../../src/MenuActiveEffects.cpp:219
524 msgid "Remaining:"
525 msgstr "Ubrukte:"
526
527 #: ../../../src/MenuActiveEffects.cpp:225
528 #, c-format
529 msgid "x%d stacks"
530 msgstr "x%d stabler"
531
532 #: ../../../src/MenuCharacter.cpp:73 ../../../src/MenuCharacter.cpp:78
533 msgid "Name"
534 msgstr "Navn"
535
536 #: ../../../src/MenuCharacter.cpp:74 ../../../src/MenuCharacter.cpp:79
537 msgid "Level"
538 msgstr "Nivå"
539
540 #: ../../../src/MenuCharacter.cpp:309
541 #, c-format
542 msgid "Available stat points: %d"
543 msgstr ""
544
545 #: ../../../src/MenuCharacter.cpp:353
546 #, c-format
547 msgid "Reduces the damage taken from \"%s\" elemental attacks."
548 msgstr "Minsker skade tatt fra \"%s\" elementangrep."
549
550 #: ../../../src/MenuCharacter.cpp:363 ../../../src/MenuManager.cpp:301
551 #, c-format
552 msgid "XP: %d"
553 msgstr "EP: %d"
554
555 #: ../../../src/MenuCharacter.cpp:365
556 #, c-format
557 msgid "Next: %d"
558 msgstr "Neste: %d"
559
560 #: ../../../src/MenuCharacter.cpp:371
561 #, c-format
562 msgid "base (%d), bonus (%d)"
563 msgstr "base (%d), bonus (%d)"
564
565 #: ../../../src/MenuCharacter.cpp:379 ../../../src/MenuCharacter.cpp:393
566 msgid "Related stats:"
567 msgstr "Relaterte ferdigheter:"
568
569 #: ../../../src/MenuCharacter.cpp:419 ../../../src/MenuCharacter.cpp:443
570 #, c-format
571 msgid "Each level grants %d."
572 msgstr "Hvert nivå bevilger %d."
573
574 #: ../../../src/MenuCharacter.cpp:423 ../../../src/MenuCharacter.cpp:447
575 #, c-format
576 msgid "Each point of %s grants %d."
577 msgstr "Hvert poeng i %s bevilger %d."
578
579 #: ../../../src/MenuConfig.cpp:122 ../../../src/MenuConfig.cpp:1171
580 msgid "Clear"
581 msgstr "Nullstill"
582
583 #: ../../../src/MenuConfig.cpp:122 ../../../src/MenuConfig.cpp:1169
584 msgid "Assign:"
585 msgstr "Tildel:"
586
587 #: ../../../src/MenuConfig.cpp:123 ../../../src/MenuConfig.cpp:245
136588 msgid "Defaults"
137589 msgstr "Standard"
138590
139 #: ../../../src/GameStateConfigBase.cpp:89
591 #: ../../../src/MenuConfig.cpp:123
140592 msgid "Reset ALL settings?"
141593 msgstr "Still tilbake ALLE innstillinger?"
142594
143 #: ../../../src/GameStateConfigBase.cpp:109 ../../../src/MenuNumPicker.cpp:49
595 #: ../../../src/MenuConfig.cpp:244 ../../../src/MenuNumPicker.cpp:49
144596 msgid "OK"
145597 msgstr "Ok"
146598
147 #: ../../../src/GameStateConfigBase.cpp:111 ../../../src/GameStateNew.cpp:65
148 #: ../../../src/InputState.cpp:401
149 msgid "Cancel"
150 msgstr "Avbryt"
151
152 #: ../../../src/GameStateConfigBase.cpp:160
153 #: ../../../src/GameStateConfigDesktop.cpp:130
599 #: ../../../src/MenuConfig.cpp:248 ../../../src/MenuGameOver.cpp:72
600 msgid "Continue"
601 msgstr "Fortsett"
602
603 #: ../../../src/MenuConfig.cpp:250
604 msgid "Save Game"
605 msgstr ""
606
607 #: ../../../src/MenuConfig.cpp:293
608 msgid "Default"
609 msgstr "Standard"
610
611 #: ../../../src/MenuConfig.cpp:293
612 msgid ""
613 "Show all loot tooltips, except for those that would be obscured by the "
614 "player or an enemy. Temporarily show all loot tooltips with 'Alt'."
615 msgstr ""
616 "Vis alle verktøytips for gods, bortsett fra de som ville være tildekt av "
617 "spilleren eller en fiende. Midlertidig vis alle verktøytips for gods med "
618 "'Alt'."
619
620 #: ../../../src/MenuConfig.cpp:294
621 msgid "Show all"
622 msgstr "Vis alt"
623
624 #: ../../../src/MenuConfig.cpp:294
625 msgid ""
626 "Always show loot tooltips. Temporarily hide all loot tooltips with 'Alt'."
627 msgstr ""
628 "Alltid vis verktøytips for gods. Midlertidig skjul alle verktøytips for gods"
629 " med 'Alt'."
630
631 #: ../../../src/MenuConfig.cpp:295 ../../../src/MenuConfig.cpp:300
632 msgid "Hidden"
633 msgstr "Skjult"
634
635 #: ../../../src/MenuConfig.cpp:295
636 msgid ""
637 "Always hide loot tooltips, except for when a piece of loot is hovered with "
638 "the mouse cursor. Temporarily show all loot tooltips with 'Alt'."
639 msgstr ""
640 "Skjul alltid verktøytips for gods, bortsett fra når du holder musepekeren "
641 "over godset. Midlertidig vis alle verktøytips for gods med 'Alt'."
642
643 #: ../../../src/MenuConfig.cpp:298
644 msgid "Visible"
645 msgstr "Synlig"
646
647 #: ../../../src/MenuConfig.cpp:299
648 msgid "Visible (2x zoom)"
649 msgstr "Synlig (2x forstørring)"
650
651 #: ../../../src/MenuConfig.cpp:303
652 msgid ""
653 "Controls the type of warning to be activated when the player is below the "
654 "low health threshold."
655 msgstr ""
656 "Kontrollerer typen advarsler som aktiveres når spillerens helse havner under"
657 " minimumsterskelen for helse."
658
659 #: ../../../src/MenuConfig.cpp:304
660 msgid "- Display a message"
661 msgstr "- Vis en beskjed"
662
663 #: ../../../src/MenuConfig.cpp:305
664 msgid "- Play a sound"
665 msgstr "- Spill av en lyd"
666
667 #: ../../../src/MenuConfig.cpp:306
668 msgid "- Change the cursor"
669 msgstr "- Endre musepekeren"
670
671 #: ../../../src/MenuConfig.cpp:308
672 msgid "Disabled"
673 msgstr "Deaktivert"
674
675 #: ../../../src/MenuConfig.cpp:309
676 msgid "All"
677 msgstr "Alt"
678
679 #: ../../../src/MenuConfig.cpp:310
680 msgid "Message & Cursor"
681 msgstr "Melding og musepeker"
682
683 #: ../../../src/MenuConfig.cpp:311
684 msgid "Message & Sound"
685 msgstr "Melding og lyd"
686
687 #: ../../../src/MenuConfig.cpp:312
688 msgid "Sound & Cursor"
689 msgstr "Lyd og musepeker"
690
691 #: ../../../src/MenuConfig.cpp:313
692 msgid "Message"
693 msgstr "Melding"
694
695 #: ../../../src/MenuConfig.cpp:314
696 msgid "Cursor"
697 msgstr "Musepeker"
698
699 #: ../../../src/MenuConfig.cpp:315
700 msgid "Sound"
701 msgstr "Lyd"
702
703 #: ../../../src/MenuConfig.cpp:321
704 msgid ""
705 "When the player's health drops below the given threshold, the low health "
706 "notifications are triggered if one or more of them is enabled."
707 msgstr ""
708 "Når spillerens helse faller under den oppførte terskelen, vises minimums "
709 "helsebeskjedene dersom en eller flere av de er aktivert."
710
711 #: ../../../src/MenuConfig.cpp:334 ../../../src/MenuConfig.cpp:1587
712 #: ../../../src/MenuGameOver.cpp:116
713 msgid "Exit"
714 msgstr "Avslutt"
715
716 #: ../../../src/MenuConfig.cpp:335
717 msgid "Video"
718 msgstr "Video"
719
720 #: ../../../src/MenuConfig.cpp:336
154721 msgid "Audio"
155722 msgstr "Lyd"
156723
157 #: ../../../src/GameStateConfigBase.cpp:161
158 #: ../../../src/GameStateConfigDesktop.cpp:131
724 #: ../../../src/MenuConfig.cpp:337
159725 msgid "Interface"
160726 msgstr "Grensesnitt"
161727
162 #: ../../../src/GameStateConfigBase.cpp:162
163 #: ../../../src/GameStateConfigDesktop.cpp:134
728 #: ../../../src/MenuConfig.cpp:338
729 msgid "Input"
730 msgstr "Inndata"
731
732 #: ../../../src/MenuConfig.cpp:339
733 msgid "Keybindings"
734 msgstr "Hurtigtaster"
735
736 #: ../../../src/MenuConfig.cpp:340
164737 msgid "Mods"
165 msgstr ""
166
167 #: ../../../src/GameStateConfigBase.cpp:249 ../../../src/MenuExit.cpp:72
738 msgstr "Tilleggspakker"
739
740 #: ../../../src/MenuConfig.cpp:352
741 msgid "Paused"
742 msgstr "Pauset"
743
744 #: ../../../src/MenuConfig.cpp:355
745 msgid "Time Played"
746 msgstr "Tid spilt"
747
748 #: ../../../src/MenuConfig.cpp:361
749 msgid "Renderer"
750 msgstr "Rendering"
751
752 #: ../../../src/MenuConfig.cpp:362
753 msgid "Full Screen Mode"
754 msgstr "Fullskjerm"
755
756 #: ../../../src/MenuConfig.cpp:363
757 msgid "Hardware surfaces"
758 msgstr "Maskinvare flater"
759
760 #: ../../../src/MenuConfig.cpp:364
761 msgid "V-Sync"
762 msgstr "Vertikal Synkronisering"
763
764 #: ../../../src/MenuConfig.cpp:365
765 msgid "Texture Filtering"
766 msgstr "Teksturfiltrering"
767
768 #: ../../../src/MenuConfig.cpp:366
769 msgid "DPI scaling"
770 msgstr "DPI skalering"
771
772 #: ../../../src/MenuConfig.cpp:367
773 msgid "Parallax Layers"
774 msgstr "Parallakse lag"
775
776 #: ../../../src/MenuConfig.cpp:368
777 msgid "Allow changing gamma"
778 msgstr "Tillat endring av lysstyrke"
779
780 #: ../../../src/MenuConfig.cpp:369
781 msgid "Gamma"
782 msgstr "Lysstyrke"
783
784 #: ../../../src/MenuConfig.cpp:371
785 msgid "Sound Volume"
786 msgstr "Lydvolum"
787
788 #: ../../../src/MenuConfig.cpp:372
168789 msgid "Music Volume"
169790 msgstr "Musikkvolum"
170791
171 #: ../../../src/GameStateConfigBase.cpp:253 ../../../src/MenuExit.cpp:77
172 msgid "Sound Volume"
173 msgstr "Lydvolum"
174
175 #: ../../../src/GameStateConfigBase.cpp:257
792 #: ../../../src/MenuConfig.cpp:374
176793 msgid "Language"
177794 msgstr "Språk"
178795
179 #: ../../../src/GameStateConfigBase.cpp:266
796 #: ../../../src/MenuConfig.cpp:375
180797 msgid "Show FPS"
181 msgstr ""
182
183 #: ../../../src/GameStateConfigBase.cpp:270
798 msgstr "Vis bildefrekvens"
799
800 #: ../../../src/MenuConfig.cpp:376
801 msgid "Hardware mouse cursor"
802 msgstr "Maskinvare musepeker"
803
804 #: ../../../src/MenuConfig.cpp:377
184805 msgid "Colorblind Mode"
185806 msgstr "Modus for fargeblinde"
186807
187 #: ../../../src/GameStateConfigBase.cpp:274
188 msgid "Hardware mouse cursor"
189 msgstr ""
190
191 #: ../../../src/GameStateConfigBase.cpp:278
808 #: ../../../src/MenuConfig.cpp:378
192809 msgid "Developer Mode"
193810 msgstr "Utviklermodus"
194811
195 #: ../../../src/GameStateConfigBase.cpp:282
812 #: ../../../src/MenuConfig.cpp:379
196813 msgid "Subtitles"
197814 msgstr "Undertekster"
198815
199 #: ../../../src/GameStateConfigBase.cpp:286
200 msgid "Active Mods"
201 msgstr ""
202
203 #: ../../../src/GameStateConfigBase.cpp:295
204 msgid "Available Mods"
205 msgstr ""
206
207 #: ../../../src/GameStateConfigBase.cpp:314
208 msgid "<< Disable"
209 msgstr "<< Deaktiver"
210
211 #: ../../../src/GameStateConfigBase.cpp:320
212 msgid "Enable >>"
213 msgstr "Aktiver >>"
214
215 #: ../../../src/GameStateConfigBase.cpp:873
216 msgid "Version:"
217 msgstr ""
218
219 #: ../../../src/GameStateConfigBase.cpp:878
220 msgid "Game:"
221 msgstr ""
222
223 #: ../../../src/GameStateConfigBase.cpp:883
224 msgid "Engine version:"
225 msgstr ""
226
227 #: ../../../src/GameStateConfigBase.cpp:891
228 msgid "Requires mods:"
229 msgstr ""
230
231 #: ../../../src/GameStateConfigDesktop.cpp:83
232 #: ../../../src/GameStateConfigDesktop.cpp:751
233 msgid "Clear"
234 msgstr "Nullstill"
235
236 #: ../../../src/GameStateConfigDesktop.cpp:83
237 #: ../../../src/GameStateConfigDesktop.cpp:749
238 msgid "Assign:"
239 msgstr ""
240
241 #: ../../../src/GameStateConfigDesktop.cpp:128
242 msgid "Video"
243 msgstr "Video"
244
245 #: ../../../src/GameStateConfigDesktop.cpp:132
246 msgid "Input"
247 msgstr ""
248
249 #: ../../../src/GameStateConfigDesktop.cpp:133
250 msgid "Keybindings"
251 msgstr "Hurtigtaster"
252
253 #: ../../../src/GameStateConfigDesktop.cpp:188
816 #: ../../../src/MenuConfig.cpp:380
817 msgid "Loot tooltip visibility"
818 msgstr "Synlighet for gods verktøytips"
819
820 #: ../../../src/MenuConfig.cpp:381
821 msgid "Mini-map mode"
822 msgstr "Miniatyrkart modus"
823
824 #: ../../../src/MenuConfig.cpp:382
825 msgid "Always show stat bar labels"
826 msgstr "Vis alltid etiketter for ferdigheter"
827
828 #: ../../../src/MenuConfig.cpp:383
829 msgid "Allow stat bar auto-hiding"
830 msgstr "Tillat automatisk skjuling av ferdighetsfelt"
831
832 #: ../../../src/MenuConfig.cpp:384
833 msgid "Show combat text"
834 msgstr "Vis tekst i kamp"
835
836 #: ../../../src/MenuConfig.cpp:385
837 msgid "Automatically equip items"
838 msgstr "Automatisk utruste gjenstander"
839
840 #: ../../../src/MenuConfig.cpp:386
841 msgid "Show hidden entity markers"
842 msgstr "Vis skjulte enhetsmarkører "
843
844 #: ../../../src/MenuConfig.cpp:387
845 msgid "Low health notification"
846 msgstr "lav helsevarsel"
847
848 #: ../../../src/MenuConfig.cpp:388
849 msgid "Low health threshold"
850 msgstr "Minimum helseterskel"
851
852 #: ../../../src/MenuConfig.cpp:389
853 msgid "Show item comparison tooltips"
854 msgstr ""
855
856 #: ../../../src/MenuConfig.cpp:392 ../../../src/MenuMovementType.cpp:94
857 #: ../../../src/MenuMovementType.cpp:131
858 msgid "Joystick"
859 msgstr "Joystick"
860
861 #: ../../../src/MenuConfig.cpp:393
862 msgid "Move hero using mouse"
863 msgstr "Flytt helten med musepeker"
864
865 #: ../../../src/MenuConfig.cpp:394
866 msgid "Mouse aim"
867 msgstr "Sikte med musepekeren"
868
869 #: ../../../src/MenuConfig.cpp:395
870 msgid "Do not use mouse"
871 msgstr "Ikke bruk mus"
872
873 #: ../../../src/MenuConfig.cpp:396
874 msgid "Swap mouse movement button"
875 msgstr "Endre knapp for musebevegelse"
876
877 #: ../../../src/MenuConfig.cpp:397
878 msgid "Attack with mouse movement"
879 msgstr "Angrip med musebevegelse"
880
881 #: ../../../src/MenuConfig.cpp:398
882 msgid "Joystick Deadzone"
883 msgstr "Joystick dødsone"
884
885 #: ../../../src/MenuConfig.cpp:408
886 #, c-format
887 msgid "Primary binding: %s"
888 msgstr "Primær binding: %s"
889
890 #: ../../../src/MenuConfig.cpp:409
891 #, c-format
892 msgid "Alternate binding: %s"
893 msgstr "Alternativ binding: %s"
894
895 #: ../../../src/MenuConfig.cpp:410
896 #, c-format
897 msgid "Joystick binding: %s"
898 msgstr "Joystick binding: %s"
899
900 #: ../../../src/MenuConfig.cpp:511
254901 msgid ""
255902 "Will try to store surfaces in video memory versus system memory. The effect "
256903 "this has on performance depends on the renderer."
257904 msgstr ""
258
259 #: ../../../src/GameStateConfigDesktop.cpp:189
905 "Vil prøve å lagre flatene i videominne kontra systemminne. Effekten dette "
906 "har på ytelsen kommer an på renderingen"
907
908 #: ../../../src/MenuConfig.cpp:512
260909 msgid ""
261910 "Prevents screen tearing. Disable if you experience \"stuttering\" in "
262911 "windowed mode or input lag."
263912 msgstr ""
264
265 #: ../../../src/GameStateConfigDesktop.cpp:190
913 "Forhindrer skjermrift. Deaktiver hvis du opplever \"hakking\" i vindu modus "
914 "eller inndata forsinkelse. "
915
916 #: ../../../src/MenuConfig.cpp:513
266917 msgid ""
267918 "When enabled, this uses the screen DPI in addition to the window dimensions "
268919 "to scale the rendering resolution. Otherwise, only the window dimensions are"
269920 " used."
270921 msgstr ""
271
272 #: ../../../src/GameStateConfigDesktop.cpp:191
922 "Når aktivert, brukes skjerm DPI-en i tillegg til vindusdimensjonene for å "
923 "skalere renderings oppløsningen. Ellers, blir bare vindusdimensjonene brukt."
924
925 #: ../../../src/MenuConfig.cpp:514
273926 msgid ""
274927 "This enables parallax (non-tile) layers. Disabling this setting can improve "
275928 "performance in some cases."
276929 msgstr ""
277
278 #: ../../../src/GameStateConfigDesktop.cpp:192
279 msgid "Experimental"
280 msgstr "Eksperimentell"
281
282 #: ../../../src/GameStateConfigDesktop.cpp:193
283 msgid "For handheld devices"
284 msgstr "For håndholdte enheter"
285
286 #: ../../../src/GameStateConfigDesktop.cpp:211
287 msgid "Renderer"
288 msgstr ""
289
290 #: ../../../src/GameStateConfigDesktop.cpp:227
291 msgid "Full Screen Mode"
292 msgstr "Fullskjerm"
293
294 #: ../../../src/GameStateConfigDesktop.cpp:231
295 msgid "Move hero using mouse"
296 msgstr "Flytt helten med musepeker"
297
298 #: ../../../src/GameStateConfigDesktop.cpp:235
299 msgid "Hardware surfaces"
300 msgstr ""
301
302 #: ../../../src/GameStateConfigDesktop.cpp:239
303 msgid "V-Sync"
304 msgstr ""
305
306 #: ../../../src/GameStateConfigDesktop.cpp:243
307 msgid "Texture Filtering"
308 msgstr "Teksturfiltrering"
309
310 #: ../../../src/GameStateConfigDesktop.cpp:247
311 msgid "DPI scaling"
312 msgstr ""
313
314 #: ../../../src/GameStateConfigDesktop.cpp:251
315 msgid "Parallax Layers"
316 msgstr ""
317
318 #: ../../../src/GameStateConfigDesktop.cpp:255
319 msgid "Allow changing gamma"
320 msgstr "Tillat endring av lysstyrke"
321
322 #: ../../../src/GameStateConfigDesktop.cpp:259
323 msgid "Gamma"
324 msgstr "Lysstyrke"
325
326 #: ../../../src/GameStateConfigDesktop.cpp:263
327 msgid "Use joystick"
328 msgstr "Bruk joystick"
329
330 #: ../../../src/GameStateConfigDesktop.cpp:267
331 msgid "Joystick"
332 msgstr "Joystick"
333
334 #: ../../../src/GameStateConfigDesktop.cpp:283
335 msgid "Mouse aim"
336 msgstr "Sikte med musepekeren"
337
338 #: ../../../src/GameStateConfigDesktop.cpp:287
339 msgid "Do not use mouse"
340 msgstr "Ikke bruk mus"
341
342 #: ../../../src/GameStateConfigDesktop.cpp:291
343 msgid "Joystick Deadzone"
344 msgstr "Joystick dødsone"
345
346 #: ../../../src/GameState.cpp:37 ../../../src/GameState.cpp:58
347 msgid "Loading..."
348 msgstr "Laster..."
349
350 #: ../../../src/GameStateLoad.cpp:88 ../../../src/GameStateLoad.cpp:101
351 msgid "Delete Save"
352 msgstr "Slett lagret spill"
353
354 #: ../../../src/GameStateLoad.cpp:88
355 msgid "Delete this save?"
356 msgstr "Slett dette spillet?"
357
358 #: ../../../src/GameStateLoad.cpp:90
359 msgid "Exit to Title"
360 msgstr "Avslutt til hovedmeny"
361
362 #: ../../../src/GameStateLoad.cpp:93
363 msgid "New Game"
364 msgstr "Nytt spill"
365
366 #: ../../../src/GameStateLoad.cpp:97 ../../../src/GameStateLoad.cpp:600
367 msgid "Choose a Slot"
368 msgstr "Velg en plass"
369
370 #: ../../../src/GameStateLoad.cpp:573 ../../../src/GameStateLoad.cpp:594
371 msgid "Enable a story mod to continue"
372 msgstr ""
373
374 #: ../../../src/GameStateLoad.cpp:589
375 msgid "Load Game"
376 msgstr "Last spill"
377
378 #: ../../../src/GameStateLoad.cpp:695
379 msgid "Entering game world..."
380 msgstr "Åpner spillverden..."
381
382 #: ../../../src/GameStateLoad.cpp:698
383 msgid "Loading saved game..."
384 msgstr "Laster lagret spill..."
385
386 #: ../../../src/GameStateLoad.cpp:731
387 msgid "Invalid save"
388 msgstr ""
389
390 #: ../../../src/GameStateLoad.cpp:755 ../../../src/ItemManager.cpp:747
391 #: ../../../src/MenuPowers.cpp:778 ../../../src/MenuPowers.cpp:1144
392 #: ../../../src/MenuPowers.cpp:1542
393 #, c-format
394 msgid "Level %d"
395 msgstr "Nivå %d"
396
397 #: ../../../src/GameStateNew.cpp:68
398 msgid "Create"
399 msgstr "Opprett"
400
401 #: ../../../src/GameStateNew.cpp:76
402 msgid "Randomize"
403 msgstr ""
404
405 #: ../../../src/GameStateNew.cpp:92
406 msgid "Choose a Portrait"
407 msgstr "Velg et portrett"
408
409 #: ../../../src/GameStateNew.cpp:96
410 msgid "Choose a Name"
411 msgstr "Velg et navn"
412
413 #: ../../../src/GameStateNew.cpp:100
414 msgid "Permadeath?"
415 msgstr "Permanent død?"
416
417 #: ../../../src/GameStateNew.cpp:104
418 msgid "Choose a Class"
419 msgstr "Velg en klasse"
420
421 #: ../../../src/GameStateTitle.cpp:108
422 msgid "Play Game"
423 msgstr "Start spill"
424
425 #: ../../../src/GameStateTitle.cpp:111
426 msgid "Enable a core mod to continue"
427 msgstr ""
428
429 #: ../../../src/GameStateTitle.cpp:115
430 msgid "Configuration"
431 msgstr "Innstillinger"
432
433 #: ../../../src/GameStateTitle.cpp:118
434 msgid "Credits"
435 msgstr ""
436
437 #: ../../../src/GameStateTitle.cpp:121
438 msgid "Exit Game"
439 msgstr "Avslutt spill"
440
441 #: ../../../src/InputState.cpp:402
442 msgid "Accept"
443 msgstr "Godta"
444
445 #: ../../../src/InputState.cpp:403 ../../../src/SDLInputState.cpp:607
446 msgid "Up"
447 msgstr "Opp"
448
449 #: ../../../src/InputState.cpp:404 ../../../src/SDLInputState.cpp:585
450 msgid "Down"
451 msgstr "Ned"
452
453 #: ../../../src/InputState.cpp:405 ../../../src/SDLInputState.cpp:592
454 msgid "Left"
455 msgstr "Venstre"
456
457 #: ../../../src/InputState.cpp:406 ../../../src/SDLInputState.cpp:602
458 msgid "Right"
459 msgstr "Høyre"
460
461 #: ../../../src/InputState.cpp:407
462 msgid "Bar1"
463 msgstr ""
464
465 #: ../../../src/InputState.cpp:408
466 msgid "Bar2"
467 msgstr ""
468
469 #: ../../../src/InputState.cpp:409
470 msgid "Bar3"
471 msgstr ""
472
473 #: ../../../src/InputState.cpp:410
474 msgid "Bar4"
475 msgstr ""
476
477 #: ../../../src/InputState.cpp:411
478 msgid "Bar5"
479 msgstr ""
480
481 #: ../../../src/InputState.cpp:412
482 msgid "Bar6"
483 msgstr ""
484
485 #: ../../../src/InputState.cpp:413
486 msgid "Bar7"
487 msgstr ""
488
489 #: ../../../src/InputState.cpp:414
490 msgid "Bar8"
491 msgstr ""
492
493 #: ../../../src/InputState.cpp:415
494 msgid "Bar9"
495 msgstr ""
496
497 #: ../../../src/InputState.cpp:416
498 msgid "Bar0"
499 msgstr ""
500
501 #: ../../../src/InputState.cpp:417 ../../../src/MenuActionBar.cpp:83
502 #: ../../../src/MenuCharacter.cpp:54
503 msgid "Character"
504 msgstr "Karakter"
505
506 #: ../../../src/InputState.cpp:418 ../../../src/MenuActionBar.cpp:84
507 #: ../../../src/MenuInventory.cpp:137 ../../../src/MenuVendor.cpp:57
508 msgid "Inventory"
509 msgstr ""
510
511 #: ../../../src/InputState.cpp:419 ../../../src/MenuActionBar.cpp:85
512 #: ../../../src/MenuPowers.cpp:168
513 msgid "Powers"
514 msgstr "Krefter"
515
516 #: ../../../src/InputState.cpp:420 ../../../src/MenuActionBar.cpp:86
517 #: ../../../src/MenuLog.cpp:72
518 msgid "Log"
519 msgstr "Logg"
520
521 #: ../../../src/InputState.cpp:421
522 msgid "Main1"
523 msgstr "Hoved1"
524
525 #: ../../../src/InputState.cpp:422
526 msgid "Main2"
527 msgstr "Hoved2"
528
529 #: ../../../src/InputState.cpp:423
530 msgid "Ctrl"
531 msgstr "Ctrl"
532
533 #: ../../../src/InputState.cpp:424
534 msgid "Shift"
535 msgstr "Shift"
536
537 #: ../../../src/InputState.cpp:425
538 msgid "Alt"
539 msgstr "Alt"
540
541 #: ../../../src/InputState.cpp:426 ../../../src/SDLInputState.cpp:584
542 msgid "Delete"
543 msgstr "Delete"
544
545 #: ../../../src/InputState.cpp:427
546 msgid "ActionBar Accept"
547 msgstr ""
548
549 #: ../../../src/InputState.cpp:428
550 msgid "ActionBar Left"
551 msgstr ""
552
553 #: ../../../src/InputState.cpp:429
554 msgid "ActionBar Right"
555 msgstr ""
556
557 #: ../../../src/InputState.cpp:430
558 msgid "ActionBar Use"
559 msgstr ""
560
561 #: ../../../src/InputState.cpp:431
562 msgid "Developer Menu"
563 msgstr "Utviklermeny"
564
565 #: ../../../src/InputState.cpp:433
566 msgid "Left Mouse"
567 msgstr ""
568
569 #: ../../../src/InputState.cpp:434
570 msgid "Middle Mouse"
571 msgstr ""
572
573 #: ../../../src/InputState.cpp:435
574 msgid "Right Mouse"
575 msgstr ""
576
577 #: ../../../src/InputState.cpp:436
578 msgid "Wheel Up"
579 msgstr "Hjul Opp"
580
581 #: ../../../src/InputState.cpp:437
582 msgid "Wheel Down"
583 msgstr "Hjul Ned"
584
585 #: ../../../src/InputState.cpp:438
586 msgid "Mouse X1"
587 msgstr ""
588
589 #: ../../../src/InputState.cpp:439
590 msgid "Mouse X2"
591 msgstr ""
592
593 #: ../../../src/ItemManager.cpp:450 ../../../src/ItemManager.cpp:453
594 msgid "Unknown Item"
595 msgstr "Ukjent gjenstand"
596
597 #: ../../../src/ItemManager.cpp:648 ../../../src/MenuPowers.cpp:887
598 #, c-format
599 msgid "%d%% Speed"
600 msgstr "%d%% Hastighet"
601
602 #: ../../../src/ItemManager.cpp:652 ../../../src/MenuPowers.cpp:890
603 #, c-format
604 msgid "%d%% Attack Speed"
605 msgstr "%d%% Angrepshastighet"
606
607 #: ../../../src/ItemManager.cpp:674 ../../../src/MenuCharacter.cpp:354
608 #: ../../../src/MenuPowers.cpp:833
609 #, c-format
610 msgid "Resistance (%s)"
611 msgstr ""
612
613 #: ../../../src/ItemManager.cpp:684
614 #, c-format
615 msgid "Requires %s"
616 msgstr ""
617
618 #: ../../../src/ItemManager.cpp:733
619 msgid "Quest Item"
620 msgstr ""
621
622 #: ../../../src/ItemManager.cpp:760
623 #, c-format
624 msgid "Quality: %s"
625 msgstr "Kvalitet: %s"
626
627 #: ../../../src/ItemManager.cpp:785
628 #, c-format
629 msgid "Absorb: %d-%d"
630 msgstr "Absorberer: %d-%d"
631
632 #: ../../../src/ItemManager.cpp:787
633 #, c-format
634 msgid "Absorb: %d"
635 msgstr "Absorberer: %d"
636
637 #: ../../../src/ItemManager.cpp:827 ../../../src/MenuPowers.cpp:1131
638 #: ../../../src/MenuPowers.cpp:1134
639 #, c-format
640 msgid "Requires Level %d"
641 msgstr "Krever nivå %d"
642
643 #: ../../../src/ItemManager.cpp:838 ../../../src/MenuPowers.cpp:1123
644 #: ../../../src/MenuPowers.cpp:1125
645 #, c-format
646 msgid "Requires %s %d"
647 msgstr "Krever %s %d"
648
649 #: ../../../src/ItemManager.cpp:849
650 #, c-format
651 msgid "Requires Class: %s"
652 msgstr "Krever klasse: %s"
653
654 #: ../../../src/ItemManager.cpp:864 ../../../src/ItemManager.cpp:876
655 #, c-format
656 msgid "Buy Price: %d %s"
657 msgstr "Kjøp for: %d %s"
658
659 #: ../../../src/ItemManager.cpp:866 ../../../src/ItemManager.cpp:878
660 #, c-format
661 msgid "Buy Price: %d %s each"
662 msgstr "Kjøp for: %d %s hver"
663
664 #: ../../../src/ItemManager.cpp:886
665 #, c-format
666 msgid "Sell Price: %d %s"
667 msgstr "Selg for: %d %s"
668
669 #: ../../../src/ItemManager.cpp:888
670 #, c-format
671 msgid "Sell Price: %d %s each"
672 msgstr "Selg for: %d %s hver"
673
674 #: ../../../src/ItemManager.cpp:897
675 msgid "Set:"
676 msgstr ""
677
678 #: ../../../src/ItemManager.cpp:904
679 #, c-format
680 msgid "%d items:"
681 msgstr ""
682
683 #: ../../../src/ItemManager.cpp:917
684 #, c-format
685 msgid "Press [%s] to use"
686 msgstr ""
687
688 #: ../../../src/ItemManager.cpp:920
689 #, c-format
690 msgid "Press [%s] to read"
691 msgstr ""
692
693 #: ../../../src/MenuActionBar.cpp:87
694 msgid "Loot tooltip visibility"
695 msgstr ""
696
697 #: ../../../src/MenuActionBar.cpp:88
698 msgid "Mini-map mode"
699 msgstr ""
700
701 #: ../../../src/MenuActionBar.cpp:89
702 msgid "Always show stat bar labels"
703 msgstr ""
704
705 #: ../../../src/MenuActionBar.cpp:90
706 msgid "Show combat text"
707 msgstr "Vis tekst i kamp"
708
709 #: ../../../src/MenuActionBar.cpp:254 ../../../src/MenuActionBar.cpp:261
710 #: ../../../src/MenuActionBar.cpp:264 ../../../src/MenuActionBar.cpp:271
711 #, c-format
712 msgid "Hotkey: %s"
713 msgstr "Hurtigtast: %s"
714
715 #: ../../../src/MenuActionBar.cpp:474
716 #, c-format
717 msgid "Default. Temporarily show all loot tooltips with '%s'."
718 msgstr ""
719
720 #: ../../../src/MenuActionBar.cpp:476
721 #, c-format
722 msgid "Show All. Temporarily hide all loot tooltips with '%s'."
723 msgstr ""
724
725 #: ../../../src/MenuActionBar.cpp:478
726 #, c-format
727 msgid "Hide All. Temporarily show all loot tooltips with '%s'."
728 msgstr ""
729
730 #: ../../../src/MenuActionBar.cpp:482
731 msgid "Visible"
732 msgstr ""
733
734 #: ../../../src/MenuActionBar.cpp:484
735 msgid "Visible (2x zoom)"
736 msgstr ""
737
738 #: ../../../src/MenuActionBar.cpp:486
739 msgid "Hidden"
740 msgstr ""
741
742 #: ../../../src/MenuActionBar.cpp:490 ../../../src/MenuActionBar.cpp:496
743 msgid "Enabled"
744 msgstr ""
745
746 #: ../../../src/MenuActionBar.cpp:492 ../../../src/MenuActionBar.cpp:498
747 msgid "Disabled"
748 msgstr ""
749
750 #: ../../../src/MenuActionBar.cpp:657
751 msgid "Not enough MP."
752 msgstr ""
753
754 #: ../../../src/MenuActiveEffects.cpp:124
755 #, c-format
756 msgid "x%d"
757 msgstr ""
758
759 #: ../../../src/MenuActiveEffects.cpp:219
760 msgid "Remaining:"
761 msgstr "Ubrukte:"
762
763 #: ../../../src/MenuActiveEffects.cpp:225
764 #, c-format
765 msgid "x%d stacks"
766 msgstr ""
767
768 #: ../../../src/MenuCharacter.cpp:73 ../../../src/MenuCharacter.cpp:78
769 msgid "Name"
770 msgstr "Navn"
771
772 #: ../../../src/MenuCharacter.cpp:74 ../../../src/MenuCharacter.cpp:79
773 msgid "Level"
774 msgstr "Nivå"
775
776 #: ../../../src/MenuCharacter.cpp:310
777 #, c-format
778 msgid "%d unspent stat point"
779 msgstr ""
780
781 #: ../../../src/MenuCharacter.cpp:313
782 #, c-format
783 msgid "%d unspent stat points"
784 msgstr ""
785
786 #: ../../../src/MenuCharacter.cpp:355
787 #, c-format
788 msgid "Reduces the damage taken from \"%s\" elemental attacks."
789 msgstr ""
790
791 #: ../../../src/MenuCharacter.cpp:365 ../../../src/MenuManager.cpp:283
792 #, c-format
793 msgid "XP: %d"
794 msgstr ""
795
796 #: ../../../src/MenuCharacter.cpp:367
797 #, c-format
798 msgid "Next: %d"
799 msgstr "Neste: %d"
800
801 #: ../../../src/MenuCharacter.cpp:373
802 #, c-format
803 msgid "base (%d), bonus (%d)"
804 msgstr ""
805
806 #: ../../../src/MenuCharacter.cpp:381 ../../../src/MenuCharacter.cpp:395
807 msgid "Related stats:"
808 msgstr ""
809
810 #: ../../../src/MenuCharacter.cpp:421 ../../../src/MenuCharacter.cpp:445
811 #, c-format
812 msgid "Each level grants %d."
813 msgstr ""
814
815 #: ../../../src/MenuCharacter.cpp:425 ../../../src/MenuCharacter.cpp:449
816 #, c-format
817 msgid "Each point of %s grants %d."
818 msgstr ""
819
820 #: ../../../src/MenuDevConsole.cpp:63
930 "Dette aktiverer parallakse (ikke-flis) lag. Å deaktivere denne innstillingen"
931 " kan forbedre ytelsen i enkelte tilfeller."
932
933 #: ../../../src/MenuConfig.cpp:515
934 msgid ""
935 "Enables the below setting that controls the screen gamma level. The behavior"
936 " of the gamma setting can vary between platforms."
937 msgstr ""
938 "Aktiverer innstillingen under som justerer skjermens gamma nivå. "
939 "Innstillingens oppførsel kan variere mellom ulike plattformer."
940
941 #: ../../../src/MenuConfig.cpp:516
942 msgid ""
943 "Provides additional text for information that is primarily conveyed through "
944 "color."
945 msgstr ""
946 "Tilbyr tilleggsinformasjon gjennom tekst som ellers hovedsakelig "
947 "kommuniseres gjennom farge."
948
949 #: ../../../src/MenuConfig.cpp:517
950 msgid ""
951 "Some mods will automatically hide the stat bars when they are inactive. "
952 "Disabling this option will keep them displayed at all times."
953 msgstr ""
954 "Noen tilleggspakker vil automatisk skjule ferdighetsfelt når de er inaktive. \n"
955 "Deaktivering av dette valget vil alltid holde dem synlige"
956
957 #: ../../../src/MenuConfig.cpp:518
958 msgid ""
959 "When enabled, empty equipment slots will be filled with applicable items "
960 "when they are obtained."
961 msgstr ""
962 "Når aktivert, vil tomme verktøyrom fylles med aktuelle gjenstander når de "
963 "anskaffes."
964
965 #: ../../../src/MenuConfig.cpp:519
966 msgid ""
967 "Shows a marker above enemies, allies, and the player when they are obscured "
968 "by tall objects."
969 msgstr ""
970 "Vis en markør over fiender, allierte og spilleren når de er tildekt bak høye"
971 " objekter."
972
973 #: ../../../src/MenuConfig.cpp:520
974 msgid ""
975 "When enabled, tooltips for equipped items of the same type are shown next to"
976 " standard item tooltips."
977 msgstr ""
978
979 #: ../../../src/MenuConfig.cpp:521
980 msgid ""
981 "This allows the game to be controlled entirely with the keyboard (or "
982 "joystick)."
983 msgstr ""
984 "Dette tillater spillet å bli kontrollert fullhent med tastaturet (eller en "
985 "joystick)."
986
987 #: ../../../src/MenuConfig.cpp:522
988 msgid ""
989 "When 'Move hero using mouse' is enabled, this setting controls if 'Main1' or"
990 " 'Main2' is used to move the hero. If enabled, 'Main2' will move the hero "
991 "instead of 'Main1'."
992 msgstr ""
993 "Når 'Flytt helten med musepeker' er aktivert, vil denne instillingen "
994 "kontrolere om 'Hoved1' eller 'Hoved2' brukes for å flytte helten. Dersom "
995 "aktivert, vil 'Hoved2' flytte helten i stedet for 'Hoved1'."
996
997 #: ../../../src/MenuConfig.cpp:523
998 msgid ""
999 "When 'Move hero using mouse' is enabled, this setting controls if the Power "
1000 "assigned to the movement button can be used by targeting an enemy. If this "
1001 "setting is disabled, it is required to use 'Shift' to access the Power "
1002 "assigned to the movement button."
1003 msgstr ""
1004 "Når 'Flytt helten med musepeker' er aktivert, vil denne innstillingen "
1005 "kontrollere om Evnen som er bundet til bevegelsesknappen kan brukes ved å "
1006 "sikte seg inn på en fiende. Dersom denne innstillingen er deaktivert, kreves"
1007 " det at man bruker 'Shift' for å benytte Evner som er bundet til "
1008 "bevegelsesknappen."
1009
1010 #: ../../../src/MenuConfig.cpp:524
1011 msgid ""
1012 "The player's attacks will be aimed in the direction of the mouse cursor when"
1013 " this is enabled."
1014 msgstr ""
1015 "Spillerens angrep vil siktes i retning av musepekeren dersom dette er "
1016 "aktivert."
1017
1018 #: ../../../src/MenuConfig.cpp:575
1019 msgid "Active Mods"
1020 msgstr "Aktive tilleggspakker"
1021
1022 #: ../../../src/MenuConfig.cpp:584
1023 msgid "Available Mods"
1024 msgstr "Tilgjengelige tilleggspakker"
1025
1026 #: ../../../src/MenuConfig.cpp:603
1027 msgid "<< Disable"
1028 msgstr "<< Deaktiver"
1029
1030 #: ../../../src/MenuConfig.cpp:609
1031 msgid "Enable >>"
1032 msgstr "Aktiver >>"
1033
1034 #: ../../../src/MenuConfig.cpp:1444
1035 msgid "Version:"
1036 msgstr "Versjon:"
1037
1038 #: ../../../src/MenuConfig.cpp:1449
1039 msgid "Game:"
1040 msgstr "Spill:"
1041
1042 #: ../../../src/MenuConfig.cpp:1454
1043 msgid "Engine version:"
1044 msgstr "Spillmotor versjon:"
1045
1046 #: ../../../src/MenuConfig.cpp:1462
1047 msgid "Requires mods:"
1048 msgstr "Krever følgende tilleggspakker:"
1049
1050 #: ../../../src/MenuConfig.cpp:1570 ../../../src/SDLInputState.cpp:748
1051 msgid "(none)"
1052 msgstr "(ingen)"
1053
1054 #: ../../../src/MenuConfig.cpp:1587 ../../../src/MenuGameOver.cpp:73
1055 msgid "Save & Exit"
1056 msgstr "Lagre og avslutt"
1057
1058 #: ../../../src/MenuDevConsole.cpp:65
8211059 msgid "Execute"
8221060 msgstr "Utfør"
8231061
824 #: ../../../src/MenuDevConsole.cpp:101 ../../../src/MenuDevConsole.cpp:151
1062 #: ../../../src/MenuDevConsole.cpp:103 ../../../src/MenuDevConsole.cpp:153
8251063 msgid "Developer Console"
8261064 msgstr "Utviklerkonsoll"
8271065
828 #: ../../../src/MenuDevConsole.cpp:141
1066 #: ../../../src/MenuDevConsole.cpp:143
8291067 #, c-format
8301068 msgid "Use '%s' to inspect with the cursor."
831 msgstr ""
832
833 #: ../../../src/MenuDevConsole.cpp:146
1069 msgstr "Bruk '%s' for å utforske med musepekeren."
1070
1071 #: ../../../src/MenuDevConsole.cpp:148
8341072 msgid "Arguments with spaces should be enclosed with double quotes. Example:"
835 msgstr ""
836
837 #: ../../../src/MenuDevConsole.cpp:147
1073 msgstr "Argumenter med mellomrom skal innrammes med hermetegn. Eksempel:"
1074
1075 #: ../../../src/MenuDevConsole.cpp:149
8381076 msgid "Type 'help' to get a list of commands."
839 msgstr ""
840
841 #: ../../../src/MenuDevConsole.cpp:209 ../../../src/MenuDevConsole.cpp:213
1077 msgstr "Skriv 'help' for å motta en liste over tilgjengelige kommandoer."
1078
1079 #: ../../../src/MenuDevConsole.cpp:211 ../../../src/MenuDevConsole.cpp:215
8421080 msgid "px"
843 msgstr ""
844
845 #: ../../../src/MenuDevConsole.cpp:224
1081 msgstr "px"
1082
1083 #: ../../../src/MenuDevConsole.cpp:226
8461084 msgid "Distance"
847 msgstr ""
848
849 #: ../../../src/MenuDevConsole.cpp:239 ../../../src/MenuDevConsole.cpp:286
1085 msgstr "Distanse"
1086
1087 #: ../../../src/MenuDevConsole.cpp:241 ../../../src/MenuDevConsole.cpp:289
1088 #: ../../../src/MenuDevConsole.cpp:303
8501089 msgid "Entity"
851 msgstr ""
852
853 #: ../../../src/MenuDevConsole.cpp:261 ../../../src/MenuDevConsole.cpp:268
1090 msgstr "Enhet"
1091
1092 #: ../../../src/MenuDevConsole.cpp:263 ../../../src/MenuDevConsole.cpp:270
8541093 msgid "none"
855 msgstr ""
856
857 #: ../../../src/MenuDevConsole.cpp:262 ../../../src/MenuDevConsole.cpp:264
1094 msgstr "ingen"
1095
1096 #: ../../../src/MenuDevConsole.cpp:264 ../../../src/MenuDevConsole.cpp:266
8581097 msgid "wall"
859 msgstr ""
860
861 #: ../../../src/MenuDevConsole.cpp:263 ../../../src/MenuDevConsole.cpp:265
1098 msgstr "vegg"
1099
1100 #: ../../../src/MenuDevConsole.cpp:265 ../../../src/MenuDevConsole.cpp:267
8621101 msgid "short wall / pit"
863 msgstr ""
864
865 #: ../../../src/MenuDevConsole.cpp:266
1102 msgstr "kort vegg / grop"
1103
1104 #: ../../../src/MenuDevConsole.cpp:268
8661105 msgid "entity"
867 msgstr ""
868
869 #: ../../../src/MenuDevConsole.cpp:267
1106 msgstr "enhet"
1107
1108 #: ../../../src/MenuDevConsole.cpp:269
8701109 msgid "entity, ally"
871 msgstr ""
872
873 #: ../../../src/MenuDevConsole.cpp:274
1110 msgstr "enhet, alliert"
1111
1112 #: ../../../src/MenuDevConsole.cpp:276
8741113 msgid "Tile"
875 msgstr ""
876
877 #: ../../../src/MenuDevConsole.cpp:360
1114 msgstr "Flis"
1115
1116 #: ../../../src/MenuDevConsole.cpp:377
8781117 msgid "adds a power to the action bar"
879 msgstr ""
880
881 #: ../../../src/MenuDevConsole.cpp:361
1118 msgstr "legger til en evne i handlingsfeltet"
1119
1120 #: ../../../src/MenuDevConsole.cpp:378
8821121 msgid "turns on/off the display of the FPS counter"
883 msgstr ""
884
885 #: ../../../src/MenuDevConsole.cpp:362
1122 msgstr "Skru på/av visningen av FPS telleren"
1123
1124 #: ../../../src/MenuDevConsole.cpp:379
8861125 msgid "turns on/off all of the HUD elements"
887 msgstr ""
888
889 #: ../../../src/MenuDevConsole.cpp:363
1126 msgstr "Skru på/av alle HUD elementer"
1127
1128 #: ../../../src/MenuDevConsole.cpp:380
8901129 msgid "turns on/off the developer hud"
891 msgstr ""
892
893 #: ../../../src/MenuDevConsole.cpp:364
1130 msgstr "slår på/av utvikler HUD"
1131
1132 #: ../../../src/MenuDevConsole.cpp:381
8941133 msgid ""
8951134 "Prints a list of powers that match a search term. No search term will list "
8961135 "all items"
8971136 msgstr ""
8981137
899 #: ../../../src/MenuDevConsole.cpp:365
1138 #: ../../../src/MenuDevConsole.cpp:382
9001139 msgid "Prints out all the map filenames located in the \"maps/\" directory."
9011140 msgstr ""
9021141
903 #: ../../../src/MenuDevConsole.cpp:366
1142 #: ../../../src/MenuDevConsole.cpp:383
9041143 msgid ""
9051144 "Prints out the active campaign statuses that match a search term. No search "
9061145 "term will list all active statuses"
9071146 msgstr ""
9081147
909 #: ../../../src/MenuDevConsole.cpp:367
1148 #: ../../../src/MenuDevConsole.cpp:384
9101149 msgid ""
9111150 "Prints a list of items that match a search term. No search term will list "
9121151 "all items"
9131152 msgstr ""
9141153
915 #: ../../../src/MenuDevConsole.cpp:368
1154 #: ../../../src/MenuDevConsole.cpp:385
9161155 msgid ""
9171156 "parses a series of event components and executes them as a single event"
9181157 msgstr ""
9191158
920 #: ../../../src/MenuDevConsole.cpp:369
1159 #: ../../../src/MenuDevConsole.cpp:386
9211160 msgid "clears the command history"
9221161 msgstr "tømmer kommando-historikk"
9231162
924 #: ../../../src/MenuDevConsole.cpp:370
1163 #: ../../../src/MenuDevConsole.cpp:387
9251164 msgid "displays this text"
9261165 msgstr "viser denne teksten"
9271166
928 #: ../../../src/MenuDevConsole.cpp:377
1167 #: ../../../src/MenuDevConsole.cpp:394
9291168 msgid "Toggled the developer hud"
930 msgstr ""
931
932 #: ../../../src/MenuDevConsole.cpp:381
1169 msgstr "Slo på/av utvikler HUD"
1170
1171 #: ../../../src/MenuDevConsole.cpp:398
9331172 msgid "Toggled the hud"
934 msgstr ""
935
936 #: ../../../src/MenuDevConsole.cpp:385
1173 msgstr "Slo på/av HUD"
1174
1175 #: ../../../src/MenuDevConsole.cpp:402
9371176 msgid "Toggled the FPS counter"
938 msgstr ""
939
940 #: ../../../src/MenuDevConsole.cpp:534
1177 msgstr "Slo på/av FPS teller"
1178
1179 #: ../../../src/MenuDevConsole.cpp:552
9411180 msgid "ERROR: Incorrect number of arguments"
9421181 msgstr "FEIL: Feil antall argumenter"
9431182
944 #: ../../../src/MenuDevConsole.cpp:536 ../../../src/MenuDevConsole.cpp:564
1183 #: ../../../src/MenuDevConsole.cpp:554 ../../../src/MenuDevConsole.cpp:582
9451184 msgid "HINT:"
946 msgstr ""
947
948 #: ../../../src/MenuDevConsole.cpp:536
1185 msgstr "HINT:"
1186
1187 #: ../../../src/MenuDevConsole.cpp:554
9491188 msgid "<id>"
950 msgstr ""
951
952 #: ../../../src/MenuDevConsole.cpp:552
1189 msgstr "<id>"
1190
1191 #: ../../../src/MenuDevConsole.cpp:570
9531192 #, c-format
9541193 msgid "ERROR: '%s' is not a valid event key"
955 msgstr ""
956
957 #: ../../../src/MenuDevConsole.cpp:562
1194 msgstr "FEIL: '%s' er ikke en gyldig eventknapp"
1195
1196 #: ../../../src/MenuDevConsole.cpp:580
9581197 msgid "ERROR: Too few arguments"
9591198 msgstr "FEIL: For få argumenter"
9601199
961 #: ../../../src/MenuDevConsole.cpp:564
1200 #: ../../../src/MenuDevConsole.cpp:582
9621201 msgid "<key>=<val> <key>=<val> ..."
963 msgstr ""
964
965 #: ../../../src/MenuDevConsole.cpp:569
1202 msgstr "<key>=<val> <key>=<val> ..."
1203
1204 #: ../../../src/MenuDevConsole.cpp:587
9661205 msgid "ERROR: Unknown command"
9671206 msgstr "FEIL: Ukjent kommando"
9681207
969 #: ../../../src/MenuDevConsole.cpp:571
1208 #: ../../../src/MenuDevConsole.cpp:589
9701209 msgid "HINT: Type help"
9711210 msgstr "HINT: Skriv help"
9721211
973 #: ../../../src/MenuEnemy.cpp:138
1212 #: ../../../src/MenuEnemy.cpp:162
9741213 #, c-format
9751214 msgid "%s level %d"
9761215 msgstr "%s nivå %d"
9771216
978 #: ../../../src/MenuEnemy.cpp:162
1217 #: ../../../src/MenuEnemy.cpp:186
9791218 msgid "Dead"
9801219 msgstr "Død"
9811220
982 #: ../../../src/MenuEnemy.cpp:164
1221 #: ../../../src/MenuEnemy.cpp:188
9831222 msgid "Destroyed"
984 msgstr ""
985
986 #: ../../../src/MenuExit.cpp:85 ../../../src/MenuExit.cpp:139
987 msgid "Paused"
988 msgstr "Pauset"
989
990 #: ../../../src/MenuExit.cpp:91
991 msgid "Save & Exit"
992 msgstr "Lagre og avslutt"
993
994 #: ../../../src/MenuExit.cpp:92
995 msgid "Exit"
996 msgstr "Avslutt"
997
998 #: ../../../src/MenuExit.cpp:96
999 msgid "Continue"
1000 msgstr "Fortsett"
1001
1002 #: ../../../src/MenuInventory.cpp:73
1003 msgid "Automatically equip items"
1004 msgstr ""
1005
1006 #: ../../../src/MenuInventory.cpp:188
1223 msgstr "Tilintetgjort"
1224
1225 #: ../../../src/MenuGameOver.cpp:69
1226 msgid "Game Over"
1227 msgstr ""
1228
1229 #: ../../../src/MenuInventory.cpp:178
10071230 #, c-format
10081231 msgid "Lost %d%% of %s."
1009 msgstr ""
1010
1011 #: ../../../src/MenuInventory.cpp:195
1232 msgstr "Mistet %d%% av %s."
1233
1234 #: ../../../src/MenuInventory.cpp:185
10121235 #, c-format
10131236 msgid "Lost %d%% of total XP."
1014 msgstr ""
1015
1016 #: ../../../src/MenuInventory.cpp:200
1237 msgstr "Mistet %d%% av total EP."
1238
1239 #: ../../../src/MenuInventory.cpp:190
10171240 #, c-format
10181241 msgid "Lost %d%% of current level XP."
1019 msgstr ""
1020
1021 #: ../../../src/MenuInventory.cpp:226
1242 msgstr "Mistet %d%% av det nåværende nivåets EP."
1243
1244 #: ../../../src/MenuInventory.cpp:216
10221245 #, c-format
10231246 msgid "Lost %s."
10241247 msgstr "Mistet %s."
10251248
1026 #: ../../../src/MenuInventory.cpp:274 ../../../src/MenuStash.cpp:146
1249 #: ../../../src/MenuInventory.cpp:258 ../../../src/MenuStash.cpp:276
10271250 #, c-format
10281251 msgid "%d %s"
10291252 msgstr "%d %s"
10301253
1031 #: ../../../src/MenuInventory.cpp:317
1254 #: ../../../src/MenuInventory.cpp:301
10321255 msgid "Pick up item(s):"
10331256 msgstr "Plukk opp gjenstand(er):"
10341257
1035 #: ../../../src/MenuInventory.cpp:318
1258 #: ../../../src/MenuInventory.cpp:302
10361259 msgid "Use or equip item:"
1037 msgstr ""
1038
1039 #: ../../../src/MenuInventory.cpp:319
1260 msgstr "Benytt eller bruk gjenstand:"
1261
1262 #: ../../../src/MenuInventory.cpp:303
10401263 #, c-format
10411264 msgid "%s modifiers"
1042 msgstr ""
1043
1044 #: ../../../src/MenuInventory.cpp:320
1265 msgstr "%s modifikatorer"
1266
1267 #: ../../../src/MenuInventory.cpp:304
10451268 msgid "Select a quantity of item:"
1046 msgstr "Velg et antall:"
1047
1048 #: ../../../src/MenuInventory.cpp:323
1269 msgstr "Velg et antall av gjenstandene:"
1270
1271 #: ../../../src/MenuInventory.cpp:307
10491272 msgid "Stash item stack:"
1050 msgstr ""
1051
1052 #: ../../../src/MenuInventory.cpp:325
1273 msgstr "Lagre gjenstandsstabel:"
1274
1275 #: ../../../src/MenuInventory.cpp:309
10531276 msgid "Sell item stack:"
1054 msgstr ""
1055
1056 #: ../../../src/MenuInventory.cpp:592
1277 msgstr "Selg gjenstandsstabel:"
1278
1279 #: ../../../src/MenuInventory.cpp:576
10571280 msgid "You don't have enough of the required item."
1058 msgstr ""
1059
1060 #: ../../../src/MenuInventory.cpp:599
1281 msgstr "Du har ikke nok av den påkrevde gjenstanden. "
1282
1283 #: ../../../src/MenuInventory.cpp:588
10611284 msgid "You can't use this item right now."
1062 msgstr ""
1063
1064 #: ../../../src/MenuInventory.cpp:611
1285 msgstr "Du kan ikke bruke denne gjenstanden akkurat nå."
1286
1287 #: ../../../src/MenuInventory.cpp:600
10651288 msgid "This item can only be used from the action bar."
1066 msgstr ""
1067
1068 #: ../../../src/MenuInventory.cpp:729
1289 msgstr "Denne gjenstanden kan bare brukes fra handlingsfeltet."
1290
1291 #: ../../../src/MenuInventory.cpp:718
10691292 msgid "Inventory is full."
10701293 msgstr "Du har ikke plass til flere gjenstander."
10711294
1072 #: ../../../src/MenuInventory.cpp:849
1295 #: ../../../src/MenuInventory.cpp:843
10731296 #, c-format
10741297 msgid "Not enough %s."
10751298 msgstr "Ikke nok %s."
10761299
1077 #: ../../../src/MenuInventory.cpp:869 ../../../src/MenuInventory.cpp:876
1300 #: ../../../src/MenuInventory.cpp:863 ../../../src/MenuInventory.cpp:870
10781301 msgid "This item can not be sold."
10791302 msgstr "Du kan ikke selge denne gjenstanden."
10801303
10861309 msgid "Quests"
10871310 msgstr "Oppdrag"
10881311
1089 #: ../../../src/MenuManager.cpp:286
1312 #: ../../../src/MenuManager.cpp:305
10901313 #, c-format
10911314 msgid "XP: %d/%d"
1092 msgstr ""
1093
1094 #: ../../../src/MenuManager.cpp:827
1315 msgstr "EP: %d/%d"
1316
1317 #: ../../../src/MenuManager.cpp:875
10951318 msgid "This item can not be dropped."
1319 msgstr "Denne gjenstanden kan ikke slippes."
1320
1321 #: ../../../src/MenuManager.cpp:1501
1322 msgid "Equipped"
1323 msgstr ""
1324
1325 #: ../../../src/MenuMovementType.cpp:87
1326 msgid "Select a Movement Type"
1327 msgstr ""
1328
1329 #: ../../../src/MenuMovementType.cpp:89
1330 msgid "Can be changed later in the Configuration menu."
1331 msgstr ""
1332
1333 #: ../../../src/MenuMovementType.cpp:92 ../../../src/MenuMovementType.cpp:122
1334 msgid "Keyboard"
1335 msgstr ""
1336
1337 #: ../../../src/MenuMovementType.cpp:93 ../../../src/MenuMovementType.cpp:128
1338 msgid "Mouse"
1339 msgstr ""
1340
1341 #: ../../../src/MenuMovementType.cpp:129
1342 msgid "Button"
10961343 msgstr ""
10971344
10981345 #: ../../../src/MenuNumPicker.cpp:59
10991346 msgid "Enter amount:"
1100 msgstr ""
1101
1102 #: ../../../src/MenuPowers.cpp:787
1347 msgstr "Oppgi mengd:"
1348
1349 #: ../../../src/MenuPowers.cpp:872
11031350 msgid "Passive"
1104 msgstr ""
1105
1106 #: ../../../src/MenuPowers.cpp:792
1351 msgstr "Passiv"
1352
1353 #: ../../../src/MenuPowers.cpp:879
11071354 #, c-format
11081355 msgid "Costs %d MP"
1109 msgstr ""
1110
1111 #: ../../../src/MenuPowers.cpp:796
1356 msgstr "Koster %d MP"
1357
1358 #: ../../../src/MenuPowers.cpp:883
11121359 #, c-format
11131360 msgid "Costs %d HP"
1114 msgstr ""
1115
1116 #: ../../../src/MenuPowers.cpp:801
1361 msgstr "Koster %d HP"
1362
1363 #: ../../../src/MenuPowers.cpp:887
11171364 msgid "Cooldown:"
1118 msgstr ""
1119
1120 #: ../../../src/MenuPowers.cpp:866 ../../../src/MenuPowers.cpp:869
1365 msgstr "Nedkjøling:"
1366
1367 #: ../../../src/MenuPowers.cpp:938 ../../../src/MenuPowers.cpp:941
11211368 msgid "Damage per second"
11221369 msgstr "Skade per sekund"
11231370
1124 #: ../../../src/MenuPowers.cpp:872 ../../../src/MenuPowers.cpp:875
1371 #: ../../../src/MenuPowers.cpp:944 ../../../src/MenuPowers.cpp:947
11251372 msgid "HP per second"
1126 msgstr ""
1127
1128 #: ../../../src/MenuPowers.cpp:878 ../../../src/MenuPowers.cpp:881
1373 msgstr "HP per sekund"
1374
1375 #: ../../../src/MenuPowers.cpp:950 ../../../src/MenuPowers.cpp:953
11291376 msgid "MP per second"
1130 msgstr ""
1131
1132 #: ../../../src/MenuPowers.cpp:885
1377 msgstr "MP per sekund"
1378
1379 #: ../../../src/MenuPowers.cpp:957
11331380 msgid "Immobilize"
1134 msgstr ""
1135
1136 #: ../../../src/MenuPowers.cpp:893
1381 msgstr "Immobilisere"
1382
1383 #: ../../../src/MenuPowers.cpp:965
11371384 msgid "Immunity"
11381385 msgstr "Immunitet"
11391386
1140 #: ../../../src/MenuPowers.cpp:896
1387 #: ../../../src/MenuPowers.cpp:968
11411388 msgid "Immunity to damage over time"
11421389 msgstr "Immun mot skade over tid"
11431390
1144 #: ../../../src/MenuPowers.cpp:899
1391 #: ../../../src/MenuPowers.cpp:971
11451392 msgid "Immunity to slow"
1146 msgstr ""
1147
1148 #: ../../../src/MenuPowers.cpp:902
1393 msgstr "Immunitet mot hastighetsredusering"
1394
1395 #: ../../../src/MenuPowers.cpp:974
11491396 msgid "Immunity to stun"
1150 msgstr ""
1151
1152 #: ../../../src/MenuPowers.cpp:905
1397 msgstr "Immunitet mot lamslåing"
1398
1399 #: ../../../src/MenuPowers.cpp:977
11531400 msgid "Immunity to HP steal"
1154 msgstr ""
1155
1156 #: ../../../src/MenuPowers.cpp:908
1401 msgstr "Immunitet mot HP-stjeling"
1402
1403 #: ../../../src/MenuPowers.cpp:980
11571404 msgid "Immunity to MP steal"
1158 msgstr ""
1159
1160 #: ../../../src/MenuPowers.cpp:911
1405 msgstr "Immunitet mot MP-stjeling"
1406
1407 #: ../../../src/MenuPowers.cpp:983
11611408 msgid "Immunity to knockback"
1162 msgstr ""
1163
1164 #: ../../../src/MenuPowers.cpp:914
1409 msgstr "Immunitet mot tilbakeslag"
1410
1411 #: ../../../src/MenuPowers.cpp:986
11651412 msgid "Immunity to damage reflection"
1166 msgstr ""
1167
1168 #: ../../../src/MenuPowers.cpp:917
1413 msgstr "Immunitet mot skaderefleksjon"
1414
1415 #: ../../../src/MenuPowers.cpp:992
11691416 msgid "Stun"
1170 msgstr ""
1171
1172 #: ../../../src/MenuPowers.cpp:920
1417 msgstr "Lamslå"
1418
1419 #: ../../../src/MenuPowers.cpp:995
11731420 msgid "Automatic revive on death"
1174 msgstr ""
1175
1176 #: ../../../src/MenuPowers.cpp:923
1421 msgstr "Gjenoppliv automatisk ved død"
1422
1423 #: ../../../src/MenuPowers.cpp:998
11771424 msgid "Convert"
1178 msgstr ""
1179
1180 #: ../../../src/MenuPowers.cpp:926
1425 msgstr "Konverter"
1426
1427 #: ../../../src/MenuPowers.cpp:1001
11811428 msgid "Fear"
11821429 msgstr "Frykt"
11831430
1184 #: ../../../src/MenuPowers.cpp:929
1431 #: ../../../src/MenuPowers.cpp:1004
11851432 msgid "Lifespan"
1186 msgstr ""
1187
1188 #: ../../../src/MenuPowers.cpp:953
1433 msgstr "Levetid"
1434
1435 #: ../../../src/MenuPowers.cpp:1028
11891436 msgid "Magical Shield"
11901437 msgstr "Magisk skjold"
11911438
1192 #: ../../../src/MenuPowers.cpp:982
1439 #: ../../../src/MenuPowers.cpp:1057
11931440 msgid "Healing"
1194 msgstr ""
1195
1196 #: ../../../src/MenuPowers.cpp:985
1441 msgstr "Helbreding"
1442
1443 #: ../../../src/MenuPowers.cpp:1060
11971444 msgid "Knockback"
1198 msgstr ""
1199
1200 #: ../../../src/MenuPowers.cpp:1010
1445 msgstr "Tilbakeslag"
1446
1447 #: ../../../src/MenuPowers.cpp:1084
12011448 #, c-format
12021449 msgid "%d%% chance"
12031450 msgstr "%d%% sjanse"
12041451
1205 #: ../../../src/MenuPowers.cpp:1062
1452 #: ../../../src/MenuPowers.cpp:1136
12061453 msgid "Base Accuracy"
1207 msgstr ""
1208
1209 #: ../../../src/MenuPowers.cpp:1082
1454 msgstr "Kjerne Treffsikkerhet"
1455
1456 #: ../../../src/MenuPowers.cpp:1156
12101457 msgid "Base Critical Chance"
1211 msgstr ""
1212
1213 #: ../../../src/MenuPowers.cpp:1090
1458 msgstr "Kjerne Kritisk Sjanse"
1459
1460 #: ../../../src/MenuPowers.cpp:1164
12141461 msgid "Ignores Absorbtion"
1215 msgstr ""
1216
1217 #: ../../../src/MenuPowers.cpp:1095
1462 msgstr "Ignorerer Absorbering "
1463
1464 #: ../../../src/MenuPowers.cpp:1169
12181465 msgid "Ignores Avoidance"
1219 msgstr ""
1220
1221 #: ../../../src/MenuPowers.cpp:1100
1466 msgstr "Ignorerer Unnvikelse"
1467
1468 #: ../../../src/MenuPowers.cpp:1174
12221469 #, c-format
12231470 msgid "%d%% Chance to crit slowed targets"
1224 msgstr ""
1225
1226 #: ../../../src/MenuPowers.cpp:1105
1471 msgstr "%d%% Sjanse for å kritisk skade hastighetsreduserte mål"
1472
1473 #: ../../../src/MenuPowers.cpp:1179
12271474 #, c-format
12281475 msgid "Elemental Damage (%s)"
1229 msgstr ""
1230
1231 #: ../../../src/MenuPowers.cpp:1114
1476 msgstr "Element Skade (%s)"
1477
1478 #: ../../../src/MenuPowers.cpp:1188
12321479 #, c-format
12331480 msgid "Requires a %s"
12341481 msgstr "Krever en %s"
12351482
1236 #: ../../../src/MenuPowers.cpp:1151 ../../../src/MenuPowers.cpp:1154
1483 #: ../../../src/MenuPowers.cpp:1226 ../../../src/MenuPowers.cpp:1229
12371484 #, c-format
12381485 msgid "Requires Power: %s"
1239 msgstr ""
1240
1241 #: ../../../src/MenuPowers.cpp:1163
1486 msgstr "Krever Evne: %s"
1487
1488 #: ../../../src/MenuPowers.cpp:1238
12421489 msgid "Click to Unlock (uses 1 Skill Point)"
1243 msgstr ""
1244
1245 #: ../../../src/MenuPowers.cpp:1167 ../../../src/MenuPowers.cpp:1169
1490 msgstr "Klikk for å låse opp (bruker 1 evnepoeng)"
1491
1492 #: ../../../src/MenuPowers.cpp:1242 ../../../src/MenuPowers.cpp:1244
12461493 msgid "Requires 1 Skill Point"
1247 msgstr ""
1248
1249 #: ../../../src/MenuPowers.cpp:1355
1250 #, c-format
1251 msgid "%d unspent skill point"
1252 msgstr ""
1253
1254 #: ../../../src/MenuPowers.cpp:1358
1255 #, c-format
1256 msgid "%d unspent skill points"
1257 msgstr ""
1258
1259 #: ../../../src/MenuPowers.cpp:1388
1494 msgstr "Krever 1 evnepoeng"
1495
1496 #: ../../../src/MenuPowers.cpp:1444
1497 #, c-format
1498 msgid "Available skill points: %d"
1499 msgstr ""
1500
1501 #: ../../../src/MenuPowers.cpp:1476
12601502 msgid "Next Level:"
12611503 msgstr "Neste nivå:"
12621504
1263 #: ../../../src/MenuStash.cpp:96
1264 msgid "Shared Stash"
1265 msgstr "Delt kiste"
1266
1267 #: ../../../src/MenuStash.cpp:209
1268 msgid "Can not store quest items in the stash."
1269 msgstr ""
1270
1271 #: ../../../src/MenuStash.cpp:219
1505 #: ../../../src/MenuStash.cpp:80 ../../../src/MenuStash.cpp:161
1506 msgid "Stash"
1507 msgstr "Lager"
1508
1509 #: ../../../src/MenuStash.cpp:174 ../../../src/MenuStash.cpp:188
1510 msgid "Private"
1511 msgstr "Privat"
1512
1513 #: ../../../src/MenuStash.cpp:175
1514 msgid "Shared"
1515 msgstr "Delt"
1516
1517 #: ../../../src/MenuStash.cpp:340
1518 msgid "This item can not be stored in the stash."
1519 msgstr "Denne gjenstanden kan ikke oppbevares i lageret. "
1520
1521 #: ../../../src/MenuStash.cpp:345
1522 msgid "This item can not be stored in the private stash."
1523 msgstr "Denne gjenstanden kan ikke oppbevares i privatlageret."
1524
1525 #: ../../../src/MenuStash.cpp:350
1526 msgid "This item can not be stored in the shared stash."
1527 msgstr "Denne gjenstanden kan ikke oppbevares i det delte lageret."
1528
1529 #: ../../../src/MenuStash.cpp:360
12721530 msgid "Stash is full."
1273 msgstr "Kisten er full."
1274
1275 #: ../../../src/MenuTalker.cpp:454
1531 msgstr "Lageret er fullt."
1532
1533 #: ../../../src/MenuStash.cpp:414
1534 #, c-format
1535 msgid "Can not store item in stash: %s"
1536 msgstr "Kan ikke oppbevare gjenstander i lageret: %s"
1537
1538 #: ../../../src/MenuTalker.cpp:448
1539 #, c-format
1540 msgid "<dialog node %d>"
1541 msgstr "<dialog node %d>"
1542
1543 #: ../../../src/MenuTalker.cpp:456
12761544 msgid "Trade"
12771545 msgstr "Handle"
12781546
1279 #: ../../../src/MenuVendor.cpp:58
1547 #: ../../../src/MenuVendor.cpp:60
12801548 msgid "Buyback"
1281 msgstr ""
1282
1283 #: ../../../src/MenuVendor.cpp:279
1549 msgstr "Kjøp tilbake"
1550
1551 #: ../../../src/MenuVendor.cpp:283
12841552 msgid "Vendor"
1285 msgstr ""
1286
1287 #: ../../../src/PowerManager.cpp:1136
1553 msgstr "Selger"
1554
1555 #: ../../../src/PowerManager.cpp:1208
12881556 #, c-format
12891557 msgid "+%d Shield"
12901558 msgstr "+%d Skjold"
12911559
1292 #: ../../../src/PowerManager.cpp:1392
1560 #: ../../../src/PowerManager.cpp:1465
12931561 msgid "You are already transformed, untransform first."
1294 msgstr ""
1295
1296 #: ../../../src/PowerManager.cpp:1404
1562 msgstr "Du er allerede forvandlet, forvandle deg tilbake først."
1563
1564 #: ../../../src/PowerManager.cpp:1477
12971565 msgid "Could not untransform at this position."
1298 msgstr ""
1566 msgstr "Kunne ikke forvandle tilbake på denne posisjonen."
12991567
13001568 #: ../../../src/QuestLog.cpp:234
13011569 msgid "Completed Quests"
1302 msgstr ""
1303
1304 #: ../../../src/SaveLoad.cpp:243 ../../../src/SaveLoad.cpp:244
1570 msgstr "Fullførte Oppdrag"
1571
1572 #: ../../../src/SaveLoad.cpp:250 ../../../src/SaveLoad.cpp:251
13051573 msgid "Game saved."
13061574 msgstr "Spill lagret."
13071575
1308 #: ../../../src/SDLInputState.cpp:582
1576 #: ../../../src/SDLInputState.cpp:643
1577 msgid "BkSp"
1578 msgstr ""
1579
1580 #: ../../../src/SDLInputState.cpp:644
1581 msgid "Caps"
1582 msgstr ""
1583
1584 #: ../../../src/SDLInputState.cpp:645
1585 msgid "Del"
1586 msgstr ""
1587
1588 #: ../../../src/SDLInputState.cpp:647 ../../../src/SDLInputState.cpp:677
1589 msgid "End"
1590 msgstr "End"
1591
1592 #: ../../../src/SDLInputState.cpp:648
1593 msgid "Esc"
1594 msgstr ""
1595
1596 #: ../../../src/SDLInputState.cpp:649 ../../../src/SDLInputState.cpp:679
1597 msgid "Home"
1598 msgstr "Hjem"
1599
1600 #: ../../../src/SDLInputState.cpp:650
1601 msgid "Ins"
1602 msgstr ""
1603
1604 #: ../../../src/SDLInputState.cpp:651
1605 msgid "LAlt"
1606 msgstr ""
1607
1608 #: ../../../src/SDLInputState.cpp:652
1609 msgid "LCtrl"
1610 msgstr ""
1611
1612 #: ../../../src/SDLInputState.cpp:654
1613 msgid "LShft"
1614 msgstr ""
1615
1616 #: ../../../src/SDLInputState.cpp:655
1617 msgid "Num"
1618 msgstr ""
1619
1620 #: ../../../src/SDLInputState.cpp:656
1621 msgid "PgDn"
1622 msgstr ""
1623
1624 #: ../../../src/SDLInputState.cpp:657
1625 msgid "PgUp"
1626 msgstr ""
1627
1628 #: ../../../src/SDLInputState.cpp:658 ../../../src/SDLInputState.cpp:688
1629 msgid "Pause"
1630 msgstr "Pause"
1631
1632 #: ../../../src/SDLInputState.cpp:659
1633 msgid "Print"
1634 msgstr ""
1635
1636 #: ../../../src/SDLInputState.cpp:660
1637 msgid "RAlt"
1638 msgstr ""
1639
1640 #: ../../../src/SDLInputState.cpp:661
1641 msgid "RCtrl"
1642 msgstr ""
1643
1644 #: ../../../src/SDLInputState.cpp:662
1645 msgid "Ret"
1646 msgstr ""
1647
1648 #: ../../../src/SDLInputState.cpp:664
1649 msgid "RShft"
1650 msgstr ""
1651
1652 #: ../../../src/SDLInputState.cpp:665
1653 msgid "SLock"
1654 msgstr ""
1655
1656 #: ../../../src/SDLInputState.cpp:666
1657 msgid "Spc"
1658 msgstr ""
1659
1660 #: ../../../src/SDLInputState.cpp:667 ../../../src/SDLInputState.cpp:697
1661 msgid "Tab"
1662 msgstr "Tab"
1663
1664 #: ../../../src/SDLInputState.cpp:673
13091665 msgid "Backspace"
1310 msgstr ""
1311
1312 #: ../../../src/SDLInputState.cpp:583
1666 msgstr "Tilbaketast"
1667
1668 #: ../../../src/SDLInputState.cpp:674
13131669 msgid "CapsLock"
1314 msgstr ""
1315
1316 #: ../../../src/SDLInputState.cpp:586
1317 msgid "End"
1318 msgstr ""
1319
1320 #: ../../../src/SDLInputState.cpp:587
1670 msgstr "CapsLock"
1671
1672 #: ../../../src/SDLInputState.cpp:678
13211673 msgid "Escape"
1322 msgstr ""
1323
1324 #: ../../../src/SDLInputState.cpp:588
1325 msgid "Home"
1326 msgstr ""
1327
1328 #: ../../../src/SDLInputState.cpp:589
1674 msgstr "Escape"
1675
1676 #: ../../../src/SDLInputState.cpp:680
13291677 msgid "Insert"
1330 msgstr ""
1331
1332 #: ../../../src/SDLInputState.cpp:590
1678 msgstr "Insert"
1679
1680 #: ../../../src/SDLInputState.cpp:681
13331681 msgid "Left Alt"
1334 msgstr ""
1335
1336 #: ../../../src/SDLInputState.cpp:591
1682 msgstr "Venstre Alt"
1683
1684 #: ../../../src/SDLInputState.cpp:682
13371685 msgid "Left Ctrl"
1338 msgstr ""
1339
1340 #: ../../../src/SDLInputState.cpp:593
1686 msgstr "Venstre Ctrl"
1687
1688 #: ../../../src/SDLInputState.cpp:684
13411689 msgid "Left Shift"
1342 msgstr ""
1343
1344 #: ../../../src/SDLInputState.cpp:594
1690 msgstr "Venstre Shift"
1691
1692 #: ../../../src/SDLInputState.cpp:685
13451693 msgid "NumLock"
1346 msgstr ""
1347
1348 #: ../../../src/SDLInputState.cpp:595
1694 msgstr "NumLock"
1695
1696 #: ../../../src/SDLInputState.cpp:686
13491697 msgid "PageDown"
1350 msgstr ""
1351
1352 #: ../../../src/SDLInputState.cpp:596
1698 msgstr "PageDown"
1699
1700 #: ../../../src/SDLInputState.cpp:687
13531701 msgid "PageUp"
1354 msgstr ""
1355
1356 #: ../../../src/SDLInputState.cpp:597
1357 msgid "Pause"
1358 msgstr ""
1359
1360 #: ../../../src/SDLInputState.cpp:598
1702 msgstr "PageUp"
1703
1704 #: ../../../src/SDLInputState.cpp:689
13611705 msgid "PrintScreen"
1362 msgstr ""
1363
1364 #: ../../../src/SDLInputState.cpp:599
1706 msgstr "PrintScreen"
1707
1708 #: ../../../src/SDLInputState.cpp:690
13651709 msgid "Right Alt"
1366 msgstr ""
1367
1368 #: ../../../src/SDLInputState.cpp:600
1710 msgstr "Høyre Alt"
1711
1712 #: ../../../src/SDLInputState.cpp:691
13691713 msgid "Right Ctrl"
1370 msgstr ""
1371
1372 #: ../../../src/SDLInputState.cpp:601
1714 msgstr "Høyre Ctrl"
1715
1716 #: ../../../src/SDLInputState.cpp:692
13731717 msgid "Return"
1374 msgstr ""
1375
1376 #: ../../../src/SDLInputState.cpp:603
1718 msgstr "Return"
1719
1720 #: ../../../src/SDLInputState.cpp:694
13771721 msgid "Right Shift"
1378 msgstr ""
1379
1380 #: ../../../src/SDLInputState.cpp:604
1722 msgstr "Høyre Shift"
1723
1724 #: ../../../src/SDLInputState.cpp:695
13811725 msgid "ScrollLock"
1382 msgstr ""
1383
1384 #: ../../../src/SDLInputState.cpp:605
1726 msgstr "ScrollLock"
1727
1728 #: ../../../src/SDLInputState.cpp:696
13851729 msgid "Space"
1386 msgstr ""
1387
1388 #: ../../../src/SDLInputState.cpp:606
1389 msgid "Tab"
1390 msgstr ""
1391
1392 #: ../../../src/SDLInputState.cpp:620
1730 msgstr "Mellomrom"
1731
1732 #: ../../../src/SDLInputState.cpp:710
1733 #, c-format
1734 msgid "M%d"
1735 msgstr ""
1736
1737 #: ../../../src/SDLInputState.cpp:716
13931738 #, c-format
13941739 msgid "Mouse %d"
13951740 msgstr "Mus %d"
13961741
1397 #: ../../../src/SDLInputState.cpp:628
1742 #: ../../../src/SDLInputState.cpp:726
1743 #, c-format
1744 msgid "JX%d-"
1745 msgstr ""
1746
1747 #: ../../../src/SDLInputState.cpp:728
13981748 #, c-format
13991749 msgid "Axis %d -"
1400 msgstr ""
1401
1402 #: ../../../src/SDLInputState.cpp:630
1750 msgstr "Akse %d -"
1751
1752 #: ../../../src/SDLInputState.cpp:732
1753 #, c-format
1754 msgid "JX%d+"
1755 msgstr ""
1756
1757 #: ../../../src/SDLInputState.cpp:734
14031758 #, c-format
14041759 msgid "Axis %d +"
1405 msgstr ""
1406
1407 #: ../../../src/SDLInputState.cpp:633
1760 msgstr "Akse %d +"
1761
1762 #: ../../../src/SDLInputState.cpp:739
1763 #, c-format
1764 msgid "JB%d"
1765 msgstr ""
1766
1767 #: ../../../src/SDLInputState.cpp:741
14081768 #, c-format
14091769 msgid "Button %d"
14101770 msgstr "Knapp %d"
14111771
1412 #: ../../../src/SDLInputState.cpp:637
1413 msgid "(none)"
1414 msgstr "(ingen)"
1415
1416 #: ../../../src/SDLInputState.cpp:677
1772 #: ../../../src/SDLInputState.cpp:787
14171773 msgid "Touch control D-Pad"
1418 msgstr ""
1419
1420 #: ../../../src/SDLInputState.cpp:701
1774 msgstr "Berøringskontroller D-Pad"
1775
1776 #: ../../../src/SDLInputState.cpp:810
14211777 msgid "Touch control buttons"
1422 msgstr ""
1423
1424 #: ../../../src/SDLInputState.cpp:716
1778 msgstr "Berøringskontroller knapper"
1779
1780 #: ../../../src/SDLInputState.cpp:824
14251781 msgid "Tap"
1426 msgstr ""
1427
1428 #: ../../../src/SDLInputState.cpp:760 ../../../src/SDLInputState.cpp:764
1429 #: ../../../src/SDLInputState.cpp:768
1782 msgstr "Kort trykk"
1783
1784 #: ../../../src/SDLInputState.cpp:876 ../../../src/SDLInputState.cpp:878
1785 #, c-format
1786 msgid "Can not bind: %s"
1787 msgstr "Kan ikke binde: %s"
1788
1789 #: ../../../src/SDLInputState.cpp:890 ../../../src/SDLInputState.cpp:894
1790 #: ../../../src/SDLInputState.cpp:898
14301791 #, c-format
14311792 msgid "'%s' is no longer bound to:"
1432 msgstr ""
1793 msgstr "'%s' er ikke lenger bundet til:"
14331794
14341795 #: ../../../src/Stats.cpp:38
14351796 msgid "Max HP"
1436 msgstr ""
1797 msgstr "Maks HP"
14371798
14381799 #: ../../../src/Stats.cpp:39
14391800 msgid "Total amount of HP."
1440 msgstr ""
1801 msgstr "Total mengde HP"
14411802
14421803 #: ../../../src/Stats.cpp:43
14431804 msgid "HP Regen"
1444 msgstr ""
1805 msgstr "HP Regen"
14451806
14461807 #: ../../../src/Stats.cpp:44
14471808 msgid "Ticks of HP regen per minute."
1448 msgstr ""
1809 msgstr "Tikkende HP-regenerering per minutt. "
14491810
14501811 #: ../../../src/Stats.cpp:48
14511812 msgid "Max MP"
1452 msgstr ""
1813 msgstr "Maks MP"
14531814
14541815 #: ../../../src/Stats.cpp:49
14551816 msgid "Total amount of MP."
1456 msgstr ""
1817 msgstr "Total mengde MP."
14571818
14581819 #: ../../../src/Stats.cpp:53
14591820 msgid "MP Regen"
1460 msgstr ""
1821 msgstr "MP regenerering"
14611822
14621823 #: ../../../src/Stats.cpp:54
14631824 msgid "Ticks of MP regen per minute."
1464 msgstr ""
1825 msgstr "Tikkende MP-regenerering per minutt. "
14651826
14661827 #: ../../../src/Stats.cpp:58
14671828 msgid "Accuracy"
14721833 "Accuracy rating. The enemy's Avoidance rating is subtracted from this value "
14731834 "to calculate your likeliness to land a direct hit."
14741835 msgstr ""
1836 "Treffsikkerhet rangering. Fiendens Unnvikelse rangering trekkes fra denne "
1837 "verdien for å kalkulere sannsynligheten for å lande et direkte treff."
14751838
14761839 #: ../../../src/Stats.cpp:63
14771840 msgid "Avoidance"
1478 msgstr ""
1841 msgstr "Unnvikelse"
14791842
14801843 #: ../../../src/Stats.cpp:64
14811844 msgid ""
14821845 "Avoidance rating. This value is subtracted from the enemy's Accuracy rating "
14831846 "to calculate their likeliness to land a direct hit."
14841847 msgstr ""
1848 "Unnvikelse rangering. Denne verdien trekkes fra fiendens treffsikkerhet "
1849 "rangering for å kalkulere sannsynligheten for å lande et direkte treff."
14851850
14861851 #: ../../../src/Stats.cpp:68
14871852 msgid "Absorb Min"
1488 msgstr ""
1853 msgstr "Absorbering Min"
14891854
14901855 #: ../../../src/Stats.cpp:69 ../../../src/Stats.cpp:74
14911856 msgid "Reduces the amount of damage taken."
1492 msgstr ""
1857 msgstr "Reduserer mengden mottatt skade."
14931858
14941859 #: ../../../src/Stats.cpp:73
14951860 msgid "Absorb Max"
1496 msgstr ""
1861 msgstr "Absorbering Maks"
14971862
14981863 #: ../../../src/Stats.cpp:78
14991864 msgid "Critical Hit Chance"
15011866
15021867 #: ../../../src/Stats.cpp:79
15031868 msgid "Chance for an attack to do extra damage."
1504 msgstr ""
1869 msgstr "Sjanse for at et angrep gjør ekstra skade."
15051870
15061871 #: ../../../src/Stats.cpp:83
15071872 msgid "Bonus XP"
1508 msgstr ""
1873 msgstr "Bonus EP"
15091874
15101875 #: ../../../src/Stats.cpp:84
15111876 msgid "Increases the XP gained per kill."
1512 msgstr ""
1877 msgstr "Øker EP-en mottatt per drap."
15131878
15141879 #: ../../../src/Stats.cpp:88
15151880 #, c-format
15191884 #: ../../../src/Stats.cpp:89
15201885 #, c-format
15211886 msgid "Increases the %s found per drop."
1522 msgstr ""
1887 msgstr "Øker %s funnet per slipp."
15231888
15241889 #: ../../../src/Stats.cpp:93
15251890 msgid "Item Find Chance"
1526 msgstr ""
1891 msgstr "Gjenstand Finnersjanse"
15271892
15281893 #: ../../../src/Stats.cpp:94
15291894 msgid "Increases the chance that an enemy will drop an item."
1530 msgstr ""
1895 msgstr "Øker sjansen for at en fiende vil slippe en gjenstand."
15311896
15321897 #: ../../../src/Stats.cpp:98
15331898 msgid "Stealth"
1534 msgstr ""
1899 msgstr "Snik"
15351900
15361901 #: ../../../src/Stats.cpp:99
15371902 msgid "Increases your ability to move undetected."
1538 msgstr ""
1903 msgstr "Øker evnen din til å bevege deg uoppdaget."
15391904
15401905 #: ../../../src/Stats.cpp:103
15411906 msgid "Poise"
1542 msgstr ""
1907 msgstr "Kroppsholdning"
15431908
15441909 #: ../../../src/Stats.cpp:104
15451910 msgid "Reduces your chance of stumbling when hit."
15471912
15481913 #: ../../../src/Stats.cpp:108
15491914 msgid "Missile Reflect Chance"
1550 msgstr ""
1915 msgstr "Sjanse for Prosjektiltrfleksjon"
15511916
15521917 #: ../../../src/Stats.cpp:109
15531918 msgid "Increases your chance of reflecting missiles back at enemies."
1554 msgstr ""
1919 msgstr "Øker sjansen din for å reflektere prosjektiler tilbake på fienden."
15551920
15561921 #: ../../../src/Stats.cpp:113
15571922 msgid "Damage Reflection"
1558 msgstr ""
1923 msgstr "Skade Refleksjon"
15591924
15601925 #: ../../../src/Stats.cpp:114
15611926 msgid "Deals a percentage of damage taken back to the attacker."
1562 msgstr ""
1927 msgstr "Reflekterer en prosentandel av mottatt skade tilbake på angriperen."
15631928
15641929 #: ../../../src/Stats.cpp:118
15651930 msgid "HP Steal"
1566 msgstr ""
1931 msgstr "HP Stjeling"
15671932
15681933 #: ../../../src/Stats.cpp:119
15691934 msgid "Percentage of HP stolen per hit."
1570 msgstr ""
1935 msgstr "Prosentandel av HP stjålet per slag."
15711936
15721937 #: ../../../src/Stats.cpp:123
15731938 msgid "MP Steal"
1574 msgstr ""
1939 msgstr "MP stjeling"
15751940
15761941 #: ../../../src/Stats.cpp:124
15771942 msgid "Percentage of MP stolen per hit."
1578 msgstr ""
1943 msgstr "Prosentandel av MP stjålet per slag."
15791944
15801945 #: ../../../src/Stats.cpp:128
15811946 msgid "Base HP"
1582 msgstr ""
1947 msgstr "Kjerne HP"
15831948
15841949 #: ../../../src/Stats.cpp:133
15851950 msgid "Base MP"
1586 msgstr ""
1587
1588 #: ../../../src/Utils.cpp:346
1951 msgstr "Kjerne MP"
1952
1953 #: ../../../src/Utils.cpp:365
15891954 msgid "k"
1590 msgstr ""
1591
1592 #: ../../../src/Utils.cpp:580
1955 msgstr "k"
1956
1957 #: ../../../src/Utils.cpp:635
15931958 #, c-format
15941959 msgid "%s second"
15951960 msgstr "%s sekund"
15961961
1597 #: ../../../src/Utils.cpp:583
1962 #: ../../../src/Utils.cpp:638
15981963 #, c-format
15991964 msgid "%s seconds"
16001965 msgstr "%s sekunder"
16011966
16021967 #: ../../../src/Version.cpp:139
16031968 msgid "or newer"
1604 msgstr ""
1969 msgstr "eller nyere"
16051970
16061971 #: ../../../src/Version.cpp:142
16071972 msgid "or older"
1608 msgstr ""
1973 msgstr "eller eldre"
1010 msgstr ""
1111 "Project-Id-Version: PACKAGE VERSION\n"
1212 "Report-Msgid-Bugs-To: \n"
13 "POT-Creation-Date: 2018-11-17 21:50-0500\n"
13 "POT-Creation-Date: 2021-05-23 20:34-0400\n"
1414 "PO-Revision-Date: 2018-03-28 19:16+0000\n"
1515 "Last-Translator: Justin Jacobs <jajdorkster@gmail.com>, 2018\n"
1616 "Language-Team: Dutch (https://www.transifex.com/flareorg/teams/84925/nl/)\n"
2020 "Language: nl\n"
2121 "Plural-Forms: nplurals=2; plural=(n != 1);\n"
2222
23 #: ../../../src/Avatar.cpp:367
23 #: ../../../src/Avatar.cpp:391
24 msgid "Your health is low!"
25 msgstr ""
26
27 #: ../../../src/Avatar.cpp:421
2428 #, c-format
2529 msgid "Congratulations, you have reached level %d!"
2630 msgstr "Gefeliciteerd, je hebt niveau %d bereikt!"
2731
28 #: ../../../src/Avatar.cpp:369
29 msgid "You may increase one attribute through the Character Menu."
30 msgstr "Je kunt één eigenschap in het karakter menu verhogen."
31
32 #: ../../../src/Avatar.cpp:583
33 msgid "You are defeated. Game over! ${INPUT_CONTINUE} to exit to Title."
34 msgstr ""
35
36 #: ../../../src/Avatar.cpp:589
37 msgid "You are defeated. ${INPUT_CONTINUE} to continue."
38 msgstr ""
39
40 #: ../../../src/Avatar.cpp:839
32 #: ../../../src/Avatar.cpp:423
33 msgid "You may increase one or more attributes through the Character Menu."
34 msgstr ""
35
36 #: ../../../src/Avatar.cpp:427
37 msgid "You may unlock one or more abilities through the Powers Menu."
38 msgstr ""
39
40 #: ../../../src/Avatar.cpp:689
41 msgid "You are defeated."
42 msgstr ""
43
44 #: ../../../src/Avatar.cpp:935
4145 msgid "Transformation expired. You have been moved back to a safe place."
4246 msgstr ""
4347
44 #: ../../../src/CampaignManager.cpp:153
48 #: ../../../src/CampaignManager.cpp:152
4549 #, c-format
4650 msgid "%d %s removed."
4751 msgstr ""
4852
49 #: ../../../src/CampaignManager.cpp:162
53 #: ../../../src/CampaignManager.cpp:171
54 #, c-format
55 msgid "%s x%d removed."
56 msgstr ""
57
58 #: ../../../src/CampaignManager.cpp:173
5059 #, c-format
5160 msgid "%s removed."
5261 msgstr ""
5362
54 #: ../../../src/CampaignManager.cpp:175
63 #: ../../../src/CampaignManager.cpp:187
64 #, c-format
65 msgid "You receive %d %s."
66 msgstr ""
67
68 #: ../../../src/CampaignManager.cpp:191
69 #, c-format
70 msgid "You receive %s x%d."
71 msgstr "Je ontvangt %s x%d."
72
73 #: ../../../src/CampaignManager.cpp:193
5574 #, c-format
5675 msgid "You receive %s."
5776 msgstr "Je ontvangt %s."
5877
59 #: ../../../src/CampaignManager.cpp:177
60 #, c-format
61 msgid "You receive %s x%d."
62 msgstr "Je ontvangt %s x%d."
63
64 #: ../../../src/CampaignManager.cpp:186
65 #, c-format
66 msgid "You receive %d %s."
67 msgstr ""
68
69 #: ../../../src/CampaignManager.cpp:195
78 #: ../../../src/CampaignManager.cpp:210
7079 #, c-format
7180 msgid "You receive %d XP."
7281 msgstr "Je ontvangt %d EP."
7382
74 #: ../../../src/CampaignManager.cpp:201
83 #: ../../../src/CampaignManager.cpp:216
7584 msgid "HP restored."
7685 msgstr ""
7786
78 #: ../../../src/CampaignManager.cpp:205
87 #: ../../../src/CampaignManager.cpp:220
7988 msgid "MP restored."
8089 msgstr ""
8190
82 #: ../../../src/CampaignManager.cpp:210
91 #: ../../../src/CampaignManager.cpp:225
8392 msgid "HP and MP restored."
8493 msgstr ""
8594
86 #: ../../../src/CampaignManager.cpp:214
95 #: ../../../src/CampaignManager.cpp:229
8796 msgid "Negative effects removed."
8897 msgstr ""
8998
90 #: ../../../src/CampaignManager.cpp:220
99 #: ../../../src/CampaignManager.cpp:235
91100 msgid "HP and MP restored, negative effects removed"
92101 msgstr ""
93102
105114 "The default renderer that is often faster than the SDL software renderer."
106115 msgstr ""
107116
108 #: ../../../src/EngineSettings.cpp:561
117 #: ../../../src/EngineSettings.cpp:586
109118 msgid "Adventurer"
110119 msgstr "Avonturier"
111120
112 #: ../../../src/Entity.cpp:511
121 #: ../../../src/Entity.cpp:527
113122 msgid "miss"
114123 msgstr ""
115124
116 #: ../../../src/Entity.cpp:548 ../../../src/PowerManager.cpp:1152
117 #: ../../../src/StatBlock.cpp:805 ../../../src/StatBlock.cpp:811
125 #: ../../../src/Entity.cpp:565 ../../../src/PowerManager.cpp:1224
126 #: ../../../src/StatBlock.cpp:917 ../../../src/StatBlock.cpp:923
118127 #, c-format
119128 msgid "+%d HP"
120129 msgstr ""
121130
122 #: ../../../src/Entity.cpp:555 ../../../src/StatBlock.cpp:816
123 #: ../../../src/StatBlock.cpp:822
131 #: ../../../src/Entity.cpp:572 ../../../src/StatBlock.cpp:928
132 #: ../../../src/StatBlock.cpp:934
124133 #, c-format
125134 msgid "+%d MP"
126135 msgstr ""
127136
128 #: ../../../src/EventManager.cpp:738
137 #: ../../../src/EventManager.cpp:792
129138 msgid "Unknown destination"
130139 msgstr "Onbekende bestemming"
131140
132 #: ../../../src/GameStateConfigBase.cpp:89
133 #: ../../../src/GameStateConfigBase.cpp:110
141 #: ../../../src/GameState.cpp:37 ../../../src/GameState.cpp:58
142 msgid "Loading..."
143 msgstr ""
144
145 #: ../../../src/GameStateLoad.cpp:90 ../../../src/GameStateLoad.cpp:103
146 msgid "Delete Save"
147 msgstr "Spel verwijderen"
148
149 #: ../../../src/GameStateLoad.cpp:90
150 msgid "Delete this save?"
151 msgstr "Dit spel werkelijk verwijderen?"
152
153 #: ../../../src/GameStateLoad.cpp:92
154 msgid "Exit to Title"
155 msgstr "Terug naar het menu"
156
157 #: ../../../src/GameStateLoad.cpp:95
158 msgid "New Game"
159 msgstr "New Spel"
160
161 #: ../../../src/GameStateLoad.cpp:99 ../../../src/GameStateLoad.cpp:607
162 msgid "Choose a Slot"
163 msgstr "Kies een Slot"
164
165 #: ../../../src/GameStateLoad.cpp:580 ../../../src/GameStateLoad.cpp:601
166 msgid "Enable a story mod to continue"
167 msgstr ""
168
169 #: ../../../src/GameStateLoad.cpp:596
170 msgid "Load Game"
171 msgstr "Spel Laden"
172
173 #: ../../../src/GameStateLoad.cpp:705
174 msgid "Entering game world..."
175 msgstr "Betreden spelwereld..."
176
177 #: ../../../src/GameStateLoad.cpp:708
178 msgid "Loading saved game..."
179 msgstr "Laden opgeslagen spel..."
180
181 #: ../../../src/GameStateLoad.cpp:741
182 msgid "Invalid save"
183 msgstr ""
184
185 #: ../../../src/GameStateLoad.cpp:765 ../../../src/ItemManager.cpp:745
186 #: ../../../src/MenuPowers.cpp:860 ../../../src/MenuPowers.cpp:1219
187 #: ../../../src/MenuPowers.cpp:1631
188 #, c-format
189 msgid "Level %d"
190 msgstr "Niveau %d"
191
192 #: ../../../src/GameStateNew.cpp:66 ../../../src/InputState.cpp:416
193 #: ../../../src/MenuConfig.cpp:246
194 msgid "Cancel"
195 msgstr "Annuleren"
196
197 #: ../../../src/GameStateNew.cpp:69
198 msgid "Create"
199 msgstr ""
200
201 #: ../../../src/GameStateNew.cpp:77
202 msgid "Randomize"
203 msgstr ""
204
205 #: ../../../src/GameStateNew.cpp:93
206 msgid "Choose a Portrait"
207 msgstr "Kies een Portret"
208
209 #: ../../../src/GameStateNew.cpp:97
210 msgid "Choose a Name"
211 msgstr "Kies een Naam"
212
213 #: ../../../src/GameStateNew.cpp:101
214 msgid "Permadeath?"
215 msgstr "Permanente dood?"
216
217 #: ../../../src/GameStateNew.cpp:105
218 msgid "Choose a Class"
219 msgstr ""
220
221 #: ../../../src/GameStateTitle.cpp:107
222 msgid "Play Game"
223 msgstr "Spel Spelen"
224
225 #: ../../../src/GameStateTitle.cpp:110
226 msgid "Enable a core mod to continue"
227 msgstr ""
228
229 #: ../../../src/GameStateTitle.cpp:114 ../../../src/MenuMiniMap.cpp:152
230 msgid "Configuration"
231 msgstr "Instellingen"
232
233 #: ../../../src/GameStateTitle.cpp:117
234 msgid "Credits"
235 msgstr ""
236
237 #: ../../../src/GameStateTitle.cpp:120
238 msgid "Exit Game"
239 msgstr "Spel Stoppen"
240
241 #: ../../../src/InputState.cpp:417
242 msgid "Accept"
243 msgstr ""
244
245 #: ../../../src/InputState.cpp:418 ../../../src/MenuMovementType.cpp:123
246 #: ../../../src/MenuMovementType.cpp:132 ../../../src/SDLInputState.cpp:668
247 #: ../../../src/SDLInputState.cpp:698
248 msgid "Up"
249 msgstr ""
250
251 #: ../../../src/InputState.cpp:419 ../../../src/MenuMovementType.cpp:125
252 #: ../../../src/MenuMovementType.cpp:134 ../../../src/SDLInputState.cpp:646
253 #: ../../../src/SDLInputState.cpp:676
254 msgid "Down"
255 msgstr ""
256
257 #: ../../../src/InputState.cpp:420 ../../../src/MenuMovementType.cpp:124
258 #: ../../../src/MenuMovementType.cpp:133 ../../../src/SDLInputState.cpp:653
259 #: ../../../src/SDLInputState.cpp:683
260 msgid "Left"
261 msgstr ""
262
263 #: ../../../src/InputState.cpp:421 ../../../src/MenuMovementType.cpp:126
264 #: ../../../src/MenuMovementType.cpp:135 ../../../src/SDLInputState.cpp:663
265 #: ../../../src/SDLInputState.cpp:693
266 msgid "Right"
267 msgstr ""
268
269 #: ../../../src/InputState.cpp:422
270 msgid "Bar1"
271 msgstr ""
272
273 #: ../../../src/InputState.cpp:423
274 msgid "Bar2"
275 msgstr ""
276
277 #: ../../../src/InputState.cpp:424
278 msgid "Bar3"
279 msgstr ""
280
281 #: ../../../src/InputState.cpp:425
282 msgid "Bar4"
283 msgstr ""
284
285 #: ../../../src/InputState.cpp:426
286 msgid "Bar5"
287 msgstr ""
288
289 #: ../../../src/InputState.cpp:427
290 msgid "Bar6"
291 msgstr ""
292
293 #: ../../../src/InputState.cpp:428
294 msgid "Bar7"
295 msgstr ""
296
297 #: ../../../src/InputState.cpp:429
298 msgid "Bar8"
299 msgstr ""
300
301 #: ../../../src/InputState.cpp:430
302 msgid "Bar9"
303 msgstr ""
304
305 #: ../../../src/InputState.cpp:431
306 msgid "Bar0"
307 msgstr ""
308
309 #: ../../../src/InputState.cpp:432 ../../../src/MenuActionBar.cpp:84
310 #: ../../../src/MenuCharacter.cpp:54
311 msgid "Character"
312 msgstr "Karakter"
313
314 #: ../../../src/InputState.cpp:433 ../../../src/MenuActionBar.cpp:85
315 #: ../../../src/MenuInventory.cpp:130 ../../../src/MenuVendor.cpp:59
316 msgid "Inventory"
317 msgstr "Voorraad"
318
319 #: ../../../src/InputState.cpp:434 ../../../src/MenuActionBar.cpp:86
320 #: ../../../src/MenuPowers.cpp:158
321 msgid "Powers"
322 msgstr "Vaardigheden"
323
324 #: ../../../src/InputState.cpp:435 ../../../src/MenuActionBar.cpp:87
325 #: ../../../src/MenuLog.cpp:72
326 msgid "Log"
327 msgstr "Log"
328
329 #: ../../../src/InputState.cpp:436
330 msgid "Main1"
331 msgstr ""
332
333 #: ../../../src/InputState.cpp:437
334 msgid "Main2"
335 msgstr ""
336
337 #: ../../../src/InputState.cpp:438
338 msgid "Ctrl"
339 msgstr ""
340
341 #: ../../../src/InputState.cpp:439
342 msgid "Shift"
343 msgstr ""
344
345 #: ../../../src/InputState.cpp:440
346 msgid "Alt"
347 msgstr ""
348
349 #: ../../../src/InputState.cpp:441 ../../../src/SDLInputState.cpp:675
350 msgid "Delete"
351 msgstr ""
352
353 #: ../../../src/InputState.cpp:442
354 msgid "ActionBar Accept"
355 msgstr ""
356
357 #: ../../../src/InputState.cpp:443
358 msgid "ActionBar Left"
359 msgstr ""
360
361 #: ../../../src/InputState.cpp:444
362 msgid "ActionBar Right"
363 msgstr ""
364
365 #: ../../../src/InputState.cpp:445
366 msgid "ActionBar Use"
367 msgstr ""
368
369 #: ../../../src/InputState.cpp:446
370 msgid "Developer Menu"
371 msgstr ""
372
373 #: ../../../src/InputState.cpp:448
374 msgid "Left Mouse"
375 msgstr ""
376
377 #: ../../../src/InputState.cpp:449
378 msgid "Middle Mouse"
379 msgstr ""
380
381 #: ../../../src/InputState.cpp:450
382 msgid "Right Mouse"
383 msgstr ""
384
385 #: ../../../src/InputState.cpp:451
386 msgid "Wheel Up"
387 msgstr ""
388
389 #: ../../../src/InputState.cpp:452
390 msgid "Wheel Down"
391 msgstr ""
392
393 #: ../../../src/InputState.cpp:453
394 msgid "Mouse X1"
395 msgstr ""
396
397 #: ../../../src/InputState.cpp:454
398 msgid "Mouse X2"
399 msgstr ""
400
401 #: ../../../src/ItemManager.cpp:475
402 msgid "Unknown Item"
403 msgstr ""
404
405 #: ../../../src/ItemManager.cpp:646 ../../../src/MenuPowers.cpp:959
406 #, c-format
407 msgid "%d%% Speed"
408 msgstr ""
409
410 #: ../../../src/ItemManager.cpp:650 ../../../src/MenuPowers.cpp:962
411 #, c-format
412 msgid "%d%% Attack Speed"
413 msgstr ""
414
415 #: ../../../src/ItemManager.cpp:672 ../../../src/MenuCharacter.cpp:352
416 #: ../../../src/MenuPowers.cpp:931
417 #, c-format
418 msgid "Resistance (%s)"
419 msgstr ""
420
421 #: ../../../src/ItemManager.cpp:682
422 #, c-format
423 msgid "Requires %s"
424 msgstr ""
425
426 #: ../../../src/ItemManager.cpp:731
427 msgid "Quest Item"
428 msgstr "Opdracht gerelateerd artikel"
429
430 #: ../../../src/ItemManager.cpp:758
431 #, c-format
432 msgid "Quality: %s"
433 msgstr ""
434
435 #: ../../../src/ItemManager.cpp:783
436 #, c-format
437 msgid "Absorb: %d-%d"
438 msgstr "Absorbtie: %d-%d"
439
440 #: ../../../src/ItemManager.cpp:785
441 #, c-format
442 msgid "Absorb: %d"
443 msgstr "Absorbtie: %d"
444
445 #: ../../../src/ItemManager.cpp:825 ../../../src/MenuPowers.cpp:1206
446 #: ../../../src/MenuPowers.cpp:1209
447 #, c-format
448 msgid "Requires Level %d"
449 msgstr ""
450
451 #: ../../../src/ItemManager.cpp:836 ../../../src/MenuPowers.cpp:1198
452 #: ../../../src/MenuPowers.cpp:1200
453 #, c-format
454 msgid "Requires %s %d"
455 msgstr ""
456
457 #: ../../../src/ItemManager.cpp:847
458 #, c-format
459 msgid "Requires Class: %s"
460 msgstr ""
461
462 #: ../../../src/ItemManager.cpp:863 ../../../src/ItemManager.cpp:875
463 #, c-format
464 msgid "Buy Price: %d %s"
465 msgstr ""
466
467 #: ../../../src/ItemManager.cpp:865 ../../../src/ItemManager.cpp:877
468 #, c-format
469 msgid "Buy Price: %d %s each"
470 msgstr ""
471
472 #: ../../../src/ItemManager.cpp:885
473 #, c-format
474 msgid "Sell Price: %d %s"
475 msgstr ""
476
477 #: ../../../src/ItemManager.cpp:887
478 #, c-format
479 msgid "Sell Price: %d %s each"
480 msgstr ""
481
482 #: ../../../src/ItemManager.cpp:896
483 msgid "Set:"
484 msgstr ""
485
486 #: ../../../src/ItemManager.cpp:903
487 #, c-format
488 msgid "%d items:"
489 msgstr ""
490
491 #: ../../../src/ItemManager.cpp:915
492 #, c-format
493 msgid "Press [%s] to read"
494 msgstr ""
495
496 #: ../../../src/ItemManager.cpp:918
497 #, c-format
498 msgid "Press [%s] to use"
499 msgstr ""
500
501 #: ../../../src/MenuActionBar.cpp:239 ../../../src/MenuActionBar.cpp:246
502 #: ../../../src/MenuActionBar.cpp:249 ../../../src/MenuActionBar.cpp:255
503 #, c-format
504 msgid "Hotkey: %s"
505 msgstr ""
506
507 #: ../../../src/MenuActionBar.cpp:621
508 msgid "Not enough MP."
509 msgstr ""
510
511 #: ../../../src/MenuActiveEffects.cpp:124
512 #, c-format
513 msgid "x%d"
514 msgstr ""
515
516 #: ../../../src/MenuActiveEffects.cpp:219
517 msgid "Remaining:"
518 msgstr ""
519
520 #: ../../../src/MenuActiveEffects.cpp:225
521 #, c-format
522 msgid "x%d stacks"
523 msgstr ""
524
525 #: ../../../src/MenuCharacter.cpp:73 ../../../src/MenuCharacter.cpp:78
526 msgid "Name"
527 msgstr "Naam"
528
529 #: ../../../src/MenuCharacter.cpp:74 ../../../src/MenuCharacter.cpp:79
530 msgid "Level"
531 msgstr "Niveau"
532
533 #: ../../../src/MenuCharacter.cpp:309
534 #, c-format
535 msgid "Available stat points: %d"
536 msgstr ""
537
538 #: ../../../src/MenuCharacter.cpp:353
539 #, c-format
540 msgid "Reduces the damage taken from \"%s\" elemental attacks."
541 msgstr ""
542
543 #: ../../../src/MenuCharacter.cpp:363 ../../../src/MenuManager.cpp:301
544 #, c-format
545 msgid "XP: %d"
546 msgstr "EP: %d"
547
548 #: ../../../src/MenuCharacter.cpp:365
549 #, c-format
550 msgid "Next: %d"
551 msgstr "Volgende: %d"
552
553 #: ../../../src/MenuCharacter.cpp:371
554 #, c-format
555 msgid "base (%d), bonus (%d)"
556 msgstr "basis (%d), bonus (%d)"
557
558 #: ../../../src/MenuCharacter.cpp:379 ../../../src/MenuCharacter.cpp:393
559 msgid "Related stats:"
560 msgstr ""
561
562 #: ../../../src/MenuCharacter.cpp:419 ../../../src/MenuCharacter.cpp:443
563 #, c-format
564 msgid "Each level grants %d."
565 msgstr ""
566
567 #: ../../../src/MenuCharacter.cpp:423 ../../../src/MenuCharacter.cpp:447
568 #, c-format
569 msgid "Each point of %s grants %d."
570 msgstr ""
571
572 #: ../../../src/MenuConfig.cpp:122 ../../../src/MenuConfig.cpp:1171
573 msgid "Clear"
574 msgstr ""
575
576 #: ../../../src/MenuConfig.cpp:122 ../../../src/MenuConfig.cpp:1169
577 msgid "Assign:"
578 msgstr ""
579
580 #: ../../../src/MenuConfig.cpp:123 ../../../src/MenuConfig.cpp:245
134581 msgid "Defaults"
135582 msgstr "Standaardwaarden"
136583
137 #: ../../../src/GameStateConfigBase.cpp:89
584 #: ../../../src/MenuConfig.cpp:123
138585 msgid "Reset ALL settings?"
139586 msgstr ""
140587
141 #: ../../../src/GameStateConfigBase.cpp:109 ../../../src/MenuNumPicker.cpp:49
588 #: ../../../src/MenuConfig.cpp:244 ../../../src/MenuNumPicker.cpp:49
142589 msgid "OK"
143590 msgstr ""
144591
145 #: ../../../src/GameStateConfigBase.cpp:111 ../../../src/GameStateNew.cpp:65
146 #: ../../../src/InputState.cpp:401
147 msgid "Cancel"
148 msgstr "Annuleren"
149
150 #: ../../../src/GameStateConfigBase.cpp:160
151 #: ../../../src/GameStateConfigDesktop.cpp:130
592 #: ../../../src/MenuConfig.cpp:248 ../../../src/MenuGameOver.cpp:72
593 msgid "Continue"
594 msgstr ""
595
596 #: ../../../src/MenuConfig.cpp:250
597 msgid "Save Game"
598 msgstr ""
599
600 #: ../../../src/MenuConfig.cpp:293
601 msgid "Default"
602 msgstr ""
603
604 #: ../../../src/MenuConfig.cpp:293
605 msgid ""
606 "Show all loot tooltips, except for those that would be obscured by the "
607 "player or an enemy. Temporarily show all loot tooltips with 'Alt'."
608 msgstr ""
609
610 #: ../../../src/MenuConfig.cpp:294
611 msgid "Show all"
612 msgstr ""
613
614 #: ../../../src/MenuConfig.cpp:294
615 msgid ""
616 "Always show loot tooltips. Temporarily hide all loot tooltips with 'Alt'."
617 msgstr ""
618
619 #: ../../../src/MenuConfig.cpp:295 ../../../src/MenuConfig.cpp:300
620 msgid "Hidden"
621 msgstr ""
622
623 #: ../../../src/MenuConfig.cpp:295
624 msgid ""
625 "Always hide loot tooltips, except for when a piece of loot is hovered with "
626 "the mouse cursor. Temporarily show all loot tooltips with 'Alt'."
627 msgstr ""
628
629 #: ../../../src/MenuConfig.cpp:298
630 msgid "Visible"
631 msgstr ""
632
633 #: ../../../src/MenuConfig.cpp:299
634 msgid "Visible (2x zoom)"
635 msgstr ""
636
637 #: ../../../src/MenuConfig.cpp:303
638 msgid ""
639 "Controls the type of warning to be activated when the player is below the "
640 "low health threshold."
641 msgstr ""
642
643 #: ../../../src/MenuConfig.cpp:304
644 msgid "- Display a message"
645 msgstr ""
646
647 #: ../../../src/MenuConfig.cpp:305
648 msgid "- Play a sound"
649 msgstr ""
650
651 #: ../../../src/MenuConfig.cpp:306
652 msgid "- Change the cursor"
653 msgstr ""
654
655 #: ../../../src/MenuConfig.cpp:308
656 msgid "Disabled"
657 msgstr ""
658
659 #: ../../../src/MenuConfig.cpp:309
660 msgid "All"
661 msgstr ""
662
663 #: ../../../src/MenuConfig.cpp:310
664 msgid "Message & Cursor"
665 msgstr ""
666
667 #: ../../../src/MenuConfig.cpp:311
668 msgid "Message & Sound"
669 msgstr ""
670
671 #: ../../../src/MenuConfig.cpp:312
672 msgid "Sound & Cursor"
673 msgstr ""
674
675 #: ../../../src/MenuConfig.cpp:313
676 msgid "Message"
677 msgstr ""
678
679 #: ../../../src/MenuConfig.cpp:314
680 msgid "Cursor"
681 msgstr ""
682
683 #: ../../../src/MenuConfig.cpp:315
684 msgid "Sound"
685 msgstr ""
686
687 #: ../../../src/MenuConfig.cpp:321
688 msgid ""
689 "When the player's health drops below the given threshold, the low health "
690 "notifications are triggered if one or more of them is enabled."
691 msgstr ""
692
693 #: ../../../src/MenuConfig.cpp:334 ../../../src/MenuConfig.cpp:1587
694 #: ../../../src/MenuGameOver.cpp:116
695 msgid "Exit"
696 msgstr "Stoppen"
697
698 #: ../../../src/MenuConfig.cpp:335
699 msgid "Video"
700 msgstr "Video"
701
702 #: ../../../src/MenuConfig.cpp:336
152703 msgid "Audio"
153704 msgstr "Audio"
154705
155 #: ../../../src/GameStateConfigBase.cpp:161
156 #: ../../../src/GameStateConfigDesktop.cpp:131
706 #: ../../../src/MenuConfig.cpp:337
157707 msgid "Interface"
158708 msgstr "Omgeving"
159709
160 #: ../../../src/GameStateConfigBase.cpp:162
161 #: ../../../src/GameStateConfigDesktop.cpp:134
710 #: ../../../src/MenuConfig.cpp:338
711 msgid "Input"
712 msgstr "Invoer"
713
714 #: ../../../src/MenuConfig.cpp:339
715 msgid "Keybindings"
716 msgstr "Sneltoetsen"
717
718 #: ../../../src/MenuConfig.cpp:340
162719 msgid "Mods"
163720 msgstr "Mods"
164721
165 #: ../../../src/GameStateConfigBase.cpp:249 ../../../src/MenuExit.cpp:72
722 #: ../../../src/MenuConfig.cpp:352
723 msgid "Paused"
724 msgstr ""
725
726 #: ../../../src/MenuConfig.cpp:355
727 msgid "Time Played"
728 msgstr ""
729
730 #: ../../../src/MenuConfig.cpp:361
731 msgid "Renderer"
732 msgstr ""
733
734 #: ../../../src/MenuConfig.cpp:362
735 msgid "Full Screen Mode"
736 msgstr "Volledig scherm"
737
738 #: ../../../src/MenuConfig.cpp:363
739 msgid "Hardware surfaces"
740 msgstr "Hardware oppervlakken"
741
742 #: ../../../src/MenuConfig.cpp:364
743 msgid "V-Sync"
744 msgstr ""
745
746 #: ../../../src/MenuConfig.cpp:365
747 msgid "Texture Filtering"
748 msgstr ""
749
750 #: ../../../src/MenuConfig.cpp:366
751 msgid "DPI scaling"
752 msgstr ""
753
754 #: ../../../src/MenuConfig.cpp:367
755 msgid "Parallax Layers"
756 msgstr ""
757
758 #: ../../../src/MenuConfig.cpp:368
759 msgid "Allow changing gamma"
760 msgstr ""
761
762 #: ../../../src/MenuConfig.cpp:369
763 msgid "Gamma"
764 msgstr "Gammacorrectie"
765
766 #: ../../../src/MenuConfig.cpp:371
767 msgid "Sound Volume"
768 msgstr "Geluidsvolume"
769
770 #: ../../../src/MenuConfig.cpp:372
166771 msgid "Music Volume"
167772 msgstr "Muziekvolume"
168773
169 #: ../../../src/GameStateConfigBase.cpp:253 ../../../src/MenuExit.cpp:77
170 msgid "Sound Volume"
171 msgstr "Geluidsvolume"
172
173 #: ../../../src/GameStateConfigBase.cpp:257
774 #: ../../../src/MenuConfig.cpp:374
174775 msgid "Language"
175776 msgstr "Taal"
176777
177 #: ../../../src/GameStateConfigBase.cpp:266
778 #: ../../../src/MenuConfig.cpp:375
178779 msgid "Show FPS"
179780 msgstr ""
180781
181 #: ../../../src/GameStateConfigBase.cpp:270
782 #: ../../../src/MenuConfig.cpp:376
783 msgid "Hardware mouse cursor"
784 msgstr ""
785
786 #: ../../../src/MenuConfig.cpp:377
182787 msgid "Colorblind Mode"
183788 msgstr ""
184789
185 #: ../../../src/GameStateConfigBase.cpp:274
186 msgid "Hardware mouse cursor"
187 msgstr ""
188
189 #: ../../../src/GameStateConfigBase.cpp:278
790 #: ../../../src/MenuConfig.cpp:378
190791 msgid "Developer Mode"
191792 msgstr ""
192793
193 #: ../../../src/GameStateConfigBase.cpp:282
794 #: ../../../src/MenuConfig.cpp:379
194795 msgid "Subtitles"
195796 msgstr ""
196797
197 #: ../../../src/GameStateConfigBase.cpp:286
198 msgid "Active Mods"
199 msgstr "Actieve Mods"
200
201 #: ../../../src/GameStateConfigBase.cpp:295
202 msgid "Available Mods"
203 msgstr ""
204
205 #: ../../../src/GameStateConfigBase.cpp:314
206 msgid "<< Disable"
207 msgstr ""
208
209 #: ../../../src/GameStateConfigBase.cpp:320
210 msgid "Enable >>"
211 msgstr ""
212
213 #: ../../../src/GameStateConfigBase.cpp:873
214 msgid "Version:"
215 msgstr ""
216
217 #: ../../../src/GameStateConfigBase.cpp:878
218 msgid "Game:"
219 msgstr ""
220
221 #: ../../../src/GameStateConfigBase.cpp:883
222 msgid "Engine version:"
223 msgstr ""
224
225 #: ../../../src/GameStateConfigBase.cpp:891
226 msgid "Requires mods:"
227 msgstr ""
228
229 #: ../../../src/GameStateConfigDesktop.cpp:83
230 #: ../../../src/GameStateConfigDesktop.cpp:751
231 msgid "Clear"
232 msgstr ""
233
234 #: ../../../src/GameStateConfigDesktop.cpp:83
235 #: ../../../src/GameStateConfigDesktop.cpp:749
236 msgid "Assign:"
237 msgstr ""
238
239 #: ../../../src/GameStateConfigDesktop.cpp:128
240 msgid "Video"
241 msgstr "Video"
242
243 #: ../../../src/GameStateConfigDesktop.cpp:132
244 msgid "Input"
245 msgstr "Invoer"
246
247 #: ../../../src/GameStateConfigDesktop.cpp:133
248 msgid "Keybindings"
249 msgstr "Sneltoetsen"
250
251 #: ../../../src/GameStateConfigDesktop.cpp:188
798 #: ../../../src/MenuConfig.cpp:380
799 msgid "Loot tooltip visibility"
800 msgstr ""
801
802 #: ../../../src/MenuConfig.cpp:381
803 msgid "Mini-map mode"
804 msgstr ""
805
806 #: ../../../src/MenuConfig.cpp:382
807 msgid "Always show stat bar labels"
808 msgstr ""
809
810 #: ../../../src/MenuConfig.cpp:383
811 msgid "Allow stat bar auto-hiding"
812 msgstr ""
813
814 #: ../../../src/MenuConfig.cpp:384
815 msgid "Show combat text"
816 msgstr "Laat strijdtekst zien"
817
818 #: ../../../src/MenuConfig.cpp:385
819 msgid "Automatically equip items"
820 msgstr ""
821
822 #: ../../../src/MenuConfig.cpp:386
823 msgid "Show hidden entity markers"
824 msgstr ""
825
826 #: ../../../src/MenuConfig.cpp:387
827 msgid "Low health notification"
828 msgstr ""
829
830 #: ../../../src/MenuConfig.cpp:388
831 msgid "Low health threshold"
832 msgstr ""
833
834 #: ../../../src/MenuConfig.cpp:389
835 msgid "Show item comparison tooltips"
836 msgstr ""
837
838 #: ../../../src/MenuConfig.cpp:392 ../../../src/MenuMovementType.cpp:94
839 #: ../../../src/MenuMovementType.cpp:131
840 msgid "Joystick"
841 msgstr "Joystick"
842
843 #: ../../../src/MenuConfig.cpp:393
844 msgid "Move hero using mouse"
845 msgstr "Muisbesturing"
846
847 #: ../../../src/MenuConfig.cpp:394
848 msgid "Mouse aim"
849 msgstr ""
850
851 #: ../../../src/MenuConfig.cpp:395
852 msgid "Do not use mouse"
853 msgstr ""
854
855 #: ../../../src/MenuConfig.cpp:396
856 msgid "Swap mouse movement button"
857 msgstr ""
858
859 #: ../../../src/MenuConfig.cpp:397
860 msgid "Attack with mouse movement"
861 msgstr ""
862
863 #: ../../../src/MenuConfig.cpp:398
864 msgid "Joystick Deadzone"
865 msgstr ""
866
867 #: ../../../src/MenuConfig.cpp:408
868 #, c-format
869 msgid "Primary binding: %s"
870 msgstr ""
871
872 #: ../../../src/MenuConfig.cpp:409
873 #, c-format
874 msgid "Alternate binding: %s"
875 msgstr ""
876
877 #: ../../../src/MenuConfig.cpp:410
878 #, c-format
879 msgid "Joystick binding: %s"
880 msgstr ""
881
882 #: ../../../src/MenuConfig.cpp:511
252883 msgid ""
253884 "Will try to store surfaces in video memory versus system memory. The effect "
254885 "this has on performance depends on the renderer."
255886 msgstr ""
256887
257 #: ../../../src/GameStateConfigDesktop.cpp:189
888 #: ../../../src/MenuConfig.cpp:512
258889 msgid ""
259890 "Prevents screen tearing. Disable if you experience \"stuttering\" in "
260891 "windowed mode or input lag."
261892 msgstr ""
262893
263 #: ../../../src/GameStateConfigDesktop.cpp:190
894 #: ../../../src/MenuConfig.cpp:513
264895 msgid ""
265896 "When enabled, this uses the screen DPI in addition to the window dimensions "
266897 "to scale the rendering resolution. Otherwise, only the window dimensions are"
267898 " used."
268899 msgstr ""
269900
270 #: ../../../src/GameStateConfigDesktop.cpp:191
901 #: ../../../src/MenuConfig.cpp:514
271902 msgid ""
272903 "This enables parallax (non-tile) layers. Disabling this setting can improve "
273904 "performance in some cases."
274905 msgstr ""
275906
276 #: ../../../src/GameStateConfigDesktop.cpp:192
277 msgid "Experimental"
278 msgstr ""
279
280 #: ../../../src/GameStateConfigDesktop.cpp:193
281 msgid "For handheld devices"
282 msgstr ""
283
284 #: ../../../src/GameStateConfigDesktop.cpp:211
285 msgid "Renderer"
286 msgstr ""
287
288 #: ../../../src/GameStateConfigDesktop.cpp:227
289 msgid "Full Screen Mode"
290 msgstr "Volledig scherm"
291
292 #: ../../../src/GameStateConfigDesktop.cpp:231
293 msgid "Move hero using mouse"
294 msgstr "Muisbesturing"
295
296 #: ../../../src/GameStateConfigDesktop.cpp:235
297 msgid "Hardware surfaces"
298 msgstr "Hardware oppervlakken"
299
300 #: ../../../src/GameStateConfigDesktop.cpp:239
301 msgid "V-Sync"
302 msgstr ""
303
304 #: ../../../src/GameStateConfigDesktop.cpp:243
305 msgid "Texture Filtering"
306 msgstr ""
307
308 #: ../../../src/GameStateConfigDesktop.cpp:247
309 msgid "DPI scaling"
310 msgstr ""
311
312 #: ../../../src/GameStateConfigDesktop.cpp:251
313 msgid "Parallax Layers"
314 msgstr ""
315
316 #: ../../../src/GameStateConfigDesktop.cpp:255
317 msgid "Allow changing gamma"
318 msgstr ""
319
320 #: ../../../src/GameStateConfigDesktop.cpp:259
321 msgid "Gamma"
322 msgstr "Gammacorrectie"
323
324 #: ../../../src/GameStateConfigDesktop.cpp:263
325 msgid "Use joystick"
326 msgstr "Gebruik de Joystick"
327
328 #: ../../../src/GameStateConfigDesktop.cpp:267
329 msgid "Joystick"
330 msgstr "Joystick"
331
332 #: ../../../src/GameStateConfigDesktop.cpp:283
333 msgid "Mouse aim"
334 msgstr ""
335
336 #: ../../../src/GameStateConfigDesktop.cpp:287
337 msgid "Do not use mouse"
338 msgstr ""
339
340 #: ../../../src/GameStateConfigDesktop.cpp:291
341 msgid "Joystick Deadzone"
342 msgstr ""
343
344 #: ../../../src/GameState.cpp:37 ../../../src/GameState.cpp:58
345 msgid "Loading..."
346 msgstr ""
347
348 #: ../../../src/GameStateLoad.cpp:88 ../../../src/GameStateLoad.cpp:101
349 msgid "Delete Save"
350 msgstr "Spel verwijderen"
351
352 #: ../../../src/GameStateLoad.cpp:88
353 msgid "Delete this save?"
354 msgstr "Dit spel werkelijk verwijderen?"
355
356 #: ../../../src/GameStateLoad.cpp:90
357 msgid "Exit to Title"
358 msgstr "Terug naar het menu"
359
360 #: ../../../src/GameStateLoad.cpp:93
361 msgid "New Game"
362 msgstr "New Spel"
363
364 #: ../../../src/GameStateLoad.cpp:97 ../../../src/GameStateLoad.cpp:600
365 msgid "Choose a Slot"
366 msgstr "Kies een Slot"
367
368 #: ../../../src/GameStateLoad.cpp:573 ../../../src/GameStateLoad.cpp:594
369 msgid "Enable a story mod to continue"
370 msgstr ""
371
372 #: ../../../src/GameStateLoad.cpp:589
373 msgid "Load Game"
374 msgstr "Spel Laden"
375
376 #: ../../../src/GameStateLoad.cpp:695
377 msgid "Entering game world..."
378 msgstr "Betreden spelwereld..."
379
380 #: ../../../src/GameStateLoad.cpp:698
381 msgid "Loading saved game..."
382 msgstr "Laden opgeslagen spel..."
383
384 #: ../../../src/GameStateLoad.cpp:731
385 msgid "Invalid save"
386 msgstr ""
387
388 #: ../../../src/GameStateLoad.cpp:755 ../../../src/ItemManager.cpp:747
389 #: ../../../src/MenuPowers.cpp:778 ../../../src/MenuPowers.cpp:1144
390 #: ../../../src/MenuPowers.cpp:1542
391 #, c-format
392 msgid "Level %d"
393 msgstr "Niveau %d"
394
395 #: ../../../src/GameStateNew.cpp:68
396 msgid "Create"
397 msgstr ""
398
399 #: ../../../src/GameStateNew.cpp:76
400 msgid "Randomize"
401 msgstr ""
402
403 #: ../../../src/GameStateNew.cpp:92
404 msgid "Choose a Portrait"
405 msgstr "Kies een Portret"
406
407 #: ../../../src/GameStateNew.cpp:96
408 msgid "Choose a Name"
409 msgstr "Kies een Naam"
410
411 #: ../../../src/GameStateNew.cpp:100
412 msgid "Permadeath?"
413 msgstr "Permanente dood?"
414
415 #: ../../../src/GameStateNew.cpp:104
416 msgid "Choose a Class"
417 msgstr ""
418
419 #: ../../../src/GameStateTitle.cpp:108
420 msgid "Play Game"
421 msgstr "Spel Spelen"
422
423 #: ../../../src/GameStateTitle.cpp:111
424 msgid "Enable a core mod to continue"
425 msgstr ""
426
427 #: ../../../src/GameStateTitle.cpp:115
428 msgid "Configuration"
429 msgstr "Instellingen"
430
431 #: ../../../src/GameStateTitle.cpp:118
432 msgid "Credits"
433 msgstr ""
434
435 #: ../../../src/GameStateTitle.cpp:121
436 msgid "Exit Game"
437 msgstr "Spel Stoppen"
438
439 #: ../../../src/InputState.cpp:402
440 msgid "Accept"
441 msgstr ""
442
443 #: ../../../src/InputState.cpp:403 ../../../src/SDLInputState.cpp:607
444 msgid "Up"
445 msgstr ""
446
447 #: ../../../src/InputState.cpp:404 ../../../src/SDLInputState.cpp:585
448 msgid "Down"
449 msgstr ""
450
451 #: ../../../src/InputState.cpp:405 ../../../src/SDLInputState.cpp:592
452 msgid "Left"
453 msgstr ""
454
455 #: ../../../src/InputState.cpp:406 ../../../src/SDLInputState.cpp:602
456 msgid "Right"
457 msgstr ""
458
459 #: ../../../src/InputState.cpp:407
460 msgid "Bar1"
461 msgstr ""
462
463 #: ../../../src/InputState.cpp:408
464 msgid "Bar2"
465 msgstr ""
466
467 #: ../../../src/InputState.cpp:409
468 msgid "Bar3"
469 msgstr ""
470
471 #: ../../../src/InputState.cpp:410
472 msgid "Bar4"
473 msgstr ""
474
475 #: ../../../src/InputState.cpp:411
476 msgid "Bar5"
477 msgstr ""
478
479 #: ../../../src/InputState.cpp:412
480 msgid "Bar6"
481 msgstr ""
482
483 #: ../../../src/InputState.cpp:413
484 msgid "Bar7"
485 msgstr ""
486
487 #: ../../../src/InputState.cpp:414
488 msgid "Bar8"
489 msgstr ""
490
491 #: ../../../src/InputState.cpp:415
492 msgid "Bar9"
493 msgstr ""
494
495 #: ../../../src/InputState.cpp:416
496 msgid "Bar0"
497 msgstr ""
498
499 #: ../../../src/InputState.cpp:417 ../../../src/MenuActionBar.cpp:83
500 #: ../../../src/MenuCharacter.cpp:54
501 msgid "Character"
502 msgstr "Karakter"
503
504 #: ../../../src/InputState.cpp:418 ../../../src/MenuActionBar.cpp:84
505 #: ../../../src/MenuInventory.cpp:137 ../../../src/MenuVendor.cpp:57
506 msgid "Inventory"
507 msgstr "Voorraad"
508
509 #: ../../../src/InputState.cpp:419 ../../../src/MenuActionBar.cpp:85
510 #: ../../../src/MenuPowers.cpp:168
511 msgid "Powers"
512 msgstr "Vaardigheden"
513
514 #: ../../../src/InputState.cpp:420 ../../../src/MenuActionBar.cpp:86
515 #: ../../../src/MenuLog.cpp:72
516 msgid "Log"
517 msgstr "Log"
518
519 #: ../../../src/InputState.cpp:421
520 msgid "Main1"
521 msgstr ""
522
523 #: ../../../src/InputState.cpp:422
524 msgid "Main2"
525 msgstr ""
526
527 #: ../../../src/InputState.cpp:423
528 msgid "Ctrl"
529 msgstr ""
530
531 #: ../../../src/InputState.cpp:424
532 msgid "Shift"
533 msgstr ""
534
535 #: ../../../src/InputState.cpp:425
536 msgid "Alt"
537 msgstr ""
538
539 #: ../../../src/InputState.cpp:426 ../../../src/SDLInputState.cpp:584
540 msgid "Delete"
541 msgstr ""
542
543 #: ../../../src/InputState.cpp:427
544 msgid "ActionBar Accept"
545 msgstr ""
546
547 #: ../../../src/InputState.cpp:428
548 msgid "ActionBar Left"
549 msgstr ""
550
551 #: ../../../src/InputState.cpp:429
552 msgid "ActionBar Right"
553 msgstr ""
554
555 #: ../../../src/InputState.cpp:430
556 msgid "ActionBar Use"
557 msgstr ""
558
559 #: ../../../src/InputState.cpp:431
560 msgid "Developer Menu"
561 msgstr ""
562
563 #: ../../../src/InputState.cpp:433
564 msgid "Left Mouse"
565 msgstr ""
566
567 #: ../../../src/InputState.cpp:434
568 msgid "Middle Mouse"
569 msgstr ""
570
571 #: ../../../src/InputState.cpp:435
572 msgid "Right Mouse"
573 msgstr ""
574
575 #: ../../../src/InputState.cpp:436
576 msgid "Wheel Up"
577 msgstr ""
578
579 #: ../../../src/InputState.cpp:437
580 msgid "Wheel Down"
581 msgstr ""
582
583 #: ../../../src/InputState.cpp:438
584 msgid "Mouse X1"
585 msgstr ""
586
587 #: ../../../src/InputState.cpp:439
588 msgid "Mouse X2"
589 msgstr ""
590
591 #: ../../../src/ItemManager.cpp:450 ../../../src/ItemManager.cpp:453
592 msgid "Unknown Item"
593 msgstr ""
594
595 #: ../../../src/ItemManager.cpp:648 ../../../src/MenuPowers.cpp:887
596 #, c-format
597 msgid "%d%% Speed"
598 msgstr ""
599
600 #: ../../../src/ItemManager.cpp:652 ../../../src/MenuPowers.cpp:890
601 #, c-format
602 msgid "%d%% Attack Speed"
603 msgstr ""
604
605 #: ../../../src/ItemManager.cpp:674 ../../../src/MenuCharacter.cpp:354
606 #: ../../../src/MenuPowers.cpp:833
607 #, c-format
608 msgid "Resistance (%s)"
609 msgstr ""
610
611 #: ../../../src/ItemManager.cpp:684
612 #, c-format
613 msgid "Requires %s"
614 msgstr ""
615
616 #: ../../../src/ItemManager.cpp:733
617 msgid "Quest Item"
618 msgstr "Opdracht gerelateerd artikel"
619
620 #: ../../../src/ItemManager.cpp:760
621 #, c-format
622 msgid "Quality: %s"
623 msgstr ""
624
625 #: ../../../src/ItemManager.cpp:785
626 #, c-format
627 msgid "Absorb: %d-%d"
628 msgstr "Absorbtie: %d-%d"
629
630 #: ../../../src/ItemManager.cpp:787
631 #, c-format
632 msgid "Absorb: %d"
633 msgstr "Absorbtie: %d"
634
635 #: ../../../src/ItemManager.cpp:827 ../../../src/MenuPowers.cpp:1131
636 #: ../../../src/MenuPowers.cpp:1134
637 #, c-format
638 msgid "Requires Level %d"
639 msgstr ""
640
641 #: ../../../src/ItemManager.cpp:838 ../../../src/MenuPowers.cpp:1123
642 #: ../../../src/MenuPowers.cpp:1125
643 #, c-format
644 msgid "Requires %s %d"
645 msgstr ""
646
647 #: ../../../src/ItemManager.cpp:849
648 #, c-format
649 msgid "Requires Class: %s"
650 msgstr ""
651
652 #: ../../../src/ItemManager.cpp:864 ../../../src/ItemManager.cpp:876
653 #, c-format
654 msgid "Buy Price: %d %s"
655 msgstr ""
656
657 #: ../../../src/ItemManager.cpp:866 ../../../src/ItemManager.cpp:878
658 #, c-format
659 msgid "Buy Price: %d %s each"
660 msgstr ""
661
662 #: ../../../src/ItemManager.cpp:886
663 #, c-format
664 msgid "Sell Price: %d %s"
665 msgstr ""
666
667 #: ../../../src/ItemManager.cpp:888
668 #, c-format
669 msgid "Sell Price: %d %s each"
670 msgstr ""
671
672 #: ../../../src/ItemManager.cpp:897
673 msgid "Set:"
674 msgstr ""
675
676 #: ../../../src/ItemManager.cpp:904
677 #, c-format
678 msgid "%d items:"
679 msgstr ""
680
681 #: ../../../src/ItemManager.cpp:917
682 #, c-format
683 msgid "Press [%s] to use"
684 msgstr ""
685
686 #: ../../../src/ItemManager.cpp:920
687 #, c-format
688 msgid "Press [%s] to read"
689 msgstr ""
690
691 #: ../../../src/MenuActionBar.cpp:87
692 msgid "Loot tooltip visibility"
693 msgstr ""
694
695 #: ../../../src/MenuActionBar.cpp:88
696 msgid "Mini-map mode"
697 msgstr ""
698
699 #: ../../../src/MenuActionBar.cpp:89
700 msgid "Always show stat bar labels"
701 msgstr ""
702
703 #: ../../../src/MenuActionBar.cpp:90
704 msgid "Show combat text"
705 msgstr "Laat strijdtekst zien"
706
707 #: ../../../src/MenuActionBar.cpp:254 ../../../src/MenuActionBar.cpp:261
708 #: ../../../src/MenuActionBar.cpp:264 ../../../src/MenuActionBar.cpp:271
709 #, c-format
710 msgid "Hotkey: %s"
711 msgstr ""
712
713 #: ../../../src/MenuActionBar.cpp:474
714 #, c-format
715 msgid "Default. Temporarily show all loot tooltips with '%s'."
716 msgstr ""
717
718 #: ../../../src/MenuActionBar.cpp:476
719 #, c-format
720 msgid "Show All. Temporarily hide all loot tooltips with '%s'."
721 msgstr ""
722
723 #: ../../../src/MenuActionBar.cpp:478
724 #, c-format
725 msgid "Hide All. Temporarily show all loot tooltips with '%s'."
726 msgstr ""
727
728 #: ../../../src/MenuActionBar.cpp:482
729 msgid "Visible"
730 msgstr ""
731
732 #: ../../../src/MenuActionBar.cpp:484
733 msgid "Visible (2x zoom)"
734 msgstr ""
735
736 #: ../../../src/MenuActionBar.cpp:486
737 msgid "Hidden"
738 msgstr ""
739
740 #: ../../../src/MenuActionBar.cpp:490 ../../../src/MenuActionBar.cpp:496
741 msgid "Enabled"
742 msgstr ""
743
744 #: ../../../src/MenuActionBar.cpp:492 ../../../src/MenuActionBar.cpp:498
745 msgid "Disabled"
746 msgstr ""
747
748 #: ../../../src/MenuActionBar.cpp:657
749 msgid "Not enough MP."
750 msgstr ""
751
752 #: ../../../src/MenuActiveEffects.cpp:124
753 #, c-format
754 msgid "x%d"
755 msgstr ""
756
757 #: ../../../src/MenuActiveEffects.cpp:219
758 msgid "Remaining:"
759 msgstr ""
760
761 #: ../../../src/MenuActiveEffects.cpp:225
762 #, c-format
763 msgid "x%d stacks"
764 msgstr ""
765
766 #: ../../../src/MenuCharacter.cpp:73 ../../../src/MenuCharacter.cpp:78
767 msgid "Name"
768 msgstr "Naam"
769
770 #: ../../../src/MenuCharacter.cpp:74 ../../../src/MenuCharacter.cpp:79
771 msgid "Level"
772 msgstr "Niveau"
773
774 #: ../../../src/MenuCharacter.cpp:310
775 #, c-format
776 msgid "%d unspent stat point"
777 msgstr ""
778
779 #: ../../../src/MenuCharacter.cpp:313
780 #, c-format
781 msgid "%d unspent stat points"
782 msgstr ""
783
784 #: ../../../src/MenuCharacter.cpp:355
785 #, c-format
786 msgid "Reduces the damage taken from \"%s\" elemental attacks."
787 msgstr ""
788
789 #: ../../../src/MenuCharacter.cpp:365 ../../../src/MenuManager.cpp:283
790 #, c-format
791 msgid "XP: %d"
792 msgstr "EP: %d"
793
794 #: ../../../src/MenuCharacter.cpp:367
795 #, c-format
796 msgid "Next: %d"
797 msgstr "Volgende: %d"
798
799 #: ../../../src/MenuCharacter.cpp:373
800 #, c-format
801 msgid "base (%d), bonus (%d)"
802 msgstr "basis (%d), bonus (%d)"
803
804 #: ../../../src/MenuCharacter.cpp:381 ../../../src/MenuCharacter.cpp:395
805 msgid "Related stats:"
806 msgstr ""
807
808 #: ../../../src/MenuCharacter.cpp:421 ../../../src/MenuCharacter.cpp:445
809 #, c-format
810 msgid "Each level grants %d."
811 msgstr ""
812
813 #: ../../../src/MenuCharacter.cpp:425 ../../../src/MenuCharacter.cpp:449
814 #, c-format
815 msgid "Each point of %s grants %d."
816 msgstr ""
817
818 #: ../../../src/MenuDevConsole.cpp:63
907 #: ../../../src/MenuConfig.cpp:515
908 msgid ""
909 "Enables the below setting that controls the screen gamma level. The behavior"
910 " of the gamma setting can vary between platforms."
911 msgstr ""
912
913 #: ../../../src/MenuConfig.cpp:516
914 msgid ""
915 "Provides additional text for information that is primarily conveyed through "
916 "color."
917 msgstr ""
918
919 #: ../../../src/MenuConfig.cpp:517
920 msgid ""
921 "Some mods will automatically hide the stat bars when they are inactive. "
922 "Disabling this option will keep them displayed at all times."
923 msgstr ""
924
925 #: ../../../src/MenuConfig.cpp:518
926 msgid ""
927 "When enabled, empty equipment slots will be filled with applicable items "
928 "when they are obtained."
929 msgstr ""
930
931 #: ../../../src/MenuConfig.cpp:519
932 msgid ""
933 "Shows a marker above enemies, allies, and the player when they are obscured "
934 "by tall objects."
935 msgstr ""
936
937 #: ../../../src/MenuConfig.cpp:520
938 msgid ""
939 "When enabled, tooltips for equipped items of the same type are shown next to"
940 " standard item tooltips."
941 msgstr ""
942
943 #: ../../../src/MenuConfig.cpp:521
944 msgid ""
945 "This allows the game to be controlled entirely with the keyboard (or "
946 "joystick)."
947 msgstr ""
948
949 #: ../../../src/MenuConfig.cpp:522
950 msgid ""
951 "When 'Move hero using mouse' is enabled, this setting controls if 'Main1' or"
952 " 'Main2' is used to move the hero. If enabled, 'Main2' will move the hero "
953 "instead of 'Main1'."
954 msgstr ""
955
956 #: ../../../src/MenuConfig.cpp:523
957 msgid ""
958 "When 'Move hero using mouse' is enabled, this setting controls if the Power "
959 "assigned to the movement button can be used by targeting an enemy. If this "
960 "setting is disabled, it is required to use 'Shift' to access the Power "
961 "assigned to the movement button."
962 msgstr ""
963
964 #: ../../../src/MenuConfig.cpp:524
965 msgid ""
966 "The player's attacks will be aimed in the direction of the mouse cursor when"
967 " this is enabled."
968 msgstr ""
969
970 #: ../../../src/MenuConfig.cpp:575
971 msgid "Active Mods"
972 msgstr "Actieve Mods"
973
974 #: ../../../src/MenuConfig.cpp:584
975 msgid "Available Mods"
976 msgstr ""
977
978 #: ../../../src/MenuConfig.cpp:603
979 msgid "<< Disable"
980 msgstr ""
981
982 #: ../../../src/MenuConfig.cpp:609
983 msgid "Enable >>"
984 msgstr ""
985
986 #: ../../../src/MenuConfig.cpp:1444
987 msgid "Version:"
988 msgstr ""
989
990 #: ../../../src/MenuConfig.cpp:1449
991 msgid "Game:"
992 msgstr ""
993
994 #: ../../../src/MenuConfig.cpp:1454
995 msgid "Engine version:"
996 msgstr ""
997
998 #: ../../../src/MenuConfig.cpp:1462
999 msgid "Requires mods:"
1000 msgstr ""
1001
1002 #: ../../../src/MenuConfig.cpp:1570 ../../../src/SDLInputState.cpp:748
1003 msgid "(none)"
1004 msgstr ""
1005
1006 #: ../../../src/MenuConfig.cpp:1587 ../../../src/MenuGameOver.cpp:73
1007 msgid "Save & Exit"
1008 msgstr ""
1009
1010 #: ../../../src/MenuDevConsole.cpp:65
8191011 msgid "Execute"
8201012 msgstr ""
8211013
822 #: ../../../src/MenuDevConsole.cpp:101 ../../../src/MenuDevConsole.cpp:151
1014 #: ../../../src/MenuDevConsole.cpp:103 ../../../src/MenuDevConsole.cpp:153
8231015 msgid "Developer Console"
8241016 msgstr ""
8251017
826 #: ../../../src/MenuDevConsole.cpp:141
1018 #: ../../../src/MenuDevConsole.cpp:143
8271019 #, c-format
8281020 msgid "Use '%s' to inspect with the cursor."
8291021 msgstr ""
8301022
831 #: ../../../src/MenuDevConsole.cpp:146
1023 #: ../../../src/MenuDevConsole.cpp:148
8321024 msgid "Arguments with spaces should be enclosed with double quotes. Example:"
8331025 msgstr ""
8341026
835 #: ../../../src/MenuDevConsole.cpp:147
1027 #: ../../../src/MenuDevConsole.cpp:149
8361028 msgid "Type 'help' to get a list of commands."
8371029 msgstr ""
8381030
839 #: ../../../src/MenuDevConsole.cpp:209 ../../../src/MenuDevConsole.cpp:213
1031 #: ../../../src/MenuDevConsole.cpp:211 ../../../src/MenuDevConsole.cpp:215
8401032 msgid "px"
8411033 msgstr ""
8421034
843 #: ../../../src/MenuDevConsole.cpp:224
1035 #: ../../../src/MenuDevConsole.cpp:226
8441036 msgid "Distance"
8451037 msgstr ""
8461038
847 #: ../../../src/MenuDevConsole.cpp:239 ../../../src/MenuDevConsole.cpp:286
1039 #: ../../../src/MenuDevConsole.cpp:241 ../../../src/MenuDevConsole.cpp:289
1040 #: ../../../src/MenuDevConsole.cpp:303
8481041 msgid "Entity"
8491042 msgstr ""
8501043
851 #: ../../../src/MenuDevConsole.cpp:261 ../../../src/MenuDevConsole.cpp:268
1044 #: ../../../src/MenuDevConsole.cpp:263 ../../../src/MenuDevConsole.cpp:270
8521045 msgid "none"
8531046 msgstr ""
8541047
855 #: ../../../src/MenuDevConsole.cpp:262 ../../../src/MenuDevConsole.cpp:264
1048 #: ../../../src/MenuDevConsole.cpp:264 ../../../src/MenuDevConsole.cpp:266
8561049 msgid "wall"
8571050 msgstr ""
8581051
859 #: ../../../src/MenuDevConsole.cpp:263 ../../../src/MenuDevConsole.cpp:265
1052 #: ../../../src/MenuDevConsole.cpp:265 ../../../src/MenuDevConsole.cpp:267
8601053 msgid "short wall / pit"
8611054 msgstr ""
8621055
863 #: ../../../src/MenuDevConsole.cpp:266
1056 #: ../../../src/MenuDevConsole.cpp:268
8641057 msgid "entity"
8651058 msgstr ""
8661059
867 #: ../../../src/MenuDevConsole.cpp:267
1060 #: ../../../src/MenuDevConsole.cpp:269
8681061 msgid "entity, ally"
8691062 msgstr ""
8701063
871 #: ../../../src/MenuDevConsole.cpp:274
1064 #: ../../../src/MenuDevConsole.cpp:276
8721065 msgid "Tile"
8731066 msgstr ""
8741067
875 #: ../../../src/MenuDevConsole.cpp:360
1068 #: ../../../src/MenuDevConsole.cpp:377
8761069 msgid "adds a power to the action bar"
8771070 msgstr ""
8781071
879 #: ../../../src/MenuDevConsole.cpp:361
1072 #: ../../../src/MenuDevConsole.cpp:378
8801073 msgid "turns on/off the display of the FPS counter"
8811074 msgstr ""
8821075
883 #: ../../../src/MenuDevConsole.cpp:362
1076 #: ../../../src/MenuDevConsole.cpp:379
8841077 msgid "turns on/off all of the HUD elements"
8851078 msgstr ""
8861079
887 #: ../../../src/MenuDevConsole.cpp:363
1080 #: ../../../src/MenuDevConsole.cpp:380
8881081 msgid "turns on/off the developer hud"
8891082 msgstr ""
8901083
891 #: ../../../src/MenuDevConsole.cpp:364
1084 #: ../../../src/MenuDevConsole.cpp:381
8921085 msgid ""
8931086 "Prints a list of powers that match a search term. No search term will list "
8941087 "all items"
8951088 msgstr ""
8961089
897 #: ../../../src/MenuDevConsole.cpp:365
1090 #: ../../../src/MenuDevConsole.cpp:382
8981091 msgid "Prints out all the map filenames located in the \"maps/\" directory."
8991092 msgstr ""
9001093
901 #: ../../../src/MenuDevConsole.cpp:366
1094 #: ../../../src/MenuDevConsole.cpp:383
9021095 msgid ""
9031096 "Prints out the active campaign statuses that match a search term. No search "
9041097 "term will list all active statuses"
9051098 msgstr ""
9061099
907 #: ../../../src/MenuDevConsole.cpp:367
1100 #: ../../../src/MenuDevConsole.cpp:384
9081101 msgid ""
9091102 "Prints a list of items that match a search term. No search term will list "
9101103 "all items"
9111104 msgstr ""
9121105
913 #: ../../../src/MenuDevConsole.cpp:368
1106 #: ../../../src/MenuDevConsole.cpp:385
9141107 msgid ""
9151108 "parses a series of event components and executes them as a single event"
9161109 msgstr ""
9171110
918 #: ../../../src/MenuDevConsole.cpp:369
1111 #: ../../../src/MenuDevConsole.cpp:386
9191112 msgid "clears the command history"
9201113 msgstr ""
9211114
922 #: ../../../src/MenuDevConsole.cpp:370
1115 #: ../../../src/MenuDevConsole.cpp:387
9231116 msgid "displays this text"
9241117 msgstr ""
9251118
926 #: ../../../src/MenuDevConsole.cpp:377
1119 #: ../../../src/MenuDevConsole.cpp:394
9271120 msgid "Toggled the developer hud"
9281121 msgstr ""
9291122
930 #: ../../../src/MenuDevConsole.cpp:381
1123 #: ../../../src/MenuDevConsole.cpp:398
9311124 msgid "Toggled the hud"
9321125 msgstr ""
9331126
934 #: ../../../src/MenuDevConsole.cpp:385
1127 #: ../../../src/MenuDevConsole.cpp:402
9351128 msgid "Toggled the FPS counter"
9361129 msgstr ""
9371130
938 #: ../../../src/MenuDevConsole.cpp:534
1131 #: ../../../src/MenuDevConsole.cpp:552
9391132 msgid "ERROR: Incorrect number of arguments"
9401133 msgstr ""
9411134
942 #: ../../../src/MenuDevConsole.cpp:536 ../../../src/MenuDevConsole.cpp:564
1135 #: ../../../src/MenuDevConsole.cpp:554 ../../../src/MenuDevConsole.cpp:582
9431136 msgid "HINT:"
9441137 msgstr ""
9451138
946 #: ../../../src/MenuDevConsole.cpp:536
1139 #: ../../../src/MenuDevConsole.cpp:554
9471140 msgid "<id>"
9481141 msgstr ""
9491142
950 #: ../../../src/MenuDevConsole.cpp:552
1143 #: ../../../src/MenuDevConsole.cpp:570
9511144 #, c-format
9521145 msgid "ERROR: '%s' is not a valid event key"
9531146 msgstr ""
9541147
955 #: ../../../src/MenuDevConsole.cpp:562
1148 #: ../../../src/MenuDevConsole.cpp:580
9561149 msgid "ERROR: Too few arguments"
9571150 msgstr ""
9581151
959 #: ../../../src/MenuDevConsole.cpp:564
1152 #: ../../../src/MenuDevConsole.cpp:582
9601153 msgid "<key>=<val> <key>=<val> ..."
9611154 msgstr ""
9621155
963 #: ../../../src/MenuDevConsole.cpp:569
1156 #: ../../../src/MenuDevConsole.cpp:587
9641157 msgid "ERROR: Unknown command"
9651158 msgstr ""
9661159
967 #: ../../../src/MenuDevConsole.cpp:571
1160 #: ../../../src/MenuDevConsole.cpp:589
9681161 msgid "HINT: Type help"
9691162 msgstr ""
9701163
971 #: ../../../src/MenuEnemy.cpp:138
1164 #: ../../../src/MenuEnemy.cpp:162
9721165 #, c-format
9731166 msgid "%s level %d"
9741167 msgstr "%s niveau %d"
9751168
976 #: ../../../src/MenuEnemy.cpp:162
1169 #: ../../../src/MenuEnemy.cpp:186
9771170 msgid "Dead"
9781171 msgstr "Dood"
9791172
980 #: ../../../src/MenuEnemy.cpp:164
1173 #: ../../../src/MenuEnemy.cpp:188
9811174 msgid "Destroyed"
9821175 msgstr ""
9831176
984 #: ../../../src/MenuExit.cpp:85 ../../../src/MenuExit.cpp:139
985 msgid "Paused"
986 msgstr ""
987
988 #: ../../../src/MenuExit.cpp:91
989 msgid "Save & Exit"
990 msgstr ""
991
992 #: ../../../src/MenuExit.cpp:92
993 msgid "Exit"
994 msgstr "Stoppen"
995
996 #: ../../../src/MenuExit.cpp:96
997 msgid "Continue"
998 msgstr ""
999
1000 #: ../../../src/MenuInventory.cpp:73
1001 msgid "Automatically equip items"
1002 msgstr ""
1003
1004 #: ../../../src/MenuInventory.cpp:188
1177 #: ../../../src/MenuGameOver.cpp:69
1178 msgid "Game Over"
1179 msgstr ""
1180
1181 #: ../../../src/MenuInventory.cpp:178
10051182 #, c-format
10061183 msgid "Lost %d%% of %s."
10071184 msgstr ""
10081185
1009 #: ../../../src/MenuInventory.cpp:195
1186 #: ../../../src/MenuInventory.cpp:185
10101187 #, c-format
10111188 msgid "Lost %d%% of total XP."
10121189 msgstr ""
10131190
1014 #: ../../../src/MenuInventory.cpp:200
1191 #: ../../../src/MenuInventory.cpp:190
10151192 #, c-format
10161193 msgid "Lost %d%% of current level XP."
10171194 msgstr ""
10181195
1019 #: ../../../src/MenuInventory.cpp:226
1196 #: ../../../src/MenuInventory.cpp:216
10201197 #, c-format
10211198 msgid "Lost %s."
10221199 msgstr ""
10231200
1024 #: ../../../src/MenuInventory.cpp:274 ../../../src/MenuStash.cpp:146
1201 #: ../../../src/MenuInventory.cpp:258 ../../../src/MenuStash.cpp:276
10251202 #, c-format
10261203 msgid "%d %s"
10271204 msgstr ""
10281205
1029 #: ../../../src/MenuInventory.cpp:317
1206 #: ../../../src/MenuInventory.cpp:301
10301207 msgid "Pick up item(s):"
10311208 msgstr ""
10321209
1033 #: ../../../src/MenuInventory.cpp:318
1210 #: ../../../src/MenuInventory.cpp:302
10341211 msgid "Use or equip item:"
10351212 msgstr ""
10361213
1037 #: ../../../src/MenuInventory.cpp:319
1214 #: ../../../src/MenuInventory.cpp:303
10381215 #, c-format
10391216 msgid "%s modifiers"
10401217 msgstr ""
10411218
1042 #: ../../../src/MenuInventory.cpp:320
1219 #: ../../../src/MenuInventory.cpp:304
10431220 msgid "Select a quantity of item:"
10441221 msgstr ""
10451222
1046 #: ../../../src/MenuInventory.cpp:323
1223 #: ../../../src/MenuInventory.cpp:307
10471224 msgid "Stash item stack:"
10481225 msgstr ""
10491226
1050 #: ../../../src/MenuInventory.cpp:325
1227 #: ../../../src/MenuInventory.cpp:309
10511228 msgid "Sell item stack:"
10521229 msgstr ""
10531230
1054 #: ../../../src/MenuInventory.cpp:592
1231 #: ../../../src/MenuInventory.cpp:576
10551232 msgid "You don't have enough of the required item."
10561233 msgstr ""
10571234
1058 #: ../../../src/MenuInventory.cpp:599
1235 #: ../../../src/MenuInventory.cpp:588
10591236 msgid "You can't use this item right now."
10601237 msgstr ""
10611238
1062 #: ../../../src/MenuInventory.cpp:611
1239 #: ../../../src/MenuInventory.cpp:600
10631240 msgid "This item can only be used from the action bar."
10641241 msgstr "Dit artikel kan alleen vanaf de actiebalk gebruikt worden."
10651242
1066 #: ../../../src/MenuInventory.cpp:729
1243 #: ../../../src/MenuInventory.cpp:718
10671244 msgid "Inventory is full."
10681245 msgstr "Geen ruimte meer."
10691246
1070 #: ../../../src/MenuInventory.cpp:849
1247 #: ../../../src/MenuInventory.cpp:843
10711248 #, c-format
10721249 msgid "Not enough %s."
10731250 msgstr ""
10741251
1075 #: ../../../src/MenuInventory.cpp:869 ../../../src/MenuInventory.cpp:876
1252 #: ../../../src/MenuInventory.cpp:863 ../../../src/MenuInventory.cpp:870
10761253 msgid "This item can not be sold."
10771254 msgstr ""
10781255
10841261 msgid "Quests"
10851262 msgstr "Opdrachten"
10861263
1087 #: ../../../src/MenuManager.cpp:286
1264 #: ../../../src/MenuManager.cpp:305
10881265 #, c-format
10891266 msgid "XP: %d/%d"
10901267 msgstr "EP: %d/%d"
10911268
1092 #: ../../../src/MenuManager.cpp:827
1269 #: ../../../src/MenuManager.cpp:875
10931270 msgid "This item can not be dropped."
1271 msgstr ""
1272
1273 #: ../../../src/MenuManager.cpp:1501
1274 msgid "Equipped"
1275 msgstr ""
1276
1277 #: ../../../src/MenuMovementType.cpp:87
1278 msgid "Select a Movement Type"
1279 msgstr ""
1280
1281 #: ../../../src/MenuMovementType.cpp:89
1282 msgid "Can be changed later in the Configuration menu."
1283 msgstr ""
1284
1285 #: ../../../src/MenuMovementType.cpp:92 ../../../src/MenuMovementType.cpp:122
1286 msgid "Keyboard"
1287 msgstr ""
1288
1289 #: ../../../src/MenuMovementType.cpp:93 ../../../src/MenuMovementType.cpp:128
1290 msgid "Mouse"
1291 msgstr ""
1292
1293 #: ../../../src/MenuMovementType.cpp:129
1294 msgid "Button"
10941295 msgstr ""
10951296
10961297 #: ../../../src/MenuNumPicker.cpp:59
10971298 msgid "Enter amount:"
10981299 msgstr ""
10991300
1100 #: ../../../src/MenuPowers.cpp:787
1301 #: ../../../src/MenuPowers.cpp:872
11011302 msgid "Passive"
11021303 msgstr ""
11031304
1104 #: ../../../src/MenuPowers.cpp:792
1305 #: ../../../src/MenuPowers.cpp:879
11051306 #, c-format
11061307 msgid "Costs %d MP"
11071308 msgstr "Kost %d MP"
11081309
1109 #: ../../../src/MenuPowers.cpp:796
1310 #: ../../../src/MenuPowers.cpp:883
11101311 #, c-format
11111312 msgid "Costs %d HP"
11121313 msgstr ""
11131314
1114 #: ../../../src/MenuPowers.cpp:801
1315 #: ../../../src/MenuPowers.cpp:887
11151316 msgid "Cooldown:"
11161317 msgstr ""
11171318
1118 #: ../../../src/MenuPowers.cpp:866 ../../../src/MenuPowers.cpp:869
1319 #: ../../../src/MenuPowers.cpp:938 ../../../src/MenuPowers.cpp:941
11191320 msgid "Damage per second"
11201321 msgstr ""
11211322
1122 #: ../../../src/MenuPowers.cpp:872 ../../../src/MenuPowers.cpp:875
1323 #: ../../../src/MenuPowers.cpp:944 ../../../src/MenuPowers.cpp:947
11231324 msgid "HP per second"
11241325 msgstr ""
11251326
1126 #: ../../../src/MenuPowers.cpp:878 ../../../src/MenuPowers.cpp:881
1327 #: ../../../src/MenuPowers.cpp:950 ../../../src/MenuPowers.cpp:953
11271328 msgid "MP per second"
11281329 msgstr ""
11291330
1130 #: ../../../src/MenuPowers.cpp:885
1331 #: ../../../src/MenuPowers.cpp:957
11311332 msgid "Immobilize"
11321333 msgstr ""
11331334
1134 #: ../../../src/MenuPowers.cpp:893
1335 #: ../../../src/MenuPowers.cpp:965
11351336 msgid "Immunity"
11361337 msgstr ""
11371338
1138 #: ../../../src/MenuPowers.cpp:896
1339 #: ../../../src/MenuPowers.cpp:968
11391340 msgid "Immunity to damage over time"
11401341 msgstr ""
11411342
1142 #: ../../../src/MenuPowers.cpp:899
1343 #: ../../../src/MenuPowers.cpp:971
11431344 msgid "Immunity to slow"
11441345 msgstr ""
11451346
1146 #: ../../../src/MenuPowers.cpp:902
1347 #: ../../../src/MenuPowers.cpp:974
11471348 msgid "Immunity to stun"
11481349 msgstr ""
11491350
1150 #: ../../../src/MenuPowers.cpp:905
1351 #: ../../../src/MenuPowers.cpp:977
11511352 msgid "Immunity to HP steal"
11521353 msgstr ""
11531354
1154 #: ../../../src/MenuPowers.cpp:908
1355 #: ../../../src/MenuPowers.cpp:980
11551356 msgid "Immunity to MP steal"
11561357 msgstr ""
11571358
1158 #: ../../../src/MenuPowers.cpp:911
1359 #: ../../../src/MenuPowers.cpp:983
11591360 msgid "Immunity to knockback"
11601361 msgstr ""
11611362
1162 #: ../../../src/MenuPowers.cpp:914
1363 #: ../../../src/MenuPowers.cpp:986
11631364 msgid "Immunity to damage reflection"
11641365 msgstr ""
11651366
1166 #: ../../../src/MenuPowers.cpp:917
1367 #: ../../../src/MenuPowers.cpp:992
11671368 msgid "Stun"
11681369 msgstr ""
11691370
1170 #: ../../../src/MenuPowers.cpp:920
1371 #: ../../../src/MenuPowers.cpp:995
11711372 msgid "Automatic revive on death"
11721373 msgstr ""
11731374
1174 #: ../../../src/MenuPowers.cpp:923
1375 #: ../../../src/MenuPowers.cpp:998
11751376 msgid "Convert"
11761377 msgstr ""
11771378
1178 #: ../../../src/MenuPowers.cpp:926
1379 #: ../../../src/MenuPowers.cpp:1001
11791380 msgid "Fear"
11801381 msgstr ""
11811382
1182 #: ../../../src/MenuPowers.cpp:929
1383 #: ../../../src/MenuPowers.cpp:1004
11831384 msgid "Lifespan"
11841385 msgstr ""
11851386
1186 #: ../../../src/MenuPowers.cpp:953
1387 #: ../../../src/MenuPowers.cpp:1028
11871388 msgid "Magical Shield"
11881389 msgstr ""
11891390
1190 #: ../../../src/MenuPowers.cpp:982
1391 #: ../../../src/MenuPowers.cpp:1057
11911392 msgid "Healing"
11921393 msgstr ""
11931394
1194 #: ../../../src/MenuPowers.cpp:985
1395 #: ../../../src/MenuPowers.cpp:1060
11951396 msgid "Knockback"
11961397 msgstr ""
11971398
1198 #: ../../../src/MenuPowers.cpp:1010
1399 #: ../../../src/MenuPowers.cpp:1084
11991400 #, c-format
12001401 msgid "%d%% chance"
12011402 msgstr ""
12021403
1203 #: ../../../src/MenuPowers.cpp:1062
1404 #: ../../../src/MenuPowers.cpp:1136
12041405 msgid "Base Accuracy"
12051406 msgstr ""
12061407
1207 #: ../../../src/MenuPowers.cpp:1082
1408 #: ../../../src/MenuPowers.cpp:1156
12081409 msgid "Base Critical Chance"
12091410 msgstr ""
12101411
1211 #: ../../../src/MenuPowers.cpp:1090
1412 #: ../../../src/MenuPowers.cpp:1164
12121413 msgid "Ignores Absorbtion"
12131414 msgstr ""
12141415
1215 #: ../../../src/MenuPowers.cpp:1095
1416 #: ../../../src/MenuPowers.cpp:1169
12161417 msgid "Ignores Avoidance"
12171418 msgstr ""
12181419
1219 #: ../../../src/MenuPowers.cpp:1100
1420 #: ../../../src/MenuPowers.cpp:1174
12201421 #, c-format
12211422 msgid "%d%% Chance to crit slowed targets"
12221423 msgstr ""
12231424
1224 #: ../../../src/MenuPowers.cpp:1105
1425 #: ../../../src/MenuPowers.cpp:1179
12251426 #, c-format
12261427 msgid "Elemental Damage (%s)"
12271428 msgstr ""
12281429
1229 #: ../../../src/MenuPowers.cpp:1114
1430 #: ../../../src/MenuPowers.cpp:1188
12301431 #, c-format
12311432 msgid "Requires a %s"
12321433 msgstr ""
12331434
1234 #: ../../../src/MenuPowers.cpp:1151 ../../../src/MenuPowers.cpp:1154
1435 #: ../../../src/MenuPowers.cpp:1226 ../../../src/MenuPowers.cpp:1229
12351436 #, c-format
12361437 msgid "Requires Power: %s"
12371438 msgstr ""
12381439
1239 #: ../../../src/MenuPowers.cpp:1163
1440 #: ../../../src/MenuPowers.cpp:1238
12401441 msgid "Click to Unlock (uses 1 Skill Point)"
12411442 msgstr ""
12421443
1243 #: ../../../src/MenuPowers.cpp:1167 ../../../src/MenuPowers.cpp:1169
1444 #: ../../../src/MenuPowers.cpp:1242 ../../../src/MenuPowers.cpp:1244
12441445 msgid "Requires 1 Skill Point"
12451446 msgstr ""
12461447
1247 #: ../../../src/MenuPowers.cpp:1355
1248 #, c-format
1249 msgid "%d unspent skill point"
1250 msgstr ""
1251
1252 #: ../../../src/MenuPowers.cpp:1358
1253 #, c-format
1254 msgid "%d unspent skill points"
1255 msgstr ""
1256
1257 #: ../../../src/MenuPowers.cpp:1388
1448 #: ../../../src/MenuPowers.cpp:1444
1449 #, c-format
1450 msgid "Available skill points: %d"
1451 msgstr ""
1452
1453 #: ../../../src/MenuPowers.cpp:1476
12581454 msgid "Next Level:"
12591455 msgstr ""
12601456
1261 #: ../../../src/MenuStash.cpp:96
1262 msgid "Shared Stash"
1263 msgstr ""
1264
1265 #: ../../../src/MenuStash.cpp:209
1266 msgid "Can not store quest items in the stash."
1267 msgstr ""
1268
1269 #: ../../../src/MenuStash.cpp:219
1457 #: ../../../src/MenuStash.cpp:80 ../../../src/MenuStash.cpp:161
1458 msgid "Stash"
1459 msgstr ""
1460
1461 #: ../../../src/MenuStash.cpp:174 ../../../src/MenuStash.cpp:188
1462 msgid "Private"
1463 msgstr ""
1464
1465 #: ../../../src/MenuStash.cpp:175
1466 msgid "Shared"
1467 msgstr ""
1468
1469 #: ../../../src/MenuStash.cpp:340
1470 msgid "This item can not be stored in the stash."
1471 msgstr ""
1472
1473 #: ../../../src/MenuStash.cpp:345
1474 msgid "This item can not be stored in the private stash."
1475 msgstr ""
1476
1477 #: ../../../src/MenuStash.cpp:350
1478 msgid "This item can not be stored in the shared stash."
1479 msgstr ""
1480
1481 #: ../../../src/MenuStash.cpp:360
12701482 msgid "Stash is full."
12711483 msgstr ""
12721484
1273 #: ../../../src/MenuTalker.cpp:454
1485 #: ../../../src/MenuStash.cpp:414
1486 #, c-format
1487 msgid "Can not store item in stash: %s"
1488 msgstr ""
1489
1490 #: ../../../src/MenuTalker.cpp:448
1491 #, c-format
1492 msgid "<dialog node %d>"
1493 msgstr ""
1494
1495 #: ../../../src/MenuTalker.cpp:456
12741496 msgid "Trade"
12751497 msgstr "Handelen"
12761498
1277 #: ../../../src/MenuVendor.cpp:58
1499 #: ../../../src/MenuVendor.cpp:60
12781500 msgid "Buyback"
12791501 msgstr ""
12801502
1281 #: ../../../src/MenuVendor.cpp:279
1503 #: ../../../src/MenuVendor.cpp:283
12821504 msgid "Vendor"
12831505 msgstr "Verkoper"
12841506
1285 #: ../../../src/PowerManager.cpp:1136
1507 #: ../../../src/PowerManager.cpp:1208
12861508 #, c-format
12871509 msgid "+%d Shield"
12881510 msgstr ""
12891511
1290 #: ../../../src/PowerManager.cpp:1392
1512 #: ../../../src/PowerManager.cpp:1465
12911513 msgid "You are already transformed, untransform first."
12921514 msgstr ""
12931515
1294 #: ../../../src/PowerManager.cpp:1404
1516 #: ../../../src/PowerManager.cpp:1477
12951517 msgid "Could not untransform at this position."
12961518 msgstr ""
12971519
12991521 msgid "Completed Quests"
13001522 msgstr ""
13011523
1302 #: ../../../src/SaveLoad.cpp:243 ../../../src/SaveLoad.cpp:244
1524 #: ../../../src/SaveLoad.cpp:250 ../../../src/SaveLoad.cpp:251
13031525 msgid "Game saved."
13041526 msgstr ""
13051527
1306 #: ../../../src/SDLInputState.cpp:582
1528 #: ../../../src/SDLInputState.cpp:643
1529 msgid "BkSp"
1530 msgstr ""
1531
1532 #: ../../../src/SDLInputState.cpp:644
1533 msgid "Caps"
1534 msgstr ""
1535
1536 #: ../../../src/SDLInputState.cpp:645
1537 msgid "Del"
1538 msgstr ""
1539
1540 #: ../../../src/SDLInputState.cpp:647 ../../../src/SDLInputState.cpp:677
1541 msgid "End"
1542 msgstr ""
1543
1544 #: ../../../src/SDLInputState.cpp:648
1545 msgid "Esc"
1546 msgstr ""
1547
1548 #: ../../../src/SDLInputState.cpp:649 ../../../src/SDLInputState.cpp:679
1549 msgid "Home"
1550 msgstr ""
1551
1552 #: ../../../src/SDLInputState.cpp:650
1553 msgid "Ins"
1554 msgstr ""
1555
1556 #: ../../../src/SDLInputState.cpp:651
1557 msgid "LAlt"
1558 msgstr ""
1559
1560 #: ../../../src/SDLInputState.cpp:652
1561 msgid "LCtrl"
1562 msgstr ""
1563
1564 #: ../../../src/SDLInputState.cpp:654
1565 msgid "LShft"
1566 msgstr ""
1567
1568 #: ../../../src/SDLInputState.cpp:655
1569 msgid "Num"
1570 msgstr ""
1571
1572 #: ../../../src/SDLInputState.cpp:656
1573 msgid "PgDn"
1574 msgstr ""
1575
1576 #: ../../../src/SDLInputState.cpp:657
1577 msgid "PgUp"
1578 msgstr ""
1579
1580 #: ../../../src/SDLInputState.cpp:658 ../../../src/SDLInputState.cpp:688
1581 msgid "Pause"
1582 msgstr ""
1583
1584 #: ../../../src/SDLInputState.cpp:659
1585 msgid "Print"
1586 msgstr ""
1587
1588 #: ../../../src/SDLInputState.cpp:660
1589 msgid "RAlt"
1590 msgstr ""
1591
1592 #: ../../../src/SDLInputState.cpp:661
1593 msgid "RCtrl"
1594 msgstr ""
1595
1596 #: ../../../src/SDLInputState.cpp:662
1597 msgid "Ret"
1598 msgstr ""
1599
1600 #: ../../../src/SDLInputState.cpp:664
1601 msgid "RShft"
1602 msgstr ""
1603
1604 #: ../../../src/SDLInputState.cpp:665
1605 msgid "SLock"
1606 msgstr ""
1607
1608 #: ../../../src/SDLInputState.cpp:666
1609 msgid "Spc"
1610 msgstr ""
1611
1612 #: ../../../src/SDLInputState.cpp:667 ../../../src/SDLInputState.cpp:697
1613 msgid "Tab"
1614 msgstr ""
1615
1616 #: ../../../src/SDLInputState.cpp:673
13071617 msgid "Backspace"
13081618 msgstr ""
13091619
1310 #: ../../../src/SDLInputState.cpp:583
1620 #: ../../../src/SDLInputState.cpp:674
13111621 msgid "CapsLock"
13121622 msgstr ""
13131623
1314 #: ../../../src/SDLInputState.cpp:586
1315 msgid "End"
1316 msgstr ""
1317
1318 #: ../../../src/SDLInputState.cpp:587
1624 #: ../../../src/SDLInputState.cpp:678
13191625 msgid "Escape"
13201626 msgstr ""
13211627
1322 #: ../../../src/SDLInputState.cpp:588
1323 msgid "Home"
1324 msgstr ""
1325
1326 #: ../../../src/SDLInputState.cpp:589
1628 #: ../../../src/SDLInputState.cpp:680
13271629 msgid "Insert"
13281630 msgstr ""
13291631
1330 #: ../../../src/SDLInputState.cpp:590
1632 #: ../../../src/SDLInputState.cpp:681
13311633 msgid "Left Alt"
13321634 msgstr ""
13331635
1334 #: ../../../src/SDLInputState.cpp:591
1636 #: ../../../src/SDLInputState.cpp:682
13351637 msgid "Left Ctrl"
13361638 msgstr ""
13371639
1338 #: ../../../src/SDLInputState.cpp:593
1640 #: ../../../src/SDLInputState.cpp:684
13391641 msgid "Left Shift"
13401642 msgstr ""
13411643
1342 #: ../../../src/SDLInputState.cpp:594
1644 #: ../../../src/SDLInputState.cpp:685
13431645 msgid "NumLock"
13441646 msgstr ""
13451647
1346 #: ../../../src/SDLInputState.cpp:595
1648 #: ../../../src/SDLInputState.cpp:686
13471649 msgid "PageDown"
13481650 msgstr ""
13491651
1350 #: ../../../src/SDLInputState.cpp:596
1652 #: ../../../src/SDLInputState.cpp:687
13511653 msgid "PageUp"
13521654 msgstr ""
13531655
1354 #: ../../../src/SDLInputState.cpp:597
1355 msgid "Pause"
1356 msgstr ""
1357
1358 #: ../../../src/SDLInputState.cpp:598
1656 #: ../../../src/SDLInputState.cpp:689
13591657 msgid "PrintScreen"
13601658 msgstr ""
13611659
1362 #: ../../../src/SDLInputState.cpp:599
1660 #: ../../../src/SDLInputState.cpp:690
13631661 msgid "Right Alt"
13641662 msgstr ""
13651663
1366 #: ../../../src/SDLInputState.cpp:600
1664 #: ../../../src/SDLInputState.cpp:691
13671665 msgid "Right Ctrl"
13681666 msgstr ""
13691667
1370 #: ../../../src/SDLInputState.cpp:601
1668 #: ../../../src/SDLInputState.cpp:692
13711669 msgid "Return"
13721670 msgstr ""
13731671
1374 #: ../../../src/SDLInputState.cpp:603
1672 #: ../../../src/SDLInputState.cpp:694
13751673 msgid "Right Shift"
13761674 msgstr ""
13771675
1378 #: ../../../src/SDLInputState.cpp:604
1676 #: ../../../src/SDLInputState.cpp:695
13791677 msgid "ScrollLock"
13801678 msgstr ""
13811679
1382 #: ../../../src/SDLInputState.cpp:605
1680 #: ../../../src/SDLInputState.cpp:696
13831681 msgid "Space"
13841682 msgstr ""
13851683
1386 #: ../../../src/SDLInputState.cpp:606
1387 msgid "Tab"
1388 msgstr ""
1389
1390 #: ../../../src/SDLInputState.cpp:620
1684 #: ../../../src/SDLInputState.cpp:710
1685 #, c-format
1686 msgid "M%d"
1687 msgstr ""
1688
1689 #: ../../../src/SDLInputState.cpp:716
13911690 #, c-format
13921691 msgid "Mouse %d"
13931692 msgstr ""
13941693
1395 #: ../../../src/SDLInputState.cpp:628
1694 #: ../../../src/SDLInputState.cpp:726
1695 #, c-format
1696 msgid "JX%d-"
1697 msgstr ""
1698
1699 #: ../../../src/SDLInputState.cpp:728
13961700 #, c-format
13971701 msgid "Axis %d -"
13981702 msgstr ""
13991703
1400 #: ../../../src/SDLInputState.cpp:630
1704 #: ../../../src/SDLInputState.cpp:732
1705 #, c-format
1706 msgid "JX%d+"
1707 msgstr ""
1708
1709 #: ../../../src/SDLInputState.cpp:734
14011710 #, c-format
14021711 msgid "Axis %d +"
14031712 msgstr ""
14041713
1405 #: ../../../src/SDLInputState.cpp:633
1714 #: ../../../src/SDLInputState.cpp:739
1715 #, c-format
1716 msgid "JB%d"
1717 msgstr ""
1718
1719 #: ../../../src/SDLInputState.cpp:741
14061720 #, c-format
14071721 msgid "Button %d"
14081722 msgstr ""
14091723
1410 #: ../../../src/SDLInputState.cpp:637
1411 msgid "(none)"
1412 msgstr ""
1413
1414 #: ../../../src/SDLInputState.cpp:677
1724 #: ../../../src/SDLInputState.cpp:787
14151725 msgid "Touch control D-Pad"
14161726 msgstr ""
14171727
1418 #: ../../../src/SDLInputState.cpp:701
1728 #: ../../../src/SDLInputState.cpp:810
14191729 msgid "Touch control buttons"
14201730 msgstr ""
14211731
1422 #: ../../../src/SDLInputState.cpp:716
1732 #: ../../../src/SDLInputState.cpp:824
14231733 msgid "Tap"
14241734 msgstr ""
14251735
1426 #: ../../../src/SDLInputState.cpp:760 ../../../src/SDLInputState.cpp:764
1427 #: ../../../src/SDLInputState.cpp:768
1736 #: ../../../src/SDLInputState.cpp:876 ../../../src/SDLInputState.cpp:878
1737 #, c-format
1738 msgid "Can not bind: %s"
1739 msgstr ""
1740
1741 #: ../../../src/SDLInputState.cpp:890 ../../../src/SDLInputState.cpp:894
1742 #: ../../../src/SDLInputState.cpp:898
14281743 #, c-format
14291744 msgid "'%s' is no longer bound to:"
14301745 msgstr ""
15831898 msgid "Base MP"
15841899 msgstr ""
15851900
1586 #: ../../../src/Utils.cpp:346
1901 #: ../../../src/Utils.cpp:365
15871902 msgid "k"
15881903 msgstr ""
15891904
1590 #: ../../../src/Utils.cpp:580
1905 #: ../../../src/Utils.cpp:635
15911906 #, c-format
15921907 msgid "%s second"
15931908 msgstr ""
15941909
1595 #: ../../../src/Utils.cpp:583
1910 #: ../../../src/Utils.cpp:638
15961911 #, c-format
15971912 msgid "%s seconds"
15981913 msgstr ""
33 # FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
44 #
55 # Translators:
6 # Justin Jacobs <jajdorkster@gmail.com>, 2018
6 # Justin Jacobs <jajdorkster@gmail.com>, 2019
7 # Błażej Pęksyk <b.peksyk@gmail.com>, 2020
8 # Grzegorz Szymaszek <gszymaszek@short.pl>, 2021
79 #
810 #, fuzzy
911 msgid ""
1012 msgstr ""
1113 "Project-Id-Version: PACKAGE VERSION\n"
1214 "Report-Msgid-Bugs-To: \n"
13 "POT-Creation-Date: 2018-11-17 21:50-0500\n"
14 "PO-Revision-Date: 2018-03-28 19:16+0000\n"
15 "Last-Translator: Justin Jacobs <jajdorkster@gmail.com>, 2018\n"
15 "POT-Creation-Date: 2021-05-23 20:34-0400\n"
16 "PO-Revision-Date: 2021-05-27 19:39+0200\n"
17 "Last-Translator: Grzegorz Szymaszek <gszymaszek@short.pl>, 2021\n"
1618 "Language-Team: Polish (https://www.transifex.com/flareorg/teams/84925/pl/)\n"
1719 "MIME-Version: 1.0\n"
1820 "Content-Type: text/plain; charset=UTF-8\n"
2022 "Language: pl\n"
2123 "Plural-Forms: nplurals=4; plural=(n==1 ? 0 : (n%10>=2 && n%10<=4) && (n%100<12 || n%100>14) ? 1 : n!=1 && (n%10>=0 && n%10<=1) || (n%10>=5 && n%10<=9) || (n%100>=12 && n%100<=14) ? 2 : 3);\n"
2224
23 #: ../../../src/Avatar.cpp:367
25 #: ../../../src/Avatar.cpp:391
26 msgid "Your health is low!"
27 msgstr ""
28
29 #: ../../../src/Avatar.cpp:421
2430 #, c-format
2531 msgid "Congratulations, you have reached level %d!"
2632 msgstr "Gratulacje, twoja postać osiągnęła %d poziom!"
2733
28 #: ../../../src/Avatar.cpp:369
29 msgid "You may increase one attribute through the Character Menu."
30 msgstr "Możesz zwiększyć jeden ze swoich atrybutów w Menu Postaci."
31
32 #: ../../../src/Avatar.cpp:583
33 msgid "You are defeated. Game over! ${INPUT_CONTINUE} to exit to Title."
34 msgstr ""
35 "Pokonano Cię. Koniec gry! ${INPUT_CONTINUE} spowoduje powrót do Menu "
36 "Głównego."
37
38 #: ../../../src/Avatar.cpp:589
39 msgid "You are defeated. ${INPUT_CONTINUE} to continue."
40 msgstr ""
41 "Pokonano Cię. ${INPUT_CONTINUE} sprawi, że odrodzisz się w ostatnim punkcie "
42 "kontrolnym."
43
44 #: ../../../src/Avatar.cpp:839
34 #: ../../../src/Avatar.cpp:423
35 msgid "You may increase one or more attributes through the Character Menu."
36 msgstr "Możesz zwiększyć jeden lub kilka ze swoich atrybutów w Menu Postaci."
37
38 #: ../../../src/Avatar.cpp:427
39 msgid "You may unlock one or more abilities through the Powers Menu."
40 msgstr "Możesz zwiększyć jedną lub kilka ze swoich zdolności w Menu Mocy."
41
42 #: ../../../src/Avatar.cpp:689
43 msgid "You are defeated."
44 msgstr ""
45
46 #: ../../../src/Avatar.cpp:935
4547 msgid "Transformation expired. You have been moved back to a safe place."
4648 msgstr "Transformacja minęła. Przeniesiono Cię w bezpieczne miejsce."
4749
48 #: ../../../src/CampaignManager.cpp:153
50 #: ../../../src/CampaignManager.cpp:152
4951 #, c-format
5052 msgid "%d %s removed."
5153 msgstr "Usunięto %d %s."
5254
53 #: ../../../src/CampaignManager.cpp:162
55 #: ../../../src/CampaignManager.cpp:171
56 #, c-format
57 msgid "%s x%d removed."
58 msgstr "Usunięto %dx %s."
59
60 #: ../../../src/CampaignManager.cpp:173
5461 #, c-format
5562 msgid "%s removed."
5663 msgstr "Usunięto %s."
5764
58 #: ../../../src/CampaignManager.cpp:175
65 #: ../../../src/CampaignManager.cpp:187
66 #, c-format
67 msgid "You receive %d %s."
68 msgstr "Otrzymujesz %d %s."
69
70 #: ../../../src/CampaignManager.cpp:191
71 #, c-format
72 msgid "You receive %s x%d."
73 msgstr "Otrzymujesz %s x%d."
74
75 #: ../../../src/CampaignManager.cpp:193
5976 #, c-format
6077 msgid "You receive %s."
6178 msgstr "Otrzymujesz przedmiot %s."
6279
63 #: ../../../src/CampaignManager.cpp:177
64 #, c-format
65 msgid "You receive %s x%d."
66 msgstr "Otrzymujesz %s x%d."
67
68 #: ../../../src/CampaignManager.cpp:186
69 #, c-format
70 msgid "You receive %d %s."
71 msgstr "Otrzymujesz %d %s."
72
73 #: ../../../src/CampaignManager.cpp:195
80 #: ../../../src/CampaignManager.cpp:210
7481 #, c-format
7582 msgid "You receive %d XP."
7683 msgstr "Otrzymujesz %d PD."
7784
78 #: ../../../src/CampaignManager.cpp:201
85 #: ../../../src/CampaignManager.cpp:216
7986 msgid "HP restored."
8087 msgstr "PŻ odnowione."
8188
82 #: ../../../src/CampaignManager.cpp:205
89 #: ../../../src/CampaignManager.cpp:220
8390 msgid "MP restored."
8491 msgstr "PM odnowione."
8592
86 #: ../../../src/CampaignManager.cpp:210
93 #: ../../../src/CampaignManager.cpp:225
8794 msgid "HP and MP restored."
8895 msgstr "PŻ i PM odnowione."
8996
90 #: ../../../src/CampaignManager.cpp:214
97 #: ../../../src/CampaignManager.cpp:229
9198 msgid "Negative effects removed."
9299 msgstr "Negatywne efekty usunięte."
93100
94 #: ../../../src/CampaignManager.cpp:220
101 #: ../../../src/CampaignManager.cpp:235
95102 msgid "HP and MP restored, negative effects removed"
96103 msgstr "PŻ i PM odnowione, negatywne efekty usunięte."
97104
115122 "\n"
116123 "Domyślny renderer, który zwykle jest szybszy niż programowy renderer SDL."
117124
118 #: ../../../src/EngineSettings.cpp:561
125 #: ../../../src/EngineSettings.cpp:586
119126 msgid "Adventurer"
120127 msgstr "Poszukiwacz przygód"
121128
122 #: ../../../src/Entity.cpp:511
129 #: ../../../src/Entity.cpp:527
123130 msgid "miss"
124131 msgstr "pudło"
125132
126 #: ../../../src/Entity.cpp:548 ../../../src/PowerManager.cpp:1152
127 #: ../../../src/StatBlock.cpp:805 ../../../src/StatBlock.cpp:811
133 #: ../../../src/Entity.cpp:565 ../../../src/PowerManager.cpp:1224
134 #: ../../../src/StatBlock.cpp:917 ../../../src/StatBlock.cpp:923
128135 #, c-format
129136 msgid "+%d HP"
130137 msgstr "+%d PŻ"
131138
132 #: ../../../src/Entity.cpp:555 ../../../src/StatBlock.cpp:816
133 #: ../../../src/StatBlock.cpp:822
139 #: ../../../src/Entity.cpp:572 ../../../src/StatBlock.cpp:928
140 #: ../../../src/StatBlock.cpp:934
134141 #, c-format
135142 msgid "+%d MP"
136143 msgstr "+%d PM"
137144
138 #: ../../../src/EventManager.cpp:738
145 #: ../../../src/EventManager.cpp:792
139146 msgid "Unknown destination"
140147 msgstr "Cel nieznany"
141148
142 #: ../../../src/GameStateConfigBase.cpp:89
143 #: ../../../src/GameStateConfigBase.cpp:110
149 #: ../../../src/GameState.cpp:37 ../../../src/GameState.cpp:58
150 msgid "Loading..."
151 msgstr "Wczytywanie..."
152
153 #: ../../../src/GameStateLoad.cpp:90 ../../../src/GameStateLoad.cpp:103
154 msgid "Delete Save"
155 msgstr "Usuń zapis"
156
157 #: ../../../src/GameStateLoad.cpp:90
158 msgid "Delete this save?"
159 msgstr "Usunąć ten zapis?"
160
161 #: ../../../src/GameStateLoad.cpp:92
162 msgid "Exit to Title"
163 msgstr "Wyjdź do Menu"
164
165 #: ../../../src/GameStateLoad.cpp:95
166 msgid "New Game"
167 msgstr "Nowa Gra"
168
169 #: ../../../src/GameStateLoad.cpp:99 ../../../src/GameStateLoad.cpp:607
170 msgid "Choose a Slot"
171 msgstr "Wybierz stan gry"
172
173 #: ../../../src/GameStateLoad.cpp:580 ../../../src/GameStateLoad.cpp:601
174 msgid "Enable a story mod to continue"
175 msgstr "Włącz mod fabularny, by kontynuować"
176
177 #: ../../../src/GameStateLoad.cpp:596
178 msgid "Load Game"
179 msgstr "Wczytaj Grę"
180
181 #: ../../../src/GameStateLoad.cpp:705
182 msgid "Entering game world..."
183 msgstr "Wkraczanie do świata gry..."
184
185 #: ../../../src/GameStateLoad.cpp:708
186 msgid "Loading saved game..."
187 msgstr "Wczytywanie stanu gry..."
188
189 #: ../../../src/GameStateLoad.cpp:741
190 msgid "Invalid save"
191 msgstr "Nieprawidłowy zapis"
192
193 #: ../../../src/GameStateLoad.cpp:765 ../../../src/ItemManager.cpp:745
194 #: ../../../src/MenuPowers.cpp:860 ../../../src/MenuPowers.cpp:1219
195 #: ../../../src/MenuPowers.cpp:1631
196 #, c-format
197 msgid "Level %d"
198 msgstr "Poziom %d"
199
200 #: ../../../src/GameStateNew.cpp:66 ../../../src/InputState.cpp:416
201 #: ../../../src/MenuConfig.cpp:246
202 msgid "Cancel"
203 msgstr "Anuluj"
204
205 #: ../../../src/GameStateNew.cpp:69
206 msgid "Create"
207 msgstr "Stwórz"
208
209 #: ../../../src/GameStateNew.cpp:77
210 msgid "Randomize"
211 msgstr "Losuj"
212
213 #: ../../../src/GameStateNew.cpp:93
214 msgid "Choose a Portrait"
215 msgstr "Wybierz potret"
216
217 #: ../../../src/GameStateNew.cpp:97
218 msgid "Choose a Name"
219 msgstr "Wybierz Imię"
220
221 #: ../../../src/GameStateNew.cpp:101
222 msgid "Permadeath?"
223 msgstr "Tryb hardkorowy?"
224
225 #: ../../../src/GameStateNew.cpp:105
226 msgid "Choose a Class"
227 msgstr "Wybierz klasę postaci"
228
229 #: ../../../src/GameStateTitle.cpp:107
230 msgid "Play Game"
231 msgstr "Zacznij grę"
232
233 #: ../../../src/GameStateTitle.cpp:110
234 msgid "Enable a core mod to continue"
235 msgstr "Włącz mod główny, aby kontynuować"
236
237 #: ../../../src/GameStateTitle.cpp:114 ../../../src/MenuMiniMap.cpp:152
238 msgid "Configuration"
239 msgstr "Konfiguracja"
240
241 #: ../../../src/GameStateTitle.cpp:117
242 msgid "Credits"
243 msgstr "Zasługi"
244
245 #: ../../../src/GameStateTitle.cpp:120
246 msgid "Exit Game"
247 msgstr "Wyjdź z gry"
248
249 #: ../../../src/InputState.cpp:417
250 msgid "Accept"
251 msgstr "Akceptuj"
252
253 #: ../../../src/InputState.cpp:418 ../../../src/MenuMovementType.cpp:123
254 #: ../../../src/MenuMovementType.cpp:132 ../../../src/SDLInputState.cpp:668
255 #: ../../../src/SDLInputState.cpp:698
256 msgid "Up"
257 msgstr "Góra"
258
259 #: ../../../src/InputState.cpp:419 ../../../src/MenuMovementType.cpp:125
260 #: ../../../src/MenuMovementType.cpp:134 ../../../src/SDLInputState.cpp:646
261 #: ../../../src/SDLInputState.cpp:676
262 msgid "Down"
263 msgstr "Dół"
264
265 #: ../../../src/InputState.cpp:420 ../../../src/MenuMovementType.cpp:124
266 #: ../../../src/MenuMovementType.cpp:133 ../../../src/SDLInputState.cpp:653
267 #: ../../../src/SDLInputState.cpp:683
268 msgid "Left"
269 msgstr "Lewo"
270
271 #: ../../../src/InputState.cpp:421 ../../../src/MenuMovementType.cpp:126
272 #: ../../../src/MenuMovementType.cpp:135 ../../../src/SDLInputState.cpp:663
273 #: ../../../src/SDLInputState.cpp:693
274 msgid "Right"
275 msgstr "Prawo"
276
277 #: ../../../src/InputState.cpp:422
278 msgid "Bar1"
279 msgstr "Pas1"
280
281 #: ../../../src/InputState.cpp:423
282 msgid "Bar2"
283 msgstr "Pas2"
284
285 #: ../../../src/InputState.cpp:424
286 msgid "Bar3"
287 msgstr "Pas3"
288
289 #: ../../../src/InputState.cpp:425
290 msgid "Bar4"
291 msgstr "Pas4"
292
293 #: ../../../src/InputState.cpp:426
294 msgid "Bar5"
295 msgstr "Pas5"
296
297 #: ../../../src/InputState.cpp:427
298 msgid "Bar6"
299 msgstr "Pas6"
300
301 #: ../../../src/InputState.cpp:428
302 msgid "Bar7"
303 msgstr "Pas7"
304
305 #: ../../../src/InputState.cpp:429
306 msgid "Bar8"
307 msgstr "Pas8"
308
309 #: ../../../src/InputState.cpp:430
310 msgid "Bar9"
311 msgstr "Pas9"
312
313 #: ../../../src/InputState.cpp:431
314 msgid "Bar0"
315 msgstr "Pas0"
316
317 #: ../../../src/InputState.cpp:432 ../../../src/MenuActionBar.cpp:84
318 #: ../../../src/MenuCharacter.cpp:54
319 msgid "Character"
320 msgstr "Postać"
321
322 #: ../../../src/InputState.cpp:433 ../../../src/MenuActionBar.cpp:85
323 #: ../../../src/MenuInventory.cpp:130 ../../../src/MenuVendor.cpp:59
324 msgid "Inventory"
325 msgstr "Ekwipunek"
326
327 #: ../../../src/InputState.cpp:434 ../../../src/MenuActionBar.cpp:86
328 #: ../../../src/MenuPowers.cpp:158
329 msgid "Powers"
330 msgstr "Moce"
331
332 #: ../../../src/InputState.cpp:435 ../../../src/MenuActionBar.cpp:87
333 #: ../../../src/MenuLog.cpp:72
334 msgid "Log"
335 msgstr "Dziennik"
336
337 #: ../../../src/InputState.cpp:436
338 msgid "Main1"
339 msgstr "Główny1"
340
341 #: ../../../src/InputState.cpp:437
342 msgid "Main2"
343 msgstr "Główny2"
344
345 #: ../../../src/InputState.cpp:438
346 msgid "Ctrl"
347 msgstr "Ctrl"
348
349 #: ../../../src/InputState.cpp:439
350 msgid "Shift"
351 msgstr "Shift"
352
353 #: ../../../src/InputState.cpp:440
354 msgid "Alt"
355 msgstr "Alt"
356
357 #: ../../../src/InputState.cpp:441 ../../../src/SDLInputState.cpp:675
358 msgid "Delete"
359 msgstr "Delete"
360
361 #: ../../../src/InputState.cpp:442
362 msgid "ActionBar Accept"
363 msgstr "Wybór elementu na Pasku Akcji"
364
365 #: ../../../src/InputState.cpp:443
366 msgid "ActionBar Left"
367 msgstr "Kursor na Pasku Akcji w lewo"
368
369 #: ../../../src/InputState.cpp:444
370 msgid "ActionBar Right"
371 msgstr "Kursor na Pasku Akcji w prawo"
372
373 #: ../../../src/InputState.cpp:445
374 msgid "ActionBar Use"
375 msgstr "Użycie elementu na Pasku Akcji"
376
377 #: ../../../src/InputState.cpp:446
378 msgid "Developer Menu"
379 msgstr "Menu deweloperskie"
380
381 #: ../../../src/InputState.cpp:448
382 msgid "Left Mouse"
383 msgstr "Lewy przycisk myszy"
384
385 #: ../../../src/InputState.cpp:449
386 msgid "Middle Mouse"
387 msgstr "Środkowy przycisk myszy"
388
389 #: ../../../src/InputState.cpp:450
390 msgid "Right Mouse"
391 msgstr "Prawy przycisk myszy"
392
393 #: ../../../src/InputState.cpp:451
394 msgid "Wheel Up"
395 msgstr "Kółko w górę"
396
397 #: ../../../src/InputState.cpp:452
398 msgid "Wheel Down"
399 msgstr "Kółko w dół"
400
401 #: ../../../src/InputState.cpp:453
402 msgid "Mouse X1"
403 msgstr "Przycisk myszy X1"
404
405 #: ../../../src/InputState.cpp:454
406 msgid "Mouse X2"
407 msgstr "Przycisk myszy X2"
408
409 #: ../../../src/ItemManager.cpp:475
410 msgid "Unknown Item"
411 msgstr "Nieznany przedmiot"
412
413 #: ../../../src/ItemManager.cpp:646 ../../../src/MenuPowers.cpp:959
414 #, c-format
415 msgid "%d%% Speed"
416 msgstr "%d%% Szybkość Ruchu"
417
418 #: ../../../src/ItemManager.cpp:650 ../../../src/MenuPowers.cpp:962
419 #, c-format
420 msgid "%d%% Attack Speed"
421 msgstr "%d%% Szybkość Ataku"
422
423 #: ../../../src/ItemManager.cpp:672 ../../../src/MenuCharacter.cpp:352
424 #: ../../../src/MenuPowers.cpp:931
425 #, c-format
426 msgid "Resistance (%s)"
427 msgstr "Odporność (%s)"
428
429 #: ../../../src/ItemManager.cpp:682
430 #, c-format
431 msgid "Requires %s"
432 msgstr "Wymaga %s"
433
434 #: ../../../src/ItemManager.cpp:731
435 msgid "Quest Item"
436 msgstr "Przedmiot związany z zadaniem"
437
438 #: ../../../src/ItemManager.cpp:758
439 #, c-format
440 msgid "Quality: %s"
441 msgstr "Jakość: %s"
442
443 #: ../../../src/ItemManager.cpp:783
444 #, c-format
445 msgid "Absorb: %d-%d"
446 msgstr "Absorbcja: %d-%d"
447
448 #: ../../../src/ItemManager.cpp:785
449 #, c-format
450 msgid "Absorb: %d"
451 msgstr "Absorbcja: %d"
452
453 #: ../../../src/ItemManager.cpp:825 ../../../src/MenuPowers.cpp:1206
454 #: ../../../src/MenuPowers.cpp:1209
455 #, c-format
456 msgid "Requires Level %d"
457 msgstr "Wymaga %d poziomu"
458
459 #: ../../../src/ItemManager.cpp:836 ../../../src/MenuPowers.cpp:1198
460 #: ../../../src/MenuPowers.cpp:1200
461 #, c-format
462 msgid "Requires %s %d"
463 msgstr "Wymaga: %s %d"
464
465 #: ../../../src/ItemManager.cpp:847
466 #, c-format
467 msgid "Requires Class: %s"
468 msgstr "Wymagana Klasa: %s"
469
470 #: ../../../src/ItemManager.cpp:863 ../../../src/ItemManager.cpp:875
471 #, c-format
472 msgid "Buy Price: %d %s"
473 msgstr "Cena kupna: %d %s"
474
475 #: ../../../src/ItemManager.cpp:865 ../../../src/ItemManager.cpp:877
476 #, c-format
477 msgid "Buy Price: %d %s each"
478 msgstr "Cena kupna: %d %s za sztukę"
479
480 #: ../../../src/ItemManager.cpp:885
481 #, c-format
482 msgid "Sell Price: %d %s"
483 msgstr "Wartość sprzedaży: %d %s"
484
485 #: ../../../src/ItemManager.cpp:887
486 #, c-format
487 msgid "Sell Price: %d %s each"
488 msgstr "Wartość sprzedaży: %d %s za sztukę"
489
490 #: ../../../src/ItemManager.cpp:896
491 msgid "Set:"
492 msgstr "Zestaw:"
493
494 #: ../../../src/ItemManager.cpp:903
495 #, c-format
496 msgid "%d items:"
497 msgstr "%d przedmioty:"
498
499 #: ../../../src/ItemManager.cpp:915
500 #, c-format
501 msgid "Press [%s] to read"
502 msgstr "Wciśnij [%s] aby przeczytać"
503
504 #: ../../../src/ItemManager.cpp:918
505 #, c-format
506 msgid "Press [%s] to use"
507 msgstr "Wciśnij [%s] aby użyć"
508
509 #: ../../../src/MenuActionBar.cpp:239 ../../../src/MenuActionBar.cpp:246
510 #: ../../../src/MenuActionBar.cpp:249 ../../../src/MenuActionBar.cpp:255
511 #, c-format
512 msgid "Hotkey: %s"
513 msgstr "Klawisz skrótu: %s"
514
515 #: ../../../src/MenuActionBar.cpp:621
516 msgid "Not enough MP."
517 msgstr "Za mało PM."
518
519 #: ../../../src/MenuActiveEffects.cpp:124
520 #, c-format
521 msgid "x%d"
522 msgstr "x%d"
523
524 #: ../../../src/MenuActiveEffects.cpp:219
525 msgid "Remaining:"
526 msgstr "Pozostało:"
527
528 #: ../../../src/MenuActiveEffects.cpp:225
529 #, c-format
530 msgid "x%d stacks"
531 msgstr "x%d sztuk"
532
533 #: ../../../src/MenuCharacter.cpp:73 ../../../src/MenuCharacter.cpp:78
534 msgid "Name"
535 msgstr "Imię"
536
537 #: ../../../src/MenuCharacter.cpp:74 ../../../src/MenuCharacter.cpp:79
538 msgid "Level"
539 msgstr "Poziom"
540
541 #: ../../../src/MenuCharacter.cpp:309
542 #, c-format
543 msgid "Available stat points: %d"
544 msgstr ""
545
546 #: ../../../src/MenuCharacter.cpp:353
547 #, c-format
548 msgid "Reduces the damage taken from \"%s\" elemental attacks."
549 msgstr "Zmniejsza obrażenia otrzymywane od ataków żywiołu \"%s\"."
550
551 #: ../../../src/MenuCharacter.cpp:363 ../../../src/MenuManager.cpp:301
552 #, c-format
553 msgid "XP: %d"
554 msgstr "Obecne PD: %d"
555
556 #: ../../../src/MenuCharacter.cpp:365
557 #, c-format
558 msgid "Next: %d"
559 msgstr "Do następnego poziomu: %d PD"
560
561 #: ../../../src/MenuCharacter.cpp:371
562 #, c-format
563 msgid "base (%d), bonus (%d)"
564 msgstr "Podstawa (%d), dodatkowo (%d)"
565
566 #: ../../../src/MenuCharacter.cpp:379 ../../../src/MenuCharacter.cpp:393
567 msgid "Related stats:"
568 msgstr "Powiązane statystyki:"
569
570 #: ../../../src/MenuCharacter.cpp:419 ../../../src/MenuCharacter.cpp:443
571 #, c-format
572 msgid "Each level grants %d."
573 msgstr "Każdy poziom zapewnia %d punktów."
574
575 #: ../../../src/MenuCharacter.cpp:423 ../../../src/MenuCharacter.cpp:447
576 #, c-format
577 msgid "Each point of %s grants %d."
578 msgstr "Każdy punkt atrybutu %s dodaje %d punktów."
579
580 #: ../../../src/MenuConfig.cpp:122 ../../../src/MenuConfig.cpp:1171
581 msgid "Clear"
582 msgstr "Wyczyść"
583
584 #: ../../../src/MenuConfig.cpp:122 ../../../src/MenuConfig.cpp:1169
585 msgid "Assign:"
586 msgstr "Przypisz:"
587
588 #: ../../../src/MenuConfig.cpp:123 ../../../src/MenuConfig.cpp:245
144589 msgid "Defaults"
145590 msgstr "Domyślne"
146591
147 #: ../../../src/GameStateConfigBase.cpp:89
592 #: ../../../src/MenuConfig.cpp:123
148593 msgid "Reset ALL settings?"
149594 msgstr "Zresetować WSZYSTKIE ustawienia?"
150595
151 #: ../../../src/GameStateConfigBase.cpp:109 ../../../src/MenuNumPicker.cpp:49
596 #: ../../../src/MenuConfig.cpp:244 ../../../src/MenuNumPicker.cpp:49
152597 msgid "OK"
153598 msgstr "OK"
154599
155 #: ../../../src/GameStateConfigBase.cpp:111 ../../../src/GameStateNew.cpp:65
156 #: ../../../src/InputState.cpp:401
157 msgid "Cancel"
158 msgstr "Anuluj"
159
160 #: ../../../src/GameStateConfigBase.cpp:160
161 #: ../../../src/GameStateConfigDesktop.cpp:130
600 #: ../../../src/MenuConfig.cpp:248 ../../../src/MenuGameOver.cpp:72
601 msgid "Continue"
602 msgstr "Kontynuuj"
603
604 #: ../../../src/MenuConfig.cpp:250
605 msgid "Save Game"
606 msgstr "Zapisz Grę"
607
608 #: ../../../src/MenuConfig.cpp:293
609 msgid "Default"
610 msgstr "Domyślne"
611
612 #: ../../../src/MenuConfig.cpp:293
613 msgid ""
614 "Show all loot tooltips, except for those that would be obscured by the "
615 "player or an enemy. Temporarily show all loot tooltips with 'Alt'."
616 msgstr ""
617 "Wyświetla podpisy wszystkich łupów, za wyjątkiem tych zasłoniętych przez "
618 "gracza bądź wroga. Tymczasowo ukryj podpisy klawiszem 'Alt'."
619
620 #: ../../../src/MenuConfig.cpp:294
621 msgid "Show all"
622 msgstr "Pokaż wszystkie"
623
624 #: ../../../src/MenuConfig.cpp:294
625 msgid ""
626 "Always show loot tooltips. Temporarily hide all loot tooltips with 'Alt'."
627 msgstr ""
628 "Zawsze wyświetla podpisy łupów. Tymczasowo ukryj podpisy klawiszem 'Alt'."
629
630 #: ../../../src/MenuConfig.cpp:295 ../../../src/MenuConfig.cpp:300
631 msgid "Hidden"
632 msgstr "Ukryta"
633
634 #: ../../../src/MenuConfig.cpp:295
635 msgid ""
636 "Always hide loot tooltips, except for when a piece of loot is hovered with "
637 "the mouse cursor. Temporarily show all loot tooltips with 'Alt'."
638 msgstr ""
639 "Zawsze ukrywaj podpisy łupów, poza tymi, na których znajduje się kursor "
640 "myszt. Tymczasowo pokaż podpisy wszystkich łupów klawiszem 'Alt'."
641
642 #: ../../../src/MenuConfig.cpp:298
643 msgid "Visible"
644 msgstr "Widoczna"
645
646 #: ../../../src/MenuConfig.cpp:299
647 msgid "Visible (2x zoom)"
648 msgstr "Widoczna (powiększenie x2)"
649
650 #: ../../../src/MenuConfig.cpp:303
651 msgid ""
652 "Controls the type of warning to be activated when the player is below the "
653 "low health threshold."
654 msgstr ""
655
656 #: ../../../src/MenuConfig.cpp:304
657 msgid "- Display a message"
658 msgstr ""
659
660 #: ../../../src/MenuConfig.cpp:305
661 msgid "- Play a sound"
662 msgstr ""
663
664 #: ../../../src/MenuConfig.cpp:306
665 msgid "- Change the cursor"
666 msgstr ""
667
668 #: ../../../src/MenuConfig.cpp:308
669 msgid "Disabled"
670 msgstr ""
671
672 #: ../../../src/MenuConfig.cpp:309
673 msgid "All"
674 msgstr ""
675
676 #: ../../../src/MenuConfig.cpp:310
677 msgid "Message & Cursor"
678 msgstr ""
679
680 #: ../../../src/MenuConfig.cpp:311
681 msgid "Message & Sound"
682 msgstr ""
683
684 #: ../../../src/MenuConfig.cpp:312
685 msgid "Sound & Cursor"
686 msgstr ""
687
688 #: ../../../src/MenuConfig.cpp:313
689 msgid "Message"
690 msgstr ""
691
692 #: ../../../src/MenuConfig.cpp:314
693 msgid "Cursor"
694 msgstr "Kursor"
695
696 #: ../../../src/MenuConfig.cpp:315
697 msgid "Sound"
698 msgstr ""
699
700 #: ../../../src/MenuConfig.cpp:321
701 msgid ""
702 "When the player's health drops below the given threshold, the low health "
703 "notifications are triggered if one or more of them is enabled."
704 msgstr ""
705
706 #: ../../../src/MenuConfig.cpp:334 ../../../src/MenuConfig.cpp:1587
707 #: ../../../src/MenuGameOver.cpp:116
708 msgid "Exit"
709 msgstr "Wyjdź"
710
711 #: ../../../src/MenuConfig.cpp:335
712 msgid "Video"
713 msgstr "Grafika"
714
715 #: ../../../src/MenuConfig.cpp:336
162716 msgid "Audio"
163717 msgstr "Dźwięk"
164718
165 #: ../../../src/GameStateConfigBase.cpp:161
166 #: ../../../src/GameStateConfigDesktop.cpp:131
719 #: ../../../src/MenuConfig.cpp:337
167720 msgid "Interface"
168721 msgstr "Interfejs"
169722
170 #: ../../../src/GameStateConfigBase.cpp:162
171 #: ../../../src/GameStateConfigDesktop.cpp:134
723 #: ../../../src/MenuConfig.cpp:338
724 msgid "Input"
725 msgstr "Kontrolery"
726
727 #: ../../../src/MenuConfig.cpp:339
728 msgid "Keybindings"
729 msgstr "Klawiszologia"
730
731 #: ../../../src/MenuConfig.cpp:340
172732 msgid "Mods"
173733 msgstr "Mody"
174734
175 #: ../../../src/GameStateConfigBase.cpp:249 ../../../src/MenuExit.cpp:72
735 #: ../../../src/MenuConfig.cpp:352
736 msgid "Paused"
737 msgstr "Pauza"
738
739 #: ../../../src/MenuConfig.cpp:355
740 msgid "Time Played"
741 msgstr "Czas spędzony w grze"
742
743 #: ../../../src/MenuConfig.cpp:361
744 msgid "Renderer"
745 msgstr "Renderer"
746
747 #: ../../../src/MenuConfig.cpp:362
748 msgid "Full Screen Mode"
749 msgstr "Pełny ekran"
750
751 #: ../../../src/MenuConfig.cpp:363
752 msgid "Hardware surfaces"
753 msgstr "Generowanie sprzętowe"
754
755 #: ../../../src/MenuConfig.cpp:364
756 msgid "V-Sync"
757 msgstr "V-Sync"
758
759 #: ../../../src/MenuConfig.cpp:365
760 msgid "Texture Filtering"
761 msgstr "Filtrowanie tekstur"
762
763 #: ../../../src/MenuConfig.cpp:366
764 msgid "DPI scaling"
765 msgstr "Skalowanie DPI"
766
767 #: ../../../src/MenuConfig.cpp:367
768 msgid "Parallax Layers"
769 msgstr "Warstwy paralaksowe"
770
771 #: ../../../src/MenuConfig.cpp:368
772 msgid "Allow changing gamma"
773 msgstr "Zezwól na zmianę jasności"
774
775 #: ../../../src/MenuConfig.cpp:369
776 msgid "Gamma"
777 msgstr "Jasność"
778
779 #: ../../../src/MenuConfig.cpp:371
780 msgid "Sound Volume"
781 msgstr "Głośność efektów"
782
783 #: ../../../src/MenuConfig.cpp:372
176784 msgid "Music Volume"
177785 msgstr "Głośność muzyki"
178786
179 #: ../../../src/GameStateConfigBase.cpp:253 ../../../src/MenuExit.cpp:77
180 msgid "Sound Volume"
181 msgstr "Głośność efektów"
182
183 #: ../../../src/GameStateConfigBase.cpp:257
787 #: ../../../src/MenuConfig.cpp:374
184788 msgid "Language"
185789 msgstr "Język"
186790
187 #: ../../../src/GameStateConfigBase.cpp:266
791 #: ../../../src/MenuConfig.cpp:375
188792 msgid "Show FPS"
189793 msgstr "Pokaż klatki na sekundę"
190794
191 #: ../../../src/GameStateConfigBase.cpp:270
192 msgid "Colorblind Mode"
193 msgstr "Minimalizacja kolorów"
194
195 #: ../../../src/GameStateConfigBase.cpp:274
795 #: ../../../src/MenuConfig.cpp:376
196796 msgid "Hardware mouse cursor"
197797 msgstr "Sprzętowy kursor myszy"
198798
199 #: ../../../src/GameStateConfigBase.cpp:278
799 #: ../../../src/MenuConfig.cpp:377
800 msgid "Colorblind Mode"
801 msgstr "Wyświetlanie opisów kolorów"
802
803 #: ../../../src/MenuConfig.cpp:378
200804 msgid "Developer Mode"
201805 msgstr "Tryb deweloperski"
202806
203 #: ../../../src/GameStateConfigBase.cpp:282
807 #: ../../../src/MenuConfig.cpp:379
204808 msgid "Subtitles"
205809 msgstr "Napisy"
206810
207 #: ../../../src/GameStateConfigBase.cpp:286
208 msgid "Active Mods"
209 msgstr "Aktywne mody"
210
211 #: ../../../src/GameStateConfigBase.cpp:295
212 msgid "Available Mods"
213 msgstr "Dostępne mody"
214
215 #: ../../../src/GameStateConfigBase.cpp:314
216 msgid "<< Disable"
217 msgstr "<< Wyłącz"
218
219 #: ../../../src/GameStateConfigBase.cpp:320
220 msgid "Enable >>"
221 msgstr "Włącz >>"
222
223 #: ../../../src/GameStateConfigBase.cpp:873
224 msgid "Version:"
225 msgstr "Wersja:"
226
227 #: ../../../src/GameStateConfigBase.cpp:878
228 msgid "Game:"
229 msgstr "Gra:"
230
231 #: ../../../src/GameStateConfigBase.cpp:883
232 msgid "Engine version:"
233 msgstr "Wersja silnika:"
234
235 #: ../../../src/GameStateConfigBase.cpp:891
236 msgid "Requires mods:"
237 msgstr "Wymaga modów:"
238
239 #: ../../../src/GameStateConfigDesktop.cpp:83
240 #: ../../../src/GameStateConfigDesktop.cpp:751
241 msgid "Clear"
242 msgstr "Wyczyść"
243
244 #: ../../../src/GameStateConfigDesktop.cpp:83
245 #: ../../../src/GameStateConfigDesktop.cpp:749
246 msgid "Assign:"
247 msgstr "Przypisz:"
248
249 #: ../../../src/GameStateConfigDesktop.cpp:128
250 msgid "Video"
251 msgstr "Grafika"
252
253 #: ../../../src/GameStateConfigDesktop.cpp:132
254 msgid "Input"
255 msgstr "Kontrolery"
256
257 #: ../../../src/GameStateConfigDesktop.cpp:133
258 msgid "Keybindings"
259 msgstr "Klawiszologia"
260
261 #: ../../../src/GameStateConfigDesktop.cpp:188
811 #: ../../../src/MenuConfig.cpp:380
812 msgid "Loot tooltip visibility"
813 msgstr "Widoczność podpisów łupów"
814
815 #: ../../../src/MenuConfig.cpp:381
816 msgid "Mini-map mode"
817 msgstr "Tryb minimapy"
818
819 #: ../../../src/MenuConfig.cpp:382
820 msgid "Always show stat bar labels"
821 msgstr "Pokazuj podpisy na paskach"
822
823 #: ../../../src/MenuConfig.cpp:383
824 msgid "Allow stat bar auto-hiding"
825 msgstr "Zezwól na automatyczne ukrywanie pasków stanu"
826
827 #: ../../../src/MenuConfig.cpp:384
828 msgid "Show combat text"
829 msgstr "Pokaż tekst podczas walki"
830
831 #: ../../../src/MenuConfig.cpp:385
832 msgid "Automatically equip items"
833 msgstr "Automatycznie załóż ekwipunek"
834
835 #: ../../../src/MenuConfig.cpp:386
836 msgid "Show hidden entity markers"
837 msgstr "Wyświetl znaczniki ukrytych bytów"
838
839 #: ../../../src/MenuConfig.cpp:387
840 msgid "Low health notification"
841 msgstr ""
842
843 #: ../../../src/MenuConfig.cpp:388
844 msgid "Low health threshold"
845 msgstr ""
846
847 #: ../../../src/MenuConfig.cpp:389
848 msgid "Show item comparison tooltips"
849 msgstr ""
850
851 #: ../../../src/MenuConfig.cpp:392 ../../../src/MenuMovementType.cpp:94
852 #: ../../../src/MenuMovementType.cpp:131
853 msgid "Joystick"
854 msgstr "Joystick"
855
856 #: ../../../src/MenuConfig.cpp:393
857 msgid "Move hero using mouse"
858 msgstr "Poruszaj się używając myszki"
859
860 #: ../../../src/MenuConfig.cpp:394
861 msgid "Mouse aim"
862 msgstr "Celowanie myszką"
863
864 #: ../../../src/MenuConfig.cpp:395
865 msgid "Do not use mouse"
866 msgstr "Nie używaj myszy"
867
868 #: ../../../src/MenuConfig.cpp:396
869 msgid "Swap mouse movement button"
870 msgstr "Zamień przyciski ruchu na myszce"
871
872 #: ../../../src/MenuConfig.cpp:397
873 msgid "Attack with mouse movement"
874 msgstr "Atakuj podczas ruchu myszką"
875
876 #: ../../../src/MenuConfig.cpp:398
877 msgid "Joystick Deadzone"
878 msgstr "Martwa strefa Joystick-a"
879
880 #: ../../../src/MenuConfig.cpp:408
881 #, c-format
882 msgid "Primary binding: %s"
883 msgstr "Klawisz główny: %s"
884
885 #: ../../../src/MenuConfig.cpp:409
886 #, c-format
887 msgid "Alternate binding: %s"
888 msgstr "Klawisz alternatywny: %s"
889
890 #: ../../../src/MenuConfig.cpp:410
891 #, c-format
892 msgid "Joystick binding: %s"
893 msgstr "Przycisk na joysticku: %s"
894
895 #: ../../../src/MenuConfig.cpp:511
262896 msgid ""
263897 "Will try to store surfaces in video memory versus system memory. The effect "
264898 "this has on performance depends on the renderer."
265899 msgstr ""
266
267 #: ../../../src/GameStateConfigDesktop.cpp:189
900 "Funkcja będzie próbowała przechowywać powierzchnie w pamięci karty "
901 "graficznej zamiast systemowej. Jej wydajność zależy od renderera"
902
903 #: ../../../src/MenuConfig.cpp:512
268904 msgid ""
269905 "Prevents screen tearing. Disable if you experience \"stuttering\" in "
270906 "windowed mode or input lag."
271907 msgstr ""
272
273 #: ../../../src/GameStateConfigDesktop.cpp:190
908 "Zapobiega rozchodzeniu się obrazu. Wyłącz, jeśli doświadczasz "
909 "\"przycinania\\ w trybie okienkowym bądź opóźnienia w wykonywaniu akcji."
910
911 #: ../../../src/MenuConfig.cpp:513
274912 msgid ""
275913 "When enabled, this uses the screen DPI in addition to the window dimensions "
276914 "to scale the rendering resolution. Otherwise, only the window dimensions are"
277915 " used."
278916 msgstr ""
279
280 #: ../../../src/GameStateConfigDesktop.cpp:191
917 "Po włączeniu, ta funkcja bierze pod uwagę rozdzielczość ekranu podczas "
918 "skalowania renderowanego obrazu do rozmiaru okna. W przeciwnym wypadku brany"
919 " pod uwagę jest wyłącznie rozmiar okna."
920
921 #: ../../../src/MenuConfig.cpp:514
281922 msgid ""
282923 "This enables parallax (non-tile) layers. Disabling this setting can improve "
283924 "performance in some cases."
284925 msgstr ""
285
286 #: ../../../src/GameStateConfigDesktop.cpp:192
287 msgid "Experimental"
288 msgstr "Eksperymentalne"
289
290 #: ../../../src/GameStateConfigDesktop.cpp:193
291 msgid "For handheld devices"
292 msgstr "Dla urządzeń przenośnych"
293
294 #: ../../../src/GameStateConfigDesktop.cpp:211
295 msgid "Renderer"
296 msgstr "Renderer"
297
298 #: ../../../src/GameStateConfigDesktop.cpp:227
299 msgid "Full Screen Mode"
300 msgstr "Pełny ekran"
301
302 #: ../../../src/GameStateConfigDesktop.cpp:231
303 msgid "Move hero using mouse"
304 msgstr "Poruszaj się używając myszki"
305
306 #: ../../../src/GameStateConfigDesktop.cpp:235
307 msgid "Hardware surfaces"
308 msgstr "Generowanie sprzętowe"
309
310 #: ../../../src/GameStateConfigDesktop.cpp:239
311 msgid "V-Sync"
312 msgstr "V-Sync"
313
314 #: ../../../src/GameStateConfigDesktop.cpp:243
315 msgid "Texture Filtering"
316 msgstr "Filtrowanie tekstur"
317
318 #: ../../../src/GameStateConfigDesktop.cpp:247
319 msgid "DPI scaling"
320 msgstr ""
321
322 #: ../../../src/GameStateConfigDesktop.cpp:251
323 msgid "Parallax Layers"
324 msgstr ""
325
326 #: ../../../src/GameStateConfigDesktop.cpp:255
327 msgid "Allow changing gamma"
328 msgstr "Zezwól na zmianę jasności"
329
330 #: ../../../src/GameStateConfigDesktop.cpp:259
331 msgid "Gamma"
332 msgstr "Jasność"
333
334 #: ../../../src/GameStateConfigDesktop.cpp:263
335 msgid "Use joystick"
336 msgstr "Użyj joysticka"
337
338 #: ../../../src/GameStateConfigDesktop.cpp:267
339 msgid "Joystick"
340 msgstr "Joystick"
341
342 #: ../../../src/GameStateConfigDesktop.cpp:283
343 msgid "Mouse aim"
344 msgstr "Celowanie myszką"
345
346 #: ../../../src/GameStateConfigDesktop.cpp:287
347 msgid "Do not use mouse"
348 msgstr "Nie używaj myszy"
349
350 #: ../../../src/GameStateConfigDesktop.cpp:291
351 msgid "Joystick Deadzone"
352 msgstr "Martwa strefa Joystick-a"
353
354 #: ../../../src/GameState.cpp:37 ../../../src/GameState.cpp:58
355 msgid "Loading..."
356 msgstr "Wczytywanie..."
357
358 #: ../../../src/GameStateLoad.cpp:88 ../../../src/GameStateLoad.cpp:101
359 msgid "Delete Save"
360 msgstr "Usuń zapis"
361
362 #: ../../../src/GameStateLoad.cpp:88
363 msgid "Delete this save?"
364 msgstr "Usunąć ten zapis?"
365
366 #: ../../../src/GameStateLoad.cpp:90
367 msgid "Exit to Title"
368 msgstr "Wyjdź do Menu"
369
370 #: ../../../src/GameStateLoad.cpp:93
371 msgid "New Game"
372 msgstr "Nowa Gra"
373
374 #: ../../../src/GameStateLoad.cpp:97 ../../../src/GameStateLoad.cpp:600
375 msgid "Choose a Slot"
376 msgstr "Wybierz stan gry"
377
378 #: ../../../src/GameStateLoad.cpp:573 ../../../src/GameStateLoad.cpp:594
379 msgid "Enable a story mod to continue"
380 msgstr "Włącz mod fabularny, by kontynuować"
381
382 #: ../../../src/GameStateLoad.cpp:589
383 msgid "Load Game"
384 msgstr "Wczytaj Grę"
385
386 #: ../../../src/GameStateLoad.cpp:695
387 msgid "Entering game world..."
388 msgstr "Wkraczanie do świata gry..."
389
390 #: ../../../src/GameStateLoad.cpp:698
391 msgid "Loading saved game..."
392 msgstr "Wczytywanie stanu gry..."
393
394 #: ../../../src/GameStateLoad.cpp:731
395 msgid "Invalid save"
396 msgstr "Nieprawidłowy zapis"
397
398 #: ../../../src/GameStateLoad.cpp:755 ../../../src/ItemManager.cpp:747
399 #: ../../../src/MenuPowers.cpp:778 ../../../src/MenuPowers.cpp:1144
400 #: ../../../src/MenuPowers.cpp:1542
401 #, c-format
402 msgid "Level %d"
403 msgstr "Poziom %d"
404
405 #: ../../../src/GameStateNew.cpp:68
406 msgid "Create"
407 msgstr "Stwórz"
408
409 #: ../../../src/GameStateNew.cpp:76
410 msgid "Randomize"
411 msgstr ""
412
413 #: ../../../src/GameStateNew.cpp:92
414 msgid "Choose a Portrait"
415 msgstr "Wybierz potret"
416
417 #: ../../../src/GameStateNew.cpp:96
418 msgid "Choose a Name"
419 msgstr "Wybierz Imię"
420
421 #: ../../../src/GameStateNew.cpp:100
422 msgid "Permadeath?"
423 msgstr "Tryb hardkorowy?"
424
425 #: ../../../src/GameStateNew.cpp:104
426 msgid "Choose a Class"
427 msgstr "Wybierz klasę postaci"
428
429 #: ../../../src/GameStateTitle.cpp:108
430 msgid "Play Game"
431 msgstr "Zacznij grę"
432
433 #: ../../../src/GameStateTitle.cpp:111
434 msgid "Enable a core mod to continue"
435 msgstr "Włącz mod główny, aby kontynuować"
436
437 #: ../../../src/GameStateTitle.cpp:115
438 msgid "Configuration"
439 msgstr "Konfiguracja"
440
441 #: ../../../src/GameStateTitle.cpp:118
442 msgid "Credits"
443 msgstr "Lista płac"
444
445 #: ../../../src/GameStateTitle.cpp:121
446 msgid "Exit Game"
447 msgstr "Wyjdź z Gry"
448
449 #: ../../../src/InputState.cpp:402
450 msgid "Accept"
451 msgstr "Akceptuj"
452
453 #: ../../../src/InputState.cpp:403 ../../../src/SDLInputState.cpp:607
454 msgid "Up"
455 msgstr "Góra"
456
457 #: ../../../src/InputState.cpp:404 ../../../src/SDLInputState.cpp:585
458 msgid "Down"
459 msgstr "Dół"
460
461 #: ../../../src/InputState.cpp:405 ../../../src/SDLInputState.cpp:592
462 msgid "Left"
463 msgstr "Lewo"
464
465 #: ../../../src/InputState.cpp:406 ../../../src/SDLInputState.cpp:602
466 msgid "Right"
467 msgstr "Prawo"
468
469 #: ../../../src/InputState.cpp:407
470 msgid "Bar1"
471 msgstr "Pas1"
472
473 #: ../../../src/InputState.cpp:408
474 msgid "Bar2"
475 msgstr "Pas2"
476
477 #: ../../../src/InputState.cpp:409
478 msgid "Bar3"
479 msgstr "Pas3"
480
481 #: ../../../src/InputState.cpp:410
482 msgid "Bar4"
483 msgstr "Pas4"
484
485 #: ../../../src/InputState.cpp:411
486 msgid "Bar5"
487 msgstr "Pas5"
488
489 #: ../../../src/InputState.cpp:412
490 msgid "Bar6"
491 msgstr "Pas6"
492
493 #: ../../../src/InputState.cpp:413
494 msgid "Bar7"
495 msgstr "Pas7"
496
497 #: ../../../src/InputState.cpp:414
498 msgid "Bar8"
499 msgstr "Pas8"
500
501 #: ../../../src/InputState.cpp:415
502 msgid "Bar9"
503 msgstr "Pas9"
504
505 #: ../../../src/InputState.cpp:416
506 msgid "Bar0"
507 msgstr "Pas0"
508
509 #: ../../../src/InputState.cpp:417 ../../../src/MenuActionBar.cpp:83
510 #: ../../../src/MenuCharacter.cpp:54
511 msgid "Character"
512 msgstr "Postać"
513
514 #: ../../../src/InputState.cpp:418 ../../../src/MenuActionBar.cpp:84
515 #: ../../../src/MenuInventory.cpp:137 ../../../src/MenuVendor.cpp:57
516 msgid "Inventory"
517 msgstr "Ekwipunek"
518
519 #: ../../../src/InputState.cpp:419 ../../../src/MenuActionBar.cpp:85
520 #: ../../../src/MenuPowers.cpp:168
521 msgid "Powers"
522 msgstr "Moce"
523
524 #: ../../../src/InputState.cpp:420 ../../../src/MenuActionBar.cpp:86
525 #: ../../../src/MenuLog.cpp:72
526 msgid "Log"
527 msgstr "Dziennik"
528
529 #: ../../../src/InputState.cpp:421
530 msgid "Main1"
531 msgstr "Główny1"
532
533 #: ../../../src/InputState.cpp:422
534 msgid "Main2"
535 msgstr "Główny2"
536
537 #: ../../../src/InputState.cpp:423
538 msgid "Ctrl"
539 msgstr "Ctrl"
540
541 #: ../../../src/InputState.cpp:424
542 msgid "Shift"
543 msgstr "Shift"
544
545 #: ../../../src/InputState.cpp:425
546 msgid "Alt"
547 msgstr "Alt"
548
549 #: ../../../src/InputState.cpp:426 ../../../src/SDLInputState.cpp:584
550 msgid "Delete"
551 msgstr "Delete"
552
553 #: ../../../src/InputState.cpp:427
554 msgid "ActionBar Accept"
555 msgstr "Wybór elementu na Pasku Akcji"
556
557 #: ../../../src/InputState.cpp:428
558 msgid "ActionBar Left"
559 msgstr "Kursor na Pasku Akcji w lewo"
560
561 #: ../../../src/InputState.cpp:429
562 msgid "ActionBar Right"
563 msgstr "Kursor na Pasku Akcji w prawo"
564
565 #: ../../../src/InputState.cpp:430
566 msgid "ActionBar Use"
567 msgstr "Użycie elementu na Pasku Akcji"
568
569 #: ../../../src/InputState.cpp:431
570 msgid "Developer Menu"
571 msgstr "Menu deweloperskie"
572
573 #: ../../../src/InputState.cpp:433
574 msgid "Left Mouse"
575 msgstr "Lewy przycisk myszy"
576
577 #: ../../../src/InputState.cpp:434
578 msgid "Middle Mouse"
579 msgstr "Środkowy przycisk myszy"
580
581 #: ../../../src/InputState.cpp:435
582 msgid "Right Mouse"
583 msgstr "Prawy przycisk myszy"
584
585 #: ../../../src/InputState.cpp:436
586 msgid "Wheel Up"
587 msgstr "Kółko w górę"
588
589 #: ../../../src/InputState.cpp:437
590 msgid "Wheel Down"
591 msgstr "Kółko w dół"
592
593 #: ../../../src/InputState.cpp:438
594 msgid "Mouse X1"
595 msgstr "Przycisk myszy X1"
596
597 #: ../../../src/InputState.cpp:439
598 msgid "Mouse X2"
599 msgstr "Przycisk myszy X2"
600
601 #: ../../../src/ItemManager.cpp:450 ../../../src/ItemManager.cpp:453
602 msgid "Unknown Item"
603 msgstr "Nieznany przedmiot"
604
605 #: ../../../src/ItemManager.cpp:648 ../../../src/MenuPowers.cpp:887
606 #, c-format
607 msgid "%d%% Speed"
608 msgstr "%d%% Szybkość Ruchu"
609
610 #: ../../../src/ItemManager.cpp:652 ../../../src/MenuPowers.cpp:890
611 #, c-format
612 msgid "%d%% Attack Speed"
613 msgstr "%d%% Szybkość Ataku"
614
615 #: ../../../src/ItemManager.cpp:674 ../../../src/MenuCharacter.cpp:354
616 #: ../../../src/MenuPowers.cpp:833
617 #, c-format
618 msgid "Resistance (%s)"
619 msgstr ""
620
621 #: ../../../src/ItemManager.cpp:684
622 #, c-format
623 msgid "Requires %s"
624 msgstr ""
625
626 #: ../../../src/ItemManager.cpp:733
627 msgid "Quest Item"
628 msgstr "Przedmiot związany z zadaniem"
629
630 #: ../../../src/ItemManager.cpp:760
631 #, c-format
632 msgid "Quality: %s"
633 msgstr "Jakość: %s"
634
635 #: ../../../src/ItemManager.cpp:785
636 #, c-format
637 msgid "Absorb: %d-%d"
638 msgstr "Absorbcja: %d-%d"
639
640 #: ../../../src/ItemManager.cpp:787
641 #, c-format
642 msgid "Absorb: %d"
643 msgstr "Absorbcja: %d"
644
645 #: ../../../src/ItemManager.cpp:827 ../../../src/MenuPowers.cpp:1131
646 #: ../../../src/MenuPowers.cpp:1134
647 #, c-format
648 msgid "Requires Level %d"
649 msgstr "Wymaga %d poziomu"
650
651 #: ../../../src/ItemManager.cpp:838 ../../../src/MenuPowers.cpp:1123
652 #: ../../../src/MenuPowers.cpp:1125
653 #, c-format
654 msgid "Requires %s %d"
655 msgstr "Wymaga: %s %d"
656
657 #: ../../../src/ItemManager.cpp:849
658 #, c-format
659 msgid "Requires Class: %s"
660 msgstr "Wymagana Klasa: %s"
661
662 #: ../../../src/ItemManager.cpp:864 ../../../src/ItemManager.cpp:876
663 #, c-format
664 msgid "Buy Price: %d %s"
665 msgstr "Cena kupna: %d %s"
666
667 #: ../../../src/ItemManager.cpp:866 ../../../src/ItemManager.cpp:878
668 #, c-format
669 msgid "Buy Price: %d %s each"
670 msgstr "Cena kupna: %d %s za sztukę"
671
672 #: ../../../src/ItemManager.cpp:886
673 #, c-format
674 msgid "Sell Price: %d %s"
675 msgstr "Wartość sprzedaży: %d %s"
676
677 #: ../../../src/ItemManager.cpp:888
678 #, c-format
679 msgid "Sell Price: %d %s each"
680 msgstr "Wartość sprzedaży: %d %s za sztukę"
681
682 #: ../../../src/ItemManager.cpp:897
683 msgid "Set:"
684 msgstr "Zestaw:"
685
686 #: ../../../src/ItemManager.cpp:904
687 #, c-format
688 msgid "%d items:"
689 msgstr "%d przedmioty:"
690
691 #: ../../../src/ItemManager.cpp:917
692 #, c-format
693 msgid "Press [%s] to use"
694 msgstr "Wciśnij [%s] aby użyć"
695
696 #: ../../../src/ItemManager.cpp:920
697 #, c-format
698 msgid "Press [%s] to read"
699 msgstr "Wciśnij [%s] aby przeczytać"
700
701 #: ../../../src/MenuActionBar.cpp:87
702 msgid "Loot tooltip visibility"
703 msgstr ""
704
705 #: ../../../src/MenuActionBar.cpp:88
706 msgid "Mini-map mode"
707 msgstr ""
708
709 #: ../../../src/MenuActionBar.cpp:89
710 msgid "Always show stat bar labels"
711 msgstr "Pokazuj podpisy na paskach"
712
713 #: ../../../src/MenuActionBar.cpp:90
714 msgid "Show combat text"
715 msgstr "Pokaż tekst podczas walki"
716
717 #: ../../../src/MenuActionBar.cpp:254 ../../../src/MenuActionBar.cpp:261
718 #: ../../../src/MenuActionBar.cpp:264 ../../../src/MenuActionBar.cpp:271
719 #, c-format
720 msgid "Hotkey: %s"
721 msgstr "Klawisz skrótu: %s"
722
723 #: ../../../src/MenuActionBar.cpp:474
724 #, c-format
725 msgid "Default. Temporarily show all loot tooltips with '%s'."
726 msgstr ""
727
728 #: ../../../src/MenuActionBar.cpp:476
729 #, c-format
730 msgid "Show All. Temporarily hide all loot tooltips with '%s'."
731 msgstr ""
732
733 #: ../../../src/MenuActionBar.cpp:478
734 #, c-format
735 msgid "Hide All. Temporarily show all loot tooltips with '%s'."
736 msgstr ""
737
738 #: ../../../src/MenuActionBar.cpp:482
739 msgid "Visible"
740 msgstr ""
741
742 #: ../../../src/MenuActionBar.cpp:484
743 msgid "Visible (2x zoom)"
744 msgstr ""
745
746 #: ../../../src/MenuActionBar.cpp:486
747 msgid "Hidden"
748 msgstr ""
749
750 #: ../../../src/MenuActionBar.cpp:490 ../../../src/MenuActionBar.cpp:496
751 msgid "Enabled"
752 msgstr ""
753
754 #: ../../../src/MenuActionBar.cpp:492 ../../../src/MenuActionBar.cpp:498
755 msgid "Disabled"
756 msgstr ""
757
758 #: ../../../src/MenuActionBar.cpp:657
759 msgid "Not enough MP."
760 msgstr ""
761
762 #: ../../../src/MenuActiveEffects.cpp:124
763 #, c-format
764 msgid "x%d"
765 msgstr "x%d"
766
767 #: ../../../src/MenuActiveEffects.cpp:219
768 msgid "Remaining:"
769 msgstr "Pozostało:"
770
771 #: ../../../src/MenuActiveEffects.cpp:225
772 #, c-format
773 msgid "x%d stacks"
774 msgstr "x%d sztuk"
775
776 #: ../../../src/MenuCharacter.cpp:73 ../../../src/MenuCharacter.cpp:78
777 msgid "Name"
778 msgstr "Imię"
779
780 #: ../../../src/MenuCharacter.cpp:74 ../../../src/MenuCharacter.cpp:79
781 msgid "Level"
782 msgstr "Poziom"
783
784 #: ../../../src/MenuCharacter.cpp:310
785 #, c-format
786 msgid "%d unspent stat point"
787 msgstr ""
788
789 #: ../../../src/MenuCharacter.cpp:313
790 #, c-format
791 msgid "%d unspent stat points"
792 msgstr ""
793
794 #: ../../../src/MenuCharacter.cpp:355
795 #, c-format
796 msgid "Reduces the damage taken from \"%s\" elemental attacks."
797 msgstr ""
798
799 #: ../../../src/MenuCharacter.cpp:365 ../../../src/MenuManager.cpp:283
800 #, c-format
801 msgid "XP: %d"
802 msgstr "Obecne PD: %d"
803
804 #: ../../../src/MenuCharacter.cpp:367
805 #, c-format
806 msgid "Next: %d"
807 msgstr "Do następnego poziomu: %d PD"
808
809 #: ../../../src/MenuCharacter.cpp:373
810 #, c-format
811 msgid "base (%d), bonus (%d)"
812 msgstr "Podstawa (%d), dodatkowo (%d)"
813
814 #: ../../../src/MenuCharacter.cpp:381 ../../../src/MenuCharacter.cpp:395
815 msgid "Related stats:"
816 msgstr "Powiązane statystyki:"
817
818 #: ../../../src/MenuCharacter.cpp:421 ../../../src/MenuCharacter.cpp:445
819 #, c-format
820 msgid "Each level grants %d."
821 msgstr "Każdy poziom zapewnia %d punktów."
822
823 #: ../../../src/MenuCharacter.cpp:425 ../../../src/MenuCharacter.cpp:449
824 #, c-format
825 msgid "Each point of %s grants %d."
826 msgstr "Każdy punkt atrybutu %s dodaje %d punktów."
827
828 #: ../../../src/MenuDevConsole.cpp:63
926 "Włącza paralaksowe warstwy (nie zawierające podłoża). Wyłączenie tej opcji "
927 "może poprawić wydajność w niektórych przypadkach."
928
929 #: ../../../src/MenuConfig.cpp:515
930 msgid ""
931 "Enables the below setting that controls the screen gamma level. The behavior"
932 " of the gamma setting can vary between platforms."
933 msgstr ""
934 "Odblokowuje poniższą opcję ręcznego ustawienia poziomu gammy. Zachowanie tej"
935 " funkcji może się różnić w zależności od platformy."
936
937 #: ../../../src/MenuConfig.cpp:516
938 msgid ""
939 "Provides additional text for information that is primarily conveyed through "
940 "color."
941 msgstr ""
942 "Wyświetla dodatkową informację, która jest przeważnie przekazywana przez "
943 "kolor."
944
945 #: ../../../src/MenuConfig.cpp:517
946 msgid ""
947 "Some mods will automatically hide the stat bars when they are inactive. "
948 "Disabling this option will keep them displayed at all times."
949 msgstr ""
950 "Niektóre mody będą automatycznie ukrywały paski stanu w czasie "
951 "nieaktywności. Wyłączenie tej opcji spowoduje wyświetlanie ich przez cały "
952 "czas."
953
954 #: ../../../src/MenuConfig.cpp:518
955 msgid ""
956 "When enabled, empty equipment slots will be filled with applicable items "
957 "when they are obtained."
958 msgstr ""
959 "Włączenie tej opcji spowoduje automatyczne zapełnianie pustych miejsc na "
960 "ekwipunek odpowiednimi przedmiotami po ich zdobyciu."
961
962 #: ../../../src/MenuConfig.cpp:519
963 msgid ""
964 "Shows a marker above enemies, allies, and the player when they are obscured "
965 "by tall objects."
966 msgstr ""
967 "Pokazuje znacznik nad przeciwnikami, sojusznikami i graczem, gdy są "
968 "zasłonięci przez wysokie obiekty."
969
970 #: ../../../src/MenuConfig.cpp:520
971 msgid ""
972 "When enabled, tooltips for equipped items of the same type are shown next to"
973 " standard item tooltips."
974 msgstr ""
975
976 #: ../../../src/MenuConfig.cpp:521
977 msgid ""
978 "This allows the game to be controlled entirely with the keyboard (or "
979 "joystick)."
980 msgstr ""
981 "Pozwala na sterowanie w grze wyłącznie przy pomocy klawiatury (bądź "
982 "joysticka)."
983
984 #: ../../../src/MenuConfig.cpp:522
985 msgid ""
986 "When 'Move hero using mouse' is enabled, this setting controls if 'Main1' or"
987 " 'Main2' is used to move the hero. If enabled, 'Main2' will move the hero "
988 "instead of 'Main1'."
989 msgstr ""
990 "Jeśli opcja 'Poruszaj się używając myszki' jest aktywna, to ustawienie "
991 "przypisuje funkcje do przycisków myszy. Po aktywowaniu tej opcji, 'Prawy "
992 "przycisk myszy' będzie używany do poruszania się zamiast 'Lewego przycisku "
993 "myszy'."
994
995 #: ../../../src/MenuConfig.cpp:523
996 msgid ""
997 "When 'Move hero using mouse' is enabled, this setting controls if the Power "
998 "assigned to the movement button can be used by targeting an enemy. If this "
999 "setting is disabled, it is required to use 'Shift' to access the Power "
1000 "assigned to the movement button."
1001 msgstr ""
1002 "Jeśli opcja 'Poruszaj się używając myszki' jest aktywna, to ustawienie "
1003 "sprawdza, czy moc przypisana do przycisku ruchu może zostać użyta po "
1004 "nakierowaniu na wroga. Jeśli ta opcja jest wyłączona, należy użyć 'Shift', "
1005 "żeby móc użyć mocy przypisanej do przycisku ruchu."
1006
1007 #: ../../../src/MenuConfig.cpp:524
1008 msgid ""
1009 "The player's attacks will be aimed in the direction of the mouse cursor when"
1010 " this is enabled."
1011 msgstr ""
1012 "Po aktywowaniu tej opcji, Ataki gracza będą kierowane w stronę kursora "
1013 "myszy."
1014
1015 #: ../../../src/MenuConfig.cpp:575
1016 msgid "Active Mods"
1017 msgstr "Aktywne mody"
1018
1019 #: ../../../src/MenuConfig.cpp:584
1020 msgid "Available Mods"
1021 msgstr "Dostępne mody"
1022
1023 #: ../../../src/MenuConfig.cpp:603
1024 msgid "<< Disable"
1025 msgstr "<< Wyłącz"
1026
1027 #: ../../../src/MenuConfig.cpp:609
1028 msgid "Enable >>"
1029 msgstr "Włącz >>"
1030
1031 #: ../../../src/MenuConfig.cpp:1444
1032 msgid "Version:"
1033 msgstr "Wersja:"
1034
1035 #: ../../../src/MenuConfig.cpp:1449
1036 msgid "Game:"
1037 msgstr "Gra:"
1038
1039 #: ../../../src/MenuConfig.cpp:1454
1040 msgid "Engine version:"
1041 msgstr "Wersja silnika:"
1042
1043 #: ../../../src/MenuConfig.cpp:1462
1044 msgid "Requires mods:"
1045 msgstr "Wymaga modów:"
1046
1047 #: ../../../src/MenuConfig.cpp:1570 ../../../src/SDLInputState.cpp:748
1048 msgid "(none)"
1049 msgstr "(brak)"
1050
1051 #: ../../../src/MenuConfig.cpp:1587 ../../../src/MenuGameOver.cpp:73
1052 msgid "Save & Exit"
1053 msgstr "Zapisz i wyjdź"
1054
1055 #: ../../../src/MenuDevConsole.cpp:65
8291056 msgid "Execute"
8301057 msgstr "Wykonaj"
8311058
832 #: ../../../src/MenuDevConsole.cpp:101 ../../../src/MenuDevConsole.cpp:151
1059 #: ../../../src/MenuDevConsole.cpp:103 ../../../src/MenuDevConsole.cpp:153
8331060 msgid "Developer Console"
8341061 msgstr "Konsola deweloperska"
8351062
836 #: ../../../src/MenuDevConsole.cpp:141
1063 #: ../../../src/MenuDevConsole.cpp:143
8371064 #, c-format
8381065 msgid "Use '%s' to inspect with the cursor."
839 msgstr ""
840
841 #: ../../../src/MenuDevConsole.cpp:146
1066 msgstr "Użyj '%s', aby zbadać kursorem myszy."
1067
1068 #: ../../../src/MenuDevConsole.cpp:148
8421069 msgid "Arguments with spaces should be enclosed with double quotes. Example:"
8431070 msgstr ""
8441071 "Argumenty zawierające spacje powinny zamknięte w cudzysłowie. Przykład:"
8451072
846 #: ../../../src/MenuDevConsole.cpp:147
1073 #: ../../../src/MenuDevConsole.cpp:149
8471074 msgid "Type 'help' to get a list of commands."
8481075 msgstr "Wpisz 'help' aby uzyskać listę komend."
8491076
850 #: ../../../src/MenuDevConsole.cpp:209 ../../../src/MenuDevConsole.cpp:213
1077 #: ../../../src/MenuDevConsole.cpp:211 ../../../src/MenuDevConsole.cpp:215
8511078 msgid "px"
852 msgstr ""
853
854 #: ../../../src/MenuDevConsole.cpp:224
1079 msgstr "px"
1080
1081 #: ../../../src/MenuDevConsole.cpp:226
8551082 msgid "Distance"
856 msgstr ""
857
858 #: ../../../src/MenuDevConsole.cpp:239 ../../../src/MenuDevConsole.cpp:286
1083 msgstr "Dystans"
1084
1085 #: ../../../src/MenuDevConsole.cpp:241 ../../../src/MenuDevConsole.cpp:289
1086 #: ../../../src/MenuDevConsole.cpp:303
8591087 msgid "Entity"
860 msgstr ""
861
862 #: ../../../src/MenuDevConsole.cpp:261 ../../../src/MenuDevConsole.cpp:268
1088 msgstr "Byt"
1089
1090 #: ../../../src/MenuDevConsole.cpp:263 ../../../src/MenuDevConsole.cpp:270
8631091 msgid "none"
864 msgstr ""
865
866 #: ../../../src/MenuDevConsole.cpp:262 ../../../src/MenuDevConsole.cpp:264
1092 msgstr "nic"
1093
1094 #: ../../../src/MenuDevConsole.cpp:264 ../../../src/MenuDevConsole.cpp:266
8671095 msgid "wall"
868 msgstr ""
869
870 #: ../../../src/MenuDevConsole.cpp:263 ../../../src/MenuDevConsole.cpp:265
1096 msgstr "ściana"
1097
1098 #: ../../../src/MenuDevConsole.cpp:265 ../../../src/MenuDevConsole.cpp:267
8711099 msgid "short wall / pit"
872 msgstr ""
873
874 #: ../../../src/MenuDevConsole.cpp:266
1100 msgstr "krótka ściana / otchłań"
1101
1102 #: ../../../src/MenuDevConsole.cpp:268
8751103 msgid "entity"
876 msgstr ""
877
878 #: ../../../src/MenuDevConsole.cpp:267
1104 msgstr "byt"
1105
1106 #: ../../../src/MenuDevConsole.cpp:269
8791107 msgid "entity, ally"
880 msgstr ""
881
882 #: ../../../src/MenuDevConsole.cpp:274
1108 msgstr "byt, sojusznik"
1109
1110 #: ../../../src/MenuDevConsole.cpp:276
8831111 msgid "Tile"
884 msgstr ""
885
886 #: ../../../src/MenuDevConsole.cpp:360
1112 msgstr "Podłoże"
1113
1114 #: ../../../src/MenuDevConsole.cpp:377
8871115 msgid "adds a power to the action bar"
8881116 msgstr "dodaje moc do paska akcji"
8891117
890 #: ../../../src/MenuDevConsole.cpp:361
1118 #: ../../../src/MenuDevConsole.cpp:378
8911119 msgid "turns on/off the display of the FPS counter"
892 msgstr ""
893
894 #: ../../../src/MenuDevConsole.cpp:362
1120 msgstr "włącza/wyłącza wyświetlanie licznika klatek na sekundę"
1121
1122 #: ../../../src/MenuDevConsole.cpp:379
8951123 msgid "turns on/off all of the HUD elements"
8961124 msgstr "włącza/wyłącza wszystkie elementy interfejsu"
8971125
898 #: ../../../src/MenuDevConsole.cpp:363
1126 #: ../../../src/MenuDevConsole.cpp:380
8991127 msgid "turns on/off the developer hud"
9001128 msgstr "włącza/wyłącza interfejs dewelopera"
9011129
902 #: ../../../src/MenuDevConsole.cpp:364
1130 #: ../../../src/MenuDevConsole.cpp:381
9031131 msgid ""
9041132 "Prints a list of powers that match a search term. No search term will list "
9051133 "all items"
9071135 "Wyświetla listę mocy pasujących do podanego wyrażenia. Brak wyrażenia "
9081136 "spowoduje wyświelenie wszystkich pozycji."
9091137
910 #: ../../../src/MenuDevConsole.cpp:365
1138 #: ../../../src/MenuDevConsole.cpp:382
9111139 msgid "Prints out all the map filenames located in the \"maps/\" directory."
9121140 msgstr "Wypisuje nazwy wszystkich plików map zawartych w katalogu \"maps/\"."
9131141
914 #: ../../../src/MenuDevConsole.cpp:366
1142 #: ../../../src/MenuDevConsole.cpp:383
9151143 msgid ""
9161144 "Prints out the active campaign statuses that match a search term. No search "
9171145 "term will list all active statuses"
9191147 "Wyświetla listę aktywnych statusów kampanii pasujących do podanego "
9201148 "wyrażenia. Brak wyrażenia spowoduje wyświetlanie wszystkich statusów."
9211149
922 #: ../../../src/MenuDevConsole.cpp:367
1150 #: ../../../src/MenuDevConsole.cpp:384
9231151 msgid ""
9241152 "Prints a list of items that match a search term. No search term will list "
9251153 "all items"
9271155 "Wyświetla listę przedmiotów pasujących do podanego wyrażenia. Brak wyrażenia"
9281156 " spowoduje wyświelenie wszystkich przedmiotów."
9291157
930 #: ../../../src/MenuDevConsole.cpp:368
1158 #: ../../../src/MenuDevConsole.cpp:385
9311159 msgid ""
9321160 "parses a series of event components and executes them as a single event"
9331161 msgstr "parsuje ciąg komponentów zdarzeń i wykonuje je jako jedno zdarzenie"
9341162
935 #: ../../../src/MenuDevConsole.cpp:369
1163 #: ../../../src/MenuDevConsole.cpp:386
9361164 msgid "clears the command history"
9371165 msgstr "czyści historię komend"
9381166
939 #: ../../../src/MenuDevConsole.cpp:370
1167 #: ../../../src/MenuDevConsole.cpp:387
9401168 msgid "displays this text"
9411169 msgstr "wyświetla ten tekst"
9421170
943 #: ../../../src/MenuDevConsole.cpp:377
1171 #: ../../../src/MenuDevConsole.cpp:394
9441172 msgid "Toggled the developer hud"
9451173 msgstr "Włączono interfejs dewelopera"
9461174
947 #: ../../../src/MenuDevConsole.cpp:381
1175 #: ../../../src/MenuDevConsole.cpp:398
9481176 msgid "Toggled the hud"
9491177 msgstr "Włączono interfejs użytkownika"
9501178
951 #: ../../../src/MenuDevConsole.cpp:385
1179 #: ../../../src/MenuDevConsole.cpp:402
9521180 msgid "Toggled the FPS counter"
953 msgstr ""
954
955 #: ../../../src/MenuDevConsole.cpp:534
1181 msgstr "Włączono licznik klatek na sekundę"
1182
1183 #: ../../../src/MenuDevConsole.cpp:552
9561184 msgid "ERROR: Incorrect number of arguments"
9571185 msgstr "BŁĄD: Nieprawidłowa liczba argumentów."
9581186
959 #: ../../../src/MenuDevConsole.cpp:536 ../../../src/MenuDevConsole.cpp:564
1187 #: ../../../src/MenuDevConsole.cpp:554 ../../../src/MenuDevConsole.cpp:582
9601188 msgid "HINT:"
9611189 msgstr "WSKAZÓWKA:"
9621190
963 #: ../../../src/MenuDevConsole.cpp:536
1191 #: ../../../src/MenuDevConsole.cpp:554
9641192 msgid "<id>"
9651193 msgstr "<id>"
9661194
967 #: ../../../src/MenuDevConsole.cpp:552
1195 #: ../../../src/MenuDevConsole.cpp:570
9681196 #, c-format
9691197 msgid "ERROR: '%s' is not a valid event key"
9701198 msgstr "BŁĄD: '%s' nie jest prawidłowym klawiszem do zdarzenia"
9711199
972 #: ../../../src/MenuDevConsole.cpp:562
1200 #: ../../../src/MenuDevConsole.cpp:580
9731201 msgid "ERROR: Too few arguments"
9741202 msgstr "BŁĄD: Za mało argumentów"
9751203
976 #: ../../../src/MenuDevConsole.cpp:564
1204 #: ../../../src/MenuDevConsole.cpp:582
9771205 msgid "<key>=<val> <key>=<val> ..."
9781206 msgstr "<key>=<val> <key>=<val> ..."
9791207
980 #: ../../../src/MenuDevConsole.cpp:569
1208 #: ../../../src/MenuDevConsole.cpp:587
9811209 msgid "ERROR: Unknown command"
9821210 msgstr "BŁĄD: Nieznana komenda"
9831211
984 #: ../../../src/MenuDevConsole.cpp:571
1212 #: ../../../src/MenuDevConsole.cpp:589
9851213 msgid "HINT: Type help"
9861214 msgstr "WSKAZÓWKA: Wpisz help"
9871215
988 #: ../../../src/MenuEnemy.cpp:138
1216 #: ../../../src/MenuEnemy.cpp:162
9891217 #, c-format
9901218 msgid "%s level %d"
9911219 msgstr "%s poziom %d"
9921220
993 #: ../../../src/MenuEnemy.cpp:162
1221 #: ../../../src/MenuEnemy.cpp:186
9941222 msgid "Dead"
9951223 msgstr "Nie żyje"
9961224
997 #: ../../../src/MenuEnemy.cpp:164
1225 #: ../../../src/MenuEnemy.cpp:188
9981226 msgid "Destroyed"
999 msgstr ""
1000
1001 #: ../../../src/MenuExit.cpp:85 ../../../src/MenuExit.cpp:139
1002 msgid "Paused"
1003 msgstr "Pauza"
1004
1005 #: ../../../src/MenuExit.cpp:91
1006 msgid "Save & Exit"
1007 msgstr "Zapisz i wyjdź"
1008
1009 #: ../../../src/MenuExit.cpp:92
1010 msgid "Exit"
1011 msgstr "Wyjdź"
1012
1013 #: ../../../src/MenuExit.cpp:96
1014 msgid "Continue"
1015 msgstr "Kontynuuj"
1016
1017 #: ../../../src/MenuInventory.cpp:73
1018 msgid "Automatically equip items"
1019 msgstr "Automatycznie załóż ekwipunek"
1020
1021 #: ../../../src/MenuInventory.cpp:188
1227 msgstr "Zniszczony"
1228
1229 #: ../../../src/MenuGameOver.cpp:69
1230 msgid "Game Over"
1231 msgstr ""
1232
1233 #: ../../../src/MenuInventory.cpp:178
10221234 #, c-format
10231235 msgid "Lost %d%% of %s."
10241236 msgstr "Utracono %d%% %s."
10251237
1026 #: ../../../src/MenuInventory.cpp:195
1238 #: ../../../src/MenuInventory.cpp:185
10271239 #, c-format
10281240 msgid "Lost %d%% of total XP."
10291241 msgstr "Utracono %d%% PD."
10301242
1031 #: ../../../src/MenuInventory.cpp:200
1243 #: ../../../src/MenuInventory.cpp:190
10321244 #, c-format
10331245 msgid "Lost %d%% of current level XP."
10341246 msgstr "Utracono %d%% PD z obecnego poziomu doświadczenia."
10351247
1036 #: ../../../src/MenuInventory.cpp:226
1248 #: ../../../src/MenuInventory.cpp:216
10371249 #, c-format
10381250 msgid "Lost %s."
10391251 msgstr "Utracono %s."
10401252
1041 #: ../../../src/MenuInventory.cpp:274 ../../../src/MenuStash.cpp:146
1253 #: ../../../src/MenuInventory.cpp:258 ../../../src/MenuStash.cpp:276
10421254 #, c-format
10431255 msgid "%d %s"
10441256 msgstr "%d %s"
10451257
1046 #: ../../../src/MenuInventory.cpp:317
1258 #: ../../../src/MenuInventory.cpp:301
10471259 msgid "Pick up item(s):"
10481260 msgstr "Podnieś przedmiot(y):"
10491261
1050 #: ../../../src/MenuInventory.cpp:318
1262 #: ../../../src/MenuInventory.cpp:302
10511263 msgid "Use or equip item:"
10521264 msgstr "Użyj bądź załóż przedmiot:"
10531265
1054 #: ../../../src/MenuInventory.cpp:319
1266 #: ../../../src/MenuInventory.cpp:303
10551267 #, c-format
10561268 msgid "%s modifiers"
10571269 msgstr "Modyfikatory dla %s:"
10581270
1059 #: ../../../src/MenuInventory.cpp:320
1271 #: ../../../src/MenuInventory.cpp:304
10601272 msgid "Select a quantity of item:"
10611273 msgstr "Rozdziel przedmioty:"
10621274
1063 #: ../../../src/MenuInventory.cpp:323
1275 #: ../../../src/MenuInventory.cpp:307
10641276 msgid "Stash item stack:"
10651277 msgstr "Ilość przedmiotów w skrytce:"
10661278
1067 #: ../../../src/MenuInventory.cpp:325
1279 #: ../../../src/MenuInventory.cpp:309
10681280 msgid "Sell item stack:"
10691281 msgstr "Sprzedaj przedmiot:"
10701282
1071 #: ../../../src/MenuInventory.cpp:592
1283 #: ../../../src/MenuInventory.cpp:576
10721284 msgid "You don't have enough of the required item."
10731285 msgstr "Nie masz wystarczająco wymaganych przedmiotów."
10741286
1075 #: ../../../src/MenuInventory.cpp:599
1287 #: ../../../src/MenuInventory.cpp:588
10761288 msgid "You can't use this item right now."
10771289 msgstr "Nie możesz użyć tego przedmiotu w tej chwili."
10781290
1079 #: ../../../src/MenuInventory.cpp:611
1291 #: ../../../src/MenuInventory.cpp:600
10801292 msgid "This item can only be used from the action bar."
10811293 msgstr "Ten przedmiot może być użyty jedynie z paska akcji."
10821294
1083 #: ../../../src/MenuInventory.cpp:729
1295 #: ../../../src/MenuInventory.cpp:718
10841296 msgid "Inventory is full."
10851297 msgstr "Ekwipunek jest pełny."
10861298
1087 #: ../../../src/MenuInventory.cpp:849
1299 #: ../../../src/MenuInventory.cpp:843
10881300 #, c-format
10891301 msgid "Not enough %s."
10901302 msgstr "Za mało %s."
10911303
1092 #: ../../../src/MenuInventory.cpp:869 ../../../src/MenuInventory.cpp:876
1304 #: ../../../src/MenuInventory.cpp:863 ../../../src/MenuInventory.cpp:870
10931305 msgid "This item can not be sold."
10941306 msgstr "Tego przedmiotu nie można sprzedać."
10951307
11011313 msgid "Quests"
11021314 msgstr "Zadania"
11031315
1104 #: ../../../src/MenuManager.cpp:286
1316 #: ../../../src/MenuManager.cpp:305
11051317 #, c-format
11061318 msgid "XP: %d/%d"
11071319 msgstr "PD: %d/%d"
11081320
1109 #: ../../../src/MenuManager.cpp:827
1321 #: ../../../src/MenuManager.cpp:875
11101322 msgid "This item can not be dropped."
11111323 msgstr "Tego przedmiotu nie można upuścić."
1324
1325 #: ../../../src/MenuManager.cpp:1501
1326 msgid "Equipped"
1327 msgstr ""
1328
1329 #: ../../../src/MenuMovementType.cpp:87
1330 msgid "Select a Movement Type"
1331 msgstr ""
1332
1333 #: ../../../src/MenuMovementType.cpp:89
1334 msgid "Can be changed later in the Configuration menu."
1335 msgstr ""
1336
1337 #: ../../../src/MenuMovementType.cpp:92 ../../../src/MenuMovementType.cpp:122
1338 msgid "Keyboard"
1339 msgstr ""
1340
1341 #: ../../../src/MenuMovementType.cpp:93 ../../../src/MenuMovementType.cpp:128
1342 msgid "Mouse"
1343 msgstr ""
1344
1345 #: ../../../src/MenuMovementType.cpp:129
1346 msgid "Button"
1347 msgstr ""
11121348
11131349 #: ../../../src/MenuNumPicker.cpp:59
11141350 msgid "Enter amount:"
11151351 msgstr "Podaj ilość:"
11161352
1117 #: ../../../src/MenuPowers.cpp:787
1353 #: ../../../src/MenuPowers.cpp:872
11181354 msgid "Passive"
11191355 msgstr "Pasywna"
11201356
1121 #: ../../../src/MenuPowers.cpp:792
1357 #: ../../../src/MenuPowers.cpp:879
11221358 #, c-format
11231359 msgid "Costs %d MP"
11241360 msgstr "Koszt: %d PM"
11251361
1126 #: ../../../src/MenuPowers.cpp:796
1362 #: ../../../src/MenuPowers.cpp:883
11271363 #, c-format
11281364 msgid "Costs %d HP"
11291365 msgstr "Koszt: %d PŻ"
11301366
1131 #: ../../../src/MenuPowers.cpp:801
1367 #: ../../../src/MenuPowers.cpp:887
11321368 msgid "Cooldown:"
11331369 msgstr "Odnowienie:"
11341370
1135 #: ../../../src/MenuPowers.cpp:866 ../../../src/MenuPowers.cpp:869
1371 #: ../../../src/MenuPowers.cpp:938 ../../../src/MenuPowers.cpp:941
11361372 msgid "Damage per second"
11371373 msgstr "Obrażenia na sekundę"
11381374
1139 #: ../../../src/MenuPowers.cpp:872 ../../../src/MenuPowers.cpp:875
1375 #: ../../../src/MenuPowers.cpp:944 ../../../src/MenuPowers.cpp:947
11401376 msgid "HP per second"
11411377 msgstr "PŻ na sekundę"
11421378
1143 #: ../../../src/MenuPowers.cpp:878 ../../../src/MenuPowers.cpp:881
1379 #: ../../../src/MenuPowers.cpp:950 ../../../src/MenuPowers.cpp:953
11441380 msgid "MP per second"
11451381 msgstr "PM na sekundę"
11461382
1147 #: ../../../src/MenuPowers.cpp:885
1383 #: ../../../src/MenuPowers.cpp:957
11481384 msgid "Immobilize"
11491385 msgstr "Unieruchomienie"
11501386
1151 #: ../../../src/MenuPowers.cpp:893
1387 #: ../../../src/MenuPowers.cpp:965
11521388 msgid "Immunity"
11531389 msgstr "Niewrażliwość"
11541390
1155 #: ../../../src/MenuPowers.cpp:896
1391 #: ../../../src/MenuPowers.cpp:968
11561392 msgid "Immunity to damage over time"
11571393 msgstr "Niewrażliwość na krwawienie"
11581394
1159 #: ../../../src/MenuPowers.cpp:899
1395 #: ../../../src/MenuPowers.cpp:971
11601396 msgid "Immunity to slow"
11611397 msgstr "Niewrażliwość na spowolnienie"
11621398
1163 #: ../../../src/MenuPowers.cpp:902
1399 #: ../../../src/MenuPowers.cpp:974
11641400 msgid "Immunity to stun"
11651401 msgstr "Niewrażliwość na ogłuszenie"
11661402
1167 #: ../../../src/MenuPowers.cpp:905
1403 #: ../../../src/MenuPowers.cpp:977
11681404 msgid "Immunity to HP steal"
11691405 msgstr "Niewrażliwość na kradzież PŻ"
11701406
1171 #: ../../../src/MenuPowers.cpp:908
1407 #: ../../../src/MenuPowers.cpp:980
11721408 msgid "Immunity to MP steal"
11731409 msgstr "Niewrażliwość na kradzież PM"
11741410
1175 #: ../../../src/MenuPowers.cpp:911
1411 #: ../../../src/MenuPowers.cpp:983
11761412 msgid "Immunity to knockback"
11771413 msgstr "Niewrażliwość na odrzucenie"
11781414
1179 #: ../../../src/MenuPowers.cpp:914
1415 #: ../../../src/MenuPowers.cpp:986
11801416 msgid "Immunity to damage reflection"
11811417 msgstr "Niewrażliwość na odbicie obrażeń"
11821418
1183 #: ../../../src/MenuPowers.cpp:917
1419 #: ../../../src/MenuPowers.cpp:992
11841420 msgid "Stun"
11851421 msgstr "Ogłuszenie"
11861422
1187 #: ../../../src/MenuPowers.cpp:920
1423 #: ../../../src/MenuPowers.cpp:995
11881424 msgid "Automatic revive on death"
11891425 msgstr "Automatyczne ożywienie po śmierci"
11901426
1191 #: ../../../src/MenuPowers.cpp:923
1427 #: ../../../src/MenuPowers.cpp:998
11921428 msgid "Convert"
11931429 msgstr "Nawrócenie"
11941430
1195 #: ../../../src/MenuPowers.cpp:926
1431 #: ../../../src/MenuPowers.cpp:1001
11961432 msgid "Fear"
11971433 msgstr "Strach"
11981434
1199 #: ../../../src/MenuPowers.cpp:929
1435 #: ../../../src/MenuPowers.cpp:1004
12001436 msgid "Lifespan"
12011437 msgstr "Żywotność"
12021438
1203 #: ../../../src/MenuPowers.cpp:953
1439 #: ../../../src/MenuPowers.cpp:1028
12041440 msgid "Magical Shield"
12051441 msgstr "Magiczna Tarcza"
12061442
1207 #: ../../../src/MenuPowers.cpp:982
1443 #: ../../../src/MenuPowers.cpp:1057
12081444 msgid "Healing"
12091445 msgstr "Leczenie"
12101446
1211 #: ../../../src/MenuPowers.cpp:985
1447 #: ../../../src/MenuPowers.cpp:1060
12121448 msgid "Knockback"
12131449 msgstr "Odrzucenie"
12141450
1215 #: ../../../src/MenuPowers.cpp:1010
1451 #: ../../../src/MenuPowers.cpp:1084
12161452 #, c-format
12171453 msgid "%d%% chance"
12181454 msgstr "%d%% szansy"
12191455
1220 #: ../../../src/MenuPowers.cpp:1062
1456 #: ../../../src/MenuPowers.cpp:1136
12211457 msgid "Base Accuracy"
12221458 msgstr "Bazowa celność"
12231459
1224 #: ../../../src/MenuPowers.cpp:1082
1460 #: ../../../src/MenuPowers.cpp:1156
12251461 msgid "Base Critical Chance"
12261462 msgstr "Bazowa Szansa na Trafienie Krytyczne"
12271463
1228 #: ../../../src/MenuPowers.cpp:1090
1464 #: ../../../src/MenuPowers.cpp:1164
12291465 msgid "Ignores Absorbtion"
12301466 msgstr "Ignoruje Absorbcję"
12311467
1232 #: ../../../src/MenuPowers.cpp:1095
1468 #: ../../../src/MenuPowers.cpp:1169
12331469 msgid "Ignores Avoidance"
12341470 msgstr "Ignoruje szansę na unik"
12351471
1236 #: ../../../src/MenuPowers.cpp:1100
1472 #: ../../../src/MenuPowers.cpp:1174
12371473 #, c-format
12381474 msgid "%d%% Chance to crit slowed targets"
12391475 msgstr "%d%% Szansa na trafienie krytyczne spowolnionych celów"
12401476
1241 #: ../../../src/MenuPowers.cpp:1105
1477 #: ../../../src/MenuPowers.cpp:1179
12421478 #, c-format
12431479 msgid "Elemental Damage (%s)"
1244 msgstr ""
1245
1246 #: ../../../src/MenuPowers.cpp:1114
1480 msgstr "Obrażenia od żywiołu (%s)"
1481
1482 #: ../../../src/MenuPowers.cpp:1188
12471483 #, c-format
12481484 msgid "Requires a %s"
12491485 msgstr "Wymaga %s"
12501486
1251 #: ../../../src/MenuPowers.cpp:1151 ../../../src/MenuPowers.cpp:1154
1487 #: ../../../src/MenuPowers.cpp:1226 ../../../src/MenuPowers.cpp:1229
12521488 #, c-format
12531489 msgid "Requires Power: %s"
12541490 msgstr "Wymagana Moc: %s"
12551491
1256 #: ../../../src/MenuPowers.cpp:1163
1492 #: ../../../src/MenuPowers.cpp:1238
12571493 msgid "Click to Unlock (uses 1 Skill Point)"
12581494 msgstr "Kliknij by odblokować (potrzebuje 1 Punktu Umiejętności)"
12591495
1260 #: ../../../src/MenuPowers.cpp:1167 ../../../src/MenuPowers.cpp:1169
1496 #: ../../../src/MenuPowers.cpp:1242 ../../../src/MenuPowers.cpp:1244
12611497 msgid "Requires 1 Skill Point"
12621498 msgstr "Wymaga 1 Punktu Umiejętności"
12631499
1264 #: ../../../src/MenuPowers.cpp:1355
1265 #, c-format
1266 msgid "%d unspent skill point"
1267 msgstr ""
1268
1269 #: ../../../src/MenuPowers.cpp:1358
1270 #, c-format
1271 msgid "%d unspent skill points"
1272 msgstr ""
1273
1274 #: ../../../src/MenuPowers.cpp:1388
1500 #: ../../../src/MenuPowers.cpp:1444
1501 #, c-format
1502 msgid "Available skill points: %d"
1503 msgstr ""
1504
1505 #: ../../../src/MenuPowers.cpp:1476
12751506 msgid "Next Level:"
12761507 msgstr "Następny poziom:"
12771508
1278 #: ../../../src/MenuStash.cpp:96
1279 msgid "Shared Stash"
1280 msgstr "Wspólna Skrytka"
1281
1282 #: ../../../src/MenuStash.cpp:209
1283 msgid "Can not store quest items in the stash."
1284 msgstr "Nie można schować do skrytki przedmiotu związanego z zadaniem."
1285
1286 #: ../../../src/MenuStash.cpp:219
1509 #: ../../../src/MenuStash.cpp:80 ../../../src/MenuStash.cpp:161
1510 msgid "Stash"
1511 msgstr "Skrytka"
1512
1513 #: ../../../src/MenuStash.cpp:174 ../../../src/MenuStash.cpp:188
1514 msgid "Private"
1515 msgstr ""
1516
1517 #: ../../../src/MenuStash.cpp:175
1518 msgid "Shared"
1519 msgstr ""
1520
1521 #: ../../../src/MenuStash.cpp:340
1522 msgid "This item can not be stored in the stash."
1523 msgstr "Ten przedmiot nie może zostać umieszczony w skrytce."
1524
1525 #: ../../../src/MenuStash.cpp:345
1526 msgid "This item can not be stored in the private stash."
1527 msgstr "Ten przedmiot nie może zostać umieszczony w prywatnej skrytce."
1528
1529 #: ../../../src/MenuStash.cpp:350
1530 msgid "This item can not be stored in the shared stash."
1531 msgstr "Ten przedmiot nie może zostać umieszczony we współdzielonej skrytce."
1532
1533 #: ../../../src/MenuStash.cpp:360
12871534 msgid "Stash is full."
12881535 msgstr "Skrytka jest pełna."
12891536
1290 #: ../../../src/MenuTalker.cpp:454
1537 #: ../../../src/MenuStash.cpp:414
1538 #, c-format
1539 msgid "Can not store item in stash: %s"
1540 msgstr "Nie można umieścić przedmiotu w skrytce: %s"
1541
1542 #: ../../../src/MenuTalker.cpp:448
1543 #, c-format
1544 msgid "<dialog node %d>"
1545 msgstr "<wierzchołek dialogu %d>"
1546
1547 #: ../../../src/MenuTalker.cpp:456
12911548 msgid "Trade"
12921549 msgstr "Handel"
12931550
1294 #: ../../../src/MenuVendor.cpp:58
1551 #: ../../../src/MenuVendor.cpp:60
12951552 msgid "Buyback"
12961553 msgstr "Odkup"
12971554
1298 #: ../../../src/MenuVendor.cpp:279
1555 #: ../../../src/MenuVendor.cpp:283
12991556 msgid "Vendor"
13001557 msgstr "Sprzedawca"
13011558
1302 #: ../../../src/PowerManager.cpp:1136
1559 #: ../../../src/PowerManager.cpp:1208
13031560 #, c-format
13041561 msgid "+%d Shield"
13051562 msgstr "+%d Osłony"
13061563
1307 #: ../../../src/PowerManager.cpp:1392
1564 #: ../../../src/PowerManager.cpp:1465
13081565 msgid "You are already transformed, untransform first."
13091566 msgstr "Już jesteś po transformacji, wpierw cofnij transformację."
13101567
1311 #: ../../../src/PowerManager.cpp:1404
1568 #: ../../../src/PowerManager.cpp:1477
13121569 msgid "Could not untransform at this position."
13131570 msgstr "Nie można cofnąć transformacji w tym miejscu."
13141571
13151572 #: ../../../src/QuestLog.cpp:234
13161573 msgid "Completed Quests"
1317 msgstr ""
1318
1319 #: ../../../src/SaveLoad.cpp:243 ../../../src/SaveLoad.cpp:244
1574 msgstr "Ukończone zadania"
1575
1576 #: ../../../src/SaveLoad.cpp:250 ../../../src/SaveLoad.cpp:251
13201577 msgid "Game saved."
13211578 msgstr "Gra zapisana."
13221579
1323 #: ../../../src/SDLInputState.cpp:582
1580 #: ../../../src/SDLInputState.cpp:643
1581 msgid "BkSp"
1582 msgstr ""
1583
1584 #: ../../../src/SDLInputState.cpp:644
1585 msgid "Caps"
1586 msgstr ""
1587
1588 #: ../../../src/SDLInputState.cpp:645
1589 msgid "Del"
1590 msgstr ""
1591
1592 #: ../../../src/SDLInputState.cpp:647 ../../../src/SDLInputState.cpp:677
1593 msgid "End"
1594 msgstr "End"
1595
1596 #: ../../../src/SDLInputState.cpp:648
1597 msgid "Esc"
1598 msgstr ""
1599
1600 #: ../../../src/SDLInputState.cpp:649 ../../../src/SDLInputState.cpp:679
1601 msgid "Home"
1602 msgstr "Home"
1603
1604 #: ../../../src/SDLInputState.cpp:650
1605 msgid "Ins"
1606 msgstr ""
1607
1608 #: ../../../src/SDLInputState.cpp:651
1609 msgid "LAlt"
1610 msgstr ""
1611
1612 #: ../../../src/SDLInputState.cpp:652
1613 msgid "LCtrl"
1614 msgstr ""
1615
1616 #: ../../../src/SDLInputState.cpp:654
1617 msgid "LShft"
1618 msgstr ""
1619
1620 #: ../../../src/SDLInputState.cpp:655
1621 msgid "Num"
1622 msgstr ""
1623
1624 #: ../../../src/SDLInputState.cpp:656
1625 msgid "PgDn"
1626 msgstr ""
1627
1628 #: ../../../src/SDLInputState.cpp:657
1629 msgid "PgUp"
1630 msgstr ""
1631
1632 #: ../../../src/SDLInputState.cpp:658 ../../../src/SDLInputState.cpp:688
1633 msgid "Pause"
1634 msgstr "Pause"
1635
1636 #: ../../../src/SDLInputState.cpp:659
1637 msgid "Print"
1638 msgstr ""
1639
1640 #: ../../../src/SDLInputState.cpp:660
1641 msgid "RAlt"
1642 msgstr ""
1643
1644 #: ../../../src/SDLInputState.cpp:661
1645 msgid "RCtrl"
1646 msgstr ""
1647
1648 #: ../../../src/SDLInputState.cpp:662
1649 msgid "Ret"
1650 msgstr ""
1651
1652 #: ../../../src/SDLInputState.cpp:664
1653 msgid "RShft"
1654 msgstr ""
1655
1656 #: ../../../src/SDLInputState.cpp:665
1657 msgid "SLock"
1658 msgstr ""
1659
1660 #: ../../../src/SDLInputState.cpp:666
1661 msgid "Spc"
1662 msgstr ""
1663
1664 #: ../../../src/SDLInputState.cpp:667 ../../../src/SDLInputState.cpp:697
1665 msgid "Tab"
1666 msgstr "Tab"
1667
1668 #: ../../../src/SDLInputState.cpp:673
13241669 msgid "Backspace"
13251670 msgstr "Backspace"
13261671
1327 #: ../../../src/SDLInputState.cpp:583
1672 #: ../../../src/SDLInputState.cpp:674
13281673 msgid "CapsLock"
13291674 msgstr "CapsLock"
13301675
1331 #: ../../../src/SDLInputState.cpp:586
1332 msgid "End"
1333 msgstr "End"
1334
1335 #: ../../../src/SDLInputState.cpp:587
1676 #: ../../../src/SDLInputState.cpp:678
13361677 msgid "Escape"
13371678 msgstr "Escape"
13381679
1339 #: ../../../src/SDLInputState.cpp:588
1340 msgid "Home"
1341 msgstr "Home"
1342
1343 #: ../../../src/SDLInputState.cpp:589
1680 #: ../../../src/SDLInputState.cpp:680
13441681 msgid "Insert"
13451682 msgstr "Insert"
13461683
1347 #: ../../../src/SDLInputState.cpp:590
1684 #: ../../../src/SDLInputState.cpp:681
13481685 msgid "Left Alt"
13491686 msgstr "Lewy Alt"
13501687
1351 #: ../../../src/SDLInputState.cpp:591
1688 #: ../../../src/SDLInputState.cpp:682
13521689 msgid "Left Ctrl"
13531690 msgstr "Lewy Ctrl"
13541691
1355 #: ../../../src/SDLInputState.cpp:593
1692 #: ../../../src/SDLInputState.cpp:684
13561693 msgid "Left Shift"
13571694 msgstr "Lewy Shift"
13581695
1359 #: ../../../src/SDLInputState.cpp:594
1696 #: ../../../src/SDLInputState.cpp:685
13601697 msgid "NumLock"
13611698 msgstr "NumLock"
13621699
1363 #: ../../../src/SDLInputState.cpp:595
1700 #: ../../../src/SDLInputState.cpp:686
13641701 msgid "PageDown"
13651702 msgstr "PageDown"
13661703
1367 #: ../../../src/SDLInputState.cpp:596
1704 #: ../../../src/SDLInputState.cpp:687
13681705 msgid "PageUp"
13691706 msgstr "PageUp"
13701707
1371 #: ../../../src/SDLInputState.cpp:597
1372 msgid "Pause"
1373 msgstr "Pause"
1374
1375 #: ../../../src/SDLInputState.cpp:598
1708 #: ../../../src/SDLInputState.cpp:689
13761709 msgid "PrintScreen"
13771710 msgstr "PrintScreen"
13781711
1379 #: ../../../src/SDLInputState.cpp:599
1712 #: ../../../src/SDLInputState.cpp:690
13801713 msgid "Right Alt"
13811714 msgstr "Prawy Alt"
13821715
1383 #: ../../../src/SDLInputState.cpp:600
1716 #: ../../../src/SDLInputState.cpp:691
13841717 msgid "Right Ctrl"
13851718 msgstr "Prawy Ctrl"
13861719
1387 #: ../../../src/SDLInputState.cpp:601
1720 #: ../../../src/SDLInputState.cpp:692
13881721 msgid "Return"
13891722 msgstr "Return"
13901723
1391 #: ../../../src/SDLInputState.cpp:603
1724 #: ../../../src/SDLInputState.cpp:694
13921725 msgid "Right Shift"
13931726 msgstr "Prawy Shift"
13941727
1395 #: ../../../src/SDLInputState.cpp:604
1728 #: ../../../src/SDLInputState.cpp:695
13961729 msgid "ScrollLock"
13971730 msgstr "ScrollLock"
13981731
1399 #: ../../../src/SDLInputState.cpp:605
1732 #: ../../../src/SDLInputState.cpp:696
14001733 msgid "Space"
14011734 msgstr "Space"
14021735
1403 #: ../../../src/SDLInputState.cpp:606
1404 msgid "Tab"
1405 msgstr "Tab"
1406
1407 #: ../../../src/SDLInputState.cpp:620
1736 #: ../../../src/SDLInputState.cpp:710
1737 #, c-format
1738 msgid "M%d"
1739 msgstr ""
1740
1741 #: ../../../src/SDLInputState.cpp:716
14081742 #, c-format
14091743 msgid "Mouse %d"
14101744 msgstr "Przycisk myszy %d"
14111745
1412 #: ../../../src/SDLInputState.cpp:628
1746 #: ../../../src/SDLInputState.cpp:726
1747 #, c-format
1748 msgid "JX%d-"
1749 msgstr ""
1750
1751 #: ../../../src/SDLInputState.cpp:728
14131752 #, c-format
14141753 msgid "Axis %d -"
14151754 msgstr "Oś %d -"
14161755
1417 #: ../../../src/SDLInputState.cpp:630
1756 #: ../../../src/SDLInputState.cpp:732
1757 #, c-format
1758 msgid "JX%d+"
1759 msgstr ""
1760
1761 #: ../../../src/SDLInputState.cpp:734
14181762 #, c-format
14191763 msgid "Axis %d +"
14201764 msgstr "Oś %d +"
14211765
1422 #: ../../../src/SDLInputState.cpp:633
1766 #: ../../../src/SDLInputState.cpp:739
1767 #, c-format
1768 msgid "JB%d"
1769 msgstr ""
1770
1771 #: ../../../src/SDLInputState.cpp:741
14231772 #, c-format
14241773 msgid "Button %d"
14251774 msgstr "Klawisz %d"
14261775
1427 #: ../../../src/SDLInputState.cpp:637
1428 msgid "(none)"
1429 msgstr "(brak)"
1430
1431 #: ../../../src/SDLInputState.cpp:677
1776 #: ../../../src/SDLInputState.cpp:787
14321777 msgid "Touch control D-Pad"
1433 msgstr ""
1434
1435 #: ../../../src/SDLInputState.cpp:701
1778 msgstr "Dotykowy krzyżak ruchu"
1779
1780 #: ../../../src/SDLInputState.cpp:810
14361781 msgid "Touch control buttons"
1437 msgstr ""
1438
1439 #: ../../../src/SDLInputState.cpp:716
1782 msgstr "Dotykowe przyciski akcji"
1783
1784 #: ../../../src/SDLInputState.cpp:824
14401785 msgid "Tap"
14411786 msgstr "Tapnięcie"
14421787
1443 #: ../../../src/SDLInputState.cpp:760 ../../../src/SDLInputState.cpp:764
1444 #: ../../../src/SDLInputState.cpp:768
1788 #: ../../../src/SDLInputState.cpp:876 ../../../src/SDLInputState.cpp:878
1789 #, c-format
1790 msgid "Can not bind: %s"
1791 msgstr "Nie można przypisać: %s"
1792
1793 #: ../../../src/SDLInputState.cpp:890 ../../../src/SDLInputState.cpp:894
1794 #: ../../../src/SDLInputState.cpp:898
14451795 #, c-format
14461796 msgid "'%s' is no longer bound to:"
14471797 msgstr "'%s' już nie jest przypisany do:"
14521802
14531803 #: ../../../src/Stats.cpp:39
14541804 msgid "Total amount of HP."
1455 msgstr ""
1805 msgstr "Suma PŻ."
14561806
14571807 #: ../../../src/Stats.cpp:43
14581808 msgid "HP Regen"
14681818
14691819 #: ../../../src/Stats.cpp:49
14701820 msgid "Total amount of MP."
1471 msgstr ""
1821 msgstr "Suma PM."
14721822
14731823 #: ../../../src/Stats.cpp:53
14741824 msgid "MP Regen"
14871837 "Accuracy rating. The enemy's Avoidance rating is subtracted from this value "
14881838 "to calculate your likeliness to land a direct hit."
14891839 msgstr ""
1840 "Wartość celności. Wartość Uniku wroga jest odejmowana od tej wartości, aby "
1841 "wyliczyć prawdopodobieństwo wyprowadzenia celnego ciosu."
14901842
14911843 #: ../../../src/Stats.cpp:63
14921844 msgid "Avoidance"
14971849 "Avoidance rating. This value is subtracted from the enemy's Accuracy rating "
14981850 "to calculate their likeliness to land a direct hit."
14991851 msgstr ""
1852 "Wartość uniku. Ta wartość jest odejmowana od wartości Celności wroga, aby "
1853 "wyliczyć prawdopodobieństwo otrzymania od niego celnego ciosu."
15001854
15011855 #: ../../../src/Stats.cpp:68
15021856 msgid "Absorb Min"
15041858
15051859 #: ../../../src/Stats.cpp:69 ../../../src/Stats.cpp:74
15061860 msgid "Reduces the amount of damage taken."
1507 msgstr ""
1861 msgstr "Zmniejsza otrzymywane obrażenia o podaną liczbę."
15081862
15091863 #: ../../../src/Stats.cpp:73
15101864 msgid "Absorb Max"
15161870
15171871 #: ../../../src/Stats.cpp:79
15181872 msgid "Chance for an attack to do extra damage."
1519 msgstr ""
1873 msgstr "Szansa na zadanie dodatkowych obrażeń podczas ataku."
15201874
15211875 #: ../../../src/Stats.cpp:83
15221876 msgid "Bonus XP"
16001954 msgid "Base MP"
16011955 msgstr "Bazowe PM"
16021956
1603 #: ../../../src/Utils.cpp:346
1957 #: ../../../src/Utils.cpp:365
16041958 msgid "k"
16051959 msgstr "k"
16061960
1607 #: ../../../src/Utils.cpp:580
1961 #: ../../../src/Utils.cpp:635
16081962 #, c-format
16091963 msgid "%s second"
16101964 msgstr "%s sekunda"
16111965
1612 #: ../../../src/Utils.cpp:583
1966 #: ../../../src/Utils.cpp:638
16131967 #, c-format
16141968 msgid "%s seconds"
16151969 msgstr "%s sekund"
77 msgstr ""
88 "Project-Id-Version: PACKAGE VERSION\n"
99 "Report-Msgid-Bugs-To: \n"
10 "POT-Creation-Date: 2018-11-17 21:50-0500\n"
10 "POT-Creation-Date: 2021-05-23 20:34-0400\n"
1111 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
1212 "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
1313 "Language-Team: LANGUAGE <LL@li.org>\n"
1616 "Content-Type: text/plain; charset=UTF-8\n"
1717 "Content-Transfer-Encoding: 8bit\n"
1818
19 #: ../../../src/Avatar.cpp:367
19 #: ../../../src/Avatar.cpp:391
20 msgid "Your health is low!"
21 msgstr ""
22
23 #: ../../../src/Avatar.cpp:421
2024 #, c-format
2125 msgid "Congratulations, you have reached level %d!"
2226 msgstr ""
2327
24 #: ../../../src/Avatar.cpp:369
25 msgid "You may increase one attribute through the Character Menu."
26 msgstr ""
27
28 #: ../../../src/Avatar.cpp:583
29 msgid "You are defeated. Game over! ${INPUT_CONTINUE} to exit to Title."
30 msgstr ""
31
32 #: ../../../src/Avatar.cpp:589
33 msgid "You are defeated. ${INPUT_CONTINUE} to continue."
34 msgstr ""
35
36 #: ../../../src/Avatar.cpp:839
28 #: ../../../src/Avatar.cpp:423
29 msgid "You may increase one or more attributes through the Character Menu."
30 msgstr ""
31
32 #: ../../../src/Avatar.cpp:427
33 msgid "You may unlock one or more abilities through the Powers Menu."
34 msgstr ""
35
36 #: ../../../src/Avatar.cpp:689
37 msgid "You are defeated."
38 msgstr ""
39
40 #: ../../../src/Avatar.cpp:935
3741 msgid "Transformation expired. You have been moved back to a safe place."
3842 msgstr ""
3943
40 #: ../../../src/CampaignManager.cpp:153
44 #: ../../../src/CampaignManager.cpp:152
4145 #, c-format
4246 msgid "%d %s removed."
4347 msgstr ""
4448
45 #: ../../../src/CampaignManager.cpp:162
49 #: ../../../src/CampaignManager.cpp:171
50 #, c-format
51 msgid "%s x%d removed."
52 msgstr ""
53
54 #: ../../../src/CampaignManager.cpp:173
4655 #, c-format
4756 msgid "%s removed."
4857 msgstr ""
4958
50 #: ../../../src/CampaignManager.cpp:175
59 #: ../../../src/CampaignManager.cpp:187
60 #, c-format
61 msgid "You receive %d %s."
62 msgstr ""
63
64 #: ../../../src/CampaignManager.cpp:191
65 #, c-format
66 msgid "You receive %s x%d."
67 msgstr ""
68
69 #: ../../../src/CampaignManager.cpp:193
5170 #, c-format
5271 msgid "You receive %s."
5372 msgstr ""
5473
55 #: ../../../src/CampaignManager.cpp:177
56 #, c-format
57 msgid "You receive %s x%d."
58 msgstr ""
59
60 #: ../../../src/CampaignManager.cpp:186
61 #, c-format
62 msgid "You receive %d %s."
63 msgstr ""
64
65 #: ../../../src/CampaignManager.cpp:195
74 #: ../../../src/CampaignManager.cpp:210
6675 #, c-format
6776 msgid "You receive %d XP."
6877 msgstr ""
6978
70 #: ../../../src/CampaignManager.cpp:201
79 #: ../../../src/CampaignManager.cpp:216
7180 msgid "HP restored."
7281 msgstr ""
7382
74 #: ../../../src/CampaignManager.cpp:205
83 #: ../../../src/CampaignManager.cpp:220
7584 msgid "MP restored."
7685 msgstr ""
7786
78 #: ../../../src/CampaignManager.cpp:210
87 #: ../../../src/CampaignManager.cpp:225
7988 msgid "HP and MP restored."
8089 msgstr ""
8190
82 #: ../../../src/CampaignManager.cpp:214
91 #: ../../../src/CampaignManager.cpp:229
8392 msgid "Negative effects removed."
8493 msgstr ""
8594
86 #: ../../../src/CampaignManager.cpp:220
95 #: ../../../src/CampaignManager.cpp:235
8796 msgid "HP and MP restored, negative effects removed"
8897 msgstr ""
8998
101110 "The default renderer that is often faster than the SDL software renderer."
102111 msgstr ""
103112
104 #: ../../../src/EngineSettings.cpp:561
113 #: ../../../src/EngineSettings.cpp:586
105114 msgid "Adventurer"
106115 msgstr ""
107116
108 #: ../../../src/Entity.cpp:511
117 #: ../../../src/Entity.cpp:527
109118 msgid "miss"
110119 msgstr ""
111120
112 #: ../../../src/Entity.cpp:548 ../../../src/PowerManager.cpp:1152
113 #: ../../../src/StatBlock.cpp:805 ../../../src/StatBlock.cpp:811
121 #: ../../../src/Entity.cpp:565 ../../../src/PowerManager.cpp:1224
122 #: ../../../src/StatBlock.cpp:917 ../../../src/StatBlock.cpp:923
114123 #, c-format
115124 msgid "+%d HP"
116125 msgstr ""
117126
118 #: ../../../src/Entity.cpp:555 ../../../src/StatBlock.cpp:816
119 #: ../../../src/StatBlock.cpp:822
127 #: ../../../src/Entity.cpp:572 ../../../src/StatBlock.cpp:928
128 #: ../../../src/StatBlock.cpp:934
120129 #, c-format
121130 msgid "+%d MP"
122131 msgstr ""
123132
124 #: ../../../src/EventManager.cpp:738
133 #: ../../../src/EventManager.cpp:792
125134 msgid "Unknown destination"
126135 msgstr ""
127136
128 #: ../../../src/GameStateConfigBase.cpp:89
129 #: ../../../src/GameStateConfigBase.cpp:110
137 #: ../../../src/GameState.cpp:37 ../../../src/GameState.cpp:58
138 msgid "Loading..."
139 msgstr ""
140
141 #: ../../../src/GameStateLoad.cpp:90 ../../../src/GameStateLoad.cpp:103
142 msgid "Delete Save"
143 msgstr ""
144
145 #: ../../../src/GameStateLoad.cpp:90
146 msgid "Delete this save?"
147 msgstr ""
148
149 #: ../../../src/GameStateLoad.cpp:92
150 msgid "Exit to Title"
151 msgstr ""
152
153 #: ../../../src/GameStateLoad.cpp:95
154 msgid "New Game"
155 msgstr ""
156
157 #: ../../../src/GameStateLoad.cpp:99 ../../../src/GameStateLoad.cpp:607
158 msgid "Choose a Slot"
159 msgstr ""
160
161 #: ../../../src/GameStateLoad.cpp:580 ../../../src/GameStateLoad.cpp:601
162 msgid "Enable a story mod to continue"
163 msgstr ""
164
165 #: ../../../src/GameStateLoad.cpp:596
166 msgid "Load Game"
167 msgstr ""
168
169 #: ../../../src/GameStateLoad.cpp:705
170 msgid "Entering game world..."
171 msgstr ""
172
173 #: ../../../src/GameStateLoad.cpp:708
174 msgid "Loading saved game..."
175 msgstr ""
176
177 #: ../../../src/GameStateLoad.cpp:741
178 msgid "Invalid save"
179 msgstr ""
180
181 #: ../../../src/GameStateLoad.cpp:765 ../../../src/ItemManager.cpp:745
182 #: ../../../src/MenuPowers.cpp:860 ../../../src/MenuPowers.cpp:1219
183 #: ../../../src/MenuPowers.cpp:1631
184 #, c-format
185 msgid "Level %d"
186 msgstr ""
187
188 #: ../../../src/GameStateNew.cpp:66 ../../../src/InputState.cpp:416
189 #: ../../../src/MenuConfig.cpp:246
190 msgid "Cancel"
191 msgstr ""
192
193 #: ../../../src/GameStateNew.cpp:69
194 msgid "Create"
195 msgstr ""
196
197 #: ../../../src/GameStateNew.cpp:77
198 msgid "Randomize"
199 msgstr ""
200
201 #: ../../../src/GameStateNew.cpp:93
202 msgid "Choose a Portrait"
203 msgstr ""
204
205 #: ../../../src/GameStateNew.cpp:97
206 msgid "Choose a Name"
207 msgstr ""
208
209 #: ../../../src/GameStateNew.cpp:101
210 msgid "Permadeath?"
211 msgstr ""
212
213 #: ../../../src/GameStateNew.cpp:105
214 msgid "Choose a Class"
215 msgstr ""
216
217 #: ../../../src/GameStateTitle.cpp:107
218 msgid "Play Game"
219 msgstr ""
220
221 #: ../../../src/GameStateTitle.cpp:110
222 msgid "Enable a core mod to continue"
223 msgstr ""
224
225 #: ../../../src/GameStateTitle.cpp:114 ../../../src/MenuMiniMap.cpp:152
226 msgid "Configuration"
227 msgstr ""
228
229 #: ../../../src/GameStateTitle.cpp:117
230 msgid "Credits"
231 msgstr ""
232
233 #: ../../../src/GameStateTitle.cpp:120
234 msgid "Exit Game"
235 msgstr ""
236
237 #: ../../../src/InputState.cpp:417
238 msgid "Accept"
239 msgstr ""
240
241 #: ../../../src/InputState.cpp:418 ../../../src/MenuMovementType.cpp:123
242 #: ../../../src/MenuMovementType.cpp:132 ../../../src/SDLInputState.cpp:668
243 #: ../../../src/SDLInputState.cpp:698
244 msgid "Up"
245 msgstr ""
246
247 #: ../../../src/InputState.cpp:419 ../../../src/MenuMovementType.cpp:125
248 #: ../../../src/MenuMovementType.cpp:134 ../../../src/SDLInputState.cpp:646
249 #: ../../../src/SDLInputState.cpp:676
250 msgid "Down"
251 msgstr ""
252
253 #: ../../../src/InputState.cpp:420 ../../../src/MenuMovementType.cpp:124
254 #: ../../../src/MenuMovementType.cpp:133 ../../../src/SDLInputState.cpp:653
255 #: ../../../src/SDLInputState.cpp:683
256 msgid "Left"
257 msgstr ""
258
259 #: ../../../src/InputState.cpp:421 ../../../src/MenuMovementType.cpp:126
260 #: ../../../src/MenuMovementType.cpp:135 ../../../src/SDLInputState.cpp:663
261 #: ../../../src/SDLInputState.cpp:693
262 msgid "Right"
263 msgstr ""
264
265 #: ../../../src/InputState.cpp:422
266 msgid "Bar1"
267 msgstr ""
268
269 #: ../../../src/InputState.cpp:423
270 msgid "Bar2"
271 msgstr ""
272
273 #: ../../../src/InputState.cpp:424
274 msgid "Bar3"
275 msgstr ""
276
277 #: ../../../src/InputState.cpp:425
278 msgid "Bar4"
279 msgstr ""
280
281 #: ../../../src/InputState.cpp:426
282 msgid "Bar5"
283 msgstr ""
284
285 #: ../../../src/InputState.cpp:427
286 msgid "Bar6"
287 msgstr ""
288
289 #: ../../../src/InputState.cpp:428
290 msgid "Bar7"
291 msgstr ""
292
293 #: ../../../src/InputState.cpp:429
294 msgid "Bar8"
295 msgstr ""
296
297 #: ../../../src/InputState.cpp:430
298 msgid "Bar9"
299 msgstr ""
300
301 #: ../../../src/InputState.cpp:431
302 msgid "Bar0"
303 msgstr ""
304
305 #: ../../../src/InputState.cpp:432 ../../../src/MenuActionBar.cpp:84
306 #: ../../../src/MenuCharacter.cpp:54
307 msgid "Character"
308 msgstr ""
309
310 #: ../../../src/InputState.cpp:433 ../../../src/MenuActionBar.cpp:85
311 #: ../../../src/MenuInventory.cpp:130 ../../../src/MenuVendor.cpp:59
312 msgid "Inventory"
313 msgstr ""
314
315 #: ../../../src/InputState.cpp:434 ../../../src/MenuActionBar.cpp:86
316 #: ../../../src/MenuPowers.cpp:158
317 msgid "Powers"
318 msgstr ""
319
320 #: ../../../src/InputState.cpp:435 ../../../src/MenuActionBar.cpp:87
321 #: ../../../src/MenuLog.cpp:72
322 msgid "Log"
323 msgstr ""
324
325 #: ../../../src/InputState.cpp:436
326 msgid "Main1"
327 msgstr ""
328
329 #: ../../../src/InputState.cpp:437
330 msgid "Main2"
331 msgstr ""
332
333 #: ../../../src/InputState.cpp:438
334 msgid "Ctrl"
335 msgstr ""
336
337 #: ../../../src/InputState.cpp:439
338 msgid "Shift"
339 msgstr ""
340
341 #: ../../../src/InputState.cpp:440
342 msgid "Alt"
343 msgstr ""
344
345 #: ../../../src/InputState.cpp:441 ../../../src/SDLInputState.cpp:675
346 msgid "Delete"
347 msgstr ""
348
349 #: ../../../src/InputState.cpp:442
350 msgid "ActionBar Accept"
351 msgstr ""
352
353 #: ../../../src/InputState.cpp:443
354 msgid "ActionBar Left"
355 msgstr ""
356
357 #: ../../../src/InputState.cpp:444
358 msgid "ActionBar Right"
359 msgstr ""
360
361 #: ../../../src/InputState.cpp:445
362 msgid "ActionBar Use"
363 msgstr ""
364
365 #: ../../../src/InputState.cpp:446
366 msgid "Developer Menu"
367 msgstr ""
368
369 #: ../../../src/InputState.cpp:448
370 msgid "Left Mouse"
371 msgstr ""
372
373 #: ../../../src/InputState.cpp:449
374 msgid "Middle Mouse"
375 msgstr ""
376
377 #: ../../../src/InputState.cpp:450
378 msgid "Right Mouse"
379 msgstr ""
380
381 #: ../../../src/InputState.cpp:451
382 msgid "Wheel Up"
383 msgstr ""
384
385 #: ../../../src/InputState.cpp:452
386 msgid "Wheel Down"
387 msgstr ""
388
389 #: ../../../src/InputState.cpp:453
390 msgid "Mouse X1"
391 msgstr ""
392
393 #: ../../../src/InputState.cpp:454
394 msgid "Mouse X2"
395 msgstr ""
396
397 #: ../../../src/ItemManager.cpp:475
398 msgid "Unknown Item"
399 msgstr ""
400
401 #: ../../../src/ItemManager.cpp:646 ../../../src/MenuPowers.cpp:959
402 #, c-format
403 msgid "%d%% Speed"
404 msgstr ""
405
406 #: ../../../src/ItemManager.cpp:650 ../../../src/MenuPowers.cpp:962
407 #, c-format
408 msgid "%d%% Attack Speed"
409 msgstr ""
410
411 #: ../../../src/ItemManager.cpp:672 ../../../src/MenuCharacter.cpp:352
412 #: ../../../src/MenuPowers.cpp:931
413 #, c-format
414 msgid "Resistance (%s)"
415 msgstr ""
416
417 #: ../../../src/ItemManager.cpp:682
418 #, c-format
419 msgid "Requires %s"
420 msgstr ""
421
422 #: ../../../src/ItemManager.cpp:731
423 msgid "Quest Item"
424 msgstr ""
425
426 #: ../../../src/ItemManager.cpp:758
427 #, c-format
428 msgid "Quality: %s"
429 msgstr ""
430
431 #: ../../../src/ItemManager.cpp:783
432 #, c-format
433 msgid "Absorb: %d-%d"
434 msgstr ""
435
436 #: ../../../src/ItemManager.cpp:785
437 #, c-format
438 msgid "Absorb: %d"
439 msgstr ""
440
441 #: ../../../src/ItemManager.cpp:825 ../../../src/MenuPowers.cpp:1206
442 #: ../../../src/MenuPowers.cpp:1209
443 #, c-format
444 msgid "Requires Level %d"
445 msgstr ""
446
447 #: ../../../src/ItemManager.cpp:836 ../../../src/MenuPowers.cpp:1198
448 #: ../../../src/MenuPowers.cpp:1200
449 #, c-format
450 msgid "Requires %s %d"
451 msgstr ""
452
453 #: ../../../src/ItemManager.cpp:847
454 #, c-format
455 msgid "Requires Class: %s"
456 msgstr ""
457
458 #: ../../../src/ItemManager.cpp:863 ../../../src/ItemManager.cpp:875
459 #, c-format
460 msgid "Buy Price: %d %s"
461 msgstr ""
462
463 #: ../../../src/ItemManager.cpp:865 ../../../src/ItemManager.cpp:877
464 #, c-format
465 msgid "Buy Price: %d %s each"
466 msgstr ""
467
468 #: ../../../src/ItemManager.cpp:885
469 #, c-format
470 msgid "Sell Price: %d %s"
471 msgstr ""
472
473 #: ../../../src/ItemManager.cpp:887
474 #, c-format
475 msgid "Sell Price: %d %s each"
476 msgstr ""
477
478 #: ../../../src/ItemManager.cpp:896
479 msgid "Set:"
480 msgstr ""
481
482 #: ../../../src/ItemManager.cpp:903
483 #, c-format
484 msgid "%d items:"
485 msgstr ""
486
487 #: ../../../src/ItemManager.cpp:915
488 #, c-format
489 msgid "Press [%s] to read"
490 msgstr ""
491
492 #: ../../../src/ItemManager.cpp:918
493 #, c-format
494 msgid "Press [%s] to use"
495 msgstr ""
496
497 #: ../../../src/MenuActionBar.cpp:239 ../../../src/MenuActionBar.cpp:246
498 #: ../../../src/MenuActionBar.cpp:249 ../../../src/MenuActionBar.cpp:255
499 #, c-format
500 msgid "Hotkey: %s"
501 msgstr ""
502
503 #: ../../../src/MenuActionBar.cpp:621
504 msgid "Not enough MP."
505 msgstr ""
506
507 #: ../../../src/MenuActiveEffects.cpp:124
508 #, c-format
509 msgid "x%d"
510 msgstr ""
511
512 #: ../../../src/MenuActiveEffects.cpp:219
513 msgid "Remaining:"
514 msgstr ""
515
516 #: ../../../src/MenuActiveEffects.cpp:225
517 #, c-format
518 msgid "x%d stacks"
519 msgstr ""
520
521 #: ../../../src/MenuCharacter.cpp:73 ../../../src/MenuCharacter.cpp:78
522 msgid "Name"
523 msgstr ""
524
525 #: ../../../src/MenuCharacter.cpp:74 ../../../src/MenuCharacter.cpp:79
526 msgid "Level"
527 msgstr ""
528
529 #: ../../../src/MenuCharacter.cpp:309
530 #, c-format
531 msgid "Available stat points: %d"
532 msgstr ""
533
534 #: ../../../src/MenuCharacter.cpp:353
535 #, c-format
536 msgid "Reduces the damage taken from \"%s\" elemental attacks."
537 msgstr ""
538
539 #: ../../../src/MenuCharacter.cpp:363 ../../../src/MenuManager.cpp:301
540 #, c-format
541 msgid "XP: %d"
542 msgstr ""
543
544 #: ../../../src/MenuCharacter.cpp:365
545 #, c-format
546 msgid "Next: %d"
547 msgstr ""
548
549 #: ../../../src/MenuCharacter.cpp:371
550 #, c-format
551 msgid "base (%d), bonus (%d)"
552 msgstr ""
553
554 #: ../../../src/MenuCharacter.cpp:379 ../../../src/MenuCharacter.cpp:393
555 msgid "Related stats:"
556 msgstr ""
557
558 #: ../../../src/MenuCharacter.cpp:419 ../../../src/MenuCharacter.cpp:443
559 #, c-format
560 msgid "Each level grants %d."
561 msgstr ""
562
563 #: ../../../src/MenuCharacter.cpp:423 ../../../src/MenuCharacter.cpp:447
564 #, c-format
565 msgid "Each point of %s grants %d."
566 msgstr ""
567
568 #: ../../../src/MenuConfig.cpp:122 ../../../src/MenuConfig.cpp:1171
569 msgid "Clear"
570 msgstr ""
571
572 #: ../../../src/MenuConfig.cpp:122 ../../../src/MenuConfig.cpp:1169
573 msgid "Assign:"
574 msgstr ""
575
576 #: ../../../src/MenuConfig.cpp:123 ../../../src/MenuConfig.cpp:245
130577 msgid "Defaults"
131578 msgstr ""
132579
133 #: ../../../src/GameStateConfigBase.cpp:89
580 #: ../../../src/MenuConfig.cpp:123
134581 msgid "Reset ALL settings?"
135582 msgstr ""
136583
137 #: ../../../src/GameStateConfigBase.cpp:109 ../../../src/MenuNumPicker.cpp:49
584 #: ../../../src/MenuConfig.cpp:244 ../../../src/MenuNumPicker.cpp:49
138585 msgid "OK"
139586 msgstr ""
140587
141 #: ../../../src/GameStateConfigBase.cpp:111 ../../../src/GameStateNew.cpp:65
142 #: ../../../src/InputState.cpp:401
143 msgid "Cancel"
144 msgstr ""
145
146 #: ../../../src/GameStateConfigBase.cpp:160
147 #: ../../../src/GameStateConfigDesktop.cpp:130
588 #: ../../../src/MenuConfig.cpp:248 ../../../src/MenuGameOver.cpp:72
589 msgid "Continue"
590 msgstr ""
591
592 #: ../../../src/MenuConfig.cpp:250
593 msgid "Save Game"
594 msgstr ""
595
596 #: ../../../src/MenuConfig.cpp:293
597 msgid "Default"
598 msgstr ""
599
600 #: ../../../src/MenuConfig.cpp:293
601 msgid ""
602 "Show all loot tooltips, except for those that would be obscured by the "
603 "player or an enemy. Temporarily show all loot tooltips with 'Alt'."
604 msgstr ""
605
606 #: ../../../src/MenuConfig.cpp:294
607 msgid "Show all"
608 msgstr ""
609
610 #: ../../../src/MenuConfig.cpp:294
611 msgid ""
612 "Always show loot tooltips. Temporarily hide all loot tooltips with 'Alt'."
613 msgstr ""
614
615 #: ../../../src/MenuConfig.cpp:295 ../../../src/MenuConfig.cpp:300
616 msgid "Hidden"
617 msgstr ""
618
619 #: ../../../src/MenuConfig.cpp:295
620 msgid ""
621 "Always hide loot tooltips, except for when a piece of loot is hovered with "
622 "the mouse cursor. Temporarily show all loot tooltips with 'Alt'."
623 msgstr ""
624
625 #: ../../../src/MenuConfig.cpp:298
626 msgid "Visible"
627 msgstr ""
628
629 #: ../../../src/MenuConfig.cpp:299
630 msgid "Visible (2x zoom)"
631 msgstr ""
632
633 #: ../../../src/MenuConfig.cpp:303
634 msgid ""
635 "Controls the type of warning to be activated when the player is below the "
636 "low health threshold."
637 msgstr ""
638
639 #: ../../../src/MenuConfig.cpp:304
640 msgid "- Display a message"
641 msgstr ""
642
643 #: ../../../src/MenuConfig.cpp:305
644 msgid "- Play a sound"
645 msgstr ""
646
647 #: ../../../src/MenuConfig.cpp:306
648 msgid "- Change the cursor"
649 msgstr ""
650
651 #: ../../../src/MenuConfig.cpp:308
652 msgid "Disabled"
653 msgstr ""
654
655 #: ../../../src/MenuConfig.cpp:309
656 msgid "All"
657 msgstr ""
658
659 #: ../../../src/MenuConfig.cpp:310
660 msgid "Message & Cursor"
661 msgstr ""
662
663 #: ../../../src/MenuConfig.cpp:311
664 msgid "Message & Sound"
665 msgstr ""
666
667 #: ../../../src/MenuConfig.cpp:312
668 msgid "Sound & Cursor"
669 msgstr ""
670
671 #: ../../../src/MenuConfig.cpp:313
672 msgid "Message"
673 msgstr ""
674
675 #: ../../../src/MenuConfig.cpp:314
676 msgid "Cursor"
677 msgstr ""
678
679 #: ../../../src/MenuConfig.cpp:315
680 msgid "Sound"
681 msgstr ""
682
683 #: ../../../src/MenuConfig.cpp:321
684 msgid ""
685 "When the player's health drops below the given threshold, the low health "
686 "notifications are triggered if one or more of them is enabled."
687 msgstr ""
688
689 #: ../../../src/MenuConfig.cpp:334 ../../../src/MenuConfig.cpp:1587
690 #: ../../../src/MenuGameOver.cpp:116
691 msgid "Exit"
692 msgstr ""
693
694 #: ../../../src/MenuConfig.cpp:335
695 msgid "Video"
696 msgstr ""
697
698 #: ../../../src/MenuConfig.cpp:336
148699 msgid "Audio"
149700 msgstr ""
150701
151 #: ../../../src/GameStateConfigBase.cpp:161
152 #: ../../../src/GameStateConfigDesktop.cpp:131
702 #: ../../../src/MenuConfig.cpp:337
153703 msgid "Interface"
154704 msgstr ""
155705
156 #: ../../../src/GameStateConfigBase.cpp:162
157 #: ../../../src/GameStateConfigDesktop.cpp:134
706 #: ../../../src/MenuConfig.cpp:338
707 msgid "Input"
708 msgstr ""
709
710 #: ../../../src/MenuConfig.cpp:339
711 msgid "Keybindings"
712 msgstr ""
713
714 #: ../../../src/MenuConfig.cpp:340
158715 msgid "Mods"
159716 msgstr ""
160717
161 #: ../../../src/GameStateConfigBase.cpp:249 ../../../src/MenuExit.cpp:72
718 #: ../../../src/MenuConfig.cpp:352
719 msgid "Paused"
720 msgstr ""
721
722 #: ../../../src/MenuConfig.cpp:355
723 msgid "Time Played"
724 msgstr ""
725
726 #: ../../../src/MenuConfig.cpp:361
727 msgid "Renderer"
728 msgstr ""
729
730 #: ../../../src/MenuConfig.cpp:362
731 msgid "Full Screen Mode"
732 msgstr ""
733
734 #: ../../../src/MenuConfig.cpp:363
735 msgid "Hardware surfaces"
736 msgstr ""
737
738 #: ../../../src/MenuConfig.cpp:364
739 msgid "V-Sync"
740 msgstr ""
741
742 #: ../../../src/MenuConfig.cpp:365
743 msgid "Texture Filtering"
744 msgstr ""
745
746 #: ../../../src/MenuConfig.cpp:366
747 msgid "DPI scaling"
748 msgstr ""
749
750 #: ../../../src/MenuConfig.cpp:367
751 msgid "Parallax Layers"
752 msgstr ""
753
754 #: ../../../src/MenuConfig.cpp:368
755 msgid "Allow changing gamma"
756 msgstr ""
757
758 #: ../../../src/MenuConfig.cpp:369
759 msgid "Gamma"
760 msgstr ""
761
762 #: ../../../src/MenuConfig.cpp:371
763 msgid "Sound Volume"
764 msgstr ""
765
766 #: ../../../src/MenuConfig.cpp:372
162767 msgid "Music Volume"
163768 msgstr ""
164769
165 #: ../../../src/GameStateConfigBase.cpp:253 ../../../src/MenuExit.cpp:77
166 msgid "Sound Volume"
167 msgstr ""
168
169 #: ../../../src/GameStateConfigBase.cpp:257
770 #: ../../../src/MenuConfig.cpp:374
170771 msgid "Language"
171772 msgstr ""
172773
173 #: ../../../src/GameStateConfigBase.cpp:266
774 #: ../../../src/MenuConfig.cpp:375
174775 msgid "Show FPS"
175776 msgstr ""
176777
177 #: ../../../src/GameStateConfigBase.cpp:270
778 #: ../../../src/MenuConfig.cpp:376
779 msgid "Hardware mouse cursor"
780 msgstr ""
781
782 #: ../../../src/MenuConfig.cpp:377
178783 msgid "Colorblind Mode"
179784 msgstr ""
180785
181 #: ../../../src/GameStateConfigBase.cpp:274
182 msgid "Hardware mouse cursor"
183 msgstr ""
184
185 #: ../../../src/GameStateConfigBase.cpp:278
786 #: ../../../src/MenuConfig.cpp:378
186787 msgid "Developer Mode"
187788 msgstr ""
188789
189 #: ../../../src/GameStateConfigBase.cpp:282
790 #: ../../../src/MenuConfig.cpp:379
190791 msgid "Subtitles"
191792 msgstr ""
192793
193 #: ../../../src/GameStateConfigBase.cpp:286
194 msgid "Active Mods"
195 msgstr ""
196
197 #: ../../../src/GameStateConfigBase.cpp:295
198 msgid "Available Mods"
199 msgstr ""
200
201 #: ../../../src/GameStateConfigBase.cpp:314
202 msgid "<< Disable"
203 msgstr ""
204
205 #: ../../../src/GameStateConfigBase.cpp:320
206 msgid "Enable >>"
207 msgstr ""
208
209 #: ../../../src/GameStateConfigBase.cpp:873
210 msgid "Version:"
211 msgstr ""
212
213 #: ../../../src/GameStateConfigBase.cpp:878
214 msgid "Game:"
215 msgstr ""
216
217 #: ../../../src/GameStateConfigBase.cpp:883
218 msgid "Engine version:"
219 msgstr ""
220
221 #: ../../../src/GameStateConfigBase.cpp:891
222 msgid "Requires mods:"
223 msgstr ""
224
225 #: ../../../src/GameStateConfigDesktop.cpp:83
226 #: ../../../src/GameStateConfigDesktop.cpp:751
227 msgid "Clear"
228 msgstr ""
229
230 #: ../../../src/GameStateConfigDesktop.cpp:83
231 #: ../../../src/GameStateConfigDesktop.cpp:749
232 msgid "Assign:"
233 msgstr ""
234
235 #: ../../../src/GameStateConfigDesktop.cpp:128
236 msgid "Video"
237 msgstr ""
238
239 #: ../../../src/GameStateConfigDesktop.cpp:132
240 msgid "Input"
241 msgstr ""
242
243 #: ../../../src/GameStateConfigDesktop.cpp:133
244 msgid "Keybindings"
245 msgstr ""
246
247 #: ../../../src/GameStateConfigDesktop.cpp:188
794 #: ../../../src/MenuConfig.cpp:380
795 msgid "Loot tooltip visibility"
796 msgstr ""
797
798 #: ../../../src/MenuConfig.cpp:381
799 msgid "Mini-map mode"
800 msgstr ""
801
802 #: ../../../src/MenuConfig.cpp:382
803 msgid "Always show stat bar labels"
804 msgstr ""
805
806 #: ../../../src/MenuConfig.cpp:383
807 msgid "Allow stat bar auto-hiding"
808 msgstr ""
809
810 #: ../../../src/MenuConfig.cpp:384
811 msgid "Show combat text"
812 msgstr ""
813
814 #: ../../../src/MenuConfig.cpp:385
815 msgid "Automatically equip items"
816 msgstr ""
817
818 #: ../../../src/MenuConfig.cpp:386
819 msgid "Show hidden entity markers"
820 msgstr ""
821
822 #: ../../../src/MenuConfig.cpp:387
823 msgid "Low health notification"
824 msgstr ""
825
826 #: ../../../src/MenuConfig.cpp:388
827 msgid "Low health threshold"
828 msgstr ""
829
830 #: ../../../src/MenuConfig.cpp:389
831 msgid "Show item comparison tooltips"
832 msgstr ""
833
834 #: ../../../src/MenuConfig.cpp:392 ../../../src/MenuMovementType.cpp:94
835 #: ../../../src/MenuMovementType.cpp:131
836 msgid "Joystick"
837 msgstr ""
838
839 #: ../../../src/MenuConfig.cpp:393
840 msgid "Move hero using mouse"
841 msgstr ""
842
843 #: ../../../src/MenuConfig.cpp:394
844 msgid "Mouse aim"
845 msgstr ""
846
847 #: ../../../src/MenuConfig.cpp:395
848 msgid "Do not use mouse"
849 msgstr ""
850
851 #: ../../../src/MenuConfig.cpp:396
852 msgid "Swap mouse movement button"
853 msgstr ""
854
855 #: ../../../src/MenuConfig.cpp:397
856 msgid "Attack with mouse movement"
857 msgstr ""
858
859 #: ../../../src/MenuConfig.cpp:398
860 msgid "Joystick Deadzone"
861 msgstr ""
862
863 #: ../../../src/MenuConfig.cpp:408
864 #, c-format
865 msgid "Primary binding: %s"
866 msgstr ""
867
868 #: ../../../src/MenuConfig.cpp:409
869 #, c-format
870 msgid "Alternate binding: %s"
871 msgstr ""
872
873 #: ../../../src/MenuConfig.cpp:410
874 #, c-format
875 msgid "Joystick binding: %s"
876 msgstr ""
877
878 #: ../../../src/MenuConfig.cpp:511
248879 msgid ""
249880 "Will try to store surfaces in video memory versus system memory. The effect "
250881 "this has on performance depends on the renderer."
251882 msgstr ""
252883
253 #: ../../../src/GameStateConfigDesktop.cpp:189
884 #: ../../../src/MenuConfig.cpp:512
254885 msgid ""
255886 "Prevents screen tearing. Disable if you experience \"stuttering\" in "
256887 "windowed mode or input lag."
257888 msgstr ""
258889
259 #: ../../../src/GameStateConfigDesktop.cpp:190
890 #: ../../../src/MenuConfig.cpp:513
260891 msgid ""
261892 "When enabled, this uses the screen DPI in addition to the window dimensions "
262893 "to scale the rendering resolution. Otherwise, only the window dimensions are "
263894 "used."
264895 msgstr ""
265896
266 #: ../../../src/GameStateConfigDesktop.cpp:191
897 #: ../../../src/MenuConfig.cpp:514
267898 msgid ""
268899 "This enables parallax (non-tile) layers. Disabling this setting can improve "
269900 "performance in some cases."
270901 msgstr ""
271902
272 #: ../../../src/GameStateConfigDesktop.cpp:192
273 msgid "Experimental"
274 msgstr ""
275
276 #: ../../../src/GameStateConfigDesktop.cpp:193
277 msgid "For handheld devices"
278 msgstr ""
279
280 #: ../../../src/GameStateConfigDesktop.cpp:211
281 msgid "Renderer"
282 msgstr ""
283
284 #: ../../../src/GameStateConfigDesktop.cpp:227
285 msgid "Full Screen Mode"
286 msgstr ""
287
288 #: ../../../src/GameStateConfigDesktop.cpp:231
289 msgid "Move hero using mouse"
290 msgstr ""
291
292 #: ../../../src/GameStateConfigDesktop.cpp:235
293 msgid "Hardware surfaces"
294 msgstr ""
295
296 #: ../../../src/GameStateConfigDesktop.cpp:239
297 msgid "V-Sync"
298 msgstr ""
299
300 #: ../../../src/GameStateConfigDesktop.cpp:243
301 msgid "Texture Filtering"
302 msgstr ""
303
304 #: ../../../src/GameStateConfigDesktop.cpp:247
305 msgid "DPI scaling"
306 msgstr ""
307
308 #: ../../../src/GameStateConfigDesktop.cpp:251
309 msgid "Parallax Layers"
310 msgstr ""
311
312 #: ../../../src/GameStateConfigDesktop.cpp:255
313 msgid "Allow changing gamma"
314 msgstr ""
315
316 #: ../../../src/GameStateConfigDesktop.cpp:259
317 msgid "Gamma"
318 msgstr ""
319
320 #: ../../../src/GameStateConfigDesktop.cpp:263
321 msgid "Use joystick"
322 msgstr ""
323
324 #: ../../../src/GameStateConfigDesktop.cpp:267
325 msgid "Joystick"
326 msgstr ""
327
328 #: ../../../src/GameStateConfigDesktop.cpp:283
329 msgid "Mouse aim"
330 msgstr ""
331
332 #: ../../../src/GameStateConfigDesktop.cpp:287
333 msgid "Do not use mouse"
334 msgstr ""
335
336 #: ../../../src/GameStateConfigDesktop.cpp:291
337 msgid "Joystick Deadzone"
338 msgstr ""
339
340 #: ../../../src/GameState.cpp:37 ../../../src/GameState.cpp:58
341 msgid "Loading..."
342 msgstr ""
343
344 #: ../../../src/GameStateLoad.cpp:88 ../../../src/GameStateLoad.cpp:101
345 msgid "Delete Save"
346 msgstr ""
347
348 #: ../../../src/GameStateLoad.cpp:88
349 msgid "Delete this save?"
350 msgstr ""
351
352 #: ../../../src/GameStateLoad.cpp:90
353 msgid "Exit to Title"
354 msgstr ""
355
356 #: ../../../src/GameStateLoad.cpp:93
357 msgid "New Game"
358 msgstr ""
359
360 #: ../../../src/GameStateLoad.cpp:97 ../../../src/GameStateLoad.cpp:600
361 msgid "Choose a Slot"
362 msgstr ""
363
364 #: ../../../src/GameStateLoad.cpp:573 ../../../src/GameStateLoad.cpp:594
365 msgid "Enable a story mod to continue"
366 msgstr ""
367
368 #: ../../../src/GameStateLoad.cpp:589
369 msgid "Load Game"
370 msgstr ""
371
372 #: ../../../src/GameStateLoad.cpp:695
373 msgid "Entering game world..."
374 msgstr ""
375
376 #: ../../../src/GameStateLoad.cpp:698
377 msgid "Loading saved game..."
378 msgstr ""
379
380 #: ../../../src/GameStateLoad.cpp:731
381 msgid "Invalid save"
382 msgstr ""
383
384 #: ../../../src/GameStateLoad.cpp:755 ../../../src/ItemManager.cpp:747
385 #: ../../../src/MenuPowers.cpp:778 ../../../src/MenuPowers.cpp:1144
386 #: ../../../src/MenuPowers.cpp:1542
387 #, c-format
388 msgid "Level %d"
389 msgstr ""
390
391 #: ../../../src/GameStateNew.cpp:68
392 msgid "Create"
393 msgstr ""
394
395 #: ../../../src/GameStateNew.cpp:76
396 msgid "Randomize"
397 msgstr ""
398
399 #: ../../../src/GameStateNew.cpp:92
400 msgid "Choose a Portrait"
401 msgstr ""
402
403 #: ../../../src/GameStateNew.cpp:96
404 msgid "Choose a Name"
405 msgstr ""
406
407 #: ../../../src/GameStateNew.cpp:100
408 msgid "Permadeath?"
409 msgstr ""
410
411 #: ../../../src/GameStateNew.cpp:104
412 msgid "Choose a Class"
413 msgstr ""
414
415 #: ../../../src/GameStateTitle.cpp:108
416 msgid "Play Game"
417 msgstr ""
418
419 #: ../../../src/GameStateTitle.cpp:111
420 msgid "Enable a core mod to continue"
421 msgstr ""
422
423 #: ../../../src/GameStateTitle.cpp:115
424 msgid "Configuration"
425 msgstr ""
426
427 #: ../../../src/GameStateTitle.cpp:118
428 msgid "Credits"
429 msgstr ""
430
431 #: ../../../src/GameStateTitle.cpp:121
432 msgid "Exit Game"
433 msgstr ""
434
435 #: ../../../src/InputState.cpp:402
436 msgid "Accept"
437 msgstr ""
438
439 #: ../../../src/InputState.cpp:403 ../../../src/SDLInputState.cpp:607
440 msgid "Up"
441 msgstr ""
442
443 #: ../../../src/InputState.cpp:404 ../../../src/SDLInputState.cpp:585
444 msgid "Down"
445 msgstr ""
446
447 #: ../../../src/InputState.cpp:405 ../../../src/SDLInputState.cpp:592
448 msgid "Left"
449 msgstr ""
450
451 #: ../../../src/InputState.cpp:406 ../../../src/SDLInputState.cpp:602
452 msgid "Right"
453 msgstr ""
454
455 #: ../../../src/InputState.cpp:407
456 msgid "Bar1"
457 msgstr ""
458
459 #: ../../../src/InputState.cpp:408
460 msgid "Bar2"
461 msgstr ""
462
463 #: ../../../src/InputState.cpp:409
464 msgid "Bar3"
465 msgstr ""
466
467 #: ../../../src/InputState.cpp:410
468 msgid "Bar4"
469 msgstr ""
470
471 #: ../../../src/InputState.cpp:411
472 msgid "Bar5"
473 msgstr ""
474
475 #: ../../../src/InputState.cpp:412
476 msgid "Bar6"
477 msgstr ""
478
479 #: ../../../src/InputState.cpp:413
480 msgid "Bar7"
481 msgstr ""
482
483 #: ../../../src/InputState.cpp:414
484 msgid "Bar8"
485 msgstr ""
486
487 #: ../../../src/InputState.cpp:415
488 msgid "Bar9"
489 msgstr ""
490
491 #: ../../../src/InputState.cpp:416
492 msgid "Bar0"
493 msgstr ""
494
495 #: ../../../src/InputState.cpp:417 ../../../src/MenuActionBar.cpp:83
496 #: ../../../src/MenuCharacter.cpp:54
497 msgid "Character"
498 msgstr ""
499
500 #: ../../../src/InputState.cpp:418 ../../../src/MenuActionBar.cpp:84
501 #: ../../../src/MenuInventory.cpp:137 ../../../src/MenuVendor.cpp:57
502 msgid "Inventory"
503 msgstr ""
504
505 #: ../../../src/InputState.cpp:419 ../../../src/MenuActionBar.cpp:85
506 #: ../../../src/MenuPowers.cpp:168
507 msgid "Powers"
508 msgstr ""
509
510 #: ../../../src/InputState.cpp:420 ../../../src/MenuActionBar.cpp:86
511 #: ../../../src/MenuLog.cpp:72
512 msgid "Log"
513 msgstr ""
514
515 #: ../../../src/InputState.cpp:421
516 msgid "Main1"
517 msgstr ""
518
519 #: ../../../src/InputState.cpp:422
520 msgid "Main2"
521 msgstr ""
522
523 #: ../../../src/InputState.cpp:423
524 msgid "Ctrl"
525 msgstr ""
526
527 #: ../../../src/InputState.cpp:424
528 msgid "Shift"
529 msgstr ""
530
531 #: ../../../src/InputState.cpp:425
532 msgid "Alt"
533 msgstr ""
534
535 #: ../../../src/InputState.cpp:426 ../../../src/SDLInputState.cpp:584
536 msgid "Delete"
537 msgstr ""
538
539 #: ../../../src/InputState.cpp:427
540 msgid "ActionBar Accept"
541 msgstr ""
542
543 #: ../../../src/InputState.cpp:428
544 msgid "ActionBar Left"
545 msgstr ""
546
547 #: ../../../src/InputState.cpp:429
548 msgid "ActionBar Right"
549 msgstr ""
550
551 #: ../../../src/InputState.cpp:430
552 msgid "ActionBar Use"
553 msgstr ""
554
555 #: ../../../src/InputState.cpp:431
556 msgid "Developer Menu"
557 msgstr ""
558
559 #: ../../../src/InputState.cpp:433
560 msgid "Left Mouse"
561 msgstr ""
562
563 #: ../../../src/InputState.cpp:434
564 msgid "Middle Mouse"
565 msgstr ""
566
567 #: ../../../src/InputState.cpp:435
568 msgid "Right Mouse"
569 msgstr ""
570
571 #: ../../../src/InputState.cpp:436
572 msgid "Wheel Up"
573 msgstr ""
574
575 #: ../../../src/InputState.cpp:437
576 msgid "Wheel Down"
577 msgstr ""
578
579 #: ../../../src/InputState.cpp:438
580 msgid "Mouse X1"
581 msgstr ""
582
583 #: ../../../src/InputState.cpp:439
584 msgid "Mouse X2"
585 msgstr ""
586
587 #: ../../../src/ItemManager.cpp:450 ../../../src/ItemManager.cpp:453
588 msgid "Unknown Item"
589 msgstr ""
590
591 #: ../../../src/ItemManager.cpp:648 ../../../src/MenuPowers.cpp:887
592 #, c-format
593 msgid "%d%% Speed"
594 msgstr ""
595
596 #: ../../../src/ItemManager.cpp:652 ../../../src/MenuPowers.cpp:890
597 #, c-format
598 msgid "%d%% Attack Speed"
599 msgstr ""
600
601 #: ../../../src/ItemManager.cpp:674 ../../../src/MenuCharacter.cpp:354
602 #: ../../../src/MenuPowers.cpp:833
603 #, c-format
604 msgid "Resistance (%s)"
605 msgstr ""
606
607 #: ../../../src/ItemManager.cpp:684
608 #, c-format
609 msgid "Requires %s"
610 msgstr ""
611
612 #: ../../../src/ItemManager.cpp:733
613 msgid "Quest Item"
614 msgstr ""
615
616 #: ../../../src/ItemManager.cpp:760
617 #, c-format
618 msgid "Quality: %s"
619 msgstr ""
620
621 #: ../../../src/ItemManager.cpp:785
622 #, c-format
623 msgid "Absorb: %d-%d"
624 msgstr ""
625
626 #: ../../../src/ItemManager.cpp:787
627 #, c-format
628 msgid "Absorb: %d"
629 msgstr ""
630
631 #: ../../../src/ItemManager.cpp:827 ../../../src/MenuPowers.cpp:1131
632 #: ../../../src/MenuPowers.cpp:1134
633 #, c-format
634 msgid "Requires Level %d"
635 msgstr ""
636
637 #: ../../../src/ItemManager.cpp:838 ../../../src/MenuPowers.cpp:1123
638 #: ../../../src/MenuPowers.cpp:1125
639 #, c-format
640 msgid "Requires %s %d"
641 msgstr ""
642
643 #: ../../../src/ItemManager.cpp:849
644 #, c-format
645 msgid "Requires Class: %s"
646 msgstr ""
647
648 #: ../../../src/ItemManager.cpp:864 ../../../src/ItemManager.cpp:876
649 #, c-format
650 msgid "Buy Price: %d %s"
651 msgstr ""
652
653 #: ../../../src/ItemManager.cpp:866 ../../../src/ItemManager.cpp:878
654 #, c-format
655 msgid "Buy Price: %d %s each"
656 msgstr ""
657
658 #: ../../../src/ItemManager.cpp:886
659 #, c-format
660 msgid "Sell Price: %d %s"
661 msgstr ""
662
663 #: ../../../src/ItemManager.cpp:888
664 #, c-format
665 msgid "Sell Price: %d %s each"
666 msgstr ""
667
668 #: ../../../src/ItemManager.cpp:897
669 msgid "Set:"
670 msgstr ""
671
672 #: ../../../src/ItemManager.cpp:904
673 #, c-format
674 msgid "%d items:"
675 msgstr ""
676
677 #: ../../../src/ItemManager.cpp:917
678 #, c-format
679 msgid "Press [%s] to use"
680 msgstr ""
681
682 #: ../../../src/ItemManager.cpp:920
683 #, c-format
684 msgid "Press [%s] to read"
685 msgstr ""
686
687 #: ../../../src/MenuActionBar.cpp:87
688 msgid "Loot tooltip visibility"
689 msgstr ""
690
691 #: ../../../src/MenuActionBar.cpp:88
692 msgid "Mini-map mode"
693 msgstr ""
694
695 #: ../../../src/MenuActionBar.cpp:89
696 msgid "Always show stat bar labels"
697 msgstr ""
698
699 #: ../../../src/MenuActionBar.cpp:90
700 msgid "Show combat text"
701 msgstr ""
702
703 #: ../../../src/MenuActionBar.cpp:254 ../../../src/MenuActionBar.cpp:261
704 #: ../../../src/MenuActionBar.cpp:264 ../../../src/MenuActionBar.cpp:271
705 #, c-format
706 msgid "Hotkey: %s"
707 msgstr ""
708
709 #: ../../../src/MenuActionBar.cpp:474
710 #, c-format
711 msgid "Default. Temporarily show all loot tooltips with '%s'."
712 msgstr ""
713
714 #: ../../../src/MenuActionBar.cpp:476
715 #, c-format
716 msgid "Show All. Temporarily hide all loot tooltips with '%s'."
717 msgstr ""
718
719 #: ../../../src/MenuActionBar.cpp:478
720 #, c-format
721 msgid "Hide All. Temporarily show all loot tooltips with '%s'."
722 msgstr ""
723
724 #: ../../../src/MenuActionBar.cpp:482
725 msgid "Visible"
726 msgstr ""
727
728 #: ../../../src/MenuActionBar.cpp:484
729 msgid "Visible (2x zoom)"
730 msgstr ""
731
732 #: ../../../src/MenuActionBar.cpp:486
733 msgid "Hidden"
734 msgstr ""
735
736 #: ../../../src/MenuActionBar.cpp:490 ../../../src/MenuActionBar.cpp:496
737 msgid "Enabled"
738 msgstr ""
739
740 #: ../../../src/MenuActionBar.cpp:492 ../../../src/MenuActionBar.cpp:498
741 msgid "Disabled"
742 msgstr ""
743
744 #: ../../../src/MenuActionBar.cpp:657
745 msgid "Not enough MP."
746 msgstr ""
747
748 #: ../../../src/MenuActiveEffects.cpp:124
749 #, c-format
750 msgid "x%d"
751 msgstr ""
752
753 #: ../../../src/MenuActiveEffects.cpp:219
754 msgid "Remaining:"
755 msgstr ""
756
757 #: ../../../src/MenuActiveEffects.cpp:225
758 #, c-format
759 msgid "x%d stacks"
760 msgstr ""
761
762 #: ../../../src/MenuCharacter.cpp:73 ../../../src/MenuCharacter.cpp:78
763 msgid "Name"
764 msgstr ""
765
766 #: ../../../src/MenuCharacter.cpp:74 ../../../src/MenuCharacter.cpp:79
767 msgid "Level"
768 msgstr ""
769
770 #: ../../../src/MenuCharacter.cpp:310
771 #, c-format
772 msgid "%d unspent stat point"
773 msgstr ""
774
775 #: ../../../src/MenuCharacter.cpp:313
776 #, c-format
777 msgid "%d unspent stat points"
778 msgstr ""
779
780 #: ../../../src/MenuCharacter.cpp:355
781 #, c-format
782 msgid "Reduces the damage taken from \"%s\" elemental attacks."
783 msgstr ""
784
785 #: ../../../src/MenuCharacter.cpp:365 ../../../src/MenuManager.cpp:283
786 #, c-format
787 msgid "XP: %d"
788 msgstr ""
789
790 #: ../../../src/MenuCharacter.cpp:367
791 #, c-format
792 msgid "Next: %d"
793 msgstr ""
794
795 #: ../../../src/MenuCharacter.cpp:373
796 #, c-format
797 msgid "base (%d), bonus (%d)"
798 msgstr ""
799
800 #: ../../../src/MenuCharacter.cpp:381 ../../../src/MenuCharacter.cpp:395
801 msgid "Related stats:"
802 msgstr ""
803
804 #: ../../../src/MenuCharacter.cpp:421 ../../../src/MenuCharacter.cpp:445
805 #, c-format
806 msgid "Each level grants %d."
807 msgstr ""
808
809 #: ../../../src/MenuCharacter.cpp:425 ../../../src/MenuCharacter.cpp:449
810 #, c-format
811 msgid "Each point of %s grants %d."
812 msgstr ""
813
814 #: ../../../src/MenuDevConsole.cpp:63
903 #: ../../../src/MenuConfig.cpp:515
904 msgid ""
905 "Enables the below setting that controls the screen gamma level. The behavior "
906 "of the gamma setting can vary between platforms."
907 msgstr ""
908
909 #: ../../../src/MenuConfig.cpp:516
910 msgid ""
911 "Provides additional text for information that is primarily conveyed through "
912 "color."
913 msgstr ""
914
915 #: ../../../src/MenuConfig.cpp:517
916 msgid ""
917 "Some mods will automatically hide the stat bars when they are inactive. "
918 "Disabling this option will keep them displayed at all times."
919 msgstr ""
920
921 #: ../../../src/MenuConfig.cpp:518
922 msgid ""
923 "When enabled, empty equipment slots will be filled with applicable items "
924 "when they are obtained."
925 msgstr ""
926
927 #: ../../../src/MenuConfig.cpp:519
928 msgid ""
929 "Shows a marker above enemies, allies, and the player when they are obscured "
930 "by tall objects."
931 msgstr ""
932
933 #: ../../../src/MenuConfig.cpp:520
934 msgid ""
935 "When enabled, tooltips for equipped items of the same type are shown next to "
936 "standard item tooltips."
937 msgstr ""
938
939 #: ../../../src/MenuConfig.cpp:521
940 msgid ""
941 "This allows the game to be controlled entirely with the keyboard (or "
942 "joystick)."
943 msgstr ""
944
945 #: ../../../src/MenuConfig.cpp:522
946 msgid ""
947 "When 'Move hero using mouse' is enabled, this setting controls if 'Main1' or "
948 "'Main2' is used to move the hero. If enabled, 'Main2' will move the hero "
949 "instead of 'Main1'."
950 msgstr ""
951
952 #: ../../../src/MenuConfig.cpp:523
953 msgid ""
954 "When 'Move hero using mouse' is enabled, this setting controls if the Power "
955 "assigned to the movement button can be used by targeting an enemy. If this "
956 "setting is disabled, it is required to use 'Shift' to access the Power "
957 "assigned to the movement button."
958 msgstr ""
959
960 #: ../../../src/MenuConfig.cpp:524
961 msgid ""
962 "The player's attacks will be aimed in the direction of the mouse cursor when "
963 "this is enabled."
964 msgstr ""
965
966 #: ../../../src/MenuConfig.cpp:575
967 msgid "Active Mods"
968 msgstr ""
969
970 #: ../../../src/MenuConfig.cpp:584
971 msgid "Available Mods"
972 msgstr ""
973
974 #: ../../../src/MenuConfig.cpp:603
975 msgid "<< Disable"
976 msgstr ""
977
978 #: ../../../src/MenuConfig.cpp:609
979 msgid "Enable >>"
980 msgstr ""
981
982 #: ../../../src/MenuConfig.cpp:1444
983 msgid "Version:"
984 msgstr ""
985
986 #: ../../../src/MenuConfig.cpp:1449
987 msgid "Game:"
988 msgstr ""
989
990 #: ../../../src/MenuConfig.cpp:1454
991 msgid "Engine version:"
992 msgstr ""
993
994 #: ../../../src/MenuConfig.cpp:1462
995 msgid "Requires mods:"
996 msgstr ""
997
998 #: ../../../src/MenuConfig.cpp:1570 ../../../src/SDLInputState.cpp:748
999 msgid "(none)"
1000 msgstr ""
1001
1002 #: ../../../src/MenuConfig.cpp:1587 ../../../src/MenuGameOver.cpp:73
1003 msgid "Save & Exit"
1004 msgstr ""
1005
1006 #: ../../../src/MenuDevConsole.cpp:65
8151007 msgid "Execute"
8161008 msgstr ""
8171009
818 #: ../../../src/MenuDevConsole.cpp:101 ../../../src/MenuDevConsole.cpp:151
1010 #: ../../../src/MenuDevConsole.cpp:103 ../../../src/MenuDevConsole.cpp:153
8191011 msgid "Developer Console"
8201012 msgstr ""
8211013
822 #: ../../../src/MenuDevConsole.cpp:141
1014 #: ../../../src/MenuDevConsole.cpp:143
8231015 #, c-format
8241016 msgid "Use '%s' to inspect with the cursor."
8251017 msgstr ""
8261018
827 #: ../../../src/MenuDevConsole.cpp:146
1019 #: ../../../src/MenuDevConsole.cpp:148
8281020 msgid "Arguments with spaces should be enclosed with double quotes. Example:"
8291021 msgstr ""
8301022
831 #: ../../../src/MenuDevConsole.cpp:147
1023 #: ../../../src/MenuDevConsole.cpp:149
8321024 msgid "Type 'help' to get a list of commands."
8331025 msgstr ""
8341026
835 #: ../../../src/MenuDevConsole.cpp:209 ../../../src/MenuDevConsole.cpp:213
1027 #: ../../../src/MenuDevConsole.cpp:211 ../../../src/MenuDevConsole.cpp:215
8361028 msgid "px"
8371029 msgstr ""
8381030
839 #: ../../../src/MenuDevConsole.cpp:224
1031 #: ../../../src/MenuDevConsole.cpp:226
8401032 msgid "Distance"
8411033 msgstr ""
8421034
843 #: ../../../src/MenuDevConsole.cpp:239 ../../../src/MenuDevConsole.cpp:286
1035 #: ../../../src/MenuDevConsole.cpp:241 ../../../src/MenuDevConsole.cpp:289
1036 #: ../../../src/MenuDevConsole.cpp:303
8441037 msgid "Entity"
8451038 msgstr ""
8461039
847 #: ../../../src/MenuDevConsole.cpp:261 ../../../src/MenuDevConsole.cpp:268
1040 #: ../../../src/MenuDevConsole.cpp:263 ../../../src/MenuDevConsole.cpp:270
8481041 msgid "none"
8491042 msgstr ""
8501043
851 #: ../../../src/MenuDevConsole.cpp:262 ../../../src/MenuDevConsole.cpp:264
1044 #: ../../../src/MenuDevConsole.cpp:264 ../../../src/MenuDevConsole.cpp:266
8521045 msgid "wall"
8531046 msgstr ""
8541047
855 #: ../../../src/MenuDevConsole.cpp:263 ../../../src/MenuDevConsole.cpp:265
1048 #: ../../../src/MenuDevConsole.cpp:265 ../../../src/MenuDevConsole.cpp:267
8561049 msgid "short wall / pit"
8571050 msgstr ""
8581051
859 #: ../../../src/MenuDevConsole.cpp:266
1052 #: ../../../src/MenuDevConsole.cpp:268
8601053 msgid "entity"
8611054 msgstr ""
8621055
863 #: ../../../src/MenuDevConsole.cpp:267
1056 #: ../../../src/MenuDevConsole.cpp:269
8641057 msgid "entity, ally"
8651058 msgstr ""
8661059
867 #: ../../../src/MenuDevConsole.cpp:274
1060 #: ../../../src/MenuDevConsole.cpp:276
8681061 msgid "Tile"
8691062 msgstr ""
8701063
871 #: ../../../src/MenuDevConsole.cpp:360
1064 #: ../../../src/MenuDevConsole.cpp:377
8721065 msgid "adds a power to the action bar"
8731066 msgstr ""
8741067
875 #: ../../../src/MenuDevConsole.cpp:361
1068 #: ../../../src/MenuDevConsole.cpp:378
8761069 msgid "turns on/off the display of the FPS counter"
8771070 msgstr ""
8781071
879 #: ../../../src/MenuDevConsole.cpp:362
1072 #: ../../../src/MenuDevConsole.cpp:379
8801073 msgid "turns on/off all of the HUD elements"
8811074 msgstr ""
8821075
883 #: ../../../src/MenuDevConsole.cpp:363
1076 #: ../../../src/MenuDevConsole.cpp:380
8841077 msgid "turns on/off the developer hud"
8851078 msgstr ""
8861079
887 #: ../../../src/MenuDevConsole.cpp:364
1080 #: ../../../src/MenuDevConsole.cpp:381
8881081 msgid ""
8891082 "Prints a list of powers that match a search term. No search term will list "
8901083 "all items"
8911084 msgstr ""
8921085
893 #: ../../../src/MenuDevConsole.cpp:365
1086 #: ../../../src/MenuDevConsole.cpp:382
8941087 msgid "Prints out all the map filenames located in the \"maps/\" directory."
8951088 msgstr ""
8961089
897 #: ../../../src/MenuDevConsole.cpp:366
1090 #: ../../../src/MenuDevConsole.cpp:383
8981091 msgid ""
8991092 "Prints out the active campaign statuses that match a search term. No search "
9001093 "term will list all active statuses"
9011094 msgstr ""
9021095
903 #: ../../../src/MenuDevConsole.cpp:367
1096 #: ../../../src/MenuDevConsole.cpp:384
9041097 msgid ""
9051098 "Prints a list of items that match a search term. No search term will list "
9061099 "all items"
9071100 msgstr ""
9081101
909 #: ../../../src/MenuDevConsole.cpp:368
1102 #: ../../../src/MenuDevConsole.cpp:385
9101103 msgid "parses a series of event components and executes them as a single event"
9111104 msgstr ""
9121105
913 #: ../../../src/MenuDevConsole.cpp:369
1106 #: ../../../src/MenuDevConsole.cpp:386
9141107 msgid "clears the command history"
9151108 msgstr ""
9161109
917 #: ../../../src/MenuDevConsole.cpp:370
1110 #: ../../../src/MenuDevConsole.cpp:387
9181111 msgid "displays this text"
9191112 msgstr ""
9201113
921 #: ../../../src/MenuDevConsole.cpp:377
1114 #: ../../../src/MenuDevConsole.cpp:394
9221115 msgid "Toggled the developer hud"
9231116 msgstr ""
9241117
925 #: ../../../src/MenuDevConsole.cpp:381
1118 #: ../../../src/MenuDevConsole.cpp:398
9261119 msgid "Toggled the hud"
9271120 msgstr ""
9281121
929 #: ../../../src/MenuDevConsole.cpp:385
1122 #: ../../../src/MenuDevConsole.cpp:402
9301123 msgid "Toggled the FPS counter"
9311124 msgstr ""
9321125
933 #: ../../../src/MenuDevConsole.cpp:534
1126 #: ../../../src/MenuDevConsole.cpp:552
9341127 msgid "ERROR: Incorrect number of arguments"
9351128 msgstr ""
9361129
937 #: ../../../src/MenuDevConsole.cpp:536 ../../../src/MenuDevConsole.cpp:564
1130 #: ../../../src/MenuDevConsole.cpp:554 ../../../src/MenuDevConsole.cpp:582
9381131 msgid "HINT:"
9391132 msgstr ""
9401133
941 #: ../../../src/MenuDevConsole.cpp:536
1134 #: ../../../src/MenuDevConsole.cpp:554
9421135 msgid "<id>"
9431136 msgstr ""
9441137
945 #: ../../../src/MenuDevConsole.cpp:552
1138 #: ../../../src/MenuDevConsole.cpp:570
9461139 #, c-format
9471140 msgid "ERROR: '%s' is not a valid event key"
9481141 msgstr ""
9491142
950 #: ../../../src/MenuDevConsole.cpp:562
1143 #: ../../../src/MenuDevConsole.cpp:580
9511144 msgid "ERROR: Too few arguments"
9521145 msgstr ""
9531146
954 #: ../../../src/MenuDevConsole.cpp:564
1147 #: ../../../src/MenuDevConsole.cpp:582
9551148 msgid "<key>=<val> <key>=<val> ..."
9561149 msgstr ""
9571150
958 #: ../../../src/MenuDevConsole.cpp:569
1151 #: ../../../src/MenuDevConsole.cpp:587
9591152 msgid "ERROR: Unknown command"
9601153 msgstr ""
9611154
962 #: ../../../src/MenuDevConsole.cpp:571
1155 #: ../../../src/MenuDevConsole.cpp:589
9631156 msgid "HINT: Type help"
9641157 msgstr ""
9651158
966 #: ../../../src/MenuEnemy.cpp:138
1159 #: ../../../src/MenuEnemy.cpp:162
9671160 #, c-format
9681161 msgid "%s level %d"
9691162 msgstr ""
9701163
971 #: ../../../src/MenuEnemy.cpp:162
1164 #: ../../../src/MenuEnemy.cpp:186
9721165 msgid "Dead"
9731166 msgstr ""
9741167
975 #: ../../../src/MenuEnemy.cpp:164
1168 #: ../../../src/MenuEnemy.cpp:188
9761169 msgid "Destroyed"
9771170 msgstr ""
9781171
979 #: ../../../src/MenuExit.cpp:85 ../../../src/MenuExit.cpp:139
980 msgid "Paused"
981 msgstr ""
982
983 #: ../../../src/MenuExit.cpp:91
984 msgid "Save & Exit"
985 msgstr ""
986
987 #: ../../../src/MenuExit.cpp:92
988 msgid "Exit"
989 msgstr ""
990
991 #: ../../../src/MenuExit.cpp:96
992 msgid "Continue"
993 msgstr ""
994
995 #: ../../../src/MenuInventory.cpp:73
996 msgid "Automatically equip items"
997 msgstr ""
998
999 #: ../../../src/MenuInventory.cpp:188
1172 #: ../../../src/MenuGameOver.cpp:69
1173 msgid "Game Over"
1174 msgstr ""
1175
1176 #: ../../../src/MenuInventory.cpp:178
10001177 #, c-format
10011178 msgid "Lost %d%% of %s."
10021179 msgstr ""
10031180
1004 #: ../../../src/MenuInventory.cpp:195
1181 #: ../../../src/MenuInventory.cpp:185
10051182 #, c-format
10061183 msgid "Lost %d%% of total XP."
10071184 msgstr ""
10081185
1009 #: ../../../src/MenuInventory.cpp:200
1186 #: ../../../src/MenuInventory.cpp:190
10101187 #, c-format
10111188 msgid "Lost %d%% of current level XP."
10121189 msgstr ""
10131190
1014 #: ../../../src/MenuInventory.cpp:226
1191 #: ../../../src/MenuInventory.cpp:216
10151192 #, c-format
10161193 msgid "Lost %s."
10171194 msgstr ""
10181195
1019 #: ../../../src/MenuInventory.cpp:274 ../../../src/MenuStash.cpp:146
1196 #: ../../../src/MenuInventory.cpp:258 ../../../src/MenuStash.cpp:276
10201197 #, c-format
10211198 msgid "%d %s"
10221199 msgstr ""
10231200
1024 #: ../../../src/MenuInventory.cpp:317
1201 #: ../../../src/MenuInventory.cpp:301
10251202 msgid "Pick up item(s):"
10261203 msgstr ""
10271204
1028 #: ../../../src/MenuInventory.cpp:318
1205 #: ../../../src/MenuInventory.cpp:302
10291206 msgid "Use or equip item:"
10301207 msgstr ""
10311208
1032 #: ../../../src/MenuInventory.cpp:319
1209 #: ../../../src/MenuInventory.cpp:303
10331210 #, c-format
10341211 msgid "%s modifiers"
10351212 msgstr ""
10361213
1037 #: ../../../src/MenuInventory.cpp:320
1214 #: ../../../src/MenuInventory.cpp:304
10381215 msgid "Select a quantity of item:"
10391216 msgstr ""
10401217
1041 #: ../../../src/MenuInventory.cpp:323
1218 #: ../../../src/MenuInventory.cpp:307
10421219 msgid "Stash item stack:"
10431220 msgstr ""
10441221
1045 #: ../../../src/MenuInventory.cpp:325
1222 #: ../../../src/MenuInventory.cpp:309
10461223 msgid "Sell item stack:"
10471224 msgstr ""
10481225
1049 #: ../../../src/MenuInventory.cpp:592
1226 #: ../../../src/MenuInventory.cpp:576
10501227 msgid "You don't have enough of the required item."
10511228 msgstr ""
10521229
1053 #: ../../../src/MenuInventory.cpp:599
1230 #: ../../../src/MenuInventory.cpp:588
10541231 msgid "You can't use this item right now."
10551232 msgstr ""
10561233
1057 #: ../../../src/MenuInventory.cpp:611
1234 #: ../../../src/MenuInventory.cpp:600
10581235 msgid "This item can only be used from the action bar."
10591236 msgstr ""
10601237
1061 #: ../../../src/MenuInventory.cpp:729
1238 #: ../../../src/MenuInventory.cpp:718
10621239 msgid "Inventory is full."
10631240 msgstr ""
10641241
1065 #: ../../../src/MenuInventory.cpp:849
1242 #: ../../../src/MenuInventory.cpp:843
10661243 #, c-format
10671244 msgid "Not enough %s."
10681245 msgstr ""
10691246
1070 #: ../../../src/MenuInventory.cpp:869 ../../../src/MenuInventory.cpp:876
1247 #: ../../../src/MenuInventory.cpp:863 ../../../src/MenuInventory.cpp:870
10711248 msgid "This item can not be sold."
10721249 msgstr ""
10731250
10791256 msgid "Quests"
10801257 msgstr ""
10811258
1082 #: ../../../src/MenuManager.cpp:286
1259 #: ../../../src/MenuManager.cpp:305
10831260 #, c-format
10841261 msgid "XP: %d/%d"
10851262 msgstr ""
10861263
1087 #: ../../../src/MenuManager.cpp:827
1264 #: ../../../src/MenuManager.cpp:875
10881265 msgid "This item can not be dropped."
1266 msgstr ""
1267
1268 #: ../../../src/MenuManager.cpp:1501
1269 msgid "Equipped"
1270 msgstr ""
1271
1272 #: ../../../src/MenuMovementType.cpp:87
1273 msgid "Select a Movement Type"
1274 msgstr ""
1275
1276 #: ../../../src/MenuMovementType.cpp:89
1277 msgid "Can be changed later in the Configuration menu."
1278 msgstr ""
1279
1280 #: ../../../src/MenuMovementType.cpp:92 ../../../src/MenuMovementType.cpp:122
1281 msgid "Keyboard"
1282 msgstr ""
1283
1284 #: ../../../src/MenuMovementType.cpp:93 ../../../src/MenuMovementType.cpp:128
1285 msgid "Mouse"
1286 msgstr ""
1287
1288 #: ../../../src/MenuMovementType.cpp:129
1289 msgid "Button"
10891290 msgstr ""
10901291
10911292 #: ../../../src/MenuNumPicker.cpp:59
10921293 msgid "Enter amount:"
10931294 msgstr ""
10941295
1095 #: ../../../src/MenuPowers.cpp:787
1296 #: ../../../src/MenuPowers.cpp:872
10961297 msgid "Passive"
10971298 msgstr ""
10981299
1099 #: ../../../src/MenuPowers.cpp:792
1300 #: ../../../src/MenuPowers.cpp:879
11001301 #, c-format
11011302 msgid "Costs %d MP"
11021303 msgstr ""
11031304
1104 #: ../../../src/MenuPowers.cpp:796
1305 #: ../../../src/MenuPowers.cpp:883
11051306 #, c-format
11061307 msgid "Costs %d HP"
11071308 msgstr ""
11081309
1109 #: ../../../src/MenuPowers.cpp:801
1310 #: ../../../src/MenuPowers.cpp:887
11101311 msgid "Cooldown:"
11111312 msgstr ""
11121313
1113 #: ../../../src/MenuPowers.cpp:866 ../../../src/MenuPowers.cpp:869
1314 #: ../../../src/MenuPowers.cpp:938 ../../../src/MenuPowers.cpp:941
11141315 msgid "Damage per second"
11151316 msgstr ""
11161317
1117 #: ../../../src/MenuPowers.cpp:872 ../../../src/MenuPowers.cpp:875
1318 #: ../../../src/MenuPowers.cpp:944 ../../../src/MenuPowers.cpp:947
11181319 msgid "HP per second"
11191320 msgstr ""
11201321
1121 #: ../../../src/MenuPowers.cpp:878 ../../../src/MenuPowers.cpp:881
1322 #: ../../../src/MenuPowers.cpp:950 ../../../src/MenuPowers.cpp:953
11221323 msgid "MP per second"
11231324 msgstr ""
11241325
1125 #: ../../../src/MenuPowers.cpp:885
1326 #: ../../../src/MenuPowers.cpp:957
11261327 msgid "Immobilize"
11271328 msgstr ""
11281329
1129 #: ../../../src/MenuPowers.cpp:893
1330 #: ../../../src/MenuPowers.cpp:965
11301331 msgid "Immunity"
11311332 msgstr ""
11321333
1133 #: ../../../src/MenuPowers.cpp:896
1334 #: ../../../src/MenuPowers.cpp:968
11341335 msgid "Immunity to damage over time"
11351336 msgstr ""
11361337
1137 #: ../../../src/MenuPowers.cpp:899
1338 #: ../../../src/MenuPowers.cpp:971
11381339 msgid "Immunity to slow"
11391340 msgstr ""
11401341
1141 #: ../../../src/MenuPowers.cpp:902
1342 #: ../../../src/MenuPowers.cpp:974
11421343 msgid "Immunity to stun"
11431344 msgstr ""
11441345
1145 #: ../../../src/MenuPowers.cpp:905
1346 #: ../../../src/MenuPowers.cpp:977
11461347 msgid "Immunity to HP steal"
11471348 msgstr ""
11481349
1149 #: ../../../src/MenuPowers.cpp:908
1350 #: ../../../src/MenuPowers.cpp:980
11501351 msgid "Immunity to MP steal"
11511352 msgstr ""
11521353
1153 #: ../../../src/MenuPowers.cpp:911
1354 #: ../../../src/MenuPowers.cpp:983
11541355 msgid "Immunity to knockback"
11551356 msgstr ""
11561357
1157 #: ../../../src/MenuPowers.cpp:914
1358 #: ../../../src/MenuPowers.cpp:986
11581359 msgid "Immunity to damage reflection"
11591360 msgstr ""
11601361
1161 #: ../../../src/MenuPowers.cpp:917
1362 #: ../../../src/MenuPowers.cpp:992
11621363 msgid "Stun"
11631364 msgstr ""
11641365
1165 #: ../../../src/MenuPowers.cpp:920
1366 #: ../../../src/MenuPowers.cpp:995
11661367 msgid "Automatic revive on death"
11671368 msgstr ""
11681369
1169 #: ../../../src/MenuPowers.cpp:923
1370 #: ../../../src/MenuPowers.cpp:998
11701371 msgid "Convert"
11711372 msgstr ""
11721373
1173 #: ../../../src/MenuPowers.cpp:926
1374 #: ../../../src/MenuPowers.cpp:1001
11741375 msgid "Fear"
11751376 msgstr ""
11761377
1177 #: ../../../src/MenuPowers.cpp:929
1378 #: ../../../src/MenuPowers.cpp:1004
11781379 msgid "Lifespan"
11791380 msgstr ""
11801381
1181 #: ../../../src/MenuPowers.cpp:953
1382 #: ../../../src/MenuPowers.cpp:1028
11821383 msgid "Magical Shield"
11831384 msgstr ""
11841385
1185 #: ../../../src/MenuPowers.cpp:982
1386 #: ../../../src/MenuPowers.cpp:1057
11861387 msgid "Healing"
11871388 msgstr ""
11881389
1189 #: ../../../src/MenuPowers.cpp:985
1390 #: ../../../src/MenuPowers.cpp:1060
11901391 msgid "Knockback"
11911392 msgstr ""
11921393
1193 #: ../../../src/MenuPowers.cpp:1010
1394 #: ../../../src/MenuPowers.cpp:1084
11941395 #, c-format
11951396 msgid "%d%% chance"
11961397 msgstr ""
11971398
1198 #: ../../../src/MenuPowers.cpp:1062
1399 #: ../../../src/MenuPowers.cpp:1136
11991400 msgid "Base Accuracy"
12001401 msgstr ""
12011402
1202 #: ../../../src/MenuPowers.cpp:1082
1403 #: ../../../src/MenuPowers.cpp:1156
12031404 msgid "Base Critical Chance"
12041405 msgstr ""
12051406
1206 #: ../../../src/MenuPowers.cpp:1090
1407 #: ../../../src/MenuPowers.cpp:1164
12071408 msgid "Ignores Absorbtion"
12081409 msgstr ""
12091410
1210 #: ../../../src/MenuPowers.cpp:1095
1411 #: ../../../src/MenuPowers.cpp:1169
12111412 msgid "Ignores Avoidance"
12121413 msgstr ""
12131414
1214 #: ../../../src/MenuPowers.cpp:1100
1415 #: ../../../src/MenuPowers.cpp:1174
12151416 #, c-format
12161417 msgid "%d%% Chance to crit slowed targets"
12171418 msgstr ""
12181419
1219 #: ../../../src/MenuPowers.cpp:1105
1420 #: ../../../src/MenuPowers.cpp:1179
12201421 #, c-format
12211422 msgid "Elemental Damage (%s)"
12221423 msgstr ""
12231424
1224 #: ../../../src/MenuPowers.cpp:1114
1425 #: ../../../src/MenuPowers.cpp:1188
12251426 #, c-format
12261427 msgid "Requires a %s"
12271428 msgstr ""
12281429
1229 #: ../../../src/MenuPowers.cpp:1151 ../../../src/MenuPowers.cpp:1154
1430 #: ../../../src/MenuPowers.cpp:1226 ../../../src/MenuPowers.cpp:1229
12301431 #, c-format
12311432 msgid "Requires Power: %s"
12321433 msgstr ""
12331434
1234 #: ../../../src/MenuPowers.cpp:1163
1435 #: ../../../src/MenuPowers.cpp:1238
12351436 msgid "Click to Unlock (uses 1 Skill Point)"
12361437 msgstr ""
12371438
1238 #: ../../../src/MenuPowers.cpp:1167 ../../../src/MenuPowers.cpp:1169
1439 #: ../../../src/MenuPowers.cpp:1242 ../../../src/MenuPowers.cpp:1244
12391440 msgid "Requires 1 Skill Point"
12401441 msgstr ""
12411442
1242 #: ../../../src/MenuPowers.cpp:1355
1243 #, c-format
1244 msgid "%d unspent skill point"
1245 msgstr ""
1246
1247 #: ../../../src/MenuPowers.cpp:1358
1248 #, c-format
1249 msgid "%d unspent skill points"
1250 msgstr ""
1251
1252 #: ../../../src/MenuPowers.cpp:1388
1443 #: ../../../src/MenuPowers.cpp:1444
1444 #, c-format
1445 msgid "Available skill points: %d"
1446 msgstr ""
1447
1448 #: ../../../src/MenuPowers.cpp:1476
12531449 msgid "Next Level:"
12541450 msgstr ""
12551451
1256 #: ../../../src/MenuStash.cpp:96
1257 msgid "Shared Stash"
1258 msgstr ""
1259
1260 #: ../../../src/MenuStash.cpp:209
1261 msgid "Can not store quest items in the stash."
1262 msgstr ""
1263
1264 #: ../../../src/MenuStash.cpp:219
1452 #: ../../../src/MenuStash.cpp:80 ../../../src/MenuStash.cpp:161
1453 msgid "Stash"
1454 msgstr ""
1455
1456 #: ../../../src/MenuStash.cpp:174 ../../../src/MenuStash.cpp:188
1457 msgid "Private"
1458 msgstr ""
1459
1460 #: ../../../src/MenuStash.cpp:175
1461 msgid "Shared"
1462 msgstr ""
1463
1464 #: ../../../src/MenuStash.cpp:340
1465 msgid "This item can not be stored in the stash."
1466 msgstr ""
1467
1468 #: ../../../src/MenuStash.cpp:345
1469 msgid "This item can not be stored in the private stash."
1470 msgstr ""
1471
1472 #: ../../../src/MenuStash.cpp:350
1473 msgid "This item can not be stored in the shared stash."
1474 msgstr ""
1475
1476 #: ../../../src/MenuStash.cpp:360
12651477 msgid "Stash is full."
12661478 msgstr ""
12671479
1268 #: ../../../src/MenuTalker.cpp:454
1480 #: ../../../src/MenuStash.cpp:414
1481 #, c-format
1482 msgid "Can not store item in stash: %s"
1483 msgstr ""
1484
1485 #: ../../../src/MenuTalker.cpp:448
1486 #, c-format
1487 msgid "<dialog node %d>"
1488 msgstr ""
1489
1490 #: ../../../src/MenuTalker.cpp:456
12691491 msgid "Trade"
12701492 msgstr ""
12711493
1272 #: ../../../src/MenuVendor.cpp:58
1494 #: ../../../src/MenuVendor.cpp:60
12731495 msgid "Buyback"
12741496 msgstr ""
12751497
1276 #: ../../../src/MenuVendor.cpp:279
1498 #: ../../../src/MenuVendor.cpp:283
12771499 msgid "Vendor"
12781500 msgstr ""
12791501
1280 #: ../../../src/PowerManager.cpp:1136
1502 #: ../../../src/PowerManager.cpp:1208
12811503 #, c-format
12821504 msgid "+%d Shield"
12831505 msgstr ""
12841506
1285 #: ../../../src/PowerManager.cpp:1392
1507 #: ../../../src/PowerManager.cpp:1465
12861508 msgid "You are already transformed, untransform first."
12871509 msgstr ""
12881510
1289 #: ../../../src/PowerManager.cpp:1404
1511 #: ../../../src/PowerManager.cpp:1477
12901512 msgid "Could not untransform at this position."
12911513 msgstr ""
12921514
12941516 msgid "Completed Quests"
12951517 msgstr ""
12961518
1297 #: ../../../src/SaveLoad.cpp:243 ../../../src/SaveLoad.cpp:244
1519 #: ../../../src/SaveLoad.cpp:250 ../../../src/SaveLoad.cpp:251
12981520 msgid "Game saved."
12991521 msgstr ""
13001522
1301 #: ../../../src/SDLInputState.cpp:582
1523 #: ../../../src/SDLInputState.cpp:643
1524 msgid "BkSp"
1525 msgstr ""
1526
1527 #: ../../../src/SDLInputState.cpp:644
1528 msgid "Caps"
1529 msgstr ""
1530
1531 #: ../../../src/SDLInputState.cpp:645
1532 msgid "Del"
1533 msgstr ""
1534
1535 #: ../../../src/SDLInputState.cpp:647 ../../../src/SDLInputState.cpp:677
1536 msgid "End"
1537 msgstr ""
1538
1539 #: ../../../src/SDLInputState.cpp:648
1540 msgid "Esc"
1541 msgstr ""
1542
1543 #: ../../../src/SDLInputState.cpp:649 ../../../src/SDLInputState.cpp:679
1544 msgid "Home"
1545 msgstr ""
1546
1547 #: ../../../src/SDLInputState.cpp:650
1548 msgid "Ins"
1549 msgstr ""
1550
1551 #: ../../../src/SDLInputState.cpp:651
1552 msgid "LAlt"
1553 msgstr ""
1554
1555 #: ../../../src/SDLInputState.cpp:652
1556 msgid "LCtrl"
1557 msgstr ""
1558
1559 #: ../../../src/SDLInputState.cpp:654
1560 msgid "LShft"
1561 msgstr ""
1562
1563 #: ../../../src/SDLInputState.cpp:655
1564 msgid "Num"
1565 msgstr ""
1566
1567 #: ../../../src/SDLInputState.cpp:656
1568 msgid "PgDn"
1569 msgstr ""
1570
1571 #: ../../../src/SDLInputState.cpp:657
1572 msgid "PgUp"
1573 msgstr ""
1574
1575 #: ../../../src/SDLInputState.cpp:658 ../../../src/SDLInputState.cpp:688
1576 msgid "Pause"
1577 msgstr ""
1578
1579 #: ../../../src/SDLInputState.cpp:659
1580 msgid "Print"
1581 msgstr ""
1582
1583 #: ../../../src/SDLInputState.cpp:660
1584 msgid "RAlt"
1585 msgstr ""
1586
1587 #: ../../../src/SDLInputState.cpp:661
1588 msgid "RCtrl"
1589 msgstr ""
1590
1591 #: ../../../src/SDLInputState.cpp:662
1592 msgid "Ret"
1593 msgstr ""
1594
1595 #: ../../../src/SDLInputState.cpp:664
1596 msgid "RShft"
1597 msgstr ""
1598
1599 #: ../../../src/SDLInputState.cpp:665
1600 msgid "SLock"
1601 msgstr ""
1602
1603 #: ../../../src/SDLInputState.cpp:666
1604 msgid "Spc"
1605 msgstr ""
1606
1607 #: ../../../src/SDLInputState.cpp:667 ../../../src/SDLInputState.cpp:697
1608 msgid "Tab"
1609 msgstr ""
1610
1611 #: ../../../src/SDLInputState.cpp:673
13021612 msgid "Backspace"
13031613 msgstr ""
13041614
1305 #: ../../../src/SDLInputState.cpp:583
1615 #: ../../../src/SDLInputState.cpp:674
13061616 msgid "CapsLock"
13071617 msgstr ""
13081618
1309 #: ../../../src/SDLInputState.cpp:586
1310 msgid "End"
1311 msgstr ""
1312
1313 #: ../../../src/SDLInputState.cpp:587
1619 #: ../../../src/SDLInputState.cpp:678
13141620 msgid "Escape"
13151621 msgstr ""
13161622
1317 #: ../../../src/SDLInputState.cpp:588
1318 msgid "Home"
1319 msgstr ""
1320
1321 #: ../../../src/SDLInputState.cpp:589
1623 #: ../../../src/SDLInputState.cpp:680
13221624 msgid "Insert"
13231625 msgstr ""
13241626
1325 #: ../../../src/SDLInputState.cpp:590
1627 #: ../../../src/SDLInputState.cpp:681
13261628 msgid "Left Alt"
13271629 msgstr ""
13281630
1329 #: ../../../src/SDLInputState.cpp:591
1631 #: ../../../src/SDLInputState.cpp:682
13301632 msgid "Left Ctrl"
13311633 msgstr ""
13321634
1333 #: ../../../src/SDLInputState.cpp:593
1635 #: ../../../src/SDLInputState.cpp:684
13341636 msgid "Left Shift"
13351637 msgstr ""
13361638
1337 #: ../../../src/SDLInputState.cpp:594
1639 #: ../../../src/SDLInputState.cpp:685
13381640 msgid "NumLock"
13391641 msgstr ""
13401642
1341 #: ../../../src/SDLInputState.cpp:595
1643 #: ../../../src/SDLInputState.cpp:686
13421644 msgid "PageDown"
13431645 msgstr ""
13441646
1345 #: ../../../src/SDLInputState.cpp:596
1647 #: ../../../src/SDLInputState.cpp:687
13461648 msgid "PageUp"
13471649 msgstr ""
13481650
1349 #: ../../../src/SDLInputState.cpp:597
1350 msgid "Pause"
1351 msgstr ""
1352
1353 #: ../../../src/SDLInputState.cpp:598
1651 #: ../../../src/SDLInputState.cpp:689
13541652 msgid "PrintScreen"
13551653 msgstr ""
13561654
1357 #: ../../../src/SDLInputState.cpp:599
1655 #: ../../../src/SDLInputState.cpp:690
13581656 msgid "Right Alt"
13591657 msgstr ""
13601658
1361 #: ../../../src/SDLInputState.cpp:600
1659 #: ../../../src/SDLInputState.cpp:691
13621660 msgid "Right Ctrl"
13631661 msgstr ""
13641662
1365 #: ../../../src/SDLInputState.cpp:601
1663 #: ../../../src/SDLInputState.cpp:692
13661664 msgid "Return"
13671665 msgstr ""
13681666
1369 #: ../../../src/SDLInputState.cpp:603
1667 #: ../../../src/SDLInputState.cpp:694
13701668 msgid "Right Shift"
13711669 msgstr ""
13721670
1373 #: ../../../src/SDLInputState.cpp:604
1671 #: ../../../src/SDLInputState.cpp:695
13741672 msgid "ScrollLock"
13751673 msgstr ""
13761674
1377 #: ../../../src/SDLInputState.cpp:605
1675 #: ../../../src/SDLInputState.cpp:696
13781676 msgid "Space"
13791677 msgstr ""
13801678
1381 #: ../../../src/SDLInputState.cpp:606
1382 msgid "Tab"
1383 msgstr ""
1384
1385 #: ../../../src/SDLInputState.cpp:620
1679 #: ../../../src/SDLInputState.cpp:710
1680 #, c-format
1681 msgid "M%d"
1682 msgstr ""
1683
1684 #: ../../../src/SDLInputState.cpp:716
13861685 #, c-format
13871686 msgid "Mouse %d"
13881687 msgstr ""
13891688
1390 #: ../../../src/SDLInputState.cpp:628
1689 #: ../../../src/SDLInputState.cpp:726
1690 #, c-format
1691 msgid "JX%d-"
1692 msgstr ""
1693
1694 #: ../../../src/SDLInputState.cpp:728
13911695 #, c-format
13921696 msgid "Axis %d -"
13931697 msgstr ""
13941698
1395 #: ../../../src/SDLInputState.cpp:630
1699 #: ../../../src/SDLInputState.cpp:732
1700 #, c-format
1701 msgid "JX%d+"
1702 msgstr ""
1703
1704 #: ../../../src/SDLInputState.cpp:734
13961705 #, c-format
13971706 msgid "Axis %d +"
13981707 msgstr ""
13991708
1400 #: ../../../src/SDLInputState.cpp:633
1709 #: ../../../src/SDLInputState.cpp:739
1710 #, c-format
1711 msgid "JB%d"
1712 msgstr ""
1713
1714 #: ../../../src/SDLInputState.cpp:741
14011715 #, c-format
14021716 msgid "Button %d"
14031717 msgstr ""
14041718
1405 #: ../../../src/SDLInputState.cpp:637
1406 msgid "(none)"
1407 msgstr ""
1408
1409 #: ../../../src/SDLInputState.cpp:677
1719 #: ../../../src/SDLInputState.cpp:787
14101720 msgid "Touch control D-Pad"
14111721 msgstr ""
14121722
1413 #: ../../../src/SDLInputState.cpp:701
1723 #: ../../../src/SDLInputState.cpp:810
14141724 msgid "Touch control buttons"
14151725 msgstr ""
14161726
1417 #: ../../../src/SDLInputState.cpp:716
1727 #: ../../../src/SDLInputState.cpp:824
14181728 msgid "Tap"
14191729 msgstr ""
14201730
1421 #: ../../../src/SDLInputState.cpp:760 ../../../src/SDLInputState.cpp:764
1422 #: ../../../src/SDLInputState.cpp:768
1731 #: ../../../src/SDLInputState.cpp:876 ../../../src/SDLInputState.cpp:878
1732 #, c-format
1733 msgid "Can not bind: %s"
1734 msgstr ""
1735
1736 #: ../../../src/SDLInputState.cpp:890 ../../../src/SDLInputState.cpp:894
1737 #: ../../../src/SDLInputState.cpp:898
14231738 #, c-format
14241739 msgid "'%s' is no longer bound to:"
14251740 msgstr ""
15781893 msgid "Base MP"
15791894 msgstr ""
15801895
1581 #: ../../../src/Utils.cpp:346
1896 #: ../../../src/Utils.cpp:365
15821897 msgid "k"
15831898 msgstr ""
15841899
1585 #: ../../../src/Utils.cpp:580
1900 #: ../../../src/Utils.cpp:635
15861901 #, c-format
15871902 msgid "%s second"
15881903 msgstr ""
15891904
1590 #: ../../../src/Utils.cpp:583
1905 #: ../../../src/Utils.cpp:638
15911906 #, c-format
15921907 msgid "%s seconds"
15931908 msgstr ""
44 #
55 # Translators:
66 # Justin Jacobs <jajdorkster@gmail.com>, 2018
7 # Rui <xymarior@yandex.com>, 2018
7 # Rui <xymarior@yandex.com>, 2019
88 #
99 #, fuzzy
1010 msgid ""
1111 msgstr ""
1212 "Project-Id-Version: PACKAGE VERSION\n"
1313 "Report-Msgid-Bugs-To: \n"
14 "POT-Creation-Date: 2018-11-17 21:50-0500\n"
14 "POT-Creation-Date: 2021-05-23 20:34-0400\n"
1515 "PO-Revision-Date: 2018-03-28 19:16+0000\n"
16 "Last-Translator: Rui <xymarior@yandex.com>, 2018\n"
16 "Last-Translator: Rui <xymarior@yandex.com>, 2019\n"
1717 "Language-Team: Portuguese (https://www.transifex.com/flareorg/teams/84925/pt/)\n"
1818 "MIME-Version: 1.0\n"
1919 "Content-Type: text/plain; charset=UTF-8\n"
2121 "Language: pt\n"
2222 "Plural-Forms: nplurals=2; plural=(n != 1);\n"
2323
24 #: ../../../src/Avatar.cpp:367
24 #: ../../../src/Avatar.cpp:391
25 msgid "Your health is low!"
26 msgstr "Tens pouca vida!"
27
28 #: ../../../src/Avatar.cpp:421
2529 #, c-format
2630 msgid "Congratulations, you have reached level %d!"
2731 msgstr "Parabéns, alcançaste o nível %d!"
2832
29 #: ../../../src/Avatar.cpp:369
30 msgid "You may increase one attribute through the Character Menu."
31 msgstr "Podes aumentar um atributo através do Menu de Personagem."
32
33 #: ../../../src/Avatar.cpp:583
34 msgid "You are defeated. Game over! ${INPUT_CONTINUE} to exit to Title."
35 msgstr ""
36 "Perdeste. Fim do jogo! Pressiona a tecla ${INPUT_CONTINUE} para sair para o "
37 "ecrã principal."
38
39 #: ../../../src/Avatar.cpp:589
40 msgid "You are defeated. ${INPUT_CONTINUE} to continue."
41 msgstr "Perdeste. Pressiona a tecla ${INPUT_CONTINUE} para continuar."
42
43 #: ../../../src/Avatar.cpp:839
33 #: ../../../src/Avatar.cpp:423
34 msgid "You may increase one or more attributes through the Character Menu."
35 msgstr "Podes aumentar um ou mais atributos através do menu Personagem."
36
37 #: ../../../src/Avatar.cpp:427
38 msgid "You may unlock one or more abilities through the Powers Menu."
39 msgstr "Podes desbloquear uma ou mais habilidades através do menu Poderes."
40
41 #: ../../../src/Avatar.cpp:689
42 msgid "You are defeated."
43 msgstr ""
44
45 #: ../../../src/Avatar.cpp:935
4446 msgid "Transformation expired. You have been moved back to a safe place."
4547 msgstr "A transformação expirou. Foste transferido para um local seguro."
4648
47 #: ../../../src/CampaignManager.cpp:153
49 #: ../../../src/CampaignManager.cpp:152
4850 #, c-format
4951 msgid "%d %s removed."
5052 msgstr "%d %s removido(a)."
5153
52 #: ../../../src/CampaignManager.cpp:162
54 #: ../../../src/CampaignManager.cpp:171
55 #, c-format
56 msgid "%s x%d removed."
57 msgstr ""
58
59 #: ../../../src/CampaignManager.cpp:173
5360 #, c-format
5461 msgid "%s removed."
5562 msgstr "%s removido(a)."
5663
57 #: ../../../src/CampaignManager.cpp:175
64 #: ../../../src/CampaignManager.cpp:187
65 #, c-format
66 msgid "You receive %d %s."
67 msgstr "Recebes %d %s."
68
69 #: ../../../src/CampaignManager.cpp:191
70 #, c-format
71 msgid "You receive %s x%d."
72 msgstr "Recebes %s x%d."
73
74 #: ../../../src/CampaignManager.cpp:193
5875 #, c-format
5976 msgid "You receive %s."
6077 msgstr "Recebes %s."
6178
62 #: ../../../src/CampaignManager.cpp:177
63 #, c-format
64 msgid "You receive %s x%d."
65 msgstr "Recebes %s x%d."
66
67 #: ../../../src/CampaignManager.cpp:186
68 #, c-format
69 msgid "You receive %d %s."
70 msgstr "Recebes %d %s."
71
72 #: ../../../src/CampaignManager.cpp:195
79 #: ../../../src/CampaignManager.cpp:210
7380 #, c-format
7481 msgid "You receive %d XP."
7582 msgstr "Recebes %d XP."
7683
77 #: ../../../src/CampaignManager.cpp:201
84 #: ../../../src/CampaignManager.cpp:216
7885 msgid "HP restored."
7986 msgstr "PV restaurado."
8087
81 #: ../../../src/CampaignManager.cpp:205
88 #: ../../../src/CampaignManager.cpp:220
8289 msgid "MP restored."
8390 msgstr "Mana restaurada."
8491
85 #: ../../../src/CampaignManager.cpp:210
92 #: ../../../src/CampaignManager.cpp:225
8693 msgid "HP and MP restored."
8794 msgstr "PV e Mana restaurados."
8895
89 #: ../../../src/CampaignManager.cpp:214
96 #: ../../../src/CampaignManager.cpp:229
9097 msgid "Negative effects removed."
9198 msgstr "Efeitos negativos removidos."
9299
93 #: ../../../src/CampaignManager.cpp:220
100 #: ../../../src/CampaignManager.cpp:235
94101 msgid "HP and MP restored, negative effects removed"
95102 msgstr "PV e Mana restaurados, efeitos negativos removidos."
96103
114121 "\n"
115122 "O renderizador padrão que é geralmente mais rápido que o rederizador por software SDL."
116123
117 #: ../../../src/EngineSettings.cpp:561
124 #: ../../../src/EngineSettings.cpp:586
118125 msgid "Adventurer"
119126 msgstr "Aventureiro"
120127
121 #: ../../../src/Entity.cpp:511
128 #: ../../../src/Entity.cpp:527
122129 msgid "miss"
123130 msgstr "errou"
124131
125 #: ../../../src/Entity.cpp:548 ../../../src/PowerManager.cpp:1152
126 #: ../../../src/StatBlock.cpp:805 ../../../src/StatBlock.cpp:811
132 #: ../../../src/Entity.cpp:565 ../../../src/PowerManager.cpp:1224
133 #: ../../../src/StatBlock.cpp:917 ../../../src/StatBlock.cpp:923
127134 #, c-format
128135 msgid "+%d HP"
129136 msgstr "+%d PV"
130137
131 #: ../../../src/Entity.cpp:555 ../../../src/StatBlock.cpp:816
132 #: ../../../src/StatBlock.cpp:822
138 #: ../../../src/Entity.cpp:572 ../../../src/StatBlock.cpp:928
139 #: ../../../src/StatBlock.cpp:934
133140 #, c-format
134141 msgid "+%d MP"
135142 msgstr "+%d Mana"
136143
137 #: ../../../src/EventManager.cpp:738
144 #: ../../../src/EventManager.cpp:792
138145 msgid "Unknown destination"
139146 msgstr "Destino desconhecido"
140147
141 #: ../../../src/GameStateConfigBase.cpp:89
142 #: ../../../src/GameStateConfigBase.cpp:110
148 #: ../../../src/GameState.cpp:37 ../../../src/GameState.cpp:58
149 msgid "Loading..."
150 msgstr "A carregar..."
151
152 #: ../../../src/GameStateLoad.cpp:90 ../../../src/GameStateLoad.cpp:103
153 msgid "Delete Save"
154 msgstr "Eliminar Jogo"
155
156 #: ../../../src/GameStateLoad.cpp:90
157 msgid "Delete this save?"
158 msgstr "Eliminar este jogo gravado?"
159
160 #: ../../../src/GameStateLoad.cpp:92
161 msgid "Exit to Title"
162 msgstr "Sair para o Título"
163
164 #: ../../../src/GameStateLoad.cpp:95
165 msgid "New Game"
166 msgstr "Novo Jogo"
167
168 #: ../../../src/GameStateLoad.cpp:99 ../../../src/GameStateLoad.cpp:607
169 msgid "Choose a Slot"
170 msgstr "Escolher Compartimento"
171
172 #: ../../../src/GameStateLoad.cpp:580 ../../../src/GameStateLoad.cpp:601
173 msgid "Enable a story mod to continue"
174 msgstr "Ativa um mod de campanha para continuar"
175
176 #: ../../../src/GameStateLoad.cpp:596
177 msgid "Load Game"
178 msgstr "Carregar Jogo"
179
180 #: ../../../src/GameStateLoad.cpp:705
181 msgid "Entering game world..."
182 msgstr "A entrar no mundo do jogo..."
183
184 #: ../../../src/GameStateLoad.cpp:708
185 msgid "Loading saved game..."
186 msgstr "A carregar o jogo gravado..."
187
188 #: ../../../src/GameStateLoad.cpp:741
189 msgid "Invalid save"
190 msgstr "Gravação inválida"
191
192 #: ../../../src/GameStateLoad.cpp:765 ../../../src/ItemManager.cpp:745
193 #: ../../../src/MenuPowers.cpp:860 ../../../src/MenuPowers.cpp:1219
194 #: ../../../src/MenuPowers.cpp:1631
195 #, c-format
196 msgid "Level %d"
197 msgstr "Nível %d"
198
199 #: ../../../src/GameStateNew.cpp:66 ../../../src/InputState.cpp:416
200 #: ../../../src/MenuConfig.cpp:246
201 msgid "Cancel"
202 msgstr "Cancelar"
203
204 #: ../../../src/GameStateNew.cpp:69
205 msgid "Create"
206 msgstr "Criar"
207
208 #: ../../../src/GameStateNew.cpp:77
209 msgid "Randomize"
210 msgstr "Aleatório"
211
212 #: ../../../src/GameStateNew.cpp:93
213 msgid "Choose a Portrait"
214 msgstr "Escolhe um Retrato"
215
216 #: ../../../src/GameStateNew.cpp:97
217 msgid "Choose a Name"
218 msgstr "Escolhe um Nome"
219
220 #: ../../../src/GameStateNew.cpp:101
221 msgid "Permadeath?"
222 msgstr "Morte Permanente?"
223
224 #: ../../../src/GameStateNew.cpp:105
225 msgid "Choose a Class"
226 msgstr "Escolhe uma Classe"
227
228 #: ../../../src/GameStateTitle.cpp:107
229 msgid "Play Game"
230 msgstr "Jogar"
231
232 #: ../../../src/GameStateTitle.cpp:110
233 msgid "Enable a core mod to continue"
234 msgstr "Ativa o mod do núcleo para continuar"
235
236 #: ../../../src/GameStateTitle.cpp:114 ../../../src/MenuMiniMap.cpp:152
237 msgid "Configuration"
238 msgstr "Configuração"
239
240 #: ../../../src/GameStateTitle.cpp:117
241 msgid "Credits"
242 msgstr "Créditos"
243
244 #: ../../../src/GameStateTitle.cpp:120
245 msgid "Exit Game"
246 msgstr "Sair do Jogo"
247
248 #: ../../../src/InputState.cpp:417
249 msgid "Accept"
250 msgstr "Aceitar"
251
252 #: ../../../src/InputState.cpp:418 ../../../src/MenuMovementType.cpp:123
253 #: ../../../src/MenuMovementType.cpp:132 ../../../src/SDLInputState.cpp:668
254 #: ../../../src/SDLInputState.cpp:698
255 msgid "Up"
256 msgstr "Cima"
257
258 #: ../../../src/InputState.cpp:419 ../../../src/MenuMovementType.cpp:125
259 #: ../../../src/MenuMovementType.cpp:134 ../../../src/SDLInputState.cpp:646
260 #: ../../../src/SDLInputState.cpp:676
261 msgid "Down"
262 msgstr "Baixo"
263
264 #: ../../../src/InputState.cpp:420 ../../../src/MenuMovementType.cpp:124
265 #: ../../../src/MenuMovementType.cpp:133 ../../../src/SDLInputState.cpp:653
266 #: ../../../src/SDLInputState.cpp:683
267 msgid "Left"
268 msgstr "Esquerda"
269
270 #: ../../../src/InputState.cpp:421 ../../../src/MenuMovementType.cpp:126
271 #: ../../../src/MenuMovementType.cpp:135 ../../../src/SDLInputState.cpp:663
272 #: ../../../src/SDLInputState.cpp:693
273 msgid "Right"
274 msgstr "Direita"
275
276 #: ../../../src/InputState.cpp:422
277 msgid "Bar1"
278 msgstr "Barra1"
279
280 #: ../../../src/InputState.cpp:423
281 msgid "Bar2"
282 msgstr "Barra2"
283
284 #: ../../../src/InputState.cpp:424
285 msgid "Bar3"
286 msgstr "Barra3"
287
288 #: ../../../src/InputState.cpp:425
289 msgid "Bar4"
290 msgstr "Barra4"
291
292 #: ../../../src/InputState.cpp:426
293 msgid "Bar5"
294 msgstr "Barra5"
295
296 #: ../../../src/InputState.cpp:427
297 msgid "Bar6"
298 msgstr "Barra6"
299
300 #: ../../../src/InputState.cpp:428
301 msgid "Bar7"
302 msgstr "Barra7"
303
304 #: ../../../src/InputState.cpp:429
305 msgid "Bar8"
306 msgstr "Barra8"
307
308 #: ../../../src/InputState.cpp:430
309 msgid "Bar9"
310 msgstr "Barra9"
311
312 #: ../../../src/InputState.cpp:431
313 msgid "Bar0"
314 msgstr "Barra0"
315
316 #: ../../../src/InputState.cpp:432 ../../../src/MenuActionBar.cpp:84
317 #: ../../../src/MenuCharacter.cpp:54
318 msgid "Character"
319 msgstr "Personagem"
320
321 #: ../../../src/InputState.cpp:433 ../../../src/MenuActionBar.cpp:85
322 #: ../../../src/MenuInventory.cpp:130 ../../../src/MenuVendor.cpp:59
323 msgid "Inventory"
324 msgstr "Inventário"
325
326 #: ../../../src/InputState.cpp:434 ../../../src/MenuActionBar.cpp:86
327 #: ../../../src/MenuPowers.cpp:158
328 msgid "Powers"
329 msgstr "Poderes"
330
331 #: ../../../src/InputState.cpp:435 ../../../src/MenuActionBar.cpp:87
332 #: ../../../src/MenuLog.cpp:72
333 msgid "Log"
334 msgstr "Diário"
335
336 #: ../../../src/InputState.cpp:436
337 msgid "Main1"
338 msgstr "Principal1"
339
340 #: ../../../src/InputState.cpp:437
341 msgid "Main2"
342 msgstr "Principal2"
343
344 #: ../../../src/InputState.cpp:438
345 msgid "Ctrl"
346 msgstr "Ctrl"
347
348 #: ../../../src/InputState.cpp:439
349 msgid "Shift"
350 msgstr "Shift"
351
352 #: ../../../src/InputState.cpp:440
353 msgid "Alt"
354 msgstr "Alt"
355
356 #: ../../../src/InputState.cpp:441 ../../../src/SDLInputState.cpp:675
357 msgid "Delete"
358 msgstr "Remover"
359
360 #: ../../../src/InputState.cpp:442
361 msgid "ActionBar Accept"
362 msgstr "Barra de Ação Aceitar"
363
364 #: ../../../src/InputState.cpp:443
365 msgid "ActionBar Left"
366 msgstr "Barra de Ação Esquerda"
367
368 #: ../../../src/InputState.cpp:444
369 msgid "ActionBar Right"
370 msgstr "Barra de Ação Direita"
371
372 #: ../../../src/InputState.cpp:445
373 msgid "ActionBar Use"
374 msgstr "Barra de Ação Usar"
375
376 #: ../../../src/InputState.cpp:446
377 msgid "Developer Menu"
378 msgstr "Menu Programador"
379
380 #: ../../../src/InputState.cpp:448
381 msgid "Left Mouse"
382 msgstr "Botão Esq. Rato"
383
384 #: ../../../src/InputState.cpp:449
385 msgid "Middle Mouse"
386 msgstr "Botão Meio Rato"
387
388 #: ../../../src/InputState.cpp:450
389 msgid "Right Mouse"
390 msgstr "Botão Dir. Rato"
391
392 #: ../../../src/InputState.cpp:451
393 msgid "Wheel Up"
394 msgstr "Roda p/Cima"
395
396 #: ../../../src/InputState.cpp:452
397 msgid "Wheel Down"
398 msgstr "Roda p/Baixo"
399
400 #: ../../../src/InputState.cpp:453
401 msgid "Mouse X1"
402 msgstr "Rato X1"
403
404 #: ../../../src/InputState.cpp:454
405 msgid "Mouse X2"
406 msgstr "Rato X2"
407
408 #: ../../../src/ItemManager.cpp:475
409 msgid "Unknown Item"
410 msgstr "Item Desconhecido"
411
412 #: ../../../src/ItemManager.cpp:646 ../../../src/MenuPowers.cpp:959
413 #, c-format
414 msgid "%d%% Speed"
415 msgstr "%d%% Velocidade"
416
417 #: ../../../src/ItemManager.cpp:650 ../../../src/MenuPowers.cpp:962
418 #, c-format
419 msgid "%d%% Attack Speed"
420 msgstr "%d%% Velocidade de Ataque"
421
422 #: ../../../src/ItemManager.cpp:672 ../../../src/MenuCharacter.cpp:352
423 #: ../../../src/MenuPowers.cpp:931
424 #, c-format
425 msgid "Resistance (%s)"
426 msgstr "Resistência (%s)"
427
428 #: ../../../src/ItemManager.cpp:682
429 #, c-format
430 msgid "Requires %s"
431 msgstr "Necessita de %s"
432
433 #: ../../../src/ItemManager.cpp:731
434 msgid "Quest Item"
435 msgstr "Item de Missão"
436
437 #: ../../../src/ItemManager.cpp:758
438 #, c-format
439 msgid "Quality: %s"
440 msgstr "Qualidade: %s"
441
442 #: ../../../src/ItemManager.cpp:783
443 #, c-format
444 msgid "Absorb: %d-%d"
445 msgstr "Absorve: %d-%d"
446
447 #: ../../../src/ItemManager.cpp:785
448 #, c-format
449 msgid "Absorb: %d"
450 msgstr "Absorve: %d"
451
452 #: ../../../src/ItemManager.cpp:825 ../../../src/MenuPowers.cpp:1206
453 #: ../../../src/MenuPowers.cpp:1209
454 #, c-format
455 msgid "Requires Level %d"
456 msgstr "Requer Nível %d"
457
458 #: ../../../src/ItemManager.cpp:836 ../../../src/MenuPowers.cpp:1198
459 #: ../../../src/MenuPowers.cpp:1200
460 #, c-format
461 msgid "Requires %s %d"
462 msgstr "Necessita %s %d"
463
464 #: ../../../src/ItemManager.cpp:847
465 #, c-format
466 msgid "Requires Class: %s"
467 msgstr "Necessita da Classe: %s"
468
469 #: ../../../src/ItemManager.cpp:863 ../../../src/ItemManager.cpp:875
470 #, c-format
471 msgid "Buy Price: %d %s"
472 msgstr "Preço de Compra: %d %s"
473
474 #: ../../../src/ItemManager.cpp:865 ../../../src/ItemManager.cpp:877
475 #, c-format
476 msgid "Buy Price: %d %s each"
477 msgstr "Preço de Compra: %d %s cada"
478
479 #: ../../../src/ItemManager.cpp:885
480 #, c-format
481 msgid "Sell Price: %d %s"
482 msgstr "Preço de Venda: %d %s"
483
484 #: ../../../src/ItemManager.cpp:887
485 #, c-format
486 msgid "Sell Price: %d %s each"
487 msgstr "Preço de Venda: %d %s cada"
488
489 #: ../../../src/ItemManager.cpp:896
490 msgid "Set:"
491 msgstr "Conjunto:"
492
493 #: ../../../src/ItemManager.cpp:903
494 #, c-format
495 msgid "%d items:"
496 msgstr "%d itens:"
497
498 #: ../../../src/ItemManager.cpp:915
499 #, c-format
500 msgid "Press [%s] to read"
501 msgstr "Pressionar [%s] para ler"
502
503 #: ../../../src/ItemManager.cpp:918
504 #, c-format
505 msgid "Press [%s] to use"
506 msgstr "Pressionar [%s] para usar"
507
508 #: ../../../src/MenuActionBar.cpp:239 ../../../src/MenuActionBar.cpp:246
509 #: ../../../src/MenuActionBar.cpp:249 ../../../src/MenuActionBar.cpp:255
510 #, c-format
511 msgid "Hotkey: %s"
512 msgstr "Atalho: %s"
513
514 #: ../../../src/MenuActionBar.cpp:621
515 msgid "Not enough MP."
516 msgstr "Sem mana suficiente."
517
518 #: ../../../src/MenuActiveEffects.cpp:124
519 #, c-format
520 msgid "x%d"
521 msgstr "x%d"
522
523 #: ../../../src/MenuActiveEffects.cpp:219
524 msgid "Remaining:"
525 msgstr "Restante:"
526
527 #: ../../../src/MenuActiveEffects.cpp:225
528 #, c-format
529 msgid "x%d stacks"
530 msgstr "x%d pilhas"
531
532 #: ../../../src/MenuCharacter.cpp:73 ../../../src/MenuCharacter.cpp:78
533 msgid "Name"
534 msgstr "Nome"
535
536 #: ../../../src/MenuCharacter.cpp:74 ../../../src/MenuCharacter.cpp:79
537 msgid "Level"
538 msgstr "Nível"
539
540 #: ../../../src/MenuCharacter.cpp:309
541 #, c-format
542 msgid "Available stat points: %d"
543 msgstr ""
544
545 #: ../../../src/MenuCharacter.cpp:353
546 #, c-format
547 msgid "Reduces the damage taken from \"%s\" elemental attacks."
548 msgstr "Reduz o dano recebido de \"%s\" ataques elementais."
549
550 #: ../../../src/MenuCharacter.cpp:363 ../../../src/MenuManager.cpp:301
551 #, c-format
552 msgid "XP: %d"
553 msgstr "EXP: %d"
554
555 #: ../../../src/MenuCharacter.cpp:365
556 #, c-format
557 msgid "Next: %d"
558 msgstr "Próximo: %d"
559
560 #: ../../../src/MenuCharacter.cpp:371
561 #, c-format
562 msgid "base (%d), bonus (%d)"
563 msgstr "base (%d), bónus (%d)"
564
565 #: ../../../src/MenuCharacter.cpp:379 ../../../src/MenuCharacter.cpp:393
566 msgid "Related stats:"
567 msgstr "Estatísticas relacionadas:"
568
569 #: ../../../src/MenuCharacter.cpp:419 ../../../src/MenuCharacter.cpp:443
570 #, c-format
571 msgid "Each level grants %d."
572 msgstr "Cada nível garante %d."
573
574 #: ../../../src/MenuCharacter.cpp:423 ../../../src/MenuCharacter.cpp:447
575 #, c-format
576 msgid "Each point of %s grants %d."
577 msgstr "Cada ponto de %s dá %d."
578
579 #: ../../../src/MenuConfig.cpp:122 ../../../src/MenuConfig.cpp:1171
580 msgid "Clear"
581 msgstr "Limpar"
582
583 #: ../../../src/MenuConfig.cpp:122 ../../../src/MenuConfig.cpp:1169
584 msgid "Assign:"
585 msgstr "Atribuir:"
586
587 #: ../../../src/MenuConfig.cpp:123 ../../../src/MenuConfig.cpp:245
143588 msgid "Defaults"
144589 msgstr "Repor"
145590
146 #: ../../../src/GameStateConfigBase.cpp:89
591 #: ../../../src/MenuConfig.cpp:123
147592 msgid "Reset ALL settings?"
148593 msgstr "Repor TODAS as configurações de origem?"
149594
150 #: ../../../src/GameStateConfigBase.cpp:109 ../../../src/MenuNumPicker.cpp:49
595 #: ../../../src/MenuConfig.cpp:244 ../../../src/MenuNumPicker.cpp:49
151596 msgid "OK"
152597 msgstr "OK"
153598
154 #: ../../../src/GameStateConfigBase.cpp:111 ../../../src/GameStateNew.cpp:65
155 #: ../../../src/InputState.cpp:401
156 msgid "Cancel"
157 msgstr "Cancelar"
158
159 #: ../../../src/GameStateConfigBase.cpp:160
160 #: ../../../src/GameStateConfigDesktop.cpp:130
599 #: ../../../src/MenuConfig.cpp:248 ../../../src/MenuGameOver.cpp:72
600 msgid "Continue"
601 msgstr "Continuar"
602
603 #: ../../../src/MenuConfig.cpp:250
604 msgid "Save Game"
605 msgstr ""
606
607 #: ../../../src/MenuConfig.cpp:293
608 msgid "Default"
609 msgstr "Padrão"
610
611 #: ../../../src/MenuConfig.cpp:293
612 msgid ""
613 "Show all loot tooltips, except for those that would be obscured by the "
614 "player or an enemy. Temporarily show all loot tooltips with 'Alt'."
615 msgstr ""
616 "Mostrar todas as legendas de pilhagem, exceto aquelas que sejam ocultadas "
617 "pelo jogador ou por um inimigo. Pode-se ver todas as legendas de pilhagens "
618 "temporariamente com a tecla 'Alt'."
619
620 #: ../../../src/MenuConfig.cpp:294
621 msgid "Show all"
622 msgstr "Mostrar tudo"
623
624 #: ../../../src/MenuConfig.cpp:294
625 msgid ""
626 "Always show loot tooltips. Temporarily hide all loot tooltips with 'Alt'."
627 msgstr ""
628 "Mostrar sempre as legendas de pilhagens. Pode-se ocultar todas as legendas "
629 "de pilhagens temporariamente com a tecla 'Alt'."
630
631 #: ../../../src/MenuConfig.cpp:295 ../../../src/MenuConfig.cpp:300
632 msgid "Hidden"
633 msgstr "Oculto"
634
635 #: ../../../src/MenuConfig.cpp:295
636 msgid ""
637 "Always hide loot tooltips, except for when a piece of loot is hovered with "
638 "the mouse cursor. Temporarily show all loot tooltips with 'Alt'."
639 msgstr ""
640 "Mostrar sempre as legendas das pilhagens, exceto quando o cursor passar por "
641 "cima delas. Pode-se ver todas as legendas de pilhagens temporariamente com a"
642 " tecla 'Alt'."
643
644 #: ../../../src/MenuConfig.cpp:298
645 msgid "Visible"
646 msgstr "Visível"
647
648 #: ../../../src/MenuConfig.cpp:299
649 msgid "Visible (2x zoom)"
650 msgstr "Visível (2x zoom)"
651
652 #: ../../../src/MenuConfig.cpp:303
653 msgid ""
654 "Controls the type of warning to be activated when the player is below the "
655 "low health threshold."
656 msgstr ""
657 "Controla o tipo de aviso a ser ativado quando o jogador tem a vida abaixo do"
658 " limiar."
659
660 #: ../../../src/MenuConfig.cpp:304
661 msgid "- Display a message"
662 msgstr "- Mostrar uma mensagem"
663
664 #: ../../../src/MenuConfig.cpp:305
665 msgid "- Play a sound"
666 msgstr "- Reproduzir um som"
667
668 #: ../../../src/MenuConfig.cpp:306
669 msgid "- Change the cursor"
670 msgstr "- Alterar o cursor"
671
672 #: ../../../src/MenuConfig.cpp:308
673 msgid "Disabled"
674 msgstr "Desativado"
675
676 #: ../../../src/MenuConfig.cpp:309
677 msgid "All"
678 msgstr "Tudo"
679
680 #: ../../../src/MenuConfig.cpp:310
681 msgid "Message & Cursor"
682 msgstr "Mensagem e cursor"
683
684 #: ../../../src/MenuConfig.cpp:311
685 msgid "Message & Sound"
686 msgstr "Mensagem e som"
687
688 #: ../../../src/MenuConfig.cpp:312
689 msgid "Sound & Cursor"
690 msgstr "Som e cursor"
691
692 #: ../../../src/MenuConfig.cpp:313
693 msgid "Message"
694 msgstr "Mensagem"
695
696 #: ../../../src/MenuConfig.cpp:314
697 msgid "Cursor"
698 msgstr "Cursor"
699
700 #: ../../../src/MenuConfig.cpp:315
701 msgid "Sound"
702 msgstr "Som"
703
704 #: ../../../src/MenuConfig.cpp:321
705 msgid ""
706 "When the player's health drops below the given threshold, the low health "
707 "notifications are triggered if one or more of them is enabled."
708 msgstr ""
709 "Quando a vida do jogador desce abaixo do limiar definido, são ativadas as "
710 "notificações de pouca vida se uma ou mais notificações estiverem ativadas."
711
712 #: ../../../src/MenuConfig.cpp:334 ../../../src/MenuConfig.cpp:1587
713 #: ../../../src/MenuGameOver.cpp:116
714 msgid "Exit"
715 msgstr "Sair"
716
717 #: ../../../src/MenuConfig.cpp:335
718 msgid "Video"
719 msgstr "Vídeo"
720
721 #: ../../../src/MenuConfig.cpp:336
161722 msgid "Audio"
162723 msgstr "Áudio"
163724
164 #: ../../../src/GameStateConfigBase.cpp:161
165 #: ../../../src/GameStateConfigDesktop.cpp:131
725 #: ../../../src/MenuConfig.cpp:337
166726 msgid "Interface"
167727 msgstr "Interface"
168728
169 #: ../../../src/GameStateConfigBase.cpp:162
170 #: ../../../src/GameStateConfigDesktop.cpp:134
729 #: ../../../src/MenuConfig.cpp:338
730 msgid "Input"
731 msgstr "Entrada"
732
733 #: ../../../src/MenuConfig.cpp:339
734 msgid "Keybindings"
735 msgstr "Teclas de atalho"
736
737 #: ../../../src/MenuConfig.cpp:340
171738 msgid "Mods"
172739 msgstr "Mods"
173740
174 #: ../../../src/GameStateConfigBase.cpp:249 ../../../src/MenuExit.cpp:72
741 #: ../../../src/MenuConfig.cpp:352
742 msgid "Paused"
743 msgstr "Pausado"
744
745 #: ../../../src/MenuConfig.cpp:355
746 msgid "Time Played"
747 msgstr "Tempo Jogado"
748
749 #: ../../../src/MenuConfig.cpp:361
750 msgid "Renderer"
751 msgstr "Renderizador"
752
753 #: ../../../src/MenuConfig.cpp:362
754 msgid "Full Screen Mode"
755 msgstr "Modo ecrã cheio"
756
757 #: ../../../src/MenuConfig.cpp:363
758 msgid "Hardware surfaces"
759 msgstr "Superfícies de hardware"
760
761 #: ../../../src/MenuConfig.cpp:364
762 msgid "V-Sync"
763 msgstr "Sincronização vertical"
764
765 #: ../../../src/MenuConfig.cpp:365
766 msgid "Texture Filtering"
767 msgstr "Filtro de textura"
768
769 #: ../../../src/MenuConfig.cpp:366
770 msgid "DPI scaling"
771 msgstr "Escalonamento por DPI"
772
773 #: ../../../src/MenuConfig.cpp:367
774 msgid "Parallax Layers"
775 msgstr "Camadas de Paralaxe"
776
777 #: ../../../src/MenuConfig.cpp:368
778 msgid "Allow changing gamma"
779 msgstr "Permitir a mudança de gama"
780
781 #: ../../../src/MenuConfig.cpp:369
782 msgid "Gamma"
783 msgstr "Gama"
784
785 #: ../../../src/MenuConfig.cpp:371
786 msgid "Sound Volume"
787 msgstr "Volume do som"
788
789 #: ../../../src/MenuConfig.cpp:372
175790 msgid "Music Volume"
176791 msgstr "Volume da música"
177792
178 #: ../../../src/GameStateConfigBase.cpp:253 ../../../src/MenuExit.cpp:77
179 msgid "Sound Volume"
180 msgstr "Volume do som"
181
182 #: ../../../src/GameStateConfigBase.cpp:257
793 #: ../../../src/MenuConfig.cpp:374
183794 msgid "Language"
184795 msgstr "Idioma"
185796
186 #: ../../../src/GameStateConfigBase.cpp:266
797 #: ../../../src/MenuConfig.cpp:375
187798 msgid "Show FPS"
188799 msgstr "Mostrar FPS"
189800
190 #: ../../../src/GameStateConfigBase.cpp:270
801 #: ../../../src/MenuConfig.cpp:376
802 msgid "Hardware mouse cursor"
803 msgstr "Renderizar cursor do rato por hardware"
804
805 #: ../../../src/MenuConfig.cpp:377
191806 msgid "Colorblind Mode"
192807 msgstr "Modo daltónico"
193808
194 #: ../../../src/GameStateConfigBase.cpp:274
195 msgid "Hardware mouse cursor"
196 msgstr "Renderizar cursor do rato por hardware"
197
198 #: ../../../src/GameStateConfigBase.cpp:278
809 #: ../../../src/MenuConfig.cpp:378
199810 msgid "Developer Mode"
200811 msgstr "Modo programador"
201812
202 #: ../../../src/GameStateConfigBase.cpp:282
813 #: ../../../src/MenuConfig.cpp:379
203814 msgid "Subtitles"
204815 msgstr "Subtítulos"
205816
206 #: ../../../src/GameStateConfigBase.cpp:286
207 msgid "Active Mods"
208 msgstr "Mods ativos"
209
210 #: ../../../src/GameStateConfigBase.cpp:295
211 msgid "Available Mods"
212 msgstr "Mods disponíveis"
213
214 #: ../../../src/GameStateConfigBase.cpp:314
215 msgid "<< Disable"
216 msgstr "<< Desativar"
217
218 #: ../../../src/GameStateConfigBase.cpp:320
219 msgid "Enable >>"
220 msgstr "Ativar >>"
221
222 #: ../../../src/GameStateConfigBase.cpp:873
223 msgid "Version:"
224 msgstr "Versão:"
225
226 #: ../../../src/GameStateConfigBase.cpp:878
227 msgid "Game:"
228 msgstr "Jogo:"
229
230 #: ../../../src/GameStateConfigBase.cpp:883
231 msgid "Engine version:"
232 msgstr "Versão do motor:"
233
234 #: ../../../src/GameStateConfigBase.cpp:891
235 msgid "Requires mods:"
236 msgstr "Necessita dos mods:"
237
238 #: ../../../src/GameStateConfigDesktop.cpp:83
239 #: ../../../src/GameStateConfigDesktop.cpp:751
240 msgid "Clear"
241 msgstr "Limpar"
242
243 #: ../../../src/GameStateConfigDesktop.cpp:83
244 #: ../../../src/GameStateConfigDesktop.cpp:749
245 msgid "Assign:"
246 msgstr "Atribuir:"
247
248 #: ../../../src/GameStateConfigDesktop.cpp:128
249 msgid "Video"
250 msgstr "Vídeo"
251
252 #: ../../../src/GameStateConfigDesktop.cpp:132
253 msgid "Input"
254 msgstr "Entrada"
255
256 #: ../../../src/GameStateConfigDesktop.cpp:133
257 msgid "Keybindings"
258 msgstr "Teclas de atalho"
259
260 #: ../../../src/GameStateConfigDesktop.cpp:188
817 #: ../../../src/MenuConfig.cpp:380
818 msgid "Loot tooltip visibility"
819 msgstr "Visibilidade das legendas da pilhagem"
820
821 #: ../../../src/MenuConfig.cpp:381
822 msgid "Mini-map mode"
823 msgstr "Modo mini-mapa"
824
825 #: ../../../src/MenuConfig.cpp:382
826 msgid "Always show stat bar labels"
827 msgstr "Mostrar sempre etiquetas na barra de estatísticas"
828
829 #: ../../../src/MenuConfig.cpp:383
830 msgid "Allow stat bar auto-hiding"
831 msgstr "Permitir ocultar automaticamente a barra de estatísticas"
832
833 #: ../../../src/MenuConfig.cpp:384
834 msgid "Show combat text"
835 msgstr "Mostrar texto de combate"
836
837 #: ../../../src/MenuConfig.cpp:385
838 msgid "Automatically equip items"
839 msgstr "Equipar itens automaticamente"
840
841 #: ../../../src/MenuConfig.cpp:386
842 msgid "Show hidden entity markers"
843 msgstr "Mostrar marcadores de entidades ocultas"
844
845 #: ../../../src/MenuConfig.cpp:387
846 msgid "Low health notification"
847 msgstr "Notificação de pouca vida"
848
849 #: ../../../src/MenuConfig.cpp:388
850 msgid "Low health threshold"
851 msgstr "Limiar de pouca vida"
852
853 #: ../../../src/MenuConfig.cpp:389
854 msgid "Show item comparison tooltips"
855 msgstr ""
856
857 #: ../../../src/MenuConfig.cpp:392 ../../../src/MenuMovementType.cpp:94
858 #: ../../../src/MenuMovementType.cpp:131
859 msgid "Joystick"
860 msgstr "Joystick"
861
862 #: ../../../src/MenuConfig.cpp:393
863 msgid "Move hero using mouse"
864 msgstr "Mover herói utilizando o rato"
865
866 #: ../../../src/MenuConfig.cpp:394
867 msgid "Mouse aim"
868 msgstr "Fazer mira com o rato"
869
870 #: ../../../src/MenuConfig.cpp:395
871 msgid "Do not use mouse"
872 msgstr "Não usar rato"
873
874 #: ../../../src/MenuConfig.cpp:396
875 msgid "Swap mouse movement button"
876 msgstr "Trocar botão de movimento do rato"
877
878 #: ../../../src/MenuConfig.cpp:397
879 msgid "Attack with mouse movement"
880 msgstr "Atacar com o movimento do rato"
881
882 #: ../../../src/MenuConfig.cpp:398
883 msgid "Joystick Deadzone"
884 msgstr "Zona morta do joystick"
885
886 #: ../../../src/MenuConfig.cpp:408
887 #, c-format
888 msgid "Primary binding: %s"
889 msgstr "Atalho principal: %s"
890
891 #: ../../../src/MenuConfig.cpp:409
892 #, c-format
893 msgid "Alternate binding: %s"
894 msgstr "Atalho alternativo: %s"
895
896 #: ../../../src/MenuConfig.cpp:410
897 #, c-format
898 msgid "Joystick binding: %s"
899 msgstr "Atalho do joystick: %s"
900
901 #: ../../../src/MenuConfig.cpp:511
261902 msgid ""
262903 "Will try to store surfaces in video memory versus system memory. The effect "
263904 "this has on performance depends on the renderer."
265906 "Tentar armazenar as superfícies na memória de vídeo e não na memória do "
266907 "sistema. O efeito que terá no desempenho depende do renderizador."
267908
268 #: ../../../src/GameStateConfigDesktop.cpp:189
909 #: ../../../src/MenuConfig.cpp:512
269910 msgid ""
270911 "Prevents screen tearing. Disable if you experience \"stuttering\" in "
271912 "windowed mode or input lag."
273914 "Evita o desfazamento vertical no ecrã. Desativar se ocorrerem atrasos no "
274915 "modo janela ou atraso na imagem."
275916
276 #: ../../../src/GameStateConfigDesktop.cpp:190
917 #: ../../../src/MenuConfig.cpp:513
277918 msgid ""
278919 "When enabled, this uses the screen DPI in addition to the window dimensions "
279920 "to scale the rendering resolution. Otherwise, only the window dimensions are"
283924 "resolução de renderização. Caso contrário, serão utilizadas apenas as "
284925 "dimensões da janela."
285926
286 #: ../../../src/GameStateConfigDesktop.cpp:191
927 #: ../../../src/MenuConfig.cpp:514
287928 msgid ""
288929 "This enables parallax (non-tile) layers. Disabling this setting can improve "
289930 "performance in some cases."
291932 "Isto ativa as camadas paralaxe (não-telas). Desativar isto pode melhorar a "
292933 "performance em alguns casos."
293934
294 #: ../../../src/GameStateConfigDesktop.cpp:192
295 msgid "Experimental"
296 msgstr "Experimental"
297
298 #: ../../../src/GameStateConfigDesktop.cpp:193
299 msgid "For handheld devices"
300 msgstr "Para dispositivos portáteis"
301
302 #: ../../../src/GameStateConfigDesktop.cpp:211
303 msgid "Renderer"
304 msgstr "Renderizador"
305
306 #: ../../../src/GameStateConfigDesktop.cpp:227
307 msgid "Full Screen Mode"
308 msgstr "Modo ecrã cheio"
309
310 #: ../../../src/GameStateConfigDesktop.cpp:231
311 msgid "Move hero using mouse"
312 msgstr "Mover herói utilizando o rato"
313
314 #: ../../../src/GameStateConfigDesktop.cpp:235
315 msgid "Hardware surfaces"
316 msgstr "Superfícies de hardware"
317
318 #: ../../../src/GameStateConfigDesktop.cpp:239
319 msgid "V-Sync"
320 msgstr "Sincronização vertical"
321
322 #: ../../../src/GameStateConfigDesktop.cpp:243
323 msgid "Texture Filtering"
324 msgstr "Filtro de textura"
325
326 #: ../../../src/GameStateConfigDesktop.cpp:247
327 msgid "DPI scaling"
328 msgstr "Escalonamento por DPI"
329
330 #: ../../../src/GameStateConfigDesktop.cpp:251
331 msgid "Parallax Layers"
332 msgstr "Camadas de Paralaxe"
333
334 #: ../../../src/GameStateConfigDesktop.cpp:255
335 msgid "Allow changing gamma"
336 msgstr "Permitir a mudança de gama"
337
338 #: ../../../src/GameStateConfigDesktop.cpp:259
339 msgid "Gamma"
340 msgstr "Gama"
341
342 #: ../../../src/GameStateConfigDesktop.cpp:263
343 msgid "Use joystick"
344 msgstr "Usar joystick"
345
346 #: ../../../src/GameStateConfigDesktop.cpp:267
347 msgid "Joystick"
348 msgstr "Joystick"
349
350 #: ../../../src/GameStateConfigDesktop.cpp:283
351 msgid "Mouse aim"
352 msgstr "Fazer mira com o rato"
353
354 #: ../../../src/GameStateConfigDesktop.cpp:287
355 msgid "Do not use mouse"
356 msgstr "Não usar rato"
357
358 #: ../../../src/GameStateConfigDesktop.cpp:291
359 msgid "Joystick Deadzone"
360 msgstr "Zona morta do joystick"
361
362 #: ../../../src/GameState.cpp:37 ../../../src/GameState.cpp:58
363 msgid "Loading..."
364 msgstr "A carregar..."
365
366 #: ../../../src/GameStateLoad.cpp:88 ../../../src/GameStateLoad.cpp:101
367 msgid "Delete Save"
368 msgstr "Eliminar Jogo"
369
370 #: ../../../src/GameStateLoad.cpp:88
371 msgid "Delete this save?"
372 msgstr "Eliminar este jogo gravado?"
373
374 #: ../../../src/GameStateLoad.cpp:90
375 msgid "Exit to Title"
376 msgstr "Sair para o Título"
377
378 #: ../../../src/GameStateLoad.cpp:93
379 msgid "New Game"
380 msgstr "Novo Jogo"
381
382 #: ../../../src/GameStateLoad.cpp:97 ../../../src/GameStateLoad.cpp:600
383 msgid "Choose a Slot"
384 msgstr "Escolhe o Espaço"
385
386 #: ../../../src/GameStateLoad.cpp:573 ../../../src/GameStateLoad.cpp:594
387 msgid "Enable a story mod to continue"
388 msgstr "Ativa um mod de campanha para continuar"
389
390 #: ../../../src/GameStateLoad.cpp:589
391 msgid "Load Game"
392 msgstr "Carregar Jogo"
393
394 #: ../../../src/GameStateLoad.cpp:695
395 msgid "Entering game world..."
396 msgstr "A entrar no mundo do jogo..."
397
398 #: ../../../src/GameStateLoad.cpp:698
399 msgid "Loading saved game..."
400 msgstr "A carregar o jogo gravado..."
401
402 #: ../../../src/GameStateLoad.cpp:731
403 msgid "Invalid save"
404 msgstr "Gravação inválida"
405
406 #: ../../../src/GameStateLoad.cpp:755 ../../../src/ItemManager.cpp:747
407 #: ../../../src/MenuPowers.cpp:778 ../../../src/MenuPowers.cpp:1144
408 #: ../../../src/MenuPowers.cpp:1542
409 #, c-format
410 msgid "Level %d"
411 msgstr "Nível %d"
412
413 #: ../../../src/GameStateNew.cpp:68
414 msgid "Create"
415 msgstr "Criar"
416
417 #: ../../../src/GameStateNew.cpp:76
418 msgid "Randomize"
419 msgstr "Aleatório"
420
421 #: ../../../src/GameStateNew.cpp:92
422 msgid "Choose a Portrait"
423 msgstr "Escolhe um Retrato"
424
425 #: ../../../src/GameStateNew.cpp:96
426 msgid "Choose a Name"
427 msgstr "Escolhe um Nome"
428
429 #: ../../../src/GameStateNew.cpp:100
430 msgid "Permadeath?"
431 msgstr "Morte Permanente?"
432
433 #: ../../../src/GameStateNew.cpp:104
434 msgid "Choose a Class"
435 msgstr "Escolhe uma Classe"
436
437 #: ../../../src/GameStateTitle.cpp:108
438 msgid "Play Game"
439 msgstr "Jogar"
440
441 #: ../../../src/GameStateTitle.cpp:111
442 msgid "Enable a core mod to continue"
443 msgstr "Ativa o mod do núcleo para continuar"
444
445 #: ../../../src/GameStateTitle.cpp:115
446 msgid "Configuration"
447 msgstr "Configuração"
448
449 #: ../../../src/GameStateTitle.cpp:118
450 msgid "Credits"
451 msgstr "Créditos"
452
453 #: ../../../src/GameStateTitle.cpp:121
454 msgid "Exit Game"
455 msgstr "Sair do Jogo"
456
457 #: ../../../src/InputState.cpp:402
458 msgid "Accept"
459 msgstr "Aceitar"
460
461 #: ../../../src/InputState.cpp:403 ../../../src/SDLInputState.cpp:607
462 msgid "Up"
463 msgstr "Cima"
464
465 #: ../../../src/InputState.cpp:404 ../../../src/SDLInputState.cpp:585
466 msgid "Down"
467 msgstr "Baixo"
468
469 #: ../../../src/InputState.cpp:405 ../../../src/SDLInputState.cpp:592
470 msgid "Left"
471 msgstr "Esquerda"
472
473 #: ../../../src/InputState.cpp:406 ../../../src/SDLInputState.cpp:602
474 msgid "Right"
475 msgstr "Direita"
476
477 #: ../../../src/InputState.cpp:407
478 msgid "Bar1"
479 msgstr "Barra1"
480
481 #: ../../../src/InputState.cpp:408
482 msgid "Bar2"
483 msgstr "Barra2"
484
485 #: ../../../src/InputState.cpp:409
486 msgid "Bar3"
487 msgstr "Barra3"
488
489 #: ../../../src/InputState.cpp:410
490 msgid "Bar4"
491 msgstr "Barra4"
492
493 #: ../../../src/InputState.cpp:411
494 msgid "Bar5"
495 msgstr "Barra5"
496
497 #: ../../../src/InputState.cpp:412
498 msgid "Bar6"
499 msgstr "Barra6"
500
501 #: ../../../src/InputState.cpp:413
502 msgid "Bar7"
503 msgstr "Barra7"
504
505 #: ../../../src/InputState.cpp:414
506 msgid "Bar8"
507 msgstr "Barra8"
508
509 #: ../../../src/InputState.cpp:415
510 msgid "Bar9"
511 msgstr "Barra9"
512
513 #: ../../../src/InputState.cpp:416
514 msgid "Bar0"
515 msgstr "Barra0"
516
517 #: ../../../src/InputState.cpp:417 ../../../src/MenuActionBar.cpp:83
518 #: ../../../src/MenuCharacter.cpp:54
519 msgid "Character"
520 msgstr "Personagem"
521
522 #: ../../../src/InputState.cpp:418 ../../../src/MenuActionBar.cpp:84
523 #: ../../../src/MenuInventory.cpp:137 ../../../src/MenuVendor.cpp:57
524 msgid "Inventory"
525 msgstr "Inventário"
526
527 #: ../../../src/InputState.cpp:419 ../../../src/MenuActionBar.cpp:85
528 #: ../../../src/MenuPowers.cpp:168
529 msgid "Powers"
530 msgstr "Poderes"
531
532 #: ../../../src/InputState.cpp:420 ../../../src/MenuActionBar.cpp:86
533 #: ../../../src/MenuLog.cpp:72
534 msgid "Log"
535 msgstr "Diário"
536
537 #: ../../../src/InputState.cpp:421
538 msgid "Main1"
539 msgstr "Principal1"
540
541 #: ../../../src/InputState.cpp:422
542 msgid "Main2"
543 msgstr "Principal2"
544
545 #: ../../../src/InputState.cpp:423
546 msgid "Ctrl"
547 msgstr "Ctrl"
548
549 #: ../../../src/InputState.cpp:424
550 msgid "Shift"
551 msgstr "Shift"
552
553 #: ../../../src/InputState.cpp:425
554 msgid "Alt"
555 msgstr "Alt"
556
557 #: ../../../src/InputState.cpp:426 ../../../src/SDLInputState.cpp:584
558 msgid "Delete"
559 msgstr "Remover"
560
561 #: ../../../src/InputState.cpp:427
562 msgid "ActionBar Accept"
563 msgstr "Barra de Ação Aceitar"
564
565 #: ../../../src/InputState.cpp:428
566 msgid "ActionBar Left"
567 msgstr "Barra de Ação Esquerda"
568
569 #: ../../../src/InputState.cpp:429
570 msgid "ActionBar Right"
571 msgstr "Barra de Ação Direita"
572
573 #: ../../../src/InputState.cpp:430
574 msgid "ActionBar Use"
575 msgstr "Barra de Ação Usar"
576
577 #: ../../../src/InputState.cpp:431
578 msgid "Developer Menu"
579 msgstr "Menu Programador"
580
581 #: ../../../src/InputState.cpp:433
582 msgid "Left Mouse"
583 msgstr "Botão Esq. Rato"
584
585 #: ../../../src/InputState.cpp:434
586 msgid "Middle Mouse"
587 msgstr "Botão Meio Rato"
588
589 #: ../../../src/InputState.cpp:435
590 msgid "Right Mouse"
591 msgstr "Botão Dir. Rato"
592
593 #: ../../../src/InputState.cpp:436
594 msgid "Wheel Up"
595 msgstr "Roda p/Cima"
596
597 #: ../../../src/InputState.cpp:437
598 msgid "Wheel Down"
599 msgstr "Roda p/Baixo"
600
601 #: ../../../src/InputState.cpp:438
602 msgid "Mouse X1"
603 msgstr "Rato X1"
604
605 #: ../../../src/InputState.cpp:439
606 msgid "Mouse X2"
607 msgstr "Rato X2"
608
609 #: ../../../src/ItemManager.cpp:450 ../../../src/ItemManager.cpp:453
610 msgid "Unknown Item"
611 msgstr "Item Desconhecido"
612
613 #: ../../../src/ItemManager.cpp:648 ../../../src/MenuPowers.cpp:887
614 #, c-format
615 msgid "%d%% Speed"
616 msgstr "%d%% Velocidade"
617
618 #: ../../../src/ItemManager.cpp:652 ../../../src/MenuPowers.cpp:890
619 #, c-format
620 msgid "%d%% Attack Speed"
621 msgstr "%d%% Velocidade de Ataque"
622
623 #: ../../../src/ItemManager.cpp:674 ../../../src/MenuCharacter.cpp:354
624 #: ../../../src/MenuPowers.cpp:833
625 #, c-format
626 msgid "Resistance (%s)"
627 msgstr "Resistência (%s)"
628
629 #: ../../../src/ItemManager.cpp:684
630 #, c-format
631 msgid "Requires %s"
632 msgstr "Necessita de %s"
633
634 #: ../../../src/ItemManager.cpp:733
635 msgid "Quest Item"
636 msgstr "Item de Missão"
637
638 #: ../../../src/ItemManager.cpp:760
639 #, c-format
640 msgid "Quality: %s"
641 msgstr "Qualidade: %s"
642
643 #: ../../../src/ItemManager.cpp:785
644 #, c-format
645 msgid "Absorb: %d-%d"
646 msgstr "Absorve: %d-%d"
647
648 #: ../../../src/ItemManager.cpp:787
649 #, c-format
650 msgid "Absorb: %d"
651 msgstr "Absorve: %d"
652
653 #: ../../../src/ItemManager.cpp:827 ../../../src/MenuPowers.cpp:1131
654 #: ../../../src/MenuPowers.cpp:1134
655 #, c-format
656 msgid "Requires Level %d"
657 msgstr "Requer Nível %d"
658
659 #: ../../../src/ItemManager.cpp:838 ../../../src/MenuPowers.cpp:1123
660 #: ../../../src/MenuPowers.cpp:1125
661 #, c-format
662 msgid "Requires %s %d"
663 msgstr "Necessita %s %d"
664
665 #: ../../../src/ItemManager.cpp:849
666 #, c-format
667 msgid "Requires Class: %s"
668 msgstr "Necessita da Classe: %s"
669
670 #: ../../../src/ItemManager.cpp:864 ../../../src/ItemManager.cpp:876
671 #, c-format
672 msgid "Buy Price: %d %s"
673 msgstr "Preço de Compra: %d %s"
674
675 #: ../../../src/ItemManager.cpp:866 ../../../src/ItemManager.cpp:878
676 #, c-format
677 msgid "Buy Price: %d %s each"
678 msgstr "Preço de Compra: %d %s cada"
679
680 #: ../../../src/ItemManager.cpp:886
681 #, c-format
682 msgid "Sell Price: %d %s"
683 msgstr "Preço de Venda: %d %s"
684
685 #: ../../../src/ItemManager.cpp:888
686 #, c-format
687 msgid "Sell Price: %d %s each"
688 msgstr "Preço de Venda: %d %s cada"
689
690 #: ../../../src/ItemManager.cpp:897
691 msgid "Set:"
692 msgstr "Conjunto:"
693
694 #: ../../../src/ItemManager.cpp:904
695 #, c-format
696 msgid "%d items:"
697 msgstr "%d itens:"
698
699 #: ../../../src/ItemManager.cpp:917
700 #, c-format
701 msgid "Press [%s] to use"
702 msgstr "Pressionar [%s] para usar"
703
704 #: ../../../src/ItemManager.cpp:920
705 #, c-format
706 msgid "Press [%s] to read"
707 msgstr "Pressionar [%s] para ler"
708
709 #: ../../../src/MenuActionBar.cpp:87
710 msgid "Loot tooltip visibility"
711 msgstr "Visibilidade das legendas dos saques"
712
713 #: ../../../src/MenuActionBar.cpp:88
714 msgid "Mini-map mode"
715 msgstr "Modo mini-mapa"
716
717 #: ../../../src/MenuActionBar.cpp:89
718 msgid "Always show stat bar labels"
719 msgstr "Mostrar sempre etiquetas na barra de estatísticas"
720
721 #: ../../../src/MenuActionBar.cpp:90
722 msgid "Show combat text"
723 msgstr "Mostrar texto de combate"
724
725 #: ../../../src/MenuActionBar.cpp:254 ../../../src/MenuActionBar.cpp:261
726 #: ../../../src/MenuActionBar.cpp:264 ../../../src/MenuActionBar.cpp:271
727 #, c-format
728 msgid "Hotkey: %s"
729 msgstr "Atalho: %s"
730
731 #: ../../../src/MenuActionBar.cpp:474
732 #, c-format
733 msgid "Default. Temporarily show all loot tooltips with '%s'."
734 msgstr ""
735 "Padrão. Mostrar temporariamente todas as legendas dos saques com '%s'."
736
737 #: ../../../src/MenuActionBar.cpp:476
738 #, c-format
739 msgid "Show All. Temporarily hide all loot tooltips with '%s'."
740 msgstr ""
741 "Mostrar tudo. Ocultar temporariamente todas as legendas dos saques com '%s'."
742
743 #: ../../../src/MenuActionBar.cpp:478
744 #, c-format
745 msgid "Hide All. Temporarily show all loot tooltips with '%s'."
746 msgstr ""
747 "Ocultar tudo. Mostrar temporariamente todas as legendas dos saques com '%s'."
748
749 #: ../../../src/MenuActionBar.cpp:482
750 msgid "Visible"
751 msgstr "Visível"
752
753 #: ../../../src/MenuActionBar.cpp:484
754 msgid "Visible (2x zoom)"
755 msgstr "Visível (2x zoom)"
756
757 #: ../../../src/MenuActionBar.cpp:486
758 msgid "Hidden"
759 msgstr "Oculto"
760
761 #: ../../../src/MenuActionBar.cpp:490 ../../../src/MenuActionBar.cpp:496
762 msgid "Enabled"
763 msgstr "Ativado"
764
765 #: ../../../src/MenuActionBar.cpp:492 ../../../src/MenuActionBar.cpp:498
766 msgid "Disabled"
767 msgstr "Desativado"
768
769 #: ../../../src/MenuActionBar.cpp:657
770 msgid "Not enough MP."
771 msgstr "Sem mana suficiente."
772
773 #: ../../../src/MenuActiveEffects.cpp:124
774 #, c-format
775 msgid "x%d"
776 msgstr "x%d"
777
778 #: ../../../src/MenuActiveEffects.cpp:219
779 msgid "Remaining:"
780 msgstr "Restante:"
781
782 #: ../../../src/MenuActiveEffects.cpp:225
783 #, c-format
784 msgid "x%d stacks"
785 msgstr "x%d pilhas"
786
787 #: ../../../src/MenuCharacter.cpp:73 ../../../src/MenuCharacter.cpp:78
788 msgid "Name"
789 msgstr "Nome"
790
791 #: ../../../src/MenuCharacter.cpp:74 ../../../src/MenuCharacter.cpp:79
792 msgid "Level"
793 msgstr "Nível"
794
795 #: ../../../src/MenuCharacter.cpp:310
796 #, c-format
797 msgid "%d unspent stat point"
798 msgstr "%d ponto não utilizado"
799
800 #: ../../../src/MenuCharacter.cpp:313
801 #, c-format
802 msgid "%d unspent stat points"
803 msgstr "%d pontos não utilizados"
804
805 #: ../../../src/MenuCharacter.cpp:355
806 #, c-format
807 msgid "Reduces the damage taken from \"%s\" elemental attacks."
808 msgstr "Reduz o dano recebido de \"%s\" ataques elementais."
809
810 #: ../../../src/MenuCharacter.cpp:365 ../../../src/MenuManager.cpp:283
811 #, c-format
812 msgid "XP: %d"
813 msgstr "EXP: %d"
814
815 #: ../../../src/MenuCharacter.cpp:367
816 #, c-format
817 msgid "Next: %d"
818 msgstr "Próximo: %d"
819
820 #: ../../../src/MenuCharacter.cpp:373
821 #, c-format
822 msgid "base (%d), bonus (%d)"
823 msgstr "base (%d), bónus (%d)"
824
825 #: ../../../src/MenuCharacter.cpp:381 ../../../src/MenuCharacter.cpp:395
826 msgid "Related stats:"
827 msgstr "Estatísticas relacionadas:"
828
829 #: ../../../src/MenuCharacter.cpp:421 ../../../src/MenuCharacter.cpp:445
830 #, c-format
831 msgid "Each level grants %d."
832 msgstr "Cada nível garante %d."
833
834 #: ../../../src/MenuCharacter.cpp:425 ../../../src/MenuCharacter.cpp:449
835 #, c-format
836 msgid "Each point of %s grants %d."
837 msgstr "Cada ponto de %s dá %d."
838
839 #: ../../../src/MenuDevConsole.cpp:63
935 #: ../../../src/MenuConfig.cpp:515
936 msgid ""
937 "Enables the below setting that controls the screen gamma level. The behavior"
938 " of the gamma setting can vary between platforms."
939 msgstr ""
940 "Permite a configuração abaixo que controla o gama do ecrã. O comportamento "
941 "da configuração do gama pode variar em plataformas diferentes."
942
943 #: ../../../src/MenuConfig.cpp:516
944 msgid ""
945 "Provides additional text for information that is primarily conveyed through "
946 "color."
947 msgstr ""
948 "Fornece texto adicional para informação que é transmitida através da cor."
949
950 #: ../../../src/MenuConfig.cpp:517
951 msgid ""
952 "Some mods will automatically hide the stat bars when they are inactive. "
953 "Disabling this option will keep them displayed at all times."
954 msgstr ""
955 "Alguns mods escondem automaticamente a barra de estatísticas quando estas "
956 "estão inativas. Desativando esta opção, a barra de estatísticas estará "
957 "sempre visível."
958
959 #: ../../../src/MenuConfig.cpp:518
960 msgid ""
961 "When enabled, empty equipment slots will be filled with applicable items "
962 "when they are obtained."
963 msgstr ""
964 "Quando ativado, os compartimentos vagos do equipamento serão preenchidos com"
965 " itens aplicáveis quando estes são obtidos."
966
967 #: ../../../src/MenuConfig.cpp:519
968 msgid ""
969 "Shows a marker above enemies, allies, and the player when they are obscured "
970 "by tall objects."
971 msgstr ""
972 "Mostrar um marcador por cima dos inimigos, aliados e o jogador quando "
973 "estiverem ocultados por objetos altos."
974
975 #: ../../../src/MenuConfig.cpp:520
976 msgid ""
977 "When enabled, tooltips for equipped items of the same type are shown next to"
978 " standard item tooltips."
979 msgstr ""
980
981 #: ../../../src/MenuConfig.cpp:521
982 msgid ""
983 "This allows the game to be controlled entirely with the keyboard (or "
984 "joystick)."
985 msgstr ""
986 "Isto permite que o jogo seja controlado inteiramente com o teclado (ou "
987 "joystick)."
988
989 #: ../../../src/MenuConfig.cpp:522
990 msgid ""
991 "When 'Move hero using mouse' is enabled, this setting controls if 'Main1' or"
992 " 'Main2' is used to move the hero. If enabled, 'Main2' will move the hero "
993 "instead of 'Main1'."
994 msgstr ""
995 "Quando a opção 'Mover herói utilizando o rato' está ativa, esta configuração"
996 " controla se o 'Principal1' ou 'Principal2' é utilizado para mover o herói. "
997 "Se ativado, o 'Principal2' irá mover o herói em vez do 'Principal1'."
998
999 #: ../../../src/MenuConfig.cpp:523
1000 msgid ""
1001 "When 'Move hero using mouse' is enabled, this setting controls if the Power "
1002 "assigned to the movement button can be used by targeting an enemy. If this "
1003 "setting is disabled, it is required to use 'Shift' to access the Power "
1004 "assigned to the movement button."
1005 msgstr ""
1006 "Quando a opção 'Mover herói utilizando o rato' está ativada, esta "
1007 "configuração controla se a potência atribuída ao botão de movimento pode ser"
1008 " utilizada ao colocar em mira um inimigo. Se esta opção estiver desativada, "
1009 "é necessário usar a tecla 'Shift' para aceder à potência atribuída ao botão "
1010 "de movimento."
1011
1012 #: ../../../src/MenuConfig.cpp:524
1013 msgid ""
1014 "The player's attacks will be aimed in the direction of the mouse cursor when"
1015 " this is enabled."
1016 msgstr ""
1017 "Os ataques do jogador serão direcionados na direção do cursor do rato quando"
1018 " isto está ativo."
1019
1020 #: ../../../src/MenuConfig.cpp:575
1021 msgid "Active Mods"
1022 msgstr "Mods ativos"
1023
1024 #: ../../../src/MenuConfig.cpp:584
1025 msgid "Available Mods"
1026 msgstr "Mods disponíveis"
1027
1028 #: ../../../src/MenuConfig.cpp:603
1029 msgid "<< Disable"
1030 msgstr "<< Desativar"
1031
1032 #: ../../../src/MenuConfig.cpp:609
1033 msgid "Enable >>"
1034 msgstr "Ativar >>"
1035
1036 #: ../../../src/MenuConfig.cpp:1444
1037 msgid "Version:"
1038 msgstr "Versão:"
1039
1040 #: ../../../src/MenuConfig.cpp:1449
1041 msgid "Game:"
1042 msgstr "Jogo:"
1043
1044 #: ../../../src/MenuConfig.cpp:1454
1045 msgid "Engine version:"
1046 msgstr "Versão do motor:"
1047
1048 #: ../../../src/MenuConfig.cpp:1462
1049 msgid "Requires mods:"
1050 msgstr "Necessita dos mods:"
1051
1052 #: ../../../src/MenuConfig.cpp:1570 ../../../src/SDLInputState.cpp:748
1053 msgid "(none)"
1054 msgstr "(nenhum)"
1055
1056 #: ../../../src/MenuConfig.cpp:1587 ../../../src/MenuGameOver.cpp:73
1057 msgid "Save & Exit"
1058 msgstr "Gravar e Sair"
1059
1060 #: ../../../src/MenuDevConsole.cpp:65
8401061 msgid "Execute"
8411062 msgstr "Executar"
8421063
843 #: ../../../src/MenuDevConsole.cpp:101 ../../../src/MenuDevConsole.cpp:151
1064 #: ../../../src/MenuDevConsole.cpp:103 ../../../src/MenuDevConsole.cpp:153
8441065 msgid "Developer Console"
8451066 msgstr "Consola de Programador"
8461067
847 #: ../../../src/MenuDevConsole.cpp:141
1068 #: ../../../src/MenuDevConsole.cpp:143
8481069 #, c-format
8491070 msgid "Use '%s' to inspect with the cursor."
8501071 msgstr "Usar '%s' para inspecionar com o cursor."
8511072
852 #: ../../../src/MenuDevConsole.cpp:146
1073 #: ../../../src/MenuDevConsole.cpp:148
8531074 msgid "Arguments with spaces should be enclosed with double quotes. Example:"
8541075 msgstr "Os argumentos com espaços devem estar entre aspas duplas. Exemplo:"
8551076
856 #: ../../../src/MenuDevConsole.cpp:147
1077 #: ../../../src/MenuDevConsole.cpp:149
8571078 msgid "Type 'help' to get a list of commands."
8581079 msgstr "Escrever 'help' para obter uma lista de comandos."
8591080
860 #: ../../../src/MenuDevConsole.cpp:209 ../../../src/MenuDevConsole.cpp:213
1081 #: ../../../src/MenuDevConsole.cpp:211 ../../../src/MenuDevConsole.cpp:215
8611082 msgid "px"
8621083 msgstr "px"
8631084
864 #: ../../../src/MenuDevConsole.cpp:224
1085 #: ../../../src/MenuDevConsole.cpp:226
8651086 msgid "Distance"
8661087 msgstr "Distância"
8671088
868 #: ../../../src/MenuDevConsole.cpp:239 ../../../src/MenuDevConsole.cpp:286
1089 #: ../../../src/MenuDevConsole.cpp:241 ../../../src/MenuDevConsole.cpp:289
1090 #: ../../../src/MenuDevConsole.cpp:303
8691091 msgid "Entity"
8701092 msgstr "Entidade"
8711093
872 #: ../../../src/MenuDevConsole.cpp:261 ../../../src/MenuDevConsole.cpp:268
1094 #: ../../../src/MenuDevConsole.cpp:263 ../../../src/MenuDevConsole.cpp:270
8731095 msgid "none"
8741096 msgstr "nenhum"
8751097
876 #: ../../../src/MenuDevConsole.cpp:262 ../../../src/MenuDevConsole.cpp:264
1098 #: ../../../src/MenuDevConsole.cpp:264 ../../../src/MenuDevConsole.cpp:266
8771099 msgid "wall"
8781100 msgstr "muro"
8791101
880 #: ../../../src/MenuDevConsole.cpp:263 ../../../src/MenuDevConsole.cpp:265
1102 #: ../../../src/MenuDevConsole.cpp:265 ../../../src/MenuDevConsole.cpp:267
8811103 msgid "short wall / pit"
8821104 msgstr "parede curta / fosso"
8831105
884 #: ../../../src/MenuDevConsole.cpp:266
1106 #: ../../../src/MenuDevConsole.cpp:268
8851107 msgid "entity"
8861108 msgstr "entidade"
8871109
888 #: ../../../src/MenuDevConsole.cpp:267
1110 #: ../../../src/MenuDevConsole.cpp:269
8891111 msgid "entity, ally"
8901112 msgstr "entidade, aliado"
8911113
892 #: ../../../src/MenuDevConsole.cpp:274
1114 #: ../../../src/MenuDevConsole.cpp:276
8931115 msgid "Tile"
8941116 msgstr "Tela"
8951117
896 #: ../../../src/MenuDevConsole.cpp:360
1118 #: ../../../src/MenuDevConsole.cpp:377
8971119 msgid "adds a power to the action bar"
8981120 msgstr "adiciona um poder à barra de ação"
8991121
900 #: ../../../src/MenuDevConsole.cpp:361
1122 #: ../../../src/MenuDevConsole.cpp:378
9011123 msgid "turns on/off the display of the FPS counter"
9021124 msgstr "liga / desliga a visualização do contador de FPS"
9031125
904 #: ../../../src/MenuDevConsole.cpp:362
1126 #: ../../../src/MenuDevConsole.cpp:379
9051127 msgid "turns on/off all of the HUD elements"
9061128 msgstr "mostra/oculta todos os elementos do HUD"
9071129
908 #: ../../../src/MenuDevConsole.cpp:363
1130 #: ../../../src/MenuDevConsole.cpp:380
9091131 msgid "turns on/off the developer hud"
9101132 msgstr "mostra/oculta todos o HUD de programador"
9111133
912 #: ../../../src/MenuDevConsole.cpp:364
1134 #: ../../../src/MenuDevConsole.cpp:381
9131135 msgid ""
9141136 "Prints a list of powers that match a search term. No search term will list "
9151137 "all items"
9171139 "Mostra uma lista de poderes que correspondem a um termo pesquisado. Se não "
9181140 "for encontrado nada na pesquisa, mostra todos os itens"
9191141
920 #: ../../../src/MenuDevConsole.cpp:365
1142 #: ../../../src/MenuDevConsole.cpp:382
9211143 msgid "Prints out all the map filenames located in the \"maps/\" directory."
9221144 msgstr ""
9231145 "Mostra todos os nomes de ficheiros de mapas localizados na pasta \"maps/\"."
9241146
925 #: ../../../src/MenuDevConsole.cpp:366
1147 #: ../../../src/MenuDevConsole.cpp:383
9261148 msgid ""
9271149 "Prints out the active campaign statuses that match a search term. No search "
9281150 "term will list all active statuses"
9301152 "Mostra o estado da campanha ativa que corresponde ao termo de pesquisa. Se "
9311153 "não for encontrado nada na pesquisa, mostra todos os estados ativos"
9321154
933 #: ../../../src/MenuDevConsole.cpp:367
1155 #: ../../../src/MenuDevConsole.cpp:384
9341156 msgid ""
9351157 "Prints a list of items that match a search term. No search term will list "
9361158 "all items"
9381160 "Mostra uma lista de todos os itens que correspondem a um termo pesquisado. "
9391161 "Se não for encontrado nada na pesquisa, mostra todos os itens"
9401162
941 #: ../../../src/MenuDevConsole.cpp:368
1163 #: ../../../src/MenuDevConsole.cpp:385
9421164 msgid ""
9431165 "parses a series of event components and executes them as a single event"
9441166 msgstr ""
9451167 "analisa uma série de componentes de eventos e executa-os como um único "
9461168 "evento"
9471169
948 #: ../../../src/MenuDevConsole.cpp:369
1170 #: ../../../src/MenuDevConsole.cpp:386
9491171 msgid "clears the command history"
9501172 msgstr "limpa o histórico de comandos"
9511173
952 #: ../../../src/MenuDevConsole.cpp:370
1174 #: ../../../src/MenuDevConsole.cpp:387
9531175 msgid "displays this text"
9541176 msgstr "mostra este texto"
9551177
956 #: ../../../src/MenuDevConsole.cpp:377
1178 #: ../../../src/MenuDevConsole.cpp:394
9571179 msgid "Toggled the developer hud"
9581180 msgstr "HUD de programador mostrado/oculto"
9591181
960 #: ../../../src/MenuDevConsole.cpp:381
1182 #: ../../../src/MenuDevConsole.cpp:398
9611183 msgid "Toggled the hud"
9621184 msgstr "HUD mostrado/oculto"
9631185
964 #: ../../../src/MenuDevConsole.cpp:385
1186 #: ../../../src/MenuDevConsole.cpp:402
9651187 msgid "Toggled the FPS counter"
9661188 msgstr "Contador de FPS alternado"
9671189
968 #: ../../../src/MenuDevConsole.cpp:534
1190 #: ../../../src/MenuDevConsole.cpp:552
9691191 msgid "ERROR: Incorrect number of arguments"
9701192 msgstr "ERRO: número incorreto de argumentos"
9711193
972 #: ../../../src/MenuDevConsole.cpp:536 ../../../src/MenuDevConsole.cpp:564
1194 #: ../../../src/MenuDevConsole.cpp:554 ../../../src/MenuDevConsole.cpp:582
9731195 msgid "HINT:"
9741196 msgstr "DICA:"
9751197
976 #: ../../../src/MenuDevConsole.cpp:536
1198 #: ../../../src/MenuDevConsole.cpp:554
9771199 msgid "<id>"
9781200 msgstr "<id>"
9791201
980 #: ../../../src/MenuDevConsole.cpp:552
1202 #: ../../../src/MenuDevConsole.cpp:570
9811203 #, c-format
9821204 msgid "ERROR: '%s' is not a valid event key"
9831205 msgstr "ERRO: '%s' não é uma chave de evento válida"
9841206
985 #: ../../../src/MenuDevConsole.cpp:562
1207 #: ../../../src/MenuDevConsole.cpp:580
9861208 msgid "ERROR: Too few arguments"
9871209 msgstr "ERRO: argumentos a menos"
9881210
989 #: ../../../src/MenuDevConsole.cpp:564
1211 #: ../../../src/MenuDevConsole.cpp:582
9901212 msgid "<key>=<val> <key>=<val> ..."
9911213 msgstr "<key>=<val> <key>=<val> ..."
9921214
993 #: ../../../src/MenuDevConsole.cpp:569
1215 #: ../../../src/MenuDevConsole.cpp:587
9941216 msgid "ERROR: Unknown command"
9951217 msgstr "ERRO: comando desconhecido"
9961218
997 #: ../../../src/MenuDevConsole.cpp:571
1219 #: ../../../src/MenuDevConsole.cpp:589
9981220 msgid "HINT: Type help"
9991221 msgstr "DICA: escreve help"
10001222
1001 #: ../../../src/MenuEnemy.cpp:138
1223 #: ../../../src/MenuEnemy.cpp:162
10021224 #, c-format
10031225 msgid "%s level %d"
10041226 msgstr "%s nível %d"
10051227
1006 #: ../../../src/MenuEnemy.cpp:162
1228 #: ../../../src/MenuEnemy.cpp:186
10071229 msgid "Dead"
10081230 msgstr "Morto"
10091231
1010 #: ../../../src/MenuEnemy.cpp:164
1232 #: ../../../src/MenuEnemy.cpp:188
10111233 msgid "Destroyed"
10121234 msgstr "Destruído"
10131235
1014 #: ../../../src/MenuExit.cpp:85 ../../../src/MenuExit.cpp:139
1015 msgid "Paused"
1016 msgstr "Pausado"
1017
1018 #: ../../../src/MenuExit.cpp:91
1019 msgid "Save & Exit"
1020 msgstr "Gravar e Sair"
1021
1022 #: ../../../src/MenuExit.cpp:92
1023 msgid "Exit"
1024 msgstr "Sair"
1025
1026 #: ../../../src/MenuExit.cpp:96
1027 msgid "Continue"
1028 msgstr "Continuar"
1029
1030 #: ../../../src/MenuInventory.cpp:73
1031 msgid "Automatically equip items"
1032 msgstr "Equipar itens automaticamente"
1033
1034 #: ../../../src/MenuInventory.cpp:188
1236 #: ../../../src/MenuGameOver.cpp:69
1237 msgid "Game Over"
1238 msgstr ""
1239
1240 #: ../../../src/MenuInventory.cpp:178
10351241 #, c-format
10361242 msgid "Lost %d%% of %s."
10371243 msgstr "Perdeste %d%% de %s."
10381244
1039 #: ../../../src/MenuInventory.cpp:195
1245 #: ../../../src/MenuInventory.cpp:185
10401246 #, c-format
10411247 msgid "Lost %d%% of total XP."
10421248 msgstr "Perdeste %d%% de um total de EXP."
10431249
1044 #: ../../../src/MenuInventory.cpp:200
1250 #: ../../../src/MenuInventory.cpp:190
10451251 #, c-format
10461252 msgid "Lost %d%% of current level XP."
10471253 msgstr "Perdeste %d%% no nível atual de EXP."
10481254
1049 #: ../../../src/MenuInventory.cpp:226
1255 #: ../../../src/MenuInventory.cpp:216
10501256 #, c-format
10511257 msgid "Lost %s."
10521258 msgstr "Perdeste %s."
10531259
1054 #: ../../../src/MenuInventory.cpp:274 ../../../src/MenuStash.cpp:146
1260 #: ../../../src/MenuInventory.cpp:258 ../../../src/MenuStash.cpp:276
10551261 #, c-format
10561262 msgid "%d %s"
10571263 msgstr "%d %s"
10581264
1059 #: ../../../src/MenuInventory.cpp:317
1265 #: ../../../src/MenuInventory.cpp:301
10601266 msgid "Pick up item(s):"
10611267 msgstr "Apanhar itens:"
10621268
1063 #: ../../../src/MenuInventory.cpp:318
1269 #: ../../../src/MenuInventory.cpp:302
10641270 msgid "Use or equip item:"
10651271 msgstr "Usar ou equipar item:"
10661272
1067 #: ../../../src/MenuInventory.cpp:319
1273 #: ../../../src/MenuInventory.cpp:303
10681274 #, c-format
10691275 msgid "%s modifiers"
10701276 msgstr "%s modificadores"
10711277
1072 #: ../../../src/MenuInventory.cpp:320
1278 #: ../../../src/MenuInventory.cpp:304
10731279 msgid "Select a quantity of item:"
10741280 msgstr "Escolher quantidade de um item:"
10751281
1076 #: ../../../src/MenuInventory.cpp:323
1282 #: ../../../src/MenuInventory.cpp:307
10771283 msgid "Stash item stack:"
10781284 msgstr "Pilha de item no baú:"
10791285
1080 #: ../../../src/MenuInventory.cpp:325
1286 #: ../../../src/MenuInventory.cpp:309
10811287 msgid "Sell item stack:"
10821288 msgstr "Vender pilha de itens:"
10831289
1084 #: ../../../src/MenuInventory.cpp:592
1290 #: ../../../src/MenuInventory.cpp:576
10851291 msgid "You don't have enough of the required item."
10861292 msgstr "Não tens que chegue do item necessário."
10871293
1088 #: ../../../src/MenuInventory.cpp:599
1294 #: ../../../src/MenuInventory.cpp:588
10891295 msgid "You can't use this item right now."
10901296 msgstr "Não podes usar este item agora."
10911297
1092 #: ../../../src/MenuInventory.cpp:611
1298 #: ../../../src/MenuInventory.cpp:600
10931299 msgid "This item can only be used from the action bar."
10941300 msgstr "Este item pode ser usado apenas a partir da barra de ação."
10951301
1096 #: ../../../src/MenuInventory.cpp:729
1302 #: ../../../src/MenuInventory.cpp:718
10971303 msgid "Inventory is full."
10981304 msgstr "O inventário está cheio."
10991305
1100 #: ../../../src/MenuInventory.cpp:849
1306 #: ../../../src/MenuInventory.cpp:843
11011307 #, c-format
11021308 msgid "Not enough %s."
11031309 msgstr "Sem %s suficientes."
11041310
1105 #: ../../../src/MenuInventory.cpp:869 ../../../src/MenuInventory.cpp:876
1311 #: ../../../src/MenuInventory.cpp:863 ../../../src/MenuInventory.cpp:870
11061312 msgid "This item can not be sold."
11071313 msgstr "Este item não pode ser vendido."
11081314
11141320 msgid "Quests"
11151321 msgstr "Missões"
11161322
1117 #: ../../../src/MenuManager.cpp:286
1323 #: ../../../src/MenuManager.cpp:305
11181324 #, c-format
11191325 msgid "XP: %d/%d"
11201326 msgstr "EXP: %d/%d"
11211327
1122 #: ../../../src/MenuManager.cpp:827
1328 #: ../../../src/MenuManager.cpp:875
11231329 msgid "This item can not be dropped."
11241330 msgstr "Este item não pode ser deitado fora."
1331
1332 #: ../../../src/MenuManager.cpp:1501
1333 msgid "Equipped"
1334 msgstr ""
1335
1336 #: ../../../src/MenuMovementType.cpp:87
1337 msgid "Select a Movement Type"
1338 msgstr ""
1339
1340 #: ../../../src/MenuMovementType.cpp:89
1341 msgid "Can be changed later in the Configuration menu."
1342 msgstr ""
1343
1344 #: ../../../src/MenuMovementType.cpp:92 ../../../src/MenuMovementType.cpp:122
1345 msgid "Keyboard"
1346 msgstr ""
1347
1348 #: ../../../src/MenuMovementType.cpp:93 ../../../src/MenuMovementType.cpp:128
1349 msgid "Mouse"
1350 msgstr ""
1351
1352 #: ../../../src/MenuMovementType.cpp:129
1353 msgid "Button"
1354 msgstr ""
11251355
11261356 #: ../../../src/MenuNumPicker.cpp:59
11271357 msgid "Enter amount:"
11281358 msgstr "Introduz a quantidade:"
11291359
1130 #: ../../../src/MenuPowers.cpp:787
1360 #: ../../../src/MenuPowers.cpp:872
11311361 msgid "Passive"
11321362 msgstr "Passivo"
11331363
1134 #: ../../../src/MenuPowers.cpp:792
1364 #: ../../../src/MenuPowers.cpp:879
11351365 #, c-format
11361366 msgid "Costs %d MP"
11371367 msgstr "Custa %d Mana"
11381368
1139 #: ../../../src/MenuPowers.cpp:796
1369 #: ../../../src/MenuPowers.cpp:883
11401370 #, c-format
11411371 msgid "Costs %d HP"
11421372 msgstr "Custa %d PV"
11431373
1144 #: ../../../src/MenuPowers.cpp:801
1374 #: ../../../src/MenuPowers.cpp:887
11451375 msgid "Cooldown:"
11461376 msgstr "Esfriar:"
11471377
1148 #: ../../../src/MenuPowers.cpp:866 ../../../src/MenuPowers.cpp:869
1378 #: ../../../src/MenuPowers.cpp:938 ../../../src/MenuPowers.cpp:941
11491379 msgid "Damage per second"
11501380 msgstr "Dano por segundo"
11511381
1152 #: ../../../src/MenuPowers.cpp:872 ../../../src/MenuPowers.cpp:875
1382 #: ../../../src/MenuPowers.cpp:944 ../../../src/MenuPowers.cpp:947
11531383 msgid "HP per second"
11541384 msgstr "PV por segundo"
11551385
1156 #: ../../../src/MenuPowers.cpp:878 ../../../src/MenuPowers.cpp:881
1386 #: ../../../src/MenuPowers.cpp:950 ../../../src/MenuPowers.cpp:953
11571387 msgid "MP per second"
11581388 msgstr "Mana por segundo"
11591389
1160 #: ../../../src/MenuPowers.cpp:885
1390 #: ../../../src/MenuPowers.cpp:957
11611391 msgid "Immobilize"
11621392 msgstr "Imobilizar"
11631393
1164 #: ../../../src/MenuPowers.cpp:893
1394 #: ../../../src/MenuPowers.cpp:965
11651395 msgid "Immunity"
11661396 msgstr "Imunidade"
11671397
1168 #: ../../../src/MenuPowers.cpp:896
1398 #: ../../../src/MenuPowers.cpp:968
11691399 msgid "Immunity to damage over time"
11701400 msgstr "Imunidade a danos a longo prazo"
11711401
1172 #: ../../../src/MenuPowers.cpp:899
1402 #: ../../../src/MenuPowers.cpp:971
11731403 msgid "Immunity to slow"
11741404 msgstr "Imunidade à lentidão"
11751405
1176 #: ../../../src/MenuPowers.cpp:902
1406 #: ../../../src/MenuPowers.cpp:974
11771407 msgid "Immunity to stun"
11781408 msgstr "Imunidade ao atordoamento"
11791409
1180 #: ../../../src/MenuPowers.cpp:905
1410 #: ../../../src/MenuPowers.cpp:977
11811411 msgid "Immunity to HP steal"
11821412 msgstr "Imunidade ao roubo de PV"
11831413
1184 #: ../../../src/MenuPowers.cpp:908
1414 #: ../../../src/MenuPowers.cpp:980
11851415 msgid "Immunity to MP steal"
11861416 msgstr "Imunidade a roubo de Mana"
11871417
1188 #: ../../../src/MenuPowers.cpp:911
1418 #: ../../../src/MenuPowers.cpp:983
11891419 msgid "Immunity to knockback"
11901420 msgstr "Imunidade aos coices"
11911421
1192 #: ../../../src/MenuPowers.cpp:914
1422 #: ../../../src/MenuPowers.cpp:986
11931423 msgid "Immunity to damage reflection"
11941424 msgstr "Imunidade a reflexão de danos"
11951425
1196 #: ../../../src/MenuPowers.cpp:917
1426 #: ../../../src/MenuPowers.cpp:992
11971427 msgid "Stun"
11981428 msgstr "Atordoar"
11991429
1200 #: ../../../src/MenuPowers.cpp:920
1430 #: ../../../src/MenuPowers.cpp:995
12011431 msgid "Automatic revive on death"
12021432 msgstr "Ressuscitar automaticamente ao morrer"
12031433
1204 #: ../../../src/MenuPowers.cpp:923
1434 #: ../../../src/MenuPowers.cpp:998
12051435 msgid "Convert"
12061436 msgstr "Converter"
12071437
1208 #: ../../../src/MenuPowers.cpp:926
1438 #: ../../../src/MenuPowers.cpp:1001
12091439 msgid "Fear"
12101440 msgstr "Medo"
12111441
1212 #: ../../../src/MenuPowers.cpp:929
1442 #: ../../../src/MenuPowers.cpp:1004
12131443 msgid "Lifespan"
12141444 msgstr "Vida útil"
12151445
1216 #: ../../../src/MenuPowers.cpp:953
1446 #: ../../../src/MenuPowers.cpp:1028
12171447 msgid "Magical Shield"
12181448 msgstr "Escudo Mágico"
12191449
1220 #: ../../../src/MenuPowers.cpp:982
1450 #: ../../../src/MenuPowers.cpp:1057
12211451 msgid "Healing"
12221452 msgstr "Cura"
12231453
1224 #: ../../../src/MenuPowers.cpp:985
1454 #: ../../../src/MenuPowers.cpp:1060
12251455 msgid "Knockback"
12261456 msgstr "Coice"
12271457
1228 #: ../../../src/MenuPowers.cpp:1010
1458 #: ../../../src/MenuPowers.cpp:1084
12291459 #, c-format
12301460 msgid "%d%% chance"
12311461 msgstr "%d%% chance"
12321462
1233 #: ../../../src/MenuPowers.cpp:1062
1463 #: ../../../src/MenuPowers.cpp:1136
12341464 msgid "Base Accuracy"
12351465 msgstr "Precisão Básica"
12361466
1237 #: ../../../src/MenuPowers.cpp:1082
1467 #: ../../../src/MenuPowers.cpp:1156
12381468 msgid "Base Critical Chance"
12391469 msgstr "Chance Crítica Base"
12401470
1241 #: ../../../src/MenuPowers.cpp:1090
1471 #: ../../../src/MenuPowers.cpp:1164
12421472 msgid "Ignores Absorbtion"
12431473 msgstr "Ignora Absorção"
12441474
1245 #: ../../../src/MenuPowers.cpp:1095
1475 #: ../../../src/MenuPowers.cpp:1169
12461476 msgid "Ignores Avoidance"
12471477 msgstr "Ignora Esquivar"
12481478
1249 #: ../../../src/MenuPowers.cpp:1100
1479 #: ../../../src/MenuPowers.cpp:1174
12501480 #, c-format
12511481 msgid "%d%% Chance to crit slowed targets"
12521482 msgstr "%d%% chance de acerto crítico em alvos tornados lentos"
12531483
1254 #: ../../../src/MenuPowers.cpp:1105
1484 #: ../../../src/MenuPowers.cpp:1179
12551485 #, c-format
12561486 msgid "Elemental Damage (%s)"
12571487 msgstr "Dano Elemental (%s)"
12581488
1259 #: ../../../src/MenuPowers.cpp:1114
1489 #: ../../../src/MenuPowers.cpp:1188
12601490 #, c-format
12611491 msgid "Requires a %s"
12621492 msgstr "Requer um %s"
12631493
1264 #: ../../../src/MenuPowers.cpp:1151 ../../../src/MenuPowers.cpp:1154
1494 #: ../../../src/MenuPowers.cpp:1226 ../../../src/MenuPowers.cpp:1229
12651495 #, c-format
12661496 msgid "Requires Power: %s"
12671497 msgstr "Requer Poder: %s"
12681498
1269 #: ../../../src/MenuPowers.cpp:1163
1499 #: ../../../src/MenuPowers.cpp:1238
12701500 msgid "Click to Unlock (uses 1 Skill Point)"
12711501 msgstr "Clica para desbloquear (utiliza 1 Ponto de Habilidade)"
12721502
1273 #: ../../../src/MenuPowers.cpp:1167 ../../../src/MenuPowers.cpp:1169
1503 #: ../../../src/MenuPowers.cpp:1242 ../../../src/MenuPowers.cpp:1244
12741504 msgid "Requires 1 Skill Point"
12751505 msgstr "Requer 1 Ponto de Habilidade"
12761506
1277 #: ../../../src/MenuPowers.cpp:1355
1278 #, c-format
1279 msgid "%d unspent skill point"
1280 msgstr "%d ponto de habilidade não utilizado"
1281
1282 #: ../../../src/MenuPowers.cpp:1358
1283 #, c-format
1284 msgid "%d unspent skill points"
1285 msgstr "%d pontos de habilidade não utilizados"
1286
1287 #: ../../../src/MenuPowers.cpp:1388
1507 #: ../../../src/MenuPowers.cpp:1444
1508 #, c-format
1509 msgid "Available skill points: %d"
1510 msgstr ""
1511
1512 #: ../../../src/MenuPowers.cpp:1476
12881513 msgid "Next Level:"
12891514 msgstr "Próximo Nível:"
12901515
1291 #: ../../../src/MenuStash.cpp:96
1292 msgid "Shared Stash"
1293 msgstr "Baú Compartilhado"
1294
1295 #: ../../../src/MenuStash.cpp:209
1296 msgid "Can not store quest items in the stash."
1297 msgstr "Não é possível armazenar itens no baú."
1298
1299 #: ../../../src/MenuStash.cpp:219
1516 #: ../../../src/MenuStash.cpp:80 ../../../src/MenuStash.cpp:161
1517 msgid "Stash"
1518 msgstr ""
1519
1520 #: ../../../src/MenuStash.cpp:174 ../../../src/MenuStash.cpp:188
1521 msgid "Private"
1522 msgstr ""
1523
1524 #: ../../../src/MenuStash.cpp:175
1525 msgid "Shared"
1526 msgstr ""
1527
1528 #: ../../../src/MenuStash.cpp:340
1529 msgid "This item can not be stored in the stash."
1530 msgstr "Este item não pode ser guardado no baú."
1531
1532 #: ../../../src/MenuStash.cpp:345
1533 msgid "This item can not be stored in the private stash."
1534 msgstr ""
1535
1536 #: ../../../src/MenuStash.cpp:350
1537 msgid "This item can not be stored in the shared stash."
1538 msgstr ""
1539
1540 #: ../../../src/MenuStash.cpp:360
13001541 msgid "Stash is full."
13011542 msgstr "O baú está cheio."
13021543
1303 #: ../../../src/MenuTalker.cpp:454
1544 #: ../../../src/MenuStash.cpp:414
1545 #, c-format
1546 msgid "Can not store item in stash: %s"
1547 msgstr "Não é possível guardar os itens no baú: %s"
1548
1549 #: ../../../src/MenuTalker.cpp:448
1550 #, c-format
1551 msgid "<dialog node %d>"
1552 msgstr "<nó de diálogo %d>"
1553
1554 #: ../../../src/MenuTalker.cpp:456
13041555 msgid "Trade"
13051556 msgstr "Comércio"
13061557
1307 #: ../../../src/MenuVendor.cpp:58
1558 #: ../../../src/MenuVendor.cpp:60
13081559 msgid "Buyback"
13091560 msgstr "Recompra"
13101561
1311 #: ../../../src/MenuVendor.cpp:279
1562 #: ../../../src/MenuVendor.cpp:283
13121563 msgid "Vendor"
13131564 msgstr "Vendedor"
13141565
1315 #: ../../../src/PowerManager.cpp:1136
1566 #: ../../../src/PowerManager.cpp:1208
13161567 #, c-format
13171568 msgid "+%d Shield"
13181569 msgstr "Escudo +%d"
13191570
1320 #: ../../../src/PowerManager.cpp:1392
1571 #: ../../../src/PowerManager.cpp:1465
13211572 msgid "You are already transformed, untransform first."
13221573 msgstr "Já estás transformado, destransforma-te primeiro."
13231574
1324 #: ../../../src/PowerManager.cpp:1404
1575 #: ../../../src/PowerManager.cpp:1477
13251576 msgid "Could not untransform at this position."
13261577 msgstr "Não foi possível desfazer a transformação nesta posição."
13271578
13291580 msgid "Completed Quests"
13301581 msgstr "Missões Concluídas"
13311582
1332 #: ../../../src/SaveLoad.cpp:243 ../../../src/SaveLoad.cpp:244
1583 #: ../../../src/SaveLoad.cpp:250 ../../../src/SaveLoad.cpp:251
13331584 msgid "Game saved."
13341585 msgstr "Jogo gravado."
13351586
1336 #: ../../../src/SDLInputState.cpp:582
1587 #: ../../../src/SDLInputState.cpp:643
1588 msgid "BkSp"
1589 msgstr ""
1590
1591 #: ../../../src/SDLInputState.cpp:644
1592 msgid "Caps"
1593 msgstr ""
1594
1595 #: ../../../src/SDLInputState.cpp:645
1596 msgid "Del"
1597 msgstr ""
1598
1599 #: ../../../src/SDLInputState.cpp:647 ../../../src/SDLInputState.cpp:677
1600 msgid "End"
1601 msgstr "End"
1602
1603 #: ../../../src/SDLInputState.cpp:648
1604 msgid "Esc"
1605 msgstr ""
1606
1607 #: ../../../src/SDLInputState.cpp:649 ../../../src/SDLInputState.cpp:679
1608 msgid "Home"
1609 msgstr "Home"
1610
1611 #: ../../../src/SDLInputState.cpp:650
1612 msgid "Ins"
1613 msgstr ""
1614
1615 #: ../../../src/SDLInputState.cpp:651
1616 msgid "LAlt"
1617 msgstr ""
1618
1619 #: ../../../src/SDLInputState.cpp:652
1620 msgid "LCtrl"
1621 msgstr ""
1622
1623 #: ../../../src/SDLInputState.cpp:654
1624 msgid "LShft"
1625 msgstr ""
1626
1627 #: ../../../src/SDLInputState.cpp:655
1628 msgid "Num"
1629 msgstr ""
1630
1631 #: ../../../src/SDLInputState.cpp:656
1632 msgid "PgDn"
1633 msgstr ""
1634
1635 #: ../../../src/SDLInputState.cpp:657
1636 msgid "PgUp"
1637 msgstr ""
1638
1639 #: ../../../src/SDLInputState.cpp:658 ../../../src/SDLInputState.cpp:688
1640 msgid "Pause"
1641 msgstr "Pause"
1642
1643 #: ../../../src/SDLInputState.cpp:659
1644 msgid "Print"
1645 msgstr ""
1646
1647 #: ../../../src/SDLInputState.cpp:660
1648 msgid "RAlt"
1649 msgstr ""
1650
1651 #: ../../../src/SDLInputState.cpp:661
1652 msgid "RCtrl"
1653 msgstr ""
1654
1655 #: ../../../src/SDLInputState.cpp:662
1656 msgid "Ret"
1657 msgstr ""
1658
1659 #: ../../../src/SDLInputState.cpp:664
1660 msgid "RShft"
1661 msgstr ""
1662
1663 #: ../../../src/SDLInputState.cpp:665
1664 msgid "SLock"
1665 msgstr ""
1666
1667 #: ../../../src/SDLInputState.cpp:666
1668 msgid "Spc"
1669 msgstr ""
1670
1671 #: ../../../src/SDLInputState.cpp:667 ../../../src/SDLInputState.cpp:697
1672 msgid "Tab"
1673 msgstr "Tab"
1674
1675 #: ../../../src/SDLInputState.cpp:673
13371676 msgid "Backspace"
13381677 msgstr "Retroceder"
13391678
1340 #: ../../../src/SDLInputState.cpp:583
1679 #: ../../../src/SDLInputState.cpp:674
13411680 msgid "CapsLock"
13421681 msgstr "Tecla de Maiúsculas"
13431682
1344 #: ../../../src/SDLInputState.cpp:586
1345 msgid "End"
1346 msgstr "End"
1347
1348 #: ../../../src/SDLInputState.cpp:587
1683 #: ../../../src/SDLInputState.cpp:678
13491684 msgid "Escape"
13501685 msgstr "Escape"
13511686
1352 #: ../../../src/SDLInputState.cpp:588
1353 msgid "Home"
1354 msgstr "Home"
1355
1356 #: ../../../src/SDLInputState.cpp:589
1687 #: ../../../src/SDLInputState.cpp:680
13571688 msgid "Insert"
13581689 msgstr "Insert"
13591690
1360 #: ../../../src/SDLInputState.cpp:590
1691 #: ../../../src/SDLInputState.cpp:681
13611692 msgid "Left Alt"
13621693 msgstr "Alt Esquerdo"
13631694
1364 #: ../../../src/SDLInputState.cpp:591
1695 #: ../../../src/SDLInputState.cpp:682
13651696 msgid "Left Ctrl"
13661697 msgstr "Ctrl Esquerdo"
13671698
1368 #: ../../../src/SDLInputState.cpp:593
1699 #: ../../../src/SDLInputState.cpp:684
13691700 msgid "Left Shift"
13701701 msgstr "Shift Esquerdo"
13711702
1372 #: ../../../src/SDLInputState.cpp:594
1703 #: ../../../src/SDLInputState.cpp:685
13731704 msgid "NumLock"
13741705 msgstr "NumLock"
13751706
1376 #: ../../../src/SDLInputState.cpp:595
1707 #: ../../../src/SDLInputState.cpp:686
13771708 msgid "PageDown"
13781709 msgstr "PageDown"
13791710
1380 #: ../../../src/SDLInputState.cpp:596
1711 #: ../../../src/SDLInputState.cpp:687
13811712 msgid "PageUp"
13821713 msgstr "PageUp"
13831714
1384 #: ../../../src/SDLInputState.cpp:597
1385 msgid "Pause"
1386 msgstr "Pause"
1387
1388 #: ../../../src/SDLInputState.cpp:598
1715 #: ../../../src/SDLInputState.cpp:689
13891716 msgid "PrintScreen"
13901717 msgstr "PrintScreen"
13911718
1392 #: ../../../src/SDLInputState.cpp:599
1719 #: ../../../src/SDLInputState.cpp:690
13931720 msgid "Right Alt"
13941721 msgstr "Alt Direito"
13951722
1396 #: ../../../src/SDLInputState.cpp:600
1723 #: ../../../src/SDLInputState.cpp:691
13971724 msgid "Right Ctrl"
13981725 msgstr "Ctrl Direito"
13991726
1400 #: ../../../src/SDLInputState.cpp:601
1727 #: ../../../src/SDLInputState.cpp:692
14011728 msgid "Return"
14021729 msgstr "Enter"
14031730
1404 #: ../../../src/SDLInputState.cpp:603
1731 #: ../../../src/SDLInputState.cpp:694
14051732 msgid "Right Shift"
14061733 msgstr "Shift Direito"
14071734
1408 #: ../../../src/SDLInputState.cpp:604
1735 #: ../../../src/SDLInputState.cpp:695
14091736 msgid "ScrollLock"
14101737 msgstr "ScrollLock"
14111738
1412 #: ../../../src/SDLInputState.cpp:605
1739 #: ../../../src/SDLInputState.cpp:696
14131740 msgid "Space"
14141741 msgstr "Espaço"
14151742
1416 #: ../../../src/SDLInputState.cpp:606
1417 msgid "Tab"
1418 msgstr "Tab"
1419
1420 #: ../../../src/SDLInputState.cpp:620
1743 #: ../../../src/SDLInputState.cpp:710
1744 #, c-format
1745 msgid "M%d"
1746 msgstr ""
1747
1748 #: ../../../src/SDLInputState.cpp:716
14211749 #, c-format
14221750 msgid "Mouse %d"
14231751 msgstr "Rato %d"
14241752
1425 #: ../../../src/SDLInputState.cpp:628
1753 #: ../../../src/SDLInputState.cpp:726
1754 #, c-format
1755 msgid "JX%d-"
1756 msgstr ""
1757
1758 #: ../../../src/SDLInputState.cpp:728
14261759 #, c-format
14271760 msgid "Axis %d -"
14281761 msgstr "Eixo %d -"
14291762
1430 #: ../../../src/SDLInputState.cpp:630
1763 #: ../../../src/SDLInputState.cpp:732
1764 #, c-format
1765 msgid "JX%d+"
1766 msgstr ""
1767
1768 #: ../../../src/SDLInputState.cpp:734
14311769 #, c-format
14321770 msgid "Axis %d +"
14331771 msgstr "Eixo %d +"
14341772
1435 #: ../../../src/SDLInputState.cpp:633
1773 #: ../../../src/SDLInputState.cpp:739
1774 #, c-format
1775 msgid "JB%d"
1776 msgstr ""
1777
1778 #: ../../../src/SDLInputState.cpp:741
14361779 #, c-format
14371780 msgid "Button %d"
14381781 msgstr "Botão %d"
14391782
1440 #: ../../../src/SDLInputState.cpp:637
1441 msgid "(none)"
1442 msgstr "(nenhum)"
1443
1444 #: ../../../src/SDLInputState.cpp:677
1783 #: ../../../src/SDLInputState.cpp:787
14451784 msgid "Touch control D-Pad"
14461785 msgstr "D-Pad sensível ao toque"
14471786
1448 #: ../../../src/SDLInputState.cpp:701
1787 #: ../../../src/SDLInputState.cpp:810
14491788 msgid "Touch control buttons"
14501789 msgstr "Botões sensíveis ao toque"
14511790
1452 #: ../../../src/SDLInputState.cpp:716
1791 #: ../../../src/SDLInputState.cpp:824
14531792 msgid "Tap"
14541793 msgstr "Toque"
14551794
1456 #: ../../../src/SDLInputState.cpp:760 ../../../src/SDLInputState.cpp:764
1457 #: ../../../src/SDLInputState.cpp:768
1795 #: ../../../src/SDLInputState.cpp:876 ../../../src/SDLInputState.cpp:878
1796 #, c-format
1797 msgid "Can not bind: %s"
1798 msgstr "Não é possível associar: %s"
1799
1800 #: ../../../src/SDLInputState.cpp:890 ../../../src/SDLInputState.cpp:894
1801 #: ../../../src/SDLInputState.cpp:898
14581802 #, c-format
14591803 msgid "'%s' is no longer bound to:"
14601804 msgstr "'%s' já não está associado a:"
16171961 msgid "Base MP"
16181962 msgstr "Mana base"
16191963
1620 #: ../../../src/Utils.cpp:346
1964 #: ../../../src/Utils.cpp:365
16211965 msgid "k"
16221966 msgstr "m"
16231967
1624 #: ../../../src/Utils.cpp:580
1968 #: ../../../src/Utils.cpp:635
16251969 #, c-format
16261970 msgid "%s second"
16271971 msgstr "%s segundo"
16281972
1629 #: ../../../src/Utils.cpp:583
1973 #: ../../../src/Utils.cpp:638
16301974 #, c-format
16311975 msgid "%s seconds"
16321976 msgstr "%s segundos"
44 #
55 # Translators:
66 # Vicente Monteiro, 2018
7 # Rui <xymarior@yandex.com>, 2018
7 # Rui <xymarior@yandex.com>, 2019
88 #
99 #, fuzzy
1010 msgid ""
1111 msgstr ""
1212 "Project-Id-Version: PACKAGE VERSION\n"
1313 "Report-Msgid-Bugs-To: \n"
14 "POT-Creation-Date: 2018-11-17 21:50-0500\n"
14 "POT-Creation-Date: 2021-05-23 20:34-0400\n"
1515 "PO-Revision-Date: 2018-03-28 19:16+0000\n"
16 "Last-Translator: Rui <xymarior@yandex.com>, 2018\n"
16 "Last-Translator: Rui <xymarior@yandex.com>, 2019\n"
1717 "Language-Team: Portuguese (Brazil) (https://www.transifex.com/flareorg/teams/84925/pt_BR/)\n"
1818 "MIME-Version: 1.0\n"
1919 "Content-Type: text/plain; charset=UTF-8\n"
2121 "Language: pt_BR\n"
2222 "Plural-Forms: nplurals=2; plural=(n > 1);\n"
2323
24 #: ../../../src/Avatar.cpp:367
24 #: ../../../src/Avatar.cpp:391
25 msgid "Your health is low!"
26 msgstr ""
27
28 #: ../../../src/Avatar.cpp:421
2529 #, c-format
2630 msgid "Congratulations, you have reached level %d!"
2731 msgstr "Parabéns, você atingiu o nível %d!"
2832
29 #: ../../../src/Avatar.cpp:369
30 msgid "You may increase one attribute through the Character Menu."
31 msgstr "Você pode aumentar um atributo através do menu do Personagem."
32
33 #: ../../../src/Avatar.cpp:583
34 msgid "You are defeated. Game over! ${INPUT_CONTINUE} to exit to Title."
35 msgstr ""
36 "Você foi derrotado. Fim do Jogo! ${INPUT_CONTINUE} para voltar a tela "
37 "principal."
38
39 #: ../../../src/Avatar.cpp:589
40 msgid "You are defeated. ${INPUT_CONTINUE} to continue."
41 msgstr "Você foi derrotado. ${INPUT_CONTINUE} para continuar."
42
43 #: ../../../src/Avatar.cpp:839
33 #: ../../../src/Avatar.cpp:423
34 msgid "You may increase one or more attributes through the Character Menu."
35 msgstr ""
36
37 #: ../../../src/Avatar.cpp:427
38 msgid "You may unlock one or more abilities through the Powers Menu."
39 msgstr ""
40
41 #: ../../../src/Avatar.cpp:689
42 msgid "You are defeated."
43 msgstr ""
44
45 #: ../../../src/Avatar.cpp:935
4446 msgid "Transformation expired. You have been moved back to a safe place."
4547 msgstr "Transformação expirada. Você foi transferido a um lugar seguro."
4648
47 #: ../../../src/CampaignManager.cpp:153
49 #: ../../../src/CampaignManager.cpp:152
4850 #, c-format
4951 msgid "%d %s removed."
5052 msgstr "%d %s removido."
5153
52 #: ../../../src/CampaignManager.cpp:162
54 #: ../../../src/CampaignManager.cpp:171
55 #, c-format
56 msgid "%s x%d removed."
57 msgstr ""
58
59 #: ../../../src/CampaignManager.cpp:173
5360 #, c-format
5461 msgid "%s removed."
5562 msgstr "%s removido."
5663
57 #: ../../../src/CampaignManager.cpp:175
64 #: ../../../src/CampaignManager.cpp:187
65 #, c-format
66 msgid "You receive %d %s."
67 msgstr "Você recebeu %d %s."
68
69 #: ../../../src/CampaignManager.cpp:191
70 #, c-format
71 msgid "You receive %s x%d."
72 msgstr "Você recebeu %s x%d."
73
74 #: ../../../src/CampaignManager.cpp:193
5875 #, c-format
5976 msgid "You receive %s."
6077 msgstr "Você recebeu %s."
6178
62 #: ../../../src/CampaignManager.cpp:177
63 #, c-format
64 msgid "You receive %s x%d."
65 msgstr "Você recebeu %s x%d."
66
67 #: ../../../src/CampaignManager.cpp:186
68 #, c-format
69 msgid "You receive %d %s."
70 msgstr "Você recebeu %d %s."
71
72 #: ../../../src/CampaignManager.cpp:195
79 #: ../../../src/CampaignManager.cpp:210
7380 #, c-format
7481 msgid "You receive %d XP."
7582 msgstr "Você recebeu %d XP."
7683
77 #: ../../../src/CampaignManager.cpp:201
84 #: ../../../src/CampaignManager.cpp:216
7885 msgid "HP restored."
7986 msgstr "HP restaurado."
8087
81 #: ../../../src/CampaignManager.cpp:205
88 #: ../../../src/CampaignManager.cpp:220
8289 msgid "MP restored."
8390 msgstr "MP restaurado."
8491
85 #: ../../../src/CampaignManager.cpp:210
92 #: ../../../src/CampaignManager.cpp:225
8693 msgid "HP and MP restored."
8794 msgstr "HP e MP restaurados."
8895
89 #: ../../../src/CampaignManager.cpp:214
96 #: ../../../src/CampaignManager.cpp:229
9097 msgid "Negative effects removed."
9198 msgstr "Efeitos negativos removidos."
9299
93 #: ../../../src/CampaignManager.cpp:220
100 #: ../../../src/CampaignManager.cpp:235
94101 msgid "HP and MP restored, negative effects removed"
95102 msgstr "HP e MP restaurados, efeitos negativos removidos"
96103
114121 "\n"
115122 "O renderizador padrão, geralmente mais rápido que o renderizador SDL software."
116123
117 #: ../../../src/EngineSettings.cpp:561
124 #: ../../../src/EngineSettings.cpp:586
118125 msgid "Adventurer"
119126 msgstr "Aventureiro"
120127
121 #: ../../../src/Entity.cpp:511
128 #: ../../../src/Entity.cpp:527
122129 msgid "miss"
123130 msgstr "errou"
124131
125 #: ../../../src/Entity.cpp:548 ../../../src/PowerManager.cpp:1152
126 #: ../../../src/StatBlock.cpp:805 ../../../src/StatBlock.cpp:811
132 #: ../../../src/Entity.cpp:565 ../../../src/PowerManager.cpp:1224
133 #: ../../../src/StatBlock.cpp:917 ../../../src/StatBlock.cpp:923
127134 #, c-format
128135 msgid "+%d HP"
129136 msgstr "+%d HP"
130137
131 #: ../../../src/Entity.cpp:555 ../../../src/StatBlock.cpp:816
132 #: ../../../src/StatBlock.cpp:822
138 #: ../../../src/Entity.cpp:572 ../../../src/StatBlock.cpp:928
139 #: ../../../src/StatBlock.cpp:934
133140 #, c-format
134141 msgid "+%d MP"
135142 msgstr "+%d MP"
136143
137 #: ../../../src/EventManager.cpp:738
144 #: ../../../src/EventManager.cpp:792
138145 msgid "Unknown destination"
139146 msgstr "Destino desconhecido"
140147
141 #: ../../../src/GameStateConfigBase.cpp:89
142 #: ../../../src/GameStateConfigBase.cpp:110
148 #: ../../../src/GameState.cpp:37 ../../../src/GameState.cpp:58
149 msgid "Loading..."
150 msgstr "Carregando..."
151
152 #: ../../../src/GameStateLoad.cpp:90 ../../../src/GameStateLoad.cpp:103
153 msgid "Delete Save"
154 msgstr "Excluir"
155
156 #: ../../../src/GameStateLoad.cpp:90
157 msgid "Delete this save?"
158 msgstr "Excluir jogo salvo?"
159
160 #: ../../../src/GameStateLoad.cpp:92
161 msgid "Exit to Title"
162 msgstr "Voltar"
163
164 #: ../../../src/GameStateLoad.cpp:95
165 msgid "New Game"
166 msgstr "Novo"
167
168 #: ../../../src/GameStateLoad.cpp:99 ../../../src/GameStateLoad.cpp:607
169 msgid "Choose a Slot"
170 msgstr "Selecione um espaço"
171
172 #: ../../../src/GameStateLoad.cpp:580 ../../../src/GameStateLoad.cpp:601
173 msgid "Enable a story mod to continue"
174 msgstr "Ative o mod de campanha para continuar"
175
176 #: ../../../src/GameStateLoad.cpp:596
177 msgid "Load Game"
178 msgstr "Continuar"
179
180 #: ../../../src/GameStateLoad.cpp:705
181 msgid "Entering game world..."
182 msgstr "Entrando no mundo do jogo..."
183
184 #: ../../../src/GameStateLoad.cpp:708
185 msgid "Loading saved game..."
186 msgstr "Carregando jogo salvo..."
187
188 #: ../../../src/GameStateLoad.cpp:741
189 msgid "Invalid save"
190 msgstr "Jogo salvo inválido"
191
192 #: ../../../src/GameStateLoad.cpp:765 ../../../src/ItemManager.cpp:745
193 #: ../../../src/MenuPowers.cpp:860 ../../../src/MenuPowers.cpp:1219
194 #: ../../../src/MenuPowers.cpp:1631
195 #, c-format
196 msgid "Level %d"
197 msgstr "Nível %d"
198
199 #: ../../../src/GameStateNew.cpp:66 ../../../src/InputState.cpp:416
200 #: ../../../src/MenuConfig.cpp:246
201 msgid "Cancel"
202 msgstr "Cancelar"
203
204 #: ../../../src/GameStateNew.cpp:69
205 msgid "Create"
206 msgstr "Criar"
207
208 #: ../../../src/GameStateNew.cpp:77
209 msgid "Randomize"
210 msgstr "Aleatória"
211
212 #: ../../../src/GameStateNew.cpp:93
213 msgid "Choose a Portrait"
214 msgstr "Escolha um retrato"
215
216 #: ../../../src/GameStateNew.cpp:97
217 msgid "Choose a Name"
218 msgstr "Digite um nome"
219
220 #: ../../../src/GameStateNew.cpp:101
221 msgid "Permadeath?"
222 msgstr "Morte permanente?"
223
224 #: ../../../src/GameStateNew.cpp:105
225 msgid "Choose a Class"
226 msgstr "Escolha uma classe"
227
228 #: ../../../src/GameStateTitle.cpp:107
229 msgid "Play Game"
230 msgstr "Jogar"
231
232 #: ../../../src/GameStateTitle.cpp:110
233 msgid "Enable a core mod to continue"
234 msgstr "Ative o mod core para continuar"
235
236 #: ../../../src/GameStateTitle.cpp:114 ../../../src/MenuMiniMap.cpp:152
237 msgid "Configuration"
238 msgstr "Opções "
239
240 #: ../../../src/GameStateTitle.cpp:117
241 msgid "Credits"
242 msgstr "Sobre"
243
244 #: ../../../src/GameStateTitle.cpp:120
245 msgid "Exit Game"
246 msgstr "Sair"
247
248 #: ../../../src/InputState.cpp:417
249 msgid "Accept"
250 msgstr "Aceitar"
251
252 #: ../../../src/InputState.cpp:418 ../../../src/MenuMovementType.cpp:123
253 #: ../../../src/MenuMovementType.cpp:132 ../../../src/SDLInputState.cpp:668
254 #: ../../../src/SDLInputState.cpp:698
255 msgid "Up"
256 msgstr "Cima"
257
258 #: ../../../src/InputState.cpp:419 ../../../src/MenuMovementType.cpp:125
259 #: ../../../src/MenuMovementType.cpp:134 ../../../src/SDLInputState.cpp:646
260 #: ../../../src/SDLInputState.cpp:676
261 msgid "Down"
262 msgstr "Baixo"
263
264 #: ../../../src/InputState.cpp:420 ../../../src/MenuMovementType.cpp:124
265 #: ../../../src/MenuMovementType.cpp:133 ../../../src/SDLInputState.cpp:653
266 #: ../../../src/SDLInputState.cpp:683
267 msgid "Left"
268 msgstr "Esquerda"
269
270 #: ../../../src/InputState.cpp:421 ../../../src/MenuMovementType.cpp:126
271 #: ../../../src/MenuMovementType.cpp:135 ../../../src/SDLInputState.cpp:663
272 #: ../../../src/SDLInputState.cpp:693
273 msgid "Right"
274 msgstr "Direita"
275
276 #: ../../../src/InputState.cpp:422
277 msgid "Bar1"
278 msgstr "Barra1"
279
280 #: ../../../src/InputState.cpp:423
281 msgid "Bar2"
282 msgstr "Barra2"
283
284 #: ../../../src/InputState.cpp:424
285 msgid "Bar3"
286 msgstr "Barra3"
287
288 #: ../../../src/InputState.cpp:425
289 msgid "Bar4"
290 msgstr "Barra4"
291
292 #: ../../../src/InputState.cpp:426
293 msgid "Bar5"
294 msgstr "Barra5"
295
296 #: ../../../src/InputState.cpp:427
297 msgid "Bar6"
298 msgstr "Barra6"
299
300 #: ../../../src/InputState.cpp:428
301 msgid "Bar7"
302 msgstr "Barra7"
303
304 #: ../../../src/InputState.cpp:429
305 msgid "Bar8"
306 msgstr "Barra8"
307
308 #: ../../../src/InputState.cpp:430
309 msgid "Bar9"
310 msgstr "Barra9"
311
312 #: ../../../src/InputState.cpp:431
313 msgid "Bar0"
314 msgstr "Barra0"
315
316 #: ../../../src/InputState.cpp:432 ../../../src/MenuActionBar.cpp:84
317 #: ../../../src/MenuCharacter.cpp:54
318 msgid "Character"
319 msgstr "Personagem"
320
321 #: ../../../src/InputState.cpp:433 ../../../src/MenuActionBar.cpp:85
322 #: ../../../src/MenuInventory.cpp:130 ../../../src/MenuVendor.cpp:59
323 msgid "Inventory"
324 msgstr "Inventario"
325
326 #: ../../../src/InputState.cpp:434 ../../../src/MenuActionBar.cpp:86
327 #: ../../../src/MenuPowers.cpp:158
328 msgid "Powers"
329 msgstr "Poderes"
330
331 #: ../../../src/InputState.cpp:435 ../../../src/MenuActionBar.cpp:87
332 #: ../../../src/MenuLog.cpp:72
333 msgid "Log"
334 msgstr "Diário"
335
336 #: ../../../src/InputState.cpp:436
337 msgid "Main1"
338 msgstr "Principal1"
339
340 #: ../../../src/InputState.cpp:437
341 msgid "Main2"
342 msgstr "Principal2"
343
344 #: ../../../src/InputState.cpp:438
345 msgid "Ctrl"
346 msgstr "Ctrl"
347
348 #: ../../../src/InputState.cpp:439
349 msgid "Shift"
350 msgstr "Shift"
351
352 #: ../../../src/InputState.cpp:440
353 msgid "Alt"
354 msgstr "Alt"
355
356 #: ../../../src/InputState.cpp:441 ../../../src/SDLInputState.cpp:675
357 msgid "Delete"
358 msgstr "Delete"
359
360 #: ../../../src/InputState.cpp:442
361 msgid "ActionBar Accept"
362 msgstr "Barra de Ação Aceitar"
363
364 #: ../../../src/InputState.cpp:443
365 msgid "ActionBar Left"
366 msgstr "Barra de Ação Esquerda"
367
368 #: ../../../src/InputState.cpp:444
369 msgid "ActionBar Right"
370 msgstr "Barra de Ação Direita"
371
372 #: ../../../src/InputState.cpp:445
373 msgid "ActionBar Use"
374 msgstr "Barra de Ação Usar"
375
376 #: ../../../src/InputState.cpp:446
377 msgid "Developer Menu"
378 msgstr "Menu do desenvolvedor"
379
380 #: ../../../src/InputState.cpp:448
381 msgid "Left Mouse"
382 msgstr "Mouse esq."
383
384 #: ../../../src/InputState.cpp:449
385 msgid "Middle Mouse"
386 msgstr "Mouse do Meio"
387
388 #: ../../../src/InputState.cpp:450
389 msgid "Right Mouse"
390 msgstr "Mouse dir."
391
392 #: ../../../src/InputState.cpp:451
393 msgid "Wheel Up"
394 msgstr "Roda para Cima"
395
396 #: ../../../src/InputState.cpp:452
397 msgid "Wheel Down"
398 msgstr "Roda para Baixo"
399
400 #: ../../../src/InputState.cpp:453
401 msgid "Mouse X1"
402 msgstr "Mouse X1"
403
404 #: ../../../src/InputState.cpp:454
405 msgid "Mouse X2"
406 msgstr "Mouse X2"
407
408 #: ../../../src/ItemManager.cpp:475
409 msgid "Unknown Item"
410 msgstr "Item Desconhecido"
411
412 #: ../../../src/ItemManager.cpp:646 ../../../src/MenuPowers.cpp:959
413 #, c-format
414 msgid "%d%% Speed"
415 msgstr "%d%% Velocidade"
416
417 #: ../../../src/ItemManager.cpp:650 ../../../src/MenuPowers.cpp:962
418 #, c-format
419 msgid "%d%% Attack Speed"
420 msgstr "%d%% Velocidade de Ataque"
421
422 #: ../../../src/ItemManager.cpp:672 ../../../src/MenuCharacter.cpp:352
423 #: ../../../src/MenuPowers.cpp:931
424 #, c-format
425 msgid "Resistance (%s)"
426 msgstr "Resistência (%s)"
427
428 #: ../../../src/ItemManager.cpp:682
429 #, c-format
430 msgid "Requires %s"
431 msgstr "Necessário %s"
432
433 #: ../../../src/ItemManager.cpp:731
434 msgid "Quest Item"
435 msgstr "Item de Missão"
436
437 #: ../../../src/ItemManager.cpp:758
438 #, c-format
439 msgid "Quality: %s"
440 msgstr "Quantidade: %s"
441
442 #: ../../../src/ItemManager.cpp:783
443 #, c-format
444 msgid "Absorb: %d-%d"
445 msgstr "Absorver: %d-%d"
446
447 #: ../../../src/ItemManager.cpp:785
448 #, c-format
449 msgid "Absorb: %d"
450 msgstr "Absorver: %d"
451
452 #: ../../../src/ItemManager.cpp:825 ../../../src/MenuPowers.cpp:1206
453 #: ../../../src/MenuPowers.cpp:1209
454 #, c-format
455 msgid "Requires Level %d"
456 msgstr "Nível Necessário %d"
457
458 #: ../../../src/ItemManager.cpp:836 ../../../src/MenuPowers.cpp:1198
459 #: ../../../src/MenuPowers.cpp:1200
460 #, c-format
461 msgid "Requires %s %d"
462 msgstr "Necessário %s %d"
463
464 #: ../../../src/ItemManager.cpp:847
465 #, c-format
466 msgid "Requires Class: %s"
467 msgstr "Classe Necessária : %s"
468
469 #: ../../../src/ItemManager.cpp:863 ../../../src/ItemManager.cpp:875
470 #, c-format
471 msgid "Buy Price: %d %s"
472 msgstr "Preço de Compra: %d %s"
473
474 #: ../../../src/ItemManager.cpp:865 ../../../src/ItemManager.cpp:877
475 #, c-format
476 msgid "Buy Price: %d %s each"
477 msgstr "Preço de Compra: %d %s cada"
478
479 #: ../../../src/ItemManager.cpp:885
480 #, c-format
481 msgid "Sell Price: %d %s"
482 msgstr "Preço de Venda: %d %s"
483
484 #: ../../../src/ItemManager.cpp:887
485 #, c-format
486 msgid "Sell Price: %d %s each"
487 msgstr "Preço de Venda: %d %s cada"
488
489 #: ../../../src/ItemManager.cpp:896
490 msgid "Set:"
491 msgstr "Conjunto:"
492
493 #: ../../../src/ItemManager.cpp:903
494 #, c-format
495 msgid "%d items:"
496 msgstr "%d Items:"
497
498 #: ../../../src/ItemManager.cpp:915
499 #, c-format
500 msgid "Press [%s] to read"
501 msgstr "Pressione [%s] para ler"
502
503 #: ../../../src/ItemManager.cpp:918
504 #, c-format
505 msgid "Press [%s] to use"
506 msgstr "Pressione [%s] para usar"
507
508 #: ../../../src/MenuActionBar.cpp:239 ../../../src/MenuActionBar.cpp:246
509 #: ../../../src/MenuActionBar.cpp:249 ../../../src/MenuActionBar.cpp:255
510 #, c-format
511 msgid "Hotkey: %s"
512 msgstr "Atalho: %s"
513
514 #: ../../../src/MenuActionBar.cpp:621
515 msgid "Not enough MP."
516 msgstr "MP insuficiente."
517
518 #: ../../../src/MenuActiveEffects.cpp:124
519 #, c-format
520 msgid "x%d"
521 msgstr "x%d"
522
523 #: ../../../src/MenuActiveEffects.cpp:219
524 msgid "Remaining:"
525 msgstr "Restante:"
526
527 #: ../../../src/MenuActiveEffects.cpp:225
528 #, c-format
529 msgid "x%d stacks"
530 msgstr "x%d pilhas"
531
532 #: ../../../src/MenuCharacter.cpp:73 ../../../src/MenuCharacter.cpp:78
533 msgid "Name"
534 msgstr "Nome"
535
536 #: ../../../src/MenuCharacter.cpp:74 ../../../src/MenuCharacter.cpp:79
537 msgid "Level"
538 msgstr "Nível"
539
540 #: ../../../src/MenuCharacter.cpp:309
541 #, c-format
542 msgid "Available stat points: %d"
543 msgstr ""
544
545 #: ../../../src/MenuCharacter.cpp:353
546 #, c-format
547 msgid "Reduces the damage taken from \"%s\" elemental attacks."
548 msgstr "Reduz o dano recebido de \"%s\" ataques elementais."
549
550 #: ../../../src/MenuCharacter.cpp:363 ../../../src/MenuManager.cpp:301
551 #, c-format
552 msgid "XP: %d"
553 msgstr "XP: %d"
554
555 #: ../../../src/MenuCharacter.cpp:365
556 #, c-format
557 msgid "Next: %d"
558 msgstr "Próximo: %d"
559
560 #: ../../../src/MenuCharacter.cpp:371
561 #, c-format
562 msgid "base (%d), bonus (%d)"
563 msgstr "básico (%d), bônus (%d)"
564
565 #: ../../../src/MenuCharacter.cpp:379 ../../../src/MenuCharacter.cpp:393
566 msgid "Related stats:"
567 msgstr "Estatísticas:"
568
569 #: ../../../src/MenuCharacter.cpp:419 ../../../src/MenuCharacter.cpp:443
570 #, c-format
571 msgid "Each level grants %d."
572 msgstr "Cada nível concede %d."
573
574 #: ../../../src/MenuCharacter.cpp:423 ../../../src/MenuCharacter.cpp:447
575 #, c-format
576 msgid "Each point of %s grants %d."
577 msgstr "Cada ponto de %s concede %d."
578
579 #: ../../../src/MenuConfig.cpp:122 ../../../src/MenuConfig.cpp:1171
580 msgid "Clear"
581 msgstr "Limpar"
582
583 #: ../../../src/MenuConfig.cpp:122 ../../../src/MenuConfig.cpp:1169
584 msgid "Assign:"
585 msgstr "Atribuir:"
586
587 #: ../../../src/MenuConfig.cpp:123 ../../../src/MenuConfig.cpp:245
143588 msgid "Defaults"
144589 msgstr "Padrões"
145590
146 #: ../../../src/GameStateConfigBase.cpp:89
591 #: ../../../src/MenuConfig.cpp:123
147592 msgid "Reset ALL settings?"
148593 msgstr "Restaurar padrões?"
149594
150 #: ../../../src/GameStateConfigBase.cpp:109 ../../../src/MenuNumPicker.cpp:49
595 #: ../../../src/MenuConfig.cpp:244 ../../../src/MenuNumPicker.cpp:49
151596 msgid "OK"
152597 msgstr "OK"
153598
154 #: ../../../src/GameStateConfigBase.cpp:111 ../../../src/GameStateNew.cpp:65
155 #: ../../../src/InputState.cpp:401
156 msgid "Cancel"
157 msgstr "Cancelar"
158
159 #: ../../../src/GameStateConfigBase.cpp:160
160 #: ../../../src/GameStateConfigDesktop.cpp:130
599 #: ../../../src/MenuConfig.cpp:248 ../../../src/MenuGameOver.cpp:72
600 msgid "Continue"
601 msgstr "Continuar"
602
603 #: ../../../src/MenuConfig.cpp:250
604 msgid "Save Game"
605 msgstr ""
606
607 #: ../../../src/MenuConfig.cpp:293
608 msgid "Default"
609 msgstr ""
610
611 #: ../../../src/MenuConfig.cpp:293
612 msgid ""
613 "Show all loot tooltips, except for those that would be obscured by the "
614 "player or an enemy. Temporarily show all loot tooltips with 'Alt'."
615 msgstr ""
616
617 #: ../../../src/MenuConfig.cpp:294
618 msgid "Show all"
619 msgstr ""
620
621 #: ../../../src/MenuConfig.cpp:294
622 msgid ""
623 "Always show loot tooltips. Temporarily hide all loot tooltips with 'Alt'."
624 msgstr ""
625
626 #: ../../../src/MenuConfig.cpp:295 ../../../src/MenuConfig.cpp:300
627 msgid "Hidden"
628 msgstr ""
629
630 #: ../../../src/MenuConfig.cpp:295
631 msgid ""
632 "Always hide loot tooltips, except for when a piece of loot is hovered with "
633 "the mouse cursor. Temporarily show all loot tooltips with 'Alt'."
634 msgstr ""
635
636 #: ../../../src/MenuConfig.cpp:298
637 msgid "Visible"
638 msgstr ""
639
640 #: ../../../src/MenuConfig.cpp:299
641 msgid "Visible (2x zoom)"
642 msgstr ""
643
644 #: ../../../src/MenuConfig.cpp:303
645 msgid ""
646 "Controls the type of warning to be activated when the player is below the "
647 "low health threshold."
648 msgstr ""
649
650 #: ../../../src/MenuConfig.cpp:304
651 msgid "- Display a message"
652 msgstr ""
653
654 #: ../../../src/MenuConfig.cpp:305
655 msgid "- Play a sound"
656 msgstr ""
657
658 #: ../../../src/MenuConfig.cpp:306
659 msgid "- Change the cursor"
660 msgstr ""
661
662 #: ../../../src/MenuConfig.cpp:308
663 msgid "Disabled"
664 msgstr ""
665
666 #: ../../../src/MenuConfig.cpp:309
667 msgid "All"
668 msgstr ""
669
670 #: ../../../src/MenuConfig.cpp:310
671 msgid "Message & Cursor"
672 msgstr ""
673
674 #: ../../../src/MenuConfig.cpp:311
675 msgid "Message & Sound"
676 msgstr ""
677
678 #: ../../../src/MenuConfig.cpp:312
679 msgid "Sound & Cursor"
680 msgstr ""
681
682 #: ../../../src/MenuConfig.cpp:313
683 msgid "Message"
684 msgstr ""
685
686 #: ../../../src/MenuConfig.cpp:314
687 msgid "Cursor"
688 msgstr ""
689
690 #: ../../../src/MenuConfig.cpp:315
691 msgid "Sound"
692 msgstr ""
693
694 #: ../../../src/MenuConfig.cpp:321
695 msgid ""
696 "When the player's health drops below the given threshold, the low health "
697 "notifications are triggered if one or more of them is enabled."
698 msgstr ""
699
700 #: ../../../src/MenuConfig.cpp:334 ../../../src/MenuConfig.cpp:1587
701 #: ../../../src/MenuGameOver.cpp:116
702 msgid "Exit"
703 msgstr "Sair"
704
705 #: ../../../src/MenuConfig.cpp:335
706 msgid "Video"
707 msgstr "Video"
708
709 #: ../../../src/MenuConfig.cpp:336
161710 msgid "Audio"
162711 msgstr "Áudio"
163712
164 #: ../../../src/GameStateConfigBase.cpp:161
165 #: ../../../src/GameStateConfigDesktop.cpp:131
713 #: ../../../src/MenuConfig.cpp:337
166714 msgid "Interface"
167715 msgstr "Interface"
168716
169 #: ../../../src/GameStateConfigBase.cpp:162
170 #: ../../../src/GameStateConfigDesktop.cpp:134
717 #: ../../../src/MenuConfig.cpp:338
718 msgid "Input"
719 msgstr "Entrada"
720
721 #: ../../../src/MenuConfig.cpp:339
722 msgid "Keybindings"
723 msgstr "Teclas de Atalho"
724
725 #: ../../../src/MenuConfig.cpp:340
171726 msgid "Mods"
172727 msgstr "Mods"
173728
174 #: ../../../src/GameStateConfigBase.cpp:249 ../../../src/MenuExit.cpp:72
729 #: ../../../src/MenuConfig.cpp:352
730 msgid "Paused"
731 msgstr "Interrompido"
732
733 #: ../../../src/MenuConfig.cpp:355
734 msgid "Time Played"
735 msgstr ""
736
737 #: ../../../src/MenuConfig.cpp:361
738 msgid "Renderer"
739 msgstr "Renderizador"
740
741 #: ../../../src/MenuConfig.cpp:362
742 msgid "Full Screen Mode"
743 msgstr "Tela Cheia"
744
745 #: ../../../src/MenuConfig.cpp:363
746 msgid "Hardware surfaces"
747 msgstr "Superfícies por Hardware"
748
749 #: ../../../src/MenuConfig.cpp:364
750 msgid "V-Sync"
751 msgstr "V-Sync"
752
753 #: ../../../src/MenuConfig.cpp:365
754 msgid "Texture Filtering"
755 msgstr "Filtragem"
756
757 #: ../../../src/MenuConfig.cpp:366
758 msgid "DPI scaling"
759 msgstr "DPI scaling"
760
761 #: ../../../src/MenuConfig.cpp:367
762 msgid "Parallax Layers"
763 msgstr ""
764
765 #: ../../../src/MenuConfig.cpp:368
766 msgid "Allow changing gamma"
767 msgstr "Alterar gamma"
768
769 #: ../../../src/MenuConfig.cpp:369
770 msgid "Gamma"
771 msgstr "Gamma"
772
773 #: ../../../src/MenuConfig.cpp:371
774 msgid "Sound Volume"
775 msgstr "Volume dos efeitos"
776
777 #: ../../../src/MenuConfig.cpp:372
175778 msgid "Music Volume"
176779 msgstr "Volume das músicas"
177780
178 #: ../../../src/GameStateConfigBase.cpp:253 ../../../src/MenuExit.cpp:77
179 msgid "Sound Volume"
180 msgstr "Volume dos efeitos"
181
182 #: ../../../src/GameStateConfigBase.cpp:257
781 #: ../../../src/MenuConfig.cpp:374
183782 msgid "Language"
184783 msgstr "Idioma"
185784
186 #: ../../../src/GameStateConfigBase.cpp:266
785 #: ../../../src/MenuConfig.cpp:375
187786 msgid "Show FPS"
188787 msgstr "Exibir quadros por segundo"
189788
190 #: ../../../src/GameStateConfigBase.cpp:270
789 #: ../../../src/MenuConfig.cpp:376
790 msgid "Hardware mouse cursor"
791 msgstr "Renderizar cursor do mouse por hardware"
792
793 #: ../../../src/MenuConfig.cpp:377
191794 msgid "Colorblind Mode"
192795 msgstr "Modo daltônico"
193796
194 #: ../../../src/GameStateConfigBase.cpp:274
195 msgid "Hardware mouse cursor"
196 msgstr "Renderizar cursor do mouse por hardware"
197
198 #: ../../../src/GameStateConfigBase.cpp:278
797 #: ../../../src/MenuConfig.cpp:378
199798 msgid "Developer Mode"
200799 msgstr "Modo desenvolvedor"
201800
202 #: ../../../src/GameStateConfigBase.cpp:282
801 #: ../../../src/MenuConfig.cpp:379
203802 msgid "Subtitles"
204803 msgstr "Legenda"
205804
206 #: ../../../src/GameStateConfigBase.cpp:286
207 msgid "Active Mods"
208 msgstr "Mods Ativos"
209
210 #: ../../../src/GameStateConfigBase.cpp:295
211 msgid "Available Mods"
212 msgstr "Mods Disponíveis"
213
214 #: ../../../src/GameStateConfigBase.cpp:314
215 msgid "<< Disable"
216 msgstr "<< Desabilitar"
217
218 #: ../../../src/GameStateConfigBase.cpp:320
219 msgid "Enable >>"
220 msgstr "Habilitar >>"
221
222 #: ../../../src/GameStateConfigBase.cpp:873
223 msgid "Version:"
224 msgstr "Versão:"
225
226 #: ../../../src/GameStateConfigBase.cpp:878
227 msgid "Game:"
228 msgstr "Jogo:"
229
230 #: ../../../src/GameStateConfigBase.cpp:883
231 msgid "Engine version:"
232 msgstr "Versão do motor:"
233
234 #: ../../../src/GameStateConfigBase.cpp:891
235 msgid "Requires mods:"
236 msgstr "Mods necessários:"
237
238 #: ../../../src/GameStateConfigDesktop.cpp:83
239 #: ../../../src/GameStateConfigDesktop.cpp:751
240 msgid "Clear"
241 msgstr "Limpar"
242
243 #: ../../../src/GameStateConfigDesktop.cpp:83
244 #: ../../../src/GameStateConfigDesktop.cpp:749
245 msgid "Assign:"
246 msgstr "Atribuir:"
247
248 #: ../../../src/GameStateConfigDesktop.cpp:128
249 msgid "Video"
250 msgstr "Video"
251
252 #: ../../../src/GameStateConfigDesktop.cpp:132
253 msgid "Input"
254 msgstr "Entrada"
255
256 #: ../../../src/GameStateConfigDesktop.cpp:133
257 msgid "Keybindings"
258 msgstr "Teclas de Atalho"
259
260 #: ../../../src/GameStateConfigDesktop.cpp:188
805 #: ../../../src/MenuConfig.cpp:380
806 msgid "Loot tooltip visibility"
807 msgstr ""
808
809 #: ../../../src/MenuConfig.cpp:381
810 msgid "Mini-map mode"
811 msgstr ""
812
813 #: ../../../src/MenuConfig.cpp:382
814 msgid "Always show stat bar labels"
815 msgstr "Exibir rótulos na barra de status"
816
817 #: ../../../src/MenuConfig.cpp:383
818 msgid "Allow stat bar auto-hiding"
819 msgstr ""
820
821 #: ../../../src/MenuConfig.cpp:384
822 msgid "Show combat text"
823 msgstr "Exibir rótulos de combate"
824
825 #: ../../../src/MenuConfig.cpp:385
826 msgid "Automatically equip items"
827 msgstr "Equipar itens automaticamente"
828
829 #: ../../../src/MenuConfig.cpp:386
830 msgid "Show hidden entity markers"
831 msgstr ""
832
833 #: ../../../src/MenuConfig.cpp:387
834 msgid "Low health notification"
835 msgstr ""
836
837 #: ../../../src/MenuConfig.cpp:388
838 msgid "Low health threshold"
839 msgstr ""
840
841 #: ../../../src/MenuConfig.cpp:389
842 msgid "Show item comparison tooltips"
843 msgstr ""
844
845 #: ../../../src/MenuConfig.cpp:392 ../../../src/MenuMovementType.cpp:94
846 #: ../../../src/MenuMovementType.cpp:131
847 msgid "Joystick"
848 msgstr "Controlador"
849
850 #: ../../../src/MenuConfig.cpp:393
851 msgid "Move hero using mouse"
852 msgstr "Mover o personagem utilizando o mouse"
853
854 #: ../../../src/MenuConfig.cpp:394
855 msgid "Mouse aim"
856 msgstr "Mirar com mouse"
857
858 #: ../../../src/MenuConfig.cpp:395
859 msgid "Do not use mouse"
860 msgstr "Não utilizar o mouse"
861
862 #: ../../../src/MenuConfig.cpp:396
863 msgid "Swap mouse movement button"
864 msgstr ""
865
866 #: ../../../src/MenuConfig.cpp:397
867 msgid "Attack with mouse movement"
868 msgstr ""
869
870 #: ../../../src/MenuConfig.cpp:398
871 msgid "Joystick Deadzone"
872 msgstr "Zona inoperante do controlador"
873
874 #: ../../../src/MenuConfig.cpp:408
875 #, c-format
876 msgid "Primary binding: %s"
877 msgstr ""
878
879 #: ../../../src/MenuConfig.cpp:409
880 #, c-format
881 msgid "Alternate binding: %s"
882 msgstr ""
883
884 #: ../../../src/MenuConfig.cpp:410
885 #, c-format
886 msgid "Joystick binding: %s"
887 msgstr ""
888
889 #: ../../../src/MenuConfig.cpp:511
261890 msgid ""
262891 "Will try to store surfaces in video memory versus system memory. The effect "
263892 "this has on performance depends on the renderer."
265894 "Tentar armazenar superfícies na memória de vídeo e não na memória do "
266895 "sistema. O efeito que isso terá no desempenho depende do renderizador."
267896
268 #: ../../../src/GameStateConfigDesktop.cpp:189
897 #: ../../../src/MenuConfig.cpp:512
269898 msgid ""
270899 "Prevents screen tearing. Disable if you experience \"stuttering\" in "
271900 "windowed mode or input lag."
273902 "Evita o \"tearing\" da tela. Desative se você tiver engasgos no modo janela "
274903 "ou atraso nos controles."
275904
276 #: ../../../src/GameStateConfigDesktop.cpp:190
905 #: ../../../src/MenuConfig.cpp:513
277906 msgid ""
278907 "When enabled, this uses the screen DPI in addition to the window dimensions "
279908 "to scale the rendering resolution. Otherwise, only the window dimensions are"
283912 " de renderização. Caso contrário, apenas as dimensões da janela serão "
284913 "usadas."
285914
286 #: ../../../src/GameStateConfigDesktop.cpp:191
915 #: ../../../src/MenuConfig.cpp:514
287916 msgid ""
288917 "This enables parallax (non-tile) layers. Disabling this setting can improve "
289918 "performance in some cases."
290919 msgstr ""
291920
292 #: ../../../src/GameStateConfigDesktop.cpp:192
293 msgid "Experimental"
294 msgstr "Experimental"
295
296 #: ../../../src/GameStateConfigDesktop.cpp:193
297 msgid "For handheld devices"
298 msgstr "Para dispositivos portáteis"
299
300 #: ../../../src/GameStateConfigDesktop.cpp:211
301 msgid "Renderer"
302 msgstr "Renderizador"
303
304 #: ../../../src/GameStateConfigDesktop.cpp:227
305 msgid "Full Screen Mode"
306 msgstr "Tela Cheia"
307
308 #: ../../../src/GameStateConfigDesktop.cpp:231
309 msgid "Move hero using mouse"
310 msgstr "Mover o personagem utilizando o mouse"
311
312 #: ../../../src/GameStateConfigDesktop.cpp:235
313 msgid "Hardware surfaces"
314 msgstr "Superfícies por Hardware"
315
316 #: ../../../src/GameStateConfigDesktop.cpp:239
317 msgid "V-Sync"
318 msgstr "V-Sync"
319
320 #: ../../../src/GameStateConfigDesktop.cpp:243
321 msgid "Texture Filtering"
322 msgstr "Filtragem"
323
324 #: ../../../src/GameStateConfigDesktop.cpp:247
325 msgid "DPI scaling"
326 msgstr "DPI scaling"
327
328 #: ../../../src/GameStateConfigDesktop.cpp:251
329 msgid "Parallax Layers"
330 msgstr ""
331
332 #: ../../../src/GameStateConfigDesktop.cpp:255
333 msgid "Allow changing gamma"
334 msgstr "Alterar gamma"
335
336 #: ../../../src/GameStateConfigDesktop.cpp:259
337 msgid "Gamma"
338 msgstr "Gamma"
339
340 #: ../../../src/GameStateConfigDesktop.cpp:263
341 msgid "Use joystick"
342 msgstr "Usar controlador"
343
344 #: ../../../src/GameStateConfigDesktop.cpp:267
345 msgid "Joystick"
346 msgstr "Controlador"
347
348 #: ../../../src/GameStateConfigDesktop.cpp:283
349 msgid "Mouse aim"
350 msgstr "Mirar com mouse"
351
352 #: ../../../src/GameStateConfigDesktop.cpp:287
353 msgid "Do not use mouse"
354 msgstr "Não utilizar o mouse"
355
356 #: ../../../src/GameStateConfigDesktop.cpp:291
357 msgid "Joystick Deadzone"
358 msgstr "Zona inoperante do controlador"
359
360 #: ../../../src/GameState.cpp:37 ../../../src/GameState.cpp:58
361 msgid "Loading..."
362 msgstr "Carregando..."
363
364 #: ../../../src/GameStateLoad.cpp:88 ../../../src/GameStateLoad.cpp:101
365 msgid "Delete Save"
366 msgstr "Excluir"
367
368 #: ../../../src/GameStateLoad.cpp:88
369 msgid "Delete this save?"
370 msgstr "Excluir jogo salvo?"
371
372 #: ../../../src/GameStateLoad.cpp:90
373 msgid "Exit to Title"
374 msgstr "Voltar"
375
376 #: ../../../src/GameStateLoad.cpp:93
377 msgid "New Game"
378 msgstr "Novo"
379
380 #: ../../../src/GameStateLoad.cpp:97 ../../../src/GameStateLoad.cpp:600
381 msgid "Choose a Slot"
382 msgstr "Selecione um espaço"
383
384 #: ../../../src/GameStateLoad.cpp:573 ../../../src/GameStateLoad.cpp:594
385 msgid "Enable a story mod to continue"
386 msgstr "Ative o mod de campanha para continuar"
387
388 #: ../../../src/GameStateLoad.cpp:589
389 msgid "Load Game"
390 msgstr "Continuar"
391
392 #: ../../../src/GameStateLoad.cpp:695
393 msgid "Entering game world..."
394 msgstr "Entrando no mundo do jogo..."
395
396 #: ../../../src/GameStateLoad.cpp:698
397 msgid "Loading saved game..."
398 msgstr "Carregando jogo salvo..."
399
400 #: ../../../src/GameStateLoad.cpp:731
401 msgid "Invalid save"
402 msgstr "Jogo salvo inválido"
403
404 #: ../../../src/GameStateLoad.cpp:755 ../../../src/ItemManager.cpp:747
405 #: ../../../src/MenuPowers.cpp:778 ../../../src/MenuPowers.cpp:1144
406 #: ../../../src/MenuPowers.cpp:1542
407 #, c-format
408 msgid "Level %d"
409 msgstr "Nível %d"
410
411 #: ../../../src/GameStateNew.cpp:68
412 msgid "Create"
413 msgstr "Criar"
414
415 #: ../../../src/GameStateNew.cpp:76
416 msgid "Randomize"
417 msgstr "Aleatória"
418
419 #: ../../../src/GameStateNew.cpp:92
420 msgid "Choose a Portrait"
421 msgstr "Escolha um retrato"
422
423 #: ../../../src/GameStateNew.cpp:96
424 msgid "Choose a Name"
425 msgstr "Digite um nome"
426
427 #: ../../../src/GameStateNew.cpp:100
428 msgid "Permadeath?"
429 msgstr "Morte permanente?"
430
431 #: ../../../src/GameStateNew.cpp:104
432 msgid "Choose a Class"
433 msgstr "Escolha uma classe"
434
435 #: ../../../src/GameStateTitle.cpp:108
436 msgid "Play Game"
437 msgstr "Jogar"
438
439 #: ../../../src/GameStateTitle.cpp:111
440 msgid "Enable a core mod to continue"
441 msgstr "Ative o mod core para continuar"
442
443 #: ../../../src/GameStateTitle.cpp:115
444 msgid "Configuration"
445 msgstr "Opções "
446
447 #: ../../../src/GameStateTitle.cpp:118
448 msgid "Credits"
449 msgstr "Sobre"
450
451 #: ../../../src/GameStateTitle.cpp:121
452 msgid "Exit Game"
453 msgstr "Sair"
454
455 #: ../../../src/InputState.cpp:402
456 msgid "Accept"
457 msgstr "Aceitar"
458
459 #: ../../../src/InputState.cpp:403 ../../../src/SDLInputState.cpp:607
460 msgid "Up"
461 msgstr "Cima"
462
463 #: ../../../src/InputState.cpp:404 ../../../src/SDLInputState.cpp:585
464 msgid "Down"
465 msgstr "Baixo"
466
467 #: ../../../src/InputState.cpp:405 ../../../src/SDLInputState.cpp:592
468 msgid "Left"
469 msgstr "Esquerda"
470
471 #: ../../../src/InputState.cpp:406 ../../../src/SDLInputState.cpp:602
472 msgid "Right"
473 msgstr "Direita"
474
475 #: ../../../src/InputState.cpp:407
476 msgid "Bar1"
477 msgstr "Barra1"
478
479 #: ../../../src/InputState.cpp:408
480 msgid "Bar2"
481 msgstr "Barra2"
482
483 #: ../../../src/InputState.cpp:409
484 msgid "Bar3"
485 msgstr "Barra3"
486
487 #: ../../../src/InputState.cpp:410
488 msgid "Bar4"
489 msgstr "Barra4"
490
491 #: ../../../src/InputState.cpp:411
492 msgid "Bar5"
493 msgstr "Barra5"
494
495 #: ../../../src/InputState.cpp:412
496 msgid "Bar6"
497 msgstr "Barra6"
498
499 #: ../../../src/InputState.cpp:413
500 msgid "Bar7"
501 msgstr "Barra7"
502
503 #: ../../../src/InputState.cpp:414
504 msgid "Bar8"
505 msgstr "Barra8"
506
507 #: ../../../src/InputState.cpp:415
508 msgid "Bar9"
509 msgstr "Barra9"
510
511 #: ../../../src/InputState.cpp:416
512 msgid "Bar0"
513 msgstr "Barra0"
514
515 #: ../../../src/InputState.cpp:417 ../../../src/MenuActionBar.cpp:83
516 #: ../../../src/MenuCharacter.cpp:54
517 msgid "Character"
518 msgstr "Personagem"
519
520 #: ../../../src/InputState.cpp:418 ../../../src/MenuActionBar.cpp:84
521 #: ../../../src/MenuInventory.cpp:137 ../../../src/MenuVendor.cpp:57
522 msgid "Inventory"
523 msgstr "Inventario"
524
525 #: ../../../src/InputState.cpp:419 ../../../src/MenuActionBar.cpp:85
526 #: ../../../src/MenuPowers.cpp:168
527 msgid "Powers"
528 msgstr "Poderes"
529
530 #: ../../../src/InputState.cpp:420 ../../../src/MenuActionBar.cpp:86
531 #: ../../../src/MenuLog.cpp:72
532 msgid "Log"
533 msgstr "Diário"
534
535 #: ../../../src/InputState.cpp:421
536 msgid "Main1"
537 msgstr "Principal1"
538
539 #: ../../../src/InputState.cpp:422
540 msgid "Main2"
541 msgstr "Principal2"
542
543 #: ../../../src/InputState.cpp:423
544 msgid "Ctrl"
545 msgstr "Ctrl"
546
547 #: ../../../src/InputState.cpp:424
548 msgid "Shift"
549 msgstr "Shift"
550
551 #: ../../../src/InputState.cpp:425
552 msgid "Alt"
553 msgstr "Alt"
554
555 #: ../../../src/InputState.cpp:426 ../../../src/SDLInputState.cpp:584
556 msgid "Delete"
557 msgstr "Delete"
558
559 #: ../../../src/InputState.cpp:427
560 msgid "ActionBar Accept"
561 msgstr "Barra de Ação Aceitar"
562
563 #: ../../../src/InputState.cpp:428
564 msgid "ActionBar Left"
565 msgstr "Barra de Ação Esquerda"
566
567 #: ../../../src/InputState.cpp:429
568 msgid "ActionBar Right"
569 msgstr "Barra de Ação Direita"
570
571 #: ../../../src/InputState.cpp:430
572 msgid "ActionBar Use"
573 msgstr "Barra de Ação Usar"
574
575 #: ../../../src/InputState.cpp:431
576 msgid "Developer Menu"
577 msgstr "Menu do desenvolvedor"
578
579 #: ../../../src/InputState.cpp:433
580 msgid "Left Mouse"
581 msgstr "Mouse esq."
582
583 #: ../../../src/InputState.cpp:434
584 msgid "Middle Mouse"
585 msgstr "Mouse do Meio"
586
587 #: ../../../src/InputState.cpp:435
588 msgid "Right Mouse"
589 msgstr "Mouse dir."
590
591 #: ../../../src/InputState.cpp:436
592 msgid "Wheel Up"
593 msgstr "Roda para Cima"
594
595 #: ../../../src/InputState.cpp:437
596 msgid "Wheel Down"
597 msgstr "Roda para Baixo"
598
599 #: ../../../src/InputState.cpp:438
600 msgid "Mouse X1"
601 msgstr "Mouse X1"
602
603 #: ../../../src/InputState.cpp:439
604 msgid "Mouse X2"
605 msgstr "Mouse X2"
606
607 #: ../../../src/ItemManager.cpp:450 ../../../src/ItemManager.cpp:453
608 msgid "Unknown Item"
609 msgstr "Item Desconhecido"
610
611 #: ../../../src/ItemManager.cpp:648 ../../../src/MenuPowers.cpp:887
612 #, c-format
613 msgid "%d%% Speed"
614 msgstr "%d%% Velocidade"
615
616 #: ../../../src/ItemManager.cpp:652 ../../../src/MenuPowers.cpp:890
617 #, c-format
618 msgid "%d%% Attack Speed"
619 msgstr "%d%% Velocidade de Ataque"
620
621 #: ../../../src/ItemManager.cpp:674 ../../../src/MenuCharacter.cpp:354
622 #: ../../../src/MenuPowers.cpp:833
623 #, c-format
624 msgid "Resistance (%s)"
625 msgstr "Resistência (%s)"
626
627 #: ../../../src/ItemManager.cpp:684
628 #, c-format
629 msgid "Requires %s"
630 msgstr "Necessário %s"
631
632 #: ../../../src/ItemManager.cpp:733
633 msgid "Quest Item"
634 msgstr "Item de Missão"
635
636 #: ../../../src/ItemManager.cpp:760
637 #, c-format
638 msgid "Quality: %s"
639 msgstr "Quantidade: %s"
640
641 #: ../../../src/ItemManager.cpp:785
642 #, c-format
643 msgid "Absorb: %d-%d"
644 msgstr "Absorver: %d-%d"
645
646 #: ../../../src/ItemManager.cpp:787
647 #, c-format
648 msgid "Absorb: %d"
649 msgstr "Absorver: %d"
650
651 #: ../../../src/ItemManager.cpp:827 ../../../src/MenuPowers.cpp:1131
652 #: ../../../src/MenuPowers.cpp:1134
653 #, c-format
654 msgid "Requires Level %d"
655 msgstr "Nível Necessário %d"
656
657 #: ../../../src/ItemManager.cpp:838 ../../../src/MenuPowers.cpp:1123
658 #: ../../../src/MenuPowers.cpp:1125
659 #, c-format
660 msgid "Requires %s %d"
661 msgstr "Necessário %s %d"
662
663 #: ../../../src/ItemManager.cpp:849
664 #, c-format
665 msgid "Requires Class: %s"
666 msgstr "Classe Necessária : %s"
667
668 #: ../../../src/ItemManager.cpp:864 ../../../src/ItemManager.cpp:876
669 #, c-format
670 msgid "Buy Price: %d %s"
671 msgstr "Preço de Compra: %d %s"
672
673 #: ../../../src/ItemManager.cpp:866 ../../../src/ItemManager.cpp:878
674 #, c-format
675 msgid "Buy Price: %d %s each"
676 msgstr "Preço de Compra: %d %s cada"
677
678 #: ../../../src/ItemManager.cpp:886
679 #, c-format
680 msgid "Sell Price: %d %s"
681 msgstr "Preço de Venda: %d %s"
682
683 #: ../../../src/ItemManager.cpp:888
684 #, c-format
685 msgid "Sell Price: %d %s each"
686 msgstr "Preço de Venda: %d %s cada"
687
688 #: ../../../src/ItemManager.cpp:897
689 msgid "Set:"
690 msgstr "Conjunto:"
691
692 #: ../../../src/ItemManager.cpp:904
693 #, c-format
694 msgid "%d items:"
695 msgstr "%d Items:"
696
697 #: ../../../src/ItemManager.cpp:917
698 #, c-format
699 msgid "Press [%s] to use"
700 msgstr "Pressione [%s] para usar"
701
702 #: ../../../src/ItemManager.cpp:920
703 #, c-format
704 msgid "Press [%s] to read"
705 msgstr "Pressione [%s] para ler"
706
707 #: ../../../src/MenuActionBar.cpp:87
708 msgid "Loot tooltip visibility"
709 msgstr ""
710
711 #: ../../../src/MenuActionBar.cpp:88
712 msgid "Mini-map mode"
713 msgstr ""
714
715 #: ../../../src/MenuActionBar.cpp:89
716 msgid "Always show stat bar labels"
717 msgstr "Exibir rótulos na barra de status"
718
719 #: ../../../src/MenuActionBar.cpp:90
720 msgid "Show combat text"
721 msgstr "Exibir rótulos de combate"
722
723 #: ../../../src/MenuActionBar.cpp:254 ../../../src/MenuActionBar.cpp:261
724 #: ../../../src/MenuActionBar.cpp:264 ../../../src/MenuActionBar.cpp:271
725 #, c-format
726 msgid "Hotkey: %s"
727 msgstr "Atalho: %s"
728
729 #: ../../../src/MenuActionBar.cpp:474
730 #, c-format
731 msgid "Default. Temporarily show all loot tooltips with '%s'."
732 msgstr ""
733
734 #: ../../../src/MenuActionBar.cpp:476
735 #, c-format
736 msgid "Show All. Temporarily hide all loot tooltips with '%s'."
737 msgstr ""
738
739 #: ../../../src/MenuActionBar.cpp:478
740 #, c-format
741 msgid "Hide All. Temporarily show all loot tooltips with '%s'."
742 msgstr ""
743
744 #: ../../../src/MenuActionBar.cpp:482
745 msgid "Visible"
746 msgstr ""
747
748 #: ../../../src/MenuActionBar.cpp:484
749 msgid "Visible (2x zoom)"
750 msgstr ""
751
752 #: ../../../src/MenuActionBar.cpp:486
753 msgid "Hidden"
754 msgstr ""
755
756 #: ../../../src/MenuActionBar.cpp:490 ../../../src/MenuActionBar.cpp:496
757 msgid "Enabled"
758 msgstr ""
759
760 #: ../../../src/MenuActionBar.cpp:492 ../../../src/MenuActionBar.cpp:498
761 msgid "Disabled"
762 msgstr ""
763
764 #: ../../../src/MenuActionBar.cpp:657
765 msgid "Not enough MP."
766 msgstr "MP insuficiente."
767
768 #: ../../../src/MenuActiveEffects.cpp:124
769 #, c-format
770 msgid "x%d"
771 msgstr "x%d"
772
773 #: ../../../src/MenuActiveEffects.cpp:219
774 msgid "Remaining:"
775 msgstr "Restante:"
776
777 #: ../../../src/MenuActiveEffects.cpp:225
778 #, c-format
779 msgid "x%d stacks"
780 msgstr "x%d pilhas"
781
782 #: ../../../src/MenuCharacter.cpp:73 ../../../src/MenuCharacter.cpp:78
783 msgid "Name"
784 msgstr "Nome"
785
786 #: ../../../src/MenuCharacter.cpp:74 ../../../src/MenuCharacter.cpp:79
787 msgid "Level"
788 msgstr "Nível"
789
790 #: ../../../src/MenuCharacter.cpp:310
791 #, c-format
792 msgid "%d unspent stat point"
793 msgstr "%d ponto não utilizados"
794
795 #: ../../../src/MenuCharacter.cpp:313
796 #, c-format
797 msgid "%d unspent stat points"
798 msgstr "%d pontos não utilizados"
799
800 #: ../../../src/MenuCharacter.cpp:355
801 #, c-format
802 msgid "Reduces the damage taken from \"%s\" elemental attacks."
803 msgstr "Reduz o dano recebido de \"%s\" ataques elementais."
804
805 #: ../../../src/MenuCharacter.cpp:365 ../../../src/MenuManager.cpp:283
806 #, c-format
807 msgid "XP: %d"
808 msgstr "XP: %d"
809
810 #: ../../../src/MenuCharacter.cpp:367
811 #, c-format
812 msgid "Next: %d"
813 msgstr "Próximo: %d"
814
815 #: ../../../src/MenuCharacter.cpp:373
816 #, c-format
817 msgid "base (%d), bonus (%d)"
818 msgstr "básico (%d), bônus (%d)"
819
820 #: ../../../src/MenuCharacter.cpp:381 ../../../src/MenuCharacter.cpp:395
821 msgid "Related stats:"
822 msgstr "Estatísticas:"
823
824 #: ../../../src/MenuCharacter.cpp:421 ../../../src/MenuCharacter.cpp:445
825 #, c-format
826 msgid "Each level grants %d."
827 msgstr "Cada nível concede %d."
828
829 #: ../../../src/MenuCharacter.cpp:425 ../../../src/MenuCharacter.cpp:449
830 #, c-format
831 msgid "Each point of %s grants %d."
832 msgstr "Cada ponto de %s concede %d."
833
834 #: ../../../src/MenuDevConsole.cpp:63
921 #: ../../../src/MenuConfig.cpp:515
922 msgid ""
923 "Enables the below setting that controls the screen gamma level. The behavior"
924 " of the gamma setting can vary between platforms."
925 msgstr ""
926
927 #: ../../../src/MenuConfig.cpp:516
928 msgid ""
929 "Provides additional text for information that is primarily conveyed through "
930 "color."
931 msgstr ""
932
933 #: ../../../src/MenuConfig.cpp:517
934 msgid ""
935 "Some mods will automatically hide the stat bars when they are inactive. "
936 "Disabling this option will keep them displayed at all times."
937 msgstr ""
938
939 #: ../../../src/MenuConfig.cpp:518
940 msgid ""
941 "When enabled, empty equipment slots will be filled with applicable items "
942 "when they are obtained."
943 msgstr ""
944
945 #: ../../../src/MenuConfig.cpp:519
946 msgid ""
947 "Shows a marker above enemies, allies, and the player when they are obscured "
948 "by tall objects."
949 msgstr ""
950
951 #: ../../../src/MenuConfig.cpp:520
952 msgid ""
953 "When enabled, tooltips for equipped items of the same type are shown next to"
954 " standard item tooltips."
955 msgstr ""
956
957 #: ../../../src/MenuConfig.cpp:521
958 msgid ""
959 "This allows the game to be controlled entirely with the keyboard (or "
960 "joystick)."
961 msgstr ""
962
963 #: ../../../src/MenuConfig.cpp:522
964 msgid ""
965 "When 'Move hero using mouse' is enabled, this setting controls if 'Main1' or"
966 " 'Main2' is used to move the hero. If enabled, 'Main2' will move the hero "
967 "instead of 'Main1'."
968 msgstr ""
969
970 #: ../../../src/MenuConfig.cpp:523
971 msgid ""
972 "When 'Move hero using mouse' is enabled, this setting controls if the Power "
973 "assigned to the movement button can be used by targeting an enemy. If this "
974 "setting is disabled, it is required to use 'Shift' to access the Power "
975 "assigned to the movement button."
976 msgstr ""
977
978 #: ../../../src/MenuConfig.cpp:524
979 msgid ""
980 "The player's attacks will be aimed in the direction of the mouse cursor when"
981 " this is enabled."
982 msgstr ""
983
984 #: ../../../src/MenuConfig.cpp:575
985 msgid "Active Mods"
986 msgstr "Mods Ativos"
987
988 #: ../../../src/MenuConfig.cpp:584
989 msgid "Available Mods"
990 msgstr "Mods Disponíveis"
991
992 #: ../../../src/MenuConfig.cpp:603
993 msgid "<< Disable"
994 msgstr "<< Desabilitar"
995
996 #: ../../../src/MenuConfig.cpp:609
997 msgid "Enable >>"
998 msgstr "Habilitar >>"
999
1000 #: ../../../src/MenuConfig.cpp:1444
1001 msgid "Version:"
1002 msgstr "Versão:"
1003
1004 #: ../../../src/MenuConfig.cpp:1449
1005 msgid "Game:"
1006 msgstr "Jogo:"
1007
1008 #: ../../../src/MenuConfig.cpp:1454
1009 msgid "Engine version:"
1010 msgstr "Versão do motor:"
1011
1012 #: ../../../src/MenuConfig.cpp:1462
1013 msgid "Requires mods:"
1014 msgstr "Mods necessários:"
1015
1016 #: ../../../src/MenuConfig.cpp:1570 ../../../src/SDLInputState.cpp:748
1017 msgid "(none)"
1018 msgstr "(nenhum)"
1019
1020 #: ../../../src/MenuConfig.cpp:1587 ../../../src/MenuGameOver.cpp:73
1021 msgid "Save & Exit"
1022 msgstr "Salvar e Sair"
1023
1024 #: ../../../src/MenuDevConsole.cpp:65
8351025 msgid "Execute"
8361026 msgstr "Executar"
8371027
838 #: ../../../src/MenuDevConsole.cpp:101 ../../../src/MenuDevConsole.cpp:151
1028 #: ../../../src/MenuDevConsole.cpp:103 ../../../src/MenuDevConsole.cpp:153
8391029 msgid "Developer Console"
8401030 msgstr "Console do Desenvolvedor"
8411031
842 #: ../../../src/MenuDevConsole.cpp:141
1032 #: ../../../src/MenuDevConsole.cpp:143
8431033 #, c-format
8441034 msgid "Use '%s' to inspect with the cursor."
8451035 msgstr "Utilize '%s' para inspecionar com o cursor."
8461036
847 #: ../../../src/MenuDevConsole.cpp:146
1037 #: ../../../src/MenuDevConsole.cpp:148
8481038 msgid "Arguments with spaces should be enclosed with double quotes. Example:"
8491039 msgstr "Argumentos com espaços devem estar entre aspas duplas. Exemplo: "
8501040
851 #: ../../../src/MenuDevConsole.cpp:147
1041 #: ../../../src/MenuDevConsole.cpp:149
8521042 msgid "Type 'help' to get a list of commands."
8531043 msgstr "Digite 'help' para obter a lista de comandos."
8541044
855 #: ../../../src/MenuDevConsole.cpp:209 ../../../src/MenuDevConsole.cpp:213
1045 #: ../../../src/MenuDevConsole.cpp:211 ../../../src/MenuDevConsole.cpp:215
8561046 msgid "px"
8571047 msgstr "px"
8581048
859 #: ../../../src/MenuDevConsole.cpp:224
1049 #: ../../../src/MenuDevConsole.cpp:226
8601050 msgid "Distance"
8611051 msgstr "Distância"
8621052
863 #: ../../../src/MenuDevConsole.cpp:239 ../../../src/MenuDevConsole.cpp:286
1053 #: ../../../src/MenuDevConsole.cpp:241 ../../../src/MenuDevConsole.cpp:289
1054 #: ../../../src/MenuDevConsole.cpp:303
8641055 msgid "Entity"
8651056 msgstr "Entidade"
8661057
867 #: ../../../src/MenuDevConsole.cpp:261 ../../../src/MenuDevConsole.cpp:268
1058 #: ../../../src/MenuDevConsole.cpp:263 ../../../src/MenuDevConsole.cpp:270
8681059 msgid "none"
8691060 msgstr "nenhum"
8701061
871 #: ../../../src/MenuDevConsole.cpp:262 ../../../src/MenuDevConsole.cpp:264
1062 #: ../../../src/MenuDevConsole.cpp:264 ../../../src/MenuDevConsole.cpp:266
8721063 msgid "wall"
8731064 msgstr "muro"
8741065
875 #: ../../../src/MenuDevConsole.cpp:263 ../../../src/MenuDevConsole.cpp:265
1066 #: ../../../src/MenuDevConsole.cpp:265 ../../../src/MenuDevConsole.cpp:267
8761067 msgid "short wall / pit"
8771068 msgstr "parede curta / fosso"
8781069
879 #: ../../../src/MenuDevConsole.cpp:266
1070 #: ../../../src/MenuDevConsole.cpp:268
8801071 msgid "entity"
8811072 msgstr "entidade"
8821073
883 #: ../../../src/MenuDevConsole.cpp:267
1074 #: ../../../src/MenuDevConsole.cpp:269
8841075 msgid "entity, ally"
8851076 msgstr "entidade, aliada"
8861077
887 #: ../../../src/MenuDevConsole.cpp:274
1078 #: ../../../src/MenuDevConsole.cpp:276
8881079 msgid "Tile"
8891080 msgstr "Principal"
8901081
891 #: ../../../src/MenuDevConsole.cpp:360
1082 #: ../../../src/MenuDevConsole.cpp:377
8921083 msgid "adds a power to the action bar"
8931084 msgstr "adiciona um poder a barra de ação"
8941085
895 #: ../../../src/MenuDevConsole.cpp:361
1086 #: ../../../src/MenuDevConsole.cpp:378
8961087 msgid "turns on/off the display of the FPS counter"
8971088 msgstr ""
8981089
899 #: ../../../src/MenuDevConsole.cpp:362
1090 #: ../../../src/MenuDevConsole.cpp:379
9001091 msgid "turns on/off all of the HUD elements"
9011092 msgstr "alterna on/off todos os elementos do HUD"
9021093
903 #: ../../../src/MenuDevConsole.cpp:363
1094 #: ../../../src/MenuDevConsole.cpp:380
9041095 msgid "turns on/off the developer hud"
9051096 msgstr "alterna on/off o hud de desenvolvedor"
9061097
907 #: ../../../src/MenuDevConsole.cpp:364
1098 #: ../../../src/MenuDevConsole.cpp:381
9081099 msgid ""
9091100 "Prints a list of powers that match a search term. No search term will list "
9101101 "all items"
9121103 "Exibe uma lista de poderes que corresponda ao termo pesquisado. Se nenhum "
9131104 "termo for informado todos os itens serão exibidos."
9141105
915 #: ../../../src/MenuDevConsole.cpp:365
1106 #: ../../../src/MenuDevConsole.cpp:382
9161107 msgid "Prints out all the map filenames located in the \"maps/\" directory."
9171108 msgstr "Exibe todos os nomes de arquivos mapa localizados na pasta \"maps/\"."
9181109
919 #: ../../../src/MenuDevConsole.cpp:366
1110 #: ../../../src/MenuDevConsole.cpp:383
9201111 msgid ""
9211112 "Prints out the active campaign statuses that match a search term. No search "
9221113 "term will list all active statuses"
9241115 "Exibe a campanha ativa e sua situação que corresponda ao termo pesquisado. "
9251116 "Se nenhum termo for informado todos os itens serão exibidos."
9261117
927 #: ../../../src/MenuDevConsole.cpp:367
1118 #: ../../../src/MenuDevConsole.cpp:384
9281119 msgid ""
9291120 "Prints a list of items that match a search term. No search term will list "
9301121 "all items"
9321123 "Exibe uma lista de itens que correspondam ao termo pesquisado. Se nenhum "
9331124 "termo for informado todos os itens serão exibidos."
9341125
935 #: ../../../src/MenuDevConsole.cpp:368
1126 #: ../../../src/MenuDevConsole.cpp:385
9361127 msgid ""
9371128 "parses a series of event components and executes them as a single event"
9381129 msgstr ""
9391130 "Analisa uma série de componentes de eventos e os executa como um único "
9401131 "evento"
9411132
942 #: ../../../src/MenuDevConsole.cpp:369
1133 #: ../../../src/MenuDevConsole.cpp:386
9431134 msgid "clears the command history"
9441135 msgstr "limpa o histórico de comando"
9451136
946 #: ../../../src/MenuDevConsole.cpp:370
1137 #: ../../../src/MenuDevConsole.cpp:387
9471138 msgid "displays this text"
9481139 msgstr "exibe esse texto"
9491140
950 #: ../../../src/MenuDevConsole.cpp:377
1141 #: ../../../src/MenuDevConsole.cpp:394
9511142 msgid "Toggled the developer hud"
9521143 msgstr "Alterna entre o hud de desenvolvedor"
9531144
954 #: ../../../src/MenuDevConsole.cpp:381
1145 #: ../../../src/MenuDevConsole.cpp:398
9551146 msgid "Toggled the hud"
9561147 msgstr "Alterna o hud"
9571148
958 #: ../../../src/MenuDevConsole.cpp:385
1149 #: ../../../src/MenuDevConsole.cpp:402
9591150 msgid "Toggled the FPS counter"
9601151 msgstr ""
9611152
962 #: ../../../src/MenuDevConsole.cpp:534
1153 #: ../../../src/MenuDevConsole.cpp:552
9631154 msgid "ERROR: Incorrect number of arguments"
9641155 msgstr "ERRO: Número incorreto de argumentos"
9651156
966 #: ../../../src/MenuDevConsole.cpp:536 ../../../src/MenuDevConsole.cpp:564
1157 #: ../../../src/MenuDevConsole.cpp:554 ../../../src/MenuDevConsole.cpp:582
9671158 msgid "HINT:"
9681159 msgstr "DICA:"
9691160
970 #: ../../../src/MenuDevConsole.cpp:536
1161 #: ../../../src/MenuDevConsole.cpp:554
9711162 msgid "<id>"
9721163 msgstr "<id>"
9731164
974 #: ../../../src/MenuDevConsole.cpp:552
1165 #: ../../../src/MenuDevConsole.cpp:570
9751166 #, c-format
9761167 msgid "ERROR: '%s' is not a valid event key"
9771168 msgstr "ERRO: '%s' não é uma chave de evento válida"
9781169
979 #: ../../../src/MenuDevConsole.cpp:562
1170 #: ../../../src/MenuDevConsole.cpp:580
9801171 msgid "ERROR: Too few arguments"
9811172 msgstr "ERROR: Poucos argumentos"
9821173
983 #: ../../../src/MenuDevConsole.cpp:564
1174 #: ../../../src/MenuDevConsole.cpp:582
9841175 msgid "<key>=<val> <key>=<val> ..."
9851176 msgstr "<key>=<val> <key>=<val> ..."
9861177
987 #: ../../../src/MenuDevConsole.cpp:569
1178 #: ../../../src/MenuDevConsole.cpp:587
9881179 msgid "ERROR: Unknown command"
9891180 msgstr "ERRO: Comando desconhecido"
9901181
991 #: ../../../src/MenuDevConsole.cpp:571
1182 #: ../../../src/MenuDevConsole.cpp:589
9921183 msgid "HINT: Type help"
9931184 msgstr "DICA: Digite help"
9941185
995 #: ../../../src/MenuEnemy.cpp:138
1186 #: ../../../src/MenuEnemy.cpp:162
9961187 #, c-format
9971188 msgid "%s level %d"
9981189 msgstr "%s nível %d"
9991190
1000 #: ../../../src/MenuEnemy.cpp:162
1191 #: ../../../src/MenuEnemy.cpp:186
10011192 msgid "Dead"
10021193 msgstr "Morto"
10031194
1004 #: ../../../src/MenuEnemy.cpp:164
1195 #: ../../../src/MenuEnemy.cpp:188
10051196 msgid "Destroyed"
10061197 msgstr "Destruído"
10071198
1008 #: ../../../src/MenuExit.cpp:85 ../../../src/MenuExit.cpp:139
1009 msgid "Paused"
1010 msgstr "Interrompido"
1011
1012 #: ../../../src/MenuExit.cpp:91
1013 msgid "Save & Exit"
1014 msgstr "Salvar e Sair"
1015
1016 #: ../../../src/MenuExit.cpp:92
1017 msgid "Exit"
1018 msgstr "Sair"
1019
1020 #: ../../../src/MenuExit.cpp:96
1021 msgid "Continue"
1022 msgstr "Continue"
1023
1024 #: ../../../src/MenuInventory.cpp:73
1025 msgid "Automatically equip items"
1026 msgstr "Equipar itens automaticamente"
1027
1028 #: ../../../src/MenuInventory.cpp:188
1199 #: ../../../src/MenuGameOver.cpp:69
1200 msgid "Game Over"
1201 msgstr ""
1202
1203 #: ../../../src/MenuInventory.cpp:178
10291204 #, c-format
10301205 msgid "Lost %d%% of %s."
10311206 msgstr "Perdeu %d%% de %s."
10321207
1033 #: ../../../src/MenuInventory.cpp:195
1208 #: ../../../src/MenuInventory.cpp:185
10341209 #, c-format
10351210 msgid "Lost %d%% of total XP."
10361211 msgstr "Perdeu %d%% do total de XP."
10371212
1038 #: ../../../src/MenuInventory.cpp:200
1213 #: ../../../src/MenuInventory.cpp:190
10391214 #, c-format
10401215 msgid "Lost %d%% of current level XP."
10411216 msgstr "Perdeu %d%% do atual nível de XP."
10421217
1043 #: ../../../src/MenuInventory.cpp:226
1218 #: ../../../src/MenuInventory.cpp:216
10441219 #, c-format
10451220 msgid "Lost %s."
10461221 msgstr "Perdeu %s."
10471222
1048 #: ../../../src/MenuInventory.cpp:274 ../../../src/MenuStash.cpp:146
1223 #: ../../../src/MenuInventory.cpp:258 ../../../src/MenuStash.cpp:276
10491224 #, c-format
10501225 msgid "%d %s"
10511226 msgstr "%d %s"
10521227
1053 #: ../../../src/MenuInventory.cpp:317
1228 #: ../../../src/MenuInventory.cpp:301
10541229 msgid "Pick up item(s):"
10551230 msgstr "Item(s) coletados:"
10561231
1057 #: ../../../src/MenuInventory.cpp:318
1232 #: ../../../src/MenuInventory.cpp:302
10581233 msgid "Use or equip item:"
10591234 msgstr "Utilize ou equipe o item:"
10601235
1061 #: ../../../src/MenuInventory.cpp:319
1236 #: ../../../src/MenuInventory.cpp:303
10621237 #, c-format
10631238 msgid "%s modifiers"
10641239 msgstr "%s modificadores"
10651240
1066 #: ../../../src/MenuInventory.cpp:320
1241 #: ../../../src/MenuInventory.cpp:304
10671242 msgid "Select a quantity of item:"
10681243 msgstr "Selecione a quantidade do item:"
10691244
1070 #: ../../../src/MenuInventory.cpp:323
1245 #: ../../../src/MenuInventory.cpp:307
10711246 msgid "Stash item stack:"
10721247 msgstr "Pilha de itens do baú:"
10731248
1074 #: ../../../src/MenuInventory.cpp:325
1249 #: ../../../src/MenuInventory.cpp:309
10751250 msgid "Sell item stack:"
10761251 msgstr "Vender pilha de itens:"
10771252
1078 #: ../../../src/MenuInventory.cpp:592
1253 #: ../../../src/MenuInventory.cpp:576
10791254 msgid "You don't have enough of the required item."
10801255 msgstr "Você não possui o suficiente para adquirir este item."
10811256
1082 #: ../../../src/MenuInventory.cpp:599
1257 #: ../../../src/MenuInventory.cpp:588
10831258 msgid "You can't use this item right now."
10841259 msgstr "Você não pode utilizar este item agora."
10851260
1086 #: ../../../src/MenuInventory.cpp:611
1261 #: ../../../src/MenuInventory.cpp:600
10871262 msgid "This item can only be used from the action bar."
10881263 msgstr "Este item só pode ser usado na barra de ação."
10891264
1090 #: ../../../src/MenuInventory.cpp:729
1265 #: ../../../src/MenuInventory.cpp:718
10911266 msgid "Inventory is full."
10921267 msgstr "Inventário está cheio."
10931268
1094 #: ../../../src/MenuInventory.cpp:849
1269 #: ../../../src/MenuInventory.cpp:843
10951270 #, c-format
10961271 msgid "Not enough %s."
10971272 msgstr "Insuficiente %s."
10981273
1099 #: ../../../src/MenuInventory.cpp:869 ../../../src/MenuInventory.cpp:876
1274 #: ../../../src/MenuInventory.cpp:863 ../../../src/MenuInventory.cpp:870
11001275 msgid "This item can not be sold."
11011276 msgstr "Este item não pode ser vendido"
11021277
11081283 msgid "Quests"
11091284 msgstr "Missões"
11101285
1111 #: ../../../src/MenuManager.cpp:286
1286 #: ../../../src/MenuManager.cpp:305
11121287 #, c-format
11131288 msgid "XP: %d/%d"
11141289 msgstr "XP: %d/%d"
11151290
1116 #: ../../../src/MenuManager.cpp:827
1291 #: ../../../src/MenuManager.cpp:875
11171292 msgid "This item can not be dropped."
11181293 msgstr "Este item não pode ser descartado."
1294
1295 #: ../../../src/MenuManager.cpp:1501
1296 msgid "Equipped"
1297 msgstr ""
1298
1299 #: ../../../src/MenuMovementType.cpp:87
1300 msgid "Select a Movement Type"
1301 msgstr ""
1302
1303 #: ../../../src/MenuMovementType.cpp:89
1304 msgid "Can be changed later in the Configuration menu."
1305 msgstr ""
1306
1307 #: ../../../src/MenuMovementType.cpp:92 ../../../src/MenuMovementType.cpp:122
1308 msgid "Keyboard"
1309 msgstr ""
1310
1311 #: ../../../src/MenuMovementType.cpp:93 ../../../src/MenuMovementType.cpp:128
1312 msgid "Mouse"
1313 msgstr ""
1314
1315 #: ../../../src/MenuMovementType.cpp:129
1316 msgid "Button"
1317 msgstr ""
11191318
11201319 #: ../../../src/MenuNumPicker.cpp:59
11211320 msgid "Enter amount:"
11221321 msgstr "Digite a quantidade:"
11231322
1124 #: ../../../src/MenuPowers.cpp:787
1323 #: ../../../src/MenuPowers.cpp:872
11251324 msgid "Passive"
11261325 msgstr "Passivo"
11271326
1128 #: ../../../src/MenuPowers.cpp:792
1327 #: ../../../src/MenuPowers.cpp:879
11291328 #, c-format
11301329 msgid "Costs %d MP"
11311330 msgstr "Custa %d MP"
11321331
1133 #: ../../../src/MenuPowers.cpp:796
1332 #: ../../../src/MenuPowers.cpp:883
11341333 #, c-format
11351334 msgid "Costs %d HP"
11361335 msgstr "Custa %d HP"
11371336
1138 #: ../../../src/MenuPowers.cpp:801
1337 #: ../../../src/MenuPowers.cpp:887
11391338 msgid "Cooldown:"
11401339 msgstr "Esfriar:"
11411340
1142 #: ../../../src/MenuPowers.cpp:866 ../../../src/MenuPowers.cpp:869
1341 #: ../../../src/MenuPowers.cpp:938 ../../../src/MenuPowers.cpp:941
11431342 msgid "Damage per second"
11441343 msgstr "Dano por segundo"
11451344
1146 #: ../../../src/MenuPowers.cpp:872 ../../../src/MenuPowers.cpp:875
1345 #: ../../../src/MenuPowers.cpp:944 ../../../src/MenuPowers.cpp:947
11471346 msgid "HP per second"
11481347 msgstr "HP por segundo"
11491348
1150 #: ../../../src/MenuPowers.cpp:878 ../../../src/MenuPowers.cpp:881
1349 #: ../../../src/MenuPowers.cpp:950 ../../../src/MenuPowers.cpp:953
11511350 msgid "MP per second"
11521351 msgstr "MP por segundo"
11531352
1154 #: ../../../src/MenuPowers.cpp:885
1353 #: ../../../src/MenuPowers.cpp:957
11551354 msgid "Immobilize"
11561355 msgstr "Imobilizar"
11571356
1158 #: ../../../src/MenuPowers.cpp:893
1357 #: ../../../src/MenuPowers.cpp:965
11591358 msgid "Immunity"
11601359 msgstr "Imunidade"
11611360
1162 #: ../../../src/MenuPowers.cpp:896
1361 #: ../../../src/MenuPowers.cpp:968
11631362 msgid "Immunity to damage over time"
11641363 msgstr "Imunidade a danos de longo prazo"
11651364
1166 #: ../../../src/MenuPowers.cpp:899
1365 #: ../../../src/MenuPowers.cpp:971
11671366 msgid "Immunity to slow"
11681367 msgstr "Imunidade a desaceleração"
11691368
1170 #: ../../../src/MenuPowers.cpp:902
1369 #: ../../../src/MenuPowers.cpp:974
11711370 msgid "Immunity to stun"
11721371 msgstr "Imunidade ao atordoamento"
11731372
1174 #: ../../../src/MenuPowers.cpp:905
1373 #: ../../../src/MenuPowers.cpp:977
11751374 msgid "Immunity to HP steal"
11761375 msgstr "Imunidade ao roubo de HP"
11771376
1178 #: ../../../src/MenuPowers.cpp:908
1377 #: ../../../src/MenuPowers.cpp:980
11791378 msgid "Immunity to MP steal"
11801379 msgstr "Imunidade ao roubo de MP"
11811380
1182 #: ../../../src/MenuPowers.cpp:911
1381 #: ../../../src/MenuPowers.cpp:983
11831382 msgid "Immunity to knockback"
11841383 msgstr "Imunidade a contragolpe"
11851384
1186 #: ../../../src/MenuPowers.cpp:914
1385 #: ../../../src/MenuPowers.cpp:986
11871386 msgid "Immunity to damage reflection"
11881387 msgstr "Imunidade a reflexão de dano"
11891388
1190 #: ../../../src/MenuPowers.cpp:917
1389 #: ../../../src/MenuPowers.cpp:992
11911390 msgid "Stun"
11921391 msgstr "Atordoar"
11931392
1194 #: ../../../src/MenuPowers.cpp:920
1393 #: ../../../src/MenuPowers.cpp:995
11951394 msgid "Automatic revive on death"
11961395 msgstr "Ressuscitar automaticamente"
11971396
1198 #: ../../../src/MenuPowers.cpp:923
1397 #: ../../../src/MenuPowers.cpp:998
11991398 msgid "Convert"
12001399 msgstr "Converter"
12011400
1202 #: ../../../src/MenuPowers.cpp:926
1401 #: ../../../src/MenuPowers.cpp:1001
12031402 msgid "Fear"
12041403 msgstr "Medo"
12051404
1206 #: ../../../src/MenuPowers.cpp:929
1405 #: ../../../src/MenuPowers.cpp:1004
12071406 msgid "Lifespan"
12081407 msgstr "Vida útil"
12091408
1210 #: ../../../src/MenuPowers.cpp:953
1409 #: ../../../src/MenuPowers.cpp:1028
12111410 msgid "Magical Shield"
12121411 msgstr "Escudo Mágico"
12131412
1214 #: ../../../src/MenuPowers.cpp:982
1413 #: ../../../src/MenuPowers.cpp:1057
12151414 msgid "Healing"
12161415 msgstr "Cura"
12171416
1218 #: ../../../src/MenuPowers.cpp:985
1417 #: ../../../src/MenuPowers.cpp:1060
12191418 msgid "Knockback"
12201419 msgstr "Contragolpe"
12211420
1222 #: ../../../src/MenuPowers.cpp:1010
1421 #: ../../../src/MenuPowers.cpp:1084
12231422 #, c-format
12241423 msgid "%d%% chance"
12251424 msgstr "%d%% chance"
12261425
1227 #: ../../../src/MenuPowers.cpp:1062
1426 #: ../../../src/MenuPowers.cpp:1136
12281427 msgid "Base Accuracy"
12291428 msgstr "Precisão Básica"
12301429
1231 #: ../../../src/MenuPowers.cpp:1082
1430 #: ../../../src/MenuPowers.cpp:1156
12321431 msgid "Base Critical Chance"
12331432 msgstr "Chance Crítica Básica"
12341433
1235 #: ../../../src/MenuPowers.cpp:1090
1434 #: ../../../src/MenuPowers.cpp:1164
12361435 msgid "Ignores Absorbtion"
12371436 msgstr "Ignora Absorção"
12381437
1239 #: ../../../src/MenuPowers.cpp:1095
1438 #: ../../../src/MenuPowers.cpp:1169
12401439 msgid "Ignores Avoidance"
12411440 msgstr "Ignora Esquiva"
12421441
1243 #: ../../../src/MenuPowers.cpp:1100
1442 #: ../../../src/MenuPowers.cpp:1174
12441443 #, c-format
12451444 msgid "%d%% Chance to crit slowed targets"
12461445 msgstr "%d%% Chance de acerto crítico a alvos desacelerados."
12471446
1248 #: ../../../src/MenuPowers.cpp:1105
1447 #: ../../../src/MenuPowers.cpp:1179
12491448 #, c-format
12501449 msgid "Elemental Damage (%s)"
12511450 msgstr "Dano Elemental (%s)"
12521451
1253 #: ../../../src/MenuPowers.cpp:1114
1452 #: ../../../src/MenuPowers.cpp:1188
12541453 #, c-format
12551454 msgid "Requires a %s"
12561455 msgstr "Requer um %s"
12571456
1258 #: ../../../src/MenuPowers.cpp:1151 ../../../src/MenuPowers.cpp:1154
1457 #: ../../../src/MenuPowers.cpp:1226 ../../../src/MenuPowers.cpp:1229
12591458 #, c-format
12601459 msgid "Requires Power: %s"
12611460 msgstr "Requer Poder: %s"
12621461
1263 #: ../../../src/MenuPowers.cpp:1163
1462 #: ../../../src/MenuPowers.cpp:1238
12641463 msgid "Click to Unlock (uses 1 Skill Point)"
12651464 msgstr "Aperte para Desbloquear (utiliza 1 Ponto de Habilidade)"
12661465
1267 #: ../../../src/MenuPowers.cpp:1167 ../../../src/MenuPowers.cpp:1169
1466 #: ../../../src/MenuPowers.cpp:1242 ../../../src/MenuPowers.cpp:1244
12681467 msgid "Requires 1 Skill Point"
12691468 msgstr "Requer 1 Ponto de Habilidade"
12701469
1271 #: ../../../src/MenuPowers.cpp:1355
1272 #, c-format
1273 msgid "%d unspent skill point"
1274 msgstr "%d ponto de habilidade não utilizado"
1275
1276 #: ../../../src/MenuPowers.cpp:1358
1277 #, c-format
1278 msgid "%d unspent skill points"
1279 msgstr "%d pontos de habilidade não utilizados"
1280
1281 #: ../../../src/MenuPowers.cpp:1388
1470 #: ../../../src/MenuPowers.cpp:1444
1471 #, c-format
1472 msgid "Available skill points: %d"
1473 msgstr ""
1474
1475 #: ../../../src/MenuPowers.cpp:1476
12821476 msgid "Next Level:"
12831477 msgstr "Próximo Nível:"
12841478
1285 #: ../../../src/MenuStash.cpp:96
1286 msgid "Shared Stash"
1287 msgstr "Baú Compartilhado"
1288
1289 #: ../../../src/MenuStash.cpp:209
1290 msgid "Can not store quest items in the stash."
1291 msgstr "Não e possível armazenar itens de missão no baú."
1292
1293 #: ../../../src/MenuStash.cpp:219
1479 #: ../../../src/MenuStash.cpp:80 ../../../src/MenuStash.cpp:161
1480 msgid "Stash"
1481 msgstr ""
1482
1483 #: ../../../src/MenuStash.cpp:174 ../../../src/MenuStash.cpp:188
1484 msgid "Private"
1485 msgstr ""
1486
1487 #: ../../../src/MenuStash.cpp:175
1488 msgid "Shared"
1489 msgstr ""
1490
1491 #: ../../../src/MenuStash.cpp:340
1492 msgid "This item can not be stored in the stash."
1493 msgstr ""
1494
1495 #: ../../../src/MenuStash.cpp:345
1496 msgid "This item can not be stored in the private stash."
1497 msgstr ""
1498
1499 #: ../../../src/MenuStash.cpp:350
1500 msgid "This item can not be stored in the shared stash."
1501 msgstr ""
1502
1503 #: ../../../src/MenuStash.cpp:360
12941504 msgid "Stash is full."
12951505 msgstr "Baú esta cheio."
12961506
1297 #: ../../../src/MenuTalker.cpp:454
1507 #: ../../../src/MenuStash.cpp:414
1508 #, c-format
1509 msgid "Can not store item in stash: %s"
1510 msgstr ""
1511
1512 #: ../../../src/MenuTalker.cpp:448
1513 #, c-format
1514 msgid "<dialog node %d>"
1515 msgstr ""
1516
1517 #: ../../../src/MenuTalker.cpp:456
12981518 msgid "Trade"
12991519 msgstr "Troca"
13001520
1301 #: ../../../src/MenuVendor.cpp:58
1521 #: ../../../src/MenuVendor.cpp:60
13021522 msgid "Buyback"
13031523 msgstr "Recompra"
13041524
1305 #: ../../../src/MenuVendor.cpp:279
1525 #: ../../../src/MenuVendor.cpp:283
13061526 msgid "Vendor"
13071527 msgstr "Vendedor"
13081528
1309 #: ../../../src/PowerManager.cpp:1136
1529 #: ../../../src/PowerManager.cpp:1208
13101530 #, c-format
13111531 msgid "+%d Shield"
13121532 msgstr "+%d Escudo"
13131533
1314 #: ../../../src/PowerManager.cpp:1392
1534 #: ../../../src/PowerManager.cpp:1465
13151535 msgid "You are already transformed, untransform first."
13161536 msgstr "Você já foi transformado, desfaça a transformação primeiro."
13171537
1318 #: ../../../src/PowerManager.cpp:1404
1538 #: ../../../src/PowerManager.cpp:1477
13191539 msgid "Could not untransform at this position."
13201540 msgstr "Não foi possível desfazer a transformação nesta posição."
13211541
13231543 msgid "Completed Quests"
13241544 msgstr "Missões Concluídas"
13251545
1326 #: ../../../src/SaveLoad.cpp:243 ../../../src/SaveLoad.cpp:244
1546 #: ../../../src/SaveLoad.cpp:250 ../../../src/SaveLoad.cpp:251
13271547 msgid "Game saved."
13281548 msgstr "Jogo salvo."
13291549
1330 #: ../../../src/SDLInputState.cpp:582
1550 #: ../../../src/SDLInputState.cpp:643
1551 msgid "BkSp"
1552 msgstr ""
1553
1554 #: ../../../src/SDLInputState.cpp:644
1555 msgid "Caps"
1556 msgstr ""
1557
1558 #: ../../../src/SDLInputState.cpp:645
1559 msgid "Del"
1560 msgstr ""
1561
1562 #: ../../../src/SDLInputState.cpp:647 ../../../src/SDLInputState.cpp:677
1563 msgid "End"
1564 msgstr "End"
1565
1566 #: ../../../src/SDLInputState.cpp:648
1567 msgid "Esc"
1568 msgstr ""
1569
1570 #: ../../../src/SDLInputState.cpp:649 ../../../src/SDLInputState.cpp:679
1571 msgid "Home"
1572 msgstr "Home"
1573
1574 #: ../../../src/SDLInputState.cpp:650
1575 msgid "Ins"
1576 msgstr ""
1577
1578 #: ../../../src/SDLInputState.cpp:651
1579 msgid "LAlt"
1580 msgstr ""
1581
1582 #: ../../../src/SDLInputState.cpp:652
1583 msgid "LCtrl"
1584 msgstr ""
1585
1586 #: ../../../src/SDLInputState.cpp:654
1587 msgid "LShft"
1588 msgstr ""
1589
1590 #: ../../../src/SDLInputState.cpp:655
1591 msgid "Num"
1592 msgstr ""
1593
1594 #: ../../../src/SDLInputState.cpp:656
1595 msgid "PgDn"
1596 msgstr ""
1597
1598 #: ../../../src/SDLInputState.cpp:657
1599 msgid "PgUp"
1600 msgstr ""
1601
1602 #: ../../../src/SDLInputState.cpp:658 ../../../src/SDLInputState.cpp:688
1603 msgid "Pause"
1604 msgstr "Pause"
1605
1606 #: ../../../src/SDLInputState.cpp:659
1607 msgid "Print"
1608 msgstr ""
1609
1610 #: ../../../src/SDLInputState.cpp:660
1611 msgid "RAlt"
1612 msgstr ""
1613
1614 #: ../../../src/SDLInputState.cpp:661
1615 msgid "RCtrl"
1616 msgstr ""
1617
1618 #: ../../../src/SDLInputState.cpp:662
1619 msgid "Ret"
1620 msgstr ""
1621
1622 #: ../../../src/SDLInputState.cpp:664
1623 msgid "RShft"
1624 msgstr ""
1625
1626 #: ../../../src/SDLInputState.cpp:665
1627 msgid "SLock"
1628 msgstr ""
1629
1630 #: ../../../src/SDLInputState.cpp:666
1631 msgid "Spc"
1632 msgstr ""
1633
1634 #: ../../../src/SDLInputState.cpp:667 ../../../src/SDLInputState.cpp:697
1635 msgid "Tab"
1636 msgstr "Tab"
1637
1638 #: ../../../src/SDLInputState.cpp:673
13311639 msgid "Backspace"
13321640 msgstr "Backspace"
13331641
1334 #: ../../../src/SDLInputState.cpp:583
1642 #: ../../../src/SDLInputState.cpp:674
13351643 msgid "CapsLock"
13361644 msgstr "CapsLock"
13371645
1338 #: ../../../src/SDLInputState.cpp:586
1339 msgid "End"
1340 msgstr "End"
1341
1342 #: ../../../src/SDLInputState.cpp:587
1646 #: ../../../src/SDLInputState.cpp:678
13431647 msgid "Escape"
13441648 msgstr "Escape"
13451649
1346 #: ../../../src/SDLInputState.cpp:588
1347 msgid "Home"
1348 msgstr "Home"
1349
1350 #: ../../../src/SDLInputState.cpp:589
1650 #: ../../../src/SDLInputState.cpp:680
13511651 msgid "Insert"
13521652 msgstr "Insert"
13531653
1354 #: ../../../src/SDLInputState.cpp:590
1654 #: ../../../src/SDLInputState.cpp:681
13551655 msgid "Left Alt"
13561656 msgstr "Alt Esquerdo"
13571657
1358 #: ../../../src/SDLInputState.cpp:591
1658 #: ../../../src/SDLInputState.cpp:682
13591659 msgid "Left Ctrl"
13601660 msgstr "Ctrl Esquerdo"
13611661
1362 #: ../../../src/SDLInputState.cpp:593
1662 #: ../../../src/SDLInputState.cpp:684
13631663 msgid "Left Shift"
13641664 msgstr "Shift Esquerdo"
13651665
1366 #: ../../../src/SDLInputState.cpp:594
1666 #: ../../../src/SDLInputState.cpp:685
13671667 msgid "NumLock"
13681668 msgstr "NumLock"
13691669
1370 #: ../../../src/SDLInputState.cpp:595
1670 #: ../../../src/SDLInputState.cpp:686
13711671 msgid "PageDown"
13721672 msgstr "PageDown"
13731673
1374 #: ../../../src/SDLInputState.cpp:596
1674 #: ../../../src/SDLInputState.cpp:687
13751675 msgid "PageUp"
13761676 msgstr "PageUp"
13771677
1378 #: ../../../src/SDLInputState.cpp:597
1379 msgid "Pause"
1380 msgstr "Pause"
1381
1382 #: ../../../src/SDLInputState.cpp:598
1678 #: ../../../src/SDLInputState.cpp:689
13831679 msgid "PrintScreen"
13841680 msgstr "PrintScreen"
13851681
1386 #: ../../../src/SDLInputState.cpp:599
1682 #: ../../../src/SDLInputState.cpp:690
13871683 msgid "Right Alt"
13881684 msgstr "Alt Direito"
13891685
1390 #: ../../../src/SDLInputState.cpp:600
1686 #: ../../../src/SDLInputState.cpp:691
13911687 msgid "Right Ctrl"
13921688 msgstr "Ctrl Direito"
13931689
1394 #: ../../../src/SDLInputState.cpp:601
1690 #: ../../../src/SDLInputState.cpp:692
13951691 msgid "Return"
13961692 msgstr "Enter"
13971693
1398 #: ../../../src/SDLInputState.cpp:603
1694 #: ../../../src/SDLInputState.cpp:694
13991695 msgid "Right Shift"
14001696 msgstr "Shift Direito"
14011697
1402 #: ../../../src/SDLInputState.cpp:604
1698 #: ../../../src/SDLInputState.cpp:695
14031699 msgid "ScrollLock"
14041700 msgstr "ScrollLock"
14051701
1406 #: ../../../src/SDLInputState.cpp:605
1702 #: ../../../src/SDLInputState.cpp:696
14071703 msgid "Space"
14081704 msgstr "Espaço"
14091705
1410 #: ../../../src/SDLInputState.cpp:606
1411 msgid "Tab"
1412 msgstr "Tab"
1413
1414 #: ../../../src/SDLInputState.cpp:620
1706 #: ../../../src/SDLInputState.cpp:710
1707 #, c-format
1708 msgid "M%d"
1709 msgstr ""
1710
1711 #: ../../../src/SDLInputState.cpp:716
14151712 #, c-format
14161713 msgid "Mouse %d"
14171714 msgstr "Mouse %d"
14181715
1419 #: ../../../src/SDLInputState.cpp:628
1716 #: ../../../src/SDLInputState.cpp:726
1717 #, c-format
1718 msgid "JX%d-"
1719 msgstr ""
1720
1721 #: ../../../src/SDLInputState.cpp:728
14201722 #, c-format
14211723 msgid "Axis %d -"
14221724 msgstr "Eixo %d -"
14231725
1424 #: ../../../src/SDLInputState.cpp:630
1726 #: ../../../src/SDLInputState.cpp:732
1727 #, c-format
1728 msgid "JX%d+"
1729 msgstr ""
1730
1731 #: ../../../src/SDLInputState.cpp:734
14251732 #, c-format
14261733 msgid "Axis %d +"
14271734 msgstr "Eixo %d +"
14281735
1429 #: ../../../src/SDLInputState.cpp:633
1736 #: ../../../src/SDLInputState.cpp:739
1737 #, c-format
1738 msgid "JB%d"
1739 msgstr ""
1740
1741 #: ../../../src/SDLInputState.cpp:741
14301742 #, c-format
14311743 msgid "Button %d"
14321744 msgstr "Botão %d"
14331745
1434 #: ../../../src/SDLInputState.cpp:637
1435 msgid "(none)"
1436 msgstr "(nenhum)"
1437
1438 #: ../../../src/SDLInputState.cpp:677
1746 #: ../../../src/SDLInputState.cpp:787
14391747 msgid "Touch control D-Pad"
14401748 msgstr ""
14411749
1442 #: ../../../src/SDLInputState.cpp:701
1750 #: ../../../src/SDLInputState.cpp:810
14431751 msgid "Touch control buttons"
14441752 msgstr ""
14451753
1446 #: ../../../src/SDLInputState.cpp:716
1754 #: ../../../src/SDLInputState.cpp:824
14471755 msgid "Tap"
14481756 msgstr "Tap"
14491757
1450 #: ../../../src/SDLInputState.cpp:760 ../../../src/SDLInputState.cpp:764
1451 #: ../../../src/SDLInputState.cpp:768
1758 #: ../../../src/SDLInputState.cpp:876 ../../../src/SDLInputState.cpp:878
1759 #, c-format
1760 msgid "Can not bind: %s"
1761 msgstr ""
1762
1763 #: ../../../src/SDLInputState.cpp:890 ../../../src/SDLInputState.cpp:894
1764 #: ../../../src/SDLInputState.cpp:898
14521765 #, c-format
14531766 msgid "'%s' is no longer bound to:"
14541767 msgstr "'%s' não está mais obrigado a:"
16111924 msgid "Base MP"
16121925 msgstr "MP Básico"
16131926
1614 #: ../../../src/Utils.cpp:346
1927 #: ../../../src/Utils.cpp:365
16151928 msgid "k"
16161929 msgstr "k"
16171930
1618 #: ../../../src/Utils.cpp:580
1931 #: ../../../src/Utils.cpp:635
16191932 #, c-format
16201933 msgid "%s second"
16211934 msgstr "%s segundo"
16221935
1623 #: ../../../src/Utils.cpp:583
1936 #: ../../../src/Utils.cpp:638
16241937 #, c-format
16251938 msgid "%s seconds"
16261939 msgstr "%s segundos"
33 # FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
44 #
55 # Translators:
6 # Justin Jacobs <jajdorkster@gmail.com>, 2018
76 # Ademaro <ademaro@ya.ru>, 2018
7 # Justin Jacobs <jajdorkster@gmail.com>, 2019
88 #
99 #, fuzzy
1010 msgid ""
1111 msgstr ""
1212 "Project-Id-Version: PACKAGE VERSION\n"
1313 "Report-Msgid-Bugs-To: \n"
14 "POT-Creation-Date: 2018-11-17 21:50-0500\n"
14 "POT-Creation-Date: 2021-05-23 20:34-0400\n"
1515 "PO-Revision-Date: 2018-03-28 19:16+0000\n"
16 "Last-Translator: Ademaro <ademaro@ya.ru>, 2018\n"
16 "Last-Translator: Justin Jacobs <jajdorkster@gmail.com>, 2019\n"
1717 "Language-Team: Russian (https://www.transifex.com/flareorg/teams/84925/ru/)\n"
1818 "MIME-Version: 1.0\n"
1919 "Content-Type: text/plain; charset=UTF-8\n"
2121 "Language: ru\n"
2222 "Plural-Forms: nplurals=4; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<12 || n%100>14) ? 1 : n%10==0 || (n%10>=5 && n%10<=9) || (n%100>=11 && n%100<=14)? 2 : 3);\n"
2323
24 #: ../../../src/Avatar.cpp:367
24 #: ../../../src/Avatar.cpp:391
25 msgid "Your health is low!"
26 msgstr ""
27
28 #: ../../../src/Avatar.cpp:421
2529 #, c-format
2630 msgid "Congratulations, you have reached level %d!"
2731 msgstr "Поздравляем! Вы достигли уровень %d!"
2832
29 #: ../../../src/Avatar.cpp:369
30 msgid "You may increase one attribute through the Character Menu."
31 msgstr "Вы можете увеличить один атрибут в Меню Персонажа."
32
33 #: ../../../src/Avatar.cpp:583
34 msgid "You are defeated. Game over! ${INPUT_CONTINUE} to exit to Title."
35 msgstr ""
36 "Вы потерпели поражение. Игра окончена! Нажмите ${INPUT_CONTINUE}, чтобы "
37 "выйти в Меню."
38
39 #: ../../../src/Avatar.cpp:589
40 msgid "You are defeated. ${INPUT_CONTINUE} to continue."
41 msgstr "Вы потерпели поражение. Нажмите ${INPUT_CONTINUE}, чтобы продолжить."
42
43 #: ../../../src/Avatar.cpp:839
33 #: ../../../src/Avatar.cpp:423
34 msgid "You may increase one or more attributes through the Character Menu."
35 msgstr ""
36
37 #: ../../../src/Avatar.cpp:427
38 msgid "You may unlock one or more abilities through the Powers Menu."
39 msgstr ""
40
41 #: ../../../src/Avatar.cpp:689
42 msgid "You are defeated."
43 msgstr ""
44
45 #: ../../../src/Avatar.cpp:935
4446 msgid "Transformation expired. You have been moved back to a safe place."
4547 msgstr "Трансформация завершилась. Вы были возвращены в безопасное место."
4648
47 #: ../../../src/CampaignManager.cpp:153
49 #: ../../../src/CampaignManager.cpp:152
4850 #, c-format
4951 msgid "%d %s removed."
5052 msgstr "%d %s убрано."
5153
52 #: ../../../src/CampaignManager.cpp:162
54 #: ../../../src/CampaignManager.cpp:171
55 #, c-format
56 msgid "%s x%d removed."
57 msgstr ""
58
59 #: ../../../src/CampaignManager.cpp:173
5360 #, c-format
5461 msgid "%s removed."
5562 msgstr "%s убран."
5663
57 #: ../../../src/CampaignManager.cpp:175
64 #: ../../../src/CampaignManager.cpp:187
65 #, c-format
66 msgid "You receive %d %s."
67 msgstr "Вы получаете %d %s."
68
69 #: ../../../src/CampaignManager.cpp:191
70 #, c-format
71 msgid "You receive %s x%d."
72 msgstr "Вы получаете %s x%d."
73
74 #: ../../../src/CampaignManager.cpp:193
5875 #, c-format
5976 msgid "You receive %s."
6077 msgstr "Вы получаете %s."
6178
62 #: ../../../src/CampaignManager.cpp:177
63 #, c-format
64 msgid "You receive %s x%d."
65 msgstr "Вы получаете %s x%d."
66
67 #: ../../../src/CampaignManager.cpp:186
68 #, c-format
69 msgid "You receive %d %s."
70 msgstr "Вы получаете %d %s."
71
72 #: ../../../src/CampaignManager.cpp:195
79 #: ../../../src/CampaignManager.cpp:210
7380 #, c-format
7481 msgid "You receive %d XP."
7582 msgstr "Вы получаете %d опыта."
7683
77 #: ../../../src/CampaignManager.cpp:201
84 #: ../../../src/CampaignManager.cpp:216
7885 msgid "HP restored."
7986 msgstr "Жизнь восстановлена."
8087
81 #: ../../../src/CampaignManager.cpp:205
88 #: ../../../src/CampaignManager.cpp:220
8289 msgid "MP restored."
8390 msgstr "Мана восстановлена."
8491
85 #: ../../../src/CampaignManager.cpp:210
92 #: ../../../src/CampaignManager.cpp:225
8693 msgid "HP and MP restored."
8794 msgstr "Жизнь и Мана восстановлены."
8895
89 #: ../../../src/CampaignManager.cpp:214
96 #: ../../../src/CampaignManager.cpp:229
9097 msgid "Negative effects removed."
9198 msgstr "Отрицательные эффекты убраны."
9299
93 #: ../../../src/CampaignManager.cpp:220
100 #: ../../../src/CampaignManager.cpp:235
94101 msgid "HP and MP restored, negative effects removed"
95102 msgstr "Жизнь и Мана восстановлены, отрицательные эффекты убраны"
96103
100107 "\n"
101108 "Often slower, but less likely to have issues."
102109 msgstr ""
110 "SDL software рендерер\n"
111 "\n"
112 "Чаще всего медленнее, но и проблемы возникают реже."
103113
104114 #: ../../../src/DeviceList.cpp:59
105115 msgid ""
107117 "\n"
108118 "The default renderer that is often faster than the SDL software renderer."
109119 msgstr ""
110
111 #: ../../../src/EngineSettings.cpp:561
120 "SDL hardware рендерер\n"
121 "\n"
122 "Рендерер по-умолчанию. Быстрее, чем SDL software рендерер."
123
124 #: ../../../src/EngineSettings.cpp:586
112125 msgid "Adventurer"
113126 msgstr "Авантюрист"
114127
115 #: ../../../src/Entity.cpp:511
128 #: ../../../src/Entity.cpp:527
116129 msgid "miss"
117130 msgstr "промах"
118131
119 #: ../../../src/Entity.cpp:548 ../../../src/PowerManager.cpp:1152
120 #: ../../../src/StatBlock.cpp:805 ../../../src/StatBlock.cpp:811
132 #: ../../../src/Entity.cpp:565 ../../../src/PowerManager.cpp:1224
133 #: ../../../src/StatBlock.cpp:917 ../../../src/StatBlock.cpp:923
121134 #, c-format
122135 msgid "+%d HP"
123136 msgstr "+%d Жизни"
124137
125 #: ../../../src/Entity.cpp:555 ../../../src/StatBlock.cpp:816
126 #: ../../../src/StatBlock.cpp:822
138 #: ../../../src/Entity.cpp:572 ../../../src/StatBlock.cpp:928
139 #: ../../../src/StatBlock.cpp:934
127140 #, c-format
128141 msgid "+%d MP"
129142 msgstr "+%d Маны"
130143
131 #: ../../../src/EventManager.cpp:738
144 #: ../../../src/EventManager.cpp:792
132145 msgid "Unknown destination"
133146 msgstr "Неизвестная цель"
134147
135 #: ../../../src/GameStateConfigBase.cpp:89
136 #: ../../../src/GameStateConfigBase.cpp:110
148 #: ../../../src/GameState.cpp:37 ../../../src/GameState.cpp:58
149 msgid "Loading..."
150 msgstr "Загрузка..."
151
152 #: ../../../src/GameStateLoad.cpp:90 ../../../src/GameStateLoad.cpp:103
153 msgid "Delete Save"
154 msgstr "Удалить Игру"
155
156 #: ../../../src/GameStateLoad.cpp:90
157 msgid "Delete this save?"
158 msgstr "Удалить эту сохранённую игру?"
159
160 #: ../../../src/GameStateLoad.cpp:92
161 msgid "Exit to Title"
162 msgstr "Выйти в Меню"
163
164 #: ../../../src/GameStateLoad.cpp:95
165 msgid "New Game"
166 msgstr "Новая Игра"
167
168 #: ../../../src/GameStateLoad.cpp:99 ../../../src/GameStateLoad.cpp:607
169 msgid "Choose a Slot"
170 msgstr "Выберите Слот"
171
172 #: ../../../src/GameStateLoad.cpp:580 ../../../src/GameStateLoad.cpp:601
173 msgid "Enable a story mod to continue"
174 msgstr "Включите сюжетный мод для продолжения"
175
176 #: ../../../src/GameStateLoad.cpp:596
177 msgid "Load Game"
178 msgstr "Загрузить Игру"
179
180 #: ../../../src/GameStateLoad.cpp:705
181 msgid "Entering game world..."
182 msgstr "Вход в игровой мир..."
183
184 #: ../../../src/GameStateLoad.cpp:708
185 msgid "Loading saved game..."
186 msgstr "Загрузка сохранённой игры..."
187
188 #: ../../../src/GameStateLoad.cpp:741
189 msgid "Invalid save"
190 msgstr "Недействительная игра"
191
192 #: ../../../src/GameStateLoad.cpp:765 ../../../src/ItemManager.cpp:745
193 #: ../../../src/MenuPowers.cpp:860 ../../../src/MenuPowers.cpp:1219
194 #: ../../../src/MenuPowers.cpp:1631
195 #, c-format
196 msgid "Level %d"
197 msgstr "Уровень %d"
198
199 #: ../../../src/GameStateNew.cpp:66 ../../../src/InputState.cpp:416
200 #: ../../../src/MenuConfig.cpp:246
201 msgid "Cancel"
202 msgstr "Отмена"
203
204 #: ../../../src/GameStateNew.cpp:69
205 msgid "Create"
206 msgstr "Создать"
207
208 #: ../../../src/GameStateNew.cpp:77
209 msgid "Randomize"
210 msgstr "Случайно"
211
212 #: ../../../src/GameStateNew.cpp:93
213 msgid "Choose a Portrait"
214 msgstr "Выберите Портрет"
215
216 #: ../../../src/GameStateNew.cpp:97
217 msgid "Choose a Name"
218 msgstr "Выберите Имя"
219
220 #: ../../../src/GameStateNew.cpp:101
221 msgid "Permadeath?"
222 msgstr "Одна Жизнь?"
223
224 #: ../../../src/GameStateNew.cpp:105
225 msgid "Choose a Class"
226 msgstr "Выберите Класс"
227
228 #: ../../../src/GameStateTitle.cpp:107
229 msgid "Play Game"
230 msgstr "Играть"
231
232 #: ../../../src/GameStateTitle.cpp:110
233 msgid "Enable a core mod to continue"
234 msgstr "Включите основной мод для продолжения"
235
236 #: ../../../src/GameStateTitle.cpp:114 ../../../src/MenuMiniMap.cpp:152
237 msgid "Configuration"
238 msgstr "Настройки"
239
240 #: ../../../src/GameStateTitle.cpp:117
241 msgid "Credits"
242 msgstr "Авторы"
243
244 #: ../../../src/GameStateTitle.cpp:120
245 msgid "Exit Game"
246 msgstr "Выйти из Игры"
247
248 #: ../../../src/InputState.cpp:417
249 msgid "Accept"
250 msgstr "Принять"
251
252 #: ../../../src/InputState.cpp:418 ../../../src/MenuMovementType.cpp:123
253 #: ../../../src/MenuMovementType.cpp:132 ../../../src/SDLInputState.cpp:668
254 #: ../../../src/SDLInputState.cpp:698
255 msgid "Up"
256 msgstr "Вверх"
257
258 #: ../../../src/InputState.cpp:419 ../../../src/MenuMovementType.cpp:125
259 #: ../../../src/MenuMovementType.cpp:134 ../../../src/SDLInputState.cpp:646
260 #: ../../../src/SDLInputState.cpp:676
261 msgid "Down"
262 msgstr "Вниз"
263
264 #: ../../../src/InputState.cpp:420 ../../../src/MenuMovementType.cpp:124
265 #: ../../../src/MenuMovementType.cpp:133 ../../../src/SDLInputState.cpp:653
266 #: ../../../src/SDLInputState.cpp:683
267 msgid "Left"
268 msgstr "Влево"
269
270 #: ../../../src/InputState.cpp:421 ../../../src/MenuMovementType.cpp:126
271 #: ../../../src/MenuMovementType.cpp:135 ../../../src/SDLInputState.cpp:663
272 #: ../../../src/SDLInputState.cpp:693
273 msgid "Right"
274 msgstr "Вправо"
275
276 #: ../../../src/InputState.cpp:422
277 msgid "Bar1"
278 msgstr "Меню1"
279
280 #: ../../../src/InputState.cpp:423
281 msgid "Bar2"
282 msgstr "Меню2"
283
284 #: ../../../src/InputState.cpp:424
285 msgid "Bar3"
286 msgstr "Меню3"
287
288 #: ../../../src/InputState.cpp:425
289 msgid "Bar4"
290 msgstr "Меню4"
291
292 #: ../../../src/InputState.cpp:426
293 msgid "Bar5"
294 msgstr "Меню5"
295
296 #: ../../../src/InputState.cpp:427
297 msgid "Bar6"
298 msgstr "Меню6"
299
300 #: ../../../src/InputState.cpp:428
301 msgid "Bar7"
302 msgstr "Меню7"
303
304 #: ../../../src/InputState.cpp:429
305 msgid "Bar8"
306 msgstr "Меню8"
307
308 #: ../../../src/InputState.cpp:430
309 msgid "Bar9"
310 msgstr "Меню9"
311
312 #: ../../../src/InputState.cpp:431
313 msgid "Bar0"
314 msgstr "Меню0"
315
316 #: ../../../src/InputState.cpp:432 ../../../src/MenuActionBar.cpp:84
317 #: ../../../src/MenuCharacter.cpp:54
318 msgid "Character"
319 msgstr "Персонаж"
320
321 #: ../../../src/InputState.cpp:433 ../../../src/MenuActionBar.cpp:85
322 #: ../../../src/MenuInventory.cpp:130 ../../../src/MenuVendor.cpp:59
323 msgid "Inventory"
324 msgstr "Инвентарь"
325
326 #: ../../../src/InputState.cpp:434 ../../../src/MenuActionBar.cpp:86
327 #: ../../../src/MenuPowers.cpp:158
328 msgid "Powers"
329 msgstr "Силы"
330
331 #: ../../../src/InputState.cpp:435 ../../../src/MenuActionBar.cpp:87
332 #: ../../../src/MenuLog.cpp:72
333 msgid "Log"
334 msgstr "Журнал"
335
336 #: ../../../src/InputState.cpp:436
337 msgid "Main1"
338 msgstr "Главное1"
339
340 #: ../../../src/InputState.cpp:437
341 msgid "Main2"
342 msgstr "Главное2"
343
344 #: ../../../src/InputState.cpp:438
345 msgid "Ctrl"
346 msgstr "CTRL"
347
348 #: ../../../src/InputState.cpp:439
349 msgid "Shift"
350 msgstr "SHIFT"
351
352 #: ../../../src/InputState.cpp:440
353 msgid "Alt"
354 msgstr "ALT"
355
356 #: ../../../src/InputState.cpp:441 ../../../src/SDLInputState.cpp:675
357 msgid "Delete"
358 msgstr "Удалить"
359
360 #: ../../../src/InputState.cpp:442
361 msgid "ActionBar Accept"
362 msgstr "Панель действий: Принять"
363
364 #: ../../../src/InputState.cpp:443
365 msgid "ActionBar Left"
366 msgstr "Панель действий: Влево"
367
368 #: ../../../src/InputState.cpp:444
369 msgid "ActionBar Right"
370 msgstr "Панель действий: Вправо"
371
372 #: ../../../src/InputState.cpp:445
373 msgid "ActionBar Use"
374 msgstr "Панель действий: Использовать"
375
376 #: ../../../src/InputState.cpp:446
377 msgid "Developer Menu"
378 msgstr "Меню Разработчика"
379
380 #: ../../../src/InputState.cpp:448
381 msgid "Left Mouse"
382 msgstr "Левая Кнопка Мыши"
383
384 #: ../../../src/InputState.cpp:449
385 msgid "Middle Mouse"
386 msgstr "Средняя Кнопка Мыши"
387
388 #: ../../../src/InputState.cpp:450
389 msgid "Right Mouse"
390 msgstr "Правая Кнопка Мыши"
391
392 #: ../../../src/InputState.cpp:451
393 msgid "Wheel Up"
394 msgstr "Прокрутка Вверх"
395
396 #: ../../../src/InputState.cpp:452
397 msgid "Wheel Down"
398 msgstr "Прокрутка Вниз"
399
400 #: ../../../src/InputState.cpp:453
401 msgid "Mouse X1"
402 msgstr "Мышь X1"
403
404 #: ../../../src/InputState.cpp:454
405 msgid "Mouse X2"
406 msgstr "Мышь X2"
407
408 #: ../../../src/ItemManager.cpp:475
409 msgid "Unknown Item"
410 msgstr "Неизвестный Предмет"
411
412 #: ../../../src/ItemManager.cpp:646 ../../../src/MenuPowers.cpp:959
413 #, c-format
414 msgid "%d%% Speed"
415 msgstr "%d%% Скорости"
416
417 #: ../../../src/ItemManager.cpp:650 ../../../src/MenuPowers.cpp:962
418 #, c-format
419 msgid "%d%% Attack Speed"
420 msgstr "%d%% Скорость Атаки"
421
422 #: ../../../src/ItemManager.cpp:672 ../../../src/MenuCharacter.cpp:352
423 #: ../../../src/MenuPowers.cpp:931
424 #, c-format
425 msgid "Resistance (%s)"
426 msgstr "Сопротивление (%s)"
427
428 #: ../../../src/ItemManager.cpp:682
429 #, c-format
430 msgid "Requires %s"
431 msgstr "Требуется %s"
432
433 #: ../../../src/ItemManager.cpp:731
434 msgid "Quest Item"
435 msgstr "Предмет Задания"
436
437 #: ../../../src/ItemManager.cpp:758
438 #, c-format
439 msgid "Quality: %s"
440 msgstr "Качество: %s"
441
442 #: ../../../src/ItemManager.cpp:783
443 #, c-format
444 msgid "Absorb: %d-%d"
445 msgstr "Поглощение: %d-%d"
446
447 #: ../../../src/ItemManager.cpp:785
448 #, c-format
449 msgid "Absorb: %d"
450 msgstr "Поглощение: %d"
451
452 #: ../../../src/ItemManager.cpp:825 ../../../src/MenuPowers.cpp:1206
453 #: ../../../src/MenuPowers.cpp:1209
454 #, c-format
455 msgid "Requires Level %d"
456 msgstr "Требуется Уровень %d"
457
458 #: ../../../src/ItemManager.cpp:836 ../../../src/MenuPowers.cpp:1198
459 #: ../../../src/MenuPowers.cpp:1200
460 #, c-format
461 msgid "Requires %s %d"
462 msgstr "Требуется %s %d"
463
464 #: ../../../src/ItemManager.cpp:847
465 #, c-format
466 msgid "Requires Class: %s"
467 msgstr "Требуется Класс: %s"
468
469 #: ../../../src/ItemManager.cpp:863 ../../../src/ItemManager.cpp:875
470 #, c-format
471 msgid "Buy Price: %d %s"
472 msgstr "Цена Покупки: %d %s"
473
474 #: ../../../src/ItemManager.cpp:865 ../../../src/ItemManager.cpp:877
475 #, c-format
476 msgid "Buy Price: %d %s each"
477 msgstr "Цена Покупки: %d %s каждый"
478
479 #: ../../../src/ItemManager.cpp:885
480 #, c-format
481 msgid "Sell Price: %d %s"
482 msgstr "Цена Продажи: %d %s"
483
484 #: ../../../src/ItemManager.cpp:887
485 #, c-format
486 msgid "Sell Price: %d %s each"
487 msgstr "Цена Продажи: %d %s каждый"
488
489 #: ../../../src/ItemManager.cpp:896
490 msgid "Set:"
491 msgstr ""
492
493 #: ../../../src/ItemManager.cpp:903
494 #, c-format
495 msgid "%d items:"
496 msgstr "%d предметов:"
497
498 #: ../../../src/ItemManager.cpp:915
499 #, c-format
500 msgid "Press [%s] to read"
501 msgstr "Нажмите [%s], чтобы прочитать"
502
503 #: ../../../src/ItemManager.cpp:918
504 #, c-format
505 msgid "Press [%s] to use"
506 msgstr "Нажмите [%s], чтобы использовать"
507
508 #: ../../../src/MenuActionBar.cpp:239 ../../../src/MenuActionBar.cpp:246
509 #: ../../../src/MenuActionBar.cpp:249 ../../../src/MenuActionBar.cpp:255
510 #, c-format
511 msgid "Hotkey: %s"
512 msgstr "Горячая клавиша: %s"
513
514 #: ../../../src/MenuActionBar.cpp:621
515 msgid "Not enough MP."
516 msgstr "Недостаточно МР."
517
518 #: ../../../src/MenuActiveEffects.cpp:124
519 #, c-format
520 msgid "x%d"
521 msgstr "x%d"
522
523 #: ../../../src/MenuActiveEffects.cpp:219
524 msgid "Remaining:"
525 msgstr "Осталось:"
526
527 #: ../../../src/MenuActiveEffects.cpp:225
528 #, c-format
529 msgid "x%d stacks"
530 msgstr ""
531
532 #: ../../../src/MenuCharacter.cpp:73 ../../../src/MenuCharacter.cpp:78
533 msgid "Name"
534 msgstr "Имя"
535
536 #: ../../../src/MenuCharacter.cpp:74 ../../../src/MenuCharacter.cpp:79
537 msgid "Level"
538 msgstr "Уровень"
539
540 #: ../../../src/MenuCharacter.cpp:309
541 #, c-format
542 msgid "Available stat points: %d"
543 msgstr ""
544
545 #: ../../../src/MenuCharacter.cpp:353
546 #, c-format
547 msgid "Reduces the damage taken from \"%s\" elemental attacks."
548 msgstr "Снижает урон полученный от \"%s\" элементальной атаки."
549
550 #: ../../../src/MenuCharacter.cpp:363 ../../../src/MenuManager.cpp:301
551 #, c-format
552 msgid "XP: %d"
553 msgstr "Опыт: %d"
554
555 #: ../../../src/MenuCharacter.cpp:365
556 #, c-format
557 msgid "Next: %d"
558 msgstr "Следующий: %d"
559
560 #: ../../../src/MenuCharacter.cpp:371
561 #, c-format
562 msgid "base (%d), bonus (%d)"
563 msgstr "базовое (%d), бонус (%d)"
564
565 #: ../../../src/MenuCharacter.cpp:379 ../../../src/MenuCharacter.cpp:393
566 msgid "Related stats:"
567 msgstr "Связанные атрибуты:"
568
569 #: ../../../src/MenuCharacter.cpp:419 ../../../src/MenuCharacter.cpp:443
570 #, c-format
571 msgid "Each level grants %d."
572 msgstr "Каждый уровень дает %d."
573
574 #: ../../../src/MenuCharacter.cpp:423 ../../../src/MenuCharacter.cpp:447
575 #, c-format
576 msgid "Each point of %s grants %d."
577 msgstr "Каждое очко %s дает %d."
578
579 #: ../../../src/MenuConfig.cpp:122 ../../../src/MenuConfig.cpp:1171
580 msgid "Clear"
581 msgstr "Очистить"
582
583 #: ../../../src/MenuConfig.cpp:122 ../../../src/MenuConfig.cpp:1169
584 msgid "Assign:"
585 msgstr "Назначение:"
586
587 #: ../../../src/MenuConfig.cpp:123 ../../../src/MenuConfig.cpp:245
137588 msgid "Defaults"
138 msgstr "Дефаулт"
139
140 #: ../../../src/GameStateConfigBase.cpp:89
589 msgstr "По-умолчанию"
590
591 #: ../../../src/MenuConfig.cpp:123
141592 msgid "Reset ALL settings?"
142593 msgstr "Сбросить ВСЕ настройки?"
143594
144 #: ../../../src/GameStateConfigBase.cpp:109 ../../../src/MenuNumPicker.cpp:49
595 #: ../../../src/MenuConfig.cpp:244 ../../../src/MenuNumPicker.cpp:49
145596 msgid "OK"
146597 msgstr "ОК"
147598
148 #: ../../../src/GameStateConfigBase.cpp:111 ../../../src/GameStateNew.cpp:65
149 #: ../../../src/InputState.cpp:401
150 msgid "Cancel"
151 msgstr "Отмена"
152
153 #: ../../../src/GameStateConfigBase.cpp:160
154 #: ../../../src/GameStateConfigDesktop.cpp:130
599 #: ../../../src/MenuConfig.cpp:248 ../../../src/MenuGameOver.cpp:72
600 msgid "Continue"
601 msgstr "Продолжить"
602
603 #: ../../../src/MenuConfig.cpp:250
604 msgid "Save Game"
605 msgstr ""
606
607 #: ../../../src/MenuConfig.cpp:293
608 msgid "Default"
609 msgstr "По умолчанию"
610
611 #: ../../../src/MenuConfig.cpp:293
612 msgid ""
613 "Show all loot tooltips, except for those that would be obscured by the "
614 "player or an enemy. Temporarily show all loot tooltips with 'Alt'."
615 msgstr ""
616 "Выпадающие предметы подсвечиваются на удалении от игрока или врага, при "
617 "нажатии клавиши 'Alt' и наведении курсора."
618
619 #: ../../../src/MenuConfig.cpp:294
620 msgid "Show all"
621 msgstr "Показывать всегда"
622
623 #: ../../../src/MenuConfig.cpp:294
624 msgid ""
625 "Always show loot tooltips. Temporarily hide all loot tooltips with 'Alt'."
626 msgstr ""
627 "Всегда подсвечивать выпадающие предметы. Временно скрыть подсветку клавишей "
628 "'Alt'."
629
630 #: ../../../src/MenuConfig.cpp:295 ../../../src/MenuConfig.cpp:300
631 msgid "Hidden"
632 msgstr "Скрывать"
633
634 #: ../../../src/MenuConfig.cpp:295
635 msgid ""
636 "Always hide loot tooltips, except for when a piece of loot is hovered with "
637 "the mouse cursor. Temporarily show all loot tooltips with 'Alt'."
638 msgstr ""
639 "Не подсвечивать выпадающие предметы до наведения на них курсора. Временно "
640 "подстветить все предметы клавишей 'Alt'."
641
642 #: ../../../src/MenuConfig.cpp:298
643 msgid "Visible"
644 msgstr "Видимое"
645
646 #: ../../../src/MenuConfig.cpp:299
647 msgid "Visible (2x zoom)"
648 msgstr "Видимое (2х увеличение)"
649
650 #: ../../../src/MenuConfig.cpp:303
651 msgid ""
652 "Controls the type of warning to be activated when the player is below the "
653 "low health threshold."
654 msgstr ""
655
656 #: ../../../src/MenuConfig.cpp:304
657 msgid "- Display a message"
658 msgstr ""
659
660 #: ../../../src/MenuConfig.cpp:305
661 msgid "- Play a sound"
662 msgstr ""
663
664 #: ../../../src/MenuConfig.cpp:306
665 msgid "- Change the cursor"
666 msgstr ""
667
668 #: ../../../src/MenuConfig.cpp:308
669 msgid "Disabled"
670 msgstr ""
671
672 #: ../../../src/MenuConfig.cpp:309
673 msgid "All"
674 msgstr ""
675
676 #: ../../../src/MenuConfig.cpp:310
677 msgid "Message & Cursor"
678 msgstr ""
679
680 #: ../../../src/MenuConfig.cpp:311
681 msgid "Message & Sound"
682 msgstr ""
683
684 #: ../../../src/MenuConfig.cpp:312
685 msgid "Sound & Cursor"
686 msgstr ""
687
688 #: ../../../src/MenuConfig.cpp:313
689 msgid "Message"
690 msgstr ""
691
692 #: ../../../src/MenuConfig.cpp:314
693 msgid "Cursor"
694 msgstr ""
695
696 #: ../../../src/MenuConfig.cpp:315
697 msgid "Sound"
698 msgstr ""
699
700 #: ../../../src/MenuConfig.cpp:321
701 msgid ""
702 "When the player's health drops below the given threshold, the low health "
703 "notifications are triggered if one or more of them is enabled."
704 msgstr ""
705
706 #: ../../../src/MenuConfig.cpp:334 ../../../src/MenuConfig.cpp:1587
707 #: ../../../src/MenuGameOver.cpp:116
708 msgid "Exit"
709 msgstr "Выйти"
710
711 #: ../../../src/MenuConfig.cpp:335
712 msgid "Video"
713 msgstr "Видео"
714
715 #: ../../../src/MenuConfig.cpp:336
155716 msgid "Audio"
156717 msgstr "Аудио"
157718
158 #: ../../../src/GameStateConfigBase.cpp:161
159 #: ../../../src/GameStateConfigDesktop.cpp:131
719 #: ../../../src/MenuConfig.cpp:337
160720 msgid "Interface"
161721 msgstr "Интерфейс"
162722
163 #: ../../../src/GameStateConfigBase.cpp:162
164 #: ../../../src/GameStateConfigDesktop.cpp:134
723 #: ../../../src/MenuConfig.cpp:338
724 msgid "Input"
725 msgstr "Ввод"
726
727 #: ../../../src/MenuConfig.cpp:339
728 msgid "Keybindings"
729 msgstr "Привязки Клавиш"
730
731 #: ../../../src/MenuConfig.cpp:340
165732 msgid "Mods"
166733 msgstr "Моды"
167734
168 #: ../../../src/GameStateConfigBase.cpp:249 ../../../src/MenuExit.cpp:72
735 #: ../../../src/MenuConfig.cpp:352
736 msgid "Paused"
737 msgstr "Пауза"
738
739 #: ../../../src/MenuConfig.cpp:355
740 msgid "Time Played"
741 msgstr "Время в игре"
742
743 #: ../../../src/MenuConfig.cpp:361
744 msgid "Renderer"
745 msgstr "Рендерер"
746
747 #: ../../../src/MenuConfig.cpp:362
748 msgid "Full Screen Mode"
749 msgstr "Полноэкранный Режим"
750
751 #: ../../../src/MenuConfig.cpp:363
752 msgid "Hardware surfaces"
753 msgstr "Аппаратные поверхности"
754
755 #: ../../../src/MenuConfig.cpp:364
756 msgid "V-Sync"
757 msgstr "Верт. Синхронизация"
758
759 #: ../../../src/MenuConfig.cpp:365
760 msgid "Texture Filtering"
761 msgstr "Фильтрация Текстур"
762
763 #: ../../../src/MenuConfig.cpp:366
764 msgid "DPI scaling"
765 msgstr "Масштабирование DPI"
766
767 #: ../../../src/MenuConfig.cpp:367
768 msgid "Parallax Layers"
769 msgstr "Слои Параллакса"
770
771 #: ../../../src/MenuConfig.cpp:368
772 msgid "Allow changing gamma"
773 msgstr "Включить изменение гаммы"
774
775 #: ../../../src/MenuConfig.cpp:369
776 msgid "Gamma"
777 msgstr "Гамма"
778
779 #: ../../../src/MenuConfig.cpp:371
780 msgid "Sound Volume"
781 msgstr "Громкость Звука"
782
783 #: ../../../src/MenuConfig.cpp:372
169784 msgid "Music Volume"
170785 msgstr "Громкость Музыки"
171786
172 #: ../../../src/GameStateConfigBase.cpp:253 ../../../src/MenuExit.cpp:77
173 msgid "Sound Volume"
174 msgstr "Громкость Звука"
175
176 #: ../../../src/GameStateConfigBase.cpp:257
787 #: ../../../src/MenuConfig.cpp:374
177788 msgid "Language"
178789 msgstr "Язык"
179790
180 #: ../../../src/GameStateConfigBase.cpp:266
791 #: ../../../src/MenuConfig.cpp:375
181792 msgid "Show FPS"
182793 msgstr "Показывать FPS"
183794
184 #: ../../../src/GameStateConfigBase.cpp:270
185 msgid "Colorblind Mode"
186 msgstr "Режим цветовой слепоты"
187
188 #: ../../../src/GameStateConfigBase.cpp:274
795 #: ../../../src/MenuConfig.cpp:376
189796 msgid "Hardware mouse cursor"
190797 msgstr "Аппаратный курсор мыши"
191798
192 #: ../../../src/GameStateConfigBase.cpp:278
799 #: ../../../src/MenuConfig.cpp:377
800 msgid "Colorblind Mode"
801 msgstr "Режим адаптации для дальтоников"
802
803 #: ../../../src/MenuConfig.cpp:378
193804 msgid "Developer Mode"
194 msgstr "Режим Девелоперов"
195
196 #: ../../../src/GameStateConfigBase.cpp:282
805 msgstr "Режим Разработчика"
806
807 #: ../../../src/MenuConfig.cpp:379
197808 msgid "Subtitles"
198809 msgstr "Субтитры"
199810
200 #: ../../../src/GameStateConfigBase.cpp:286
201 msgid "Active Mods"
202 msgstr "Активные Моды"
203
204 #: ../../../src/GameStateConfigBase.cpp:295
205 msgid "Available Mods"
206 msgstr "Доступные Моды"
207
208 #: ../../../src/GameStateConfigBase.cpp:314
209 msgid "<< Disable"
210 msgstr "<< Отключить"
211
212 #: ../../../src/GameStateConfigBase.cpp:320
213 msgid "Enable >>"
214 msgstr "Включить >>"
215
216 #: ../../../src/GameStateConfigBase.cpp:873
217 msgid "Version:"
218 msgstr "Версия:"
219
220 #: ../../../src/GameStateConfigBase.cpp:878
221 msgid "Game:"
222 msgstr "Игра:"
223
224 #: ../../../src/GameStateConfigBase.cpp:883
225 msgid "Engine version:"
226 msgstr "Версия движка:"
227
228 #: ../../../src/GameStateConfigBase.cpp:891
229 msgid "Requires mods:"
230 msgstr "Требуются моды:"
231
232 #: ../../../src/GameStateConfigDesktop.cpp:83
233 #: ../../../src/GameStateConfigDesktop.cpp:751
234 msgid "Clear"
235 msgstr "Очистить"
236
237 #: ../../../src/GameStateConfigDesktop.cpp:83
238 #: ../../../src/GameStateConfigDesktop.cpp:749
239 msgid "Assign:"
240 msgstr ""
241
242 #: ../../../src/GameStateConfigDesktop.cpp:128
243 msgid "Video"
244 msgstr "Видео"
245
246 #: ../../../src/GameStateConfigDesktop.cpp:132
247 msgid "Input"
248 msgstr "Ввод"
249
250 #: ../../../src/GameStateConfigDesktop.cpp:133
251 msgid "Keybindings"
252 msgstr "Привязки Клавиш"
253
254 #: ../../../src/GameStateConfigDesktop.cpp:188
811 #: ../../../src/MenuConfig.cpp:380
812 msgid "Loot tooltip visibility"
813 msgstr "Подсветка выпадающих вещей"
814
815 #: ../../../src/MenuConfig.cpp:381
816 msgid "Mini-map mode"
817 msgstr "Режим мини-карты"
818
819 #: ../../../src/MenuConfig.cpp:382
820 msgid "Always show stat bar labels"
821 msgstr "Всегда показывать метки в строке состояния"
822
823 #: ../../../src/MenuConfig.cpp:383
824 msgid "Allow stat bar auto-hiding"
825 msgstr "Разрешить модам автоскрытие панелей"
826
827 #: ../../../src/MenuConfig.cpp:384
828 msgid "Show combat text"
829 msgstr "Показывать сообщения битвы"
830
831 #: ../../../src/MenuConfig.cpp:385
832 msgid "Automatically equip items"
833 msgstr "Сразу надевать предметы"
834
835 #: ../../../src/MenuConfig.cpp:386
836 msgid "Show hidden entity markers"
837 msgstr "Помечать меткой скрытых врагов"
838
839 #: ../../../src/MenuConfig.cpp:387
840 msgid "Low health notification"
841 msgstr ""
842
843 #: ../../../src/MenuConfig.cpp:388
844 msgid "Low health threshold"
845 msgstr ""
846
847 #: ../../../src/MenuConfig.cpp:389
848 msgid "Show item comparison tooltips"
849 msgstr ""
850
851 #: ../../../src/MenuConfig.cpp:392 ../../../src/MenuMovementType.cpp:94
852 #: ../../../src/MenuMovementType.cpp:131
853 msgid "Joystick"
854 msgstr "Джойстик"
855
856 #: ../../../src/MenuConfig.cpp:393
857 msgid "Move hero using mouse"
858 msgstr "Управлять героем мышью"
859
860 #: ../../../src/MenuConfig.cpp:394
861 msgid "Mouse aim"
862 msgstr "Целиться мышью"
863
864 #: ../../../src/MenuConfig.cpp:395
865 msgid "Do not use mouse"
866 msgstr "Не использовать мышь"
867
868 #: ../../../src/MenuConfig.cpp:396
869 msgid "Swap mouse movement button"
870 msgstr ""
871
872 #: ../../../src/MenuConfig.cpp:397
873 msgid "Attack with mouse movement"
874 msgstr ""
875
876 #: ../../../src/MenuConfig.cpp:398
877 msgid "Joystick Deadzone"
878 msgstr "Мёртвая зона джойстика"
879
880 #: ../../../src/MenuConfig.cpp:408
881 #, c-format
882 msgid "Primary binding: %s"
883 msgstr ""
884
885 #: ../../../src/MenuConfig.cpp:409
886 #, c-format
887 msgid "Alternate binding: %s"
888 msgstr ""
889
890 #: ../../../src/MenuConfig.cpp:410
891 #, c-format
892 msgid "Joystick binding: %s"
893 msgstr ""
894
895 #: ../../../src/MenuConfig.cpp:511
255896 msgid ""
256897 "Will try to store surfaces in video memory versus system memory. The effect "
257898 "this has on performance depends on the renderer."
258899 msgstr ""
259
260 #: ../../../src/GameStateConfigDesktop.cpp:189
900 "Будет нагружать память видеокарты вместо системной памяти. Эффект зависит от"
901 " рендерера."
902
903 #: ../../../src/MenuConfig.cpp:512
261904 msgid ""
262905 "Prevents screen tearing. Disable if you experience \"stuttering\" in "
263906 "windowed mode or input lag."
264907 msgstr ""
265908
266 #: ../../../src/GameStateConfigDesktop.cpp:190
909 #: ../../../src/MenuConfig.cpp:513
267910 msgid ""
268911 "When enabled, this uses the screen DPI in addition to the window dimensions "
269912 "to scale the rendering resolution. Otherwise, only the window dimensions are"
270913 " used."
271914 msgstr ""
272915
273 #: ../../../src/GameStateConfigDesktop.cpp:191
916 #: ../../../src/MenuConfig.cpp:514
274917 msgid ""
275918 "This enables parallax (non-tile) layers. Disabling this setting can improve "
276919 "performance in some cases."
277920 msgstr ""
278921
279 #: ../../../src/GameStateConfigDesktop.cpp:192
280 msgid "Experimental"
281 msgstr "Экспериментально"
282
283 #: ../../../src/GameStateConfigDesktop.cpp:193
284 msgid "For handheld devices"
285 msgstr "Для наладонных устройств"
286
287 #: ../../../src/GameStateConfigDesktop.cpp:211
288 msgid "Renderer"
289 msgstr ""
290
291 #: ../../../src/GameStateConfigDesktop.cpp:227
292 msgid "Full Screen Mode"
293 msgstr "Полноэкранный Режим"
294
295 #: ../../../src/GameStateConfigDesktop.cpp:231
296 msgid "Move hero using mouse"
297 msgstr "Управлять героя мышью"
298
299 #: ../../../src/GameStateConfigDesktop.cpp:235
300 msgid "Hardware surfaces"
301 msgstr "Аппаратные поверхности"
302
303 #: ../../../src/GameStateConfigDesktop.cpp:239
304 msgid "V-Sync"
305 msgstr "Верт. Синхронизация"
306
307 #: ../../../src/GameStateConfigDesktop.cpp:243
308 msgid "Texture Filtering"
309 msgstr "Фильтрация Текстур"
310
311 #: ../../../src/GameStateConfigDesktop.cpp:247
312 msgid "DPI scaling"
313 msgstr ""
314
315 #: ../../../src/GameStateConfigDesktop.cpp:251
316 msgid "Parallax Layers"
317 msgstr ""
318
319 #: ../../../src/GameStateConfigDesktop.cpp:255
320 msgid "Allow changing gamma"
321 msgstr "Включить изменение гаммы"
322
323 #: ../../../src/GameStateConfigDesktop.cpp:259
324 msgid "Gamma"
325 msgstr "Гамма"
326
327 #: ../../../src/GameStateConfigDesktop.cpp:263
328 msgid "Use joystick"
329 msgstr "Использовать джойстик"
330
331 #: ../../../src/GameStateConfigDesktop.cpp:267
332 msgid "Joystick"
333 msgstr "Джойстик"
334
335 #: ../../../src/GameStateConfigDesktop.cpp:283
336 msgid "Mouse aim"
337 msgstr "Целиться мышью"
338
339 #: ../../../src/GameStateConfigDesktop.cpp:287
340 msgid "Do not use mouse"
341 msgstr "Не использовать мышь"
342
343 #: ../../../src/GameStateConfigDesktop.cpp:291
344 msgid "Joystick Deadzone"
345 msgstr "Мёртвая зона джойстика"
346
347 #: ../../../src/GameState.cpp:37 ../../../src/GameState.cpp:58
348 msgid "Loading..."
349 msgstr "Загрузка..."
350
351 #: ../../../src/GameStateLoad.cpp:88 ../../../src/GameStateLoad.cpp:101
352 msgid "Delete Save"
353 msgstr "Удалить Игру"
354
355 #: ../../../src/GameStateLoad.cpp:88
356 msgid "Delete this save?"
357 msgstr "Удалить эту сохранённую игру?"
358
359 #: ../../../src/GameStateLoad.cpp:90
360 msgid "Exit to Title"
361 msgstr "Выйти в Меню"
362
363 #: ../../../src/GameStateLoad.cpp:93
364 msgid "New Game"
365 msgstr "Новая Игра"
366
367 #: ../../../src/GameStateLoad.cpp:97 ../../../src/GameStateLoad.cpp:600
368 msgid "Choose a Slot"
369 msgstr "Выберите Слот"
370
371 #: ../../../src/GameStateLoad.cpp:573 ../../../src/GameStateLoad.cpp:594
372 msgid "Enable a story mod to continue"
373 msgstr "Включите сюжетный мод для продолжения"
374
375 #: ../../../src/GameStateLoad.cpp:589
376 msgid "Load Game"
377 msgstr "Загрузить Игру"
378
379 #: ../../../src/GameStateLoad.cpp:695
380 msgid "Entering game world..."
381 msgstr "Вход в игровой мир..."
382
383 #: ../../../src/GameStateLoad.cpp:698
384 msgid "Loading saved game..."
385 msgstr "Загрузка сохранённой игры..."
386
387 #: ../../../src/GameStateLoad.cpp:731
388 msgid "Invalid save"
389 msgstr "Недействительная игра"
390
391 #: ../../../src/GameStateLoad.cpp:755 ../../../src/ItemManager.cpp:747
392 #: ../../../src/MenuPowers.cpp:778 ../../../src/MenuPowers.cpp:1144
393 #: ../../../src/MenuPowers.cpp:1542
394 #, c-format
395 msgid "Level %d"
396 msgstr "Уровень %d"
397
398 #: ../../../src/GameStateNew.cpp:68
399 msgid "Create"
400 msgstr "Создать"
401
402 #: ../../../src/GameStateNew.cpp:76
403 msgid "Randomize"
404 msgstr ""
405
406 #: ../../../src/GameStateNew.cpp:92
407 msgid "Choose a Portrait"
408 msgstr "Выберите Портрет"
409
410 #: ../../../src/GameStateNew.cpp:96
411 msgid "Choose a Name"
412 msgstr "Выберите Имя"
413
414 #: ../../../src/GameStateNew.cpp:100
415 msgid "Permadeath?"
416 msgstr "Одна Жизнь?"
417
418 #: ../../../src/GameStateNew.cpp:104
419 msgid "Choose a Class"
420 msgstr "Выберите Класс"
421
422 #: ../../../src/GameStateTitle.cpp:108
423 msgid "Play Game"
424 msgstr "Играть"
425
426 #: ../../../src/GameStateTitle.cpp:111
427 msgid "Enable a core mod to continue"
428 msgstr "Включите основной мод для продолжения"
429
430 #: ../../../src/GameStateTitle.cpp:115
431 msgid "Configuration"
432 msgstr "Настройки"
433
434 #: ../../../src/GameStateTitle.cpp:118
435 msgid "Credits"
436 msgstr "Авторы"
437
438 #: ../../../src/GameStateTitle.cpp:121
439 msgid "Exit Game"
440 msgstr "Выйти из Игры"
441
442 #: ../../../src/InputState.cpp:402
443 msgid "Accept"
444 msgstr "Принять"
445
446 #: ../../../src/InputState.cpp:403 ../../../src/SDLInputState.cpp:607
447 msgid "Up"
448 msgstr "Вверх"
449
450 #: ../../../src/InputState.cpp:404 ../../../src/SDLInputState.cpp:585
451 msgid "Down"
452 msgstr "Вниз"
453
454 #: ../../../src/InputState.cpp:405 ../../../src/SDLInputState.cpp:592
455 msgid "Left"
456 msgstr "Влево"
457
458 #: ../../../src/InputState.cpp:406 ../../../src/SDLInputState.cpp:602
459 msgid "Right"
460 msgstr "Вправо"
461
462 #: ../../../src/InputState.cpp:407
463 msgid "Bar1"
464 msgstr "Меню1"
465
466 #: ../../../src/InputState.cpp:408
467 msgid "Bar2"
468 msgstr "Меню2"
469
470 #: ../../../src/InputState.cpp:409
471 msgid "Bar3"
472 msgstr "Меню3"
473
474 #: ../../../src/InputState.cpp:410
475 msgid "Bar4"
476 msgstr "Меню4"
477
478 #: ../../../src/InputState.cpp:411
479 msgid "Bar5"
480 msgstr "Меню5"
481
482 #: ../../../src/InputState.cpp:412
483 msgid "Bar6"
484 msgstr "Меню6"
485
486 #: ../../../src/InputState.cpp:413
487 msgid "Bar7"
488 msgstr "Меню7"
489
490 #: ../../../src/InputState.cpp:414
491 msgid "Bar8"
492 msgstr "Меню8"
493
494 #: ../../../src/InputState.cpp:415
495 msgid "Bar9"
496 msgstr "Меню9"
497
498 #: ../../../src/InputState.cpp:416
499 msgid "Bar0"
500 msgstr "Меню0"
501
502 #: ../../../src/InputState.cpp:417 ../../../src/MenuActionBar.cpp:83
503 #: ../../../src/MenuCharacter.cpp:54
504 msgid "Character"
505 msgstr "Персонаж"
506
507 #: ../../../src/InputState.cpp:418 ../../../src/MenuActionBar.cpp:84
508 #: ../../../src/MenuInventory.cpp:137 ../../../src/MenuVendor.cpp:57
509 msgid "Inventory"
510 msgstr "Инвентарь"
511
512 #: ../../../src/InputState.cpp:419 ../../../src/MenuActionBar.cpp:85
513 #: ../../../src/MenuPowers.cpp:168
514 msgid "Powers"
515 msgstr "Силы"
516
517 #: ../../../src/InputState.cpp:420 ../../../src/MenuActionBar.cpp:86
518 #: ../../../src/MenuLog.cpp:72
519 msgid "Log"
520 msgstr "Журнал"
521
522 #: ../../../src/InputState.cpp:421
523 msgid "Main1"
524 msgstr "Главное1"
525
526 #: ../../../src/InputState.cpp:422
527 msgid "Main2"
528 msgstr "Главное2"
529
530 #: ../../../src/InputState.cpp:423
531 msgid "Ctrl"
532 msgstr "CTRL"
533
534 #: ../../../src/InputState.cpp:424
535 msgid "Shift"
536 msgstr "SHIFT"
537
538 #: ../../../src/InputState.cpp:425
539 msgid "Alt"
540 msgstr "ALT"
541
542 #: ../../../src/InputState.cpp:426 ../../../src/SDLInputState.cpp:584
543 msgid "Delete"
544 msgstr "Удалить"
545
546 #: ../../../src/InputState.cpp:427
547 msgid "ActionBar Accept"
548 msgstr "Панель действий: Принять"
549
550 #: ../../../src/InputState.cpp:428
551 msgid "ActionBar Left"
552 msgstr "Панель действий: Влево"
553
554 #: ../../../src/InputState.cpp:429
555 msgid "ActionBar Right"
556 msgstr "Панель действий: Вправо"
557
558 #: ../../../src/InputState.cpp:430
559 msgid "ActionBar Use"
560 msgstr "Панель действий: Использовать"
561
562 #: ../../../src/InputState.cpp:431
563 msgid "Developer Menu"
564 msgstr "Меню Девелопера"
565
566 #: ../../../src/InputState.cpp:433
567 msgid "Left Mouse"
568 msgstr "Левая Кнопка Мыши"
569
570 #: ../../../src/InputState.cpp:434
571 msgid "Middle Mouse"
572 msgstr "Средняя Кнопка Мыши"
573
574 #: ../../../src/InputState.cpp:435
575 msgid "Right Mouse"
576 msgstr "Правая Кнопка Мыши"
577
578 #: ../../../src/InputState.cpp:436
579 msgid "Wheel Up"
580 msgstr "Прокрутка Вверх"
581
582 #: ../../../src/InputState.cpp:437
583 msgid "Wheel Down"
584 msgstr "Прокрутка Вниз"
585
586 #: ../../../src/InputState.cpp:438
587 msgid "Mouse X1"
588 msgstr "Мышь X1"
589
590 #: ../../../src/InputState.cpp:439
591 msgid "Mouse X2"
592 msgstr "Мышь X2"
593
594 #: ../../../src/ItemManager.cpp:450 ../../../src/ItemManager.cpp:453
595 msgid "Unknown Item"
596 msgstr "Неизвестный Предмет"
597
598 #: ../../../src/ItemManager.cpp:648 ../../../src/MenuPowers.cpp:887
599 #, c-format
600 msgid "%d%% Speed"
601 msgstr "%d%% Скорости"
602
603 #: ../../../src/ItemManager.cpp:652 ../../../src/MenuPowers.cpp:890
604 #, c-format
605 msgid "%d%% Attack Speed"
606 msgstr ""
607
608 #: ../../../src/ItemManager.cpp:674 ../../../src/MenuCharacter.cpp:354
609 #: ../../../src/MenuPowers.cpp:833
610 #, c-format
611 msgid "Resistance (%s)"
612 msgstr ""
613
614 #: ../../../src/ItemManager.cpp:684
615 #, c-format
616 msgid "Requires %s"
617 msgstr ""
618
619 #: ../../../src/ItemManager.cpp:733
620 msgid "Quest Item"
621 msgstr "Предмет Задания"
622
623 #: ../../../src/ItemManager.cpp:760
624 #, c-format
625 msgid "Quality: %s"
626 msgstr "Качество: %s"
627
628 #: ../../../src/ItemManager.cpp:785
629 #, c-format
630 msgid "Absorb: %d-%d"
631 msgstr "Поглощение: %d-%d"
632
633 #: ../../../src/ItemManager.cpp:787
634 #, c-format
635 msgid "Absorb: %d"
636 msgstr "Поглощение: %d"
637
638 #: ../../../src/ItemManager.cpp:827 ../../../src/MenuPowers.cpp:1131
639 #: ../../../src/MenuPowers.cpp:1134
640 #, c-format
641 msgid "Requires Level %d"
642 msgstr "Требуется Уровень %d"
643
644 #: ../../../src/ItemManager.cpp:838 ../../../src/MenuPowers.cpp:1123
645 #: ../../../src/MenuPowers.cpp:1125
646 #, c-format
647 msgid "Requires %s %d"
648 msgstr "Требуется %s %d"
649
650 #: ../../../src/ItemManager.cpp:849
651 #, c-format
652 msgid "Requires Class: %s"
653 msgstr "Требуется Класс: %s"
654
655 #: ../../../src/ItemManager.cpp:864 ../../../src/ItemManager.cpp:876
656 #, c-format
657 msgid "Buy Price: %d %s"
658 msgstr "Цена Покупки: %d %s"
659
660 #: ../../../src/ItemManager.cpp:866 ../../../src/ItemManager.cpp:878
661 #, c-format
662 msgid "Buy Price: %d %s each"
663 msgstr "Цена Покупки: %d %s каждый"
664
665 #: ../../../src/ItemManager.cpp:886
666 #, c-format
667 msgid "Sell Price: %d %s"
668 msgstr "Цена Продажи: %d %s"
669
670 #: ../../../src/ItemManager.cpp:888
671 #, c-format
672 msgid "Sell Price: %d %s each"
673 msgstr "Цена Продажи: %d %s каждый"
674
675 #: ../../../src/ItemManager.cpp:897
676 msgid "Set:"
677 msgstr ""
678
679 #: ../../../src/ItemManager.cpp:904
680 #, c-format
681 msgid "%d items:"
682 msgstr "%d предметов: "
683
684 #: ../../../src/ItemManager.cpp:917
685 #, c-format
686 msgid "Press [%s] to use"
687 msgstr ""
688
689 #: ../../../src/ItemManager.cpp:920
690 #, c-format
691 msgid "Press [%s] to read"
692 msgstr ""
693
694 #: ../../../src/MenuActionBar.cpp:87
695 msgid "Loot tooltip visibility"
696 msgstr ""
697
698 #: ../../../src/MenuActionBar.cpp:88
699 msgid "Mini-map mode"
700 msgstr ""
701
702 #: ../../../src/MenuActionBar.cpp:89
703 msgid "Always show stat bar labels"
704 msgstr "Всегда показывать метки в строке состояния"
705
706 #: ../../../src/MenuActionBar.cpp:90
707 msgid "Show combat text"
708 msgstr "Показывать сообщения битвы"
709
710 #: ../../../src/MenuActionBar.cpp:254 ../../../src/MenuActionBar.cpp:261
711 #: ../../../src/MenuActionBar.cpp:264 ../../../src/MenuActionBar.cpp:271
712 #, c-format
713 msgid "Hotkey: %s"
714 msgstr "Горячая клавиша: %s"
715
716 #: ../../../src/MenuActionBar.cpp:474
717 #, c-format
718 msgid "Default. Temporarily show all loot tooltips with '%s'."
719 msgstr ""
720
721 #: ../../../src/MenuActionBar.cpp:476
722 #, c-format
723 msgid "Show All. Temporarily hide all loot tooltips with '%s'."
724 msgstr ""
725
726 #: ../../../src/MenuActionBar.cpp:478
727 #, c-format
728 msgid "Hide All. Temporarily show all loot tooltips with '%s'."
729 msgstr ""
730
731 #: ../../../src/MenuActionBar.cpp:482
732 msgid "Visible"
733 msgstr ""
734
735 #: ../../../src/MenuActionBar.cpp:484
736 msgid "Visible (2x zoom)"
737 msgstr ""
738
739 #: ../../../src/MenuActionBar.cpp:486
740 msgid "Hidden"
741 msgstr ""
742
743 #: ../../../src/MenuActionBar.cpp:490 ../../../src/MenuActionBar.cpp:496
744 msgid "Enabled"
745 msgstr ""
746
747 #: ../../../src/MenuActionBar.cpp:492 ../../../src/MenuActionBar.cpp:498
748 msgid "Disabled"
749 msgstr ""
750
751 #: ../../../src/MenuActionBar.cpp:657
752 msgid "Not enough MP."
753 msgstr ""
754
755 #: ../../../src/MenuActiveEffects.cpp:124
756 #, c-format
757 msgid "x%d"
758 msgstr "x%d"
759
760 #: ../../../src/MenuActiveEffects.cpp:219
761 msgid "Remaining:"
762 msgstr "Осталось:"
763
764 #: ../../../src/MenuActiveEffects.cpp:225
765 #, c-format
766 msgid "x%d stacks"
767 msgstr ""
768
769 #: ../../../src/MenuCharacter.cpp:73 ../../../src/MenuCharacter.cpp:78
770 msgid "Name"
771 msgstr "Имя"
772
773 #: ../../../src/MenuCharacter.cpp:74 ../../../src/MenuCharacter.cpp:79
774 msgid "Level"
775 msgstr "Уровень"
776
777 #: ../../../src/MenuCharacter.cpp:310
778 #, c-format
779 msgid "%d unspent stat point"
780 msgstr ""
781
782 #: ../../../src/MenuCharacter.cpp:313
783 #, c-format
784 msgid "%d unspent stat points"
785 msgstr ""
786
787 #: ../../../src/MenuCharacter.cpp:355
788 #, c-format
789 msgid "Reduces the damage taken from \"%s\" elemental attacks."
790 msgstr ""
791
792 #: ../../../src/MenuCharacter.cpp:365 ../../../src/MenuManager.cpp:283
793 #, c-format
794 msgid "XP: %d"
795 msgstr "Опыт: %d"
796
797 #: ../../../src/MenuCharacter.cpp:367
798 #, c-format
799 msgid "Next: %d"
800 msgstr "Следующий: %d"
801
802 #: ../../../src/MenuCharacter.cpp:373
803 #, c-format
804 msgid "base (%d), bonus (%d)"
805 msgstr "базовое (%d), бонус (%d)"
806
807 #: ../../../src/MenuCharacter.cpp:381 ../../../src/MenuCharacter.cpp:395
808 msgid "Related stats:"
809 msgstr "Связанные атрибуты:"
810
811 #: ../../../src/MenuCharacter.cpp:421 ../../../src/MenuCharacter.cpp:445
812 #, c-format
813 msgid "Each level grants %d."
814 msgstr ""
815
816 #: ../../../src/MenuCharacter.cpp:425 ../../../src/MenuCharacter.cpp:449
817 #, c-format
818 msgid "Each point of %s grants %d."
819 msgstr ""
820
821 #: ../../../src/MenuDevConsole.cpp:63
922 #: ../../../src/MenuConfig.cpp:515
923 msgid ""
924 "Enables the below setting that controls the screen gamma level. The behavior"
925 " of the gamma setting can vary between platforms."
926 msgstr ""
927
928 #: ../../../src/MenuConfig.cpp:516
929 msgid ""
930 "Provides additional text for information that is primarily conveyed through "
931 "color."
932 msgstr "Предоставлять дополнительный текст для информации связанной с цветом."
933
934 #: ../../../src/MenuConfig.cpp:517
935 msgid ""
936 "Some mods will automatically hide the stat bars when they are inactive. "
937 "Disabling this option will keep them displayed at all times."
938 msgstr ""
939 "Некоторые моды автоматически скрывают панель опыта/маны/жизни. Отключив эту "
940 "опцию панели будут отображаться постоянно."
941
942 #: ../../../src/MenuConfig.cpp:518
943 msgid ""
944 "When enabled, empty equipment slots will be filled with applicable items "
945 "when they are obtained."
946 msgstr ""
947 "Если включено, то пустые слоты предметов сразу будут заполняться подходящими"
948 " предметами."
949
950 #: ../../../src/MenuConfig.cpp:519
951 msgid ""
952 "Shows a marker above enemies, allies, and the player when they are obscured "
953 "by tall objects."
954 msgstr ""
955 "Показывать метку над врагами и игроком, когда они скрыты высокими объектами."
956
957 #: ../../../src/MenuConfig.cpp:520
958 msgid ""
959 "When enabled, tooltips for equipped items of the same type are shown next to"
960 " standard item tooltips."
961 msgstr ""
962
963 #: ../../../src/MenuConfig.cpp:521
964 msgid ""
965 "This allows the game to be controlled entirely with the keyboard (or "
966 "joystick)."
967 msgstr ""
968
969 #: ../../../src/MenuConfig.cpp:522
970 msgid ""
971 "When 'Move hero using mouse' is enabled, this setting controls if 'Main1' or"
972 " 'Main2' is used to move the hero. If enabled, 'Main2' will move the hero "
973 "instead of 'Main1'."
974 msgstr ""
975
976 #: ../../../src/MenuConfig.cpp:523
977 msgid ""
978 "When 'Move hero using mouse' is enabled, this setting controls if the Power "
979 "assigned to the movement button can be used by targeting an enemy. If this "
980 "setting is disabled, it is required to use 'Shift' to access the Power "
981 "assigned to the movement button."
982 msgstr ""
983
984 #: ../../../src/MenuConfig.cpp:524
985 msgid ""
986 "The player's attacks will be aimed in the direction of the mouse cursor when"
987 " this is enabled."
988 msgstr ""
989
990 #: ../../../src/MenuConfig.cpp:575
991 msgid "Active Mods"
992 msgstr "Активные Моды"
993
994 #: ../../../src/MenuConfig.cpp:584
995 msgid "Available Mods"
996 msgstr "Доступные Моды"
997
998 #: ../../../src/MenuConfig.cpp:603
999 msgid "<< Disable"
1000 msgstr "<< Отключить"
1001
1002 #: ../../../src/MenuConfig.cpp:609
1003 msgid "Enable >>"
1004 msgstr "Включить >>"
1005
1006 #: ../../../src/MenuConfig.cpp:1444
1007 msgid "Version:"
1008 msgstr "Версия:"
1009
1010 #: ../../../src/MenuConfig.cpp:1449
1011 msgid "Game:"
1012 msgstr "Игра:"
1013
1014 #: ../../../src/MenuConfig.cpp:1454
1015 msgid "Engine version:"
1016 msgstr "Версия движка:"
1017
1018 #: ../../../src/MenuConfig.cpp:1462
1019 msgid "Requires mods:"
1020 msgstr "Требуются моды:"
1021
1022 #: ../../../src/MenuConfig.cpp:1570 ../../../src/SDLInputState.cpp:748
1023 msgid "(none)"
1024 msgstr "(нет)"
1025
1026 #: ../../../src/MenuConfig.cpp:1587 ../../../src/MenuGameOver.cpp:73
1027 msgid "Save & Exit"
1028 msgstr "Сохранить и выйти"
1029
1030 #: ../../../src/MenuDevConsole.cpp:65
8221031 msgid "Execute"
8231032 msgstr "Выполнить"
8241033
825 #: ../../../src/MenuDevConsole.cpp:101 ../../../src/MenuDevConsole.cpp:151
1034 #: ../../../src/MenuDevConsole.cpp:103 ../../../src/MenuDevConsole.cpp:153
8261035 msgid "Developer Console"
827 msgstr "Консоль Девелопера"
828
829 #: ../../../src/MenuDevConsole.cpp:141
1036 msgstr "Консоль Разработчика"
1037
1038 #: ../../../src/MenuDevConsole.cpp:143
8301039 #, c-format
8311040 msgid "Use '%s' to inspect with the cursor."
832 msgstr ""
833
834 #: ../../../src/MenuDevConsole.cpp:146
1041 msgstr "Используй '%s' чтобы исследовать с помощью курсора."
1042
1043 #: ../../../src/MenuDevConsole.cpp:148
8351044 msgid "Arguments with spaces should be enclosed with double quotes. Example:"
8361045 msgstr ""
8371046 "Аргументы с пробелами должны быть заключены в двойные кавычки. Пример:"
8381047
839 #: ../../../src/MenuDevConsole.cpp:147
1048 #: ../../../src/MenuDevConsole.cpp:149
8401049 msgid "Type 'help' to get a list of commands."
841 msgstr ""
842
843 #: ../../../src/MenuDevConsole.cpp:209 ../../../src/MenuDevConsole.cpp:213
1050 msgstr "Введи 'help' чтобы увидеть список команд."
1051
1052 #: ../../../src/MenuDevConsole.cpp:211 ../../../src/MenuDevConsole.cpp:215
8441053 msgid "px"
845 msgstr ""
846
847 #: ../../../src/MenuDevConsole.cpp:224
1054 msgstr "px"
1055
1056 #: ../../../src/MenuDevConsole.cpp:226
8481057 msgid "Distance"
849 msgstr ""
850
851 #: ../../../src/MenuDevConsole.cpp:239 ../../../src/MenuDevConsole.cpp:286
1058 msgstr "Дистанция"
1059
1060 #: ../../../src/MenuDevConsole.cpp:241 ../../../src/MenuDevConsole.cpp:289
1061 #: ../../../src/MenuDevConsole.cpp:303
8521062 msgid "Entity"
853 msgstr ""
854
855 #: ../../../src/MenuDevConsole.cpp:261 ../../../src/MenuDevConsole.cpp:268
1063 msgstr "Сущность"
1064
1065 #: ../../../src/MenuDevConsole.cpp:263 ../../../src/MenuDevConsole.cpp:270
8561066 msgid "none"
857 msgstr ""
858
859 #: ../../../src/MenuDevConsole.cpp:262 ../../../src/MenuDevConsole.cpp:264
1067 msgstr "отсутствует"
1068
1069 #: ../../../src/MenuDevConsole.cpp:264 ../../../src/MenuDevConsole.cpp:266
8601070 msgid "wall"
861 msgstr ""
862
863 #: ../../../src/MenuDevConsole.cpp:263 ../../../src/MenuDevConsole.cpp:265
1071 msgstr "стена"
1072
1073 #: ../../../src/MenuDevConsole.cpp:265 ../../../src/MenuDevConsole.cpp:267
8641074 msgid "short wall / pit"
865 msgstr ""
866
867 #: ../../../src/MenuDevConsole.cpp:266
1075 msgstr "короткая стена"
1076
1077 #: ../../../src/MenuDevConsole.cpp:268
8681078 msgid "entity"
869 msgstr ""
870
871 #: ../../../src/MenuDevConsole.cpp:267
1079 msgstr "частица"
1080
1081 #: ../../../src/MenuDevConsole.cpp:269
8721082 msgid "entity, ally"
8731083 msgstr ""
8741084
875 #: ../../../src/MenuDevConsole.cpp:274
1085 #: ../../../src/MenuDevConsole.cpp:276
8761086 msgid "Tile"
877 msgstr ""
878
879 #: ../../../src/MenuDevConsole.cpp:360
1087 msgstr "Плитка"
1088
1089 #: ../../../src/MenuDevConsole.cpp:377
8801090 msgid "adds a power to the action bar"
8811091 msgstr "добавляет силу в панель действий"
8821092
883 #: ../../../src/MenuDevConsole.cpp:361
1093 #: ../../../src/MenuDevConsole.cpp:378
8841094 msgid "turns on/off the display of the FPS counter"
885 msgstr ""
886
887 #: ../../../src/MenuDevConsole.cpp:362
1095 msgstr "включает/выключает счетчик FPS"
1096
1097 #: ../../../src/MenuDevConsole.cpp:379
8881098 msgid "turns on/off all of the HUD elements"
8891099 msgstr "переключает отображение элементов интерфейса"
8901100
891 #: ../../../src/MenuDevConsole.cpp:363
1101 #: ../../../src/MenuDevConsole.cpp:380
8921102 msgid "turns on/off the developer hud"
8931103 msgstr "переключает интерфейс разработчика"
8941104
895 #: ../../../src/MenuDevConsole.cpp:364
1105 #: ../../../src/MenuDevConsole.cpp:381
8961106 msgid ""
8971107 "Prints a list of powers that match a search term. No search term will list "
8981108 "all items"
8991109 msgstr ""
900
901 #: ../../../src/MenuDevConsole.cpp:365
1110 "Выводит найденные силы. Если ничего не указать, показывает все доступные "
1111 "силы"
1112
1113 #: ../../../src/MenuDevConsole.cpp:382
9021114 msgid "Prints out all the map filenames located in the \"maps/\" directory."
903 msgstr "Печатает все названия фаилов карт в каталоге «maps»"
904
905 #: ../../../src/MenuDevConsole.cpp:366
1115 msgstr "Печатает все названия файлов в каталоге \"maps/\"."
1116
1117 #: ../../../src/MenuDevConsole.cpp:383
9061118 msgid ""
9071119 "Prints out the active campaign statuses that match a search term. No search "
9081120 "term will list all active statuses"
9091121 msgstr ""
9101122 "Выводит найденные статусы активных кампаний. Если ничего не указать, "
911 "показывает все активные статусы."
912
913 #: ../../../src/MenuDevConsole.cpp:367
1123 "показывает все активные статусы"
1124
1125 #: ../../../src/MenuDevConsole.cpp:384
9141126 msgid ""
9151127 "Prints a list of items that match a search term. No search term will list "
9161128 "all items"
9171129 msgstr ""
9181130 "Выводит список найденных предметов. Если ничего не указать, показывает все "
919 "предметы."
920
921 #: ../../../src/MenuDevConsole.cpp:368
1131 "предметы"
1132
1133 #: ../../../src/MenuDevConsole.cpp:385
9221134 msgid ""
9231135 "parses a series of event components and executes them as a single event"
9241136 msgstr "анализирует набор компонентов событий и выполняет их как одно событие"
9251137
926 #: ../../../src/MenuDevConsole.cpp:369
1138 #: ../../../src/MenuDevConsole.cpp:386
9271139 msgid "clears the command history"
9281140 msgstr "очищает историю команд"
9291141
930 #: ../../../src/MenuDevConsole.cpp:370
1142 #: ../../../src/MenuDevConsole.cpp:387
9311143 msgid "displays this text"
9321144 msgstr "показывает этот текст"
9331145
934 #: ../../../src/MenuDevConsole.cpp:377
1146 #: ../../../src/MenuDevConsole.cpp:394
9351147 msgid "Toggled the developer hud"
9361148 msgstr "Переключён интерфейс разработчика"
9371149
938 #: ../../../src/MenuDevConsole.cpp:381
1150 #: ../../../src/MenuDevConsole.cpp:398
9391151 msgid "Toggled the hud"
9401152 msgstr "Переключён интерфейс"
9411153
942 #: ../../../src/MenuDevConsole.cpp:385
1154 #: ../../../src/MenuDevConsole.cpp:402
9431155 msgid "Toggled the FPS counter"
944 msgstr ""
945
946 #: ../../../src/MenuDevConsole.cpp:534
1156 msgstr "Переключён счетчик FPS"
1157
1158 #: ../../../src/MenuDevConsole.cpp:552
9471159 msgid "ERROR: Incorrect number of arguments"
948 msgstr ""
949
950 #: ../../../src/MenuDevConsole.cpp:536 ../../../src/MenuDevConsole.cpp:564
1160 msgstr "ОШИБКА: Неправильное количество аргументов"
1161
1162 #: ../../../src/MenuDevConsole.cpp:554 ../../../src/MenuDevConsole.cpp:582
9511163 msgid "HINT:"
952 msgstr ""
953
954 #: ../../../src/MenuDevConsole.cpp:536
1164 msgstr "ПОДСКАЗКА:"
1165
1166 #: ../../../src/MenuDevConsole.cpp:554
9551167 msgid "<id>"
9561168 msgstr "<id>"
9571169
958 #: ../../../src/MenuDevConsole.cpp:552
1170 #: ../../../src/MenuDevConsole.cpp:570
9591171 #, c-format
9601172 msgid "ERROR: '%s' is not a valid event key"
9611173 msgstr "ОШИБКА: «%s» — недопустимый ключ события"
9621174
963 #: ../../../src/MenuDevConsole.cpp:562
1175 #: ../../../src/MenuDevConsole.cpp:580
9641176 msgid "ERROR: Too few arguments"
9651177 msgstr "ОШИБКА: недостаточно аргументов"
9661178
967 #: ../../../src/MenuDevConsole.cpp:564
1179 #: ../../../src/MenuDevConsole.cpp:582
9681180 msgid "<key>=<val> <key>=<val> ..."
9691181 msgstr ""
9701182
971 #: ../../../src/MenuDevConsole.cpp:569
1183 #: ../../../src/MenuDevConsole.cpp:587
9721184 msgid "ERROR: Unknown command"
9731185 msgstr "ОШИБКА: неизвестная команда"
9741186
975 #: ../../../src/MenuDevConsole.cpp:571
1187 #: ../../../src/MenuDevConsole.cpp:589
9761188 msgid "HINT: Type help"
9771189 msgstr "ПОДСКАЗКА: наберите help"
9781190
979 #: ../../../src/MenuEnemy.cpp:138
1191 #: ../../../src/MenuEnemy.cpp:162
9801192 #, c-format
9811193 msgid "%s level %d"
9821194 msgstr "%s уровень %d"
9831195
984 #: ../../../src/MenuEnemy.cpp:162
1196 #: ../../../src/MenuEnemy.cpp:186
9851197 msgid "Dead"
9861198 msgstr "Мёртв"
9871199
988 #: ../../../src/MenuEnemy.cpp:164
1200 #: ../../../src/MenuEnemy.cpp:188
9891201 msgid "Destroyed"
990 msgstr ""
991
992 #: ../../../src/MenuExit.cpp:85 ../../../src/MenuExit.cpp:139
993 msgid "Paused"
994 msgstr "Пауза"
995
996 #: ../../../src/MenuExit.cpp:91
997 msgid "Save & Exit"
998 msgstr "Сохранить и выйти"
999
1000 #: ../../../src/MenuExit.cpp:92
1001 msgid "Exit"
1002 msgstr "Выйти"
1003
1004 #: ../../../src/MenuExit.cpp:96
1005 msgid "Continue"
1006 msgstr "Продолжить"
1007
1008 #: ../../../src/MenuInventory.cpp:73
1009 msgid "Automatically equip items"
1010 msgstr "Сразу надевать предметы"
1011
1012 #: ../../../src/MenuInventory.cpp:188
1202 msgstr "Уничтожен"
1203
1204 #: ../../../src/MenuGameOver.cpp:69
1205 msgid "Game Over"
1206 msgstr ""
1207
1208 #: ../../../src/MenuInventory.cpp:178
10131209 #, c-format
10141210 msgid "Lost %d%% of %s."
1015 msgstr ""
1016
1017 #: ../../../src/MenuInventory.cpp:195
1211 msgstr "Потеряно %d%% из %s."
1212
1213 #: ../../../src/MenuInventory.cpp:185
10181214 #, c-format
10191215 msgid "Lost %d%% of total XP."
1020 msgstr ""
1021
1022 #: ../../../src/MenuInventory.cpp:200
1216 msgstr "Потеряно %d%% от общего XP."
1217
1218 #: ../../../src/MenuInventory.cpp:190
10231219 #, c-format
10241220 msgid "Lost %d%% of current level XP."
1025 msgstr ""
1026
1027 #: ../../../src/MenuInventory.cpp:226
1221 msgstr "Потеряно %d%% от актуального числа ХР."
1222
1223 #: ../../../src/MenuInventory.cpp:216
10281224 #, c-format
10291225 msgid "Lost %s."
10301226 msgstr "Потеряно %s."
10311227
1032 #: ../../../src/MenuInventory.cpp:274 ../../../src/MenuStash.cpp:146
1228 #: ../../../src/MenuInventory.cpp:258 ../../../src/MenuStash.cpp:276
10331229 #, c-format
10341230 msgid "%d %s"
10351231 msgstr "%d %s"
10361232
1037 #: ../../../src/MenuInventory.cpp:317
1233 #: ../../../src/MenuInventory.cpp:301
10381234 msgid "Pick up item(s):"
10391235 msgstr "Подобраны предметы:"
10401236
1041 #: ../../../src/MenuInventory.cpp:318
1237 #: ../../../src/MenuInventory.cpp:302
10421238 msgid "Use or equip item:"
10431239 msgstr "Использовать или надеть предмет:"
10441240
1045 #: ../../../src/MenuInventory.cpp:319
1241 #: ../../../src/MenuInventory.cpp:303
10461242 #, c-format
10471243 msgid "%s modifiers"
10481244 msgstr "%s модификаторов"
10491245
1050 #: ../../../src/MenuInventory.cpp:320
1246 #: ../../../src/MenuInventory.cpp:304
10511247 msgid "Select a quantity of item:"
10521248 msgstr "Выберите количество предметов:"
10531249
1054 #: ../../../src/MenuInventory.cpp:323
1250 #: ../../../src/MenuInventory.cpp:307
10551251 msgid "Stash item stack:"
10561252 msgstr "Спрятать набор предметов в тайник:"
10571253
1058 #: ../../../src/MenuInventory.cpp:325
1254 #: ../../../src/MenuInventory.cpp:309
10591255 msgid "Sell item stack:"
10601256 msgstr "Продать набор предметов:"
10611257
1062 #: ../../../src/MenuInventory.cpp:592
1258 #: ../../../src/MenuInventory.cpp:576
10631259 msgid "You don't have enough of the required item."
10641260 msgstr "Недостаточно требуемых предметов."
10651261
1066 #: ../../../src/MenuInventory.cpp:599
1262 #: ../../../src/MenuInventory.cpp:588
10671263 msgid "You can't use this item right now."
1068 msgstr ""
1069
1070 #: ../../../src/MenuInventory.cpp:611
1264 msgstr "Вы не можете использовать этот предмет сейчас."
1265
1266 #: ../../../src/MenuInventory.cpp:600
10711267 msgid "This item can only be used from the action bar."
10721268 msgstr "Этот предмет можно использовать только с панели действия."
10731269
1074 #: ../../../src/MenuInventory.cpp:729
1270 #: ../../../src/MenuInventory.cpp:718
10751271 msgid "Inventory is full."
10761272 msgstr "Инвентарь полон."
10771273
1078 #: ../../../src/MenuInventory.cpp:849
1274 #: ../../../src/MenuInventory.cpp:843
10791275 #, c-format
10801276 msgid "Not enough %s."
10811277 msgstr "Недостаточно %s."
10821278
1083 #: ../../../src/MenuInventory.cpp:869 ../../../src/MenuInventory.cpp:876
1279 #: ../../../src/MenuInventory.cpp:863 ../../../src/MenuInventory.cpp:870
10841280 msgid "This item can not be sold."
10851281 msgstr "Этот предмет нельзя продать."
10861282
10921288 msgid "Quests"
10931289 msgstr "Задания"
10941290
1095 #: ../../../src/MenuManager.cpp:286
1291 #: ../../../src/MenuManager.cpp:305
10961292 #, c-format
10971293 msgid "XP: %d/%d"
10981294 msgstr "Опыт: %d/%d"
10991295
1100 #: ../../../src/MenuManager.cpp:827
1296 #: ../../../src/MenuManager.cpp:875
11011297 msgid "This item can not be dropped."
11021298 msgstr "Этот предмет нельзя выбросить."
1299
1300 #: ../../../src/MenuManager.cpp:1501
1301 msgid "Equipped"
1302 msgstr ""
1303
1304 #: ../../../src/MenuMovementType.cpp:87
1305 msgid "Select a Movement Type"
1306 msgstr ""
1307
1308 #: ../../../src/MenuMovementType.cpp:89
1309 msgid "Can be changed later in the Configuration menu."
1310 msgstr ""
1311
1312 #: ../../../src/MenuMovementType.cpp:92 ../../../src/MenuMovementType.cpp:122
1313 msgid "Keyboard"
1314 msgstr ""
1315
1316 #: ../../../src/MenuMovementType.cpp:93 ../../../src/MenuMovementType.cpp:128
1317 msgid "Mouse"
1318 msgstr ""
1319
1320 #: ../../../src/MenuMovementType.cpp:129
1321 msgid "Button"
1322 msgstr ""
11031323
11041324 #: ../../../src/MenuNumPicker.cpp:59
11051325 msgid "Enter amount:"
11061326 msgstr "Введите количество:"
11071327
1108 #: ../../../src/MenuPowers.cpp:787
1328 #: ../../../src/MenuPowers.cpp:872
11091329 msgid "Passive"
11101330 msgstr "Пасивные"
11111331
1112 #: ../../../src/MenuPowers.cpp:792
1332 #: ../../../src/MenuPowers.cpp:879
11131333 #, c-format
11141334 msgid "Costs %d MP"
11151335 msgstr "Стоит %d Маны"
11161336
1117 #: ../../../src/MenuPowers.cpp:796
1337 #: ../../../src/MenuPowers.cpp:883
11181338 #, c-format
11191339 msgid "Costs %d HP"
11201340 msgstr "Стоит %d Жизни"
11211341
1122 #: ../../../src/MenuPowers.cpp:801
1342 #: ../../../src/MenuPowers.cpp:887
11231343 msgid "Cooldown:"
11241344 msgstr "Восстановление:"
11251345
1126 #: ../../../src/MenuPowers.cpp:866 ../../../src/MenuPowers.cpp:869
1346 #: ../../../src/MenuPowers.cpp:938 ../../../src/MenuPowers.cpp:941
11271347 msgid "Damage per second"
11281348 msgstr "Урона в секунду"
11291349
1130 #: ../../../src/MenuPowers.cpp:872 ../../../src/MenuPowers.cpp:875
1350 #: ../../../src/MenuPowers.cpp:944 ../../../src/MenuPowers.cpp:947
11311351 msgid "HP per second"
11321352 msgstr "Жизни в секунду"
11331353
1134 #: ../../../src/MenuPowers.cpp:878 ../../../src/MenuPowers.cpp:881
1354 #: ../../../src/MenuPowers.cpp:950 ../../../src/MenuPowers.cpp:953
11351355 msgid "MP per second"
11361356 msgstr "Маны в секунду"
11371357
1138 #: ../../../src/MenuPowers.cpp:885
1358 #: ../../../src/MenuPowers.cpp:957
11391359 msgid "Immobilize"
11401360 msgstr "Зафиксировать"
11411361
1142 #: ../../../src/MenuPowers.cpp:893
1362 #: ../../../src/MenuPowers.cpp:965
11431363 msgid "Immunity"
11441364 msgstr "Устойчивость"
11451365
1146 #: ../../../src/MenuPowers.cpp:896
1366 #: ../../../src/MenuPowers.cpp:968
11471367 msgid "Immunity to damage over time"
11481368 msgstr "Устойчивость к урону в течение долгого времени"
11491369
1150 #: ../../../src/MenuPowers.cpp:899
1370 #: ../../../src/MenuPowers.cpp:971
11511371 msgid "Immunity to slow"
11521372 msgstr "Устойчивость к снегу"
11531373
1154 #: ../../../src/MenuPowers.cpp:902
1374 #: ../../../src/MenuPowers.cpp:974
11551375 msgid "Immunity to stun"
11561376 msgstr "Устойчивость к оглушению"
11571377
1158 #: ../../../src/MenuPowers.cpp:905
1378 #: ../../../src/MenuPowers.cpp:977
11591379 msgid "Immunity to HP steal"
11601380 msgstr "Устойчивость к краже жизни"
11611381
1162 #: ../../../src/MenuPowers.cpp:908
1382 #: ../../../src/MenuPowers.cpp:980
11631383 msgid "Immunity to MP steal"
11641384 msgstr "Устойчивость к краже маны"
11651385
1166 #: ../../../src/MenuPowers.cpp:911
1386 #: ../../../src/MenuPowers.cpp:983
11671387 msgid "Immunity to knockback"
11681388 msgstr "Устойчивость к сбиванию с ног"
11691389
1170 #: ../../../src/MenuPowers.cpp:914
1390 #: ../../../src/MenuPowers.cpp:986
11711391 msgid "Immunity to damage reflection"
11721392 msgstr "Устойчивость к отражению урона"
11731393
1174 #: ../../../src/MenuPowers.cpp:917
1394 #: ../../../src/MenuPowers.cpp:992
11751395 msgid "Stun"
11761396 msgstr "Оглушение"
11771397
1178 #: ../../../src/MenuPowers.cpp:920
1398 #: ../../../src/MenuPowers.cpp:995
11791399 msgid "Automatic revive on death"
11801400 msgstr "Автоматически возрождаться после смерти"
11811401
1182 #: ../../../src/MenuPowers.cpp:923
1402 #: ../../../src/MenuPowers.cpp:998
11831403 msgid "Convert"
11841404 msgstr "Преобразовать"
11851405
1186 #: ../../../src/MenuPowers.cpp:926
1406 #: ../../../src/MenuPowers.cpp:1001
11871407 msgid "Fear"
11881408 msgstr "Страх"
11891409
1190 #: ../../../src/MenuPowers.cpp:929
1410 #: ../../../src/MenuPowers.cpp:1004
11911411 msgid "Lifespan"
11921412 msgstr "Продолжительность жизни"
11931413
1194 #: ../../../src/MenuPowers.cpp:953
1414 #: ../../../src/MenuPowers.cpp:1028
11951415 msgid "Magical Shield"
11961416 msgstr "Магический Щит"
11971417
1198 #: ../../../src/MenuPowers.cpp:982
1418 #: ../../../src/MenuPowers.cpp:1057
11991419 msgid "Healing"
12001420 msgstr "Лечение"
12011421
1202 #: ../../../src/MenuPowers.cpp:985
1422 #: ../../../src/MenuPowers.cpp:1060
12031423 msgid "Knockback"
12041424 msgstr "Сбивание с ног"
12051425
1206 #: ../../../src/MenuPowers.cpp:1010
1426 #: ../../../src/MenuPowers.cpp:1084
12071427 #, c-format
12081428 msgid "%d%% chance"
12091429 msgstr "%d%% шанс"
12101430
1211 #: ../../../src/MenuPowers.cpp:1062
1431 #: ../../../src/MenuPowers.cpp:1136
12121432 msgid "Base Accuracy"
12131433 msgstr "Базовая Меткость"
12141434
1215 #: ../../../src/MenuPowers.cpp:1082
1435 #: ../../../src/MenuPowers.cpp:1156
12161436 msgid "Base Critical Chance"
12171437 msgstr "Базовый шанс критического урона"
12181438
1219 #: ../../../src/MenuPowers.cpp:1090
1439 #: ../../../src/MenuPowers.cpp:1164
12201440 msgid "Ignores Absorbtion"
12211441 msgstr "Игнорирует Поглощение"
12221442
1223 #: ../../../src/MenuPowers.cpp:1095
1443 #: ../../../src/MenuPowers.cpp:1169
12241444 msgid "Ignores Avoidance"
12251445 msgstr "Игнорирует Уклонение"
12261446
1227 #: ../../../src/MenuPowers.cpp:1100
1447 #: ../../../src/MenuPowers.cpp:1174
12281448 #, c-format
12291449 msgid "%d%% Chance to crit slowed targets"
12301450 msgstr "%d%% Шанс критического урона по замедленным целям"
12311451
1232 #: ../../../src/MenuPowers.cpp:1105
1452 #: ../../../src/MenuPowers.cpp:1179
12331453 #, c-format
12341454 msgid "Elemental Damage (%s)"
1235 msgstr ""
1236
1237 #: ../../../src/MenuPowers.cpp:1114
1455 msgstr "Элементальный урон (%s)"
1456
1457 #: ../../../src/MenuPowers.cpp:1188
12381458 #, c-format
12391459 msgid "Requires a %s"
12401460 msgstr "Требуется %s"
12411461
1242 #: ../../../src/MenuPowers.cpp:1151 ../../../src/MenuPowers.cpp:1154
1462 #: ../../../src/MenuPowers.cpp:1226 ../../../src/MenuPowers.cpp:1229
12431463 #, c-format
12441464 msgid "Requires Power: %s"
12451465 msgstr "Требуется Сила: %s"
12461466
1247 #: ../../../src/MenuPowers.cpp:1163
1467 #: ../../../src/MenuPowers.cpp:1238
12481468 msgid "Click to Unlock (uses 1 Skill Point)"
12491469 msgstr "Щёлкните, чтобы разблокировать (за 1 очко навыка)"
12501470
1251 #: ../../../src/MenuPowers.cpp:1167 ../../../src/MenuPowers.cpp:1169
1471 #: ../../../src/MenuPowers.cpp:1242 ../../../src/MenuPowers.cpp:1244
12521472 msgid "Requires 1 Skill Point"
12531473 msgstr "Требуется 1 Очко Навыка"
12541474
1255 #: ../../../src/MenuPowers.cpp:1355
1256 #, c-format
1257 msgid "%d unspent skill point"
1258 msgstr ""
1259
1260 #: ../../../src/MenuPowers.cpp:1358
1261 #, c-format
1262 msgid "%d unspent skill points"
1263 msgstr ""
1264
1265 #: ../../../src/MenuPowers.cpp:1388
1475 #: ../../../src/MenuPowers.cpp:1444
1476 #, c-format
1477 msgid "Available skill points: %d"
1478 msgstr ""
1479
1480 #: ../../../src/MenuPowers.cpp:1476
12661481 msgid "Next Level:"
12671482 msgstr "Следующий уровень:"
12681483
1269 #: ../../../src/MenuStash.cpp:96
1270 msgid "Shared Stash"
1271 msgstr "Общие Запасы"
1272
1273 #: ../../../src/MenuStash.cpp:209
1274 msgid "Can not store quest items in the stash."
1275 msgstr "Предметы заданий нельзя хранить в тайнике."
1276
1277 #: ../../../src/MenuStash.cpp:219
1484 #: ../../../src/MenuStash.cpp:80 ../../../src/MenuStash.cpp:161
1485 msgid "Stash"
1486 msgstr ""
1487
1488 #: ../../../src/MenuStash.cpp:174 ../../../src/MenuStash.cpp:188
1489 msgid "Private"
1490 msgstr ""
1491
1492 #: ../../../src/MenuStash.cpp:175
1493 msgid "Shared"
1494 msgstr ""
1495
1496 #: ../../../src/MenuStash.cpp:340
1497 msgid "This item can not be stored in the stash."
1498 msgstr ""
1499
1500 #: ../../../src/MenuStash.cpp:345
1501 msgid "This item can not be stored in the private stash."
1502 msgstr ""
1503
1504 #: ../../../src/MenuStash.cpp:350
1505 msgid "This item can not be stored in the shared stash."
1506 msgstr ""
1507
1508 #: ../../../src/MenuStash.cpp:360
12781509 msgid "Stash is full."
12791510 msgstr "Тайник заполнен."
12801511
1281 #: ../../../src/MenuTalker.cpp:454
1512 #: ../../../src/MenuStash.cpp:414
1513 #, c-format
1514 msgid "Can not store item in stash: %s"
1515 msgstr ""
1516
1517 #: ../../../src/MenuTalker.cpp:448
1518 #, c-format
1519 msgid "<dialog node %d>"
1520 msgstr ""
1521
1522 #: ../../../src/MenuTalker.cpp:456
12821523 msgid "Trade"
12831524 msgstr "Торговать"
12841525
1285 #: ../../../src/MenuVendor.cpp:58
1526 #: ../../../src/MenuVendor.cpp:60
12861527 msgid "Buyback"
12871528 msgstr "Выкуп"
12881529
1289 #: ../../../src/MenuVendor.cpp:279
1530 #: ../../../src/MenuVendor.cpp:283
12901531 msgid "Vendor"
12911532 msgstr "Торговец"
12921533
1293 #: ../../../src/PowerManager.cpp:1136
1534 #: ../../../src/PowerManager.cpp:1208
12941535 #, c-format
12951536 msgid "+%d Shield"
12961537 msgstr "+%d Щит"
12971538
1298 #: ../../../src/PowerManager.cpp:1392
1539 #: ../../../src/PowerManager.cpp:1465
12991540 msgid "You are already transformed, untransform first."
13001541 msgstr "Вы уже трансформированы, сперва растрансформируйтесь."
13011542
1302 #: ../../../src/PowerManager.cpp:1404
1543 #: ../../../src/PowerManager.cpp:1477
13031544 msgid "Could not untransform at this position."
13041545 msgstr "Здесь нельзя растрансформироваться."
13051546
13061547 #: ../../../src/QuestLog.cpp:234
13071548 msgid "Completed Quests"
1308 msgstr ""
1309
1310 #: ../../../src/SaveLoad.cpp:243 ../../../src/SaveLoad.cpp:244
1549 msgstr "Выполненные Квесты"
1550
1551 #: ../../../src/SaveLoad.cpp:250 ../../../src/SaveLoad.cpp:251
13111552 msgid "Game saved."
13121553 msgstr "Игра сохранена."
13131554
1314 #: ../../../src/SDLInputState.cpp:582
1555 #: ../../../src/SDLInputState.cpp:643
1556 msgid "BkSp"
1557 msgstr ""
1558
1559 #: ../../../src/SDLInputState.cpp:644
1560 msgid "Caps"
1561 msgstr ""
1562
1563 #: ../../../src/SDLInputState.cpp:645
1564 msgid "Del"
1565 msgstr ""
1566
1567 #: ../../../src/SDLInputState.cpp:647 ../../../src/SDLInputState.cpp:677
1568 msgid "End"
1569 msgstr "End"
1570
1571 #: ../../../src/SDLInputState.cpp:648
1572 msgid "Esc"
1573 msgstr ""
1574
1575 #: ../../../src/SDLInputState.cpp:649 ../../../src/SDLInputState.cpp:679
1576 msgid "Home"
1577 msgstr "Home"
1578
1579 #: ../../../src/SDLInputState.cpp:650
1580 msgid "Ins"
1581 msgstr ""
1582
1583 #: ../../../src/SDLInputState.cpp:651
1584 msgid "LAlt"
1585 msgstr ""
1586
1587 #: ../../../src/SDLInputState.cpp:652
1588 msgid "LCtrl"
1589 msgstr ""
1590
1591 #: ../../../src/SDLInputState.cpp:654
1592 msgid "LShft"
1593 msgstr ""
1594
1595 #: ../../../src/SDLInputState.cpp:655
1596 msgid "Num"
1597 msgstr ""
1598
1599 #: ../../../src/SDLInputState.cpp:656
1600 msgid "PgDn"
1601 msgstr ""
1602
1603 #: ../../../src/SDLInputState.cpp:657
1604 msgid "PgUp"
1605 msgstr ""
1606
1607 #: ../../../src/SDLInputState.cpp:658 ../../../src/SDLInputState.cpp:688
1608 msgid "Pause"
1609 msgstr "Pause"
1610
1611 #: ../../../src/SDLInputState.cpp:659
1612 msgid "Print"
1613 msgstr ""
1614
1615 #: ../../../src/SDLInputState.cpp:660
1616 msgid "RAlt"
1617 msgstr ""
1618
1619 #: ../../../src/SDLInputState.cpp:661
1620 msgid "RCtrl"
1621 msgstr ""
1622
1623 #: ../../../src/SDLInputState.cpp:662
1624 msgid "Ret"
1625 msgstr ""
1626
1627 #: ../../../src/SDLInputState.cpp:664
1628 msgid "RShft"
1629 msgstr ""
1630
1631 #: ../../../src/SDLInputState.cpp:665
1632 msgid "SLock"
1633 msgstr ""
1634
1635 #: ../../../src/SDLInputState.cpp:666
1636 msgid "Spc"
1637 msgstr ""
1638
1639 #: ../../../src/SDLInputState.cpp:667 ../../../src/SDLInputState.cpp:697
1640 msgid "Tab"
1641 msgstr "Tab"
1642
1643 #: ../../../src/SDLInputState.cpp:673
13151644 msgid "Backspace"
1316 msgstr ""
1317
1318 #: ../../../src/SDLInputState.cpp:583
1645 msgstr "Backspace"
1646
1647 #: ../../../src/SDLInputState.cpp:674
13191648 msgid "CapsLock"
1320 msgstr ""
1321
1322 #: ../../../src/SDLInputState.cpp:586
1323 msgid "End"
1324 msgstr ""
1325
1326 #: ../../../src/SDLInputState.cpp:587
1649 msgstr "CapsLock"
1650
1651 #: ../../../src/SDLInputState.cpp:678
13271652 msgid "Escape"
1328 msgstr ""
1329
1330 #: ../../../src/SDLInputState.cpp:588
1331 msgid "Home"
1332 msgstr ""
1333
1334 #: ../../../src/SDLInputState.cpp:589
1653 msgstr "Escape"
1654
1655 #: ../../../src/SDLInputState.cpp:680
13351656 msgid "Insert"
1336 msgstr ""
1337
1338 #: ../../../src/SDLInputState.cpp:590
1657 msgstr "Insert"
1658
1659 #: ../../../src/SDLInputState.cpp:681
13391660 msgid "Left Alt"
1340 msgstr ""
1341
1342 #: ../../../src/SDLInputState.cpp:591
1661 msgstr "Left Alt"
1662
1663 #: ../../../src/SDLInputState.cpp:682
13431664 msgid "Left Ctrl"
1344 msgstr ""
1345
1346 #: ../../../src/SDLInputState.cpp:593
1665 msgstr "Left Ctrl"
1666
1667 #: ../../../src/SDLInputState.cpp:684
13471668 msgid "Left Shift"
1348 msgstr ""
1349
1350 #: ../../../src/SDLInputState.cpp:594
1669 msgstr "Left Shift"
1670
1671 #: ../../../src/SDLInputState.cpp:685
13511672 msgid "NumLock"
1352 msgstr ""
1353
1354 #: ../../../src/SDLInputState.cpp:595
1673 msgstr "NumLock"
1674
1675 #: ../../../src/SDLInputState.cpp:686
13551676 msgid "PageDown"
1356 msgstr ""
1357
1358 #: ../../../src/SDLInputState.cpp:596
1677 msgstr "PageDown"
1678
1679 #: ../../../src/SDLInputState.cpp:687
13591680 msgid "PageUp"
1360 msgstr ""
1361
1362 #: ../../../src/SDLInputState.cpp:597
1363 msgid "Pause"
1364 msgstr ""
1365
1366 #: ../../../src/SDLInputState.cpp:598
1681 msgstr "PageUp"
1682
1683 #: ../../../src/SDLInputState.cpp:689
13671684 msgid "PrintScreen"
1368 msgstr ""
1369
1370 #: ../../../src/SDLInputState.cpp:599
1685 msgstr "PrintScreen"
1686
1687 #: ../../../src/SDLInputState.cpp:690
13711688 msgid "Right Alt"
1372 msgstr ""
1373
1374 #: ../../../src/SDLInputState.cpp:600
1689 msgstr "Right Alt"
1690
1691 #: ../../../src/SDLInputState.cpp:691
13751692 msgid "Right Ctrl"
1376 msgstr ""
1377
1378 #: ../../../src/SDLInputState.cpp:601
1693 msgstr "Right Ctrl"
1694
1695 #: ../../../src/SDLInputState.cpp:692
13791696 msgid "Return"
1380 msgstr ""
1381
1382 #: ../../../src/SDLInputState.cpp:603
1697 msgstr "Return"
1698
1699 #: ../../../src/SDLInputState.cpp:694
13831700 msgid "Right Shift"
1384 msgstr ""
1385
1386 #: ../../../src/SDLInputState.cpp:604
1701 msgstr "Right Shift"
1702
1703 #: ../../../src/SDLInputState.cpp:695
13871704 msgid "ScrollLock"
1388 msgstr ""
1389
1390 #: ../../../src/SDLInputState.cpp:605
1705 msgstr "ScrollLock"
1706
1707 #: ../../../src/SDLInputState.cpp:696
13911708 msgid "Space"
1392 msgstr ""
1393
1394 #: ../../../src/SDLInputState.cpp:606
1395 msgid "Tab"
1396 msgstr ""
1397
1398 #: ../../../src/SDLInputState.cpp:620
1709 msgstr "Пробел"
1710
1711 #: ../../../src/SDLInputState.cpp:710
1712 #, c-format
1713 msgid "M%d"
1714 msgstr ""
1715
1716 #: ../../../src/SDLInputState.cpp:716
13991717 #, c-format
14001718 msgid "Mouse %d"
14011719 msgstr "Мышь %d"
14021720
1403 #: ../../../src/SDLInputState.cpp:628
1721 #: ../../../src/SDLInputState.cpp:726
1722 #, c-format
1723 msgid "JX%d-"
1724 msgstr ""
1725
1726 #: ../../../src/SDLInputState.cpp:728
14041727 #, c-format
14051728 msgid "Axis %d -"
14061729 msgstr "Ось %d -"
14071730
1408 #: ../../../src/SDLInputState.cpp:630
1731 #: ../../../src/SDLInputState.cpp:732
1732 #, c-format
1733 msgid "JX%d+"
1734 msgstr ""
1735
1736 #: ../../../src/SDLInputState.cpp:734
14091737 #, c-format
14101738 msgid "Axis %d +"
14111739 msgstr "Ось %d +"
14121740
1413 #: ../../../src/SDLInputState.cpp:633
1741 #: ../../../src/SDLInputState.cpp:739
1742 #, c-format
1743 msgid "JB%d"
1744 msgstr ""
1745
1746 #: ../../../src/SDLInputState.cpp:741
14141747 #, c-format
14151748 msgid "Button %d"
14161749 msgstr "Кнопка %d"
14171750
1418 #: ../../../src/SDLInputState.cpp:637
1419 msgid "(none)"
1420 msgstr "(нет)"
1421
1422 #: ../../../src/SDLInputState.cpp:677
1751 #: ../../../src/SDLInputState.cpp:787
14231752 msgid "Touch control D-Pad"
1424 msgstr ""
1425
1426 #: ../../../src/SDLInputState.cpp:701
1753 msgstr "Сенсорное управление D-Pad"
1754
1755 #: ../../../src/SDLInputState.cpp:810
14271756 msgid "Touch control buttons"
1428 msgstr ""
1429
1430 #: ../../../src/SDLInputState.cpp:716
1757 msgstr "Сенсорные клавиши"
1758
1759 #: ../../../src/SDLInputState.cpp:824
14311760 msgid "Tap"
14321761 msgstr "Коснитесь"
14331762
1434 #: ../../../src/SDLInputState.cpp:760 ../../../src/SDLInputState.cpp:764
1435 #: ../../../src/SDLInputState.cpp:768
1763 #: ../../../src/SDLInputState.cpp:876 ../../../src/SDLInputState.cpp:878
1764 #, c-format
1765 msgid "Can not bind: %s"
1766 msgstr ""
1767
1768 #: ../../../src/SDLInputState.cpp:890 ../../../src/SDLInputState.cpp:894
1769 #: ../../../src/SDLInputState.cpp:898
14361770 #, c-format
14371771 msgid "'%s' is no longer bound to:"
1438 msgstr ""
1772 msgstr "'%s' больше не привязана/о к:"
14391773
14401774 #: ../../../src/Stats.cpp:38
14411775 msgid "Max HP"
14431777
14441778 #: ../../../src/Stats.cpp:39
14451779 msgid "Total amount of HP."
1446 msgstr ""
1780 msgstr "Общее количество НР."
14471781
14481782 #: ../../../src/Stats.cpp:43
14491783 msgid "HP Regen"
14591793
14601794 #: ../../../src/Stats.cpp:49
14611795 msgid "Total amount of MP."
1462 msgstr ""
1796 msgstr "Общее количество МР."
14631797
14641798 #: ../../../src/Stats.cpp:53
14651799 msgid "MP Regen"
14781812 "Accuracy rating. The enemy's Avoidance rating is subtracted from this value "
14791813 "to calculate your likeliness to land a direct hit."
14801814 msgstr ""
1815 "Шанс попадания. Шанс врага увернуться вычитается из этого значения, чтобы "
1816 "определить вероятность попадания."
14811817
14821818 #: ../../../src/Stats.cpp:63
14831819 msgid "Avoidance"
14881824 "Avoidance rating. This value is subtracted from the enemy's Accuracy rating "
14891825 "to calculate their likeliness to land a direct hit."
14901826 msgstr ""
1827 "Шанс увернуться. Это значение вычитается из шанса попадания врага, чтобы "
1828 "определить вероятность попадания врага."
14911829
14921830 #: ../../../src/Stats.cpp:68
14931831 msgid "Absorb Min"
14951833
14961834 #: ../../../src/Stats.cpp:69 ../../../src/Stats.cpp:74
14971835 msgid "Reduces the amount of damage taken."
1498 msgstr ""
1836 msgstr "Уменьшает получаемый урон."
14991837
15001838 #: ../../../src/Stats.cpp:73
15011839 msgid "Absorb Max"
15071845
15081846 #: ../../../src/Stats.cpp:79
15091847 msgid "Chance for an attack to do extra damage."
1510 msgstr ""
1848 msgstr "Шанс дополнительного урона при атаке."
15111849
15121850 #: ../../../src/Stats.cpp:83
15131851 msgid "Bonus XP"
15691907
15701908 #: ../../../src/Stats.cpp:118
15711909 msgid "HP Steal"
1572 msgstr ""
1910 msgstr "Кража ХР"
15731911
15741912 #: ../../../src/Stats.cpp:119
15751913 msgid "Percentage of HP stolen per hit."
15771915
15781916 #: ../../../src/Stats.cpp:123
15791917 msgid "MP Steal"
1580 msgstr ""
1918 msgstr "Кража МР"
15811919
15821920 #: ../../../src/Stats.cpp:124
15831921 msgid "Percentage of MP stolen per hit."
15911929 msgid "Base MP"
15921930 msgstr "Базовая Мана"
15931931
1594 #: ../../../src/Utils.cpp:346
1932 #: ../../../src/Utils.cpp:365
15951933 msgid "k"
15961934 msgstr "к"
15971935
1598 #: ../../../src/Utils.cpp:580
1936 #: ../../../src/Utils.cpp:635
15991937 #, c-format
16001938 msgid "%s second"
16011939 msgstr "%s секунда"
16021940
1603 #: ../../../src/Utils.cpp:583
1941 #: ../../../src/Utils.cpp:638
16041942 #, c-format
16051943 msgid "%s seconds"
16061944 msgstr "%s секунды"
44 #
55 # Translators:
66 # Justin Jacobs <jajdorkster@gmail.com>, 2018
7 # MiroslavR <miroslavr256@gmail.com>, 2019
78 #
89 #, fuzzy
910 msgid ""
1011 msgstr ""
1112 "Project-Id-Version: PACKAGE VERSION\n"
1213 "Report-Msgid-Bugs-To: \n"
13 "POT-Creation-Date: 2018-11-17 21:50-0500\n"
14 "POT-Creation-Date: 2021-05-23 20:34-0400\n"
1415 "PO-Revision-Date: 2018-03-28 19:16+0000\n"
15 "Last-Translator: Justin Jacobs <jajdorkster@gmail.com>, 2018\n"
16 "Last-Translator: MiroslavR <miroslavr256@gmail.com>, 2019\n"
1617 "Language-Team: Slovak (https://www.transifex.com/flareorg/teams/84925/sk/)\n"
1718 "MIME-Version: 1.0\n"
1819 "Content-Type: text/plain; charset=UTF-8\n"
2021 "Language: sk\n"
2122 "Plural-Forms: nplurals=4; plural=(n % 1 == 0 && n == 1 ? 0 : n % 1 == 0 && n >= 2 && n <= 4 ? 1 : n % 1 != 0 ? 2: 3);\n"
2223
23 #: ../../../src/Avatar.cpp:367
24 #: ../../../src/Avatar.cpp:391
25 msgid "Your health is low!"
26 msgstr "Vaše zdravie je nízke!"
27
28 #: ../../../src/Avatar.cpp:421
2429 #, c-format
2530 msgid "Congratulations, you have reached level %d!"
26 msgstr "Gratulujem, dosiahol si stupeň %d!"
27
28 #: ../../../src/Avatar.cpp:369
29 msgid "You may increase one attribute through the Character Menu."
30 msgstr "Teraz si môžeš zlepšiť jeden atribút cez Menu Postavy"
31
32 #: ../../../src/Avatar.cpp:583
33 msgid "You are defeated. Game over! ${INPUT_CONTINUE} to exit to Title."
34 msgstr ""
35
36 #: ../../../src/Avatar.cpp:589
37 msgid "You are defeated. ${INPUT_CONTINUE} to continue."
38 msgstr ""
39
40 #: ../../../src/Avatar.cpp:839
31 msgstr "Gratulujeme, dosiahli ste úroveň %d!"
32
33 #: ../../../src/Avatar.cpp:423
34 msgid "You may increase one or more attributes through the Character Menu."
35 msgstr "Cez ponuku Postava si môžete vylepšiť jeden alebo viacero atribútov."
36
37 #: ../../../src/Avatar.cpp:427
38 msgid "You may unlock one or more abilities through the Powers Menu."
39 msgstr "Cez ponuku Sily si môžete odomknúť jednu alebo viacero schopností."
40
41 #: ../../../src/Avatar.cpp:689
42 msgid "You are defeated."
43 msgstr ""
44
45 #: ../../../src/Avatar.cpp:935
4146 msgid "Transformation expired. You have been moved back to a safe place."
42 msgstr ""
43
44 #: ../../../src/CampaignManager.cpp:153
47 msgstr "Čas premeny vypršal. Presunuli ste sa naspäť na bezpečné miesto."
48
49 #: ../../../src/CampaignManager.cpp:152
4550 #, c-format
4651 msgid "%d %s removed."
4752 msgstr ""
4853
49 #: ../../../src/CampaignManager.cpp:162
54 #: ../../../src/CampaignManager.cpp:171
55 #, c-format
56 msgid "%s x%d removed."
57 msgstr ""
58
59 #: ../../../src/CampaignManager.cpp:173
5060 #, c-format
5161 msgid "%s removed."
5262 msgstr ""
5363
54 #: ../../../src/CampaignManager.cpp:175
64 #: ../../../src/CampaignManager.cpp:187
65 #, c-format
66 msgid "You receive %d %s."
67 msgstr "Dostali ste %d %s."
68
69 #: ../../../src/CampaignManager.cpp:191
70 #, c-format
71 msgid "You receive %s x%d."
72 msgstr "Dostali ste %s x%d."
73
74 #: ../../../src/CampaignManager.cpp:193
5575 #, c-format
5676 msgid "You receive %s."
57 msgstr "Dostal si %s."
58
59 #: ../../../src/CampaignManager.cpp:177
60 #, c-format
61 msgid "You receive %s x%d."
62 msgstr "Dostal si %s x%d."
63
64 #: ../../../src/CampaignManager.cpp:186
65 #, c-format
66 msgid "You receive %d %s."
67 msgstr ""
68
69 #: ../../../src/CampaignManager.cpp:195
77 msgstr "Dostali ste %s."
78
79 #: ../../../src/CampaignManager.cpp:210
7080 #, c-format
7181 msgid "You receive %d XP."
72 msgstr "Dostal si %d XP."
73
74 #: ../../../src/CampaignManager.cpp:201
82 msgstr "Dostali ste %d XP."
83
84 #: ../../../src/CampaignManager.cpp:216
7585 msgid "HP restored."
76 msgstr ""
77
78 #: ../../../src/CampaignManager.cpp:205
86 msgstr "HP boli obnovené."
87
88 #: ../../../src/CampaignManager.cpp:220
7989 msgid "MP restored."
80 msgstr ""
81
82 #: ../../../src/CampaignManager.cpp:210
90 msgstr "MP boli obnovené."
91
92 #: ../../../src/CampaignManager.cpp:225
8393 msgid "HP and MP restored."
84 msgstr ""
85
86 #: ../../../src/CampaignManager.cpp:214
94 msgstr "HP a MP boli obnovené."
95
96 #: ../../../src/CampaignManager.cpp:229
8797 msgid "Negative effects removed."
88 msgstr ""
89
90 #: ../../../src/CampaignManager.cpp:220
98 msgstr "Negatívne efekty boli odstránené."
99
100 #: ../../../src/CampaignManager.cpp:235
91101 msgid "HP and MP restored, negative effects removed"
92 msgstr ""
102 msgstr "HP a MP boli obnovené, negatívne efekty odstránené"
93103
94104 #: ../../../src/DeviceList.cpp:56
95105 msgid ""
97107 "\n"
98108 "Often slower, but less likely to have issues."
99109 msgstr ""
110 "Softvérové vykresľovanie pomocou SDL\n"
111 "\n"
112 "Často pomalšie, ale menej náchylné na chyby."
100113
101114 #: ../../../src/DeviceList.cpp:59
102115 msgid ""
104117 "\n"
105118 "The default renderer that is often faster than the SDL software renderer."
106119 msgstr ""
107
108 #: ../../../src/EngineSettings.cpp:561
120 "Hardvérové vykresľovanie pomocou SDL\n"
121 "\n"
122 "Predvolené vykresľovanie, ktoré je často rýchlejšie ako softvérové vykresľovanie pomocou SDL."
123
124 #: ../../../src/EngineSettings.cpp:586
109125 msgid "Adventurer"
110126 msgstr "Dobrodruh"
111127
112 #: ../../../src/Entity.cpp:511
128 #: ../../../src/Entity.cpp:527
113129 msgid "miss"
114 msgstr ""
115
116 #: ../../../src/Entity.cpp:548 ../../../src/PowerManager.cpp:1152
117 #: ../../../src/StatBlock.cpp:805 ../../../src/StatBlock.cpp:811
130 msgstr "minutie"
131
132 #: ../../../src/Entity.cpp:565 ../../../src/PowerManager.cpp:1224
133 #: ../../../src/StatBlock.cpp:917 ../../../src/StatBlock.cpp:923
118134 #, c-format
119135 msgid "+%d HP"
120 msgstr ""
121
122 #: ../../../src/Entity.cpp:555 ../../../src/StatBlock.cpp:816
123 #: ../../../src/StatBlock.cpp:822
136 msgstr "+%d HP"
137
138 #: ../../../src/Entity.cpp:572 ../../../src/StatBlock.cpp:928
139 #: ../../../src/StatBlock.cpp:934
124140 #, c-format
125141 msgid "+%d MP"
126 msgstr ""
127
128 #: ../../../src/EventManager.cpp:738
142 msgstr "+%d MP"
143
144 #: ../../../src/EventManager.cpp:792
129145 msgid "Unknown destination"
130146 msgstr "Neznámy cieľ"
131147
132 #: ../../../src/GameStateConfigBase.cpp:89
133 #: ../../../src/GameStateConfigBase.cpp:110
148 #: ../../../src/GameState.cpp:37 ../../../src/GameState.cpp:58
149 msgid "Loading..."
150 msgstr "Načítava sa..."
151
152 #: ../../../src/GameStateLoad.cpp:90 ../../../src/GameStateLoad.cpp:103
153 msgid "Delete Save"
154 msgstr "Zmazať pozíciu"
155
156 #: ../../../src/GameStateLoad.cpp:90
157 msgid "Delete this save?"
158 msgstr "Zmazať túto pozíciu?"
159
160 #: ../../../src/GameStateLoad.cpp:92
161 msgid "Exit to Title"
162 msgstr "Návrat na úvod"
163
164 #: ../../../src/GameStateLoad.cpp:95
165 msgid "New Game"
166 msgstr "Nová hra"
167
168 #: ../../../src/GameStateLoad.cpp:99 ../../../src/GameStateLoad.cpp:607
169 msgid "Choose a Slot"
170 msgstr "Vyberte pozíciu"
171
172 #: ../../../src/GameStateLoad.cpp:580 ../../../src/GameStateLoad.cpp:601
173 msgid "Enable a story mod to continue"
174 msgstr ""
175
176 #: ../../../src/GameStateLoad.cpp:596
177 msgid "Load Game"
178 msgstr "Načítať hru"
179
180 #: ../../../src/GameStateLoad.cpp:705
181 msgid "Entering game world..."
182 msgstr "Vstupuje sa do sveta hry..."
183
184 #: ../../../src/GameStateLoad.cpp:708
185 msgid "Loading saved game..."
186 msgstr "Načítava sa uložená hra..."
187
188 #: ../../../src/GameStateLoad.cpp:741
189 msgid "Invalid save"
190 msgstr "Neplatná uložená pozícia"
191
192 #: ../../../src/GameStateLoad.cpp:765 ../../../src/ItemManager.cpp:745
193 #: ../../../src/MenuPowers.cpp:860 ../../../src/MenuPowers.cpp:1219
194 #: ../../../src/MenuPowers.cpp:1631
195 #, c-format
196 msgid "Level %d"
197 msgstr "Úroveň %d"
198
199 #: ../../../src/GameStateNew.cpp:66 ../../../src/InputState.cpp:416
200 #: ../../../src/MenuConfig.cpp:246
201 msgid "Cancel"
202 msgstr "Zrušiť"
203
204 #: ../../../src/GameStateNew.cpp:69
205 msgid "Create"
206 msgstr "Vytvoriť"
207
208 #: ../../../src/GameStateNew.cpp:77
209 msgid "Randomize"
210 msgstr "Vybrať náhodne"
211
212 #: ../../../src/GameStateNew.cpp:93
213 msgid "Choose a Portrait"
214 msgstr "Vyberte si vzhľad"
215
216 #: ../../../src/GameStateNew.cpp:97
217 msgid "Choose a Name"
218 msgstr "Vyberte si meno"
219
220 #: ../../../src/GameStateNew.cpp:101
221 msgid "Permadeath?"
222 msgstr "Trvalá smrť?"
223
224 #: ../../../src/GameStateNew.cpp:105
225 msgid "Choose a Class"
226 msgstr "Vyberte si triedu"
227
228 #: ../../../src/GameStateTitle.cpp:107
229 msgid "Play Game"
230 msgstr "Hrať hru"
231
232 #: ../../../src/GameStateTitle.cpp:110
233 msgid "Enable a core mod to continue"
234 msgstr ""
235
236 #: ../../../src/GameStateTitle.cpp:114 ../../../src/MenuMiniMap.cpp:152
237 msgid "Configuration"
238 msgstr "Konfigurácia"
239
240 #: ../../../src/GameStateTitle.cpp:117
241 msgid "Credits"
242 msgstr "Autori"
243
244 #: ../../../src/GameStateTitle.cpp:120
245 msgid "Exit Game"
246 msgstr "Ukončiť hru"
247
248 #: ../../../src/InputState.cpp:417
249 msgid "Accept"
250 msgstr "Prijať"
251
252 #: ../../../src/InputState.cpp:418 ../../../src/MenuMovementType.cpp:123
253 #: ../../../src/MenuMovementType.cpp:132 ../../../src/SDLInputState.cpp:668
254 #: ../../../src/SDLInputState.cpp:698
255 msgid "Up"
256 msgstr "Nahor"
257
258 #: ../../../src/InputState.cpp:419 ../../../src/MenuMovementType.cpp:125
259 #: ../../../src/MenuMovementType.cpp:134 ../../../src/SDLInputState.cpp:646
260 #: ../../../src/SDLInputState.cpp:676
261 msgid "Down"
262 msgstr "Nadol"
263
264 #: ../../../src/InputState.cpp:420 ../../../src/MenuMovementType.cpp:124
265 #: ../../../src/MenuMovementType.cpp:133 ../../../src/SDLInputState.cpp:653
266 #: ../../../src/SDLInputState.cpp:683
267 msgid "Left"
268 msgstr "Doľava"
269
270 #: ../../../src/InputState.cpp:421 ../../../src/MenuMovementType.cpp:126
271 #: ../../../src/MenuMovementType.cpp:135 ../../../src/SDLInputState.cpp:663
272 #: ../../../src/SDLInputState.cpp:693
273 msgid "Right"
274 msgstr "Doprava"
275
276 #: ../../../src/InputState.cpp:422
277 msgid "Bar1"
278 msgstr "Panel 1"
279
280 #: ../../../src/InputState.cpp:423
281 msgid "Bar2"
282 msgstr "Panel 2"
283
284 #: ../../../src/InputState.cpp:424
285 msgid "Bar3"
286 msgstr "Panel 3"
287
288 #: ../../../src/InputState.cpp:425
289 msgid "Bar4"
290 msgstr "Panel 4"
291
292 #: ../../../src/InputState.cpp:426
293 msgid "Bar5"
294 msgstr "Panel 5"
295
296 #: ../../../src/InputState.cpp:427
297 msgid "Bar6"
298 msgstr "Panel 6"
299
300 #: ../../../src/InputState.cpp:428
301 msgid "Bar7"
302 msgstr "Panel 7"
303
304 #: ../../../src/InputState.cpp:429
305 msgid "Bar8"
306 msgstr "Panel 8"
307
308 #: ../../../src/InputState.cpp:430
309 msgid "Bar9"
310 msgstr "Panel 9"
311
312 #: ../../../src/InputState.cpp:431
313 msgid "Bar0"
314 msgstr "Panel 0"
315
316 #: ../../../src/InputState.cpp:432 ../../../src/MenuActionBar.cpp:84
317 #: ../../../src/MenuCharacter.cpp:54
318 msgid "Character"
319 msgstr "Postava"
320
321 #: ../../../src/InputState.cpp:433 ../../../src/MenuActionBar.cpp:85
322 #: ../../../src/MenuInventory.cpp:130 ../../../src/MenuVendor.cpp:59
323 msgid "Inventory"
324 msgstr "Inventár"
325
326 #: ../../../src/InputState.cpp:434 ../../../src/MenuActionBar.cpp:86
327 #: ../../../src/MenuPowers.cpp:158
328 msgid "Powers"
329 msgstr "Sily"
330
331 #: ../../../src/InputState.cpp:435 ../../../src/MenuActionBar.cpp:87
332 #: ../../../src/MenuLog.cpp:72
333 msgid "Log"
334 msgstr "Denník"
335
336 #: ../../../src/InputState.cpp:436
337 msgid "Main1"
338 msgstr "Hlavná akcia 1"
339
340 #: ../../../src/InputState.cpp:437
341 msgid "Main2"
342 msgstr "Hlavná akcia 2"
343
344 #: ../../../src/InputState.cpp:438
345 msgid "Ctrl"
346 msgstr "Ctrl"
347
348 #: ../../../src/InputState.cpp:439
349 msgid "Shift"
350 msgstr "Shift"
351
352 #: ../../../src/InputState.cpp:440
353 msgid "Alt"
354 msgstr "Alt"
355
356 #: ../../../src/InputState.cpp:441 ../../../src/SDLInputState.cpp:675
357 msgid "Delete"
358 msgstr "Delete"
359
360 #: ../../../src/InputState.cpp:442
361 msgid "ActionBar Accept"
362 msgstr "Panel akcií: prijať"
363
364 #: ../../../src/InputState.cpp:443
365 msgid "ActionBar Left"
366 msgstr "Panel akcií: doľava"
367
368 #: ../../../src/InputState.cpp:444
369 msgid "ActionBar Right"
370 msgstr "Panel akcií: doprava"
371
372 #: ../../../src/InputState.cpp:445
373 msgid "ActionBar Use"
374 msgstr "Panel akcií: použiť"
375
376 #: ../../../src/InputState.cpp:446
377 msgid "Developer Menu"
378 msgstr "Vývojárska ponuka"
379
380 #: ../../../src/InputState.cpp:448
381 msgid "Left Mouse"
382 msgstr "Ľavé tlačidlo myši"
383
384 #: ../../../src/InputState.cpp:449
385 msgid "Middle Mouse"
386 msgstr "Stredné tlačidlo myši"
387
388 #: ../../../src/InputState.cpp:450
389 msgid "Right Mouse"
390 msgstr "Pravé tlačidlo myši"
391
392 #: ../../../src/InputState.cpp:451
393 msgid "Wheel Up"
394 msgstr "Koliesko myši nahor"
395
396 #: ../../../src/InputState.cpp:452
397 msgid "Wheel Down"
398 msgstr "Koliesko myši nadol"
399
400 #: ../../../src/InputState.cpp:453
401 msgid "Mouse X1"
402 msgstr ""
403
404 #: ../../../src/InputState.cpp:454
405 msgid "Mouse X2"
406 msgstr ""
407
408 #: ../../../src/ItemManager.cpp:475
409 msgid "Unknown Item"
410 msgstr "Neznámy predmet"
411
412 #: ../../../src/ItemManager.cpp:646 ../../../src/MenuPowers.cpp:959
413 #, c-format
414 msgid "%d%% Speed"
415 msgstr ""
416
417 #: ../../../src/ItemManager.cpp:650 ../../../src/MenuPowers.cpp:962
418 #, c-format
419 msgid "%d%% Attack Speed"
420 msgstr ""
421
422 #: ../../../src/ItemManager.cpp:672 ../../../src/MenuCharacter.cpp:352
423 #: ../../../src/MenuPowers.cpp:931
424 #, c-format
425 msgid "Resistance (%s)"
426 msgstr "Odolnosť (%s)"
427
428 #: ../../../src/ItemManager.cpp:682
429 #, c-format
430 msgid "Requires %s"
431 msgstr "Vyžaduje %s"
432
433 #: ../../../src/ItemManager.cpp:731
434 msgid "Quest Item"
435 msgstr "Predmet úlohy"
436
437 #: ../../../src/ItemManager.cpp:758
438 #, c-format
439 msgid "Quality: %s"
440 msgstr "Kvalita: %s"
441
442 #: ../../../src/ItemManager.cpp:783
443 #, c-format
444 msgid "Absorb: %d-%d"
445 msgstr "Pohltenie: %d-%d"
446
447 #: ../../../src/ItemManager.cpp:785
448 #, c-format
449 msgid "Absorb: %d"
450 msgstr "Pohltenie: %d"
451
452 #: ../../../src/ItemManager.cpp:825 ../../../src/MenuPowers.cpp:1206
453 #: ../../../src/MenuPowers.cpp:1209
454 #, c-format
455 msgid "Requires Level %d"
456 msgstr "Vyžaduje úroveň %d"
457
458 #: ../../../src/ItemManager.cpp:836 ../../../src/MenuPowers.cpp:1198
459 #: ../../../src/MenuPowers.cpp:1200
460 #, c-format
461 msgid "Requires %s %d"
462 msgstr ""
463
464 #: ../../../src/ItemManager.cpp:847
465 #, c-format
466 msgid "Requires Class: %s"
467 msgstr "Vyžaduje triedu: %s"
468
469 #: ../../../src/ItemManager.cpp:863 ../../../src/ItemManager.cpp:875
470 #, c-format
471 msgid "Buy Price: %d %s"
472 msgstr "Kúpna cena: %d %s"
473
474 #: ../../../src/ItemManager.cpp:865 ../../../src/ItemManager.cpp:877
475 #, c-format
476 msgid "Buy Price: %d %s each"
477 msgstr "Kúpna cena: %d %s za kus"
478
479 #: ../../../src/ItemManager.cpp:885
480 #, c-format
481 msgid "Sell Price: %d %s"
482 msgstr "Predajná cena: %d %s"
483
484 #: ../../../src/ItemManager.cpp:887
485 #, c-format
486 msgid "Sell Price: %d %s each"
487 msgstr "Predajná cena: %d %s za kus"
488
489 #: ../../../src/ItemManager.cpp:896
490 msgid "Set:"
491 msgstr "Súprava:"
492
493 #: ../../../src/ItemManager.cpp:903
494 #, c-format
495 msgid "%d items:"
496 msgstr ""
497
498 #: ../../../src/ItemManager.cpp:915
499 #, c-format
500 msgid "Press [%s] to read"
501 msgstr "Prečítate stlačením [%s]"
502
503 #: ../../../src/ItemManager.cpp:918
504 #, c-format
505 msgid "Press [%s] to use"
506 msgstr "Použijete stlačením [%s]"
507
508 #: ../../../src/MenuActionBar.cpp:239 ../../../src/MenuActionBar.cpp:246
509 #: ../../../src/MenuActionBar.cpp:249 ../../../src/MenuActionBar.cpp:255
510 #, c-format
511 msgid "Hotkey: %s"
512 msgstr "Klávesová skratka: %s"
513
514 #: ../../../src/MenuActionBar.cpp:621
515 msgid "Not enough MP."
516 msgstr "Nedostatok MP."
517
518 #: ../../../src/MenuActiveEffects.cpp:124
519 #, c-format
520 msgid "x%d"
521 msgstr ""
522
523 #: ../../../src/MenuActiveEffects.cpp:219
524 msgid "Remaining:"
525 msgstr ""
526
527 #: ../../../src/MenuActiveEffects.cpp:225
528 #, c-format
529 msgid "x%d stacks"
530 msgstr ""
531
532 #: ../../../src/MenuCharacter.cpp:73 ../../../src/MenuCharacter.cpp:78
533 msgid "Name"
534 msgstr "Meno"
535
536 #: ../../../src/MenuCharacter.cpp:74 ../../../src/MenuCharacter.cpp:79
537 msgid "Level"
538 msgstr "Stupeň"
539
540 #: ../../../src/MenuCharacter.cpp:309
541 #, c-format
542 msgid "Available stat points: %d"
543 msgstr ""
544
545 #: ../../../src/MenuCharacter.cpp:353
546 #, c-format
547 msgid "Reduces the damage taken from \"%s\" elemental attacks."
548 msgstr "Znižuje zranenie utŕžené zo živelných útokov „%s“."
549
550 #: ../../../src/MenuCharacter.cpp:363 ../../../src/MenuManager.cpp:301
551 #, c-format
552 msgid "XP: %d"
553 msgstr "XP: %d"
554
555 #: ../../../src/MenuCharacter.cpp:365
556 #, c-format
557 msgid "Next: %d"
558 msgstr "Nasl.: %d"
559
560 #: ../../../src/MenuCharacter.cpp:371
561 #, c-format
562 msgid "base (%d), bonus (%d)"
563 msgstr "základ (%d), bonus (%d)"
564
565 #: ../../../src/MenuCharacter.cpp:379 ../../../src/MenuCharacter.cpp:393
566 msgid "Related stats:"
567 msgstr "Súvisiace charakteristiky:"
568
569 #: ../../../src/MenuCharacter.cpp:419 ../../../src/MenuCharacter.cpp:443
570 #, c-format
571 msgid "Each level grants %d."
572 msgstr "Každá úroveň pridá %d."
573
574 #: ../../../src/MenuCharacter.cpp:423 ../../../src/MenuCharacter.cpp:447
575 #, c-format
576 msgid "Each point of %s grants %d."
577 msgstr ""
578
579 #: ../../../src/MenuConfig.cpp:122 ../../../src/MenuConfig.cpp:1171
580 msgid "Clear"
581 msgstr "Vymazať"
582
583 #: ../../../src/MenuConfig.cpp:122 ../../../src/MenuConfig.cpp:1169
584 msgid "Assign:"
585 msgstr "Priradiť:"
586
587 #: ../../../src/MenuConfig.cpp:123 ../../../src/MenuConfig.cpp:245
134588 msgid "Defaults"
135 msgstr ""
136
137 #: ../../../src/GameStateConfigBase.cpp:89
589 msgstr "Predvolené"
590
591 #: ../../../src/MenuConfig.cpp:123
138592 msgid "Reset ALL settings?"
139 msgstr ""
140
141 #: ../../../src/GameStateConfigBase.cpp:109 ../../../src/MenuNumPicker.cpp:49
593 msgstr "Vrátiť VŠETKY nastavenia?"
594
595 #: ../../../src/MenuConfig.cpp:244 ../../../src/MenuNumPicker.cpp:49
142596 msgid "OK"
143 msgstr ""
144
145 #: ../../../src/GameStateConfigBase.cpp:111 ../../../src/GameStateNew.cpp:65
146 #: ../../../src/InputState.cpp:401
147 msgid "Cancel"
148 msgstr "Zruš"
149
150 #: ../../../src/GameStateConfigBase.cpp:160
151 #: ../../../src/GameStateConfigDesktop.cpp:130
597 msgstr "OK"
598
599 #: ../../../src/MenuConfig.cpp:248 ../../../src/MenuGameOver.cpp:72
600 msgid "Continue"
601 msgstr "Pokračovať"
602
603 #: ../../../src/MenuConfig.cpp:250
604 msgid "Save Game"
605 msgstr ""
606
607 #: ../../../src/MenuConfig.cpp:293
608 msgid "Default"
609 msgstr ""
610
611 #: ../../../src/MenuConfig.cpp:293
612 msgid ""
613 "Show all loot tooltips, except for those that would be obscured by the "
614 "player or an enemy. Temporarily show all loot tooltips with 'Alt'."
615 msgstr ""
616 "Zobrazovať všetky popisy predmetov na zemi okrem tých, ktoré zakrýva hráč "
617 "alebo nepriateľ. Stlačením klávesu Alt môžete dočasne zobraziť všetky "
618 "popisy."
619
620 #: ../../../src/MenuConfig.cpp:294
621 msgid "Show all"
622 msgstr ""
623
624 #: ../../../src/MenuConfig.cpp:294
625 msgid ""
626 "Always show loot tooltips. Temporarily hide all loot tooltips with 'Alt'."
627 msgstr ""
628 "Vždy zobrazovať popisy predmetov na zemi. Stlačením klávesu Alt môžete "
629 "dočasne skryť všetky popisy."
630
631 #: ../../../src/MenuConfig.cpp:295 ../../../src/MenuConfig.cpp:300
632 msgid "Hidden"
633 msgstr ""
634
635 #: ../../../src/MenuConfig.cpp:295
636 msgid ""
637 "Always hide loot tooltips, except for when a piece of loot is hovered with "
638 "the mouse cursor. Temporarily show all loot tooltips with 'Alt'."
639 msgstr ""
640 "Vždy skrývať popisy predmetov na zemi okrem prípadu, že na predmet ukazuje "
641 "kurzor myši. Stlačením klávesu Alt môžete dočasne zobraziť všetky popisy."
642
643 #: ../../../src/MenuConfig.cpp:298
644 msgid "Visible"
645 msgstr "Viditeľná"
646
647 #: ../../../src/MenuConfig.cpp:299
648 msgid "Visible (2x zoom)"
649 msgstr "Viditeľná (2x priblíženie)"
650
651 #: ../../../src/MenuConfig.cpp:303
652 msgid ""
653 "Controls the type of warning to be activated when the player is below the "
654 "low health threshold."
655 msgstr ""
656 "Ovláda typ upozornenia, ktoré sa aktivuje, keď zdravie hráča klesne pod prah"
657 " nízkeho zdravia."
658
659 #: ../../../src/MenuConfig.cpp:304
660 msgid "- Display a message"
661 msgstr "- Zobrazenie správy"
662
663 #: ../../../src/MenuConfig.cpp:305
664 msgid "- Play a sound"
665 msgstr "- Prehratie zvuku"
666
667 #: ../../../src/MenuConfig.cpp:306
668 msgid "- Change the cursor"
669 msgstr "- Zmena kurzora"
670
671 #: ../../../src/MenuConfig.cpp:308
672 msgid "Disabled"
673 msgstr "Zakázané"
674
675 #: ../../../src/MenuConfig.cpp:309
676 msgid "All"
677 msgstr "Všetky"
678
679 #: ../../../src/MenuConfig.cpp:310
680 msgid "Message & Cursor"
681 msgstr "Správa a kurzor"
682
683 #: ../../../src/MenuConfig.cpp:311
684 msgid "Message & Sound"
685 msgstr "Správa a zvuk"
686
687 #: ../../../src/MenuConfig.cpp:312
688 msgid "Sound & Cursor"
689 msgstr "Zvuk a kurzor"
690
691 #: ../../../src/MenuConfig.cpp:313
692 msgid "Message"
693 msgstr "Správa"
694
695 #: ../../../src/MenuConfig.cpp:314
696 msgid "Cursor"
697 msgstr "Kurzor"
698
699 #: ../../../src/MenuConfig.cpp:315
700 msgid "Sound"
701 msgstr "Zvuk"
702
703 #: ../../../src/MenuConfig.cpp:321
704 msgid ""
705 "When the player's health drops below the given threshold, the low health "
706 "notifications are triggered if one or more of them is enabled."
707 msgstr ""
708 "Keď zdravie hráča klesne pod tento prah, spustia sa oznámenia o nízkom "
709 "zdraví, ak je povolené aspoň jedno z nich."
710
711 #: ../../../src/MenuConfig.cpp:334 ../../../src/MenuConfig.cpp:1587
712 #: ../../../src/MenuGameOver.cpp:116
713 msgid "Exit"
714 msgstr "Ukončiť"
715
716 #: ../../../src/MenuConfig.cpp:335
717 msgid "Video"
718 msgstr "Obraz"
719
720 #: ../../../src/MenuConfig.cpp:336
152721 msgid "Audio"
153 msgstr ""
154
155 #: ../../../src/GameStateConfigBase.cpp:161
156 #: ../../../src/GameStateConfigDesktop.cpp:131
722 msgstr "Zvuk"
723
724 #: ../../../src/MenuConfig.cpp:337
157725 msgid "Interface"
158 msgstr ""
159
160 #: ../../../src/GameStateConfigBase.cpp:162
161 #: ../../../src/GameStateConfigDesktop.cpp:134
726 msgstr "Rozhranie"
727
728 #: ../../../src/MenuConfig.cpp:338
729 msgid "Input"
730 msgstr "Vstup"
731
732 #: ../../../src/MenuConfig.cpp:339
733 msgid "Keybindings"
734 msgstr "Priradenie klávesov"
735
736 #: ../../../src/MenuConfig.cpp:340
162737 msgid "Mods"
163 msgstr ""
164
165 #: ../../../src/GameStateConfigBase.cpp:249 ../../../src/MenuExit.cpp:72
738 msgstr "Modifikácie"
739
740 #: ../../../src/MenuConfig.cpp:352
741 msgid "Paused"
742 msgstr "Hra pozastavená"
743
744 #: ../../../src/MenuConfig.cpp:355
745 msgid "Time Played"
746 msgstr "Odohraný čas"
747
748 #: ../../../src/MenuConfig.cpp:361
749 msgid "Renderer"
750 msgstr "Vykresľovanie"
751
752 #: ../../../src/MenuConfig.cpp:362
753 msgid "Full Screen Mode"
754 msgstr "Režim celej obrazovky"
755
756 #: ../../../src/MenuConfig.cpp:363
757 msgid "Hardware surfaces"
758 msgstr "Hardvérové povrchy"
759
760 #: ../../../src/MenuConfig.cpp:364
761 msgid "V-Sync"
762 msgstr "Vertikálna synchronizácia"
763
764 #: ../../../src/MenuConfig.cpp:365
765 msgid "Texture Filtering"
766 msgstr "Filtrovanie textúr"
767
768 #: ../../../src/MenuConfig.cpp:366
769 msgid "DPI scaling"
770 msgstr ""
771
772 #: ../../../src/MenuConfig.cpp:367
773 msgid "Parallax Layers"
774 msgstr "Paralaxné vrstvy"
775
776 #: ../../../src/MenuConfig.cpp:368
777 msgid "Allow changing gamma"
778 msgstr "Povoliť zmenu hodnoty gama"
779
780 #: ../../../src/MenuConfig.cpp:369
781 msgid "Gamma"
782 msgstr "Gama"
783
784 #: ../../../src/MenuConfig.cpp:371
785 msgid "Sound Volume"
786 msgstr "Hlasitosť zvukov"
787
788 #: ../../../src/MenuConfig.cpp:372
166789 msgid "Music Volume"
167 msgstr ""
168
169 #: ../../../src/GameStateConfigBase.cpp:253 ../../../src/MenuExit.cpp:77
170 msgid "Sound Volume"
171 msgstr ""
172
173 #: ../../../src/GameStateConfigBase.cpp:257
790 msgstr "Hlasitosť hudby"
791
792 #: ../../../src/MenuConfig.cpp:374
174793 msgid "Language"
175 msgstr ""
176
177 #: ../../../src/GameStateConfigBase.cpp:266
794 msgstr "Jazyk"
795
796 #: ../../../src/MenuConfig.cpp:375
178797 msgid "Show FPS"
179 msgstr ""
180
181 #: ../../../src/GameStateConfigBase.cpp:270
798 msgstr "Zobrazovať FPS"
799
800 #: ../../../src/MenuConfig.cpp:376
801 msgid "Hardware mouse cursor"
802 msgstr "Hardvérový kurzor myši"
803
804 #: ../../../src/MenuConfig.cpp:377
182805 msgid "Colorblind Mode"
183 msgstr ""
184
185 #: ../../../src/GameStateConfigBase.cpp:274
186 msgid "Hardware mouse cursor"
187 msgstr ""
188
189 #: ../../../src/GameStateConfigBase.cpp:278
806 msgstr "Režim pre farboslepých"
807
808 #: ../../../src/MenuConfig.cpp:378
190809 msgid "Developer Mode"
191 msgstr ""
192
193 #: ../../../src/GameStateConfigBase.cpp:282
810 msgstr "Vývojársky režim"
811
812 #: ../../../src/MenuConfig.cpp:379
194813 msgid "Subtitles"
195 msgstr ""
196
197 #: ../../../src/GameStateConfigBase.cpp:286
198 msgid "Active Mods"
199 msgstr ""
200
201 #: ../../../src/GameStateConfigBase.cpp:295
202 msgid "Available Mods"
203 msgstr ""
204
205 #: ../../../src/GameStateConfigBase.cpp:314
206 msgid "<< Disable"
207 msgstr ""
208
209 #: ../../../src/GameStateConfigBase.cpp:320
210 msgid "Enable >>"
211 msgstr ""
212
213 #: ../../../src/GameStateConfigBase.cpp:873
214 msgid "Version:"
215 msgstr ""
216
217 #: ../../../src/GameStateConfigBase.cpp:878
218 msgid "Game:"
219 msgstr ""
220
221 #: ../../../src/GameStateConfigBase.cpp:883
222 msgid "Engine version:"
223 msgstr ""
224
225 #: ../../../src/GameStateConfigBase.cpp:891
226 msgid "Requires mods:"
227 msgstr ""
228
229 #: ../../../src/GameStateConfigDesktop.cpp:83
230 #: ../../../src/GameStateConfigDesktop.cpp:751
231 msgid "Clear"
232 msgstr ""
233
234 #: ../../../src/GameStateConfigDesktop.cpp:83
235 #: ../../../src/GameStateConfigDesktop.cpp:749
236 msgid "Assign:"
237 msgstr ""
238
239 #: ../../../src/GameStateConfigDesktop.cpp:128
240 msgid "Video"
241 msgstr ""
242
243 #: ../../../src/GameStateConfigDesktop.cpp:132
244 msgid "Input"
245 msgstr ""
246
247 #: ../../../src/GameStateConfigDesktop.cpp:133
248 msgid "Keybindings"
249 msgstr ""
250
251 #: ../../../src/GameStateConfigDesktop.cpp:188
814 msgstr "Titulky"
815
816 #: ../../../src/MenuConfig.cpp:380
817 msgid "Loot tooltip visibility"
818 msgstr ""
819
820 #: ../../../src/MenuConfig.cpp:381
821 msgid "Mini-map mode"
822 msgstr "Režim minimapy"
823
824 #: ../../../src/MenuConfig.cpp:382
825 msgid "Always show stat bar labels"
826 msgstr "Vždy zobrazovať textové označenie indikátorov charakteristík"
827
828 #: ../../../src/MenuConfig.cpp:383
829 msgid "Allow stat bar auto-hiding"
830 msgstr "Povoliť automatické skrývanie indikátorov charakteristík"
831
832 #: ../../../src/MenuConfig.cpp:384
833 msgid "Show combat text"
834 msgstr "Zobrazovať text o boji"
835
836 #: ../../../src/MenuConfig.cpp:385
837 msgid "Automatically equip items"
838 msgstr "Automaticky sa vystrojiť predmetmi"
839
840 #: ../../../src/MenuConfig.cpp:386
841 msgid "Show hidden entity markers"
842 msgstr ""
843
844 #: ../../../src/MenuConfig.cpp:387
845 msgid "Low health notification"
846 msgstr "Oznámenie o nízkom zdraví"
847
848 #: ../../../src/MenuConfig.cpp:388
849 msgid "Low health threshold"
850 msgstr "Prah nízkeho zdravia"
851
852 #: ../../../src/MenuConfig.cpp:389
853 msgid "Show item comparison tooltips"
854 msgstr ""
855
856 #: ../../../src/MenuConfig.cpp:392 ../../../src/MenuMovementType.cpp:94
857 #: ../../../src/MenuMovementType.cpp:131
858 msgid "Joystick"
859 msgstr "Joystick"
860
861 #: ../../../src/MenuConfig.cpp:393
862 msgid "Move hero using mouse"
863 msgstr "Ovládať pohyb hrdinu pomocou myši"
864
865 #: ../../../src/MenuConfig.cpp:394
866 msgid "Mouse aim"
867 msgstr "Mierenie myšou"
868
869 #: ../../../src/MenuConfig.cpp:395
870 msgid "Do not use mouse"
871 msgstr "Nepoužívať myš"
872
873 #: ../../../src/MenuConfig.cpp:396
874 msgid "Swap mouse movement button"
875 msgstr ""
876
877 #: ../../../src/MenuConfig.cpp:397
878 msgid "Attack with mouse movement"
879 msgstr ""
880
881 #: ../../../src/MenuConfig.cpp:398
882 msgid "Joystick Deadzone"
883 msgstr "Mŕtva zóna joysticku"
884
885 #: ../../../src/MenuConfig.cpp:408
886 #, c-format
887 msgid "Primary binding: %s"
888 msgstr "Primárne priradenie: %s"
889
890 #: ../../../src/MenuConfig.cpp:409
891 #, c-format
892 msgid "Alternate binding: %s"
893 msgstr "Alternatívne priradenie: %s"
894
895 #: ../../../src/MenuConfig.cpp:410
896 #, c-format
897 msgid "Joystick binding: %s"
898 msgstr "Priradenie pre joystick: %s"
899
900 #: ../../../src/MenuConfig.cpp:511
252901 msgid ""
253902 "Will try to store surfaces in video memory versus system memory. The effect "
254903 "this has on performance depends on the renderer."
255904 msgstr ""
256
257 #: ../../../src/GameStateConfigDesktop.cpp:189
905 "Pokúsi sa ukladať povrchy do grafickej pamäte na rozdiel od operačnej "
906 "pamäte. Vplyv na výkon závisí od typu vykresľovania."
907
908 #: ../../../src/MenuConfig.cpp:512
258909 msgid ""
259910 "Prevents screen tearing. Disable if you experience \"stuttering\" in "
260911 "windowed mode or input lag."
261912 msgstr ""
262
263 #: ../../../src/GameStateConfigDesktop.cpp:190
913 "Zabraňuje trhaniu obrazovky. V prípade „koktania“ v režime okna alebo "
914 "oneskorenia vstupu toto nastavenie zakážte."
915
916 #: ../../../src/MenuConfig.cpp:513
264917 msgid ""
265918 "When enabled, this uses the screen DPI in addition to the window dimensions "
266919 "to scale the rendering resolution. Otherwise, only the window dimensions are"
267920 " used."
268921 msgstr ""
269922
270 #: ../../../src/GameStateConfigDesktop.cpp:191
923 #: ../../../src/MenuConfig.cpp:514
271924 msgid ""
272925 "This enables parallax (non-tile) layers. Disabling this setting can improve "
273926 "performance in some cases."
274927 msgstr ""
275
276 #: ../../../src/GameStateConfigDesktop.cpp:192
277 msgid "Experimental"
278 msgstr ""
279
280 #: ../../../src/GameStateConfigDesktop.cpp:193
281 msgid "For handheld devices"
282 msgstr ""
283
284 #: ../../../src/GameStateConfigDesktop.cpp:211
285 msgid "Renderer"
286 msgstr ""
287
288 #: ../../../src/GameStateConfigDesktop.cpp:227
289 msgid "Full Screen Mode"
290 msgstr ""
291
292 #: ../../../src/GameStateConfigDesktop.cpp:231
293 msgid "Move hero using mouse"
294 msgstr ""
295
296 #: ../../../src/GameStateConfigDesktop.cpp:235
297 msgid "Hardware surfaces"
298 msgstr ""
299
300 #: ../../../src/GameStateConfigDesktop.cpp:239
301 msgid "V-Sync"
302 msgstr ""
303
304 #: ../../../src/GameStateConfigDesktop.cpp:243
305 msgid "Texture Filtering"
306 msgstr ""
307
308 #: ../../../src/GameStateConfigDesktop.cpp:247
309 msgid "DPI scaling"
310 msgstr ""
311
312 #: ../../../src/GameStateConfigDesktop.cpp:251
313 msgid "Parallax Layers"
314 msgstr ""
315
316 #: ../../../src/GameStateConfigDesktop.cpp:255
317 msgid "Allow changing gamma"
318 msgstr ""
319
320 #: ../../../src/GameStateConfigDesktop.cpp:259
321 msgid "Gamma"
322 msgstr ""
323
324 #: ../../../src/GameStateConfigDesktop.cpp:263
325 msgid "Use joystick"
326 msgstr ""
327
328 #: ../../../src/GameStateConfigDesktop.cpp:267
329 msgid "Joystick"
330 msgstr ""
331
332 #: ../../../src/GameStateConfigDesktop.cpp:283
333 msgid "Mouse aim"
334 msgstr ""
335
336 #: ../../../src/GameStateConfigDesktop.cpp:287
337 msgid "Do not use mouse"
338 msgstr ""
339
340 #: ../../../src/GameStateConfigDesktop.cpp:291
341 msgid "Joystick Deadzone"
342 msgstr ""
343
344 #: ../../../src/GameState.cpp:37 ../../../src/GameState.cpp:58
345 msgid "Loading..."
346 msgstr ""
347
348 #: ../../../src/GameStateLoad.cpp:88 ../../../src/GameStateLoad.cpp:101
349 msgid "Delete Save"
350 msgstr "Zmazať Pozíciu"
351
352 #: ../../../src/GameStateLoad.cpp:88
353 msgid "Delete this save?"
354 msgstr "Zmazať túto pozíciu?"
355
356 #: ../../../src/GameStateLoad.cpp:90
357 msgid "Exit to Title"
358 msgstr "Návrat na úvod"
359
360 #: ../../../src/GameStateLoad.cpp:93
361 msgid "New Game"
362 msgstr "Nová Hra"
363
364 #: ../../../src/GameStateLoad.cpp:97 ../../../src/GameStateLoad.cpp:600
365 msgid "Choose a Slot"
366 msgstr "Vyber priečinok"
367
368 #: ../../../src/GameStateLoad.cpp:573 ../../../src/GameStateLoad.cpp:594
369 msgid "Enable a story mod to continue"
370 msgstr ""
371
372 #: ../../../src/GameStateLoad.cpp:589
373 msgid "Load Game"
374 msgstr "Nahraj Hru"
375
376 #: ../../../src/GameStateLoad.cpp:695
377 msgid "Entering game world..."
378 msgstr "Vstupuješ do sveta hry..."
379
380 #: ../../../src/GameStateLoad.cpp:698
381 msgid "Loading saved game..."
382 msgstr "Nahrávam uloženú hru..."
383
384 #: ../../../src/GameStateLoad.cpp:731
385 msgid "Invalid save"
386 msgstr ""
387
388 #: ../../../src/GameStateLoad.cpp:755 ../../../src/ItemManager.cpp:747
389 #: ../../../src/MenuPowers.cpp:778 ../../../src/MenuPowers.cpp:1144
390 #: ../../../src/MenuPowers.cpp:1542
391 #, c-format
392 msgid "Level %d"
393 msgstr "Stupeň %d"
394
395 #: ../../../src/GameStateNew.cpp:68
396 msgid "Create"
397 msgstr ""
398
399 #: ../../../src/GameStateNew.cpp:76
400 msgid "Randomize"
401 msgstr ""
402
403 #: ../../../src/GameStateNew.cpp:92
404 msgid "Choose a Portrait"
405 msgstr "Vyber si Vzhľad"
406
407 #: ../../../src/GameStateNew.cpp:96
408 msgid "Choose a Name"
409 msgstr "Vyber si Meno"
410
411 #: ../../../src/GameStateNew.cpp:100
412 msgid "Permadeath?"
413 msgstr ""
414
415 #: ../../../src/GameStateNew.cpp:104
416 msgid "Choose a Class"
417 msgstr ""
418
419 #: ../../../src/GameStateTitle.cpp:108
420 msgid "Play Game"
421 msgstr "Hrať Hru"
422
423 #: ../../../src/GameStateTitle.cpp:111
424 msgid "Enable a core mod to continue"
425 msgstr ""
426
427 #: ../../../src/GameStateTitle.cpp:115
428 msgid "Configuration"
429 msgstr ""
430
431 #: ../../../src/GameStateTitle.cpp:118
432 msgid "Credits"
433 msgstr ""
434
435 #: ../../../src/GameStateTitle.cpp:121
436 msgid "Exit Game"
437 msgstr "Ukončiť Hru"
438
439 #: ../../../src/InputState.cpp:402
440 msgid "Accept"
441 msgstr ""
442
443 #: ../../../src/InputState.cpp:403 ../../../src/SDLInputState.cpp:607
444 msgid "Up"
445 msgstr ""
446
447 #: ../../../src/InputState.cpp:404 ../../../src/SDLInputState.cpp:585
448 msgid "Down"
449 msgstr ""
450
451 #: ../../../src/InputState.cpp:405 ../../../src/SDLInputState.cpp:592
452 msgid "Left"
453 msgstr ""
454
455 #: ../../../src/InputState.cpp:406 ../../../src/SDLInputState.cpp:602
456 msgid "Right"
457 msgstr ""
458
459 #: ../../../src/InputState.cpp:407
460 msgid "Bar1"
461 msgstr ""
462
463 #: ../../../src/InputState.cpp:408
464 msgid "Bar2"
465 msgstr ""
466
467 #: ../../../src/InputState.cpp:409
468 msgid "Bar3"
469 msgstr ""
470
471 #: ../../../src/InputState.cpp:410
472 msgid "Bar4"
473 msgstr ""
474
475 #: ../../../src/InputState.cpp:411
476 msgid "Bar5"
477 msgstr ""
478
479 #: ../../../src/InputState.cpp:412
480 msgid "Bar6"
481 msgstr ""
482
483 #: ../../../src/InputState.cpp:413
484 msgid "Bar7"
485 msgstr ""
486
487 #: ../../../src/InputState.cpp:414
488 msgid "Bar8"
489 msgstr ""
490
491 #: ../../../src/InputState.cpp:415
492 msgid "Bar9"
493 msgstr ""
494
495 #: ../../../src/InputState.cpp:416
496 msgid "Bar0"
497 msgstr ""
498
499 #: ../../../src/InputState.cpp:417 ../../../src/MenuActionBar.cpp:83
500 #: ../../../src/MenuCharacter.cpp:54
501 msgid "Character"
502 msgstr "Postava"
503
504 #: ../../../src/InputState.cpp:418 ../../../src/MenuActionBar.cpp:84
505 #: ../../../src/MenuInventory.cpp:137 ../../../src/MenuVendor.cpp:57
506 msgid "Inventory"
507 msgstr "Vrecká"
508
509 #: ../../../src/InputState.cpp:419 ../../../src/MenuActionBar.cpp:85
510 #: ../../../src/MenuPowers.cpp:168
511 msgid "Powers"
512 msgstr "Sily"
513
514 #: ../../../src/InputState.cpp:420 ../../../src/MenuActionBar.cpp:86
515 #: ../../../src/MenuLog.cpp:72
516 msgid "Log"
517 msgstr "Poznámky"
518
519 #: ../../../src/InputState.cpp:421
520 msgid "Main1"
521 msgstr ""
522
523 #: ../../../src/InputState.cpp:422
524 msgid "Main2"
525 msgstr ""
526
527 #: ../../../src/InputState.cpp:423
528 msgid "Ctrl"
529 msgstr ""
530
531 #: ../../../src/InputState.cpp:424
532 msgid "Shift"
533 msgstr ""
534
535 #: ../../../src/InputState.cpp:425
536 msgid "Alt"
537 msgstr ""
538
539 #: ../../../src/InputState.cpp:426 ../../../src/SDLInputState.cpp:584
540 msgid "Delete"
541 msgstr ""
542
543 #: ../../../src/InputState.cpp:427
544 msgid "ActionBar Accept"
545 msgstr ""
546
547 #: ../../../src/InputState.cpp:428
548 msgid "ActionBar Left"
549 msgstr ""
550
551 #: ../../../src/InputState.cpp:429
552 msgid "ActionBar Right"
553 msgstr ""
554
555 #: ../../../src/InputState.cpp:430
556 msgid "ActionBar Use"
557 msgstr ""
558
559 #: ../../../src/InputState.cpp:431
560 msgid "Developer Menu"
561 msgstr ""
562
563 #: ../../../src/InputState.cpp:433
564 msgid "Left Mouse"
565 msgstr ""
566
567 #: ../../../src/InputState.cpp:434
568 msgid "Middle Mouse"
569 msgstr ""
570
571 #: ../../../src/InputState.cpp:435
572 msgid "Right Mouse"
573 msgstr ""
574
575 #: ../../../src/InputState.cpp:436
576 msgid "Wheel Up"
577 msgstr ""
578
579 #: ../../../src/InputState.cpp:437
580 msgid "Wheel Down"
581 msgstr ""
582
583 #: ../../../src/InputState.cpp:438
584 msgid "Mouse X1"
585 msgstr ""
586
587 #: ../../../src/InputState.cpp:439
588 msgid "Mouse X2"
589 msgstr ""
590
591 #: ../../../src/ItemManager.cpp:450 ../../../src/ItemManager.cpp:453
592 msgid "Unknown Item"
593 msgstr ""
594
595 #: ../../../src/ItemManager.cpp:648 ../../../src/MenuPowers.cpp:887
596 #, c-format
597 msgid "%d%% Speed"
598 msgstr ""
599
600 #: ../../../src/ItemManager.cpp:652 ../../../src/MenuPowers.cpp:890
601 #, c-format
602 msgid "%d%% Attack Speed"
603 msgstr ""
604
605 #: ../../../src/ItemManager.cpp:674 ../../../src/MenuCharacter.cpp:354
606 #: ../../../src/MenuPowers.cpp:833
607 #, c-format
608 msgid "Resistance (%s)"
609 msgstr ""
610
611 #: ../../../src/ItemManager.cpp:684
612 #, c-format
613 msgid "Requires %s"
614 msgstr ""
615
616 #: ../../../src/ItemManager.cpp:733
617 msgid "Quest Item"
618 msgstr "Hľadaná Vec"
619
620 #: ../../../src/ItemManager.cpp:760
621 #, c-format
622 msgid "Quality: %s"
623 msgstr ""
624
625 #: ../../../src/ItemManager.cpp:785
626 #, c-format
627 msgid "Absorb: %d-%d"
628 msgstr "Pohlť: %d-%d"
629
630 #: ../../../src/ItemManager.cpp:787
631 #, c-format
632 msgid "Absorb: %d"
633 msgstr "Pohlť: %d"
634
635 #: ../../../src/ItemManager.cpp:827 ../../../src/MenuPowers.cpp:1131
636 #: ../../../src/MenuPowers.cpp:1134
637 #, c-format
638 msgid "Requires Level %d"
639 msgstr ""
640
641 #: ../../../src/ItemManager.cpp:838 ../../../src/MenuPowers.cpp:1123
642 #: ../../../src/MenuPowers.cpp:1125
643 #, c-format
644 msgid "Requires %s %d"
645 msgstr ""
646
647 #: ../../../src/ItemManager.cpp:849
648 #, c-format
649 msgid "Requires Class: %s"
650 msgstr ""
651
652 #: ../../../src/ItemManager.cpp:864 ../../../src/ItemManager.cpp:876
653 #, c-format
654 msgid "Buy Price: %d %s"
655 msgstr ""
656
657 #: ../../../src/ItemManager.cpp:866 ../../../src/ItemManager.cpp:878
658 #, c-format
659 msgid "Buy Price: %d %s each"
660 msgstr ""
661
662 #: ../../../src/ItemManager.cpp:886
663 #, c-format
664 msgid "Sell Price: %d %s"
665 msgstr ""
666
667 #: ../../../src/ItemManager.cpp:888
668 #, c-format
669 msgid "Sell Price: %d %s each"
670 msgstr ""
671
672 #: ../../../src/ItemManager.cpp:897
673 msgid "Set:"
674 msgstr ""
675
676 #: ../../../src/ItemManager.cpp:904
677 #, c-format
678 msgid "%d items:"
679 msgstr ""
680
681 #: ../../../src/ItemManager.cpp:917
682 #, c-format
683 msgid "Press [%s] to use"
684 msgstr ""
685
686 #: ../../../src/ItemManager.cpp:920
687 #, c-format
688 msgid "Press [%s] to read"
689 msgstr ""
690
691 #: ../../../src/MenuActionBar.cpp:87
692 msgid "Loot tooltip visibility"
693 msgstr ""
694
695 #: ../../../src/MenuActionBar.cpp:88
696 msgid "Mini-map mode"
697 msgstr ""
698
699 #: ../../../src/MenuActionBar.cpp:89
700 msgid "Always show stat bar labels"
701 msgstr ""
702
703 #: ../../../src/MenuActionBar.cpp:90
704 msgid "Show combat text"
705 msgstr ""
706
707 #: ../../../src/MenuActionBar.cpp:254 ../../../src/MenuActionBar.cpp:261
708 #: ../../../src/MenuActionBar.cpp:264 ../../../src/MenuActionBar.cpp:271
709 #, c-format
710 msgid "Hotkey: %s"
711 msgstr ""
712
713 #: ../../../src/MenuActionBar.cpp:474
714 #, c-format
715 msgid "Default. Temporarily show all loot tooltips with '%s'."
716 msgstr ""
717
718 #: ../../../src/MenuActionBar.cpp:476
719 #, c-format
720 msgid "Show All. Temporarily hide all loot tooltips with '%s'."
721 msgstr ""
722
723 #: ../../../src/MenuActionBar.cpp:478
724 #, c-format
725 msgid "Hide All. Temporarily show all loot tooltips with '%s'."
726 msgstr ""
727
728 #: ../../../src/MenuActionBar.cpp:482
729 msgid "Visible"
730 msgstr ""
731
732 #: ../../../src/MenuActionBar.cpp:484
733 msgid "Visible (2x zoom)"
734 msgstr ""
735
736 #: ../../../src/MenuActionBar.cpp:486
737 msgid "Hidden"
738 msgstr ""
739
740 #: ../../../src/MenuActionBar.cpp:490 ../../../src/MenuActionBar.cpp:496
741 msgid "Enabled"
742 msgstr ""
743
744 #: ../../../src/MenuActionBar.cpp:492 ../../../src/MenuActionBar.cpp:498
745 msgid "Disabled"
746 msgstr ""
747
748 #: ../../../src/MenuActionBar.cpp:657
749 msgid "Not enough MP."
750 msgstr ""
751
752 #: ../../../src/MenuActiveEffects.cpp:124
753 #, c-format
754 msgid "x%d"
755 msgstr ""
756
757 #: ../../../src/MenuActiveEffects.cpp:219
758 msgid "Remaining:"
759 msgstr ""
760
761 #: ../../../src/MenuActiveEffects.cpp:225
762 #, c-format
763 msgid "x%d stacks"
764 msgstr ""
765
766 #: ../../../src/MenuCharacter.cpp:73 ../../../src/MenuCharacter.cpp:78
767 msgid "Name"
768 msgstr "Meno"
769
770 #: ../../../src/MenuCharacter.cpp:74 ../../../src/MenuCharacter.cpp:79
771 msgid "Level"
772 msgstr "Stupeň"
773
774 #: ../../../src/MenuCharacter.cpp:310
775 #, c-format
776 msgid "%d unspent stat point"
777 msgstr ""
778
779 #: ../../../src/MenuCharacter.cpp:313
780 #, c-format
781 msgid "%d unspent stat points"
782 msgstr ""
783
784 #: ../../../src/MenuCharacter.cpp:355
785 #, c-format
786 msgid "Reduces the damage taken from \"%s\" elemental attacks."
787 msgstr ""
788
789 #: ../../../src/MenuCharacter.cpp:365 ../../../src/MenuManager.cpp:283
790 #, c-format
791 msgid "XP: %d"
792 msgstr "XP: %d"
793
794 #: ../../../src/MenuCharacter.cpp:367
795 #, c-format
796 msgid "Next: %d"
797 msgstr "Nasl.: %d"
798
799 #: ../../../src/MenuCharacter.cpp:373
800 #, c-format
801 msgid "base (%d), bonus (%d)"
802 msgstr "základ (%d), bonus (%d)"
803
804 #: ../../../src/MenuCharacter.cpp:381 ../../../src/MenuCharacter.cpp:395
805 msgid "Related stats:"
806 msgstr ""
807
808 #: ../../../src/MenuCharacter.cpp:421 ../../../src/MenuCharacter.cpp:445
809 #, c-format
810 msgid "Each level grants %d."
811 msgstr ""
812
813 #: ../../../src/MenuCharacter.cpp:425 ../../../src/MenuCharacter.cpp:449
814 #, c-format
815 msgid "Each point of %s grants %d."
816 msgstr ""
817
818 #: ../../../src/MenuDevConsole.cpp:63
928 "Povolí paralaxné (nedlaždicové) vrstvy. Zakázaním tohto nastavenia môžete v "
929 "niektorých prípadoch zlepšiť výkon."
930
931 #: ../../../src/MenuConfig.cpp:515
932 msgid ""
933 "Enables the below setting that controls the screen gamma level. The behavior"
934 " of the gamma setting can vary between platforms."
935 msgstr ""
936 "Povolí nižšie uvedené nastavenie, ktoré ovláda hodnotu gama obrazovky. "
937 "Správanie nastavenia gama sa môže líšiť v závislosti od platformy."
938
939 #: ../../../src/MenuConfig.cpp:516
940 msgid ""
941 "Provides additional text for information that is primarily conveyed through "
942 "color."
943 msgstr ""
944 "Poskytne doplnkové texty pre informácie, ktoré sú vyjadrené hlavne farbami."
945
946 #: ../../../src/MenuConfig.cpp:517
947 msgid ""
948 "Some mods will automatically hide the stat bars when they are inactive. "
949 "Disabling this option will keep them displayed at all times."
950 msgstr ""
951 "Niektoré modifikácie automaticky skrývajú indikátory charakteristík, keď "
952 "neprejavujú aktivitu. Zakázaním tejto možnosti sa budú zobrazovať vždy."
953
954 #: ../../../src/MenuConfig.cpp:518
955 msgid ""
956 "When enabled, empty equipment slots will be filled with applicable items "
957 "when they are obtained."
958 msgstr ""
959 "Ak je toto nastavenie povolené, získanie vhodných predmetov automaticky "
960 "obsadí prázdne pozície výstroje."
961
962 #: ../../../src/MenuConfig.cpp:519
963 msgid ""
964 "Shows a marker above enemies, allies, and the player when they are obscured "
965 "by tall objects."
966 msgstr ""
967
968 #: ../../../src/MenuConfig.cpp:520
969 msgid ""
970 "When enabled, tooltips for equipped items of the same type are shown next to"
971 " standard item tooltips."
972 msgstr ""
973
974 #: ../../../src/MenuConfig.cpp:521
975 msgid ""
976 "This allows the game to be controlled entirely with the keyboard (or "
977 "joystick)."
978 msgstr "Umožní ovládať hru výlučne pomocou klávesnice (alebo joysticku)."
979
980 #: ../../../src/MenuConfig.cpp:522
981 msgid ""
982 "When 'Move hero using mouse' is enabled, this setting controls if 'Main1' or"
983 " 'Main2' is used to move the hero. If enabled, 'Main2' will move the hero "
984 "instead of 'Main1'."
985 msgstr ""
986
987 #: ../../../src/MenuConfig.cpp:523
988 msgid ""
989 "When 'Move hero using mouse' is enabled, this setting controls if the Power "
990 "assigned to the movement button can be used by targeting an enemy. If this "
991 "setting is disabled, it is required to use 'Shift' to access the Power "
992 "assigned to the movement button."
993 msgstr ""
994
995 #: ../../../src/MenuConfig.cpp:524
996 msgid ""
997 "The player's attacks will be aimed in the direction of the mouse cursor when"
998 " this is enabled."
999 msgstr ""
1000 "Ak je toto nastavenie povolené, útoky hráča budú mierené smerom ku kurzoru "
1001 "myši."
1002
1003 #: ../../../src/MenuConfig.cpp:575
1004 msgid "Active Mods"
1005 msgstr "Aktívne modifikácie"
1006
1007 #: ../../../src/MenuConfig.cpp:584
1008 msgid "Available Mods"
1009 msgstr "Dostupné modifikácie"
1010
1011 #: ../../../src/MenuConfig.cpp:603
1012 msgid "<< Disable"
1013 msgstr "<< Zakázať"
1014
1015 #: ../../../src/MenuConfig.cpp:609
1016 msgid "Enable >>"
1017 msgstr "Povoliť >>"
1018
1019 #: ../../../src/MenuConfig.cpp:1444
1020 msgid "Version:"
1021 msgstr "Verzia:"
1022
1023 #: ../../../src/MenuConfig.cpp:1449
1024 msgid "Game:"
1025 msgstr "Hra:"
1026
1027 #: ../../../src/MenuConfig.cpp:1454
1028 msgid "Engine version:"
1029 msgstr "Verzia jadra:"
1030
1031 #: ../../../src/MenuConfig.cpp:1462
1032 msgid "Requires mods:"
1033 msgstr "Požadované modifikácie:"
1034
1035 #: ../../../src/MenuConfig.cpp:1570 ../../../src/SDLInputState.cpp:748
1036 msgid "(none)"
1037 msgstr ""
1038
1039 #: ../../../src/MenuConfig.cpp:1587 ../../../src/MenuGameOver.cpp:73
1040 msgid "Save & Exit"
1041 msgstr "Uložiť a ukončiť"
1042
1043 #: ../../../src/MenuDevConsole.cpp:65
8191044 msgid "Execute"
820 msgstr ""
821
822 #: ../../../src/MenuDevConsole.cpp:101 ../../../src/MenuDevConsole.cpp:151
1045 msgstr "Vykonať"
1046
1047 #: ../../../src/MenuDevConsole.cpp:103 ../../../src/MenuDevConsole.cpp:153
8231048 msgid "Developer Console"
824 msgstr ""
825
826 #: ../../../src/MenuDevConsole.cpp:141
1049 msgstr "Vývojárska konzola"
1050
1051 #: ../../../src/MenuDevConsole.cpp:143
8271052 #, c-format
8281053 msgid "Use '%s' to inspect with the cursor."
829 msgstr ""
830
831 #: ../../../src/MenuDevConsole.cpp:146
1054 msgstr "‚%s‘ preskúma miesto, na ktorom je kurzor."
1055
1056 #: ../../../src/MenuDevConsole.cpp:148
8321057 msgid "Arguments with spaces should be enclosed with double quotes. Example:"
8331058 msgstr ""
834
835 #: ../../../src/MenuDevConsole.cpp:147
1059 "Argumenty obsahujúce medzery by mali byť uzavreté v dvojitých úvodzovkách. "
1060 "Napríklad:"
1061
1062 #: ../../../src/MenuDevConsole.cpp:149
8361063 msgid "Type 'help' to get a list of commands."
837 msgstr ""
838
839 #: ../../../src/MenuDevConsole.cpp:209 ../../../src/MenuDevConsole.cpp:213
1064 msgstr "Ak chetete získať zoznam príkazov, napíšte ‚help‘."
1065
1066 #: ../../../src/MenuDevConsole.cpp:211 ../../../src/MenuDevConsole.cpp:215
8401067 msgid "px"
841 msgstr ""
842
843 #: ../../../src/MenuDevConsole.cpp:224
1068 msgstr "px"
1069
1070 #: ../../../src/MenuDevConsole.cpp:226
8441071 msgid "Distance"
845 msgstr ""
846
847 #: ../../../src/MenuDevConsole.cpp:239 ../../../src/MenuDevConsole.cpp:286
1072 msgstr "Vzdialenosť"
1073
1074 #: ../../../src/MenuDevConsole.cpp:241 ../../../src/MenuDevConsole.cpp:289
1075 #: ../../../src/MenuDevConsole.cpp:303
8481076 msgid "Entity"
849 msgstr ""
850
851 #: ../../../src/MenuDevConsole.cpp:261 ../../../src/MenuDevConsole.cpp:268
1077 msgstr "Entita"
1078
1079 #: ../../../src/MenuDevConsole.cpp:263 ../../../src/MenuDevConsole.cpp:270
8521080 msgid "none"
853 msgstr ""
854
855 #: ../../../src/MenuDevConsole.cpp:262 ../../../src/MenuDevConsole.cpp:264
1081 msgstr "žiadna"
1082
1083 #: ../../../src/MenuDevConsole.cpp:264 ../../../src/MenuDevConsole.cpp:266
8561084 msgid "wall"
857 msgstr ""
858
859 #: ../../../src/MenuDevConsole.cpp:263 ../../../src/MenuDevConsole.cpp:265
1085 msgstr "stena"
1086
1087 #: ../../../src/MenuDevConsole.cpp:265 ../../../src/MenuDevConsole.cpp:267
8601088 msgid "short wall / pit"
861 msgstr ""
862
863 #: ../../../src/MenuDevConsole.cpp:266
1089 msgstr "nízka stena / priepasť"
1090
1091 #: ../../../src/MenuDevConsole.cpp:268
8641092 msgid "entity"
865 msgstr ""
866
867 #: ../../../src/MenuDevConsole.cpp:267
1093 msgstr "entita"
1094
1095 #: ../../../src/MenuDevConsole.cpp:269
8681096 msgid "entity, ally"
869 msgstr ""
870
871 #: ../../../src/MenuDevConsole.cpp:274
1097 msgstr "entita, spojenecká"
1098
1099 #: ../../../src/MenuDevConsole.cpp:276
8721100 msgid "Tile"
873 msgstr ""
874
875 #: ../../../src/MenuDevConsole.cpp:360
1101 msgstr "Dlaždica"
1102
1103 #: ../../../src/MenuDevConsole.cpp:377
8761104 msgid "adds a power to the action bar"
877 msgstr ""
878
879 #: ../../../src/MenuDevConsole.cpp:361
1105 msgstr "pridá silu do panelu akcií"
1106
1107 #: ../../../src/MenuDevConsole.cpp:378
8801108 msgid "turns on/off the display of the FPS counter"
881 msgstr ""
882
883 #: ../../../src/MenuDevConsole.cpp:362
1109 msgstr "vypne/zapne zobrazovanie počítadla FPS"
1110
1111 #: ../../../src/MenuDevConsole.cpp:379
8841112 msgid "turns on/off all of the HUD elements"
885 msgstr ""
886
887 #: ../../../src/MenuDevConsole.cpp:363
1113 msgstr "vypne/zapne všetky elementy HUD"
1114
1115 #: ../../../src/MenuDevConsole.cpp:380
8881116 msgid "turns on/off the developer hud"
889 msgstr ""
890
891 #: ../../../src/MenuDevConsole.cpp:364
1117 msgstr "vypne/zapne HUD pre vývojárov"
1118
1119 #: ../../../src/MenuDevConsole.cpp:381
8921120 msgid ""
8931121 "Prints a list of powers that match a search term. No search term will list "
8941122 "all items"
8951123 msgstr ""
896
897 #: ../../../src/MenuDevConsole.cpp:365
1124 "Vypíše zoznam síl, ktoré zodpovedajú hľadanému výrazu. Neexistuje hľadaný "
1125 "výraz, ktorý by ich vymenoval všetky"
1126
1127 #: ../../../src/MenuDevConsole.cpp:382
8981128 msgid "Prints out all the map filenames located in the \"maps/\" directory."
899 msgstr ""
900
901 #: ../../../src/MenuDevConsole.cpp:366
1129 msgstr "Vypíše všetky názvy súborov máp umiestnených v adresári „maps/“."
1130
1131 #: ../../../src/MenuDevConsole.cpp:383
9021132 msgid ""
9031133 "Prints out the active campaign statuses that match a search term. No search "
9041134 "term will list all active statuses"
9051135 msgstr ""
9061136
907 #: ../../../src/MenuDevConsole.cpp:367
1137 #: ../../../src/MenuDevConsole.cpp:384
9081138 msgid ""
9091139 "Prints a list of items that match a search term. No search term will list "
9101140 "all items"
9111141 msgstr ""
912
913 #: ../../../src/MenuDevConsole.cpp:368
1142 "Vypíše zoznam predmetov, ktoré zodpovedajú hľadanému výrazu. Neexistuje "
1143 "hľadaný výraz, ktorý by vymenoval všetky predmety"
1144
1145 #: ../../../src/MenuDevConsole.cpp:385
9141146 msgid ""
9151147 "parses a series of event components and executes them as a single event"
9161148 msgstr ""
9171149
918 #: ../../../src/MenuDevConsole.cpp:369
1150 #: ../../../src/MenuDevConsole.cpp:386
9191151 msgid "clears the command history"
920 msgstr ""
921
922 #: ../../../src/MenuDevConsole.cpp:370
1152 msgstr "vymaže históriu príkazov"
1153
1154 #: ../../../src/MenuDevConsole.cpp:387
9231155 msgid "displays this text"
924 msgstr ""
925
926 #: ../../../src/MenuDevConsole.cpp:377
1156 msgstr "zobrazí tento text"
1157
1158 #: ../../../src/MenuDevConsole.cpp:394
9271159 msgid "Toggled the developer hud"
928 msgstr ""
929
930 #: ../../../src/MenuDevConsole.cpp:381
1160 msgstr "Bolo prepnuté zobrazovanie HUD pre vývojárov"
1161
1162 #: ../../../src/MenuDevConsole.cpp:398
9311163 msgid "Toggled the hud"
932 msgstr ""
933
934 #: ../../../src/MenuDevConsole.cpp:385
1164 msgstr "Bolo prepnuté zobrazovanie HUD"
1165
1166 #: ../../../src/MenuDevConsole.cpp:402
9351167 msgid "Toggled the FPS counter"
936 msgstr ""
937
938 #: ../../../src/MenuDevConsole.cpp:534
1168 msgstr "Bolo prepnuté zobrazovanie počítadla FPS"
1169
1170 #: ../../../src/MenuDevConsole.cpp:552
9391171 msgid "ERROR: Incorrect number of arguments"
940 msgstr ""
941
942 #: ../../../src/MenuDevConsole.cpp:536 ../../../src/MenuDevConsole.cpp:564
1172 msgstr "CHYBA: Nesprávny počet argumentov"
1173
1174 #: ../../../src/MenuDevConsole.cpp:554 ../../../src/MenuDevConsole.cpp:582
9431175 msgid "HINT:"
944 msgstr ""
945
946 #: ../../../src/MenuDevConsole.cpp:536
1176 msgstr "TIP:"
1177
1178 #: ../../../src/MenuDevConsole.cpp:554
9471179 msgid "<id>"
9481180 msgstr ""
9491181
950 #: ../../../src/MenuDevConsole.cpp:552
1182 #: ../../../src/MenuDevConsole.cpp:570
9511183 #, c-format
9521184 msgid "ERROR: '%s' is not a valid event key"
953 msgstr ""
954
955 #: ../../../src/MenuDevConsole.cpp:562
1185 msgstr "CHYBA: „%s“ nie je platný kľúč udalosti"
1186
1187 #: ../../../src/MenuDevConsole.cpp:580
9561188 msgid "ERROR: Too few arguments"
957 msgstr ""
958
959 #: ../../../src/MenuDevConsole.cpp:564
1189 msgstr "CHYBA: Príliš málo argumentov"
1190
1191 #: ../../../src/MenuDevConsole.cpp:582
9601192 msgid "<key>=<val> <key>=<val> ..."
961 msgstr ""
962
963 #: ../../../src/MenuDevConsole.cpp:569
1193 msgstr "<kľúč>=<hodnota> <kľúč>=<hodnota> ..."
1194
1195 #: ../../../src/MenuDevConsole.cpp:587
9641196 msgid "ERROR: Unknown command"
965 msgstr ""
966
967 #: ../../../src/MenuDevConsole.cpp:571
1197 msgstr "CHYBA: Neznámy príkaz"
1198
1199 #: ../../../src/MenuDevConsole.cpp:589
9681200 msgid "HINT: Type help"
969 msgstr ""
970
971 #: ../../../src/MenuEnemy.cpp:138
1201 msgstr "TIP: Napíšte help"
1202
1203 #: ../../../src/MenuEnemy.cpp:162
9721204 #, c-format
9731205 msgid "%s level %d"
9741206 msgstr "%s stupeň %d"
9751207
976 #: ../../../src/MenuEnemy.cpp:162
1208 #: ../../../src/MenuEnemy.cpp:186
9771209 msgid "Dead"
9781210 msgstr "Mŕtvy"
9791211
980 #: ../../../src/MenuEnemy.cpp:164
1212 #: ../../../src/MenuEnemy.cpp:188
9811213 msgid "Destroyed"
9821214 msgstr ""
9831215
984 #: ../../../src/MenuExit.cpp:85 ../../../src/MenuExit.cpp:139
985 msgid "Paused"
986 msgstr ""
987
988 #: ../../../src/MenuExit.cpp:91
989 msgid "Save & Exit"
990 msgstr ""
991
992 #: ../../../src/MenuExit.cpp:92
993 msgid "Exit"
994 msgstr "Ukonči"
995
996 #: ../../../src/MenuExit.cpp:96
997 msgid "Continue"
998 msgstr ""
999
1000 #: ../../../src/MenuInventory.cpp:73
1001 msgid "Automatically equip items"
1002 msgstr ""
1003
1004 #: ../../../src/MenuInventory.cpp:188
1216 #: ../../../src/MenuGameOver.cpp:69
1217 msgid "Game Over"
1218 msgstr ""
1219
1220 #: ../../../src/MenuInventory.cpp:178
10051221 #, c-format
10061222 msgid "Lost %d%% of %s."
1007 msgstr ""
1008
1009 #: ../../../src/MenuInventory.cpp:195
1223 msgstr "Stratili ste %d %% z %s."
1224
1225 #: ../../../src/MenuInventory.cpp:185
10101226 #, c-format
10111227 msgid "Lost %d%% of total XP."
1012 msgstr ""
1013
1014 #: ../../../src/MenuInventory.cpp:200
1228 msgstr "Stratili ste %d %% z celkového XP."
1229
1230 #: ../../../src/MenuInventory.cpp:190
10151231 #, c-format
10161232 msgid "Lost %d%% of current level XP."
1017 msgstr ""
1018
1019 #: ../../../src/MenuInventory.cpp:226
1233 msgstr "Stratili ste %d %% z XP aktuálnej úrovne."
1234
1235 #: ../../../src/MenuInventory.cpp:216
10201236 #, c-format
10211237 msgid "Lost %s."
10221238 msgstr ""
10231239
1024 #: ../../../src/MenuInventory.cpp:274 ../../../src/MenuStash.cpp:146
1240 #: ../../../src/MenuInventory.cpp:258 ../../../src/MenuStash.cpp:276
10251241 #, c-format
10261242 msgid "%d %s"
10271243 msgstr ""
10281244
1029 #: ../../../src/MenuInventory.cpp:317
1245 #: ../../../src/MenuInventory.cpp:301
10301246 msgid "Pick up item(s):"
1031 msgstr ""
1032
1033 #: ../../../src/MenuInventory.cpp:318
1247 msgstr "Zobratie predmetu/-ov:"
1248
1249 #: ../../../src/MenuInventory.cpp:302
10341250 msgid "Use or equip item:"
1035 msgstr ""
1036
1037 #: ../../../src/MenuInventory.cpp:319
1251 msgstr "Použitie alebo vystrojenie predmetom:"
1252
1253 #: ../../../src/MenuInventory.cpp:303
10381254 #, c-format
10391255 msgid "%s modifiers"
1040 msgstr ""
1041
1042 #: ../../../src/MenuInventory.cpp:320
1256 msgstr "Modifikátory pre %s"
1257
1258 #: ../../../src/MenuInventory.cpp:304
10431259 msgid "Select a quantity of item:"
1044 msgstr ""
1045
1046 #: ../../../src/MenuInventory.cpp:323
1260 msgstr "Výber množstva predmetu:"
1261
1262 #: ../../../src/MenuInventory.cpp:307
10471263 msgid "Stash item stack:"
1048 msgstr ""
1049
1050 #: ../../../src/MenuInventory.cpp:325
1264 msgstr "Uschovanie hromady predmetov:"
1265
1266 #: ../../../src/MenuInventory.cpp:309
10511267 msgid "Sell item stack:"
1052 msgstr ""
1053
1054 #: ../../../src/MenuInventory.cpp:592
1268 msgstr "Predaj hromady predmetov:"
1269
1270 #: ../../../src/MenuInventory.cpp:576
10551271 msgid "You don't have enough of the required item."
1056 msgstr ""
1057
1058 #: ../../../src/MenuInventory.cpp:599
1272 msgstr "Nemáte dostatočné množstvo vyžadovaného predmetu."
1273
1274 #: ../../../src/MenuInventory.cpp:588
10591275 msgid "You can't use this item right now."
1060 msgstr ""
1061
1062 #: ../../../src/MenuInventory.cpp:611
1276 msgstr "Tento predmet nemožno momentálne použiť."
1277
1278 #: ../../../src/MenuInventory.cpp:600
10631279 msgid "This item can only be used from the action bar."
1064 msgstr "Tento predmet môžeš použiť iba z pruhu akcií."
1065
1066 #: ../../../src/MenuInventory.cpp:729
1280 msgstr "Tento predmet možno použiť iba z panelu akcií."
1281
1282 #: ../../../src/MenuInventory.cpp:718
10671283 msgid "Inventory is full."
1068 msgstr "Vrecká sú plné."
1069
1070 #: ../../../src/MenuInventory.cpp:849
1284 msgstr "Inventár je plný."
1285
1286 #: ../../../src/MenuInventory.cpp:843
10711287 #, c-format
10721288 msgid "Not enough %s."
1073 msgstr ""
1074
1075 #: ../../../src/MenuInventory.cpp:869 ../../../src/MenuInventory.cpp:876
1289 msgstr "Nedostatok %s."
1290
1291 #: ../../../src/MenuInventory.cpp:863 ../../../src/MenuInventory.cpp:870
10761292 msgid "This item can not be sold."
1077 msgstr ""
1293 msgstr "Tento predmet nemožno predať."
10781294
10791295 #: ../../../src/MenuLog.cpp:91
10801296 msgid "Notes"
1081 msgstr ""
1297 msgstr "Poznámky"
10821298
10831299 #: ../../../src/MenuLog.cpp:92
10841300 msgid "Quests"
10851301 msgstr "Úlohy"
10861302
1087 #: ../../../src/MenuManager.cpp:286
1303 #: ../../../src/MenuManager.cpp:305
10881304 #, c-format
10891305 msgid "XP: %d/%d"
10901306 msgstr "XP: %d/%d"
10911307
1092 #: ../../../src/MenuManager.cpp:827
1308 #: ../../../src/MenuManager.cpp:875
10931309 msgid "This item can not be dropped."
1310 msgstr "Tento predmet nemožno položiť na zem."
1311
1312 #: ../../../src/MenuManager.cpp:1501
1313 msgid "Equipped"
1314 msgstr ""
1315
1316 #: ../../../src/MenuMovementType.cpp:87
1317 msgid "Select a Movement Type"
1318 msgstr ""
1319
1320 #: ../../../src/MenuMovementType.cpp:89
1321 msgid "Can be changed later in the Configuration menu."
1322 msgstr ""
1323
1324 #: ../../../src/MenuMovementType.cpp:92 ../../../src/MenuMovementType.cpp:122
1325 msgid "Keyboard"
1326 msgstr ""
1327
1328 #: ../../../src/MenuMovementType.cpp:93 ../../../src/MenuMovementType.cpp:128
1329 msgid "Mouse"
1330 msgstr ""
1331
1332 #: ../../../src/MenuMovementType.cpp:129
1333 msgid "Button"
10941334 msgstr ""
10951335
10961336 #: ../../../src/MenuNumPicker.cpp:59
10971337 msgid "Enter amount:"
1098 msgstr ""
1099
1100 #: ../../../src/MenuPowers.cpp:787
1338 msgstr "Zadajte množstvo:"
1339
1340 #: ../../../src/MenuPowers.cpp:872
11011341 msgid "Passive"
1102 msgstr ""
1103
1104 #: ../../../src/MenuPowers.cpp:792
1342 msgstr "Pasívna"
1343
1344 #: ../../../src/MenuPowers.cpp:879
11051345 #, c-format
11061346 msgid "Costs %d MP"
11071347 msgstr "Spotrebuje %d MP"
11081348
1109 #: ../../../src/MenuPowers.cpp:796
1349 #: ../../../src/MenuPowers.cpp:883
11101350 #, c-format
11111351 msgid "Costs %d HP"
1112 msgstr ""
1113
1114 #: ../../../src/MenuPowers.cpp:801
1352 msgstr "Spotrebuje %d HP"
1353
1354 #: ../../../src/MenuPowers.cpp:887
11151355 msgid "Cooldown:"
11161356 msgstr ""
11171357
1118 #: ../../../src/MenuPowers.cpp:866 ../../../src/MenuPowers.cpp:869
1358 #: ../../../src/MenuPowers.cpp:938 ../../../src/MenuPowers.cpp:941
11191359 msgid "Damage per second"
1120 msgstr ""
1121
1122 #: ../../../src/MenuPowers.cpp:872 ../../../src/MenuPowers.cpp:875
1360 msgstr "Zranenie za sekundu"
1361
1362 #: ../../../src/MenuPowers.cpp:944 ../../../src/MenuPowers.cpp:947
11231363 msgid "HP per second"
1124 msgstr ""
1125
1126 #: ../../../src/MenuPowers.cpp:878 ../../../src/MenuPowers.cpp:881
1364 msgstr "HP za sekundu"
1365
1366 #: ../../../src/MenuPowers.cpp:950 ../../../src/MenuPowers.cpp:953
11271367 msgid "MP per second"
1128 msgstr ""
1129
1130 #: ../../../src/MenuPowers.cpp:885
1368 msgstr "MP za sekundu"
1369
1370 #: ../../../src/MenuPowers.cpp:957
11311371 msgid "Immobilize"
11321372 msgstr ""
11331373
1134 #: ../../../src/MenuPowers.cpp:893
1374 #: ../../../src/MenuPowers.cpp:965
11351375 msgid "Immunity"
1136 msgstr ""
1137
1138 #: ../../../src/MenuPowers.cpp:896
1376 msgstr "Imunita"
1377
1378 #: ../../../src/MenuPowers.cpp:968
11391379 msgid "Immunity to damage over time"
1140 msgstr ""
1141
1142 #: ../../../src/MenuPowers.cpp:899
1380 msgstr "Imunita voči zraneniu postupom času"
1381
1382 #: ../../../src/MenuPowers.cpp:971
11431383 msgid "Immunity to slow"
1144 msgstr ""
1145
1146 #: ../../../src/MenuPowers.cpp:902
1384 msgstr "Imunita voči spomaleniu"
1385
1386 #: ../../../src/MenuPowers.cpp:974
11471387 msgid "Immunity to stun"
1148 msgstr ""
1149
1150 #: ../../../src/MenuPowers.cpp:905
1388 msgstr "Imunita voči omráčeniu"
1389
1390 #: ../../../src/MenuPowers.cpp:977
11511391 msgid "Immunity to HP steal"
1152 msgstr ""
1153
1154 #: ../../../src/MenuPowers.cpp:908
1392 msgstr "Imunita voči krádeži HP"
1393
1394 #: ../../../src/MenuPowers.cpp:980
11551395 msgid "Immunity to MP steal"
1156 msgstr ""
1157
1158 #: ../../../src/MenuPowers.cpp:911
1396 msgstr "Imunita voči krádeži MP"
1397
1398 #: ../../../src/MenuPowers.cpp:983
11591399 msgid "Immunity to knockback"
1160 msgstr ""
1161
1162 #: ../../../src/MenuPowers.cpp:914
1400 msgstr "Imunita voči odhodeniu"
1401
1402 #: ../../../src/MenuPowers.cpp:986
11631403 msgid "Immunity to damage reflection"
1164 msgstr ""
1165
1166 #: ../../../src/MenuPowers.cpp:917
1404 msgstr "Imunita voči odrazu zranenia"
1405
1406 #: ../../../src/MenuPowers.cpp:992
11671407 msgid "Stun"
1168 msgstr ""
1169
1170 #: ../../../src/MenuPowers.cpp:920
1408 msgstr "Omráčenie"
1409
1410 #: ../../../src/MenuPowers.cpp:995
11711411 msgid "Automatic revive on death"
1172 msgstr ""
1173
1174 #: ../../../src/MenuPowers.cpp:923
1412 msgstr "Automatické oživenie po smrti"
1413
1414 #: ../../../src/MenuPowers.cpp:998
11751415 msgid "Convert"
11761416 msgstr ""
11771417
1178 #: ../../../src/MenuPowers.cpp:926
1418 #: ../../../src/MenuPowers.cpp:1001
11791419 msgid "Fear"
11801420 msgstr ""
11811421
1182 #: ../../../src/MenuPowers.cpp:929
1422 #: ../../../src/MenuPowers.cpp:1004
11831423 msgid "Lifespan"
11841424 msgstr ""
11851425
1186 #: ../../../src/MenuPowers.cpp:953
1426 #: ../../../src/MenuPowers.cpp:1028
11871427 msgid "Magical Shield"
1188 msgstr ""
1189
1190 #: ../../../src/MenuPowers.cpp:982
1428 msgstr "Magický štít"
1429
1430 #: ../../../src/MenuPowers.cpp:1057
11911431 msgid "Healing"
11921432 msgstr ""
11931433
1194 #: ../../../src/MenuPowers.cpp:985
1434 #: ../../../src/MenuPowers.cpp:1060
11951435 msgid "Knockback"
1196 msgstr ""
1197
1198 #: ../../../src/MenuPowers.cpp:1010
1436 msgstr "Odhodenie"
1437
1438 #: ../../../src/MenuPowers.cpp:1084
11991439 #, c-format
12001440 msgid "%d%% chance"
1201 msgstr ""
1202
1203 #: ../../../src/MenuPowers.cpp:1062
1441 msgstr "%d %% šanca"
1442
1443 #: ../../../src/MenuPowers.cpp:1136
12041444 msgid "Base Accuracy"
1205 msgstr ""
1206
1207 #: ../../../src/MenuPowers.cpp:1082
1445 msgstr "Základná presnosť"
1446
1447 #: ../../../src/MenuPowers.cpp:1156
12081448 msgid "Base Critical Chance"
1209 msgstr ""
1210
1211 #: ../../../src/MenuPowers.cpp:1090
1449 msgstr "Základná šanca na kritický zásah"
1450
1451 #: ../../../src/MenuPowers.cpp:1164
12121452 msgid "Ignores Absorbtion"
1213 msgstr ""
1214
1215 #: ../../../src/MenuPowers.cpp:1095
1453 msgstr "Ignoruje pohltenie"
1454
1455 #: ../../../src/MenuPowers.cpp:1169
12161456 msgid "Ignores Avoidance"
1217 msgstr ""
1218
1219 #: ../../../src/MenuPowers.cpp:1100
1457 msgstr "Ignoruje vyhýbanie"
1458
1459 #: ../../../src/MenuPowers.cpp:1174
12201460 #, c-format
12211461 msgid "%d%% Chance to crit slowed targets"
1222 msgstr ""
1223
1224 #: ../../../src/MenuPowers.cpp:1105
1462 msgstr "%d %% šanca kriticky zasiahnuť spomalené ciele"
1463
1464 #: ../../../src/MenuPowers.cpp:1179
12251465 #, c-format
12261466 msgid "Elemental Damage (%s)"
1227 msgstr ""
1228
1229 #: ../../../src/MenuPowers.cpp:1114
1467 msgstr "Živelné zranenie (%s)"
1468
1469 #: ../../../src/MenuPowers.cpp:1188
12301470 #, c-format
12311471 msgid "Requires a %s"
1232 msgstr ""
1233
1234 #: ../../../src/MenuPowers.cpp:1151 ../../../src/MenuPowers.cpp:1154
1472 msgstr "Vyžaduje %s"
1473
1474 #: ../../../src/MenuPowers.cpp:1226 ../../../src/MenuPowers.cpp:1229
12351475 #, c-format
12361476 msgid "Requires Power: %s"
1237 msgstr ""
1238
1239 #: ../../../src/MenuPowers.cpp:1163
1477 msgstr "Vyžaduje silu: %s"
1478
1479 #: ../../../src/MenuPowers.cpp:1238
12401480 msgid "Click to Unlock (uses 1 Skill Point)"
1241 msgstr ""
1242
1243 #: ../../../src/MenuPowers.cpp:1167 ../../../src/MenuPowers.cpp:1169
1481 msgstr "Odomknete kliknutím (použije 1 bod zručnosti)"
1482
1483 #: ../../../src/MenuPowers.cpp:1242 ../../../src/MenuPowers.cpp:1244
12441484 msgid "Requires 1 Skill Point"
1245 msgstr ""
1246
1247 #: ../../../src/MenuPowers.cpp:1355
1248 #, c-format
1249 msgid "%d unspent skill point"
1250 msgstr ""
1251
1252 #: ../../../src/MenuPowers.cpp:1358
1253 #, c-format
1254 msgid "%d unspent skill points"
1255 msgstr ""
1256
1257 #: ../../../src/MenuPowers.cpp:1388
1485 msgstr "Vyžaduje 1 bod zručnosti"
1486
1487 #: ../../../src/MenuPowers.cpp:1444
1488 #, c-format
1489 msgid "Available skill points: %d"
1490 msgstr ""
1491
1492 #: ../../../src/MenuPowers.cpp:1476
12581493 msgid "Next Level:"
1259 msgstr ""
1260
1261 #: ../../../src/MenuStash.cpp:96
1262 msgid "Shared Stash"
1263 msgstr ""
1264
1265 #: ../../../src/MenuStash.cpp:209
1266 msgid "Can not store quest items in the stash."
1267 msgstr ""
1268
1269 #: ../../../src/MenuStash.cpp:219
1494 msgstr "Ďalšia úroveň:"
1495
1496 #: ../../../src/MenuStash.cpp:80 ../../../src/MenuStash.cpp:161
1497 msgid "Stash"
1498 msgstr "Úložisko"
1499
1500 #: ../../../src/MenuStash.cpp:174 ../../../src/MenuStash.cpp:188
1501 msgid "Private"
1502 msgstr "Súkromné"
1503
1504 #: ../../../src/MenuStash.cpp:175
1505 msgid "Shared"
1506 msgstr "Zdieľané"
1507
1508 #: ../../../src/MenuStash.cpp:340
1509 msgid "This item can not be stored in the stash."
1510 msgstr "Tento predmet nemožno vložiť do úložiska."
1511
1512 #: ../../../src/MenuStash.cpp:345
1513 msgid "This item can not be stored in the private stash."
1514 msgstr "Tento predmet nemožno vložiť do súkromného úložiska."
1515
1516 #: ../../../src/MenuStash.cpp:350
1517 msgid "This item can not be stored in the shared stash."
1518 msgstr "Tento predmet nemožno vložiť do zdieľaného úložiska."
1519
1520 #: ../../../src/MenuStash.cpp:360
12701521 msgid "Stash is full."
1271 msgstr ""
1272
1273 #: ../../../src/MenuTalker.cpp:454
1522 msgstr "Úložisko je plné."
1523
1524 #: ../../../src/MenuStash.cpp:414
1525 #, c-format
1526 msgid "Can not store item in stash: %s"
1527 msgstr "Do úložiska nemožno vložiť predmet: %s"
1528
1529 #: ../../../src/MenuTalker.cpp:448
1530 #, c-format
1531 msgid "<dialog node %d>"
1532 msgstr ""
1533
1534 #: ../../../src/MenuTalker.cpp:456
12741535 msgid "Trade"
1275 msgstr ""
1276
1277 #: ../../../src/MenuVendor.cpp:58
1536 msgstr "Obchodovať"
1537
1538 #: ../../../src/MenuVendor.cpp:60
12781539 msgid "Buyback"
1279 msgstr ""
1280
1281 #: ../../../src/MenuVendor.cpp:279
1540 msgstr "Spätná kúpa"
1541
1542 #: ../../../src/MenuVendor.cpp:283
12821543 msgid "Vendor"
12831544 msgstr "Predavač"
12841545
1285 #: ../../../src/PowerManager.cpp:1136
1546 #: ../../../src/PowerManager.cpp:1208
12861547 #, c-format
12871548 msgid "+%d Shield"
12881549 msgstr ""
12891550
1290 #: ../../../src/PowerManager.cpp:1392
1551 #: ../../../src/PowerManager.cpp:1465
12911552 msgid "You are already transformed, untransform first."
1292 msgstr ""
1293
1294 #: ../../../src/PowerManager.cpp:1404
1553 msgstr "Už ste raz prešli premenou, najprv ju zvráťte."
1554
1555 #: ../../../src/PowerManager.cpp:1477
12951556 msgid "Could not untransform at this position."
1296 msgstr ""
1557 msgstr "Na tomto mieste nemožno zvrátiť premenu."
12971558
12981559 #: ../../../src/QuestLog.cpp:234
12991560 msgid "Completed Quests"
1300 msgstr ""
1301
1302 #: ../../../src/SaveLoad.cpp:243 ../../../src/SaveLoad.cpp:244
1561 msgstr "Dokončené úlohy"
1562
1563 #: ../../../src/SaveLoad.cpp:250 ../../../src/SaveLoad.cpp:251
13031564 msgid "Game saved."
1304 msgstr ""
1305
1306 #: ../../../src/SDLInputState.cpp:582
1565 msgstr "Hra uložená."
1566
1567 #: ../../../src/SDLInputState.cpp:643
1568 msgid "BkSp"
1569 msgstr ""
1570
1571 #: ../../../src/SDLInputState.cpp:644
1572 msgid "Caps"
1573 msgstr ""
1574
1575 #: ../../../src/SDLInputState.cpp:645
1576 msgid "Del"
1577 msgstr ""
1578
1579 #: ../../../src/SDLInputState.cpp:647 ../../../src/SDLInputState.cpp:677
1580 msgid "End"
1581 msgstr "End"
1582
1583 #: ../../../src/SDLInputState.cpp:648
1584 msgid "Esc"
1585 msgstr ""
1586
1587 #: ../../../src/SDLInputState.cpp:649 ../../../src/SDLInputState.cpp:679
1588 msgid "Home"
1589 msgstr "Home"
1590
1591 #: ../../../src/SDLInputState.cpp:650
1592 msgid "Ins"
1593 msgstr ""
1594
1595 #: ../../../src/SDLInputState.cpp:651
1596 msgid "LAlt"
1597 msgstr ""
1598
1599 #: ../../../src/SDLInputState.cpp:652
1600 msgid "LCtrl"
1601 msgstr ""
1602
1603 #: ../../../src/SDLInputState.cpp:654
1604 msgid "LShft"
1605 msgstr ""
1606
1607 #: ../../../src/SDLInputState.cpp:655
1608 msgid "Num"
1609 msgstr ""
1610
1611 #: ../../../src/SDLInputState.cpp:656
1612 msgid "PgDn"
1613 msgstr ""
1614
1615 #: ../../../src/SDLInputState.cpp:657
1616 msgid "PgUp"
1617 msgstr ""
1618
1619 #: ../../../src/SDLInputState.cpp:658 ../../../src/SDLInputState.cpp:688
1620 msgid "Pause"
1621 msgstr "Pause"
1622
1623 #: ../../../src/SDLInputState.cpp:659
1624 msgid "Print"
1625 msgstr ""
1626
1627 #: ../../../src/SDLInputState.cpp:660
1628 msgid "RAlt"
1629 msgstr ""
1630
1631 #: ../../../src/SDLInputState.cpp:661
1632 msgid "RCtrl"
1633 msgstr ""
1634
1635 #: ../../../src/SDLInputState.cpp:662
1636 msgid "Ret"
1637 msgstr ""
1638
1639 #: ../../../src/SDLInputState.cpp:664
1640 msgid "RShft"
1641 msgstr ""
1642
1643 #: ../../../src/SDLInputState.cpp:665
1644 msgid "SLock"
1645 msgstr ""
1646
1647 #: ../../../src/SDLInputState.cpp:666
1648 msgid "Spc"
1649 msgstr ""
1650
1651 #: ../../../src/SDLInputState.cpp:667 ../../../src/SDLInputState.cpp:697
1652 msgid "Tab"
1653 msgstr "Tab"
1654
1655 #: ../../../src/SDLInputState.cpp:673
13071656 msgid "Backspace"
1308 msgstr ""
1309
1310 #: ../../../src/SDLInputState.cpp:583
1657 msgstr "Backspace"
1658
1659 #: ../../../src/SDLInputState.cpp:674
13111660 msgid "CapsLock"
1312 msgstr ""
1313
1314 #: ../../../src/SDLInputState.cpp:586
1315 msgid "End"
1316 msgstr ""
1317
1318 #: ../../../src/SDLInputState.cpp:587
1661 msgstr "CapsLock"
1662
1663 #: ../../../src/SDLInputState.cpp:678
13191664 msgid "Escape"
1320 msgstr ""
1321
1322 #: ../../../src/SDLInputState.cpp:588
1323 msgid "Home"
1324 msgstr ""
1325
1326 #: ../../../src/SDLInputState.cpp:589
1665 msgstr "Escape"
1666
1667 #: ../../../src/SDLInputState.cpp:680
13271668 msgid "Insert"
1328 msgstr ""
1329
1330 #: ../../../src/SDLInputState.cpp:590
1669 msgstr "Insert"
1670
1671 #: ../../../src/SDLInputState.cpp:681
13311672 msgid "Left Alt"
1332 msgstr ""
1333
1334 #: ../../../src/SDLInputState.cpp:591
1673 msgstr "Ľavý Alt"
1674
1675 #: ../../../src/SDLInputState.cpp:682
13351676 msgid "Left Ctrl"
1336 msgstr ""
1337
1338 #: ../../../src/SDLInputState.cpp:593
1677 msgstr "Ľavý Ctrl"
1678
1679 #: ../../../src/SDLInputState.cpp:684
13391680 msgid "Left Shift"
1340 msgstr ""
1341
1342 #: ../../../src/SDLInputState.cpp:594
1681 msgstr "Ľavý Shift"
1682
1683 #: ../../../src/SDLInputState.cpp:685
13431684 msgid "NumLock"
1344 msgstr ""
1345
1346 #: ../../../src/SDLInputState.cpp:595
1685 msgstr "NumLock"
1686
1687 #: ../../../src/SDLInputState.cpp:686
13471688 msgid "PageDown"
1348 msgstr ""
1349
1350 #: ../../../src/SDLInputState.cpp:596
1689 msgstr "PageDown"
1690
1691 #: ../../../src/SDLInputState.cpp:687
13511692 msgid "PageUp"
1352 msgstr ""
1353
1354 #: ../../../src/SDLInputState.cpp:597
1355 msgid "Pause"
1356 msgstr ""
1357
1358 #: ../../../src/SDLInputState.cpp:598
1693 msgstr "PageUp"
1694
1695 #: ../../../src/SDLInputState.cpp:689
13591696 msgid "PrintScreen"
1360 msgstr ""
1361
1362 #: ../../../src/SDLInputState.cpp:599
1697 msgstr "PrintScreen"
1698
1699 #: ../../../src/SDLInputState.cpp:690
13631700 msgid "Right Alt"
1364 msgstr ""
1365
1366 #: ../../../src/SDLInputState.cpp:600
1701 msgstr "Pravý Alt"
1702
1703 #: ../../../src/SDLInputState.cpp:691
13671704 msgid "Right Ctrl"
1368 msgstr ""
1369
1370 #: ../../../src/SDLInputState.cpp:601
1705 msgstr "Pravý Ctrl"
1706
1707 #: ../../../src/SDLInputState.cpp:692
13711708 msgid "Return"
1372 msgstr ""
1373
1374 #: ../../../src/SDLInputState.cpp:603
1709 msgstr "Return"
1710
1711 #: ../../../src/SDLInputState.cpp:694
13751712 msgid "Right Shift"
1376 msgstr ""
1377
1378 #: ../../../src/SDLInputState.cpp:604
1713 msgstr "Pravý Shift"
1714
1715 #: ../../../src/SDLInputState.cpp:695
13791716 msgid "ScrollLock"
1380 msgstr ""
1381
1382 #: ../../../src/SDLInputState.cpp:605
1717 msgstr "ScrollLock"
1718
1719 #: ../../../src/SDLInputState.cpp:696
13831720 msgid "Space"
1384 msgstr ""
1385
1386 #: ../../../src/SDLInputState.cpp:606
1387 msgid "Tab"
1388 msgstr ""
1389
1390 #: ../../../src/SDLInputState.cpp:620
1721 msgstr "Medzerník"
1722
1723 #: ../../../src/SDLInputState.cpp:710
1724 #, c-format
1725 msgid "M%d"
1726 msgstr ""
1727
1728 #: ../../../src/SDLInputState.cpp:716
13911729 #, c-format
13921730 msgid "Mouse %d"
13931731 msgstr ""
13941732
1395 #: ../../../src/SDLInputState.cpp:628
1733 #: ../../../src/SDLInputState.cpp:726
1734 #, c-format
1735 msgid "JX%d-"
1736 msgstr ""
1737
1738 #: ../../../src/SDLInputState.cpp:728
13961739 #, c-format
13971740 msgid "Axis %d -"
1398 msgstr ""
1399
1400 #: ../../../src/SDLInputState.cpp:630
1741 msgstr "Os %d -"
1742
1743 #: ../../../src/SDLInputState.cpp:732
1744 #, c-format
1745 msgid "JX%d+"
1746 msgstr ""
1747
1748 #: ../../../src/SDLInputState.cpp:734
14011749 #, c-format
14021750 msgid "Axis %d +"
1403 msgstr ""
1404
1405 #: ../../../src/SDLInputState.cpp:633
1751 msgstr "Os %d +"
1752
1753 #: ../../../src/SDLInputState.cpp:739
1754 #, c-format
1755 msgid "JB%d"
1756 msgstr ""
1757
1758 #: ../../../src/SDLInputState.cpp:741
14061759 #, c-format
14071760 msgid "Button %d"
1408 msgstr ""
1409
1410 #: ../../../src/SDLInputState.cpp:637
1411 msgid "(none)"
1412 msgstr ""
1413
1414 #: ../../../src/SDLInputState.cpp:677
1761 msgstr "Tlačidlo %d"
1762
1763 #: ../../../src/SDLInputState.cpp:787
14151764 msgid "Touch control D-Pad"
14161765 msgstr ""
14171766
1418 #: ../../../src/SDLInputState.cpp:701
1767 #: ../../../src/SDLInputState.cpp:810
14191768 msgid "Touch control buttons"
14201769 msgstr ""
14211770
1422 #: ../../../src/SDLInputState.cpp:716
1771 #: ../../../src/SDLInputState.cpp:824
14231772 msgid "Tap"
14241773 msgstr ""
14251774
1426 #: ../../../src/SDLInputState.cpp:760 ../../../src/SDLInputState.cpp:764
1427 #: ../../../src/SDLInputState.cpp:768
1775 #: ../../../src/SDLInputState.cpp:876 ../../../src/SDLInputState.cpp:878
1776 #, c-format
1777 msgid "Can not bind: %s"
1778 msgstr "Nemožno priradiť: %s"
1779
1780 #: ../../../src/SDLInputState.cpp:890 ../../../src/SDLInputState.cpp:894
1781 #: ../../../src/SDLInputState.cpp:898
14281782 #, c-format
14291783 msgid "'%s' is no longer bound to:"
14301784 msgstr ""
14351789
14361790 #: ../../../src/Stats.cpp:39
14371791 msgid "Total amount of HP."
1438 msgstr ""
1792 msgstr "Celkové množstvo HP."
14391793
14401794 #: ../../../src/Stats.cpp:43
14411795 msgid "HP Regen"
1442 msgstr ""
1796 msgstr "Regenerácia HP"
14431797
14441798 #: ../../../src/Stats.cpp:44
14451799 msgid "Ticks of HP regen per minute."
14511805
14521806 #: ../../../src/Stats.cpp:49
14531807 msgid "Total amount of MP."
1454 msgstr ""
1808 msgstr "Celkové množstvo MP."
14551809
14561810 #: ../../../src/Stats.cpp:53
14571811 msgid "MP Regen"
1458 msgstr ""
1812 msgstr "Regenerácia MP"
14591813
14601814 #: ../../../src/Stats.cpp:54
14611815 msgid "Ticks of MP regen per minute."
14631817
14641818 #: ../../../src/Stats.cpp:58
14651819 msgid "Accuracy"
1466 msgstr ""
1820 msgstr "Presnosť"
14671821
14681822 #: ../../../src/Stats.cpp:59
14691823 msgid ""
14701824 "Accuracy rating. The enemy's Avoidance rating is subtracted from this value "
14711825 "to calculate your likeliness to land a direct hit."
14721826 msgstr ""
1827 "Hodnotenie presnosti. Vaša pravdepodobnosť priameho zásahu sa počíta "
1828 "odčítaním hodnotenia vyhýbania nepriateľa od tejto hodnoty."
14731829
14741830 #: ../../../src/Stats.cpp:63
14751831 msgid "Avoidance"
1476 msgstr ""
1832 msgstr "Vyhýbanie"
14771833
14781834 #: ../../../src/Stats.cpp:64
14791835 msgid ""
14801836 "Avoidance rating. This value is subtracted from the enemy's Accuracy rating "
14811837 "to calculate their likeliness to land a direct hit."
14821838 msgstr ""
1839 "Hodnotenie vyhýbania. Nepriateľova pravdepobnosť priameho zásahu sa počíta "
1840 "odčítaním tejto hodnoty od jeho hodnotenia presnosti."
14831841
14841842 #: ../../../src/Stats.cpp:68
14851843 msgid "Absorb Min"
14871845
14881846 #: ../../../src/Stats.cpp:69 ../../../src/Stats.cpp:74
14891847 msgid "Reduces the amount of damage taken."
1490 msgstr ""
1848 msgstr "Znižuje množstvo utŕženého zranenia."
14911849
14921850 #: ../../../src/Stats.cpp:73
14931851 msgid "Absorb Max"
14951853
14961854 #: ../../../src/Stats.cpp:78
14971855 msgid "Critical Hit Chance"
1498 msgstr ""
1856 msgstr "Šanca na kritický zásah"
14991857
15001858 #: ../../../src/Stats.cpp:79
15011859 msgid "Chance for an attack to do extra damage."
1502 msgstr ""
1860 msgstr "Šanca, že útok spôsobí väčšie zranenie."
15031861
15041862 #: ../../../src/Stats.cpp:83
15051863 msgid "Bonus XP"
1506 msgstr ""
1864 msgstr "Bonusové XP"
15071865
15081866 #: ../../../src/Stats.cpp:84
15091867 msgid "Increases the XP gained per kill."
1510 msgstr ""
1868 msgstr "Zvyšuje XP získané za zabitie."
15111869
15121870 #: ../../../src/Stats.cpp:88
15131871 #, c-format
15211879
15221880 #: ../../../src/Stats.cpp:93
15231881 msgid "Item Find Chance"
1524 msgstr ""
1882 msgstr "Šanca na nájdenie predmetu"
15251883
15261884 #: ../../../src/Stats.cpp:94
15271885 msgid "Increases the chance that an enemy will drop an item."
1528 msgstr ""
1886 msgstr "Zvyšuje šancu, že nepriateľ za sebou zanechá predmet."
15291887
15301888 #: ../../../src/Stats.cpp:98
15311889 msgid "Stealth"
1532 msgstr ""
1890 msgstr "Skrývanie"
15331891
15341892 #: ../../../src/Stats.cpp:99
15351893 msgid "Increases your ability to move undetected."
1536 msgstr ""
1894 msgstr "Zvyšuje vašu schopnosť nepozorovane sa pohybovať."
15371895
15381896 #: ../../../src/Stats.cpp:103
15391897 msgid "Poise"
1540 msgstr ""
1898 msgstr "Rovnováha"
15411899
15421900 #: ../../../src/Stats.cpp:104
15431901 msgid "Reduces your chance of stumbling when hit."
1544 msgstr ""
1902 msgstr "Znižuje šancu, že pri zásahu stratíte rovnováhu."
15451903
15461904 #: ../../../src/Stats.cpp:108
15471905 msgid "Missile Reflect Chance"
1548 msgstr ""
1906 msgstr "Šanca na odraz striel"
15491907
15501908 #: ../../../src/Stats.cpp:109
15511909 msgid "Increases your chance of reflecting missiles back at enemies."
1552 msgstr ""
1910 msgstr "Zvyšuje vašu šancu odraziť strely naspäť k nepriateľom."
15531911
15541912 #: ../../../src/Stats.cpp:113
15551913 msgid "Damage Reflection"
1556 msgstr ""
1914 msgstr "Odraz zranenia"
15571915
15581916 #: ../../../src/Stats.cpp:114
15591917 msgid "Deals a percentage of damage taken back to the attacker."
1560 msgstr ""
1918 msgstr "Spôsobí časť utŕženého zranenia späť útočníkovi. "
15611919
15621920 #: ../../../src/Stats.cpp:118
15631921 msgid "HP Steal"
1564 msgstr ""
1922 msgstr "Krádež HP"
15651923
15661924 #: ../../../src/Stats.cpp:119
15671925 msgid "Percentage of HP stolen per hit."
15691927
15701928 #: ../../../src/Stats.cpp:123
15711929 msgid "MP Steal"
1572 msgstr ""
1930 msgstr "Krádež MP"
15731931
15741932 #: ../../../src/Stats.cpp:124
15751933 msgid "Percentage of MP stolen per hit."
15771935
15781936 #: ../../../src/Stats.cpp:128
15791937 msgid "Base HP"
1580 msgstr ""
1938 msgstr "Základné HP"
15811939
15821940 #: ../../../src/Stats.cpp:133
15831941 msgid "Base MP"
1584 msgstr ""
1585
1586 #: ../../../src/Utils.cpp:346
1942 msgstr "Základné MP"
1943
1944 #: ../../../src/Utils.cpp:365
15871945 msgid "k"
1588 msgstr ""
1589
1590 #: ../../../src/Utils.cpp:580
1946 msgstr "k"
1947
1948 #: ../../../src/Utils.cpp:635
15911949 #, c-format
15921950 msgid "%s second"
1593 msgstr ""
1594
1595 #: ../../../src/Utils.cpp:583
1951 msgstr "%s sekunda"
1952
1953 #: ../../../src/Utils.cpp:638
15961954 #, c-format
15971955 msgid "%s seconds"
1598 msgstr ""
1956 msgstr "%s sekúnd/-y"
15991957
16001958 #: ../../../src/Version.cpp:139
16011959 msgid "or newer"
1602 msgstr ""
1960 msgstr "alebo novšia"
16031961
16041962 #: ../../../src/Version.cpp:142
16051963 msgid "or older"
1606 msgstr ""
1964 msgstr "alebo staršia"
1010 msgstr ""
1111 "Project-Id-Version: PACKAGE VERSION\n"
1212 "Report-Msgid-Bugs-To: \n"
13 "POT-Creation-Date: 2018-11-17 21:50-0500\n"
13 "POT-Creation-Date: 2021-05-23 20:34-0400\n"
1414 "PO-Revision-Date: 2018-03-28 19:16+0000\n"
1515 "Last-Translator: Justin Jacobs <jajdorkster@gmail.com>, 2018\n"
1616 "Language-Team: Swedish (https://www.transifex.com/flareorg/teams/84925/sv/)\n"
2020 "Language: sv\n"
2121 "Plural-Forms: nplurals=2; plural=(n != 1);\n"
2222
23 #: ../../../src/Avatar.cpp:367
23 #: ../../../src/Avatar.cpp:391
24 msgid "Your health is low!"
25 msgstr ""
26
27 #: ../../../src/Avatar.cpp:421
2428 #, c-format
2529 msgid "Congratulations, you have reached level %d!"
2630 msgstr "Grattis, du har nått nivå %d!"
2731
28 #: ../../../src/Avatar.cpp:369
29 msgid "You may increase one attribute through the Character Menu."
30 msgstr "Du får nu öka på en egenskap i karaktärsmenyn."
31
32 #: ../../../src/Avatar.cpp:583
33 msgid "You are defeated. Game over! ${INPUT_CONTINUE} to exit to Title."
34 msgstr ""
35
36 #: ../../../src/Avatar.cpp:589
37 msgid "You are defeated. ${INPUT_CONTINUE} to continue."
38 msgstr ""
39
40 #: ../../../src/Avatar.cpp:839
32 #: ../../../src/Avatar.cpp:423
33 msgid "You may increase one or more attributes through the Character Menu."
34 msgstr ""
35
36 #: ../../../src/Avatar.cpp:427
37 msgid "You may unlock one or more abilities through the Powers Menu."
38 msgstr ""
39
40 #: ../../../src/Avatar.cpp:689
41 msgid "You are defeated."
42 msgstr ""
43
44 #: ../../../src/Avatar.cpp:935
4145 msgid "Transformation expired. You have been moved back to a safe place."
4246 msgstr ""
4347
44 #: ../../../src/CampaignManager.cpp:153
48 #: ../../../src/CampaignManager.cpp:152
4549 #, c-format
4650 msgid "%d %s removed."
4751 msgstr "%d %s borttaget."
4852
49 #: ../../../src/CampaignManager.cpp:162
53 #: ../../../src/CampaignManager.cpp:171
54 #, c-format
55 msgid "%s x%d removed."
56 msgstr ""
57
58 #: ../../../src/CampaignManager.cpp:173
5059 #, c-format
5160 msgid "%s removed."
5261 msgstr "%s borttaget."
5362
54 #: ../../../src/CampaignManager.cpp:175
63 #: ../../../src/CampaignManager.cpp:187
64 #, c-format
65 msgid "You receive %d %s."
66 msgstr "Du får %d %s."
67
68 #: ../../../src/CampaignManager.cpp:191
69 #, c-format
70 msgid "You receive %s x%d."
71 msgstr "Du får %s x%d."
72
73 #: ../../../src/CampaignManager.cpp:193
5574 #, c-format
5675 msgid "You receive %s."
5776 msgstr "Du får %s."
5877
59 #: ../../../src/CampaignManager.cpp:177
60 #, c-format
61 msgid "You receive %s x%d."
62 msgstr "Du får %s x%d."
63
64 #: ../../../src/CampaignManager.cpp:186
65 #, c-format
66 msgid "You receive %d %s."
67 msgstr "Du får %d %s."
68
69 #: ../../../src/CampaignManager.cpp:195
78 #: ../../../src/CampaignManager.cpp:210
7079 #, c-format
7180 msgid "You receive %d XP."
7281 msgstr "Du får %d XP."
7382
74 #: ../../../src/CampaignManager.cpp:201
83 #: ../../../src/CampaignManager.cpp:216
7584 msgid "HP restored."
7685 msgstr "HP äterställd."
7786
78 #: ../../../src/CampaignManager.cpp:205
87 #: ../../../src/CampaignManager.cpp:220
7988 msgid "MP restored."
8089 msgstr "MP återställd."
8190
82 #: ../../../src/CampaignManager.cpp:210
91 #: ../../../src/CampaignManager.cpp:225
8392 msgid "HP and MP restored."
8493 msgstr "HP och MP återställt."
8594
86 #: ../../../src/CampaignManager.cpp:214
95 #: ../../../src/CampaignManager.cpp:229
8796 msgid "Negative effects removed."
8897 msgstr "Negativa effekter borttagna."
8998
90 #: ../../../src/CampaignManager.cpp:220
99 #: ../../../src/CampaignManager.cpp:235
91100 msgid "HP and MP restored, negative effects removed"
92101 msgstr "HP och MP återställt, negativa effekter borttagna"
93102
105114 "The default renderer that is often faster than the SDL software renderer."
106115 msgstr ""
107116
108 #: ../../../src/EngineSettings.cpp:561
117 #: ../../../src/EngineSettings.cpp:586
109118 msgid "Adventurer"
110119 msgstr "Äventyrare"
111120
112 #: ../../../src/Entity.cpp:511
121 #: ../../../src/Entity.cpp:527
113122 msgid "miss"
114123 msgstr "miss"
115124
116 #: ../../../src/Entity.cpp:548 ../../../src/PowerManager.cpp:1152
117 #: ../../../src/StatBlock.cpp:805 ../../../src/StatBlock.cpp:811
125 #: ../../../src/Entity.cpp:565 ../../../src/PowerManager.cpp:1224
126 #: ../../../src/StatBlock.cpp:917 ../../../src/StatBlock.cpp:923
118127 #, c-format
119128 msgid "+%d HP"
120129 msgstr "+%d HP"
121130
122 #: ../../../src/Entity.cpp:555 ../../../src/StatBlock.cpp:816
123 #: ../../../src/StatBlock.cpp:822
131 #: ../../../src/Entity.cpp:572 ../../../src/StatBlock.cpp:928
132 #: ../../../src/StatBlock.cpp:934
124133 #, c-format
125134 msgid "+%d MP"
126135 msgstr "+%d MP"
127136
128 #: ../../../src/EventManager.cpp:738
137 #: ../../../src/EventManager.cpp:792
129138 msgid "Unknown destination"
130139 msgstr "Okänd destination"
131140
132 #: ../../../src/GameStateConfigBase.cpp:89
133 #: ../../../src/GameStateConfigBase.cpp:110
141 #: ../../../src/GameState.cpp:37 ../../../src/GameState.cpp:58
142 msgid "Loading..."
143 msgstr "Laddar..."
144
145 #: ../../../src/GameStateLoad.cpp:90 ../../../src/GameStateLoad.cpp:103
146 msgid "Delete Save"
147 msgstr "Radera sparat spel"
148
149 #: ../../../src/GameStateLoad.cpp:90
150 msgid "Delete this save?"
151 msgstr "Vill du radera det sparade spelet?"
152
153 #: ../../../src/GameStateLoad.cpp:92
154 msgid "Exit to Title"
155 msgstr "Avsluta och gå till huvudmenyn"
156
157 #: ../../../src/GameStateLoad.cpp:95
158 msgid "New Game"
159 msgstr "Nytt spel"
160
161 #: ../../../src/GameStateLoad.cpp:99 ../../../src/GameStateLoad.cpp:607
162 msgid "Choose a Slot"
163 msgstr "Välj en plats"
164
165 #: ../../../src/GameStateLoad.cpp:580 ../../../src/GameStateLoad.cpp:601
166 msgid "Enable a story mod to continue"
167 msgstr "Aktivera en story mod för att fortsätta"
168
169 #: ../../../src/GameStateLoad.cpp:596
170 msgid "Load Game"
171 msgstr "Ladda spel"
172
173 #: ../../../src/GameStateLoad.cpp:705
174 msgid "Entering game world..."
175 msgstr "Öppnar spelvärlden..."
176
177 #: ../../../src/GameStateLoad.cpp:708
178 msgid "Loading saved game..."
179 msgstr "Läser in sparat spel..."
180
181 #: ../../../src/GameStateLoad.cpp:741
182 msgid "Invalid save"
183 msgstr ""
184
185 #: ../../../src/GameStateLoad.cpp:765 ../../../src/ItemManager.cpp:745
186 #: ../../../src/MenuPowers.cpp:860 ../../../src/MenuPowers.cpp:1219
187 #: ../../../src/MenuPowers.cpp:1631
188 #, c-format
189 msgid "Level %d"
190 msgstr "Nivå %d"
191
192 #: ../../../src/GameStateNew.cpp:66 ../../../src/InputState.cpp:416
193 #: ../../../src/MenuConfig.cpp:246
194 msgid "Cancel"
195 msgstr "Avbryt"
196
197 #: ../../../src/GameStateNew.cpp:69
198 msgid "Create"
199 msgstr "Skapa"
200
201 #: ../../../src/GameStateNew.cpp:77
202 msgid "Randomize"
203 msgstr ""
204
205 #: ../../../src/GameStateNew.cpp:93
206 msgid "Choose a Portrait"
207 msgstr "Välj ett ansikte"
208
209 #: ../../../src/GameStateNew.cpp:97
210 msgid "Choose a Name"
211 msgstr "Ange namn"
212
213 #: ../../../src/GameStateNew.cpp:101
214 msgid "Permadeath?"
215 msgstr "Permanent död?"
216
217 #: ../../../src/GameStateNew.cpp:105
218 msgid "Choose a Class"
219 msgstr "Välj en Klass"
220
221 #: ../../../src/GameStateTitle.cpp:107
222 msgid "Play Game"
223 msgstr "Starta spelet"
224
225 #: ../../../src/GameStateTitle.cpp:110
226 msgid "Enable a core mod to continue"
227 msgstr "Aktivera en core mod för att fortsätta"
228
229 #: ../../../src/GameStateTitle.cpp:114 ../../../src/MenuMiniMap.cpp:152
230 msgid "Configuration"
231 msgstr "Konfiguration"
232
233 #: ../../../src/GameStateTitle.cpp:117
234 msgid "Credits"
235 msgstr ""
236
237 #: ../../../src/GameStateTitle.cpp:120
238 msgid "Exit Game"
239 msgstr "Avsluta spelet"
240
241 #: ../../../src/InputState.cpp:417
242 msgid "Accept"
243 msgstr "Acceptera"
244
245 #: ../../../src/InputState.cpp:418 ../../../src/MenuMovementType.cpp:123
246 #: ../../../src/MenuMovementType.cpp:132 ../../../src/SDLInputState.cpp:668
247 #: ../../../src/SDLInputState.cpp:698
248 msgid "Up"
249 msgstr "Upp"
250
251 #: ../../../src/InputState.cpp:419 ../../../src/MenuMovementType.cpp:125
252 #: ../../../src/MenuMovementType.cpp:134 ../../../src/SDLInputState.cpp:646
253 #: ../../../src/SDLInputState.cpp:676
254 msgid "Down"
255 msgstr "Ner"
256
257 #: ../../../src/InputState.cpp:420 ../../../src/MenuMovementType.cpp:124
258 #: ../../../src/MenuMovementType.cpp:133 ../../../src/SDLInputState.cpp:653
259 #: ../../../src/SDLInputState.cpp:683
260 msgid "Left"
261 msgstr "Vänster"
262
263 #: ../../../src/InputState.cpp:421 ../../../src/MenuMovementType.cpp:126
264 #: ../../../src/MenuMovementType.cpp:135 ../../../src/SDLInputState.cpp:663
265 #: ../../../src/SDLInputState.cpp:693
266 msgid "Right"
267 msgstr "Höger"
268
269 #: ../../../src/InputState.cpp:422
270 msgid "Bar1"
271 msgstr ""
272
273 #: ../../../src/InputState.cpp:423
274 msgid "Bar2"
275 msgstr ""
276
277 #: ../../../src/InputState.cpp:424
278 msgid "Bar3"
279 msgstr ""
280
281 #: ../../../src/InputState.cpp:425
282 msgid "Bar4"
283 msgstr ""
284
285 #: ../../../src/InputState.cpp:426
286 msgid "Bar5"
287 msgstr ""
288
289 #: ../../../src/InputState.cpp:427
290 msgid "Bar6"
291 msgstr ""
292
293 #: ../../../src/InputState.cpp:428
294 msgid "Bar7"
295 msgstr ""
296
297 #: ../../../src/InputState.cpp:429
298 msgid "Bar8"
299 msgstr ""
300
301 #: ../../../src/InputState.cpp:430
302 msgid "Bar9"
303 msgstr ""
304
305 #: ../../../src/InputState.cpp:431
306 msgid "Bar0"
307 msgstr ""
308
309 #: ../../../src/InputState.cpp:432 ../../../src/MenuActionBar.cpp:84
310 #: ../../../src/MenuCharacter.cpp:54
311 msgid "Character"
312 msgstr "Karaktär"
313
314 #: ../../../src/InputState.cpp:433 ../../../src/MenuActionBar.cpp:85
315 #: ../../../src/MenuInventory.cpp:130 ../../../src/MenuVendor.cpp:59
316 msgid "Inventory"
317 msgstr "Inventarie"
318
319 #: ../../../src/InputState.cpp:434 ../../../src/MenuActionBar.cpp:86
320 #: ../../../src/MenuPowers.cpp:158
321 msgid "Powers"
322 msgstr "Krafter"
323
324 #: ../../../src/InputState.cpp:435 ../../../src/MenuActionBar.cpp:87
325 #: ../../../src/MenuLog.cpp:72
326 msgid "Log"
327 msgstr "Logg"
328
329 #: ../../../src/InputState.cpp:436
330 msgid "Main1"
331 msgstr ""
332
333 #: ../../../src/InputState.cpp:437
334 msgid "Main2"
335 msgstr ""
336
337 #: ../../../src/InputState.cpp:438
338 msgid "Ctrl"
339 msgstr ""
340
341 #: ../../../src/InputState.cpp:439
342 msgid "Shift"
343 msgstr ""
344
345 #: ../../../src/InputState.cpp:440
346 msgid "Alt"
347 msgstr ""
348
349 #: ../../../src/InputState.cpp:441 ../../../src/SDLInputState.cpp:675
350 msgid "Delete"
351 msgstr "Ta bort"
352
353 #: ../../../src/InputState.cpp:442
354 msgid "ActionBar Accept"
355 msgstr ""
356
357 #: ../../../src/InputState.cpp:443
358 msgid "ActionBar Left"
359 msgstr ""
360
361 #: ../../../src/InputState.cpp:444
362 msgid "ActionBar Right"
363 msgstr ""
364
365 #: ../../../src/InputState.cpp:445
366 msgid "ActionBar Use"
367 msgstr ""
368
369 #: ../../../src/InputState.cpp:446
370 msgid "Developer Menu"
371 msgstr ""
372
373 #: ../../../src/InputState.cpp:448
374 msgid "Left Mouse"
375 msgstr ""
376
377 #: ../../../src/InputState.cpp:449
378 msgid "Middle Mouse"
379 msgstr ""
380
381 #: ../../../src/InputState.cpp:450
382 msgid "Right Mouse"
383 msgstr ""
384
385 #: ../../../src/InputState.cpp:451
386 msgid "Wheel Up"
387 msgstr ""
388
389 #: ../../../src/InputState.cpp:452
390 msgid "Wheel Down"
391 msgstr ""
392
393 #: ../../../src/InputState.cpp:453
394 msgid "Mouse X1"
395 msgstr ""
396
397 #: ../../../src/InputState.cpp:454
398 msgid "Mouse X2"
399 msgstr ""
400
401 #: ../../../src/ItemManager.cpp:475
402 msgid "Unknown Item"
403 msgstr ""
404
405 #: ../../../src/ItemManager.cpp:646 ../../../src/MenuPowers.cpp:959
406 #, c-format
407 msgid "%d%% Speed"
408 msgstr ""
409
410 #: ../../../src/ItemManager.cpp:650 ../../../src/MenuPowers.cpp:962
411 #, c-format
412 msgid "%d%% Attack Speed"
413 msgstr ""
414
415 #: ../../../src/ItemManager.cpp:672 ../../../src/MenuCharacter.cpp:352
416 #: ../../../src/MenuPowers.cpp:931
417 #, c-format
418 msgid "Resistance (%s)"
419 msgstr ""
420
421 #: ../../../src/ItemManager.cpp:682
422 #, c-format
423 msgid "Requires %s"
424 msgstr ""
425
426 #: ../../../src/ItemManager.cpp:731
427 msgid "Quest Item"
428 msgstr "Uppdragsrelaterat föremål"
429
430 #: ../../../src/ItemManager.cpp:758
431 #, c-format
432 msgid "Quality: %s"
433 msgstr "Kvalitet: %s"
434
435 #: ../../../src/ItemManager.cpp:783
436 #, c-format
437 msgid "Absorb: %d-%d"
438 msgstr "Absorberar: %d-%d"
439
440 #: ../../../src/ItemManager.cpp:785
441 #, c-format
442 msgid "Absorb: %d"
443 msgstr "Absorberar: %d"
444
445 #: ../../../src/ItemManager.cpp:825 ../../../src/MenuPowers.cpp:1206
446 #: ../../../src/MenuPowers.cpp:1209
447 #, c-format
448 msgid "Requires Level %d"
449 msgstr "Kräver nivå %d"
450
451 #: ../../../src/ItemManager.cpp:836 ../../../src/MenuPowers.cpp:1198
452 #: ../../../src/MenuPowers.cpp:1200
453 #, c-format
454 msgid "Requires %s %d"
455 msgstr ""
456
457 #: ../../../src/ItemManager.cpp:847
458 #, c-format
459 msgid "Requires Class: %s"
460 msgstr ""
461
462 #: ../../../src/ItemManager.cpp:863 ../../../src/ItemManager.cpp:875
463 #, c-format
464 msgid "Buy Price: %d %s"
465 msgstr "Köpesumma: %d %s"
466
467 #: ../../../src/ItemManager.cpp:865 ../../../src/ItemManager.cpp:877
468 #, c-format
469 msgid "Buy Price: %d %s each"
470 msgstr "Köpesumma: %d %s per styck"
471
472 #: ../../../src/ItemManager.cpp:885
473 #, c-format
474 msgid "Sell Price: %d %s"
475 msgstr "Säljes för: %d %s"
476
477 #: ../../../src/ItemManager.cpp:887
478 #, c-format
479 msgid "Sell Price: %d %s each"
480 msgstr "Säljes för: %d %s per styck"
481
482 #: ../../../src/ItemManager.cpp:896
483 msgid "Set:"
484 msgstr ""
485
486 #: ../../../src/ItemManager.cpp:903
487 #, c-format
488 msgid "%d items:"
489 msgstr ""
490
491 #: ../../../src/ItemManager.cpp:915
492 #, c-format
493 msgid "Press [%s] to read"
494 msgstr ""
495
496 #: ../../../src/ItemManager.cpp:918
497 #, c-format
498 msgid "Press [%s] to use"
499 msgstr ""
500
501 #: ../../../src/MenuActionBar.cpp:239 ../../../src/MenuActionBar.cpp:246
502 #: ../../../src/MenuActionBar.cpp:249 ../../../src/MenuActionBar.cpp:255
503 #, c-format
504 msgid "Hotkey: %s"
505 msgstr ""
506
507 #: ../../../src/MenuActionBar.cpp:621
508 msgid "Not enough MP."
509 msgstr ""
510
511 #: ../../../src/MenuActiveEffects.cpp:124
512 #, c-format
513 msgid "x%d"
514 msgstr ""
515
516 #: ../../../src/MenuActiveEffects.cpp:219
517 msgid "Remaining:"
518 msgstr ""
519
520 #: ../../../src/MenuActiveEffects.cpp:225
521 #, c-format
522 msgid "x%d stacks"
523 msgstr ""
524
525 #: ../../../src/MenuCharacter.cpp:73 ../../../src/MenuCharacter.cpp:78
526 msgid "Name"
527 msgstr "Namn"
528
529 #: ../../../src/MenuCharacter.cpp:74 ../../../src/MenuCharacter.cpp:79
530 msgid "Level"
531 msgstr "Nivå"
532
533 #: ../../../src/MenuCharacter.cpp:309
534 #, c-format
535 msgid "Available stat points: %d"
536 msgstr ""
537
538 #: ../../../src/MenuCharacter.cpp:353
539 #, c-format
540 msgid "Reduces the damage taken from \"%s\" elemental attacks."
541 msgstr ""
542
543 #: ../../../src/MenuCharacter.cpp:363 ../../../src/MenuManager.cpp:301
544 #, c-format
545 msgid "XP: %d"
546 msgstr "XP: %d"
547
548 #: ../../../src/MenuCharacter.cpp:365
549 #, c-format
550 msgid "Next: %d"
551 msgstr "Nästa: %d"
552
553 #: ../../../src/MenuCharacter.cpp:371
554 #, c-format
555 msgid "base (%d), bonus (%d)"
556 msgstr "bas (%d), bonus (%d)"
557
558 #: ../../../src/MenuCharacter.cpp:379 ../../../src/MenuCharacter.cpp:393
559 msgid "Related stats:"
560 msgstr ""
561
562 #: ../../../src/MenuCharacter.cpp:419 ../../../src/MenuCharacter.cpp:443
563 #, c-format
564 msgid "Each level grants %d."
565 msgstr ""
566
567 #: ../../../src/MenuCharacter.cpp:423 ../../../src/MenuCharacter.cpp:447
568 #, c-format
569 msgid "Each point of %s grants %d."
570 msgstr ""
571
572 #: ../../../src/MenuConfig.cpp:122 ../../../src/MenuConfig.cpp:1171
573 msgid "Clear"
574 msgstr ""
575
576 #: ../../../src/MenuConfig.cpp:122 ../../../src/MenuConfig.cpp:1169
577 msgid "Assign:"
578 msgstr ""
579
580 #: ../../../src/MenuConfig.cpp:123 ../../../src/MenuConfig.cpp:245
134581 msgid "Defaults"
135582 msgstr "Standard"
136583
137 #: ../../../src/GameStateConfigBase.cpp:89
584 #: ../../../src/MenuConfig.cpp:123
138585 msgid "Reset ALL settings?"
139586 msgstr "Återställ samtliga inställningar?"
140587
141 #: ../../../src/GameStateConfigBase.cpp:109 ../../../src/MenuNumPicker.cpp:49
588 #: ../../../src/MenuConfig.cpp:244 ../../../src/MenuNumPicker.cpp:49
142589 msgid "OK"
143590 msgstr "OK"
144591
145 #: ../../../src/GameStateConfigBase.cpp:111 ../../../src/GameStateNew.cpp:65
146 #: ../../../src/InputState.cpp:401
147 msgid "Cancel"
148 msgstr "Avbryt"
149
150 #: ../../../src/GameStateConfigBase.cpp:160
151 #: ../../../src/GameStateConfigDesktop.cpp:130
592 #: ../../../src/MenuConfig.cpp:248 ../../../src/MenuGameOver.cpp:72
593 msgid "Continue"
594 msgstr ""
595
596 #: ../../../src/MenuConfig.cpp:250
597 msgid "Save Game"
598 msgstr ""
599
600 #: ../../../src/MenuConfig.cpp:293
601 msgid "Default"
602 msgstr ""
603
604 #: ../../../src/MenuConfig.cpp:293
605 msgid ""
606 "Show all loot tooltips, except for those that would be obscured by the "
607 "player or an enemy. Temporarily show all loot tooltips with 'Alt'."
608 msgstr ""
609
610 #: ../../../src/MenuConfig.cpp:294
611 msgid "Show all"
612 msgstr ""
613
614 #: ../../../src/MenuConfig.cpp:294
615 msgid ""
616 "Always show loot tooltips. Temporarily hide all loot tooltips with 'Alt'."
617 msgstr ""
618
619 #: ../../../src/MenuConfig.cpp:295 ../../../src/MenuConfig.cpp:300
620 msgid "Hidden"
621 msgstr ""
622
623 #: ../../../src/MenuConfig.cpp:295
624 msgid ""
625 "Always hide loot tooltips, except for when a piece of loot is hovered with "
626 "the mouse cursor. Temporarily show all loot tooltips with 'Alt'."
627 msgstr ""
628
629 #: ../../../src/MenuConfig.cpp:298
630 msgid "Visible"
631 msgstr ""
632
633 #: ../../../src/MenuConfig.cpp:299
634 msgid "Visible (2x zoom)"
635 msgstr ""
636
637 #: ../../../src/MenuConfig.cpp:303
638 msgid ""
639 "Controls the type of warning to be activated when the player is below the "
640 "low health threshold."
641 msgstr ""
642
643 #: ../../../src/MenuConfig.cpp:304
644 msgid "- Display a message"
645 msgstr ""
646
647 #: ../../../src/MenuConfig.cpp:305
648 msgid "- Play a sound"
649 msgstr ""
650
651 #: ../../../src/MenuConfig.cpp:306
652 msgid "- Change the cursor"
653 msgstr ""
654
655 #: ../../../src/MenuConfig.cpp:308
656 msgid "Disabled"
657 msgstr ""
658
659 #: ../../../src/MenuConfig.cpp:309
660 msgid "All"
661 msgstr ""
662
663 #: ../../../src/MenuConfig.cpp:310
664 msgid "Message & Cursor"
665 msgstr ""
666
667 #: ../../../src/MenuConfig.cpp:311
668 msgid "Message & Sound"
669 msgstr ""
670
671 #: ../../../src/MenuConfig.cpp:312
672 msgid "Sound & Cursor"
673 msgstr ""
674
675 #: ../../../src/MenuConfig.cpp:313
676 msgid "Message"
677 msgstr ""
678
679 #: ../../../src/MenuConfig.cpp:314
680 msgid "Cursor"
681 msgstr ""
682
683 #: ../../../src/MenuConfig.cpp:315
684 msgid "Sound"
685 msgstr ""
686
687 #: ../../../src/MenuConfig.cpp:321
688 msgid ""
689 "When the player's health drops below the given threshold, the low health "
690 "notifications are triggered if one or more of them is enabled."
691 msgstr ""
692
693 #: ../../../src/MenuConfig.cpp:334 ../../../src/MenuConfig.cpp:1587
694 #: ../../../src/MenuGameOver.cpp:116
695 msgid "Exit"
696 msgstr "Avsluta"
697
698 #: ../../../src/MenuConfig.cpp:335
699 msgid "Video"
700 msgstr "Video"
701
702 #: ../../../src/MenuConfig.cpp:336
152703 msgid "Audio"
153704 msgstr "Ljud"
154705
155 #: ../../../src/GameStateConfigBase.cpp:161
156 #: ../../../src/GameStateConfigDesktop.cpp:131
706 #: ../../../src/MenuConfig.cpp:337
157707 msgid "Interface"
158708 msgstr "Gränssnitt"
159709
160 #: ../../../src/GameStateConfigBase.cpp:162
161 #: ../../../src/GameStateConfigDesktop.cpp:134
710 #: ../../../src/MenuConfig.cpp:338
711 msgid "Input"
712 msgstr "Inmatning"
713
714 #: ../../../src/MenuConfig.cpp:339
715 msgid "Keybindings"
716 msgstr "Tangentbindningar"
717
718 #: ../../../src/MenuConfig.cpp:340
162719 msgid "Mods"
163720 msgstr "Mods"
164721
165 #: ../../../src/GameStateConfigBase.cpp:249 ../../../src/MenuExit.cpp:72
722 #: ../../../src/MenuConfig.cpp:352
723 msgid "Paused"
724 msgstr ""
725
726 #: ../../../src/MenuConfig.cpp:355
727 msgid "Time Played"
728 msgstr ""
729
730 #: ../../../src/MenuConfig.cpp:361
731 msgid "Renderer"
732 msgstr ""
733
734 #: ../../../src/MenuConfig.cpp:362
735 msgid "Full Screen Mode"
736 msgstr "Fullskärmsläge"
737
738 #: ../../../src/MenuConfig.cpp:363
739 msgid "Hardware surfaces"
740 msgstr ""
741
742 #: ../../../src/MenuConfig.cpp:364
743 msgid "V-Sync"
744 msgstr ""
745
746 #: ../../../src/MenuConfig.cpp:365
747 msgid "Texture Filtering"
748 msgstr ""
749
750 #: ../../../src/MenuConfig.cpp:366
751 msgid "DPI scaling"
752 msgstr ""
753
754 #: ../../../src/MenuConfig.cpp:367
755 msgid "Parallax Layers"
756 msgstr ""
757
758 #: ../../../src/MenuConfig.cpp:368
759 msgid "Allow changing gamma"
760 msgstr "Tillåt ändring av gamma"
761
762 #: ../../../src/MenuConfig.cpp:369
763 msgid "Gamma"
764 msgstr "Gamma"
765
766 #: ../../../src/MenuConfig.cpp:371
767 msgid "Sound Volume"
768 msgstr "Ljudvolym"
769
770 #: ../../../src/MenuConfig.cpp:372
166771 msgid "Music Volume"
167772 msgstr "Musikvolym"
168773
169 #: ../../../src/GameStateConfigBase.cpp:253 ../../../src/MenuExit.cpp:77
170 msgid "Sound Volume"
171 msgstr "Ljudvolym"
172
173 #: ../../../src/GameStateConfigBase.cpp:257
774 #: ../../../src/MenuConfig.cpp:374
174775 msgid "Language"
175776 msgstr "Språk"
176777
177 #: ../../../src/GameStateConfigBase.cpp:266
778 #: ../../../src/MenuConfig.cpp:375
178779 msgid "Show FPS"
179780 msgstr "Visa FPS"
180781
181 #: ../../../src/GameStateConfigBase.cpp:270
782 #: ../../../src/MenuConfig.cpp:376
783 msgid "Hardware mouse cursor"
784 msgstr ""
785
786 #: ../../../src/MenuConfig.cpp:377
182787 msgid "Colorblind Mode"
183788 msgstr "Läge för färgblinda"
184789
185 #: ../../../src/GameStateConfigBase.cpp:274
186 msgid "Hardware mouse cursor"
187 msgstr ""
188
189 #: ../../../src/GameStateConfigBase.cpp:278
790 #: ../../../src/MenuConfig.cpp:378
190791 msgid "Developer Mode"
191792 msgstr ""
192793
193 #: ../../../src/GameStateConfigBase.cpp:282
794 #: ../../../src/MenuConfig.cpp:379
194795 msgid "Subtitles"
195796 msgstr ""
196797
197 #: ../../../src/GameStateConfigBase.cpp:286
198 msgid "Active Mods"
199 msgstr "Aktiva Mods"
200
201 #: ../../../src/GameStateConfigBase.cpp:295
202 msgid "Available Mods"
203 msgstr "Tillgängliga Mods"
204
205 #: ../../../src/GameStateConfigBase.cpp:314
206 msgid "<< Disable"
207 msgstr "<< Inaktivera"
208
209 #: ../../../src/GameStateConfigBase.cpp:320
210 msgid "Enable >>"
211 msgstr "Aktivera >>"
212
213 #: ../../../src/GameStateConfigBase.cpp:873
214 msgid "Version:"
215 msgstr ""
216
217 #: ../../../src/GameStateConfigBase.cpp:878
218 msgid "Game:"
219 msgstr ""
220
221 #: ../../../src/GameStateConfigBase.cpp:883
222 msgid "Engine version:"
223 msgstr ""
224
225 #: ../../../src/GameStateConfigBase.cpp:891
226 msgid "Requires mods:"
227 msgstr ""
228
229 #: ../../../src/GameStateConfigDesktop.cpp:83
230 #: ../../../src/GameStateConfigDesktop.cpp:751
231 msgid "Clear"
232 msgstr ""
233
234 #: ../../../src/GameStateConfigDesktop.cpp:83
235 #: ../../../src/GameStateConfigDesktop.cpp:749
236 msgid "Assign:"
237 msgstr ""
238
239 #: ../../../src/GameStateConfigDesktop.cpp:128
240 msgid "Video"
241 msgstr "Video"
242
243 #: ../../../src/GameStateConfigDesktop.cpp:132
244 msgid "Input"
245 msgstr "Inmatning"
246
247 #: ../../../src/GameStateConfigDesktop.cpp:133
248 msgid "Keybindings"
249 msgstr "Tangentbindningar"
250
251 #: ../../../src/GameStateConfigDesktop.cpp:188
798 #: ../../../src/MenuConfig.cpp:380
799 msgid "Loot tooltip visibility"
800 msgstr ""
801
802 #: ../../../src/MenuConfig.cpp:381
803 msgid "Mini-map mode"
804 msgstr ""
805
806 #: ../../../src/MenuConfig.cpp:382
807 msgid "Always show stat bar labels"
808 msgstr ""
809
810 #: ../../../src/MenuConfig.cpp:383
811 msgid "Allow stat bar auto-hiding"
812 msgstr ""
813
814 #: ../../../src/MenuConfig.cpp:384
815 msgid "Show combat text"
816 msgstr "Visa text vid strid"
817
818 #: ../../../src/MenuConfig.cpp:385
819 msgid "Automatically equip items"
820 msgstr ""
821
822 #: ../../../src/MenuConfig.cpp:386
823 msgid "Show hidden entity markers"
824 msgstr ""
825
826 #: ../../../src/MenuConfig.cpp:387
827 msgid "Low health notification"
828 msgstr ""
829
830 #: ../../../src/MenuConfig.cpp:388
831 msgid "Low health threshold"
832 msgstr ""
833
834 #: ../../../src/MenuConfig.cpp:389
835 msgid "Show item comparison tooltips"
836 msgstr ""
837
838 #: ../../../src/MenuConfig.cpp:392 ../../../src/MenuMovementType.cpp:94
839 #: ../../../src/MenuMovementType.cpp:131
840 msgid "Joystick"
841 msgstr "Joystick"
842
843 #: ../../../src/MenuConfig.cpp:393
844 msgid "Move hero using mouse"
845 msgstr "Flytta hjälten med muspekaren"
846
847 #: ../../../src/MenuConfig.cpp:394
848 msgid "Mouse aim"
849 msgstr "Sikta med muspekaren"
850
851 #: ../../../src/MenuConfig.cpp:395
852 msgid "Do not use mouse"
853 msgstr "Använd inte muspekare"
854
855 #: ../../../src/MenuConfig.cpp:396
856 msgid "Swap mouse movement button"
857 msgstr ""
858
859 #: ../../../src/MenuConfig.cpp:397
860 msgid "Attack with mouse movement"
861 msgstr ""
862
863 #: ../../../src/MenuConfig.cpp:398
864 msgid "Joystick Deadzone"
865 msgstr "Joystick Dödzon"
866
867 #: ../../../src/MenuConfig.cpp:408
868 #, c-format
869 msgid "Primary binding: %s"
870 msgstr ""
871
872 #: ../../../src/MenuConfig.cpp:409
873 #, c-format
874 msgid "Alternate binding: %s"
875 msgstr ""
876
877 #: ../../../src/MenuConfig.cpp:410
878 #, c-format
879 msgid "Joystick binding: %s"
880 msgstr ""
881
882 #: ../../../src/MenuConfig.cpp:511
252883 msgid ""
253884 "Will try to store surfaces in video memory versus system memory. The effect "
254885 "this has on performance depends on the renderer."
255886 msgstr ""
256887
257 #: ../../../src/GameStateConfigDesktop.cpp:189
888 #: ../../../src/MenuConfig.cpp:512
258889 msgid ""
259890 "Prevents screen tearing. Disable if you experience \"stuttering\" in "
260891 "windowed mode or input lag."
261892 msgstr ""
262893
263 #: ../../../src/GameStateConfigDesktop.cpp:190
894 #: ../../../src/MenuConfig.cpp:513
264895 msgid ""
265896 "When enabled, this uses the screen DPI in addition to the window dimensions "
266897 "to scale the rendering resolution. Otherwise, only the window dimensions are"
267898 " used."
268899 msgstr ""
269900
270 #: ../../../src/GameStateConfigDesktop.cpp:191
901 #: ../../../src/MenuConfig.cpp:514
271902 msgid ""
272903 "This enables parallax (non-tile) layers. Disabling this setting can improve "
273904 "performance in some cases."
274905 msgstr ""
275906
276 #: ../../../src/GameStateConfigDesktop.cpp:192
277 msgid "Experimental"
278 msgstr "Experimentell"
279
280 #: ../../../src/GameStateConfigDesktop.cpp:193
281 msgid "For handheld devices"
282 msgstr "För handhållna neheter"
283
284 #: ../../../src/GameStateConfigDesktop.cpp:211
285 msgid "Renderer"
286 msgstr ""
287
288 #: ../../../src/GameStateConfigDesktop.cpp:227
289 msgid "Full Screen Mode"
290 msgstr "Fullskärmsläge"
291
292 #: ../../../src/GameStateConfigDesktop.cpp:231
293 msgid "Move hero using mouse"
294 msgstr "Flytta hjälten med muspekaren"
295
296 #: ../../../src/GameStateConfigDesktop.cpp:235
297 msgid "Hardware surfaces"
298 msgstr ""
299
300 #: ../../../src/GameStateConfigDesktop.cpp:239
301 msgid "V-Sync"
302 msgstr ""
303
304 #: ../../../src/GameStateConfigDesktop.cpp:243
305 msgid "Texture Filtering"
306 msgstr ""
307
308 #: ../../../src/GameStateConfigDesktop.cpp:247
309 msgid "DPI scaling"
310 msgstr ""
311
312 #: ../../../src/GameStateConfigDesktop.cpp:251
313 msgid "Parallax Layers"
314 msgstr ""
315
316 #: ../../../src/GameStateConfigDesktop.cpp:255
317 msgid "Allow changing gamma"
318 msgstr "Tillåt ändring av gamma"
319
320 #: ../../../src/GameStateConfigDesktop.cpp:259
321 msgid "Gamma"
322 msgstr "Gamma"
323
324 #: ../../../src/GameStateConfigDesktop.cpp:263
325 msgid "Use joystick"
326 msgstr "Använd joystick"
327
328 #: ../../../src/GameStateConfigDesktop.cpp:267
329 msgid "Joystick"
330 msgstr "Joystick"
331
332 #: ../../../src/GameStateConfigDesktop.cpp:283
333 msgid "Mouse aim"
334 msgstr "Sikta med muspekaren"
335
336 #: ../../../src/GameStateConfigDesktop.cpp:287
337 msgid "Do not use mouse"
338 msgstr "Använd inte muspekare"
339
340 #: ../../../src/GameStateConfigDesktop.cpp:291
341 msgid "Joystick Deadzone"
342 msgstr "Joystick Dödzon"
343
344 #: ../../../src/GameState.cpp:37 ../../../src/GameState.cpp:58
345 msgid "Loading..."
346 msgstr "Laddar..."
347
348 #: ../../../src/GameStateLoad.cpp:88 ../../../src/GameStateLoad.cpp:101
349 msgid "Delete Save"
350 msgstr "Radera sparat spel"
351
352 #: ../../../src/GameStateLoad.cpp:88
353 msgid "Delete this save?"
354 msgstr "Vill du radera det sparade spelet?"
355
356 #: ../../../src/GameStateLoad.cpp:90
357 msgid "Exit to Title"
358 msgstr "Avsluta och gå till huvudmenyn"
359
360 #: ../../../src/GameStateLoad.cpp:93
361 msgid "New Game"
362 msgstr "Nytt spel"
363
364 #: ../../../src/GameStateLoad.cpp:97 ../../../src/GameStateLoad.cpp:600
365 msgid "Choose a Slot"
366 msgstr "Välj en plats"
367
368 #: ../../../src/GameStateLoad.cpp:573 ../../../src/GameStateLoad.cpp:594
369 msgid "Enable a story mod to continue"
370 msgstr "Aktivera en story mod för att fortsätta"
371
372 #: ../../../src/GameStateLoad.cpp:589
373 msgid "Load Game"
374 msgstr "Ladda spel"
375
376 #: ../../../src/GameStateLoad.cpp:695
377 msgid "Entering game world..."
378 msgstr "Öppnar spelvärlden..."
379
380 #: ../../../src/GameStateLoad.cpp:698
381 msgid "Loading saved game..."
382 msgstr "Läser in sparat spel..."
383
384 #: ../../../src/GameStateLoad.cpp:731
385 msgid "Invalid save"
386 msgstr ""
387
388 #: ../../../src/GameStateLoad.cpp:755 ../../../src/ItemManager.cpp:747
389 #: ../../../src/MenuPowers.cpp:778 ../../../src/MenuPowers.cpp:1144
390 #: ../../../src/MenuPowers.cpp:1542
391 #, c-format
392 msgid "Level %d"
393 msgstr "Nivå %d"
394
395 #: ../../../src/GameStateNew.cpp:68
396 msgid "Create"
397 msgstr "Skapa"
398
399 #: ../../../src/GameStateNew.cpp:76
400 msgid "Randomize"
401 msgstr ""
402
403 #: ../../../src/GameStateNew.cpp:92
404 msgid "Choose a Portrait"
405 msgstr "Välj ett ansikte"
406
407 #: ../../../src/GameStateNew.cpp:96
408 msgid "Choose a Name"
409 msgstr "Ange namn"
410
411 #: ../../../src/GameStateNew.cpp:100
412 msgid "Permadeath?"
413 msgstr "Permanent död?"
414
415 #: ../../../src/GameStateNew.cpp:104
416 msgid "Choose a Class"
417 msgstr "Välj en Klass"
418
419 #: ../../../src/GameStateTitle.cpp:108
420 msgid "Play Game"
421 msgstr "Starta spelet"
422
423 #: ../../../src/GameStateTitle.cpp:111
424 msgid "Enable a core mod to continue"
425 msgstr "Aktivera en core mod för att fortsätta"
426
427 #: ../../../src/GameStateTitle.cpp:115
428 msgid "Configuration"
429 msgstr "Konfiguration"
430
431 #: ../../../src/GameStateTitle.cpp:118
432 msgid "Credits"
433 msgstr ""
434
435 #: ../../../src/GameStateTitle.cpp:121
436 msgid "Exit Game"
437 msgstr "Avsluta spelet"
438
439 #: ../../../src/InputState.cpp:402
440 msgid "Accept"
441 msgstr "Acceptera"
442
443 #: ../../../src/InputState.cpp:403 ../../../src/SDLInputState.cpp:607
444 msgid "Up"
445 msgstr "Upp"
446
447 #: ../../../src/InputState.cpp:404 ../../../src/SDLInputState.cpp:585
448 msgid "Down"
449 msgstr "Ner"
450
451 #: ../../../src/InputState.cpp:405 ../../../src/SDLInputState.cpp:592
452 msgid "Left"
453 msgstr "Vänster"
454
455 #: ../../../src/InputState.cpp:406 ../../../src/SDLInputState.cpp:602
456 msgid "Right"
457 msgstr "Höger"
458
459 #: ../../../src/InputState.cpp:407
460 msgid "Bar1"
461 msgstr ""
462
463 #: ../../../src/InputState.cpp:408
464 msgid "Bar2"
465 msgstr ""
466
467 #: ../../../src/InputState.cpp:409
468 msgid "Bar3"
469 msgstr ""
470
471 #: ../../../src/InputState.cpp:410
472 msgid "Bar4"
473 msgstr ""
474
475 #: ../../../src/InputState.cpp:411
476 msgid "Bar5"
477 msgstr ""
478
479 #: ../../../src/InputState.cpp:412
480 msgid "Bar6"
481 msgstr ""
482
483 #: ../../../src/InputState.cpp:413
484 msgid "Bar7"
485 msgstr ""
486
487 #: ../../../src/InputState.cpp:414
488 msgid "Bar8"
489 msgstr ""
490
491 #: ../../../src/InputState.cpp:415
492 msgid "Bar9"
493 msgstr ""
494
495 #: ../../../src/InputState.cpp:416
496 msgid "Bar0"
497 msgstr ""
498
499 #: ../../../src/InputState.cpp:417 ../../../src/MenuActionBar.cpp:83
500 #: ../../../src/MenuCharacter.cpp:54
501 msgid "Character"
502 msgstr "Karaktär"
503
504 #: ../../../src/InputState.cpp:418 ../../../src/MenuActionBar.cpp:84
505 #: ../../../src/MenuInventory.cpp:137 ../../../src/MenuVendor.cpp:57
506 msgid "Inventory"
507 msgstr "Inventarie"
508
509 #: ../../../src/InputState.cpp:419 ../../../src/MenuActionBar.cpp:85
510 #: ../../../src/MenuPowers.cpp:168
511 msgid "Powers"
512 msgstr "Krafter"
513
514 #: ../../../src/InputState.cpp:420 ../../../src/MenuActionBar.cpp:86
515 #: ../../../src/MenuLog.cpp:72
516 msgid "Log"
517 msgstr "Logg"
518
519 #: ../../../src/InputState.cpp:421
520 msgid "Main1"
521 msgstr ""
522
523 #: ../../../src/InputState.cpp:422
524 msgid "Main2"
525 msgstr ""
526
527 #: ../../../src/InputState.cpp:423
528 msgid "Ctrl"
529 msgstr ""
530
531 #: ../../../src/InputState.cpp:424
532 msgid "Shift"
533 msgstr ""
534
535 #: ../../../src/InputState.cpp:425
536 msgid "Alt"
537 msgstr ""
538
539 #: ../../../src/InputState.cpp:426 ../../../src/SDLInputState.cpp:584
540 msgid "Delete"
541 msgstr "Ta bort"
542
543 #: ../../../src/InputState.cpp:427
544 msgid "ActionBar Accept"
545 msgstr ""
546
547 #: ../../../src/InputState.cpp:428
548 msgid "ActionBar Left"
549 msgstr ""
550
551 #: ../../../src/InputState.cpp:429
552 msgid "ActionBar Right"
553 msgstr ""
554
555 #: ../../../src/InputState.cpp:430
556 msgid "ActionBar Use"
557 msgstr ""
558
559 #: ../../../src/InputState.cpp:431
560 msgid "Developer Menu"
561 msgstr ""
562
563 #: ../../../src/InputState.cpp:433
564 msgid "Left Mouse"
565 msgstr ""
566
567 #: ../../../src/InputState.cpp:434
568 msgid "Middle Mouse"
569 msgstr ""
570
571 #: ../../../src/InputState.cpp:435
572 msgid "Right Mouse"
573 msgstr ""
574
575 #: ../../../src/InputState.cpp:436
576 msgid "Wheel Up"
577 msgstr ""
578
579 #: ../../../src/InputState.cpp:437
580 msgid "Wheel Down"
581 msgstr ""
582
583 #: ../../../src/InputState.cpp:438
584 msgid "Mouse X1"
585 msgstr ""
586
587 #: ../../../src/InputState.cpp:439
588 msgid "Mouse X2"
589 msgstr ""
590
591 #: ../../../src/ItemManager.cpp:450 ../../../src/ItemManager.cpp:453
592 msgid "Unknown Item"
593 msgstr ""
594
595 #: ../../../src/ItemManager.cpp:648 ../../../src/MenuPowers.cpp:887
596 #, c-format
597 msgid "%d%% Speed"
598 msgstr ""
599
600 #: ../../../src/ItemManager.cpp:652 ../../../src/MenuPowers.cpp:890
601 #, c-format
602 msgid "%d%% Attack Speed"
603 msgstr ""
604
605 #: ../../../src/ItemManager.cpp:674 ../../../src/MenuCharacter.cpp:354
606 #: ../../../src/MenuPowers.cpp:833
607 #, c-format
608 msgid "Resistance (%s)"
609 msgstr ""
610
611 #: ../../../src/ItemManager.cpp:684
612 #, c-format
613 msgid "Requires %s"
614 msgstr ""
615
616 #: ../../../src/ItemManager.cpp:733
617 msgid "Quest Item"
618 msgstr "Uppdragsrelaterat föremål"
619
620 #: ../../../src/ItemManager.cpp:760
621 #, c-format
622 msgid "Quality: %s"
623 msgstr "Kvalitet: %s"
624
625 #: ../../../src/ItemManager.cpp:785
626 #, c-format
627 msgid "Absorb: %d-%d"
628 msgstr "Absorberar: %d-%d"
629
630 #: ../../../src/ItemManager.cpp:787
631 #, c-format
632 msgid "Absorb: %d"
633 msgstr "Absorberar: %d"
634
635 #: ../../../src/ItemManager.cpp:827 ../../../src/MenuPowers.cpp:1131
636 #: ../../../src/MenuPowers.cpp:1134
637 #, c-format
638 msgid "Requires Level %d"
639 msgstr "Kräver nivå %d"
640
641 #: ../../../src/ItemManager.cpp:838 ../../../src/MenuPowers.cpp:1123
642 #: ../../../src/MenuPowers.cpp:1125
643 #, c-format
644 msgid "Requires %s %d"
645 msgstr ""
646
647 #: ../../../src/ItemManager.cpp:849
648 #, c-format
649 msgid "Requires Class: %s"
650 msgstr ""
651
652 #: ../../../src/ItemManager.cpp:864 ../../../src/ItemManager.cpp:876
653 #, c-format
654 msgid "Buy Price: %d %s"
655 msgstr "Köpesumma: %d %s"
656
657 #: ../../../src/ItemManager.cpp:866 ../../../src/ItemManager.cpp:878
658 #, c-format
659 msgid "Buy Price: %d %s each"
660 msgstr "Köpesumma: %d %s per styck"
661
662 #: ../../../src/ItemManager.cpp:886
663 #, c-format
664 msgid "Sell Price: %d %s"
665 msgstr "Säljes för: %d %s"
666
667 #: ../../../src/ItemManager.cpp:888
668 #, c-format
669 msgid "Sell Price: %d %s each"
670 msgstr "Säljes för: %d %s per styck"
671
672 #: ../../../src/ItemManager.cpp:897
673 msgid "Set:"
674 msgstr ""
675
676 #: ../../../src/ItemManager.cpp:904
677 #, c-format
678 msgid "%d items:"
679 msgstr ""
680
681 #: ../../../src/ItemManager.cpp:917
682 #, c-format
683 msgid "Press [%s] to use"
684 msgstr ""
685
686 #: ../../../src/ItemManager.cpp:920
687 #, c-format
688 msgid "Press [%s] to read"
689 msgstr ""
690
691 #: ../../../src/MenuActionBar.cpp:87
692 msgid "Loot tooltip visibility"
693 msgstr ""
694
695 #: ../../../src/MenuActionBar.cpp:88
696 msgid "Mini-map mode"
697 msgstr ""
698
699 #: ../../../src/MenuActionBar.cpp:89
700 msgid "Always show stat bar labels"
701 msgstr ""
702
703 #: ../../../src/MenuActionBar.cpp:90
704 msgid "Show combat text"
705 msgstr "Visa text vid strid"
706
707 #: ../../../src/MenuActionBar.cpp:254 ../../../src/MenuActionBar.cpp:261
708 #: ../../../src/MenuActionBar.cpp:264 ../../../src/MenuActionBar.cpp:271
709 #, c-format
710 msgid "Hotkey: %s"
711 msgstr ""
712
713 #: ../../../src/MenuActionBar.cpp:474
714 #, c-format
715 msgid "Default. Temporarily show all loot tooltips with '%s'."
716 msgstr ""
717
718 #: ../../../src/MenuActionBar.cpp:476
719 #, c-format
720 msgid "Show All. Temporarily hide all loot tooltips with '%s'."
721 msgstr ""
722
723 #: ../../../src/MenuActionBar.cpp:478
724 #, c-format
725 msgid "Hide All. Temporarily show all loot tooltips with '%s'."
726 msgstr ""
727
728 #: ../../../src/MenuActionBar.cpp:482
729 msgid "Visible"
730 msgstr ""
731
732 #: ../../../src/MenuActionBar.cpp:484
733 msgid "Visible (2x zoom)"
734 msgstr ""
735
736 #: ../../../src/MenuActionBar.cpp:486
737 msgid "Hidden"
738 msgstr ""
739
740 #: ../../../src/MenuActionBar.cpp:490 ../../../src/MenuActionBar.cpp:496
741 msgid "Enabled"
742 msgstr ""
743
744 #: ../../../src/MenuActionBar.cpp:492 ../../../src/MenuActionBar.cpp:498
745 msgid "Disabled"
746 msgstr ""
747
748 #: ../../../src/MenuActionBar.cpp:657
749 msgid "Not enough MP."
750 msgstr ""
751
752 #: ../../../src/MenuActiveEffects.cpp:124
753 #, c-format
754 msgid "x%d"
755 msgstr ""
756
757 #: ../../../src/MenuActiveEffects.cpp:219
758 msgid "Remaining:"
759 msgstr ""
760
761 #: ../../../src/MenuActiveEffects.cpp:225
762 #, c-format
763 msgid "x%d stacks"
764 msgstr ""
765
766 #: ../../../src/MenuCharacter.cpp:73 ../../../src/MenuCharacter.cpp:78
767 msgid "Name"
768 msgstr "Namn"
769
770 #: ../../../src/MenuCharacter.cpp:74 ../../../src/MenuCharacter.cpp:79
771 msgid "Level"
772 msgstr "Nivå"
773
774 #: ../../../src/MenuCharacter.cpp:310
775 #, c-format
776 msgid "%d unspent stat point"
777 msgstr ""
778
779 #: ../../../src/MenuCharacter.cpp:313
780 #, c-format
781 msgid "%d unspent stat points"
782 msgstr ""
783
784 #: ../../../src/MenuCharacter.cpp:355
785 #, c-format
786 msgid "Reduces the damage taken from \"%s\" elemental attacks."
787 msgstr ""
788
789 #: ../../../src/MenuCharacter.cpp:365 ../../../src/MenuManager.cpp:283
790 #, c-format
791 msgid "XP: %d"
792 msgstr "XP: %d"
793
794 #: ../../../src/MenuCharacter.cpp:367
795 #, c-format
796 msgid "Next: %d"
797 msgstr "Nästa: %d"
798
799 #: ../../../src/MenuCharacter.cpp:373
800 #, c-format
801 msgid "base (%d), bonus (%d)"
802 msgstr "bas (%d), bonus (%d)"
803
804 #: ../../../src/MenuCharacter.cpp:381 ../../../src/MenuCharacter.cpp:395
805 msgid "Related stats:"
806 msgstr ""
807
808 #: ../../../src/MenuCharacter.cpp:421 ../../../src/MenuCharacter.cpp:445
809 #, c-format
810 msgid "Each level grants %d."
811 msgstr ""
812
813 #: ../../../src/MenuCharacter.cpp:425 ../../../src/MenuCharacter.cpp:449
814 #, c-format
815 msgid "Each point of %s grants %d."
816 msgstr ""
817
818 #: ../../../src/MenuDevConsole.cpp:63
907 #: ../../../src/MenuConfig.cpp:515
908 msgid ""
909 "Enables the below setting that controls the screen gamma level. The behavior"
910 " of the gamma setting can vary between platforms."
911 msgstr ""
912
913 #: ../../../src/MenuConfig.cpp:516
914 msgid ""
915 "Provides additional text for information that is primarily conveyed through "
916 "color."
917 msgstr ""
918
919 #: ../../../src/MenuConfig.cpp:517
920 msgid ""
921 "Some mods will automatically hide the stat bars when they are inactive. "
922 "Disabling this option will keep them displayed at all times."
923 msgstr ""
924
925 #: ../../../src/MenuConfig.cpp:518
926 msgid ""
927 "When enabled, empty equipment slots will be filled with applicable items "
928 "when they are obtained."
929 msgstr ""
930
931 #: ../../../src/MenuConfig.cpp:519
932 msgid ""
933 "Shows a marker above enemies, allies, and the player when they are obscured "
934 "by tall objects."
935 msgstr ""
936
937 #: ../../../src/MenuConfig.cpp:520
938 msgid ""
939 "When enabled, tooltips for equipped items of the same type are shown next to"
940 " standard item tooltips."
941 msgstr ""
942
943 #: ../../../src/MenuConfig.cpp:521
944 msgid ""
945 "This allows the game to be controlled entirely with the keyboard (or "
946 "joystick)."
947 msgstr ""
948
949 #: ../../../src/MenuConfig.cpp:522
950 msgid ""
951 "When 'Move hero using mouse' is enabled, this setting controls if 'Main1' or"
952 " 'Main2' is used to move the hero. If enabled, 'Main2' will move the hero "
953 "instead of 'Main1'."
954 msgstr ""
955
956 #: ../../../src/MenuConfig.cpp:523
957 msgid ""
958 "When 'Move hero using mouse' is enabled, this setting controls if the Power "
959 "assigned to the movement button can be used by targeting an enemy. If this "
960 "setting is disabled, it is required to use 'Shift' to access the Power "
961 "assigned to the movement button."
962 msgstr ""
963
964 #: ../../../src/MenuConfig.cpp:524
965 msgid ""
966 "The player's attacks will be aimed in the direction of the mouse cursor when"
967 " this is enabled."
968 msgstr ""
969
970 #: ../../../src/MenuConfig.cpp:575
971 msgid "Active Mods"
972 msgstr "Aktiva Mods"
973
974 #: ../../../src/MenuConfig.cpp:584
975 msgid "Available Mods"
976 msgstr "Tillgängliga Mods"
977
978 #: ../../../src/MenuConfig.cpp:603
979 msgid "<< Disable"
980 msgstr "<< Inaktivera"
981
982 #: ../../../src/MenuConfig.cpp:609
983 msgid "Enable >>"
984 msgstr "Aktivera >>"
985
986 #: ../../../src/MenuConfig.cpp:1444
987 msgid "Version:"
988 msgstr ""
989
990 #: ../../../src/MenuConfig.cpp:1449
991 msgid "Game:"
992 msgstr ""
993
994 #: ../../../src/MenuConfig.cpp:1454
995 msgid "Engine version:"
996 msgstr ""
997
998 #: ../../../src/MenuConfig.cpp:1462
999 msgid "Requires mods:"
1000 msgstr ""
1001
1002 #: ../../../src/MenuConfig.cpp:1570 ../../../src/SDLInputState.cpp:748
1003 msgid "(none)"
1004 msgstr ""
1005
1006 #: ../../../src/MenuConfig.cpp:1587 ../../../src/MenuGameOver.cpp:73
1007 msgid "Save & Exit"
1008 msgstr ""
1009
1010 #: ../../../src/MenuDevConsole.cpp:65
8191011 msgid "Execute"
8201012 msgstr ""
8211013
822 #: ../../../src/MenuDevConsole.cpp:101 ../../../src/MenuDevConsole.cpp:151
1014 #: ../../../src/MenuDevConsole.cpp:103 ../../../src/MenuDevConsole.cpp:153
8231015 msgid "Developer Console"
8241016 msgstr ""
8251017
826 #: ../../../src/MenuDevConsole.cpp:141
1018 #: ../../../src/MenuDevConsole.cpp:143
8271019 #, c-format
8281020 msgid "Use '%s' to inspect with the cursor."
8291021 msgstr ""
8301022
831 #: ../../../src/MenuDevConsole.cpp:146
1023 #: ../../../src/MenuDevConsole.cpp:148
8321024 msgid "Arguments with spaces should be enclosed with double quotes. Example:"
8331025 msgstr ""
8341026
835 #: ../../../src/MenuDevConsole.cpp:147
1027 #: ../../../src/MenuDevConsole.cpp:149
8361028 msgid "Type 'help' to get a list of commands."
8371029 msgstr ""
8381030
839 #: ../../../src/MenuDevConsole.cpp:209 ../../../src/MenuDevConsole.cpp:213
1031 #: ../../../src/MenuDevConsole.cpp:211 ../../../src/MenuDevConsole.cpp:215
8401032 msgid "px"
8411033 msgstr ""
8421034
843 #: ../../../src/MenuDevConsole.cpp:224
1035 #: ../../../src/MenuDevConsole.cpp:226
8441036 msgid "Distance"
8451037 msgstr ""
8461038
847 #: ../../../src/MenuDevConsole.cpp:239 ../../../src/MenuDevConsole.cpp:286
1039 #: ../../../src/MenuDevConsole.cpp:241 ../../../src/MenuDevConsole.cpp:289
1040 #: ../../../src/MenuDevConsole.cpp:303
8481041 msgid "Entity"
8491042 msgstr ""
8501043
851 #: ../../../src/MenuDevConsole.cpp:261 ../../../src/MenuDevConsole.cpp:268
1044 #: ../../../src/MenuDevConsole.cpp:263 ../../../src/MenuDevConsole.cpp:270
8521045 msgid "none"
8531046 msgstr ""
8541047
855 #: ../../../src/MenuDevConsole.cpp:262 ../../../src/MenuDevConsole.cpp:264
1048 #: ../../../src/MenuDevConsole.cpp:264 ../../../src/MenuDevConsole.cpp:266
8561049 msgid "wall"
8571050 msgstr ""
8581051
859 #: ../../../src/MenuDevConsole.cpp:263 ../../../src/MenuDevConsole.cpp:265
1052 #: ../../../src/MenuDevConsole.cpp:265 ../../../src/MenuDevConsole.cpp:267
8601053 msgid "short wall / pit"
8611054 msgstr ""
8621055
863 #: ../../../src/MenuDevConsole.cpp:266
1056 #: ../../../src/MenuDevConsole.cpp:268
8641057 msgid "entity"
8651058 msgstr ""
8661059
867 #: ../../../src/MenuDevConsole.cpp:267
1060 #: ../../../src/MenuDevConsole.cpp:269
8681061 msgid "entity, ally"
8691062 msgstr ""
8701063
871 #: ../../../src/MenuDevConsole.cpp:274
1064 #: ../../../src/MenuDevConsole.cpp:276
8721065 msgid "Tile"
8731066 msgstr ""
8741067
875 #: ../../../src/MenuDevConsole.cpp:360
1068 #: ../../../src/MenuDevConsole.cpp:377
8761069 msgid "adds a power to the action bar"
8771070 msgstr ""
8781071
879 #: ../../../src/MenuDevConsole.cpp:361
1072 #: ../../../src/MenuDevConsole.cpp:378
8801073 msgid "turns on/off the display of the FPS counter"
8811074 msgstr ""
8821075
883 #: ../../../src/MenuDevConsole.cpp:362
1076 #: ../../../src/MenuDevConsole.cpp:379
8841077 msgid "turns on/off all of the HUD elements"
8851078 msgstr ""
8861079
887 #: ../../../src/MenuDevConsole.cpp:363
1080 #: ../../../src/MenuDevConsole.cpp:380
8881081 msgid "turns on/off the developer hud"
8891082 msgstr ""
8901083
891 #: ../../../src/MenuDevConsole.cpp:364
1084 #: ../../../src/MenuDevConsole.cpp:381
8921085 msgid ""
8931086 "Prints a list of powers that match a search term. No search term will list "
8941087 "all items"
8951088 msgstr ""
8961089
897 #: ../../../src/MenuDevConsole.cpp:365
1090 #: ../../../src/MenuDevConsole.cpp:382
8981091 msgid "Prints out all the map filenames located in the \"maps/\" directory."
8991092 msgstr ""
9001093
901 #: ../../../src/MenuDevConsole.cpp:366
1094 #: ../../../src/MenuDevConsole.cpp:383
9021095 msgid ""
9031096 "Prints out the active campaign statuses that match a search term. No search "
9041097 "term will list all active statuses"
9051098 msgstr ""
9061099
907 #: ../../../src/MenuDevConsole.cpp:367
1100 #: ../../../src/MenuDevConsole.cpp:384
9081101 msgid ""
9091102 "Prints a list of items that match a search term. No search term will list "
9101103 "all items"
9111104 msgstr ""
9121105
913 #: ../../../src/MenuDevConsole.cpp:368
1106 #: ../../../src/MenuDevConsole.cpp:385
9141107 msgid ""
9151108 "parses a series of event components and executes them as a single event"
9161109 msgstr ""
9171110
918 #: ../../../src/MenuDevConsole.cpp:369
1111 #: ../../../src/MenuDevConsole.cpp:386
9191112 msgid "clears the command history"
9201113 msgstr ""
9211114
922 #: ../../../src/MenuDevConsole.cpp:370
1115 #: ../../../src/MenuDevConsole.cpp:387
9231116 msgid "displays this text"
9241117 msgstr ""
9251118
926 #: ../../../src/MenuDevConsole.cpp:377
1119 #: ../../../src/MenuDevConsole.cpp:394
9271120 msgid "Toggled the developer hud"
9281121 msgstr ""
9291122
930 #: ../../../src/MenuDevConsole.cpp:381
1123 #: ../../../src/MenuDevConsole.cpp:398
9311124 msgid "Toggled the hud"
9321125 msgstr ""
9331126
934 #: ../../../src/MenuDevConsole.cpp:385
1127 #: ../../../src/MenuDevConsole.cpp:402
9351128 msgid "Toggled the FPS counter"
9361129 msgstr ""
9371130
938 #: ../../../src/MenuDevConsole.cpp:534
1131 #: ../../../src/MenuDevConsole.cpp:552
9391132 msgid "ERROR: Incorrect number of arguments"
9401133 msgstr ""
9411134
942 #: ../../../src/MenuDevConsole.cpp:536 ../../../src/MenuDevConsole.cpp:564
1135 #: ../../../src/MenuDevConsole.cpp:554 ../../../src/MenuDevConsole.cpp:582
9431136 msgid "HINT:"
9441137 msgstr ""
9451138
946 #: ../../../src/MenuDevConsole.cpp:536
1139 #: ../../../src/MenuDevConsole.cpp:554
9471140 msgid "<id>"
9481141 msgstr ""
9491142
950 #: ../../../src/MenuDevConsole.cpp:552
1143 #: ../../../src/MenuDevConsole.cpp:570
9511144 #, c-format
9521145 msgid "ERROR: '%s' is not a valid event key"
9531146 msgstr ""
9541147
955 #: ../../../src/MenuDevConsole.cpp:562
1148 #: ../../../src/MenuDevConsole.cpp:580
9561149 msgid "ERROR: Too few arguments"
9571150 msgstr ""
9581151
959 #: ../../../src/MenuDevConsole.cpp:564
1152 #: ../../../src/MenuDevConsole.cpp:582
9601153 msgid "<key>=<val> <key>=<val> ..."
9611154 msgstr ""
9621155
963 #: ../../../src/MenuDevConsole.cpp:569
1156 #: ../../../src/MenuDevConsole.cpp:587
9641157 msgid "ERROR: Unknown command"
9651158 msgstr ""
9661159
967 #: ../../../src/MenuDevConsole.cpp:571
1160 #: ../../../src/MenuDevConsole.cpp:589
9681161 msgid "HINT: Type help"
9691162 msgstr ""
9701163
971 #: ../../../src/MenuEnemy.cpp:138
1164 #: ../../../src/MenuEnemy.cpp:162
9721165 #, c-format
9731166 msgid "%s level %d"
9741167 msgstr "%s nivå %d"
9751168
976 #: ../../../src/MenuEnemy.cpp:162
1169 #: ../../../src/MenuEnemy.cpp:186
9771170 msgid "Dead"
9781171 msgstr "Död"
9791172
980 #: ../../../src/MenuEnemy.cpp:164
1173 #: ../../../src/MenuEnemy.cpp:188
9811174 msgid "Destroyed"
9821175 msgstr ""
9831176
984 #: ../../../src/MenuExit.cpp:85 ../../../src/MenuExit.cpp:139
985 msgid "Paused"
986 msgstr ""
987
988 #: ../../../src/MenuExit.cpp:91
989 msgid "Save & Exit"
990 msgstr ""
991
992 #: ../../../src/MenuExit.cpp:92
993 msgid "Exit"
994 msgstr "Avsluta"
995
996 #: ../../../src/MenuExit.cpp:96
997 msgid "Continue"
998 msgstr ""
999
1000 #: ../../../src/MenuInventory.cpp:73
1001 msgid "Automatically equip items"
1002 msgstr ""
1003
1004 #: ../../../src/MenuInventory.cpp:188
1177 #: ../../../src/MenuGameOver.cpp:69
1178 msgid "Game Over"
1179 msgstr ""
1180
1181 #: ../../../src/MenuInventory.cpp:178
10051182 #, c-format
10061183 msgid "Lost %d%% of %s."
10071184 msgstr ""
10081185
1009 #: ../../../src/MenuInventory.cpp:195
1186 #: ../../../src/MenuInventory.cpp:185
10101187 #, c-format
10111188 msgid "Lost %d%% of total XP."
10121189 msgstr ""
10131190
1014 #: ../../../src/MenuInventory.cpp:200
1191 #: ../../../src/MenuInventory.cpp:190
10151192 #, c-format
10161193 msgid "Lost %d%% of current level XP."
10171194 msgstr ""
10181195
1019 #: ../../../src/MenuInventory.cpp:226
1196 #: ../../../src/MenuInventory.cpp:216
10201197 #, c-format
10211198 msgid "Lost %s."
10221199 msgstr "Förlorade %s."
10231200
1024 #: ../../../src/MenuInventory.cpp:274 ../../../src/MenuStash.cpp:146
1201 #: ../../../src/MenuInventory.cpp:258 ../../../src/MenuStash.cpp:276
10251202 #, c-format
10261203 msgid "%d %s"
10271204 msgstr "%d %s"
10281205
1029 #: ../../../src/MenuInventory.cpp:317
1206 #: ../../../src/MenuInventory.cpp:301
10301207 msgid "Pick up item(s):"
10311208 msgstr ""
10321209
1033 #: ../../../src/MenuInventory.cpp:318
1210 #: ../../../src/MenuInventory.cpp:302
10341211 msgid "Use or equip item:"
10351212 msgstr ""
10361213
1037 #: ../../../src/MenuInventory.cpp:319
1214 #: ../../../src/MenuInventory.cpp:303
10381215 #, c-format
10391216 msgid "%s modifiers"
10401217 msgstr ""
10411218
1042 #: ../../../src/MenuInventory.cpp:320
1219 #: ../../../src/MenuInventory.cpp:304
10431220 msgid "Select a quantity of item:"
10441221 msgstr ""
10451222
1046 #: ../../../src/MenuInventory.cpp:323
1223 #: ../../../src/MenuInventory.cpp:307
10471224 msgid "Stash item stack:"
10481225 msgstr ""
10491226
1050 #: ../../../src/MenuInventory.cpp:325
1227 #: ../../../src/MenuInventory.cpp:309
10511228 msgid "Sell item stack:"
10521229 msgstr ""
10531230
1054 #: ../../../src/MenuInventory.cpp:592
1231 #: ../../../src/MenuInventory.cpp:576
10551232 msgid "You don't have enough of the required item."
10561233 msgstr ""
10571234
1058 #: ../../../src/MenuInventory.cpp:599
1235 #: ../../../src/MenuInventory.cpp:588
10591236 msgid "You can't use this item right now."
10601237 msgstr ""
10611238
1062 #: ../../../src/MenuInventory.cpp:611
1239 #: ../../../src/MenuInventory.cpp:600
10631240 msgid "This item can only be used from the action bar."
10641241 msgstr "Det här föremålet kan bara användas från handlingslisten."
10651242
1066 #: ../../../src/MenuInventory.cpp:729
1243 #: ../../../src/MenuInventory.cpp:718
10671244 msgid "Inventory is full."
10681245 msgstr "Du har inte plats för fler föremål."
10691246
1070 #: ../../../src/MenuInventory.cpp:849
1247 #: ../../../src/MenuInventory.cpp:843
10711248 #, c-format
10721249 msgid "Not enough %s."
10731250 msgstr "Inte tillräckligt med %s."
10741251
1075 #: ../../../src/MenuInventory.cpp:869 ../../../src/MenuInventory.cpp:876
1252 #: ../../../src/MenuInventory.cpp:863 ../../../src/MenuInventory.cpp:870
10761253 msgid "This item can not be sold."
10771254 msgstr ""
10781255
10841261 msgid "Quests"
10851262 msgstr "Uppdrag"
10861263
1087 #: ../../../src/MenuManager.cpp:286
1264 #: ../../../src/MenuManager.cpp:305
10881265 #, c-format
10891266 msgid "XP: %d/%d"
10901267 msgstr "XP: %d/%d"
10911268
1092 #: ../../../src/MenuManager.cpp:827
1269 #: ../../../src/MenuManager.cpp:875
10931270 msgid "This item can not be dropped."
1271 msgstr ""
1272
1273 #: ../../../src/MenuManager.cpp:1501
1274 msgid "Equipped"
1275 msgstr ""
1276
1277 #: ../../../src/MenuMovementType.cpp:87
1278 msgid "Select a Movement Type"
1279 msgstr ""
1280
1281 #: ../../../src/MenuMovementType.cpp:89
1282 msgid "Can be changed later in the Configuration menu."
1283 msgstr ""
1284
1285 #: ../../../src/MenuMovementType.cpp:92 ../../../src/MenuMovementType.cpp:122
1286 msgid "Keyboard"
1287 msgstr ""
1288
1289 #: ../../../src/MenuMovementType.cpp:93 ../../../src/MenuMovementType.cpp:128
1290 msgid "Mouse"
1291 msgstr ""
1292
1293 #: ../../../src/MenuMovementType.cpp:129
1294 msgid "Button"
10941295 msgstr ""
10951296
10961297 #: ../../../src/MenuNumPicker.cpp:59
10971298 msgid "Enter amount:"
10981299 msgstr ""
10991300
1100 #: ../../../src/MenuPowers.cpp:787
1301 #: ../../../src/MenuPowers.cpp:872
11011302 msgid "Passive"
11021303 msgstr ""
11031304
1104 #: ../../../src/MenuPowers.cpp:792
1305 #: ../../../src/MenuPowers.cpp:879
11051306 #, c-format
11061307 msgid "Costs %d MP"
11071308 msgstr "Kostar %d MP"
11081309
1109 #: ../../../src/MenuPowers.cpp:796
1310 #: ../../../src/MenuPowers.cpp:883
11101311 #, c-format
11111312 msgid "Costs %d HP"
11121313 msgstr "Kostar %d HP"
11131314
1114 #: ../../../src/MenuPowers.cpp:801
1315 #: ../../../src/MenuPowers.cpp:887
11151316 msgid "Cooldown:"
11161317 msgstr ""
11171318
1118 #: ../../../src/MenuPowers.cpp:866 ../../../src/MenuPowers.cpp:869
1319 #: ../../../src/MenuPowers.cpp:938 ../../../src/MenuPowers.cpp:941
11191320 msgid "Damage per second"
11201321 msgstr ""
11211322
1122 #: ../../../src/MenuPowers.cpp:872 ../../../src/MenuPowers.cpp:875
1323 #: ../../../src/MenuPowers.cpp:944 ../../../src/MenuPowers.cpp:947
11231324 msgid "HP per second"
11241325 msgstr ""
11251326
1126 #: ../../../src/MenuPowers.cpp:878 ../../../src/MenuPowers.cpp:881
1327 #: ../../../src/MenuPowers.cpp:950 ../../../src/MenuPowers.cpp:953
11271328 msgid "MP per second"
11281329 msgstr ""
11291330
1130 #: ../../../src/MenuPowers.cpp:885
1331 #: ../../../src/MenuPowers.cpp:957
11311332 msgid "Immobilize"
11321333 msgstr ""
11331334
1134 #: ../../../src/MenuPowers.cpp:893
1335 #: ../../../src/MenuPowers.cpp:965
11351336 msgid "Immunity"
11361337 msgstr ""
11371338
1138 #: ../../../src/MenuPowers.cpp:896
1339 #: ../../../src/MenuPowers.cpp:968
11391340 msgid "Immunity to damage over time"
11401341 msgstr ""
11411342
1142 #: ../../../src/MenuPowers.cpp:899
1343 #: ../../../src/MenuPowers.cpp:971
11431344 msgid "Immunity to slow"
11441345 msgstr ""
11451346
1146 #: ../../../src/MenuPowers.cpp:902
1347 #: ../../../src/MenuPowers.cpp:974
11471348 msgid "Immunity to stun"
11481349 msgstr ""
11491350
1150 #: ../../../src/MenuPowers.cpp:905
1351 #: ../../../src/MenuPowers.cpp:977
11511352 msgid "Immunity to HP steal"
11521353 msgstr ""
11531354
1154 #: ../../../src/MenuPowers.cpp:908
1355 #: ../../../src/MenuPowers.cpp:980
11551356 msgid "Immunity to MP steal"
11561357 msgstr ""
11571358
1158 #: ../../../src/MenuPowers.cpp:911
1359 #: ../../../src/MenuPowers.cpp:983
11591360 msgid "Immunity to knockback"
11601361 msgstr ""
11611362
1162 #: ../../../src/MenuPowers.cpp:914
1363 #: ../../../src/MenuPowers.cpp:986
11631364 msgid "Immunity to damage reflection"
11641365 msgstr ""
11651366
1166 #: ../../../src/MenuPowers.cpp:917
1367 #: ../../../src/MenuPowers.cpp:992
11671368 msgid "Stun"
11681369 msgstr ""
11691370
1170 #: ../../../src/MenuPowers.cpp:920
1371 #: ../../../src/MenuPowers.cpp:995
11711372 msgid "Automatic revive on death"
11721373 msgstr ""
11731374
1174 #: ../../../src/MenuPowers.cpp:923
1375 #: ../../../src/MenuPowers.cpp:998
11751376 msgid "Convert"
11761377 msgstr ""
11771378
1178 #: ../../../src/MenuPowers.cpp:926
1379 #: ../../../src/MenuPowers.cpp:1001
11791380 msgid "Fear"
11801381 msgstr ""
11811382
1182 #: ../../../src/MenuPowers.cpp:929
1383 #: ../../../src/MenuPowers.cpp:1004
11831384 msgid "Lifespan"
11841385 msgstr ""
11851386
1186 #: ../../../src/MenuPowers.cpp:953
1387 #: ../../../src/MenuPowers.cpp:1028
11871388 msgid "Magical Shield"
11881389 msgstr ""
11891390
1190 #: ../../../src/MenuPowers.cpp:982
1391 #: ../../../src/MenuPowers.cpp:1057
11911392 msgid "Healing"
11921393 msgstr ""
11931394
1194 #: ../../../src/MenuPowers.cpp:985
1395 #: ../../../src/MenuPowers.cpp:1060
11951396 msgid "Knockback"
11961397 msgstr ""
11971398
1198 #: ../../../src/MenuPowers.cpp:1010
1399 #: ../../../src/MenuPowers.cpp:1084
11991400 #, c-format
12001401 msgid "%d%% chance"
12011402 msgstr ""
12021403
1203 #: ../../../src/MenuPowers.cpp:1062
1404 #: ../../../src/MenuPowers.cpp:1136
12041405 msgid "Base Accuracy"
12051406 msgstr ""
12061407
1207 #: ../../../src/MenuPowers.cpp:1082
1408 #: ../../../src/MenuPowers.cpp:1156
12081409 msgid "Base Critical Chance"
12091410 msgstr ""
12101411
1211 #: ../../../src/MenuPowers.cpp:1090
1412 #: ../../../src/MenuPowers.cpp:1164
12121413 msgid "Ignores Absorbtion"
12131414 msgstr ""
12141415
1215 #: ../../../src/MenuPowers.cpp:1095
1416 #: ../../../src/MenuPowers.cpp:1169
12161417 msgid "Ignores Avoidance"
12171418 msgstr ""
12181419
1219 #: ../../../src/MenuPowers.cpp:1100
1420 #: ../../../src/MenuPowers.cpp:1174
12201421 #, c-format
12211422 msgid "%d%% Chance to crit slowed targets"
12221423 msgstr ""
12231424
1224 #: ../../../src/MenuPowers.cpp:1105
1425 #: ../../../src/MenuPowers.cpp:1179
12251426 #, c-format
12261427 msgid "Elemental Damage (%s)"
12271428 msgstr ""
12281429
1229 #: ../../../src/MenuPowers.cpp:1114
1430 #: ../../../src/MenuPowers.cpp:1188
12301431 #, c-format
12311432 msgid "Requires a %s"
12321433 msgstr "Kräver %s"
12331434
1234 #: ../../../src/MenuPowers.cpp:1151 ../../../src/MenuPowers.cpp:1154
1435 #: ../../../src/MenuPowers.cpp:1226 ../../../src/MenuPowers.cpp:1229
12351436 #, c-format
12361437 msgid "Requires Power: %s"
12371438 msgstr "Kräver styrka: %s"
12381439
1239 #: ../../../src/MenuPowers.cpp:1163
1440 #: ../../../src/MenuPowers.cpp:1238
12401441 msgid "Click to Unlock (uses 1 Skill Point)"
12411442 msgstr ""
12421443
1243 #: ../../../src/MenuPowers.cpp:1167 ../../../src/MenuPowers.cpp:1169
1444 #: ../../../src/MenuPowers.cpp:1242 ../../../src/MenuPowers.cpp:1244
12441445 msgid "Requires 1 Skill Point"
12451446 msgstr ""
12461447
1247 #: ../../../src/MenuPowers.cpp:1355
1248 #, c-format
1249 msgid "%d unspent skill point"
1250 msgstr ""
1251
1252 #: ../../../src/MenuPowers.cpp:1358
1253 #, c-format
1254 msgid "%d unspent skill points"
1255 msgstr ""
1256
1257 #: ../../../src/MenuPowers.cpp:1388
1448 #: ../../../src/MenuPowers.cpp:1444
1449 #, c-format
1450 msgid "Available skill points: %d"
1451 msgstr ""
1452
1453 #: ../../../src/MenuPowers.cpp:1476
12581454 msgid "Next Level:"
12591455 msgstr ""
12601456
1261 #: ../../../src/MenuStash.cpp:96
1262 msgid "Shared Stash"
1263 msgstr "Delad gömma"
1264
1265 #: ../../../src/MenuStash.cpp:209
1266 msgid "Can not store quest items in the stash."
1267 msgstr ""
1268
1269 #: ../../../src/MenuStash.cpp:219
1457 #: ../../../src/MenuStash.cpp:80 ../../../src/MenuStash.cpp:161
1458 msgid "Stash"
1459 msgstr ""
1460
1461 #: ../../../src/MenuStash.cpp:174 ../../../src/MenuStash.cpp:188
1462 msgid "Private"
1463 msgstr ""
1464
1465 #: ../../../src/MenuStash.cpp:175
1466 msgid "Shared"
1467 msgstr ""
1468
1469 #: ../../../src/MenuStash.cpp:340
1470 msgid "This item can not be stored in the stash."
1471 msgstr ""
1472
1473 #: ../../../src/MenuStash.cpp:345
1474 msgid "This item can not be stored in the private stash."
1475 msgstr ""
1476
1477 #: ../../../src/MenuStash.cpp:350
1478 msgid "This item can not be stored in the shared stash."
1479 msgstr ""
1480
1481 #: ../../../src/MenuStash.cpp:360
12701482 msgid "Stash is full."
12711483 msgstr ""
12721484
1273 #: ../../../src/MenuTalker.cpp:454
1485 #: ../../../src/MenuStash.cpp:414
1486 #, c-format
1487 msgid "Can not store item in stash: %s"
1488 msgstr ""
1489
1490 #: ../../../src/MenuTalker.cpp:448
1491 #, c-format
1492 msgid "<dialog node %d>"
1493 msgstr ""
1494
1495 #: ../../../src/MenuTalker.cpp:456
12741496 msgid "Trade"
12751497 msgstr "Handel"
12761498
1277 #: ../../../src/MenuVendor.cpp:58
1499 #: ../../../src/MenuVendor.cpp:60
12781500 msgid "Buyback"
12791501 msgstr "Återköp"
12801502
1281 #: ../../../src/MenuVendor.cpp:279
1503 #: ../../../src/MenuVendor.cpp:283
12821504 msgid "Vendor"
12831505 msgstr "Tillverkare"
12841506
1285 #: ../../../src/PowerManager.cpp:1136
1507 #: ../../../src/PowerManager.cpp:1208
12861508 #, c-format
12871509 msgid "+%d Shield"
12881510 msgstr "+%d Sköld"
12891511
1290 #: ../../../src/PowerManager.cpp:1392
1512 #: ../../../src/PowerManager.cpp:1465
12911513 msgid "You are already transformed, untransform first."
12921514 msgstr "Du är redan i omvandlad form, omvandla dig tillbaka först."
12931515
1294 #: ../../../src/PowerManager.cpp:1404
1516 #: ../../../src/PowerManager.cpp:1477
12951517 msgid "Could not untransform at this position."
12961518 msgstr ""
12971519
12991521 msgid "Completed Quests"
13001522 msgstr ""
13011523
1302 #: ../../../src/SaveLoad.cpp:243 ../../../src/SaveLoad.cpp:244
1524 #: ../../../src/SaveLoad.cpp:250 ../../../src/SaveLoad.cpp:251
13031525 msgid "Game saved."
13041526 msgstr ""
13051527
1306 #: ../../../src/SDLInputState.cpp:582
1528 #: ../../../src/SDLInputState.cpp:643
1529 msgid "BkSp"
1530 msgstr ""
1531
1532 #: ../../../src/SDLInputState.cpp:644
1533 msgid "Caps"
1534 msgstr ""
1535
1536 #: ../../../src/SDLInputState.cpp:645
1537 msgid "Del"
1538 msgstr ""
1539
1540 #: ../../../src/SDLInputState.cpp:647 ../../../src/SDLInputState.cpp:677
1541 msgid "End"
1542 msgstr ""
1543
1544 #: ../../../src/SDLInputState.cpp:648
1545 msgid "Esc"
1546 msgstr ""
1547
1548 #: ../../../src/SDLInputState.cpp:649 ../../../src/SDLInputState.cpp:679
1549 msgid "Home"
1550 msgstr ""
1551
1552 #: ../../../src/SDLInputState.cpp:650
1553 msgid "Ins"
1554 msgstr ""
1555
1556 #: ../../../src/SDLInputState.cpp:651
1557 msgid "LAlt"
1558 msgstr ""
1559
1560 #: ../../../src/SDLInputState.cpp:652
1561 msgid "LCtrl"
1562 msgstr ""
1563
1564 #: ../../../src/SDLInputState.cpp:654
1565 msgid "LShft"
1566 msgstr ""
1567
1568 #: ../../../src/SDLInputState.cpp:655
1569 msgid "Num"
1570 msgstr ""
1571
1572 #: ../../../src/SDLInputState.cpp:656
1573 msgid "PgDn"
1574 msgstr ""
1575
1576 #: ../../../src/SDLInputState.cpp:657
1577 msgid "PgUp"
1578 msgstr ""
1579
1580 #: ../../../src/SDLInputState.cpp:658 ../../../src/SDLInputState.cpp:688
1581 msgid "Pause"
1582 msgstr ""
1583
1584 #: ../../../src/SDLInputState.cpp:659
1585 msgid "Print"
1586 msgstr ""
1587
1588 #: ../../../src/SDLInputState.cpp:660
1589 msgid "RAlt"
1590 msgstr ""
1591
1592 #: ../../../src/SDLInputState.cpp:661
1593 msgid "RCtrl"
1594 msgstr ""
1595
1596 #: ../../../src/SDLInputState.cpp:662
1597 msgid "Ret"
1598 msgstr ""
1599
1600 #: ../../../src/SDLInputState.cpp:664
1601 msgid "RShft"
1602 msgstr ""
1603
1604 #: ../../../src/SDLInputState.cpp:665
1605 msgid "SLock"
1606 msgstr ""
1607
1608 #: ../../../src/SDLInputState.cpp:666
1609 msgid "Spc"
1610 msgstr ""
1611
1612 #: ../../../src/SDLInputState.cpp:667 ../../../src/SDLInputState.cpp:697
1613 msgid "Tab"
1614 msgstr ""
1615
1616 #: ../../../src/SDLInputState.cpp:673
13071617 msgid "Backspace"
13081618 msgstr ""
13091619
1310 #: ../../../src/SDLInputState.cpp:583
1620 #: ../../../src/SDLInputState.cpp:674
13111621 msgid "CapsLock"
13121622 msgstr ""
13131623
1314 #: ../../../src/SDLInputState.cpp:586
1315 msgid "End"
1316 msgstr ""
1317
1318 #: ../../../src/SDLInputState.cpp:587
1624 #: ../../../src/SDLInputState.cpp:678
13191625 msgid "Escape"
13201626 msgstr ""
13211627
1322 #: ../../../src/SDLInputState.cpp:588
1323 msgid "Home"
1324 msgstr ""
1325
1326 #: ../../../src/SDLInputState.cpp:589
1628 #: ../../../src/SDLInputState.cpp:680
13271629 msgid "Insert"
13281630 msgstr ""
13291631
1330 #: ../../../src/SDLInputState.cpp:590
1632 #: ../../../src/SDLInputState.cpp:681
13311633 msgid "Left Alt"
13321634 msgstr ""
13331635
1334 #: ../../../src/SDLInputState.cpp:591
1636 #: ../../../src/SDLInputState.cpp:682
13351637 msgid "Left Ctrl"
13361638 msgstr ""
13371639
1338 #: ../../../src/SDLInputState.cpp:593
1640 #: ../../../src/SDLInputState.cpp:684
13391641 msgid "Left Shift"
13401642 msgstr ""
13411643
1342 #: ../../../src/SDLInputState.cpp:594
1644 #: ../../../src/SDLInputState.cpp:685
13431645 msgid "NumLock"
13441646 msgstr ""
13451647
1346 #: ../../../src/SDLInputState.cpp:595
1648 #: ../../../src/SDLInputState.cpp:686
13471649 msgid "PageDown"
13481650 msgstr ""
13491651
1350 #: ../../../src/SDLInputState.cpp:596
1652 #: ../../../src/SDLInputState.cpp:687
13511653 msgid "PageUp"
13521654 msgstr ""
13531655
1354 #: ../../../src/SDLInputState.cpp:597
1355 msgid "Pause"
1356 msgstr ""
1357
1358 #: ../../../src/SDLInputState.cpp:598
1656 #: ../../../src/SDLInputState.cpp:689
13591657 msgid "PrintScreen"
13601658 msgstr ""
13611659
1362 #: ../../../src/SDLInputState.cpp:599
1660 #: ../../../src/SDLInputState.cpp:690
13631661 msgid "Right Alt"
13641662 msgstr ""
13651663
1366 #: ../../../src/SDLInputState.cpp:600
1664 #: ../../../src/SDLInputState.cpp:691
13671665 msgid "Right Ctrl"
13681666 msgstr ""
13691667
1370 #: ../../../src/SDLInputState.cpp:601
1668 #: ../../../src/SDLInputState.cpp:692
13711669 msgid "Return"
13721670 msgstr ""
13731671
1374 #: ../../../src/SDLInputState.cpp:603
1672 #: ../../../src/SDLInputState.cpp:694
13751673 msgid "Right Shift"
13761674 msgstr ""
13771675
1378 #: ../../../src/SDLInputState.cpp:604
1676 #: ../../../src/SDLInputState.cpp:695
13791677 msgid "ScrollLock"
13801678 msgstr ""
13811679
1382 #: ../../../src/SDLInputState.cpp:605
1680 #: ../../../src/SDLInputState.cpp:696
13831681 msgid "Space"
13841682 msgstr ""
13851683
1386 #: ../../../src/SDLInputState.cpp:606
1387 msgid "Tab"
1388 msgstr ""
1389
1390 #: ../../../src/SDLInputState.cpp:620
1684 #: ../../../src/SDLInputState.cpp:710
1685 #, c-format
1686 msgid "M%d"
1687 msgstr ""
1688
1689 #: ../../../src/SDLInputState.cpp:716
13911690 #, c-format
13921691 msgid "Mouse %d"
13931692 msgstr ""
13941693
1395 #: ../../../src/SDLInputState.cpp:628
1694 #: ../../../src/SDLInputState.cpp:726
1695 #, c-format
1696 msgid "JX%d-"
1697 msgstr ""
1698
1699 #: ../../../src/SDLInputState.cpp:728
13961700 #, c-format
13971701 msgid "Axis %d -"
13981702 msgstr ""
13991703
1400 #: ../../../src/SDLInputState.cpp:630
1704 #: ../../../src/SDLInputState.cpp:732
1705 #, c-format
1706 msgid "JX%d+"
1707 msgstr ""
1708
1709 #: ../../../src/SDLInputState.cpp:734
14011710 #, c-format
14021711 msgid "Axis %d +"
14031712 msgstr ""
14041713
1405 #: ../../../src/SDLInputState.cpp:633
1714 #: ../../../src/SDLInputState.cpp:739
1715 #, c-format
1716 msgid "JB%d"
1717 msgstr ""
1718
1719 #: ../../../src/SDLInputState.cpp:741
14061720 #, c-format
14071721 msgid "Button %d"
14081722 msgstr ""
14091723
1410 #: ../../../src/SDLInputState.cpp:637
1411 msgid "(none)"
1412 msgstr ""
1413
1414 #: ../../../src/SDLInputState.cpp:677
1724 #: ../../../src/SDLInputState.cpp:787
14151725 msgid "Touch control D-Pad"
14161726 msgstr ""
14171727
1418 #: ../../../src/SDLInputState.cpp:701
1728 #: ../../../src/SDLInputState.cpp:810
14191729 msgid "Touch control buttons"
14201730 msgstr ""
14211731
1422 #: ../../../src/SDLInputState.cpp:716
1732 #: ../../../src/SDLInputState.cpp:824
14231733 msgid "Tap"
14241734 msgstr ""
14251735
1426 #: ../../../src/SDLInputState.cpp:760 ../../../src/SDLInputState.cpp:764
1427 #: ../../../src/SDLInputState.cpp:768
1736 #: ../../../src/SDLInputState.cpp:876 ../../../src/SDLInputState.cpp:878
1737 #, c-format
1738 msgid "Can not bind: %s"
1739 msgstr ""
1740
1741 #: ../../../src/SDLInputState.cpp:890 ../../../src/SDLInputState.cpp:894
1742 #: ../../../src/SDLInputState.cpp:898
14281743 #, c-format
14291744 msgid "'%s' is no longer bound to:"
14301745 msgstr ""
15831898 msgid "Base MP"
15841899 msgstr ""
15851900
1586 #: ../../../src/Utils.cpp:346
1901 #: ../../../src/Utils.cpp:365
15871902 msgid "k"
15881903 msgstr "k"
15891904
1590 #: ../../../src/Utils.cpp:580
1905 #: ../../../src/Utils.cpp:635
15911906 #, c-format
15921907 msgid "%s second"
15931908 msgstr ""
15941909
1595 #: ../../../src/Utils.cpp:583
1910 #: ../../../src/Utils.cpp:638
15961911 #, c-format
15971912 msgid "%s seconds"
15981913 msgstr ""
44 #
55 # Translators:
66 # Justin Jacobs <jajdorkster@gmail.com>, 2018
7 # Sergiy Borodych, 2018
8 # igorko <mansonigor@gmail.com>, 2018
7 # igorko <mansonigor@gmail.com>, 2019
8 # Sergiy Borodych, 2020
99 #
1010 #, fuzzy
1111 msgid ""
1212 msgstr ""
1313 "Project-Id-Version: PACKAGE VERSION\n"
1414 "Report-Msgid-Bugs-To: \n"
15 "POT-Creation-Date: 2018-11-17 21:50-0500\n"
15 "POT-Creation-Date: 2021-05-23 20:34-0400\n"
1616 "PO-Revision-Date: 2018-03-28 19:16+0000\n"
17 "Last-Translator: igorko <mansonigor@gmail.com>, 2018\n"
17 "Last-Translator: Sergiy Borodych, 2020\n"
1818 "Language-Team: Ukrainian (https://www.transifex.com/flareorg/teams/84925/uk/)\n"
1919 "MIME-Version: 1.0\n"
2020 "Content-Type: text/plain; charset=UTF-8\n"
2222 "Language: uk\n"
2323 "Plural-Forms: nplurals=4; plural=(n % 1 == 0 && n % 10 == 1 && n % 100 != 11 ? 0 : n % 1 == 0 && n % 10 >= 2 && n % 10 <= 4 && (n % 100 < 12 || n % 100 > 14) ? 1 : n % 1 == 0 && (n % 10 ==0 || (n % 10 >=5 && n % 10 <=9) || (n % 100 >=11 && n % 100 <=14 )) ? 2: 3);\n"
2424
25 #: ../../../src/Avatar.cpp:367
25 #: ../../../src/Avatar.cpp:391
26 msgid "Your health is low!"
27 msgstr "У Вас мало Здоров'я!"
28
29 #: ../../../src/Avatar.cpp:421
2630 #, c-format
2731 msgid "Congratulations, you have reached level %d!"
28 msgstr "Вітаємо, ви перейшли на рівень %d!"
29
30 #: ../../../src/Avatar.cpp:369
31 msgid "You may increase one attribute through the Character Menu."
32 msgstr "Ви можете покращити одну характеристику в Меню Персонажа."
33
34 #: ../../../src/Avatar.cpp:583
35 msgid "You are defeated. Game over! ${INPUT_CONTINUE} to exit to Title."
36 msgstr "Вас перемогли. Гра завершена! ${INPUT_CONTINUE} щоб вийти в Меню."
37
38 #: ../../../src/Avatar.cpp:589
39 msgid "You are defeated. ${INPUT_CONTINUE} to continue."
40 msgstr "Вас перемогли. ${INPUT_CONTINUE} щоб продовжити."
41
42 #: ../../../src/Avatar.cpp:839
32 msgstr "Вітаємо, Ви перейшли на рівень %d!"
33
34 #: ../../../src/Avatar.cpp:423
35 msgid "You may increase one or more attributes through the Character Menu."
36 msgstr "Ви можете покращити одну чи кілька характеристик в Меню Персонажа."
37
38 #: ../../../src/Avatar.cpp:427
39 msgid "You may unlock one or more abilities through the Powers Menu."
40 msgstr "Ви можете розблокувати одне чи кілька умінь в Меню Умінь."
41
42 #: ../../../src/Avatar.cpp:689
43 msgid "You are defeated."
44 msgstr ""
45
46 #: ../../../src/Avatar.cpp:935
4347 msgid "Transformation expired. You have been moved back to a safe place."
4448 msgstr "Час перетворення скінчився. Ви були переміщені в безпечне місце."
4549
46 #: ../../../src/CampaignManager.cpp:153
50 #: ../../../src/CampaignManager.cpp:152
4751 #, c-format
4852 msgid "%d %s removed."
4953 msgstr "%d %s втрачено."
5054
51 #: ../../../src/CampaignManager.cpp:162
55 #: ../../../src/CampaignManager.cpp:171
56 #, c-format
57 msgid "%s x%d removed."
58 msgstr "%s x%d вилучено."
59
60 #: ../../../src/CampaignManager.cpp:173
5261 #, c-format
5362 msgid "%s removed."
5463 msgstr "%s втрачено."
5564
56 #: ../../../src/CampaignManager.cpp:175
65 #: ../../../src/CampaignManager.cpp:187
66 #, c-format
67 msgid "You receive %d %s."
68 msgstr "Ви отримали %d %s."
69
70 #: ../../../src/CampaignManager.cpp:191
71 #, c-format
72 msgid "You receive %s x%d."
73 msgstr "Ви отримали %s x%d."
74
75 #: ../../../src/CampaignManager.cpp:193
5776 #, c-format
5877 msgid "You receive %s."
5978 msgstr "Ви отримали %s."
6079
61 #: ../../../src/CampaignManager.cpp:177
62 #, c-format
63 msgid "You receive %s x%d."
64 msgstr "Ви отримали %s x%d."
65
66 #: ../../../src/CampaignManager.cpp:186
67 #, c-format
68 msgid "You receive %d %s."
69 msgstr "Ви отримали %d %s."
70
71 #: ../../../src/CampaignManager.cpp:195
80 #: ../../../src/CampaignManager.cpp:210
7281 #, c-format
7382 msgid "You receive %d XP."
7483 msgstr "Ви здобули %d Досвіду."
7584
76 #: ../../../src/CampaignManager.cpp:201
85 #: ../../../src/CampaignManager.cpp:216
7786 msgid "HP restored."
7887 msgstr "Здоров'я відновлено."
7988
80 #: ../../../src/CampaignManager.cpp:205
89 #: ../../../src/CampaignManager.cpp:220
8190 msgid "MP restored."
8291 msgstr "Ману відновлено."
8392
84 #: ../../../src/CampaignManager.cpp:210
93 #: ../../../src/CampaignManager.cpp:225
8594 msgid "HP and MP restored."
8695 msgstr "Здоров'я та Мана відновлені."
8796
88 #: ../../../src/CampaignManager.cpp:214
97 #: ../../../src/CampaignManager.cpp:229
8998 msgid "Negative effects removed."
9099 msgstr "Шкідливі ефекти усунено."
91100
92 #: ../../../src/CampaignManager.cpp:220
101 #: ../../../src/CampaignManager.cpp:235
93102 msgid "HP and MP restored, negative effects removed"
94103 msgstr "Здоров'я та Мана відновлені, шкідливі ефекти усунено"
95104
113122 "\n"
114123 "Стандартний рендерер, який часто швидший від програмного SDL рендерера."
115124
116 #: ../../../src/EngineSettings.cpp:561
125 #: ../../../src/EngineSettings.cpp:586
117126 msgid "Adventurer"
118127 msgstr "Шукач пригод"
119128
120 #: ../../../src/Entity.cpp:511
129 #: ../../../src/Entity.cpp:527
121130 msgid "miss"
122131 msgstr "промах"
123132
124 #: ../../../src/Entity.cpp:548 ../../../src/PowerManager.cpp:1152
125 #: ../../../src/StatBlock.cpp:805 ../../../src/StatBlock.cpp:811
133 #: ../../../src/Entity.cpp:565 ../../../src/PowerManager.cpp:1224
134 #: ../../../src/StatBlock.cpp:917 ../../../src/StatBlock.cpp:923
126135 #, c-format
127136 msgid "+%d HP"
128137 msgstr "+%d Здоров'я"
129138
130 #: ../../../src/Entity.cpp:555 ../../../src/StatBlock.cpp:816
131 #: ../../../src/StatBlock.cpp:822
139 #: ../../../src/Entity.cpp:572 ../../../src/StatBlock.cpp:928
140 #: ../../../src/StatBlock.cpp:934
132141 #, c-format
133142 msgid "+%d MP"
134143 msgstr "+%d Мани"
135144
136 #: ../../../src/EventManager.cpp:738
145 #: ../../../src/EventManager.cpp:792
137146 msgid "Unknown destination"
138147 msgstr "Невідомий пункт призначення"
139148
140 #: ../../../src/GameStateConfigBase.cpp:89
141 #: ../../../src/GameStateConfigBase.cpp:110
149 #: ../../../src/GameState.cpp:37 ../../../src/GameState.cpp:58
150 msgid "Loading..."
151 msgstr "Завантаження..."
152
153 #: ../../../src/GameStateLoad.cpp:90 ../../../src/GameStateLoad.cpp:103
154 msgid "Delete Save"
155 msgstr "Видалити"
156
157 #: ../../../src/GameStateLoad.cpp:90
158 msgid "Delete this save?"
159 msgstr "Видалити цього персонажа?"
160
161 #: ../../../src/GameStateLoad.cpp:92
162 msgid "Exit to Title"
163 msgstr "Головне меню"
164
165 #: ../../../src/GameStateLoad.cpp:95
166 msgid "New Game"
167 msgstr "Нова гра"
168
169 #: ../../../src/GameStateLoad.cpp:99 ../../../src/GameStateLoad.cpp:607
170 msgid "Choose a Slot"
171 msgstr "Виберіть слот"
172
173 #: ../../../src/GameStateLoad.cpp:580 ../../../src/GameStateLoad.cpp:601
174 msgid "Enable a story mod to continue"
175 msgstr "Увімкніть мод повісті щоб продовжити"
176
177 #: ../../../src/GameStateLoad.cpp:596
178 msgid "Load Game"
179 msgstr "Завантажити"
180
181 #: ../../../src/GameStateLoad.cpp:705
182 msgid "Entering game world..."
183 msgstr "Входжу в ігровий світ..."
184
185 #: ../../../src/GameStateLoad.cpp:708
186 msgid "Loading saved game..."
187 msgstr "Завантажую збереження..."
188
189 #: ../../../src/GameStateLoad.cpp:741
190 msgid "Invalid save"
191 msgstr "Невірне збереження"
192
193 #: ../../../src/GameStateLoad.cpp:765 ../../../src/ItemManager.cpp:745
194 #: ../../../src/MenuPowers.cpp:860 ../../../src/MenuPowers.cpp:1219
195 #: ../../../src/MenuPowers.cpp:1631
196 #, c-format
197 msgid "Level %d"
198 msgstr "Рівень %d"
199
200 #: ../../../src/GameStateNew.cpp:66 ../../../src/InputState.cpp:416
201 #: ../../../src/MenuConfig.cpp:246
202 msgid "Cancel"
203 msgstr "Скасувати"
204
205 #: ../../../src/GameStateNew.cpp:69
206 msgid "Create"
207 msgstr "Створити"
208
209 #: ../../../src/GameStateNew.cpp:77
210 msgid "Randomize"
211 msgstr "Випадково"
212
213 #: ../../../src/GameStateNew.cpp:93
214 msgid "Choose a Portrait"
215 msgstr "Виберіть портрет"
216
217 #: ../../../src/GameStateNew.cpp:97
218 msgid "Choose a Name"
219 msgstr "Вкажіть ім'я"
220
221 #: ../../../src/GameStateNew.cpp:101
222 msgid "Permadeath?"
223 msgstr "Не воскресає"
224
225 #: ../../../src/GameStateNew.cpp:105
226 msgid "Choose a Class"
227 msgstr "Виберіть клас"
228
229 #: ../../../src/GameStateTitle.cpp:107
230 msgid "Play Game"
231 msgstr "Грати гру"
232
233 #: ../../../src/GameStateTitle.cpp:110
234 msgid "Enable a core mod to continue"
235 msgstr "Увімкніть базовий мод щоб продовжити"
236
237 #: ../../../src/GameStateTitle.cpp:114 ../../../src/MenuMiniMap.cpp:152
238 msgid "Configuration"
239 msgstr "Параметри"
240
241 #: ../../../src/GameStateTitle.cpp:117
242 msgid "Credits"
243 msgstr "Автори"
244
245 #: ../../../src/GameStateTitle.cpp:120
246 msgid "Exit Game"
247 msgstr "Вийти з гри"
248
249 #: ../../../src/InputState.cpp:417
250 msgid "Accept"
251 msgstr "Прийняти"
252
253 #: ../../../src/InputState.cpp:418 ../../../src/MenuMovementType.cpp:123
254 #: ../../../src/MenuMovementType.cpp:132 ../../../src/SDLInputState.cpp:668
255 #: ../../../src/SDLInputState.cpp:698
256 msgid "Up"
257 msgstr "Вверх"
258
259 #: ../../../src/InputState.cpp:419 ../../../src/MenuMovementType.cpp:125
260 #: ../../../src/MenuMovementType.cpp:134 ../../../src/SDLInputState.cpp:646
261 #: ../../../src/SDLInputState.cpp:676
262 msgid "Down"
263 msgstr "Вниз"
264
265 #: ../../../src/InputState.cpp:420 ../../../src/MenuMovementType.cpp:124
266 #: ../../../src/MenuMovementType.cpp:133 ../../../src/SDLInputState.cpp:653
267 #: ../../../src/SDLInputState.cpp:683
268 msgid "Left"
269 msgstr "Вліво"
270
271 #: ../../../src/InputState.cpp:421 ../../../src/MenuMovementType.cpp:126
272 #: ../../../src/MenuMovementType.cpp:135 ../../../src/SDLInputState.cpp:663
273 #: ../../../src/SDLInputState.cpp:693
274 msgid "Right"
275 msgstr "Вправо"
276
277 #: ../../../src/InputState.cpp:422
278 msgid "Bar1"
279 msgstr "Слот1"
280
281 #: ../../../src/InputState.cpp:423
282 msgid "Bar2"
283 msgstr "Слот2"
284
285 #: ../../../src/InputState.cpp:424
286 msgid "Bar3"
287 msgstr "Слот3"
288
289 #: ../../../src/InputState.cpp:425
290 msgid "Bar4"
291 msgstr "Слот4"
292
293 #: ../../../src/InputState.cpp:426
294 msgid "Bar5"
295 msgstr "Слот5"
296
297 #: ../../../src/InputState.cpp:427
298 msgid "Bar6"
299 msgstr "Слот6"
300
301 #: ../../../src/InputState.cpp:428
302 msgid "Bar7"
303 msgstr "Слот7"
304
305 #: ../../../src/InputState.cpp:429
306 msgid "Bar8"
307 msgstr "Слот8"
308
309 #: ../../../src/InputState.cpp:430
310 msgid "Bar9"
311 msgstr "Слот9"
312
313 #: ../../../src/InputState.cpp:431
314 msgid "Bar0"
315 msgstr "Слот0"
316
317 #: ../../../src/InputState.cpp:432 ../../../src/MenuActionBar.cpp:84
318 #: ../../../src/MenuCharacter.cpp:54
319 msgid "Character"
320 msgstr "Персонаж"
321
322 #: ../../../src/InputState.cpp:433 ../../../src/MenuActionBar.cpp:85
323 #: ../../../src/MenuInventory.cpp:130 ../../../src/MenuVendor.cpp:59
324 msgid "Inventory"
325 msgstr "Інвентар"
326
327 #: ../../../src/InputState.cpp:434 ../../../src/MenuActionBar.cpp:86
328 #: ../../../src/MenuPowers.cpp:158
329 msgid "Powers"
330 msgstr "Уміння"
331
332 #: ../../../src/InputState.cpp:435 ../../../src/MenuActionBar.cpp:87
333 #: ../../../src/MenuLog.cpp:72
334 msgid "Log"
335 msgstr "Журнал"
336
337 #: ../../../src/InputState.cpp:436
338 msgid "Main1"
339 msgstr "Дія1"
340
341 #: ../../../src/InputState.cpp:437
342 msgid "Main2"
343 msgstr "Дія2"
344
345 #: ../../../src/InputState.cpp:438
346 msgid "Ctrl"
347 msgstr "Ctrl"
348
349 #: ../../../src/InputState.cpp:439
350 msgid "Shift"
351 msgstr "Shift"
352
353 #: ../../../src/InputState.cpp:440
354 msgid "Alt"
355 msgstr "Alt"
356
357 #: ../../../src/InputState.cpp:441 ../../../src/SDLInputState.cpp:675
358 msgid "Delete"
359 msgstr "Видалити"
360
361 #: ../../../src/InputState.cpp:442
362 msgid "ActionBar Accept"
363 msgstr "Дії: Прийняти"
364
365 #: ../../../src/InputState.cpp:443
366 msgid "ActionBar Left"
367 msgstr "Дії: Вліво"
368
369 #: ../../../src/InputState.cpp:444
370 msgid "ActionBar Right"
371 msgstr "Дії: Вправо"
372
373 #: ../../../src/InputState.cpp:445
374 msgid "ActionBar Use"
375 msgstr "Дії: Використати"
376
377 #: ../../../src/InputState.cpp:446
378 msgid "Developer Menu"
379 msgstr "Меню розробника"
380
381 #: ../../../src/InputState.cpp:448
382 msgid "Left Mouse"
383 msgstr "ЛівКнМиш"
384
385 #: ../../../src/InputState.cpp:449
386 msgid "Middle Mouse"
387 msgstr "СерКнМиш"
388
389 #: ../../../src/InputState.cpp:450
390 msgid "Right Mouse"
391 msgstr "ПрКнМиш"
392
393 #: ../../../src/InputState.cpp:451
394 msgid "Wheel Up"
395 msgstr "Колесо вверх"
396
397 #: ../../../src/InputState.cpp:452
398 msgid "Wheel Down"
399 msgstr "Колесо вниз"
400
401 #: ../../../src/InputState.cpp:453
402 msgid "Mouse X1"
403 msgstr "Мишка X1"
404
405 #: ../../../src/InputState.cpp:454
406 msgid "Mouse X2"
407 msgstr "Мишка X2"
408
409 #: ../../../src/ItemManager.cpp:475
410 msgid "Unknown Item"
411 msgstr "Невідомий предмет"
412
413 #: ../../../src/ItemManager.cpp:646 ../../../src/MenuPowers.cpp:959
414 #, c-format
415 msgid "%d%% Speed"
416 msgstr "%d%% Швидкості"
417
418 #: ../../../src/ItemManager.cpp:650 ../../../src/MenuPowers.cpp:962
419 #, c-format
420 msgid "%d%% Attack Speed"
421 msgstr "%d%% Швидкості атаки"
422
423 #: ../../../src/ItemManager.cpp:672 ../../../src/MenuCharacter.cpp:352
424 #: ../../../src/MenuPowers.cpp:931
425 #, c-format
426 msgid "Resistance (%s)"
427 msgstr "Опір (%s)"
428
429 #: ../../../src/ItemManager.cpp:682
430 #, c-format
431 msgid "Requires %s"
432 msgstr "Потребує %s"
433
434 #: ../../../src/ItemManager.cpp:731
435 msgid "Quest Item"
436 msgstr "Квестовий предмет"
437
438 #: ../../../src/ItemManager.cpp:758
439 #, c-format
440 msgid "Quality: %s"
441 msgstr "Якість: %s"
442
443 #: ../../../src/ItemManager.cpp:783
444 #, c-format
445 msgid "Absorb: %d-%d"
446 msgstr "Поглинання: %d-%d"
447
448 #: ../../../src/ItemManager.cpp:785
449 #, c-format
450 msgid "Absorb: %d"
451 msgstr "Поглинання: %d"
452
453 #: ../../../src/ItemManager.cpp:825 ../../../src/MenuPowers.cpp:1206
454 #: ../../../src/MenuPowers.cpp:1209
455 #, c-format
456 msgid "Requires Level %d"
457 msgstr "Вимагає Рівень %d"
458
459 #: ../../../src/ItemManager.cpp:836 ../../../src/MenuPowers.cpp:1198
460 #: ../../../src/MenuPowers.cpp:1200
461 #, c-format
462 msgid "Requires %s %d"
463 msgstr "Потребує %s %d"
464
465 #: ../../../src/ItemManager.cpp:847
466 #, c-format
467 msgid "Requires Class: %s"
468 msgstr "Вимагає клас: %s"
469
470 #: ../../../src/ItemManager.cpp:863 ../../../src/ItemManager.cpp:875
471 #, c-format
472 msgid "Buy Price: %d %s"
473 msgstr "Ціна купівлі: %d %s"
474
475 #: ../../../src/ItemManager.cpp:865 ../../../src/ItemManager.cpp:877
476 #, c-format
477 msgid "Buy Price: %d %s each"
478 msgstr "Ціна купівлі: %d %s кожен"
479
480 #: ../../../src/ItemManager.cpp:885
481 #, c-format
482 msgid "Sell Price: %d %s"
483 msgstr "Ціна продажу: %d %s"
484
485 #: ../../../src/ItemManager.cpp:887
486 #, c-format
487 msgid "Sell Price: %d %s each"
488 msgstr "Ціна продажу: %d %s кожен"
489
490 #: ../../../src/ItemManager.cpp:896
491 msgid "Set:"
492 msgstr "Набір:"
493
494 #: ../../../src/ItemManager.cpp:903
495 #, c-format
496 msgid "%d items:"
497 msgstr "%d предмети:"
498
499 #: ../../../src/ItemManager.cpp:915
500 #, c-format
501 msgid "Press [%s] to read"
502 msgstr "Натисніть [%s] щоб прочитати"
503
504 #: ../../../src/ItemManager.cpp:918
505 #, c-format
506 msgid "Press [%s] to use"
507 msgstr "Натисніть [%s] для використання"
508
509 #: ../../../src/MenuActionBar.cpp:239 ../../../src/MenuActionBar.cpp:246
510 #: ../../../src/MenuActionBar.cpp:249 ../../../src/MenuActionBar.cpp:255
511 #, c-format
512 msgid "Hotkey: %s"
513 msgstr "Гаряча клавіша: %s"
514
515 #: ../../../src/MenuActionBar.cpp:621
516 msgid "Not enough MP."
517 msgstr "Недостатньо Мани."
518
519 #: ../../../src/MenuActiveEffects.cpp:124
520 #, c-format
521 msgid "x%d"
522 msgstr "x %d"
523
524 #: ../../../src/MenuActiveEffects.cpp:219
525 msgid "Remaining:"
526 msgstr "Залишилось:"
527
528 #: ../../../src/MenuActiveEffects.cpp:225
529 #, c-format
530 msgid "x%d stacks"
531 msgstr "x%d пачок"
532
533 #: ../../../src/MenuCharacter.cpp:73 ../../../src/MenuCharacter.cpp:78
534 msgid "Name"
535 msgstr "Ім'я"
536
537 #: ../../../src/MenuCharacter.cpp:74 ../../../src/MenuCharacter.cpp:79
538 msgid "Level"
539 msgstr "Рівень"
540
541 #: ../../../src/MenuCharacter.cpp:309
542 #, c-format
543 msgid "Available stat points: %d"
544 msgstr ""
545
546 #: ../../../src/MenuCharacter.cpp:353
547 #, c-format
548 msgid "Reduces the damage taken from \"%s\" elemental attacks."
549 msgstr "Зменшує шкоду, завдану атаками стихії \"%s\"."
550
551 #: ../../../src/MenuCharacter.cpp:363 ../../../src/MenuManager.cpp:301
552 #, c-format
553 msgid "XP: %d"
554 msgstr "Досвід: %d"
555
556 #: ../../../src/MenuCharacter.cpp:365
557 #, c-format
558 msgid "Next: %d"
559 msgstr "Наступний: %d"
560
561 #: ../../../src/MenuCharacter.cpp:371
562 #, c-format
563 msgid "base (%d), bonus (%d)"
564 msgstr "базове (%d), бонус (%d)"
565
566 #: ../../../src/MenuCharacter.cpp:379 ../../../src/MenuCharacter.cpp:393
567 msgid "Related stats:"
568 msgstr "Пов'язані характеристики:"
569
570 #: ../../../src/MenuCharacter.cpp:419 ../../../src/MenuCharacter.cpp:443
571 #, c-format
572 msgid "Each level grants %d."
573 msgstr "Кожен рівень додає %d."
574
575 #: ../../../src/MenuCharacter.cpp:423 ../../../src/MenuCharacter.cpp:447
576 #, c-format
577 msgid "Each point of %s grants %d."
578 msgstr "Кожне очко витрачене на %s додає %d."
579
580 #: ../../../src/MenuConfig.cpp:122 ../../../src/MenuConfig.cpp:1171
581 msgid "Clear"
582 msgstr "Очистити"
583
584 #: ../../../src/MenuConfig.cpp:122 ../../../src/MenuConfig.cpp:1169
585 msgid "Assign:"
586 msgstr "Призначити:"
587
588 #: ../../../src/MenuConfig.cpp:123 ../../../src/MenuConfig.cpp:245
142589 msgid "Defaults"
143590 msgstr "Типово"
144591
145 #: ../../../src/GameStateConfigBase.cpp:89
592 #: ../../../src/MenuConfig.cpp:123
146593 msgid "Reset ALL settings?"
147594 msgstr "Скинути ВСІ налаштування?"
148595
149 #: ../../../src/GameStateConfigBase.cpp:109 ../../../src/MenuNumPicker.cpp:49
596 #: ../../../src/MenuConfig.cpp:244 ../../../src/MenuNumPicker.cpp:49
150597 msgid "OK"
151598 msgstr "Гаразд"
152599
153 #: ../../../src/GameStateConfigBase.cpp:111 ../../../src/GameStateNew.cpp:65
154 #: ../../../src/InputState.cpp:401
155 msgid "Cancel"
156 msgstr "Скасувати"
157
158 #: ../../../src/GameStateConfigBase.cpp:160
159 #: ../../../src/GameStateConfigDesktop.cpp:130
600 #: ../../../src/MenuConfig.cpp:248 ../../../src/MenuGameOver.cpp:72
601 msgid "Continue"
602 msgstr "Продовжити"
603
604 #: ../../../src/MenuConfig.cpp:250
605 msgid "Save Game"
606 msgstr "Зберегти гру"
607
608 #: ../../../src/MenuConfig.cpp:293
609 msgid "Default"
610 msgstr "Типово"
611
612 #: ../../../src/MenuConfig.cpp:293
613 msgid ""
614 "Show all loot tooltips, except for those that would be obscured by the "
615 "player or an enemy. Temporarily show all loot tooltips with 'Alt'."
616 msgstr ""
617 "Завжди показувати підказки предметів. крім тих, що будуть заступлені гравцем"
618 " або ворогом. Тимчасово показати всі підказки за допомогою 'Alt'."
619
620 #: ../../../src/MenuConfig.cpp:294
621 msgid "Show all"
622 msgstr "Показати все"
623
624 #: ../../../src/MenuConfig.cpp:294
625 msgid ""
626 "Always show loot tooltips. Temporarily hide all loot tooltips with 'Alt'."
627 msgstr ""
628 "Завжди показувати підказки предметів. Тимчасово приховати всі підказки за "
629 "допомогою 'Alt'."
630
631 #: ../../../src/MenuConfig.cpp:295 ../../../src/MenuConfig.cpp:300
632 msgid "Hidden"
633 msgstr "Приховано"
634
635 #: ../../../src/MenuConfig.cpp:295
636 msgid ""
637 "Always hide loot tooltips, except for when a piece of loot is hovered with "
638 "the mouse cursor. Temporarily show all loot tooltips with 'Alt'."
639 msgstr ""
640 "Завжди приховувати підказки предметів. крім випадків, коли на предмет "
641 "наведено курсор миші. Тимчасово показати всі підказки за допомогою 'Alt'."
642
643 #: ../../../src/MenuConfig.cpp:298
644 msgid "Visible"
645 msgstr "Видима"
646
647 #: ../../../src/MenuConfig.cpp:299
648 msgid "Visible (2x zoom)"
649 msgstr "Видима (2х)"
650
651 #: ../../../src/MenuConfig.cpp:303
652 msgid ""
653 "Controls the type of warning to be activated when the player is below the "
654 "low health threshold."
655 msgstr ""
656 "Керує типом попередження, яке потрібно активувати, коли Здоров'я героя "
657 "знаходиться нижче нижнього порогу."
658
659 #: ../../../src/MenuConfig.cpp:304
660 msgid "- Display a message"
661 msgstr "- Показати повідомлення"
662
663 #: ../../../src/MenuConfig.cpp:305
664 msgid "- Play a sound"
665 msgstr "- Грати звук"
666
667 #: ../../../src/MenuConfig.cpp:306
668 msgid "- Change the cursor"
669 msgstr "- Змінити курсор"
670
671 #: ../../../src/MenuConfig.cpp:308
672 msgid "Disabled"
673 msgstr "Вимкнено"
674
675 #: ../../../src/MenuConfig.cpp:309
676 msgid "All"
677 msgstr "Все"
678
679 #: ../../../src/MenuConfig.cpp:310
680 msgid "Message & Cursor"
681 msgstr "Текст і Курсор"
682
683 #: ../../../src/MenuConfig.cpp:311
684 msgid "Message & Sound"
685 msgstr "Текст і Звук"
686
687 #: ../../../src/MenuConfig.cpp:312
688 msgid "Sound & Cursor"
689 msgstr "Звук і Курсор"
690
691 #: ../../../src/MenuConfig.cpp:313
692 msgid "Message"
693 msgstr "Текст"
694
695 #: ../../../src/MenuConfig.cpp:314
696 msgid "Cursor"
697 msgstr "Курсор"
698
699 #: ../../../src/MenuConfig.cpp:315
700 msgid "Sound"
701 msgstr "Звук"
702
703 #: ../../../src/MenuConfig.cpp:321
704 msgid ""
705 "When the player's health drops below the given threshold, the low health "
706 "notifications are triggered if one or more of them is enabled."
707 msgstr ""
708 "Коли Здоров'я героя знижується нижче заданого порогу, активуються сповіщення"
709 " про низький рівень Здоров'я, якщо одне або більше з них увімкнено."
710
711 #: ../../../src/MenuConfig.cpp:334 ../../../src/MenuConfig.cpp:1587
712 #: ../../../src/MenuGameOver.cpp:116
713 msgid "Exit"
714 msgstr "Вихід"
715
716 #: ../../../src/MenuConfig.cpp:335
717 msgid "Video"
718 msgstr "Відео"
719
720 #: ../../../src/MenuConfig.cpp:336
160721 msgid "Audio"
161722 msgstr "Аудіо"
162723
163 #: ../../../src/GameStateConfigBase.cpp:161
164 #: ../../../src/GameStateConfigDesktop.cpp:131
724 #: ../../../src/MenuConfig.cpp:337
165725 msgid "Interface"
166726 msgstr "Інтерфейс"
167727
168 #: ../../../src/GameStateConfigBase.cpp:162
169 #: ../../../src/GameStateConfigDesktop.cpp:134
728 #: ../../../src/MenuConfig.cpp:338
729 msgid "Input"
730 msgstr "Керування"
731
732 #: ../../../src/MenuConfig.cpp:339
733 msgid "Keybindings"
734 msgstr "Клавіші"
735
736 #: ../../../src/MenuConfig.cpp:340
170737 msgid "Mods"
171738 msgstr "Моди"
172739
173 #: ../../../src/GameStateConfigBase.cpp:249 ../../../src/MenuExit.cpp:72
740 #: ../../../src/MenuConfig.cpp:352
741 msgid "Paused"
742 msgstr "Гру призупинено"
743
744 #: ../../../src/MenuConfig.cpp:355
745 msgid "Time Played"
746 msgstr "Час в грі"
747
748 #: ../../../src/MenuConfig.cpp:361
749 msgid "Renderer"
750 msgstr "Рендерер"
751
752 #: ../../../src/MenuConfig.cpp:362
753 msgid "Full Screen Mode"
754 msgstr "На весь екран"
755
756 #: ../../../src/MenuConfig.cpp:363
757 msgid "Hardware surfaces"
758 msgstr "Апаратні поверхні"
759
760 #: ../../../src/MenuConfig.cpp:364
761 msgid "V-Sync"
762 msgstr "Вертикальна синхронізація"
763
764 #: ../../../src/MenuConfig.cpp:365
765 msgid "Texture Filtering"
766 msgstr "Фільтр текстур"
767
768 #: ../../../src/MenuConfig.cpp:366
769 msgid "DPI scaling"
770 msgstr "Масштабування розлільної здатності"
771
772 #: ../../../src/MenuConfig.cpp:367
773 msgid "Parallax Layers"
774 msgstr "Шари середовища"
775
776 #: ../../../src/MenuConfig.cpp:368
777 msgid "Allow changing gamma"
778 msgstr "Дозволити зміну гами"
779
780 #: ../../../src/MenuConfig.cpp:369
781 msgid "Gamma"
782 msgstr "Гама"
783
784 #: ../../../src/MenuConfig.cpp:371
785 msgid "Sound Volume"
786 msgstr "Гучність звуків"
787
788 #: ../../../src/MenuConfig.cpp:372
174789 msgid "Music Volume"
175790 msgstr "Гучність музики"
176791
177 #: ../../../src/GameStateConfigBase.cpp:253 ../../../src/MenuExit.cpp:77
178 msgid "Sound Volume"
179 msgstr "Гучність звуків"
180
181 #: ../../../src/GameStateConfigBase.cpp:257
792 #: ../../../src/MenuConfig.cpp:374
182793 msgid "Language"
183794 msgstr "Мова"
184795
185 #: ../../../src/GameStateConfigBase.cpp:266
796 #: ../../../src/MenuConfig.cpp:375
186797 msgid "Show FPS"
187798 msgstr "Показувати FPS"
188799
189 #: ../../../src/GameStateConfigBase.cpp:270
800 #: ../../../src/MenuConfig.cpp:376
801 msgid "Hardware mouse cursor"
802 msgstr "Апаратний курсор миші"
803
804 #: ../../../src/MenuConfig.cpp:377
190805 msgid "Colorblind Mode"
191806 msgstr "Безколірний режим"
192807
193 #: ../../../src/GameStateConfigBase.cpp:274
194 msgid "Hardware mouse cursor"
195 msgstr "Апаратний курсор миші"
196
197 #: ../../../src/GameStateConfigBase.cpp:278
808 #: ../../../src/MenuConfig.cpp:378
198809 msgid "Developer Mode"
199810 msgstr "Режим розробника"
200811
201 #: ../../../src/GameStateConfigBase.cpp:282
812 #: ../../../src/MenuConfig.cpp:379
202813 msgid "Subtitles"
203814 msgstr "Субтитри"
204815
205 #: ../../../src/GameStateConfigBase.cpp:286
206 msgid "Active Mods"
207 msgstr "Активні моди"
208
209 #: ../../../src/GameStateConfigBase.cpp:295
210 msgid "Available Mods"
211 msgstr "Наявні моди"
212
213 #: ../../../src/GameStateConfigBase.cpp:314
214 msgid "<< Disable"
215 msgstr "<< Вимкнути"
216
217 #: ../../../src/GameStateConfigBase.cpp:320
218 msgid "Enable >>"
219 msgstr "Увімкнути >>"
220
221 #: ../../../src/GameStateConfigBase.cpp:873
222 msgid "Version:"
223 msgstr "Версія:"
224
225 #: ../../../src/GameStateConfigBase.cpp:878
226 msgid "Game:"
227 msgstr "Гра:"
228
229 #: ../../../src/GameStateConfigBase.cpp:883
230 msgid "Engine version:"
231 msgstr "Версія движку:"
232
233 #: ../../../src/GameStateConfigBase.cpp:891
234 msgid "Requires mods:"
235 msgstr "Необхідні моди:"
236
237 #: ../../../src/GameStateConfigDesktop.cpp:83
238 #: ../../../src/GameStateConfigDesktop.cpp:751
239 msgid "Clear"
240 msgstr "Очистити"
241
242 #: ../../../src/GameStateConfigDesktop.cpp:83
243 #: ../../../src/GameStateConfigDesktop.cpp:749
244 msgid "Assign:"
245 msgstr "Призначити:"
246
247 #: ../../../src/GameStateConfigDesktop.cpp:128
248 msgid "Video"
249 msgstr "Відео"
250
251 #: ../../../src/GameStateConfigDesktop.cpp:132
252 msgid "Input"
253 msgstr "Керування"
254
255 #: ../../../src/GameStateConfigDesktop.cpp:133
256 msgid "Keybindings"
257 msgstr "Клавіші"
258
259 #: ../../../src/GameStateConfigDesktop.cpp:188
816 #: ../../../src/MenuConfig.cpp:380
817 msgid "Loot tooltip visibility"
818 msgstr "Видимість міток речей"
819
820 #: ../../../src/MenuConfig.cpp:381
821 msgid "Mini-map mode"
822 msgstr "Режим міні-мапи"
823
824 #: ../../../src/MenuConfig.cpp:382
825 msgid "Always show stat bar labels"
826 msgstr "Завжди показувати текст на смужках статів"
827
828 #: ../../../src/MenuConfig.cpp:383
829 msgid "Allow stat bar auto-hiding"
830 msgstr "Дозволити автоматичне приховування смужок статів"
831
832 #: ../../../src/MenuConfig.cpp:384
833 msgid "Show combat text"
834 msgstr "Показувати текст бою"
835
836 #: ../../../src/MenuConfig.cpp:385
837 msgid "Automatically equip items"
838 msgstr "Автоматично одягати предмети"
839
840 #: ../../../src/MenuConfig.cpp:386
841 msgid "Show hidden entity markers"
842 msgstr "Показувати маркери прихованих істот."
843
844 #: ../../../src/MenuConfig.cpp:387
845 msgid "Low health notification"
846 msgstr "Дані про низький рівень Здоров'я"
847
848 #: ../../../src/MenuConfig.cpp:388
849 msgid "Low health threshold"
850 msgstr "Нижній поріг Здоров'я"
851
852 #: ../../../src/MenuConfig.cpp:389
853 msgid "Show item comparison tooltips"
854 msgstr ""
855
856 #: ../../../src/MenuConfig.cpp:392 ../../../src/MenuMovementType.cpp:94
857 #: ../../../src/MenuMovementType.cpp:131
858 msgid "Joystick"
859 msgstr "Джойстик"
860
861 #: ../../../src/MenuConfig.cpp:393
862 msgid "Move hero using mouse"
863 msgstr "Керувати рухом героя використовуючи мишку"
864
865 #: ../../../src/MenuConfig.cpp:394
866 msgid "Mouse aim"
867 msgstr "Цілитись мишкою"
868
869 #: ../../../src/MenuConfig.cpp:395
870 msgid "Do not use mouse"
871 msgstr "Не користуватись мишкою"
872
873 #: ../../../src/MenuConfig.cpp:396
874 msgid "Swap mouse movement button"
875 msgstr "Переставити кнопку переміщення миші"
876
877 #: ../../../src/MenuConfig.cpp:397
878 msgid "Attack with mouse movement"
879 msgstr "Атакувати рухом миші"
880
881 #: ../../../src/MenuConfig.cpp:398
882 msgid "Joystick Deadzone"
883 msgstr "Мертва зона джойстика"
884
885 #: ../../../src/MenuConfig.cpp:408
886 #, c-format
887 msgid "Primary binding: %s"
888 msgstr "Основна клавіша: %s"
889
890 #: ../../../src/MenuConfig.cpp:409
891 #, c-format
892 msgid "Alternate binding: %s"
893 msgstr "Альтернативна клавіша: %s"
894
895 #: ../../../src/MenuConfig.cpp:410
896 #, c-format
897 msgid "Joystick binding: %s"
898 msgstr "Елемент керування джойстика: %s"
899
900 #: ../../../src/MenuConfig.cpp:511
260901 msgid ""
261902 "Will try to store surfaces in video memory versus system memory. The effect "
262903 "this has on performance depends on the renderer."
264905 "Гра спробує зберігати поверхні у відеопам'яті, а не в оперативній пам'яті. "
265906 "Ефективність режиму залежить від вибраного рендерера."
266907
267 #: ../../../src/GameStateConfigDesktop.cpp:189
908 #: ../../../src/MenuConfig.cpp:512
268909 msgid ""
269910 "Prevents screen tearing. Disable if you experience \"stuttering\" in "
270911 "windowed mode or input lag."
272913 "Запобігає смиканню екрану. Вимкніть, якщо ви помічаєте \"гальмування\" в "
273914 "віконному режимі або запізнілу реакцію на дії користувача."
274915
275 #: ../../../src/GameStateConfigDesktop.cpp:190
916 #: ../../../src/MenuConfig.cpp:513
276917 msgid ""
277918 "When enabled, this uses the screen DPI in addition to the window dimensions "
278919 "to scale the rendering resolution. Otherwise, only the window dimensions are"
282923 "використовуватись роздільна здатність екрану. Інакше використовуються лише "
283924 "розміри вікна."
284925
285 #: ../../../src/GameStateConfigDesktop.cpp:191
926 #: ../../../src/MenuConfig.cpp:514
286927 msgid ""
287928 "This enables parallax (non-tile) layers. Disabling this setting can improve "
288929 "performance in some cases."
290931 "Вмикає шари оточення (сніг, дощ, туман...). Вимкнення цієї опції може інколи"
291932 " підвищити продуктивність."
292933
293 #: ../../../src/GameStateConfigDesktop.cpp:192
294 msgid "Experimental"
295 msgstr "Експериментально"
296
297 #: ../../../src/GameStateConfigDesktop.cpp:193
298 msgid "For handheld devices"
299 msgstr "Для портативних пристроїв"
300
301 #: ../../../src/GameStateConfigDesktop.cpp:211
302 msgid "Renderer"
303 msgstr "Рендерер"
304
305 #: ../../../src/GameStateConfigDesktop.cpp:227
306 msgid "Full Screen Mode"
307 msgstr "На весь екран"
308
309 #: ../../../src/GameStateConfigDesktop.cpp:231
310 msgid "Move hero using mouse"
311 msgstr "Керувати рухом героя використовуючи мишку"
312
313 #: ../../../src/GameStateConfigDesktop.cpp:235
314 msgid "Hardware surfaces"
315 msgstr "Апаратні поверхні"
316
317 #: ../../../src/GameStateConfigDesktop.cpp:239
318 msgid "V-Sync"
319 msgstr "Вертикальна синхронізація"
320
321 #: ../../../src/GameStateConfigDesktop.cpp:243
322 msgid "Texture Filtering"
323 msgstr "Фільтр текстур"
324
325 #: ../../../src/GameStateConfigDesktop.cpp:247
326 msgid "DPI scaling"
327 msgstr "Масштабування розлільної здатності"
328
329 #: ../../../src/GameStateConfigDesktop.cpp:251
330 msgid "Parallax Layers"
331 msgstr "Шари середовища"
332
333 #: ../../../src/GameStateConfigDesktop.cpp:255
334 msgid "Allow changing gamma"
335 msgstr "Дозволити зміну гами"
336
337 #: ../../../src/GameStateConfigDesktop.cpp:259
338 msgid "Gamma"
339 msgstr "Гама"
340
341 #: ../../../src/GameStateConfigDesktop.cpp:263
342 msgid "Use joystick"
343 msgstr "Увімкнути джойстик"
344
345 #: ../../../src/GameStateConfigDesktop.cpp:267
346 msgid "Joystick"
347 msgstr "Джойстик"
348
349 #: ../../../src/GameStateConfigDesktop.cpp:283
350 msgid "Mouse aim"
351 msgstr "Цілитись мишкою"
352
353 #: ../../../src/GameStateConfigDesktop.cpp:287
354 msgid "Do not use mouse"
355 msgstr "Не користуватись мишкою"
356
357 #: ../../../src/GameStateConfigDesktop.cpp:291
358 msgid "Joystick Deadzone"
359 msgstr "Мертва зона джойстика"
360
361 #: ../../../src/GameState.cpp:37 ../../../src/GameState.cpp:58
362 msgid "Loading..."
363 msgstr "Завантаження..."
364
365 #: ../../../src/GameStateLoad.cpp:88 ../../../src/GameStateLoad.cpp:101
366 msgid "Delete Save"
367 msgstr "Видалити"
368
369 #: ../../../src/GameStateLoad.cpp:88
370 msgid "Delete this save?"
371 msgstr "Видалити цього персонажа?"
372
373 #: ../../../src/GameStateLoad.cpp:90
374 msgid "Exit to Title"
375 msgstr "Головне меню"
376
377 #: ../../../src/GameStateLoad.cpp:93
378 msgid "New Game"
379 msgstr "Нова гра"
380
381 #: ../../../src/GameStateLoad.cpp:97 ../../../src/GameStateLoad.cpp:600
382 msgid "Choose a Slot"
383 msgstr "Виберіть слот"
384
385 #: ../../../src/GameStateLoad.cpp:573 ../../../src/GameStateLoad.cpp:594
386 msgid "Enable a story mod to continue"
387 msgstr "Увімкніть мод повісті щоб продовжити"
388
389 #: ../../../src/GameStateLoad.cpp:589
390 msgid "Load Game"
391 msgstr "Завантажити"
392
393 #: ../../../src/GameStateLoad.cpp:695
394 msgid "Entering game world..."
395 msgstr "Входжу в ігровий світ..."
396
397 #: ../../../src/GameStateLoad.cpp:698
398 msgid "Loading saved game..."
399 msgstr "Завантажую збереження..."
400
401 #: ../../../src/GameStateLoad.cpp:731
402 msgid "Invalid save"
403 msgstr "Невірне збереження"
404
405 #: ../../../src/GameStateLoad.cpp:755 ../../../src/ItemManager.cpp:747
406 #: ../../../src/MenuPowers.cpp:778 ../../../src/MenuPowers.cpp:1144
407 #: ../../../src/MenuPowers.cpp:1542
408 #, c-format
409 msgid "Level %d"
410 msgstr "Рівень %d"
411
412 #: ../../../src/GameStateNew.cpp:68
413 msgid "Create"
414 msgstr "Створити"
415
416 #: ../../../src/GameStateNew.cpp:76
417 msgid "Randomize"
418 msgstr "Випадково"
419
420 #: ../../../src/GameStateNew.cpp:92
421 msgid "Choose a Portrait"
422 msgstr "Виберіть портрет"
423
424 #: ../../../src/GameStateNew.cpp:96
425 msgid "Choose a Name"
426 msgstr "Вкажіть ім'я"
427
428 #: ../../../src/GameStateNew.cpp:100
429 msgid "Permadeath?"
430 msgstr "Не воскресає"
431
432 #: ../../../src/GameStateNew.cpp:104
433 msgid "Choose a Class"
434 msgstr "Виберіть клас"
435
436 #: ../../../src/GameStateTitle.cpp:108
437 msgid "Play Game"
438 msgstr "Грати гру"
439
440 #: ../../../src/GameStateTitle.cpp:111
441 msgid "Enable a core mod to continue"
442 msgstr "Увімкніть базовий мод щоб продовжити"
443
444 #: ../../../src/GameStateTitle.cpp:115
445 msgid "Configuration"
446 msgstr "Параметри"
447
448 #: ../../../src/GameStateTitle.cpp:118
449 msgid "Credits"
450 msgstr "Автори"
451
452 #: ../../../src/GameStateTitle.cpp:121
453 msgid "Exit Game"
454 msgstr "Вийти з гри"
455
456 #: ../../../src/InputState.cpp:402
457 msgid "Accept"
458 msgstr "Прийняти"
459
460 #: ../../../src/InputState.cpp:403 ../../../src/SDLInputState.cpp:607
461 msgid "Up"
462 msgstr "Вверх"
463
464 #: ../../../src/InputState.cpp:404 ../../../src/SDLInputState.cpp:585
465 msgid "Down"
466 msgstr "Вниз"
467
468 #: ../../../src/InputState.cpp:405 ../../../src/SDLInputState.cpp:592
469 msgid "Left"
470 msgstr "Вліво"
471
472 #: ../../../src/InputState.cpp:406 ../../../src/SDLInputState.cpp:602
473 msgid "Right"
474 msgstr "Вправо"
475
476 #: ../../../src/InputState.cpp:407
477 msgid "Bar1"
478 msgstr "Слот1"
479
480 #: ../../../src/InputState.cpp:408
481 msgid "Bar2"
482 msgstr "Слот2"
483
484 #: ../../../src/InputState.cpp:409
485 msgid "Bar3"
486 msgstr "Слот3"
487
488 #: ../../../src/InputState.cpp:410
489 msgid "Bar4"
490 msgstr "Слот4"
491
492 #: ../../../src/InputState.cpp:411
493 msgid "Bar5"
494 msgstr "Слот5"
495
496 #: ../../../src/InputState.cpp:412
497 msgid "Bar6"
498 msgstr "Слот6"
499
500 #: ../../../src/InputState.cpp:413
501 msgid "Bar7"
502 msgstr "Слот7"
503
504 #: ../../../src/InputState.cpp:414
505 msgid "Bar8"
506 msgstr "Слот8"
507
508 #: ../../../src/InputState.cpp:415
509 msgid "Bar9"
510 msgstr "Слот9"
511
512 #: ../../../src/InputState.cpp:416
513 msgid "Bar0"
514 msgstr "Слот0"
515
516 #: ../../../src/InputState.cpp:417 ../../../src/MenuActionBar.cpp:83
517 #: ../../../src/MenuCharacter.cpp:54
518 msgid "Character"
519 msgstr "Персонаж"
520
521 #: ../../../src/InputState.cpp:418 ../../../src/MenuActionBar.cpp:84
522 #: ../../../src/MenuInventory.cpp:137 ../../../src/MenuVendor.cpp:57
523 msgid "Inventory"
524 msgstr "Інвентар"
525
526 #: ../../../src/InputState.cpp:419 ../../../src/MenuActionBar.cpp:85
527 #: ../../../src/MenuPowers.cpp:168
528 msgid "Powers"
529 msgstr "Уміння"
530
531 #: ../../../src/InputState.cpp:420 ../../../src/MenuActionBar.cpp:86
532 #: ../../../src/MenuLog.cpp:72
533 msgid "Log"
534 msgstr "Журнал"
535
536 #: ../../../src/InputState.cpp:421
537 msgid "Main1"
538 msgstr "Дія1"
539
540 #: ../../../src/InputState.cpp:422
541 msgid "Main2"
542 msgstr "Дія2"
543
544 #: ../../../src/InputState.cpp:423
545 msgid "Ctrl"
546 msgstr "Ctrl"
547
548 #: ../../../src/InputState.cpp:424
549 msgid "Shift"
550 msgstr "Shift"
551
552 #: ../../../src/InputState.cpp:425
553 msgid "Alt"
554 msgstr "Alt"
555
556 #: ../../../src/InputState.cpp:426 ../../../src/SDLInputState.cpp:584
557 msgid "Delete"
558 msgstr "Видалити"
559
560 #: ../../../src/InputState.cpp:427
561 msgid "ActionBar Accept"
562 msgstr "Дії: Прийняти"
563
564 #: ../../../src/InputState.cpp:428
565 msgid "ActionBar Left"
566 msgstr "Дії: Вліво"
567
568 #: ../../../src/InputState.cpp:429
569 msgid "ActionBar Right"
570 msgstr "Дії: Вправо"
571
572 #: ../../../src/InputState.cpp:430
573 msgid "ActionBar Use"
574 msgstr "Дії: Використати"
575
576 #: ../../../src/InputState.cpp:431
577 msgid "Developer Menu"
578 msgstr "Меню розробника"
579
580 #: ../../../src/InputState.cpp:433
581 msgid "Left Mouse"
582 msgstr "ЛівКнМиш"
583
584 #: ../../../src/InputState.cpp:434
585 msgid "Middle Mouse"
586 msgstr "СерКнМиш"
587
588 #: ../../../src/InputState.cpp:435
589 msgid "Right Mouse"
590 msgstr "ПрКнМиш"
591
592 #: ../../../src/InputState.cpp:436
593 msgid "Wheel Up"
594 msgstr "Колесо вверх"
595
596 #: ../../../src/InputState.cpp:437
597 msgid "Wheel Down"
598 msgstr "Колесо вниз"
599
600 #: ../../../src/InputState.cpp:438
601 msgid "Mouse X1"
602 msgstr "Мишка X1"
603
604 #: ../../../src/InputState.cpp:439
605 msgid "Mouse X2"
606 msgstr "Мишка X2"
607
608 #: ../../../src/ItemManager.cpp:450 ../../../src/ItemManager.cpp:453
609 msgid "Unknown Item"
610 msgstr "Невідомий предмет"
611
612 #: ../../../src/ItemManager.cpp:648 ../../../src/MenuPowers.cpp:887
613 #, c-format
614 msgid "%d%% Speed"
615 msgstr "%d%% Швидкості"
616
617 #: ../../../src/ItemManager.cpp:652 ../../../src/MenuPowers.cpp:890
618 #, c-format
619 msgid "%d%% Attack Speed"
620 msgstr "%d%% Швидкості атаки"
621
622 #: ../../../src/ItemManager.cpp:674 ../../../src/MenuCharacter.cpp:354
623 #: ../../../src/MenuPowers.cpp:833
624 #, c-format
625 msgid "Resistance (%s)"
626 msgstr "Опір (%s)"
627
628 #: ../../../src/ItemManager.cpp:684
629 #, c-format
630 msgid "Requires %s"
631 msgstr "Потребує %s"
632
633 #: ../../../src/ItemManager.cpp:733
634 msgid "Quest Item"
635 msgstr "Квестовий предмет"
636
637 #: ../../../src/ItemManager.cpp:760
638 #, c-format
639 msgid "Quality: %s"
640 msgstr "Якість: %s"
641
642 #: ../../../src/ItemManager.cpp:785
643 #, c-format
644 msgid "Absorb: %d-%d"
645 msgstr "Поглинання: %d-%d"
646
647 #: ../../../src/ItemManager.cpp:787
648 #, c-format
649 msgid "Absorb: %d"
650 msgstr "Поглинання: %d"
651
652 #: ../../../src/ItemManager.cpp:827 ../../../src/MenuPowers.cpp:1131
653 #: ../../../src/MenuPowers.cpp:1134
654 #, c-format
655 msgid "Requires Level %d"
656 msgstr "Вимагає Рівень %d"
657
658 #: ../../../src/ItemManager.cpp:838 ../../../src/MenuPowers.cpp:1123
659 #: ../../../src/MenuPowers.cpp:1125
660 #, c-format
661 msgid "Requires %s %d"
662 msgstr "Потребує %s %d"
663
664 #: ../../../src/ItemManager.cpp:849
665 #, c-format
666 msgid "Requires Class: %s"
667 msgstr "Вимагає клас: %s"
668
669 #: ../../../src/ItemManager.cpp:864 ../../../src/ItemManager.cpp:876
670 #, c-format
671 msgid "Buy Price: %d %s"
672 msgstr "Ціна купівлі: %d %s"
673
674 #: ../../../src/ItemManager.cpp:866 ../../../src/ItemManager.cpp:878
675 #, c-format
676 msgid "Buy Price: %d %s each"
677 msgstr "Ціна купівлі: %d %s кожен"
678
679 #: ../../../src/ItemManager.cpp:886
680 #, c-format
681 msgid "Sell Price: %d %s"
682 msgstr "Ціна продажу: %d %s"
683
684 #: ../../../src/ItemManager.cpp:888
685 #, c-format
686 msgid "Sell Price: %d %s each"
687 msgstr "Ціна продажу: %d %s кожен"
688
689 #: ../../../src/ItemManager.cpp:897
690 msgid "Set:"
691 msgstr "Набір:"
692
693 #: ../../../src/ItemManager.cpp:904
694 #, c-format
695 msgid "%d items:"
696 msgstr "%d предмети:"
697
698 #: ../../../src/ItemManager.cpp:917
699 #, c-format
700 msgid "Press [%s] to use"
701 msgstr "Натисніть [%s] для використання"
702
703 #: ../../../src/ItemManager.cpp:920
704 #, c-format
705 msgid "Press [%s] to read"
706 msgstr "Натисніть [%s] щоб прочитати"
707
708 #: ../../../src/MenuActionBar.cpp:87
709 msgid "Loot tooltip visibility"
710 msgstr "Видимість міток речей"
711
712 #: ../../../src/MenuActionBar.cpp:88
713 msgid "Mini-map mode"
714 msgstr "Режим міні-мапи"
715
716 #: ../../../src/MenuActionBar.cpp:89
717 msgid "Always show stat bar labels"
718 msgstr "Завжди показувати текст на смужках статів"
719
720 #: ../../../src/MenuActionBar.cpp:90
721 msgid "Show combat text"
722 msgstr "Показувати текст бою"
723
724 #: ../../../src/MenuActionBar.cpp:254 ../../../src/MenuActionBar.cpp:261
725 #: ../../../src/MenuActionBar.cpp:264 ../../../src/MenuActionBar.cpp:271
726 #, c-format
727 msgid "Hotkey: %s"
728 msgstr "Гаряча клавіша: %s"
729
730 #: ../../../src/MenuActionBar.cpp:474
731 #, c-format
732 msgid "Default. Temporarily show all loot tooltips with '%s'."
733 msgstr "Типово. Тимчасово показувати всі мітки з '%s'."
734
735 #: ../../../src/MenuActionBar.cpp:476
736 #, c-format
737 msgid "Show All. Temporarily hide all loot tooltips with '%s'."
738 msgstr "Показати всі. Тимчасово приховати всі мітки з '%s'."
739
740 #: ../../../src/MenuActionBar.cpp:478
741 #, c-format
742 msgid "Hide All. Temporarily show all loot tooltips with '%s'."
743 msgstr "Приховати всі. Тимчасово показувати всі мітки з '%s'"
744
745 #: ../../../src/MenuActionBar.cpp:482
746 msgid "Visible"
747 msgstr "Видима"
748
749 #: ../../../src/MenuActionBar.cpp:484
750 msgid "Visible (2x zoom)"
751 msgstr "Видима (2х)"
752
753 #: ../../../src/MenuActionBar.cpp:486
754 msgid "Hidden"
755 msgstr "Прихована"
756
757 #: ../../../src/MenuActionBar.cpp:490 ../../../src/MenuActionBar.cpp:496
758 msgid "Enabled"
759 msgstr "Увімкнено"
760
761 #: ../../../src/MenuActionBar.cpp:492 ../../../src/MenuActionBar.cpp:498
762 msgid "Disabled"
763 msgstr "Вимкнено"
764
765 #: ../../../src/MenuActionBar.cpp:657
766 msgid "Not enough MP."
767 msgstr "Недостатньо Мани."
768
769 #: ../../../src/MenuActiveEffects.cpp:124
770 #, c-format
771 msgid "x%d"
772 msgstr "x %d"
773
774 #: ../../../src/MenuActiveEffects.cpp:219
775 msgid "Remaining:"
776 msgstr "Залишилось:"
777
778 #: ../../../src/MenuActiveEffects.cpp:225
779 #, c-format
780 msgid "x%d stacks"
781 msgstr "x%d пачок"
782
783 #: ../../../src/MenuCharacter.cpp:73 ../../../src/MenuCharacter.cpp:78
784 msgid "Name"
785 msgstr "Ім'я"
786
787 #: ../../../src/MenuCharacter.cpp:74 ../../../src/MenuCharacter.cpp:79
788 msgid "Level"
789 msgstr "Рівень"
790
791 #: ../../../src/MenuCharacter.cpp:310
792 #, c-format
793 msgid "%d unspent stat point"
794 msgstr "%d навитрачене очко статистики"
795
796 #: ../../../src/MenuCharacter.cpp:313
797 #, c-format
798 msgid "%d unspent stat points"
799 msgstr "%d невитрачених очків статистики"
800
801 #: ../../../src/MenuCharacter.cpp:355
802 #, c-format
803 msgid "Reduces the damage taken from \"%s\" elemental attacks."
804 msgstr "Зменшує шкоду, завдану атаками стихії \"%s\"."
805
806 #: ../../../src/MenuCharacter.cpp:365 ../../../src/MenuManager.cpp:283
807 #, c-format
808 msgid "XP: %d"
809 msgstr "Досвід: %d"
810
811 #: ../../../src/MenuCharacter.cpp:367
812 #, c-format
813 msgid "Next: %d"
814 msgstr "Наступний: %d"
815
816 #: ../../../src/MenuCharacter.cpp:373
817 #, c-format
818 msgid "base (%d), bonus (%d)"
819 msgstr "базове (%d), бонус (%d)"
820
821 #: ../../../src/MenuCharacter.cpp:381 ../../../src/MenuCharacter.cpp:395
822 msgid "Related stats:"
823 msgstr "Пов'язані характеристики:"
824
825 #: ../../../src/MenuCharacter.cpp:421 ../../../src/MenuCharacter.cpp:445
826 #, c-format
827 msgid "Each level grants %d."
828 msgstr "Кожен рівень додає %d."
829
830 #: ../../../src/MenuCharacter.cpp:425 ../../../src/MenuCharacter.cpp:449
831 #, c-format
832 msgid "Each point of %s grants %d."
833 msgstr "Кожне очко витрачене на %s додає %d."
834
835 #: ../../../src/MenuDevConsole.cpp:63
934 #: ../../../src/MenuConfig.cpp:515
935 msgid ""
936 "Enables the below setting that controls the screen gamma level. The behavior"
937 " of the gamma setting can vary between platforms."
938 msgstr ""
939 "Вмикає нижченаведену опцію, яка контролюює рівень гами екрану. Поведінка "
940 "налаштування гами може відрізнятися для різних платформ."
941
942 #: ../../../src/MenuConfig.cpp:516
943 msgid ""
944 "Provides additional text for information that is primarily conveyed through "
945 "color."
946 msgstr ""
947 "Забезпечує додатковий текст для інформації, яка передається через колір."
948
949 #: ../../../src/MenuConfig.cpp:517
950 msgid ""
951 "Some mods will automatically hide the stat bars when they are inactive. "
952 "Disabling this option will keep them displayed at all times."
953 msgstr ""
954 "Деякі моди автоматично приховують смужки статів, коли вони неактивні. Якщо "
955 "вимкнути цю опцію, вони будуть відображатись завжди."
956
957 #: ../../../src/MenuConfig.cpp:518
958 msgid ""
959 "When enabled, empty equipment slots will be filled with applicable items "
960 "when they are obtained."
961 msgstr ""
962 "Коли увімкнено, порожні комірки спорядження будуть заповнені відповідними "
963 "предметами при їх отриманні."
964
965 #: ../../../src/MenuConfig.cpp:519
966 msgid ""
967 "Shows a marker above enemies, allies, and the player when they are obscured "
968 "by tall objects."
969 msgstr ""
970 "Показує маркер над ворогами, союзниками і героєм, коли вони знаходяться за "
971 "високими об'єктами."
972
973 #: ../../../src/MenuConfig.cpp:520
974 msgid ""
975 "When enabled, tooltips for equipped items of the same type are shown next to"
976 " standard item tooltips."
977 msgstr ""
978
979 #: ../../../src/MenuConfig.cpp:521
980 msgid ""
981 "This allows the game to be controlled entirely with the keyboard (or "
982 "joystick)."
983 msgstr ""
984 "Дозволяє керувати грою повністю за допомогою клавіатури (або джойстика)."
985
986 #: ../../../src/MenuConfig.cpp:522
987 msgid ""
988 "When 'Move hero using mouse' is enabled, this setting controls if 'Main1' or"
989 " 'Main2' is used to move the hero. If enabled, 'Main2' will move the hero "
990 "instead of 'Main1'."
991 msgstr ""
992 "Якщо ввімкнено функцію \"Керувати рухом героя використовуючи мишку\", ця "
993 "опція визначає, яка кнопка використовуються для переміщення героя: 'Дія1' чи"
994 " 'Дія2'. Якщо увімкнено, 'Дія2' переміщуватиме героя замість 'Дія1'."
995
996 #: ../../../src/MenuConfig.cpp:523
997 msgid ""
998 "When 'Move hero using mouse' is enabled, this setting controls if the Power "
999 "assigned to the movement button can be used by targeting an enemy. If this "
1000 "setting is disabled, it is required to use 'Shift' to access the Power "
1001 "assigned to the movement button."
1002 msgstr ""
1003 "Якщо ввімкнено функцію \"Керувати рухом героя використовуючи мишку\", ця "
1004 "опція визначає, чи можна використовувати Уміння, призначене на кнопку "
1005 "переміщення, шляхом націлювання на ворога. Якщо це налаштування вимкнено, "
1006 "для доступу до Уміння, призначеного на кнопку переміщення, потрібно "
1007 "використовувати 'Shift'."
1008
1009 #: ../../../src/MenuConfig.cpp:524
1010 msgid ""
1011 "The player's attacks will be aimed in the direction of the mouse cursor when"
1012 " this is enabled."
1013 msgstr ""
1014 "Якщо увімкнено, атаки героя будуть спрямовані у напрямку курсору миші."
1015
1016 #: ../../../src/MenuConfig.cpp:575
1017 msgid "Active Mods"
1018 msgstr "Активні моди"
1019
1020 #: ../../../src/MenuConfig.cpp:584
1021 msgid "Available Mods"
1022 msgstr "Наявні моди"
1023
1024 #: ../../../src/MenuConfig.cpp:603
1025 msgid "<< Disable"
1026 msgstr "<< Вимкнути"
1027
1028 #: ../../../src/MenuConfig.cpp:609
1029 msgid "Enable >>"
1030 msgstr "Увімкнути >>"
1031
1032 #: ../../../src/MenuConfig.cpp:1444
1033 msgid "Version:"
1034 msgstr "Версія:"
1035
1036 #: ../../../src/MenuConfig.cpp:1449
1037 msgid "Game:"
1038 msgstr "Гра:"
1039
1040 #: ../../../src/MenuConfig.cpp:1454
1041 msgid "Engine version:"
1042 msgstr "Версія движку:"
1043
1044 #: ../../../src/MenuConfig.cpp:1462
1045 msgid "Requires mods:"
1046 msgstr "Необхідні моди:"
1047
1048 #: ../../../src/MenuConfig.cpp:1570 ../../../src/SDLInputState.cpp:748
1049 msgid "(none)"
1050 msgstr "(нічого)"
1051
1052 #: ../../../src/MenuConfig.cpp:1587 ../../../src/MenuGameOver.cpp:73
1053 msgid "Save & Exit"
1054 msgstr "Зберегти і Вийти"
1055
1056 #: ../../../src/MenuDevConsole.cpp:65
8361057 msgid "Execute"
8371058 msgstr "Виконати"
8381059
839 #: ../../../src/MenuDevConsole.cpp:101 ../../../src/MenuDevConsole.cpp:151
1060 #: ../../../src/MenuDevConsole.cpp:103 ../../../src/MenuDevConsole.cpp:153
8401061 msgid "Developer Console"
8411062 msgstr "Консоль розробника"
8421063
843 #: ../../../src/MenuDevConsole.cpp:141
1064 #: ../../../src/MenuDevConsole.cpp:143
8441065 #, c-format
8451066 msgid "Use '%s' to inspect with the cursor."
8461067 msgstr "Для аналізу корсором використовуйте '%s'."
8471068
848 #: ../../../src/MenuDevConsole.cpp:146
1069 #: ../../../src/MenuDevConsole.cpp:148
8491070 msgid "Arguments with spaces should be enclosed with double quotes. Example:"
8501071 msgstr ""
8511072 "Аргументи з пропусками мають бути оточені подвійними лапками. Приклад:"
8521073
853 #: ../../../src/MenuDevConsole.cpp:147
1074 #: ../../../src/MenuDevConsole.cpp:149
8541075 msgid "Type 'help' to get a list of commands."
8551076 msgstr "Напишіть 'help' для отримання переліку команд."
8561077
857 #: ../../../src/MenuDevConsole.cpp:209 ../../../src/MenuDevConsole.cpp:213
1078 #: ../../../src/MenuDevConsole.cpp:211 ../../../src/MenuDevConsole.cpp:215
8581079 msgid "px"
8591080 msgstr "px"
8601081
861 #: ../../../src/MenuDevConsole.cpp:224
1082 #: ../../../src/MenuDevConsole.cpp:226
8621083 msgid "Distance"
8631084 msgstr "Відстань"
8641085
865 #: ../../../src/MenuDevConsole.cpp:239 ../../../src/MenuDevConsole.cpp:286
1086 #: ../../../src/MenuDevConsole.cpp:241 ../../../src/MenuDevConsole.cpp:289
1087 #: ../../../src/MenuDevConsole.cpp:303
8661088 msgid "Entity"
8671089 msgstr "Сутність"
8681090
869 #: ../../../src/MenuDevConsole.cpp:261 ../../../src/MenuDevConsole.cpp:268
1091 #: ../../../src/MenuDevConsole.cpp:263 ../../../src/MenuDevConsole.cpp:270
8701092 msgid "none"
8711093 msgstr "нічого"
8721094
873 #: ../../../src/MenuDevConsole.cpp:262 ../../../src/MenuDevConsole.cpp:264
1095 #: ../../../src/MenuDevConsole.cpp:264 ../../../src/MenuDevConsole.cpp:266
8741096 msgid "wall"
8751097 msgstr "стіна"
8761098
877 #: ../../../src/MenuDevConsole.cpp:263 ../../../src/MenuDevConsole.cpp:265
1099 #: ../../../src/MenuDevConsole.cpp:265 ../../../src/MenuDevConsole.cpp:267
8781100 msgid "short wall / pit"
8791101 msgstr "коротка стіна/яма"
8801102
881 #: ../../../src/MenuDevConsole.cpp:266
1103 #: ../../../src/MenuDevConsole.cpp:268
8821104 msgid "entity"
8831105 msgstr "сутність"
8841106
885 #: ../../../src/MenuDevConsole.cpp:267
1107 #: ../../../src/MenuDevConsole.cpp:269
8861108 msgid "entity, ally"
8871109 msgstr "сутність, союзник"
8881110
889 #: ../../../src/MenuDevConsole.cpp:274
1111 #: ../../../src/MenuDevConsole.cpp:276
8901112 msgid "Tile"
8911113 msgstr "Плитка"
8921114
893 #: ../../../src/MenuDevConsole.cpp:360
1115 #: ../../../src/MenuDevConsole.cpp:377
8941116 msgid "adds a power to the action bar"
8951117 msgstr "додає уміння на панель дій"
8961118
897 #: ../../../src/MenuDevConsole.cpp:361
1119 #: ../../../src/MenuDevConsole.cpp:378
8981120 msgid "turns on/off the display of the FPS counter"
8991121 msgstr "вмикає/вимикає відображення FPS"
9001122
901 #: ../../../src/MenuDevConsole.cpp:362
1123 #: ../../../src/MenuDevConsole.cpp:379
9021124 msgid "turns on/off all of the HUD elements"
9031125 msgstr "показує/приховує всі елементи інтерфейсу"
9041126
905 #: ../../../src/MenuDevConsole.cpp:363
1127 #: ../../../src/MenuDevConsole.cpp:380
9061128 msgid "turns on/off the developer hud"
9071129 msgstr "вмикає/вимикає панель розробника"
9081130
909 #: ../../../src/MenuDevConsole.cpp:364
1131 #: ../../../src/MenuDevConsole.cpp:381
9101132 msgid ""
9111133 "Prints a list of powers that match a search term. No search term will list "
9121134 "all items"
9141136 "Виводить список умінь, які відповідають пошуковому запиту. Жоден пошуковий "
9151137 "запит не покаже всіх умінь"
9161138
917 #: ../../../src/MenuDevConsole.cpp:365
1139 #: ../../../src/MenuDevConsole.cpp:382
9181140 msgid "Prints out all the map filenames located in the \"maps/\" directory."
9191141 msgstr "Виводить назви всіх файлів з мапами що знаходяться в теці \"maps/\""
9201142
921 #: ../../../src/MenuDevConsole.cpp:366
1143 #: ../../../src/MenuDevConsole.cpp:383
9221144 msgid ""
9231145 "Prints out the active campaign statuses that match a search term. No search "
9241146 "term will list all active statuses"
9261148 "Виводить статуси активної кампанії, які відповідають пошуковому запиту. "
9271149 "Жоден пошуковий запит не покаже усіх активних статусів"
9281150
929 #: ../../../src/MenuDevConsole.cpp:367
1151 #: ../../../src/MenuDevConsole.cpp:384
9301152 msgid ""
9311153 "Prints a list of items that match a search term. No search term will list "
9321154 "all items"
9341156 "Виводить список елементів, які відповідають пошуковому запиту. Жоден "
9351157 "пошуковий запит не покаже всіх елементів"
9361158
937 #: ../../../src/MenuDevConsole.cpp:368
1159 #: ../../../src/MenuDevConsole.cpp:385
9381160 msgid ""
9391161 "parses a series of event components and executes them as a single event"
9401162 msgstr "аналізує серію компонентів подій та виконує їх як окрему подію"
9411163
942 #: ../../../src/MenuDevConsole.cpp:369
1164 #: ../../../src/MenuDevConsole.cpp:386
9431165 msgid "clears the command history"
9441166 msgstr "Очищує історію команд"
9451167
946 #: ../../../src/MenuDevConsole.cpp:370
1168 #: ../../../src/MenuDevConsole.cpp:387
9471169 msgid "displays this text"
9481170 msgstr "показує цей текст"
9491171
950 #: ../../../src/MenuDevConsole.cpp:377
1172 #: ../../../src/MenuDevConsole.cpp:394
9511173 msgid "Toggled the developer hud"
9521174 msgstr "Стан панелі розробника змінено"
9531175
954 #: ../../../src/MenuDevConsole.cpp:381
1176 #: ../../../src/MenuDevConsole.cpp:398
9551177 msgid "Toggled the hud"
9561178 msgstr "Інтерфейс перемкнено"
9571179
958 #: ../../../src/MenuDevConsole.cpp:385
1180 #: ../../../src/MenuDevConsole.cpp:402
9591181 msgid "Toggled the FPS counter"
9601182 msgstr "Показ FPS перемкнений"
9611183
962 #: ../../../src/MenuDevConsole.cpp:534
1184 #: ../../../src/MenuDevConsole.cpp:552
9631185 msgid "ERROR: Incorrect number of arguments"
9641186 msgstr "ПОМИЛКА: Невірна кількість параметрів"
9651187
966 #: ../../../src/MenuDevConsole.cpp:536 ../../../src/MenuDevConsole.cpp:564
1188 #: ../../../src/MenuDevConsole.cpp:554 ../../../src/MenuDevConsole.cpp:582
9671189 msgid "HINT:"
9681190 msgstr "ПОРАДА:"
9691191
970 #: ../../../src/MenuDevConsole.cpp:536
1192 #: ../../../src/MenuDevConsole.cpp:554
9711193 msgid "<id>"
9721194 msgstr "<id>"
9731195
974 #: ../../../src/MenuDevConsole.cpp:552
1196 #: ../../../src/MenuDevConsole.cpp:570
9751197 #, c-format
9761198 msgid "ERROR: '%s' is not a valid event key"
9771199 msgstr "ПОМИЛКА: '%s' некоректний ключ події"
9781200
979 #: ../../../src/MenuDevConsole.cpp:562
1201 #: ../../../src/MenuDevConsole.cpp:580
9801202 msgid "ERROR: Too few arguments"
9811203 msgstr "ПОМИЛКА: Замало параметрів"
9821204
983 #: ../../../src/MenuDevConsole.cpp:564
1205 #: ../../../src/MenuDevConsole.cpp:582
9841206 msgid "<key>=<val> <key>=<val> ..."
9851207 msgstr "<key>=<val> <key>=<val> ..."
9861208
987 #: ../../../src/MenuDevConsole.cpp:569
1209 #: ../../../src/MenuDevConsole.cpp:587
9881210 msgid "ERROR: Unknown command"
9891211 msgstr "ПОМИЛКА: Невідома команда"
9901212
991 #: ../../../src/MenuDevConsole.cpp:571
1213 #: ../../../src/MenuDevConsole.cpp:589
9921214 msgid "HINT: Type help"
9931215 msgstr "ПІДКАЗКА: Введіть help"
9941216
995 #: ../../../src/MenuEnemy.cpp:138
1217 #: ../../../src/MenuEnemy.cpp:162
9961218 #, c-format
9971219 msgid "%s level %d"
9981220 msgstr "%s рівень %d"
9991221
1000 #: ../../../src/MenuEnemy.cpp:162
1222 #: ../../../src/MenuEnemy.cpp:186
10011223 msgid "Dead"
10021224 msgstr "Мертвий"
10031225
1004 #: ../../../src/MenuEnemy.cpp:164
1226 #: ../../../src/MenuEnemy.cpp:188
10051227 msgid "Destroyed"
10061228 msgstr "Знищений"
10071229
1008 #: ../../../src/MenuExit.cpp:85 ../../../src/MenuExit.cpp:139
1009 msgid "Paused"
1010 msgstr "Призупинено"
1011
1012 #: ../../../src/MenuExit.cpp:91
1013 msgid "Save & Exit"
1014 msgstr "Зберегти і Вийти"
1015
1016 #: ../../../src/MenuExit.cpp:92
1017 msgid "Exit"
1018 msgstr "Вийти"
1019
1020 #: ../../../src/MenuExit.cpp:96
1021 msgid "Continue"
1022 msgstr "Продовжити"
1023
1024 #: ../../../src/MenuInventory.cpp:73
1025 msgid "Automatically equip items"
1026 msgstr "Автоматично одягати предмети"
1027
1028 #: ../../../src/MenuInventory.cpp:188
1230 #: ../../../src/MenuGameOver.cpp:69
1231 msgid "Game Over"
1232 msgstr ""
1233
1234 #: ../../../src/MenuInventory.cpp:178
10291235 #, c-format
10301236 msgid "Lost %d%% of %s."
10311237 msgstr "Втрачено %d%% з %s."
10321238
1033 #: ../../../src/MenuInventory.cpp:195
1239 #: ../../../src/MenuInventory.cpp:185
10341240 #, c-format
10351241 msgid "Lost %d%% of total XP."
10361242 msgstr "Втрачено %d%% загального Досвіду."
10371243
1038 #: ../../../src/MenuInventory.cpp:200
1244 #: ../../../src/MenuInventory.cpp:190
10391245 #, c-format
10401246 msgid "Lost %d%% of current level XP."
10411247 msgstr "Втрачено %d%% Досвіду поточного рівня."
10421248
1043 #: ../../../src/MenuInventory.cpp:226
1249 #: ../../../src/MenuInventory.cpp:216
10441250 #, c-format
10451251 msgid "Lost %s."
10461252 msgstr "Втрачено %s."
10471253
1048 #: ../../../src/MenuInventory.cpp:274 ../../../src/MenuStash.cpp:146
1254 #: ../../../src/MenuInventory.cpp:258 ../../../src/MenuStash.cpp:276
10491255 #, c-format
10501256 msgid "%d %s"
10511257 msgstr "%d %s"
10521258
1053 #: ../../../src/MenuInventory.cpp:317
1259 #: ../../../src/MenuInventory.cpp:301
10541260 msgid "Pick up item(s):"
10551261 msgstr "Підняти предмет(и):"
10561262
1057 #: ../../../src/MenuInventory.cpp:318
1263 #: ../../../src/MenuInventory.cpp:302
10581264 msgid "Use or equip item:"
10591265 msgstr "Використати предмет:"
10601266
1061 #: ../../../src/MenuInventory.cpp:319
1267 #: ../../../src/MenuInventory.cpp:303
10621268 #, c-format
10631269 msgid "%s modifiers"
10641270 msgstr "Модифікатори для %s"
10651271
1066 #: ../../../src/MenuInventory.cpp:320
1272 #: ../../../src/MenuInventory.cpp:304
10671273 msgid "Select a quantity of item:"
10681274 msgstr "Вказати кількість предметів:"
10691275
1070 #: ../../../src/MenuInventory.cpp:323
1276 #: ../../../src/MenuInventory.cpp:307
10711277 msgid "Stash item stack:"
10721278 msgstr "Пачку предметів в тайник:"
10731279
1074 #: ../../../src/MenuInventory.cpp:325
1280 #: ../../../src/MenuInventory.cpp:309
10751281 msgid "Sell item stack:"
10761282 msgstr "Продати пачку предметів:"
10771283
1078 #: ../../../src/MenuInventory.cpp:592
1284 #: ../../../src/MenuInventory.cpp:576
10791285 msgid "You don't have enough of the required item."
10801286 msgstr "У вас недостатньо потрібних предметів."
10811287
1082 #: ../../../src/MenuInventory.cpp:599
1288 #: ../../../src/MenuInventory.cpp:588
10831289 msgid "You can't use this item right now."
10841290 msgstr "Наразі неможливо використати цей предмет."
10851291
1086 #: ../../../src/MenuInventory.cpp:611
1292 #: ../../../src/MenuInventory.cpp:600
10871293 msgid "This item can only be used from the action bar."
10881294 msgstr "Цей предмет може бути використаний лише з панелі дій."
10891295
1090 #: ../../../src/MenuInventory.cpp:729
1296 #: ../../../src/MenuInventory.cpp:718
10911297 msgid "Inventory is full."
10921298 msgstr "Інвентар заповнений."
10931299
1094 #: ../../../src/MenuInventory.cpp:849
1300 #: ../../../src/MenuInventory.cpp:843
10951301 #, c-format
10961302 msgid "Not enough %s."
10971303 msgstr "Недостатньо %s."
10981304
1099 #: ../../../src/MenuInventory.cpp:869 ../../../src/MenuInventory.cpp:876
1305 #: ../../../src/MenuInventory.cpp:863 ../../../src/MenuInventory.cpp:870
11001306 msgid "This item can not be sold."
11011307 msgstr "Цей предмет не можна продати."
11021308
11081314 msgid "Quests"
11091315 msgstr "Квести"
11101316
1111 #: ../../../src/MenuManager.cpp:286
1317 #: ../../../src/MenuManager.cpp:305
11121318 #, c-format
11131319 msgid "XP: %d/%d"
11141320 msgstr "Досвід: %d/%d"
11151321
1116 #: ../../../src/MenuManager.cpp:827
1322 #: ../../../src/MenuManager.cpp:875
11171323 msgid "This item can not be dropped."
11181324 msgstr "Цей предмет не можна викинути."
1325
1326 #: ../../../src/MenuManager.cpp:1501
1327 msgid "Equipped"
1328 msgstr ""
1329
1330 #: ../../../src/MenuMovementType.cpp:87
1331 msgid "Select a Movement Type"
1332 msgstr ""
1333
1334 #: ../../../src/MenuMovementType.cpp:89
1335 msgid "Can be changed later in the Configuration menu."
1336 msgstr ""
1337
1338 #: ../../../src/MenuMovementType.cpp:92 ../../../src/MenuMovementType.cpp:122
1339 msgid "Keyboard"
1340 msgstr ""
1341
1342 #: ../../../src/MenuMovementType.cpp:93 ../../../src/MenuMovementType.cpp:128
1343 msgid "Mouse"
1344 msgstr ""
1345
1346 #: ../../../src/MenuMovementType.cpp:129
1347 msgid "Button"
1348 msgstr ""
11191349
11201350 #: ../../../src/MenuNumPicker.cpp:59
11211351 msgid "Enter amount:"
11221352 msgstr "Вкажіть кількість:"
11231353
1124 #: ../../../src/MenuPowers.cpp:787
1354 #: ../../../src/MenuPowers.cpp:872
11251355 msgid "Passive"
11261356 msgstr "Пасивне"
11271357
1128 #: ../../../src/MenuPowers.cpp:792
1358 #: ../../../src/MenuPowers.cpp:879
11291359 #, c-format
11301360 msgid "Costs %d MP"
11311361 msgstr "Коштує %d Мани"
11321362
1133 #: ../../../src/MenuPowers.cpp:796
1363 #: ../../../src/MenuPowers.cpp:883
11341364 #, c-format
11351365 msgid "Costs %d HP"
11361366 msgstr "Коштує %d Здоров'я"
11371367
1138 #: ../../../src/MenuPowers.cpp:801
1368 #: ../../../src/MenuPowers.cpp:887
11391369 msgid "Cooldown:"
11401370 msgstr "Очікування:"
11411371
1142 #: ../../../src/MenuPowers.cpp:866 ../../../src/MenuPowers.cpp:869
1372 #: ../../../src/MenuPowers.cpp:938 ../../../src/MenuPowers.cpp:941
11431373 msgid "Damage per second"
11441374 msgstr "Шкоди за секунду"
11451375
1146 #: ../../../src/MenuPowers.cpp:872 ../../../src/MenuPowers.cpp:875
1376 #: ../../../src/MenuPowers.cpp:944 ../../../src/MenuPowers.cpp:947
11471377 msgid "HP per second"
11481378 msgstr "Здоров'я за секунду"
11491379
1150 #: ../../../src/MenuPowers.cpp:878 ../../../src/MenuPowers.cpp:881
1380 #: ../../../src/MenuPowers.cpp:950 ../../../src/MenuPowers.cpp:953
11511381 msgid "MP per second"
11521382 msgstr "Мани за секунду"
11531383
1154 #: ../../../src/MenuPowers.cpp:885
1384 #: ../../../src/MenuPowers.cpp:957
11551385 msgid "Immobilize"
11561386 msgstr "Сковування"
11571387
1158 #: ../../../src/MenuPowers.cpp:893
1388 #: ../../../src/MenuPowers.cpp:965
11591389 msgid "Immunity"
11601390 msgstr "Імунітет"
11611391
1162 #: ../../../src/MenuPowers.cpp:896
1392 #: ../../../src/MenuPowers.cpp:968
11631393 msgid "Immunity to damage over time"
11641394 msgstr "Імунітет до шкоди протягом часу"
11651395
1166 #: ../../../src/MenuPowers.cpp:899
1396 #: ../../../src/MenuPowers.cpp:971
11671397 msgid "Immunity to slow"
11681398 msgstr "Імунітет до уповільнення"
11691399
1170 #: ../../../src/MenuPowers.cpp:902
1400 #: ../../../src/MenuPowers.cpp:974
11711401 msgid "Immunity to stun"
11721402 msgstr "Імунітет до оглушення"
11731403
1174 #: ../../../src/MenuPowers.cpp:905
1404 #: ../../../src/MenuPowers.cpp:977
11751405 msgid "Immunity to HP steal"
11761406 msgstr "Імунітет до крадіжки Здоров'я"
11771407
1178 #: ../../../src/MenuPowers.cpp:908
1408 #: ../../../src/MenuPowers.cpp:980
11791409 msgid "Immunity to MP steal"
11801410 msgstr "Імунітет до крадіжки Мани"
11811411
1182 #: ../../../src/MenuPowers.cpp:911
1412 #: ../../../src/MenuPowers.cpp:983
11831413 msgid "Immunity to knockback"
11841414 msgstr "Імунітет до відкидання"
11851415
1186 #: ../../../src/MenuPowers.cpp:914
1416 #: ../../../src/MenuPowers.cpp:986
11871417 msgid "Immunity to damage reflection"
11881418 msgstr "Імунітет до відбиття шкоди."
11891419
1190 #: ../../../src/MenuPowers.cpp:917
1420 #: ../../../src/MenuPowers.cpp:992
11911421 msgid "Stun"
11921422 msgstr "Оглушення"
11931423
1194 #: ../../../src/MenuPowers.cpp:920
1424 #: ../../../src/MenuPowers.cpp:995
11951425 msgid "Automatic revive on death"
11961426 msgstr "Автоматичне відродження при смерті"
11971427
1198 #: ../../../src/MenuPowers.cpp:923
1428 #: ../../../src/MenuPowers.cpp:998
11991429 msgid "Convert"
12001430 msgstr "Перетворення"
12011431
1202 #: ../../../src/MenuPowers.cpp:926
1432 #: ../../../src/MenuPowers.cpp:1001
12031433 msgid "Fear"
12041434 msgstr "Страх"
12051435
1206 #: ../../../src/MenuPowers.cpp:929
1436 #: ../../../src/MenuPowers.cpp:1004
12071437 msgid "Lifespan"
12081438 msgstr "Тривалість життя"
12091439
1210 #: ../../../src/MenuPowers.cpp:953
1440 #: ../../../src/MenuPowers.cpp:1028
12111441 msgid "Magical Shield"
12121442 msgstr "Магічний Щит"
12131443
1214 #: ../../../src/MenuPowers.cpp:982
1444 #: ../../../src/MenuPowers.cpp:1057
12151445 msgid "Healing"
12161446 msgstr "Лікування"
12171447
1218 #: ../../../src/MenuPowers.cpp:985
1448 #: ../../../src/MenuPowers.cpp:1060
12191449 msgid "Knockback"
12201450 msgstr "Відкидання"
12211451
1222 #: ../../../src/MenuPowers.cpp:1010
1452 #: ../../../src/MenuPowers.cpp:1084
12231453 #, c-format
12241454 msgid "%d%% chance"
12251455 msgstr "%d%% шанс"
12261456
1227 #: ../../../src/MenuPowers.cpp:1062
1457 #: ../../../src/MenuPowers.cpp:1136
12281458 msgid "Base Accuracy"
12291459 msgstr "Базова Точність"
12301460
1231 #: ../../../src/MenuPowers.cpp:1082
1461 #: ../../../src/MenuPowers.cpp:1156
12321462 msgid "Base Critical Chance"
12331463 msgstr "Базовий Критичний Шанс"
12341464
1235 #: ../../../src/MenuPowers.cpp:1090
1465 #: ../../../src/MenuPowers.cpp:1164
12361466 msgid "Ignores Absorbtion"
12371467 msgstr "Ігнорує Поглинання"
12381468
1239 #: ../../../src/MenuPowers.cpp:1095
1469 #: ../../../src/MenuPowers.cpp:1169
12401470 msgid "Ignores Avoidance"
12411471 msgstr "Ігнорує Уникнення"
12421472
1243 #: ../../../src/MenuPowers.cpp:1100
1473 #: ../../../src/MenuPowers.cpp:1174
12441474 #, c-format
12451475 msgid "%d%% Chance to crit slowed targets"
12461476 msgstr "%d%% Шанс на крит. сповільненої цілі"
12471477
1248 #: ../../../src/MenuPowers.cpp:1105
1478 #: ../../../src/MenuPowers.cpp:1179
12491479 #, c-format
12501480 msgid "Elemental Damage (%s)"
12511481 msgstr "Шкода від стихії (%s)"
12521482
1253 #: ../../../src/MenuPowers.cpp:1114
1483 #: ../../../src/MenuPowers.cpp:1188
12541484 #, c-format
12551485 msgid "Requires a %s"
12561486 msgstr "Вимагає %s"
12571487
1258 #: ../../../src/MenuPowers.cpp:1151 ../../../src/MenuPowers.cpp:1154
1488 #: ../../../src/MenuPowers.cpp:1226 ../../../src/MenuPowers.cpp:1229
12591489 #, c-format
12601490 msgid "Requires Power: %s"
12611491 msgstr "Вимагає Уміння: %s"
12621492
1263 #: ../../../src/MenuPowers.cpp:1163
1493 #: ../../../src/MenuPowers.cpp:1238
12641494 msgid "Click to Unlock (uses 1 Skill Point)"
12651495 msgstr "Клацніть для вивчення (потребує 1 очко Умінь)"
12661496
1267 #: ../../../src/MenuPowers.cpp:1167 ../../../src/MenuPowers.cpp:1169
1497 #: ../../../src/MenuPowers.cpp:1242 ../../../src/MenuPowers.cpp:1244
12681498 msgid "Requires 1 Skill Point"
12691499 msgstr "Вимагає 1 очко Умінь"
12701500
1271 #: ../../../src/MenuPowers.cpp:1355
1272 #, c-format
1273 msgid "%d unspent skill point"
1274 msgstr "%d невитрачене очко Умінь"
1275
1276 #: ../../../src/MenuPowers.cpp:1358
1277 #, c-format
1278 msgid "%d unspent skill points"
1279 msgstr "%d невитрачених очок Умінь"
1280
1281 #: ../../../src/MenuPowers.cpp:1388
1501 #: ../../../src/MenuPowers.cpp:1444
1502 #, c-format
1503 msgid "Available skill points: %d"
1504 msgstr ""
1505
1506 #: ../../../src/MenuPowers.cpp:1476
12821507 msgid "Next Level:"
12831508 msgstr "Натсупний рівень:"
12841509
1285 #: ../../../src/MenuStash.cpp:96
1286 msgid "Shared Stash"
1287 msgstr "Загальний тайник"
1288
1289 #: ../../../src/MenuStash.cpp:209
1290 msgid "Can not store quest items in the stash."
1291 msgstr "Квестові речі не можна зберігати в тайнику."
1292
1293 #: ../../../src/MenuStash.cpp:219
1510 #: ../../../src/MenuStash.cpp:80 ../../../src/MenuStash.cpp:161
1511 msgid "Stash"
1512 msgstr "Тайник"
1513
1514 #: ../../../src/MenuStash.cpp:174 ../../../src/MenuStash.cpp:188
1515 msgid "Private"
1516 msgstr "Особистий"
1517
1518 #: ../../../src/MenuStash.cpp:175
1519 msgid "Shared"
1520 msgstr "Загальний"
1521
1522 #: ../../../src/MenuStash.cpp:340
1523 msgid "This item can not be stored in the stash."
1524 msgstr "Цю річ не можна зберегти в тайнику."
1525
1526 #: ../../../src/MenuStash.cpp:345
1527 msgid "This item can not be stored in the private stash."
1528 msgstr "Цю річ не можна зберігати в приватному сховку."
1529
1530 #: ../../../src/MenuStash.cpp:350
1531 msgid "This item can not be stored in the shared stash."
1532 msgstr "Цю річ не можна зберігати в спільному сховку."
1533
1534 #: ../../../src/MenuStash.cpp:360
12941535 msgid "Stash is full."
12951536 msgstr "Тайник заповнений."
12961537
1297 #: ../../../src/MenuTalker.cpp:454
1538 #: ../../../src/MenuStash.cpp:414
1539 #, c-format
1540 msgid "Can not store item in stash: %s"
1541 msgstr "Неможливо зберегти в тайнику: %s"
1542
1543 #: ../../../src/MenuTalker.cpp:448
1544 #, c-format
1545 msgid "<dialog node %d>"
1546 msgstr "<dialog node %d>"
1547
1548 #: ../../../src/MenuTalker.cpp:456
12981549 msgid "Trade"
12991550 msgstr "Торгувати"
13001551
1301 #: ../../../src/MenuVendor.cpp:58
1552 #: ../../../src/MenuVendor.cpp:60
13021553 msgid "Buyback"
13031554 msgstr "Викуп"
13041555
1305 #: ../../../src/MenuVendor.cpp:279
1556 #: ../../../src/MenuVendor.cpp:283
13061557 msgid "Vendor"
13071558 msgstr "Торговець"
13081559
1309 #: ../../../src/PowerManager.cpp:1136
1560 #: ../../../src/PowerManager.cpp:1208
13101561 #, c-format
13111562 msgid "+%d Shield"
13121563 msgstr "+%d Захисту"
13131564
1314 #: ../../../src/PowerManager.cpp:1392
1565 #: ../../../src/PowerManager.cpp:1465
13151566 msgid "You are already transformed, untransform first."
13161567 msgstr "Ви вже трансформовані, спершу відновіть початкову форму."
13171568
1318 #: ../../../src/PowerManager.cpp:1404
1569 #: ../../../src/PowerManager.cpp:1477
13191570 msgid "Could not untransform at this position."
13201571 msgstr "Не можу змінити форму в цьому місці."
13211572
13231574 msgid "Completed Quests"
13241575 msgstr "Завершені квести"
13251576
1326 #: ../../../src/SaveLoad.cpp:243 ../../../src/SaveLoad.cpp:244
1577 #: ../../../src/SaveLoad.cpp:250 ../../../src/SaveLoad.cpp:251
13271578 msgid "Game saved."
13281579 msgstr "Гру збережено."
13291580
1330 #: ../../../src/SDLInputState.cpp:582
1581 #: ../../../src/SDLInputState.cpp:643
1582 msgid "BkSp"
1583 msgstr ""
1584
1585 #: ../../../src/SDLInputState.cpp:644
1586 msgid "Caps"
1587 msgstr ""
1588
1589 #: ../../../src/SDLInputState.cpp:645
1590 msgid "Del"
1591 msgstr ""
1592
1593 #: ../../../src/SDLInputState.cpp:647 ../../../src/SDLInputState.cpp:677
1594 msgid "End"
1595 msgstr "End"
1596
1597 #: ../../../src/SDLInputState.cpp:648
1598 msgid "Esc"
1599 msgstr ""
1600
1601 #: ../../../src/SDLInputState.cpp:649 ../../../src/SDLInputState.cpp:679
1602 msgid "Home"
1603 msgstr "Home"
1604
1605 #: ../../../src/SDLInputState.cpp:650
1606 msgid "Ins"
1607 msgstr ""
1608
1609 #: ../../../src/SDLInputState.cpp:651
1610 msgid "LAlt"
1611 msgstr ""
1612
1613 #: ../../../src/SDLInputState.cpp:652
1614 msgid "LCtrl"
1615 msgstr ""
1616
1617 #: ../../../src/SDLInputState.cpp:654
1618 msgid "LShft"
1619 msgstr ""
1620
1621 #: ../../../src/SDLInputState.cpp:655
1622 msgid "Num"
1623 msgstr ""
1624
1625 #: ../../../src/SDLInputState.cpp:656
1626 msgid "PgDn"
1627 msgstr ""
1628
1629 #: ../../../src/SDLInputState.cpp:657
1630 msgid "PgUp"
1631 msgstr ""
1632
1633 #: ../../../src/SDLInputState.cpp:658 ../../../src/SDLInputState.cpp:688
1634 msgid "Pause"
1635 msgstr "Pause"
1636
1637 #: ../../../src/SDLInputState.cpp:659
1638 msgid "Print"
1639 msgstr ""
1640
1641 #: ../../../src/SDLInputState.cpp:660
1642 msgid "RAlt"
1643 msgstr ""
1644
1645 #: ../../../src/SDLInputState.cpp:661
1646 msgid "RCtrl"
1647 msgstr ""
1648
1649 #: ../../../src/SDLInputState.cpp:662
1650 msgid "Ret"
1651 msgstr ""
1652
1653 #: ../../../src/SDLInputState.cpp:664
1654 msgid "RShft"
1655 msgstr ""
1656
1657 #: ../../../src/SDLInputState.cpp:665
1658 msgid "SLock"
1659 msgstr ""
1660
1661 #: ../../../src/SDLInputState.cpp:666
1662 msgid "Spc"
1663 msgstr ""
1664
1665 #: ../../../src/SDLInputState.cpp:667 ../../../src/SDLInputState.cpp:697
1666 msgid "Tab"
1667 msgstr "Tab"
1668
1669 #: ../../../src/SDLInputState.cpp:673
13311670 msgid "Backspace"
13321671 msgstr "Backspace"
13331672
1334 #: ../../../src/SDLInputState.cpp:583
1673 #: ../../../src/SDLInputState.cpp:674
13351674 msgid "CapsLock"
13361675 msgstr "CapsLock"
13371676
1338 #: ../../../src/SDLInputState.cpp:586
1339 msgid "End"
1340 msgstr "End"
1341
1342 #: ../../../src/SDLInputState.cpp:587
1677 #: ../../../src/SDLInputState.cpp:678
13431678 msgid "Escape"
13441679 msgstr "Escape"
13451680
1346 #: ../../../src/SDLInputState.cpp:588
1347 msgid "Home"
1348 msgstr "Home"
1349
1350 #: ../../../src/SDLInputState.cpp:589
1681 #: ../../../src/SDLInputState.cpp:680
13511682 msgid "Insert"
13521683 msgstr "Insert"
13531684
1354 #: ../../../src/SDLInputState.cpp:590
1685 #: ../../../src/SDLInputState.cpp:681
13551686 msgid "Left Alt"
13561687 msgstr "Лівий Alt"
13571688
1358 #: ../../../src/SDLInputState.cpp:591
1689 #: ../../../src/SDLInputState.cpp:682
13591690 msgid "Left Ctrl"
13601691 msgstr "Лівий Ctrl"
13611692
1362 #: ../../../src/SDLInputState.cpp:593
1693 #: ../../../src/SDLInputState.cpp:684
13631694 msgid "Left Shift"
13641695 msgstr "Лівий Shift"
13651696
1366 #: ../../../src/SDLInputState.cpp:594
1697 #: ../../../src/SDLInputState.cpp:685
13671698 msgid "NumLock"
13681699 msgstr "NumLock"
13691700
1370 #: ../../../src/SDLInputState.cpp:595
1701 #: ../../../src/SDLInputState.cpp:686
13711702 msgid "PageDown"
13721703 msgstr "PageDown"
13731704
1374 #: ../../../src/SDLInputState.cpp:596
1705 #: ../../../src/SDLInputState.cpp:687
13751706 msgid "PageUp"
13761707 msgstr "PageUp"
13771708
1378 #: ../../../src/SDLInputState.cpp:597
1379 msgid "Pause"
1380 msgstr "Pause"
1381
1382 #: ../../../src/SDLInputState.cpp:598
1709 #: ../../../src/SDLInputState.cpp:689
13831710 msgid "PrintScreen"
13841711 msgstr "PrintScreen"
13851712
1386 #: ../../../src/SDLInputState.cpp:599
1713 #: ../../../src/SDLInputState.cpp:690
13871714 msgid "Right Alt"
13881715 msgstr "Правий Alt"
13891716
1390 #: ../../../src/SDLInputState.cpp:600
1717 #: ../../../src/SDLInputState.cpp:691
13911718 msgid "Right Ctrl"
13921719 msgstr "Правий Ctrl"
13931720
1394 #: ../../../src/SDLInputState.cpp:601
1721 #: ../../../src/SDLInputState.cpp:692
13951722 msgid "Return"
13961723 msgstr "Enter"
13971724
1398 #: ../../../src/SDLInputState.cpp:603
1725 #: ../../../src/SDLInputState.cpp:694
13991726 msgid "Right Shift"
14001727 msgstr "Правий Shift"
14011728
1402 #: ../../../src/SDLInputState.cpp:604
1729 #: ../../../src/SDLInputState.cpp:695
14031730 msgid "ScrollLock"
14041731 msgstr "ScrollLock"
14051732
1406 #: ../../../src/SDLInputState.cpp:605
1733 #: ../../../src/SDLInputState.cpp:696
14071734 msgid "Space"
14081735 msgstr "Пробіл"
14091736
1410 #: ../../../src/SDLInputState.cpp:606
1411 msgid "Tab"
1412 msgstr "Tab"
1413
1414 #: ../../../src/SDLInputState.cpp:620
1737 #: ../../../src/SDLInputState.cpp:710
1738 #, c-format
1739 msgid "M%d"
1740 msgstr ""
1741
1742 #: ../../../src/SDLInputState.cpp:716
14151743 #, c-format
14161744 msgid "Mouse %d"
14171745 msgstr "Мишка %d"
14181746
1419 #: ../../../src/SDLInputState.cpp:628
1747 #: ../../../src/SDLInputState.cpp:726
1748 #, c-format
1749 msgid "JX%d-"
1750 msgstr ""
1751
1752 #: ../../../src/SDLInputState.cpp:728
14201753 #, c-format
14211754 msgid "Axis %d -"
14221755 msgstr "Вісь %d -"
14231756
1424 #: ../../../src/SDLInputState.cpp:630
1757 #: ../../../src/SDLInputState.cpp:732
1758 #, c-format
1759 msgid "JX%d+"
1760 msgstr ""
1761
1762 #: ../../../src/SDLInputState.cpp:734
14251763 #, c-format
14261764 msgid "Axis %d +"
14271765 msgstr "Вісь %d +"
14281766
1429 #: ../../../src/SDLInputState.cpp:633
1767 #: ../../../src/SDLInputState.cpp:739
1768 #, c-format
1769 msgid "JB%d"
1770 msgstr ""
1771
1772 #: ../../../src/SDLInputState.cpp:741
14301773 #, c-format
14311774 msgid "Button %d"
14321775 msgstr "Кнопка %d"
14331776
1434 #: ../../../src/SDLInputState.cpp:637
1435 msgid "(none)"
1436 msgstr "(нічого)"
1437
1438 #: ../../../src/SDLInputState.cpp:677
1777 #: ../../../src/SDLInputState.cpp:787
14391778 msgid "Touch control D-Pad"
14401779 msgstr "Торкніться кнопок переміщення"
14411780
1442 #: ../../../src/SDLInputState.cpp:701
1781 #: ../../../src/SDLInputState.cpp:810
14431782 msgid "Touch control buttons"
14441783 msgstr "Торкніться кнопок керування"
14451784
1446 #: ../../../src/SDLInputState.cpp:716
1785 #: ../../../src/SDLInputState.cpp:824
14471786 msgid "Tap"
14481787 msgstr "Торкніться"
14491788
1450 #: ../../../src/SDLInputState.cpp:760 ../../../src/SDLInputState.cpp:764
1451 #: ../../../src/SDLInputState.cpp:768
1789 #: ../../../src/SDLInputState.cpp:876 ../../../src/SDLInputState.cpp:878
1790 #, c-format
1791 msgid "Can not bind: %s"
1792 msgstr "Неможливо прив'язати клавішу: %s"
1793
1794 #: ../../../src/SDLInputState.cpp:890 ../../../src/SDLInputState.cpp:894
1795 #: ../../../src/SDLInputState.cpp:898
14521796 #, c-format
14531797 msgid "'%s' is no longer bound to:"
14541798 msgstr "'%s' більше не повязаний з:"
16121956 msgid "Base MP"
16131957 msgstr "Базова Мана"
16141958
1615 #: ../../../src/Utils.cpp:346
1959 #: ../../../src/Utils.cpp:365
16161960 msgid "k"
16171961 msgstr "к"
16181962
1619 #: ../../../src/Utils.cpp:580
1963 #: ../../../src/Utils.cpp:635
16201964 #, c-format
16211965 msgid "%s second"
16221966 msgstr "%s секунда"
16231967
1624 #: ../../../src/Utils.cpp:583
1968 #: ../../../src/Utils.cpp:638
16251969 #, c-format
16261970 msgid "%s seconds"
16271971 msgstr "%s секунд"
1010 msgstr ""
1111 "Project-Id-Version: PACKAGE VERSION\n"
1212 "Report-Msgid-Bugs-To: \n"
13 "POT-Creation-Date: 2018-11-17 21:50-0500\n"
13 "POT-Creation-Date: 2021-05-23 20:34-0400\n"
1414 "PO-Revision-Date: 2018-03-28 19:16+0000\n"
1515 "Last-Translator: Justin Jacobs <jajdorkster@gmail.com>, 2018\n"
1616 "Language-Team: Vietnamese (https://www.transifex.com/flareorg/teams/84925/vi/)\n"
2020 "Language: vi\n"
2121 "Plural-Forms: nplurals=1; plural=0;\n"
2222
23 #: ../../../src/Avatar.cpp:367
23 #: ../../../src/Avatar.cpp:391
24 msgid "Your health is low!"
25 msgstr ""
26
27 #: ../../../src/Avatar.cpp:421
2428 #, c-format
2529 msgid "Congratulations, you have reached level %d!"
2630 msgstr "Chúc mừng, bạn đã đạt cấp độ %d!"
2731
28 #: ../../../src/Avatar.cpp:369
29 msgid "You may increase one attribute through the Character Menu."
30 msgstr "Bạn có thể tăng một chỉ số qua menu Nhân vật."
31
32 #: ../../../src/Avatar.cpp:583
33 msgid "You are defeated. Game over! ${INPUT_CONTINUE} to exit to Title."
34 msgstr ""
35 "Bạn đã bị đánh bại. Trò chơi kết thúc! Nhấn ${INPUT_CONTINUE} để thoát ra "
36 "Trang đầu."
37
38 #: ../../../src/Avatar.cpp:589
39 msgid "You are defeated. ${INPUT_CONTINUE} to continue."
40 msgstr "Bạn đã bị đánh bại. Nhấn ${INPUT_CONTINUE} để tiếp tục."
41
42 #: ../../../src/Avatar.cpp:839
32 #: ../../../src/Avatar.cpp:423
33 msgid "You may increase one or more attributes through the Character Menu."
34 msgstr ""
35
36 #: ../../../src/Avatar.cpp:427
37 msgid "You may unlock one or more abilities through the Powers Menu."
38 msgstr ""
39
40 #: ../../../src/Avatar.cpp:689
41 msgid "You are defeated."
42 msgstr ""
43
44 #: ../../../src/Avatar.cpp:935
4345 msgid "Transformation expired. You have been moved back to a safe place."
4446 msgstr "Sự biến đổi kết thúc. Bạn đã được chuyển về vị trí an toàn."
4547
46 #: ../../../src/CampaignManager.cpp:153
48 #: ../../../src/CampaignManager.cpp:152
4749 #, c-format
4850 msgid "%d %s removed."
4951 msgstr "%d %s đã bị lấy đi."
5052
51 #: ../../../src/CampaignManager.cpp:162
53 #: ../../../src/CampaignManager.cpp:171
54 #, c-format
55 msgid "%s x%d removed."
56 msgstr ""
57
58 #: ../../../src/CampaignManager.cpp:173
5259 #, c-format
5360 msgid "%s removed."
5461 msgstr "%s đã bị lấy đi."
5562
56 #: ../../../src/CampaignManager.cpp:175
63 #: ../../../src/CampaignManager.cpp:187
64 #, c-format
65 msgid "You receive %d %s."
66 msgstr "Bạn nhận được %d %s."
67
68 #: ../../../src/CampaignManager.cpp:191
69 #, c-format
70 msgid "You receive %s x%d."
71 msgstr "Bạn nhận được %s x%d."
72
73 #: ../../../src/CampaignManager.cpp:193
5774 #, c-format
5875 msgid "You receive %s."
5976 msgstr "Bạn nhận được %s."
6077
61 #: ../../../src/CampaignManager.cpp:177
62 #, c-format
63 msgid "You receive %s x%d."
64 msgstr "Bạn nhận được %s x%d."
65
66 #: ../../../src/CampaignManager.cpp:186
67 #, c-format
68 msgid "You receive %d %s."
69 msgstr "Bạn nhận được %d %s."
70
71 #: ../../../src/CampaignManager.cpp:195
78 #: ../../../src/CampaignManager.cpp:210
7279 #, c-format
7380 msgid "You receive %d XP."
7481 msgstr "Bạn nhận được %d điểm kinh nghiệm."
7582
76 #: ../../../src/CampaignManager.cpp:201
83 #: ../../../src/CampaignManager.cpp:216
7784 msgid "HP restored."
7885 msgstr "Thể chất đã hồi phục."
7986
80 #: ../../../src/CampaignManager.cpp:205
87 #: ../../../src/CampaignManager.cpp:220
8188 msgid "MP restored."
8289 msgstr "Ma pháp đã hồi phục."
8390
84 #: ../../../src/CampaignManager.cpp:210
91 #: ../../../src/CampaignManager.cpp:225
8592 msgid "HP and MP restored."
8693 msgstr "Thể chất và ma pháp đã hồi phục."
8794
88 #: ../../../src/CampaignManager.cpp:214
95 #: ../../../src/CampaignManager.cpp:229
8996 msgid "Negative effects removed."
9097 msgstr "Các lời nguyền đã bị vô hiệu."
9198
92 #: ../../../src/CampaignManager.cpp:220
99 #: ../../../src/CampaignManager.cpp:235
93100 msgid "HP and MP restored, negative effects removed"
94101 msgstr "Thể chất và ma pháp đã hồi phục, các lời nguyền đã bị vô hiệu"
95102
111118 "Kết xuất đồ hoạ SDL bằng phần cứng\n"
112119 "Bộ kết xuất mặc định, thường nhanh hơn bằng phần mềm."
113120
114 #: ../../../src/EngineSettings.cpp:561
121 #: ../../../src/EngineSettings.cpp:586
115122 msgid "Adventurer"
116123 msgstr "Người phiêu lưu"
117124
118 #: ../../../src/Entity.cpp:511
125 #: ../../../src/Entity.cpp:527
119126 msgid "miss"
120127 msgstr "trượt"
121128
122 #: ../../../src/Entity.cpp:548 ../../../src/PowerManager.cpp:1152
123 #: ../../../src/StatBlock.cpp:805 ../../../src/StatBlock.cpp:811
129 #: ../../../src/Entity.cpp:565 ../../../src/PowerManager.cpp:1224
130 #: ../../../src/StatBlock.cpp:917 ../../../src/StatBlock.cpp:923
124131 #, c-format
125132 msgid "+%d HP"
126133 msgstr "+%d điểm thể chất"
127134
128 #: ../../../src/Entity.cpp:555 ../../../src/StatBlock.cpp:816
129 #: ../../../src/StatBlock.cpp:822
135 #: ../../../src/Entity.cpp:572 ../../../src/StatBlock.cpp:928
136 #: ../../../src/StatBlock.cpp:934
130137 #, c-format
131138 msgid "+%d MP"
132139 msgstr "+%d điểm ma pháp"
133140
134 #: ../../../src/EventManager.cpp:738
141 #: ../../../src/EventManager.cpp:792
135142 msgid "Unknown destination"
136143 msgstr "Điểm đến chưa xác định"
137144
138 #: ../../../src/GameStateConfigBase.cpp:89
139 #: ../../../src/GameStateConfigBase.cpp:110
145 #: ../../../src/GameState.cpp:37 ../../../src/GameState.cpp:58
146 msgid "Loading..."
147 msgstr "Đang tải..."
148
149 #: ../../../src/GameStateLoad.cpp:90 ../../../src/GameStateLoad.cpp:103
150 msgid "Delete Save"
151 msgstr "Xoá bản lưư"
152
153 #: ../../../src/GameStateLoad.cpp:90
154 msgid "Delete this save?"
155 msgstr "Xoá bản lưư này?"
156
157 #: ../../../src/GameStateLoad.cpp:92
158 msgid "Exit to Title"
159 msgstr "Thoát ra tiêu đề"
160
161 #: ../../../src/GameStateLoad.cpp:95
162 msgid "New Game"
163 msgstr "Trò chơi mới"
164
165 #: ../../../src/GameStateLoad.cpp:99 ../../../src/GameStateLoad.cpp:607
166 msgid "Choose a Slot"
167 msgstr "Chọn một ô"
168
169 #: ../../../src/GameStateLoad.cpp:580 ../../../src/GameStateLoad.cpp:601
170 msgid "Enable a story mod to continue"
171 msgstr "Chọn một bản mod cốt truyện để tiếp tục"
172
173 #: ../../../src/GameStateLoad.cpp:596
174 msgid "Load Game"
175 msgstr "Mở bản lưu"
176
177 #: ../../../src/GameStateLoad.cpp:705
178 msgid "Entering game world..."
179 msgstr "Đang tiến vào thế giới trò chơi..."
180
181 #: ../../../src/GameStateLoad.cpp:708
182 msgid "Loading saved game..."
183 msgstr "Đang mở bản lưu..."
184
185 #: ../../../src/GameStateLoad.cpp:741
186 msgid "Invalid save"
187 msgstr "Bản lưu không hợp lệ"
188
189 #: ../../../src/GameStateLoad.cpp:765 ../../../src/ItemManager.cpp:745
190 #: ../../../src/MenuPowers.cpp:860 ../../../src/MenuPowers.cpp:1219
191 #: ../../../src/MenuPowers.cpp:1631
192 #, c-format
193 msgid "Level %d"
194 msgstr "Cấp độ %d"
195
196 #: ../../../src/GameStateNew.cpp:66 ../../../src/InputState.cpp:416
197 #: ../../../src/MenuConfig.cpp:246
198 msgid "Cancel"
199 msgstr "Hủy"
200
201 #: ../../../src/GameStateNew.cpp:69
202 msgid "Create"
203 msgstr "Tạo"
204
205 #: ../../../src/GameStateNew.cpp:77
206 msgid "Randomize"
207 msgstr "Ngẫu nhiên"
208
209 #: ../../../src/GameStateNew.cpp:93
210 msgid "Choose a Portrait"
211 msgstr "Chọn chân dung"
212
213 #: ../../../src/GameStateNew.cpp:97
214 msgid "Choose a Name"
215 msgstr "Chọn tên"
216
217 #: ../../../src/GameStateNew.cpp:101
218 msgid "Permadeath?"
219 msgstr "Chết vĩnh viễn?"
220
221 #: ../../../src/GameStateNew.cpp:105
222 msgid "Choose a Class"
223 msgstr "Chọn một giai cấp"
224
225 #: ../../../src/GameStateTitle.cpp:107
226 msgid "Play Game"
227 msgstr "Chơi trò chơi"
228
229 #: ../../../src/GameStateTitle.cpp:110
230 msgid "Enable a core mod to continue"
231 msgstr "Chọn một bản mod lõi để tiếp tục"
232
233 #: ../../../src/GameStateTitle.cpp:114 ../../../src/MenuMiniMap.cpp:152
234 msgid "Configuration"
235 msgstr "Thiết lập"
236
237 #: ../../../src/GameStateTitle.cpp:117
238 msgid "Credits"
239 msgstr "Các đóng góp"
240
241 #: ../../../src/GameStateTitle.cpp:120
242 msgid "Exit Game"
243 msgstr "Thoát trò chơi"
244
245 #: ../../../src/InputState.cpp:417
246 msgid "Accept"
247 msgstr "Đồng ý"
248
249 #: ../../../src/InputState.cpp:418 ../../../src/MenuMovementType.cpp:123
250 #: ../../../src/MenuMovementType.cpp:132 ../../../src/SDLInputState.cpp:668
251 #: ../../../src/SDLInputState.cpp:698
252 msgid "Up"
253 msgstr "Lên"
254
255 #: ../../../src/InputState.cpp:419 ../../../src/MenuMovementType.cpp:125
256 #: ../../../src/MenuMovementType.cpp:134 ../../../src/SDLInputState.cpp:646
257 #: ../../../src/SDLInputState.cpp:676
258 msgid "Down"
259 msgstr "Xuống"
260
261 #: ../../../src/InputState.cpp:420 ../../../src/MenuMovementType.cpp:124
262 #: ../../../src/MenuMovementType.cpp:133 ../../../src/SDLInputState.cpp:653
263 #: ../../../src/SDLInputState.cpp:683
264 msgid "Left"
265 msgstr "Trái"
266
267 #: ../../../src/InputState.cpp:421 ../../../src/MenuMovementType.cpp:126
268 #: ../../../src/MenuMovementType.cpp:135 ../../../src/SDLInputState.cpp:663
269 #: ../../../src/SDLInputState.cpp:693
270 msgid "Right"
271 msgstr "Phải"
272
273 #: ../../../src/InputState.cpp:422
274 msgid "Bar1"
275 msgstr "Thanh1"
276
277 #: ../../../src/InputState.cpp:423
278 msgid "Bar2"
279 msgstr "Thanh2"
280
281 #: ../../../src/InputState.cpp:424
282 msgid "Bar3"
283 msgstr "Thanh3"
284
285 #: ../../../src/InputState.cpp:425
286 msgid "Bar4"
287 msgstr "Thanh4"
288
289 #: ../../../src/InputState.cpp:426
290 msgid "Bar5"
291 msgstr "Thanh5"
292
293 #: ../../../src/InputState.cpp:427
294 msgid "Bar6"
295 msgstr "Thanh6"
296
297 #: ../../../src/InputState.cpp:428
298 msgid "Bar7"
299 msgstr "Thanh7"
300
301 #: ../../../src/InputState.cpp:429
302 msgid "Bar8"
303 msgstr "Thanh8"
304
305 #: ../../../src/InputState.cpp:430
306 msgid "Bar9"
307 msgstr "Thanh9"
308
309 #: ../../../src/InputState.cpp:431
310 msgid "Bar0"
311 msgstr "Thanh0"
312
313 #: ../../../src/InputState.cpp:432 ../../../src/MenuActionBar.cpp:84
314 #: ../../../src/MenuCharacter.cpp:54
315 msgid "Character"
316 msgstr "Nhân vật"
317
318 #: ../../../src/InputState.cpp:433 ../../../src/MenuActionBar.cpp:85
319 #: ../../../src/MenuInventory.cpp:130 ../../../src/MenuVendor.cpp:59
320 msgid "Inventory"
321 msgstr "Hành trang"
322
323 #: ../../../src/InputState.cpp:434 ../../../src/MenuActionBar.cpp:86
324 #: ../../../src/MenuPowers.cpp:158
325 msgid "Powers"
326 msgstr "Sức mạnh"
327
328 #: ../../../src/InputState.cpp:435 ../../../src/MenuActionBar.cpp:87
329 #: ../../../src/MenuLog.cpp:72
330 msgid "Log"
331 msgstr "Nhật kí"
332
333 #: ../../../src/InputState.cpp:436
334 msgid "Main1"
335 msgstr "Chính1"
336
337 #: ../../../src/InputState.cpp:437
338 msgid "Main2"
339 msgstr "Chính2"
340
341 #: ../../../src/InputState.cpp:438
342 msgid "Ctrl"
343 msgstr ""
344
345 #: ../../../src/InputState.cpp:439
346 msgid "Shift"
347 msgstr ""
348
349 #: ../../../src/InputState.cpp:440
350 msgid "Alt"
351 msgstr ""
352
353 #: ../../../src/InputState.cpp:441 ../../../src/SDLInputState.cpp:675
354 msgid "Delete"
355 msgstr ""
356
357 #: ../../../src/InputState.cpp:442
358 msgid "ActionBar Accept"
359 msgstr "ActionBar chọn"
360
361 #: ../../../src/InputState.cpp:443
362 msgid "ActionBar Left"
363 msgstr "ActionBar trái"
364
365 #: ../../../src/InputState.cpp:444
366 msgid "ActionBar Right"
367 msgstr "ActionBar phải"
368
369 #: ../../../src/InputState.cpp:445
370 msgid "ActionBar Use"
371 msgstr "ActionBar dùng"
372
373 #: ../../../src/InputState.cpp:446
374 msgid "Developer Menu"
375 msgstr "Menu phát triển"
376
377 #: ../../../src/InputState.cpp:448
378 msgid "Left Mouse"
379 msgstr "Chuột trái"
380
381 #: ../../../src/InputState.cpp:449
382 msgid "Middle Mouse"
383 msgstr "Chuột giữa"
384
385 #: ../../../src/InputState.cpp:450
386 msgid "Right Mouse"
387 msgstr "Chuột phải"
388
389 #: ../../../src/InputState.cpp:451
390 msgid "Wheel Up"
391 msgstr "Lăn lên"
392
393 #: ../../../src/InputState.cpp:452
394 msgid "Wheel Down"
395 msgstr "Lăn xuống"
396
397 #: ../../../src/InputState.cpp:453
398 msgid "Mouse X1"
399 msgstr "Phím X1 chuột"
400
401 #: ../../../src/InputState.cpp:454
402 msgid "Mouse X2"
403 msgstr "Phím X2 chuột"
404
405 #: ../../../src/ItemManager.cpp:475
406 msgid "Unknown Item"
407 msgstr "Vật chưa xác định"
408
409 #: ../../../src/ItemManager.cpp:646 ../../../src/MenuPowers.cpp:959
410 #, c-format
411 msgid "%d%% Speed"
412 msgstr "%d%% tốc độ"
413
414 #: ../../../src/ItemManager.cpp:650 ../../../src/MenuPowers.cpp:962
415 #, c-format
416 msgid "%d%% Attack Speed"
417 msgstr "%d%% tốc độ tấn công"
418
419 #: ../../../src/ItemManager.cpp:672 ../../../src/MenuCharacter.cpp:352
420 #: ../../../src/MenuPowers.cpp:931
421 #, c-format
422 msgid "Resistance (%s)"
423 msgstr "Khả năng kháng %s"
424
425 #: ../../../src/ItemManager.cpp:682
426 #, c-format
427 msgid "Requires %s"
428 msgstr "Yêu cầu %s"
429
430 #: ../../../src/ItemManager.cpp:731
431 msgid "Quest Item"
432 msgstr "Đồ nhiệm vụ"
433
434 #: ../../../src/ItemManager.cpp:758
435 #, c-format
436 msgid "Quality: %s"
437 msgstr "Chất lượng: %s"
438
439 #: ../../../src/ItemManager.cpp:783
440 #, c-format
441 msgid "Absorb: %d-%d"
442 msgstr "Hấp thụ: %d-%d"
443
444 #: ../../../src/ItemManager.cpp:785
445 #, c-format
446 msgid "Absorb: %d"
447 msgstr "Hấp thụ: %d"
448
449 #: ../../../src/ItemManager.cpp:825 ../../../src/MenuPowers.cpp:1206
450 #: ../../../src/MenuPowers.cpp:1209
451 #, c-format
452 msgid "Requires Level %d"
453 msgstr "Yêu cầu cấp độ %d"
454
455 #: ../../../src/ItemManager.cpp:836 ../../../src/MenuPowers.cpp:1198
456 #: ../../../src/MenuPowers.cpp:1200
457 #, c-format
458 msgid "Requires %s %d"
459 msgstr "Yêu cầu %s %d"
460
461 #: ../../../src/ItemManager.cpp:847
462 #, c-format
463 msgid "Requires Class: %s"
464 msgstr "Yêu cầu thuộc giai cấp: %s"
465
466 #: ../../../src/ItemManager.cpp:863 ../../../src/ItemManager.cpp:875
467 #, c-format
468 msgid "Buy Price: %d %s"
469 msgstr "Giá mua: %d %s"
470
471 #: ../../../src/ItemManager.cpp:865 ../../../src/ItemManager.cpp:877
472 #, c-format
473 msgid "Buy Price: %d %s each"
474 msgstr "Giá mua mỗi chiếc: %d %s"
475
476 #: ../../../src/ItemManager.cpp:885
477 #, c-format
478 msgid "Sell Price: %d %s"
479 msgstr "Giá bán: %d %s"
480
481 #: ../../../src/ItemManager.cpp:887
482 #, c-format
483 msgid "Sell Price: %d %s each"
484 msgstr "Giá bán mỗi chiếc: %d %s"
485
486 #: ../../../src/ItemManager.cpp:896
487 msgid "Set:"
488 msgstr "Đặt:"
489
490 #: ../../../src/ItemManager.cpp:903
491 #, c-format
492 msgid "%d items:"
493 msgstr "%d vật:"
494
495 #: ../../../src/ItemManager.cpp:915
496 #, c-format
497 msgid "Press [%s] to read"
498 msgstr "Nhấn [%s] để đọc"
499
500 #: ../../../src/ItemManager.cpp:918
501 #, c-format
502 msgid "Press [%s] to use"
503 msgstr "Nhấn [%s] để sử dụng"
504
505 #: ../../../src/MenuActionBar.cpp:239 ../../../src/MenuActionBar.cpp:246
506 #: ../../../src/MenuActionBar.cpp:249 ../../../src/MenuActionBar.cpp:255
507 #, c-format
508 msgid "Hotkey: %s"
509 msgstr "Phím: %s"
510
511 #: ../../../src/MenuActionBar.cpp:621
512 msgid "Not enough MP."
513 msgstr "Không đủ ma pháp."
514
515 #: ../../../src/MenuActiveEffects.cpp:124
516 #, c-format
517 msgid "x%d"
518 msgstr ""
519
520 #: ../../../src/MenuActiveEffects.cpp:219
521 msgid "Remaining:"
522 msgstr "Còn lại:"
523
524 #: ../../../src/MenuActiveEffects.cpp:225
525 #, c-format
526 msgid "x%d stacks"
527 msgstr "x%d chồng"
528
529 #: ../../../src/MenuCharacter.cpp:73 ../../../src/MenuCharacter.cpp:78
530 msgid "Name"
531 msgstr "Tên"
532
533 #: ../../../src/MenuCharacter.cpp:74 ../../../src/MenuCharacter.cpp:79
534 msgid "Level"
535 msgstr "Cấp độ"
536
537 #: ../../../src/MenuCharacter.cpp:309
538 #, c-format
539 msgid "Available stat points: %d"
540 msgstr ""
541
542 #: ../../../src/MenuCharacter.cpp:353
543 #, c-format
544 msgid "Reduces the damage taken from \"%s\" elemental attacks."
545 msgstr "Giảm sát thương từ nguyên tố %s."
546
547 #: ../../../src/MenuCharacter.cpp:363 ../../../src/MenuManager.cpp:301
548 #, c-format
549 msgid "XP: %d"
550 msgstr "Điểm kinh nghiệm: %d"
551
552 #: ../../../src/MenuCharacter.cpp:365
553 #, c-format
554 msgid "Next: %d"
555 msgstr "Tiếp: %d"
556
557 #: ../../../src/MenuCharacter.cpp:371
558 #, c-format
559 msgid "base (%d), bonus (%d)"
560 msgstr "gốc %d, thêm %d"
561
562 #: ../../../src/MenuCharacter.cpp:379 ../../../src/MenuCharacter.cpp:393
563 msgid "Related stats:"
564 msgstr "Thuộc tính liên quan:"
565
566 #: ../../../src/MenuCharacter.cpp:419 ../../../src/MenuCharacter.cpp:443
567 #, c-format
568 msgid "Each level grants %d."
569 msgstr "Mỗi cấp độ tăng %d."
570
571 #: ../../../src/MenuCharacter.cpp:423 ../../../src/MenuCharacter.cpp:447
572 #, c-format
573 msgid "Each point of %s grants %d."
574 msgstr "Mỗi điểm của %s tăng %d."
575
576 #: ../../../src/MenuConfig.cpp:122 ../../../src/MenuConfig.cpp:1171
577 msgid "Clear"
578 msgstr "Xoá"
579
580 #: ../../../src/MenuConfig.cpp:122 ../../../src/MenuConfig.cpp:1169
581 msgid "Assign:"
582 msgstr "Gán với:"
583
584 #: ../../../src/MenuConfig.cpp:123 ../../../src/MenuConfig.cpp:245
140585 msgid "Defaults"
141586 msgstr "Mặc định"
142587
143 #: ../../../src/GameStateConfigBase.cpp:89
588 #: ../../../src/MenuConfig.cpp:123
144589 msgid "Reset ALL settings?"
145590 msgstr "Thiết lập lại TẤT CẢ?"
146591
147 #: ../../../src/GameStateConfigBase.cpp:109 ../../../src/MenuNumPicker.cpp:49
592 #: ../../../src/MenuConfig.cpp:244 ../../../src/MenuNumPicker.cpp:49
148593 msgid "OK"
149594 msgstr ""
150595
151 #: ../../../src/GameStateConfigBase.cpp:111 ../../../src/GameStateNew.cpp:65
152 #: ../../../src/InputState.cpp:401
153 msgid "Cancel"
154 msgstr "Hủy"
155
156 #: ../../../src/GameStateConfigBase.cpp:160
157 #: ../../../src/GameStateConfigDesktop.cpp:130
596 #: ../../../src/MenuConfig.cpp:248 ../../../src/MenuGameOver.cpp:72
597 msgid "Continue"
598 msgstr ""
599
600 #: ../../../src/MenuConfig.cpp:250
601 msgid "Save Game"
602 msgstr ""
603
604 #: ../../../src/MenuConfig.cpp:293
605 msgid "Default"
606 msgstr ""
607
608 #: ../../../src/MenuConfig.cpp:293
609 msgid ""
610 "Show all loot tooltips, except for those that would be obscured by the "
611 "player or an enemy. Temporarily show all loot tooltips with 'Alt'."
612 msgstr ""
613
614 #: ../../../src/MenuConfig.cpp:294
615 msgid "Show all"
616 msgstr ""
617
618 #: ../../../src/MenuConfig.cpp:294
619 msgid ""
620 "Always show loot tooltips. Temporarily hide all loot tooltips with 'Alt'."
621 msgstr ""
622
623 #: ../../../src/MenuConfig.cpp:295 ../../../src/MenuConfig.cpp:300
624 msgid "Hidden"
625 msgstr ""
626
627 #: ../../../src/MenuConfig.cpp:295
628 msgid ""
629 "Always hide loot tooltips, except for when a piece of loot is hovered with "
630 "the mouse cursor. Temporarily show all loot tooltips with 'Alt'."
631 msgstr ""
632
633 #: ../../../src/MenuConfig.cpp:298
634 msgid "Visible"
635 msgstr ""
636
637 #: ../../../src/MenuConfig.cpp:299
638 msgid "Visible (2x zoom)"
639 msgstr ""
640
641 #: ../../../src/MenuConfig.cpp:303
642 msgid ""
643 "Controls the type of warning to be activated when the player is below the "
644 "low health threshold."
645 msgstr ""
646
647 #: ../../../src/MenuConfig.cpp:304
648 msgid "- Display a message"
649 msgstr ""
650
651 #: ../../../src/MenuConfig.cpp:305
652 msgid "- Play a sound"
653 msgstr ""
654
655 #: ../../../src/MenuConfig.cpp:306
656 msgid "- Change the cursor"
657 msgstr ""
658
659 #: ../../../src/MenuConfig.cpp:308
660 msgid "Disabled"
661 msgstr ""
662
663 #: ../../../src/MenuConfig.cpp:309
664 msgid "All"
665 msgstr ""
666
667 #: ../../../src/MenuConfig.cpp:310
668 msgid "Message & Cursor"
669 msgstr ""
670
671 #: ../../../src/MenuConfig.cpp:311
672 msgid "Message & Sound"
673 msgstr ""
674
675 #: ../../../src/MenuConfig.cpp:312
676 msgid "Sound & Cursor"
677 msgstr ""
678
679 #: ../../../src/MenuConfig.cpp:313
680 msgid "Message"
681 msgstr ""
682
683 #: ../../../src/MenuConfig.cpp:314
684 msgid "Cursor"
685 msgstr ""
686
687 #: ../../../src/MenuConfig.cpp:315
688 msgid "Sound"
689 msgstr ""
690
691 #: ../../../src/MenuConfig.cpp:321
692 msgid ""
693 "When the player's health drops below the given threshold, the low health "
694 "notifications are triggered if one or more of them is enabled."
695 msgstr ""
696
697 #: ../../../src/MenuConfig.cpp:334 ../../../src/MenuConfig.cpp:1587
698 #: ../../../src/MenuGameOver.cpp:116
699 msgid "Exit"
700 msgstr "Thoát"
701
702 #: ../../../src/MenuConfig.cpp:335
703 msgid "Video"
704 msgstr "Đồ hoạ"
705
706 #: ../../../src/MenuConfig.cpp:336
158707 msgid "Audio"
159708 msgstr "Âm thanh"
160709
161 #: ../../../src/GameStateConfigBase.cpp:161
162 #: ../../../src/GameStateConfigDesktop.cpp:131
710 #: ../../../src/MenuConfig.cpp:337
163711 msgid "Interface"
164712 msgstr "Giao diện"
165713
166 #: ../../../src/GameStateConfigBase.cpp:162
167 #: ../../../src/GameStateConfigDesktop.cpp:134
714 #: ../../../src/MenuConfig.cpp:338
715 msgid "Input"
716 msgstr "Đầu vào"
717
718 #: ../../../src/MenuConfig.cpp:339
719 msgid "Keybindings"
720 msgstr "Phím điều khiển"
721
722 #: ../../../src/MenuConfig.cpp:340
168723 msgid "Mods"
169724 msgstr "Các bản mod"
170725
171 #: ../../../src/GameStateConfigBase.cpp:249 ../../../src/MenuExit.cpp:72
726 #: ../../../src/MenuConfig.cpp:352
727 msgid "Paused"
728 msgstr "Đang tạm dừng"
729
730 #: ../../../src/MenuConfig.cpp:355
731 msgid "Time Played"
732 msgstr ""
733
734 #: ../../../src/MenuConfig.cpp:361
735 msgid "Renderer"
736 msgstr "Thiết bị kết xuất đồ hoạ"
737
738 #: ../../../src/MenuConfig.cpp:362
739 msgid "Full Screen Mode"
740 msgstr "Toàn màn hình"
741
742 #: ../../../src/MenuConfig.cpp:363
743 msgid "Hardware surfaces"
744 msgstr "Kết xuất bề mặt bằng phần cứng"
745
746 #: ../../../src/MenuConfig.cpp:364
747 msgid "V-Sync"
748 msgstr ""
749
750 #: ../../../src/MenuConfig.cpp:365
751 msgid "Texture Filtering"
752 msgstr "Lọc kết cấu bề mặt (texture)"
753
754 #: ../../../src/MenuConfig.cpp:366
755 msgid "DPI scaling"
756 msgstr "Phóng theo DPI"
757
758 #: ../../../src/MenuConfig.cpp:367
759 msgid "Parallax Layers"
760 msgstr ""
761
762 #: ../../../src/MenuConfig.cpp:368
763 msgid "Allow changing gamma"
764 msgstr "Cho phép thay đổi gamma"
765
766 #: ../../../src/MenuConfig.cpp:369
767 msgid "Gamma"
768 msgstr ""
769
770 #: ../../../src/MenuConfig.cpp:371
771 msgid "Sound Volume"
772 msgstr "Âm lượng"
773
774 #: ../../../src/MenuConfig.cpp:372
172775 msgid "Music Volume"
173776 msgstr "Âm lượng nhạc"
174777
175 #: ../../../src/GameStateConfigBase.cpp:253 ../../../src/MenuExit.cpp:77
176 msgid "Sound Volume"
177 msgstr "Âm lượng"
178
179 #: ../../../src/GameStateConfigBase.cpp:257
778 #: ../../../src/MenuConfig.cpp:374
180779 msgid "Language"
181780 msgstr "Ngôn ngữ"
182781
183 #: ../../../src/GameStateConfigBase.cpp:266
782 #: ../../../src/MenuConfig.cpp:375
184783 msgid "Show FPS"
185784 msgstr "Hiển thị FPS"
186785
187 #: ../../../src/GameStateConfigBase.cpp:270
786 #: ../../../src/MenuConfig.cpp:376
787 msgid "Hardware mouse cursor"
788 msgstr "Con trỏ hệ thống"
789
790 #: ../../../src/MenuConfig.cpp:377
188791 msgid "Colorblind Mode"
189792 msgstr "Chế độ cho người mù màu"
190793
191 #: ../../../src/GameStateConfigBase.cpp:274
192 msgid "Hardware mouse cursor"
193 msgstr "Con trỏ hệ thống"
194
195 #: ../../../src/GameStateConfigBase.cpp:278
794 #: ../../../src/MenuConfig.cpp:378
196795 msgid "Developer Mode"
197796 msgstr "Chế độ cho người phát triển"
198797
199 #: ../../../src/GameStateConfigBase.cpp:282
798 #: ../../../src/MenuConfig.cpp:379
200799 msgid "Subtitles"
201800 msgstr "Phụ đề"
202801
203 #: ../../../src/GameStateConfigBase.cpp:286
204 msgid "Active Mods"
205 msgstr "Bản mod đang bật"
206
207 #: ../../../src/GameStateConfigBase.cpp:295
208 msgid "Available Mods"
209 msgstr "Bản mod còn lại"
210
211 #: ../../../src/GameStateConfigBase.cpp:314
212 msgid "<< Disable"
213 msgstr "<< Tắt"
214
215 #: ../../../src/GameStateConfigBase.cpp:320
216 msgid "Enable >>"
217 msgstr "Bật >>"
218
219 #: ../../../src/GameStateConfigBase.cpp:873
220 msgid "Version:"
221 msgstr "Phiên bản:"
222
223 #: ../../../src/GameStateConfigBase.cpp:878
224 msgid "Game:"
225 msgstr "Trò chơi:"
226
227 #: ../../../src/GameStateConfigBase.cpp:883
228 msgid "Engine version:"
229 msgstr "Phiên bản engine:"
230
231 #: ../../../src/GameStateConfigBase.cpp:891
232 msgid "Requires mods:"
233 msgstr "Yêu cầu bản mod:"
234
235 #: ../../../src/GameStateConfigDesktop.cpp:83
236 #: ../../../src/GameStateConfigDesktop.cpp:751
237 msgid "Clear"
238 msgstr "Xoá"
239
240 #: ../../../src/GameStateConfigDesktop.cpp:83
241 #: ../../../src/GameStateConfigDesktop.cpp:749
242 msgid "Assign:"
243 msgstr "Gán với:"
244
245 #: ../../../src/GameStateConfigDesktop.cpp:128
246 msgid "Video"
247 msgstr "Đồ hoạ"
248
249 #: ../../../src/GameStateConfigDesktop.cpp:132
250 msgid "Input"
251 msgstr "Đầu vào"
252
253 #: ../../../src/GameStateConfigDesktop.cpp:133
254 msgid "Keybindings"
255 msgstr "Phím điều khiển"
256
257 #: ../../../src/GameStateConfigDesktop.cpp:188
802 #: ../../../src/MenuConfig.cpp:380
803 msgid "Loot tooltip visibility"
804 msgstr ""
805
806 #: ../../../src/MenuConfig.cpp:381
807 msgid "Mini-map mode"
808 msgstr ""
809
810 #: ../../../src/MenuConfig.cpp:382
811 msgid "Always show stat bar labels"
812 msgstr "Luôn hiển thị nhãn thanh thuộc tính"
813
814 #: ../../../src/MenuConfig.cpp:383
815 msgid "Allow stat bar auto-hiding"
816 msgstr ""
817
818 #: ../../../src/MenuConfig.cpp:384
819 msgid "Show combat text"
820 msgstr "Hiển thị nội dung chiến trận"
821
822 #: ../../../src/MenuConfig.cpp:385
823 msgid "Automatically equip items"
824 msgstr "Tự động trang bị đồ"
825
826 #: ../../../src/MenuConfig.cpp:386
827 msgid "Show hidden entity markers"
828 msgstr ""
829
830 #: ../../../src/MenuConfig.cpp:387
831 msgid "Low health notification"
832 msgstr ""
833
834 #: ../../../src/MenuConfig.cpp:388
835 msgid "Low health threshold"
836 msgstr ""
837
838 #: ../../../src/MenuConfig.cpp:389
839 msgid "Show item comparison tooltips"
840 msgstr ""
841
842 #: ../../../src/MenuConfig.cpp:392 ../../../src/MenuMovementType.cpp:94
843 #: ../../../src/MenuMovementType.cpp:131
844 msgid "Joystick"
845 msgstr ""
846
847 #: ../../../src/MenuConfig.cpp:393
848 msgid "Move hero using mouse"
849 msgstr "Di chuyển nhân vật bằng chuột"
850
851 #: ../../../src/MenuConfig.cpp:394
852 msgid "Mouse aim"
853 msgstr "Ngắm bằng chuột"
854
855 #: ../../../src/MenuConfig.cpp:395
856 msgid "Do not use mouse"
857 msgstr "Không sử dụng chuột"
858
859 #: ../../../src/MenuConfig.cpp:396
860 msgid "Swap mouse movement button"
861 msgstr ""
862
863 #: ../../../src/MenuConfig.cpp:397
864 msgid "Attack with mouse movement"
865 msgstr ""
866
867 #: ../../../src/MenuConfig.cpp:398
868 msgid "Joystick Deadzone"
869 msgstr "Khoảng chết của joystick"
870
871 #: ../../../src/MenuConfig.cpp:408
872 #, c-format
873 msgid "Primary binding: %s"
874 msgstr ""
875
876 #: ../../../src/MenuConfig.cpp:409
877 #, c-format
878 msgid "Alternate binding: %s"
879 msgstr ""
880
881 #: ../../../src/MenuConfig.cpp:410
882 #, c-format
883 msgid "Joystick binding: %s"
884 msgstr ""
885
886 #: ../../../src/MenuConfig.cpp:511
258887 msgid ""
259888 "Will try to store surfaces in video memory versus system memory. The effect "
260889 "this has on performance depends on the renderer."
262891 "Lưu dữ liệu bề mặt vào bộ nhớ đồ hoạ thay cho RAM. Hiệu quả của tuỳ chọn này"
263892 " phụ thuộc vào thiết bị kết xuất."
264893
265 #: ../../../src/GameStateConfigDesktop.cpp:189
894 #: ../../../src/MenuConfig.cpp:512
266895 msgid ""
267896 "Prevents screen tearing. Disable if you experience \"stuttering\" in "
268897 "windowed mode or input lag."
270899 "Giúp tránh rách hình. Tắt nếu bạn thấy lag khi điều khiển hoặc chế độ cửa sổ"
271900 " bị \"lắp\"."
272901
273 #: ../../../src/GameStateConfigDesktop.cpp:190
902 #: ../../../src/MenuConfig.cpp:513
274903 msgid ""
275904 "When enabled, this uses the screen DPI in addition to the window dimensions "
276905 "to scale the rendering resolution. Otherwise, only the window dimensions are"
279908 "Khi bật, sử dụng thêm DPI màn hình cùng kích thước cửa sổ để phóng đồ hoạ. "
280909 "Nếu không, chỉ sử dụng kích thước cửa sổ."
281910
282 #: ../../../src/GameStateConfigDesktop.cpp:191
911 #: ../../../src/MenuConfig.cpp:514
283912 msgid ""
284913 "This enables parallax (non-tile) layers. Disabling this setting can improve "
285914 "performance in some cases."
286915 msgstr ""
287916
288 #: ../../../src/GameStateConfigDesktop.cpp:192
289 msgid "Experimental"
290 msgstr "Đang thử nghiệm"
291
292 #: ../../../src/GameStateConfigDesktop.cpp:193
293 msgid "For handheld devices"
294 msgstr "Cho thiết bị cầm tay"
295
296 #: ../../../src/GameStateConfigDesktop.cpp:211
297 msgid "Renderer"
298 msgstr "Thiết bị kết xuất đồ hoạ"
299
300 #: ../../../src/GameStateConfigDesktop.cpp:227
301 msgid "Full Screen Mode"
302 msgstr "Toàn màn hình"
303
304 #: ../../../src/GameStateConfigDesktop.cpp:231
305 msgid "Move hero using mouse"
306 msgstr "Di chuyển nhân vật bằng chuột"
307
308 #: ../../../src/GameStateConfigDesktop.cpp:235
309 msgid "Hardware surfaces"
310 msgstr "Kết xuất bề mặt bằng phần cứng"
311
312 #: ../../../src/GameStateConfigDesktop.cpp:239
313 msgid "V-Sync"
314 msgstr ""
315
316 #: ../../../src/GameStateConfigDesktop.cpp:243
317 msgid "Texture Filtering"
318 msgstr "Lọc kết cấu bề mặt (texture)"
319
320 #: ../../../src/GameStateConfigDesktop.cpp:247
321 msgid "DPI scaling"
322 msgstr "Phóng theo DPI"
323
324 #: ../../../src/GameStateConfigDesktop.cpp:251
325 msgid "Parallax Layers"
326 msgstr ""
327
328 #: ../../../src/GameStateConfigDesktop.cpp:255
329 msgid "Allow changing gamma"
330 msgstr "Cho phép thay đổi gamma"
331
332 #: ../../../src/GameStateConfigDesktop.cpp:259
333 msgid "Gamma"
334 msgstr ""
335
336 #: ../../../src/GameStateConfigDesktop.cpp:263
337 msgid "Use joystick"
338 msgstr "Sử dụng joystick"
339
340 #: ../../../src/GameStateConfigDesktop.cpp:267
341 msgid "Joystick"
342 msgstr ""
343
344 #: ../../../src/GameStateConfigDesktop.cpp:283
345 msgid "Mouse aim"
346 msgstr "Ngắm bằng chuột"
347
348 #: ../../../src/GameStateConfigDesktop.cpp:287
349 msgid "Do not use mouse"
350 msgstr "Không sử dụng chuột"
351
352 #: ../../../src/GameStateConfigDesktop.cpp:291
353 msgid "Joystick Deadzone"
354 msgstr "Khoảng chết của joystick"
355
356 #: ../../../src/GameState.cpp:37 ../../../src/GameState.cpp:58
357 msgid "Loading..."
358 msgstr "Đang tải..."
359
360 #: ../../../src/GameStateLoad.cpp:88 ../../../src/GameStateLoad.cpp:101
361 msgid "Delete Save"
362 msgstr "Xoá bản lưư"
363
364 #: ../../../src/GameStateLoad.cpp:88
365 msgid "Delete this save?"
366 msgstr "Xoá bản lưư này?"
367
368 #: ../../../src/GameStateLoad.cpp:90
369 msgid "Exit to Title"
370 msgstr "Thoát ra tiêu đề"
371
372 #: ../../../src/GameStateLoad.cpp:93
373 msgid "New Game"
374 msgstr "Trò chơi mới"
375
376 #: ../../../src/GameStateLoad.cpp:97 ../../../src/GameStateLoad.cpp:600
377 msgid "Choose a Slot"
378 msgstr "Chọn một ô"
379
380 #: ../../../src/GameStateLoad.cpp:573 ../../../src/GameStateLoad.cpp:594
381 msgid "Enable a story mod to continue"
382 msgstr "Chọn một bản mod cốt truyện để tiếp tục"
383
384 #: ../../../src/GameStateLoad.cpp:589
385 msgid "Load Game"
386 msgstr "Mở bản lưu"
387
388 #: ../../../src/GameStateLoad.cpp:695
389 msgid "Entering game world..."
390 msgstr "Đang tiến vào thế giới trò chơi..."
391
392 #: ../../../src/GameStateLoad.cpp:698
393 msgid "Loading saved game..."
394 msgstr "Đang mở bản lưu..."
395
396 #: ../../../src/GameStateLoad.cpp:731
397 msgid "Invalid save"
398 msgstr "Bản lưu không hợp lệ"
399
400 #: ../../../src/GameStateLoad.cpp:755 ../../../src/ItemManager.cpp:747
401 #: ../../../src/MenuPowers.cpp:778 ../../../src/MenuPowers.cpp:1144
402 #: ../../../src/MenuPowers.cpp:1542
403 #, c-format
404 msgid "Level %d"
405 msgstr "Cấp độ %d"
406
407 #: ../../../src/GameStateNew.cpp:68
408 msgid "Create"
409 msgstr "Tạo"
410
411 #: ../../../src/GameStateNew.cpp:76
412 msgid "Randomize"
413 msgstr "Ngẫu nhiên"
414
415 #: ../../../src/GameStateNew.cpp:92
416 msgid "Choose a Portrait"
417 msgstr "Chọn chân dung"
418
419 #: ../../../src/GameStateNew.cpp:96
420 msgid "Choose a Name"
421 msgstr "Chọn tên"
422
423 #: ../../../src/GameStateNew.cpp:100
424 msgid "Permadeath?"
425 msgstr "Chết vĩnh viễn?"
426
427 #: ../../../src/GameStateNew.cpp:104
428 msgid "Choose a Class"
429 msgstr "Chọn một giai cấp"
430
431 #: ../../../src/GameStateTitle.cpp:108
432 msgid "Play Game"
433 msgstr "Chơi trò chơi"
434
435 #: ../../../src/GameStateTitle.cpp:111
436 msgid "Enable a core mod to continue"
437 msgstr "Chọn một bản mod lõi để tiếp tục"
438
439 #: ../../../src/GameStateTitle.cpp:115
440 msgid "Configuration"
441 msgstr "Thiết lập"
442
443 #: ../../../src/GameStateTitle.cpp:118
444 msgid "Credits"
445 msgstr "Các đóng góp"
446
447 #: ../../../src/GameStateTitle.cpp:121
448 msgid "Exit Game"
449 msgstr "Thoát trò chơi"
450
451 #: ../../../src/InputState.cpp:402
452 msgid "Accept"
453 msgstr "Đồng ý"
454
455 #: ../../../src/InputState.cpp:403 ../../../src/SDLInputState.cpp:607
456 msgid "Up"
457 msgstr "Lên"
458
459 #: ../../../src/InputState.cpp:404 ../../../src/SDLInputState.cpp:585
460 msgid "Down"
461 msgstr "Xuống"
462
463 #: ../../../src/InputState.cpp:405 ../../../src/SDLInputState.cpp:592
464 msgid "Left"
465 msgstr "Trái"
466
467 #: ../../../src/InputState.cpp:406 ../../../src/SDLInputState.cpp:602
468 msgid "Right"
469 msgstr "Phải"
470
471 #: ../../../src/InputState.cpp:407
472 msgid "Bar1"
473 msgstr "Thanh1"
474
475 #: ../../../src/InputState.cpp:408
476 msgid "Bar2"
477 msgstr "Thanh2"
478
479 #: ../../../src/InputState.cpp:409
480 msgid "Bar3"
481 msgstr "Thanh3"
482
483 #: ../../../src/InputState.cpp:410
484 msgid "Bar4"
485 msgstr "Thanh4"
486
487 #: ../../../src/InputState.cpp:411
488 msgid "Bar5"
489 msgstr "Thanh5"
490
491 #: ../../../src/InputState.cpp:412
492 msgid "Bar6"
493 msgstr "Thanh6"
494
495 #: ../../../src/InputState.cpp:413
496 msgid "Bar7"
497 msgstr "Thanh7"
498
499 #: ../../../src/InputState.cpp:414
500 msgid "Bar8"
501 msgstr "Thanh8"
502
503 #: ../../../src/InputState.cpp:415
504 msgid "Bar9"
505 msgstr "Thanh9"
506
507 #: ../../../src/InputState.cpp:416
508 msgid "Bar0"
509 msgstr "Thanh0"
510
511 #: ../../../src/InputState.cpp:417 ../../../src/MenuActionBar.cpp:83
512 #: ../../../src/MenuCharacter.cpp:54
513 msgid "Character"
514 msgstr "Nhân vật"
515
516 #: ../../../src/InputState.cpp:418 ../../../src/MenuActionBar.cpp:84
517 #: ../../../src/MenuInventory.cpp:137 ../../../src/MenuVendor.cpp:57
518 msgid "Inventory"
519 msgstr "Hành trang"
520
521 #: ../../../src/InputState.cpp:419 ../../../src/MenuActionBar.cpp:85
522 #: ../../../src/MenuPowers.cpp:168
523 msgid "Powers"
524 msgstr "Sức mạnh"
525
526 #: ../../../src/InputState.cpp:420 ../../../src/MenuActionBar.cpp:86
527 #: ../../../src/MenuLog.cpp:72
528 msgid "Log"
529 msgstr "Nhật kí"
530
531 #: ../../../src/InputState.cpp:421
532 msgid "Main1"
533 msgstr "Chính1"
534
535 #: ../../../src/InputState.cpp:422
536 msgid "Main2"
537 msgstr "Chính2"
538
539 #: ../../../src/InputState.cpp:423
540 msgid "Ctrl"
541 msgstr ""
542
543 #: ../../../src/InputState.cpp:424
544 msgid "Shift"
545 msgstr ""
546
547 #: ../../../src/InputState.cpp:425
548 msgid "Alt"
549 msgstr ""
550
551 #: ../../../src/InputState.cpp:426 ../../../src/SDLInputState.cpp:584
552 msgid "Delete"
553 msgstr ""
554
555 #: ../../../src/InputState.cpp:427
556 msgid "ActionBar Accept"
557 msgstr "ActionBar chọn"
558
559 #: ../../../src/InputState.cpp:428
560 msgid "ActionBar Left"
561 msgstr "ActionBar trái"
562
563 #: ../../../src/InputState.cpp:429
564 msgid "ActionBar Right"
565 msgstr "ActionBar phải"
566
567 #: ../../../src/InputState.cpp:430
568 msgid "ActionBar Use"
569 msgstr "ActionBar dùng"
570
571 #: ../../../src/InputState.cpp:431
572 msgid "Developer Menu"
573 msgstr "Menu phát triển"
574
575 #: ../../../src/InputState.cpp:433
576 msgid "Left Mouse"
577 msgstr "Chuột trái"
578
579 #: ../../../src/InputState.cpp:434
580 msgid "Middle Mouse"
581 msgstr "Chuột giữa"
582
583 #: ../../../src/InputState.cpp:435
584 msgid "Right Mouse"
585 msgstr "Chuột phải"
586
587 #: ../../../src/InputState.cpp:436
588 msgid "Wheel Up"
589 msgstr "Lăn lên"
590
591 #: ../../../src/InputState.cpp:437
592 msgid "Wheel Down"
593 msgstr "Lăn xuống"
594
595 #: ../../../src/InputState.cpp:438
596 msgid "Mouse X1"
597 msgstr "Phím X1 chuột"
598
599 #: ../../../src/InputState.cpp:439
600 msgid "Mouse X2"
601 msgstr "Phím X2 chuột"
602
603 #: ../../../src/ItemManager.cpp:450 ../../../src/ItemManager.cpp:453
604 msgid "Unknown Item"
605 msgstr "Vật chưa xác định"
606
607 #: ../../../src/ItemManager.cpp:648 ../../../src/MenuPowers.cpp:887
608 #, c-format
609 msgid "%d%% Speed"
610 msgstr "%d%% tốc độ"
611
612 #: ../../../src/ItemManager.cpp:652 ../../../src/MenuPowers.cpp:890
613 #, c-format
614 msgid "%d%% Attack Speed"
615 msgstr "%d%% tốc độ tấn công"
616
617 #: ../../../src/ItemManager.cpp:674 ../../../src/MenuCharacter.cpp:354
618 #: ../../../src/MenuPowers.cpp:833
619 #, c-format
620 msgid "Resistance (%s)"
621 msgstr "Khả năng kháng %s"
622
623 #: ../../../src/ItemManager.cpp:684
624 #, c-format
625 msgid "Requires %s"
626 msgstr "Yêu cầu %s"
627
628 #: ../../../src/ItemManager.cpp:733
629 msgid "Quest Item"
630 msgstr "Đồ nhiệm vụ"
631
632 #: ../../../src/ItemManager.cpp:760
633 #, c-format
634 msgid "Quality: %s"
635 msgstr "Chất lượng: %s"
636
637 #: ../../../src/ItemManager.cpp:785
638 #, c-format
639 msgid "Absorb: %d-%d"
640 msgstr "Hấp thụ: %d-%d"
641
642 #: ../../../src/ItemManager.cpp:787
643 #, c-format
644 msgid "Absorb: %d"
645 msgstr "Hấp thụ: %d"
646
647 #: ../../../src/ItemManager.cpp:827 ../../../src/MenuPowers.cpp:1131
648 #: ../../../src/MenuPowers.cpp:1134
649 #, c-format
650 msgid "Requires Level %d"
651 msgstr "Yêu cầu cấp độ %d"
652
653 #: ../../../src/ItemManager.cpp:838 ../../../src/MenuPowers.cpp:1123
654 #: ../../../src/MenuPowers.cpp:1125
655 #, c-format
656 msgid "Requires %s %d"
657 msgstr "Yêu cầu %s %d"
658
659 #: ../../../src/ItemManager.cpp:849
660 #, c-format
661 msgid "Requires Class: %s"
662 msgstr "Yêu cầu thuộc giai cấp: %s"
663
664 #: ../../../src/ItemManager.cpp:864 ../../../src/ItemManager.cpp:876
665 #, c-format
666 msgid "Buy Price: %d %s"
667 msgstr "Giá mua: %d %s"
668
669 #: ../../../src/ItemManager.cpp:866 ../../../src/ItemManager.cpp:878
670 #, c-format
671 msgid "Buy Price: %d %s each"
672 msgstr "Giá mua mỗi chiếc: %d %s"
673
674 #: ../../../src/ItemManager.cpp:886
675 #, c-format
676 msgid "Sell Price: %d %s"
677 msgstr "Giá bán: %d %s"
678
679 #: ../../../src/ItemManager.cpp:888
680 #, c-format
681 msgid "Sell Price: %d %s each"
682 msgstr "Giá bán mỗi chiếc: %d %s"
683
684 #: ../../../src/ItemManager.cpp:897
685 msgid "Set:"
686 msgstr "Đặt:"
687
688 #: ../../../src/ItemManager.cpp:904
689 #, c-format
690 msgid "%d items:"
691 msgstr "%d vật:"
692
693 #: ../../../src/ItemManager.cpp:917
694 #, c-format
695 msgid "Press [%s] to use"
696 msgstr "Nhấn [%s] để sử dụng"
697
698 #: ../../../src/ItemManager.cpp:920
699 #, c-format
700 msgid "Press [%s] to read"
701 msgstr "Nhấn [%s] để đọc"
702
703 #: ../../../src/MenuActionBar.cpp:87
704 msgid "Loot tooltip visibility"
705 msgstr ""
706
707 #: ../../../src/MenuActionBar.cpp:88
708 msgid "Mini-map mode"
709 msgstr ""
710
711 #: ../../../src/MenuActionBar.cpp:89
712 msgid "Always show stat bar labels"
713 msgstr "Luôn hiển thị nhãn thanh thuộc tính"
714
715 #: ../../../src/MenuActionBar.cpp:90
716 msgid "Show combat text"
717 msgstr "Hiển thị nội dung chiến trận"
718
719 #: ../../../src/MenuActionBar.cpp:254 ../../../src/MenuActionBar.cpp:261
720 #: ../../../src/MenuActionBar.cpp:264 ../../../src/MenuActionBar.cpp:271
721 #, c-format
722 msgid "Hotkey: %s"
723 msgstr "Phím: %s"
724
725 #: ../../../src/MenuActionBar.cpp:474
726 #, c-format
727 msgid "Default. Temporarily show all loot tooltips with '%s'."
728 msgstr ""
729
730 #: ../../../src/MenuActionBar.cpp:476
731 #, c-format
732 msgid "Show All. Temporarily hide all loot tooltips with '%s'."
733 msgstr ""
734
735 #: ../../../src/MenuActionBar.cpp:478
736 #, c-format
737 msgid "Hide All. Temporarily show all loot tooltips with '%s'."
738 msgstr ""
739
740 #: ../../../src/MenuActionBar.cpp:482
741 msgid "Visible"
742 msgstr ""
743
744 #: ../../../src/MenuActionBar.cpp:484
745 msgid "Visible (2x zoom)"
746 msgstr ""
747
748 #: ../../../src/MenuActionBar.cpp:486
749 msgid "Hidden"
750 msgstr ""
751
752 #: ../../../src/MenuActionBar.cpp:490 ../../../src/MenuActionBar.cpp:496
753 msgid "Enabled"
754 msgstr ""
755
756 #: ../../../src/MenuActionBar.cpp:492 ../../../src/MenuActionBar.cpp:498
757 msgid "Disabled"
758 msgstr ""
759
760 #: ../../../src/MenuActionBar.cpp:657
761 msgid "Not enough MP."
762 msgstr "Không đủ ma pháp."
763
764 #: ../../../src/MenuActiveEffects.cpp:124
765 #, c-format
766 msgid "x%d"
767 msgstr ""
768
769 #: ../../../src/MenuActiveEffects.cpp:219
770 msgid "Remaining:"
771 msgstr "Còn lại:"
772
773 #: ../../../src/MenuActiveEffects.cpp:225
774 #, c-format
775 msgid "x%d stacks"
776 msgstr "x%d chồng"
777
778 #: ../../../src/MenuCharacter.cpp:73 ../../../src/MenuCharacter.cpp:78
779 msgid "Name"
780 msgstr "Tên"
781
782 #: ../../../src/MenuCharacter.cpp:74 ../../../src/MenuCharacter.cpp:79
783 msgid "Level"
784 msgstr "Cấp độ"
785
786 #: ../../../src/MenuCharacter.cpp:310
787 #, c-format
788 msgid "%d unspent stat point"
789 msgstr "%d điểm thuộc tính chưa dùng"
790
791 #: ../../../src/MenuCharacter.cpp:313
792 #, c-format
793 msgid "%d unspent stat points"
794 msgstr "%d điểm thuộc tính chưa dùng"
795
796 #: ../../../src/MenuCharacter.cpp:355
797 #, c-format
798 msgid "Reduces the damage taken from \"%s\" elemental attacks."
799 msgstr "Giảm sát thương từ nguyên tố %s."
800
801 #: ../../../src/MenuCharacter.cpp:365 ../../../src/MenuManager.cpp:283
802 #, c-format
803 msgid "XP: %d"
804 msgstr "Điểm kinh nghiệm: %d"
805
806 #: ../../../src/MenuCharacter.cpp:367
807 #, c-format
808 msgid "Next: %d"
809 msgstr "Tiếp: %d"
810
811 #: ../../../src/MenuCharacter.cpp:373
812 #, c-format
813 msgid "base (%d), bonus (%d)"
814 msgstr "gốc %d, thêm %d"
815
816 #: ../../../src/MenuCharacter.cpp:381 ../../../src/MenuCharacter.cpp:395
817 msgid "Related stats:"
818 msgstr "Thuộc tính liên quan:"
819
820 #: ../../../src/MenuCharacter.cpp:421 ../../../src/MenuCharacter.cpp:445
821 #, c-format
822 msgid "Each level grants %d."
823 msgstr "Mỗi cấp độ tăng %d."
824
825 #: ../../../src/MenuCharacter.cpp:425 ../../../src/MenuCharacter.cpp:449
826 #, c-format
827 msgid "Each point of %s grants %d."
828 msgstr "Mỗi điểm của %s tăng %d."
829
830 #: ../../../src/MenuDevConsole.cpp:63
917 #: ../../../src/MenuConfig.cpp:515
918 msgid ""
919 "Enables the below setting that controls the screen gamma level. The behavior"
920 " of the gamma setting can vary between platforms."
921 msgstr ""
922
923 #: ../../../src/MenuConfig.cpp:516
924 msgid ""
925 "Provides additional text for information that is primarily conveyed through "
926 "color."
927 msgstr ""
928
929 #: ../../../src/MenuConfig.cpp:517
930 msgid ""
931 "Some mods will automatically hide the stat bars when they are inactive. "
932 "Disabling this option will keep them displayed at all times."
933 msgstr ""
934
935 #: ../../../src/MenuConfig.cpp:518
936 msgid ""
937 "When enabled, empty equipment slots will be filled with applicable items "
938 "when they are obtained."
939 msgstr ""
940
941 #: ../../../src/MenuConfig.cpp:519
942 msgid ""
943 "Shows a marker above enemies, allies, and the player when they are obscured "
944 "by tall objects."
945 msgstr ""
946
947 #: ../../../src/MenuConfig.cpp:520
948 msgid ""
949 "When enabled, tooltips for equipped items of the same type are shown next to"
950 " standard item tooltips."
951 msgstr ""
952
953 #: ../../../src/MenuConfig.cpp:521
954 msgid ""
955 "This allows the game to be controlled entirely with the keyboard (or "
956 "joystick)."
957 msgstr ""
958
959 #: ../../../src/MenuConfig.cpp:522
960 msgid ""
961 "When 'Move hero using mouse' is enabled, this setting controls if 'Main1' or"
962 " 'Main2' is used to move the hero. If enabled, 'Main2' will move the hero "
963 "instead of 'Main1'."
964 msgstr ""
965
966 #: ../../../src/MenuConfig.cpp:523
967 msgid ""
968 "When 'Move hero using mouse' is enabled, this setting controls if the Power "
969 "assigned to the movement button can be used by targeting an enemy. If this "
970 "setting is disabled, it is required to use 'Shift' to access the Power "
971 "assigned to the movement button."
972 msgstr ""
973
974 #: ../../../src/MenuConfig.cpp:524
975 msgid ""
976 "The player's attacks will be aimed in the direction of the mouse cursor when"
977 " this is enabled."
978 msgstr ""
979
980 #: ../../../src/MenuConfig.cpp:575
981 msgid "Active Mods"
982 msgstr "Bản mod đang bật"
983
984 #: ../../../src/MenuConfig.cpp:584
985 msgid "Available Mods"
986 msgstr "Bản mod còn lại"
987
988 #: ../../../src/MenuConfig.cpp:603
989 msgid "<< Disable"
990 msgstr "<< Tắt"
991
992 #: ../../../src/MenuConfig.cpp:609
993 msgid "Enable >>"
994 msgstr "Bật >>"
995
996 #: ../../../src/MenuConfig.cpp:1444
997 msgid "Version:"
998 msgstr "Phiên bản:"
999
1000 #: ../../../src/MenuConfig.cpp:1449
1001 msgid "Game:"
1002 msgstr "Trò chơi:"
1003
1004 #: ../../../src/MenuConfig.cpp:1454
1005 msgid "Engine version:"
1006 msgstr "Phiên bản engine:"
1007
1008 #: ../../../src/MenuConfig.cpp:1462
1009 msgid "Requires mods:"
1010 msgstr "Yêu cầu bản mod:"
1011
1012 #: ../../../src/MenuConfig.cpp:1570 ../../../src/SDLInputState.cpp:748
1013 msgid "(none)"
1014 msgstr "(không)"
1015
1016 #: ../../../src/MenuConfig.cpp:1587 ../../../src/MenuGameOver.cpp:73
1017 msgid "Save & Exit"
1018 msgstr "Lưư & Thoát"
1019
1020 #: ../../../src/MenuDevConsole.cpp:65
8311021 msgid "Execute"
8321022 msgstr "Chạy"
8331023
834 #: ../../../src/MenuDevConsole.cpp:101 ../../../src/MenuDevConsole.cpp:151
1024 #: ../../../src/MenuDevConsole.cpp:103 ../../../src/MenuDevConsole.cpp:153
8351025 msgid "Developer Console"
8361026 msgstr "Bảng điều khiển cho nhà phát triển"
8371027
838 #: ../../../src/MenuDevConsole.cpp:141
1028 #: ../../../src/MenuDevConsole.cpp:143
8391029 #, c-format
8401030 msgid "Use '%s' to inspect with the cursor."
8411031 msgstr "Dùng [%s] để điều tra bằng con trỏ."
8421032
843 #: ../../../src/MenuDevConsole.cpp:146
1033 #: ../../../src/MenuDevConsole.cpp:148
8441034 msgid "Arguments with spaces should be enclosed with double quotes. Example:"
8451035 msgstr "Tham số chứa khoảng trắng nên được đặt trong ngoặc kép. Ví dụ:"
8461036
847 #: ../../../src/MenuDevConsole.cpp:147
1037 #: ../../../src/MenuDevConsole.cpp:149
8481038 msgid "Type 'help' to get a list of commands."
8491039 msgstr "Gõ 'help' để in danh sách các lệnh."
8501040
851 #: ../../../src/MenuDevConsole.cpp:209 ../../../src/MenuDevConsole.cpp:213
1041 #: ../../../src/MenuDevConsole.cpp:211 ../../../src/MenuDevConsole.cpp:215
8521042 msgid "px"
8531043 msgstr ""
8541044
855 #: ../../../src/MenuDevConsole.cpp:224
1045 #: ../../../src/MenuDevConsole.cpp:226
8561046 msgid "Distance"
8571047 msgstr "Khoảng cách"
8581048
859 #: ../../../src/MenuDevConsole.cpp:239 ../../../src/MenuDevConsole.cpp:286
1049 #: ../../../src/MenuDevConsole.cpp:241 ../../../src/MenuDevConsole.cpp:289
1050 #: ../../../src/MenuDevConsole.cpp:303
8601051 msgid "Entity"
8611052 msgstr "Thực thể"
8621053
863 #: ../../../src/MenuDevConsole.cpp:261 ../../../src/MenuDevConsole.cpp:268
1054 #: ../../../src/MenuDevConsole.cpp:263 ../../../src/MenuDevConsole.cpp:270
8641055 msgid "none"
8651056 msgstr "trống"
8661057
867 #: ../../../src/MenuDevConsole.cpp:262 ../../../src/MenuDevConsole.cpp:264
1058 #: ../../../src/MenuDevConsole.cpp:264 ../../../src/MenuDevConsole.cpp:266
8681059 msgid "wall"
8691060 msgstr "tường"
8701061
871 #: ../../../src/MenuDevConsole.cpp:263 ../../../src/MenuDevConsole.cpp:265
1062 #: ../../../src/MenuDevConsole.cpp:265 ../../../src/MenuDevConsole.cpp:267
8721063 msgid "short wall / pit"
8731064 msgstr "tường thấp / hố"
8741065
875 #: ../../../src/MenuDevConsole.cpp:266
1066 #: ../../../src/MenuDevConsole.cpp:268
8761067 msgid "entity"
8771068 msgstr "thực thể"
8781069
879 #: ../../../src/MenuDevConsole.cpp:267
1070 #: ../../../src/MenuDevConsole.cpp:269
8801071 msgid "entity, ally"
8811072 msgstr "thực thể, liên kết"
8821073
883 #: ../../../src/MenuDevConsole.cpp:274
1074 #: ../../../src/MenuDevConsole.cpp:276
8841075 msgid "Tile"
8851076 msgstr "Ô"
8861077
887 #: ../../../src/MenuDevConsole.cpp:360
1078 #: ../../../src/MenuDevConsole.cpp:377
8881079 msgid "adds a power to the action bar"
8891080 msgstr "thêm một sức mạnh vào thanh hành động"
8901081
891 #: ../../../src/MenuDevConsole.cpp:361
1082 #: ../../../src/MenuDevConsole.cpp:378
8921083 msgid "turns on/off the display of the FPS counter"
8931084 msgstr ""
8941085
895 #: ../../../src/MenuDevConsole.cpp:362
1086 #: ../../../src/MenuDevConsole.cpp:379
8961087 msgid "turns on/off all of the HUD elements"
8971088 msgstr "bật/tắt tất cả các HUD"
8981089
899 #: ../../../src/MenuDevConsole.cpp:363
1090 #: ../../../src/MenuDevConsole.cpp:380
9001091 msgid "turns on/off the developer hud"
9011092 msgstr "bật tắt HUD cho nhà phát triển"
9021093
903 #: ../../../src/MenuDevConsole.cpp:364
1094 #: ../../../src/MenuDevConsole.cpp:381
9041095 msgid ""
9051096 "Prints a list of powers that match a search term. No search term will list "
9061097 "all items"
9081099 "In các sức mạnh khớp với từ khoá tìm kiếm. Nếu không cung cấp từ khoá, liệt "
9091100 "kê tất cả."
9101101
911 #: ../../../src/MenuDevConsole.cpp:365
1102 #: ../../../src/MenuDevConsole.cpp:382
9121103 msgid "Prints out all the map filenames located in the \"maps/\" directory."
9131104 msgstr "In tất cả các tệp bản đồ trong thư mục \"maps\"."
9141105
915 #: ../../../src/MenuDevConsole.cpp:366
1106 #: ../../../src/MenuDevConsole.cpp:383
9161107 msgid ""
9171108 "Prints out the active campaign statuses that match a search term. No search "
9181109 "term will list all active statuses"
9201111 "In tất cả các trạng thái chiến dịch hiện hành khớp từ khoá tìm kiếm. Nếu "
9211112 "không cung cấp từ khoá, liệt kê tất cả."
9221113
923 #: ../../../src/MenuDevConsole.cpp:367
1114 #: ../../../src/MenuDevConsole.cpp:384
9241115 msgid ""
9251116 "Prints a list of items that match a search term. No search term will list "
9261117 "all items"
9281119 "In các đồ vật khớp với từ khoá tìm kiếm. Nếu không cung cấp từ khoá, liệt kê"
9291120 " tất cả."
9301121
931 #: ../../../src/MenuDevConsole.cpp:368
1122 #: ../../../src/MenuDevConsole.cpp:385
9321123 msgid ""
9331124 "parses a series of event components and executes them as a single event"
9341125 msgstr ""
9351126 "nhận một chuỗi các bộ phận sự kiện và thực hiện chúng như một sự kiện duy "
9361127 "nhất"
9371128
938 #: ../../../src/MenuDevConsole.cpp:369
1129 #: ../../../src/MenuDevConsole.cpp:386
9391130 msgid "clears the command history"
9401131 msgstr "xoá lịch sử lệnh"
9411132
942 #: ../../../src/MenuDevConsole.cpp:370
1133 #: ../../../src/MenuDevConsole.cpp:387
9431134 msgid "displays this text"
9441135 msgstr "hiển thị văn bản này"
9451136
946 #: ../../../src/MenuDevConsole.cpp:377
1137 #: ../../../src/MenuDevConsole.cpp:394
9471138 msgid "Toggled the developer hud"
9481139 msgstr "Đã bật/tắt HUD cho nhà phát triển"
9491140
950 #: ../../../src/MenuDevConsole.cpp:381
1141 #: ../../../src/MenuDevConsole.cpp:398
9511142 msgid "Toggled the hud"
9521143 msgstr "Đã bật/tắt HUD"
9531144
954 #: ../../../src/MenuDevConsole.cpp:385
1145 #: ../../../src/MenuDevConsole.cpp:402
9551146 msgid "Toggled the FPS counter"
9561147 msgstr ""
9571148
958 #: ../../../src/MenuDevConsole.cpp:534
1149 #: ../../../src/MenuDevConsole.cpp:552
9591150 msgid "ERROR: Incorrect number of arguments"
9601151 msgstr "LỖI: Số tham số không đúng"
9611152
962 #: ../../../src/MenuDevConsole.cpp:536 ../../../src/MenuDevConsole.cpp:564
1153 #: ../../../src/MenuDevConsole.cpp:554 ../../../src/MenuDevConsole.cpp:582
9631154 msgid "HINT:"
9641155 msgstr "GỌI Ý:"
9651156
966 #: ../../../src/MenuDevConsole.cpp:536
1157 #: ../../../src/MenuDevConsole.cpp:554
9671158 msgid "<id>"
9681159 msgstr ""
9691160
970 #: ../../../src/MenuDevConsole.cpp:552
1161 #: ../../../src/MenuDevConsole.cpp:570
9711162 #, c-format
9721163 msgid "ERROR: '%s' is not a valid event key"
9731164 msgstr "LỖI: '%s' không phải là một key sự kiện hợp lệ"
9741165
975 #: ../../../src/MenuDevConsole.cpp:562
1166 #: ../../../src/MenuDevConsole.cpp:580
9761167 msgid "ERROR: Too few arguments"
9771168 msgstr "LỖI: Quá ít tham số"
9781169
979 #: ../../../src/MenuDevConsole.cpp:564
1170 #: ../../../src/MenuDevConsole.cpp:582
9801171 msgid "<key>=<val> <key>=<val> ..."
9811172 msgstr "<key>=<giá trị> <key>=<giá trị> ..."
9821173
983 #: ../../../src/MenuDevConsole.cpp:569
1174 #: ../../../src/MenuDevConsole.cpp:587
9841175 msgid "ERROR: Unknown command"
9851176 msgstr "LỖI: Lệnh không xác định"
9861177
987 #: ../../../src/MenuDevConsole.cpp:571
1178 #: ../../../src/MenuDevConsole.cpp:589
9881179 msgid "HINT: Type help"
9891180 msgstr "GỢI Ý: Gõ 'help'"
9901181
991 #: ../../../src/MenuEnemy.cpp:138
1182 #: ../../../src/MenuEnemy.cpp:162
9921183 #, c-format
9931184 msgid "%s level %d"
9941185 msgstr "%s cấp độ %d"
9951186
996 #: ../../../src/MenuEnemy.cpp:162
1187 #: ../../../src/MenuEnemy.cpp:186
9971188 msgid "Dead"
9981189 msgstr "Đã chết"
9991190
1000 #: ../../../src/MenuEnemy.cpp:164
1191 #: ../../../src/MenuEnemy.cpp:188
10011192 msgid "Destroyed"
10021193 msgstr "Đã bị phá huỷ"
10031194
1004 #: ../../../src/MenuExit.cpp:85 ../../../src/MenuExit.cpp:139
1005 msgid "Paused"
1006 msgstr "Đang tạm dừng"
1007
1008 #: ../../../src/MenuExit.cpp:91
1009 msgid "Save & Exit"
1010 msgstr "Lưư & Thoát"
1011
1012 #: ../../../src/MenuExit.cpp:92
1013 msgid "Exit"
1014 msgstr "Thoát"
1015
1016 #: ../../../src/MenuExit.cpp:96
1017 msgid "Continue"
1018 msgstr "Tiếp tục"
1019
1020 #: ../../../src/MenuInventory.cpp:73
1021 msgid "Automatically equip items"
1022 msgstr "Tự động trang bị đồ"
1023
1024 #: ../../../src/MenuInventory.cpp:188
1195 #: ../../../src/MenuGameOver.cpp:69
1196 msgid "Game Over"
1197 msgstr ""
1198
1199 #: ../../../src/MenuInventory.cpp:178
10251200 #, c-format
10261201 msgid "Lost %d%% of %s."
10271202 msgstr "Mất %d%% %s."
10281203
1029 #: ../../../src/MenuInventory.cpp:195
1204 #: ../../../src/MenuInventory.cpp:185
10301205 #, c-format
10311206 msgid "Lost %d%% of total XP."
10321207 msgstr "Mất %d%% tổng điểm kinh nghiệm."
10331208
1034 #: ../../../src/MenuInventory.cpp:200
1209 #: ../../../src/MenuInventory.cpp:190
10351210 #, c-format
10361211 msgid "Lost %d%% of current level XP."
10371212 msgstr "Mất %d%% điểm kinh nghiệm cấp độ hiện tại."
10381213
1039 #: ../../../src/MenuInventory.cpp:226
1214 #: ../../../src/MenuInventory.cpp:216
10401215 #, c-format
10411216 msgid "Lost %s."
10421217 msgstr "Mất %s."
10431218
1044 #: ../../../src/MenuInventory.cpp:274 ../../../src/MenuStash.cpp:146
1219 #: ../../../src/MenuInventory.cpp:258 ../../../src/MenuStash.cpp:276
10451220 #, c-format
10461221 msgid "%d %s"
10471222 msgstr ""
10481223
1049 #: ../../../src/MenuInventory.cpp:317
1224 #: ../../../src/MenuInventory.cpp:301
10501225 msgid "Pick up item(s):"
10511226 msgstr "Nhặt vật:"
10521227
1053 #: ../../../src/MenuInventory.cpp:318
1228 #: ../../../src/MenuInventory.cpp:302
10541229 msgid "Use or equip item:"
10551230 msgstr "Sử dụng hoặc trang bị đồ:"
10561231
1057 #: ../../../src/MenuInventory.cpp:319
1232 #: ../../../src/MenuInventory.cpp:303
10581233 #, c-format
10591234 msgid "%s modifiers"
10601235 msgstr "Các phím chức năng kết hợp với %s:"
10611236
1062 #: ../../../src/MenuInventory.cpp:320
1237 #: ../../../src/MenuInventory.cpp:304
10631238 msgid "Select a quantity of item:"
10641239 msgstr "Chọn số lượng đồ:"
10651240
1066 #: ../../../src/MenuInventory.cpp:323
1241 #: ../../../src/MenuInventory.cpp:307
10671242 msgid "Stash item stack:"
10681243 msgstr "Cất chồng đồ:"
10691244
1070 #: ../../../src/MenuInventory.cpp:325
1245 #: ../../../src/MenuInventory.cpp:309
10711246 msgid "Sell item stack:"
10721247 msgstr "Bán chồng đồ:"
10731248
1074 #: ../../../src/MenuInventory.cpp:592
1249 #: ../../../src/MenuInventory.cpp:576
10751250 msgid "You don't have enough of the required item."
10761251 msgstr "Bạn không đủ số đồ vật yêu cầu."
10771252
1078 #: ../../../src/MenuInventory.cpp:599
1253 #: ../../../src/MenuInventory.cpp:588
10791254 msgid "You can't use this item right now."
10801255 msgstr "Bạn không thể dùng vật này bây giờ."
10811256
1082 #: ../../../src/MenuInventory.cpp:611
1257 #: ../../../src/MenuInventory.cpp:600
10831258 msgid "This item can only be used from the action bar."
10841259 msgstr "Vật này chỉ có thể được dùng ở thanh hành động."
10851260
1086 #: ../../../src/MenuInventory.cpp:729
1261 #: ../../../src/MenuInventory.cpp:718
10871262 msgid "Inventory is full."
10881263 msgstr "Hành trang đã đầy."
10891264
1090 #: ../../../src/MenuInventory.cpp:849
1265 #: ../../../src/MenuInventory.cpp:843
10911266 #, c-format
10921267 msgid "Not enough %s."
10931268 msgstr "Không đủ %s."
10941269
1095 #: ../../../src/MenuInventory.cpp:869 ../../../src/MenuInventory.cpp:876
1270 #: ../../../src/MenuInventory.cpp:863 ../../../src/MenuInventory.cpp:870
10961271 msgid "This item can not be sold."
10971272 msgstr "Không thể bán vật này."
10981273
11041279 msgid "Quests"
11051280 msgstr "Nhiệm vụ"
11061281
1107 #: ../../../src/MenuManager.cpp:286
1282 #: ../../../src/MenuManager.cpp:305
11081283 #, c-format
11091284 msgid "XP: %d/%d"
11101285 msgstr "Điểm kinh nghiệm: %d/%d"
11111286
1112 #: ../../../src/MenuManager.cpp:827
1287 #: ../../../src/MenuManager.cpp:875
11131288 msgid "This item can not be dropped."
11141289 msgstr "Không thể vứt vật này."
1290
1291 #: ../../../src/MenuManager.cpp:1501
1292 msgid "Equipped"
1293 msgstr ""
1294
1295 #: ../../../src/MenuMovementType.cpp:87
1296 msgid "Select a Movement Type"
1297 msgstr ""
1298
1299 #: ../../../src/MenuMovementType.cpp:89
1300 msgid "Can be changed later in the Configuration menu."
1301 msgstr ""
1302
1303 #: ../../../src/MenuMovementType.cpp:92 ../../../src/MenuMovementType.cpp:122
1304 msgid "Keyboard"
1305 msgstr ""
1306
1307 #: ../../../src/MenuMovementType.cpp:93 ../../../src/MenuMovementType.cpp:128
1308 msgid "Mouse"
1309 msgstr ""
1310
1311 #: ../../../src/MenuMovementType.cpp:129
1312 msgid "Button"
1313 msgstr ""
11151314
11161315 #: ../../../src/MenuNumPicker.cpp:59
11171316 msgid "Enter amount:"
11181317 msgstr "Nhập số lượng:"
11191318
1120 #: ../../../src/MenuPowers.cpp:787
1319 #: ../../../src/MenuPowers.cpp:872
11211320 msgid "Passive"
11221321 msgstr "Thụ động"
11231322
1124 #: ../../../src/MenuPowers.cpp:792
1323 #: ../../../src/MenuPowers.cpp:879
11251324 #, c-format
11261325 msgid "Costs %d MP"
11271326 msgstr "Tốn %d điểm ma pháp"
11281327
1129 #: ../../../src/MenuPowers.cpp:796
1328 #: ../../../src/MenuPowers.cpp:883
11301329 #, c-format
11311330 msgid "Costs %d HP"
11321331 msgstr "Tốn %d điểm thể chất"
11331332
1134 #: ../../../src/MenuPowers.cpp:801
1333 #: ../../../src/MenuPowers.cpp:887
11351334 msgid "Cooldown:"
11361335 msgstr "Nguội:"
11371336
1138 #: ../../../src/MenuPowers.cpp:866 ../../../src/MenuPowers.cpp:869
1337 #: ../../../src/MenuPowers.cpp:938 ../../../src/MenuPowers.cpp:941
11391338 msgid "Damage per second"
11401339 msgstr "Sát thương trên giây"
11411340
1142 #: ../../../src/MenuPowers.cpp:872 ../../../src/MenuPowers.cpp:875
1341 #: ../../../src/MenuPowers.cpp:944 ../../../src/MenuPowers.cpp:947
11431342 msgid "HP per second"
11441343 msgstr "Điểm thể chất trên giây"
11451344
1146 #: ../../../src/MenuPowers.cpp:878 ../../../src/MenuPowers.cpp:881
1345 #: ../../../src/MenuPowers.cpp:950 ../../../src/MenuPowers.cpp:953
11471346 msgid "MP per second"
11481347 msgstr "Điểm ma pháp trên giây"
11491348
1150 #: ../../../src/MenuPowers.cpp:885
1349 #: ../../../src/MenuPowers.cpp:957
11511350 msgid "Immobilize"
11521351 msgstr "Làm bất động"
11531352
1154 #: ../../../src/MenuPowers.cpp:893
1353 #: ../../../src/MenuPowers.cpp:965
11551354 msgid "Immunity"
11561355 msgstr "Đề kháng"
11571356
1158 #: ../../../src/MenuPowers.cpp:896
1357 #: ../../../src/MenuPowers.cpp:968
11591358 msgid "Immunity to damage over time"
11601359 msgstr "Kháng sát thương theo thời gian"
11611360
1162 #: ../../../src/MenuPowers.cpp:899
1361 #: ../../../src/MenuPowers.cpp:971
11631362 msgid "Immunity to slow"
11641363 msgstr "Chống bị làm chậm"
11651364
1166 #: ../../../src/MenuPowers.cpp:902
1365 #: ../../../src/MenuPowers.cpp:974
11671366 msgid "Immunity to stun"
11681367 msgstr "Chống bất động"
11691368
1170 #: ../../../src/MenuPowers.cpp:905
1369 #: ../../../src/MenuPowers.cpp:977
11711370 msgid "Immunity to HP steal"
11721371 msgstr "Chống trộm điểm thể chất"
11731372
1174 #: ../../../src/MenuPowers.cpp:908
1373 #: ../../../src/MenuPowers.cpp:980
11751374 msgid "Immunity to MP steal"
11761375 msgstr "Chống trộm điểm ma pháp"
11771376
1178 #: ../../../src/MenuPowers.cpp:911
1377 #: ../../../src/MenuPowers.cpp:983
11791378 msgid "Immunity to knockback"
11801379 msgstr "Chống bị đẩy lại"
11811380
1182 #: ../../../src/MenuPowers.cpp:914
1381 #: ../../../src/MenuPowers.cpp:986
11831382 msgid "Immunity to damage reflection"
11841383 msgstr "Chống phản sát thương"
11851384
1186 #: ../../../src/MenuPowers.cpp:917
1385 #: ../../../src/MenuPowers.cpp:992
11871386 msgid "Stun"
11881387 msgstr "Làm bất động"
11891388
1190 #: ../../../src/MenuPowers.cpp:920
1389 #: ../../../src/MenuPowers.cpp:995
11911390 msgid "Automatic revive on death"
11921391 msgstr "Tự động hồi sinh"
11931392
1194 #: ../../../src/MenuPowers.cpp:923
1393 #: ../../../src/MenuPowers.cpp:998
11951394 msgid "Convert"
11961395 msgstr "Biến đổi"
11971396
1198 #: ../../../src/MenuPowers.cpp:926
1397 #: ../../../src/MenuPowers.cpp:1001
11991398 msgid "Fear"
12001399 msgstr "Sợ hãi"
12011400
1202 #: ../../../src/MenuPowers.cpp:929
1401 #: ../../../src/MenuPowers.cpp:1004
12031402 msgid "Lifespan"
12041403 msgstr "Vòng đời"
12051404
1206 #: ../../../src/MenuPowers.cpp:953
1405 #: ../../../src/MenuPowers.cpp:1028
12071406 msgid "Magical Shield"
12081407 msgstr "Khiên ma thuật"
12091408
1210 #: ../../../src/MenuPowers.cpp:982
1409 #: ../../../src/MenuPowers.cpp:1057
12111410 msgid "Healing"
12121411 msgstr "Hồi sức"
12131412
1214 #: ../../../src/MenuPowers.cpp:985
1413 #: ../../../src/MenuPowers.cpp:1060
12151414 msgid "Knockback"
12161415 msgstr "Đẩy lại"
12171416
1218 #: ../../../src/MenuPowers.cpp:1010
1417 #: ../../../src/MenuPowers.cpp:1084
12191418 #, c-format
12201419 msgid "%d%% chance"
12211420 msgstr "%d%% khả năng"
12221421
1223 #: ../../../src/MenuPowers.cpp:1062
1422 #: ../../../src/MenuPowers.cpp:1136
12241423 msgid "Base Accuracy"
12251424 msgstr "Độ chính xác gốc"
12261425
1227 #: ../../../src/MenuPowers.cpp:1082
1426 #: ../../../src/MenuPowers.cpp:1156
12281427 msgid "Base Critical Chance"
12291428 msgstr "Xác suất siêu sát thương gốc"
12301429
1231 #: ../../../src/MenuPowers.cpp:1090
1430 #: ../../../src/MenuPowers.cpp:1164
12321431 msgid "Ignores Absorbtion"
12331432 msgstr "Bỏ qua hấp thụ sát thương"
12341433
1235 #: ../../../src/MenuPowers.cpp:1095
1434 #: ../../../src/MenuPowers.cpp:1169
12361435 msgid "Ignores Avoidance"
12371436 msgstr "Bỏ qua khả năng tránh đòn"
12381437
1239 #: ../../../src/MenuPowers.cpp:1100
1438 #: ../../../src/MenuPowers.cpp:1174
12401439 #, c-format
12411440 msgid "%d%% Chance to crit slowed targets"
12421441 msgstr "%d%% khả năng siêu sát thương với mục tiêu bị làm chậm"
12431442
1244 #: ../../../src/MenuPowers.cpp:1105
1443 #: ../../../src/MenuPowers.cpp:1179
12451444 #, c-format
12461445 msgid "Elemental Damage (%s)"
12471446 msgstr "Sát thương nguyên tố %s"
12481447
1249 #: ../../../src/MenuPowers.cpp:1114
1448 #: ../../../src/MenuPowers.cpp:1188
12501449 #, c-format
12511450 msgid "Requires a %s"
12521451 msgstr "Yêu cầu %s"
12531452
1254 #: ../../../src/MenuPowers.cpp:1151 ../../../src/MenuPowers.cpp:1154
1453 #: ../../../src/MenuPowers.cpp:1226 ../../../src/MenuPowers.cpp:1229
12551454 #, c-format
12561455 msgid "Requires Power: %s"
12571456 msgstr "Yêu cầu sức mạnh: %s"
12581457
1259 #: ../../../src/MenuPowers.cpp:1163
1458 #: ../../../src/MenuPowers.cpp:1238
12601459 msgid "Click to Unlock (uses 1 Skill Point)"
12611460 msgstr "Nhấn để mở khoá (dùng 1 điểm kĩ năng)"
12621461
1263 #: ../../../src/MenuPowers.cpp:1167 ../../../src/MenuPowers.cpp:1169
1462 #: ../../../src/MenuPowers.cpp:1242 ../../../src/MenuPowers.cpp:1244
12641463 msgid "Requires 1 Skill Point"
12651464 msgstr "Yêu cầu 1 điểm kĩ năng"
12661465
1267 #: ../../../src/MenuPowers.cpp:1355
1268 #, c-format
1269 msgid "%d unspent skill point"
1270 msgstr "%d điểm kĩ năng chưa dùng"
1271
1272 #: ../../../src/MenuPowers.cpp:1358
1273 #, c-format
1274 msgid "%d unspent skill points"
1275 msgstr "%d điểm kĩ năng chưa dùng"
1276
1277 #: ../../../src/MenuPowers.cpp:1388
1466 #: ../../../src/MenuPowers.cpp:1444
1467 #, c-format
1468 msgid "Available skill points: %d"
1469 msgstr ""
1470
1471 #: ../../../src/MenuPowers.cpp:1476
12781472 msgid "Next Level:"
12791473 msgstr "Cấp độ tiếp:"
12801474
1281 #: ../../../src/MenuStash.cpp:96
1282 msgid "Shared Stash"
1283 msgstr "Hòm đồ chung"
1284
1285 #: ../../../src/MenuStash.cpp:209
1286 msgid "Can not store quest items in the stash."
1287 msgstr "Không thể giữ đồ nhiệm vụ trong hòm."
1288
1289 #: ../../../src/MenuStash.cpp:219
1475 #: ../../../src/MenuStash.cpp:80 ../../../src/MenuStash.cpp:161
1476 msgid "Stash"
1477 msgstr ""
1478
1479 #: ../../../src/MenuStash.cpp:174 ../../../src/MenuStash.cpp:188
1480 msgid "Private"
1481 msgstr ""
1482
1483 #: ../../../src/MenuStash.cpp:175
1484 msgid "Shared"
1485 msgstr ""
1486
1487 #: ../../../src/MenuStash.cpp:340
1488 msgid "This item can not be stored in the stash."
1489 msgstr ""
1490
1491 #: ../../../src/MenuStash.cpp:345
1492 msgid "This item can not be stored in the private stash."
1493 msgstr ""
1494
1495 #: ../../../src/MenuStash.cpp:350
1496 msgid "This item can not be stored in the shared stash."
1497 msgstr ""
1498
1499 #: ../../../src/MenuStash.cpp:360
12901500 msgid "Stash is full."
12911501 msgstr "Hòm đã đầy."
12921502
1293 #: ../../../src/MenuTalker.cpp:454
1503 #: ../../../src/MenuStash.cpp:414
1504 #, c-format
1505 msgid "Can not store item in stash: %s"
1506 msgstr ""
1507
1508 #: ../../../src/MenuTalker.cpp:448
1509 #, c-format
1510 msgid "<dialog node %d>"
1511 msgstr ""
1512
1513 #: ../../../src/MenuTalker.cpp:456
12941514 msgid "Trade"
12951515 msgstr "Trao đổi"
12961516
1297 #: ../../../src/MenuVendor.cpp:58
1517 #: ../../../src/MenuVendor.cpp:60
12981518 msgid "Buyback"
12991519 msgstr "Mua lại"
13001520
1301 #: ../../../src/MenuVendor.cpp:279
1521 #: ../../../src/MenuVendor.cpp:283
13021522 msgid "Vendor"
13031523 msgstr "Thương nhân"
13041524
1305 #: ../../../src/PowerManager.cpp:1136
1525 #: ../../../src/PowerManager.cpp:1208
13061526 #, c-format
13071527 msgid "+%d Shield"
13081528 msgstr "+%d giáp"
13091529
1310 #: ../../../src/PowerManager.cpp:1392
1530 #: ../../../src/PowerManager.cpp:1465
13111531 msgid "You are already transformed, untransform first."
13121532 msgstr "Bạn đã biến đổi rồi, phải biến về trạng thái ban đầu trước tiên."
13131533
1314 #: ../../../src/PowerManager.cpp:1404
1534 #: ../../../src/PowerManager.cpp:1477
13151535 msgid "Could not untransform at this position."
13161536 msgstr "Không thể biến về trạng thái ban đầu ở vị trí này."
13171537
13191539 msgid "Completed Quests"
13201540 msgstr "Nhiệm vụ đã hoàn thành"
13211541
1322 #: ../../../src/SaveLoad.cpp:243 ../../../src/SaveLoad.cpp:244
1542 #: ../../../src/SaveLoad.cpp:250 ../../../src/SaveLoad.cpp:251
13231543 msgid "Game saved."
13241544 msgstr "Đã lưư trò chơi."
13251545
1326 #: ../../../src/SDLInputState.cpp:582
1546 #: ../../../src/SDLInputState.cpp:643
1547 msgid "BkSp"
1548 msgstr ""
1549
1550 #: ../../../src/SDLInputState.cpp:644
1551 msgid "Caps"
1552 msgstr ""
1553
1554 #: ../../../src/SDLInputState.cpp:645
1555 msgid "Del"
1556 msgstr ""
1557
1558 #: ../../../src/SDLInputState.cpp:647 ../../../src/SDLInputState.cpp:677
1559 msgid "End"
1560 msgstr ""
1561
1562 #: ../../../src/SDLInputState.cpp:648
1563 msgid "Esc"
1564 msgstr ""
1565
1566 #: ../../../src/SDLInputState.cpp:649 ../../../src/SDLInputState.cpp:679
1567 msgid "Home"
1568 msgstr ""
1569
1570 #: ../../../src/SDLInputState.cpp:650
1571 msgid "Ins"
1572 msgstr ""
1573
1574 #: ../../../src/SDLInputState.cpp:651
1575 msgid "LAlt"
1576 msgstr ""
1577
1578 #: ../../../src/SDLInputState.cpp:652
1579 msgid "LCtrl"
1580 msgstr ""
1581
1582 #: ../../../src/SDLInputState.cpp:654
1583 msgid "LShft"
1584 msgstr ""
1585
1586 #: ../../../src/SDLInputState.cpp:655
1587 msgid "Num"
1588 msgstr ""
1589
1590 #: ../../../src/SDLInputState.cpp:656
1591 msgid "PgDn"
1592 msgstr ""
1593
1594 #: ../../../src/SDLInputState.cpp:657
1595 msgid "PgUp"
1596 msgstr ""
1597
1598 #: ../../../src/SDLInputState.cpp:658 ../../../src/SDLInputState.cpp:688
1599 msgid "Pause"
1600 msgstr ""
1601
1602 #: ../../../src/SDLInputState.cpp:659
1603 msgid "Print"
1604 msgstr ""
1605
1606 #: ../../../src/SDLInputState.cpp:660
1607 msgid "RAlt"
1608 msgstr ""
1609
1610 #: ../../../src/SDLInputState.cpp:661
1611 msgid "RCtrl"
1612 msgstr ""
1613
1614 #: ../../../src/SDLInputState.cpp:662
1615 msgid "Ret"
1616 msgstr ""
1617
1618 #: ../../../src/SDLInputState.cpp:664
1619 msgid "RShft"
1620 msgstr ""
1621
1622 #: ../../../src/SDLInputState.cpp:665
1623 msgid "SLock"
1624 msgstr ""
1625
1626 #: ../../../src/SDLInputState.cpp:666
1627 msgid "Spc"
1628 msgstr ""
1629
1630 #: ../../../src/SDLInputState.cpp:667 ../../../src/SDLInputState.cpp:697
1631 msgid "Tab"
1632 msgstr ""
1633
1634 #: ../../../src/SDLInputState.cpp:673
13271635 msgid "Backspace"
13281636 msgstr ""
13291637
1330 #: ../../../src/SDLInputState.cpp:583
1638 #: ../../../src/SDLInputState.cpp:674
13311639 msgid "CapsLock"
13321640 msgstr ""
13331641
1334 #: ../../../src/SDLInputState.cpp:586
1335 msgid "End"
1336 msgstr ""
1337
1338 #: ../../../src/SDLInputState.cpp:587
1642 #: ../../../src/SDLInputState.cpp:678
13391643 msgid "Escape"
13401644 msgstr ""
13411645
1342 #: ../../../src/SDLInputState.cpp:588
1343 msgid "Home"
1344 msgstr ""
1345
1346 #: ../../../src/SDLInputState.cpp:589
1646 #: ../../../src/SDLInputState.cpp:680
13471647 msgid "Insert"
13481648 msgstr ""
13491649
1350 #: ../../../src/SDLInputState.cpp:590
1650 #: ../../../src/SDLInputState.cpp:681
13511651 msgid "Left Alt"
13521652 msgstr "Alt trái"
13531653
1354 #: ../../../src/SDLInputState.cpp:591
1654 #: ../../../src/SDLInputState.cpp:682
13551655 msgid "Left Ctrl"
13561656 msgstr "Ctrl trái"
13571657
1358 #: ../../../src/SDLInputState.cpp:593
1658 #: ../../../src/SDLInputState.cpp:684
13591659 msgid "Left Shift"
13601660 msgstr "Shift trái"
13611661
1362 #: ../../../src/SDLInputState.cpp:594
1662 #: ../../../src/SDLInputState.cpp:685
13631663 msgid "NumLock"
13641664 msgstr ""
13651665
1366 #: ../../../src/SDLInputState.cpp:595
1666 #: ../../../src/SDLInputState.cpp:686
13671667 msgid "PageDown"
13681668 msgstr ""
13691669
1370 #: ../../../src/SDLInputState.cpp:596
1670 #: ../../../src/SDLInputState.cpp:687
13711671 msgid "PageUp"
13721672 msgstr ""
13731673
1374 #: ../../../src/SDLInputState.cpp:597
1375 msgid "Pause"
1376 msgstr ""
1377
1378 #: ../../../src/SDLInputState.cpp:598
1674 #: ../../../src/SDLInputState.cpp:689
13791675 msgid "PrintScreen"
13801676 msgstr ""
13811677
1382 #: ../../../src/SDLInputState.cpp:599
1678 #: ../../../src/SDLInputState.cpp:690
13831679 msgid "Right Alt"
13841680 msgstr "Alt phải"
13851681
1386 #: ../../../src/SDLInputState.cpp:600
1682 #: ../../../src/SDLInputState.cpp:691
13871683 msgid "Right Ctrl"
13881684 msgstr "Ctrl phải"
13891685
1390 #: ../../../src/SDLInputState.cpp:601
1686 #: ../../../src/SDLInputState.cpp:692
13911687 msgid "Return"
13921688 msgstr ""
13931689
1394 #: ../../../src/SDLInputState.cpp:603
1690 #: ../../../src/SDLInputState.cpp:694
13951691 msgid "Right Shift"
13961692 msgstr "Shift phải"
13971693
1398 #: ../../../src/SDLInputState.cpp:604
1694 #: ../../../src/SDLInputState.cpp:695
13991695 msgid "ScrollLock"
14001696 msgstr ""
14011697
1402 #: ../../../src/SDLInputState.cpp:605
1698 #: ../../../src/SDLInputState.cpp:696
14031699 msgid "Space"
14041700 msgstr ""
14051701
1406 #: ../../../src/SDLInputState.cpp:606
1407 msgid "Tab"
1408 msgstr ""
1409
1410 #: ../../../src/SDLInputState.cpp:620
1702 #: ../../../src/SDLInputState.cpp:710
1703 #, c-format
1704 msgid "M%d"
1705 msgstr ""
1706
1707 #: ../../../src/SDLInputState.cpp:716
14111708 #, c-format
14121709 msgid "Mouse %d"
14131710 msgstr "Chuột %d"
14141711
1415 #: ../../../src/SDLInputState.cpp:628
1712 #: ../../../src/SDLInputState.cpp:726
1713 #, c-format
1714 msgid "JX%d-"
1715 msgstr ""
1716
1717 #: ../../../src/SDLInputState.cpp:728
14161718 #, c-format
14171719 msgid "Axis %d -"
14181720 msgstr ""
14191721
1420 #: ../../../src/SDLInputState.cpp:630
1722 #: ../../../src/SDLInputState.cpp:732
1723 #, c-format
1724 msgid "JX%d+"
1725 msgstr ""
1726
1727 #: ../../../src/SDLInputState.cpp:734
14211728 #, c-format
14221729 msgid "Axis %d +"
14231730 msgstr ""
14241731
1425 #: ../../../src/SDLInputState.cpp:633
1732 #: ../../../src/SDLInputState.cpp:739
1733 #, c-format
1734 msgid "JB%d"
1735 msgstr ""
1736
1737 #: ../../../src/SDLInputState.cpp:741
14261738 #, c-format
14271739 msgid "Button %d"
14281740 msgstr "Nút %d"
14291741
1430 #: ../../../src/SDLInputState.cpp:637
1431 msgid "(none)"
1432 msgstr "(không)"
1433
1434 #: ../../../src/SDLInputState.cpp:677
1742 #: ../../../src/SDLInputState.cpp:787
14351743 msgid "Touch control D-Pad"
14361744 msgstr ""
14371745
1438 #: ../../../src/SDLInputState.cpp:701
1746 #: ../../../src/SDLInputState.cpp:810
14391747 msgid "Touch control buttons"
14401748 msgstr ""
14411749
1442 #: ../../../src/SDLInputState.cpp:716
1750 #: ../../../src/SDLInputState.cpp:824
14431751 msgid "Tap"
14441752 msgstr "Vỗ"
14451753
1446 #: ../../../src/SDLInputState.cpp:760 ../../../src/SDLInputState.cpp:764
1447 #: ../../../src/SDLInputState.cpp:768
1754 #: ../../../src/SDLInputState.cpp:876 ../../../src/SDLInputState.cpp:878
1755 #, c-format
1756 msgid "Can not bind: %s"
1757 msgstr ""
1758
1759 #: ../../../src/SDLInputState.cpp:890 ../../../src/SDLInputState.cpp:894
1760 #: ../../../src/SDLInputState.cpp:898
14481761 #, c-format
14491762 msgid "'%s' is no longer bound to:"
14501763 msgstr "[%s] không còn được gán với:"
16051918 msgid "Base MP"
16061919 msgstr "Ma pháp khởi điểm"
16071920
1608 #: ../../../src/Utils.cpp:346
1921 #: ../../../src/Utils.cpp:365
16091922 msgid "k"
16101923 msgstr ""
16111924
1612 #: ../../../src/Utils.cpp:580
1925 #: ../../../src/Utils.cpp:635
16131926 #, c-format
16141927 msgid "%s second"
16151928 msgstr "%s giây"
16161929
1617 #: ../../../src/Utils.cpp:583
1930 #: ../../../src/Utils.cpp:638
16181931 #, c-format
16191932 msgid "%s seconds"
16201933 msgstr "%s giây"
33 # FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
44 #
55 # Translators:
6 # Justin Jacobs <jajdorkster@gmail.com>, 2018
7 # 杜茂森 <dumaosen_main01@outlook.com>, 2018
6 # Justin Jacobs <jajdorkster@gmail.com>, 2019
7 # CodingJellyfish <dumaosen_main01@outlook.com>, 2020
88 #
99 #, fuzzy
1010 msgid ""
1111 msgstr ""
1212 "Project-Id-Version: PACKAGE VERSION\n"
1313 "Report-Msgid-Bugs-To: \n"
14 "POT-Creation-Date: 2018-11-17 21:50-0500\n"
14 "POT-Creation-Date: 2021-05-23 20:34-0400\n"
1515 "PO-Revision-Date: 2018-03-28 19:16+0000\n"
16 "Last-Translator: 杜茂森 <dumaosen_main01@outlook.com>, 2018\n"
16 "Last-Translator: CodingJellyfish <dumaosen_main01@outlook.com>, 2020\n"
1717 "Language-Team: Chinese (https://www.transifex.com/flareorg/teams/84925/zh/)\n"
1818 "MIME-Version: 1.0\n"
1919 "Content-Type: text/plain; charset=UTF-8\n"
2121 "Language: zh\n"
2222 "Plural-Forms: nplurals=1; plural=0;\n"
2323
24 #: ../../../src/Avatar.cpp:367
24 #: ../../../src/Avatar.cpp:391
25 msgid "Your health is low!"
26 msgstr "您已奄奄一息!"
27
28 #: ../../../src/Avatar.cpp:421
2529 #, c-format
2630 msgid "Congratulations, you have reached level %d!"
27 msgstr "恭喜!你达到了等级 %d!"
28
29 #: ../../../src/Avatar.cpp:369
30 msgid "You may increase one attribute through the Character Menu."
31 msgstr "你可以在角色菜单增加一点属性"
32
33 #: ../../../src/Avatar.cpp:583
34 msgid "You are defeated. Game over! ${INPUT_CONTINUE} to exit to Title."
35 msgstr "你被打败了,游戏结束!按下${INPUT_CONTINUE}返回游戏开始界面。"
36
37 #: ../../../src/Avatar.cpp:589
38 msgid "You are defeated. ${INPUT_CONTINUE} to continue."
39 msgstr "你被打败了。按下${INPUT_CONTINUE}以继续。"
40
41 #: ../../../src/Avatar.cpp:839
31 msgstr "恭喜,你达到了等级%d!"
32
33 #: ../../../src/Avatar.cpp:423
34 msgid "You may increase one or more attributes through the Character Menu."
35 msgstr "你可以在角色菜单增加一点或多点属性。"
36
37 #: ../../../src/Avatar.cpp:427
38 msgid "You may unlock one or more abilities through the Powers Menu."
39 msgstr "你可以在技能菜单增加一点或多点技能。"
40
41 #: ../../../src/Avatar.cpp:689
42 msgid "You are defeated."
43 msgstr ""
44
45 #: ../../../src/Avatar.cpp:935
4246 msgid "Transformation expired. You have been moved back to a safe place."
43 msgstr "转换已过期。 你已回到一个安全的地方。"
44
45 #: ../../../src/CampaignManager.cpp:153
47 msgstr "传送已过期。你已回到了一个安全的地方。"
48
49 #: ../../../src/CampaignManager.cpp:152
4650 #, c-format
4751 msgid "%d %s removed."
48 msgstr "%d %s 已移除"
49
50 #: ../../../src/CampaignManager.cpp:162
52 msgstr "%d个%s已移除。"
53
54 #: ../../../src/CampaignManager.cpp:171
55 #, c-format
56 msgid "%s x%d removed."
57 msgstr "%s个%d已移除。"
58
59 #: ../../../src/CampaignManager.cpp:173
5160 #, c-format
5261 msgid "%s removed."
53 msgstr "%s已移除"
54
55 #: ../../../src/CampaignManager.cpp:175
62 msgstr "%s已移除。"
63
64 #: ../../../src/CampaignManager.cpp:187
65 #, c-format
66 msgid "You receive %d %s."
67 msgstr "你得到%d个%s。"
68
69 #: ../../../src/CampaignManager.cpp:191
70 #, c-format
71 msgid "You receive %s x%d."
72 msgstr "你收到%s x%d。"
73
74 #: ../../../src/CampaignManager.cpp:193
5675 #, c-format
5776 msgid "You receive %s."
58 msgstr "你收到 %s."
59
60 #: ../../../src/CampaignManager.cpp:177
61 #, c-format
62 msgid "You receive %s x%d."
63 msgstr "你收到 %s x%d."
64
65 #: ../../../src/CampaignManager.cpp:186
66 #, c-format
67 msgid "You receive %d %s."
68 msgstr "你收到 %d %s."
69
70 #: ../../../src/CampaignManager.cpp:195
77 msgstr "你收到%s。"
78
79 #: ../../../src/CampaignManager.cpp:210
7180 #, c-format
7281 msgid "You receive %d XP."
73 msgstr "你收到 %d XP."
74
75 #: ../../../src/CampaignManager.cpp:201
82 msgstr "你得到%dXP。"
83
84 #: ../../../src/CampaignManager.cpp:216
7685 msgid "HP restored."
77 msgstr "HP 已恢复."
78
79 #: ../../../src/CampaignManager.cpp:205
86 msgstr "HP已恢复。"
87
88 #: ../../../src/CampaignManager.cpp:220
8089 msgid "MP restored."
81 msgstr "MP 已恢复."
82
83 #: ../../../src/CampaignManager.cpp:210
90 msgstr "MP已恢复。"
91
92 #: ../../../src/CampaignManager.cpp:225
8493 msgid "HP and MP restored."
85 msgstr "HP 和 MP 已恢复."
86
87 #: ../../../src/CampaignManager.cpp:214
94 msgstr "HP和MP已恢复。"
95
96 #: ../../../src/CampaignManager.cpp:229
8897 msgid "Negative effects removed."
89 msgstr "负面影响已消除."
90
91 #: ../../../src/CampaignManager.cpp:220
98 msgstr "负面效果已消除。"
99
100 #: ../../../src/CampaignManager.cpp:235
92101 msgid "HP and MP restored, negative effects removed"
93 msgstr "HP 和MP 已恢复, 负面影响已消除"
102 msgstr "HP和MP已恢复,负面效果已消除。"
94103
95104 #: ../../../src/DeviceList.cpp:56
96105 msgid ""
99108 "Often slower, but less likely to have issues."
100109 msgstr ""
101110 "SDL软件渲染器\n"
102 "通常较慢,但不太可能出现问题。"
111 "\n"
112 "通常较慢,但出现问题几率更低。"
103113
104114 #: ../../../src/DeviceList.cpp:59
105115 msgid ""
108118 "The default renderer that is often faster than the SDL software renderer."
109119 msgstr ""
110120 "SDL硬件渲染器\n"
111 "默认渲染器,通常比SDL软件渲染器更快。"
112
113 #: ../../../src/EngineSettings.cpp:561
121 "\n"
122 "默认渲染器,通常比软件渲染器更快。"
123
124 #: ../../../src/EngineSettings.cpp:586
114125 msgid "Adventurer"
115 msgstr "玩家"
116
117 #: ../../../src/Entity.cpp:511
126 msgstr "冒险者"
127
128 #: ../../../src/Entity.cpp:527
118129 msgid "miss"
119130 msgstr "未击中"
120131
121 #: ../../../src/Entity.cpp:548 ../../../src/PowerManager.cpp:1152
122 #: ../../../src/StatBlock.cpp:805 ../../../src/StatBlock.cpp:811
132 #: ../../../src/Entity.cpp:565 ../../../src/PowerManager.cpp:1224
133 #: ../../../src/StatBlock.cpp:917 ../../../src/StatBlock.cpp:923
123134 #, c-format
124135 msgid "+%d HP"
125 msgstr "+%d HP"
126
127 #: ../../../src/Entity.cpp:555 ../../../src/StatBlock.cpp:816
128 #: ../../../src/StatBlock.cpp:822
136 msgstr "+%dHP"
137
138 #: ../../../src/Entity.cpp:572 ../../../src/StatBlock.cpp:928
139 #: ../../../src/StatBlock.cpp:934
129140 #, c-format
130141 msgid "+%d MP"
131 msgstr "+%d MP"
132
133 #: ../../../src/EventManager.cpp:738
142 msgstr "+%dMP"
143
144 #: ../../../src/EventManager.cpp:792
134145 msgid "Unknown destination"
135146 msgstr "无法进入"
136147
137 #: ../../../src/GameStateConfigBase.cpp:89
138 #: ../../../src/GameStateConfigBase.cpp:110
148 #: ../../../src/GameState.cpp:37 ../../../src/GameState.cpp:58
149 msgid "Loading..."
150 msgstr "载入中……"
151
152 #: ../../../src/GameStateLoad.cpp:90 ../../../src/GameStateLoad.cpp:103
153 msgid "Delete Save"
154 msgstr "删除存档"
155
156 #: ../../../src/GameStateLoad.cpp:90
157 msgid "Delete this save?"
158 msgstr "确定删除存档?"
159
160 #: ../../../src/GameStateLoad.cpp:92
161 msgid "Exit to Title"
162 msgstr "回到标题界面"
163
164 #: ../../../src/GameStateLoad.cpp:95
165 msgid "New Game"
166 msgstr "新游戏"
167
168 #: ../../../src/GameStateLoad.cpp:99 ../../../src/GameStateLoad.cpp:607
169 msgid "Choose a Slot"
170 msgstr "选择一个人物存档"
171
172 #: ../../../src/GameStateLoad.cpp:580 ../../../src/GameStateLoad.cpp:601
173 msgid "Enable a story mod to continue"
174 msgstr "启用故事模块以继续"
175
176 #: ../../../src/GameStateLoad.cpp:596
177 msgid "Load Game"
178 msgstr "载入游戏"
179
180 #: ../../../src/GameStateLoad.cpp:705
181 msgid "Entering game world..."
182 msgstr "进入游戏世界……"
183
184 #: ../../../src/GameStateLoad.cpp:708
185 msgid "Loading saved game..."
186 msgstr "载入游戏……"
187
188 #: ../../../src/GameStateLoad.cpp:741
189 msgid "Invalid save"
190 msgstr "保存无效"
191
192 #: ../../../src/GameStateLoad.cpp:765 ../../../src/ItemManager.cpp:745
193 #: ../../../src/MenuPowers.cpp:860 ../../../src/MenuPowers.cpp:1219
194 #: ../../../src/MenuPowers.cpp:1631
195 #, c-format
196 msgid "Level %d"
197 msgstr "等级 %d"
198
199 #: ../../../src/GameStateNew.cpp:66 ../../../src/InputState.cpp:416
200 #: ../../../src/MenuConfig.cpp:246
201 msgid "Cancel"
202 msgstr "取消"
203
204 #: ../../../src/GameStateNew.cpp:69
205 msgid "Create"
206 msgstr "创建"
207
208 #: ../../../src/GameStateNew.cpp:77
209 msgid "Randomize"
210 msgstr "随机"
211
212 #: ../../../src/GameStateNew.cpp:93
213 msgid "Choose a Portrait"
214 msgstr "选择头像"
215
216 #: ../../../src/GameStateNew.cpp:97
217 msgid "Choose a Name"
218 msgstr "输入名字"
219
220 #: ../../../src/GameStateNew.cpp:101
221 msgid "Permadeath?"
222 msgstr "死亡后不可复活?"
223
224 #: ../../../src/GameStateNew.cpp:105
225 msgid "Choose a Class"
226 msgstr "选择职业"
227
228 #: ../../../src/GameStateTitle.cpp:107
229 msgid "Play Game"
230 msgstr "开始游戏"
231
232 #: ../../../src/GameStateTitle.cpp:110
233 msgid "Enable a core mod to continue"
234 msgstr "开启核心模块以继续"
235
236 #: ../../../src/GameStateTitle.cpp:114 ../../../src/MenuMiniMap.cpp:152
237 msgid "Configuration"
238 msgstr "设置"
239
240 #: ../../../src/GameStateTitle.cpp:117
241 msgid "Credits"
242 msgstr "致谢"
243
244 #: ../../../src/GameStateTitle.cpp:120
245 msgid "Exit Game"
246 msgstr "退出游戏"
247
248 #: ../../../src/InputState.cpp:417
249 msgid "Accept"
250 msgstr "确定"
251
252 #: ../../../src/InputState.cpp:418 ../../../src/MenuMovementType.cpp:123
253 #: ../../../src/MenuMovementType.cpp:132 ../../../src/SDLInputState.cpp:668
254 #: ../../../src/SDLInputState.cpp:698
255 msgid "Up"
256 msgstr "上"
257
258 #: ../../../src/InputState.cpp:419 ../../../src/MenuMovementType.cpp:125
259 #: ../../../src/MenuMovementType.cpp:134 ../../../src/SDLInputState.cpp:646
260 #: ../../../src/SDLInputState.cpp:676
261 msgid "Down"
262 msgstr "下"
263
264 #: ../../../src/InputState.cpp:420 ../../../src/MenuMovementType.cpp:124
265 #: ../../../src/MenuMovementType.cpp:133 ../../../src/SDLInputState.cpp:653
266 #: ../../../src/SDLInputState.cpp:683
267 msgid "Left"
268 msgstr "左"
269
270 #: ../../../src/InputState.cpp:421 ../../../src/MenuMovementType.cpp:126
271 #: ../../../src/MenuMovementType.cpp:135 ../../../src/SDLInputState.cpp:663
272 #: ../../../src/SDLInputState.cpp:693
273 msgid "Right"
274 msgstr "右"
275
276 #: ../../../src/InputState.cpp:422
277 msgid "Bar1"
278 msgstr "槽1"
279
280 #: ../../../src/InputState.cpp:423
281 msgid "Bar2"
282 msgstr "槽2"
283
284 #: ../../../src/InputState.cpp:424
285 msgid "Bar3"
286 msgstr "槽3"
287
288 #: ../../../src/InputState.cpp:425
289 msgid "Bar4"
290 msgstr "槽4"
291
292 #: ../../../src/InputState.cpp:426
293 msgid "Bar5"
294 msgstr "槽5"
295
296 #: ../../../src/InputState.cpp:427
297 msgid "Bar6"
298 msgstr "槽6"
299
300 #: ../../../src/InputState.cpp:428
301 msgid "Bar7"
302 msgstr "槽7"
303
304 #: ../../../src/InputState.cpp:429
305 msgid "Bar8"
306 msgstr "槽8"
307
308 #: ../../../src/InputState.cpp:430
309 msgid "Bar9"
310 msgstr "槽9"
311
312 #: ../../../src/InputState.cpp:431
313 msgid "Bar0"
314 msgstr "槽0"
315
316 #: ../../../src/InputState.cpp:432 ../../../src/MenuActionBar.cpp:84
317 #: ../../../src/MenuCharacter.cpp:54
318 msgid "Character"
319 msgstr "角色"
320
321 #: ../../../src/InputState.cpp:433 ../../../src/MenuActionBar.cpp:85
322 #: ../../../src/MenuInventory.cpp:130 ../../../src/MenuVendor.cpp:59
323 msgid "Inventory"
324 msgstr "物品"
325
326 #: ../../../src/InputState.cpp:434 ../../../src/MenuActionBar.cpp:86
327 #: ../../../src/MenuPowers.cpp:158
328 msgid "Powers"
329 msgstr "技能"
330
331 #: ../../../src/InputState.cpp:435 ../../../src/MenuActionBar.cpp:87
332 #: ../../../src/MenuLog.cpp:72
333 msgid "Log"
334 msgstr "日志"
335
336 #: ../../../src/InputState.cpp:436
337 msgid "Main1"
338 msgstr "主按键1"
339
340 #: ../../../src/InputState.cpp:437
341 msgid "Main2"
342 msgstr "主按键2"
343
344 #: ../../../src/InputState.cpp:438
345 msgid "Ctrl"
346 msgstr "Ctrl"
347
348 #: ../../../src/InputState.cpp:439
349 msgid "Shift"
350 msgstr "Shift"
351
352 #: ../../../src/InputState.cpp:440
353 msgid "Alt"
354 msgstr "Alt"
355
356 #: ../../../src/InputState.cpp:441 ../../../src/SDLInputState.cpp:675
357 msgid "Delete"
358 msgstr "Delete"
359
360 #: ../../../src/InputState.cpp:442
361 msgid "ActionBar Accept"
362 msgstr "操作栏接受"
363
364 #: ../../../src/InputState.cpp:443
365 msgid "ActionBar Left"
366 msgstr "操作栏左"
367
368 #: ../../../src/InputState.cpp:444
369 msgid "ActionBar Right"
370 msgstr "操作栏右"
371
372 #: ../../../src/InputState.cpp:445
373 msgid "ActionBar Use"
374 msgstr "操作栏使用"
375
376 #: ../../../src/InputState.cpp:446
377 msgid "Developer Menu"
378 msgstr "开发者菜单"
379
380 #: ../../../src/InputState.cpp:448
381 msgid "Left Mouse"
382 msgstr "鼠标左键"
383
384 #: ../../../src/InputState.cpp:449
385 msgid "Middle Mouse"
386 msgstr "鼠标中键"
387
388 #: ../../../src/InputState.cpp:450
389 msgid "Right Mouse"
390 msgstr "鼠标右键"
391
392 #: ../../../src/InputState.cpp:451
393 msgid "Wheel Up"
394 msgstr "滚轮向上"
395
396 #: ../../../src/InputState.cpp:452
397 msgid "Wheel Down"
398 msgstr "滚轮向下"
399
400 #: ../../../src/InputState.cpp:453
401 msgid "Mouse X1"
402 msgstr "鼠标X1"
403
404 #: ../../../src/InputState.cpp:454
405 msgid "Mouse X2"
406 msgstr "鼠标X2"
407
408 #: ../../../src/ItemManager.cpp:475
409 msgid "Unknown Item"
410 msgstr "未知物品"
411
412 #: ../../../src/ItemManager.cpp:646 ../../../src/MenuPowers.cpp:959
413 #, c-format
414 msgid "%d%% Speed"
415 msgstr "%d%%速度"
416
417 #: ../../../src/ItemManager.cpp:650 ../../../src/MenuPowers.cpp:962
418 #, c-format
419 msgid "%d%% Attack Speed"
420 msgstr "%d%%攻击速度"
421
422 #: ../../../src/ItemManager.cpp:672 ../../../src/MenuCharacter.cpp:352
423 #: ../../../src/MenuPowers.cpp:931
424 #, c-format
425 msgid "Resistance (%s)"
426 msgstr "抗性(%s)"
427
428 #: ../../../src/ItemManager.cpp:682
429 #, c-format
430 msgid "Requires %s"
431 msgstr "需要%s"
432
433 #: ../../../src/ItemManager.cpp:731
434 msgid "Quest Item"
435 msgstr "任务物品"
436
437 #: ../../../src/ItemManager.cpp:758
438 #, c-format
439 msgid "Quality: %s"
440 msgstr "质量:%s"
441
442 #: ../../../src/ItemManager.cpp:783
443 #, c-format
444 msgid "Absorb: %d-%d"
445 msgstr "伤害吸收:%d-%d"
446
447 #: ../../../src/ItemManager.cpp:785
448 #, c-format
449 msgid "Absorb: %d"
450 msgstr "伤害吸收:%d"
451
452 #: ../../../src/ItemManager.cpp:825 ../../../src/MenuPowers.cpp:1206
453 #: ../../../src/MenuPowers.cpp:1209
454 #, c-format
455 msgid "Requires Level %d"
456 msgstr "需要等级%d"
457
458 #: ../../../src/ItemManager.cpp:836 ../../../src/MenuPowers.cpp:1198
459 #: ../../../src/MenuPowers.cpp:1200
460 #, c-format
461 msgid "Requires %s %d"
462 msgstr "需要%s %d"
463
464 #: ../../../src/ItemManager.cpp:847
465 #, c-format
466 msgid "Requires Class: %s"
467 msgstr "需要职业:%s"
468
469 #: ../../../src/ItemManager.cpp:863 ../../../src/ItemManager.cpp:875
470 #, c-format
471 msgid "Buy Price: %d %s"
472 msgstr "购买价格:%d %s"
473
474 #: ../../../src/ItemManager.cpp:865 ../../../src/ItemManager.cpp:877
475 #, c-format
476 msgid "Buy Price: %d %s each"
477 msgstr "购买单价:%d 每个%s"
478
479 #: ../../../src/ItemManager.cpp:885
480 #, c-format
481 msgid "Sell Price: %d %s"
482 msgstr "出售价格:%d %s"
483
484 #: ../../../src/ItemManager.cpp:887
485 #, c-format
486 msgid "Sell Price: %d %s each"
487 msgstr "出售单价:%d 每个%s"
488
489 #: ../../../src/ItemManager.cpp:896
490 msgid "Set:"
491 msgstr "设置:"
492
493 #: ../../../src/ItemManager.cpp:903
494 #, c-format
495 msgid "%d items:"
496 msgstr "%d个物品:"
497
498 #: ../../../src/ItemManager.cpp:915
499 #, c-format
500 msgid "Press [%s] to read"
501 msgstr "按[%s]阅读"
502
503 #: ../../../src/ItemManager.cpp:918
504 #, c-format
505 msgid "Press [%s] to use"
506 msgstr "按[%s]使用"
507
508 #: ../../../src/MenuActionBar.cpp:239 ../../../src/MenuActionBar.cpp:246
509 #: ../../../src/MenuActionBar.cpp:249 ../../../src/MenuActionBar.cpp:255
510 #, c-format
511 msgid "Hotkey: %s"
512 msgstr "快捷键:%s"
513
514 #: ../../../src/MenuActionBar.cpp:621
515 msgid "Not enough MP."
516 msgstr "MP不足。"
517
518 #: ../../../src/MenuActiveEffects.cpp:124
519 #, c-format
520 msgid "x%d"
521 msgstr "x%d"
522
523 #: ../../../src/MenuActiveEffects.cpp:219
524 msgid "Remaining:"
525 msgstr "剩余:"
526
527 #: ../../../src/MenuActiveEffects.cpp:225
528 #, c-format
529 msgid "x%d stacks"
530 msgstr "x%d"
531
532 #: ../../../src/MenuCharacter.cpp:73 ../../../src/MenuCharacter.cpp:78
533 msgid "Name"
534 msgstr "名字"
535
536 #: ../../../src/MenuCharacter.cpp:74 ../../../src/MenuCharacter.cpp:79
537 msgid "Level"
538 msgstr "等级"
539
540 #: ../../../src/MenuCharacter.cpp:309
541 #, c-format
542 msgid "Available stat points: %d"
543 msgstr ""
544
545 #: ../../../src/MenuCharacter.cpp:353
546 #, c-format
547 msgid "Reduces the damage taken from \"%s\" elemental attacks."
548 msgstr "减少来自“%s”的元素攻击伤害。"
549
550 #: ../../../src/MenuCharacter.cpp:363 ../../../src/MenuManager.cpp:301
551 #, c-format
552 msgid "XP: %d"
553 msgstr "经验值XP:%d"
554
555 #: ../../../src/MenuCharacter.cpp:365
556 #, c-format
557 msgid "Next: %d"
558 msgstr "下一级:%d"
559
560 #: ../../../src/MenuCharacter.cpp:371
561 #, c-format
562 msgid "base (%d), bonus (%d)"
563 msgstr "基础(%d),增益(%d)"
564
565 #: ../../../src/MenuCharacter.cpp:379 ../../../src/MenuCharacter.cpp:393
566 msgid "Related stats:"
567 msgstr "相关的属性:"
568
569 #: ../../../src/MenuCharacter.cpp:419 ../../../src/MenuCharacter.cpp:443
570 #, c-format
571 msgid "Each level grants %d."
572 msgstr "每一级增长%d。"
573
574 #: ../../../src/MenuCharacter.cpp:423 ../../../src/MenuCharacter.cpp:447
575 #, c-format
576 msgid "Each point of %s grants %d."
577 msgstr "每点%s增长%d。"
578
579 #: ../../../src/MenuConfig.cpp:122 ../../../src/MenuConfig.cpp:1171
580 msgid "Clear"
581 msgstr "清空"
582
583 #: ../../../src/MenuConfig.cpp:122 ../../../src/MenuConfig.cpp:1169
584 msgid "Assign:"
585 msgstr "分配:"
586
587 #: ../../../src/MenuConfig.cpp:123 ../../../src/MenuConfig.cpp:245
139588 msgid "Defaults"
140589 msgstr "默认设置"
141590
142 #: ../../../src/GameStateConfigBase.cpp:89
591 #: ../../../src/MenuConfig.cpp:123
143592 msgid "Reset ALL settings?"
144 msgstr "确定重置?"
145
146 #: ../../../src/GameStateConfigBase.cpp:109 ../../../src/MenuNumPicker.cpp:49
593 msgstr "确定重置所有设置吗?"
594
595 #: ../../../src/MenuConfig.cpp:244 ../../../src/MenuNumPicker.cpp:49
147596 msgid "OK"
148597 msgstr "确定"
149598
150 #: ../../../src/GameStateConfigBase.cpp:111 ../../../src/GameStateNew.cpp:65
151 #: ../../../src/InputState.cpp:401
152 msgid "Cancel"
153 msgstr "取消设置"
154
155 #: ../../../src/GameStateConfigBase.cpp:160
156 #: ../../../src/GameStateConfigDesktop.cpp:130
599 #: ../../../src/MenuConfig.cpp:248 ../../../src/MenuGameOver.cpp:72
600 msgid "Continue"
601 msgstr "继续"
602
603 #: ../../../src/MenuConfig.cpp:250
604 msgid "Save Game"
605 msgstr "保存游戏"
606
607 #: ../../../src/MenuConfig.cpp:293
608 msgid "Default"
609 msgstr "默认"
610
611 #: ../../../src/MenuConfig.cpp:293
612 msgid ""
613 "Show all loot tooltips, except for those that would be obscured by the "
614 "player or an enemy. Temporarily show all loot tooltips with 'Alt'."
615 msgstr "显示全部的战利品提示,除了那些被玩家或敌人遮盖的。按‘Alt’临时显示全部的战利品提示。"
616
617 #: ../../../src/MenuConfig.cpp:294
618 msgid "Show all"
619 msgstr "全部显示"
620
621 #: ../../../src/MenuConfig.cpp:294
622 msgid ""
623 "Always show loot tooltips. Temporarily hide all loot tooltips with 'Alt'."
624 msgstr "总是显示战利品提示。按‘Alt’临时隐藏全部的战利品提示。"
625
626 #: ../../../src/MenuConfig.cpp:295 ../../../src/MenuConfig.cpp:300
627 msgid "Hidden"
628 msgstr "隐藏"
629
630 #: ../../../src/MenuConfig.cpp:295
631 msgid ""
632 "Always hide loot tooltips, except for when a piece of loot is hovered with "
633 "the mouse cursor. Temporarily show all loot tooltips with 'Alt'."
634 msgstr "总是隐藏战利品提示,除了光标指向的。按 ‘Alt’ 显示全部的战利品提示。"
635
636 #: ../../../src/MenuConfig.cpp:298
637 msgid "Visible"
638 msgstr "可见"
639
640 #: ../../../src/MenuConfig.cpp:299
641 msgid "Visible (2x zoom)"
642 msgstr "可见(两倍缩放)"
643
644 #: ../../../src/MenuConfig.cpp:303
645 msgid ""
646 "Controls the type of warning to be activated when the player is below the "
647 "low health threshold."
648 msgstr "这将控制玩家在低生命阈值以下时使用何种通知。"
649
650 #: ../../../src/MenuConfig.cpp:304
651 msgid "- Display a message"
652 msgstr "- 显示消息"
653
654 #: ../../../src/MenuConfig.cpp:305
655 msgid "- Play a sound"
656 msgstr "- 播放声音"
657
658 #: ../../../src/MenuConfig.cpp:306
659 msgid "- Change the cursor"
660 msgstr "- 切换光标"
661
662 #: ../../../src/MenuConfig.cpp:308
663 msgid "Disabled"
664 msgstr "已禁用"
665
666 #: ../../../src/MenuConfig.cpp:309
667 msgid "All"
668 msgstr "全部"
669
670 #: ../../../src/MenuConfig.cpp:310
671 msgid "Message & Cursor"
672 msgstr "消息和光标"
673
674 #: ../../../src/MenuConfig.cpp:311
675 msgid "Message & Sound"
676 msgstr "消息和声音"
677
678 #: ../../../src/MenuConfig.cpp:312
679 msgid "Sound & Cursor"
680 msgstr "声音和光标"
681
682 #: ../../../src/MenuConfig.cpp:313
683 msgid "Message"
684 msgstr "消息"
685
686 #: ../../../src/MenuConfig.cpp:314
687 msgid "Cursor"
688 msgstr "光标"
689
690 #: ../../../src/MenuConfig.cpp:315
691 msgid "Sound"
692 msgstr "音效"
693
694 #: ../../../src/MenuConfig.cpp:321
695 msgid ""
696 "When the player's health drops below the given threshold, the low health "
697 "notifications are triggered if one or more of them is enabled."
698 msgstr "当玩家的HP低于一个特定的阈值时,如果您已启用一种或更多低生命通知,它将被触发。"
699
700 #: ../../../src/MenuConfig.cpp:334 ../../../src/MenuConfig.cpp:1587
701 #: ../../../src/MenuGameOver.cpp:116
702 msgid "Exit"
703 msgstr "退出"
704
705 #: ../../../src/MenuConfig.cpp:335
706 msgid "Video"
707 msgstr "画面"
708
709 #: ../../../src/MenuConfig.cpp:336
157710 msgid "Audio"
158711 msgstr "声音"
159712
160 #: ../../../src/GameStateConfigBase.cpp:161
161 #: ../../../src/GameStateConfigDesktop.cpp:131
713 #: ../../../src/MenuConfig.cpp:337
162714 msgid "Interface"
163715 msgstr "界面"
164716
165 #: ../../../src/GameStateConfigBase.cpp:162
166 #: ../../../src/GameStateConfigDesktop.cpp:134
717 #: ../../../src/MenuConfig.cpp:338
718 msgid "Input"
719 msgstr "输入"
720
721 #: ../../../src/MenuConfig.cpp:339
722 msgid "Keybindings"
723 msgstr "快捷键"
724
725 #: ../../../src/MenuConfig.cpp:340
167726 msgid "Mods"
168727 msgstr "模块"
169728
170 #: ../../../src/GameStateConfigBase.cpp:249 ../../../src/MenuExit.cpp:72
729 #: ../../../src/MenuConfig.cpp:352
730 msgid "Paused"
731 msgstr "暂停"
732
733 #: ../../../src/MenuConfig.cpp:355
734 msgid "Time Played"
735 msgstr "已玩时间"
736
737 #: ../../../src/MenuConfig.cpp:361
738 msgid "Renderer"
739 msgstr "渲染器"
740
741 #: ../../../src/MenuConfig.cpp:362
742 msgid "Full Screen Mode"
743 msgstr "全屏模式"
744
745 #: ../../../src/MenuConfig.cpp:363
746 msgid "Hardware surfaces"
747 msgstr "硬件加速"
748
749 #: ../../../src/MenuConfig.cpp:364
750 msgid "V-Sync"
751 msgstr "垂直同步"
752
753 #: ../../../src/MenuConfig.cpp:365
754 msgid "Texture Filtering"
755 msgstr "纹理过滤"
756
757 #: ../../../src/MenuConfig.cpp:366
758 msgid "DPI scaling"
759 msgstr "DPI缩放"
760
761 #: ../../../src/MenuConfig.cpp:367
762 msgid "Parallax Layers"
763 msgstr "视差层"
764
765 #: ../../../src/MenuConfig.cpp:368
766 msgid "Allow changing gamma"
767 msgstr "允许更改伽马"
768
769 #: ../../../src/MenuConfig.cpp:369
770 msgid "Gamma"
771 msgstr "伽马"
772
773 #: ../../../src/MenuConfig.cpp:371
774 msgid "Sound Volume"
775 msgstr "游戏音乐音量"
776
777 #: ../../../src/MenuConfig.cpp:372
171778 msgid "Music Volume"
172779 msgstr "背景音乐音量"
173780
174 #: ../../../src/GameStateConfigBase.cpp:253 ../../../src/MenuExit.cpp:77
175 msgid "Sound Volume"
176 msgstr "游戏音乐音量"
177
178 #: ../../../src/GameStateConfigBase.cpp:257
781 #: ../../../src/MenuConfig.cpp:374
179782 msgid "Language"
180783 msgstr "语言"
181784
182 #: ../../../src/GameStateConfigBase.cpp:266
785 #: ../../../src/MenuConfig.cpp:375
183786 msgid "Show FPS"
184787 msgstr "显示画面每秒帧数"
185788
186 #: ../../../src/GameStateConfigBase.cpp:270
789 #: ../../../src/MenuConfig.cpp:376
790 msgid "Hardware mouse cursor"
791 msgstr "硬件光标"
792
793 #: ../../../src/MenuConfig.cpp:377
187794 msgid "Colorblind Mode"
188795 msgstr "色盲模式"
189796
190 #: ../../../src/GameStateConfigBase.cpp:274
191 msgid "Hardware mouse cursor"
192 msgstr "硬件鼠标光标"
193
194 #: ../../../src/GameStateConfigBase.cpp:278
797 #: ../../../src/MenuConfig.cpp:378
195798 msgid "Developer Mode"
196799 msgstr "开发者模式"
197800
198 #: ../../../src/GameStateConfigBase.cpp:282
801 #: ../../../src/MenuConfig.cpp:379
199802 msgid "Subtitles"
200803 msgstr "字幕"
201804
202 #: ../../../src/GameStateConfigBase.cpp:286
203 msgid "Active Mods"
204 msgstr "激活模块"
205
206 #: ../../../src/GameStateConfigBase.cpp:295
207 msgid "Available Mods"
208 msgstr "可用模块"
209
210 #: ../../../src/GameStateConfigBase.cpp:314
211 msgid "<< Disable"
212 msgstr "<< 禁用"
213
214 #: ../../../src/GameStateConfigBase.cpp:320
215 msgid "Enable >>"
216 msgstr " 启用>>"
217
218 #: ../../../src/GameStateConfigBase.cpp:873
219 msgid "Version:"
220 msgstr "版本号:"
221
222 #: ../../../src/GameStateConfigBase.cpp:878
223 msgid "Game:"
224 msgstr "游戏:"
225
226 #: ../../../src/GameStateConfigBase.cpp:883
227 msgid "Engine version:"
228 msgstr "引擎版本号:"
229
230 #: ../../../src/GameStateConfigBase.cpp:891
231 msgid "Requires mods:"
232 msgstr "需要的模组:"
233
234 #: ../../../src/GameStateConfigDesktop.cpp:83
235 #: ../../../src/GameStateConfigDesktop.cpp:751
236 msgid "Clear"
237 msgstr "清空"
238
239 #: ../../../src/GameStateConfigDesktop.cpp:83
240 #: ../../../src/GameStateConfigDesktop.cpp:749
241 msgid "Assign:"
242 msgstr "分配:"
243
244 #: ../../../src/GameStateConfigDesktop.cpp:128
245 msgid "Video"
246 msgstr "画面"
247
248 #: ../../../src/GameStateConfigDesktop.cpp:132
249 msgid "Input"
250 msgstr "输入"
251
252 #: ../../../src/GameStateConfigDesktop.cpp:133
253 msgid "Keybindings"
254 msgstr "快捷键"
255
256 #: ../../../src/GameStateConfigDesktop.cpp:188
805 #: ../../../src/MenuConfig.cpp:380
806 msgid "Loot tooltip visibility"
807 msgstr "战利品提示可见性"
808
809 #: ../../../src/MenuConfig.cpp:381
810 msgid "Mini-map mode"
811 msgstr "小地图模式"
812
813 #: ../../../src/MenuConfig.cpp:382
814 msgid "Always show stat bar labels"
815 msgstr "始终显示进度条标签"
816
817 #: ../../../src/MenuConfig.cpp:383
818 msgid "Allow stat bar auto-hiding"
819 msgstr "允许状态栏自动隐藏"
820
821 #: ../../../src/MenuConfig.cpp:384
822 msgid "Show combat text"
823 msgstr "显示战斗文字"
824
825 #: ../../../src/MenuConfig.cpp:385
826 msgid "Automatically equip items"
827 msgstr "自动装备物品"
828
829 #: ../../../src/MenuConfig.cpp:386
830 msgid "Show hidden entity markers"
831 msgstr "显示隐藏的敌人标记"
832
833 #: ../../../src/MenuConfig.cpp:387
834 msgid "Low health notification"
835 msgstr "低生命通知"
836
837 #: ../../../src/MenuConfig.cpp:388
838 msgid "Low health threshold"
839 msgstr "低生命阈值"
840
841 #: ../../../src/MenuConfig.cpp:389
842 msgid "Show item comparison tooltips"
843 msgstr ""
844
845 #: ../../../src/MenuConfig.cpp:392 ../../../src/MenuMovementType.cpp:94
846 #: ../../../src/MenuMovementType.cpp:131
847 msgid "Joystick"
848 msgstr "摇杆"
849
850 #: ../../../src/MenuConfig.cpp:393
851 msgid "Move hero using mouse"
852 msgstr "使用鼠标移动英雄"
853
854 #: ../../../src/MenuConfig.cpp:394
855 msgid "Mouse aim"
856 msgstr "使用鼠标瞄准敌人"
857
858 #: ../../../src/MenuConfig.cpp:395
859 msgid "Do not use mouse"
860 msgstr "不要使用鼠标"
861
862 #: ../../../src/MenuConfig.cpp:396
863 msgid "Swap mouse movement button"
864 msgstr "交换鼠标移动键"
865
866 #: ../../../src/MenuConfig.cpp:397
867 msgid "Attack with mouse movement"
868 msgstr "用鼠标移动键攻击"
869
870 #: ../../../src/MenuConfig.cpp:398
871 msgid "Joystick Deadzone"
872 msgstr "摇杆灵敏度"
873
874 #: ../../../src/MenuConfig.cpp:408
875 #, c-format
876 msgid "Primary binding: %s"
877 msgstr "主要键位:%s"
878
879 #: ../../../src/MenuConfig.cpp:409
880 #, c-format
881 msgid "Alternate binding: %s"
882 msgstr "备用键位:%s"
883
884 #: ../../../src/MenuConfig.cpp:410
885 #, c-format
886 msgid "Joystick binding: %s"
887 msgstr "摇杆键位:%s"
888
889 #: ../../../src/MenuConfig.cpp:511
257890 msgid ""
258891 "Will try to store surfaces in video memory versus system memory. The effect "
259892 "this has on performance depends on the renderer."
260 msgstr "将尝试在视频内存中存储表面与系统内存。 这对性能的影响取决于渲染器。"
261
262 #: ../../../src/GameStateConfigDesktop.cpp:189
893 msgstr "将尝试在视频内存中存储表面而不是系统内存。这对性能的影响取决于渲染器。"
894
895 #: ../../../src/MenuConfig.cpp:512
263896 msgid ""
264897 "Prevents screen tearing. Disable if you experience \"stuttering\" in "
265898 "windowed mode or input lag."
266 msgstr "防止画面撕裂。 如果在窗口模式或输入时卡顿则禁用。"
267
268 #: ../../../src/GameStateConfigDesktop.cpp:190
899 msgstr "防止画面撕裂。如果在窗口模式或输入时“卡顿”则禁用。"
900
901 #: ../../../src/MenuConfig.cpp:513
269902 msgid ""
270903 "When enabled, this uses the screen DPI in addition to the window dimensions "
271904 "to scale the rendering resolution. Otherwise, only the window dimensions are"
272905 " used."
273 msgstr "启用后,除了窗口尺寸外,还会使用屏幕DPI来调整渲染分辨率。 否则,只使用窗口尺寸。"
274
275 #: ../../../src/GameStateConfigDesktop.cpp:191
906 msgstr "启用后,除了窗口尺寸外,还会使用屏幕DPI来调整渲染分辨率。否则,只使用窗口尺寸。"
907
908 #: ../../../src/MenuConfig.cpp:514
276909 msgid ""
277910 "This enables parallax (non-tile) layers. Disabling this setting can improve "
278911 "performance in some cases."
912 msgstr "启用视差(非瓦片)层。 禁用此设置在一些情况下能提升性能。"
913
914 #: ../../../src/MenuConfig.cpp:515
915 msgid ""
916 "Enables the below setting that controls the screen gamma level. The behavior"
917 " of the gamma setting can vary between platforms."
918 msgstr "启用以下设置来控制屏幕伽马级别。这个伽马设置的行为依平台而异。"
919
920 #: ../../../src/MenuConfig.cpp:516
921 msgid ""
922 "Provides additional text for information that is primarily conveyed through "
923 "color."
924 msgstr "提供从颜色传递的额外的文字信息。"
925
926 #: ../../../src/MenuConfig.cpp:517
927 msgid ""
928 "Some mods will automatically hide the stat bars when they are inactive. "
929 "Disabling this option will keep them displayed at all times."
930 msgstr "当状态栏闲置时,一些组件会自动隐藏它。禁用它以让状态栏持续显示。"
931
932 #: ../../../src/MenuConfig.cpp:518
933 msgid ""
934 "When enabled, empty equipment slots will be filled with applicable items "
935 "when they are obtained."
936 msgstr "当开启时,获取适当的物品的时候空的装备栏将被填充。"
937
938 #: ../../../src/MenuConfig.cpp:519
939 msgid ""
940 "Shows a marker above enemies, allies, and the player when they are obscured "
941 "by tall objects."
942 msgstr "敌人、友军和玩家被高的物体遮蔽时在上面显示标记。"
943
944 #: ../../../src/MenuConfig.cpp:520
945 msgid ""
946 "When enabled, tooltips for equipped items of the same type are shown next to"
947 " standard item tooltips."
279948 msgstr ""
280949
281 #: ../../../src/GameStateConfigDesktop.cpp:192
282 msgid "Experimental"
283 msgstr "实验功能"
284
285 #: ../../../src/GameStateConfigDesktop.cpp:193
286 msgid "For handheld devices"
287 msgstr "对于手持设备"
288
289 #: ../../../src/GameStateConfigDesktop.cpp:211
290 msgid "Renderer"
291 msgstr "渲染"
292
293 #: ../../../src/GameStateConfigDesktop.cpp:227
294 msgid "Full Screen Mode"
295 msgstr "全屏模式"
296
297 #: ../../../src/GameStateConfigDesktop.cpp:231
298 msgid "Move hero using mouse"
299 msgstr "使用鼠标移动人物"
300
301 #: ../../../src/GameStateConfigDesktop.cpp:235
302 msgid "Hardware surfaces"
303 msgstr "硬件加速"
304
305 #: ../../../src/GameStateConfigDesktop.cpp:239
306 msgid "V-Sync"
307 msgstr "垂直同步"
308
309 #: ../../../src/GameStateConfigDesktop.cpp:243
310 msgid "Texture Filtering"
311 msgstr "纹理过滤"
312
313 #: ../../../src/GameStateConfigDesktop.cpp:247
314 msgid "DPI scaling"
315 msgstr "DPI缩放"
316
317 #: ../../../src/GameStateConfigDesktop.cpp:251
318 msgid "Parallax Layers"
319 msgstr ""
320
321 #: ../../../src/GameStateConfigDesktop.cpp:255
322 msgid "Allow changing gamma"
323 msgstr "允许更改亮度"
324
325 #: ../../../src/GameStateConfigDesktop.cpp:259
326 msgid "Gamma"
327 msgstr "亮度"
328
329 #: ../../../src/GameStateConfigDesktop.cpp:263
330 msgid "Use joystick"
331 msgstr "使用摇杆"
332
333 #: ../../../src/GameStateConfigDesktop.cpp:267
334 msgid "Joystick"
335 msgstr "摇杆"
336
337 #: ../../../src/GameStateConfigDesktop.cpp:283
338 msgid "Mouse aim"
339 msgstr "使用鼠标瞄准敌人"
340
341 #: ../../../src/GameStateConfigDesktop.cpp:287
342 msgid "Do not use mouse"
343 msgstr "不要使用鼠标"
344
345 #: ../../../src/GameStateConfigDesktop.cpp:291
346 msgid "Joystick Deadzone"
347 msgstr "操纵杆灵敏度"
348
349 #: ../../../src/GameState.cpp:37 ../../../src/GameState.cpp:58
350 msgid "Loading..."
351 msgstr "载入中..."
352
353 #: ../../../src/GameStateLoad.cpp:88 ../../../src/GameStateLoad.cpp:101
354 msgid "Delete Save"
355 msgstr "删除角色"
356
357 #: ../../../src/GameStateLoad.cpp:88
358 msgid "Delete this save?"
359 msgstr "确定删除角色?"
360
361 #: ../../../src/GameStateLoad.cpp:90
362 msgid "Exit to Title"
363 msgstr "回到游戏开始"
364
365 #: ../../../src/GameStateLoad.cpp:93
366 msgid "New Game"
367 msgstr "新游戏"
368
369 #: ../../../src/GameStateLoad.cpp:97 ../../../src/GameStateLoad.cpp:600
370 msgid "Choose a Slot"
371 msgstr "选择一个人物"
372
373 #: ../../../src/GameStateLoad.cpp:573 ../../../src/GameStateLoad.cpp:594
374 msgid "Enable a story mod to continue"
375 msgstr "使用故事模式继续"
376
377 #: ../../../src/GameStateLoad.cpp:589
378 msgid "Load Game"
379 msgstr "载入游戏"
380
381 #: ../../../src/GameStateLoad.cpp:695
382 msgid "Entering game world..."
383 msgstr "进入游戏..."
384
385 #: ../../../src/GameStateLoad.cpp:698
386 msgid "Loading saved game..."
387 msgstr "载入游戏..."
388
389 #: ../../../src/GameStateLoad.cpp:731
390 msgid "Invalid save"
391 msgstr "保存无效"
392
393 #: ../../../src/GameStateLoad.cpp:755 ../../../src/ItemManager.cpp:747
394 #: ../../../src/MenuPowers.cpp:778 ../../../src/MenuPowers.cpp:1144
395 #: ../../../src/MenuPowers.cpp:1542
396 #, c-format
397 msgid "Level %d"
398 msgstr "级别 %d"
399
400 #: ../../../src/GameStateNew.cpp:68
401 msgid "Create"
402 msgstr "创建"
403
404 #: ../../../src/GameStateNew.cpp:76
405 msgid "Randomize"
406 msgstr "随机化"
407
408 #: ../../../src/GameStateNew.cpp:92
409 msgid "Choose a Portrait"
410 msgstr "选择头像"
411
412 #: ../../../src/GameStateNew.cpp:96
413 msgid "Choose a Name"
414 msgstr "输入名字"
415
416 #: ../../../src/GameStateNew.cpp:100
417 msgid "Permadeath?"
418 msgstr "死亡后不可复活?"
419
420 #: ../../../src/GameStateNew.cpp:104
421 msgid "Choose a Class"
422 msgstr "选择职业"
423
424 #: ../../../src/GameStateTitle.cpp:108
425 msgid "Play Game"
426 msgstr "开始游戏"
427
428 #: ../../../src/GameStateTitle.cpp:111
429 msgid "Enable a core mod to continue"
430 msgstr "使用 core mod 继续"
431
432 #: ../../../src/GameStateTitle.cpp:115
433 msgid "Configuration"
434 msgstr "配置"
435
436 #: ../../../src/GameStateTitle.cpp:118
437 msgid "Credits"
438 msgstr "参与人员"
439
440 #: ../../../src/GameStateTitle.cpp:121
441 msgid "Exit Game"
442 msgstr "退出游戏"
443
444 #: ../../../src/InputState.cpp:402
445 msgid "Accept"
446 msgstr "确定"
447
448 #: ../../../src/InputState.cpp:403 ../../../src/SDLInputState.cpp:607
449 msgid "Up"
450 msgstr "上"
451
452 #: ../../../src/InputState.cpp:404 ../../../src/SDLInputState.cpp:585
453 msgid "Down"
454 msgstr "下"
455
456 #: ../../../src/InputState.cpp:405 ../../../src/SDLInputState.cpp:592
457 msgid "Left"
458 msgstr "左"
459
460 #: ../../../src/InputState.cpp:406 ../../../src/SDLInputState.cpp:602
461 msgid "Right"
462 msgstr "右"
463
464 #: ../../../src/InputState.cpp:407
465 msgid "Bar1"
466 msgstr "槽1"
467
468 #: ../../../src/InputState.cpp:408
469 msgid "Bar2"
470 msgstr "槽2"
471
472 #: ../../../src/InputState.cpp:409
473 msgid "Bar3"
474 msgstr "槽3"
475
476 #: ../../../src/InputState.cpp:410
477 msgid "Bar4"
478 msgstr "槽4"
479
480 #: ../../../src/InputState.cpp:411
481 msgid "Bar5"
482 msgstr "槽5"
483
484 #: ../../../src/InputState.cpp:412
485 msgid "Bar6"
486 msgstr "槽6"
487
488 #: ../../../src/InputState.cpp:413
489 msgid "Bar7"
490 msgstr "槽7"
491
492 #: ../../../src/InputState.cpp:414
493 msgid "Bar8"
494 msgstr "槽8"
495
496 #: ../../../src/InputState.cpp:415
497 msgid "Bar9"
498 msgstr "槽9"
499
500 #: ../../../src/InputState.cpp:416
501 msgid "Bar0"
502 msgstr "槽0"
503
504 #: ../../../src/InputState.cpp:417 ../../../src/MenuActionBar.cpp:83
505 #: ../../../src/MenuCharacter.cpp:54
506 msgid "Character"
507 msgstr "角色"
508
509 #: ../../../src/InputState.cpp:418 ../../../src/MenuActionBar.cpp:84
510 #: ../../../src/MenuInventory.cpp:137 ../../../src/MenuVendor.cpp:57
511 msgid "Inventory"
512 msgstr "物品"
513
514 #: ../../../src/InputState.cpp:419 ../../../src/MenuActionBar.cpp:85
515 #: ../../../src/MenuPowers.cpp:168
516 msgid "Powers"
517 msgstr "技能"
518
519 #: ../../../src/InputState.cpp:420 ../../../src/MenuActionBar.cpp:86
520 #: ../../../src/MenuLog.cpp:72
521 msgid "Log"
522 msgstr "说明"
523
524 #: ../../../src/InputState.cpp:421
525 msgid "Main1"
526 msgstr "主槽1"
527
528 #: ../../../src/InputState.cpp:422
529 msgid "Main2"
530 msgstr "主槽2"
531
532 #: ../../../src/InputState.cpp:423
533 msgid "Ctrl"
534 msgstr "Ctrl"
535
536 #: ../../../src/InputState.cpp:424
537 msgid "Shift"
538 msgstr "Shift"
539
540 #: ../../../src/InputState.cpp:425
541 msgid "Alt"
542 msgstr "其他"
543
544 #: ../../../src/InputState.cpp:426 ../../../src/SDLInputState.cpp:584
545 msgid "Delete"
546 msgstr "删除"
547
548 #: ../../../src/InputState.cpp:427
549 msgid "ActionBar Accept"
550 msgstr "操作栏 接受"
551
552 #: ../../../src/InputState.cpp:428
553 msgid "ActionBar Left"
554 msgstr "操作栏 左"
555
556 #: ../../../src/InputState.cpp:429
557 msgid "ActionBar Right"
558 msgstr ""
559
560 #: ../../../src/InputState.cpp:430
561 msgid "ActionBar Use"
562 msgstr ""
563
564 #: ../../../src/InputState.cpp:431
565 msgid "Developer Menu"
566 msgstr ""
567
568 #: ../../../src/InputState.cpp:433
569 msgid "Left Mouse"
570 msgstr ""
571
572 #: ../../../src/InputState.cpp:434
573 msgid "Middle Mouse"
574 msgstr ""
575
576 #: ../../../src/InputState.cpp:435
577 msgid "Right Mouse"
578 msgstr ""
579
580 #: ../../../src/InputState.cpp:436
581 msgid "Wheel Up"
582 msgstr ""
583
584 #: ../../../src/InputState.cpp:437
585 msgid "Wheel Down"
586 msgstr ""
587
588 #: ../../../src/InputState.cpp:438
589 msgid "Mouse X1"
590 msgstr ""
591
592 #: ../../../src/InputState.cpp:439
593 msgid "Mouse X2"
594 msgstr ""
595
596 #: ../../../src/ItemManager.cpp:450 ../../../src/ItemManager.cpp:453
597 msgid "Unknown Item"
598 msgstr ""
599
600 #: ../../../src/ItemManager.cpp:648 ../../../src/MenuPowers.cpp:887
601 #, c-format
602 msgid "%d%% Speed"
603 msgstr ""
604
605 #: ../../../src/ItemManager.cpp:652 ../../../src/MenuPowers.cpp:890
606 #, c-format
607 msgid "%d%% Attack Speed"
608 msgstr ""
609
610 #: ../../../src/ItemManager.cpp:674 ../../../src/MenuCharacter.cpp:354
611 #: ../../../src/MenuPowers.cpp:833
612 #, c-format
613 msgid "Resistance (%s)"
614 msgstr ""
615
616 #: ../../../src/ItemManager.cpp:684
617 #, c-format
618 msgid "Requires %s"
619 msgstr ""
620
621 #: ../../../src/ItemManager.cpp:733
622 msgid "Quest Item"
623 msgstr ""
624
625 #: ../../../src/ItemManager.cpp:760
626 #, c-format
627 msgid "Quality: %s"
628 msgstr ""
629
630 #: ../../../src/ItemManager.cpp:785
631 #, c-format
632 msgid "Absorb: %d-%d"
633 msgstr "抵消攻击: %d-%d"
634
635 #: ../../../src/ItemManager.cpp:787
636 #, c-format
637 msgid "Absorb: %d"
638 msgstr "抵消攻击: %d"
639
640 #: ../../../src/ItemManager.cpp:827 ../../../src/MenuPowers.cpp:1131
641 #: ../../../src/MenuPowers.cpp:1134
642 #, c-format
643 msgid "Requires Level %d"
644 msgstr "需要级别 %d"
645
646 #: ../../../src/ItemManager.cpp:838 ../../../src/MenuPowers.cpp:1123
647 #: ../../../src/MenuPowers.cpp:1125
648 #, c-format
649 msgid "Requires %s %d"
650 msgstr ""
651
652 #: ../../../src/ItemManager.cpp:849
653 #, c-format
654 msgid "Requires Class: %s"
655 msgstr ""
656
657 #: ../../../src/ItemManager.cpp:864 ../../../src/ItemManager.cpp:876
658 #, c-format
659 msgid "Buy Price: %d %s"
660 msgstr "购买价格: %d %s"
661
662 #: ../../../src/ItemManager.cpp:866 ../../../src/ItemManager.cpp:878
663 #, c-format
664 msgid "Buy Price: %d %s each"
665 msgstr "购买单价: %d %s "
666
667 #: ../../../src/ItemManager.cpp:886
668 #, c-format
669 msgid "Sell Price: %d %s"
670 msgstr "出售价格: %d %s"
671
672 #: ../../../src/ItemManager.cpp:888
673 #, c-format
674 msgid "Sell Price: %d %s each"
675 msgstr "出售单价: %d %s "
676
677 #: ../../../src/ItemManager.cpp:897
678 msgid "Set:"
679 msgstr ""
680
681 #: ../../../src/ItemManager.cpp:904
682 #, c-format
683 msgid "%d items:"
684 msgstr ""
685
686 #: ../../../src/ItemManager.cpp:917
687 #, c-format
688 msgid "Press [%s] to use"
689 msgstr ""
690
691 #: ../../../src/ItemManager.cpp:920
692 #, c-format
693 msgid "Press [%s] to read"
694 msgstr ""
695
696 #: ../../../src/MenuActionBar.cpp:87
697 msgid "Loot tooltip visibility"
698 msgstr ""
699
700 #: ../../../src/MenuActionBar.cpp:88
701 msgid "Mini-map mode"
702 msgstr ""
703
704 #: ../../../src/MenuActionBar.cpp:89
705 msgid "Always show stat bar labels"
706 msgstr "始终显示进度条标签"
707
708 #: ../../../src/MenuActionBar.cpp:90
709 msgid "Show combat text"
710 msgstr "显示战斗文字"
711
712 #: ../../../src/MenuActionBar.cpp:254 ../../../src/MenuActionBar.cpp:261
713 #: ../../../src/MenuActionBar.cpp:264 ../../../src/MenuActionBar.cpp:271
714 #, c-format
715 msgid "Hotkey: %s"
716 msgstr ""
717
718 #: ../../../src/MenuActionBar.cpp:474
719 #, c-format
720 msgid "Default. Temporarily show all loot tooltips with '%s'."
721 msgstr ""
722
723 #: ../../../src/MenuActionBar.cpp:476
724 #, c-format
725 msgid "Show All. Temporarily hide all loot tooltips with '%s'."
726 msgstr ""
727
728 #: ../../../src/MenuActionBar.cpp:478
729 #, c-format
730 msgid "Hide All. Temporarily show all loot tooltips with '%s'."
731 msgstr ""
732
733 #: ../../../src/MenuActionBar.cpp:482
734 msgid "Visible"
735 msgstr ""
736
737 #: ../../../src/MenuActionBar.cpp:484
738 msgid "Visible (2x zoom)"
739 msgstr ""
740
741 #: ../../../src/MenuActionBar.cpp:486
742 msgid "Hidden"
743 msgstr ""
744
745 #: ../../../src/MenuActionBar.cpp:490 ../../../src/MenuActionBar.cpp:496
746 msgid "Enabled"
747 msgstr ""
748
749 #: ../../../src/MenuActionBar.cpp:492 ../../../src/MenuActionBar.cpp:498
750 msgid "Disabled"
751 msgstr ""
752
753 #: ../../../src/MenuActionBar.cpp:657
754 msgid "Not enough MP."
755 msgstr ""
756
757 #: ../../../src/MenuActiveEffects.cpp:124
758 #, c-format
759 msgid "x%d"
760 msgstr ""
761
762 #: ../../../src/MenuActiveEffects.cpp:219
763 msgid "Remaining:"
764 msgstr ""
765
766 #: ../../../src/MenuActiveEffects.cpp:225
767 #, c-format
768 msgid "x%d stacks"
769 msgstr ""
770
771 #: ../../../src/MenuCharacter.cpp:73 ../../../src/MenuCharacter.cpp:78
772 msgid "Name"
773 msgstr "名字"
774
775 #: ../../../src/MenuCharacter.cpp:74 ../../../src/MenuCharacter.cpp:79
776 msgid "Level"
777 msgstr "级别"
778
779 #: ../../../src/MenuCharacter.cpp:310
780 #, c-format
781 msgid "%d unspent stat point"
782 msgstr ""
783
784 #: ../../../src/MenuCharacter.cpp:313
785 #, c-format
786 msgid "%d unspent stat points"
787 msgstr ""
788
789 #: ../../../src/MenuCharacter.cpp:355
790 #, c-format
791 msgid "Reduces the damage taken from \"%s\" elemental attacks."
792 msgstr ""
793
794 #: ../../../src/MenuCharacter.cpp:365 ../../../src/MenuManager.cpp:283
795 #, c-format
796 msgid "XP: %d"
797 msgstr "经验值: %d"
798
799 #: ../../../src/MenuCharacter.cpp:367
800 #, c-format
801 msgid "Next: %d"
802 msgstr "Next: %d"
803
804 #: ../../../src/MenuCharacter.cpp:373
805 #, c-format
806 msgid "base (%d), bonus (%d)"
807 msgstr "base (%d), bonus (%d)"
808
809 #: ../../../src/MenuCharacter.cpp:381 ../../../src/MenuCharacter.cpp:395
810 msgid "Related stats:"
811 msgstr ""
812
813 #: ../../../src/MenuCharacter.cpp:421 ../../../src/MenuCharacter.cpp:445
814 #, c-format
815 msgid "Each level grants %d."
816 msgstr ""
817
818 #: ../../../src/MenuCharacter.cpp:425 ../../../src/MenuCharacter.cpp:449
819 #, c-format
820 msgid "Each point of %s grants %d."
821 msgstr ""
822
823 #: ../../../src/MenuDevConsole.cpp:63
950 #: ../../../src/MenuConfig.cpp:521
951 msgid ""
952 "This allows the game to be controlled entirely with the keyboard (or "
953 "joystick)."
954 msgstr "允许游戏完全被键盘(或摇杆)控制。"
955
956 #: ../../../src/MenuConfig.cpp:522
957 msgid ""
958 "When 'Move hero using mouse' is enabled, this setting controls if 'Main1' or"
959 " 'Main2' is used to move the hero. If enabled, 'Main2' will move the hero "
960 "instead of 'Main1'."
961 msgstr "当开启‘使用鼠标移动英雄’时,这设置使用‘主按键1’还是‘主按键2’来移动英雄。开启时,使用‘主按键2’来移动英雄而不是‘主按键1’。"
962
963 #: ../../../src/MenuConfig.cpp:523
964 msgid ""
965 "When 'Move hero using mouse' is enabled, this setting controls if the Power "
966 "assigned to the movement button can be used by targeting an enemy. If this "
967 "setting is disabled, it is required to use 'Shift' to access the Power "
968 "assigned to the movement button."
969 msgstr "当开启‘使用鼠标移动英雄’时,这设置分配到移动键的技能是否能向敌人使用。如果这个设置被禁用,需要使用‘Shift’访问分配到移动键的技能。"
970
971 #: ../../../src/MenuConfig.cpp:524
972 msgid ""
973 "The player's attacks will be aimed in the direction of the mouse cursor when"
974 " this is enabled."
975 msgstr "开启后玩家的攻击将指向光标。"
976
977 #: ../../../src/MenuConfig.cpp:575
978 msgid "Active Mods"
979 msgstr "激活模块"
980
981 #: ../../../src/MenuConfig.cpp:584
982 msgid "Available Mods"
983 msgstr "可用模块"
984
985 #: ../../../src/MenuConfig.cpp:603
986 msgid "<< Disable"
987 msgstr "<< 禁用"
988
989 #: ../../../src/MenuConfig.cpp:609
990 msgid "Enable >>"
991 msgstr "启用 >>"
992
993 #: ../../../src/MenuConfig.cpp:1444
994 msgid "Version:"
995 msgstr "版本号:"
996
997 #: ../../../src/MenuConfig.cpp:1449
998 msgid "Game:"
999 msgstr "游戏:"
1000
1001 #: ../../../src/MenuConfig.cpp:1454
1002 msgid "Engine version:"
1003 msgstr "引擎版本号:"
1004
1005 #: ../../../src/MenuConfig.cpp:1462
1006 msgid "Requires mods:"
1007 msgstr "需要的模块:"
1008
1009 #: ../../../src/MenuConfig.cpp:1570 ../../../src/SDLInputState.cpp:748
1010 msgid "(none)"
1011 msgstr "(无)"
1012
1013 #: ../../../src/MenuConfig.cpp:1587 ../../../src/MenuGameOver.cpp:73
1014 msgid "Save & Exit"
1015 msgstr "保存并退出"
1016
1017 #: ../../../src/MenuDevConsole.cpp:65
8241018 msgid "Execute"
825 msgstr ""
826
827 #: ../../../src/MenuDevConsole.cpp:101 ../../../src/MenuDevConsole.cpp:151
1019 msgstr "执行"
1020
1021 #: ../../../src/MenuDevConsole.cpp:103 ../../../src/MenuDevConsole.cpp:153
8281022 msgid "Developer Console"
829 msgstr ""
830
831 #: ../../../src/MenuDevConsole.cpp:141
1023 msgstr "开发者控制台"
1024
1025 #: ../../../src/MenuDevConsole.cpp:143
8321026 #, c-format
8331027 msgid "Use '%s' to inspect with the cursor."
834 msgstr ""
835
836 #: ../../../src/MenuDevConsole.cpp:146
1028 msgstr "使用‘%s’使用光标检视"
1029
1030 #: ../../../src/MenuDevConsole.cpp:148
8371031 msgid "Arguments with spaces should be enclosed with double quotes. Example:"
838 msgstr ""
839
840 #: ../../../src/MenuDevConsole.cpp:147
1032 msgstr "参数中的空格需要以双引号包围。比如:"
1033
1034 #: ../../../src/MenuDevConsole.cpp:149
8411035 msgid "Type 'help' to get a list of commands."
842 msgstr ""
843
844 #: ../../../src/MenuDevConsole.cpp:209 ../../../src/MenuDevConsole.cpp:213
1036 msgstr "输入‘help’获取命令列表。"
1037
1038 #: ../../../src/MenuDevConsole.cpp:211 ../../../src/MenuDevConsole.cpp:215
8451039 msgid "px"
846 msgstr ""
847
848 #: ../../../src/MenuDevConsole.cpp:224
1040 msgstr "像素"
1041
1042 #: ../../../src/MenuDevConsole.cpp:226
8491043 msgid "Distance"
850 msgstr ""
851
852 #: ../../../src/MenuDevConsole.cpp:239 ../../../src/MenuDevConsole.cpp:286
1044 msgstr "距离"
1045
1046 #: ../../../src/MenuDevConsole.cpp:241 ../../../src/MenuDevConsole.cpp:289
1047 #: ../../../src/MenuDevConsole.cpp:303
8531048 msgid "Entity"
854 msgstr ""
855
856 #: ../../../src/MenuDevConsole.cpp:261 ../../../src/MenuDevConsole.cpp:268
1049 msgstr "实体"
1050
1051 #: ../../../src/MenuDevConsole.cpp:263 ../../../src/MenuDevConsole.cpp:270
8571052 msgid "none"
858 msgstr ""
859
860 #: ../../../src/MenuDevConsole.cpp:262 ../../../src/MenuDevConsole.cpp:264
1053 msgstr "无"
1054
1055 #: ../../../src/MenuDevConsole.cpp:264 ../../../src/MenuDevConsole.cpp:266
8611056 msgid "wall"
862 msgstr ""
863
864 #: ../../../src/MenuDevConsole.cpp:263 ../../../src/MenuDevConsole.cpp:265
1057 msgstr "墙"
1058
1059 #: ../../../src/MenuDevConsole.cpp:265 ../../../src/MenuDevConsole.cpp:267
8651060 msgid "short wall / pit"
866 msgstr ""
867
868 #: ../../../src/MenuDevConsole.cpp:266
1061 msgstr "矮墙/坑洞"
1062
1063 #: ../../../src/MenuDevConsole.cpp:268
8691064 msgid "entity"
870 msgstr ""
871
872 #: ../../../src/MenuDevConsole.cpp:267
1065 msgstr "敌人"
1066
1067 #: ../../../src/MenuDevConsole.cpp:269
8731068 msgid "entity, ally"
874 msgstr ""
875
876 #: ../../../src/MenuDevConsole.cpp:274
1069 msgstr "敌人,友军"
1070
1071 #: ../../../src/MenuDevConsole.cpp:276
8771072 msgid "Tile"
878 msgstr ""
879
880 #: ../../../src/MenuDevConsole.cpp:360
1073 msgstr "瓦片"
1074
1075 #: ../../../src/MenuDevConsole.cpp:377
8811076 msgid "adds a power to the action bar"
882 msgstr ""
883
884 #: ../../../src/MenuDevConsole.cpp:361
1077 msgstr "向动作槽添加一个技能"
1078
1079 #: ../../../src/MenuDevConsole.cpp:378
8851080 msgid "turns on/off the display of the FPS counter"
886 msgstr ""
887
888 #: ../../../src/MenuDevConsole.cpp:362
1081 msgstr "打开/关闭FPS计数器的显示"
1082
1083 #: ../../../src/MenuDevConsole.cpp:379
8891084 msgid "turns on/off all of the HUD elements"
890 msgstr ""
891
892 #: ../../../src/MenuDevConsole.cpp:363
1085 msgstr "打开/关闭全部HUD元素"
1086
1087 #: ../../../src/MenuDevConsole.cpp:380
8931088 msgid "turns on/off the developer hud"
894 msgstr ""
895
896 #: ../../../src/MenuDevConsole.cpp:364
1089 msgstr "打开/关闭开发者HUD"
1090
1091 #: ../../../src/MenuDevConsole.cpp:381
8971092 msgid ""
8981093 "Prints a list of powers that match a search term. No search term will list "
8991094 "all items"
900 msgstr ""
901
902 #: ../../../src/MenuDevConsole.cpp:365
1095 msgstr "输出匹配搜索词的技能列表。没有搜索词将会列出所有对象"
1096
1097 #: ../../../src/MenuDevConsole.cpp:382
9031098 msgid "Prints out all the map filenames located in the \"maps/\" directory."
904 msgstr ""
905
906 #: ../../../src/MenuDevConsole.cpp:366
1099 msgstr "输出“maps/”文件夹里所有地图的文件名。"
1100
1101 #: ../../../src/MenuDevConsole.cpp:383
9071102 msgid ""
9081103 "Prints out the active campaign statuses that match a search term. No search "
9091104 "term will list all active statuses"
910 msgstr ""
911
912 #: ../../../src/MenuDevConsole.cpp:367
1105 msgstr "输出匹配搜索词的活动战役状态。没有搜索词将会列出所有活动状态"
1106
1107 #: ../../../src/MenuDevConsole.cpp:384
9131108 msgid ""
9141109 "Prints a list of items that match a search term. No search term will list "
9151110 "all items"
916 msgstr ""
917
918 #: ../../../src/MenuDevConsole.cpp:368
1111 msgstr "输出匹配搜索词的物品。没有搜索词将会列出所有物品"
1112
1113 #: ../../../src/MenuDevConsole.cpp:385
9191114 msgid ""
9201115 "parses a series of event components and executes them as a single event"
921 msgstr ""
922
923 #: ../../../src/MenuDevConsole.cpp:369
1116 msgstr "解析一串事件元素并且像一个事件一样执行它们"
1117
1118 #: ../../../src/MenuDevConsole.cpp:386
9241119 msgid "clears the command history"
925 msgstr ""
926
927 #: ../../../src/MenuDevConsole.cpp:370
1120 msgstr "清除命令历史"
1121
1122 #: ../../../src/MenuDevConsole.cpp:387
9281123 msgid "displays this text"
929 msgstr ""
930
931 #: ../../../src/MenuDevConsole.cpp:377
1124 msgstr "显示这个文字"
1125
1126 #: ../../../src/MenuDevConsole.cpp:394
9321127 msgid "Toggled the developer hud"
933 msgstr ""
934
935 #: ../../../src/MenuDevConsole.cpp:381
1128 msgstr "切换开发者HUD"
1129
1130 #: ../../../src/MenuDevConsole.cpp:398
9361131 msgid "Toggled the hud"
937 msgstr ""
938
939 #: ../../../src/MenuDevConsole.cpp:385
1132 msgstr "切换HUD"
1133
1134 #: ../../../src/MenuDevConsole.cpp:402
9401135 msgid "Toggled the FPS counter"
941 msgstr ""
942
943 #: ../../../src/MenuDevConsole.cpp:534
1136 msgstr "切换FPS计数器"
1137
1138 #: ../../../src/MenuDevConsole.cpp:552
9441139 msgid "ERROR: Incorrect number of arguments"
945 msgstr ""
946
947 #: ../../../src/MenuDevConsole.cpp:536 ../../../src/MenuDevConsole.cpp:564
1140 msgstr "错误:参数个数错误"
1141
1142 #: ../../../src/MenuDevConsole.cpp:554 ../../../src/MenuDevConsole.cpp:582
9481143 msgid "HINT:"
949 msgstr ""
950
951 #: ../../../src/MenuDevConsole.cpp:536
1144 msgstr "提示:"
1145
1146 #: ../../../src/MenuDevConsole.cpp:554
9521147 msgid "<id>"
953 msgstr ""
954
955 #: ../../../src/MenuDevConsole.cpp:552
1148 msgstr "<id>"
1149
1150 #: ../../../src/MenuDevConsole.cpp:570
9561151 #, c-format
9571152 msgid "ERROR: '%s' is not a valid event key"
958 msgstr ""
959
960 #: ../../../src/MenuDevConsole.cpp:562
1153 msgstr "错误:'%s'是非法事件代码"
1154
1155 #: ../../../src/MenuDevConsole.cpp:580
9611156 msgid "ERROR: Too few arguments"
962 msgstr ""
963
964 #: ../../../src/MenuDevConsole.cpp:564
1157 msgstr "错误:参数太少"
1158
1159 #: ../../../src/MenuDevConsole.cpp:582
9651160 msgid "<key>=<val> <key>=<val> ..."
966 msgstr ""
967
968 #: ../../../src/MenuDevConsole.cpp:569
1161 msgstr "<key>=<val> <key>=<val> ..."
1162
1163 #: ../../../src/MenuDevConsole.cpp:587
9691164 msgid "ERROR: Unknown command"
970 msgstr ""
971
972 #: ../../../src/MenuDevConsole.cpp:571
1165 msgstr "错误:未知命令"
1166
1167 #: ../../../src/MenuDevConsole.cpp:589
9731168 msgid "HINT: Type help"
974 msgstr ""
975
976 #: ../../../src/MenuEnemy.cpp:138
1169 msgstr "提示:类型帮助"
1170
1171 #: ../../../src/MenuEnemy.cpp:162
9771172 #, c-format
9781173 msgid "%s level %d"
979 msgstr "%s 级别 %d"
980
981 #: ../../../src/MenuEnemy.cpp:162
1174 msgstr "%s 等级%d"
1175
1176 #: ../../../src/MenuEnemy.cpp:186
9821177 msgid "Dead"
9831178 msgstr "死亡"
9841179
985 #: ../../../src/MenuEnemy.cpp:164
1180 #: ../../../src/MenuEnemy.cpp:188
9861181 msgid "Destroyed"
1182 msgstr "摧毁"
1183
1184 #: ../../../src/MenuGameOver.cpp:69
1185 msgid "Game Over"
9871186 msgstr ""
9881187
989 #: ../../../src/MenuExit.cpp:85 ../../../src/MenuExit.cpp:139
990 msgid "Paused"
991 msgstr ""
992
993 #: ../../../src/MenuExit.cpp:91
994 msgid "Save & Exit"
995 msgstr ""
996
997 #: ../../../src/MenuExit.cpp:92
998 msgid "Exit"
999 msgstr "退出"
1000
1001 #: ../../../src/MenuExit.cpp:96
1002 msgid "Continue"
1003 msgstr ""
1004
1005 #: ../../../src/MenuInventory.cpp:73
1006 msgid "Automatically equip items"
1007 msgstr "自动装备物品"
1008
1009 #: ../../../src/MenuInventory.cpp:188
1188 #: ../../../src/MenuInventory.cpp:178
10101189 #, c-format
10111190 msgid "Lost %d%% of %s."
1012 msgstr ""
1013
1014 #: ../../../src/MenuInventory.cpp:195
1191 msgstr "失去%d%%的%s。"
1192
1193 #: ../../../src/MenuInventory.cpp:185
10151194 #, c-format
10161195 msgid "Lost %d%% of total XP."
1017 msgstr ""
1018
1019 #: ../../../src/MenuInventory.cpp:200
1196 msgstr "失去%d%%总XP。"
1197
1198 #: ../../../src/MenuInventory.cpp:190
10201199 #, c-format
10211200 msgid "Lost %d%% of current level XP."
1022 msgstr ""
1023
1024 #: ../../../src/MenuInventory.cpp:226
1201 msgstr "失去%d%%当前等级的XP。"
1202
1203 #: ../../../src/MenuInventory.cpp:216
10251204 #, c-format
10261205 msgid "Lost %s."
1027 msgstr ""
1028
1029 #: ../../../src/MenuInventory.cpp:274 ../../../src/MenuStash.cpp:146
1206 msgstr "失去%s。"
1207
1208 #: ../../../src/MenuInventory.cpp:258 ../../../src/MenuStash.cpp:276
10301209 #, c-format
10311210 msgid "%d %s"
1032 msgstr "%d %s"
1033
1034 #: ../../../src/MenuInventory.cpp:317
1211 msgstr "%d个%s"
1212
1213 #: ../../../src/MenuInventory.cpp:301
10351214 msgid "Pick up item(s):"
1036 msgstr ""
1037
1038 #: ../../../src/MenuInventory.cpp:318
1215 msgstr "捡起物品:"
1216
1217 #: ../../../src/MenuInventory.cpp:302
10391218 msgid "Use or equip item:"
1040 msgstr ""
1041
1042 #: ../../../src/MenuInventory.cpp:319
1219 msgstr "使用或装备物品:"
1220
1221 #: ../../../src/MenuInventory.cpp:303
10431222 #, c-format
10441223 msgid "%s modifiers"
1045 msgstr ""
1046
1047 #: ../../../src/MenuInventory.cpp:320
1224 msgstr "来调整"
1225
1226 #: ../../../src/MenuInventory.cpp:304
10481227 msgid "Select a quantity of item:"
1049 msgstr ""
1050
1051 #: ../../../src/MenuInventory.cpp:323
1228 msgstr "选择物品的数量:"
1229
1230 #: ../../../src/MenuInventory.cpp:307
10521231 msgid "Stash item stack:"
1053 msgstr ""
1054
1055 #: ../../../src/MenuInventory.cpp:325
1232 msgstr "储物物品的栈:"
1233
1234 #: ../../../src/MenuInventory.cpp:309
10561235 msgid "Sell item stack:"
1057 msgstr ""
1058
1059 #: ../../../src/MenuInventory.cpp:592
1236 msgstr "卖出物品的栈:"
1237
1238 #: ../../../src/MenuInventory.cpp:576
10601239 msgid "You don't have enough of the required item."
1061 msgstr ""
1062
1063 #: ../../../src/MenuInventory.cpp:599
1240 msgstr "你没有足够的需要的物品。"
1241
1242 #: ../../../src/MenuInventory.cpp:588
10641243 msgid "You can't use this item right now."
1065 msgstr ""
1066
1067 #: ../../../src/MenuInventory.cpp:611
1244 msgstr "你无法立刻使用这个物品。"
1245
1246 #: ../../../src/MenuInventory.cpp:600
10681247 msgid "This item can only be used from the action bar."
1069 msgstr "此物品只能从动作槽使用"
1070
1071 #: ../../../src/MenuInventory.cpp:729
1248 msgstr "此物品只能从动作槽使用。"
1249
1250 #: ../../../src/MenuInventory.cpp:718
10721251 msgid "Inventory is full."
1073 msgstr "背包已满"
1074
1075 #: ../../../src/MenuInventory.cpp:849
1252 msgstr "背包已满。"
1253
1254 #: ../../../src/MenuInventory.cpp:843
10761255 #, c-format
10771256 msgid "Not enough %s."
1078 msgstr ""
1079
1080 #: ../../../src/MenuInventory.cpp:869 ../../../src/MenuInventory.cpp:876
1257 msgstr "%s不足。"
1258
1259 #: ../../../src/MenuInventory.cpp:863 ../../../src/MenuInventory.cpp:870
10811260 msgid "This item can not be sold."
1082 msgstr ""
1261 msgstr "这个物品无法卖出。"
10831262
10841263 #: ../../../src/MenuLog.cpp:91
10851264 msgid "Notes"
10891268 msgid "Quests"
10901269 msgstr "任务"
10911270
1092 #: ../../../src/MenuManager.cpp:286
1271 #: ../../../src/MenuManager.cpp:305
10931272 #, c-format
10941273 msgid "XP: %d/%d"
1095 msgstr "经验值: %d/%d"
1096
1097 #: ../../../src/MenuManager.cpp:827
1274 msgstr "经验值:%d/%d"
1275
1276 #: ../../../src/MenuManager.cpp:875
10981277 msgid "This item can not be dropped."
1278 msgstr "这个物品无法丢弃。"
1279
1280 #: ../../../src/MenuManager.cpp:1501
1281 msgid "Equipped"
1282 msgstr ""
1283
1284 #: ../../../src/MenuMovementType.cpp:87
1285 msgid "Select a Movement Type"
1286 msgstr ""
1287
1288 #: ../../../src/MenuMovementType.cpp:89
1289 msgid "Can be changed later in the Configuration menu."
1290 msgstr ""
1291
1292 #: ../../../src/MenuMovementType.cpp:92 ../../../src/MenuMovementType.cpp:122
1293 msgid "Keyboard"
1294 msgstr ""
1295
1296 #: ../../../src/MenuMovementType.cpp:93 ../../../src/MenuMovementType.cpp:128
1297 msgid "Mouse"
1298 msgstr ""
1299
1300 #: ../../../src/MenuMovementType.cpp:129
1301 msgid "Button"
10991302 msgstr ""
11001303
11011304 #: ../../../src/MenuNumPicker.cpp:59
11021305 msgid "Enter amount:"
1306 msgstr "输入数目:"
1307
1308 #: ../../../src/MenuPowers.cpp:872
1309 msgid "Passive"
1310 msgstr "被动"
1311
1312 #: ../../../src/MenuPowers.cpp:879
1313 #, c-format
1314 msgid "Costs %d MP"
1315 msgstr "消耗%dMP"
1316
1317 #: ../../../src/MenuPowers.cpp:883
1318 #, c-format
1319 msgid "Costs %d HP"
1320 msgstr "消耗%dHP"
1321
1322 #: ../../../src/MenuPowers.cpp:887
1323 msgid "Cooldown:"
1324 msgstr "冷却:"
1325
1326 #: ../../../src/MenuPowers.cpp:938 ../../../src/MenuPowers.cpp:941
1327 msgid "Damage per second"
1328 msgstr "每秒伤害:"
1329
1330 #: ../../../src/MenuPowers.cpp:944 ../../../src/MenuPowers.cpp:947
1331 msgid "HP per second"
1332 msgstr "每秒HP"
1333
1334 #: ../../../src/MenuPowers.cpp:950 ../../../src/MenuPowers.cpp:953
1335 msgid "MP per second"
1336 msgstr "每秒MP"
1337
1338 #: ../../../src/MenuPowers.cpp:957
1339 msgid "Immobilize"
1340 msgstr "固定"
1341
1342 #: ../../../src/MenuPowers.cpp:965
1343 msgid "Immunity"
1344 msgstr "豁免"
1345
1346 #: ../../../src/MenuPowers.cpp:968
1347 msgid "Immunity to damage over time"
1348 msgstr "慢性伤害豁免"
1349
1350 #: ../../../src/MenuPowers.cpp:971
1351 msgid "Immunity to slow"
1352 msgstr "减速豁免"
1353
1354 #: ../../../src/MenuPowers.cpp:974
1355 msgid "Immunity to stun"
1356 msgstr "击晕豁免"
1357
1358 #: ../../../src/MenuPowers.cpp:977
1359 msgid "Immunity to HP steal"
1360 msgstr "HP偷取豁免"
1361
1362 #: ../../../src/MenuPowers.cpp:980
1363 msgid "Immunity to MP steal"
1364 msgstr "MP偷取豁免"
1365
1366 #: ../../../src/MenuPowers.cpp:983
1367 msgid "Immunity to knockback"
1368 msgstr "击退豁免"
1369
1370 #: ../../../src/MenuPowers.cpp:986
1371 msgid "Immunity to damage reflection"
1372 msgstr "伤害反射豁免"
1373
1374 #: ../../../src/MenuPowers.cpp:992
1375 msgid "Stun"
1376 msgstr "击晕"
1377
1378 #: ../../../src/MenuPowers.cpp:995
1379 msgid "Automatic revive on death"
1380 msgstr "死亡自动复活"
1381
1382 #: ../../../src/MenuPowers.cpp:998
1383 msgid "Convert"
1384 msgstr "转换"
1385
1386 #: ../../../src/MenuPowers.cpp:1001
1387 msgid "Fear"
1388 msgstr "恐惧"
1389
1390 #: ../../../src/MenuPowers.cpp:1004
1391 msgid "Lifespan"
1392 msgstr "有效期"
1393
1394 #: ../../../src/MenuPowers.cpp:1028
1395 msgid "Magical Shield"
1396 msgstr "魔法盾"
1397
1398 #: ../../../src/MenuPowers.cpp:1057
1399 msgid "Healing"
1400 msgstr "治疗"
1401
1402 #: ../../../src/MenuPowers.cpp:1060
1403 msgid "Knockback"
1404 msgstr "击退"
1405
1406 #: ../../../src/MenuPowers.cpp:1084
1407 #, c-format
1408 msgid "%d%% chance"
1409 msgstr "%d%%几率"
1410
1411 #: ../../../src/MenuPowers.cpp:1136
1412 msgid "Base Accuracy"
1413 msgstr "基础精准度"
1414
1415 #: ../../../src/MenuPowers.cpp:1156
1416 msgid "Base Critical Chance"
1417 msgstr "基础致命一击几率"
1418
1419 #: ../../../src/MenuPowers.cpp:1164
1420 msgid "Ignores Absorbtion"
1421 msgstr "无视伤害吸收"
1422
1423 #: ../../../src/MenuPowers.cpp:1169
1424 msgid "Ignores Avoidance"
1425 msgstr "无视闪避"
1426
1427 #: ../../../src/MenuPowers.cpp:1174
1428 #, c-format
1429 msgid "%d%% Chance to crit slowed targets"
1430 msgstr "%d%%几率重击减慢的敌人"
1431
1432 #: ../../../src/MenuPowers.cpp:1179
1433 #, c-format
1434 msgid "Elemental Damage (%s)"
1435 msgstr "元素伤害(%s)"
1436
1437 #: ../../../src/MenuPowers.cpp:1188
1438 #, c-format
1439 msgid "Requires a %s"
1440 msgstr "需要一个%s"
1441
1442 #: ../../../src/MenuPowers.cpp:1226 ../../../src/MenuPowers.cpp:1229
1443 #, c-format
1444 msgid "Requires Power: %s"
1445 msgstr "需要技能点:%s"
1446
1447 #: ../../../src/MenuPowers.cpp:1238
1448 msgid "Click to Unlock (uses 1 Skill Point)"
1449 msgstr "点击以解锁(使用一个技能点)"
1450
1451 #: ../../../src/MenuPowers.cpp:1242 ../../../src/MenuPowers.cpp:1244
1452 msgid "Requires 1 Skill Point"
1453 msgstr "需要一个技能点"
1454
1455 #: ../../../src/MenuPowers.cpp:1444
1456 #, c-format
1457 msgid "Available skill points: %d"
11031458 msgstr ""
11041459
1105 #: ../../../src/MenuPowers.cpp:787
1106 msgid "Passive"
1107 msgstr ""
1108
1109 #: ../../../src/MenuPowers.cpp:792
1110 #, c-format
1111 msgid "Costs %d MP"
1112 msgstr "消耗 %d MP"
1113
1114 #: ../../../src/MenuPowers.cpp:796
1115 #, c-format
1116 msgid "Costs %d HP"
1117 msgstr "消耗 %d HP"
1118
1119 #: ../../../src/MenuPowers.cpp:801
1120 msgid "Cooldown:"
1121 msgstr ""
1122
1123 #: ../../../src/MenuPowers.cpp:866 ../../../src/MenuPowers.cpp:869
1124 msgid "Damage per second"
1125 msgstr ""
1126
1127 #: ../../../src/MenuPowers.cpp:872 ../../../src/MenuPowers.cpp:875
1128 msgid "HP per second"
1129 msgstr ""
1130
1131 #: ../../../src/MenuPowers.cpp:878 ../../../src/MenuPowers.cpp:881
1132 msgid "MP per second"
1133 msgstr ""
1134
1135 #: ../../../src/MenuPowers.cpp:885
1136 msgid "Immobilize"
1137 msgstr ""
1138
1139 #: ../../../src/MenuPowers.cpp:893
1140 msgid "Immunity"
1141 msgstr ""
1142
1143 #: ../../../src/MenuPowers.cpp:896
1144 msgid "Immunity to damage over time"
1145 msgstr ""
1146
1147 #: ../../../src/MenuPowers.cpp:899
1148 msgid "Immunity to slow"
1149 msgstr ""
1150
1151 #: ../../../src/MenuPowers.cpp:902
1152 msgid "Immunity to stun"
1153 msgstr ""
1154
1155 #: ../../../src/MenuPowers.cpp:905
1156 msgid "Immunity to HP steal"
1157 msgstr ""
1158
1159 #: ../../../src/MenuPowers.cpp:908
1160 msgid "Immunity to MP steal"
1161 msgstr ""
1162
1163 #: ../../../src/MenuPowers.cpp:911
1164 msgid "Immunity to knockback"
1165 msgstr ""
1166
1167 #: ../../../src/MenuPowers.cpp:914
1168 msgid "Immunity to damage reflection"
1169 msgstr ""
1170
1171 #: ../../../src/MenuPowers.cpp:917
1172 msgid "Stun"
1173 msgstr ""
1174
1175 #: ../../../src/MenuPowers.cpp:920
1176 msgid "Automatic revive on death"
1177 msgstr ""
1178
1179 #: ../../../src/MenuPowers.cpp:923
1180 msgid "Convert"
1181 msgstr ""
1182
1183 #: ../../../src/MenuPowers.cpp:926
1184 msgid "Fear"
1185 msgstr ""
1186
1187 #: ../../../src/MenuPowers.cpp:929
1188 msgid "Lifespan"
1189 msgstr ""
1190
1191 #: ../../../src/MenuPowers.cpp:953
1192 msgid "Magical Shield"
1193 msgstr ""
1194
1195 #: ../../../src/MenuPowers.cpp:982
1196 msgid "Healing"
1197 msgstr ""
1198
1199 #: ../../../src/MenuPowers.cpp:985
1200 msgid "Knockback"
1201 msgstr ""
1202
1203 #: ../../../src/MenuPowers.cpp:1010
1204 #, c-format
1205 msgid "%d%% chance"
1206 msgstr ""
1207
1208 #: ../../../src/MenuPowers.cpp:1062
1209 msgid "Base Accuracy"
1210 msgstr ""
1211
1212 #: ../../../src/MenuPowers.cpp:1082
1213 msgid "Base Critical Chance"
1214 msgstr ""
1215
1216 #: ../../../src/MenuPowers.cpp:1090
1217 msgid "Ignores Absorbtion"
1218 msgstr ""
1219
1220 #: ../../../src/MenuPowers.cpp:1095
1221 msgid "Ignores Avoidance"
1222 msgstr ""
1223
1224 #: ../../../src/MenuPowers.cpp:1100
1225 #, c-format
1226 msgid "%d%% Chance to crit slowed targets"
1227 msgstr ""
1228
1229 #: ../../../src/MenuPowers.cpp:1105
1230 #, c-format
1231 msgid "Elemental Damage (%s)"
1232 msgstr ""
1233
1234 #: ../../../src/MenuPowers.cpp:1114
1235 #, c-format
1236 msgid "Requires a %s"
1237 msgstr ""
1238
1239 #: ../../../src/MenuPowers.cpp:1151 ../../../src/MenuPowers.cpp:1154
1240 #, c-format
1241 msgid "Requires Power: %s"
1242 msgstr "需要技能点: %s"
1243
1244 #: ../../../src/MenuPowers.cpp:1163
1245 msgid "Click to Unlock (uses 1 Skill Point)"
1246 msgstr ""
1247
1248 #: ../../../src/MenuPowers.cpp:1167 ../../../src/MenuPowers.cpp:1169
1249 msgid "Requires 1 Skill Point"
1250 msgstr ""
1251
1252 #: ../../../src/MenuPowers.cpp:1355
1253 #, c-format
1254 msgid "%d unspent skill point"
1255 msgstr ""
1256
1257 #: ../../../src/MenuPowers.cpp:1358
1258 #, c-format
1259 msgid "%d unspent skill points"
1260 msgstr ""
1261
1262 #: ../../../src/MenuPowers.cpp:1388
1460 #: ../../../src/MenuPowers.cpp:1476
12631461 msgid "Next Level:"
1264 msgstr ""
1265
1266 #: ../../../src/MenuStash.cpp:96
1267 msgid "Shared Stash"
1462 msgstr "下一级:"
1463
1464 #: ../../../src/MenuStash.cpp:80 ../../../src/MenuStash.cpp:161
1465 msgid "Stash"
12681466 msgstr "储物柜"
12691467
1270 #: ../../../src/MenuStash.cpp:209
1271 msgid "Can not store quest items in the stash."
1272 msgstr ""
1273
1274 #: ../../../src/MenuStash.cpp:219
1468 #: ../../../src/MenuStash.cpp:174 ../../../src/MenuStash.cpp:188
1469 msgid "Private"
1470 msgstr "隐私"
1471
1472 #: ../../../src/MenuStash.cpp:175
1473 msgid "Shared"
1474 msgstr "公用"
1475
1476 #: ../../../src/MenuStash.cpp:340
1477 msgid "This item can not be stored in the stash."
1478 msgstr "此物品无法存放在储物柜中。"
1479
1480 #: ../../../src/MenuStash.cpp:345
1481 msgid "This item can not be stored in the private stash."
1482 msgstr "此物品无法存放在私人储物柜中。"
1483
1484 #: ../../../src/MenuStash.cpp:350
1485 msgid "This item can not be stored in the shared stash."
1486 msgstr "此物品无法存放在公用储物柜中。"
1487
1488 #: ../../../src/MenuStash.cpp:360
12751489 msgid "Stash is full."
1276 msgstr ""
1277
1278 #: ../../../src/MenuTalker.cpp:454
1490 msgstr "储物柜已满。"
1491
1492 #: ../../../src/MenuStash.cpp:414
1493 #, c-format
1494 msgid "Can not store item in stash: %s"
1495 msgstr "无法在储物柜中存放物品 %s"
1496
1497 #: ../../../src/MenuTalker.cpp:448
1498 #, c-format
1499 msgid "<dialog node %d>"
1500 msgstr "<dialog node %d>"
1501
1502 #: ../../../src/MenuTalker.cpp:456
12791503 msgid "Trade"
12801504 msgstr "交易"
12811505
1282 #: ../../../src/MenuVendor.cpp:58
1506 #: ../../../src/MenuVendor.cpp:60
12831507 msgid "Buyback"
12841508 msgstr "购回"
12851509
1286 #: ../../../src/MenuVendor.cpp:279
1510 #: ../../../src/MenuVendor.cpp:283
12871511 msgid "Vendor"
12881512 msgstr "商人"
12891513
1290 #: ../../../src/PowerManager.cpp:1136
1514 #: ../../../src/PowerManager.cpp:1208
12911515 #, c-format
12921516 msgid "+%d Shield"
1293 msgstr "+%d Shield"
1294
1295 #: ../../../src/PowerManager.cpp:1392
1517 msgstr "+%d护盾"
1518
1519 #: ../../../src/PowerManager.cpp:1465
12961520 msgid "You are already transformed, untransform first."
1297 msgstr "You are already transformed, untransform first."
1298
1299 #: ../../../src/PowerManager.cpp:1404
1521 msgstr "你已经被传送了,得先反传送。"
1522
1523 #: ../../../src/PowerManager.cpp:1477
13001524 msgid "Could not untransform at this position."
1301 msgstr ""
1525 msgstr "不能反传送回这个位置。"
13021526
13031527 #: ../../../src/QuestLog.cpp:234
13041528 msgid "Completed Quests"
1305 msgstr ""
1306
1307 #: ../../../src/SaveLoad.cpp:243 ../../../src/SaveLoad.cpp:244
1529 msgstr "完成的任务"
1530
1531 #: ../../../src/SaveLoad.cpp:250 ../../../src/SaveLoad.cpp:251
13081532 msgid "Game saved."
1309 msgstr ""
1310
1311 #: ../../../src/SDLInputState.cpp:582
1533 msgstr "游戏已保存。"
1534
1535 #: ../../../src/SDLInputState.cpp:643
1536 msgid "BkSp"
1537 msgstr "回格键"
1538
1539 #: ../../../src/SDLInputState.cpp:644
1540 msgid "Caps"
1541 msgstr "大写锁定"
1542
1543 #: ../../../src/SDLInputState.cpp:645
1544 msgid "Del"
1545 msgstr "删除键"
1546
1547 #: ../../../src/SDLInputState.cpp:647 ../../../src/SDLInputState.cpp:677
1548 msgid "End"
1549 msgstr "End"
1550
1551 #: ../../../src/SDLInputState.cpp:648
1552 msgid "Esc"
1553 msgstr "退出键"
1554
1555 #: ../../../src/SDLInputState.cpp:649 ../../../src/SDLInputState.cpp:679
1556 msgid "Home"
1557 msgstr "Home"
1558
1559 #: ../../../src/SDLInputState.cpp:650
1560 msgid "Ins"
1561 msgstr "Ins"
1562
1563 #: ../../../src/SDLInputState.cpp:651
1564 msgid "LAlt"
1565 msgstr "左Alt"
1566
1567 #: ../../../src/SDLInputState.cpp:652
1568 msgid "LCtrl"
1569 msgstr "左Ctrl"
1570
1571 #: ../../../src/SDLInputState.cpp:654
1572 msgid "LShft"
1573 msgstr "左Shift"
1574
1575 #: ../../../src/SDLInputState.cpp:655
1576 msgid "Num"
1577 msgstr "Num"
1578
1579 #: ../../../src/SDLInputState.cpp:656
1580 msgid "PgDn"
1581 msgstr "PgDn"
1582
1583 #: ../../../src/SDLInputState.cpp:657
1584 msgid "PgUp"
1585 msgstr "PgUp"
1586
1587 #: ../../../src/SDLInputState.cpp:658 ../../../src/SDLInputState.cpp:688
1588 msgid "Pause"
1589 msgstr "Pause"
1590
1591 #: ../../../src/SDLInputState.cpp:659
1592 msgid "Print"
1593 msgstr "Print"
1594
1595 #: ../../../src/SDLInputState.cpp:660
1596 msgid "RAlt"
1597 msgstr "右Alt"
1598
1599 #: ../../../src/SDLInputState.cpp:661
1600 msgid "RCtrl"
1601 msgstr "右Ctrl"
1602
1603 #: ../../../src/SDLInputState.cpp:662
1604 msgid "Ret"
1605 msgstr "Ret"
1606
1607 #: ../../../src/SDLInputState.cpp:664
1608 msgid "RShft"
1609 msgstr "右Shift"
1610
1611 #: ../../../src/SDLInputState.cpp:665
1612 msgid "SLock"
1613 msgstr "SLock"
1614
1615 #: ../../../src/SDLInputState.cpp:666
1616 msgid "Spc"
1617 msgstr "Spc"
1618
1619 #: ../../../src/SDLInputState.cpp:667 ../../../src/SDLInputState.cpp:697
1620 msgid "Tab"
1621 msgstr "Tab"
1622
1623 #: ../../../src/SDLInputState.cpp:673
13121624 msgid "Backspace"
1313 msgstr ""
1314
1315 #: ../../../src/SDLInputState.cpp:583
1625 msgstr "Backspace"
1626
1627 #: ../../../src/SDLInputState.cpp:674
13161628 msgid "CapsLock"
1317 msgstr ""
1318
1319 #: ../../../src/SDLInputState.cpp:586
1320 msgid "End"
1321 msgstr ""
1322
1323 #: ../../../src/SDLInputState.cpp:587
1629 msgstr "CapsLock"
1630
1631 #: ../../../src/SDLInputState.cpp:678
13241632 msgid "Escape"
1325 msgstr ""
1326
1327 #: ../../../src/SDLInputState.cpp:588
1328 msgid "Home"
1329 msgstr ""
1330
1331 #: ../../../src/SDLInputState.cpp:589
1633 msgstr "Escape"
1634
1635 #: ../../../src/SDLInputState.cpp:680
13321636 msgid "Insert"
1333 msgstr ""
1334
1335 #: ../../../src/SDLInputState.cpp:590
1637 msgstr "Insert"
1638
1639 #: ../../../src/SDLInputState.cpp:681
13361640 msgid "Left Alt"
1337 msgstr ""
1338
1339 #: ../../../src/SDLInputState.cpp:591
1641 msgstr "左Alt"
1642
1643 #: ../../../src/SDLInputState.cpp:682
13401644 msgid "Left Ctrl"
1341 msgstr ""
1342
1343 #: ../../../src/SDLInputState.cpp:593
1645 msgstr "左Ctrl"
1646
1647 #: ../../../src/SDLInputState.cpp:684
13441648 msgid "Left Shift"
1345 msgstr ""
1346
1347 #: ../../../src/SDLInputState.cpp:594
1649 msgstr "左Shift"
1650
1651 #: ../../../src/SDLInputState.cpp:685
13481652 msgid "NumLock"
1349 msgstr ""
1350
1351 #: ../../../src/SDLInputState.cpp:595
1653 msgstr "NumLock"
1654
1655 #: ../../../src/SDLInputState.cpp:686
13521656 msgid "PageDown"
1353 msgstr ""
1354
1355 #: ../../../src/SDLInputState.cpp:596
1657 msgstr "PageDown"
1658
1659 #: ../../../src/SDLInputState.cpp:687
13561660 msgid "PageUp"
1357 msgstr ""
1358
1359 #: ../../../src/SDLInputState.cpp:597
1360 msgid "Pause"
1361 msgstr ""
1362
1363 #: ../../../src/SDLInputState.cpp:598
1661 msgstr "PageUp"
1662
1663 #: ../../../src/SDLInputState.cpp:689
13641664 msgid "PrintScreen"
1365 msgstr ""
1366
1367 #: ../../../src/SDLInputState.cpp:599
1665 msgstr "PrintScreen"
1666
1667 #: ../../../src/SDLInputState.cpp:690
13681668 msgid "Right Alt"
1369 msgstr ""
1370
1371 #: ../../../src/SDLInputState.cpp:600
1669 msgstr "右Alt"
1670
1671 #: ../../../src/SDLInputState.cpp:691
13721672 msgid "Right Ctrl"
1373 msgstr ""
1374
1375 #: ../../../src/SDLInputState.cpp:601
1673 msgstr "右Ctrl"
1674
1675 #: ../../../src/SDLInputState.cpp:692
13761676 msgid "Return"
1377 msgstr ""
1378
1379 #: ../../../src/SDLInputState.cpp:603
1677 msgstr "Return"
1678
1679 #: ../../../src/SDLInputState.cpp:694
13801680 msgid "Right Shift"
1381 msgstr ""
1382
1383 #: ../../../src/SDLInputState.cpp:604
1681 msgstr "右Shift"
1682
1683 #: ../../../src/SDLInputState.cpp:695
13841684 msgid "ScrollLock"
1385 msgstr ""
1386
1387 #: ../../../src/SDLInputState.cpp:605
1685 msgstr "ScrollLock"
1686
1687 #: ../../../src/SDLInputState.cpp:696
13881688 msgid "Space"
1389 msgstr ""
1390
1391 #: ../../../src/SDLInputState.cpp:606
1392 msgid "Tab"
1393 msgstr ""
1394
1395 #: ../../../src/SDLInputState.cpp:620
1689 msgstr "Space"
1690
1691 #: ../../../src/SDLInputState.cpp:710
1692 #, c-format
1693 msgid "M%d"
1694 msgstr "M%d"
1695
1696 #: ../../../src/SDLInputState.cpp:716
13961697 #, c-format
13971698 msgid "Mouse %d"
1398 msgstr ""
1399
1400 #: ../../../src/SDLInputState.cpp:628
1699 msgstr "鼠标 %d"
1700
1701 #: ../../../src/SDLInputState.cpp:726
1702 #, c-format
1703 msgid "JX%d-"
1704 msgstr "JX%d-"
1705
1706 #: ../../../src/SDLInputState.cpp:728
14011707 #, c-format
14021708 msgid "Axis %d -"
1403 msgstr ""
1404
1405 #: ../../../src/SDLInputState.cpp:630
1709 msgstr "摇杆轴 %d-"
1710
1711 #: ../../../src/SDLInputState.cpp:732
1712 #, c-format
1713 msgid "JX%d+"
1714 msgstr "JX%d+"
1715
1716 #: ../../../src/SDLInputState.cpp:734
14061717 #, c-format
14071718 msgid "Axis %d +"
1408 msgstr ""
1409
1410 #: ../../../src/SDLInputState.cpp:633
1719 msgstr "摇杆轴 %d+"
1720
1721 #: ../../../src/SDLInputState.cpp:739
1722 #, c-format
1723 msgid "JB%d"
1724 msgstr "JB%d"
1725
1726 #: ../../../src/SDLInputState.cpp:741
14111727 #, c-format
14121728 msgid "Button %d"
1413 msgstr ""
1414
1415 #: ../../../src/SDLInputState.cpp:637
1416 msgid "(none)"
1417 msgstr ""
1418
1419 #: ../../../src/SDLInputState.cpp:677
1729 msgstr "按钮 %d"
1730
1731 #: ../../../src/SDLInputState.cpp:787
14201732 msgid "Touch control D-Pad"
1421 msgstr ""
1422
1423 #: ../../../src/SDLInputState.cpp:701
1733 msgstr "触摸控制D-Pad"
1734
1735 #: ../../../src/SDLInputState.cpp:810
14241736 msgid "Touch control buttons"
1425 msgstr ""
1426
1427 #: ../../../src/SDLInputState.cpp:716
1737 msgstr "触摸控制按钮"
1738
1739 #: ../../../src/SDLInputState.cpp:824
14281740 msgid "Tap"
1429 msgstr ""
1430
1431 #: ../../../src/SDLInputState.cpp:760 ../../../src/SDLInputState.cpp:764
1432 #: ../../../src/SDLInputState.cpp:768
1741 msgstr "点按"
1742
1743 #: ../../../src/SDLInputState.cpp:876 ../../../src/SDLInputState.cpp:878
1744 #, c-format
1745 msgid "Can not bind: %s"
1746 msgstr "无法绑定 %s"
1747
1748 #: ../../../src/SDLInputState.cpp:890 ../../../src/SDLInputState.cpp:894
1749 #: ../../../src/SDLInputState.cpp:898
14331750 #, c-format
14341751 msgid "'%s' is no longer bound to:"
1435 msgstr ""
1752 msgstr "‘%s’不再绑定到:"
14361753
14371754 #: ../../../src/Stats.cpp:38
14381755 msgid "Max HP"
1439 msgstr ""
1756 msgstr "最大HP"
14401757
14411758 #: ../../../src/Stats.cpp:39
14421759 msgid "Total amount of HP."
1443 msgstr ""
1760 msgstr "HP总量。"
14441761
14451762 #: ../../../src/Stats.cpp:43
14461763 msgid "HP Regen"
1447 msgstr ""
1764 msgstr "HP恢复"
14481765
14491766 #: ../../../src/Stats.cpp:44
14501767 msgid "Ticks of HP regen per minute."
1451 msgstr ""
1768 msgstr "每分钟恢复的HP数。"
14521769
14531770 #: ../../../src/Stats.cpp:48
14541771 msgid "Max MP"
1455 msgstr ""
1772 msgstr "最大MP"
14561773
14571774 #: ../../../src/Stats.cpp:49
14581775 msgid "Total amount of MP."
1459 msgstr ""
1776 msgstr "MP总量。"
14601777
14611778 #: ../../../src/Stats.cpp:53
14621779 msgid "MP Regen"
1463 msgstr ""
1780 msgstr "MP恢复"
14641781
14651782 #: ../../../src/Stats.cpp:54
14661783 msgid "Ticks of MP regen per minute."
1467 msgstr ""
1784 msgstr "每分钟恢复的MP数。"
14681785
14691786 #: ../../../src/Stats.cpp:58
14701787 msgid "Accuracy"
1471 msgstr ""
1788 msgstr "精准度"
14721789
14731790 #: ../../../src/Stats.cpp:59
14741791 msgid ""
14751792 "Accuracy rating. The enemy's Avoidance rating is subtracted from this value "
14761793 "to calculate your likeliness to land a direct hit."
1477 msgstr ""
1794 msgstr "精准度等级。这个值减去敌人的闪避等级计算为你直接击中敌人的可能性。"
14781795
14791796 #: ../../../src/Stats.cpp:63
14801797 msgid "Avoidance"
1481 msgstr ""
1798 msgstr "闪避"
14821799
14831800 #: ../../../src/Stats.cpp:64
14841801 msgid ""
14851802 "Avoidance rating. This value is subtracted from the enemy's Accuracy rating "
14861803 "to calculate their likeliness to land a direct hit."
1487 msgstr ""
1804 msgstr "闪避等级。敌人的精准度等级减去这个值计算为敌人直接击中你的可能性。"
14881805
14891806 #: ../../../src/Stats.cpp:68
14901807 msgid "Absorb Min"
1491 msgstr ""
1808 msgstr "伤害吸收最小值"
14921809
14931810 #: ../../../src/Stats.cpp:69 ../../../src/Stats.cpp:74
14941811 msgid "Reduces the amount of damage taken."
1495 msgstr ""
1812 msgstr "减少受到的伤害数量。"
14961813
14971814 #: ../../../src/Stats.cpp:73
14981815 msgid "Absorb Max"
1499 msgstr ""
1816 msgstr "伤害吸收最大值"
15001817
15011818 #: ../../../src/Stats.cpp:78
15021819 msgid "Critical Hit Chance"
1503 msgstr ""
1820 msgstr "致命一击几率"
15041821
15051822 #: ../../../src/Stats.cpp:79
15061823 msgid "Chance for an attack to do extra damage."
1507 msgstr ""
1824 msgstr "攻击造成额外伤害的几率。"
15081825
15091826 #: ../../../src/Stats.cpp:83
15101827 msgid "Bonus XP"
1511 msgstr ""
1828 msgstr "奖励XP"
15121829
15131830 #: ../../../src/Stats.cpp:84
15141831 msgid "Increases the XP gained per kill."
1515 msgstr ""
1832 msgstr "增加每个击杀得到的XP。"
15161833
15171834 #: ../../../src/Stats.cpp:88
15181835 #, c-format
15191836 msgid "Bonus %s"
1520 msgstr ""
1837 msgstr "奖励%s"
15211838
15221839 #: ../../../src/Stats.cpp:89
15231840 #, c-format
15241841 msgid "Increases the %s found per drop."
1525 msgstr ""
1842 msgstr "每次掉落增加%s。"
15261843
15271844 #: ../../../src/Stats.cpp:93
15281845 msgid "Item Find Chance"
1529 msgstr ""
1846 msgstr "发现物品的几率"
15301847
15311848 #: ../../../src/Stats.cpp:94
15321849 msgid "Increases the chance that an enemy will drop an item."
1533 msgstr ""
1850 msgstr "增加敌人掉落物品的几率。"
15341851
15351852 #: ../../../src/Stats.cpp:98
15361853 msgid "Stealth"
1537 msgstr ""
1854 msgstr "潜行"
15381855
15391856 #: ../../../src/Stats.cpp:99
15401857 msgid "Increases your ability to move undetected."
1541 msgstr ""
1858 msgstr "增加你不被发现地移动的能力。"
15421859
15431860 #: ../../../src/Stats.cpp:103
15441861 msgid "Poise"
1545 msgstr ""
1862 msgstr "平稳"
15461863
15471864 #: ../../../src/Stats.cpp:104
15481865 msgid "Reduces your chance of stumbling when hit."
1549 msgstr ""
1866 msgstr "减少你被击中时跌倒的几率。"
15501867
15511868 #: ../../../src/Stats.cpp:108
15521869 msgid "Missile Reflect Chance"
1553 msgstr ""
1870 msgstr "投射物反弹几率"
15541871
15551872 #: ../../../src/Stats.cpp:109
15561873 msgid "Increases your chance of reflecting missiles back at enemies."
1557 msgstr ""
1874 msgstr "增加你反弹投射物回敌人的几率。"
15581875
15591876 #: ../../../src/Stats.cpp:113
15601877 msgid "Damage Reflection"
1561 msgstr ""
1878 msgstr "伤害反弹"
15621879
15631880 #: ../../../src/Stats.cpp:114
15641881 msgid "Deals a percentage of damage taken back to the attacker."
1565 msgstr ""
1882 msgstr "返回给攻击者一定比例的伤害。"
15661883
15671884 #: ../../../src/Stats.cpp:118
15681885 msgid "HP Steal"
1569 msgstr ""
1886 msgstr "HP偷取"
15701887
15711888 #: ../../../src/Stats.cpp:119
15721889 msgid "Percentage of HP stolen per hit."
1573 msgstr ""
1890 msgstr "每次击中偷取的MP百分比。"
15741891
15751892 #: ../../../src/Stats.cpp:123
15761893 msgid "MP Steal"
1577 msgstr ""
1894 msgstr "MP偷取"
15781895
15791896 #: ../../../src/Stats.cpp:124
15801897 msgid "Percentage of MP stolen per hit."
1581 msgstr ""
1898 msgstr "每次击中偷取的MP百分比。"
15821899
15831900 #: ../../../src/Stats.cpp:128
15841901 msgid "Base HP"
1585 msgstr ""
1902 msgstr "基础MP"
15861903
15871904 #: ../../../src/Stats.cpp:133
15881905 msgid "Base MP"
1589 msgstr ""
1590
1591 #: ../../../src/Utils.cpp:346
1906 msgstr "基础MP"
1907
1908 #: ../../../src/Utils.cpp:365
15921909 msgid "k"
1593 msgstr ""
1594
1595 #: ../../../src/Utils.cpp:580
1910 msgstr "k"
1911
1912 #: ../../../src/Utils.cpp:635
15961913 #, c-format
15971914 msgid "%s second"
1598 msgstr ""
1599
1600 #: ../../../src/Utils.cpp:583
1915 msgstr "%s秒"
1916
1917 #: ../../../src/Utils.cpp:638
16011918 #, c-format
16021919 msgid "%s seconds"
1603 msgstr ""
1920 msgstr "%s秒"
16041921
16051922 #: ../../../src/Version.cpp:139
16061923 msgid "or newer"
1607 msgstr ""
1924 msgstr "或更新的"
16081925
16091926 #: ../../../src/Version.cpp:142
16101927 msgid "or older"
1611 msgstr ""
1928 msgstr "或更旧的"
0 #!/bin/bash
1 # Run this script in the language directory to update the pot and all *.po files
2
3 DO_MERGE=0
4 for i in "$@"; do
5 if [ "$i" == "--do-merge" ]; then
6 DO_MERGE=1
7 fi
8 done
9
10 # For the engine
11 # To generate the appropriate .pot file, you need to run the following command from the languages directory:
12 if [ -e engine.pot ] ; then
13 echo "Generating engine.pot"
14
15 xgettext --keyword=get -o engine.pot ../../../src/*.cpp
16
17 # xgettext doesn't allow defining a charset, but we want UTF-8 across the board
18 sed -i "s/charset=CHARSET/charset=UTF-8/" engine.pot
19
20 if [ $DO_MERGE == 1 ]; then
21 # To update existing .po files, you need to run the following command from the languages directory:
22 # msgmerge -U -N <name_of_.po_file> <name_of_.pot_file>
23
24 for f in $(ls engine.*.po) ; do
25 echo "Processing $f"
26 msgmerge -U -N --backup=none $f engine.pot
27 done
28 fi
29 fi
30
31 if [ -e data.pot ] ; then
32 echo "Generating data.pot"
33
34 # For mods:
35 ./xgettext.py
36
37 if [ $DO_MERGE == 1 ]; then
38 for f in $(ls data.*.po) ; do
39 echo "Processing $f"
40 msgmerge -U -N --backup=none $f data.pot
41 done
42 fi
43 fi
0 #! /usr/bin/python
1 import os
2 import datetime
3 import codecs # proper UTF8 handling with files
4
5 keys = []
6 comments = []
7 now = datetime.datetime.now()
8 header = r'''# Copyright (C) 2011 Clint Bellanger
9 # This file is distributed under the same license as the FLARE package.
10 #
11 # FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
12 msgid ""
13 msgstr ""
14 "Project-Id-Version: PACKAGE VERSION\n"
15 "Report-Msgid-Bugs-To: \n"
16 "POT-Creation-Date: {now}\n"
17 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
18 "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
19 "Language-Team: LANGUAGE <LL@li.org>\n"
20 "Language: \n"
21 "MIME-Version: 1.0\n"
22 "Content-Type: text/plain; charset=UTF-8\n"
23 "Content-Transfer-Encoding: 8bit\n"
24
25 '''
26
27 POT_STRING = u'''\
28 #: {comment}
29 msgid "{msgid}"
30 msgstr ""
31
32 '''
33
34 # this extracts translatable strings from the flare data file
35 def extract(filename):
36 if not os.path.exists(filename):
37 return
38 infile = codecs.open(filename, encoding='UTF-8', mode='r')
39 triggers = [
40 'msg', 'him', 'her', 'you', 'name', 'title', 'tooltip',
41 'power_desc', 'quest_text', 'description',
42 'tab_title', 'currency_name', 'flavor', 'topic', 'option',
43 'caption', 'text', 'name_min', 'name_max'
44 ]
45 plain_text = [
46 'msg', 'him', 'her', 'you', 'name', 'title', 'tooltip',
47 'quest_text', 'description', 'topic', 'flavor', 'caption', 'text'
48 ]
49 # The credits cutscenes mostly contain names of people that we don't want to translate.
50 # However, there are a few strings that we DO want translated, which we define here:
51 allowed_credits_strings = [
52 'Flare Engine Credits', 'Lead Programmers', 'Programmers', 'Default Art',
53 'Translators', 'Distributors', 'Special Thanks', 'For giving constant feedback and testing:',
54 'The community at OpenGameArt', 'For Tiled and the Flare map exporter:',
55 'Flare Game Credits - fantasycore', 'Lead Visual Artists', 'Visual Artists', 'Composers',
56 'Foley Artists', 'Voice Actors', 'Flare Game Credits - empyrean_campaign',
57 'Lead Content Designers', 'Flare Game Credits - alpha_demo', 'Content Designers'
58 ]
59 for i, line in enumerate(infile, start=1):
60 for trigger in triggers:
61 if line.startswith(trigger + '='):
62 line = line.split('=')[1]
63 line = line.strip('\n')
64 values = line.split(',')
65 # TODO checking length of values isn't reliable, check trigger too?
66 if (trigger in plain_text):
67 stat = line.replace("\"", "\\\"");
68 elif len(values) == 1:
69 # {key}={value}
70 stat, = values
71 elif len(values) == 2:
72 # bonus={stat},{value}
73 stat, value = values
74 elif len(values) == 3:
75 # bonus={set_level},{stat},{value}
76 set_level, stat, value = values
77 elif len(values) == 5:
78 # option=base,head,portrait,name
79 stat = values[-1]
80
81 test_key = stat.rstrip()
82 if test_key == "":
83 continue
84 if filename.endswith('cutscenes/credits.txt') and test_key not in allowed_credits_strings:
85 continue
86
87 comment = filename + ':' + str(i)
88 comments.append(comment)
89 keys.append(test_key)
90
91 # this removes duplicates from keys in a clean way (without screwing up the order)
92 def remove_duplicates():
93 global comments
94 global keys
95 tmp = []
96 tmp_c = []
97 for node_c,node in zip(comments,keys):
98 if node not in tmp:
99 tmp_c.append(node_c)
100 tmp.append(node)
101 comments = tmp_c
102 keys = tmp
103
104 # this writes the list of keys to a gettext .po file
105 def save(filename):
106 outfile = codecs.open('data.pot', encoding='UTF-8', mode='w')
107 outfile.write(header.format(now=now.strftime('%Y-%m-%d %H:%M+%z')))
108 remove_duplicates()
109 for line_c,line in zip(comments,keys):
110 outfile.write(POT_STRING.format(comment=line_c, msgid=line))
111
112 # HERE'S THE MAIN EXECUTION
113 extract('../items/items.txt')
114 extract('../items/types.txt')
115 extract('../items/sets.txt')
116 extract('../items/qualities.txt')
117 extract('../menus/powers.txt')
118 extract('../powers/effects.txt')
119 extract('../powers/powers.txt')
120 extract('../engine/elements.txt')
121 extract('../engine/loot.txt')
122 extract('../engine/classes.txt')
123 extract('../engine/hero_options.txt')
124 extract('../engine/titles.txt')
125 extract('../engine/equip_flags.txt')
126 extract('../engine/primary_stats.txt')
127 extract('../engine/damage_types.txt')
128 extract('../soundfx/subtitles.txt')
129
130 for folder in ['enemies', 'maps', 'quests', 'npcs', 'cutscenes', 'books', 'items', 'powers', 'scripts']:
131 target = os.path.join('..', folder)
132 if os.path.isdir(target):
133 for filename in sorted(os.listdir(target)):
134 subfolder = os.path.join(target, filename)
135 if os.path.isdir(subfolder):
136 for root, dirs, files in os.walk(subfolder):
137 for f in files:
138 f = os.path.join(root, f)
139 if os.path.isfile(f):
140 extract(f)
141 elif os.path.isfile(subfolder):
142 extract(subfolder)
143
144 save('data.pot')
88
99 listbox_scrollbar_offset=2
1010
11 [video]
12 renderer=104,16,32,32
13 fullscreen=568,36,584,32
14 hwsurface=568,68,584,64
15 vsync=568,100,584,96
16 texture_filter=568,132,584,128
17 dpi_scaling=568,164,584,160
18 parallax_layers=568,196,584,192
19 change_gamma=568,228,584,224
20 gamma=368,264,384,256
21
22 [audio]
23 music_volume=368,40,384,32
24 sound_volume=368,72,384,64
25
26 [interface]
27 language=104,16,32,32
28 show_fps=568,36,584,32
29 colorblind=568,68,584,64
30 hardware_cursor=568,100,584,96
31 dev_mode=568,132,584,128
32 subtitles=568,164,584,160
33
34 [input]
35 joystick_device=104,16,32,32
36 enable_joystick=568,36,584,32
37 mouse_move=568,68,584,64
38 mouse_aim=568,100,584,96
39 no_mouse=568,132,584,128
40 mouse_move_swap=568,164,584,160
41 mouse_move_attack=568,196,584,192
42 joystick_deadzone=368,232,384,224
43
44 [key_bindings]
45
4611 # scrollpane values are positions x, y and sizes width, height
47 scrollpane=0,4,600,320
48 # scrollpane_contents is the height of the scrollpane's internal area
49 scrollpane_contents=940
50
51 keybinds_bg_color=26,26,26
52 cancel=120,14,138,10
53 accept=120,44,138,40
54 up=120,74,138,70
55 down=120,104,138,100
56 left=120,134,138,130
57 right=120,164,138,160
58 bar1=120,194,138,190
59 bar2=120,224,138,220
60
61 bar3=120,254,138,250
62 bar4=120,284,138,280
63 bar5=120,314,138,310
64 bar6=120,344,138,340
65 bar7=120,374,138,370
66 bar8=120,404,138,400
67 bar9=120,434,138,430
68 bar0=120,464,138,460
69
70 main1=120,494,138,490
71 main2=120,524,138,520
72 character=120,554,138,550
73 inventory=120,584,138,580
74 powers=120,614,138,610
75 log=120,644,138,640
76 ctrl=120,674,138,670
77 shift=120,704,138,700
78 alt=120,734,138,730
79 delete=120,764,138,760
80 actionbar=120,794,138,790
81 actionbar_back=120,824,138,820
82 actionbar_forward=120,854,138,850
83 actionbar_use=120,884,138,880
84 developer_menu=120,914,138,910
85 secondary_offset=145,0
12 # scrollpane=0,4,600,320
13 scrollpane=-6,-6,616,344
14 scrollpane_padding=80,40
15 # scrollpane_bg_color=26,26,26,127
16 scrollpane_separator_color=63,63,63
8617
8718 [mods]
8819 activemods=456,16,384,32
0 # Configuration for the "Select a Movement Type" dialog
1
2 pos=0,0,480,192
3 align=center
4
5 label_title=240,8,center,top
6 label_config_hint=240,28,center,top
7
8 button_keyboard=19,144
9 button_mouse=169,144
10 button_joystick=319,144
11
12 icon_keyboard=58,64
13 icon_mouse=208,64
14 icon_joystick=358,64
00 #!/usr/bin/env bash -e
11
22 FLARE_EXE=$1
3 FLARE_DEPS_SRC="http"
4 FLARE_GAME=""
35
4 if [ -z "$FLARE_EXE" ]; then
6 if [ -z "${FLARE_EXE}" ]; then
57 echo "usage: $0 <path to flare executable>"
68 exit 1
79 fi
810 if [ ! -f ${FLARE_EXE} ]; then
9 echo "no Flare executable found at $FLARE_EXE. Please follow README in order to build Flare engine first"
11 echo "no Flare executable found at ${FLARE_EXE}. Please follow README in order to build Flare engine first"
1012 exit 1
1113 fi
1214 if [ `otool -L ${FLARE_EXE} | egrep libSDL2 | wc -l` -lt 1 ]; then
1315 echo "invalid Flare executable"
1416 exit 1
17 fi
18
19 if [ "$2" != "" ]; then
20 FLARE_DEPS_SRC=$2
21 fi
22 if [ ${FLARE_DEPS_SRC} == "http" ]; then
23 echo "download dependencies from website"
24 elif [ ${FLARE_DEPS_SRC} == "homebrew" ]; then
25 echo "copy dependencies from homebrew"
26 else
27 echo "usage: $0 <path to flare executable> <http|homebrew>"
28 exit 1
29 fi
30
31 if [ "$3" != "" ]; then
32 FLARE_GAME=$3
1533 fi
1634
1735 DST=/tmp/___flare.build
2442 ${FLARE_EXE} \
2543 mods ${DST}
2644
27 #feel free to build dependencies by yourself btw
28 wget 'http://files.ruads.org/flare_osx_dependencies.tar.gz' -P ${DST}
29 tar -zxf ${DST}/flare_osx_dependencies.tar.gz -C ${DST}
30 rm -f ${DST}/flare_osx_dependencies.tar.gz
45 if [ ${FLARE_DEPS_SRC} == "http" ]; then
46 #feel free to build dependencies by yourself btw
47 wget 'http://files.ruads.org/flare_osx_dependencies.tar.gz' -P ${DST}
48 tar -zxf ${DST}/flare_osx_dependencies.tar.gz -C ${DST}
49 rm -f ${DST}/flare_osx_dependencies.tar.gz
50 elif [ ${FLARE_DEPS_SRC} == "homebrew" ]; then
51 LIB=${DST}/lib
52 mkdir ${LIB}
53 # SDL2
54 cp /usr/local/opt/sdl2/COPYING.txt ${LIB}/SDL2-COPYING.txt
55 cp /usr/local/opt/sdl2/README.txt ${LIB}/SDL2-README.txt
56 cp /usr/local/opt/sdl2/lib/libSDL2-2.0.0.dylib ${LIB}
57 cp /usr/local/opt/sdl2_image/lib/libSDL2_image-2.0.0.dylib ${LIB}
58 cp /usr/local/opt/sdl2_mixer/lib/libSDL2_mixer-2.0.0.dylib ${LIB}
59 cp /usr/local/opt/sdl2_ttf/lib/libSDL2_ttf-2.0.0.dylib ${LIB}
60 # VORBIS
61 cp /usr/local/opt/libvorbis/COPYING ${LIB}/VORBIS-COPYING
62 cp /usr/local/opt/libvorbis/lib/libvorbis.0.dylib ${LIB}
63 cp /usr/local/opt/libvorbis/lib/libvorbisenc.2.dylib ${LIB}
64 cp /usr/local/opt/libvorbis/lib/libvorbisfile.3.dylib ${LIB}
65 # OGG
66 cp /usr/local/opt/libogg/COPYING ${LIB}/OGG-COPYING
67 cp /usr/local/opt/libogg/lib/libogg.0.dylib ${LIB}
68 # PNG
69 cp /usr/local/opt/libpng/lib/libpng16.16.dylib ${LIB}
70
71 # Verify all homebrew deps using using otool
72 for DYLIB in ${LIB}/*.dylib; do
73 #echo "dylib: ${DYLIB}"
74 for LINE in $(otool -L ${DYLIB}); do
75 #echo "line: ${LINE}"
76 if [[ $LINE == *"/usr/local/opt/"* ]]; then
77 NEED=$(basename ${LINE})
78 #echo "${DYLIB} need: ${NEED}"
79 FILE="${LIB}/${NEED}"
80 if [ ! -f "${FILE}" ]; then
81 echo "${NEED} not found, copying"
82 cp ${LINE} ${LIB}
83 fi
84 fi
85 done
86 done
87
88 else
89 echo "'${FLARE_DEPS_SRC}' unknown dependency source"
90 exit 1
91 fi
92
93 if [ "${FLARE_GAME}" != "" ]; then
94 FLARE_ENGINE_MOD_LIST=mods/mods.txt
95 FLARE_GAME_MOD=${FLARE_GAME}/mods
96 while IFS= read -r MOD; do
97 MOD_DIR=${FLARE_GAME_MOD}/${MOD}
98 if [ "${MOD}" != "" ] && [ -d "${MOD_DIR}" ]; then
99 cp -r ${MOD_DIR} ${DST}/mods
100 echo "copied ${MOD}"
101 fi
102 done < "${FLARE_ENGINE_MOD_LIST}"
103 cp ${FLARE_GAME}/CREDITS.txt ${DST}
104 cp ${FLARE_GAME}/LICENSE.txt ${DST}
105 fi
31106
32107 echo '#!/bin/sh' >> ${DST}/start.sh
33108 echo 'cd "$(dirname "${BASH_SOURCE[0]}")"' >> ${DST}/start.sh
0 <?xml version="1.0" encoding="UTF-8"?>
1 <!DOCTYPE QtCreatorCodeStyle>
2 <!-- Written by Qt Creator 2.4.1, 2012-10-14T19:16:20. -->
3 <qtcreator>
4 <data>
5 <variable>CodeStyleData</variable>
6 <valuemap type="QVariantMap">
7 <value type="bool" key="AlignAssignments">false</value>
8 <value type="bool" key="AutoSpacesForTabs">false</value>
9 <value type="bool" key="ExtraPaddingForConditionsIfConfusingAlign">true</value>
10 <value type="bool" key="IndentAccessSpecifiers">false</value>
11 <value type="bool" key="IndentBlockBody">true</value>
12 <value type="bool" key="IndentBlockBraces">false</value>
13 <value type="bool" key="IndentBlocksRelativeToSwitchLabels">false</value>
14 <value type="bool" key="IndentClassBraces">false</value>
15 <value type="bool" key="IndentControlFlowRelativeToSwitchLabels">true</value>
16 <value type="bool" key="IndentDeclarationsRelativeToAccessSpecifiers">true</value>
17 <value type="bool" key="IndentEnumBraces">false</value>
18 <value type="bool" key="IndentFunctionBody">true</value>
19 <value type="bool" key="IndentFunctionBraces">false</value>
20 <value type="bool" key="IndentNamespaceBody">false</value>
21 <value type="bool" key="IndentNamespaceBraces">false</value>
22 <value type="int" key="IndentSize">4</value>
23 <value type="bool" key="IndentStatementsRelativeToSwitchLabels">true</value>
24 <value type="bool" key="IndentSwitchLabels">false</value>
25 <value type="int" key="PaddingMode">2</value>
26 <value type="bool" key="SpacesForTabs">false</value>
27 <value type="int" key="TabSize">4</value>
28 </valuemap>
29 </data>
30 <data>
31 <variable>DisplayName</variable>
32 <value type="QString">Flare</value>
33 </data>
34 </qtcreator>
0 #!/bin/sh
1
2 SOURCE=./docs/gen/attribute-reference.md
3 DESTINATION=./Attribute-Reference.md
4
5 cp ${SOURCE} ${DESTINATION}
6 ./extract_xml.sh | xsltproc wiki.xslt - | sed -e '1,3d' >> ${DESTINATION}
7
8 echo "Created ${DESTINATION}"
9 echo "Now move it to the wiki."
3030 #include "Animation.h"
3131 #include "RenderDevice.h"
3232
33 Animation::Animation(const std::string &_name, const std::string &_type, Image *_sprite, uint8_t _blend_mode, uint8_t _alpha_mod, Color _color_mod)
33 Animation::Animation(const std::string &_name, const std::string &_type, AnimationMedia *_sprite, uint8_t _blend_mode, uint8_t _alpha_mod, Color _color_mod)
3434 : name(_name)
3535 , type( _type == "play_once" ? ANIMTYPE_PLAY_ONCE :
3636 _type == "back_forth" ? ANIMTYPE_BACK_FORTH :
6666 for (unsigned short i = 0 ; i < _frames; i++) {
6767 int base_index = max_kinds*i;
6868 for (unsigned short kind = 0 ; kind < max_kinds; kind++) {
69 gfx[base_index + kind].x = _render_size.x * (_position + i);
70 gfx[base_index + kind].y = _render_size.y * kind;
71 gfx[base_index + kind].w = _render_size.x;
72 gfx[base_index + kind].h = _render_size.y;
69 // TODO handle multiple images for uncompressed animation defintions
70 gfx[base_index + kind].first = sprite->getImageFromKey("");
71 gfx[base_index + kind].second.x = _render_size.x * (_position + i);
72 gfx[base_index + kind].second.y = _render_size.y * kind;
73 gfx[base_index + kind].second.w = _render_size.x;
74 gfx[base_index + kind].second.h = _render_size.y;
7375 render_offset[base_index + kind].x = _render_offset.x;
7476 render_offset[base_index + kind].y = _render_offset.y;
7577 }
147149 render_offset.resize(i);
148150 }
149151
150 void Animation::addFrame(unsigned short index, unsigned short kind, const Rect& rect, const Point& _render_offset) {
152 void Animation::addFrame(unsigned short index, unsigned short kind, const Rect& rect, const Point& _render_offset, const std::string& key) {
151153
152154 if (index >= gfx.size()/max_kinds) {
153155 Utils::logError("Animation: Animation(%s) adding rect(%d, %d, %d, %d) to frame index(%u) out of bounds. must be in [0, %d]",
161163 }
162164
163165 unsigned i = max_kinds*index+kind;
164 gfx[i] = rect;
166 gfx[i].first = sprite->getImageFromKey(key);
167 gfx[i].second = rect;
165168 render_offset[i] = _render_offset;
166169 }
167170
233236 Renderable r;
234237 if (!frames.empty()) {
235238 const int index = (max_kinds*frames[cur_frame_index]) + kind;
236 r.src.x = gfx[index].x;
237 r.src.y = gfx[index].y;
238 r.src.w = gfx[index].w;
239 r.src.h = gfx[index].h;
239 r.src.x = gfx[index].second.x;
240 r.src.y = gfx[index].second.y;
241 r.src.w = gfx[index].second.w;
242 r.src.h = gfx[index].second.h;
240243 r.offset.x = render_offset[index].x;
241244 r.offset.y = render_offset[index].y;
242 r.image = sprite;
245 r.image = gfx[index].first;
243246 r.blend_mode = blend_mode;
244247 r.color_mod = color_mod;
245248 r.alpha_mod = alpha_mod;
310313 }
311314
312315 bool Animation::isFirstFrame() {
313 return cur_frame_index == 0;
316 return cur_frame_index == 0 && static_cast<float>(cur_frame_index) == cur_frame_index_f;
314317 }
315318
316319 bool Animation::isLastFrame() {
324327 bool Animation::isActiveFrame() {
325328 if (type == ANIMTYPE_BACK_FORTH) {
326329 if (std::find(active_frames.begin(), active_frames.end(), elapsed_frames) != active_frames.end())
327 return cur_frame_index == getLastFrameIndex(cur_frame);
330 return cur_frame_index == getLastFrameIndex(cur_frame) && static_cast<float>(cur_frame_index) == cur_frame_index_f;
328331 }
329332 else {
330333 if (std::find(active_frames.begin(), active_frames.end(), cur_frame) != active_frames.end()) {
331 if (cur_frame_index == getLastFrameIndex(cur_frame)) {
334 if (cur_frame_index == getLastFrameIndex(cur_frame) && static_cast<float>(cur_frame_index) == cur_frame_index_f) {
332335 if (type == ANIMTYPE_PLAY_ONCE)
333336 active_frame_triggered = true;
334337
3232
3333 #include "CommonIncludes.h"
3434 #include "Utils.h"
35 #include "AnimationMedia.h"
3536
3637 class Animation {
3738 protected:
3940
4041 const std::string name;
4142 const int type;
42 Image *sprite;
43 AnimationMedia *sprite;
4344 uint8_t blend_mode;
4445 uint8_t alpha_mod;
4546 Color color_mod;
6263
6364 // Frame data, all vectors must have the same length:
6465 // These are indexed as 8*cur_frame_index + direction.
65 std::vector<Rect> gfx; // position on the spritesheet to be used.
66 std::vector<std::pair<Image*, Rect> > gfx; // position on the spritesheet to be used.
6667 std::vector<Point> render_offset; // "virtual point on the floor"
6768 std::vector<unsigned short> frames; // a list of frames to play on each tick
6869
8586 };
8687
8788 public:
88 Animation(const std::string &_name, const std::string &_type, Image *_sprite, uint8_t _blend_mode, uint8_t _alpha_mod, Color _color_mod);
89 Animation(const std::string &_name, const std::string &_type, AnimationMedia *_sprite, uint8_t _blend_mode, uint8_t _alpha_mod, Color _color_mod);
8990
9091 // Traditional way to create an animation.
9192 // The frames are stored in a grid like fashion, so the individual frame
100101 void setup(unsigned short _frames, unsigned short _duration, unsigned short _maxkinds = 8);
101102
102103 // kind can be used for direction(enemies, hero) or randomness(powers)
103 void addFrame(unsigned short index, unsigned short kind, const Rect& rect, const Point& _render_offset);
104 void addFrame(unsigned short index, unsigned short kind, const Rect& rect, const Point& _render_offset, const std::string &key);
104105
105106 // advance the animation one frame
106107 void advanceFrame();
0 /*
1 Copyright © 2020 bloodhero
2 Copyright © 2020 Justin Jacobs
3
4 This file is part of FLARE.
5
6 FLARE is free software: you can redistribute it and/or modify it under the terms
7 of the GNU General Public License as published by the Free Software Foundation,
8 either version 3 of the License, or (at your option) any later version.
9
10 FLARE is distributed in the hope that it will be useful, but WITHOUT ANY
11 WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A
12 PARTICULAR PURPOSE. See the GNU General Public License for more details.
13
14 You should have received a copy of the GNU General Public License along with
15 FLARE. If not, see http://www.gnu.org/licenses/
16 */
17
18 #include "AnimationMedia.h"
19 #include "RenderDevice.h"
20 #include "SharedResources.h"
21
22 AnimationMedia::AnimationMedia()
23 : first_key("") {
24 }
25
26 AnimationMedia::~AnimationMedia() {
27 }
28
29 void AnimationMedia::loadImage(std::string path, std::string key) {
30 Image* loaded_img = render_device->loadImage(path, RenderDevice::ERROR_NORMAL);
31 if (!loaded_img)
32 return;
33
34 if (sprites.find(key) == sprites.end()) {
35 sprites[key] = loaded_img;
36 }
37 else {
38 sprites[key]->unref();
39 sprites[key] = loaded_img;
40 }
41
42 if (sprites.size() == 1) {
43 first_key = key;
44 }
45 }
46
47 Image* AnimationMedia::getImageFromKey(std::string key) {
48 std::map<std::string, Image*>::iterator it = sprites.find(key);
49 if (it != sprites.end()) {
50 return it->second;
51 }
52 else if (!sprites.empty()) {
53 return sprites[first_key];
54 }
55
56 return NULL;
57 }
58
59 void AnimationMedia::unref() {
60 std::map<std::string, Image*>::iterator it;
61 for (it = sprites.begin(); it != sprites.end(); it++) {
62 it->second->unref();
63 }
64 sprites.clear();
65 }
66
0 /*
1 Copyright © 2020 bloodhero
2 Copyright © 2020 Justin Jacobs
3
4 This file is part of FLARE.
5
6 FLARE is free software: you can redistribute it and/or modify it under the terms
7 of the GNU General Public License as published by the Free Software Foundation,
8 either version 3 of the License, or (at your option) any later version.
9
10 FLARE is distributed in the hope that it will be useful, but WITHOUT ANY
11 WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A
12 PARTICULAR PURPOSE. See the GNU General Public License for more details.
13
14 You should have received a copy of the GNU General Public License along with
15 FLARE. If not, see http://www.gnu.org/licenses/
16 */
17
18 #ifndef ANIMATION_MEDIA_H
19 #define ANIMATION_MEDIA_H
20
21 #include "CommonIncludes.h"
22
23 class AnimationMedia {
24 private:
25 std::map<std::string, Image*> sprites;
26 std::string first_key;
27
28 public:
29 AnimationMedia();
30 ~AnimationMedia();
31 void loadImage(std::string path, std::string key);
32 Image* getImageFromKey(std::string key);
33 void unref();
34 };
35
36 #endif
5656 : name(animationname)
5757 , loaded(false)
5858 , parent(NULL)
59 , animations()
60 , sprite(NULL) {
61 defaultAnimation = new Animation("default", "play_once", NULL, Renderable::BLEND_NORMAL, 255, Color(255,255,255));
59 , animations() {
60 sprite = new AnimationMedia();
61 defaultAnimation = new Animation("default", "play_once", sprite, Renderable::BLEND_NORMAL, 255, Color(255,255,255));
6262 defaultAnimation->setupUncompressed(Point(), Point(), 0, 1, 0);
6363 }
6464
6868
6969 FileParser parser;
7070 // @CLASS AnimationSet|Description of animations in animations/
71 if (!parser.open(name, FileParser::MOD_FILE, FileParser::ERROR_NORMAL))
71 if (name.empty() || !parser.open(name, FileParser::MOD_FILE, FileParser::ERROR_NORMAL))
7272 return;
7373
7474 std::string _name = "";
110110 }
111111 if (parser.section.empty()) {
112112 if (parser.key == "image") {
113 // @ATTR image|filename|Filename of sprite-sheet image.
114 if (sprite != NULL) {
115 parser.error("AnimationSet: Multiple images specified. Dragons be here!");
116 Utils::logErrorDialog("AnimationSet: Multiple images specified. Dragons be here!");
117 mods->resetModConfig();
118 Utils::Exit(128);
119 }
120
121 sprite = render_device->loadImage(parser.val, RenderDevice::ERROR_NORMAL);
113 // @ATTR image|filename, string : Filename, ID|Filename of sprite-sheet image along with an identifier string. The identifier string may be omitted if there is only a single image.
114 std::string img_filename = Parse::popFirstString(parser.val);
115 std::string img_id = Parse::popFirstString(parser.val);
116 sprite->loadImage(img_filename, img_id);
122117 }
123118 else if (parser.key == "render_size") {
124119 // @ATTR render_size|int, int : Width, Height|Width and height of animation.
191186 }
192187 }
193188 else if (parser.key == "frame") {
194 // @ATTR animation.frame|int, int, int, int, int, int, int, int : Index, Direction, X, Y, Width, Height, X offset, Y offset|A single frame of a compressed animation.
189 // @ATTR animation.frame|int, int, int, int, int, int, int, int, string: Index, Direction, X, Y, Width, Height, X offset, Y offset, Image ID|A single frame of a compressed animation. The image ID may be omitted, in which case the first available image will be used.
195190 if (compressed_loading == false) { // first frame statement in section
196191 newanim = new Animation(_name, type, sprite, blend_mode, alpha_mod, color_mod);
197192 newanim->setup(frames, duration);
201196 animations.push_back(newanim);
202197 compressed_loading = true;
203198 }
204 // frame = index, direction, x, y, w, h, offsetx, offsety
199 // frame = index, direction, x, y, w, h, offsetx, offsety, image
205200 Rect r;
206201 Point offset;
207202 const unsigned short index = static_cast<unsigned short>(Parse::popFirstInt(parser.val));
212207 r.h = Parse::popFirstInt(parser.val);
213208 offset.x = Parse::popFirstInt(parser.val);
214209 offset.y = Parse::popFirstInt(parser.val);
215 newanim->addFrame(index, direction, r, offset);
210 std::string key = parser.val;
211 newanim->addFrame(index, direction, r, offset, key);
216212 }
217213 else {
218214 parser.error("AnimationSet: '%s' is not a valid key.", parser.key.c_str());
249245 for (unsigned i = 0; i < animations.size(); ++i)
250246 delete animations[i];
251247 delete defaultAnimation;
252 }
253
248 delete sprite;
249 }
250
2020 #define ANIMATION_SET_H
2121
2222 #include "CommonIncludes.h"
23 #include "AnimationMedia.h"
2324
2425 class Animation;
2526
4445
4546 std::vector<Animation*> animations;
4647
47 Image *sprite;
48 AnimationMedia *sprite;
4849
4950 explicit AnimationSet(const std::string &animationname);
5051 AnimationSet(const AnimationSet &a); // copy constructor not implemented.
3131 #include "CommonIncludes.h"
3232 #include "CursorManager.h"
3333 #include "EnemyGroupManager.h"
34 #include "Enemy.h"
35 #include "EnemyManager.h"
34 #include "Entity.h"
35 #include "EntityManager.h"
3636 #include "EngineSettings.h"
3737 #include "FileParser.h"
3838 #include "InputState.h"
3939 #include "MapRenderer.h"
4040 #include "MenuActionBar.h"
4141 #include "MenuExit.h"
42 #include "MenuGameOver.h"
4243 #include "MenuManager.h"
4344 #include "MessageEngine.h"
4445 #include "ModManager.h"
6970 , time_played(0)
7071 , questlog_dismissed(false)
7172 , using_main1(false)
72 , using_main2(false) {
73 , using_main2(false)
74 , prev_hp(0)
75 , playing_lowhp(false)
76 , teleport_camera_lock(false) {
7377
7478 init();
7579
122126
123127 // other init
124128 sprites = 0;
125 stats.cur_state = StatBlock::AVATAR_STANCE;
129 stats.cur_state = StatBlock::ENTITY_STANCE;
126130 if (mapr->hero_pos_enabled) {
127131 stats.pos.x = mapr->hero_pos.x;
128132 stats.pos.y = mapr->hero_pos.y;
155159 revertPowers = false;
156160 last_transform = "";
157161
162 power_cooldown_timers.clear();
163 power_cast_timers.clear();
164
158165 // Find untransform power index to use for manual untransfrom ability
159166 untransform_power = 0;
160 for (unsigned id=0; id<powers->powers.size(); id++) {
161 if (powers->powers[id].spawn_type == "untransform" && powers->powers[id].required_items.empty()) {
162 untransform_power = id;
163 break;
164 }
165 }
166
167 power_cooldown_timers.clear();
168 power_cooldown_timers.resize(powers->powers.size());
169 power_cast_timers.clear();
170 power_cast_timers.resize(powers->powers.size());
171
167 std::map<PowerID, Power>::iterator power_it;
168 for (power_it = powers->powers.begin(); power_it != powers->powers.end(); ++power_it) {
169 if (untransform_power == 0 && power_it->second.required_items.empty() && power_it->second.spawn_type == "untransform") {
170 untransform_power = power_it->first;
171 }
172
173 power_cooldown_timers[power_it->first] = Timer();
174 power_cast_timers[power_it->first] = Timer();
175 }
172176 }
173177
174178 void Avatar::handleNewMap() {
175179 cursor_enemy = NULL;
176180 lock_enemy = NULL;
181 playing_lowhp = false;
177182 }
178183
179184 /**
291296
292297
293298 bool Avatar::pressing_move() {
294 if (!allow_movement) {
299 if (!allow_movement || teleport_camera_lock) {
295300 return false;
296301 }
297302 else if (stats.effects.knockback_speed != 0) {
309314 }
310315
311316 void Avatar::set_direction() {
317 if (teleport_camera_lock || !set_dir_timer.isEnd())
318 return;
319
320 int old_dir = stats.direction;
321
312322 // handle direction changes
313323 if (settings->mouse_move) {
314 FPoint target = Utils::screenToMap(inpt->mouse.x, inpt->mouse.y, stats.pos.x, stats.pos.y);
324 FPoint target = Utils::screenToMap(inpt->mouse.x, inpt->mouse.y, mapr->cam.pos.x, mapr->cam.pos.y);
315325 stats.direction = Utils::calcDirection(stats.pos.x, stats.pos.y, target.x, target.y);
316326 }
317327 else {
329339 (inpt->pressing[Input::LEFT] && !inpt->lock[Input::LEFT]) || (inpt->pressing[Input::RIGHT] && !inpt->lock[Input::RIGHT])))
330340 stats.direction = static_cast<unsigned char>((stats.direction == 7) ? 0 : stats.direction + 1);
331341 }
342
343 // give direction changing a 100ms cooldown
344 // this allows the player to quickly change direction on their own without becoming overly "jittery"
345 // the cooldown can be ended by releasing the move button, but the cooldown is so fast that it doesn't matter much (maybe a speed run tactic?)
346 if (stats.direction != old_dir)
347 set_dir_timer.setDuration(settings->max_frames_per_sec / 10);
332348 }
333349
334350 /**
337353 * - move the avatar based on buttons pressed
338354 * - calculate the next frame of animation
339355 * - calculate camera position based on avatar position
340 *
341 * @param action The actionbar power activated and the target. action.power == 0 means no power.
342 * @param restrict_power_use Whether or not to allow power usage on mouse1
343 * @param npc True if the player is talking to an NPC. Can limit ability to move/attack in certain conditions
344356 */
345 void Avatar::logic(std::vector<ActionData> &action_queue, bool restrict_power_use) {
357 void Avatar::logic() {
358 bool restrict_power_use = false;
359 if (settings->mouse_move) {
360 if(inpt->pressing[mm_key] && !inpt->pressing[Input::SHIFT] && !menu->act->isWithinSlots(inpt->mouse) && !menu->act->isWithinMenus(inpt->mouse)) {
361 restrict_power_use = true;
362 }
363 }
364
346365 // clear current space to allow correct movement
347366 mapr->collider.unblock(stats.pos.x, stats.pos.y);
348367
355374
356375 // handle when the player stops blocking
357376 if (stats.effects.triggered_block && !stats.blocking) {
358 stats.cur_state = StatBlock::AVATAR_STANCE;
377 stats.cur_state = StatBlock::ENTITY_STANCE;
359378 stats.effects.triggered_block = false;
360379 stats.effects.clearTriggerEffects(Power::TRIGGER_BLOCK);
361380 stats.refresh_stats = true;
381 stats.block_power = 0;
362382 }
363383
364384 stats.logic();
385
386 // alert on low health
387 if (isDroppedToLowHp()) {
388 // show message if set
389 if (isLowHpMessageEnabled()) {
390 logMsg(msg->get("Your health is low!"), MSG_NORMAL);
391 }
392 // play a sound if set in settings
393 if (isLowHpSoundEnabled() && !playing_lowhp) {
394 // if looping, then do not cleanup
395 snd->play(sound_lowhp, "lowhp", snd->NO_POS, stats.sfx_lowhp_loop, !stats.sfx_lowhp_loop);
396 playing_lowhp = true;
397 }
398 }
399 // if looping, stop sounds when HP recovered above threshold
400 if (isLowHpSoundEnabled() && !isLowHp() && playing_lowhp && stats.sfx_lowhp_loop) {
401 snd->pauseChannel("lowhp");
402 playing_lowhp = false;
403 }
404 else if (isLowHpSoundEnabled() && isLowHp() && !playing_lowhp && stats.sfx_lowhp_loop) {
405 snd->play(sound_lowhp, "lowhp", snd->NO_POS, stats.sfx_lowhp_loop, !stats.sfx_lowhp_loop);
406 playing_lowhp = true;
407 }
408 else if (!isLowHpSoundEnabled() && playing_lowhp) {
409 snd->pauseChannel("lowhp");
410 playing_lowhp = false;
411 }
412
413 // we can not use stats.prev_hp here
414 prev_hp = stats.hp;
365415
366416 // check level up
367417 if (stats.level < eset->xp.getMaxLevel() && stats.xp >= eset->xp.getLevelXP(stats.level + 1)) {
368418 stats.level_up = true;
369 stats.level++;
370 std::stringstream ss;
371 ss << msg->get("Congratulations, you have reached level %d!", stats.level);
372 if (stats.level < stats.max_spendable_stat_points) {
373 ss << " " << msg->get("You may increase one attribute through the Character Menu.");
419 stats.level = eset->xp.getLevelFromXP(stats.xp);
420 logMsg(msg->get("Congratulations, you have reached level %d!", stats.level), MSG_NORMAL);
421 if (pc->stats.stat_points_per_level > 0) {
422 logMsg(msg->get("You may increase one or more attributes through the Character Menu."), MSG_NORMAL);
374423 newLevelNotification = true;
375424 }
376 logMsg(ss.str(), MSG_NORMAL);
425 if (pc->stats.power_points_per_level > 0) {
426 logMsg(msg->get("You may unlock one or more abilities through the Powers Menu."), MSG_NORMAL);
427 }
377428 stats.recalc();
378429 snd->play(sound_levelup, snd->DEFAULT_CHANNEL, snd->NO_POS, !snd->LOOP);
379430
380431 // if the player managed to level up while dead (e.g. via a bleeding creature), restore to life
381 if (stats.cur_state == StatBlock::AVATAR_DEAD) {
382 stats.cur_state = StatBlock::AVATAR_STANCE;
432 if (stats.cur_state == StatBlock::ENTITY_DEAD) {
433 stats.cur_state = StatBlock::ENTITY_STANCE;
383434 }
384435 }
385436
386437 // assist mouse movement
438 mm_key = settings->mouse_move_swap ? Input::MAIN2 : Input::MAIN1;
387439 if (!inpt->pressing[mm_key]) {
388440 drag_walking = false;
389441 }
407459 transform_map = mapr->getFilename();
408460 }
409461
410 int mm_attack_id = (settings->mouse_move_swap ? menu->act->getSlotPower(MenuActionBar::SLOT_MAIN2) : menu->act->getSlotPower(MenuActionBar::SLOT_MAIN1));
462 PowerID mm_attack_id = (settings->mouse_move_swap ? menu->act->getSlotPower(MenuActionBar::SLOT_MAIN2) : menu->act->getSlotPower(MenuActionBar::SLOT_MAIN1));
411463 bool mm_can_use_power = true;
412464
413465 if (settings->mouse_move) {
433485 }
434486 }
435487
488 if (teleport_camera_lock && Utils::calcDist(stats.pos, mapr->cam.pos) < 0.5f) {
489 teleport_camera_lock = false;
490 }
491
492 set_dir_timer.tick();
493 if (!pressing_move()) {
494 set_dir_timer.reset(Timer::END);
495 }
496
436497 if (!stats.effects.stun) {
437498 bool allowed_to_move;
438499 bool allowed_to_use_power = true;
439500
440501 switch(stats.cur_state) {
441 case StatBlock::AVATAR_STANCE:
502 case StatBlock::ENTITY_STANCE:
442503
443504 setAnimation("stance");
444505
467528 drag_walking = true;
468529 }
469530
470 stats.cur_state = StatBlock::AVATAR_RUN;
471 }
472 }
473
474 if (settings->mouse_move && settings->mouse_move_attack && cursor_enemy && mm_can_use_power && powers->checkCombatRange(mm_attack_id, &stats, cursor_enemy->stats.pos)) {
475 stats.cur_state = StatBlock::AVATAR_STANCE;
531 stats.cur_state = StatBlock::ENTITY_MOVE;
532 }
533 }
534
535 if (settings->mouse_move && settings->mouse_move_attack && cursor_enemy && !cursor_enemy->stats.hero_ally && mm_can_use_power && powers->checkCombatRange(mm_attack_id, &stats, cursor_enemy->stats.pos)) {
536 stats.cur_state = StatBlock::ENTITY_STANCE;
476537 lock_enemy = cursor_enemy;
477538 }
478539
479540 break;
480541
481 case StatBlock::AVATAR_RUN:
542 case StatBlock::ENTITY_MOVE:
482543
483544 setAnimation("run");
484545
494555
495556 // handle transition to STANCE
496557 if (!pressing_move()) {
497 stats.cur_state = StatBlock::AVATAR_STANCE;
558 stats.cur_state = StatBlock::ENTITY_STANCE;
498559 break;
499560 }
500561 else if (!move()) { // collide with wall
501 stats.cur_state = StatBlock::AVATAR_STANCE;
562 stats.cur_state = StatBlock::ENTITY_STANCE;
502563 break;
503564 }
504565 else if (settings->mouse_move && inpt->pressing[Input::SHIFT]) {
505566 // when moving with the mouse, pressing Shift should stop movement and begin attacking
506 stats.cur_state = StatBlock::AVATAR_STANCE;
567 stats.cur_state = StatBlock::ENTITY_STANCE;
507568 break;
508569 }
509570
510571 if (activeAnimation->getName() != "run")
511 stats.cur_state = StatBlock::AVATAR_STANCE;
512
513 if (settings->mouse_move && settings->mouse_move_attack && cursor_enemy && mm_can_use_power && powers->checkCombatRange(mm_attack_id, &stats, cursor_enemy->stats.pos)) {
514 stats.cur_state = StatBlock::AVATAR_STANCE;
572 stats.cur_state = StatBlock::ENTITY_STANCE;
573
574 if (settings->mouse_move && settings->mouse_move_attack && cursor_enemy && !cursor_enemy->stats.hero_ally && mm_can_use_power && powers->checkCombatRange(mm_attack_id, &stats, cursor_enemy->stats.pos)) {
575 stats.cur_state = StatBlock::ENTITY_STANCE;
515576 lock_enemy = cursor_enemy;
516577 }
517578
518579 break;
519580
520 case StatBlock::AVATAR_ATTACK:
581 case StatBlock::ENTITY_POWER:
521582
522583 setAnimation(attack_anim);
523584
528589 if (activeAnimation->isFirstFrame()) {
529590 float attack_speed = (stats.effects.getAttackSpeed(attack_anim) * powers->powers[current_power].attack_speed) / 100.0f;
530591 activeAnimation->setSpeed(attack_speed);
592 for (size_t i=0; i<anims.size(); ++i) {
593 if (anims[i])
594 anims[i]->setSpeed(attack_speed);
595 }
531596 playAttackSound(attack_anim);
532597 power_cast_timers[current_power].setDuration(activeAnimation->getDuration());
533598 }
547612
548613 // animation is done, switch back to normal stance
549614 if ((activeAnimation->isLastFrame() && stats.state_timer.isEnd()) || activeAnimation->getName() != attack_anim) {
550 stats.cur_state = StatBlock::AVATAR_STANCE;
615 stats.cur_state = StatBlock::ENTITY_STANCE;
551616 stats.cooldown.reset(Timer::BEGIN);
552617 allowed_to_use_power = false;
553618 stats.prevent_interrupt = false;
562627
563628 break;
564629
565 case StatBlock::AVATAR_BLOCK:
630 case StatBlock::ENTITY_BLOCK:
566631
567632 setAnimation("block");
568633
570635
571636 break;
572637
573 case StatBlock::AVATAR_HIT:
638 case StatBlock::ENTITY_HIT:
574639
575640 setAnimation("hit");
576641
584649 }
585650
586651 if (activeAnimation->getTimesPlayed() >= 1 || activeAnimation->getName() != "hit") {
587 stats.cur_state = StatBlock::AVATAR_STANCE;
652 stats.cur_state = StatBlock::ENTITY_STANCE;
588653 if (settings->mouse_move) {
589654 drag_walking = true;
590655 }
592657
593658 break;
594659
595 case StatBlock::AVATAR_DEAD:
660 case StatBlock::ENTITY_DEAD:
596661 allowed_to_use_power = false;
597662
598663 if (stats.effects.triggered_death) break;
606671
607672 if (!stats.corpse && activeAnimation->isFirstFrame() && activeAnimation->getTimesPlayed() < 1) {
608673 stats.effects.clearEffects();
674 stats.powers_passive.clear();
609675
610676 // reset power cooldowns
611 for (size_t i = 0; i < power_cooldown_timers.size(); i++) {
612 power_cooldown_timers[i].reset(Timer::END);
613 power_cast_timers[i].reset(Timer::END);
677 std::map<size_t, Timer>::iterator pct_it;
678 for (pct_it = power_cooldown_timers.begin(); pct_it != power_cooldown_timers.end(); ++pct_it) {
679 pct_it->second.reset(Timer::END);
680 power_cast_timers[pct_it->first].reset(Timer::END);
614681 }
615682
616683 // close menus in GameStatePlay
617684 close_menus = true;
618685
619686 playSound(Entity::SOUND_DIE);
687
688 logMsg(msg->get("You are defeated."), MSG_NORMAL);
620689
621690 if (stats.permadeath) {
622691 // ignore death penalty on permadeath and instead delete the player's saved game
623692 stats.death_penalty = false;
624693 Utils::removeSaveDir(save_load->getGameSlot());
625694 menu->exit->disableSave();
626
627 logMsg(Utils::substituteVarsInString(msg->get("You are defeated. Game over! ${INPUT_CONTINUE} to exit to Title."), this), MSG_NORMAL);
695 menu->game_over->disableSave();
628696 }
629697 else {
630698 // raise the death penalty flag. This is handled in MenuInventory
631699 stats.death_penalty = true;
632
633 logMsg(Utils::substituteVarsInString(msg->get("You are defeated. ${INPUT_CONTINUE} to continue."), this), MSG_NORMAL);
634700 }
635701
636702 // if the player is attacking, we need to block further input
638704 inpt->lock[Input::MAIN1] = true;
639705 }
640706
641 if (activeAnimation->getTimesPlayed() >= 1 || activeAnimation->getName() != "die") {
707 if (!stats.corpse && (activeAnimation->getTimesPlayed() >= 1 || activeAnimation->getName() != "die")) {
642708 stats.corpse = true;
709 menu->game_over->visible = true;
643710 }
644711
645712 // allow respawn with Accept if not permadeath
646 if ((inpt->pressing[Input::ACCEPT] || (settings->touchscreen && inpt->pressing[Input::MAIN1] && !inpt->lock[Input::MAIN1])) && stats.corpse) {
647 if (inpt->pressing[Input::ACCEPT]) inpt->lock[Input::ACCEPT] = true;
648 if (settings->touchscreen && inpt->pressing[Input::MAIN1]) inpt->lock[Input::MAIN1] = true;
713 if (menu->game_over->visible && menu->game_over->continue_clicked) {
714 menu->game_over->close();
715
649716 mapr->teleportation = true;
650717 mapr->teleport_mapname = mapr->respawn_map;
718
651719 if (stats.permadeath) {
652720 // set these positions so it doesn't flash before jumping to Title
653721 mapr->teleport_destination.x = stats.pos.x;
674742
675743 for (unsigned i=0; i<action_queue.size(); i++) {
676744 ActionData &action = action_queue[i];
677 const Power &power = powers->powers[action.power];
745 PowerID power_id = powers->checkReplaceByEffect(action.power, &stats);
746 const Power &power = powers->powers[power_id];
678747
679748 if (power.type == Power::TYPE_BLOCK)
680749 blocking = true;
681750
682 if (action.power != 0 && (stats.cooldown.isEnd() || action.instant_item)) {
751 if (power_id != 0 && (stats.cooldown.isEnd() || action.instant_item)) {
683752 FPoint target = action.target;
684753
685754 // check requirements
686 if ((stats.cur_state == StatBlock::AVATAR_ATTACK || stats.cur_state == StatBlock::AVATAR_HIT) && !action.instant_item)
755 if ((stats.cur_state == StatBlock::ENTITY_POWER || stats.cur_state == StatBlock::ENTITY_HIT) && !action.instant_item)
687756 continue;
688 if (!stats.canUsePower(action.power, !StatBlock::CAN_USE_PASSIVE))
757 if (!stats.canUsePower(power_id, !StatBlock::CAN_USE_PASSIVE))
689758 continue;
690759 if (power.requires_los && !mapr->collider.lineOfSight(stats.pos.x, stats.pos.y, target.x, target.y))
691760 continue;
692761 if (power.requires_empty_target && !mapr->collider.isEmpty(target.x, target.y))
693762 continue;
694 if (!power_cooldown_timers[action.power].isEnd())
763 if (!power_cooldown_timers[power_id].isEnd())
695764 continue;
696 if (!powers->hasValidTarget(action.power, &stats, target))
765 if (!powers->hasValidTarget(power_id, &stats, target))
697766 continue;
698767
699768 // automatically target the selected enemy with melee attacks
707776 }
708777
709778 if (power.new_state != Power::STATE_INSTANT) {
710 current_power = action.power;
779 current_power = power_id;
711780 act_target = target;
712781 attack_anim = power.attack_anim;
713782 }
726795
727796 switch (power.new_state) {
728797 case Power::STATE_ATTACK: // handle attack powers
729 stats.cur_state = StatBlock::AVATAR_ATTACK;
798 stats.cur_state = StatBlock::ENTITY_POWER;
730799 break;
731800
732801 case Power::STATE_INSTANT: // handle instant powers
733 powers->activate(action.power, &stats, target);
734 power_cooldown_timers[action.power].setDuration(power.cooldown);
802 powers->activate(power_id, &stats, target);
803 power_cooldown_timers[power_id].setDuration(power.cooldown);
735804 break;
736805
737806 default:
738807 if (power.type == Power::TYPE_BLOCK) {
739 stats.cur_state = StatBlock::AVATAR_BLOCK;
740 powers->activate(action.power, &stats, target);
808 stats.cur_state = StatBlock::ENTITY_BLOCK;
809 powers->activate(power_id, &stats, target);
741810 stats.refresh_stats = true;
742811 }
743812 break;
745814
746815 // if the player is attacking, show the attack cursor
747816 attack_cursor = (
748 stats.cur_state == StatBlock::AVATAR_ATTACK &&
817 stats.cur_state == StatBlock::ENTITY_POWER &&
749818 !power.buff && !power.buff_teleport &&
750819 power.type != Power::TYPE_TRANSFORM &&
751820 power.type != Power::TYPE_BLOCK &&
760829
761830 }
762831
763 // calc new cam position from player position
764 // cam is focused at player position
765 float cam_dx = (Utils::calcDist(FPoint(mapr->cam.x, stats.pos.y), stats.pos)) / eset->misc.camera_speed;
766 float cam_dy = (Utils::calcDist(FPoint(stats.pos.x, mapr->cam.y), stats.pos)) / eset->misc.camera_speed;
767
768 if (mapr->cam.x < stats.pos.x) {
769 mapr->cam.x += cam_dx;
770 if (mapr->cam.x > stats.pos.x)
771 mapr->cam.x = stats.pos.x;
772 }
773 else if (mapr->cam.x > stats.pos.x) {
774 mapr->cam.x -= cam_dx;
775 if (mapr->cam.x < stats.pos.x)
776 mapr->cam.x = stats.pos.x;
777 }
778 if (mapr->cam.y < stats.pos.y) {
779 mapr->cam.y += cam_dy;
780 if (mapr->cam.y > stats.pos.y)
781 mapr->cam.y = stats.pos.y;
782 }
783 else if (mapr->cam.y > stats.pos.y) {
784 mapr->cam.y -= cam_dy;
785 if (mapr->cam.y < stats.pos.y)
786 mapr->cam.y = stats.pos.y;
787 }
832 // update camera
833 mapr->cam.setTarget(stats.pos);
788834
789835 // check for map events
790836 mapr->checkEvents(stats.pos);
791837
792838 // decrement all cooldowns
793 for (unsigned i = 0; i < power_cooldown_timers.size(); i++) {
794 power_cooldown_timers[i].tick();
795 power_cast_timers[i].tick();
839 std::map<size_t, Timer>::iterator pct_it;
840 for (pct_it = power_cooldown_timers.begin(); pct_it != power_cooldown_timers.end(); ++pct_it) {
841 pct_it->second.tick();
842 power_cast_timers[pct_it->first].tick();
796843 }
797844
798845 // make the current square solid
801848 if (stats.state_timer.isEnd() && stats.hold_state)
802849 stats.hold_state = false;
803850
804 if (stats.cur_state != StatBlock::AVATAR_ATTACK && stats.charge_speed != 0.0f)
851 if (stats.cur_state != StatBlock::ENTITY_POWER && stats.charge_speed != 0.0f)
805852 stats.charge_speed = 0.0f;
806853 }
807854
808855 void Avatar::transform() {
856 // dead players can't transform
857 if (stats.hp <= 0)
858 return;
859
809860 // calling a transform power locks the actionbar, so we unlock it here
810861 inpt->unlockActionBar();
811862
852903 animationSet = anim->getAnimationSet(charmed_stats->animations);
853904 delete activeAnimation;
854905 activeAnimation = animationSet->getAnimation("");
855 stats.cur_state = StatBlock::AVATAR_STANCE;
906 stats.cur_state = StatBlock::ENTITY_STANCE;
856907
857908 // base stats
858909 for (int i=0; i<Stats::COUNT; ++i) {
916967 animationSet = anim->getAnimationSet("animations/hero.txt");
917968 delete activeAnimation;
918969 activeAnimation = animationSet->getAnimation("");
919 stats.cur_state = StatBlock::AVATAR_STANCE;
970 stats.cur_state = StatBlock::ENTITY_STANCE;
920971
921972 // This is a bit of a hack.
922973 // In order to switch to the stance animation, we can't already be in a stance animation
10141065 log_msg.push(std::pair<std::string, int>(str, type));
10151066 }
10161067
1068 // isLowHp returns true if health is below set threshold
1069 bool Avatar::isLowHp() {
1070 if (stats.hp == 0)
1071 return false;
1072 float hp_one_perc = static_cast<float>(std::max(stats.get(Stats::HP_MAX), 1)) / 100.0f;
1073 return static_cast<float>(stats.hp)/hp_one_perc < static_cast<float>(settings->low_hp_threshold);
1074 }
1075
1076 // isDroppedToLowHp returns true only if player hp just dropped below threshold
1077 bool Avatar::isDroppedToLowHp() {
1078 float hp_one_perc = static_cast<float>(std::max(stats.get(Stats::HP_MAX), 1)) / 100.0f;
1079 return static_cast<float>(stats.hp)/hp_one_perc < static_cast<float>(settings->low_hp_threshold) &&
1080 static_cast<float>(prev_hp)/hp_one_perc >= static_cast<float>(settings->low_hp_threshold);
1081 }
1082
1083 bool Avatar::isLowHpMessageEnabled() {
1084 return settings->low_hp_warning_type == settings->LHP_WARN_TEXT ||
1085 settings->low_hp_warning_type == settings->LHP_WARN_TEXT_CURSOR ||
1086 settings->low_hp_warning_type == settings->LHP_WARN_TEXT_SOUND ||
1087 settings->low_hp_warning_type == settings->LHP_WARN_ALL;
1088 }
1089
1090 bool Avatar::isLowHpSoundEnabled() {
1091 return settings->low_hp_warning_type == settings->LHP_WARN_SOUND ||
1092 settings->low_hp_warning_type == settings->LHP_WARN_TEXT_SOUND ||
1093 settings->low_hp_warning_type == settings->LHP_WARN_CURSOR_SOUND ||
1094 settings->low_hp_warning_type == settings->LHP_WARN_ALL;
1095 }
1096
1097 bool Avatar::isLowHpCursorEnabled() {
1098 return settings->low_hp_warning_type == settings->LHP_WARN_CURSOR ||
1099 settings->low_hp_warning_type == settings->LHP_WARN_TEXT_CURSOR ||
1100 settings->low_hp_warning_type == settings->LHP_WARN_CURSOR_SOUND ||
1101 settings->low_hp_warning_type == settings->LHP_WARN_ALL;
1102 }
1103
10171104 Avatar::~Avatar() {
10181105 if (stats.transformed && charmed_stats && charmed_stats->animations != "") {
10191106 anim->decreaseCount(charmed_stats->animations);
3030 #include "Entity.h"
3131 #include "Utils.h"
3232
33 class Enemy;
3433 class Entity;
3534 class StatBlock;
3635
3736 class ActionData {
3837 public:
39 int power;
38 PowerID power;
4039 unsigned hotkey;
4140 bool instant_item;
4241 FPoint target;
8180
8281 int mm_key; // mouse movement key
8382
83 Timer set_dir_timer;
84
85 bool isDroppedToLowHp();
86
8487 protected:
8588 virtual void resetActiveAnimation();
8689
104107 void loadGraphics(std::vector<Layer_gfx> _img_gfx);
105108 void loadStepFX(const std::string& stepname);
106109
107 void logic(std::vector<ActionData> &action_queue, bool restrict_power_use);
110 void logic();
108111
109112 // transformation handling
110113 bool isTransforming() {
116119
117120 void logMsg(const std::string& str, int type);
118121
122 bool isLowHp();
123 bool isLowHpMessageEnabled();
124 bool isLowHpSoundEnabled();
125 bool isLowHpCursorEnabled();
126
119127 std::vector<std::string> layer_reference_order;
120128 std::vector<std::vector<unsigned> > layer_def;
121129
124132 std::string attack_anim;
125133 bool setPowers;
126134 bool revertPowers;
127 int untransform_power;
135 PowerID untransform_power;
128136 StatBlock *hero_stats;
129137 StatBlock *charmed_stats;
130138 FPoint transform_pos;
131139 std::string transform_map;
132140
133141 // vars
134 int current_power;
142 PowerID current_power;
135143 FPoint act_target;
136144 bool drag_walking;
137145 bool newLevelNotification;
138146 bool respawn;
139147 bool close_menus;
140148 bool allow_movement;
141 std::vector<Timer> power_cooldown_timers;
142 std::vector<Timer> power_cast_timers;
143 Enemy* cursor_enemy; // enemy selected with the mouse cursor
144 Enemy* lock_enemy;
149 std::map<PowerID, Timer> power_cooldown_timers;
150 std::map<PowerID, Timer> power_cast_timers;
151 Entity* cursor_enemy; // enemy selected with the mouse cursor
152 Entity* lock_enemy;
145153 unsigned long time_played;
146154 bool questlog_dismissed;
147155 bool using_main1;
148156 bool using_main2;
157 int prev_hp;
158 bool playing_lowhp;
159 bool teleport_camera_lock;
160
161 std::vector<ActionData> action_queue;
149162 };
150163
151164 #endif
+0
-284
src/BehaviorAlly.cpp less more
0 /*
1 Copyright © 2013 Ryan Dansie
2 Copyright © 2014-2015 Justin Jacobs
3
4 This file is part of FLARE.
5
6 FLARE is free software: you can redistribute it and/or modify it under the terms
7 of the GNU General Public License as published by the Free Software Foundation,
8 either version 3 of the License, or (at your option) any later version.
9
10 FLARE is distributed in the hope that it will be useful, but WITHOUT ANY
11 WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A
12 PARTICULAR PURPOSE. See the GNU General Public License for more details.
13
14 You should have received a copy of the GNU General Public License along with
15 FLARE. If not, see http://www.gnu.org/licenses/
16 */
17
18 #include "Avatar.h"
19 #include "BehaviorAlly.h"
20 #include "Enemy.h"
21 #include "EnemyManager.h"
22 #include "EngineSettings.h"
23 #include "MapRenderer.h"
24 #include "SharedGameResources.h"
25 #include "SharedResources.h"
26 #include "UtilsMath.h"
27
28 const float ALLY_FLEE_DISTANCE = 2;
29 const float ALLY_FOLLOW_DISTANCE_WALK = 5.5;
30 const float ALLY_FOLLOW_DISTANCE_STOP = 5;
31 const float ALLY_TELEPORT_DISTANCE = 40;
32
33 const unsigned short BLOCK_TICKS = 10;
34
35 BehaviorAlly::BehaviorAlly(Enemy *_e) : BehaviorStandard(_e) {
36 }
37
38 BehaviorAlly::~BehaviorAlly() {
39 }
40
41 void BehaviorAlly::findTarget() {
42 // dying enemies can't target anything
43 if (e->stats.cur_state == StatBlock::ENEMY_DEAD || e->stats.cur_state == StatBlock::ENEMY_CRITDEAD) return;
44
45 // stunned minions can't act
46 if (e->stats.effects.stun) return;
47
48 // check distance and line of sight between minion and hero
49 if (pc->stats.alive)
50 hero_dist = Utils::calcDist(e->stats.pos, pc->stats.pos);
51 else
52 hero_dist = 0;
53
54 //if the minion gets too far, transport it to the player pos
55 if(hero_dist > ALLY_TELEPORT_DISTANCE && !e->stats.in_combat) {
56 mapr->collider.unblock(e->stats.pos.x, e->stats.pos.y);
57 e->stats.pos.x = pc->stats.pos.x;
58 e->stats.pos.y = pc->stats.pos.y;
59 mapr->collider.block(e->stats.pos.x, e->stats.pos.y, MapCollision::IS_ALLY);
60 hero_dist = 0;
61 }
62
63 bool enemies_in_combat = false;
64 //enter combat because enemy is targeting the player or a summon
65 for (unsigned int i=0; i < enemym->enemies.size(); i++) {
66 if(enemym->enemies[i]->stats.in_combat && !enemym->enemies[i]->stats.hero_ally && enemym->enemies[i]->stats.hp > 0) {
67 Enemy* enemy = enemym->enemies[i];
68
69 //now work out the distance to the enemy and compare it to the distance to the current targer (we want to target the closest enemy)
70 if(enemies_in_combat) {
71 float enemy_dist = Utils::calcDist(e->stats.pos, enemy->stats.pos);
72 if (enemy_dist < target_dist) {
73 pursue_pos.x = enemy->stats.pos.x;
74 pursue_pos.y = enemy->stats.pos.y;
75 target_dist = enemy_dist;
76 }
77 }
78 else {
79 //minion is not already chasig another enemy so chase this one
80 pursue_pos.x = enemy->stats.pos.x;
81 pursue_pos.y = enemy->stats.pos.y;
82 target_dist = Utils::calcDist(e->stats.pos, enemy->stats.pos);
83 }
84
85 e->stats.in_combat = true;
86 enemies_in_combat = true;
87 }
88 }
89
90
91 //break combat if the player gets too far or all enemies die
92 if(!enemies_in_combat)
93 e->stats.in_combat = false;
94
95 // aggressive creatures are always in combat
96 if (e->stats.combat_style == StatBlock::COMBAT_AGGRESSIVE)
97 e->stats.in_combat = true;
98
99 //the default target is the player
100 if(!e->stats.in_combat) {
101 pursue_pos.x = pc->stats.pos.x;
102 pursue_pos.y = pc->stats.pos.y;
103 target_dist = hero_dist;
104 }
105
106 // check line-of-sight
107 if (target_dist < e->stats.threat_range && pc->stats.alive)
108 los = mapr->collider.lineOfSight(e->stats.pos.x, e->stats.pos.y, pursue_pos.x, pursue_pos.y);
109 else
110 los = false;
111
112 //if the player is blocked, all summons which the player is facing to move away for the specified frames
113 //need to set the flag player_blocked so that other allies know to get out of the way as well
114 //if hero is facing the summon
115 if(eset->misc.enable_ally_collision_ai) {
116 if(!enemym->player_blocked && hero_dist < ALLY_FLEE_DISTANCE
117 && mapr->collider.isFacing(pc->stats.pos.x,pc->stats.pos.y,pc->stats.direction,e->stats.pos.x,e->stats.pos.y)) {
118 enemym->player_blocked = true;
119 enemym->player_blocked_timer.reset(Timer::BEGIN);
120 }
121
122 bool player_closer_than_target = Utils::calcDist(e->stats.pos, pursue_pos) > Utils::calcDist(e->stats.pos, pc->stats.pos);
123
124 if(enemym->player_blocked && (!e->stats.in_combat || player_closer_than_target)
125 && mapr->collider.isFacing(pc->stats.pos.x,pc->stats.pos.y,pc->stats.direction,e->stats.pos.x,e->stats.pos.y)) {
126 fleeing = true;
127 pursue_pos = pc->stats.pos;
128 }
129 }
130
131 if(e->stats.effects.fear) fleeing = true;
132
133 // If we have a successful chance_flee roll, try to move to a safe distance
134 if (
135 e->stats.in_combat &&
136 e->stats.cur_state == StatBlock::ENEMY_STANCE &&
137 !move_to_safe_dist && hero_dist < e->stats.flee_range &&
138 hero_dist >= e->stats.melee_range &&
139 Math::percentChance(e->stats.chance_flee) &&
140 e->stats.flee_cooldown_timer.isEnd()
141 )
142 {
143 move_to_safe_dist = true;
144 }
145
146 if (move_to_safe_dist) fleeing = true;
147
148 if (fleeing) {
149 FPoint target_pos = pursue_pos;
150
151 std::vector<int> flee_dirs;
152
153 int middle_dir = Utils::calcDirection(target_pos.x, target_pos.y, e->stats.pos.x, e->stats.pos.y);
154 for (int i = -2; i <= 2; ++i) {
155 int test_dir = Utils::rotateDirection(middle_dir, i);
156
157 FPoint test_pos = Utils::calcVector(e->stats.pos, test_dir, 1);
158 if (mapr->collider.isValidPosition(test_pos.x, test_pos.y, e->stats.movement_type, MapCollision::COLLIDE_NORMAL)) {
159 if (test_dir == e->stats.direction) {
160 // if we're already moving in a good direction, favor it over other directions
161 flee_dirs.clear();
162 flee_dirs.push_back(test_dir);
163 break;
164 }
165 else {
166 flee_dirs.push_back(test_dir);
167 }
168 }
169 }
170
171 if (flee_dirs.empty()) {
172 // trapped and can't move
173 move_to_safe_dist = false;
174 fleeing = false;
175 }
176 else {
177 int index = Math::randBetween(0, static_cast<int>(flee_dirs.size())-1);
178 pursue_pos = Utils::calcVector(e->stats.pos, flee_dirs[index], 1);
179
180 if (e->stats.flee_timer.isEnd()) {
181 e->stats.flee_timer.reset(Timer::BEGIN);
182 }
183 }
184 }
185 }
186
187 void BehaviorAlly::checkMoveStateStance() {
188
189 // If the enemy is capable of fleeing and is at a safe distance, have it hold its position instead of moving
190 if (hero_dist >= e->stats.flee_range && e->stats.chance_flee > 0) return;
191
192 // try to move to the target if we're either:
193 // 1. too far away and chance_pursue roll succeeds
194 // 2. within range, but lack line-of-sight (required to attack)
195 bool should_move_to_target = (target_dist > e->stats.melee_range && Math::percentChance(e->stats.chance_pursue)) || (target_dist <= e->stats.melee_range && !los) || (hero_dist > ALLY_FOLLOW_DISTANCE_WALK);
196
197 if (should_move_to_target || fleeing) {
198 if(e->stats.in_combat && target_dist > e->stats.melee_range) {
199 if (e->move())
200 e->stats.cur_state = StatBlock::ENEMY_MOVE;
201 }
202
203 if((!e->stats.in_combat && hero_dist > ALLY_FOLLOW_DISTANCE_WALK) || fleeing) {
204 if (e->move()) {
205 e->stats.cur_state = StatBlock::ENEMY_MOVE;
206 }
207 else {
208 collided = true;
209 unsigned char prev_direction = e->stats.direction;
210
211 // hit an obstacle, try the next best angle
212 e->stats.direction = e->faceNextBest(pursue_pos.x, pursue_pos.y);
213 if (e->move()) {
214 e->stats.cur_state = StatBlock::ENEMY_MOVE;
215 }
216 else e->stats.direction = prev_direction;
217 }
218 }
219 }
220 }
221
222 void BehaviorAlly::checkMoveStateMove() {
223 bool can_attack = true;
224
225 if (!e->stats.cooldown.isEnd()) {
226 can_attack = false;
227 }
228 else {
229 can_attack = false;
230 for (size_t i = 0; i < e->stats.powers_ai.size(); ++i) {
231 if (e->stats.powers_ai[i].cooldown.isEnd()) {
232 can_attack = true;
233 break;
234 }
235 }
236 }
237 // in order to prevent infinite fleeing, we re-roll our chance to flee after a certain duration
238 bool stop_fleeing = can_attack && fleeing && e->stats.flee_timer.isEnd() && !Math::percentChance(e->stats.chance_flee);
239
240 if (!stop_fleeing && e->stats.flee_timer.isEnd()) {
241 // if the roll to continue fleeing succeeds, but the flee duration has expired, we don't want to reset the duration to the full amount
242 // instead, we scehdule the next re-roll to happen on the next frame
243 // this will continue until a roll fails, returning to the stance state
244 e->stats.flee_timer.setCurrent(1);
245 }
246
247 //if close enough to hero, stop miving
248 if((hero_dist < ALLY_FOLLOW_DISTANCE_STOP && !e->stats.in_combat && !fleeing)
249 || (target_dist < e->stats.melee_range && e->stats.in_combat && !fleeing)
250 || (move_to_safe_dist && target_dist >= e->stats.threat_range/2)
251 || stop_fleeing)
252 {
253 if (stop_fleeing) {
254 e->stats.flee_cooldown_timer.reset(Timer::BEGIN);
255 }
256 e->stats.cur_state = StatBlock::ENEMY_STANCE;
257 move_to_safe_dist = false;
258 fleeing = false;
259 }
260
261 // try to continue moving
262 else if (!e->move()) {
263 collided = true;
264 unsigned char prev_direction = e->stats.direction;
265 // hit an obstacle. Try the next best angle
266 e->stats.direction = e->faceNextBest(pursue_pos.x, pursue_pos.y);
267 if (!e->move()) {
268 //this prevents an ally trying to move perpendicular to a bridge if the player gets close to it in a certain position and gets blocked
269 if(enemym->player_blocked && !e->stats.in_combat) {
270 e->stats.direction = pc->stats.direction;
271 if (!e->move()) {
272 e->stats.cur_state = StatBlock::ENEMY_STANCE;
273 e->stats.direction = prev_direction;
274 }
275 }
276 else {
277 e->stats.cur_state = StatBlock::ENEMY_STANCE;
278 e->stats.direction = prev_direction;
279 }
280 }
281 }
282 }
283
+0
-35
src/BehaviorAlly.h less more
0 /*
1 Copyright © 2013 Ryan Dansie
2
3 This file is part of FLARE.
4
5 FLARE is free software: you can redistribute it and/or modify it under the terms
6 of the GNU General Public License as published by the Free Software Foundation,
7 either version 3 of the License, or (at your option) any later version.
8
9 FLARE is distributed in the hope that it will be useful, but WITHOUT ANY
10 WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A
11 PARTICULAR PURPOSE. See the GNU General Public License for more details.
12
13 You should have received a copy of the GNU General Public License along with
14 FLARE. If not, see http://www.gnu.org/licenses/
15 */
16
17
18 #ifndef BEHAVIORALLY_H
19 #define BEHAVIORALLY_H
20
21 #include "BehaviorStandard.h"
22
23 class BehaviorAlly : public BehaviorStandard {
24 public:
25 explicit BehaviorAlly(Enemy *_e);
26 virtual ~BehaviorAlly();
27 protected:
28 private:
29 virtual void findTarget();
30 virtual void checkMoveStateStance();
31 virtual void checkMoveStateMove();
32 };
33
34 #endif // BEHAVIORALLY_H
+0
-753
src/BehaviorStandard.cpp less more
0 /*
1 Copyright © 2012 Clint Bellanger
2 Copyright © 2012 Stefan Beller
3 Copyright © 2012-2016 Justin Jacobs
4
5 This file is part of FLARE.
6
7 FLARE is free software: you can redistribute it and/or modify it under the terms
8 of the GNU General Public License as published by the Free Software Foundation,
9 either version 3 of the License, or (at your option) any later version.
10
11 FLARE is distributed in the hope that it will be useful, but WITHOUT ANY
12 WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A
13 PARTICULAR PURPOSE. See the GNU General Public License for more details.
14
15 You should have received a copy of the GNU General Public License along with
16 FLARE. If not, see http://www.gnu.org/licenses/
17 */
18
19 #include "Animation.h"
20 #include "Avatar.h"
21 #include "BehaviorStandard.h"
22 #include "CommonIncludes.h"
23 #include "Enemy.h"
24 #include "EnemyManager.h"
25 #include "EngineSettings.h"
26 #include "MapRenderer.h"
27 #include "PowerManager.h"
28 #include "Settings.h"
29 #include "SharedGameResources.h"
30 #include "SharedResources.h"
31 #include "StatBlock.h"
32 #include "UtilsMath.h"
33
34 BehaviorStandard::BehaviorStandard(Enemy *_e)
35 : EnemyBehavior(_e)
36 , path()
37 , prev_target()
38 , collided(false)
39 , path_found(false)
40 , chance_calc_path(0)
41 , hero_dist(0)
42 , target_dist(0)
43 , pursue_pos(-1, -1)
44 , los(false)
45 , fleeing(false)
46 , move_to_safe_dist(false)
47 , turn_timer()
48 {
49 }
50
51 /**
52 * One frame of logic for this behavior
53 */
54 void BehaviorStandard::logic() {
55
56 // skip all logic if the enemy is dead and no longer animating
57 if (e->stats.corpse) {
58 e->stats.corpse_timer.tick();
59 return;
60 }
61
62 if (!e->stats.hero_ally) {
63 if (Utils::calcDist(e->stats.pos, pc->stats.pos) <= settings->encounter_dist)
64 e->stats.encountered = true;
65
66 if (!e->stats.encountered)
67 return;
68 }
69
70 doUpkeep();
71 findTarget();
72 checkPower();
73 checkMove();
74 updateState();
75
76 fleeing = false;
77 }
78
79 /**
80 * Various upkeep on stats
81 */
82 void BehaviorStandard::doUpkeep() {
83 // activate all passive powers
84 if (e->stats.hp > 0 || e->stats.effects.triggered_death)
85 powers->activatePassives(&e->stats);
86
87 e->stats.logic();
88
89 // bleeding to death
90 if (e->stats.bleed_source_type != -1) {
91 e->doRewards(e->stats.bleed_source_type);
92 e->stats.bleed_source_type = -1;
93 }
94
95 // check for teleport powers
96 if (e->stats.teleportation) {
97
98 mapr->collider.unblock(e->stats.pos.x,e->stats.pos.y);
99
100 e->stats.pos.x = e->stats.teleport_destination.x;
101 e->stats.pos.y = e->stats.teleport_destination.y;
102
103 mapr->collider.block(e->stats.pos.x,e->stats.pos.y, e->stats.hero_ally);
104
105 e->stats.teleportation = false;
106 }
107 }
108
109 /**
110 * Locate the player and set various targeting info
111 */
112 void BehaviorStandard::findTarget() {
113 // dying enemies can't target anything
114 if (e->stats.cur_state == StatBlock::ENEMY_DEAD || e->stats.cur_state == StatBlock::ENEMY_CRITDEAD) return;
115
116 float stealth_threat_range = (e->stats.threat_range * (100 - static_cast<float>(e->stats.hero_stealth))) / 100;
117
118 // stunned enemies can't act
119 if (e->stats.effects.stun) return;
120
121 // check distance and line of sight between enemy and hero
122 if (pc->stats.alive)
123 hero_dist = Utils::calcDist(e->stats.pos, pc->stats.pos);
124 else
125 hero_dist = 0;
126
127
128 // aggressive enemies are always in combat
129 if (!e->stats.in_combat && e->stats.combat_style == StatBlock::COMBAT_AGGRESSIVE) {
130 e->stats.join_combat = true;
131 }
132
133 // check entering combat (because the player got too close)
134 if (e->stats.alive && !e->stats.in_combat && los && hero_dist < stealth_threat_range && e->stats.combat_style != StatBlock::COMBAT_PASSIVE) {
135 e->stats.join_combat = true;
136 }
137
138 // check entering combat (because the player hit the enemy)
139 if (e->stats.join_combat) {
140 e->stats.in_combat = true;
141
142 StatBlock::AIPower* ai_power = e->stats.getAIPower(StatBlock::AI_POWER_BEACON);
143 if (ai_power != NULL) {
144 powers->activate(ai_power->id, &e->stats, e->stats.pos); //emit beacon
145 }
146
147 ai_power = e->stats.getAIPower(StatBlock::AI_POWER_JOIN_COMBAT);
148 if (ai_power != NULL) {
149 e->stats.cur_state = StatBlock::ENEMY_POWER;
150 e->stats.activated_power = ai_power;
151 }
152
153 e->stats.join_combat = false;
154 }
155
156 // check exiting combat (player died or got too far away)
157 if (e->stats.in_combat && hero_dist > (e->stats.threat_range_far) && !e->stats.join_combat && e->stats.combat_style != StatBlock::COMBAT_AGGRESSIVE) {
158 e->stats.in_combat = false;
159 }
160
161 // check exiting combat (player or enemy died)
162 if ((!e->stats.alive || !pc->stats.alive) && e->stats.combat_style != StatBlock::COMBAT_AGGRESSIVE) {
163 e->stats.in_combat = false;
164 }
165
166 // by default, the enemy pursues the hero directly
167 pursue_pos.x = pc->stats.pos.x;
168 pursue_pos.y = pc->stats.pos.y;
169 target_dist = hero_dist;
170
171
172 //if there are player allies closer than the hero, target an ally instead
173 if(e->stats.in_combat) {
174 for (unsigned int i=0; i < enemym->enemies.size(); i++) {
175 if(!enemym->enemies[i]->stats.corpse && enemym->enemies[i]->stats.hero_ally) {
176 //now work out the distance to the minion and compare it to the distance to the current targer (we want to target the closest ally)
177 float ally_dist = Utils::calcDist(e->stats.pos, enemym->enemies[i]->stats.pos);
178 if (ally_dist < target_dist) {
179 pursue_pos.x = enemym->enemies[i]->stats.pos.x;
180 pursue_pos.y = enemym->enemies[i]->stats.pos.y;
181 target_dist = ally_dist;
182 }
183 }
184 }
185 }
186
187 // if we just started wandering, set the first waypoint
188 if (e->stats.wander && e->stats.waypoints.empty()) {
189 FPoint waypoint = getWanderPoint();
190 e->stats.waypoints.push(waypoint);
191 e->stats.waypoint_timer.reset(Timer::BEGIN);
192 }
193
194 // if we're not in combat, pursue the next waypoint
195 if (!(e->stats.in_combat || e->stats.waypoints.empty())) {
196 FPoint waypoint = e->stats.waypoints.front();
197 pursue_pos.x = waypoint.x;
198 pursue_pos.y = waypoint.y;
199 }
200
201 // check line-of-sight
202 if (target_dist < e->stats.threat_range && pc->stats.alive)
203 los = mapr->collider.lineOfSight(e->stats.pos.x, e->stats.pos.y, pc->stats.pos.x, pc->stats.pos.y);
204 else
205 los = false;
206
207 if(e->stats.effects.fear) fleeing = true;
208
209 // If we have a successful chance_flee roll, try to move to a safe distance
210 if (
211 e->stats.in_combat &&
212 e->stats.cur_state == StatBlock::ENEMY_STANCE &&
213 !move_to_safe_dist && hero_dist < e->stats.flee_range &&
214 hero_dist >= e->stats.melee_range &&
215 Math::percentChance(e->stats.chance_flee) &&
216 e->stats.flee_cooldown_timer.isEnd()
217 )
218 {
219 move_to_safe_dist = true;
220 }
221
222 if (move_to_safe_dist) fleeing = true;
223
224 if (fleeing) {
225 FPoint target_pos = pursue_pos;
226
227 std::vector<int> flee_dirs;
228
229 int middle_dir = Utils::calcDirection(target_pos.x, target_pos.y, e->stats.pos.x, e->stats.pos.y);
230 for (int i = -2; i <= 2; ++i) {
231 int test_dir = Utils::rotateDirection(middle_dir, i);
232
233 FPoint test_pos = Utils::calcVector(e->stats.pos, test_dir, 1);
234 if (mapr->collider.isValidPosition(test_pos.x, test_pos.y, e->stats.movement_type, MapCollision::COLLIDE_NORMAL)) {
235 if (test_dir == e->stats.direction) {
236 // if we're already moving in a good direction, favor it over other directions
237 flee_dirs.clear();
238 flee_dirs.push_back(test_dir);
239 break;
240 }
241 else {
242 flee_dirs.push_back(test_dir);
243 }
244 }
245 }
246
247 if (flee_dirs.empty()) {
248 // trapped and can't move
249 move_to_safe_dist = false;
250 fleeing = false;
251 }
252 else {
253 int index = Math::randBetween(0, static_cast<int>(flee_dirs.size())-1);
254 pursue_pos = Utils::calcVector(e->stats.pos, flee_dirs[index], 1);
255
256 if (e->stats.flee_timer.isEnd()) {
257 e->stats.flee_timer.reset(Timer::BEGIN);
258 }
259 }
260 }
261 }
262
263 /**
264 * Begin using a power if idle, based on behavior % chances.
265 * Activate a ready power, if the attack animation has followed through
266 */
267 void BehaviorStandard::checkPower() {
268
269 // stunned enemies can't act
270 if (e->stats.effects.stun || e->stats.effects.fear || fleeing) return;
271
272 // currently all enemy power use happens during combat
273 if (!e->stats.in_combat) return;
274
275 // if the enemy is on global cooldown it cannot act
276 if (!e->stats.cooldown.isEnd()) return;
277
278 // Note there are two stages to activating a power.
279 // First is the enemy choosing to use a power based on behavioral chance
280 // Second is the power actually firing off once the related animation reaches the active frame.
281 // The second stage occurs in updateState()
282
283 // pick a power from the available powers for this creature
284 if (e->stats.cur_state == StatBlock::ENEMY_STANCE || e->stats.cur_state == StatBlock::ENEMY_MOVE) {
285 StatBlock::AIPower* ai_power = NULL;
286
287 // check half dead power use
288 if (e->stats.half_dead_power && e->stats.hp <= e->stats.get(Stats::HP_MAX)/2) {
289 ai_power = e->stats.getAIPower(StatBlock::AI_POWER_HALF_DEAD);
290 }
291 // check ranged power use
292 else if (target_dist > e->stats.melee_range) {
293 ai_power = e->stats.getAIPower(StatBlock::AI_POWER_RANGED);
294 }
295 // check melee power use
296 else {
297 ai_power = e->stats.getAIPower(StatBlock::AI_POWER_MELEE);
298 }
299
300 if (ai_power != NULL) {
301 const Power& pwr = powers->powers[ai_power->id];
302 if (!los && (pwr.requires_los || pwr.requires_los_default)) {
303 ai_power = NULL;
304 }
305 if (ai_power != NULL) {
306 e->stats.cur_state = StatBlock::ENEMY_POWER;
307 e->stats.activated_power = ai_power;
308 }
309 }
310 }
311
312 if (e->stats.cur_state != StatBlock::ENEMY_POWER && e->stats.activated_power) {
313 e->stats.activated_power = NULL;
314 }
315 }
316
317 /**
318 * Check state changes related to movement
319 */
320 void BehaviorStandard::checkMove() {
321
322 // dying enemies can't move
323 if (e->stats.cur_state == StatBlock::ENEMY_DEAD || e->stats.cur_state == StatBlock::ENEMY_CRITDEAD) return;
324
325 // stunned enemies can't act
326 if (e->stats.effects.stun) return;
327
328 // handle not being in combat and (not patrolling waypoints or waiting at waypoint)
329 if (!e->stats.hero_ally && !e->stats.in_combat && (e->stats.waypoints.empty() || !e->stats.waypoint_timer.isEnd())) {
330
331 if (e->stats.cur_state == StatBlock::ENEMY_MOVE) {
332 e->stats.cur_state = StatBlock::ENEMY_STANCE;
333 }
334
335 // currently enemies only move while in combat or patrolling
336 return;
337 }
338
339 float real_speed = e->stats.speed * speedMultiplyer[e->stats.direction] * e->stats.effects.speed / 100;
340
341 unsigned turn_ticks = turn_timer.getCurrent();
342 turn_timer.setDuration(e->stats.turn_delay);
343
344 // If an enemy's turn_delay is too long compared to their speed, they will be unable to follow a path properly.
345 // So here, we get how many frames it takes to traverse a single tile and then compare it to the turn delay time.
346 // We then cap the turn delay the time at the number of frames we calculated for tile traversal.
347 // There may be other solutions to this problem, such as having the enemy pause when they reach a path point,
348 // but I was unable to get anything else working as cleanly/bug-free as this.
349 int max_turn_ticks = static_cast<int>(1.f / real_speed);
350 if (e->stats.turn_delay > max_turn_ticks) {
351 turn_timer.setDuration(max_turn_ticks);
352 }
353 turn_timer.setCurrent(turn_ticks);
354
355 // clear current space to allow correct movement
356 mapr->collider.unblock(e->stats.pos.x, e->stats.pos.y);
357
358 // update direction
359 if (e->stats.facing) {
360 turn_timer.tick();
361 if (turn_timer.isEnd()) {
362
363 // if blocked, face in pathfinder direction instead
364 if (!mapr->collider.lineOfMovement(e->stats.pos.x, e->stats.pos.y, pursue_pos.x, pursue_pos.y, e->stats.movement_type)) {
365
366 // if a path is returned, target first waypoint
367
368 bool recalculate_path = false;
369
370 //if theres no path, it needs to be calculated
371 if(path.empty())
372 recalculate_path = true;
373
374 //if the target moved more than 1 tile away, recalculate
375 if(Utils::calcDist(FPoint(Point(prev_target)), FPoint(Point(pursue_pos))) > 1.f)
376 recalculate_path = true;
377
378 //if a collision ocurred then recalculate
379 if(collided)
380 recalculate_path = true;
381
382 //add a 5% chance to recalculate on every frame. This prevents reclaulating lots of entities in the same frame
383 chance_calc_path += 5;
384
385 if(Math::percentChance(chance_calc_path))
386 recalculate_path = true;
387
388 //dont recalculate if we were blocked and no path was found last time
389 //this makes sure that pathfinding calculation is not spammed when the target is unreachable and the entity is as close as its going to get
390 if(!path_found && collided && !Math::percentChance(chance_calc_path))
391 recalculate_path = false;
392 else//reset the collision flag only if we dont want the cooldown in place
393 collided = false;
394
395 prev_target = pursue_pos;
396
397 // target first waypoint
398 if(recalculate_path) {
399 chance_calc_path = -100;
400 path.clear();
401 path_found = mapr->collider.computePath(e->stats.pos, pursue_pos, path, e->stats.movement_type, MapCollision::DEFAULT_PATH_LIMIT);
402 }
403
404 if(!path.empty()) {
405 pursue_pos = path.back();
406
407 //if distance to node is lower than a tile size, the node is going to be passed and can be removed
408 if(Utils::calcDist(e->stats.pos, pursue_pos) <= 1.f)
409 path.pop_back();
410 }
411 }
412 else {
413 path.clear();
414 }
415
416 if (e->stats.charge_speed == 0.0f) {
417 e->stats.direction = Utils::calcDirection(e->stats.pos.x, e->stats.pos.y, pursue_pos.x, pursue_pos.y);
418 }
419 turn_timer.reset(Timer::BEGIN);
420 }
421 }
422
423 e->stats.flee_timer.tick();
424 e->stats.flee_cooldown_timer.tick();
425
426 // try to start moving
427 if (e->stats.cur_state == StatBlock::ENEMY_STANCE) {
428 checkMoveStateStance();
429 }
430
431 // already moving
432 else if (e->stats.cur_state == StatBlock::ENEMY_MOVE) {
433 checkMoveStateMove();
434 }
435
436 // if patrolling waypoints and has reached a waypoint, cycle to the next one
437 if (!e->stats.waypoints.empty()) {
438 // if the patroller is close to the waypoint
439 FPoint waypoint = e->stats.waypoints.front();
440 float waypoint_dist = Utils::calcDist(waypoint, e->stats.pos);
441
442 FPoint saved_pos = e->stats.pos;
443 e->move();
444 float new_dist = Utils::calcDist(waypoint, e->stats.pos);
445 e->stats.pos = saved_pos;
446
447 if (waypoint_dist <= real_speed || (waypoint_dist <= 0.5f && new_dist > waypoint_dist)) {
448 e->stats.pos = waypoint;
449 turn_timer.reset(Timer::END);
450 e->stats.waypoints.pop();
451 // pick a new random point if we're wandering
452 if (e->stats.wander) {
453 waypoint = getWanderPoint();
454 }
455 e->stats.waypoints.push(waypoint);
456 e->stats.waypoint_timer.reset(Timer::BEGIN);
457 }
458 }
459
460 // re-block current space to allow correct movement
461 mapr->collider.block(e->stats.pos.x, e->stats.pos.y, e->stats.hero_ally);
462
463 }
464
465 void BehaviorStandard::checkMoveStateStance() {
466
467 // If the enemy is capable of fleeing and is at a safe distance, have it hold its position instead of moving
468 if (hero_dist >= e->stats.flee_range && e->stats.chance_flee > 0 && e->stats.waypoints.empty()) return;
469
470 // try to move to the target if we're either:
471 // 1. too far away and chance_pursue roll succeeds
472 // 2. within range, but lack line-of-sight (required to attack)
473 bool should_move_to_target = (target_dist > e->stats.melee_range && Math::percentChance(e->stats.chance_pursue)) || (target_dist <= e->stats.melee_range && !los);
474
475 if (should_move_to_target || fleeing) {
476
477 if (e->move()) {
478 e->stats.cur_state = StatBlock::ENEMY_MOVE;
479 }
480 else {
481 collided = true;
482 unsigned char prev_direction = e->stats.direction;
483
484 // hit an obstacle, try the next best angle
485 e->stats.direction = e->faceNextBest(pursue_pos.x, pursue_pos.y);
486 if (e->move()) {
487 e->stats.cur_state = StatBlock::ENEMY_MOVE;
488 }
489 else
490 e->stats.direction = prev_direction;
491 }
492 }
493 }
494
495 void BehaviorStandard::checkMoveStateMove() {
496 bool can_attack = true;
497
498 if (!e->stats.cooldown.isEnd()) {
499 can_attack = false;
500 }
501 else {
502 can_attack = false;
503 for (size_t i = 0; i < e->stats.powers_ai.size(); ++i) {
504 if (e->stats.powers_ai[i].cooldown.isEnd()) {
505 can_attack = true;
506 break;
507 }
508 }
509 }
510 // in order to prevent infinite fleeing, we re-roll our chance to flee after a certain duration
511 bool stop_fleeing = can_attack && fleeing && e->stats.flee_timer.isEnd() && !Math::percentChance(e->stats.chance_flee);
512
513 if (!stop_fleeing && e->stats.flee_timer.isEnd()) {
514 // if the roll to continue fleeing succeeds, but the flee duration has expired, we don't want to reset the duration to the full amount
515 // instead, we scehdule the next re-roll to happen on the next frame
516 // this will continue until a roll fails, returning to the stance state
517 e->stats.flee_timer.setCurrent(1);
518 }
519
520 // close enough to the hero or is at a safe distance
521 if (pc->stats.alive && ((target_dist < e->stats.melee_range && !fleeing) || (move_to_safe_dist && target_dist >= e->stats.flee_range) || stop_fleeing)) {
522 if (stop_fleeing) {
523 e->stats.flee_cooldown_timer.reset(Timer::BEGIN);
524 }
525 e->stats.cur_state = StatBlock::ENEMY_STANCE;
526 move_to_safe_dist = false;
527 fleeing = false;
528 }
529
530 // try to continue moving
531 else if (!e->move()) {
532 collided = true;
533 unsigned char prev_direction = e->stats.direction;
534 // hit an obstacle. Try the next best angle
535 e->stats.direction = e->faceNextBest(pursue_pos.x, pursue_pos.y);
536 if (!e->move()) {
537 e->stats.cur_state = StatBlock::ENEMY_STANCE;
538 e->stats.direction = prev_direction;
539 }
540 }
541 }
542
543
544 /**
545 * Perform miscellaneous state-based actions.
546 * 1) Set animations and sound effects
547 * 2) Return to the default state (Stance) when actions are complete
548 */
549 void BehaviorStandard::updateState() {
550
551 // stunned enemies can't act
552 if (e->stats.effects.stun) return;
553
554 int power_id;
555 int power_state;
556
557 // continue current animations
558 e->activeAnimation->advanceFrame();
559
560 switch (e->stats.cur_state) {
561
562 case StatBlock::ENEMY_STANCE:
563
564 e->setAnimation("stance");
565 break;
566
567 case StatBlock::ENEMY_MOVE:
568
569 e->setAnimation("run");
570 break;
571
572 case StatBlock::ENEMY_POWER:
573
574 if (e->stats.activated_power == NULL) {
575 e->stats.cur_state = StatBlock::ENEMY_STANCE;
576 break;
577 }
578
579 power_id = e->stats.activated_power->id;
580 power_state = powers->powers[power_id].new_state;
581 e->stats.prevent_interrupt = powers->powers[power_id].prevent_interrupt;
582
583 // animation based on power type
584 if (power_state == Power::STATE_INSTANT)
585 e->instant_power = true;
586 else if (power_state == Power::STATE_ATTACK)
587 e->setAnimation(powers->powers[power_id].attack_anim);
588
589 // sound effect based on power type
590 if (e->activeAnimation->isFirstFrame()) {
591 if (powers->powers[power_id].pre_power > 0 && Math::percentChance(powers->powers[power_id].pre_power_chance)) {
592 powers->activate(powers->powers[power_id].pre_power, &e->stats, pursue_pos);
593 }
594
595 float attack_speed = (e->stats.effects.getAttackSpeed(powers->powers[power_id].attack_anim) * powers->powers[power_id].attack_speed) / 100.0f;
596 e->activeAnimation->setSpeed(attack_speed);
597 e->playAttackSound(powers->powers[power_id].attack_anim);
598
599 if (powers->powers[power_id].state_duration > 0)
600 e->stats.state_timer.setDuration(powers->powers[power_id].state_duration);
601
602 if (powers->powers[power_id].charge_speed != 0.0f)
603 e->stats.charge_speed = powers->powers[power_id].charge_speed;
604 }
605
606 // Activate Power:
607 // if we're at the active frame of a power animation,
608 // activate the power and set the local and global cooldowns
609 if ((e->activeAnimation->isActiveFrame() || e->instant_power) && !e->stats.hold_state) {
610 powers->activate(power_id, &e->stats, pursue_pos);
611
612 // set cooldown for all ai powers with the same power id
613 for (size_t i = 0; i < e->stats.powers_ai.size(); ++i) {
614 if (e->stats.activated_power->id == e->stats.powers_ai[i].id) {
615 e->stats.powers_ai[i].cooldown.setDuration(powers->powers[power_id].cooldown);
616 }
617 }
618
619 if (e->stats.activated_power->type == StatBlock::AI_POWER_HALF_DEAD) {
620 e->stats.half_dead_power = false;
621 }
622
623 if (!e->stats.state_timer.isEnd())
624 e->stats.hold_state = true;
625 }
626
627 // animation is finished
628 if ((e->activeAnimation->isLastFrame() && e->stats.state_timer.isEnd()) ||
629 (power_state == Power::STATE_ATTACK && e->activeAnimation->getName() != powers->powers[power_id].attack_anim) ||
630 e->instant_power)
631 {
632 if (!e->instant_power)
633 e->stats.cooldown.reset(Timer::BEGIN);
634 else
635 e->instant_power = false;
636
637 e->stats.activated_power = NULL;
638 e->stats.cur_state = StatBlock::ENEMY_STANCE;
639 e->stats.prevent_interrupt = false;
640 }
641 break;
642
643 case StatBlock::ENEMY_SPAWN:
644
645 e->setAnimation("spawn");
646 //the second check is needed in case the entity does not have a spawn animation
647 if (e->activeAnimation->isLastFrame() || e->activeAnimation->getName() != "spawn") {
648 e->stats.cur_state = StatBlock::ENEMY_STANCE;
649 }
650 break;
651
652 case StatBlock::ENEMY_BLOCK:
653
654 e->setAnimation("block");
655 break;
656
657 case StatBlock::ENEMY_HIT:
658
659 e->setAnimation("hit");
660 if (e->activeAnimation->isFirstFrame()) {
661 e->stats.effects.triggered_hit = true;
662 }
663 if (e->activeAnimation->isLastFrame() || e->activeAnimation->getName() != "hit")
664 e->stats.cur_state = StatBlock::ENEMY_STANCE;
665 break;
666
667 case StatBlock::ENEMY_DEAD:
668 if (e->stats.effects.triggered_death) break;
669
670 e->setAnimation("die");
671 if (e->activeAnimation->isFirstFrame()) {
672 e->playSound(Entity::SOUND_DIE);
673 e->stats.corpse_timer.setDuration(eset->misc.corpse_timeout);
674 }
675 if (e->activeAnimation->isSecondLastFrame()) {
676 StatBlock::AIPower* ai_power = e->stats.getAIPower(StatBlock::AI_POWER_DEATH);
677 if (ai_power != NULL)
678 powers->activate(ai_power->id, &e->stats, e->stats.pos);
679
680 e->stats.effects.clearEffects();
681 }
682 if (e->activeAnimation->isLastFrame() || e->activeAnimation->getName() != "die") {
683 // puts renderable under object layer
684 e->stats.corpse = true;
685
686 //allow free movement over the corpse
687 mapr->collider.unblock(e->stats.pos.x, e->stats.pos.y);
688
689 // remove corpses that land on blocked tiles, such as water or pits
690 if (!mapr->collider.isValidPosition(e->stats.pos.x, e->stats.pos.y, MapCollision::MOVE_NORMAL, MapCollision::COLLIDE_NORMAL)) {
691 e->stats.corpse_timer.reset(Timer::END);
692 }
693
694 // prevent "jumping" when rendering
695 e->stats.pos.align();
696 }
697
698 break;
699
700 case StatBlock::ENEMY_CRITDEAD:
701
702 e->setAnimation("critdie");
703 if (e->activeAnimation->isFirstFrame()) {
704 e->playSound(Entity::SOUND_CRITDIE);
705 e->stats.corpse_timer.setDuration(eset->misc.corpse_timeout);
706 }
707 if (e->activeAnimation->isSecondLastFrame()) {
708 StatBlock::AIPower* ai_power = e->stats.getAIPower(StatBlock::AI_POWER_DEATH);
709 if (ai_power != NULL)
710 powers->activate(ai_power->id, &e->stats, e->stats.pos);
711
712 e->stats.effects.clearEffects();
713 }
714 if (e->activeAnimation->isLastFrame() || e->activeAnimation->getName() != "critdie") {
715 // puts renderable under object layer
716 e->stats.corpse = true;
717
718 //allow free movement over the corpse
719 mapr->collider.unblock(e->stats.pos.x, e->stats.pos.y);
720
721 // prevent "jumping" when rendering
722 e->stats.pos.align();
723 }
724
725 break;
726
727 default:
728 break;
729 }
730
731 if (e->stats.state_timer.isEnd() && e->stats.hold_state)
732 e->stats.hold_state = false;
733
734 if (e->stats.cur_state != StatBlock::ENEMY_POWER && e->stats.charge_speed != 0.0f)
735 e->stats.charge_speed = 0.0f;
736 }
737
738 FPoint BehaviorStandard::getWanderPoint() {
739 FPoint waypoint;
740 waypoint.x = static_cast<float>(e->stats.wander_area.x) + static_cast<float>(rand() % (e->stats.wander_area.w)) + 0.5f;
741 waypoint.y = static_cast<float>(e->stats.wander_area.y) + static_cast<float>(rand() % (e->stats.wander_area.h)) + 0.5f;
742
743 if (mapr->collider.isValidPosition(waypoint.x, waypoint.y, e->stats.movement_type, mapr->collider.getCollideType(e->stats.hero)) &&
744 mapr->collider.lineOfMovement(e->stats.pos.x, e->stats.pos.y, waypoint.x, waypoint.y, e->stats.movement_type))
745 {
746 return waypoint;
747 }
748 else {
749 // didn't get a valid waypoint, so keep our current position
750 return e->stats.pos;
751 }
752 }
+0
-65
src/BehaviorStandard.h less more
0 /*
1 Copyright © 2012 Clint Bellanger
2 Copyright © 2013-2014 Justin Jacobs
3
4 This file is part of FLARE.
5
6 FLARE is free software: you can redistribute it and/or modify it under the terms
7 of the GNU General Public License as published by the Free Software Foundation,
8 either version 3 of the License, or (at your option) any later version.
9
10 FLARE is distributed in the hope that it will be useful, but WITHOUT ANY
11 WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A
12 PARTICULAR PURPOSE. See the GNU General Public License for more details.
13
14 You should have received a copy of the GNU General Public License along with
15 FLARE. If not, see http://www.gnu.org/licenses/
16 */
17
18 #ifndef BEHAVIOR_STANDARD_H
19 #define BEHAVIOR_STANDARD_H
20
21 #include "EnemyBehavior.h"
22 #include "Utils.h"
23
24 class Enemy;
25 class Point;
26
27 class BehaviorStandard : public EnemyBehavior {
28 private:
29
30 // logic steps
31 void doUpkeep();
32 virtual void findTarget();
33 void checkPower();
34 void checkMove();
35 virtual void checkMoveStateStance();
36 virtual void checkMoveStateMove();
37 void updateState();
38 FPoint getWanderPoint();
39
40 protected:
41 //variables for patfinding
42 std::vector<FPoint> path;
43 FPoint prev_target;
44 bool collided;
45 bool path_found;
46 int chance_calc_path;
47
48 float hero_dist;
49 float target_dist;
50 FPoint pursue_pos;
51 // targeting vars
52 bool los;
53 //when fleeing, the enemy moves away from the pursue_pos
54 bool fleeing;
55 bool move_to_safe_dist;
56 Timer turn_timer;
57
58 public:
59 explicit BehaviorStandard(Enemy *_e);
60 void logic();
61
62 };
63
64 #endif
0 /*
1 Copyright © 2012-2021 Justin Jacobs
2
3 This file is part of FLARE.
4
5 FLARE is free software: you can redistribute it and/or modify it under the terms
6 of the GNU General Public License as published by the Free Software Foundation,
7 either version 3 of the License, or (at your option) any later version.
8
9 FLARE is distributed in the hope that it will be useful, but WITHOUT ANY
10 WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A
11 PARTICULAR PURPOSE. See the GNU General Public License for more details.
12
13 You should have received a copy of the GNU General Public License along with
14 FLARE. If not, see http://www.gnu.org/licenses/
15 */
16
17
18 /**
19 * class Camera
20 *
21 * Controls the viewport that moves around the map, usually focused on the player
22 *
23 */
24
25 #include "Camera.h"
26 #include "CommonIncludes.h"
27 #include "EngineSettings.h"
28 #include "SharedResources.h"
29 #include "Utils.h"
30 #include "UtilsMath.h"
31
32 Camera::Camera()
33 : pos()
34 , shake()
35 , target()
36 , prev_cam_target()
37 , prev_cam_dx(0)
38 , prev_cam_dy(0)
39 , cam_threshold(eset->misc.camera_speed / 50.f)
40 , shake_strength(8)
41 {
42 }
43
44 Camera::~Camera() {
45 }
46
47 void Camera::logic() {
48 // gradulally move camera towards target
49
50 float cam_delta = Utils::calcDist(pos, target);
51 float cam_dx = (Utils::calcDist(FPoint(pos.x, target.y), target)) / eset->misc.camera_speed;
52 float cam_dy = (Utils::calcDist(FPoint(target.x, pos.y), target)) / eset->misc.camera_speed;
53
54 if (prev_cam_target.x == target.x && prev_cam_target.y == target.y) {
55 // target hasn't changed
56
57 if (cam_delta == 0 || cam_delta >= cam_threshold) {
58 // camera is stationary or moving fast enough, so store the deltas
59 prev_cam_dx = cam_dx;
60 prev_cam_dy = cam_dy;
61 }
62 else if (cam_delta < cam_threshold) {
63 if (cam_dx < prev_cam_dx || cam_dy < prev_cam_dy) {
64 // maintain camera speed
65 cam_dx = prev_cam_dx;
66 cam_dy = prev_cam_dy;
67 }
68 else {
69 // camera didn't get a chance to speed up, so set the minimum speed
70 float b = fabsf(pos.x - target.x);
71 float alpha = acosf(b / cam_delta);
72
73 float fast_dx = cam_threshold * cosf(alpha);
74 float fast_dy = cam_threshold * sinf(alpha);
75
76 prev_cam_dx = fast_dx / eset->misc.camera_speed;
77 prev_cam_dy = fast_dy / eset->misc.camera_speed;
78 }
79 }
80 }
81 else {
82 // target changed, reset
83 prev_cam_target = target;
84 prev_cam_dx = 0;
85 prev_cam_dy = 0;
86 }
87
88 // camera movement might overshoot its target, so compensate for that here
89 if (pos.x < target.x) {
90 pos.x += cam_dx;
91 if (pos.x > target.x)
92 pos.x = target.x;
93 }
94 else if (pos.x > target.x) {
95 pos.x -= cam_dx;
96 if (pos.x < target.x)
97 pos.x = target.x;
98 }
99 if (pos.y < target.y) {
100 pos.y += cam_dy;
101 if (pos.y > target.y)
102 pos.y = target.y;
103 }
104 else if (pos.y > target.y) {
105 pos.y -= cam_dy;
106 if (pos.y < target.y)
107 pos.y = target.y;
108 }
109
110 // handle camera shaking timer
111 shake_timer.tick();
112
113 if (shake_timer.isEnd()) {
114 shake.x = pos.x;
115 shake.y = pos.y;
116 }
117 else {
118 shake.x = pos.x + static_cast<float>((rand() % (shake_strength * 2)) - shake_strength) * 0.0078125f;
119 shake.y = pos.y + static_cast<float>((rand() % (shake_strength * 2)) - shake_strength) * 0.0078125f;
120 }
121 }
122
123 void Camera::setTarget(const FPoint& _target) {
124 target = _target;
125 }
126
127 void Camera::warpTo(const FPoint& _target) {
128 pos = shake = target = prev_cam_target = _target;
129 shake_timer.reset(Timer::END);
130 prev_cam_dx = 0;
131 prev_cam_dy = 0;
132 }
133
0 /*
1 Copyright © 2012-2021 Justin Jacobs
2
3 This file is part of FLARE.
4
5 FLARE is free software: you can redistribute it and/or modify it under the terms
6 of the GNU General Public License as published by the Free Software Foundation,
7 either version 3 of the License, or (at your option) any later version.
8
9 FLARE is distributed in the hope that it will be useful, but WITHOUT ANY
10 WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A
11 PARTICULAR PURPOSE. See the GNU General Public License for more details.
12
13 You should have received a copy of the GNU General Public License along with
14 FLARE. If not, see http://www.gnu.org/licenses/
15 */
16
17
18 /**
19 * class Camera
20 *
21 * Controls the viewport that moves around the map, usually focused on the player
22 *
23 */
24
25 #ifndef CAMERA_H
26 #define CAMERA_H
27
28 #include "CommonIncludes.h"
29 #include "Utils.h"
30
31 class Camera {
32 public:
33 Camera();
34 ~Camera();
35
36 void logic();
37 void setTarget(const FPoint& _target);
38 void warpTo(const FPoint& _target);
39
40 FPoint pos;
41 FPoint shake;
42 Timer shake_timer;
43
44 private:
45 FPoint target;
46 FPoint prev_cam_target;
47
48 float prev_cam_dx;
49 float prev_cam_dy;
50
51 float cam_threshold;
52 int shake_strength;
53 };
54
55 #endif
7676 * Convert status array to savefile campaign= (status csv)
7777 */
7878 std::string CampaignManager::getAll() {
79 std::stringstream ss;
80 ss.str("");
79 std::string output("");
8180
8281 StatusMap::iterator it;
8382 for (it = status.begin(); it != status.end(); ++it) {
8483 if (it->second.first)
85 ss << it->second.second;
84 output += it->second.second;
8685
8786 StatusMap::iterator temp = it;
8887 temp++;
8988 if (temp != status.end() && temp->second.first) {
90 ss << ',';
89 output += ',';
9190 }
9291 }
93 return ss.str();
92 return output;
9493 }
9594
9695 bool CampaignManager::checkStatus(const StatusID s) {
137136 return menu->inv->inventory[MenuInventory::CARRIED].contain(eset->misc.currency_id, quantity);
138137 }
139138
140 bool CampaignManager::checkItem(int item_id) {
141 if (menu->inv->inventory[MenuInventory::CARRIED].contain(item_id, 1))
139 bool CampaignManager::checkItem(ItemStack istack) {
140 if (menu->inv->inventory[MenuInventory::CARRIED].contain(istack.item, istack.quantity))
142141 return true;
143142 else
144 return menu->inv->inventory[MenuInventory::EQUIPMENT].contain(item_id, 1);
143 return menu->inv->inventory[MenuInventory::EQUIPMENT].contain(istack.item, istack.quantity);
145144 }
146145
147146 void CampaignManager::removeCurrency(int quantity) {
154153 }
155154 }
156155
157 void CampaignManager::removeItem(int item_id) {
158 if (item_id < 0 || static_cast<unsigned>(item_id) >= items->items.size()) return;
159
160 if (menu->inv->remove(item_id)) {
161 pc->logMsg(msg->get("%s removed.", items->getItemName(item_id)), Avatar::MSG_UNIQUE);
162 items->playSound(item_id);
156 void CampaignManager::removeItem(ItemStack istack) {
157 if (istack.empty())
158 return;
159
160 if (istack.item == eset->misc.currency_id) {
161 removeCurrency(istack.quantity);
162 return;
163 }
164
165 int item_count = menu->inv->inventory[MenuInventory::CARRIED].count(istack.item) + menu->inv->inventory[MenuInventory::EQUIPMENT].count(istack.item);
166 int max_amount = std::min(item_count, istack.quantity);
167
168 if (menu->inv->remove(istack.item, max_amount)) {
169 if (max_amount > 1)
170 pc->logMsg(msg->get("%s x%d removed.", items->getItemName(istack.item), max_amount), Avatar::MSG_UNIQUE);
171 else if (max_amount == 1)
172 pc->logMsg(msg->get("%s removed.", items->getItemName(istack.item)), Avatar::MSG_UNIQUE);
173
174 if (max_amount > 0)
175 items->playSound(istack.item);
163176 }
164177 }
165178
169182
170183 menu->inv->add(istack, MenuInventory::CARRIED, ItemStorage::NO_SLOT, MenuInventory::ADD_PLAY_SOUND, MenuInventory::ADD_AUTO_EQUIP);
171184
172 if (istack.item != eset->misc.currency_id) {
173 if (istack.quantity <= 1)
174 pc->logMsg(msg->get("You receive %s.", items->getItemName(istack.item)), Avatar::MSG_UNIQUE);
185 if (istack.item == eset->misc.currency_id) {
186 pc->logMsg(msg->get("You receive %d %s.", istack.quantity, eset->loot.currency), Avatar::MSG_UNIQUE);
187 }
188 else {
175189 if (istack.quantity > 1)
176190 pc->logMsg(msg->get("You receive %s x%d.", items->getItemName(istack.item), istack.quantity), Avatar::MSG_UNIQUE);
191 else if (istack.quantity == 1)
192 pc->logMsg(msg->get("You receive %s.", items->getItemName(istack.item)), Avatar::MSG_UNIQUE);
177193 }
178194 }
179195
182198 stack.item = eset->misc.currency_id;
183199 stack.quantity = amount;
184200
185 pc->logMsg(msg->get("You receive %d %s.", amount, eset->loot.currency), Avatar::MSG_UNIQUE);
186201 rewardItem(stack);
187202 }
188203
238253 return true;
239254 }
240255 else if (ec.type == EventComponent::REQUIRES_ITEM) {
241 if (checkItem(ec.x))
256 if (checkItem(ItemStack(ec.id, ec.x)))
242257 return true;
243258 }
244259 else if (ec.type == EventComponent::REQUIRES_NOT_ITEM) {
245 if (!checkItem(ec.x))
260 if (!checkItem(ItemStack(ec.id, ec.x)))
246261 return true;
247262 }
248263 else if (ec.type == EventComponent::REQUIRES_LEVEL) {
4848 void resetAllStatuses();
4949 void getSetStatusStrings(std::vector<std::string>& status_strings);
5050 bool checkCurrency(int quantity);
51 bool checkItem(int item_id);
51 bool checkItem(ItemStack istack);
5252 void removeCurrency(int quantity);
53 void removeItem(int item_id);
53 void removeItem(ItemStack istack);
5454 void rewardItem(ItemStack istack);
5555 void rewardCurrency(int amount);
5656 void rewardXP(int amount, bool show_message);
4141 , floating_offset(0)
4242 , text("")
4343 , displaytype(0)
44 , is_int(false)
45 , int_value(0)
4446 {}
4547
4648 Combat_Text_Item::~Combat_Text_Item() {
49 // label deletion is handled by CombatText class
4750 }
4851
4952 CombatText::CombatText() {
5457 msg_color[MSG_MISS] = font->getColor(FontEngine::COLOR_COMBAT_MISS);
5558
5659 duration = settings->max_frames_per_sec; // 1 second
60 fade_duration = 0;
5761 speed = 60.f / settings->max_frames_per_sec;
5862 offset = 48; // average height of flare-game enemies, so a sensible default
5963
7478 // @ATTR offset|int|The vertical offset for the combat text's starting position.
7579 offset = Parse::toInt(infile.val);
7680 }
81 else if (infile.key == "fade_duration") {
82 // @ATTR fade_duration|duration|How long the combat text will spend fading out in 'ms' or 's'.
83 fade_duration = Parse::toDuration(infile.val);
84 }
7785 else {
7886 infile.error("CombatText: '%s' is not a valid key.",infile.key.c_str());
7987 }
8088 }
8189 infile.close();
8290 }
91
92 if (fade_duration > duration)
93 fade_duration = duration;
8394 }
8495
8596 CombatText::~CombatText() {
91102 }
92103
93104 void CombatText::addString(const std::string& message, const FPoint& location, int displaytype) {
94 if (settings->combat_text) {
95 Combat_Text_Item *c = new Combat_Text_Item();
96 WidgetLabel *label = new WidgetLabel();
97 c->pos.x = location.x;
98 c->pos.y = location.y;
99 c->floating_offset = static_cast<float>(offset);
100 c->label = label;
101 c->text = message;
102 c->lifespan = duration;
103 c->displaytype = displaytype;
104
105 c->label->setPos(static_cast<int>(c->pos.x), static_cast<int>(c->pos.y));
106 c->label->setJustify(FontEngine::JUSTIFY_CENTER);
107 c->label->setVAlign(LabelInfo::VALIGN_BOTTOM);
108 c->label->setText(c->text);
109 c->label->setColor(msg_color[c->displaytype]);
110 combat_text.push_back(*c);
111 delete c;
112 }
105 if (!settings->combat_text)
106 return;
107
108 Combat_Text_Item c;
109 c.pos.x = location.x;
110 c.pos.y = location.y;
111 c.floating_offset = static_cast<float>(offset);
112 c.text = message;
113 c.lifespan = duration;
114 c.displaytype = displaytype;
115
116 c.label = new WidgetLabel();
117 c.label->setPos(static_cast<int>(c.pos.x), static_cast<int>(c.pos.y));
118 c.label->setJustify(FontEngine::JUSTIFY_CENTER);
119 c.label->setVAlign(LabelInfo::VALIGN_BOTTOM);
120 c.label->setText(c.text);
121 c.label->setColor(msg_color[c.displaytype]);
122 combat_text.push_back(c);
113123 }
114124
115125 void CombatText::addInt(int num, const FPoint& location, int displaytype) {
116 if (settings->combat_text) {
117 std::stringstream ss;
118 ss << num;
119 addString(ss.str(), location, displaytype);
120 }
126 if (!settings->combat_text)
127 return;
128
129 std::stringstream ss;
130
131 // when adding multiple combat text of the same type and position on the same frame, add the num to the existing text
132 for (std::vector<Combat_Text_Item>::iterator it = combat_text.begin(); it != combat_text.end(); ++it) {
133 if (it->is_int && it->displaytype == displaytype && it->lifespan == duration && it->pos.x == location.x && it->pos.y == location.y) {
134 it->int_value += num;
135 ss << it->int_value;
136 it->text = ss.str();
137 it->label->setText(ss.str());
138 return;
139 }
140 }
141
142 ss << num;
143 addString(ss.str(), location, displaytype);
144
145 combat_text.back().is_int = true;
146 combat_text.back().int_value = num;
121147 }
122148
123149 void CombatText::logic(const FPoint& _cam) {
124150 cam = _cam;
125151
126 for(std::vector<Combat_Text_Item>::iterator it = combat_text.begin(); it != combat_text.end(); ++it) {
152 for(std::vector<Combat_Text_Item>::iterator it = combat_text.end(); it != combat_text.begin();) {
153 it--;
154
127155 it->lifespan--;
128156 it->floating_offset += speed;
129157
132160 scr_pos.y -= static_cast<int>(it->floating_offset);
133161
134162 it->label->setPos(scr_pos.x, scr_pos.y);
163
164 // try to prevent messages from overlapping
165 for (std::vector<Combat_Text_Item>::iterator overlap_it = it; overlap_it != combat_text.begin();) {
166 overlap_it--;
167 Rect bounds = *(it->label->getBounds());
168 Rect overlap_bounds = *(overlap_it->label->getBounds());
169 if (Utils::rectsOverlap(bounds, overlap_bounds)) {
170 overlap_it->floating_offset += static_cast<float>(overlap_bounds.h + (overlap_bounds.y - bounds.y));
171
172 scr_pos = Utils::mapToScreen(overlap_it->pos.x, overlap_it->pos.y, cam.x, cam.y);
173 scr_pos.y -= static_cast<int>(overlap_it->floating_offset);
174
175 overlap_it->label->setPos(scr_pos.x, scr_pos.y);
176 }
177 }
135178 }
136179
137180 // delete expired messages
145188 if (!settings->show_hud) return;
146189
147190 for(std::vector<Combat_Text_Item>::iterator it = combat_text.begin(); it != combat_text.end(); ++it) {
148 if (it->lifespan > 0)
191 if (it->lifespan > 0) {
192 // fade out
193 if (it->lifespan < fade_duration)
194 it->label->setAlpha(static_cast<uint8_t>((static_cast<float>(it->lifespan) / static_cast<float>(fade_duration)) * 255.f));
195
149196 it->label->render();
197 }
150198 }
151199 }
152200
153201 void CombatText::clear() {
154 combat_text.clear();
155 }
202 while (combat_text.size()) {
203 delete combat_text.begin()->label;
204 combat_text.erase(combat_text.begin());
205 }
206 }
4343 float floating_offset;
4444 std::string text;
4545 int displaytype;
46 bool is_int;
47 int int_value;
4648 };
4749
4850 class CombatText {
6971
7072 Color msg_color[5];
7173 int duration;
74 int fade_duration;
7275 float speed;
7376 int offset;
7477 };
2929 , cursor_interact(NULL)
3030 , cursor_talk(NULL)
3131 , cursor_attack(NULL)
32 , cursor_lhp_normal(NULL)
33 , cursor_lhp_interact(NULL)
34 , cursor_lhp_talk(NULL)
35 , cursor_lhp_attack(NULL)
3236 , cursor_current(NULL)
33 , offset_current(NULL) {
37 , offset_current(NULL)
38 , low_hp(false) {
3439 Image *graphics;
3540 FileParser infile;
3641 // @CLASS CursorManager|Description of engine/mouse_cursor.txt
7277 }
7378 offset_attack = Parse::toPoint(infile.val);
7479 }
80 else if (infile.key == "lowhp_normal") {
81 // @ATTR lowhp_normal|filename|Filename of an image for the normal cursor when health is low.
82 graphics = render_device->loadImage(Parse::popFirstString(infile.val), RenderDevice::ERROR_NORMAL);
83 if (graphics) {
84 cursor_lhp_normal = graphics->createSprite();
85 graphics->unref();
86 }
87 offset_lhp_normal = Parse::toPoint(infile.val);
88 }
89 else if (infile.key == "lowhp_interact") {
90 // @ATTR lowhp_interact|filename|Filename of an image for the object interaction cursor when health is low.
91 graphics = render_device->loadImage(Parse::popFirstString(infile.val), RenderDevice::ERROR_NORMAL);
92 if (graphics) {
93 cursor_lhp_interact = graphics->createSprite();
94 graphics->unref();
95 }
96 offset_lhp_interact = Parse::toPoint(infile.val);
97 }
98 else if (infile.key == "lowhp_talk") {
99 // @ATTR lowhp_talk|filename|Filename of an image for the NPC interaction cursor when health is low.
100 graphics = render_device->loadImage(Parse::popFirstString(infile.val), RenderDevice::ERROR_NORMAL);
101 if (graphics) {
102 cursor_lhp_talk = graphics->createSprite();
103 graphics->unref();
104 }
105 offset_lhp_talk = Parse::toPoint(infile.val);
106 }
107 else if (infile.key == "lowhp_attack") {
108 // @ATTR lowhp_attack|filename|Filename of an image for the cursor when attacking enemies and health is low.
109 graphics = render_device->loadImage(Parse::popFirstString(infile.val), RenderDevice::ERROR_NORMAL);
110 if (graphics) {
111 cursor_lhp_attack = graphics->createSprite();
112 graphics->unref();
113 }
114 offset_lhp_attack = Parse::toPoint(infile.val);
115 }
116
117
75118 else {
76119 infile.error("CursorManager: '%s' is not a valid key.", infile.key.c_str());
77120 }
85128 if (cursor_interact) delete cursor_interact;
86129 if (cursor_talk) delete cursor_talk;
87130 if (cursor_attack) delete cursor_attack;
131 if (cursor_lhp_normal) delete cursor_lhp_normal;
132 if (cursor_lhp_interact) delete cursor_lhp_interact;
133 if (cursor_lhp_talk) delete cursor_lhp_talk;
134 if (cursor_lhp_attack) delete cursor_lhp_attack;
88135 }
89136
90137 void CursorManager::logic() {
99146 cursor_current = NULL;
100147 offset_current = NULL;
101148
102 if (cursor_normal) {
103 inpt->hideCursor();
104 cursor_current = cursor_normal;
105 offset_current = &offset_normal;
106 }
107 else {
108 // system cursor
109 inpt->showCursor();
110 }
149 setCursor(CURSOR_NORMAL);
111150 }
112151
113152 void CursorManager::render() {
125164 }
126165 }
127166
167 void CursorManager::setLowHP(bool val) {
168 low_hp = val;
169 }
170
128171 void CursorManager::setCursor(int type) {
129172 if (settings->hardware_cursor) return;
130173
131 if (type == CURSOR_INTERACT && cursor_interact) {
132 inpt->hideCursor();
133 cursor_current = cursor_interact;
134 offset_current = &offset_interact;
135 }
136 else if (type == CURSOR_TALK && cursor_talk) {
137 inpt->hideCursor();
138 cursor_current = cursor_talk;
139 offset_current = &offset_talk;
140 }
141 else if (type == CURSOR_ATTACK && cursor_attack) {
142 inpt->hideCursor();
143 cursor_current = cursor_attack;
144 offset_current = &offset_attack;
145 }
146 else if (cursor_normal) {
147 inpt->hideCursor();
148 cursor_current = cursor_normal;
149 offset_current = &offset_normal;
174 if (type == CURSOR_INTERACT && (cursor_interact || (cursor_lhp_interact && low_hp))) {
175 inpt->hideCursor();
176 if (low_hp && cursor_lhp_interact) {
177 cursor_current = cursor_lhp_interact;
178 offset_current = &offset_lhp_interact;
179 }
180 else if (cursor_interact) {
181 cursor_current = cursor_interact;
182 offset_current = &offset_interact;
183 }
184 }
185 else if (type == CURSOR_TALK && (cursor_talk || (cursor_lhp_talk && low_hp))) {
186 inpt->hideCursor();
187 if (low_hp && cursor_lhp_talk) {
188 cursor_current = cursor_lhp_talk;
189 offset_current = &offset_lhp_talk;
190 }
191 else if (cursor_talk) {
192 cursor_current = cursor_talk;
193 offset_current = &offset_talk;
194 }
195 }
196 else if (type == CURSOR_ATTACK && (cursor_attack || (cursor_lhp_attack && low_hp))) {
197 inpt->hideCursor();
198 if (low_hp && cursor_lhp_attack) {
199 cursor_current = cursor_lhp_attack;
200 offset_current = &offset_lhp_attack;
201 }
202 else if (cursor_attack) {
203 cursor_current = cursor_attack;
204 offset_current = &offset_attack;
205 }
206 }
207 else if (cursor_normal || (cursor_lhp_normal && low_hp)) {
208 inpt->hideCursor();
209 if (low_hp && cursor_lhp_normal) {
210 cursor_current = cursor_lhp_normal;
211 offset_current = &offset_lhp_normal;
212 }
213 else if (cursor_normal) {
214 cursor_current = cursor_normal;
215 offset_current = &offset_normal;
216 }
150217 }
151218 else {
152219 // system cursor
2727 ~CursorManager ();
2828 void logic();
2929 void render();
30 void setLowHP(bool val);
3031 void setCursor(int type);
3132
3233 bool show_cursor;
3536 CURSOR_NORMAL,
3637 CURSOR_INTERACT,
3738 CURSOR_TALK,
38 CURSOR_ATTACK
39 CURSOR_ATTACK,
3940 };
4041
4142 private:
4344 Sprite *cursor_interact;
4445 Sprite *cursor_talk;
4546 Sprite *cursor_attack;
47 Sprite *cursor_lhp_normal;
48 Sprite *cursor_lhp_interact;
49 Sprite *cursor_lhp_talk;
50 Sprite *cursor_lhp_attack;
4651
4752 Point offset_normal;
4853 Point offset_interact;
4954 Point offset_talk;
5055 Point offset_attack;
56 Point offset_lhp_normal;
57 Point offset_lhp_interact;
58 Point offset_lhp_talk;
59 Point offset_lhp_attack;
60
5161
5262 Sprite *cursor_current;
5363 Point* offset_current;
64
65 bool low_hp;
5466 };
5567
5668 #endif
3232
3333 EffectDef::EffectDef()
3434 : id("")
35 , type("")
35 , type(Effect::NONE)
3636 , name("")
3737 , icon(-1)
3838 , animation("")
4949 : id("")
5050 , name("")
5151 , icon(-1)
52 , ticks(0)
53 , duration(-1)
54 , type(NONE)
52 , timer()
53 , type(Effect::NONE)
5554 , magnitude(0)
5655 , magnitude_max(0)
5756 , animation_name("")
6261 , passive_id(0)
6362 , source_type(Power::SOURCE_TYPE_HERO)
6463 , group_stack(false)
65 , color_mod(255, 255, 255)
64 , color_mod(Color(255,255,255).encodeRGBA())
6665 , alpha_mod(255)
6766 , attack_speed_anim("") {
6867 }
7776 return *this;
7877
7978 unloadAnimation();
79 animation_name = other.animation_name;
80 loadAnimation(animation_name);
81 if (animation && other.animation)
82 animation->syncTo(other.animation);
8083
8184 id = other.id;
8285 name = other.name;
8386 icon = other.icon;
84 ticks = other.ticks;
85 duration = other.duration;
87 timer = other.timer;
8688 type = other.type;
8789 magnitude = other.magnitude;
8890 magnitude_max = other.magnitude_max;
89 animation_name = other.animation_name;
90 loadAnimation(animation_name);
9191 item = other.item;
9292 trigger = other.trigger;
9393 render_above = other.render_above;
121121 delete animation;
122122 animation = NULL;
123123 }
124 }
125
126 int Effect::getTypeFromString(const std::string& type_str) {
127 if (type_str.empty()) return Effect::NONE;
128
129 if (type_str == "damage") return Effect::DAMAGE;
130 else if (type_str == "damage_percent") return Effect::DAMAGE_PERCENT;
131 else if (type_str == "hpot") return Effect::HPOT;
132 else if (type_str == "hpot_percent") return Effect::HPOT_PERCENT;
133 else if (type_str == "mpot") return Effect::MPOT;
134 else if (type_str == "mpot_percent") return Effect::MPOT_PERCENT;
135 else if (type_str == "speed") return Effect::SPEED;
136 else if (type_str == "attack_speed") return Effect::ATTACK_SPEED;
137 else if (type_str == "immunity") return Effect::IMMUNITY;
138 else if (type_str == "immunity_damage") return Effect::IMMUNITY_DAMAGE;
139 else if (type_str == "immunity_slow") return Effect::IMMUNITY_SLOW;
140 else if (type_str == "immunity_stun") return Effect::IMMUNITY_STUN;
141 else if (type_str == "immunity_hp_steal") return Effect::IMMUNITY_HP_STEAL;
142 else if (type_str == "immunity_mp_steal") return Effect::IMMUNITY_MP_STEAL;
143 else if (type_str == "immunity_knockback") return Effect::IMMUNITY_KNOCKBACK;
144 else if (type_str == "immunity_damage_reflect") return Effect::IMMUNITY_DAMAGE_REFLECT;
145 else if (type_str == "immunity_stat_debuff") return Effect::IMMUNITY_STAT_DEBUFF;
146 else if (type_str == "stun") return Effect::STUN;
147 else if (type_str == "revive") return Effect::REVIVE;
148 else if (type_str == "convert") return Effect::CONVERT;
149 else if (type_str == "fear") return Effect::FEAR;
150 else if (type_str == "death_sentence") return Effect::DEATH_SENTENCE;
151 else if (type_str == "shield") return Effect::SHIELD;
152 else if (type_str == "heal") return Effect::HEAL;
153 else if (type_str == "knockback") return Effect::KNOCKBACK;
154 else {
155 for (int i=0; i<Stats::COUNT; ++i) {
156 if (type_str == Stats::KEY[i]) {
157 return Effect::TYPE_COUNT + i;
158 }
159 }
160
161 for (size_t i=0; i<eset->damage_types.list.size(); ++i) {
162 if (type_str == eset->damage_types.list[i].min) {
163 return Effect::TYPE_COUNT + Stats::COUNT + static_cast<int>(i*2);
164 }
165 else if (type_str == eset->damage_types.list[i].max) {
166 return Effect::TYPE_COUNT + Stats::COUNT + static_cast<int>(i*2) + 1;
167 }
168 }
169
170 for (size_t i=0; i<eset->elements.list.size(); ++i) {
171 if (type_str == eset->elements.list[i].id + "_resist") {
172 return Effect::TYPE_COUNT + Stats::COUNT + static_cast<int>(eset->damage_types.count + i);
173 }
174 }
175
176 for (size_t i=0; i<eset->primary_stats.list.size(); ++i) {
177 if (type_str == eset->primary_stats.list[i].id) {
178 return Effect::TYPE_COUNT + Stats::COUNT + static_cast<int>(eset->damage_types.count) + static_cast<int>(eset->elements.list.size() + i);
179 }
180 }
181 }
182
183 Utils::logError("EffectManager: '%s' is not a valid effect type.", type_str.c_str());
184 return Effect::NONE;
185 }
186
187 bool Effect::typeIsStat(int t) {
188 return t >= Effect::TYPE_COUNT && t < Effect::TYPE_COUNT + Stats::COUNT;
189 }
190
191 bool Effect::typeIsDmgMin(int t) {
192 return t >= Effect::TYPE_COUNT + Stats::COUNT && t < Effect::TYPE_COUNT + Stats::COUNT + static_cast<int>(eset->damage_types.count) && (t - Stats::COUNT - Effect::TYPE_COUNT) % 2 == 0;
193 }
194
195 bool Effect::typeIsDmgMax(int t) {
196 return t >= Effect::TYPE_COUNT + Stats::COUNT && t < Effect::TYPE_COUNT + Stats::COUNT + static_cast<int>(eset->damage_types.count) && (t - Stats::COUNT - Effect::TYPE_COUNT) % 2 == 1;
197 }
198
199 bool Effect::typeIsResist(int t) {
200 return t >= Effect::TYPE_COUNT + Stats::COUNT + static_cast<int>(eset->damage_types.count) && t < Effect::TYPE_COUNT + Stats::COUNT + static_cast<int>(eset->damage_types.count) + static_cast<int>(eset->elements.list.size());
201 }
202
203 bool Effect::typeIsPrimary(int t) {
204 return t >= Effect::TYPE_COUNT + Stats::COUNT + static_cast<int>(eset->damage_types.count) + static_cast<int>(eset->elements.list.size()) && t < Effect::TYPE_COUNT + Stats::COUNT + static_cast<int>(eset->damage_types.count) + static_cast<int>(eset->elements.list.size()) + static_cast<int>(eset->primary_stats.list.size());
205 }
206
207 int Effect::getStatFromType(int t) {
208 return t - Effect::TYPE_COUNT;
209 }
210
211 size_t Effect::getDmgFromType(int t) {
212 return static_cast<size_t>(t - Effect::TYPE_COUNT - Stats::COUNT);
213 }
214
215 size_t Effect::getResistFromType(int t) {
216 return static_cast<size_t>(t - Effect::TYPE_COUNT - Stats::COUNT) - eset->damage_types.count;
217 }
218
219 size_t Effect::getPrimaryFromType(int t) {
220 return static_cast<size_t>(t - Effect::TYPE_COUNT - Stats::COUNT) - eset->damage_types.count - eset->elements.list.size();
124221 }
125222
126223 EffectManager::EffectManager()
179276 void EffectManager::logic() {
180277 clearStatus();
181278
182 for (unsigned i=0; i<effect_list.size(); i++) {
279 for (size_t i=0; i<effect_list.size(); ++i) {
280 Effect& ei = effect_list[i];
281
183282 // @CLASS EffectManager|Description of "type" in powers/effects.txt
184283 // expire timed effects and total up magnitudes of active effects
185 if (effect_list[i].duration >= 0) {
186 if (effect_list[i].duration > 0) {
187 if (effect_list[i].ticks > 0) effect_list[i].ticks--;
188 if (effect_list[i].ticks == 0) {
189 //death sentence is only applied at the end of the timer
190 // @TYPE death_sentence|Causes sudden death at the end of the effect duration.
191 if (effect_list[i].type == Effect::DEATH_SENTENCE) death_sentence = true;
192 removeEffect(i);
193 i--;
194 continue;
195 }
196 }
197
198 // @TYPE damage|Damage per second
199 if (effect_list[i].type == Effect::DAMAGE && effect_list[i].ticks % settings->max_frames_per_sec == 1) damage += effect_list[i].magnitude;
200 // @TYPE damage_percent|Damage per second (percentage of max HP)
201 else if (effect_list[i].type == Effect::DAMAGE_PERCENT && effect_list[i].ticks % settings->max_frames_per_sec == 1) damage_percent += effect_list[i].magnitude;
202 // @TYPE hpot|HP restored per second
203 else if (effect_list[i].type == Effect::HPOT && effect_list[i].ticks % settings->max_frames_per_sec == 1) hpot += effect_list[i].magnitude;
204 // @TYPE hpot_percent|HP restored per second (percentage of max HP)
205 else if (effect_list[i].type == Effect::HPOT_PERCENT && effect_list[i].ticks % settings->max_frames_per_sec == 1) hpot_percent += effect_list[i].magnitude;
206 // @TYPE mpot|MP restored per second
207 else if (effect_list[i].type == Effect::MPOT && effect_list[i].ticks % settings->max_frames_per_sec == 1) mpot += effect_list[i].magnitude;
208 // @TYPE mpot_percent|MP restored per second (percentage of max MP)
209 else if (effect_list[i].type == Effect::MPOT_PERCENT && effect_list[i].ticks % settings->max_frames_per_sec == 1) mpot_percent += effect_list[i].magnitude;
210 // @TYPE speed|Changes movement speed. A magnitude of 100 is 100% speed (aka normal speed).
211 else if (effect_list[i].type == Effect::SPEED) speed = (static_cast<float>(effect_list[i].magnitude) * speed) / 100.f;
212 // @TYPE attack_speed|Changes attack speed. A magnitude of 100 is 100% speed (aka normal speed).
213 // attack speed is calculated when getAttackSpeed() is called
214
215 // @TYPE immunity|Applies all immunity effects. Magnitude is ignored.
216 else if (effect_list[i].type == Effect::IMMUNITY) {
217 immunity_damage = true;
218 immunity_slow = true;
219 immunity_stun = true;
220 immunity_hp_steal = true;
221 immunity_mp_steal = true;
222 immunity_knockback = true;
223 immunity_damage_reflect = true;
224 immunity_stat_debuff = true;
225 }
226 // @TYPE immunity_damage|Removes and prevents damage over time. Magnitude is ignored.
227 else if (effect_list[i].type == Effect::IMMUNITY_DAMAGE) immunity_damage = true;
228 // @TYPE immunity_slow|Removes and prevents slow effects. Magnitude is ignored.
229 else if (effect_list[i].type == Effect::IMMUNITY_SLOW) immunity_slow = true;
230 // @TYPE immunity_stun|Removes and prevents stun effects. Magnitude is ignored.
231 else if (effect_list[i].type == Effect::IMMUNITY_STUN) immunity_stun = true;
232 // @TYPE immunity_hp_steal|Prevents HP stealing. Magnitude is ignored.
233 else if (effect_list[i].type == Effect::IMMUNITY_HP_STEAL) immunity_hp_steal = true;
234 // @TYPE immunity_mp_steal|Prevents MP stealing. Magnitude is ignored.
235 else if (effect_list[i].type == Effect::IMMUNITY_MP_STEAL) immunity_mp_steal = true;
236 // @TYPE immunity_knockback|Removes and prevents knockback effects. Magnitude is ignored.
237 else if (effect_list[i].type == Effect::IMMUNITY_KNOCKBACK) immunity_knockback = true;
238 // @TYPE immunity_damage_reflect|Prevents damage reflection. Magnitude is ignored.
239 else if (effect_list[i].type == Effect::IMMUNITY_DAMAGE_REFLECT) immunity_damage_reflect = true;
240 // @TYPE immunity_stat_debuff|Prevents stat value altering effects that have a magnitude less than 0. Magnitude is ignored.
241 else if (effect_list[i].type == Effect::IMMUNITY_STAT_DEBUFF) immunity_stat_debuff = true;
242
243 // @TYPE stun|Can't move or attack. Being attacked breaks stun.
244 else if (effect_list[i].type == Effect::STUN) stun = true;
245 // @TYPE revive|Revives the player. Typically attached to a power that triggers when the player dies.
246 else if (effect_list[i].type == Effect::REVIVE) revive = true;
247 // @TYPE convert|Causes an enemy or an ally to switch allegiance
248 else if (effect_list[i].type == Effect::CONVERT) convert = true;
249 // @TYPE fear|Causes enemies to run away
250 else if (effect_list[i].type == Effect::FEAR) fear = true;
251 // @TYPE knockback|Pushes the target away from the source caster. Speed is the given value divided by the framerate cap.
252 else if (effect_list[i].type == Effect::KNOCKBACK) knockback_speed = static_cast<float>(effect_list[i].magnitude)/static_cast<float>(settings->max_frames_per_sec);
253
254 // @TYPE ${STATNAME}|Increases ${STATNAME}, where ${STATNAME} is any of the base stats. Examples: hp, avoidance, xp_gain
255 // @TYPE ${DAMAGE_TYPE}|Increases a damage min or max, where ${DAMAGE_TYPE} is any 'min' or 'max' value found in engine/damage_types.txt. Example: dmg_melee_min
256 else if (effect_list[i].type >= Effect::TYPE_COUNT && effect_list[i].type < Effect::TYPE_COUNT + Stats::COUNT + static_cast<int>(eset->damage_types.count)) {
257 bonus[effect_list[i].type - Effect::TYPE_COUNT] += effect_list[i].magnitude;
258 }
259 // else if (effect_list[i].type >= Effect::TYPE_COUNT + Stats::COUNT && effect_list[i].type < Effect::TYPE_COUNT + Stats::COUNT + static_cast<int>(eset->damage_types.count)) {
260 // bonus[effect_list[i].type - Effect::TYPE_COUNT] += effect_list[i].magnitude;
261 // }
262 // @TYPE ${ELEMENT}_resist|Increase Resistance % to ${ELEMENT}, where ${ELEMENT} is any found in engine/elements.txt. Example: fire_resist
263 else if (effect_list[i].type >= Effect::TYPE_COUNT + Stats::COUNT + static_cast<int>(eset->damage_types.count) && effect_list[i].type < Effect::TYPE_COUNT + Stats::COUNT + static_cast<int>(eset->damage_types.count) + static_cast<int>(eset->elements.list.size())) {
264 bonus_resist[effect_list[i].type - Effect::TYPE_COUNT - Stats::COUNT - eset->damage_types.count] += effect_list[i].magnitude;
265 }
266 // @TYPE ${PRIMARYSTAT}|Increases ${PRIMARYSTAT}, where ${PRIMARYSTAT} is any of the primary stats defined in engine/primary_stats.txt. Example: physical
267 else if (effect_list[i].type >= Effect::TYPE_COUNT) {
268 bonus_primary[effect_list[i].type - Effect::TYPE_COUNT - Stats::COUNT - eset->damage_types.count - eset->elements.list.size()] += effect_list[i].magnitude;
269 }
270 }
271 // expire shield effects
272 if (effect_list[i].magnitude_max > 0 && effect_list[i].magnitude == 0) {
273 // @TYPE shield|Create a damage absorbing barrier based on Mental damage stat. Duration is ignored.
274 if (effect_list[i].type == Effect::SHIELD) {
284 if (ei.timer.getDuration() > 0) {
285 if (ei.timer.isEnd()) {
286 //death sentence is only applied at the end of the timer
287 // @TYPE death_sentence|Causes sudden death at the end of the effect duration.
288 if (ei.type == Effect::DEATH_SENTENCE) death_sentence = true;
275289 removeEffect(i);
276290 i--;
277291 continue;
278292 }
279293 }
280 // expire effects based on animations
281 if ((effect_list[i].animation && effect_list[i].animation->isLastFrame()) || !effect_list[i].animation) {
282 // @TYPE heal|Restore HP based on Mental damage stat.
283 if (effect_list[i].type == Effect::HEAL) {
294
295 // @TYPE damage|Damage per second
296 if (ei.type == Effect::DAMAGE && ei.timer.isWholeSecond()) damage += ei.magnitude;
297 // @TYPE damage_percent|Damage per second (percentage of max HP)
298 else if (ei.type == Effect::DAMAGE_PERCENT && ei.timer.isWholeSecond()) damage_percent += ei.magnitude;
299 // @TYPE hpot|HP restored per second
300 else if (ei.type == Effect::HPOT && ei.timer.isWholeSecond()) hpot += ei.magnitude;
301 // @TYPE hpot_percent|HP restored per second (percentage of max HP)
302 else if (ei.type == Effect::HPOT_PERCENT && ei.timer.isWholeSecond()) hpot_percent += ei.magnitude;
303 // @TYPE mpot|MP restored per second
304 else if (ei.type == Effect::MPOT && ei.timer.isWholeSecond()) mpot += ei.magnitude;
305 // @TYPE mpot_percent|MP restored per second (percentage of max MP)
306 else if (ei.type == Effect::MPOT_PERCENT && ei.timer.isWholeSecond()) mpot_percent += ei.magnitude;
307 // @TYPE speed|Changes movement speed. A magnitude of 100 is 100% speed (aka normal speed).
308 else if (ei.type == Effect::SPEED) speed = (static_cast<float>(ei.magnitude) * speed) / 100.f;
309 // @TYPE attack_speed|Changes attack speed. A magnitude of 100 is 100% speed (aka normal speed).
310 // attack speed is calculated when getAttackSpeed() is called
311
312 // @TYPE immunity|Applies all immunity effects. Magnitude is ignored.
313 else if (ei.type == Effect::IMMUNITY) {
314 immunity_damage = true;
315 immunity_slow = true;
316 immunity_stun = true;
317 immunity_hp_steal = true;
318 immunity_mp_steal = true;
319 immunity_knockback = true;
320 immunity_damage_reflect = true;
321 immunity_stat_debuff = true;
322 }
323 // @TYPE immunity_damage|Removes and prevents damage over time. Magnitude is ignored.
324 else if (ei.type == Effect::IMMUNITY_DAMAGE) immunity_damage = true;
325 // @TYPE immunity_slow|Removes and prevents slow effects. Magnitude is ignored.
326 else if (ei.type == Effect::IMMUNITY_SLOW) immunity_slow = true;
327 // @TYPE immunity_stun|Removes and prevents stun effects. Magnitude is ignored.
328 else if (ei.type == Effect::IMMUNITY_STUN) immunity_stun = true;
329 // @TYPE immunity_hp_steal|Prevents HP stealing. Magnitude is ignored.
330 else if (ei.type == Effect::IMMUNITY_HP_STEAL) immunity_hp_steal = true;
331 // @TYPE immunity_mp_steal|Prevents MP stealing. Magnitude is ignored.
332 else if (ei.type == Effect::IMMUNITY_MP_STEAL) immunity_mp_steal = true;
333 // @TYPE immunity_knockback|Removes and prevents knockback effects. Magnitude is ignored.
334 else if (ei.type == Effect::IMMUNITY_KNOCKBACK) immunity_knockback = true;
335 // @TYPE immunity_damage_reflect|Prevents damage reflection. Magnitude is ignored.
336 else if (ei.type == Effect::IMMUNITY_DAMAGE_REFLECT) immunity_damage_reflect = true;
337 // @TYPE immunity_stat_debuff|Prevents stat value altering effects that have a magnitude less than 0. Magnitude is ignored.
338 else if (ei.type == Effect::IMMUNITY_STAT_DEBUFF) immunity_stat_debuff = true;
339
340 // @TYPE stun|Can't move or attack. Being attacked breaks stun.
341 else if (ei.type == Effect::STUN) stun = true;
342 // @TYPE revive|Revives the player. Typically attached to a power that triggers when the player dies.
343 else if (ei.type == Effect::REVIVE) revive = true;
344 // @TYPE convert|Causes an enemy or an ally to switch allegiance
345 else if (ei.type == Effect::CONVERT) convert = true;
346 // @TYPE fear|Causes enemies to run away
347 else if (ei.type == Effect::FEAR) fear = true;
348 // @TYPE knockback|Pushes the target away from the source caster. Speed is the given value divided by the framerate cap.
349 else if (ei.type == Effect::KNOCKBACK) knockback_speed = static_cast<float>(ei.magnitude)/static_cast<float>(settings->max_frames_per_sec);
350
351 // @TYPE ${STATNAME}|Increases ${STATNAME}, where ${STATNAME} is any of the base stats. Examples: hp, avoidance, xp_gain
352 // @TYPE ${DAMAGE_TYPE}|Increases a damage min or max, where ${DAMAGE_TYPE} is any 'min' or 'max' value found in engine/damage_types.txt. Example: dmg_melee_min
353 else if (ei.type >= Effect::TYPE_COUNT && ei.type < Effect::TYPE_COUNT + Stats::COUNT + static_cast<int>(eset->damage_types.count)) {
354 bonus[ei.type - Effect::TYPE_COUNT] += ei.magnitude;
355 }
356 // @TYPE ${ELEMENT}_resist|Increase Resistance % to ${ELEMENT}, where ${ELEMENT} is any found in engine/elements.txt. Example: fire_resist
357 else if (ei.type >= Effect::TYPE_COUNT + Stats::COUNT + static_cast<int>(eset->damage_types.count) && ei.type < Effect::TYPE_COUNT + Stats::COUNT + static_cast<int>(eset->damage_types.count) + static_cast<int>(eset->elements.list.size())) {
358 bonus_resist[ei.type - Effect::TYPE_COUNT - Stats::COUNT - eset->damage_types.count] += ei.magnitude;
359 }
360 // @TYPE ${PRIMARYSTAT}|Increases ${PRIMARYSTAT}, where ${PRIMARYSTAT} is any of the primary stats defined in engine/primary_stats.txt. Example: physical
361 else if (ei.type >= Effect::TYPE_COUNT) {
362 bonus_primary[ei.type - Effect::TYPE_COUNT - Stats::COUNT - eset->damage_types.count - eset->elements.list.size()] += ei.magnitude;
363 }
364
365 ei.timer.tick();
366
367 // expire shield effects
368 if (ei.magnitude_max > 0 && ei.magnitude == 0) {
369 // @TYPE shield|Create a damage absorbing barrier based on Mental damage stat. Duration is ignored.
370 if (ei.type == Effect::SHIELD) {
284371 removeEffect(i);
285372 i--;
286373 continue;
287374 }
288375 }
376 // expire effects based on animations
377 if ((ei.animation && ei.animation->isLastFrame()) || !ei.animation) {
378 // @TYPE heal|Restore HP based on Mental damage stat.
379 if (ei.type == Effect::HEAL) {
380 removeEffect(i);
381 i--;
382 continue;
383 }
384 }
289385
290386 // animate
291 if (effect_list[i].animation) {
292 if (!effect_list[i].animation->isCompleted())
293 effect_list[i].animation->advanceFrame();
294 }
295 }
296 }
297
298 void EffectManager::addEffect(EffectDef &effect, int duration, int magnitude, int source_type, size_t power_id) {
387 if (ei.animation) {
388 if (!ei.animation->isCompleted())
389 ei.animation->advanceFrame();
390 }
391 }
392 }
393
394 void EffectManager::addEffect(EffectDef &effect, int duration, int magnitude, int source_type, PowerID power_id) {
299395 addEffectInternal(effect, duration, magnitude, source_type, false, power_id);
300396 }
301397
304400 addEffectInternal(effect, duration, magnitude, Power::SOURCE_TYPE_HERO, true, NO_POWER);
305401 }
306402
307 void EffectManager::addEffectInternal(EffectDef &effect, int duration, int magnitude, int source_type, bool item, size_t power_id) {
308 int effect_type = getType(effect.type);
403 void EffectManager::addEffectInternal(EffectDef &effect, int duration, int magnitude, int source_type, bool item, PowerID power_id) {
309404 refresh_stats = true;
310405
311406 // if we're already immune, don't add negative effects
312 if (immunity_damage && (effect_type == Effect::DAMAGE || effect_type == Effect::DAMAGE_PERCENT))
407 if (immunity_damage && (effect.type == Effect::DAMAGE || effect.type == Effect::DAMAGE_PERCENT))
313408 return;
314 else if (immunity_slow && effect_type == Effect::SPEED && magnitude < 100)
409 else if (immunity_slow && effect.type == Effect::SPEED && magnitude < 100)
315410 return;
316 else if (immunity_stun && effect_type == Effect::STUN)
411 else if (immunity_stun && effect.type == Effect::STUN)
317412 return;
318 else if (immunity_knockback && effect_type == Effect::KNOCKBACK)
413 else if (immunity_knockback && effect.type == Effect::KNOCKBACK)
319414 return;
320 else if (immunity_stat_debuff && effect_type > Effect::TYPE_COUNT && magnitude < 0)
415 else if (immunity_stat_debuff && effect.type > Effect::TYPE_COUNT && magnitude < 0)
321416 return;
322417
323418 // only allow one knockback effect at a time
324 if (effect_type == Effect::KNOCKBACK && knockback_speed != 0)
419 if (effect.type == Effect::KNOCKBACK && knockback_speed != 0)
325420 return;
326421
327 if (effect_type == Effect::ATTACK_SPEED && magnitude < 100) {
328 Utils::logInfo("EffectManager: Attack speeds less than 100 are unsupported.");
329 return;
330 }
331
332422 bool insert_effect = false;
423 size_t insert_pos;
333424 int stacks_applied = 0;
334 size_t insert_pos;
335425 int trigger = power_id > 0 ? powers->powers[power_id].passive_trigger : -1;
336426 size_t passive_id = (power_id > 0 && powers->powers[power_id].passive) ? power_id : 0;
337427
338428 for (size_t i=effect_list.size(); i>0; i--) {
339 if (effect_list[i-1].id == effect.id) {
340 if (trigger > -1 && effect_list[i-1].trigger == trigger)
429 Effect& ei = effect_list[i-1];
430
431 // while checking only id would be sufficient, it is a slow string compare
432 // so we check the type first, which is an int compare, before taking the slow path
433 if (ei.type == effect.type && ei.id == effect.id) {
434 if (trigger > -1 && ei.trigger == trigger)
341435 return; // trigger effects can only be cast once per trigger
342436
343437 if (!effect.can_stack) {
344438 removeEffect(i-1);
345439 }
346440 else{
347 if(effect_type == Effect::SHIELD && effect.group_stack){
348 effect_list[i-1].magnitude += magnitude;
349
350 if(effect.max_stacks == -1
351 || (magnitude != 0 && effect_list[i-1].magnitude_max/magnitude < effect.max_stacks)){
352 effect_list[i-1].magnitude_max += magnitude;
441 if (effect.type == Effect::SHIELD && effect.group_stack){
442 ei.magnitude += magnitude;
443
444 if (effect.max_stacks == -1
445 || (magnitude != 0 && ei.magnitude_max/magnitude < effect.max_stacks)){
446 ei.magnitude_max += magnitude;
353447 }
354448
355 if(effect_list[i-1].magnitude > effect_list[i-1].magnitude_max){
356 effect_list[i-1].magnitude = effect_list[i-1].magnitude_max;
449 if (ei.magnitude > ei.magnitude_max){
450 ei.magnitude = ei.magnitude_max;
357451 }
358452
359453 return;
360454 }
361455
362 if (insert_effect == false) {
363 // to keep matching effects together, they are inserted after the most recent matching effect
456 if (insert_effect == false && effect.max_stacks != -1) {
457 // to keep stackable effects together, they are inserted after the most recent matching effect
364458 // otherwise, they are added to the end of the effect list
365459 insert_effect = true;
366460 insert_pos = i;
370464 }
371465 }
372466 // if we're adding an immunity effect, remove all negative effects
373 if (effect_type == Effect::IMMUNITY)
467 if (effect.type == Effect::IMMUNITY)
374468 clearNegativeEffects();
375 else if (effect_type == Effect::IMMUNITY_DAMAGE)
469 else if (effect.type == Effect::IMMUNITY_DAMAGE)
376470 clearNegativeEffects(Effect::IMMUNITY_DAMAGE);
377 else if (effect_type == Effect::IMMUNITY_SLOW)
471 else if (effect.type == Effect::IMMUNITY_SLOW)
378472 clearNegativeEffects(Effect::IMMUNITY_SLOW);
379 else if (effect_type == Effect::IMMUNITY_STUN)
473 else if (effect.type == Effect::IMMUNITY_STUN)
380474 clearNegativeEffects(Effect::IMMUNITY_STUN);
381 else if (effect_type == Effect::IMMUNITY_KNOCKBACK)
475 else if (effect.type == Effect::IMMUNITY_KNOCKBACK)
382476 clearNegativeEffects(Effect::IMMUNITY_KNOCKBACK);
383477 }
384478
387481 e.id = effect.id;
388482 e.name = effect.name;
389483 e.icon = effect.icon;
390 e.type = effect_type;
484 e.type = effect.type;
391485 e.render_above = effect.render_above;
392486 e.group_stack = effect.group_stack;
393 e.color_mod = effect.color_mod;
487 e.color_mod = effect.color_mod.encodeRGBA();
394488 e.alpha_mod = effect.alpha_mod;
395489 e.attack_speed_anim = effect.attack_speed_anim;
396490
397 if (effect.animation != "") {
491 if (!effect.animation.empty()) {
398492 e.loadAnimation(effect.animation);
399493 }
400494
401 e.ticks = e.duration = duration;
495 e.timer.setDuration(duration);
402496 e.magnitude = e.magnitude_max = magnitude;
403497 e.item = item;
404498 e.trigger = trigger;
405499 e.passive_id = passive_id;
406500 e.source_type = source_type;
407501
408 if(insert_effect && effect.max_stacks != -1 && stacks_applied >= effect.max_stacks){
409 //Remove the oldest effect of the type
410 removeEffect(insert_pos-stacks_applied);
411
412 //All elemnts have shiftef to left
413 insert_pos--;
414 }
415
416 if (insert_effect)
502 if (insert_effect) {
503 if (effect.max_stacks != -1 && stacks_applied >= effect.max_stacks){
504 //Remove the oldest effect of the type
505 removeEffect(insert_pos-stacks_applied);
506
507 //All elements have shifted to left
508 insert_pos--;
509 }
510
417511 effect_list.insert(effect_list.begin() + insert_pos, e);
418 else
512 }
513 else {
419514 effect_list.push_back(e);
515 }
420516 }
421517
422518 void EffectManager::removeEffect(size_t id) {
512608 return over_dmg;
513609 }
514610
515 int EffectManager::getType(const std::string& type) {
516 if (type.empty()) return Effect::NONE;
517
518 if (type == "damage") return Effect::DAMAGE;
519 else if (type == "damage_percent") return Effect::DAMAGE_PERCENT;
520 else if (type == "hpot") return Effect::HPOT;
521 else if (type == "hpot_percent") return Effect::HPOT_PERCENT;
522 else if (type == "mpot") return Effect::MPOT;
523 else if (type == "mpot_percent") return Effect::MPOT_PERCENT;
524 else if (type == "speed") return Effect::SPEED;
525 else if (type == "attack_speed") return Effect::ATTACK_SPEED;
526 else if (type == "immunity") return Effect::IMMUNITY;
527 else if (type == "immunity_damage") return Effect::IMMUNITY_DAMAGE;
528 else if (type == "immunity_slow") return Effect::IMMUNITY_SLOW;
529 else if (type == "immunity_stun") return Effect::IMMUNITY_STUN;
530 else if (type == "immunity_hp_steal") return Effect::IMMUNITY_HP_STEAL;
531 else if (type == "immunity_mp_steal") return Effect::IMMUNITY_MP_STEAL;
532 else if (type == "immunity_knockback") return Effect::IMMUNITY_KNOCKBACK;
533 else if (type == "immunity_damage_reflect") return Effect::IMMUNITY_DAMAGE_REFLECT;
534 else if (type == "immunity_stat_debuff") return Effect::IMMUNITY_STAT_DEBUFF;
535 else if (type == "stun") return Effect::STUN;
536 else if (type == "revive") return Effect::REVIVE;
537 else if (type == "convert") return Effect::CONVERT;
538 else if (type == "fear") return Effect::FEAR;
539 else if (type == "death_sentence") return Effect::DEATH_SENTENCE;
540 else if (type == "shield") return Effect::SHIELD;
541 else if (type == "heal") return Effect::HEAL;
542 else if (type == "knockback") return Effect::KNOCKBACK;
543 else {
544 for (int i=0; i<Stats::COUNT; i++) {
545 if (type == Stats::KEY[i]) {
546 return Effect::TYPE_COUNT + i;
547 }
548 }
549
550 for (unsigned i=0; i<eset->damage_types.list.size(); i++) {
551 if (type == eset->damage_types.list[i].min) {
552 return Effect::TYPE_COUNT + Stats::COUNT + (i*2);
553 }
554 else if (type == eset->damage_types.list[i].max) {
555 return Effect::TYPE_COUNT + Stats::COUNT + (i*2) + 1;
556 }
557 }
558
559 for (unsigned i=0; i<bonus_resist.size(); i++) {
560 if (type == eset->elements.list[i].id + "_resist") {
561 return Effect::TYPE_COUNT + Stats::COUNT + static_cast<int>(eset->damage_types.count) + i;
562 }
563 }
564
565 for (unsigned i=0; i<bonus_primary.size(); i++) {
566 if (type == eset->primary_stats.list[i].id) {
567 return Effect::TYPE_COUNT + Stats::COUNT + static_cast<int>(eset->damage_types.count) + static_cast<int>(eset->elements.list.size()) + i;
568 }
569 }
570 }
571
572 Utils::logError("EffectManager: '%s' is not a valid effect type.", type.c_str());
573 return Effect::NONE;
574 }
575
576611 bool EffectManager::isDebuffed() {
577612 for (size_t i=effect_list.size(); i > 0; i--) {
578613 if (effect_list[i-1].type == Effect::DAMAGE) return true;
586621 }
587622
588623 void EffectManager::getCurrentColor(Color& color_mod) {
589 Color default_color = color_mod;
590 Color no_color = Color(255, 255, 255);
591
592 for (size_t i=effect_list.size(); i > 0; i--) {
593 if (effect_list[i-1].color_mod == no_color)
624 uint32_t default_color = color_mod.encodeRGBA();
625 uint32_t no_color = Color(255, 255, 255).encodeRGBA();
626
627 for (size_t i=effect_list.size(); i > 0; i--) {
628 Effect& ei = effect_list[i-1];
629 if (ei.color_mod == no_color)
594630 continue;
595631
596 if (effect_list[i-1].color_mod != default_color) {
597 color_mod = effect_list[i-1].color_mod;
632 if (ei.color_mod != default_color) {
633 color_mod.decodeRGBA(ei.color_mod);
598634 return;
599635 }
600636 }
605641 uint8_t no_alpha = 255;
606642
607643 for (size_t i=effect_list.size(); i > 0; i--) {
608 if (effect_list[i-1].alpha_mod == no_alpha)
644 Effect& ei = effect_list[i-1];
645 if (ei.alpha_mod == no_alpha)
609646 continue;
610647
611 if (effect_list[i-1].alpha_mod != default_alpha) {
612 alpha_mod = effect_list[i-1].alpha_mod;
648 if (ei.alpha_mod != default_alpha) {
649 alpha_mod = ei.alpha_mod;
613650 return;
614651 }
615652 }
643680
644681 return attack_speed;
645682 }
683
684 int EffectManager::getDamageSourceType(int dmg_mode) {
685 if (dmg_mode != Effect::DAMAGE || dmg_mode != Effect::DAMAGE_PERCENT)
686 return -1;
687
688 int source_type = Power::SOURCE_TYPE_NEUTRAL;
689
690 for (size_t i = 0; i < effect_list.size(); ++i) {
691 Effect& ei = effect_list[i];
692 if (ei.type == dmg_mode) {
693 // anything other than ally source type take precedence, so we can return early
694 if (ei.source_type != Power::SOURCE_TYPE_ALLY)
695 return ei.source_type;
696
697 source_type = ei.source_type;
698 }
699 }
700
701 return source_type;
702 }
6969 void loadAnimation(const std::string &s);
7070 void unloadAnimation();
7171
72 static int getTypeFromString(const std::string& _type);
73 static bool typeIsStat(int t);
74 static bool typeIsDmgMin(int t);
75 static bool typeIsDmgMax(int t);
76 static bool typeIsResist(int t);
77 static bool typeIsPrimary(int t);
78 static int getStatFromType(int t);
79 static size_t getDmgFromType(int t);
80 static size_t getResistFromType(int t);
81 static size_t getPrimaryFromType(int t);
82
7283 std::string id;
7384 std::string name;
7485 int icon;
75 int ticks;
76 int duration;
86 Timer timer;
7787 int type;
7888 int magnitude;
7989 int magnitude_max;
8595 size_t passive_id;
8696 int source_type;
8797 bool group_stack;
88 Color color_mod;
98 uint32_t color_mod;
8999 uint8_t alpha_mod;
90100 std::string attack_speed_anim;
91101 };
95105 EffectDef();
96106
97107 std::string id;
98 std::string type;
108 int type;
99109 std::string name;
100110 int icon;
101111 std::string animation;
112122 private:
113123 void removeEffect(size_t id);
114124 void clearStatus();
115 int getType(const std::string& type);
116 void addEffectInternal(EffectDef &effect, int duration, int magnitude, int source_type, bool item, size_t power_id);
125 void addEffectInternal(EffectDef &effect, int duration, int magnitude, int source_type, bool item, PowerID power_id);
117126
118127 public:
119128 EffectManager();
120129 ~EffectManager();
121130 void logic();
122 void addEffect(EffectDef &effect, int duration, int magnitude, int source_type, size_t power_id);
131 void addEffect(EffectDef &effect, int duration, int magnitude, int source_type, PowerID power_id);
123132 void addItemEffect(EffectDef &effect, int duration, int magnitude);
124133 void removeEffectType(const int type);
125134 void removeEffectPassive(size_t id);
134143 void getCurrentAlpha(uint8_t& alpha_mod);
135144 bool hasEffect(const std::string& id, int req_count);
136145 float getAttackSpeed(const std::string& anim_name);
146 int getDamageSourceType(int dmg_mode);
137147
138148 std::vector<Effect> effect_list;
139149
+0
-192
src/Enemy.cpp less more
0 /*
1 Copyright © 2011-2012 Clint Bellanger
2 Copyright © 2012 Stefan Beller
3 Copyright © 2012-2015 Justin Jacobs
4
5 This file is part of FLARE.
6
7 FLARE is free software: you can redistribute it and/or modify it under the terms
8 of the GNU General Public License as published by the Free Software Foundation,
9 either version 3 of the License, or (at your option) any later version.
10
11 FLARE is distributed in the hope that it will be useful, but WITHOUT ANY
12 WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A
13 PARTICULAR PURPOSE. See the GNU General Public License for more details.
14
15 You should have received a copy of the GNU General Public License along with
16 FLARE. If not, see http://www.gnu.org/licenses/
17 */
18
19 #include "Animation.h"
20 #include "Avatar.h"
21 #include "BehaviorAlly.h"
22 #include "BehaviorStandard.h"
23 #include "CampaignManager.h"
24 #include "CommonIncludes.h"
25 #include "Enemy.h"
26 #include "EnemyBehavior.h"
27 #include "LootManager.h"
28 #include "PowerManager.h"
29 #include "RenderDevice.h"
30 #include "Settings.h"
31 #include "SharedGameResources.h"
32 #include "SharedResources.h"
33 #include "UtilsMath.h"
34
35 #include <math.h>
36 #include <cassert>
37
38 Enemy::Enemy() : Entity() {
39
40 stats.cur_state = StatBlock::ENEMY_STANCE;
41 stats.cooldown.reset(Timer::END);
42 stats.in_combat = false;
43 stats.join_combat = false;
44
45 reward_xp = false;
46 instant_power = false;
47 kill_source_type = Power::SOURCE_TYPE_NEUTRAL;
48 eb = NULL;
49 }
50
51 Enemy::Enemy(const Enemy& e)
52 : Entity(e)
53 , type(e.type)
54 , reward_xp(e.reward_xp)
55 , instant_power(e.instant_power)
56 , kill_source_type(e.kill_source_type) {
57 eb = new BehaviorStandard(this); // Putting a 'this' into the init list will make MSVS complain, hence it's in the body of the ctor
58 }
59
60 Enemy& Enemy::operator=(const Enemy& e) {
61 if (this == &e)
62 return *this;
63
64 Entity::operator=(e);
65 type = e.type;
66 reward_xp = e.reward_xp;
67 instant_power = e.instant_power;
68 kill_source_type = e.kill_source_type;
69 eb = new BehaviorStandard(this);
70
71 return *this;
72 }
73
74 /**
75 * The current direction leads to a wall. Try the next best direction, if one is available.
76 */
77 unsigned char Enemy::faceNextBest(float mapx, float mapy) {
78 float dx = static_cast<float>(fabs(mapx - stats.pos.x));
79 float dy = static_cast<float>(fabs(mapy - stats.pos.y));
80 switch (stats.direction) {
81 case 0:
82 if (dy > dx) return 7;
83 else return 1;
84 case 1:
85 if (mapy > stats.pos.y) return 0;
86 else return 2;
87 case 2:
88 if (dx > dy) return 1;
89 else return 3;
90 case 3:
91 if (mapx < stats.pos.x) return 2;
92 else return 4;
93 case 4:
94 if (dy > dx) return 3;
95 else return 5;
96 case 5:
97 if (mapy < stats.pos.y) return 4;
98 else return 6;
99 case 6:
100 if (dx > dy) return 5;
101 else return 7;
102 case 7:
103 if (mapx > stats.pos.x) return 6;
104 else return 0;
105 }
106 return 0;
107 }
108
109 /**
110 * logic()
111 * Handle a single frame. This includes:
112 * - move the enemy based on AI % chances
113 * - calculate the next frame of animation
114 */
115 void Enemy::logic() {
116
117 eb->logic();
118
119 //need to check whether the enemy was converted here
120 //cant do it in behaviour because the behaviour object would be replaced by this
121 if(stats.effects.convert != stats.converted) {
122 delete eb;
123 eb = stats.hero_ally ? new BehaviorStandard(this) : new BehaviorAlly(this);
124 stats.converted = !stats.converted;
125 stats.hero_ally = !stats.hero_ally;
126 if (stats.convert_status != 0) {
127 camp->setStatus(stats.convert_status);
128 }
129 }
130
131 return;
132 }
133
134 /**
135 * Upon enemy death, handle rewards (currency, xp, loot)
136 */
137 void Enemy::doRewards(int source_type) {
138
139 if(stats.hero_ally && !stats.converted)
140 return;
141
142 reward_xp = true;
143 kill_source_type = source_type;
144
145 // some creatures create special loot if we're on a quest
146 if (stats.quest_loot_requires_status != 0) {
147 // the loot manager will check quest_loot_id
148 // if set (not zero), the loot manager will 100% generate that loot.
149 if (!(camp->checkStatus(stats.quest_loot_requires_status) && !camp->checkStatus(stats.quest_loot_requires_not_status))) {
150 stats.quest_loot_id = 0;
151 }
152 }
153
154 // some creatures drop special loot the first time they are defeated
155 // this must be done in conjunction with defeat status
156 if (stats.first_defeat_loot > 0) {
157 if (!camp->checkStatus(stats.defeat_status)) {
158 stats.quest_loot_id = stats.first_defeat_loot;
159 }
160 }
161
162 // defeating some creatures (e.g. bosses) affects the story
163 if (stats.defeat_status != 0) {
164 camp->setStatus(stats.defeat_status);
165 }
166
167 loot->addEnemyLoot(this);
168 }
169
170 /**
171 * getRender()
172 * Map objects need to be drawn in Z order, so we allow a parent object (GameEngine)
173 * to collect all mobile sprites each frame.
174 */
175 Renderable Enemy::getRender() {
176 Renderable r = activeAnimation->getCurrentFrame(stats.direction);
177 r.map_pos.x = stats.pos.x;
178 r.map_pos.y = stats.pos.y;
179 if (stats.hp > 0) {
180 if (stats.hero_ally)
181 r.type = Renderable::TYPE_ALLY;
182 else if (stats.in_combat)
183 r.type = Renderable::TYPE_ENEMY;
184 }
185 return r;
186 }
187
188 Enemy::~Enemy() {
189 delete eb;
190 }
191
+0
-60
src/Enemy.h less more
0 /*
1 Copyright © 2011-2012 Clint Bellanger
2 Copyright © 2012 Stefan Beller
3 Copyright © 2012-2015 Justin Jacobs
4
5 This file is part of FLARE.
6
7 FLARE is free software: you can redistribute it and/or modify it under the terms
8 of the GNU General Public License as published by the Free Software Foundation,
9 either version 3 of the License, or (at your option) any later version.
10
11 FLARE is distributed in the hope that it will be useful, but WITHOUT ANY
12 WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A
13 PARTICULAR PURPOSE. See the GNU General Public License for more details.
14
15 You should have received a copy of the GNU General Public License along with
16 FLARE. If not, see http://www.gnu.org/licenses/
17 */
18
19 /*
20 * class Enemy
21 */
22
23
24 #ifndef ENEMY_H
25 #define ENEMY_H
26
27 #include "CommonIncludes.h"
28 #include "Entity.h"
29 #include "Utils.h"
30
31 class EnemyBehavior;
32
33 class Enemy : public Entity {
34
35 public:
36 Enemy();
37 Enemy(const Enemy& e);
38 Enemy& operator=(const Enemy& e);
39 ~Enemy();
40 void logic();
41 unsigned char faceNextBest(float mapx, float mapy);
42 virtual void doRewards(int source_type);
43
44 std::string type;
45
46 Renderable getRender();
47
48 EnemyBehavior *eb;
49
50 // other flags
51 bool reward_xp;
52 bool instant_power;
53 int kill_source_type;
54
55 };
56
57
58 #endif
59
+0
-38
src/EnemyBehavior.cpp less more
0 /*
1 Copyright © 2012 Clint Bellanger
2
3 This file is part of FLARE.
4
5 FLARE is free software: you can redistribute it and/or modify it under the terms
6 of the GNU General Public License as published by the Free Software Foundation,
7 either version 3 of the License, or (at your option) any later version.
8
9 FLARE is distributed in the hope that it will be useful, but WITHOUT ANY
10 WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A
11 PARTICULAR PURPOSE. See the GNU General Public License for more details.
12
13 You should have received a copy of the GNU General Public License along with
14 FLARE. If not, see http://www.gnu.org/licenses/
15 */
16
17 /**
18 * class EnemyBehavior
19 *
20 * Interface for enemy behaviors.
21 * The behavior object is a component of Enemy.
22 * Make AI decisions (movement, actions) for enemies.
23 */
24
25 #include "EnemyBehavior.h"
26
27 EnemyBehavior::EnemyBehavior(Enemy *_e) {
28 e = _e;
29 }
30
31 void EnemyBehavior::logic() {
32
33 }
34
35 EnemyBehavior::~EnemyBehavior() {
36
37 }
+0
-41
src/EnemyBehavior.h less more
0 /*
1 Copyright © 2012 Clint Bellanger
2
3 This file is part of FLARE.
4
5 FLARE is free software: you can redistribute it and/or modify it under the terms
6 of the GNU General Public License as published by the Free Software Foundation,
7 either version 3 of the License, or (at your option) any later version.
8
9 FLARE is distributed in the hope that it will be useful, but WITHOUT ANY
10 WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A
11 PARTICULAR PURPOSE. See the GNU General Public License for more details.
12
13 You should have received a copy of the GNU General Public License along with
14 FLARE. If not, see http://www.gnu.org/licenses/
15 */
16
17 /**
18 * class EnemyBehavior
19 *
20 * Interface for enemy behaviors.
21 * The behavior object is a component of Enemy.
22 * Make AI decisions (movement, actions) for enemies.
23 */
24
25
26 #ifndef ENEMY_BEHAVIOR_H
27 #define ENEMY_BEHAVIOR_H
28
29 class Enemy;
30
31 class EnemyBehavior {
32 protected:
33 Enemy *e;
34 public:
35 explicit EnemyBehavior(Enemy *_e);
36 virtual ~EnemyBehavior();
37 virtual void logic();
38 };
39
40 #endif
+0
-552
src/EnemyManager.cpp less more
0 /*
1 Copyright © 2011-2012 Clint Bellanger
2 Copyright © 2012 Stefan Beller
3 Copyright © 2013 Henrik Andersson
4 Copyright © 2012-2016 Justin Jacobs
5
6 This file is part of FLARE.
7
8 FLARE is free software: you can redistribute it and/or modify it under the terms
9 of the GNU General Public License as published by the Free Software Foundation,
10 either version 3 of the License, or (at your option) any later version.
11
12 FLARE is distributed in the hope that it will be useful, but WITHOUT ANY
13 WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A
14 PARTICULAR PURPOSE. See the GNU General Public License for more details.
15
16 You should have received a copy of the GNU General Public License along with
17 FLARE. If not, see http://www.gnu.org/licenses/
18 */
19
20 #include "Animation.h"
21 #include "AnimationManager.h"
22 #include "AnimationSet.h"
23 #include "Avatar.h"
24 #include "BehaviorAlly.h"
25 #include "BehaviorStandard.h"
26 #include "CampaignManager.h"
27 #include "Enemy.h"
28 #include "EnemyBehavior.h"
29 #include "EnemyGroupManager.h"
30 #include "EnemyManager.h"
31 #include "EngineSettings.h"
32 #include "EventManager.h"
33 #include "Hazard.h"
34 #include "MapRenderer.h"
35 #include "MenuActionBar.h"
36 #include "PowerManager.h"
37 #include "RenderDevice.h"
38 #include "Settings.h"
39 #include "SharedGameResources.h"
40 #include "SharedResources.h"
41
42 #include <limits>
43
44 EnemyManager::EnemyManager()
45 : enemies()
46 , hero_stealth(0)
47 , player_blocked(false)
48 , player_blocked_timer(settings->max_frames_per_sec / 6) {
49 handleNewMap();
50 }
51
52 void EnemyManager::loadAnimations(Enemy *e) {
53 anim->increaseCount(e->stats.animations);
54 e->animationSet = anim->getAnimationSet(e->stats.animations);
55 e->activeAnimation = e->animationSet->getAnimation("");
56 }
57
58 Enemy *EnemyManager::getEnemyPrototype(const std::string& type_id) {
59 Enemy* e = new Enemy(prototypes.at(loadEnemyPrototype(type_id)));
60 anim->increaseCount(e->stats.animations);
61 return e;
62 }
63
64 size_t EnemyManager::loadEnemyPrototype(const std::string& type_id) {
65 for (size_t i = 0; i < prototypes.size(); i++) {
66 if (prototypes[i].type == type_id) {
67 return i;
68 }
69 }
70
71 Enemy e = Enemy();
72
73 e.eb = new BehaviorStandard(&e);
74 e.stats.load(type_id);
75 e.type = type_id;
76
77 if (e.stats.animations == "")
78 Utils::logError("EnemyManager: No animation file specified for entity: %s", type_id.c_str());
79
80 loadAnimations(&e);
81 e.loadSounds();
82
83 // set cooldown_hit to duration of hit animation if undefined
84 if (!e.stats.cooldown_hit_enabled) {
85 Animation *hit_anim = e.animationSet->getAnimation("hit");
86 if (hit_anim) {
87 e.stats.cooldown_hit.setDuration(hit_anim->getDuration());
88 delete hit_anim;
89 }
90 else {
91 e.stats.cooldown_hit.setDuration(0);
92 }
93 }
94
95 prototypes.push_back(e);
96 size_t prototype = prototypes.size() - 1;
97
98 for (size_t i = 0; i < e.stats.powers_ai.size(); i++) {
99 int power_index = e.stats.powers_ai[i].id;
100 const std::string& spawn_type = powers->powers[power_index].spawn_type;
101 if (power_index != 0 && spawn_type != "" && spawn_type != "untransform") {
102 std::vector<Enemy_Level> spawn_enemies = enemyg->getEnemiesInCategory(spawn_type);
103 for (size_t j = 0; j < spawn_enemies.size(); j++) {
104 loadEnemyPrototype(spawn_enemies[j].type);
105 }
106 }
107 }
108
109 return prototype;
110 }
111
112 /**
113 * When loading a new map, we eliminate existing enemies and load the new ones.
114 * The map will have loaded Entity blocks into an array; retrieve the Enemies and init them
115 */
116 void EnemyManager::handleNewMap () {
117
118 Map_Enemy me;
119 std::queue<Enemy *> allies;
120
121 // delete existing enemies
122 for (unsigned int i=0; i < enemies.size(); i++) {
123 anim->decreaseCount(enemies[i]->animationSet->getName());
124 if(enemies[i]->stats.hero_ally && !enemies[i]->stats.corpse && enemies[i]->stats.cur_state != StatBlock::ENEMY_DEAD && enemies[i]->stats.cur_state != StatBlock::ENEMY_CRITDEAD && enemies[i]->stats.speed > 0.0f)
125 allies.push(enemies[i]);
126 else {
127 enemies[i]->unloadSounds();
128 delete enemies[i];
129 }
130 }
131 enemies.clear();
132
133
134 for (unsigned int i=0; i < prototypes.size(); i++) {
135 anim->decreaseCount(prototypes[i].animationSet->getName());
136 prototypes[i].unloadSounds();
137 }
138 prototypes.clear();
139
140 // load new enemies
141 while (!mapr->enemies.empty()) {
142 me = mapr->enemies.front();
143 mapr->enemies.pop();
144
145 if (me.type.empty()) {
146 Utils::logError("EnemyManager: Enemy(%f, %f) doesn't have type attribute set, skipping", me.pos.x, me.pos.y);
147 continue;
148 }
149
150
151 bool status_reqs_met = true;
152 //if the status requirements arent met, dont load the enemy
153 for(unsigned int i = 0; i < me.requires_status.size(); i++) {
154 if (!camp->checkStatus(me.requires_status[i]))
155 status_reqs_met = false;
156 }
157 for(unsigned int i = 0; i < me.requires_not_status.size(); i++) {
158 if (camp->checkStatus(me.requires_not_status[i]))
159 status_reqs_met = false;
160 }
161 if(!status_reqs_met)
162 continue;
163
164
165 Enemy *e = getEnemyPrototype(me.type);
166
167 e->stats.waypoints = me.waypoints;
168 e->stats.pos.x = me.pos.x;
169 e->stats.pos.y = me.pos.y;
170 e->stats.direction = static_cast<unsigned char>(me.direction);
171 e->stats.wander = me.wander_radius > 0;
172 e->stats.setWanderArea(me.wander_radius);
173 e->stats.invincible_requires_status = me.invincible_requires_status;
174 e->stats.invincible_requires_not_status = me.invincible_requires_not_status;
175
176 enemies.push_back(e);
177
178 mapr->collider.block(me.pos.x, me.pos.y, !MapCollision::IS_ALLY);
179 }
180
181 FPoint spawn_pos = mapr->collider.getRandomNeighbor(Point(pc->stats.pos), 1, !MapCollision::IGNORE_BLOCKED);
182 while (!allies.empty()) {
183
184 Enemy *e = allies.front();
185 allies.pop();
186
187 //dont need the result of this. its only called to handle animation and sound
188 Enemy* temp = getEnemyPrototype(e->type);
189 delete temp;
190
191 e->stats.pos = spawn_pos;
192 e->stats.direction = pc->stats.direction;
193
194 enemies.push_back(e);
195
196 mapr->collider.block(e->stats.pos.x, e->stats.pos.y, MapCollision::IS_ALLY);
197 }
198
199 // load enemies that can be spawn by avatar's powers
200 for (size_t i = 0; i < pc->stats.powers_list.size(); i++) {
201 int power_index = pc->stats.powers_list[i];
202 const std::string& spawn_type = powers->powers[power_index].spawn_type;
203 if (spawn_type != "" && spawn_type != "untransform") {
204 std::vector<Enemy_Level> spawn_enemies = enemyg->getEnemiesInCategory(spawn_type);
205 for (size_t j = 0; j < spawn_enemies.size(); j++) {
206 loadEnemyPrototype(spawn_enemies[j].type);
207 }
208 }
209 }
210
211 // load enemies that can be spawn by powers in the action bar
212 if (menu_act != NULL) {
213 for (size_t i = 0; i < menu_act->hotkeys.size(); i++) {
214 int power_index = menu_act->hotkeys[i];
215 const std::string& spawn_type = powers->powers[power_index].spawn_type;
216 if (power_index != 0 && spawn_type != "" && spawn_type != "untransform") {
217 std::vector<Enemy_Level> spawn_enemies = enemyg->getEnemiesInCategory(spawn_type);
218 for (size_t j = 0; j < spawn_enemies.size(); j++) {
219 loadEnemyPrototype(spawn_enemies[j].type);
220 }
221 }
222 }
223 }
224
225 // load enemies that can be spawn by map events
226 for (size_t i = 0; i < mapr->events.size(); i++) {
227 for (size_t j = 0; j < mapr->events[i].components.size(); j++) {
228 if (mapr->events[i].components[j].type == EventComponent::SPAWN) {
229 std::vector<Enemy_Level> spawn_enemies = enemyg->getEnemiesInCategory(mapr->events[i].components[j].s);
230 for (size_t k = 0; k < spawn_enemies.size(); k++) {
231 loadEnemyPrototype(spawn_enemies[k].type);
232 }
233 }
234 }
235 }
236
237 anim->cleanUp();
238 }
239
240 /**
241 * Powers can cause new enemies to spawn
242 * Check PowerManager for any new queued enemies
243 */
244 void EnemyManager::handleSpawn() {
245
246 Map_Enemy espawn;
247
248 while (!powers->map_enemies.empty()) {
249 espawn = powers->map_enemies.front();
250 powers->map_enemies.pop();
251
252 mapr->collider.unblock(espawn.pos.x, espawn.pos.y);
253
254 Enemy *e = new Enemy();
255 // factory
256 if(espawn.hero_ally)
257 e->eb = new BehaviorAlly(e);
258 else
259 e->eb = new BehaviorStandard(e);
260
261 e->stats.hero_ally = espawn.hero_ally;
262 e->stats.enemy_ally = espawn.enemy_ally;
263 e->stats.summoned = true;
264 e->stats.summoned_power_index = espawn.summon_power_index;
265
266 if(espawn.summoner != NULL) {
267 e->stats.summoner = espawn.summoner;
268 espawn.summoner->summons.push_back(&(e->stats));
269 }
270
271 e->stats.direction = static_cast<unsigned char>(espawn.direction);
272
273 Enemy_Level el = enemyg->getRandomEnemy(espawn.type, 0, 0);
274 e->type = el.type;
275
276 if (el.type != "") {
277 e->stats.load(el.type);
278 }
279 else {
280 Utils::logError("EnemyManager: Could not spawn creature type '%s'", espawn.type.c_str());
281 delete e;
282 return;
283 }
284
285 if (e->stats.animations != "") {
286 // load the animation file if specified
287 anim->increaseCount(e->stats.animations);
288 e->animationSet = anim->getAnimationSet(e->stats.animations);
289 if (e->animationSet)
290 e->activeAnimation = e->animationSet->getAnimation("");
291 else
292 Utils::logError("EnemyManager: Animations file could not be loaded for %s", espawn.type.c_str());
293 }
294 else {
295 Utils::logError("EnemyManager: No animation file specified for entity: %s", espawn.type.c_str());
296 }
297 e->loadSounds();
298
299 //Set level
300 if(e->stats.summoned_power_index != 0) {
301 if(powers->powers[e->stats.summoned_power_index].spawn_level_mode == Power::SPAWN_LEVEL_MODE_FIXED)
302 e->stats.level = powers->powers[e->stats.summoned_power_index].spawn_level_qty;
303
304 if(powers->powers[e->stats.summoned_power_index].spawn_level_mode == Power::SPAWN_LEVEL_MODE_LEVEL) {
305 if(e->stats.summoner != NULL && powers->powers[e->stats.summoned_power_index].spawn_level_every != 0) {
306 e->stats.level = powers->powers[e->stats.summoned_power_index].spawn_level_qty
307 * (e->stats.summoner->level / powers->powers[e->stats.summoned_power_index].spawn_level_every);
308 }
309 }
310
311 if(powers->powers[e->stats.summoned_power_index].spawn_level_mode == Power::SPAWN_LEVEL_MODE_STAT) {
312 if(e->stats.summoner != NULL && powers->powers[e->stats.summoned_power_index].spawn_level_every != 0) {
313 int stat_val = 0;
314 for (size_t i = 0; i < eset->primary_stats.list.size(); ++i) {
315 if (powers->powers[e->stats.summoned_power_index].spawn_level_stat == i) {
316 stat_val = e->stats.summoner->get_primary(i);
317 break;
318 }
319 }
320
321 e->stats.level = powers->powers[e->stats.summoned_power_index].spawn_level_qty
322 * (stat_val / powers->powers[e->stats.summoned_power_index].spawn_level_every);
323 }
324 }
325
326 // apply Effects and set HP to max HP
327 e->stats.recalc();
328 }
329
330 if (mapr->collider.isValidPosition(espawn.pos.x, espawn.pos.y, e->stats.movement_type, MapCollision::COLLIDE_NORMAL) || !e->stats.hero_ally) {
331 e->stats.pos.x = espawn.pos.x;
332 e->stats.pos.y = espawn.pos.y;
333 }
334 else {
335 e->stats.pos.x = pc->stats.pos.x;
336 e->stats.pos.y = pc->stats.pos.y;
337 }
338
339 // special animation state for spawning enemies
340 e->stats.cur_state = StatBlock::ENEMY_SPAWN;
341
342 //now apply post effects to the spawned enemy
343 if(e->stats.summoned_power_index > 0)
344 powers->effect(&e->stats, (espawn.summoner != NULL ? espawn.summoner : &e->stats), e->stats.summoned_power_index, e->stats.hero_ally ? Power::SOURCE_TYPE_HERO : Power::SOURCE_TYPE_ENEMY);
345
346 //apply party passives
347 //synchronise tha party passives in the pc stat block with the passives in the allies stat blocks
348 //at the time the summon is spawned, it takes the passives available at that time. if the passives change later, the changes wont affect summons retrospectively. could be exploited with equipment switching
349 for (unsigned i=0; i< pc->stats.powers_passive.size(); i++) {
350 int pwr = pc->stats.powers_passive[i];
351 if (powers->powers[pwr].passive && powers->powers[pwr].buff_party && (e->stats.hero_ally || e->stats.enemy_ally)
352 && (powers->powers[pwr].buff_party_power_id == 0 || powers->powers[pwr].buff_party_power_id == e->stats.summoned_power_index)) {
353
354 e->stats.powers_passive.push_back(pwr);
355 }
356 }
357
358 for (unsigned i=0; i<pc->stats.powers_list_items.size(); i++) {
359 int pwr = pc->stats.powers_list_items[i];
360 if (powers->powers[pwr].passive && powers->powers[pwr].buff_party && (e->stats.hero_ally || e->stats.enemy_ally)
361 && (powers->powers[pwr].buff_party_power_id == 0 || powers->powers[pwr].buff_party_power_id == e->stats.summoned_power_index)) {
362
363 e->stats.powers_passive.push_back(pwr);
364 }
365 }
366
367 enemies.push_back(e);
368
369 mapr->collider.block(e->stats.pos.x, e->stats.pos.y, e->stats.hero_ally);
370 }
371 }
372
373 bool EnemyManager::checkPartyMembers() {
374 for (unsigned int i=0; i < enemies.size(); i++) {
375 if(enemies[i]->stats.hero_ally && enemies[i]->stats.hp > 0) {
376 return true;
377 }
378 }
379 return false;
380 }
381
382 /**
383 * perform logic() for all enemies
384 */
385 void EnemyManager::logic() {
386
387 if (player_blocked) {
388 player_blocked_timer.tick();
389 if (player_blocked_timer.isEnd())
390 player_blocked = false;
391 }
392
393 handleSpawn();
394
395 std::vector<Enemy*>::iterator it;
396 for (it = enemies.begin(); it != enemies.end(); ++it) {
397 // new actions this round
398 (*it)->stats.hero_stealth = hero_stealth;
399 (*it)->logic();
400 }
401 }
402
403 Enemy* EnemyManager::enemyFocus(const Point& mouse, const FPoint& cam, bool alive_only) {
404 Point p;
405 Rect r;
406 for(unsigned int i = 0; i < enemies.size(); i++) {
407 if(alive_only && (enemies[i]->stats.cur_state == StatBlock::ENEMY_DEAD || enemies[i]->stats.cur_state == StatBlock::ENEMY_CRITDEAD)) {
408 continue;
409 }
410 p = Utils::mapToScreen(enemies[i]->stats.pos.x, enemies[i]->stats.pos.y, cam.x, cam.y);
411
412 Renderable ren = enemies[i]->getRender();
413 r.w = ren.src.w;
414 r.h = ren.src.h;
415 r.x = p.x - ren.offset.x;
416 r.y = p.y - ren.offset.y;
417
418 if (Utils::isWithinRect(r, mouse)) {
419 Enemy *enemy = enemies[i];
420 return enemy;
421 }
422 }
423 return NULL;
424 }
425
426 Enemy* EnemyManager::getNearestEnemy(const FPoint& pos, bool get_corpse, float *saved_distance, float max_range) {
427 Enemy* nearest = NULL;
428 float best_distance = std::numeric_limits<float>::max();
429
430 for (unsigned i=0; i<enemies.size(); i++) {
431 if(!get_corpse && (enemies[i]->stats.cur_state == StatBlock::ENEMY_DEAD || enemies[i]->stats.cur_state == StatBlock::ENEMY_CRITDEAD)) {
432 continue;
433 }
434 if (get_corpse && !enemies[i]->stats.corpse) {
435 continue;
436 }
437
438 float distance = Utils::calcDist(pos, enemies[i]->stats.pos);
439 if (distance < best_distance) {
440 best_distance = distance;
441 nearest = enemies[i];
442 }
443 }
444
445 if (nearest && saved_distance)
446 *saved_distance = best_distance;
447
448 if (!saved_distance && best_distance > max_range)
449 nearest = NULL;
450
451 return nearest;
452 }
453
454 /**
455 * If an enemy has died, reward the hero with experience points
456 */
457 void EnemyManager::checkEnemiesforXP() {
458 for (unsigned int i=0; i < enemies.size(); i++) {
459 if (enemies[i]->reward_xp) {
460 //adjust for party exp if necessary
461 float xp_multiplier = 1;
462 if(enemies[i]->kill_source_type == Power::SOURCE_TYPE_ALLY)
463 xp_multiplier = static_cast<float>(eset->misc.party_exp_percentage) / 100.0f;
464
465 camp->rewardXP(static_cast<int>((static_cast<float>(enemies[i]->stats.xp) * xp_multiplier)), !CampaignManager::XP_SHOW_MSG);
466 enemies[i]->reward_xp = false; // clear flag
467 }
468 }
469 }
470
471 bool EnemyManager::isCleared() {
472 if (enemies.empty()) return true;
473
474 for (unsigned int i=0; i < enemies.size(); i++) {
475 if (enemies[i]->stats.alive && !enemies[i]->stats.hero_ally)
476 return false;
477 }
478
479 return true;
480 }
481
482 void EnemyManager::spawn(const std::string& enemy_type, const Point& target) {
483 Map_Enemy espawn;
484
485 espawn.type = enemy_type;
486 espawn.pos = FPoint(target);
487 espawn.pos.x += 0.5f;
488 espawn.pos.y += 0.5f;
489
490 // quick spawns start facing a random direction
491 espawn.direction = rand() % 8;
492
493 if (!mapr->collider.isEmpty(espawn.pos.x, espawn.pos.y)) {
494 return;
495 }
496 else {
497 mapr->collider.block(espawn.pos.x, espawn.pos.y, !MapCollision::IS_ALLY);
498 }
499
500 powers->map_enemies.push(espawn);
501 }
502
503 /**
504 * addRenders()
505 * Map objects need to be drawn in Z order, so we allow a parent object (GameEngine)
506 * to collect all mobile sprites each frame.
507 */
508 void EnemyManager::addRenders(std::vector<Renderable> &r, std::vector<Renderable> &r_dead) {
509 std::vector<Enemy*>::iterator it;
510 for (it = enemies.begin(); it != enemies.end(); ++it) {
511 bool dead = (*it)->stats.corpse;
512 if (!dead || !(*it)->stats.corpse_timer.isEnd()) {
513 Renderable re = (*it)->getRender();
514 re.prio = 1;
515 (*it)->stats.effects.getCurrentColor(re.color_mod);
516 (*it)->stats.effects.getCurrentAlpha(re.alpha_mod);
517
518 // fade out corpses
519 unsigned fade_time = (eset->misc.corpse_timeout > settings->max_frames_per_sec) ? settings->max_frames_per_sec : eset->misc.corpse_timeout;
520 if (dead && fade_time != 0 && (*it)->stats.corpse_timer.getCurrent() <= fade_time) {
521 re.alpha_mod = static_cast<uint8_t>(static_cast<float>((*it)->stats.corpse_timer.getCurrent()) * (re.alpha_mod / static_cast<float>(fade_time)));
522 }
523
524 // draw corpses below objects so that floor loot is more visible
525 (dead ? r_dead : r).push_back(re);
526
527 // add effects
528 for (unsigned i = 0; i < (*it)->stats.effects.effect_list.size(); ++i) {
529 if ((*it)->stats.effects.effect_list[i].animation) {
530 Renderable ren = (*it)->stats.effects.effect_list[i].animation->getCurrentFrame(0);
531 ren.map_pos = (*it)->stats.pos;
532 if ((*it)->stats.effects.effect_list[i].render_above) ren.prio = 2;
533 else ren.prio = 0;
534 r.push_back(ren);
535 }
536 }
537 }
538 }
539 }
540
541 EnemyManager::~EnemyManager() {
542 for (unsigned int i=0; i < enemies.size(); i++) {
543 anim->decreaseCount(enemies[i]->animationSet->getName());
544 enemies[i]->unloadSounds();
545 delete enemies[i];
546 }
547 for (unsigned int i=0; i < prototypes.size(); i++) {
548 anim->decreaseCount(prototypes[i].animationSet->getName());
549 prototypes[i].unloadSounds();
550 }
551 }
+0
-77
src/EnemyManager.h less more
0 /*
1 Copyright © 2011-2012 Clint Bellanger
2 Copyright © 2012 Stefan Beller
3 Copyright © 2013 Henrik Andersson
4 Copyright © 2012-2016 Justin Jacobs
5
6 This file is part of FLARE.
7
8 FLARE is free software: you can redistribute it and/or modify it under the terms
9 of the GNU General Public License as published by the Free Software Foundation,
10 either version 3 of the License, or (at your option) any later version.
11
12 FLARE is distributed in the hope that it will be useful, but WITHOUT ANY
13 WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A
14 PARTICULAR PURPOSE. See the GNU General Public License for more details.
15
16 You should have received a copy of the GNU General Public License along with
17 FLARE. If not, see http://www.gnu.org/licenses/
18 */
19
20 /*
21 * class EnemyManager
22 */
23
24
25 #ifndef ENEMY_MANAGER_H
26 #define ENEMY_MANAGER_H
27
28 #include "CommonIncludes.h"
29 #include "Utils.h"
30
31 class Animation;
32 class Enemy;
33
34 class EnemyManager {
35 private:
36
37 void loadAnimations(Enemy *e);
38
39 std::vector<std::string> anim_prefixes;
40 std::vector<std::vector<Animation*> > anim_entities;
41
42 /**
43 * callee is responsible for deleting returned enemy object
44 */
45 Enemy *getEnemyPrototype(const std::string& type_id);
46 size_t loadEnemyPrototype(const std::string& type_id);
47
48 std::vector<Enemy> prototypes;
49
50 public:
51 EnemyManager();
52 ~EnemyManager();
53 void handleNewMap();
54 void handleSpawn();
55 bool checkPartyMembers();
56 void logic();
57 void addRenders(std::vector<Renderable> &r, std::vector<Renderable> &r_dead);
58 void checkEnemiesforXP();
59 bool isCleared();
60 void spawn(const std::string& enemy_type, const Point& target);
61 Enemy *enemyFocus(const Point& mouse, const FPoint& cam, bool alive_only);
62 Enemy* getNearestEnemy(const FPoint& pos, bool get_corpse, float *saved_distance, float max_range);
63
64 // vars
65 std::vector<Enemy*> enemies;
66 int hero_stealth;
67
68 bool player_blocked;
69 Timer player_blocked_timer;
70
71 static const bool GET_CORPSE = true;
72 static const bool IS_ALIVE = true;
73 };
74
75
76 #endif
2020
2121 #include "EngineSettings.h"
2222 #include "FileParser.h"
23 #include "FontEngine.h"
2324 #include "MenuActionBar.h"
2425 #include "MessageEngine.h"
2526 #include "ModManager.h"
6465 save_onload = true;
6566 save_onexit = true;
6667 save_pos_onexit = false;
68 save_oncutscene = true;
69 save_onstash = SAVE_ONSTASH_ALL;
70 save_anywhere = false;
6771 camera_speed = 10.f;
6872 save_buyback = true;
6973 keep_buyback_on_map_change = true;
7074 sfx_unable_to_cast = "";
75 combat_aborts_npc_interact = true;
7176
7277 FileParser infile;
7378 // @CLASS EngineSettings: Misc|Description of engine/misc.txt
7883 save_hpmp = Parse::toBool(infile.val);
7984 // @ATTR corpse_timeout|duration|Duration that a corpse can exist on the map in 'ms' or 's'.
8085 else if (infile.key == "corpse_timeout")
81 corpse_timeout = Parse::toDirection(infile.val);
86 corpse_timeout = Parse::toDuration(infile.val);
8287 // @ATTR sell_without_vendor|bool|Allows selling items when not at a vendor via CTRL-Click.
8388 else if (infile.key == "sell_without_vendor")
8489 sell_without_vendor = Parse::toBool(infile.val);
105110 enable_ally_collision_ai = Parse::toBool(infile.val);
106111 else if (infile.key == "currency_id") {
107112 // @ATTR currency_id|item_id|An item id that will be used as currency.
108 currency_id = Parse::toInt(infile.val);
113 currency_id = Parse::toItemID(infile.val);
109114 if (currency_id < 1) {
110115 currency_id = 1;
111116 Utils::logError("EngineSettings: Currency ID below the minimum allowed value. Resetting it to %d", currency_id);
126131 // @ATTR save_pos_onexit|bool|If the game gets saved on exiting, store the player's current position instead of the map spawn position.
127132 else if (infile.key == "save_pos_onexit")
128133 save_pos_onexit = Parse::toBool(infile.val);
134 // @ATTR save_oncutscene|bool|Saves the game when triggering any cutscene via an Event.
135 else if (infile.key == "save_oncutscene")
136 save_oncutscene = Parse::toBool(infile.val);
137 // @ATTR save_onstash|[bool, "private", "shared"]|Saves the game when changing the contents of a stash. The default is true (i.e. save when using both stash types). Use caution with the values "private" and false, since not saving shared stashes exposes an item duplication exploit.
138 else if (infile.key == "save_onstash") {
139 if (infile.val == "private")
140 save_onstash = SAVE_ONSTASH_PRIVATE;
141 else if (infile.val == "shared")
142 save_onstash = SAVE_ONSTASH_SHARED;
143 else {
144 if (Parse::toBool(infile.val))
145 save_onstash = SAVE_ONSTASH_ALL;
146 else
147 save_onstash = SAVE_ONSTASH_NONE;
148 }
149 }
150 // @ATTR save_anywhere|bool|Saves the game when using a button.
151 else if (infile.key == "save_anywhere")
152 save_anywhere = Parse::toBool(infile.val);
129153 // @ATTR camera_speed|float|Modifies how fast the camera moves to recenter on the player. Larger values mean a slower camera. Default value is 10.
130154 else if (infile.key == "camera_speed") {
131155 camera_speed = Parse::toFloat(infile.val);
141165 // @ATTR sfx_unable_to_cast|filename|Sound to play when the player lacks the MP to cast a power.
142166 else if (infile.key == "sfx_unable_to_cast")
143167 sfx_unable_to_cast = infile.val;
168 // @ATTR combat_aborts_npc_interact|bool|If true, the NPC dialog and vendor menus will be closed if the player is attacked.
169 else if (infile.key == "combat_aborts_npc_interact")
170 combat_aborts_npc_interact = Parse::toBool(infile.val);
144171
145172 else infile.error("EngineSettings: '%s' is not a valid key.", infile.key.c_str());
146173 }
195222 virtual_heights.clear();
196223 std::string v_height = Parse::popFirstString(infile.val);
197224 while (!v_height.empty()) {
198 virtual_heights.push_back(static_cast<unsigned short>(Parse::toInt(v_height)));
225 unsigned short test_v_height = static_cast<unsigned short>(Parse::toInt(v_height));
226 if (test_v_height <= 0) {
227 Utils::logError("EngineSettings: virtual_height must be greater than zero.");
228 }
229 else {
230 virtual_heights.push_back(static_cast<unsigned short>(Parse::toInt(v_height)));
231 }
199232 v_height = Parse::popFirstString(infile.val);
200233 }
201234
223256 // prevent the window from being too small
224257 if (settings->screen_w < min_screen_w) settings->screen_w = min_screen_w;
225258 if (settings->screen_h < min_screen_h) settings->screen_h = min_screen_h;
226
227 // set the default virtual height if it's not defined
228 if (settings->view_h == 0) {
229 Utils::logError("EngineSettings: virtual_height is undefined. Setting it to %d.", min_screen_h);
230 virtual_heights.push_back(min_screen_h);
231 settings->view_h = min_screen_h;
232 settings->view_h_half = settings->view_h / 2;
233 }
234259
235260 // icon size can not be zero, so we set a default of 32x32, which is fantasycore's icon size
236261 if (icon_size == 0) {
279304 if (infile.open("engine/combat.txt", FileParser::MOD_FILE, FileParser::ERROR_NORMAL)) {
280305 while (infile.next()) {
281306 if (infile.key == "absorb_percent") {
282 // @ATTR absorb_percent|int, int : Minimum, Maximum|Limits the percentage of damage that can be absorbed.
307 // @ATTR absorb_percent|int, int : Minimum, Maximum|Limits the percentage of damage that can be absorbed. A max value less than 100 will ensure that the target always takes at least 1 damage from non-elemental attacks.
283308 min_absorb = Parse::popFirstInt(infile.val);
284309 max_absorb = Parse::popFirstInt(infile.val);
285310 max_absorb = std::max(max_absorb, min_absorb);
286311 }
287312 else if (infile.key == "resist_percent") {
288 // @ATTR resist_percent|int, int : Minimum, Maximum|Limits the percentage of damage that can be resisted.
313 // @ATTR resist_percent|int, int : Minimum, Maximum|Limits the percentage of damage that can be resisted. A max value less than 100 will ensure that the target always takes at least 1 damage from elemental attacks.
289314 min_resist = Parse::popFirstInt(infile.val);
290315 max_resist = Parse::popFirstInt(infile.val);
291316 max_resist = std::max(max_resist, min_resist);
292317 }
293318 else if (infile.key == "block_percent") {
294 // @ATTR block_percent|int, int : Minimum, Maximum|Limits the percentage of damage that can be blocked.
319 // @ATTR block_percent|int, int : Minimum, Maximum|Limits the percentage of damage that can be absorbed when the target is in the 'block' animation state. A max value less than 100 will ensure that the target always takes at least 1 damage from non-elemental attacks.
295320 min_block = Parse::popFirstInt(infile.val);
296321 max_block = Parse::popFirstInt(infile.val);
297322 max_block = std::max(max_block, min_block);
454479 , equipment("")
455480 , carried("")
456481 , primary((eset ? eset->primary_stats.list.size() : 0), 0)
457 , hotkeys(std::vector<int>(MenuActionBar::SLOT_MAX, 0))
482 , hotkeys(std::vector<PowerID>(MenuActionBar::SLOT_MAX, 0))
458483 , power_tree("")
459484 , default_power_tab(-1)
460485 {
508533 else if (infile.key == "actionbar") {
509534 // @ATTR actionbar|list(power_id)|A list of powers to place in the action bar for the class.
510535 for (int i=0; i<12; i++) {
511 list.back().hotkeys[i] = Parse::popFirstInt(infile.val);
536 list.back().hotkeys[i] = Parse::toPowerID(Parse::popFirstString(infile.val));
512537 }
513538 }
514539 else if (infile.key == "powers") {
515540 // @ATTR powers|list(power_id)|A list of powers that are unlocked when starting this class.
516541 std::string power;
517542 while ( (power = Parse::popFirstString(infile.val)) != "") {
518 list.back().powers.push_back(Parse::toInt(power));
543 list.back().powers.push_back(Parse::toPowerID(power));
519544 }
520545 }
521546 else if (infile.key == "campaign") {
826851 // reset to defaults
827852 selection_rect_color = Color(255, 248, 220, 255);
828853 colorblind_highlight_offset = Point(2, 2);
854
829855 tab_padding = Point(8, 0);
856
830857 slot_quantity_label = LabelInfo();
858 slot_quantity_color = font->getColor(FontEngine::COLOR_WIDGET_NORMAL);
831859 slot_quantity_bg_color = Color(0, 0, 0, 0);
860 slot_hotkey_label = LabelInfo();
861 slot_hotkey_color = font->getColor(FontEngine::COLOR_WIDGET_NORMAL);
862 slot_hotkey_label.hidden = true;
863 slot_hotkey_bg_color = Color(0, 0, 0, 0);
864
832865 listbox_text_margin = Point(8, 8);
866
867 horizontal_list_text_width = 150;
833868
834869 FileParser infile;
835870 // @CLASS EngineSettings: Widgets|Description of engine/widget_settings.txt
856891 // @ATTR slot.quantity_label|label|Setting for the slot quantity text.
857892 slot_quantity_label = Parse::popLabelInfo(infile.val);
858893 }
894 else if (infile.key == "quantity_color") {
895 // @ATTR slot.quantity_color|color|Text color for the slot quantity text.
896 slot_quantity_color = Parse::toRGB(infile.val);
897 }
859898 else if (infile.key == "quantity_bg_color") {
860899 // @ATTR slot.quantity_bg_color|color, int : Color, Alpha|If a slot has a quantity, a rectangle filled with this color will be placed beneath the text.
861900 slot_quantity_bg_color = Parse::toRGBA(infile.val);
901 }
902 else if (infile.key == "hotkey_label") {
903 // @ATTR slot.hotkey_label|label|Setting for the slot hotkey text.
904 slot_hotkey_label = Parse::popLabelInfo(infile.val);
905 }
906 else if (infile.key == "hotkey_color") {
907 // @ATTR slot.hotkey_color|color|Text color for the slot hotkey text.
908 slot_hotkey_color = Parse::toRGB(infile.val);
909 }
910 else if (infile.key == "hotkey_bg_color") {
911 // @ATTR slot.hotkey_bg_color|color, int : Color, Alpha|If a slot has a hotkey, a rectangle filled with this color will be placed beneath the text.
912 slot_hotkey_bg_color = Parse::toRGBA(infile.val);
862913 }
863914 }
864915 else if (infile.section == "listbox") {
865916 if (infile.key == "text_margin") {
866917 // @ATTR listbox.text_margin|int, int : Left margin, Right margin|The pixel margin to leave on the left and right sides of listbox element text.
867918 listbox_text_margin = Parse::toPoint(infile.val);
919 }
920 }
921 else if (infile.section == "horizontal_list") {
922 if (infile.key == "text_width") {
923 // @ATTR horizontal_list.text_width|int|The pixel width of the text area that displays the currently selected item. Default is 150 pixels;
924 horizontal_list_text_width = Parse::toInt(infile.val);
868925 }
869926 }
870927 }
899956 }
900957
901958 unsigned long EngineSettings::XPTable::getLevelXP(int level) {
902 if (level <= 1)
959 if (level <= 1 || xp_table.empty())
903960 return 0;
904961 else if (level > static_cast<int>(xp_table.size()))
905962 return xp_table.back();
3232 class Misc {
3333 public:
3434 void load();
35
36 enum {
37 SAVE_ONSTASH_NONE = 0,
38 SAVE_ONSTASH_PRIVATE = 1,
39 SAVE_ONSTASH_SHARED = 2,
40 SAVE_ONSTASH_ALL = 3,
41 };
3542
3643 bool save_hpmp;
3744 int corpse_timeout;
4350 int party_exp_percentage;
4451 bool enable_ally_collision;
4552 bool enable_ally_collision_ai;
46 int currency_id;
53 ItemID currency_id;
4754 float interact_range;
4855 bool menus_pause;
4956 bool save_onload;
5057 bool save_onexit;
5158 bool save_pos_onexit;
59 bool save_oncutscene;
60 int save_onstash;
61 bool save_anywhere;
5262 float camera_speed;
5363 bool save_buyback;
5464 bool keep_buyback_on_map_change;
5565 std::string sfx_unable_to_cast;
66 bool combat_aborts_npc_interact;
5667 };
5768
5869 class Resolutions {
148159 std::string equipment;
149160 std::string carried;
150161 std::vector<int> primary;
151 std::vector<int> hotkeys;
152 std::vector<int> powers;
162 std::vector<PowerID> hotkeys;
163 std::vector<PowerID> powers;
153164 std::vector<std::string> statuses;
154165 std::string power_tree;
155166 int default_power_tab;
246257 Point colorblind_highlight_offset;
247258 Point tab_padding;
248259 LabelInfo slot_quantity_label;
260 Color slot_quantity_color;
249261 Color slot_quantity_bg_color;
262 LabelInfo slot_hotkey_label;
263 Color slot_hotkey_color;
264 Color slot_hotkey_bg_color;
250265 Point listbox_text_margin;
266 int horizontal_list_text_width;
251267 };
252268
253269 class XPTable {
3131 #include "CommonIncludes.h"
3232 #include "EngineSettings.h"
3333 #include "Entity.h"
34 #include "EntityBehavior.h"
3435 #include "Hazard.h"
3536 #include "MapRenderer.h"
3637 #include "MessageEngine.h"
3738 #include "PowerManager.h"
39 #include "RenderDevice.h"
3840 #include "Settings.h"
3941 #include "SharedGameResources.h"
4042 #include "SharedResources.h"
4143 #include "SoundManager.h"
4244 #include "UtilsMath.h"
43
44 #include <math.h>
45
46 #ifndef M_SQRT2
47 #define M_SQRT2 sqrt(2.0)
48 #endif
49
50 const int directionDeltaX[8] = {-1, -1, -1, 0, 1, 1, 1, 0};
51 const int directionDeltaY[8] = { 1, 0, -1, -1, -1, 0, 1, 1};
52 const float speedMultiplyer[8] = { static_cast<float>(1.0/M_SQRT2), 1.0f, static_cast<float>(1.0/M_SQRT2), 1.0f, static_cast<float>(1.0/M_SQRT2), 1.0f, static_cast<float>(1.0/M_SQRT2), 1.0f};
5345
5446 Entity::Entity()
5547 : sprites(NULL)
5951 , sound_critdie()
6052 , sound_block()
6153 , sound_levelup(0)
54 , sound_lowhp(0)
6255 , activeAnimation(NULL)
63 , animationSet(NULL) {
56 , animationSet(NULL)
57 , stats()
58 , type_filename("")
59 {
60 // MSVC complains if you use 'this' in the init list
61 behavior = new EntityBehavior(this);
6462 }
6563
6664 Entity::Entity(const Entity& e) {
7876 sound_critdie = e.sound_critdie;
7977 sound_block = e.sound_block;
8078 sound_levelup = e.sound_levelup;
81 activeAnimation = new Animation(*e.activeAnimation);
79 sound_lowhp = e.sound_lowhp;
80
81 if (e.activeAnimation)
82 activeAnimation = new Animation(*e.activeAnimation);
8283 animationSet = e.animationSet;
84
8385 stats = StatBlock(e.stats);
8486
87 type_filename = e.type_filename;
88
89 behavior = new EntityBehavior(this);
90
8591 return *this;
92 }
93
94 void Entity::logic() {
95 behavior->logic();
8696 }
8797
8898 void Entity::loadSounds() {
119129
120130 if (src_stats->sfx_levelup != "")
121131 sound_levelup = snd->load(src_stats->sfx_levelup, "Entity leveled up");
132
133 if (src_stats->sfx_lowhp != "")
134 sound_lowhp = snd->load(src_stats->sfx_lowhp, "Entity has low hp");
122135 }
123136
124137 void Entity::unloadSounds() {
142155 }
143156
144157 snd->unload(sound_levelup);
158 snd->unload(sound_lowhp);
145159 }
146160
147161 void Entity::playAttackSound(const std::string& attack_name) {
277291 if (stats.charge_speed != 0.0f)
278292 return false;
279293
280 float speed = stats.speed * speedMultiplyer[stats.direction] * stats.effects.speed / 100;
281 float dx = speed * static_cast<float>(directionDeltaX[stats.direction]);
282 float dy = speed * static_cast<float>(directionDeltaY[stats.direction]);
294 float speed = stats.speed * StatBlock::SPEED_MULTIPLIER[stats.direction] * stats.effects.speed / 100;
295 float dx = speed * StatBlock::DIRECTION_DELTA_X[stats.direction];
296 float dy = speed * StatBlock::DIRECTION_DELTA_Y[stats.direction];
283297
284298 bool full_move = mapr->collider.move(stats.pos.x, stats.pos.y, dx, dy, stats.movement_type, mapr->collider.getCollideType(stats.hero));
285299
295309 bool Entity::takeHit(Hazard &h) {
296310
297311 //check if this enemy should be affected by this hazard based on the category
298 if(!powers->powers[h.power_index].target_categories.empty() && !stats.hero) {
312 if(!powers->powers[h.power_index].target_categories.empty()) {
299313 //the power has a target category requirement, so if it doesnt match, dont continue
300314 bool match_found = false;
301315 for (unsigned int i=0; i<stats.categories.size(); i++) {
313327 }
314328
315329 //if the target is already dead, they cannot be hit
316 if ((stats.cur_state == StatBlock::ENEMY_DEAD || stats.cur_state == StatBlock::ENEMY_CRITDEAD) && !stats.hero)
317 return false;
318
319 if(stats.cur_state == StatBlock::AVATAR_DEAD && stats.hero)
330 if (stats.cur_state == StatBlock::ENTITY_DEAD || stats.cur_state == StatBlock::ENTITY_CRITDEAD)
320331 return false;
321332
322333 // some attacks will always miss enemies of a certain movement type
424435 if (h.power->trait_elemental >= 0 && static_cast<size_t>(h.power->trait_elemental) < stats.vulnerable.size()) {
425436 size_t i = h.power->trait_elemental;
426437
427 int vulnerable = std::max(stats.vulnerable[i], eset->combat.min_resist);
428 if (stats.vulnerable[i] < 100)
429 vulnerable = std::min(vulnerable, eset->combat.max_resist);
438 int vulnerable = stats.vulnerable[i];
439 // vulnerable values >100 are weakness, and are unaffected by min/max resist setting
440 if (vulnerable <= 100) {
441 if (100 - vulnerable < eset->combat.min_resist)
442 vulnerable = 100 - eset->combat.min_resist;
443 if (100 - vulnerable > eset->combat.max_resist)
444 vulnerable = 100 - eset->combat.max_resist;
445 }
430446
431447 dmg = (dmg * vulnerable) / 100;
432448 }
493509 // default is dmg * 2
494510 dmg = (dmg * Math::randBetween(eset->combat.min_crit_damage, eset->combat.max_crit_damage)) / 100;
495511 if(!stats.hero)
496 mapr->shaky_cam_timer.setDuration(settings->max_frames_per_sec/2);
512 mapr->cam.shake_timer.setDuration(settings->max_frames_per_sec/2);
497513 }
498514 else if (is_overhit) {
499515 dmg = (dmg * Math::randBetween(eset->combat.min_overhit_damage, eset->combat.max_overhit_damage)) / 100;
529545 bool was_debuffed = stats.effects.isDebuffed();
530546
531547 // apply damage
532 stats.takeDamage(dmg);
548 stats.takeDamage(dmg, crit, h.source_type);
533549
534550 // after effects
535551 if (dmg > 0 || powers->powers[h.power_index].ignore_zero_damage) {
540556 powers->effect(&stats, h.src_stats, static_cast<int>(h.power_index), h.source_type);
541557
542558 // HP/MP steal is cumulative between stat bonus and power bonus
543 int hp_steal = h.power->hp_steal + h.src_stats->get(Stats::HP_STEAL);
544 if (!stats.effects.immunity_hp_steal && hp_steal != 0) {
545 int steal_amt = (std::min(dmg, prev_hp) * hp_steal) / 100;
546 if (steal_amt == 0) steal_amt = 1;
547 combat_text->addString(msg->get("+%d HP",steal_amt), h.src_stats->pos, CombatText::MSG_BUFF);
548 h.src_stats->hp = std::min(h.src_stats->hp + steal_amt, h.src_stats->get(Stats::HP_MAX));
549 }
550 int mp_steal = h.power->mp_steal + h.src_stats->get(Stats::MP_STEAL);
551 if (!stats.effects.immunity_mp_steal && mp_steal != 0) {
552 int steal_amt = (std::min(dmg, prev_hp) * mp_steal) / 100;
553 if (steal_amt == 0) steal_amt = 1;
554 combat_text->addString(msg->get("+%d MP",steal_amt), h.src_stats->pos, CombatText::MSG_BUFF);
555 h.src_stats->mp = std::min(h.src_stats->mp + steal_amt, h.src_stats->get(Stats::MP_MAX));
559 if (h.src_stats->hp > 0) {
560 int hp_steal = h.power->hp_steal + h.src_stats->get(Stats::HP_STEAL);
561 if (!stats.effects.immunity_hp_steal && hp_steal != 0) {
562 int steal_amt = (std::min(dmg, prev_hp) * hp_steal) / 100;
563 if (steal_amt == 0) steal_amt = 1;
564 combat_text->addString(msg->get("+%d HP",steal_amt), h.src_stats->pos, CombatText::MSG_BUFF);
565 h.src_stats->hp = std::min(h.src_stats->hp + steal_amt, h.src_stats->get(Stats::HP_MAX));
566 }
567 int mp_steal = h.power->mp_steal + h.src_stats->get(Stats::MP_STEAL);
568 if (!stats.effects.immunity_mp_steal && mp_steal != 0) {
569 int steal_amt = (std::min(dmg, prev_hp) * mp_steal) / 100;
570 if (steal_amt == 0) steal_amt = 1;
571 combat_text->addString(msg->get("+%d MP",steal_amt), h.src_stats->pos, CombatText::MSG_BUFF);
572 h.src_stats->mp = std::min(h.src_stats->mp + steal_amt, h.src_stats->get(Stats::MP_MAX));
573 }
556574 }
557575
558576 // deal return damage
562580 if (dmg_return == 0)
563581 dmg_return = 1;
564582
565 h.src_stats->takeDamage(dmg_return);
583 // swap the source type when dealing return damage
584 int return_source_type = Power::SOURCE_TYPE_NEUTRAL;
585 if (h.source_type == Power::SOURCE_TYPE_HERO || h.source_type == Power::SOURCE_TYPE_ALLY)
586 return_source_type = Power::SOURCE_TYPE_ENEMY;
587 else if (h.source_type == Power::SOURCE_TYPE_ENEMY)
588 return_source_type = stats.hero ? Power::SOURCE_TYPE_HERO : Power::SOURCE_TYPE_ALLY;
589
590 h.src_stats->takeDamage(dmg_return, !StatBlock::TAKE_DMG_CRIT, return_source_type);
566591 comb->addInt(dmg_return, h.src_stats->pos, CombatText::MSG_GIVEDMG);
567592 }
568593 }
579604
580605 // interrupted to new state
581606 if (dmg > 0) {
582 bool chance_poise = Math::percentChance(stats.get(Stats::POISE));
583
584 if(stats.hp <= 0) {
585 stats.effects.triggered_death = true;
586 if(stats.hero)
587 stats.cur_state = StatBlock::AVATAR_DEAD;
588 else {
589 doRewards(h.source_type);
590 if (crit)
591 stats.cur_state = StatBlock::ENEMY_CRITDEAD;
592 else
593 stats.cur_state = StatBlock::ENEMY_DEAD;
594 mapr->collider.unblock(stats.pos.x,stats.pos.y);
595 }
596
607 if (stats.hero) {
608 stats.abort_npc_interact = true;
609 }
610
611 // entity is dead, no need to contine
612 if (stats.hp <= 0)
597613 return true;
598 }
599614
600615 // play hit sound effect, but only if the hit cooldown is done
601616 if (stats.cooldown_hit.isEnd())
605620 if (!was_debuffed && stats.effects.isDebuffed()) {
606621 StatBlock::AIPower* ai_power = stats.getAIPower(StatBlock::AI_POWER_DEBUFF);
607622 if (ai_power != NULL) {
608 stats.cur_state = StatBlock::ENEMY_POWER;
623 stats.cur_state = StatBlock::ENTITY_POWER;
609624 stats.activated_power = ai_power;
610625 stats.cooldown.reset(Timer::END); // ignore global cooldown
611626 return true;
615630 // roll to see if the enemy's ON_HIT power is casted
616631 StatBlock::AIPower* ai_power = stats.getAIPower(StatBlock::AI_POWER_HIT);
617632 if (ai_power != NULL) {
618 stats.cur_state = StatBlock::ENEMY_POWER;
633 stats.cur_state = StatBlock::ENTITY_POWER;
619634 stats.activated_power = ai_power;
620635 stats.cooldown.reset(Timer::END); // ignore global cooldown
621636 return true;
623638
624639 // don't go through a hit animation if stunned or successfully poised
625640 // however, critical hits ignore poise
641 bool chance_poise = Math::percentChance(stats.get(Stats::POISE));
642
626643 if(stats.cooldown_hit.isEnd()) {
627644 stats.cooldown_hit.reset(Timer::BEGIN);
628645
629646 if (!stats.effects.stun && (!chance_poise || crit) && !stats.prevent_interrupt) {
630647 if(stats.hero) {
631 stats.cur_state = StatBlock::AVATAR_HIT;
648 stats.cur_state = StatBlock::ENTITY_HIT;
632649 }
633650 else {
634 if (stats.cur_state == StatBlock::ENEMY_POWER) {
651 if (stats.cur_state == StatBlock::ENTITY_POWER) {
635652 stats.cooldown.reset(Timer::BEGIN);
636653 stats.activated_power = NULL;
637654 }
638 stats.cur_state = StatBlock::ENEMY_HIT;
655 stats.cur_state = StatBlock::ENTITY_HIT;
639656 }
640657
641658 if (stats.untransform_on_hit)
642659 stats.transform_duration = 0;
660 }
661 }
662
663 // handle block post-power
664 if (stats.block_power != 0) {
665 PowerID block_post_power = powers->powers[stats.block_power].post_power;
666
667 if (block_post_power != 0 && stats.getPowerCooldown(block_post_power) == 0) {
668 if (Math::percentChance(powers->powers[stats.block_power].post_power_chance)) {
669 powers->activate(powers->powers[stats.block_power].post_power, &stats, stats.pos);
670 stats.setPowerCooldown(block_post_power, powers->powers[block_post_power].cooldown);
671 }
643672 }
644673 }
645674 }
669698 return activeAnimation == NULL;
670699 }
671700
701 /**
702 * The current direction leads to a wall. Try the next best direction, if one is available.
703 */
704 unsigned char Entity::faceNextBest(float mapx, float mapy) {
705 float dx = static_cast<float>(fabs(mapx - stats.pos.x));
706 float dy = static_cast<float>(fabs(mapy - stats.pos.y));
707 switch (stats.direction) {
708 case 0:
709 if (dy > dx) return 7;
710 else return 1;
711 case 1:
712 if (mapy > stats.pos.y) return 0;
713 else return 2;
714 case 2:
715 if (dx > dy) return 1;
716 else return 3;
717 case 3:
718 if (mapx < stats.pos.x) return 2;
719 else return 4;
720 case 4:
721 if (dy > dx) return 3;
722 else return 5;
723 case 5:
724 if (mapy < stats.pos.y) return 4;
725 else return 6;
726 case 6:
727 if (dx > dy) return 5;
728 else return 7;
729 case 7:
730 if (mapx > stats.pos.x) return 6;
731 else return 0;
732 }
733 return 0;
734 }
735
736 /**
737 * getRender()
738 * Map objects need to be drawn in Z order, so we allow a parent object (GameEngine)
739 * to collect all mobile sprites each frame.
740 */
741 Renderable Entity::getRender() {
742 Renderable r = activeAnimation->getCurrentFrame(stats.direction);
743 r.map_pos.x = stats.pos.x;
744 r.map_pos.y = stats.pos.y;
745 if (stats.hp > 0) {
746 if (stats.hero_ally)
747 r.type = Renderable::TYPE_ALLY;
748 else if (stats.in_combat)
749 r.type = Renderable::TYPE_ENEMY;
750 }
751 return r;
752 }
753
672754 Entity::~Entity () {
673755 delete activeAnimation;
674 }
675
756 delete behavior;
757 }
758
3232
3333 class Animation;
3434 class AnimationSet;
35 class EntityBehavior;
3536
3637 class Entity {
3738 protected:
5354 Entity& operator=(const Entity& e);
5455 virtual ~Entity();
5556
57 void logic();
5658 void loadSounds();
5759 void loadSoundsFromStatBlock(StatBlock *src_stats);
5860 void unloadSounds();
6062 void playSound(int sound_type);
6163 bool move();
6264 bool takeHit(Hazard &h);
63 virtual void doRewards(int) {}
6465
6566 // sound effects
6667 std::vector<std::pair<std::string, std::vector<SoundID> > > sound_attack;
6970 std::vector<SoundID> sound_critdie;
7071 std::vector<SoundID> sound_block;
7172 SoundID sound_levelup;
73 SoundID sound_lowhp;
7274
7375 bool setAnimation(const std::string& animation);
7476 Animation *activeAnimation;
7577 AnimationSet *animationSet;
7678
7779 StatBlock stats;
80
81 unsigned char faceNextBest(float mapx, float mapy);
82 Renderable getRender();
83
84 std::string type_filename;
85
86 EntityBehavior *behavior;
7887 };
7988
8089 extern const int directionDeltaX[];
0 /*
1 Copyright © 2012 Clint Bellanger
2 Copyright © 2012 Stefan Beller
3 Copyright © 2013 Ryan Dansie
4 Copyright © 2012-2021 Justin Jacobs
5
6 This file is part of FLARE.
7
8 FLARE is free software: you can redistribute it and/or modify it under the terms
9 of the GNU General Public License as published by the Free Software Foundation,
10 either version 3 of the License, or (at your option) any later version.
11
12 FLARE is distributed in the hope that it will be useful, but WITHOUT ANY
13 WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A
14 PARTICULAR PURPOSE. See the GNU General Public License for more details.
15
16 You should have received a copy of the GNU General Public License along with
17 FLARE. If not, see http://www.gnu.org/licenses/
18 */
19
20 /**
21 * class EntityBehavior
22 *
23 * Interface for entity behaviors.
24 * The behavior object is a component of Entity.
25 * Make AI decisions (movement, actions) for entities.
26 */
27
28 #include "Animation.h"
29 #include "Avatar.h"
30 #include "CommonIncludes.h"
31 #include "Entity.h"
32 #include "EntityManager.h"
33 #include "EngineSettings.h"
34 #include "Entity.h"
35 #include "EntityBehavior.h"
36 #include "MapRenderer.h"
37 #include "PowerManager.h"
38 #include "Settings.h"
39 #include "SharedGameResources.h"
40 #include "SharedResources.h"
41 #include "StatBlock.h"
42 #include "UtilsMath.h"
43
44 const float EntityBehavior::ALLY_FLEE_DISTANCE = 2;
45 const float EntityBehavior::ALLY_FOLLOW_DISTANCE_WALK = 5.5;
46 const float EntityBehavior::ALLY_FOLLOW_DISTANCE_STOP = 5;
47 const float EntityBehavior::ALLY_TELEPORT_DISTANCE = 40;
48
49 EntityBehavior::EntityBehavior(Entity *_e)
50 : e(_e)
51 , path()
52 , prev_target()
53 , collided(false)
54 , path_found(false)
55 , chance_calc_path(0)
56 , path_found_fails(0)
57 , path_found_fail_timer()
58 , target_dist(0)
59 , hero_dist(0)
60 , pursue_pos(-1, -1)
61 , los(false)
62 , fleeing(false)
63 , move_to_safe_dist(false)
64 , turn_timer()
65 , instant_power(false)
66 {
67 // wait when PATH_FOUND_FAIL_THRESHOLD is exceeded
68 path_found_fail_timer.setDuration(settings->max_frames_per_sec * PATH_FOUND_FAIL_WAIT_SECONDS);
69 path_found_fail_timer.reset(Timer::END);
70 }
71
72 /**
73 * One frame of logic for this behavior
74 */
75 void EntityBehavior::logic() {
76 // skip all logic if the enemy is dead and no longer animating
77 if (e->stats.corpse) {
78 e->stats.corpse_timer.tick();
79 return;
80 }
81
82 if (!e->stats.hero_ally) {
83 if (Utils::calcDist(e->stats.pos, pc->stats.pos) <= settings->encounter_dist)
84 e->stats.encountered = true;
85
86 if (!e->stats.encountered)
87 return;
88 }
89
90 doUpkeep();
91 findTarget();
92 checkPower();
93 checkMove();
94 updateState();
95
96 fleeing = false;
97
98 }
99
100 /**
101 * Various upkeep on stats
102 */
103 void EntityBehavior::doUpkeep() {
104 // activate all passive powers
105 if (e->stats.hp > 0 || e->stats.effects.triggered_death)
106 powers->activatePassives(&e->stats);
107
108 e->stats.logic();
109
110 // check for teleport powers
111 if (e->stats.teleportation) {
112
113 mapr->collider.unblock(e->stats.pos.x,e->stats.pos.y);
114
115 e->stats.pos.x = e->stats.teleport_destination.x;
116 e->stats.pos.y = e->stats.teleport_destination.y;
117
118 mapr->collider.block(e->stats.pos.x,e->stats.pos.y, e->stats.hero_ally);
119
120 e->stats.teleportation = false;
121 }
122 }
123
124 /**
125 * Locate the player and set various targeting info
126 */
127 void EntityBehavior::findTarget() {
128 // dying enemies can't target anything
129 if (e->stats.cur_state == StatBlock::ENTITY_DEAD || e->stats.cur_state == StatBlock::ENTITY_CRITDEAD) return;
130
131 // stunned enemies can't act
132 if (e->stats.effects.stun) return;
133
134 StatBlock *target_stats = NULL;
135 float stealth_threat_range = (e->stats.threat_range * (100 - static_cast<float>(e->stats.hero_stealth))) / 100;
136 bool is_ally = e->stats.hero_ally;
137
138 // check distance and line of sight between enemy and hero
139 // by default, the enemy pursues the hero directly
140 if (pc->stats.alive) {
141 target_dist = Utils::calcDist(e->stats.pos, pc->stats.pos);
142 target_stats = &pc->stats;
143 }
144 else {
145 target_dist = 0;
146 }
147 hero_dist = target_dist;
148
149 // if the minion gets too far, transport it to the player pos
150 if (is_ally && hero_dist > ALLY_TELEPORT_DISTANCE && !e->stats.in_combat) {
151 mapr->collider.unblock(e->stats.pos.x, e->stats.pos.y);
152 e->stats.pos.x = pc->stats.pos.x;
153 e->stats.pos.y = pc->stats.pos.y;
154 mapr->collider.block(e->stats.pos.x, e->stats.pos.y, MapCollision::IS_ALLY);
155 hero_dist = 0;
156 }
157
158 bool enemies_in_combat = false;
159 for (size_t i = 0; i < entitym->entities.size(); ++i) {
160 Entity* entity = entitym->entities[i];
161 if (!entity->stats.alive)
162 continue;
163
164 if ((!is_ally && entity->stats.hero_ally) || (is_ally && !entity->stats.hero_ally && entity->stats.in_combat)) {
165 float entity_dist = Utils::calcDist(e->stats.pos, entity->stats.pos);
166 if (!target_stats || (is_ally && target_stats && target_stats->hero)) {
167 // pick the first available target if none is already selected
168 target_stats = &entitym->entities[i]->stats;
169 target_dist = entity_dist;
170 e->stats.in_combat = true;
171 enemies_in_combat = true;
172 }
173 else if (entity_dist < target_dist) {
174 // pick a new target if it's closer
175 target_stats = &entitym->entities[i]->stats;
176 target_dist = entity_dist;
177 }
178 }
179 }
180
181 //break combat if the player gets too far or all enemies die
182 if(!enemies_in_combat)
183 e->stats.in_combat = false;
184
185 // check line-of-sight
186 if (target_stats && target_dist < e->stats.threat_range && pc->stats.alive)
187 los = mapr->collider.lineOfSight(e->stats.pos.x, e->stats.pos.y, target_stats->pos.x, target_stats->pos.y);
188 else
189 los = false;
190
191 // aggressive enemies are always in combat
192 if (!e->stats.in_combat && e->stats.combat_style == StatBlock::COMBAT_AGGRESSIVE) {
193 e->stats.join_combat = true;
194 }
195
196 // check entering combat (because the player got too close)
197 bool close_to_target = false;
198 if (!is_ally && &pc->stats == target_stats)
199 close_to_target = target_dist < stealth_threat_range;
200 else if (target_stats && &pc->stats != target_stats)
201 close_to_target = target_dist < e->stats.threat_range;
202
203 if (e->stats.alive && !e->stats.in_combat && los && close_to_target && e->stats.combat_style != StatBlock::COMBAT_PASSIVE) {
204 e->stats.join_combat = true;
205 }
206
207 // if the join_combat flag wasn't set above, it could have been set if the enemy was hit by a hazard
208 // we put the entity in a combat state and activate powers that trigger when entering combat
209 if (e->stats.join_combat) {
210 e->stats.in_combat = true;
211
212 StatBlock::AIPower* ai_power;
213 if (!is_ally) {
214 ai_power = e->stats.getAIPower(StatBlock::AI_POWER_BEACON);
215 if (ai_power != NULL) {
216 powers->activate(ai_power->id, &e->stats, e->stats.pos); //emit beacon
217 }
218 }
219
220 ai_power = e->stats.getAIPower(StatBlock::AI_POWER_JOIN_COMBAT);
221 if (ai_power != NULL) {
222 e->stats.cur_state = StatBlock::ENTITY_POWER;
223 e->stats.activated_power = ai_power;
224 }
225
226 e->stats.join_combat = false;
227 }
228
229 // check exiting combat
230 if (e->stats.combat_style != StatBlock::COMBAT_AGGRESSIVE) {
231 // target got too far away
232 if (target_dist > e->stats.threat_range_far && !e->stats.join_combat)
233 e->stats.in_combat = false;
234
235 // either party is dead
236 if (!e->stats.alive || !pc->stats.alive)
237 e->stats.in_combat = false;
238 }
239
240 if (target_stats)
241 pursue_pos = target_stats->pos;
242
243 // if we just started wandering, set the first waypoint
244 if (e->stats.wander && e->stats.waypoints.empty()) {
245 FPoint waypoint = getWanderPoint();
246 e->stats.waypoints.push(waypoint);
247 e->stats.waypoint_timer.reset(Timer::BEGIN);
248 }
249
250 // if we're not in combat, pursue the next waypoint
251 if (!(e->stats.in_combat || e->stats.waypoints.empty())) {
252 FPoint waypoint = e->stats.waypoints.front();
253 pursue_pos.x = waypoint.x;
254 pursue_pos.y = waypoint.y;
255 }
256
257 // if the player is blocked, all summons which the player is facing to move away for the specified frames
258 // need to set the flag player_blocked so that other allies know to get out of the way as well
259 // if hero is facing the summon
260 if (is_ally && eset->misc.enable_ally_collision_ai) {
261 if (!entitym->player_blocked && hero_dist < ALLY_FLEE_DISTANCE
262 && mapr->collider.isFacing(pc->stats.pos.x,pc->stats.pos.y,pc->stats.direction,e->stats.pos.x,e->stats.pos.y)) {
263 entitym->player_blocked = true;
264 entitym->player_blocked_timer.reset(Timer::BEGIN);
265 }
266
267 bool player_closer_than_target = Utils::calcDist(e->stats.pos, pursue_pos) > Utils::calcDist(e->stats.pos, pc->stats.pos);
268
269 if (entitym->player_blocked && (!e->stats.in_combat || player_closer_than_target)
270 && mapr->collider.isFacing(pc->stats.pos.x,pc->stats.pos.y,pc->stats.direction,e->stats.pos.x,e->stats.pos.y)) {
271 fleeing = true;
272 pursue_pos = pc->stats.pos;
273 }
274 }
275
276 if (e->stats.effects.fear) fleeing = true;
277
278 // If we have a successful chance_flee roll, try to move to a safe distance
279 if (
280 e->stats.in_combat &&
281 e->stats.cur_state == StatBlock::ENTITY_STANCE &&
282 !move_to_safe_dist && target_dist < e->stats.flee_range &&
283 target_dist >= e->stats.melee_range &&
284 Math::percentChance(e->stats.chance_flee) &&
285 e->stats.flee_cooldown_timer.isEnd()
286 )
287 {
288 move_to_safe_dist = true;
289 }
290
291 if (move_to_safe_dist) fleeing = true;
292
293 if (fleeing) {
294 FPoint target_pos = pursue_pos;
295
296 std::vector<int> flee_dirs;
297
298 int middle_dir = Utils::calcDirection(target_pos.x, target_pos.y, e->stats.pos.x, e->stats.pos.y);
299 for (int i = -2; i <= 2; ++i) {
300 int test_dir = Utils::rotateDirection(middle_dir, i);
301
302 FPoint test_pos = Utils::calcVector(e->stats.pos, test_dir, 1);
303 if (mapr->collider.isValidPosition(test_pos.x, test_pos.y, e->stats.movement_type, MapCollision::COLLIDE_NORMAL)) {
304 if (test_dir == e->stats.direction) {
305 // if we're already moving in a good direction, favor it over other directions
306 flee_dirs.clear();
307 flee_dirs.push_back(test_dir);
308 break;
309 }
310 else {
311 flee_dirs.push_back(test_dir);
312 }
313 }
314 }
315
316 if (flee_dirs.empty()) {
317 // trapped and can't move
318 move_to_safe_dist = false;
319 fleeing = false;
320 }
321 else {
322 int index = Math::randBetween(0, static_cast<int>(flee_dirs.size())-1);
323 pursue_pos = Utils::calcVector(e->stats.pos, flee_dirs[index], 1);
324
325 if (e->stats.flee_timer.isEnd()) {
326 e->stats.flee_timer.reset(Timer::BEGIN);
327 }
328 }
329 }
330 }
331
332 /**
333 * Begin using a power if idle, based on behavior % chances.
334 * Activate a ready power, if the attack animation has followed through
335 */
336 void EntityBehavior::checkPower() {
337
338 // stunned enemies can't act
339 if (e->stats.effects.stun || e->stats.effects.fear || fleeing) return;
340
341 // currently all enemy power use happens during combat
342 if (!e->stats.in_combat) return;
343
344 // if the enemy is on global cooldown it cannot act
345 if (!e->stats.cooldown.isEnd()) return;
346
347 // Note there are two stages to activating a power.
348 // First is the enemy choosing to use a power based on behavioral chance
349 // Second is the power actually firing off once the related animation reaches the active frame.
350 // The second stage occurs in updateState()
351
352 // pick a power from the available powers for this creature
353 if (e->stats.cur_state == StatBlock::ENTITY_STANCE || e->stats.cur_state == StatBlock::ENTITY_MOVE) {
354 StatBlock::AIPower* ai_power = NULL;
355
356 // check half dead power use
357 if (e->stats.half_dead_power && e->stats.hp <= e->stats.get(Stats::HP_MAX)/2) {
358 ai_power = e->stats.getAIPower(StatBlock::AI_POWER_HALF_DEAD);
359 }
360 // check ranged power use
361 else if (target_dist > e->stats.melee_range) {
362 ai_power = e->stats.getAIPower(StatBlock::AI_POWER_RANGED);
363 }
364 // check melee power use
365 else {
366 ai_power = e->stats.getAIPower(StatBlock::AI_POWER_MELEE);
367 }
368
369 if (ai_power != NULL) {
370 const Power& pwr = powers->powers[ai_power->id];
371 if (!los && (pwr.requires_los || pwr.requires_los_default)) {
372 ai_power = NULL;
373 }
374 if (ai_power != NULL) {
375 e->stats.cur_state = StatBlock::ENTITY_POWER;
376 e->stats.activated_power = ai_power;
377 }
378 }
379 }
380
381 if (e->stats.cur_state != StatBlock::ENTITY_POWER && e->stats.activated_power) {
382 e->stats.activated_power = NULL;
383 }
384 }
385
386 /**
387 * Check state changes related to movement
388 */
389 void EntityBehavior::checkMove() {
390
391 // dying enemies can't move
392 if (e->stats.cur_state == StatBlock::ENTITY_DEAD || e->stats.cur_state == StatBlock::ENTITY_CRITDEAD) return;
393
394 // stunned enemies can't act
395 if (e->stats.effects.stun) return;
396
397 // handle not being in combat and (not patrolling waypoints or waiting at waypoint)
398 if (!e->stats.hero_ally && !e->stats.in_combat && (e->stats.waypoints.empty() || !e->stats.waypoint_timer.isEnd())) {
399
400 if (e->stats.cur_state == StatBlock::ENTITY_MOVE) {
401 e->stats.cur_state = StatBlock::ENTITY_STANCE;
402 }
403
404 // currently enemies only move while in combat or patrolling
405 return;
406 }
407
408 float real_speed = e->stats.speed * StatBlock::SPEED_MULTIPLIER[e->stats.direction] * e->stats.effects.speed / 100;
409
410 unsigned turn_ticks = turn_timer.getCurrent();
411 turn_timer.setDuration(e->stats.turn_delay);
412
413 // If an enemy's turn_delay is too long compared to their speed, they will be unable to follow a path properly.
414 // So here, we get how many frames it takes to traverse a single tile and then compare it to the turn delay time.
415 // We then cap the turn delay the time at the number of frames we calculated for tile traversal.
416 // There may be other solutions to this problem, such as having the enemy pause when they reach a path point,
417 // but I was unable to get anything else working as cleanly/bug-free as this.
418 int max_turn_ticks = static_cast<int>(1.f / real_speed);
419 if (e->stats.turn_delay > max_turn_ticks) {
420 turn_timer.setDuration(max_turn_ticks);
421 }
422 turn_timer.setCurrent(turn_ticks);
423
424 // clear current space to allow correct movement
425 mapr->collider.unblock(e->stats.pos.x, e->stats.pos.y);
426
427 path_found_fail_timer.tick();
428
429 // update direction
430 if (e->stats.facing) {
431 turn_timer.tick();
432 if (turn_timer.isEnd()) {
433
434 // if blocked, face in pathfinder direction instead
435 if (!mapr->collider.lineOfMovement(e->stats.pos.x, e->stats.pos.y, pursue_pos.x, pursue_pos.y, e->stats.movement_type)) {
436
437 // if a path is returned, target first waypoint
438
439 bool recalculate_path = false;
440
441 // add a 5% chance to recalculate on every frame. This prevents reclaulating lots of entities in the same frame
442 chance_calc_path += 5;
443
444 bool calc_path_success = Math::percentChance(chance_calc_path);
445 if (calc_path_success)
446 recalculate_path = true;
447
448 // if a collision ocurred then recalculate
449 if (collided)
450 recalculate_path = true;
451
452 // if theres no path, it needs to be calculated
453 if (!recalculate_path && path.empty())
454 recalculate_path = true;
455
456 // if the target moved more than 1 tile away, recalculate
457 if (!recalculate_path && Utils::calcDist(FPoint(Point(prev_target)), FPoint(Point(pursue_pos))) > 1.f)
458 recalculate_path = true;
459
460 // dont recalculate if we were blocked and no path was found last time
461 // this makes sure that pathfinding calculation is not spammed when the target is unreachable and the entity is as close as its going to get
462 if (!path_found && collided && !calc_path_success) {
463 recalculate_path = false;
464 }
465 else {
466 // reset the collision flag only if we dont want the cooldown in place
467 collided = false;
468 }
469
470 if (!path_found_fail_timer.isEnd()) {
471 recalculate_path = false;
472 chance_calc_path = -100;
473 }
474
475 prev_target = pursue_pos;
476
477 // target first waypoint
478 if (recalculate_path) {
479 chance_calc_path = -100;
480 path.clear();
481 path_found = mapr->collider.computePath(e->stats.pos, pursue_pos, path, e->stats.movement_type, MapCollision::DEFAULT_PATH_LIMIT);
482
483 if (!path_found) {
484 path_found_fails++;
485 if (path_found_fails >= PATH_FOUND_FAIL_THRESHOLD) {
486 // could not find a path after several tries, so wait a little before the next attempt
487 path_found_fail_timer.reset(Timer::BEGIN);
488 }
489 }
490 else {
491 path_found_fails = 0;
492 path_found_fail_timer.reset(Timer::END);
493 }
494 }
495
496 if (!path.empty()) {
497 pursue_pos = path.back();
498
499 // if distance to node is lower than a tile size, the node is going to be passed and can be removed
500 if (Utils::calcDist(e->stats.pos, pursue_pos) <= 1.f)
501 path.pop_back();
502 }
503 }
504 else {
505 path.clear();
506 }
507
508 if (e->stats.charge_speed == 0.0f) {
509 e->stats.direction = Utils::calcDirection(e->stats.pos.x, e->stats.pos.y, pursue_pos.x, pursue_pos.y);
510 }
511 turn_timer.reset(Timer::BEGIN);
512 }
513 }
514
515 e->stats.flee_timer.tick();
516 e->stats.flee_cooldown_timer.tick();
517
518 // try to start moving
519 if (e->stats.cur_state == StatBlock::ENTITY_STANCE) {
520 checkMoveStateStance();
521 }
522
523 // already moving
524 else if (e->stats.cur_state == StatBlock::ENTITY_MOVE) {
525 checkMoveStateMove();
526 }
527
528 // if patrolling waypoints and has reached a waypoint, cycle to the next one
529 if (!e->stats.waypoints.empty()) {
530 // if the patroller is close to the waypoint
531 FPoint waypoint = e->stats.waypoints.front();
532 float waypoint_dist = Utils::calcDist(waypoint, e->stats.pos);
533
534 FPoint saved_pos = e->stats.pos;
535 e->move();
536 float new_dist = Utils::calcDist(waypoint, e->stats.pos);
537 e->stats.pos = saved_pos;
538
539 if (waypoint_dist <= real_speed || (waypoint_dist <= 0.5f && new_dist > waypoint_dist)) {
540 e->stats.pos = waypoint;
541 turn_timer.reset(Timer::END);
542 e->stats.waypoints.pop();
543 // pick a new random point if we're wandering
544 if (e->stats.wander) {
545 waypoint = getWanderPoint();
546 }
547 e->stats.waypoints.push(waypoint);
548 e->stats.waypoint_timer.reset(Timer::BEGIN);
549 }
550 }
551
552 // re-block current space to allow correct movement
553 mapr->collider.block(e->stats.pos.x, e->stats.pos.y, e->stats.hero_ally);
554
555 }
556
557 void EntityBehavior::checkMoveStateStance() {
558
559 // If the enemy is capable of fleeing and is at a safe distance, have it hold its position instead of moving
560 if (target_dist >= e->stats.flee_range && e->stats.chance_flee > 0 && e->stats.waypoints.empty()) return;
561
562 // try to move to the target if we're either:
563 // 1. too far away and chance_pursue roll succeeds
564 // 2. within range, but lack line-of-sight (required to attack)
565 bool ally_targeting_hero = e->stats.hero_ally && !e->stats.in_combat && hero_dist > ALLY_FOLLOW_DISTANCE_WALK;
566 bool should_move_to_target = (e->stats.in_combat || !e->stats.waypoints.empty()) && ((target_dist > e->stats.melee_range && Math::percentChance(e->stats.chance_pursue)) || (target_dist <= e->stats.melee_range && !los));
567
568 if (should_move_to_target || fleeing || ally_targeting_hero) {
569
570 if (e->move()) {
571 e->stats.cur_state = StatBlock::ENTITY_MOVE;
572 }
573 else {
574 collided = true;
575 unsigned char prev_direction = e->stats.direction;
576
577 // hit an obstacle, try the next best angle
578 e->stats.direction = e->faceNextBest(pursue_pos.x, pursue_pos.y);
579 if (e->move()) {
580 e->stats.cur_state = StatBlock::ENTITY_MOVE;
581 }
582 else
583 e->stats.direction = prev_direction;
584 }
585 }
586 }
587
588 void EntityBehavior::checkMoveStateMove() {
589 bool can_attack = true;
590
591 if (!e->stats.cooldown.isEnd()) {
592 can_attack = false;
593 }
594 else {
595 can_attack = false;
596 for (size_t i = 0; i < e->stats.powers_ai.size(); ++i) {
597 if (e->stats.powers_ai[i].cooldown.isEnd()) {
598 can_attack = true;
599 break;
600 }
601 }
602 }
603 // in order to prevent infinite fleeing, we re-roll our chance to flee after a certain duration
604 bool stop_fleeing = can_attack && fleeing && e->stats.flee_timer.isEnd() && !Math::percentChance(e->stats.chance_flee);
605
606 if (!stop_fleeing && e->stats.flee_timer.isEnd()) {
607 // if the roll to continue fleeing succeeds, but the flee duration has expired, we don't want to reset the duration to the full amount
608 // instead, we scehdule the next re-roll to happen on the next frame
609 // this will continue until a roll fails, returning to the stance state
610 e->stats.flee_timer.setCurrent(1);
611 }
612
613 // close enough to the hero or is at a safe distance
614 bool ally_targeting_hero = e->stats.hero_ally && !e->stats.in_combat && !fleeing && hero_dist < ALLY_FOLLOW_DISTANCE_STOP;
615 if (pc->stats.alive && ((target_dist < e->stats.melee_range && !fleeing) || (move_to_safe_dist && target_dist >= e->stats.flee_range) || stop_fleeing || ally_targeting_hero)) {
616 if (stop_fleeing) {
617 e->stats.flee_cooldown_timer.reset(Timer::BEGIN);
618 }
619 e->stats.cur_state = StatBlock::ENTITY_STANCE;
620 move_to_safe_dist = false;
621 fleeing = false;
622 }
623
624 // try to continue moving
625 else if (!e->move()) {
626 collided = true;
627 unsigned char prev_direction = e->stats.direction;
628 // hit an obstacle. Try the next best angle
629 e->stats.direction = e->faceNextBest(pursue_pos.x, pursue_pos.y);
630 if (!e->move()) {
631 // this prevents an ally trying to move perpendicular to a 1-tile-wide path if the player gets close to it in a certain position and gets blocked
632 if (e->stats.hero_ally && entitym->player_blocked && !e->stats.in_combat) {
633 e->stats.direction = pc->stats.direction;
634 if (!e->move()) {
635 e->stats.cur_state = StatBlock::ENTITY_STANCE;
636 e->stats.direction = prev_direction;
637 }
638 }
639 else {
640 e->stats.cur_state = StatBlock::ENTITY_STANCE;
641 e->stats.direction = prev_direction;
642 }
643 }
644 }
645 }
646
647
648 /**
649 * Perform miscellaneous state-based actions.
650 * 1) Set animations and sound effects
651 * 2) Return to the default state (Stance) when actions are complete
652 */
653 void EntityBehavior::updateState() {
654
655 // stunned enemies can't act
656 if (e->stats.effects.stun) return;
657
658 PowerID power_id;
659 int power_state;
660
661 // continue current animations
662 e->activeAnimation->advanceFrame();
663
664 switch (e->stats.cur_state) {
665
666 case StatBlock::ENTITY_STANCE:
667
668 e->setAnimation("stance");
669 break;
670
671 case StatBlock::ENTITY_MOVE:
672
673 e->setAnimation("run");
674 break;
675
676 case StatBlock::ENTITY_POWER:
677
678 if (e->stats.activated_power == NULL) {
679 e->stats.cur_state = StatBlock::ENTITY_STANCE;
680 break;
681 }
682
683 power_id = powers->checkReplaceByEffect(e->stats.activated_power->id, &e->stats);
684 power_state = powers->powers[power_id].new_state;
685 e->stats.prevent_interrupt = powers->powers[power_id].prevent_interrupt;
686
687 // animation based on power type
688 if (power_state == Power::STATE_INSTANT)
689 instant_power = true;
690 else if (power_state == Power::STATE_ATTACK)
691 e->setAnimation(powers->powers[power_id].attack_anim);
692
693 // sound effect based on power type
694 if (e->activeAnimation->isFirstFrame()) {
695 if (powers->powers[power_id].pre_power > 0 && Math::percentChance(powers->powers[power_id].pre_power_chance)) {
696 powers->activate(powers->powers[power_id].pre_power, &e->stats, pursue_pos);
697 }
698
699 float attack_speed = (e->stats.effects.getAttackSpeed(powers->powers[power_id].attack_anim) * powers->powers[power_id].attack_speed) / 100.0f;
700 e->activeAnimation->setSpeed(attack_speed);
701 e->playAttackSound(powers->powers[power_id].attack_anim);
702
703 if (powers->powers[power_id].state_duration > 0)
704 e->stats.state_timer.setDuration(powers->powers[power_id].state_duration);
705
706 if (powers->powers[power_id].charge_speed != 0.0f)
707 e->stats.charge_speed = powers->powers[power_id].charge_speed;
708 }
709
710 // Activate Power:
711 // if we're at the active frame of a power animation,
712 // activate the power and set the local and global cooldowns
713 if ((e->activeAnimation->isActiveFrame() || instant_power) && !e->stats.hold_state) {
714 powers->activate(power_id, &e->stats, pursue_pos);
715
716 // set cooldown for all ai powers with the same power id
717 for (size_t i = 0; i < e->stats.powers_ai.size(); ++i) {
718 if (e->stats.activated_power->id == e->stats.powers_ai[i].id) {
719 e->stats.powers_ai[i].cooldown.setDuration(powers->powers[power_id].cooldown);
720 }
721 }
722
723 if (e->stats.activated_power->type == StatBlock::AI_POWER_HALF_DEAD) {
724 e->stats.half_dead_power = false;
725 }
726
727 if (!e->stats.state_timer.isEnd())
728 e->stats.hold_state = true;
729 }
730
731 // animation is finished
732 if ((e->activeAnimation->isLastFrame() && e->stats.state_timer.isEnd()) || (power_state == Power::STATE_ATTACK && e->activeAnimation->getName() != powers->powers[power_id].attack_anim) || instant_power) {
733 if (!instant_power)
734 e->stats.cooldown.reset(Timer::BEGIN);
735 else
736 instant_power = false;
737
738 e->stats.activated_power = NULL;
739 e->stats.cur_state = StatBlock::ENTITY_STANCE;
740 e->stats.prevent_interrupt = false;
741 }
742 break;
743
744 case StatBlock::ENTITY_SPAWN:
745
746 e->setAnimation("spawn");
747 //the second check is needed in case the entity does not have a spawn animation
748 if (e->activeAnimation->isLastFrame() || e->activeAnimation->getName() != "spawn") {
749 e->stats.cur_state = StatBlock::ENTITY_STANCE;
750 }
751 break;
752
753 case StatBlock::ENTITY_BLOCK:
754
755 e->setAnimation("block");
756 break;
757
758 case StatBlock::ENTITY_HIT:
759
760 e->setAnimation("hit");
761 if (e->activeAnimation->isFirstFrame()) {
762 e->stats.effects.triggered_hit = true;
763 }
764 if (e->activeAnimation->isLastFrame() || e->activeAnimation->getName() != "hit")
765 e->stats.cur_state = StatBlock::ENTITY_STANCE;
766 break;
767
768 case StatBlock::ENTITY_DEAD:
769 if (e->stats.effects.triggered_death) break;
770
771 e->setAnimation("die");
772 if (e->activeAnimation->isFirstFrame()) {
773 e->playSound(Entity::SOUND_DIE);
774 e->stats.corpse_timer.setDuration(eset->misc.corpse_timeout);
775 }
776 if (e->activeAnimation->isSecondLastFrame()) {
777 StatBlock::AIPower* ai_power = e->stats.getAIPower(StatBlock::AI_POWER_DEATH);
778 if (ai_power != NULL)
779 powers->activate(ai_power->id, &e->stats, e->stats.pos);
780
781 e->stats.effects.clearEffects();
782 }
783 if (e->activeAnimation->isLastFrame() || e->activeAnimation->getName() != "die") {
784 // puts renderable under object layer
785 e->stats.corpse = true;
786
787 //allow free movement over the corpse
788 mapr->collider.unblock(e->stats.pos.x, e->stats.pos.y);
789
790 // remove corpses that land on blocked tiles, such as water or pits
791 if (!mapr->collider.isValidPosition(e->stats.pos.x, e->stats.pos.y, MapCollision::MOVE_NORMAL, MapCollision::COLLIDE_NORMAL)) {
792 e->stats.corpse_timer.reset(Timer::END);
793 }
794
795 // prevent "jumping" when rendering
796 e->stats.pos.align();
797 }
798
799 break;
800
801 case StatBlock::ENTITY_CRITDEAD:
802
803 e->setAnimation("critdie");
804 if (e->activeAnimation->isFirstFrame()) {
805 e->playSound(Entity::SOUND_CRITDIE);
806 e->stats.corpse_timer.setDuration(eset->misc.corpse_timeout);
807 }
808 if (e->activeAnimation->isSecondLastFrame()) {
809 StatBlock::AIPower* ai_power = e->stats.getAIPower(StatBlock::AI_POWER_DEATH);
810 if (ai_power != NULL)
811 powers->activate(ai_power->id, &e->stats, e->stats.pos);
812
813 e->stats.effects.clearEffects();
814 }
815 if (e->activeAnimation->isLastFrame() || e->activeAnimation->getName() != "critdie") {
816 // puts renderable under object layer
817 e->stats.corpse = true;
818
819 //allow free movement over the corpse
820 mapr->collider.unblock(e->stats.pos.x, e->stats.pos.y);
821
822 // prevent "jumping" when rendering
823 e->stats.pos.align();
824 }
825
826 break;
827
828 default:
829 break;
830 }
831
832 if (e->stats.state_timer.isEnd() && e->stats.hold_state)
833 e->stats.hold_state = false;
834
835 if (e->stats.cur_state != StatBlock::ENTITY_POWER && e->stats.charge_speed != 0.0f)
836 e->stats.charge_speed = 0.0f;
837 }
838
839 FPoint EntityBehavior::getWanderPoint() {
840 FPoint waypoint;
841 waypoint.x = static_cast<float>(e->stats.wander_area.x) + static_cast<float>(rand() % (e->stats.wander_area.w)) + 0.5f;
842 waypoint.y = static_cast<float>(e->stats.wander_area.y) + static_cast<float>(rand() % (e->stats.wander_area.h)) + 0.5f;
843
844 if (mapr->collider.isValidPosition(waypoint.x, waypoint.y, e->stats.movement_type, mapr->collider.getCollideType(e->stats.hero)) &&
845 mapr->collider.lineOfMovement(e->stats.pos.x, e->stats.pos.y, waypoint.x, waypoint.y, e->stats.movement_type))
846 {
847 return waypoint;
848 }
849 else {
850 // didn't get a valid waypoint, so keep our current position
851 return e->stats.pos;
852 }
853 }
854 EntityBehavior::~EntityBehavior() {
855 }
0 /*
1 Copyright © 2012 Clint Bellanger
2 Copyright © 2012 Stefan Beller
3 Copyright © 2013 Ryan Dansie
4 Copyright © 2012-2021 Justin Jacobs
5
6 This file is part of FLARE.
7
8 FLARE is free software: you can redistribute it and/or modify it under the terms
9 of the GNU General Public License as published by the Free Software Foundation,
10 either version 3 of the License, or (at your option) any later version.
11
12 FLARE is distributed in the hope that it will be useful, but WITHOUT ANY
13 WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A
14 PARTICULAR PURPOSE. See the GNU General Public License for more details.
15
16 You should have received a copy of the GNU General Public License along with
17 FLARE. If not, see http://www.gnu.org/licenses/
18 */
19
20 /**
21 * class EntityBehavior
22 *
23 * Interface for entity behaviors.
24 * The behavior object is a component of Entity.
25 * Make AI decisions (movement, actions) for entities.
26 */
27
28
29 #ifndef ENTITY_BEHAVIOR_H
30 #define ENTITY_BEHAVIOR_H
31
32 class Entity;
33
34 class EntityBehavior {
35 private:
36 static const float ALLY_FLEE_DISTANCE;
37 static const float ALLY_FOLLOW_DISTANCE_WALK;
38 static const float ALLY_FOLLOW_DISTANCE_STOP;
39 static const float ALLY_TELEPORT_DISTANCE;
40
41 // logic steps
42 void doUpkeep();
43 void findTarget();
44 void checkPower();
45 void checkMove();
46 void checkMoveStateStance();
47 void checkMoveStateMove();
48 void updateState();
49 FPoint getWanderPoint();
50
51 protected:
52 Entity *e;
53
54 static const int PATH_FOUND_FAIL_THRESHOLD = 1;
55 static const int PATH_FOUND_FAIL_WAIT_SECONDS = 2;
56
57 //variables for patfinding
58 std::vector<FPoint> path;
59 FPoint prev_target;
60 bool collided;
61 bool path_found;
62 int chance_calc_path;
63 int path_found_fails;
64 Timer path_found_fail_timer;
65
66 float target_dist;
67 float hero_dist;
68 FPoint pursue_pos;
69 // targeting vars
70 bool los;
71 //when fleeing, the entity moves away from the pursue_pos
72 bool fleeing;
73 bool move_to_safe_dist;
74 Timer turn_timer;
75
76 bool instant_power;
77
78 public:
79 EntityBehavior(Entity *_e);
80 ~EntityBehavior();
81 void logic();
82 };
83
84 #endif
0 /*
1 Copyright © 2011-2012 Clint Bellanger
2 Copyright © 2012 Stefan Beller
3 Copyright © 2013 Henrik Andersson
4 Copyright © 2012-2016 Justin Jacobs
5
6 This file is part of FLARE.
7
8 FLARE is free software: you can redistribute it and/or modify it under the terms
9 of the GNU General Public License as published by the Free Software Foundation,
10 either version 3 of the License, or (at your option) any later version.
11
12 FLARE is distributed in the hope that it will be useful, but WITHOUT ANY
13 WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A
14 PARTICULAR PURPOSE. See the GNU General Public License for more details.
15
16 You should have received a copy of the GNU General Public License along with
17 FLARE. If not, see http://www.gnu.org/licenses/
18 */
19
20 #include "Animation.h"
21 #include "AnimationManager.h"
22 #include "AnimationSet.h"
23 #include "Avatar.h"
24 #include "CampaignManager.h"
25 #include "EnemyGroupManager.h"
26 #include "Entity.h"
27 #include "EntityBehavior.h"
28 #include "EntityManager.h"
29 #include "EngineSettings.h"
30 #include "EntityBehavior.h"
31 #include "EventManager.h"
32 #include "Hazard.h"
33 #include "MapRenderer.h"
34 #include "MenuActionBar.h"
35 #include "PowerManager.h"
36 #include "RenderDevice.h"
37 #include "Settings.h"
38 #include "SharedGameResources.h"
39 #include "SharedResources.h"
40
41 #include <limits>
42
43 EntityManager::EntityManager()
44 : entities()
45 , hero_stealth(0)
46 , player_blocked(false)
47 , player_blocked_timer(settings->max_frames_per_sec / 6) {
48 handleNewMap();
49 }
50
51 void EntityManager::loadAnimations(Entity *e) {
52 anim->increaseCount(e->stats.animations);
53 e->animationSet = anim->getAnimationSet(e->stats.animations);
54 e->activeAnimation = e->animationSet->getAnimation("");
55 }
56
57 Entity *EntityManager::getEntityPrototype(const std::string& type_id) {
58 Entity* e = new Entity(prototypes.at(loadEntityPrototype(type_id)));
59 return e;
60 }
61
62 size_t EntityManager::loadEntityPrototype(const std::string& type_id) {
63 for (size_t i = 0; i < prototypes.size(); i++) {
64 if (prototypes[i].type_filename == type_id) {
65 return i;
66 }
67 }
68
69 Entity e = Entity();
70
71 e.stats.load(type_id);
72 e.type_filename = type_id;
73
74 if (e.stats.animations == "")
75 Utils::logError("EntityManager: No animation file specified for entity: %s", type_id.c_str());
76
77 loadAnimations(&e);
78 e.loadSounds();
79
80 // set cooldown_hit to duration of hit animation if undefined
81 if (!e.stats.cooldown_hit_enabled) {
82 Animation *hit_anim = e.animationSet->getAnimation("hit");
83 if (hit_anim) {
84 e.stats.cooldown_hit.setDuration(hit_anim->getDuration());
85 delete hit_anim;
86 }
87 else {
88 e.stats.cooldown_hit.setDuration(0);
89 }
90 }
91
92 prototypes.push_back(e);
93 size_t prototype = prototypes.size() - 1;
94
95 for (size_t i = 0; i < e.stats.powers_ai.size(); i++) {
96 PowerID power_index = e.stats.powers_ai[i].id;
97 const std::string& spawn_type = powers->powers[power_index].spawn_type;
98 if (power_index != 0 && spawn_type != "" && spawn_type != "untransform") {
99 std::vector<Enemy_Level> spawn_enemies = enemyg->getEnemiesInCategory(spawn_type);
100 for (size_t j = 0; j < spawn_enemies.size(); j++) {
101 loadEntityPrototype(spawn_enemies[j].type);
102 }
103 }
104 }
105
106 return prototype;
107 }
108
109 /**
110 * When loading a new map, we eliminate existing entities and load the new ones.
111 * The map will have loaded Entity blocks into an array; retrieve the entities and init them
112 */
113 void EntityManager::handleNewMap () {
114
115 Map_Enemy me;
116 std::queue<Entity *> allies;
117
118 // delete existing entities
119 for (unsigned int i=0; i < entities.size(); i++) {
120 anim->decreaseCount(entities[i]->animationSet->getName());
121 if(entities[i]->stats.hero_ally && !entities[i]->stats.corpse && entities[i]->stats.cur_state != StatBlock::ENTITY_DEAD && entities[i]->stats.cur_state != StatBlock::ENTITY_CRITDEAD && entities[i]->stats.speed > 0.0f)
122 allies.push(entities[i]);
123 else {
124 entities[i]->unloadSounds();
125 delete entities[i];
126 }
127 }
128 entities.clear();
129
130
131 for (unsigned int i=0; i < prototypes.size(); i++) {
132 anim->decreaseCount(prototypes[i].animationSet->getName());
133 prototypes[i].unloadSounds();
134 }
135 prototypes.clear();
136
137 // load new entities
138 while (!mapr->enemies.empty()) {
139 me = mapr->enemies.front();
140 mapr->enemies.pop();
141
142 if (me.type.empty()) {
143 Utils::logError("EntityManager: Entity(%f, %f) doesn't have type attribute set, skipping", me.pos.x, me.pos.y);
144 continue;
145 }
146
147
148 bool status_reqs_met = true;
149 //if the status requirements arent met, dont load the entity
150 for(unsigned int i = 0; i < me.requires_status.size(); i++) {
151 if (!camp->checkStatus(me.requires_status[i]))
152 status_reqs_met = false;
153 }
154 for(unsigned int i = 0; i < me.requires_not_status.size(); i++) {
155 if (camp->checkStatus(me.requires_not_status[i]))
156 status_reqs_met = false;
157 }
158 if(!status_reqs_met)
159 continue;
160
161
162 Entity *e = getEntityPrototype(me.type);
163 anim->increaseCount(e->stats.animations);
164
165 e->stats.waypoints = me.waypoints;
166 e->stats.pos.x = me.pos.x;
167 e->stats.pos.y = me.pos.y;
168 e->stats.direction = static_cast<unsigned char>(me.direction);
169 e->stats.wander = me.wander_radius > 0;
170 e->stats.setWanderArea(me.wander_radius);
171 e->stats.invincible_requires_status = me.invincible_requires_status;
172 e->stats.invincible_requires_not_status = me.invincible_requires_not_status;
173
174 entities.push_back(e);
175
176 mapr->collider.block(me.pos.x, me.pos.y, !MapCollision::IS_ALLY);
177 }
178
179 FPoint spawn_pos = mapr->collider.getRandomNeighbor(Point(pc->stats.pos), 1, !MapCollision::IGNORE_BLOCKED);
180 while (!allies.empty()) {
181
182 Entity *e = allies.front();
183 allies.pop();
184
185 //dont need the result of this. its only called to handle animation and sound
186 Entity* temp = getEntityPrototype(e->type_filename);
187 anim->increaseCount(temp->stats.animations);
188 delete temp;
189
190 e->stats.pos = spawn_pos;
191 e->stats.direction = pc->stats.direction;
192
193 entities.push_back(e);
194
195 mapr->collider.block(e->stats.pos.x, e->stats.pos.y, MapCollision::IS_ALLY);
196 }
197
198 // load entities that can be spawn by avatar's powers
199 for (size_t i = 0; i < pc->stats.powers_list.size(); i++) {
200 PowerID power_index = pc->stats.powers_list[i];
201 const std::string& spawn_type = powers->powers[power_index].spawn_type;
202 if (spawn_type != "" && spawn_type != "untransform") {
203 std::vector<Enemy_Level> spawn_enemies = enemyg->getEnemiesInCategory(spawn_type);
204 for (size_t j = 0; j < spawn_enemies.size(); j++) {
205 loadEntityPrototype(spawn_enemies[j].type);
206 }
207 }
208 }
209
210 // load entities that can be spawn by powers in the action bar
211 if (menu_act != NULL) {
212 for (size_t i = 0; i < menu_act->hotkeys.size(); i++) {
213 PowerID power_index = menu_act->hotkeys[i];
214 const std::string& spawn_type = powers->powers[power_index].spawn_type;
215 if (power_index != 0 && spawn_type != "" && spawn_type != "untransform") {
216 std::vector<Enemy_Level> spawn_enemies = enemyg->getEnemiesInCategory(spawn_type);
217 for (size_t j = 0; j < spawn_enemies.size(); j++) {
218 loadEntityPrototype(spawn_enemies[j].type);
219 }
220 }
221 }
222 }
223
224 // load entities that can be spawn by map events
225 for (size_t i = 0; i < mapr->events.size(); i++) {
226 for (size_t j = 0; j < mapr->events[i].components.size(); j++) {
227 if (mapr->events[i].components[j].type == EventComponent::SPAWN) {
228 std::vector<Enemy_Level> spawn_enemies = enemyg->getEnemiesInCategory(mapr->events[i].components[j].s);
229 for (size_t k = 0; k < spawn_enemies.size(); k++) {
230 loadEntityPrototype(spawn_enemies[k].type);
231 }
232 }
233 }
234 }
235
236 anim->cleanUp();
237 }
238
239 /**
240 * Powers can cause new entities to spawn
241 * Check PowerManager for any new queued entities
242 */
243 void EntityManager::handleSpawn() {
244
245 Map_Enemy espawn;
246
247 while (!powers->map_enemies.empty()) {
248 espawn = powers->map_enemies.front();
249 powers->map_enemies.pop();
250
251 mapr->collider.unblock(espawn.pos.x, espawn.pos.y);
252
253 Entity *e = new Entity();
254
255 e->stats.hero_ally = espawn.hero_ally;
256 e->stats.enemy_ally = espawn.enemy_ally;
257 e->stats.summoned = true;
258 e->stats.summoned_power_index = espawn.summon_power_index;
259
260 if(espawn.summoner != NULL) {
261 e->stats.summoner = espawn.summoner;
262 espawn.summoner->summons.push_back(&(e->stats));
263 }
264
265 e->stats.direction = static_cast<unsigned char>(espawn.direction);
266
267 Enemy_Level el = enemyg->getRandomEnemy(espawn.type, 0, 0);
268 e->type_filename = el.type;
269
270 if (el.type != "") {
271 e->stats.load(el.type);
272 }
273 else {
274 Utils::logError("EntityManager: Could not spawn creature type '%s'", espawn.type.c_str());
275 delete e;
276 return;
277 }
278
279 if (e->stats.animations != "") {
280 // load the animation file if specified
281 anim->increaseCount(e->stats.animations);
282 e->animationSet = anim->getAnimationSet(e->stats.animations);
283 if (e->animationSet)
284 e->activeAnimation = e->animationSet->getAnimation("");
285 else
286 Utils::logError("EntityManager: Animations file could not be loaded for %s", espawn.type.c_str());
287 }
288 else {
289 Utils::logError("EntityManager: No animation file specified for entity: %s", espawn.type.c_str());
290 }
291 e->loadSounds();
292
293 //Set level
294 if(e->stats.summoned_power_index != 0) {
295 if(powers->powers[e->stats.summoned_power_index].spawn_level_mode == Power::SPAWN_LEVEL_MODE_FIXED)
296 e->stats.level = powers->powers[e->stats.summoned_power_index].spawn_level_qty;
297
298 if(powers->powers[e->stats.summoned_power_index].spawn_level_mode == Power::SPAWN_LEVEL_MODE_LEVEL) {
299 if(e->stats.summoner != NULL && powers->powers[e->stats.summoned_power_index].spawn_level_every != 0) {
300 e->stats.level = powers->powers[e->stats.summoned_power_index].spawn_level_qty
301 * (e->stats.summoner->level / powers->powers[e->stats.summoned_power_index].spawn_level_every);
302 }
303 }
304
305 if(powers->powers[e->stats.summoned_power_index].spawn_level_mode == Power::SPAWN_LEVEL_MODE_STAT) {
306 if(e->stats.summoner != NULL && powers->powers[e->stats.summoned_power_index].spawn_level_every != 0) {
307 int stat_val = 0;
308 for (size_t i = 0; i < eset->primary_stats.list.size(); ++i) {
309 if (powers->powers[e->stats.summoned_power_index].spawn_level_stat == i) {
310 stat_val = e->stats.summoner->get_primary(i);
311 break;
312 }
313 }
314
315 e->stats.level = powers->powers[e->stats.summoned_power_index].spawn_level_qty
316 * (stat_val / powers->powers[e->stats.summoned_power_index].spawn_level_every);
317 }
318 }
319
320 // apply Effects and set HP to max HP
321 e->stats.recalc();
322 }
323
324 if (mapr->collider.isValidPosition(espawn.pos.x, espawn.pos.y, e->stats.movement_type, MapCollision::COLLIDE_NORMAL) || !e->stats.hero_ally) {
325 e->stats.pos.x = espawn.pos.x;
326 e->stats.pos.y = espawn.pos.y;
327 }
328 else {
329 e->stats.pos.x = pc->stats.pos.x;
330 e->stats.pos.y = pc->stats.pos.y;
331 }
332
333 // special animation state for spawning entities
334 e->stats.cur_state = StatBlock::ENTITY_SPAWN;
335
336 //now apply post effects to the spawned entity
337 if(e->stats.summoned_power_index > 0)
338 powers->effect(&e->stats, (espawn.summoner != NULL ? espawn.summoner : &e->stats), e->stats.summoned_power_index, e->stats.hero_ally ? Power::SOURCE_TYPE_HERO : Power::SOURCE_TYPE_ENEMY);
339
340 //apply party passives
341 //synchronise tha party passives in the pc stat block with the passives in the allies stat blocks
342 //at the time the summon is spawned, it takes the passives available at that time. if the passives change later, the changes wont affect summons retrospectively. could be exploited with equipment switching
343 for (unsigned i=0; i< pc->stats.powers_passive.size(); i++) {
344 PowerID pwr = pc->stats.powers_passive[i];
345 if (powers->powers[pwr].passive && powers->powers[pwr].buff_party && (e->stats.hero_ally || e->stats.enemy_ally)
346 && (powers->powers[pwr].buff_party_power_id == 0 || powers->powers[pwr].buff_party_power_id == e->stats.summoned_power_index)) {
347
348 e->stats.powers_passive.push_back(pwr);
349 }
350 }
351
352 for (unsigned i=0; i<pc->stats.powers_list_items.size(); i++) {
353 PowerID pwr = pc->stats.powers_list_items[i];
354 if (powers->powers[pwr].passive && powers->powers[pwr].buff_party && (e->stats.hero_ally || e->stats.enemy_ally)
355 && (powers->powers[pwr].buff_party_power_id == 0 || powers->powers[pwr].buff_party_power_id == e->stats.summoned_power_index)) {
356
357 e->stats.powers_passive.push_back(pwr);
358 }
359 }
360
361 entities.push_back(e);
362
363 mapr->collider.block(e->stats.pos.x, e->stats.pos.y, e->stats.hero_ally);
364 }
365 }
366
367 bool EntityManager::checkPartyMembers() {
368 for (unsigned int i=0; i < entities.size(); i++) {
369 if(entities[i]->stats.hero_ally && entities[i]->stats.hp > 0) {
370 return true;
371 }
372 }
373 return false;
374 }
375
376 /**
377 * perform logic() for all entities
378 */
379 void EntityManager::logic() {
380
381 if (player_blocked) {
382 player_blocked_timer.tick();
383 if (player_blocked_timer.isEnd())
384 player_blocked = false;
385 }
386
387 handleSpawn();
388
389 std::vector<Entity*>::iterator it;
390 for (it = entities.begin(); it != entities.end(); ++it) {
391 // new actions this round
392 (*it)->stats.hero_stealth = hero_stealth;
393 (*it)->logic();
394 }
395 }
396
397 Entity* EntityManager::entityFocus(const Point& mouse, const FPoint& cam, bool alive_only) {
398 Point p;
399 Rect r;
400 for(unsigned int i = 0; i < entities.size(); i++) {
401 if(alive_only && (entities[i]->stats.cur_state == StatBlock::ENTITY_DEAD || entities[i]->stats.cur_state == StatBlock::ENTITY_CRITDEAD)) {
402 continue;
403 }
404 p = Utils::mapToScreen(entities[i]->stats.pos.x, entities[i]->stats.pos.y, cam.x, cam.y);
405
406 Renderable ren = entities[i]->getRender();
407 r.w = ren.src.w;
408 r.h = ren.src.h;
409 r.x = p.x - ren.offset.x;
410 r.y = p.y - ren.offset.y;
411
412 if (Utils::isWithinRect(r, mouse)) {
413 Entity *entity = entities[i];
414 return entity;
415 }
416 }
417 return NULL;
418 }
419
420 Entity* EntityManager::getNearestEntity(const FPoint& pos, bool get_corpse, float *saved_distance, float max_range) {
421 Entity* nearest = NULL;
422 float best_distance = std::numeric_limits<float>::max();
423
424 for (unsigned i=0; i<entities.size(); i++) {
425 if(!get_corpse && (entities[i]->stats.cur_state == StatBlock::ENTITY_DEAD || entities[i]->stats.cur_state == StatBlock::ENTITY_CRITDEAD)) {
426 continue;
427 }
428 if (get_corpse && !entities[i]->stats.corpse) {
429 continue;
430 }
431
432 float distance = Utils::calcDist(pos, entities[i]->stats.pos);
433 if (distance < best_distance) {
434 best_distance = distance;
435 nearest = entities[i];
436 }
437 }
438
439 if (nearest && saved_distance)
440 *saved_distance = best_distance;
441
442 if (!saved_distance && best_distance > max_range)
443 nearest = NULL;
444
445 return nearest;
446 }
447
448 bool EntityManager::isCleared() {
449 if (entities.empty()) return true;
450
451 for (unsigned int i=0; i < entities.size(); i++) {
452 if (entities[i]->stats.alive && !entities[i]->stats.hero_ally)
453 return false;
454 }
455
456 return true;
457 }
458
459 void EntityManager::spawn(const std::string& entity_type, const Point& target) {
460 Map_Enemy espawn;
461
462 espawn.type = entity_type;
463 espawn.pos = FPoint(target);
464 espawn.pos.x += 0.5f;
465 espawn.pos.y += 0.5f;
466
467 // quick spawns start facing a random direction
468 espawn.direction = rand() % 8;
469
470 if (!mapr->collider.isEmpty(espawn.pos.x, espawn.pos.y)) {
471 return;
472 }
473 else {
474 mapr->collider.block(espawn.pos.x, espawn.pos.y, !MapCollision::IS_ALLY);
475 }
476
477 powers->map_enemies.push(espawn);
478 }
479
480 /**
481 * addRenders()
482 * Map objects need to be drawn in Z order, so we allow a parent object (GameEngine)
483 * to collect all mobile sprites each frame.
484 */
485 void EntityManager::addRenders(std::vector<Renderable> &r, std::vector<Renderable> &r_dead) {
486 std::vector<Entity*>::iterator it;
487 for (it = entities.begin(); it != entities.end(); ++it) {
488 bool dead = (*it)->stats.corpse;
489 if (!dead || !(*it)->stats.corpse_timer.isEnd()) {
490 Renderable re = (*it)->getRender();
491 re.prio = 1;
492 (*it)->stats.effects.getCurrentColor(re.color_mod);
493 (*it)->stats.effects.getCurrentAlpha(re.alpha_mod);
494
495 // fade out corpses
496 unsigned fade_time = (eset->misc.corpse_timeout > settings->max_frames_per_sec) ? settings->max_frames_per_sec : eset->misc.corpse_timeout;
497 if (dead && fade_time != 0 && (*it)->stats.corpse_timer.getCurrent() <= fade_time) {
498 re.alpha_mod = static_cast<uint8_t>(static_cast<float>((*it)->stats.corpse_timer.getCurrent()) * (re.alpha_mod / static_cast<float>(fade_time)));
499 }
500
501 // draw corpses below objects so that floor loot is more visible
502 (dead ? r_dead : r).push_back(re);
503
504 // add effects
505 for (size_t i = 0; i < (*it)->stats.effects.effect_list.size(); ++i) {
506 Effect& ei = (*it)->stats.effects.effect_list[i];
507 if (ei.animation) {
508 Renderable ren = ei.animation->getCurrentFrame(0);
509 ren.map_pos = (*it)->stats.pos;
510 if (ei.render_above)
511 ren.prio = 2;
512 else
513 ren.prio = 0;
514 r.push_back(ren);
515 }
516 }
517 }
518 }
519 }
520
521 EntityManager::~EntityManager() {
522 for (unsigned int i=0; i < entities.size(); i++) {
523 anim->decreaseCount(entities[i]->animationSet->getName());
524 entities[i]->unloadSounds();
525 delete entities[i];
526 }
527 for (unsigned int i=0; i < prototypes.size(); i++) {
528 anim->decreaseCount(prototypes[i].animationSet->getName());
529 prototypes[i].unloadSounds();
530 }
531 }
0 /*
1 Copyright © 2011-2012 Clint Bellanger
2 Copyright © 2012 Stefan Beller
3 Copyright © 2013 Henrik Andersson
4 Copyright © 2012-2016 Justin Jacobs
5
6 This file is part of FLARE.
7
8 FLARE is free software: you can redistribute it and/or modify it under the terms
9 of the GNU General Public License as published by the Free Software Foundation,
10 either version 3 of the License, or (at your option) any later version.
11
12 FLARE is distributed in the hope that it will be useful, but WITHOUT ANY
13 WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A
14 PARTICULAR PURPOSE. See the GNU General Public License for more details.
15
16 You should have received a copy of the GNU General Public License along with
17 FLARE. If not, see http://www.gnu.org/licenses/
18 */
19
20 /*
21 * class EntityManager
22 */
23
24
25 #ifndef ENTITY_MANAGER_H
26 #define ENTITY_MANAGER_H
27
28 #include "CommonIncludes.h"
29 #include "Utils.h"
30
31 class Animation;
32 class Entity;
33
34 class EntityManager {
35 private:
36
37 void loadAnimations(Entity *e);
38
39 std::vector<std::string> anim_prefixes;
40 std::vector<std::vector<Animation*> > anim_entities;
41
42 protected:
43 /**
44 * callee is responsible for deleting returned entity object
45 */
46 size_t loadEntityPrototype(const std::string& type_id);
47
48 std::vector<Entity> prototypes;
49
50 public:
51 EntityManager();
52 ~EntityManager();
53
54 Entity *getEntityPrototype(const std::string& type_id);
55
56 void handleNewMap();
57 void handleSpawn();
58 bool checkPartyMembers();
59 void logic();
60 void addRenders(std::vector<Renderable> &r, std::vector<Renderable> &r_dead);
61 void checkEnemiesforXP();
62 bool isCleared();
63 void spawn(const std::string& entity_type, const Point& target);
64 Entity *entityFocus(const Point& mouse, const FPoint& cam, bool alive_only);
65 Entity* getNearestEntity(const FPoint& pos, bool get_corpse, float *saved_distance, float max_range);
66
67 // vars
68 std::vector<Entity*> entities;
69 int hero_stealth;
70
71 bool player_blocked;
72 Timer player_blocked_timer;
73
74 static const bool GET_CORPSE = true;
75 static const bool IS_ALIVE = true;
76 };
77
78
79 #endif
1717
1818 #include "Avatar.h"
1919 #include "CampaignManager.h"
20 #include "EnemyManager.h"
20 #include "EntityManager.h"
2121 #include "EngineSettings.h"
2222 #include "EventManager.h"
2323 #include "FileParser.h"
4242 */
4343 Event::Event()
4444 : type("")
45 , activate_type(-1)
45 , activate_type(ACTIVATE_ON_TRIGGER)
4646 , components(std::vector<EventComponent>())
4747 , location(Rect())
4848 , hotspot(Rect())
9595 evnt->type = infile.val;
9696 }
9797 else if (infile.key == "activate") {
98 // @ATTR event.activate|["on_trigger", "on_load", "on_leave", "on_mapexit", "on_clear", "static"]|Set the state in which the event will be activated (map events only).
98 // @ATTR event.activate|["on_trigger", "on_interact", "on_load", "on_leave", "on_mapexit", "on_clear", "static"]|Set the state in which the event will be activated (map events only). on_trigger = the player is standing in the event area or the player interacts with the hotspot. on_interact = the player ineracts with the hotspot. on_mapexit = as the player leaves the map. on_leave = as the player steps outside of an event area they were previously inside of. on_load = as the player enters a map. on_clear = all of the enemies on a map have been defeated. static = constantly, every frame.
9999 if (infile.val == "on_trigger") {
100100 evnt->activate_type = Event::ACTIVATE_ON_TRIGGER;
101 }
102 else if (infile.val == "on_interact") {
103 evnt->activate_type = Event::ACTIVATE_ON_INTERACT;
101104 }
102105 else if (infile.val == "on_mapexit") {
103106 // no need to set keep_after_trigger to false correctly, it's ignored anyway
118121 evnt->activate_type = Event::ACTIVATE_STATIC;
119122 }
120123 else {
121 infile.error("EventManager: Event activation type '%s' unknown, change to \"on_trigger\" to suppress this warning.", infile.val.c_str());
124 infile.error("EventManager: Event activation type '%s' unknown. Defaulting to 'on_trigger'.", infile.val.c_str());
125 evnt->activate_type = Event::ACTIVATE_ON_TRIGGER;
122126 }
123127 }
124128 else if (infile.key == "location") {
200204 e->s = msg->get(val);
201205 }
202206 else if (key == "power_path") {
203 // @ATTR event.power_path|["hero", point]|Event power path
207 // @ATTR event.power_path|int, int, ["hero", point] : Source X, Source Y, Destination|Path that an event power will take.
204208 e->type = EventComponent::POWER_PATH;
205209
206210 // x,y are src, if s=="hero" we target the hero,
221225 // @ATTR event.power_damage|int, int : Min, Max|Range of power damage
222226 e->type = EventComponent::POWER_DAMAGE;
223227
224 e->a = Parse::popFirstInt(val);
225 e->b = Parse::popFirstInt(val);
228 e->x = Parse::popFirstInt(val);
229 e->y = Parse::popFirstInt(val);
226230 }
227231 else if (key == "intermap") {
228232 // @ATTR event.intermap|filename, int, int : Map file, X, Y|Jump to specific map at location specified.
386390 e->x = Parse::popFirstInt(val);
387391 }
388392 else if (key == "requires_item") {
389 // @ATTR event.requires_item|list(item_id)|Event requires specific item (not equipped)
393 // @ATTR event.requires_item|list(item_id)|Event requires specific item (not equipped). Quantity can be specified by appending ":Q" to the item_id, where Q is an integer.
390394 e->type = EventComponent::REQUIRES_ITEM;
391395
392 e->x = Parse::popFirstInt(val);
396 ItemStack item_stack = Parse::toItemQuantityPair(Parse::popFirstString(val));
397 e->id = item_stack.item;
398 e->x = item_stack.quantity;
393399
394400 // add repeating requires_item
395401 if (evnt) {
398404 evnt->components.push_back(EventComponent());
399405 e = &evnt->components.back();
400406 e->type = EventComponent::REQUIRES_ITEM;
401 e->x = Parse::toInt(repeat_val);
407 item_stack = Parse::toItemQuantityPair(repeat_val);
408 e->id = item_stack.item;
409 e->x = item_stack.quantity;
402410
403411 repeat_val = Parse::popFirstString(val);
404412 }
405413 }
406414 }
407415 else if (key == "requires_not_item") {
408 // @ATTR event.requires_not_item|list(item_id)|Event requires not having a specific item (not equipped)
416 // @ATTR event.requires_not_item|list(item_id)|Event requires not having a specific item (not equipped). Quantity can be specified by appending ":Q" to the item_id, where Q is an integer.
409417 e->type = EventComponent::REQUIRES_NOT_ITEM;
410418
411 e->x = Parse::popFirstInt(val);
419 ItemStack item_stack = Parse::toItemQuantityPair(Parse::popFirstString(val));
420 e->id = item_stack.item;
421 e->x = item_stack.quantity;
412422
413423 // add repeating requires_not_item
414424 if (evnt) {
417427 evnt->components.push_back(EventComponent());
418428 e = &evnt->components.back();
419429 e->type = EventComponent::REQUIRES_NOT_ITEM;
420 e->x = Parse::toInt(repeat_val);
430 item_stack = Parse::toItemQuantityPair(repeat_val);
431 e->id = item_stack.item;
432 e->x = item_stack.quantity;
421433
422434 repeat_val = Parse::popFirstString(val);
423435 }
480492 e->x = std::max(Parse::toInt(val), 0);
481493 }
482494 else if (key == "remove_item") {
483 // @ATTR event.remove_item|list(item_id)|Removes specified item from hero inventory
495 // @ATTR event.remove_item|list(item_id)|Removes specified item from hero inventory. Quantity can be specified by appending ":Q" to the item_id, where Q is an integer.
484496 e->type = EventComponent::REMOVE_ITEM;
485497
486 e->x = Parse::popFirstInt(val);
498 ItemStack item_stack = Parse::toItemQuantityPair(Parse::popFirstString(val));
499 e->id = item_stack.item;
500 e->x = item_stack.quantity;
487501
488502 // add repeating remove_item
489503 if (evnt) {
492506 evnt->components.push_back(EventComponent());
493507 e = &evnt->components.back();
494508 e->type = EventComponent::REMOVE_ITEM;
495 e->x = Parse::toInt(repeat_val);
509 item_stack = Parse::toItemQuantityPair(repeat_val);
510 e->id = item_stack.item;
511 e->x = item_stack.quantity;
496512
497513 repeat_val = Parse::popFirstString(val);
498514 }
511527 e->x = std::max(Parse::toInt(val), 0);
512528 }
513529 else if (key == "reward_item") {
514 // @ATTR event.reward_item|item_id, int : Item, Quantity|Reward hero with y number of item x.
530 // @ATTR event.reward_item|(list(item_id)|Reward hero with a specified item. Quantity can be specified by appending ":Q" to the item_id, where Q is an integer. To maintain backwards compatibility, the quantity must be defined for at least the first item in the list in order to use this syntax.
531 // @ATTR event.reward_item|item_id, int : Item, Quantity|Reward hero with y number of item x. NOTE: This syntax is maintained for backwards compatibility. It is recommended to use the above syntax instead.
515532 e->type = EventComponent::REWARD_ITEM;
516533
517 e->x = Parse::popFirstInt(val);
518 e->y = std::max(Parse::popFirstInt(val), 1);
534 bool check_pair = false;
535 ItemStack item_stack = Parse::toItemQuantityPair(Parse::popFirstString(val), &check_pair);
536
537 if (!check_pair) {
538 // item:quantity syntax not detected, falling back to the old syntax
539 e->id = item_stack.item;
540 e->x = std::max(Parse::popFirstInt(val), 1);
541 }
542 else {
543 e->id = item_stack.item;
544 e->x = item_stack.quantity;
545
546 // add repeating reward_item
547 if (evnt) {
548 std::string repeat_val = Parse::popFirstString(val);
549 while (repeat_val != "") {
550 evnt->components.push_back(EventComponent());
551 e = &evnt->components.back();
552 e->type = EventComponent::REWARD_ITEM;
553 item_stack = Parse::toItemQuantityPair(repeat_val);
554 e->id = item_stack.item;
555 e->x = item_stack.quantity;
556
557 repeat_val = Parse::popFirstString(val);
558 }
559 }
560 }
519561 }
520562 else if (key == "reward_loot") {
521563 // @ATTR event.reward_loot|list(loot)|Reward hero with random loot.
540582 // @ATTR event.power|power_id|Specify power coupled with event.
541583 e->type = EventComponent::POWER;
542584
543 e->x = Parse::toInt(val);
585 e->id = Parse::toPowerID(val);
544586 }
545587 else if (key == "spawn") {
546588 // @ATTR event.spawn|list(predefined_string, int, int) : Enemy category, X, Y|Spawn an enemy from this category at location
639681
640682 if (!use_engine_defaults.empty())
641683 e->y = static_cast<int>(Parse::toBool(use_engine_defaults));
684 }
685 else if (key == "show_on_minimap") {
686 // @ATTR event.show_on_minimap|bool|If true, this event will be shown on the minimap if it is the appropriate type (e.g. an intermap teleport).
687 e->type = EventComponent::SHOW_ON_MINIMAP;
688
689 e->x = static_cast<int>(Parse::toBool(val));
690 }
691 else if (key == "parallax_layers") {
692 // @ATTR event.parallax_layers|filename|Filename of a parallax layers definition to load.
693 e->type = EventComponent::PARALLAX_LAYERS;
694
695 e->s = val;
642696 }
643697 else {
644698 return false;
806860 pc->logMsg(ec->s, Avatar::MSG_UNIQUE);
807861 }
808862 else if (ec->type == EventComponent::SHAKYCAM) {
809 mapr->shaky_cam_timer.setDuration(ec->x);
863 mapr->cam.shake_timer.setDuration(ec->x);
810864 }
811865 else if (ec->type == EventComponent::REMOVE_CURRENCY) {
812866 camp->removeCurrency(ec->x);
813867 }
814868 else if (ec->type == EventComponent::REMOVE_ITEM) {
815 camp->removeItem(ec->x);
869 camp->removeItem(ItemStack(ec->id, ec->x));
816870 }
817871 else if (ec->type == EventComponent::REWARD_XP) {
818872 camp->rewardXP(ec->x, CampaignManager::XP_SHOW_MSG);
821875 camp->rewardCurrency(ec->x);
822876 }
823877 else if (ec->type == EventComponent::REWARD_ITEM) {
824 ItemStack istack;
825 istack.item = ec->x;
826 istack.quantity = ec->y;
827 camp->rewardItem(istack);
878 camp->rewardItem(ItemStack(ec->id, ec->x));
828879 }
829880 else if (ec->type == EventComponent::REWARD_LOOT) {
830881 std::vector<EventComponent> random_table;
858909 Point spawn_pos;
859910 spawn_pos.x = ec->x;
860911 spawn_pos.y = ec->y;
861 enemym->spawn(ec->s, spawn_pos);
912 entitym->spawn(ec->s, spawn_pos);
862913 }
863914 else if (ec->type == EventComponent::POWER) {
864915 EventComponent *ec_path = ev.getComponent(EventComponent::POWER_PATH);
882933 target.y = static_cast<float>(ev.location.y) + 0.5f;
883934 }
884935
885 // ec->x is power id
886 // ec->y is statblock index
887 mapr->activatePower(ec->x, ec->y, target);
936 // ec->id is power id
937 // ec->x is statblock index
938 mapr->activatePower(ec->id, ec->x, target);
888939 }
889940 else if (ec->type == EventComponent::STASH) {
890941 mapr->stash = ec->x == 0 ? false : true;
9611012 }
9621013 menu_powers->setUnlockedPowers();
9631014
964 menu_act->clear();
1015 menu_act->clear(MenuActionBar::CLEAR_SKIP_ITEMS);
9651016 if (pc_class && !use_engine_defaults) {
966 menu->act->set(pc_class->hotkeys);
1017 menu->act->set(pc_class->hotkeys, MenuActionBar::SET_SKIP_EMPTY);
9671018 }
9681019 menu->pow->newPowerNotification = false;
9691020
9701021 pc->respawn = true; // re-applies equipment, also revives the player
9711022 pc->stats.refresh_stats = true;
9721023 }
1024 }
1025 else if (ec->type == EventComponent::PARALLAX_LAYERS) {
1026 mapr->setMapParallax(ec->s);
9731027 }
9741028 }
9751029 return !ev.keep_after_trigger;
10051059 if (script_evnt.empty())
10061060 continue;
10071061
1008 if (script_file.key == "script" && script_file.val == filename) {
1062 if (script_file.key == "script" && Filesystem::convertSlashes(script_file.val) == Filesystem::convertSlashes(filename)) {
10091063 script_file.error("EventManager: Calling a script from within itself is not allowed.");
10101064 continue;
10111065 }
10181072 // create StatBlocks if we need them
10191073 EventComponent *ec_power = script_evnt.front().getComponent(EventComponent::POWER);
10201074 if (ec_power) {
1021 ec_power->y = mapr->addEventStatBlock(script_evnt.front());
1075 ec_power->x = mapr->addEventStatBlock(script_evnt.front());
10221076 }
10231077
10241078 if (isActive(script_evnt.front())) {
7474 SCRIPT = 41,
7575 CHANCE_EXEC = 42,
7676 RESPEC = 43,
77 NPC_ID = 44,
78 NPC_HOTSPOT = 45,
79 NPC_DIALOG_THEM = 46,
80 NPC_DIALOG_YOU = 47,
81 NPC_VOICE = 48,
82 NPC_DIALOG_TOPIC = 49,
83 NPC_DIALOG_GROUP = 50,
84 NPC_DIALOG_ID = 51,
85 NPC_DIALOG_RESPONSE = 52,
86 NPC_DIALOG_RESPONSE_ONLY = 53,
87 NPC_ALLOW_MOVEMENT = 54,
88 NPC_PORTRAIT_THEM = 55,
89 NPC_PORTRAIT_YOU = 56,
90 QUEST_TEXT = 57,
91 WAS_INSIDE_EVENT_AREA = 58
77 SHOW_ON_MINIMAP = 44,
78 PARALLAX_LAYERS = 45,
79 NPC_ID = 46,
80 NPC_HOTSPOT = 47,
81 NPC_DIALOG_THEM = 48,
82 NPC_DIALOG_YOU = 49,
83 NPC_VOICE = 50,
84 NPC_DIALOG_TOPIC = 51,
85 NPC_DIALOG_GROUP = 52,
86 NPC_DIALOG_ID = 53,
87 NPC_DIALOG_RESPONSE = 54,
88 NPC_DIALOG_RESPONSE_ONLY = 55,
89 NPC_ALLOW_MOVEMENT = 56,
90 NPC_PORTRAIT_THEM = 57,
91 NPC_PORTRAIT_YOU = 58,
92 QUEST_TEXT = 59,
93 WAS_INSIDE_EVENT_AREA = 60,
94 NPC_TAKE_A_PARTY = 61
9295 };
9396
9497 int type;
100103 int a;
101104 int b;
102105 int c;
106 float f;
107 size_t id;
103108
104109 EventComponent()
105110 : type(NONE)
110115 , z(0)
111116 , a(0)
112117 , b(0)
113 , c(0) {
118 , c(0)
119 , f(0)
120 , id(0) {
114121 }
115122 };
116123
118125 public:
119126 enum {
120127 ACTIVATE_ON_TRIGGER = 0,
121 ACTIVATE_ON_MAPEXIT = 1,
122 ACTIVATE_ON_LEAVE = 2,
123 ACTIVATE_ON_LOAD = 3,
124 ACTIVATE_ON_CLEAR = 4,
125 ACTIVATE_STATIC = 5
128 ACTIVATE_ON_INTERACT = 1,
129 ACTIVATE_ON_MAPEXIT = 2,
130 ACTIVATE_ON_LEAVE = 3,
131 ACTIVATE_ON_LOAD = 4,
132 ACTIVATE_ON_CLEAR = 5,
133 ACTIVATE_STATIC = 6
126134 };
127135
128136 std::string type;
4242
4343 filenames.clear();
4444 if (is_mod_file) {
45 filenames = mods->list(_filename, ModManager::LIST_FULL_PATHS);
45 filenames = mods->list(Filesystem::convertSlashes(_filename), ModManager::LIST_FULL_PATHS);
4646 }
4747 else {
48 filenames.push_back(_filename);
48 filenames.push_back(Filesystem::convertSlashes(_filename));
4949 }
5050 current_index = 0;
5151 line_number = 0;
231231 va_list args;
232232
233233 va_start(args, format);
234 vsprintf(buffer, format, args);
234 vsnprintf(buffer, 4096, format, args);
235235 va_end(args);
236236
237237 errorBuf(buffer);
129129 int max_width = 0;
130130
131131 std::string next_word;
132 std::stringstream builder;
133 std::stringstream builder_prev;
132 std::string builder("");
133 std::string builder_prev("");
134134 char space = 32;
135135 size_t cursor = 0;
136136 std::string fulltext = text + " ";
137137 std::string long_token;
138138
139 builder.str("");
140 builder_prev.str("");
139 builder.reserve(BUILDER_RESERVE);
140 builder_prev.reserve(BUILDER_RESERVE);
141141
142142 next_word = getNextToken(fulltext, cursor, space);
143143
144144 while(cursor != std::string::npos) {
145145 size_t old_cursor = cursor;
146146
147 builder << next_word;
148
149 if (calc_width(builder.str()) > width) {
147 builder += next_word;
148
149 if (calc_width(builder) > width) {
150150
151151 // this word can't fit on this line, so word wrap
152 if (!builder_prev.str().empty()) {
152 if (!builder_prev.empty()) {
153153 height += getLineHeight();
154 if (calc_width(builder_prev.str()) > max_width) {
155 max_width = calc_width(builder_prev.str());
154 if (calc_width(builder_prev) > max_width) {
155 max_width = calc_width(builder_prev);
156156 }
157157 }
158158
159 builder_prev.str("");
160 builder.str("");
159 builder = "";
160 builder_prev = "";
161161
162162 long_token = popTokenByWidth(next_word, width);
163163
176176 }
177177 }
178178
179 builder << next_word << " ";
180 builder_prev.str(builder.str());
179 builder += next_word + " ";
180 builder_prev = builder;
181181 }
182182 else {
183 builder << " ";
184 builder_prev.str(builder.str());
183 builder += " ";
184 builder_prev = builder;
185185 }
186186
187187 next_word = getNextToken(fulltext, cursor, space); // next word
191191 break;
192192 }
193193
194 builder.str(Parse::trim(builder.str())); //removes whitespace that shouldn't be included in the size
195 if (!builder.str().empty())
194 builder = Parse::trim(builder); //removes whitespace that shouldn't be included in the size
195 if (!builder.empty())
196196 height += getLineHeight();
197 if (calc_width(builder.str()) > max_width) max_width = calc_width(builder.str());
197 if (calc_width(builder) > max_width)
198 max_width = calc_width(builder);
198199
199200 // handle blank lines
200201 if (text_with_newlines == " ")
243244 std::string fulltext = text + " ";
244245 cursor_y = y;
245246 std::string next_word;
246 std::stringstream builder;
247 std::stringstream builder_prev;
247 std::string builder("");
248 std::string builder_prev("");
248249 char space = 32;
249250 size_t cursor = 0;
250251 std::string long_token;
251252
252 builder.str("");
253 builder_prev.str("");
253 builder.reserve(BUILDER_RESERVE);
254 builder_prev.reserve(BUILDER_RESERVE);
254255
255256 next_word = getNextToken(fulltext, cursor, space);
256257
257258 while(cursor != std::string::npos) {
258259 size_t old_cursor = cursor;
259260
260 builder << next_word;
261
262 if (calc_width(builder.str()) > width) {
263 if (!builder_prev.str().empty()) {
264 renderInternal(builder_prev.str(), x, cursor_y, justify, target, color);
261 builder += next_word;
262
263 if (calc_width(builder) > width) {
264 if (!builder_prev.empty()) {
265 renderInternal(builder_prev, x, cursor_y, justify, target, color);
265266 cursor_y += getLineHeight();
266267 }
267 builder_prev.str("");
268 builder.str("");
268 builder = "";
269 builder_prev = "";
269270
270271 long_token = popTokenByWidth(next_word, width);
271272
282283 }
283284 }
284285
285 builder << next_word << " ";
286 builder_prev.str(builder.str());
286 builder += next_word + " ";
287 builder_prev = builder;
287288 }
288289 else {
289 builder << " ";
290 builder_prev.str(builder.str());
290 builder += " ";
291 builder_prev = builder;
291292 }
292293
293294 next_word = getNextToken(fulltext, cursor, space); // next word
297298 break;
298299 }
299300
300 renderInternal(builder.str(), x, cursor_y, justify, target, color);
301 renderInternal(builder, x, cursor_y, justify, target, color);
301302 cursor_y += getLineHeight();
302303
303304 }
9999 std::string getNextToken(const std::string& s, size_t& cursor, char separator);
100100
101101 std::vector<Color> font_colors;
102
103 private:
104 static const size_t BUILDER_RESERVE = 128;
102105 };
103106
104107 #endif
0 /*
1 Copyright © 2012 Clint Bellanger
2 Copyright © 2012 davidriod
3 Copyright © 2012 Igor Paliychuk
4 Copyright © 2012 Stefan Beller
5 Copyright © 2013 Kurt Rinnert
6 Copyright © 2014 Henrik Andersson
7 Copyright © 2014-2016 Justin Jacobs
8
9 This file is part of FLARE.
10
11 FLARE is free software: you can redistribute it and/or modify it under the terms
12 of the GNU General Public License as published by the Free Software Foundation,
13 either version 3 of the License, or (at your option) any later version.
14
15 FLARE is distributed in the hope that it will be useful, but WITHOUT ANY
16 WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A
17 PARTICULAR PURPOSE. See the GNU General Public License for more details.
18
19 You should have received a copy of the GNU General Public License along with
20 FLARE. If not, see http://www.gnu.org/licenses/
21 */
22
23 /**
24 * GameStateConfig
25 *
26 * Handle game Settings Menu
27 */
28
29 #include "CombatText.h"
30 #include "DeviceList.h"
31 #include "EngineSettings.h"
32 #include "FontEngine.h"
33 #include "GameStateConfig.h"
34 #include "GameStateTitle.h"
35 #include "InputState.h"
36 #include "MenuConfig.h"
37 #include "MessageEngine.h"
38 #include "ModManager.h"
39 #include "RenderDevice.h"
40 #include "Settings.h"
41 #include "SharedResources.h"
42 #include "SoundManager.h"
43 #include "Stats.h"
44 #include "TooltipManager.h"
45
46 GameStateConfig::GameStateConfig ()
47 : GameState()
48 , menu_config(new MenuConfig(MenuConfig::IS_GAME_STATE))
49 {
50
51 // don't save settings if we close the game while in this menu
52 save_settings_on_exit = false;
53 }
54
55 GameStateConfig::~GameStateConfig() {
56 delete menu_config;
57 }
58
59 void GameStateConfig::logic() {
60 menu_config->logic();
61
62 if (menu_config->force_refresh_background) {
63 force_refresh_background = true;
64 menu_config->force_refresh_background = false;
65 }
66 if (menu_config->reload_music) {
67 reload_music = true;
68 menu_config->reload_music = false;
69 }
70
71 if (menu_config->clicked_accept) {
72 menu_config->clicked_accept = false;
73 logicAccept();
74 }
75 else if (menu_config->clicked_cancel) {
76 menu_config->clicked_cancel = false;
77 logicCancel();
78 }
79 }
80
81 void GameStateConfig::logicAccept() {
82 // new_render_device = renderer_lstb->getValue();
83 std::string new_render_device = menu_config->getRenderDevice();
84
85 if (menu_config->setMods()) {
86 snd->unloadMusic();
87 reload_music = true;
88 reload_backgrounds = true;
89 delete mods;
90 mods = new ModManager(NULL);
91 settings->prev_save_slot = -1;
92 }
93 delete msg;
94 msg = new MessageEngine();
95 inpt->saveKeyBindings();
96 inpt->setKeybindNames();
97 eset->load();
98 Stats::init();
99 refreshFont();
100 if ((settings->enable_joystick) && (inpt->getNumJoysticks() > 0)) {
101 inpt->initJoystick();
102 }
103 menu_config->cleanup();
104
105 showLoading();
106 // need to delete the "Loading..." message here, as we're recreating our render context
107 if (loading_tip) {
108 delete loading_tip;
109 loading_tip = NULL;
110 }
111
112 delete tooltipm;
113
114 // we can't replace the render device in-place, so soft-reset the game
115 if (new_render_device != settings->render_device_name) {
116 settings->render_device_name = new_render_device;
117 inpt->done = true;
118 settings->soft_reset = true;
119 }
120
121 render_device->createContext();
122 tooltipm = new TooltipManager();
123 settings->saveSettings();
124 setRequestedGameState(new GameStateTitle());
125 }
126
127 void GameStateConfig::logicCancel() {
128 inpt->lock[Input::CANCEL] = true;
129 settings->loadSettings();
130 inpt->loadKeyBindings();
131 delete msg;
132 msg = new MessageEngine();
133 inpt->setKeybindNames();
134 eset->load();
135 Stats::init();
136 refreshFont();
137 menu_config->update();
138 menu_config->cleanup();
139 render_device->windowResize();
140 render_device->updateTitleBar();
141 showLoading();
142 setRequestedGameState(new GameStateTitle());
143 }
144
145 void GameStateConfig::render() {
146 if (requestedGameState != NULL) {
147 // we're in the process of switching game states, so skip rendering
148 return;
149 }
150
151 menu_config->render();
152 }
153
154 void GameStateConfig::refreshFont() {
155 delete font;
156 font = getFontEngine();
157 delete comb;
158 comb = new CombatText();
159 }
160
0 /*
1 Copyright © 2012 Clint Bellanger
2 Copyright © 2012 davidriod
3 Copyright © 2012 Igor Paliychuk
4 Copyright © 2013 Kurt Rinnert
5 Copyright © 2014-2016 Justin Jacobs
6
7 This file is part of FLARE.
8
9 FLARE is free software: you can redistribute it and/or modify it under the terms
10 of the GNU General Public License as published by the Free Software Foundation,
11 either version 3 of the License, or (at your option) any later version.
12
13 FLARE is distributed in the hope that it will be useful, but WITHOUT ANY
14 WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A
15 PARTICULAR PURPOSE. See the GNU General Public License for more details.
16
17 You should have received a copy of the GNU General Public License along with
18 FLARE. If not, see http://www.gnu.org/licenses/
19 */
20
21 /**
22 * GameStateConfig
23 *
24 * Handle game Settings Menu
25 */
26
27 #ifndef GAMESTATECONFIG_H
28 #define GAMESTATECONFIG_H
29
30 #include "CommonIncludes.h"
31 #include "GameState.h"
32
33 class MenuConfig;
34
35 class GameStateConfig : public GameState {
36 private:
37 MenuConfig* menu_config;
38
39 public:
40 explicit GameStateConfig();
41 ~GameStateConfig();
42
43 void logic();
44 void logicAccept();
45 void logicCancel();
46 void refreshFont();
47
48 void render();
49 };
50
51 #endif
52
+0
-954
src/GameStateConfigBase.cpp less more
0 /*
1 Copyright © 2012 Clint Bellanger
2 Copyright © 2012 davidriod
3 Copyright © 2012 Igor Paliychuk
4 Copyright © 2012 Stefan Beller
5 Copyright © 2013 Kurt Rinnert
6 Copyright © 2014 Henrik Andersson
7 Copyright © 2014-2016 Justin Jacobs
8
9 This file is part of FLARE.
10
11 FLARE is free software: you can redistribute it and/or modify it under the terms
12 of the GNU General Public License as published by the Free Software Foundation,
13 either version 3 of the License, or (at your option) any later version.
14
15 FLARE is distributed in the hope that it will be useful, but WITHOUT ANY
16 WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A
17 PARTICULAR PURPOSE. See the GNU General Public License for more details.
18
19 You should have received a copy of the GNU General Public License along with
20 FLARE. If not, see http://www.gnu.org/licenses/
21 */
22
23 /**
24 * GameStateConfigBase
25 *
26 * Handle game Settings Menu
27 */
28
29 #include "CombatText.h"
30 #include "CommonIncludes.h"
31 #include "DeviceList.h"
32 #include "EngineSettings.h"
33 #include "FileParser.h"
34 #include "FontEngine.h"
35 #include "GameStateConfigBase.h"
36 #include "GameStateTitle.h"
37 #include "InputState.h"
38 #include "MenuConfirm.h"
39 #include "MessageEngine.h"
40 #include "ModManager.h"
41 #include "Platform.h"
42 #include "RenderDevice.h"
43 #include "Settings.h"
44 #include "SharedResources.h"
45 #include "SoundManager.h"
46 #include "Stats.h"
47 #include "TooltipManager.h"
48 #include "UtilsFileSystem.h"
49 #include "UtilsParsing.h"
50 #include "Version.h"
51 #include "WidgetButton.h"
52 #include "WidgetCheckBox.h"
53 #include "WidgetListBox.h"
54 #include "WidgetSlider.h"
55 #include "WidgetTabControl.h"
56
57 GameStateConfigBase::GameStateConfigBase (bool do_init)
58 : GameState()
59 , child_widget()
60 , ok_button(new WidgetButton(WidgetButton::DEFAULT_FILE))
61 , defaults_button(new WidgetButton(WidgetButton::DEFAULT_FILE))
62 , cancel_button(new WidgetButton(WidgetButton::DEFAULT_FILE))
63 , background(NULL)
64 , show_fps_cb(new WidgetCheckBox(WidgetCheckBox::DEFAULT_FILE))
65 , show_fps_lb(new WidgetLabel())
66 , hardware_cursor_cb(new WidgetCheckBox(WidgetCheckBox::DEFAULT_FILE))
67 , hardware_cursor_lb(new WidgetLabel())
68 , colorblind_cb(new WidgetCheckBox(WidgetCheckBox::DEFAULT_FILE))
69 , colorblind_lb(new WidgetLabel())
70 , dev_mode_cb(new WidgetCheckBox(WidgetCheckBox::DEFAULT_FILE))
71 , dev_mode_lb(new WidgetLabel())
72 , subtitles_cb(new WidgetCheckBox(WidgetCheckBox::DEFAULT_FILE))
73 , subtitles_lb(new WidgetLabel())
74 , music_volume_sl(new WidgetSlider(WidgetSlider::DEFAULT_FILE))
75 , music_volume_lb(new WidgetLabel())
76 , sound_volume_sl(new WidgetSlider(WidgetSlider::DEFAULT_FILE))
77 , sound_volume_lb(new WidgetLabel())
78 , activemods_lstb(new WidgetListBox(10, WidgetListBox::DEFAULT_FILE))
79 , activemods_lb(new WidgetLabel())
80 , inactivemods_lstb(new WidgetListBox(10, WidgetListBox::DEFAULT_FILE))
81 , inactivemods_lb(new WidgetLabel())
82 , language_lstb(new WidgetListBox(10, WidgetListBox::DEFAULT_FILE))
83 , language_lb(new WidgetLabel())
84 , activemods_shiftup_btn(new WidgetButton("images/menus/buttons/up.png"))
85 , activemods_shiftdown_btn(new WidgetButton("images/menus/buttons/down.png"))
86 , activemods_deactivate_btn(new WidgetButton(WidgetButton::DEFAULT_FILE))
87 , inactivemods_activate_btn(new WidgetButton(WidgetButton::DEFAULT_FILE))
88 , defaults_confirm(new MenuConfirm(msg->get("Defaults"), msg->get("Reset ALL settings?")))
89 , active_tab(0)
90 , frame(0,0)
91 , frame_offset(11,8)
92 , tab_offset(3,0)
93 , new_render_device(settings->render_device_name)
94 {
95
96 // don't save settings if we close the game while in this menu
97 save_settings_on_exit = false;
98
99 Image *graphics;
100 graphics = render_device->loadImage("images/menus/config.png", RenderDevice::ERROR_NORMAL);
101 if (graphics) {
102 background = graphics->createSprite();
103 graphics->unref();
104 }
105
106 tab_control = new WidgetTabControl();
107
108 ok_button->setLabel(msg->get("OK"));
109 defaults_button->setLabel(msg->get("Defaults"));
110 cancel_button->setLabel(msg->get("Cancel"));
111
112 language_lstb->can_deselect = false;
113
114 // Finish Mods ListBoxes setup
115 activemods_lstb->multi_select = true;
116 for (unsigned int i = 0; i < mods->mod_list.size() ; i++) {
117 if (mods->mod_list[i].name != mods->FALLBACK_MOD)
118 activemods_lstb->append(mods->mod_list[i].name,createModTooltip(&mods->mod_list[i]));
119 }
120
121 inactivemods_lstb->multi_select = true;
122 for (unsigned int i = 0; i<mods->mod_dirs.size(); i++) {
123 bool skip_mod = false;
124 for (unsigned int j = 0; j<mods->mod_list.size(); j++) {
125 if (mods->mod_dirs[i] == mods->mod_list[j].name) {
126 skip_mod = true;
127 break;
128 }
129 }
130 if (!skip_mod && mods->mod_dirs[i] != mods->FALLBACK_MOD) {
131 Mod temp_mod = mods->loadMod(mods->mod_dirs[i]);
132 inactivemods_lstb->append(mods->mod_dirs[i],createModTooltip(&temp_mod));
133 }
134 }
135 inactivemods_lstb->sort();
136
137 if (do_init) {
138 init();
139 }
140 else {
141 // these will be initialized properly by a derevitive class (i.e. GameStateConfigDesktop)
142 AUDIO_TAB = 0;
143 INTERFACE_TAB = 0;
144 MODS_TAB = 0;
145 }
146
147 render_device->setBackgroundColor(Color(0,0,0,0));
148 }
149
150 GameStateConfigBase::~GameStateConfigBase() {
151 cleanup();
152 }
153
154 void GameStateConfigBase::init() {
155 AUDIO_TAB = 0;
156 INTERFACE_TAB = 1;
157 MODS_TAB = 2;
158
159 tab_control->setTabTitle(AUDIO_TAB, msg->get("Audio"));
160 tab_control->setTabTitle(INTERFACE_TAB, msg->get("Interface"));
161 tab_control->setTabTitle(MODS_TAB, msg->get("Mods"));
162
163 readConfig();
164
165 addChildWidgets();
166 setupTabList();
167
168 refreshWidgets();
169
170 update();
171 }
172
173 void GameStateConfigBase::readConfig() {
174 //Load the menu configuration from file
175
176 FileParser infile;
177 if (infile.open("menus/config.txt", FileParser::MOD_FILE, FileParser::ERROR_NORMAL)) {
178 while (infile.next()) {
179 if (parseKeyButtons(infile))
180 continue;
181
182 int x1 = Parse::popFirstInt(infile.val);
183 int y1 = Parse::popFirstInt(infile.val);
184 int x2 = Parse::popFirstInt(infile.val);
185 int y2 = Parse::popFirstInt(infile.val);
186
187 if (parseKey(infile, x1, y1, x2, y2))
188 continue;
189 else if (parseStub(infile))
190 continue;
191 else {
192 infile.error("GameStateConfigBase: '%s' is not a valid key.", infile.key.c_str());
193 }
194 }
195 infile.close();
196 }
197 }
198
199 bool GameStateConfigBase::parseKeyButtons(FileParser &infile) {
200 // @CLASS GameStateConfigBase|Description of menus/config.txt
201
202 if (infile.key == "button_ok") {
203 // @ATTR button_ok|int, int, alignment : X, Y, Alignment|Position of the "OK" button.
204 int x = Parse::popFirstInt(infile.val);
205 int y = Parse::popFirstInt(infile.val);
206 int a = Parse::toAlignment(Parse::popFirstString(infile.val));
207 ok_button->setBasePos(x, y, a);
208 }
209 else if (infile.key == "button_defaults") {
210 // @ATTR button_defaults|int, int, alignment : X, Y, Alignment|Position of the "Defaults" button.
211 int x = Parse::popFirstInt(infile.val);
212 int y = Parse::popFirstInt(infile.val);
213 int a = Parse::toAlignment(Parse::popFirstString(infile.val));
214 defaults_button->setBasePos(x, y, a);
215 }
216 else if (infile.key == "button_cancel") {
217 // @ATTR button_cancel|int, int, alignment : X, Y, Alignment|Position of the "Cancel" button.
218 int x = Parse::popFirstInt(infile.val);
219 int y = Parse::popFirstInt(infile.val);
220 int a = Parse::toAlignment(Parse::popFirstString(infile.val));
221 cancel_button->setBasePos(x, y, a);
222 }
223 else {
224 return false;
225 }
226
227 return true;
228 }
229 bool GameStateConfigBase::parseKey(FileParser &infile, int &x1, int &y1, int &x2, int &y2) {
230 if (infile.key == "listbox_scrollbar_offset") {
231 // @ATTR listbox_scrollbar_offset|int|Horizontal offset from the right of listboxes (mods, languages, etc) to place the scrollbar.
232 activemods_lstb->scrollbar_offset = x1;
233 inactivemods_lstb->scrollbar_offset = x1;
234 language_lstb->scrollbar_offset = x1;
235 }
236 else if (infile.key == "frame_offset") {
237 // @ATTR frame_offset|point|Offset for all the widgets contained under each tab.
238 frame_offset.x = x1;
239 frame_offset.y = y1;
240 }
241 else if (infile.key == "tab_offset") {
242 // @ATTR tab_offset|point|Offset for the row of tabs.
243 tab_offset.x = x1;
244 tab_offset.y = y1;
245 }
246 else if (infile.key == "music_volume") {
247 // @ATTR music_volume|int, int, int, int : Label X, Label Y, Widget X, Widget Y|Position of the "Music Volume" slider relative to the frame.
248 placeLabeledWidget(music_volume_lb, music_volume_sl, x1, y1, x2, y2, msg->get("Music Volume"), FontEngine::JUSTIFY_RIGHT);
249 }
250 else if (infile.key == "sound_volume") {
251 // @ATTR sound_volume|int, int, int, int : Label X, Label Y, Widget X, Widget Y|Position of the "Sound Volume" slider relative to the frame.
252 placeLabeledWidget(sound_volume_lb, sound_volume_sl, x1, y1, x2, y2, msg->get("Sound Volume"), FontEngine::JUSTIFY_RIGHT);
253 }
254 else if (infile.key == "language") {
255 // @ATTR language|int, int, int, int : Label X, Label Y, Widget X, Widget Y|Position of the "Language" list box relative to the frame.
256 placeLabeledWidget(language_lb, language_lstb, x1, y1, x2, y2, msg->get("Language"));
257 language_lb->setJustify(FontEngine::JUSTIFY_CENTER);
258 }
259 else if (infile.key == "language_height") {
260 // @ATTR language_height|int|Number of visible rows for the "Language" list box.
261 language_lstb->setHeight(x1);
262 }
263 else if (infile.key == "show_fps") {
264 // @ATTR show_fps|int, int, int, int : Label X, Label Y, Widget X, Widget Y|Position of the "Show FPS" checkbox relative to the frame.
265 placeLabeledWidget(show_fps_lb, show_fps_cb, x1, y1, x2, y2, msg->get("Show FPS"), FontEngine::JUSTIFY_RIGHT);
266 }
267 else if (infile.key == "colorblind") {
268 // @ATTR colorblind|int, int, int, int : Label X, Label Y, Widget X, Widget Y|Position of the "Colorblind Mode" checkbox relative to the frame.
269 placeLabeledWidget(colorblind_lb, colorblind_cb, x1, y1, x2, y2, msg->get("Colorblind Mode"), FontEngine::JUSTIFY_RIGHT);
270 }
271 else if (infile.key == "hardware_cursor") {
272 // @ATTR hardware_cursor|int, int, int, int : Label X, Label Y, Widget X, Widget Y|Position of the "Hardware mouse cursor" checkbox relative to the frame.
273 placeLabeledWidget(hardware_cursor_lb, hardware_cursor_cb, x1, y1, x2, y2, msg->get("Hardware mouse cursor"), FontEngine::JUSTIFY_RIGHT);
274 }
275 else if (infile.key == "dev_mode") {
276 // @ATTR dev_mode|int, int, int, int : Label X, Label Y, Widget X, Widget Y|Position of the "Developer Mode" checkbox relative to the frame.
277 placeLabeledWidget(dev_mode_lb, dev_mode_cb, x1, y1, x2, y2, msg->get("Developer Mode"), FontEngine::JUSTIFY_RIGHT);
278 }
279 else if (infile.key == "subtitles") {
280 // @ATTR subtitles|int, int, int, int : Label X, Label Y, Widget X, Widget Y|Position of the "Subtitles" checkbox relative to the frame.
281 placeLabeledWidget(subtitles_lb, subtitles_cb, x1, y1, x2, y2, msg->get("Subtitles"), FontEngine::JUSTIFY_RIGHT);
282 }
283 else if (infile.key == "activemods") {
284 // @ATTR activemods|int, int, int, int : Label X, Label Y, Widget X, Widget Y|Position of the "Active Mods" list box relative to the frame.
285 placeLabeledWidget(activemods_lb, activemods_lstb, x1, y1, x2, y2, msg->get("Active Mods"));
286 activemods_lb->setJustify(FontEngine::JUSTIFY_CENTER);
287 }
288 else if (infile.key == "activemods_height") {
289 // @ATTR activemods_height|int|Number of visible rows for the "Active Mods" list box.
290 activemods_lstb->setHeight(x1);
291 }
292 else if (infile.key == "inactivemods") {
293 // @ATTR inactivemods|int, int, int, int : Label X, Label Y, Widget X, Widget Y|Position of the "Available Mods" list box relative to the frame.
294 placeLabeledWidget(inactivemods_lb, inactivemods_lstb, x1, y1, x2, y2, msg->get("Available Mods"));
295 inactivemods_lb->setJustify(FontEngine::JUSTIFY_CENTER);
296 }
297 else if (infile.key == "inactivemods_height") {
298 // @ATTR inactivemods_height|int|Number of visible rows for the "Available Mods" list box.
299 inactivemods_lstb->setHeight(x1);
300 }
301 else if (infile.key == "activemods_shiftup") {
302 // @ATTR activemods_shiftup|point|Position of the button to shift mods up in "Active Mods" relative to the frame.
303 activemods_shiftup_btn->setBasePos(x1, y1, Utils::ALIGN_TOPLEFT);
304 activemods_shiftup_btn->refresh();
305 }
306 else if (infile.key == "activemods_shiftdown") {
307 // @ATTR activemods_shiftdown|point|Position of the button to shift mods down in "Active Mods" relative to the frame.
308 activemods_shiftdown_btn->setBasePos(x1, y1, Utils::ALIGN_TOPLEFT);
309 activemods_shiftdown_btn->refresh();
310 }
311 else if (infile.key == "activemods_deactivate") {
312 // @ATTR activemods_deactivate|point|Position of the "Disable" button relative to the frame.
313 activemods_deactivate_btn->setLabel(msg->get("<< Disable"));
314 activemods_deactivate_btn->setBasePos(x1, y1, Utils::ALIGN_TOPLEFT);
315 activemods_deactivate_btn->refresh();
316 }
317 else if (infile.key == "inactivemods_activate") {
318 // @ATTR inactivemods_activate|point|Position of the "Enable" button relative to the frame.
319 inactivemods_activate_btn->setLabel(msg->get("Enable >>"));
320 inactivemods_activate_btn->setBasePos(x1, y1, Utils::ALIGN_TOPLEFT);
321 inactivemods_activate_btn->refresh();
322 }
323 else {
324 return false;
325 }
326
327 return true;
328 }
329
330 bool GameStateConfigBase::parseStub(FileParser &infile) {
331 // not used for base configuration
332 // checking them here prevents getting an "invalid key" warning
333 if (infile.key == "renderer");
334 else if (infile.key == "renderer_height");
335 else if (infile.key == "fullscreen");
336 else if (infile.key == "mouse_move");
337 else if (infile.key == "hwsurface");
338 else if (infile.key == "vsync");
339 else if (infile.key == "texture_filter");
340 else if (infile.key == "enable_joystick");
341 else if (infile.key == "change_gamma");
342 else if (infile.key == "mouse_aim");
343 else if (infile.key == "no_mouse");
344 else if (infile.key == "gamma");
345 else if (infile.key == "joystick_deadzone");
346 else if (infile.key == "resolution");
347 else if (infile.key == "joystick_device");
348 else if (infile.key == "joystick_device_height");
349 else if (infile.key == "hws_note");
350 else if (infile.key == "dbuf_note");
351 else if (infile.key == "test_note");
352 else if (infile.key == "handheld_note");
353 else if (infile.key == "secondary_offset");
354 else if (infile.key == "keybinds_bg_color");
355 else if (infile.key == "keybinds_bg_alpha");
356 else if (infile.key == "scrollpane");
357 else if (infile.key == "scrollpane_contents");
358 else if (infile.key == "cancel");
359 else if (infile.key == "accept");
360 else if (infile.key == "up");
361 else if (infile.key == "down");
362 else if (infile.key == "left");
363 else if (infile.key == "right");
364 else if (infile.key == "bar1");
365 else if (infile.key == "bar2");
366 else if (infile.key == "bar3");
367 else if (infile.key == "bar4");
368 else if (infile.key == "bar5");
369 else if (infile.key == "bar6");
370 else if (infile.key == "bar7");
371 else if (infile.key == "bar8");
372 else if (infile.key == "bar9");
373 else if (infile.key == "bar0");
374 else if (infile.key == "main1");
375 else if (infile.key == "main2");
376 else if (infile.key == "character");
377 else if (infile.key == "inventory");
378 else if (infile.key == "powers");
379 else if (infile.key == "log");
380 else if (infile.key == "ctrl");
381 else if (infile.key == "shift");
382 else if (infile.key == "alt");
383 else if (infile.key == "delete");
384 else if (infile.key == "actionbar");
385 else if (infile.key == "actionbar_back");
386 else if (infile.key == "actionbar_forward");
387 else if (infile.key == "actionbar_use");
388 else if (infile.key == "developer_menu");
389 else return false;
390
391 return true;
392 }
393
394 void GameStateConfigBase::addChildWidgets() {
395 addChildWidget(music_volume_sl, AUDIO_TAB);
396 addChildWidget(music_volume_lb, AUDIO_TAB);
397 addChildWidget(sound_volume_sl, AUDIO_TAB);
398 addChildWidget(sound_volume_lb, AUDIO_TAB);
399
400 addChildWidget(show_fps_cb, INTERFACE_TAB);
401 addChildWidget(show_fps_lb, INTERFACE_TAB);
402 addChildWidget(colorblind_cb, INTERFACE_TAB);
403 addChildWidget(colorblind_lb, INTERFACE_TAB);
404 addChildWidget(hardware_cursor_cb, INTERFACE_TAB);
405 addChildWidget(hardware_cursor_lb, INTERFACE_TAB);
406 addChildWidget(dev_mode_cb, INTERFACE_TAB);
407 addChildWidget(dev_mode_lb, INTERFACE_TAB);
408 addChildWidget(subtitles_cb, INTERFACE_TAB);
409 addChildWidget(subtitles_lb, INTERFACE_TAB);
410 addChildWidget(language_lstb, INTERFACE_TAB);
411 addChildWidget(language_lb, INTERFACE_TAB);
412
413 addChildWidget(activemods_lstb, MODS_TAB);
414 addChildWidget(activemods_lb, MODS_TAB);
415 addChildWidget(inactivemods_lstb, MODS_TAB);
416 addChildWidget(inactivemods_lb, MODS_TAB);
417 addChildWidget(activemods_shiftup_btn, MODS_TAB);
418 addChildWidget(activemods_shiftdown_btn, MODS_TAB);
419 addChildWidget(activemods_deactivate_btn, MODS_TAB);
420 addChildWidget(inactivemods_activate_btn, MODS_TAB);
421 }
422
423 void GameStateConfigBase::setupTabList() {
424 tablist.add(tab_control);
425 tablist.setPrevTabList(&tablist_main);
426
427 tablist_main.add(ok_button);
428 tablist_main.add(defaults_button);
429 tablist_main.add(cancel_button);
430 tablist_main.setPrevTabList(&tablist);
431 tablist_main.setNextTabList(&tablist);
432 tablist_main.lock();
433
434 tablist_audio.add(music_volume_sl);
435 tablist_audio.add(sound_volume_sl);
436 tablist_audio.setPrevTabList(&tablist);
437 tablist_audio.setNextTabList(&tablist_main);
438 tablist_audio.lock();
439
440 tablist_interface.add(show_fps_cb);
441 tablist_interface.add(colorblind_cb);
442 tablist_interface.add(hardware_cursor_cb);
443 tablist_interface.add(dev_mode_cb);
444 tablist_interface.add(subtitles_cb);
445 tablist_interface.add(language_lstb);
446 tablist_interface.setPrevTabList(&tablist);
447 tablist_interface.setNextTabList(&tablist_main);
448 tablist_interface.lock();
449
450 tablist_mods.add(inactivemods_lstb);
451 tablist_mods.add(activemods_lstb);
452 tablist_mods.add(inactivemods_activate_btn);
453 tablist_mods.add(activemods_deactivate_btn);
454 tablist_mods.add(activemods_shiftup_btn);
455 tablist_mods.add(activemods_shiftdown_btn);
456 tablist_mods.setPrevTabList(&tablist);
457 tablist_mods.setNextTabList(&tablist_main);
458 tablist_mods.lock();
459 }
460
461 void GameStateConfigBase::update() {
462 updateAudio();
463 updateInterface();
464 updateMods();
465 }
466
467 void GameStateConfigBase::updateAudio() {
468 if (settings->audio) {
469 music_volume_sl->set(0, 128, settings->music_volume);
470 snd->setVolumeMusic(settings->music_volume);
471 sound_volume_sl->set(0, 128, settings->sound_volume);
472 snd->setVolumeSFX(settings->sound_volume);
473 }
474 else {
475 music_volume_sl->set(0,128,0);
476 sound_volume_sl->set(0,128,0);
477 }
478 }
479
480 void GameStateConfigBase::updateInterface() {
481 show_fps_cb->setChecked(settings->show_fps);
482 colorblind_cb->setChecked(settings->colorblind);
483 hardware_cursor_cb->setChecked(settings->hardware_cursor);
484 dev_mode_cb->setChecked(settings->dev_mode);
485 subtitles_cb->setChecked(settings->subtitles);
486
487 refreshLanguages();
488 }
489
490 void GameStateConfigBase::updateMods() {
491 activemods_lstb->refresh();
492 inactivemods_lstb->refresh();
493 }
494
495 void GameStateConfigBase::logic() {
496 if (inpt->window_resized)
497 refreshWidgets();
498
499 if (defaults_confirm->visible) {
500 // reset defaults confirmation
501 logicDefaults();
502 return;
503 }
504 else {
505 if (!logicMain())
506 return;
507 }
508
509 // tab contents
510 active_tab = tab_control->getActiveTab();
511
512 if (active_tab == AUDIO_TAB) {
513 tablist.setNextTabList(&tablist_audio);
514 logicAudio();
515 }
516 else if (active_tab == INTERFACE_TAB) {
517 tablist.setNextTabList(&tablist_interface);
518 logicInterface();
519
520 if (platform.force_hardware_cursor) {
521 // for some platforms, hardware mouse cursor can not be turned off
522 settings->hardware_cursor = true;
523 hardware_cursor_cb->setChecked(settings->hardware_cursor);
524 }
525 }
526 else if (active_tab == MODS_TAB) {
527 tablist.setNextTabList(&tablist_mods);
528 logicMods();
529 }
530 }
531
532 bool GameStateConfigBase::logicMain() {
533 for (unsigned int i = 0; i < child_widget.size(); i++) {
534 if (child_widget[i]->in_focus) {
535 tab_control->setActiveTab(optiontab[i]);
536 break;
537 }
538 }
539
540 // tabs & the bottom 3 main buttons
541 tab_control->logic();
542 tablist.logic();
543 tablist_main.logic();
544 tablist_audio.logic();
545 tablist_interface.logic();
546 tablist_mods.logic();
547
548 // Ok/Cancel Buttons
549 if (ok_button->checkClick()) {
550 logicAccept();
551
552 // GameStateConfigBase deconstructed, proceed with caution
553 return false;
554 }
555 else if (defaults_button->checkClick()) {
556 defaults_confirm->visible = true;
557 return true;
558 }
559 else if (cancel_button->checkClick() || (inpt->pressing[Input::CANCEL] && !inpt->lock[Input::CANCEL])) {
560 logicCancel();
561
562 // GameStateConfigBase deconstructed, proceed with caution
563 return false;
564 }
565
566 return true;
567 }
568
569 void GameStateConfigBase::logicDefaults() {
570 defaults_confirm->logic();
571 if (defaults_confirm->confirmClicked) {
572 settings->fullscreen = false;
573 settings->loadDefaults();
574 eset->load();
575 inpt->defaultQwertyKeyBindings();
576 inpt->defaultJoystickBindings();
577 update();
578 render_device->windowResize();
579 defaults_confirm->visible = false;
580 defaults_confirm->confirmClicked = false;
581 }
582 }
583
584 void GameStateConfigBase::logicAccept() {
585 if (setMods()) {
586 snd->unloadMusic();
587 reload_music = true;
588 reload_backgrounds = true;
589 delete mods;
590 mods = new ModManager(NULL);
591 settings->prev_save_slot = -1;
592 }
593 delete msg;
594 msg = new MessageEngine();
595 inpt->saveKeyBindings();
596 inpt->setKeybindNames();
597 eset->load();
598 Stats::init();
599 refreshFont();
600 if ((settings->enable_joystick) && (inpt->getNumJoysticks() > 0)) {
601 inpt->initJoystick();
602 }
603 cleanup();
604
605 showLoading();
606 // need to delete the "Loading..." message here, as we're recreating our render context
607 if (loading_tip) {
608 delete loading_tip;
609 loading_tip = NULL;
610 }
611
612 delete tooltipm;
613
614 // we can't replace the render device in-place, so soft-reset the game
615 if (new_render_device != settings->render_device_name) {
616 settings->render_device_name = new_render_device;
617 inpt->done = true;
618 settings->soft_reset = true;
619 }
620
621 render_device->createContext();
622 tooltipm = new TooltipManager();
623 settings->saveSettings();
624 setRequestedGameState(new GameStateTitle());
625 }
626
627 void GameStateConfigBase::logicCancel() {
628 inpt->lock[Input::CANCEL] = true;
629 settings->loadSettings();
630 inpt->loadKeyBindings();
631 delete msg;
632 msg = new MessageEngine();
633 inpt->setKeybindNames();
634 eset->load();
635 Stats::init();
636 refreshFont();
637 update();
638 cleanup();
639 render_device->windowResize();
640 render_device->updateTitleBar();
641 showLoading();
642 setRequestedGameState(new GameStateTitle());
643 }
644
645 void GameStateConfigBase::logicAudio() {
646 if (settings->audio) {
647 if (music_volume_sl->checkClick()) {
648 if (settings->music_volume == 0)
649 reload_music = true;
650 settings->music_volume = static_cast<short>(music_volume_sl->getValue());
651 snd->setVolumeMusic(settings->music_volume);
652 }
653 else if (sound_volume_sl->checkClick()) {
654 settings->sound_volume = static_cast<short>(sound_volume_sl->getValue());
655 snd->setVolumeSFX(settings->sound_volume);
656 }
657 }
658 }
659
660 void GameStateConfigBase::logicInterface() {
661 if (language_lstb->checkClick()) {
662 int lang_id = language_lstb->getSelected();
663 if (lang_id != -1)
664 settings->language = language_ISO[lang_id];
665 }
666 else if (show_fps_cb->checkClick()) {
667 settings->show_fps = show_fps_cb->isChecked();
668 }
669 else if (colorblind_cb->checkClick()) {
670 settings->colorblind = colorblind_cb->isChecked();
671 }
672 else if (hardware_cursor_cb->checkClick()) {
673 settings->hardware_cursor = hardware_cursor_cb->isChecked();
674 }
675 else if (dev_mode_cb->checkClick()) {
676 settings->dev_mode = dev_mode_cb->isChecked();
677 }
678 else if (subtitles_cb->checkClick()) {
679 settings->subtitles = subtitles_cb->isChecked();
680 }
681 }
682
683 void GameStateConfigBase::logicMods() {
684 if (activemods_lstb->checkClick()) {
685 //do nothing
686 }
687 else if (inactivemods_lstb->checkClick()) {
688 //do nothing
689 }
690 else if (activemods_shiftup_btn->checkClick()) {
691 activemods_lstb->shiftUp();
692 }
693 else if (activemods_shiftdown_btn->checkClick()) {
694 activemods_lstb->shiftDown();
695 }
696 else if (activemods_deactivate_btn->checkClick()) {
697 disableMods();
698 }
699 else if (inactivemods_activate_btn->checkClick()) {
700 enableMods();
701 }
702 }
703
704 void GameStateConfigBase::render() {
705 if (requestedGameState != NULL) {
706 // we're in the process of switching game states, so skip rendering
707 return;
708 }
709
710 int tabheight = tab_control->getTabHeight();
711 Rect pos;
712 pos.x = (settings->view_w - eset->resolutions.frame_w)/2;
713 pos.y = (settings->view_h - eset->resolutions.frame_h)/2 + tabheight - tabheight/16;
714
715 if (background) {
716 background->setDestFromRect(pos);
717 render_device->render(background);
718 }
719
720 tab_control->render();
721
722 // render OK/Defaults/Cancel buttons
723 ok_button->render();
724 cancel_button->render();
725 defaults_button->render();
726
727 renderTabContents();
728 renderDialogs();
729 }
730
731 void GameStateConfigBase::renderTabContents() {
732 for (unsigned int i = 0; i < child_widget.size(); i++) {
733 if (optiontab[i] == active_tab) child_widget[i]->render();
734 }
735
736 }
737
738 void GameStateConfigBase::renderDialogs() {
739 if (defaults_confirm->visible)
740 defaults_confirm->render();
741 }
742
743 void GameStateConfigBase::placeLabeledWidget(WidgetLabel *lb, Widget *w, int x1, int y1, int x2, int y2, std::string const& str, int justify) {
744 if (w) {
745 w->setBasePos(x2, y2, Utils::ALIGN_TOPLEFT);
746 }
747
748 if (lb) {
749 lb->setBasePos(x1, y1, Utils::ALIGN_TOPLEFT);
750 lb->setText(str);
751 lb->setJustify(justify);
752 }
753 }
754
755 void GameStateConfigBase::refreshWidgets() {
756 tab_control->setMainArea(((settings->view_w - eset->resolutions.frame_w)/2) + tab_offset.x, ((settings->view_h - eset->resolutions.frame_h)/2) + tab_offset.y);
757
758 frame.x = ((settings->view_w - eset->resolutions.frame_w)/2) + frame_offset.x;
759 frame.y = ((settings->view_h - eset->resolutions.frame_h)/2) + tab_control->getTabHeight() + frame_offset.y;
760
761 for (unsigned i=0; i<child_widget.size(); ++i) {
762 child_widget[i]->setPos(frame.x, frame.y);
763 }
764
765 ok_button->setPos(0, 0);
766 defaults_button->setPos(0, 0);
767 cancel_button->setPos(0, 0);
768
769 defaults_confirm->align();
770 }
771
772 void GameStateConfigBase::addChildWidget(Widget *w, int tab) {
773 child_widget.push_back(w);
774 optiontab.push_back(tab);
775 }
776
777 void GameStateConfigBase::refreshLanguages() {
778 language_ISO.clear();
779 language_lstb->clear();
780
781 FileParser infile;
782 if (infile.open("engine/languages.txt", FileParser::MOD_FILE, FileParser::ERROR_NORMAL)) {
783 int i = 0;
784 while (infile.next()) {
785 std::string key = infile.key;
786 if (key != "") {
787 language_ISO.push_back(key);
788 language_lstb->append(infile.val, infile.val + " [" + infile.key + "]");
789
790 if (language_ISO.back() == settings->language) {
791 language_lstb->select(i);
792 }
793
794 i++;
795 }
796 }
797 infile.close();
798 }
799
800 language_lstb->jumpToSelected();
801 }
802
803 void GameStateConfigBase::refreshFont() {
804 delete font;
805 font = getFontEngine();
806 delete comb;
807 comb = new CombatText();
808 }
809
810 void GameStateConfigBase::enableMods() {
811 for (int i=0; i<inactivemods_lstb->getSize(); i++) {
812 if (inactivemods_lstb->isSelected(i)) {
813 activemods_lstb->append(inactivemods_lstb->getValue(i),inactivemods_lstb->getTooltip(i));
814 inactivemods_lstb->remove(i);
815 i--;
816 }
817 }
818 }
819
820 void GameStateConfigBase::disableMods() {
821 for (int i=0; i<activemods_lstb->getSize(); i++) {
822 if (activemods_lstb->isSelected(i) && activemods_lstb->getValue(i) != mods->FALLBACK_MOD) {
823 inactivemods_lstb->append(activemods_lstb->getValue(i),activemods_lstb->getTooltip(i));
824 activemods_lstb->remove(i);
825 i--;
826 }
827 }
828 inactivemods_lstb->sort();
829 }
830
831 bool GameStateConfigBase::setMods() {
832 // Save new mods list and return true if modlist was changed. Else return false
833
834 std::vector<Mod> temp_list = mods->mod_list;
835 mods->mod_list.clear();
836 mods->mod_list.push_back(mods->loadMod(mods->FALLBACK_MOD));
837
838 for (int i=0; i<activemods_lstb->getSize(); i++) {
839 if (activemods_lstb->getValue(i) != "")
840 mods->mod_list.push_back(mods->loadMod(activemods_lstb->getValue(i)));
841 }
842
843 mods->applyDepends();
844
845 if (mods->mod_list != temp_list) {
846 mods->saveMods();
847 return true;
848 }
849 else {
850 return false;
851 }
852 }
853
854 std::string GameStateConfigBase::createModTooltip(Mod *mod) {
855 std::string ret = "";
856 if (mod) {
857 std::string mod_ver = (*mod->version == VersionInfo::MIN) ? "" : mod->version->getString();
858 std::string engine_ver = VersionInfo::createVersionReqString(*mod->engine_min_version, *mod->engine_max_version);
859
860 ret = mod->name + '\n';
861
862 std::string mod_description = mod->getLocaleDescription(settings->language);
863 if (!mod_description.empty()) {
864 ret += '\n';
865 ret += mod_description + '\n';
866 }
867
868 bool middle_section = false;
869 if (!mod_ver.empty()) {
870 middle_section = true;
871 ret += '\n';
872 ret += msg->get("Version:") + ' ' + mod_ver;
873 }
874 if (!mod->game.empty() && mod->game != mods->FALLBACK_GAME) {
875 middle_section = true;
876 ret += '\n';
877 ret += msg->get("Game:") + ' ' + mod->game;
878 }
879 if (!engine_ver.empty()) {
880 middle_section = true;
881 ret += '\n';
882 ret += msg->get("Engine version:") + ' ' + engine_ver;
883 }
884
885 if (middle_section)
886 ret += '\n';
887
888 if (!mod->depends.empty()) {
889 ret += '\n';
890 ret += msg->get("Requires mods:") + '\n';
891 for (size_t i=0; i<mod->depends.size(); ++i) {
892 ret += "- " + mod->depends[i];
893 std::string depend_ver = VersionInfo::createVersionReqString(*mod->depends_min[i], *mod->depends_max[i]);
894 if (depend_ver != "")
895 ret += " (" + depend_ver + ")";
896 if (i < mod->depends.size()-1)
897 ret += '\n';
898 }
899 }
900
901 if (!ret.empty() && ret[ret.size() - 1] == '\n')
902 ret.erase(ret.begin() + ret.size() - 1);
903 }
904 return ret;
905 }
906
907 void GameStateConfigBase::cleanup() {
908 if (background) {
909 delete background;
910 background = NULL;
911 }
912
913 if (tab_control != NULL) {
914 delete tab_control;
915 tab_control = NULL;
916 }
917
918 if (ok_button != NULL) {
919 delete ok_button;
920 ok_button = NULL;
921 }
922 if (defaults_button != NULL) {
923 delete defaults_button;
924 defaults_button = NULL;
925 }
926 if (cancel_button != NULL) {
927 delete cancel_button;
928 cancel_button = NULL;
929 }
930
931 cleanupTabContents();
932 cleanupDialogs();
933
934 language_ISO.clear();
935 }
936
937 void GameStateConfigBase::cleanupTabContents() {
938 for (std::vector<Widget*>::iterator iter = child_widget.begin(); iter != child_widget.end(); ++iter) {
939 if (*iter != NULL) {
940 delete (*iter);
941 *iter = NULL;
942 }
943 }
944 child_widget.clear();
945 }
946
947 void GameStateConfigBase::cleanupDialogs() {
948 if (defaults_confirm != NULL) {
949 delete defaults_confirm;
950 defaults_confirm = NULL;
951 }
952 }
953
+0
-153
src/GameStateConfigBase.h less more
0 /*
1 Copyright © 2012 Clint Bellanger
2 Copyright © 2012 davidriod
3 Copyright © 2012 Igor Paliychuk
4 Copyright © 2013 Kurt Rinnert
5 Copyright © 2014-2016 Justin Jacobs
6
7 This file is part of FLARE.
8
9 FLARE is free software: you can redistribute it and/or modify it under the terms
10 of the GNU General Public License as published by the Free Software Foundation,
11 either version 3 of the License, or (at your option) any later version.
12
13 FLARE is distributed in the hope that it will be useful, but WITHOUT ANY
14 WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A
15 PARTICULAR PURPOSE. See the GNU General Public License for more details.
16
17 You should have received a copy of the GNU General Public License along with
18 FLARE. If not, see http://www.gnu.org/licenses/
19 */
20
21 /**
22 * GameStateConfigBase
23 *
24 * Handle game Settings Menu
25 */
26
27 #ifndef GAMESTATECONFIGBASE_H
28 #define GAMESTATECONFIGBASE_H
29
30 #include "CommonIncludes.h"
31 #include "GameState.h"
32 #include "TooltipData.h"
33 #include "Widget.h"
34
35 class FileParser;
36 class MenuConfirm;
37 class Mod;
38 class Widget;
39 class WidgetButton;
40 class WidgetCheckBox;
41 class WidgetLabel;
42 class WidgetListBox;
43 class WidgetSlider;
44 class WidgetTabControl;
45
46 class GameStateConfigBase : public GameState {
47 protected:
48
49 public:
50 short AUDIO_TAB;
51 short INTERFACE_TAB;
52 short MODS_TAB;
53
54 static const bool DO_INIT = true;
55
56 explicit GameStateConfigBase(bool do_init);
57 ~GameStateConfigBase();
58
59 virtual void init();
60 virtual void readConfig();
61 bool parseKeyButtons(FileParser &infile);
62 bool parseKey(FileParser &infile, int &x1, int &y1, int &x2, int &y2);
63 bool parseStub(FileParser &infile);
64 void addChildWidgets();
65 virtual void setupTabList();
66
67 virtual void update();
68 void updateAudio();
69 void updateInterface();
70 void updateMods();
71
72 virtual void logic();
73 virtual bool logicMain();
74 void logicDefaults();
75 virtual void logicAccept();
76 void logicCancel();
77 void logicAudio();
78 void logicInterface();
79 void logicMods();
80
81 void render();
82 virtual void renderTabContents();
83 virtual void renderDialogs();
84
85 void placeLabeledWidget(WidgetLabel* lb, Widget* w, int x1, int y1, int x2, int y2, std::string const& str, int justify = 0);
86 virtual void refreshWidgets();
87 void addChildWidget(Widget *w, int tab);
88 void refreshLanguages();
89 void refreshFont();
90
91 void enableMods();
92 void disableMods();
93 bool setMods();
94 std::string createModTooltip(Mod *mod);
95
96 void cleanup();
97 virtual void cleanupTabContents();
98 virtual void cleanupDialogs();
99
100 TabList tablist;
101 TabList tablist_main;
102 TabList tablist_audio;
103 TabList tablist_interface;
104 TabList tablist_mods;
105
106 std::vector<int> optiontab;
107 std::vector<Widget*> child_widget;
108 WidgetTabControl * tab_control;
109 WidgetButton * ok_button;
110 WidgetButton * defaults_button;
111 WidgetButton * cancel_button;
112 Sprite * background;
113
114 WidgetCheckBox * show_fps_cb;
115 WidgetLabel * show_fps_lb;
116 WidgetCheckBox * hardware_cursor_cb;
117 WidgetLabel * hardware_cursor_lb;
118 WidgetCheckBox * colorblind_cb;
119 WidgetLabel * colorblind_lb;
120 WidgetCheckBox * dev_mode_cb;
121 WidgetLabel * dev_mode_lb;
122 WidgetCheckBox * subtitles_cb;
123 WidgetLabel * subtitles_lb;
124 WidgetSlider * music_volume_sl;
125 WidgetLabel * music_volume_lb;
126 WidgetSlider * sound_volume_sl;
127 WidgetLabel * sound_volume_lb;
128 WidgetListBox * activemods_lstb;
129 WidgetLabel * activemods_lb;
130 WidgetListBox * inactivemods_lstb;
131 WidgetLabel * inactivemods_lb;
132 WidgetListBox * language_lstb;
133 WidgetLabel * language_lb;
134 WidgetButton * activemods_shiftup_btn;
135 WidgetButton * activemods_shiftdown_btn;
136 WidgetButton * activemods_deactivate_btn;
137 WidgetButton * inactivemods_activate_btn;
138
139 MenuConfirm * defaults_confirm;
140
141 int active_tab;
142
143 Point frame;
144 Point frame_offset;
145 Point tab_offset;
146 std::vector<std::string> language_ISO;
147
148 std::string new_render_device;
149 };
150
151 #endif
152
+0
-976
src/GameStateConfigDesktop.cpp less more
0 /*
1 Copyright © 2014-2016 Justin Jacobs
2
3 This file is part of FLARE.
4
5 FLARE is free software: you can redistribute it and/or modify it under the terms
6 of the GNU General Public License as published by the Free Software Foundation,
7 either version 3 of the License, or (at your option) any later version.
8
9 FLARE is distributed in the hope that it will be useful, but WITHOUT ANY
10 WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A
11 PARTICULAR PURPOSE. See the GNU General Public License for more details.
12
13 You should have received a copy of the GNU General Public License along with
14 FLARE. If not, see http://www.gnu.org/licenses/
15 */
16
17 /**
18 * GameStateConfigDesktop
19 *
20 * Handle game Settings Menu (desktop computer settings)
21 */
22
23 #include "CommonIncludes.h"
24 #include "DeviceList.h"
25 #include "FileParser.h"
26 #include "FontEngine.h"
27 #include "GameStateConfigBase.h"
28 #include "GameStateConfigDesktop.h"
29 #include "GameStateTitle.h"
30 #include "InputState.h"
31 #include "MenuConfirm.h"
32 #include "MessageEngine.h"
33 #include "RenderDevice.h"
34 #include "Settings.h"
35 #include "SharedResources.h"
36 #include "Stats.h"
37 #include "UtilsFileSystem.h"
38 #include "UtilsParsing.h"
39 #include "WidgetButton.h"
40 #include "WidgetCheckBox.h"
41 #include "WidgetListBox.h"
42 #include "WidgetScrollBox.h"
43 #include "WidgetSlider.h"
44 #include "WidgetTabControl.h"
45
46 #include <limits.h>
47 #include <iomanip>
48
49 GameStateConfigDesktop::GameStateConfigDesktop(bool _enable_video_tab)
50 : GameStateConfigBase(!GameStateConfigBase::DO_INIT)
51 , renderer_lstb(new WidgetListBox(4, WidgetListBox::DEFAULT_FILE))
52 , renderer_lb(new WidgetLabel())
53 , fullscreen_cb(new WidgetCheckBox(WidgetCheckBox::DEFAULT_FILE))
54 , fullscreen_lb(new WidgetLabel())
55 , hwsurface_cb(new WidgetCheckBox(WidgetCheckBox::DEFAULT_FILE))
56 , hwsurface_lb(new WidgetLabel())
57 , vsync_cb(new WidgetCheckBox(WidgetCheckBox::DEFAULT_FILE))
58 , vsync_lb(new WidgetLabel())
59 , texture_filter_cb(new WidgetCheckBox(WidgetCheckBox::DEFAULT_FILE))
60 , texture_filter_lb(new WidgetLabel())
61 , dpi_scaling_cb(new WidgetCheckBox(WidgetCheckBox::DEFAULT_FILE))
62 , dpi_scaling_lb(new WidgetLabel())
63 , parallax_layers_cb(new WidgetCheckBox(WidgetCheckBox::DEFAULT_FILE))
64 , parallax_layers_lb(new WidgetLabel())
65 , change_gamma_cb(new WidgetCheckBox(WidgetCheckBox::DEFAULT_FILE))
66 , change_gamma_lb(new WidgetLabel())
67 , gamma_sl(new WidgetSlider(WidgetSlider::DEFAULT_FILE))
68 , gamma_lb(new WidgetLabel())
69 , joystick_device_lstb(new WidgetListBox(10, WidgetListBox::DEFAULT_FILE))
70 , joystick_device_lb(new WidgetLabel())
71 , enable_joystick_cb(new WidgetCheckBox(WidgetCheckBox::DEFAULT_FILE))
72 , enable_joystick_lb(new WidgetLabel())
73 , mouse_move_cb(new WidgetCheckBox(WidgetCheckBox::DEFAULT_FILE))
74 , mouse_move_lb(new WidgetLabel())
75 , mouse_aim_cb(new WidgetCheckBox(WidgetCheckBox::DEFAULT_FILE))
76 , mouse_aim_lb(new WidgetLabel())
77 , no_mouse_cb(new WidgetCheckBox(WidgetCheckBox::DEFAULT_FILE))
78 , no_mouse_lb(new WidgetLabel())
79 , mouse_move_swap_cb(new WidgetCheckBox(WidgetCheckBox::DEFAULT_FILE))
80 , mouse_move_swap_lb(new WidgetLabel())
81 , mouse_move_attack_cb(new WidgetCheckBox(WidgetCheckBox::DEFAULT_FILE))
82 , mouse_move_attack_lb(new WidgetLabel())
83 , joystick_deadzone_sl(new WidgetSlider(WidgetSlider::DEFAULT_FILE))
84 , joystick_deadzone_lb(new WidgetLabel())
85 , input_scrollbox(NULL)
86 , input_confirm(new MenuConfirm(msg->get("Clear"),msg->get("Assign:")))
87 , input_confirm_timer(settings->max_frames_per_sec * 10) // 10 seconds
88 , input_key(0)
89 , key_count(0)
90 , scrollpane_contents(0)
91 , enable_video_tab(_enable_video_tab)
92 , keybind_tip_timer(settings->max_frames_per_sec * 5) // 5 seconds
93 , keybind_tip(new WidgetTooltip())
94 {
95 // Allocate KeyBindings
96 for (int i = 0; i < inpt->KEY_COUNT; i++) {
97 keybinds_lb.push_back(new WidgetLabel());
98 keybinds_lb[i]->setText(inpt->binding_name[i]);
99 keybinds_lb[i]->setJustify(FontEngine::JUSTIFY_RIGHT);
100 }
101 for (int i = 0; i < inpt->KEY_COUNT * 3; i++) {
102 keybinds_btn.push_back(new WidgetButton(WidgetButton::DEFAULT_FILE));
103 }
104
105 key_count = static_cast<unsigned>(keybinds_btn.size()/3);
106
107 init();
108 }
109
110 GameStateConfigDesktop::~GameStateConfigDesktop() {
111 }
112
113 void GameStateConfigDesktop::init() {
114 if (enable_video_tab) {
115 VIDEO_TAB = 0;
116 AUDIO_TAB = 1;
117 INTERFACE_TAB = 2;
118 INPUT_TAB = 3;
119 KEYBINDS_TAB = 4;
120 MODS_TAB = 5;
121 }
122 else {
123 AUDIO_TAB = 0;
124 INTERFACE_TAB = 1;
125 INPUT_TAB = 2;
126 KEYBINDS_TAB = 3;
127 MODS_TAB = 4;
128 }
129
130 if (enable_video_tab) {
131 tab_control->setTabTitle(VIDEO_TAB, msg->get("Video"));
132 }
133 tab_control->setTabTitle(AUDIO_TAB, msg->get("Audio"));
134 tab_control->setTabTitle(INTERFACE_TAB, msg->get("Interface"));
135 tab_control->setTabTitle(INPUT_TAB, msg->get("Input"));
136 tab_control->setTabTitle(KEYBINDS_TAB, msg->get("Keybindings"));
137 tab_control->setTabTitle(MODS_TAB, msg->get("Mods"));
138
139 readConfig();
140
141 // Allocate KeyBindings ScrollBox
142 input_scrollbox = new WidgetScrollBox(scrollpane.w, scrollpane.h);
143 input_scrollbox->setBasePos(scrollpane.x, scrollpane.y, Utils::ALIGN_TOPLEFT);
144 input_scrollbox->bg = scrollpane_color;
145 input_scrollbox->resize(scrollpane.w, scrollpane_contents);
146
147 // Set positions of secondary key bindings
148 for (unsigned int i = key_count; i < key_count*2; i++) {
149 keybinds_btn[i]->pos.x = keybinds_btn[i-key_count]->pos.x + secondary_offset.x;
150 keybinds_btn[i]->pos.y = keybinds_btn[i-key_count]->pos.y + secondary_offset.y;
151 }
152
153 // Set positions of joystick bindings
154 for (unsigned int i = key_count*2; i < keybinds_btn.size(); i++) {
155 keybinds_btn[i]->pos.x = keybinds_btn[i-(key_count*2)]->pos.x + (secondary_offset.x*2);
156 keybinds_btn[i]->pos.y = keybinds_btn[i-(key_count*2)]->pos.y + (secondary_offset.y*2);
157 }
158
159 addChildWidgets();
160 addChildWidgetsDesktop();
161 setupTabList();
162
163 refreshWidgets();
164
165 update();
166 }
167
168 void GameStateConfigDesktop::readConfig() {
169 FileParser infile;
170 if (infile.open("menus/config.txt", FileParser::MOD_FILE, FileParser::ERROR_NORMAL)) {
171 while (infile.next()) {
172 if (parseKeyButtons(infile))
173 continue;
174
175 int x1 = Parse::popFirstInt(infile.val);
176 int y1 = Parse::popFirstInt(infile.val);
177 int x2 = Parse::popFirstInt(infile.val);
178 int y2 = Parse::popFirstInt(infile.val);
179
180 if (parseKeyDesktop(infile, x1, y1, x2, y2))
181 continue;
182 else if (parseKey(infile, x1, y1, x2, y2))
183 continue;
184 else {
185 infile.error("GameStateConfigDesktop: '%s' is not a valid key.", infile.key.c_str());
186 }
187 }
188 infile.close();
189 }
190
191 hwsurface_cb->tooltip = msg->get("Will try to store surfaces in video memory versus system memory. The effect this has on performance depends on the renderer.");
192 vsync_cb->tooltip = msg->get("Prevents screen tearing. Disable if you experience \"stuttering\" in windowed mode or input lag.");
193 dpi_scaling_cb->tooltip = msg->get("When enabled, this uses the screen DPI in addition to the window dimensions to scale the rendering resolution. Otherwise, only the window dimensions are used.");
194 parallax_layers_cb->tooltip = msg->get("This enables parallax (non-tile) layers. Disabling this setting can improve performance in some cases.");
195 change_gamma_cb->tooltip = msg->get("Experimental");
196 no_mouse_cb->tooltip = msg->get("For handheld devices");
197 mouse_move_swap_cb->tooltip = msg->get("When 'Move hero using mouse' is enabled, this setting controls if 'Main1' or 'Main2' is used to move the hero. If enabled, 'Main2' will move the hero instead of 'Main1'.");
198 mouse_move_attack_cb->tooltip = msg->get("When 'Move hero using mouse' is enabled, this setting controls if the Power assigned to the movement button can be used by targeting an enemy. If this setting is disabled, it is required to use 'Shift' to access the Power assigned to the movement button.");
199 }
200
201 bool GameStateConfigDesktop::parseKeyDesktop(FileParser &infile, int &x1, int &y1, int &x2, int &y2) {
202 // @CLASS GameStateConfigDesktop|Description of menus/config.txt
203
204 int keybind_num = -1;
205
206 if (infile.key == "listbox_scrollbar_offset") {
207 // overrides same key in GameStateConfigBase
208 renderer_lstb->scrollbar_offset = x1;
209 joystick_device_lstb->scrollbar_offset = x1;
210 activemods_lstb->scrollbar_offset = x1;
211 inactivemods_lstb->scrollbar_offset = x1;
212 language_lstb->scrollbar_offset = x1;
213 }
214 else if (infile.key == "renderer") {
215 // @ATTR renderer|int, int, int, int : Label X, Label Y, Widget X, Widget Y|Position of the "Renderer" list box relative to the frame.
216 placeLabeledWidget(renderer_lb, renderer_lstb, x1, y1, x2, y2, msg->get("Renderer"));
217
218 renderer_lstb->can_select = true;
219 renderer_lstb->multi_select = false;
220 renderer_lstb->can_deselect = false;
221
222 refreshRenderers();
223
224 renderer_lb->setJustify(FontEngine::JUSTIFY_CENTER);
225 }
226 else if (infile.key == "renderer_height") {
227 // @ATTR renderer_height|int|Number of visible rows for the "Renderer" list box.
228 renderer_lstb->setHeight(x1);
229 }
230 else if (infile.key == "fullscreen") {
231 // @ATTR fullscreen|int, int, int, int : Label X, Label Y, Widget X, Widget Y|Position of the "Full Screen Mode" checkbox relative to the frame.
232 placeLabeledWidget(fullscreen_lb, fullscreen_cb, x1, y1, x2, y2, msg->get("Full Screen Mode"), FontEngine::JUSTIFY_RIGHT);
233 }
234 else if (infile.key == "mouse_move") {
235 // @ATTR mouse_move|int, int, int, int : Label X, Label Y, Widget X, Widget Y|Position of the "Move hero using mouse" checkbox relative to the frame.
236 placeLabeledWidget(mouse_move_lb, mouse_move_cb, x1, y1, x2, y2, msg->get("Move hero using mouse"), FontEngine::JUSTIFY_RIGHT);
237 }
238 else if (infile.key == "hwsurface") {
239 // @ATTR hwsurface|int, int, int, int : Label X, Label Y, Widget X, Widget Y|Position of the "Hardware surfaces" checkbox relative to the frame.
240 placeLabeledWidget(hwsurface_lb, hwsurface_cb, x1, y1, x2, y2, msg->get("Hardware surfaces"), FontEngine::JUSTIFY_RIGHT);
241 }
242 else if (infile.key == "vsync") {
243 // @ATTR vsync|int, int, int, int : Label X, Label Y, Widget X, Widget Y|Position of the "V-Sync" checkbox relative to the frame.
244 placeLabeledWidget(vsync_lb, vsync_cb, x1, y1, x2, y2, msg->get("V-Sync"), FontEngine::JUSTIFY_RIGHT);
245 }
246 else if (infile.key == "texture_filter") {
247 // @ATTR texture_filter|int, int, int, int : Label X, Label Y, Widget X, Widget Y|Position of the "Texture Filtering" checkbox relative to the frame.
248 placeLabeledWidget(texture_filter_lb, texture_filter_cb, x1, y1, x2, y2, msg->get("Texture Filtering"), FontEngine::JUSTIFY_RIGHT);
249 }
250 else if (infile.key == "dpi_scaling") {
251 // @ATTR dpi_scaling|int, int, int, int : Label X, Label Y, Widget X, Widget Y|Position of the "DPI scaling" checkbox relative to the frame.
252 placeLabeledWidget(dpi_scaling_lb, dpi_scaling_cb, x1, y1, x2, y2, msg->get("DPI scaling"), FontEngine::JUSTIFY_RIGHT);
253 }
254 else if (infile.key == "parallax_layers") {
255 // @ATTR parallax_layers|int, int, int, int : Label X, Label Y, Widget X, Widget Y|Position of the "Parallax Layers" checkbox relative to the frame.
256 placeLabeledWidget(parallax_layers_lb, parallax_layers_cb, x1, y1, x2, y2, msg->get("Parallax Layers"), FontEngine::JUSTIFY_RIGHT);
257 }
258 else if (infile.key == "change_gamma") {
259 // @ATTR change_gamma|int, int, int, int : Label X, Label Y, Widget X, Widget Y|Position of the "Allow changing gamma" checkbox relative to the frame.
260 placeLabeledWidget(change_gamma_lb, change_gamma_cb, x1, y1, x2, y2, msg->get("Allow changing gamma"), FontEngine::JUSTIFY_RIGHT);
261 }
262 else if (infile.key == "gamma") {
263 // @ATTR gamma|int, int, int, int : Label X, Label Y, Widget X, Widget Y|Position of the "Gamma" slider relative to the frame.
264 placeLabeledWidget(gamma_lb, gamma_sl, x1, y1, x2, y2, msg->get("Gamma"), FontEngine::JUSTIFY_RIGHT);
265 }
266 else if (infile.key == "enable_joystick") {
267 // @ATTR enable_joystick|int, int, int, int : Label X, Label Y, Widget X, Widget Y|Position of the "Use joystick" checkbox relative to the frame.
268 placeLabeledWidget(enable_joystick_lb, enable_joystick_cb, x1, y1, x2, y2, msg->get("Use joystick"), FontEngine::JUSTIFY_RIGHT);
269 }
270 else if (infile.key == "joystick_device") {
271 // @ATTR joystick_device|int, int, int, int : Label X, Label Y, Widget X, Widget Y|Position of the "Joystick" list box relative to the frame.
272 placeLabeledWidget(joystick_device_lb, joystick_device_lstb, x1, y1, x2, y2, msg->get("Joystick"));
273
274 for(int i = 0; i < inpt->getNumJoysticks(); i++) {
275 std::string joystick_name = inpt->getJoystickName(i);
276 if (joystick_name != "")
277 joystick_device_lstb->append(joystick_name, joystick_name);
278 }
279
280 joystick_device_lb->setJustify(FontEngine::JUSTIFY_CENTER);
281 }
282 else if (infile.key == "joystick_device_height") {
283 // @ATTR joystick_device_height|int|Number of visible rows for the "Joystick" list box.
284 joystick_device_lstb->setHeight(x1);
285 }
286 else if (infile.key == "mouse_aim") {
287 // @ATTR mouse_aim|int, int, int, int : Label X, Label Y, Widget X, Widget Y|Position of the "Mouse aim" checkbox relative to the frame.
288 placeLabeledWidget(mouse_aim_lb, mouse_aim_cb, x1, y1, x2, y2, msg->get("Mouse aim"), FontEngine::JUSTIFY_RIGHT);
289 }
290 else if (infile.key == "no_mouse") {
291 // @ATTR no_mouse|int, int, int, int : Label X, Label Y, Widget X, Widget Y|Position of the "Do not use mouse" checkbox relative to the frame.
292 placeLabeledWidget(no_mouse_lb, no_mouse_cb, x1, y1, x2, y2, msg->get("Do not use mouse"), FontEngine::JUSTIFY_RIGHT);
293 }
294 else if (infile.key == "mouse_move_swap") {
295 // @ATTR mouse_move_swap|int, int, int, int : Label X, Label Y, Widget X, Widget Y|Position of the "Swap mouse movement button" checkbox relative to the frame.
296 placeLabeledWidget(mouse_move_swap_lb, mouse_move_swap_cb, x1, y1, x2, y2, msg->get("Swap mouse movement button"), FontEngine::JUSTIFY_RIGHT);
297 }
298 else if (infile.key == "mouse_move_attack") {
299 // @ATTR mouse_move_attack|int, int, int, int : Label X, Label Y, Widget X, Widget Y|Position of the "Attack with mouse movement" checkbox relative to the frame.
300 placeLabeledWidget(mouse_move_attack_lb, mouse_move_attack_cb, x1, y1, x2, y2, msg->get("Attack with mouse movement"), FontEngine::JUSTIFY_RIGHT);
301 }
302 else if (infile.key == "joystick_deadzone") {
303 // @ATTR joystick_deadzone|int, int, int, int : Label X, Label Y, Widget X, Widget Y|Position of the "Joystick Deadzone" slider relative to the frame.
304 placeLabeledWidget(joystick_deadzone_lb, joystick_deadzone_sl, x1, y1, x2, y2, msg->get("Joystick Deadzone"), FontEngine::JUSTIFY_RIGHT);
305 }
306 else if (infile.key == "secondary_offset") {
307 // @ATTR secondary_offset|point|Offset of the second (and third) columns of keybinds.
308 secondary_offset.x = x1;
309 secondary_offset.y = y1;
310 }
311 else if (infile.key == "keybinds_bg_color") {
312 // @ATTR keybinds_bg_color|color|Background color for the keybindings scrollbox.
313 scrollpane_color.r = static_cast<Uint8>(x1);
314 scrollpane_color.g = static_cast<Uint8>(y1);
315 scrollpane_color.b = static_cast<Uint8>(x2);
316 }
317 else if (infile.key == "keybinds_bg_alpha") {
318 // @ATTR keybinds_bg_alpha|int|Alpha value for the keybindings scrollbox background color.
319 scrollpane_color.a = static_cast<Uint8>(x1);
320 }
321 else if (infile.key == "scrollpane") {
322 // @ATTR scrollpane|rectangle|Position of the keybinding scrollbox relative to the frame.
323 scrollpane.x = x1;
324 scrollpane.y = y1;
325 scrollpane.w = x2;
326 scrollpane.h = y2;
327 }
328 else if (infile.key == "scrollpane_contents") {
329 // @ATTR scrollpane_contents|int|The vertical size of the keybinding scrollbox's contents.
330 scrollpane_contents = x1;
331 }
332
333 // @ATTR cancel|int, int, int, int : Label X, Label Y, Widget X, Widget Y|Position of the "Cancel" keybind relative to the keybinding scrollbox.
334 else if (infile.key == "cancel") keybind_num = Input::CANCEL;
335 // @ATTR accept|int, int, int, int : Label X, Label Y, Widget X, Widget Y|Position of the "Accept" keybind relative to the keybinding scrollbox.
336 else if (infile.key == "accept") keybind_num = Input::ACCEPT;
337 // @ATTR up|int, int, int, int : Label X, Label Y, Widget X, Widget Y|Position of the "Up" keybind relative to the keybinding scrollbox.
338 else if (infile.key == "up") keybind_num = Input::UP;
339 // @ATTR down|int, int, int, int : Label X, Label Y, Widget X, Widget Y|Position of the "Down" keybind relative to the keybinding scrollbox.
340 else if (infile.key == "down") keybind_num = Input::DOWN;
341 // @ATTR left|int, int, int, int : Label X, Label Y, Widget X, Widget Y|Position of the "Left" keybind relative to the keybinding scrollbox.
342 else if (infile.key == "left") keybind_num = Input::LEFT;
343 // @ATTR right|int, int, int, int : Label X, Label Y, Widget X, Widget Y|Position of the "Right" keybind relative to the keybinding scrollbox.
344 else if (infile.key == "right") keybind_num = Input::RIGHT;
345 // @ATTR bar1|int, int, int, int : Label X, Label Y, Widget X, Widget Y|Position of the "Bar1" keybind relative to the keybinding scrollbox.
346 else if (infile.key == "bar1") keybind_num = Input::BAR_1;
347 // @ATTR bar2|int, int, int, int : Label X, Label Y, Widget X, Widget Y|Position of the "Bar2" keybind relative to the keybinding scrollbox.
348 else if (infile.key == "bar2") keybind_num = Input::BAR_2;
349 // @ATTR bar3|int, int, int, int : Label X, Label Y, Widget X, Widget Y|Position of the "Bar3" keybind relative to the keybinding scrollbox.
350 else if (infile.key == "bar3") keybind_num = Input::BAR_3;
351 // @ATTR bar4|int, int, int, int : Label X, Label Y, Widget X, Widget Y|Position of the "Bar4" keybind relative to the keybinding scrollbox.
352 else if (infile.key == "bar4") keybind_num = Input::BAR_4;
353 // @ATTR bar5|int, int, int, int : Label X, Label Y, Widget X, Widget Y|Position of the "Bar5" keybind relative to the keybinding scrollbox.
354 else if (infile.key == "bar5") keybind_num = Input::BAR_5;
355 // @ATTR bar6|int, int, int, int : Label X, Label Y, Widget X, Widget Y|Position of the "Bar6" keybind relative to the keybinding scrollbox.
356 else if (infile.key == "bar6") keybind_num = Input::BAR_6;
357 // @ATTR bar7|int, int, int, int : Label X, Label Y, Widget X, Widget Y|Position of the "Bar7" keybind relative to the keybinding scrollbox.
358 else if (infile.key == "bar7") keybind_num = Input::BAR_7;
359 // @ATTR Bar8|int, int, int, int : Label X, Label Y, Widget X, Widget Y|Position of the "Bar8" keybind relative to the keybinding scrollbox.
360 else if (infile.key == "bar8") keybind_num = Input::BAR_8;
361 // @ATTR bar9|int, int, int, int : Label X, Label Y, Widget X, Widget Y|Position of the "Bar9" keybind relative to the keybinding scrollbox.
362 else if (infile.key == "bar9") keybind_num = Input::BAR_9;
363 // @ATTR bar0|int, int, int, int : Label X, Label Y, Widget X, Widget Y|Position of the "Bar0" keybind relative to the keybinding scrollbox.
364 else if (infile.key == "bar0") keybind_num = Input::BAR_0;
365 // @ATTR main1|int, int, int, int : Label X, Label Y, Widget X, Widget Y|Position of the "Main1" keybind relative to the keybinding scrollbox.
366 else if (infile.key == "main1") keybind_num = Input::MAIN1;
367 // @ATTR main2|int, int, int, int : Label X, Label Y, Widget X, Widget Y|Position of the "Main2" keybind relative to the keybinding scrollbox.
368 else if (infile.key == "main2") keybind_num = Input::MAIN2;
369 // @ATTR character|int, int, int, int : Label X, Label Y, Widget X, Widget Y|Position of the "Character" keybind relative to the keybinding scrollbox.
370 else if (infile.key == "character") keybind_num = Input::CHARACTER;
371 // @ATTR inventory|int, int, int, int : Label X, Label Y, Widget X, Widget Y|Position of the "Inventory" keybind relative to the keybinding scrollbox.
372 else if (infile.key == "inventory") keybind_num = Input::INVENTORY;
373 // @ATTR powers|int, int, int, int : Label X, Label Y, Widget X, Widget Y|Position of the "Powers" keybind relative to the keybinding scrollbox.
374 else if (infile.key == "powers") keybind_num = Input::POWERS;
375 // @ATTR log|int, int, int, int : Label X, Label Y, Widget X, Widget Y|Position of the "Log" keybind relative to the keybinding scrollbox.
376 else if (infile.key == "log") keybind_num = Input::LOG;
377 // @ATTR ctrl|int, int, int, int : Label X, Label Y, Widget X, Widget Y|Position of the "Ctrl" keybind relative to the keybinding scrollbox.
378 else if (infile.key == "ctrl") keybind_num = Input::CTRL;
379 // @ATTR shift|int, int, int, int : Label X, Label Y, Widget X, Widget Y|Position of the "Shift" keybind relative to the keybinding scrollbox.
380 else if (infile.key == "shift") keybind_num = Input::SHIFT;
381 // @ATTR alt|int, int, int, int : Label X, Label Y, Widget X, Widget Y|Position of the "Alt" keybind relative to the keybinding scrollbox.
382 else if (infile.key == "alt") keybind_num = Input::ALT;
383 // @ATTR delete|int, int, int, int : Label X, Label Y, Widget X, Widget Y|Position of the "Delete" keybind relative to the keybinding scrollbox.
384 else if (infile.key == "delete") keybind_num = Input::DEL;
385 // @ATTR actionbar|int, int, int, int : Label X, Label Y, Widget X, Widget Y|Position of the "ActionBar Accept" keybind relative to the keybinding scrollbox.
386 else if (infile.key == "actionbar") keybind_num = Input::ACTIONBAR;
387 // @ATTR actionbar_back|int, int, int, int : Label X, Label Y, Widget X, Widget Y|Position of the "ActionBar Left" keybind relative to the keybinding scrollbox.
388 else if (infile.key == "actionbar_back") keybind_num = Input::ACTIONBAR_BACK;
389 // @ATTR actionbar_forward|int, int, int, int : Label X, Label Y, Widget X, Widget Y|Position of the "ActionBar Right" keybind relative to the keybinding scrollbox.
390 else if (infile.key == "actionbar_forward") keybind_num = Input::ACTIONBAR_FORWARD;
391 // @ATTR actionbar_use|int, int, int, int : Label X, Label Y, Widget X, Widget Y|Position of the "ActionBar Use" keybind relative to the keybinding scrollbox.
392 else if (infile.key == "actionbar_use") keybind_num = Input::ACTIONBAR_USE;
393 // @ATTR developer_menu|int, int, int, int : Label X, Label Y, Widget X, Widget Y|Position of the "Developer Menu" keybind relative to the keybinding scrollbox.
394 else if (infile.key == "developer_menu") keybind_num = Input::DEVELOPER_MENU;
395
396 else return false;
397
398 if (keybind_num > -1 && static_cast<unsigned>(keybind_num) < keybinds_lb.size() && static_cast<unsigned>(keybind_num) < keybinds_btn.size()) {
399 //keybindings
400 keybinds_lb[keybind_num]->setPos(x1, y1);
401 keybinds_btn[keybind_num]->pos.x = x2;
402 keybinds_btn[keybind_num]->pos.y = y2;
403 }
404
405 return true;
406 }
407
408 void GameStateConfigDesktop::addChildWidgetsDesktop() {
409 if (enable_video_tab) {
410 addChildWidget(renderer_lstb, VIDEO_TAB);
411 addChildWidget(renderer_lb, VIDEO_TAB);
412 addChildWidget(fullscreen_cb, VIDEO_TAB);
413 addChildWidget(fullscreen_lb, VIDEO_TAB);
414 addChildWidget(hwsurface_cb, VIDEO_TAB);
415 addChildWidget(hwsurface_lb, VIDEO_TAB);
416 addChildWidget(vsync_cb, VIDEO_TAB);
417 addChildWidget(vsync_lb, VIDEO_TAB);
418 addChildWidget(texture_filter_cb, VIDEO_TAB);
419 addChildWidget(texture_filter_lb, VIDEO_TAB);
420 addChildWidget(dpi_scaling_cb, VIDEO_TAB);
421 addChildWidget(dpi_scaling_lb, VIDEO_TAB);
422 addChildWidget(parallax_layers_cb, VIDEO_TAB);
423 addChildWidget(parallax_layers_lb, VIDEO_TAB);
424 addChildWidget(change_gamma_cb, VIDEO_TAB);
425 addChildWidget(change_gamma_lb, VIDEO_TAB);
426 addChildWidget(gamma_sl, VIDEO_TAB);
427 addChildWidget(gamma_lb, VIDEO_TAB);
428 }
429
430 addChildWidget(mouse_move_cb, INPUT_TAB);
431 addChildWidget(mouse_move_lb, INPUT_TAB);
432 addChildWidget(enable_joystick_cb, INPUT_TAB);
433 addChildWidget(enable_joystick_lb, INPUT_TAB);
434 addChildWidget(mouse_aim_cb, INPUT_TAB);
435 addChildWidget(mouse_aim_lb, INPUT_TAB);
436 addChildWidget(no_mouse_cb, INPUT_TAB);
437 addChildWidget(no_mouse_lb, INPUT_TAB);
438 addChildWidget(mouse_move_swap_cb, INPUT_TAB);
439 addChildWidget(mouse_move_swap_lb, INPUT_TAB);
440 addChildWidget(mouse_move_attack_cb, INPUT_TAB);
441 addChildWidget(mouse_move_attack_lb, INPUT_TAB);
442 addChildWidget(joystick_deadzone_sl, INPUT_TAB);
443 addChildWidget(joystick_deadzone_lb, INPUT_TAB);
444 addChildWidget(joystick_device_lstb, INPUT_TAB);
445 addChildWidget(joystick_device_lb, INPUT_TAB);
446
447 for (unsigned int i = 0; i < keybinds_btn.size(); i++) {
448 input_scrollbox->addChildWidget(keybinds_btn[i]);
449 }
450 }
451
452 void GameStateConfigDesktop::setupTabList() {
453 tablist.add(tab_control);
454 tablist.setPrevTabList(&tablist_main);
455
456 tablist_main.add(ok_button);
457 tablist_main.add(defaults_button);
458 tablist_main.add(cancel_button);
459 tablist_main.setPrevTabList(&tablist);
460 tablist_main.setNextTabList(&tablist);
461 tablist_main.lock();
462
463 if (enable_video_tab) {
464 tablist_video.add(fullscreen_cb);
465 tablist_video.add(hwsurface_cb);
466 tablist_video.add(vsync_cb);
467 tablist_video.add(texture_filter_cb);
468 tablist_video.add(dpi_scaling_cb);
469 tablist_video.add(parallax_layers_cb);
470 tablist_video.add(change_gamma_cb);
471 tablist_video.add(gamma_sl);
472 tablist_video.add(renderer_lstb);
473 tablist_video.setPrevTabList(&tablist);
474 tablist_video.setNextTabList(&tablist_main);
475 tablist_video.lock();
476 }
477
478 tablist_audio.add(music_volume_sl);
479 tablist_audio.add(sound_volume_sl);
480 tablist_audio.setPrevTabList(&tablist);
481 tablist_audio.setNextTabList(&tablist_main);
482 tablist_audio.lock();
483
484 tablist_interface.add(show_fps_cb);
485 tablist_interface.add(colorblind_cb);
486 tablist_interface.add(hardware_cursor_cb);
487 tablist_interface.add(dev_mode_cb);
488 tablist_interface.add(language_lstb);
489 tablist_interface.setPrevTabList(&tablist);
490 tablist_interface.setNextTabList(&tablist_main);
491 tablist_interface.lock();
492
493 tablist_input.add(enable_joystick_cb);
494 tablist_input.add(mouse_move_cb);
495 tablist_input.add(mouse_aim_cb);
496 tablist_input.add(no_mouse_cb);
497 tablist_input.add(mouse_move_swap_cb);
498 tablist_input.add(mouse_move_attack_cb);
499 tablist_input.add(joystick_deadzone_sl);
500 tablist_input.add(joystick_device_lstb);
501 tablist_input.setPrevTabList(&tablist);
502 tablist_input.setNextTabList(&tablist_main);
503 tablist_input.lock();
504
505 tablist_keybinds.add(input_scrollbox);
506 tablist_keybinds.setPrevTabList(&tablist);
507 tablist_keybinds.setNextTabList(&tablist_main);
508 tablist_keybinds.lock();
509
510 tablist_mods.add(inactivemods_lstb);
511 tablist_mods.add(activemods_lstb);
512 tablist_mods.add(inactivemods_activate_btn);
513 tablist_mods.add(activemods_deactivate_btn);
514 tablist_mods.add(activemods_shiftup_btn);
515 tablist_mods.add(activemods_shiftdown_btn);
516 tablist_mods.setPrevTabList(&tablist);
517 tablist_mods.setNextTabList(&tablist_main);
518 tablist_mods.lock();
519 }
520
521 void GameStateConfigDesktop::update() {
522 GameStateConfigBase::update();
523
524 updateVideo();
525 updateInput();
526 updateKeybinds();
527 }
528
529 void GameStateConfigDesktop::updateVideo() {
530 fullscreen_cb->setChecked(settings->fullscreen);
531 hwsurface_cb->setChecked(settings->hwsurface);
532 vsync_cb->setChecked(settings->vsync);
533 texture_filter_cb->setChecked(settings->texture_filter);
534 dpi_scaling_cb->setChecked(settings->dpi_scaling);
535 parallax_layers_cb->setChecked(settings->parallax_layers);
536 change_gamma_cb->setChecked(settings->change_gamma);
537
538 if (settings->change_gamma) {
539 render_device->setGamma(settings->gamma);
540 }
541 else {
542 settings->gamma = 1.0;
543 gamma_sl->enabled = false;
544 render_device->resetGamma();
545 }
546 gamma_sl->set(GAMMA_MIN, GAMMA_MAX, static_cast<int>(settings->gamma * 10.0));
547
548 refreshRenderers();
549 }
550
551 void GameStateConfigDesktop::updateInput() {
552 enable_joystick_cb->setChecked(settings->enable_joystick);
553 mouse_aim_cb->setChecked(settings->mouse_aim);
554 no_mouse_cb->setChecked(settings->no_mouse);
555 mouse_move_cb->setChecked(settings->mouse_move);
556 mouse_move_swap_cb->setChecked(settings->mouse_move_swap);
557 mouse_move_attack_cb->setChecked(settings->mouse_move_attack);
558
559 if (settings->enable_joystick && inpt->getNumJoysticks() > 0) {
560 inpt->initJoystick();
561 joystick_device_lstb->select(settings->joystick_device);
562 }
563 joystick_device_lstb->jumpToSelected();
564
565 joystick_deadzone_sl->set(0, 32768, settings->joy_deadzone);
566 }
567
568 void GameStateConfigDesktop::updateKeybinds() {
569 // now do labels for keybinds that are set
570 for (unsigned int i = 0; i < key_count; i++) {
571 keybinds_btn[i]->setLabel(inpt->getBindingString(i));
572 keybinds_btn[i]->refresh();
573 }
574 for (unsigned int i = key_count; i < key_count*2; i++) {
575 keybinds_btn[i]->setLabel(inpt->getBindingString(i-key_count, InputState::BINDING_ALT));
576 keybinds_btn[i]->refresh();
577 }
578 for (unsigned int i = key_count*2; i < keybinds_btn.size(); i++) {
579 keybinds_btn[i]->setLabel(inpt->getBindingString(i-(key_count*2), InputState::BINDING_JOYSTICK));
580 keybinds_btn[i]->refresh();
581 }
582 input_scrollbox->refresh();
583 }
584
585 void GameStateConfigDesktop::logic() {
586 if (inpt->window_resized)
587 refreshWidgets();
588
589 if (defaults_confirm->visible) {
590 // reset defaults confirmation
591 logicDefaults();
592 return;
593 }
594 else if (input_confirm->visible) {
595 // assign a keybind
596 input_confirm->logic();
597 scanKey(input_key);
598 input_confirm_timer.tick();
599 if (input_confirm_timer.isEnd())
600 input_confirm->visible = false;
601 return;
602 }
603 else {
604 if (!logicMain())
605 return;
606 }
607
608 // tab contents
609 active_tab = tab_control->getActiveTab();
610
611 if (enable_video_tab && active_tab == VIDEO_TAB) {
612 tablist.setNextTabList(&tablist_video);
613 logicVideo();
614 }
615 else if (active_tab == AUDIO_TAB) {
616 tablist.setNextTabList(&tablist_audio);
617 logicAudio();
618 }
619 else if (active_tab == INTERFACE_TAB) {
620 tablist.setNextTabList(&tablist_interface);
621 logicInterface();
622 }
623 else if (active_tab == INPUT_TAB) {
624 tablist.setNextTabList(&tablist_input);
625 logicInput();
626 }
627 else if (active_tab == KEYBINDS_TAB) {
628 tablist.setNextTabList(&tablist_keybinds);
629 logicKeybinds();
630 }
631 else if (active_tab == MODS_TAB) {
632 tablist.setNextTabList(&tablist_mods);
633 logicMods();
634 }
635 }
636
637 bool GameStateConfigDesktop::logicMain() {
638 if (GameStateConfigBase::logicMain()) {
639 if (enable_video_tab) {
640 tablist_video.logic();
641 }
642 tablist_input.logic();
643 tablist_keybinds.logic();
644 return true;
645 }
646
647 return false;
648 }
649
650 void GameStateConfigDesktop::logicVideo() {
651 if (fullscreen_cb->checkClick()) {
652 settings->fullscreen = fullscreen_cb->isChecked();
653 }
654 else if (hwsurface_cb->checkClick()) {
655 settings->hwsurface = hwsurface_cb->isChecked();
656 }
657 else if (vsync_cb->checkClick()) {
658 settings->vsync = vsync_cb->isChecked();
659 }
660 else if (texture_filter_cb->checkClick()) {
661 settings->texture_filter = texture_filter_cb->isChecked();
662 }
663 else if (dpi_scaling_cb->checkClick()) {
664 settings->dpi_scaling = dpi_scaling_cb->isChecked();
665 render_device->windowResize();
666 refreshWidgets();
667 force_refresh_background = true;
668 }
669 else if (parallax_layers_cb->checkClick()) {
670 settings->parallax_layers = parallax_layers_cb->isChecked();
671 }
672 else if (change_gamma_cb->checkClick()) {
673 settings->change_gamma = change_gamma_cb->isChecked();
674 if (settings->change_gamma) {
675 gamma_sl->enabled = true;
676 }
677 else {
678 settings->gamma = 1.0;
679 gamma_sl->enabled = false;
680 gamma_sl->set(GAMMA_MIN, GAMMA_MAX, static_cast<int>(settings->gamma * 10.0));
681 render_device->resetGamma();
682 }
683 }
684 else if (gamma_sl->checkClick()) {
685 settings->gamma = static_cast<float>(gamma_sl->getValue()) * 0.1f;
686 render_device->setGamma(settings->gamma);
687 }
688 else if (renderer_lstb->checkClick()) {
689 new_render_device = renderer_lstb->getValue();
690 }
691 }
692
693 void GameStateConfigDesktop::logicInput() {
694 if (inpt->joysticks_changed) {
695 disableJoystickOptions();
696 joystick_device_lstb->clear();
697 for(int i = 0; i < inpt->getNumJoysticks(); i++) {
698 std::string joystick_name = inpt->getJoystickName(i);
699 if (joystick_name != "")
700 joystick_device_lstb->append(joystick_name, joystick_name);
701 }
702 inpt->joysticks_changed = false;
703 }
704
705 if (mouse_move_cb->checkClick()) {
706 if (mouse_move_cb->isChecked()) {
707 settings->mouse_move = true;
708 enableMouseOptions();
709 }
710 else settings->mouse_move=false;
711 }
712 else if (mouse_aim_cb->checkClick()) {
713 if (mouse_aim_cb->isChecked()) {
714 settings->mouse_aim = true;
715 enableMouseOptions();
716 }
717 else settings->mouse_aim=false;
718 }
719 else if (no_mouse_cb->checkClick()) {
720 if (no_mouse_cb->isChecked()) {
721 settings->no_mouse = true;
722 disableMouseOptions();
723 }
724 else settings->no_mouse = false;
725 }
726 else if (mouse_move_swap_cb->checkClick()) {
727 settings->mouse_move_swap = mouse_move_swap_cb->isChecked();
728 }
729 else if (mouse_move_attack_cb->checkClick()) {
730 settings->mouse_move_attack = mouse_move_attack_cb->isChecked();
731 }
732 else if (enable_joystick_cb->checkClick()) {
733 if (enable_joystick_cb->isChecked()) {
734 settings->enable_joystick = true;
735 if (inpt->getNumJoysticks() > 0) {
736 settings->joystick_device = 0;
737 inpt->initJoystick();
738 joystick_device_lstb->select(settings->joystick_device);
739 }
740
741 if (inpt->getNumJoysticks() > 0)
742 joystick_device_lstb->jumpToSelected();
743 }
744 else {
745 disableJoystickOptions();
746 }
747 }
748 else if (joystick_deadzone_sl->checkClick()) {
749 settings->joy_deadzone = joystick_deadzone_sl->getValue();
750 }
751 else if (joystick_device_lstb->checkClick()) {
752 settings->joystick_device = joystick_device_lstb->getSelected();
753 if (settings->joystick_device != -1) {
754 settings->enable_joystick = true;
755 if (inpt->getNumJoysticks() > 0) {
756 inpt->initJoystick();
757 }
758 }
759 else {
760 settings->enable_joystick = false;
761 }
762 enable_joystick_cb->setChecked(settings->enable_joystick);
763 }
764 }
765
766 void GameStateConfigDesktop::logicKeybinds() {
767 input_scrollbox->logic();
768 for (unsigned int i = 0; i < keybinds_btn.size(); i++) {
769 if (i >= static_cast<unsigned int>(inpt->KEY_COUNT * 2)) {
770 keybinds_btn[i]->enabled = settings->enable_joystick;
771 keybinds_btn[i]->refresh();
772 }
773 Point mouse = input_scrollbox->input_assist(inpt->mouse);
774 if (keybinds_btn[i]->checkClickAt(mouse.x,mouse.y)) {
775 std::string confirm_msg;
776 confirm_msg = msg->get("Assign:") + ' ' + inpt->binding_name[i%key_count];
777 delete input_confirm;
778 input_confirm = new MenuConfirm(msg->get("Clear"),confirm_msg);
779 input_confirm_timer.reset(Timer::BEGIN);
780 input_confirm->visible = true;
781 input_key = i;
782 inpt->last_button = -1;
783 inpt->last_key = -1;
784 inpt->last_joybutton = -1;
785 }
786 }
787 }
788
789 void GameStateConfigDesktop::renderTabContents() {
790 if (active_tab == KEYBINDS_TAB) {
791 if (input_scrollbox->update) {
792 input_scrollbox->refresh();
793 }
794 input_scrollbox->render();
795 for (unsigned int i = 0; i < keybinds_lb.size(); i++) {
796 keybinds_lb[i]->local_frame = input_scrollbox->pos;
797 keybinds_lb[i]->local_offset.y = input_scrollbox->getCursor();
798 keybinds_lb[i]->render();
799 }
800 }
801
802 for (unsigned int i = 0; i < child_widget.size(); i++) {
803 if (optiontab[i] == active_tab) child_widget[i]->render();
804 }
805 }
806
807 void GameStateConfigDesktop::renderDialogs() {
808 GameStateConfigBase::renderDialogs();
809
810 if (input_confirm->visible)
811 input_confirm->render();
812
813 if (active_tab == KEYBINDS_TAB && !keybind_msg.empty()) {
814 TooltipData keybind_tip_data;
815 keybind_tip_data.addText(keybind_msg);
816
817 if (keybind_tip_timer.isEnd())
818 keybind_tip_timer.reset(Timer::BEGIN);
819
820 keybind_tip_timer.tick();
821
822 if (!keybind_tip_timer.isEnd()) {
823 keybind_tip->render(keybind_tip_data, Point(settings->view_w, 0), TooltipData::STYLE_FLOAT);
824 }
825 else {
826 keybind_msg.clear();
827 }
828 }
829 else {
830 keybind_msg.clear();
831 keybind_tip_timer.reset(Timer::END);
832 }
833 }
834
835 void GameStateConfigDesktop::refreshWidgets() {
836 GameStateConfigBase::refreshWidgets();
837
838 input_scrollbox->setPos(frame.x, frame.y);
839
840 input_confirm->align();
841 }
842
843 void GameStateConfigDesktop::confirmKey(int button) {
844 inpt->pressing[button] = false;
845 inpt->lock[button] = false;
846
847 input_confirm->visible = false;
848 input_confirm_timer.reset(Timer::END);
849 keybind_tip_timer.reset(Timer::END);
850
851 updateKeybinds();
852 }
853
854 void GameStateConfigDesktop::scanKey(int button) {
855 int column = button / key_count;
856 int real_button = button % key_count;
857
858 // clear the keybind if the user clicks "Clear" in the dialog
859 if (input_confirm->visible && input_confirm->confirmClicked) {
860 inpt->setKeybind(-1, real_button, column, keybind_msg);
861 confirmKey(real_button);
862 return;
863 }
864
865 if (input_confirm->visible && !input_confirm->isWithinButtons) {
866 // keyboard & mouse
867 if (column == InputState::BINDING_DEFAULT || column == InputState::BINDING_ALT) {
868 if (inpt->last_button != -1) {
869 // mouse
870 inpt->setKeybind(inpt->last_button, real_button, column, keybind_msg);
871 confirmKey(real_button);
872 }
873 else if (inpt->last_key != -1) {
874 // keyboard
875 inpt->setKeybind(inpt->last_key, real_button, column, keybind_msg);
876 confirmKey(real_button);
877 }
878 }
879 // joystick
880 else if (column == InputState::BINDING_JOYSTICK && inpt->last_joybutton != -1) {
881 inpt->setKeybind(inpt->last_joybutton, real_button, column, keybind_msg);
882 confirmKey(real_button);
883 }
884 else if (column == InputState::BINDING_JOYSTICK && inpt->last_joyaxis != -1) {
885 inpt->setKeybind(inpt->last_joyaxis, real_button, column, keybind_msg);
886 confirmKey(real_button);
887 }
888 }
889 }
890
891 void GameStateConfigDesktop::cleanupTabContents() {
892 for (std::vector<Widget*>::iterator iter = child_widget.begin(); iter != child_widget.end(); ++iter) {
893 if (*iter != NULL) {
894 delete (*iter);
895 *iter = NULL;
896 }
897 }
898 child_widget.clear();
899
900 for (unsigned int i = 0; i < keybinds_lb.size(); i++) {
901 if (keybinds_lb[i] != NULL) {
902 delete keybinds_lb[i];
903 keybinds_lb[i] = NULL;
904 }
905 }
906 for (unsigned int i = 0; i < keybinds_btn.size(); i++) {
907 if (keybinds_btn[i] != NULL) {
908 delete keybinds_btn[i];
909 keybinds_btn[i] = NULL;
910 }
911 }
912
913 if (input_scrollbox != NULL) {
914 delete input_scrollbox;
915 input_scrollbox = NULL;
916 }
917 }
918
919 void GameStateConfigDesktop::cleanupDialogs() {
920 if (defaults_confirm != NULL) {
921 delete defaults_confirm;
922 defaults_confirm = NULL;
923 }
924 if (input_confirm != NULL) {
925 delete input_confirm;
926 input_confirm = NULL;
927 }
928 if (keybind_tip != NULL) {
929 delete keybind_tip;
930 keybind_tip = NULL;
931 }
932 }
933
934 void GameStateConfigDesktop::enableMouseOptions() {
935 settings->no_mouse = false;
936 no_mouse_cb->setChecked(settings->no_mouse);
937 }
938
939 void GameStateConfigDesktop::disableMouseOptions() {
940 settings->mouse_aim = false;
941 mouse_aim_cb->setChecked(settings->mouse_aim);
942
943 settings->mouse_move = false;
944 mouse_move_cb->setChecked(settings->mouse_move);
945
946 settings->no_mouse = true;
947 no_mouse_cb->setChecked(settings->no_mouse);
948 }
949
950 void GameStateConfigDesktop::disableJoystickOptions() {
951 settings->enable_joystick = false;
952 enable_joystick_cb->setChecked(settings->enable_joystick);
953
954 for (int i=0; i<joystick_device_lstb->getSize(); i++)
955 joystick_device_lstb->deselect(i);
956
957 if (inpt->getNumJoysticks() > 0)
958 joystick_device_lstb->refresh();
959 }
960
961 void GameStateConfigDesktop::refreshRenderers() {
962 renderer_lstb->clear();
963
964 std::vector<std::string> rd_name, rd_desc;
965 createRenderDeviceList(msg, rd_name, rd_desc);
966
967 for (size_t i = 0; i < rd_name.size(); ++i) {
968 renderer_lstb->append(rd_name[i], rd_desc[i]);
969 if (rd_name[i] == settings->render_device_name) {
970 renderer_lstb->select(static_cast<int>(i));
971 }
972 }
973
974 renderer_lstb->jumpToSelected();
975 }
+0
-156
src/GameStateConfigDesktop.h less more
0 /*
1 Copyright © 2014-2016 Justin Jacobs
2
3 This file is part of FLARE.
4
5 FLARE is free software: you can redistribute it and/or modify it under the terms
6 of the GNU General Public License as published by the Free Software Foundation,
7 either version 3 of the License, or (at your option) any later version.
8
9 FLARE is distributed in the hope that it will be useful, but WITHOUT ANY
10 WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A
11 PARTICULAR PURPOSE. See the GNU General Public License for more details.
12
13 You should have received a copy of the GNU General Public License along with
14 FLARE. If not, see http://www.gnu.org/licenses/
15 */
16
17 /**
18 * GameStateConfigDesktop
19 *
20 * Handle game Settings Menu (desktop computer settings)
21 */
22
23 #ifndef GAMESTATECONFIGDESKTOP_H
24 #define GAMESTATECONFIGDESKTOP_H
25
26 #include "CommonIncludes.h"
27 #include "GameState.h"
28 #include "GameStateConfigBase.h"
29 #include "Utils.h"
30
31 class FileParser;
32 class MenuConfirm;
33 class Widget;
34 class WidgetButton;
35 class WidgetCheckBox;
36 class WidgetInput;
37 class WidgetLabel;
38 class WidgetListBox;
39 class WidgetScrollBox;
40 class WidgetSlider;
41 class WidgetTabControl;
42
43 class GameStateConfigDesktop : public GameStateConfigBase {
44 public:
45 static const bool ENABLE_VIDEO_TAB = true;
46
47 explicit GameStateConfigDesktop(bool _enable_video_tab);
48 ~GameStateConfigDesktop();
49
50 private:
51 static const int GAMMA_MIN = 5;
52 static const int GAMMA_MAX = 15;
53
54 short VIDEO_TAB;
55 short INPUT_TAB;
56 short KEYBINDS_TAB;
57
58 void init();
59 void readConfig();
60 bool parseKeyDesktop(FileParser &infile, int &x1, int &y1, int &x2, int &y2);
61 void addChildWidgetsDesktop();
62 void setupTabList();
63
64 void update();
65 void updateVideo();
66 void updateInput();
67 void updateKeybinds();
68
69 void logic();
70 bool logicMain();
71 void logicVideo();
72 void logicInput();
73 void logicKeybinds();
74
75 void renderTabContents();
76 void renderDialogs();
77
78 void refreshWidgets();
79
80 void cleanupTabContents();
81 void cleanupDialogs();
82
83 TabList tablist_video;
84 TabList tablist_input;
85 TabList tablist_keybinds;
86
87 void confirmKey(int button);
88 void scanKey(int button);
89
90 void enableMouseOptions();
91 void disableMouseOptions();
92 void disableJoystickOptions();
93 void refreshRenderers();
94
95 WidgetListBox * renderer_lstb;
96 WidgetLabel * renderer_lb;
97 WidgetCheckBox * fullscreen_cb;
98 WidgetLabel * fullscreen_lb;
99 WidgetCheckBox * hwsurface_cb;
100 WidgetLabel * hwsurface_lb;
101 WidgetCheckBox * vsync_cb;
102 WidgetLabel * vsync_lb;
103 WidgetCheckBox * texture_filter_cb;
104 WidgetLabel * texture_filter_lb;
105 WidgetCheckBox * dpi_scaling_cb;
106 WidgetLabel * dpi_scaling_lb;
107 WidgetCheckBox * parallax_layers_cb;
108 WidgetLabel * parallax_layers_lb;
109 WidgetCheckBox * change_gamma_cb;
110 WidgetLabel * change_gamma_lb;
111 WidgetSlider * gamma_sl;
112 WidgetLabel * gamma_lb;
113 WidgetListBox * joystick_device_lstb;
114 WidgetLabel * joystick_device_lb;
115 WidgetCheckBox * enable_joystick_cb;
116 WidgetLabel * enable_joystick_lb;
117 WidgetCheckBox * mouse_move_cb;
118 WidgetLabel * mouse_move_lb;
119 WidgetCheckBox * mouse_aim_cb;
120 WidgetLabel * mouse_aim_lb;
121 WidgetCheckBox * no_mouse_cb;
122 WidgetLabel * no_mouse_lb;
123 WidgetCheckBox * mouse_move_swap_cb;
124 WidgetLabel * mouse_move_swap_lb;
125 WidgetCheckBox * mouse_move_attack_cb;
126 WidgetLabel * mouse_move_attack_lb;
127 WidgetSlider * joystick_deadzone_sl;
128 WidgetLabel * joystick_deadzone_lb;
129
130 std::vector<Rect> video_modes;
131
132 std::vector<WidgetLabel *> keybinds_lb;
133 std::vector<WidgetButton *> keybinds_btn;
134
135 WidgetScrollBox * input_scrollbox;
136 MenuConfirm * input_confirm;
137
138 Timer input_confirm_timer;
139 int input_key;
140 unsigned key_count;
141
142 Rect scrollpane;
143 Color scrollpane_color;
144 int scrollpane_contents;
145 Point secondary_offset;
146
147 bool enable_video_tab;
148
149 std::string keybind_msg;
150 Timer keybind_tip_timer;
151 WidgetTooltip* keybind_tip;
152 };
153
154 #endif
155
7676 , scroll_offset(0)
7777 , has_scroll_bar(false)
7878 , game_slot_max(4)
79 , text_trim_boundary(0) {
79 , text_trim_boundary(0)
80 , portrait_align(Utils::ALIGN_FRAME_TOPLEFT)
81 , gameslot_align(Utils::ALIGN_FRAME_TOPLEFT) {
8082
8183 if (items == NULL)
8284 items = new ItemManager();
108110 tablist.ignore_no_mouse = true;
109111 tablist.add(button_exit);
110112 tablist.add(button_new);
113
114 // Some widgets default to being aligned to the menu frame
115 button_new->alignment = Utils::ALIGN_FRAME_TOPLEFT;
116 button_load->alignment = Utils::ALIGN_FRAME_TOPLEFT;
117 button_delete->alignment = Utils::ALIGN_FRAME_TOPLEFT;
111118
112119 // Read positions from config file
113120 FileParser infile;
119126 if (infile.key == "button_new") {
120127 int x = Parse::popFirstInt(infile.val);
121128 int y = Parse::popFirstInt(infile.val);
122 int a = Parse::toAlignment(Parse::popFirstString(infile.val));
129 int a = Parse::toAlignment(Parse::popFirstString(infile.val), Utils::ALIGN_FRAME_TOPLEFT);
123130 button_new->setBasePos(x, y, a);
124131 }
125132 // @ATTR button_load|int, int, alignment : X, Y, Alignment|Position of the "Load Game" button.
126133 else if (infile.key == "button_load") {
127134 int x = Parse::popFirstInt(infile.val);
128135 int y = Parse::popFirstInt(infile.val);
129 int a = Parse::toAlignment(Parse::popFirstString(infile.val));
136 int a = Parse::toAlignment(Parse::popFirstString(infile.val), Utils::ALIGN_FRAME_TOPLEFT);
130137 button_load->setBasePos(x, y, a);
131138 }
132139 // @ATTR button_delete|int, int, alignment : X, Y, Alignment|Position of the "Delete Save" button.
133140 else if (infile.key == "button_delete") {
134141 int x = Parse::popFirstInt(infile.val);
135142 int y = Parse::popFirstInt(infile.val);
136 int a = Parse::toAlignment(Parse::popFirstString(infile.val));
143 int a = Parse::toAlignment(Parse::popFirstString(infile.val), Utils::ALIGN_FRAME_TOPLEFT);
137144 button_delete->setBasePos(x, y, a);
138145 }
139146 // @ATTR button_exit|int, int, alignment : X, Y, Alignment|Position of the "Exit to Title" button.
249256 graphics = render_device->loadImage("images/menus/portrait_border.png", RenderDevice::ERROR_NORMAL);
250257 if (graphics) {
251258 portrait_border = graphics->createSprite();
259 portrait_border->setClip(0, 0, portrait_dest.w, portrait_dest.h);
252260 graphics->unref();
253261 }
254262 }
278286
279287 void GameStateLoad::readGameSlots() {
280288 FileParser infile;
281 std::stringstream filename;
289 std::string save_root = settings->path_user + "saves/" + eset->misc.save_prefix + "/";
282290 std::vector<std::string> save_dirs;
283291
284292 Filesystem::getDirList(settings->path_user + "saves/" + eset->misc.save_prefix, save_dirs);
296304
297305 for (size_t i=0; i<save_dirs.size(); ++i){
298306 // save data is stored in slot#/avatar.txt
299 filename.str("");
300 filename << settings->path_user << "saves/" << eset->misc.save_prefix << "/" << save_dirs[i] << "/avatar.txt";
301
302 if (!infile.open(filename.str(), !FileParser::MOD_FILE, FileParser::ERROR_NORMAL)) continue;
307 std::string filename = save_root + save_dirs[i] + "/avatar.txt";
308
309 if (!infile.open(filename, !FileParser::MOD_FILE, FileParser::ERROR_NORMAL)) continue;
303310
304311 game_slots[i] = new GameSlot();
305312 game_slots[i]->id = Parse::toInt(save_dirs[i]);
395402 }
396403
397404 for (unsigned int i=0; i<slot->equipped.size(); i++) {
398 if (static_cast<unsigned>(slot->equipped[i]) > items->items.size()-1) {
399 Utils::logError("GameStateLoad: Item in save slot %d with id=%d is out of bounds 1-%d. Your savegame is broken or you might be using an incompatible savegame/mod", slot->id, slot->equipped[i], static_cast<int>(items->items.size())-1);
405 if (slot->equipped[i] != 0 && !items->items[slot->equipped[i]].has_name) {
406 Utils::logError("GameStateLoad: Item in save slot %d with id=%d is unknown. Your savegame is broken or you might be using an incompatible savegame/mod", slot->id, slot->equipped[i]);
400407 continue;
401408 }
402409
403 if (slot->equipped[i] > 0 && !preview_layer.empty() && static_cast<unsigned>(slot->equipped[i]) < items->items.size()) {
410 if (slot->equipped[i] > 0 && !preview_layer.empty()) {
404411 std::vector<std::string>::iterator found = find(preview_layer.begin(), preview_layer.end(), items->items[slot->equipped[i]].type);
405412 if (found != preview_layer.end())
406413 img_gfx[distance(preview_layer.begin(), found)] = items->items[slot->equipped[i]].gfx;
613620
614621 void GameStateLoad::refreshWidgets() {
615622 button_exit->setPos(0, 0);
616 button_new->setPos((settings->view_w - eset->resolutions.frame_w)/2, (settings->view_h - eset->resolutions.frame_h)/2);
617 button_load->setPos((settings->view_w - eset->resolutions.frame_w)/2, (settings->view_h - eset->resolutions.frame_h)/2);
618 button_delete->setPos((settings->view_w - eset->resolutions.frame_w)/2, (settings->view_h - eset->resolutions.frame_h)/2);
623 button_new->setPos(0, 0);
624 button_load->setPos(0, 0);
625 button_delete->setPos(0, 0);
619626
620627 if (portrait) {
621 portrait->setDest(portrait_dest.x + ((settings->view_w - eset->resolutions.frame_w)/2), portrait_dest.y + ((settings->view_h - eset->resolutions.frame_h)/2));
628 Rect portrait_rect = portrait_dest;
629 Utils::alignToScreenEdge(portrait_align, &portrait_rect);
630 portrait->setDest(portrait_rect.x, portrait_rect.y);
622631 }
623632
624633 slot_pos.resize(visible_slots);
625634 for (size_t i=0; i<slot_pos.size(); i++) {
626 slot_pos[i].x = gameslot_pos.x + (settings->view_w - eset->resolutions.frame_w)/2;
635 slot_pos[i].x = gameslot_pos.x;
627636 slot_pos[i].h = gameslot_pos.h;
628 slot_pos[i].y = gameslot_pos.y + (settings->view_h - eset->resolutions.frame_h)/2 + (static_cast<int>(i) * gameslot_pos.h);
637 slot_pos[i].y = gameslot_pos.y + (static_cast<int>(i) * gameslot_pos.h);
629638 slot_pos[i].w = gameslot_pos.w;
639 Utils::alignToScreenEdge(gameslot_align, &slot_pos[i]);
630640 }
631641
632642 refreshScrollBar();
124124 bool has_scroll_bar;
125125 int game_slot_max;
126126 int text_trim_boundary;
127 int portrait_align;
128 int gameslot_align;
127129
128130 public:
129131 GameStateLoad();
5353 , portrait_image(NULL)
5454 , portrait_border(NULL)
5555 , show_classlist(true)
56 , show_randomize(true)
5657 , modified_name(false)
5758 , delete_items(true)
5859 , random_option(false)
103104 label_classlist->setText(msg->get("Choose a Class"));
104105 label_classlist->setColor(font->getColor(FontEngine::COLOR_MENU_NORMAL));
105106
107 // Some widgets default to being aligned to the menu frame
108 button_prev->alignment = Utils::ALIGN_FRAME_TOPLEFT;
109 button_next->alignment = Utils::ALIGN_FRAME_TOPLEFT;
110 button_permadeath->alignment = Utils::ALIGN_FRAME_TOPLEFT;
111 button_randomize->alignment = Utils::ALIGN_FRAME_TOPLEFT;
112 input_name->alignment = Utils::ALIGN_FRAME_TOPLEFT;
113 class_list->alignment = Utils::ALIGN_FRAME_TOPLEFT;
114
106115 // Read positions from config file
107116 FileParser infile;
108117
113122 if (infile.key == "button_prev") {
114123 int x = Parse::popFirstInt(infile.val);
115124 int y = Parse::popFirstInt(infile.val);
116 int a = Parse::toAlignment(Parse::popFirstString(infile.val));
125 int a = Parse::toAlignment(Parse::popFirstString(infile.val), Utils::ALIGN_FRAME_TOPLEFT);
117126 button_prev->setBasePos(x, y, a);
118127 }
119128 // @ATTR button_next|int, int, alignment : X, Y, Alignment|Position of button to choose the next preset hero.
120129 else if (infile.key == "button_next") {
121130 int x = Parse::popFirstInt(infile.val);
122131 int y = Parse::popFirstInt(infile.val);
123 int a = Parse::toAlignment(Parse::popFirstString(infile.val));
132 int a = Parse::toAlignment(Parse::popFirstString(infile.val), Utils::ALIGN_FRAME_TOPLEFT);
124133 button_next->setBasePos(x, y, a);
125134 }
126135 // @ATTR button_exit|int, int, alignment : X, Y, Alignment|Position of "Cancel" button.
141150 else if (infile.key == "button_permadeath") {
142151 int x = Parse::popFirstInt(infile.val);
143152 int y = Parse::popFirstInt(infile.val);
144 int a = Parse::toAlignment(Parse::popFirstString(infile.val));
153 int a = Parse::toAlignment(Parse::popFirstString(infile.val), Utils::ALIGN_FRAME_TOPLEFT);
145154 button_permadeath->setBasePos(x, y, a);
146155 }
147 // @ATTR bytton_randomize|int, int, alignment : X, Y, Alignment|Position of the "Randomize" button.
156 // @ATTR button_randomize|int, int, alignment : X, Y, Alignment|Position of the "Randomize" button.
148157 else if (infile.key == "button_randomize") {
149158 int x = Parse::popFirstInt(infile.val);
150159 int y = Parse::popFirstInt(infile.val);
151 int a = Parse::toAlignment(Parse::popFirstString(infile.val));
160 int a = Parse::toAlignment(Parse::popFirstString(infile.val), Utils::ALIGN_FRAME_TOPLEFT);
152161 button_randomize->setBasePos(x, y, a);
153162 }
154163 // @ATTR name_input|int, int, alignment : X, Y, Alignment|Position of the hero name textbox.
155164 else if (infile.key == "name_input") {
156165 int x = Parse::popFirstInt(infile.val);
157166 int y = Parse::popFirstInt(infile.val);
158 int a = Parse::toAlignment(Parse::popFirstString(infile.val));
167 int a = Parse::toAlignment(Parse::popFirstString(infile.val), Utils::ALIGN_FRAME_TOPLEFT);
159168 input_name->setBasePos(x, y, a);
160169 }
161170 // @ATTR portrait_label|label|Label for the "Choose a Portrait" text.
186195 else if (infile.key == "class_list") {
187196 int x = Parse::popFirstInt(infile.val);
188197 int y = Parse::popFirstInt(infile.val);
189 int a = Parse::toAlignment(Parse::popFirstString(infile.val));
198 int a = Parse::toAlignment(Parse::popFirstString(infile.val), Utils::ALIGN_FRAME_TOPLEFT);
190199 class_list->setBasePos(x, y, a);
191200 }
192201 // @ATTR show_classlist|bool|Allows hiding the class list.
193202 else if (infile.key == "show_classlist") {
194203 show_classlist = Parse::toBool(infile.val);
204 }
205 // @ATTR show_randomize|bool|Toggles the visibility of the "Randomize" button.
206 else if (infile.key == "show_randomize") {
207 show_randomize = Parse::toBool(infile.val);
195208 }
196209 // @ATTR random_option|bool|Initially picks a random character option (aka portrait/name).
197210 else if (infile.key == "random_option") {
235248 tablist.add(button_create);
236249 tablist.add(input_name);
237250 tablist.add(button_permadeath);
238 tablist.add(button_randomize);
251 if (show_randomize) {
252 tablist.add(button_randomize);
253 }
239254 tablist.add(button_prev);
240255 tablist.add(button_next);
241 tablist.add(class_list);
256 if (show_classlist) {
257 tablist.add(class_list);
258 }
242259
243260 refreshWidgets();
244261
440457 setHeroOption(OPTION_PREV);
441458 }
442459
443 if (button_randomize->checkClick()) {
460 if (show_randomize && button_randomize->checkClick()) {
444461 if (!eset->hero_classes.list.empty()) {
445462 int class_index = static_cast<int>(rand() % eset->hero_classes.list.size());
446463 class_list->select(class_index);
456473 button_exit->setPos(0, 0);
457474 button_create->setPos(0, 0);
458475
459 button_prev->setPos((settings->view_w - eset->resolutions.frame_w)/2, (settings->view_h - eset->resolutions.frame_h)/2);
460 button_next->setPos((settings->view_w - eset->resolutions.frame_w)/2, (settings->view_h - eset->resolutions.frame_h)/2);
461 button_permadeath->setPos((settings->view_w - eset->resolutions.frame_w)/2, (settings->view_h - eset->resolutions.frame_h)/2);
462 button_randomize->setPos((settings->view_w - eset->resolutions.frame_w)/2, (settings->view_h - eset->resolutions.frame_h)/2);
463 class_list->setPos((settings->view_w - eset->resolutions.frame_w)/2, (settings->view_h - eset->resolutions.frame_h)/2);
476 button_prev->setPos(0, 0);
477 button_next->setPos(0, 0);
478 button_permadeath->setPos(0, 0);
479 button_randomize->setPos(0, 0);
480 class_list->setPos(0, 0);
464481
465482 label_portrait->setPos((settings->view_w - eset->resolutions.frame_w)/2, (settings->view_h - eset->resolutions.frame_h)/2);
466483 label_name->setPos((settings->view_w - eset->resolutions.frame_w)/2, (settings->view_h - eset->resolutions.frame_h)/2);
467484 label_permadeath->setPos((settings->view_w - eset->resolutions.frame_w)/2, (settings->view_h - eset->resolutions.frame_h)/2);
468485 label_classlist->setPos((settings->view_w - eset->resolutions.frame_w)/2, (settings->view_h - eset->resolutions.frame_h)/2);
469486
470 input_name->setPos((settings->view_w - eset->resolutions.frame_w)/2, (settings->view_h - eset->resolutions.frame_h)/2);
487 input_name->setPos(0, 0);
471488 }
472489
473490 void GameStateNew::render() {
479496 button_next->render();
480497 input_name->render();
481498 button_permadeath->render();
482 button_randomize->render();
499
500 if (show_randomize) {
501 button_randomize->render();
502 }
483503
484504 // display portrait option
485505 Rect src;
8686
8787 Rect portrait_pos;
8888 bool show_classlist;
89 bool show_randomize;
8990 bool modified_name;
9091 bool delete_items;
9192 bool random_option;
3030 #include "CampaignManager.h"
3131 #include "CombatText.h"
3232 #include "CursorManager.h"
33 #include "Enemy.h"
3433 #include "EnemyGroupManager.h"
35 #include "EnemyManager.h"
34 #include "Entity.h"
35 #include "EntityManager.h"
3636 #include "EngineSettings.h"
3737 #include "FileParser.h"
3838 #include "GameState.h"
9898 powers = new PowerManager();
9999 mapr = new MapRenderer();
100100 pc = new Avatar();
101 enemym = new EnemyManager();
101 entitym = new EntityManager();
102102 enemyg = new EnemyGroupManager();
103103 hazards = new HazardManager();
104104 menu = new MenuManager();
119119 * Reset all game states to a new game.
120120 */
121121 void GameStatePlay::resetGame() {
122 mapr->load("maps/spawn.txt");
123 setLoadingFrame();
124122 camp->resetAllStatuses();
125123 pc->init();
126124 pc->stats.currency = 0;
127 menu->act->clear();
125 menu->act->clear(!MenuActionBar::CLEAR_SKIP_ITEMS);
128126 menu->inv->inventory[0].clear();
129127 menu->inv->inventory[1].clear();
130128 menu->inv->changed_equipment = true;
137135 menu->talker->setHero(pc->stats);
138136 pc->loadSounds();
139137
140 mapr->executeOnLoadEvents();
138 mapr->teleportation = true;
139 mapr->teleport_mapname = "maps/spawn.txt";
141140 }
142141
143142 /**
167166 enemy = hazards->last_enemy;
168167 }
169168 else {
170 enemy = enemym->getNearestEnemy(pc->stats.pos, !EnemyManager::GET_CORPSE, NULL, eset->misc.interact_range);
169 enemy = entitym->getNearestEntity(pc->stats.pos, !EntityManager::GET_CORPSE, NULL, eset->misc.interact_range);
171170 }
172171 }
173172 else {
176175 hazards->last_enemy = NULL;
177176 }
178177 else {
179 enemy = enemym->enemyFocus(inpt->mouse, mapr->cam, EnemyManager::IS_ALIVE);
180 if (enemy)
178 enemy = entitym->entityFocus(inpt->mouse, mapr->cam.pos, EntityManager::IS_ALIVE);
179 if (enemy) {
181180 curs->setCursor(CursorManager::CURSOR_ATTACK);
182 src_pos = Utils::screenToMap(inpt->mouse.x, inpt->mouse.y, mapr->cam.x, mapr->cam.y);
181 }
182 src_pos = Utils::screenToMap(inpt->mouse.x, inpt->mouse.y, mapr->cam.pos.x, mapr->cam.pos.y);
183183
184184 }
185185 }
193193 }
194194 else if (inpt->usingMouse()) {
195195 // if we're using a mouse and we didn't select an enemy, try selecting a dead one instead
196 Enemy *temp_enemy = enemym->enemyFocus(inpt->mouse, mapr->cam, !EnemyManager::IS_ALIVE);
196 Entity *temp_enemy = entitym->entityFocus(inpt->mouse, mapr->cam.pos, !EntityManager::IS_ALIVE);
197197 if (temp_enemy) {
198198 pc->stats.target_corpse = &(temp_enemy->stats);
199199 menu->enemy->enemy = temp_enemy;
210210 }
211211
212212 // save the positions of the nearest enemies for powers that use "target_nearest"
213 Enemy *nearest = enemym->getNearestEnemy(src_pos, !EnemyManager::GET_CORPSE, &(pc->stats.target_nearest_dist), eset->misc.interact_range);
213 Entity *nearest = entitym->getNearestEntity(src_pos, !EntityManager::GET_CORPSE, &(pc->stats.target_nearest_dist), eset->misc.interact_range);
214214 if (nearest)
215215 pc->stats.target_nearest = &(nearest->stats);
216 Enemy *nearest_corpse = enemym->getNearestEnemy(src_pos, EnemyManager::GET_CORPSE, &(pc->stats.target_nearest_corpse_dist), eset->misc.interact_range);
216 Entity *nearest_corpse = entitym->getNearestEntity(src_pos, EntityManager::GET_CORPSE, &(pc->stats.target_nearest_corpse_dist), eset->misc.interact_range);
217217 if (nearest_corpse)
218218 pc->stats.target_nearest_corpse = &(nearest_corpse->stats);
219 }
220
221 /**
222 * Similar to the above checkEnemyFocus(), but handles NPCManager instead
223 */
224 void GameStatePlay::checkNPCFocus() {
225 Entity *focus_npc;
226
227 if (!inpt->usingMouse() && (!menu->enemy->enemy || (menu->enemy->enemy && menu->enemy->enemy->stats.hero_ally))) {
228 // TODO bug? If mixed monster allies and npc allies, npc allies will always be highlighted, regardless of distance to player
229 focus_npc = npcs->getNearestNPC(pc->stats.pos);
230 }
231 else {
232 focus_npc = npcs->npcFocus(inpt->mouse, mapr->cam.pos, true);
233 }
234
235 if (focus_npc) {
236 // set the actual menu with the npc selected above
237 if (!focus_npc->stats.suppress_hp) {
238 menu->enemy->enemy = focus_npc;
239 menu->enemy->timeout.reset(Timer::BEGIN);
240 }
241 }
242 else if (inpt->usingMouse()) {
243 // if we're using a mouse and we didn't select an npc, try selecting a dead one instead
244 Entity *temp_npc = npcs->npcFocus(inpt->mouse, mapr->cam.pos, false);
245 if (temp_npc) {
246 menu->enemy->enemy = temp_npc;
247 menu->enemy->timeout.reset(Timer::BEGIN);
248 }
249 }
219250 }
220251
221252 /**
257288
258289 // Normal pickups
259290 if (!pc->using_main1) {
260 pickup = loot->checkPickup(inpt->mouse, mapr->cam, pc->stats.pos);
291 pickup = loot->checkPickup(inpt->mouse, mapr->cam.pos, pc->stats.pos);
261292 }
262293
263294 if (!pickup.empty()) {
282313 // during intermap teleport, we set the camera to the player position
283314 pc->stats.pos.x = mapr->teleport_destination.x;
284315 pc->stats.pos.y = mapr->teleport_destination.y;
316 pc->teleport_camera_lock = true;
285317 }
286318 else {
287319 pc->stats.pos.x = pc->stats.teleport_destination.x;
289321 }
290322
291323 // if we're not changing map, move allies to a the player's new position
292 // when changing maps, enemym->handleNewMap() does something similar to this
324 // when changing maps, entitym->handleNewMap() does something similar to this
293325 if (mapr->teleport_mapname.empty()) {
294326 FPoint spawn_pos = mapr->collider.getRandomNeighbor(Point(pc->stats.pos), 1, !MapCollision::IGNORE_BLOCKED);
295 for (unsigned int i=0; i < enemym->enemies.size(); i++) {
296 if(enemym->enemies[i]->stats.hero_ally && enemym->enemies[i]->stats.alive) {
297 mapr->collider.unblock(enemym->enemies[i]->stats.pos.x, enemym->enemies[i]->stats.pos.y);
298 enemym->enemies[i]->stats.pos = spawn_pos;
299 mapr->collider.block(enemym->enemies[i]->stats.pos.x, enemym->enemies[i]->stats.pos.y, MapCollision::IS_ALLY);
327 for (unsigned int i=0; i < entitym->entities.size(); i++) {
328 if(entitym->entities[i]->stats.hero_ally && entitym->entities[i]->stats.alive) {
329 mapr->collider.unblock(entitym->entities[i]->stats.pos.x, entitym->entities[i]->stats.pos.y);
330 entitym->entities[i]->stats.pos = spawn_pos;
331 mapr->collider.block(entitym->entities[i]->stats.pos.x, entitym->entities[i]->stats.pos.y, MapCollision::IS_ALLY);
300332 }
301333 }
302334 }
303335
304336 // process intermap teleport
305337 if (mapr->teleportation && !mapr->teleport_mapname.empty()) {
306 mapr->cam.x = pc->stats.pos.x;
307 mapr->cam.y = pc->stats.pos.y;
338 mapr->cam.warpTo(pc->stats.pos);
308339 std::string teleport_mapname = mapr->teleport_mapname;
309340 mapr->teleport_mapname = "";
310341 inpt->lock_all = (teleport_mapname == "maps/spawn.txt");
315346
316347 // use the default hero spawn position for this map
317348 if (mapr->teleport_destination.x == -1 && mapr->teleport_destination.y == -1) {
318 mapr->cam.x = pc->stats.pos.x = mapr->hero_pos.x;
319 mapr->cam.y = pc->stats.pos.y = mapr->hero_pos.y;
349 pc->stats.pos.x = mapr->hero_pos.x;
350 pc->stats.pos.y = mapr->hero_pos.y;
351 mapr->cam.warpTo(pc->stats.pos);
320352 }
321353
322354 // store this as the new respawn point (provided the tile is open)
343375 on_load_teleport = true;
344376
345377 // enemies and npcs should be initialized AFTER on_load events execute
346 enemym->handleNewMap();
378 entitym->handleNewMap();
347379 npcs->handleNewMap();
348380 resetNPC();
349381
350382 menu->mini->prerender(&mapr->collider, mapr->w, mapr->h);
351383
352384 // return to title (permadeath) OR auto-save
353 if (pc->stats.permadeath && pc->stats.cur_state == StatBlock::AVATAR_DEAD) {
385 if (pc->stats.permadeath && pc->stats.cur_state == StatBlock::ENTITY_DEAD) {
354386 snd->stopMusic();
355387 showLoading();
356388 setRequestedGameState(new GameStateTitle());
383415 * Also check closing the game window entirely.
384416 */
385417 void GameStatePlay::checkCancel() {
386 bool save_on_exit = eset->misc.save_onexit && !(pc->stats.permadeath && pc->stats.cur_state == StatBlock::AVATAR_DEAD);
418 bool save_on_exit = eset->misc.save_onexit && !(pc->stats.permadeath && pc->stats.cur_state == StatBlock::ENTITY_DEAD);
387419
388420 if (save_on_exit && eset->misc.save_pos_onexit) {
389421 mapr->respawn_point = pc->stats.pos;
398430
399431 // audio levels can be changed in the pause menu, so update our settings file
400432 settings->saveSettings();
433 inpt->saveKeyBindings();
401434
402435 snd->stopMusic();
403436 showLoading();
412445
413446 if (save_on_exit)
414447 save_load->saveGame();
448
449 settings->saveSettings();
450 inpt->saveKeyBindings();
415451
416452 snd->stopMusic();
417453 exitRequested = true;
478514 }
479515 else if (infile.key == "power") {
480516 // @ATTR title.power|power_id|Requires power.
481 titles.back().power = Parse::toInt(infile.val);
517 titles.back().power = Parse::toPowerID(infile.val);
482518 }
483519 else if (infile.key == "requires_status") {
484520 // @ATTR title.requires_status|list(string)|Requires status.
552588 }
553589
554590 void GameStatePlay::checkEquipmentChange() {
555 // force the actionbar to update when we change gear
556591 if (menu->inv->changed_equipment) {
592 // force the actionbar to update when we change gear
557593 menu->act->updated = true;
558 }
559
560 if (menu->inv->changed_equipment) {
561594
562595 int feet_index = -1;
563596 std::vector<Avatar::Layer_gfx> img_gfx;
630663 */
631664 void GameStatePlay::checkUsedItems() {
632665 for (unsigned i=0; i<powers->used_items.size(); i++) {
633 menu->inv->remove(powers->used_items[i]);
666 menu->inv->remove(powers->used_items[i], 1);
634667 }
635668 for (unsigned i=0; i<powers->used_equipped_items.size(); i++) {
636669 menu->inv->inventory[MenuInventory::EQUIPMENT].remove(powers->used_equipped_items[i], 1);
706739 if (npc_id != -1) {
707740 bool interact_with_npc = false;
708741 if (menu->talker->npc_from_map) {
709 float interact_distance = Utils::calcDist(pc->stats.pos, npcs->npcs[npc_id]->pos);
742 float interact_distance = Utils::calcDist(pc->stats.pos, npcs->npcs[npc_id]->stats.pos);
710743
711744 if (interact_distance < eset->misc.interact_range) {
712745 interact_with_npc = true;
743776 menu->inv->visible = true;
744777 menu->stash->visible = true;
745778 mapr->stash = false;
779 menu->stash->validate(menu->drop_stack);
746780 }
747781 else if (menu->stash->visible) {
748782 // Close stash if inventory is closed
761795 }
762796
763797 // If the stash has been updated, save the game
764 if (menu->stash->updated) {
765 menu->stash->updated = false;
798 if (menu->stash->checkUpdates()) {
766799 save_load->saveGame();
767800 }
768801 }
795828 mapr->respawn_point = pc->stats.pos;
796829 }
797830
798 if (eset->misc.save_onload)
831 if (eset->misc.save_oncutscene)
799832 save_load->saveGame();
800833
801 if (menu->devconsole) {
802 menu->devconsole->closeWindow();
803 }
834 menu->closeAll();
804835
805836 setRequestedGameState(cutscene);
806837 }
824855 for (unsigned i = index; i < menu->act->slots_count; i++) {
825856 if (menu->act->hotkeys[i] == 0) continue;
826857
827 int id = menu->inv->getPowerMod(menu->act->hotkeys_mod[i]);
858 PowerID id = menu->inv->getPowerMod(menu->act->hotkeys_mod[i]);
828859 if (id > 0) {
829860 menu->act->hotkeys_mod[i] = id;
830861 return updateActionBar(i);
839870 void GameStatePlay::logic() {
840871 if (inpt->window_resized)
841872 refreshWidgets();
873
874 curs->setLowHP(pc->isLowHpCursorEnabled() && pc->isLowHp());
842875
843876 checkCutscene();
844877
856889 // these actions only occur when the game isn't paused
857890 if (pc->stats.alive) checkLoot();
858891 checkEnemyFocus();
892 checkNPCFocus();
859893 if (pc->stats.alive) {
860894 mapr->checkHotspots();
861895 mapr->checkNearestEvent();
863897 }
864898 checkTitle();
865899
866 menu->act->checkAction(action_queue);
867 pc->logic(action_queue, restrictPowerUse());
900 menu->act->checkAction(pc->action_queue);
901 pc->logic();
868902
869903 // Transform powers change the actionbar layout,
870904 // so we need to prevent accidental clicks if a new power is placed under the slot we clicked on.
874908 }
875909
876910 // transfer hero data to enemies, for AI use
877 if (pc->stats.get(Stats::STEALTH) > 100) enemym->hero_stealth = 100;
878 else enemym->hero_stealth = pc->stats.get(Stats::STEALTH);
879
880 enemym->logic();
911 if (pc->stats.get(Stats::STEALTH) > 100) entitym->hero_stealth = 100;
912 else entitym->hero_stealth = pc->stats.get(Stats::STEALTH);
913
914 entitym->logic();
881915 hazards->logic();
882916 loot->logic();
883 enemym->checkEnemiesforXP();
884917 npcs->logic();
885918
886919 snd->logic(pc->stats.pos);
887920
888 comb->logic(mapr->cam);
921 comb->logic(mapr->cam.pos);
889922 }
890923
891924 // close menus when the player dies, but still allow them to be reopened
908941 checkCancel();
909942
910943 mapr->logic(isPaused());
911 mapr->enemies_cleared = enemym->isCleared();
944 mapr->enemies_cleared = entitym->isCleared();
912945 quests->logic();
913946
914947 pc->checkTransform();
9691002 if (pc->respawn) {
9701003 pc->stats.alive = true;
9711004 pc->stats.corpse = false;
972 pc->stats.cur_state = StatBlock::AVATAR_STANCE;
1005 pc->stats.cur_state = StatBlock::ENTITY_STANCE;
9731006 menu->inv->applyEquipment();
9741007 menu->inv->changed_equipment = true;
9751008 checkEquipmentChange();
10091042 * Render all graphics for a single frame
10101043 */
10111044 void GameStatePlay::render() {
1045 if (mapr->is_spawn_map)
1046 return;
10121047
10131048 // Create a list of Renderables from all objects not already on the map.
10141049 // split the list into the beings alive (may move) and dead beings (must not move)
10171052
10181053 pc->addRenders(rens);
10191054
1020 enemym->addRenders(rens, rens_dead);
1055 entitym->addRenders(rens, rens_dead);
10211056
10221057 npcs->addRenders(rens); // npcs cannot be dead
10231058
10301065 mapr->render(rens, rens_dead);
10311066
10321067 // mouseover tooltips
1033 loot->renderTooltips(mapr->cam);
1068 loot->renderTooltips(mapr->cam.pos);
10341069
10351070 if (mapr->map_change) {
10361071 menu->mini->prerender(&mapr->collider, mapr->w, mapr->h);
10961131 }
10971132
10981133 GameStatePlay::~GameStatePlay() {
1134 curs->setLowHP(false);
1135
10991136 delete quests;
11001137 delete npcs;
11011138 delete hazards;
1102 delete enemym;
1139 delete entitym;
11031140 delete pc;
11041141 delete mapr;
11051142 delete menu;
11151152 menu = NULL;
11161153 camp = NULL;
11171154 enemyg = NULL;
1118 enemym = NULL;
1155 entitym = NULL;
11191156 items = NULL;
11201157 loot = NULL;
11211158 mapr = NULL;
3131 #include "Utils.h"
3232
3333 class Avatar;
34 class Enemy;
34 class Entity;
3535 class MenuManager;
36 class NPCManager;
3736 class QuestLog;
3837 class WidgetLabel;
3938
4342 public:
4443 std::string title;
4544 int level;
46 int power;
45 PowerID power;
4746 std::vector<StatusID> requires_status;
4847 std::vector<StatusID> requires_not_status;
4948 std::string primary_stat_1;
6261
6362 class GameStatePlay : public GameState {
6463 private:
65 Enemy *enemy;
64 Entity *enemy;
6665
67 NPCManager *npcs;
6866 QuestLog *quests;
6967
7068 bool restrictPowerUse();
7169 void checkEnemyFocus();
70 void checkNPCFocus();
7271 void checkLoot();
7372 void checkLootDrop();
7473 void checkTeleport();
9291
9392 std::vector<Title> titles;
9493
95 std::vector<ActionData> action_queue;
96
9794 Timer second_timer;
9895
9996 bool is_first_map_load;
2020 #include "EngineSettings.h"
2121 #include "FileParser.h"
2222 #include "FontEngine.h"
23 #include "GameStateConfigBase.h"
24 #include "GameStateConfigDesktop.h"
23 #include "GameStateConfig.h"
2524 #include "GameStateCutscene.h"
2625 #include "GameStateLoad.h"
2726 #include "GameStateTitle.h"
2827 #include "InputState.h"
28 #include "MenuMovementType.h"
2929 #include "MessageEngine.h"
3030 #include "Platform.h"
3131 #include "RenderDevice.h"
4242 GameStateTitle::GameStateTitle()
4343 : GameState()
4444 , logo(NULL)
45 , button_play(new WidgetButton(WidgetButton::DEFAULT_FILE))
46 , button_exit(new WidgetButton(WidgetButton::DEFAULT_FILE))
47 , button_cfg(new WidgetButton(WidgetButton::DEFAULT_FILE))
48 , button_credits(new WidgetButton(WidgetButton::DEFAULT_FILE))
49 , label_version(new WidgetLabel())
50 , menu_movement_type(NULL)
4551 , align_logo(Utils::ALIGN_CENTER)
4652 , exit_game(false)
4753 , load_game(false)
4854 {
49
50 // set up buttons
51 button_play = new WidgetButton(WidgetButton::DEFAULT_FILE);
52 button_exit = new WidgetButton(WidgetButton::DEFAULT_FILE);
53 button_cfg = new WidgetButton(WidgetButton::DEFAULT_FILE);
54 button_credits = new WidgetButton(WidgetButton::DEFAULT_FILE);
55
5655 FileParser infile;
5756 // @CLASS GameStateTitle|Description of menus/gametitle.txt
5857 if (infile.open("menus/gametitle.txt", FileParser::MOD_FILE, FileParser::ERROR_NORMAL)) {
121120 button_exit->refresh();
122121
123122 // set up labels
124 label_version = new WidgetLabel();
125123 label_version->setJustify(FontEngine::JUSTIFY_RIGHT);
126124 label_version->setText(VersionInfo::createVersionStringFull());
127125 label_version->setColor(font->getColor(FontEngine::COLOR_MENU_NORMAL));
141139 }
142140
143141 render_device->setBackgroundColor(Color(0,0,0,0));
142
143 // NOTE The presence of the mouse move setting is used to determine if the
144 // movement type dialog is displayed. Is this adequate?
145 if (!settings->move_type_dimissed && platform.config_input[Platform::Input::MOUSE_MOVE]) {
146 menu_movement_type = new MenuMovementType();
147 menu_movement_type->visible = true;
148 }
144149 }
145150
146151 void GameStateTitle::logic() {
156161 exitRequested = true;
157162 }
158163
159 tablist.logic();
160
161 if (button_play->checkClick()) {
162 showLoading();
163 setRequestedGameState(new GameStateLoad());
164 }
165 else if (button_cfg->checkClick()) {
166 showLoading();
167 if (platform.config_menu_type == Platform::CONFIG_MENU_TYPE_DESKTOP_NO_VIDEO)
168 setRequestedGameState(new GameStateConfigDesktop(!GameStateConfigDesktop::ENABLE_VIDEO_TAB));
169 else if (platform.config_menu_type == Platform::CONFIG_MENU_TYPE_DESKTOP)
170 setRequestedGameState(new GameStateConfigDesktop(GameStateConfigDesktop::ENABLE_VIDEO_TAB));
171 else
172 setRequestedGameState(new GameStateConfigBase(GameStateConfigBase::DO_INIT));
173 }
174 else if (button_credits->checkClick()) {
175 showLoading();
176 GameStateTitle *title = new GameStateTitle();
177 GameStateCutscene *credits = new GameStateCutscene(title);
178
179 if (!credits->load("cutscenes/credits.txt")) {
180 delete credits;
181 delete title;
182 }
183 else {
184 setRequestedGameState(credits);
185 }
186 }
187 else if (platform.has_exit_button && button_exit->checkClick()) {
188 exitRequested = true;
164 if (menu_movement_type && menu_movement_type->visible) {
165 menu_movement_type->logic();
166 }
167 else {
168 tablist.logic();
169
170 if (button_play->checkClick()) {
171 showLoading();
172 setRequestedGameState(new GameStateLoad());
173 }
174 else if (button_cfg->checkClick()) {
175 showLoading();
176 setRequestedGameState(new GameStateConfig());
177 }
178 else if (button_credits->checkClick()) {
179 showLoading();
180 GameStateTitle *title = new GameStateTitle();
181 GameStateCutscene *credits = new GameStateCutscene(title);
182
183 if (!credits->load("cutscenes/credits.txt")) {
184 delete credits;
185 delete title;
186 }
187 else {
188 setRequestedGameState(credits);
189 }
190 }
191 else if (platform.has_exit_button && button_exit->checkClick()) {
192 exitRequested = true;
193 }
189194 }
190195 }
191196
206211 button_exit->setPos(0, 0);
207212
208213 label_version->setPos(settings->view_w, 0);
214
215 if (menu_movement_type)
216 menu_movement_type->align();
209217 }
210218
211219 void GameStateTitle::render() {
212 // display logo
213 render_device->render(logo);
214
215 // display buttons
216 button_play->render();
217 button_cfg->render();
218 button_credits->render();
219
220 if (platform.has_exit_button)
221 button_exit->render();
220 if (!menu_movement_type || !menu_movement_type->visible) {
221 // display logo
222 render_device->render(logo);
223
224 // display buttons
225 button_play->render();
226 button_cfg->render();
227 button_credits->render();
228
229 if (platform.has_exit_button)
230 button_exit->render();
231 }
232 else {
233 menu_movement_type->render();
234 }
222235
223236 // version number
224237 label_version->render();
231244 delete button_credits;
232245 delete button_exit;
233246 delete label_version;
234 }
247 delete menu_movement_type;
248 }
2222 #include "GameState.h"
2323 #include "Widget.h"
2424
25 class MenuMovementType;
2526 class WidgetButton;
2627 class WidgetLabel;
2728
3536 WidgetButton *button_cfg;
3637 WidgetButton *button_credits;
3738 WidgetLabel *label_version;
39 MenuMovementType *menu_movement_type;
3840
3941 TabList tablist;
4042
163163 if (activeAnimation)
164164 activeAnimation->advanceFrame();
165165
166 prev_pos = pos;
167
166168 // handle movement
167169 bool check_collide = false;
168170 if (!(speed.x == 0 && speed.y == 0)) {
4949 void setAngle(const float& _angle);
5050 bool isDangerousNow();
5151 void addRenderable(std::vector<Renderable> &r, std::vector<Renderable> &r_dead);
52 void setPower(size_t power_index);
5352
5453 bool active;
5554 bool remove_now;
7069
7170 StatBlock *src_stats;
7271 Power *power;
73 size_t power_index;
72 PowerID power_index;
7473
7574 FPoint pos;
7675 FPoint speed;
7978 // for linking hazards together, e.g. repeaters
8079 Hazard* parent;
8180 std::vector<Hazard*> children;
81
82 FPoint prev_pos;
8283
8384 private:
8485 void reflect();
2424
2525 #include "Avatar.h"
2626 #include "Animation.h"
27 #include "Enemy.h"
28 #include "EnemyManager.h"
27 #include "Entity.h"
28 #include "EntityManager.h"
2929 #include "EventManager.h"
3030 #include "Hazard.h"
3131 #include "HazardManager.h"
9191
9292 // process hazards that can hurt enemies
9393 if (h[i]->source_type != Power::SOURCE_TYPE_ENEMY) { //hero or neutral sources
94 for (unsigned int eindex = 0; eindex < enemym->enemies.size(); eindex++) {
94 for (unsigned int eindex = 0; eindex < entitym->entities.size(); eindex++) {
9595
9696 // only check living enemies
97 if (enemym->enemies[eindex]->stats.hp > 0 && h[i]->active && (enemym->enemies[eindex]->stats.hero_ally == h[i]->power->target_party)) {
98 if (Utils::isWithinRadius(h[i]->pos, h[i]->power->radius, enemym->enemies[eindex]->stats.pos)) {
99 if (!h[i]->hasEntity(enemym->enemies[eindex])) {
97 if (entitym->entities[eindex]->stats.hp > 0 && h[i]->active && (entitym->entities[eindex]->stats.hero_ally == h[i]->power->target_party)) {
98 if (Utils::isWithinRadius(h[i]->pos, h[i]->power->radius, entitym->entities[eindex]->stats.pos)) {
99 if (!h[i]->hasEntity(entitym->entities[eindex])) {
100100 // hit!
101 h[i]->addEntity(enemym->enemies[eindex]);
102 hitEntity(i, enemym->enemies[eindex]->takeHit(*h[i]));
101 h[i]->addEntity(entitym->entities[eindex]);
102 hitEntity(i, entitym->entities[eindex]->takeHit(*h[i]));
103103 if (!h[i]->power->beacon) {
104 last_enemy = enemym->enemies[eindex];
104 last_enemy = entitym->entities[eindex];
105105 }
106106 }
107107 }
123123 }
124124
125125 //now process allies
126 for (unsigned int eindex = 0; eindex < enemym->enemies.size(); eindex++) {
126 for (unsigned int eindex = 0; eindex < entitym->entities.size(); eindex++) {
127127 // only check living allies
128 if (enemym->enemies[eindex]->stats.hp > 0 && h[i]->active && enemym->enemies[eindex]->stats.hero_ally) {
129 if (Utils::isWithinRadius(h[i]->pos, h[i]->power->radius, enemym->enemies[eindex]->stats.pos)) {
130 if (!h[i]->hasEntity(enemym->enemies[eindex])) {
128 if (entitym->entities[eindex]->stats.hp > 0 && h[i]->active && entitym->entities[eindex]->stats.hero_ally) {
129 if (Utils::isWithinRadius(h[i]->pos, h[i]->power->radius, entitym->entities[eindex]->stats.pos)) {
130 if (!h[i]->hasEntity(entitym->entities[eindex])) {
131131 // hit!
132 h[i]->addEntity(enemym->enemies[eindex]);
133 hitEntity(i, enemym->enemies[eindex]->takeHit(*h[i]));
132 h[i]->addEntity(entitym->entities[eindex]);
133 hitEntity(i, entitym->entities[eindex]->takeHit(*h[i]));
134134 }
135135 }
136136 }
2828 #include "Utils.h"
2929
3030 class Avatar;
31 class Enemy;
31 class Entity;
3232 class Hazard;
3333
3434 class HazardManager {
4444 void addRenders(std::vector<Renderable> &r, std::vector<Renderable> &r_dead);
4545
4646 std::vector<Hazard*> h;
47 Enemy* last_enemy;
47 Entity* last_enemy;
4848 };
4949
5050 #endif
3030 #include "Platform.h"
3131 #include "Settings.h"
3232 #include "SharedResources.h"
33 #include "UtilsFileSystem.h"
3334 #include "UtilsParsing.h"
3435 #include "Version.h"
3536
6162 , pressing_up(false)
6263 , pressing_down(false)
6364 , joysticks_changed(false)
65 , refresh_hotkeys(false)
6466 , un_press()
6567 , current_touch()
6668 , dump_event(false)
6769 , file_version(new Version())
68 , file_version_min(new Version(1, 6, 28))
70 , file_version_min(new Version(1, 9, 20))
6971 {
7072 }
7173
114116 opened_file = true;
115117 }
116118 }
117 // if there are no mod keybinds, fall back to global config
118 else if (infile.open(settings->path_conf + "keybindings.txt", !FileParser::MOD_FILE, FileParser::ERROR_NONE)) {
119 opened_file = true;
119 else {
120 // if there are no mod keybinds, fall back to global config
121 if (infile.open(settings->path_conf + "keybindings.txt", !FileParser::MOD_FILE, FileParser::ERROR_NONE)) {
122 opened_file = true;
123 }
124
125 // clean up mod keybinds if engine/default_keybindings.txt is not present
126 if (Filesystem::fileExists(settings->path_user + "saves/" + eset->misc.save_prefix + "/keybindings.txt")) {
127 Utils::logInfo("InputState: Found unexpected save prefix keybinding file. Removing it now.");
128 Filesystem::removeFile(settings->path_user + "saves/" + eset->misc.save_prefix + "/keybindings.txt");
129 }
120130 }
121131
122132 if (!opened_file) {
258268
259269 }
260270 infile.close();
271
272 setFixedKeyBindings();
261273 }
262274
263275 /**
266278 void InputState::saveKeyBindings() {
267279 std::string out_path;
268280 if (mods->locate("engine/default_keybindings.txt") != "") {
281 Filesystem::createDir(settings->path_user + "saves/" + eset->misc.save_prefix);
269282 out_path = settings->path_user + "saves/" + eset->misc.save_prefix + "/keybindings.txt";
270283 }
271284 else {
328341 }
329342
330343 void InputState::handle() {
344 refresh_hotkeys = false;
345
331346 if (lock_all) return;
332347
333348 inkeys = "";
4848 LOG = 19,
4949 MAIN1 = 20,
5050 MAIN2 = 21,
51 CTRL = 22,
52 SHIFT = 23,
53 ALT = 24,
54 DEL = 25,
55 ACTIONBAR = 26,
56 ACTIONBAR_BACK = 27,
57 ACTIONBAR_FORWARD = 28,
58 ACTIONBAR_USE = 29,
59 DEVELOPER_MENU = 30
51 ACTIONBAR = 22,
52 ACTIONBAR_BACK = 23,
53 ACTIONBAR_FORWARD = 24,
54 ACTIONBAR_USE = 25,
55 DEVELOPER_MENU = 26,
56 CTRL = 27,
57 SHIFT = 28,
58 ALT = 29,
59 DEL = 30
6060 };
6161 }
6262
8585 BINDING_JOYSTICK = 2
8686 };
8787
88 static const bool GET_SHORT_STRING = true;
8889 static const int KEY_COUNT = 31;
90 static const int KEY_COUNT_USER = KEY_COUNT - 4; // exclude CTRL, SHIFT, etc from keybinding menu
8991 int binding[KEY_COUNT];
9092 int binding_alt[KEY_COUNT];
9193 int binding_joy[KEY_COUNT];
107109
108110 virtual void handle();
109111 virtual void defaultQwertyKeyBindings() = 0;
112 virtual void setFixedKeyBindings() = 0;
110113 virtual void hideCursor() = 0;
111114 virtual void showCursor() = 0;
112115 virtual std::string getJoystickName(int index) = 0;
113 virtual std::string getKeyName(int key) = 0;
114 virtual std::string getMouseButtonName(int button) = 0;
115 virtual std::string getJoystickButtonName(int button) = 0;
116 virtual std::string getBindingString(int key, int bindings_list = BINDING_DEFAULT) = 0;
116 virtual std::string getKeyName(int key, bool get_short_string = !GET_SHORT_STRING) = 0;
117 virtual std::string getMouseButtonName(int button, bool get_short_string = !GET_SHORT_STRING) = 0;
118 virtual std::string getJoystickButtonName(int button, bool get_short_string = !GET_SHORT_STRING) = 0;
119 virtual std::string getBindingString(int key, int bindings_list = BINDING_DEFAULT, bool get_short_string = !GET_SHORT_STRING) = 0;
117120 virtual std::string getMovementString() = 0;
118121 virtual std::string getAttackString() = 0;
119122 virtual std::string getContinueString() = 0;
151154 bool pressing_up;
152155 bool pressing_down;
153156 bool joysticks_changed;
157 bool refresh_hotkeys;
154158
155159 protected:
156160 Point scaleMouse(unsigned int x, unsigned int y);
3030 #include "FontEngine.h"
3131 #include "InputState.h"
3232 #include "ItemManager.h"
33 #include "MenuInventory.h"
3334 #include "MenuManager.h"
3435 #include "MenuPowers.h"
3536 #include "MessageEngine.h"
5253 bool compareItemStack(const ItemStack &stack1, const ItemStack &stack2) {
5354 return stack1.item < stack2.item;
5455 }
56
57 ItemStack::ItemStack(const Point& _p)
58 : item(_p.x)
59 , quantity(_p.y)
60 , can_buyback(false)
61 {}
5562
5663 Item::Item()
5764 : name("")
8087 , max_quantity(INT_MAX)
8188 , pickup_status("")
8289 , stepfx("")
83 , quest_item(false) {
90 , quest_item(false)
91 , no_stash(NO_STASH_NULL)
92 , script("") {
8493 }
8594
8695 ItemManager::ItemManager()
8796 {
88 // These values are a bit arbitrary, but they should be a good starting point.
89 items.reserve(1000);
90 item_sets.reserve(100);
91
9297 loadAll();
93
94 // make sure we have at least 1 item
95 if (items.empty()) {
96 addUnknownItem(1);
97 }
9898 }
9999
100100 /**
107107 this->loadTypes("items/types.txt");
108108 this->loadSets("items/sets.txt");
109109 this->loadQualities("items/qualities.txt");
110
111 /*
112 * Shrinks the items vector to the absolute needed size.
113 *
114 * While loading the items, the item vector grows dynamically. To have
115 * no much time overhead for reallocating the vector, a new reallocation
116 * is twice as large as the needed item id, which means in the worst case
117 * the item vector was reallocated for loading the last element, so the
118 * vector is twice as large as needed. This memory is definitly not used,
119 * so we can free it.
120 */
121 if (items.capacity() != items.size())
122 std::vector<Item>(items).swap(items);
123 if (item_sets.capacity() != item_sets.size())
124 std::vector<ItemSet>(item_sets).swap(item_sets);
125110
126111 if (items.empty())
127112 Utils::logInfo("ItemManager: No items were found.");
145130 bool clear_loot_anim = true;
146131 bool clear_replace_power = true;
147132
148 int id = 0;
133 ItemID id = 0;
149134 bool id_line = false;
150135 while (infile.next()) {
151136 if (infile.key == "id") {
152137 // @ATTR id|item_id|An uniq id of the item used as reference from other classes.
153138 id_line = true;
154 id = Parse::toInt(infile.val);
155 addUnknownItem(id);
156 items[id].max_quantity = 1;
139 id = Parse::toItemID(infile.val);
140 items[id] = Item();
141
142 // set the max quantity if it has not been done yet
143 if (items[id].max_quantity == INT_MAX)
144 items[id].max_quantity = 1;
157145
158146 clear_req_stat = true;
159147 clear_bonus = true;
167155 continue;
168156 }
169157 if (id_line) continue;
170
171 assert(items.size() > std::size_t(id));
172158
173159 if (infile.key == "name") {
174160 // @ATTR name|string|Item name displayed on long and short tooltips.
278264 else if (infile.key == "bonus_power_level") {
279265 // @ATTR bonus_power_level|repeatable(power_id, int) : Base power, Bonus levels|Grants bonus levels to a given base power.
280266 BonusData bdata;
281 bdata.power_id = Parse::popFirstInt(infile.val);
267 bdata.power_id = Parse::toPowerID(Parse::popFirstString(infile.val));
282268 bdata.value = Parse::popFirstInt(infile.val);
283269 items[id].bonus.push_back(bdata);
284270 }
315301 items[id].replace_power.clear();
316302 clear_replace_power = false;
317303 }
318 Point power_ids = Parse::toPoint(infile.val);
304 std::pair<PowerID, PowerID> power_ids;
305 power_ids.first = Parse::toPowerID(Parse::popFirstString(infile.val));
306 power_ids.second = Parse::toPowerID(Parse::popFirstString(infile.val));
319307 items[id].replace_power.push_back(power_ids);
320308 }
321309 else if (infile.key == "power_desc")
350338 }
351339 }
352340 else if (infile.key == "quest_item") {
353 // @ATTR quest_item|bool|If true, this item is a quest item and can not be dropped, stashed, or sold.
341 // @ATTR quest_item|bool|If true, this item is a quest item and can not be dropped or sold. The item also can't be stashed, unless the no_stash property is set to something other than "all".
354342 items[id].quest_item = Parse::toBool(infile.val);
343
344 // for legacy reasons, quest items can't be stashed by default
345 if (items[id].no_stash == Item::NO_STASH_NULL)
346 items[id].no_stash = Item::NO_STASH_ALL;
347 }
348 else if (infile.key == "no_stash") {
349 // @ATTR no_stash|["ignore", "private", "shared", "all"]|If not set to 'ignore', this item will not be able to be put in the corresponding stash.
350 std::string temp = Parse::popFirstString(infile.val);
351 if (temp == "ignore")
352 items[id].no_stash = Item::NO_STASH_IGNORE;
353 else if (temp == "private")
354 items[id].no_stash = Item::NO_STASH_PRIVATE;
355 else if (temp == "shared")
356 items[id].no_stash = Item::NO_STASH_SHARED;
357 else if (temp == "all")
358 items[id].no_stash = Item::NO_STASH_ALL;
359 else
360 infile.error("ItemManager: '%s' is not a valid value for 'no_stash'. Use 'ignore', 'private', 'shared', or 'all'.", temp.c_str());
361 }
362 else if (infile.key == "script") {
363 // @ATTR item.script|filename|Loads and executes a script file when the item is activated from the player's inventory.
364 items[id].script = Parse::popFirstString(infile.val);
355365 }
356366 else {
357367 infile.error("ItemManager: '%s' is not a valid key.", infile.key.c_str());
359369
360370 }
361371 infile.close();
372
373 // normal items can be stored in either stash
374 std::map<ItemID, Item>::iterator item_it;
375 for (item_it = items.begin(); item_it != items.end(); ++item_it) {
376 if (item_it->second.no_stash == Item::NO_STASH_NULL) {
377 item_it->second.no_stash = Item::NO_STASH_IGNORE;
378 }
379 }
362380 }
363381
364382 /**
451469 }
452470 }
453471
454 std::string ItemManager::getItemName(unsigned id) {
455 if (id >= items.size()) return msg->get("Unknown Item");
456
472 std::string ItemManager::getItemName(ItemID id) {
457473 if (!items[id].has_name)
458474 items[id].name = msg->get("Unknown Item");
459475
469485 return _type;
470486 }
471487
472 Color ItemManager::getItemColor(unsigned id) {
473 if (id < 1 || id > items.size())
474 return font->getColor(FontEngine::COLOR_WIDGET_NORMAL);
475
488 Color ItemManager::getItemColor(ItemID id) {
476489 if (items[id].set > 0) {
477490 return item_sets[items[id].set].color;
478491 }
488501 }
489502
490503 int ItemManager::getItemIconOverlay(size_t id) {
491 if (id < 1 || id > items.size())
492 return -1;
493
494504 for (size_t i=0; i < item_qualities.size(); ++i) {
495505 if (item_qualities[i].id == items[id].quality) {
496506 return item_qualities[i].overlay_icon;
499509
500510 // no overlay icon
501511 return -1;
502 }
503
504 void ItemManager::addUnknownItem(unsigned id) {
505 if (id > 0) {
506 size_t new_size = id+1;
507 if (items.size() <= new_size)
508 items.resize(new_size);
509 }
510512 }
511513
512514 /**
523525
524526 bool clear_bonus = true;
525527
526 int id = 0;
528 ItemSetID id = 0;
527529 bool id_line;
528530 while (infile.next()) {
529531 if (infile.key == "id") {
530532 // @ATTR id|int|A uniq id for the item set.
531533 id_line = true;
532 id = Parse::toInt(infile.val);
534 id = Parse::toSizeT(infile.val);
533535
534536 if (id > 0) {
535 size_t new_size = id+1;
536 if (item_sets.size() <= new_size)
537 item_sets.resize(new_size);
537 item_sets[id] = ItemSet();
538538 }
539539
540540 clear_bonus = true;
546546 continue;
547547 }
548548 if (id_line) continue;
549
550 assert(item_sets.size() > std::size_t(id));
551549
552550 if (infile.key == "name") {
553551 // @ATTR name|string|Name of the item set.
558556 item_sets[id].items.clear();
559557 std::string item_id = Parse::popFirstString(infile.val);
560558 while (item_id != "") {
561 int temp_id = Parse::toInt(item_id);
562 if (temp_id > 0 && temp_id < static_cast<int>(items.size())) {
563 items[temp_id].set = id;
564 item_sets[id].items.push_back(temp_id);
565 }
566 else {
567 const int maxsize = static_cast<int>(items.size()-1);
568 infile.error("ItemManager: Item index out of bounds 1-%d, skipping item.", maxsize);
569 }
559 ItemID temp_id = Parse::toItemID(item_id);
560 items[temp_id].set = id;
561 item_sets[id].items.push_back(temp_id);
570562 item_id = Parse::popFirstString(infile.val);
571563 }
572564 }
589581 // @ATTR bonus_power_level|repeatable(int, power_id, int) : Required set item count, Base power, Bonus levels|Grants bonus levels to a given base power.
590582 SetBonusData bonus;
591583 bonus.requirement = Parse::popFirstInt(infile.val);
592 bonus.power_id = Parse::popFirstInt(infile.val);
584 bonus.power_id = Parse::toPowerID(Parse::popFirstString(infile.val));
593585 bonus.value = Parse::popFirstInt(infile.val);
594586 item_sets[id].bonus.push_back(bonus);
595587 }
691683 }
692684 }
693685
694 void ItemManager::playSound(int item, const Point& pos) {
686 void ItemManager::playSound(ItemID item, const Point& pos) {
695687 std::stringstream channel_name;
696688 channel_name << "item_" << items[item].sfx_id;
697689 snd->play(items[item].sfx_id, channel_name.str(), FPoint(pos), false);
856848
857849 // buy or sell price
858850 if (items[stack.item].getPrice() > 0 && stack.item != eset->misc.currency_id) {
851 Color currency_color = getItemColor(eset->misc.currency_id);
859852
860853 int price_per_unit;
861854 if (context == VENDOR_BUY) {
863856 if (stats->currency < price_per_unit)
864857 color = font->getColor(FontEngine::COLOR_REQUIREMENTS_NOT_MET);
865858 else
866 color = font->getColor(FontEngine::COLOR_WIDGET_NORMAL);
859 color = currency_color;
867860
868861 if (items[stack.item].max_quantity <= 1)
869862 tip.addColoredText(msg->get("Buy Price: %d %s", price_per_unit, eset->loot.currency), color);
875868 if (stats->currency < price_per_unit)
876869 color = font->getColor(FontEngine::COLOR_REQUIREMENTS_NOT_MET);
877870 else
878 color = font->getColor(FontEngine::COLOR_WIDGET_NORMAL);
871 color = currency_color;
879872
880873 if (items[stack.item].max_quantity <= 1)
881874 tip.addColoredText(msg->get("Buy Price: %d %s", price_per_unit, eset->loot.currency), color);
888881 price_per_unit = 1;
889882
890883 if (items[stack.item].max_quantity <= 1)
891 tip.addText(msg->get("Sell Price: %d %s", price_per_unit, eset->loot.currency));
892 else
893 tip.addText(msg->get("Sell Price: %d %s each", price_per_unit, eset->loot.currency));
884 tip.addColoredText(msg->get("Sell Price: %d %s", price_per_unit, eset->loot.currency), currency_color);
885 else
886 tip.addColoredText(msg->get("Sell Price: %d %s each", price_per_unit, eset->loot.currency), currency_color);
894887 }
895888 }
896889
917910 // input hint for consumables/books
918911 // TODO hint when not using mouse control. The action for using an item there is hard to describe
919912 if (context == PLAYER_INV && !settings->no_mouse) {
920 int power_id = items[stack.item].power;
921 if (power_id > 0 && items[stack.item].type == "consumable") {
913 if (!items[stack.item].book.empty() && items[stack.item].book_is_readable) {
914 tip.addColoredText('\n' + msg->get("Press [%s] to read", inpt->getBindingString(Input::MAIN2)), font->getColor(FontEngine::COLOR_ITEM_BONUS));
915 }
916 else if (menu->inv->canActivateItem(stack.item)) {
922917 tip.addColoredText('\n' + msg->get("Press [%s] to use", inpt->getBindingString(Input::MAIN2)), font->getColor(FontEngine::COLOR_ITEM_BONUS));
923 }
924 else if (!items[stack.item].book.empty()) {
925 if (items[stack.item].book_is_readable)
926 tip.addColoredText('\n' + msg->get("Press [%s] to read", inpt->getBindingString(Input::MAIN2)), font->getColor(FontEngine::COLOR_ITEM_BONUS));
927 else
928 tip.addColoredText('\n' + msg->get("Press [%s] to use", inpt->getBindingString(Input::MAIN2)), font->getColor(FontEngine::COLOR_ITEM_BONUS));
929918 }
930919 }
931920
935924 /**
936925 * Check requirements on an item
937926 */
938 bool ItemManager::requirementsMet(const StatBlock *stats, int item) {
927 bool ItemManager::requirementsMet(const StatBlock *stats, ItemID item) {
939928 if (!stats) return false;
940929
941930 // level
10241013 return new_price;
10251014 }
10261015
1016 // Bonus documentation
1017
1018 // @CLASS ItemManager|Description of "bonus" attribute in items/items.txt
1019 // @TYPE speed|Movement speed. A value of 100 is 100% speed (aka normal speed).
1020 // @TYPE attack_speed|Attack animation speed. A value of 100 is 100% speed (aka normal speed).
1021 // @TYPE ${STATNAME}|Increases ${STATNAME}, where ${STATNAME} is any of the base stats. Examples: hp, avoidance, xp_gain
1022 // @TYPE ${DAMAGE_TYPE}|Increases a damage min or max, where ${DAMAGE_TYPE} is any 'min' or 'max' value found in engine/damage_types.txt. Example: dmg_melee_min
1023 // @TYPE ${ELEMENT}_resist|Increase Resistance % to ${ELEMENT}, where ${ELEMENT} is any found in engine/elements.txt. Example: fire_resist
1024 // @TYPE ${PRIMARYSTAT}|Increases ${PRIMARYSTAT}, where ${PRIMARYSTAT} is any of the primary stats defined in engine/primary_stats.txt. Example: physical
5454 bool is_speed;
5555 bool is_attack_speed;
5656 int value;
57 int power_id; // for bonus_power_level
57 PowerID power_id; // for bonus_power_level
5858 BonusData()
5959 : stat_index(-1)
6060 , damage_index_min(-1)
9797 friend class ItemManager;
9898
9999 public:
100 enum {
101 NO_STASH_NULL = 0,
102 NO_STASH_IGNORE = 1,
103 NO_STASH_PRIVATE = 2,
104 NO_STASH_SHARED = 3,
105 NO_STASH_ALL = 4
106 };
107
100108 bool has_name; // flag that is set when the item name is parsed
101109 std::string flavor; // optional flavor text describing the item
102110 int level; // rough estimate of quality, used in the loot algorithm
103 int set; // item can be attached to item set
111 ItemSetID set; // item can be attached to item set
104112 std::string quality; // should match an id from items/qualities.txt
105113 std::string type; // equipment slot or base item type
106114 std::vector<std::string> equip_flags; // common values include: melee, ranged, mental, shield
120128 SoundID sfx_id;
121129 std::string gfx; // the sprite layer shown when this item is equipped
122130 std::vector<LootAnimation> loot_animation;// the flying loot animation for this item
123 int power; // this item can be dragged to the action bar and used as a power
124 std::vector<Point> replace_power; // alter powers when this item is equipped. Power id 'x' is replaced with id 'y'
131 PowerID power; // this item can be dragged to the action bar and used as a power
132 std::vector< std::pair<PowerID, PowerID> > replace_power; // alter powers when this item is equipped. The first PowerID is replaced with the second.
125133 std::string power_desc; // shows up in green text on the tooltip
126134 int price; // if price = 0 the item cannot be sold
127135 int price_per_level; // additional price for each character level above 1
131139 std::string stepfx; // sound effect played when walking (armors only)
132140 std::vector<std::string> disable_slots; // if this item is equipped, it will disable slots that match the types in the list
133141 bool quest_item;
142 int no_stash;
143 std::string script;
134144
135145 int getPrice();
136146 int getSellPrice(bool is_new_buyback);
143153 class ItemSet {
144154 public:
145155 std::string name; // item set name displayed on long and short tool tips
146 std::vector<int> items; // items, included into set
156 std::vector<ItemID> items; // items, included into set
147157 std::vector<SetBonusData> bonus;// vector with stats to increase/decrease
148158 Color color;
149159
160170
161171 class ItemStack {
162172 public:
163 ItemStack()
164 : item(0)
165 , quantity(0)
173 ItemStack(ItemID _item = 0, int _quantity = 0)
174 : item(_item)
175 , quantity(_quantity)
166176 , can_buyback(false) {
167177 }
168178 ~ItemStack() {}
169 int item;
179 explicit ItemStack(const Point& _p);
180 bool operator > (const ItemStack &param) const;
181
182 bool empty();
183 void clear();
184
185 ItemID item;
170186 int quantity;
171187 bool can_buyback;
172 bool operator > (const ItemStack &param) const;
173 bool empty();
174 void clear();
175188 };
176189
177190 class ItemType {
208221
209222 ItemManager();
210223 ~ItemManager();
211 void playSound(int item, const Point& pos = Point(0,0));
224 void playSound(ItemID item, const Point& pos = Point(0,0));
212225 TooltipData getTooltip(ItemStack stack, StatBlock *stats, int context);
213226 TooltipData getShortTooltip(ItemStack item);
214 std::string getItemName(unsigned id);
227 std::string getItemName(ItemID id);
215228 std::string getItemType(const std::string& _type);
216 Color getItemColor(unsigned id);
229 Color getItemColor(ItemID id);
217230 int getItemIconOverlay(size_t id);
218 void addUnknownItem(unsigned id);
219 bool requirementsMet(const StatBlock *stats, int item);
220
221 std::vector<Item> items;
231 bool requirementsMet(const StatBlock *stats, ItemID item);
232
233 std::map<ItemID, Item> items;
222234 std::vector<ItemType> item_types;
223 std::vector<ItemSet> item_sets;
235 std::map<ItemSetID, ItemSet> item_sets;
224236 std::vector<ItemQuality> item_qualities;
225237 };
226238
5858 void ItemStorage::setItems(const std::string& s) {
5959 std::string item_list = s + ',';
6060 for (int i=0; i<slot_number; i++) {
61 storage[i].item = Parse::popFirstInt(item_list);
62 // check if such item exists to avoid crash if savegame was modified manually
63 if (storage[i].item < 0) {
64 Utils::logError("ItemStorage: Item on position %d has negative id, skipping", i);
65 storage[i].clear();
66 }
67 else if ((items->items.empty() && storage[i].item > 0) || static_cast<unsigned>(storage[i].item) > items->items.size()-1) {
68 Utils::logError("ItemStorage: Item id (%d) out of bounds 1-%d, marking as unknown", storage[i].item, static_cast<int>(items->items.size()));
69 items->addUnknownItem(storage[i].item);
61 storage[i].item = Parse::toItemID(Parse::popFirstString(item_list));
62 if (storage[i].item > 0 && !items->items[storage[i].item].has_name) {
63 Utils::logError("ItemStorage: Item id (%d) has no name, marking as unknown", storage[i].item);
7064 }
7165 }
7266 }
130124 */
131125 ItemStack ItemStorage::add( ItemStack stack, int slot) {
132126 if (!stack.empty()) {
133 if (items->items.empty() || stack.item <= 0 || static_cast<unsigned>(stack.item) > items->items.size()-1) {
134 items->addUnknownItem(stack.item);
135 }
136
137127 int max_quantity = items->items[stack.item].max_quantity;
138128 if (slot > -1) {
139129 // a slot is specified
198188 /**
199189 * Remove a quantity of a given item by its ID
200190 */
201 bool ItemStorage::remove(int item, int quantity) {
191 bool ItemStorage::remove(ItemID item, int quantity) {
202192 if (item == 0)
203193 return false;
204194
266256 /**
267257 * Get the number of the specified item carried (not equipped)
268258 */
269 int ItemStorage::count(int item) {
259 int ItemStorage::count(ItemID item) {
270260 int item_count=0;
271261 for (int i=0; i<slot_number; i++) {
272262 if (storage[i].item == item) {
279269 /**
280270 * Check to see if the given item is equipped
281271 */
282 bool ItemStorage::contain(int item, int quantity) {
272 bool ItemStorage::contain(ItemID item, int quantity) {
283273 int total_quantity = 0;
284274 for (int i=0; i<slot_number; i++) {
285275 if (storage[i].item == item)
4646 std::string getQuantities();
4747 ItemStack add(ItemStack stack, int slot);
4848 void subtract(int slot, int quantity);
49 bool remove(int item, int quantity);
49 bool remove(ItemID item, int quantity);
5050 void sort();
5151 void clear();
5252 void clean();
5353 bool empty();
5454
5555 bool full(ItemStack stack);
56 int count(int item);
57 bool contain(int item, int quantity);
56 int count(ItemID item);
57 bool contain(ItemID item, int quantity);
5858
5959 ItemStack * storage;
6060 };
2121 #include "AnimationSet.h"
2222 #include "Loot.h"
2323 #include "SharedResources.h"
24 #include "WidgetTooltip.h"
2425
2526 Loot::Loot()
2627 : gfx("")
2728 , animation(NULL)
29 , wtip(new WidgetTooltip())
2830 , tip_visible(false)
2931 , dropped_by_hero(false)
3032 , on_ground(false)
3537 Loot::Loot(const Loot &other)
3638 : gfx("")
3739 , animation(NULL)
40 , wtip(NULL)
3841 {
42 // operator= creates a new animation and tooltip
3943 *this = other;
4044 }
4145
5155 animation = NULL;
5256
5357 loadAnimation(other.gfx);
54 if (animation)
58 if (animation && other.animation)
5559 animation->syncTo(other.animation);
5660
5761 stack.item = other.stack.item;
5963 pos.x = other.pos.x;
6064 pos.y = other.pos.y;
6165 tip = other.tip;
62 tip_bounds = other.tip_bounds;
66 wtip = new WidgetTooltip();
6367 tip_visible = other.tip_visible;
6468 dropped_by_hero = other.dropped_by_hero;
6569 on_ground = other.on_ground;
8892 if (gfx != "")
8993 anim->decreaseCount(gfx);
9094 delete animation;
95 delete wtip;
9196 }
9297
2323 #include "ItemManager.h"
2424 #include "TooltipData.h"
2525
26 class WidgetTooltip;
27
2628 class Loot {
2729 private:
2830 std::string gfx;
3234 FPoint pos;
3335 Animation *animation;
3436 TooltipData tip;
35 Rect tip_bounds;
37 WidgetTooltip *wtip;
3638 bool tip_visible;
3739 bool dropped_by_hero;
3840 bool on_ground;
2929 #include "Avatar.h"
3030 #include "CommonIncludes.h"
3131 #include "CursorManager.h"
32 #include "Enemy.h"
33 #include "EnemyManager.h"
32 #include "Entity.h"
33 #include "EntityManager.h"
3434 #include "EngineSettings.h"
3535 #include "FileParser.h"
3636 #include "InputState.h"
4444 #include "SharedResources.h"
4545 #include "SoundManager.h"
4646 #include "Utils.h"
47 #include "UtilsFileSystem.h"
4748 #include "UtilsMath.h"
4849 #include "UtilsParsing.h"
4950 #include "WidgetTooltip.h"
5253 #include <math.h>
5354
5455 LootManager::LootManager()
55 : tip(new WidgetTooltip())
56 , sfx_loot(snd->load(eset->loot.sfx_loot, "LootManager dropping loot"))
56 : sfx_loot(snd->load(eset->loot.sfx_loot, "LootManager dropping loot"))
5757 {
5858 loadGraphics();
5959 loadLootTables();
6464 * Here we load all the animations used by the item database.
6565 */
6666 void LootManager::loadGraphics() {
67 animations.resize(items->items.size());
68
6967 // check all items in the item database
70 for (unsigned int i=0; i < items->items.size(); i++) {
71 if (items->items[i].loot_animation.empty()) continue;
72
73 animations[i].resize(items->items[i].loot_animation.size());
74
75 for (unsigned int j=0; j<items->items[i].loot_animation.size(); j++) {
76 anim->increaseCount(items->items[i].loot_animation[j].name);
77 animations[i][j] = anim->getAnimationSet(items->items[i].loot_animation[j].name)->getAnimation("");
68 std::map<ItemID, Item>::iterator item_it;
69 for (item_it = items->items.begin(); item_it != items->items.end(); ++item_it) {
70 if (item_it->second.loot_animation.empty())
71 continue;
72
73 animations[item_it->first].resize(item_it->second.loot_animation.size());
74
75 for (size_t i = 0; i < item_it->second.loot_animation.size(); ++i) {
76 anim->increaseCount(item_it->second.loot_animation[i].name);
77 animations[item_it->first][i] = anim->getAnimationSet(item_it->second.loot_animation[i].name)->getAnimation("");
7878 }
7979 }
8080 }
8181
8282 void LootManager::handleNewMap() {
8383 loot.clear();
84 enemiesDroppingLoot.clear();
8485 }
8586
8687 void LootManager::logic() {
9091 // animate flying loot
9192 if (it->animation) {
9293 it->animation->advanceFrame();
93 if (it->animation->isSecondLastFrame()) {
94 if (!it->on_ground && it->animation->isSecondLastFrame()) {
9495 it->on_ground = true;
9596 }
9697 }
122123
123124 Point dest;
124125 bool tooltip_below = true;
126 Rect screen_rect(0, 0, settings->view_w, settings->view_h);
125127
126128 std::vector<Loot>::iterator it;
127129 for (it = loot.begin(); it != loot.end(); ) {
129131
130132 if (it->on_ground) {
131133 Point p = Utils::mapToScreen(it->pos.x, it->pos.y, cam.x, cam.y);
134 if (!Utils::isWithinRect(screen_rect, p)) {
135 ++it;
136 continue;
137 }
138
132139 dest.x = p.x;
133140 dest.y = p.y + eset->tileset.tile_h_half;
134141
150157 default_visibility = false;
151158 }
152159 else {
153 Enemy* test_enemy = enemym->getNearestEnemy(it->pos, !EnemyManager::GET_CORPSE, NULL, eset->loot.hide_radius);
160 Entity* test_enemy = entitym->getNearestEntity(it->pos, !EntityManager::GET_CORPSE, NULL, eset->loot.hide_radius);
154161 if (test_enemy) {
155162 default_visibility = false;
156163 }
177184 }
178185
179186 // try to prevent tooltips from overlapping
180 tip->prerender(it->tip, dest, TooltipData::STYLE_TOPLABEL);
187 it->wtip->prerender(it->tip, dest, TooltipData::STYLE_TOPLABEL);
181188 std::vector<Loot>::iterator test_it;
182189 for (test_it = loot.begin(); test_it != it; ) {
183 if (test_it->tip_visible && Utils::rectsOverlap(test_it->tip_bounds, tip->bounds)) {
190 if (test_it->tip_visible && Utils::rectsOverlap(test_it->wtip->bounds, it->wtip->bounds)) {
184191 if (tooltip_below)
185 dest.y = test_it->tip_bounds.y + test_it->tip_bounds.h + eset->tooltips.offset;
192 dest.y = test_it->wtip->bounds.y + test_it->wtip->bounds.h + eset->tooltips.offset;
186193 else
187 dest.y = test_it->tip_bounds.y - test_it->tip_bounds.h + eset->tooltips.offset;
188
189 tip->bounds.y = dest.y;
194 dest.y = test_it->wtip->bounds.y - test_it->wtip->bounds.h + eset->tooltips.offset;
195
196 it->wtip->bounds.y = dest.y;
190197 }
191198
192199 ++test_it;
193200 }
194201
195 tip->render(it->tip, dest, TooltipData::STYLE_TOPLABEL);
196 it->tip_bounds = tip->bounds;
202 it->wtip->render(it->tip, dest, TooltipData::STYLE_TOPLABEL);
197203
198204 if (settings->loot_tooltips == Settings::LOOT_TIPS_HIDE_ALL && !inpt->pressing[Input::ALT])
199205 break;
212218 */
213219 void LootManager::checkEnemiesForLoot() {
214220 for (unsigned i=0; i < enemiesDroppingLoot.size(); ++i) {
215 Enemy *e = enemiesDroppingLoot[i];
216
217 if (e->stats.quest_loot_id != 0) {
221 StatBlock *e = enemiesDroppingLoot[i];
222
223 if (!e)
224 continue;
225
226 if (e->quest_loot_id != 0) {
218227 // quest loot
219228 std::vector<EventComponent> quest_loot_table;
220229 EventComponent ec;
221230 ec.type = EventComponent::LOOT;
222 ec.c = e->stats.quest_loot_id;
231 ec.id = e->quest_loot_id;
223232 ec.a = ec.b = 1;
224233 ec.z = 0;
225234
226235 quest_loot_table.push_back(ec);
227 checkLoot(quest_loot_table, &e->stats.pos, NULL);
228 }
229
230 if (!e->stats.loot_table.empty()) {
236 checkLoot(quest_loot_table, &e->pos, NULL);
237 }
238
239 if (!e->loot_table.empty()) {
231240 unsigned drops;
232 if (e->stats.loot_count.y != 0) {
233 drops = Math::randBetween(e->stats.loot_count.x, e->stats.loot_count.y);
241 if (e->loot_count.y != 0) {
242 drops = Math::randBetween(e->loot_count.x, e->loot_count.y);
234243 }
235244 else {
236245 drops = Math::randBetween(1, eset->loot.drop_max);
237246 }
238247
239248 for (unsigned j=0; j<drops; ++j) {
240 checkLoot(e->stats.loot_table, &e->stats.pos, NULL);
241 }
242
243 e->stats.loot_table.clear();
249 checkLoot(e->loot_table, &e->pos, NULL);
250 }
251
252 e->loot_table.clear();
244253 }
245254 }
246255 enemiesDroppingLoot.clear();
269278 }
270279 }
271280
272 void LootManager::addEnemyLoot(Enemy *e) {
281 void LootManager::addEnemyLoot(StatBlock *e) {
273282 enemiesDroppingLoot.push_back(e);
274283 }
275284
279288 ItemStack new_loot;
280289 std::vector<EventComponent*> possible_ids;
281290
282 int chance = Math::randBetween(1,100);
291 float chance = Math::randBetweenF(0,100);
283292
284293 // first drop any 'fixed' (0% chance) items
285294 for (size_t i = loot_table.size(); i > 0; i--) {
286295 ec = &loot_table[i-1];
287 if (ec->z == 0) {
296 if (ec->f == 0) {
288297 checkLootComponent(ec, pos, itemstack_vec);
289298 loot_table.erase(loot_table.begin()+i-1);
290299 }
291300 }
292301
293302 // now pick up to 1 random item to drop
294 int threshold = pc->stats.get(Stats::ITEM_FIND) + 100;
303 float threshold = static_cast<float>(pc->stats.get(Stats::ITEM_FIND) + 100);
295304 for (unsigned i = 0; i < loot_table.size(); i++) {
296305 ec = &loot_table[i];
297306
298 int real_chance = ec->z;
299
300 if (ec->c != 0 && ec->c != eset->misc.currency_id) {
301 real_chance = static_cast<int>(static_cast<float>(ec->z) * static_cast<float>(pc->stats.get(Stats::ITEM_FIND) + 100) / 100.f);
307 float real_chance = ec->f;
308
309 if (ec->id != 0) {
310 real_chance = ec->f * static_cast<float>(pc->stats.get(Stats::ITEM_FIND) + 100) / 100.f;
302311 }
303312
304313 if (real_chance >= chance) {
325334 }
326335
327336 void LootManager::addLoot(ItemStack stack, const FPoint& pos, bool dropped_by_hero) {
328 if (static_cast<size_t>(stack.item) >= items->items.size()) {
329 Utils::logError("LootManager: Loot item with id %d is not valid.", stack.item);
330 return;
331 }
332
333337 Loot ld;
334338 ld.stack = stack;
335339 ld.pos.x = pos.x;
336340 ld.pos.y = pos.y;
337341 ld.pos.align(); // prevent "rounding jitter"
338342 ld.dropped_by_hero = dropped_by_hero;
343
344 // merge stacks that have the same item id and position
345 std::vector<Loot>::iterator it;
346 for (it = loot.end(); it != loot.begin(); ) {
347 --it;
348 if (it->stack.item == ld.stack.item && it->pos.x == ld.pos.x && it->pos.y == ld.pos.y) {
349 it->stack.quantity += ld.stack.quantity;
350 it->tip.clear();
351 snd->play(sfx_loot, snd->DEFAULT_CHANNEL, pos, false);
352 return;
353 }
354 }
339355
340356 if (!items->items[stack.item].loot_animation.empty()) {
341357 size_t index = items->items[stack.item].loot_animation.size()-1;
386402 r.w = eset->tileset.tile_w;
387403 r.h = eset->tileset.tile_h;
388404
389 if (it_tip == loot.end() && it->tip_visible && Utils::isWithinRect(it->tip_bounds, mouse)) {
405 if (it_tip == loot.end() && it->tip_visible && Utils::isWithinRect(it->wtip->bounds, mouse)) {
390406 // clicked on a tooltip
391407 curs->setCursor(CursorManager::CURSOR_INTERACT);
392408 if (inpt->pressing[Input::MAIN1] && !inpt->lock[Input::MAIN1] && !it->stack.empty()) {
501517 e->s = Parse::popFirstString(val);
502518
503519 if (e->s == "currency")
504 e->c = eset->misc.currency_id;
520 e->id = eset->misc.currency_id;
505521 else if (Parse::toInt(e->s, -1) != -1)
506 e->c = Parse::toInt(e->s);
522 e->id = Parse::toItemID(e->s);
507523 else if (ec_list) {
508524 // load entire loot table
509525 std::string filename = e->s;
522538
523539 // drop chance
524540 chance = Parse::popFirstString(val);
525 if (chance == "fixed") e->z = 0;
526 else e->z = Parse::toInt(chance);
541 if (chance == "fixed") e->f = 0;
542 else e->f = Parse::toFloat(chance);
527543
528544 // quantity min/max
529545 e->a = std::max(Parse::popFirstInt(val), 1);
540556
541557 ec->s = repeat_val;
542558 if (ec->s == "currency")
543 ec->c = eset->misc.currency_id;
559 ec->id = eset->misc.currency_id;
544560 else if (Parse::toInt(ec->s, -1) != -1)
545 ec->c = Parse::toInt(ec->s);
561 ec->id = Parse::toItemID(ec->s);
546562 else {
547563 // remove the last event component, since getLootTable() will create a new one
548564 ec_list->pop_back();
554570 }
555571
556572 chance = Parse::popFirstString(val);
557 if (chance == "fixed") ec->z = 0;
558 else ec->z = Parse::toInt(chance);
573 if (chance == "fixed") ec->f = 0;
574 else ec->f = Parse::toFloat(chance);
559575
560576 ec->a = std::max(Parse::popFirstInt(val), 1);
561577 ec->b = std::max(Parse::popFirstInt(val), ec->a);
600616 ec->s = infile.val;
601617
602618 if (ec->s == "currency")
603 ec->c = eset->misc.currency_id;
619 ec->id = eset->misc.currency_id;
604620 else if (Parse::toInt(ec->s, -1) != -1)
605 ec->c = Parse::toInt(ec->s);
621 ec->id = Parse::toItemID(ec->s);
606622 else {
607623 skip_to_next = true;
608624 infile.error("LootManager: Invalid item id for loot.");
610626 }
611627 else if (infile.key == "chance") {
612628 if (infile.val == "fixed")
613 ec->z = 0;
629 ec->f = 0;
614630 else
615 ec->z = Parse::toInt(infile.val);
631 ec->f = Parse::toFloat(infile.val);
616632 }
617633 else if (infile.key == "quantity") {
618634 ec->a = std::max(Parse::popFirstInt(infile.val), 1);
631647
632648 std::map<std::string, std::vector<EventComponent> >::iterator it;
633649 for (it = loot_tables.begin(); it != loot_tables.end(); ++it) {
634 if (it->first == filename) {
650 if (it->first == Filesystem::convertSlashes(filename)) {
635651 std::vector<EventComponent> *loot_defs = &it->second;
636652 for (unsigned i=0; i<loot_defs->size(); ++i) {
637653 ec_list->push_back((*loot_defs)[i]);
674690 new_loot.quantity = Math::randBetween(ec->a,ec->b);
675691
676692 // an item id of 0 means we should drop currency instead
677 if (ec->c == 0 || ec->c == eset->misc.currency_id) {
693 if (ec->id == 0 || ec->id == eset->misc.currency_id) {
678694 new_loot.item = eset->misc.currency_id;
679695 new_loot.quantity = new_loot.quantity * (100 + pc->stats.get(Stats::CURRENCY_FIND)) / 100;
680696 }
681697 else {
682 new_loot.item = ec->c;
698 new_loot.item = ec->id;
683699 }
684700
685701 if (itemstack_vec)
688704 addLoot(new_loot, p, !DROPPED_BY_HERO);
689705 }
690706
707 void LootManager::removeFromEnemiesDroppingLoot(StatBlock* sb) {
708 for (size_t i = enemiesDroppingLoot.size(); i > 0; i--) {
709 // enemies will actually be removed the next time checkEnemiesForLoot() runs
710 if (enemiesDroppingLoot[i-1] == sb)
711 enemiesDroppingLoot[i-1] = NULL;
712 }
713 }
714
691715 LootManager::~LootManager() {
692716 // remove all items in the item database
693 for (unsigned int i=0; i < items->items.size(); i++) {
694 if (items->items[i].loot_animation.empty()) continue;
695
696 for (unsigned int j=0; j<items->items[i].loot_animation.size(); j++) {
697 anim->decreaseCount(items->items[i].loot_animation[j].name);
698 delete animations[i][j];
717 std::map<ItemID, Item>::iterator item_it;
718 for (item_it = items->items.begin(); item_it != items->items.end(); ++item_it) {
719 if (item_it->second.loot_animation.empty())
720 continue;
721
722 for (size_t i = 0; i < item_it->second.loot_animation.size(); ++i) {
723 anim->decreaseCount(item_it->second.loot_animation[i].name);
724 delete animations[item_it->first][i];
699725 }
700726 }
701727
705731 anim->cleanUp();
706732
707733 snd->unload(sfx_loot);
708
709 delete tip;
710 }
734 }
3333 #include "Utils.h"
3434
3535 class Animation;
36
3736 class EnemyManager;
38 class WidgetTooltip;
37 class StatBlock;
3938
4039 class LootManager {
4140 private:
42
43 WidgetTooltip *tip;
44
4541 // functions
4642 void loadGraphics();
4743 void checkEnemiesForLoot();
5652 std::vector<Loot> loot;
5753
5854 // enemies which should drop loot, but didnt yet.
59 std::vector<class Enemy*> enemiesDroppingLoot;
55 std::vector<class StatBlock*> enemiesDroppingLoot;
6056
6157 // loot tables defined in files under "loot/"
6258 std::map<std::string, std::vector<EventComponent> > loot_tables;
6561 // we block tiles that have loot dropped on them
6662 std::vector<Point> tiles_to_unblock;
6763
68 std::vector< std::vector<Animation*> > animations;
64 std::map< size_t, std::vector<Animation*> > animations;
6965
7066 public:
7167 static const bool DROPPED_BY_HERO = true;
7975 void renderTooltips(const FPoint& cam);
8076
8177 // called by enemy, who definitly wants to drop loot.
82 void addEnemyLoot(Enemy *e);
78 void addEnemyLoot(StatBlock *e);
8379 void addLoot(ItemStack stack, const FPoint& pos, bool dropped_by_hero);
8480 void checkLoot(std::vector<EventComponent> &loot_table, FPoint *pos, std::vector<ItemStack> *itemstack_vec);
8581 ItemStack checkPickup(const Point& mouse, const FPoint& cam, const FPoint& hero_pos);
8985 void addRenders(std::vector<Renderable> &ren, std::vector<Renderable> &ren_dead);
9086
9187 void parseLoot(std::string &val, EventComponent *e, std::vector<EventComponent> *ec_list);
88
89 void removeFromEnemiesDroppingLoot(StatBlock* sb);
9290 };
9391
9492 #endif
7777 clearQueues();
7878
7979 music_filename = "";
80 parallax_filename = "";
81 background_color = Color(0,0,0,0);
8082
8183 collision_layer = -1;
8284 w = 1;
124126 EventComponent *ec_power = events[i].getComponent(EventComponent::POWER);
125127 if (ec_power) {
126128 // store the index of this StatBlock so that we can find it when the event is activated
127 ec_power->y = addEventStatBlock(events[i]);
129 ec_power->x = addEventStatBlock(events[i]);
128130 }
129131 }
130132
394396 if (ec_damage) {
395397 for (size_t i = 0; i < eset->damage_types.count; ++i) {
396398 if (i % 2 == 0) {
397 statb->starting[Stats::COUNT + i] = ec_damage->a; // min
399 statb->starting[Stats::COUNT + i] = ec_damage->x; // min
398400 }
399401 else {
400 statb->starting[Stats::COUNT + i] = ec_damage->b; // max
402 statb->starting[Stats::COUNT + i] = ec_damage->y; // max
401403 }
402404 }
403405 }
411413 // create a temporary EffectDef for immunity; will be used for map StatBlocks
412414 EffectDef immunity_effect;
413415 immunity_effect.id = "MAP_EVENT_IMMUNITY";
414 immunity_effect.type = "immunity";
416 immunity_effect.type = Effect::IMMUNITY;
415417 statb->effects.addEffect(immunity_effect, 0, 0, Power::SOURCE_TYPE_ENEMY, EffectManager::NO_POWER);
416418
417419 // ensure the statblock will be alive
9494 int wander_radius;
9595 bool hero_ally;
9696 bool enemy_ally;
97 int summon_power_index;
97 PowerID summon_power_index;
9898 StatBlock* summoner;
9999 std::vector<StatusID> requires_status;
100100 std::vector<StatusID> requires_not_status;
516516 const int tile_x = int(map_x);
517517 const int tile_y = int(map_y);
518518
519 if (colmap[tile_x][tile_y] == BLOCKS_ENTITIES || colmap[tile_x][tile_y] == BLOCKS_ENEMIES) {
519 if (colmap[tile_x][tile_y] == BLOCKS_ENTITIES || colmap[tile_x][tile_y] == BLOCKS_ENEMIES ||
520 // TODO: check this logic
521 colmap[tile_x][tile_y] == BLOCKS_MOVEMENT_HIDDEN) {
520522 colmap[tile_x][tile_y] = BLOCKS_NONE;
521523 }
522524
2626
2727 MapParallax::MapParallax()
2828 : current_layer(0)
29 , loaded(false)
30 , current_filename("")
2931 {
3032 }
3133
3941 }
4042
4143 layers.clear();
44
45 loaded = false;
4246 }
4347
4448 void MapParallax::load(const std::string& filename) {
49 current_filename = filename;
50
51 if (loaded)
52 clear();
53
4554 if (!settings->parallax_layers)
4655 return;
47
48 clear();
4956
5057 // @CLASS MapParallax|Description of maps/parallax/
5158 FileParser infile;
8390
8491 infile.close();
8592 }
93
94 loaded = true;
8695 }
8796
8897 void MapParallax::setMapCenter(int x, int y) {
91100 }
92101
93102 void MapParallax::render(const FPoint& cam, const std::string& map_layer) {
94 if (!settings->parallax_layers)
103 if (!settings->parallax_layers) {
104 if (loaded)
105 clear();
106
95107 return;
108 }
109 else if (!loaded) {
110 load(current_filename);
111 }
96112
97113 if (map_layer.empty())
98114 current_layer = 0;
5151 std::vector<MapParallaxLayer> layers;
5252 FPoint map_center;
5353 size_t current_layer;
54 bool loaded;
55 std::string current_filename;
5456 };
5557
5658 #endif
1919 */
2020
2121 #include "Avatar.h"
22 #include "Camera.h"
2223 #include "CampaignManager.h"
2324 #include "CombatText.h"
2425 #include "CommonIncludes.h"
2526 #include "CursorManager.h"
26 #include "Enemy.h"
2727 #include "EnemyGroupManager.h"
28 #include "EnemyManager.h"
28 #include "Entity.h"
29 #include "EntityManager.h"
2930 #include "EngineSettings.h"
3031 #include "EventManager.h"
3132 #include "Hazard.h"
5556 , tip(new WidgetTooltip())
5657 , tip_pos()
5758 , show_tooltip(false)
58 , shakycam()
5959 , entity_hidden_normal(NULL)
6060 , entity_hidden_enemy(NULL)
6161 , cam()
6565 , respawn_point()
6666 , cutscene(false)
6767 , cutscene_file("")
68 , shaky_cam_timer()
6968 , stash(false)
7069 , stash_pos()
7170 , enemies_cleared(false)
7372 , npc_id(-1)
7473 , show_book("")
7574 , index_objectlayer(0)
75 , is_spawn_map(false)
7676 {
7777 // Load entity markers
7878 Image *gfx = render_device->loadImage("images/menus/entity_hidden.png", RenderDevice::ERROR_NORMAL);
195195 comb->clear();
196196
197197 show_tooltip = false;
198
199 parallax_filename = "";
200
201 background_color = Color(0,0,0,0);
198 is_spawn_map = (fname == "maps/spawn.txt");
202199
203200 Map::load(fname);
204201
250247 }
251248 }
252249
253 map_parallax.load(parallax_filename);
254 map_parallax.setMapCenter(w/2, h/2);
250 setMapParallax(parallax_filename);
255251
256252 render_device->setBackgroundColor(background_color);
257253
280276 if (paused)
281277 return;
282278
283 // handle camera shaking timer
284 shaky_cam_timer.tick();
285
286 if (shaky_cam_timer.isEnd()) {
287 shakycam.x = cam.x;
288 shakycam.y = cam.y;
289 }
290 else {
291 shakycam.x = cam.x + static_cast<float>((rand() % 16 - 8)) * 0.0078125f;
292 shakycam.y = cam.y + static_cast<float>((rand() % 16 - 8)) * 0.0078125f;
293 }
294
295
296279 // handle statblock logic for map powers
297280 for (unsigned i=0; i<statblocks.size(); ++i) {
298 statblocks[i].logic();
281 for (size_t j=0; j<statblocks[i].powers_ai.size(); ++j) {
282 statblocks[i].powers_ai[j].cooldown.tick();
283 }
299284 }
300285
301286 // handle event cooldowns
318303 it = delayed_events.erase(it);
319304 }
320305 }
306
307 cam.logic();
321308 }
322309
323310 bool priocompare(const Renderable &r1, const Renderable &r2) {
349336
350337 void MapRenderer::render(std::vector<Renderable> &r, std::vector<Renderable> &r_dead) {
351338
352 map_parallax.render(shakycam, "");
339 map_parallax.render(cam.shake, "");
353340
354341 if (eset->tileset.orientation == eset->tileset.TILESET_ORTHOGONAL) {
355342 calculatePriosOrtho(r);
372359 void MapRenderer::drawRenderable(std::vector<Renderable>::iterator r_cursor) {
373360 if (r_cursor->image != NULL) {
374361 Rect dest;
375 Point p = Utils::mapToScreen(r_cursor->map_pos.x, r_cursor->map_pos.y, shakycam.x, shakycam.y);
362 Point p = Utils::mapToScreen(r_cursor->map_pos.x, r_cursor->map_pos.y, cam.shake.x, cam.shake.y);
376363 dest.x = p.x - r_cursor->offset.x;
377364 dest.y = p.y - r_cursor->offset.y;
378365 render_device->render(*r_cursor, dest);
383370 int_fast16_t i; // first index of the map array
384371 int_fast16_t j; // second index of the map array
385372 Point dest;
386 const Point upperleft(Utils::screenToMap(0, 0, shakycam.x, shakycam.y));
373 const Point upperleft(Utils::screenToMap(0, 0, cam.shake.x, cam.shake.y));
387374 const int_fast16_t max_tiles_width = static_cast<int_fast16_t>((settings->view_w / eset->tileset.tile_w) + 2*tset.max_size_x);
388375 const int_fast16_t max_tiles_height = static_cast<int_fast16_t>((2 * settings->view_h / eset->tileset.tile_h) + 2*(tset.max_size_y+1));
389376
412399 // lower left (south west) corner is caught by having 0 in there, so j>0
413400 const int_fast16_t j_end = std::max(static_cast<int_fast16_t>(j+i-w+1), std::max(static_cast<int_fast16_t>(j - max_tiles_width), static_cast<int_fast16_t>(0)));
414401
415 Point p = Utils::mapToScreen(float(i), float(j), shakycam.x, shakycam.y);
402 Point p = Utils::mapToScreen(float(i), float(j), cam.shake.x, cam.shake.y);
416403 p = centerTile(p);
417404
418405 // draw one horizontal line
451438 void MapRenderer::renderIsoFrontObjects(std::vector<Renderable> &r) {
452439 Point dest;
453440
454 const Point upperleft(Utils::screenToMap(0, 0, shakycam.x, shakycam.y));
441 const Point upperleft(Utils::screenToMap(0, 0, cam.shake.x, cam.shake.y));
455442 const int_fast16_t max_tiles_width = static_cast<int_fast16_t>((settings->view_w / eset->tileset.tile_w) + 2 * tset.max_size_x);
456443 const int_fast16_t max_tiles_height = static_cast<int_fast16_t>(((settings->view_h / eset->tileset.tile_h) + 2 * tset.max_size_y)*2);
457444
492479 const int_fast16_t j_end = std::max(static_cast<int_fast16_t>(j+i-w+1), std::max(static_cast<int_fast16_t>(j - max_tiles_width), static_cast<int_fast16_t>(0)));
493480
494481 // draw one horizontal line
495 Point p = Utils::mapToScreen(float(i), float(j), shakycam.x, shakycam.y);
482 Point p = Utils::mapToScreen(float(i), float(j), cam.shake.x, cam.shake.y);
496483 p = centerTile(p);
497484 const Map_Layer &current_layer = layers[index_objectlayer];
498485 bool is_last_NE_tile = false;
562549 draw_NE_tile = !is_last_NE_tile;
563550
564551 // r_cursor left/right side
565 Point r_cursor_left = Utils::mapToScreen(r_cursor->map_pos.x, r_cursor->map_pos.y, shakycam.x, shakycam.y);
552 Point r_cursor_left = Utils::mapToScreen(r_cursor->map_pos.x, r_cursor->map_pos.y, cam.shake.x, cam.shake.y);
566553 r_cursor_left.y -= r_cursor->offset.y;
567554 Point r_cursor_right = r_cursor_left;
568555 r_cursor_left.x -= r_cursor->offset.x;
667654 size_t index = 0;
668655 while (index < index_objectlayer) {
669656 renderIsoLayer(layers[index]);
670 map_parallax.render(shakycam, layernames[index]);
657 map_parallax.render(cam.shake, layernames[index]);
671658 index++;
672659 }
673660
674661 renderIsoBackObjects(r_dead);
675662 renderIsoFrontObjects(r);
676 map_parallax.render(shakycam, layernames[index]);
663 map_parallax.render(cam.shake, layernames[index]);
677664
678665 index++;
679666 while (index < layers.size()) {
680667 renderIsoLayer(layers[index]);
681 map_parallax.render(shakycam, layernames[index]);
668 map_parallax.render(cam.shake, layernames[index]);
682669 index++;
683670 }
684671
691678 void MapRenderer::renderOrthoLayer(const Map_Layer& layerdata) {
692679
693680 Point dest;
694 const Point upperleft(Utils::screenToMap(0, 0, shakycam.x, shakycam.y));
681 const Point upperleft(Utils::screenToMap(0, 0, cam.shake.x, cam.shake.y));
695682
696683 short int startj = static_cast<short int>(std::max(0, upperleft.y));
697684 short int starti = static_cast<short int>(std::max(0, upperleft.x));
702689 short int j;
703690
704691 for (j = startj; j < max_tiles_height; j++) {
705 Point p = Utils::mapToScreen(starti, j, shakycam.x, shakycam.y);
692 Point p = Utils::mapToScreen(starti, j, cam.shake.x, cam.shake.y);
706693 p = centerTile(p);
707694 for (i = starti; i < max_tiles_width; i++) {
708695
733720 std::vector<Renderable>::iterator r_cursor = r.begin();
734721 std::vector<Renderable>::iterator r_end = r.end();
735722
736 const Point upperleft(Utils::screenToMap(0, 0, shakycam.x, shakycam.y));
723 const Point upperleft(Utils::screenToMap(0, 0, cam.shake.x, cam.shake.y));
737724
738725 short int startj = static_cast<short int>(std::max(0, upperleft.y));
739726 short int starti = static_cast<short int>(std::max(0, upperleft.x));
747734 return;
748735
749736 for (j = startj; j < max_tiles_height; j++) {
750 Point p = Utils::mapToScreen(starti, j, shakycam.x, shakycam.y);
737 Point p = Utils::mapToScreen(starti, j, cam.shake.x, cam.shake.y);
751738 p = centerTile(p);
752739 for (i = starti; i<max_tiles_width; i++) {
753740
777764 unsigned index = 0;
778765 while (index < index_objectlayer) {
779766 renderOrthoLayer(layers[index]);
780 map_parallax.render(shakycam, layernames[index]);
767 map_parallax.render(cam.shake, layernames[index]);
781768 index++;
782769 }
783770
784771 renderOrthoBackObjects(r_dead);
785772 renderOrthoFrontObjects(r);
786 map_parallax.render(shakycam, layernames[index]);
773 map_parallax.render(cam.shake, layernames[index]);
787774
788775 index++;
789776 while (index < layers.size()) {
790777 renderOrthoLayer(layers[index]);
791 map_parallax.render(shakycam, layernames[index]);
778 map_parallax.render(cam.shake, layernames[index]);
792779 index++;
793780 }
794781
828815 it = events.erase(it);
829816 }
830817 }
818
819 // Also check static events, as they should execute alongside on_load events
820 // Yet, this should be done *after* the on_load events to not break old behavior.
821 // That's why we don't just check static events in the above loop
822 for (it = events.end(); it != events.begin(); ) {
823 --it;
824
825 // skip inactive events
826 if (!EventManager::isActive(*it)) continue;
827
828 if ((*it).activate_type == Event::ACTIVATE_STATIC) {
829 if (EventManager::executeEvent(*it))
830 it = events.erase(it);
831 }
832 }
831833 }
832834
833835 void MapRenderer::executeOnMapExitEvents() {
893895 }
894896 }
895897 }
896 else if ((*it).activate_type == -1 || (*it).activate_type == Event::ACTIVATE_ON_TRIGGER) {
898 else if ((*it).activate_type == Event::ACTIVATE_ON_TRIGGER) {
897899 if (inside)
898900 if (EventManager::executeEvent(*it))
899901 it = events.erase(it);
922924 for (it = events.end(); it != events.begin(); ) {
923925 --it;
924926
927 // skip inactive events
928 if (!EventManager::isActive(*it)) continue;
929
930 // skip events without hotspots
931 if (it->hotspot.h == 0) continue;
932
933 // skip events on cooldown
934 if (!it->cooldown.isEnd() || !it->delay.isEnd()) continue;
935
936 EventComponent* npc = (*it).getComponent(EventComponent::NPC_HOTSPOT);
937
925938 for (int x=it->hotspot.x; x < it->hotspot.x + it->hotspot.w; ++x) {
926939 for (int y=it->hotspot.y; y < it->hotspot.y + it->hotspot.h; ++y) {
927940 bool matched = false;
928941 bool is_npc = false;
929942
930 EventComponent* npc = (*it).getComponent(EventComponent::NPC_HOTSPOT);
931943 if (npc) {
932944 is_npc = true;
933945
934 Point p = Utils::mapToScreen(float(npc->x), float(npc->y), shakycam.x, shakycam.y);
946 Point p = Utils::mapToScreen(float(npc->x), float(npc->y), cam.shake.x, cam.shake.y);
935947 p = centerTile(p);
936948
937949 Rect dest;
948960 }
949961 else {
950962 for (unsigned index = 0; index <= index_objectlayer; ++index) {
951 Point p = Utils::mapToScreen(float(x), float(y), shakycam.x, shakycam.y);
963 Point p = Utils::mapToScreen(float(x), float(y), cam.shake.x, cam.shake.y);
952964 p = centerTile(p);
953965
954966 if (const short current_tile = layers[index][x][y]) {
962974
963975 if (Utils::isWithinRect(dest, inpt->mouse)) {
964976 matched = true;
965 tip_pos = Utils::mapToScreen(it->center.x, it->center.y, shakycam.x, shakycam.y);
977 tip_pos = Utils::mapToScreen(it->center.x, it->center.y, cam.shake.x, cam.shake.y);
966978 tip_pos.y -= eset->tileset.tile_h;
967979 }
968980 }
970982 }
971983
972984 if (matched) {
973 // skip inactive events
974 if (!EventManager::isActive(*it)) continue;
975
976 // skip events without hotspots
977 if (it->hotspot.h == 0) continue;
978
979 // skip events on cooldown
980 if (!it->cooldown.isEnd() || !it->delay.isEnd()) continue;
981
982985 // new tooltip?
983986 createTooltip(it->getComponent(EventComponent::TOOLTIP));
984987
985 if (((it->reachable_from.w == 0 && it->reachable_from.h == 0) || Utils::isWithinRect(it->reachable_from, Point(cam)))
986 && Utils::calcDist(cam, it->center) < eset->misc.interact_range) {
988 if (((it->reachable_from.w == 0 && it->reachable_from.h == 0) || Utils::isWithinRect(it->reachable_from, Point(cam.pos)))
989 && Utils::calcDist(pc->stats.pos, it->center) < eset->misc.interact_range) {
987990
988991 // only check events if the player is clicking
989992 // and allowed to click
10291032 // skip events on cooldown
10301033 if (!it->cooldown.isEnd() || !it->delay.isEnd()) continue;
10311034
1032 float distance = Utils::calcDist(cam, it->center);
1033 if (((it->reachable_from.w == 0 && it->reachable_from.h == 0) || Utils::isWithinRect(it->reachable_from, Point(cam)))
1035 float distance = Utils::calcDist(pc->stats.pos, it->center);
1036 if (((it->reachable_from.w == 0 && it->reachable_from.h == 0) || Utils::isWithinRect(it->reachable_from, Point(cam.pos)))
10341037 && distance < eset->misc.interact_range && distance < best_distance) {
10351038 best_distance = distance;
10361039 nearest = it;
10421045 if (!inpt->usingMouse() || settings->touchscreen) {
10431046 // new tooltip?
10441047 createTooltip(nearest->getComponent(EventComponent::TOOLTIP));
1045 tip_pos = Utils::mapToScreen(nearest->center.x, nearest->center.y, shakycam.x, shakycam.y);
1048 tip_pos = Utils::mapToScreen(nearest->center.x, nearest->center.y, cam.shake.x, cam.shake.y);
10461049 if (nearest->getComponent(EventComponent::NPC_HOTSPOT)) {
10471050 tip_pos.y -= eset->tooltips.margin_npc;
10481051 }
10821085 /**
10831086 * Activate a power that is attached to an event
10841087 */
1085 void MapRenderer::activatePower(int power_index, unsigned statblock_index, FPoint &target) {
1086 if (power_index < 0 || static_cast<unsigned>(power_index) >= powers->powers.size()) {
1087 Utils::logError("MapRenderer: Power index is out of bounds.");
1088 void MapRenderer::activatePower(PowerID power_index, unsigned statblock_index, FPoint &target) {
1089 if (powers->powers[power_index].is_empty) {
1090 Utils::logError("MapRenderer: Power index %d is not valid.", power_index);
10881091 return;
10891092 }
10901093
11281131 const Tile_Def &tile = tset.tiles[tile_index];
11291132 if (!tile.tile)
11301133 return;
1131 center = centerTile(Utils::mapToScreen(float(x), float(y), shakycam.x, shakycam.y));
1134 center = centerTile(Utils::mapToScreen(float(x), float(y), cam.shake.x, cam.shake.y));
11321135 bounds.x = center.x - tile.offset.x;
11331136 bounds.y = center.y - tile.offset.y;
11341137 bounds.w = tile.tile->getClip().w;
11431146 return;
11441147
11451148 Color dev_cursor_color = Color(255,255,0,255);
1146 FPoint target = Utils::screenToMap(inpt->mouse.x, inpt->mouse.y, shakycam.x, shakycam.y);
1149 FPoint target = Utils::screenToMap(inpt->mouse.x, inpt->mouse.y, cam.shake.x, cam.shake.y);
11471150
11481151 if (!collider.isOutsideMap(floorf(target.x), floorf(target.y))) {
11491152 if (eset->tileset.orientation == eset->tileset.TILESET_ORTHOGONAL) {
1150 Point p_topleft = Utils::mapToScreen(floorf(target.x), floorf(target.y), shakycam.x, shakycam.y);
1153 Point p_topleft = Utils::mapToScreen(floorf(target.x), floorf(target.y), cam.shake.x, cam.shake.y);
11511154 Point p_bottomright(p_topleft.x + eset->tileset.tile_w, p_topleft.y + eset->tileset.tile_h);
11521155
11531156 render_device->drawRectangle(p_topleft, p_bottomright, dev_cursor_color);
11541157 }
11551158 else {
1156 Point p_left = Utils::mapToScreen(floorf(target.x), floorf(target.y+1), shakycam.x, shakycam.y);
1159 Point p_left = Utils::mapToScreen(floorf(target.x), floorf(target.y+1), cam.shake.x, cam.shake.y);
11571160 Point p_top(p_left.x + eset->tileset.tile_w_half, p_left.y - eset->tileset.tile_h_half);
11581161 Point p_right(p_left.x + eset->tileset.tile_w, p_left.y);
11591162 Point p_bottom(p_left.x + eset->tileset.tile_w_half, p_left.y + eset->tileset.tile_h_half);
11661169
11671170 // draw distance line
11681171 if (menu->devconsole->distance_timer.isEnd()) {
1169 Point p0 = Utils::mapToScreen(menu->devconsole->target.x, menu->devconsole->target.y, shakycam.x, shakycam.y);
1170 Point p1 = Utils::mapToScreen(pc->stats.pos.x, pc->stats.pos.y, shakycam.x, shakycam.y);
1172 Point p0 = Utils::mapToScreen(menu->devconsole->target.x, menu->devconsole->target.y, cam.shake.x, cam.shake.y);
1173 Point p1 = Utils::mapToScreen(pc->stats.pos.x, pc->stats.pos.y, cam.shake.x, cam.shake.y);
11711174 render_device->drawLine(p0.x, p0.y, p1.x, p1.y, dev_cursor_color);
11721175 }
11731176 }
11791182
11801183 Color color_hazard(255,0,0,255);
11811184 Color color_entity(0,255,0,255);
1185 Color color_cam(255,255,0,255);
11821186 int cross_size = eset->tileset.tile_h_half / 4;
11831187
11841188 // ellipses are distorted for isometric tilesets
1185 int distort = eset->tileset.orientation == eset->tileset.TILESET_ORTHOGONAL ? 0 : 2;
1189 int distort = eset->tileset.orientation == eset->tileset.TILESET_ORTHOGONAL ? 1 : 2;
1190
1191 // camera
1192 {
1193 Point p0 = Utils::mapToScreen(cam.pos.x, cam.pos.y, cam.shake.x, cam.shake.y);
1194 render_device->drawLine(p0.x - cross_size, p0.y, p0.x + cross_size, p0.y, color_cam);
1195 render_device->drawLine(p0.x, p0.y - cross_size, p0.x, p0.y + cross_size, color_cam);
1196 }
11861197
11871198 // player
11881199 {
1189 Point p0 = Utils::mapToScreen(pc->stats.pos.x, pc->stats.pos.y, shakycam.x, shakycam.y);
1200 Point p0 = Utils::mapToScreen(pc->stats.pos.x, pc->stats.pos.y, cam.shake.x, cam.shake.y);
11901201 render_device->drawLine(p0.x - cross_size, p0.y, p0.x + cross_size, p0.y, color_entity);
11911202 render_device->drawLine(p0.x, p0.y - cross_size, p0.x, p0.y + cross_size, color_entity);
11921203 }
11931204
11941205 // enemies
1195 for (size_t i = 0; i < enemym->enemies.size(); ++i) {
1196 Point p0 = Utils::mapToScreen(enemym->enemies[i]->stats.pos.x, enemym->enemies[i]->stats.pos.y, shakycam.x, shakycam.y);
1206 for (size_t i = 0; i < entitym->entities.size(); ++i) {
1207 Point p0 = Utils::mapToScreen(entitym->entities[i]->stats.pos.x, entitym->entities[i]->stats.pos.y, cam.shake.x, cam.shake.y);
11971208 render_device->drawLine(p0.x - cross_size, p0.y, p0.x + cross_size, p0.y, color_entity);
11981209 render_device->drawLine(p0.x, p0.y - cross_size, p0.x, p0.y + cross_size, color_entity);
11991210 }
12031214 if (hazards->h[i]->delay_frames != 0)
12041215 continue;
12051216
1206 float radius_c = sqrtf(powf(hazards->h[i]->power->radius, 2) + powf(hazards->h[i]->power->radius, 2));
1207 Point p0 = Utils::mapToScreen(hazards->h[i]->pos.x, hazards->h[i]->pos.y, shakycam.x, shakycam.y);
1208 Point p1 = Utils::mapToScreen(hazards->h[i]->pos.x + radius_c, hazards->h[i]->pos.y, shakycam.x, shakycam.y);
1217 Point p0 = Utils::mapToScreen(hazards->h[i]->pos.x, hazards->h[i]->pos.y, cam.shake.x, cam.shake.y);
1218 Point p1 = Utils::mapToScreen(hazards->h[i]->pos.x + hazards->h[i]->power->radius, hazards->h[i]->pos.y, cam.shake.x, cam.shake.y);
12091219 int radius = p1.x - p0.x;
12101220 render_device->drawLine(p0.x - cross_size, p0.y, p0.x + cross_size, p0.y, color_hazard);
12111221 render_device->drawLine(p0.x, p0.y - cross_size, p0.x, p0.y + cross_size, color_hazard);
12151225 }
12161226
12171227 void MapRenderer::drawHiddenEntityMarkers() {
1228 if (!settings->entity_markers)
1229 return;
1230
12181231 std::vector<std::vector<Renderable>::iterator>::iterator hero_it = hidden_entities.end();
12191232 Point hidden_hero_pos(0, settings->view_h);
12201233
12291242 continue;
12301243
12311244 Point dest;
1232 Point p = Utils::mapToScreen(hidden_entities[i]->map_pos.x, hidden_entities[i]->map_pos.y, shakycam.x, shakycam.y);
1245 Point p = Utils::mapToScreen(hidden_entities[i]->map_pos.x, hidden_entities[i]->map_pos.y, cam.shake.x, cam.shake.y);
12331246 dest.x = p.x - marker_w / 2;
12341247 dest.y = p.y - hidden_entities[i]->offset.y - marker_h;
12351248
12631276 }
12641277
12651278 void MapRenderer::checkHiddenEntities(const int_fast16_t x, const int_fast16_t y, const Map_Layer& layerdata, std::vector<Renderable> &r) {
1279 if (!settings->entity_markers)
1280 return;
1281
12661282 Rect tile_bounds;
12671283 Point tile_center;
12681284 getTileBounds(x, y, layerdata, tile_bounds, tile_center);
12961312 is_hidden = true;
12971313 }
12981314 else if (it->type != Renderable::TYPE_NORMAL) {
1299 Point p = Utils::mapToScreen(it->map_pos.x, it->map_pos.y, shakycam.x, shakycam.y);
1315 Point p = Utils::mapToScreen(it->map_pos.x, it->map_pos.y, cam.shake.x, cam.shake.y);
13001316 p.x -= it->offset.x;
13011317 if (Utils::isWithinRect(tile_bounds, p)) {
13021318 is_hidden = true;
13291345 ++it;
13301346 }
13311347 }
1348
1349 void MapRenderer::setMapParallax(const std::string& mp_filename) {
1350 map_parallax.load(mp_filename);
1351 map_parallax.setMapCenter(w/2, h/2);
1352 }
1353
13321354 MapRenderer::~MapRenderer() {
13331355 tip_buf.clear();
13341356 clearLayers();
2727 #ifndef MAP_RENDERER_H
2828 #define MAP_RENDERER_H
2929
30 #include "Camera.h"
3031 #include "CommonIncludes.h"
3132 #include "Map.h"
3233 #include "MapCollision.h"
8182
8283 void checkHiddenEntities(const int_fast16_t x, const int_fast16_t y, const Map_Layer& layerdata, std::vector<Renderable> &r);
8384
84 FPoint shakycam;
8585 TileSet tset;
8686
8787 MapParallax map_parallax;
114114 void executeOnMapExitEvents();
115115
116116 // some events can trigger powers
117 void activatePower(int power_index, unsigned statblock_index, FPoint &target);
117 void activatePower(PowerID power_index, unsigned statblock_index, FPoint &target);
118118
119119 bool isValidTile(const unsigned &tile);
120120 Point centerTile(const Point& p);
121121
122 // cam(x,y) is where on the map the camera is pointing
123 FPoint cam;
122 void setMapParallax(const std::string& mp_filename);
123
124 // cam is where on the map the camera is pointing
125 Camera cam;
124126
125127 // indicates that the map was changed by an event, so the GameStatePlay
126128 // will tell the mini map to update.
142144 // cutscene handling
143145 bool cutscene;
144146 std::string cutscene_file;
145
146 // shaky cam
147 Timer shaky_cam_timer;
148147
149148 // stash handling
150149 bool stash;
175174 * before that are painted below objects; Layers after are painted on top.
176175 */
177176 unsigned index_objectlayer;
177
178 // flag used to prevent rendering when in maps/spawn.txt
179 bool is_spawn_map;
178180 };
179181
180182
2929 #include "EngineSettings.h"
3030 #include "FileParser.h"
3131 #include "FontEngine.h"
32 #include "MapRenderer.h"
3233 #include "Menu.h"
3334 #include "MenuActionBar.h"
3435 #include "MenuInventory.h"
3536 #include "MenuManager.h"
37 #include "MenuPowers.h"
3638 #include "MenuTouchControls.h"
3739 #include "MessageEngine.h"
3840 #include "Platform.h"
5557 , sprite_disabled(NULL)
5658 , sprite_attention(NULL)
5759 , sfx_unable_to_cast(0)
60 , tooltip_length(MenuPowers::TOOLTIP_LONG_MENU)
5861 , slots_count(0)
5962 , drag_prev_slot(-1)
6063 , updated(false)
6770 tablist.setInputs(Input::ACTIONBAR_BACK, Input::ACTIONBAR_FORWARD, Input::ACTIONBAR);
6871
6972 for (unsigned i=0; i<MENU_COUNT; i++) {
70 if (i < MENU_LOOT_TIPS)
71 menus[i] = new WidgetSlot(-1, Input::ACTIONBAR, WidgetSlot::SIZE_NORMAL);
72 else
73 menus[i] = new WidgetSlot(-1, Input::ACTIONBAR, WidgetSlot::SIZE_SMALL);
73 menus[i] = new WidgetSlot(-1, Input::ACTIONBAR);
74 menus[i]->setHotkey(Input::CHARACTER + i);
7475
7576 // NOTE: This prevents these buttons from being clickable unless they get defined in the config file.
7677 // However, it doesn't prevent them from being added to the tablist, so they can still be activated there despite being invisible
8384 menu_titles[MENU_INVENTORY] = msg->get("Inventory");
8485 menu_titles[MENU_POWERS] = msg->get("Powers");
8586 menu_titles[MENU_LOG] = msg->get("Log");
86 menu_titles[MENU_LOOT_TIPS] = msg->get("Loot tooltip visibility");
87 menu_titles[MENU_MINIMAP_MODE] = msg->get("Mini-map mode");
88 menu_titles[MENU_STATBARS_LABELS] = msg->get("Always show stat bar labels");
89 menu_titles[MENU_COMBAT_TEXT] = msg->get("Show combat text");
9087
9188 // Read data from config file
9289 FileParser infile;
156153 menus[MENU_LOG]->setBasePos(x, y, Utils::ALIGN_TOPLEFT);
157154 menus[MENU_LOG]->pos.w = menus[MENU_LOG]->pos.h = eset->resolutions.icon_size;
158155 }
159 // @ATTR loot_tip_toggle|point|Position for the button used to toggle loot tooltip visibility.
160 else if (infile.key == "loot_tip_toggle") {
161 int x = Parse::popFirstInt(infile.val);
162 int y = Parse::popFirstInt(infile.val);
163 menus[MENU_LOOT_TIPS]->setBasePos(x, y, Utils::ALIGN_TOPLEFT);
164 menus[MENU_LOOT_TIPS]->pos.w = menus[MENU_LOOT_TIPS]->pos.h = eset->resolutions.icon_size / 2; // small
165 }
166 // @ATTR minimap_mode_toggle|point|Position for the button used to toggle the mini-map mode.
167 else if (infile.key == "minimap_mode_toggle") {
168 int x = Parse::popFirstInt(infile.val);
169 int y = Parse::popFirstInt(infile.val);
170 menus[MENU_MINIMAP_MODE]->setBasePos(x, y, Utils::ALIGN_TOPLEFT);
171 menus[MENU_MINIMAP_MODE]->pos.w = menus[MENU_MINIMAP_MODE]->pos.h = eset->resolutions.icon_size / 2; // small
172 }
173 // @ATTR statbar_label_toggle|point|Position for the button used to toggle always showing the statbar labels.
174 else if (infile.key == "statbar_label_toggle") {
175 int x = Parse::popFirstInt(infile.val);
176 int y = Parse::popFirstInt(infile.val);
177 menus[MENU_STATBARS_LABELS]->setBasePos(x, y, Utils::ALIGN_TOPLEFT);
178 menus[MENU_STATBARS_LABELS]->pos.w = menus[MENU_STATBARS_LABELS]->pos.h = eset->resolutions.icon_size / 2; // small
179 }
180 // @ATTR combat_text_toggle|point|Position for the button used to toggle the display of combat text.
181 else if (infile.key == "combat_text_toggle") {
182 int x = Parse::popFirstInt(infile.val);
183 int y = Parse::popFirstInt(infile.val);
184 menus[MENU_COMBAT_TEXT]->setBasePos(x, y, Utils::ALIGN_TOPLEFT);
185 menus[MENU_COMBAT_TEXT]->pos.w = menus[MENU_COMBAT_TEXT]->pos.h = eset->resolutions.icon_size / 2; // small
156 // @ATTR tooltip_length|["short", "long_menu", "long_all"]|The length of power descriptions in tooltips. 'short' will display only the power name. 'long_menu' (the default setting) will display full tooltips, but only for powers that are in the Powers menu. 'long_all' will display full tooltips for all powers.
157 else if (infile.key == "tooltip_length") {
158 if (infile.val == "short")
159 tooltip_length = MenuPowers::TOOLTIP_SHORT;
160 else if (infile.val == "long_menu")
161 tooltip_length = MenuPowers::TOOLTIP_LONG_MENU;
162 else if (infile.val == "long_all")
163 tooltip_length = MenuPowers::TOOLTIP_LONG_ALL;
164 else
165 infile.error("MenuActionBar: '%s' is not a valid tooltip_length setting.", infile.val.c_str());
186166 }
187167
188168 else infile.error("MenuActionBar: '%s' is not a valid key.", infile.key.c_str());
206186 slot_cooldown_size.resize(slots_count);
207187 slot_fail_cooldown.resize(slots_count);
208188
209 clear();
189 clear(!MenuActionBar::CLEAR_SKIP_ITEMS);
210190
211191 loadGraphics();
212192
224204 slots.resize(index+1, NULL);
225205 }
226206
227 slots[index] = new WidgetSlot(-1, Input::ACTIONBAR, WidgetSlot::SIZE_NORMAL);
207 slots[index] = new WidgetSlot(-1, Input::ACTIONBAR);
228208 slots[index]->setBasePos(x, y, Utils::ALIGN_TOPLEFT);
229209 slots[index]->pos.w = slots[index]->pos.h = eset->resolutions.icon_size;
230210 slots[index]->continuous = true;
211
212 if (index < 10)
213 slots[index]->setHotkey(Input::BAR_1 + index);
214 else if (index < 12)
215 slots[index]->setHotkey(Input::MAIN1 + index - 10);
231216
232217 prevent_changing.resize(slots.size());
233218 prevent_changing[index] = is_locked;
266251 }
267252 for (unsigned i=0; i<menu_labels.size(); i++) {
268253 menus[i]->setPos(window_area.x, window_area.y);
269 if (i < MENU_LOOT_TIPS) {
270 menu_labels[i] = msg->get("Hotkey: %s", inpt->getBindingString(i + Input::CHARACTER));
271 }
272 }
273 }
274
275 void MenuActionBar::clear() {
254 menu_labels[i] = msg->get("Hotkey: %s", inpt->getBindingString(i + Input::CHARACTER));
255 }
256 }
257
258 void MenuActionBar::clear(bool skip_items) {
276259 // clear action bar
277260 for (unsigned i = 0; i < slots_count; i++) {
261 if (skip_items && powers) {
262 if (hotkeys[i] > 0) {
263 const Power &power = powers->powers[hotkeys_mod[i]];
264 if (!power.required_items.empty()) {
265 continue;
266 }
267 }
268 }
269
278270 hotkeys[i] = 0;
279271 hotkeys_temp[i] = 0;
280272 hotkeys_mod[i] = 0;
332324 for (unsigned i = 0; i < slots_count; i++) {
333325 if (!slots[i]) continue;
334326
335 if (hotkeys[i] > 0 && static_cast<unsigned>(hotkeys_mod[i]) < powers->powers.size()) {
327 if (hotkeys[i] > 0) {
336328 const Power &power = powers->powers[hotkeys_mod[i]];
337329
338330 if (power.required_items.empty()) {
468460 else
469461 tip_data.addText(menu_titles[i]);
470462
471 if (i == MENU_LOOT_TIPS) {
472 if (settings->loot_tooltips == Settings::LOOT_TIPS_DEFAULT)
473 menu_labels[i] = msg->get("Default. Temporarily show all loot tooltips with '%s'.", inpt->getBindingString(Input::ALT));
474 else if (settings->loot_tooltips == Settings::LOOT_TIPS_SHOW_ALL)
475 menu_labels[i] = msg->get("Show All. Temporarily hide all loot tooltips with '%s'.", inpt->getBindingString(Input::ALT));
476 else if (settings->loot_tooltips == Settings::LOOT_TIPS_HIDE_ALL)
477 menu_labels[i] = msg->get("Hide All. Temporarily show all loot tooltips with '%s'.", inpt->getBindingString(Input::ALT));
478 }
479 else if (i == MENU_MINIMAP_MODE) {
480 if (settings->minimap_mode == Settings::MINIMAP_NORMAL)
481 menu_labels[i] = msg->get("Visible");
482 else if (settings->minimap_mode == Settings::MINIMAP_2X)
483 menu_labels[i] = msg->get("Visible (2x zoom)");
484 else if (settings->minimap_mode == Settings::MINIMAP_HIDDEN)
485 menu_labels[i] = msg->get("Hidden");
486 }
487 else if (i == MENU_STATBARS_LABELS) {
488 if (settings->statbar_labels)
489 menu_labels[i] = msg->get("Enabled");
490 else
491 menu_labels[i] = msg->get("Disabled");
492 }
493 else if (i == MENU_COMBAT_TEXT) {
494 if (settings->combat_text)
495 menu_labels[i] = msg->get("Enabled");
496 else
497 menu_labels[i] = msg->get("Disabled");
498 }
499
500463 if (!menu_labels[i].empty()) {
501464 tip_data.addText(menu_labels[i]);
502465 }
510473 for (unsigned i = 0; i < slots_count; i++) {
511474 if (slots[i] && Utils::isWithinRect(slots[i]->pos, position)) {
512475 if (hotkeys_mod[i] != 0) {
513 tip_data.addText(powers->powers[hotkeys_mod[i]].name);
476 menu->pow->createTooltipFromActionBar(&tip_data, i, tooltip_length);
514477 }
515478 tip_data.addText(labels[i]);
516479 }
522485 /**
523486 * After dragging a power or item onto the action bar, set as new hotkey
524487 */
525 void MenuActionBar::drop(const Point& mouse, int power_index, bool rearranging) {
488 void MenuActionBar::drop(const Point& mouse, PowerID power_index, bool rearranging) {
526489 for (unsigned i = 0; i < slots_count; i++) {
527490 if (slots[i] && !powers->powers[power_index].no_actionbar && Utils::isWithinRect(slots[i]->pos, mouse)) {
528491 if (rearranging) {
547510 /**
548511 * Return the power to the last clicked on slot
549512 */
550 void MenuActionBar::actionReturn(int power_index) {
513 void MenuActionBar::actionReturn(PowerID power_index) {
551514 drop(last_mouse, power_index, !REORDER);
552515 }
553516
649612 }
650613
651614 // a power slot was activated
652 if (action.power > 0 && static_cast<unsigned>(action.power) < powers->powers.size()) {
615 if (action.power > 0) {
653616 const Power& power = powers->powers[action.power];
654617
655618 if (pc->stats.mp < power.requires_mp && slot_fail_cooldown[i] == 0) {
712675 /**
713676 * If clicking while a menu is open, assume the player wants to rearrange the action bar
714677 */
715 int MenuActionBar::checkDrag(const Point& mouse) {
716 int power_index;
678 PowerID MenuActionBar::checkDrag(const Point& mouse) {
679 PowerID power_index;
717680
718681 for (unsigned i=0; i<slots_count; i++) {
719682 if (slots[i] && Utils::isWithinRect(slots[i]->pos, mouse)) {
752715 else if (menus[MENU_LOG]->checkClick()) {
753716 menu_l = true;
754717 menus[MENU_LOG]->deactivate();
755 }
756 else if (menus[MENU_LOOT_TIPS]->checkClick()) {
757 settings->loot_tooltips++;
758 if (settings->loot_tooltips > Settings::LOOT_TIPS_HIDE_ALL)
759 settings->loot_tooltips = Settings::LOOT_TIPS_DEFAULT;
760 menus[MENU_LOOT_TIPS]->deactivate();
761 }
762 else if (menus[MENU_MINIMAP_MODE]->checkClick()) {
763 settings->minimap_mode++;
764 if (settings->minimap_mode > Settings::MINIMAP_HIDDEN)
765 settings->minimap_mode = Settings::MINIMAP_NORMAL;
766 menus[MENU_MINIMAP_MODE]->deactivate();
767 }
768 else if (menus[MENU_STATBARS_LABELS]->checkClick()) {
769 settings->statbar_labels = !settings->statbar_labels;
770 menus[MENU_STATBARS_LABELS]->deactivate();
771 }
772 else if (menus[MENU_COMBAT_TEXT]->checkClick()) {
773 settings->combat_text = !settings->combat_text;
774 menus[MENU_COMBAT_TEXT]->deactivate();
775718 }
776719
777720 // also allow ACTIONBAR_USE to open menus
788731 menu_p = true;
789732 else if (cur_slot == tablist.size() - (MENU_COUNT - 3))
790733 menu_l = true;
791 else if (cur_slot == tablist.size() - (MENU_COUNT - 4)) {
792 settings->loot_tooltips++;
793 if (settings->loot_tooltips > Settings::LOOT_TIPS_HIDE_ALL)
794 settings->loot_tooltips = Settings::LOOT_TIPS_DEFAULT;
795 }
796 else if (cur_slot == tablist.size() - (MENU_COUNT - 5)) {
797 settings->minimap_mode++;
798 if (settings->minimap_mode > Settings::MINIMAP_HIDDEN)
799 settings->minimap_mode = Settings::MINIMAP_NORMAL;
800 menus[MENU_MINIMAP_MODE]->deactivate();
801 }
802 else if (cur_slot == tablist.size() - (MENU_COUNT - 6)) {
803 settings->statbar_labels = !settings->statbar_labels;
804 menus[MENU_STATBARS_LABELS]->deactivate();
805 }
806 else if (cur_slot == tablist.size() - (MENU_COUNT - 7)) {
807 settings->combat_text = !settings->combat_text;
808 menus[MENU_COMBAT_TEXT]->deactivate();
809 }
810734 }
811735 }
812736
813737 /**
814738 * Set all hotkeys at once e.g. when loading a game
815739 */
816 void MenuActionBar::set(std::vector<int> power_id) {
740 void MenuActionBar::set(std::vector<PowerID> power_id, bool skip_empty) {
817741 for (unsigned i = 0; i < slots_count; i++) {
818 if (static_cast<unsigned>(power_id[i]) >= powers->powers.size())
819 continue;
820
821742 if (powers->powers[power_id[i]].no_actionbar)
822743 continue;
823744
824 hotkeys[i] = power_id[i];
745 if (!skip_empty || hotkeys[i] == 0)
746 hotkeys[i] = power_id[i];
825747 }
826748 updated = true;
827749 }
842764 if (have_aim && settings->mouse_aim) {
843765 FPoint map_pos;
844766 if (pow.aim_assist)
845 map_pos = Utils::screenToMap(inpt->mouse.x, inpt->mouse.y + eset->misc.aim_assist, pc->stats.pos.x, pc->stats.pos.y);
767 map_pos = Utils::screenToMap(inpt->mouse.x, inpt->mouse.y + eset->misc.aim_assist, mapr->cam.pos.x, mapr->cam.pos.y);
846768 else
847 map_pos = Utils::screenToMap(inpt->mouse.x, inpt->mouse.y, pc->stats.pos.x, pc->stats.pos.y);
769 map_pos = Utils::screenToMap(inpt->mouse.x, inpt->mouse.y, mapr->cam.pos.x, mapr->cam.pos.y);
848770
849771 if (pow.target_nearest > 0) {
850772 if (!pow.requires_corpse && powers->checkNearestTargeting(pow, &pc->stats, false)) {
904826 * Replaces the power(s) in slots that match the target_id with the power of id
905827 * So a target_id of 0 will place the power in an empty slot, if available
906828 */
907 void MenuActionBar::addPower(const int id, const int target_id) {
908 if (static_cast<unsigned>(id) >= powers->powers.size())
909 return;
910
829 void MenuActionBar::addPower(const PowerID id, const PowerID target_id) {
911830 // some powers are explicitly prevented from being placed on the actionbar
912831 if (powers->powers[id].no_actionbar)
913832 return;
962881 return Point();
963882 }
964883
965 int MenuActionBar::getSlotPower(int slot) {
884 PowerID MenuActionBar::getSlotPower(int slot) {
966885 if (static_cast<unsigned>(slot) < hotkeys.size()) {
967886 return hotkeys_mod[slot];
968887 }
5959
6060 SoundID sfx_unable_to_cast;
6161
62 int tooltip_length;
63
6264 public:
6365 enum {
6466 MENU_CHARACTER = 0,
6567 MENU_INVENTORY = 1,
6668 MENU_POWERS = 2,
6769 MENU_LOG = 3,
68 MENU_LOOT_TIPS = 4,
69 MENU_MINIMAP_MODE = 5,
70 MENU_STATBARS_LABELS = 6,
71 MENU_COMBAT_TEXT = 7
7270 };
73 static const unsigned MENU_COUNT = 8;
71 static const unsigned MENU_COUNT = 4;
7472
7573 static const int SLOT_MAIN1 = 10;
7674 static const int SLOT_MAIN2 = 11;
7977 static const int USE_EMPTY_SLOT = 0;
8078
8179 static const bool REORDER = true;
80 static const bool CLEAR_SKIP_ITEMS = true;
81 static const bool SET_SKIP_EMPTY = true;
8282
8383 MenuActionBar();
8484 ~MenuActionBar();
8787 void logic();
8888 void render();
8989 void checkAction(std::vector<ActionData> &action_queue);
90 int checkDrag(const Point& mouse);
90 PowerID checkDrag(const Point& mouse);
9191 void checkMenu(bool &menu_c, bool &menu_i, bool &menu_p, bool &menu_l);
92 void drop(const Point& mouse, int power_index, bool rearranging);
93 void actionReturn(int power_index);
92 void drop(const Point& mouse, PowerID power_index, bool rearranging);
93 void actionReturn(PowerID power_index);
9494 void remove(const Point& mouse);
95 void set(std::vector<int> power_id);
96 void clear();
95 void set(std::vector<PowerID> power_id, bool skip_empty);
96 void clear(bool skip_items);
9797 void resetSlots();
9898 Point getSlotPos(int slot);
99 int getSlotPower(int slot);
99 PowerID getSlotPower(int slot);
100100
101101 void renderTooltips(const Point& position);
102102 bool isWithinSlots(const Point& mouse);
103103 bool isWithinMenus(const Point& mouse);
104 void addPower(const int id, const int target_id);
104 void addPower(const PowerID id, const PowerID target_id);
105105
106106 unsigned slots_count;
107 std::vector<int> hotkeys; // refer to power_index in PowerManager
108 std::vector<int> hotkeys_temp; // temp for shapeshifting
109 std::vector<int> hotkeys_mod; // hotkeys can be changed by items
107 std::vector<PowerID> hotkeys; // refer to power_index in PowerManager
108 std::vector<PowerID> hotkeys_temp; // temp for shapeshifting
109 std::vector<PowerID> hotkeys_mod; // hotkeys can be changed by items
110110 std::vector<bool> locked; // if slot is locked, you cannot drop it
111111 std::vector<bool> prevent_changing;
112112 std::vector<WidgetSlot *> slots; // hotkey slots
8989 if (pc->stats.effects.effect_list[i].icon == -1)
9090 continue;
9191
92 const Effect &ed = pc->stats.effects.effect_list[i];
92 Effect &ed = pc->stats.effects.effect_list[i];
9393
9494 size_t most_recent_id = effect_icons.size()-1;
9595 if(ed.group_stack){
104104 }else if (ed.type == Effect::HEAL){
105105 //No special behavior
106106 }else{
107 if(ed.ticks < effect_icons[most_recent_id].current){
108 if (ed.duration > 0)
109 effect_icons[most_recent_id].overlay.y = (eset->resolutions.icon_size * ed.ticks) / ed.duration;
107 if (ed.timer.getCurrent() < static_cast<unsigned>(effect_icons[most_recent_id].current)){
108 if (ed.timer.getDuration() > 0)
109 effect_icons[most_recent_id].overlay.y = (eset->resolutions.icon_size * ed.timer.getCurrent()) / ed.timer.getDuration();
110110 else
111111 effect_icons[most_recent_id].overlay.y = eset->resolutions.icon_size;
112 effect_icons[most_recent_id].current = ed.ticks;
113 effect_icons[most_recent_id].max = ed.duration;
112 effect_icons[most_recent_id].current = ed.timer.getCurrent();
113 effect_icons[most_recent_id].max = ed.timer.getDuration();
114114 }
115115 }
116116
157157 // current and max are ignored
158158 }
159159 else {
160 if (ed.duration > 0)
161 ei.overlay.y = (eset->resolutions.icon_size * ed.ticks) / ed.duration;
160 if (ed.timer.getDuration() > 0)
161 ei.overlay.y = (eset->resolutions.icon_size * ed.timer.getCurrent()) / ed.timer.getDuration();
162162 else
163163 ei.overlay.y = eset->resolutions.icon_size;
164 ei.current = ed.ticks;
165 ei.max = ed.duration;
164 ei.current = ed.timer.getCurrent();
165 ei.max = ed.timer.getDuration();
166166 }
167167 ei.overlay.h = eset->resolutions.icon_size - ei.overlay.y;
168168
304304 cstat[i+2].value->setColor(bonusColor(pc->stats.primary_additional[i]));
305305 }
306306
307 ss.str("");
308 if (skill_points == 1) {
309 ss << msg->get("%d unspent stat point", skill_points);
310 }
311 else if (skill_points > 1) {
312 ss << msg->get("%d unspent stat points", skill_points);
313 }
314 labelUnspent->setText(ss.str());
307 if (skill_points >= 1) {
308 labelUnspent->setText(msg->get("Available stat points: %d", skill_points));
309 }
310 else {
311 labelUnspent->setText("");
312 }
315313
316314 // scrolling stat list
317315 unsigned stat_index = 0;
0 /*
1 Copyright © 2012 Clint Bellanger
2 Copyright © 2012 davidriod
3 Copyright © 2012 Igor Paliychuk
4 Copyright © 2012 Stefan Beller
5 Copyright © 2013 Kurt Rinnert
6 Copyright © 2014 Henrik Andersson
7 Copyright © 2014-2016 Justin Jacobs
8
9 This file is part of FLARE.
10
11 FLARE is free software: you can redistribute it and/or modify it under the terms
12 of the GNU General Public License as published by the Free Software Foundation,
13 either version 3 of the License, or (at your option) any later version.
14
15 FLARE is distributed in the hope that it will be useful, but WITHOUT ANY
16 WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A
17 PARTICULAR PURPOSE. See the GNU General Public License for more details.
18
19 You should have received a copy of the GNU General Public License along with
20 FLARE. If not, see http://www.gnu.org/licenses/
21 */
22
23 /**
24 * MenuConfig
25 *
26 * Handle game Settings Menu
27 */
28
29 #include "Avatar.h"
30 #include "CombatText.h"
31 #include "CommonIncludes.h"
32 #include "DeviceList.h"
33 #include "EngineSettings.h"
34 #include "FileParser.h"
35 #include "FontEngine.h"
36 #include "GameStateTitle.h"
37 #include "InputState.h"
38 #include "MenuConfig.h"
39 #include "MenuConfirm.h"
40 #include "MessageEngine.h"
41 #include "ModManager.h"
42 #include "Platform.h"
43 #include "RenderDevice.h"
44 #include "Settings.h"
45 #include "SharedResources.h"
46 #include "SoundManager.h"
47 #include "Stats.h"
48 #include "TooltipManager.h"
49 #include "UtilsFileSystem.h"
50 #include "UtilsParsing.h"
51 #include "Version.h"
52 #include "WidgetButton.h"
53 #include "WidgetCheckBox.h"
54 #include "WidgetHorizontalList.h"
55 #include "WidgetListBox.h"
56 #include "WidgetSlider.h"
57 #include "WidgetScrollBox.h"
58 #include "WidgetTabControl.h"
59
60 MenuConfig::ConfigOption::ConfigOption()
61 : enabled(false)
62 , label(NULL)
63 , widget(NULL) {
64 }
65
66 MenuConfig::ConfigOption::~ConfigOption() {
67 }
68
69 MenuConfig::ConfigTab::ConfigTab()
70 : scrollbox(NULL)
71 , enabled_count(0) {
72 }
73
74 MenuConfig::ConfigTab::~ConfigTab() {
75 }
76
77 void MenuConfig::ConfigTab::setOptionWidgets(int index, WidgetLabel* lb, Widget* w, const std::string& lb_text) {
78 if (!options[index].enabled) {
79 options[index].enabled = true;
80 enabled_count++;
81 }
82 options[index].label = lb;
83 options[index].label->setText(lb_text);
84 options[index].widget = w;
85 options[index].widget->tablist_nav_right = true;
86 }
87
88 void MenuConfig::ConfigTab::setOptionEnabled(int index, bool enable) {
89 if (options[index].enabled && !enable) {
90 options[index].enabled = false;
91 if (enabled_count > 0)
92 enabled_count--;
93 }
94 else if (!options[index].enabled && enable) {
95 options[index].enabled = true;
96 enabled_count++;
97 }
98 }
99
100 int MenuConfig::ConfigTab::getEnabledIndex(int option_index) {
101 int r = -1;
102 for (size_t i = 0; i < options.size(); ++i) {
103 if (options[i].enabled)
104 r++;
105 if (i == static_cast<size_t>(option_index))
106 break;
107 }
108 return (r == -1 ? 0 : r);
109 }
110
111 MenuConfig::MenuConfig (bool _is_game_state)
112 : is_game_state(_is_game_state)
113 , enable_gamestate_buttons(false)
114 , hero(NULL)
115 , child_widget()
116 , tab_control(new WidgetTabControl())
117 , ok_button(new WidgetButton(WidgetButton::DEFAULT_FILE))
118 , defaults_button(new WidgetButton(WidgetButton::DEFAULT_FILE))
119 , cancel_button(new WidgetButton(WidgetButton::DEFAULT_FILE))
120 , background(NULL)
121 , input_confirm(new MenuConfirm(msg->get("Clear"),msg->get("Assign:")))
122 , defaults_confirm(new MenuConfirm(msg->get("Defaults"), msg->get("Reset ALL settings?")))
123
124 , pause_continue_lb(new WidgetLabel())
125 , pause_continue_btn(new WidgetButton(WidgetButton::DEFAULT_FILE))
126 , pause_exit_lb(new WidgetLabel())
127 , pause_exit_btn(new WidgetButton(WidgetButton::DEFAULT_FILE))
128 , pause_save_lb(new WidgetLabel())
129 , pause_save_btn(new WidgetButton(WidgetButton::DEFAULT_FILE))
130 , pause_time_lb(new WidgetLabel())
131 , pause_time_text(new WidgetLabel())
132
133 , renderer_lstb(new WidgetHorizontalList())
134 , renderer_lb(new WidgetLabel())
135 , fullscreen_cb(new WidgetCheckBox(WidgetCheckBox::DEFAULT_FILE))
136 , fullscreen_lb(new WidgetLabel())
137 , hwsurface_cb(new WidgetCheckBox(WidgetCheckBox::DEFAULT_FILE))
138 , hwsurface_lb(new WidgetLabel())
139 , vsync_cb(new WidgetCheckBox(WidgetCheckBox::DEFAULT_FILE))
140 , vsync_lb(new WidgetLabel())
141 , texture_filter_cb(new WidgetCheckBox(WidgetCheckBox::DEFAULT_FILE))
142 , texture_filter_lb(new WidgetLabel())
143 , dpi_scaling_cb(new WidgetCheckBox(WidgetCheckBox::DEFAULT_FILE))
144 , dpi_scaling_lb(new WidgetLabel())
145 , parallax_layers_cb(new WidgetCheckBox(WidgetCheckBox::DEFAULT_FILE))
146 , parallax_layers_lb(new WidgetLabel())
147 , change_gamma_cb(new WidgetCheckBox(WidgetCheckBox::DEFAULT_FILE))
148 , change_gamma_lb(new WidgetLabel())
149 , gamma_sl(new WidgetSlider(WidgetSlider::DEFAULT_FILE))
150 , gamma_lb(new WidgetLabel())
151
152 , music_volume_sl(new WidgetSlider(WidgetSlider::DEFAULT_FILE))
153 , music_volume_lb(new WidgetLabel())
154 , sound_volume_sl(new WidgetSlider(WidgetSlider::DEFAULT_FILE))
155 , sound_volume_lb(new WidgetLabel())
156
157 , show_fps_cb(new WidgetCheckBox(WidgetCheckBox::DEFAULT_FILE))
158 , show_fps_lb(new WidgetLabel())
159 , hardware_cursor_cb(new WidgetCheckBox(WidgetCheckBox::DEFAULT_FILE))
160 , hardware_cursor_lb(new WidgetLabel())
161 , colorblind_cb(new WidgetCheckBox(WidgetCheckBox::DEFAULT_FILE))
162 , colorblind_lb(new WidgetLabel())
163 , dev_mode_cb(new WidgetCheckBox(WidgetCheckBox::DEFAULT_FILE))
164 , dev_mode_lb(new WidgetLabel())
165 , subtitles_cb(new WidgetCheckBox(WidgetCheckBox::DEFAULT_FILE))
166 , subtitles_lb(new WidgetLabel())
167 , loot_tooltip_lstb(new WidgetHorizontalList())
168 , loot_tooltip_lb(new WidgetLabel())
169 , minimap_lstb(new WidgetHorizontalList())
170 , minimap_lb(new WidgetLabel())
171 , statbar_labels_cb(new WidgetCheckBox(WidgetCheckBox::DEFAULT_FILE))
172 , statbar_labels_lb(new WidgetLabel())
173 , statbar_autohide_cb(new WidgetCheckBox(WidgetCheckBox::DEFAULT_FILE))
174 , statbar_autohide_lb(new WidgetLabel())
175 , combat_text_cb(new WidgetCheckBox(WidgetCheckBox::DEFAULT_FILE))
176 , combat_text_lb(new WidgetLabel())
177 , auto_equip_cb(new WidgetCheckBox(WidgetCheckBox::DEFAULT_FILE))
178 , auto_equip_lb(new WidgetLabel())
179 , entity_markers_cb(new WidgetCheckBox(WidgetCheckBox::DEFAULT_FILE))
180 , entity_markers_lb(new WidgetLabel())
181 , low_hp_warning_lstb(new WidgetHorizontalList())
182 , low_hp_warning_lb(new WidgetLabel())
183 , low_hp_threshold_lstb(new WidgetHorizontalList())
184 , low_hp_threshold_lb(new WidgetLabel())
185 , item_compare_tips_cb(new WidgetCheckBox(WidgetCheckBox::DEFAULT_FILE))
186 , item_compare_tips_lb(new WidgetLabel())
187
188 , joystick_device_lstb(new WidgetHorizontalList())
189 , joystick_device_lb(new WidgetLabel())
190 , mouse_move_cb(new WidgetCheckBox(WidgetCheckBox::DEFAULT_FILE))
191 , mouse_move_lb(new WidgetLabel())
192 , mouse_aim_cb(new WidgetCheckBox(WidgetCheckBox::DEFAULT_FILE))
193 , mouse_aim_lb(new WidgetLabel())
194 , no_mouse_cb(new WidgetCheckBox(WidgetCheckBox::DEFAULT_FILE))
195 , no_mouse_lb(new WidgetLabel())
196 , mouse_move_swap_cb(new WidgetCheckBox(WidgetCheckBox::DEFAULT_FILE))
197 , mouse_move_swap_lb(new WidgetLabel())
198 , mouse_move_attack_cb(new WidgetCheckBox(WidgetCheckBox::DEFAULT_FILE))
199 , mouse_move_attack_lb(new WidgetLabel())
200 , joystick_deadzone_sl(new WidgetSlider(WidgetSlider::DEFAULT_FILE))
201 , joystick_deadzone_lb(new WidgetLabel())
202
203 , activemods_lstb(new WidgetListBox(10, WidgetListBox::DEFAULT_FILE))
204 , activemods_lb(new WidgetLabel())
205 , inactivemods_lstb(new WidgetListBox(10, WidgetListBox::DEFAULT_FILE))
206 , inactivemods_lb(new WidgetLabel())
207 , language_lstb(new WidgetHorizontalList())
208 , language_lb(new WidgetLabel())
209 , activemods_shiftup_btn(new WidgetButton("images/menus/buttons/up.png"))
210 , activemods_shiftdown_btn(new WidgetButton("images/menus/buttons/down.png"))
211 , activemods_deactivate_btn(new WidgetButton(WidgetButton::DEFAULT_FILE))
212 , inactivemods_activate_btn(new WidgetButton(WidgetButton::DEFAULT_FILE))
213
214 , active_tab(0)
215 , frame(0,0)
216 , frame_offset(11,8)
217 , tab_offset(3,0)
218 , scrollpane_color(0,0,0,0)
219 , scrollpane_padding(8, 40) // appropriate defaults for fantasycore widget sizes
220 , scrollpane_separator_color(font->getColor(FontEngine::COLOR_WIDGET_DISABLED))
221 , new_render_device(settings->render_device_name)
222 , input_confirm_timer(settings->max_frames_per_sec * 10) // 10 seconds
223 , input_key(0)
224 , key_count(0)
225 , keybind_tip_timer(settings->max_frames_per_sec * 5) // 5 seconds
226 , keybind_tip(new WidgetTooltip())
227 , clicked_accept(false)
228 , clicked_cancel(false)
229 , force_refresh_background(false)
230 , reload_music(false)
231 , clicked_pause_continue(false)
232 , clicked_pause_exit(false)
233 , clicked_pause_save(false)
234 {
235
236 Image *graphics;
237 graphics = render_device->loadImage("images/menus/config.png", RenderDevice::ERROR_NORMAL);
238 if (graphics) {
239 background = graphics->createSprite();
240 graphics->unref();
241 }
242
243 ok_button->setLabel(msg->get("OK"));
244 defaults_button->setLabel(msg->get("Defaults"));
245 cancel_button->setLabel(msg->get("Cancel"));
246
247 pause_continue_btn->setLabel(msg->get("Continue"));
248 setPauseExitText(MenuConfig::ENABLE_SAVE_GAME);
249 pause_save_btn->setLabel(msg->get("Save Game"));
250 setPauseSaveEnabled(MenuConfig::ENABLE_SAVE_GAME);
251 pause_time_text->setText(Utils::getTimeString(0));
252 pause_time_text->setJustify(FontEngine::JUSTIFY_RIGHT);
253 pause_time_text->setVAlign(LabelInfo::VALIGN_CENTER);
254
255 // Finish Mods ListBoxes setup
256 activemods_lstb->multi_select = true;
257 for (unsigned int i = 0; i < mods->mod_list.size() ; i++) {
258 if (mods->mod_list[i].name != mods->FALLBACK_MOD)
259 activemods_lstb->append(mods->mod_list[i].name,createModTooltip(&mods->mod_list[i]));
260 }
261
262 inactivemods_lstb->multi_select = true;
263 for (unsigned int i = 0; i<mods->mod_dirs.size(); i++) {
264 bool skip_mod = false;
265 for (unsigned int j = 0; j<mods->mod_list.size(); j++) {
266 if (mods->mod_dirs[i] == mods->mod_list[j].name) {
267 skip_mod = true;
268 break;
269 }
270 }
271 if (!skip_mod && mods->mod_dirs[i] != mods->FALLBACK_MOD) {
272 Mod temp_mod = mods->loadMod(mods->mod_dirs[i]);
273 inactivemods_lstb->append(mods->mod_dirs[i],createModTooltip(&temp_mod));
274 }
275 }
276 inactivemods_lstb->sort();
277
278 refreshJoysticks();
279
280 // Allocate KeyBindings
281 for (int i = 0; i < inpt->KEY_COUNT_USER * 3; i++) {
282 keybinds_lb.push_back(new WidgetLabel());
283 keybinds_btn.push_back(new WidgetButton(WidgetButton::DEFAULT_FILE));
284 }
285
286 key_count = static_cast<unsigned>(keybinds_btn.size()/3);
287
288 // don't allow remapping the primary Main1 binding
289 keybinds_btn[Input::MAIN1 * 3]->enabled = false;
290
291 // set up loot tooltip setting
292 loot_tooltip_lstb->append(msg->get("Default"), msg->get("Show all loot tooltips, except for those that would be obscured by the player or an enemy. Temporarily show all loot tooltips with 'Alt'."));
293 loot_tooltip_lstb->append(msg->get("Show all"), msg->get("Always show loot tooltips. Temporarily hide all loot tooltips with 'Alt'."));
294 loot_tooltip_lstb->append(msg->get("Hidden"), msg->get("Always hide loot tooltips, except for when a piece of loot is hovered with the mouse cursor. Temporarily show all loot tooltips with 'Alt'."));
295
296 // set up minimap setting
297 minimap_lstb->append(msg->get("Visible"), "");
298 minimap_lstb->append(msg->get("Visible (2x zoom)"), "");
299 minimap_lstb->append(msg->get("Hidden"), "");
300
301 // set up low hp notification type combinantions
302 std::string lhpw_prefix = msg->get("Controls the type of warning to be activated when the player is below the low health threshold.");
303 std::string lhpw_warning1 = msg->get("- Display a message");
304 std::string lhpw_warning2 = msg->get("- Play a sound");
305 std::string lhpw_warning3 = msg->get("- Change the cursor");
306
307 low_hp_warning_lstb->append(msg->get("Disabled"), lhpw_prefix);
308 low_hp_warning_lstb->append(msg->get("All"), lhpw_prefix + "\n\n" + lhpw_warning1 + '\n' + lhpw_warning2 + '\n' + lhpw_warning3);
309 low_hp_warning_lstb->append(msg->get("Message & Cursor"), lhpw_prefix + "\n\n" + lhpw_warning1 + '\n' + lhpw_warning3);
310 low_hp_warning_lstb->append(msg->get("Message & Sound"), lhpw_prefix + "\n\n" + lhpw_warning1 + '\n' + lhpw_warning2);
311 low_hp_warning_lstb->append(msg->get("Sound & Cursor"), lhpw_prefix + "\n\n" + lhpw_warning2 + '\n' + lhpw_warning3);
312 low_hp_warning_lstb->append(msg->get("Message"), lhpw_prefix + "\n\n" + lhpw_warning1);
313 low_hp_warning_lstb->append(msg->get("Cursor"), lhpw_prefix + "\n\n" + lhpw_warning3);
314 low_hp_warning_lstb->append(msg->get("Sound"), lhpw_prefix + "\n\n" + lhpw_warning2);
315
316 // set up low hp threshold combo
317 for (unsigned int i = 1; i <= 10 ; ++i) {
318 std::stringstream ss;
319 ss << i * 5;
320 low_hp_threshold_lstb->append(ss.str() + "%", msg->get("When the player's health drops below the given threshold, the low health notifications are triggered if one or more of them is enabled."));
321 }
322
323 init();
324
325 render_device->setBackgroundColor(Color(0,0,0,0));
326 }
327
328 MenuConfig::~MenuConfig() {
329 cleanup();
330 }
331
332 void MenuConfig::init() {
333 tab_control->setTabTitle(EXIT_TAB, msg->get("Exit"));
334 tab_control->setTabTitle(VIDEO_TAB, msg->get("Video"));
335 tab_control->setTabTitle(AUDIO_TAB, msg->get("Audio"));
336 tab_control->setTabTitle(INTERFACE_TAB, msg->get("Interface"));
337 tab_control->setTabTitle(INPUT_TAB, msg->get("Input"));
338 tab_control->setTabTitle(KEYBINDS_TAB, msg->get("Keybindings"));
339 tab_control->setTabTitle(MODS_TAB, msg->get("Mods"));
340
341 readConfig();
342
343 cfg_tabs.resize(6);
344 cfg_tabs[EXIT_TAB].options.resize(4);
345 cfg_tabs[VIDEO_TAB].options.resize(Platform::Video::COUNT);
346 cfg_tabs[AUDIO_TAB].options.resize(Platform::Audio::COUNT);
347 cfg_tabs[INTERFACE_TAB].options.resize(Platform::Interface::COUNT);
348 cfg_tabs[INPUT_TAB].options.resize(Platform::Input::COUNT);
349 cfg_tabs[KEYBINDS_TAB].options.resize(inpt->KEY_COUNT_USER * 3);
350
351 cfg_tabs[EXIT_TAB].setOptionWidgets(EXIT_OPTION_CONTINUE, pause_continue_lb, pause_continue_btn, msg->get("Paused"));
352 cfg_tabs[EXIT_TAB].setOptionWidgets(EXIT_OPTION_SAVE, pause_save_lb, pause_save_btn, "");
353 cfg_tabs[EXIT_TAB].setOptionWidgets(EXIT_OPTION_EXIT, pause_exit_lb, pause_exit_btn, "");
354 cfg_tabs[EXIT_TAB].setOptionWidgets(EXIT_OPTION_TIME_PLAYED, pause_time_lb, pause_time_text, msg->get("Time Played"));
355
356 if (!(MenuConfig::ENABLE_SAVE_GAME && eset->misc.save_anywhere)) {
357 cfg_tabs[EXIT_TAB].setOptionEnabled(EXIT_OPTION_SAVE, false);
358 }
359
360 cfg_tabs[VIDEO_TAB].setOptionWidgets(Platform::Video::RENDERER, renderer_lb, renderer_lstb, msg->get("Renderer"));
361 cfg_tabs[VIDEO_TAB].setOptionWidgets(Platform::Video::FULLSCREEN, fullscreen_lb, fullscreen_cb, msg->get("Full Screen Mode"));
362 cfg_tabs[VIDEO_TAB].setOptionWidgets(Platform::Video::HWSURFACE, hwsurface_lb, hwsurface_cb, msg->get("Hardware surfaces"));
363 cfg_tabs[VIDEO_TAB].setOptionWidgets(Platform::Video::VSYNC, vsync_lb, vsync_cb, msg->get("V-Sync"));
364 cfg_tabs[VIDEO_TAB].setOptionWidgets(Platform::Video::TEXTURE_FILTER, texture_filter_lb, texture_filter_cb, msg->get("Texture Filtering"));
365 cfg_tabs[VIDEO_TAB].setOptionWidgets(Platform::Video::DPI_SCALING, dpi_scaling_lb, dpi_scaling_cb, msg->get("DPI scaling"));
366 cfg_tabs[VIDEO_TAB].setOptionWidgets(Platform::Video::PARALLAX_LAYERS, parallax_layers_lb, parallax_layers_cb, msg->get("Parallax Layers"));
367 cfg_tabs[VIDEO_TAB].setOptionWidgets(Platform::Video::ENABLE_GAMMA, change_gamma_lb, change_gamma_cb, msg->get("Allow changing gamma"));
368 cfg_tabs[VIDEO_TAB].setOptionWidgets(Platform::Video::GAMMA, gamma_lb, gamma_sl, msg->get("Gamma"));
369
370 cfg_tabs[AUDIO_TAB].setOptionWidgets(Platform::Audio::SFX, sound_volume_lb, sound_volume_sl, msg->get("Sound Volume"));
371 cfg_tabs[AUDIO_TAB].setOptionWidgets(Platform::Audio::MUSIC, music_volume_lb, music_volume_sl, msg->get("Music Volume"));
372
373 cfg_tabs[INTERFACE_TAB].setOptionWidgets(Platform::Interface::LANGUAGE, language_lb, language_lstb, msg->get("Language"));
374 cfg_tabs[INTERFACE_TAB].setOptionWidgets(Platform::Interface::SHOW_FPS, show_fps_lb, show_fps_cb, msg->get("Show FPS"));
375 cfg_tabs[INTERFACE_TAB].setOptionWidgets(Platform::Interface::HARDWARE_CURSOR, hardware_cursor_lb, hardware_cursor_cb, msg->get("Hardware mouse cursor"));
376 cfg_tabs[INTERFACE_TAB].setOptionWidgets(Platform::Interface::COLORBLIND, colorblind_lb, colorblind_cb, msg->get("Colorblind Mode"));
377 cfg_tabs[INTERFACE_TAB].setOptionWidgets(Platform::Interface::DEV_MODE, dev_mode_lb, dev_mode_cb, msg->get("Developer Mode"));
378 cfg_tabs[INTERFACE_TAB].setOptionWidgets(Platform::Interface::SUBTITLES, subtitles_lb, subtitles_cb, msg->get("Subtitles"));
379 cfg_tabs[INTERFACE_TAB].setOptionWidgets(Platform::Interface::LOOT_TOOLTIPS, loot_tooltip_lb, loot_tooltip_lstb, msg->get("Loot tooltip visibility"));
380 cfg_tabs[INTERFACE_TAB].setOptionWidgets(Platform::Interface::MINIMAP_MODE, minimap_lb, minimap_lstb, msg->get("Mini-map mode"));
381 cfg_tabs[INTERFACE_TAB].setOptionWidgets(Platform::Interface::STATBAR_LABELS, statbar_labels_lb, statbar_labels_cb, msg->get("Always show stat bar labels"));
382 cfg_tabs[INTERFACE_TAB].setOptionWidgets(Platform::Interface::STATBAR_AUTOHIDE, statbar_autohide_lb, statbar_autohide_cb, msg->get("Allow stat bar auto-hiding"));
383 cfg_tabs[INTERFACE_TAB].setOptionWidgets(Platform::Interface::COMBAT_TEXT, combat_text_lb, combat_text_cb, msg->get("Show combat text"));
384 cfg_tabs[INTERFACE_TAB].setOptionWidgets(Platform::Interface::AUTO_EQUIP, auto_equip_lb, auto_equip_cb, msg->get("Automatically equip items"));
385 cfg_tabs[INTERFACE_TAB].setOptionWidgets(Platform::Interface::ENTITY_MARKERS, entity_markers_lb, entity_markers_cb, msg->get("Show hidden entity markers"));
386 cfg_tabs[INTERFACE_TAB].setOptionWidgets(Platform::Interface::LOW_HP_WARNING_TYPE, low_hp_warning_lb, low_hp_warning_lstb, msg->get("Low health notification"));
387 cfg_tabs[INTERFACE_TAB].setOptionWidgets(Platform::Interface::LOW_HP_THRESHOLD, low_hp_threshold_lb, low_hp_threshold_lstb, msg->get("Low health threshold"));
388 cfg_tabs[INTERFACE_TAB].setOptionWidgets(Platform::Interface::ITEM_COMPARE_TIPS, item_compare_tips_lb, item_compare_tips_cb, msg->get("Show item comparison tooltips"));
389
390
391 cfg_tabs[INPUT_TAB].setOptionWidgets(Platform::Input::JOYSTICK, joystick_device_lb, joystick_device_lstb, msg->get("Joystick"));
392 cfg_tabs[INPUT_TAB].setOptionWidgets(Platform::Input::MOUSE_MOVE, mouse_move_lb, mouse_move_cb, msg->get("Move hero using mouse"));
393 cfg_tabs[INPUT_TAB].setOptionWidgets(Platform::Input::MOUSE_AIM, mouse_aim_lb, mouse_aim_cb, msg->get("Mouse aim"));
394 cfg_tabs[INPUT_TAB].setOptionWidgets(Platform::Input::NO_MOUSE, no_mouse_lb, no_mouse_cb, msg->get("Do not use mouse"));
395 cfg_tabs[INPUT_TAB].setOptionWidgets(Platform::Input::MOUSE_MOVE_SWAP, mouse_move_swap_lb, mouse_move_swap_cb, msg->get("Swap mouse movement button"));
396 cfg_tabs[INPUT_TAB].setOptionWidgets(Platform::Input::MOUSE_MOVE_ATTACK, mouse_move_attack_lb, mouse_move_attack_cb, msg->get("Attack with mouse movement"));
397 cfg_tabs[INPUT_TAB].setOptionWidgets(Platform::Input::JOYSTICK_DEADZONE, joystick_deadzone_lb, joystick_deadzone_sl, msg->get("Joystick Deadzone"));
398
399
400 for (size_t i = 0; i < keybinds_btn.size(); ++i) {
401 if (i % 3 == 0) {
402 cfg_tabs[KEYBINDS_TAB].setOptionWidgets(static_cast<int>(i), keybinds_lb[i], keybinds_btn[i], inpt->binding_name[i/3]);
403 // TODO since these are blank, don't allocate?
404 cfg_tabs[KEYBINDS_TAB].setOptionWidgets(static_cast<int>(i+1), keybinds_lb[i+1], keybinds_btn[i+1], "");
405 cfg_tabs[KEYBINDS_TAB].setOptionWidgets(static_cast<int>(i+2), keybinds_lb[i+2], keybinds_btn[i+2], "");
406
407 keybinds_btn[i]->tooltip = msg->get("Primary binding: %s", inpt->binding_name[i/3].c_str());
408 keybinds_btn[i+1]->tooltip = msg->get("Alternate binding: %s", inpt->binding_name[i/3].c_str());
409 keybinds_btn[i+2]->tooltip = msg->get("Joystick binding: %s", inpt->binding_name[i/3].c_str());
410 }
411 }
412
413 // disable some options
414 if (!is_game_state) {
415 cfg_tabs[VIDEO_TAB].setOptionEnabled(Platform::Video::RENDERER, false);
416 cfg_tabs[VIDEO_TAB].setOptionEnabled(Platform::Video::HWSURFACE, false);
417 cfg_tabs[VIDEO_TAB].setOptionEnabled(Platform::Video::VSYNC, false);
418 cfg_tabs[VIDEO_TAB].setOptionEnabled(Platform::Video::TEXTURE_FILTER, false);
419
420 cfg_tabs[INTERFACE_TAB].setOptionEnabled(Platform::Interface::LANGUAGE, false);
421 cfg_tabs[INTERFACE_TAB].setOptionEnabled(Platform::Interface::DEV_MODE, false);
422
423 tab_control->setEnabled(static_cast<unsigned>(MODS_TAB), false);
424 tab_control->setEnabled(static_cast<unsigned>(EXIT_TAB), true);
425 enable_gamestate_buttons = false;
426 }
427 else {
428 cfg_tabs[EXIT_TAB].setOptionEnabled(EXIT_OPTION_CONTINUE, false);
429 cfg_tabs[EXIT_TAB].setOptionEnabled(EXIT_OPTION_SAVE, false);
430 cfg_tabs[EXIT_TAB].setOptionEnabled(EXIT_OPTION_EXIT, false);
431 cfg_tabs[EXIT_TAB].setOptionEnabled(EXIT_OPTION_TIME_PLAYED, false);
432 tab_control->setEnabled(static_cast<unsigned>(EXIT_TAB), false);
433 enable_gamestate_buttons = true;
434 }
435
436 // disable platform-specific options
437 for (int i = 0; i < Platform::Video::COUNT; ++i) {
438 if (!platform.config_video[i])
439 cfg_tabs[VIDEO_TAB].setOptionEnabled(i, false);
440 }
441 for (int i = 0; i < Platform::Audio::COUNT; ++i) {
442 if (!platform.config_audio[i])
443 cfg_tabs[AUDIO_TAB].setOptionEnabled(i, false);
444 }
445 for (int i = 0; i < Platform::Interface::COUNT; ++i) {
446 if (!platform.config_interface[i])
447 cfg_tabs[INTERFACE_TAB].setOptionEnabled(i, false);
448 }
449 for (int i = 0; i < Platform::Input::COUNT; ++i) {
450 if (!platform.config_input[i])
451 cfg_tabs[INPUT_TAB].setOptionEnabled(i, false);
452 }
453 if (!platform.config_misc[Platform::Misc::KEYBINDS]) {
454 for (size_t i = 0; i < keybinds_btn.size(); ++i) {
455 cfg_tabs[KEYBINDS_TAB].setOptionEnabled(static_cast<int>(i), false);
456 }
457 }
458 if (!platform.config_misc[Platform::Misc::MODS]) {
459 tab_control->setEnabled(static_cast<unsigned>(MODS_TAB), false);
460 }
461
462 // place widgets
463 for (size_t i = 0; i < cfg_tabs.size(); ++i) {
464 if (cfg_tabs[i].enabled_count == 0) {
465 tab_control->setEnabled(static_cast<unsigned>(i), false);
466 }
467
468 // set up scrollbox
469 cfg_tabs[i].scrollbox = new WidgetScrollBox(scrollpane.w, scrollpane.h);
470 cfg_tabs[i].scrollbox->setBasePos(scrollpane.x, scrollpane.y, Utils::ALIGN_TOPLEFT);
471 cfg_tabs[i].scrollbox->bg = scrollpane_color;
472 cfg_tabs[i].scrollbox->resize(scrollpane.w, cfg_tabs[i].enabled_count * scrollpane_padding.y);
473
474 for (size_t j = 0; j < cfg_tabs[i].options.size(); ++j) {
475 placeLabeledWidgetAuto(static_cast<int>(i), static_cast<int>(j));
476 }
477 }
478
479 addChildWidgets();
480 setupTabList();
481
482 refreshWidgets();
483
484 update();
485 }
486
487 void MenuConfig::readConfig() {
488 //Load the menu configuration from file
489
490 FileParser infile;
491 if (infile.open("menus/config.txt", FileParser::MOD_FILE, FileParser::ERROR_NORMAL)) {
492 while (infile.next()) {
493 if (parseKeyButtons(infile))
494 continue;
495
496 int x1 = Parse::popFirstInt(infile.val);
497 int y1 = Parse::popFirstInt(infile.val);
498 int x2 = Parse::popFirstInt(infile.val);
499 int y2 = Parse::popFirstInt(infile.val);
500
501 if (parseKey(infile, x1, y1, x2, y2))
502 continue;
503 else
504 infile.error("MenuConfig: '%s' is not a valid key.", infile.key.c_str());
505 }
506 infile.close();
507 }
508
509 // add description tooltips
510 hwsurface_cb->tooltip = msg->get("Will try to store surfaces in video memory versus system memory. The effect this has on performance depends on the renderer.");
511 vsync_cb->tooltip = msg->get("Prevents screen tearing. Disable if you experience \"stuttering\" in windowed mode or input lag.");
512 dpi_scaling_cb->tooltip = msg->get("When enabled, this uses the screen DPI in addition to the window dimensions to scale the rendering resolution. Otherwise, only the window dimensions are used.");
513 parallax_layers_cb->tooltip = msg->get("This enables parallax (non-tile) layers. Disabling this setting can improve performance in some cases.");
514 change_gamma_cb->tooltip = msg->get("Enables the below setting that controls the screen gamma level. The behavior of the gamma setting can vary between platforms.");
515 colorblind_cb->tooltip = msg->get("Provides additional text for information that is primarily conveyed through color.");
516 statbar_autohide_cb->tooltip = msg->get("Some mods will automatically hide the stat bars when they are inactive. Disabling this option will keep them displayed at all times.");
517 auto_equip_cb->tooltip = msg->get("When enabled, empty equipment slots will be filled with applicable items when they are obtained.");
518 entity_markers_cb->tooltip = msg->get("Shows a marker above enemies, allies, and the player when they are obscured by tall objects.");
519 item_compare_tips_cb->tooltip = msg->get("When enabled, tooltips for equipped items of the same type are shown next to standard item tooltips.");
520 no_mouse_cb->tooltip = msg->get("This allows the game to be controlled entirely with the keyboard (or joystick).");
521 mouse_move_swap_cb->tooltip = msg->get("When 'Move hero using mouse' is enabled, this setting controls if 'Main1' or 'Main2' is used to move the hero. If enabled, 'Main2' will move the hero instead of 'Main1'.");
522 mouse_move_attack_cb->tooltip = msg->get("When 'Move hero using mouse' is enabled, this setting controls if the Power assigned to the movement button can be used by targeting an enemy. If this setting is disabled, it is required to use 'Shift' to access the Power assigned to the movement button.");
523 mouse_aim_cb->tooltip = msg->get("The player's attacks will be aimed in the direction of the mouse cursor when this is enabled.");
524 }
525
526 bool MenuConfig::parseKeyButtons(FileParser &infile) {
527 // @CLASS MenuConfig|Description of menus/config.txt
528
529 if (infile.key == "button_ok") {
530 // @ATTR button_ok|int, int, alignment : X, Y, Alignment|Position of the "OK" button. Not used in the pause menu.
531 int x = Parse::popFirstInt(infile.val);
532 int y = Parse::popFirstInt(infile.val);
533 int a = Parse::toAlignment(Parse::popFirstString(infile.val));
534 ok_button->setBasePos(x, y, a);
535 }
536 else if (infile.key == "button_defaults") {
537 // @ATTR button_defaults|int, int, alignment : X, Y, Alignment|Position of the "Defaults" button. Not used in the pause menu.
538 int x = Parse::popFirstInt(infile.val);
539 int y = Parse::popFirstInt(infile.val);
540 int a = Parse::toAlignment(Parse::popFirstString(infile.val));
541 defaults_button->setBasePos(x, y, a);
542 }
543 else if (infile.key == "button_cancel") {
544 // @ATTR button_cancel|int, int, alignment : X, Y, Alignment|Position of the "Cancel" button. Not used in the pause menu.
545 int x = Parse::popFirstInt(infile.val);
546 int y = Parse::popFirstInt(infile.val);
547 int a = Parse::toAlignment(Parse::popFirstString(infile.val));
548 cancel_button->setBasePos(x, y, a);
549 }
550 else {
551 return false;
552 }
553
554 return true;
555 }
556 bool MenuConfig::parseKey(FileParser &infile, int &x1, int &y1, int &x2, int &y2) {
557 if (infile.key == "listbox_scrollbar_offset") {
558 // @ATTR listbox_scrollbar_offset|int|Horizontal offset from the right of listboxes (mods, languages, etc) to place the scrollbar.
559 activemods_lstb->scrollbar_offset = x1;
560 inactivemods_lstb->scrollbar_offset = x1;
561 }
562 else if (infile.key == "frame_offset") {
563 // @ATTR frame_offset|point|Offset for all the widgets contained under each tab.
564 frame_offset.x = x1;
565 frame_offset.y = y1;
566 }
567 else if (infile.key == "tab_offset") {
568 // @ATTR tab_offset|point|Offset for the row of tabs.
569 tab_offset.x = x1;
570 tab_offset.y = y1;
571 }
572 else if (infile.key == "activemods") {
573 // @ATTR activemods|int, int, int, int : Label X, Label Y, Widget X, Widget Y|Position of the "Active Mods" list box relative to the frame.
574 placeLabeledWidget(activemods_lb, activemods_lstb, x1, y1, x2, y2, msg->get("Active Mods"));
575 activemods_lb->setJustify(FontEngine::JUSTIFY_CENTER);
576 }
577 else if (infile.key == "activemods_height") {
578 // @ATTR activemods_height|int|Number of visible rows for the "Active Mods" list box.
579 activemods_lstb->setHeight(x1);
580 }
581 else if (infile.key == "inactivemods") {
582 // @ATTR inactivemods|int, int, int, int : Label X, Label Y, Widget X, Widget Y|Position of the "Available Mods" list box relative to the frame.
583 placeLabeledWidget(inactivemods_lb, inactivemods_lstb, x1, y1, x2, y2, msg->get("Available Mods"));
584 inactivemods_lb->setJustify(FontEngine::JUSTIFY_CENTER);
585 }
586 else if (infile.key == "inactivemods_height") {
587 // @ATTR inactivemods_height|int|Number of visible rows for the "Available Mods" list box.
588 inactivemods_lstb->setHeight(x1);
589 }
590 else if (infile.key == "activemods_shiftup") {
591 // @ATTR activemods_shiftup|point|Position of the button to shift mods up in "Active Mods" relative to the frame.
592 activemods_shiftup_btn->setBasePos(x1, y1, Utils::ALIGN_TOPLEFT);
593 activemods_shiftup_btn->refresh();
594 }
595 else if (infile.key == "activemods_shiftdown") {
596 // @ATTR activemods_shiftdown|point|Position of the button to shift mods down in "Active Mods" relative to the frame.
597 activemods_shiftdown_btn->setBasePos(x1, y1, Utils::ALIGN_TOPLEFT);
598 activemods_shiftdown_btn->refresh();
599 }
600 else if (infile.key == "activemods_deactivate") {
601 // @ATTR activemods_deactivate|point|Position of the "Disable" button relative to the frame.
602 activemods_deactivate_btn->setLabel(msg->get("<< Disable"));
603 activemods_deactivate_btn->setBasePos(x1, y1, Utils::ALIGN_TOPLEFT);
604 activemods_deactivate_btn->refresh();
605 }
606 else if (infile.key == "inactivemods_activate") {
607 // @ATTR inactivemods_activate|point|Position of the "Enable" button relative to the frame.
608 inactivemods_activate_btn->setLabel(msg->get("Enable >>"));
609 inactivemods_activate_btn->setBasePos(x1, y1, Utils::ALIGN_TOPLEFT);
610 inactivemods_activate_btn->refresh();
611 }
612 else if (infile.key == "scrollpane") {
613 // @ATTR scrollpane|rectangle|Position of the keybinding scrollbox relative to the frame.
614 scrollpane.x = x1;
615 scrollpane.y = y1;
616 scrollpane.w = x2;
617 scrollpane.h = y2;
618 }
619 else if (infile.key == "scrollpane_padding") {
620 // @ATTR scrollpane_padding|int, int : Horizontal padding, Vertical padding|Pixel padding for each item listed in a tab's scroll box.
621 scrollpane_padding.x = x1;
622 scrollpane_padding.y = y1;
623 }
624 else if (infile.key == "scrollpane_separator_color") {
625 // @ATTR scrollpane_separator_color|color|Color of the separator line in between scroll box items.
626 scrollpane_separator_color.r = static_cast<Uint8>(x1);
627 scrollpane_separator_color.g = static_cast<Uint8>(y1);
628 scrollpane_separator_color.b = static_cast<Uint8>(x2);
629 }
630 else if (infile.key == "scrollpane_bg_color") {
631 // @ATTR keybinds_bg_color|color, int: Color, Alpha|Background color and alpha for the keybindings scrollbox.
632 scrollpane_color.r = static_cast<Uint8>(x1);
633 scrollpane_color.g = static_cast<Uint8>(y1);
634 scrollpane_color.b = static_cast<Uint8>(x2);
635 scrollpane_color.a = static_cast<Uint8>(y2);
636 }
637
638 else return false;
639
640 return true;
641 }
642
643 void MenuConfig::addChildWidgets() {
644 for (size_t i = 0; i < cfg_tabs.size(); ++i) {
645 for (size_t j = 0; j < cfg_tabs[i].options.size(); ++j) {
646 if (cfg_tabs[i].options[j].enabled) {
647 cfg_tabs[i].scrollbox->addChildWidget(cfg_tabs[i].options[j].widget);
648 cfg_tabs[i].scrollbox->addChildWidget(cfg_tabs[i].options[j].label);
649 }
650
651 // only for memory management
652 addChildWidget(cfg_tabs[i].options[j].widget, NO_TAB);
653 addChildWidget(cfg_tabs[i].options[j].label, NO_TAB);
654 }
655 }
656
657 addChildWidget(activemods_lstb, MODS_TAB);
658 addChildWidget(activemods_lb, MODS_TAB);
659 addChildWidget(inactivemods_lstb, MODS_TAB);
660 addChildWidget(inactivemods_lb, MODS_TAB);
661 addChildWidget(activemods_shiftup_btn, MODS_TAB);
662 addChildWidget(activemods_shiftdown_btn, MODS_TAB);
663 addChildWidget(activemods_deactivate_btn, MODS_TAB);
664 addChildWidget(inactivemods_activate_btn, MODS_TAB);
665 }
666
667 void MenuConfig::setupTabList() {
668 tablist.add(tab_control);
669 tablist.setPrevTabList(&tablist_main);
670
671 if (enable_gamestate_buttons) {
672 tablist_main.add(ok_button);
673 tablist_main.add(defaults_button);
674 tablist_main.add(cancel_button);
675 }
676 tablist_main.setPrevTabList(&tablist);
677 tablist_main.setNextTabList(&tablist);
678 tablist_main.lock();
679
680 tablist_exit.setScrollType(Widget::SCROLL_VERTICAL);
681 tablist_exit.add(cfg_tabs[EXIT_TAB].scrollbox);
682 tablist_exit.setPrevTabList(&tablist);
683 tablist_exit.setNextTabList(&tablist_main);
684 tablist_exit.lock();
685
686 tablist_video.setScrollType(Widget::SCROLL_VERTICAL);
687 tablist_video.add(cfg_tabs[VIDEO_TAB].scrollbox);
688 tablist_video.setPrevTabList(&tablist);
689 tablist_video.setNextTabList(&tablist_main);
690 tablist_video.lock();
691
692 tablist_audio.setScrollType(Widget::SCROLL_VERTICAL);
693 tablist_audio.add(cfg_tabs[AUDIO_TAB].scrollbox);
694 tablist_audio.setPrevTabList(&tablist);
695 tablist_audio.setNextTabList(&tablist_main);
696 tablist_audio.lock();
697
698 tablist_interface.setScrollType(Widget::SCROLL_VERTICAL);
699 tablist_interface.add(cfg_tabs[INTERFACE_TAB].scrollbox);
700 tablist_interface.setPrevTabList(&tablist);
701 tablist_interface.setNextTabList(&tablist_main);
702 tablist_interface.lock();
703
704 tablist_input.setScrollType(Widget::SCROLL_VERTICAL);
705 tablist_input.add(cfg_tabs[INPUT_TAB].scrollbox);
706 tablist_input.setPrevTabList(&tablist);
707 tablist_input.setNextTabList(&tablist_main);
708 tablist_input.lock();
709
710 tablist_keybinds.setScrollType(Widget::SCROLL_VERTICAL);
711 tablist_keybinds.add(cfg_tabs[KEYBINDS_TAB].scrollbox);
712 tablist_keybinds.setPrevTabList(&tablist);
713 tablist_keybinds.setNextTabList(&tablist_main);
714 tablist_keybinds.lock();
715
716 tablist_mods.add(inactivemods_lstb);
717 tablist_mods.add(activemods_lstb);
718 tablist_mods.add(inactivemods_activate_btn);
719 tablist_mods.add(activemods_deactivate_btn);
720 tablist_mods.add(activemods_shiftup_btn);
721 tablist_mods.add(activemods_shiftdown_btn);
722 tablist_mods.setPrevTabList(&tablist);
723 tablist_mods.setNextTabList(&tablist_main);
724 tablist_mods.lock();
725 }
726
727 void MenuConfig::update() {
728 updateVideo();
729 updateAudio();
730 updateInterface();
731 updateInput();
732 updateKeybinds();
733 updateMods();
734 }
735
736 void MenuConfig::updateVideo() {
737 fullscreen_cb->setChecked(settings->fullscreen);
738 hwsurface_cb->setChecked(settings->hwsurface);
739 vsync_cb->setChecked(settings->vsync);
740 texture_filter_cb->setChecked(settings->texture_filter);
741 dpi_scaling_cb->setChecked(settings->dpi_scaling);
742 parallax_layers_cb->setChecked(settings->parallax_layers);
743 change_gamma_cb->setChecked(settings->change_gamma);
744
745 if (settings->change_gamma) {
746 render_device->setGamma(settings->gamma);
747 }
748 else {
749 settings->gamma = 1.0;
750 gamma_sl->enabled = false;
751 render_device->resetGamma();
752 }
753 gamma_sl->set(GAMMA_MIN, GAMMA_MAX, static_cast<int>(settings->gamma * 10.0));
754
755 refreshRenderers();
756
757 cfg_tabs[VIDEO_TAB].scrollbox->refresh();
758 }
759
760 void MenuConfig::updateAudio() {
761 if (settings->audio) {
762 music_volume_sl->set(0, 128, settings->music_volume);
763 snd->setVolumeMusic(settings->music_volume);
764 sound_volume_sl->set(0, 128, settings->sound_volume);
765 snd->setVolumeSFX(settings->sound_volume);
766 }
767 else {
768 music_volume_sl->set(0,128,0);
769 sound_volume_sl->set(0,128,0);
770 }
771
772 cfg_tabs[AUDIO_TAB].scrollbox->refresh();
773 }
774
775 void MenuConfig::updateInterface() {
776 show_fps_cb->setChecked(settings->show_fps);
777 colorblind_cb->setChecked(settings->colorblind);
778 hardware_cursor_cb->setChecked(settings->hardware_cursor);
779 dev_mode_cb->setChecked(settings->dev_mode);
780 subtitles_cb->setChecked(settings->subtitles);
781 statbar_labels_cb->setChecked(settings->statbar_labels);
782 statbar_autohide_cb->setChecked(settings->statbar_autohide);
783 combat_text_cb->setChecked(settings->combat_text);
784 auto_equip_cb->setChecked(settings->auto_equip);
785 entity_markers_cb->setChecked(settings->entity_markers);
786 low_hp_warning_lstb->select(settings->low_hp_warning_type);
787 low_hp_threshold_lstb->select((settings->low_hp_threshold/5)-1);
788 item_compare_tips_cb->setChecked(settings->item_compare_tips);
789
790 loot_tooltip_lstb->select(settings->loot_tooltips);
791 minimap_lstb->select(settings->minimap_mode);
792
793 refreshLanguages();
794
795 cfg_tabs[INTERFACE_TAB].scrollbox->refresh();
796 }
797
798 void MenuConfig::updateInput() {
799 mouse_aim_cb->setChecked(settings->mouse_aim);
800 no_mouse_cb->setChecked(settings->no_mouse);
801 mouse_move_cb->setChecked(settings->mouse_move);
802 mouse_move_swap_cb->setChecked(settings->mouse_move_swap);
803 mouse_move_attack_cb->setChecked(settings->mouse_move_attack);
804
805 if (settings->enable_joystick && inpt->getNumJoysticks() > 0) {
806 inpt->initJoystick();
807 joystick_device_lstb->select(settings->joystick_device + 1);
808 }
809
810 joystick_deadzone_sl->set(0, 32768, settings->joy_deadzone);
811
812 cfg_tabs[INPUT_TAB].scrollbox->refresh();
813 }
814
815 void MenuConfig::updateKeybinds() {
816 // now do labels for keybinds that are set
817 for (unsigned int i = 0; i < keybinds_btn.size(); i++) {
818 if (i % 3 == 0) {
819 keybinds_btn[i]->setLabel(inpt->getBindingString(i/3));
820 keybinds_btn[i+1]->setLabel(inpt->getBindingString(i/3, InputState::BINDING_ALT));
821 keybinds_btn[i+2]->setLabel(inpt->getBindingString(i/3, InputState::BINDING_JOYSTICK));
822
823 keybinds_btn[i]->refresh();
824 keybinds_btn[i+1]->refresh();
825 keybinds_btn[i+2]->refresh();
826 }
827 }
828 cfg_tabs[KEYBINDS_TAB].scrollbox->refresh();
829 }
830
831 void MenuConfig::updateMods() {
832 activemods_lstb->refresh();
833 inactivemods_lstb->refresh();
834 }
835
836 void MenuConfig::logic() {
837 if (inpt->window_resized)
838 refreshWidgets();
839
840 if (defaults_confirm->visible) {
841 // reset defaults confirmation
842 logicDefaults();
843 return;
844 }
845 else if (input_confirm->visible) {
846 // assign a keybind
847 input_confirm->logic();
848 scanKey(input_key);
849 input_confirm_timer.tick();
850 if (input_confirm_timer.isEnd())
851 input_confirm->visible = false;
852 return;
853 }
854 else {
855 if (!logicMain())
856 return;
857 }
858
859 // tab contents
860 active_tab = tab_control->getActiveTab();
861
862 if (active_tab == EXIT_TAB) {
863 if (hero) {
864 pause_time_text->setText(Utils::getTimeString(hero->time_played));
865 }
866 tablist.setNextTabList(&tablist_exit);
867 logicExit();
868 }
869 if (active_tab == VIDEO_TAB) {
870 tablist.setNextTabList(&tablist_video);
871 logicVideo();
872 }
873 else if (active_tab == AUDIO_TAB) {
874 tablist.setNextTabList(&tablist_audio);
875 logicAudio();
876 }
877 else if (active_tab == INTERFACE_TAB) {
878 tablist.setNextTabList(&tablist_interface);
879 logicInterface();
880
881 // TODO remove this?
882 if (platform.force_hardware_cursor) {
883 // for some platforms, hardware mouse cursor can not be turned off
884 settings->hardware_cursor = true;
885 hardware_cursor_cb->setChecked(settings->hardware_cursor);
886 }
887 }
888 else if (active_tab == INPUT_TAB) {
889 tablist.setNextTabList(&tablist_input);
890 logicInput();
891 }
892 else if (active_tab == KEYBINDS_TAB) {
893 tablist.setNextTabList(&tablist_keybinds);
894 logicKeybinds();
895 }
896 else if (active_tab == MODS_TAB) {
897 tablist.setNextTabList(&tablist_mods);
898 logicMods();
899 }
900 }
901
902 bool MenuConfig::logicMain() {
903 for (unsigned int i = 0; i < child_widget.size(); i++) {
904 if (child_widget[i]->in_focus && optiontab[i] != NO_TAB) {
905 tab_control->setActiveTab(optiontab[i]);
906 break;
907 }
908 }
909
910 // tabs & the bottom 3 main buttons
911 tab_control->logic();
912 tablist.logic();
913 tablist_main.logic();
914 tablist_exit.logic();
915 tablist_video.logic();
916 tablist_audio.logic();
917 tablist_interface.logic();
918 tablist_input.logic();
919 tablist_keybinds.logic();
920 tablist_mods.logic();
921
922 if (enable_gamestate_buttons) {
923 // Ok/Cancel Buttons
924 if (ok_button->checkClick()) {
925 clicked_accept = true;
926
927 // MenuConfig deconstructed, proceed with caution
928 return false;
929 }
930 else if (defaults_button->checkClick()) {
931 defaults_confirm->visible = true;
932 return true;
933 }
934 else if (cancel_button->checkClick() || (inpt->pressing[Input::CANCEL] && !inpt->lock[Input::CANCEL])) {
935 clicked_cancel = true;
936
937 // MenuConfig deconstructed, proceed with caution
938 return false;
939 }
940 }
941
942 return true;
943 }
944
945 void MenuConfig::logicDefaults() {
946 defaults_confirm->logic();
947 if (defaults_confirm->confirmClicked) {
948 settings->fullscreen = false;
949 settings->loadDefaults();
950 eset->load();
951 inpt->defaultQwertyKeyBindings();
952 inpt->defaultJoystickBindings();
953 update();
954 render_device->windowResize();
955 defaults_confirm->visible = false;
956 defaults_confirm->confirmClicked = false;
957 }
958 }
959
960 void MenuConfig::logicExit() {
961 cfg_tabs[EXIT_TAB].scrollbox->logic();
962 Point mouse = cfg_tabs[EXIT_TAB].scrollbox->input_assist(inpt->mouse);
963
964 if (cfg_tabs[EXIT_TAB].options[EXIT_OPTION_CONTINUE].enabled && pause_continue_btn->checkClickAt(mouse.x, mouse.y)) {
965 clicked_pause_continue = true;
966 }
967 else if (cfg_tabs[EXIT_TAB].options[EXIT_OPTION_SAVE].enabled && pause_save_btn->checkClickAt(mouse.x, mouse.y)) {
968 clicked_pause_save = true;
969 }
970 else if (cfg_tabs[EXIT_TAB].options[EXIT_OPTION_EXIT].enabled && pause_exit_btn->checkClickAt(mouse.x, mouse.y)) {
971 clicked_pause_exit = true;
972 }
973 }
974
975 void MenuConfig::logicVideo() {
976 cfg_tabs[VIDEO_TAB].scrollbox->logic();
977 Point mouse = cfg_tabs[VIDEO_TAB].scrollbox->input_assist(inpt->mouse);
978
979 if (cfg_tabs[VIDEO_TAB].options[Platform::Video::FULLSCREEN].enabled && fullscreen_cb->checkClickAt(mouse.x, mouse.y)) {
980 settings->fullscreen = fullscreen_cb->isChecked();
981 render_device->setFullscreen(settings->fullscreen);
982 inpt->window_resized = true;
983 refreshWidgets();
984 }
985 else if (cfg_tabs[VIDEO_TAB].options[Platform::Video::HWSURFACE].enabled && hwsurface_cb->checkClickAt(mouse.x, mouse.y)) {
986 settings->hwsurface = hwsurface_cb->isChecked();
987 }
988 else if (cfg_tabs[VIDEO_TAB].options[Platform::Video::VSYNC].enabled && vsync_cb->checkClickAt(mouse.x, mouse.y)) {
989 settings->vsync = vsync_cb->isChecked();
990 }
991 else if (cfg_tabs[VIDEO_TAB].options[Platform::Video::TEXTURE_FILTER].enabled && texture_filter_cb->checkClickAt(mouse.x, mouse.y)) {
992 settings->texture_filter = texture_filter_cb->isChecked();
993 }
994 else if (cfg_tabs[VIDEO_TAB].options[Platform::Video::DPI_SCALING].enabled && dpi_scaling_cb->checkClickAt(mouse.x, mouse.y)) {
995 settings->dpi_scaling = dpi_scaling_cb->isChecked();
996 render_device->windowResize();
997 inpt->window_resized = true;
998 refreshWidgets();
999 force_refresh_background = true;
1000 }
1001 else if (cfg_tabs[VIDEO_TAB].options[Platform::Video::PARALLAX_LAYERS].enabled && parallax_layers_cb->checkClickAt(mouse.x, mouse.y)) {
1002 settings->parallax_layers = parallax_layers_cb->isChecked();
1003 }
1004 else if (cfg_tabs[VIDEO_TAB].options[Platform::Video::ENABLE_GAMMA].enabled && change_gamma_cb->checkClickAt(mouse.x, mouse.y)) {
1005 settings->change_gamma = change_gamma_cb->isChecked();
1006 if (settings->change_gamma) {
1007 gamma_sl->enabled = true;
1008 }
1009 else {
1010 settings->gamma = 1.0;
1011 gamma_sl->enabled = false;
1012 gamma_sl->set(GAMMA_MIN, GAMMA_MAX, static_cast<int>(settings->gamma * 10.0));
1013 render_device->resetGamma();
1014 }
1015 }
1016 else if (cfg_tabs[VIDEO_TAB].options[Platform::Video::GAMMA].enabled && gamma_sl->checkClickAt(mouse.x, mouse.y)) {
1017 settings->gamma = static_cast<float>(gamma_sl->getValue()) * 0.1f;
1018 render_device->setGamma(settings->gamma);
1019 }
1020 else if (cfg_tabs[VIDEO_TAB].options[Platform::Video::RENDERER].enabled && renderer_lstb->checkClickAt(mouse.x, mouse.y)) {
1021 new_render_device = renderer_lstb->getValue();
1022 }
1023 }
1024
1025 void MenuConfig::logicAudio() {
1026 cfg_tabs[AUDIO_TAB].scrollbox->logic();
1027 Point mouse = cfg_tabs[AUDIO_TAB].scrollbox->input_assist(inpt->mouse);
1028
1029 if (settings->audio) {
1030 if (cfg_tabs[AUDIO_TAB].options[Platform::Audio::MUSIC].enabled && music_volume_sl->checkClickAt(mouse.x, mouse.y)) {
1031 if (settings->music_volume == 0)
1032 reload_music = true;
1033 settings->music_volume = static_cast<short>(music_volume_sl->getValue());
1034 snd->setVolumeMusic(settings->music_volume);
1035 }
1036 else if (cfg_tabs[AUDIO_TAB].options[Platform::Audio::SFX].enabled && sound_volume_sl->checkClickAt(mouse.x, mouse.y)) {
1037 settings->sound_volume = static_cast<short>(sound_volume_sl->getValue());
1038 snd->setVolumeSFX(settings->sound_volume);
1039 }
1040 }
1041 }
1042
1043 void MenuConfig::logicInterface() {
1044 cfg_tabs[INTERFACE_TAB].scrollbox->logic();
1045 Point mouse = cfg_tabs[INTERFACE_TAB].scrollbox->input_assist(inpt->mouse);
1046
1047 if (cfg_tabs[INTERFACE_TAB].options[Platform::Interface::LANGUAGE].enabled && language_lstb->checkClickAt(mouse.x, mouse.y)) {
1048 unsigned lang_id = language_lstb->getSelected();
1049 if (lang_id != language_lstb->getSize())
1050 settings->language = language_ISO[lang_id];
1051 }
1052 else if (cfg_tabs[INTERFACE_TAB].options[Platform::Interface::SHOW_FPS].enabled && show_fps_cb->checkClickAt(mouse.x, mouse.y)) {
1053 settings->show_fps = show_fps_cb->isChecked();
1054 }
1055 else if (cfg_tabs[INTERFACE_TAB].options[Platform::Interface::COLORBLIND].enabled && colorblind_cb->checkClickAt(mouse.x, mouse.y)) {
1056 settings->colorblind = colorblind_cb->isChecked();
1057 }
1058 else if (cfg_tabs[INTERFACE_TAB].options[Platform::Interface::HARDWARE_CURSOR].enabled && hardware_cursor_cb->checkClickAt(mouse.x, mouse.y)) {
1059 settings->hardware_cursor = hardware_cursor_cb->isChecked();
1060 }
1061 else if (cfg_tabs[INTERFACE_TAB].options[Platform::Interface::DEV_MODE].enabled && dev_mode_cb->checkClickAt(mouse.x, mouse.y)) {
1062 settings->dev_mode = dev_mode_cb->isChecked();
1063 }
1064 else if (cfg_tabs[INTERFACE_TAB].options[Platform::Interface::SUBTITLES].enabled && subtitles_cb->checkClickAt(mouse.x, mouse.y)) {
1065 settings->subtitles = subtitles_cb->isChecked();
1066 }
1067 else if (cfg_tabs[INTERFACE_TAB].options[Platform::Interface::LOOT_TOOLTIPS].enabled && loot_tooltip_lstb->checkClickAt(mouse.x, mouse.y)) {
1068 settings->loot_tooltips = static_cast<int>(loot_tooltip_lstb->getSelected());
1069 }
1070 else if (cfg_tabs[INTERFACE_TAB].options[Platform::Interface::MINIMAP_MODE].enabled && minimap_lstb->checkClickAt(mouse.x, mouse.y)) {
1071 settings->minimap_mode = static_cast<int>(minimap_lstb->getSelected());
1072 }
1073 else if (cfg_tabs[INTERFACE_TAB].options[Platform::Interface::STATBAR_LABELS].enabled && statbar_labels_cb->checkClickAt(mouse.x, mouse.y)) {
1074 settings->statbar_labels = statbar_labels_cb->isChecked();
1075 }
1076 else if (cfg_tabs[INTERFACE_TAB].options[Platform::Interface::STATBAR_AUTOHIDE].enabled && statbar_autohide_cb->checkClickAt(mouse.x, mouse.y)) {
1077 settings->statbar_autohide = statbar_autohide_cb->isChecked();
1078 }
1079 else if (cfg_tabs[INTERFACE_TAB].options[Platform::Interface::COMBAT_TEXT].enabled && combat_text_cb->checkClickAt(mouse.x, mouse.y)) {
1080 settings->combat_text = combat_text_cb->isChecked();
1081 }
1082 else if (cfg_tabs[INTERFACE_TAB].options[Platform::Interface::AUTO_EQUIP].enabled && auto_equip_cb->checkClickAt(mouse.x, mouse.y)) {
1083 settings->auto_equip = auto_equip_cb->isChecked();
1084 }
1085 else if (cfg_tabs[INTERFACE_TAB].options[Platform::Interface::ENTITY_MARKERS].enabled && entity_markers_cb->checkClickAt(mouse.x, mouse.y)) {
1086 settings->entity_markers = entity_markers_cb->isChecked();
1087 }
1088 else if (cfg_tabs[INTERFACE_TAB].options[Platform::Interface::LOW_HP_WARNING_TYPE].enabled && low_hp_warning_lstb->checkClickAt(mouse.x, mouse.y)) {
1089 settings->low_hp_warning_type = (static_cast<int>(low_hp_warning_lstb->getSelected()));
1090 }
1091 else if (cfg_tabs[INTERFACE_TAB].options[Platform::Interface::LOW_HP_THRESHOLD].enabled && low_hp_threshold_lstb->checkClickAt(mouse.x, mouse.y)) {
1092 settings->low_hp_threshold = (static_cast<int>(low_hp_threshold_lstb->getSelected())+1)*5;
1093 }
1094 else if (cfg_tabs[INTERFACE_TAB].options[Platform::Interface::ITEM_COMPARE_TIPS].enabled && item_compare_tips_cb->checkClickAt(mouse.x, mouse.y)) {
1095 settings->item_compare_tips = item_compare_tips_cb->isChecked();
1096 }
1097 }
1098
1099 void MenuConfig::logicInput() {
1100 cfg_tabs[INPUT_TAB].scrollbox->logic();
1101 Point mouse = cfg_tabs[INPUT_TAB].scrollbox->input_assist(inpt->mouse);
1102
1103 if (inpt->joysticks_changed) {
1104 disableJoystickOptions();
1105 refreshJoysticks();
1106 inpt->joysticks_changed = false;
1107 }
1108
1109 if (cfg_tabs[INPUT_TAB].options[Platform::Input::MOUSE_MOVE].enabled && mouse_move_cb->checkClickAt(mouse.x, mouse.y)) {
1110 if (mouse_move_cb->isChecked()) {
1111 settings->mouse_move = true;
1112 enableMouseOptions();
1113 }
1114 else settings->mouse_move=false;
1115 }
1116 else if (cfg_tabs[INPUT_TAB].options[Platform::Input::MOUSE_AIM].enabled && mouse_aim_cb->checkClickAt(mouse.x, mouse.y)) {
1117 if (mouse_aim_cb->isChecked()) {
1118 settings->mouse_aim = true;
1119 enableMouseOptions();
1120 }
1121 else settings->mouse_aim=false;
1122 }
1123 else if (cfg_tabs[INPUT_TAB].options[Platform::Input::NO_MOUSE].enabled && no_mouse_cb->checkClickAt(mouse.x, mouse.y)) {
1124 if (no_mouse_cb->isChecked()) {
1125 settings->no_mouse = true;
1126 disableMouseOptions();
1127 }
1128 else settings->no_mouse = false;
1129 }
1130 else if (cfg_tabs[INPUT_TAB].options[Platform::Input::MOUSE_MOVE_SWAP].enabled && mouse_move_swap_cb->checkClickAt(mouse.x, mouse.y)) {
1131 settings->mouse_move_swap = mouse_move_swap_cb->isChecked();
1132 }
1133 else if (cfg_tabs[INPUT_TAB].options[Platform::Input::MOUSE_MOVE_ATTACK].enabled && mouse_move_attack_cb->checkClickAt(mouse.x, mouse.y)) {
1134 settings->mouse_move_attack = mouse_move_attack_cb->isChecked();
1135 }
1136 else if (cfg_tabs[INPUT_TAB].options[Platform::Input::JOYSTICK_DEADZONE].enabled && joystick_deadzone_sl->checkClickAt(mouse.x, mouse.y)) {
1137 settings->joy_deadzone = joystick_deadzone_sl->getValue();
1138 }
1139 else if (cfg_tabs[INPUT_TAB].options[Platform::Input::JOYSTICK].enabled && joystick_device_lstb->checkClickAt(mouse.x, mouse.y)) {
1140 settings->joystick_device = static_cast<int>(joystick_device_lstb->getSelected()) - 1;
1141 if (settings->joystick_device != -1) {
1142 settings->enable_joystick = true;
1143 if (inpt->getNumJoysticks() > 0) {
1144 inpt->initJoystick();
1145 }
1146 }
1147 else {
1148 settings->enable_joystick = false;
1149 }
1150 }
1151 }
1152
1153 void MenuConfig::logicKeybinds() {
1154 cfg_tabs[KEYBINDS_TAB].scrollbox->logic();
1155 Point mouse = cfg_tabs[KEYBINDS_TAB].scrollbox->input_assist(inpt->mouse);
1156
1157 for (unsigned int i = 0; i < keybinds_btn.size(); i++) {
1158 if ((i+1) % 3 == 0) {
1159 keybinds_btn[i]->enabled = settings->enable_joystick;
1160 keybinds_btn[i]->refresh();
1161 }
1162
1163 if (!cfg_tabs[KEYBINDS_TAB].options[i].enabled)
1164 continue;
1165
1166 if (keybinds_btn[i]->checkClickAt(mouse.x,mouse.y)) {
1167 std::string confirm_msg;
1168 confirm_msg = msg->get("Assign:") + ' ' + inpt->binding_name[i/3];
1169 delete input_confirm;
1170 input_confirm = new MenuConfirm(msg->get("Clear"),confirm_msg);
1171 input_confirm_timer.reset(Timer::BEGIN);
1172 input_confirm->visible = true;
1173 input_key = i;
1174 inpt->last_button = -1;
1175 inpt->last_key = -1;
1176 inpt->last_joybutton = -1;
1177 }
1178 }
1179 }
1180
1181 void MenuConfig::logicMods() {
1182 if (activemods_lstb->checkClick()) {
1183 //do nothing
1184 }
1185 else if (inactivemods_lstb->checkClick()) {
1186 //do nothing
1187 }
1188 else if (activemods_shiftup_btn->checkClick()) {
1189 activemods_lstb->shiftUp();
1190 }
1191 else if (activemods_shiftdown_btn->checkClick()) {
1192 activemods_lstb->shiftDown();
1193 }
1194 else if (activemods_deactivate_btn->checkClick()) {
1195 disableMods();
1196 }
1197 else if (inactivemods_activate_btn->checkClick()) {
1198 enableMods();
1199 }
1200 }
1201
1202 void MenuConfig::render() {
1203 int tabheight = tab_control->getTabHeight();
1204 Rect pos;
1205 pos.x = (settings->view_w - eset->resolutions.frame_w)/2;
1206 pos.y = (settings->view_h - eset->resolutions.frame_h)/2 + tabheight - tabheight/16;
1207
1208 if (background) {
1209 background->setDestFromRect(pos);
1210 render_device->render(background);
1211 }
1212
1213 tab_control->render();
1214
1215 if (enable_gamestate_buttons) {
1216 // render OK/Defaults/Cancel buttons
1217 ok_button->render();
1218 cancel_button->render();
1219 defaults_button->render();
1220 }
1221
1222 renderTabContents();
1223 renderDialogs();
1224 }
1225
1226 void MenuConfig::renderTabContents() {
1227 if (active_tab == EXIT_TAB) {
1228 if (cfg_tabs[active_tab].scrollbox->update) {
1229 cfg_tabs[active_tab].scrollbox->refresh();
1230
1231 // only draw a separator between the buttons and the time played text
1232 Image* render_target = cfg_tabs[active_tab].scrollbox->contents->getGraphics();
1233 int offset = (MenuConfig::ENABLE_SAVE_GAME && eset->misc.save_anywhere) ? 3 : 2;
1234 render_target->drawLine(scrollpane_padding.x, offset * scrollpane_padding.y, scrollpane.w - scrollpane_padding.x - 1, offset * scrollpane_padding.y, scrollpane_separator_color);
1235 }
1236 cfg_tabs[active_tab].scrollbox->render();
1237 }
1238 else if (active_tab <= KEYBINDS_TAB) {
1239 if (cfg_tabs[active_tab].scrollbox->update) {
1240 cfg_tabs[active_tab].scrollbox->refresh();
1241
1242 Image* render_target = cfg_tabs[active_tab].scrollbox->contents->getGraphics();
1243
1244 for (int i = 1; i < cfg_tabs[active_tab].enabled_count; ++i) {
1245 if (active_tab == KEYBINDS_TAB) {
1246 if (i % 3 != 0)
1247 continue;
1248 }
1249 render_target->drawLine(scrollpane_padding.x, i * scrollpane_padding.y, scrollpane.w - scrollpane_padding.x - 1, i * scrollpane_padding.y, scrollpane_separator_color);
1250 }
1251 }
1252 cfg_tabs[active_tab].scrollbox->render();
1253 }
1254
1255 for (unsigned int i = 0; i < child_widget.size(); i++) {
1256 if (optiontab[i] == active_tab && optiontab[i] != NO_TAB)
1257 child_widget[i]->render();
1258 }
1259
1260 }
1261
1262 void MenuConfig::renderDialogs() {
1263 if (defaults_confirm->visible)
1264 defaults_confirm->render();
1265
1266 if (input_confirm->visible)
1267 input_confirm->render();
1268
1269 if (active_tab == KEYBINDS_TAB && !keybind_msg.empty()) {
1270 TooltipData keybind_tip_data;
1271 keybind_tip_data.addText(keybind_msg);
1272
1273 if (keybind_tip_timer.isEnd())
1274 keybind_tip_timer.reset(Timer::BEGIN);
1275
1276 keybind_tip_timer.tick();
1277
1278 if (!keybind_tip_timer.isEnd()) {
1279 keybind_tip->render(keybind_tip_data, Point(settings->view_w, 0), TooltipData::STYLE_FLOAT);
1280 }
1281 else {
1282 keybind_msg.clear();
1283 }
1284 }
1285 else {
1286 keybind_msg.clear();
1287 keybind_tip_timer.reset(Timer::END);
1288 }
1289 }
1290
1291 void MenuConfig::placeLabeledWidget(WidgetLabel *lb, Widget *w, int x1, int y1, int x2, int y2, std::string const& str, int justify) {
1292 if (w) {
1293 w->setBasePos(x2, y2, Utils::ALIGN_TOPLEFT);
1294 }
1295
1296 if (lb) {
1297 lb->setBasePos(x1, y1, Utils::ALIGN_TOPLEFT);
1298 lb->setText(str);
1299 lb->setJustify(justify);
1300 }
1301 }
1302
1303 void MenuConfig::placeLabeledWidgetAuto(int tab, int cfg_index) {
1304 WidgetLabel *lb = cfg_tabs[tab].options[cfg_index].label;
1305 Widget *w = cfg_tabs[tab].options[cfg_index].widget;
1306 int enabled_index = cfg_tabs[tab].getEnabledIndex(cfg_index);
1307
1308 if (w) {
1309 int y_offset = std::max(scrollpane_padding.y - w->pos.h, 0) / 2;
1310 w->setBasePos(scrollpane.w - w->pos.w - scrollpane_padding.x, (enabled_index * scrollpane_padding.y) + y_offset, Utils::ALIGN_TOPLEFT);
1311 w->setPos(0,0);
1312 }
1313
1314 if (lb) {
1315 lb->setBasePos(scrollpane_padding.x, (enabled_index * scrollpane_padding.y) + scrollpane_padding.y / 2, Utils::ALIGN_TOPLEFT);
1316 lb->setPos(0, 0);
1317 lb->setVAlign(LabelInfo::VALIGN_CENTER);
1318 }
1319 }
1320
1321 void MenuConfig::refreshWidgets() {
1322 tab_control->setMainArea(((settings->view_w - eset->resolutions.frame_w)/2) + tab_offset.x, ((settings->view_h - eset->resolutions.frame_h)/2) + tab_offset.y);
1323
1324 frame.x = ((settings->view_w - eset->resolutions.frame_w)/2) + frame_offset.x;
1325 frame.y = ((settings->view_h - eset->resolutions.frame_h)/2) + tab_control->getTabHeight() + frame_offset.y;
1326
1327 for (unsigned i=0; i<child_widget.size(); ++i) {
1328 if (optiontab[i] != NO_TAB)
1329 child_widget[i]->setPos(frame.x, frame.y);
1330 }
1331
1332 ok_button->setPos(0, 0);
1333 defaults_button->setPos(0, 0);
1334 cancel_button->setPos(0, 0);
1335
1336 defaults_confirm->align();
1337
1338 for (size_t i = 0; i < cfg_tabs.size(); ++i) {
1339 cfg_tabs[i].scrollbox->setPos(frame.x, frame.y);
1340 }
1341
1342 input_confirm->align();
1343 }
1344
1345 void MenuConfig::addChildWidget(Widget *w, int tab) {
1346 child_widget.push_back(w);
1347 optiontab.push_back(tab);
1348 }
1349
1350 void MenuConfig::refreshLanguages() {
1351 language_ISO.clear();
1352 language_lstb->clear();
1353
1354 FileParser infile;
1355 if (infile.open("engine/languages.txt", FileParser::MOD_FILE, FileParser::ERROR_NORMAL)) {
1356 int i = 0;
1357 while (infile.next()) {
1358 std::string key = infile.key;
1359 if (key != "") {
1360 language_ISO.push_back(key);
1361 language_lstb->append(infile.val, infile.val + " [" + infile.key + "]");
1362
1363 if (language_ISO.back() == settings->language) {
1364 language_lstb->select(i);
1365 }
1366
1367 i++;
1368 }
1369 }
1370 infile.close();
1371 }
1372 }
1373
1374 void MenuConfig::refreshFont() {
1375 delete font;
1376 font = getFontEngine();
1377 delete comb;
1378 comb = new CombatText();
1379 }
1380
1381 void MenuConfig::enableMods() {
1382 for (int i=0; i<inactivemods_lstb->getSize(); i++) {
1383 if (inactivemods_lstb->isSelected(i)) {
1384 activemods_lstb->append(inactivemods_lstb->getValue(i),inactivemods_lstb->getTooltip(i));
1385 inactivemods_lstb->remove(i);
1386 i--;
1387 }
1388 }
1389 }
1390
1391 void MenuConfig::disableMods() {
1392 for (int i=0; i<activemods_lstb->getSize(); i++) {
1393 if (activemods_lstb->isSelected(i) && activemods_lstb->getValue(i) != mods->FALLBACK_MOD) {
1394 inactivemods_lstb->append(activemods_lstb->getValue(i),activemods_lstb->getTooltip(i));
1395 activemods_lstb->remove(i);
1396 i--;
1397 }
1398 }
1399 inactivemods_lstb->sort();
1400 }
1401
1402 bool MenuConfig::setMods() {
1403 // Save new mods list and return true if modlist was changed. Else return false
1404
1405 std::vector<Mod> temp_list = mods->mod_list;
1406 mods->mod_list.clear();
1407 mods->mod_list.push_back(mods->loadMod(mods->FALLBACK_MOD));
1408
1409 for (int i=0; i<activemods_lstb->getSize(); i++) {
1410 if (activemods_lstb->getValue(i) != "")
1411 mods->mod_list.push_back(mods->loadMod(activemods_lstb->getValue(i)));
1412 }
1413
1414 mods->applyDepends();
1415
1416 if (mods->mod_list != temp_list) {
1417 mods->saveMods();
1418 return true;
1419 }
1420 else {
1421 return false;
1422 }
1423 }
1424
1425 std::string MenuConfig::createModTooltip(Mod *mod) {
1426 std::string ret = "";
1427 if (mod) {
1428 std::string mod_ver = (*mod->version == VersionInfo::MIN) ? "" : mod->version->getString();
1429 std::string engine_ver = VersionInfo::createVersionReqString(*mod->engine_min_version, *mod->engine_max_version);
1430
1431 ret = mod->name + '\n';
1432
1433 std::string mod_description = mod->getLocaleDescription(settings->language);
1434 if (!mod_description.empty()) {
1435 ret += '\n';
1436 ret += mod_description + '\n';
1437 }
1438
1439 bool middle_section = false;
1440 if (!mod_ver.empty()) {
1441 middle_section = true;
1442 ret += '\n';
1443 ret += msg->get("Version:") + ' ' + mod_ver;
1444 }
1445 if (!mod->game.empty() && mod->game != mods->FALLBACK_GAME) {
1446 middle_section = true;
1447 ret += '\n';
1448 ret += msg->get("Game:") + ' ' + mod->game;
1449 }
1450 if (!engine_ver.empty()) {
1451 middle_section = true;
1452 ret += '\n';
1453 ret += msg->get("Engine version:") + ' ' + engine_ver;
1454 }
1455
1456 if (middle_section)
1457 ret += '\n';
1458
1459 if (!mod->depends.empty()) {
1460 ret += '\n';
1461 ret += msg->get("Requires mods:") + '\n';
1462 for (size_t i=0; i<mod->depends.size(); ++i) {
1463 ret += "- " + mod->depends[i];
1464 std::string depend_ver = VersionInfo::createVersionReqString(*mod->depends_min[i], *mod->depends_max[i]);
1465 if (depend_ver != "")
1466 ret += " (" + depend_ver + ")";
1467 if (i < mod->depends.size()-1)
1468 ret += '\n';
1469 }
1470 }
1471
1472 if (!ret.empty() && ret[ret.size() - 1] == '\n')
1473 ret.erase(ret.begin() + ret.size() - 1);
1474 }
1475 return ret;
1476 }
1477
1478 void MenuConfig::confirmKey(int button) {
1479 inpt->pressing[button] = false;
1480 inpt->lock[button] = false;
1481
1482 input_confirm->visible = false;
1483 input_confirm_timer.reset(Timer::END);
1484 keybind_tip_timer.reset(Timer::END);
1485
1486 inpt->refresh_hotkeys = true;
1487
1488 updateKeybinds();
1489 }
1490
1491 void MenuConfig::scanKey(int button) {
1492 int column = button % 3;
1493 int real_button = button / 3;
1494
1495 // clear the keybind if the user clicks "Clear" in the dialog
1496 if (input_confirm->visible && input_confirm->confirmClicked) {
1497 inpt->setKeybind(-1, real_button, column, keybind_msg);
1498 confirmKey(real_button);
1499 return;
1500 }
1501
1502 if (input_confirm->visible && !input_confirm->isWithinButtons) {
1503 // keyboard & mouse
1504 if (column == InputState::BINDING_DEFAULT || column == InputState::BINDING_ALT) {
1505 if (inpt->last_button != -1) {
1506 // mouse
1507 inpt->setKeybind(inpt->last_button, real_button, column, keybind_msg);
1508 confirmKey(real_button);
1509 }
1510 else if (inpt->last_key != -1) {
1511 // keyboard
1512 inpt->setKeybind(inpt->last_key, real_button, column, keybind_msg);
1513 confirmKey(real_button);
1514 }
1515 }
1516 // joystick
1517 else if (column == InputState::BINDING_JOYSTICK && inpt->last_joybutton != -1) {
1518 inpt->setKeybind(inpt->last_joybutton, real_button, column, keybind_msg);
1519 confirmKey(real_button);
1520 }
1521 else if (column == InputState::BINDING_JOYSTICK && inpt->last_joyaxis != -1) {
1522 inpt->setKeybind(inpt->last_joyaxis, real_button, column, keybind_msg);
1523 confirmKey(real_button);
1524 }
1525 }
1526 }
1527
1528 void MenuConfig::enableMouseOptions() {
1529 settings->no_mouse = false;
1530 no_mouse_cb->setChecked(settings->no_mouse);
1531 }
1532
1533 void MenuConfig::disableMouseOptions() {
1534 settings->mouse_aim = false;
1535 mouse_aim_cb->setChecked(settings->mouse_aim);
1536
1537 settings->mouse_move = false;
1538 mouse_move_cb->setChecked(settings->mouse_move);
1539
1540 settings->no_mouse = true;
1541 no_mouse_cb->setChecked(settings->no_mouse);
1542 }
1543
1544 void MenuConfig::disableJoystickOptions() {
1545 settings->enable_joystick = false;
1546
1547 joystick_device_lstb->select(0);
1548
1549 if (inpt->getNumJoysticks() > 0)
1550 joystick_device_lstb->refresh();
1551 }
1552
1553 void MenuConfig::refreshRenderers() {
1554 renderer_lstb->clear();
1555
1556 std::vector<std::string> rd_name, rd_desc;
1557 createRenderDeviceList(msg, rd_name, rd_desc);
1558
1559 for (size_t i = 0; i < rd_name.size(); ++i) {
1560 renderer_lstb->append(rd_name[i], rd_desc[i]);
1561 if (rd_name[i] == settings->render_device_name) {
1562 renderer_lstb->select(static_cast<int>(i));
1563 }
1564 }
1565 }
1566
1567 void MenuConfig::refreshJoysticks() {
1568 joystick_device_lstb->clear();
1569 joystick_device_lstb->append(msg->get("(none)"), "");
1570 joystick_device_lstb->enabled = inpt->getNumJoysticks() > 0;
1571
1572 for (int i = 0; i < inpt->getNumJoysticks(); ++i) {
1573 std::string joystick_name = inpt->getJoystickName(i);
1574 if (joystick_name != "")
1575 joystick_device_lstb->append(joystick_name, joystick_name);
1576 }
1577
1578 joystick_device_lstb->refresh();
1579 }
1580
1581 std::string MenuConfig::getRenderDevice() {
1582 return renderer_lstb->getValue();
1583 }
1584
1585 void MenuConfig::setPauseExitText(bool enable_save) {
1586 pause_exit_btn->setLabel((eset->misc.save_onexit && enable_save) ? msg->get("Save & Exit") : msg->get("Exit"));
1587 }
1588
1589 void MenuConfig::setPauseSaveEnabled(bool enable_save) {
1590 pause_save_btn->enabled = enable_save && eset->misc.save_anywhere;
1591 }
1592
1593 void MenuConfig::resetSelectedTab() {
1594 update();
1595
1596 tab_control->setActiveTab(0);
1597
1598 for (size_t i = 0; i < cfg_tabs.size(); ++i) {
1599 cfg_tabs[i].scrollbox->scrollToTop();
1600 }
1601
1602 tablist.defocus();
1603 tablist_main.defocus();
1604 tablist_exit.defocus();
1605 tablist_video.defocus();
1606 tablist_audio.defocus();
1607 tablist_interface.defocus();
1608 tablist_input.defocus();
1609 tablist_keybinds.defocus();
1610 tablist_mods.defocus();
1611
1612 input_confirm->visible = false;
1613 input_confirm_timer.reset(Timer::END);
1614 keybind_tip_timer.reset(Timer::END);
1615 }
1616
1617 void MenuConfig::cleanup() {
1618 if (background) {
1619 delete background;
1620 background = NULL;
1621 }
1622
1623 if (tab_control != NULL) {
1624 delete tab_control;
1625 tab_control = NULL;
1626 }
1627
1628 if (ok_button != NULL) {
1629 delete ok_button;
1630 ok_button = NULL;
1631 }
1632 if (defaults_button != NULL) {
1633 delete defaults_button;
1634 defaults_button = NULL;
1635 }
1636 if (cancel_button != NULL) {
1637 delete cancel_button;
1638 cancel_button = NULL;
1639 }
1640
1641 cleanupTabContents();
1642 cleanupDialogs();
1643
1644 language_ISO.clear();
1645 }
1646
1647 void MenuConfig::cleanupTabContents() {
1648 for (std::vector<Widget*>::iterator iter = child_widget.begin(); iter != child_widget.end(); ++iter) {
1649 if (*iter != NULL) {
1650 delete (*iter);
1651 *iter = NULL;
1652 }
1653 }
1654 child_widget.clear();
1655
1656 for (size_t i = 0; i < cfg_tabs.size(); ++i) {
1657 if (cfg_tabs[i].scrollbox != NULL) {
1658 delete cfg_tabs[i].scrollbox;
1659 cfg_tabs[i].scrollbox = NULL;
1660 }
1661 }
1662 }
1663
1664 void MenuConfig::cleanupDialogs() {
1665 if (defaults_confirm != NULL) {
1666 delete defaults_confirm;
1667 defaults_confirm = NULL;
1668 }
1669 if (input_confirm != NULL) {
1670 delete input_confirm;
1671 input_confirm = NULL;
1672 }
1673 if (keybind_tip != NULL) {
1674 delete keybind_tip;
1675 keybind_tip = NULL;
1676 }
1677 }
1678
1679 void MenuConfig::setHero(Avatar* _hero) {
1680 hero = _hero;
1681 }
0 /*
1 Copyright © 2012 Clint Bellanger
2 Copyright © 2012 davidriod
3 Copyright © 2012 Igor Paliychuk
4 Copyright © 2013 Kurt Rinnert
5 Copyright © 2014-2016 Justin Jacobs
6
7 This file is part of FLARE.
8
9 FLARE is free software: you can redistribute it and/or modify it under the terms
10 of the GNU General Public License as published by the Free Software Foundation,
11 either version 3 of the License, or (at your option) any later version.
12
13 FLARE is distributed in the hope that it will be useful, but WITHOUT ANY
14 WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A
15 PARTICULAR PURPOSE. See the GNU General Public License for more details.
16
17 You should have received a copy of the GNU General Public License along with
18 FLARE. If not, see http://www.gnu.org/licenses/
19 */
20
21 /**
22 * MenuConfig
23 *
24 * Handle game Settings Menu
25 */
26
27 #ifndef MENUCONFIG_H
28 #define MENUCONFIG_H
29
30 #include "CommonIncludes.h"
31 #include "TooltipData.h"
32 #include "Widget.h"
33
34 class Avatar;
35 class FileParser;
36 class MenuConfirm;
37 class Mod;
38 class Widget;
39 class WidgetButton;
40 class WidgetCheckBox;
41 class WidgetHorizontalList;
42 class WidgetLabel;
43 class WidgetListBox;
44 class WidgetScrollBox;
45 class WidgetSlider;
46 class WidgetTabControl;
47 class WidgetTooltip;
48
49 class MenuConfig {
50 private:
51 class ConfigOption {
52 public:
53 ConfigOption();
54 ~ConfigOption();
55
56 bool enabled;
57 WidgetLabel* label;
58 Widget* widget;
59 };
60
61 class ConfigTab {
62 public:
63 ConfigTab();
64 ~ConfigTab();
65 void setOptionWidgets(int index, WidgetLabel* lb, Widget* w, const std::string& lb_text);
66 void setOptionEnabled(int index, bool enable);
67 int getEnabledIndex(int option_index);
68
69 WidgetScrollBox* scrollbox;
70 int enabled_count;
71 std::vector<ConfigOption> options;
72 };
73
74 static const int GAMMA_MIN = 5;
75 static const int GAMMA_MAX = 15;
76
77 std::vector<ConfigTab> cfg_tabs;
78
79 bool is_game_state;
80 bool enable_gamestate_buttons;
81 Avatar *hero;
82
83 public:
84 static const bool IS_GAME_STATE = true;
85 static const bool ENABLE_SAVE_GAME = true;
86
87 static const short TAB_COUNT = 7;
88 enum {
89 EXIT_TAB = 0,
90 VIDEO_TAB = 1,
91 AUDIO_TAB = 2,
92 INTERFACE_TAB = 3,
93 INPUT_TAB = 4,
94 KEYBINDS_TAB = 5,
95 MODS_TAB = 6
96 };
97 static const short NO_TAB = -1;
98
99 enum {
100 EXIT_OPTION_CONTINUE = 0,
101 EXIT_OPTION_SAVE = 1,
102 EXIT_OPTION_EXIT = 2,
103 EXIT_OPTION_TIME_PLAYED = 3,
104 };
105
106 explicit MenuConfig(bool _is_game_state);
107 ~MenuConfig();
108
109 void init();
110 void readConfig();
111 bool parseKeyButtons(FileParser &infile);
112 bool parseKey(FileParser &infile, int &x1, int &y1, int &x2, int &y2);
113 void addChildWidgets();
114 void setupTabList();
115
116 void update();
117 void updateVideo();
118 void updateAudio();
119 void updateInterface();
120 void updateInput();
121 void updateKeybinds();
122 void updateMods();
123
124 void logic();
125 bool logicMain();
126 void logicDefaults();
127 void logicExit();
128 void logicVideo();
129 void logicAudio();
130 void logicInterface();
131 void logicInput();
132 void logicKeybinds();
133 void logicMods();
134
135 void render();
136 void renderTabContents();
137 void renderDialogs();
138
139 void placeLabeledWidget(WidgetLabel* lb, Widget* w, int x1, int y1, int x2, int y2, std::string const& str, int justify = 0);
140 void placeLabeledWidgetAuto(int tab, int cfg_index);
141 void refreshWidgets();
142 void addChildWidget(Widget *w, int tab);
143 void refreshRenderers();
144 void refreshJoysticks();
145 void refreshLanguages();
146 void refreshFont();
147 std::string getRenderDevice();
148 void setPauseExitText(bool enable_save);
149 void setPauseSaveEnabled(bool enable_save);
150 void resetSelectedTab();
151
152 void confirmKey(int button);
153 void scanKey(int button);
154
155 void enableMouseOptions();
156 void disableMouseOptions();
157 void disableJoystickOptions();
158
159 void enableMods();
160 void disableMods();
161 bool setMods();
162 std::string createModTooltip(Mod *mod);
163
164 void cleanup();
165 void cleanupTabContents();
166 void cleanupDialogs();
167
168 void setHero(Avatar* _hero);
169
170 TabList tablist;
171 TabList tablist_main;
172 TabList tablist_exit;
173 TabList tablist_video;
174 TabList tablist_audio;
175 TabList tablist_interface;
176 TabList tablist_input;
177 TabList tablist_keybinds;
178 TabList tablist_mods;
179
180 std::vector<int> optiontab;
181 std::vector<Widget*> child_widget;
182
183 WidgetTabControl * tab_control;
184 WidgetButton * ok_button;
185 WidgetButton * defaults_button;
186 WidgetButton * cancel_button;
187 Sprite * background;
188 MenuConfirm * input_confirm;
189 MenuConfirm * defaults_confirm;
190
191 WidgetLabel * pause_continue_lb;
192 WidgetButton * pause_continue_btn;
193 WidgetLabel * pause_exit_lb;
194 WidgetButton * pause_exit_btn;
195 WidgetLabel * pause_save_lb;
196 WidgetButton * pause_save_btn;
197 WidgetLabel * pause_time_lb;
198 WidgetLabel * pause_time_text;
199
200 WidgetHorizontalList * renderer_lstb;
201 WidgetLabel * renderer_lb;
202 WidgetCheckBox * fullscreen_cb;
203 WidgetLabel * fullscreen_lb;
204 WidgetCheckBox * hwsurface_cb;
205 WidgetLabel * hwsurface_lb;
206 WidgetCheckBox * vsync_cb;
207 WidgetLabel * vsync_lb;
208 WidgetCheckBox * texture_filter_cb;
209 WidgetLabel * texture_filter_lb;
210 WidgetCheckBox * dpi_scaling_cb;
211 WidgetLabel * dpi_scaling_lb;
212 WidgetCheckBox * parallax_layers_cb;
213 WidgetLabel * parallax_layers_lb;
214 WidgetCheckBox * change_gamma_cb;
215 WidgetLabel * change_gamma_lb;
216 WidgetSlider * gamma_sl;
217 WidgetLabel * gamma_lb;
218
219 WidgetSlider * music_volume_sl;
220 WidgetLabel * music_volume_lb;
221 WidgetSlider * sound_volume_sl;
222 WidgetLabel * sound_volume_lb;
223
224 WidgetCheckBox * show_fps_cb;
225 WidgetLabel * show_fps_lb;
226 WidgetCheckBox * hardware_cursor_cb;
227 WidgetLabel * hardware_cursor_lb;
228 WidgetCheckBox * colorblind_cb;
229 WidgetLabel * colorblind_lb;
230 WidgetCheckBox * dev_mode_cb;
231 WidgetLabel * dev_mode_lb;
232 WidgetCheckBox * subtitles_cb;
233 WidgetLabel * subtitles_lb;
234 WidgetHorizontalList * loot_tooltip_lstb;
235 WidgetLabel * loot_tooltip_lb;
236 WidgetHorizontalList * minimap_lstb;
237 WidgetLabel * minimap_lb;
238 WidgetCheckBox * statbar_labels_cb;
239 WidgetLabel * statbar_labels_lb;
240 WidgetCheckBox * statbar_autohide_cb;
241 WidgetLabel * statbar_autohide_lb;
242 WidgetCheckBox * combat_text_cb;
243 WidgetLabel * combat_text_lb;
244 WidgetCheckBox * auto_equip_cb;
245 WidgetLabel * auto_equip_lb;
246 WidgetCheckBox * entity_markers_cb;
247 WidgetLabel * entity_markers_lb;
248 WidgetHorizontalList * low_hp_warning_lstb;
249 WidgetLabel * low_hp_warning_lb;
250 WidgetHorizontalList * low_hp_threshold_lstb;
251 WidgetLabel * low_hp_threshold_lb;
252 WidgetCheckBox * item_compare_tips_cb;
253 WidgetLabel * item_compare_tips_lb;
254
255
256 WidgetHorizontalList * joystick_device_lstb;
257 WidgetLabel * joystick_device_lb;
258 WidgetCheckBox * mouse_move_cb;
259 WidgetLabel * mouse_move_lb;
260 WidgetCheckBox * mouse_aim_cb;
261 WidgetLabel * mouse_aim_lb;
262 WidgetCheckBox * no_mouse_cb;
263 WidgetLabel * no_mouse_lb;
264 WidgetCheckBox * mouse_move_swap_cb;
265 WidgetLabel * mouse_move_swap_lb;
266 WidgetCheckBox * mouse_move_attack_cb;
267 WidgetLabel * mouse_move_attack_lb;
268 WidgetSlider * joystick_deadzone_sl;
269 WidgetLabel * joystick_deadzone_lb;
270
271 WidgetListBox * activemods_lstb;
272 WidgetLabel * activemods_lb;
273 WidgetListBox * inactivemods_lstb;
274 WidgetLabel * inactivemods_lb;
275 WidgetHorizontalList * language_lstb;
276 WidgetLabel * language_lb;
277 WidgetButton * activemods_shiftup_btn;
278 WidgetButton * activemods_shiftdown_btn;
279 WidgetButton * activemods_deactivate_btn;
280 WidgetButton * inactivemods_activate_btn;
281
282 int active_tab;
283
284 Point frame;
285 Point frame_offset;
286 Point tab_offset;
287 Rect scrollpane;
288 Color scrollpane_color;
289 Point scrollpane_padding;
290 Color scrollpane_separator_color;
291 Point secondary_offset;
292
293 std::vector<std::string> language_ISO;
294
295 std::string new_render_device;
296 std::vector<Rect> video_modes;
297
298 std::vector<WidgetLabel *> keybinds_lb;
299 std::vector<WidgetButton *> keybinds_btn;
300
301 Timer input_confirm_timer;
302 int input_key;
303 unsigned key_count;
304
305 std::string keybind_msg;
306 Timer keybind_tip_timer;
307 WidgetTooltip* keybind_tip;
308
309 // flags for GameState*
310 bool clicked_accept;
311 bool clicked_cancel;
312 bool force_refresh_background;
313 bool reload_music;
314 bool clicked_pause_continue;
315 bool clicked_pause_exit;
316 bool clicked_pause_save;
317 };
318
319 #endif
320
2020
2121 #include "Avatar.h"
2222 #include "CampaignManager.h"
23 #include "Enemy.h"
24 #include "EnemyManager.h"
23 #include "Entity.h"
24 #include "EntityManager.h"
2525 #include "EventManager.h"
2626 #include "FileParser.h"
2727 #include "FontEngine.h"
3232 #include "MenuManager.h"
3333 #include "MessageEngine.h"
3434 #include "ModManager.h"
35 #include "NPC.h"
36 #include "NPCManager.h"
3537 #include "PowerManager.h"
3638 #include "Settings.h"
3739 #include "SharedGameResources.h"
193195
194196 if (inpt->pressing[Input::MAIN2] && !inpt->lock[Input::MAIN2]) {
195197 inpt->lock[Input::MAIN2] = true;
196 target = Utils::screenToMap(inpt->mouse.x, inpt->mouse.y, pc->stats.pos.x, pc->stats.pos.y);
198 target = Utils::screenToMap(inpt->mouse.x, inpt->mouse.y, mapr->cam.pos.x, mapr->cam.pos.y);
197199
198200 log_history->addSeparator();
199201
201203 std::stringstream ss;
202204 if (!mapr->collider.isOutsideMap(floorf(target.x), floorf(target.y))) {
203205 getTileInfo();
204 getEnemyInfo();
206 getEntityInfo();
205207 getPlayerInfo();
206208
207209 ss << "X=" << target.x << ", Y=" << target.y;
274276 log_history->add(ss.str(), WidgetLog::MSG_NORMAL);
275277 }
276278
277 void MenuDevConsole::getEnemyInfo() {
279 void MenuDevConsole::getEntityInfo() {
278280 std::stringstream ss;
279 for (size_t i = 0; i < enemym->enemies.size(); ++i) {
280 const Enemy* e = enemym->enemies[i];
281 // enemies & ally creatures
282 for (size_t i = 0; i < entitym->entities.size(); ++i) {
283 const Entity* e = entitym->entities[i];
281284 if (!(static_cast<int>(target.x) == static_cast<int>(e->stats.pos.x) && static_cast<int>(target.y) == static_cast<int>(e->stats.pos.y)))
282285 continue;
283286
286289 log_history->setNextColor(font->getColor(FontEngine::COLOR_MENU_BONUS));
287290 log_history->add(ss.str(), WidgetLog::MSG_NORMAL);
288291
289 // TODO print more enemy data
292 // TODO print more entity data
293 }
294
295 // non-ally NPCs
296 for (size_t i = 0; i < npcs->npcs.size(); ++i) {
297 const Entity* e = npcs->npcs[i];
298 if (!(static_cast<int>(target.x) == static_cast<int>(e->stats.pos.x) && static_cast<int>(target.y) == static_cast<int>(e->stats.pos.y)))
299 continue;
300
301 ss.str("");
302 ss << msg->get("Entity") << ": " << e->stats.name << " | X=" << e->stats.pos.x << ", Y=" << e->stats.pos.y;
303 log_history->setNextColor(font->getColor(FontEngine::COLOR_MENU_BONUS));
304 log_history->add(ss.str(), WidgetLog::MSG_NORMAL);
305
306 // TODO print more entity data
290307 }
291308 }
292309
425442
426443 std::vector<size_t> matching_ids;
427444
428 for (size_t i=1; i<items->items.size(); ++i) {
429 if (!items->items[i].has_name)
430 continue;
431
432 std::string item_name = items->getItemName(static_cast<int>(i));
445 std::map<size_t, Item>::iterator item_it;
446 for (item_it = items->items.begin(); item_it != items->items.end(); ++item_it) {
447 if (!item_it->second.has_name)
448 continue;
449
450 std::string item_name = items->getItemName(static_cast<int>(item_it->first));
433451 if (!search_terms.empty() && Utils::stringFindCaseInsensitive(item_name, search_terms) == std::string::npos)
434452 continue;
435453
436 matching_ids.push_back(i);
454 matching_ids.push_back(item_it->first);
437455 }
438456
439457 if (!matching_ids.empty()) {
502520
503521 std::vector<size_t> matching_ids;
504522
505 for (size_t i=1; i<powers->powers.size(); ++i) {
506 if (powers->powers[i].is_empty)
507 continue;
508
509 std::string item_name = powers->powers[i].name;
510 if (!search_terms.empty() && Utils::stringFindCaseInsensitive(item_name, search_terms) == std::string::npos)
511 continue;
512
513 matching_ids.push_back(i);
523 std::map<size_t, Power>::iterator power_it;
524 for (power_it = powers->powers.begin(); power_it != powers->powers.end(); ++power_it) {
525 if (power_it->second.is_empty)
526 continue;
527
528 if (!search_terms.empty() && Utils::stringFindCaseInsensitive(power_it->second.name, search_terms) == std::string::npos)
529 continue;
530
531 matching_ids.push_back(power_it->first);
514532 }
515533
516534 if (!matching_ids.empty()) {
3636 void execute();
3737 void getPlayerInfo();
3838 void getTileInfo();
39 void getEnemyInfo();
39 void getEntityInfo();
4040 void reset();
4141
4242 WidgetButton *button_close;
2424 */
2525
2626 #include "CommonIncludes.h"
27 #include "Enemy.h"
27 #include "Entity.h"
2828 #include "FileParser.h"
2929 #include "FontEngine.h"
3030 #include "Menu.h"
4040 MenuEnemy::MenuEnemy()
4141 : bar_hp(NULL)
4242 , custom_text_pos(false)
43 , bar_fill_offset()
44 , bar_fill_size(-1, -1)
4345 , enemy(NULL)
4446 {
4547 // disappear after 10 seconds
6466 custom_text_pos = true;
6567 text_pos = Parse::popLabelInfo(infile.val);
6668 }
69 // @ATTR bar_fill_offset|point|Offset of the bar's fill graphics relative to the bar_pos X/Y.
70 else if (infile.key == "bar_fill_offset") {
71 bar_fill_offset = Parse::toPoint(infile.val);
72 }
73 // @ATTR bar_fill_size|int, int : Width, Height|Size of the bar's fill graphics. If not defined, the width/height of bar_pos is used.
74 else if (infile.key == "bar_fill_size") {
75 bar_fill_size = Parse::toPoint(infile.val);
76 }
6777 else {
6878 infile.error("MenuEnemy: '%s' is not a valid key.", infile.key.c_str());
6979 }
7080 }
7181 infile.close();
82 }
83
84 // default to bar_pos size if bar_fill_size is undefined
85 if (bar_fill_size.x == -1 || bar_fill_size.y == -1) {
86 bar_fill_size.x = bar_pos.w;
87 bar_fill_size.y = bar_pos.h;
7288 }
7389
7490 loadGraphics();
115131 int hp_bar_length = 0;
116132 if (enemy->stats.get(Stats::HP_MAX) == 0)
117133 hp_bar_length = 0;
118 else if (bar_hp)
119 hp_bar_length = (enemy->stats.hp * bar_hp->getGraphics()->getWidth()) / enemy->stats.get(Stats::HP_MAX);
134 else if (bar_hp) {
135 hp_bar_length = (enemy->stats.hp * bar_fill_size.x) / enemy->stats.get(Stats::HP_MAX);
136 if (hp_bar_length == 0 && enemy->stats.hp > 0)
137 hp_bar_length = 1;
138 }
120139
121140 // draw hp bar background
122141 setBackgroundClip(src);
126145 // draw hp bar fill
127146 if (bar_hp) {
128147 src.w = hp_bar_length;
129 src.h = bar_pos.h;
148 src.h = bar_fill_size.y;
149
150 dest.x += bar_fill_offset.x;
151 dest.y += bar_fill_offset.y;
152
130153 bar_hp->setClipFromRect(src);
131154 bar_hp->setDestFromRect(dest);
155
132156 render_device->render(bar_hp);
133157 }
134158
2929 #include "Utils.h"
3030 #include "WidgetLabel.h"
3131
32 class Enemy;
32 class Entity;
3333
3434 class MenuEnemy : public Menu {
3535 private:
3737 Rect bar_pos;
3838 LabelInfo text_pos;
3939 bool custom_text_pos;
40 Point bar_fill_offset;
41 Point bar_fill_size;
42
4043 WidgetLabel label_text;
4144 WidgetLabel label_stats;
4245 public:
4346 MenuEnemy();
4447 ~MenuEnemy();
45 Enemy *enemy;
48 Entity *enemy;
4649 void loadGraphics();
4750 void handleNewMap();
4851 void logic();
2222 */
2323
2424 #include "Avatar.h"
25 #include "EngineSettings.h"
26 #include "FileParser.h"
27 #include "FontEngine.h"
25 #include "MapRenderer.h"
26 #include "MenuConfig.h"
27 #include "MenuConfirm.h"
2828 #include "MenuExit.h"
29 #include "MessageEngine.h"
29 #include "SaveLoad.h"
30 #include "SharedGameResources.h"
3031 #include "SharedResources.h"
31 #include "SharedGameResources.h"
32 #include "Settings.h"
33 #include "SoundManager.h"
34 #include "UtilsParsing.h"
35 #include "WidgetButton.h"
36 #include "WidgetSlider.h"
3732
38 MenuExit::MenuExit() : Menu() {
39
40 buttonExit = new WidgetButton(WidgetButton::DEFAULT_FILE);
41 buttonClose = new WidgetButton(WidgetButton::DEFAULT_FILE);
42
43 // widgets for game options
44 music_volume_sl = new WidgetSlider(WidgetSlider::DEFAULT_FILE);
45 sound_volume_sl = new WidgetSlider(WidgetSlider::DEFAULT_FILE);
46
47 // Load config settings
48 FileParser infile;
49 // @CLASS MenuExit|Description of menus/exit.txt
50 if(infile.open("menus/exit.txt", FileParser::MOD_FILE, FileParser::ERROR_NORMAL)) {
51 while(infile.next()) {
52 if (parseMenuKey(infile.key, infile.val))
53 continue;
54 else if (infile.key == "title") {
55 // @ATTR title|label|Position of the "Paused" text.
56 title_lb.setFromLabelInfo(Parse::popLabelInfo(infile.val));
57 }
58 else if (infile.key == "exit") {
59 // @ATTR exit|point|Position of the "Save and Exit" button.
60 Point p = Parse::toPoint(infile.val);
61 buttonExit->setBasePos(p.x, p.y, Utils::ALIGN_TOPLEFT);
62 }
63 else if (infile.key == "continue") {
64 // @ATTR continue|point|Position of the "Continue" button.
65 Point p = Parse::toPoint(infile.val);
66 buttonClose->setBasePos(p.x, p.y, Utils::ALIGN_TOPLEFT);
67 }
68 else if (infile.key == "music_volume") {
69 // @ATTR music_volume|int, int, int, int : Label X, Label Y, Widget X, Widget Y|Position of the "Music Volume" slider relative to the frame.
70 Rect r = Parse::toRect(infile.val);
71 placeOptionWidgets(&music_volume_lb, music_volume_sl, r.x, r.y, r.w, r.h, msg->get("Music Volume"));
72 }
73 else if (infile.key == "sound_volume") {
74 // @ATTR sound_volume|int, int, int, int : Label X, Label Y, Widget X, Widget Y|Position of the "Sound Volume" slider relative to the frame.
75 Rect r = Parse::toRect(infile.val);
76 placeOptionWidgets(&sound_volume_lb, sound_volume_sl, r.x, r.y, r.w, r.h, msg->get("Sound Volume"));
77 }
78 else
79 infile.error("MenuExit: '%s' is not a valid key.", infile.key.c_str());
80 }
81 infile.close();
82 }
83
84 title_lb.setText(msg->get("Paused"));
85 title_lb.setColor(font->getColor(FontEngine::COLOR_MENU_NORMAL));
86
87 exitClicked = false;
88 reload_music = false;
89
90 exit_msg1 = msg->get("Save & Exit");
91 exit_msg2 = msg->get("Exit");
92
93 buttonExit->setLabel(eset->misc.save_onexit ? exit_msg1 : exit_msg2);
94
95 buttonClose->setLabel(msg->get("Continue"));
96
97 setBackground("images/menus/pause_menu.png");
98
99 if (settings->audio) {
100 music_volume_sl->set(0, 128, settings->music_volume);
101 sound_volume_sl->set(0, 128, settings->sound_volume);
102 }
103 else {
104 music_volume_sl->set(0, 128, 0);
105 sound_volume_sl->set(0, 128, 0);
106 }
107
108 tablist.add(buttonClose);
109 tablist.add(buttonExit);
110 tablist.add(music_volume_sl);
111 tablist.add(sound_volume_sl);
112
33 MenuExit::MenuExit()
34 : Menu()
35 , menu_config(new MenuConfig(!MenuConfig::IS_GAME_STATE))
36 , exitClicked(false)
37 , reload_music(false)
38 {
39 menu_config->setHero(pc);
11340 align();
11441 }
11542
11643 void MenuExit::align() {
11744 Menu::align();
118
119 title_lb.setPos(window_area.x, window_area.y);
120
121 buttonExit->setPos(window_area.x, window_area.y);
122 buttonExit->refresh();
123
124 buttonClose->setPos(window_area.x, window_area.y);
125 buttonClose->refresh();
126
127 for (size_t i=0; i<option_labels.size(); ++i) {
128 option_labels[i]->setPos(window_area.x, window_area.y);
129 }
130
131 for (size_t i=0; i<option_widgets.size(); ++i) {
132 option_widgets[i]->setPos(window_area.x, window_area.y);
133 }
45 menu_config->refreshWidgets();
13446 }
13547
13648 void MenuExit::logic() {
13749 if (visible) {
138 std::string title_str = msg->get("Paused") + " [" + Utils::getTimeString(pc->time_played) + "]";
139 title_lb.setText(title_str);
50 menu_config->logic();
51 }
14052
141 tablist.logic();
53 if (menu_config->reload_music) {
54 reload_music = true;
55 menu_config->reload_music = false;
56 }
14257
143 if (buttonExit->checkClick()) {
144 exitClicked = true;
145 }
146 else if (buttonClose->checkClick()) {
147 visible = false;
148 }
149 else if (settings->audio && music_volume_sl->checkClick()) {
150 if (settings->music_volume == 0)
151 reload_music = true;
152 settings->music_volume = static_cast<short>(music_volume_sl->getValue());
153 snd->setVolumeMusic(settings->music_volume);
154 }
155 else if (settings->audio && sound_volume_sl->checkClick()) {
156 settings->sound_volume = static_cast<short>(sound_volume_sl->getValue());
157 snd->setVolumeSFX(settings->sound_volume);
158 }
58 if (menu_config->clicked_pause_continue) {
59 visible = false;
60 menu_config->clicked_pause_continue = false;
61 }
62 else if (menu_config->clicked_pause_exit) {
63 exitClicked = true;
64 menu_config->clicked_pause_exit = false;
65 }
66
67 else if (menu_config->clicked_pause_save) {
68 visible = false;
69 menu_config->clicked_pause_save = false;
70
71 mapr->respawn_point = pc->stats.pos;
72 save_load->saveGame();
15973 }
16074 }
16175
16478 // background
16579 Menu::render();
16680
167 title_lb.render();
81 menu_config->render();
82 }
83 }
16884
169 buttonExit->render();
170 buttonClose->render();
85 void MenuExit::disableSave() {
86 menu_config->setPauseExitText(!MenuConfig::ENABLE_SAVE_GAME);
87 menu_config->setPauseSaveEnabled(!MenuConfig::ENABLE_SAVE_GAME);
88 }
17189
172 for (size_t i=0; i<option_labels.size(); ++i) {
173 option_labels[i]->render();
174 }
175
176 for (size_t i=0; i<option_widgets.size(); ++i) {
177 option_widgets[i]->render();
90 void MenuExit::handleCancel() {
91 if (!visible) {
92 menu_config->resetSelectedTab();
93 visible = true;
94 }
95 else {
96 if (!menu_config->input_confirm->visible) {
97 visible = false;
17898 }
17999 }
180100 }
181101
182 void MenuExit::placeOptionWidgets(WidgetLabel *lb, Widget *w, int x1, int y1, int x2, int y2, std::string const& str) {
183 if (w) {
184 w->setBasePos(x2, y2, Utils::ALIGN_TOPLEFT);
185 option_widgets.push_back(w);
186 }
187
188 if (lb) {
189 lb->setBasePos(x1, y1, Utils::ALIGN_TOPLEFT);
190 lb->setText(str);
191 lb->setJustify(FontEngine::JUSTIFY_CENTER);
192 option_labels.push_back(lb);
193 }
102 MenuExit::~MenuExit() {
103 delete menu_config;
194104 }
195105
196 void MenuExit::disableSave() {
197 if (buttonExit) {
198 buttonExit->setLabel(exit_msg2);
199 buttonExit->refresh();
200 }
201 }
202
203 MenuExit::~MenuExit() {
204 delete buttonExit;
205 delete buttonClose;
206
207 delete music_volume_sl;
208 delete sound_volume_sl;
209 }
210
2525
2626 #include "CommonIncludes.h"
2727 #include "Menu.h"
28 #include "WidgetLabel.h"
2928
30 class WidgetButton;
31 class WidgetSlider;
29 class MenuConfig;
3230
3331 class MenuExit : public Menu {
3432 protected:
35 void placeOptionWidgets(WidgetLabel *lb, Widget *w, int x1, int y1, int x2, int y2, std::string const& str);
36
37 WidgetButton *buttonExit;
38 WidgetButton *buttonClose;
39 WidgetLabel title_lb;
40
41 WidgetSlider *music_volume_sl;
42 WidgetSlider *sound_volume_sl;
43
44 WidgetLabel music_volume_lb;
45 WidgetLabel sound_volume_lb;
46
33 MenuConfig* menu_config;
4734 bool exitClicked;
48
49 std::vector<WidgetLabel*> option_labels;
50 std::vector<Widget*> option_widgets;
51
52 std::string exit_msg1;
53 std::string exit_msg2;
5435
5536 public:
5637 MenuExit();
5738 ~MenuExit();
5839 void align();
59
6040 void logic();
6141 virtual void render();
6242
6545 }
6646
6747 void disableSave();
48 void handleCancel();
6849
6950 bool reload_music;
7051 };
0 /*
1 Copyright © 2020 Justin Jacobs
2
3 This file is part of FLARE.
4
5 FLARE is free software: you can redistribute it and/or modify it under the terms
6 of the GNU General Public License as published by the Free Software Foundation,
7 either version 3 of the License, or (at your option) any later version.
8
9 FLARE is distributed in the hope that it will be useful, but WITHOUT ANY
10 WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A
11 PARTICULAR PURPOSE. See the GNU General Public License for more details.
12
13 You should have received a copy of the GNU General Public License along with
14 FLARE. If not, see http://www.gnu.org/licenses/
15 */
16
17 #include "FileParser.h"
18 #include "FontEngine.h"
19 #include "InputState.h"
20 #include "MenuGameOver.h"
21 #include "MessageEngine.h"
22 #include "SharedResources.h"
23 #include "UtilsParsing.h"
24 #include "WidgetButton.h"
25
26 #include <string>
27
28 MenuGameOver::MenuGameOver()
29 : Menu()
30 , button_continue(new WidgetButton(WidgetButton::DEFAULT_FILE))
31 , button_exit(new WidgetButton(WidgetButton::DEFAULT_FILE))
32 , continue_clicked(false)
33 , exit_clicked(false)
34 {
35 // default layout
36 window_area = Rect(0,0,192,100);
37 alignment = Utils::ALIGN_CENTER;
38 button_continue->setBasePos(window_area.w/2 - button_continue->pos.w/2, window_area.h/2 - button_continue->pos.h/2, Utils::ALIGN_TOPLEFT);
39 button_exit->setBasePos(window_area.w/2 - button_exit->pos.w/2, window_area.h/2 + button_exit->pos.h/2, Utils::ALIGN_TOPLEFT);
40 label.setJustify(FontEngine::JUSTIFY_CENTER);
41 label.setBasePos(window_area.w/2, 8, Utils::ALIGN_TOPLEFT);
42
43 // Load config settings
44 FileParser infile;
45 // @CLASS MenuGameOver|Description of menus/game_over.txt
46 if(infile.open("menus/game_over.txt", FileParser::MOD_FILE, FileParser::ERROR_NORMAL)) {
47 while(infile.next()) {
48 if (parseMenuKey(infile.key, infile.val))
49 continue;
50 else if (infile.key == "label_title") {
51 // @ATTR label_title|label|Position of the "Game Over" text.
52 label.setFromLabelInfo(Parse::popLabelInfo(infile.val));
53 }
54 else if (infile.key == "button_continue") {
55 // @ATTR button_continue|point|Position of the "Continue" button.
56 Point pos = Parse::toPoint(infile.val);
57 button_continue->setBasePos(pos.x, pos.y, Utils::ALIGN_TOPLEFT);
58 }
59 else if (infile.key == "button_exit") {
60 // @ATTR button_exit|point|Position of the "Exit" button.
61 Point pos = Parse::toPoint(infile.val);
62 button_exit->setBasePos(pos.x, pos.y, Utils::ALIGN_TOPLEFT);
63 }
64 }
65 infile.close();
66 }
67
68 label.setText(msg->get("Game Over"));
69 label.setColor(font->getColor(FontEngine::COLOR_MENU_NORMAL));
70
71 button_continue->setLabel(msg->get("Continue"));
72 button_exit->setLabel(msg->get("Save & Exit"));
73
74 tablist.add(button_continue);
75 tablist.add(button_exit);
76
77 setBackground("images/menus/game_over.png");
78
79 align();
80
81 visible = false;
82 }
83
84 void MenuGameOver::align() {
85 Menu::align();
86
87 button_continue->setPos(window_area.x, window_area.y);
88 button_exit->setPos(window_area.x, window_area.y);
89 label.setPos(window_area.x, window_area.y);
90 }
91
92 void MenuGameOver::logic() {
93 if (!visible)
94 return;
95
96 tablist.logic();
97
98 if (button_continue->checkClick()) {
99 continue_clicked = true;
100 }
101 else if (button_exit->checkClick()) {
102 exit_clicked = true;
103 }
104 }
105
106 void MenuGameOver::close() {
107 visible = false;
108 continue_clicked = false;
109 exit_clicked = false;
110 tablist.defocus();
111 }
112
113 void MenuGameOver::disableSave() {
114 button_continue->enabled = false;
115 button_exit->setLabel(msg->get("Exit"));
116 }
117
118 void MenuGameOver::render() {
119 if (!visible)
120 return;
121
122 // background
123 Menu::render();
124
125 label.render();
126
127 button_continue->render();
128 button_exit->render();
129 }
130
131 MenuGameOver::~MenuGameOver() {
132 delete button_continue;
133 delete button_exit;
134 }
135
0 /*
1 Copyright © 2020 Justin Jacobs
2
3 This file is part of FLARE.
4
5 FLARE is free software: you can redistribute it and/or modify it under the terms
6 of the GNU General Public License as published by the Free Software Foundation,
7 either version 3 of the License, or (at your option) any later version.
8
9 FLARE is distributed in the hope that it will be useful, but WITHOUT ANY
10 WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A
11 PARTICULAR PURPOSE. See the GNU General Public License for more details.
12
13 You should have received a copy of the GNU General Public License along with
14 FLARE. If not, see http://www.gnu.org/licenses/
15 */
16
17 #ifndef MENU_GAMEOVER_H
18 #define MENU_GAMEOVER_H
19
20 #include "CommonIncludes.h"
21 #include "Menu.h"
22 #include "WidgetLabel.h"
23
24 class WidgetButton;
25
26 class MenuGameOver : public Menu {
27 protected:
28 WidgetButton *button_continue;
29 WidgetButton *button_exit;
30 WidgetLabel label;
31
32 public:
33 MenuGameOver();
34 ~MenuGameOver();
35
36 void logic();
37 void align();
38 void close();
39 void disableSave();
40 virtual void render();
41
42 bool continue_clicked;
43 bool exit_clicked;
44 };
45
46 #endif
4545
4646 // Load config settings
4747 FileParser infile;
48 // @CLASS MenuHUDLog|Description of menus/hudlog.txt
4849 if(infile.open("menus/hudlog.txt", FileParser::MOD_FILE, FileParser::ERROR_NORMAL)) {
4950 while(infile.next()) {
5051 if (parseMenuKey(infile.key, infile.val))
2727 #include "CommonIncludes.h"
2828 #include "EffectManager.h"
2929 #include "EngineSettings.h"
30 #include "EventManager.h"
3031 #include "FileParser.h"
3132 #include "FontEngine.h"
3233 #include "Hazard.h"
4647 #include "TooltipManager.h"
4748 #include "UtilsParsing.h"
4849 #include "WidgetButton.h"
49 #include "WidgetCheckBox.h"
5050 #include "WidgetSlot.h"
5151
5252 MenuInventory::MenuInventory()
6868 setBackground("images/menus/inventory.png");
6969
7070 closeButton = new WidgetButton("images/menus/buttons/button_x.png");
71 autoEquipCheckBox = new WidgetCheckBox("images/menus/buttons/auto_equip.png");
72
73 autoEquipCheckBox->setChecked(settings->auto_equip);
74 autoEquipCheckBox->tooltip = msg->get("Automatically equip items");
7571
7672 // Load config settings
7773 FileParser infile;
8682 Point pos = Parse::toPoint(infile.val);
8783 closeButton->setBasePos(pos.x, pos.y, Utils::ALIGN_TOPLEFT);
8884 }
89 // @ATTR auto_equip|point|Position of the auto-equip toggle switch.
90 else if (infile.key == "auto_equip") {
91 Point pos = Parse::toPoint(infile.val);
92 autoEquipCheckBox->setBasePos(pos.x, pos.y, Utils::ALIGN_TOPLEFT);
93 }
9485 // @ATTR equipment_slot|repeatable(int, int, string) : X, Y, Slot Type|Position and item type of an equipment slot.
9586 else if(infile.key == "equipment_slot") {
9687 Rect area;
150141 tablist.add(inventory[CARRIED].slots[i]);
151142 }
152143
153 tablist.add(autoEquipCheckBox);
154
155144 align();
156145 }
157146
170159 inventory[CARRIED].setPos(window_area.x, window_area.y);
171160
172161 closeButton->setPos(window_area.x, window_area.y);
173 autoEquipCheckBox->setPos(window_area.x, window_area.y);
174162
175163 label_inventory.setPos(window_area.x, window_area.y);
176164 label_currency.setPos(window_area.x, window_area.y);
207195
208196 // remove a random carried item
209197 if (eset->death_penalty.item) {
210 std::vector<int> removable_items;
198 std::vector<ItemID> removable_items;
211199 removable_items.clear();
212200 for (int i=0; i < MAX_EQUIPPED; i++) {
213201 if (!inventory[EQUIPMENT][i].empty()) {
223211 }
224212 if (!removable_items.empty()) {
225213 size_t random_item = static_cast<size_t>(rand()) % removable_items.size();
226 remove(removable_items[random_item]);
214 remove(removable_items[random_item], 1);
227215 death_message += msg->get("Lost %s.",items->getItemName(removable_items[random_item]));
228216 }
229217 }
244232 visible = false;
245233 snd->play(sfx_close, snd->DEFAULT_CHANNEL, snd->NO_POS, !snd->LOOP);
246234 }
247 else if (autoEquipCheckBox->checkClick()) {
248 settings->auto_equip = !settings->auto_equip;
249 }
250235
251236 if (drag_prev_src == -1) {
252237 clearHighlight();
264249
265250 // close button
266251 closeButton->render();
267
268 // auto-equip toggle
269 autoEquipCheckBox->render();
270252
271253 // text overlay
272254 label_inventory.render();
561543 if (inventory[CARRIED][slot].empty())
562544 return;
563545
546 // run the item's script if it has one
547 if (!items->items[inventory[CARRIED][slot].item].script.empty()) {
548 EventManager::executeScript(items->items[inventory[CARRIED][slot].item].script, pc->stats.pos.x, pc->stats.pos.y);
549 }
564550 // if the item is a book, open it
565 if (!items->items[inventory[CARRIED][slot].item].book.empty()) {
551 else if (!items->items[inventory[CARRIED][slot].item].book.empty()) {
566552 show_book = items->items[inventory[CARRIED][slot].item].book;
567553 }
568 // use a consumable item
569 else if (!items->items[inventory[CARRIED][slot].item].quest_item &&
570 items->items[inventory[CARRIED][slot].item].type == "consumable" &&
571 items->items[inventory[CARRIED][slot].item].power > 0) {
572
573 int power_id = items->items[inventory[CARRIED][slot].item].power;
554 // use a power attached to a non-equipment item
555 else if (items->items[inventory[CARRIED][slot].item].power > 0 && getEquipSlotFromItem(inventory[CARRIED][slot].item, !ONLY_EMPTY_SLOTS) == -1) {
556 PowerID power_id = items->items[inventory[CARRIED][slot].item].power;
574557
575558 // equipment might want to replace powers, so do it here
576559 for (int i = 0; i < inventory[EQUIPMENT].getSlotNumber(); ++i) {
577 int id = inventory[EQUIPMENT][i].item;
560 ItemID id = inventory[EQUIPMENT][i].item;
578561
579562 for (size_t j = 0; j < items->items[id].replace_power.size(); ++j) {
580 if (power_id == items->items[id].replace_power[j].x) {
581 power_id = items->items[id].replace_power[j].y;
563 if (power_id == items->items[id].replace_power[j].first) {
564 power_id = items->items[id].replace_power[j].second;
582565 break;
583566 }
584567 }
779762 /**
780763 * Remove one given item from the player's inventory.
781764 */
782 bool MenuInventory::remove(int item) {
765 bool MenuInventory::remove(ItemID item, int quantity) {
783766 if (activated_item != 0 && activated_slot != -1 && item == activated_item) {
784767 inventory[CARRIED].subtract(activated_slot, 1);
785768 activated_item = 0;
786769 activated_slot = -1;
787770 }
788 else if(!inventory[CARRIED].remove(item, 1)) {
789 if (!inventory[EQUIPMENT].remove(item, 1)) {
771 else if(!inventory[CARRIED].remove(item, quantity)) {
772 if (!inventory[EQUIPMENT].remove(item, quantity)) {
790773 return false;
791774 }
792775 else {
913896 if (items->items.empty())
914897 return;
915898
916 int item_id;
899 ItemID item_id;
917900
918901 // calculate bonuses to basic stats, added by items
919902 bool checkRequired = true;
939922 }
940923
941924 // calculate bonuses. added by item sets
942 std::vector<int> set;
925 std::vector<ItemSetID> set;
926 std::vector<ItemSetID>::iterator it;
943927 std::vector<int> quantity;
944 std::vector<int>::iterator it;
945928
946929 for (int i=0; i<MAX_EQUIPPED; i++) {
947930 item_id = inventory[EQUIPMENT].storage[i].item;
979962
980963 // defaults
981964 for (unsigned i=0; i<pc->stats.powers_list_items.size(); ++i) {
982 int id = pc->stats.powers_list_items[i];
965 PowerID id = pc->stats.powers_list_items[i];
983966 // pc->stats.hp > 0 is hack to keep on_death revive passives working
984967 if (powers->powers[id].passive && pc->stats.hp > 0)
985968 pc->stats.effects.removeEffectPassive(id);
1005988 }
1006989 // disable any incompatible slots, unequipping items if neccessary
1007990 for (int i=0; i<MAX_EQUIPPED; ++i) {
1008 int id = inventory[EQUIPMENT][i].item;
991 ItemID id = inventory[EQUIPMENT][i].item;
1009992 for (unsigned j=0; j<items->items[id].disable_slots.size(); ++j) {
1010 for (int k=0; k<MAX_EQUIPPED; ++k) {
1011 if (slot_type[k] == items->items[id].disable_slots[j]) {
1012 if (!inventory[EQUIPMENT].storage[k].empty()) {
1013 add(inventory[EQUIPMENT].storage[k], CARRIED, ItemStorage::NO_SLOT, ADD_PLAY_SOUND, !ADD_AUTO_EQUIP);
1014 inventory[EQUIPMENT].storage[k].clear();
1015 updateEquipment(k);
1016 applyEquipment();
1017 }
1018 inventory[EQUIPMENT].slots[k]->enabled = false;
1019 }
1020 }
1021 }
1022 }
993 disableEquipmentSlot(items->items[id].disable_slots[j]);
994 }
995 }
996
997 // disable equipment slots via passive powers
998 for (size_t i=0; i<pc->stats.powers_passive.size(); ++i) {
999 PowerID id = pc->stats.powers_passive[i];
1000 if (!powers->powers[id].passive)
1001 continue;
1002
1003 for (size_t j=0; j<powers->powers[id].disable_equip_slots.size(); ++j) {
1004 disableEquipmentSlot(powers->powers[id].disable_equip_slots[j]);
1005 }
1006 }
1007 for (size_t i=0; i<pc->stats.powers_list_items.size(); ++i) {
1008 PowerID id = pc->stats.powers_list_items[i];
1009 if (!powers->powers[id].passive)
1010 continue;
1011
1012 for (size_t j=0; j<powers->powers[id].disable_equip_slots.size(); ++j) {
1013 disableEquipmentSlot(powers->powers[id].disable_equip_slots[j]);
1014 }
1015 }
1016
10231017 // update stat display
10241018 pc->stats.refresh_stats = true;
10251019 }
10361030
10371031 // apply stats from all items
10381032 for (int i=0; i<MAX_EQUIPPED; i++) {
1039 int item_id = inventory[EQUIPMENT].storage[i].item;
1033 ItemID item_id = inventory[EQUIPMENT].storage[i].item;
10401034 const Item &item = items->items[item_id];
10411035
10421036 // apply base stats
10721066
10731067 void MenuInventory::applyItemSetBonuses() {
10741068 // calculate bonuses. added by item sets
1075 std::vector<int> set;
1069 std::vector<ItemSetID> set;
1070 std::vector<ItemSetID>::iterator it;
10761071 std::vector<int> quantity;
1077 std::vector<int>::iterator it;
10781072
10791073 for (int i=0; i<MAX_EQUIPPED; i++) {
1080 int item_id = inventory[EQUIPMENT].storage[i].item;
1074 ItemID item_id = inventory[EQUIPMENT].storage[i].item;
10811075 it = std::find(set.begin(), set.end(), items->items[item_id].set);
10821076 if (items->items[item_id].set > 0 && it != set.end()) {
10831077 quantity[std::distance(set.begin(), it)] += 1;
11021096 EffectDef ed;
11031097
11041098 if (bdata->is_speed) {
1105 ed.id = ed.type = "speed";
1099 ed.id = "speed";
11061100 }
11071101 else if (bdata->is_attack_speed) {
1108 ed.id = ed.type = "attack_speed";
1102 ed.id = "attack_speed";
11091103 }
11101104 else if (bdata->stat_index != -1) {
1111 ed.id = ed.type = Stats::KEY[bdata->stat_index];
1105 ed.id = Stats::KEY[bdata->stat_index];
11121106 }
11131107 else if (bdata->damage_index_min != -1) {
1114 ed.id = ed.type = eset->damage_types.list[bdata->damage_index_min].min;
1108 ed.id = eset->damage_types.list[bdata->damage_index_min].min;
11151109 }
11161110 else if (bdata->damage_index_max != -1) {
1117 ed.id = ed.type = eset->damage_types.list[bdata->damage_index_max].max;
1111 ed.id = eset->damage_types.list[bdata->damage_index_max].max;
11181112 }
11191113 else if (bdata->resist_index != -1) {
1120 ed.id = ed.type = eset->elements.list[bdata->resist_index].id + "_resist";
1114 ed.id = eset->elements.list[bdata->resist_index].id + "_resist";
11211115 }
11221116 else if (bdata->base_index > -1 && static_cast<size_t>(bdata->base_index) < eset->primary_stats.list.size()) {
1123 ed.id = ed.type = eset->primary_stats.list[bdata->base_index].id;
1117 ed.id = eset->primary_stats.list[bdata->base_index].id;
11241118 }
11251119 else if (bdata->power_id > 0) {
11261120 menu->pow->addBonusLevels(bdata->power_id, bdata->value);
11271121 return; // don't add item effect
11281122 }
11291123
1124 ed.type = Effect::getTypeFromString(ed.id);
1125
11301126 pc->stats.effects.addItemEffect(ed, 0, bdata->value);
11311127 }
11321128
11491145 void MenuInventory::fillEquipmentSlots() {
11501146 // create temporary arrays
11511147 int slot_number = MAX_EQUIPPED;
1152 int *equip_item = new int[slot_number];
1148 ItemID *equip_item = new ItemID[slot_number];
11531149 int *equip_quantity = new int[slot_number];;
11541150
11551151 // initialize arrays
11971193 return 0;
11981194 }
11991195
1200 int MenuInventory::getEquipSlotFromItem(int item, bool only_empty_slots) {
1196 int MenuInventory::getEquipSlotFromItem(ItemID item, bool only_empty_slots) {
12011197 if (!items->requirementsMet(&pc->stats, item))
12021198 return -2;
12031199
12211217 return equip_slot;
12221218 }
12231219
1224 int MenuInventory::getPowerMod(int meta_power) {
1220 PowerID MenuInventory::getPowerMod(PowerID meta_power) {
12251221 for (int i = 0; i < inventory[EQUIPMENT].getSlotNumber(); ++i) {
1226 int id = inventory[EQUIPMENT][i].item;
1222 ItemID id = inventory[EQUIPMENT][i].item;
12271223
12281224 for (size_t j=0; j<items->items[id].replace_power.size(); j++) {
1229 if (items->items[id].replace_power[j].x == meta_power && items->items[id].replace_power[j].y != meta_power) {
1230 return items->items[id].replace_power[j].y;
1225 if (items->items[id].replace_power[j].first == meta_power && items->items[id].replace_power[j].second != meta_power) {
1226 return items->items[id].replace_power[j].second;
12311227 }
12321228 }
12331229 }
12341230
12351231 return 0;
1232 }
1233
1234 void MenuInventory::disableEquipmentSlot(const std::string& disable_slot_type) {
1235 for (int i=0; i<MAX_EQUIPPED; ++i) {
1236 if (slot_type[i] == disable_slot_type) {
1237 if (!inventory[EQUIPMENT].storage[i].empty()) {
1238 add(inventory[EQUIPMENT].storage[i], CARRIED, ItemStorage::NO_SLOT, ADD_PLAY_SOUND, !ADD_AUTO_EQUIP);
1239 inventory[EQUIPMENT].storage[i].clear();
1240 updateEquipment(i);
1241 applyEquipment();
1242 }
1243 inventory[EQUIPMENT].slots[i]->enabled = false;
1244 }
1245 }
1246 }
1247
1248 bool MenuInventory::canActivateItem(ItemID item) {
1249 if (!items->items[item].script.empty())
1250 return true;
1251 if (!items->items[item].book.empty())
1252 return true;
1253 if (items->items[item].power > 0 && getEquipSlotFromItem(item, !ONLY_EMPTY_SLOTS) == -1)
1254 return true;
1255
1256 return false;
12361257 }
12371258
12381259 MenuInventory::~MenuInventory() {
12391260 delete closeButton;
1240 delete autoEquipCheckBox;
1241 }
1261 }
2626 #define MENU_INVENTORY_H
2727
2828 #include "CommonIncludes.h"
29 #include "Menu.h"
2930 #include "MenuItemStorage.h"
3031 #include "Utils.h"
3132 #include "WidgetLabel.h"
3334 class BonusData;
3435 class StatBlock;
3536 class WidgetButton;
36 class WidgetCheckBox;
3737
3838 class MenuInventory : public Menu {
3939 private:
4141
4242 void loadGraphics();
4343 void updateEquipment(int slot);
44 int getEquipSlotFromItem(int item, bool only_empty_slots);
44 int getEquipSlotFromItem(ItemID item, bool only_empty_slots);
4545
4646 WidgetLabel label_inventory;
4747 WidgetLabel label_currency;
4848 WidgetButton *closeButton;
49 WidgetCheckBox *autoEquipCheckBox;
5049
5150 int MAX_EQUIPPED;
5251 int MAX_CARRIED;
6160 Timer tap_to_activate_timer;
6261
6362 int activated_slot;
64 int activated_item;
63 ItemID activated_item;
6564
6665 public:
6766 enum {
9392 void activate(const Point& position);
9493
9594 bool add(ItemStack stack, int area, int slot, bool play_sound, bool auto_equip);
96 bool remove(int item);
95 bool remove(ItemID item, int quantity);
9796 void removeFromPrevSlot(int quantity);
9897 void addCurrency(int count);
9998 void removeCurrency(int count);
10099 bool buy(ItemStack stack, int tab, bool dragging);
101100 bool sell(ItemStack stack);
102101
103 bool requirementsMet(int item);
102 bool requirementsMet(ItemID item);
104103
105104 void applyEquipment();
106105 void applyItemStats();
116115
117116 int getMaxPurchasable(ItemStack item, int vendor_tab);
118117
119 int getPowerMod(int meta_power);
118 PowerID getPowerMod(PowerID meta_power);
119
120 void disableEquipmentSlot(const std::string& slot_type);
121
122 bool canActivateItem(ItemID item);
120123
121124 Rect carried_area;
122125 std::vector<Rect> equipped_area;
3939 , drag_prev_slot(-1)
4040 , slots()
4141 , current_slot(NULL)
42 , highlight(NULL)
42 , highlight()
4343 , highlight_image(NULL)
4444 , overlay_disabled(NULL) {
4545 }
5050 grid_pos.x = _area.x;
5151 grid_pos.y = _area.y;
5252 for (int i = 0; i < _slot_number; i++) {
53 WidgetSlot *slot = new WidgetSlot(WidgetSlot::NO_ICON, Input::ACCEPT, WidgetSlot::SIZE_NORMAL);
53 WidgetSlot *slot = new WidgetSlot(WidgetSlot::NO_ICON, Input::ACCEPT);
5454 slots.push_back(slot);
5555 }
5656 nb_cols = _nb_cols;
57 highlight = new bool[_slot_number];
57 highlight.resize(_slot_number);
5858 for (int i=0; i<_slot_number; i++) {
5959 highlight[i] = false;
6060 slots[i]->pos.x = grid_area.x + (i % nb_cols * eset->resolutions.icon_size);
6868 void MenuItemStorage::initFromList(int _slot_number, const std::vector<Rect>& _area, const std::vector<std::string>& _slot_type) {
6969 ItemStorage::init( _slot_number);
7070 for (int i = 0; i < _slot_number; i++) {
71 WidgetSlot *slot = new WidgetSlot(WidgetSlot::NO_ICON, Input::ACCEPT, WidgetSlot::SIZE_NORMAL);
71 WidgetSlot *slot = new WidgetSlot(WidgetSlot::NO_ICON, Input::ACCEPT);
7272 slot->pos = _area[i];
7373 slot->setBasePos(slot->pos.x, slot->pos.y, Utils::ALIGN_TOPLEFT);
7474 slots.push_back(slot);
7575 }
7676 nb_cols = 0;
7777 slot_type = _slot_type;
78 highlight = new bool[_slot_number];
78 highlight.resize(_slot_number);
7979 for (int i=0; i<_slot_number; i++) {
8080 highlight[i] = false;
8181 }
231231 }
232232 }
233233
234 ItemStack MenuItemStorage::getItemStackAtPos(const Point& position) {
235 int slot_over = slotOver(position);
236 if (slot_over > -1) {
237 return storage[slot_over];
238 }
239 return ItemStack();
240 }
241
234242 MenuItemStorage::~MenuItemStorage() {
235243 if (highlight_image)
236244 delete highlight_image;
237245
238 delete[] highlight;
239
240246 if (overlay_disabled)
241247 delete overlay_disabled;
242248
5555 void highlightMatching(const std::string& type);
5656 void highlightClear();
5757 void setPos(int x, int y);
58 ItemStack getItemStackAtPos(const Point& position);
5859 std::vector<std::string> slot_type;
5960
6061 int drag_prev_slot;
6162 std::vector<WidgetSlot*> slots;
6263 WidgetSlot *current_slot;
6364
64 bool * highlight;
65 std::vector<bool> highlight;
6566 Sprite *highlight_image;
6667 Sprite *overlay_disabled;
6768 };
3434 #include "MenuDevConsole.h"
3535 #include "MenuEnemy.h"
3636 #include "MenuExit.h"
37 #include "MenuGameOver.h"
3738 #include "MenuHUDLog.h"
3839 #include "MenuInventory.h"
3940 #include "MenuLog.h"
5960 #include "UtilsFileSystem.h"
6061 #include "UtilsParsing.h"
6162 #include "WidgetSlot.h"
63 #include "WidgetTooltip.h"
64 #include "TooltipManager.h"
6265
6366 MenuManager::MenuManager()
6467 : key_lock(false)
6871 , drag_stack()
6972 , drag_power(0)
7073 , drag_src(DRAG_SRC_NONE)
71 , drag_icon(new WidgetSlot(WidgetSlot::NO_ICON, Input::ACCEPT, WidgetSlot::SIZE_NORMAL))
74 , drag_icon(new WidgetSlot(WidgetSlot::NO_ICON, Input::ACCEPT))
7275 , done(false)
7376 , act_drag_hover(false)
7477 , keydrag_pos(Point())
75 /*std::vector<Menu*> menus;*/
7678 , inv(NULL)
7779 , pow(NULL)
7880 , chr(NULL)
9193 , exit(NULL)
9294 , effects(NULL)
9395 , stash(NULL)
96 , game_over(NULL)
9497 , devconsole(NULL)
9598 , touch_controls(NULL)
9699 , subtitles(NULL)
97100 , pause(false)
98101 , menus_open(false) {
99102
100 hp = new MenuStatBar("hp");
101 mp = new MenuStatBar("mp");
102 xp = new MenuStatBar("xp");
103 hp = new MenuStatBar(MenuStatBar::TYPE_HP);
104 mp = new MenuStatBar(MenuStatBar::TYPE_MP);
105 xp = new MenuStatBar(MenuStatBar::TYPE_XP);
103106 effects = new MenuActiveEffects();
104107 hudlog = new MenuHUDLog();
105108 act = new MenuActionBar();
115118 stash = new MenuStash();
116119 book = new MenuBook();
117120 num_picker = new MenuNumPicker();
121 game_over = new MenuGameOver();
118122
119123 menus.push_back(hp); // menus[0]
120124 menus.push_back(mp); // menus[1]
134138 menus.push_back(stash); // menus[15]
135139 menus.push_back(book); // menus[16]
136140 menus.push_back(num_picker); // menus[17]
141 menus.push_back(game_over); // menus[18]
137142
138143 if (settings->dev_mode) {
139144 devconsole = new MenuDevConsole();
187192
188193 void MenuManager::handleKeyboardNavigation() {
189194
190 stash->tablist.setNextTabList(NULL);
195 for (size_t i = 0; i < stash->tabs.size(); ++i) {
196 stash->tabs[i].tablist.setNextTabList(NULL);
197 }
191198 vendor->tablist_buy.setNextTabList(NULL);
192199 vendor->tablist_sell.setNextTabList(NULL);
193200 chr->tablist.setNextTabList(NULL);
212219
213220 if (drag_src == DRAG_SRC_NONE) {
214221 if (inv->visible) {
215 stash->tablist.setNextTabList(&inv->tablist);
222 for (size_t i = 0; i < stash->tabs.size(); ++i) {
223 stash->tabs[i].tablist.setNextTabList(&inv->tablist);
224 }
216225 vendor->tablist_buy.setNextTabList(&inv->tablist);
217226 vendor->tablist_sell.setNextTabList(&inv->tablist);
218227 chr->tablist.setNextTabList(&inv->tablist);
232241 }
233242 }
234243 else if (pow->visible) {
235 stash->tablist.setNextTabList(&pow->tablist);
244 for (size_t i = 0; i < stash->tabs.size(); ++i) {
245 stash->tabs[i].tablist.setNextTabList(&pow->tablist);
246 }
236247 vendor->tablist_buy.setNextTabList(&pow->tablist);
237248 vendor->tablist_sell.setNextTabList(&pow->tablist);
238249 chr->tablist.setNextTabList(&pow->tablist);
249260 }
250261
251262 // stash and vendor always start locked
252 if (!stash->visible) stash->tablist.lock();
263 if (!stash->visible) {
264 stash->tablist.lock();
265 for (size_t i = 0; i < stash->tabs.size(); ++i) {
266 stash->tabs[i].tablist.lock();
267 }
268 }
253269 if (!vendor->visible) {
254270 vendor->tablist.lock();
255271 vendor->tablist_buy.lock();
270286 inpt->lock[Input::ACCEPT] = true;
271287 }
272288 }
289
273290 void MenuManager::logic() {
274291 ItemStack stack;
275292
276293 subtitles->logic(snd->getLastPlayedSID());
277294
295 // refresh statbar values from player statblock
278296 hp->update(0, pc->stats.hp, pc->stats.get(Stats::HP_MAX));
279297 mp->update(0, pc->stats.mp, pc->stats.get(Stats::MP_MAX));
280298
282300 xp->setCustomString(msg->get("XP: %d", pc->stats.xp));
283301 }
284302 else {
285 xp->setCustomString(msg->get("XP: %d/%d", pc->stats.xp, eset->xp.getLevelXP(pc->stats.level + 1)));
286 }
287 xp->update(eset->xp.getLevelXP(pc->stats.level), pc->stats.xp, eset->xp.getLevelXP(pc->stats.level + 1));
303 // displays xp relative to current pc level
304 xp->setCustomString(msg->get("XP: %d/%d", pc->stats.xp - eset->xp.getLevelXP(pc->stats.level), eset->xp.getLevelXP(pc->stats.level + 1) - eset->xp.getLevelXP(pc->stats.level)));
305 }
306 // xp relative to current level (from 0 to ammount need for next level)
307 xp->update(0, pc->stats.xp - eset->xp.getLevelXP(pc->stats.level), eset->xp.getLevelXP(pc->stats.level + 1) - eset->xp.getLevelXP(pc->stats.level));
308
309 // close talker/vendor menu if player is attacked
310 if (pc->stats.abort_npc_interact && eset->misc.combat_aborts_npc_interact) {
311 talker->setNPC(NULL);
312 vendor->setNPC(NULL);
313 }
314 pc->stats.abort_npc_interact = false;
288315
289316 // when selecting item quantities, don't process other menus
290317 if (num_picker->visible) {
330357 if (!inpt->usingMouse())
331358 handleKeyboardNavigation();
332359
360 // Check if the mouse is within any of the visible windows. Excludes the minimap and the exit/pause menu
361 bool is_within_menus = (Utils::isWithinRect(act->window_area, inpt->mouse) ||
362 (book->visible && Utils::isWithinRect(book->window_area, inpt->mouse)) ||
363 (chr->visible && Utils::isWithinRect(chr->window_area, inpt->mouse)) ||
364 (inv->visible && Utils::isWithinRect(inv->window_area, inpt->mouse)) ||
365 (vendor->visible && Utils::isWithinRect(vendor->window_area, inpt->mouse)) ||
366 (pow->visible && Utils::isWithinRect(pow->window_area, inpt->mouse)) ||
367 (questlog->visible && Utils::isWithinRect(questlog->window_area, inpt->mouse)) ||
368 (talker->visible && Utils::isWithinRect(talker->window_area, inpt->mouse)) ||
369 (stash->visible && Utils::isWithinRect(stash->window_area, inpt->mouse)) ||
370 (settings->dev_mode && devconsole->visible && Utils::isWithinRect(devconsole->window_area, inpt->mouse)));
371
333372 // Stop attacking if the cursor is inside an interactable menu
334 if (pc->using_main1 || pc->using_main2) {
335 if (Utils::isWithinRect(act->window_area, inpt->mouse) ||
336 (book->visible && Utils::isWithinRect(book->window_area, inpt->mouse)) ||
337 (chr->visible && Utils::isWithinRect(chr->window_area, inpt->mouse)) ||
338 (inv->visible && Utils::isWithinRect(inv->window_area, inpt->mouse)) ||
339 (vendor->visible && Utils::isWithinRect(vendor->window_area, inpt->mouse)) ||
340 (pow->visible && Utils::isWithinRect(pow->window_area, inpt->mouse)) ||
341 (questlog->visible && Utils::isWithinRect(questlog->window_area, inpt->mouse)) ||
342 (talker->visible && Utils::isWithinRect(talker->window_area, inpt->mouse)) ||
343 (stash->visible && Utils::isWithinRect(stash->window_area, inpt->mouse)))
344 {
345 inpt->pressing[Input::MAIN1] = false;
346 inpt->pressing[Input::MAIN2] = false;
347 }
348 }
373 if ((pc->using_main1 || pc->using_main2) && is_within_menus) {
374 inpt->pressing[Input::MAIN1] = false;
375 inpt->pressing[Input::MAIN2] = false;
376 }
377
378 if (!exit->visible && !is_within_menus)
379 mini->logic();
349380
350381 book->logic();
351382 effects->logic();
359390 questlog->logic();
360391 talker->logic();
361392 stash->logic();
393 game_over->logic();
362394
363395 if (settings->dev_mode) {
364396 devconsole->logic();
433465 else if (menus_open) {
434466 closeAll();
435467 }
436 else {
437 exit->visible = !exit->visible;
438 }
439 }
468 else if (!game_over->visible) {
469 exit->handleCancel();
470 }
471 }
472 }
473 if (mini->clicked_config) {
474 mini->clicked_config = false;
475 showExitMenu();
440476 }
441477
442478 if (exit->visible) {
443479 exit->logic();
444480 if (exit->isExitRequested()) {
481 done = true;
482 }
483 // if dpi scaling is changed, we need to realign the menus
484 if (inpt->window_resized) {
485 alignAll();
486 }
487 }
488 else if (game_over->visible) {
489 if (game_over->exit_clicked) {
490 game_over->close();
445491 done = true;
446492 }
447493 }
659705 stash->itemReturn(inv->drop_stack.front());
660706 inv->drop_stack.pop();
661707 }
662 stash->updated = true;
708 stash->tabs[stash->getTab()].updated = true;
663709 }
664710 else {
665711 // start dragging a stash item
729775 }
730776 }
731777 // action bar
732 if (!inpt->touch_locked && (act->isWithinSlots(inpt->mouse) || act->isWithinMenus(inpt->mouse))) {
778 if (!exit->visible && !inpt->touch_locked && (act->isWithinSlots(inpt->mouse) || act->isWithinMenus(inpt->mouse))) {
733779 inpt->lock[Input::MAIN1] = true;
734780
735781 // ctrl-click action bar to clear that slot
809855 }
810856 }
811857 else if (stash->visible && Utils::isWithinRect(stash->window_area, inpt->mouse)) {
812 stash->stock.drag_prev_slot = -1;
858 for (size_t i = 0; i < stash->tabs.size(); ++i) {
859 stash->tabs[i].stock.drag_prev_slot = -1;
860 }
813861 if (!stash->drop(inpt->mouse, drag_stack)) {
814862 inv->itemReturn(stash->drop_stack.front());
815863 stash->drop_stack.pop();
854902 stash->itemReturn(inv->drop_stack.front());
855903 inv->drop_stack.pop();
856904 }
857 stash->updated = true;
905 stash->tabs[stash->getTab()].updated = true;
858906 }
859907 else if (stash->visible && Utils::isWithinRect(stash->window_area, inpt->mouse)) {
860908 if (!stash->drop(inpt->mouse,drag_stack)) {
864912 }
865913 else {
866914 drop_stack.push(drag_stack);
867 stash->updated = true;
915 stash->tabs[stash->getTab()].updated = true;
868916 }
869917 }
870918
10221070 // stash menu
10231071 if (stash->visible && stash->getCurrentTabList() && drag_src != DRAG_SRC_ACTIONBAR) {
10241072 int slot_index = stash->getCurrentTabList()->getCurrent();
1025 WidgetSlot::CLICK_TYPE slotClick = stash->stock.slots[slot_index]->checkClick();
1026 Point src_slot(stash->stock.slots[slot_index]->pos.x, stash->stock.slots[slot_index]->pos.y);
1073 size_t tab = stash->getTab();
1074 WidgetSlot::CLICK_TYPE slotClick = stash->tabs[tab].stock.slots[slot_index]->checkClick();
1075 Point src_slot(stash->tabs[tab].stock.slots[slot_index]->pos.x, stash->tabs[tab].stock.slots[slot_index]->pos.y);
10271076
10281077 // pick up item
10291078 if (slotClick == WidgetSlot::CHECKED && drag_stack.empty()) {
10391088 }
10401089 // rearrange item
10411090 else if (slotClick == WidgetSlot::CHECKED && !drag_stack.empty()) {
1042 stash->stock.slots[slot_index]->checked = false;
1091 stash->tabs[tab].stock.slots[slot_index]->checked = false;
10431092 if (!stash->drop(src_slot, drag_stack)) {
10441093 drop_stack.push(stash->drop_stack.front());
10451094 stash->drop_stack.pop();
10591108 drag_stack.clear();
10601109 keyboard_dragging = false;
10611110 sticky_dragging = false;
1062 stash->updated = true;
1111 stash->tabs[stash->getTab()].updated = true;
10631112 }
10641113 }
10651114
11671216
11681217 vendor->stock[ItemManager::VENDOR_BUY].drag_prev_slot = -1;
11691218 vendor->stock[ItemManager::VENDOR_SELL].drag_prev_slot = -1;
1170 stash->stock.drag_prev_slot = -1;
1219 for (size_t i = 0; i < stash->tabs.size(); ++i) {
1220 stash->tabs[i].stock.drag_prev_slot = -1;
1221 }
11711222 inv->drag_prev_src = -1;
11721223 inv->inventory[MenuInventory::EQUIPMENT].drag_prev_slot = -1;
11731224 inv->inventory[MenuInventory::CARRIED].drag_prev_slot = -1;
12361287 else {
12371288 // Find tooltips depending on mouse position
12381289 if (!book->visible) {
1290 pushMatchingItemsOf(inpt->mouse);
1291
12391292 chr->renderTooltips(inpt->mouse);
12401293 vendor->renderTooltips(inpt->mouse);
12411294 stash->renderTooltips(inpt->mouse);
12421295 pow->renderTooltips(inpt->mouse);
12431296 inv->renderTooltips(inpt->mouse);
12441297 }
1245 effects->renderTooltips(inpt->mouse);
1246 act->renderTooltips(inpt->mouse);
1298 if (!exit->visible) {
1299 effects->renderTooltips(inpt->mouse);
1300 act->renderTooltips(inpt->mouse);
1301 }
12471302 }
12481303 }
12491304
12751330 }
12761331
12771332 void MenuManager::handleKeyboardTooltips() {
1333 if (book->visible)
1334 return;
1335
12781336 if (vendor->visible && vendor->getCurrentTabList() && vendor->getCurrentTabList() != (&vendor->tablist)) {
12791337 int slot_index = vendor->getCurrentTabList()->getCurrent();
12801338
12871345 keydrag_pos.y = vendor->stock[ItemManager::VENDOR_SELL].slots[slot_index]->pos.y;
12881346 }
12891347
1348 pushMatchingItemsOf(keydrag_pos);
12901349 vendor->renderTooltips(keydrag_pos);
12911350 }
12921351
12931352 if (stash->visible && stash->getCurrentTabList()) {
12941353 int slot_index = stash->getCurrentTabList()->getCurrent();
1295
1296 keydrag_pos.x = stash->stock.slots[slot_index]->pos.x;
1297 keydrag_pos.y = stash->stock.slots[slot_index]->pos.y;
1298
1354 size_t tab = stash->getTab();
1355
1356 keydrag_pos.x = stash->tabs[tab].stock.slots[slot_index]->pos.x;
1357 keydrag_pos.y = stash->tabs[tab].stock.slots[slot_index]->pos.y;
1358
1359 pushMatchingItemsOf(keydrag_pos);
12991360 stash->renderTooltips(keydrag_pos);
13001361 }
13011362
13251386 keydrag_pos.y = temp_widget->pos.y;
13261387 }
13271388
1389 pushMatchingItemsOf(keydrag_pos);
13281390 inv->renderTooltips(keydrag_pos);
13291391 }
13301392
13851447 }
13861448
13871449 void MenuManager::showExitMenu() {
1450 if (game_over->visible)
1451 return;
1452
13881453 pause = true;
13891454 closeAll();
1390 if (exit)
1391 exit->visible = true;
1455 if (exit) {
1456 // handleCancel() will show the menu, but only if it is already hidden
1457 // we use handleCancel() here because it will reset the menu to the "Exit" tab
1458 exit->visible = false;
1459 exit->handleCancel();
1460 }
1461 }
1462
1463 void MenuManager::pushMatchingItemsOf(const Point& hov_pos) {
1464 if (!settings->item_compare_tips)
1465 return;
1466
1467 int area = -1;
1468 ItemStack hov_stack;
1469
1470 if (inv->visible && Utils::isWithinRect(inv->window_area, hov_pos)) {
1471 area = inv->areaOver(hov_pos);
1472 if (area == MenuInventory::CARRIED)
1473 hov_stack = inv->inventory[area].getItemStackAtPos(hov_pos);
1474 }
1475 else if (vendor->visible && Utils::isWithinRect(vendor->window_area, hov_pos)) {
1476 area = vendor->getTab();
1477 if (area >= 0)
1478 hov_stack = vendor->stock[area].getItemStackAtPos(hov_pos);
1479 }
1480 else if (stash->visible && Utils::isWithinRect(stash->window_area, hov_pos)) {
1481 area = static_cast<int>(stash->getTab());
1482 if (area >= 0)
1483 hov_stack = stash->tabs[area].stock.getItemStackAtPos(hov_pos);
1484 }
1485
1486 // we assume that a non-empty item type means that there is a primary tooltip
1487 if (hov_stack.item > 0 && !items->items[hov_stack.item].type.empty()) {
1488 size_t tip_index = 1;
1489
1490 //get equipped items of the same type
1491 for (size_t i = 0; i < inv->equipped_area.size(); i++) {
1492 if (tip_index >= TooltipManager::TOOLTIP_COUNT)
1493 break; // can't show any more tooltips
1494
1495 if (inv->slot_type[i] == items->items[hov_stack.item].type) {
1496 if (!inv->inventory[MenuInventory::EQUIPMENT].storage[i].empty()) {
1497 Point match_pos(inv->equipped_area[i].x, inv->equipped_area[i].y);
1498
1499 TooltipData match = inv->inventory[MenuInventory::EQUIPMENT].checkTooltip(match_pos, &pc->stats, ItemManager::PLAYER_INV);
1500 match.addColoredText(msg->get("Equipped"), font->getColor(FontEngine::COLOR_ITEM_FLAVOR));
1501
1502 tooltipm->push(match, hov_pos, TooltipData::STYLE_FLOAT, tip_index);
1503 tip_index++;
1504 }
1505 }
1506 }
1507 }
13921508 }
13931509
13941510 MenuManager::~MenuManager() {
14111527 delete stash;
14121528 delete book;
14131529 delete num_picker;
1530 delete game_over;
14141531
14151532 if (settings->dev_mode) {
14161533 delete devconsole;
2828 #include "ItemManager.h"
2929
3030 class Menu;
31 class MenuActionBar;
32 class MenuActiveEffects;
33 class MenuBook;
34 class MenuCharacter;
35 class MenuDevConsole;
36 class MenuEnemy;
37 class MenuExit;
38 class MenuGameOver;
39 class MenuHUDLog;
3140 class MenuInventory;
32 class MenuPowers;
33 class MenuCharacter;
3441 class MenuLog;
35 class MenuHUDLog;
36 class MenuActionBar;
37 class MenuBook;
38 class MenuStatBar;
3942 class MenuMiniMap;
4043 class MenuNumPicker;
41 class MenuEnemy;
44 class MenuPowers;
45 class MenuStash;
46 class MenuStatBar;
47 class MenuTalker;
48 class MenuTouchControls;
4249 class MenuVendor;
43 class MenuTalker;
44 class MenuExit;
45 class MenuActiveEffects;
46 class MenuStash;
47 class MenuDevConsole;
48 class MenuTouchControls;
4950 class StatBlock;
5051 class Subtitles;
5152 class WidgetSlot;
6970 bool keyboard_dragging;
7071 bool sticky_dragging;
7172 ItemStack drag_stack;
72 int drag_power;
73 PowerID drag_power;
7374 int drag_src;
7475 WidgetSlot *drag_icon;
7576
8485
8586 void handleKeyboardNavigation();
8687 void dragAndDropWithKeyboard();
88 void pushMatchingItemsOf(const Point& hov_pos);
8789
8890 public:
8991 explicit MenuManager();
116118 MenuExit *exit;
117119 MenuActiveEffects *effects;
118120 MenuStash *stash;
121 MenuGameOver *game_over;
119122
120123 MenuDevConsole *devconsole;
121124 MenuTouchControls *touch_controls;
2222 * class MenuMiniMap
2323 */
2424
25 #include "Avatar.h"
2526 #include "CommonIncludes.h"
27 #include "Entity.h"
28 #include "EntityManager.h"
2629 #include "EngineSettings.h"
2730 #include "FileParser.h"
2831 #include "FontEngine.h"
32 #include "InputState.h"
2933 #include "MapCollision.h"
34 #include "MapRenderer.h"
3035 #include "Menu.h"
3136 #include "MenuMiniMap.h"
37 #include "MessageEngine.h"
3238 #include "RenderDevice.h"
3339 #include "Settings.h"
3440 #include "SharedResources.h"
41 #include "SharedGameResources.h"
3542 #include "UtilsParsing.h"
43 #include "WidgetButton.h"
3644 #include "WidgetLabel.h"
3745
3846 #include <cmath>
3947
4048 MenuMiniMap::MenuMiniMap()
41 : color_wall(128,128,128,255)
42 , color_obst(64,64,64,255)
43 , color_hero(255,255,255,255)
49 : color_wall(128,128,128)
50 , color_obst(64,64,64)
51 , color_hero(255,255,255)
52 , color_enemy(255,0,0)
53 , color_ally(255,255,0)
54 , color_npc(0,255,0)
55 , color_teleport(0,191,255)
4456 , map_surface(NULL)
4557 , map_surface_2x(NULL)
58 , map_surface_entities(NULL)
59 , map_surface_entities_2x(NULL)
4660 , label(new WidgetLabel())
4761 , compass(NULL)
62 , button_config(NULL)
4863 , current_zoom(1)
64 , lock_zoom_change(false)
65 , clicked_config(false)
4966 {
5067 std::string bg_filename;
5168
6986 else if (infile.key == "background") {
7087 bg_filename = infile.val;
7188 }
89 // @ATTR color_wall|color, int : Color, Alpha|Color used for walls.
90 else if (infile.key == "color_wall") {
91 color_wall = Parse::toRGBA(infile.val);
92 }
93 // @ATTR color_obst|color, int : Color, Alpha|Color used for small obstacles and pits.
94 else if (infile.key == "color_obst") {
95 color_obst = Parse::toRGBA(infile.val);
96 }
97 // @ATTR color_hero|color, int : Color, Alpha|Color used for the player character.
98 else if (infile.key == "color_hero") {
99 color_hero = Parse::toRGBA(infile.val);
100 }
101 // @ATTR color_enemy|color, int : Color, Alpha|Color used for enemies engaged in combat.
102 else if (infile.key == "color_enemy") {
103 color_enemy = Parse::toRGBA(infile.val);
104 }
105 // @ATTR color_ally|color, int : Color, Alpha|Color used for allies.
106 else if (infile.key == "color_ally") {
107 color_ally = Parse::toRGBA(infile.val);
108 }
109 // @ATTR color_npc|color, int : Color, Alpha|Color used for NPCs.
110 else if (infile.key == "color_npc") {
111 color_npc = Parse::toRGBA(infile.val);
112 }
113 // @ATTR color_teleport|color, int : Color, Alpha|Color used for intermap teleports.
114 else if (infile.key == "color_teleport") {
115 color_teleport = Parse::toRGBA(infile.val);
116 }
117 // @ATTR button_config|point|Position of the 'Configuration' button. The button will be hidden if not defined.
118 else if (infile.key == "button_config") {
119 if (!button_config) {
120 button_config = new WidgetButton("images/menus/buttons/button_config.png");
121 }
122 Point p = Parse::toPoint(infile.val);
123 button_config->setBasePos(p.x, p.y, Utils::ALIGN_TOPLEFT);
124 }
72125 else {
73126 infile.error("MenuMiniMap: '%s' is not a valid key.", infile.key.c_str());
74127 }
94147 gfx->unref();
95148 }
96149
150 if (button_config)
151 button_config->tooltip = msg->get("Configuration");
152
97153 align();
98154 }
99155
100156 void MenuMiniMap::align() {
101157 Menu::align();
102158 label->setPos(window_area.x, window_area.y);
159
160 if (button_config)
161 button_config->setPos(window_area.x, window_area.y);
162
163 map_area.x = window_area.x + pos.x;
164 map_area.y = window_area.y + pos.y;
165 map_area.w = pos.w;
166 map_area.h = pos.h;
103167
104168 // compass
105169 Point compass_pos(window_area.x + pos.x + pos.w - compass->getGraphicsWidth(), pos.y + window_area.y);
128192 }
129193 }
130194
195 void MenuMiniMap::logic() {
196 if (!settings->show_hud || settings->minimap_mode == Settings::MINIMAP_HIDDEN)
197 return;
198
199 if (inpt->usingMouse()) {
200 bool is_within_maparea = Utils::isWithinRect(map_area, inpt->mouse);
201
202 if (!lock_zoom_change)
203 lock_zoom_change = inpt->pressing[Input::MAIN1] && !is_within_maparea;
204 else if (!inpt->pressing[Input::MAIN1])
205 lock_zoom_change = false;
206
207 if (is_within_maparea && inpt->pressing[Input::MAIN1] && !inpt->lock[Input::MAIN1] && !lock_zoom_change) {
208 inpt->lock[Input::MAIN1] = true;
209 if (settings->minimap_mode == Settings::MINIMAP_NORMAL)
210 settings->minimap_mode = Settings::MINIMAP_2X;
211 else if (settings->minimap_mode == Settings::MINIMAP_2X)
212 settings->minimap_mode = Settings::MINIMAP_NORMAL;
213 }
214 }
215
216 if (button_config) {
217 button_config->enabled = !pc->stats.corpse;
218 if (button_config->checkClick()) {
219 clicked_config = true;
220 }
221 }
222 }
223
131224 void MenuMiniMap::render() {
132225 }
133226
149242 if (compass) {
150243 render_device->render(compass);
151244 }
245
246 if (button_config)
247 button_config->render();
152248 }
153249
154250 void MenuMiniMap::prerender(MapCollision *collider, int map_w, int map_h) {
155251 map_size.x = map_w;
156252 map_size.y = map_h;
157253
254 clearEntities();
255
158256 if (eset->tileset.orientation == eset->tileset.TILESET_ISOMETRIC) {
159 prerenderIso(collider, &map_surface, 1);
160 prerenderIso(collider, &map_surface_2x, 2);
257 prerenderIso(collider, &map_surface, &map_surface_entities, 1);
258 prerenderIso(collider, &map_surface_2x, &map_surface_entities_2x, 2);
161259 }
162260 else {
163261 // eset->tileset.TILESET_ORTHOGONAL
164 prerenderOrtho(collider, &map_surface, 1);
165 prerenderOrtho(collider, &map_surface_2x, 2);
262 prerenderOrtho(collider, &map_surface, &map_surface_entities, 1);
263 prerenderOrtho(collider, &map_surface_2x, &map_surface_entities_2x, 2);
166264 }
167265 }
168266
185283 clip.w = pos.w;
186284 clip.h = pos.h;
187285
188 Rect map_area;
189 map_area.x = window_area.x + pos.x;
190 map_area.y = window_area.y + pos.y;
191 map_area.w = pos.w;
192 map_area.h = pos.h;
193
194286 Sprite* target_surface = NULL;
287 Sprite* target_surface_entities = NULL;
195288 if (settings->minimap_mode == Settings::MINIMAP_NORMAL && map_surface) {
196289 target_surface = map_surface;
290 target_surface_entities = map_surface_entities;
197291 }
198292 else if (settings->minimap_mode == Settings::MINIMAP_2X && map_surface_2x) {
199293 target_surface = map_surface_2x;
294 target_surface_entities = map_surface_entities_2x;
200295 }
201296
202297 if (target_surface) {
203 // ensure the clip doesn't exceed the surface dimensions
204 // TODO should this be in RenderDevice?
205 const int target_w = target_surface->getGraphicsWidth();
206 const int target_h = target_surface->getGraphicsHeight();
207 if (clip.x + clip.w > target_w)
208 clip.w = target_w - clip.x;
209 if (clip.y + clip.h > target_h)
210 clip.h = target_h - clip.y;
211
212298 target_surface->setClipFromRect(clip);
213299 target_surface->setDestFromRect(map_area);
214300 render_device->render(target_surface);
215301 }
216302
217 // draw the player cursor
218 Point center(window_area.x + pos.x + pos.w/2, window_area.y + pos.y + pos.h/2);
219 render_device->drawLine(center.x - current_zoom, center.y, center.x + current_zoom, center.y, color_hero);
220 render_device->drawLine(center.x, center.y - current_zoom, center.x, center.y + current_zoom, color_hero);
221 }
222
223 void MenuMiniMap::prerenderOrtho(MapCollision *collider, Sprite** target_surface, int zoom) {
303 if (target_surface_entities) {
304 if (eset->tileset.orientation == eset->tileset.TILESET_ISOMETRIC) {
305 renderEntitiesIso(target_surface_entities, current_zoom);
306 }
307 else {
308 // eset->tileset.TILESET_ORTHOGONAL
309 renderEntitiesOrtho(target_surface_entities, current_zoom);
310 }
311
312 target_surface_entities->setClipFromRect(clip);
313 target_surface_entities->setDestFromRect(map_area);
314 render_device->render(target_surface_entities);
315 }
316 }
317
318 void MenuMiniMap::prerenderOrtho(MapCollision *collider, Sprite** tile_surface, Sprite** entity_surface, int zoom) {
224319 int surface_size = std::max(map_size.x + zoom, map_size.y + zoom) * zoom;
225 createMapSurface(target_surface, surface_size, surface_size);
226
227 if (!(*target_surface))
320 createMapSurface(tile_surface, surface_size, surface_size);
321 createMapSurface(entity_surface, surface_size, surface_size);
322
323 if (!(*tile_surface))
228324 return;
229325
230 Image* target_img = (*target_surface)->getGraphics();
231 const int target_w = (*target_surface)->getGraphicsWidth();
232 const int target_h = (*target_surface)->getGraphicsHeight();
326 Image* target_img = (*tile_surface)->getGraphics();
327 const int target_w = (*tile_surface)->getGraphicsWidth();
328 const int target_h = (*tile_surface)->getGraphicsHeight();
233329
234330 Color draw_color;
235331
244340 else if (tile_type == 2 || tile_type == 6) draw_color = color_obst;
245341 else draw_tile = false;
246342
247 if (draw_tile) {
343 if (draw_tile && draw_color.a != 0) {
248344 for (int l = 0; l < zoom; l++) {
249345 for (int k =0; k < zoom; k++) {
250346 target_img->drawPixel((zoom*i)+k, (zoom*j)+l, draw_color);
257353 target_img->endPixelBatch();
258354 }
259355
260 void MenuMiniMap::prerenderIso(MapCollision *collider, Sprite** target_surface, int zoom) {
356 void MenuMiniMap::prerenderIso(MapCollision *collider, Sprite** tile_surface, Sprite** entity_surface, int zoom) {
261357 int surface_size = std::max(map_size.x + zoom, map_size.y + zoom) * 2 * zoom;
262 createMapSurface(target_surface, surface_size, surface_size);
263
264 if (!(*target_surface))
358 createMapSurface(tile_surface, surface_size, surface_size);
359 createMapSurface(entity_surface, surface_size, surface_size);
360
361 if (!(*tile_surface))
265362 return;
266363
267364 // a 2x1 pixel area correlates to a tile, so we can traverse tiles using pixel counting
274371
275372 bool odd_row = false;
276373
277 Image* target_img = (*target_surface)->getGraphics();
278 const int target_w = (*target_surface)->getGraphicsWidth();
279 const int target_h = (*target_surface)->getGraphicsHeight();
374 Image* target_img = (*tile_surface)->getGraphics();
375 const int target_w = (*tile_surface)->getGraphicsWidth();
376 const int target_h = (*tile_surface)->getGraphicsHeight();
280377
281378 target_img->beginPixelBatch();
282379
297394 else if (tile_type == 2 || tile_type == 6) draw_color = color_obst;
298395 else draw_tile = false;
299396
300 if (draw_tile) {
397 if (draw_tile && draw_color.a != 0) {
301398 if (odd_row) {
302399 for (int l = 0; l < zoom; l++) {
303400 for (int k = 0; k < zoom * 2; k++) {
336433 target_img->endPixelBatch();
337434 }
338435
436 void MenuMiniMap::renderEntitiesOrtho(Sprite* entity_surface, int zoom) {
437 if (!entity_surface)
438 return;
439
440 Color draw_color;
441 int tile_type;
442
443 Image* target_img = entity_surface->getGraphics();
444 const int target_w = entity_surface->getGraphicsWidth();
445 const int target_h = entity_surface->getGraphicsHeight();
446
447 target_img->fillWithColor(Color(0,0,0,0));
448
449 clearEntities();
450 fillEntities();
451
452 target_img->beginPixelBatch();
453
454 for (int i=0; i<std::min(target_w, map_size.x); i++) {
455 for (int j=0; j<std::min(target_h, map_size.y); j++) {
456 bool draw_tile = true;
457 tile_type = entities[i][j];
458
459 if (tile_type == TILE_HERO) draw_color = color_hero;
460 else if (tile_type == TILE_ENEMY) draw_color = color_enemy;
461 else if (tile_type == TILE_NPC) draw_color = color_npc;
462 else if (tile_type == TILE_TELEPORT) draw_color = color_teleport;
463 else if (tile_type == TILE_ALLY) draw_color = color_ally;
464 else draw_tile = false;
465
466 if (draw_tile && draw_color.a != 0) {
467 for (int l = 0; l < zoom; l++) {
468 for (int k =0; k < zoom; k++) {
469 target_img->drawPixel((zoom*i)+k, (zoom*j)+l, draw_color);
470 }
471 }
472 }
473 }
474 }
475
476 target_img->endPixelBatch();
477 }
478
479 void MenuMiniMap::renderEntitiesIso(Sprite* entity_surface, int zoom) {
480 if (!entity_surface)
481 return;
482
483 // a 2x1 pixel area correlates to a tile, so we can traverse tiles using pixel counting
484 Color draw_color;
485 int tile_type;
486
487 Point tile_cursor;
488 tile_cursor.x = -std::max(map_size.x, map_size.y)/2;
489 tile_cursor.y = std::max(map_size.x, map_size.y)/2;
490
491 bool odd_row = false;
492
493 Image* target_img = entity_surface->getGraphics();
494 const int target_w = entity_surface->getGraphicsWidth();
495 const int target_h = entity_surface->getGraphicsHeight();
496
497 target_img->fillWithColor(Color(0,0,0,0));
498
499 clearEntities();
500 fillEntities();
501
502 target_img->beginPixelBatch();
503
504 // for each pixel row
505 for (int j=0; j<target_h; j++) {
506
507 // for each 2-px wide column
508 for (int i=0; i<target_w; i+=2) {
509
510 // if this tile is the max map size
511 if (tile_cursor.x >= 0 && tile_cursor.y >= 0 && tile_cursor.x < map_size.x && tile_cursor.y < map_size.y) {
512
513 tile_type = entities[tile_cursor.x][tile_cursor.y];
514 bool draw_tile = true;
515
516 if (tile_type == TILE_HERO) draw_color = color_hero;
517 else if (tile_type == TILE_ENEMY) draw_color = color_enemy;
518 else if (tile_type == TILE_NPC) draw_color = color_npc;
519 else if (tile_type == TILE_TELEPORT) draw_color = color_teleport;
520 else if (tile_type == TILE_ALLY) draw_color = color_ally;
521 else draw_tile = false;
522
523 if (draw_tile && draw_color.a != 0) {
524 if (odd_row) {
525 for (int l = 0; l < zoom; l++) {
526 for (int k = 0; k < zoom * 2; k++) {
527 target_img->drawPixel((zoom*i)+k, (zoom*j)+l, draw_color);
528 }
529 }
530 }
531 else {
532 for (int l = 0; l < zoom; l++) {
533 for (int k = -((zoom * 2) - zoom); k < zoom; k++) {
534 target_img->drawPixel((zoom*i)+k, (zoom*j)+l, draw_color);
535 }
536 }
537 }
538 }
539 }
540
541 // moving screen-right in isometric is +x -y in map coordinates
542 tile_cursor.x++;
543 tile_cursor.y--;
544 }
545
546 // return tile cursor to next row of tiles
547 if (odd_row) {
548 odd_row = false;
549 tile_cursor.x -= target_w/2;
550 tile_cursor.y += (target_w/2 +1);
551 }
552 else {
553 odd_row = true;
554 tile_cursor.x -= (target_w/2 -1);
555 tile_cursor.y += target_w/2;
556 }
557 }
558
559 target_img->endPixelBatch();
560 }
561
562 void MenuMiniMap::clearEntities() {
563 entities.resize(map_size.x);
564 for (size_t i=0; i<entities.size(); ++i) {
565 entities[i].resize(map_size.y);
566 for (size_t j=0; j<entities[i].size(); ++j) {
567 entities[i][j] = 0;
568 }
569 }
570 }
571
572 void MenuMiniMap::fillEntities() {
573 Point hero = Point(pc->stats.pos);
574 if (hero.x >= 0 && hero.y >= 0 && hero.x < map_size.x && hero.y < map_size.y) {
575 entities[hero.x][hero.y] = TILE_HERO;
576 }
577
578 for (size_t i=0; i<mapr->events.size(); ++i) {
579 EventComponent* ec_minimap = mapr->events[i].getComponent(EventComponent::SHOW_ON_MINIMAP);
580 if (ec_minimap && !ec_minimap->x)
581 continue;
582
583 if (mapr->events[i].getComponent(EventComponent::NPC_HOTSPOT) && EventManager::isActive(mapr->events[i])) {
584 entities[mapr->events[i].location.x][mapr->events[i].location.y] = TILE_NPC;
585 }
586 else if ((mapr->events[i].activate_type == Event::ACTIVATE_ON_TRIGGER || mapr->events[i].activate_type == Event::ACTIVATE_ON_INTERACT) && mapr->events[i].getComponent(EventComponent::INTERMAP) && EventManager::isActive(mapr->events[i])) {
587 // TODO use location when hotspot is inappropriate?
588 Point event_pos(mapr->events[i].location.x, mapr->events[i].location.y);
589 for (int j=event_pos.x; j<event_pos.x + mapr->events[i].location.w; ++j) {
590 for (int k=event_pos.y; k<event_pos.y + mapr->events[i].location.h; ++k) {
591 entities[j][k] = TILE_TELEPORT;
592 }
593 }
594 }
595 }
596
597 for (size_t i=0; i<entitym->entities.size(); ++i) {
598 Entity *e = entitym->entities[i];
599 if (e->stats.hp > 0) {
600 if (e->stats.hero_ally) {
601 entities[static_cast<int>(e->stats.pos.x)][static_cast<int>(e->stats.pos.y)] = TILE_ALLY;
602 }
603 else if (e->stats.in_combat) {
604 entities[static_cast<int>(e->stats.pos.x)][static_cast<int>(e->stats.pos.y)] = TILE_ENEMY;
605 }
606 }
607 }
608 }
609
339610 MenuMiniMap::~MenuMiniMap() {
340611 delete map_surface;
341612 delete map_surface_2x;
613 delete map_surface_entities;
614 delete map_surface_entities_2x;
342615
343616 delete label;
344617 delete compass;
345 }
618 delete button_config;
619 }
2828
2929 class MapCollision;
3030 class Sprite;
31 class WidgetButton;
3132 class WidgetLabel;
3233
3334 class MenuMiniMap : public Menu {
3435 private:
36 enum {
37 TILE_HERO = 1,
38 TILE_ENEMY = 2,
39 TILE_NPC = 3,
40 TILE_TELEPORT = 4,
41 TILE_ALLY = 5
42 };
43
3544 Color color_wall;
3645 Color color_obst;
3746 Color color_hero;
47 Color color_enemy;
48 Color color_ally;
49 Color color_npc;
50 Color color_teleport;
3851
3952 Sprite *map_surface;
4053 Sprite *map_surface_2x;
54 Sprite *map_surface_entities;
55 Sprite *map_surface_entities_2x;
4156 Point map_size;
4257
4358 Rect pos;
4459 WidgetLabel *label;
4560 Sprite *compass;
61 Rect map_area;
62 WidgetButton* button_config;
4663
4764 int current_zoom;
65 bool lock_zoom_change;
66
67 std::vector< std::vector<unsigned short> > entities;
4868
4969 void createMapSurface(Sprite** target_surface, int w, int h);
50 // void renderIso(const FPoint& hero_pos);
51 // void renderOrtho(const FPoint& hero_pos);
5270 void renderMapSurface(const FPoint& hero_pos);
53 void prerenderOrtho(MapCollision *collider, Sprite** target_surface, int zoom);
54 void prerenderIso(MapCollision *collider, Sprite** target_surface, int zoom);
71 void prerenderOrtho(MapCollision *collider, Sprite** tile_surface, Sprite** entity_surface, int zoom);
72 void prerenderIso(MapCollision *collider, Sprite** tile_surface, Sprite** entity_surface, int zoom);
73 void renderEntitiesOrtho(Sprite* entity_surface, int zoom);
74 void renderEntitiesIso(Sprite* entity_surface, int zoom);
75 void clearEntities();
76 void fillEntities();
5577
5678 public:
5779 MenuMiniMap();
5880 ~MenuMiniMap();
5981 void align();
82 void logic();
6083
6184 void render();
6285 void render(const FPoint& hero_pos);
6386 void prerender(MapCollision *collider, int map_w, int map_h);
6487 void setMapTitle(const std::string& map_title);
88
89 bool clicked_config;
6590 };
6691
6792
0 /*
1 Copyright © 2020 Justin Jacobs
2
3 This file is part of FLARE.
4
5 FLARE is free software: you can redistribute it and/or modify it under the terms
6 of the GNU General Public License as published by the Free Software Foundation,
7 either version 3 of the License, or (at your option) any later version.
8
9 FLARE is distributed in the hope that it will be useful, but WITHOUT ANY
10 WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A
11 PARTICULAR PURPOSE. See the GNU General Public License for more details.
12
13 You should have received a copy of the GNU General Public License along with
14 FLARE. If not, see http://www.gnu.org/licenses/
15 */
16
17 #include "FileParser.h"
18 #include "FontEngine.h"
19 #include "InputState.h"
20 #include "MenuMovementType.h"
21 #include "MessageEngine.h"
22 #include "Platform.h"
23 #include "RenderDevice.h"
24 #include "Settings.h"
25 #include "SharedResources.h"
26 #include "UtilsParsing.h"
27 #include "WidgetButton.h"
28
29 #include <string>
30
31 MenuMovementType::MenuMovementType()
32 : Menu()
33 , button_keyboard(new WidgetButton(WidgetButton::DEFAULT_FILE))
34 , button_mouse(new WidgetButton(WidgetButton::DEFAULT_FILE))
35 , button_joystick(new WidgetButton(WidgetButton::DEFAULT_FILE))
36 , icon_keyboard(NULL)
37 , icon_mouse(NULL)
38 , icon_joystick(NULL)
39 {
40 // Load config settings
41 FileParser infile;
42 // @CLASS MenuMovementType|Description of menus/movement_type.txt
43 if(infile.open("menus/movement_type.txt", FileParser::MOD_FILE, FileParser::ERROR_NORMAL)) {
44 while(infile.next()) {
45 if (parseMenuKey(infile.key, infile.val))
46 continue;
47 else if (infile.key == "label_title") {
48 // @ATTR label_title|label|Position of the "Select a Movement Type" text.
49 label_title.setFromLabelInfo(Parse::popLabelInfo(infile.val));
50 }
51 else if (infile.key == "label_config_hint") {
52 // @ATTR label_config_hint|label|Position of the "Can be changed later in the Configuration menu" text.
53 label_config_hint.setFromLabelInfo(Parse::popLabelInfo(infile.val));
54 }
55 else if (infile.key == "button_keyboard") {
56 // @ATTR button_keyboard|point|Position of the "Keyboard" button.
57 Point pos = Parse::toPoint(infile.val);
58 button_keyboard->setBasePos(pos.x, pos.y, Utils::ALIGN_TOPLEFT);
59 }
60 else if (infile.key == "button_mouse") {
61 // @ATTR button_mouse|point|Position of the "Mouse" button.
62 Point pos = Parse::toPoint(infile.val);
63 button_mouse->setBasePos(pos.x, pos.y, Utils::ALIGN_TOPLEFT);
64 }
65 else if (infile.key == "button_joystick") {
66 // @ATTR button_joystick|point|Position of the "Joystick" button.
67 Point pos = Parse::toPoint(infile.val);
68 button_joystick->setBasePos(pos.x, pos.y, Utils::ALIGN_TOPLEFT);
69 }
70 else if (infile.key == "icon_keyboard") {
71 // @ATTR icon_keyboard|point|Position of the keyboard icon.
72 icon_keyboard_pos = Parse::toPoint(infile.val);
73 }
74 else if (infile.key == "icon_mouse") {
75 // @ATTR icon_mouse|point|Position of the mouse icon.
76 icon_mouse_pos = Parse::toPoint(infile.val);
77 }
78 else if (infile.key == "icon_joystick") {
79 // @ATTR icon_joystick|point|Position of the joystick icon.
80 icon_joystick_pos = Parse::toPoint(infile.val);
81 }
82 }
83 infile.close();
84 }
85
86 label_title.setText(msg->get("Select a Movement Type"));
87 label_title.setColor(font->getColor(FontEngine::COLOR_MENU_NORMAL));
88 label_config_hint.setText(msg->get("Can be changed later in the Configuration menu."));
89 label_config_hint.setColor(font->getColor(FontEngine::COLOR_WIDGET_DISABLED));
90
91 button_keyboard->setLabel(msg->get("Keyboard"));
92 button_mouse->setLabel(msg->get("Mouse"));
93 button_joystick->setLabel(msg->get("Joystick"));
94
95 tablist.ignore_no_mouse = true;
96 tablist.add(button_keyboard);
97 tablist.add(button_mouse);
98 tablist.add(button_joystick);
99
100 setBackground("images/menus/movement_type.png");
101
102 // load icons
103 Image *graphics;
104 graphics = render_device->loadImage("images/menus/movement_type_keyboard.png", RenderDevice::ERROR_NORMAL);
105 if (graphics) {
106 icon_keyboard = graphics->createSprite();
107 graphics->unref();
108 }
109 graphics = render_device->loadImage("images/menus/movement_type_mouse.png", RenderDevice::ERROR_NORMAL);
110 if (graphics) {
111 icon_mouse = graphics->createSprite();
112 graphics->unref();
113 }
114 graphics = render_device->loadImage("images/menus/movement_type_joystick.png", RenderDevice::ERROR_NORMAL);
115 if (graphics) {
116 icon_joystick = graphics->createSprite();
117 graphics->unref();
118 }
119
120 // button tooltips
121 button_keyboard->tooltip = msg->get("Keyboard") + "\n\n" + \
122 msg->get("Up") + ": " + inpt->getBindingString(Input::UP) + "\n" + \
123 msg->get("Left") + ": " + inpt->getBindingString(Input::LEFT) + "\n" + \
124 msg->get("Down") + ": " + inpt->getBindingString(Input::DOWN) + "\n" + \
125 msg->get("Right") + ": " + inpt->getBindingString(Input::RIGHT);
126
127 button_mouse->tooltip = msg->get("Mouse") + "\n\n" + \
128 msg->get("Button") + ": " + inpt->getBindingString(settings->mouse_move_swap ? Input::MAIN2 : Input::MAIN1);
129
130 button_joystick->tooltip = msg->get("Joystick") + "\n\n" + \
131 msg->get("Up") + ": " + inpt->getBindingString(Input::UP, InputState::BINDING_JOYSTICK) + "\n" + \
132 msg->get("Left") + ": " + inpt->getBindingString(Input::LEFT, InputState::BINDING_JOYSTICK) + "\n" + \
133 msg->get("Down") + ": " + inpt->getBindingString(Input::DOWN, InputState::BINDING_JOYSTICK) + "\n" + \
134 msg->get("Right") + ": " + inpt->getBindingString(Input::RIGHT, InputState::BINDING_JOYSTICK);
135
136 align();
137
138 visible = false;
139 }
140
141 void MenuMovementType::align() {
142 Menu::align();
143
144 label_title.setPos(window_area.x, window_area.y);
145 label_config_hint.setPos(window_area.x, window_area.y);
146
147 button_keyboard->setPos(window_area.x, window_area.y);
148 button_mouse->setPos(window_area.x, window_area.y);
149 button_joystick->setPos(window_area.x, window_area.y);
150
151 if (icon_keyboard)
152 icon_keyboard->setDest(window_area.x + icon_keyboard_pos.x, window_area.y + icon_keyboard_pos.y);
153 if (icon_mouse)
154 icon_mouse->setDest(window_area.x + icon_mouse_pos.x, window_area.y + icon_mouse_pos.y);
155 if (icon_joystick)
156 icon_joystick->setDest(window_area.x + icon_joystick_pos.x, window_area.y + icon_joystick_pos.y);
157 }
158
159 void MenuMovementType::logic() {
160 if (!visible)
161 return;
162
163 tablist.logic();
164
165 button_joystick->enabled = (inpt->getNumJoysticks() > 0 && platform.config_input[Platform::Input::JOYSTICK]);
166
167 if (button_keyboard->checkClick()) {
168 settings->mouse_move = false;
169 settings->enable_joystick = false;
170 settings->joystick_device = -1;
171 close();
172 }
173 else if (button_mouse->checkClick()) {
174 settings->mouse_move = true;
175 settings->no_mouse = false;
176 settings->mouse_aim = true;
177 settings->enable_joystick = false;
178 settings->joystick_device = -1;
179 close();
180 }
181 else if (button_joystick->checkClick()) {
182 settings->mouse_move = false;
183 settings->enable_joystick = true;
184 if (settings->joystick_device == -1)
185 settings->joystick_device = 0;
186 close();
187 }
188 }
189
190 void MenuMovementType::close() {
191 visible = false;
192 tablist.defocus();
193
194 inpt->initJoystick();
195 inpt->joysticks_changed = false;
196
197 settings->move_type_dimissed = true;
198 settings->saveSettings();
199 }
200
201 void MenuMovementType::render() {
202 if (!visible)
203 return;
204
205 // background
206 Menu::render();
207
208 label_title.render();
209 label_config_hint.render();
210
211 button_keyboard->render();
212 button_mouse->render();
213 button_joystick->render();
214
215 render_device->render(icon_keyboard);
216 render_device->render(icon_mouse);
217 render_device->render(icon_joystick);
218 }
219
220 MenuMovementType::~MenuMovementType() {
221 delete button_keyboard;
222 delete button_mouse;
223 delete button_joystick;
224
225 delete icon_keyboard;
226 delete icon_mouse;
227 delete icon_joystick;
228 }
229
0 /*
1 Copyright © 2020 Justin Jacobs
2
3 This file is part of FLARE.
4
5 FLARE is free software: you can redistribute it and/or modify it under the terms
6 of the GNU General Public License as published by the Free Software Foundation,
7 either version 3 of the License, or (at your option) any later version.
8
9 FLARE is distributed in the hope that it will be useful, but WITHOUT ANY
10 WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A
11 PARTICULAR PURPOSE. See the GNU General Public License for more details.
12
13 You should have received a copy of the GNU General Public License along with
14 FLARE. If not, see http://www.gnu.org/licenses/
15 */
16
17 #ifndef MENU_MOVEMENT_TYPE_H
18 #define MENU_MOVEMENT_TYPE_H
19
20 #include "CommonIncludes.h"
21 #include "Menu.h"
22 #include "Utils.h"
23 #include "WidgetLabel.h"
24
25 class WidgetButton;
26
27 class MenuMovementType : public Menu {
28 protected:
29 WidgetButton *button_keyboard;
30 WidgetButton *button_mouse;
31 WidgetButton *button_joystick;
32 WidgetLabel label_title;
33 WidgetLabel label_config_hint;
34
35 Sprite *icon_keyboard;
36 Sprite *icon_mouse;
37 Sprite *icon_joystick;
38
39 Point icon_keyboard_pos;
40 Point icon_mouse_pos;
41 Point icon_joystick_pos;
42
43 public:
44 MenuMovementType();
45 ~MenuMovementType();
46
47 void logic();
48 void align();
49 void close();
50 virtual void render();
51 };
52
53 #endif
3232 #include "FontEngine.h"
3333 #include "Menu.h"
3434 #include "MenuActionBar.h"
35 #include "MenuInventory.h"
3536 #include "MenuManager.h"
3637 #include "MenuPowers.h"
3738 #include "MessageEngine.h"
5354
5455 MenuPowersCell::MenuPowersCell()
5556 : id(-1)
57 , requires_point(false)
5658 , requires_level(0)
57 , requires_point(false)
5859 , requires_primary(eset->primary_stats.list.size(), 0)
5960 , requires_power()
60 , visible_requires_status()
61 , visible_requires_not()
61 , requires_status()
62 , requires_not_status()
63 , visible(true)
64 , visible_when_locked(true)
6265 , upgrade_level(0)
6366 , passive_on(false)
6467 , is_unlocked(false)
6568 , group(0)
6669 , next(NULL) {
67 }
68
69 bool MenuPowersCell::isVisible() {
70 for (size_t i = 0; i < visible_requires_status.size(); ++i)
71 if (!camp->checkStatus(visible_requires_status[i]))
72 return false;
73
74 for (size_t i = 0; i < visible_requires_not.size(); ++i)
75 if (camp->checkStatus(visible_requires_not[i]))
76 return false;
77
78 return true;
7970 }
8071
8172 MenuPowersCellGroup::MenuPowersCellGroup()
131122 , label_unspent(new WidgetLabel)
132123 , tab_control(NULL)
133124 , tree_loaded(false)
134 , prev_powers_list_size(0)
135125 , default_power_tab(-1)
136126 , newPowerNotification(false)
137127 {
352342
353343 // create power slots
354344 for (size_t i=0; i<slots.size(); i++) {
355 if (!power_cell[i].cells.empty() && static_cast<size_t>(power_cell[i].cells[0].id) < powers->powers.size()) {
356 slots[i] = new WidgetSlot(powers->powers[power_cell[i].cells[0].id].icon, Input::ACCEPT, WidgetSlot::SIZE_NORMAL);
345 if (!power_cell[i].cells.empty() && !powers->powers[power_cell[i].cells[0].id].is_empty) {
346 slots[i] = new WidgetSlot(powers->powers[power_cell[i].cells[0].id].icon, Input::ACCEPT);
357347 slots[i]->setBasePos(power_cell[i].pos.x, power_cell[i].pos.y, Utils::ALIGN_TOPLEFT);
358348
359349 if (!tablist_pow.empty()) {
393383 }
394384
395385 void MenuPowers::loadPower(FileParser &infile) {
386 // base power cell storage hasn't been set up!
387 if (power_cell.back().cells.empty())
388 return;
389
396390 // @ATTR power.id|int|A power id from powers/powers.txt for this slot.
397391 if (infile.key == "id") {
398392 int id = Parse::popFirstInt(infile.val);
399393 if (id > 0) {
400394 skip_section = false;
401 power_cell.back().cells.back().id = id;
395 power_cell.back().cells[0].id = id;
402396 }
403397 else {
404398 infile.error("MenuPowers: Power index out of bounds 1-%d, skipping power.", INT_MAX);
406400 return;
407401 }
408402
409 if (power_cell.back().cells.back().id <= 0) {
403 if (power_cell.back().cells[0].id <= 0) {
410404 skip_section = true;
411405 power_cell.pop_back();
412406 slots.pop_back();
421415 // @ATTR power.position|point|Position of this power icon; relative to MenuPowers "pos".
422416 else if (infile.key == "position") power_cell.back().pos = Parse::toPoint(infile.val);
423417
418 // @ATTR power.requires_point|bool|Power requires a power point to unlock.
419 else if (infile.key == "requires_point") power_cell.back().cells[0].requires_point = Parse::toBool(infile.val);
420
424421 // @ATTR power.requires_primary|predefined_string, int : Primary stat name, Required value|Power requires this primary stat to be at least the specificed value.
425422 else if (infile.key == "requires_primary") {
426423 std::string prim_stat = Parse::popFirstString(infile.val);
427424 size_t prim_stat_index = eset->primary_stats.getIndexByID(prim_stat);
428425
429426 if (prim_stat_index != eset->primary_stats.list.size()) {
430 power_cell.back().cells.back().requires_primary[prim_stat_index] = Parse::toInt(infile.val);
427 power_cell.back().cells[0].requires_primary[prim_stat_index] = Parse::toInt(infile.val);
431428 }
432429 else {
433430 infile.error("MenuPowers: '%s' is not a valid primary stat.", prim_stat.c_str());
434431 }
435432 }
436 // @ATTR power.requires_point|bool|Power requires a power point to unlock.
437 else if (infile.key == "requires_point") power_cell.back().cells.back().requires_point = Parse::toBool(infile.val);
438433 // @ATTR power.requires_level|int|Power requires at least this level for the hero.
439 else if (infile.key == "requires_level") power_cell.back().cells.back().requires_level = Parse::toInt(infile.val);
434 else if (infile.key == "requires_level") power_cell.back().cells[0].requires_level = Parse::toInt(infile.val);
440435 // @ATTR power.requires_power|power_id|Power requires another power id.
441 else if (infile.key == "requires_power") power_cell.back().cells.back().requires_power.push_back(Parse::toInt(infile.val));
442
443 // @ATTR power.visible_requires_status|repeatable(string)|Hide the power if we don't have this campaign status.
444 else if (infile.key == "visible_requires_status") power_cell.back().cells.back().visible_requires_status.push_back(camp->registerStatus(infile.val));
445 // @ATTR power.visible_requires_not_status|repeatable(string)|Hide the power if we have this campaign status.
446 else if (infile.key == "visible_requires_not_status") power_cell.back().cells.back().visible_requires_not.push_back(camp->registerStatus(infile.val));
436 else if (infile.key == "requires_power") power_cell.back().cells[0].requires_power.push_back(Parse::toPowerID(infile.val));
437 // @ATTR power.requires_status|repeatable(string)|Power requires this campaign status.
438 else if (infile.key == "requires_status") power_cell.back().cells[0].requires_status.push_back(camp->registerStatus(infile.val));
439 // @ATTR power.requires_not_status|repeatable(string)|Power requires not having this campaign status.
440 else if (infile.key == "requires_not_status") power_cell.back().cells[0].requires_not_status.push_back(camp->registerStatus(infile.val));
441
442 // @ATTR power.visible_requires_status|repeatable(string)|(Deprecated as of v1.11.75) Hide the power if we don't have this campaign status.
443 else if (infile.key == "visible_requires_status") {
444 infile.error("MenuPowers: visible_requires_status is deprecated. Use requires_status and visible_when_locked=false instead.");
445 power_cell.back().cells[0].requires_status.push_back(camp->registerStatus(infile.val));
446 power_cell.back().cells[0].visible_when_locked = false;
447 }
448 // @ATTR power.visible_requires_not_status|repeatable(string)|(Deprecated as of v1.11.75) Hide the power if we have this campaign status.
449 else if (infile.key == "visible_requires_not_status") {
450 infile.error("MenuPowers: visible_requires_not_status is deprecated. Use requires_not_status and visible_when_locked=false instead.");
451 power_cell.back().cells[0].requires_not_status.push_back(camp->registerStatus(infile.val));
452 power_cell.back().cells[0].visible_when_locked = false;
453 }
447454
448455 // @ATTR power.upgrades|list(power_id)|A list of upgrade power ids that this power slot can upgrade to. Each of these powers should have a matching upgrade section.
449456 else if (infile.key == "upgrades") {
450457 std::string repeat_val = Parse::popFirstString(infile.val);
451458 while (repeat_val != "") {
452 power_cell.back().cells.push_back(MenuPowersCell());
453 power_cell.back().cells.back().id = Parse::toInt(repeat_val);
459 PowerID test_id = Parse::toPowerID(repeat_val);
460 if (test_id == power_cell.back().cells[0].id) {
461 infile.error("MenuPowers: Upgrade ID '%d' is the same as the base ID. Ignoring.", test_id);
462 }
463 else {
464 power_cell.back().cells.push_back(MenuPowersCell());
465 power_cell.back().cells.back().id = test_id;
466 }
454467 repeat_val = Parse::popFirstString(infile.val);
455468 }
456469
460473 power_cell.back().upgrade_button = new WidgetButton("images/menus/buttons/button_plus.png");
461474 }
462475 }
476
477 // @ATTR power.visible|bool|Controls whether or not a power is visible or hidden regardless of unlocked state. Defaults to true.
478 else if (infile.key == "visible") power_cell.back().cells[0].visible = Parse::toBool(infile.val);
479 // @ATTR power.visible_when_locked|bool|Controls whether or not a power is visible or hidden when the power is locked. Defaults to true.
480 else if (infile.key == "visible_when_locked") power_cell.back().cells[0].visible_when_locked = Parse::toBool(infile.val);
463481
464482 else infile.error("MenuPowers: '%s' is not a valid key.", infile.key.c_str());
465483 }
500518 // @ATTR upgrade.requires_level|int|Upgrade requires at least this level for the hero.
501519 else if (infile.key == "requires_level") power_cell_upgrade.back().requires_level = Parse::toInt(infile.val);
502520 // @ATTR upgrade.requires_power|int|Upgrade requires another power id.
503 else if (infile.key == "requires_power") power_cell_upgrade.back().requires_power.push_back(Parse::toInt(infile.val));
504
505 // @ATTR upgrade.visible_requires_status|repeatable(string)|Hide the upgrade if we don't have this campaign status.
506 else if (infile.key == "visible_requires_status") power_cell_upgrade.back().visible_requires_status.push_back(camp->registerStatus(infile.val));
507 // @ATTR upgrade.visible_requires_not_status|repeatable(string)|Hide the upgrade if we have this campaign status.
508 else if (infile.key == "visible_requires_not_status") power_cell_upgrade.back().visible_requires_not.push_back(camp->registerStatus(infile.val));
521 else if (infile.key == "requires_power") power_cell_upgrade.back().requires_power.push_back(Parse::toPowerID(infile.val));
522 // @ATTR upgrade.requires_status|repeatable(string)|Upgrade requires this campaign status.
523 else if (infile.key == "requires_status") power_cell_upgrade.back().requires_status.push_back(camp->registerStatus(infile.val));
524 // @ATTR upgrade.requires_not_status|repeatable(string)|Upgrade requires not having this campaign status.
525 else if (infile.key == "requires_not_status") power_cell_upgrade.back().requires_not_status.push_back(camp->registerStatus(infile.val));
526
527 // @ATTR upgrade.visible_requires_status|repeatable(string)|(Deprecated as of v1.11.75) Hide the upgrade if we don't have this campaign status.
528 else if (infile.key == "visible_requires_status") {
529 infile.error("MenuPowers: visible_requires_status is deprecated. Use requires_status and visible_when_locked=false instead.");
530 power_cell_upgrade.back().requires_status.push_back(camp->registerStatus(infile.val));
531 power_cell_upgrade.back().visible_when_locked = false;
532 }
533 // @ATTR upgrade.visible_requires_not_status|repeatable(string)|(Deprecated as of v1.11.75) Hide the upgrade if we have this campaign status.
534 else if (infile.key == "visible_requires_not_status") {
535 infile.error("MenuPowers: visible_requires_not_status is deprecated. Use requires_not_status and visible_when_locked=false instead.");
536 power_cell_upgrade.back().requires_not_status.push_back(camp->registerStatus(infile.val));
537 power_cell_upgrade.back().visible_when_locked = false;
538 }
539
540 // @ATTR upgrade.visible|bool|Controls whether or not a power is visible or hidden regardless of unlocked state. Defaults to true.
541 else if (infile.key == "visible") power_cell_upgrade.back().visible = Parse::toBool(infile.val);
542 // @ATTR upgrade.visible_when_locked|bool|Controls whether or not a power is visible or hidden when the power is locked. Defaults to true.
543 else if (infile.key == "visible_when_locked") power_cell_upgrade.back().visible_when_locked = Parse::toBool(infile.val);
509544
510545 else infile.error("MenuPowers: '%s' is not a valid key.", infile.key.c_str());
511546 }
514549 if (!pcell)
515550 return false;
516551
552 if (pc->stats.level < pcell->requires_level)
553 return false;
554
555 for (size_t i = 0; i < eset->primary_stats.list.size(); ++i) {
556 if (pc->stats.get_primary(i) < pcell->requires_primary[i])
557 return false;
558 }
559
560 for (size_t i = 0; i < pcell->requires_status.size(); ++i)
561 if (!camp->checkStatus(pcell->requires_status[i]))
562 return false;
563
564 for (size_t i = 0; i < pcell->requires_not_status.size(); ++i)
565 if (camp->checkStatus(pcell->requires_not_status[i]))
566 return false;
567
517568 for (size_t i = 0; i < pcell->requires_power.size(); ++i) {
518569 if (!checkUnlocked(getCellByPowerIndex(pcell->requires_power[i])))
519 return false;
520 }
521
522 if (pc->stats.level < pcell->requires_level)
523 return false;
524
525 for (size_t i = 0; i < eset->primary_stats.list.size(); ++i) {
526 if (pc->stats.get_primary(i) < pcell->requires_primary[i])
527570 return false;
528571 }
529572
541584 // If this power is not in the menu, than it has no requirements
542585 if (!pcell)
543586 return true;
544
545 if (!pcell->isVisible())
546 return false;
547587
548588 // If power_id is saved into vector, it's unlocked anyway
549589 // check if the unlocked flag is set and check the player's power list
568608 if (!pcell)
569609 return true;
570610
571 if (!pcell->isVisible())
572 return false;
573
574611 // If we already have a power, don't try to unlock it
575612 if (checkUnlocked(pcell))
576613 return false;
600637
601638 // remove passive effects
602639 if (powers->powers[pcell->id].passive && pcell->passive_on) {
603 std::vector<int>::iterator passive_it = std::find(pc->stats.powers_passive.begin(), pc->stats.powers_passive.end(), pcell->id);
640 std::vector<PowerID>::iterator passive_it = std::find(pc->stats.powers_passive.begin(), pc->stats.powers_passive.end(), pcell->id);
604641 if (passive_it != pc->stats.powers_passive.end())
605642 pc->stats.powers_passive.erase(passive_it);
606643
610647 }
611648
612649 // remove from player's power list
613 std::vector<int>::iterator it = std::find(pc->stats.powers_list.begin(), pc->stats.powers_list.end(), pcell->id);
650 std::vector<PowerID>::iterator it = std::find(pc->stats.powers_list.begin(), pc->stats.powers_list.end(), pcell->id);
614651 if (it != pc->stats.powers_list.end())
615652 pc->stats.powers_list.erase(it);
616653
617654 // remove from action bar
618655 menu->act->addPower(0, pcell->id);
619656
620 // lock higher levels as well
621 MenuPowersCell* next_cell = pcell->next;
622 while (next_cell) {
623 lockCell(next_cell);
624 next_cell = next_cell->next;
657 // lock higher levels as well (careful: recursion)
658 if (pcell->next) {
659 lockCell(pcell->next);
625660 }
626661 }
627662
635670 return pcell == power_cell[pcell->group].getBonusCurrent(power_cell[pcell->group].getCurrent());
636671 }
637672
638 MenuPowersCell* MenuPowers::getCellByPowerIndex(int power_index) {
673 bool MenuPowers::isCellVisible(MenuPowersCell* pcell) {
674 if (!pcell)
675 return false;
676
677 if (!pcell->visible)
678 return false;
679
680 if (!pcell->visible_when_locked && !checkUnlocked(pcell))
681 return false;
682
683 return true;
684 }
685
686 MenuPowersCell* MenuPowers::getCellByPowerIndex(PowerID power_index) {
639687 // Powers can not have an id of 0
640 if (power_index <= 0)
688 if (power_index == 0)
641689 return NULL;
642690
643691 // Find cell with our power
686734 }
687735
688736 if (power_cell[i].cells[j].is_unlocked) {
689 if (!power_cell[i].cells[j].isVisible() || !checkRequirements(&power_cell[i].cells[j])) {
737 if (!checkRequirements(&power_cell[i].cells[j])) {
690738 lockCell(&power_cell[i].cells[j]);
691739 did_cell_lock = true;
692740 }
720768 for (size_t j = 0; j < power_cell[i].cells.size(); ++j) {
721769 MenuPowersCell* pcell = &power_cell[i].cells[j];
722770
723 if (pcell != bonus_pcell || ((!checkRequirements(pcell) || (!pcell->is_unlocked && !isBonusCell(pcell))) && pcell->passive_on)) {
771 if (pcell != bonus_pcell || (pcell->passive_on && powers->powers[pcell->id].passive && (!checkRequirements(current_pcell) || (!pcell->is_unlocked && !isBonusCell(pcell))))) {
724772 // passive power is activated, but does not meet requirements, so remove it
725 std::vector<int>::iterator passive_it = std::find(pc->stats.powers_passive.begin(), pc->stats.powers_passive.end(), pcell->id);
726 if (passive_it != pc->stats.powers_passive.end())
773 std::vector<PowerID>::iterator passive_it = std::find(pc->stats.powers_passive.begin(), pc->stats.powers_passive.end(), pcell->id);
774 if (passive_it != pc->stats.powers_passive.end()) {
727775 pc->stats.powers_passive.erase(passive_it);
728776
729 pc->stats.effects.removeEffectPassive(pcell->id);
730 pcell->passive_on = false;
731 pc->stats.refresh_stats = true;
732 }
733 else if (pcell == bonus_pcell && checkRequirements(current_pcell) && !pcell->passive_on) {
777 pc->stats.effects.removeEffectPassive(pcell->id);
778 pcell->passive_on = false;
779 pc->stats.refresh_stats = true;
780
781 // passive powers can lock equipment slots, so update equipment here
782 menu->inv->applyEquipment();
783 }
784 }
785 else if (pcell == bonus_pcell && !pcell->passive_on && powers->powers[pcell->id].passive && checkRequirements(current_pcell)) {
734786 // passive power has not been activated, so activate it here
735 std::vector<int>::iterator passive_it = std::find(pc->stats.powers_passive.begin(), pc->stats.powers_passive.end(), pcell->id);
736 if (passive_it == pc->stats.powers_passive.end())
787 std::vector<PowerID>::iterator passive_it = std::find(pc->stats.powers_passive.begin(), pc->stats.powers_passive.end(), pcell->id);
788 if (passive_it == pc->stats.powers_passive.end()) {
737789 pc->stats.powers_passive.push_back(pcell->id);
738790
739 pcell->passive_on = true;
740 // for passives without special triggers, we need to trigger them here
741 if (pc->stats.effects.triggered_others)
742 powers->activateSinglePassive(&pc->stats, pcell->id);
791 pcell->passive_on = true;
792 // for passives without special triggers, we need to trigger them here
793 if (pc->stats.effects.triggered_others)
794 powers->activateSinglePassive(&pc->stats, pcell->id);
795
796 // passive powers can lock equipment slots, so update equipment here
797 menu->inv->applyEquipment();
798 }
743799 }
744800 }
745801
762818 return used;
763819 }
764820
765 void MenuPowers::createTooltip(TooltipData* tip_data, MenuPowersCell* pcell, bool show_unlock_prompt) {
766 if (!pcell)
821 void MenuPowers::createTooltipFromActionBar(TooltipData* tip_data, unsigned slot, int tooltip_length) {
822 if (slot >= menu->act->hotkeys.size() || slot >= menu->act->hotkeys_mod.size())
767823 return;
768824
769 MenuPowersCell* pcell_bonus = power_cell[pcell->group].getBonusCurrent(pcell);
770
771 const Power &pwr = powers->powers[pcell_bonus->id];
825 PowerID power_index = menu->act->hotkeys[slot];
826 PowerID mod_power_index = menu->act->hotkeys_mod[slot];
827
828 PowerID pindex = mod_power_index;
829 MenuPowersCell* pcell = getCellByPowerIndex(pindex);
830
831 // action bar slot is modded and not found in the menu
832 if (power_index != mod_power_index && !pcell) {
833 PowerID test_pindex = power_index;
834 MenuPowersCell* test_pcell = getCellByPowerIndex(test_pindex);
835
836 // non-modded power found in the menu; use it instead
837 if (test_pcell) {
838 pindex = test_pindex;
839 pcell = test_pcell;
840 }
841 // else, neither is found in the menu, so default to the modded power
842 }
843
844 createTooltip(tip_data, pcell, pindex, false, tooltip_length);
845 }
846
847 void MenuPowers::createTooltip(TooltipData* tip_data, MenuPowersCell* pcell, PowerID power_index, bool show_unlock_prompt, int tooltip_length) {
848
849 MenuPowersCell* pcell_bonus = NULL;
850 if (pcell) {
851 pcell_bonus = power_cell[pcell->group].getBonusCurrent(pcell);
852 }
853 const Power &pwr = pcell_bonus ? powers->powers[pcell_bonus->id] : powers->powers[power_index];
772854
773855 {
774856 std::stringstream ss;
775857 ss << pwr.name;
776 if (pcell->upgrade_level > 0) {
858 if (pcell && pcell->upgrade_level > 0) {
777859 ss << " (" << msg->get("Level %d", pcell->upgrade_level);
778860 int bonus_levels = power_cell[pcell->group].getBonusLevels();
779861 if (bonus_levels > 0)
783865 tip_data->addText(ss.str());
784866 }
785867
868 if (tooltip_length == MenuPowers::TOOLTIP_SHORT || (!pcell && tooltip_length != MenuPowers::TOOLTIP_LONG_ALL))
869 return;
870
786871 if (pwr.passive) tip_data->addText(msg->get("Passive"));
787 tip_data->addColoredText(Utils::substituteVarsInString(pwr.description, pc), font->getColor(FontEngine::COLOR_ITEM_FLAVOR));
872 if (pwr.description != "") {
873 tip_data->addColoredText(Utils::substituteVarsInString(pwr.description, pc), font->getColor(FontEngine::COLOR_ITEM_FLAVOR));
874 }
788875
789876 // add mana cost
790877 if (pwr.requires_mp > 0) {
796883 }
797884 // add cooldown time
798885 if (pwr.cooldown > 0) {
799 std::stringstream ss;
800 ss << msg->get("Cooldown:") << " " << Utils::getDurationString(pwr.cooldown, 2);
801 tip_data->addText(ss.str());
886 tip_data->addText(msg->get("Cooldown:") + " " + Utils::getDurationString(pwr.cooldown, 2));
802887 }
803888
804889 for (size_t i=0; i<pwr.post_effects.size(); ++i) {
805890 std::stringstream ss;
806891 EffectDef* effect_ptr = powers->getEffectDef(pwr.post_effects[i].id);
807892
808 // base stats
809 if (effect_ptr == NULL) {
893 int effect_type = Effect::NONE;
894 if (effect_ptr) {
895 effect_type = effect_ptr->type;
896 }
897 else {
898 effect_type = Effect::getTypeFromString(pwr.post_effects[i].id);
899 }
900
901 if (Effect::typeIsStat(effect_type) ||
902 Effect::typeIsDmgMin(effect_type) ||
903 Effect::typeIsDmgMax(effect_type) ||
904 Effect::typeIsResist(effect_type) ||
905 Effect::typeIsPrimary(effect_type))
906 {
810907 if (pwr.post_effects[i].magnitude > 0) {
811908 ss << "+";
812909 }
813
814910 ss << pwr.post_effects[i].magnitude;
815 bool found_key = false;
816
817 for (int j=0; j<Stats::COUNT; ++j) {
818 if (pwr.post_effects[i].id == Stats::KEY[j]) {
819 if (Stats::PERCENT[j])
820 ss << "%";
821
822 ss << " " << Stats::NAME[j];
823
824 found_key = true;
825 break;
826 }
827 }
828
829 if (!found_key) {
830 for (size_t j=0; j<eset->elements.list.size(); ++j) {
831 if (pwr.post_effects[i].id == eset->elements.list[j].id + "_resist") {
832 ss << "% " << msg->get("Resistance (%s)", eset->elements.list[j].name);
833 found_key = true;
834 break;
835 }
836 }
837 }
838
839 if (!found_key) {
840 for (size_t j=0; j<eset->primary_stats.list.size(); ++j) {
841 if (pwr.post_effects[i].id == eset->primary_stats.list[j].id) {
842 ss << " " << eset->primary_stats.list[j].name;
843 found_key = true;
844 break;
845 }
846 }
847 }
848
849 // NOTE don't need to set found_key after this, since this is the last set of keys to check
850 if (!found_key) {
851 for (size_t j=0; j<eset->damage_types.list.size(); ++j) {
852 if (pwr.post_effects[i].id == eset->damage_types.list[j].min) {
853 ss << " " << eset->damage_types.list[j].name_min;
854 break;
855 }
856 else if (pwr.post_effects[i].id == eset->damage_types.list[j].max) {
857 ss << " " << eset->damage_types.list[j].name_max;
858 break;
859 }
860 }
861 }
862 }
863 else {
864 if (effect_ptr->type == "damage") {
865 ss << pwr.post_effects[i].magnitude << " " << msg->get("Damage per second");
866 }
867 else if (effect_ptr->type == "damage_percent") {
868 ss << pwr.post_effects[i].magnitude << "% " << msg->get("Damage per second");
869 }
870 else if (effect_ptr->type == "hpot") {
871 ss << pwr.post_effects[i].magnitude << " " << msg->get("HP per second");
872 }
873 else if (effect_ptr->type == "hpot_percent") {
874 ss << pwr.post_effects[i].magnitude << "% " << msg->get("HP per second");
875 }
876 else if (effect_ptr->type == "mpot") {
877 ss << pwr.post_effects[i].magnitude << " " << msg->get("MP per second");
878 }
879 else if (effect_ptr->type == "mpot_percent") {
880 ss << pwr.post_effects[i].magnitude << "% " << msg->get("MP per second");
881 }
882 else if (effect_ptr->type == "speed") {
883 if (pwr.post_effects[i].magnitude == 0)
884 ss << msg->get("Immobilize");
911 }
912
913 if (Effect::typeIsStat(effect_type)) {
914 int index = Effect::getStatFromType(effect_type);
915 if (Stats::PERCENT[index]) {
916 ss << "%";
917 }
918 ss << " " << Stats::NAME[index];
919 }
920 else if (Effect::typeIsDmgMin(effect_type)) {
921 size_t index = Effect::getDmgFromType(effect_type);
922 ss << " " << eset->damage_types.list[index].name_min;
923 }
924 else if (Effect::typeIsDmgMax(effect_type)) {
925 size_t index = Effect::getDmgFromType(effect_type);
926 ss << " " << eset->damage_types.list[index].name_max;
927 }
928 else if (Effect::typeIsResist(effect_type)) {
929 size_t index = Effect::getResistFromType(effect_type);
930 ss << "% " << msg->get("Resistance (%s)", eset->elements.list[index].name);
931 }
932 else if (Effect::typeIsPrimary(effect_type)) {
933 size_t index = Effect::getPrimaryFromType(effect_type);
934 ss << " " << eset->primary_stats.list[index].name;
935 }
936 else if (effect_type == Effect::DAMAGE) {
937 ss << pwr.post_effects[i].magnitude << " " << msg->get("Damage per second");
938 }
939 else if (effect_type == Effect::DAMAGE_PERCENT) {
940 ss << pwr.post_effects[i].magnitude << "% " << msg->get("Damage per second");
941 }
942 else if (effect_type == Effect::HPOT) {
943 ss << pwr.post_effects[i].magnitude << " " << msg->get("HP per second");
944 }
945 else if (effect_type == Effect::HPOT_PERCENT) {
946 ss << pwr.post_effects[i].magnitude << "% " << msg->get("HP per second");
947 }
948 else if (effect_type == Effect::MPOT) {
949 ss << pwr.post_effects[i].magnitude << " " << msg->get("MP per second");
950 }
951 else if (effect_type == Effect::MPOT_PERCENT) {
952 ss << pwr.post_effects[i].magnitude << "% " << msg->get("MP per second");
953 }
954 else if (effect_type == Effect::SPEED) {
955 if (pwr.post_effects[i].magnitude == 0)
956 ss << msg->get("Immobilize");
957 else
958 ss << msg->get("%d%% Speed", pwr.post_effects[i].magnitude);
959 }
960 else if (effect_type == Effect::ATTACK_SPEED) {
961 ss << msg->get("%d%% Attack Speed", pwr.post_effects[i].magnitude);
962 }
963 else if (effect_type == Effect::IMMUNITY) {
964 ss << msg->get("Immunity");
965 }
966 else if (effect_type == Effect::IMMUNITY_DAMAGE) {
967 ss << msg->get("Immunity to damage over time");
968 }
969 else if (effect_type == Effect::IMMUNITY_SLOW) {
970 ss << msg->get("Immunity to slow");
971 }
972 else if (effect_type == Effect::IMMUNITY_STUN) {
973 ss << msg->get("Immunity to stun");
974 }
975 else if (effect_type == Effect::IMMUNITY_HP_STEAL) {
976 ss << msg->get("Immunity to HP steal");
977 }
978 else if (effect_type == Effect::IMMUNITY_MP_STEAL) {
979 ss << msg->get("Immunity to MP steal");
980 }
981 else if (effect_type == Effect::IMMUNITY_KNOCKBACK) {
982 ss << msg->get("Immunity to knockback");
983 }
984 else if (effect_type == Effect::IMMUNITY_DAMAGE_REFLECT) {
985 ss << msg->get("Immunity to damage reflection");
986 }
987
988 // TODO Effect::IMMUNITY_STAT_DEBUFF?
989
990 else if (effect_type == Effect::STUN) {
991 ss << msg->get("Stun");
992 }
993 else if (effect_type == Effect::REVIVE) {
994 ss << msg->get("Automatic revive on death");
995 }
996 else if (effect_type == Effect::CONVERT) {
997 ss << msg->get("Convert");
998 }
999 else if (effect_type == Effect::FEAR) {
1000 ss << msg->get("Fear");
1001 }
1002 else if (effect_type == Effect::DEATH_SENTENCE) {
1003 ss << msg->get("Lifespan");
1004 }
1005 else if (effect_type == Effect::SHIELD) {
1006 if (pwr.base_damage == eset->damage_types.list.size())
1007 continue;
1008
1009 if (pwr.mod_damage_mode == Power::STAT_MODIFIER_MODE_MULTIPLY) {
1010 int magnitude = pc->stats.getDamageMax(pwr.base_damage) * pwr.mod_damage_value_min / 100;
1011 ss << magnitude;
1012 }
1013 else if (pwr.mod_damage_mode == Power::STAT_MODIFIER_MODE_ADD) {
1014 int magnitude = pc->stats.getDamageMax(pwr.base_damage) + pwr.mod_damage_value_min;
1015 ss << magnitude;
1016 }
1017 else if (pwr.mod_damage_mode == Power::STAT_MODIFIER_MODE_ABSOLUTE) {
1018 if (pwr.mod_damage_value_max == 0 || pwr.mod_damage_value_min == pwr.mod_damage_value_max)
1019 ss << pwr.mod_damage_value_min;
8851020 else
886 ss << msg->get("%d%% Speed", pwr.post_effects[i].magnitude);
887 }
888 else if (effect_ptr->type == "attack_speed") {
889 ss << msg->get("%d%% Attack Speed", pwr.post_effects[i].magnitude);
890 }
891 else if (effect_ptr->type == "immunity") {
892 ss << msg->get("Immunity");
893 }
894 else if (effect_ptr->type == "immunity_damage") {
895 ss << msg->get("Immunity to damage over time");
896 }
897 else if (effect_ptr->type == "immunity_slow") {
898 ss << msg->get("Immunity to slow");
899 }
900 else if (effect_ptr->type == "immunity_stun") {
901 ss << msg->get("Immunity to stun");
902 }
903 else if (effect_ptr->type == "immunity_hp_steal") {
904 ss << msg->get("Immunity to HP steal");
905 }
906 else if (effect_ptr->type == "immunity_mp_steal") {
907 ss << msg->get("Immunity to MP steal");
908 }
909 else if (effect_ptr->type == "immunity_knockback") {
910 ss << msg->get("Immunity to knockback");
911 }
912 else if (effect_ptr->type == "immunity_damage_reflect") {
913 ss << msg->get("Immunity to damage reflection");
914 }
915 else if (effect_ptr->type == "stun") {
916 ss << msg->get("Stun");
917 }
918 else if (effect_ptr->type == "revive") {
919 ss << msg->get("Automatic revive on death");
920 }
921 else if (effect_ptr->type == "convert") {
922 ss << msg->get("Convert");
923 }
924 else if (effect_ptr->type == "fear") {
925 ss << msg->get("Fear");
926 }
927 else if (effect_ptr->type == "death_sentence") {
928 ss << msg->get("Lifespan");
929 }
930 else if (effect_ptr->type == "shield") {
931 if (pwr.base_damage == eset->damage_types.list.size())
932 continue;
933
934 if (pwr.mod_damage_mode == Power::STAT_MODIFIER_MODE_MULTIPLY) {
935 int magnitude = pc->stats.getDamageMax(pwr.base_damage) * pwr.mod_damage_value_min / 100;
936 ss << magnitude;
937 }
938 else if (pwr.mod_damage_mode == Power::STAT_MODIFIER_MODE_ADD) {
939 int magnitude = pc->stats.getDamageMax(pwr.base_damage) + pwr.mod_damage_value_min;
940 ss << magnitude;
941 }
942 else if (pwr.mod_damage_mode == Power::STAT_MODIFIER_MODE_ABSOLUTE) {
943 if (pwr.mod_damage_value_max == 0 || pwr.mod_damage_value_min == pwr.mod_damage_value_max)
944 ss << pwr.mod_damage_value_min;
945 else
946 ss << pwr.mod_damage_value_min << "-" << pwr.mod_damage_value_max;
947 }
948 else {
949 ss << pc->stats.getDamageMax(pwr.base_damage);
950 }
951
952 ss << " " << msg->get("Magical Shield");
953 }
954 else if (effect_ptr->type == "heal") {
955 if (pwr.base_damage == eset->damage_types.list.size())
956 continue;
957
958 int mag_min = pc->stats.getDamageMin(pwr.base_damage);
959 int mag_max = pc->stats.getDamageMax(pwr.base_damage);
960
961 if (pwr.mod_damage_mode == Power::STAT_MODIFIER_MODE_MULTIPLY) {
962 mag_min = mag_min * pwr.mod_damage_value_min / 100;
963 mag_max = mag_max * pwr.mod_damage_value_min / 100;
964 ss << mag_min << "-" << mag_max;
965 }
966 else if (pwr.mod_damage_mode == Power::STAT_MODIFIER_MODE_ADD) {
967 mag_min = mag_min + pwr.mod_damage_value_min;
968 mag_max = mag_max + pwr.mod_damage_value_min;
969 ss << mag_min << "-" << mag_max;
970 }
971 else if (pwr.mod_damage_mode == Power::STAT_MODIFIER_MODE_ABSOLUTE) {
972 if (pwr.mod_damage_value_max == 0 || pwr.mod_damage_value_min == pwr.mod_damage_value_max)
973 ss << pwr.mod_damage_value_min;
974 else
975 ss << pwr.mod_damage_value_min << "-" << pwr.mod_damage_value_max;
976 }
977 else {
978 ss << mag_min << "-" << mag_max;
979 }
980
981 ss << " " << msg->get("Healing");
982 }
983 else if (effect_ptr->type == "knockback") {
984 ss << pwr.post_effects[i].magnitude << " " << msg->get("Knockback");
985 }
986 else if (!effect_ptr->name.empty() && pwr.post_effects[i].magnitude > 0) {
987 if (effect_ptr->can_stack)
988 ss << "+";
989 ss << pwr.post_effects[i].magnitude << " " << msg->get(effect_ptr->name);
990 }
991 else if (pwr.post_effects[i].magnitude == 0) {
992 // nothing
993 }
1021 ss << pwr.mod_damage_value_min << "-" << pwr.mod_damage_value_max;
1022 }
1023 else {
1024 ss << pc->stats.getDamageMax(pwr.base_damage);
1025 }
1026
1027 ss << " " << msg->get("Magical Shield");
1028 }
1029 else if (effect_type == Effect::HEAL) {
1030 if (pwr.base_damage == eset->damage_types.list.size())
1031 continue;
1032
1033 int mag_min = pc->stats.getDamageMin(pwr.base_damage);
1034 int mag_max = pc->stats.getDamageMax(pwr.base_damage);
1035
1036 if (pwr.mod_damage_mode == Power::STAT_MODIFIER_MODE_MULTIPLY) {
1037 mag_min = mag_min * pwr.mod_damage_value_min / 100;
1038 mag_max = mag_max * pwr.mod_damage_value_min / 100;
1039 ss << mag_min << "-" << mag_max;
1040 }
1041 else if (pwr.mod_damage_mode == Power::STAT_MODIFIER_MODE_ADD) {
1042 mag_min = mag_min + pwr.mod_damage_value_min;
1043 mag_max = mag_max + pwr.mod_damage_value_min;
1044 ss << mag_min << "-" << mag_max;
1045 }
1046 else if (pwr.mod_damage_mode == Power::STAT_MODIFIER_MODE_ABSOLUTE) {
1047 if (pwr.mod_damage_value_max == 0 || pwr.mod_damage_value_min == pwr.mod_damage_value_max)
1048 ss << pwr.mod_damage_value_min;
1049 else
1050 ss << pwr.mod_damage_value_min << "-" << pwr.mod_damage_value_max;
1051 }
1052 else {
1053 ss << mag_min << "-" << mag_max;
1054 }
1055
1056 ss << " " << msg->get("Healing");
1057 }
1058 else if (effect_type == Effect::KNOCKBACK) {
1059 ss << pwr.post_effects[i].magnitude << " " << msg->get("Knockback");
1060 }
1061 else if (effect_ptr && !effect_ptr->name.empty() && pwr.post_effects[i].magnitude > 0) {
1062 if (effect_ptr->can_stack)
1063 ss << "+";
1064 ss << pwr.post_effects[i].magnitude << " " << msg->get(effect_ptr->name);
1065 }
1066 else if (pwr.post_effects[i].magnitude == 0) {
1067 // nothing
9941068 }
9951069
9961070 if (!ss.str().empty()) {
9971071 if (pwr.post_effects[i].duration > 0) {
998 if (effect_ptr && effect_ptr->type == "death_sentence") {
1072 if (effect_type == Effect::DEATH_SENTENCE) {
9991073 ss << ": " << Utils::getDurationString(pwr.post_effects[i].duration, 2);
10001074 }
10011075 else {
11151189 }
11161190 }
11171191
1118 // add requirement
1119 for (size_t i = 0; i < eset->primary_stats.list.size(); ++i) {
1120 if (pcell->requires_primary[i] > 0) {
1121 if (pc->stats.get_primary(i) < pcell->requires_primary[i])
1122 tip_data->addColoredText(msg->get("Requires %s %d", eset->primary_stats.list[i].name, pcell->requires_primary[i]), font->getColor(FontEngine::COLOR_MENU_PENALTY));
1192 if (pcell) {
1193 // add requirement
1194 for (size_t i = 0; i < eset->primary_stats.list.size(); ++i) {
1195 if (pcell->requires_primary[i] > 0) {
1196 if (pc->stats.get_primary(i) < pcell->requires_primary[i])
1197 tip_data->addColoredText(msg->get("Requires %s %d", eset->primary_stats.list[i].name, pcell->requires_primary[i]), font->getColor(FontEngine::COLOR_MENU_PENALTY));
1198 else
1199 tip_data->addText(msg->get("Requires %s %d", eset->primary_stats.list[i].name, pcell->requires_primary[i]));
1200 }
1201 }
1202
1203 // Draw required Level Tooltip
1204 if ((pcell->requires_level > 0) && pc->stats.level < pcell->requires_level) {
1205 tip_data->addColoredText(msg->get("Requires Level %d", pcell->requires_level), font->getColor(FontEngine::COLOR_MENU_PENALTY));
1206 }
1207 else if ((pcell->requires_level > 0) && pc->stats.level >= pcell->requires_level) {
1208 tip_data->addText(msg->get("Requires Level %d", pcell->requires_level));
1209 }
1210
1211 for (size_t j=0; j < pcell->requires_power.size(); ++j) {
1212 MenuPowersCell* req_cell = getCellByPowerIndex(pcell->requires_power[j]);
1213 if (!req_cell)
1214 continue;
1215
1216 std::string req_power_name;
1217 if (req_cell->upgrade_level > 0)
1218 req_power_name = powers->powers[req_cell->id].name + " (" + msg->get("Level %d", req_cell->upgrade_level) + ")";
11231219 else
1124 tip_data->addText(msg->get("Requires %s %d", eset->primary_stats.list[i].name, pcell->requires_primary[i]));
1125 }
1126 }
1127
1128 // Draw required Level Tooltip
1129 if ((pcell->requires_level > 0) && pc->stats.level < pcell->requires_level) {
1130 tip_data->addColoredText(msg->get("Requires Level %d", pcell->requires_level), font->getColor(FontEngine::COLOR_MENU_PENALTY));
1131 }
1132 else if ((pcell->requires_level > 0) && pc->stats.level >= pcell->requires_level) {
1133 tip_data->addText(msg->get("Requires Level %d", pcell->requires_level));
1134 }
1135
1136 for (size_t j=0; j < pcell->requires_power.size(); ++j) {
1137 MenuPowersCell* req_cell = getCellByPowerIndex(pcell->requires_power[j]);
1138 if (!req_cell)
1139 continue;
1140
1141 std::string req_power_name;
1142 if (req_cell->upgrade_level > 0)
1143 req_power_name = powers->powers[req_cell->id].name + " (" + msg->get("Level %d", req_cell->upgrade_level) + ")";
1144 else
1145 req_power_name = powers->powers[req_cell->id].name;
1146
1147
1148 // Required Power Tooltip
1149 if (!checkUnlocked(req_cell)) {
1150 tip_data->addColoredText(msg->get("Requires Power: %s", req_power_name), font->getColor(FontEngine::COLOR_MENU_PENALTY));
1151 }
1152 else {
1153 tip_data->addText(msg->get("Requires Power: %s", req_power_name));
1154 }
1155
1156 }
1157
1158 // Draw unlock power Tooltip
1159 if (pcell->requires_point && !(std::find(pc->stats.powers_list.begin(), pc->stats.powers_list.end(), pcell->id) != pc->stats.powers_list.end())) {
1160 MenuPowersCell* unlock_cell = getCellByPowerIndex(pcell->id);
1161 if (show_unlock_prompt && points_left > 0 && checkUnlock(unlock_cell)) {
1162 tip_data->addColoredText(msg->get("Click to Unlock (uses 1 Skill Point)"), font->getColor(FontEngine::COLOR_MENU_BONUS));
1163 }
1164 else {
1165 if (pcell->requires_point && points_left < 1)
1166 tip_data->addColoredText(msg->get("Requires 1 Skill Point"), font->getColor(FontEngine::COLOR_MENU_PENALTY));
1167 else
1168 tip_data->addText(msg->get("Requires 1 Skill Point"));
1220 req_power_name = powers->powers[req_cell->id].name;
1221
1222
1223 // Required Power Tooltip
1224 if (!checkUnlocked(req_cell)) {
1225 tip_data->addColoredText(msg->get("Requires Power: %s", req_power_name), font->getColor(FontEngine::COLOR_MENU_PENALTY));
1226 }
1227 else {
1228 tip_data->addText(msg->get("Requires Power: %s", req_power_name));
1229 }
1230
1231 }
1232
1233 // Draw unlock power Tooltip
1234 if (pcell->requires_point && !(std::find(pc->stats.powers_list.begin(), pc->stats.powers_list.end(), pcell->id) != pc->stats.powers_list.end())) {
1235 MenuPowersCell* unlock_cell = getCellByPowerIndex(pcell->id);
1236 if (show_unlock_prompt && points_left > 0 && checkUnlock(unlock_cell)) {
1237 tip_data->addColoredText(msg->get("Click to Unlock (uses 1 Skill Point)"), font->getColor(FontEngine::COLOR_MENU_BONUS));
1238 }
1239 else {
1240 if (pcell->requires_point && points_left < 1)
1241 tip_data->addColoredText(msg->get("Requires 1 Skill Point"), font->getColor(FontEngine::COLOR_MENU_PENALTY));
1242 else
1243 tip_data->addText(msg->get("Requires 1 Skill Point"));
1244 }
11691245 }
11701246 }
11711247 }
11811257 if (power_cell[i].tab != tab_num) continue;
11821258
11831259 MenuPowersCell* slot_cell = power_cell[i].getCurrent();
1184 if (!slot_cell || !slot_cell->isVisible())
1260 if (!slot_cell || !isCellVisible(slot_cell))
11851261 continue;
11861262
11871263 if (slots[i])
12341310
12351311 setUnlockedPowers();
12361312
1237 for (size_t i=0; i<power_cell.size(); i++) {
1238 // make sure invisible cells are skipped in the tablist
1239 if (slots[i])
1240 slots[i]->enable_tablist_nav = power_cell[i].getCurrent()->isVisible();
1241
1242 //upgrade buttons logic
1243 if (power_cell[i].upgrade_button != NULL) {
1244 power_cell[i].upgrade_button->enabled = false;
1245 if (pc->stats.hp > 0) {
1246 // enable button only if current level is unlocked and next level can be unlocked
1247 if (checkUpgrade(power_cell[i].getCurrent())) {
1248 power_cell[i].upgrade_button->enabled = true;
1249 }
1250 if ((!tab_control || power_cell[i].tab == tab_control->getActiveTab()) && power_cell[i].upgrade_button->checkClick()) {
1251 upgradePower(power_cell[i].getCurrent(), !UPGRADE_POWER_ALL_TABS);
1252 }
1253 }
1254 }
1255 }
1256
12571313 points_left = (pc->stats.level * pc->stats.power_points_per_level) - getPointsUsed();
12581314 if (points_left > 0) {
12591315 newPowerNotification = true;
1316 }
1317
1318 for (size_t i=0; i<power_cell.size(); i++) {
1319 // make sure invisible cells are skipped in the tablist
1320 if (visible && slots[i])
1321 slots[i]->enable_tablist_nav = isCellVisible(power_cell[i].getCurrent());
1322
1323 // disable upgrade buttons by default
1324 if (power_cell[i].upgrade_button != NULL) {
1325 power_cell[i].upgrade_button->enabled = false;
1326 }
1327
1328 // try to automatically upgrade powers is no power point is required
1329 MenuPowersCell* pcell = power_cell[i].getCurrent();
1330 while (checkUpgrade(pcell)) {
1331 if (pcell->next && !pcell->next->requires_point) {
1332 // automatic upgrade possible; do upgrade and re-check upgrade possibility
1333 upgradePower(pcell, UPGRADE_POWER_ALL_TABS);
1334 pcell = power_cell[i].getCurrent();
1335 if (power_cell[i].upgrade_button != NULL)
1336 power_cell[i].upgrade_button->enabled = (pc->stats.hp > 0 && isCellVisible(pcell) && checkUpgrade(pcell));
1337 }
1338 else {
1339 // power point required or no upgrade available; stop trying to upgrade
1340 if (power_cell[i].upgrade_button != NULL)
1341 power_cell[i].upgrade_button->enabled = (pc->stats.hp > 0 && isCellVisible(pcell));
1342 break;
1343 }
1344 }
1345
1346 // handle clicking of upgrade button
1347 if (visible && pc->stats.hp > 0 && power_cell[i].upgrade_button != NULL) {
1348 if ((!tab_control || power_cell[i].tab == tab_control->getActiveTab()) && power_cell[i].upgrade_button->checkClick()) {
1349 upgradePower(power_cell[i].getCurrent(), !UPGRADE_POWER_ALL_TABS);
1350 }
1351 }
12601352 }
12611353
12621354 if (!visible) return;
13471439
13481440 // stats
13491441 if (!label_unspent->isHidden()) {
1350 std::stringstream ss;
1351
1352 ss.str("");
1353 if (points_left == 1) {
1354 ss << msg->get("%d unspent skill point", points_left);
1355 }
1356 else if (points_left > 1) {
1357 ss << msg->get("%d unspent skill points", points_left);
1358 }
1359 label_unspent->setText(ss.str());
1442 if (points_left >= 1) {
1443 label_unspent->setText(msg->get("Available skill points: %d", points_left));
1444 }
1445 else {
1446 label_unspent->setText("");
1447 }
13601448 label_unspent->render();
13611449 }
13621450 }
13761464 continue;
13771465
13781466 MenuPowersCell* tip_cell = power_cell[i].getCurrent();
1379 if (!tip_cell->isVisible())
1467 if (!isCellVisible(tip_cell))
13801468 continue;
13811469
13821470 if (slots[i] && Utils::isWithinRect(slots[i]->pos, position)) {
13831471 bool base_unlocked = checkUnlocked(tip_cell);
13841472
1385 createTooltip(&tip_data, tip_cell, !base_unlocked);
1473 createTooltip(&tip_data, tip_cell, tip_cell->id, !base_unlocked, MenuPowers::TOOLTIP_LONG_MENU);
13861474 if (tip_cell->next) {
13871475 tip_data.addText("\n" + msg->get("Next Level:"));
1388 createTooltip(&tip_data, tip_cell->next, base_unlocked);
1476 createTooltip(&tip_data, tip_cell->next, tip_cell->next->id, base_unlocked, MenuPowers::TOOLTIP_LONG_MENU);
13891477 }
13901478
13911479 tooltipm->push(tip_data, position, TooltipData::STYLE_FLOAT);
13971485 /**
13981486 * Click-to-drag a power (to the action bar)
13991487 */
1400 int MenuPowers::click(const Point& mouse) {
1488 PowerID MenuPowers::click(const Point& mouse) {
14011489 int active_tab = (tab_control) ? tab_control->getActiveTab() : 0;
14021490
14031491 for (size_t i=0; i<power_cell.size(); i++) {
14161504 }
14171505
14181506 MenuPowersCell* pcell = power_cell[i].getCurrent();
1419 if (!pcell)
1507 if (!pcell || !isCellVisible(pcell))
14201508 return 0;
14211509
14221510 if (checkUnlock(pcell) && points_left > 0 && pcell->requires_point) {
14291517 }
14301518 else if (checkUnlocked(pcell) && !powers->powers[pcell->id].passive) {
14311519 // pick up and drag power
1432 slots[i]->defocus();
1433 if (!tabs.empty()) {
1434 tablist_pow[active_tab].setCurrent(NULL);
1435 }
1436 else {
1437 tablist.setCurrent(NULL);
1520 if (inpt->usingMouse()) {
1521 slots[i]->defocus();
1522 if (!tabs.empty()) {
1523 tablist_pow[active_tab].setCurrent(NULL);
1524 }
1525 else {
1526 tablist.setCurrent(NULL);
1527 }
14381528 }
14391529 return power_cell[i].getBonusCurrent(pcell)->id;
14401530 }
14701560 /**
14711561 * Return true if required stats for power usage are met. Else return false.
14721562 */
1473 bool MenuPowers::meetsUsageStats(int power_index) {
1563 bool MenuPowers::meetsUsageStats(PowerID power_index) {
14741564 // Find cell with our power
14751565 MenuPowersCell* pcell = getCellByPowerIndex(power_index);
14761566
15091599 }
15101600 }
15111601
1512 void MenuPowers::addBonusLevels(int power_index, int bonus_levels) {
1602 void MenuPowers::addBonusLevels(PowerID power_index, int bonus_levels) {
15131603 MenuPowersCell* pcell = getCellByPowerIndex(power_index);
15141604
15151605 if (!pcell)
15291619 pgroup->bonus_levels.push_back(bonus);
15301620 }
15311621
1532 std::string MenuPowers::getItemBonusPowerReqString(int power_index) {
1622 std::string MenuPowers::getItemBonusPowerReqString(PowerID power_index) {
15331623 MenuPowersCell* pcell = getCellByPowerIndex(power_index);
15341624
15351625 if (!pcell)
15361626 return "";
15371627
1538 std::stringstream ss;
1539 ss << powers->powers[power_index].name;
1628 std::string output = powers->powers[power_index].name;
15401629 if (pcell->upgrade_level > 0) {
1541 ss << " (" << msg->get("Level %d", pcell->upgrade_level) << ")";
1542 }
1543
1544 return ss.str();
1630 output += " (" + msg->get("Level %d", pcell->upgrade_level) + ")";
1631 }
1632
1633 return output;
15451634 }
15461635
15471636 bool MenuPowers::isTabListSelected() {
5151 class MenuPowersCell {
5252 public:
5353 MenuPowersCell();
54 bool isVisible();
5554
56 int id;
55 PowerID id;
56 bool requires_point;
57
5758 int requires_level;
58 bool requires_point;
5959 std::vector<int> requires_primary;
60 std::vector<int> requires_power;
61 std::vector<StatusID> visible_requires_status;
62 std::vector<StatusID> visible_requires_not;
60 std::vector<PowerID> requires_power;
61 std::vector<StatusID> requires_status;
62 std::vector<StatusID> requires_not_status;
63
64 bool visible;
65 bool visible_when_locked;
6366
6467 int upgrade_level;
6568 bool passive_on;
102105 bool checkUpgrade(MenuPowersCell* pcell);
103106 void lockCell(MenuPowersCell* pcell);
104107 bool isBonusCell(MenuPowersCell* pcell);
108 bool isCellVisible(MenuPowersCell* pcell);
105109
106 MenuPowersCell* getCellByPowerIndex(int power_index);
110 MenuPowersCell* getCellByPowerIndex(PowerID power_index);
107111
108112 void upgradePower(MenuPowersCell* pcell, bool ignore_tab);
109113
110114 int getPointsUsed();
111115
112 void createTooltip(TooltipData* tip_data, MenuPowersCell* pcell, bool show_unlock_prompt);
116 void createTooltip(TooltipData* tip_data, MenuPowersCell* pcell, PowerID power_index, bool show_unlock_prompt, int tooltip_length);
113117 void renderPowers(int tab_num);
114118
115119 std::vector<MenuPowersCellGroup> power_cell;
133137
134138 bool tree_loaded;
135139
136 size_t prev_powers_list_size;
137
138140 int default_power_tab;
139141
140142 public:
143 enum {
144 TOOLTIP_SHORT = 0,
145 TOOLTIP_LONG_MENU = 1,
146 TOOLTIP_LONG_ALL = 2
147 };
148
141149 MenuPowers();
142150 ~MenuPowers();
143151 void align();
148156 void render();
149157
150158 void renderTooltips(const Point& position);
151 int click(const Point& mouse);
159 PowerID click(const Point& mouse);
152160 void upgradeBySlotIndex(int slot_index);
153161
154162 void setUnlockedPowers();
155163 void resetToBasePowers();
156164
157 bool meetsUsageStats(int power_index);
165 bool meetsUsageStats(PowerID power_index);
158166
159167 void clearActionBarBonusLevels();
160168 void clearBonusLevels();
161 void addBonusLevels(int power_index, int bonus_levels);
162 std::string getItemBonusPowerReqString(int power_index);
169 void addBonusLevels(PowerID power_index, int bonus_levels);
170 std::string getItemBonusPowerReqString(PowerID power_index);
171
172 void createTooltipFromActionBar(TooltipData* tip_data, unsigned slot, int tooltip_length);
163173
164174 std::vector<WidgetSlot*> slots; // power slot Widgets
165175
3838 #include "UtilsParsing.h"
3939 #include "WidgetButton.h"
4040 #include "WidgetSlot.h"
41 #include "WidgetTabControl.h"
42
43 MenuStashTab::MenuStashTab(const std::string& _id, const std::string& _name, const std::string& _filename, bool _is_private)
44 : id(_id)
45 , name(_name)
46 , filename(_filename)
47 , is_private(_is_private)
48 , is_legacy(false)
49 , updated(false)
50 , stock()
51 {}
52
53 MenuStashTab::~MenuStashTab() {
54 }
4155
4256 MenuStash::MenuStash()
4357 : Menu()
4458 , closeButton(new WidgetButton("images/menus/buttons/button_x.png"))
45 , stock()
46 , updated(false)
59 , tab_control(new WidgetTabControl())
60 , activetab(0)
61 , tabs()
4762 {
48
4963 setBackground("images/menus/stash.png");
5064
5165 int slots_cols = 8; // default if menus/stash.txt::stash_cols not set
5670 // @CLASS MenuStash|Description of menus/stash.txt
5771 if (infile.open("menus/stash.txt", FileParser::MOD_FILE, FileParser::ERROR_NORMAL)) {
5872 while(infile.next()) {
59 if (parseMenuKey(infile.key, infile.val))
60 continue;
61
62 // @ATTR close|point|Position of the close button.
63 if (infile.key == "close") {
64 Point pos = Parse::toPoint(infile.val);
65 closeButton->setBasePos(pos.x, pos.y, Utils::ALIGN_TOPLEFT);
73 if (infile.new_section) {
74 if (infile.section == "tab") {
75 std::stringstream id_str, name_str, filename_str;
76
77 // default tab settings
78 id_str << "Stash " << tabs.size();
79 name_str << msg->get("Stash") << " " << tabs.size();
80 filename_str << "stash_tab_" << tabs.size() << ".txt";
81
82 tabs.push_back(MenuStashTab(id_str.str(), name_str.str(), filename_str.str(), MenuStashTab::IS_PRIVATE));
83 }
6684 }
67 // @ATTR slots_area|point|Position of the top-left slot.
68 else if (infile.key == "slots_area") {
69 slots_area.x = Parse::popFirstInt(infile.val);
70 slots_area.y = Parse::popFirstInt(infile.val);
85
86 if (infile.section == "") {
87 if (parseMenuKey(infile.key, infile.val))
88 continue;
89
90 // @ATTR close|point|Position of the close button.
91 if (infile.key == "close") {
92 Point pos = Parse::toPoint(infile.val);
93 closeButton->setBasePos(pos.x, pos.y, Utils::ALIGN_TOPLEFT);
94 }
95 // @ATTR slots_area|point|Position of the top-left slot.
96 else if (infile.key == "slots_area") {
97 slots_area.x = Parse::popFirstInt(infile.val);
98 slots_area.y = Parse::popFirstInt(infile.val);
99 }
100 // @ATTR stash_cols|int|The number of columns for the grid of slots.
101 else if (infile.key == "stash_cols") {
102 slots_cols = std::max(1, Parse::toInt(infile.val));
103 }
104 // @ATTR stash_rows|int|The number of rows for the grid of slots.
105 else if (infile.key == "stash_rows") {
106 slots_rows = std::max(1, Parse::toInt(infile.val));
107 }
108 // @ATTR label_title|label|Position of the "Stash" label.
109 else if (infile.key == "label_title") {
110 label_title.setFromLabelInfo(Parse::popLabelInfo(infile.val));
111 }
112 // @ATTR currency|label|Position of the label displaying the amount of currency stored in the stash.
113 else if (infile.key == "currency") {
114 label_currency.setFromLabelInfo(Parse::popLabelInfo(infile.val));
115 }
116 else {
117 infile.error("MenuStash: '%s' is not a valid key.", infile.key.c_str());
118 }
71119 }
72 // @ATTR stash_cols|int|The number of columns for the grid of slots.
73 else if (infile.key == "stash_cols") {
74 slots_cols = std::max(1, Parse::toInt(infile.val));
120 else if (infile.section == "tab") {
121 // don't load any settings for the "Private" and "Shared" tabs
122 if (tabs.back().is_legacy)
123 continue;
124
125 if (infile.key == "name") {
126 // @ATTR tab.name|["Private", "Shared", string]|The displayed name of this tab. It is also used to determine the filename of the stash file that the engine will create. 'Private' and 'Shared' will use their legacy filenames for compatibility.
127 std::string name_str = infile.val;
128 tabs.back().id = name_str;
129 tabs.back().name = msg->get(name_str);
130
131 if (name_str == "Private") {
132 tabs.back().filename = "stash_HC.txt";
133 tabs.back().is_private = true;
134 tabs.back().is_legacy = true;
135 }
136 else if (name_str == "Shared") {
137 tabs.back().filename = "stash.txt";
138 tabs.back().is_private = false;
139 tabs.back().is_legacy = true;
140 }
141 else {
142 // generate a filename
143 std::stringstream ss;
144 ss << std::hex << "stash_" << Utils::hashString(name_str) << ".txt";
145 tabs.back().filename = ss.str();
146 }
147 }
148 else if (infile.key == "is_private") {
149 // @ATTR tab.is_private|bool|If true, this stash will not be shared across other saves.
150 tabs.back().is_private = Parse::toBool(infile.val);
151 }
152 else {
153 infile.error("MenuStash: '%s' is not a valid key.", infile.key.c_str());
154 }
75155 }
76 // @ATTR stash_rows|int|The number of rows for the grid of slots.
77 else if (infile.key == "stash_rows") {
78 slots_rows = std::max(1, Parse::toInt(infile.val));
79 }
80 // @ATTR label_title|label|Position of the "Stash" label.
81 else if (infile.key == "label_title") {
82 label_title.setFromLabelInfo(Parse::popLabelInfo(infile.val));
83 }
84 // @ATTR currency|label|Position of the label displaying the amount of currency stored in the stash.
85 else if (infile.key == "currency") {
86 label_currency.setFromLabelInfo(Parse::popLabelInfo(infile.val));
87 }
88 else {
89 infile.error("MenuStash: '%s' is not a valid key.", infile.key.c_str());
90 }
91156 }
92157 infile.close();
93158 }
94159
95 label_title.setText(msg->get("Shared Stash"));
160 label_title.setText(msg->get("Stash"));
96161 label_title.setColor(font->getColor(FontEngine::COLOR_MENU_NORMAL));
97162
98163 label_currency.setColor(font->getColor(FontEngine::COLOR_MENU_NORMAL));
101166 slots_area.w = slots_cols * eset->resolutions.icon_size;
102167 slots_area.h = slots_rows * eset->resolutions.icon_size;
103168
104 stock.initGrid(stash_slots, slots_area, slots_cols);
105 for (int i = 0; i < stash_slots; i++) {
106 tablist.add(stock.slots[i]);
169 tablist.add(tab_control);
170
171 // default tabs if none are defined in the config file
172 if (tabs.empty()) {
173 tabs.push_back(MenuStashTab("Private", msg->get("Private"), "stash_HC.txt", MenuStashTab::IS_PRIVATE));
174 tabs.push_back(MenuStashTab("Shared", msg->get("Shared"), "stash.txt", !MenuStashTab::IS_PRIVATE));
175 }
176
177 // ensure that characters have access to at least one private stash
178 // this needs to be done because permadeath characters ONLY have access to private stashes
179 bool private_exists = false;
180 for (size_t i = 0; i < tabs.size(); ++i) {
181 if (tabs[i].is_private) {
182 private_exists = true;
183 break;
184 }
185 }
186 if (!private_exists) {
187 tabs.push_back(MenuStashTab("Private", msg->get("Private"), "stash_HC.txt", MenuStashTab::IS_PRIVATE));
188 }
189
190 for (size_t i = 0; i < tabs.size(); ++i) {
191 tabs[i].stock.initGrid(stash_slots, slots_area, slots_cols);
192 tab_control->setTabTitle(static_cast<unsigned>(i), tabs[i].name);
193
194 // "tablist" keyboard navigation
195 tabs[i].tablist.setPrevTabList(&tablist);
196 tabs[i].tablist.lock();
197 for (int j = 0; j < stash_slots; ++j) {
198 tabs[i].tablist.add(tabs[i].stock.slots[j]);
199 }
107200 }
108201
109202 align();
112205 void MenuStash::align() {
113206 Menu::align();
114207
208 Rect tabs_area = slots_area;
209 tabs_area.x += window_area.x;
210 tabs_area.y += window_area.y;
211
212 tab_control->setMainArea(tabs_area.x, tabs_area.y - tab_control->getTabHeight());
213
115214 closeButton->setPos(window_area.x, window_area.y);
116 stock.setPos(window_area.x, window_area.y);
215
216 for (size_t i = 0; i < tabs.size(); ++i) {
217 tabs[i].stock.setPos(window_area.x, window_area.y);
218 }
117219
118220 label_title.setPos(window_area.x, window_area.y);
119221 label_currency.setPos(window_area.x, window_area.y);
123225 if (!visible) return;
124226
125227 tablist.logic();
228 for (size_t i = 0; i < tabs.size(); ++i) {
229 tabs[i].tablist.logic();
230 }
231
232 // disable tab control if we're dragging something from one of the stash stocks
233 bool dragging = false;
234 for (size_t i = 0; i < tabs.size(); ++i) {
235 if (tabs[i].stock.drag_prev_slot != -1) {
236 dragging = true;
237 break;
238 }
239 }
240 if (!dragging)
241 tab_control->logic();
242
243 if (settings->touchscreen && activetab != static_cast<size_t>(tab_control->getActiveTab())) {
244 for (size_t i = 0; i < tabs.size(); ++i) {
245 tabs[i].tablist.defocus();
246 }
247 }
248 activetab = tab_control->getActiveTab();
249
250 tablist.setNextTabList(&(tabs[activetab].tablist));
251
252 if (settings->touchscreen) {
253 if (tabs[activetab].tablist.getCurrent() == -1)
254 tabs[activetab].stock.current_slot = NULL;
255 }
126256
127257 if (closeButton->checkClick()) {
128258 visible = false;
142272 // text overlay
143273 label_title.render();
144274 if (!label_currency.isHidden()) {
145 label_currency.setText(msg->get("%d %s", stock.count(eset->misc.currency_id), eset->loot.currency));
275 label_currency.setText(msg->get("%d %s", tabs[activetab].stock.count(eset->misc.currency_id), eset->loot.currency));
146276 label_currency.render();
147277 }
148278
279 tab_control->render();
149280
150281 // show stock
151 stock.render();
282 tabs[activetab].stock.render();
152283 }
153284
154285 /**
165296
166297 items->playSound(stack.item);
167298
168 slot = stock.slotOver(position);
169 drag_prev_slot = stock.drag_prev_slot;
299 slot = tabs[activetab].stock.slotOver(position);
300 drag_prev_slot = tabs[activetab].stock.drag_prev_slot;
170301
171302 if (slot == -1) {
172303 success = add(stack, slot, !ADD_PLAY_SOUND);
173304 }
174305 else if (drag_prev_slot != -1) {
175 if (stock[slot].item == stack.item || stock[slot].empty()) {
306 if (tabs[activetab].stock[slot].item == stack.item || tabs[activetab].stock[slot].empty()) {
176307 // Drop the stack, merging if needed
177308 success = add(stack, slot, !ADD_PLAY_SOUND);
178309 }
179 else if (drag_prev_slot != -1 && stock[drag_prev_slot].empty()) {
310 else if (drag_prev_slot != -1 && tabs[activetab].stock[drag_prev_slot].empty()) {
180311 // Check if the previous slot is free (could still be used if SHIFT was used).
181312 // Swap the two stacks
182 itemReturn(stock[slot]);
183 stock[slot] = stack;
184 updated = true;
313 itemReturn(tabs[activetab].stock[slot]);
314 tabs[activetab].stock[slot] = stack;
315 tabs[activetab].updated = true;
185316 }
186317 else {
187318 itemReturn(stack);
188 updated = true;
319 tabs[activetab].updated = true;
189320 }
190321 }
191322 else {
204335 items->playSound(stack.item);
205336 }
206337
207 if (items->items[stack.item].quest_item) {
208 pc->logMsg(msg->get("Can not store quest items in the stash."), Avatar::MSG_NORMAL);
338 if (items->items[stack.item].no_stash == Item::NO_STASH_ALL) {
339 pc->logMsg(msg->get("This item can not be stored in the stash."), Avatar::MSG_NORMAL);
209340 drop_stack.push(stack);
210341 return false;
211342 }
212
213 ItemStack leftover = stock.add(stack, slot);
343 else if (tabs[activetab].is_private && items->items[stack.item].no_stash == Item::NO_STASH_PRIVATE) {
344 pc->logMsg(msg->get("This item can not be stored in the private stash."), Avatar::MSG_NORMAL);
345 drop_stack.push(stack);
346 return false;
347 }
348 else if (!tabs[activetab].is_private && items->items[stack.item].no_stash == Item::NO_STASH_SHARED) {
349 pc->logMsg(msg->get("This item can not be stored in the shared stash."), Avatar::MSG_NORMAL);
350 drop_stack.push(stack);
351 return false;
352 }
353
354 ItemStack leftover = tabs[activetab].stock.add(stack, slot);
214355 if (!leftover.empty()) {
215356 if (leftover.quantity != stack.quantity) {
216 updated = true;
357 tabs[activetab].updated = true;
217358 }
218359 pc->logMsg(msg->get("Stash is full."), Avatar::MSG_NORMAL);
219360 drop_stack.push(leftover);
220361 return false;
221362 }
222363 else {
223 updated = true;
364 tabs[activetab].updated = true;
224365 }
225366
226367 return true;
231372 * Players can drag an item to their inventory.
232373 */
233374 ItemStack MenuStash::click(const Point& position) {
234 ItemStack stack = stock.click(position);
375 ItemStack stack = tabs[activetab].stock.click(position);
235376 if (settings->touchscreen) {
236 tablist.setCurrent(stock.current_slot);
377 tabs[activetab].tablist.setCurrent(tabs[activetab].stock.current_slot);
237378 }
238379 return stack;
239380 }
242383 * Cancel the dragging initiated by the click()
243384 */
244385 void MenuStash::itemReturn(ItemStack stack) {
245 stock.itemReturn(stack);
386 tabs[activetab].stock.itemReturn(stack);
246387 }
247388
248389 void MenuStash::renderTooltips(const Point& position) {
249390 if (!visible || !Utils::isWithinRect(window_area, position))
250391 return;
251392
252 TooltipData tip_data = stock.checkTooltip(position, &pc->stats, ItemManager::PLAYER_INV);
393 TooltipData tip_data = tabs[activetab].stock.checkTooltip(position, &pc->stats, ItemManager::PLAYER_INV);
253394 tooltipm->push(tip_data, position, TooltipData::STYLE_FLOAT);
254395 }
255396
256397 void MenuStash::removeFromPrevSlot(int quantity) {
257 int drag_prev_slot = stock.drag_prev_slot;
398 int drag_prev_slot = tabs[activetab].stock.drag_prev_slot;
258399 if (drag_prev_slot > -1) {
259 stock.subtract(drag_prev_slot, quantity);
400 tabs[activetab].stock.subtract(drag_prev_slot, quantity);
401 }
402 }
403
404 void MenuStash::validate(std::queue<ItemStack>& global_drop_stack) {
405 for (size_t tab = 0; tab < tabs.size(); ++tab) {
406 for (int i = 0; i < tabs[activetab].stock.getSlotNumber(); ++i) {
407 if (tabs[tab].stock[i].empty())
408 continue;
409
410 ItemStack stack = tabs[tab].stock[i];
411 int no_stash = items->items[stack.item].no_stash;
412 if (no_stash == Item::NO_STASH_ALL || (tabs[tab].is_private && no_stash == Item::NO_STASH_PRIVATE) || (!tabs[tab].is_private && no_stash == Item::NO_STASH_SHARED)) {
413 pc->logMsg(msg->get("Can not store item in stash: %s", items->getItemName(stack.item).c_str()), Avatar::MSG_NORMAL);
414 global_drop_stack.push(stack);
415 tabs[tab].stock[i].clear();
416 tabs[tab].updated = true;
417 }
418 }
419 }
420 }
421
422 bool MenuStash::checkUpdates() {
423 bool updated = false;
424
425 for (size_t i = 0; i < tabs.size(); ++i) {
426 if (tabs[i].updated) {
427 tabs[i].updated = false;
428
429 if (eset->misc.save_onstash == EngineSettings::Misc::SAVE_ONSTASH_ALL)
430 updated = true;
431 else if (tabs[i].is_private && eset->misc.save_onstash == EngineSettings::Misc::SAVE_ONSTASH_PRIVATE)
432 updated = true;
433 else if (!tabs[i].is_private && eset->misc.save_onstash == EngineSettings::Misc::SAVE_ONSTASH_SHARED)
434 updated = true;
435 }
436 }
437
438 return updated;
439 }
440
441 void MenuStash::enableSharedTab(bool permadeath) {
442 for (size_t i = 0; i < tabs.size(); ++i) {
443 tab_control->setEnabled(static_cast<unsigned>(i), (!permadeath || (permadeath && tabs[i].is_private)));
444 }
445 }
446
447 void MenuStash::setTab(size_t tab) {
448 if (settings->touchscreen && activetab != tab) {
449 for (size_t i = 0; i < tabs.size(); ++i) {
450 tabs[i].tablist.defocus();
451 }
452 }
453 if (tab >= tabs.size()) {
454 tab_control->setActiveTab(0);
455 activetab = 0;
456 }
457 else {
458 tab_control->setActiveTab(static_cast<unsigned>(tab));
459 activetab = tab;
460 }
461 }
462
463 size_t MenuStash::getTab() {
464 return activetab;
465 }
466
467 void MenuStash::lockTabControl() {
468 for (size_t i = 0; i < tabs.size(); ++i) {
469 tabs[i].tablist.setPrevTabList(NULL);
470 }
471 }
472
473 void MenuStash::unlockTabControl() {
474 for (size_t i = 0; i < tabs.size(); ++i) {
475 tabs[i].tablist.setPrevTabList(&tablist);
476 }
477 }
478
479 TabList* MenuStash::getCurrentTabList() {
480 if (tablist.getCurrent() != -1) {
481 return (&tablist);
482 }
483 else {
484 for (size_t i = 0; i < tabs.size(); ++i) {
485 if (tabs[i].tablist.getCurrent() != -1)
486 return (&(tabs[i].tablist));
487 }
488 }
489
490 return NULL;
491 }
492
493 void MenuStash::defocusTabLists() {
494 tablist.defocus();
495 for (size_t i = 0; i < tabs.size(); ++i) {
496 tabs[i].tablist.defocus();
260497 }
261498 }
262499
263500 MenuStash::~MenuStash() {
264501 delete closeButton;
265 }
266
502 delete tab_control;
503 }
504
2929 class NPC;
3030 class StatBlock;
3131 class WidgetButton;
32 class WidgetTabControl;
33
34 class MenuStashTab {
35 public:
36 static const bool IS_PRIVATE = true;
37
38 MenuStashTab(const std::string& id, const std::string& _name, const std::string& _filename, bool _is_private);
39 ~MenuStashTab();
40
41 std::string id;
42 std::string name;
43 std::string filename;
44 bool is_private;
45 bool is_legacy;
46 bool updated;
47
48 MenuItemStorage stock;
49 TabList tablist;
50 };
3251
3352 class MenuStash : public Menu {
3453 private:
3554 WidgetButton *closeButton;
55 WidgetTabControl *tab_control;
3656 WidgetLabel label_title;
3757 WidgetLabel label_currency;
58
59 size_t activetab;
3860
3961 public:
4062 static const int NO_SLOT = -1;
5173 bool add(ItemStack stack, int slot, bool play_sound);
5274 void renderTooltips(const Point& position);
5375 bool drop(const Point& position, ItemStack stack);
76 void validate(std::queue<ItemStack>& global_drop_stack);
77 bool checkUpdates();
5478
5579 void removeFromPrevSlot(int quantity);
80 void enableSharedTab(bool permadeath);
81
82 void setTab(size_t tab);
83 size_t getTab();
84
85 void lockTabControl();
86 void unlockTabControl();
87 TabList* getCurrentTabList();
88 void defocusTabLists();
5689
5790 Rect slots_area;
58 MenuItemStorage stock;
59 bool updated;
91 std::vector<MenuStashTab> tabs;
6092
6193 std::queue<ItemStack> drop_stack;
6294 };
2828 #include "FontEngine.h"
2929 #include "InputState.h"
3030 #include "Menu.h"
31 #include "MenuExit.h"
32 #include "MenuManager.h"
3133 #include "MenuStatBar.h"
3234 #include "ModManager.h"
3335 #include "RenderDevice.h"
3436 #include "Settings.h"
37 #include "SharedGameResources.h"
3538 #include "SharedResources.h"
3639 #include "StatBlock.h"
3740 #include "WidgetLabel.h"
3942 #include "UtilsParsing.h"
4043 #include "UtilsFileSystem.h"
4144
42 MenuStatBar::MenuStatBar(const std::string& type)
45 MenuStatBar::MenuStatBar(short _type)
4346 : bar(NULL)
47 , label(new WidgetLabel())
4448 , stat_min(0)
4549 , stat_cur(0)
50 , stat_cur_prev(0)
4651 , stat_max(0)
4752 , orientation(HORIZONTAL)
4853 , custom_text_pos(false) // label will be placed in the middle of the bar
4954 , custom_string("")
5055 , bar_gfx("")
5156 , bar_gfx_background("")
57 , type(_type)
58 , bar_fill_offset()
59 , bar_fill_size(-1, -1)
5260 {
53
54 label = new WidgetLabel();
61 std::string type_filename;
62 if (type == TYPE_HP)
63 type_filename = "hp";
64 else if (type == TYPE_MP)
65 type_filename = "mp";
66 else if (type == TYPE_XP)
67 type_filename = "xp";
5568
5669 // Load config settings
5770 FileParser infile;
5871 // @CLASS MenuStatBar|Description of menus/hp.txt, menus/mp.txt, menus/xp.txt
59 if(infile.open("menus/"+type+".txt", FileParser::MOD_FILE, FileParser::ERROR_NORMAL)) {
72 if(!type_filename.empty() && infile.open("menus/" + type_filename + ".txt", FileParser::MOD_FILE, FileParser::ERROR_NORMAL)) {
6073 while(infile.next()) {
6174 if (parseMenuKey(infile.key, infile.val))
6275 continue;
8295 else if (infile.key == "bar_gfx_background") {
8396 bar_gfx_background = infile.val;
8497 }
98 // @ATTR hide_timeout|duration|Hide HP and MP bar if full mana or health, after given amount of seconds; Hide XP bar if no changes in XP points for given amount of seconds. 0 disable hiding.
99 else if (infile.key == "hide_timeout") {
100 timeout.setDuration(Parse::toDuration(infile.val));
101 }
102 // @ATTR bar_fill_offset|point|Offset of the bar's fill graphics relative to the bar_pos X/Y.
103 else if (infile.key == "bar_fill_offset") {
104 bar_fill_offset = Parse::toPoint(infile.val);
105 }
106 // @ATTR bar_fill_size|int, int : Width, Height|Size of the bar's fill graphics. If not defined, the width/height of bar_pos is used.
107 else if (infile.key == "bar_fill_size") {
108 bar_fill_size = Parse::toPoint(infile.val);
109 }
85110 else {
86111 infile.error("MenuStatBar: '%s' is not a valid key.", infile.key.c_str());
87112 }
88113 }
89114 infile.close();
115 }
116
117 // default to bar_pos size if bar_fill_size is undefined
118 if (bar_fill_size.x == -1 || bar_fill_size.y == -1) {
119 bar_fill_size.x = bar_pos.w;
120 bar_fill_size.y = bar_pos.h;
90121 }
91122
92123 loadGraphics();
111142 }
112143
113144 void MenuStatBar::update(unsigned long _stat_min, unsigned long _stat_cur, unsigned long _stat_max) {
145 stat_cur_prev = stat_cur; // save previous value
114146 stat_min = _stat_min;
115147 stat_cur = _stat_cur;
116148 stat_max = _stat_max;
120152 custom_string = _custom_string;
121153 }
122154
155 bool MenuStatBar::disappear() {
156 if (timeout.getDuration() > 0 && settings->statbar_autohide) {
157 if (type == TYPE_HP || type == TYPE_MP) {
158 // HP and MP bars disappear when full
159 if (stat_cur != stat_max) {
160 timeout.reset(Timer::BEGIN);
161 }
162 } else if (type == TYPE_XP) {
163 // XP bar disappears when value is not changing
164 if (stat_cur_prev != stat_cur) {
165 timeout.reset(Timer::BEGIN);
166 }
167 }
168
169 timeout.tick();
170 if (timeout.isEnd())
171 return true;
172 }
173 return false;
174 }
175
123176 void MenuStatBar::render() {
177
178 if (disappear()) return;
179
124180 Rect src;
125181 Rect dest;
126182
146202
147203 // draw bar progress based on orientation
148204 if (orientation == HORIZONTAL) {
149 unsigned long bar_length = (normalized_max == 0) ? 0 : (normalized_cur * static_cast<unsigned long>(bar_pos.w)) / normalized_max;
205 unsigned long bar_length = (normalized_max == 0) ? 0 : (normalized_cur * static_cast<unsigned long>(bar_fill_size.x)) / normalized_max;
206 if (bar_length == 0 && normalized_cur > 0)
207 bar_length = 1;
150208 src.x = 0;
151209 src.y = 0;
152210 src.w = static_cast<int>(bar_length);
153 src.h = bar_pos.h;
154 dest.x = bar_dest.x;
155 dest.y = bar_dest.y;
211 src.h = bar_fill_size.y;
212 dest.x = bar_dest.x + bar_fill_offset.x;
213 dest.y = bar_dest.y + bar_fill_offset.y;
156214 }
157215 else if (orientation == VERTICAL) {
158 unsigned long bar_length = (normalized_max == 0) ? 0 : (normalized_cur * static_cast<unsigned long>(bar_pos.h)) / normalized_max;
216 unsigned long bar_length = (normalized_max == 0) ? 0 : (normalized_cur * static_cast<unsigned long>(bar_fill_size.y)) / normalized_max;
217 if (bar_length == 0 && normalized_cur > 0)
218 bar_length = 1;
159219 src.x = 0;
160 src.y = bar_pos.h-static_cast<int>(bar_length);
161 src.w = bar_pos.w;
220 src.y = bar_fill_size.y-static_cast<int>(bar_length);
221 src.w = bar_fill_size.x;
162222 src.h = static_cast<int>(bar_length);
163 dest.x = bar_dest.x;
164 dest.y = bar_dest.y+src.y;
223 dest.x = bar_dest.x + bar_fill_offset.x;
224 dest.y = bar_dest.y + bar_fill_offset.y + src.y;
165225 }
166226
167227 if (bar) {
173233 // if mouseover, draw text
174234 if (!text_pos.hidden) {
175235
176 if (settings->statbar_labels || (inpt->usingMouse() && Utils::isWithinRect(bar_dest, inpt->mouse))) {
236 if (settings->statbar_labels || (inpt->usingMouse() && Utils::isWithinRect(bar_dest, inpt->mouse) && !menu->exit->visible)) {
177237 std::stringstream ss;
178238 if (!custom_string.empty())
179239 ss << custom_string;
3333
3434 class MenuStatBar : public Menu {
3535 private:
36 bool disappear();
37
3638 enum {
3739 HORIZONTAL = 0,
3840 VERTICAL = 1
4244 WidgetLabel *label;
4345 unsigned long stat_min;
4446 unsigned long stat_cur;
47 unsigned long stat_cur_prev;
4548 unsigned long stat_max;
4649 Rect bar_pos;
4750 LabelInfo text_pos;
5053 std::string custom_string;
5154 std::string bar_gfx;
5255 std::string bar_gfx_background;
56 short type;
57 Timer timeout;
58 Point bar_fill_offset;
59 Point bar_fill_size;
60
5361
5462 public:
55 explicit MenuStatBar(const std::string& type);
63 enum {
64 TYPE_HP = 0,
65 TYPE_MP = 1,
66 TYPE_XP = 2
67 };
68
69 explicit MenuStatBar(short _type);
5670 ~MenuStatBar();
5771 void loadGraphics();
5872 void update(unsigned long _stat_min, unsigned long _stat_cur, unsigned long _stat_max);
2323 */
2424
2525 #include "Avatar.h"
26 #include "Entity.h"
2627 #include "FileParser.h"
2728 #include "FontEngine.h"
2829 #include "InputState.h"
442443 // add standard topics
443444 for (size_t i = nodes.size(); i > 0; i--) {
444445 std::string topic = npc->getDialogTopic(nodes[i-1]);
445 if (topic.empty())
446 continue;
446 if (topic.empty()) {
447 topic = msg->get("<dialog node %d>", nodes[i-1]);
448 }
447449
448450 addAction(topic, nodes[i-1], !Action::IS_VENDOR);
449451 }
473475 int node_id = actions[index].node_id;
474476
475477 if (actions[index].is_vendor) {
478 // defocus the talker menu tablist. Otherwise, CANCEL needs to be pressed twice to exit the vendor screen
479 defocusTabLists();
480
476481 // begin trading
477482 NPC *temp_npc = npc;
478483 menu->closeAll();
521526 void MenuTalker::setupTabList() {
522527 tablist.clear();
523528
524 if (dialog_node == -1) {
525 for (size_t i = 0; i < actions.size(); ++i) {
526 tablist.add(actions[i].btn);
527 }
528 }
529 tablist.add(textbox);
529530
530531 if (advanceButton->enabled) {
531532 tablist.add(advanceButton);
2222 */
2323
2424 #include "Avatar.h"
25 #include "Entity.h"
2526 #include "EngineSettings.h"
2627 #include "FileParser.h"
2728 #include "FontEngine.h"
3536 #include "SharedGameResources.h"
3637 #include "SharedResources.h"
3738 #include "SoundManager.h"
39 #include "TooltipManager.h"
3840 #include "UtilsParsing.h"
3941 #include "WidgetButton.h"
4042 #include "WidgetSlot.h"
143145 tablist_buy.logic();
144146 tablist_sell.logic();
145147
146 tabControl->logic();
148 if (stock[ItemManager::VENDOR_BUY].drag_prev_slot == -1 && stock[ItemManager::VENDOR_SELL].drag_prev_slot == -1)
149 tabControl->logic();
150
147151 if (settings->touchscreen && activetab != tabControl->getActiveTab()) {
148152 tablist_buy.defocus();
149153 tablist_sell.defocus();
240244
241245 int vendor_view = (activetab == ItemManager::VENDOR_BUY) ? ItemManager::VENDOR_BUY : ItemManager::VENDOR_SELL;
242246 TooltipData tip_data = stock[activetab].checkTooltip(position, &pc->stats, vendor_view);
243 tip->render(tip_data, position, TooltipData::STYLE_FLOAT);
247 tooltipm->push(tip_data, position, TooltipData::STYLE_FLOAT);
244248 }
245249
246250 /**
133133 loadModList();
134134 applyDepends();
135135
136 std::stringstream ss;
137 ss << "Active mods: ";
136 std::string active_mods_str = "Active mods: ";
138137 for (size_t i = 0; i < mod_list.size(); ++i) {
139 ss << mod_list[i].name;
138 active_mods_str += mod_list[i].name;
140139 if (*mod_list[i].version != VersionInfo::MIN)
141 ss << " (" << mod_list[i].version->getString() << ")";
140 active_mods_str += " (" + mod_list[i].version->getString() + ")";
142141 if (i < mod_list.size()-1)
143 ss << ", ";
144 }
145 Utils::logInfo(ss.str().c_str());
142 active_mods_str += ", ";
143 }
144 Utils::logInfo(active_mods_str.c_str());
146145 }
147146
148147 /**
171170 std::string line;
172171 std::string starts_with;
173172
174 std::string place1 = settings->path_conf + "mods.txt";
175 std::string place2 = settings->path_data + "mods/mods.txt";
173 std::string place1 = Filesystem::convertSlashes(settings->path_conf + "mods.txt");
174 std::string place2 = Filesystem::convertSlashes(settings->path_data + "mods/mods.txt");
176175
177176 infile.open(place1.c_str(), std::ios::in);
178177
238237 * Find the location (mod file name) for this data file.
239238 * Use private loc_cache to prevent excessive disk I/O
240239 */
241 std::string ModManager::locate(const std::string& filename) {
240 std::string ModManager::locate(const std::string& _filename) {
241 std::string filename = Filesystem::convertSlashes(_filename);
242
242243 // if we have this location already cached, return it
243244 if (loc_cache.find(filename) != loc_cache.end()) {
244245 return loc_cache[filename];
249250
250251 for (size_t i = mod_list.size(); i > 0; i--) {
251252 for (size_t j = 0; j < mod_paths.size(); j++) {
252 test_path = mod_paths[j] + "mods/" + mod_list[i-1].name + "/" + filename;
253 test_path = Filesystem::convertSlashes(mod_paths[j] + "mods/" + mod_list[i-1].name + "/" + filename);
253254 if (Filesystem::fileExists(test_path)) {
254255 loc_cache[filename] = test_path;
255256 return test_path;
258259 }
259260
260261 // all else failing, simply return the filename if it exists
261 test_path = settings->path_data + filename;
262 test_path = Filesystem::convertSlashes(settings->path_data + filename);
262263 if (!Filesystem::fileExists(test_path))
263264 test_path = "";
264265
282283
283284 for (size_t i = 0; i < mod_list.size(); ++i) {
284285 for (size_t j = mod_paths.size(); j > 0; j--) {
285 test_path = mod_paths[j-1] + "mods/" + mod_list[i].name + "/" + path;
286 test_path = Filesystem::convertSlashes(mod_paths[j-1] + "mods/" + mod_list[i].name + "/" + path);
286287 amendPathToVector(test_path, ret);
287288 }
288289 }
333334
334335 // @CLASS ModManager|Description of mod settings.txt
335336 for (unsigned i=0; i<mod_paths.size(); ++i) {
336 std::string path = mod_paths[i] + "mods/" + name + "/settings.txt";
337 std::string path = Filesystem::convertSlashes(mod_paths[i] + "mods/" + name + "/settings.txt");
337338 infile.open(path.c_str(), std::ios::in);
338339
339340 while (infile.good()) {
526527
527528 void ModManager::saveMods() {
528529 std::ofstream outfile;
529 outfile.open((settings->path_conf + "mods.txt").c_str(), std::ios::out);
530 outfile.open((Filesystem::convertSlashes(settings->path_conf + "mods.txt")).c_str(), std::ios::out);
530531
531532 if (outfile.is_open()) {
532533 // comment
541542 }
542543 }
543544 if (outfile.bad())
544 Utils::logError("GameStateConfigBase: Unable to save mod list into file. No write access or disk is full!");
545 Utils::logError("GameStateConfig: Unable to save mod list into file. No write access or disk is full!");
545546
546547 outfile.close();
547548 outfile.clear();
7878
7979 // Returns the filename within the latest mod, in which the provided generic
8080 // filename was found.
81 std::string locate(const std::string& filename);
81 std::string locate(const std::string& _filename);
8282
8383 // Returns a list of filenames, going through all mods, in which the provided
8484 // generic filename is found.
2525 #include "AnimationManager.h"
2626 #include "AnimationSet.h"
2727 #include "CampaignManager.h"
28 #include "EntityBehavior.h"
2829 #include "EventManager.h"
2930 #include "FileParser.h"
3031 #include "ItemManager.h"
3132 #include "LootManager.h"
33 #include "MapRenderer.h"
3234 #include "MessageEngine.h"
35 #include "ModManager.h"
3336 #include "NPC.h"
3437 #include "RenderDevice.h"
3538 #include "SharedGameResources.h"
3841 #include "UtilsMath.h"
3942 #include "UtilsParsing.h"
4043
41 NPC::NPC()
42 : Entity()
44 NPC::NPC(const Entity& e)
45 : Entity(e)
4346 , gfx("")
47 , vox_intro()
48 , vox_quests()
4449 , name("")
4550 , direction(0)
51 , show_on_minimap(true)
4652 , npc_portrait(NULL)
4753 , hero_portrait(NULL)
4854 , talker(false)
4955 , vendor(false)
50 , reset_buyback(true) {
56 , reset_buyback(true)
57 , stock()
58 , dialog()
59 {
5160 stock.init(VENDOR_MAX_STOCK);
5261 }
5362
6877 bool clear_random_table = true;
6978
7079 while (infile.next()) {
71 if (infile.section == "dialog") {
80 if (infile.section == "stats") {
81 // handled by StatBlock::load()
82 continue;
83 }
84 else if (infile.section == "dialog") {
7285 if (infile.new_section) {
7386 dialog.push_back(std::vector<EventComponent>());
7487 }
123136 e.s = infile.val;
124137 portrait_filenames.push_back(e.s);
125138 }
139 else if (infile.key == "take_a_party") {
140 // @ATTR dialog.take_a_party|bool|Start/stop taking a party with player.
141 e.type = EventComponent::NPC_TAKE_A_PARTY;
142 e.x = Parse::toBool(infile.val);
143 }
126144 else if (infile.key == "response") {
127145 // @ATTR dialog.response|repeatable(string)|A dialog ID to present as a selectable response. This key must precede the dialog text line.
128146 e.type = EventComponent::NPC_DIALOG_RESPONSE;
148166 dialog.back().push_back(e);
149167 }
150168 }
151 else {
169 else if (infile.section.empty() || infile.section == "npc") {
152170 filename = npc_id;
153171
154172 if (infile.new_section) {
161179 name = msg->get(infile.val);
162180 }
163181 else if (infile.key == "gfx") {
164 // @ATTR gfx|filename|Filename of an animation definition.
165 gfx = infile.val;
182 // TODO deprecate this!
183 // Currently handled in StatBlock::isNPCStat()
166184 }
167185 else if (infile.key == "direction") {
168186 // @ATTR direction|direction|The direction to use for this NPC's stance animation.
169187 direction = Parse::toDirection(infile.val);
188 }
189 else if (infile.key == "show_on_minimap") {
190 // @ATTR show_on_minimap|bool|If true, this NPC will be shown on the minimap. The default is true.
191 show_on_minimap = Parse::toBool(infile.val);
170192 }
171193
172194 // handle talkers
199221 else if (infile.key == "constant_stock") {
200222 // @ATTR constant_stock|repeatable(list(item_id))|A list of items this vendor has for sale. Quantity can be specified by appending ":Q" to the item_id, where Q is an integer.
201223 while (infile.val != "") {
202 std::string temp = Parse::popFirstString(infile.val);
203 temp += ':';
204 stack.item = Parse::popFirstInt(temp, ':');
205 stack.quantity = Parse::popFirstInt(temp, ':');
206 if (stack.quantity == 0)
207 stack.quantity = 1;
224 stack = Parse::toItemQuantityPair(Parse::popFirstString(infile.val));
208225 stock.add(stack, ItemStorage::NO_SLOT);
209226 }
210227 }
212229 // @ATTR status_stock|repeatable(string, list(item_id)) : Required status, Item(s)|A list of items this vendor will have for sale if the required status is met. Quantity can be specified by appending ":Q" to the item_id, where Q is an integer.
213230 if (camp->checkStatus(camp->registerStatus(Parse::popFirstString(infile.val)))) {
214231 while (infile.val != "") {
215 std::string temp = Parse::popFirstString(infile.val);
216 temp += ':';
217 stack.item = Parse::popFirstInt(temp, ':');
218 stack.quantity = Parse::popFirstInt(temp, ':');
219 if (stack.quantity == 0)
220 stack.quantity = 1;
232 stack = Parse::toItemQuantityPair(Parse::popFirstString(infile.val));
221233 stock.add(stack, ItemStorage::NO_SLOT);
222234 }
223235 }
255267 }
256268 infile.close();
257269 }
270
258271 loadGraphics();
259272
260273 // fill inventory with items from random stock table
268281 for (size_t i=0; i<rand_itemstacks.size(); ++i) {
269282 stock.add(rand_itemstacks[i], ItemStorage::NO_SLOT);
270283 }
284
285 // warn if dialog nodes lack a topic
286 std::string full_filename = mods->locate(npc_id);
287 for (size_t i=0; i<dialog.size(); ++i) {
288 std::string topic = getDialogTopic(static_cast<int>(i));
289 if (topic.empty()) {
290 Utils::logInfo("[%s] NPC: Dialog node %d does not have a topic.", full_filename.c_str(), i);
291 }
292 }
271293 }
272294
273295 void NPC::loadGraphics() {
274296
275 if (gfx != "") {
276 anim->increaseCount(gfx);
277 animationSet = anim->getAnimationSet(gfx);
297 if (stats.animations != "") {
298 anim->increaseCount(stats.animations);
299 animationSet = anim->getAnimationSet(stats.animations);
278300 activeAnimation = animationSet->getAnimation("");
279301 }
280302
318340 }
319341
320342 void NPC::logic() {
321 if (activeAnimation)
322 activeAnimation->advanceFrame();
343 mapr->collider.unblock(stats.pos.x, stats.pos.y);
344
345 Entity::logic();
346 moveMapEvents();
347
348 if (!stats.hero_ally)
349 mapr->collider.block(stats.pos.x, stats.pos.y, true);
323350 }
324351
325352 bool NPC::playSoundIntro() {
475502 return true;
476503 }
477504
505 void NPC::moveMapEvents() {
506
507 // Update event position after NPC has moved
508 for (size_t i = 0; i < mapr->events.size(); i++)
509 {
510 if (mapr->events[i].type == filename)
511 {
512 mapr->events[i].location.x = static_cast<int>(stats.pos.x);
513 mapr->events[i].location.y = static_cast<int>(stats.pos.y);
514
515 mapr->events[i].hotspot.x = static_cast<int>(stats.pos.x);
516 mapr->events[i].hotspot.y = static_cast<int>(stats.pos.y);
517
518 mapr->events[i].center.x =
519 static_cast<float>(stats.pos.x) + static_cast<float>(mapr->events[i].hotspot.w)/2;
520 mapr->events[i].center.y =
521 static_cast<float>(stats.pos.y) + static_cast<float>(mapr->events[i].hotspot.h)/2;
522
523 for (size_t ci = 0; ci < mapr->events[i].components.size(); ci++)
524 {
525 if (mapr->events[i].components[ci].type == EventComponent::NPC_HOTSPOT)
526 {
527 mapr->events[i].components[ci].x = static_cast<int>(stats.pos.x);
528 mapr->events[i].components[ci].y = static_cast<int>(stats.pos.y);
529 }
530 }
531 }
532 }
533 }
534
478535 bool NPC::checkVendor() {
479536 if (!vendor)
480537 return false;
573630 }
574631 }
575632 }
633 else if (dialog[dialog_node][event_cursor].type == EventComponent::NPC_TAKE_A_PARTY) {
634 stats.hero_ally = dialog[dialog_node][event_cursor].x == 0 ? false : true;
635 }
576636 else if (dialog[dialog_node][event_cursor].type == EventComponent::NONE) {
577637 // conversation ends
578638 return false;
601661 EventManager::executeEvent(ev);
602662 }
603663
604 Renderable NPC::getRender() {
605 Renderable r;
606 if (activeAnimation) {
607 r = activeAnimation->getCurrentFrame(direction);
608 }
609 r.map_pos.x = pos.x;
610 r.map_pos.y = pos.y;
611
612 return r;
613 }
614
615664 bool NPC::isDialogType(const int &event_type) {
616665 return event_type == EventComponent::NPC_DIALOG_THEM || event_type == EventComponent::NPC_DIALOG_YOU;
617666 }
622671 delete portraits[i];
623672 }
624673
625 if (gfx != "") {
626 anim->decreaseCount(gfx);
674 if (stats.animations != "") {
675 anim->decreaseCount(stats.animations);
627676 }
628677
629678 while (!vox_intro.empty()) {
2323 #ifndef NPC_H
2424 #define NPC_H
2525
26 #include "CommonIncludes.h"
2726 #include "Entity.h"
2827 #include "ItemStorage.h"
29 #include "Utils.h"
3028
3129 class EventComponent;
3230
6058 static const int VENDOR_MAX_STOCK = 80;
6159 static const bool GET_RESPONSE_NODES = true;
6260
63 NPC();
61 NPC(const Entity& e);
6462 ~NPC();
6563 void load(const std::string& npc_id);
6664 void logic();
6967 void getDialogResponses(std::vector<int>& result, size_t node_id, size_t event_cursor);
7068 std::string getDialogTopic(unsigned int dialog_node);
7169 bool checkMovement(unsigned int dialog_node);
70 void moveMapEvents();
7271 bool checkVendor();
7372 bool processDialog(unsigned int dialog_node, unsigned int& event_cursor);
7473 void processEvent(unsigned int dialog_node, unsigned int cursor);
75 virtual Renderable getRender();
7674
7775 // general info
7876 std::string name;
7977 std::string filename;
80 FPoint pos; // map position
8178
8279 int direction;
80 bool show_on_minimap;
8381
8482 // talker info
8583 Sprite* npc_portrait;
2424 */
2525
2626 #include "Animation.h"
27 #include "Avatar.h"
2728 #include "CampaignManager.h"
29 #include "EntityManager.h"
30 #include "EngineSettings.h"
2831 #include "EventManager.h"
2932 #include "ItemManager.h"
3033 #include "MapRenderer.h"
5356 Map_NPC mn;
5457 ItemStack item_roll;
5558
59 std::map<std::string, NPC *> allies;
60
5661 // remove existing NPCs
57 for (unsigned i=0; i<npcs.size(); i++)
58 delete(npcs[i]);
62 for (unsigned i=0; i<npcs.size(); i++) {
63 if (npcs[i]->stats.hero_ally) {
64 allies[npcs[i]->filename] = npcs[i];
65 }
66 else {
67 delete(npcs[i]);
68 }
69 }
5970
6071 npcs.clear();
6172
7788 if(!status_reqs_met)
7889 continue;
7990
80 NPC *npc = new NPC();
91 // ally npc that was moved from another map should not be loaded once again
92 if (allies.find(mn.id) != allies.end()) {
93 continue;
94 }
95
96 NPC *npc = new NPC(*entitym->getEntityPrototype(mn.id));
97
8198 npc->load(mn.id);
82 npc->pos.x = mn.pos.x;
83 npc->pos.y = mn.pos.y;
99
100 npc->stats.pos.x = mn.pos.x;
101 npc->stats.pos.y = mn.pos.y;
102 npc->stats.hero_ally = false;
84103
85104 // npc->stock.sort();
86105 npcs.push_back(npc);
87
88 mapr->collider.block(npc->pos.x, npc->pos.y, !MapCollision::IS_ALLY);
89
90 // create a map event for this npc
91 Event ev;
92 EventComponent ec;
93
94 // the event hotspot is a 1x1 tile at the npc's feet
95 ev.activate_type = Event::ACTIVATE_ON_TRIGGER;
96 ev.keep_after_trigger = true;
97 Rect location;
98 location.x = static_cast<int>(npc->pos.x);
99 location.y = static_cast<int>(npc->pos.y);
100 location.w = location.h = 1;
101 ev.location = ev.hotspot = location;
102 ev.center.x = static_cast<float>(ev.hotspot.x) + static_cast<float>(ev.hotspot.w)/2;
103 ev.center.y = static_cast<float>(ev.hotspot.y) + static_cast<float>(ev.hotspot.h)/2;
104
105 ec.type = EventComponent::NPC_ID;
106 ec.x = static_cast<int>(npcs.size())-1;
107 ev.components.push_back(ec);
108
109 ec.type = EventComponent::TOOLTIP;
110 ec.s = npc->name;
111 ev.components.push_back(ec);
112
113 // The hitbox for hovering/clicking on an npc is based on their first frame of animation
114 // This might cause some undesired behavior for npcs that have packed animations and a lot of variation
115 // However, it is sufficient for all of our current game data (fantasycore, no-name mod, polymorphable)
116 Renderable ren = npc->activeAnimation->getCurrentFrame(npc->direction);
106 createMapEvent(*npc, npcs.size());
107 }
108
109 FPoint spawn_pos = mapr->collider.getRandomNeighbor(Point(pc->stats.pos), 1, !MapCollision::IGNORE_BLOCKED);
110 while (!allies.empty()) {
111 NPC *npc = allies.begin()->second;
112 allies.erase(allies.begin());
113
114 npc->stats.pos = spawn_pos;
115 npc->stats.direction = pc->stats.direction;
116
117 npcs.push_back(npc);
118 createMapEvent(*npc, npcs.size());
119
120 mapr->collider.block(npc->stats.pos.x, npc->stats.pos.y, !MapCollision::IS_ALLY);
121 }
122
123 }
124
125 void NPCManager::createMapEvent(const NPC& npc, size_t _npcs) {
126 // create a map event for provided npc
127 Event ev;
128 EventComponent ec;
129
130 // the event hotspot is a 1x1 tile at the npc's feet
131 ev.activate_type = Event::ACTIVATE_ON_INTERACT;
132 ev.keep_after_trigger = true;
133 Rect location;
134 location.x = static_cast<int>(npc.stats.pos.x);
135 location.y = static_cast<int>(npc.stats.pos.y);
136 location.w = location.h = 1;
137 ev.location = ev.hotspot = location;
138 ev.center.x = static_cast<float>(ev.hotspot.x) + static_cast<float>(ev.hotspot.w)/2;
139 ev.center.y = static_cast<float>(ev.hotspot.y) + static_cast<float>(ev.hotspot.h)/2;
140
141 ec.type = EventComponent::NPC_ID;
142 ec.x = static_cast<int>(_npcs)-1;
143 ev.components.push_back(ec);
144
145 ec.type = EventComponent::TOOLTIP;
146 ec.s = npc.name;
147 ev.components.push_back(ec);
148
149 // The hitbox for hovering/clicking on an npc is based on their first frame of animation
150 // This might cause some undesired behavior for npcs that have packed animations and a lot of variation
151 // However, it is sufficient for all of our current game data (fantasycore, no-name mod, polymorphable)
152 if (npc.activeAnimation) {
153 Renderable ren = npc.activeAnimation->getCurrentFrame(npc.direction);
117154 ec.type = EventComponent::NPC_HOTSPOT;
118 ec.x = static_cast<int>(npc->pos.x);
119 ec.y = static_cast<int>(npc->pos.y);
155 ec.x = static_cast<int>(npc.stats.pos.x);
156 ec.y = static_cast<int>(npc.stats.pos.y);
120157 ec.z = ren.offset.x;
121158 ec.a = ren.offset.y;
122159 ec.b = ren.src.w;
123160 ec.c = ren.src.h;
124161 ev.components.push_back(ec);
125
126 mapr->events.push_back(ev);
127 }
128
162 ev.type = npc.filename;
163 }
164 else {
165 Utils::logError("NPCManager: Unable to set click hotspot for '%s' due to lack of animation.", npc.filename.c_str());
166 }
167
168 mapr->events.push_back(ev);
129169 }
130170
131171 void NPCManager::logic() {
140180 }
141181
142182 // could not find NPC, try loading it here
143 NPC *n = new NPC();
183 NPC *n = new NPC(*entitym->getEntityPrototype(npcName));
144184 if (n) {
145185 n->load(npcName);
146186 npcs.push_back(n);
150190 return -1;
151191 }
152192
193 Entity* NPCManager::npcFocus(const Point& mouse, const FPoint& cam, bool alive_only) {
194 Point p;
195 Rect r;
196 for(unsigned int i = 0; i < npcs.size(); i++) {
197 if(alive_only && (npcs[i]->stats.cur_state == StatBlock::ENTITY_DEAD || npcs[i]->stats.cur_state == StatBlock::ENTITY_CRITDEAD)) {
198 continue;
199 }
200 if (!npcs[i]->stats.hero_ally) {
201 continue;
202 }
203
204 p = Utils::mapToScreen(npcs[i]->stats.pos.x, npcs[i]->stats.pos.y, cam.x, cam.y);
205
206 Renderable ren = npcs[i]->getRender();
207 r.w = ren.src.w;
208 r.h = ren.src.h;
209 r.x = p.x - ren.offset.x;
210 r.y = p.y - ren.offset.y;
211
212 if (Utils::isWithinRect(r, mouse)) {
213 return npcs[i];
214 }
215 }
216 return NULL;
217 }
218
219 Entity* NPCManager::getNearestNPC(const FPoint& pos, bool get_corpse) {
220 Entity* nearest = NULL;
221 float best_distance = std::numeric_limits<float>::max();
222
223 for (unsigned i=0; i<npcs.size(); i++) {
224 if(!get_corpse && (npcs[i]->stats.cur_state == StatBlock::ENTITY_DEAD || npcs[i]->stats.cur_state == StatBlock::ENTITY_CRITDEAD)) {
225 continue;
226 }
227 if (get_corpse && !npcs[i]->stats.corpse) {
228 continue;
229 }
230 if (!npcs[i]->stats.hero_ally) {
231 continue;
232 }
233
234 float distance = Utils::calcDist(pos, npcs[i]->stats.pos);
235 if (distance < best_distance) {
236 best_distance = distance;
237 nearest = npcs[i];
238 }
239 }
240
241 if (best_distance > eset->misc.interact_range)
242 nearest = NULL;
243
244 return nearest;
245 }
246
153247 NPCManager::~NPCManager() {
154248 for (unsigned i=0; i<npcs.size(); i++) {
155249 delete npcs[i];
3131 class StatBlock;
3232 class NPC;
3333 class WidgetTooltip;
34 class Entity;
3435
3536 class NPCManager {
3637 private:
4445
4546 std::vector<NPC*> npcs;
4647 void handleNewMap();
48 void createMapEvent(const NPC& npc, size_t _npcs);
4749 void logic();
4850 void addRenders(std::vector<Renderable> &r);
4951 int getID(const std::string& npcName);
52 Entity* npcFocus(const Point& mouse, const FPoint& cam, bool alive_only);
53 Entity* getNearestNPC(const FPoint& pos, bool get_corpse = false);
5054 };
5155
5256 #endif
2727 CONFIG_MENU_TYPE_DESKTOP_NO_VIDEO = 2
2828 };
2929
30 class Video {
31 public:
32 static const int COUNT = 9;
33 enum {
34 RENDERER,
35 FULLSCREEN,
36 HWSURFACE,
37 VSYNC,
38 TEXTURE_FILTER,
39 DPI_SCALING,
40 PARALLAX_LAYERS,
41 ENABLE_GAMMA,
42 GAMMA
43 };
44 };
45
46 class Audio {
47 public:
48 static const int COUNT = 2;
49 enum {
50 SFX,
51 MUSIC
52 };
53 };
54
55 class Interface {
56 public:
57 static const int COUNT = 16;
58 enum {
59 LANGUAGE,
60 SUBTITLES,
61 COLORBLIND,
62 MINIMAP_MODE,
63 LOOT_TOOLTIPS,
64 AUTO_EQUIP,
65 ITEM_COMPARE_TIPS,
66 LOW_HP_WARNING_TYPE,
67 LOW_HP_THRESHOLD,
68 COMBAT_TEXT,
69 STATBAR_LABELS,
70 STATBAR_AUTOHIDE,
71 HARDWARE_CURSOR,
72 ENTITY_MARKERS,
73 SHOW_FPS,
74 DEV_MODE
75 };
76 };
77
78 class Input {
79 public:
80 static const int COUNT = 7;
81 enum {
82 MOUSE_MOVE,
83 MOUSE_MOVE_SWAP,
84 MOUSE_MOVE_ATTACK,
85 MOUSE_AIM,
86 NO_MOUSE,
87 JOYSTICK,
88 JOYSTICK_DEADZONE
89 };
90 };
91
92 class Misc {
93 public:
94 static const int COUNT = 2;
95 enum {
96 KEYBINDS,
97 MODS
98 };
99 };
100
30101 Platform();
31102 ~Platform();
32103
47118 bool has_lock_file;
48119 unsigned char config_menu_type;
49120 std::string default_renderer;
121
122 std::vector<bool> config_video;
123 std::vector<bool> config_audio;
124 std::vector<bool> config_interface;
125 std::vector<bool> config_input;
126 std::vector<bool> config_misc;
50127 };
51128
52129 extern Platform platform;
7777 , force_hardware_cursor(true)
7878 , has_lock_file(false)
7979 , config_menu_type(CONFIG_MENU_TYPE_BASE)
80 , default_renderer("sdl_hardware") {
80 , default_renderer("")
81 , config_video(Platform::Video::COUNT, true)
82 , config_audio(Platform::Audio::COUNT, true)
83 , config_interface(Platform::Interface::COUNT, true)
84 , config_input(Platform::Input::COUNT, true)
85 , config_misc(Platform::Misc::COUNT, true)
86 {
87 config_video[Platform::Video::RENDERER] = true;
88 config_video[Platform::Video::FULLSCREEN] = false;
89 config_video[Platform::Video::HWSURFACE] = false;
90 config_video[Platform::Video::VSYNC] = false;
91 config_video[Platform::Video::TEXTURE_FILTER] = false;
92 config_video[Platform::Video::ENABLE_GAMMA] = false;
93 config_video[Platform::Video::GAMMA] = false;
94
95 config_interface[Platform::Interface::HARDWARE_CURSOR] = false;
96
97 config_input[Platform::Input::JOYSTICK] = false;
98 config_input[Platform::Input::MOUSE_MOVE] = false;
99 config_input[Platform::Input::MOUSE_AIM] = false;
100 config_input[Platform::Input::NO_MOUSE] = false;
101 config_input[Platform::Input::MOUSE_MOVE_SWAP] = false;
102 config_input[Platform::Input::MOUSE_MOVE_ATTACK] = false;
103 config_input[Platform::Input::JOYSTICK_DEADZONE] = false;
104
105 config_misc[Platform::Misc::KEYBINDS] = false;
81106 }
82107
83108 Platform::~Platform() {
133158 }
134159
135160 if (settings->path_data.empty()) {
136 Utils::logError("Settings: Android external storage unavailable: %s", SDL_GetError());
161 Utils::logError("Platform: Android external storage unavailable: %s", SDL_GetError());
137162 }
138163
139164 if (settings->path_user.empty() || !Filesystem::pathExists(settings->path_user)) {
155180 settings->path_conf += "/";
156181 settings->path_user += "/";
157182 settings->path_data += "/";
183
184 // create a .nomedia file to prevent game data being added to the Android media library
185 std::ofstream nomedia;
186 nomedia.open(settings->path_user + ".nomedia", std::ios::out);
187 if (nomedia.bad()) {
188 Utils::logError("Platform: Unable to create Android .nomedia file.");
189 }
190 nomedia.close();
191 nomedia.clear();
158192 }
159193
160194 void Platform::setExitEventFilter() {
4242 , force_hardware_cursor(false)
4343 , has_lock_file(false)
4444 , config_menu_type(CONFIG_MENU_TYPE_DESKTOP_NO_VIDEO)
45 , default_renderer("sdl_hardware") {
45 , default_renderer("sdl_hardware")
46 , config_video(Platform::Video::COUNT, true)
47 , config_audio(Platform::Audio::COUNT, true)
48 , config_interface(Platform::Interface::COUNT, true)
49 , config_input(Platform::Input::COUNT, true)
50 , config_misc(Platform::Misc::COUNT, true)
51 {
52 config_video[Platform::Video::RENDERER] = false;
53 config_video[Platform::Video::FULLSCREEN] = false;
54 config_video[Platform::Video::HWSURFACE] = false;
55 config_video[Platform::Video::VSYNC] = false;
56 config_video[Platform::Video::TEXTURE_FILTER] = false;
57 config_video[Platform::Video::DPI_SCALING] = false;
58 config_video[Platform::Video::ENABLE_GAMMA] = false;
59 config_video[Platform::Video::GAMMA] = false;
60
61 config_input[Platform::Input::JOYSTICK] = false;
62 config_input[Platform::Input::JOYSTICK_DEADZONE] = false;
63
64 config_misc[Platform::Misc::MODS] = false;
4665 }
4766
4867 Platform::~Platform() {
4040 , force_hardware_cursor(true)
4141 , has_lock_file(true)
4242 , config_menu_type(CONFIG_MENU_TYPE_BASE)
43 , default_renderer("") {
43 , default_renderer("")
44 , config_video(Platform::Video::COUNT, true)
45 , config_audio(Platform::Audio::COUNT, true)
46 , config_interface(Platform::Interface::COUNT, true)
47 , config_input(Platform::Input::COUNT, true)
48 , config_misc(Platform::Misc::COUNT, true)
49 {
50 config_video[Platform::Video::RENDERER] = false;
51 config_video[Platform::Video::FULLSCREEN] = false;
52 config_video[Platform::Video::HWSURFACE] = false;
53 config_video[Platform::Video::VSYNC] = false;
54 config_video[Platform::Video::TEXTURE_FILTER] = false;
55 config_video[Platform::Video::DPI_SCALING] = false;
56 config_video[Platform::Video::ENABLE_GAMMA] = false;
57 config_video[Platform::Video::GAMMA] = false;
58
59 config_interface[Platform::Interface::HARDWARE_CURSOR] = false;
60
61 config_input[Platform::Input::JOYSTICK] = false;
62 config_input[Platform::Input::MOUSE_MOVE] = false;
63 config_input[Platform::Input::MOUSE_AIM] = false;
64 config_input[Platform::Input::NO_MOUSE] = false;
65 config_input[Platform::Input::MOUSE_MOVE_SWAP] = false;
66 config_input[Platform::Input::MOUSE_MOVE_ATTACK] = false;
67 config_input[Platform::Input::JOYSTICK_DEADZONE] = false;
68
69 config_misc[Platform::Misc::KEYBINDS] = false;
4470 }
4571
4672 Platform::~Platform() {
109135 path_data = true;
110136 }
111137 else if (!settings->custom_path_data.empty()) {
112 Utils::logError("Settings: Could not find specified game data directory.");
138 Utils::logError("Platform: Could not find specified game data directory.");
113139 settings->custom_path_data = "";
114140 }
115141
5454 , force_hardware_cursor(true)
5555 , has_lock_file(false)
5656 , config_menu_type(CONFIG_MENU_TYPE_BASE)
57 , default_renderer("sdl_hardware") {
57 , default_renderer("sdl_hardware")
58 , config_video(Platform::Video::COUNT, true)
59 , config_audio(Platform::Audio::COUNT, true)
60 , config_interface(Platform::Interface::COUNT, true)
61 , config_input(Platform::Input::COUNT, true)
62 , config_misc(Platform::Misc::COUNT, true)
63 {
64 config_video[Platform::Video::RENDERER] = false;
65 config_video[Platform::Video::FULLSCREEN] = false;
66 config_video[Platform::Video::HWSURFACE] = false;
67 config_video[Platform::Video::VSYNC] = false;
68 config_video[Platform::Video::TEXTURE_FILTER] = false;
69 config_video[Platform::Video::DPI_SCALING] = false;
70 config_video[Platform::Video::ENABLE_GAMMA] = false;
71 config_video[Platform::Video::GAMMA] = false;
72
73 config_interface[Platform::Interface::HARDWARE_CURSOR] = false;
74
75 config_input[Platform::Input::JOYSTICK] = false;
76 config_input[Platform::Input::MOUSE_MOVE] = false;
77 config_input[Platform::Input::MOUSE_AIM] = false;
78 config_input[Platform::Input::NO_MOUSE] = false;
79 config_input[Platform::Input::MOUSE_MOVE_SWAP] = false;
80 config_input[Platform::Input::MOUSE_MOVE_ATTACK] = false;
81 config_input[Platform::Input::JOYSTICK_DEADZONE] = false;
82
83 config_misc[Platform::Misc::KEYBINDS] = false;
5884 }
5985
6086 Platform::~Platform() {
125151 path_data = true;
126152 }
127153 else if (!settings->custom_path_data.empty()) {
128 Utils::logError("Settings: Could not find specified game data directory.");
154 Utils::logError("Platform: Could not find specified game data directory.");
129155 settings->custom_path_data = "";
130156 }
131157
4040 , force_hardware_cursor(false)
4141 , has_lock_file(true)
4242 , config_menu_type(CONFIG_MENU_TYPE_DESKTOP)
43 , default_renderer("") {
43 , default_renderer("")
44 , config_video(Platform::Video::COUNT, true)
45 , config_audio(Platform::Audio::COUNT, true)
46 , config_interface(Platform::Interface::COUNT, true)
47 , config_input(Platform::Input::COUNT, true)
48 , config_misc(Platform::Misc::COUNT, true)
49 {
4450 }
4551
4652 Platform::~Platform() {
109115 path_data = true;
110116 }
111117 else if (!settings->custom_path_data.empty()) {
112 Utils::logError("Settings: Could not find specified game data directory.");
118 Utils::logError("Platform: Could not find specified game data directory.");
113119 settings->custom_path_data = "";
114120 }
115121
155161 if (!path_data && Filesystem::pathExists(settings->path_data)) path_data = true;
156162
157163 // finally assume the local folder
158 if (!path_data) settings->path_data = "./";
164 if (!path_data) {
165 char abs_path[1024];
166 ssize_t len = readlink("/proc/self/exe", abs_path, 1024);
167 if (len >= 0 && len < 1024) {
168 // remove executable name from abs_path
169 const char BREAK_POINT = '/';
170 const char BREAK_STRING = '\0';
171 for(ssize_t i = len; i >= 0; --i) {
172 if(abs_path[i] == BREAK_POINT) {
173 abs_path[i + 1] = BREAK_STRING;
174 break;
175 }
176 }
177 settings->path_data = std::string(abs_path);
178 }
179 else {
180 // unable to get executable path, so just use the working directory
181 settings->path_data = "./";
182 }
183 }
159184 }
160185
161186 bool Platform::dirCreate(const std::string& path) {
3535 , force_hardware_cursor(false)
3636 , has_lock_file(true)
3737 , config_menu_type(CONFIG_MENU_TYPE_DESKTOP)
38 , default_renderer("") {
38 , default_renderer("")
39 , config_video(Platform::Video::COUNT, true)
40 , config_audio(Platform::Audio::COUNT, true)
41 , config_interface(Platform::Interface::COUNT, true)
42 , config_input(Platform::Input::COUNT, true)
43 , config_misc(Platform::Misc::COUNT, true) {
3944 }
4045
4146 Platform::~Platform() {
6671 settings->path_data = "";
6772 if (Filesystem::pathExists(settings->custom_path_data)) settings->path_data = settings->custom_path_data;
6873 else if (!settings->custom_path_data.empty()) {
69 Utils::logError("Settings: Could not find specified game data directory.");
74 Utils::logError("Platform: Could not find specified game data directory.");
7075 settings->custom_path_data = "";
7176 }
7277
2929 #include "Avatar.h"
3030 #include "CombatText.h"
3131 #include "EffectManager.h"
32 #include "EnemyManager.h"
32 #include "EntityManager.h"
3333 #include "EngineSettings.h"
3434 #include "EventManager.h"
3535 #include "FileParser.h"
8383 , requires_targeting(false)
8484 , requires_spawns(0)
8585 , cooldown(0)
86 , requires_max_hp(-1)
87 , requires_max_mp(-1)
88 , requires_not_max_hp(-1)
89 , requires_not_max_mp(-1)
86 , requires_max_hpmp()
9087 , animation_name("")
9188 , sfx_index(-1)
9289 , sfx_hit(0)
210207 }
211208 else if (infile.key == "type") {
212209 // @ATTR effect.type|string|Defines the type of effect
213 effects.back().type = infile.val;
210 effects.back().type = Effect::getTypeFromString(infile.val);
214211 }
215212 else if (infile.key == "name") {
216213 // @ATTR effect.name|string|A displayed name that is shown when hovering the mouse over the effect icon.
275272
276273 bool clear_post_effects = true;
277274
278 int input_id = 0;
279 bool skippingEntry = false;
275 PowerID input_id = 0;
276 bool id_line = false;
280277
281278 while (infile.next()) {
282279 // id needs to be the first component of each power. That is how we write
283280 // data to the correct power.
284281 if (infile.key == "id") {
285282 // @ATTR power.id|power_id|Uniq identifier for the power definition.
286 input_id = Parse::toInt(infile.val);
287 skippingEntry = input_id < 1;
288 if (skippingEntry)
289 infile.error("PowerManager: Power index out of bounds 1-%d, skipping power.", INT_MAX);
290 if (static_cast<int>(powers.size()) < input_id + 1) {
291 powers.resize(input_id + 1);
292 power_animations.resize(powers.size());
293 }
283 id_line = true;
284 input_id = Parse::toPowerID(infile.val);
285 powers[input_id] = Power();
294286
295287 clear_post_effects = true;
296288 powers[input_id].is_empty = false;
297289
298290 continue;
299291 }
300 if (skippingEntry)
292 else id_line = false;
293
294 if (input_id < 1) {
295 if (id_line) infile.error("PowerManager: Power index out of bounds 1-%d, skipping power.", INT_MAX);
296 }
297 if (id_line)
301298 continue;
302299
303300 if (infile.key == "type") {
402399 else if (infile.key == "requires_item") {
403400 // @ATTR power.requires_item|repeatable(item_id, int) : Item, Quantity|Requires a specific item of a specific quantity in inventory. If quantity > 0, then the item will be removed.
404401 PowerRequiredItem pri;
405 pri.id = Parse::popFirstInt(infile.val);
402 pri.id = Parse::toItemID(Parse::popFirstString(infile.val));
406403 pri.quantity = Parse::toInt(Parse::popFirstString(infile.val), 1);
407404 pri.equipped = false;
408405 powers[input_id].required_items.push_back(pri);
410407 else if (infile.key == "requires_equipped_item") {
411408 // @ATTR power.requires_equipped_item|repeatable(item_id, int) : Item, Quantity|Requires a specific item of a specific quantity to be equipped on hero. If quantity > 0, then the item will be removed.
412409 PowerRequiredItem pri;
413 pri.id = Parse::popFirstInt(infile.val);
410 pri.id = Parse::toItemID(Parse::popFirstString(infile.val));
414411 pri.quantity = Parse::popFirstInt(infile.val);
415412 pri.equipped = true;
416413
432429 // @ATTR power.cooldown|duration|Specify the duration for cooldown of the power in 'ms' or 's'.
433430 powers[input_id].cooldown = Parse::toDuration(infile.val);
434431 else if (infile.key == "requires_hpmp_state") {
435 // @ATTR power.requires_hpmp_state|["hp", "mp"], ["percent", "not_percent", "ignore"], int : Stat, Current state, Percentage value|Power can only be used when HP/MP matches the specified state
436 std::string stat = Parse::popFirstString(infile.val);
437 std::string cur_state = Parse::popFirstString(infile.val);
438 int percent = Parse::popFirstInt(infile.val);
439
440 bool is_req = false;
441 bool invert = false;
442 if (cur_state == "percent") {
443 is_req = true;
444 invert = false;
445 }
446 else if (cur_state == "not_percent") {
447 is_req = true;
448 invert = true;
449 }
450 else if (cur_state == "ignore") {
451 is_req = false;
432 // @ATTR power.requires_hpmp_state|["all", "any"], ["percent", "not_percent", "ignore"], int , ["percent", "not_percent", "ignore"], int: Mode, HP state, HP Percentage value, MP state, MP Percentage value|Power can only be used when HP/MP matches the specified state. In 'all' mode, both HP and MP must meet the requirements, where as only one must in 'any' mode. To check a single stat, use 'all' mode and set the 'ignore' state for the other stat.
433
434 std::string mode = Parse::popFirstString(infile.val);
435 std::string state_hp = Parse::popFirstString(infile.val);
436 std::string state_hp_val = Parse::popFirstString(infile.val);
437 std::string state_mp = Parse::popFirstString(infile.val);
438 std::string state_mp_val = Parse::popFirstString(infile.val);
439
440 powers[input_id].requires_max_hpmp.hp = state_hp_val.empty() ? -1 : Parse::toInt(state_hp_val);
441 powers[input_id].requires_max_hpmp.mp = state_mp_val.empty() ? -1 : Parse::toInt(state_mp_val);
442
443 if (state_hp == "percent") {
444 powers[input_id].requires_max_hpmp.hp_state = Power::HPMPSTATE_PERCENT;
445 }
446 else if (state_hp == "not_percent") {
447 powers[input_id].requires_max_hpmp.hp_state = Power::HPMPSTATE_NOT_PERCENT;
448 }
449 else if (state_hp == "ignore" || state_hp.empty()) {
450 powers[input_id].requires_max_hpmp.hp_state = Power::HPMPSTATE_IGNORE;
451 powers[input_id].requires_max_hpmp.hp = -1;
452452 }
453453 else {
454 is_req = false;
455 infile.error("PowerManager: '%s' is not a valid hp/mp state. Use 'percent', 'not_percent', or 'ignore'.", cur_state.c_str());
456 }
457
458 if (stat == "hp") {
459 powers[input_id].requires_max_hp = (is_req && !invert) ? percent : -1;
460 powers[input_id].requires_not_max_hp = (is_req && invert) ? percent : -1;
461 }
462 else if (stat == "mp") {
463 powers[input_id].requires_max_mp = (is_req && !invert) ? percent : -1;
464 powers[input_id].requires_not_max_mp = (is_req && invert) ? percent : -1;
454 infile.error("PowerManager: '%s' is not a valid hp/mp state. Use 'percent', 'not_percent', or 'ignore'.", state_hp.c_str());
455 }
456
457 if (state_mp == "percent") {
458 powers[input_id].requires_max_hpmp.mp_state = Power::HPMPSTATE_PERCENT;
459 }
460 else if (state_mp == "not_percent") {
461 powers[input_id].requires_max_hpmp.mp_state = Power::HPMPSTATE_NOT_PERCENT;
462 }
463 else if (state_mp == "ignore" || state_mp.empty()) {
464 powers[input_id].requires_max_hpmp.mp_state = Power::HPMPSTATE_IGNORE;
465 powers[input_id].requires_max_hpmp.mp = -1;
465466 }
466467 else {
467 infile.error("PowerManager: Please specify 'hp' or 'mp'.");
468 infile.error("PowerManager: '%s' is not a valid hp/mp state. Use 'percent', 'not_percent', or 'ignore'.", state_mp.c_str());
469 }
470
471 if (mode == "any") {
472 powers[input_id].requires_max_hpmp.mode = Power::HPMPSTATE_ANY;
473 }
474 else if (mode == "all") {
475 powers[input_id].requires_max_hpmp.mode = Power::HPMPSTATE_ALL;
476 }
477 else if (mode == "hp") {
478 // TODO deprecated
479 infile.error("PowerManager: 'hp' has been deprecated. Use 'all' or 'any'.");
480
481 powers[input_id].requires_max_hpmp.mode = Power::HPMPSTATE_ALL;
482 powers[input_id].requires_max_hpmp.mp_state = Power::HPMPSTATE_IGNORE;
483 powers[input_id].requires_max_hpmp.mp = -1;
484 }
485 else if (mode == "mp") {
486 // TODO deprecated
487 infile.error("PowerManager: 'mp' has been deprecated. Use 'any' or 'all'.");
488
489 // use the HP values for MP, then ignore the HP stat
490 powers[input_id].requires_max_hpmp.mode = Power::HPMPSTATE_ALL;
491 powers[input_id].requires_max_hpmp.mp_state = powers[input_id].requires_max_hpmp.hp_state;
492 powers[input_id].requires_max_hpmp.mp = powers[input_id].requires_max_hpmp.hp;
493 powers[input_id].requires_max_hpmp.hp_state = Power::HPMPSTATE_IGNORE;
494 powers[input_id].requires_max_hpmp.hp = -1;
495 }
496 else {
497 infile.error("PowerManager: Please specify 'any' or 'all'.");
468498 }
469499 }
470500 // animation info
685715 }
686716 }
687717 else if (infile.key == "post_power") {
688 // @ATTR power.post_power|power_id, int : Power, Chance to cast|Trigger a power if the hazard did damage.
718 // @ATTR power.post_power|power_id, int : Power, Chance to cast|Trigger a power if the hazard did damage. For 'block' type powers, this power will be triggered when the blocker takes damage.
689719 powers[input_id].post_power = Parse::popFirstInt(infile.val);
690720 std::string chance = Parse::popFirstString(infile.val);
691721 if (!chance.empty()) {
863893 // @ATTR power.target_nearest|float|Will automatically target the nearest enemy within the specified range.
864894 powers[input_id].target_nearest = Parse::toFloat(infile.val);
865895 }
896 else if (infile.key == "disable_equip_slots") {
897 // @ATTR power.disable_equip_slots|list(predefined_string)|Passive powers only. A comma separated list of equip slot types to disable when this power is active.
898 powers[input_id].disable_equip_slots.clear();
899 std::string slot_type = Parse::popFirstString(infile.val);
900
901 while (slot_type != "") {
902 powers[input_id].disable_equip_slots.push_back(slot_type);
903 slot_type = Parse::popFirstString(infile.val);
904 }
905 }
866906
867907 else infile.error("PowerManager: '%s' is not a valid key", infile.key.c_str());
868908 }
869909 infile.close();
870910
871 for (size_t i=0; i<powers.size(); ++i) {
911 std::map<PowerID, Power>::iterator power_it;
912 for (power_it = powers.begin(); power_it != powers.end(); ++power_it) {
913 Power& power = power_it->second;
914
872915 // verify wall/post power ids
873 powers[i].wall_power = verifyID(powers[i].wall_power, NULL, ALLOW_ZERO_ID);
874 powers[i].post_power = verifyID(powers[i].post_power, NULL, ALLOW_ZERO_ID);
916 power.wall_power = verifyID(power.wall_power, NULL, ALLOW_ZERO_ID);
917 power.post_power = verifyID(power.post_power, NULL, ALLOW_ZERO_ID);
875918
876919 // calculate effective combat range
877 setCombatRange(i);
920 {
921 power.combat_range = 0;
922
923 // TODO apparently, missiles and repeaters don't need to have "use_hazard=true"?
924 if (!( (!power.use_hazard && power.type == Power::TYPE_FIXED) || power.no_attack) ) {
925 if (power.type == Power::TYPE_FIXED) {
926 if (power.relative_pos) {
927 power.combat_range += power.charge_speed * static_cast<float>(power.lifespan);
928 }
929 if (power.starting_pos == Power::STARTING_POS_TARGET) {
930 power.combat_range = FLT_MAX - power.radius;
931 }
932 }
933 else if (power.type == Power::TYPE_MISSILE) {
934 power.combat_range += power.speed * static_cast<float>(power.lifespan);
935 }
936 else if (power.type == Power::TYPE_REPEATER) {
937 power.combat_range += power.speed * static_cast<float>(power.count);
938 }
939 else {
940 power.combat_range = 0;
941 }
942
943 power.combat_range += (power.radius / 2.f);
944 }
945 }
878946 }
879947 }
880948
9411009 /**
9421010 * Check if the target is valid (not an empty area or a wall)
9431011 */
944 bool PowerManager::hasValidTarget(int power_index, StatBlock *src_stats, const FPoint& target) {
1012 bool PowerManager::hasValidTarget(PowerID power_index, StatBlock *src_stats, const FPoint& target) {
9451013
9461014 if (!collider) return false;
9471015
9681036 * @param target Aim position in map coordinates
9691037 * @param haz A newly-initialized hazard
9701038 */
971 void PowerManager::initHazard(int power_index, StatBlock *src_stats, const FPoint& target, Hazard *haz) {
1039 void PowerManager::initHazard(PowerID power_index, StatBlock *src_stats, const FPoint& target, Hazard *haz) {
9721040
9731041 //the hazard holds the statblock of its source
9741042 haz->src_stats = src_stats;
10441112 * Any attack-based effects are handled by hazards.
10451113 * Self-enhancements (buffs) are handled by this function.
10461114 */
1047 void PowerManager::buff(int power_index, StatBlock *src_stats, const FPoint& target) {
1115 void PowerManager::buff(PowerID power_index, StatBlock *src_stats, const FPoint& target) {
10481116
10491117 // teleport to the target location
10501118 if (powers[power_index].buff_teleport) {
10951163 * Play the sound effect for this power
10961164 * Equipped items may have unique sounds
10971165 */
1098 void PowerManager::playSound(int power_index) {
1166 void PowerManager::playSound(PowerID power_index) {
10991167 if (powers[power_index].sfx_index != -1)
11001168 snd->play(sfx[powers[power_index].sfx_index], snd->DEFAULT_CHANNEL, snd->NO_POS, !snd->LOOP);
11011169 }
11021170
1103 bool PowerManager::effect(StatBlock *target_stats, StatBlock *caster_stats, int power_index, int source_type) {
1171 bool PowerManager::effect(StatBlock *target_stats, StatBlock *caster_stats, PowerID power_index, int source_type) {
11041172 const Power& pwr = powers[power_index];
11051173 for (unsigned i=0; i<powers[power_index].post_effects.size(); i++) {
11061174 const PostEffect& pe = pwr.post_effects[i];
11151183 int duration = pe.duration;
11161184
11171185 StatBlock *dest_stats = pe.target_src ? caster_stats : target_stats;
1118 if (dest_stats->hp <= 0 && !(effect_data.type == "revive" || (effect_data.type.empty() && pe.id == "revive")))
1186 if (dest_stats->hp <= 0 && !(effect_data.type == Effect::REVIVE || (effect_data.type == Effect::NONE && pe.id == "revive")))
11191187 continue;
11201188
11211189 if (effect_ptr != NULL) {
11221190 // effects loaded from powers/effects.txt
11231191 effect_data = (*effect_ptr);
11241192
1125 if (effect_data.type == "shield") {
1193 if (effect_data.type == Effect::SHIELD) {
11261194 if (pwr.base_damage == eset->damage_types.list.size())
11271195 continue;
11281196
11381206
11391207 comb->addString(msg->get("+%d Shield",magnitude), dest_stats->pos, CombatText::MSG_BUFF);
11401208 }
1141 else if (effect_data.type == "heal") {
1209 else if (effect_data.type == Effect::HEAL) {
11421210 if (pwr.base_damage == eset->damage_types.list.size())
11431211 continue;
11441212
11561224 dest_stats->hp += magnitude;
11571225 if (dest_stats->hp > dest_stats->get(Stats::HP_MAX)) dest_stats->hp = dest_stats->get(Stats::HP_MAX);
11581226 }
1159 else if (effect_data.type == "knockback") {
1227 else if (effect_data.type == Effect::KNOCKBACK) {
11601228 if (dest_stats->speed_default == 0) {
11611229 // enemies that can't move can't be knocked back
11621230 continue;
11671235 }
11681236 else {
11691237 // all other effects
1170 effect_data.id = effect_data.type = pe.id;
1238 effect_data.id = pe.id;
1239 effect_data.type = Effect::getTypeFromString(pe.id);
11711240 }
11721241
11731242 dest_stats->effects.addEffect(effect_data, duration, magnitude, source_type, power_index);
11841253 * @param target The mouse cursor position in map coordinates
11851254 * return boolean true if successful
11861255 */
1187 bool PowerManager::fixed(int power_index, StatBlock *src_stats, const FPoint& target) {
1256 bool PowerManager::fixed(PowerID power_index, StatBlock *src_stats, const FPoint& target) {
11881257
11891258 if (powers[power_index].use_hazard) {
11901259 int delay_iterator = 0;
12201289 * @param target The mouse cursor position in map coordinates
12211290 * return boolean true if successful
12221291 */
1223 bool PowerManager::missile(int power_index, StatBlock *src_stats, const FPoint& target) {
1292 bool PowerManager::missile(PowerID power_index, StatBlock *src_stats, const FPoint& target) {
12241293 FPoint src;
12251294 if (powers[power_index].starting_pos == Power::STARTING_POS_TARGET) {
12261295 src = target;
12751344 /**
12761345 * Repeaters are multiple hazards that spawn in a straight line
12771346 */
1278 bool PowerManager::repeater(int power_index, StatBlock *src_stats, const FPoint& target) {
1347 bool PowerManager::repeater(PowerID power_index, StatBlock *src_stats, const FPoint& target) {
12791348
12801349 payPowerCost(power_index, src_stats);
12811350
13311400 /**
13321401 * Spawn a creature. Does not create a hazard
13331402 */
1334 bool PowerManager::spawn(int power_index, StatBlock *src_stats, const FPoint& target) {
1403 bool PowerManager::spawn(PowerID power_index, StatBlock *src_stats, const FPoint& target) {
13351404 Map_Enemy espawn;
13361405 espawn.type = powers[power_index].spawn_type;
13371406 espawn.summoner = src_stats;
13871456 /**
13881457 * Transform into a creature. Fully replaces entity characteristics
13891458 */
1390 bool PowerManager::transform(int power_index, StatBlock *src_stats, const FPoint& target) {
1459 bool PowerManager::transform(PowerID power_index, StatBlock *src_stats, const FPoint& target) {
13911460 // locking the actionbar prevents power usage until after the hero is transformed
13921461 inpt->lockActionBar();
13931462
14431512 * Stationary blocking with optional buffs/debuffs
14441513 * Only the hero can block
14451514 */
1446 bool PowerManager::block(int power_index, StatBlock *src_stats) {
1515 bool PowerManager::block(PowerID power_index, StatBlock *src_stats) {
14471516 // if the hero is blocking, we can't activate any more blocking powers
14481517 if (src_stats->effects.triggered_block)
14491518 return false;
14641533 return true;
14651534 }
14661535
1536 PowerID PowerManager::checkReplaceByEffect(PowerID power_index, StatBlock *src_stats) {
1537 for (size_t i = 0; i < powers[power_index].replace_by_effect.size(); ++i) {
1538 if (src_stats->effects.hasEffect(powers[power_index].replace_by_effect[i].effect_id, powers[power_index].replace_by_effect[i].count)) {
1539 return powers[power_index].replace_by_effect[i].power_id;
1540 }
1541 }
1542
1543 return power_index;
1544 }
1545
14671546 /**
14681547 * Activate is basically a switch/redirect to the appropriate function
14691548 */
1470 bool PowerManager::activate(int power_index, StatBlock *src_stats, const FPoint& target) {
1471 if (static_cast<unsigned>(power_index) >= powers.size())
1549 bool PowerManager::activate(PowerID power_index, StatBlock *src_stats, const FPoint& target) {
1550 if (powers[power_index].is_empty)
14721551 return false;
1473
1474 for (size_t i = 0; i < powers[power_index].replace_by_effect.size(); ++i) {
1475 if (src_stats->effects.hasEffect(powers[power_index].replace_by_effect[i].effect_id, powers[power_index].replace_by_effect[i].count)) {
1476 return activate(powers[power_index].replace_by_effect[i].power_id, src_stats, target);
1477 }
1478 }
14791552
14801553 if (src_stats->hero) {
14811554 if (powers[power_index].requires_mp > src_stats->mp)
15271600 /**
15281601 * pay costs, i.e. remove mana or items.
15291602 */
1530 void PowerManager::payPowerCost(int power_index, StatBlock *src_stats) {
1603 void PowerManager::payPowerCost(PowerID power_index, StatBlock *src_stats) {
15311604 if (src_stats) {
15321605 if (src_stats->hero) {
15331606 src_stats->mp -= powers[power_index].requires_mp;
15681641 * Activate an entity's passive powers
15691642 */
15701643 void PowerManager::activatePassives(StatBlock *src_stats) {
1644 bool activated_passive = false;
15711645 bool triggered_others = false;
15721646 // unlocked powers
15731647 for (unsigned i=0; i<src_stats->powers_passive.size(); i++) {
1574 activatePassiveByTrigger(src_stats->powers_passive[i], src_stats, triggered_others);
1648 activated_passive |= activatePassiveByTrigger(src_stats->powers_passive[i], src_stats, triggered_others);
15751649 }
15761650
15771651 // item powers
15781652 for (unsigned i=0; i<src_stats->powers_list_items.size(); i++) {
1579 activatePassiveByTrigger(src_stats->powers_list_items[i], src_stats, triggered_others);
1653 activated_passive |= activatePassiveByTrigger(src_stats->powers_list_items[i], src_stats, triggered_others);
15801654 }
15811655
15821656 // Only trigger normal passives once
1583 if (triggered_others) src_stats->effects.triggered_others = true;
1657 if (triggered_others)
1658 src_stats->effects.triggered_others = true;
15841659
15851660 // the hit/death triggers can be triggered more than once, so reset them here
15861661 // the block trigger is handled in the Avatar class
15881663 src_stats->effects.triggered_death = false;
15891664
15901665 activatePassivePostPowers(src_stats);
1591 }
1592
1593 void PowerManager::activatePassiveByTrigger(int power_id, StatBlock *src_stats, bool& triggered_others) {
1666
1667 // passive powers can lock equipment slots, so update equipment here
1668 if (activated_passive && src_stats->hero)
1669 menu->inv->applyEquipment();
1670 }
1671
1672 bool PowerManager::activatePassiveByTrigger(PowerID power_id, StatBlock *src_stats, bool& triggered_others) {
15941673 if (powers[power_id].passive) {
15951674 int trigger = powers[power_id].passive_trigger;
15961675
15971676 if (trigger == -1) {
1598 if (src_stats->effects.triggered_others) return;
1599 else triggered_others = true;
1600 }
1601 else if (trigger == Power::TRIGGER_BLOCK && !src_stats->effects.triggered_block) return;
1602 else if (trigger == Power::TRIGGER_HIT && !src_stats->effects.triggered_hit) return;
1677 if (src_stats->effects.triggered_others)
1678 return false;
1679 else
1680 triggered_others = true;
1681 }
1682 else if (trigger == Power::TRIGGER_BLOCK && !src_stats->effects.triggered_block)
1683 return false;
1684 else if (trigger == Power::TRIGGER_HIT && !src_stats->effects.triggered_hit)
1685 return false;
16031686 else if (trigger == Power::TRIGGER_HALFDEATH && !src_stats->effects.triggered_halfdeath) {
1604 if (src_stats->hp > src_stats->get(Stats::HP_MAX)/2) return;
1605 else src_stats->effects.triggered_halfdeath = true;
1687 if (src_stats->hp > src_stats->get(Stats::HP_MAX)/2)
1688 return false;
1689 else
1690 src_stats->effects.triggered_halfdeath = true;
16061691 }
16071692 else if (trigger == Power::TRIGGER_JOINCOMBAT && !src_stats->effects.triggered_joincombat) {
1608 if (!src_stats->in_combat) return;
1609 else src_stats->effects.triggered_joincombat = true;
1610 }
1611 else if (trigger == Power::TRIGGER_DEATH && !src_stats->effects.triggered_death) return;
1693 if (!src_stats->in_combat)
1694 return false;
1695 else
1696 src_stats->effects.triggered_joincombat = true;
1697 }
1698 else if (trigger == Power::TRIGGER_DEATH && !src_stats->effects.triggered_death) {
1699 return false;
1700 }
16121701
16131702 activate(power_id, src_stats, src_stats->pos);
16141703 src_stats->refresh_stats = true;
16151704
1616 int post_power = powers[power_id].post_power;
1705 PowerID post_power = powers[power_id].post_power;
16171706 if (post_power > 0) {
16181707 src_stats->setPowerCooldown(post_power, powers[post_power].cooldown);
16191708 }
1620 }
1709
1710 return true;
1711 }
1712 return false;
16211713 }
16221714
16231715 /**
16241716 * Activate a single passive
16251717 * this is used when unlocking powers in MenuPowers
16261718 */
1627 void PowerManager::activateSinglePassive(StatBlock *src_stats, int id) {
1719 void PowerManager::activateSinglePassive(StatBlock *src_stats, PowerID id) {
16281720 if (!powers[id].passive) return;
16291721
16301722 if (powers[id].passive_trigger == -1) {
16321724 src_stats->refresh_stats = true;
16331725 src_stats->effects.triggered_others = true;
16341726
1635 int post_power = powers[id].post_power;
1727 PowerID post_power = powers[id].post_power;
16361728 if (post_power > 0) {
16371729 src_stats->setPowerCooldown(post_power, powers[post_power].cooldown);
16381730 }
16441736 */
16451737 void PowerManager::activatePassivePostPowers(StatBlock *src_stats) {
16461738 for (size_t i = 0; i < src_stats->powers_passive.size(); ++i) {
1647 const int post_power = powers[src_stats->powers_passive[i]].post_power;
1739 const PowerID post_power = powers[src_stats->powers_passive[i]].post_power;
16481740 if (post_power <= 0)
16491741 continue;
16501742
16511743 if (powers[post_power].new_state != Power::STATE_INSTANT)
1744 continue;
1745
1746 // blocking powers use a passive trigger, but we only want to activate their post_power when the blocker takes a hit
1747 if (powers[src_stats->powers_passive[i]].type == Power::TYPE_BLOCK)
16521748 continue;
16531749
16541750 if (src_stats->getPowerCooldown(post_power) == 0 && src_stats->canUsePower(post_power, !StatBlock::CAN_USE_PASSIVE)) {
16691765 return NULL;
16701766 }
16711767
1672 int PowerManager::verifyID(int power_id, FileParser* infile, bool allow_zero) {
1673 bool lower_bound = (allow_zero && power_id < 0) || (!allow_zero && power_id < 1);
1674 if (lower_bound || static_cast<unsigned>(power_id) >= powers.size()) {
1768 PowerID PowerManager::verifyID(PowerID power_id, FileParser* infile, bool allow_zero) {
1769 bool is_valid = (allow_zero || (!allow_zero && power_id > 0));
1770 if (!is_valid) {
16751771 if (infile != NULL)
16761772 infile->error("PowerManager: %d is not a valid power id.", power_id);
16771773 else
17091805 if (!items->requirementsMet(src_stats, pow.required_items[i].id)) {
17101806 return false;
17111807 }
1712 if (!menu->inv->inventory[MenuInventory::CARRIED].contain(pow.required_items[i].id, pow.required_items[i].quantity)) {
1808
1809 // Cap the lower bound of quantity to 1.
1810 // We can set required quantity to 0 in order to not consume the item,
1811 // but checking for presence of the item requires >0 quantity
1812 int quantity = std::max(1, pow.required_items[i].quantity);
1813 if (!menu->inv->inventory[MenuInventory::CARRIED].contain(pow.required_items[i].id, quantity)) {
17131814 return false;
17141815 }
17151816 }
17191820 return true;
17201821 }
17211822
1722 void PowerManager::setCombatRange(size_t power_index) {
1723 Power& pow = powers[power_index];
1724
1725 pow.combat_range = 0;
1726
1727 // TODO apparently, missiles and repeaters don't need to have "use_hazard=true"?
1728 if ((!pow.use_hazard && pow.type == Power::TYPE_FIXED) || pow.no_attack) {
1729 return;
1730 }
1731
1732 if (pow.type == Power::TYPE_FIXED) {
1733 if (pow.relative_pos) {
1734 pow.combat_range += pow.charge_speed * static_cast<float>(pow.lifespan);
1735 }
1736 if (pow.starting_pos == Power::STARTING_POS_TARGET) {
1737 pow.combat_range = FLT_MAX - pow.radius;
1738 }
1739 }
1740 else if (pow.type == Power::TYPE_MISSILE) {
1741 pow.combat_range += pow.speed * static_cast<float>(pow.lifespan);
1742 }
1743 else if (pow.type == Power::TYPE_REPEATER) {
1744 pow.combat_range += pow.speed * static_cast<float>(pow.count);
1745 }
1746 else {
1747 pow.combat_range = 0;
1748 }
1749
1750 pow.combat_range += (pow.radius / 2.f);
1751 }
1752
1753 bool PowerManager::checkCombatRange(int power_index, StatBlock* src_stats, FPoint target) {
1823 bool PowerManager::checkRequiredMaxHPMP(const Power &pow, const StatBlock *src_stats) {
1824 bool hp_ok = true;
1825 bool mp_ok = true;
1826
1827 if (pow.requires_max_hpmp.hp_state == Power::HPMPSTATE_PERCENT && src_stats->hp < (src_stats->get(Stats::HP_MAX) * pow.requires_max_hpmp.hp) / 100)
1828 hp_ok = false;
1829 else if (pow.requires_max_hpmp.hp_state == Power::HPMPSTATE_NOT_PERCENT && src_stats->hp >= (src_stats->get(Stats::HP_MAX) * pow.requires_max_hpmp.hp) / 100)
1830 hp_ok = false;
1831
1832 if (pow.requires_max_hpmp.mp_state == Power::HPMPSTATE_PERCENT && src_stats->mp < (src_stats->get(Stats::MP_MAX) * pow.requires_max_hpmp.mp) / 100)
1833 mp_ok = false;
1834 else if (pow.requires_max_hpmp.mp_state == Power::HPMPSTATE_NOT_PERCENT && src_stats->mp >= (src_stats->get(Stats::MP_MAX) * pow.requires_max_hpmp.mp) / 100)
1835 mp_ok = false;
1836
1837 if (pow.requires_max_hpmp.mode == Power::HPMPSTATE_ALL)
1838 return hp_ok && mp_ok;
1839 else if (pow.requires_max_hpmp.mode == Power::HPMPSTATE_ANY)
1840 return hp_ok || mp_ok;
1841 else
1842 return true;
1843 }
1844
1845 bool PowerManager::checkCombatRange(PowerID power_index, StatBlock* src_stats, FPoint target) {
17541846 Power& pow = powers[power_index];
17551847
17561848 if (pow.combat_range == 0)
17711863 }
17721864
17731865 PowerManager::~PowerManager() {
1774 for (size_t i = 0; i < powers.size(); ++i) {
1775 if (powers[i].animation_name.empty())
1866 std::map<PowerID, Power>::iterator power_it;
1867 for (power_it = powers.begin(); power_it != powers.end(); ++power_it) {
1868 if (power_it->second.animation_name.empty())
17761869 continue;
17771870
1778 anim->decreaseCount(powers[i].animation_name);
1779
1780 if (power_animations[i])
1781 delete power_animations[i];
1871 anim->decreaseCount(power_it->second.animation_name);
1872
1873 if (power_animations[power_it->first])
1874 delete power_animations[power_it->first];
17821875 }
17831876
17841877 for (size_t i = 0; i < effects.size(); ++i) {
6262
6363 class PowerRequiredItem {
6464 public:
65 int id;
65 ItemID id;
6666 int quantity;
6767 bool equipped;
6868
7575
7676 class Power {
7777 public:
78 enum {
79 HPMPSTATE_ANY = 0,
80 HPMPSTATE_ALL = 1
81 };
82 enum {
83 HPMPSTATE_IGNORE = 0,
84 HPMPSTATE_PERCENT = 1,
85 HPMPSTATE_NOT_PERCENT = 2
86 };
87 class HPMPState {
88 public:
89 int mode;
90 int hp_state;
91 int mp_state;
92 int hp;
93 int mp;
94 HPMPState()
95 : mode(HPMPSTATE_ANY)
96 , hp_state(HPMPSTATE_IGNORE)
97 , mp_state(HPMPSTATE_IGNORE)
98 , hp(-1)
99 , mp(-1)
100 {}
101 ~HPMPState() {}
102 };
103
78104 enum {
79105 TYPE_FIXED = 0,
80106 TYPE_MISSILE = 1,
168194 bool requires_targeting; // power only makes sense when using click-to-target
169195 int requires_spawns;
170196 int cooldown; // milliseconds before you can use the power again
171 int requires_max_hp;
172 int requires_max_mp;
173 int requires_not_max_hp;
174 int requires_not_max_mp;
197 HPMPState requires_max_hpmp;
175198
176199 // animation info
177200 std::string animation_name;
244267 bool buff;
245268 bool buff_teleport;
246269 bool buff_party;
247 int buff_party_power_id;
270 PowerID buff_party_power_id;
248271
249272 std::vector<PostEffect> post_effects;
250273
251 int pre_power;
274 PowerID pre_power;
252275 int pre_power_chance;
253 int post_power;
276 PowerID post_power;
254277 int post_power_chance;
255 int wall_power;
278 PowerID wall_power;
256279 int wall_power_chance;
257280 bool wall_reflect;
258281
288311
289312 float target_nearest;
290313
314 std::vector<std::string> disable_equip_slots;
315
291316 Power();
292317 ~Power() {
293318 }
304329 bool isValidEffect(const std::string& type);
305330 int loadSFX(const std::string& filename);
306331
307 void initHazard(int powernum, StatBlock *src_stats, const FPoint& target, Hazard *haz);
308 void buff(int power_index, StatBlock *src_stats, const FPoint& target);
309 void playSound(int power_index);
310
311 bool fixed(int powernum, StatBlock *src_stats, const FPoint& target);
312 bool missile(int powernum, StatBlock *src_stats, const FPoint& target);
313 bool repeater(int powernum, StatBlock *src_stats, const FPoint& target);
314 bool spawn(int powernum, StatBlock *src_stats, const FPoint& target);
315 bool transform(int powernum, StatBlock *src_stats, const FPoint& target);
316 bool block(int power_index, StatBlock *src_stats);
317
318 void payPowerCost(int power_index, StatBlock *src_stats);
319
320 void activatePassiveByTrigger(int power_id, StatBlock *src_stats, bool& triggered_others);
332 void initHazard(PowerID power_index, StatBlock *src_stats, const FPoint& target, Hazard *haz);
333 void buff(PowerID power_index, StatBlock *src_stats, const FPoint& target);
334 void playSound(PowerID power_index);
335
336 bool fixed(PowerID power_index, StatBlock *src_stats, const FPoint& target);
337 bool missile(PowerID power_index, StatBlock *src_stats, const FPoint& target);
338 bool repeater(PowerID power_index, StatBlock *src_stats, const FPoint& target);
339 bool spawn(PowerID power_index, StatBlock *src_stats, const FPoint& target);
340 bool transform(PowerID power_index, StatBlock *src_stats, const FPoint& target);
341 bool block(PowerID power_index, StatBlock *src_stats);
342
343 void payPowerCost(PowerID power_index, StatBlock *src_stats);
344
345 bool activatePassiveByTrigger(PowerID power_id, StatBlock *src_stats, bool& triggered_others);
321346 void activatePassivePostPowers(StatBlock *src_stats);
322347
323 void setCombatRange(size_t power_index);
324
325 std::vector<Animation*> power_animations;
348 std::map<PowerID, Animation*> power_animations;
326349 std::vector<Animation*> effect_animations;
327350
328351 public:
332355 ~PowerManager();
333356
334357 void handleNewMap(MapCollision *_collider);
335 bool activate(int power_index, StatBlock *src_stats, const FPoint& target);
336 bool canUsePower(unsigned id) const;
337 bool hasValidTarget(int power_index, StatBlock *src_stats, const FPoint& target);
338 bool effect(StatBlock *target_stats, StatBlock *caster_stats, int power_index, int source_type);
358 bool activate(PowerID power_index, StatBlock *src_stats, const FPoint& target);
359 bool canUsePower(PowerID id) const;
360 bool hasValidTarget(PowerID power_index, StatBlock *src_stats, const FPoint& target);
361 bool effect(StatBlock *target_stats, StatBlock *caster_stats, PowerID power_index, int source_type);
339362 void activatePassives(StatBlock *src_stats);
340 void activateSinglePassive(StatBlock *src_stats, int id);
341 int verifyID(int power_id, FileParser* infile, bool allow_zero);
363 void activateSinglePassive(StatBlock *src_stats, PowerID id);
364 PowerID verifyID(PowerID power_id, FileParser* infile, bool allow_zero);
342365 bool checkNearestTargeting(const Power &pow, const StatBlock *src_stats, bool check_corpses);
343366 bool checkRequiredItems(const Power &pow, const StatBlock *src_stats);
344 bool checkCombatRange(int power_index, StatBlock *src_stats, FPoint target);
367 bool checkRequiredMaxHPMP(const Power &pow, const StatBlock *src_stats);
368 bool checkCombatRange(PowerID power_index, StatBlock *src_stats, FPoint target);
369 PowerID checkReplaceByEffect(PowerID power_index, StatBlock *src_stats);
345370
346371 EffectDef* getEffectDef(const std::string& id);
347372
348373 std::vector<EffectDef> effects;
349 std::vector<Power> powers;
374 std::map<PowerID, Power> powers;
350375 std::queue<Hazard *> hazards; // output; read by HazardManager
351376 std::queue<Map_Enemy> map_enemies; // output; read by PowerManager
352377
353378 // shared sounds for power special effects
354379 std::vector<SoundID> sfx;
355380
356 std::vector<int> used_items;
357 std::vector<int> used_equipped_items;
381 std::vector<ItemID> used_items;
382 std::vector<ItemID> used_equipped_items;
358383 };
359384
360385 #endif
1919 #include "RenderDevice.h"
2020 #include "Settings.h"
2121 #include "SharedResources.h"
22 #include "UtilsMath.h"
2223
2324 #include <assert.h>
24 #include <math.h>
2525 #include <stdio.h>
2626
2727 /*
100100
101101 void Sprite::setClipFromRect(const Rect& clip) {
102102 src = clip;
103
104 // don't exceed the dimensions of the image
105 const int target_w = getGraphicsWidth();
106 const int target_h = getGraphicsHeight();
107 if (src.x + src.w > target_w)
108 src.w = target_w - src.x;
109 if (src.y + src.h > target_h)
110 src.h = target_h - src.y;
103111 }
104112
105113 void Sprite::setClip(const int x, const int y, const int w, const int h) {
106 src.x = x;
107 src.y = y;
108 src.w = w;
109 src.h = h;
114 setClipFromRect(Rect(x, y, w, h));
110115 }
111116
112117 const Rect& Sprite::getClip() {
157162 , texture_filter(false)
158163 , ignore_texture_filter(false)
159164 , min_screen(640, 480)
165 , destructive_fullscreen(false)
160166 , is_initialized(false)
161167 , reload_graphics(false)
162168 , ddpi(0)
173179 int status = createContextInternal();
174180
175181 if (status == -1) {
182 Utils::logError("RenderDevice: createContext() failed, trying previous settings.");
176183 // try previous setting first
177184 settings->fullscreen = fullscreen;
178185 settings->hwsurface = hwsurface;
183190 }
184191
185192 if (status == -1) {
193 Utils::logError("RenderDevice: createContext() failed, disabling all options.");
186194 // last resort, try turning everything off
187195 settings->fullscreen = false;
188196 settings->hwsurface = false;
363371 Utils::logError("RenderDevice: Renderer does not support setting background color!");
364372 }
365373
374 void RenderDevice::setFullscreen(bool enable_fullscreen) {
375 Utils::logInfo("RenderDevice: Trying to set fullscreen=%d, without recreating the rendering context, but setFullscreen() is not implemented for this renderer.", enable_fullscreen);
376 }
377
366378 void RenderDevice::drawEllipse(int x0, int y0, int x1, int y1, const Color& color, float step) {
367379 float rx = static_cast<float>(x1 - x0) / 2.f;
368380 float ry = static_cast<float>(y1 - y0) / 2.f;
112112
113113 virtual void fillWithColor(const Color& color) = 0;
114114 virtual void drawPixel(int x, int y, const Color& color) = 0;
115 virtual void drawLine(int x0, int y0, int x1, int y1, const Color& color) = 0;
115116 virtual void beginPixelBatch();
116117 virtual void endPixelBatch();
117118 virtual Image* resize(int width, int height) = 0;
227228 void drawEllipse(int x0, int y0, int x1, int y1, const Color& color, float step);
228229 virtual void windowResize() = 0;
229230 virtual void setBackgroundColor(Color color);
231 virtual void setFullscreen(bool enable_fullscreen);
230232
231233 bool reloadGraphics();
232234
251253 bool texture_filter;
252254 bool ignore_texture_filter;
253255 Point min_screen;
256 bool destructive_fullscreen;
254257
255258 bool is_initialized;
256259 bool reload_graphics;
3030 #include "Settings.h"
3131 #include "UtilsParsing.h"
3232
33 SDLFontStyle::SDLFontStyle() : FontStyle(), ttfont(NULL) {
34 }
35
36 SDLFontEngine::SDLFontEngine() : FontEngine(), active_font(NULL) {
33 SDLFontStyle::SDLFontStyle()
34 : FontStyle()
35 , ttfont(NULL)
36 {
37 }
38
39 SDLFontEngine::SDLFontEngine()
40 : FontEngine()
41 , active_font(NULL)
42 {
3743 // Initiate SDL_ttf
3844 if(!TTF_WasInit() && TTF_Init()==-1) {
3945 Utils::logError("SDLFontEngine: TTF_Init: %s", TTF_GetError());
94100
95101 // Attempt to set the default active font
96102 setFont("font_regular");
97 if (!active_font) {
103 if (!isActiveFontValid()) {
98104 Utils::logError("FontEngine: Unable to determine default font!");
99105 Utils::logErrorDialog("FontEngine: Unable to determine default font!");
100 mods->resetModConfig();
101 Utils::Exit(1);
102 }
106 }
107 }
108
109 bool SDLFontEngine::isActiveFontValid() {
110 return active_font && active_font->ttfont;
103111 }
104112
105113 int SDLFontEngine::getLineHeight() {
114 if (!isActiveFontValid())
115 return 1;
116
106117 return active_font->line_height;
107118 }
108119
109120 int SDLFontEngine::getFontHeight() {
121 if (!isActiveFontValid())
122 return 1;
123
110124 return active_font->font_height;
111125 }
112126
114128 * For single-line text, just calculate the width
115129 */
116130 int SDLFontEngine::calc_width(const std::string& text) {
131 if (!isActiveFontValid())
132 return 1;
133
117134 int w, h;
118135 TTF_SizeUTF8(active_font->ttfont, text.c_str(), &w, &h);
119136
184201
185202 void SDLFontEngine::setFont(const std::string& _font) {
186203 for (unsigned int i=0; i<font_styles.size(); i++) {
187 if (font_styles[i].name == _font) {
204 if (font_styles[i].ttfont != NULL && font_styles[i].name == _font) {
188205 active_font = &(font_styles[i]);
189206 return;
190207 }
191208 }
209
210 // Unable to find a matching font. Try the first available font style instead
211 for (unsigned int i=0; i<font_styles.size(); i++) {
212 if (font_styles[i].ttfont != NULL) {
213 Utils::logError("FontEngine: Invalid font '%s'. Falling back to '%s'.", _font.c_str(), font_styles[i].name.c_str());
214 active_font = &(font_styles[i]);
215 return;
216 }
217 }
218
219 Utils::logError("FontEngine: Invalid font '%s'. No fallback available.", _font.c_str());
192220 }
193221
194222 /**
196224 * Justify is left, right, or center
197225 */
198226 void SDLFontEngine::renderInternal(const std::string& text, int x, int y, int justify, Image *target, const Color& color) {
199 if (text.empty())
227 if (!isActiveFontValid() || text.empty())
200228 return;
201229
202230 Image *graphics;
3939
4040 class SDLFontEngine : public FontEngine {
4141 private:
42 bool isActiveFontValid();
43
4244 std::vector<SDLFontStyle> font_styles;
4345 SDLFontStyle *active_font;
4446
7777 */
7878 void SDLHardwareImage::drawPixel(int x, int y, const Color& color) {
7979 if (!surface) return;
80
81 if (x < 0 || y < 0 || x >= getWidth() || y >= getHeight())
82 return;
8083
8184 if (pixel_batch_surface) {
8285 // Taken from SDLSoftwareImage::drawPixel()
126129 SDL_SetRenderTarget(renderer, NULL);
127130 }
128131 }
132
133 void SDLHardwareImage::drawLine(int x0, int y0, int x1, int y1, const Color& color) {
134 SDL_SetRenderTarget(renderer, surface);
135 SDL_SetTextureBlendMode(surface, SDL_BLENDMODE_BLEND);
136 SDL_SetRenderDrawColor(renderer, color.r, color.g, color.b, color.a);
137 SDL_RenderDrawLine(renderer, x0, y0, x1, y1);
138 SDL_SetRenderTarget(renderer, NULL);
139 }
140
129141
130142 /**
131143 * Creates a non-accelerated SDL_Surface as a pixel buffer
207219 , texture(NULL)
208220 , titlebar_icon(NULL)
209221 , title(NULL)
210 , background_color(0,0,0,0)
222 , background_color(0,0,0,255)
211223 {
212224 Utils::logInfo("Using Render Device: SDLHardwareRenderDevice (hardware, SDL 2, %s)", SDL_GetCurrentVideoDriver());
213225
227239 }
228240
229241 int SDLHardwareRenderDevice::createContextInternal() {
230 bool settings_changed = (fullscreen != settings->fullscreen ||
242 #ifdef _WIN32
243 // We make heavy use of SDL_TEXTUREACCESS_TARGET for things such as text and the minimap
244 // If we use the 'direct3d' backend on Windows, these textures get lost on window resizing events
245 // So to bypass this, we force 'opengl' on Windows
246 SDL_SetHint(SDL_HINT_RENDER_DRIVER, "opengl");
247 #endif
248
249 bool settings_changed = ((fullscreen != settings->fullscreen && destructive_fullscreen) ||
231250 hwsurface != settings->hwsurface ||
232251 vsync != settings->vsync ||
233252 texture_filter != settings->texture_filter ||
469488 }
470489
471490 void SDLHardwareRenderDevice::blankScreen() {
472 SDL_SetRenderDrawColor(renderer, background_color.r, background_color.g, background_color.b, background_color.a);
491 SDL_SetRenderDrawColor(renderer, 0, 0, 0, 255);
473492 SDL_SetRenderTarget(renderer, NULL);
474493 SDL_RenderClear(renderer);
494 SDL_SetRenderDrawColor(renderer, background_color.r, background_color.g, background_color.b, background_color.a);
475495 SDL_SetRenderTarget(renderer, texture);
476496 SDL_RenderClear(renderer);
477497 return;
623643
624644 void SDLHardwareRenderDevice::setBackgroundColor(Color color) {
625645 background_color = color;
626 }
646 background_color.a = 255; // always 100% alpha
647 }
648
649 void SDLHardwareRenderDevice::setFullscreen(bool enable_fullscreen) {
650 if (!destructive_fullscreen) {
651 if (enable_fullscreen) {
652 SDL_SetWindowFullscreen(window, SDL_WINDOW_FULLSCREEN_DESKTOP);
653 }
654 else {
655 SDL_SetWindowFullscreen(window, 0);
656
657 // restore window to the default size
658 SDL_SetWindowMinimumSize(window, eset->resolutions.min_screen_w, eset->resolutions.min_screen_h);
659 SDL_SetWindowSize(window, eset->resolutions.min_screen_w, eset->resolutions.min_screen_h);
660 windowResize();
661 // setting minimum size might move the window, so set position again
662 SDL_SetWindowPosition(window, SDL_WINDOWPOS_CENTERED, SDL_WINDOWPOS_CENTERED);
663 }
664 windowResize();
665 }
666 }
4545
4646 void fillWithColor(const Color& color);
4747 void drawPixel(int x, int y, const Color& color);
48 void drawLine(int x0, int y0, int x1, int y1, const Color& color);
4849 void beginPixelBatch();
4950 void endPixelBatch();
5051 Image* resize(int width, int height);
7374 void destroyContext();
7475 void windowResize();
7576 void setBackgroundColor(Color color);
77 void setFullscreen(bool enable_fullscreen);
7678 Image *createImage(int width, int height);
7779 void setGamma(float g);
7880 void resetGamma();
153153 binding[Input::ACTIONBAR_USE] = binding_alt[Input::ACTIONBAR_USE] = SDLK_n;
154154
155155 binding[Input::DEVELOPER_MENU] = binding_alt[Input::DEVELOPER_MENU] = SDLK_F5;
156
157 // Convert SDL_Keycode to SDL_Scancode, skip mouse binding
158 for (int key=0; key<KEY_COUNT; key++) {
159 if (SDL_GetScancodeFromKey(binding[key]) > 0) binding[key] = SDL_GetScancodeFromKey(binding[key]);
160 if (SDL_GetScancodeFromKey(binding_alt[key]) > 0) binding_alt[key] = SDL_GetScancodeFromKey(binding_alt[key]);
161 }
162 }
163
164 void SDLInputState::setFixedKeyBindings() {
165 validateFixedKeyBinding(Input::MAIN1, (SDL_BUTTON_LEFT+MOUSE_BIND_OFFSET) * (-1), InputState::BINDING_DEFAULT);
166
167 validateFixedKeyBinding(Input::CTRL, SDLK_LCTRL, InputState::BINDING_DEFAULT);
168 validateFixedKeyBinding(Input::CTRL, SDLK_RCTRL, InputState::BINDING_ALT);
169 binding_joy[Input::CTRL] = -1;
170
171 validateFixedKeyBinding(Input::SHIFT, SDLK_LSHIFT, InputState::BINDING_DEFAULT);
172 validateFixedKeyBinding(Input::SHIFT, SDLK_RSHIFT, InputState::BINDING_ALT);
173 binding_joy[Input::SHIFT] = -1;
174
175 validateFixedKeyBinding(Input::DEL, SDLK_DELETE, InputState::BINDING_DEFAULT);
176 validateFixedKeyBinding(Input::DEL, SDLK_BACKSPACE, InputState::BINDING_ALT);
177 binding_joy[Input::DEL] = -1;
178
179 validateFixedKeyBinding(Input::ALT, SDLK_LALT, InputState::BINDING_DEFAULT);
180 validateFixedKeyBinding(Input::ALT, SDLK_RALT, InputState::BINDING_ALT);
181 binding_joy[Input::ALT] = -1;
182 }
183
184 void SDLInputState::validateFixedKeyBinding(int action, int key, int bindings_list) {
185 if (bindings_list != InputState::BINDING_DEFAULT && bindings_list != InputState::BINDING_ALT)
186 return;
187
188 int scan_key = (key < 0 ? key : SDL_GetScancodeFromKey(key));
189
190 for (int i = 0; i < KEY_COUNT; ++i) {
191 if (i == action) {
192 if (bindings_list == InputState::BINDING_DEFAULT)
193 binding[action] = scan_key;
194 else if (bindings_list == InputState::BINDING_ALT)
195 binding_alt[action] = scan_key;
196
197 continue;
198 }
199
200 if (binding[i] == scan_key)
201 binding[i] = -1;
202
203 if (binding_alt[i] == scan_key)
204 binding_alt[i] = -1;
205 }
156206 }
157207
158208 void SDLInputState::handle() {
304354 last_is_joystick = false;
305355
306356 for (int key=0; key<KEY_COUNT; key++) {
307 if (event.key.keysym.sym == binding[key] || event.key.keysym.sym == binding_alt[key]) {
357 if (event.key.keysym.scancode == binding[key] || event.key.keysym.scancode == binding_alt[key]) {
308358 pressing[key] = true;
309359 un_press[key] = false;
310360 }
318368 last_is_joystick = false;
319369
320370 for (int key=0; key<KEY_COUNT; key++) {
321 if (event.key.keysym.sym == binding[key] || event.key.keysym.sym == binding_alt[key]) {
371 if (event.key.keysym.scancode == binding[key] || event.key.keysym.scancode == binding_alt[key]) {
322372 un_press[key] = true;
323373 }
324374 }
325 last_key = event.key.keysym.sym;
375 last_key = event.key.keysym.scancode;
326376
327377 if (event.key.keysym.sym == SDLK_UP) pressing_up = false;
328378 if (event.key.keysym.sym == SDLK_DOWN) pressing_down = false;
517567 break;
518568 case SDL_QUIT:
519569 done = 1;
570 // Clear inputs when quit is triggered.
571 // Doing this prevents unintended actions being triggered when exiting via an OS keyboard shortcut.
572 // For example, using Win+Esc as a global "close window" command while having CANCEL bound to Esc would cause a crash if it was used on the New Game screen.
573 for (int key=0; key<KEY_COUNT; key++) {
574 pressing[key] = false;
575 un_press[key] = false;
576 lock[key] = false;
577 }
520578 break;
521579 default:
522580 break;
575633 return std::string(SDL_JoystickNameForIndex(index));
576634 }
577635
578 std::string SDLInputState::getKeyName(int key) {
636 std::string SDLInputState::getKeyName(int key, bool get_short_string) {
637 key = SDL_GetKeyFromScancode(static_cast<SDL_Scancode>(key));
638
579639 // first, we try to provide a translation of the key
580 switch (static_cast<SDL_Keycode>(key)) {
581 case SDLK_BACKSPACE: return msg->get("Backspace");
582 case SDLK_CAPSLOCK: return msg->get("CapsLock");
583 case SDLK_DELETE: return msg->get("Delete");
584 case SDLK_DOWN: return msg->get("Down");
585 case SDLK_END: return msg->get("End");
586 case SDLK_ESCAPE: return msg->get("Escape");
587 case SDLK_HOME: return msg->get("Home");
588 case SDLK_INSERT: return msg->get("Insert");
589 case SDLK_LALT: return msg->get("Left Alt");
590 case SDLK_LCTRL: return msg->get("Left Ctrl");
591 case SDLK_LEFT: return msg->get("Left");
592 case SDLK_LSHIFT: return msg->get("Left Shift");
593 case SDLK_NUMLOCKCLEAR: return msg->get("NumLock");
594 case SDLK_PAGEDOWN: return msg->get("PageDown");
595 case SDLK_PAGEUP: return msg->get("PageUp");
596 case SDLK_PAUSE: return msg->get("Pause");
597 case SDLK_PRINTSCREEN: return msg->get("PrintScreen");
598 case SDLK_RALT: return msg->get("Right Alt");
599 case SDLK_RCTRL: return msg->get("Right Ctrl");
600 case SDLK_RETURN: return msg->get("Return");
601 case SDLK_RIGHT: return msg->get("Right");
602 case SDLK_RSHIFT: return msg->get("Right Shift");
603 case SDLK_SCROLLLOCK: return msg->get("ScrollLock");
604 case SDLK_SPACE: return msg->get("Space");
605 case SDLK_TAB: return msg->get("Tab");
606 case SDLK_UP: return msg->get("Up");
640 if (get_short_string) {
641 switch (static_cast<SDL_Keycode>(key)) {
642 case SDLK_BACKSPACE: return msg->get("BkSp");
643 case SDLK_CAPSLOCK: return msg->get("Caps");
644 case SDLK_DELETE: return msg->get("Del");
645 case SDLK_DOWN: return msg->get("Down");
646 case SDLK_END: return msg->get("End");
647 case SDLK_ESCAPE: return msg->get("Esc");
648 case SDLK_HOME: return msg->get("Home");
649 case SDLK_INSERT: return msg->get("Ins");
650 case SDLK_LALT: return msg->get("LAlt");
651 case SDLK_LCTRL: return msg->get("LCtrl");
652 case SDLK_LEFT: return msg->get("Left");
653 case SDLK_LSHIFT: return msg->get("LShft");
654 case SDLK_NUMLOCKCLEAR: return msg->get("Num");
655 case SDLK_PAGEDOWN: return msg->get("PgDn");
656 case SDLK_PAGEUP: return msg->get("PgUp");
657 case SDLK_PAUSE: return msg->get("Pause");
658 case SDLK_PRINTSCREEN: return msg->get("Print");
659 case SDLK_RALT: return msg->get("RAlt");
660 case SDLK_RCTRL: return msg->get("RCtrl");
661 case SDLK_RETURN: return msg->get("Ret");
662 case SDLK_RIGHT: return msg->get("Right");
663 case SDLK_RSHIFT: return msg->get("RShft");
664 case SDLK_SCROLLLOCK: return msg->get("SLock");
665 case SDLK_SPACE: return msg->get("Spc");
666 case SDLK_TAB: return msg->get("Tab");
667 case SDLK_UP: return msg->get("Up");
668 }
669 }
670 else {
671 switch (static_cast<SDL_Keycode>(key)) {
672 case SDLK_BACKSPACE: return msg->get("Backspace");
673 case SDLK_CAPSLOCK: return msg->get("CapsLock");
674 case SDLK_DELETE: return msg->get("Delete");
675 case SDLK_DOWN: return msg->get("Down");
676 case SDLK_END: return msg->get("End");
677 case SDLK_ESCAPE: return msg->get("Escape");
678 case SDLK_HOME: return msg->get("Home");
679 case SDLK_INSERT: return msg->get("Insert");
680 case SDLK_LALT: return msg->get("Left Alt");
681 case SDLK_LCTRL: return msg->get("Left Ctrl");
682 case SDLK_LEFT: return msg->get("Left");
683 case SDLK_LSHIFT: return msg->get("Left Shift");
684 case SDLK_NUMLOCKCLEAR: return msg->get("NumLock");
685 case SDLK_PAGEDOWN: return msg->get("PageDown");
686 case SDLK_PAGEUP: return msg->get("PageUp");
687 case SDLK_PAUSE: return msg->get("Pause");
688 case SDLK_PRINTSCREEN: return msg->get("PrintScreen");
689 case SDLK_RALT: return msg->get("Right Alt");
690 case SDLK_RCTRL: return msg->get("Right Ctrl");
691 case SDLK_RETURN: return msg->get("Return");
692 case SDLK_RIGHT: return msg->get("Right");
693 case SDLK_RSHIFT: return msg->get("Right Shift");
694 case SDLK_SCROLLLOCK: return msg->get("ScrollLock");
695 case SDLK_SPACE: return msg->get("Space");
696 case SDLK_TAB: return msg->get("Tab");
697 case SDLK_UP: return msg->get("Up");
698 }
607699 }
608700
609701 // no translation for this key, so just get the name straight from SDL
610702 return std::string(SDL_GetKeyName(static_cast<SDL_Keycode>(key)));
611703 }
612704
613 std::string SDLInputState::getMouseButtonName(int button) {
705 std::string SDLInputState::getMouseButtonName(int button, bool get_short_string) {
614706 int real_button = (button + MOUSE_BIND_OFFSET) * (-1);
615707
616 if (real_button > 0 && real_button <= MOUSE_BUTTON_NAME_COUNT)
617 return mouse_button[real_button - 1];
618 else
619 return msg->get("Mouse %d", real_button);
620 }
621
622 std::string SDLInputState::getJoystickButtonName(int button) {
708 if (get_short_string) {
709 return msg->get("M%d", real_button);
710 }
711 else {
712 if (real_button > 0 && real_button <= MOUSE_BUTTON_NAME_COUNT)
713 return mouse_button[real_button - 1];
714 else
715 return msg->get("Mouse %d", real_button);
716 }
717 }
718
719 std::string SDLInputState::getJoystickButtonName(int button, bool get_short_string) {
623720 if (button < -1) {
624721 int axis = (button + JOY_AXIS_OFFSET) * (-1);
625722
626 if (axis % 2 == 0)
627 return msg->get("Axis %d -", axis/2);
723 if (axis % 2 == 0) {
724 if (get_short_string)
725 return msg->get("JX%d-", axis/2);
726 else
727 return msg->get("Axis %d -", axis/2);
728 }
729 else {
730 if (get_short_string)
731 return msg->get("JX%d+", axis/2);
732 else
733 return msg->get("Axis %d +", axis/2);
734 }
735 }
736 else {
737 if (get_short_string)
738 return msg->get("JB%d", button);
628739 else
629 return msg->get("Axis %d +", axis/2);
630 }
631 else
632 return msg->get("Button %d", button);
633 }
634
635 std::string SDLInputState::getBindingString(int key, int bindings_list) {
636 std::string none = msg->get("(none)");
740 return msg->get("Button %d", button);
741 }
742 }
743
744 std::string SDLInputState::getBindingString(int key, int bindings_list, bool get_short_string) {
745 std::string none = "";
746 if (!get_short_string)
747 none = msg->get("(none)");
637748
638749 if (bindings_list == InputState::BINDING_DEFAULT) {
639750 if (binding[key] == 0 || binding[key] == -1)
640751 return none;
641752 else if (binding[key] < -1)
642 return getMouseButtonName(binding[key]);
753 return getMouseButtonName(binding[key], get_short_string);
643754 else
644 return getKeyName(binding[key]);
755 return getKeyName(binding[key], get_short_string);
645756 }
646757 else if (bindings_list == InputState::BINDING_ALT) {
647758 if (binding_alt[key] == 0 || binding_alt[key] == -1)
648759 return none;
649760 else if (binding_alt[key] < -1)
650 return getMouseButtonName(binding_alt[key]);
761 return getMouseButtonName(binding_alt[key], get_short_string);
651762 else
652 return getKeyName(binding_alt[key]);
763 return getKeyName(binding_alt[key], get_short_string);
653764 }
654765 else if (bindings_list == InputState::BINDING_JOYSTICK) {
655766 if (binding_joy[key] == -1)
656767 return none;
657768 else
658 return getJoystickButtonName(binding_joy[key]);
769 return getJoystickButtonName(binding_joy[key], get_short_string);
659770 }
660771 else {
661772 return none;
663774 }
664775
665776 std::string SDLInputState::getMovementString() {
666 std::stringstream ss;
667 ss << "[";
777 std::string output = "[";
668778
669779 if (settings->enable_joystick) {
670 ss << getBindingString(Input::LEFT, InputState::BINDING_JOYSTICK) << "/";
671 ss << getBindingString(Input::RIGHT, InputState::BINDING_JOYSTICK) << "/";
672 ss << getBindingString(Input::UP, InputState::BINDING_JOYSTICK) << "/";
673 ss << getBindingString(Input::DOWN, InputState::BINDING_JOYSTICK);
780 output += getBindingString(Input::LEFT, InputState::BINDING_JOYSTICK) + "/";
781 output += getBindingString(Input::RIGHT, InputState::BINDING_JOYSTICK) + "/";
782 output += getBindingString(Input::UP, InputState::BINDING_JOYSTICK) + "/";
783 output += getBindingString(Input::DOWN, InputState::BINDING_JOYSTICK);
674784 }
675785 else if (settings->touchscreen) {
676 ss << msg->get("Touch control D-Pad");
786 output += msg->get("Touch control D-Pad");
677787 }
678788 else if (settings->mouse_move) {
679 ss << (settings->mouse_move_swap ? getBindingString(Input::MAIN2) : getBindingString(Input::MAIN1));
789 output += (settings->mouse_move_swap ? getBindingString(Input::MAIN2) : getBindingString(Input::MAIN1));
680790 }
681791 else {
682 ss << getBindingString(Input::LEFT) << "/";
683 ss << getBindingString(Input::RIGHT) << "/";
684 ss << getBindingString(Input::UP) << "/";
685 ss << getBindingString(Input::DOWN);
686 }
687
688 ss << "]";
689 return ss.str();
792 output += getBindingString(Input::LEFT) + "/";
793 output += getBindingString(Input::RIGHT) + "/";
794 output += getBindingString(Input::UP) + "/";
795 output += getBindingString(Input::DOWN);
796 }
797
798 output += "]";
799 return output;
690800 }
691801
692802 std::string SDLInputState::getAttackString() {
693 std::stringstream ss;
694 ss << "[";
803 std::string output = "[";
695804
696805 if (settings->enable_joystick) {
697 ss << getBindingString(Input::ACTIONBAR_USE, InputState::BINDING_JOYSTICK);
806 output += getBindingString(Input::ACTIONBAR_USE, InputState::BINDING_JOYSTICK);
698807 }
699808 else if (settings->touchscreen) {
700 ss << msg->get("Touch control buttons");
809 output += msg->get("Touch control buttons");
701810 }
702811 else {
703 ss << getBindingString(Input::MAIN1);
704 }
705
706 ss << "]";
707 return ss.str();
812 output += getBindingString(Input::MAIN1);
813 }
814
815 output += "]";
816 return output;
708817 }
709818
710819 std::string SDLInputState::getContinueString() {
711 std::stringstream ss;
712 ss << "[";
820 std::string output = "[";
713821
714822 if (settings->touchscreen) {
715 ss << msg->get("Tap");
823 output += msg->get("Tap");
716824 }
717825 else {
718826 int binding_type = (settings->enable_joystick ? InputState::BINDING_JOYSTICK : InputState::BINDING_DEFAULT);
719 ss << getBindingString(Input::ACCEPT, binding_type);
720 }
721
722 ss << "]";
723 return ss.str();
827 output += getBindingString(Input::ACCEPT, binding_type);
828 }
829
830 output += "]";
831 return output;
724832 }
725833
726834 int SDLInputState::getNumJoysticks() {
750858
751859 // unbind duplicate bindings for this key
752860 if (key != -1) {
861
862 // prevent unmapping "fixed" keybinds
863 if (bindings_list != InputState::BINDING_JOYSTICK) {
864 if ((key == ((SDL_BUTTON_LEFT+MOUSE_BIND_OFFSET) * (-1)) && binding_button != Input::MAIN1) ||
865 key == SDL_SCANCODE_LCTRL ||
866 key == SDL_SCANCODE_RCTRL ||
867 key == SDL_SCANCODE_LSHIFT ||
868 key == SDL_SCANCODE_RSHIFT ||
869 key == SDL_SCANCODE_LALT ||
870 key == SDL_SCANCODE_RALT ||
871 key == SDL_SCANCODE_DELETE ||
872 key == SDL_SCANCODE_BACKSPACE) {
873
874 if (key < -1)
875 keybind_msg = msg->get("Can not bind: %s", getMouseButtonName(key).c_str());
876 else
877 keybind_msg = msg->get("Can not bind: %s", getKeyName(key).c_str());
878
879 return;
880 }
881 }
882
753883 for (int i = 0; i < KEY_COUNT; ++i) {
754884 // the same key can be bound to both default & alt binding lists for the same action
755885 if (bindings_list != InputState::BINDING_JOYSTICK && i == binding_button)
779909 }
780910
781911 int SDLInputState::getKeyFromName(const std::string& key_name) {
782 return SDL_GetKeyFromName(key_name.c_str());
912 return SDL_GetScancodeFromName(key_name.c_str());
783913 }
784914
785915 SDLInputState::~SDLInputState() {
3333
3434 void initJoystick();
3535 void defaultQwertyKeyBindings();
36 void setFixedKeyBindings();
3637 void handle();
3738 void hideCursor();
3839 void showCursor();
3940 std::string getJoystickName(int index);
40 std::string getKeyName(int key);
41 std::string getMouseButtonName(int button);
42 std::string getJoystickButtonName(int button);
43 std::string getBindingString(int key, int bindings_list = InputState::BINDING_DEFAULT);
41 std::string getKeyName(int key, bool get_short_string = !InputState::GET_SHORT_STRING);
42 std::string getMouseButtonName(int button, bool get_short_string = !InputState::GET_SHORT_STRING);
43 std::string getJoystickButtonName(int button, bool get_short_string = !InputState::GET_SHORT_STRING);
44 std::string getBindingString(int key, int bindings_list = InputState::BINDING_DEFAULT, bool get_short_string = !InputState::GET_SHORT_STRING);
4445 std::string getMovementString();
4546 std::string getAttackString();
4647 std::string getContinueString();
5253
5354 private:
5455 int getKeyFromName(const std::string& key_name);
56 void validateFixedKeyBinding(int action, int key, int bindings_list);
5557
5658 SDL_Joystick* joy;
5759 int joy_num;
7070 */
7171 void SDLSoftwareImage::drawPixel(int x, int y, const Color& color) {
7272 if (!surface) return;
73
74 if (x < 0 || y < 0 || x >= getWidth() || y >= getHeight())
75 return;
7376
7477 Uint32 pixel = MapRGBA(color.r, color.g, color.b, color.a);
7578
110113 }
111114 }
112115
116 void SDLSoftwareImage::drawLine(int x0, int y0, int x1, int y1, const Color& color) {
117 const int dx = abs(x1-x0);
118 const int dy = abs(y1-y0);
119 const int sx = x0 < x1 ? 1 : -1;
120 const int sy = y0 < y1 ? 1 : -1;
121 int err = dx-dy;
122
123 int max_width = getWidth();
124 int max_height = getHeight();
125
126 do {
127 //skip draw if outside screen
128 if (x0 > 0 && y0 > 0 && x0 < max_width && y0 < max_height) {
129 this->drawPixel(x0,y0,color);
130 }
131
132 int e2 = 2*err;
133 if (e2 > -dy) {
134 err = err - dy;
135 x0 = x0 + sx;
136 }
137 if (e2 < dx) {
138 err = err + dx;
139 y0 = y0 + sy;
140 }
141 }
142 while(x0 != x1 || y0 != y1);
143 }
144
145
113146 Uint32 SDLSoftwareImage::MapRGBA(Uint8 r, Uint8 g, Uint8 b, Uint8 a) {
114147 if (!surface) return 0;
115148 return SDL_MapRGBA(surface->format, r, g, b, a);
174207 }
175208
176209 int SDLSoftwareRenderDevice::createContextInternal() {
177 bool settings_changed = (fullscreen != settings->fullscreen ||
210 if (settings->safe_video) {
211 settings->safe_video = false;
212 Utils::logInfo("RenderDevice: Safe mode is enabled. Using minimum video settings.");
213 settings->fullscreen = false;
214 settings->hwsurface = false;
215 settings->vsync = false;
216 settings->texture_filter = false;
217 settings->screen_w = eset->resolutions.min_screen_w;
218 settings->screen_h = eset->resolutions.min_screen_h;
219 }
220
221 bool settings_changed = ((fullscreen != settings->fullscreen && destructive_fullscreen) ||
178222 hwsurface != settings->hwsurface ||
179223 vsync != settings->vsync ||
180224 texture_filter != settings->texture_filter ||
628672 }
629673
630674 void SDLSoftwareRenderDevice::setBackgroundColor(Color color) {
631 background_color = SDL_MapRGBA(screen->format, color.r, color.g, color.b, color.a);
632 }
675 background_color = SDL_MapRGBA(screen->format, color.r, color.g, color.b, 255);
676 }
677
678 void SDLSoftwareRenderDevice::setFullscreen(bool enable_fullscreen) {
679 if (!destructive_fullscreen) {
680 if (enable_fullscreen) {
681 SDL_SetWindowFullscreen(window, SDL_WINDOW_FULLSCREEN_DESKTOP);
682 }
683 else {
684 SDL_SetWindowFullscreen(window, 0);
685
686 // restore window to the default size
687 SDL_SetWindowMinimumSize(window, eset->resolutions.min_screen_w, eset->resolutions.min_screen_h);
688 SDL_SetWindowSize(window, eset->resolutions.min_screen_w, eset->resolutions.min_screen_h);
689 windowResize();
690 // setting minimum size might move the window, so set position again
691 SDL_SetWindowPosition(window, SDL_WINDOWPOS_CENTERED, SDL_WINDOWPOS_CENTERED);
692 }
693 windowResize();
694 }
695 }
4747
4848 void fillWithColor(const Color& color);
4949 void drawPixel(int x, int y, const Color& color);
50 void drawLine(int x0, int y0, int x1, int y1, const Color& color);
5051 Image* resize(int width, int height);
5152
5253 SDL_Surface *surface;
7374 void destroyContext();
7475 void windowResize();
7576 void setBackgroundColor(Color color);
77 void setFullscreen(bool enable_fullscreen);
7678 Image *createImage(int width, int height);
7779 void setGamma(float g);
7880 void resetGamma();
8282
8383 while(it != playback.end()) {
8484
85 /* if sound is finished add it to cleanup and continue with next */
86 if (it->second.finished) {
85 /* if sound is finished and should be unloaded add it to cleanup and continue with next */
86 if (it->second.finished && it->second.cleanup) {
8787 cleanup.push_back(it->first);
8888 ++it;
8989 continue;
202202
203203
204204
205 void SDLSoundManager::play(SoundID sid, const std::string& channel, const FPoint& pos, bool loop) {
205 void SDLSoundManager::play(SoundID sid, const std::string& channel, const FPoint& pos, bool loop, bool cleanup) {
206206
207207 SoundMapIterator it;
208208 VirtualChannelMapIterator vcit = channels.end();
225225 p.virtual_channel = channel;
226226 p.loop = loop;
227227 p.finished = false;
228 p.cleanup = cleanup;
228229
229230 if (p.virtual_channel != DEFAULT_CHANNEL) {
230231
231 /* if playback exists, stop it befor playin next sound */
232 /* if playback exists, stop it before playin next sound */
232233 vcit = channels.find(p.virtual_channel);
233 if (vcit != channels.end())
234 if (vcit != channels.end()) {
235 // temporarily disable the channel finish callback to avoid setting the 'finished' flag when stopping the channel
236 if (!cleanup)
237 Mix_ChannelFinished(NULL);
238
234239 Mix_HaltChannel(vcit->second);
240 }
235241
236242 vcit = channels.insert(std::pair<std::string, int>(p.virtual_channel, -1)).first;
237243 }
262268 playback.insert(std::pair<int, Playback>(c, p));
263269 }
264270
271 void SDLSoundManager::pauseChannel(const std::string& channel) {
272 VirtualChannelMapIterator vcit = channels.end();
273
274 vcit = channels.find(channel);
275 if (vcit != channels.end()) {
276 Mix_Pause(vcit->second);
277 }
278 }
279
265280 void SDLSoundManager::pauseAll() {
266281 Mix_Pause(-1);
267282 Mix_PauseMusic();
346361 }
347362
348363 int SDLSoundManager::SetChannelPosition(int channel, Sint16 angle, Uint8 distance) {
349 #ifdef __EMSCRIPTEN__
350 // TODO fix for Emscripten
351 return 0;
352 #else
353364 return Mix_SetPosition(channel, angle, distance);
354 #endif
355365 }
356366
357367 SoundID SDLSoundManager::getLastPlayedSID() {
2222 #ifndef SDL_SOUND_MANAGER_H
2323 #define SDL_SOUND_MANAGER_H
2424
25 #ifdef __EMSCRIPTEN__
26 #include <SDL/SDL_mixer.h>
27 #else
2825 #include <SDL_mixer.h>
29 #endif
3026
3127 #include "SoundManager.h"
3228
3733
3834 SoundID load(const std::string& filename, const std::string& errormessage);
3935 void unload(SoundID);
40 void play(SoundID, const std::string& channel, const FPoint& pos, bool loop);
36 void play(SoundID, const std::string& channel, const FPoint& pos, bool loop, bool cleanup = true);
37 void pauseChannel(const std::string& channel);
4138 void pauseAll();
4239 void resumeAll();
4340 void setVolumeSFX(int value);
8585 std::stringstream ss;
8686 ss << settings->path_user << "saves/" << eset->misc.save_prefix << "/" << game_slot << "/avatar.txt";
8787
88 outfile.open(Filesystem::path(&ss).c_str(), std::ios::out);
88 outfile.open(Filesystem::convertSlashes(ss.str()).c_str(), std::ios::out);
8989
9090 if (outfile.is_open()) {
9191
199199 }
200200 }
201201
202 outfile << "questlog_dismissed=" << !menu->act->requires_attention[MenuActionBar::MENU_LOG];
202 outfile << "questlog_dismissed=" << !menu->act->requires_attention[MenuActionBar::MENU_LOG] << "\n";
203
204 outfile << "stash_tab=" << menu->stash->getTab();
203205
204206 outfile << std::endl;
205207
210212 platform.FSCommit();
211213 }
212214
213 // Save stash
214 ss.str("");
215 if (pc->stats.permadeath)
216 ss << settings->path_user << "saves/" << eset->misc.save_prefix << "/" << game_slot << "/stash_HC.txt";
217 else
218 ss << settings->path_user << "saves/" << eset->misc.save_prefix << "/stash.txt";
219
220 outfile.open(Filesystem::path(&ss).c_str(), std::ios::out);
221
222 if (outfile.is_open()) {
223
224 // comment
225 outfile << "## flare-engine stash file ##" << "\n";
226
227 outfile << "quantity=" << menu->stash->stock.getQuantities() << "\n";
228 outfile << "item=" << menu->stash->stock.getItems() << "\n";
229
230 outfile << std::endl;
231
232 if (outfile.bad()) Utils::logError("SaveLoad: Unable to save stash. No write access or disk is full!");
233 outfile.close();
234 outfile.clear();
235
236 platform.FSCommit();
215 // Save stashes
216 for (size_t i = 0; i < menu->stash->tabs.size(); ++i) {
217 // shared stashes are not saved for permadeath characters
218 if (pc->stats.permadeath && !menu->stash->tabs[i].is_private)
219 continue;
220
221 ss.str("");
222 ss << settings->path_user << "saves/" << eset->misc.save_prefix;
223 if (menu->stash->tabs[i].is_private)
224 ss << "/" << game_slot;
225 ss << "/" << menu->stash->tabs[i].filename;
226 outfile.open(Filesystem::convertSlashes(ss.str()).c_str(), std::ios::out);
227
228 if (outfile.is_open()) {
229
230 // comment
231 outfile << "# flare-engine stash file: \"" << menu->stash->tabs[i].id << "\"\n";
232
233 outfile << "quantity=" << menu->stash->tabs[i].stock.getQuantities() << "\n";
234 outfile << "item=" << menu->stash->tabs[i].stock.getItems() << "\n";
235
236 outfile << std::endl;
237
238 if (outfile.bad()) Utils::logError("SaveLoad: Unable to save stash. No write access or disk is full!");
239 outfile.close();
240 outfile.clear();
241
242 platform.FSCommit();
243 }
237244 }
238245
239246 settings->prev_save_slot = game_slot-1;
252259 int saved_hp = 0;
253260 int saved_mp = 0;
254261 int currency = 0;
262 size_t stash_tab = 0;
255263 Version save_version(VersionInfo::MIN);
256264
257265 FileParser infile;
258 std::vector<int> hotkeys(MenuActionBar::SLOT_MAX, -1);
266 std::vector<PowerID> hotkeys(MenuActionBar::SLOT_MAX, -1);
259267
260268 std::stringstream ss;
261269 ss << settings->path_user << "saves/" << eset->misc.save_prefix << "/" << game_slot << "/avatar.txt";
262270
263 if (infile.open(Filesystem::path(&ss), !FileParser::MOD_FILE, FileParser::ERROR_NORMAL)) {
271 if (infile.open(ss.str(), !FileParser::MOD_FILE, FileParser::ERROR_NORMAL)) {
264272 while (infile.next()) {
265273 if (infile.key == "name") pc->stats.name = infile.val;
266274 else if (infile.key == "permadeath") {
326334 else if (infile.key == "actionbar") {
327335 for (int i = 0; i < MenuActionBar::SLOT_MAX; i++) {
328336 hotkeys[i] = Parse::popFirstInt(infile.val);
329 if (hotkeys[i] < 0) {
330 Utils::logError("SaveLoad: Hotkey power on position %d has negative id, skipping", i);
331 hotkeys[i] = 0;
332 }
333 else if (static_cast<unsigned>(hotkeys[i]) > powers->powers.size()-1) {
334 Utils::logError("SaveLoad: Hotkey power id (%d) out of bounds 1-%d, skipping", hotkeys[i], static_cast<int>(powers->powers.size()));
335 hotkeys[i] = 0;
336 }
337 else if (hotkeys[i] != 0 && static_cast<unsigned>(hotkeys[i]) < powers->powers.size() && powers->powers[hotkeys[i]].name == "") {
337 if (hotkeys[i] != 0 && powers->powers[hotkeys[i]].is_empty) {
338338 Utils::logError("SaveLoad: Hotkey power with id=%d, found on position %d does not exist, skipping", hotkeys[i], i);
339339 hotkeys[i] = 0;
340340 }
341341 }
342 menu->act->set(hotkeys);
342 menu->act->set(hotkeys, !MenuActionBar::SET_SKIP_EMPTY);
343343 }
344344 else if (infile.key == "transformed") {
345345 pc->stats.transform_type = Parse::popFirstString(infile.val);
373373 }
374374 }
375375 else if (infile.key == "questlog_dismissed") pc->questlog_dismissed = Parse::toBool(infile.val);
376 else if (infile.key == "stash_tab") stash_tab = Parse::toInt(infile.val);
376377 }
377378
378379 infile.close();
421422 menu->chr->refreshStats();
422423
423424 loadPowerTree();
425
426 // disable the shared stash for permadeath characters
427 menu->stash->enableSharedTab(pc->stats.permadeath);
428
429 menu->stash->setTab(stash_tab);
424430 }
425431
426432 /**
449455 StatusID class_status = camp->registerStatus(eset->hero_classes.list[index].statuses[i]);
450456 camp->setStatus(class_status);
451457 }
452 menu->act->set(eset->hero_classes.list[index].hotkeys);
458 menu->act->set(eset->hero_classes.list[index].hotkeys, !MenuActionBar::SET_SKIP_EMPTY);
453459
454460 // Add carried items
455461 std::string carried = eset->hero_classes.list[index].carried;
476482 // Load stash
477483 FileParser infile;
478484 std::stringstream ss;
479 if (pc->stats.permadeath)
480 ss << settings->path_user << "saves/" << eset->misc.save_prefix << "/" << game_slot << "/stash_HC.txt";
481 else
482 ss << settings->path_user << "saves/" << eset->misc.save_prefix << "/stash.txt";
483
484 if (infile.open(Filesystem::path(&ss), !FileParser::MOD_FILE, FileParser::ERROR_NONE)) {
485 while (infile.next()) {
486 if (infile.key == "item") {
487 menu->stash->stock.setItems(infile.val);
488 }
489 else if (infile.key == "quantity") {
490 menu->stash->stock.setQuantities(infile.val);
491 }
492 }
493 infile.close();
494 }
495 else Utils::logInfo("SaveLoad: Could not open stash file '%s'. This may be because it hasn't been created yet.", ss.str().c_str());
496
497 menu->stash->stock.clean();
485
486 for (size_t i = 0; i < menu->stash->tabs.size(); ++i) {
487 // shared stashes are not loaded for permadeath characters
488 if (pc->stats.permadeath && !menu->stash->tabs[i].is_private)
489 continue;
490
491 ss.str("");
492 ss << settings->path_user << "saves/" << eset->misc.save_prefix;
493 if (menu->stash->tabs[i].is_private)
494 ss << "/" << game_slot;
495 ss << "/" << menu->stash->tabs[i].filename;
496
497 if (infile.open(ss.str(), !FileParser::MOD_FILE, FileParser::ERROR_NONE)) {
498 while (infile.next()) {
499 if (infile.key == "item") {
500 menu->stash->tabs[i].stock.setItems(infile.val);
501 }
502 else if (infile.key == "quantity") {
503 menu->stash->tabs[i].stock.setQuantities(infile.val);
504 }
505 }
506 infile.close();
507 }
508 else Utils::logInfo("SaveLoad: Could not open stash file '%s'. This may be because it hasn't been created yet.", ss.str().c_str());
509
510 menu->stash->tabs[i].stock.clean();
511 }
498512 }
499513
500514 /**
5858 , show_hud(true)
5959 , encounter_dist(0) // set in updateScreenVars()
6060 , soft_reset(false)
61 , safe_video(false)
6162 {
62 config.resize(35);
63 setConfigDefault(0, "fullscreen", &typeid(fullscreen), "0", &fullscreen, "fullscreen mode. 1 enable, 0 disable.");
64 setConfigDefault(1, "resolution_w", &typeid(screen_w), "640", &screen_w, "display resolution. 640x480 minimum.");
65 setConfigDefault(2, "resolution_h", &typeid(screen_h), "480", &screen_h, "");
66 setConfigDefault(3, "music_volume", &typeid(music_volume), "96", &music_volume, "music and sound volume (0 = silent, 128 = max)");
67 setConfigDefault(4, "sound_volume", &typeid(sound_volume), "128", &sound_volume, "");
68 setConfigDefault(5, "combat_text", &typeid(combat_text), "1", &combat_text, "display floating damage text. 1 enable, 0 disable.");
69 setConfigDefault(6, "mouse_move", &typeid(mouse_move), "0", &mouse_move, "use mouse to move (experimental). 1 enable, 0 disable.");
70 setConfigDefault(7, "hwsurface", &typeid(hwsurface), "1", &hwsurface, "hardware surfaces, v-sync. Try disabling for performance. 1 enable, 0 disable.");
71 setConfigDefault(8, "vsync", &typeid(vsync), "1", &vsync, "");
72 setConfigDefault(9, "texture_filter", &typeid(texture_filter), "1", &texture_filter, "texture filter quality. 0 nearest neighbor (worst), 1 linear (best)");
73 setConfigDefault(10, "dpi_scaling", &typeid(dpi_scaling), "0", &dpi_scaling, "toggle DPI-based render scaling. 1 enable, 0 disable");
74 setConfigDefault(11, "parallax_layers", &typeid(parallax_layers), "1", &parallax_layers, "toggle rendering of parallax map layers. 1 enable, 0 disable");
75 setConfigDefault(12, "max_fps", &typeid(max_frames_per_sec), "60", &max_frames_per_sec, "maximum frames per second. default is 60");
76 setConfigDefault(13, "renderer", &typeid(render_device_name), "sdl_hardware", &render_device_name, "default render device. 'sdl' is the default setting");
77 setConfigDefault(14, "enable_joystick", &typeid(enable_joystick), "0", &enable_joystick, "joystick settings.");
78 setConfigDefault(15, "joystick_device", &typeid(joystick_device), "0", &joystick_device, "");
79 setConfigDefault(16, "joystick_deadzone", &typeid(joy_deadzone), "100", &joy_deadzone, "");
80 setConfigDefault(17, "language", &typeid(language), "en", &language, "2-letter language code.");
81 setConfigDefault(18, "change_gamma", &typeid(change_gamma), "0", &change_gamma, "allow changing gamma (experimental). 1 enable, 0 disable.");
82 setConfigDefault(19, "gamma", &typeid(gamma), "1.0", &gamma, "screen gamma (0.5 = darkest, 2.0 = lightest)");
83 setConfigDefault(20, "mouse_aim", &typeid(mouse_aim), "1", &mouse_aim, "use mouse to aim. 1 enable, 0 disable.");
84 setConfigDefault(21, "no_mouse", &typeid(no_mouse), "0", &no_mouse, "make using mouse secondary, give full control to keyboard. 1 enable, 0 disable.");
85 setConfigDefault(22, "show_fps", &typeid(show_fps), "0", &show_fps, "show frames per second. 1 enable, 0 disable.");
86 setConfigDefault(23, "colorblind", &typeid(colorblind), "0", &colorblind, "enable colorblind tooltips. 1 enable, 0 disable");
87 setConfigDefault(24, "hardware_cursor", &typeid(hardware_cursor), "0", &hardware_cursor, "use the system mouse cursor. 1 enable, 0 disable");
88 setConfigDefault(25, "dev_mode", &typeid(dev_mode), "0", &dev_mode, "allow opening the developer console. 1 enable, 0 disable");
89 setConfigDefault(26, "dev_hud", &typeid(dev_hud), "1", &dev_hud, "shows some additional information on-screen when developer mode is enabled. 1 enable, 0 disable");
90 setConfigDefault(27, "loot_tooltips", &typeid(loot_tooltips), "0", &loot_tooltips, "loot tooltip mode. 0 normal, 1 show all, 2 hide all");
91 setConfigDefault(28, "statbar_labels", &typeid(statbar_labels), "0", &statbar_labels, "always show labels on HP/MP/XP bars. 1 enable, 0 disable");
92 setConfigDefault(29, "auto_equip", &typeid(auto_equip), "1", &auto_equip, "automatically equip items. 1 enable, 0 disable");
93 setConfigDefault(30, "subtitles", &typeid(subtitles), "0", &subtitles, "displays subtitles. 1 enable, 0 disable");
94 setConfigDefault(31, "minimap_mode", &typeid(minimap_mode), "0", &minimap_mode, "mini-map display mode. 0 is normal, 1 is 2x zoom, 2 is hidden");
95 setConfigDefault(32, "mouse_move_swap", &typeid(mouse_move_swap), "0", &mouse_move_swap, "use 'Main2' as the movement action when using mouse movement. 1 enable, 0 disable.");
96 setConfigDefault(33, "mouse_move_attack", &typeid(mouse_move_attack), "1", &mouse_move_attack, "allows attacking with the mouse movement button if an enemy is targeted and in range. 1 enable, 0 disable.");
97 setConfigDefault(34, "prev_save_slot", &typeid(prev_save_slot), "-1", &prev_save_slot, "index of the last used save slot");
63 config.resize(41);
64 setConfigDefault(0, "move_type_dimissed", &typeid(move_type_dimissed), "0", &move_type_dimissed, "One time flag for initial movement type dialog | 0 = show dialog, 1 = no dialog");
65 setConfigDefault(1, "fullscreen", &typeid(fullscreen), "0", &fullscreen, "Fullscreen mode | 0 = disable, 1 = enable");
66 setConfigDefault(2, "resolution_w", &typeid(screen_w), "640", &screen_w, "Window size");
67 setConfigDefault(3, "resolution_h", &typeid(screen_h), "480", &screen_h, "");
68 setConfigDefault(4, "music_volume", &typeid(music_volume), "96", &music_volume, "Music and sound volume | 0 = silent, 128 = maximum");
69 setConfigDefault(5, "sound_volume", &typeid(sound_volume), "128", &sound_volume, "");
70 setConfigDefault(6, "combat_text", &typeid(combat_text), "1", &combat_text, "Display floating damage text | 0 = disable, 1 = enable");
71 setConfigDefault(7, "mouse_move", &typeid(mouse_move), "0", &mouse_move, "Use mouse to move | 0 = disable, 1 = enable");
72 setConfigDefault(8, "hwsurface", &typeid(hwsurface), "1", &hwsurface, "Hardware surfaces & V-sync. Try disabling for performance. | 0 = disable, 1 = enable");
73 setConfigDefault(9, "vsync", &typeid(vsync), "1", &vsync, "");
74 setConfigDefault(10, "texture_filter", &typeid(texture_filter), "1", &texture_filter, "Texture filter quality | 0 = nearest neighbor (worst), 1 = linear (best)");
75 setConfigDefault(11, "dpi_scaling", &typeid(dpi_scaling), "0", &dpi_scaling, "DPI-based render scaling | 0 = disable, 1 = enable");
76 setConfigDefault(12, "parallax_layers", &typeid(parallax_layers), "1", &parallax_layers, "Rendering of parallax map layers | 0 = disable, 1 = enable");
77 setConfigDefault(13, "max_fps", &typeid(max_frames_per_sec), "60", &max_frames_per_sec, "Maximum frames per second | 60 = default");
78 setConfigDefault(14, "renderer", &typeid(render_device_name), "sdl_hardware", &render_device_name, "Default render device. | sdl_hardware = default, Try sdl for compatibility");
79 setConfigDefault(15, "enable_joystick", &typeid(enable_joystick), "0", &enable_joystick, "Joystick settings.");
80 setConfigDefault(16, "joystick_device", &typeid(joystick_device), "-1", &joystick_device, "");
81 setConfigDefault(17, "joystick_deadzone", &typeid(joy_deadzone), "100", &joy_deadzone, "");
82 setConfigDefault(18, "language", &typeid(language), "en", &language, "2-letter language code.");
83 setConfigDefault(19, "change_gamma", &typeid(change_gamma), "0", &change_gamma, "Allow changing screen gamma (experimental) | 0 = disable, 1 = enable");
84 setConfigDefault(20, "gamma", &typeid(gamma), "1.0", &gamma, "Screen gamma. Requires change_gamma=1 | 0.5 = darkest, 2.0 = lightest");
85 setConfigDefault(21, "mouse_aim", &typeid(mouse_aim), "1", &mouse_aim, "Use mouse to aim | 0 = disable, 1 = enable");
86 setConfigDefault(22, "no_mouse", &typeid(no_mouse), "0", &no_mouse, "Make using mouse secondary, give full control to keyboard | 0 = disable, 1 = enable");
87 setConfigDefault(23, "show_fps", &typeid(show_fps), "0", &show_fps, "Show frames per second | 0 = disable, 1 = enable");
88 setConfigDefault(24, "colorblind", &typeid(colorblind), "0", &colorblind, "Enable colorblind help text | 0 = disable, 1 = enable");
89 setConfigDefault(25, "hardware_cursor", &typeid(hardware_cursor), "0", &hardware_cursor, "Use the system mouse cursor | 0 = disable, 1 = enable");
90 setConfigDefault(26, "dev_mode", &typeid(dev_mode), "0", &dev_mode, "Developer mode | 0 = disable, 1 = enable");
91 setConfigDefault(27, "dev_hud", &typeid(dev_hud), "1", &dev_hud, "Show additional information on-screen when dev_mode=1 | 0 = disable, 1 = enable");
92 setConfigDefault(28, "loot_tooltips", &typeid(loot_tooltips), "0", &loot_tooltips, "Loot tooltip mode | 0 = normal, 1 = show all, 2 = hide all");
93 setConfigDefault(29, "statbar_labels", &typeid(statbar_labels), "0", &statbar_labels, "Always show labels on HP/MP/XP bars | 0 = disable, 1 = enable");
94 setConfigDefault(30, "statbar_autohide", &typeid(statbar_autohide), "1", &statbar_autohide, "Allow the HP/MP/XP bars to auto-hide on inactivity | 0 = disable, 1 = enable");
95 setConfigDefault(31, "auto_equip", &typeid(auto_equip), "1", &auto_equip, "Automatically equip items | 0 = enable, 1 = enable");
96 setConfigDefault(32, "subtitles", &typeid(subtitles), "0", &subtitles, "Subtitles | 0 = disable, 1 = enable");
97 setConfigDefault(33, "minimap_mode", &typeid(minimap_mode), "0", &minimap_mode, "Mini-map display mode | 0 = normal, 1 = 2x zoom, 2 = hidden");
98 setConfigDefault(34, "mouse_move_swap", &typeid(mouse_move_swap), "0", &mouse_move_swap, "Use 'Main2' as the movement action when mouse_move=1 | 0 = disable, 1 = enable");
99 setConfigDefault(35, "mouse_move_attack", &typeid(mouse_move_attack), "1", &mouse_move_attack, "Allow attacking with the mouse movement button if an enemy is targeted and in range | 0 = disable, 1 = enable");
100 setConfigDefault(36, "entity_markers", &typeid(entity_markers), "1", &entity_markers, "Shows a marker above entities that are hidden behind tall tiles | 0 = disable, 1 = enable");
101 setConfigDefault(37, "prev_save_slot", &typeid(prev_save_slot), "-1", &prev_save_slot, "Index of the last used save slot");
102 setConfigDefault(38, "low_hp_warning_type", &typeid(low_hp_warning_type), "1", &low_hp_warning_type, "Low health warning type settings | 0 = disable, 1 = all, 2 = message & cursor, 3 = message & sound, 4 = cursor & sound , 5 = message, 6 = cursor, 7 = sound");
103 setConfigDefault(39, "low_hp_threshold", &typeid(low_hp_threshold), "20", &low_hp_threshold, "Low HP warning threshold percentage");
104 setConfigDefault(40, "item_compare_tips", &typeid(item_compare_tips), "1", &item_compare_tips, "Show comparison tooltips for equipped items of the same type | 0 = disable, 1 = enable");
98105 }
99106
100107 void Settings::setConfigDefault(size_t index, const std::string& name, const std::type_info *type, const std::string& default_val, void *storage, const std::string& comment) {
127134 }
128135
129136 // try read from file
137 bool found_settings = false;
138
130139 FileParser infile;
131 if (!infile.open(settings->path_conf + "settings.txt", !FileParser::MOD_FILE, FileParser::ERROR_NONE)) {
132 loadMobileDefaults();
133 if (!infile.open("engine/default_settings.txt", FileParser::MOD_FILE, FileParser::ERROR_NONE)) {
134 saveSettings();
135 return;
140 if (infile.open(settings->path_conf + "settings.txt", !FileParser::MOD_FILE, FileParser::ERROR_NORMAL)) {
141 found_settings = true;
142 }
143 else if (infile.open("engine/default_settings.txt", FileParser::MOD_FILE, FileParser::ERROR_NORMAL)) {
144 found_settings = true;
145 }
146
147 if (!found_settings) {
148 saveSettings();
149 }
150 else {
151 while (infile.next()) {
152 size_t entry = getConfigEntry(infile.key);
153 if (entry != config.size()) {
154 Parse::tryParseValue(*config[entry].type, infile.val, config[entry].storage);
155 }
136156 }
137 else saveSettings();
138 }
139
140 while (infile.next()) {
141 size_t entry = getConfigEntry(infile.key);
142 if (entry != config.size()) {
143 Parse::tryParseValue(*config[entry].type, infile.val, config[entry].storage);
144 }
145 }
146 infile.close();
157 infile.close();
158 }
147159
148160 loadMobileDefaults();
161
162 // Force using the software renderer if safe mode is enabled
163 if (safe_video) {
164 render_device_name = "sdl";
165 }
149166 }
150167
151168 /**
184201 * Load all default settings, except video settings.
185202 */
186203 void Settings::loadDefaults() {
187 // HACK init defaults except video
188 for (size_t i = 3; i < config.size(); i++) {
204 // HACK init defaults except video and one-time flags
205 for (size_t i = 4; i < config.size(); i++) {
189206 Parse::tryParseValue(*config[i].type, config[i].default_val, config[i].storage);
190207 }
191208
4242 MINIMAP_HIDDEN = 2
4343 };
4444
45 enum {
46 LHP_WARN_NONE = 0,
47 LHP_WARN_ALL = 1,
48 LHP_WARN_TEXT_CURSOR = 2,
49 LHP_WARN_TEXT_SOUND = 3,
50 LHP_WARN_CURSOR_SOUND = 4,
51 LHP_WARN_TEXT = 5,
52 LHP_WARN_CURSOR = 6,
53 LHP_WARN_SOUND = 7
54 };
55
4556 Settings();
4657 void loadSettings();
4758 void saveSettings();
8596 bool dev_hud;
8697 int loot_tooltips;
8798 bool statbar_labels;
99 bool statbar_autohide;
88100 bool auto_equip;
89101 bool subtitles;
90102 int minimap_mode;
103 bool entity_markers;
104 int low_hp_warning_type;
105 int low_hp_threshold;
106 bool item_compare_tips;
91107
92108 // Language Settings
93109 std::string language;
94110
95111 // Misc
96112 int prev_save_slot;
113 bool move_type_dimissed;
97114
98115 /**
99116 * NOTE Everything below is not part of the user's settings.txt, but somehow ended up here
128145
129146 bool soft_reset;
130147
148 bool safe_video;
149
131150 private:
132151 class ConfigEntry {
133152 public:
1818 #include "Avatar.h"
1919 #include "CampaignManager.h"
2020 #include "EnemyGroupManager.h"
21 #include "EntityManager.h"
2122 #include "HazardManager.h"
2223 #include "LootManager.h"
2324 #include "MenuActionBar.h"
2425 #include "MenuPowers.h"
26 #include "NPCManager.h"
2527 #include "PowerManager.h"
2628 #include "SharedGameResources.h"
2729
2931 MenuManager *menu = NULL;
3032 CampaignManager *camp = NULL;
3133 EnemyGroupManager *enemyg = NULL;
32 EnemyManager *enemym = NULL;
34 EntityManager *entitym = NULL;
3335 HazardManager *hazards = NULL;
3436 ItemManager *items = NULL;
3537 LootManager *loot = NULL;
3638 MapRenderer *mapr = NULL;
3739 MenuActionBar *menu_act= NULL;
3840 MenuPowers *menu_powers = NULL;
41 NPCManager *npcs = NULL;
3942 PowerManager *powers = NULL;
2121 class Avatar;
2222 class CampaignManager;
2323 class EnemyGroupManager;
24 class EnemyManager;
24 class EntityManager;
2525 class HazardManager;
2626 class ItemManager;
2727 class LootManager;
2929 class MenuActionBar;
3030 class MenuManager;
3131 class MenuPowers;
32 class NPCManager;
3233 class PowerManager;
3334
3435 /* These objects are created in the GameStatePlay constructor and deleted in the GameStatePlay destructor
3738 extern Avatar *pc;
3839 extern CampaignManager *camp;
3940 extern EnemyGroupManager *enemyg;
40 extern EnemyManager *enemym;
41 extern EntityManager *entitym;
4142 extern HazardManager *hazards;
4243 extern ItemManager *items;
4344 extern LootManager *loot;
4546 extern MenuActionBar *menu_act;
4647 extern MenuManager *menu;
4748 extern MenuPowers *menu_powers;
49 extern NPCManager *npcs;
4850 extern PowerManager *powers;
4951
5052 #endif // SHAREDGAMEOBJECTS_H
3434 static const std::string DEFAULT_CHANNEL;
3535 static const FPoint NO_POS;
3636 static const bool LOOP = true;
37 static const bool CLEANUP = true;
3738
3839 virtual ~SoundManager() {};
3940
4041 virtual SoundID load(const std::string& filename, const std::string& errormessage) = 0;
4142 virtual void unload(SoundID) = 0;
42 virtual void play(SoundID, const std::string& channel, const FPoint& pos, bool loop) = 0;
43 virtual void play(SoundID, const std::string& channel, const FPoint& pos, bool loop, bool cleanup = true) = 0;
44 virtual void pauseChannel(const std::string& channel) = 0;
4345 virtual void pauseAll() = 0;
4446 virtual void resumeAll() = 0;
4547 virtual void setVolumeSFX(int value) = 0;
7173 , location(FPoint())
7274 , loop(false)
7375 , paused(false)
74 , finished(false) {
76 , finished(false)
77 , cleanup(true) {
7578 }
7679
7780 SoundID sid;
8083 bool loop;
8184 bool paused;
8285 bool finished;
86 bool cleanup;
8387 };
8488
8589 #endif
2727 #include "Avatar.h"
2828 #include "CampaignManager.h"
2929 #include "CombatText.h"
30 #include "Enemy.h"
31 #include "EnemyManager.h"
30 #include "Entity.h"
31 #include "EntityManager.h"
3232 #include "EngineSettings.h"
3333 #include "FileParser.h"
3434 #include "Hazard.h"
4646 #include "UtilsParsing.h"
4747
4848 #include <limits>
49
50 #include <math.h>
51 #ifndef M_SQRT2
52 #define M_SQRT2 sqrt(2.0)
53 #endif
54
55 const float StatBlock::DIRECTION_DELTA_X[8] = {-1, -1, -1, 0, 1, 1, 1, 0};
56 const float StatBlock::DIRECTION_DELTA_Y[8] = { 1, 0, -1, -1, -1, 0, 1, 1};
57 const float StatBlock::SPEED_MULTIPLIER[8] = { static_cast<float>(1.0/M_SQRT2), 1.0f, static_cast<float>(1.0/M_SQRT2), 1.0f, static_cast<float>(1.0/M_SQRT2), 1.0f, static_cast<float>(1.0/M_SQRT2), 1.0f};
4958
5059 StatBlock::StatBlock()
5160 : statsLoaded(false)
114123 , direction(0)
115124 , cooldown_hit()
116125 , cooldown_hit_enabled(false)
117 , cur_state(0)
126 , cur_state(ENTITY_STANCE)
118127 , state_timer()
119128 , hold_state(false)
120129 , prevent_interrupt(false)
166175 , sfx_critdie()
167176 , sfx_block()
168177 , sfx_levelup("")
178 , sfx_lowhp("")
179 , sfx_lowhp_loop(false)
169180 , max_spendable_stat_points(0)
170181 , max_points_per_stat(0)
171182 , prev_maxhp(0)
174185 , prev_mp(0)
175186 , summons()
176187 , summoner(NULL)
177 , bleed_source_type(-1)
188 , abort_npc_interact(false)
178189 {
179190 primary.resize(eset->primary_stats.list.size(), 0);
180191 primary_starting.resize(eset->primary_stats.list.size(), 0);
184195 for (size_t i = 0; i < per_primary.size(); ++i) {
185196 per_primary[i].resize(Stats::COUNT + eset->damage_types.count, 0);
186197 }
198
199 cooldown.reset(Timer::END);
200 }
201
202 StatBlock::~StatBlock() {
203 removeFromSummons();
204 if (loot)
205 loot->removeFromEnemiesDroppingLoot(this);
187206 }
188207
189208 bool StatBlock::loadCoreStat(FileParser *infile) {
298317 // @ATTR power_filter|list(power_id)|Only these powers are allowed to hit this entity.
299318 std::string power_id = Parse::popFirstString(infile->val);
300319 while (!power_id.empty()) {
301 power_filter.push_back(Parse::toInt(power_id));
320 power_filter.push_back(Parse::toPowerID(power_id));
302321 power_id = Parse::popFirstString(infile->val);
303322 }
323 return true;
324 }
325 else if (infile->key == "categories") {
326 // @ATTR categories|list(string)|Categories that this entity belongs to.
327 categories.clear();
328 std::string cat;
329 while ((cat = Parse::popFirstString(infile->val)) != "") {
330 categories.push_back(cat);
331 }
332 return true;
333 }
334 else if (infile->key == "melee_range") {
335 // @ATTR melee_range|float|Determines the distance from the caster that some powers will be placed. For AI entities, it also means the minimum distance from target required to use melee powers.
336 melee_range = Parse::toFloat(infile->val);
304337 return true;
305338 }
306339
373406 // @ATTR sfx_levelup|filename|Filename of sound effect for leveling up.
374407 sfx_levelup = infile->val;
375408 }
409 else if (infile->key == "sfx_lowhp") {
410 // @ATTR sfx_lowhp|filename, bool: Sound file, loop|Filename of sound effect for low health warning. Optionally, it can be looped.
411 sfx_lowhp = Parse::popFirstString(infile->val);
412 if (infile->val != "") sfx_lowhp_loop = Parse::toBool(infile->val);
413 }
376414 else {
377415 return false;
378416 }
379417
380418 return true;
419 }
420
421 bool StatBlock::isNPCStat(FileParser *infile) {
422 if (infile->section == "npc") return true;
423 else if (infile->section == "dialog") return true;
424
425 if (infile->key == "gfx") {
426 infile->error("StatBlock: Warning! 'gfx' is deprecated. Use 'animations' instead.");
427 animations = infile->val;
428 return true;
429 }
430 else if (infile->key == "direction") return true;
431 else if (infile->key == "talker") return true;
432 else if (infile->key == "portrait") return true;
433 else if (infile->key == "vendor") return true;
434 else if (infile->key == "vendor_requires_status") return true;
435 else if (infile->key == "vendor_requires_not_status") return true;
436 else if (infile->key == "constant_stock") return true;
437 else if (infile->key == "status_stock") return true;
438 else if (infile->key == "random_stock") return true;
439 else if (infile->key == "random_stock_count") return true;
440 else if (infile->key == "vox_intro") return true;
441
442 return false;
381443 }
382444
383445 /**
400462
401463 int num = Parse::toInt(infile.val);
402464 float fnum = Parse::toFloat(infile.val);
403 bool valid = loadCoreStat(&infile) || loadSfxStat(&infile);
465 bool valid = loadCoreStat(&infile) || loadSfxStat(&infile) || isNPCStat(&infile);
404466
405467 // @ATTR name|string|Name
406468 if (infile.key == "name") name = msg->get(infile.val);
445507 // @ATTR convert_status|string|Campaign status to set upon being converted to a player ally.
446508 else if (infile.key == "convert_status") convert_status = camp->registerStatus(infile.val);
447509 // @ATTR first_defeat_loot|item_id|Drops this item upon first death.
448 else if (infile.key == "first_defeat_loot") first_defeat_loot = num;
510 else if (infile.key == "first_defeat_loot") first_defeat_loot = Parse::toItemID(infile.val);
449511 // @ATTR quest_loot|string, string, item_id : Required status, Required not status, Item|Drops this item when campaign status is met.
450512 else if (infile.key == "quest_loot") {
451513 quest_loot_requires_status = camp->registerStatus(Parse::popFirstString(infile.val));
452514 quest_loot_requires_not_status = camp->registerStatus(Parse::popFirstString(infile.val));
453 quest_loot_id = Parse::popFirstInt(infile.val);
515 quest_loot_id = Parse::toItemID(Parse::popFirstString(infile.val));
454516 }
455517
456518 // behavior stats
477539
478540 std::string ai_type = Parse::popFirstString(infile.val);
479541
480 ai_power.id = powers->verifyID(Parse::popFirstInt(infile.val), &infile, !PowerManager::ALLOW_ZERO_ID);
542 ai_power.id = powers->verifyID(Parse::toPowerID(Parse::popFirstString(infile.val)), &infile, !PowerManager::ALLOW_ZERO_ID);
481543 if (ai_power.id == 0)
482544 continue; // verifyID() will print our error message
483545
507569 powers_passive.clear();
508570 std::string p = Parse::popFirstString(infile.val);
509571 while (p != "") {
510 powers_passive.push_back(Parse::toInt(p));
572 powers_passive.push_back(Parse::toPowerID(p));
511573 p = Parse::popFirstString(infile.val);
512574
513575 // if a passive power has a post power, add it to the AI power list so we can track its cooldown
514 int post_power = powers->powers[powers_passive.back()].post_power;
576 PowerID post_power = powers->powers[powers_passive.back()].post_power;
515577 if (post_power > 0) {
516578 AIPower passive_post_power;
517579 passive_post_power.type = AI_POWER_PASSIVE_POST;
522584 }
523585 }
524586
525 // @ATTR melee_range|float|Minimum distance from target required to use melee powers.
526 else if (infile.key == "melee_range") melee_range = fnum;
527587 // @ATTR threat_range|float, float: Engage distance, Stop distance|The first value is the radius of the area this creature will be able to start chasing the hero. The second, optional, value is the radius at which this creature will stop pursuing their target and defaults to double the first value.
528588 else if (infile.key == "threat_range") {
529589 threat_range = Parse::toFloat(Parse::popFirstString(infile.val));
553613 // @ATTR suppress_hp|bool|Hides the enemy HP bar for this creature.
554614 else if (infile.key == "suppress_hp") suppress_hp = Parse::toBool(infile.val);
555615
556 else if (infile.key == "categories") {
557 // @ATTR categories|list(string)|Categories that this enemy belongs to.
558 categories.clear();
559 std::string cat;
560 while ((cat = Parse::popFirstString(infile.val)) != "") {
561 categories.push_back(cat);
562 }
563 }
564
565616 // @ATTR flee_duration|duration|The minimum amount of time that this creature will flee. They may flee longer than the specified time.
566617 else if (infile.key == "flee_duration") flee_timer.setDuration(Parse::toDuration(infile.val));
567618 // @ATTR flee_cooldown|duration|The amount of time this creature must wait before they can start fleeing again.
589640 /**
590641 * Reduce temphp first, then hp
591642 */
592 void StatBlock::takeDamage(int dmg) {
643 void StatBlock::takeDamage(int dmg, bool crit, int source_type) {
593644 hp -= effects.damageShields(dmg);
594645 if (hp <= 0) {
595646 hp = 0;
647
648 effects.triggered_death = true;
649 // TODO should effects.clearEffects() be here as well?
650 // what about other things that happen in the "dead" entity states?
651
652 if (hero) {
653 cur_state = StatBlock::ENTITY_DEAD;
654 }
655 else {
656 // enemy died; do rewards
657 if (!hero_ally || converted) {
658 // some creatures create special loot if we're on a quest
659 if (quest_loot_requires_status != 0) {
660 // the loot manager will check quest_loot_id
661 // if set (not zero), the loot manager will 100% generate that loot.
662 if (!(camp->checkStatus(quest_loot_requires_status) && !camp->checkStatus(quest_loot_requires_not_status))) {
663 quest_loot_id = 0;
664 }
665 }
666
667 // some creatures drop special loot the first time they are defeated
668 // this must be done in conjunction with defeat status
669 if (first_defeat_loot > 0) {
670 if (!camp->checkStatus(defeat_status)) {
671 quest_loot_id = first_defeat_loot;
672 }
673 }
674
675 // defeating some creatures (e.g. bosses) affects the story
676 if (defeat_status != 0) {
677 camp->setStatus(defeat_status);
678 }
679
680 // reward XP; adjust for party exp if necessary
681 float xp_multiplier = 1;
682 if (source_type == Power::SOURCE_TYPE_ALLY)
683 xp_multiplier = static_cast<float>(eset->misc.party_exp_percentage) / 100.0f;
684
685 camp->rewardXP(static_cast<int>((static_cast<float>(xp) * xp_multiplier)), !CampaignManager::XP_SHOW_MSG);
686
687 // drop loot
688 loot->addEnemyLoot(this);
689 }
690
691 if (crit)
692 cur_state = StatBlock::ENTITY_CRITDEAD;
693 else
694 cur_state = StatBlock::ENTITY_DEAD;
695
696 mapr->collider.unblock(pos.x, pos.y);
697 }
698
596699 }
597700 }
598701
631734 */
632735 void StatBlock::calcBase() {
633736 // bonuses are skipped for the default level 1 of a stat
634 int lev0 = std::max(level - 1, 0);
635
636 for (size_t i = 0; i < Stats::COUNT + eset->damage_types.count; ++i) {
637 base[i] = starting[i];
638 base[i] += lev0 * per_level[i];
737 const int lev0 = std::max(level - 1, 0);
738
739 if (per_primary.empty()) {
740 for (size_t i = 0; i < Stats::COUNT + eset->damage_types.count; ++i) {
741 base[i] = starting[i] + (lev0 * per_level[i]);
742 }
743 }
744 else {
639745 for (size_t j = 0; j < per_primary.size(); ++j) {
640 base[i] += std::max(get_primary(j) - 1, 0) * per_primary[j][i];
746 const int current_primary = std::max(get_primary(j) - 1, 0);
747 const std::vector<int>& per_primary_vec = per_primary[j];
748 for (size_t i = 0; i < Stats::COUNT + eset->damage_types.count; ++i) {
749 if (j==0)
750 base[i] = starting[i] + (lev0 * per_level[i]);
751 base[i] += (current_primary * per_primary_vec[i]);
752 }
641753 }
642754 }
643755
660772 * Recalc derived stats from base stats + effect bonuses
661773 */
662774 void StatBlock::applyEffects() {
663
664775 // preserve hp/mp states
665776 // max HP and MP can't drop below 1
666777 prev_maxhp = std::max(get(Stats::HP_MAX), 1);
679790
680791 calcBase();
681792
682 for (size_t i=0; i<Stats::COUNT + eset->damage_types.count; i++) {
793 for (size_t i = 0; i < Stats::COUNT + eset->damage_types.count; ++i) {
683794 current[i] = base[i] + effects.bonus[i];
684795 }
685796
686 for (unsigned i=0; i<effects.bonus_resist.size(); i++) {
797 for (size_t i = 0; i < effects.bonus_resist.size(); ++i) {
687798 vulnerable[i] = vulnerable_base[i] - effects.bonus_resist[i];
688799 }
689800
707818 alive = !(hp <= 0 && !effects.triggered_death && !effects.revive);
708819
709820 // handle party buffs
710 if (enemym && powers) {
821 if (entitym && powers) {
711822 while (!party_buffs.empty()) {
712 int power_index = party_buffs.front();
823 PowerID power_index = party_buffs.front();
713824 party_buffs.pop();
714825 Power *buff_power = &powers->powers[power_index];
715826
716 for (size_t i=0; i < enemym->enemies.size(); ++i) {
717 if(enemym->enemies[i]->stats.hp > 0 &&
718 ((enemym->enemies[i]->stats.hero_ally && hero) || (enemym->enemies[i]->stats.enemy_ally && enemym->enemies[i]->stats.summoner == this)) &&
719 (buff_power->buff_party_power_id == 0 || buff_power->buff_party_power_id == enemym->enemies[i]->stats.summoned_power_index)
827 for (size_t i=0; i < entitym->entities.size(); ++i) {
828 Entity* party_member = entitym->entities[i];
829 if(party_member->stats.hp > 0 &&
830 ((party_member->stats.hero_ally && hero) || (party_member->stats.enemy_ally && party_member->stats.summoner == this)) &&
831 (buff_power->buff_party_power_id == 0 || buff_power->buff_party_power_id == party_member->stats.summoned_power_index)
720832 ) {
721 powers->effect(&enemym->enemies[i]->stats, this, power_index, (hero ? Power::SOURCE_TYPE_HERO : Power::SOURCE_TYPE_ENEMY));
833 powers->effect(&(party_member->stats), this, power_index, (hero ? Power::SOURCE_TYPE_HERO : Power::SOURCE_TYPE_ENEMY));
722834 }
723835 }
724836 }
777889
778890 // apply bleed
779891 if (effects.damage > 0 && hp > 0) {
780 takeDamage(effects.damage);
892 takeDamage(effects.damage, !StatBlock::TAKE_DMG_CRIT, effects.getDamageSourceType(Effect::DAMAGE));
781893 comb->addInt(effects.damage, pos, CombatText::MSG_TAKEDMG);
782894 }
783895 if (effects.damage_percent > 0 && hp > 0) {
784896 int damage = (get(Stats::HP_MAX)*effects.damage_percent)/100;
785 takeDamage(damage);
897 takeDamage(damage, !StatBlock::TAKE_DMG_CRIT, effects.getDamageSourceType(Effect::DAMAGE_PERCENT));
786898 comb->addInt(damage, pos, CombatText::MSG_TAKEDMG);
787899 }
788900
789901 if(effects.death_sentence)
790 hp = 0;
902 takeDamage(get(Stats::HP_MAX), !StatBlock::TAKE_DMG_CRIT, Power::SOURCE_TYPE_NEUTRAL);
791903
792904 cooldown_hit.tick();
793905
842954 mapr->collider.block(pos.x, pos.y, hero_ally);
843955 }
844956 else if (charge_speed != 0.0f) {
845 float tmp_speed = charge_speed * speedMultiplyer[direction];
846 float dx = tmp_speed * static_cast<float>(directionDeltaX[direction]);
847 float dy = tmp_speed * static_cast<float>(directionDeltaY[direction]);
957 float tmp_speed = charge_speed * SPEED_MULTIPLIER[direction];
958 float dx = tmp_speed * DIRECTION_DELTA_X[direction];
959 float dy = tmp_speed * DIRECTION_DELTA_Y[direction];
848960
849961 mapr->collider.unblock(pos.x, pos.y);
850962 mapr->collider.move(pos.x, pos.y, dx, dy, movement_type, mapr->collider.getCollideType(hero));
868980 hp = get(Stats::HP_MAX);
869981 alive = true;
870982 corpse = false;
871 if (hero)
872 cur_state = AVATAR_STANCE;
873 else
874 cur_state = ENEMY_STANCE;
875 }
876
877 // check for bleeding to death
878 if (hp <= 0 && !hero && cur_state != ENEMY_DEAD && cur_state != ENEMY_CRITDEAD) {
879 for (size_t i = 0; i < effects.effect_list.size(); ++i) {
880 if (effects.effect_list[i].type == Effect::DAMAGE || effects.effect_list[i].type == Effect::DAMAGE_PERCENT) {
881 bleed_source_type = effects.effect_list[i].source_type;
882 break;
883 }
884 }
885 effects.triggered_death = true;
886 cur_state = ENEMY_DEAD;
887 }
888 else if (hp <= 0 && hero && cur_state != AVATAR_DEAD) {
889 effects.triggered_death = true;
890 cur_state = AVATAR_DEAD;
891 }
892 }
893
894 StatBlock::~StatBlock() {
895 removeFromSummons();
896 }
897
898 bool StatBlock::canUsePower(int powerid, bool allow_passive) const {
983 cur_state = ENTITY_STANCE;
984 }
985
986 // non-hero entities can have their disposition reversed
987 if (!hero && effects.convert != converted) {
988 converted = !converted;
989 hero_ally = !hero_ally;
990 if (convert_status != 0) {
991 camp->setStatus(convert_status);
992 }
993 }
994 }
995
996 bool StatBlock::canUsePower(PowerID powerid, bool allow_passive) const {
899997 const Power& power = powers->powers[powerid];
900998
901999 if (!alive) {
9171015 && !power.meta_power
9181016 && (!effects.stun || (allow_passive && power.passive))
9191017 && (power.sacrifice || hp > power.requires_hp)
920 && (power.requires_max_hp == -1 || (power.requires_max_hp >= 0 && hp >= (current[Stats::HP_MAX] * power.requires_max_hp) / 100))
921 && (power.requires_not_max_hp == -1 || (power.requires_not_max_hp >= 0 && hp < (current[Stats::HP_MAX] * power.requires_not_max_hp) / 100))
922 && (power.requires_max_mp == -1 || (power.requires_max_mp >= 0 && mp >= (current[Stats::MP_MAX] * power.requires_max_mp) / 100))
923 && (power.requires_not_max_mp == -1 || (power.requires_not_max_mp >= 0 && mp < (current[Stats::MP_MAX]) * power.requires_not_max_mp / 100))
1018 && powers->checkRequiredMaxHPMP(power, this)
9241019 && (!power.requires_corpse || (target_corpse && !target_corpse->corpse_timer.isEnd()) || (target_nearest_corpse && powers->checkNearestTargeting(power, this, true) && !target_nearest_corpse->corpse_timer.isEnd()))
9251020 && (checkRequiredSpawns(power.requires_spawns))
9261021 && (menu_powers && menu_powers->meetsUsageStats(powerid))
9271022 && (power.type == Power::TYPE_SPAWN ? !summonLimitReached(powerid) : true)
9281023 && !(power.spawn_type == "untransform" && !transformed)
9291024 && std::includes(equip_flags.begin(), equip_flags.end(), power.requires_flags.begin(), power.requires_flags.end())
930 && (!power.buff_party || (power.buff_party && enemym && enemym->checkPartyMembers()))
1025 && (!power.buff_party || (power.buff_party && entitym && entitym->checkPartyMembers()))
9311026 && powers->checkRequiredItems(power, this)
9321027 );
9331028 }
9921087 */
9931088 void StatBlock::removeSummons() {
9941089 for (std::vector<StatBlock*>::iterator it = summons.begin(); it != summons.end(); ++it) {
995 (*it)->hp = 0;
996 (*it)->effects.triggered_death = true;
997 (*it)->effects.clearEffects();
998 if (!(*it)->hero && !(*it)->corpse) {
999 (*it)->cur_state = ENEMY_DEAD;
1000 (*it)->corpse_timer.reset(Timer::BEGIN);
1001 }
1090 (*it)->takeDamage((*it)->get(Stats::HP_MAX), !StatBlock::TAKE_DMG_CRIT, Power::SOURCE_TYPE_NEUTRAL);
10021091 (*it)->removeSummons();
10031092 (*it)->summoner = NULL;
10041093 }
10201109 removeSummons();
10211110 }
10221111
1023 bool StatBlock::summonLimitReached(int power_id) const {
1112 bool StatBlock::summonLimitReached(PowerID power_id) const {
10241113
10251114 //find the limit
10261115 Power *spawn_power = &powers->powers[power_id];
10511140
10521141 for (unsigned int i=0; i < summons.size(); i++) {
10531142 if(!summons[i]->corpse && summons[i]->summoned_power_index == power_id
1054 && summons[i]->cur_state != ENEMY_SPAWN
1055 && summons[i]->cur_state != ENEMY_DEAD
1056 && summons[i]->cur_state != ENEMY_CRITDEAD) {
1143 && summons[i]->cur_state != ENTITY_SPAWN
1144 && summons[i]->cur_state != ENTITY_DEAD
1145 && summons[i]->cur_state != ENTITY_CRITDEAD) {
10571146 qty_summons++;
10581147 }
10591148 }
11471236 return true;
11481237 }
11491238
1150 int StatBlock::getPowerCooldown(int power_id) {
1239 int StatBlock::getPowerCooldown(PowerID power_id) {
11511240 if (hero) {
11521241 return pc->power_cooldown_timers[power_id].getDuration();
11531242 }
11611250 return 0;
11621251 }
11631252
1164 void StatBlock::setPowerCooldown(int power_id, int power_cooldown) {
1253 void StatBlock::setPowerCooldown(PowerID power_id, int power_cooldown) {
11651254 if (hero) {
11661255 pc->power_cooldown_timers[power_id].setDuration(power_cooldown);
11671256 }
3737 private:
3838 bool loadCoreStat(FileParser *infile);
3939 bool loadSfxStat(FileParser *infile);
40 bool isNPCStat(FileParser *infile);
4041 void loadHeroStats();
4142 bool checkRequiredSpawns(int req_amount) const;
4243 bool statsLoaded;
5455 AI_POWER_PASSIVE_POST = 8
5556 };
5657
57 enum AvatarState {
58 AVATAR_STANCE = 0,
59 AVATAR_RUN = 1,
60 AVATAR_BLOCK = 2,
61 AVATAR_HIT = 3,
62 AVATAR_DEAD = 4,
63 AVATAR_ATTACK = 5
64 };
65
66 enum EnemyState {
67 ENEMY_STANCE = 0,
68 ENEMY_MOVE = 1,
69 ENEMY_POWER = 2,
70 ENEMY_SPAWN = 3,
71 ENEMY_BLOCK = 4,
72 ENEMY_HIT = 5,
73 ENEMY_DEAD = 6,
74 ENEMY_CRITDEAD = 7
58 enum EntityState {
59 ENTITY_STANCE = 0,
60 ENTITY_MOVE = 1,
61 ENTITY_POWER = 2,
62 ENTITY_SPAWN = 3,
63 ENTITY_BLOCK = 4,
64 ENTITY_HIT = 5,
65 ENTITY_DEAD = 6,
66 ENTITY_CRITDEAD = 7
7567 };
7668
7769 enum CombatStyle {
8375 class AIPower {
8476 public:
8577 int type;
86 int id;
78 PowerID id;
8779 int chance;
8880 Timer cooldown;
8981
9688 };
9789
9890 static const bool CAN_USE_PASSIVE = true;
91 static const bool TAKE_DMG_CRIT = true;
92
93 static const float DIRECTION_DELTA_X[8];
94 static const float DIRECTION_DELTA_Y[8];
95 static const float SPEED_MULTIPLIER[8];
9996
10097 StatBlock();
10198 ~StatBlock();
10299
103100 void load(const std::string& filename);
104 void takeDamage(int dmg);
101 void takeDamage(int dmg, bool crit, int source_type);
105102 void recalc();
106103 void applyEffects();
107104 void calcBase();
108105 void logic();
109106 void removeSummons();
110107 void removeFromSummons();
111 bool summonLimitReached(int power_id) const;
108 bool summonLimitReached(PowerID power_id) const;
112109 void setWanderArea(int r);
113110 void loadHeroSFX();
114111 std::string getShortClass();
115112 std::string getLongClass();
116113 void addXP(int amount);
117114 AIPower* getAIPower(int ai_type);
118 int getPowerCooldown(int power_id);
119 void setPowerCooldown(int power_id, int power_cooldown);
115 int getPowerCooldown(PowerID power_id);
116 void setPowerCooldown(PowerID power_id, int power_cooldown);
120117
121118 bool alive;
122119 bool corpse; // creature is dead and done animating
131128 bool refresh_stats;
132129 bool converted;
133130 bool summoned;
134 int summoned_power_index;
131 PowerID summoned_power_index;
135132 bool encountered; // enemy only
136133 StatBlock* target_corpse;
137134 StatBlock* target_nearest;
138135 StatBlock* target_nearest_corpse;
139136 float target_nearest_dist;
140137 float target_nearest_corpse_dist;
141 int block_power;
138 PowerID block_power;
142139
143140 int movement_type;
144141 bool flying;
167164 std::vector<int> per_level; // value increases each level after level 1
168165 std::vector< std::vector<int> > per_primary;
169166
170 int get(Stats::STAT stat) {
167 int get(Stats::STAT stat) const {
171168 return current[stat];
172169 }
173 int getDamageMin(size_t dmg_type) {
170 int getDamageMin(size_t dmg_type) const {
174171 return current[Stats::COUNT + (dmg_type * 2)];
175172 }
176 int getDamageMax(size_t dmg_type) {
173 int getDamageMax(size_t dmg_type) const {
177174 return current[Stats::COUNT + (dmg_type * 2) + 1];
178175 }
179176
249246 int chance_pursue;
250247 int chance_flee;
251248
252 std::vector<int> powers_list;
253 std::vector<int> powers_list_items;
254 std::vector<int> powers_passive;
249 std::vector<PowerID> powers_list;
250 std::vector<PowerID> powers_list_items;
251 std::vector<PowerID> powers_passive;
255252 std::vector<AIPower> powers_ai;
256253
257 bool canUsePower(int powerid, bool allow_passive) const;
254 bool canUsePower(PowerID powerid, bool allow_passive) const;
258255
259256 float melee_range;
260257 float threat_range;
291288 StatusID convert_status;
292289 StatusID quest_loot_requires_status;
293290 StatusID quest_loot_requires_not_status;
294 int quest_loot_id;
295 int first_defeat_loot;
291 ItemID quest_loot_id;
292 ItemID first_defeat_loot;
296293
297294 // player look options
298295 std::string gfx_base; // folder in /images/avatar
310307 std::vector<std::string> sfx_critdie;
311308 std::vector<std::string> sfx_block;
312309 std::string sfx_levelup;
310 std::string sfx_lowhp;
311 bool sfx_lowhp_loop;
313312
314313 // formula numbers
315314 int max_spendable_stat_points;
324323 // links to summoned creatures and the entity which summoned this
325324 std::vector<StatBlock*> summons;
326325 StatBlock* summoner;
327 std::queue<int> party_buffs;
328
329 std::vector<int> power_filter;
330
331 int bleed_source_type;
326 std::queue<PowerID> party_buffs;
327
328 std::vector<PowerID> power_filter;
332329
333330 std::vector<StatusID> invincible_requires_status;
334331 std::vector<StatusID> invincible_requires_not_status;
332
333 bool abort_npc_interact;
335334 };
336335
337336 #endif
120120 }
121121
122122 void Subtitles::logic(unsigned long id) {
123 if (!settings->subtitles)
124 return;
125
126123 setTextByID(id);
127124
128125 visible_timer.tick();
139136 }
140137
141138 void Subtitles::render() {
142 if (!visible)
139 if (!visible || !settings->subtitles)
143140 return;
144141
145142 if (background) {
2222 #include "WidgetTooltip.h"
2323
2424 TooltipManager::TooltipManager()
25 : tip(new WidgetTooltip())
26 , style(TooltipData::STYLE_FLOAT)
27 , context(CONTEXT_NONE)
28 {}
25 : context(CONTEXT_NONE)
26 {
27 for (size_t i = 0; i < TOOLTIP_COUNT; ++i) {
28 tip[i] = new WidgetTooltip();
29 if (i > 0) {
30 tip[i]->parent = tip[i-1];
31 }
32
33 tip_data[i] = TooltipData();
34 pos[i] = Point();
35 style[i] = 0;
36 }
37 }
2938
3039 TooltipManager::~TooltipManager() {
31 delete tip;
40 for (size_t i = 0; i < TOOLTIP_COUNT; ++i) {
41 delete tip[i];
42 }
3243 }
3344
3445 void TooltipManager::clear() {
35 tip_data.clear();
46 for (size_t i = 0; i < TOOLTIP_COUNT; ++i) {
47 tip_data[i].clear();
48 }
3649 }
3750
3851 bool TooltipManager::isEmpty() {
39 return tip_data.isEmpty();
52 for (size_t i = 0; i < TOOLTIP_COUNT; ++i) {
53 if (!tip_data[i].isEmpty())
54 return false;
55 }
56 return true;
4057 }
4158
42 void TooltipManager::push(const TooltipData& _tip_data, const Point& _pos, uint8_t _style) {
43 if (_tip_data.isEmpty())
59 void TooltipManager::push(const TooltipData& _tip_data, const Point& _pos, uint8_t _style, size_t tip_index) {
60 if (_tip_data.isEmpty() || tip_index >= TOOLTIP_COUNT)
4461 return;
4562
46 tip_data = _tip_data;
47 pos = _pos;
48 style = _style;
63 tip_data[tip_index] = _tip_data;
64 pos[tip_index] = _pos;
65 style[tip_index] = _style;
4966 }
5067
5168 void TooltipManager::render() {
5673 context = CONTEXT_NONE;
5774 }
5875
59 tip->render(tip_data, pos, style);
76 for (size_t i = 0; i < TOOLTIP_COUNT; ++i) {
77 tip[i]->render(tip_data[i], pos[i], style[i]);
78 }
6079 }
2727 class WidgetTooltip;
2828
2929 class TooltipManager {
30 private:
31 WidgetTooltip *tip;
32 TooltipData tip_data;
33 Point pos;
34 uint8_t style;
35
3630 public:
31 static const size_t TOOLTIP_COUNT = 3;
3732 enum {
3833 CONTEXT_NONE = 0,
3934 CONTEXT_MENU = 1,
4641
4742 void clear();
4843 bool isEmpty();
49 void push(const TooltipData& _tip_data, const Point& _pos, uint8_t _style);
44 void push(const TooltipData& _tip_data, const Point& _pos, uint8_t _style, size_t tip_index=0);
5045 void render();
5146
5247 uint8_t context;
48
49 private:
50 WidgetTooltip* tip[TOOLTIP_COUNT];
51 TooltipData tip_data[TOOLTIP_COUNT];
52 Point pos[TOOLTIP_COUNT];
53 uint8_t style[TOOLTIP_COUNT];
54
5355 };
5456
5557 #endif
155155 return !((*this) == other);
156156 }
157157
158 uint32_t Color::encodeRGBA() {
159 uint32_t result = static_cast<uint32_t>(a);
160 result |= static_cast<uint32_t>(r) << 24;
161 result |= static_cast<uint32_t>(g) << 16;
162 result |= static_cast<uint32_t>(b) << 8;
163 return result;
164 }
165
166 void Color::decodeRGBA(const uint32_t encoded) {
167 a = static_cast<uint8_t>(encoded);
168 r = static_cast<uint8_t>(encoded >> 24);
169 g = static_cast<uint8_t>(encoded >> 16);
170 b = static_cast<uint8_t>(encoded >> 8);
171 }
172
158173 Timer::Timer(unsigned _duration)
159174 : current(0)
160175 , duration(_duration)
202217 current = 0;
203218 else if (type == Timer::BEGIN)
204219 current = duration;
220 }
221
222 bool Timer::isWholeSecond() {
223 return current % settings->max_frames_per_sec == 0;
205224 }
206225
207226 FPoint Utils::screenToMap(int x, int y, float camx, float camy) {
381400 r->x = (settings->view_w - r->w) + r->x;
382401 r->y = (settings->view_h - r->h) + r->y;
383402 }
403 else if (alignment == ALIGN_FRAME_TOPLEFT) {
404 r->x = ((settings->view_w - eset->resolutions.frame_w)/2) + r->x;
405 r->y = ((settings->view_h - eset->resolutions.frame_h)/2) + r->y;
406 }
407 else if (alignment == ALIGN_FRAME_TOP) {
408 r->x = ((settings->view_w - eset->resolutions.frame_w)/2) + (eset->resolutions.frame_w/2 - r->w/2) + r->x;
409 r->y = ((settings->view_h - eset->resolutions.frame_h)/2) + r->y;
410 }
411 else if (alignment == ALIGN_FRAME_TOPRIGHT) {
412 r->x = ((settings->view_w - eset->resolutions.frame_w)/2) + (eset->resolutions.frame_w - r->w) + r->x;
413 r->y = ((settings->view_h - eset->resolutions.frame_h)/2) + r->y;
414 }
415 else if (alignment == ALIGN_FRAME_LEFT) {
416 r->x = ((settings->view_w - eset->resolutions.frame_w)/2) + r->x;
417 r->y = ((settings->view_h - eset->resolutions.frame_h)/2) + (eset->resolutions.frame_h/2 - r->h/2) + r->y;
418 }
419 else if (alignment == ALIGN_FRAME_CENTER) {
420 r->x = ((settings->view_w - eset->resolutions.frame_w)/2) + (eset->resolutions.frame_w/2 - r->w/2) + r->x;
421 r->y = ((settings->view_h - eset->resolutions.frame_h)/2) + (eset->resolutions.frame_h/2 - r->h/2) + r->y;
422 }
423 else if (alignment == ALIGN_FRAME_RIGHT) {
424 r->x = ((settings->view_w - eset->resolutions.frame_w)/2) + (eset->resolutions.frame_w - r->w) + r->x;
425 r->y = ((settings->view_h - eset->resolutions.frame_h)/2) + (eset->resolutions.frame_h/2 - r->h/2) + r->y;
426 }
427 else if (alignment == ALIGN_FRAME_BOTTOMLEFT) {
428 r->x = ((settings->view_w - eset->resolutions.frame_w)/2) + r->x;
429 r->y = ((settings->view_h - eset->resolutions.frame_h)/2) + (eset->resolutions.frame_h - r->h) + r->y;
430 }
431 else if (alignment == ALIGN_FRAME_BOTTOM) {
432 r->x = ((settings->view_w - eset->resolutions.frame_w)/2) + (eset->resolutions.frame_w/2 - r->w/2) + r->x;
433 r->y = ((settings->view_h - eset->resolutions.frame_h)/2) + (eset->resolutions.frame_h - r->h) + r->y;
434 }
435 else if (alignment == ALIGN_FRAME_BOTTOMRIGHT) {
436 r->x = ((settings->view_w - eset->resolutions.frame_w)/2) + (eset->resolutions.frame_w - r->w) + r->x;
437 r->y = ((settings->view_h - eset->resolutions.frame_h)/2) + (eset->resolutions.frame_h - r->h) + r->y;
438 }
384439 else {
385440 // do nothing
386441 }
503558 std::stringstream ss;
504559 ss << settings->path_user << "saves/" << eset->misc.save_prefix << "/";
505560
506 Filesystem::createDir(Filesystem::path(&ss));
561 Filesystem::createDir(ss.str());
507562
508563 ss << slot;
509 Filesystem::createDir(Filesystem::path(&ss));
564 Filesystem::createDir(ss.str());
510565 }
511566
512567 void Utils::removeSaveDir(int slot) {
516571 std::stringstream ss;
517572 ss << settings->path_user << "saves/" << eset->misc.save_prefix << "/" << slot;
518573
519 if (Filesystem::isDirectory(Filesystem::path(&ss))) {
520 Filesystem::removeDirRecursive(Filesystem::path(&ss));
574 if (Filesystem::isDirectory(ss.str())) {
575 Filesystem::removeDirRecursive(ss.str());
521576 }
522577 }
523578
711766 if (!platform.has_lock_file)
712767 return;
713768
714 std::string lock_file_path = settings->path_conf + "flare_lock";
769 std::string lock_file_path = Filesystem::convertSlashes(settings->path_conf + "flare_lock");
715770
716771 std::ifstream infile;
717772 infile.open(lock_file_path.c_str(), std::ios::in);
770825 { SDL_MESSAGEBOX_BUTTON_ESCAPEKEY_DEFAULT|SDL_MESSAGEBOX_BUTTON_RETURNKEY_DEFAULT, 0, "Quit" },
771826 { 0, 1, "Continue" },
772827 { 0, 2, "Reset" },
828 { 0, 3, "Safe Video" },
773829 };
774830 const SDL_MessageBoxData messageboxdata = {
775831 SDL_MESSAGEBOX_INFORMATION,
776832 NULL,
777833 "Flare",
778 "Flare appears to already be running.\n\nYou may either:\n- 'Quit' Flare (safe, recommended)\n- 'Continue' to launch another copy of Flare.\n- 'Reset' the counter which tracks the number of copies of Flare that are currently running.\n If this dialog is shown every time you launch Flare, this option should fix it.",
834 "Flare is unable to launch properly. This may be because it did not exit properly, or because there is another instance running.\n\nIf Flare crashed, it is recommended to try 'Safe Video' mode. This will try launching Flare with the minimum video settings.\n\nIf Flare is already running, you may:\n- 'Quit' Flare (safe, recommended)\n- 'Continue' to launch another copy of Flare.\n- 'Reset' the counter which tracks the number of copies of Flare that are currently running.\n If this dialog is shown every time you launch Flare, this option should fix it.",
779835 static_cast<int>(SDL_arraysize(buttons)),
780836 buttons,
781837 NULL
789845 else if (buttonid == 2) {
790846 LOCK_INDEX = 0;
791847 }
848 else if (buttonid == 3) {
849 LOCK_INDEX = 0;
850 settings->safe_video = true;
851 }
792852 }
793853
794854 lockFileWrite(1);
3535 typedef unsigned long SoundID;
3636 typedef unsigned long StatusID;
3737
38 typedef size_t ItemID;
39 typedef size_t ItemSetID;
40 typedef size_t PowerID;
41
3842 class Avatar;
3943 class FPoint; // needed for Point -> FPoint constructor
4044
7276 operator SDL_Color() const;
7377 bool operator ==(const Color &other);
7478 bool operator !=(const Color &other);
79 uint32_t encodeRGBA();
80 void decodeRGBA(const uint32_t encoded);
7581 };
7682
7783 class Timer {
9399 bool isEnd();
94100 bool isBegin();
95101 void reset(int type);
102 bool isWholeSecond();
96103 };
97104
98105 namespace Utils {
99 // Alignment: For aligning objects relative to the screen
106 // Alignment: For aligning objects. 0-8 are screen-relative, 9-17 are menu frame relative.
100107 enum {
101108 ALIGN_TOPLEFT = 0,
102109 ALIGN_TOP = 1,
106113 ALIGN_RIGHT = 5,
107114 ALIGN_BOTTOMLEFT = 6,
108115 ALIGN_BOTTOM = 7,
109 ALIGN_BOTTOMRIGHT = 8
116 ALIGN_BOTTOMRIGHT = 8,
117 ALIGN_FRAME_TOPLEFT = 9,
118 ALIGN_FRAME_TOP = 10,
119 ALIGN_FRAME_TOPRIGHT = 11,
120 ALIGN_FRAME_LEFT = 12,
121 ALIGN_FRAME_CENTER = 13,
122 ALIGN_FRAME_RIGHT = 14,
123 ALIGN_FRAME_BOTTOMLEFT = 15,
124 ALIGN_FRAME_BOTTOM = 16,
125 ALIGN_FRAME_BOTTOMRIGHT = 17
110126 };
111127
112128 extern int LOCK_INDEX;
3636 */
3737 bool Filesystem::pathExists(const std::string &path) {
3838 struct stat st;
39 return (stat(path.c_str(), &st) == 0);
39 return (stat(convertSlashes(path).c_str(), &st) == 0);
4040 }
4141
4242 /**
4747 if (isDirectory(path, false))
4848 return;
4949
50 platform.dirCreate(path);
50 platform.dirCreate(convertSlashes(path));
5151 }
5252
5353 /**
5555 * The filename parameter should include the entire path to this file
5656 */
5757 bool Filesystem::fileExists(const std::string &filename) {
58 if (isDirectory(filename, false)) return false;
59
60 std::ifstream infile(filename.c_str());
58 if (isDirectory(filename, false))
59 return false;
60
61 std::ifstream infile(convertSlashes(filename).c_str());
6162 bool exists = infile.is_open();
6263 if (exists) infile.close();
6364
6869 * Returns a vector containing all filenames in a given folder with the given extension
6970 */
7071 int Filesystem::getFileList(const std::string &dir, const std::string &ext, std::vector<std::string> &files) {
71
7272 DIR *dp;
7373 struct dirent *dirp;
7474
75 if((dp = opendir(dir.c_str())) == NULL)
75 if((dp = opendir(convertSlashes(dir).c_str())) == NULL)
7676 return errno;
7777
7878 size_t extlen = ext.length();
8080 std::string filename = std::string(dirp->d_name);
8181 if (filename.length() > extlen)
8282 if(filename.substr(filename.length() - extlen,extlen) == ext)
83 files.push_back(dir + "/" + filename);
83 files.push_back(convertSlashes(dir + "/" + filename));
8484 }
8585 closedir(dp);
8686 return 0;
102102 while ((dirp = readdir(dp)) != NULL) {
103103 // do not use dirp->d_type, it's not portable
104104 std::string directory = std::string(dirp->d_name);
105 std::string mod_dir = dir + "/" + directory;
105 std::string mod_dir = convertSlashes(dir + "/" + directory);
106106 if ((stat(mod_dir.c_str(), &st) != -1)
107107 && S_ISDIR(st.st_mode)
108108 && directory != "."
116116 }
117117
118118 bool Filesystem::isDirectory(const std::string &path, bool show_error) {
119 std::string clean_path = convertSlashes(path);
119120 struct stat st;
120 if (stat(path.c_str(), &st) == -1) {
121 if (stat(clean_path.c_str(), &st) == -1) {
121122 if (show_error) {
122 std::string error_msg = "Filesystem::isDirectory (" + path + ")";
123 std::string error_msg = "Filesystem::isDirectory (" + clean_path + ")";
123124 perror(error_msg.c_str());
124125 }
125126 return false;
130131 }
131132
132133 bool Filesystem::removeFile(const std::string &file) {
133 if (remove(file.c_str()) != 0) {
134 std::string error_msg = "Filesystem::removeFile (" + file + ")";
134 std::string clean_path = convertSlashes(file);
135 if (remove(clean_path.c_str()) != 0) {
136 std::string error_msg = "Filesystem::removeFile (" + clean_path + ")";
135137 perror(error_msg.c_str());
136138 return false;
137139 }
142144 if (!isDirectory(dir))
143145 return false;
144146
145 return platform.dirRemove(dir);
147 return platform.dirRemove(convertSlashes(dir));
146148 }
147149
148150 bool Filesystem::removeDirRecursive(const std::string &dir) {
167169 }
168170
169171 /**
170 * Convert from stringstream to filesystem path string in an os-independent fashion
171 */
172 std::string Filesystem::path(const std::stringstream* ss) {
173 std::string path = ss->str();
174
175 bool is_windows_path = false;
176
177 size_t len = path.length();
178 // fix mixed '\' and '/' on windows
179 for (size_t i = 0; i < len; i++) {
180 if (path[i] == '\\') {
181 is_windows_path = true;
172 * Convert from string to filesystem path string in an os-independent fashion
173 */
174 std::string Filesystem::convertSlashes(const std::string _path) {
175 std::string path = _path;
176
177 #ifdef _WIN32
178 char good_sep = '\\';
179 char bad_sep = '/';
180 #else
181 char good_sep = '/';
182 char bad_sep = '\\';
183 #endif
184
185 for (size_t i = 0; i < path.length(); i++) {
186 if (path[i] == bad_sep) {
187 path[i] = good_sep;
182188 }
183 if (is_windows_path && path[i] == '/') {
184 // isDirectory does not like trailing '\', so terminate string if last char
185 if (i == len - 1) {
186 path[i] = 0;
187 }
188 else {
189 path[i] = '\\';
190 }
191 }
192 }
193
194 return path;
195 }
196
197 bool Filesystem::renameFile(const std::string &oldfile, const std::string &newfile) {
189 }
190
191 return removeTrailingSlash(path);
192 }
193
194 bool Filesystem::renameFile(const std::string &_oldfile, const std::string &_newfile) {
195 std::string oldfile = convertSlashes(_oldfile);
196 std::string newfile = convertSlashes(_newfile);
197
198198 if (rename(oldfile.c_str(), newfile.c_str()) != 0) {
199199 std::string error_msg = "Filesystem::renameFile (" + oldfile + " -> " + newfile + ")";
200200 perror(error_msg.c_str());
201201 return false;
202202 }
203
203204 return true;
204205 }
205206
207 std::string Filesystem::removeTrailingSlash(const std::string& path) {
208 // windows
209 if (!path.empty() && path.at(path.length()-1) == '\\')
210 return path.substr(0, path.length()-1);
211
212 // everything else
213 // allow for *nix root /
214 else if (path.length() > 1 && path.at(path.length()-1) == '/')
215 return path.substr(0, path.length()-1);
216
217 // no trailing slash found
218 else
219 return path;
220 }
3939 bool removeDir(const std::string &dir);
4040 bool removeDirRecursive(const std::string &dir);
4141
42 std::string path(const std::stringstream* ss);
42 std::string convertSlashes(const std::string _path);
4343
44 bool renameFile(const std::string &oldfile, const std::string &newfile);
44 bool renameFile(const std::string &_oldfile, const std::string &_newfile);
45
46 std::string removeTrailingSlash(const std::string& path);
4547 }
4648
4749
2121
2222 #include <cstdlib>
2323 #include <algorithm> // for std::min()/std::max()
24 #include "math.h"
24 #include <math.h>
25
26 #ifdef _MSC_VER
27 #define _USE_MATH_DEFINES
28 #endif
2529
2630 #ifndef M_PI
2731 #define M_PI 3.1415926535898f
4448 return minVal + (rand() % (d + signum(d)));
4549 }
4650
51 inline float randBetweenF(float minVal, float maxVal) {
52 if (minVal == maxVal) return minVal;
53 return minVal + ((static_cast<float>(rand()) / static_cast<float>(RAND_MAX)) * (maxVal - minVal));
54 }
55
4756 /**
4857 * Returns true with random percent chance.
4958 */
1919
2020 #include "CommonIncludes.h"
2121 #include "FontEngine.h"
22 #include "ItemManager.h"
2223 #include "Settings.h"
2324 #include "SharedResources.h"
2425 #include "UtilsParsing.h"
169170 if (!(std::stringstream(s) >> result))
170171 result = default_value;
171172 return result;
173 }
174
175 size_t Parse::toSizeT(const std::string& s, size_t default_value) {
176 size_t result;
177 if (!(std::stringstream(s) >> result))
178 result = default_value;
179 return result;
180 }
181
182 ItemID Parse::toItemID(const std::string& s, ItemID default_value) {
183 return Parse::toSizeT(s, default_value);
184 }
185
186 PowerID Parse::toPowerID(const std::string& s, PowerID default_value) {
187 return Parse::toSizeT(s, default_value);
172188 }
173189
174190 bool Parse::toBool(std::string value) {
276292 return dir;
277293 }
278294
279 int Parse::toAlignment(const std::string &s) {
280 int align = Utils::ALIGN_TOPLEFT;
295 int Parse::toAlignment(const std::string &s, int default_value) {
296 int align = default_value;
281297
282298 if (s == "topleft")
283299 align = Utils::ALIGN_TOPLEFT;
297313 align = Utils::ALIGN_BOTTOM;
298314 else if (s == "bottomright")
299315 align = Utils::ALIGN_BOTTOMRIGHT;
316 else if (s == "frame_topleft")
317 align = Utils::ALIGN_FRAME_TOPLEFT;
318 else if (s == "frame_top")
319 align = Utils::ALIGN_FRAME_TOP;
320 else if (s == "frame_topright")
321 align = Utils::ALIGN_FRAME_TOPRIGHT;
322 else if (s == "frame_left")
323 align = Utils::ALIGN_FRAME_LEFT;
324 else if (s == "frame_center")
325 align = Utils::ALIGN_FRAME_CENTER;
326 else if (s == "frame_right")
327 align = Utils::ALIGN_FRAME_RIGHT;
328 else if (s == "frame_bottomleft")
329 align = Utils::ALIGN_FRAME_BOTTOMLEFT;
330 else if (s == "frame_bottom")
331 align = Utils::ALIGN_FRAME_BOTTOM;
332 else if (s == "frame_bottomright")
333 align = Utils::ALIGN_FRAME_BOTTOMRIGHT;
300334
301335 return align;
302336 }
368402 return info;
369403 }
370404
405 ItemStack Parse::toItemQuantityPair(std::string value, bool* check_pair) {
406 ItemStack r;
407
408 if (check_pair) {
409 *check_pair = (value.find_first_of(':') != std::string::npos);
410 }
411
412 value += ':';
413 r.item = toItemID(popFirstString(value, ':'));
414 r.quantity = popFirstInt(value, ':');
415
416 // quantity is always >= 1
417 if (r.quantity == 0)
418 r.quantity = 1;
419
420 return r;
421 }
2424 #include <string>
2525 #include <typeinfo>
2626
27 class ItemStack;
2728 class LabelInfo;
2829
2930 namespace Parse {
3940 int toInt(const std::string& s, int default_value = 0);
4041 float toFloat(const std::string &s, float default_value = 0.0);
4142 unsigned long toUnsignedLong(const std::string& s, unsigned long default_value = 0);
43 size_t toSizeT(const std::string& s, size_t default_value = 0);
44 ItemID toItemID(const std::string& s, ItemID default_value = 0);
45 PowerID toPowerID(const std::string& s, PowerID default_value = 0);
4246 bool toBool(std::string value);
4347
4448 Point toPoint(std::string value);
4852
4953 int toDuration(const std::string& s);
5054 int toDirection(const std::string& s);
51 int toAlignment(const std::string& s);
55 int toAlignment(const std::string& s, int default_value = Utils::ALIGN_TOPLEFT);
5256
5357 int popFirstInt(std::string& s, char separator = 0);
5458 std::string popFirstString(std::string& s, char separator = 0);
5559 LabelInfo popLabelInfo(std::string val);
60
61 ItemStack toItemQuantityPair(std::string value, bool* check_pair = NULL);
5662 }
5763
5864 #endif
2929
3030 #include <SDL.h>
3131
32 Version VersionInfo::ENGINE(1, 9, 1);
32 Version VersionInfo::ENGINE(1, 11, 89);
3333 Version VersionInfo::MIN(0, 0, 0);
3434 Version VersionInfo::MAX(USHRT_MAX, USHRT_MAX, USHRT_MAX);
3535
147147
148148 std::string VersionInfo::createVersionStringFull() {
149149 // example output: Flare 1.0 (Linux)
150 std::stringstream ss;
151 ss << NAME << ' ' << ENGINE.getString();
152 ss << " (" << SDL_GetPlatform() << ")";
153 return ss.str();
150 return NAME + " " + ENGINE.getString() + " (" + std::string(SDL_GetPlatform()) + ")";
154151 }
2525 : in_focus(false)
2626 , focusable(false)
2727 , enable_tablist_nav(true)
28 , tablist_nav_right(false)
2829 , scroll_type(SCROLL_TWO_DIRECTIONS)
2930 , alignment(Utils::ALIGN_TOPLEFT) {
3031 }
162163 }
163164
164165 Widget* TabList::getNext(bool inner, uint8_t dir) {
165 if (widgets.empty())
166 if (widgets.empty()) {
167 if (next_tablist) {
168 // WARNING: Could result in infinite loop if all tablists are empty
169 defocus();
170 locked = true;
171 next_tablist->unlock();
172 return next_tablist->getNext(!GET_INNER, WIDGET_SELECT_AUTO);
173 }
166174 return NULL;
175 }
167176
168177 if (current_is_valid()) {
169178 if (inner && widgets.at(current)->getNext())
205214 }
206215
207216 Widget* TabList::getPrev(bool inner, uint8_t dir) {
208 if (widgets.empty())
217 if (widgets.empty()) {
218 if (prev_tablist) {
219 // WARNING: Could result in infinite loop if all tablists are empty
220 defocus();
221 locked = true;
222 prev_tablist->unlock();
223 return prev_tablist->getPrev(!GET_INNER, WIDGET_SELECT_AUTO);
224 }
209225 return NULL;
226 }
210227
211228 if (current_is_valid()) {
212229 if (inner && widgets.at(current)->getPrev())
265282 if (!widgets.at(i)->enable_tablist_nav)
266283 continue;
267284
268 FPoint p1(static_cast<float>(widgets.at(current)->pos.x), static_cast<float>(widgets.at(current)->pos.y));
269 FPoint p2(static_cast<float>(widgets.at(i)->pos.x), static_cast<float>(widgets.at(i)->pos.y));
285 Rect& c_pos = widgets.at(current)->pos;
286 Rect& i_pos = widgets.at(i)->pos;
287
288 int w_div = widgets.at(i)->tablist_nav_right ? 1 : 2;
289
290 FPoint p1(static_cast<float>(c_pos.x + c_pos.w / w_div), static_cast<float>(c_pos.y + c_pos.h / 2));
291 FPoint p2(static_cast<float>(i_pos.x + i_pos.w / w_div), static_cast<float>(i_pos.y + i_pos.h / 2));
270292
271293 if (dir == WIDGET_SELECT_LEFT && p1.x <= p2.x)
272294 continue;
391413
392414 // Also defocus if we start using the mouse
393415 // we need to disable this for touchscreen devices so that item tooltips will work
394 if (!settings->touchscreen && current != -1 && inpt->usingMouse()) {
416 if (!settings->touchscreen && current != -1 && inpt->usingMouse() && !ignore_no_mouse) {
395417 defocus();
396418 }
397419 }
4848 bool in_focus;
4949 bool focusable;
5050 bool enable_tablist_nav; // when disabled, this widget will be skipped during tablist navigation
51 bool tablist_nav_right; // uses the center-right point for tablist nav instead of the center. Primarily for MenuConfig widgets
5152 uint8_t scroll_type;
5253 Rect pos; // This is the position of the button within the screen
5354 Rect local_frame; // Local reference frame is this is a daughter widget
223223 if (inpt->usingMouse() && Utils::isWithinRect(pos, mouse) && tooltip != "") {
224224 TooltipData tip_data;
225225 tip_data.addText(tooltip);
226 tooltipm->push(tip_data, mouse, TooltipData::STYLE_FLOAT);
226 Point new_mouse(mouse.x + local_frame.x - local_offset.x, mouse.y + local_frame.y - local_offset.y);
227 tooltipm->push(tip_data, new_mouse, TooltipData::STYLE_FLOAT);
227228 }
228229 }
229230
154154 tip_data.addText(tooltip);
155155 }
156156
157 if (!tip_data.isEmpty())
158 tooltipm->push(tip_data, mouse, TooltipData::STYLE_FLOAT);
157 if (!tip_data.isEmpty()) {
158 Point new_mouse(mouse.x + local_frame.x - local_offset.x, mouse.y + local_frame.y - local_offset.y);
159 tooltipm->push(tip_data, new_mouse, TooltipData::STYLE_FLOAT);
160 }
159161 }
160162
0 /*
1 Copyright © 2018 Justin Jacobs
2
3 This file is part of FLARE.
4
5 FLARE is free software: you can redistribute it and/or modify it under the terms
6 of the GNU General Public License as published by the Free Software Foundation,
7 either version 3 of the License, or (at your option) any later version.
8
9 FLARE is distributed in the hope that it will be useful, but WITHOUT ANY
10 WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A
11 PARTICULAR PURPOSE. See the GNU General Public License for more details.
12
13 You should have received a copy of the GNU General Public License along with
14 FLARE. If not, see http://www.gnu.org/licenses/
15 */
16
17 /**
18 * class WidgetHorizontalList
19 */
20
21 #include "EngineSettings.h"
22 #include "FontEngine.h"
23 #include "InputState.h"
24 #include "RenderDevice.h"
25 #include "SharedResources.h"
26 #include "TooltipManager.h"
27 #include "WidgetButton.h"
28 #include "WidgetHorizontalList.h"
29
30 const std::string WidgetHorizontalList::DEFAULT_FILE_LEFT = "images/menus/buttons/left.png";
31 const std::string WidgetHorizontalList::DEFAULT_FILE_RIGHT = "images/menus/buttons/right.png";
32
33 WidgetHorizontalList::WidgetHorizontalList()
34 : Widget()
35 , button_left(new WidgetButton(DEFAULT_FILE_LEFT))
36 , button_right(new WidgetButton(DEFAULT_FILE_RIGHT))
37 , cursor(0)
38 , changed_without_mouse(false)
39 , enabled(true)
40 {
41 focusable = true;
42 scroll_type = SCROLL_HORIZONTAL;
43 refresh();
44 }
45
46 // void WidgetHorizontalList::activate() {
47 // }
48
49 void WidgetHorizontalList::setPos(int offset_x, int offset_y) {
50 Widget::setPos(offset_x, offset_y);
51 refresh();
52 }
53
54 bool WidgetHorizontalList::checkClick() {
55 return checkClickAt(inpt->mouse.x,inpt->mouse.y);
56 }
57
58 bool WidgetHorizontalList::checkClickAt(int x, int y) {
59 // enable_tablist_nav = enabled;
60
61 Point mouse(x,y);
62
63 checkTooltip(mouse);
64
65 if (button_left->checkClickAt(mouse.x, mouse.y)) {
66 scrollLeft();
67 return true;
68 }
69 else if (button_right->checkClickAt(mouse.x, mouse.y)) {
70 scrollRight();
71 return true;
72 }
73 else if (changed_without_mouse) {
74 // getNext() or getPrev() was used to change the slider, so treat it as a "click"
75 changed_without_mouse = false;
76 return true;
77 }
78
79
80 return false;
81 }
82
83 void WidgetHorizontalList::render() {
84 button_left->local_frame = local_frame;
85 button_left->local_offset = local_offset;
86
87 button_right->local_frame = local_frame;
88 button_right->local_offset = local_offset;
89
90 button_left->render();
91 button_right->render();
92
93 // render label
94 label.local_frame = local_frame;
95 label.local_offset = local_offset;
96 label.render();
97
98 if (in_focus) {
99 Point topLeft;
100 Point bottomRight;
101
102 topLeft.x = pos.x + local_frame.x - local_offset.x;
103 topLeft.y = pos.y + local_frame.y - local_offset.y;
104 bottomRight.x = topLeft.x + pos.w;
105 bottomRight.y = topLeft.y + pos.h;
106
107 // Only draw rectangle if it fits in local frame
108 bool draw = true;
109 if (local_frame.w &&
110 (topLeft.x<local_frame.x || bottomRight.x>(local_frame.x+local_frame.w))) {
111 draw = false;
112 }
113 if (local_frame.h &&
114 (topLeft.y<local_frame.y || bottomRight.y>(local_frame.y+local_frame.h))) {
115 draw = false;
116 }
117 if (draw || 1) {
118 render_device->drawRectangle(topLeft, bottomRight, eset->widgets.selection_rect_color);
119 }
120 }
121 }
122
123 void WidgetHorizontalList::refresh() {
124 const int text_width = eset->widgets.horizontal_list_text_width;
125 bool is_enabled = !isEmpty() && enabled;
126
127 label.setText(getValue());
128 label.setPos(pos.x + button_left->pos.w + text_width/2, pos.y + button_left->pos.h / 2);
129 label.setMaxWidth(text_width);
130 label.setJustify(FontEngine::JUSTIFY_CENTER);
131 label.setVAlign(LabelInfo::VALIGN_CENTER);
132 label.setColor(is_enabled ? font->getColor(FontEngine::COLOR_WIDGET_NORMAL) : font->getColor(FontEngine::COLOR_WIDGET_DISABLED));
133
134 button_left->setPos(pos.x, pos.y);
135 button_right->setPos(pos.x + button_left->pos.w + text_width, pos.y);
136
137 button_left->enabled = is_enabled;
138 button_right->enabled = is_enabled;
139
140 pos.w = button_left->pos.w + button_right->pos.w + text_width;
141 pos.h = std::max(button_left->pos.h, label.getBounds()->h);
142
143 tooltip_area.x = pos.x + button_left->pos.w;
144 tooltip_area.y = std::min(pos.y, label.getBounds()->y);
145 tooltip_area.w = text_width;
146 tooltip_area.h = std::max(button_left->pos.h, label.getBounds()->h);
147 }
148
149 void WidgetHorizontalList::checkTooltip(const Point& mouse) {
150 if (isEmpty())
151 return;
152
153 if (inpt->usingMouse() && Utils::isWithinRect(tooltip_area, mouse) && !list_items[cursor].tooltip.empty()) {
154 TooltipData tip_data;
155 tip_data.addText(list_items[cursor].tooltip);
156 Point new_mouse(mouse.x + local_frame.x - local_offset.x, mouse.y + local_frame.y - local_offset.y);
157 tooltipm->push(tip_data, new_mouse, TooltipData::STYLE_FLOAT);
158 }
159 }
160
161 void WidgetHorizontalList::append(const std::string& value, const std::string& tooltip) {
162 HListItem hli;
163 hli.value = value;
164 hli.tooltip = tooltip;
165
166 list_items.push_back(hli);
167 }
168
169 void WidgetHorizontalList::clear() {
170 list_items.clear();
171 }
172
173 std::string WidgetHorizontalList::getValue() {
174 if (cursor < getSize()) {
175 return list_items[cursor].value;
176 }
177
178 return "";
179 }
180
181 unsigned WidgetHorizontalList::getSelected() {
182 if (cursor < getSize())
183 return cursor;
184 else
185 return getSize();
186 }
187
188 unsigned WidgetHorizontalList::getSize() {
189 return static_cast<unsigned>(list_items.size());
190 }
191
192 bool WidgetHorizontalList::isEmpty() {
193 return list_items.empty();
194 }
195
196 void WidgetHorizontalList::scrollLeft() {
197 if (isEmpty())
198 return;
199
200 if (cursor == 0)
201 cursor = getSize() - 1;
202 else
203 cursor--;
204
205 refresh();
206 }
207
208 void WidgetHorizontalList::select(unsigned index) {
209 if (isEmpty())
210 return;
211
212 if (index < getSize())
213 cursor = index;
214
215 refresh();
216 }
217
218 void WidgetHorizontalList::scrollRight() {
219 if (isEmpty())
220 return;
221
222 if (cursor+1 >= getSize())
223 cursor = 0;
224 else
225 cursor++;
226
227 refresh();
228 }
229
230 bool WidgetHorizontalList::getPrev() {
231 if (!isEmpty() && enabled) {
232 scrollLeft();
233 changed_without_mouse = true;
234 }
235 return true;
236 }
237
238 bool WidgetHorizontalList::getNext() {
239 if (!isEmpty() && enabled) {
240 scrollRight();
241 changed_without_mouse = true;
242 }
243 return true;
244 }
245
246 WidgetHorizontalList::~WidgetHorizontalList() {
247 delete button_left;
248 delete button_right;
249 }
250
0 /*
1 Copyright © 2018 Justin Jacobs
2
3 This file is part of FLARE.
4
5 FLARE is free software: you can redistribute it and/or modify it under the terms
6 of the GNU General Public License as published by the Free Software Foundation,
7 either version 3 of the License, or (at your option) any later version.
8
9 FLARE is distributed in the hope that it will be useful, but WITHOUT ANY
10 WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A
11 PARTICULAR PURPOSE. See the GNU General Public License for more details.
12
13 You should have received a copy of the GNU General Public License along with
14 FLARE. If not, see http://www.gnu.org/licenses/
15 */
16
17 /**
18 * class WidgetHorizontalList
19 */
20
21 #ifndef WIDGET_HORIZONTALLIST_H
22 #define WIDGET_HORIZONTALLIST_H
23
24 #include "CommonIncludes.h"
25 #include "Widget.h"
26 #include "WidgetLabel.h"
27
28 class WidgetButton;
29
30 class WidgetHorizontalList : public Widget {
31 private:
32 static const std::string DEFAULT_FILE_LEFT;
33 static const std::string DEFAULT_FILE_RIGHT;
34
35 class HListItem {
36 public:
37 HListItem() {}
38 ~HListItem() {}
39
40 std::string value;
41 std::string tooltip;
42 };
43
44 void checkTooltip(const Point& mouse);
45
46 WidgetLabel label;
47 WidgetButton *button_left;
48 WidgetButton *button_right;
49
50 unsigned cursor;
51 bool changed_without_mouse;
52 std::vector<HListItem> list_items;
53 Rect tooltip_area;
54
55 public:
56 explicit WidgetHorizontalList();
57 ~WidgetHorizontalList();
58
59 void setPos(int offset_x, int offset_y);
60
61 bool checkClick();
62 bool checkClickAt(int x, int y);
63 void render();
64 void refresh();
65
66 void append(const std::string& value, const std::string& tooltip);
67 void clear();
68 std::string getValue();
69 unsigned getSelected();
70 unsigned getSize();
71 bool isEmpty();
72
73 void select(unsigned index);
74 void scrollLeft();
75 void scrollRight();
76
77 bool getPrev();
78 bool getNext();
79
80 bool enabled;
81 };
82
83 #endif
4545 void WidgetInput::setPos(int offset_x, int offset_y) {
4646 pos.x = pos_base.x + offset_x + local_frame.x - local_offset.x;
4747 pos.y = pos_base.y + offset_y + local_frame.y - local_offset.y;
48 Utils::alignToScreenEdge(alignment, &pos);
4849
4950 font->setFont("font_regular");
5051 font_pos.x = pos.x + (font->getFontHeight()/2);
4747 , update_flag(UPDATE_NONE)
4848 , hidden(false)
4949 , window_resize_flag(false)
50 , alpha(255)
5051 , label(NULL)
5152 , text("")
5253 , font_style(DEFAULT_FONT)
5455 {
5556 bounds.x = bounds.y = 0;
5657 bounds.w = bounds.h = 0;
58 enable_tablist_nav = false;
5759 }
5860
5961 void WidgetLabel::setMaxWidth(int width) {
108110 if (font_style != _font) {
109111 font_style = _font;
110112 setUpdateFlag(UPDATE_RECACHE);
113 }
114 }
115
116 void WidgetLabel::setAlpha(uint8_t _alpha) {
117 if (_alpha != alpha) {
118 alpha = _alpha;
119 setUpdateFlag(UPDATE_POS);
111120 }
112121 }
113122
164173
165174 if (label) {
166175 label->setDestFromRect(bounds);
176 label->alpha_mod = alpha;
167177 }
168178 }
169179
179189 label = NULL;
180190 }
181191
182 if (text.empty())
192 if (text.empty()) {
193 bounds.w = 0;
194 bounds.h = 0;
183195 return;
196 }
184197
185198 std::string temp_text = text;
186199
6666 int update_flag;
6767 bool hidden;
6868 bool window_resize_flag;
69 uint8_t alpha;
6970 Sprite *label;
7071
7172 std::string text;
8889 void setText(const std::string& _text);
8990 void setColor(const Color& _color);
9091 void setFont(const std::string& _font);
92 void setAlpha(uint8_t _alpha);
9193 void setFromLabelInfo(const LabelInfo& label_info);
9294
9395 std::string getText();
186186 }
187187 }
188188
189 if (!tip_data.isEmpty())
190 tooltipm->push(tip_data, mouse, TooltipData::STYLE_FLOAT);
189 if (!tip_data.isEmpty()) {
190 Point new_mouse(mouse.x + local_frame.x - local_offset.x, mouse.y + local_frame.y - local_offset.y);
191 tooltipm->push(tip_data, new_mouse, TooltipData::STYLE_FLOAT);
192 }
191193 }
192194
193195 /**
100100 Image* render_target = scroll_box->contents->getGraphics();
101101
102102 if (!separators.empty() && separators[i-1]) {
103 for (int j=padding; j<padding+content_width; ++j) {
104 render_target->drawPixel(j, y2, font->getColor(FontEngine::COLOR_WIDGET_DISABLED));
105 }
106
103 render_target->drawLine(padding, y2, padding + content_width - 1, y2, font->getColor(FontEngine::COLOR_WIDGET_DISABLED));
107104 y2 += paragraph_spacing;
108105 }
109106 font->renderShadowed(messages[i-1], padding, y2, FontEngine::JUSTIFY_LEFT, render_target, content_width, colors[i-1]);
135135
136136 int WidgetScrollBar::getValue() {
137137 return value;
138 }
139
140 Rect WidgetScrollBar::getBounds() {
141 Rect r;
142 r.x = pos_up.x;
143 r.y = pos_up.y;
144 r.w = pos_up.w;
145 r.h = (pos_up.h * 2) + bar_height;
146
147 return r;
138148 }
139149
140150 void WidgetScrollBar::render() {
4949 int checkClickAt(int x, int y);
5050 void set();
5151 int getValue();
52 Rect getBounds();
5253 void render();
5354 void refresh(int x, int y, int h, int val, int max);
5455
3939 update = true;
4040 resize(width, height);
4141 tablist = TabList();
42 tablist.setScrollType(SCROLL_VERTICAL);
42 tablist.setScrollType(SCROLL_TWO_DIRECTIONS);
4343
4444 scroll_type = SCROLL_VERTICAL;
4545 }
7676 void WidgetScrollBox::clearChildWidgets() {
7777 currentChild = -1;
7878 children.clear();
79 tablist.clear();
7980 }
8081
8182 void WidgetScrollBox::scroll(int amount) {
101102 }
102103
103104 void WidgetScrollBox::scrollDown() {
104 int contents_height = (contents ? contents->getGraphicsHeight() : 0);
105 scroll((contents_height * 5) / 100);
105 int amount = pos.h / 4;
106 scroll(amount);
106107 }
107108
108109 void WidgetScrollBox::scrollUp() {
109 int contents_height = (contents ? contents->getGraphicsHeight() : 0);
110 scroll(-((contents_height * 5) / 100));
110 int amount = pos.h / 4;
111 scroll(-amount);
112 }
113
114 void WidgetScrollBox::scrollToTop() {
115 scrollTo(0);
111116 }
112117
113118 Point WidgetScrollBox::input_assist(const Point& mouse) {
126131 void WidgetScrollBox::logic() {
127132 logic(inpt->mouse.x,inpt->mouse.y);
128133 if (in_focus) {
134 if (currentChild == -1 && !children.empty())
135 getNext();
129136 tablist.logic();
137 }
138 else {
139 // TODO don't run every frame
140 tablist.defocus();
141 currentChild = -1;
130142 }
131143 }
132144
245257 }
246258 update = false;
247259
248 if (in_focus) {
260 if (in_focus && children.empty()) {
249261 Point topLeft;
250262 Point bottomRight;
251
252 topLeft.x = dest.x + local_frame.x - local_offset.x;
253 topLeft.y = dest.y + local_frame.y - local_offset.y;
254 bottomRight.x = topLeft.x + dest.w;
255 bottomRight.y = topLeft.y + dest.h;
263 Rect sb_rect = scrollbar->getBounds();
264
265 topLeft.x = sb_rect.x + local_frame.x - local_offset.x;
266 topLeft.y = sb_rect.y + local_frame.y - local_offset.y;
267 bottomRight.x = topLeft.x + sb_rect.w;
268 bottomRight.y = topLeft.y + sb_rect.h;
256269
257270 // Only draw rectangle if it fits in local frame
258271 bool draw = true;
272285
273286 bool WidgetScrollBox::getNext() {
274287 if (children.empty()) {
288 int prev_cursor = cursor;
289 int bottom = contents ? contents->getGraphicsHeight() - pos.h : 0;
290
275291 scrollDown();
292
293 if (cursor == bottom && prev_cursor == bottom)
294 return false;
295
276296 return true;
277297 }
278298
279 if (currentChild != -1)
299 if (currentChild != -1) {
280300 children[currentChild]->in_focus = false;
281 currentChild+=1;
282 currentChild = (static_cast<unsigned>(currentChild) == children.size()) ? 0 : currentChild;
283
284 if (children[currentChild]->pos.y > (cursor + pos.h) ||
285 (children[currentChild]->pos.y + children[currentChild]->pos.h) > (cursor + pos.h)) {
286 scrollTo(children[currentChild]->pos.y+children[currentChild]->pos.h-pos.h);
287 }
288 if (children[currentChild]->pos.y < cursor ||
289 (children[currentChild]->pos.y + children[currentChild]->pos.h) < cursor) {
301 currentChild = tablist.getNextRelativeIndex(TabList::WIDGET_SELECT_DOWN);
302 tablist.setCurrent(children[currentChild]);
303 }
304 else {
305 // TODO neaten this up?
306 currentChild = 0;
307 tablist.setCurrent(children[currentChild]);
308 currentChild = tablist.getNextRelativeIndex(TabList::WIDGET_SELECT_DOWN);
309 tablist.setCurrent(children[currentChild]);
310 currentChild = tablist.getNextRelativeIndex(TabList::WIDGET_SELECT_UP);
311 tablist.setCurrent(children[currentChild]);
312 }
313
314 if (currentChild != -1) {
315 children[currentChild]->in_focus = true;
290316 scrollTo(children[currentChild]->pos.y);
291317 }
292 children[currentChild]->in_focus = true;
318 else {
319 return false;
320 }
321
293322 return true;
294323 }
295324
296325 bool WidgetScrollBox::getPrev() {
297326 if (children.empty()) {
327 int prev_cursor = cursor;
328
298329 scrollUp();
330
331 if (cursor == 0 && prev_cursor == 0)
332 return false;
333
299334 return true;
300335 }
301336
302 if (currentChild != -1)
337 if (currentChild != -1) {
303338 children[currentChild]->in_focus = false;
304 currentChild-=1;
305 currentChild = (currentChild < 0) ? static_cast<int>(children.size()) - 1 : currentChild;
306
307 if (children[currentChild]->pos.y > (cursor + pos.h) ||
308 (children[currentChild]->pos.y + children[currentChild]->pos.h) > (cursor + pos.h)) {
309 scrollTo(children[currentChild]->pos.y+children[currentChild]->pos.h-pos.h);
310 }
311 if (children[currentChild]->pos.y < cursor ||
312 (children[currentChild]->pos.y + children[currentChild]->pos.h) < cursor) {
339 currentChild = tablist.getNextRelativeIndex(TabList::WIDGET_SELECT_UP);
340 tablist.setCurrent(children[currentChild]);
341 }
342 else {
343 currentChild = 0;
344 tablist.setCurrent(children[currentChild]);
345 currentChild = tablist.getNextRelativeIndex(TabList::WIDGET_SELECT_DOWN);
346 tablist.setCurrent(children[currentChild]);
347 currentChild = tablist.getNextRelativeIndex(TabList::WIDGET_SELECT_UP);
348 tablist.setCurrent(children[currentChild]);
349 }
350
351 if (currentChild != -1) {
352 children[currentChild]->in_focus = true;
313353 scrollTo(children[currentChild]->pos.y);
314354 }
315 children[currentChild]->in_focus = true;
355 else {
356 return false;
357 }
358
316359 return true;
317360 }
318361
5555 int getCursor() {
5656 return cursor;
5757 }
58 void scrollToTop();
5859
5960 private:
6061 void scroll(int amount);
206206
207207 TooltipData tip_data;
208208 tip_data.addText(ss.str());
209 tooltipm->push(tip_data, Point(pos_knob.x + pos_knob.w*2, pos_knob.y + (pos_knob.h/2)), TooltipData::STYLE_TOPLABEL);
209 Point new_mouse;
210 new_mouse.x = pos_knob.x + (pos_knob.w * 2) + local_frame.x - local_offset.x;
211 new_mouse.y = pos_knob.y + (pos_knob.h / 2) + local_frame.y - local_offset.y;
212 tooltipm->push(tip_data, new_mouse, TooltipData::STYLE_TOPLABEL);
210213 }
211214 }
212215
3030 #include "SharedResources.h"
3131 #include "WidgetSlot.h"
3232
33 WidgetSlot::WidgetSlot(int _icon_id, int _ACTIVATE, int _size)
33 WidgetSlot::WidgetSlot(int _icon_id, int _ACTIVATE)
3434 : Widget()
3535 , slot_selected(NULL)
3636 , slot_checked(NULL)
37 , label_bg(NULL)
37 , label_amount_bg(NULL)
38 , label_hotkey_bg(NULL)
3839 , icon_id(_icon_id)
3940 , overlay_id(NO_ICON)
4041 , amount(1)
4142 , max_amount(1)
4243 , amount_str("")
4344 , activate_key(_ACTIVATE)
45 , hotkey(-1)
4446 , enabled(true)
4547 , checked(false)
4648 , pressed(false)
4850 {
4951 focusable = true;
5052 label_amount.setFromLabelInfo(eset->widgets.slot_quantity_label);
53 label_amount.setColor(eset->widgets.slot_quantity_color);
54 label_hotkey.setFromLabelInfo(eset->widgets.slot_hotkey_label);
55 label_hotkey.setColor(eset->widgets.slot_hotkey_color);
56
57 // in case the hotkey string is long (we only have a fixed set of short keynames), keep the label width to the icon size
58 // TODO should this be done for the quantity as well?
59 label_hotkey.setMaxWidth(eset->resolutions.icon_size);
5160
5261 pos.x = pos.y = 0;
5362
5766 std::string selected_filename;
5867 std::string checked_filename;
5968
60 if (_size == SIZE_SMALL) {
61 // SIZE_SMALL slots are half the size of SIZE_NORMAL slots
62 pos.w = eset->resolutions.icon_size / 2;
63 pos.h = eset->resolutions.icon_size / 2;
64 src.w = src.h = eset->resolutions.icon_size / 2;
65
66 selected_filename = "images/menus/slot_selected_small.png";
67 checked_filename = "images/menus/slot_checked_small.png";
68 }
69 else {
70 // SIZE_NORMAL
71 pos.w = eset->resolutions.icon_size;
72 pos.h = eset->resolutions.icon_size;
73 src.w = src.h = eset->resolutions.icon_size;
74
75 selected_filename = "images/menus/slot_selected.png";
76 checked_filename = "images/menus/slot_checked.png";
77 }
69 pos.w = eset->resolutions.icon_size;
70 pos.h = eset->resolutions.icon_size;
71 src.w = src.h = eset->resolutions.icon_size;
72
73 selected_filename = "images/menus/slot_selected.png";
74 checked_filename = "images/menus/slot_checked.png";
7875
7976 Image *graphics;
8077 graphics = render_device->loadImage(selected_filename, RenderDevice::ERROR_NORMAL);
9693 Widget::setPos(offset_x, offset_y);
9794
9895 label_amount.setPos(pos.x + icons->text_offset.x, pos.y + icons->text_offset.y);
99
100 if (label_bg) {
96 label_hotkey.setPos(pos.x + icons->text_offset.x, pos.y + icons->text_offset.y);
97
98 if (label_amount_bg) {
10199 Rect *r = label_amount.getBounds();
102 label_bg->setDest(r->x, r->y);
100 label_amount_bg->setDest(r->x, r->y);
101 }
102
103 if (label_hotkey_bg) {
104 Rect *r = label_hotkey.getBounds();
105 label_hotkey_bg->setDest(r->x, r->y);
103106 }
104107 }
105108
208211
209212 amount_str = Utils::abbreviateKilo(amount);
210213
211 if (amount > 1 || max_amount > 1) {
214 if ((amount > 1 || max_amount > 1) && !eset->widgets.slot_quantity_label.hidden) {
212215 label_amount.setPos(pos.x + icons->text_offset.x, pos.y + icons->text_offset.y);
213216 label_amount.setText(amount_str);
214217 label_amount.local_frame = local_frame;
215218 label_amount.local_offset = local_offset;
216219
217220 Rect* r = label_amount.getBounds();
218 if (!label_bg || label_bg->getGraphicsWidth() != r->w || label_bg->getGraphicsHeight() != r->h) {
219 if (label_bg) {
220 delete label_bg;
221 label_bg = NULL;
221 if (!label_amount_bg || label_amount_bg->getGraphicsWidth() != r->w || label_amount_bg->getGraphicsHeight() != r->h) {
222 if (label_amount_bg) {
223 delete label_amount_bg;
224 label_amount_bg = NULL;
222225 }
223226
224227 if (eset->widgets.slot_quantity_bg_color.a != 0) {
225228 Image *temp = render_device->createImage(r->w, r->h);
226229 if (temp) {
227230 temp->fillWithColor(eset->widgets.slot_quantity_bg_color);
228 label_bg = temp->createSprite();
231 label_amount_bg = temp->createSprite();
229232 temp->unref();
230233 }
231234 }
232235
233 if (label_bg) {
234 label_bg->setDest(r->x, r->y);
236 if (label_amount_bg) {
237 label_amount_bg->setDest(r->x, r->y);
238 }
239 }
240 }
241 }
242
243 void WidgetSlot::setHotkey(int key) {
244 hotkey = key;
245
246 if (hotkey != -1 && !eset->widgets.slot_hotkey_label.hidden) {
247 label_hotkey.setPos(pos.x + icons->text_offset.x, pos.y + icons->text_offset.y);
248 label_hotkey.setText(inpt->getBindingString(hotkey, InputState::BINDING_DEFAULT, InputState::GET_SHORT_STRING));
249 label_hotkey.local_frame = local_frame;
250 label_hotkey.local_offset = local_offset;
251
252 Rect* r = label_hotkey.getBounds();
253 if (!label_hotkey_bg || label_hotkey_bg->getGraphicsWidth() != r->w || label_hotkey_bg->getGraphicsHeight() != r->h) {
254 if (label_hotkey_bg) {
255 delete label_hotkey_bg;
256 label_hotkey_bg = NULL;
257 }
258
259 if (eset->widgets.slot_hotkey_bg_color.a != 0) {
260 Image *temp = render_device->createImage(r->w, r->h);
261 if (temp) {
262 temp->fillWithColor(eset->widgets.slot_hotkey_bg_color);
263 label_hotkey_bg = temp->createSprite();
264 temp->unref();
265 }
266 }
267
268 if (label_hotkey_bg) {
269 label_hotkey_bg->setDest(r->x, r->y);
235270 }
236271 }
237272 }
250285 }
251286
252287 if (amount > 1 || max_amount > 1) {
253 render_device->render(label_bg);
288 if (label_amount_bg)
289 render_device->render(label_amount_bg);
254290 label_amount.render();
255291 }
292 }
293 if (hotkey != -1) {
294 // reload the hotkey label if keybindings have changed
295 if (inpt->refresh_hotkeys)
296 setHotkey(hotkey);
297
298 if (label_hotkey_bg)
299 render_device->render(label_hotkey_bg);
300 label_hotkey.render();
256301 }
257302 renderSelection();
258303 }
280325 WidgetSlot::~WidgetSlot() {
281326 delete slot_selected;
282327 delete slot_checked;
283 delete label_bg;
284 }
328 delete label_amount_bg;
329 delete label_hotkey_bg;
330 }
3333 private:
3434 Sprite *slot_selected;
3535 Sprite *slot_checked;
36 Sprite *label_bg;
36 Sprite *label_amount_bg;
37 Sprite *label_hotkey_bg;
3738
3839 WidgetLabel label_amount;
40 WidgetLabel label_hotkey;
3941 int icon_id; // current slot id
4042 int overlay_id; // icon id for the overlay image
4143 int amount; // entries amount in slot
4244 int max_amount; // if > 1 always display amount
4345 std::string amount_str; // formatted display of amount
4446 int activate_key;
47 int hotkey; // for display in label_hotkey only
4548
4649 public:
4750 enum CLICK_TYPE {
5053 ACTIVATED = 2
5154 };
5255
53 enum {
54 SIZE_NORMAL = 0,
55 SIZE_SMALL = 1
56 };
57
5856 static const int NO_ICON = -1;
5957 static const int NO_OVERLAY = -1;
6058
61 WidgetSlot(int _icon_id, int _activate_key, int _size);
59 WidgetSlot(int _icon_id, int _activate_key);
6260 ~WidgetSlot();
6361
6462 void setPos(int offset_x, int offset_y);
7472 int getIcon();
7573 void setIcon(int _icon_id, int _overlay_id);
7674 void setAmount(int _amount, int _max_amount);
75 void setHotkey(int key);
7776 void render();
7877 void renderSelection();
7978
5555 tabs.resize(index+1);
5656 active_labels.resize(index+1);
5757 inactive_labels.resize(index+1);
58 enabled.resize(index+1);
5859 }
5960
6061 titles[index] = title;
62 enabled[index] = true;
6163 }
6264
6365 /**
7476 */
7577 void WidgetTabControl::setActiveTab(unsigned tab) {
7678 if (tab > tabs.size())
77 active_tab = 0;
79 tab = 0;
7880 else if (tab == tabs.size())
79 active_tab = static_cast<unsigned>(tabs.size())-1;
80 else
81 active_tab = tab;
81 tab = static_cast<unsigned>(tabs.size()-1);
82
83 // Set the tab. If the specified tab is not enabled, get the first enabled tab.
84 for (unsigned i = tab; tab < tabs.size(); ++i) {
85 if (enabled[i]) {
86 active_tab = i;
87 return;
88 }
89 }
90 for (unsigned i = 0; i < tab; ++i) {
91 if (enabled[i]) {
92 active_tab = i;
93 return;
94 }
95 }
96
97 // no enabled tabs, just return what we started with
98 active_tab = tab;
8299 }
83100
84101 /**
95112 tabs_area.w = 0;
96113 tabs_area.h = getTabHeight();
97114
115 int x_offset = tabs_area.x;
116
98117 // update individual tabs
99118 for (unsigned i=0; i<tabs.size(); i++) {
100119 tabs[i].y = tabs_area.y;
101120 tabs[i].h = tabs_area.h;
102121
103 if (i==0) tabs[i].x = tabs_area.x;
104 else tabs[i].x = tabs[i-1].x + tabs[i-1].w;
122 tabs[i].x = x_offset;
105123
106124 active_labels[i].setPos(tabs[i].x + eset->widgets.tab_padding.x, tabs[i].y + tabs[i].h/2 + eset->widgets.tab_padding.y);
107125 active_labels[i].setVAlign(LabelInfo::VALIGN_CENTER);
113131 inactive_labels[i].setText(titles[i]);
114132 inactive_labels[i].setColor(font->getColor(FontEngine::COLOR_WIDGET_DISABLED));
115133
116 tabs[i].w = active_labels[i].getBounds()->w + (eset->widgets.tab_padding.x * 2);
117 tabs_area.w += tabs[i].w;
118 }
134 if (enabled[i]) {
135 tabs[i].w = active_labels[i].getBounds()->w + (eset->widgets.tab_padding.x * 2);
136 tabs_area.w += tabs[i].w;
137 x_offset += tabs[i].w;
138 }
139 }
140
141 if (!enabled[active_tab])
142 getNext();
119143 }
120144
121145 /**
151175 if(Utils::isWithinRect(tabs_area, mouse) && inpt->pressing[Input::MAIN1]) {
152176 // Mark the clicked tab as active_tab.
153177 for (unsigned i=0; i<tabs.size(); i++) {
154 if(Utils::isWithinRect(tabs[i], mouse)) {
178 if(Utils::isWithinRect(tabs[i], mouse) && enabled[i]) {
155179 active_tab = i;
156180 return;
157181 }
187211 * Renders the given tab on the widget header.
188212 */
189213 void WidgetTabControl::renderTab(unsigned number) {
214 if (!enabled[number])
215 return;
216
190217 unsigned i = number;
191218 Rect src;
192219 Rect dest;
264291 }
265292
266293 bool WidgetTabControl::getNext() {
267 setActiveTab(++active_tab);
294 setActiveTab(getNextEnabledTab(active_tab));
268295 return true;
269296 }
270297
271298 bool WidgetTabControl::getPrev() {
272 setActiveTab(--active_tab);
299 setActiveTab(getPrevEnabledTab(active_tab));
273300 return true;
301 }
302
303 unsigned WidgetTabControl::getNextEnabledTab(unsigned tab) {
304 for (unsigned i = tab+1; i < tabs.size(); ++i) {
305 if (enabled[i])
306 return i;
307 }
308 return tab;
309 }
310
311 unsigned WidgetTabControl::getPrevEnabledTab(unsigned tab) {
312 for (unsigned i = tab-1; i < tabs.size(); i--) {
313 if (enabled[i])
314 return i;
315 }
316 return tab;
274317 }
275318
276319 int WidgetTabControl::getTabHeight() {
277320 return (active_tab_surface ? active_tab_surface->getGraphicsHeight() : 0);
278321 }
322
323 void WidgetTabControl::setEnabled(unsigned index, bool val) {
324 if (index >= enabled.size())
325 return;
326
327 enabled[index] = val;
328 }
2828 void loadGraphics();
2929 void renderTab(unsigned number);
3030
31 unsigned getNextEnabledTab(unsigned tab);
32 unsigned getPrevEnabledTab(unsigned tab);
33
3134 Sprite *active_tab_surface;
3235 Sprite *inactive_tab_surface;
3336
3538 std::vector<Rect> tabs; // Rectangles for each tab title on the tab header.
3639 std::vector<WidgetLabel> active_labels;
3740 std::vector<WidgetLabel> inactive_labels;
41 std::vector<bool> enabled;
3842
3943
4044 unsigned active_tab; // Index of the currently active tab.
5357
5458 int getTabHeight();
5559
60 void setEnabled(unsigned index, bool val);
61
5662 void logic();
5763 void logic(int x, int y);
5864 void render();
3030 #include "Utils.h"
3131 #include "WidgetTooltip.h"
3232
33 WidgetTooltip::WidgetTooltip() {
34 background = render_device->loadImage("images/menus/tooltips.png", RenderDevice::ERROR_NONE);
35 sprite_buf = NULL;
33 WidgetTooltip::WidgetTooltip()
34 : parent(NULL)
35 , background(render_device->loadImage("images/menus/tooltips.png", RenderDevice::ERROR_NONE))
36 , sprite_buf(NULL)
37 {
3638 }
3739
3840 WidgetTooltip::~WidgetTooltip() {
4749 * calculate the starting position of the background and text
4850 */
4951 Point WidgetTooltip::calcPosition(uint8_t style, const Point& pos, const Point& size) {
50
5152 Point tip_pos;
5253
5354 // TopLabel style is fixed and centered over the origin
6162 else if (style == TooltipData::STYLE_FLOAT) {
6263 // upper left
6364 if (pos.x < settings->view_w_half && pos.y < settings->view_h_half) {
64 tip_pos.x = pos.x + eset->tooltips.offset;
65 if (parent)
66 tip_pos.x = parent->bounds.x + parent->bounds.w;
67 else
68 tip_pos.x = pos.x + eset->tooltips.offset;
69
6570 tip_pos.y = pos.y + eset->tooltips.offset;
6671 }
6772 // upper right
6873 else if (pos.x >= settings->view_w_half && pos.y < settings->view_h_half) {
69 tip_pos.x = pos.x - eset->tooltips.offset - size.x;
74 if (parent)
75 tip_pos.x = parent->bounds.x - size.x;
76 else
77 tip_pos.x = pos.x - eset->tooltips.offset - size.x;
78
7079 tip_pos.y = pos.y + eset->tooltips.offset;
7180 }
7281 // lower left
7382 else if (pos.x < settings->view_w_half && pos.y >= settings->view_h_half) {
74 tip_pos.x = pos.x + eset->tooltips.offset;
83 if (parent)
84 tip_pos.x = parent->bounds.x + parent->bounds.w;
85 else
86 tip_pos.x = pos.x + eset->tooltips.offset;
87
7588 tip_pos.y = pos.y - eset->tooltips.offset - size.y;
7689 }
7790 // lower right
7891 else if (pos.x >= settings->view_w_half && pos.y >= settings->view_h_half) {
79 tip_pos.x = pos.x - eset->tooltips.offset - size.x;
92 if (parent)
93 tip_pos.x = parent->bounds.x - size.x;
94 else
95 tip_pos.x = pos.x - eset->tooltips.offset - size.x;
96
8097 tip_pos.y = pos.y - eset->tooltips.offset - size.y;
8198 }
8299
83100 // very large tooltips might still be off screen at this point
84101 // so we try to constrain them to the screen bounds
85102 // we give priority to being able to read the top-left of the tooltip over the bottom-right
86 if (tip_pos.x + size.x > settings->view_w) tip_pos.x = settings->view_w - size.x;
87 if (tip_pos.y + size.y > settings->view_h) tip_pos.y = settings->view_h - size.y;
88 if (tip_pos.x < 0) tip_pos.x = 0;
89 if (tip_pos.y < 0) tip_pos.y = 0;
103 // EXCEPTION: If the tooltip is a child of another, we don't constrain the x-axis
104 if (tip_pos.x + size.x > settings->view_w && !parent)
105 tip_pos.x = settings->view_w - size.x;
106
107 if (tip_pos.y + size.y > settings->view_h)
108 tip_pos.y = settings->view_h - size.y;
109
110 if (tip_pos.x < 0 && !parent)
111 tip_pos.x = 0;
112
113 if (tip_pos.y < 0)
114 tip_pos.y = 0;
90115 }
91116
92117 return tip_pos;
3838 bool createBuffer(TooltipData &tip);
3939
4040 Rect bounds;
41 WidgetTooltip *parent;
4142
4243 private:
4344 Image *background;
1414 FLARE. If not, see http://www.gnu.org/licenses/
1515 */
1616
17 #ifdef FLARE_MAP_SAVER
18
1719 #include "MapSaver.h"
1820 #include "Settings.h"
1921
2022 MapSaver::MapSaver(Map *_map) : map(_map)
2123 {
22 EVENT_COMPONENT_NAME[EC_TOOLTIP] = "tooltip";
23 EVENT_COMPONENT_NAME[EC_POWER_PATH] = "power_path";
24 EVENT_COMPONENT_NAME[EC_POWER_DAMAGE] = "power_damage";
25 EVENT_COMPONENT_NAME[EC_INTERMAP] = "intermap";
26 EVENT_COMPONENT_NAME[EC_INTRAMAP] = "intramap";
27 EVENT_COMPONENT_NAME[EC_MAPMOD] = "mapmod";
28 EVENT_COMPONENT_NAME[EC_SOUNDFX] = "soundfx";
29 EVENT_COMPONENT_NAME[EC_LOOT] = "loot"; // HALF-IMPLEMENTED
30 EVENT_COMPONENT_NAME[EC_LOOT_COUNT] = "loot_count"; // UNIMPLEMENTED
31 EVENT_COMPONENT_NAME[EC_MSG] = "msg";
32 EVENT_COMPONENT_NAME[EC_SHAKYCAM] = "shakycam";
33 EVENT_COMPONENT_NAME[EC_REQUIRES_STATUS] = "requires_status";
34 EVENT_COMPONENT_NAME[EC_REQUIRES_NOT_STATUS] = "requires_not_status";
35 EVENT_COMPONENT_NAME[EC_REQUIRES_LEVEL] = "requires_level";
36 EVENT_COMPONENT_NAME[EC_REQUIRES_NOT_LEVEL] = "requires_not_level";
37 EVENT_COMPONENT_NAME[EC_REQUIRES_CURRENCY] = "requires_currency";
38 EVENT_COMPONENT_NAME[EC_REQUIRES_NOT_CURRENCY] = "requires_not_currency";
39 EVENT_COMPONENT_NAME[EC_REQUIRES_ITEM] = "requires_item";
40 EVENT_COMPONENT_NAME[EC_REQUIRES_NOT_ITEM] = "requires_not_item";
41 EVENT_COMPONENT_NAME[EC_REQUIRES_CLASS] = "requires_class";
42 EVENT_COMPONENT_NAME[EC_REQUIRES_NOT_CLASS] = "requires_not_class";
43 EVENT_COMPONENT_NAME[EC_SET_STATUS] = "set_status";
44 EVENT_COMPONENT_NAME[EC_UNSET_STATUS] = "unset_status";
45 EVENT_COMPONENT_NAME[EC_REMOVE_CURRENCY] = "remove_currency";
46 EVENT_COMPONENT_NAME[EC_REMOVE_ITEM] = "remove_item";
47 EVENT_COMPONENT_NAME[EC_REWARD_XP] = "reward_xp";
48 EVENT_COMPONENT_NAME[EC_REWARD_CURRENCY] = "reward_currency";
49 EVENT_COMPONENT_NAME[EC_REWARD_ITEM] = "reward_item";
50 EVENT_COMPONENT_NAME[EC_RESTORE] = "restore";
51 EVENT_COMPONENT_NAME[EC_POWER] = "power";
52 EVENT_COMPONENT_NAME[EC_SPAWN] = "spawn";
53 EVENT_COMPONENT_NAME[EC_STASH] = "stash";
54 EVENT_COMPONENT_NAME[EC_NPC] = "npc";
55 EVENT_COMPONENT_NAME[EC_MUSIC] = "music";
56 EVENT_COMPONENT_NAME[EC_CUTSCENE] = "cutscene";
57 EVENT_COMPONENT_NAME[EC_REPEAT] = "repeat";
58 EVENT_COMPONENT_NAME[EC_SAVE_GAME] = "save_game";
59 EVENT_COMPONENT_NAME[EC_BOOK] = "book";
24 EVENT_COMPONENT_NAME[EC::TOOLTIP] = "tooltip";
25 EVENT_COMPONENT_NAME[EC::POWER_PATH] = "power_path";
26 EVENT_COMPONENT_NAME[EC::POWER_DAMAGE] = "power_damage";
27 EVENT_COMPONENT_NAME[EC::INTERMAP] = "intermap";
28 EVENT_COMPONENT_NAME[EC::INTRAMAP] = "intramap";
29 EVENT_COMPONENT_NAME[EC::MAPMOD] = "mapmod";
30 EVENT_COMPONENT_NAME[EC::SOUNDFX] = "soundfx";
31 EVENT_COMPONENT_NAME[EC::LOOT] = "loot"; // HALF-IMPLEMENTED
32 EVENT_COMPONENT_NAME[EC::LOOT_COUNT] = "loot_count"; // UNIMPLEMENTED
33 EVENT_COMPONENT_NAME[EC::MSG] = "msg";
34 EVENT_COMPONENT_NAME[EC::SHAKYCAM] = "shakycam";
35 EVENT_COMPONENT_NAME[EC::REQUIRES_STATUS] = "requires_status";
36 EVENT_COMPONENT_NAME[EC::REQUIRES_NOT_STATUS] = "requires_not_status";
37 EVENT_COMPONENT_NAME[EC::REQUIRES_LEVEL] = "requires_level";
38 EVENT_COMPONENT_NAME[EC::REQUIRES_NOT_LEVEL] = "requires_not_level";
39 EVENT_COMPONENT_NAME[EC::REQUIRES_CURRENCY] = "requires_currency";
40 EVENT_COMPONENT_NAME[EC::REQUIRES_NOT_CURRENCY] = "requires_not_currency";
41 EVENT_COMPONENT_NAME[EC::REQUIRES_ITEM] = "requires_item";
42 EVENT_COMPONENT_NAME[EC::REQUIRES_NOT_ITEM] = "requires_not_item";
43 EVENT_COMPONENT_NAME[EC::REQUIRES_CLASS] = "requires_class";
44 EVENT_COMPONENT_NAME[EC::REQUIRES_NOT_CLASS] = "requires_not_class";
45 EVENT_COMPONENT_NAME[EC::SET_STATUS] = "set_status";
46 EVENT_COMPONENT_NAME[EC::UNSET_STATUS] = "unset_status";
47 EVENT_COMPONENT_NAME[EC::REMOVE_CURRENCY] = "remove_currency";
48 EVENT_COMPONENT_NAME[EC::REMOVE_ITEM] = "remove_item";
49 EVENT_COMPONENT_NAME[EC::REWARD_XP] = "reward_xp";
50 EVENT_COMPONENT_NAME[EC::REWARD_CURRENCY] = "reward_currency";
51 EVENT_COMPONENT_NAME[EC::REWARD_ITEM] = "reward_item";
52 EVENT_COMPONENT_NAME[EC::RESTORE] = "restore";
53 EVENT_COMPONENT_NAME[EC::POWER] = "power";
54 EVENT_COMPONENT_NAME[EC::SPAWN] = "spawn";
55 EVENT_COMPONENT_NAME[EC::STASH] = "stash";
56 EVENT_COMPONENT_NAME[EC::NPC] = "npc";
57 EVENT_COMPONENT_NAME[EC::MUSIC] = "music";
58 EVENT_COMPONENT_NAME[EC::CUTSCENE] = "cutscene";
59 EVENT_COMPONENT_NAME[EC::REPEAT] = "repeat";
60 EVENT_COMPONENT_NAME[EC::SAVE_GAME] = "save_game";
61 EVENT_COMPONENT_NAME[EC::BOOK] = "book";
62 EVENT_COMPONENT_NAME[EC::SCRIPT] = "script";
63 EVENT_COMPONENT_NAME[EC::CHANCE_EXEC] = "chance_exec";
64 EVENT_COMPONENT_NAME[EC::RESPEC] = "respec";
6065
6166 dest_file = map->getFilename();
6267 }
360365 {
361366 Event_Component e = components[i];
362367
363 if (e.type > 0 && e.type < 39)
368 if (e.type > 0 && e.type < EC_COUNT)
364369 {
365370 map_file << EVENT_COMPONENT_NAME[e.type] << "=";
366371 }
369374 continue;
370375 }
371376
372 if (e.type == EC_TOOLTIP) {
373 map_file << e.s << std::endl;
374 }
375 else if (e.type == EC_POWER_PATH) {
377 if (e.type == EC::TOOLTIP) {
378 map_file << e.s << std::endl;
379 }
380 else if (e.type == EC::POWER_PATH) {
376381 map_file << e.x << "," << e.y << ",";
377382 if (e.s == "hero")
378383 {
383388 map_file << e.a << "," << e.b << std::endl;
384389 }
385390 }
386 else if (e.type == EC_POWER_DAMAGE) {
391 else if (e.type == EC::POWER_DAMAGE) {
387392 map_file << e.a << "," << e.b << std::endl;
388393 }
389 else if (e.type == EC_INTERMAP) {
394 else if (e.type == EC::INTERMAP) {
390395 map_file << e.s << "," << e.x << "," << e.y << std::endl;
391396 }
392 else if (e.type == EC_INTRAMAP) {
397 else if (e.type == EC::INTRAMAP) {
393398 map_file << e.x << "," << e.y << std::endl;
394399 }
395 else if (e.type == EC_MAPMOD) {
400 else if (e.type == EC::MAPMOD) {
396401 map_file << e.s << "," << e.x << "," << e.y << "," << e.z;
397402
398 while (i+1 < components.size() && components[i+1].type == EC_MAPMOD)
403 while (i+1 < components.size() && components[i+1].type == EC::MAPMOD)
399404 {
400405 i++;
401406 e = components[i];
403408 }
404409 map_file << std::endl;
405410 }
406 else if (e.type == EC_SOUNDFX) {
411 else if (e.type == EC::SOUNDFX) {
407412 map_file << e.s;
408413 if (e.x != -1 && e.y != -1)
409414 {
411416 }
412417 map_file << std::endl;
413418 }
414 else if (e.type == EC_LOOT) {
419 else if (e.type == EC::LOOT) {
415420
416421 std::stringstream chance;
417422
422427
423428 map_file << e.s << "," << chance.str() << "," << e.a << "," << e.b;
424429
425 while (i+1 < components.size() && components[i+1].type == EC_LOOT)
430 while (i+1 < components.size() && components[i+1].type == EC::LOOT)
426431 {
427432 i++;
428433 e = components[i];
438443 // UNIMPLEMENTED
439444 // Loot tables not supported
440445 }
441 else if (e.type == EC_LOOT_COUNT) {
446 else if (e.type == EC::LOOT_COUNT) {
442447 // UNIMPLEMENTED
443448 // Loot count not supported
444449 map_file << std::endl;
445450 }
446 else if (e.type == EC_MSG) {
447 map_file << e.s << std::endl;
448 }
449 else if (e.type == EC_SHAKYCAM) {
451 else if (e.type == EC::MSG) {
452 map_file << e.s << std::endl;
453 }
454 else if (e.type == EC::SHAKYCAM) {
450455 std::string suffix = "ms";
451456 int value = static_cast<int>(1000.f * e.x / MAX_FRAMES_PER_SEC);
452457 if (value % 1000 == 0)
456461 }
457462 map_file << value << suffix << std::endl;
458463 }
459 else if (e.type == EC_REQUIRES_STATUS) {
464 else if (e.type == EC::REQUIRES_STATUS) {
460465 map_file << e.s;
461466
462 while (i+1 < components.size() && components[i+1].type == EC_REQUIRES_STATUS)
467 while (i+1 < components.size() && components[i+1].type == EC::REQUIRES_STATUS)
463468 {
464469 i++;
465470 e = components[i];
467472 }
468473 map_file << std::endl;
469474 }
470 else if (e.type == EC_REQUIRES_NOT_STATUS) {
475 else if (e.type == EC::REQUIRES_NOT_STATUS) {
471476 map_file << e.s;
472477
473 while (i+1 < components.size() && components[i+1].type == EC_REQUIRES_NOT_STATUS)
478 while (i+1 < components.size() && components[i+1].type == EC::REQUIRES_NOT_STATUS)
474479 {
475480 i++;
476481 e = components[i];
478483 }
479484 map_file << std::endl;
480485 }
481 else if (e.type == EC_REQUIRES_LEVEL) {
482 map_file << e.x << std::endl;
483 }
484 else if (e.type == EC_REQUIRES_NOT_LEVEL) {
485 map_file << e.x << std::endl;
486 }
487 else if (e.type == EC_REQUIRES_CURRENCY) {
488 map_file << e.x << std::endl;
489 }
490 else if (e.type == EC_REQUIRES_NOT_CURRENCY) {
491 map_file << e.x << std::endl;
492 }
493 else if (e.type == EC_REQUIRES_ITEM) {
486 else if (e.type == EC::REQUIRES_LEVEL) {
487 map_file << e.x << std::endl;
488 }
489 else if (e.type == EC::REQUIRES_NOT_LEVEL) {
490 map_file << e.x << std::endl;
491 }
492 else if (e.type == EC::REQUIRES_CURRENCY) {
493 map_file << e.x << std::endl;
494 }
495 else if (e.type == EC::REQUIRES_NOT_CURRENCY) {
496 map_file << e.x << std::endl;
497 }
498 else if (e.type == EC::REQUIRES_ITEM) {
494499 map_file << e.x;
495500
496 while (i+1 < components.size() && components[i+1].type == EC_REQUIRES_ITEM)
501 while (i+1 < components.size() && components[i+1].type == EC::REQUIRES_ITEM)
497502 {
498503 i++;
499504 e = components[i];
501506 }
502507 map_file << std::endl;
503508 }
504 else if (e.type == EC_REQUIRES_NOT_ITEM) {
509 else if (e.type == EC::REQUIRES_NOT_ITEM) {
505510 map_file << e.x;
506511
507 while (i+1 < components.size() && components[i+1].type == EC_REQUIRES_NOT_ITEM)
512 while (i+1 < components.size() && components[i+1].type == EC::REQUIRES_NOT_ITEM)
508513 {
509514 i++;
510515 e = components[i];
512517 }
513518 map_file << std::endl;
514519 }
515 else if (e.type == EC_REQUIRES_CLASS) {
516 map_file << e.s << std::endl;
517 }
518 else if (e.type == EC_REQUIRES_NOT_CLASS) {
519 map_file << e.s << std::endl;
520 }
521 else if (e.type == EC_SET_STATUS) {
520 else if (e.type == EC::REQUIRES_CLASS) {
521 map_file << e.s << std::endl;
522 }
523 else if (e.type == EC::REQUIRES_NOT_CLASS) {
524 map_file << e.s << std::endl;
525 }
526 else if (e.type == EC::SET_STATUS) {
522527 map_file << e.s;
523528
524 while (i+1 < components.size() && components[i+1].type == EC_SET_STATUS)
529 while (i+1 < components.size() && components[i+1].type == EC::SET_STATUS)
525530 {
526531 i++;
527532 e = components[i];
529534 }
530535 map_file << std::endl;
531536 }
532 else if (e.type == EC_UNSET_STATUS) {
537 else if (e.type == EC::UNSET_STATUS) {
533538 map_file << e.s;
534539
535 while (i+1 < components.size() && components[i+1].type == EC_UNSET_STATUS)
540 while (i+1 < components.size() && components[i+1].type == EC::UNSET_STATUS)
536541 {
537542 i++;
538543 e = components[i];
540545 }
541546 map_file << std::endl;
542547 }
543 else if (e.type == EC_REMOVE_CURRENCY) {
544 map_file << e.x << std::endl;
545 }
546 else if (e.type == EC_REMOVE_ITEM) {
548 else if (e.type == EC::REMOVE_CURRENCY) {
549 map_file << e.x << std::endl;
550 }
551 else if (e.type == EC::REMOVE_ITEM) {
547552 map_file << e.x;
548553
549 while (i+1 < components.size() && components[i+1].type == EC_REMOVE_ITEM)
554 while (i+1 < components.size() && components[i+1].type == EC::REMOVE_ITEM)
550555 {
551556 i++;
552557 e = components[i];
554559 }
555560 map_file << std::endl;
556561 }
557 else if (e.type == EC_REWARD_XP) {
558 map_file << e.x << std::endl;
559 }
560 else if (e.type == EC_REWARD_CURRENCY) {
561 map_file << e.x << std::endl;
562 }
563 else if (e.type == EC_REWARD_ITEM) {
562 else if (e.type == EC::REWARD_XP) {
563 map_file << e.x << std::endl;
564 }
565 else if (e.type == EC::REWARD_CURRENCY) {
566 map_file << e.x << std::endl;
567 }
568 else if (e.type == EC::REWARD_ITEM) {
564569 map_file << e.x << ",";
565570 map_file << e.y << std::endl;
566571 }
567 else if (e.type == EC_RESTORE) {
568 map_file << e.s << std::endl;
569 }
570 else if (e.type == EC_POWER) {
571 map_file << e.x << std::endl;
572 }
573 else if (e.type == EC_SPAWN) {
572 else if (e.type == EC::RESTORE) {
573 map_file << e.s << std::endl;
574 }
575 else if (e.type == EC::POWER) {
576 map_file << e.x << std::endl;
577 }
578 else if (e.type == EC::SPAWN) {
574579 map_file << e.s << "," << e.x << "," << e.y;
575580
576 while (i+1 < components.size() && components[i+1].type == EC_SPAWN)
581 while (i+1 < components.size() && components[i+1].type == EC::SPAWN)
577582 {
578583 i++;
579584 e = components[i];
581586 }
582587 map_file << std::endl;
583588 }
584 else if (e.type == EC_STASH) {
585 map_file << e.s << std::endl;
586 }
587 else if (e.type == EC_NPC) {
588 map_file << e.s << std::endl;
589 }
590 else if (e.type == EC_MUSIC) {
591 map_file << e.s << std::endl;
592 }
593 else if (e.type == EC_CUTSCENE) {
594 map_file << e.s << std::endl;
595 }
596 else if (e.type == EC_REPEAT) {
597 map_file << e.s << std::endl;
598 }
599 else if (e.type == EC_SAVE_GAME) {
600 map_file << e.s << std::endl;
601 }
602 else if (e.type == EC_BOOK) {
603 map_file << e.s << std::endl;
604 }
589 else if (e.type == EC::STASH) {
590 map_file << e.s << std::endl;
591 }
592 else if (e.type == EC::NPC) {
593 map_file << e.s << std::endl;
594 }
595 else if (e.type == EC::MUSIC) {
596 map_file << e.s << std::endl;
597 }
598 else if (e.type == EC::CUTSCENE) {
599 map_file << e.s << std::endl;
600 }
601 else if (e.type == EC::REPEAT) {
602 map_file << e.s << std::endl;
603 }
604 else if (e.type == EC::SAVE_GAME) {
605 map_file << e.s << std::endl;
606 }
607 else if (e.type == EC::BOOK) {
608 map_file << e.s << std::endl;
609 }
610 else if (e.type == EC::SCRIPT) {
611 map_file << e.s << std::endl;
612 }
613 else if (e.type == EC::CHANCE_EXEC) {
614 map_file << e.x << std::endl;
615 }
616 else if (e.type == EC::RESPEC) {
617 if (e.x == 3)
618 map_file << "xp";
619 else if (e.x == 2)
620 map_file << "stats";
621 else if (e.x == 1)
622 map_file << "powers";
623
624 map_file << "," << e.y << endl;
605625 }
606626 }
627
628 #endif //FLARE_MAP_SAVER
629
1717 /*
1818 * class MapSaver
1919 */
20
21 #ifdef FLARE_MAP_SAVER
2022
2123 #ifndef MAP_SAVER_H
2224 #define MAP_SAVER_H
4345 Map* map;
4446 std::string dest_file;
4547
46 std::string EVENT_COMPONENT_NAME[39];
48 static const int EC_COUNT = 43;
49
50 std::string EVENT_COMPONENT_NAME[EC_COUNT];
51
52 class EC {
53 public:
54 enum {
55 NONE = 0,
56 TOOLTIP = 1,
57 POWER_PATH = 2,
58 POWER_DAMAGE = 3,
59 INTERMAP = 4,
60 INTRAMAP = 5,
61 MAPMOD = 6,
62 SOUNDFX = 7,
63 LOOT = 8,
64 LOOT_COUNT = 9,
65 MSG = 10,
66 SHAKYCAM = 11,
67 REQUIRES_STATUS = 12,
68 REQUIRES_NOT_STATUS = 13,
69 REQUIRES_LEVEL = 14,
70 REQUIRES_NOT_LEVEL = 15,
71 REQUIRES_CURRENCY = 16,
72 REQUIRES_NOT_CURRENCY = 17,
73 REQUIRES_ITEM = 18,
74 REQUIRES_NOT_ITEM = 19,
75 REQUIRES_CLASS = 20,
76 REQUIRES_NOT_CLASS = 21,
77 SET_STATUS = 22,
78 UNSET_STATUS = 23,
79 REMOVE_CURRENCY = 24,
80 REMOVE_ITEM = 25,
81 REWARD_XP = 26,
82 REWARD_CURRENCY = 27,
83 REWARD_ITEM = 28,
84 REWARD_LOOT = 29,
85 REWARD_LOOT_COUNT = 30,
86 RESTORE = 31,
87 POWER = 32,
88 SPAWN = 33,
89 STASH = 34,
90 NPC = 35,
91 MUSIC = 36,
92 CUTSCENE = 37,
93 REPEAT = 38,
94 SAVE_GAME = 39,
95 BOOK = 40,
96 SCRIPT = 41,
97 CHANCE_EXEC = 42,
98 RESPEC = 43,
99 };
100
101 int type;
102 std::string s;
103 StatusID status;
104 int x;
105 int y;
106 int z;
107 int a;
108 int b;
109 int c;
110 float f;
111
112 EC()
113 : type(NONE)
114 , s("")
115 , status(0)
116 , x(0)
117 , y(0)
118 , z(0)
119 , a(0)
120 , b(0)
121 , c(0)
122 , f(0) {
123 }
124 };
125
47126 };
48127
49128 #endif //MAP_SAVER
129
130 #endif //FLARE_MAP_SAVER
8888 Utils::createLogFile();
8989 Utils::logInfo(VersionInfo::createVersionStringFull().c_str());
9090
91 // log common paths
92 Utils::logInfo("main: PATH_CONF = '%s'", settings->path_conf.c_str());
93 Utils::logInfo("main: PATH_USER = '%s'", settings->path_user.c_str());
94 Utils::logInfo("main: PATH_DATA = '%s'", settings->path_data.c_str());
95
9196 // SDL Inits
9297 if ( SDL_Init (SDL_INIT_VIDEO | SDL_INIT_AUDIO | SDL_INIT_JOYSTICK) < 0 ) {
9398 Utils::logError("main: Could not initialize SDL: %s", SDL_GetError());
117122 font = getFontEngine();
118123 anim = new AnimationManager();
119124 comb = new CombatText();
120 inpt = getInputManager();
121 icons = NULL;
122125
123126 // Load miscellaneous settings
124127 eset = new EngineSettings();
125128 eset->load();
129
130 inpt = getInputManager();
131 icons = NULL;
132
126133 Stats::init();
127134
128135 // platform-specific default screen size
129136 platform.setScreenSize();
130137
131138 // Create render Device and Rendering Context.
132 if (platform.default_renderer != "")
139 if (settings->safe_video)
140 render_device = getRenderDevice(settings->render_device_name);
141 else if (platform.default_renderer != "")
133142 render_device = getRenderDevice(platform.default_renderer);
134143 else if (cmd_line_args.render_device_name != "")
135144 render_device = getRenderDevice(cmd_line_args.render_device_name);
357366 settings->custom_path_data = std::string(getenv("HOME")) + "/" + path_end;
358367 }
359368
360 if (!settings->custom_path_data.empty() && settings->custom_path_data.at(settings->custom_path_data.length()-1) != '/')
361 settings->custom_path_data += "/";
369 if (!settings->custom_path_data.empty()) {
370 settings->custom_path_data = Filesystem::removeTrailingSlash(settings->custom_path_data);
371 }
362372
363373 if (Filesystem::pathExists(settings->custom_path_data)) {
364374 Utils::logInfo("Custom data path: \"%s\"", settings->custom_path_data.c_str());
375 settings->custom_path_data += "/";
365376 }
366377 else {
367378 Utils::logError("Invalid custom data path: \"%s\"", settings->custom_path_data.c_str());
369380 }
370381 }
371382 else if (arg == "version") {
372 printf("%s\n", VersionInfo::createVersionStringFull().c_str());
383 Utils::logInfo("%s", VersionInfo::createVersionStringFull().c_str());
373384 done = true;
374385 }
375386 else if (arg == "renderer") {
390401 else if (arg == "load-script") {
391402 settings->load_script = parseArgValue(arg_full);
392403 }
404 else if (arg == "safe-video") {
405 settings->safe_video = true;
406 }
393407 else if (arg == "help") {
394 printf("\
408 Utils::logInfo("Command line options:\n\
395409 --help Prints this message.\n\
396410 --version Prints the release version.\n\
397411 --data-path=<PATH> Specifies an exact path to look for mod data.\n\
402416 --mods=<MOD>,... Starts the game with only these mods enabled.\n\
403417 --load-slot=<SLOT> Loads a save slot by numerical index.\n\
404418 --load-script=<SCRIPT> Execute's a script upon loading a saved game.\n\
405 The script path is mod-relative.\n");
419 The script path is mod-relative.\n\
420 --safe-video Launches with the minimum video settings.");
406421 done = true;
407422 }
408423 else {
415430 srand(static_cast<unsigned int>(time(NULL)));
416431 #ifdef __EMSCRIPTEN__
417432 platform.FSInit();
418 emscripten_set_main_loop(EmscriptenMainLoop, 0, 1);
433 emscripten_set_main_loop(EmscriptenMainLoop, settings->max_frames_per_sec, 1);
419434 #else
420435 init(cmd_line_args);
421436
0 <?xml version="1.0"?>
1 <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
2
3 <xsl:template name="escape_underscore">
4 <xsl:param name="text" />
5 <xsl:choose>
6 <xsl:when test="contains($text, '_')">
7 <xsl:value-of select="substring-before($text,'_')" />
8 <xsl:value-of select="'\_'" />
9 <xsl:call-template name="escape_underscore">
10 <xsl:with-param name="text" select="substring-after($text,'_')" />
11 </xsl:call-template>
12 </xsl:when>
13 <xsl:otherwise>
14 <xsl:value-of select="$text" />
15 </xsl:otherwise>
16 </xsl:choose>
17 </xsl:template>
18
19 <xsl:template match="/classes">
20 <xsl:for-each select="class">
21 <xsl:text>&#xa;</xsl:text>
22 <xsl:variable name="class-name">
23 <xsl:call-template name="escape_underscore">
24 <xsl:with-param name="text" select="@name" />
25 </xsl:call-template>
26 </xsl:variable>
27 <xsl:variable name="class-desc">
28 <xsl:call-template name="escape_underscore">
29 <xsl:with-param name="text" select="description" />
30 </xsl:call-template>
31 </xsl:variable>
32 <xsl:if test="attributes/attribute">
33 ***
34 #### <xsl:value-of select="$class-name"/>
35 <xsl:text>&#xa;</xsl:text>
36 <xsl:value-of select="$class-desc"/>
37 <xsl:text>&#xa;</xsl:text>
38 </xsl:if>
39 <xsl:for-each select="attributes/attribute">
40 <xsl:variable name="attr-name">
41 <xsl:call-template name="escape_underscore">
42 <xsl:with-param name="text" select="@name" />
43 </xsl:call-template>
44 </xsl:variable>
45 <xsl:variable name="attr-type">
46 <!-- Don't need to escape this because we put it in code tags -->
47 <xsl:value-of select="@type"/>
48 </xsl:variable>
49 <xsl:variable name="attr-vars">
50 <!-- Don't need to escape this because we put it in code tags -->
51 <xsl:value-of select="@vars"/>
52 </xsl:variable>
53 <xsl:variable name="attr-desc">
54 <xsl:call-template name="escape_underscore">
55 <xsl:with-param name="text" select="." />
56 </xsl:call-template>
57 </xsl:variable>
58 **<xsl:value-of select="$attr-name"/>** | `<xsl:value-of select="$attr-type"/><xsl:if test="$attr-vars != ''"> : <xsl:value-of select="$attr-vars"/></xsl:if>` | <xsl:value-of select="$attr-desc"/>
59 <xsl:text>&#xa;</xsl:text>
60 </xsl:for-each>
61 <xsl:text>&#xa;</xsl:text>
62 </xsl:for-each>
63 ***
64 ### Predefined Strings
65 <xsl:text>&#xa;</xsl:text>
66 Below are some strings that are used in various attributes.
67 <xsl:for-each select="class">
68 <xsl:text>&#xa;</xsl:text>
69 <xsl:variable name="class-name">
70 <xsl:call-template name="escape_underscore">
71 <xsl:with-param name="text" select="@name" />
72 </xsl:call-template>
73 </xsl:variable>
74 <xsl:variable name="class-desc">
75 <xsl:call-template name="escape_underscore">
76 <xsl:with-param name="text" select="description" />
77 </xsl:call-template>
78 </xsl:variable>
79 <xsl:if test="attributes/type">
80 ***
81 #### <xsl:value-of select="$class-name"/>
82 <xsl:text>&#xa;</xsl:text>
83 <xsl:value-of select="$class-desc"/>
84 <xsl:text>&#xa;</xsl:text>
85 </xsl:if>
86 <xsl:for-each select="attributes/type">
87 <xsl:variable name="type-name">
88 <xsl:call-template name="escape_underscore">
89 <xsl:with-param name="text" select="@name" />
90 </xsl:call-template>
91 </xsl:variable>
92 <xsl:variable name="type-desc">
93 <xsl:call-template name="escape_underscore">
94 <xsl:with-param name="text" select="." />
95 </xsl:call-template>
96 </xsl:variable>
97 **<xsl:value-of select="$type-name"/>** | <xsl:value-of select="$type-desc"/>
98 <xsl:text>&#xa;</xsl:text>
99 </xsl:for-each>
100 <xsl:text>&#xa;</xsl:text>
101 </xsl:for-each>
102 <xsl:text>&#xa;</xsl:text>
103 </xsl:template>
104
105 </xsl:stylesheet>
106