Codebase list flare-engine / 603f4a9
Update upstream source from tag 'upstream/1.12' Update to upstream version '1.12' with Debian dir eac5ad10d3bdf299a718043bc6b2e534ff48cddf Martin Quinson 2 years ago
294 changed file(s) with 59786 addition(s) and 42864 deletion(s). Raw diff Collapse all Expand all
11 cmake_minimum_required (VERSION 2.6)
22
33 Set (PACKAGE "FLARE")
4 Set (VERSION "1.09.01")
4 Set (VERSION "1.12")
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
3941
4042 Translations
4143
42 (be) Belarussian by Mikhail Karalevich
44 (be) Belarussian by Mikhail Karalevich and Źmicier Turok
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_, Christophe Nemo, and Bafy
5153 (gd) Scottish Gaelic by GunChleoc
5254 (gl) Galacian by Adrian Chaves Fernandez (Gallaecio)
55 (hu) Hungarian by bzt
56 (id) Indonesian by Kirim Saja
5357 (it) Italian by Giovanni Dalla Torre, Gianfranco Del Borrello, Stefano Peris, Andrea Ranaldi, MOB2, and Fabio Loli
58 (ko) Korean by bnk159hair
5459 (ja) Japanese by Paul Wortmann, sujiniku
55 (nb) Norwegian Bokmal by Hans Joachim Desserud
60 (nb) Norwegian Bokmal by Hans Joachim Desserud, Elias Nykrem
5661 (nl) Dutch by Bas Doodeman
57 (pl) Polish by Paweł Puszczyński
62 (pl) Polish by Paweł Puszczyński, Błażej Pęksyk, and Grzegorz Szymaszek
5863 (pt) Portuguese by Rui
59 (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 (pt_BR) Brazilian Portuguese by Vicente Monteiro and Rafael Fontenelle
65 (ru) Russian by Sergey Basalaev, Evgen Pavlov, Ademaro, Andrey Kapitonov, and David Bell
66 (sk) Slovak by Miro Jánošík, MiroslavR
6267 (sv) Swedish by Andreas Berheim Brudin
6368 (uk) Ukrainian by Igor Paliychuk, Denis Lysenko, Микола Франчук, Sergiy Borodych
6469 (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
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', 'visible_check_locked', and 'visible_check_status' 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 * Added support for the 'delay' property used by Events contained in script files.
40 * Added 'Frame Limit' option to Video settings.
41 * Added 'Maximum Render Size' option to Video settings.
42 * Improved visual indication of which item set bonuses are active.
43 * Support enabling touch screen controls on non-Android systems.
44 * Added 'Touch Gamepad Scale' option to Input settings.
45 * Support fullscreen mode in the Emscripten port.
46 * Added scrollbar.bg_color to engine/widget_settings.txt.
47 * Updates to package_osx.sh, including usage of Homebrew for dependencies (ludoza)
48
49 Engine fixes:
50
51 * Fix memory leak of tab control in stash menu (MiroslavR)
52 * 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.
53 * Fixed a bug where the game window could be resized below the minimum size after exiting fullscreen mode.
54 * Removed the default resolution scaling when virtual_heights is undefined.
55 * Improved performance when checking map event hotspots.
56 * Fix Windows-style paths with backslashes not working on non-Windows systems.
57 * Prevent allies counting as attack targets when using mouse movement.
58 * Fix needing to press the 'Cancel' key twice to exit the vendor menu.
59 * Fix unintended key presses being registered when quitting the game via an OS keyboard shortcut.
60 * Fix divide-by-zero crash when using the dev HUD with a game that uses orthogonal rendering.
61 * Fixed a memory leak in Loot copy constructor.
62 * Fixed 'resist_percent' property of engine/combat.txt not working when targets had 100% resistance.
63 * Support attack_speed effects with a magnitude less than 100%.
64 * Fixed bug where dead entities could steal HP/MP.
65 * Fix broken parsing of engine/default_keybindings.txt.
66 * Fix Effect animations not being synced properly in some cases.
67 * Removed hard-coded restrictions on using items from the inventory. Now any item that has a power and is not equipment can be used.
68 * Fix crash when fonts are missing. The engine will try to fall back to the next available font for the current language.
69 * Background color when using sdl_hardware renderer no longer fills entire window, instead only filling the drawing surface as it should.
70 * Fix crash when loading a cutscene from a book event.
71 * Fix infinite transformation loop when dying in a transformed state that was activated by a passive power.
72 * Fix bug where the player wasn't returned to their normal state after dying in a transformed state.
73 * Prevent combat text from overlapping.
74 * Improved performance when handling many status effects.
75 * Improved performance when an entity is repeatedly unable to find a path to thier target.
76 * Fix bug where killing an enemy with return damage would not set defeat status or reward XP/loot.
77 * Fix check of item requirements when a power requires an item but doesn't consume it.
78 * Fix 'respec' events to no longer remove item-based powers from the action bar.
79 * Fix log message when gaining more than one level at once.
80 * Fixed excessive memory usage when using Items, ItemSets, and Powers with high-value IDs.
81 * Fix bug where power upgrades that didn't require power points would not automatically upgrade if other requirements were met.
82 * Fix infinite loop bug when a power's list of upgrades contains the base power ID.
83 * Fix infinite loop bug when locking power upgrades.
84 * The executable directory is now used when trying to find PATH_DATA on Linux. (r-a-cristian-93)
85 * Fix 'corpse_timeout' in engine/misc.txt being parsed incorrectly (r-a-cristian-93)
86 * Reworked camera speed curve to prevent graphical "wiggle" during slow movement.
87 * Fix missing effect description text in power tooltips when using built-in types.
88 * Fix static events not executing on the same frame as on_load events.
89 * Fix parsing bug in power trees that would save base power properties to an upgrade power.
90 * Fix on_load events with requires_class not working in maps/spawn.txt
91 * Fix timing of Effects so that the first "tick" happens immediately.
92 * Fix "Press button to use" prompt no showing up for some items.
93 * Fix loud loot drop sound effect when there are a large number of drops at once.
94 * Fix incorrect HP/MP regen for high regen values and high frame limits.
95 * Fix camera, parallax layer, and cutscene speeds when using alternative frame limits.
96 * Fix not restoring fullscreen option when pressing Cancel or Defaults in config menu.
97 * Smoother scrolling in WidgetScrollBox.
98 * Fix click-and-drag behavior on WidgetTabControl, WidgetSlider, and WidgetScrollBar.
99 * Fix dialog topics being auto-selected when they shouldn't for non-vendor NPCs.
100
101 Game updates:
102
103 * New graphics for HP and MP status bars
104 * Reworked art for the Cleave power
105 * Cleave power radius reduced to closer match its artwork
106 * Reduced the strength and radius of Rakk's freeze attack
107 * Fixed the Goblin Thief being able to steal potions from a Summoned Zombie
108 * Reduced the hitbox for spike traps
109 * Greatly reduced the damage for spike traps. In exchange, the traps now inflict bleeding.
110 * New alchemy ingredient: Mushrooms
111 * Added 4 new potion recipes
112 * Overall reduced drop rates for alchemy items
113 * Added Alchemy quest
114 * Added animations for immunity and ice-based slow status effects
115 * Redesigned the Family Crypt map and quest
116 * Redesigned the Nazia Mines maps and quest
117 * Redesigned the Torture Chambers map and quest (again)
118 * Mortar & Pestle can now be placed on the action bar
119 * All quest items can be stored in the player's private stash.
120
121 Translation updates:
122
123 * Belarusian (be) update (Źmicier Turok)
124 * Catalan (ca) update (Maria Cano)
125 * German (de) update (Wuzzy2)
126 * Spanish (es) update (Agustin Ferrario)
127 * Basque (eu) by aitzkora
128 * French (fr) update (leø, Christophe Nemo, Bafy)
129 * Scottish Gaelic (gd) update (GunChleoc)
130 * Hungarian (hu) update (litoll)
131 * Indonesian (id) by Kirim Saja
132 * Korean (ko) by Kor_OfenTHource (team members: bnk159hair, kangdonghun1230, HunSeongPark and paparad0x)
133 * Norwegian (nb) update (Elias Nykrem)
134 * Polish (pl) update (Błażej Pęksyk, Grzegorz Szymaszek)
135 * Portuguese (pt) update (Rui)
136 * Portuguese (Brazilian) (pt_BR) update (Vicente Monteiro)
137 * Russian (ru) update (Igor Polyakov)
138 * Slovak (sk) update (MiroslavR)
139 * Ukranian (uk) update (Sergiy Borodych)
140 * Vietnamese (vi) update (Nguyễn Gia Phong)
141 * Chinese (zh) update (dumaosen, sakura09123)
142 * Chinese (Taiwan) (zh_TW) by RedBug312
143
144
145
146 Flare v1.11 (http://flarerpg.org/index.php/2019/07/27/flare-1-11/)
147
148 Engine features:
149
150 * Players now have their own private stash in addition to the shared stash.
151 * Expanded the 'no_stash' Item variable to account for having multiple stashes.
152
153 Engine fixes:
154
155 * Fix bug where items could be dragged from the vendor window and dropped in the opposite vendor tab.
156 * Fix bug that caused item max_quantity to be reset when attempting to append an item definition.
157 * Fix bug where Powers with 'replace_by_effect' would still use properties from the parent power, such as animation state.
158
159 Game updates:
160
161 * Items that couldn't be stashed in the last update can now be put in the private stash.
162 * Salted Field: moved chest to the south end of the map to prevent easy farming.
163
164 Translation updates:
165
166 * Belarusian (be) update (Zmicer Turok)
167 * German (de) update (Wuzzy2)
168 * Hungarian (hu) by bzt
169 * Ukranian (uk) update (Igor Paliychuk)
170
171
172
173 Flare v1.10 (http://flarerpg.org/index.php/2019/05/17/flare-1-10/)
174
175 Engine features:
176
177 * The configuration menu has been redesigned and is now used as the pause menu.
178 * The interface features from version 1.09 have been reverted due to being accessible from the pause menu.
179 * Added an Interface option to disable showing hidden entity markers.
180 * Support floating point values for loot drop chance values.
181 * Add 'hide_timeout' option to stat bar configuration to support auto-hiding. (Leszek Cimała)
182 * Added an Interface option to disable stat bar auto-hiding globally.
183 * Add 'no_stash' property to item definitions to prevent items from being placed in the stash.
184 * Add low HP notification system. (Leszek Cimała)
185 * Add ability to change the minimap zoom level by clicking on the minimap.
186
187 Engine fixes:
188
189 * Fixed event activation being tied to distance to the camera position. It is now correctly tied to distance from the player.
190 * Mouse movement and mouse aim now calculate direction relative to the player instead of relative to the screen.
191 * Fixed enemy AI so that enemies can now enter combat if a hero ally is in their proximity.
192 * Fix --data-path command line flag on Windows.
193 * Fixed dialog not being available if it lacked a topic.
194 * Fixed loot drop rate bonus having no effect when loot drop chance was too low.
195 * Fix bug where the wrong requirements were checked for passive powers that had been granted bonus points.
196 * Items that can't be stashed are now dropped on the ground upon opening the stash.
197 * Prevent re-binding the primary Main1 binding, which could break many interactions.
198 * Removed the ability to re-bind the Ctrl, Shift, Alt, and Delete keys, since they correspond to specific keyboard keys.
199 * Fix crash when trying to load a mod that contained 'engine/default_keybindings.txt'. (nwtour)
200 * Display XP stat bar value as relative to current level instead of total XP. (Leszek Cimała)
201 * Fix key bindings not working when switched to a non-US keyboard layout. (nwtour)
202 * Fix segfault when NPC filename is invalid.
203 * Fix inventory tooltips covering books when using no mouse.
204 * Fix navigation of dialog menu when using no mouse.
205 * Fix upgrading powers when using no mouse.
206 * 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.
207 * Fixed the "level up" string to represent the ability to allocate multiple stat points. Also note if Power points can be allocated.
208 * Refactored 'requires_hpmp_state' for Powers to check against both stats at once. See the attribute reference for syntax changes.
209 * Greatly improved performance of loot tooltips.
210 * Fix bug where high item find chance prevented the player from finding currency.
211
212 Game updates:
213
214 * Fixed an oversight that allowed easy farming of the Torture Chambers boss and loot chests.
215 * 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.
216 * Added new attack and interact cursors.
217 * Added sound effect and cursors for indicating low health.
218
219 Translation updates:
220
221 * Belarusian (be) update (Zmicer Turok)
222 * Brazilian Portuguese (pt_BR) update (Vinicius Rech)
223 * Catalan (ca) update (Marc Tormo i Bochaca)
224 * German (de) update (Fyrenic)
225 * Spanish (es) update (Agustin Ferrario)
226 * French (fr) update (syl_)
227 * Scottish Gaelic (gd) update (GunChleoc)
228 * Japanese (ja) update (sujiniku)
229 * Portuguese (pt) update (Rui)
230 * Russian (ru) update (Andrey Kapitonov, Igor Paliychuk, nwtour)
231 * Ukranian (uk) update (Igor Paliychuk)
232 * Chinese (zh) update (dumaosen, neverwin)
233
234
235
236 Flare v1.09.01 (http://flarerpg.org/index.php/2018/12/12/flare-1-09-01/)
1237
2238 Engine fixes:
3239
Binary diff not shown
1414 display:block
1515 }
1616
17 /* p#fullScreenButton { */
18 /* text-align: center; */
19 /* background-color: #FF890A; */
20 /* font-family: Sans-Serif; */
21 /* padding: 10px; */
22 /* user-select: none; */
23 /* cursor: pointer; */
24 /* color: #fff; */
25 /* } */
26
2717 #loadingDiv {
2818 text-align: center;
19 font-family: monospace;
20 font-weight: bold;
21 font-size: 150%;
2922 }
3023 </style>
3124 </head>
3427 <div id="loadingDiv">Loading...</div>
3528 <canvas class="emscripten" id="canvas" oncontextmenu="event.preventDefault()"></canvas>
3629 <div style="width:200px; margin-left:auto; margin-right:auto">
37 <!-- <p id="fullScreenButton" onclick="Module.requestFullscreen(false, false)">Click for full&#45;screen</p> -->
3830 </div>
3931
4032
4133
4234 <script type='text/javascript'>
35 var parentDocument = document;
36
4337 var Module = {
4438 onRuntimeInitialized: function() {
4539 var e = document.getElementById('loadingDiv');
4640 e.style.visibility = 'hidden';
41 },
42 setStatus: function(text) {
43 var e = document.getElementById('loadingDiv');
44 if (text.search("Downloading data...") != -1) {
45 var download_str = text.split("(")[1].split(")")[0];
46 var download_progress = parseInt(download_str.split("/")[0]);
47 var download_total = parseInt(download_str.split("/")[1]);
48 e.innerHTML = "Downloading data... " + Math.round((download_progress / download_total) * 100) + "%";
49 }
50 else {
51 e.innerHTML = text;
52 }
4753 },
4854 canvas: (function() {
4955 var canvas = document.getElementById('canvas');
5460 <script>
5561
5662 (function() {
57 var memoryInitializer = 'index.html.mem';
63 var memoryInitializer = 'index.wasm';
5864 if (typeof Module['locateFile'] === 'function') {
5965 memoryInitializer = Module['locateFile'](memoryInitializer);
6066 } else if (Module['memoryInitializerPrefixURL']) {
7076 script.src = "index.js";
7177 document.body.appendChild(script);
7278
79 // iframe-fix.js
80 var lastTarget, canvas, body;
81 window.onload = function() {
82 body = document.querySelector('body'),
83 canvas = document.getElementById('canvas');
84 var activateCanvas = function (event) {
85 lastTarget = event.target;
86 window.focus();
87 console.log("Set focus on window");
88 }
89 var preventScroll = function (event) {
90 var keyCodes = [ 32, 37, 38, 39, 40 ];
91 if (lastTarget != canvas) {
92 return false;
93 }
94 // console.log('Key pressed: ' + event.keyCode);
95 if (keyCodes.includes(event.keyCode)) {
96 event.preventDefault();
97 }
98 }
99 var handleMouseDown = function (event) {
100 window.focus();
101 event.preventDefault();
102 event.stopPropagation();
103 }
104 body.addEventListener('keydown', preventScroll, false);
105 body.addEventListener('click', activateCanvas, false);
106 canvas.addEventListener('mousedown', handleMouseDown, false);
107
108 // Work-around chromium autoplay policy
109 // https://github.com/emscripten-core/emscripten/issues/6511
110 function resumeAudio(e) {
111 if (typeof Module === 'undefined'
112 || typeof Module.SDL2 == 'undefined'
113 || typeof Module.SDL2.audioContext == 'undefined')
114 return;
115 if (Module.SDL2.audioContext.state == 'suspended') {
116 Module.SDL2.audioContext.resume();
117 }
118 if (Module.SDL2.audioContext.state == 'running') {
119 document.getElementById('canvas').removeEventListener('click', resumeAudio);
120 document.removeEventListener('keydown', resumeAudio);
121 }
122 }
123 document.getElementById('canvas').addEventListener('click', resumeAudio);
124 document.addEventListener('keydown', resumeAudio);
125 }
73126 </script>
74127
75128 </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
463 <p><strong>scrollbar.bg_color</strong> | <code>color, int : Color, Alpha</code> | The background color for the entire scrollbar.</p>
464
435465 <hr />
436466
437467 <h4>EngineSettings: XP table</h4>
448478
449479 <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>
450480
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>
481 <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>
452482
453483 <p><strong>event.location</strong> | <code>rectangle</code> | Defines the location area for the event.</p>
454484
462492
463493 <p><strong>event.tooltip</strong> | <code>string</code> | Tooltip for event</p>
464494
465 <p><strong>event.power_path</strong> | <code>["hero", point]</code> | Event power path</p>
495 <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>
466496
467497 <p><strong>event.power_damage</strong> | <code>int, int : Min, Max</code> | Range of power damage</p>
468498
496526
497527 <p><strong>event.requires_not_currency</strong> | <code>int</code> | Event requires no more than this much currency</p>
498528
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>
529 <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>
530
531 <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>
502532
503533 <p><strong>event.requires_class</strong> | <code>predefined_string</code> | Event requires this base class</p>
504534
510540
511541 <p><strong>event.remove_currency</strong> | <code>int</code> | Removes specified amount of currency from hero inventory</p>
512542
513 <p><strong>event.remove_item</strong> | <code>list(item_id)</code> | Removes specified item from hero inventory</p>
543 <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>
514544
515545 <p><strong>event.reward_xp</strong> | <code>int</code> | Reward hero with specified amount of experience points.</p>
516546
517547 <p><strong>event.reward_currency</strong> | <code>int</code> | Reward hero with specified amount of currency.</p>
518548
519 <p><strong>event.reward_item</strong> | <code>item_id, int : Item, Quantity</code> | Reward hero with y number of item x.</p>
549 <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>
550
551 <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>
520552
521553 <p><strong>event.reward_loot</strong> | <code>list(loot)</code> | Reward hero with random loot.</p>
522554
548580
549581 <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>
550582
583 <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>
584
585 <p><strong>event.parallax_layers</strong> | <code>filename</code> | Filename of a parallax layers definition to load.</p>
586
551587 <hr />
552588
553589 <h4>EventManager: Random Map List</h4>
594630
595631 <hr />
596632
597 <h4>GameStateConfigBase</h4>
633 <h4>Cutscene</h4>
634
635 <p>Description of cutscenes in cutscenes/</p>
636
637 <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>
638
639 <p><strong>caption_background</strong> | <code>color, int : Color, Alpha</code> | Color (RGBA) of the caption area background.</p>
640
641 <p><strong>vscroll_speed</strong> | <code>float</code> | The speed at which elements will scroll in &lsquo;vscroll&rsquo; scenes. Defaults to 0.5.</p>
642
643 <p><strong>menu_backgrounds</strong> | <code>bool</code> | This cutscene will use a random fullscreen background image, like the title screen does</p>
644
645 <p><strong>music</strong> | <code>filename</code> | The music file that will play during this cutscene.</p>
646
647 <p><strong>scene.caption</strong> | <code>string</code> | A caption that will be shown.</p>
648
649 <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>
650
651 <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>
652
653 <p><strong>scene.soundfx</strong> | <code>filename</code> | Filename of a sound that will be played</p>
654
655 <p><strong>vscroll.text</strong> | <code>string</code> | A single, non-wrapping line of text.</p>
656
657 <p><strong>vscroll.image</strong> | <code>filename</code> | Filename of an image that will be shown.</p>
658
659 <p><strong>vscroll.separator</strong> | <code>int</code> | Places an invisible gap of a specified height between elements.</p>
660
661 <hr />
662
663 <h4>GameStateLoad</h4>
664
665 <p>Description of menus/gameload.txt</p>
666
667 <p><strong>button_new</strong> | <code>int, int, alignment : X, Y, Alignment</code> | Position of the &ldquo;New Game&rdquo; button.</p>
668
669 <p><strong>button_load</strong> | <code>int, int, alignment : X, Y, Alignment</code> | Position of the &ldquo;Load Game&rdquo; button.</p>
670
671 <p><strong>button_delete</strong> | <code>int, int, alignment : X, Y, Alignment</code> | Position of the &ldquo;Delete Save&rdquo; button.</p>
672
673 <p><strong>button_exit</strong> | <code>int, int, alignment : X, Y, Alignment</code> | Position of the &ldquo;Exit to Title&rdquo; button.</p>
674
675 <p><strong>portrait</strong> | <code>rectangle</code> | Position and dimensions of the portrait image.</p>
676
677 <p><strong>gameslot</strong> | <code>rectangle</code> | Position and dimensions of the first game slot.</p>
678
679 <p><strong>name</strong> | <code>label</code> | The label for the hero&rsquo;s name. Position is relative to game slot position.</p>
680
681 <p><strong>level</strong> | <code>label</code> | The label for the hero&rsquo;s level. Position is relative to game slot position.</p>
682
683 <p><strong>class</strong> | <code>label</code> | The label for the hero&rsquo;s class. Position is relative to game slot position.</p>
684
685 <p><strong>map</strong> | <code>label</code> | The label for the hero&rsquo;s current location. Position is relative to game slot position.</p>
686
687 <p><strong>slot_number</strong> | <code>label</code> | The label for the save slot index. Position is relative to game slot position.</p>
688
689 <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>
690
691 <p><strong>sprite</strong> | <code>point</code> | Position for the avatar preview image in each slot</p>
692
693 <p><strong>visible_slots</strong> | <code>int</code> | The maximum numbers of visible save slots.</p>
694
695 <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>
696
697 <hr />
698
699 <h4>GameStateNew: Layout</h4>
700
701 <p>Description of menus/gamenew.txt</p>
702
703 <p><strong>button_prev</strong> | <code>int, int, alignment : X, Y, Alignment</code> | Position of button to choose the previous preset hero.</p>
704
705 <p><strong>button_next</strong> | <code>int, int, alignment : X, Y, Alignment</code> | Position of button to choose the next preset hero.</p>
706
707 <p><strong>button_exit</strong> | <code>int, int, alignment : X, Y, Alignment</code> | Position of &ldquo;Cancel&rdquo; button.</p>
708
709 <p><strong>button_create</strong> | <code>int, int, alignment : X, Y, Alignment</code> | Position of &ldquo;Create&rdquo; button.</p>
710
711 <p><strong>button_permadeath</strong> | <code>int, int, alignment : X, Y, Alignment</code> | Position of checkbox for toggling permadeath.</p>
712
713 <p><strong>button_randomize</strong> | <code>int, int, alignment : X, Y, Alignment</code> | Position of the &ldquo;Randomize&rdquo; button.</p>
714
715 <p><strong>name_input</strong> | <code>int, int, alignment : X, Y, Alignment</code> | Position of the hero name textbox.</p>
716
717 <p><strong>portrait_label</strong> | <code>label</code> | Label for the &ldquo;Choose a Portrait&rdquo; text.</p>
718
719 <p><strong>name_label</strong> | <code>label</code> | Label for the &ldquo;Choose a Name&rdquo; text.</p>
720
721 <p><strong>permadeath_label</strong> | <code>label</code> | Label for the &ldquo;Permadeath?&rdquo; text.</p>
722
723 <p><strong>classlist_label</strong> | <code>label</code> | Label for the &ldquo;Choose a Class&rdquo; text.</p>
724
725 <p><strong>classlist_height</strong> | <code>int</code> | Number of visible rows for the class list widget.</p>
726
727 <p><strong>portrait</strong> | <code>rectangle</code> | Position and dimensions of the portrait image.</p>
728
729 <p><strong>class_list</strong> | <code>int, int, alignment : X, Y, Alignment</code> | Position of the class list.</p>
730
731 <p><strong>show_classlist</strong> | <code>bool</code> | Allows hiding the class list.</p>
732
733 <p><strong>show_randomize</strong> | <code>bool</code> | Toggles the visibility of the &ldquo;Randomize&rdquo; button.</p>
734
735 <p><strong>random_option</strong> | <code>bool</code> | Initially picks a random character option (aka portrait/name).</p>
736
737 <p><strong>random_class</strong> | <code>bool</code> | Initially picks a random character class.</p>
738
739 <hr />
740
741 <h4>GameStateNew: Hero options</h4>
742
743 <p>Description of engine/hero_options.txt</p>
744
745 <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>
746
747 <hr />
748
749 <h4>GameStatePlay: Titles</h4>
750
751 <p>Description of engine/titles.txt</p>
752
753 <p><strong>title.title</strong> | <code>string</code> | The displayed title.</p>
754
755 <p><strong>title.level</strong> | <code>int</code> | Requires level.</p>
756
757 <p><strong>title.power</strong> | <code>power_id</code> | Requires power.</p>
758
759 <p><strong>title.requires_status</strong> | <code>list(string)</code> | Requires status.</p>
760
761 <p><strong>title.requires_not_status</strong> | <code>list(string)</code> | Requires not status.</p>
762
763 <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>
764
765 <hr />
766
767 <h4>GameStateTitle</h4>
768
769 <p>Description of menus/gametitle.txt</p>
770
771 <p><strong>logo</strong> | <code>filename, int, int, alignment : Image file, X, Y, Alignment</code> | Filename and position of the main logo image.</p>
772
773 <p><strong>play_pos</strong> | <code>int, int, alignment : X, Y, Alignment</code> | Position of the &ldquo;Play Game&rdquo; button.</p>
774
775 <p><strong>config_pos</strong> | <code>int, int, alignment : X, Y, Alignment</code> | Position of the &ldquo;Configuration&rdquo; button.</p>
776
777 <p><strong>credits_pos</strong> | <code>int, int, alignment : X, Y, Alignment</code> | Position of the &ldquo;Credits&rdquo; button.</p>
778
779 <p><strong>exit_pos</strong> | <code>int, int, alignment : X, Y, Alignment</code> | Position of the &ldquo;Exit Game&rdquo; button.</p>
780
781 <hr />
782
783 <h4>GameSwitcher: Default music</h4>
784
785 <p>Description of engine/default_music.txt</p>
786
787 <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>
788
789 <hr />
790
791 <h4>GameSwitcher: Background images</h4>
792
793 <p>Description of engine/menu_backgrounds.txt</p>
794
795 <p><strong>background</strong> | <code>repeatable(filename)</code> | Filename of a background image to be added to the pool of random menu backgrounds</p>
796
797 <hr />
798
799 <h4>GameSwitcher: FPS counter</h4>
800
801 <p>Description of menus/fps.txt</p>
802
803 <p><strong>position</strong> | <code>int, int, alignment : X, Y, Alignment</code> | Position of the fps counter.</p>
804
805 <p><strong>color</strong> | <code>color</code> | Color of the fps counter text.</p>
806
807 <hr />
808
809 <h4>IconManager</h4>
810
811 <p>Description of engine/icons.txt</p>
812
813 <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>
814
815 <p><strong>text_offset</strong> | <code>point</code> | A pixel offset from the top-left to place item quantity text on icons.</p>
816
817 <hr />
818
819 <h4>InputState: Default Keybindings</h4>
820
821 <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>
822
823 <p><strong>default.cancel</strong> | <code>string, string, string : Keyboard/mouse 1, Keyboard/mouse 2, Joystick</code> | Bindings for &ldquo;Cancel&rdquo;.</p>
824
825 <p><strong>default.accept</strong> | <code>string, string, string : Keyboard/mouse 1, Keyboard/mouse 2, Joystick</code> | Bindings for &ldquo;Accept&rdquo;.</p>
826
827 <p><strong>default.up</strong> | <code>string, string, string : Keyboard/mouse 1, Keyboard/mouse 2, Joystick</code> | Bindings for &ldquo;Up&rdquo;.</p>
828
829 <p><strong>default.down</strong> | <code>string, string, string : Keyboard/mouse 1, Keyboard/mouse 2, Joystick</code> | Bindings for &ldquo;Down&rdquo;.</p>
830
831 <p><strong>default.left</strong> | <code>string, string, string : Keyboard/mouse 1, Keyboard/mouse 2, Joystick</code> | Bindings for &ldquo;Left&rdquo;.</p>
832
833 <p><strong>default.right</strong> | <code>string, string, string : Keyboard/mouse 1, Keyboard/mouse 2, Joystick</code> | Bindings for &ldquo;Right&rdquo;.</p>
834
835 <p><strong>default.bar1</strong> | <code>string, string, string : Keyboard/mouse 1, Keyboard/mouse 2, Joystick</code> | Bindings for &ldquo;Bar1&rdquo;.</p>
836
837 <p><strong>default.bar2</strong> | <code>string, string, string : Keyboard/mouse 1, Keyboard/mouse 2, Joystick</code> | Bindings for &ldquo;Bar2&rdquo;.</p>
838
839 <p><strong>default.bar3</strong> | <code>string, string, string : Keyboard/mouse 1, Keyboard/mouse 2, Joystick</code> | Bindings for &ldquo;Bar3&rdquo;.</p>
840
841 <p><strong>default.bar4</strong> | <code>string, string, string : Keyboard/mouse 1, Keyboard/mouse 2, Joystick</code> | Bindings for &ldquo;Bar4&rdquo;.</p>
842
843 <p><strong>default.bar5</strong> | <code>string, string, string : Keyboard/mouse 1, Keyboard/mouse 2, Joystick</code> | Bindings for &ldquo;Bar5&rdquo;.</p>
844
845 <p><strong>default.bar6</strong> | <code>string, string, string : Keyboard/mouse 1, Keyboard/mouse 2, Joystick</code> | Bindings for &ldquo;Bar6&rdquo;.</p>
846
847 <p><strong>default.bar7</strong> | <code>string, string, string : Keyboard/mouse 1, Keyboard/mouse 2, Joystick</code> | Bindings for &ldquo;Bar7&rdquo;.</p>
848
849 <p><strong>default.bar8</strong> | <code>string, string, string : Keyboard/mouse 1, Keyboard/mouse 2, Joystick</code> | Bindings for &ldquo;Bar8&rdquo;.</p>
850
851 <p><strong>default.bar9</strong> | <code>string, string, string : Keyboard/mouse 1, Keyboard/mouse 2, Joystick</code> | Bindings for &ldquo;Bar9&rdquo;.</p>
852
853 <p><strong>default.bar0</strong> | <code>string, string, string : Keyboard/mouse 1, Keyboard/mouse 2, Joystick</code> | Bindings for &ldquo;Bar0&rdquo;.</p>
854
855 <p><strong>default.main1</strong> | <code>string, string, string : Keyboard/mouse 1, Keyboard/mouse 2, Joystick</code> | Bindings for &ldquo;Main1&rdquo;.</p>
856
857 <p><strong>default.main2</strong> | <code>string, string, string : Keyboard/mouse 1, Keyboard/mouse 2, Joystick</code> | Bindings for &ldquo;Main2&rdquo;.</p>
858
859 <p><strong>default.character</strong> | <code>string, string, string : Keyboard/mouse 1, Keyboard/mouse 2, Joystick</code> | Bindings for &ldquo;Character&rdquo;.</p>
860
861 <p><strong>default.inventory</strong> | <code>string, string, string : Keyboard/mouse 1, Keyboard/mouse 2, Joystick</code> | Bindings for &ldquo;Inventory&rdquo;.</p>
862
863 <p><strong>default.powers</strong> | <code>string, string, string : Keyboard/mouse 1, Keyboard/mouse 2, Joystick</code> | Bindings for &ldquo;Powers&rdquo;.</p>
864
865 <p><strong>default.log</strong> | <code>string, string, string : Keyboard/mouse 1, Keyboard/mouse 2, Joystick</code> | Bindings for &ldquo;Log&rdquo;.</p>
866
867 <p><strong>default.ctrl</strong> | <code>string, string, string : Keyboard/mouse 1, Keyboard/mouse 2, Joystick</code> | Bindings for &ldquo;Ctrl&rdquo;.</p>
868
869 <p><strong>default.shift</strong> | <code>string, string, string : Keyboard/mouse 1, Keyboard/mouse 2, Joystick</code> | Bindings for &ldquo;Shift&rdquo;.</p>
870
871 <p><strong>default.alt</strong> | <code>string, string, string : Keyboard/mouse 1, Keyboard/mouse 2, Joystick</code> | Bindings for &ldquo;Alt&rdquo;.</p>
872
873 <p><strong>default.delete</strong> | <code>string, string, string : Keyboard/mouse 1, Keyboard/mouse 2, Joystick</code> | Bindings for &ldquo;Delete&rdquo;.</p>
874
875 <p><strong>default.actionbar</strong> | <code>string, string, string : Keyboard/mouse 1, Keyboard/mouse 2, Joystick</code> | Bindings for &ldquo;Actionbar Accept&rdquo;.</p>
876
877 <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>
878
879 <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>
880
881 <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>
882
883 <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>
884
885 <hr />
886
887 <h4>ItemManager: Items</h4>
888
889 <p>Description about the class and it usage, items/items.txt&hellip;</p>
890
891 <p><strong>id</strong> | <code>item_id</code> | An uniq id of the item used as reference from other classes.</p>
892
893 <p><strong>name</strong> | <code>string</code> | Item name displayed on long and short tooltips.</p>
894
895 <p><strong>flavor</strong> | <code>string</code> | A description of the item.</p>
896
897 <p><strong>level</strong> | <code>int</code> | The item&rsquo;s level. Has no gameplay impact. (Deprecated?)</p>
898
899 <p><strong>icon</strong> | <code>icon_id</code> | An id for the icon to display for this item.</p>
900
901 <p><strong>book</strong> | <code>filename</code> | A book file to open when this item is activated.</p>
902
903 <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>
904
905 <p><strong>quality</strong> | <code>predefined_string</code> | Item quality matching an id in items/qualities.txt</p>
906
907 <p><strong>item_type</strong> | <code>predefined_string</code> | Equipment slot matching an id in items/types.txt</p>
908
909 <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>
910
911 <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>
912
913 <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>
914
915 <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>
916
917 <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>
918
919 <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>
920
921 <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>
922
923 <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>
924
925 <p><strong>soundfx</strong> | <code>filename</code> | Sound effect filename to play for the specific item.</p>
926
927 <p><strong>gfx</strong> | <code>filename</code> | Filename of an animation set to display when the item is equipped.</p>
928
929 <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>
930
931 <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>
932
933 <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>
934
935 <p><strong>power_desc</strong> | <code>string</code> | A string describing the additional power.</p>
936
937 <p><strong>price</strong> | <code>int</code> | The amount of currency the item costs, if set to 0 the item cannot be sold.</p>
938
939 <p><strong>price_per_level</strong> | <code>int</code> | Additional price for each player level above 1</p>
940
941 <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>
942
943 <p><strong>max_quantity</strong> | <code>int</code> | Max item count per stack.</p>
944
945 <p><strong>pickup_status</strong> | <code>string</code> | Set a campaign status when item is picked up, this is used for quest items.</p>
946
947 <p><strong>stepfx</strong> | <code>predefined_string</code> | Sound effect when walking, this applies only to armors.</p>
948
949 <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>
950
951 <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>
952
953 <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>
954
955 <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>
956
957 <hr />
958
959 <h4>ItemManager: Types</h4>
960
961 <p>Definition of a item types, items/types.txt&hellip;</p>
962
963 <p><strong>type.id</strong> | <code>string</code> | Item type identifier.</p>
964
965 <p><strong>type.name</strong> | <code>string</code> | Item type name.</p>
966
967 <hr />
968
969 <h4>ItemManager: Qualities</h4>
970
971 <p>Definition of a item qualities, items/types.txt&hellip;</p>
972
973 <p><strong>quality.id</strong> | <code>string</code> | Item quality identifier.</p>
974
975 <p><strong>quality.name</strong> | <code>string</code> | Item quality name.</p>
976
977 <p><strong>quality.color</strong> | <code>color</code> | Item quality color.</p>
978
979 <p><strong>quality.overlay_icon</strong> | <code>icon_id</code> | The icon to be used as an overlay.</p>
980
981 <hr />
982
983 <h4>ItemManager: Sets</h4>
984
985 <p>Definition of a item sets, items/sets.txt&hellip;</p>
986
987 <p><strong>id</strong> | <code>int</code> | A uniq id for the item set.</p>
988
989 <p><strong>name</strong> | <code>string</code> | Name of the item set.</p>
990
991 <p><strong>items</strong> | <code>list(item_id)</code> | List of item id&rsquo;s that is part of the set.</p>
992
993 <p><strong>color</strong> | <code>color</code> | A specific of color for the set.</p>
994
995 <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>
996
997 <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>
998
999 <hr />
1000
1001 <h4>Map</h4>
1002
1003 <p>Description of maps/</p>
1004
1005 <p><strong>title</strong> | <code>string</code> | Title of map</p>
1006
1007 <p><strong>width</strong> | <code>int</code> | Width of map</p>
1008
1009 <p><strong>height</strong> | <code>int</code> | Height of map</p>
1010
1011 <p><strong>tileset</strong> | <code>filename</code> | Filename of a tileset definition to use for map</p>
1012
1013 <p><strong>music</strong> | <code>filename</code> | Filename of background music to use for map</p>
1014
1015 <p><strong>hero_pos</strong> | <code>point</code> | The player will spawn in this location if no point was previously given.</p>
1016
1017 <p><strong>parallax_layers</strong> | <code>filename</code> | Filename of a parallax layers definition.</p>
1018
1019 <p><strong>background_color</strong> | <code>color, int : Color, alpha</code> | Background color for the map.</p>
1020
1021 <p><strong>tilewidth</strong> | <code>int</code> | Inherited from Tiled map file. Unused by engine.</p>
1022
1023 <p><strong>tileheight</strong> | <code>int</code> | Inherited from Tiled map file. Unused by engine.</p>
1024
1025 <p><strong>layer.type</strong> | <code>string</code> | Map layer type.</p>
1026
1027 <p><strong>layer.format</strong> | <code>string</code> | Format for map layer, must be &lsquo;dec&rsquo;</p>
1028
1029 <p><strong>layer.data</strong> | <code>raw</code> | Raw map layer data</p>
1030
1031 <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>
1032
1033 <p><strong>enemygroup.category</strong> | <code>predefined_string</code> | The category of enemies that will spawn in this group.</p>
1034
1035 <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>
1036
1037 <p><strong>enemygroup.location</strong> | <code>rectangle</code> | Location area for enemygroup</p>
1038
1039 <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>
1040
1041 <p><strong>enemygroup.chance</strong> | <code>int</code> | Percentage of chance</p>
1042
1043 <p><strong>enemygroup.direction</strong> | <code>direction</code> | Direction that enemies will initially face.</p>
1044
1045 <p><strong>enemygroup.waypoints</strong> | <code>list(point)</code> | Enemy waypoints; single enemy only; negates wander_radius</p>
1046
1047 <p><strong>enemygroup.wander_radius</strong> | <code>int</code> | The radius (in tiles) that an enemy will wander around randomly; negates waypoints</p>
1048
1049 <p><strong>enemygroup.requires_status</strong> | <code>list(string)</code> | Status required for loading enemies</p>
1050
1051 <p><strong>enemygroup.requires_not_status</strong> | <code>list(string)</code> | Status required to be missing for loading enemies</p>
1052
1053 <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>
1054
1055 <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>
1056
1057 <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>
1058
1059 <p><strong>npc.filename</strong> | <code>string</code> | Filename of an NPC definition.</p>
1060
1061 <p><strong>npc.requires_status</strong> | <code>list(string)</code> | Status required for NPC load. There can be multiple states, separated by comma</p>
1062
1063 <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>
1064
1065 <p><strong>npc.location</strong> | <code>point</code> | Location of NPC</p>
1066
1067 <hr />
1068
1069 <h4>MapParallax</h4>
1070
1071 <p>Description of maps/parallax/</p>
1072
1073 <p><strong>layer.image</strong> | <code>filename</code> | Image file to use as a scrolling background.</p>
1074
1075 <p><strong>layer.speed</strong> | <code>float</code> | Speed at which the background will move relative to the camera.</p>
1076
1077 <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>
1078
1079 <p><strong>layer.map_layer</strong> | <code>string</code> | The tile map layer that this parallax layer will be rendered on top of.</p>
1080
1081 <hr />
1082
1083 <h4>MenuActionBar</h4>
1084
1085 <p>Description of menus/actionbar.txt</p>
1086
1087 <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>
1088
1089 <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>
1090
1091 <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>
1092
1093 <p><strong>char_menu</strong> | <code>point</code> | Position for the Character menu button.</p>
1094
1095 <p><strong>inv_menu</strong> | <code>point</code> | Position for the Inventory menu button.</p>
1096
1097 <p><strong>powers_menu</strong> | <code>point</code> | Position for the Powers menu button.</p>
1098
1099 <p><strong>log_menu</strong> | <code>point</code> | Position for the Log menu button.</p>
1100
1101 <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>
1102
1103 <hr />
1104
1105 <h4>MenuActiveEffects</h4>
1106
1107 <p>Description of menus/activeeffects.txt</p>
1108
1109 <p><strong>vertical</strong> | <code>bool</code> | True is vertical orientation; False is horizontal orientation.</p>
1110
1111 <hr />
1112
1113 <h4>MenuBook</h4>
1114
1115 <p>Description of books in books/</p>
1116
1117 <p><strong>close</strong> | <code>point</code> | Position of the close button.</p>
1118
1119 <p><strong>background</strong> | <code>filename</code> | Filename for the background image.</p>
1120
1121 <p><strong>image.image_pos</strong> | <code>point</code> | Position of the image.</p>
1122
1123 <p><strong>image.image</strong> | <code>filename</code> | Filename of the image.</p>
1124
1125 <p><strong>image.image_icon</strong> | <code>icon_id</code> | Use an icon as the image instead of a file.</p>
1126
1127 <p><strong>image.requires_status</strong> | <code>list(string)</code> | Image requires these campaign statuses in order to be visible.</p>
1128
1129 <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>
1130
1131 <p><strong>text.text_pos</strong> | <code>int, int, int, ["left", "center", "right"] : X, Y, Width, Text justify</code> | Position of the text.</p>
1132
1133 <p><strong>text.text_font</strong> | <code>color, string : Font color, Font style</code> | Font color and style.</p>
1134
1135 <p><strong>text.text_shadow</strong> | <code>bool</code> | If true, the text will have a black shadow like the text labels in various menus.</p>
1136
1137 <p><strong>text.text</strong> | <code>string</code> | The text to be displayed.</p>
1138
1139 <p><strong>text.requires_status</strong> | <code>list(string)</code> | Text requires these campaign statuses in order to be visible.</p>
1140
1141 <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>
1142
1143 <p><strong>button.button_pos</strong> | <code>point</code> | Position of the button.</p>
1144
1145 <p><strong>button.button_image</strong> | <code>filename</code> | Image file to use for this button. Default is the normal menu button.</p>
1146
1147 <p><strong>button.text</strong> | <code>string</code> | Optional text label for the button.</p>
1148
1149 <p><strong>button.${EVENT_COMPONENT}</strong> | <code>Event components to execute when the button is clicked. See the definitions in EventManager for possible attributes.</code> |</p>
1150
1151 <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>
1152
1153 <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>
1154
1155 <hr />
1156
1157 <h4>MenuCharacter</h4>
1158
1159 <p>Description of menus/character.txt</p>
1160
1161 <p><strong>close</strong> | <code>point</code> | Position of the close button.</p>
1162
1163 <p><strong>label_title</strong> | <code>label</code> | Position of the &ldquo;Character&rdquo; text.</p>
1164
1165 <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>
1166
1167 <p><strong>statlist</strong> | <code>point</code> | Position of the scrollbox containing non-primary stats.</p>
1168
1169 <p><strong>statlist_rows</strong> | <code>int</code> | The height of the statlist in rows.</p>
1170
1171 <p><strong>statlist_scrollbar_offset</strong> | <code>int</code> | Right margin in pixels for the statlist&rsquo;s scrollbar.</p>
1172
1173 <p><strong>label_name</strong> | <code>label</code> | Position of the &ldquo;Name&rdquo; text.</p>
1174
1175 <p><strong>label_level</strong> | <code>label</code> | Position of the &ldquo;Level&rdquo; text.</p>
1176
1177 <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>
1178
1179 <p><strong>name</strong> | <code>rectangle</code> | Position of the player&rsquo;s name and dimensions of the tooltip hotspot.</p>
1180
1181 <p><strong>level</strong> | <code>rectangle</code> | Position of the player&rsquo;s level and dimensions of the tooltip hotspot.</p>
1182
1183 <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>
1184
1185 <p><strong>unspent</strong> | <code>label</code> | Position of the label showing the number of unspent stat points.</p>
1186
1187 <p><strong>show_resists</strong> | <code>bool</code> | Hide the elemental &ldquo;Resistance&rdquo; stats in the statlist if set to false.</p>
1188
1189 <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>
1190
1191 <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>
1192
1193 <hr />
1194
1195 <h4>MenuConfig</h4>
5981196
5991197 <p>Description of menus/config.txt</p>
6001198
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>
1199 <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>
1200
1201 <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>
1202
1203 <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>
6061204
6071205 <p><strong>listbox_scrollbar_offset</strong> | <code>int</code> | Horizontal offset from the right of listboxes (mods, languages, etc) to place the scrollbar.</p>
6081206
6101208
6111209 <p><strong>tab_offset</strong> | <code>point</code> | Offset for the row of tabs.</p>
6121210
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
6311211 <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>
6321212
6331213 <p><strong>activemods_height</strong> | <code>int</code> | Number of visible rows for the &ldquo;Active Mods&rdquo; list box.</p>
6441224
6451225 <p><strong>inactivemods_activate</strong> | <code>point</code> | Position of the &ldquo;Enable&rdquo; button relative to the frame.</p>
6461226
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
6971227 <p><strong>scrollpane</strong> | <code>rectangle</code> | Position of the keybinding scrollbox relative to the frame.</p>
6981228
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>
1229 <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>
1230
1231 <p><strong>scrollpane_separator_color</strong> | <code>color</code> | Color of the separator line in between scroll box items.</p>
1232
1233 <p><strong>keybinds_bg_color</strong> | <code>color, int : Color, Alpha</code> | Background color and alpha for the keybindings scrollbox.</p>
1234
1235 <hr />
1236
1237 <h4>Menu</h4>
1238
1239 <p>Description of menus in menus/</p>
1240
1241 <p><strong>pos</strong> | <code>rectangle</code> | Menu position and dimensions</p>
1242
1243 <p><strong>align</strong> | <code>alignment</code> | Position relative to screen edges</p>
1244
1245 <p><strong>soundfx_open</strong> | <code>filename</code> | Filename of a sound to play when opening this menu.</p>
1246
1247 <p><strong>soundfx_close</strong> | <code>filename</code> | Filename of a sound to play when closing this menu.</p>
1248
1249 <hr />
1250
1251 <h4>MenuDevConsole</h4>
1252
1253 <p>Description of menus/devconsole.txt</p>
12481254
12491255 <p><strong>close</strong> | <code>point</code> | Position of the close button.</p>
12501256
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>
1257 <p><strong>label_title</strong> | <code>label</code> | Position of the &ldquo;Developer Console&rdquo; label.</p>
1258
1259 <p><strong>confirm</strong> | <code>point</code> | Position of the &ldquo;Execute&rdquo; button.</p>
1260
1261 <p><strong>input</strong> | <code>point</code> | Position of the command entry widget.</p>
1262
1263 <p><strong>history</strong> | <code>rectangle</code> | Position and dimensions of the command history.</p>
1264
1265 <hr />
1266
1267 <h4>MenuEnemy</h4>
1268
1269 <p>Description of menus/enemy.txt</p>
1270
1271 <p><strong>bar_pos</strong> | <code>rectangle</code> | Position and dimensions of the health bar.</p>
1272
1273 <p><strong>text_pos</strong> | <code>label</code> | Position of the text displaying the enemy&rsquo;s name and level.</p>
1274
1275 <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>
1276
1277 <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>
1278
1279 <hr />
1280
1281 <h4>MenuGameOver</h4>
1282
1283 <p>Description of menus/game_over.txt</p>
1284
1285 <p><strong>label_title</strong> | <code>label</code> | Position of the &ldquo;Game Over&rdquo; text.</p>
1286
1287 <p><strong>button_continue</strong> | <code>point</code> | Position of the &ldquo;Continue&rdquo; button.</p>
1288
1289 <p><strong>button_exit</strong> | <code>point</code> | Position of the &ldquo;Exit&rdquo; button.</p>
1290
1291 <hr />
1292
1293 <h4>MenuHUDLog</h4>
1294
1295 <p>Description of menus/hudlog.txt</p>
1296
1297 <p><strong>enable_overlay</strong> | <code>bool</code> | If true, shows an overlay of the last message on top of other menus.</p>
1298
1299 <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>
1300
1301 <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>
1302
1303 <hr />
1304
1305 <h4>MenuInventory</h4>
1306
1307 <p>Description of menus/inventory.txt</p>
12921308
12931309 <p><strong>close</strong> | <code>point</code> | Position of the close button.</p>
12941310
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>
1311 <p><strong>equipment_slot</strong> | <code>repeatable(int, int, string) : X, Y, Slot Type</code> | Position and item type of an equipment slot.</p>
1312
1313 <p><strong>carried_area</strong> | <code>point</code> | Position of the first normal inventory slot.</p>
1314
1315 <p><strong>carried_cols</strong> | <code>int</code> | The number of columns for the normal inventory.</p>
1316
1317 <p><strong>carried_rows</strong> | <code>int</code> | The number of rows for the normal inventory.</p>
1318
1319 <p><strong>label_title</strong> | <code>label</code> | Position of the &ldquo;Inventory&rdquo; label.</p>
1320
1321 <p><strong>currency</strong> | <code>label</code> | Position of the label that displays the total currency being carried.</p>
1322
1323 <p><strong>help</strong> | <code>rectangle</code> | A mouse-over area that displays some help text for inventory shortcuts.</p>
1324
1325 <hr />
1326
1327 <h4>MenuLog</h4>
1328
1329 <p>Description of menus/log.txt</p>
1330
1331 <p><strong>label_title</strong> | <code>label</code> | Position of the &ldquo;Log&rdquo; text.</p>
13441332
13451333 <p><strong>close</strong> | <code>point</code> | Position of the close button.</p>
13461334
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>
1335 <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>
1336
1337 <hr />
1338
1339 <h4>MenuMiniMap</h4>
1340
1341 <p>Description of menus/minimap.txt</p>
1342
1343 <p><strong>map_pos</strong> | <code>rectangle</code> | Position and dimensions of the map.</p>
1344
1345 <p><strong>text_pos</strong> | <code>label</code> | Position of the text label with the map name.</p>
1346
1347 <p><strong>background</strong> | <code>filename</code> | Optional background image.</p>
1348
1349 <p><strong>color_wall</strong> | <code>color, int : Color, Alpha</code> | Color used for walls.</p>
1350
1351 <p><strong>color_obst</strong> | <code>color, int : Color, Alpha</code> | Color used for small obstacles and pits.</p>
1352
1353 <p><strong>color_hero</strong> | <code>color, int : Color, Alpha</code> | Color used for the player character.</p>
1354
1355 <p><strong>color_enemy</strong> | <code>color, int : Color, Alpha</code> | Color used for enemies engaged in combat.</p>
1356
1357 <p><strong>color_ally</strong> | <code>color, int : Color, Alpha</code> | Color used for allies.</p>
1358
1359 <p><strong>color_npc</strong> | <code>color, int : Color, Alpha</code> | Color used for NPCs.</p>
1360
1361 <p><strong>color_teleport</strong> | <code>color, int : Color, Alpha</code> | Color used for intermap teleports.</p>
1362
1363 <p><strong>button_config</strong> | <code>point</code> | Position of the &lsquo;Configuration&rsquo; button. The button will be hidden if not defined.</p>
1364
1365 <hr />
1366
1367 <h4>MenuMovementType</h4>
1368
1369 <p>Description of menus/movement_type.txt</p>
1370
1371 <p><strong>label_title</strong> | <code>label</code> | Position of the &ldquo;Select a Movement Type&rdquo; text.</p>
1372
1373 <p><strong>label_config_hint</strong> | <code>label</code> | Position of the &ldquo;Can be changed later in the Configuration menu&rdquo; text.</p>
1374
1375 <p><strong>button_keyboard</strong> | <code>point</code> | Position of the &ldquo;Keyboard&rdquo; button.</p>
1376
1377 <p><strong>button_mouse</strong> | <code>point</code> | Position of the &ldquo;Mouse&rdquo; button.</p>
1378
1379 <p><strong>button_joystick</strong> | <code>point</code> | Position of the &ldquo;Joystick&rdquo; button.</p>
1380
1381 <p><strong>icon_keyboard</strong> | <code>point</code> | Position of the keyboard icon.</p>
1382
1383 <p><strong>icon_mouse</strong> | <code>point</code> | Position of the mouse icon.</p>
1384
1385 <p><strong>icon_joystick</strong> | <code>point</code> | Position of the joystick icon.</p>
1386
1387 <hr />
1388
1389 <h4>MenuNumPicker</h4>
1390
1391 <p>Description of menus/num_picker.txt</p>
1392
1393 <p><strong>label_title</strong> | <code>label</code> | Position of the &ldquo;Enter amount &rdquo; text.</p>
1394
1395 <p><strong>confirm</strong> | <code>point</code> | Position of the &ldquo;OK&rdquo; button.</p>
1396
1397 <p><strong>increase</strong> | <code>point</code> | Position of the button used to increase the value.</p>
1398
1399 <p><strong>decrease</strong> | <code>point</code> | Position of the button used to decrease the value.</p>
1400
1401 <p><strong>close</strong> | <code>point</code> | Position of the button used to close the number picker window.</p>
1402
1403 <p><strong>input</strong> | <code>point</code> | Position of the text input box.</p>
1404
1405 <hr />
1406
1407 <h4>MenuPowers: Menu layout</h4>
1408
1409 <p>Description of menus/powers.txt</p>
1410
1411 <p><strong>label_title</strong> | <code>label</code> | Position of the &ldquo;Powers&rdquo; text.</p>
1412
1413 <p><strong>unspent_points</strong> | <code>label</code> | Position of the text that displays the amount of unused power points.</p>
13921414
13931415 <p><strong>close</strong> | <code>point</code> | Position of the close button.</p>
13941416
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>
1417 <p><strong>tab_area</strong> | <code>rectangle</code> | Position and dimensions of the tree pages.</p>
1418
1419 <hr />
1420
1421 <h4>MenuPowers: Power tree layout</h4>
1422
1423 <p>Description of powers/trees/</p>
1424
1425 <p><strong>background</strong> | <code>filename</code> | Filename of the default background image</p>
1426
1427 <p><strong>tab.title</strong> | <code>string</code> | The name of this power tree tab</p>
1428
1429 <p><strong>tab.background</strong> | <code>filename</code> | Filename of the background image for this tab&rsquo;s power tree</p>
1430
1431 <p><strong>power.id</strong> | <code>int</code> | A power id from powers/powers.txt for this slot.</p>
1432
1433 <p><strong>power.tab</strong> | <code>int</code> | Tab index to place this power on, starting from 0.</p>
1434
1435 <p><strong>power.position</strong> | <code>point</code> | Position of this power icon; relative to MenuPowers &ldquo;pos&rdquo;.</p>
1436
1437 <p><strong>power.requires_point</strong> | <code>bool</code> | Power requires a power point to unlock.</p>
1438
1439 <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>
1440
1441 <p><strong>power.requires_level</strong> | <code>int</code> | Power requires at least this level for the hero.</p>
1442
1443 <p><strong>power.requires_power</strong> | <code>power_id</code> | Power requires another power id.</p>
1444
1445 <p><strong>power.requires_status</strong> | <code>repeatable(string)</code> | Power requires this campaign status.</p>
1446
1447 <p><strong>power.requires_not_status</strong> | <code>repeatable(string)</code> | Power requires not having this campaign status.</p>
1448
1449 <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>
1450
1451 <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>
1452
1453 <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>
1454
1455 <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>
1456
1457 <p><strong>power.visible_check_locked</strong> | <code>bool</code> | When set to true, the power will be hidden if it is locked. Defaults to false.</p>
1458
1459 <p><strong>power.visible_check_status</strong> | <code>bool</code> | When set to true, the power will be hidden if its status requirements are not met. Defaults to false.</p>
1460
1461 <p><strong>upgrade.id</strong> | <code>int</code> | A power id from powers/powers.txt for this upgrade.</p>
1462
1463 <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>
1464
1465 <p><strong>upgrade.requires_point</strong> | <code>bool</code> | Upgrade requires a power point to unlock.</p>
1466
1467 <p><strong>upgrade.requires_level</strong> | <code>int</code> | Upgrade requires at least this level for the hero.</p>
1468
1469 <p><strong>upgrade.requires_power</strong> | <code>int</code> | Upgrade requires another power id.</p>
1470
1471 <p><strong>upgrade.requires_status</strong> | <code>repeatable(string)</code> | Upgrade requires this campaign status.</p>
1472
1473 <p><strong>upgrade.requires_not_status</strong> | <code>repeatable(string)</code> | Upgrade requires not having this campaign status.</p>
1474
1475 <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>
1476
1477 <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>
1478
1479 <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>
1480
1481 <p><strong>upgrade.visible_check_locked</strong> | <code>bool</code> | When set to true, the power will be hidden if it is locked. Defaults to false.</p>
1482
1483 <p><strong>upgrade.visible_check_status</strong> | <code>bool</code> | When set to true, the power will be hidden if its status requirements are not met. Defaults to false.</p>
1484
1485 <hr />
1486
1487 <h4>MenuStash</h4>
1488
1489 <p>Description of menus/stash.txt</p>
14181490
14191491 <p><strong>close</strong> | <code>point</code> | Position of the close button.</p>
14201492
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>
1493 <p><strong>slots_area</strong> | <code>point</code> | Position of the top-left slot.</p>
1494
1495 <p><strong>stash_cols</strong> | <code>int</code> | The number of columns for the grid of slots.</p>
1496
1497 <p><strong>stash_rows</strong> | <code>int</code> | The number of rows for the grid of slots.</p>
1498
1499 <p><strong>label_title</strong> | <code>label</code> | Position of the &ldquo;Stash&rdquo; label.</p>
1500
1501 <p><strong>currency</strong> | <code>label</code> | Position of the label displaying the amount of currency stored in the stash.</p>
1502
1503 <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>
1504
1505 <p><strong>tab.is_private</strong> | <code>bool</code> | If true, this stash will not be shared across other saves.</p>
1506
1507 <hr />
1508
1509 <h4>MenuStatBar</h4>
1510
1511 <p>Description of menus/hp.txt, menus/mp.txt, menus/xp.txt</p>
1512
1513 <p><strong>bar_pos</strong> | <code>rectangle</code> | Position and dimensions of the bar graphics.</p>
1514
1515 <p><strong>text_pos</strong> | <code>label</code> | Position of the text displaying the current value of the relevant stat.</p>
1516
1517 <p><strong>orientation</strong> | <code>bool</code> | True is vertical orientation; false is horizontal.</p>
1518
1519 <p><strong>bar_gfx</strong> | <code>filename</code> | Filename of the image to use for the &ldquo;fill&rdquo; of the bar.</p>
1520
1521 <p><strong>bar_gfx_background</strong> | <code>filename</code> | Filename of the image to use for the base of the bar.</p>
1522
1523 <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>
1524
1525 <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>
1526
1527 <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>
1528
1529 <hr />
1530
1531 <h4>MenuTalker</h4>
1532
1533 <p>Description of menus/talker.txt</p>
14621534
14631535 <p><strong>close</strong> | <code>point</code> | Position of the close button.</p>
14641536
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>
1537 <p><strong>advance</strong> | <code>point</code> | Position of the button to advance dialog.</p>
1538
1539 <p><strong>dialogbox</strong> | <code>rectangle</code> | Position and dimensions of the text box graphics.</p>
1540
1541 <p><strong>dialogtext</strong> | <code>rectangle</code> | Rectangle where the dialog text is placed.</p>
1542
1543 <p><strong>text_offset</strong> | <code>point</code> | Margins for the left/right and top/bottom of the dialog text.</p>
1544
1545 <p><strong>portrait_he</strong> | <code>rectangle</code> | Position and dimensions of the NPC portrait graphics.</p>
1546
1547 <p><strong>portrait_you</strong> | <code>rectangle</code> | Position and dimensions of the player&rsquo;s portrait graphics.</p>
1548
1549 <p><strong>font_who</strong> | <code>predefined_string</code> | Font style to use for the name of the currently talking person.</p>
1550
1551 <p><strong>font_dialog</strong> | <code>predefined_string</code> | Font style to use for the dialog text.</p>
1552
1553 <p><strong>topic_color_normal</strong> | <code>color</code> | The normal color for topic text.</p>
1554
1555 <p><strong>topic_color_hover</strong> | <code>color</code> | The color for topic text when highlighted.</p>
1556
1557 <p><strong>topic_color_normal</strong> | <code>color</code> | The color for topic text when clicked.</p>
1558
1559 <p><strong>trade_color_normal</strong> | <code>color</code> | The normal color for the &ldquo;Trade&rdquo; text.</p>
1560
1561 <p><strong>trade_color_hover</strong> | <code>color</code> | The color for the &ldquo;Trade&rdquo; text when highlighted.</p>
1562
1563 <p><strong>trade_color_normal</strong> | <code>color</code> | The color for the &ldquo;Trade&rdquo; text when clicked.</p>
1564
1565 <hr />
1566
1567 <h4>MenuVendor</h4>
1568
1569 <p>Description of menus/vendor.txt</p>
15181570
15191571 <p><strong>close</strong> | <code>point</code> | Position of the close button.</p>
15201572
15211573 <p><strong>slots_area</strong> | <code>point</code> | Position of the top-left slot.</p>
15221574
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
15931575 <p><strong>vendor_cols</strong> | <code>int</code> | The number of columns in the grid of slots.</p>
15941576
15951577 <p><strong>vendor_rows</strong> | <code>int</code> | The number of rows in the grid of slots.</p>
16441626
16451627 <p><strong>dialog.portrait_you</strong> | <code>repeatable(filename)</code> | Filename of a portrait to display for the player during this dialog.</p>
16461628
1629 <p><strong>dialog.take_a_party</strong> | <code>bool</code> | Start/stop taking a party with player.</p>
1630
16471631 <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>
16481632
16491633 <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>
16501634
16511635 <p><strong>name</strong> | <code>string</code> | NPC&rsquo;s name.</p>
16521636
1653 <p><strong>gfx</strong> | <code>filename</code> | Filename of an animation definition.</p>
1654
16551637 <p><strong>direction</strong> | <code>direction</code> | The direction to use for this NPC&rsquo;s stance animation.</p>
16561638
1639 <p><strong>show_on_minimap</strong> | <code>bool</code> | If true, this NPC will be shown on the minimap. The default is true.</p>
1640
16571641 <p><strong>talker</strong> | <code>bool</code> | Allows this NPC to be talked to.</p>
16581642
16591643 <p><strong>portrait</strong> | <code>filename</code> | Filename of the default portrait image.</p>
17641748
17651749 <p><strong>power.cooldown</strong> | <code>duration</code> | Specify the duration for cooldown of the power in &lsquo;ms&rsquo; or &rsquo;s'.</p>
17661750
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>
1751 <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>
17681752
17691753 <p><strong>power.animation</strong> | <code>filename</code> | The filename of the power animation.</p>
17701754
18621846
18631847 <p><strong>power.pre_power</strong> | <code>power_id, int : Power, Chance to cast</code> | Trigger a power immediately when casting this one.</p>
18641848
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>
1849 <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>
18661850
18671851 <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>
18681852
19041888
19051889 <p><strong>power.target_nearest</strong> | <code>float</code> | Will automatically target the nearest enemy within the specified range.</p>
19061890
1891 <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>
1892
19071893 <hr />
19081894
19091895 <h4>QuestLog</h4>
19681954
19691955 <p><strong>power_filter</strong> | <code>list(power_id)</code> | Only these powers are allowed to hit this entity.</p>
19701956
1957 <p><strong>categories</strong> | <code>list(string)</code> | Categories that this entity belongs to.</p>
1958
1959 <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>
1960
19711961 <hr />
19721962
19731963 <h4>StatBlock: Sound effects</h4>
19861976
19871977 <p><strong>sfx_levelup</strong> | <code>filename</code> | Filename of sound effect for leveling up.</p>
19881978
1979 <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>
1980
19891981 <hr />
19901982
19911983 <h4>StatBlock: Enemies</h4>
20322024
20332025 <p><strong>passive_powers</strong> | <code>list(power_id)</code> | A list of passive powers this creature has.</p>
20342026
2035 <p><strong>melee_range</strong> | <code>float</code> | Minimum distance from target required to use melee powers.</p>
2036
20372027 <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>
20382028
20392029 <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>
20442034
20452035 <p><strong>suppress_hp</strong> | <code>bool</code> | Hides the enemy HP bar for this creature.</p>
20462036
2047 <p><strong>categories</strong> | <code>list(string)</code> | Categories that this enemy belongs to.</p>
2048
20492037 <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>
20502038
20512039 <p><strong>flee_cooldown</strong> | <code>duration</code> | The amount of time this creature must wait before they can start fleeing again.</p>
21632151 <p><strong>shield</strong> | Create a damage absorbing barrier based on Mental damage stat. Duration is ignored.</p>
21642152
21652153 <p><strong>heal</strong> | Restore HP based on Mental damage stat.</p>
2154
2155 <hr />
2156
2157 <h4>ItemManager</h4>
2158
2159 <p>Description of &ldquo;bonus&rdquo; attribute in items/items.txt</p>
2160
2161 <p><strong>speed</strong> | Movement speed. A value of 100 is 100% speed (aka normal speed).</p>
2162
2163 <p><strong>attack_speed</strong> | Attack animation speed. A value of 100 is 100% speed (aka normal speed).</p>
2164
2165 <p><strong>${STATNAME}</strong> | Increases ${STATNAME}, where ${STATNAME} is any of the base stats. Examples: hp, avoidance, xp_gain</p>
2166
2167 <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>
2168
2169 <p><strong>${ELEMENT}_resist</strong> | Increase Resistance % to ${ELEMENT}, where ${ELEMENT} is any found in engine/elements.txt. Example: fire_resist</p>
2170
2171 <p><strong>${PRIMARYSTAT}</strong> | Increases ${PRIMARYSTAT}, where ${PRIMARYSTAT} is any of the primary stats defined in engine/primary_stats.txt. Example: physical</p>
21662172
21672173 <hr />
21682174
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
22 apply plugin: 'com.android.application'
33
44 android {
5 compileSdkVersion 22
5 compileSdkVersion 29
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 29
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
11
22 <manifest xmlns:android="http://schemas.android.com/apk/res/android"
33 package="org.flare.app"
4 android:versionCode="020"
5 android:versionName="1.0pre"
4 android:versionCode="112"
5 android:versionName="1.12"
66 android:installLocation="auto">
77
88 <application android:label="@string/app_name"
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
3330 <!-- Allow writing to external storage -->
3431 <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
35 <uses-permission android:name="android.permission.INTERNET" />
3632 </manifest>
00 package org.flare.app;
11
2 import org.libsdl.app.SDLActivity;
3 import android.os.*;
2 import org.libsdl.app.SDLActivity;
43
4 import android.Manifest;
5 import android.content.pm.PackageManager;
6 import android.os.*;
57 /*
68 * A sample wrapper class that just calls SDLActivity
79 */
810
911 public class FLARE extends SDLActivity {
10 protected void onCreate(Bundle savedInstanceState) {
12 protected void onCreate(Bundle savedInstanceState) {
13 if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
14 if (super.checkSelfPermission(Manifest.permission.WRITE_EXTERNAL_STORAGE) != PackageManager.PERMISSION_GRANTED) {
15 super.requestPermissions(new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE}, 1);
16 }
17 }
1118 super.onCreate(savedInstanceState);
12 }
19 }
1320
1421 protected void onDestroy() {
1522 super.onDestroy();
1623 }
24
25 public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) {
26 super.onRequestPermissionsResult(requestCode, permissions, grantResults);
27
28 if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
29 // read/write permission granted, so we need to restart the app
30 // the dialog we pop up when unable to find mods leaks during the restart, so it ends up visible for a brief moment
31 if (grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED) {
32 super.recreate();
33 super.initialize();
34 super.onCreate(null);
35 } else {
36 super.finishAndRemoveTask();
37 super.initialize(); // need a clean state if the app is switched to again
38 }
39 }
40 }
41
42 protected String[] getLibraries() {
43 return new String[] {
44 "hidapi",
45 "SDL2",
46 "SDL2_image",
47 "mpg123",
48 "SDL2_mixer",
49 //"SDL2_net",
50 "SDL2_ttf",
51 "main"
52 };
53 }
1754 }
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.os.Build;
10 import android.util.Log;
11 import android.content.BroadcastReceiver;
12 import android.content.Context;
13 import android.content.DialogInterface;
14 import android.content.Intent;
15 import android.content.IntentFilter;
16 import android.content.SharedPreferences;
17 import android.content.pm.PackageManager;
18 import android.hardware.usb.*;
19 import android.os.Handler;
20 import android.os.Looper;
21
22 import java.util.ArrayList;
23 import java.util.HashMap;
24 import java.util.Iterator;
25 import java.util.List;
26
27 public class HIDDeviceManager {
28 private static final String TAG = "hidapi";
29 private static final String ACTION_USB_PERMISSION = "org.libsdl.app.USB_PERMISSION";
30
31 private static HIDDeviceManager sManager;
32 private static int sManagerRefCount = 0;
33
34 public static HIDDeviceManager acquire(Context context) {
35 if (sManagerRefCount == 0) {
36 sManager = new HIDDeviceManager(context);
37 }
38 ++sManagerRefCount;
39 return sManager;
40 }
41
42 public static void release(HIDDeviceManager manager) {
43 if (manager == sManager) {
44 --sManagerRefCount;
45 if (sManagerRefCount == 0) {
46 sManager.close();
47 sManager = null;
48 }
49 }
50 }
51
52 private Context mContext;
53 private HashMap<Integer, HIDDevice> mDevicesById = new HashMap<Integer, HIDDevice>();
54 private HashMap<BluetoothDevice, HIDDeviceBLESteamController> mBluetoothDevices = new HashMap<BluetoothDevice, HIDDeviceBLESteamController>();
55 private int mNextDeviceId = 0;
56 private SharedPreferences mSharedPreferences = null;
57 private boolean mIsChromebook = false;
58 private UsbManager mUsbManager;
59 private Handler mHandler;
60 private BluetoothManager mBluetoothManager;
61 private List<BluetoothDevice> mLastBluetoothDevices;
62
63 private final BroadcastReceiver mUsbBroadcast = new BroadcastReceiver() {
64 @Override
65 public void onReceive(Context context, Intent intent) {
66 String action = intent.getAction();
67 if (action.equals(UsbManager.ACTION_USB_DEVICE_ATTACHED)) {
68 UsbDevice usbDevice = intent.getParcelableExtra(UsbManager.EXTRA_DEVICE);
69 handleUsbDeviceAttached(usbDevice);
70 } else if (action.equals(UsbManager.ACTION_USB_DEVICE_DETACHED)) {
71 UsbDevice usbDevice = intent.getParcelableExtra(UsbManager.EXTRA_DEVICE);
72 handleUsbDeviceDetached(usbDevice);
73 } else if (action.equals(HIDDeviceManager.ACTION_USB_PERMISSION)) {
74 UsbDevice usbDevice = intent.getParcelableExtra(UsbManager.EXTRA_DEVICE);
75 handleUsbDevicePermission(usbDevice, intent.getBooleanExtra(UsbManager.EXTRA_PERMISSION_GRANTED, false));
76 }
77 }
78 };
79
80 private final BroadcastReceiver mBluetoothBroadcast = new BroadcastReceiver() {
81 @Override
82 public void onReceive(Context context, Intent intent) {
83 String action = intent.getAction();
84 // Bluetooth device was connected. If it was a Steam Controller, handle it
85 if (action.equals(BluetoothDevice.ACTION_ACL_CONNECTED)) {
86 BluetoothDevice device = intent.getParcelableExtra(BluetoothDevice.EXTRA_DEVICE);
87 Log.d(TAG, "Bluetooth device connected: " + device);
88
89 if (isSteamController(device)) {
90 connectBluetoothDevice(device);
91 }
92 }
93
94 // Bluetooth device was disconnected, remove from controller manager (if any)
95 if (action.equals(BluetoothDevice.ACTION_ACL_DISCONNECTED)) {
96 BluetoothDevice device = intent.getParcelableExtra(BluetoothDevice.EXTRA_DEVICE);
97 Log.d(TAG, "Bluetooth device disconnected: " + device);
98
99 disconnectBluetoothDevice(device);
100 }
101 }
102 };
103
104 private HIDDeviceManager(final Context context) {
105 mContext = context;
106
107 // Make sure we have the HIDAPI library loaded with the native functions
108 try {
109 SDL.loadLibrary("hidapi");
110 } catch (Throwable e) {
111 Log.w(TAG, "Couldn't load hidapi: " + e.toString());
112
113 AlertDialog.Builder builder = new AlertDialog.Builder(context);
114 builder.setCancelable(false);
115 builder.setTitle("SDL HIDAPI Error");
116 builder.setMessage("Please report the following error to the SDL maintainers: " + e.getMessage());
117 builder.setNegativeButton("Quit", new DialogInterface.OnClickListener() {
118 @Override
119 public void onClick(DialogInterface dialog, int which) {
120 try {
121 // If our context is an activity, exit rather than crashing when we can't
122 // call our native functions.
123 Activity activity = (Activity)context;
124
125 activity.finish();
126 }
127 catch (ClassCastException cce) {
128 // Context wasn't an activity, there's nothing we can do. Give up and return.
129 }
130 }
131 });
132 builder.show();
133
134 return;
135 }
136
137 HIDDeviceRegisterCallback();
138
139 mSharedPreferences = mContext.getSharedPreferences("hidapi", Context.MODE_PRIVATE);
140 mIsChromebook = mContext.getPackageManager().hasSystemFeature("org.chromium.arc.device_management");
141
142 // if (shouldClear) {
143 // SharedPreferences.Editor spedit = mSharedPreferences.edit();
144 // spedit.clear();
145 // spedit.commit();
146 // }
147 // else
148 {
149 mNextDeviceId = mSharedPreferences.getInt("next_device_id", 0);
150 }
151
152 initializeUSB();
153 initializeBluetooth();
154 }
155
156 public Context getContext() {
157 return mContext;
158 }
159
160 public int getDeviceIDForIdentifier(String identifier) {
161 SharedPreferences.Editor spedit = mSharedPreferences.edit();
162
163 int result = mSharedPreferences.getInt(identifier, 0);
164 if (result == 0) {
165 result = mNextDeviceId++;
166 spedit.putInt("next_device_id", mNextDeviceId);
167 }
168
169 spedit.putInt(identifier, result);
170 spedit.commit();
171 return result;
172 }
173
174 private void initializeUSB() {
175 mUsbManager = (UsbManager)mContext.getSystemService(Context.USB_SERVICE);
176
177 /*
178 // Logging
179 for (UsbDevice device : mUsbManager.getDeviceList().values()) {
180 Log.i(TAG,"Path: " + device.getDeviceName());
181 Log.i(TAG,"Manufacturer: " + device.getManufacturerName());
182 Log.i(TAG,"Product: " + device.getProductName());
183 Log.i(TAG,"ID: " + device.getDeviceId());
184 Log.i(TAG,"Class: " + device.getDeviceClass());
185 Log.i(TAG,"Protocol: " + device.getDeviceProtocol());
186 Log.i(TAG,"Vendor ID " + device.getVendorId());
187 Log.i(TAG,"Product ID: " + device.getProductId());
188 Log.i(TAG,"Interface count: " + device.getInterfaceCount());
189 Log.i(TAG,"---------------------------------------");
190
191 // Get interface details
192 for (int index = 0; index < device.getInterfaceCount(); index++) {
193 UsbInterface mUsbInterface = device.getInterface(index);
194 Log.i(TAG," ***** *****");
195 Log.i(TAG," Interface index: " + index);
196 Log.i(TAG," Interface ID: " + mUsbInterface.getId());
197 Log.i(TAG," Interface class: " + mUsbInterface.getInterfaceClass());
198 Log.i(TAG," Interface subclass: " + mUsbInterface.getInterfaceSubclass());
199 Log.i(TAG," Interface protocol: " + mUsbInterface.getInterfaceProtocol());
200 Log.i(TAG," Endpoint count: " + mUsbInterface.getEndpointCount());
201
202 // Get endpoint details
203 for (int epi = 0; epi < mUsbInterface.getEndpointCount(); epi++)
204 {
205 UsbEndpoint mEndpoint = mUsbInterface.getEndpoint(epi);
206 Log.i(TAG," ++++ ++++ ++++");
207 Log.i(TAG," Endpoint index: " + epi);
208 Log.i(TAG," Attributes: " + mEndpoint.getAttributes());
209 Log.i(TAG," Direction: " + mEndpoint.getDirection());
210 Log.i(TAG," Number: " + mEndpoint.getEndpointNumber());
211 Log.i(TAG," Interval: " + mEndpoint.getInterval());
212 Log.i(TAG," Packet size: " + mEndpoint.getMaxPacketSize());
213 Log.i(TAG," Type: " + mEndpoint.getType());
214 }
215 }
216 }
217 Log.i(TAG," No more devices connected.");
218 */
219
220 // Register for USB broadcasts and permission completions
221 IntentFilter filter = new IntentFilter();
222 filter.addAction(UsbManager.ACTION_USB_DEVICE_ATTACHED);
223 filter.addAction(UsbManager.ACTION_USB_DEVICE_DETACHED);
224 filter.addAction(HIDDeviceManager.ACTION_USB_PERMISSION);
225 mContext.registerReceiver(mUsbBroadcast, filter);
226
227 for (UsbDevice usbDevice : mUsbManager.getDeviceList().values()) {
228 handleUsbDeviceAttached(usbDevice);
229 }
230 }
231
232 UsbManager getUSBManager() {
233 return mUsbManager;
234 }
235
236 private void shutdownUSB() {
237 try {
238 mContext.unregisterReceiver(mUsbBroadcast);
239 } catch (Exception e) {
240 // We may not have registered, that's okay
241 }
242 }
243
244 private boolean isHIDDeviceInterface(UsbDevice usbDevice, UsbInterface usbInterface) {
245 if (usbInterface.getInterfaceClass() == UsbConstants.USB_CLASS_HID) {
246 return true;
247 }
248 if (isXbox360Controller(usbDevice, usbInterface) || isXboxOneController(usbDevice, usbInterface)) {
249 return true;
250 }
251 return false;
252 }
253
254 private boolean isXbox360Controller(UsbDevice usbDevice, UsbInterface usbInterface) {
255 final int XB360_IFACE_SUBCLASS = 93;
256 final int XB360_IFACE_PROTOCOL = 1; // Wired
257 final int XB360W_IFACE_PROTOCOL = 129; // Wireless
258 final int[] SUPPORTED_VENDORS = {
259 0x0079, // GPD Win 2
260 0x044f, // Thrustmaster
261 0x045e, // Microsoft
262 0x046d, // Logitech
263 0x056e, // Elecom
264 0x06a3, // Saitek
265 0x0738, // Mad Catz
266 0x07ff, // Mad Catz
267 0x0e6f, // PDP
268 0x0f0d, // Hori
269 0x1038, // SteelSeries
270 0x11c9, // Nacon
271 0x12ab, // Unknown
272 0x1430, // RedOctane
273 0x146b, // BigBen
274 0x1532, // Razer Sabertooth
275 0x15e4, // Numark
276 0x162e, // Joytech
277 0x1689, // Razer Onza
278 0x1949, // Lab126, Inc.
279 0x1bad, // Harmonix
280 0x24c6, // PowerA
281 };
282
283 if (usbInterface.getInterfaceClass() == UsbConstants.USB_CLASS_VENDOR_SPEC &&
284 usbInterface.getInterfaceSubclass() == XB360_IFACE_SUBCLASS &&
285 (usbInterface.getInterfaceProtocol() == XB360_IFACE_PROTOCOL ||
286 usbInterface.getInterfaceProtocol() == XB360W_IFACE_PROTOCOL)) {
287 int vendor_id = usbDevice.getVendorId();
288 for (int supportedVid : SUPPORTED_VENDORS) {
289 if (vendor_id == supportedVid) {
290 return true;
291 }
292 }
293 }
294 return false;
295 }
296
297 private boolean isXboxOneController(UsbDevice usbDevice, UsbInterface usbInterface) {
298 final int XB1_IFACE_SUBCLASS = 71;
299 final int XB1_IFACE_PROTOCOL = 208;
300 final int[] SUPPORTED_VENDORS = {
301 0x045e, // Microsoft
302 0x0738, // Mad Catz
303 0x0e6f, // PDP
304 0x0f0d, // Hori
305 0x1532, // Razer Wildcat
306 0x24c6, // PowerA
307 0x2e24, // Hyperkin
308 };
309
310 if (usbInterface.getId() == 0 &&
311 usbInterface.getInterfaceClass() == UsbConstants.USB_CLASS_VENDOR_SPEC &&
312 usbInterface.getInterfaceSubclass() == XB1_IFACE_SUBCLASS &&
313 usbInterface.getInterfaceProtocol() == XB1_IFACE_PROTOCOL) {
314 int vendor_id = usbDevice.getVendorId();
315 for (int supportedVid : SUPPORTED_VENDORS) {
316 if (vendor_id == supportedVid) {
317 return true;
318 }
319 }
320 }
321 return false;
322 }
323
324 private void handleUsbDeviceAttached(UsbDevice usbDevice) {
325 connectHIDDeviceUSB(usbDevice);
326 }
327
328 private void handleUsbDeviceDetached(UsbDevice usbDevice) {
329 List<Integer> devices = new ArrayList<Integer>();
330 for (HIDDevice device : mDevicesById.values()) {
331 if (usbDevice.equals(device.getDevice())) {
332 devices.add(device.getId());
333 }
334 }
335 for (int id : devices) {
336 HIDDevice device = mDevicesById.get(id);
337 mDevicesById.remove(id);
338 device.shutdown();
339 HIDDeviceDisconnected(id);
340 }
341 }
342
343 private void handleUsbDevicePermission(UsbDevice usbDevice, boolean permission_granted) {
344 for (HIDDevice device : mDevicesById.values()) {
345 if (usbDevice.equals(device.getDevice())) {
346 boolean opened = false;
347 if (permission_granted) {
348 opened = device.open();
349 }
350 HIDDeviceOpenResult(device.getId(), opened);
351 }
352 }
353 }
354
355 private void connectHIDDeviceUSB(UsbDevice usbDevice) {
356 synchronized (this) {
357 int interface_mask = 0;
358 for (int interface_index = 0; interface_index < usbDevice.getInterfaceCount(); interface_index++) {
359 UsbInterface usbInterface = usbDevice.getInterface(interface_index);
360 if (isHIDDeviceInterface(usbDevice, usbInterface)) {
361 // Check to see if we've already added this interface
362 // This happens with the Xbox Series X controller which has a duplicate interface 0, which is inactive
363 int interface_id = usbInterface.getId();
364 if ((interface_mask & (1 << interface_id)) != 0) {
365 continue;
366 }
367 interface_mask |= (1 << interface_id);
368
369 HIDDeviceUSB device = new HIDDeviceUSB(this, usbDevice, interface_index);
370 int id = device.getId();
371 mDevicesById.put(id, device);
372 HIDDeviceConnected(id, device.getIdentifier(), device.getVendorId(), device.getProductId(), device.getSerialNumber(), device.getVersion(), device.getManufacturerName(), device.getProductName(), usbInterface.getId(), usbInterface.getInterfaceClass(), usbInterface.getInterfaceSubclass(), usbInterface.getInterfaceProtocol());
373 }
374 }
375 }
376 }
377
378 private void initializeBluetooth() {
379 Log.d(TAG, "Initializing Bluetooth");
380
381 if (mContext.getPackageManager().checkPermission(android.Manifest.permission.BLUETOOTH, mContext.getPackageName()) != PackageManager.PERMISSION_GRANTED) {
382 Log.d(TAG, "Couldn't initialize Bluetooth, missing android.permission.BLUETOOTH");
383 return;
384 }
385
386 if (!mContext.getPackageManager().hasSystemFeature(PackageManager.FEATURE_BLUETOOTH_LE) || (Build.VERSION.SDK_INT < 18)) {
387 Log.d(TAG, "Couldn't initialize Bluetooth, this version of Android does not support Bluetooth LE");
388 return;
389 }
390
391 // Find bonded bluetooth controllers and create SteamControllers for them
392 mBluetoothManager = (BluetoothManager)mContext.getSystemService(Context.BLUETOOTH_SERVICE);
393 if (mBluetoothManager == null) {
394 // This device doesn't support Bluetooth.
395 return;
396 }
397
398 BluetoothAdapter btAdapter = mBluetoothManager.getAdapter();
399 if (btAdapter == null) {
400 // This device has Bluetooth support in the codebase, but has no available adapters.
401 return;
402 }
403
404 // Get our bonded devices.
405 for (BluetoothDevice device : btAdapter.getBondedDevices()) {
406
407 Log.d(TAG, "Bluetooth device available: " + device);
408 if (isSteamController(device)) {
409 connectBluetoothDevice(device);
410 }
411
412 }
413
414 // NOTE: These don't work on Chromebooks, to my undying dismay.
415 IntentFilter filter = new IntentFilter();
416 filter.addAction(BluetoothDevice.ACTION_ACL_CONNECTED);
417 filter.addAction(BluetoothDevice.ACTION_ACL_DISCONNECTED);
418 mContext.registerReceiver(mBluetoothBroadcast, filter);
419
420 if (mIsChromebook) {
421 mHandler = new Handler(Looper.getMainLooper());
422 mLastBluetoothDevices = new ArrayList<BluetoothDevice>();
423
424 // final HIDDeviceManager finalThis = this;
425 // mHandler.postDelayed(new Runnable() {
426 // @Override
427 // public void run() {
428 // finalThis.chromebookConnectionHandler();
429 // }
430 // }, 5000);
431 }
432 }
433
434 private void shutdownBluetooth() {
435 try {
436 mContext.unregisterReceiver(mBluetoothBroadcast);
437 } catch (Exception e) {
438 // We may not have registered, that's okay
439 }
440 }
441
442 // Chromebooks do not pass along ACTION_ACL_CONNECTED / ACTION_ACL_DISCONNECTED properly.
443 // This function provides a sort of dummy version of that, watching for changes in the
444 // connected devices and attempting to add controllers as things change.
445 public void chromebookConnectionHandler() {
446 if (!mIsChromebook) {
447 return;
448 }
449
450 ArrayList<BluetoothDevice> disconnected = new ArrayList<BluetoothDevice>();
451 ArrayList<BluetoothDevice> connected = new ArrayList<BluetoothDevice>();
452
453 List<BluetoothDevice> currentConnected = mBluetoothManager.getConnectedDevices(BluetoothProfile.GATT);
454
455 for (BluetoothDevice bluetoothDevice : currentConnected) {
456 if (!mLastBluetoothDevices.contains(bluetoothDevice)) {
457 connected.add(bluetoothDevice);
458 }
459 }
460 for (BluetoothDevice bluetoothDevice : mLastBluetoothDevices) {
461 if (!currentConnected.contains(bluetoothDevice)) {
462 disconnected.add(bluetoothDevice);
463 }
464 }
465
466 mLastBluetoothDevices = currentConnected;
467
468 for (BluetoothDevice bluetoothDevice : disconnected) {
469 disconnectBluetoothDevice(bluetoothDevice);
470 }
471 for (BluetoothDevice bluetoothDevice : connected) {
472 connectBluetoothDevice(bluetoothDevice);
473 }
474
475 final HIDDeviceManager finalThis = this;
476 mHandler.postDelayed(new Runnable() {
477 @Override
478 public void run() {
479 finalThis.chromebookConnectionHandler();
480 }
481 }, 10000);
482 }
483
484 public boolean connectBluetoothDevice(BluetoothDevice bluetoothDevice) {
485 Log.v(TAG, "connectBluetoothDevice device=" + bluetoothDevice);
486 synchronized (this) {
487 if (mBluetoothDevices.containsKey(bluetoothDevice)) {
488 Log.v(TAG, "Steam controller with address " + bluetoothDevice + " already exists, attempting reconnect");
489
490 HIDDeviceBLESteamController device = mBluetoothDevices.get(bluetoothDevice);
491 device.reconnect();
492
493 return false;
494 }
495 HIDDeviceBLESteamController device = new HIDDeviceBLESteamController(this, bluetoothDevice);
496 int id = device.getId();
497 mBluetoothDevices.put(bluetoothDevice, device);
498 mDevicesById.put(id, device);
499
500 // The Steam Controller will mark itself connected once initialization is complete
501 }
502 return true;
503 }
504
505 public void disconnectBluetoothDevice(BluetoothDevice bluetoothDevice) {
506 synchronized (this) {
507 HIDDeviceBLESteamController device = mBluetoothDevices.get(bluetoothDevice);
508 if (device == null)
509 return;
510
511 int id = device.getId();
512 mBluetoothDevices.remove(bluetoothDevice);
513 mDevicesById.remove(id);
514 device.shutdown();
515 HIDDeviceDisconnected(id);
516 }
517 }
518
519 public boolean isSteamController(BluetoothDevice bluetoothDevice) {
520 // Sanity check. If you pass in a null device, by definition it is never a Steam Controller.
521 if (bluetoothDevice == null) {
522 return false;
523 }
524
525 // If the device has no local name, we really don't want to try an equality check against it.
526 if (bluetoothDevice.getName() == null) {
527 return false;
528 }
529
530 return bluetoothDevice.getName().equals("SteamController") && ((bluetoothDevice.getType() & BluetoothDevice.DEVICE_TYPE_LE) != 0);
531 }
532
533 private void close() {
534 shutdownUSB();
535 shutdownBluetooth();
536 synchronized (this) {
537 for (HIDDevice device : mDevicesById.values()) {
538 device.shutdown();
539 }
540 mDevicesById.clear();
541 mBluetoothDevices.clear();
542 HIDDeviceReleaseCallback();
543 }
544 }
545
546 public void setFrozen(boolean frozen) {
547 synchronized (this) {
548 for (HIDDevice device : mDevicesById.values()) {
549 device.setFrozen(frozen);
550 }
551 }
552 }
553
554 //////////////////////////////////////////////////////////////////////////////////////////////////////
555 //////////////////////////////////////////////////////////////////////////////////////////////////////
556 //////////////////////////////////////////////////////////////////////////////////////////////////////
557
558 private HIDDevice getDevice(int id) {
559 synchronized (this) {
560 HIDDevice result = mDevicesById.get(id);
561 if (result == null) {
562 Log.v(TAG, "No device for id: " + id);
563 Log.v(TAG, "Available devices: " + mDevicesById.keySet());
564 }
565 return result;
566 }
567 }
568
569 //////////////////////////////////////////////////////////////////////////////////////////////////////
570 ////////// JNI interface functions
571 //////////////////////////////////////////////////////////////////////////////////////////////////////
572
573 public boolean openDevice(int deviceID) {
574 Log.v(TAG, "openDevice deviceID=" + deviceID);
575 HIDDevice device = getDevice(deviceID);
576 if (device == null) {
577 HIDDeviceDisconnected(deviceID);
578 return false;
579 }
580
581 // Look to see if this is a USB device and we have permission to access it
582 UsbDevice usbDevice = device.getDevice();
583 if (usbDevice != null && !mUsbManager.hasPermission(usbDevice)) {
584 HIDDeviceOpenPending(deviceID);
585 try {
586 mUsbManager.requestPermission(usbDevice, PendingIntent.getBroadcast(mContext, 0, new Intent(HIDDeviceManager.ACTION_USB_PERMISSION), 0));
587 } catch (Exception e) {
588 Log.v(TAG, "Couldn't request permission for USB device " + usbDevice);
589 HIDDeviceOpenResult(deviceID, false);
590 }
591 return false;
592 }
593
594 try {
595 return device.open();
596 } catch (Exception e) {
597 Log.e(TAG, "Got exception: " + Log.getStackTraceString(e));
598 }
599 return false;
600 }
601
602 public int sendOutputReport(int deviceID, byte[] report) {
603 try {
604 //Log.v(TAG, "sendOutputReport deviceID=" + deviceID + " length=" + report.length);
605 HIDDevice device;
606 device = getDevice(deviceID);
607 if (device == null) {
608 HIDDeviceDisconnected(deviceID);
609 return -1;
610 }
611
612 return device.sendOutputReport(report);
613 } catch (Exception e) {
614 Log.e(TAG, "Got exception: " + Log.getStackTraceString(e));
615 }
616 return -1;
617 }
618
619 public int sendFeatureReport(int deviceID, byte[] report) {
620 try {
621 //Log.v(TAG, "sendFeatureReport deviceID=" + deviceID + " length=" + report.length);
622 HIDDevice device;
623 device = getDevice(deviceID);
624 if (device == null) {
625 HIDDeviceDisconnected(deviceID);
626 return -1;
627 }
628
629 return device.sendFeatureReport(report);
630 } catch (Exception e) {
631 Log.e(TAG, "Got exception: " + Log.getStackTraceString(e));
632 }
633 return -1;
634 }
635
636 public boolean getFeatureReport(int deviceID, byte[] report) {
637 try {
638 //Log.v(TAG, "getFeatureReport deviceID=" + deviceID);
639 HIDDevice device;
640 device = getDevice(deviceID);
641 if (device == null) {
642 HIDDeviceDisconnected(deviceID);
643 return false;
644 }
645
646 return device.getFeatureReport(report);
647 } catch (Exception e) {
648 Log.e(TAG, "Got exception: " + Log.getStackTraceString(e));
649 }
650 return false;
651 }
652
653 public void closeDevice(int deviceID) {
654 try {
655 Log.v(TAG, "closeDevice deviceID=" + deviceID);
656 HIDDevice device;
657 device = getDevice(deviceID);
658 if (device == null) {
659 HIDDeviceDisconnected(deviceID);
660 return;
661 }
662
663 device.close();
664 } catch (Exception e) {
665 Log.e(TAG, "Got exception: " + Log.getStackTraceString(e));
666 }
667 }
668
669
670 //////////////////////////////////////////////////////////////////////////////////////////////////////
671 /////////////// Native methods
672 //////////////////////////////////////////////////////////////////////////////////////////////////////
673
674 private native void HIDDeviceRegisterCallback();
675 private native void HIDDeviceReleaseCallback();
676
677 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);
678 native void HIDDeviceOpenPending(int deviceID);
679 native void HIDDeviceOpenResult(int deviceID, boolean opened);
680 native void HIDDeviceDisconnected(int deviceID);
681
682 native void HIDDeviceInputReport(int deviceID, byte[] report);
683 native void HIDDeviceFeatureReport(int deviceID, byte[] report);
684 }
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.Class;
5 import java.lang.reflect.Method;
36
47 /**
58 SDL library initialization
3235 return mContext;
3336 }
3437
38 public static void loadLibrary(String libraryName) throws UnsatisfiedLinkError, SecurityException, NullPointerException {
39
40 if (libraryName == null) {
41 throw new NullPointerException("No library name provided.");
42 }
43
44 try {
45 // Let's see if we have ReLinker available in the project. This is necessary for
46 // some projects that have huge numbers of local libraries bundled, and thus may
47 // trip a bug in Android's native library loader which ReLinker works around. (If
48 // loadLibrary works properly, ReLinker will simply use the normal Android method
49 // internally.)
50 //
51 // To use ReLinker, just add it as a dependency. For more information, see
52 // https://github.com/KeepSafe/ReLinker for ReLinker's repository.
53 //
54 Class<?> relinkClass = mContext.getClassLoader().loadClass("com.getkeepsafe.relinker.ReLinker");
55 Class<?> relinkListenerClass = mContext.getClassLoader().loadClass("com.getkeepsafe.relinker.ReLinker$LoadListener");
56 Class<?> contextClass = mContext.getClassLoader().loadClass("android.content.Context");
57 Class<?> stringClass = mContext.getClassLoader().loadClass("java.lang.String");
58
59 // Get a 'force' instance of the ReLinker, so we can ensure libraries are reinstalled if
60 // they've changed during updates.
61 Method forceMethod = relinkClass.getDeclaredMethod("force");
62 Object relinkInstance = forceMethod.invoke(null);
63 Class<?> relinkInstanceClass = relinkInstance.getClass();
64
65 // Actually load the library!
66 Method loadMethod = relinkInstanceClass.getDeclaredMethod("loadLibrary", contextClass, stringClass, stringClass, relinkListenerClass);
67 loadMethod.invoke(relinkInstance, mContext, libraryName, null, null);
68 }
69 catch (final Throwable e) {
70 // Fall back
71 try {
72 System.loadLibrary(libraryName);
73 }
74 catch (final UnsatisfiedLinkError ule) {
75 throw ule;
76 }
77 catch (final SecurityException se) {
78 throw se;
79 }
80 }
81 }
82
3583 protected static Context mContext;
3684 }
00 package org.libsdl.app;
11
2 import java.io.IOException;
3 import java.io.InputStream;
4 import java.util.Arrays;
5 import java.util.Hashtable;
6 import java.lang.reflect.Method;
7
8 import android.app.*;
9 import android.content.*;
2 import android.app.Activity;
3 import android.app.AlertDialog;
4 import android.app.Dialog;
5 import android.app.UiModeManager;
6 import android.content.ClipboardManager;
7 import android.content.ClipData;
8 import android.content.Context;
9 import android.content.DialogInterface;
10 import android.content.Intent;
11 import android.content.pm.ActivityInfo;
12 import android.content.pm.ApplicationInfo;
13 import android.content.pm.PackageManager;
1014 import android.content.res.Configuration;
15 import android.graphics.Bitmap;
16 import android.graphics.Color;
17 import android.graphics.PixelFormat;
18 import android.graphics.PorterDuff;
19 import android.graphics.drawable.Drawable;
20 import android.hardware.Sensor;
21 import android.hardware.SensorEvent;
22 import android.hardware.SensorEventListener;
23 import android.hardware.SensorManager;
24 import android.net.Uri;
25 import android.os.Build;
26 import android.os.Bundle;
27 import android.os.Handler;
28 import android.os.Message;
1129 import android.text.InputType;
12 import android.view.*;
30 import android.util.DisplayMetrics;
31 import android.util.Log;
32 import android.util.SparseArray;
33 import android.view.Display;
34 import android.view.Gravity;
35 import android.view.InputDevice;
36 import android.view.KeyEvent;
37 import android.view.MotionEvent;
38 import android.view.PointerIcon;
39 import android.view.Surface;
40 import android.view.SurfaceHolder;
41 import android.view.SurfaceView;
42 import android.view.View;
43 import android.view.ViewGroup;
44 import android.view.Window;
45 import android.view.WindowManager;
1346 import android.view.inputmethod.BaseInputConnection;
1447 import android.view.inputmethod.EditorInfo;
1548 import android.view.inputmethod.InputConnection;
1649 import android.view.inputmethod.InputMethodManager;
17 import android.widget.RelativeLayout;
1850 import android.widget.Button;
1951 import android.widget.LinearLayout;
52 import android.widget.RelativeLayout;
2053 import android.widget.TextView;
21 import android.os.*;
22 import android.util.DisplayMetrics;
23 import android.util.Log;
24 import android.util.SparseArray;
25 import android.graphics.*;
26 import android.graphics.drawable.Drawable;
27 import android.hardware.*;
28 import android.content.pm.ActivityInfo;
29 import android.content.pm.PackageManager;
30 import android.content.pm.ApplicationInfo;
54 import android.widget.Toast;
55
56 import java.util.Hashtable;
57 import java.util.Locale;
58
3159
3260 /**
3361 SDL Activity
3462 */
35 public class SDLActivity extends Activity {
63 public class SDLActivity extends Activity implements View.OnSystemUiVisibilityChangeListener {
3664 private static final String TAG = "SDL";
3765
38 public static boolean mIsResumedCalled, mIsSurfaceReady, mHasFocus;
66 public static boolean mIsResumedCalled, mHasFocus;
67 public static final boolean mHasMultiWindow = (Build.VERSION.SDK_INT >= 24);
3968
4069 // Cursor types
41 private static final int SDL_SYSTEM_CURSOR_NONE = -1;
70 // private static final int SDL_SYSTEM_CURSOR_NONE = -1;
4271 private static final int SDL_SYSTEM_CURSOR_ARROW = 0;
4372 private static final int SDL_SYSTEM_CURSOR_IBEAM = 1;
4473 private static final int SDL_SYSTEM_CURSOR_WAIT = 2;
5281 private static final int SDL_SYSTEM_CURSOR_NO = 10;
5382 private static final int SDL_SYSTEM_CURSOR_HAND = 11;
5483
84 protected static final int SDL_ORIENTATION_UNKNOWN = 0;
85 protected static final int SDL_ORIENTATION_LANDSCAPE = 1;
86 protected static final int SDL_ORIENTATION_LANDSCAPE_FLIPPED = 2;
87 protected static final int SDL_ORIENTATION_PORTRAIT = 3;
88 protected static final int SDL_ORIENTATION_PORTRAIT_FLIPPED = 4;
89
90 protected static int mCurrentOrientation;
91 protected static Locale mCurrentLocale;
92
5593 // Handle the state of the native layer
5694 public enum NativeState {
5795 INIT, RESUMED, PAUSED
6098 public static NativeState mNextNativeState;
6199 public static NativeState mCurrentNativeState;
62100
63 public static boolean mExitCalledFromJava;
64
65101 /** If shared libraries (e.g. SDL or the native application) could not be loaded. */
66 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;
102 public static boolean mBrokenLibraries = true;
71103
72104 // Main components
73105 protected static SDLActivity mSingleton;
76108 protected static boolean mScreenKeyboardShown;
77109 protected static ViewGroup mLayout;
78110 protected static SDLClipboardHandler mClipboardHandler;
79 protected static Hashtable<Integer, Object> mCursors;
111 protected static Hashtable<Integer, PointerIcon> mCursors;
80112 protected static int mLastCursorID;
81
113 protected static SDLGenericMotionListener_API12 mMotionListener;
114 protected static HIDDeviceManager mHIDDeviceManager;
82115
83116 // This is what SDL runs in. It invokes SDL_main(), eventually
84117 protected static Thread mSDLThread;
118
119 protected static SDLGenericMotionListener_API12 getMotionListener() {
120 if (mMotionListener == null) {
121 if (Build.VERSION.SDK_INT >= 26) {
122 mMotionListener = new SDLGenericMotionListener_API26();
123 } else if (Build.VERSION.SDK_INT >= 24) {
124 mMotionListener = new SDLGenericMotionListener_API24();
125 } else {
126 mMotionListener = new SDLGenericMotionListener_API12();
127 }
128 }
129
130 return mMotionListener;
131 }
85132
86133 /**
87134 * This method returns the name of the shared object with the application entry point
95142 } else {
96143 library = "libmain.so";
97144 }
98 return library;
145 return getContext().getApplicationInfo().nativeLibraryDir + "/" + library;
99146 }
100147
101148 /**
116163 */
117164 protected String[] getLibraries() {
118165 return new String[] {
166 "hidapi",
119167 "SDL2",
120168 // "SDL2_image",
121169 // "SDL2_mixer",
128176 // Load the .so
129177 public void loadLibraries() {
130178 for (String lib : getLibraries()) {
131 System.loadLibrary(lib);
179 SDL.loadLibrary(lib);
132180 }
133181 }
134182
150198 mTextEdit = null;
151199 mLayout = null;
152200 mClipboardHandler = null;
153 mCursors = new Hashtable<Integer, Object>();
201 mCursors = new Hashtable<Integer, PointerIcon>();
154202 mLastCursorID = 0;
155203 mSDLThread = null;
156 mExitCalledFromJava = false;
157 mBrokenLibraries = false;
158204 mIsResumedCalled = false;
159 mIsSurfaceReady = false;
160205 mHasFocus = true;
161206 mNextNativeState = NativeState.INIT;
162207 mCurrentNativeState = NativeState.INIT;
165210 // Setup
166211 @Override
167212 protected void onCreate(Bundle savedInstanceState) {
168 Log.v(TAG, "Device: " + android.os.Build.DEVICE);
169 Log.v(TAG, "Model: " + android.os.Build.MODEL);
213 Log.v(TAG, "Device: " + Build.DEVICE);
214 Log.v(TAG, "Model: " + Build.MODEL);
170215 Log.v(TAG, "onCreate()");
171216 super.onCreate(savedInstanceState);
217
218 try {
219 Thread.currentThread().setName("SDLActivity");
220 } catch (Exception e) {
221 Log.v(TAG, "modify thread properties failed " + e.toString());
222 }
172223
173224 // Load shared libraries
174225 String errorMsgBrokenLib = "";
175226 try {
176227 loadLibraries();
228 mBrokenLibraries = false; /* success */
177229 } catch(UnsatisfiedLinkError e) {
178230 System.err.println(e.getMessage());
179231 mBrokenLibraries = true;
217269 mSingleton = this;
218270 SDL.setContext(this);
219271
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 }
272 mClipboardHandler = new SDLClipboardHandler();
273
274 mHIDDeviceManager = HIDDeviceManager.acquire(this);
226275
227276 // Set up the surface
228277 mSurface = new SDLSurface(getApplication());
230279 mLayout = new RelativeLayout(this);
231280 mLayout.addView(mSurface);
232281
282 // Get our current screen orientation and pass it down.
283 mCurrentOrientation = SDLActivity.getCurrentOrientation();
284 // Only record current orientation
285 SDLActivity.onNativeOrientationChanged(mCurrentOrientation);
286
287 try {
288 if (Build.VERSION.SDK_INT < 24) {
289 mCurrentLocale = getContext().getResources().getConfiguration().locale;
290 } else {
291 mCurrentLocale = getContext().getResources().getConfiguration().getLocales().get(0);
292 }
293 } catch(Exception ignored) {
294 }
295
233296 setContentView(mLayout);
234297
235298 setWindowStyle(false);
299
300 getWindow().getDecorView().setOnSystemUiVisibilityChangeListener(this);
236301
237302 // Get filename from "Open with" of another application
238303 Intent intent = getIntent();
245310 }
246311 }
247312
313 protected void pauseNativeThread() {
314 mNextNativeState = NativeState.PAUSED;
315 mIsResumedCalled = false;
316
317 if (SDLActivity.mBrokenLibraries) {
318 return;
319 }
320
321 SDLActivity.handleNativeState();
322 }
323
324 protected void resumeNativeThread() {
325 mNextNativeState = NativeState.RESUMED;
326 mIsResumedCalled = true;
327
328 if (SDLActivity.mBrokenLibraries) {
329 return;
330 }
331
332 SDLActivity.handleNativeState();
333 }
334
248335 // Events
249336 @Override
250337 protected void onPause() {
251338 Log.v(TAG, "onPause()");
252339 super.onPause();
253 mNextNativeState = NativeState.PAUSED;
254 mIsResumedCalled = false;
255
256 if (SDLActivity.mBrokenLibraries) {
257 return;
258 }
259
260 SDLActivity.handleNativeState();
340
341 if (mHIDDeviceManager != null) {
342 mHIDDeviceManager.setFrozen(true);
343 }
344 if (!mHasMultiWindow) {
345 pauseNativeThread();
346 }
261347 }
262348
263349 @Override
264350 protected void onResume() {
265351 Log.v(TAG, "onResume()");
266352 super.onResume();
267 mNextNativeState = NativeState.RESUMED;
268 mIsResumedCalled = true;
269
270 if (SDLActivity.mBrokenLibraries) {
271 return;
272 }
273
274 SDLActivity.handleNativeState();
275 }
276
353
354 if (mHIDDeviceManager != null) {
355 mHIDDeviceManager.setFrozen(false);
356 }
357 if (!mHasMultiWindow) {
358 resumeNativeThread();
359 }
360 }
361
362 @Override
363 protected void onStop() {
364 Log.v(TAG, "onStop()");
365 super.onStop();
366 if (mHasMultiWindow) {
367 pauseNativeThread();
368 }
369 }
370
371 @Override
372 protected void onStart() {
373 Log.v(TAG, "onStart()");
374 super.onStart();
375 if (mHasMultiWindow) {
376 resumeNativeThread();
377 }
378 }
379
380 public static int getCurrentOrientation() {
381 final Context context = SDLActivity.getContext();
382 final Display display = ((WindowManager) context.getSystemService(Context.WINDOW_SERVICE)).getDefaultDisplay();
383
384 int result = SDL_ORIENTATION_UNKNOWN;
385
386 switch (display.getRotation()) {
387 case Surface.ROTATION_0:
388 result = SDL_ORIENTATION_PORTRAIT;
389 break;
390
391 case Surface.ROTATION_90:
392 result = SDL_ORIENTATION_LANDSCAPE;
393 break;
394
395 case Surface.ROTATION_180:
396 result = SDL_ORIENTATION_PORTRAIT_FLIPPED;
397 break;
398
399 case Surface.ROTATION_270:
400 result = SDL_ORIENTATION_LANDSCAPE_FLIPPED;
401 break;
402 }
403
404 return result;
405 }
277406
278407 @Override
279408 public void onWindowFocusChanged(boolean hasFocus) {
284413 return;
285414 }
286415
287 SDLActivity.mHasFocus = hasFocus;
416 mHasFocus = hasFocus;
288417 if (hasFocus) {
289418 mNextNativeState = NativeState.RESUMED;
419 SDLActivity.getMotionListener().reclaimRelativeMouseModeIfNeeded();
420
421 SDLActivity.handleNativeState();
422 nativeFocusChanged(true);
423
290424 } else {
291 mNextNativeState = NativeState.PAUSED;
292 }
293
294 SDLActivity.handleNativeState();
425 nativeFocusChanged(false);
426 if (!mHasMultiWindow) {
427 mNextNativeState = NativeState.PAUSED;
428 SDLActivity.handleNativeState();
429 }
430 }
295431 }
296432
297433 @Override
307443 }
308444
309445 @Override
446 public void onConfigurationChanged(Configuration newConfig) {
447 Log.v(TAG, "onConfigurationChanged()");
448 super.onConfigurationChanged(newConfig);
449
450 if (SDLActivity.mBrokenLibraries) {
451 return;
452 }
453
454 if (mCurrentLocale == null || !mCurrentLocale.equals(newConfig.locale)) {
455 mCurrentLocale = newConfig.locale;
456 SDLActivity.onNativeLocaleChanged();
457 }
458 }
459
460 @Override
310461 protected void onDestroy() {
311462 Log.v(TAG, "onDestroy()");
312463
464 if (mHIDDeviceManager != null) {
465 HIDDeviceManager.release(mHIDDeviceManager);
466 mHIDDeviceManager = null;
467 }
468
313469 if (SDLActivity.mBrokenLibraries) {
314470 super.onDestroy();
315 // Reset everything in case the user re opens the app
316 SDLActivity.initialize();
317471 return;
318472 }
319473
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
328474 if (SDLActivity.mSDLThread != null) {
475
476 // Send Quit event to "SDLThread" thread
477 SDLActivity.nativeSendQuit();
478
479 // Wait for "SDLThread" thread to end
329480 try {
330481 SDLActivity.mSDLThread.join();
331482 } 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 }
483 Log.v(TAG, "Problem stopping SDLThread: " + e);
484 }
485 }
486
487 SDLActivity.nativeQuit();
338488
339489 super.onDestroy();
340
341 // Reset everything in case the user re opens the app
342 SDLActivity.initialize();
490 }
491
492 @Override
493 public void onBackPressed() {
494 // Check if we want to block the back button in case of mouse right click.
495 //
496 // If we do, the normal hardware back button will no longer work and people have to use home,
497 // but the mouse right click will work.
498 //
499 String trapBack = SDLActivity.nativeGetHint("SDL_ANDROID_TRAP_BACK_BUTTON");
500 if ((trapBack != null) && trapBack.equals("1")) {
501 // Exit and let the mouse handler handle this button (if appropriate)
502 return;
503 }
504
505 // Default system back button behavior.
506 if (!isFinishing()) {
507 super.onBackPressed();
508 }
509 }
510
511 // Called by JNI from SDL.
512 public static void manualBackButton() {
513 mSingleton.pressBackButton();
514 }
515
516 // Used to get us onto the activity's main thread
517 public void pressBackButton() {
518 runOnUiThread(new Runnable() {
519 @Override
520 public void run() {
521 if (!SDLActivity.this.isFinishing()) {
522 SDLActivity.this.superOnBackPressed();
523 }
524 }
525 });
526 }
527
528 // Used to access the system back behavior.
529 public void superOnBackPressed() {
530 super.onBackPressed();
343531 }
344532
345533 @Override
379567
380568 // Try a transition to paused state
381569 if (mNextNativeState == NativeState.PAUSED) {
382 nativePause();
383 if (mSurface != null)
570 if (mSDLThread != null) {
571 nativePause();
572 }
573 if (mSurface != null) {
384574 mSurface.handlePause();
575 }
385576 mCurrentNativeState = mNextNativeState;
386577 return;
387578 }
388579
389580 // Try a transition to resumed state
390581 if (mNextNativeState == NativeState.RESUMED) {
391 if (mIsSurfaceReady && mHasFocus && mIsResumedCalled) {
582 if (mSurface.mIsSurfaceReady && mHasFocus && mIsResumedCalled) {
392583 if (mSDLThread == null) {
393584 // This is the entry point to the C app.
394585 // Start up the C app thread and enable sensor input for the first time
397588 mSDLThread = new Thread(new SDLMain(), "SDLThread");
398589 mSurface.enableSensor(Sensor.TYPE_ACCELEROMETER, true);
399590 mSDLThread.start();
400 }
401
402 nativeResume();
591
592 // No nativeResume(), don't signal Android_ResumeSem
593 } else {
594 nativeResume();
595 }
403596 mSurface.handleResume();
597
404598 mCurrentNativeState = mNextNativeState;
405599 }
406600 }
407601 }
408
409 /* The native thread has finished */
410 public static void handleNativeExit() {
411 SDLActivity.mSDLThread = null;
412 mSingleton.finish();
413 }
414
415602
416603 // Messages from the SDLMain thread
417604 static final int COMMAND_CHANGE_TITLE = 1;
420607 static final int COMMAND_SET_KEEP_SCREEN_ON = 5;
421608
422609 protected static final int COMMAND_USER = 0x8000;
610
611 protected static boolean mFullscreenModeActive;
423612
424613 /**
425614 * This method is called by SDL if SDL did not handle a message itself.
455644 }
456645 break;
457646 case COMMAND_CHANGE_WINDOW_STYLE:
458 if (Build.VERSION.SDK_INT < 19) {
459 // This version of Android doesn't support the immersive fullscreen mode
460 break;
461 }
462 /* This needs more testing, per bug 4096 - Enabling fullscreen on Android causes the app to toggle fullscreen mode continuously in a loop
463 ***
464 if (context instanceof Activity) {
465 Window window = ((Activity) context).getWindow();
466 if (window != null) {
467 if ((msg.obj instanceof Integer) && (((Integer) msg.obj).intValue() != 0)) {
468 int flags = View.SYSTEM_UI_FLAG_LAYOUT_STABLE |
647 if (Build.VERSION.SDK_INT >= 19) {
648 if (context instanceof Activity) {
649 Window window = ((Activity) context).getWindow();
650 if (window != null) {
651 if ((msg.obj instanceof Integer) && ((Integer) msg.obj != 0)) {
652 int flags = View.SYSTEM_UI_FLAG_FULLSCREEN |
653 View.SYSTEM_UI_FLAG_HIDE_NAVIGATION |
654 View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY |
655 View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN |
469656 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);
475 window.addFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN);
476 } else {
477 int flags = View.SYSTEM_UI_FLAG_LAYOUT_STABLE;
478 window.getDecorView().setSystemUiVisibility(flags);
479 window.clearFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN);
657 View.SYSTEM_UI_FLAG_LAYOUT_STABLE | View.INVISIBLE;
658 window.getDecorView().setSystemUiVisibility(flags);
659 window.addFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN);
660 window.clearFlags(WindowManager.LayoutParams.FLAG_FORCE_NOT_FULLSCREEN);
661 SDLActivity.mFullscreenModeActive = true;
662 } else {
663 int flags = View.SYSTEM_UI_FLAG_LAYOUT_STABLE | View.SYSTEM_UI_FLAG_VISIBLE;
664 window.getDecorView().setSystemUiVisibility(flags);
665 window.addFlags(WindowManager.LayoutParams.FLAG_FORCE_NOT_FULLSCREEN);
666 window.clearFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN);
667 SDLActivity.mFullscreenModeActive = false;
668 }
480669 }
670 } else {
671 Log.e(TAG, "error handling message, getContext() returned no Activity");
481672 }
482 } else {
483 Log.e(TAG, "error handling message, getContext() returned no Activity");
484 }
485 ***/
673 }
486674 break;
487675 case COMMAND_TEXTEDIT_HIDE:
488676 if (mTextEdit != null) {
493681
494682 InputMethodManager imm = (InputMethodManager) context.getSystemService(Context.INPUT_METHOD_SERVICE);
495683 imm.hideSoftInputFromWindow(mTextEdit.getWindowToken(), 0);
496
684
497685 mScreenKeyboardShown = false;
686
687 mSurface.requestFocus();
498688 }
499689 break;
500690 case COMMAND_SET_KEEP_SCREEN_ON:
502692 if (context instanceof Activity) {
503693 Window window = ((Activity) context).getWindow();
504694 if (window != null) {
505 if ((msg.obj instanceof Integer) && (((Integer) msg.obj).intValue() != 0)) {
695 if ((msg.obj instanceof Integer) && ((Integer) msg.obj != 0)) {
506696 window.addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
507697 } else {
508698 window.clearFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
527717 Message msg = commandHandler.obtainMessage();
528718 msg.arg1 = command;
529719 msg.obj = data;
530 return commandHandler.sendMessage(msg);
720 boolean result = commandHandler.sendMessage(msg);
721
722 if (Build.VERSION.SDK_INT >= 19) {
723 if (command == COMMAND_CHANGE_WINDOW_STYLE) {
724 // Ensure we don't return until the resize has actually happened,
725 // or 500ms have passed.
726
727 boolean bShouldWait = false;
728
729 if (data instanceof Integer) {
730 // Let's figure out if we're already laid out fullscreen or not.
731 Display display = ((WindowManager) getSystemService(Context.WINDOW_SERVICE)).getDefaultDisplay();
732 DisplayMetrics realMetrics = new DisplayMetrics();
733 display.getRealMetrics(realMetrics);
734
735 boolean bFullscreenLayout = ((realMetrics.widthPixels == mSurface.getWidth()) &&
736 (realMetrics.heightPixels == mSurface.getHeight()));
737
738 if ((Integer) data == 1) {
739 // If we aren't laid out fullscreen or actively in fullscreen mode already, we're going
740 // to change size and should wait for surfaceChanged() before we return, so the size
741 // is right back in native code. If we're already laid out fullscreen, though, we're
742 // not going to change size even if we change decor modes, so we shouldn't wait for
743 // surfaceChanged() -- which may not even happen -- and should return immediately.
744 bShouldWait = !bFullscreenLayout;
745 } else {
746 // If we're laid out fullscreen (even if the status bar and nav bar are present),
747 // or are actively in fullscreen, we're going to change size and should wait for
748 // surfaceChanged before we return, so the size is right back in native code.
749 bShouldWait = bFullscreenLayout;
750 }
751 }
752
753 if (bShouldWait && (SDLActivity.getContext() != null)) {
754 // We'll wait for the surfaceChanged() method, which will notify us
755 // when called. That way, we know our current size is really the
756 // size we need, instead of grabbing a size that's still got
757 // the navigation and/or status bars before they're hidden.
758 //
759 // We'll wait for up to half a second, because some devices
760 // take a surprisingly long time for the surface resize, but
761 // then we'll just give up and return.
762 //
763 synchronized (SDLActivity.getContext()) {
764 try {
765 SDLActivity.getContext().wait(500);
766 } catch (InterruptedException ie) {
767 ie.printStackTrace();
768 }
769 }
770 }
771 }
772 }
773
774 return result;
531775 }
532776
533777 // C functions we call
534778 public static native int nativeSetupJNI();
535779 public static native int nativeRunMain(String library, String function, Object arguments);
536780 public static native void nativeLowMemory();
781 public static native void nativeSendQuit();
537782 public static native void nativeQuit();
538783 public static native void nativePause();
539784 public static native void nativeResume();
785 public static native void nativeFocusChanged(boolean hasFocus);
540786 public static native void onNativeDropFile(String filename);
541 public static native void onNativeResize(int x, int y, int format, float rate);
787 public static native void nativeSetScreenResolution(int surfaceWidth, int surfaceHeight, int deviceWidth, int deviceHeight, float rate);
788 public static native void onNativeResize();
542789 public static native void onNativeKeyDown(int keycode);
543790 public static native void onNativeKeyUp(int keycode);
791 public static native boolean onNativeSoftReturnKey();
544792 public static native void onNativeKeyboardFocusLost();
545 public static native void onNativeMouse(int button, int action, float x, float y);
793 public static native void onNativeMouse(int button, int action, float x, float y, boolean relative);
546794 public static native void onNativeTouch(int touchDevId, int pointerFingerId,
547795 int action, float x,
548796 float y, float p);
549797 public static native void onNativeAccel(float x, float y, float z);
550798 public static native void onNativeClipboardChanged();
799 public static native void onNativeSurfaceCreated();
551800 public static native void onNativeSurfaceChanged();
552801 public static native void onNativeSurfaceDestroyed();
553802 public static native String nativeGetHint(String name);
554803 public static native void nativeSetenv(String name, String value);
804 public static native void onNativeOrientationChanged(int orientation);
805 public static native void nativeAddTouch(int touchId, String name);
806 public static native void nativePermissionResult(int requestCode, boolean result);
807 public static native void onNativeLocaleChanged();
555808
556809 /**
557810 * This method is called by SDL using JNI.
572825 /**
573826 * This method is called by SDL using JNI.
574827 * This is a static method for JNI convenience, it calls a non-static method
575 * so that is can be overridden
828 * so that is can be overridden
576829 */
577830 public static void setOrientation(int w, int h, boolean resizable, String hint)
578831 {
580833 mSingleton.setOrientationBis(w, h, resizable, hint);
581834 }
582835 }
583
836
584837 /**
585838 * This can be overridden
586839 */
587 public void setOrientationBis(int w, int h, boolean resizable, String hint)
840 public void setOrientationBis(int w, int h, boolean resizable, String hint)
588841 {
589 int orientation = -1;
590
842 int orientation_landscape = -1;
843 int orientation_portrait = -1;
844
845 /* If set, hint "explicitly controls which UI orientations are allowed". */
591846 if (hint.contains("LandscapeRight") && hint.contains("LandscapeLeft")) {
592 orientation = ActivityInfo.SCREEN_ORIENTATION_SENSOR_LANDSCAPE;
847 orientation_landscape = ActivityInfo.SCREEN_ORIENTATION_SENSOR_LANDSCAPE;
593848 } else if (hint.contains("LandscapeRight")) {
594 orientation = ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE;
849 orientation_landscape = ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE;
595850 } 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;
851 orientation_landscape = ActivityInfo.SCREEN_ORIENTATION_REVERSE_LANDSCAPE;
852 }
853
854 if (hint.contains("Portrait") && hint.contains("PortraitUpsideDown")) {
855 orientation_portrait = ActivityInfo.SCREEN_ORIENTATION_SENSOR_PORTRAIT;
599856 } else if (hint.contains("Portrait")) {
600 orientation = ActivityInfo.SCREEN_ORIENTATION_PORTRAIT;
857 orientation_portrait = ActivityInfo.SCREEN_ORIENTATION_PORTRAIT;
601858 } else if (hint.contains("PortraitUpsideDown")) {
602 orientation = ActivityInfo.SCREEN_ORIENTATION_REVERSE_PORTRAIT;
603 }
604
605 /* no valid hint */
606 if (orientation == -1) {
859 orientation_portrait = ActivityInfo.SCREEN_ORIENTATION_REVERSE_PORTRAIT;
860 }
861
862 boolean is_landscape_allowed = (orientation_landscape != -1);
863 boolean is_portrait_allowed = (orientation_portrait != -1);
864 int req; /* Requested orientation */
865
866 /* No valid hint, nothing is explicitly allowed */
867 if (!is_portrait_allowed && !is_landscape_allowed) {
607868 if (resizable) {
608 /* no fixed orientation */
869 /* All orientations are allowed */
870 req = ActivityInfo.SCREEN_ORIENTATION_FULL_SENSOR;
609871 } else {
610 if (w > h) {
611 orientation = ActivityInfo.SCREEN_ORIENTATION_SENSOR_LANDSCAPE;
872 /* Fixed window and nothing specified. Get orientation from w/h of created window */
873 req = (w > h ? ActivityInfo.SCREEN_ORIENTATION_SENSOR_LANDSCAPE : ActivityInfo.SCREEN_ORIENTATION_SENSOR_PORTRAIT);
874 }
875 } else {
876 /* At least one orientation is allowed */
877 if (resizable) {
878 if (is_portrait_allowed && is_landscape_allowed) {
879 /* hint allows both landscape and portrait, promote to full sensor */
880 req = ActivityInfo.SCREEN_ORIENTATION_FULL_SENSOR;
612881 } 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()
882 /* Use the only one allowed "orientation" */
883 req = (is_landscape_allowed ? orientation_landscape : orientation_portrait);
884 }
885 } else {
886 /* Fixed window and both orientations are allowed. Choose one. */
887 if (is_portrait_allowed && is_landscape_allowed) {
888 req = (w > h ? orientation_landscape : orientation_portrait);
889 } else {
890 /* Use the only one allowed "orientation" */
891 req = (is_landscape_allowed ? orientation_landscape : orientation_portrait);
892 }
893 }
894 }
895
896 Log.v(TAG, "setOrientation() requestedOrientation=" + req + " width=" + w +" height="+ h +" resizable=" + resizable + " hint=" + hint);
897 mSingleton.setRequestedOrientation(req);
898 }
899
900 /**
901 * This method is called by SDL using JNI.
902 */
903 public static void minimizeWindow() {
904
905 if (mSingleton == null) {
906 return;
907 }
908
909 Intent startMain = new Intent(Intent.ACTION_MAIN);
910 startMain.addCategory(Intent.CATEGORY_HOME);
911 startMain.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
912 mSingleton.startActivity(startMain);
913 }
914
915 /**
916 * This method is called by SDL using JNI.
917 */
918 public static boolean shouldMinimizeOnFocusLoss() {
919 /*
920 if (Build.VERSION.SDK_INT >= 24) {
921 if (mSingleton == null) {
922 return true;
923 }
924
925 if (mSingleton.isInMultiWindowMode()) {
926 return false;
927 }
928
929 if (mSingleton.isInPictureInPictureMode()) {
930 return false;
931 }
932 }
933
934 return true;
935 */
936 return false;
937 }
938
939 /**
940 * This method is called by SDL using JNI.
941 */
942 public static boolean isScreenKeyboardShown()
629943 {
630944 if (mTextEdit == null) {
631945 return false;
643957 /**
644958 * This method is called by SDL using JNI.
645959 */
960 public static boolean supportsRelativeMouse()
961 {
962 // DeX mode in Samsung Experience 9.0 and earlier doesn't support relative mice properly under
963 // Android 7 APIs, and simply returns no data under Android 8 APIs.
964 //
965 // This is fixed in Samsung Experience 9.5, which corresponds to Android 8.1.0, and
966 // thus SDK version 27. If we are in DeX mode and not API 27 or higher, as a result,
967 // we should stick to relative mode.
968 //
969 if ((Build.VERSION.SDK_INT < 27) && isDeXMode()) {
970 return false;
971 }
972
973 return SDLActivity.getMotionListener().supportsRelativeMouse();
974 }
975
976 /**
977 * This method is called by SDL using JNI.
978 */
979 public static boolean setRelativeMouseEnabled(boolean enabled)
980 {
981 if (enabled && !supportsRelativeMouse()) {
982 return false;
983 }
984
985 return SDLActivity.getMotionListener().setRelativeMouseEnabled(enabled);
986 }
987
988 /**
989 * This method is called by SDL using JNI.
990 */
646991 public static boolean sendMessage(int command, int param) {
647992 if (mSingleton == null) {
648993 return false;
649994 }
650 return mSingleton.sendCommand(command, Integer.valueOf(param));
995 return mSingleton.sendCommand(command, param);
651996 }
652997
653998 /**
6621007 */
6631008 public static boolean isAndroidTV() {
6641009 UiModeManager uiModeManager = (UiModeManager) getContext().getSystemService(UI_MODE_SERVICE);
665 return (uiModeManager.getCurrentModeType() == Configuration.UI_MODE_TYPE_TELEVISION);
1010 if (uiModeManager.getCurrentModeType() == Configuration.UI_MODE_TYPE_TELEVISION) {
1011 return true;
1012 }
1013 if (Build.MANUFACTURER.equals("MINIX") && Build.MODEL.equals("NEO-U1")) {
1014 return true;
1015 }
1016 if (Build.MANUFACTURER.equals("Amlogic") && Build.MODEL.equals("X96-W")) {
1017 return true;
1018 }
1019 return Build.MANUFACTURER.equals("Amlogic") && Build.MODEL.startsWith("TV");
1020 }
1021
1022 public static double getDiagonal()
1023 {
1024 DisplayMetrics metrics = new DisplayMetrics();
1025 Activity activity = (Activity)getContext();
1026 if (activity == null) {
1027 return 0.0;
1028 }
1029 activity.getWindowManager().getDefaultDisplay().getMetrics(metrics);
1030
1031 double dWidthInches = metrics.widthPixels / (double)metrics.xdpi;
1032 double dHeightInches = metrics.heightPixels / (double)metrics.ydpi;
1033
1034 return Math.sqrt((dWidthInches * dWidthInches) + (dHeightInches * dHeightInches));
1035 }
1036
1037 /**
1038 * This method is called by SDL using JNI.
1039 */
1040 public static boolean isTablet() {
1041 // If our diagonal size is seven inches or greater, we consider ourselves a tablet.
1042 return (getDiagonal() >= 7.0);
1043 }
1044
1045 /**
1046 * This method is called by SDL using JNI.
1047 */
1048 public static boolean isChromebook() {
1049 if (getContext() == null) {
1050 return false;
1051 }
1052 return getContext().getPackageManager().hasSystemFeature("org.chromium.arc.device_management");
1053 }
1054
1055 /**
1056 * This method is called by SDL using JNI.
1057 */
1058 public static boolean isDeXMode() {
1059 if (Build.VERSION.SDK_INT < 24) {
1060 return false;
1061 }
1062 try {
1063 final Configuration config = getContext().getResources().getConfiguration();
1064 final Class<?> configClass = config.getClass();
1065 return configClass.getField("SEM_DESKTOP_MODE_ENABLED").getInt(configClass)
1066 == configClass.getField("semDesktopModeEnabled").getInt(config);
1067 } catch(Exception ignored) {
1068 return false;
1069 }
6661070 }
6671071
6681072 /**
6771081 */
6781082 public static boolean getManifestEnvironmentVariables() {
6791083 try {
1084 if (getContext() == null) {
1085 return false;
1086 }
1087
6801088 ApplicationInfo applicationInfo = getContext().getPackageManager().getApplicationInfo(getContext().getPackageName(), PackageManager.GET_META_DATA);
6811089 Bundle bundle = applicationInfo.metaData;
6821090 if (bundle == null) {
6921100 }
6931101 }
6941102 /* environment variables set! */
695 return true;
1103 return true;
6961104 } catch (Exception e) {
697 Log.v("SDL", "exception " + e.toString());
1105 Log.v(TAG, "exception " + e.toString());
6981106 }
6991107 return false;
1108 }
1109
1110 // This method is called by SDLControllerManager's API 26 Generic Motion Handler.
1111 public static View getContentView()
1112 {
1113 return mLayout;
7001114 }
7011115
7021116 static class ShowTextInputTask implements Runnable {
7141128 this.y = y;
7151129 this.w = w;
7161130 this.h = h;
1131
1132 /* Minimum size of 1 pixel, so it takes focus. */
1133 if (this.w <= 0) {
1134 this.w = 1;
1135 }
1136 if (this.h + HEIGHT_PADDING <= 0) {
1137 this.h = 1 - HEIGHT_PADDING;
1138 }
7171139 }
7181140
7191141 @Override
7491171 }
7501172
7511173 public static boolean isTextInputEvent(KeyEvent event) {
752
1174
7531175 // 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 }
1176 if (event.isCtrlPressed()) {
1177 return false;
7581178 }
7591179
7601180 return event.isPrintingKey() || event.getKeyCode() == KeyEvent.KEYCODE_SPACE;
7741194
7751195 /**
7761196 * 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) {
1197 */
1198 public static void initTouch() {
7801199 int[] ids = InputDevice.getDeviceIds();
781 int[] filtered = new int[ids.length];
782 int used = 0;
783 for (int i = 0; i < ids.length; ++i) {
784 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);
790 }
791
792 // APK expansion files support
793
794 /** com.android.vending.expansion.zipfile.ZipResourceFile object or null. */
795 private static Object expansionFile;
796
797 /** com.android.vending.expansion.zipfile.ZipResourceFile's getInputStream() or null. */
798 private static Method expansionFileMethod;
799
800 /**
801 * This method is called by SDL using JNI.
802 * @return an InputStream on success or null if no expansion file was used.
803 * @throws IOException on errors. Message is set for the SDL error message.
804 */
805 public static InputStream openAPKExpansionInputStream(String fileName) throws IOException {
806 // Get a ZipResourceFile representing a merger of both the main and patch files
807 if (expansionFile == null) {
808 String mainHint = nativeGetHint("SDL_ANDROID_APK_EXPANSION_MAIN_FILE_VERSION");
809 if (mainHint == null) {
810 return null; // no expansion use if no main version was set
811 }
812 String patchHint = nativeGetHint("SDL_ANDROID_APK_EXPANSION_PATCH_FILE_VERSION");
813 if (patchHint == null) {
814 return null; // no expansion use if no patch version was set
815 }
816
817 Integer mainVersion;
818 Integer patchVersion;
819 try {
820 mainVersion = Integer.valueOf(mainHint);
821 patchVersion = Integer.valueOf(patchHint);
822 } catch (NumberFormatException ex) {
823 ex.printStackTrace();
824 throw new IOException("No valid file versions set for APK expansion files", ex);
825 }
826
827 try {
828 // To avoid direct dependency on Google APK expansion library that is
829 // not a part of Android SDK we access it using reflection
830 expansionFile = Class.forName("com.android.vending.expansion.zipfile.APKExpansionSupport")
831 .getMethod("getAPKExpansionZipFile", Context.class, int.class, int.class)
832 .invoke(null, SDL.getContext(), mainVersion, patchVersion);
833
834 expansionFileMethod = expansionFile.getClass()
835 .getMethod("getInputStream", String.class);
836 } catch (Exception ex) {
837 ex.printStackTrace();
838 expansionFile = null;
839 expansionFileMethod = null;
840 throw new IOException("Could not access APK expansion support library", ex);
841 }
842 }
843
844 // Get an input stream for a known file inside the expansion file ZIPs
845 InputStream fileStream;
846 try {
847 fileStream = (InputStream)expansionFileMethod.invoke(expansionFile, fileName);
848 } catch (Exception ex) {
849 // calling "getInputStream" failed
850 ex.printStackTrace();
851 throw new IOException("Could not open stream from APK expansion file", ex);
852 }
853
854 if (fileStream == null) {
855 // calling "getInputStream" was successful but null was returned
856 throw new IOException("Could not find path in APK expansion file");
857 }
858
859 return fileStream;
1200
1201 for (int id : ids) {
1202 InputDevice device = InputDevice.getDevice(id);
1203 if (device != null && (device.getSources() & InputDevice.SOURCE_TOUCHSCREEN) != 0) {
1204 nativeAddTouch(device.getId(), device.getName());
1205 }
1206 }
8601207 }
8611208
8621209 // Messagebox
8631210
8641211 /** Result of current messagebox. Also used for blocking the calling thread. */
8651212 protected final int[] messageboxSelection = new int[1];
866
867 /** Id of current dialog. */
868 protected int dialogs = 0;
8691213
8701214 /**
8711215 * This method is called by SDL using JNI.
9101254 runOnUiThread(new Runnable() {
9111255 @Override
9121256 public void run() {
913 showDialog(dialogs++, args);
1257 messageboxCreateAndShow(args);
9141258 }
9151259 });
9161260
9301274 return messageboxSelection[0];
9311275 }
9321276
933 @Override
934 protected Dialog onCreateDialog(int ignore, Bundle args) {
1277 protected void messageboxCreateAndShow(Bundle args) {
9351278
9361279 // TODO set values from "flags" to messagebox dialog
9371280
9601303
9611304 // create dialog with title and a listener to wake up calling thread
9621305
963 final Dialog dialog = new Dialog(this);
1306 final AlertDialog dialog = new AlertDialog.Builder(this).create();
9641307 dialog.setTitle(args.getString("title"));
9651308 dialog.setCancelable(false);
9661309 dialog.setOnDismissListener(new DialogInterface.OnDismissListener() {
10461389
10471390 // add content to dialog and return
10481391
1049 dialog.setContentView(content);
1392 dialog.setView(content);
10501393 dialog.setOnKeyListener(new Dialog.OnKeyListener() {
10511394 @Override
10521395 public boolean onKey(DialogInterface d, int keyCode, KeyEvent event) {
10611404 }
10621405 });
10631406
1064 return dialog;
1407 dialog.show();
1408 }
1409
1410 private final Runnable rehideSystemUi = new Runnable() {
1411 @Override
1412 public void run() {
1413 if (Build.VERSION.SDK_INT >= 19) {
1414 int flags = View.SYSTEM_UI_FLAG_FULLSCREEN |
1415 View.SYSTEM_UI_FLAG_HIDE_NAVIGATION |
1416 View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY |
1417 View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN |
1418 View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION |
1419 View.SYSTEM_UI_FLAG_LAYOUT_STABLE | View.INVISIBLE;
1420
1421 SDLActivity.this.getWindow().getDecorView().setSystemUiVisibility(flags);
1422 }
1423 }
1424 };
1425
1426 public void onSystemUiVisibilityChange(int visibility) {
1427 if (SDLActivity.mFullscreenModeActive && ((visibility & View.SYSTEM_UI_FLAG_FULLSCREEN) == 0 || (visibility & View.SYSTEM_UI_FLAG_HIDE_NAVIGATION) == 0)) {
1428
1429 Handler handler = getWindow().getDecorView().getHandler();
1430 if (handler != null) {
1431 handler.removeCallbacks(rehideSystemUi); // Prevent a hide loop.
1432 handler.postDelayed(rehideSystemUi, 2000);
1433 }
1434
1435 }
10651436 }
10661437
10671438 /**
10911462 public static int createCustomCursor(int[] colors, int width, int height, int hotSpotX, int hotSpotY) {
10921463 Bitmap bitmap = Bitmap.createBitmap(colors, width, height, Bitmap.Config.ARGB_8888);
10931464 ++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) {
1465
1466 if (Build.VERSION.SDK_INT >= 24) {
1467 try {
1468 mCursors.put(mLastCursorID, PointerIcon.create(bitmap, hotSpotX, hotSpotY));
1469 } catch (Exception e) {
1470 return 0;
1471 }
1472 } else {
11011473 return 0;
11021474 }
11031475 return mLastCursorID;
11071479 * This method is called by SDL using JNI.
11081480 */
11091481 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) {
1482
1483 if (Build.VERSION.SDK_INT >= 24) {
1484 try {
1485 mSurface.setPointerIcon(mCursors.get(cursorID));
1486 } catch (Exception e) {
1487 return false;
1488 }
1489 } else {
11161490 return false;
11171491 }
11181492 return true;
11611535 cursor_type = 1002; //PointerIcon.TYPE_HAND;
11621536 break;
11631537 }
1164 // This requires API 24, so use reflection to implement this
1538 if (Build.VERSION.SDK_INT >= 24) {
1539 try {
1540 mSurface.setPointerIcon(PointerIcon.getSystemIcon(SDL.getContext(), cursor_type));
1541 } catch (Exception e) {
1542 return false;
1543 }
1544 }
1545 return true;
1546 }
1547
1548 /**
1549 * This method is called by SDL using JNI.
1550 */
1551 public static void requestPermission(String permission, int requestCode) {
1552 if (Build.VERSION.SDK_INT < 23) {
1553 nativePermissionResult(requestCode, true);
1554 return;
1555 }
1556
1557 Activity activity = (Activity)getContext();
1558 if (activity.checkSelfPermission(permission) != PackageManager.PERMISSION_GRANTED) {
1559 activity.requestPermissions(new String[]{permission}, requestCode);
1560 } else {
1561 nativePermissionResult(requestCode, true);
1562 }
1563 }
1564
1565 @Override
1566 public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) {
1567 boolean result = (grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED);
1568 nativePermissionResult(requestCode, result);
1569 }
1570
1571 /**
1572 * This method is called by SDL using JNI.
1573 */
1574 public static int openURL(String url)
1575 {
11651576 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;
1173 }
1174 return true;
1577 Intent i = new Intent(Intent.ACTION_VIEW);
1578 i.setData(Uri.parse(url));
1579
1580 int flags = Intent.FLAG_ACTIVITY_NO_HISTORY | Intent.FLAG_ACTIVITY_MULTIPLE_TASK;
1581 if (Build.VERSION.SDK_INT >= 21) {
1582 flags |= Intent.FLAG_ACTIVITY_NEW_DOCUMENT;
1583 } else {
1584 flags |= Intent.FLAG_ACTIVITY_CLEAR_WHEN_TASK_RESET;
1585 }
1586 i.addFlags(flags);
1587
1588 mSingleton.startActivity(i);
1589 } catch (Exception ex) {
1590 return -1;
1591 }
1592 return 0;
1593 }
1594
1595 /**
1596 * This method is called by SDL using JNI.
1597 */
1598 public static int showToast(String message, int duration, int gravity, int xOffset, int yOffset)
1599 {
1600 if(null == mSingleton) {
1601 return - 1;
1602 }
1603
1604 try
1605 {
1606 class OneShotTask implements Runnable {
1607 String mMessage;
1608 int mDuration;
1609 int mGravity;
1610 int mXOffset;
1611 int mYOffset;
1612
1613 OneShotTask(String message, int duration, int gravity, int xOffset, int yOffset) {
1614 mMessage = message;
1615 mDuration = duration;
1616 mGravity = gravity;
1617 mXOffset = xOffset;
1618 mYOffset = yOffset;
1619 }
1620
1621 public void run() {
1622 try
1623 {
1624 Toast toast = Toast.makeText(mSingleton, mMessage, mDuration);
1625 if (mGravity >= 0) {
1626 toast.setGravity(mGravity, mXOffset, mYOffset);
1627 }
1628 toast.show();
1629 } catch(Exception ex) {
1630 Log.e(TAG, ex.getMessage());
1631 }
1632 }
1633 }
1634 mSingleton.runOnUiThread(new OneShotTask(message, duration, gravity, xOffset, yOffset));
1635 } catch(Exception ex) {
1636 return -1;
1637 }
1638 return 0;
11751639 }
11761640 }
11771641
11861650 String function = SDLActivity.mSingleton.getMainFunction();
11871651 String[] arguments = SDLActivity.mSingleton.getArguments();
11881652
1653 try {
1654 android.os.Process.setThreadPriority(android.os.Process.THREAD_PRIORITY_DISPLAY);
1655 } catch (Exception e) {
1656 Log.v("SDL", "modify thread properties failed " + e.toString());
1657 }
1658
11891659 Log.v("SDL", "Running main function " + function + " from library " + library);
1660
11901661 SDLActivity.nativeRunMain(library, function, arguments);
11911662
11921663 Log.v("SDL", "Finished main function");
11931664
1194 // Native thread has finished, let's finish the Activity
1195 if (!SDLActivity.mExitCalledFromJava) {
1196 SDLActivity.handleNativeExit();
1197 }
1665 if (SDLActivity.mSingleton != null && !SDLActivity.mSingleton.isFinishing()) {
1666 // Let's finish the Activity
1667 SDLActivity.mSDLThread = null;
1668 SDLActivity.mSingleton.finish();
1669 } // else: Activity is already being destroyed
1670
11981671 }
11991672 }
12001673
12091682 View.OnKeyListener, View.OnTouchListener, SensorEventListener {
12101683
12111684 // Sensors
1212 protected static SensorManager mSensorManager;
1213 protected static Display mDisplay;
1685 protected SensorManager mSensorManager;
1686 protected Display mDisplay;
12141687
12151688 // Keep track of the surface size to normalize touch events
1216 protected static float mWidth, mHeight;
1689 protected float mWidth, mHeight;
1690
1691 // Is SurfaceView ready for rendering
1692 public boolean mIsSurfaceReady;
12171693
12181694 // Startup
12191695 public SDLSurface(Context context) {
12291705 mDisplay = ((WindowManager)context.getSystemService(Context.WINDOW_SERVICE)).getDefaultDisplay();
12301706 mSensorManager = (SensorManager)context.getSystemService(Context.SENSOR_SERVICE);
12311707
1232 if (Build.VERSION.SDK_INT >= 12) {
1233 setOnGenericMotionListener(new SDLGenericMotionListener_API12());
1234 }
1708 setOnGenericMotionListener(SDLActivity.getMotionListener());
12351709
12361710 // Some arbitrary defaults to avoid a potential division by zero
12371711 mWidth = 1.0f;
12381712 mHeight = 1.0f;
1713
1714 mIsSurfaceReady = false;
12391715 }
12401716
12411717 public void handlePause() {
12591735 @Override
12601736 public void surfaceCreated(SurfaceHolder holder) {
12611737 Log.v("SDL", "surfaceCreated()");
1262 holder.setType(SurfaceHolder.SURFACE_TYPE_GPU);
1738 SDLActivity.onNativeSurfaceCreated();
12631739 }
12641740
12651741 // Called when we lose the surface
12711747 SDLActivity.mNextNativeState = SDLActivity.NativeState.PAUSED;
12721748 SDLActivity.handleNativeState();
12731749
1274 SDLActivity.mIsSurfaceReady = false;
1750 mIsSurfaceReady = false;
12751751 SDLActivity.onNativeSurfaceDestroyed();
12761752 }
12771753
12811757 int format, int width, int height) {
12821758 Log.v("SDL", "surfaceChanged()");
12831759
1284 int sdlFormat = 0x15151002; // SDL_PIXELFORMAT_RGB565 by default
1285 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;
1303 case PixelFormat.RGBA_8888:
1304 Log.v("SDL", "pixel format RGBA_8888");
1305 sdlFormat = 0x16462004; // SDL_PIXELFORMAT_RGBA8888
1306 break;
1307 case PixelFormat.RGBX_8888:
1308 Log.v("SDL", "pixel format RGBX_8888");
1309 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
1314 break;
1315 case PixelFormat.RGB_565:
1316 Log.v("SDL", "pixel format RGB_565");
1317 sdlFormat = 0x15151002; // SDL_PIXELFORMAT_RGB565
1318 break;
1319 case PixelFormat.RGB_888:
1320 Log.v("SDL", "pixel format RGB_888");
1321 // Not sure this is right, maybe SDL_PIXELFORMAT_RGB24 instead?
1322 sdlFormat = 0x16161804; // SDL_PIXELFORMAT_RGB888
1323 break;
1324 default:
1325 Log.v("SDL", "pixel format unknown " + format);
1326 break;
1760 if (SDLActivity.mSingleton == null) {
1761 return;
13271762 }
13281763
13291764 mWidth = width;
13301765 mHeight = height;
1331 SDLActivity.onNativeResize(width, height, sdlFormat, mDisplay.getRefreshRate());
1766 int nDeviceWidth = width;
1767 int nDeviceHeight = height;
1768 try
1769 {
1770 if (Build.VERSION.SDK_INT >= 17) {
1771 DisplayMetrics realMetrics = new DisplayMetrics();
1772 mDisplay.getRealMetrics( realMetrics );
1773 nDeviceWidth = realMetrics.widthPixels;
1774 nDeviceHeight = realMetrics.heightPixels;
1775 }
1776 } catch(Exception ignored) {
1777 }
1778
1779 synchronized(SDLActivity.getContext()) {
1780 // In case we're waiting on a size change after going fullscreen, send a notification.
1781 SDLActivity.getContext().notifyAll();
1782 }
1783
13321784 Log.v("SDL", "Window size: " + width + "x" + height);
1333
1334
1785 Log.v("SDL", "Device size: " + nDeviceWidth + "x" + nDeviceHeight);
1786 SDLActivity.nativeSetScreenResolution(width, height, nDeviceWidth, nDeviceHeight, mDisplay.getRefreshRate());
1787 SDLActivity.onNativeResize();
1788
1789 // Prevent a screen distortion glitch,
1790 // for instance when the device is in Landscape and a Portrait App is resumed.
13351791 boolean skip = false;
13361792 int requestedOrientation = SDLActivity.mSingleton.getRequestedOrientation();
13371793
1338 if (requestedOrientation == ActivityInfo.SCREEN_ORIENTATION_UNSPECIFIED)
1339 {
1340 // Accept any
1341 }
1342 else if (requestedOrientation == ActivityInfo.SCREEN_ORIENTATION_PORTRAIT || requestedOrientation == ActivityInfo.SCREEN_ORIENTATION_SENSOR_PORTRAIT)
1343 {
1794 if (requestedOrientation == ActivityInfo.SCREEN_ORIENTATION_PORTRAIT || requestedOrientation == ActivityInfo.SCREEN_ORIENTATION_SENSOR_PORTRAIT) {
13441795 if (mWidth > mHeight) {
13451796 skip = true;
13461797 }
13611812 }
13621813 }
13631814
1815 // Don't skip in MultiWindow.
1816 if (skip) {
1817 if (Build.VERSION.SDK_INT >= 24) {
1818 if (SDLActivity.mSingleton.isInMultiWindowMode()) {
1819 Log.v("SDL", "Don't skip in Multi-Window");
1820 skip = false;
1821 }
1822 }
1823 }
1824
13641825 if (skip) {
13651826 Log.v("SDL", "Skip .. Surface is not ready.");
1366 SDLActivity.mIsSurfaceReady = false;
1827 mIsSurfaceReady = false;
13671828 return;
13681829 }
1369
1370 /* Surface is ready */
1371 SDLActivity.mIsSurfaceReady = true;
13721830
13731831 /* If the surface has been previously destroyed by onNativeSurfaceDestroyed, recreate it here */
13741832 SDLActivity.onNativeSurfaceChanged();
13751833
1834 /* Surface is ready */
1835 mIsSurfaceReady = true;
1836
1837 SDLActivity.mNextNativeState = SDLActivity.NativeState.RESUMED;
13761838 SDLActivity.handleNativeState();
13771839 }
13781840
13791841 // Key events
13801842 @Override
13811843 public boolean onKey(View v, int keyCode, KeyEvent event) {
1844
1845 int deviceId = event.getDeviceId();
1846 int source = event.getSource();
1847
1848 if (source == InputDevice.SOURCE_UNKNOWN) {
1849 InputDevice device = InputDevice.getDevice(deviceId);
1850 if (device != null) {
1851 source = device.getSources();
1852 }
1853 }
1854
1855 // if (event.getAction() == KeyEvent.ACTION_DOWN) {
1856 // Log.v("SDL", "key down: " + keyCode + ", deviceId = " + deviceId + ", source = " + source);
1857 // } else if (event.getAction() == KeyEvent.ACTION_UP) {
1858 // Log.v("SDL", "key up: " + keyCode + ", deviceId = " + deviceId + ", source = " + source);
1859 // }
1860
13821861 // Dispatch the different events depending on where they come from
13831862 // Some SOURCE_JOYSTICK, SOURCE_DPAD or SOURCE_GAMEPAD are also SOURCE_KEYBOARD
13841863 // So, we try to process them as JOYSTICK/DPAD/GAMEPAD events first, if that fails we try them as KEYBOARD
13861865 // Furthermore, it's possible a game controller has SOURCE_KEYBOARD and
13871866 // SOURCE_JOYSTICK, while its key events arrive from the keyboard source
13881867 // So, retrieve the device itself and check all of its sources
1389 if (SDLControllerManager.isDeviceSDLJoystick(event.getDeviceId())) {
1868 if (SDLControllerManager.isDeviceSDLJoystick(deviceId)) {
13901869 // Note that we process events with specific key codes here
13911870 if (event.getAction() == KeyEvent.ACTION_DOWN) {
1392 if (SDLControllerManager.onNativePadDown(event.getDeviceId(), keyCode) == 0) {
1871 if (SDLControllerManager.onNativePadDown(deviceId, keyCode) == 0) {
13931872 return true;
13941873 }
13951874 } else if (event.getAction() == KeyEvent.ACTION_UP) {
1396 if (SDLControllerManager.onNativePadUp(event.getDeviceId(), keyCode) == 0) {
1875 if (SDLControllerManager.onNativePadUp(deviceId, keyCode) == 0) {
13971876 return true;
13981877 }
13991878 }
14001879 }
14011880
1402 if ((event.getSource() & InputDevice.SOURCE_KEYBOARD) != 0) {
1881 if ((source & InputDevice.SOURCE_KEYBOARD) != 0) {
14031882 if (event.getAction() == KeyEvent.ACTION_DOWN) {
1404 //Log.v("SDL", "key down: " + keyCode);
14051883 if (SDLActivity.isTextInputEvent(event)) {
14061884 SDLInputConnection.nativeCommitText(String.valueOf((char) event.getUnicodeChar()), 1);
14071885 }
14081886 SDLActivity.onNativeKeyDown(keyCode);
14091887 return true;
1410 }
1411 else if (event.getAction() == KeyEvent.ACTION_UP) {
1412 //Log.v("SDL", "key up: " + keyCode);
1888 } else if (event.getAction() == KeyEvent.ACTION_UP) {
14131889 SDLActivity.onNativeKeyUp(keyCode);
14141890 return true;
14151891 }
14161892 }
14171893
1418 if ((event.getSource() & InputDevice.SOURCE_MOUSE) != 0) {
1894 if ((source & InputDevice.SOURCE_MOUSE) != 0) {
14191895 // on some devices key events are sent for mouse BUTTON_BACK/FORWARD presses
14201896 // they are ignored here because sending them as mouse input to SDL is messy
14211897 if ((keyCode == KeyEvent.KEYCODE_BACK) || (keyCode == KeyEvent.KEYCODE_FORWARD)) {
14361912 @Override
14371913 public boolean onTouch(View v, MotionEvent event) {
14381914 /* Ref: http://developer.android.com/training/gestures/multi.html */
1439 final int touchDevId = event.getDeviceId();
1915 int touchDevId = event.getDeviceId();
14401916 final int pointerCount = event.getPointerCount();
14411917 int action = event.getActionMasked();
14421918 int pointerFingerId;
1443 int mouseButton;
14441919 int i = -1;
14451920 float x,y,p;
14461921
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));
1922 /*
1923 * Prevent id to be -1, since it's used in SDL internal for synthetic events
1924 * Appears when using Android emulator, eg:
1925 * adb shell input mouse tap 100 100
1926 * adb shell input touchscreen tap 100 100
1927 */
1928 if (touchDevId < 0) {
1929 touchDevId -= 1;
1930 }
1931
1932 // 12290 = Samsung DeX mode desktop mouse
1933 // 12290 = 0x3002 = 0x2002 | 0x1002 = SOURCE_MOUSE | SOURCE_TOUCHSCREEN
1934 // 0x2 = SOURCE_CLASS_POINTER
1935 if (event.getSource() == InputDevice.SOURCE_MOUSE || event.getSource() == (InputDevice.SOURCE_MOUSE | InputDevice.SOURCE_TOUCHSCREEN)) {
1936 int mouseButton = 1;
1937 try {
1938 Object object = event.getClass().getMethod("getButtonState").invoke(event);
1939 if (object != null) {
1940 mouseButton = (Integer) object;
1941 }
1942 } catch(Exception ignored) {
1943 }
1944
1945 // We need to check if we're in relative mouse mode and get the axis offset rather than the x/y values
1946 // if we are. We'll leverage our existing mouse motion listener
1947 SDLGenericMotionListener_API12 motionListener = SDLActivity.getMotionListener();
1948 x = motionListener.getEventX(event);
1949 y = motionListener.getEventY(event);
1950
1951 SDLActivity.onNativeMouse(mouseButton, action, x, y, motionListener.inRelativeMode());
14591952 } else {
14601953 switch(action) {
14611954 case MotionEvent.ACTION_MOVE:
14771970 case MotionEvent.ACTION_DOWN:
14781971 // Primary pointer up/down, the index is always zero
14791972 i = 0;
1973 /* fallthrough */
14801974 case MotionEvent.ACTION_POINTER_UP:
14811975 case MotionEvent.ACTION_POINTER_DOWN:
14821976 // Non primary pointer up/down
15402034 @Override
15412035 public void onSensorChanged(SensorEvent event) {
15422036 if (event.sensor.getType() == Sensor.TYPE_ACCELEROMETER) {
2037
2038 // Since we may have an orientation set, we won't receive onConfigurationChanged events.
2039 // We thus should check here.
2040 int newOrientation;
2041
15432042 float x, y;
15442043 switch (mDisplay.getRotation()) {
15452044 case Surface.ROTATION_90:
15462045 x = -event.values[1];
15472046 y = event.values[0];
2047 newOrientation = SDLActivity.SDL_ORIENTATION_LANDSCAPE;
15482048 break;
15492049 case Surface.ROTATION_270:
15502050 x = event.values[1];
15512051 y = -event.values[0];
2052 newOrientation = SDLActivity.SDL_ORIENTATION_LANDSCAPE_FLIPPED;
15522053 break;
15532054 case Surface.ROTATION_180:
1554 x = -event.values[1];
1555 y = -event.values[0];
2055 x = -event.values[0];
2056 y = -event.values[1];
2057 newOrientation = SDLActivity.SDL_ORIENTATION_PORTRAIT_FLIPPED;
15562058 break;
2059 case Surface.ROTATION_0:
15572060 default:
15582061 x = event.values[0];
15592062 y = event.values[1];
2063 newOrientation = SDLActivity.SDL_ORIENTATION_PORTRAIT;
15602064 break;
15612065 }
2066
2067 if (newOrientation != SDLActivity.mCurrentOrientation) {
2068 SDLActivity.mCurrentOrientation = newOrientation;
2069 SDLActivity.onNativeOrientationChanged(newOrientation);
2070 }
2071
15622072 SDLActivity.onNativeAccel(-x / SensorManager.GRAVITY_EARTH,
15632073 y / SensorManager.GRAVITY_EARTH,
15642074 event.values[2] / SensorManager.GRAVITY_EARTH);
1565 }
1566 }
2075
2076
2077 }
2078 }
2079
2080 // Captured pointer events for API 26.
2081 public boolean onCapturedPointerEvent(MotionEvent event)
2082 {
2083 int action = event.getActionMasked();
2084
2085 float x, y;
2086 switch (action) {
2087 case MotionEvent.ACTION_SCROLL:
2088 x = event.getAxisValue(MotionEvent.AXIS_HSCROLL, 0);
2089 y = event.getAxisValue(MotionEvent.AXIS_VSCROLL, 0);
2090 SDLActivity.onNativeMouse(0, action, x, y, false);
2091 return true;
2092
2093 case MotionEvent.ACTION_HOVER_MOVE:
2094 case MotionEvent.ACTION_MOVE:
2095 x = event.getX(0);
2096 y = event.getY(0);
2097 SDLActivity.onNativeMouse(0, action, x, y, true);
2098 return true;
2099
2100 case MotionEvent.ACTION_BUTTON_PRESS:
2101 case MotionEvent.ACTION_BUTTON_RELEASE:
2102
2103 // Change our action value to what SDL's code expects.
2104 if (action == MotionEvent.ACTION_BUTTON_PRESS) {
2105 action = MotionEvent.ACTION_DOWN;
2106 } else { /* MotionEvent.ACTION_BUTTON_RELEASE */
2107 action = MotionEvent.ACTION_UP;
2108 }
2109
2110 x = event.getX(0);
2111 y = event.getY(0);
2112 int button = event.getButtonState();
2113
2114 SDLActivity.onNativeMouse(button, action, x, y, true);
2115 return true;
2116 }
2117
2118 return false;
2119 }
2120
15672121 }
15682122
15692123 /* This is a fake invisible editor view that receives the input and defines the
15862140
15872141 @Override
15882142 public boolean onKey(View v, int keyCode, KeyEvent event) {
1589 /*
2143 /*
15902144 * This handles the hardware keyboard input
15912145 */
15922146 if (event.getAction() == KeyEvent.ACTION_DOWN) {
16542208 */
16552209
16562210 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 }
2211 if (SDLActivity.onNativeSoftReturnKey()) {
2212 return true;
16652213 }
16662214 }
16672215
16742222
16752223 for (int i = 0; i < text.length(); i++) {
16762224 char c = text.charAt(i);
2225 if (c == '\n') {
2226 if (SDLActivity.onNativeSoftReturnKey()) {
2227 return true;
2228 }
2229 }
16772230 nativeGenerateScancodeForUnichar(c);
16782231 }
16792232
17062259 while (beforeLength-- > 0) {
17072260 boolean ret_key = sendKeyEvent(new KeyEvent(KeyEvent.ACTION_DOWN, KeyEvent.KEYCODE_DEL))
17082261 && sendKeyEvent(new KeyEvent(KeyEvent.ACTION_UP, KeyEvent.KEYCODE_DEL));
1709 ret = ret && ret_key;
2262 ret = ret && ret_key;
17102263 }
17112264 return ret;
17122265 }
17152268 }
17162269 }
17172270
1718 interface SDLClipboardHandler {
1719
1720 public boolean clipboardHasText();
1721 public String clipboardGetText();
1722 public void clipboardSetText(String string);
1723
1724 }
1725
1726
1727 class SDLClipboardHandler_API11 implements
1728 SDLClipboardHandler,
1729 android.content.ClipboardManager.OnPrimaryClipChangedListener {
1730
1731 protected android.content.ClipboardManager mClipMgr;
1732
1733 SDLClipboardHandler_API11() {
1734 mClipMgr = (android.content.ClipboardManager) SDL.getContext().getSystemService(Context.CLIPBOARD_SERVICE);
2271 class SDLClipboardHandler implements
2272 ClipboardManager.OnPrimaryClipChangedListener {
2273
2274 protected ClipboardManager mClipMgr;
2275
2276 SDLClipboardHandler() {
2277 mClipMgr = (ClipboardManager) SDL.getContext().getSystemService(Context.CLIPBOARD_SERVICE);
17352278 mClipMgr.addPrimaryClipChangedListener(this);
17362279 }
17372280
1738 @Override
17392281 public boolean clipboardHasText() {
1740 return mClipMgr.hasText();
1741 }
1742
1743 @Override
2282 return mClipMgr.hasPrimaryClip();
2283 }
2284
17442285 public String clipboardGetText() {
1745 CharSequence text;
1746 text = mClipMgr.getText();
1747 if (text != null) {
1748 return text.toString();
2286 ClipData clip = mClipMgr.getPrimaryClip();
2287 if (clip != null) {
2288 ClipData.Item item = clip.getItemAt(0);
2289 if (item != null) {
2290 CharSequence text = item.getText();
2291 if (text != null) {
2292 return text.toString();
2293 }
2294 }
17492295 }
17502296 return null;
17512297 }
17522298
1753 @Override
17542299 public void clipboardSetText(String string) {
17552300 mClipMgr.removePrimaryClipChangedListener(this);
1756 mClipMgr.setText(string);
2301 ClipData clip = ClipData.newPlainText(null, string);
2302 mClipMgr.setPrimaryClip(clip);
17572303 mClipMgr.addPrimaryClipChangedListener(this);
17582304 }
1759
2305
17602306 @Override
17612307 public void onPrimaryClipChanged() {
17622308 SDLActivity.onNativeClipboardChanged();
17632309 }
1764
17652310 }
17662311
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
2 import android.media.*;
2 import android.media.AudioFormat;
3 import android.media.AudioManager;
4 import android.media.AudioRecord;
5 import android.media.AudioTrack;
6 import android.media.MediaRecorder;
7 import android.os.Build;
38 import android.util.Log;
49
510 public class SDLAudioManager
1621
1722 // Audio
1823
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");
24 protected static String getAudioFormatString(int audioFormat) {
25 switch (audioFormat) {
26 case AudioFormat.ENCODING_PCM_8BIT:
27 return "8-bit";
28 case AudioFormat.ENCODING_PCM_16BIT:
29 return "16-bit";
30 case AudioFormat.ENCODING_PCM_FLOAT:
31 return "float";
32 default:
33 return Integer.toString(audioFormat);
34 }
35 }
36
37 protected static int[] open(boolean isCapture, int sampleRate, int audioFormat, int desiredChannels, int desiredFrames) {
38 int channelConfig;
39 int sampleSize;
40 int frameSize;
41
42 Log.v(TAG, "Opening " + (isCapture ? "capture" : "playback") + ", requested " + desiredFrames + " frames of " + desiredChannels + " channel " + getAudioFormatString(audioFormat) + " audio at " + sampleRate + " Hz");
43
44 /* On older devices let's use known good settings */
45 if (Build.VERSION.SDK_INT < 21) {
46 if (desiredChannels > 2) {
47 desiredChannels = 2;
48 }
49 if (sampleRate < 8000) {
50 sampleRate = 8000;
51 } else if (sampleRate > 48000) {
52 sampleRate = 48000;
53 }
54 }
55
56 if (audioFormat == AudioFormat.ENCODING_PCM_FLOAT) {
57 int minSDKVersion = (isCapture ? 23 : 21);
58 if (Build.VERSION.SDK_INT < minSDKVersion) {
59 audioFormat = AudioFormat.ENCODING_PCM_16BIT;
60 }
61 }
62 switch (audioFormat)
63 {
64 case AudioFormat.ENCODING_PCM_8BIT:
65 sampleSize = 1;
66 break;
67 case AudioFormat.ENCODING_PCM_16BIT:
68 sampleSize = 2;
69 break;
70 case AudioFormat.ENCODING_PCM_FLOAT:
71 sampleSize = 4;
72 break;
73 default:
74 Log.v(TAG, "Requested format " + audioFormat + ", getting ENCODING_PCM_16BIT");
75 audioFormat = AudioFormat.ENCODING_PCM_16BIT;
76 sampleSize = 2;
77 break;
78 }
79
80 if (isCapture) {
81 switch (desiredChannels) {
82 case 1:
83 channelConfig = AudioFormat.CHANNEL_IN_MONO;
84 break;
85 case 2:
86 channelConfig = AudioFormat.CHANNEL_IN_STEREO;
87 break;
88 default:
89 Log.v(TAG, "Requested " + desiredChannels + " channels, getting stereo");
90 desiredChannels = 2;
91 channelConfig = AudioFormat.CHANNEL_IN_STEREO;
92 break;
93 }
94 } else {
95 switch (desiredChannels) {
96 case 1:
97 channelConfig = AudioFormat.CHANNEL_OUT_MONO;
98 break;
99 case 2:
100 channelConfig = AudioFormat.CHANNEL_OUT_STEREO;
101 break;
102 case 3:
103 channelConfig = AudioFormat.CHANNEL_OUT_STEREO | AudioFormat.CHANNEL_OUT_FRONT_CENTER;
104 break;
105 case 4:
106 channelConfig = AudioFormat.CHANNEL_OUT_QUAD;
107 break;
108 case 5:
109 channelConfig = AudioFormat.CHANNEL_OUT_QUAD | AudioFormat.CHANNEL_OUT_FRONT_CENTER;
110 break;
111 case 6:
112 channelConfig = AudioFormat.CHANNEL_OUT_5POINT1;
113 break;
114 case 7:
115 channelConfig = AudioFormat.CHANNEL_OUT_5POINT1 | AudioFormat.CHANNEL_OUT_BACK_CENTER;
116 break;
117 case 8:
118 if (Build.VERSION.SDK_INT >= 23) {
119 channelConfig = AudioFormat.CHANNEL_OUT_7POINT1_SURROUND;
120 } else {
121 Log.v(TAG, "Requested " + desiredChannels + " channels, getting 5.1 surround");
122 desiredChannels = 6;
123 channelConfig = AudioFormat.CHANNEL_OUT_5POINT1;
124 }
125 break;
126 default:
127 Log.v(TAG, "Requested " + desiredChannels + " channels, getting stereo");
128 desiredChannels = 2;
129 channelConfig = AudioFormat.CHANNEL_OUT_STEREO;
130 break;
131 }
132
133 /*
134 Log.v(TAG, "Speaker configuration (and order of channels):");
135
136 if ((channelConfig & 0x00000004) != 0) {
137 Log.v(TAG, " CHANNEL_OUT_FRONT_LEFT");
138 }
139 if ((channelConfig & 0x00000008) != 0) {
140 Log.v(TAG, " CHANNEL_OUT_FRONT_RIGHT");
141 }
142 if ((channelConfig & 0x00000010) != 0) {
143 Log.v(TAG, " CHANNEL_OUT_FRONT_CENTER");
144 }
145 if ((channelConfig & 0x00000020) != 0) {
146 Log.v(TAG, " CHANNEL_OUT_LOW_FREQUENCY");
147 }
148 if ((channelConfig & 0x00000040) != 0) {
149 Log.v(TAG, " CHANNEL_OUT_BACK_LEFT");
150 }
151 if ((channelConfig & 0x00000080) != 0) {
152 Log.v(TAG, " CHANNEL_OUT_BACK_RIGHT");
153 }
154 if ((channelConfig & 0x00000100) != 0) {
155 Log.v(TAG, " CHANNEL_OUT_FRONT_LEFT_OF_CENTER");
156 }
157 if ((channelConfig & 0x00000200) != 0) {
158 Log.v(TAG, " CHANNEL_OUT_FRONT_RIGHT_OF_CENTER");
159 }
160 if ((channelConfig & 0x00000400) != 0) {
161 Log.v(TAG, " CHANNEL_OUT_BACK_CENTER");
162 }
163 if ((channelConfig & 0x00000800) != 0) {
164 Log.v(TAG, " CHANNEL_OUT_SIDE_LEFT");
165 }
166 if ((channelConfig & 0x00001000) != 0) {
167 Log.v(TAG, " CHANNEL_OUT_SIDE_RIGHT");
168 }
169 */
170 }
171 frameSize = (sampleSize * desiredChannels);
28172
29173 // Let the user pick a larger buffer if they really want -- but ye
30174 // gods they probably shouldn't, the minimums are horrifyingly high
31175 // latency already
32 desiredFrames = Math.max(desiredFrames, (AudioTrack.getMinBufferSize(sampleRate, channelConfig, audioFormat) + frameSize - 1) / frameSize);
33
176 int minBufferSize;
177 if (isCapture) {
178 minBufferSize = AudioRecord.getMinBufferSize(sampleRate, channelConfig, audioFormat);
179 } else {
180 minBufferSize = AudioTrack.getMinBufferSize(sampleRate, channelConfig, audioFormat);
181 }
182 desiredFrames = Math.max(desiredFrames, (minBufferSize + frameSize - 1) / frameSize);
183
184 int[] results = new int[4];
185
186 if (isCapture) {
187 if (mAudioRecord == null) {
188 mAudioRecord = new AudioRecord(MediaRecorder.AudioSource.DEFAULT, sampleRate,
189 channelConfig, audioFormat, desiredFrames * frameSize);
190
191 // see notes about AudioTrack state in audioOpen(), above. Probably also applies here.
192 if (mAudioRecord.getState() != AudioRecord.STATE_INITIALIZED) {
193 Log.e(TAG, "Failed during initialization of AudioRecord");
194 mAudioRecord.release();
195 mAudioRecord = null;
196 return null;
197 }
198
199 mAudioRecord.startRecording();
200 }
201
202 results[0] = mAudioRecord.getSampleRate();
203 results[1] = mAudioRecord.getAudioFormat();
204 results[2] = mAudioRecord.getChannelCount();
205
206 } else {
207 if (mAudioTrack == null) {
208 mAudioTrack = new AudioTrack(AudioManager.STREAM_MUSIC, sampleRate, channelConfig, audioFormat, desiredFrames * frameSize, AudioTrack.MODE_STREAM);
209
210 // Instantiating AudioTrack can "succeed" without an exception and the track may still be invalid
211 // Ref: https://android.googlesource.com/platform/frameworks/base/+/refs/heads/master/media/java/android/media/AudioTrack.java
212 // Ref: http://developer.android.com/reference/android/media/AudioTrack.html#getState()
213 if (mAudioTrack.getState() != AudioTrack.STATE_INITIALIZED) {
214 /* Try again, with safer values */
215
216 Log.e(TAG, "Failed during initialization of Audio Track");
217 mAudioTrack.release();
218 mAudioTrack = null;
219 return null;
220 }
221
222 mAudioTrack.play();
223 }
224
225 results[0] = mAudioTrack.getSampleRate();
226 results[1] = mAudioTrack.getAudioFormat();
227 results[2] = mAudioTrack.getChannelCount();
228 }
229 results[3] = desiredFrames;
230
231 Log.v(TAG, "Opening " + (isCapture ? "capture" : "playback") + ", got " + results[3] + " frames of " + results[2] + " channel " + getAudioFormatString(results[1]) + " audio at " + results[0] + " Hz");
232
233 return results;
234 }
235
236 /**
237 * This method is called by SDL using JNI.
238 */
239 public static int[] audioOpen(int sampleRate, int audioFormat, int desiredChannels, int desiredFrames) {
240 return open(false, sampleRate, audioFormat, desiredChannels, desiredFrames);
241 }
242
243 /**
244 * This method is called by SDL using JNI.
245 */
246 public static void audioWriteFloatBuffer(float[] buffer) {
34247 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;
248 Log.e(TAG, "Attempted to make audio call with uninitialized audio!");
249 return;
250 }
251
252 for (int i = 0; i < buffer.length;) {
253 int result = mAudioTrack.write(buffer, i, buffer.length - i, AudioTrack.WRITE_BLOCKING);
254 if (result > 0) {
255 i += result;
256 } else if (result == 0) {
257 try {
258 Thread.sleep(1);
259 } catch(InterruptedException e) {
260 // Nom nom
261 }
262 } else {
263 Log.w(TAG, "SDL audio: error return from write(float)");
264 return;
265 }
266 }
54267 }
55268
56269 /**
57270 * This method is called by SDL using JNI.
58271 */
59272 public static void audioWriteShortBuffer(short[] buffer) {
273 if (mAudioTrack == null) {
274 Log.e(TAG, "Attempted to make audio call with uninitialized audio!");
275 return;
276 }
277
278 for (int i = 0; i < buffer.length;) {
279 int result = mAudioTrack.write(buffer, i, buffer.length - i);
280 if (result > 0) {
281 i += result;
282 } else if (result == 0) {
283 try {
284 Thread.sleep(1);
285 } catch(InterruptedException e) {
286 // Nom nom
287 }
288 } else {
289 Log.w(TAG, "SDL audio: error return from write(short)");
290 return;
291 }
292 }
293 }
294
295 /**
296 * This method is called by SDL using JNI.
297 */
298 public static void audioWriteByteBuffer(byte[] buffer) {
60299 if (mAudioTrack == null) {
61300 Log.e(TAG, "Attempted to make audio call with uninitialized audio!");
62301 return;
73312 // Nom nom
74313 }
75314 } 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 {
102315 Log.w(TAG, "SDL audio: error return from write(byte)");
103316 return;
104317 }
108321 /**
109322 * This method is called by SDL using JNI.
110323 */
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;
324 public static int[] captureOpen(int sampleRate, int audioFormat, int desiredChannels, int desiredFrames) {
325 return open(true, sampleRate, audioFormat, desiredChannels, desiredFrames);
326 }
327
328 /** This method is called by SDL using JNI. */
329 public static int captureReadFloatBuffer(float[] buffer, boolean blocking) {
330 return mAudioRecord.read(buffer, 0, buffer.length, blocking ? AudioRecord.READ_BLOCKING : AudioRecord.READ_NON_BLOCKING);
141331 }
142332
143333 /** This method is called by SDL using JNI. */
144334 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);
335 if (Build.VERSION.SDK_INT < 23) {
336 return mAudioRecord.read(buffer, 0, buffer.length);
337 } else {
338 return mAudioRecord.read(buffer, 0, buffer.length, blocking ? AudioRecord.READ_BLOCKING : AudioRecord.READ_NON_BLOCKING);
339 }
148340 }
149341
150342 /** This method is called by SDL using JNI. */
151343 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
344 if (Build.VERSION.SDK_INT < 23) {
345 return mAudioRecord.read(buffer, 0, buffer.length);
346 } else {
347 return mAudioRecord.read(buffer, 0, buffer.length, blocking ? AudioRecord.READ_BLOCKING : AudioRecord.READ_NON_BLOCKING);
348 }
349 }
157350
158351 /** This method is called by SDL using JNI. */
159352 public static void audioClose() {
173366 }
174367 }
175368
369 /** This method is called by SDL using JNI. */
370 public static void audioSetThreadPriority(boolean iscapture, int device_id) {
371 try {
372
373 /* Set thread name */
374 if (iscapture) {
375 Thread.currentThread().setName("SDLAudioC" + device_id);
376 } else {
377 Thread.currentThread().setName("SDLAudioP" + device_id);
378 }
379
380 /* Set thread priority */
381 android.os.Process.setThreadPriority(android.os.Process.THREAD_PRIORITY_AUDIO);
382
383 } catch (Exception e) {
384 Log.v(TAG, "modify thread properties failed " + e.toString());
385 }
386 }
387
176388 public static native int nativeSetupJNI();
177389 }
55 import java.util.List;
66
77 import android.content.Context;
8 import android.os.*;
9 import android.view.*;
8 import android.os.Build;
9 import android.os.VibrationEffect;
10 import android.os.Vibrator;
1011 import android.util.Log;
11
12
13 public class SDLControllerManager
12 import android.view.InputDevice;
13 import android.view.KeyEvent;
14 import android.view.MotionEvent;
15 import android.view.View;
16
17
18 public class SDLControllerManager
1419 {
1520
1621 public static native int nativeSetupJNI();
3540 private static final String TAG = "SDLControllerManager";
3641
3742 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();
43 if (mJoystickHandler == null) {
44 if (Build.VERSION.SDK_INT >= 19) {
45 mJoystickHandler = new SDLJoystickHandler_API19();
46 } else {
47 mJoystickHandler = new SDLJoystickHandler_API16();
48 }
49 }
50
51 if (mHapticHandler == null) {
52 if (Build.VERSION.SDK_INT >= 26) {
53 mHapticHandler = new SDLHapticHandler_API26();
54 } else {
55 mHapticHandler = new SDLHapticHandler();
56 }
57 }
5558 }
5659
5760 // Joystick glue code, just a series of stubs that redirect to the SDLJoystickHandler instance
7679 /**
7780 * This method is called by SDL using JNI.
7881 */
79 public static void hapticRun(int device_id, int length) {
80 mHapticHandler.run(device_id, length);
82 public static void hapticRun(int device_id, float intensity, int length) {
83 mHapticHandler.run(device_id, intensity, length);
84 }
85
86 /**
87 * This method is called by SDL using JNI.
88 */
89 public static void hapticStop(int device_id)
90 {
91 mHapticHandler.stop(device_id);
8192 }
8293
8394 // Check if a given device is considered a possible SDL joystick
91102 int sources = device.getSources();
92103
93104 /* This is called for every button press, so let's not spam the logs */
94 /**
95 if ((sources & InputDevice.SOURCE_CLASS_JOYSTICK) == InputDevice.SOURCE_CLASS_JOYSTICK) {
96 Log.v(TAG, "Input device " + device.getName() + " is a joystick.");
105 /*
106 if ((sources & InputDevice.SOURCE_CLASS_JOYSTICK) != 0) {
107 Log.v(TAG, "Input device " + device.getName() + " has class joystick.");
97108 }
98109 if ((sources & InputDevice.SOURCE_DPAD) == InputDevice.SOURCE_DPAD) {
99110 Log.v(TAG, "Input device " + device.getName() + " is a dpad.");
101112 if ((sources & InputDevice.SOURCE_GAMEPAD) == InputDevice.SOURCE_GAMEPAD) {
102113 Log.v(TAG, "Input device " + device.getName() + " is a gamepad.");
103114 }
104 **/
105
106 return (((sources & InputDevice.SOURCE_CLASS_JOYSTICK) == InputDevice.SOURCE_CLASS_JOYSTICK) ||
115 */
116
117 return ((sources & InputDevice.SOURCE_CLASS_JOYSTICK) != 0 ||
107118 ((sources & InputDevice.SOURCE_DPAD) == InputDevice.SOURCE_DPAD) ||
108119 ((sources & InputDevice.SOURCE_GAMEPAD) == InputDevice.SOURCE_GAMEPAD)
109120 );
111122
112123 }
113124
114 /* A null joystick handler for API level < 12 devices (the accelerometer is handled separately) */
115125 class SDLJoystickHandler {
116126
117127 /**
131141 }
132142
133143 /* Actual joystick functionality available for API >= 12 devices */
134 class SDLJoystickHandler_API12 extends SDLJoystickHandler {
144 class SDLJoystickHandler_API16 extends SDLJoystickHandler {
135145
136146 static class SDLJoystick {
137147 public int device_id;
143153 static class RangeComparator implements Comparator<InputDevice.MotionRange> {
144154 @Override
145155 public int compare(InputDevice.MotionRange arg0, InputDevice.MotionRange arg1) {
146 return arg0.getAxis() - arg1.getAxis();
147 }
148 }
149
150 private ArrayList<SDLJoystick> mJoysticks;
151
152 public SDLJoystickHandler_API12() {
156 // 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
157 int arg0Axis = arg0.getAxis();
158 int arg1Axis = arg1.getAxis();
159 if (arg0Axis == MotionEvent.AXIS_GAS) {
160 arg0Axis = MotionEvent.AXIS_BRAKE;
161 } else if (arg0Axis == MotionEvent.AXIS_BRAKE) {
162 arg0Axis = MotionEvent.AXIS_GAS;
163 }
164 if (arg1Axis == MotionEvent.AXIS_GAS) {
165 arg1Axis = MotionEvent.AXIS_BRAKE;
166 } else if (arg1Axis == MotionEvent.AXIS_BRAKE) {
167 arg1Axis = MotionEvent.AXIS_GAS;
168 }
169
170 return arg0Axis - arg1Axis;
171 }
172 }
173
174 private final ArrayList<SDLJoystick> mJoysticks;
175
176 public SDLJoystickHandler_API16() {
153177
154178 mJoysticks = new ArrayList<SDLJoystick>();
155179 }
157181 @Override
158182 public void pollInputDevices() {
159183 int[] deviceIds = InputDevice.getDeviceIds();
160 for(int i=0; i < deviceIds.length; ++i) {
161 SDLJoystick joystick = getJoystick(deviceIds[i]);
162 if (joystick == null) {
163 joystick = new SDLJoystick();
164 InputDevice joystickDevice = InputDevice.getDevice(deviceIds[i]);
165 if (SDLControllerManager.isDeviceSDLJoystick(deviceIds[i])) {
166 joystick.device_id = deviceIds[i];
184
185 for (int device_id : deviceIds) {
186 if (SDLControllerManager.isDeviceSDLJoystick(device_id)) {
187 SDLJoystick joystick = getJoystick(device_id);
188 if (joystick == null) {
189 InputDevice joystickDevice = InputDevice.getDevice(device_id);
190 joystick = new SDLJoystick();
191 joystick.device_id = device_id;
167192 joystick.name = joystickDevice.getName();
168193 joystick.desc = getJoystickDescriptor(joystickDevice);
169194 joystick.axes = new ArrayList<InputDevice.MotionRange>();
171196
172197 List<InputDevice.MotionRange> ranges = joystickDevice.getMotionRanges();
173198 Collections.sort(ranges, new RangeComparator());
174 for (InputDevice.MotionRange range : ranges ) {
199 for (InputDevice.MotionRange range : ranges) {
175200 if ((range.getSource() & InputDevice.SOURCE_CLASS_JOYSTICK) != 0) {
176 if (range.getAxis() == MotionEvent.AXIS_HAT_X ||
177 range.getAxis() == MotionEvent.AXIS_HAT_Y) {
201 if (range.getAxis() == MotionEvent.AXIS_HAT_X || range.getAxis() == MotionEvent.AXIS_HAT_Y) {
178202 joystick.hats.add(range);
179 }
180 else {
203 } else {
181204 joystick.axes.add(range);
182205 }
183206 }
184207 }
185208
186209 mJoysticks.add(joystick);
187 SDLControllerManager.nativeAddJoystick(joystick.device_id, joystick.name, joystick.desc, getVendorId(joystickDevice), getProductId(joystickDevice), false, getButtonMask(joystickDevice), joystick.axes.size(), joystick.hats.size()/2, 0);
210 SDLControllerManager.nativeAddJoystick(joystick.device_id, joystick.name, joystick.desc,
211 getVendorId(joystickDevice), getProductId(joystickDevice), false,
212 getButtonMask(joystickDevice), joystick.axes.size(), joystick.hats.size()/2, 0);
188213 }
189214 }
190215 }
191216
192217 /* Check removed devices */
193 ArrayList<Integer> removedDevices = new ArrayList<Integer>();
194 for(int i=0; i < mJoysticks.size(); i++) {
195 int device_id = mJoysticks.get(i).device_id;
196 int j;
197 for (j=0; j < deviceIds.length; j++) {
198 if (device_id == deviceIds[j]) break;
199 }
200 if (j == deviceIds.length) {
201 removedDevices.add(Integer.valueOf(device_id));
202 }
203 }
204
205 for(int i=0; i < removedDevices.size(); i++) {
206 int device_id = removedDevices.get(i).intValue();
207 SDLControllerManager.nativeRemoveJoystick(device_id);
208 for (int j=0; j < mJoysticks.size(); j++) {
209 if (mJoysticks.get(j).device_id == device_id) {
210 mJoysticks.remove(j);
211 break;
218 ArrayList<Integer> removedDevices = null;
219 for (SDLJoystick joystick : mJoysticks) {
220 int device_id = joystick.device_id;
221 int i;
222 for (i = 0; i < deviceIds.length; i++) {
223 if (device_id == deviceIds[i]) break;
224 }
225 if (i == deviceIds.length) {
226 if (removedDevices == null) {
227 removedDevices = new ArrayList<Integer>();
228 }
229 removedDevices.add(device_id);
230 }
231 }
232
233 if (removedDevices != null) {
234 for (int device_id : removedDevices) {
235 SDLControllerManager.nativeRemoveJoystick(device_id);
236 for (int i = 0; i < mJoysticks.size(); i++) {
237 if (mJoysticks.get(i).device_id == device_id) {
238 mJoysticks.remove(i);
239 break;
240 }
212241 }
213242 }
214243 }
215244 }
216245
217246 protected SDLJoystick getJoystick(int device_id) {
218 for(int i=0; i < mJoysticks.size(); i++) {
219 if (mJoysticks.get(i).device_id == device_id) {
220 return mJoysticks.get(i);
247 for (SDLJoystick joystick : mJoysticks) {
248 if (joystick.device_id == device_id) {
249 return joystick;
221250 }
222251 }
223252 return null;
228257 if ((event.getSource() & InputDevice.SOURCE_JOYSTICK) != 0) {
229258 int actionPointerIndex = event.getActionIndex();
230259 int action = event.getActionMasked();
231 switch(action) {
232 case MotionEvent.ACTION_MOVE:
233 SDLJoystick joystick = getJoystick(event.getDeviceId());
234 if ( joystick != null ) {
235 for (int i = 0; i < joystick.axes.size(); i++) {
236 InputDevice.MotionRange range = joystick.axes.get(i);
237 /* Normalize the value to -1...1 */
238 float value = ( event.getAxisValue( range.getAxis(), actionPointerIndex) - range.getMin() ) / range.getRange() * 2.0f - 1.0f;
239 SDLControllerManager.onNativeJoy(joystick.device_id, i, value );
240 }
241 for (int i = 0; i < joystick.hats.size(); i+=2) {
242 int hatX = Math.round(event.getAxisValue( joystick.hats.get(i).getAxis(), actionPointerIndex ) );
243 int hatY = Math.round(event.getAxisValue( joystick.hats.get(i+1).getAxis(), actionPointerIndex ) );
244 SDLControllerManager.onNativeHat(joystick.device_id, i/2, hatX, hatY );
245 }
260 if (action == MotionEvent.ACTION_MOVE) {
261 SDLJoystick joystick = getJoystick(event.getDeviceId());
262 if (joystick != null) {
263 for (int i = 0; i < joystick.axes.size(); i++) {
264 InputDevice.MotionRange range = joystick.axes.get(i);
265 /* Normalize the value to -1...1 */
266 float value = (event.getAxisValue(range.getAxis(), actionPointerIndex) - range.getMin()) / range.getRange() * 2.0f - 1.0f;
267 SDLControllerManager.onNativeJoy(joystick.device_id, i, value);
246268 }
247 break;
248 default:
249 break;
269 for (int i = 0; i < joystick.hats.size() / 2; i++) {
270 int hatX = Math.round(event.getAxisValue(joystick.hats.get(2 * i).getAxis(), actionPointerIndex));
271 int hatY = Math.round(event.getAxisValue(joystick.hats.get(2 * i + 1).getAxis(), actionPointerIndex));
272 SDLControllerManager.onNativeHat(joystick.device_id, i, hatX, hatY);
273 }
274 }
250275 }
251276 }
252277 return true;
253278 }
254279
255280 public String getJoystickDescriptor(InputDevice joystickDevice) {
281 String desc = joystickDevice.getDescriptor();
282
283 if (desc != null && !desc.isEmpty()) {
284 return desc;
285 }
286
256287 return joystickDevice.getName();
257288 }
258289 public int getProductId(InputDevice joystickDevice) {
263294 }
264295 public int getButtonMask(InputDevice joystickDevice) {
265296 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);
280297 }
281298 }
282299
386403 }
387404 }
388405
406 class SDLHapticHandler_API26 extends SDLHapticHandler {
407 @Override
408 public void run(int device_id, float intensity, int length) {
409 SDLHaptic haptic = getHaptic(device_id);
410 if (haptic != null) {
411 Log.d("SDL", "Rtest: Vibe with intensity " + intensity + " for " + length);
412 if (intensity == 0.0f) {
413 stop(device_id);
414 return;
415 }
416
417 int vibeValue = Math.round(intensity * 255);
418
419 if (vibeValue > 255) {
420 vibeValue = 255;
421 }
422 if (vibeValue < 1) {
423 stop(device_id);
424 return;
425 }
426 try {
427 haptic.vib.vibrate(VibrationEffect.createOneShot(length, vibeValue));
428 }
429 catch (Exception e) {
430 // Fall back to the generic method, which uses DEFAULT_AMPLITUDE, but works even if
431 // something went horribly wrong with the Android 8.0 APIs.
432 haptic.vib.vibrate(length);
433 }
434 }
435 }
436 }
437
389438 class SDLHapticHandler {
390439
391 class SDLHaptic {
440 static class SDLHaptic {
392441 public int device_id;
393442 public String name;
394443 public Vibrator vib;
395444 }
396445
397 private ArrayList<SDLHaptic> mHaptics;
398
446 private final ArrayList<SDLHaptic> mHaptics;
447
399448 public SDLHapticHandler() {
400449 mHaptics = new ArrayList<SDLHaptic>();
401450 }
402451
403 public void run(int device_id, int length) {
452 public void run(int device_id, float intensity, int length) {
404453 SDLHaptic haptic = getHaptic(device_id);
405454 if (haptic != null) {
406 haptic.vib.vibrate (length);
455 haptic.vib.vibrate(length);
456 }
457 }
458
459 public void stop(int device_id) {
460 SDLHaptic haptic = getHaptic(device_id);
461 if (haptic != null) {
462 haptic.vib.cancel();
407463 }
408464 }
409465
410466 public void pollHapticDevices() {
411
467
412468 final int deviceId_VIBRATOR_SERVICE = 999999;
413469 boolean hasVibratorService = false;
414470
418474 // so the first controller seen by SDL matches what the receiver
419475 // considers to be the first controller
420476
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 }
477 for (int i = deviceIds.length - 1; i > -1; i--) {
478 SDLHaptic haptic = getHaptic(deviceIds[i]);
479 if (haptic == null) {
480 InputDevice device = InputDevice.getDevice(deviceIds[i]);
481 Vibrator vib = device.getVibrator();
482 if (vib.hasVibrator()) {
483 haptic = new SDLHaptic();
484 haptic.device_id = deviceIds[i];
485 haptic.name = device.getName();
486 haptic.vib = vib;
487 mHaptics.add(haptic);
488 SDLControllerManager.nativeAddHaptic(haptic.device_id, haptic.name);
436489 }
437490 }
438491 }
440493 /* Check VIBRATOR_SERVICE */
441494 Vibrator vib = (Vibrator) SDL.getContext().getSystemService(Context.VIBRATOR_SERVICE);
442495 if (vib != null) {
443 if (Build.VERSION.SDK_INT >= 11) {
444 hasVibratorService = vib.hasVibrator();
445 } else {
446 hasVibratorService = true;
447 }
496 hasVibratorService = vib.hasVibrator();
448497
449498 if (hasVibratorService) {
450499 SDLHaptic haptic = getHaptic(deviceId_VIBRATOR_SERVICE);
452501 haptic = new SDLHaptic();
453502 haptic.device_id = deviceId_VIBRATOR_SERVICE;
454503 haptic.name = "VIBRATOR_SERVICE";
455 haptic.vib = vib;
504 haptic.vib = vib;
456505 mHaptics.add(haptic);
457506 SDLControllerManager.nativeAddHaptic(haptic.device_id, haptic.name);
458507 }
460509 }
461510
462511 /* Check removed devices */
463 ArrayList<Integer> removedDevices = new ArrayList<Integer>();
464 for(int i=0; i < mHaptics.size(); i++) {
465 int device_id = mHaptics.get(i).device_id;
466 int j;
467 for (j=0; j < deviceIds.length; j++) {
468 if (device_id == deviceIds[j]) break;
469 }
470
471 if (device_id == deviceId_VIBRATOR_SERVICE && hasVibratorService) {
472 // don't remove the vibrator if it is still present
473 } else if (j == deviceIds.length) {
474 removedDevices.add(device_id);
475 }
476 }
477
478 for(int i=0; i < removedDevices.size(); i++) {
479 int device_id = removedDevices.get(i);
480 SDLControllerManager.nativeRemoveHaptic(device_id);
481 for (int j=0; j < mHaptics.size(); j++) {
482 if (mHaptics.get(j).device_id == device_id) {
483 mHaptics.remove(j);
484 break;
512 ArrayList<Integer> removedDevices = null;
513 for (SDLHaptic haptic : mHaptics) {
514 int device_id = haptic.device_id;
515 int i;
516 for (i = 0; i < deviceIds.length; i++) {
517 if (device_id == deviceIds[i]) break;
518 }
519
520 if (device_id != deviceId_VIBRATOR_SERVICE || !hasVibratorService) {
521 if (i == deviceIds.length) {
522 if (removedDevices == null) {
523 removedDevices = new ArrayList<Integer>();
524 }
525 removedDevices.add(device_id);
526 }
527 } // else: don't remove the vibrator if it is still present
528 }
529
530 if (removedDevices != null) {
531 for (int device_id : removedDevices) {
532 SDLControllerManager.nativeRemoveHaptic(device_id);
533 for (int i = 0; i < mHaptics.size(); i++) {
534 if (mHaptics.get(i).device_id == device_id) {
535 mHaptics.remove(i);
536 break;
537 }
485538 }
486539 }
487540 }
488541 }
489542
490543 protected SDLHaptic getHaptic(int device_id) {
491 for(int i=0; i < mHaptics.size(); i++) {
492 if (mHaptics.get(i).device_id == device_id) {
493 return mHaptics.get(i);
544 for (SDLHaptic haptic : mHaptics) {
545 if (haptic.device_id == device_id) {
546 return haptic;
494547 }
495548 }
496549 return null;
497 }
550 }
498551 }
499552
500553 class SDLGenericMotionListener_API12 implements View.OnGenericMotionListener {
511564 return SDLControllerManager.handleJoystickMotionEvent(event);
512565
513566 case InputDevice.SOURCE_MOUSE:
514 if (!SDLActivity.mSeparateMouseAndTouch) {
515 break;
516 }
517567 action = event.getActionMasked();
518568 switch (action) {
519569 case MotionEvent.ACTION_SCROLL:
520570 x = event.getAxisValue(MotionEvent.AXIS_HSCROLL, 0);
521571 y = event.getAxisValue(MotionEvent.AXIS_VSCROLL, 0);
522 SDLActivity.onNativeMouse(0, action, x, y);
572 SDLActivity.onNativeMouse(0, action, x, y, false);
523573 return true;
524574
525575 case MotionEvent.ACTION_HOVER_MOVE:
526576 x = event.getX(0);
527577 y = event.getY(0);
528578
529 SDLActivity.onNativeMouse(0, action, x, y);
579 SDLActivity.onNativeMouse(0, action, x, y, false);
530580 return true;
531581
532582 default:
541591 // Event was not managed
542592 return false;
543593 }
544 }
545
594
595 public boolean supportsRelativeMouse() {
596 return false;
597 }
598
599 public boolean inRelativeMode() {
600 return false;
601 }
602
603 public boolean setRelativeMouseEnabled(boolean enabled) {
604 return false;
605 }
606
607 public void reclaimRelativeMouseModeIfNeeded()
608 {
609
610 }
611
612 public float getEventX(MotionEvent event) {
613 return event.getX(0);
614 }
615
616 public float getEventY(MotionEvent event) {
617 return event.getY(0);
618 }
619
620 }
621
622 class SDLGenericMotionListener_API24 extends SDLGenericMotionListener_API12 {
623 // Generic Motion (mouse hover, joystick...) events go here
624
625 private boolean mRelativeModeEnabled;
626
627 @Override
628 public boolean onGenericMotion(View v, MotionEvent event) {
629
630 // Handle relative mouse mode
631 if (mRelativeModeEnabled) {
632 if (event.getSource() == InputDevice.SOURCE_MOUSE) {
633 int action = event.getActionMasked();
634 if (action == MotionEvent.ACTION_HOVER_MOVE) {
635 float x = event.getAxisValue(MotionEvent.AXIS_RELATIVE_X);
636 float y = event.getAxisValue(MotionEvent.AXIS_RELATIVE_Y);
637 SDLActivity.onNativeMouse(0, action, x, y, true);
638 return true;
639 }
640 }
641 }
642
643 // Event was not managed, call SDLGenericMotionListener_API12 method
644 return super.onGenericMotion(v, event);
645 }
646
647 @Override
648 public boolean supportsRelativeMouse() {
649 return true;
650 }
651
652 @Override
653 public boolean inRelativeMode() {
654 return mRelativeModeEnabled;
655 }
656
657 @Override
658 public boolean setRelativeMouseEnabled(boolean enabled) {
659 mRelativeModeEnabled = enabled;
660 return true;
661 }
662
663 @Override
664 public float getEventX(MotionEvent event) {
665 if (mRelativeModeEnabled) {
666 return event.getAxisValue(MotionEvent.AXIS_RELATIVE_X);
667 } else {
668 return event.getX(0);
669 }
670 }
671
672 @Override
673 public float getEventY(MotionEvent event) {
674 if (mRelativeModeEnabled) {
675 return event.getAxisValue(MotionEvent.AXIS_RELATIVE_Y);
676 } else {
677 return event.getY(0);
678 }
679 }
680 }
681
682 class SDLGenericMotionListener_API26 extends SDLGenericMotionListener_API24 {
683 // Generic Motion (mouse hover, joystick...) events go here
684 private boolean mRelativeModeEnabled;
685
686 @Override
687 public boolean onGenericMotion(View v, MotionEvent event) {
688 float x, y;
689 int action;
690
691 switch ( event.getSource() ) {
692 case InputDevice.SOURCE_JOYSTICK:
693 case InputDevice.SOURCE_GAMEPAD:
694 case InputDevice.SOURCE_DPAD:
695 return SDLControllerManager.handleJoystickMotionEvent(event);
696
697 case InputDevice.SOURCE_MOUSE:
698 // DeX desktop mouse cursor is a separate non-standard input type.
699 case InputDevice.SOURCE_MOUSE | InputDevice.SOURCE_TOUCHSCREEN:
700 action = event.getActionMasked();
701 switch (action) {
702 case MotionEvent.ACTION_SCROLL:
703 x = event.getAxisValue(MotionEvent.AXIS_HSCROLL, 0);
704 y = event.getAxisValue(MotionEvent.AXIS_VSCROLL, 0);
705 SDLActivity.onNativeMouse(0, action, x, y, false);
706 return true;
707
708 case MotionEvent.ACTION_HOVER_MOVE:
709 x = event.getX(0);
710 y = event.getY(0);
711 SDLActivity.onNativeMouse(0, action, x, y, false);
712 return true;
713
714 default:
715 break;
716 }
717 break;
718
719 case InputDevice.SOURCE_MOUSE_RELATIVE:
720 action = event.getActionMasked();
721 switch (action) {
722 case MotionEvent.ACTION_SCROLL:
723 x = event.getAxisValue(MotionEvent.AXIS_HSCROLL, 0);
724 y = event.getAxisValue(MotionEvent.AXIS_VSCROLL, 0);
725 SDLActivity.onNativeMouse(0, action, x, y, false);
726 return true;
727
728 case MotionEvent.ACTION_HOVER_MOVE:
729 x = event.getX(0);
730 y = event.getY(0);
731 SDLActivity.onNativeMouse(0, action, x, y, true);
732 return true;
733
734 default:
735 break;
736 }
737 break;
738
739 default:
740 break;
741 }
742
743 // Event was not managed
744 return false;
745 }
746
747 @Override
748 public boolean supportsRelativeMouse() {
749 return (!SDLActivity.isDeXMode() || (Build.VERSION.SDK_INT >= 27));
750 }
751
752 @Override
753 public boolean inRelativeMode() {
754 return mRelativeModeEnabled;
755 }
756
757 @Override
758 public boolean setRelativeMouseEnabled(boolean enabled) {
759 if (!SDLActivity.isDeXMode() || (Build.VERSION.SDK_INT >= 27)) {
760 if (enabled) {
761 SDLActivity.getContentView().requestPointerCapture();
762 } else {
763 SDLActivity.getContentView().releasePointerCapture();
764 }
765 mRelativeModeEnabled = enabled;
766 return true;
767 } else {
768 return false;
769 }
770 }
771
772 @Override
773 public void reclaimRelativeMouseModeIfNeeded()
774 {
775 if (mRelativeModeEnabled && !SDLActivity.isDeXMode()) {
776 SDLActivity.getContentView().requestPointerCapture();
777 }
778 }
779
780 @Override
781 public float getEventX(MotionEvent event) {
782 // Relative mouse in capture mode will only have relative for X/Y
783 return event.getX(0);
784 }
785
786 @Override
787 public float getEventY(MotionEvent event) {
788 // Relative mouse in capture mode will only have relative for X/Y
789 return event.getY(0);
790 }
791 }
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 \
00 // Top-level build file where you can add configuration options common to all sub-projects/modules.
11 buildscript {
22 repositories {
3 jcenter()
3 mavenCentral()
44 google()
55 }
66 dependencies {
7 classpath 'com.android.tools.build:gradle:3.1.0'
7 classpath 'com.android.tools.build:gradle:4.2.1'
88 }
99 }
1010
1111 allprojects {
1212 repositories {
13 mavenCentral()
1314 google()
14 jcenter()
1515 }
1616 }
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>
77 </configuration>
88 </facet>
99 </component>
10 <component name="NewModuleRootManager" LANGUAGE_LEVEL="JDK_1_7" inherit-compiler-output="true">
10 <component name="NewModuleRootManager" inherit-compiler-output="true">
1111 <exclude-output />
1212 <content url="file://$MODULE_DIR$">
1313 <excludeFolder url="file://$MODULE_DIR$/.gradle" />
14 <excludeFolder url="file://$MODULE_DIR$/build" />
1415 </content>
15 <orderEntry type="jdk" jdkName="1.8" jdkType="JavaSDK" />
16 <orderEntry type="inheritedJdk" />
1617 <orderEntry type="sourceFolder" forTests="false" />
1718 </component>
1819 </module>
0 #Thu Apr 05 15:20:13 EDT 2018
0 #Tue Jun 08 16:44:54 EDT 2021
11 distributionBase=GRADLE_USER_HOME
2 distributionUrl=https\://services.gradle.org/distributions/gradle-7.0.2-bin.zip
23 distributionPath=wrapper/dists
4 zipStorePath=wrapper/dists
35 zipStoreBase=GRADLE_USER_HOME
4 zipStorePath=wrapper/dists
5 distributionUrl=https\://services.gradle.org/distributions/gradle-4.4-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
29 text=David Bell
2830 text=Daniel Santos
2931 text=Gallaecio
3032 text=Joseph Bleu
3133 text=Juan PabloTamayo
3234 text=Kitano
3335 text=Kyle Belanger
36 text=Leszek Cimała
3437 text=LongerDev
3538 text=Manuel A. Fernandez Montecelo
3639 text=Matthew Krohn
40 text=m7600
3741 text=Nojan
42 text=nwtour
3843 text=Pavel Kirpichyov
44 text=r-a-cristian-93
3945 text=runtime-x86
4046 text=Ryan Dansie
4147 separator=32
5157 text=Adrian Chaves Fernandez
5258 text=Andrea Ranaldi
5359 text=Andreas Berheim Brudin
60 text=Andrey Kapitonov
61 text=Bafy
5462 text=Bas Doodeman
63 text=Błażej Pęksyk
5564 text=Bonbadil
65 text=bzt
5666 text=Carlos Sanchez
5767 text=Chris Oelmueller
5868 text=Christoph J. Thompson
69 text=Christophe Nemo
5970 text=Denis Lysenko
6071 text=Diego J. Romero López
6172 text=dumaosen
73 text=Elias Nykrem
6274 text=Emil
6375 text=Eric R
6476 text=Evgen Pavlov
6577 text=Fabio Loli
6678 text=Gianfranco Del Borrello
6779 text=Giovanni Dalla Torre
80 text=Grzegorz Szymaszek
6881 text=GunChleoc
6982 text=Hans Joachim Desserud
7083 text=hark34
7184 text=Igor Paliychuk
7285 text=Janet Hunt
7386 text=Juan Pablo Tamayo
87 text=Kirim Saja
88 text=Kor_OfenTHource
89 text=(bnk159hair, kangdonghun1230, HunSeongPark, paparad0x)
7490 text=losine
7591 text=Marc Tormo i Bochaca
92 text=Maria Cano
93 text=McSinyx
7694 text=Michael Papageorgiou
7795 text=Mikhail Karalevich
7896 text=Miro Jánošík
97 text=MiroslavR
7998 text=Mykola Franchuk
8099 text=MOB2
81100 text=Morgan Strauss
82101 text=Nea Retrogamer
83 text=Nguyễn Gia Phong
84102 text=Nikita Vanku
85103 text=Paul Wortmann
86104 text=Pawel Puszczynski
87105 text=Quentin Stievenart
106 text=Rafael Fontenelle
88107 text=Rui
89108 text=Sergey Basalaev
90109 text=Sergiy Borodych
91110 text=Stefan Beller
92111 text=Stefano Peris
93112 text=sujiniku
113 text=syl_
94114 text=Thomas Glamsch
95115 text=Timo Sievänen
96116 text=Vicente Monteiro
97117 text=Wuzzy2
98118 text=Yannis Anthymidis
99 text=Zmicer Turok
119 text=Źmicier Turok
100120 separator=32
101121
102122 text=Distributors
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
9 style=zh_TW,unifont-10.0.06.ttf,14,1
810
911 [font]
1012 id=font_captions
1113 style=default,LiberationSans-Regular.ttf,18,1
1214 style=ja,unifont-10.0.06.ttf,18,1
15 style=ko,unifont-10.0.06.ttf,18,1
1316 style=zh,unifont-10.0.06.ttf,18,1
17 style=zh_TW,unifont-10.0.06.ttf,18,1
1418
1519 [font]
1620 id=font_subtitles
1721 style=default,LiberationSans-Regular.ttf,16,1
1822 style=ja,unifont-10.0.06.ttf,16,1
23 style=ko,unifont-10.0.06.ttf,16,1
1924 style=zh,unifont-10.0.06.ttf,16,1
25 style=zh_TW,unifont-10.0.06.ttf,16,1
2026
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
20 # he=עברית
21 hu=Magyar
22 id=Indonesian
2123 it=Italiano
2224 ja=Japanese
25 ko=Korean
2326 nb=Norsk Bokmål
2427 nl=Nederlands
2528 pl=Polski
3134 uk=Українська
3235 vi=Tiếng Việt
3336 zh=Chinese
37 zh_TW=Chinese (Taiwan)
3438
22 #
33 # FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
44 # Translators:
5 # Zmicer Turok <zmicerturok@gmail.com>, 2018
5 # Źmicier Turok <nashtlumach@gmail.com>, 2021
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: 2021-07-02 13:26+\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: Źmicier Turok <nashtlumach@gmail.com>, 2021\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 "Праграмісты"
12096
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"
200
201 #: ../cutscenes/credits.txt:44
97 #: ../cutscenes/credits.txt:49
20298 msgid "Default Art"
20399 msgstr "Графіка"
204100
205 #: ../cutscenes/credits.txt:49
101 #: ../cutscenes/credits.txt:54
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:119
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:128
414110 msgid "Special Thanks"
415111 msgstr "Шчырыя падзякі"
416112
417 #: ../cutscenes/credits.txt:116
113 #: ../cutscenes/credits.txt:132
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:134
426118 msgid "The community at OpenGameArt"
427119 msgstr "Суполка OpenGameArt"
428120
429 #: ../cutscenes/credits.txt:122
121 #: ../cutscenes/credits.txt:138
430122 msgid "For Tiled and the Flare map exporter:"
431 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"
123 msgstr "За кампанаванне і экспарт мапаў Flare:"
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 ""
+0
-436
mods/default/languages/data.he.po less more
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: 2018-11-13 17:21+\n"
9 "PO-Revision-Date: 2018-03-28 19:16+0000\n"
10 "Language-Team: Hebrew (https://www.transifex.com/flareorg/teams/84925/he/)\n"
11 "MIME-Version: 1.0\n"
12 "Content-Type: text/plain; charset=UTF-8\n"
13 "Content-Transfer-Encoding: 8bit\n"
14 "Language: he\n"
15 "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"
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: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
113 #: ../cutscenes/credits.txt:20
114 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 ""
196
197 #: ../cutscenes/credits.txt:44
198 msgid "Default Art"
199 msgstr ""
200
201 #: ../cutscenes/credits.txt:49
202 msgid "Translators"
203 msgstr ""
204
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
390 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 ""
416
417 #: ../cutscenes/credits.txt:117
418 msgid "Bart Kelsey"
419 msgstr ""
420
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 ""
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:"
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 # Kirim Saja <kirim.aja1111@gmail.com>, 2021
6 #
7 msgid ""
8 msgstr ""
9 "Project-Id-Version: PACKAGE VERSION\n"
10 "Report-Msgid-Bugs-To: \n"
11 "POT-Creation-Date: 2021-07-02 13:26+\n"
12 "PO-Revision-Date: 2018-03-28 19:16+0000\n"
13 "Last-Translator: Kirim Saja <kirim.aja1111@gmail.com>, 2021\n"
14 "Language-Team: Indonesian (https://www.transifex.com/flareorg/teams/84925/id/)\n"
15 "MIME-Version: 1.0\n"
16 "Content-Type: text/plain; charset=UTF-8\n"
17 "Content-Transfer-Encoding: 8bit\n"
18 "Language: id\n"
19 "Plural-Forms: nplurals=1; plural=0;\n"
20
21 #: ../engine/primary_stats.txt:3
22 msgid "Physical"
23 msgstr "Fisik"
24
25 #: ../engine/primary_stats.txt:7
26 msgid "Mental"
27 msgstr "Mental"
28
29 #: ../engine/primary_stats.txt:11
30 msgid "Offense"
31 msgstr "Penyerangan"
32
33 #: ../engine/primary_stats.txt:15
34 msgid "Defense"
35 msgstr "Pertahanan"
36
37 #: ../engine/damage_types.txt:3
38 msgid "Melee Damage"
39 msgstr "Damage Jarak Dekat"
40
41 #: ../engine/damage_types.txt:4
42 msgid "Increases the damage done with swords and other melee weapons."
43 msgstr ""
44 "Meningkatkan damage yang dilakukan dengan pedang dan senjata jarak dekat "
45 "lainnya."
46
47 #: ../engine/damage_types.txt:5
48 msgid "Melee Damage Min"
49 msgstr "Damage Minimal Jarak Dekat"
50
51 #: ../engine/damage_types.txt:6
52 msgid "Melee Damage Max"
53 msgstr "Damage Maksimal Jarak Dekat"
54
55 #: ../engine/damage_types.txt:12
56 msgid "Ranged Damage"
57 msgstr "Damage Jarak Jauh"
58
59 #: ../engine/damage_types.txt:13
60 msgid "Increases the damage done with bows and other ranged weapons."
61 msgstr ""
62 "Meningkatkan damage yang dilakukan dengan busur dan senjata jarak jauh "
63 "lainnya."
64
65 #: ../engine/damage_types.txt:14
66 msgid "Ranged Damage Min"
67 msgstr "Damage Minimal Jarak Jauh"
68
69 #: ../engine/damage_types.txt:15
70 msgid "Ranged Damage Max"
71 msgstr "Damage Maksimal Jarak Jauh"
72
73 #: ../engine/damage_types.txt:21
74 msgid "Mental Damage"
75 msgstr "Damage Mental"
76
77 #: ../engine/damage_types.txt:22
78 msgid "Increases the damage done with staves and other mental weapons."
79 msgstr ""
80 "Meningkatkan damage yang dilakukan dengan tongkat dan senjata mental "
81 "lainnya."
82
83 #: ../engine/damage_types.txt:23
84 msgid "Mental Damage Min"
85 msgstr "Damage Minimal Mental"
86
87 #: ../engine/damage_types.txt:24
88 msgid "Mental Damage Max"
89 msgstr "Damage Maksimal Mental"
90
91 #: ../cutscenes/credits.txt:7
92 msgid "Flare Engine Credits"
93 msgstr "Kredit Flare Engine"
94
95 #: ../cutscenes/credits.txt:10
96 msgid "Lead Programmers"
97 msgstr "Pemimpin Programmer"
98
99 #: ../cutscenes/credits.txt:20
100 msgid "Programmers"
101 msgstr "Programmer"
102
103 #: ../cutscenes/credits.txt:49
104 msgid "Default Art"
105 msgstr "Seni Default"
106
107 #: ../cutscenes/credits.txt:54
108 msgid "Translators"
109 msgstr "Penerjemah"
110
111 #: ../cutscenes/credits.txt:119
112 msgid "Distributors"
113 msgstr "Distributor"
114
115 #: ../cutscenes/credits.txt:128
116 msgid "Special Thanks"
117 msgstr "Terima Kasih Khusus"
118
119 #: ../cutscenes/credits.txt:132
120 msgid "For giving constant feedback and testing:"
121 msgstr "Untuk memberikan umpan balik dan pengujian yang konstan:"
122
123 #: ../cutscenes/credits.txt:134
124 msgid "The community at OpenGameArt"
125 msgstr "Komunitas di OpenGameArt"
126
127 #: ../cutscenes/credits.txt:138
128 msgid "For Tiled and the Flare map exporter:"
129 msgstr "Untuk Tiled dan eksportir peta Flare:"
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-07-02 13:26+\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:119
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:128
410106 msgid "Special Thanks"
411107 msgstr ""
412108
413 #: ../cutscenes/credits.txt:116
109 #: ../cutscenes/credits.txt:132
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:134
422114 msgid "The community at OpenGameArt"
423115 msgstr ""
424116
425 #: ../cutscenes/credits.txt:122
117 #: ../cutscenes/credits.txt:138
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地图导出器:"
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: 2021-05-23 20:34+\n"
9 "PO-Revision-Date: 2018-03-28 19:16+0000\n"
10 "Language-Team: Chinese (Taiwan) (https://www.transifex.com/flareorg/teams/84925/zh_TW/)\n"
11 "MIME-Version: 1.0\n"
12 "Content-Type: text/plain; charset=UTF-8\n"
13 "Content-Transfer-Encoding: 8bit\n"
14 "Language: zh_TW\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:49
94 msgid "Default Art"
95 msgstr ""
96
97 #: ../cutscenes/credits.txt:54
98 msgid "Translators"
99 msgstr ""
100
101 #: ../cutscenes/credits.txt:118
102 msgid "Distributors"
103 msgstr ""
104
105 #: ../cutscenes/credits.txt:127
106 msgid "Special Thanks"
107 msgstr ""
108
109 #: ../cutscenes/credits.txt:131
110 msgid "For giving constant feedback and testing:"
111 msgstr ""
112
113 #: ../cutscenes/credits.txt:133
114 msgid "The community at OpenGameArt"
115 msgstr ""
116
117 #: ../cutscenes/credits.txt:137
118 msgid "For Tiled and the Flare map exporter:"
119 msgstr ""
44 #
55 # Translators:
66 # Justin Jacobs <jajdorkster@gmail.com>, 2018
7 # Zmicer Turok <zmicerturok@gmail.com>, 2018
7 # Źmicier Turok <nashtlumach@gmail.com>, 2021
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-07-02 13:26-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>, 2021\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!"
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 ""
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
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
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 "%s x%d прыбрана."
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 ""
100107 "\n"
101108 "Often slower, but less likely to have issues."
102109 msgstr ""
103 "Праграмны адмалёўшчык SDL. Найчасцей больш павольны за апаратны, але з ім "
104 "узнікае менш праблем."
110 "Праграмны адмалёўнік SDL. Найчасцей больш павольны за апаратны, але з ім "
111 "узнікае менш праблемаў."
105112
106113 #: ../../../src/DeviceList.cpp:59
107114 msgid ""
109116 "\n"
110117 "The default renderer that is often faster than the SDL software renderer."
111118 msgstr ""
112 "Апаратны адмалёўшчык SDL. Прадвызначаны адмалёўшчык, які найчасцей працуе "
113 "хутчэй за праграмны адмалёўшчык SDL."
114
115 #: ../../../src/EngineSettings.cpp:561
119 "Апаратны адмалёўнік SDL. Прадвызначаны адмалёўнік, які найчасцей працуе "
120 "хутчэй за праграмны адмалёўнік SDL."
121
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:1220
131 #: ../../../src/StatBlock.cpp:926 ../../../src/StatBlock.cpp:932
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:937
137 #: ../../../src/StatBlock.cpp:943
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"
137 msgstr "Невядомы накірунак"
138
139 #: ../../../src/GameStateConfigBase.cpp:89
140 #: ../../../src/GameStateConfigBase.cpp:110
144 msgstr "Невядомы кірунак"
145
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:704
179 msgid "Entering game world..."
180 msgstr "Уваход у гульнявы свет..."
181
182 #: ../../../src/GameStateLoad.cpp:707
183 msgid "Loading saved game..."
184 msgstr "Загрузка захаванай гульні..."
185
186 #: ../../../src/GameStateLoad.cpp:740
187 msgid "Invalid save"
188 msgstr "Хібная гульня"
189
190 #: ../../../src/GameStateLoad.cpp:764 ../../../src/ItemManager.cpp:745
191 #: ../../../src/MenuPowers.cpp:882 ../../../src/MenuPowers.cpp:1241
192 #: ../../../src/MenuPowers.cpp:1653
193 #, c-format
194 msgid "Level %d"
195 msgstr "Узровень %d"
196
197 #: ../../../src/GameStateNew.cpp:66 ../../../src/InputState.cpp:416
198 #: ../../../src/MenuConfig.cpp:254
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:670
252 #: ../../../src/SDLInputState.cpp:700
253 msgid "Up"
254 msgstr "Уверх"
255
256 #: ../../../src/InputState.cpp:419 ../../../src/MenuMovementType.cpp:125
257 #: ../../../src/MenuMovementType.cpp:134 ../../../src/SDLInputState.cpp:648
258 #: ../../../src/SDLInputState.cpp:678
259 msgid "Down"
260 msgstr "Уніз"
261
262 #: ../../../src/InputState.cpp:420 ../../../src/MenuMovementType.cpp:124
263 #: ../../../src/MenuMovementType.cpp:133 ../../../src/SDLInputState.cpp:655
264 #: ../../../src/SDLInputState.cpp:685
265 msgid "Left"
266 msgstr "Налева"
267
268 #: ../../../src/InputState.cpp:421 ../../../src/MenuMovementType.cpp:126
269 #: ../../../src/MenuMovementType.cpp:135 ../../../src/SDLInputState.cpp:665
270 #: ../../../src/SDLInputState.cpp:695
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:159
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:677
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:981
411 #, c-format
412 msgid "%d%% Speed"
413 msgstr "Хуткасць %d%%"
414
415 #: ../../../src/ItemManager.cpp:650 ../../../src/MenuPowers.cpp:984
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:953
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:1228
451 #: ../../../src/MenuPowers.cpp:1231
452 #, c-format
453 msgid "Requires Level %d"
454 msgstr "Патрабуецца %d узровень"
455
456 #: ../../../src/ItemManager.cpp:836 ../../../src/MenuPowers.cpp:1220
457 #: ../../../src/MenuPowers.cpp:1222
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:898
488 msgid "Set:"
489 msgstr "Набор:"
490
491 #: ../../../src/ItemManager.cpp:905
492 #, c-format
493 msgid "%d items:"
494 msgstr "%d рэчаў:"
495
496 #: ../../../src/ItemManager.cpp:920
497 #, c-format
498 msgid "Press [%s] to read"
499 msgstr "Націсніце [%s], каб прачытаць"
500
501 #: ../../../src/ItemManager.cpp:923
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 "Даступныя балы здольнасцяў: %d"
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:1256
578 msgid "Clear"
579 msgstr "Ачысціць"
580
581 #: ../../../src/MenuConfig.cpp:122 ../../../src/MenuConfig.cpp:1254
582 msgid "Assign:"
583 msgstr "Прызначыць:"
584
585 #: ../../../src/MenuConfig.cpp:123 ../../../src/MenuConfig.cpp:253
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:252 ../../../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:256 ../../../src/MenuGameOver.cpp:72
598 msgid "Continue"
599 msgstr "Працягнуць"
600
601 #: ../../../src/MenuConfig.cpp:258
602 msgid "Save Game"
603 msgstr "Захаваць гульню"
604
605 #: ../../../src/MenuConfig.cpp:301 ../../../src/MenuConfig.cpp:352
606 msgid "Default"
607 msgstr "Прадвызначана"
608
609 #: ../../../src/MenuConfig.cpp:301
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 "гульцом альбо ворагам. Часова паказваць усе выплыўныя падказкі клавішай "
616 "\"Alt\"."
617
618 #: ../../../src/MenuConfig.cpp:302
619 msgid "Show all"
620 msgstr "Паказваць усе"
621
622 #: ../../../src/MenuConfig.cpp:302
623 msgid ""
624 "Always show loot tooltips. Temporarily hide all loot tooltips with 'Alt'."
625 msgstr ""
626 "Заўсёды паказваць выплыўныя падказкі пра здабычу. Часова хаваць падказкі "
627 "клавішай \"Alt\"."
628
629 #: ../../../src/MenuConfig.cpp:303 ../../../src/MenuConfig.cpp:308
630 msgid "Hidden"
631 msgstr "Хаваць"
632
633 #: ../../../src/MenuConfig.cpp:303
634 msgid ""
635 "Always hide loot tooltips, except for when a piece of loot is hovered with "
636 "the mouse cursor. Temporarily show all loot tooltips with 'Alt'."
637 msgstr ""
638 "Заўсёды хаваць выплыўныя падказкі пра здабычу, апроч сітуацый, калі частка "
639 "здабычы знаходзіцца пад курсорам мышы. Часова паказваць усе выплыўныя "
640 "падказкі «Alt»."
641
642 #: ../../../src/MenuConfig.cpp:306
643 msgid "Visible"
644 msgstr "Паказваць"
645
646 #: ../../../src/MenuConfig.cpp:307
647 msgid "Visible (2x zoom)"
648 msgstr "Паказваць (2х)"
649
650 #: ../../../src/MenuConfig.cpp:311
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 "апускаецца ніжэй за парог."
657
658 #: ../../../src/MenuConfig.cpp:312
659 msgid "- Display a message"
660 msgstr "- Вывесці паведамленне"
661
662 #: ../../../src/MenuConfig.cpp:313
663 msgid "- Play a sound"
664 msgstr "- Прайграць гук"
665
666 #: ../../../src/MenuConfig.cpp:314
667 msgid "- Change the cursor"
668 msgstr "- Змяніць курсор"
669
670 #: ../../../src/MenuConfig.cpp:316
671 msgid "Disabled"
672 msgstr "Адключана"
673
674 #: ../../../src/MenuConfig.cpp:317
675 msgid "All"
676 msgstr "Усё"
677
678 #: ../../../src/MenuConfig.cpp:318
679 msgid "Message & Cursor"
680 msgstr "Паведамленне і курсор"
681
682 #: ../../../src/MenuConfig.cpp:319
683 msgid "Message & Sound"
684 msgstr "Паведамленне і гук"
685
686 #: ../../../src/MenuConfig.cpp:320
687 msgid "Sound & Cursor"
688 msgstr "Гук і курсор"
689
690 #: ../../../src/MenuConfig.cpp:321
691 msgid "Message"
692 msgstr "Паведамленне"
693
694 #: ../../../src/MenuConfig.cpp:322
695 msgid "Cursor"
696 msgstr "Курсор"
697
698 #: ../../../src/MenuConfig.cpp:323
699 msgid "Sound"
700 msgstr "Гук"
701
702 #: ../../../src/MenuConfig.cpp:329
703 msgid ""
704 "When the player's health drops below the given threshold, the low health "
705 "notifications are triggered if one or more of them is enabled."
706 msgstr ""
707 "Калі жыццё гульца зніжаецца за прызначаны парог, паведамленні выведуцца, "
708 "калі адно альбо некалькі з іх уключаныя."
709
710 #: ../../../src/MenuConfig.cpp:347
711 msgid "The maximum frame rate that the game will be allowed to run at."
712 msgstr "Максімальная чашчыня кадраў."
713
714 #: ../../../src/MenuConfig.cpp:351
715 msgid ""
716 "The render size refers to the height in pixels of the surface used to draw "
717 "the game. Mods define the allowed render sizes, but this option allows "
718 "overriding the maximum size."
719 msgstr ""
720 "Памер візуалізацыі адносіцца да вышыні паверхні ў пікселях, якая "
721 "выкарыстоўваецца для адмалёўвання гульні. Дапаўненні вызначаюць памеры, але "
722 "гэты параметр дазваляе перавызначыць максімальны памер."
723
724 #: ../../../src/MenuConfig.cpp:374 ../../../src/MenuConfig.cpp:1679
725 #: ../../../src/MenuGameOver.cpp:116
726 msgid "Exit"
727 msgstr "Выйсці"
728
729 #: ../../../src/MenuConfig.cpp:375
730 msgid "Video"
731 msgstr "Відэа"
732
733 #: ../../../src/MenuConfig.cpp:376
159734 msgid "Audio"
160735 msgstr "Аўдыё"
161736
162 #: ../../../src/GameStateConfigBase.cpp:161
163 #: ../../../src/GameStateConfigDesktop.cpp:131
737 #: ../../../src/MenuConfig.cpp:377
164738 msgid "Interface"
165739 msgstr "Інтэрфейс"
166740
167 #: ../../../src/GameStateConfigBase.cpp:162
168 #: ../../../src/GameStateConfigDesktop.cpp:134
741 #: ../../../src/MenuConfig.cpp:378
742 msgid "Input"
743 msgstr "Увод"
744
745 #: ../../../src/MenuConfig.cpp:379
746 msgid "Keybindings"
747 msgstr "Клавішы"
748
749 #: ../../../src/MenuConfig.cpp:380
169750 msgid "Mods"
170751 msgstr "Моды"
171752
172 #: ../../../src/GameStateConfigBase.cpp:249 ../../../src/MenuExit.cpp:72
753 #: ../../../src/MenuConfig.cpp:392
754 msgid "Paused"
755 msgstr "Прыпыніць"
756
757 #: ../../../src/MenuConfig.cpp:395
758 msgid "Time Played"
759 msgstr "Час гульні"
760
761 #: ../../../src/MenuConfig.cpp:401
762 msgid "Renderer"
763 msgstr "Адмалёўнік"
764
765 #: ../../../src/MenuConfig.cpp:402
766 msgid "Full Screen Mode"
767 msgstr "Поўнаэкранны рэжым"
768
769 #: ../../../src/MenuConfig.cpp:403
770 msgid "Hardware surfaces"
771 msgstr "Апаратныя паверхні"
772
773 #: ../../../src/MenuConfig.cpp:404
774 msgid "V-Sync"
775 msgstr "Вертыкальная сінхранізацыя"
776
777 #: ../../../src/MenuConfig.cpp:405
778 msgid "Texture Filtering"
779 msgstr "Фільтрацыя тэкстураў"
780
781 #: ../../../src/MenuConfig.cpp:406
782 msgid "DPI scaling"
783 msgstr "Маштабаванне DPI"
784
785 #: ../../../src/MenuConfig.cpp:407
786 msgid "Parallax Layers"
787 msgstr "Пласты Parallax"
788
789 #: ../../../src/MenuConfig.cpp:408
790 msgid "Allow changing gamma"
791 msgstr "Дазволіць змяняць гаму"
792
793 #: ../../../src/MenuConfig.cpp:409
794 msgid "Gamma"
795 msgstr "Гама"
796
797 #: ../../../src/MenuConfig.cpp:410
798 msgid "Maximum Render Size"
799 msgstr "Максімальны памер візуалізацыі"
800
801 #: ../../../src/MenuConfig.cpp:411
802 msgid "Frame Limit"
803 msgstr "Ліміт чашчыні кадраў"
804
805 #: ../../../src/MenuConfig.cpp:413
806 msgid "Sound Volume"
807 msgstr "Гучнасць наваколля"
808
809 #: ../../../src/MenuConfig.cpp:414
173810 msgid "Music Volume"
174811 msgstr "Гучнасць музыкі"
175812
176 #: ../../../src/GameStateConfigBase.cpp:253 ../../../src/MenuExit.cpp:77
177 msgid "Sound Volume"
178 msgstr "Гучнасць наваколля"
179
180 #: ../../../src/GameStateConfigBase.cpp:257
813 #: ../../../src/MenuConfig.cpp:416
181814 msgid "Language"
182815 msgstr "Мова"
183816
184 #: ../../../src/GameStateConfigBase.cpp:266
817 #: ../../../src/MenuConfig.cpp:417
185818 msgid "Show FPS"
186819 msgstr "Паказваць FPS"
187820
188 #: ../../../src/GameStateConfigBase.cpp:270
821 #: ../../../src/MenuConfig.cpp:418
822 msgid "Hardware mouse cursor"
823 msgstr "Апаратны курсор мышы"
824
825 #: ../../../src/MenuConfig.cpp:419
189826 msgid "Colorblind Mode"
190827 msgstr "Рэжым дальтанізму"
191828
192 #: ../../../src/GameStateConfigBase.cpp:274
193 msgid "Hardware mouse cursor"
194 msgstr "Апаратны курсор мышы"
195
196 #: ../../../src/GameStateConfigBase.cpp:278
829 #: ../../../src/MenuConfig.cpp:420
197830 msgid "Developer Mode"
198 msgstr "Рэжым распрацоўшчыка"
199
200 #: ../../../src/GameStateConfigBase.cpp:282
831 msgstr "Рэжым распрацоўніка"
832
833 #: ../../../src/MenuConfig.cpp:421
201834 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
835 msgstr "Субцітры"
836
837 #: ../../../src/MenuConfig.cpp:422
838 msgid "Loot tooltip visibility"
839 msgstr "Паказваць падказкі пра здабычу"
840
841 #: ../../../src/MenuConfig.cpp:423
842 msgid "Mini-map mode"
843 msgstr "Рэжым міні-мапы"
844
845 #: ../../../src/MenuConfig.cpp:424
846 msgid "Always show stat bar labels"
847 msgstr "Заўсёды паказваць адмеціны ў радку стану"
848
849 #: ../../../src/MenuConfig.cpp:425
850 msgid "Allow stat bar auto-hiding"
851 msgstr "Уключыць аўтаматычнае хаванне радка стану"
852
853 #: ../../../src/MenuConfig.cpp:426
854 msgid "Show combat text"
855 msgstr "Паказваць тэкст бою"
856
857 #: ../../../src/MenuConfig.cpp:427
858 msgid "Automatically equip items"
859 msgstr "Аўтаматычна надзяваць рэчы"
860
861 #: ../../../src/MenuConfig.cpp:428
862 msgid "Show hidden entity markers"
863 msgstr "Паказваць схаваныя пазнакі"
864
865 #: ../../../src/MenuConfig.cpp:429
866 msgid "Low health notification"
867 msgstr "Апавяшчэнне пра нізкае жыццё"
868
869 #: ../../../src/MenuConfig.cpp:430
870 msgid "Low health threshold"
871 msgstr "Мінімальны парог жыцця"
872
873 #: ../../../src/MenuConfig.cpp:431
874 msgid "Show item comparison tooltips"
875 msgstr "Паказваць выплыўныя падказкі для параўнання рэчаў"
876
877 #: ../../../src/MenuConfig.cpp:434 ../../../src/MenuMovementType.cpp:94
878 #: ../../../src/MenuMovementType.cpp:131
879 msgid "Joystick"
880 msgstr "Джойсцік"
881
882 #: ../../../src/MenuConfig.cpp:435
883 msgid "Move hero using mouse"
884 msgstr "Перамяшчаць героя мышшу"
885
886 #: ../../../src/MenuConfig.cpp:436
887 msgid "Mouse aim"
888 msgstr "Нацэльвацца мышшу"
889
890 #: ../../../src/MenuConfig.cpp:437
891 msgid "Do not use mouse"
892 msgstr "Не выкарыстоўваць мыш"
893
894 #: ../../../src/MenuConfig.cpp:438
895 msgid "Swap mouse movement button"
896 msgstr "Пераключыць кнопку руху мышы"
897
898 #: ../../../src/MenuConfig.cpp:439
899 msgid "Attack with mouse movement"
900 msgstr "Атакаваць рухамі мышшу"
901
902 #: ../../../src/MenuConfig.cpp:440
903 msgid "Joystick Deadzone"
904 msgstr "Мёртвая зона джойсціка"
905
906 #: ../../../src/MenuConfig.cpp:441
907 msgid "Touch Controls"
908 msgstr "Сэнсарнае кіраванне"
909
910 #: ../../../src/MenuConfig.cpp:442
911 msgid "Touch Gamepad Scaling"
912 msgstr "Маштабаванне сэнсарных сродкаў кіравання"
913
914 #: ../../../src/MenuConfig.cpp:452
915 #, c-format
916 msgid "Primary binding: %s"
917 msgstr "Першасныя значэнні: %s"
918
919 #: ../../../src/MenuConfig.cpp:453
920 #, c-format
921 msgid "Alternate binding: %s"
922 msgstr "Альтэрнатыўныя значэнні: %s"
923
924 #: ../../../src/MenuConfig.cpp:454
925 #, c-format
926 msgid "Joystick binding: %s"
927 msgstr "Значэнні джойсціка: %s"
928
929 #: ../../../src/MenuConfig.cpp:556
259930 msgid ""
260931 "Will try to store surfaces in video memory versus system memory. The effect "
261932 "this has on performance depends on the renderer."
262933 msgstr ""
263 "Паспрабуйце апрацоўваць паверхні ў відэапамяці, а не ў сістэмнай памяці. "
264 "Эфект залежыць ад адмалёўшчыка."
265
266 #: ../../../src/GameStateConfigDesktop.cpp:189
934 "Спрабаваць апрацоўваць паверхні ў відэапамяці, а не ў сістэмнай памяці. "
935 "Эфект залежыць ад адмалёўніка."
936
937 #: ../../../src/MenuConfig.cpp:557
267938 msgid ""
268939 "Prevents screen tearing. Disable if you experience \"stuttering\" in "
269940 "windowed mode or input lag."
270941 msgstr ""
271 "Прадухіляе разрывы экрану. Выключыце, калі ўзнікаюць праблемы з ўводам альбо"
942 "Прадухіляе разрывы экрана. Адключыце, калі ўзнікаюць праблемы з ўводам альбо"
272943 " ў аконным рэжыме."
273944
274 #: ../../../src/GameStateConfigDesktop.cpp:190
945 #: ../../../src/MenuConfig.cpp:558
275946 msgid ""
276947 "When enabled, this uses the screen DPI in addition to the window dimensions "
277948 "to scale the rendering resolution. Otherwise, only the window dimensions are"
278949 " used."
279950 msgstr ""
280 "Калі ўключана, дадаткова да маштабавання па памерах акна для адмалёўкі па "
281 "раздзяляльнай здольнасці выкарыстоўваецца экран DPI."
282
283 #: ../../../src/GameStateConfigDesktop.cpp:191
951 "Калі ўключана, дадаткова да маштабавання па памерах акна для адмалёўвання па"
952 " раздзяляльнай здольнасці выкарыстоўваецца экран DPI."
953
954 #: ../../../src/MenuConfig.cpp:559
284955 msgid ""
285956 "This enables parallax (non-tile) layers. Disabling this setting can improve "
286957 "performance in some cases."
287958 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
959 "Адключае пласты parallax. Адключэнне гэтага параметра ў некаторых выпадках "
960 "можа палепшыць прадукцыйнасць."
961
962 #: ../../../src/MenuConfig.cpp:560
963 msgid ""
964 "Enables the below setting that controls the screen gamma level. The behavior"
965 " of the gamma setting can vary between platforms."
966 msgstr ""
967 "Уключае параметр, што кіруе ўзроўнем гамы экрана. Паводзіны параметра могуць"
968 " змяняцца ў залежнасці ад платформы."
969
970 #: ../../../src/MenuConfig.cpp:561
971 msgid ""
972 "Provides additional text for information that is primarily conveyed through "
973 "color."
974 msgstr ""
975 "Падае дадатковы тэкст для інфармацыі, што пераважна падаецца праз колер."
976
977 #: ../../../src/MenuConfig.cpp:562
978 msgid ""
979 "Some mods will automatically hide the stat bars when they are inactive. "
980 "Disabling this option will keep them displayed at all times."
981 msgstr ""
982 "Некаторыя мадыфікацыі аўтаматычна хаваюць радкі стану, калі яны неактыўныя. "
983 "Калі адключыць гэты параметр, то яны будуць адлюстроўвацца заўсёды."
984
985 #: ../../../src/MenuConfig.cpp:563
986 msgid ""
987 "When enabled, empty equipment slots will be filled with applicable items "
988 "when they are obtained."
989 msgstr ""
990 "Калі параметр уключаны, пустыя слоты будуць запаўняцца адпаведнымі рэчамі "
991 "пры іх атрыманні."
992
993 #: ../../../src/MenuConfig.cpp:564
994 msgid ""
995 "Shows a marker above enemies, allies, and the player when they are obscured "
996 "by tall objects."
997 msgstr ""
998 "Паказвае адзнаку над ворагамі, сябрамі і гульцамі, калі яны схаваныя "
999 "высокімі аб'ектамі."
1000
1001 #: ../../../src/MenuConfig.cpp:565
1002 msgid ""
1003 "When enabled, tooltips for equipped items of the same type are shown next to"
1004 " standard item tooltips."
1005 msgstr ""
1006 "Калі ўключана, побач з выплыўнымі падказкамі для рэчаў будуць паказвацца "
1007 "падказкі па надзетых рэчах."
1008
1009 #: ../../../src/MenuConfig.cpp:566
1010 msgid ""
1011 "This allows the game to be controlled entirely with the keyboard (or "
1012 "joystick)."
1013 msgstr ""
1014 "Дазваляе поўнасцю кіраваць гульнёй пры дапамозе клавіятуры альбо джойсціка."
1015
1016 #: ../../../src/MenuConfig.cpp:567
1017 msgid ""
1018 "When 'Move hero using mouse' is enabled, this setting controls if 'Main1' or"
1019 " 'Main2' is used to move the hero. If enabled, 'Main2' will move the hero "
1020 "instead of 'Main1'."
1021 msgstr ""
1022 "Калі параметр \"Перамяшчаць героя пры дапамозе мышы\" уключаны, то параметр "
1023 "вызначае ці выкарыстоўваецца \"Галоўнае1\" ці \"Галоўнае2\" для перамяшчэння"
1024 " героя. Калі ўключана \"Галоўнае2\" перамясціць героя замест \"Галоўнае1\"."
1025
1026 #: ../../../src/MenuConfig.cpp:568
1027 msgid ""
1028 "When 'Move hero using mouse' is enabled, this setting controls if the Power "
1029 "assigned to the movement button can be used by targeting an enemy. If this "
1030 "setting is disabled, it is required to use 'Shift' to access the Power "
1031 "assigned to the movement button."
1032 msgstr ""
1033 "Калі параметр \"Перамяшчаць героя пры дапамозе мышы\" уключаны, то параметр "
1034 "вызначае ці можна выкарыстоўваць талент, прызначаны кнопцы руху для "
1035 "вызначэння ворага. Калі параметр адключаны, для гэтага неабходна "
1036 "выкарыстоўваць \"Shift\"."
1037
1038 #: ../../../src/MenuConfig.cpp:569
1039 msgid ""
1040 "The player's attacks will be aimed in the direction of the mouse cursor when"
1041 " this is enabled."
1042 msgstr ""
1043 "Калі ўключана, атакі гульца будуць накіроўваца адпаведна накірунка курсора "
1044 "мышы."
1045
1046 #: ../../../src/MenuConfig.cpp:570
1047 msgid ""
1048 "When enabled, a virtual gamepad will be added in-game. Other interactions, "
1049 "such as drag-and-drop behavior, are also altered to better suit touch input."
1050 msgstr "Калі ўключана, у гульню дададуцца сродкі для сэнсарнага кіравання."
1051
1052 #: ../../../src/MenuConfig.cpp:621
1053 msgid "Active Mods"
1054 msgstr "Актыўныя моды"
1055
1056 #: ../../../src/MenuConfig.cpp:630
1057 msgid "Available Mods"
1058 msgstr "Наяўныя моды"
1059
1060 #: ../../../src/MenuConfig.cpp:649
1061 msgid "<< Disable"
1062 msgstr "<< Адключыць"
1063
1064 #: ../../../src/MenuConfig.cpp:655
1065 msgid "Enable >>"
1066 msgstr "Уключыць >>"
1067
1068 #: ../../../src/MenuConfig.cpp:1536
1069 msgid "Version:"
1070 msgstr "Версія:"
1071
1072 #: ../../../src/MenuConfig.cpp:1541
1073 msgid "Game:"
1074 msgstr "Гульня:"
1075
1076 #: ../../../src/MenuConfig.cpp:1546
1077 msgid "Engine version:"
1078 msgstr "Версія рухавіка:"
1079
1080 #: ../../../src/MenuConfig.cpp:1554
1081 msgid "Requires mods:"
1082 msgstr "Патрабуюцца моды:"
1083
1084 #: ../../../src/MenuConfig.cpp:1662 ../../../src/SDLInputState.cpp:750
1085 msgid "(none)"
1086 msgstr "(няма)"
1087
1088 #: ../../../src/MenuConfig.cpp:1679 ../../../src/MenuGameOver.cpp:73
1089 msgid "Save & Exit"
1090 msgstr "Захаваць і выйсці"
1091
1092 #: ../../../src/MenuDevConsole.cpp:65
8321093 msgid "Execute"
8331094 msgstr "Запусціць"
8341095
835 #: ../../../src/MenuDevConsole.cpp:101 ../../../src/MenuDevConsole.cpp:151
1096 #: ../../../src/MenuDevConsole.cpp:103 ../../../src/MenuDevConsole.cpp:153
8361097 msgid "Developer Console"
837 msgstr "Кансоль распрацоўшчыка"
838
839 #: ../../../src/MenuDevConsole.cpp:141
1098 msgstr "Кансоль распрацоўніка"
1099
1100 #: ../../../src/MenuDevConsole.cpp:143
8401101 #, c-format
8411102 msgid "Use '%s' to inspect with the cursor."
8421103 msgstr "Выкарыстоўвайце \"%s\" для агляду з дапамогай курсора."
8431104
844 #: ../../../src/MenuDevConsole.cpp:146
1105 #: ../../../src/MenuDevConsole.cpp:148
8451106 msgid "Arguments with spaces should be enclosed with double quotes. Example:"
8461107 msgstr "Аргументы з прагаламі мусяць быць у падвойных двукоссях. Прыклад:"
8471108
848 #: ../../../src/MenuDevConsole.cpp:147
1109 #: ../../../src/MenuDevConsole.cpp:149
8491110 msgid "Type 'help' to get a list of commands."
8501111 msgstr "Увядзіце \"help\", каб атрымаць спіс загадаў."
8511112
852 #: ../../../src/MenuDevConsole.cpp:209 ../../../src/MenuDevConsole.cpp:213
1113 #: ../../../src/MenuDevConsole.cpp:211 ../../../src/MenuDevConsole.cpp:215
8531114 msgid "px"
8541115 msgstr "пікс"
8551116
856 #: ../../../src/MenuDevConsole.cpp:224
1117 #: ../../../src/MenuDevConsole.cpp:226
8571118 msgid "Distance"
8581119 msgstr "Дыстанцыя"
8591120
860 #: ../../../src/MenuDevConsole.cpp:239 ../../../src/MenuDevConsole.cpp:286
1121 #: ../../../src/MenuDevConsole.cpp:241 ../../../src/MenuDevConsole.cpp:289
1122 #: ../../../src/MenuDevConsole.cpp:303
8611123 msgid "Entity"
8621124 msgstr "Аб'ект"
8631125
864 #: ../../../src/MenuDevConsole.cpp:261 ../../../src/MenuDevConsole.cpp:268
1126 #: ../../../src/MenuDevConsole.cpp:263 ../../../src/MenuDevConsole.cpp:270
8651127 msgid "none"
8661128 msgstr "няма"
8671129
868 #: ../../../src/MenuDevConsole.cpp:262 ../../../src/MenuDevConsole.cpp:264
1130 #: ../../../src/MenuDevConsole.cpp:264 ../../../src/MenuDevConsole.cpp:266
8691131 msgid "wall"
8701132 msgstr "перашкода"
8711133
872 #: ../../../src/MenuDevConsole.cpp:263 ../../../src/MenuDevConsole.cpp:265
1134 #: ../../../src/MenuDevConsole.cpp:265 ../../../src/MenuDevConsole.cpp:267
8731135 msgid "short wall / pit"
8741136 msgstr "малая перашкода/яма"
8751137
876 #: ../../../src/MenuDevConsole.cpp:266
1138 #: ../../../src/MenuDevConsole.cpp:268
8771139 msgid "entity"
8781140 msgstr "аб'ект"
8791141
880 #: ../../../src/MenuDevConsole.cpp:267
1142 #: ../../../src/MenuDevConsole.cpp:269
8811143 msgid "entity, ally"
882 msgstr "аб'ект/памочнік"
883
884 #: ../../../src/MenuDevConsole.cpp:274
1144 msgstr "аб'ект/памагаты"
1145
1146 #: ../../../src/MenuDevConsole.cpp:276
8851147 msgid "Tile"
8861148 msgstr "Плітка"
8871149
888 #: ../../../src/MenuDevConsole.cpp:360
1150 #: ../../../src/MenuDevConsole.cpp:377
8891151 msgid "adds a power to the action bar"
8901152 msgstr "дадае таленты на панэль дзеянняў"
8911153
892 #: ../../../src/MenuDevConsole.cpp:361
1154 #: ../../../src/MenuDevConsole.cpp:378
8931155 msgid "turns on/off the display of the FPS counter"
894 msgstr ""
895
896 #: ../../../src/MenuDevConsole.cpp:362
1156 msgstr "уключыць/выключыць адлюставанне лічыльніка FPS"
1157
1158 #: ../../../src/MenuDevConsole.cpp:379
8971159 msgid "turns on/off all of the HUD elements"
8981160 msgstr "пераключае адлюстраванне элементаў інтэрфейсу"
8991161
900 #: ../../../src/MenuDevConsole.cpp:363
1162 #: ../../../src/MenuDevConsole.cpp:380
9011163 msgid "turns on/off the developer hud"
902 msgstr "пераключае інтэрфейс распрацоўшчыка"
903
904 #: ../../../src/MenuDevConsole.cpp:364
1164 msgstr "пераключае інтэрфейс распрацоўніка"
1165
1166 #: ../../../src/MenuDevConsole.cpp:381
9051167 msgid ""
9061168 "Prints a list of powers that match a search term. No search term will list "
9071169 "all items"
9081170 msgstr ""
9091171 "Выводзіць спіс знойдзеных талентаў. Калі нічога не ўвесці - выведзе ўсе."
9101172
911 #: ../../../src/MenuDevConsole.cpp:365
1173 #: ../../../src/MenuDevConsole.cpp:382
9121174 msgid "Prints out all the map filenames located in the \"maps/\" directory."
9131175 msgstr "Выводзіць спіс усіх назваў файлаў мапаў з каталога \"maps\"."
9141176
915 #: ../../../src/MenuDevConsole.cpp:366
1177 #: ../../../src/MenuDevConsole.cpp:383
9161178 msgid ""
9171179 "Prints out the active campaign statuses that match a search term. No search "
9181180 "term will list all active statuses"
9201182 "Выводзіць спіс знойдзеных статусаў актыўных кампаній. Калі нічога не ўвесці "
9211183 "- выведзе спіс усіх статусаў"
9221184
923 #: ../../../src/MenuDevConsole.cpp:367
1185 #: ../../../src/MenuDevConsole.cpp:384
9241186 msgid ""
9251187 "Prints a list of items that match a search term. No search term will list "
9261188 "all items"
9271189 msgstr ""
928 "Выводзіць спіс знойдзеных прадметаў. Калі нічога не ўвесці - выведзе спіс "
929 "усіх прадметаў"
930
931 #: ../../../src/MenuDevConsole.cpp:368
1190 "Выводзіць спіс знойдзеных рэчаў. Калі нічога не ўвесці - выведзе спіс усіх "
1191 "рэчаў"
1192
1193 #: ../../../src/MenuDevConsole.cpp:385
9321194 msgid ""
9331195 "parses a series of event components and executes them as a single event"
9341196 msgstr "разбірае набор кампанентаў падзеі і выконвае іх як адну падзею"
9351197
936 #: ../../../src/MenuDevConsole.cpp:369
1198 #: ../../../src/MenuDevConsole.cpp:386
9371199 msgid "clears the command history"
9381200 msgstr "ачышчае гісторыю загадаў"
9391201
940 #: ../../../src/MenuDevConsole.cpp:370
1202 #: ../../../src/MenuDevConsole.cpp:387
9411203 msgid "displays this text"
9421204 msgstr "выводзіць гэты тэкст"
9431205
944 #: ../../../src/MenuDevConsole.cpp:377
1206 #: ../../../src/MenuDevConsole.cpp:394
9451207 msgid "Toggled the developer hud"
946 msgstr "Інтэрфейс распрацоўшчыка пераключаны"
947
948 #: ../../../src/MenuDevConsole.cpp:381
1208 msgstr "Інтэрфейс распрацоўніка пераключаны"
1209
1210 #: ../../../src/MenuDevConsole.cpp:398
9491211 msgid "Toggled the hud"
9501212 msgstr "Інтэрфейс пераключаны"
9511213
952 #: ../../../src/MenuDevConsole.cpp:385
1214 #: ../../../src/MenuDevConsole.cpp:402
9531215 msgid "Toggled the FPS counter"
954 msgstr ""
955
956 #: ../../../src/MenuDevConsole.cpp:534
1216 msgstr "Пераключыць лічыльнік FPS"
1217
1218 #: ../../../src/MenuDevConsole.cpp:552
9571219 msgid "ERROR: Incorrect number of arguments"
9581220 msgstr "ПАМЫЛКА: хібная колькасць аргументаў"
9591221
960 #: ../../../src/MenuDevConsole.cpp:536 ../../../src/MenuDevConsole.cpp:564
1222 #: ../../../src/MenuDevConsole.cpp:554 ../../../src/MenuDevConsole.cpp:582
9611223 msgid "HINT:"
9621224 msgstr "ПАДКАЗКА:"
9631225
964 #: ../../../src/MenuDevConsole.cpp:536
1226 #: ../../../src/MenuDevConsole.cpp:554
9651227 msgid "<id>"
9661228 msgstr "<id>"
9671229
968 #: ../../../src/MenuDevConsole.cpp:552
1230 #: ../../../src/MenuDevConsole.cpp:570
9691231 #, c-format
9701232 msgid "ERROR: '%s' is not a valid event key"
9711233 msgstr "ПАМЫЛКА: \"%s\" - хібны ключ падзеі"
9721234
973 #: ../../../src/MenuDevConsole.cpp:562
1235 #: ../../../src/MenuDevConsole.cpp:580
9741236 msgid "ERROR: Too few arguments"
9751237 msgstr "ПАМЫЛКА: не стае аргументаў"
9761238
977 #: ../../../src/MenuDevConsole.cpp:564
1239 #: ../../../src/MenuDevConsole.cpp:582
9781240 msgid "<key>=<val> <key>=<val> ..."
9791241 msgstr "<key>=<val> <key>=<val> …"
9801242
981 #: ../../../src/MenuDevConsole.cpp:569
1243 #: ../../../src/MenuDevConsole.cpp:587
9821244 msgid "ERROR: Unknown command"
9831245 msgstr "ПАМЫЛКА: невядомы загад"
9841246
985 #: ../../../src/MenuDevConsole.cpp:571
1247 #: ../../../src/MenuDevConsole.cpp:589
9861248 msgid "HINT: Type help"
987 msgstr "ПАДКАЗКА: ўвядзіце help"
988
989 #: ../../../src/MenuEnemy.cpp:138
1249 msgstr "ПАДКАЗКА: ўвядзіце \"help\""
1250
1251 #: ../../../src/MenuEnemy.cpp:162
9901252 #, c-format
9911253 msgid "%s level %d"
9921254 msgstr "%s узровень %d"
9931255
994 #: ../../../src/MenuEnemy.cpp:162
1256 #: ../../../src/MenuEnemy.cpp:186
9951257 msgid "Dead"
9961258 msgstr "Забіты"
9971259
998 #: ../../../src/MenuEnemy.cpp:164
1260 #: ../../../src/MenuEnemy.cpp:188
9991261 msgid "Destroyed"
10001262 msgstr "Знішчана"
10011263
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
1264 #: ../../../src/MenuGameOver.cpp:69
1265 msgid "Game Over"
1266 msgstr "Гульня скончаная"
1267
1268 #: ../../../src/MenuInventory.cpp:178
10231269 #, c-format
10241270 msgid "Lost %d%% of %s."
10251271 msgstr "Страчана %d%% %s."
10261272
1027 #: ../../../src/MenuInventory.cpp:195
1273 #: ../../../src/MenuInventory.cpp:185
10281274 #, c-format
10291275 msgid "Lost %d%% of total XP."
10301276 msgstr "Страчана %d%% агульнага досведу."
10311277
1032 #: ../../../src/MenuInventory.cpp:200
1278 #: ../../../src/MenuInventory.cpp:190
10331279 #, c-format
10341280 msgid "Lost %d%% of current level XP."
1035 msgstr "Страчана %d%% бягучага ўзроўня досведу."
1036
1037 #: ../../../src/MenuInventory.cpp:226
1281 msgstr "Страчана %d%% бягучага ўзроўню досведу."
1282
1283 #: ../../../src/MenuInventory.cpp:216
10381284 #, c-format
10391285 msgid "Lost %s."
10401286 msgstr "Страчана %s."
10411287
1042 #: ../../../src/MenuInventory.cpp:274 ../../../src/MenuStash.cpp:146
1288 #: ../../../src/MenuInventory.cpp:258 ../../../src/MenuStash.cpp:276
10431289 #, c-format
10441290 msgid "%d %s"
10451291 msgstr "%d %s"
10461292
1047 #: ../../../src/MenuInventory.cpp:317
1293 #: ../../../src/MenuInventory.cpp:301
10481294 msgid "Pick up item(s):"
1049 msgstr "Паднята прадметаў:"
1050
1051 #: ../../../src/MenuInventory.cpp:318
1295 msgstr "Паднята рэчаў:"
1296
1297 #: ../../../src/MenuInventory.cpp:302
10521298 msgid "Use or equip item:"
1053 msgstr "Выкарыстаць альбо апрануць прадмет:"
1054
1055 #: ../../../src/MenuInventory.cpp:319
1299 msgstr "Выкарыстаць альбо надзець рэч:"
1300
1301 #: ../../../src/MenuInventory.cpp:303
10561302 #, c-format
10571303 msgid "%s modifiers"
10581304 msgstr "%s мадыфікатараў"
10591305
1060 #: ../../../src/MenuInventory.cpp:320
1306 #: ../../../src/MenuInventory.cpp:304
10611307 msgid "Select a quantity of item:"
1062 msgstr "Абраць колькасць прадметаў:"
1063
1064 #: ../../../src/MenuInventory.cpp:323
1308 msgstr "Абраць колькасць рэчаў:"
1309
1310 #: ../../../src/MenuInventory.cpp:307
10651311 msgid "Stash item stack:"
1066 msgstr "Перамясціць набор прадметаў у схованку:"
1067
1068 #: ../../../src/MenuInventory.cpp:325
1312 msgstr "Перамясціць набор рэчаў у схованку:"
1313
1314 #: ../../../src/MenuInventory.cpp:309
10691315 msgid "Sell item stack:"
1070 msgstr "Прадаць набор прадметаў:"
1071
1072 #: ../../../src/MenuInventory.cpp:592
1316 msgstr "Прадаць набор рэчаў:"
1317
1318 #: ../../../src/MenuInventory.cpp:576
10731319 msgid "You don't have enough of the required item."
1074 msgstr "Не стае патрэбных прадметаў."
1075
1076 #: ../../../src/MenuInventory.cpp:599
1320 msgstr "Не стае патрэбных рэчаў."
1321
1322 #: ../../../src/MenuInventory.cpp:588
10771323 msgid "You can't use this item right now."
1078 msgstr "Зараз вы не можаце выкарыстаць гэты прадмет."
1079
1080 #: ../../../src/MenuInventory.cpp:611
1324 msgstr "Зараз вы не можаце выкарыстаць гэтую рэч."
1325
1326 #: ../../../src/MenuInventory.cpp:600
10811327 msgid "This item can only be used from the action bar."
1082 msgstr "Гэты прадмет можна выкарыстаць толькі з панэлі дзеянняў."
1083
1084 #: ../../../src/MenuInventory.cpp:729
1328 msgstr "Гэтую рэч можна выкарыстаць толькі з панэлі дзеянняў."
1329
1330 #: ../../../src/MenuInventory.cpp:718
10851331 msgid "Inventory is full."
10861332 msgstr "Інвентар поўны."
10871333
1088 #: ../../../src/MenuInventory.cpp:849
1334 #: ../../../src/MenuInventory.cpp:843
10891335 #, c-format
10901336 msgid "Not enough %s."
10911337 msgstr "Не стае %s."
10921338
1093 #: ../../../src/MenuInventory.cpp:869 ../../../src/MenuInventory.cpp:876
1339 #: ../../../src/MenuInventory.cpp:863 ../../../src/MenuInventory.cpp:870
10941340 msgid "This item can not be sold."
1095 msgstr "Гэты прадмет немагчыма прадаць."
1341 msgstr "Гэтую рэч немагчыма прадаць."
10961342
10971343 #: ../../../src/MenuLog.cpp:91
10981344 msgid "Notes"
11001346
11011347 #: ../../../src/MenuLog.cpp:92
11021348 msgid "Quests"
1103 msgstr "Заданні"
1104
1105 #: ../../../src/MenuManager.cpp:286
1349 msgstr "Квэсты"
1350
1351 #: ../../../src/MenuManager.cpp:305
11061352 #, c-format
11071353 msgid "XP: %d/%d"
11081354 msgstr "Досвед: %d/%d"
11091355
1110 #: ../../../src/MenuManager.cpp:827
1356 #: ../../../src/MenuManager.cpp:875
11111357 msgid "This item can not be dropped."
1112 msgstr "Гэты прадмет немагчыма выкінуць."
1358 msgstr "Гэтую рэч немагчыма выкінуць."
1359
1360 #: ../../../src/MenuManager.cpp:1501
1361 msgid "Equipped"
1362 msgstr "Надзета"
1363
1364 #: ../../../src/MenuMovementType.cpp:87
1365 msgid "Select a Movement Type"
1366 msgstr "Абраць тып руху"
1367
1368 #: ../../../src/MenuMovementType.cpp:89
1369 msgid "Can be changed later in the Configuration menu."
1370 msgstr "Можна змяніць у меню канфігурацыі."
1371
1372 #: ../../../src/MenuMovementType.cpp:92 ../../../src/MenuMovementType.cpp:122
1373 msgid "Keyboard"
1374 msgstr "Клавіятура"
1375
1376 #: ../../../src/MenuMovementType.cpp:93 ../../../src/MenuMovementType.cpp:128
1377 msgid "Mouse"
1378 msgstr "Мыш"
1379
1380 #: ../../../src/MenuMovementType.cpp:129
1381 msgid "Button"
1382 msgstr "Кнопка"
11131383
11141384 #: ../../../src/MenuNumPicker.cpp:59
11151385 msgid "Enter amount:"
11161386 msgstr "Увядзіце колькасць:"
11171387
1118 #: ../../../src/MenuPowers.cpp:787
1388 #: ../../../src/MenuPowers.cpp:894
11191389 msgid "Passive"
11201390 msgstr "Пасіўныя"
11211391
1122 #: ../../../src/MenuPowers.cpp:792
1392 #: ../../../src/MenuPowers.cpp:901
11231393 #, c-format
11241394 msgid "Costs %d MP"
11251395 msgstr "Каштуе %d маны"
11261396
1127 #: ../../../src/MenuPowers.cpp:796
1397 #: ../../../src/MenuPowers.cpp:905
11281398 #, c-format
11291399 msgid "Costs %d HP"
11301400 msgstr "Каштуе %d жыцця"
11311401
1132 #: ../../../src/MenuPowers.cpp:801
1402 #: ../../../src/MenuPowers.cpp:909
11331403 msgid "Cooldown:"
11341404 msgstr "Аднаўленне:"
11351405
1136 #: ../../../src/MenuPowers.cpp:866 ../../../src/MenuPowers.cpp:869
1406 #: ../../../src/MenuPowers.cpp:960 ../../../src/MenuPowers.cpp:963
11371407 msgid "Damage per second"
11381408 msgstr "Урон за секунду"
11391409
1140 #: ../../../src/MenuPowers.cpp:872 ../../../src/MenuPowers.cpp:875
1410 #: ../../../src/MenuPowers.cpp:966 ../../../src/MenuPowers.cpp:969
11411411 msgid "HP per second"
11421412 msgstr "Жыцця за секунду"
11431413
1144 #: ../../../src/MenuPowers.cpp:878 ../../../src/MenuPowers.cpp:881
1414 #: ../../../src/MenuPowers.cpp:972 ../../../src/MenuPowers.cpp:975
11451415 msgid "MP per second"
11461416 msgstr "Маны за секунду"
11471417
1148 #: ../../../src/MenuPowers.cpp:885
1418 #: ../../../src/MenuPowers.cpp:979
11491419 msgid "Immobilize"
11501420 msgstr "Зафіксаваць"
11511421
1152 #: ../../../src/MenuPowers.cpp:893
1422 #: ../../../src/MenuPowers.cpp:987
11531423 msgid "Immunity"
11541424 msgstr "Устойлівасць"
11551425
1156 #: ../../../src/MenuPowers.cpp:896
1426 #: ../../../src/MenuPowers.cpp:990
11571427 msgid "Immunity to damage over time"
11581428 msgstr "Устойлівасць да перыядычнага ўрону"
11591429
1160 #: ../../../src/MenuPowers.cpp:899
1430 #: ../../../src/MenuPowers.cpp:993
11611431 msgid "Immunity to slow"
11621432 msgstr "Устойлівасць да запавольвання"
11631433
1164 #: ../../../src/MenuPowers.cpp:902
1434 #: ../../../src/MenuPowers.cpp:996
11651435 msgid "Immunity to stun"
11661436 msgstr "Устойлівасць да аглушэння"
11671437
1168 #: ../../../src/MenuPowers.cpp:905
1438 #: ../../../src/MenuPowers.cpp:999
11691439 msgid "Immunity to HP steal"
11701440 msgstr "Устойлівасць да выцягвання жыцця"
11711441
1172 #: ../../../src/MenuPowers.cpp:908
1442 #: ../../../src/MenuPowers.cpp:1002
11731443 msgid "Immunity to MP steal"
11741444 msgstr "Устойлівасць да выцягвання маны"
11751445
1176 #: ../../../src/MenuPowers.cpp:911
1446 #: ../../../src/MenuPowers.cpp:1005
11771447 msgid "Immunity to knockback"
11781448 msgstr "Устойлівасць да скульвання"
11791449
1180 #: ../../../src/MenuPowers.cpp:914
1450 #: ../../../src/MenuPowers.cpp:1008
11811451 msgid "Immunity to damage reflection"
11821452 msgstr "Устойлівасць да адбіцця ўрону"
11831453
1184 #: ../../../src/MenuPowers.cpp:917
1454 #: ../../../src/MenuPowers.cpp:1014
11851455 msgid "Stun"
11861456 msgstr "Аглушэнне"
11871457
1188 #: ../../../src/MenuPowers.cpp:920
1458 #: ../../../src/MenuPowers.cpp:1017
11891459 msgid "Automatic revive on death"
11901460 msgstr "Аўтаматычна адраджацца пасля смерці"
11911461
1192 #: ../../../src/MenuPowers.cpp:923
1462 #: ../../../src/MenuPowers.cpp:1020
11931463 msgid "Convert"
11941464 msgstr "Пераўтварыць"
11951465
1196 #: ../../../src/MenuPowers.cpp:926
1466 #: ../../../src/MenuPowers.cpp:1023
11971467 msgid "Fear"
11981468 msgstr "Страх"
11991469
1200 #: ../../../src/MenuPowers.cpp:929
1470 #: ../../../src/MenuPowers.cpp:1026
12011471 msgid "Lifespan"
12021472 msgstr "Працягласць жыцця"
12031473
1204 #: ../../../src/MenuPowers.cpp:953
1474 #: ../../../src/MenuPowers.cpp:1050
12051475 msgid "Magical Shield"
12061476 msgstr "Магічны шчыт"
12071477
1208 #: ../../../src/MenuPowers.cpp:982
1478 #: ../../../src/MenuPowers.cpp:1079
12091479 msgid "Healing"
12101480 msgstr "Лекаванне"
12111481
1212 #: ../../../src/MenuPowers.cpp:985
1482 #: ../../../src/MenuPowers.cpp:1082
12131483 msgid "Knockback"
12141484 msgstr "Скульванне"
12151485
1216 #: ../../../src/MenuPowers.cpp:1010
1486 #: ../../../src/MenuPowers.cpp:1106
12171487 #, c-format
12181488 msgid "%d%% chance"
12191489 msgstr "%d%% шанец"
12201490
1221 #: ../../../src/MenuPowers.cpp:1062
1491 #: ../../../src/MenuPowers.cpp:1158
12221492 msgid "Base Accuracy"
12231493 msgstr "Базавая трапнасць"
12241494
1225 #: ../../../src/MenuPowers.cpp:1082
1495 #: ../../../src/MenuPowers.cpp:1178
12261496 msgid "Base Critical Chance"
12271497 msgstr "Базавы шанец крытычнага ўрону"
12281498
1229 #: ../../../src/MenuPowers.cpp:1090
1499 #: ../../../src/MenuPowers.cpp:1186
12301500 msgid "Ignores Absorbtion"
12311501 msgstr "Не зважае на паглынанне"
12321502
1233 #: ../../../src/MenuPowers.cpp:1095
1503 #: ../../../src/MenuPowers.cpp:1191
12341504 msgid "Ignores Avoidance"
12351505 msgstr "Не зважае на ўхіленне"
12361506
1237 #: ../../../src/MenuPowers.cpp:1100
1507 #: ../../../src/MenuPowers.cpp:1196
12381508 #, c-format
12391509 msgid "%d%% Chance to crit slowed targets"
12401510 msgstr "%d%% шанец нанесці крытычны ўрон запаволеным супраціўнікам"
12411511
1242 #: ../../../src/MenuPowers.cpp:1105
1512 #: ../../../src/MenuPowers.cpp:1201
12431513 #, c-format
12441514 msgid "Elemental Damage (%s)"
1245 msgstr ""
1246
1247 #: ../../../src/MenuPowers.cpp:1114
1515 msgstr "Стыхійны ўрон (%s)"
1516
1517 #: ../../../src/MenuPowers.cpp:1210
12481518 #, c-format
12491519 msgid "Requires a %s"
12501520 msgstr "Патрабуецца %s"
12511521
1252 #: ../../../src/MenuPowers.cpp:1151 ../../../src/MenuPowers.cpp:1154
1522 #: ../../../src/MenuPowers.cpp:1248 ../../../src/MenuPowers.cpp:1251
12531523 #, c-format
12541524 msgid "Requires Power: %s"
12551525 msgstr "Патрабуецца талент: %s"
12561526
1257 #: ../../../src/MenuPowers.cpp:1163
1527 #: ../../../src/MenuPowers.cpp:1260
12581528 msgid "Click to Unlock (uses 1 Skill Point)"
1259 msgstr "Пстрыкніце, каб разблакаваць (за 1 пункт уменняў)"
1260
1261 #: ../../../src/MenuPowers.cpp:1167 ../../../src/MenuPowers.cpp:1169
1529 msgstr "Пстрыкніце, каб разблакаваць (за 1 бал здольнасцяў)"
1530
1531 #: ../../../src/MenuPowers.cpp:1264 ../../../src/MenuPowers.cpp:1266
12621532 msgid "Requires 1 Skill Point"
1263 msgstr "Патрабуецца 1 пункт уменняў"
1264
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
1533 msgstr "Патрабуецца 1 бал здольнасцяў"
1534
1535 #: ../../../src/MenuPowers.cpp:1466
1536 #, c-format
1537 msgid "Available skill points: %d"
1538 msgstr "Даступныя балы талентаў: %d"
1539
1540 #: ../../../src/MenuPowers.cpp:1498
12761541 msgid "Next Level:"
12771542 msgstr "Наступны ўзровень:"
12781543
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
1544 #: ../../../src/MenuStash.cpp:80 ../../../src/MenuStash.cpp:161
1545 msgid "Stash"
1546 msgstr "Схованка"
1547
1548 #: ../../../src/MenuStash.cpp:174 ../../../src/MenuStash.cpp:188
1549 msgid "Private"
1550 msgstr "Асабістае"
1551
1552 #: ../../../src/MenuStash.cpp:175
1553 msgid "Shared"
1554 msgstr "Абагулена"
1555
1556 #: ../../../src/MenuStash.cpp:340
1557 msgid "This item can not be stored in the stash."
1558 msgstr "Гэты аб'ект немагчыма захоўваць у схованцы."
1559
1560 #: ../../../src/MenuStash.cpp:345
1561 msgid "This item can not be stored in the private stash."
1562 msgstr "Гэты аб'ект немагчыма захоўваць у асабістай схованцы."
1563
1564 #: ../../../src/MenuStash.cpp:350
1565 msgid "This item can not be stored in the shared stash."
1566 msgstr "Гэты аб'ект немагчыма захоўваць у агульнай схованцы."
1567
1568 #: ../../../src/MenuStash.cpp:360
12881569 msgid "Stash is full."
12891570 msgstr "Схованка поўная."
12901571
1291 #: ../../../src/MenuTalker.cpp:454
1572 #: ../../../src/MenuStash.cpp:414
1573 #, c-format
1574 msgid "Can not store item in stash: %s"
1575 msgstr "Немагчыма захоўваць у схованцы: %s"
1576
1577 #: ../../../src/MenuTalker.cpp:448
1578 #, c-format
1579 msgid "<dialog node %d>"
1580 msgstr "<dialog node %d>"
1581
1582 #: ../../../src/MenuTalker.cpp:456
12921583 msgid "Trade"
12931584 msgstr "Гандляваць"
12941585
1295 #: ../../../src/MenuVendor.cpp:58
1586 #: ../../../src/MenuVendor.cpp:60
12961587 msgid "Buyback"
12971588 msgstr "Выкуп"
12981589
1299 #: ../../../src/MenuVendor.cpp:279
1590 #: ../../../src/MenuVendor.cpp:283
13001591 msgid "Vendor"
13011592 msgstr "Гандляр"
13021593
1303 #: ../../../src/PowerManager.cpp:1136
1594 #: ../../../src/PowerManager.cpp:1204
13041595 #, c-format
13051596 msgid "+%d Shield"
13061597 msgstr "+%d Шчыт"
13071598
1308 #: ../../../src/PowerManager.cpp:1392
1599 #: ../../../src/PowerManager.cpp:1461
13091600 msgid "You are already transformed, untransform first."
1310 msgstr "Вы ўжо трансфарміраваны, спачатку растрансфарміруўцеся."
1311
1312 #: ../../../src/PowerManager.cpp:1404
1601 msgstr "Вы ўжо трансфарманыя, спачатку растрансфармуўцеся."
1602
1603 #: ../../../src/PowerManager.cpp:1473
13131604 msgid "Could not untransform at this position."
1314 msgstr "Тут немагчыма растрансфарміравацца"
1605 msgstr "Тут немагчыма растрансфармавацца."
13151606
13161607 #: ../../../src/QuestLog.cpp:234
13171608 msgid "Completed Quests"
1318 msgstr "Завершаныя заданні"
1319
1320 #: ../../../src/SaveLoad.cpp:243 ../../../src/SaveLoad.cpp:244
1609 msgstr "Завершаныя квэсты"
1610
1611 #: ../../../src/SaveLoad.cpp:250 ../../../src/SaveLoad.cpp:251
13211612 msgid "Game saved."
1322 msgstr "Гульня захавана."
1323
1324 #: ../../../src/SDLInputState.cpp:582
1613 msgstr "Гульня захаваная."
1614
1615 #: ../../../src/SDLInputState.cpp:645
1616 msgid "BkSp"
1617 msgstr "Backspace"
1618
1619 #: ../../../src/SDLInputState.cpp:646
1620 msgid "Caps"
1621 msgstr "Caps Lock"
1622
1623 #: ../../../src/SDLInputState.cpp:647
1624 msgid "Del"
1625 msgstr "Del"
1626
1627 #: ../../../src/SDLInputState.cpp:649 ../../../src/SDLInputState.cpp:679
1628 msgid "End"
1629 msgstr "End"
1630
1631 #: ../../../src/SDLInputState.cpp:650
1632 msgid "Esc"
1633 msgstr "Esc"
1634
1635 #: ../../../src/SDLInputState.cpp:651 ../../../src/SDLInputState.cpp:681
1636 msgid "Home"
1637 msgstr "Home"
1638
1639 #: ../../../src/SDLInputState.cpp:652
1640 msgid "Ins"
1641 msgstr "Ins"
1642
1643 #: ../../../src/SDLInputState.cpp:653
1644 msgid "LAlt"
1645 msgstr "Левы Alt"
1646
1647 #: ../../../src/SDLInputState.cpp:654
1648 msgid "LCtrl"
1649 msgstr "Левы Ctrl"
1650
1651 #: ../../../src/SDLInputState.cpp:656
1652 msgid "LShft"
1653 msgstr "Левы Shift"
1654
1655 #: ../../../src/SDLInputState.cpp:657
1656 msgid "Num"
1657 msgstr "Num"
1658
1659 #: ../../../src/SDLInputState.cpp:658
1660 msgid "PgDn"
1661 msgstr "PgDn"
1662
1663 #: ../../../src/SDLInputState.cpp:659
1664 msgid "PgUp"
1665 msgstr "PgUp"
1666
1667 #: ../../../src/SDLInputState.cpp:660 ../../../src/SDLInputState.cpp:690
1668 msgid "Pause"
1669 msgstr "Pause"
1670
1671 #: ../../../src/SDLInputState.cpp:661
1672 msgid "Print"
1673 msgstr "Print"
1674
1675 #: ../../../src/SDLInputState.cpp:662
1676 msgid "RAlt"
1677 msgstr "Правы Alt"
1678
1679 #: ../../../src/SDLInputState.cpp:663
1680 msgid "RCtrl"
1681 msgstr "Правы Ctrl"
1682
1683 #: ../../../src/SDLInputState.cpp:664
1684 msgid "Ret"
1685 msgstr "Return"
1686
1687 #: ../../../src/SDLInputState.cpp:666
1688 msgid "RShft"
1689 msgstr "Правы Shift"
1690
1691 #: ../../../src/SDLInputState.cpp:667
1692 msgid "SLock"
1693 msgstr "Scroll Lock"
1694
1695 #: ../../../src/SDLInputState.cpp:668
1696 msgid "Spc"
1697 msgstr "Прагал"
1698
1699 #: ../../../src/SDLInputState.cpp:669 ../../../src/SDLInputState.cpp:699
1700 msgid "Tab"
1701 msgstr "Tab"
1702
1703 #: ../../../src/SDLInputState.cpp:675
13251704 msgid "Backspace"
13261705 msgstr "Backspace"
13271706
1328 #: ../../../src/SDLInputState.cpp:583
1707 #: ../../../src/SDLInputState.cpp:676
13291708 msgid "CapsLock"
13301709 msgstr "CapsLock"
13311710
1332 #: ../../../src/SDLInputState.cpp:586
1333 msgid "End"
1334 msgstr "End"
1335
1336 #: ../../../src/SDLInputState.cpp:587
1711 #: ../../../src/SDLInputState.cpp:680
13371712 msgid "Escape"
13381713 msgstr "Escape"
13391714
1340 #: ../../../src/SDLInputState.cpp:588
1341 msgid "Home"
1342 msgstr "Home"
1343
1344 #: ../../../src/SDLInputState.cpp:589
1715 #: ../../../src/SDLInputState.cpp:682
13451716 msgid "Insert"
13461717 msgstr "Insert"
13471718
1348 #: ../../../src/SDLInputState.cpp:590
1719 #: ../../../src/SDLInputState.cpp:683
13491720 msgid "Left Alt"
13501721 msgstr "Левы Alt"
13511722
1352 #: ../../../src/SDLInputState.cpp:591
1723 #: ../../../src/SDLInputState.cpp:684
13531724 msgid "Left Ctrl"
13541725 msgstr "Левы Ctrl"
13551726
1356 #: ../../../src/SDLInputState.cpp:593
1727 #: ../../../src/SDLInputState.cpp:686
13571728 msgid "Left Shift"
13581729 msgstr "Левы Shift"
13591730
1360 #: ../../../src/SDLInputState.cpp:594
1731 #: ../../../src/SDLInputState.cpp:687
13611732 msgid "NumLock"
13621733 msgstr "NumLock"
13631734
1364 #: ../../../src/SDLInputState.cpp:595
1735 #: ../../../src/SDLInputState.cpp:688
13651736 msgid "PageDown"
13661737 msgstr "PageDown"
13671738
1368 #: ../../../src/SDLInputState.cpp:596
1739 #: ../../../src/SDLInputState.cpp:689
13691740 msgid "PageUp"
13701741 msgstr "PageUp"
13711742
1372 #: ../../../src/SDLInputState.cpp:597
1373 msgid "Pause"
1374 msgstr "Pause"
1375
1376 #: ../../../src/SDLInputState.cpp:598
1743 #: ../../../src/SDLInputState.cpp:691
13771744 msgid "PrintScreen"
13781745 msgstr "PrintScreen"
13791746
1380 #: ../../../src/SDLInputState.cpp:599
1747 #: ../../../src/SDLInputState.cpp:692
13811748 msgid "Right Alt"
13821749 msgstr "Правы Alt"
13831750
1384 #: ../../../src/SDLInputState.cpp:600
1751 #: ../../../src/SDLInputState.cpp:693
13851752 msgid "Right Ctrl"
13861753 msgstr "Правы Ctrl"
13871754
1388 #: ../../../src/SDLInputState.cpp:601
1755 #: ../../../src/SDLInputState.cpp:694
13891756 msgid "Return"
13901757 msgstr "Enter"
13911758
1392 #: ../../../src/SDLInputState.cpp:603
1759 #: ../../../src/SDLInputState.cpp:696
13931760 msgid "Right Shift"
13941761 msgstr "Правы Shift"
13951762
1396 #: ../../../src/SDLInputState.cpp:604
1763 #: ../../../src/SDLInputState.cpp:697
13971764 msgid "ScrollLock"
13981765 msgstr "ScrollLock"
13991766
1400 #: ../../../src/SDLInputState.cpp:605
1767 #: ../../../src/SDLInputState.cpp:698
14011768 msgid "Space"
14021769 msgstr "Прагал"
14031770
1404 #: ../../../src/SDLInputState.cpp:606
1405 msgid "Tab"
1406 msgstr "Tab"
1407
1408 #: ../../../src/SDLInputState.cpp:620
1771 #: ../../../src/SDLInputState.cpp:712
1772 #, c-format
1773 msgid "M%d"
1774 msgstr "M%d"
1775
1776 #: ../../../src/SDLInputState.cpp:718
14091777 #, c-format
14101778 msgid "Mouse %d"
14111779 msgstr "Мыш %d"
14121780
1413 #: ../../../src/SDLInputState.cpp:628
1781 #: ../../../src/SDLInputState.cpp:728
1782 #, c-format
1783 msgid "JX%d-"
1784 msgstr "JX%d-"
1785
1786 #: ../../../src/SDLInputState.cpp:730
14141787 #, c-format
14151788 msgid "Axis %d -"
14161789 msgstr "Вось %d -"
14171790
1418 #: ../../../src/SDLInputState.cpp:630
1791 #: ../../../src/SDLInputState.cpp:734
1792 #, c-format
1793 msgid "JX%d+"
1794 msgstr "JX%d+"
1795
1796 #: ../../../src/SDLInputState.cpp:736
14191797 #, c-format
14201798 msgid "Axis %d +"
14211799 msgstr "Вось %d +"
14221800
1423 #: ../../../src/SDLInputState.cpp:633
1801 #: ../../../src/SDLInputState.cpp:741
1802 #, c-format
1803 msgid "JB%d"
1804 msgstr "JB%d"
1805
1806 #: ../../../src/SDLInputState.cpp:743
14241807 #, c-format
14251808 msgid "Button %d"
14261809 msgstr "Кнопка %d"
14271810
1428 #: ../../../src/SDLInputState.cpp:637
1429 msgid "(none)"
1430 msgstr "(няма)"
1431
1432 #: ../../../src/SDLInputState.cpp:677
1811 #: ../../../src/SDLInputState.cpp:789
14331812 msgid "Touch control D-Pad"
1434 msgstr ""
1435
1436 #: ../../../src/SDLInputState.cpp:701
1813 msgstr "Сэнсарнае кіраванне D-Pad"
1814
1815 #: ../../../src/SDLInputState.cpp:812
14371816 msgid "Touch control buttons"
1438 msgstr ""
1439
1440 #: ../../../src/SDLInputState.cpp:716
1817 msgstr "Сэнсарныя кнопкі кіравання"
1818
1819 #: ../../../src/SDLInputState.cpp:826
14411820 msgid "Tap"
14421821 msgstr "Дакраніцеся"
14431822
1444 #: ../../../src/SDLInputState.cpp:760 ../../../src/SDLInputState.cpp:764
1445 #: ../../../src/SDLInputState.cpp:768
1823 #: ../../../src/SDLInputState.cpp:878 ../../../src/SDLInputState.cpp:880
1824 #, c-format
1825 msgid "Can not bind: %s"
1826 msgstr "Немагчыма прызначыць: %s"
1827
1828 #: ../../../src/SDLInputState.cpp:892 ../../../src/SDLInputState.cpp:896
1829 #: ../../../src/SDLInputState.cpp:900
14461830 #, c-format
14471831 msgid "'%s' is no longer bound to:"
14481832 msgstr "\"%s\" больш не звязана з:"
14881872 "Accuracy rating. The enemy's Avoidance rating is subtracted from this value "
14891873 "to calculate your likeliness to land a direct hit."
14901874 msgstr ""
1491 "Рэйтынг трапнасці. Для вылічэння верагоднасці прамога удару ад гэтага "
1875 "Рэйтынг трапнасці. Для вылічэння верагоднасці непасрэднага ўдару ад гэтага "
14921876 "значэння неабходна адняць рэйтынг ухілення супраціўніка."
14931877
14941878 #: ../../../src/Stats.cpp:63
15431927
15441928 #: ../../../src/Stats.cpp:93
15451929 msgid "Item Find Chance"
1546 msgstr "Шанец знаходжання прадметаў"
1930 msgstr "Шанец знаходжання рэчаў"
15471931
15481932 #: ../../../src/Stats.cpp:94
15491933 msgid "Increases the chance that an enemy will drop an item."
1550 msgstr "Павялічвае верагоднасць выпадзення прадметаў пасля смерці ворагаў."
1934 msgstr "Павялічвае верагоднасць выпадзення рэчаў пасля смерці ворагаў."
15511935
15521936 #: ../../../src/Stats.cpp:98
15531937 msgid "Stealth"
16051989 msgid "Base MP"
16061990 msgstr "Базавая мана"
16071991
1608 #: ../../../src/Utils.cpp:346
1992 #: ../../../src/Utils.cpp:365
16091993 msgid "k"
16101994 msgstr "k"
16111995
1612 #: ../../../src/Utils.cpp:580
1996 #: ../../../src/Utils.cpp:635
16131997 #, c-format
16141998 msgid "%s second"
16151999 msgstr "%s секунда"
16162000
1617 #: ../../../src/Utils.cpp:583
2001 #: ../../../src/Utils.cpp:638
16182002 #, c-format
16192003 msgid "%s seconds"
16202004 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-07-02 13:26-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:1220
133 #: ../../../src/StatBlock.cpp:926 ../../../src/StatBlock.cpp:932
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:937
139 #: ../../../src/StatBlock.cpp:943
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:704
181 msgid "Entering game world..."
182 msgstr "Влизане в игралния свят…"
183
184 #: ../../../src/GameStateLoad.cpp:707
185 msgid "Loading saved game..."
186 msgstr "Зареждане на запазената игра…"
187
188 #: ../../../src/GameStateLoad.cpp:740
189 msgid "Invalid save"
190 msgstr "Невалиден герой"
191
192 #: ../../../src/GameStateLoad.cpp:764 ../../../src/ItemManager.cpp:745
193 #: ../../../src/MenuPowers.cpp:882 ../../../src/MenuPowers.cpp:1241
194 #: ../../../src/MenuPowers.cpp:1653
195 #, c-format
196 msgid "Level %d"
197 msgstr "Ниво %d"
198
199 #: ../../../src/GameStateNew.cpp:66 ../../../src/InputState.cpp:416
200 #: ../../../src/MenuConfig.cpp:254
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:670
254 #: ../../../src/SDLInputState.cpp:700
255 msgid "Up"
256 msgstr "Up"
257
258 #: ../../../src/InputState.cpp:419 ../../../src/MenuMovementType.cpp:125
259 #: ../../../src/MenuMovementType.cpp:134 ../../../src/SDLInputState.cpp:648
260 #: ../../../src/SDLInputState.cpp:678
261 msgid "Down"
262 msgstr "Down"
263
264 #: ../../../src/InputState.cpp:420 ../../../src/MenuMovementType.cpp:124
265 #: ../../../src/MenuMovementType.cpp:133 ../../../src/SDLInputState.cpp:655
266 #: ../../../src/SDLInputState.cpp:685
267 msgid "Left"
268 msgstr "Left"
269
270 #: ../../../src/InputState.cpp:421 ../../../src/MenuMovementType.cpp:126
271 #: ../../../src/MenuMovementType.cpp:135 ../../../src/SDLInputState.cpp:665
272 #: ../../../src/SDLInputState.cpp:695
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:159
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:677
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:981
413 #, c-format
414 msgid "%d%% Speed"
415 msgstr "%d%% Бързина"
416
417 #: ../../../src/ItemManager.cpp:650 ../../../src/MenuPowers.cpp:984
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:953
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:1228
453 #: ../../../src/MenuPowers.cpp:1231
454 #, c-format
455 msgid "Requires Level %d"
456 msgstr "Изисква ниво %d"
457
458 #: ../../../src/ItemManager.cpp:836 ../../../src/MenuPowers.cpp:1220
459 #: ../../../src/MenuPowers.cpp:1222
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:898
490 msgid "Set:"
491 msgstr "Комплект:"
492
493 #: ../../../src/ItemManager.cpp:905
494 #, c-format
495 msgid "%d items:"
496 msgstr "%d предмета:"
497
498 #: ../../../src/ItemManager.cpp:920
499 #, c-format
500 msgid "Press [%s] to read"
501 msgstr "Натиснете [%s], за да прочетете"
502
503 #: ../../../src/ItemManager.cpp:923
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:1256
580 msgid "Clear"
581 msgstr "Изчисти"
582
583 #: ../../../src/MenuConfig.cpp:122 ../../../src/MenuConfig.cpp:1254
584 msgid "Assign:"
585 msgstr "Възложи"
586
587 #: ../../../src/MenuConfig.cpp:123 ../../../src/MenuConfig.cpp:253
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:252 ../../../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:256 ../../../src/MenuGameOver.cpp:72
600 msgid "Continue"
601 msgstr ""
602
603 #: ../../../src/MenuConfig.cpp:258
604 msgid "Save Game"
605 msgstr ""
606
607 #: ../../../src/MenuConfig.cpp:301 ../../../src/MenuConfig.cpp:352
608 msgid "Default"
609 msgstr ""
610
611 #: ../../../src/MenuConfig.cpp:301
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:302
618 msgid "Show all"
619 msgstr ""
620
621 #: ../../../src/MenuConfig.cpp:302
622 msgid ""
623 "Always show loot tooltips. Temporarily hide all loot tooltips with 'Alt'."
624 msgstr ""
625
626 #: ../../../src/MenuConfig.cpp:303 ../../../src/MenuConfig.cpp:308
627 msgid "Hidden"
628 msgstr ""
629
630 #: ../../../src/MenuConfig.cpp:303
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:306
637 msgid "Visible"
638 msgstr ""
639
640 #: ../../../src/MenuConfig.cpp:307
641 msgid "Visible (2x zoom)"
642 msgstr ""
643
644 #: ../../../src/MenuConfig.cpp:311
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:312
651 msgid "- Display a message"
652 msgstr ""
653
654 #: ../../../src/MenuConfig.cpp:313
655 msgid "- Play a sound"
656 msgstr ""
657
658 #: ../../../src/MenuConfig.cpp:314
659 msgid "- Change the cursor"
660 msgstr ""
661
662 #: ../../../src/MenuConfig.cpp:316
663 msgid "Disabled"
664 msgstr ""
665
666 #: ../../../src/MenuConfig.cpp:317
667 msgid "All"
668 msgstr ""
669
670 #: ../../../src/MenuConfig.cpp:318
671 msgid "Message & Cursor"
672 msgstr ""
673
674 #: ../../../src/MenuConfig.cpp:319
675 msgid "Message & Sound"
676 msgstr ""
677
678 #: ../../../src/MenuConfig.cpp:320
679 msgid "Sound & Cursor"
680 msgstr ""
681
682 #: ../../../src/MenuConfig.cpp:321
683 msgid "Message"
684 msgstr ""
685
686 #: ../../../src/MenuConfig.cpp:322
687 msgid "Cursor"
688 msgstr ""
689
690 #: ../../../src/MenuConfig.cpp:323
691 msgid "Sound"
692 msgstr ""
693
694 #: ../../../src/MenuConfig.cpp:329
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:347
701 msgid "The maximum frame rate that the game will be allowed to run at."
702 msgstr ""
703
704 #: ../../../src/MenuConfig.cpp:351
705 msgid ""
706 "The render size refers to the height in pixels of the surface used to draw "
707 "the game. Mods define the allowed render sizes, but this option allows "
708 "overriding the maximum size."
709 msgstr ""
710
711 #: ../../../src/MenuConfig.cpp:374 ../../../src/MenuConfig.cpp:1679
712 #: ../../../src/MenuGameOver.cpp:116
713 msgid "Exit"
714 msgstr "Излез"
715
716 #: ../../../src/MenuConfig.cpp:375
717 msgid "Video"
718 msgstr "Видео"
719
720 #: ../../../src/MenuConfig.cpp:376
161721 msgid "Audio"
162722 msgstr "Звук"
163723
164 #: ../../../src/GameStateConfigBase.cpp:161
165 #: ../../../src/GameStateConfigDesktop.cpp:131
724 #: ../../../src/MenuConfig.cpp:377
166725 msgid "Interface"
167726 msgstr "Интерфейс"
168727
169 #: ../../../src/GameStateConfigBase.cpp:162
170 #: ../../../src/GameStateConfigDesktop.cpp:134
728 #: ../../../src/MenuConfig.cpp:378
729 msgid "Input"
730 msgstr "Вход"
731
732 #: ../../../src/MenuConfig.cpp:379
733 msgid "Keybindings"
734 msgstr "Клавиши"
735
736 #: ../../../src/MenuConfig.cpp:380
171737 msgid "Mods"
172738 msgstr "Модификации"
173739
174 #: ../../../src/GameStateConfigBase.cpp:249 ../../../src/MenuExit.cpp:72
740 #: ../../../src/MenuConfig.cpp:392
741 msgid "Paused"
742 msgstr "Пауза"
743
744 #: ../../../src/MenuConfig.cpp:395
745 msgid "Time Played"
746 msgstr ""
747
748 #: ../../../src/MenuConfig.cpp:401
749 msgid "Renderer"
750 msgstr "Рендер"
751
752 #: ../../../src/MenuConfig.cpp:402
753 msgid "Full Screen Mode"
754 msgstr "Режим на цял екран"
755
756 #: ../../../src/MenuConfig.cpp:403
757 msgid "Hardware surfaces"
758 msgstr "Хардуерни повърхности"
759
760 #: ../../../src/MenuConfig.cpp:404
761 msgid "V-Sync"
762 msgstr "Вертикална синхронизация (V-Sync)"
763
764 #: ../../../src/MenuConfig.cpp:405
765 msgid "Texture Filtering"
766 msgstr "Текстурно филтриране"
767
768 #: ../../../src/MenuConfig.cpp:406
769 msgid "DPI scaling"
770 msgstr "DPI мащабиране"
771
772 #: ../../../src/MenuConfig.cpp:407
773 msgid "Parallax Layers"
774 msgstr ""
775
776 #: ../../../src/MenuConfig.cpp:408
777 msgid "Allow changing gamma"
778 msgstr "Разрешаване промяна на гамата"
779
780 #: ../../../src/MenuConfig.cpp:409
781 msgid "Gamma"
782 msgstr "Гама"
783
784 #: ../../../src/MenuConfig.cpp:410
785 msgid "Maximum Render Size"
786 msgstr ""
787
788 #: ../../../src/MenuConfig.cpp:411
789 msgid "Frame Limit"
790 msgstr ""
791
792 #: ../../../src/MenuConfig.cpp:413
793 msgid "Sound Volume"
794 msgstr "Сила на звука"
795
796 #: ../../../src/MenuConfig.cpp:414
175797 msgid "Music Volume"
176798 msgstr "Сила на музиката"
177799
178 #: ../../../src/GameStateConfigBase.cpp:253 ../../../src/MenuExit.cpp:77
179 msgid "Sound Volume"
180 msgstr "Сила на звука"
181
182 #: ../../../src/GameStateConfigBase.cpp:257
800 #: ../../../src/MenuConfig.cpp:416
183801 msgid "Language"
184802 msgstr "Език"
185803
186 #: ../../../src/GameStateConfigBase.cpp:266
804 #: ../../../src/MenuConfig.cpp:417
187805 msgid "Show FPS"
188806 msgstr "Показване на FPS"
189807
190 #: ../../../src/GameStateConfigBase.cpp:270
808 #: ../../../src/MenuConfig.cpp:418
809 msgid "Hardware mouse cursor"
810 msgstr "Хардуер за курсора на мишката"
811
812 #: ../../../src/MenuConfig.cpp:419
191813 msgid "Colorblind Mode"
192814 msgstr "Режим за далтонисти"
193815
194 #: ../../../src/GameStateConfigBase.cpp:274
195 msgid "Hardware mouse cursor"
196 msgstr "Хардуер за курсора на мишката"
197
198 #: ../../../src/GameStateConfigBase.cpp:278
816 #: ../../../src/MenuConfig.cpp:420
199817 msgid "Developer Mode"
200818 msgstr "Режим за програмисти"
201819
202 #: ../../../src/GameStateConfigBase.cpp:282
820 #: ../../../src/MenuConfig.cpp:421
203821 msgid "Subtitles"
204822 msgstr "Субтитри"
205823
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
824 #: ../../../src/MenuConfig.cpp:422
825 msgid "Loot tooltip visibility"
826 msgstr ""
827
828 #: ../../../src/MenuConfig.cpp:423
829 msgid "Mini-map mode"
830 msgstr ""
831
832 #: ../../../src/MenuConfig.cpp:424
833 msgid "Always show stat bar labels"
834 msgstr "Винаги да се показват статистики"
835
836 #: ../../../src/MenuConfig.cpp:425
837 msgid "Allow stat bar auto-hiding"
838 msgstr ""
839
840 #: ../../../src/MenuConfig.cpp:426
841 msgid "Show combat text"
842 msgstr "Показване на боен текст"
843
844 #: ../../../src/MenuConfig.cpp:427
845 msgid "Automatically equip items"
846 msgstr "Автоматично екипиране с предмети"
847
848 #: ../../../src/MenuConfig.cpp:428
849 msgid "Show hidden entity markers"
850 msgstr ""
851
852 #: ../../../src/MenuConfig.cpp:429
853 msgid "Low health notification"
854 msgstr ""
855
856 #: ../../../src/MenuConfig.cpp:430
857 msgid "Low health threshold"
858 msgstr ""
859
860 #: ../../../src/MenuConfig.cpp:431
861 msgid "Show item comparison tooltips"
862 msgstr ""
863
864 #: ../../../src/MenuConfig.cpp:434 ../../../src/MenuMovementType.cpp:94
865 #: ../../../src/MenuMovementType.cpp:131
866 msgid "Joystick"
867 msgstr "Джойстик"
868
869 #: ../../../src/MenuConfig.cpp:435
870 msgid "Move hero using mouse"
871 msgstr "Преместване на героя чрез мишка"
872
873 #: ../../../src/MenuConfig.cpp:436
874 msgid "Mouse aim"
875 msgstr "Прицелване чрез мишка"
876
877 #: ../../../src/MenuConfig.cpp:437
878 msgid "Do not use mouse"
879 msgstr "Да не се използва мишка"
880
881 #: ../../../src/MenuConfig.cpp:438
882 msgid "Swap mouse movement button"
883 msgstr ""
884
885 #: ../../../src/MenuConfig.cpp:439
886 msgid "Attack with mouse movement"
887 msgstr ""
888
889 #: ../../../src/MenuConfig.cpp:440
890 msgid "Joystick Deadzone"
891 msgstr "Мъртва зона на джойстик"
892
893 #: ../../../src/MenuConfig.cpp:441
894 msgid "Touch Controls"
895 msgstr ""
896
897 #: ../../../src/MenuConfig.cpp:442
898 msgid "Touch Gamepad Scaling"
899 msgstr ""
900
901 #: ../../../src/MenuConfig.cpp:452
902 #, c-format
903 msgid "Primary binding: %s"
904 msgstr ""
905
906 #: ../../../src/MenuConfig.cpp:453
907 #, c-format
908 msgid "Alternate binding: %s"
909 msgstr ""
910
911 #: ../../../src/MenuConfig.cpp:454
912 #, c-format
913 msgid "Joystick binding: %s"
914 msgstr ""
915
916 #: ../../../src/MenuConfig.cpp:556
261917 msgid ""
262918 "Will try to store surfaces in video memory versus system memory. The effect "
263919 "this has on performance depends on the renderer."
266922 "памет. Въздействието, което това има върху производителността зависи от "
267923 "рендера."
268924
269 #: ../../../src/GameStateConfigDesktop.cpp:189
925 #: ../../../src/MenuConfig.cpp:557
270926 msgid ""
271927 "Prevents screen tearing. Disable if you experience \"stuttering\" in "
272928 "windowed mode or input lag."
274930 "Предотвратява накъсването (screen tearing). Изключете, ако изпитвате "
275931 "проблеми в прозоречен режим или закъснение при въвеждане."
276932
277 #: ../../../src/GameStateConfigDesktop.cpp:190
933 #: ../../../src/MenuConfig.cpp:558
278934 msgid ""
279935 "When enabled, this uses the screen DPI in addition to the window dimensions "
280936 "to scale the rendering resolution. Otherwise, only the window dimensions are"
284940 " прозореца, за да мащабира разделителната способност на рендериране. В "
285941 "противен случай се използват само размерите на прозореца."
286942
287 #: ../../../src/GameStateConfigDesktop.cpp:191
943 #: ../../../src/MenuConfig.cpp:559
288944 msgid ""
289945 "This enables parallax (non-tile) layers. Disabling this setting can improve "
290946 "performance in some cases."
291947 msgstr ""
292948
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
949 #: ../../../src/MenuConfig.cpp:560
950 msgid ""
951 "Enables the below setting that controls the screen gamma level. The behavior"
952 " of the gamma setting can vary between platforms."
953 msgstr ""
954
955 #: ../../../src/MenuConfig.cpp:561
956 msgid ""
957 "Provides additional text for information that is primarily conveyed through "
958 "color."
959 msgstr ""
960
961 #: ../../../src/MenuConfig.cpp:562
962 msgid ""
963 "Some mods will automatically hide the stat bars when they are inactive. "
964 "Disabling this option will keep them displayed at all times."
965 msgstr ""
966
967 #: ../../../src/MenuConfig.cpp:563
968 msgid ""
969 "When enabled, empty equipment slots will be filled with applicable items "
970 "when they are obtained."
971 msgstr ""
972
973 #: ../../../src/MenuConfig.cpp:564
974 msgid ""
975 "Shows a marker above enemies, allies, and the player when they are obscured "
976 "by tall objects."
977 msgstr ""
978
979 #: ../../../src/MenuConfig.cpp:565
980 msgid ""
981 "When enabled, tooltips for equipped items of the same type are shown next to"
982 " standard item tooltips."
983 msgstr ""
984
985 #: ../../../src/MenuConfig.cpp:566
986 msgid ""
987 "This allows the game to be controlled entirely with the keyboard (or "
988 "joystick)."
989 msgstr ""
990
991 #: ../../../src/MenuConfig.cpp:567
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
998 #: ../../../src/MenuConfig.cpp:568
999 msgid ""
1000 "When 'Move hero using mouse' is enabled, this setting controls if the Power "
1001 "assigned to the movement button can be used by targeting an enemy. If this "
1002 "setting is disabled, it is required to use 'Shift' to access the Power "
1003 "assigned to the movement button."
1004 msgstr ""
1005
1006 #: ../../../src/MenuConfig.cpp:569
1007 msgid ""
1008 "The player's attacks will be aimed in the direction of the mouse cursor when"
1009 " this is enabled."
1010 msgstr ""
1011
1012 #: ../../../src/MenuConfig.cpp:570
1013 msgid ""
1014 "When enabled, a virtual gamepad will be added in-game. Other interactions, "
1015 "such as drag-and-drop behavior, are also altered to better suit touch input."
1016 msgstr ""
1017
1018 #: ../../../src/MenuConfig.cpp:621
1019 msgid "Active Mods"
1020 msgstr "Включени модификации"
1021
1022 #: ../../../src/MenuConfig.cpp:630
1023 msgid "Available Mods"
1024 msgstr "Налични модификации"
1025
1026 #: ../../../src/MenuConfig.cpp:649
1027 msgid "<< Disable"
1028 msgstr "<< Изключи"
1029
1030 #: ../../../src/MenuConfig.cpp:655
1031 msgid "Enable >>"
1032 msgstr "Включи >>"
1033
1034 #: ../../../src/MenuConfig.cpp:1536
1035 msgid "Version:"
1036 msgstr "Версия:"
1037
1038 #: ../../../src/MenuConfig.cpp:1541
1039 msgid "Game:"
1040 msgstr "Игра:"
1041
1042 #: ../../../src/MenuConfig.cpp:1546
1043 msgid "Engine version:"
1044 msgstr "Engine версия:"
1045
1046 #: ../../../src/MenuConfig.cpp:1554
1047 msgid "Requires mods:"
1048 msgstr "Изисква модификации:"
1049
1050 #: ../../../src/MenuConfig.cpp:1662 ../../../src/SDLInputState.cpp:750
1051 msgid "(none)"
1052 msgstr "(няма)"
1053
1054 #: ../../../src/MenuConfig.cpp:1679 ../../../src/MenuGameOver.cpp:73
1055 msgid "Save & Exit"
1056 msgstr "Запази и излез"
1057
1058 #: ../../../src/MenuDevConsole.cpp:65
8361059 msgid "Execute"
8371060 msgstr "Изпълни"
8381061
839 #: ../../../src/MenuDevConsole.cpp:101 ../../../src/MenuDevConsole.cpp:151
1062 #: ../../../src/MenuDevConsole.cpp:103 ../../../src/MenuDevConsole.cpp:153
8401063 msgid "Developer Console"
8411064 msgstr "Конзола за програмисти"
8421065
843 #: ../../../src/MenuDevConsole.cpp:141
1066 #: ../../../src/MenuDevConsole.cpp:143
8441067 #, c-format
8451068 msgid "Use '%s' to inspect with the cursor."
8461069 msgstr "Използвайте '%s', за да инспектирате с курсора."
8471070
848 #: ../../../src/MenuDevConsole.cpp:146
1071 #: ../../../src/MenuDevConsole.cpp:148
8491072 msgid "Arguments with spaces should be enclosed with double quotes. Example:"
8501073 msgstr "Аргументи с интервали трябва да бъдат оградени в кавички. Пример:"
8511074
852 #: ../../../src/MenuDevConsole.cpp:147
1075 #: ../../../src/MenuDevConsole.cpp:149
8531076 msgid "Type 'help' to get a list of commands."
8541077 msgstr "Напишете 'help', за да получите списък с команди."
8551078
856 #: ../../../src/MenuDevConsole.cpp:209 ../../../src/MenuDevConsole.cpp:213
1079 #: ../../../src/MenuDevConsole.cpp:211 ../../../src/MenuDevConsole.cpp:215
8571080 msgid "px"
8581081 msgstr "px"
8591082
860 #: ../../../src/MenuDevConsole.cpp:224
1083 #: ../../../src/MenuDevConsole.cpp:226
8611084 msgid "Distance"
8621085 msgstr "Distance"
8631086
864 #: ../../../src/MenuDevConsole.cpp:239 ../../../src/MenuDevConsole.cpp:286
1087 #: ../../../src/MenuDevConsole.cpp:241 ../../../src/MenuDevConsole.cpp:289
1088 #: ../../../src/MenuDevConsole.cpp:303
8651089 msgid "Entity"
8661090 msgstr "Entity"
8671091
868 #: ../../../src/MenuDevConsole.cpp:261 ../../../src/MenuDevConsole.cpp:268
1092 #: ../../../src/MenuDevConsole.cpp:263 ../../../src/MenuDevConsole.cpp:270
8691093 msgid "none"
8701094 msgstr "none"
8711095
872 #: ../../../src/MenuDevConsole.cpp:262 ../../../src/MenuDevConsole.cpp:264
1096 #: ../../../src/MenuDevConsole.cpp:264 ../../../src/MenuDevConsole.cpp:266
8731097 msgid "wall"
8741098 msgstr "wall"
8751099
876 #: ../../../src/MenuDevConsole.cpp:263 ../../../src/MenuDevConsole.cpp:265
1100 #: ../../../src/MenuDevConsole.cpp:265 ../../../src/MenuDevConsole.cpp:267
8771101 msgid "short wall / pit"
8781102 msgstr "short wall / pit"
8791103
880 #: ../../../src/MenuDevConsole.cpp:266
1104 #: ../../../src/MenuDevConsole.cpp:268
8811105 msgid "entity"
8821106 msgstr "entity"
8831107
884 #: ../../../src/MenuDevConsole.cpp:267
1108 #: ../../../src/MenuDevConsole.cpp:269
8851109 msgid "entity, ally"
8861110 msgstr "entity, ally"
8871111
888 #: ../../../src/MenuDevConsole.cpp:274
1112 #: ../../../src/MenuDevConsole.cpp:276
8891113 msgid "Tile"
8901114 msgstr "Tile"
8911115
892 #: ../../../src/MenuDevConsole.cpp:360
1116 #: ../../../src/MenuDevConsole.cpp:377
8931117 msgid "adds a power to the action bar"
8941118 msgstr "добавя умение към лентата за действия"
8951119
896 #: ../../../src/MenuDevConsole.cpp:361
1120 #: ../../../src/MenuDevConsole.cpp:378
8971121 msgid "turns on/off the display of the FPS counter"
8981122 msgstr ""
8991123
900 #: ../../../src/MenuDevConsole.cpp:362
1124 #: ../../../src/MenuDevConsole.cpp:379
9011125 msgid "turns on/off all of the HUD elements"
9021126 msgstr "включва/изключва всички елементи на HUD"
9031127
904 #: ../../../src/MenuDevConsole.cpp:363
1128 #: ../../../src/MenuDevConsole.cpp:380
9051129 msgid "turns on/off the developer hud"
9061130 msgstr "включва/изключва HUD за програмисти"
9071131
908 #: ../../../src/MenuDevConsole.cpp:364
1132 #: ../../../src/MenuDevConsole.cpp:381
9091133 msgid ""
9101134 "Prints a list of powers that match a search term. No search term will list "
9111135 "all items"
9131137 "Отпечатва списък с умения, които съответстват на термин за търсене. Без "
9141138 "термин за търсене ще се отпечатат всички умения."
9151139
916 #: ../../../src/MenuDevConsole.cpp:365
1140 #: ../../../src/MenuDevConsole.cpp:382
9171141 msgid "Prints out all the map filenames located in the \"maps/\" directory."
9181142 msgstr ""
9191143 "Отпечатва всички имена на файлове, намиращи се в директорията „maps/“."
9201144
921 #: ../../../src/MenuDevConsole.cpp:366
1145 #: ../../../src/MenuDevConsole.cpp:383
9221146 msgid ""
9231147 "Prints out the active campaign statuses that match a search term. No search "
9241148 "term will list all active statuses"
9261150 "Отпечатва активните състояния на кампания, които съответстват на термин за "
9271151 "търсене. Без термин за търсене ще се отпечатат всички активни състояния."
9281152
929 #: ../../../src/MenuDevConsole.cpp:367
1153 #: ../../../src/MenuDevConsole.cpp:384
9301154 msgid ""
9311155 "Prints a list of items that match a search term. No search term will list "
9321156 "all items"
9341158 "Отпечатва списък с предмети, които съответстват на термин за търсене. Без "
9351159 "термин за търсене ще се отпечатат всички предмети."
9361160
937 #: ../../../src/MenuDevConsole.cpp:368
1161 #: ../../../src/MenuDevConsole.cpp:385
9381162 msgid ""
9391163 "parses a series of event components and executes them as a single event"
9401164 msgstr ""
9411165 "анализира поредица от компоненти на събитие и ги изпълнява като единично "
9421166 "събитие"
9431167
944 #: ../../../src/MenuDevConsole.cpp:369
1168 #: ../../../src/MenuDevConsole.cpp:386
9451169 msgid "clears the command history"
9461170 msgstr "изчиства историята на командите"
9471171
948 #: ../../../src/MenuDevConsole.cpp:370
1172 #: ../../../src/MenuDevConsole.cpp:387
9491173 msgid "displays this text"
9501174 msgstr "показва този текст"
9511175
952 #: ../../../src/MenuDevConsole.cpp:377
1176 #: ../../../src/MenuDevConsole.cpp:394
9531177 msgid "Toggled the developer hud"
9541178 msgstr "HUD за програмисти е превключен"
9551179
956 #: ../../../src/MenuDevConsole.cpp:381
1180 #: ../../../src/MenuDevConsole.cpp:398
9571181 msgid "Toggled the hud"
9581182 msgstr "HUD е превключен"
9591183
960 #: ../../../src/MenuDevConsole.cpp:385
1184 #: ../../../src/MenuDevConsole.cpp:402
9611185 msgid "Toggled the FPS counter"
9621186 msgstr ""
9631187
964 #: ../../../src/MenuDevConsole.cpp:534
1188 #: ../../../src/MenuDevConsole.cpp:552
9651189 msgid "ERROR: Incorrect number of arguments"
9661190 msgstr "ГРЕШКА: Неправилен брой аргументи"
9671191
968 #: ../../../src/MenuDevConsole.cpp:536 ../../../src/MenuDevConsole.cpp:564
1192 #: ../../../src/MenuDevConsole.cpp:554 ../../../src/MenuDevConsole.cpp:582
9691193 msgid "HINT:"
9701194 msgstr "СЪВЕТ:"
9711195
972 #: ../../../src/MenuDevConsole.cpp:536
1196 #: ../../../src/MenuDevConsole.cpp:554
9731197 msgid "<id>"
9741198 msgstr "<id>"
9751199
976 #: ../../../src/MenuDevConsole.cpp:552
1200 #: ../../../src/MenuDevConsole.cpp:570
9771201 #, c-format
9781202 msgid "ERROR: '%s' is not a valid event key"
9791203 msgstr "ГРЕШКА: '%s' не е валиден ключ за събитие"
9801204
981 #: ../../../src/MenuDevConsole.cpp:562
1205 #: ../../../src/MenuDevConsole.cpp:580
9821206 msgid "ERROR: Too few arguments"
9831207 msgstr "ГРЕШКА: Твърде малко аргументи"
9841208
985 #: ../../../src/MenuDevConsole.cpp:564
1209 #: ../../../src/MenuDevConsole.cpp:582
9861210 msgid "<key>=<val> <key>=<val> ..."
9871211 msgstr "<key>=<val> <key>=<val> …"
9881212
989 #: ../../../src/MenuDevConsole.cpp:569
1213 #: ../../../src/MenuDevConsole.cpp:587
9901214 msgid "ERROR: Unknown command"
9911215 msgstr "ГРЕШКА: Непозната команда"
9921216
993 #: ../../../src/MenuDevConsole.cpp:571
1217 #: ../../../src/MenuDevConsole.cpp:589
9941218 msgid "HINT: Type help"
9951219 msgstr "СЪВЕТ: Напишете help"
9961220
997 #: ../../../src/MenuEnemy.cpp:138
1221 #: ../../../src/MenuEnemy.cpp:162
9981222 #, c-format
9991223 msgid "%s level %d"
10001224 msgstr "%s ниво %d"
10011225
1002 #: ../../../src/MenuEnemy.cpp:162
1226 #: ../../../src/MenuEnemy.cpp:186
10031227 msgid "Dead"
10041228 msgstr "Мъртъв"
10051229
1006 #: ../../../src/MenuEnemy.cpp:164
1230 #: ../../../src/MenuEnemy.cpp:188
10071231 msgid "Destroyed"
10081232 msgstr "Разрушен"
10091233
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
1234 #: ../../../src/MenuGameOver.cpp:69
1235 msgid "Game Over"
1236 msgstr ""
1237
1238 #: ../../../src/MenuInventory.cpp:178
10311239 #, c-format
10321240 msgid "Lost %d%% of %s."
10331241 msgstr "Загубихте %d%% от %s."
10341242
1035 #: ../../../src/MenuInventory.cpp:195
1243 #: ../../../src/MenuInventory.cpp:185
10361244 #, c-format
10371245 msgid "Lost %d%% of total XP."
10381246 msgstr "Загубихте %d%% от общия опит."
10391247
1040 #: ../../../src/MenuInventory.cpp:200
1248 #: ../../../src/MenuInventory.cpp:190
10411249 #, c-format
10421250 msgid "Lost %d%% of current level XP."
10431251 msgstr "Загубихте %d%% опит от текущото ниво."
10441252
1045 #: ../../../src/MenuInventory.cpp:226
1253 #: ../../../src/MenuInventory.cpp:216
10461254 #, c-format
10471255 msgid "Lost %s."
10481256 msgstr "Загубихте %s."
10491257
1050 #: ../../../src/MenuInventory.cpp:274 ../../../src/MenuStash.cpp:146
1258 #: ../../../src/MenuInventory.cpp:258 ../../../src/MenuStash.cpp:276
10511259 #, c-format
10521260 msgid "%d %s"
10531261 msgstr "%d %s"
10541262
1055 #: ../../../src/MenuInventory.cpp:317
1263 #: ../../../src/MenuInventory.cpp:301
10561264 msgid "Pick up item(s):"
10571265 msgstr "Вдигане на предмет:"
10581266
1059 #: ../../../src/MenuInventory.cpp:318
1267 #: ../../../src/MenuInventory.cpp:302
10601268 msgid "Use or equip item:"
10611269 msgstr "Използване на предмет:"
10621270
1063 #: ../../../src/MenuInventory.cpp:319
1271 #: ../../../src/MenuInventory.cpp:303
10641272 #, c-format
10651273 msgid "%s modifiers"
10661274 msgstr "Модификатори за %s"
10671275
1068 #: ../../../src/MenuInventory.cpp:320
1276 #: ../../../src/MenuInventory.cpp:304
10691277 msgid "Select a quantity of item:"
10701278 msgstr "Избиране на количество:"
10711279
1072 #: ../../../src/MenuInventory.cpp:323
1280 #: ../../../src/MenuInventory.cpp:307
10731281 msgid "Stash item stack:"
10741282 msgstr "Скриване на предмет:"
10751283
1076 #: ../../../src/MenuInventory.cpp:325
1284 #: ../../../src/MenuInventory.cpp:309
10771285 msgid "Sell item stack:"
10781286 msgstr "Продаване на предмет:"
10791287
1080 #: ../../../src/MenuInventory.cpp:592
1288 #: ../../../src/MenuInventory.cpp:576
10811289 msgid "You don't have enough of the required item."
10821290 msgstr "Нямате достатъчно от необходимия предмет."
10831291
1084 #: ../../../src/MenuInventory.cpp:599
1292 #: ../../../src/MenuInventory.cpp:588
10851293 msgid "You can't use this item right now."
10861294 msgstr "Не можете да използвате този предмет точно сега."
10871295
1088 #: ../../../src/MenuInventory.cpp:611
1296 #: ../../../src/MenuInventory.cpp:600
10891297 msgid "This item can only be used from the action bar."
10901298 msgstr "Този предмет може да бъде използван само от лентата за действия."
10911299
1092 #: ../../../src/MenuInventory.cpp:729
1300 #: ../../../src/MenuInventory.cpp:718
10931301 msgid "Inventory is full."
10941302 msgstr "Инвентарът е пълен."
10951303
1096 #: ../../../src/MenuInventory.cpp:849
1304 #: ../../../src/MenuInventory.cpp:843
10971305 #, c-format
10981306 msgid "Not enough %s."
10991307 msgstr "Нямате достатъчно %s."
11001308
1101 #: ../../../src/MenuInventory.cpp:869 ../../../src/MenuInventory.cpp:876
1309 #: ../../../src/MenuInventory.cpp:863 ../../../src/MenuInventory.cpp:870
11021310 msgid "This item can not be sold."
11031311 msgstr "Този предмет не може да бъде продаден."
11041312
11101318 msgid "Quests"
11111319 msgstr "Куестове"
11121320
1113 #: ../../../src/MenuManager.cpp:286
1321 #: ../../../src/MenuManager.cpp:305
11141322 #, c-format
11151323 msgid "XP: %d/%d"
11161324 msgstr "Опит: %d/%d"
11171325
1118 #: ../../../src/MenuManager.cpp:827
1326 #: ../../../src/MenuManager.cpp:875
11191327 msgid "This item can not be dropped."
11201328 msgstr "Този предмет не може да бъде пуснат."
1329
1330 #: ../../../src/MenuManager.cpp:1501
1331 msgid "Equipped"
1332 msgstr ""
1333
1334 #: ../../../src/MenuMovementType.cpp:87
1335 msgid "Select a Movement Type"
1336 msgstr ""
1337
1338 #: ../../../src/MenuMovementType.cpp:89
1339 msgid "Can be changed later in the Configuration menu."
1340 msgstr ""
1341
1342 #: ../../../src/MenuMovementType.cpp:92 ../../../src/MenuMovementType.cpp:122
1343 msgid "Keyboard"
1344 msgstr ""
1345
1346 #: ../../../src/MenuMovementType.cpp:93 ../../../src/MenuMovementType.cpp:128
1347 msgid "Mouse"
1348 msgstr ""
1349
1350 #: ../../../src/MenuMovementType.cpp:129
1351 msgid "Button"
1352 msgstr ""
11211353
11221354 #: ../../../src/MenuNumPicker.cpp:59
11231355 msgid "Enter amount:"
11241356 msgstr "Въведи количество:"
11251357
1126 #: ../../../src/MenuPowers.cpp:787
1358 #: ../../../src/MenuPowers.cpp:894
11271359 msgid "Passive"
11281360 msgstr "Пасивно"
11291361
1130 #: ../../../src/MenuPowers.cpp:792
1362 #: ../../../src/MenuPowers.cpp:901
11311363 #, c-format
11321364 msgid "Costs %d MP"
11331365 msgstr "Изразходва %d мана"
11341366
1135 #: ../../../src/MenuPowers.cpp:796
1367 #: ../../../src/MenuPowers.cpp:905
11361368 #, c-format
11371369 msgid "Costs %d HP"
11381370 msgstr "Изразходва %d здраве"
11391371
1140 #: ../../../src/MenuPowers.cpp:801
1372 #: ../../../src/MenuPowers.cpp:909
11411373 msgid "Cooldown:"
11421374 msgstr "Време на изчакване:"
11431375
1144 #: ../../../src/MenuPowers.cpp:866 ../../../src/MenuPowers.cpp:869
1376 #: ../../../src/MenuPowers.cpp:960 ../../../src/MenuPowers.cpp:963
11451377 msgid "Damage per second"
11461378 msgstr "Щети в секунда"
11471379
1148 #: ../../../src/MenuPowers.cpp:872 ../../../src/MenuPowers.cpp:875
1380 #: ../../../src/MenuPowers.cpp:966 ../../../src/MenuPowers.cpp:969
11491381 msgid "HP per second"
11501382 msgstr "Здраве в секунда"
11511383
1152 #: ../../../src/MenuPowers.cpp:878 ../../../src/MenuPowers.cpp:881
1384 #: ../../../src/MenuPowers.cpp:972 ../../../src/MenuPowers.cpp:975
11531385 msgid "MP per second"
11541386 msgstr "Мана в секунда"
11551387
1156 #: ../../../src/MenuPowers.cpp:885
1388 #: ../../../src/MenuPowers.cpp:979
11571389 msgid "Immobilize"
11581390 msgstr "Приковаване"
11591391
1160 #: ../../../src/MenuPowers.cpp:893
1392 #: ../../../src/MenuPowers.cpp:987
11611393 msgid "Immunity"
11621394 msgstr "Имунитет"
11631395
1164 #: ../../../src/MenuPowers.cpp:896
1396 #: ../../../src/MenuPowers.cpp:990
11651397 msgid "Immunity to damage over time"
11661398 msgstr "Имунитет към щети за интервал от време"
11671399
1168 #: ../../../src/MenuPowers.cpp:899
1400 #: ../../../src/MenuPowers.cpp:993
11691401 msgid "Immunity to slow"
11701402 msgstr "Имунитет към забавяне"
11711403
1172 #: ../../../src/MenuPowers.cpp:902
1404 #: ../../../src/MenuPowers.cpp:996
11731405 msgid "Immunity to stun"
11741406 msgstr "Имунитет към зашеметяване"
11751407
1176 #: ../../../src/MenuPowers.cpp:905
1408 #: ../../../src/MenuPowers.cpp:999
11771409 msgid "Immunity to HP steal"
11781410 msgstr "Имунитет към крадене на здраве"
11791411
1180 #: ../../../src/MenuPowers.cpp:908
1412 #: ../../../src/MenuPowers.cpp:1002
11811413 msgid "Immunity to MP steal"
11821414 msgstr "Имунитет към крадене на мана"
11831415
1184 #: ../../../src/MenuPowers.cpp:911
1416 #: ../../../src/MenuPowers.cpp:1005
11851417 msgid "Immunity to knockback"
11861418 msgstr "Имунитет към бутащ удар"
11871419
1188 #: ../../../src/MenuPowers.cpp:914
1420 #: ../../../src/MenuPowers.cpp:1008
11891421 msgid "Immunity to damage reflection"
11901422 msgstr "Имунитет към отразяване на щети"
11911423
1192 #: ../../../src/MenuPowers.cpp:917
1424 #: ../../../src/MenuPowers.cpp:1014
11931425 msgid "Stun"
11941426 msgstr "Зашеметяване"
11951427
1196 #: ../../../src/MenuPowers.cpp:920
1428 #: ../../../src/MenuPowers.cpp:1017
11971429 msgid "Automatic revive on death"
11981430 msgstr "Автоматично прераждане при смърт"
11991431
1200 #: ../../../src/MenuPowers.cpp:923
1432 #: ../../../src/MenuPowers.cpp:1020
12011433 msgid "Convert"
12021434 msgstr "Превръщане"
12031435
1204 #: ../../../src/MenuPowers.cpp:926
1436 #: ../../../src/MenuPowers.cpp:1023
12051437 msgid "Fear"
12061438 msgstr "Страх"
12071439
1208 #: ../../../src/MenuPowers.cpp:929
1440 #: ../../../src/MenuPowers.cpp:1026
12091441 msgid "Lifespan"
12101442 msgstr "Продължителност на живота"
12111443
1212 #: ../../../src/MenuPowers.cpp:953
1444 #: ../../../src/MenuPowers.cpp:1050
12131445 msgid "Magical Shield"
12141446 msgstr "Магически щит"
12151447
1216 #: ../../../src/MenuPowers.cpp:982
1448 #: ../../../src/MenuPowers.cpp:1079
12171449 msgid "Healing"
12181450 msgstr "Излекуване"
12191451
1220 #: ../../../src/MenuPowers.cpp:985
1452 #: ../../../src/MenuPowers.cpp:1082
12211453 msgid "Knockback"
12221454 msgstr "Бутащ удар"
12231455
1224 #: ../../../src/MenuPowers.cpp:1010
1456 #: ../../../src/MenuPowers.cpp:1106
12251457 #, c-format
12261458 msgid "%d%% chance"
12271459 msgstr "%d%% шанс"
12281460
1229 #: ../../../src/MenuPowers.cpp:1062
1461 #: ../../../src/MenuPowers.cpp:1158
12301462 msgid "Base Accuracy"
12311463 msgstr "Основна точност"
12321464
1233 #: ../../../src/MenuPowers.cpp:1082
1465 #: ../../../src/MenuPowers.cpp:1178
12341466 msgid "Base Critical Chance"
12351467 msgstr "Основен критичен шанс"
12361468
1237 #: ../../../src/MenuPowers.cpp:1090
1469 #: ../../../src/MenuPowers.cpp:1186
12381470 msgid "Ignores Absorbtion"
12391471 msgstr "Игнорира абсорбиране"
12401472
1241 #: ../../../src/MenuPowers.cpp:1095
1473 #: ../../../src/MenuPowers.cpp:1191
12421474 msgid "Ignores Avoidance"
12431475 msgstr "Игнорира избягване"
12441476
1245 #: ../../../src/MenuPowers.cpp:1100
1477 #: ../../../src/MenuPowers.cpp:1196
12461478 #, c-format
12471479 msgid "%d%% Chance to crit slowed targets"
12481480 msgstr "%d%% Шанс за критичен удар на забавени мишени"
12491481
1250 #: ../../../src/MenuPowers.cpp:1105
1482 #: ../../../src/MenuPowers.cpp:1201
12511483 #, c-format
12521484 msgid "Elemental Damage (%s)"
12531485 msgstr ""
12541486
1255 #: ../../../src/MenuPowers.cpp:1114
1487 #: ../../../src/MenuPowers.cpp:1210
12561488 #, c-format
12571489 msgid "Requires a %s"
12581490 msgstr "Изисква %s"
12591491
1260 #: ../../../src/MenuPowers.cpp:1151 ../../../src/MenuPowers.cpp:1154
1492 #: ../../../src/MenuPowers.cpp:1248 ../../../src/MenuPowers.cpp:1251
12611493 #, c-format
12621494 msgid "Requires Power: %s"
12631495 msgstr "Изисква умение: %s"
12641496
1265 #: ../../../src/MenuPowers.cpp:1163
1497 #: ../../../src/MenuPowers.cpp:1260
12661498 msgid "Click to Unlock (uses 1 Skill Point)"
12671499 msgstr "Натиснете, за да отключите (използва 1 точка за умения)"
12681500
1269 #: ../../../src/MenuPowers.cpp:1167 ../../../src/MenuPowers.cpp:1169
1501 #: ../../../src/MenuPowers.cpp:1264 ../../../src/MenuPowers.cpp:1266
12701502 msgid "Requires 1 Skill Point"
12711503 msgstr "Изисква 1 точка за умения"
12721504
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
1505 #: ../../../src/MenuPowers.cpp:1466
1506 #, c-format
1507 msgid "Available skill points: %d"
1508 msgstr ""
1509
1510 #: ../../../src/MenuPowers.cpp:1498
12841511 msgid "Next Level:"
12851512 msgstr "Следващо ниво:"
12861513
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
1514 #: ../../../src/MenuStash.cpp:80 ../../../src/MenuStash.cpp:161
1515 msgid "Stash"
1516 msgstr ""
1517
1518 #: ../../../src/MenuStash.cpp:174 ../../../src/MenuStash.cpp:188
1519 msgid "Private"
1520 msgstr ""
1521
1522 #: ../../../src/MenuStash.cpp:175
1523 msgid "Shared"
1524 msgstr ""
1525
1526 #: ../../../src/MenuStash.cpp:340
1527 msgid "This item can not be stored in the stash."
1528 msgstr ""
1529
1530 #: ../../../src/MenuStash.cpp:345
1531 msgid "This item can not be stored in the private stash."
1532 msgstr ""
1533
1534 #: ../../../src/MenuStash.cpp:350
1535 msgid "This item can not be stored in the shared stash."
1536 msgstr ""
1537
1538 #: ../../../src/MenuStash.cpp:360
12961539 msgid "Stash is full."
12971540 msgstr "Сандъка е пълен."
12981541
1299 #: ../../../src/MenuTalker.cpp:454
1542 #: ../../../src/MenuStash.cpp:414
1543 #, c-format
1544 msgid "Can not store item in stash: %s"
1545 msgstr ""
1546
1547 #: ../../../src/MenuTalker.cpp:448
1548 #, c-format
1549 msgid "<dialog node %d>"
1550 msgstr ""
1551
1552 #: ../../../src/MenuTalker.cpp:456
13001553 msgid "Trade"
13011554 msgstr "Търгувай"
13021555
1303 #: ../../../src/MenuVendor.cpp:58
1556 #: ../../../src/MenuVendor.cpp:60
13041557 msgid "Buyback"
13051558 msgstr "Откупуване"
13061559
1307 #: ../../../src/MenuVendor.cpp:279
1560 #: ../../../src/MenuVendor.cpp:283
13081561 msgid "Vendor"
13091562 msgstr "Продавач"
13101563
1311 #: ../../../src/PowerManager.cpp:1136
1564 #: ../../../src/PowerManager.cpp:1204
13121565 #, c-format
13131566 msgid "+%d Shield"
13141567 msgstr "+%d Щит"
13151568
1316 #: ../../../src/PowerManager.cpp:1392
1569 #: ../../../src/PowerManager.cpp:1461
13171570 msgid "You are already transformed, untransform first."
13181571 msgstr "Вече сте преобразени, първо се преобразете обратно."
13191572
1320 #: ../../../src/PowerManager.cpp:1404
1573 #: ../../../src/PowerManager.cpp:1473
13211574 msgid "Could not untransform at this position."
13221575 msgstr "Не можахте да се преобразите на това място."
13231576
13251578 msgid "Completed Quests"
13261579 msgstr "Завършени куестове"
13271580
1328 #: ../../../src/SaveLoad.cpp:243 ../../../src/SaveLoad.cpp:244
1581 #: ../../../src/SaveLoad.cpp:250 ../../../src/SaveLoad.cpp:251
13291582 msgid "Game saved."
13301583 msgstr "Играта е запазена."
13311584
1332 #: ../../../src/SDLInputState.cpp:582
1585 #: ../../../src/SDLInputState.cpp:645
1586 msgid "BkSp"
1587 msgstr ""
1588
1589 #: ../../../src/SDLInputState.cpp:646
1590 msgid "Caps"
1591 msgstr ""
1592
1593 #: ../../../src/SDLInputState.cpp:647
1594 msgid "Del"
1595 msgstr ""
1596
1597 #: ../../../src/SDLInputState.cpp:649 ../../../src/SDLInputState.cpp:679
1598 msgid "End"
1599 msgstr "End"
1600
1601 #: ../../../src/SDLInputState.cpp:650
1602 msgid "Esc"
1603 msgstr ""
1604
1605 #: ../../../src/SDLInputState.cpp:651 ../../../src/SDLInputState.cpp:681
1606 msgid "Home"
1607 msgstr "Home"
1608
1609 #: ../../../src/SDLInputState.cpp:652
1610 msgid "Ins"
1611 msgstr ""
1612
1613 #: ../../../src/SDLInputState.cpp:653
1614 msgid "LAlt"
1615 msgstr ""
1616
1617 #: ../../../src/SDLInputState.cpp:654
1618 msgid "LCtrl"
1619 msgstr ""
1620
1621 #: ../../../src/SDLInputState.cpp:656
1622 msgid "LShft"
1623 msgstr ""
1624
1625 #: ../../../src/SDLInputState.cpp:657
1626 msgid "Num"
1627 msgstr ""
1628
1629 #: ../../../src/SDLInputState.cpp:658
1630 msgid "PgDn"
1631 msgstr ""
1632
1633 #: ../../../src/SDLInputState.cpp:659
1634 msgid "PgUp"
1635 msgstr ""
1636
1637 #: ../../../src/SDLInputState.cpp:660 ../../../src/SDLInputState.cpp:690
1638 msgid "Pause"
1639 msgstr "Pause"
1640
1641 #: ../../../src/SDLInputState.cpp:661
1642 msgid "Print"
1643 msgstr ""
1644
1645 #: ../../../src/SDLInputState.cpp:662
1646 msgid "RAlt"
1647 msgstr ""
1648
1649 #: ../../../src/SDLInputState.cpp:663
1650 msgid "RCtrl"
1651 msgstr ""
1652
1653 #: ../../../src/SDLInputState.cpp:664
1654 msgid "Ret"
1655 msgstr ""
1656
1657 #: ../../../src/SDLInputState.cpp:666
1658 msgid "RShft"
1659 msgstr ""
1660
1661 #: ../../../src/SDLInputState.cpp:667
1662 msgid "SLock"
1663 msgstr ""
1664
1665 #: ../../../src/SDLInputState.cpp:668
1666 msgid "Spc"
1667 msgstr ""
1668
1669 #: ../../../src/SDLInputState.cpp:669 ../../../src/SDLInputState.cpp:699
1670 msgid "Tab"
1671 msgstr "Tab"
1672
1673 #: ../../../src/SDLInputState.cpp:675
13331674 msgid "Backspace"
13341675 msgstr "Backspace"
13351676
1336 #: ../../../src/SDLInputState.cpp:583
1677 #: ../../../src/SDLInputState.cpp:676
13371678 msgid "CapsLock"
13381679 msgstr "CapsLock"
13391680
1340 #: ../../../src/SDLInputState.cpp:586
1341 msgid "End"
1342 msgstr "End"
1343
1344 #: ../../../src/SDLInputState.cpp:587
1681 #: ../../../src/SDLInputState.cpp:680
13451682 msgid "Escape"
13461683 msgstr "Escape"
13471684
1348 #: ../../../src/SDLInputState.cpp:588
1349 msgid "Home"
1350 msgstr "Home"
1351
1352 #: ../../../src/SDLInputState.cpp:589
1685 #: ../../../src/SDLInputState.cpp:682
13531686 msgid "Insert"
13541687 msgstr "Insert"
13551688
1356 #: ../../../src/SDLInputState.cpp:590
1689 #: ../../../src/SDLInputState.cpp:683
13571690 msgid "Left Alt"
13581691 msgstr "Left Alt"
13591692
1360 #: ../../../src/SDLInputState.cpp:591
1693 #: ../../../src/SDLInputState.cpp:684
13611694 msgid "Left Ctrl"
13621695 msgstr "Left Ctrl"
13631696
1364 #: ../../../src/SDLInputState.cpp:593
1697 #: ../../../src/SDLInputState.cpp:686
13651698 msgid "Left Shift"
13661699 msgstr "Left Shift"
13671700
1368 #: ../../../src/SDLInputState.cpp:594
1701 #: ../../../src/SDLInputState.cpp:687
13691702 msgid "NumLock"
13701703 msgstr "NumLock"
13711704
1372 #: ../../../src/SDLInputState.cpp:595
1705 #: ../../../src/SDLInputState.cpp:688
13731706 msgid "PageDown"
13741707 msgstr "PageDown"
13751708
1376 #: ../../../src/SDLInputState.cpp:596
1709 #: ../../../src/SDLInputState.cpp:689
13771710 msgid "PageUp"
13781711 msgstr "PageUp"
13791712
1380 #: ../../../src/SDLInputState.cpp:597
1381 msgid "Pause"
1382 msgstr "Pause"
1383
1384 #: ../../../src/SDLInputState.cpp:598
1713 #: ../../../src/SDLInputState.cpp:691
13851714 msgid "PrintScreen"
13861715 msgstr "PrintScreen"
13871716
1388 #: ../../../src/SDLInputState.cpp:599
1717 #: ../../../src/SDLInputState.cpp:692
13891718 msgid "Right Alt"
13901719 msgstr "Right Alt"
13911720
1392 #: ../../../src/SDLInputState.cpp:600
1721 #: ../../../src/SDLInputState.cpp:693
13931722 msgid "Right Ctrl"
13941723 msgstr "Right Ctrl"
13951724
1396 #: ../../../src/SDLInputState.cpp:601
1725 #: ../../../src/SDLInputState.cpp:694
13971726 msgid "Return"
13981727 msgstr "Return"
13991728
1400 #: ../../../src/SDLInputState.cpp:603
1729 #: ../../../src/SDLInputState.cpp:696
14011730 msgid "Right Shift"
14021731 msgstr "Right Shift"
14031732
1404 #: ../../../src/SDLInputState.cpp:604
1733 #: ../../../src/SDLInputState.cpp:697
14051734 msgid "ScrollLock"
14061735 msgstr "ScrollLock"
14071736
1408 #: ../../../src/SDLInputState.cpp:605
1737 #: ../../../src/SDLInputState.cpp:698
14091738 msgid "Space"
14101739 msgstr "Space"
14111740
1412 #: ../../../src/SDLInputState.cpp:606
1413 msgid "Tab"
1414 msgstr "Tab"
1415
1416 #: ../../../src/SDLInputState.cpp:620
1741 #: ../../../src/SDLInputState.cpp:712
1742 #, c-format
1743 msgid "M%d"
1744 msgstr ""
1745
1746 #: ../../../src/SDLInputState.cpp:718
14171747 #, c-format
14181748 msgid "Mouse %d"
14191749 msgstr "Mouse %d"
14201750
1421 #: ../../../src/SDLInputState.cpp:628
1751 #: ../../../src/SDLInputState.cpp:728
1752 #, c-format
1753 msgid "JX%d-"
1754 msgstr ""
1755
1756 #: ../../../src/SDLInputState.cpp:730
14221757 #, c-format
14231758 msgid "Axis %d -"
14241759 msgstr "Axis %d -"
14251760
1426 #: ../../../src/SDLInputState.cpp:630
1761 #: ../../../src/SDLInputState.cpp:734
1762 #, c-format
1763 msgid "JX%d+"
1764 msgstr ""
1765
1766 #: ../../../src/SDLInputState.cpp:736
14271767 #, c-format
14281768 msgid "Axis %d +"
14291769 msgstr "Axis %d +"
14301770
1431 #: ../../../src/SDLInputState.cpp:633
1771 #: ../../../src/SDLInputState.cpp:741
1772 #, c-format
1773 msgid "JB%d"
1774 msgstr ""
1775
1776 #: ../../../src/SDLInputState.cpp:743
14321777 #, c-format
14331778 msgid "Button %d"
14341779 msgstr "Бутон %d"
14351780
1436 #: ../../../src/SDLInputState.cpp:637
1437 msgid "(none)"
1438 msgstr "(няма)"
1439
1440 #: ../../../src/SDLInputState.cpp:677
1781 #: ../../../src/SDLInputState.cpp:789
14411782 msgid "Touch control D-Pad"
14421783 msgstr ""
14431784
1444 #: ../../../src/SDLInputState.cpp:701
1785 #: ../../../src/SDLInputState.cpp:812
14451786 msgid "Touch control buttons"
14461787 msgstr ""
14471788
1448 #: ../../../src/SDLInputState.cpp:716
1789 #: ../../../src/SDLInputState.cpp:826
14491790 msgid "Tap"
14501791 msgstr "Натискане"
14511792
1452 #: ../../../src/SDLInputState.cpp:760 ../../../src/SDLInputState.cpp:764
1453 #: ../../../src/SDLInputState.cpp:768
1793 #: ../../../src/SDLInputState.cpp:878 ../../../src/SDLInputState.cpp:880
1794 #, c-format
1795 msgid "Can not bind: %s"
1796 msgstr ""
1797
1798 #: ../../../src/SDLInputState.cpp:892 ../../../src/SDLInputState.cpp:896
1799 #: ../../../src/SDLInputState.cpp:900
14541800 #, c-format
14551801 msgid "'%s' is no longer bound to:"
14561802 msgstr "'%s' вече не е свързан с:"
16131959 msgid "Base MP"
16141960 msgstr "Основна мана"
16151961
1616 #: ../../../src/Utils.cpp:346
1962 #: ../../../src/Utils.cpp:365
16171963 msgid "k"
16181964 msgstr "к"
16191965
1620 #: ../../../src/Utils.cpp:580
1966 #: ../../../src/Utils.cpp:635
16211967 #, c-format
16221968 msgid "%s second"
16231969 msgstr "%s секунда"
16241970
1625 #: ../../../src/Utils.cpp:583
1971 #: ../../../src/Utils.cpp:638
16261972 #, c-format
16271973 msgid "%s seconds"
16281974 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-07-02 13:26-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:1220
133 #: ../../../src/StatBlock.cpp:926 ../../../src/StatBlock.cpp:932
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:937
139 #: ../../../src/StatBlock.cpp:943
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:704
181 msgid "Entering game world..."
182 msgstr "Entrant al món del joc..."
183
184 #: ../../../src/GameStateLoad.cpp:707
185 msgid "Loading saved game..."
186 msgstr "Carregant partida desada..."
187
188 #: ../../../src/GameStateLoad.cpp:740
189 msgid "Invalid save"
190 msgstr "Desat erroni"
191
192 #: ../../../src/GameStateLoad.cpp:764 ../../../src/ItemManager.cpp:745
193 #: ../../../src/MenuPowers.cpp:882 ../../../src/MenuPowers.cpp:1241
194 #: ../../../src/MenuPowers.cpp:1653
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:254
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:670
254 #: ../../../src/SDLInputState.cpp:700
255 msgid "Up"
256 msgstr "Amunt"
257
258 #: ../../../src/InputState.cpp:419 ../../../src/MenuMovementType.cpp:125
259 #: ../../../src/MenuMovementType.cpp:134 ../../../src/SDLInputState.cpp:648
260 #: ../../../src/SDLInputState.cpp:678
261 msgid "Down"
262 msgstr "Avall"
263
264 #: ../../../src/InputState.cpp:420 ../../../src/MenuMovementType.cpp:124
265 #: ../../../src/MenuMovementType.cpp:133 ../../../src/SDLInputState.cpp:655
266 #: ../../../src/SDLInputState.cpp:685
267 msgid "Left"
268 msgstr "Esquerra"
269
270 #: ../../../src/InputState.cpp:421 ../../../src/MenuMovementType.cpp:126
271 #: ../../../src/MenuMovementType.cpp:135 ../../../src/SDLInputState.cpp:665
272 #: ../../../src/SDLInputState.cpp:695
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:159
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:677
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:981
413 #, c-format
414 msgid "%d%% Speed"
415 msgstr "%d%% Velocitat"
416
417 #: ../../../src/ItemManager.cpp:650 ../../../src/MenuPowers.cpp:984
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:953
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:1228
453 #: ../../../src/MenuPowers.cpp:1231
454 #, c-format
455 msgid "Requires Level %d"
456 msgstr "Fa falta el nivell %d"
457
458 #: ../../../src/ItemManager.cpp:836 ../../../src/MenuPowers.cpp:1220
459 #: ../../../src/MenuPowers.cpp:1222
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:898
490 msgid "Set:"
491 msgstr "Conjunt:"
492
493 #: ../../../src/ItemManager.cpp:905
494 #, c-format
495 msgid "%d items:"
496 msgstr "%d objectes:"
497
498 #: ../../../src/ItemManager.cpp:920
499 #, c-format
500 msgid "Press [%s] to read"
501 msgstr "Prem [%s] per llegir"
502
503 #: ../../../src/ItemManager.cpp:923
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:1256
580 msgid "Clear"
581 msgstr "Netejar"
582
583 #: ../../../src/MenuConfig.cpp:122 ../../../src/MenuConfig.cpp:1254
584 msgid "Assign:"
585 msgstr "Assignar:"
586
587 #: ../../../src/MenuConfig.cpp:123 ../../../src/MenuConfig.cpp:253
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:252 ../../../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:256 ../../../src/MenuGameOver.cpp:72
600 msgid "Continue"
601 msgstr "Continuar"
602
603 #: ../../../src/MenuConfig.cpp:258
604 msgid "Save Game"
605 msgstr "Guardar la partida"
606
607 #: ../../../src/MenuConfig.cpp:301 ../../../src/MenuConfig.cpp:352
608 msgid "Default"
609 msgstr "Per defecte"
610
611 #: ../../../src/MenuConfig.cpp:301
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:302
621 msgid "Show all"
622 msgstr "Mostrar tot"
623
624 #: ../../../src/MenuConfig.cpp:302
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:303 ../../../src/MenuConfig.cpp:308
632 msgid "Hidden"
633 msgstr "Ocult"
634
635 #: ../../../src/MenuConfig.cpp:303
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:306
645 msgid "Visible"
646 msgstr "Visible"
647
648 #: ../../../src/MenuConfig.cpp:307
649 msgid "Visible (2x zoom)"
650 msgstr "Visible (2x d'augment)"
651
652 #: ../../../src/MenuConfig.cpp:311
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:312
661 msgid "- Display a message"
662 msgstr "- Mostra un missatge"
663
664 #: ../../../src/MenuConfig.cpp:313
665 msgid "- Play a sound"
666 msgstr "- Fes sonar un soroll"
667
668 #: ../../../src/MenuConfig.cpp:314
669 msgid "- Change the cursor"
670 msgstr "- Canvia el cursor"
671
672 #: ../../../src/MenuConfig.cpp:316
673 msgid "Disabled"
674 msgstr "Desactivat"
675
676 #: ../../../src/MenuConfig.cpp:317
677 msgid "All"
678 msgstr "Tots"
679
680 #: ../../../src/MenuConfig.cpp:318
681 msgid "Message & Cursor"
682 msgstr "Missatge i Cursor"
683
684 #: ../../../src/MenuConfig.cpp:319
685 msgid "Message & Sound"
686 msgstr "Missatge i So"
687
688 #: ../../../src/MenuConfig.cpp:320
689 msgid "Sound & Cursor"
690 msgstr "So i Cursor"
691
692 #: ../../../src/MenuConfig.cpp:321
693 msgid "Message"
694 msgstr "Missatge"
695
696 #: ../../../src/MenuConfig.cpp:322
697 msgid "Cursor"
698 msgstr "Cursor"
699
700 #: ../../../src/MenuConfig.cpp:323
701 msgid "Sound"
702 msgstr "So"
703
704 #: ../../../src/MenuConfig.cpp:329
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:347
713 msgid "The maximum frame rate that the game will be allowed to run at."
714 msgstr ""
715
716 #: ../../../src/MenuConfig.cpp:351
717 msgid ""
718 "The render size refers to the height in pixels of the surface used to draw "
719 "the game. Mods define the allowed render sizes, but this option allows "
720 "overriding the maximum size."
721 msgstr ""
722
723 #: ../../../src/MenuConfig.cpp:374 ../../../src/MenuConfig.cpp:1679
724 #: ../../../src/MenuGameOver.cpp:116
725 msgid "Exit"
726 msgstr "Sortir"
727
728 #: ../../../src/MenuConfig.cpp:375
729 msgid "Video"
730 msgstr "Video"
731
732 #: ../../../src/MenuConfig.cpp:376
160733 msgid "Audio"
161734 msgstr "Audio"
162735
163 #: ../../../src/GameStateConfigBase.cpp:161
164 #: ../../../src/GameStateConfigDesktop.cpp:131
736 #: ../../../src/MenuConfig.cpp:377
165737 msgid "Interface"
166738 msgstr "Interfície"
167739
168 #: ../../../src/GameStateConfigBase.cpp:162
169 #: ../../../src/GameStateConfigDesktop.cpp:134
740 #: ../../../src/MenuConfig.cpp:378
741 msgid "Input"
742 msgstr "Entrada"
743
744 #: ../../../src/MenuConfig.cpp:379
745 msgid "Keybindings"
746 msgstr "Enllaços de teclat"
747
748 #: ../../../src/MenuConfig.cpp:380
170749 msgid "Mods"
171750 msgstr "Mods"
172751
173 #: ../../../src/GameStateConfigBase.cpp:249 ../../../src/MenuExit.cpp:72
752 #: ../../../src/MenuConfig.cpp:392
753 msgid "Paused"
754 msgstr "Pausat"
755
756 #: ../../../src/MenuConfig.cpp:395
757 msgid "Time Played"
758 msgstr "Temps de joc"
759
760 #: ../../../src/MenuConfig.cpp:401
761 msgid "Renderer"
762 msgstr "Renderitzador"
763
764 #: ../../../src/MenuConfig.cpp:402
765 msgid "Full Screen Mode"
766 msgstr "Mode Pantalla Complerta"
767
768 #: ../../../src/MenuConfig.cpp:403
769 msgid "Hardware surfaces"
770 msgstr "Superfícies de maquinari"
771
772 #: ../../../src/MenuConfig.cpp:404
773 msgid "V-Sync"
774 msgstr "V-Sync"
775
776 #: ../../../src/MenuConfig.cpp:405
777 msgid "Texture Filtering"
778 msgstr "Filtre de Textura"
779
780 #: ../../../src/MenuConfig.cpp:406
781 msgid "DPI scaling"
782 msgstr "Escalat per PPP"
783
784 #: ../../../src/MenuConfig.cpp:407
785 msgid "Parallax Layers"
786 msgstr "Capes Parallax"
787
788 #: ../../../src/MenuConfig.cpp:408
789 msgid "Allow changing gamma"
790 msgstr "Permetre canviar gamma"
791
792 #: ../../../src/MenuConfig.cpp:409
793 msgid "Gamma"
794 msgstr "Gamma"
795
796 #: ../../../src/MenuConfig.cpp:410
797 msgid "Maximum Render Size"
798 msgstr ""
799
800 #: ../../../src/MenuConfig.cpp:411
801 msgid "Frame Limit"
802 msgstr ""
803
804 #: ../../../src/MenuConfig.cpp:413
805 msgid "Sound Volume"
806 msgstr "Volum del so"
807
808 #: ../../../src/MenuConfig.cpp:414
174809 msgid "Music Volume"
175810 msgstr "Volum de la música"
176811
177 #: ../../../src/GameStateConfigBase.cpp:253 ../../../src/MenuExit.cpp:77
178 msgid "Sound Volume"
179 msgstr "Volum del so"
180
181 #: ../../../src/GameStateConfigBase.cpp:257
812 #: ../../../src/MenuConfig.cpp:416
182813 msgid "Language"
183814 msgstr "Idioma"
184815
185 #: ../../../src/GameStateConfigBase.cpp:266
816 #: ../../../src/MenuConfig.cpp:417
186817 msgid "Show FPS"
187818 msgstr "Mostrar FPS"
188819
189 #: ../../../src/GameStateConfigBase.cpp:270
820 #: ../../../src/MenuConfig.cpp:418
821 msgid "Hardware mouse cursor"
822 msgstr "Cursos del ratolí per maquinari"
823
824 #: ../../../src/MenuConfig.cpp:419
190825 msgid "Colorblind Mode"
191826 msgstr "Mode per daltònics"
192827
193 #: ../../../src/GameStateConfigBase.cpp:274
194 msgid "Hardware mouse cursor"
195 msgstr "Cursos del ratolí per maquinari"
196
197 #: ../../../src/GameStateConfigBase.cpp:278
828 #: ../../../src/MenuConfig.cpp:420
198829 msgid "Developer Mode"
199830 msgstr "Mode de desenvolupadors"
200831
201 #: ../../../src/GameStateConfigBase.cpp:282
832 #: ../../../src/MenuConfig.cpp:421
202833 msgid "Subtitles"
203834 msgstr "Subtítols"
204835
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
836 #: ../../../src/MenuConfig.cpp:422
837 msgid "Loot tooltip visibility"
838 msgstr "Visibilitat de consells d'eines de saqueig"
839
840 #: ../../../src/MenuConfig.cpp:423
841 msgid "Mini-map mode"
842 msgstr "Mode mini-mapa"
843
844 #: ../../../src/MenuConfig.cpp:424
845 msgid "Always show stat bar labels"
846 msgstr "Mostrar sempre les etiquetes de la barra d'atributs"
847
848 #: ../../../src/MenuConfig.cpp:425
849 msgid "Allow stat bar auto-hiding"
850 msgstr "Permet auto-amagar la barra d'estats"
851
852 #: ../../../src/MenuConfig.cpp:426
853 msgid "Show combat text"
854 msgstr "Mostrar text de combat"
855
856 #: ../../../src/MenuConfig.cpp:427
857 msgid "Automatically equip items"
858 msgstr "Equipar objectes automàticament"
859
860 #: ../../../src/MenuConfig.cpp:428
861 msgid "Show hidden entity markers"
862 msgstr "Mostra els marcadors d'entitat ocults"
863
864 #: ../../../src/MenuConfig.cpp:429
865 msgid "Low health notification"
866 msgstr "Notificació de salut baixa"
867
868 #: ../../../src/MenuConfig.cpp:430
869 msgid "Low health threshold"
870 msgstr "Llindar de salut baixa"
871
872 #: ../../../src/MenuConfig.cpp:431
873 msgid "Show item comparison tooltips"
874 msgstr ""
875
876 #: ../../../src/MenuConfig.cpp:434 ../../../src/MenuMovementType.cpp:94
877 #: ../../../src/MenuMovementType.cpp:131
878 msgid "Joystick"
879 msgstr "Joystick"
880
881 #: ../../../src/MenuConfig.cpp:435
882 msgid "Move hero using mouse"
883 msgstr "Mou l'heroi utilitzant el ratolí"
884
885 #: ../../../src/MenuConfig.cpp:436
886 msgid "Mouse aim"
887 msgstr "Objectiu amb ratolí"
888
889 #: ../../../src/MenuConfig.cpp:437
890 msgid "Do not use mouse"
891 msgstr "No utilitzar ratolí"
892
893 #: ../../../src/MenuConfig.cpp:438
894 msgid "Swap mouse movement button"
895 msgstr "Moviment de ratolí per botó de canvi "
896
897 #: ../../../src/MenuConfig.cpp:439
898 msgid "Attack with mouse movement"
899 msgstr "Atacar amb moviment de ratolí"
900
901 #: ../../../src/MenuConfig.cpp:440
902 msgid "Joystick Deadzone"
903 msgstr "Zona morta del joystick"
904
905 #: ../../../src/MenuConfig.cpp:441
906 msgid "Touch Controls"
907 msgstr ""
908
909 #: ../../../src/MenuConfig.cpp:442
910 msgid "Touch Gamepad Scaling"
911 msgstr ""
912
913 #: ../../../src/MenuConfig.cpp:452
914 #, c-format
915 msgid "Primary binding: %s"
916 msgstr "Vincle primari: %s"
917
918 #: ../../../src/MenuConfig.cpp:453
919 #, c-format
920 msgid "Alternate binding: %s"
921 msgstr "Vincle alternatiu: %s"
922
923 #: ../../../src/MenuConfig.cpp:454
924 #, c-format
925 msgid "Joystick binding: %s"
926 msgstr "Vincle del Joystick: %s"
927
928 #: ../../../src/MenuConfig.cpp:556
260929 msgid ""
261930 "Will try to store surfaces in video memory versus system memory. The effect "
262931 "this has on performance depends on the renderer."
265934 "la memòria del sistema. L'efecte que això tindrà sobre el rendiment, variarà"
266935 " segons el renderitzador. "
267936
268 #: ../../../src/GameStateConfigDesktop.cpp:189
937 #: ../../../src/MenuConfig.cpp:557
269938 msgid ""
270939 "Prevents screen tearing. Disable if you experience \"stuttering\" in "
271940 "windowed mode or input lag."
273942 "Evita l'esquinçament de la pantalla. Desactiveu si experimenteu "
274943 "\"tartamudesa\" en mode finestra o retràs en les entrades. "
275944
276 #: ../../../src/GameStateConfigDesktop.cpp:190
945 #: ../../../src/MenuConfig.cpp:558
277946 msgid ""
278947 "When enabled, this uses the screen DPI in addition to the window dimensions "
279948 "to scale the rendering resolution. Otherwise, only the window dimensions are"
283952 "de la finestra per escalar la resolució. Contràriament, només s'usaran les "
284953 "mides de la pantalla."
285954
286 #: ../../../src/GameStateConfigDesktop.cpp:191
955 #: ../../../src/MenuConfig.cpp:559
287956 msgid ""
288957 "This enables parallax (non-tile) layers. Disabling this setting can improve "
289958 "performance in some cases."
290959 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
960 "Això activa les capes parallax (sense rajoles). Desactivar aquesta opció pot"
961 " millorar el rendiment en alguns casos."
962
963 #: ../../../src/MenuConfig.cpp:560
964 msgid ""
965 "Enables the below setting that controls the screen gamma level. The behavior"
966 " of the gamma setting can vary between platforms."
967 msgstr ""
968 "Activa l'opció de sota que controla el nivel gamma de la pantalla. El "
969 "comportament de l'opció gamma pot variar entre plataformes."
970
971 #: ../../../src/MenuConfig.cpp:561
972 msgid ""
973 "Provides additional text for information that is primarily conveyed through "
974 "color."
975 msgstr ""
976 "T'ofereix text addicional per informació que es transmet principalment a "
977 "través de color."
978
979 #: ../../../src/MenuConfig.cpp:562
980 msgid ""
981 "Some mods will automatically hide the stat bars when they are inactive. "
982 "Disabling this option will keep them displayed at all times."
983 msgstr ""
984 "Alguns mods amagaran automàticament les barres d'estat quan estiguin "
985 "inactives. Deshabilitar aquesta opció lesmantindrà visibles en tot moment."
986
987 #: ../../../src/MenuConfig.cpp:563
988 msgid ""
989 "When enabled, empty equipment slots will be filled with applicable items "
990 "when they are obtained."
991 msgstr ""
992
993 #: ../../../src/MenuConfig.cpp:564
994 msgid ""
995 "Shows a marker above enemies, allies, and the player when they are obscured "
996 "by tall objects."
997 msgstr ""
998
999 #: ../../../src/MenuConfig.cpp:565
1000 msgid ""
1001 "When enabled, tooltips for equipped items of the same type are shown next to"
1002 " standard item tooltips."
1003 msgstr ""
1004
1005 #: ../../../src/MenuConfig.cpp:566
1006 msgid ""
1007 "This allows the game to be controlled entirely with the keyboard (or "
1008 "joystick)."
1009 msgstr ""
1010
1011 #: ../../../src/MenuConfig.cpp:567
1012 msgid ""
1013 "When 'Move hero using mouse' is enabled, this setting controls if 'Main1' or"
1014 " 'Main2' is used to move the hero. If enabled, 'Main2' will move the hero "
1015 "instead of 'Main1'."
1016 msgstr ""
1017
1018 #: ../../../src/MenuConfig.cpp:568
1019 msgid ""
1020 "When 'Move hero using mouse' is enabled, this setting controls if the Power "
1021 "assigned to the movement button can be used by targeting an enemy. If this "
1022 "setting is disabled, it is required to use 'Shift' to access the Power "
1023 "assigned to the movement button."
1024 msgstr ""
1025
1026 #: ../../../src/MenuConfig.cpp:569
1027 msgid ""
1028 "The player's attacks will be aimed in the direction of the mouse cursor when"
1029 " this is enabled."
1030 msgstr ""
1031
1032 #: ../../../src/MenuConfig.cpp:570
1033 msgid ""
1034 "When enabled, a virtual gamepad will be added in-game. Other interactions, "
1035 "such as drag-and-drop behavior, are also altered to better suit touch input."
1036 msgstr ""
1037
1038 #: ../../../src/MenuConfig.cpp:621
1039 msgid "Active Mods"
1040 msgstr "Mods Actius"
1041
1042 #: ../../../src/MenuConfig.cpp:630
1043 msgid "Available Mods"
1044 msgstr "Mods disponibles"
1045
1046 #: ../../../src/MenuConfig.cpp:649
1047 msgid "<< Disable"
1048 msgstr "<< Inhabilitar"
1049
1050 #: ../../../src/MenuConfig.cpp:655
1051 msgid "Enable >>"
1052 msgstr "Habilitar >>"
1053
1054 #: ../../../src/MenuConfig.cpp:1536
1055 msgid "Version:"
1056 msgstr "Versió:"
1057
1058 #: ../../../src/MenuConfig.cpp:1541
1059 msgid "Game:"
1060 msgstr "Joc:"
1061
1062 #: ../../../src/MenuConfig.cpp:1546
1063 msgid "Engine version:"
1064 msgstr "Versió del motor de joc:"
1065
1066 #: ../../../src/MenuConfig.cpp:1554
1067 msgid "Requires mods:"
1068 msgstr "Mods demanats:"
1069
1070 #: ../../../src/MenuConfig.cpp:1662 ../../../src/SDLInputState.cpp:750
1071 msgid "(none)"
1072 msgstr "(cap)"
1073
1074 #: ../../../src/MenuConfig.cpp:1679 ../../../src/MenuGameOver.cpp:73
1075 msgid "Save & Exit"
1076 msgstr "Desar i sortir"
1077
1078 #: ../../../src/MenuDevConsole.cpp:65
8351079 msgid "Execute"
8361080 msgstr "Executar"
8371081
838 #: ../../../src/MenuDevConsole.cpp:101 ../../../src/MenuDevConsole.cpp:151
1082 #: ../../../src/MenuDevConsole.cpp:103 ../../../src/MenuDevConsole.cpp:153
8391083 msgid "Developer Console"
8401084 msgstr "Consola de desenvolupadors"
8411085
842 #: ../../../src/MenuDevConsole.cpp:141
1086 #: ../../../src/MenuDevConsole.cpp:143
8431087 #, c-format
8441088 msgid "Use '%s' to inspect with the cursor."
8451089 msgstr "Usa '%s' per a inspeccionar amb el cursor."
8461090
847 #: ../../../src/MenuDevConsole.cpp:146
1091 #: ../../../src/MenuDevConsole.cpp:148
8481092 msgid "Arguments with spaces should be enclosed with double quotes. Example:"
8491093 msgstr ""
8501094 "Els arguments amb espais han d'estar entre cometes dobles. Per exemple:"
8511095
852 #: ../../../src/MenuDevConsole.cpp:147
1096 #: ../../../src/MenuDevConsole.cpp:149
8531097 msgid "Type 'help' to get a list of commands."
8541098 msgstr "Escrigui 'help' per a obtenir una llista d'ordres."
8551099
856 #: ../../../src/MenuDevConsole.cpp:209 ../../../src/MenuDevConsole.cpp:213
1100 #: ../../../src/MenuDevConsole.cpp:211 ../../../src/MenuDevConsole.cpp:215
8571101 msgid "px"
8581102 msgstr "px"
8591103
860 #: ../../../src/MenuDevConsole.cpp:224
1104 #: ../../../src/MenuDevConsole.cpp:226
8611105 msgid "Distance"
8621106 msgstr "Distància"
8631107
864 #: ../../../src/MenuDevConsole.cpp:239 ../../../src/MenuDevConsole.cpp:286
1108 #: ../../../src/MenuDevConsole.cpp:241 ../../../src/MenuDevConsole.cpp:289
1109 #: ../../../src/MenuDevConsole.cpp:303
8651110 msgid "Entity"
8661111 msgstr "Entitat"
8671112
868 #: ../../../src/MenuDevConsole.cpp:261 ../../../src/MenuDevConsole.cpp:268
1113 #: ../../../src/MenuDevConsole.cpp:263 ../../../src/MenuDevConsole.cpp:270
8691114 msgid "none"
8701115 msgstr "cap"
8711116
872 #: ../../../src/MenuDevConsole.cpp:262 ../../../src/MenuDevConsole.cpp:264
1117 #: ../../../src/MenuDevConsole.cpp:264 ../../../src/MenuDevConsole.cpp:266
8731118 msgid "wall"
8741119 msgstr "mur"
8751120
876 #: ../../../src/MenuDevConsole.cpp:263 ../../../src/MenuDevConsole.cpp:265
1121 #: ../../../src/MenuDevConsole.cpp:265 ../../../src/MenuDevConsole.cpp:267
8771122 msgid "short wall / pit"
8781123 msgstr "paret curta / pou"
8791124
880 #: ../../../src/MenuDevConsole.cpp:266
1125 #: ../../../src/MenuDevConsole.cpp:268
8811126 msgid "entity"
8821127 msgstr "entitat"
8831128
884 #: ../../../src/MenuDevConsole.cpp:267
1129 #: ../../../src/MenuDevConsole.cpp:269
8851130 msgid "entity, ally"
8861131 msgstr "entitat, aliat"
8871132
888 #: ../../../src/MenuDevConsole.cpp:274
1133 #: ../../../src/MenuDevConsole.cpp:276
8891134 msgid "Tile"
8901135 msgstr "Títol"
8911136
892 #: ../../../src/MenuDevConsole.cpp:360
1137 #: ../../../src/MenuDevConsole.cpp:377
8931138 msgid "adds a power to the action bar"
8941139 msgstr "afegeix un poder a la barra d'acció"
8951140
896 #: ../../../src/MenuDevConsole.cpp:361
1141 #: ../../../src/MenuDevConsole.cpp:378
8971142 msgid "turns on/off the display of the FPS counter"
8981143 msgstr ""
8991144
900 #: ../../../src/MenuDevConsole.cpp:362
1145 #: ../../../src/MenuDevConsole.cpp:379
9011146 msgid "turns on/off all of the HUD elements"
9021147 msgstr ""
9031148
904 #: ../../../src/MenuDevConsole.cpp:363
1149 #: ../../../src/MenuDevConsole.cpp:380
9051150 msgid "turns on/off the developer hud"
9061151 msgstr ""
9071152
908 #: ../../../src/MenuDevConsole.cpp:364
1153 #: ../../../src/MenuDevConsole.cpp:381
9091154 msgid ""
9101155 "Prints a list of powers that match a search term. No search term will list "
9111156 "all items"
9121157 msgstr ""
9131158
914 #: ../../../src/MenuDevConsole.cpp:365
1159 #: ../../../src/MenuDevConsole.cpp:382
9151160 msgid "Prints out all the map filenames located in the \"maps/\" directory."
9161161 msgstr ""
9171162
918 #: ../../../src/MenuDevConsole.cpp:366
1163 #: ../../../src/MenuDevConsole.cpp:383
9191164 msgid ""
9201165 "Prints out the active campaign statuses that match a search term. No search "
9211166 "term will list all active statuses"
9221167 msgstr ""
9231168
924 #: ../../../src/MenuDevConsole.cpp:367
1169 #: ../../../src/MenuDevConsole.cpp:384
9251170 msgid ""
9261171 "Prints a list of items that match a search term. No search term will list "
9271172 "all items"
9281173 msgstr ""
9291174
930 #: ../../../src/MenuDevConsole.cpp:368
1175 #: ../../../src/MenuDevConsole.cpp:385
9311176 msgid ""
9321177 "parses a series of event components and executes them as a single event"
9331178 msgstr ""
9341179
935 #: ../../../src/MenuDevConsole.cpp:369
1180 #: ../../../src/MenuDevConsole.cpp:386
9361181 msgid "clears the command history"
9371182 msgstr ""
9381183
939 #: ../../../src/MenuDevConsole.cpp:370
1184 #: ../../../src/MenuDevConsole.cpp:387
9401185 msgid "displays this text"
9411186 msgstr "mostra aquest text"
9421187
943 #: ../../../src/MenuDevConsole.cpp:377
1188 #: ../../../src/MenuDevConsole.cpp:394
9441189 msgid "Toggled the developer hud"
9451190 msgstr ""
9461191
947 #: ../../../src/MenuDevConsole.cpp:381
1192 #: ../../../src/MenuDevConsole.cpp:398
9481193 msgid "Toggled the hud"
9491194 msgstr ""
9501195
951 #: ../../../src/MenuDevConsole.cpp:385
1196 #: ../../../src/MenuDevConsole.cpp:402
9521197 msgid "Toggled the FPS counter"
9531198 msgstr ""
9541199
955 #: ../../../src/MenuDevConsole.cpp:534
1200 #: ../../../src/MenuDevConsole.cpp:552
9561201 msgid "ERROR: Incorrect number of arguments"
9571202 msgstr ""
9581203
959 #: ../../../src/MenuDevConsole.cpp:536 ../../../src/MenuDevConsole.cpp:564
1204 #: ../../../src/MenuDevConsole.cpp:554 ../../../src/MenuDevConsole.cpp:582
9601205 msgid "HINT:"
9611206 msgstr "CONSELL:"
9621207
963 #: ../../../src/MenuDevConsole.cpp:536
1208 #: ../../../src/MenuDevConsole.cpp:554
9641209 msgid "<id>"
965 msgstr ""
966
967 #: ../../../src/MenuDevConsole.cpp:552
1210 msgstr "<id>"
1211
1212 #: ../../../src/MenuDevConsole.cpp:570
9681213 #, c-format
9691214 msgid "ERROR: '%s' is not a valid event key"
9701215 msgstr ""
9711216
972 #: ../../../src/MenuDevConsole.cpp:562
1217 #: ../../../src/MenuDevConsole.cpp:580
9731218 msgid "ERROR: Too few arguments"
9741219 msgstr ""
9751220
976 #: ../../../src/MenuDevConsole.cpp:564
1221 #: ../../../src/MenuDevConsole.cpp:582
9771222 msgid "<key>=<val> <key>=<val> ..."
978 msgstr ""
979
980 #: ../../../src/MenuDevConsole.cpp:569
1223 msgstr "<key>=<val> <key>=<val> ..."
1224
1225 #: ../../../src/MenuDevConsole.cpp:587
9811226 msgid "ERROR: Unknown command"
9821227 msgstr ""
9831228
984 #: ../../../src/MenuDevConsole.cpp:571
1229 #: ../../../src/MenuDevConsole.cpp:589
9851230 msgid "HINT: Type help"
9861231 msgstr ""
9871232
988 #: ../../../src/MenuEnemy.cpp:138
1233 #: ../../../src/MenuEnemy.cpp:162
9891234 #, c-format
9901235 msgid "%s level %d"
9911236 msgstr "%s nivell %d"
9921237
993 #: ../../../src/MenuEnemy.cpp:162
1238 #: ../../../src/MenuEnemy.cpp:186
9941239 msgid "Dead"
9951240 msgstr "Mort"
9961241
997 #: ../../../src/MenuEnemy.cpp:164
1242 #: ../../../src/MenuEnemy.cpp:188
9981243 msgid "Destroyed"
9991244 msgstr "Destruït"
10001245
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
1246 #: ../../../src/MenuGameOver.cpp:69
1247 msgid "Game Over"
1248 msgstr ""
1249
1250 #: ../../../src/MenuInventory.cpp:178
10221251 #, c-format
10231252 msgid "Lost %d%% of %s."
10241253 msgstr "Ha perdut %d%% de %s."
10251254
1026 #: ../../../src/MenuInventory.cpp:195
1255 #: ../../../src/MenuInventory.cpp:185
10271256 #, c-format
10281257 msgid "Lost %d%% of total XP."
10291258 msgstr "Ha perdut %d%% de PX."
10301259
1031 #: ../../../src/MenuInventory.cpp:200
1260 #: ../../../src/MenuInventory.cpp:190
10321261 #, c-format
10331262 msgid "Lost %d%% of current level XP."
10341263 msgstr "Ha perdut %d%% del nivell de PX actual."
10351264
1036 #: ../../../src/MenuInventory.cpp:226
1265 #: ../../../src/MenuInventory.cpp:216
10371266 #, c-format
10381267 msgid "Lost %s."
10391268 msgstr "Ha perdut %s."
10401269
1041 #: ../../../src/MenuInventory.cpp:274 ../../../src/MenuStash.cpp:146
1270 #: ../../../src/MenuInventory.cpp:258 ../../../src/MenuStash.cpp:276
10421271 #, c-format
10431272 msgid "%d %s"
10441273 msgstr "%d %s"
10451274
1046 #: ../../../src/MenuInventory.cpp:317
1275 #: ../../../src/MenuInventory.cpp:301
10471276 msgid "Pick up item(s):"
10481277 msgstr "Agafar objecte(s):"
10491278
1050 #: ../../../src/MenuInventory.cpp:318
1279 #: ../../../src/MenuInventory.cpp:302
10511280 msgid "Use or equip item:"
10521281 msgstr "Utilitzar o equipar-se amb l'objecte:"
10531282
1054 #: ../../../src/MenuInventory.cpp:319
1283 #: ../../../src/MenuInventory.cpp:303
10551284 #, c-format
10561285 msgid "%s modifiers"
10571286 msgstr "%s modificadors"
10581287
1059 #: ../../../src/MenuInventory.cpp:320
1288 #: ../../../src/MenuInventory.cpp:304
10601289 msgid "Select a quantity of item:"
10611290 msgstr "Selecciona la quantitat d'objectes:"
10621291
1063 #: ../../../src/MenuInventory.cpp:323
1292 #: ../../../src/MenuInventory.cpp:307
10641293 msgid "Stash item stack:"
10651294 msgstr ""
10661295
1067 #: ../../../src/MenuInventory.cpp:325
1296 #: ../../../src/MenuInventory.cpp:309
10681297 msgid "Sell item stack:"
10691298 msgstr "Vendre la pila d'objectes:"
10701299
1071 #: ../../../src/MenuInventory.cpp:592
1300 #: ../../../src/MenuInventory.cpp:576
10721301 msgid "You don't have enough of the required item."
10731302 msgstr "No en teniu prou del objecte requerit."
10741303
1075 #: ../../../src/MenuInventory.cpp:599
1304 #: ../../../src/MenuInventory.cpp:588
10761305 msgid "You can't use this item right now."
10771306 msgstr "No podeu utilitzar aquest objecte ara mateix."
10781307
1079 #: ../../../src/MenuInventory.cpp:611
1308 #: ../../../src/MenuInventory.cpp:600
10801309 msgid "This item can only be used from the action bar."
10811310 msgstr ""
10821311
1083 #: ../../../src/MenuInventory.cpp:729
1312 #: ../../../src/MenuInventory.cpp:718
10841313 msgid "Inventory is full."
1085 msgstr ""
1086
1087 #: ../../../src/MenuInventory.cpp:849
1314 msgstr "L'inventari està complert"
1315
1316 #: ../../../src/MenuInventory.cpp:843
10881317 #, c-format
10891318 msgid "Not enough %s."
10901319 msgstr ""
10911320
1092 #: ../../../src/MenuInventory.cpp:869 ../../../src/MenuInventory.cpp:876
1321 #: ../../../src/MenuInventory.cpp:863 ../../../src/MenuInventory.cpp:870
10931322 msgid "This item can not be sold."
10941323 msgstr "Aquest objecte no es pot vendre."
10951324
11011330 msgid "Quests"
11021331 msgstr "Missions"
11031332
1104 #: ../../../src/MenuManager.cpp:286
1333 #: ../../../src/MenuManager.cpp:305
11051334 #, c-format
11061335 msgid "XP: %d/%d"
11071336 msgstr "PX: %d/%d"
11081337
1109 #: ../../../src/MenuManager.cpp:827
1338 #: ../../../src/MenuManager.cpp:875
11101339 msgid "This item can not be dropped."
11111340 msgstr "Aquest objecte no es pot deixar anar."
1341
1342 #: ../../../src/MenuManager.cpp:1501
1343 msgid "Equipped"
1344 msgstr ""
1345
1346 #: ../../../src/MenuMovementType.cpp:87
1347 msgid "Select a Movement Type"
1348 msgstr ""
1349
1350 #: ../../../src/MenuMovementType.cpp:89
1351 msgid "Can be changed later in the Configuration menu."
1352 msgstr ""
1353
1354 #: ../../../src/MenuMovementType.cpp:92 ../../../src/MenuMovementType.cpp:122
1355 msgid "Keyboard"
1356 msgstr ""
1357
1358 #: ../../../src/MenuMovementType.cpp:93 ../../../src/MenuMovementType.cpp:128
1359 msgid "Mouse"
1360 msgstr ""
1361
1362 #: ../../../src/MenuMovementType.cpp:129
1363 msgid "Button"
1364 msgstr ""
11121365
11131366 #: ../../../src/MenuNumPicker.cpp:59
11141367 msgid "Enter amount:"
11151368 msgstr "Introdueix l'import:"
11161369
1117 #: ../../../src/MenuPowers.cpp:787
1370 #: ../../../src/MenuPowers.cpp:894
11181371 msgid "Passive"
11191372 msgstr "Passiu"
11201373
1121 #: ../../../src/MenuPowers.cpp:792
1374 #: ../../../src/MenuPowers.cpp:901
11221375 #, c-format
11231376 msgid "Costs %d MP"
11241377 msgstr "Costs %d PM"
11251378
1126 #: ../../../src/MenuPowers.cpp:796
1379 #: ../../../src/MenuPowers.cpp:905
11271380 #, c-format
11281381 msgid "Costs %d HP"
11291382 msgstr "Costs %d PV"
11301383
1131 #: ../../../src/MenuPowers.cpp:801
1384 #: ../../../src/MenuPowers.cpp:909
11321385 msgid "Cooldown:"
11331386 msgstr "Refredar:"
11341387
1135 #: ../../../src/MenuPowers.cpp:866 ../../../src/MenuPowers.cpp:869
1388 #: ../../../src/MenuPowers.cpp:960 ../../../src/MenuPowers.cpp:963
11361389 msgid "Damage per second"
11371390 msgstr "Dany per segon"
11381391
1139 #: ../../../src/MenuPowers.cpp:872 ../../../src/MenuPowers.cpp:875
1392 #: ../../../src/MenuPowers.cpp:966 ../../../src/MenuPowers.cpp:969
11401393 msgid "HP per second"
11411394 msgstr "PV per segon"
11421395
1143 #: ../../../src/MenuPowers.cpp:878 ../../../src/MenuPowers.cpp:881
1396 #: ../../../src/MenuPowers.cpp:972 ../../../src/MenuPowers.cpp:975
11441397 msgid "MP per second"
11451398 msgstr "PM per segon"
11461399
1147 #: ../../../src/MenuPowers.cpp:885
1400 #: ../../../src/MenuPowers.cpp:979
11481401 msgid "Immobilize"
11491402 msgstr "Immobilitzar"
11501403
1151 #: ../../../src/MenuPowers.cpp:893
1404 #: ../../../src/MenuPowers.cpp:987
11521405 msgid "Immunity"
11531406 msgstr "Immunitat"
11541407
1155 #: ../../../src/MenuPowers.cpp:896
1408 #: ../../../src/MenuPowers.cpp:990
11561409 msgid "Immunity to damage over time"
11571410 msgstr ""
11581411
1159 #: ../../../src/MenuPowers.cpp:899
1412 #: ../../../src/MenuPowers.cpp:993
11601413 msgid "Immunity to slow"
11611414 msgstr ""
11621415
1163 #: ../../../src/MenuPowers.cpp:902
1416 #: ../../../src/MenuPowers.cpp:996
11641417 msgid "Immunity to stun"
11651418 msgstr ""
11661419
1167 #: ../../../src/MenuPowers.cpp:905
1420 #: ../../../src/MenuPowers.cpp:999
11681421 msgid "Immunity to HP steal"
11691422 msgstr "Immunitat al robatori de PV"
11701423
1171 #: ../../../src/MenuPowers.cpp:908
1424 #: ../../../src/MenuPowers.cpp:1002
11721425 msgid "Immunity to MP steal"
11731426 msgstr ""
11741427
1175 #: ../../../src/MenuPowers.cpp:911
1428 #: ../../../src/MenuPowers.cpp:1005
11761429 msgid "Immunity to knockback"
11771430 msgstr ""
11781431
1179 #: ../../../src/MenuPowers.cpp:914
1432 #: ../../../src/MenuPowers.cpp:1008
11801433 msgid "Immunity to damage reflection"
11811434 msgstr ""
11821435
1183 #: ../../../src/MenuPowers.cpp:917
1436 #: ../../../src/MenuPowers.cpp:1014
11841437 msgid "Stun"
11851438 msgstr ""
11861439
1187 #: ../../../src/MenuPowers.cpp:920
1440 #: ../../../src/MenuPowers.cpp:1017
11881441 msgid "Automatic revive on death"
11891442 msgstr ""
11901443
1191 #: ../../../src/MenuPowers.cpp:923
1444 #: ../../../src/MenuPowers.cpp:1020
11921445 msgid "Convert"
1193 msgstr ""
1194
1195 #: ../../../src/MenuPowers.cpp:926
1446 msgstr "Convertir"
1447
1448 #: ../../../src/MenuPowers.cpp:1023
11961449 msgid "Fear"
11971450 msgstr "Por"
11981451
1199 #: ../../../src/MenuPowers.cpp:929
1452 #: ../../../src/MenuPowers.cpp:1026
12001453 msgid "Lifespan"
12011454 msgstr ""
12021455
1203 #: ../../../src/MenuPowers.cpp:953
1456 #: ../../../src/MenuPowers.cpp:1050
12041457 msgid "Magical Shield"
12051458 msgstr ""
12061459
1207 #: ../../../src/MenuPowers.cpp:982
1460 #: ../../../src/MenuPowers.cpp:1079
12081461 msgid "Healing"
12091462 msgstr ""
12101463
1211 #: ../../../src/MenuPowers.cpp:985
1464 #: ../../../src/MenuPowers.cpp:1082
12121465 msgid "Knockback"
12131466 msgstr ""
12141467
1215 #: ../../../src/MenuPowers.cpp:1010
1468 #: ../../../src/MenuPowers.cpp:1106
12161469 #, c-format
12171470 msgid "%d%% chance"
12181471 msgstr ""
12191472
1220 #: ../../../src/MenuPowers.cpp:1062
1473 #: ../../../src/MenuPowers.cpp:1158
12211474 msgid "Base Accuracy"
12221475 msgstr ""
12231476
1224 #: ../../../src/MenuPowers.cpp:1082
1477 #: ../../../src/MenuPowers.cpp:1178
12251478 msgid "Base Critical Chance"
12261479 msgstr ""
12271480
1228 #: ../../../src/MenuPowers.cpp:1090
1481 #: ../../../src/MenuPowers.cpp:1186
12291482 msgid "Ignores Absorbtion"
12301483 msgstr ""
12311484
1232 #: ../../../src/MenuPowers.cpp:1095
1485 #: ../../../src/MenuPowers.cpp:1191
12331486 msgid "Ignores Avoidance"
12341487 msgstr ""
12351488
1236 #: ../../../src/MenuPowers.cpp:1100
1489 #: ../../../src/MenuPowers.cpp:1196
12371490 #, c-format
12381491 msgid "%d%% Chance to crit slowed targets"
12391492 msgstr ""
12401493
1241 #: ../../../src/MenuPowers.cpp:1105
1494 #: ../../../src/MenuPowers.cpp:1201
12421495 #, c-format
12431496 msgid "Elemental Damage (%s)"
12441497 msgstr ""
12451498
1246 #: ../../../src/MenuPowers.cpp:1114
1499 #: ../../../src/MenuPowers.cpp:1210
12471500 #, c-format
12481501 msgid "Requires a %s"
12491502 msgstr ""
12501503
1251 #: ../../../src/MenuPowers.cpp:1151 ../../../src/MenuPowers.cpp:1154
1504 #: ../../../src/MenuPowers.cpp:1248 ../../../src/MenuPowers.cpp:1251
12521505 #, c-format
12531506 msgid "Requires Power: %s"
12541507 msgstr ""
12551508
1256 #: ../../../src/MenuPowers.cpp:1163
1509 #: ../../../src/MenuPowers.cpp:1260
12571510 msgid "Click to Unlock (uses 1 Skill Point)"
12581511 msgstr ""
12591512
1260 #: ../../../src/MenuPowers.cpp:1167 ../../../src/MenuPowers.cpp:1169
1513 #: ../../../src/MenuPowers.cpp:1264 ../../../src/MenuPowers.cpp:1266
12611514 msgid "Requires 1 Skill Point"
12621515 msgstr ""
12631516
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
1517 #: ../../../src/MenuPowers.cpp:1466
1518 #, c-format
1519 msgid "Available skill points: %d"
1520 msgstr ""
1521
1522 #: ../../../src/MenuPowers.cpp:1498
12751523 msgid "Next Level:"
12761524 msgstr ""
12771525
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
1526 #: ../../../src/MenuStash.cpp:80 ../../../src/MenuStash.cpp:161
1527 msgid "Stash"
1528 msgstr ""
1529
1530 #: ../../../src/MenuStash.cpp:174 ../../../src/MenuStash.cpp:188
1531 msgid "Private"
1532 msgstr ""
1533
1534 #: ../../../src/MenuStash.cpp:175
1535 msgid "Shared"
1536 msgstr ""
1537
1538 #: ../../../src/MenuStash.cpp:340
1539 msgid "This item can not be stored in the stash."
1540 msgstr ""
1541
1542 #: ../../../src/MenuStash.cpp:345
1543 msgid "This item can not be stored in the private stash."
1544 msgstr ""
1545
1546 #: ../../../src/MenuStash.cpp:350
1547 msgid "This item can not be stored in the shared stash."
1548 msgstr ""
1549
1550 #: ../../../src/MenuStash.cpp:360
12871551 msgid "Stash is full."
12881552 msgstr ""
12891553
1290 #: ../../../src/MenuTalker.cpp:454
1554 #: ../../../src/MenuStash.cpp:414
1555 #, c-format
1556 msgid "Can not store item in stash: %s"
1557 msgstr ""
1558
1559 #: ../../../src/MenuTalker.cpp:448
1560 #, c-format
1561 msgid "<dialog node %d>"
1562 msgstr ""
1563
1564 #: ../../../src/MenuTalker.cpp:456
12911565 msgid "Trade"
12921566 msgstr "Comerç"
12931567
1294 #: ../../../src/MenuVendor.cpp:58
1568 #: ../../../src/MenuVendor.cpp:60
12951569 msgid "Buyback"
12961570 msgstr ""
12971571
1298 #: ../../../src/MenuVendor.cpp:279
1572 #: ../../../src/MenuVendor.cpp:283
12991573 msgid "Vendor"
13001574 msgstr ""
13011575
1302 #: ../../../src/PowerManager.cpp:1136
1576 #: ../../../src/PowerManager.cpp:1204
13031577 #, c-format
13041578 msgid "+%d Shield"
13051579 msgstr ""
13061580
1307 #: ../../../src/PowerManager.cpp:1392
1581 #: ../../../src/PowerManager.cpp:1461
13081582 msgid "You are already transformed, untransform first."
13091583 msgstr ""
13101584
1311 #: ../../../src/PowerManager.cpp:1404
1585 #: ../../../src/PowerManager.cpp:1473
13121586 msgid "Could not untransform at this position."
13131587 msgstr ""
13141588
13161590 msgid "Completed Quests"
13171591 msgstr ""
13181592
1319 #: ../../../src/SaveLoad.cpp:243 ../../../src/SaveLoad.cpp:244
1593 #: ../../../src/SaveLoad.cpp:250 ../../../src/SaveLoad.cpp:251
13201594 msgid "Game saved."
13211595 msgstr ""
13221596
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
1597 #: ../../../src/SDLInputState.cpp:645
1598 msgid "BkSp"
1599 msgstr ""
1600
1601 #: ../../../src/SDLInputState.cpp:646
1602 msgid "Caps"
1603 msgstr ""
1604
1605 #: ../../../src/SDLInputState.cpp:647
1606 msgid "Del"
1607 msgstr ""
1608
1609 #: ../../../src/SDLInputState.cpp:649 ../../../src/SDLInputState.cpp:679
13321610 msgid "End"
13331611 msgstr "Fi"
13341612
1335 #: ../../../src/SDLInputState.cpp:587
1336 msgid "Escape"
1337 msgstr ""
1338
1339 #: ../../../src/SDLInputState.cpp:588
1613 #: ../../../src/SDLInputState.cpp:650
1614 msgid "Esc"
1615 msgstr ""
1616
1617 #: ../../../src/SDLInputState.cpp:651 ../../../src/SDLInputState.cpp:681
13401618 msgid "Home"
13411619 msgstr ""
13421620
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
1621 #: ../../../src/SDLInputState.cpp:652
1622 msgid "Ins"
1623 msgstr ""
1624
1625 #: ../../../src/SDLInputState.cpp:653
1626 msgid "LAlt"
1627 msgstr ""
1628
1629 #: ../../../src/SDLInputState.cpp:654
1630 msgid "LCtrl"
1631 msgstr ""
1632
1633 #: ../../../src/SDLInputState.cpp:656
1634 msgid "LShft"
1635 msgstr ""
1636
1637 #: ../../../src/SDLInputState.cpp:657
1638 msgid "Num"
1639 msgstr ""
1640
1641 #: ../../../src/SDLInputState.cpp:658
1642 msgid "PgDn"
1643 msgstr ""
1644
1645 #: ../../../src/SDLInputState.cpp:659
1646 msgid "PgUp"
1647 msgstr ""
1648
1649 #: ../../../src/SDLInputState.cpp:660 ../../../src/SDLInputState.cpp:690
13721650 msgid "Pause"
13731651 msgstr "Pausa"
13741652
1375 #: ../../../src/SDLInputState.cpp:598
1653 #: ../../../src/SDLInputState.cpp:661
1654 msgid "Print"
1655 msgstr ""
1656
1657 #: ../../../src/SDLInputState.cpp:662
1658 msgid "RAlt"
1659 msgstr ""
1660
1661 #: ../../../src/SDLInputState.cpp:663
1662 msgid "RCtrl"
1663 msgstr ""
1664
1665 #: ../../../src/SDLInputState.cpp:664
1666 msgid "Ret"
1667 msgstr ""
1668
1669 #: ../../../src/SDLInputState.cpp:666
1670 msgid "RShft"
1671 msgstr ""
1672
1673 #: ../../../src/SDLInputState.cpp:667
1674 msgid "SLock"
1675 msgstr ""
1676
1677 #: ../../../src/SDLInputState.cpp:668
1678 msgid "Spc"
1679 msgstr ""
1680
1681 #: ../../../src/SDLInputState.cpp:669 ../../../src/SDLInputState.cpp:699
1682 msgid "Tab"
1683 msgstr "Tabulador"
1684
1685 #: ../../../src/SDLInputState.cpp:675
1686 msgid "Backspace"
1687 msgstr ""
1688
1689 #: ../../../src/SDLInputState.cpp:676
1690 msgid "CapsLock"
1691 msgstr ""
1692
1693 #: ../../../src/SDLInputState.cpp:680
1694 msgid "Escape"
1695 msgstr ""
1696
1697 #: ../../../src/SDLInputState.cpp:682
1698 msgid "Insert"
1699 msgstr ""
1700
1701 #: ../../../src/SDLInputState.cpp:683
1702 msgid "Left Alt"
1703 msgstr ""
1704
1705 #: ../../../src/SDLInputState.cpp:684
1706 msgid "Left Ctrl"
1707 msgstr ""
1708
1709 #: ../../../src/SDLInputState.cpp:686
1710 msgid "Left Shift"
1711 msgstr ""
1712
1713 #: ../../../src/SDLInputState.cpp:687
1714 msgid "NumLock"
1715 msgstr ""
1716
1717 #: ../../../src/SDLInputState.cpp:688
1718 msgid "PageDown"
1719 msgstr ""
1720
1721 #: ../../../src/SDLInputState.cpp:689
1722 msgid "PageUp"
1723 msgstr ""
1724
1725 #: ../../../src/SDLInputState.cpp:691
13761726 msgid "PrintScreen"
13771727 msgstr ""
13781728
1379 #: ../../../src/SDLInputState.cpp:599
1729 #: ../../../src/SDLInputState.cpp:692
13801730 msgid "Right Alt"
13811731 msgstr ""
13821732
1383 #: ../../../src/SDLInputState.cpp:600
1733 #: ../../../src/SDLInputState.cpp:693
13841734 msgid "Right Ctrl"
13851735 msgstr ""
13861736
1387 #: ../../../src/SDLInputState.cpp:601
1737 #: ../../../src/SDLInputState.cpp:694
13881738 msgid "Return"
13891739 msgstr ""
13901740
1391 #: ../../../src/SDLInputState.cpp:603
1741 #: ../../../src/SDLInputState.cpp:696
13921742 msgid "Right Shift"
13931743 msgstr ""
13941744
1395 #: ../../../src/SDLInputState.cpp:604
1745 #: ../../../src/SDLInputState.cpp:697
13961746 msgid "ScrollLock"
13971747 msgstr ""
13981748
1399 #: ../../../src/SDLInputState.cpp:605
1749 #: ../../../src/SDLInputState.cpp:698
14001750 msgid "Space"
14011751 msgstr "Espai"
14021752
1403 #: ../../../src/SDLInputState.cpp:606
1404 msgid "Tab"
1405 msgstr "Tabulador"
1406
1407 #: ../../../src/SDLInputState.cpp:620
1753 #: ../../../src/SDLInputState.cpp:712
1754 #, c-format
1755 msgid "M%d"
1756 msgstr ""
1757
1758 #: ../../../src/SDLInputState.cpp:718
14081759 #, c-format
14091760 msgid "Mouse %d"
14101761 msgstr ""
14111762
1412 #: ../../../src/SDLInputState.cpp:628
1763 #: ../../../src/SDLInputState.cpp:728
1764 #, c-format
1765 msgid "JX%d-"
1766 msgstr ""
1767
1768 #: ../../../src/SDLInputState.cpp:730
14131769 #, c-format
14141770 msgid "Axis %d -"
14151771 msgstr ""
14161772
1417 #: ../../../src/SDLInputState.cpp:630
1773 #: ../../../src/SDLInputState.cpp:734
1774 #, c-format
1775 msgid "JX%d+"
1776 msgstr ""
1777
1778 #: ../../../src/SDLInputState.cpp:736
14181779 #, c-format
14191780 msgid "Axis %d +"
14201781 msgstr ""
14211782
1422 #: ../../../src/SDLInputState.cpp:633
1783 #: ../../../src/SDLInputState.cpp:741
1784 #, c-format
1785 msgid "JB%d"
1786 msgstr ""
1787
1788 #: ../../../src/SDLInputState.cpp:743
14231789 #, c-format
14241790 msgid "Button %d"
14251791 msgstr ""
14261792
1427 #: ../../../src/SDLInputState.cpp:637
1428 msgid "(none)"
1429 msgstr ""
1430
1431 #: ../../../src/SDLInputState.cpp:677
1793 #: ../../../src/SDLInputState.cpp:789
14321794 msgid "Touch control D-Pad"
14331795 msgstr ""
14341796
1435 #: ../../../src/SDLInputState.cpp:701
1797 #: ../../../src/SDLInputState.cpp:812
14361798 msgid "Touch control buttons"
14371799 msgstr ""
14381800
1439 #: ../../../src/SDLInputState.cpp:716
1801 #: ../../../src/SDLInputState.cpp:826
14401802 msgid "Tap"
14411803 msgstr ""
14421804
1443 #: ../../../src/SDLInputState.cpp:760 ../../../src/SDLInputState.cpp:764
1444 #: ../../../src/SDLInputState.cpp:768
1805 #: ../../../src/SDLInputState.cpp:878 ../../../src/SDLInputState.cpp:880
1806 #, c-format
1807 msgid "Can not bind: %s"
1808 msgstr ""
1809
1810 #: ../../../src/SDLInputState.cpp:892 ../../../src/SDLInputState.cpp:896
1811 #: ../../../src/SDLInputState.cpp:900
14451812 #, c-format
14461813 msgid "'%s' is no longer bound to:"
14471814 msgstr ""
16001967 msgid "Base MP"
16011968 msgstr "PM base"
16021969
1603 #: ../../../src/Utils.cpp:346
1970 #: ../../../src/Utils.cpp:365
16041971 msgid "k"
16051972 msgstr "k"
16061973
1607 #: ../../../src/Utils.cpp:580
1974 #: ../../../src/Utils.cpp:635
16081975 #, c-format
16091976 msgid "%s second"
16101977 msgstr "%s segon"
16111978
1612 #: ../../../src/Utils.cpp:583
1979 #: ../../../src/Utils.cpp:638
16131980 #, c-format
16141981 msgid "%s seconds"
16151982 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-07-02 13:26-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:1220
127 #: ../../../src/StatBlock.cpp:926 ../../../src/StatBlock.cpp:932
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:937
133 #: ../../../src/StatBlock.cpp:943
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:704
175 msgid "Entering game world..."
176 msgstr "Vstupuji do herního světa..."
177
178 #: ../../../src/GameStateLoad.cpp:707
179 msgid "Loading saved game..."
180 msgstr "Nahrávám uloženou pozici..."
181
182 #: ../../../src/GameStateLoad.cpp:740
183 msgid "Invalid save"
184 msgstr ""
185
186 #: ../../../src/GameStateLoad.cpp:764 ../../../src/ItemManager.cpp:745
187 #: ../../../src/MenuPowers.cpp:882 ../../../src/MenuPowers.cpp:1241
188 #: ../../../src/MenuPowers.cpp:1653
189 #, c-format
190 msgid "Level %d"
191 msgstr ""
192
193 #: ../../../src/GameStateNew.cpp:66 ../../../src/InputState.cpp:416
194 #: ../../../src/MenuConfig.cpp:254
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:670
248 #: ../../../src/SDLInputState.cpp:700
249 msgid "Up"
250 msgstr "Nahoru"
251
252 #: ../../../src/InputState.cpp:419 ../../../src/MenuMovementType.cpp:125
253 #: ../../../src/MenuMovementType.cpp:134 ../../../src/SDLInputState.cpp:648
254 #: ../../../src/SDLInputState.cpp:678
255 msgid "Down"
256 msgstr "Dolů"
257
258 #: ../../../src/InputState.cpp:420 ../../../src/MenuMovementType.cpp:124
259 #: ../../../src/MenuMovementType.cpp:133 ../../../src/SDLInputState.cpp:655
260 #: ../../../src/SDLInputState.cpp:685
261 msgid "Left"
262 msgstr "Doleva"
263
264 #: ../../../src/InputState.cpp:421 ../../../src/MenuMovementType.cpp:126
265 #: ../../../src/MenuMovementType.cpp:135 ../../../src/SDLInputState.cpp:665
266 #: ../../../src/SDLInputState.cpp:695
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:159
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:677
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:981
407 #, c-format
408 msgid "%d%% Speed"
409 msgstr ""
410
411 #: ../../../src/ItemManager.cpp:650 ../../../src/MenuPowers.cpp:984
412 #, c-format
413 msgid "%d%% Attack Speed"
414 msgstr ""
415
416 #: ../../../src/ItemManager.cpp:672 ../../../src/MenuCharacter.cpp:352
417 #: ../../../src/MenuPowers.cpp:953
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:1228
447 #: ../../../src/MenuPowers.cpp:1231
448 #, c-format
449 msgid "Requires Level %d"
450 msgstr "Potřebuje Level %d"
451
452 #: ../../../src/ItemManager.cpp:836 ../../../src/MenuPowers.cpp:1220
453 #: ../../../src/MenuPowers.cpp:1222
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:898
484 msgid "Set:"
485 msgstr ""
486
487 #: ../../../src/ItemManager.cpp:905
488 #, c-format
489 msgid "%d items:"
490 msgstr ""
491
492 #: ../../../src/ItemManager.cpp:920
493 #, c-format
494 msgid "Press [%s] to read"
495 msgstr ""
496
497 #: ../../../src/ItemManager.cpp:923
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:1256
574 msgid "Clear"
575 msgstr ""
576
577 #: ../../../src/MenuConfig.cpp:122 ../../../src/MenuConfig.cpp:1254
578 msgid "Assign:"
579 msgstr ""
580
581 #: ../../../src/MenuConfig.cpp:123 ../../../src/MenuConfig.cpp:253
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:252 ../../../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:256 ../../../src/MenuGameOver.cpp:72
594 msgid "Continue"
595 msgstr ""
596
597 #: ../../../src/MenuConfig.cpp:258
598 msgid "Save Game"
599 msgstr ""
600
601 #: ../../../src/MenuConfig.cpp:301 ../../../src/MenuConfig.cpp:352
602 msgid "Default"
603 msgstr ""
604
605 #: ../../../src/MenuConfig.cpp:301
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:302
612 msgid "Show all"
613 msgstr ""
614
615 #: ../../../src/MenuConfig.cpp:302
616 msgid ""
617 "Always show loot tooltips. Temporarily hide all loot tooltips with 'Alt'."
618 msgstr ""
619
620 #: ../../../src/MenuConfig.cpp:303 ../../../src/MenuConfig.cpp:308
621 msgid "Hidden"
622 msgstr ""
623
624 #: ../../../src/MenuConfig.cpp:303
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:306
631 msgid "Visible"
632 msgstr ""
633
634 #: ../../../src/MenuConfig.cpp:307
635 msgid "Visible (2x zoom)"
636 msgstr ""
637
638 #: ../../../src/MenuConfig.cpp:311
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:312
645 msgid "- Display a message"
646 msgstr ""
647
648 #: ../../../src/MenuConfig.cpp:313
649 msgid "- Play a sound"
650 msgstr ""
651
652 #: ../../../src/MenuConfig.cpp:314
653 msgid "- Change the cursor"
654 msgstr ""
655
656 #: ../../../src/MenuConfig.cpp:316
657 msgid "Disabled"
658 msgstr ""
659
660 #: ../../../src/MenuConfig.cpp:317
661 msgid "All"
662 msgstr ""
663
664 #: ../../../src/MenuConfig.cpp:318
665 msgid "Message & Cursor"
666 msgstr ""
667
668 #: ../../../src/MenuConfig.cpp:319
669 msgid "Message & Sound"
670 msgstr ""
671
672 #: ../../../src/MenuConfig.cpp:320
673 msgid "Sound & Cursor"
674 msgstr ""
675
676 #: ../../../src/MenuConfig.cpp:321
677 msgid "Message"
678 msgstr ""
679
680 #: ../../../src/MenuConfig.cpp:322
681 msgid "Cursor"
682 msgstr ""
683
684 #: ../../../src/MenuConfig.cpp:323
685 msgid "Sound"
686 msgstr ""
687
688 #: ../../../src/MenuConfig.cpp:329
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:347
695 msgid "The maximum frame rate that the game will be allowed to run at."
696 msgstr ""
697
698 #: ../../../src/MenuConfig.cpp:351
699 msgid ""
700 "The render size refers to the height in pixels of the surface used to draw "
701 "the game. Mods define the allowed render sizes, but this option allows "
702 "overriding the maximum size."
703 msgstr ""
704
705 #: ../../../src/MenuConfig.cpp:374 ../../../src/MenuConfig.cpp:1679
706 #: ../../../src/MenuGameOver.cpp:116
707 msgid "Exit"
708 msgstr "Konec"
709
710 #: ../../../src/MenuConfig.cpp:375
711 msgid "Video"
712 msgstr ""
713
714 #: ../../../src/MenuConfig.cpp:376
153715 msgid "Audio"
154716 msgstr ""
155717
156 #: ../../../src/GameStateConfigBase.cpp:161
157 #: ../../../src/GameStateConfigDesktop.cpp:131
718 #: ../../../src/MenuConfig.cpp:377
158719 msgid "Interface"
159720 msgstr ""
160721
161 #: ../../../src/GameStateConfigBase.cpp:162
162 #: ../../../src/GameStateConfigDesktop.cpp:134
722 #: ../../../src/MenuConfig.cpp:378
723 msgid "Input"
724 msgstr "Vstup"
725
726 #: ../../../src/MenuConfig.cpp:379
727 msgid "Keybindings"
728 msgstr "Nastavení kláves"
729
730 #: ../../../src/MenuConfig.cpp:380
163731 msgid "Mods"
164732 msgstr "Mody"
165733
166 #: ../../../src/GameStateConfigBase.cpp:249 ../../../src/MenuExit.cpp:72
734 #: ../../../src/MenuConfig.cpp:392
735 msgid "Paused"
736 msgstr ""
737
738 #: ../../../src/MenuConfig.cpp:395
739 msgid "Time Played"
740 msgstr ""
741
742 #: ../../../src/MenuConfig.cpp:401
743 msgid "Renderer"
744 msgstr ""
745
746 #: ../../../src/MenuConfig.cpp:402
747 msgid "Full Screen Mode"
748 msgstr "Mod plné obrazovky"
749
750 #: ../../../src/MenuConfig.cpp:403
751 msgid "Hardware surfaces"
752 msgstr "Hardwarové povrchy"
753
754 #: ../../../src/MenuConfig.cpp:404
755 msgid "V-Sync"
756 msgstr ""
757
758 #: ../../../src/MenuConfig.cpp:405
759 msgid "Texture Filtering"
760 msgstr ""
761
762 #: ../../../src/MenuConfig.cpp:406
763 msgid "DPI scaling"
764 msgstr ""
765
766 #: ../../../src/MenuConfig.cpp:407
767 msgid "Parallax Layers"
768 msgstr ""
769
770 #: ../../../src/MenuConfig.cpp:408
771 msgid "Allow changing gamma"
772 msgstr "Povolit změnu gammy"
773
774 #: ../../../src/MenuConfig.cpp:409
775 msgid "Gamma"
776 msgstr ""
777
778 #: ../../../src/MenuConfig.cpp:410
779 msgid "Maximum Render Size"
780 msgstr ""
781
782 #: ../../../src/MenuConfig.cpp:411
783 msgid "Frame Limit"
784 msgstr ""
785
786 #: ../../../src/MenuConfig.cpp:413
787 msgid "Sound Volume"
788 msgstr "Hlasitost Zvuku"
789
790 #: ../../../src/MenuConfig.cpp:414
167791 msgid "Music Volume"
168792 msgstr "Hlasitost Hudby"
169793
170 #: ../../../src/GameStateConfigBase.cpp:253 ../../../src/MenuExit.cpp:77
171 msgid "Sound Volume"
172 msgstr "Hlasitost Zvuku"
173
174 #: ../../../src/GameStateConfigBase.cpp:257
794 #: ../../../src/MenuConfig.cpp:416
175795 msgid "Language"
176796 msgstr "Jazyk"
177797
178 #: ../../../src/GameStateConfigBase.cpp:266
798 #: ../../../src/MenuConfig.cpp:417
179799 msgid "Show FPS"
180800 msgstr "Zobraz FPS"
181801
182 #: ../../../src/GameStateConfigBase.cpp:270
802 #: ../../../src/MenuConfig.cpp:418
803 msgid "Hardware mouse cursor"
804 msgstr ""
805
806 #: ../../../src/MenuConfig.cpp:419
183807 msgid "Colorblind Mode"
184808 msgstr ""
185809
186 #: ../../../src/GameStateConfigBase.cpp:274
187 msgid "Hardware mouse cursor"
188 msgstr ""
189
190 #: ../../../src/GameStateConfigBase.cpp:278
810 #: ../../../src/MenuConfig.cpp:420
191811 msgid "Developer Mode"
192812 msgstr ""
193813
194 #: ../../../src/GameStateConfigBase.cpp:282
814 #: ../../../src/MenuConfig.cpp:421
195815 msgid "Subtitles"
196816 msgstr ""
197817
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
818 #: ../../../src/MenuConfig.cpp:422
819 msgid "Loot tooltip visibility"
820 msgstr ""
821
822 #: ../../../src/MenuConfig.cpp:423
823 msgid "Mini-map mode"
824 msgstr ""
825
826 #: ../../../src/MenuConfig.cpp:424
827 msgid "Always show stat bar labels"
828 msgstr ""
829
830 #: ../../../src/MenuConfig.cpp:425
831 msgid "Allow stat bar auto-hiding"
832 msgstr ""
833
834 #: ../../../src/MenuConfig.cpp:426
835 msgid "Show combat text"
836 msgstr "Zobraz bojový text"
837
838 #: ../../../src/MenuConfig.cpp:427
839 msgid "Automatically equip items"
840 msgstr ""
841
842 #: ../../../src/MenuConfig.cpp:428
843 msgid "Show hidden entity markers"
844 msgstr ""
845
846 #: ../../../src/MenuConfig.cpp:429
847 msgid "Low health notification"
848 msgstr ""
849
850 #: ../../../src/MenuConfig.cpp:430
851 msgid "Low health threshold"
852 msgstr ""
853
854 #: ../../../src/MenuConfig.cpp:431
855 msgid "Show item comparison tooltips"
856 msgstr ""
857
858 #: ../../../src/MenuConfig.cpp:434 ../../../src/MenuMovementType.cpp:94
859 #: ../../../src/MenuMovementType.cpp:131
860 msgid "Joystick"
861 msgstr ""
862
863 #: ../../../src/MenuConfig.cpp:435
864 msgid "Move hero using mouse"
865 msgstr "Chůze pomocí myši"
866
867 #: ../../../src/MenuConfig.cpp:436
868 msgid "Mouse aim"
869 msgstr "Míření myší"
870
871 #: ../../../src/MenuConfig.cpp:437
872 msgid "Do not use mouse"
873 msgstr ""
874
875 #: ../../../src/MenuConfig.cpp:438
876 msgid "Swap mouse movement button"
877 msgstr ""
878
879 #: ../../../src/MenuConfig.cpp:439
880 msgid "Attack with mouse movement"
881 msgstr ""
882
883 #: ../../../src/MenuConfig.cpp:440
884 msgid "Joystick Deadzone"
885 msgstr ""
886
887 #: ../../../src/MenuConfig.cpp:441
888 msgid "Touch Controls"
889 msgstr ""
890
891 #: ../../../src/MenuConfig.cpp:442
892 msgid "Touch Gamepad Scaling"
893 msgstr ""
894
895 #: ../../../src/MenuConfig.cpp:452
896 #, c-format
897 msgid "Primary binding: %s"
898 msgstr ""
899
900 #: ../../../src/MenuConfig.cpp:453
901 #, c-format
902 msgid "Alternate binding: %s"
903 msgstr ""
904
905 #: ../../../src/MenuConfig.cpp:454
906 #, c-format
907 msgid "Joystick binding: %s"
908 msgstr ""
909
910 #: ../../../src/MenuConfig.cpp:556
253911 msgid ""
254912 "Will try to store surfaces in video memory versus system memory. The effect "
255913 "this has on performance depends on the renderer."
256914 msgstr ""
257915
258 #: ../../../src/GameStateConfigDesktop.cpp:189
916 #: ../../../src/MenuConfig.cpp:557
259917 msgid ""
260918 "Prevents screen tearing. Disable if you experience \"stuttering\" in "
261919 "windowed mode or input lag."
262920 msgstr ""
263921
264 #: ../../../src/GameStateConfigDesktop.cpp:190
922 #: ../../../src/MenuConfig.cpp:558
265923 msgid ""
266924 "When enabled, this uses the screen DPI in addition to the window dimensions "
267925 "to scale the rendering resolution. Otherwise, only the window dimensions are"
268926 " used."
269927 msgstr ""
270928
271 #: ../../../src/GameStateConfigDesktop.cpp:191
929 #: ../../../src/MenuConfig.cpp:559
272930 msgid ""
273931 "This enables parallax (non-tile) layers. Disabling this setting can improve "
274932 "performance in some cases."
275933 msgstr ""
276934
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
935 #: ../../../src/MenuConfig.cpp:560
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
941 #: ../../../src/MenuConfig.cpp:561
942 msgid ""
943 "Provides additional text for information that is primarily conveyed through "
944 "color."
945 msgstr ""
946
947 #: ../../../src/MenuConfig.cpp:562
948 msgid ""
949 "Some mods will automatically hide the stat bars when they are inactive. "
950 "Disabling this option will keep them displayed at all times."
951 msgstr ""
952
953 #: ../../../src/MenuConfig.cpp:563
954 msgid ""
955 "When enabled, empty equipment slots will be filled with applicable items "
956 "when they are obtained."
957 msgstr ""
958
959 #: ../../../src/MenuConfig.cpp:564
960 msgid ""
961 "Shows a marker above enemies, allies, and the player when they are obscured "
962 "by tall objects."
963 msgstr ""
964
965 #: ../../../src/MenuConfig.cpp:565
966 msgid ""
967 "When enabled, tooltips for equipped items of the same type are shown next to"
968 " standard item tooltips."
969 msgstr ""
970
971 #: ../../../src/MenuConfig.cpp:566
972 msgid ""
973 "This allows the game to be controlled entirely with the keyboard (or "
974 "joystick)."
975 msgstr ""
976
977 #: ../../../src/MenuConfig.cpp:567
978 msgid ""
979 "When 'Move hero using mouse' is enabled, this setting controls if 'Main1' or"
980 " 'Main2' is used to move the hero. If enabled, 'Main2' will move the hero "
981 "instead of 'Main1'."
982 msgstr ""
983
984 #: ../../../src/MenuConfig.cpp:568
985 msgid ""
986 "When 'Move hero using mouse' is enabled, this setting controls if the Power "
987 "assigned to the movement button can be used by targeting an enemy. If this "
988 "setting is disabled, it is required to use 'Shift' to access the Power "
989 "assigned to the movement button."
990 msgstr ""
991
992 #: ../../../src/MenuConfig.cpp:569
993 msgid ""
994 "The player's attacks will be aimed in the direction of the mouse cursor when"
995 " this is enabled."
996 msgstr ""
997
998 #: ../../../src/MenuConfig.cpp:570
999 msgid ""
1000 "When enabled, a virtual gamepad will be added in-game. Other interactions, "
1001 "such as drag-and-drop behavior, are also altered to better suit touch input."
1002 msgstr ""
1003
1004 #: ../../../src/MenuConfig.cpp:621
1005 msgid "Active Mods"
1006 msgstr "Aktivní mody"
1007
1008 #: ../../../src/MenuConfig.cpp:630
1009 msgid "Available Mods"
1010 msgstr "Mody k dispozici"
1011
1012 #: ../../../src/MenuConfig.cpp:649
1013 msgid "<< Disable"
1014 msgstr "<< Zakázat"
1015
1016 #: ../../../src/MenuConfig.cpp:655
1017 msgid "Enable >>"
1018 msgstr "Povolit >>"
1019
1020 #: ../../../src/MenuConfig.cpp:1536
1021 msgid "Version:"
1022 msgstr ""
1023
1024 #: ../../../src/MenuConfig.cpp:1541
1025 msgid "Game:"
1026 msgstr ""
1027
1028 #: ../../../src/MenuConfig.cpp:1546
1029 msgid "Engine version:"
1030 msgstr ""
1031
1032 #: ../../../src/MenuConfig.cpp:1554
1033 msgid "Requires mods:"
1034 msgstr ""
1035
1036 #: ../../../src/MenuConfig.cpp:1662 ../../../src/SDLInputState.cpp:750
1037 msgid "(none)"
1038 msgstr ""
1039
1040 #: ../../../src/MenuConfig.cpp:1679 ../../../src/MenuGameOver.cpp:73
1041 msgid "Save & Exit"
1042 msgstr ""
1043
1044 #: ../../../src/MenuDevConsole.cpp:65
8201045 msgid "Execute"
8211046 msgstr ""
8221047
823 #: ../../../src/MenuDevConsole.cpp:101 ../../../src/MenuDevConsole.cpp:151
1048 #: ../../../src/MenuDevConsole.cpp:103 ../../../src/MenuDevConsole.cpp:153
8241049 msgid "Developer Console"
8251050 msgstr ""
8261051
827 #: ../../../src/MenuDevConsole.cpp:141
1052 #: ../../../src/MenuDevConsole.cpp:143
8281053 #, c-format
8291054 msgid "Use '%s' to inspect with the cursor."
8301055 msgstr ""
8311056
832 #: ../../../src/MenuDevConsole.cpp:146
1057 #: ../../../src/MenuDevConsole.cpp:148
8331058 msgid "Arguments with spaces should be enclosed with double quotes. Example:"
8341059 msgstr ""
8351060
836 #: ../../../src/MenuDevConsole.cpp:147
1061 #: ../../../src/MenuDevConsole.cpp:149
8371062 msgid "Type 'help' to get a list of commands."
8381063 msgstr ""
8391064
840 #: ../../../src/MenuDevConsole.cpp:209 ../../../src/MenuDevConsole.cpp:213
1065 #: ../../../src/MenuDevConsole.cpp:211 ../../../src/MenuDevConsole.cpp:215
8411066 msgid "px"
8421067 msgstr ""
8431068
844 #: ../../../src/MenuDevConsole.cpp:224
1069 #: ../../../src/MenuDevConsole.cpp:226
8451070 msgid "Distance"
8461071 msgstr ""
8471072
848 #: ../../../src/MenuDevConsole.cpp:239 ../../../src/MenuDevConsole.cpp:286
1073 #: ../../../src/MenuDevConsole.cpp:241 ../../../src/MenuDevConsole.cpp:289
1074 #: ../../../src/MenuDevConsole.cpp:303
8491075 msgid "Entity"
8501076 msgstr ""
8511077
852 #: ../../../src/MenuDevConsole.cpp:261 ../../../src/MenuDevConsole.cpp:268
1078 #: ../../../src/MenuDevConsole.cpp:263 ../../../src/MenuDevConsole.cpp:270
8531079 msgid "none"
8541080 msgstr ""
8551081
856 #: ../../../src/MenuDevConsole.cpp:262 ../../../src/MenuDevConsole.cpp:264
1082 #: ../../../src/MenuDevConsole.cpp:264 ../../../src/MenuDevConsole.cpp:266
8571083 msgid "wall"
8581084 msgstr ""
8591085
860 #: ../../../src/MenuDevConsole.cpp:263 ../../../src/MenuDevConsole.cpp:265
1086 #: ../../../src/MenuDevConsole.cpp:265 ../../../src/MenuDevConsole.cpp:267
8611087 msgid "short wall / pit"
8621088 msgstr ""
8631089
864 #: ../../../src/MenuDevConsole.cpp:266
1090 #: ../../../src/MenuDevConsole.cpp:268
8651091 msgid "entity"
8661092 msgstr ""
8671093
868 #: ../../../src/MenuDevConsole.cpp:267
1094 #: ../../../src/MenuDevConsole.cpp:269
8691095 msgid "entity, ally"
8701096 msgstr ""
8711097
872 #: ../../../src/MenuDevConsole.cpp:274
1098 #: ../../../src/MenuDevConsole.cpp:276
8731099 msgid "Tile"
8741100 msgstr ""
8751101
876 #: ../../../src/MenuDevConsole.cpp:360
1102 #: ../../../src/MenuDevConsole.cpp:377
8771103 msgid "adds a power to the action bar"
8781104 msgstr ""
8791105
880 #: ../../../src/MenuDevConsole.cpp:361
1106 #: ../../../src/MenuDevConsole.cpp:378
8811107 msgid "turns on/off the display of the FPS counter"
8821108 msgstr ""
8831109
884 #: ../../../src/MenuDevConsole.cpp:362
1110 #: ../../../src/MenuDevConsole.cpp:379
8851111 msgid "turns on/off all of the HUD elements"
8861112 msgstr ""
8871113
888 #: ../../../src/MenuDevConsole.cpp:363
1114 #: ../../../src/MenuDevConsole.cpp:380
8891115 msgid "turns on/off the developer hud"
8901116 msgstr ""
8911117
892 #: ../../../src/MenuDevConsole.cpp:364
1118 #: ../../../src/MenuDevConsole.cpp:381
8931119 msgid ""
8941120 "Prints a list of powers that match a search term. No search term will list "
8951121 "all items"
8961122 msgstr ""
8971123
898 #: ../../../src/MenuDevConsole.cpp:365
1124 #: ../../../src/MenuDevConsole.cpp:382
8991125 msgid "Prints out all the map filenames located in the \"maps/\" directory."
9001126 msgstr ""
9011127
902 #: ../../../src/MenuDevConsole.cpp:366
1128 #: ../../../src/MenuDevConsole.cpp:383
9031129 msgid ""
9041130 "Prints out the active campaign statuses that match a search term. No search "
9051131 "term will list all active statuses"
9061132 msgstr ""
9071133
908 #: ../../../src/MenuDevConsole.cpp:367
1134 #: ../../../src/MenuDevConsole.cpp:384
9091135 msgid ""
9101136 "Prints a list of items that match a search term. No search term will list "
9111137 "all items"
9121138 msgstr ""
9131139
914 #: ../../../src/MenuDevConsole.cpp:368
1140 #: ../../../src/MenuDevConsole.cpp:385
9151141 msgid ""
9161142 "parses a series of event components and executes them as a single event"
9171143 msgstr ""
9181144
919 #: ../../../src/MenuDevConsole.cpp:369
1145 #: ../../../src/MenuDevConsole.cpp:386
9201146 msgid "clears the command history"
9211147 msgstr ""
9221148
923 #: ../../../src/MenuDevConsole.cpp:370
1149 #: ../../../src/MenuDevConsole.cpp:387
9241150 msgid "displays this text"
9251151 msgstr ""
9261152
927 #: ../../../src/MenuDevConsole.cpp:377
1153 #: ../../../src/MenuDevConsole.cpp:394
9281154 msgid "Toggled the developer hud"
9291155 msgstr ""
9301156
931 #: ../../../src/MenuDevConsole.cpp:381
1157 #: ../../../src/MenuDevConsole.cpp:398
9321158 msgid "Toggled the hud"
9331159 msgstr ""
9341160
935 #: ../../../src/MenuDevConsole.cpp:385
1161 #: ../../../src/MenuDevConsole.cpp:402
9361162 msgid "Toggled the FPS counter"
9371163 msgstr ""
9381164
939 #: ../../../src/MenuDevConsole.cpp:534
1165 #: ../../../src/MenuDevConsole.cpp:552
9401166 msgid "ERROR: Incorrect number of arguments"
9411167 msgstr ""
9421168
943 #: ../../../src/MenuDevConsole.cpp:536 ../../../src/MenuDevConsole.cpp:564
1169 #: ../../../src/MenuDevConsole.cpp:554 ../../../src/MenuDevConsole.cpp:582
9441170 msgid "HINT:"
9451171 msgstr ""
9461172
947 #: ../../../src/MenuDevConsole.cpp:536
1173 #: ../../../src/MenuDevConsole.cpp:554
9481174 msgid "<id>"
9491175 msgstr ""
9501176
951 #: ../../../src/MenuDevConsole.cpp:552
1177 #: ../../../src/MenuDevConsole.cpp:570
9521178 #, c-format
9531179 msgid "ERROR: '%s' is not a valid event key"
9541180 msgstr ""
9551181
956 #: ../../../src/MenuDevConsole.cpp:562
1182 #: ../../../src/MenuDevConsole.cpp:580
9571183 msgid "ERROR: Too few arguments"
9581184 msgstr ""
9591185
960 #: ../../../src/MenuDevConsole.cpp:564
1186 #: ../../../src/MenuDevConsole.cpp:582
9611187 msgid "<key>=<val> <key>=<val> ..."
9621188 msgstr ""
9631189
964 #: ../../../src/MenuDevConsole.cpp:569
1190 #: ../../../src/MenuDevConsole.cpp:587
9651191 msgid "ERROR: Unknown command"
9661192 msgstr ""
9671193
968 #: ../../../src/MenuDevConsole.cpp:571
1194 #: ../../../src/MenuDevConsole.cpp:589
9691195 msgid "HINT: Type help"
9701196 msgstr ""
9711197
972 #: ../../../src/MenuEnemy.cpp:138
1198 #: ../../../src/MenuEnemy.cpp:162
9731199 #, c-format
9741200 msgid "%s level %d"
9751201 msgstr ""
9761202
977 #: ../../../src/MenuEnemy.cpp:162
1203 #: ../../../src/MenuEnemy.cpp:186
9781204 msgid "Dead"
9791205 msgstr "Mrtvý"
9801206
981 #: ../../../src/MenuEnemy.cpp:164
1207 #: ../../../src/MenuEnemy.cpp:188
9821208 msgid "Destroyed"
9831209 msgstr ""
9841210
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
1211 #: ../../../src/MenuGameOver.cpp:69
1212 msgid "Game Over"
1213 msgstr ""
1214
1215 #: ../../../src/MenuInventory.cpp:178
10061216 #, c-format
10071217 msgid "Lost %d%% of %s."
10081218 msgstr ""
10091219
1010 #: ../../../src/MenuInventory.cpp:195
1220 #: ../../../src/MenuInventory.cpp:185
10111221 #, c-format
10121222 msgid "Lost %d%% of total XP."
10131223 msgstr ""
10141224
1015 #: ../../../src/MenuInventory.cpp:200
1225 #: ../../../src/MenuInventory.cpp:190
10161226 #, c-format
10171227 msgid "Lost %d%% of current level XP."
10181228 msgstr ""
10191229
1020 #: ../../../src/MenuInventory.cpp:226
1230 #: ../../../src/MenuInventory.cpp:216
10211231 #, c-format
10221232 msgid "Lost %s."
10231233 msgstr ""
10241234
1025 #: ../../../src/MenuInventory.cpp:274 ../../../src/MenuStash.cpp:146
1235 #: ../../../src/MenuInventory.cpp:258 ../../../src/MenuStash.cpp:276
10261236 #, c-format
10271237 msgid "%d %s"
10281238 msgstr ""
10291239
1030 #: ../../../src/MenuInventory.cpp:317
1240 #: ../../../src/MenuInventory.cpp:301
10311241 msgid "Pick up item(s):"
10321242 msgstr ""
10331243
1034 #: ../../../src/MenuInventory.cpp:318
1244 #: ../../../src/MenuInventory.cpp:302
10351245 msgid "Use or equip item:"
10361246 msgstr ""
10371247
1038 #: ../../../src/MenuInventory.cpp:319
1248 #: ../../../src/MenuInventory.cpp:303
10391249 #, c-format
10401250 msgid "%s modifiers"
10411251 msgstr ""
10421252
1043 #: ../../../src/MenuInventory.cpp:320
1253 #: ../../../src/MenuInventory.cpp:304
10441254 msgid "Select a quantity of item:"
10451255 msgstr ""
10461256
1047 #: ../../../src/MenuInventory.cpp:323
1257 #: ../../../src/MenuInventory.cpp:307
10481258 msgid "Stash item stack:"
10491259 msgstr ""
10501260
1051 #: ../../../src/MenuInventory.cpp:325
1261 #: ../../../src/MenuInventory.cpp:309
10521262 msgid "Sell item stack:"
10531263 msgstr ""
10541264
1055 #: ../../../src/MenuInventory.cpp:592
1265 #: ../../../src/MenuInventory.cpp:576
10561266 msgid "You don't have enough of the required item."
10571267 msgstr ""
10581268
1059 #: ../../../src/MenuInventory.cpp:599
1269 #: ../../../src/MenuInventory.cpp:588
10601270 msgid "You can't use this item right now."
10611271 msgstr ""
10621272
1063 #: ../../../src/MenuInventory.cpp:611
1273 #: ../../../src/MenuInventory.cpp:600
10641274 msgid "This item can only be used from the action bar."
10651275 msgstr "Tento předmět může být použit pouze z akčního menu"
10661276
1067 #: ../../../src/MenuInventory.cpp:729
1277 #: ../../../src/MenuInventory.cpp:718
10681278 msgid "Inventory is full."
10691279 msgstr "Inventář je plný."
10701280
1071 #: ../../../src/MenuInventory.cpp:849
1281 #: ../../../src/MenuInventory.cpp:843
10721282 #, c-format
10731283 msgid "Not enough %s."
10741284 msgstr ""
10751285
1076 #: ../../../src/MenuInventory.cpp:869 ../../../src/MenuInventory.cpp:876
1286 #: ../../../src/MenuInventory.cpp:863 ../../../src/MenuInventory.cpp:870
10771287 msgid "This item can not be sold."
10781288 msgstr ""
10791289
10851295 msgid "Quests"
10861296 msgstr "Úkoly"
10871297
1088 #: ../../../src/MenuManager.cpp:286
1298 #: ../../../src/MenuManager.cpp:305
10891299 #, c-format
10901300 msgid "XP: %d/%d"
10911301 msgstr ""
10921302
1093 #: ../../../src/MenuManager.cpp:827
1303 #: ../../../src/MenuManager.cpp:875
10941304 msgid "This item can not be dropped."
1305 msgstr ""
1306
1307 #: ../../../src/MenuManager.cpp:1501
1308 msgid "Equipped"
1309 msgstr ""
1310
1311 #: ../../../src/MenuMovementType.cpp:87
1312 msgid "Select a Movement Type"
1313 msgstr ""
1314
1315 #: ../../../src/MenuMovementType.cpp:89
1316 msgid "Can be changed later in the Configuration menu."
1317 msgstr ""
1318
1319 #: ../../../src/MenuMovementType.cpp:92 ../../../src/MenuMovementType.cpp:122
1320 msgid "Keyboard"
1321 msgstr ""
1322
1323 #: ../../../src/MenuMovementType.cpp:93 ../../../src/MenuMovementType.cpp:128
1324 msgid "Mouse"
1325 msgstr ""
1326
1327 #: ../../../src/MenuMovementType.cpp:129
1328 msgid "Button"
10951329 msgstr ""
10961330
10971331 #: ../../../src/MenuNumPicker.cpp:59
10981332 msgid "Enter amount:"
10991333 msgstr ""
11001334
1101 #: ../../../src/MenuPowers.cpp:787
1335 #: ../../../src/MenuPowers.cpp:894
11021336 msgid "Passive"
11031337 msgstr ""
11041338
1105 #: ../../../src/MenuPowers.cpp:792
1339 #: ../../../src/MenuPowers.cpp:901
11061340 #, c-format
11071341 msgid "Costs %d MP"
11081342 msgstr "Stojí %d MP"
11091343
1110 #: ../../../src/MenuPowers.cpp:796
1344 #: ../../../src/MenuPowers.cpp:905
11111345 #, c-format
11121346 msgid "Costs %d HP"
11131347 msgstr "Stojí %d HP"
11141348
1115 #: ../../../src/MenuPowers.cpp:801
1349 #: ../../../src/MenuPowers.cpp:909
11161350 msgid "Cooldown:"
11171351 msgstr ""
11181352
1119 #: ../../../src/MenuPowers.cpp:866 ../../../src/MenuPowers.cpp:869
1353 #: ../../../src/MenuPowers.cpp:960 ../../../src/MenuPowers.cpp:963
11201354 msgid "Damage per second"
11211355 msgstr ""
11221356
1123 #: ../../../src/MenuPowers.cpp:872 ../../../src/MenuPowers.cpp:875
1357 #: ../../../src/MenuPowers.cpp:966 ../../../src/MenuPowers.cpp:969
11241358 msgid "HP per second"
11251359 msgstr ""
11261360
1127 #: ../../../src/MenuPowers.cpp:878 ../../../src/MenuPowers.cpp:881
1361 #: ../../../src/MenuPowers.cpp:972 ../../../src/MenuPowers.cpp:975
11281362 msgid "MP per second"
11291363 msgstr ""
11301364
1131 #: ../../../src/MenuPowers.cpp:885
1365 #: ../../../src/MenuPowers.cpp:979
11321366 msgid "Immobilize"
11331367 msgstr ""
11341368
1135 #: ../../../src/MenuPowers.cpp:893
1369 #: ../../../src/MenuPowers.cpp:987
11361370 msgid "Immunity"
11371371 msgstr ""
11381372
1139 #: ../../../src/MenuPowers.cpp:896
1373 #: ../../../src/MenuPowers.cpp:990
11401374 msgid "Immunity to damage over time"
11411375 msgstr ""
11421376
1143 #: ../../../src/MenuPowers.cpp:899
1377 #: ../../../src/MenuPowers.cpp:993
11441378 msgid "Immunity to slow"
11451379 msgstr ""
11461380
1147 #: ../../../src/MenuPowers.cpp:902
1381 #: ../../../src/MenuPowers.cpp:996
11481382 msgid "Immunity to stun"
11491383 msgstr ""
11501384
1151 #: ../../../src/MenuPowers.cpp:905
1385 #: ../../../src/MenuPowers.cpp:999
11521386 msgid "Immunity to HP steal"
11531387 msgstr ""
11541388
1155 #: ../../../src/MenuPowers.cpp:908
1389 #: ../../../src/MenuPowers.cpp:1002
11561390 msgid "Immunity to MP steal"
11571391 msgstr ""
11581392
1159 #: ../../../src/MenuPowers.cpp:911
1393 #: ../../../src/MenuPowers.cpp:1005
11601394 msgid "Immunity to knockback"
11611395 msgstr ""
11621396
1163 #: ../../../src/MenuPowers.cpp:914
1397 #: ../../../src/MenuPowers.cpp:1008
11641398 msgid "Immunity to damage reflection"
11651399 msgstr ""
11661400
1167 #: ../../../src/MenuPowers.cpp:917
1401 #: ../../../src/MenuPowers.cpp:1014
11681402 msgid "Stun"
11691403 msgstr ""
11701404
1171 #: ../../../src/MenuPowers.cpp:920
1405 #: ../../../src/MenuPowers.cpp:1017
11721406 msgid "Automatic revive on death"
11731407 msgstr ""
11741408
1175 #: ../../../src/MenuPowers.cpp:923
1409 #: ../../../src/MenuPowers.cpp:1020
11761410 msgid "Convert"
11771411 msgstr ""
11781412
1179 #: ../../../src/MenuPowers.cpp:926
1413 #: ../../../src/MenuPowers.cpp:1023
11801414 msgid "Fear"
11811415 msgstr ""
11821416
1183 #: ../../../src/MenuPowers.cpp:929
1417 #: ../../../src/MenuPowers.cpp:1026
11841418 msgid "Lifespan"
11851419 msgstr ""
11861420
1187 #: ../../../src/MenuPowers.cpp:953
1421 #: ../../../src/MenuPowers.cpp:1050
11881422 msgid "Magical Shield"
11891423 msgstr ""
11901424
1191 #: ../../../src/MenuPowers.cpp:982
1425 #: ../../../src/MenuPowers.cpp:1079
11921426 msgid "Healing"
11931427 msgstr ""
11941428
1195 #: ../../../src/MenuPowers.cpp:985
1429 #: ../../../src/MenuPowers.cpp:1082
11961430 msgid "Knockback"
11971431 msgstr ""
11981432
1199 #: ../../../src/MenuPowers.cpp:1010
1433 #: ../../../src/MenuPowers.cpp:1106
12001434 #, c-format
12011435 msgid "%d%% chance"
12021436 msgstr ""
12031437
1204 #: ../../../src/MenuPowers.cpp:1062
1438 #: ../../../src/MenuPowers.cpp:1158
12051439 msgid "Base Accuracy"
12061440 msgstr ""
12071441
1208 #: ../../../src/MenuPowers.cpp:1082
1442 #: ../../../src/MenuPowers.cpp:1178
12091443 msgid "Base Critical Chance"
12101444 msgstr ""
12111445
1212 #: ../../../src/MenuPowers.cpp:1090
1446 #: ../../../src/MenuPowers.cpp:1186
12131447 msgid "Ignores Absorbtion"
12141448 msgstr ""
12151449
1216 #: ../../../src/MenuPowers.cpp:1095
1450 #: ../../../src/MenuPowers.cpp:1191
12171451 msgid "Ignores Avoidance"
12181452 msgstr ""
12191453
1220 #: ../../../src/MenuPowers.cpp:1100
1454 #: ../../../src/MenuPowers.cpp:1196
12211455 #, c-format
12221456 msgid "%d%% Chance to crit slowed targets"
12231457 msgstr ""
12241458
1225 #: ../../../src/MenuPowers.cpp:1105
1459 #: ../../../src/MenuPowers.cpp:1201
12261460 #, c-format
12271461 msgid "Elemental Damage (%s)"
12281462 msgstr ""
12291463
1230 #: ../../../src/MenuPowers.cpp:1114
1464 #: ../../../src/MenuPowers.cpp:1210
12311465 #, c-format
12321466 msgid "Requires a %s"
12331467 msgstr ""
12341468
1235 #: ../../../src/MenuPowers.cpp:1151 ../../../src/MenuPowers.cpp:1154
1469 #: ../../../src/MenuPowers.cpp:1248 ../../../src/MenuPowers.cpp:1251
12361470 #, c-format
12371471 msgid "Requires Power: %s"
12381472 msgstr "Potřebuje Schopnost: %s"
12391473
1240 #: ../../../src/MenuPowers.cpp:1163
1474 #: ../../../src/MenuPowers.cpp:1260
12411475 msgid "Click to Unlock (uses 1 Skill Point)"
12421476 msgstr ""
12431477
1244 #: ../../../src/MenuPowers.cpp:1167 ../../../src/MenuPowers.cpp:1169
1478 #: ../../../src/MenuPowers.cpp:1264 ../../../src/MenuPowers.cpp:1266
12451479 msgid "Requires 1 Skill Point"
12461480 msgstr ""
12471481
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
1482 #: ../../../src/MenuPowers.cpp:1466
1483 #, c-format
1484 msgid "Available skill points: %d"
1485 msgstr ""
1486
1487 #: ../../../src/MenuPowers.cpp:1498
12591488 msgid "Next Level:"
12601489 msgstr ""
12611490
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
1491 #: ../../../src/MenuStash.cpp:80 ../../../src/MenuStash.cpp:161
1492 msgid "Stash"
1493 msgstr ""
1494
1495 #: ../../../src/MenuStash.cpp:174 ../../../src/MenuStash.cpp:188
1496 msgid "Private"
1497 msgstr ""
1498
1499 #: ../../../src/MenuStash.cpp:175
1500 msgid "Shared"
1501 msgstr ""
1502
1503 #: ../../../src/MenuStash.cpp:340
1504 msgid "This item can not be stored in the stash."
1505 msgstr ""
1506
1507 #: ../../../src/MenuStash.cpp:345
1508 msgid "This item can not be stored in the private stash."
1509 msgstr ""
1510
1511 #: ../../../src/MenuStash.cpp:350
1512 msgid "This item can not be stored in the shared stash."
1513 msgstr ""
1514
1515 #: ../../../src/MenuStash.cpp:360
12711516 msgid "Stash is full."
12721517 msgstr ""
12731518
1274 #: ../../../src/MenuTalker.cpp:454
1519 #: ../../../src/MenuStash.cpp:414
1520 #, c-format
1521 msgid "Can not store item in stash: %s"
1522 msgstr ""
1523
1524 #: ../../../src/MenuTalker.cpp:448
1525 #, c-format
1526 msgid "<dialog node %d>"
1527 msgstr ""
1528
1529 #: ../../../src/MenuTalker.cpp:456
12751530 msgid "Trade"
12761531 msgstr "Obchodovat"
12771532
1278 #: ../../../src/MenuVendor.cpp:58
1533 #: ../../../src/MenuVendor.cpp:60
12791534 msgid "Buyback"
12801535 msgstr "Koupit Zpět"
12811536
1282 #: ../../../src/MenuVendor.cpp:279
1537 #: ../../../src/MenuVendor.cpp:283
12831538 msgid "Vendor"
12841539 msgstr "Obchodník"
12851540
1286 #: ../../../src/PowerManager.cpp:1136
1541 #: ../../../src/PowerManager.cpp:1204
12871542 #, c-format
12881543 msgid "+%d Shield"
12891544 msgstr "%d Štít"
12901545
1291 #: ../../../src/PowerManager.cpp:1392
1546 #: ../../../src/PowerManager.cpp:1461
12921547 msgid "You are already transformed, untransform first."
12931548 msgstr "Už jsi transformovaný, nejdřív se transformuj zpět."
12941549
1295 #: ../../../src/PowerManager.cpp:1404
1550 #: ../../../src/PowerManager.cpp:1473
12961551 msgid "Could not untransform at this position."
12971552 msgstr ""
12981553
13001555 msgid "Completed Quests"
13011556 msgstr ""
13021557
1303 #: ../../../src/SaveLoad.cpp:243 ../../../src/SaveLoad.cpp:244
1558 #: ../../../src/SaveLoad.cpp:250 ../../../src/SaveLoad.cpp:251
13041559 msgid "Game saved."
13051560 msgstr ""
13061561
1307 #: ../../../src/SDLInputState.cpp:582
1562 #: ../../../src/SDLInputState.cpp:645
1563 msgid "BkSp"
1564 msgstr ""
1565
1566 #: ../../../src/SDLInputState.cpp:646
1567 msgid "Caps"
1568 msgstr ""
1569
1570 #: ../../../src/SDLInputState.cpp:647
1571 msgid "Del"
1572 msgstr ""
1573
1574 #: ../../../src/SDLInputState.cpp:649 ../../../src/SDLInputState.cpp:679
1575 msgid "End"
1576 msgstr ""
1577
1578 #: ../../../src/SDLInputState.cpp:650
1579 msgid "Esc"
1580 msgstr ""
1581
1582 #: ../../../src/SDLInputState.cpp:651 ../../../src/SDLInputState.cpp:681
1583 msgid "Home"
1584 msgstr ""
1585
1586 #: ../../../src/SDLInputState.cpp:652
1587 msgid "Ins"
1588 msgstr ""
1589
1590 #: ../../../src/SDLInputState.cpp:653
1591 msgid "LAlt"
1592 msgstr ""
1593
1594 #: ../../../src/SDLInputState.cpp:654
1595 msgid "LCtrl"
1596 msgstr ""
1597
1598 #: ../../../src/SDLInputState.cpp:656
1599 msgid "LShft"
1600 msgstr ""
1601
1602 #: ../../../src/SDLInputState.cpp:657
1603 msgid "Num"
1604 msgstr ""
1605
1606 #: ../../../src/SDLInputState.cpp:658
1607 msgid "PgDn"
1608 msgstr ""
1609
1610 #: ../../../src/SDLInputState.cpp:659
1611 msgid "PgUp"
1612 msgstr ""
1613
1614 #: ../../../src/SDLInputState.cpp:660 ../../../src/SDLInputState.cpp:690
1615 msgid "Pause"
1616 msgstr ""
1617
1618 #: ../../../src/SDLInputState.cpp:661
1619 msgid "Print"
1620 msgstr ""
1621
1622 #: ../../../src/SDLInputState.cpp:662
1623 msgid "RAlt"
1624 msgstr ""
1625
1626 #: ../../../src/SDLInputState.cpp:663
1627 msgid "RCtrl"
1628 msgstr ""
1629
1630 #: ../../../src/SDLInputState.cpp:664
1631 msgid "Ret"
1632 msgstr ""
1633
1634 #: ../../../src/SDLInputState.cpp:666
1635 msgid "RShft"
1636 msgstr ""
1637
1638 #: ../../../src/SDLInputState.cpp:667
1639 msgid "SLock"
1640 msgstr ""
1641
1642 #: ../../../src/SDLInputState.cpp:668
1643 msgid "Spc"
1644 msgstr ""
1645
1646 #: ../../../src/SDLInputState.cpp:669 ../../../src/SDLInputState.cpp:699
1647 msgid "Tab"
1648 msgstr ""
1649
1650 #: ../../../src/SDLInputState.cpp:675
13081651 msgid "Backspace"
13091652 msgstr ""
13101653
1311 #: ../../../src/SDLInputState.cpp:583
1654 #: ../../../src/SDLInputState.cpp:676
13121655 msgid "CapsLock"
13131656 msgstr ""
13141657
1315 #: ../../../src/SDLInputState.cpp:586
1316 msgid "End"
1317 msgstr ""
1318
1319 #: ../../../src/SDLInputState.cpp:587
1658 #: ../../../src/SDLInputState.cpp:680
13201659 msgid "Escape"
13211660 msgstr ""
13221661
1323 #: ../../../src/SDLInputState.cpp:588
1324 msgid "Home"
1325 msgstr ""
1326
1327 #: ../../../src/SDLInputState.cpp:589
1662 #: ../../../src/SDLInputState.cpp:682
13281663 msgid "Insert"
13291664 msgstr ""
13301665
1331 #: ../../../src/SDLInputState.cpp:590
1666 #: ../../../src/SDLInputState.cpp:683
13321667 msgid "Left Alt"
13331668 msgstr ""
13341669
1335 #: ../../../src/SDLInputState.cpp:591
1670 #: ../../../src/SDLInputState.cpp:684
13361671 msgid "Left Ctrl"
13371672 msgstr ""
13381673
1339 #: ../../../src/SDLInputState.cpp:593
1674 #: ../../../src/SDLInputState.cpp:686
13401675 msgid "Left Shift"
13411676 msgstr ""
13421677
1343 #: ../../../src/SDLInputState.cpp:594
1678 #: ../../../src/SDLInputState.cpp:687
13441679 msgid "NumLock"
13451680 msgstr ""
13461681
1347 #: ../../../src/SDLInputState.cpp:595
1682 #: ../../../src/SDLInputState.cpp:688
13481683 msgid "PageDown"
13491684 msgstr ""
13501685
1351 #: ../../../src/SDLInputState.cpp:596
1686 #: ../../../src/SDLInputState.cpp:689
13521687 msgid "PageUp"
13531688 msgstr ""
13541689
1355 #: ../../../src/SDLInputState.cpp:597
1356 msgid "Pause"
1357 msgstr ""
1358
1359 #: ../../../src/SDLInputState.cpp:598
1690 #: ../../../src/SDLInputState.cpp:691
13601691 msgid "PrintScreen"
13611692 msgstr ""
13621693
1363 #: ../../../src/SDLInputState.cpp:599
1694 #: ../../../src/SDLInputState.cpp:692
13641695 msgid "Right Alt"
13651696 msgstr ""
13661697
1367 #: ../../../src/SDLInputState.cpp:600
1698 #: ../../../src/SDLInputState.cpp:693
13681699 msgid "Right Ctrl"
13691700 msgstr ""
13701701
1371 #: ../../../src/SDLInputState.cpp:601
1702 #: ../../../src/SDLInputState.cpp:694
13721703 msgid "Return"
13731704 msgstr ""
13741705
1375 #: ../../../src/SDLInputState.cpp:603
1706 #: ../../../src/SDLInputState.cpp:696
13761707 msgid "Right Shift"
13771708 msgstr ""
13781709
1379 #: ../../../src/SDLInputState.cpp:604
1710 #: ../../../src/SDLInputState.cpp:697
13801711 msgid "ScrollLock"
13811712 msgstr ""
13821713
1383 #: ../../../src/SDLInputState.cpp:605
1714 #: ../../../src/SDLInputState.cpp:698
13841715 msgid "Space"
13851716 msgstr ""
13861717
1387 #: ../../../src/SDLInputState.cpp:606
1388 msgid "Tab"
1389 msgstr ""
1390
1391 #: ../../../src/SDLInputState.cpp:620
1718 #: ../../../src/SDLInputState.cpp:712
1719 #, c-format
1720 msgid "M%d"
1721 msgstr ""
1722
1723 #: ../../../src/SDLInputState.cpp:718
13921724 #, c-format
13931725 msgid "Mouse %d"
13941726 msgstr ""
13951727
1396 #: ../../../src/SDLInputState.cpp:628
1728 #: ../../../src/SDLInputState.cpp:728
1729 #, c-format
1730 msgid "JX%d-"
1731 msgstr ""
1732
1733 #: ../../../src/SDLInputState.cpp:730
13971734 #, c-format
13981735 msgid "Axis %d -"
13991736 msgstr ""
14001737
1401 #: ../../../src/SDLInputState.cpp:630
1738 #: ../../../src/SDLInputState.cpp:734
1739 #, c-format
1740 msgid "JX%d+"
1741 msgstr ""
1742
1743 #: ../../../src/SDLInputState.cpp:736
14021744 #, c-format
14031745 msgid "Axis %d +"
14041746 msgstr ""
14051747
1406 #: ../../../src/SDLInputState.cpp:633
1748 #: ../../../src/SDLInputState.cpp:741
1749 #, c-format
1750 msgid "JB%d"
1751 msgstr ""
1752
1753 #: ../../../src/SDLInputState.cpp:743
14071754 #, c-format
14081755 msgid "Button %d"
14091756 msgstr ""
14101757
1411 #: ../../../src/SDLInputState.cpp:637
1412 msgid "(none)"
1413 msgstr ""
1414
1415 #: ../../../src/SDLInputState.cpp:677
1758 #: ../../../src/SDLInputState.cpp:789
14161759 msgid "Touch control D-Pad"
14171760 msgstr ""
14181761
1419 #: ../../../src/SDLInputState.cpp:701
1762 #: ../../../src/SDLInputState.cpp:812
14201763 msgid "Touch control buttons"
14211764 msgstr ""
14221765
1423 #: ../../../src/SDLInputState.cpp:716
1766 #: ../../../src/SDLInputState.cpp:826
14241767 msgid "Tap"
14251768 msgstr ""
14261769
1427 #: ../../../src/SDLInputState.cpp:760 ../../../src/SDLInputState.cpp:764
1428 #: ../../../src/SDLInputState.cpp:768
1770 #: ../../../src/SDLInputState.cpp:878 ../../../src/SDLInputState.cpp:880
1771 #, c-format
1772 msgid "Can not bind: %s"
1773 msgstr ""
1774
1775 #: ../../../src/SDLInputState.cpp:892 ../../../src/SDLInputState.cpp:896
1776 #: ../../../src/SDLInputState.cpp:900
14291777 #, c-format
14301778 msgid "'%s' is no longer bound to:"
14311779 msgstr ""
15841932 msgid "Base MP"
15851933 msgstr ""
15861934
1587 #: ../../../src/Utils.cpp:346
1935 #: ../../../src/Utils.cpp:365
15881936 msgid "k"
15891937 msgstr ""
15901938
1591 #: ../../../src/Utils.cpp:580
1939 #: ../../../src/Utils.cpp:635
15921940 #, c-format
15931941 msgid "%s second"
15941942 msgstr "1%s sekunda"
15951943
1596 #: ../../../src/Utils.cpp:583
1944 #: ../../../src/Utils.cpp:638
15971945 #, c-format
15981946 msgid "%s seconds"
15991947 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-07-02 13:26-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:1220
137 #: ../../../src/StatBlock.cpp:926 ../../../src/StatBlock.cpp:932
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:937
143 #: ../../../src/StatBlock.cpp:943
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:704
185 msgid "Entering game world..."
186 msgstr "Spielwelt wird betreten ..."
187
188 #: ../../../src/GameStateLoad.cpp:707
189 msgid "Loading saved game..."
190 msgstr "Spielstand wird geladen ..."
191
192 #: ../../../src/GameStateLoad.cpp:740
193 msgid "Invalid save"
194 msgstr "Ungültiger Spielstand"
195
196 #: ../../../src/GameStateLoad.cpp:764 ../../../src/ItemManager.cpp:745
197 #: ../../../src/MenuPowers.cpp:882 ../../../src/MenuPowers.cpp:1241
198 #: ../../../src/MenuPowers.cpp:1653
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:254
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:670
258 #: ../../../src/SDLInputState.cpp:700
259 msgid "Up"
260 msgstr "Hoch"
261
262 #: ../../../src/InputState.cpp:419 ../../../src/MenuMovementType.cpp:125
263 #: ../../../src/MenuMovementType.cpp:134 ../../../src/SDLInputState.cpp:648
264 #: ../../../src/SDLInputState.cpp:678
265 msgid "Down"
266 msgstr "Runter"
267
268 #: ../../../src/InputState.cpp:420 ../../../src/MenuMovementType.cpp:124
269 #: ../../../src/MenuMovementType.cpp:133 ../../../src/SDLInputState.cpp:655
270 #: ../../../src/SDLInputState.cpp:685
271 msgid "Left"
272 msgstr "Links"
273
274 #: ../../../src/InputState.cpp:421 ../../../src/MenuMovementType.cpp:126
275 #: ../../../src/MenuMovementType.cpp:135 ../../../src/SDLInputState.cpp:665
276 #: ../../../src/SDLInputState.cpp:695
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:159
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:677
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:981
417 #, c-format
418 msgid "%d%% Speed"
419 msgstr "%d%% Geschwindigkeit"
420
421 #: ../../../src/ItemManager.cpp:650 ../../../src/MenuPowers.cpp:984
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:953
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:1228
457 #: ../../../src/MenuPowers.cpp:1231
458 #, c-format
459 msgid "Requires Level %d"
460 msgstr "Benötigt Stufe %d"
461
462 #: ../../../src/ItemManager.cpp:836 ../../../src/MenuPowers.cpp:1220
463 #: ../../../src/MenuPowers.cpp:1222
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:898
494 msgid "Set:"
495 msgstr "Set:"
496
497 #: ../../../src/ItemManager.cpp:905
498 #, c-format
499 msgid "%d items:"
500 msgstr "%d Gegenstände:"
501
502 #: ../../../src/ItemManager.cpp:920
503 #, c-format
504 msgid "Press [%s] to read"
505 msgstr "Drücke [%s] zum Lesen"
506
507 #: ../../../src/ItemManager.cpp:923
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:1256
584 msgid "Clear"
585 msgstr "Löschen"
586
587 #: ../../../src/MenuConfig.cpp:122 ../../../src/MenuConfig.cpp:1254
588 msgid "Assign:"
589 msgstr "Zuweisen:"
590
591 #: ../../../src/MenuConfig.cpp:123 ../../../src/MenuConfig.cpp:253
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:252 ../../../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:256 ../../../src/MenuGameOver.cpp:72
604 msgid "Continue"
605 msgstr "Fortfahren"
606
607 #: ../../../src/MenuConfig.cpp:258
608 msgid "Save Game"
609 msgstr "Spiel speichern"
610
611 #: ../../../src/MenuConfig.cpp:301 ../../../src/MenuConfig.cpp:352
612 msgid "Default"
613 msgstr "Standard"
614
615 #: ../../../src/MenuConfig.cpp:301
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:302
624 msgid "Show all"
625 msgstr "Alles anzeigen"
626
627 #: ../../../src/MenuConfig.cpp:302
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:303 ../../../src/MenuConfig.cpp:308
634 msgid "Hidden"
635 msgstr "Versteckt"
636
637 #: ../../../src/MenuConfig.cpp:303
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:306
646 msgid "Visible"
647 msgstr "Sichtbar"
648
649 #: ../../../src/MenuConfig.cpp:307
650 msgid "Visible (2x zoom)"
651 msgstr "Sichtbar (2×-Zoom)"
652
653 #: ../../../src/MenuConfig.cpp:311
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:312
662 msgid "- Display a message"
663 msgstr "- Nachricht anzeigen"
664
665 #: ../../../src/MenuConfig.cpp:313
666 msgid "- Play a sound"
667 msgstr "- Ton abspielen"
668
669 #: ../../../src/MenuConfig.cpp:314
670 msgid "- Change the cursor"
671 msgstr "- Mauszeiger ändern"
672
673 #: ../../../src/MenuConfig.cpp:316
674 msgid "Disabled"
675 msgstr "Deaktiviert"
676
677 #: ../../../src/MenuConfig.cpp:317
678 msgid "All"
679 msgstr "Alle"
680
681 #: ../../../src/MenuConfig.cpp:318
682 msgid "Message & Cursor"
683 msgstr "Nachricht u. Mauszeiger"
684
685 #: ../../../src/MenuConfig.cpp:319
686 msgid "Message & Sound"
687 msgstr "Nachricht u. Ton"
688
689 #: ../../../src/MenuConfig.cpp:320
690 msgid "Sound & Cursor"
691 msgstr "Ton u. Mauszeiger"
692
693 #: ../../../src/MenuConfig.cpp:321
694 msgid "Message"
695 msgstr "Nachricht"
696
697 #: ../../../src/MenuConfig.cpp:322
698 msgid "Cursor"
699 msgstr "Mauszeiger"
700
701 #: ../../../src/MenuConfig.cpp:323
702 msgid "Sound"
703 msgstr "Ton"
704
705 #: ../../../src/MenuConfig.cpp:329
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:347
714 msgid "The maximum frame rate that the game will be allowed to run at."
715 msgstr ""
716
717 #: ../../../src/MenuConfig.cpp:351
718 msgid ""
719 "The render size refers to the height in pixels of the surface used to draw "
720 "the game. Mods define the allowed render sizes, but this option allows "
721 "overriding the maximum size."
722 msgstr ""
723
724 #: ../../../src/MenuConfig.cpp:374 ../../../src/MenuConfig.cpp:1679
725 #: ../../../src/MenuGameOver.cpp:116
726 msgid "Exit"
727 msgstr "Beenden"
728
729 #: ../../../src/MenuConfig.cpp:375
730 msgid "Video"
731 msgstr "Grafik"
732
733 #: ../../../src/MenuConfig.cpp:376
164734 msgid "Audio"
165735 msgstr "Ton"
166736
167 #: ../../../src/GameStateConfigBase.cpp:161
168 #: ../../../src/GameStateConfigDesktop.cpp:131
737 #: ../../../src/MenuConfig.cpp:377
169738 msgid "Interface"
170739 msgstr "Interface"
171740
172 #: ../../../src/GameStateConfigBase.cpp:162
173 #: ../../../src/GameStateConfigDesktop.cpp:134
741 #: ../../../src/MenuConfig.cpp:378
742 msgid "Input"
743 msgstr "Eingabe"
744
745 #: ../../../src/MenuConfig.cpp:379
746 msgid "Keybindings"
747 msgstr "Tastenbelegung"
748
749 #: ../../../src/MenuConfig.cpp:380
174750 msgid "Mods"
175751 msgstr "Mods"
176752
177 #: ../../../src/GameStateConfigBase.cpp:249 ../../../src/MenuExit.cpp:72
753 #: ../../../src/MenuConfig.cpp:392
754 msgid "Paused"
755 msgstr "Pausiert"
756
757 #: ../../../src/MenuConfig.cpp:395
758 msgid "Time Played"
759 msgstr "Spielzeit"
760
761 #: ../../../src/MenuConfig.cpp:401
762 msgid "Renderer"
763 msgstr "Renderer"
764
765 #: ../../../src/MenuConfig.cpp:402
766 msgid "Full Screen Mode"
767 msgstr "Vollbildmodus"
768
769 #: ../../../src/MenuConfig.cpp:403
770 msgid "Hardware surfaces"
771 msgstr "Hardwareoberflächen"
772
773 #: ../../../src/MenuConfig.cpp:404
774 msgid "V-Sync"
775 msgstr "V-Sync"
776
777 #: ../../../src/MenuConfig.cpp:405
778 msgid "Texture Filtering"
779 msgstr "Texturfilter"
780
781 #: ../../../src/MenuConfig.cpp:406
782 msgid "DPI scaling"
783 msgstr "DPI-Skalierung"
784
785 #: ../../../src/MenuConfig.cpp:407
786 msgid "Parallax Layers"
787 msgstr "Parallax-Ebenen"
788
789 #: ../../../src/MenuConfig.cpp:408
790 msgid "Allow changing gamma"
791 msgstr "Änderbarer Gamma-Wert"
792
793 #: ../../../src/MenuConfig.cpp:409
794 msgid "Gamma"
795 msgstr "Gamma-Wert"
796
797 #: ../../../src/MenuConfig.cpp:410
798 msgid "Maximum Render Size"
799 msgstr ""
800
801 #: ../../../src/MenuConfig.cpp:411
802 msgid "Frame Limit"
803 msgstr ""
804
805 #: ../../../src/MenuConfig.cpp:413
806 msgid "Sound Volume"
807 msgstr "Soundlautstärke"
808
809 #: ../../../src/MenuConfig.cpp:414
178810 msgid "Music Volume"
179811 msgstr "Musiklautstärke"
180812
181 #: ../../../src/GameStateConfigBase.cpp:253 ../../../src/MenuExit.cpp:77
182 msgid "Sound Volume"
183 msgstr "Soundlautstärke"
184
185 #: ../../../src/GameStateConfigBase.cpp:257
813 #: ../../../src/MenuConfig.cpp:416
186814 msgid "Language"
187815 msgstr "Sprache"
188816
189 #: ../../../src/GameStateConfigBase.cpp:266
817 #: ../../../src/MenuConfig.cpp:417
190818 msgid "Show FPS"
191819 msgstr "Framerate anzeigen"
192820
193 #: ../../../src/GameStateConfigBase.cpp:270
821 #: ../../../src/MenuConfig.cpp:418
822 msgid "Hardware mouse cursor"
823 msgstr "Hardware-Mauszeiger"
824
825 #: ../../../src/MenuConfig.cpp:419
194826 msgid "Colorblind Mode"
195827 msgstr "Modus für Farbblinde"
196828
197 #: ../../../src/GameStateConfigBase.cpp:274
198 msgid "Hardware mouse cursor"
199 msgstr "Hardware-Mauszeiger"
200
201 #: ../../../src/GameStateConfigBase.cpp:278
829 #: ../../../src/MenuConfig.cpp:420
202830 msgid "Developer Mode"
203831 msgstr "Entwicklermodus"
204832
205 #: ../../../src/GameStateConfigBase.cpp:282
833 #: ../../../src/MenuConfig.cpp:421
206834 msgid "Subtitles"
207835 msgstr "Untertitel"
208836
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
837 #: ../../../src/MenuConfig.cpp:422
838 msgid "Loot tooltip visibility"
839 msgstr "Sichtbarkeit der Beute-Hinweise"
840
841 #: ../../../src/MenuConfig.cpp:423
842 msgid "Mini-map mode"
843 msgstr "Minikarten-Modus"
844
845 #: ../../../src/MenuConfig.cpp:424
846 msgid "Always show stat bar labels"
847 msgstr "Immer Werteleistenbeschriftung anzeigen"
848
849 #: ../../../src/MenuConfig.cpp:425
850 msgid "Allow stat bar auto-hiding"
851 msgstr "Erlaube automatisches Verstecken der Werteleiste"
852
853 #: ../../../src/MenuConfig.cpp:426
854 msgid "Show combat text"
855 msgstr "Kampftexte anzeigen"
856
857 #: ../../../src/MenuConfig.cpp:427
858 msgid "Automatically equip items"
859 msgstr "Automatisch ausrüsten"
860
861 #: ../../../src/MenuConfig.cpp:428
862 msgid "Show hidden entity markers"
863 msgstr "Zeige versteckte Entitätsmarker"
864
865 #: ../../../src/MenuConfig.cpp:429
866 msgid "Low health notification"
867 msgstr "Niedrige-Gesundheit-Warnung"
868
869 #: ../../../src/MenuConfig.cpp:430
870 msgid "Low health threshold"
871 msgstr "Niedrige-Gesundheit-Schwellwert"
872
873 #: ../../../src/MenuConfig.cpp:431
874 msgid "Show item comparison tooltips"
875 msgstr ""
876
877 #: ../../../src/MenuConfig.cpp:434 ../../../src/MenuMovementType.cpp:94
878 #: ../../../src/MenuMovementType.cpp:131
879 msgid "Joystick"
880 msgstr "Joystick"
881
882 #: ../../../src/MenuConfig.cpp:435
883 msgid "Move hero using mouse"
884 msgstr "Maus steuert Bewegung"
885
886 #: ../../../src/MenuConfig.cpp:436
887 msgid "Mouse aim"
888 msgstr "Zielen mit der Maus"
889
890 #: ../../../src/MenuConfig.cpp:437
891 msgid "Do not use mouse"
892 msgstr "Maus nicht benutzen"
893
894 #: ../../../src/MenuConfig.cpp:438
895 msgid "Swap mouse movement button"
896 msgstr "Maustasten zum Bewegen umschalten"
897
898 #: ../../../src/MenuConfig.cpp:439
899 msgid "Attack with mouse movement"
900 msgstr "Mit Maussteuerung angreifen"
901
902 #: ../../../src/MenuConfig.cpp:440
903 msgid "Joystick Deadzone"
904 msgstr "Joystick-Todeszone"
905
906 #: ../../../src/MenuConfig.cpp:441
907 msgid "Touch Controls"
908 msgstr ""
909
910 #: ../../../src/MenuConfig.cpp:442
911 msgid "Touch Gamepad Scaling"
912 msgstr ""
913
914 #: ../../../src/MenuConfig.cpp:452
915 #, c-format
916 msgid "Primary binding: %s"
917 msgstr "Primäre Belegung: %s"
918
919 #: ../../../src/MenuConfig.cpp:453
920 #, c-format
921 msgid "Alternate binding: %s"
922 msgstr "Alternative Belegung: %s"
923
924 #: ../../../src/MenuConfig.cpp:454
925 #, c-format
926 msgid "Joystick binding: %s"
927 msgstr "Joystick Belegung: %s"
928
929 #: ../../../src/MenuConfig.cpp:556
264930 msgid ""
265931 "Will try to store surfaces in video memory versus system memory. The effect "
266932 "this has on performance depends on the renderer."
268934 "Wird versuchen, Oberflächen im Grafikspeicher anstelle des Systemspeichers "
269935 "zu speichern. Die Auswirkung auf die Performanz hängt vom Renderer ab."
270936
271 #: ../../../src/GameStateConfigDesktop.cpp:189
937 #: ../../../src/MenuConfig.cpp:557
272938 msgid ""
273939 "Prevents screen tearing. Disable if you experience \"stuttering\" in "
274940 "windowed mode or input lag."
276942 "Verhindert Screen Tearing. Deaktivieren, wenn du im Fenstermodus ein "
277943 "„Stottern“ oder Eingabeverzögerungen bemerkst."
278944
279 #: ../../../src/GameStateConfigDesktop.cpp:190
945 #: ../../../src/MenuConfig.cpp:558
280946 msgid ""
281947 "When enabled, this uses the screen DPI in addition to the window dimensions "
282948 "to scale the rendering resolution. Otherwise, only the window dimensions are"
286952 " anwenden, um die zum Zeichnen benutzte Auflösung zu skalieren. Ansonsten "
287953 "wird nur die Fenstergröße verwendet."
288954
289 #: ../../../src/GameStateConfigDesktop.cpp:191
955 #: ../../../src/MenuConfig.cpp:559
290956 msgid ""
291957 "This enables parallax (non-tile) layers. Disabling this setting can improve "
292958 "performance in some cases."
294960 "Aktiviert Parallax-Ebenen (Nicht-Kachel-Ebenen). Das Deaktivieren dieser "
295961 "Einstellung kann in einigen Fällen die Performanz erhöhen."
296962
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"
963 #: ../../../src/MenuConfig.cpp:560
964 msgid ""
965 "Enables the below setting that controls the screen gamma level. The behavior"
966 " of the gamma setting can vary between platforms."
967 msgstr ""
968 "Aktiviert die Möglichkeit, den Gammawert des Spiels zu ändern. Das Verhalten"
969 " dieser Einstellung schwankt stark zwischen Plattformen."
970
971 #: ../../../src/MenuConfig.cpp:561
972 msgid ""
973 "Provides additional text for information that is primarily conveyed through "
974 "color."
975 msgstr ""
976 "Zeigt zusätzlichen Text für Informationen, die hauptsächlich durch Farben "
977 "dargestellt werden."
978
979 #: ../../../src/MenuConfig.cpp:562
980 msgid ""
981 "Some mods will automatically hide the stat bars when they are inactive. "
982 "Disabling this option will keep them displayed at all times."
983 msgstr ""
984 "Einige Mods verstecken automatisch die Werteleisten, wenn inaktiv. Das "
985 "Deaktivieren dieser Option wird sie durchgehend anzeigen."
986
987 #: ../../../src/MenuConfig.cpp:563
988 msgid ""
989 "When enabled, empty equipment slots will be filled with applicable items "
990 "when they are obtained."
991 msgstr ""
992 "Wenn aktiviert, werden leere Ausrüstungseinträge automatisch mit gefundenen "
993 "Gegenständen gefüllt."
994
995 #: ../../../src/MenuConfig.cpp:564
996 msgid ""
997 "Shows a marker above enemies, allies, and the player when they are obscured "
998 "by tall objects."
999 msgstr ""
1000 "Zeige einen Marker über Gegner, Verbündeten und dem Spieler, wenn sie von "
1001 "großen Objekten verdeckt werden."
1002
1003 #: ../../../src/MenuConfig.cpp:565
1004 msgid ""
1005 "When enabled, tooltips for equipped items of the same type are shown next to"
1006 " standard item tooltips."
1007 msgstr ""
1008
1009 #: ../../../src/MenuConfig.cpp:566
1010 msgid ""
1011 "This allows the game to be controlled entirely with the keyboard (or "
1012 "joystick)."
1013 msgstr "Erlaubt Steuerung des gesamten Spiels mit Tastatur (oder Joystick)."
1014
1015 #: ../../../src/MenuConfig.cpp:567
1016 msgid ""
1017 "When 'Move hero using mouse' is enabled, this setting controls if 'Main1' or"
1018 " 'Main2' is used to move the hero. If enabled, 'Main2' will move the hero "
1019 "instead of 'Main1'."
1020 msgstr ""
1021 "Wenn „Maus steuert Bewegung“ aktiviert ist, legt diese Einstellung fest, ob "
1022 "„Aktionstaste 1“ oder „Aktionstaste 2“ benutzt wird, um den Helden zu "
1023 "bewegen. Falls aktiviert, steuert „Aktionstaste 2“ statt „Aktionstaste 1“ "
1024 "die Bewegung."
1025
1026 #: ../../../src/MenuConfig.cpp:568
1027 msgid ""
1028 "When 'Move hero using mouse' is enabled, this setting controls if the Power "
1029 "assigned to the movement button can be used by targeting an enemy. If this "
1030 "setting is disabled, it is required to use 'Shift' to access the Power "
1031 "assigned to the movement button."
1032 msgstr ""
1033 "Wenn „Maus steuert Bewegung“ aktiviert ist, steuert diese Einstellung, ob "
1034 "die auf Maustasten gelegte Attacke benutzt wird, indem auf einen Gegner "
1035 "gezielt wird. Wenn diese Einstellung deaktiviert ist, muss „Umschalt“ "
1036 "verwendet werden, um die auf Maustasten gelegte Attacke auszuführen."
1037
1038 #: ../../../src/MenuConfig.cpp:569
1039 msgid ""
1040 "The player's attacks will be aimed in the direction of the mouse cursor when"
1041 " this is enabled."
1042 msgstr ""
1043 "Wenn aktiviert, greift der Spieler in die Richtung des Mauszeigers an."
1044
1045 #: ../../../src/MenuConfig.cpp:570
1046 msgid ""
1047 "When enabled, a virtual gamepad will be added in-game. Other interactions, "
1048 "such as drag-and-drop behavior, are also altered to better suit touch input."
1049 msgstr ""
1050
1051 #: ../../../src/MenuConfig.cpp:621
1052 msgid "Active Mods"
1053 msgstr "Aktive Mods"
1054
1055 #: ../../../src/MenuConfig.cpp:630
1056 msgid "Available Mods"
1057 msgstr "Verfügbare Mods"
1058
1059 #: ../../../src/MenuConfig.cpp:649
1060 msgid "<< Disable"
1061 msgstr "<< Deaktivieren"
1062
1063 #: ../../../src/MenuConfig.cpp:655
1064 msgid "Enable >>"
1065 msgstr "Aktivieren >>"
1066
1067 #: ../../../src/MenuConfig.cpp:1536
1068 msgid "Version:"
1069 msgstr "Version:"
1070
1071 #: ../../../src/MenuConfig.cpp:1541
1072 msgid "Game:"
1073 msgstr "Spiel:"
1074
1075 #: ../../../src/MenuConfig.cpp:1546
1076 msgid "Engine version:"
1077 msgstr "Engine-Version:"
1078
1079 #: ../../../src/MenuConfig.cpp:1554
1080 msgid "Requires mods:"
1081 msgstr "Benötigte Mods:"
1082
1083 #: ../../../src/MenuConfig.cpp:1662 ../../../src/SDLInputState.cpp:750
1084 msgid "(none)"
1085 msgstr "(keine)"
1086
1087 #: ../../../src/MenuConfig.cpp:1679 ../../../src/MenuGameOver.cpp:73
1088 msgid "Save & Exit"
4581089 msgstr "Beenden"
4591090
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
1091 #: ../../../src/MenuDevConsole.cpp:65
8401092 msgid "Execute"
8411093 msgstr "Ausführen"
8421094
843 #: ../../../src/MenuDevConsole.cpp:101 ../../../src/MenuDevConsole.cpp:151
1095 #: ../../../src/MenuDevConsole.cpp:103 ../../../src/MenuDevConsole.cpp:153
8441096 msgid "Developer Console"
8451097 msgstr "Entwicklerkonsole"
8461098
847 #: ../../../src/MenuDevConsole.cpp:141
1099 #: ../../../src/MenuDevConsole.cpp:143
8481100 #, c-format
8491101 msgid "Use '%s' to inspect with the cursor."
8501102 msgstr "Benutze „%s“, um mit dem Mauszeiger zu untersuchen."
8511103
852 #: ../../../src/MenuDevConsole.cpp:146
1104 #: ../../../src/MenuDevConsole.cpp:148
8531105 msgid "Arguments with spaces should be enclosed with double quotes. Example:"
8541106 msgstr ""
8551107 "Argumente mit Leerzeichen sollten in doppelte Anführungszeichen gesetzt "
856 "sein. Beispiel: "
857
858 #: ../../../src/MenuDevConsole.cpp:147
1108 "sein. Beispiel:"
1109
1110 #: ../../../src/MenuDevConsole.cpp:149
8591111 msgid "Type 'help' to get a list of commands."
8601112 msgstr "„help“ eingeben, um Liste an Befehlen zu erhalten."
8611113
862 #: ../../../src/MenuDevConsole.cpp:209 ../../../src/MenuDevConsole.cpp:213
1114 #: ../../../src/MenuDevConsole.cpp:211 ../../../src/MenuDevConsole.cpp:215
8631115 msgid "px"
8641116 msgstr "px"
8651117
866 #: ../../../src/MenuDevConsole.cpp:224
1118 #: ../../../src/MenuDevConsole.cpp:226
8671119 msgid "Distance"
8681120 msgstr "Distanz"
8691121
870 #: ../../../src/MenuDevConsole.cpp:239 ../../../src/MenuDevConsole.cpp:286
1122 #: ../../../src/MenuDevConsole.cpp:241 ../../../src/MenuDevConsole.cpp:289
1123 #: ../../../src/MenuDevConsole.cpp:303
8711124 msgid "Entity"
872 msgstr "Entity"
873
874 #: ../../../src/MenuDevConsole.cpp:261 ../../../src/MenuDevConsole.cpp:268
1125 msgstr "Entität"
1126
1127 #: ../../../src/MenuDevConsole.cpp:263 ../../../src/MenuDevConsole.cpp:270
8751128 msgid "none"
8761129 msgstr "kein"
8771130
878 #: ../../../src/MenuDevConsole.cpp:262 ../../../src/MenuDevConsole.cpp:264
1131 #: ../../../src/MenuDevConsole.cpp:264 ../../../src/MenuDevConsole.cpp:266
8791132 msgid "wall"
8801133 msgstr "Wand"
8811134
882 #: ../../../src/MenuDevConsole.cpp:263 ../../../src/MenuDevConsole.cpp:265
1135 #: ../../../src/MenuDevConsole.cpp:265 ../../../src/MenuDevConsole.cpp:267
8831136 msgid "short wall / pit"
8841137 msgstr "kurze Wand / Grube"
8851138
886 #: ../../../src/MenuDevConsole.cpp:266
1139 #: ../../../src/MenuDevConsole.cpp:268
8871140 msgid "entity"
888 msgstr "Entity"
889
890 #: ../../../src/MenuDevConsole.cpp:267
1141 msgstr "Entität"
1142
1143 #: ../../../src/MenuDevConsole.cpp:269
8911144 msgid "entity, ally"
892 msgstr "Entity, verbündet"
893
894 #: ../../../src/MenuDevConsole.cpp:274
1145 msgstr "Entität, verbündet"
1146
1147 #: ../../../src/MenuDevConsole.cpp:276
8951148 msgid "Tile"
8961149 msgstr "Kachel"
8971150
898 #: ../../../src/MenuDevConsole.cpp:360
1151 #: ../../../src/MenuDevConsole.cpp:377
8991152 msgid "adds a power to the action bar"
9001153 msgstr "fügt eine Fähigkeit zur Aktionsleiste hinzu"
9011154
902 #: ../../../src/MenuDevConsole.cpp:361
1155 #: ../../../src/MenuDevConsole.cpp:378
9031156 msgid "turns on/off the display of the FPS counter"
9041157 msgstr "schaltet die FPS-Anzeige an/aus"
9051158
906 #: ../../../src/MenuDevConsole.cpp:362
1159 #: ../../../src/MenuDevConsole.cpp:379
9071160 msgid "turns on/off all of the HUD elements"
9081161 msgstr "schaltet alle HUD-Elemente an/aus"
9091162
910 #: ../../../src/MenuDevConsole.cpp:363
1163 #: ../../../src/MenuDevConsole.cpp:380
9111164 msgid "turns on/off the developer hud"
9121165 msgstr "schaltet das Entwickler-HUD an/aus"
9131166
914 #: ../../../src/MenuDevConsole.cpp:364
1167 #: ../../../src/MenuDevConsole.cpp:381
9151168 msgid ""
9161169 "Prints a list of powers that match a search term. No search term will list "
9171170 "all items"
9191172 "Gibt eine Liste an Kräften aus, die auf einen Suchbegriff passen. Ohne "
9201173 "Suchbegriff werden alle aufgelistet"
9211174
922 #: ../../../src/MenuDevConsole.cpp:365
1175 #: ../../../src/MenuDevConsole.cpp:382
9231176 msgid "Prints out all the map filenames located in the \"maps/\" directory."
9241177 msgstr "Gibt alle Karten-Dateinamen der Dateien im „maps/“-Verzeichnis aus."
9251178
926 #: ../../../src/MenuDevConsole.cpp:366
1179 #: ../../../src/MenuDevConsole.cpp:383
9271180 msgid ""
9281181 "Prints out the active campaign statuses that match a search term. No search "
9291182 "term will list all active statuses"
9311184 "Gibt die aktiven Kampagnen-Status, die auf einen Suchbegriff passen, aus. "
9321185 "Ohne Suchbegriff werden die aktiven Status aufgelistet"
9331186
934 #: ../../../src/MenuDevConsole.cpp:367
1187 #: ../../../src/MenuDevConsole.cpp:384
9351188 msgid ""
9361189 "Prints a list of items that match a search term. No search term will list "
9371190 "all items"
9391192 "Gibt eine Liste an Gegenständen, die auf einen Suchbegriff passen, aus. Ohne"
9401193 " Suchbegriff werden alle Gegenstände aufgelistet"
9411194
942 #: ../../../src/MenuDevConsole.cpp:368
1195 #: ../../../src/MenuDevConsole.cpp:385
9431196 msgid ""
9441197 "parses a series of event components and executes them as a single event"
9451198 msgstr ""
9461199 "parst eine Reihe an Ereigniskomponenten und führt sie als ein einzelnes "
9471200 "Ereignis aus"
9481201
949 #: ../../../src/MenuDevConsole.cpp:369
1202 #: ../../../src/MenuDevConsole.cpp:386
9501203 msgid "clears the command history"
9511204 msgstr "löscht die Befehlshistorie"
9521205
953 #: ../../../src/MenuDevConsole.cpp:370
1206 #: ../../../src/MenuDevConsole.cpp:387
9541207 msgid "displays this text"
9551208 msgstr "zeigt diesen Text an"
9561209
957 #: ../../../src/MenuDevConsole.cpp:377
1210 #: ../../../src/MenuDevConsole.cpp:394
9581211 msgid "Toggled the developer hud"
9591212 msgstr "Entwickler-HUD umgeschaltet"
9601213
961 #: ../../../src/MenuDevConsole.cpp:381
1214 #: ../../../src/MenuDevConsole.cpp:398
9621215 msgid "Toggled the hud"
9631216 msgstr "HUD umgeschaltet"
9641217
965 #: ../../../src/MenuDevConsole.cpp:385
1218 #: ../../../src/MenuDevConsole.cpp:402
9661219 msgid "Toggled the FPS counter"
9671220 msgstr "FPS-Anzeige umgeschaltet"
9681221
969 #: ../../../src/MenuDevConsole.cpp:534
1222 #: ../../../src/MenuDevConsole.cpp:552
9701223 msgid "ERROR: Incorrect number of arguments"
9711224 msgstr "FEHLER: Ungültige Anzahl an Argumenten"
9721225
973 #: ../../../src/MenuDevConsole.cpp:536 ../../../src/MenuDevConsole.cpp:564
1226 #: ../../../src/MenuDevConsole.cpp:554 ../../../src/MenuDevConsole.cpp:582
9741227 msgid "HINT:"
9751228 msgstr "TIPP:"
9761229
977 #: ../../../src/MenuDevConsole.cpp:536
1230 #: ../../../src/MenuDevConsole.cpp:554
9781231 msgid "<id>"
979 msgstr "<id>"
980
981 #: ../../../src/MenuDevConsole.cpp:552
1232 msgstr "<ID>"
1233
1234 #: ../../../src/MenuDevConsole.cpp:570
9821235 #, c-format
9831236 msgid "ERROR: '%s' is not a valid event key"
9841237 msgstr "FEHLER: „%s“ ist kein gültiger Ereignisschlüssel"
9851238
986 #: ../../../src/MenuDevConsole.cpp:562
1239 #: ../../../src/MenuDevConsole.cpp:580
9871240 msgid "ERROR: Too few arguments"
9881241 msgstr "FEHLER: zu wenig Argumente"
9891242
990 #: ../../../src/MenuDevConsole.cpp:564
1243 #: ../../../src/MenuDevConsole.cpp:582
9911244 msgid "<key>=<val> <key>=<val> ..."
992 msgstr "<key>=<val> <key>=<val> ..."
993
994 #: ../../../src/MenuDevConsole.cpp:569
1245 msgstr "<Schlüssel>=<Wert> <Schlüssel>=<Wert> ..."
1246
1247 #: ../../../src/MenuDevConsole.cpp:587
9951248 msgid "ERROR: Unknown command"
9961249 msgstr "FEHLER: unbekannter Befehl"
9971250
998 #: ../../../src/MenuDevConsole.cpp:571
1251 #: ../../../src/MenuDevConsole.cpp:589
9991252 msgid "HINT: Type help"
10001253 msgstr "TIPP: Gib „help“ ein"
10011254
1002 #: ../../../src/MenuEnemy.cpp:138
1255 #: ../../../src/MenuEnemy.cpp:162
10031256 #, c-format
10041257 msgid "%s level %d"
10051258 msgstr "%s Stufe %d"
10061259
1007 #: ../../../src/MenuEnemy.cpp:162
1260 #: ../../../src/MenuEnemy.cpp:186
10081261 msgid "Dead"
10091262 msgstr "Tot"
10101263
1011 #: ../../../src/MenuEnemy.cpp:164
1264 #: ../../../src/MenuEnemy.cpp:188
10121265 msgid "Destroyed"
10131266 msgstr "Zerstört"
10141267
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
1268 #: ../../../src/MenuGameOver.cpp:69
1269 msgid "Game Over"
1270 msgstr ""
1271
1272 #: ../../../src/MenuInventory.cpp:178
10361273 #, c-format
10371274 msgid "Lost %d%% of %s."
10381275 msgstr "%d%% an %s verloren."
10391276
1040 #: ../../../src/MenuInventory.cpp:195
1277 #: ../../../src/MenuInventory.cpp:185
10411278 #, c-format
10421279 msgid "Lost %d%% of total XP."
10431280 msgstr "%d%% der gesamten EP verloren."
10441281
1045 #: ../../../src/MenuInventory.cpp:200
1282 #: ../../../src/MenuInventory.cpp:190
10461283 #, c-format
10471284 msgid "Lost %d%% of current level XP."
10481285 msgstr "%d%% EP der aktuellen Stufe verloren."
10491286
1050 #: ../../../src/MenuInventory.cpp:226
1287 #: ../../../src/MenuInventory.cpp:216
10511288 #, c-format
10521289 msgid "Lost %s."
10531290 msgstr "%s verloren."
10541291
1055 #: ../../../src/MenuInventory.cpp:274 ../../../src/MenuStash.cpp:146
1292 #: ../../../src/MenuInventory.cpp:258 ../../../src/MenuStash.cpp:276
10561293 #, c-format
10571294 msgid "%d %s"
10581295 msgstr "%d %s"
10591296
1060 #: ../../../src/MenuInventory.cpp:317
1297 #: ../../../src/MenuInventory.cpp:301
10611298 msgid "Pick up item(s):"
10621299 msgstr "Aufnehmen:"
10631300
1064 #: ../../../src/MenuInventory.cpp:318
1301 #: ../../../src/MenuInventory.cpp:302
10651302 msgid "Use or equip item:"
10661303 msgstr "Ausrüsten:"
10671304
1068 #: ../../../src/MenuInventory.cpp:319
1305 #: ../../../src/MenuInventory.cpp:303
10691306 #, c-format
10701307 msgid "%s modifiers"
10711308 msgstr "Tastenkombinationen mit %s:"
10721309
1073 #: ../../../src/MenuInventory.cpp:320
1310 #: ../../../src/MenuInventory.cpp:304
10741311 msgid "Select a quantity of item:"
10751312 msgstr "Anzahl wählen:"
10761313
1077 #: ../../../src/MenuInventory.cpp:323
1314 #: ../../../src/MenuInventory.cpp:307
10781315 msgid "Stash item stack:"
10791316 msgstr "Stapel einlagern:"
10801317
1081 #: ../../../src/MenuInventory.cpp:325
1318 #: ../../../src/MenuInventory.cpp:309
10821319 msgid "Sell item stack:"
10831320 msgstr "Stapel verkaufen:"
10841321
1085 #: ../../../src/MenuInventory.cpp:592
1322 #: ../../../src/MenuInventory.cpp:576
10861323 msgid "You don't have enough of the required item."
10871324 msgstr "Du hast nicht genug von diesem Gegenstand."
10881325
1089 #: ../../../src/MenuInventory.cpp:599
1326 #: ../../../src/MenuInventory.cpp:588
10901327 msgid "You can't use this item right now."
10911328 msgstr "Du kannst diesen Gegenstand jetzt nicht benutzen."
10921329
1093 #: ../../../src/MenuInventory.cpp:611
1330 #: ../../../src/MenuInventory.cpp:600
10941331 msgid "This item can only be used from the action bar."
10951332 msgstr "Dieser Gegenstand kann nur von der Aktionsleiste benutzt werden."
10961333
1097 #: ../../../src/MenuInventory.cpp:729
1334 #: ../../../src/MenuInventory.cpp:718
10981335 msgid "Inventory is full."
10991336 msgstr "Inventar ist voll."
11001337
1101 #: ../../../src/MenuInventory.cpp:849
1338 #: ../../../src/MenuInventory.cpp:843
11021339 #, c-format
11031340 msgid "Not enough %s."
11041341 msgstr "Nicht genug %s."
11051342
1106 #: ../../../src/MenuInventory.cpp:869 ../../../src/MenuInventory.cpp:876
1343 #: ../../../src/MenuInventory.cpp:863 ../../../src/MenuInventory.cpp:870
11071344 msgid "This item can not be sold."
11081345 msgstr "Dieser Gegenstand kann nicht verkauft werden."
11091346
11151352 msgid "Quests"
11161353 msgstr "Aufgaben"
11171354
1118 #: ../../../src/MenuManager.cpp:286
1355 #: ../../../src/MenuManager.cpp:305
11191356 #, c-format
11201357 msgid "XP: %d/%d"
11211358 msgstr "EP: %d/%d"
11221359
1123 #: ../../../src/MenuManager.cpp:827
1360 #: ../../../src/MenuManager.cpp:875
11241361 msgid "This item can not be dropped."
11251362 msgstr "Dieser Gegenstand kann nicht abgelegt werden."
1363
1364 #: ../../../src/MenuManager.cpp:1501
1365 msgid "Equipped"
1366 msgstr ""
1367
1368 #: ../../../src/MenuMovementType.cpp:87
1369 msgid "Select a Movement Type"
1370 msgstr ""
1371
1372 #: ../../../src/MenuMovementType.cpp:89
1373 msgid "Can be changed later in the Configuration menu."
1374 msgstr ""
1375
1376 #: ../../../src/MenuMovementType.cpp:92 ../../../src/MenuMovementType.cpp:122
1377 msgid "Keyboard"
1378 msgstr ""
1379
1380 #: ../../../src/MenuMovementType.cpp:93 ../../../src/MenuMovementType.cpp:128
1381 msgid "Mouse"
1382 msgstr ""
1383
1384 #: ../../../src/MenuMovementType.cpp:129
1385 msgid "Button"
1386 msgstr ""
11261387
11271388 #: ../../../src/MenuNumPicker.cpp:59
11281389 msgid "Enter amount:"
11291390 msgstr "Anzahl eingeben:"
11301391
1131 #: ../../../src/MenuPowers.cpp:787
1392 #: ../../../src/MenuPowers.cpp:894
11321393 msgid "Passive"
11331394 msgstr "Passiv"
11341395
1135 #: ../../../src/MenuPowers.cpp:792
1396 #: ../../../src/MenuPowers.cpp:901
11361397 #, c-format
11371398 msgid "Costs %d MP"
11381399 msgstr "Kostet %d MP"
11391400
1140 #: ../../../src/MenuPowers.cpp:796
1401 #: ../../../src/MenuPowers.cpp:905
11411402 #, c-format
11421403 msgid "Costs %d HP"
11431404 msgstr "Kostet %d TP"
11441405
1145 #: ../../../src/MenuPowers.cpp:801
1406 #: ../../../src/MenuPowers.cpp:909
11461407 msgid "Cooldown:"
11471408 msgstr "Abklingzeit:"
11481409
1149 #: ../../../src/MenuPowers.cpp:866 ../../../src/MenuPowers.cpp:869
1410 #: ../../../src/MenuPowers.cpp:960 ../../../src/MenuPowers.cpp:963
11501411 msgid "Damage per second"
11511412 msgstr "Schaden je Sekunde"
11521413
1153 #: ../../../src/MenuPowers.cpp:872 ../../../src/MenuPowers.cpp:875
1414 #: ../../../src/MenuPowers.cpp:966 ../../../src/MenuPowers.cpp:969
11541415 msgid "HP per second"
11551416 msgstr "TP je Sekunde"
11561417
1157 #: ../../../src/MenuPowers.cpp:878 ../../../src/MenuPowers.cpp:881
1418 #: ../../../src/MenuPowers.cpp:972 ../../../src/MenuPowers.cpp:975
11581419 msgid "MP per second"
11591420 msgstr "MP je Sekunde"
11601421
1161 #: ../../../src/MenuPowers.cpp:885
1422 #: ../../../src/MenuPowers.cpp:979
11621423 msgid "Immobilize"
11631424 msgstr "Erstarren"
11641425
1165 #: ../../../src/MenuPowers.cpp:893
1426 #: ../../../src/MenuPowers.cpp:987
11661427 msgid "Immunity"
11671428 msgstr "Immunität"
11681429
1169 #: ../../../src/MenuPowers.cpp:896
1430 #: ../../../src/MenuPowers.cpp:990
11701431 msgid "Immunity to damage over time"
11711432 msgstr "Immunität gegen Zeitschaden"
11721433
1173 #: ../../../src/MenuPowers.cpp:899
1434 #: ../../../src/MenuPowers.cpp:993
11741435 msgid "Immunity to slow"
11751436 msgstr "Immunität gegen Verzögerung"
11761437
1177 #: ../../../src/MenuPowers.cpp:902
1438 #: ../../../src/MenuPowers.cpp:996
11781439 msgid "Immunity to stun"
11791440 msgstr "Immunität gegen Schock"
11801441
1181 #: ../../../src/MenuPowers.cpp:905
1442 #: ../../../src/MenuPowers.cpp:999
11821443 msgid "Immunity to HP steal"
11831444 msgstr "Immunität gegen TP-Stehlen"
11841445
1185 #: ../../../src/MenuPowers.cpp:908
1446 #: ../../../src/MenuPowers.cpp:1002
11861447 msgid "Immunity to MP steal"
11871448 msgstr "Immunität gegen MP-Stehlen"
11881449
1189 #: ../../../src/MenuPowers.cpp:911
1450 #: ../../../src/MenuPowers.cpp:1005
11901451 msgid "Immunity to knockback"
11911452 msgstr "Immunität gegen Rückschlag"
11921453
1193 #: ../../../src/MenuPowers.cpp:914
1454 #: ../../../src/MenuPowers.cpp:1008
11941455 msgid "Immunity to damage reflection"
11951456 msgstr "Immunität gegen Reflektionsschaden"
11961457
1197 #: ../../../src/MenuPowers.cpp:917
1458 #: ../../../src/MenuPowers.cpp:1014
11981459 msgid "Stun"
11991460 msgstr "Schock"
12001461
1201 #: ../../../src/MenuPowers.cpp:920
1462 #: ../../../src/MenuPowers.cpp:1017
12021463 msgid "Automatic revive on death"
12031464 msgstr "Automatisch wiederbeleben"
12041465
1205 #: ../../../src/MenuPowers.cpp:923
1466 #: ../../../src/MenuPowers.cpp:1020
12061467 msgid "Convert"
12071468 msgstr "Umwandeln"
12081469
1209 #: ../../../src/MenuPowers.cpp:926
1470 #: ../../../src/MenuPowers.cpp:1023
12101471 msgid "Fear"
12111472 msgstr "Angst"
12121473
1213 #: ../../../src/MenuPowers.cpp:929
1474 #: ../../../src/MenuPowers.cpp:1026
12141475 msgid "Lifespan"
12151476 msgstr "Lebenszeit"
12161477
1217 #: ../../../src/MenuPowers.cpp:953
1478 #: ../../../src/MenuPowers.cpp:1050
12181479 msgid "Magical Shield"
12191480 msgstr "Magischer Schild"
12201481
1221 #: ../../../src/MenuPowers.cpp:982
1482 #: ../../../src/MenuPowers.cpp:1079
12221483 msgid "Healing"
12231484 msgstr "Heilung"
12241485
1225 #: ../../../src/MenuPowers.cpp:985
1486 #: ../../../src/MenuPowers.cpp:1082
12261487 msgid "Knockback"
12271488 msgstr "Rückschlag"
12281489
1229 #: ../../../src/MenuPowers.cpp:1010
1490 #: ../../../src/MenuPowers.cpp:1106
12301491 #, c-format
12311492 msgid "%d%% chance"
12321493 msgstr "%d%% Wahrscheinlichkeit"
12331494
1234 #: ../../../src/MenuPowers.cpp:1062
1495 #: ../../../src/MenuPowers.cpp:1158
12351496 msgid "Base Accuracy"
1236 msgstr "Basis-Genauigkeit:"
1237
1238 #: ../../../src/MenuPowers.cpp:1082
1497 msgstr "Basis-Genauigkeit"
1498
1499 #: ../../../src/MenuPowers.cpp:1178
12391500 msgid "Base Critical Chance"
12401501 msgstr "Basis-Chance für krit. Treffer"
12411502
1242 #: ../../../src/MenuPowers.cpp:1090
1503 #: ../../../src/MenuPowers.cpp:1186
12431504 msgid "Ignores Absorbtion"
12441505 msgstr "Ignoriert Rüstung"
12451506
1246 #: ../../../src/MenuPowers.cpp:1095
1507 #: ../../../src/MenuPowers.cpp:1191
12471508 msgid "Ignores Avoidance"
12481509 msgstr "Ignoriert Ausweichen"
12491510
1250 #: ../../../src/MenuPowers.cpp:1100
1511 #: ../../../src/MenuPowers.cpp:1196
12511512 #, c-format
12521513 msgid "%d%% Chance to crit slowed targets"
12531514 msgstr "%d%% Wahrsch. für krit. verlangsamte Ziele"
12541515
1255 #: ../../../src/MenuPowers.cpp:1105
1516 #: ../../../src/MenuPowers.cpp:1201
12561517 #, c-format
12571518 msgid "Elemental Damage (%s)"
12581519 msgstr "Elementarschaden (%s)"
12591520
1260 #: ../../../src/MenuPowers.cpp:1114
1521 #: ../../../src/MenuPowers.cpp:1210
12611522 #, c-format
12621523 msgid "Requires a %s"
12631524 msgstr "Benötigt: %s"
12641525
1265 #: ../../../src/MenuPowers.cpp:1151 ../../../src/MenuPowers.cpp:1154
1526 #: ../../../src/MenuPowers.cpp:1248 ../../../src/MenuPowers.cpp:1251
12661527 #, c-format
12671528 msgid "Requires Power: %s"
12681529 msgstr "Benötigt Fähigkeit: %s"
12691530
1270 #: ../../../src/MenuPowers.cpp:1163
1531 #: ../../../src/MenuPowers.cpp:1260
12711532 msgid "Click to Unlock (uses 1 Skill Point)"
12721533 msgstr "Klicken zum Freischalten (benutzt 1 Fertigkeitspunkt)"
12731534
1274 #: ../../../src/MenuPowers.cpp:1167 ../../../src/MenuPowers.cpp:1169
1535 #: ../../../src/MenuPowers.cpp:1264 ../../../src/MenuPowers.cpp:1266
12751536 msgid "Requires 1 Skill Point"
12761537 msgstr "Benötigt 1 Fertigkeitspunkt"
12771538
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
1539 #: ../../../src/MenuPowers.cpp:1466
1540 #, c-format
1541 msgid "Available skill points: %d"
1542 msgstr ""
1543
1544 #: ../../../src/MenuPowers.cpp:1498
12891545 msgid "Next Level:"
12901546 msgstr "Nächste Stufe:"
12911547
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
1548 #: ../../../src/MenuStash.cpp:80 ../../../src/MenuStash.cpp:161
1549 msgid "Stash"
1550 msgstr "Lagerraum"
1551
1552 #: ../../../src/MenuStash.cpp:174 ../../../src/MenuStash.cpp:188
1553 msgid "Private"
1554 msgstr "Privat"
1555
1556 #: ../../../src/MenuStash.cpp:175
1557 msgid "Shared"
1558 msgstr "Gemeinsam"
1559
1560 #: ../../../src/MenuStash.cpp:340
1561 msgid "This item can not be stored in the stash."
1562 msgstr "Dieser Gegenstand kann nicht eingelagert werden."
1563
1564 #: ../../../src/MenuStash.cpp:345
1565 msgid "This item can not be stored in the private stash."
1566 msgstr "Dieser Gegenstand kann nicht im privaten Lager eingelagert werden."
1567
1568 #: ../../../src/MenuStash.cpp:350
1569 msgid "This item can not be stored in the shared stash."
1570 msgstr ""
1571 "Dieser Gegenstand kann nicht im Gemeinschaftslager eingelagert werden."
1572
1573 #: ../../../src/MenuStash.cpp:360
13011574 msgid "Stash is full."
13021575 msgstr "Lagerraum ist voll."
13031576
1304 #: ../../../src/MenuTalker.cpp:454
1577 #: ../../../src/MenuStash.cpp:414
1578 #, c-format
1579 msgid "Can not store item in stash: %s"
1580 msgstr "Gegenstand kann nicht eingelagert werden: %s"
1581
1582 #: ../../../src/MenuTalker.cpp:448
1583 #, c-format
1584 msgid "<dialog node %d>"
1585 msgstr "<dialog node %d>"
1586
1587 #: ../../../src/MenuTalker.cpp:456
13051588 msgid "Trade"
13061589 msgstr "Handeln"
13071590
1308 #: ../../../src/MenuVendor.cpp:58
1591 #: ../../../src/MenuVendor.cpp:60
13091592 msgid "Buyback"
13101593 msgstr "Rückkauf"
13111594
1312 #: ../../../src/MenuVendor.cpp:279
1595 #: ../../../src/MenuVendor.cpp:283
13131596 msgid "Vendor"
13141597 msgstr "Verkäufer"
13151598
1316 #: ../../../src/PowerManager.cpp:1136
1599 #: ../../../src/PowerManager.cpp:1204
13171600 #, c-format
13181601 msgid "+%d Shield"
13191602 msgstr "+%d Schild"
13201603
1321 #: ../../../src/PowerManager.cpp:1392
1604 #: ../../../src/PowerManager.cpp:1461
13221605 msgid "You are already transformed, untransform first."
13231606 msgstr "Du bist bereits verwandelt, beende die Verwandlung zunächst."
13241607
1325 #: ../../../src/PowerManager.cpp:1404
1608 #: ../../../src/PowerManager.cpp:1473
13261609 msgid "Could not untransform at this position."
13271610 msgstr "An diesem Ort ist eine Zurückverwandlung nicht möglich."
13281611
13301613 msgid "Completed Quests"
13311614 msgstr "Erledigte Aufgaben"
13321615
1333 #: ../../../src/SaveLoad.cpp:243 ../../../src/SaveLoad.cpp:244
1616 #: ../../../src/SaveLoad.cpp:250 ../../../src/SaveLoad.cpp:251
13341617 msgid "Game saved."
13351618 msgstr "Spiel gespeichert."
13361619
1337 #: ../../../src/SDLInputState.cpp:582
1620 #: ../../../src/SDLInputState.cpp:645
1621 msgid "BkSp"
1622 msgstr "Rück"
1623
1624 #: ../../../src/SDLInputState.cpp:646
1625 msgid "Caps"
1626 msgstr "Festst"
1627
1628 #: ../../../src/SDLInputState.cpp:647
1629 msgid "Del"
1630 msgstr "Entf"
1631
1632 #: ../../../src/SDLInputState.cpp:649 ../../../src/SDLInputState.cpp:679
1633 msgid "End"
1634 msgstr "Ende"
1635
1636 #: ../../../src/SDLInputState.cpp:650
1637 msgid "Esc"
1638 msgstr "Esc"
1639
1640 #: ../../../src/SDLInputState.cpp:651 ../../../src/SDLInputState.cpp:681
1641 msgid "Home"
1642 msgstr "Pos1"
1643
1644 #: ../../../src/SDLInputState.cpp:652
1645 msgid "Ins"
1646 msgstr "Einfg"
1647
1648 #: ../../../src/SDLInputState.cpp:653
1649 msgid "LAlt"
1650 msgstr "LAlt"
1651
1652 #: ../../../src/SDLInputState.cpp:654
1653 msgid "LCtrl"
1654 msgstr "LStrg"
1655
1656 #: ../../../src/SDLInputState.cpp:656
1657 msgid "LShft"
1658 msgstr "LUmsch"
1659
1660 #: ../../../src/SDLInputState.cpp:657
1661 msgid "Num"
1662 msgstr "Num"
1663
1664 #: ../../../src/SDLInputState.cpp:658
1665 msgid "PgDn"
1666 msgstr "Bild↓"
1667
1668 #: ../../../src/SDLInputState.cpp:659
1669 msgid "PgUp"
1670 msgstr "Bild↑"
1671
1672 #: ../../../src/SDLInputState.cpp:660 ../../../src/SDLInputState.cpp:690
1673 msgid "Pause"
1674 msgstr "Pause"
1675
1676 #: ../../../src/SDLInputState.cpp:661
1677 msgid "Print"
1678 msgstr "Druck"
1679
1680 #: ../../../src/SDLInputState.cpp:662
1681 msgid "RAlt"
1682 msgstr "RAlt"
1683
1684 #: ../../../src/SDLInputState.cpp:663
1685 msgid "RCtrl"
1686 msgstr "RStrg"
1687
1688 #: ../../../src/SDLInputState.cpp:664
1689 msgid "Ret"
1690 msgstr "Enter"
1691
1692 #: ../../../src/SDLInputState.cpp:666
1693 msgid "RShft"
1694 msgstr "RUmsch"
1695
1696 #: ../../../src/SDLInputState.cpp:667
1697 msgid "SLock"
1698 msgstr "Rollen"
1699
1700 #: ../../../src/SDLInputState.cpp:668
1701 msgid "Spc"
1702 msgstr "Leer"
1703
1704 #: ../../../src/SDLInputState.cpp:669 ../../../src/SDLInputState.cpp:699
1705 msgid "Tab"
1706 msgstr "Tab"
1707
1708 #: ../../../src/SDLInputState.cpp:675
13381709 msgid "Backspace"
13391710 msgstr "Rücktaste"
13401711
1341 #: ../../../src/SDLInputState.cpp:583
1712 #: ../../../src/SDLInputState.cpp:676
13421713 msgid "CapsLock"
13431714 msgstr "Feststelltaste"
13441715
1345 #: ../../../src/SDLInputState.cpp:586
1346 msgid "End"
1347 msgstr "Ende"
1348
1349 #: ../../../src/SDLInputState.cpp:587
1716 #: ../../../src/SDLInputState.cpp:680
13501717 msgid "Escape"
13511718 msgstr "Escape"
13521719
1353 #: ../../../src/SDLInputState.cpp:588
1354 msgid "Home"
1355 msgstr "Pos1"
1356
1357 #: ../../../src/SDLInputState.cpp:589
1720 #: ../../../src/SDLInputState.cpp:682
13581721 msgid "Insert"
13591722 msgstr "Einfügen"
13601723
1361 #: ../../../src/SDLInputState.cpp:590
1724 #: ../../../src/SDLInputState.cpp:683
13621725 msgid "Left Alt"
13631726 msgstr "Alt links"
13641727
1365 #: ../../../src/SDLInputState.cpp:591
1728 #: ../../../src/SDLInputState.cpp:684
13661729 msgid "Left Ctrl"
13671730 msgstr "Strg links"
13681731
1369 #: ../../../src/SDLInputState.cpp:593
1732 #: ../../../src/SDLInputState.cpp:686
13701733 msgid "Left Shift"
13711734 msgstr "Umschalt links"
13721735
1373 #: ../../../src/SDLInputState.cpp:594
1736 #: ../../../src/SDLInputState.cpp:687
13741737 msgid "NumLock"
13751738 msgstr "Numlock"
13761739
1377 #: ../../../src/SDLInputState.cpp:595
1740 #: ../../../src/SDLInputState.cpp:688
13781741 msgid "PageDown"
13791742 msgstr "Bild ab"
13801743
1381 #: ../../../src/SDLInputState.cpp:596
1744 #: ../../../src/SDLInputState.cpp:689
13821745 msgid "PageUp"
13831746 msgstr "Bild auf"
13841747
1385 #: ../../../src/SDLInputState.cpp:597
1386 msgid "Pause"
1387 msgstr "Pause"
1388
1389 #: ../../../src/SDLInputState.cpp:598
1748 #: ../../../src/SDLInputState.cpp:691
13901749 msgid "PrintScreen"
13911750 msgstr "Drucken"
13921751
1393 #: ../../../src/SDLInputState.cpp:599
1752 #: ../../../src/SDLInputState.cpp:692
13941753 msgid "Right Alt"
13951754 msgstr "Alt rechts"
13961755
1397 #: ../../../src/SDLInputState.cpp:600
1756 #: ../../../src/SDLInputState.cpp:693
13981757 msgid "Right Ctrl"
13991758 msgstr "Strg rechts"
14001759
1401 #: ../../../src/SDLInputState.cpp:601
1760 #: ../../../src/SDLInputState.cpp:694
14021761 msgid "Return"
14031762 msgstr "Eingabe"
14041763
1405 #: ../../../src/SDLInputState.cpp:603
1764 #: ../../../src/SDLInputState.cpp:696
14061765 msgid "Right Shift"
14071766 msgstr "Umschalt rechts"
14081767
1409 #: ../../../src/SDLInputState.cpp:604
1768 #: ../../../src/SDLInputState.cpp:697
14101769 msgid "ScrollLock"
14111770 msgstr "Rollen"
14121771
1413 #: ../../../src/SDLInputState.cpp:605
1772 #: ../../../src/SDLInputState.cpp:698
14141773 msgid "Space"
14151774 msgstr "Leertaste"
14161775
1417 #: ../../../src/SDLInputState.cpp:606
1418 msgid "Tab"
1419 msgstr "Tab"
1420
1421 #: ../../../src/SDLInputState.cpp:620
1776 #: ../../../src/SDLInputState.cpp:712
1777 #, c-format
1778 msgid "M%d"
1779 msgstr "M%d"
1780
1781 #: ../../../src/SDLInputState.cpp:718
14221782 #, c-format
14231783 msgid "Mouse %d"
14241784 msgstr "Maus %d"
14251785
1426 #: ../../../src/SDLInputState.cpp:628
1786 #: ../../../src/SDLInputState.cpp:728
1787 #, c-format
1788 msgid "JX%d-"
1789 msgstr "JX%d-"
1790
1791 #: ../../../src/SDLInputState.cpp:730
14271792 #, c-format
14281793 msgid "Axis %d -"
14291794 msgstr "Achse %d -"
14301795
1431 #: ../../../src/SDLInputState.cpp:630
1796 #: ../../../src/SDLInputState.cpp:734
1797 #, c-format
1798 msgid "JX%d+"
1799 msgstr "JX%d+"
1800
1801 #: ../../../src/SDLInputState.cpp:736
14321802 #, c-format
14331803 msgid "Axis %d +"
14341804 msgstr "Achse %d +"
14351805
1436 #: ../../../src/SDLInputState.cpp:633
1806 #: ../../../src/SDLInputState.cpp:741
1807 #, c-format
1808 msgid "JB%d"
1809 msgstr "JB%d"
1810
1811 #: ../../../src/SDLInputState.cpp:743
14371812 #, c-format
14381813 msgid "Button %d"
14391814 msgstr "Taste %d"
14401815
1441 #: ../../../src/SDLInputState.cpp:637
1442 msgid "(none)"
1443 msgstr "(keine)"
1444
1445 #: ../../../src/SDLInputState.cpp:677
1816 #: ../../../src/SDLInputState.cpp:789
14461817 msgid "Touch control D-Pad"
14471818 msgstr "Touchscreen Steuerkreuz"
14481819
1449 #: ../../../src/SDLInputState.cpp:701
1820 #: ../../../src/SDLInputState.cpp:812
14501821 msgid "Touch control buttons"
14511822 msgstr "Touchscreen Tasten"
14521823
1453 #: ../../../src/SDLInputState.cpp:716
1824 #: ../../../src/SDLInputState.cpp:826
14541825 msgid "Tap"
14551826 msgstr "Antippen"
14561827
1457 #: ../../../src/SDLInputState.cpp:760 ../../../src/SDLInputState.cpp:764
1458 #: ../../../src/SDLInputState.cpp:768
1828 #: ../../../src/SDLInputState.cpp:878 ../../../src/SDLInputState.cpp:880
1829 #, c-format
1830 msgid "Can not bind: %s"
1831 msgstr "Kann nicht belegt werden: %s"
1832
1833 #: ../../../src/SDLInputState.cpp:892 ../../../src/SDLInputState.cpp:896
1834 #: ../../../src/SDLInputState.cpp:900
14591835 #, c-format
14601836 msgid "'%s' is no longer bound to:"
14611837 msgstr "„%s“ ist nicht mehr zugewiesen auf:"
15441920
15451921 #: ../../../src/Stats.cpp:84
15461922 msgid "Increases the XP gained per kill."
1547 msgstr "Erhöht die EP für getötete Gegner"
1923 msgstr "Erhöht die EP für getötete Gegner."
15481924
15491925 #: ../../../src/Stats.cpp:88
15501926 #, c-format
15541930 #: ../../../src/Stats.cpp:89
15551931 #, c-format
15561932 msgid "Increases the %s found per drop."
1557 msgstr "Erhöht die Chance auf %s"
1933 msgstr "Erhöht die Chance auf %s."
15581934
15591935 #: ../../../src/Stats.cpp:93
15601936 msgid "Item Find Chance"
16211997 msgid "Base MP"
16221998 msgstr "Basis-MP"
16231999
1624 #: ../../../src/Utils.cpp:346
2000 #: ../../../src/Utils.cpp:365
16252001 msgid "k"
16262002 msgstr "k"
16272003
1628 #: ../../../src/Utils.cpp:580
2004 #: ../../../src/Utils.cpp:635
16292005 #, c-format
16302006 msgid "%s second"
16312007 msgstr "%s Sekunde"
16322008
1633 #: ../../../src/Utils.cpp:583
2009 #: ../../../src/Utils.cpp:638
16342010 #, c-format
16352011 msgid "%s seconds"
16362012 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-07-02 13:26-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:1220
127 #: ../../../src/StatBlock.cpp:926 ../../../src/StatBlock.cpp:932
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:937
133 #: ../../../src/StatBlock.cpp:943
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:704
175 msgid "Entering game world..."
176 msgstr "Είσοδος στο παιχνίδι..."
177
178 #: ../../../src/GameStateLoad.cpp:707
179 msgid "Loading saved game..."
180 msgstr "Φόρτωση αποθηκευμένου παιχνιδιού..."
181
182 #: ../../../src/GameStateLoad.cpp:740
183 msgid "Invalid save"
184 msgstr ""
185
186 #: ../../../src/GameStateLoad.cpp:764 ../../../src/ItemManager.cpp:745
187 #: ../../../src/MenuPowers.cpp:882 ../../../src/MenuPowers.cpp:1241
188 #: ../../../src/MenuPowers.cpp:1653
189 #, c-format
190 msgid "Level %d"
191 msgstr "Επίπεδο %d"
192
193 #: ../../../src/GameStateNew.cpp:66 ../../../src/InputState.cpp:416
194 #: ../../../src/MenuConfig.cpp:254
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:670
248 #: ../../../src/SDLInputState.cpp:700
249 msgid "Up"
250 msgstr "Πάνω"
251
252 #: ../../../src/InputState.cpp:419 ../../../src/MenuMovementType.cpp:125
253 #: ../../../src/MenuMovementType.cpp:134 ../../../src/SDLInputState.cpp:648
254 #: ../../../src/SDLInputState.cpp:678
255 msgid "Down"
256 msgstr "Κάτω"
257
258 #: ../../../src/InputState.cpp:420 ../../../src/MenuMovementType.cpp:124
259 #: ../../../src/MenuMovementType.cpp:133 ../../../src/SDLInputState.cpp:655
260 #: ../../../src/SDLInputState.cpp:685
261 msgid "Left"
262 msgstr "Αριστερά"
263
264 #: ../../../src/InputState.cpp:421 ../../../src/MenuMovementType.cpp:126
265 #: ../../../src/MenuMovementType.cpp:135 ../../../src/SDLInputState.cpp:665
266 #: ../../../src/SDLInputState.cpp:695
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:159
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:677
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:981
407 #, c-format
408 msgid "%d%% Speed"
409 msgstr "%d%%Ταχύτητα"
410
411 #: ../../../src/ItemManager.cpp:650 ../../../src/MenuPowers.cpp:984
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:953
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:1228
447 #: ../../../src/MenuPowers.cpp:1231
448 #, c-format
449 msgid "Requires Level %d"
450 msgstr "Χρειάζεται Επίπεδο %d"
451
452 #: ../../../src/ItemManager.cpp:836 ../../../src/MenuPowers.cpp:1220
453 #: ../../../src/MenuPowers.cpp:1222
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:898
484 msgid "Set:"
485 msgstr ""
486
487 #: ../../../src/ItemManager.cpp:905
488 #, c-format
489 msgid "%d items:"
490 msgstr ""
491
492 #: ../../../src/ItemManager.cpp:920
493 #, c-format
494 msgid "Press [%s] to read"
495 msgstr ""
496
497 #: ../../../src/ItemManager.cpp:923
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:1256
574 msgid "Clear"
575 msgstr ""
576
577 #: ../../../src/MenuConfig.cpp:122 ../../../src/MenuConfig.cpp:1254
578 msgid "Assign:"
579 msgstr ""
580
581 #: ../../../src/MenuConfig.cpp:123 ../../../src/MenuConfig.cpp:253
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:252 ../../../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:256 ../../../src/MenuGameOver.cpp:72
594 msgid "Continue"
595 msgstr ""
596
597 #: ../../../src/MenuConfig.cpp:258
598 msgid "Save Game"
599 msgstr ""
600
601 #: ../../../src/MenuConfig.cpp:301 ../../../src/MenuConfig.cpp:352
602 msgid "Default"
603 msgstr ""
604
605 #: ../../../src/MenuConfig.cpp:301
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:302
612 msgid "Show all"
613 msgstr ""
614
615 #: ../../../src/MenuConfig.cpp:302
616 msgid ""
617 "Always show loot tooltips. Temporarily hide all loot tooltips with 'Alt'."
618 msgstr ""
619
620 #: ../../../src/MenuConfig.cpp:303 ../../../src/MenuConfig.cpp:308
621 msgid "Hidden"
622 msgstr ""
623
624 #: ../../../src/MenuConfig.cpp:303
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:306
631 msgid "Visible"
632 msgstr ""
633
634 #: ../../../src/MenuConfig.cpp:307
635 msgid "Visible (2x zoom)"
636 msgstr ""
637
638 #: ../../../src/MenuConfig.cpp:311
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:312
645 msgid "- Display a message"
646 msgstr ""
647
648 #: ../../../src/MenuConfig.cpp:313
649 msgid "- Play a sound"
650 msgstr ""
651
652 #: ../../../src/MenuConfig.cpp:314
653 msgid "- Change the cursor"
654 msgstr ""
655
656 #: ../../../src/MenuConfig.cpp:316
657 msgid "Disabled"
658 msgstr ""
659
660 #: ../../../src/MenuConfig.cpp:317
661 msgid "All"
662 msgstr ""
663
664 #: ../../../src/MenuConfig.cpp:318
665 msgid "Message & Cursor"
666 msgstr ""
667
668 #: ../../../src/MenuConfig.cpp:319
669 msgid "Message & Sound"
670 msgstr ""
671
672 #: ../../../src/MenuConfig.cpp:320
673 msgid "Sound & Cursor"
674 msgstr ""
675
676 #: ../../../src/MenuConfig.cpp:321
677 msgid "Message"
678 msgstr ""
679
680 #: ../../../src/MenuConfig.cpp:322
681 msgid "Cursor"
682 msgstr ""
683
684 #: ../../../src/MenuConfig.cpp:323
685 msgid "Sound"
686 msgstr ""
687
688 #: ../../../src/MenuConfig.cpp:329
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:347
695 msgid "The maximum frame rate that the game will be allowed to run at."
696 msgstr ""
697
698 #: ../../../src/MenuConfig.cpp:351
699 msgid ""
700 "The render size refers to the height in pixels of the surface used to draw "
701 "the game. Mods define the allowed render sizes, but this option allows "
702 "overriding the maximum size."
703 msgstr ""
704
705 #: ../../../src/MenuConfig.cpp:374 ../../../src/MenuConfig.cpp:1679
706 #: ../../../src/MenuGameOver.cpp:116
707 msgid "Exit"
708 msgstr "Έξοδος"
709
710 #: ../../../src/MenuConfig.cpp:375
711 msgid "Video"
712 msgstr "Εικόνα"
713
714 #: ../../../src/MenuConfig.cpp:376
153715 msgid "Audio"
154716 msgstr "Ήχος"
155717
156 #: ../../../src/GameStateConfigBase.cpp:161
157 #: ../../../src/GameStateConfigDesktop.cpp:131
718 #: ../../../src/MenuConfig.cpp:377
158719 msgid "Interface"
159720 msgstr "Περιβάλλον"
160721
161 #: ../../../src/GameStateConfigBase.cpp:162
162 #: ../../../src/GameStateConfigDesktop.cpp:134
722 #: ../../../src/MenuConfig.cpp:378
723 msgid "Input"
724 msgstr "Εισαγωγή"
725
726 #: ../../../src/MenuConfig.cpp:379
727 msgid "Keybindings"
728 msgstr "Πλήκτρα"
729
730 #: ../../../src/MenuConfig.cpp:380
163731 msgid "Mods"
164732 msgstr "Πρόσθετα"
165733
166 #: ../../../src/GameStateConfigBase.cpp:249 ../../../src/MenuExit.cpp:72
734 #: ../../../src/MenuConfig.cpp:392
735 msgid "Paused"
736 msgstr ""
737
738 #: ../../../src/MenuConfig.cpp:395
739 msgid "Time Played"
740 msgstr ""
741
742 #: ../../../src/MenuConfig.cpp:401
743 msgid "Renderer"
744 msgstr ""
745
746 #: ../../../src/MenuConfig.cpp:402
747 msgid "Full Screen Mode"
748 msgstr "Λειτουργία πλήρους οθόνης"
749
750 #: ../../../src/MenuConfig.cpp:403
751 msgid "Hardware surfaces"
752 msgstr "Χρήση κάρτας γραφικών για επιφάνειες"
753
754 #: ../../../src/MenuConfig.cpp:404
755 msgid "V-Sync"
756 msgstr ""
757
758 #: ../../../src/MenuConfig.cpp:405
759 msgid "Texture Filtering"
760 msgstr ""
761
762 #: ../../../src/MenuConfig.cpp:406
763 msgid "DPI scaling"
764 msgstr ""
765
766 #: ../../../src/MenuConfig.cpp:407
767 msgid "Parallax Layers"
768 msgstr ""
769
770 #: ../../../src/MenuConfig.cpp:408
771 msgid "Allow changing gamma"
772 msgstr "Επιτρέπεται η αλλαγή Φωτεινότητας"
773
774 #: ../../../src/MenuConfig.cpp:409
775 msgid "Gamma"
776 msgstr "Φωτεινότητα"
777
778 #: ../../../src/MenuConfig.cpp:410
779 msgid "Maximum Render Size"
780 msgstr ""
781
782 #: ../../../src/MenuConfig.cpp:411
783 msgid "Frame Limit"
784 msgstr ""
785
786 #: ../../../src/MenuConfig.cpp:413
787 msgid "Sound Volume"
788 msgstr "Ένταση Ήχου"
789
790 #: ../../../src/MenuConfig.cpp:414
167791 msgid "Music Volume"
168792 msgstr "Ένταση Μουσικής"
169793
170 #: ../../../src/GameStateConfigBase.cpp:253 ../../../src/MenuExit.cpp:77
171 msgid "Sound Volume"
172 msgstr "Ένταση Ήχου"
173
174 #: ../../../src/GameStateConfigBase.cpp:257
794 #: ../../../src/MenuConfig.cpp:416
175795 msgid "Language"
176796 msgstr "Γλώσσα"
177797
178 #: ../../../src/GameStateConfigBase.cpp:266
798 #: ../../../src/MenuConfig.cpp:417
179799 msgid "Show FPS"
180800 msgstr "Εμφάνιση καρέ ανά δευτερόλεπτο"
181801
182 #: ../../../src/GameStateConfigBase.cpp:270
802 #: ../../../src/MenuConfig.cpp:418
803 msgid "Hardware mouse cursor"
804 msgstr ""
805
806 #: ../../../src/MenuConfig.cpp:419
183807 msgid "Colorblind Mode"
184808 msgstr "Ρύθμιση Δυσχρωματοψίας"
185809
186 #: ../../../src/GameStateConfigBase.cpp:274
187 msgid "Hardware mouse cursor"
188 msgstr ""
189
190 #: ../../../src/GameStateConfigBase.cpp:278
810 #: ../../../src/MenuConfig.cpp:420
191811 msgid "Developer Mode"
192812 msgstr ""
193813
194 #: ../../../src/GameStateConfigBase.cpp:282
814 #: ../../../src/MenuConfig.cpp:421
195815 msgid "Subtitles"
196816 msgstr "Υπότιτλοι"
197817
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
818 #: ../../../src/MenuConfig.cpp:422
819 msgid "Loot tooltip visibility"
820 msgstr ""
821
822 #: ../../../src/MenuConfig.cpp:423
823 msgid "Mini-map mode"
824 msgstr ""
825
826 #: ../../../src/MenuConfig.cpp:424
827 msgid "Always show stat bar labels"
828 msgstr ""
829
830 #: ../../../src/MenuConfig.cpp:425
831 msgid "Allow stat bar auto-hiding"
832 msgstr ""
833
834 #: ../../../src/MenuConfig.cpp:426
835 msgid "Show combat text"
836 msgstr "Προβολή κειμένου μάχης"
837
838 #: ../../../src/MenuConfig.cpp:427
839 msgid "Automatically equip items"
840 msgstr ""
841
842 #: ../../../src/MenuConfig.cpp:428
843 msgid "Show hidden entity markers"
844 msgstr ""
845
846 #: ../../../src/MenuConfig.cpp:429
847 msgid "Low health notification"
848 msgstr ""
849
850 #: ../../../src/MenuConfig.cpp:430
851 msgid "Low health threshold"
852 msgstr ""
853
854 #: ../../../src/MenuConfig.cpp:431
855 msgid "Show item comparison tooltips"
856 msgstr ""
857
858 #: ../../../src/MenuConfig.cpp:434 ../../../src/MenuMovementType.cpp:94
859 #: ../../../src/MenuMovementType.cpp:131
860 msgid "Joystick"
861 msgstr "Χειριστήριο"
862
863 #: ../../../src/MenuConfig.cpp:435
864 msgid "Move hero using mouse"
865 msgstr "Κίνηση ήρωα με ποντίκι"
866
867 #: ../../../src/MenuConfig.cpp:436
868 msgid "Mouse aim"
869 msgstr "Σκόπευση με το ποντίκι"
870
871 #: ../../../src/MenuConfig.cpp:437
872 msgid "Do not use mouse"
873 msgstr "Απενεργοποίηση του ποντικιού"
874
875 #: ../../../src/MenuConfig.cpp:438
876 msgid "Swap mouse movement button"
877 msgstr ""
878
879 #: ../../../src/MenuConfig.cpp:439
880 msgid "Attack with mouse movement"
881 msgstr ""
882
883 #: ../../../src/MenuConfig.cpp:440
884 msgid "Joystick Deadzone"
885 msgstr "Νεκρή Ζώνη Χειριστηρίου"
886
887 #: ../../../src/MenuConfig.cpp:441
888 msgid "Touch Controls"
889 msgstr ""
890
891 #: ../../../src/MenuConfig.cpp:442
892 msgid "Touch Gamepad Scaling"
893 msgstr ""
894
895 #: ../../../src/MenuConfig.cpp:452
896 #, c-format
897 msgid "Primary binding: %s"
898 msgstr ""
899
900 #: ../../../src/MenuConfig.cpp:453
901 #, c-format
902 msgid "Alternate binding: %s"
903 msgstr ""
904
905 #: ../../../src/MenuConfig.cpp:454
906 #, c-format
907 msgid "Joystick binding: %s"
908 msgstr ""
909
910 #: ../../../src/MenuConfig.cpp:556
253911 msgid ""
254912 "Will try to store surfaces in video memory versus system memory. The effect "
255913 "this has on performance depends on the renderer."
256914 msgstr ""
257915
258 #: ../../../src/GameStateConfigDesktop.cpp:189
916 #: ../../../src/MenuConfig.cpp:557
259917 msgid ""
260918 "Prevents screen tearing. Disable if you experience \"stuttering\" in "
261919 "windowed mode or input lag."
262920 msgstr ""
263921
264 #: ../../../src/GameStateConfigDesktop.cpp:190
922 #: ../../../src/MenuConfig.cpp:558
265923 msgid ""
266924 "When enabled, this uses the screen DPI in addition to the window dimensions "
267925 "to scale the rendering resolution. Otherwise, only the window dimensions are"
268926 " used."
269927 msgstr ""
270928
271 #: ../../../src/GameStateConfigDesktop.cpp:191
929 #: ../../../src/MenuConfig.cpp:559
272930 msgid ""
273931 "This enables parallax (non-tile) layers. Disabling this setting can improve "
274932 "performance in some cases."
275933 msgstr ""
276934
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
935 #: ../../../src/MenuConfig.cpp:560
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
941 #: ../../../src/MenuConfig.cpp:561
942 msgid ""
943 "Provides additional text for information that is primarily conveyed through "
944 "color."
945 msgstr ""
946
947 #: ../../../src/MenuConfig.cpp:562
948 msgid ""
949 "Some mods will automatically hide the stat bars when they are inactive. "
950 "Disabling this option will keep them displayed at all times."
951 msgstr ""
952
953 #: ../../../src/MenuConfig.cpp:563
954 msgid ""
955 "When enabled, empty equipment slots will be filled with applicable items "
956 "when they are obtained."
957 msgstr ""
958
959 #: ../../../src/MenuConfig.cpp:564
960 msgid ""
961 "Shows a marker above enemies, allies, and the player when they are obscured "
962 "by tall objects."
963 msgstr ""
964
965 #: ../../../src/MenuConfig.cpp:565
966 msgid ""
967 "When enabled, tooltips for equipped items of the same type are shown next to"
968 " standard item tooltips."
969 msgstr ""
970
971 #: ../../../src/MenuConfig.cpp:566
972 msgid ""
973 "This allows the game to be controlled entirely with the keyboard (or "
974 "joystick)."
975 msgstr ""
976
977 #: ../../../src/MenuConfig.cpp:567
978 msgid ""
979 "When 'Move hero using mouse' is enabled, this setting controls if 'Main1' or"
980 " 'Main2' is used to move the hero. If enabled, 'Main2' will move the hero "
981 "instead of 'Main1'."
982 msgstr ""
983
984 #: ../../../src/MenuConfig.cpp:568
985 msgid ""
986 "When 'Move hero using mouse' is enabled, this setting controls if the Power "
987 "assigned to the movement button can be used by targeting an enemy. If this "
988 "setting is disabled, it is required to use 'Shift' to access the Power "
989 "assigned to the movement button."
990 msgstr ""
991
992 #: ../../../src/MenuConfig.cpp:569
993 msgid ""
994 "The player's attacks will be aimed in the direction of the mouse cursor when"
995 " this is enabled."
996 msgstr ""
997
998 #: ../../../src/MenuConfig.cpp:570
999 msgid ""
1000 "When enabled, a virtual gamepad will be added in-game. Other interactions, "
1001 "such as drag-and-drop behavior, are also altered to better suit touch input."
1002 msgstr ""
1003
1004 #: ../../../src/MenuConfig.cpp:621
1005 msgid "Active Mods"
1006 msgstr "Ενεργά Πρόσθετα"
1007
1008 #: ../../../src/MenuConfig.cpp:630
1009 msgid "Available Mods"
1010 msgstr "Διαθέσιμα Πρόσθετα"
1011
1012 #: ../../../src/MenuConfig.cpp:649
1013 msgid "<< Disable"
1014 msgstr "<< Απενεργοποίηση"
1015
1016 #: ../../../src/MenuConfig.cpp:655
1017 msgid "Enable >>"
1018 msgstr "Ενεργοποίηση >>"
1019
1020 #: ../../../src/MenuConfig.cpp:1536
1021 msgid "Version:"
1022 msgstr ""
1023
1024 #: ../../../src/MenuConfig.cpp:1541
1025 msgid "Game:"
1026 msgstr "Παιχνίδι:"
1027
1028 #: ../../../src/MenuConfig.cpp:1546
1029 msgid "Engine version:"
1030 msgstr ""
1031
1032 #: ../../../src/MenuConfig.cpp:1554
1033 msgid "Requires mods:"
1034 msgstr ""
1035
1036 #: ../../../src/MenuConfig.cpp:1662 ../../../src/SDLInputState.cpp:750
1037 msgid "(none)"
1038 msgstr ""
1039
1040 #: ../../../src/MenuConfig.cpp:1679 ../../../src/MenuGameOver.cpp:73
1041 msgid "Save & Exit"
1042 msgstr "Αποθήκευση & Έξοδος"
1043
1044 #: ../../../src/MenuDevConsole.cpp:65
8201045 msgid "Execute"
8211046 msgstr ""
8221047
823 #: ../../../src/MenuDevConsole.cpp:101 ../../../src/MenuDevConsole.cpp:151
1048 #: ../../../src/MenuDevConsole.cpp:103 ../../../src/MenuDevConsole.cpp:153
8241049 msgid "Developer Console"
8251050 msgstr ""
8261051
827 #: ../../../src/MenuDevConsole.cpp:141
1052 #: ../../../src/MenuDevConsole.cpp:143
8281053 #, c-format
8291054 msgid "Use '%s' to inspect with the cursor."
8301055 msgstr ""
8311056
832 #: ../../../src/MenuDevConsole.cpp:146
1057 #: ../../../src/MenuDevConsole.cpp:148
8331058 msgid "Arguments with spaces should be enclosed with double quotes. Example:"
8341059 msgstr ""
8351060
836 #: ../../../src/MenuDevConsole.cpp:147
1061 #: ../../../src/MenuDevConsole.cpp:149
8371062 msgid "Type 'help' to get a list of commands."
8381063 msgstr ""
8391064
840 #: ../../../src/MenuDevConsole.cpp:209 ../../../src/MenuDevConsole.cpp:213
1065 #: ../../../src/MenuDevConsole.cpp:211 ../../../src/MenuDevConsole.cpp:215
8411066 msgid "px"
8421067 msgstr ""
8431068
844 #: ../../../src/MenuDevConsole.cpp:224
1069 #: ../../../src/MenuDevConsole.cpp:226
8451070 msgid "Distance"
8461071 msgstr ""
8471072
848 #: ../../../src/MenuDevConsole.cpp:239 ../../../src/MenuDevConsole.cpp:286
1073 #: ../../../src/MenuDevConsole.cpp:241 ../../../src/MenuDevConsole.cpp:289
1074 #: ../../../src/MenuDevConsole.cpp:303
8491075 msgid "Entity"
8501076 msgstr ""
8511077
852 #: ../../../src/MenuDevConsole.cpp:261 ../../../src/MenuDevConsole.cpp:268
1078 #: ../../../src/MenuDevConsole.cpp:263 ../../../src/MenuDevConsole.cpp:270
8531079 msgid "none"
8541080 msgstr ""
8551081
856 #: ../../../src/MenuDevConsole.cpp:262 ../../../src/MenuDevConsole.cpp:264
1082 #: ../../../src/MenuDevConsole.cpp:264 ../../../src/MenuDevConsole.cpp:266
8571083 msgid "wall"
8581084 msgstr ""
8591085
860 #: ../../../src/MenuDevConsole.cpp:263 ../../../src/MenuDevConsole.cpp:265
1086 #: ../../../src/MenuDevConsole.cpp:265 ../../../src/MenuDevConsole.cpp:267
8611087 msgid "short wall / pit"
8621088 msgstr ""
8631089
864 #: ../../../src/MenuDevConsole.cpp:266
1090 #: ../../../src/MenuDevConsole.cpp:268
8651091 msgid "entity"
8661092 msgstr ""
8671093
868 #: ../../../src/MenuDevConsole.cpp:267
1094 #: ../../../src/MenuDevConsole.cpp:269
8691095 msgid "entity, ally"
8701096 msgstr ""
8711097
872 #: ../../../src/MenuDevConsole.cpp:274
1098 #: ../../../src/MenuDevConsole.cpp:276
8731099 msgid "Tile"
8741100 msgstr ""
8751101
876 #: ../../../src/MenuDevConsole.cpp:360
1102 #: ../../../src/MenuDevConsole.cpp:377
8771103 msgid "adds a power to the action bar"
8781104 msgstr ""
8791105
880 #: ../../../src/MenuDevConsole.cpp:361
1106 #: ../../../src/MenuDevConsole.cpp:378
8811107 msgid "turns on/off the display of the FPS counter"
8821108 msgstr ""
8831109
884 #: ../../../src/MenuDevConsole.cpp:362
1110 #: ../../../src/MenuDevConsole.cpp:379
8851111 msgid "turns on/off all of the HUD elements"
8861112 msgstr ""
8871113
888 #: ../../../src/MenuDevConsole.cpp:363
1114 #: ../../../src/MenuDevConsole.cpp:380
8891115 msgid "turns on/off the developer hud"
8901116 msgstr ""
8911117
892 #: ../../../src/MenuDevConsole.cpp:364
1118 #: ../../../src/MenuDevConsole.cpp:381
8931119 msgid ""
8941120 "Prints a list of powers that match a search term. No search term will list "
8951121 "all items"
8961122 msgstr ""
8971123
898 #: ../../../src/MenuDevConsole.cpp:365
1124 #: ../../../src/MenuDevConsole.cpp:382
8991125 msgid "Prints out all the map filenames located in the \"maps/\" directory."
9001126 msgstr ""
9011127
902 #: ../../../src/MenuDevConsole.cpp:366
1128 #: ../../../src/MenuDevConsole.cpp:383
9031129 msgid ""
9041130 "Prints out the active campaign statuses that match a search term. No search "
9051131 "term will list all active statuses"
9061132 msgstr ""
9071133
908 #: ../../../src/MenuDevConsole.cpp:367
1134 #: ../../../src/MenuDevConsole.cpp:384
9091135 msgid ""
9101136 "Prints a list of items that match a search term. No search term will list "
9111137 "all items"
9121138 msgstr ""
9131139
914 #: ../../../src/MenuDevConsole.cpp:368
1140 #: ../../../src/MenuDevConsole.cpp:385
9151141 msgid ""
9161142 "parses a series of event components and executes them as a single event"
9171143 msgstr ""
9181144
919 #: ../../../src/MenuDevConsole.cpp:369
1145 #: ../../../src/MenuDevConsole.cpp:386
9201146 msgid "clears the command history"
9211147 msgstr ""
9221148
923 #: ../../../src/MenuDevConsole.cpp:370
1149 #: ../../../src/MenuDevConsole.cpp:387
9241150 msgid "displays this text"
9251151 msgstr ""
9261152
927 #: ../../../src/MenuDevConsole.cpp:377
1153 #: ../../../src/MenuDevConsole.cpp:394
9281154 msgid "Toggled the developer hud"
9291155 msgstr ""
9301156
931 #: ../../../src/MenuDevConsole.cpp:381
1157 #: ../../../src/MenuDevConsole.cpp:398
9321158 msgid "Toggled the hud"
9331159 msgstr ""
9341160
935 #: ../../../src/MenuDevConsole.cpp:385
1161 #: ../../../src/MenuDevConsole.cpp:402
9361162 msgid "Toggled the FPS counter"
9371163 msgstr ""
9381164
939 #: ../../../src/MenuDevConsole.cpp:534
1165 #: ../../../src/MenuDevConsole.cpp:552
9401166 msgid "ERROR: Incorrect number of arguments"
9411167 msgstr ""
9421168
943 #: ../../../src/MenuDevConsole.cpp:536 ../../../src/MenuDevConsole.cpp:564
1169 #: ../../../src/MenuDevConsole.cpp:554 ../../../src/MenuDevConsole.cpp:582
9441170 msgid "HINT:"
9451171 msgstr ""
9461172
947 #: ../../../src/MenuDevConsole.cpp:536
1173 #: ../../../src/MenuDevConsole.cpp:554
9481174 msgid "<id>"
9491175 msgstr ""
9501176
951 #: ../../../src/MenuDevConsole.cpp:552
1177 #: ../../../src/MenuDevConsole.cpp:570
9521178 #, c-format
9531179 msgid "ERROR: '%s' is not a valid event key"
9541180 msgstr ""
9551181
956 #: ../../../src/MenuDevConsole.cpp:562
1182 #: ../../../src/MenuDevConsole.cpp:580
9571183 msgid "ERROR: Too few arguments"
9581184 msgstr ""
9591185
960 #: ../../../src/MenuDevConsole.cpp:564
1186 #: ../../../src/MenuDevConsole.cpp:582
9611187 msgid "<key>=<val> <key>=<val> ..."
9621188 msgstr "<key>=<val><key>=<val>..."
9631189
964 #: ../../../src/MenuDevConsole.cpp:569
1190 #: ../../../src/MenuDevConsole.cpp:587
9651191 msgid "ERROR: Unknown command"
9661192 msgstr ""
9671193
968 #: ../../../src/MenuDevConsole.cpp:571
1194 #: ../../../src/MenuDevConsole.cpp:589
9691195 msgid "HINT: Type help"
9701196 msgstr ""
9711197
972 #: ../../../src/MenuEnemy.cpp:138
1198 #: ../../../src/MenuEnemy.cpp:162
9731199 #, c-format
9741200 msgid "%s level %d"
9751201 msgstr "%s επιπέδου %d"
9761202
977 #: ../../../src/MenuEnemy.cpp:162
1203 #: ../../../src/MenuEnemy.cpp:186
9781204 msgid "Dead"
9791205 msgstr "Νεκρός"
9801206
981 #: ../../../src/MenuEnemy.cpp:164
1207 #: ../../../src/MenuEnemy.cpp:188
9821208 msgid "Destroyed"
9831209 msgstr ""
9841210
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
1211 #: ../../../src/MenuGameOver.cpp:69
1212 msgid "Game Over"
1213 msgstr ""
1214
1215 #: ../../../src/MenuInventory.cpp:178
10061216 #, c-format
10071217 msgid "Lost %d%% of %s."
10081218 msgstr ""
10091219
1010 #: ../../../src/MenuInventory.cpp:195
1220 #: ../../../src/MenuInventory.cpp:185
10111221 #, c-format
10121222 msgid "Lost %d%% of total XP."
10131223 msgstr ""
10141224
1015 #: ../../../src/MenuInventory.cpp:200
1225 #: ../../../src/MenuInventory.cpp:190
10161226 #, c-format
10171227 msgid "Lost %d%% of current level XP."
10181228 msgstr ""
10191229
1020 #: ../../../src/MenuInventory.cpp:226
1230 #: ../../../src/MenuInventory.cpp:216
10211231 #, c-format
10221232 msgid "Lost %s."
10231233 msgstr "Έχασες %s."
10241234
1025 #: ../../../src/MenuInventory.cpp:274 ../../../src/MenuStash.cpp:146
1235 #: ../../../src/MenuInventory.cpp:258 ../../../src/MenuStash.cpp:276
10261236 #, c-format
10271237 msgid "%d %s"
10281238 msgstr "%d %s"
10291239
1030 #: ../../../src/MenuInventory.cpp:317
1240 #: ../../../src/MenuInventory.cpp:301
10311241 msgid "Pick up item(s):"
10321242 msgstr ""
10331243
1034 #: ../../../src/MenuInventory.cpp:318
1244 #: ../../../src/MenuInventory.cpp:302
10351245 msgid "Use or equip item:"
10361246 msgstr ""
10371247
1038 #: ../../../src/MenuInventory.cpp:319
1248 #: ../../../src/MenuInventory.cpp:303
10391249 #, c-format
10401250 msgid "%s modifiers"
10411251 msgstr ""
10421252
1043 #: ../../../src/MenuInventory.cpp:320
1253 #: ../../../src/MenuInventory.cpp:304
10441254 msgid "Select a quantity of item:"
10451255 msgstr ""
10461256
1047 #: ../../../src/MenuInventory.cpp:323
1257 #: ../../../src/MenuInventory.cpp:307
10481258 msgid "Stash item stack:"
10491259 msgstr ""
10501260
1051 #: ../../../src/MenuInventory.cpp:325
1261 #: ../../../src/MenuInventory.cpp:309
10521262 msgid "Sell item stack:"
10531263 msgstr ""
10541264
1055 #: ../../../src/MenuInventory.cpp:592
1265 #: ../../../src/MenuInventory.cpp:576
10561266 msgid "You don't have enough of the required item."
10571267 msgstr ""
10581268
1059 #: ../../../src/MenuInventory.cpp:599
1269 #: ../../../src/MenuInventory.cpp:588
10601270 msgid "You can't use this item right now."
10611271 msgstr ""
10621272
1063 #: ../../../src/MenuInventory.cpp:611
1273 #: ../../../src/MenuInventory.cpp:600
10641274 msgid "This item can only be used from the action bar."
10651275 msgstr ""
10661276 "Αυτό το αντικείμενο μπορεί να χρησιμοποιηθεί μόνο από την μπάρα ενεργειών."
10671277
1068 #: ../../../src/MenuInventory.cpp:729
1278 #: ../../../src/MenuInventory.cpp:718
10691279 msgid "Inventory is full."
10701280 msgstr "Έχεις παραφορτωθεί."
10711281
1072 #: ../../../src/MenuInventory.cpp:849
1282 #: ../../../src/MenuInventory.cpp:843
10731283 #, c-format
10741284 msgid "Not enough %s."
10751285 msgstr "Έλλειψη από %s."
10761286
1077 #: ../../../src/MenuInventory.cpp:869 ../../../src/MenuInventory.cpp:876
1287 #: ../../../src/MenuInventory.cpp:863 ../../../src/MenuInventory.cpp:870
10781288 msgid "This item can not be sold."
10791289 msgstr ""
10801290
10861296 msgid "Quests"
10871297 msgstr "Αποστολές"
10881298
1089 #: ../../../src/MenuManager.cpp:286
1299 #: ../../../src/MenuManager.cpp:305
10901300 #, c-format
10911301 msgid "XP: %d/%d"
10921302 msgstr "XP: %d/%d"
10931303
1094 #: ../../../src/MenuManager.cpp:827
1304 #: ../../../src/MenuManager.cpp:875
10951305 msgid "This item can not be dropped."
1306 msgstr ""
1307
1308 #: ../../../src/MenuManager.cpp:1501
1309 msgid "Equipped"
1310 msgstr ""
1311
1312 #: ../../../src/MenuMovementType.cpp:87
1313 msgid "Select a Movement Type"
1314 msgstr ""
1315
1316 #: ../../../src/MenuMovementType.cpp:89
1317 msgid "Can be changed later in the Configuration menu."
1318 msgstr ""
1319
1320 #: ../../../src/MenuMovementType.cpp:92 ../../../src/MenuMovementType.cpp:122
1321 msgid "Keyboard"
1322 msgstr ""
1323
1324 #: ../../../src/MenuMovementType.cpp:93 ../../../src/MenuMovementType.cpp:128
1325 msgid "Mouse"
1326 msgstr ""
1327
1328 #: ../../../src/MenuMovementType.cpp:129
1329 msgid "Button"
10961330 msgstr ""
10971331
10981332 #: ../../../src/MenuNumPicker.cpp:59
10991333 msgid "Enter amount:"
11001334 msgstr ""
11011335
1102 #: ../../../src/MenuPowers.cpp:787
1336 #: ../../../src/MenuPowers.cpp:894
11031337 msgid "Passive"
11041338 msgstr ""
11051339
1106 #: ../../../src/MenuPowers.cpp:792
1340 #: ../../../src/MenuPowers.cpp:901
11071341 #, c-format
11081342 msgid "Costs %d MP"
11091343 msgstr "Κοστίζει %d MP"
11101344
1111 #: ../../../src/MenuPowers.cpp:796
1345 #: ../../../src/MenuPowers.cpp:905
11121346 #, c-format
11131347 msgid "Costs %d HP"
11141348 msgstr "Κοστίζει %d ΗP"
11151349
1116 #: ../../../src/MenuPowers.cpp:801
1350 #: ../../../src/MenuPowers.cpp:909
11171351 msgid "Cooldown:"
11181352 msgstr ""
11191353
1120 #: ../../../src/MenuPowers.cpp:866 ../../../src/MenuPowers.cpp:869
1354 #: ../../../src/MenuPowers.cpp:960 ../../../src/MenuPowers.cpp:963
11211355 msgid "Damage per second"
11221356 msgstr ""
11231357
1124 #: ../../../src/MenuPowers.cpp:872 ../../../src/MenuPowers.cpp:875
1358 #: ../../../src/MenuPowers.cpp:966 ../../../src/MenuPowers.cpp:969
11251359 msgid "HP per second"
11261360 msgstr ""
11271361
1128 #: ../../../src/MenuPowers.cpp:878 ../../../src/MenuPowers.cpp:881
1362 #: ../../../src/MenuPowers.cpp:972 ../../../src/MenuPowers.cpp:975
11291363 msgid "MP per second"
11301364 msgstr ""
11311365
1132 #: ../../../src/MenuPowers.cpp:885
1366 #: ../../../src/MenuPowers.cpp:979
11331367 msgid "Immobilize"
11341368 msgstr ""
11351369
1136 #: ../../../src/MenuPowers.cpp:893
1370 #: ../../../src/MenuPowers.cpp:987
11371371 msgid "Immunity"
11381372 msgstr ""
11391373
1140 #: ../../../src/MenuPowers.cpp:896
1374 #: ../../../src/MenuPowers.cpp:990
11411375 msgid "Immunity to damage over time"
11421376 msgstr ""
11431377
1144 #: ../../../src/MenuPowers.cpp:899
1378 #: ../../../src/MenuPowers.cpp:993
11451379 msgid "Immunity to slow"
11461380 msgstr ""
11471381
1148 #: ../../../src/MenuPowers.cpp:902
1382 #: ../../../src/MenuPowers.cpp:996
11491383 msgid "Immunity to stun"
11501384 msgstr ""
11511385
1152 #: ../../../src/MenuPowers.cpp:905
1386 #: ../../../src/MenuPowers.cpp:999
11531387 msgid "Immunity to HP steal"
11541388 msgstr ""
11551389
1156 #: ../../../src/MenuPowers.cpp:908
1390 #: ../../../src/MenuPowers.cpp:1002
11571391 msgid "Immunity to MP steal"
11581392 msgstr ""
11591393
1160 #: ../../../src/MenuPowers.cpp:911
1394 #: ../../../src/MenuPowers.cpp:1005
11611395 msgid "Immunity to knockback"
11621396 msgstr ""
11631397
1164 #: ../../../src/MenuPowers.cpp:914
1398 #: ../../../src/MenuPowers.cpp:1008
11651399 msgid "Immunity to damage reflection"
11661400 msgstr ""
11671401
1168 #: ../../../src/MenuPowers.cpp:917
1402 #: ../../../src/MenuPowers.cpp:1014
11691403 msgid "Stun"
11701404 msgstr ""
11711405
1172 #: ../../../src/MenuPowers.cpp:920
1406 #: ../../../src/MenuPowers.cpp:1017
11731407 msgid "Automatic revive on death"
11741408 msgstr ""
11751409
1176 #: ../../../src/MenuPowers.cpp:923
1410 #: ../../../src/MenuPowers.cpp:1020
11771411 msgid "Convert"
11781412 msgstr ""
11791413
1180 #: ../../../src/MenuPowers.cpp:926
1414 #: ../../../src/MenuPowers.cpp:1023
11811415 msgid "Fear"
11821416 msgstr ""
11831417
1184 #: ../../../src/MenuPowers.cpp:929
1418 #: ../../../src/MenuPowers.cpp:1026
11851419 msgid "Lifespan"
11861420 msgstr ""
11871421
1188 #: ../../../src/MenuPowers.cpp:953
1422 #: ../../../src/MenuPowers.cpp:1050
11891423 msgid "Magical Shield"
11901424 msgstr ""
11911425
1192 #: ../../../src/MenuPowers.cpp:982
1426 #: ../../../src/MenuPowers.cpp:1079
11931427 msgid "Healing"
11941428 msgstr ""
11951429
1196 #: ../../../src/MenuPowers.cpp:985
1430 #: ../../../src/MenuPowers.cpp:1082
11971431 msgid "Knockback"
11981432 msgstr ""
11991433
1200 #: ../../../src/MenuPowers.cpp:1010
1434 #: ../../../src/MenuPowers.cpp:1106
12011435 #, c-format
12021436 msgid "%d%% chance"
12031437 msgstr ""
12041438
1205 #: ../../../src/MenuPowers.cpp:1062
1439 #: ../../../src/MenuPowers.cpp:1158
12061440 msgid "Base Accuracy"
12071441 msgstr ""
12081442
1209 #: ../../../src/MenuPowers.cpp:1082
1443 #: ../../../src/MenuPowers.cpp:1178
12101444 msgid "Base Critical Chance"
12111445 msgstr ""
12121446
1213 #: ../../../src/MenuPowers.cpp:1090
1447 #: ../../../src/MenuPowers.cpp:1186
12141448 msgid "Ignores Absorbtion"
12151449 msgstr ""
12161450
1217 #: ../../../src/MenuPowers.cpp:1095
1451 #: ../../../src/MenuPowers.cpp:1191
12181452 msgid "Ignores Avoidance"
12191453 msgstr ""
12201454
1221 #: ../../../src/MenuPowers.cpp:1100
1455 #: ../../../src/MenuPowers.cpp:1196
12221456 #, c-format
12231457 msgid "%d%% Chance to crit slowed targets"
12241458 msgstr ""
12251459
1226 #: ../../../src/MenuPowers.cpp:1105
1460 #: ../../../src/MenuPowers.cpp:1201
12271461 #, c-format
12281462 msgid "Elemental Damage (%s)"
12291463 msgstr ""
12301464
1231 #: ../../../src/MenuPowers.cpp:1114
1465 #: ../../../src/MenuPowers.cpp:1210
12321466 #, c-format
12331467 msgid "Requires a %s"
12341468 msgstr "Χρειάζεται ένα %s"
12351469
1236 #: ../../../src/MenuPowers.cpp:1151 ../../../src/MenuPowers.cpp:1154
1470 #: ../../../src/MenuPowers.cpp:1248 ../../../src/MenuPowers.cpp:1251
12371471 #, c-format
12381472 msgid "Requires Power: %s"
12391473 msgstr "Χρειάζεται Δύναμη: %s"
12401474
1241 #: ../../../src/MenuPowers.cpp:1163
1475 #: ../../../src/MenuPowers.cpp:1260
12421476 msgid "Click to Unlock (uses 1 Skill Point)"
12431477 msgstr ""
12441478
1245 #: ../../../src/MenuPowers.cpp:1167 ../../../src/MenuPowers.cpp:1169
1479 #: ../../../src/MenuPowers.cpp:1264 ../../../src/MenuPowers.cpp:1266
12461480 msgid "Requires 1 Skill Point"
12471481 msgstr "Χρειάζεται 1 Πόντο Ικανότητας"
12481482
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
1483 #: ../../../src/MenuPowers.cpp:1466
1484 #, c-format
1485 msgid "Available skill points: %d"
1486 msgstr ""
1487
1488 #: ../../../src/MenuPowers.cpp:1498
12601489 msgid "Next Level:"
12611490 msgstr "Επόμενο Επίπεδο:"
12621491
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
1492 #: ../../../src/MenuStash.cpp:80 ../../../src/MenuStash.cpp:161
1493 msgid "Stash"
1494 msgstr ""
1495
1496 #: ../../../src/MenuStash.cpp:174 ../../../src/MenuStash.cpp:188
1497 msgid "Private"
1498 msgstr ""
1499
1500 #: ../../../src/MenuStash.cpp:175
1501 msgid "Shared"
1502 msgstr ""
1503
1504 #: ../../../src/MenuStash.cpp:340
1505 msgid "This item can not be stored in the stash."
1506 msgstr ""
1507
1508 #: ../../../src/MenuStash.cpp:345
1509 msgid "This item can not be stored in the private stash."
1510 msgstr ""
1511
1512 #: ../../../src/MenuStash.cpp:350
1513 msgid "This item can not be stored in the shared stash."
1514 msgstr ""
1515
1516 #: ../../../src/MenuStash.cpp:360
12721517 msgid "Stash is full."
12731518 msgstr ""
12741519
1275 #: ../../../src/MenuTalker.cpp:454
1520 #: ../../../src/MenuStash.cpp:414
1521 #, c-format
1522 msgid "Can not store item in stash: %s"
1523 msgstr ""
1524
1525 #: ../../../src/MenuTalker.cpp:448
1526 #, c-format
1527 msgid "<dialog node %d>"
1528 msgstr ""
1529
1530 #: ../../../src/MenuTalker.cpp:456
12761531 msgid "Trade"
12771532 msgstr "Εμπόριο"
12781533
1279 #: ../../../src/MenuVendor.cpp:58
1534 #: ../../../src/MenuVendor.cpp:60
12801535 msgid "Buyback"
12811536 msgstr "Επαναγορά"
12821537
1283 #: ../../../src/MenuVendor.cpp:279
1538 #: ../../../src/MenuVendor.cpp:283
12841539 msgid "Vendor"
12851540 msgstr "Πωλητής"
12861541
1287 #: ../../../src/PowerManager.cpp:1136
1542 #: ../../../src/PowerManager.cpp:1204
12881543 #, c-format
12891544 msgid "+%d Shield"
12901545 msgstr "+%d Άμυνα"
12911546
1292 #: ../../../src/PowerManager.cpp:1392
1547 #: ../../../src/PowerManager.cpp:1461
12931548 msgid "You are already transformed, untransform first."
12941549 msgstr "Έχεις ήδη μεταμορφωθεί, απομεταμορφώσου πρώτα."
12951550
1296 #: ../../../src/PowerManager.cpp:1404
1551 #: ../../../src/PowerManager.cpp:1473
12971552 msgid "Could not untransform at this position."
12981553 msgstr ""
12991554
13011556 msgid "Completed Quests"
13021557 msgstr ""
13031558
1304 #: ../../../src/SaveLoad.cpp:243 ../../../src/SaveLoad.cpp:244
1559 #: ../../../src/SaveLoad.cpp:250 ../../../src/SaveLoad.cpp:251
13051560 msgid "Game saved."
13061561 msgstr ""
13071562
1308 #: ../../../src/SDLInputState.cpp:582
1563 #: ../../../src/SDLInputState.cpp:645
1564 msgid "BkSp"
1565 msgstr ""
1566
1567 #: ../../../src/SDLInputState.cpp:646
1568 msgid "Caps"
1569 msgstr ""
1570
1571 #: ../../../src/SDLInputState.cpp:647
1572 msgid "Del"
1573 msgstr ""
1574
1575 #: ../../../src/SDLInputState.cpp:649 ../../../src/SDLInputState.cpp:679
1576 msgid "End"
1577 msgstr ""
1578
1579 #: ../../../src/SDLInputState.cpp:650
1580 msgid "Esc"
1581 msgstr ""
1582
1583 #: ../../../src/SDLInputState.cpp:651 ../../../src/SDLInputState.cpp:681
1584 msgid "Home"
1585 msgstr ""
1586
1587 #: ../../../src/SDLInputState.cpp:652
1588 msgid "Ins"
1589 msgstr ""
1590
1591 #: ../../../src/SDLInputState.cpp:653
1592 msgid "LAlt"
1593 msgstr ""
1594
1595 #: ../../../src/SDLInputState.cpp:654
1596 msgid "LCtrl"
1597 msgstr ""
1598
1599 #: ../../../src/SDLInputState.cpp:656
1600 msgid "LShft"
1601 msgstr ""
1602
1603 #: ../../../src/SDLInputState.cpp:657
1604 msgid "Num"
1605 msgstr ""
1606
1607 #: ../../../src/SDLInputState.cpp:658
1608 msgid "PgDn"
1609 msgstr ""
1610
1611 #: ../../../src/SDLInputState.cpp:659
1612 msgid "PgUp"
1613 msgstr ""
1614
1615 #: ../../../src/SDLInputState.cpp:660 ../../../src/SDLInputState.cpp:690
1616 msgid "Pause"
1617 msgstr ""
1618
1619 #: ../../../src/SDLInputState.cpp:661
1620 msgid "Print"
1621 msgstr ""
1622
1623 #: ../../../src/SDLInputState.cpp:662
1624 msgid "RAlt"
1625 msgstr ""
1626
1627 #: ../../../src/SDLInputState.cpp:663
1628 msgid "RCtrl"
1629 msgstr ""
1630
1631 #: ../../../src/SDLInputState.cpp:664
1632 msgid "Ret"
1633 msgstr ""
1634
1635 #: ../../../src/SDLInputState.cpp:666
1636 msgid "RShft"
1637 msgstr ""
1638
1639 #: ../../../src/SDLInputState.cpp:667
1640 msgid "SLock"
1641 msgstr ""
1642
1643 #: ../../../src/SDLInputState.cpp:668
1644 msgid "Spc"
1645 msgstr ""
1646
1647 #: ../../../src/SDLInputState.cpp:669 ../../../src/SDLInputState.cpp:699
1648 msgid "Tab"
1649 msgstr ""
1650
1651 #: ../../../src/SDLInputState.cpp:675
13091652 msgid "Backspace"
13101653 msgstr ""
13111654
1312 #: ../../../src/SDLInputState.cpp:583
1655 #: ../../../src/SDLInputState.cpp:676
13131656 msgid "CapsLock"
13141657 msgstr ""
13151658
1316 #: ../../../src/SDLInputState.cpp:586
1317 msgid "End"
1318 msgstr ""
1319
1320 #: ../../../src/SDLInputState.cpp:587
1659 #: ../../../src/SDLInputState.cpp:680
13211660 msgid "Escape"
13221661 msgstr ""
13231662
1324 #: ../../../src/SDLInputState.cpp:588
1325 msgid "Home"
1326 msgstr ""
1327
1328 #: ../../../src/SDLInputState.cpp:589
1663 #: ../../../src/SDLInputState.cpp:682
13291664 msgid "Insert"
13301665 msgstr ""
13311666
1332 #: ../../../src/SDLInputState.cpp:590
1667 #: ../../../src/SDLInputState.cpp:683
13331668 msgid "Left Alt"
13341669 msgstr ""
13351670
1336 #: ../../../src/SDLInputState.cpp:591
1671 #: ../../../src/SDLInputState.cpp:684
13371672 msgid "Left Ctrl"
13381673 msgstr ""
13391674
1340 #: ../../../src/SDLInputState.cpp:593
1675 #: ../../../src/SDLInputState.cpp:686
13411676 msgid "Left Shift"
13421677 msgstr ""
13431678
1344 #: ../../../src/SDLInputState.cpp:594
1679 #: ../../../src/SDLInputState.cpp:687
13451680 msgid "NumLock"
13461681 msgstr ""
13471682
1348 #: ../../../src/SDLInputState.cpp:595
1683 #: ../../../src/SDLInputState.cpp:688
13491684 msgid "PageDown"
13501685 msgstr ""
13511686
1352 #: ../../../src/SDLInputState.cpp:596
1687 #: ../../../src/SDLInputState.cpp:689
13531688 msgid "PageUp"
13541689 msgstr ""
13551690
1356 #: ../../../src/SDLInputState.cpp:597
1357 msgid "Pause"
1358 msgstr ""
1359
1360 #: ../../../src/SDLInputState.cpp:598
1691 #: ../../../src/SDLInputState.cpp:691
13611692 msgid "PrintScreen"
13621693 msgstr ""
13631694
1364 #: ../../../src/SDLInputState.cpp:599
1695 #: ../../../src/SDLInputState.cpp:692
13651696 msgid "Right Alt"
13661697 msgstr ""
13671698
1368 #: ../../../src/SDLInputState.cpp:600
1699 #: ../../../src/SDLInputState.cpp:693
13691700 msgid "Right Ctrl"
13701701 msgstr ""
13711702
1372 #: ../../../src/SDLInputState.cpp:601
1703 #: ../../../src/SDLInputState.cpp:694
13731704 msgid "Return"
13741705 msgstr ""
13751706
1376 #: ../../../src/SDLInputState.cpp:603
1707 #: ../../../src/SDLInputState.cpp:696
13771708 msgid "Right Shift"
13781709 msgstr ""
13791710
1380 #: ../../../src/SDLInputState.cpp:604
1711 #: ../../../src/SDLInputState.cpp:697
13811712 msgid "ScrollLock"
13821713 msgstr ""
13831714
1384 #: ../../../src/SDLInputState.cpp:605
1715 #: ../../../src/SDLInputState.cpp:698
13851716 msgid "Space"
13861717 msgstr ""
13871718
1388 #: ../../../src/SDLInputState.cpp:606
1389 msgid "Tab"
1390 msgstr ""
1391
1392 #: ../../../src/SDLInputState.cpp:620
1719 #: ../../../src/SDLInputState.cpp:712
1720 #, c-format
1721 msgid "M%d"
1722 msgstr ""
1723
1724 #: ../../../src/SDLInputState.cpp:718
13931725 #, c-format
13941726 msgid "Mouse %d"
13951727 msgstr "Ποντίκι %d"
13961728
1397 #: ../../../src/SDLInputState.cpp:628
1729 #: ../../../src/SDLInputState.cpp:728
1730 #, c-format
1731 msgid "JX%d-"
1732 msgstr ""
1733
1734 #: ../../../src/SDLInputState.cpp:730
13981735 #, c-format
13991736 msgid "Axis %d -"
14001737 msgstr "Άξονας %d -"
14011738
1402 #: ../../../src/SDLInputState.cpp:630
1739 #: ../../../src/SDLInputState.cpp:734
1740 #, c-format
1741 msgid "JX%d+"
1742 msgstr ""
1743
1744 #: ../../../src/SDLInputState.cpp:736
14031745 #, c-format
14041746 msgid "Axis %d +"
14051747 msgstr "Άξονας %d +"
14061748
1407 #: ../../../src/SDLInputState.cpp:633
1749 #: ../../../src/SDLInputState.cpp:741
1750 #, c-format
1751 msgid "JB%d"
1752 msgstr ""
1753
1754 #: ../../../src/SDLInputState.cpp:743
14081755 #, c-format
14091756 msgid "Button %d"
14101757 msgstr ""
14111758
1412 #: ../../../src/SDLInputState.cpp:637
1413 msgid "(none)"
1414 msgstr ""
1415
1416 #: ../../../src/SDLInputState.cpp:677
1759 #: ../../../src/SDLInputState.cpp:789
14171760 msgid "Touch control D-Pad"
14181761 msgstr ""
14191762
1420 #: ../../../src/SDLInputState.cpp:701
1763 #: ../../../src/SDLInputState.cpp:812
14211764 msgid "Touch control buttons"
14221765 msgstr ""
14231766
1424 #: ../../../src/SDLInputState.cpp:716
1767 #: ../../../src/SDLInputState.cpp:826
14251768 msgid "Tap"
14261769 msgstr ""
14271770
1428 #: ../../../src/SDLInputState.cpp:760 ../../../src/SDLInputState.cpp:764
1429 #: ../../../src/SDLInputState.cpp:768
1771 #: ../../../src/SDLInputState.cpp:878 ../../../src/SDLInputState.cpp:880
1772 #, c-format
1773 msgid "Can not bind: %s"
1774 msgstr ""
1775
1776 #: ../../../src/SDLInputState.cpp:892 ../../../src/SDLInputState.cpp:896
1777 #: ../../../src/SDLInputState.cpp:900
14301778 #, c-format
14311779 msgid "'%s' is no longer bound to:"
14321780 msgstr ""
15851933 msgid "Base MP"
15861934 msgstr ""
15871935
1588 #: ../../../src/Utils.cpp:346
1936 #: ../../../src/Utils.cpp:365
15891937 msgid "k"
15901938 msgstr "κ"
15911939
1592 #: ../../../src/Utils.cpp:580
1940 #: ../../../src/Utils.cpp:635
15931941 #, c-format
15941942 msgid "%s second"
15951943 msgstr "%s δευτερόλεπτο"
15961944
1597 #: ../../../src/Utils.cpp:583
1945 #: ../../../src/Utils.cpp:638
15981946 #, c-format
15991947 msgid "%s seconds"
16001948 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-07-02 13:26-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:1220
135 #: ../../../src/StatBlock.cpp:926 ../../../src/StatBlock.cpp:932
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:937
141 #: ../../../src/StatBlock.cpp:943
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:704
183 msgid "Entering game world..."
184 msgstr "Entrando en mundo del juego..."
185
186 #: ../../../src/GameStateLoad.cpp:707
187 msgid "Loading saved game..."
188 msgstr "Cargando partida guardada..."
189
190 #: ../../../src/GameStateLoad.cpp:740
191 msgid "Invalid save"
192 msgstr "Partida guardada inválida"
193
194 #: ../../../src/GameStateLoad.cpp:764 ../../../src/ItemManager.cpp:745
195 #: ../../../src/MenuPowers.cpp:882 ../../../src/MenuPowers.cpp:1241
196 #: ../../../src/MenuPowers.cpp:1653
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:254
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:670
256 #: ../../../src/SDLInputState.cpp:700
257 msgid "Up"
258 msgstr "Arriba"
259
260 #: ../../../src/InputState.cpp:419 ../../../src/MenuMovementType.cpp:125
261 #: ../../../src/MenuMovementType.cpp:134 ../../../src/SDLInputState.cpp:648
262 #: ../../../src/SDLInputState.cpp:678
263 msgid "Down"
264 msgstr "Abajo"
265
266 #: ../../../src/InputState.cpp:420 ../../../src/MenuMovementType.cpp:124
267 #: ../../../src/MenuMovementType.cpp:133 ../../../src/SDLInputState.cpp:655
268 #: ../../../src/SDLInputState.cpp:685
269 msgid "Left"
270 msgstr "Izquierda"
271
272 #: ../../../src/InputState.cpp:421 ../../../src/MenuMovementType.cpp:126
273 #: ../../../src/MenuMovementType.cpp:135 ../../../src/SDLInputState.cpp:665
274 #: ../../../src/SDLInputState.cpp:695
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:159
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:677
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:981
415 #, c-format
416 msgid "%d%% Speed"
417 msgstr "%d%% velocidad"
418
419 #: ../../../src/ItemManager.cpp:650 ../../../src/MenuPowers.cpp:984
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:953
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:1228
455 #: ../../../src/MenuPowers.cpp:1231
456 #, c-format
457 msgid "Requires Level %d"
458 msgstr "Requiere nivel %d"
459
460 #: ../../../src/ItemManager.cpp:836 ../../../src/MenuPowers.cpp:1220
461 #: ../../../src/MenuPowers.cpp:1222
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:898
492 msgid "Set:"
493 msgstr "Conjunto:"
494
495 #: ../../../src/ItemManager.cpp:905
496 #, c-format
497 msgid "%d items:"
498 msgstr "%d objetos:"
499
500 #: ../../../src/ItemManager.cpp:920
501 #, c-format
502 msgid "Press [%s] to read"
503 msgstr "Pulsa [%s] para leer"
504
505 #: ../../../src/ItemManager.cpp:923
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:1256
582 msgid "Clear"
583 msgstr "Limpiar"
584
585 #: ../../../src/MenuConfig.cpp:122 ../../../src/MenuConfig.cpp:1254
586 msgid "Assign:"
587 msgstr "Asignar:"
588
589 #: ../../../src/MenuConfig.cpp:123 ../../../src/MenuConfig.cpp:253
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:252 ../../../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:256 ../../../src/MenuGameOver.cpp:72
602 msgid "Continue"
603 msgstr "Continuar"
604
605 #: ../../../src/MenuConfig.cpp:258
606 msgid "Save Game"
607 msgstr "Guardar la partida"
608
609 #: ../../../src/MenuConfig.cpp:301 ../../../src/MenuConfig.cpp:352
610 msgid "Default"
611 msgstr "Opción por defecto"
612
613 #: ../../../src/MenuConfig.cpp:301
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:302
622 msgid "Show all"
623 msgstr "Mostrar todos"
624
625 #: ../../../src/MenuConfig.cpp:302
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:303 ../../../src/MenuConfig.cpp:308
633 msgid "Hidden"
634 msgstr "Oculto"
635
636 #: ../../../src/MenuConfig.cpp:303
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:306
646 msgid "Visible"
647 msgstr "Visible"
648
649 #: ../../../src/MenuConfig.cpp:307
650 msgid "Visible (2x zoom)"
651 msgstr "Visible (aumento: 2x)"
652
653 #: ../../../src/MenuConfig.cpp:311
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:312
662 msgid "- Display a message"
663 msgstr "- Muestra un mensaje"
664
665 #: ../../../src/MenuConfig.cpp:313
666 msgid "- Play a sound"
667 msgstr "- Reproduce un sonido"
668
669 #: ../../../src/MenuConfig.cpp:314
670 msgid "- Change the cursor"
671 msgstr "- Cambia el cursor"
672
673 #: ../../../src/MenuConfig.cpp:316
674 msgid "Disabled"
675 msgstr "Deshabilitado"
676
677 #: ../../../src/MenuConfig.cpp:317
678 msgid "All"
679 msgstr "Todos"
680
681 #: ../../../src/MenuConfig.cpp:318
682 msgid "Message & Cursor"
683 msgstr "Mensaje y cursor"
684
685 #: ../../../src/MenuConfig.cpp:319
686 msgid "Message & Sound"
687 msgstr "Mensaje y sonido"
688
689 #: ../../../src/MenuConfig.cpp:320
690 msgid "Sound & Cursor"
691 msgstr "Sonido y cursor"
692
693 #: ../../../src/MenuConfig.cpp:321
694 msgid "Message"
695 msgstr "Mensaje"
696
697 #: ../../../src/MenuConfig.cpp:322
698 msgid "Cursor"
699 msgstr "Cursor"
700
701 #: ../../../src/MenuConfig.cpp:323
702 msgid "Sound"
703 msgstr "Sonido"
704
705 #: ../../../src/MenuConfig.cpp:329
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:347
715 msgid "The maximum frame rate that the game will be allowed to run at."
716 msgstr ""
717
718 #: ../../../src/MenuConfig.cpp:351
719 msgid ""
720 "The render size refers to the height in pixels of the surface used to draw "
721 "the game. Mods define the allowed render sizes, but this option allows "
722 "overriding the maximum size."
723 msgstr ""
724
725 #: ../../../src/MenuConfig.cpp:374 ../../../src/MenuConfig.cpp:1679
726 #: ../../../src/MenuGameOver.cpp:116
727 msgid "Exit"
728 msgstr "Salir"
729
730 #: ../../../src/MenuConfig.cpp:375
731 msgid "Video"
732 msgstr "Vídeo"
733
734 #: ../../../src/MenuConfig.cpp:376
162735 msgid "Audio"
163736 msgstr "Audio"
164737
165 #: ../../../src/GameStateConfigBase.cpp:161
166 #: ../../../src/GameStateConfigDesktop.cpp:131
738 #: ../../../src/MenuConfig.cpp:377
167739 msgid "Interface"
168740 msgstr "Interfaz"
169741
170 #: ../../../src/GameStateConfigBase.cpp:162
171 #: ../../../src/GameStateConfigDesktop.cpp:134
742 #: ../../../src/MenuConfig.cpp:378
743 msgid "Input"
744 msgstr "Entrada"
745
746 #: ../../../src/MenuConfig.cpp:379
747 msgid "Keybindings"
748 msgstr "Teclas"
749
750 #: ../../../src/MenuConfig.cpp:380
172751 msgid "Mods"
173752 msgstr "Mods"
174753
175 #: ../../../src/GameStateConfigBase.cpp:249 ../../../src/MenuExit.cpp:72
754 #: ../../../src/MenuConfig.cpp:392
755 msgid "Paused"
756 msgstr "Pausado"
757
758 #: ../../../src/MenuConfig.cpp:395
759 msgid "Time Played"
760 msgstr "Tiempo de juego"
761
762 #: ../../../src/MenuConfig.cpp:401
763 msgid "Renderer"
764 msgstr "Renderizador"
765
766 #: ../../../src/MenuConfig.cpp:402
767 msgid "Full Screen Mode"
768 msgstr "Modo de pantalla completa"
769
770 #: ../../../src/MenuConfig.cpp:403
771 msgid "Hardware surfaces"
772 msgstr "Superficies de hardware"
773
774 #: ../../../src/MenuConfig.cpp:404
775 msgid "V-Sync"
776 msgstr "V-Sync"
777
778 #: ../../../src/MenuConfig.cpp:405
779 msgid "Texture Filtering"
780 msgstr "Filtro de textura"
781
782 #: ../../../src/MenuConfig.cpp:406
783 msgid "DPI scaling"
784 msgstr "Escalado por PPP"
785
786 #: ../../../src/MenuConfig.cpp:407
787 msgid "Parallax Layers"
788 msgstr "Capas de paralaje"
789
790 #: ../../../src/MenuConfig.cpp:408
791 msgid "Allow changing gamma"
792 msgstr "Permitir cambiar gama"
793
794 #: ../../../src/MenuConfig.cpp:409
795 msgid "Gamma"
796 msgstr "Gama"
797
798 #: ../../../src/MenuConfig.cpp:410
799 msgid "Maximum Render Size"
800 msgstr ""
801
802 #: ../../../src/MenuConfig.cpp:411
803 msgid "Frame Limit"
804 msgstr ""
805
806 #: ../../../src/MenuConfig.cpp:413
807 msgid "Sound Volume"
808 msgstr "Volumen de sonido"
809
810 #: ../../../src/MenuConfig.cpp:414
176811 msgid "Music Volume"
177812 msgstr "Volumen de música"
178813
179 #: ../../../src/GameStateConfigBase.cpp:253 ../../../src/MenuExit.cpp:77
180 msgid "Sound Volume"
181 msgstr "Volumen de sonido"
182
183 #: ../../../src/GameStateConfigBase.cpp:257
814 #: ../../../src/MenuConfig.cpp:416
184815 msgid "Language"
185816 msgstr "Idioma"
186817
187 #: ../../../src/GameStateConfigBase.cpp:266
818 #: ../../../src/MenuConfig.cpp:417
188819 msgid "Show FPS"
189820 msgstr "Mostrar FPS"
190821
191 #: ../../../src/GameStateConfigBase.cpp:270
822 #: ../../../src/MenuConfig.cpp:418
823 msgid "Hardware mouse cursor"
824 msgstr "Cursor del ratón por hardware"
825
826 #: ../../../src/MenuConfig.cpp:419
192827 msgid "Colorblind Mode"
193828 msgstr "Modo para daltónicos"
194829
195 #: ../../../src/GameStateConfigBase.cpp:274
196 msgid "Hardware mouse cursor"
197 msgstr "Cursor del ratón por hardware"
198
199 #: ../../../src/GameStateConfigBase.cpp:278
830 #: ../../../src/MenuConfig.cpp:420
200831 msgid "Developer Mode"
201832 msgstr "Modo desarrollador"
202833
203 #: ../../../src/GameStateConfigBase.cpp:282
834 #: ../../../src/MenuConfig.cpp:421
204835 msgid "Subtitles"
205836 msgstr "Subtítulos"
206837
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
838 #: ../../../src/MenuConfig.cpp:422
839 msgid "Loot tooltip visibility"
840 msgstr "Ayuda a la visibilidad del botín"
841
842 #: ../../../src/MenuConfig.cpp:423
843 msgid "Mini-map mode"
844 msgstr "Modo minimapa"
845
846 #: ../../../src/MenuConfig.cpp:424
847 msgid "Always show stat bar labels"
848 msgstr "Mostrar etiquetas en las barra de atributos"
849
850 #: ../../../src/MenuConfig.cpp:425
851 msgid "Allow stat bar auto-hiding"
852 msgstr "Permitir ocultar automáticamente la barra de estado"
853
854 #: ../../../src/MenuConfig.cpp:426
855 msgid "Show combat text"
856 msgstr "Mostrar texto de combate"
857
858 #: ../../../src/MenuConfig.cpp:427
859 msgid "Automatically equip items"
860 msgstr "Automáticamente equipar con objetos"
861
862 #: ../../../src/MenuConfig.cpp:428
863 msgid "Show hidden entity markers"
864 msgstr "Mostrar marcadores de entidad ocultos"
865
866 #: ../../../src/MenuConfig.cpp:429
867 msgid "Low health notification"
868 msgstr "Notificación de salud baja"
869
870 #: ../../../src/MenuConfig.cpp:430
871 msgid "Low health threshold"
872 msgstr "Notificación de salud baja"
873
874 #: ../../../src/MenuConfig.cpp:431
875 msgid "Show item comparison tooltips"
876 msgstr ""
877
878 #: ../../../src/MenuConfig.cpp:434 ../../../src/MenuMovementType.cpp:94
879 #: ../../../src/MenuMovementType.cpp:131
880 msgid "Joystick"
881 msgstr "Joystick"
882
883 #: ../../../src/MenuConfig.cpp:435
884 msgid "Move hero using mouse"
885 msgstr "Mover héroe a través del ratón"
886
887 #: ../../../src/MenuConfig.cpp:436
888 msgid "Mouse aim"
889 msgstr "Ratón para apuntar"
890
891 #: ../../../src/MenuConfig.cpp:437
892 msgid "Do not use mouse"
893 msgstr "No usar ratón"
894
895 #: ../../../src/MenuConfig.cpp:438
896 msgid "Swap mouse movement button"
897 msgstr "Intercambiar botón de movimiento de ratón"
898
899 #: ../../../src/MenuConfig.cpp:439
900 msgid "Attack with mouse movement"
901 msgstr "Atacar con movimiento de ratón"
902
903 #: ../../../src/MenuConfig.cpp:440
904 msgid "Joystick Deadzone"
905 msgstr "Zona sin joystick"
906
907 #: ../../../src/MenuConfig.cpp:441
908 msgid "Touch Controls"
909 msgstr ""
910
911 #: ../../../src/MenuConfig.cpp:442
912 msgid "Touch Gamepad Scaling"
913 msgstr ""
914
915 #: ../../../src/MenuConfig.cpp:452
916 #, c-format
917 msgid "Primary binding: %s"
918 msgstr "Vinculación primaria: %s"
919
920 #: ../../../src/MenuConfig.cpp:453
921 #, c-format
922 msgid "Alternate binding: %s"
923 msgstr "Vinculación alternativa: %s"
924
925 #: ../../../src/MenuConfig.cpp:454
926 #, c-format
927 msgid "Joystick binding: %s"
928 msgstr "Vinculación con Joystick: %s"
929
930 #: ../../../src/MenuConfig.cpp:556
262931 msgid ""
263932 "Will try to store surfaces in video memory versus system memory. The effect "
264933 "this has on performance depends on the renderer."
266935 "Intentará almacenar las superficies en la memoria de vídeo en vez de en la "
267936 "memoria del sistema. Esto afectará de forma distinta según el renderizador."
268937
269 #: ../../../src/GameStateConfigDesktop.cpp:189
938 #: ../../../src/MenuConfig.cpp:557
270939 msgid ""
271940 "Prevents screen tearing. Disable if you experience \"stuttering\" in "
272941 "windowed mode or input lag."
274943 "Evita que la pantalla se muestre rota. Se puede desactivar si se detectan "
275944 "\"parpadeos\" de imagen en el modo ventana o retraso en las entradas"
276945
277 #: ../../../src/GameStateConfigDesktop.cpp:190
946 #: ../../../src/MenuConfig.cpp:558
278947 msgid ""
279948 "When enabled, this uses the screen DPI in addition to the window dimensions "
280949 "to scale the rendering resolution. Otherwise, only the window dimensions are"
284953 "dimensiones de la ventana para escalar la resolución. De lo contrario, sólo "
285954 "se usarán las dimensiones de la ventana."
286955
287 #: ../../../src/GameStateConfigDesktop.cpp:191
956 #: ../../../src/MenuConfig.cpp:559
288957 msgid ""
289958 "This enables parallax (non-tile) layers. Disabling this setting can improve "
290959 "performance in some cases."
292961 "Activa las capas de paralaje (sin teselas). Desactivar esta opción puede "
293962 "mejorar el rendimiento en algunos casos."
294963
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
964 #: ../../../src/MenuConfig.cpp:560
965 msgid ""
966 "Enables the below setting that controls the screen gamma level. The behavior"
967 " of the gamma setting can vary between platforms."
968 msgstr ""
969 "Activa la opción inferior que controla el nivel de transparencia de la "
970 "pantalla. El comportamiento de transparencia puede variar entre plataformas."
971
972 #: ../../../src/MenuConfig.cpp:561
973 msgid ""
974 "Provides additional text for information that is primarily conveyed through "
975 "color."
976 msgstr ""
977 "Proporciona text adicional para la información que se muestra principalmente"
978 " mediante colores."
979
980 #: ../../../src/MenuConfig.cpp:562
981 msgid ""
982 "Some mods will automatically hide the stat bars when they are inactive. "
983 "Disabling this option will keep them displayed at all times."
984 msgstr ""
985 "Algunos mods ocultan automáticamente las barras de estado cuando no están "
986 "activas. Desactivar esta opción hace que se muestren siempre."
987
988 #: ../../../src/MenuConfig.cpp:563
989 msgid ""
990 "When enabled, empty equipment slots will be filled with applicable items "
991 "when they are obtained."
992 msgstr ""
993 "Cuando está activado, las ranuras de equipamiento libres se asignarán con "
994 "elementos que se puedan usar en cuanto se obtengan."
995
996 #: ../../../src/MenuConfig.cpp:564
997 msgid ""
998 "Shows a marker above enemies, allies, and the player when they are obscured "
999 "by tall objects."
1000 msgstr ""
1001 "Muestra un marcador por encima de los enemigos, aliados y el jugador cuando "
1002 "se vean tapados por objetos de gran altura."
1003
1004 #: ../../../src/MenuConfig.cpp:565
1005 msgid ""
1006 "When enabled, tooltips for equipped items of the same type are shown next to"
1007 " standard item tooltips."
1008 msgstr ""
1009
1010 #: ../../../src/MenuConfig.cpp:566
1011 msgid ""
1012 "This allows the game to be controlled entirely with the keyboard (or "
1013 "joystick)."
1014 msgstr ""
1015 "Esto permite controlar el juego por completo con el teclado (o con un "
1016 "joystick)."
1017
1018 #: ../../../src/MenuConfig.cpp:567
1019 msgid ""
1020 "When 'Move hero using mouse' is enabled, this setting controls if 'Main1' or"
1021 " 'Main2' is used to move the hero. If enabled, 'Main2' will move the hero "
1022 "instead of 'Main1'."
1023 msgstr ""
1024 "Cuando \"Mover héroe usando el ratón\" está activado, esta opción controla "
1025 "si \"Principal1\" o \"Principal2\" se usan para moverlo. Si activado, se "
1026 "usará \"Principal2\" en vez de \"Principal1\"."
1027
1028 #: ../../../src/MenuConfig.cpp:568
1029 msgid ""
1030 "When 'Move hero using mouse' is enabled, this setting controls if the Power "
1031 "assigned to the movement button can be used by targeting an enemy. If this "
1032 "setting is disabled, it is required to use 'Shift' to access the Power "
1033 "assigned to the movement button."
1034 msgstr ""
1035 "Cuando la opción de \"Mover héroe usando el ratón\" está activa, esta opción"
1036 " controla si el Poder asignado al botón de movimiento puede usarse en cuanto"
1037 " se apunta a un enemigo. Si esta opción está desactivada, se necesita usar "
1038 "el botón \"Mayús\" para acceder al Poder asignado al botón de movimiento."
1039
1040 #: ../../../src/MenuConfig.cpp:569
1041 msgid ""
1042 "The player's attacks will be aimed in the direction of the mouse cursor when"
1043 " this is enabled."
1044 msgstr ""
1045 "Los ataques del jugador se dirigirán a la dirección del cursor del ratón "
1046 "cuando esta opción esté activada."
1047
1048 #: ../../../src/MenuConfig.cpp:570
1049 msgid ""
1050 "When enabled, a virtual gamepad will be added in-game. Other interactions, "
1051 "such as drag-and-drop behavior, are also altered to better suit touch input."
1052 msgstr ""
1053
1054 #: ../../../src/MenuConfig.cpp:621
1055 msgid "Active Mods"
1056 msgstr "Mods Activos"
1057
1058 #: ../../../src/MenuConfig.cpp:630
1059 msgid "Available Mods"
1060 msgstr "Mods Disponibles"
1061
1062 #: ../../../src/MenuConfig.cpp:649
1063 msgid "<< Disable"
1064 msgstr "<< Inhabilitar"
1065
1066 #: ../../../src/MenuConfig.cpp:655
1067 msgid "Enable >>"
1068 msgstr "Habilitar >>"
1069
1070 #: ../../../src/MenuConfig.cpp:1536
1071 msgid "Version:"
1072 msgstr "Versión:"
1073
1074 #: ../../../src/MenuConfig.cpp:1541
1075 msgid "Game:"
1076 msgstr "Juego:"
1077
1078 #: ../../../src/MenuConfig.cpp:1546
1079 msgid "Engine version:"
1080 msgstr "Versión del motor de juego:"
1081
1082 #: ../../../src/MenuConfig.cpp:1554
1083 msgid "Requires mods:"
1084 msgstr "Mods requeridos:"
1085
1086 #: ../../../src/MenuConfig.cpp:1662 ../../../src/SDLInputState.cpp:750
1087 msgid "(none)"
1088 msgstr "(ninguno)"
1089
1090 #: ../../../src/MenuConfig.cpp:1679 ../../../src/MenuGameOver.cpp:73
1091 msgid "Save & Exit"
1092 msgstr "Guardar y salir"
1093
1094 #: ../../../src/MenuDevConsole.cpp:65
8411095 msgid "Execute"
8421096 msgstr "Ejecutar"
8431097
844 #: ../../../src/MenuDevConsole.cpp:101 ../../../src/MenuDevConsole.cpp:151
1098 #: ../../../src/MenuDevConsole.cpp:103 ../../../src/MenuDevConsole.cpp:153
8451099 msgid "Developer Console"
8461100 msgstr "Consola de desarrollador"
8471101
848 #: ../../../src/MenuDevConsole.cpp:141
1102 #: ../../../src/MenuDevConsole.cpp:143
8491103 #, c-format
8501104 msgid "Use '%s' to inspect with the cursor."
8511105 msgstr "Usa '%s' para inspeccionar con el cursor."
8521106
853 #: ../../../src/MenuDevConsole.cpp:146
1107 #: ../../../src/MenuDevConsole.cpp:148
8541108 msgid "Arguments with spaces should be enclosed with double quotes. Example:"
8551109 msgstr ""
8561110 "Los argumentos con espacios deben estar entre comillas dobles. Ejemplo:"
8571111
858 #: ../../../src/MenuDevConsole.cpp:147
1112 #: ../../../src/MenuDevConsole.cpp:149
8591113 msgid "Type 'help' to get a list of commands."
8601114 msgstr "Escriba 'help' para una lista de las órdenes disponibles."
8611115
862 #: ../../../src/MenuDevConsole.cpp:209 ../../../src/MenuDevConsole.cpp:213
1116 #: ../../../src/MenuDevConsole.cpp:211 ../../../src/MenuDevConsole.cpp:215
8631117 msgid "px"
8641118 msgstr "px"
8651119
866 #: ../../../src/MenuDevConsole.cpp:224
1120 #: ../../../src/MenuDevConsole.cpp:226
8671121 msgid "Distance"
8681122 msgstr "Distancia"
8691123
870 #: ../../../src/MenuDevConsole.cpp:239 ../../../src/MenuDevConsole.cpp:286
1124 #: ../../../src/MenuDevConsole.cpp:241 ../../../src/MenuDevConsole.cpp:289
1125 #: ../../../src/MenuDevConsole.cpp:303
8711126 msgid "Entity"
8721127 msgstr "Entidad"
8731128
874 #: ../../../src/MenuDevConsole.cpp:261 ../../../src/MenuDevConsole.cpp:268
1129 #: ../../../src/MenuDevConsole.cpp:263 ../../../src/MenuDevConsole.cpp:270
8751130 msgid "none"
8761131 msgstr "ninguno"
8771132
878 #: ../../../src/MenuDevConsole.cpp:262 ../../../src/MenuDevConsole.cpp:264
1133 #: ../../../src/MenuDevConsole.cpp:264 ../../../src/MenuDevConsole.cpp:266
8791134 msgid "wall"
8801135 msgstr "muro"
8811136
882 #: ../../../src/MenuDevConsole.cpp:263 ../../../src/MenuDevConsole.cpp:265
1137 #: ../../../src/MenuDevConsole.cpp:265 ../../../src/MenuDevConsole.cpp:267
8831138 msgid "short wall / pit"
8841139 msgstr "muro bajo/pozo"
8851140
886 #: ../../../src/MenuDevConsole.cpp:266
1141 #: ../../../src/MenuDevConsole.cpp:268
8871142 msgid "entity"
8881143 msgstr "entidad"
8891144
890 #: ../../../src/MenuDevConsole.cpp:267
1145 #: ../../../src/MenuDevConsole.cpp:269
8911146 msgid "entity, ally"
8921147 msgstr "entidad, aliado"
8931148
894 #: ../../../src/MenuDevConsole.cpp:274
1149 #: ../../../src/MenuDevConsole.cpp:276
8951150 msgid "Tile"
8961151 msgstr "Título"
8971152
898 #: ../../../src/MenuDevConsole.cpp:360
1153 #: ../../../src/MenuDevConsole.cpp:377
8991154 msgid "adds a power to the action bar"
9001155 msgstr "añade poder a la barra de acción"
9011156
902 #: ../../../src/MenuDevConsole.cpp:361
1157 #: ../../../src/MenuDevConsole.cpp:378
9031158 msgid "turns on/off the display of the FPS counter"
9041159 msgstr "enciende/apaga el contador de FPS"
9051160
906 #: ../../../src/MenuDevConsole.cpp:362
1161 #: ../../../src/MenuDevConsole.cpp:379
9071162 msgid "turns on/off all of the HUD elements"
9081163 msgstr "Activa/Desactiva todos los elementos con información en pantalla"
9091164
910 #: ../../../src/MenuDevConsole.cpp:363
1165 #: ../../../src/MenuDevConsole.cpp:380
9111166 msgid "turns on/off the developer hud"
9121167 msgstr ""
9131168 "Activa/Desactiva todos la información en pantalla para desarrolladores"
9141169
915 #: ../../../src/MenuDevConsole.cpp:364
1170 #: ../../../src/MenuDevConsole.cpp:381
9161171 msgid ""
9171172 "Prints a list of powers that match a search term. No search term will list "
9181173 "all items"
9201175 "Muestra una lista de poderes que se emparejan con un término de búsqueda. Si"
9211176 " no hay ningún término, se listarán todos los elementos"
9221177
923 #: ../../../src/MenuDevConsole.cpp:365
1178 #: ../../../src/MenuDevConsole.cpp:382
9241179 msgid "Prints out all the map filenames located in the \"maps/\" directory."
9251180 msgstr "Muestra todos los ficheros de mapa del directorio \"maps/\"."
9261181
927 #: ../../../src/MenuDevConsole.cpp:366
1182 #: ../../../src/MenuDevConsole.cpp:383
9281183 msgid ""
9291184 "Prints out the active campaign statuses that match a search term. No search "
9301185 "term will list all active statuses"
9321187 "Muestra los estados de la campaña activa que emparejan con un término de "
9331188 "búsqueda. Si no hay ningún término, se listarán todos los estados activos"
9341189
935 #: ../../../src/MenuDevConsole.cpp:367
1190 #: ../../../src/MenuDevConsole.cpp:384
9361191 msgid ""
9371192 "Prints a list of items that match a search term. No search term will list "
9381193 "all items"
9401195 "Muestra una lista de todos los objetos que emparejan con un término de "
9411196 "búsqueda. Si no hay ningún término de búsqueda, listará todos los objetos"
9421197
943 #: ../../../src/MenuDevConsole.cpp:368
1198 #: ../../../src/MenuDevConsole.cpp:385
9441199 msgid ""
9451200 "parses a series of event components and executes them as a single event"
9461201 msgstr ""
9471202 "analiza una serie de componentes de eventos y los ejecuta como un solo "
9481203 "evento"
9491204
950 #: ../../../src/MenuDevConsole.cpp:369
1205 #: ../../../src/MenuDevConsole.cpp:386
9511206 msgid "clears the command history"
9521207 msgstr "limpia el histórico de órdenes"
9531208
954 #: ../../../src/MenuDevConsole.cpp:370
1209 #: ../../../src/MenuDevConsole.cpp:387
9551210 msgid "displays this text"
9561211 msgstr "muestra este texto"
9571212
958 #: ../../../src/MenuDevConsole.cpp:377
1213 #: ../../../src/MenuDevConsole.cpp:394
9591214 msgid "Toggled the developer hud"
9601215 msgstr "Activar/Desactivar información para desarrolladores"
9611216
962 #: ../../../src/MenuDevConsole.cpp:381
1217 #: ../../../src/MenuDevConsole.cpp:398
9631218 msgid "Toggled the hud"
9641219 msgstr "Estado de información en pantalla cambiado"
9651220
966 #: ../../../src/MenuDevConsole.cpp:385
1221 #: ../../../src/MenuDevConsole.cpp:402
9671222 msgid "Toggled the FPS counter"
9681223 msgstr "Conmutador del contador de FPS"
9691224
970 #: ../../../src/MenuDevConsole.cpp:534
1225 #: ../../../src/MenuDevConsole.cpp:552
9711226 msgid "ERROR: Incorrect number of arguments"
9721227 msgstr "ERROR: número de argumentos incorrecto"
9731228
974 #: ../../../src/MenuDevConsole.cpp:536 ../../../src/MenuDevConsole.cpp:564
1229 #: ../../../src/MenuDevConsole.cpp:554 ../../../src/MenuDevConsole.cpp:582
9751230 msgid "HINT:"
9761231 msgstr "CONSEJO:"
9771232
978 #: ../../../src/MenuDevConsole.cpp:536
1233 #: ../../../src/MenuDevConsole.cpp:554
9791234 msgid "<id>"
9801235 msgstr "<id>"
9811236
982 #: ../../../src/MenuDevConsole.cpp:552
1237 #: ../../../src/MenuDevConsole.cpp:570
9831238 #, c-format
9841239 msgid "ERROR: '%s' is not a valid event key"
9851240 msgstr "ERROR: '%s' no es una clave válida de evento"
9861241
987 #: ../../../src/MenuDevConsole.cpp:562
1242 #: ../../../src/MenuDevConsole.cpp:580
9881243 msgid "ERROR: Too few arguments"
9891244 msgstr "ERROR: muy pocos argumentos"
9901245
991 #: ../../../src/MenuDevConsole.cpp:564
1246 #: ../../../src/MenuDevConsole.cpp:582
9921247 msgid "<key>=<val> <key>=<val> ..."
9931248 msgstr "<key>=<val> <key>=<val> ..."
9941249
995 #: ../../../src/MenuDevConsole.cpp:569
1250 #: ../../../src/MenuDevConsole.cpp:587
9961251 msgid "ERROR: Unknown command"
9971252 msgstr "ERROR: orden desconocida"
9981253
999 #: ../../../src/MenuDevConsole.cpp:571
1254 #: ../../../src/MenuDevConsole.cpp:589
10001255 msgid "HINT: Type help"
10011256 msgstr "CONSEJO: escribe help"
10021257
1003 #: ../../../src/MenuEnemy.cpp:138
1258 #: ../../../src/MenuEnemy.cpp:162
10041259 #, c-format
10051260 msgid "%s level %d"
10061261 msgstr "%s nivel%d"
10071262
1008 #: ../../../src/MenuEnemy.cpp:162
1263 #: ../../../src/MenuEnemy.cpp:186
10091264 msgid "Dead"
10101265 msgstr "Muerto"
10111266
1012 #: ../../../src/MenuEnemy.cpp:164
1267 #: ../../../src/MenuEnemy.cpp:188
10131268 msgid "Destroyed"
10141269 msgstr "Destruido"
10151270
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
1271 #: ../../../src/MenuGameOver.cpp:69
1272 msgid "Game Over"
1273 msgstr ""
1274
1275 #: ../../../src/MenuInventory.cpp:178
10371276 #, c-format
10381277 msgid "Lost %d%% of %s."
10391278 msgstr "Perdió %d%% de %s."
10401279
1041 #: ../../../src/MenuInventory.cpp:195
1280 #: ../../../src/MenuInventory.cpp:185
10421281 #, c-format
10431282 msgid "Lost %d%% of total XP."
10441283 msgstr "Perdió %d%% de PX."
10451284
1046 #: ../../../src/MenuInventory.cpp:200
1285 #: ../../../src/MenuInventory.cpp:190
10471286 #, c-format
10481287 msgid "Lost %d%% of current level XP."
10491288 msgstr "Perdió %d%% del nivel de PX actual."
10501289
1051 #: ../../../src/MenuInventory.cpp:226
1290 #: ../../../src/MenuInventory.cpp:216
10521291 #, c-format
10531292 msgid "Lost %s."
10541293 msgstr "Perdió %s."
10551294
1056 #: ../../../src/MenuInventory.cpp:274 ../../../src/MenuStash.cpp:146
1295 #: ../../../src/MenuInventory.cpp:258 ../../../src/MenuStash.cpp:276
10571296 #, c-format
10581297 msgid "%d %s"
10591298 msgstr "%d %s"
10601299
1061 #: ../../../src/MenuInventory.cpp:317
1300 #: ../../../src/MenuInventory.cpp:301
10621301 msgid "Pick up item(s):"
10631302 msgstr "Coger objeto/s:"
10641303
1065 #: ../../../src/MenuInventory.cpp:318
1304 #: ../../../src/MenuInventory.cpp:302
10661305 msgid "Use or equip item:"
10671306 msgstr "Usar o equiparse con objeto:"
10681307
1069 #: ../../../src/MenuInventory.cpp:319
1308 #: ../../../src/MenuInventory.cpp:303
10701309 #, c-format
10711310 msgid "%s modifiers"
10721311 msgstr "modificadores %s"
10731312
1074 #: ../../../src/MenuInventory.cpp:320
1313 #: ../../../src/MenuInventory.cpp:304
10751314 msgid "Select a quantity of item:"
10761315 msgstr "Selecciona la cantidad de elementos:"
10771316
1078 #: ../../../src/MenuInventory.cpp:323
1317 #: ../../../src/MenuInventory.cpp:307
10791318 msgid "Stash item stack:"
1080 msgstr "Devolver un objeto a la pila:"
1081
1082 #: ../../../src/MenuInventory.cpp:325
1319 msgstr "Devolver un objeto al almacén:"
1320
1321 #: ../../../src/MenuInventory.cpp:309
10831322 msgid "Sell item stack:"
10841323 msgstr "Vender pila de objetos:"
10851324
1086 #: ../../../src/MenuInventory.cpp:592
1325 #: ../../../src/MenuInventory.cpp:576
10871326 msgid "You don't have enough of the required item."
10881327 msgstr "No tienes suficiente del objeto requerido."
10891328
1090 #: ../../../src/MenuInventory.cpp:599
1329 #: ../../../src/MenuInventory.cpp:588
10911330 msgid "You can't use this item right now."
10921331 msgstr "Ahora no puedes usar este objeto."
10931332
1094 #: ../../../src/MenuInventory.cpp:611
1333 #: ../../../src/MenuInventory.cpp:600
10951334 msgid "This item can only be used from the action bar."
10961335 msgstr "Este elemento sólo se puede utilizar en la barra de acción."
10971336
1098 #: ../../../src/MenuInventory.cpp:729
1337 #: ../../../src/MenuInventory.cpp:718
10991338 msgid "Inventory is full."
11001339 msgstr "El inventario esta completo."
11011340
1102 #: ../../../src/MenuInventory.cpp:849
1341 #: ../../../src/MenuInventory.cpp:843
11031342 #, c-format
11041343 msgid "Not enough %s."
11051344 msgstr "No hay suficientes %s."
11061345
1107 #: ../../../src/MenuInventory.cpp:869 ../../../src/MenuInventory.cpp:876
1346 #: ../../../src/MenuInventory.cpp:863 ../../../src/MenuInventory.cpp:870
11081347 msgid "This item can not be sold."
11091348 msgstr "Este objeto no se puede vender."
11101349
11161355 msgid "Quests"
11171356 msgstr "Gestas"
11181357
1119 #: ../../../src/MenuManager.cpp:286
1358 #: ../../../src/MenuManager.cpp:305
11201359 #, c-format
11211360 msgid "XP: %d/%d"
11221361 msgstr "Experiencia: %d/%d"
11231362
1124 #: ../../../src/MenuManager.cpp:827
1363 #: ../../../src/MenuManager.cpp:875
11251364 msgid "This item can not be dropped."
11261365 msgstr "Este objeto no se puede soltar."
1366
1367 #: ../../../src/MenuManager.cpp:1501
1368 msgid "Equipped"
1369 msgstr ""
1370
1371 #: ../../../src/MenuMovementType.cpp:87
1372 msgid "Select a Movement Type"
1373 msgstr ""
1374
1375 #: ../../../src/MenuMovementType.cpp:89
1376 msgid "Can be changed later in the Configuration menu."
1377 msgstr ""
1378
1379 #: ../../../src/MenuMovementType.cpp:92 ../../../src/MenuMovementType.cpp:122
1380 msgid "Keyboard"
1381 msgstr ""
1382
1383 #: ../../../src/MenuMovementType.cpp:93 ../../../src/MenuMovementType.cpp:128
1384 msgid "Mouse"
1385 msgstr ""
1386
1387 #: ../../../src/MenuMovementType.cpp:129
1388 msgid "Button"
1389 msgstr ""
11271390
11281391 #: ../../../src/MenuNumPicker.cpp:59
11291392 msgid "Enter amount:"
11301393 msgstr "Introduce cantidad:"
11311394
1132 #: ../../../src/MenuPowers.cpp:787
1395 #: ../../../src/MenuPowers.cpp:894
11331396 msgid "Passive"
11341397 msgstr "Pasivo"
11351398
1136 #: ../../../src/MenuPowers.cpp:792
1399 #: ../../../src/MenuPowers.cpp:901
11371400 #, c-format
11381401 msgid "Costs %d MP"
11391402 msgstr "Costos %d PM"
11401403
1141 #: ../../../src/MenuPowers.cpp:796
1404 #: ../../../src/MenuPowers.cpp:905
11421405 #, c-format
11431406 msgid "Costs %d HP"
11441407 msgstr "Costos %d HP"
11451408
1146 #: ../../../src/MenuPowers.cpp:801
1409 #: ../../../src/MenuPowers.cpp:909
11471410 msgid "Cooldown:"
11481411 msgstr "Enfriar:"
11491412
1150 #: ../../../src/MenuPowers.cpp:866 ../../../src/MenuPowers.cpp:869
1413 #: ../../../src/MenuPowers.cpp:960 ../../../src/MenuPowers.cpp:963
11511414 msgid "Damage per second"
11521415 msgstr "Daño por segundo"
11531416
1154 #: ../../../src/MenuPowers.cpp:872 ../../../src/MenuPowers.cpp:875
1417 #: ../../../src/MenuPowers.cpp:966 ../../../src/MenuPowers.cpp:969
11551418 msgid "HP per second"
11561419 msgstr "PV por segundo"
11571420
1158 #: ../../../src/MenuPowers.cpp:878 ../../../src/MenuPowers.cpp:881
1421 #: ../../../src/MenuPowers.cpp:972 ../../../src/MenuPowers.cpp:975
11591422 msgid "MP per second"
11601423 msgstr "PM por segundo"
11611424
1162 #: ../../../src/MenuPowers.cpp:885
1425 #: ../../../src/MenuPowers.cpp:979
11631426 msgid "Immobilize"
11641427 msgstr "Inmovilizar"
11651428
1166 #: ../../../src/MenuPowers.cpp:893
1429 #: ../../../src/MenuPowers.cpp:987
11671430 msgid "Immunity"
11681431 msgstr "Inmunidad"
11691432
1170 #: ../../../src/MenuPowers.cpp:896
1433 #: ../../../src/MenuPowers.cpp:990
11711434 msgid "Immunity to damage over time"
11721435 msgstr "Inmunidad al daño durante un tiempo"
11731436
1174 #: ../../../src/MenuPowers.cpp:899
1437 #: ../../../src/MenuPowers.cpp:993
11751438 msgid "Immunity to slow"
11761439 msgstr "Inmunidad a la lentidud"
11771440
1178 #: ../../../src/MenuPowers.cpp:902
1441 #: ../../../src/MenuPowers.cpp:996
11791442 msgid "Immunity to stun"
11801443 msgstr "Inmunidad al aturdimiento"
11811444
1182 #: ../../../src/MenuPowers.cpp:905
1445 #: ../../../src/MenuPowers.cpp:999
11831446 msgid "Immunity to HP steal"
11841447 msgstr "Inmunidad al robo de PV"
11851448
1186 #: ../../../src/MenuPowers.cpp:908
1449 #: ../../../src/MenuPowers.cpp:1002
11871450 msgid "Immunity to MP steal"
11881451 msgstr "Inmunidad al robo de PM"
11891452
1190 #: ../../../src/MenuPowers.cpp:911
1453 #: ../../../src/MenuPowers.cpp:1005
11911454 msgid "Immunity to knockback"
11921455 msgstr "Inmunidad al contragolpe"
11931456
1194 #: ../../../src/MenuPowers.cpp:914
1457 #: ../../../src/MenuPowers.cpp:1008
11951458 msgid "Immunity to damage reflection"
11961459 msgstr "Inmunidad a la reflexión de daño"
11971460
1198 #: ../../../src/MenuPowers.cpp:917
1461 #: ../../../src/MenuPowers.cpp:1014
11991462 msgid "Stun"
12001463 msgstr "Aturdir"
12011464
1202 #: ../../../src/MenuPowers.cpp:920
1465 #: ../../../src/MenuPowers.cpp:1017
12031466 msgid "Automatic revive on death"
12041467 msgstr "Revivir automáticamente al morir"
12051468
1206 #: ../../../src/MenuPowers.cpp:923
1469 #: ../../../src/MenuPowers.cpp:1020
12071470 msgid "Convert"
12081471 msgstr "Convertir"
12091472
1210 #: ../../../src/MenuPowers.cpp:926
1473 #: ../../../src/MenuPowers.cpp:1023
12111474 msgid "Fear"
12121475 msgstr "Miedo"
12131476
1214 #: ../../../src/MenuPowers.cpp:929
1477 #: ../../../src/MenuPowers.cpp:1026
12151478 msgid "Lifespan"
12161479 msgstr "Vida"
12171480
1218 #: ../../../src/MenuPowers.cpp:953
1481 #: ../../../src/MenuPowers.cpp:1050
12191482 msgid "Magical Shield"
12201483 msgstr "Armadura mágica"
12211484
1222 #: ../../../src/MenuPowers.cpp:982
1485 #: ../../../src/MenuPowers.cpp:1079
12231486 msgid "Healing"
12241487 msgstr "Sanación"
12251488
1226 #: ../../../src/MenuPowers.cpp:985
1489 #: ../../../src/MenuPowers.cpp:1082
12271490 msgid "Knockback"
12281491 msgstr "Contragolpe"
12291492
1230 #: ../../../src/MenuPowers.cpp:1010
1493 #: ../../../src/MenuPowers.cpp:1106
12311494 #, c-format
12321495 msgid "%d%% chance"
12331496 msgstr "%d%% probabilidad "
12341497
1235 #: ../../../src/MenuPowers.cpp:1062
1498 #: ../../../src/MenuPowers.cpp:1158
12361499 msgid "Base Accuracy"
12371500 msgstr "Exactitud base"
12381501
1239 #: ../../../src/MenuPowers.cpp:1082
1502 #: ../../../src/MenuPowers.cpp:1178
12401503 msgid "Base Critical Chance"
12411504 msgstr "Probabilidad base de crítico"
12421505
1243 #: ../../../src/MenuPowers.cpp:1090
1506 #: ../../../src/MenuPowers.cpp:1186
12441507 msgid "Ignores Absorbtion"
12451508 msgstr "Ignora absorción"
12461509
1247 #: ../../../src/MenuPowers.cpp:1095
1510 #: ../../../src/MenuPowers.cpp:1191
12481511 msgid "Ignores Avoidance"
12491512 msgstr "Ignora evitación"
12501513
1251 #: ../../../src/MenuPowers.cpp:1100
1514 #: ../../../src/MenuPowers.cpp:1196
12521515 #, c-format
12531516 msgid "%d%% Chance to crit slowed targets"
12541517 msgstr "%d%% Probabilidad de crítico en objetivos lentos"
12551518
1256 #: ../../../src/MenuPowers.cpp:1105
1519 #: ../../../src/MenuPowers.cpp:1201
12571520 #, c-format
12581521 msgid "Elemental Damage (%s)"
12591522 msgstr "Daño elemental (%s)"
12601523
1261 #: ../../../src/MenuPowers.cpp:1114
1524 #: ../../../src/MenuPowers.cpp:1210
12621525 #, c-format
12631526 msgid "Requires a %s"
12641527 msgstr "Requiere un/a %s"
12651528
1266 #: ../../../src/MenuPowers.cpp:1151 ../../../src/MenuPowers.cpp:1154
1529 #: ../../../src/MenuPowers.cpp:1248 ../../../src/MenuPowers.cpp:1251
12671530 #, c-format
12681531 msgid "Requires Power: %s"
12691532 msgstr "Requiere Poder: %s"
12701533
1271 #: ../../../src/MenuPowers.cpp:1163
1534 #: ../../../src/MenuPowers.cpp:1260
12721535 msgid "Click to Unlock (uses 1 Skill Point)"
12731536 msgstr "Pulsa para desbloquear (usa 1 punto de habilidad)"
12741537
1275 #: ../../../src/MenuPowers.cpp:1167 ../../../src/MenuPowers.cpp:1169
1538 #: ../../../src/MenuPowers.cpp:1264 ../../../src/MenuPowers.cpp:1266
12761539 msgid "Requires 1 Skill Point"
12771540 msgstr "Requiere 1 punto de habilidad"
12781541
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
1542 #: ../../../src/MenuPowers.cpp:1466
1543 #, c-format
1544 msgid "Available skill points: %d"
1545 msgstr ""
1546
1547 #: ../../../src/MenuPowers.cpp:1498
12901548 msgid "Next Level:"
12911549 msgstr "Siguiente nivel:"
12921550
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
1551 #: ../../../src/MenuStash.cpp:80 ../../../src/MenuStash.cpp:161
1552 msgid "Stash"
1553 msgstr "Almacén"
1554
1555 #: ../../../src/MenuStash.cpp:174 ../../../src/MenuStash.cpp:188
1556 msgid "Private"
1557 msgstr "Privado"
1558
1559 #: ../../../src/MenuStash.cpp:175
1560 msgid "Shared"
1561 msgstr "Compartido"
1562
1563 #: ../../../src/MenuStash.cpp:340
1564 msgid "This item can not be stored in the stash."
1565 msgstr "Este objeto no se puede guardar en el almacén."
1566
1567 #: ../../../src/MenuStash.cpp:345
1568 msgid "This item can not be stored in the private stash."
1569 msgstr "Este objeto no se puede guardar en el almacén privado."
1570
1571 #: ../../../src/MenuStash.cpp:350
1572 msgid "This item can not be stored in the shared stash."
1573 msgstr "Este objeto no se puede guardar en el almacén compartido."
1574
1575 #: ../../../src/MenuStash.cpp:360
13021576 msgid "Stash is full."
13031577 msgstr "Almacén lleno."
13041578
1305 #: ../../../src/MenuTalker.cpp:454
1579 #: ../../../src/MenuStash.cpp:414
1580 #, c-format
1581 msgid "Can not store item in stash: %s"
1582 msgstr "No se puede guardar objeto en el amacén: %s"
1583
1584 #: ../../../src/MenuTalker.cpp:448
1585 #, c-format
1586 msgid "<dialog node %d>"
1587 msgstr "<dialog node %d>"
1588
1589 #: ../../../src/MenuTalker.cpp:456
13061590 msgid "Trade"
13071591 msgstr "Comerciar"
13081592
1309 #: ../../../src/MenuVendor.cpp:58
1593 #: ../../../src/MenuVendor.cpp:60
13101594 msgid "Buyback"
13111595 msgstr "Recompra"
13121596
1313 #: ../../../src/MenuVendor.cpp:279
1597 #: ../../../src/MenuVendor.cpp:283
13141598 msgid "Vendor"
13151599 msgstr "Vendedor"
13161600
1317 #: ../../../src/PowerManager.cpp:1136
1601 #: ../../../src/PowerManager.cpp:1204
13181602 #, c-format
13191603 msgid "+%d Shield"
13201604 msgstr "+%d Escudo"
13211605
1322 #: ../../../src/PowerManager.cpp:1392
1606 #: ../../../src/PowerManager.cpp:1461
13231607 msgid "You are already transformed, untransform first."
13241608 msgstr "Usted ya está transformado, destransformase primero."
13251609
1326 #: ../../../src/PowerManager.cpp:1404
1610 #: ../../../src/PowerManager.cpp:1473
13271611 msgid "Could not untransform at this position."
13281612 msgstr "No se puede quitar la transformación en esta posición."
13291613
13311615 msgid "Completed Quests"
13321616 msgstr "Gestas completadas"
13331617
1334 #: ../../../src/SaveLoad.cpp:243 ../../../src/SaveLoad.cpp:244
1618 #: ../../../src/SaveLoad.cpp:250 ../../../src/SaveLoad.cpp:251
13351619 msgid "Game saved."
13361620 msgstr "Partida guardada."
13371621
1338 #: ../../../src/SDLInputState.cpp:582
1622 #: ../../../src/SDLInputState.cpp:645
1623 msgid "BkSp"
1624 msgstr "Retroceso"
1625
1626 #: ../../../src/SDLInputState.cpp:646
1627 msgid "Caps"
1628 msgstr "BloqMayús"
1629
1630 #: ../../../src/SDLInputState.cpp:647
1631 msgid "Del"
1632 msgstr "Suprimir"
1633
1634 #: ../../../src/SDLInputState.cpp:649 ../../../src/SDLInputState.cpp:679
1635 msgid "End"
1636 msgstr "Fin"
1637
1638 #: ../../../src/SDLInputState.cpp:650
1639 msgid "Esc"
1640 msgstr "Esc"
1641
1642 #: ../../../src/SDLInputState.cpp:651 ../../../src/SDLInputState.cpp:681
1643 msgid "Home"
1644 msgstr "Inicio"
1645
1646 #: ../../../src/SDLInputState.cpp:652
1647 msgid "Ins"
1648 msgstr "Ins"
1649
1650 #: ../../../src/SDLInputState.cpp:653
1651 msgid "LAlt"
1652 msgstr "AltIzq"
1653
1654 #: ../../../src/SDLInputState.cpp:654
1655 msgid "LCtrl"
1656 msgstr "CtrlIzq"
1657
1658 #: ../../../src/SDLInputState.cpp:656
1659 msgid "LShft"
1660 msgstr "MayúsIzq"
1661
1662 #: ../../../src/SDLInputState.cpp:657
1663 msgid "Num"
1664 msgstr "BloqNum"
1665
1666 #: ../../../src/SDLInputState.cpp:658
1667 msgid "PgDn"
1668 msgstr "AvPág"
1669
1670 #: ../../../src/SDLInputState.cpp:659
1671 msgid "PgUp"
1672 msgstr "RePág"
1673
1674 #: ../../../src/SDLInputState.cpp:660 ../../../src/SDLInputState.cpp:690
1675 msgid "Pause"
1676 msgstr "Pausar"
1677
1678 #: ../../../src/SDLInputState.cpp:661
1679 msgid "Print"
1680 msgstr "Impr"
1681
1682 #: ../../../src/SDLInputState.cpp:662
1683 msgid "RAlt"
1684 msgstr "AltDch"
1685
1686 #: ../../../src/SDLInputState.cpp:663
1687 msgid "RCtrl"
1688 msgstr "CtrlDch"
1689
1690 #: ../../../src/SDLInputState.cpp:664
1691 msgid "Ret"
1692 msgstr "Intro"
1693
1694 #: ../../../src/SDLInputState.cpp:666
1695 msgid "RShft"
1696 msgstr "MayúsDch"
1697
1698 #: ../../../src/SDLInputState.cpp:667
1699 msgid "SLock"
1700 msgstr "BloqDespl"
1701
1702 #: ../../../src/SDLInputState.cpp:668
1703 msgid "Spc"
1704 msgstr "Esp"
1705
1706 #: ../../../src/SDLInputState.cpp:669 ../../../src/SDLInputState.cpp:699
1707 msgid "Tab"
1708 msgstr "Tabulador"
1709
1710 #: ../../../src/SDLInputState.cpp:675
13391711 msgid "Backspace"
13401712 msgstr "Retroceso"
13411713
1342 #: ../../../src/SDLInputState.cpp:583
1714 #: ../../../src/SDLInputState.cpp:676
13431715 msgid "CapsLock"
13441716 msgstr "BloqMayús"
13451717
1346 #: ../../../src/SDLInputState.cpp:586
1347 msgid "End"
1348 msgstr "Fin"
1349
1350 #: ../../../src/SDLInputState.cpp:587
1718 #: ../../../src/SDLInputState.cpp:680
13511719 msgid "Escape"
13521720 msgstr "Escape"
13531721
1354 #: ../../../src/SDLInputState.cpp:588
1355 msgid "Home"
1356 msgstr "Inicio"
1357
1358 #: ../../../src/SDLInputState.cpp:589
1722 #: ../../../src/SDLInputState.cpp:682
13591723 msgid "Insert"
13601724 msgstr "Insertar"
13611725
1362 #: ../../../src/SDLInputState.cpp:590
1726 #: ../../../src/SDLInputState.cpp:683
13631727 msgid "Left Alt"
13641728 msgstr "Alt Izquierdo"
13651729
1366 #: ../../../src/SDLInputState.cpp:591
1730 #: ../../../src/SDLInputState.cpp:684
13671731 msgid "Left Ctrl"
13681732 msgstr "Ctrl Izquierdo"
13691733
1370 #: ../../../src/SDLInputState.cpp:593
1734 #: ../../../src/SDLInputState.cpp:686
13711735 msgid "Left Shift"
13721736 msgstr "Mayús Izquierdo"
13731737
1374 #: ../../../src/SDLInputState.cpp:594
1738 #: ../../../src/SDLInputState.cpp:687
13751739 msgid "NumLock"
13761740 msgstr "BloqueoDeNúmeros"
13771741
1378 #: ../../../src/SDLInputState.cpp:595
1742 #: ../../../src/SDLInputState.cpp:688
13791743 msgid "PageDown"
13801744 msgstr "Avanzar Página"
13811745
1382 #: ../../../src/SDLInputState.cpp:596
1746 #: ../../../src/SDLInputState.cpp:689
13831747 msgid "PageUp"
13841748 msgstr "Retroceder Página"
13851749
1386 #: ../../../src/SDLInputState.cpp:597
1387 msgid "Pause"
1388 msgstr "Pausar"
1389
1390 #: ../../../src/SDLInputState.cpp:598
1750 #: ../../../src/SDLInputState.cpp:691
13911751 msgid "PrintScreen"
13921752 msgstr "Imprimir Pantalla"
13931753
1394 #: ../../../src/SDLInputState.cpp:599
1754 #: ../../../src/SDLInputState.cpp:692
13951755 msgid "Right Alt"
13961756 msgstr "Alt Derecho"
13971757
1398 #: ../../../src/SDLInputState.cpp:600
1758 #: ../../../src/SDLInputState.cpp:693
13991759 msgid "Right Ctrl"
14001760 msgstr "Ctrl Derecho"
14011761
1402 #: ../../../src/SDLInputState.cpp:601
1762 #: ../../../src/SDLInputState.cpp:694
14031763 msgid "Return"
14041764 msgstr "Retorno"
14051765
1406 #: ../../../src/SDLInputState.cpp:603
1766 #: ../../../src/SDLInputState.cpp:696
14071767 msgid "Right Shift"
14081768 msgstr "Mayús. derecho"
14091769
1410 #: ../../../src/SDLInputState.cpp:604
1770 #: ../../../src/SDLInputState.cpp:697
14111771 msgid "ScrollLock"
14121772 msgstr "BloqDesplazamiento"
14131773
1414 #: ../../../src/SDLInputState.cpp:605
1774 #: ../../../src/SDLInputState.cpp:698
14151775 msgid "Space"
14161776 msgstr "Espacio"
14171777
1418 #: ../../../src/SDLInputState.cpp:606
1419 msgid "Tab"
1420 msgstr "Tabulador"
1421
1422 #: ../../../src/SDLInputState.cpp:620
1778 #: ../../../src/SDLInputState.cpp:712
1779 #, c-format
1780 msgid "M%d"
1781 msgstr "M%d"
1782
1783 #: ../../../src/SDLInputState.cpp:718
14231784 #, c-format
14241785 msgid "Mouse %d"
14251786 msgstr "Ratón %d"
14261787
1427 #: ../../../src/SDLInputState.cpp:628
1788 #: ../../../src/SDLInputState.cpp:728
1789 #, c-format
1790 msgid "JX%d-"
1791 msgstr "JX%d-"
1792
1793 #: ../../../src/SDLInputState.cpp:730
14281794 #, c-format
14291795 msgid "Axis %d -"
14301796 msgstr "Eje %d -"
14311797
1432 #: ../../../src/SDLInputState.cpp:630
1798 #: ../../../src/SDLInputState.cpp:734
1799 #, c-format
1800 msgid "JX%d+"
1801 msgstr "JX%d+"
1802
1803 #: ../../../src/SDLInputState.cpp:736
14331804 #, c-format
14341805 msgid "Axis %d +"
14351806 msgstr "Eje %d +"
14361807
1437 #: ../../../src/SDLInputState.cpp:633
1808 #: ../../../src/SDLInputState.cpp:741
1809 #, c-format
1810 msgid "JB%d"
1811 msgstr "JB%d"
1812
1813 #: ../../../src/SDLInputState.cpp:743
14381814 #, c-format
14391815 msgid "Button %d"
14401816 msgstr "Botón %d"
14411817
1442 #: ../../../src/SDLInputState.cpp:637
1443 msgid "(none)"
1444 msgstr "(ninguno)"
1445
1446 #: ../../../src/SDLInputState.cpp:677
1818 #: ../../../src/SDLInputState.cpp:789
14471819 msgid "Touch control D-Pad"
14481820 msgstr "Cruceta direccional"
14491821
1450 #: ../../../src/SDLInputState.cpp:701
1822 #: ../../../src/SDLInputState.cpp:812
14511823 msgid "Touch control buttons"
14521824 msgstr "Botones de control táctiles"
14531825
1454 #: ../../../src/SDLInputState.cpp:716
1826 #: ../../../src/SDLInputState.cpp:826
14551827 msgid "Tap"
14561828 msgstr "Palmadita"
14571829
1458 #: ../../../src/SDLInputState.cpp:760 ../../../src/SDLInputState.cpp:764
1459 #: ../../../src/SDLInputState.cpp:768
1830 #: ../../../src/SDLInputState.cpp:878 ../../../src/SDLInputState.cpp:880
1831 #, c-format
1832 msgid "Can not bind: %s"
1833 msgstr "No se puede vincular: %s"
1834
1835 #: ../../../src/SDLInputState.cpp:892 ../../../src/SDLInputState.cpp:896
1836 #: ../../../src/SDLInputState.cpp:900
14601837 #, c-format
14611838 msgid "'%s' is no longer bound to:"
14621839 msgstr "'%s' no está ligado más a:"
16201997 msgid "Base MP"
16211998 msgstr "PM base"
16221999
1623 #: ../../../src/Utils.cpp:346
2000 #: ../../../src/Utils.cpp:365
16242001 msgid "k"
16252002 msgstr "Aceptar"
16262003
1627 #: ../../../src/Utils.cpp:580
2004 #: ../../../src/Utils.cpp:635
16282005 #, c-format
16292006 msgid "%s second"
16302007 msgstr "%s segundo"
16312008
1632 #: ../../../src/Utils.cpp:583
2009 #: ../../../src/Utils.cpp:638
16332010 #, c-format
16342011 msgid "%s seconds"
16352012 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-07-02 13:26-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:1220
122 #: ../../../src/StatBlock.cpp:926 ../../../src/StatBlock.cpp:932
123 #, c-format
124 msgid "+%d HP"
125 msgstr ""
126
127 #: ../../../src/Entity.cpp:572 ../../../src/StatBlock.cpp:937
128 #: ../../../src/StatBlock.cpp:943
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:704
170 msgid "Entering game world..."
171 msgstr ""
172
173 #: ../../../src/GameStateLoad.cpp:707
174 msgid "Loading saved game..."
175 msgstr ""
176
177 #: ../../../src/GameStateLoad.cpp:740
178 msgid "Invalid save"
179 msgstr ""
180
181 #: ../../../src/GameStateLoad.cpp:764 ../../../src/ItemManager.cpp:745
182 #: ../../../src/MenuPowers.cpp:882 ../../../src/MenuPowers.cpp:1241
183 #: ../../../src/MenuPowers.cpp:1653
184 #, c-format
185 msgid "Level %d"
186 msgstr ""
187
188 #: ../../../src/GameStateNew.cpp:66 ../../../src/InputState.cpp:416
189 #: ../../../src/MenuConfig.cpp:254
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:670
243 #: ../../../src/SDLInputState.cpp:700
244 msgid "Up"
245 msgstr ""
246
247 #: ../../../src/InputState.cpp:419 ../../../src/MenuMovementType.cpp:125
248 #: ../../../src/MenuMovementType.cpp:134 ../../../src/SDLInputState.cpp:648
249 #: ../../../src/SDLInputState.cpp:678
250 msgid "Down"
251 msgstr ""
252
253 #: ../../../src/InputState.cpp:420 ../../../src/MenuMovementType.cpp:124
254 #: ../../../src/MenuMovementType.cpp:133 ../../../src/SDLInputState.cpp:655
255 #: ../../../src/SDLInputState.cpp:685
256 msgid "Left"
257 msgstr ""
258
259 #: ../../../src/InputState.cpp:421 ../../../src/MenuMovementType.cpp:126
260 #: ../../../src/MenuMovementType.cpp:135 ../../../src/SDLInputState.cpp:665
261 #: ../../../src/SDLInputState.cpp:695
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:159
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:677
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:981
402 #, c-format
403 msgid "%d%% Speed"
404 msgstr ""
405
406 #: ../../../src/ItemManager.cpp:650 ../../../src/MenuPowers.cpp:984
407 #, c-format
408 msgid "%d%% Attack Speed"
409 msgstr ""
410
411 #: ../../../src/ItemManager.cpp:672 ../../../src/MenuCharacter.cpp:352
412 #: ../../../src/MenuPowers.cpp:953
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:1228
442 #: ../../../src/MenuPowers.cpp:1231
443 #, c-format
444 msgid "Requires Level %d"
445 msgstr ""
446
447 #: ../../../src/ItemManager.cpp:836 ../../../src/MenuPowers.cpp:1220
448 #: ../../../src/MenuPowers.cpp:1222
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:898
479 msgid "Set:"
480 msgstr ""
481
482 #: ../../../src/ItemManager.cpp:905
483 #, c-format
484 msgid "%d items:"
485 msgstr ""
486
487 #: ../../../src/ItemManager.cpp:920
488 #, c-format
489 msgid "Press [%s] to read"
490 msgstr ""
491
492 #: ../../../src/ItemManager.cpp:923
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:1256
569 msgid "Clear"
570 msgstr ""
571
572 #: ../../../src/MenuConfig.cpp:122 ../../../src/MenuConfig.cpp:1254
573 msgid "Assign:"
574 msgstr ""
575
576 #: ../../../src/MenuConfig.cpp:123 ../../../src/MenuConfig.cpp:253
577 msgid "Defaults"
578 msgstr ""
579
580 #: ../../../src/MenuConfig.cpp:123
581 msgid "Reset ALL settings?"
582 msgstr ""
583
584 #: ../../../src/MenuConfig.cpp:252 ../../../src/MenuNumPicker.cpp:49
585 msgid "OK"
586 msgstr ""
587
588 #: ../../../src/MenuConfig.cpp:256 ../../../src/MenuGameOver.cpp:72
589 msgid "Continue"
590 msgstr ""
591
592 #: ../../../src/MenuConfig.cpp:258
593 msgid "Save Game"
594 msgstr ""
595
596 #: ../../../src/MenuConfig.cpp:301 ../../../src/MenuConfig.cpp:352
597 msgid "Default"
598 msgstr ""
599
600 #: ../../../src/MenuConfig.cpp:301
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:302
607 msgid "Show all"
608 msgstr ""
609
610 #: ../../../src/MenuConfig.cpp:302
611 msgid ""
612 "Always show loot tooltips. Temporarily hide all loot tooltips with 'Alt'."
613 msgstr ""
614
615 #: ../../../src/MenuConfig.cpp:303 ../../../src/MenuConfig.cpp:308
616 msgid "Hidden"
617 msgstr ""
618
619 #: ../../../src/MenuConfig.cpp:303
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:306
626 msgid "Visible"
627 msgstr ""
628
629 #: ../../../src/MenuConfig.cpp:307
630 msgid "Visible (2x zoom)"
631 msgstr ""
632
633 #: ../../../src/MenuConfig.cpp:311
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:312
640 msgid "- Display a message"
641 msgstr ""
642
643 #: ../../../src/MenuConfig.cpp:313
644 msgid "- Play a sound"
645 msgstr ""
646
647 #: ../../../src/MenuConfig.cpp:314
648 msgid "- Change the cursor"
649 msgstr ""
650
651 #: ../../../src/MenuConfig.cpp:316
652 msgid "Disabled"
653 msgstr ""
654
655 #: ../../../src/MenuConfig.cpp:317
656 msgid "All"
657 msgstr ""
658
659 #: ../../../src/MenuConfig.cpp:318
660 msgid "Message & Cursor"
661 msgstr ""
662
663 #: ../../../src/MenuConfig.cpp:319
664 msgid "Message & Sound"
665 msgstr ""
666
667 #: ../../../src/MenuConfig.cpp:320
668 msgid "Sound & Cursor"
669 msgstr ""
670
671 #: ../../../src/MenuConfig.cpp:321
672 msgid "Message"
673 msgstr ""
674
675 #: ../../../src/MenuConfig.cpp:322
676 msgid "Cursor"
677 msgstr ""
678
679 #: ../../../src/MenuConfig.cpp:323
680 msgid "Sound"
681 msgstr ""
682
683 #: ../../../src/MenuConfig.cpp:329
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:347
690 msgid "The maximum frame rate that the game will be allowed to run at."
691 msgstr ""
692
693 #: ../../../src/MenuConfig.cpp:351
694 msgid ""
695 "The render size refers to the height in pixels of the surface used to draw "
696 "the game. Mods define the allowed render sizes, but this option allows "
697 "overriding the maximum size."
698 msgstr ""
699
700 #: ../../../src/MenuConfig.cpp:374 ../../../src/MenuConfig.cpp:1679
701 #: ../../../src/MenuGameOver.cpp:116
702 msgid "Exit"
703 msgstr ""
704
705 #: ../../../src/MenuConfig.cpp:375
706 msgid "Video"
707 msgstr ""
708
709 #: ../../../src/MenuConfig.cpp:376
710 msgid "Audio"
711 msgstr ""
712
713 #: ../../../src/MenuConfig.cpp:377
714 msgid "Interface"
715 msgstr ""
716
717 #: ../../../src/MenuConfig.cpp:378
718 msgid "Input"
719 msgstr ""
720
721 #: ../../../src/MenuConfig.cpp:379
722 msgid "Keybindings"
723 msgstr ""
724
725 #: ../../../src/MenuConfig.cpp:380
726 msgid "Mods"
727 msgstr ""
728
729 #: ../../../src/MenuConfig.cpp:392
730 msgid "Paused"
731 msgstr ""
732
733 #: ../../../src/MenuConfig.cpp:395
734 msgid "Time Played"
735 msgstr ""
736
737 #: ../../../src/MenuConfig.cpp:401
738 msgid "Renderer"
739 msgstr ""
740
741 #: ../../../src/MenuConfig.cpp:402
742 msgid "Full Screen Mode"
743 msgstr ""
744
745 #: ../../../src/MenuConfig.cpp:403
746 msgid "Hardware surfaces"
747 msgstr ""
748
749 #: ../../../src/MenuConfig.cpp:404
750 msgid "V-Sync"
751 msgstr ""
752
753 #: ../../../src/MenuConfig.cpp:405
754 msgid "Texture Filtering"
755 msgstr ""
756
757 #: ../../../src/MenuConfig.cpp:406
758 msgid "DPI scaling"
759 msgstr ""
760
761 #: ../../../src/MenuConfig.cpp:407
762 msgid "Parallax Layers"
763 msgstr ""
764
765 #: ../../../src/MenuConfig.cpp:408
766 msgid "Allow changing gamma"
767 msgstr ""
768
769 #: ../../../src/MenuConfig.cpp:409
770 msgid "Gamma"
771 msgstr ""
772
773 #: ../../../src/MenuConfig.cpp:410
774 msgid "Maximum Render Size"
775 msgstr ""
776
777 #: ../../../src/MenuConfig.cpp:411
778 msgid "Frame Limit"
779 msgstr ""
780
781 #: ../../../src/MenuConfig.cpp:413
782 msgid "Sound Volume"
783 msgstr ""
784
785 #: ../../../src/MenuConfig.cpp:414
786 msgid "Music Volume"
787 msgstr ""
788
789 #: ../../../src/MenuConfig.cpp:416
790 msgid "Language"
791 msgstr ""
792
793 #: ../../../src/MenuConfig.cpp:417
794 msgid "Show FPS"
795 msgstr ""
796
797 #: ../../../src/MenuConfig.cpp:418
798 msgid "Hardware mouse cursor"
799 msgstr ""
800
801 #: ../../../src/MenuConfig.cpp:419
802 msgid "Colorblind Mode"
803 msgstr ""
804
805 #: ../../../src/MenuConfig.cpp:420
806 msgid "Developer Mode"
807 msgstr ""
808
809 #: ../../../src/MenuConfig.cpp:421
810 msgid "Subtitles"
811 msgstr ""
812
813 #: ../../../src/MenuConfig.cpp:422
814 msgid "Loot tooltip visibility"
815 msgstr ""
816
817 #: ../../../src/MenuConfig.cpp:423
818 msgid "Mini-map mode"
819 msgstr ""
820
821 #: ../../../src/MenuConfig.cpp:424
822 msgid "Always show stat bar labels"
823 msgstr ""
824
825 #: ../../../src/MenuConfig.cpp:425
826 msgid "Allow stat bar auto-hiding"
827 msgstr ""
828
829 #: ../../../src/MenuConfig.cpp:426
830 msgid "Show combat text"
831 msgstr ""
832
833 #: ../../../src/MenuConfig.cpp:427
834 msgid "Automatically equip items"
835 msgstr ""
836
837 #: ../../../src/MenuConfig.cpp:428
838 msgid "Show hidden entity markers"
839 msgstr ""
840
841 #: ../../../src/MenuConfig.cpp:429
842 msgid "Low health notification"
843 msgstr ""
844
845 #: ../../../src/MenuConfig.cpp:430
846 msgid "Low health threshold"
847 msgstr ""
848
849 #: ../../../src/MenuConfig.cpp:431
850 msgid "Show item comparison tooltips"
851 msgstr ""
852
853 #: ../../../src/MenuConfig.cpp:434 ../../../src/MenuMovementType.cpp:94
854 #: ../../../src/MenuMovementType.cpp:131
855 msgid "Joystick"
856 msgstr ""
857
858 #: ../../../src/MenuConfig.cpp:435
859 msgid "Move hero using mouse"
860 msgstr ""
861
862 #: ../../../src/MenuConfig.cpp:436
863 msgid "Mouse aim"
864 msgstr ""
865
866 #: ../../../src/MenuConfig.cpp:437
867 msgid "Do not use mouse"
868 msgstr ""
869
870 #: ../../../src/MenuConfig.cpp:438
871 msgid "Swap mouse movement button"
872 msgstr ""
873
874 #: ../../../src/MenuConfig.cpp:439
875 msgid "Attack with mouse movement"
876 msgstr ""
877
878 #: ../../../src/MenuConfig.cpp:440
879 msgid "Joystick Deadzone"
880 msgstr ""
881
882 #: ../../../src/MenuConfig.cpp:441
883 msgid "Touch Controls"
884 msgstr ""
885
886 #: ../../../src/MenuConfig.cpp:442
887 msgid "Touch Gamepad Scaling"
888 msgstr ""
889
890 #: ../../../src/MenuConfig.cpp:452
891 #, c-format
892 msgid "Primary binding: %s"
893 msgstr ""
894
895 #: ../../../src/MenuConfig.cpp:453
896 #, c-format
897 msgid "Alternate binding: %s"
898 msgstr ""
899
900 #: ../../../src/MenuConfig.cpp:454
901 #, c-format
902 msgid "Joystick binding: %s"
903 msgstr ""
904
905 #: ../../../src/MenuConfig.cpp:556
906 msgid ""
907 "Will try to store surfaces in video memory versus system memory. The effect "
908 "this has on performance depends on the renderer."
909 msgstr ""
910
911 #: ../../../src/MenuConfig.cpp:557
912 msgid ""
913 "Prevents screen tearing. Disable if you experience \"stuttering\" in "
914 "windowed mode or input lag."
915 msgstr ""
916
917 #: ../../../src/MenuConfig.cpp:558
918 msgid ""
919 "When enabled, this uses the screen DPI in addition to the window dimensions "
920 "to scale the rendering resolution. Otherwise, only the window dimensions are"
921 " used."
922 msgstr ""
923
924 #: ../../../src/MenuConfig.cpp:559
925 msgid ""
926 "This enables parallax (non-tile) layers. Disabling this setting can improve "
927 "performance in some cases."
928 msgstr ""
929
930 #: ../../../src/MenuConfig.cpp:560
931 msgid ""
932 "Enables the below setting that controls the screen gamma level. The behavior"
933 " of the gamma setting can vary between platforms."
934 msgstr ""
935
936 #: ../../../src/MenuConfig.cpp:561
937 msgid ""
938 "Provides additional text for information that is primarily conveyed through "
939 "color."
940 msgstr ""
941
942 #: ../../../src/MenuConfig.cpp:562
943 msgid ""
944 "Some mods will automatically hide the stat bars when they are inactive. "
945 "Disabling this option will keep them displayed at all times."
946 msgstr ""
947
948 #: ../../../src/MenuConfig.cpp:563
949 msgid ""
950 "When enabled, empty equipment slots will be filled with applicable items "
951 "when they are obtained."
952 msgstr ""
953
954 #: ../../../src/MenuConfig.cpp:564
955 msgid ""
956 "Shows a marker above enemies, allies, and the player when they are obscured "
957 "by tall objects."
958 msgstr ""
959
960 #: ../../../src/MenuConfig.cpp:565
961 msgid ""
962 "When enabled, tooltips for equipped items of the same type are shown next to"
963 " standard item tooltips."
964 msgstr ""
965
966 #: ../../../src/MenuConfig.cpp:566
967 msgid ""
968 "This allows the game to be controlled entirely with the keyboard (or "
969 "joystick)."
970 msgstr ""
971
972 #: ../../../src/MenuConfig.cpp:567
973 msgid ""
974 "When 'Move hero using mouse' is enabled, this setting controls if 'Main1' or"
975 " 'Main2' is used to move the hero. If enabled, 'Main2' will move the hero "
976 "instead of 'Main1'."
977 msgstr ""
978
979 #: ../../../src/MenuConfig.cpp:568
980 msgid ""
981 "When 'Move hero using mouse' is enabled, this setting controls if the Power "
982 "assigned to the movement button can be used by targeting an enemy. If this "
983 "setting is disabled, it is required to use 'Shift' to access the Power "
984 "assigned to the movement button."
985 msgstr ""
986
987 #: ../../../src/MenuConfig.cpp:569
988 msgid ""
989 "The player's attacks will be aimed in the direction of the mouse cursor when"
990 " this is enabled."
991 msgstr ""
992
993 #: ../../../src/MenuConfig.cpp:570
994 msgid ""
995 "When enabled, a virtual gamepad will be added in-game. Other interactions, "
996 "such as drag-and-drop behavior, are also altered to better suit touch input."
997 msgstr ""
998
999 #: ../../../src/MenuConfig.cpp:621
1000 msgid "Active Mods"
1001 msgstr ""
1002
1003 #: ../../../src/MenuConfig.cpp:630
1004 msgid "Available Mods"
1005 msgstr ""
1006
1007 #: ../../../src/MenuConfig.cpp:649
1008 msgid "<< Disable"
1009 msgstr ""
1010
1011 #: ../../../src/MenuConfig.cpp:655
1012 msgid "Enable >>"
1013 msgstr ""
1014
1015 #: ../../../src/MenuConfig.cpp:1536
1016 msgid "Version:"
1017 msgstr ""
1018
1019 #: ../../../src/MenuConfig.cpp:1541
1020 msgid "Game:"
1021 msgstr ""
1022
1023 #: ../../../src/MenuConfig.cpp:1546
1024 msgid "Engine version:"
1025 msgstr ""
1026
1027 #: ../../../src/MenuConfig.cpp:1554
1028 msgid "Requires mods:"
1029 msgstr ""
1030
1031 #: ../../../src/MenuConfig.cpp:1662 ../../../src/SDLInputState.cpp:750
1032 msgid "(none)"
1033 msgstr ""
1034
1035 #: ../../../src/MenuConfig.cpp:1679 ../../../src/MenuGameOver.cpp:73
1036 msgid "Save & Exit"
1037 msgstr ""
1038
1039 #: ../../../src/MenuDevConsole.cpp:65
1040 msgid "Execute"
1041 msgstr ""
1042
1043 #: ../../../src/MenuDevConsole.cpp:103 ../../../src/MenuDevConsole.cpp:153
1044 msgid "Developer Console"
1045 msgstr ""
1046
1047 #: ../../../src/MenuDevConsole.cpp:143
1048 #, c-format
1049 msgid "Use '%s' to inspect with the cursor."
1050 msgstr ""
1051
1052 #: ../../../src/MenuDevConsole.cpp:148
1053 msgid "Arguments with spaces should be enclosed with double quotes. Example:"
1054 msgstr ""
1055
1056 #: ../../../src/MenuDevConsole.cpp:149
1057 msgid "Type 'help' to get a list of commands."
1058 msgstr ""
1059
1060 #: ../../../src/MenuDevConsole.cpp:211 ../../../src/MenuDevConsole.cpp:215
1061 msgid "px"
1062 msgstr ""
1063
1064 #: ../../../src/MenuDevConsole.cpp:226
1065 msgid "Distance"
1066 msgstr ""
1067
1068 #: ../../../src/MenuDevConsole.cpp:241 ../../../src/MenuDevConsole.cpp:289
1069 #: ../../../src/MenuDevConsole.cpp:303
1070 msgid "Entity"
1071 msgstr ""
1072
1073 #: ../../../src/MenuDevConsole.cpp:263 ../../../src/MenuDevConsole.cpp:270
1074 msgid "none"
1075 msgstr ""
1076
1077 #: ../../../src/MenuDevConsole.cpp:264 ../../../src/MenuDevConsole.cpp:266
1078 msgid "wall"
1079 msgstr ""
1080
1081 #: ../../../src/MenuDevConsole.cpp:265 ../../../src/MenuDevConsole.cpp:267
1082 msgid "short wall / pit"
1083 msgstr ""
1084
1085 #: ../../../src/MenuDevConsole.cpp:268
1086 msgid "entity"
1087 msgstr ""
1088
1089 #: ../../../src/MenuDevConsole.cpp:269
1090 msgid "entity, ally"
1091 msgstr ""
1092
1093 #: ../../../src/MenuDevConsole.cpp:276
1094 msgid "Tile"
1095 msgstr ""
1096
1097 #: ../../../src/MenuDevConsole.cpp:377
1098 msgid "adds a power to the action bar"
1099 msgstr ""
1100
1101 #: ../../../src/MenuDevConsole.cpp:378
1102 msgid "turns on/off the display of the FPS counter"
1103 msgstr ""
1104
1105 #: ../../../src/MenuDevConsole.cpp:379
1106 msgid "turns on/off all of the HUD elements"
1107 msgstr ""
1108
1109 #: ../../../src/MenuDevConsole.cpp:380
1110 msgid "turns on/off the developer hud"
1111 msgstr ""
1112
1113 #: ../../../src/MenuDevConsole.cpp:381
1114 msgid ""
1115 "Prints a list of powers that match a search term. No search term will list "
1116 "all items"
1117 msgstr ""
1118
1119 #: ../../../src/MenuDevConsole.cpp:382
1120 msgid "Prints out all the map filenames located in the \"maps/\" directory."
1121 msgstr ""
1122
1123 #: ../../../src/MenuDevConsole.cpp:383
1124 msgid ""
1125 "Prints out the active campaign statuses that match a search term. No search "
1126 "term will list all active statuses"
1127 msgstr ""
1128
1129 #: ../../../src/MenuDevConsole.cpp:384
1130 msgid ""
1131 "Prints a list of items that match a search term. No search term will list "
1132 "all items"
1133 msgstr ""
1134
1135 #: ../../../src/MenuDevConsole.cpp:385
1136 msgid ""
1137 "parses a series of event components and executes them as a single event"
1138 msgstr ""
1139
1140 #: ../../../src/MenuDevConsole.cpp:386
1141 msgid "clears the command history"
1142 msgstr ""
1143
1144 #: ../../../src/MenuDevConsole.cpp:387
1145 msgid "displays this text"
1146 msgstr ""
1147
1148 #: ../../../src/MenuDevConsole.cpp:394
1149 msgid "Toggled the developer hud"
1150 msgstr ""
1151
1152 #: ../../../src/MenuDevConsole.cpp:398
1153 msgid "Toggled the hud"
1154 msgstr ""
1155
1156 #: ../../../src/MenuDevConsole.cpp:402
1157 msgid "Toggled the FPS counter"
1158 msgstr ""
1159
1160 #: ../../../src/MenuDevConsole.cpp:552
1161 msgid "ERROR: Incorrect number of arguments"
1162 msgstr ""
1163
1164 #: ../../../src/MenuDevConsole.cpp:554 ../../../src/MenuDevConsole.cpp:582
1165 msgid "HINT:"
1166 msgstr ""
1167
1168 #: ../../../src/MenuDevConsole.cpp:554
1169 msgid "<id>"
1170 msgstr ""
1171
1172 #: ../../../src/MenuDevConsole.cpp:570
1173 #, c-format
1174 msgid "ERROR: '%s' is not a valid event key"
1175 msgstr ""
1176
1177 #: ../../../src/MenuDevConsole.cpp:580
1178 msgid "ERROR: Too few arguments"
1179 msgstr ""
1180
1181 #: ../../../src/MenuDevConsole.cpp:582
1182 msgid "<key>=<val> <key>=<val> ..."
1183 msgstr ""
1184
1185 #: ../../../src/MenuDevConsole.cpp:587
1186 msgid "ERROR: Unknown command"
1187 msgstr ""
1188
1189 #: ../../../src/MenuDevConsole.cpp:589
1190 msgid "HINT: Type help"
1191 msgstr ""
1192
1193 #: ../../../src/MenuEnemy.cpp:162
1194 #, c-format
1195 msgid "%s level %d"
1196 msgstr ""
1197
1198 #: ../../../src/MenuEnemy.cpp:186
1199 msgid "Dead"
1200 msgstr ""
1201
1202 #: ../../../src/MenuEnemy.cpp:188
1203 msgid "Destroyed"
1204 msgstr ""
1205
1206 #: ../../../src/MenuGameOver.cpp:69
1207 msgid "Game Over"
1208 msgstr ""
1209
1210 #: ../../../src/MenuInventory.cpp:178
1211 #, c-format
1212 msgid "Lost %d%% of %s."
1213 msgstr ""
1214
1215 #: ../../../src/MenuInventory.cpp:185
1216 #, c-format
1217 msgid "Lost %d%% of total XP."
1218 msgstr ""
1219
1220 #: ../../../src/MenuInventory.cpp:190
1221 #, c-format
1222 msgid "Lost %d%% of current level XP."
1223 msgstr ""
1224
1225 #: ../../../src/MenuInventory.cpp:216
1226 #, c-format
1227 msgid "Lost %s."
1228 msgstr ""
1229
1230 #: ../../../src/MenuInventory.cpp:258 ../../../src/MenuStash.cpp:276
1231 #, c-format
1232 msgid "%d %s"
1233 msgstr ""
1234
1235 #: ../../../src/MenuInventory.cpp:301
1236 msgid "Pick up item(s):"
1237 msgstr ""
1238
1239 #: ../../../src/MenuInventory.cpp:302
1240 msgid "Use or equip item:"
1241 msgstr ""
1242
1243 #: ../../../src/MenuInventory.cpp:303
1244 #, c-format
1245 msgid "%s modifiers"
1246 msgstr ""
1247
1248 #: ../../../src/MenuInventory.cpp:304
1249 msgid "Select a quantity of item:"
1250 msgstr ""
1251
1252 #: ../../../src/MenuInventory.cpp:307
1253 msgid "Stash item stack:"
1254 msgstr ""
1255
1256 #: ../../../src/MenuInventory.cpp:309
1257 msgid "Sell item stack:"
1258 msgstr ""
1259
1260 #: ../../../src/MenuInventory.cpp:576
1261 msgid "You don't have enough of the required item."
1262 msgstr ""
1263
1264 #: ../../../src/MenuInventory.cpp:588
1265 msgid "You can't use this item right now."
1266 msgstr ""
1267
1268 #: ../../../src/MenuInventory.cpp:600
1269 msgid "This item can only be used from the action bar."
1270 msgstr ""
1271
1272 #: ../../../src/MenuInventory.cpp:718
1273 msgid "Inventory is full."
1274 msgstr ""
1275
1276 #: ../../../src/MenuInventory.cpp:843
1277 #, c-format
1278 msgid "Not enough %s."
1279 msgstr ""
1280
1281 #: ../../../src/MenuInventory.cpp:863 ../../../src/MenuInventory.cpp:870
1282 msgid "This item can not be sold."
1283 msgstr ""
1284
1285 #: ../../../src/MenuLog.cpp:91
1286 msgid "Notes"
1287 msgstr ""
1288
1289 #: ../../../src/MenuLog.cpp:92
1290 msgid "Quests"
1291 msgstr ""
1292
1293 #: ../../../src/MenuManager.cpp:305
1294 #, c-format
1295 msgid "XP: %d/%d"
1296 msgstr ""
1297
1298 #: ../../../src/MenuManager.cpp:875
1299 msgid "This item can not be dropped."
1300 msgstr ""
1301
1302 #: ../../../src/MenuManager.cpp:1501
1303 msgid "Equipped"
1304 msgstr ""
1305
1306 #: ../../../src/MenuMovementType.cpp:87
1307 msgid "Select a Movement Type"
1308 msgstr ""
1309
1310 #: ../../../src/MenuMovementType.cpp:89
1311 msgid "Can be changed later in the Configuration menu."
1312 msgstr ""
1313
1314 #: ../../../src/MenuMovementType.cpp:92 ../../../src/MenuMovementType.cpp:122
1315 msgid "Keyboard"
1316 msgstr ""
1317
1318 #: ../../../src/MenuMovementType.cpp:93 ../../../src/MenuMovementType.cpp:128
1319 msgid "Mouse"
1320 msgstr ""
1321
1322 #: ../../../src/MenuMovementType.cpp:129
1323 msgid "Button"
1324 msgstr ""
1325
1326 #: ../../../src/MenuNumPicker.cpp:59
1327 msgid "Enter amount:"
1328 msgstr ""
1329
1330 #: ../../../src/MenuPowers.cpp:894
1331 msgid "Passive"
1332 msgstr ""
1333
1334 #: ../../../src/MenuPowers.cpp:901
1335 #, c-format
1336 msgid "Costs %d MP"
1337 msgstr ""
1338
1339 #: ../../../src/MenuPowers.cpp:905
1340 #, c-format
1341 msgid "Costs %d HP"
1342 msgstr ""
1343
1344 #: ../../../src/MenuPowers.cpp:909
1345 msgid "Cooldown:"
1346 msgstr ""
1347
1348 #: ../../../src/MenuPowers.cpp:960 ../../../src/MenuPowers.cpp:963
1349 msgid "Damage per second"
1350 msgstr ""
1351
1352 #: ../../../src/MenuPowers.cpp:966 ../../../src/MenuPowers.cpp:969
1353 msgid "HP per second"
1354 msgstr ""
1355
1356 #: ../../../src/MenuPowers.cpp:972 ../../../src/MenuPowers.cpp:975
1357 msgid "MP per second"
1358 msgstr ""
1359
1360 #: ../../../src/MenuPowers.cpp:979
1361 msgid "Immobilize"
1362 msgstr ""
1363
1364 #: ../../../src/MenuPowers.cpp:987
1365 msgid "Immunity"
1366 msgstr ""
1367
1368 #: ../../../src/MenuPowers.cpp:990
1369 msgid "Immunity to damage over time"
1370 msgstr ""
1371
1372 #: ../../../src/MenuPowers.cpp:993
1373 msgid "Immunity to slow"
1374 msgstr ""
1375
1376 #: ../../../src/MenuPowers.cpp:996
1377 msgid "Immunity to stun"
1378 msgstr ""
1379
1380 #: ../../../src/MenuPowers.cpp:999
1381 msgid "Immunity to HP steal"
1382 msgstr ""
1383
1384 #: ../../../src/MenuPowers.cpp:1002
1385 msgid "Immunity to MP steal"
1386 msgstr ""
1387
1388 #: ../../../src/MenuPowers.cpp:1005
1389 msgid "Immunity to knockback"
1390 msgstr ""
1391
1392 #: ../../../src/MenuPowers.cpp:1008
1393 msgid "Immunity to damage reflection"
1394 msgstr ""
1395
1396 #: ../../../src/MenuPowers.cpp:1014
1397 msgid "Stun"
1398 msgstr ""
1399
1400 #: ../../../src/MenuPowers.cpp:1017
1401 msgid "Automatic revive on death"
1402 msgstr ""
1403
1404 #: ../../../src/MenuPowers.cpp:1020
1405 msgid "Convert"
1406 msgstr ""
1407
1408 #: ../../../src/MenuPowers.cpp:1023
1409 msgid "Fear"
1410 msgstr ""
1411
1412 #: ../../../src/MenuPowers.cpp:1026
1413 msgid "Lifespan"
1414 msgstr ""
1415
1416 #: ../../../src/MenuPowers.cpp:1050
1417 msgid "Magical Shield"
1418 msgstr ""
1419
1420 #: ../../../src/MenuPowers.cpp:1079
1421 msgid "Healing"
1422 msgstr ""
1423
1424 #: ../../../src/MenuPowers.cpp:1082
1425 msgid "Knockback"
1426 msgstr ""
1427
1428 #: ../../../src/MenuPowers.cpp:1106
1429 #, c-format
1430 msgid "%d%% chance"
1431 msgstr ""
1432
1433 #: ../../../src/MenuPowers.cpp:1158
1434 msgid "Base Accuracy"
1435 msgstr ""
1436
1437 #: ../../../src/MenuPowers.cpp:1178
1438 msgid "Base Critical Chance"
1439 msgstr ""
1440
1441 #: ../../../src/MenuPowers.cpp:1186
1442 msgid "Ignores Absorbtion"
1443 msgstr ""
1444
1445 #: ../../../src/MenuPowers.cpp:1191
1446 msgid "Ignores Avoidance"
1447 msgstr ""
1448
1449 #: ../../../src/MenuPowers.cpp:1196
1450 #, c-format
1451 msgid "%d%% Chance to crit slowed targets"
1452 msgstr ""
1453
1454 #: ../../../src/MenuPowers.cpp:1201
1455 #, c-format
1456 msgid "Elemental Damage (%s)"
1457 msgstr ""
1458
1459 #: ../../../src/MenuPowers.cpp:1210
1460 #, c-format
1461 msgid "Requires a %s"
1462 msgstr ""
1463
1464 #: ../../../src/MenuPowers.cpp:1248 ../../../src/MenuPowers.cpp:1251
1465 #, c-format
1466 msgid "Requires Power: %s"
1467 msgstr ""
1468
1469 #: ../../../src/MenuPowers.cpp:1260
1470 msgid "Click to Unlock (uses 1 Skill Point)"
1471 msgstr ""
1472
1473 #: ../../../src/MenuPowers.cpp:1264 ../../../src/MenuPowers.cpp:1266
1474 msgid "Requires 1 Skill Point"
1475 msgstr ""
1476
1477 #: ../../../src/MenuPowers.cpp:1466
1478 #, c-format
1479 msgid "Available skill points: %d"
1480 msgstr ""
1481
1482 #: ../../../src/MenuPowers.cpp:1498
1483 msgid "Next Level:"
1484 msgstr ""
1485
1486 #: ../../../src/MenuStash.cpp:80 ../../../src/MenuStash.cpp:161
1487 msgid "Stash"
1488 msgstr ""
1489
1490 #: ../../../src/MenuStash.cpp:174 ../../../src/MenuStash.cpp:188
1491 msgid "Private"
1492 msgstr ""
1493
1494 #: ../../../src/MenuStash.cpp:175
1495 msgid "Shared"
1496 msgstr ""
1497
1498 #: ../../../src/MenuStash.cpp:340
1499 msgid "This item can not be stored in the stash."
1500 msgstr ""
1501
1502 #: ../../../src/MenuStash.cpp:345
1503 msgid "This item can not be stored in the private stash."
1504 msgstr ""
1505
1506 #: ../../../src/MenuStash.cpp:350
1507 msgid "This item can not be stored in the shared stash."
1508 msgstr ""
1509
1510 #: ../../../src/MenuStash.cpp:360
1511 msgid "Stash is full."
1512 msgstr ""
1513
1514 #: ../../../src/MenuStash.cpp:414
1515 #, c-format
1516 msgid "Can not store item in stash: %s"
1517 msgstr ""
1518
1519 #: ../../../src/MenuTalker.cpp:448
1520 #, c-format
1521 msgid "<dialog node %d>"
1522 msgstr ""
1523
1524 #: ../../../src/MenuTalker.cpp:456
1525 msgid "Trade"
1526 msgstr ""
1527
1528 #: ../../../src/MenuVendor.cpp:60
1529 msgid "Buyback"
1530 msgstr ""
1531
1532 #: ../../../src/MenuVendor.cpp:283
1533 msgid "Vendor"
1534 msgstr ""
1535
1536 #: ../../../src/PowerManager.cpp:1204
1537 #, c-format
1538 msgid "+%d Shield"
1539 msgstr ""
1540
1541 #: ../../../src/PowerManager.cpp:1461
1542 msgid "You are already transformed, untransform first."
1543 msgstr ""
1544
1545 #: ../../../src/PowerManager.cpp:1473
1546 msgid "Could not untransform at this position."
1547 msgstr ""
1548
1549 #: ../../../src/QuestLog.cpp:234
1550 msgid "Completed Quests"
1551 msgstr ""
1552
1553 #: ../../../src/SaveLoad.cpp:250 ../../../src/SaveLoad.cpp:251
1554 msgid "Game saved."
1555 msgstr ""
1556
1557 #: ../../../src/SDLInputState.cpp:645
1558 msgid "BkSp"
1559 msgstr ""
1560
1561 #: ../../../src/SDLInputState.cpp:646
1562 msgid "Caps"
1563 msgstr ""
1564
1565 #: ../../../src/SDLInputState.cpp:647
1566 msgid "Del"
1567 msgstr ""
1568
1569 #: ../../../src/SDLInputState.cpp:649 ../../../src/SDLInputState.cpp:679
1570 msgid "End"
1571 msgstr ""
1572
1573 #: ../../../src/SDLInputState.cpp:650
1574 msgid "Esc"
1575 msgstr ""
1576
1577 #: ../../../src/SDLInputState.cpp:651 ../../../src/SDLInputState.cpp:681
1578 msgid "Home"
1579 msgstr ""
1580
1581 #: ../../../src/SDLInputState.cpp:652
1582 msgid "Ins"
1583 msgstr ""
1584
1585 #: ../../../src/SDLInputState.cpp:653
1586 msgid "LAlt"
1587 msgstr ""
1588
1589 #: ../../../src/SDLInputState.cpp:654
1590 msgid "LCtrl"
1591 msgstr ""
1592
1593 #: ../../../src/SDLInputState.cpp:656
1594 msgid "LShft"
1595 msgstr ""
1596
1597 #: ../../../src/SDLInputState.cpp:657
1598 msgid "Num"
1599 msgstr ""
1600
1601 #: ../../../src/SDLInputState.cpp:658
1602 msgid "PgDn"
1603 msgstr ""
1604
1605 #: ../../../src/SDLInputState.cpp:659
1606 msgid "PgUp"
1607 msgstr ""
1608
1609 #: ../../../src/SDLInputState.cpp:660 ../../../src/SDLInputState.cpp:690
1610 msgid "Pause"
1611 msgstr ""
1612
1613 #: ../../../src/SDLInputState.cpp:661
1614 msgid "Print"
1615 msgstr ""
1616
1617 #: ../../../src/SDLInputState.cpp:662
1618 msgid "RAlt"
1619 msgstr ""
1620
1621 #: ../../../src/SDLInputState.cpp:663
1622 msgid "RCtrl"
1623 msgstr ""
1624
1625 #: ../../../src/SDLInputState.cpp:664
1626 msgid "Ret"
1627 msgstr ""
1628
1629 #: ../../../src/SDLInputState.cpp:666
1630 msgid "RShft"
1631 msgstr ""
1632
1633 #: ../../../src/SDLInputState.cpp:667
1634 msgid "SLock"
1635 msgstr ""
1636
1637 #: ../../../src/SDLInputState.cpp:668
1638 msgid "Spc"
1639 msgstr ""
1640
1641 #: ../../../src/SDLInputState.cpp:669 ../../../src/SDLInputState.cpp:699
1642 msgid "Tab"
1643 msgstr ""
1644
1645 #: ../../../src/SDLInputState.cpp:675
1646 msgid "Backspace"
1647 msgstr ""
1648
1649 #: ../../../src/SDLInputState.cpp:676
1650 msgid "CapsLock"
1651 msgstr ""
1652
1653 #: ../../../src/SDLInputState.cpp:680
1654 msgid "Escape"
1655 msgstr ""
1656
1657 #: ../../../src/SDLInputState.cpp:682
1658 msgid "Insert"
1659 msgstr ""
1660
1661 #: ../../../src/SDLInputState.cpp:683
1662 msgid "Left Alt"
1663 msgstr ""
1664
1665 #: ../../../src/SDLInputState.cpp:684
1666 msgid "Left Ctrl"
1667 msgstr ""
1668
1669 #: ../../../src/SDLInputState.cpp:686
1670 msgid "Left Shift"
1671 msgstr ""
1672
1673 #: ../../../src/SDLInputState.cpp:687
1674 msgid "NumLock"
1675 msgstr ""
1676
1677 #: ../../../src/SDLInputState.cpp:688
1678 msgid "PageDown"
1679 msgstr ""
1680
1681 #: ../../../src/SDLInputState.cpp:689
1682 msgid "PageUp"
1683 msgstr ""
1684
1685 #: ../../../src/SDLInputState.cpp:691
1686 msgid "PrintScreen"
1687 msgstr ""
1688
1689 #: ../../../src/SDLInputState.cpp:692
1690 msgid "Right Alt"
1691 msgstr ""
1692
1693 #: ../../../src/SDLInputState.cpp:693
1694 msgid "Right Ctrl"
1695 msgstr ""
1696
1697 #: ../../../src/SDLInputState.cpp:694
1698 msgid "Return"
1699 msgstr ""
1700
1701 #: ../../../src/SDLInputState.cpp:696
1702 msgid "Right Shift"
1703 msgstr ""
1704
1705 #: ../../../src/SDLInputState.cpp:697
1706 msgid "ScrollLock"
1707 msgstr ""
1708
1709 #: ../../../src/SDLInputState.cpp:698
1710 msgid "Space"
1711 msgstr ""
1712
1713 #: ../../../src/SDLInputState.cpp:712
1714 #, c-format
1715 msgid "M%d"
1716 msgstr ""
1717
1718 #: ../../../src/SDLInputState.cpp:718
1719 #, c-format
1720 msgid "Mouse %d"
1721 msgstr ""
1722
1723 #: ../../../src/SDLInputState.cpp:728
1724 #, c-format
1725 msgid "JX%d-"
1726 msgstr ""
1727
1728 #: ../../../src/SDLInputState.cpp:730
1729 #, c-format
1730 msgid "Axis %d -"
1731 msgstr ""
1732
1733 #: ../../../src/SDLInputState.cpp:734
1734 #, c-format
1735 msgid "JX%d+"
1736 msgstr ""
1737
1738 #: ../../../src/SDLInputState.cpp:736
1739 #, c-format
1740 msgid "Axis %d +"
1741 msgstr ""
1742
1743 #: ../../../src/SDLInputState.cpp:741
1744 #, c-format
1745 msgid "JB%d"
1746 msgstr ""
1747
1748 #: ../../../src/SDLInputState.cpp:743
1749 #, c-format
1750 msgid "Button %d"
1751 msgstr ""
1752
1753 #: ../../../src/SDLInputState.cpp:789
1754 msgid "Touch control D-Pad"
1755 msgstr ""
1756
1757 #: ../../../src/SDLInputState.cpp:812
1758 msgid "Touch control buttons"
1759 msgstr ""
1760
1761 #: ../../../src/SDLInputState.cpp:826
1762 msgid "Tap"
1763 msgstr ""
1764
1765 #: ../../../src/SDLInputState.cpp:878 ../../../src/SDLInputState.cpp:880
1766 #, c-format
1767 msgid "Can not bind: %s"
1768 msgstr ""
1769
1770 #: ../../../src/SDLInputState.cpp:892 ../../../src/SDLInputState.cpp:896
1771 #: ../../../src/SDLInputState.cpp:900
1772 #, c-format
1773 msgid "'%s' is no longer bound to:"
1774 msgstr ""
1775
1776 #: ../../../src/Stats.cpp:38
1777 msgid "Max HP"
1778 msgstr ""
1779
1780 #: ../../../src/Stats.cpp:39
1781 msgid "Total amount of HP."
1782 msgstr ""
1783
1784 #: ../../../src/Stats.cpp:43
1785 msgid "HP Regen"
1786 msgstr ""
1787
1788 #: ../../../src/Stats.cpp:44
1789 msgid "Ticks of HP regen per minute."
1790 msgstr ""
1791
1792 #: ../../../src/Stats.cpp:48
1793 msgid "Max MP"
1794 msgstr ""
1795
1796 #: ../../../src/Stats.cpp:49
1797 msgid "Total amount of MP."
1798 msgstr ""
1799
1800 #: ../../../src/Stats.cpp:53
1801 msgid "MP Regen"
1802 msgstr ""
1803
1804 #: ../../../src/Stats.cpp:54
1805 msgid "Ticks of MP regen per minute."
1806 msgstr ""
1807
1808 #: ../../../src/Stats.cpp:58
1809 msgid "Accuracy"
1810 msgstr ""
1811
1812 #: ../../../src/Stats.cpp:59
1813 msgid ""
1814 "Accuracy rating. The enemy's Avoidance rating is subtracted from this value "
1815 "to calculate your likeliness to land a direct hit."
1816 msgstr ""
1817
1818 #: ../../../src/Stats.cpp:63
1819 msgid "Avoidance"
1820 msgstr ""
1821
1822 #: ../../../src/Stats.cpp:64
1823 msgid ""
1824 "Avoidance rating. This value is subtracted from the enemy's Accuracy rating "
1825 "to calculate their likeliness to land a direct hit."
1826 msgstr ""
1827
1828 #: ../../../src/Stats.cpp:68
1829 msgid "Absorb Min"
1830 msgstr ""
1831
1832 #: ../../../src/Stats.cpp:69 ../../../src/Stats.cpp:74
1833 msgid "Reduces the amount of damage taken."
1834 msgstr ""
1835
1836 #: ../../../src/Stats.cpp:73
1837 msgid "Absorb Max"
1838 msgstr ""
1839
1840 #: ../../../src/Stats.cpp:78
1841 msgid "Critical Hit Chance"
1842 msgstr ""
1843
1844 #: ../../../src/Stats.cpp:79
1845 msgid "Chance for an attack to do extra damage."
1846 msgstr ""
1847
1848 #: ../../../src/Stats.cpp:83
1849 msgid "Bonus XP"
1850 msgstr ""
1851
1852 #: ../../../src/Stats.cpp:84
1853 msgid "Increases the XP gained per kill."
1854 msgstr ""
1855
1856 #: ../../../src/Stats.cpp:88
1857 #, c-format
1858 msgid "Bonus %s"
1859 msgstr ""
1860
1861 #: ../../../src/Stats.cpp:89
1862 #, c-format
1863 msgid "Increases the %s found per drop."
1864 msgstr ""
1865
1866 #: ../../../src/Stats.cpp:93
1867 msgid "Item Find Chance"
1868 msgstr ""
1869
1870 #: ../../../src/Stats.cpp:94
1871 msgid "Increases the chance that an enemy will drop an item."
1872 msgstr ""
1873
1874 #: ../../../src/Stats.cpp:98
1875 msgid "Stealth"
1876 msgstr ""
1877
1878 #: ../../../src/Stats.cpp:99
1879 msgid "Increases your ability to move undetected."
1880 msgstr ""
1881
1882 #: ../../../src/Stats.cpp:103
1883 msgid "Poise"
1884 msgstr ""
1885
1886 #: ../../../src/Stats.cpp:104
1887 msgid "Reduces your chance of stumbling when hit."
1888 msgstr ""
1889
1890 #: ../../../src/Stats.cpp:108
1891 msgid "Missile Reflect Chance"
1892 msgstr ""
1893
1894 #: ../../../src/Stats.cpp:109
1895 msgid "Increases your chance of reflecting missiles back at enemies."
1896 msgstr ""
1897
1898 #: ../../../src/Stats.cpp:113
1899 msgid "Damage Reflection"
1900 msgstr ""
1901
1902 #: ../../../src/Stats.cpp:114
1903 msgid "Deals a percentage of damage taken back to the attacker."
1904 msgstr ""
1905
1906 #: ../../../src/Stats.cpp:118
1907 msgid "HP Steal"
1908 msgstr ""
1909
1910 #: ../../../src/Stats.cpp:119
1911 msgid "Percentage of HP stolen per hit."
1912 msgstr ""
1913
1914 #: ../../../src/Stats.cpp:123
1915 msgid "MP Steal"
1916 msgstr ""
1917
1918 #: ../../../src/Stats.cpp:124
1919 msgid "Percentage of MP stolen per hit."
1920 msgstr ""
1921
1922 #: ../../../src/Stats.cpp:128
1923 msgid "Base HP"
1924 msgstr ""
1925
1926 #: ../../../src/Stats.cpp:133
1927 msgid "Base MP"
1928 msgstr ""
1929
1930 #: ../../../src/Utils.cpp:365
1931 msgid "k"
1932 msgstr ""
1933
1934 #: ../../../src/Utils.cpp:635
1935 #, c-format
1936 msgid "%s second"
1937 msgstr ""
1938
1939 #: ../../../src/Utils.cpp:638
1940 #, c-format
1941 msgid "%s seconds"
1942 msgstr ""
1943
1944 #: ../../../src/Version.cpp:139
1945 msgid "or newer"
1946 msgstr ""
1947
1948 #: ../../../src/Version.cpp:142
1949 msgid "or older"
1950 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-07-02 13:26-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:1220
126 #: ../../../src/StatBlock.cpp:926 ../../../src/StatBlock.cpp:932
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:937
132 #: ../../../src/StatBlock.cpp:943
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:704
174 msgid "Entering game world..."
175 msgstr "Saavutaan pelimaailmaan..."
176
177 #: ../../../src/GameStateLoad.cpp:707
178 msgid "Loading saved game..."
179 msgstr "Ladataan tallennettu peli..."
180
181 #: ../../../src/GameStateLoad.cpp:740
182 msgid "Invalid save"
183 msgstr ""
184
185 #: ../../../src/GameStateLoad.cpp:764 ../../../src/ItemManager.cpp:745
186 #: ../../../src/MenuPowers.cpp:882 ../../../src/MenuPowers.cpp:1241
187 #: ../../../src/MenuPowers.cpp:1653
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:254
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:670
247 #: ../../../src/SDLInputState.cpp:700
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:648
253 #: ../../../src/SDLInputState.cpp:678
254 msgid "Down"
255 msgstr "Alas"
256
257 #: ../../../src/InputState.cpp:420 ../../../src/MenuMovementType.cpp:124
258 #: ../../../src/MenuMovementType.cpp:133 ../../../src/SDLInputState.cpp:655
259 #: ../../../src/SDLInputState.cpp:685
260 msgid "Left"
261 msgstr "Vasen"
262
263 #: ../../../src/InputState.cpp:421 ../../../src/MenuMovementType.cpp:126
264 #: ../../../src/MenuMovementType.cpp:135 ../../../src/SDLInputState.cpp:665
265 #: ../../../src/SDLInputState.cpp:695
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:159
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:677
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:981
406 #, c-format
407 msgid "%d%% Speed"
408 msgstr ""
409
410 #: ../../../src/ItemManager.cpp:650 ../../../src/MenuPowers.cpp:984
411 #, c-format
412 msgid "%d%% Attack Speed"
413 msgstr ""
414
415 #: ../../../src/ItemManager.cpp:672 ../../../src/MenuCharacter.cpp:352
416 #: ../../../src/MenuPowers.cpp:953
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:1228
446 #: ../../../src/MenuPowers.cpp:1231
447 #, c-format
448 msgid "Requires Level %d"
449 msgstr "Vaatii tason %d"
450
451 #: ../../../src/ItemManager.cpp:836 ../../../src/MenuPowers.cpp:1220
452 #: ../../../src/MenuPowers.cpp:1222
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:898
483 msgid "Set:"
484 msgstr ""
485
486 #: ../../../src/ItemManager.cpp:905
487 #, c-format
488 msgid "%d items:"
489 msgstr ""
490
491 #: ../../../src/ItemManager.cpp:920
492 #, c-format
493 msgid "Press [%s] to read"
494 msgstr ""
495
496 #: ../../../src/ItemManager.cpp:923
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:1256
573 msgid "Clear"
574 msgstr ""
575
576 #: ../../../src/MenuConfig.cpp:122 ../../../src/MenuConfig.cpp:1254
577 msgid "Assign:"
578 msgstr ""
579
580 #: ../../../src/MenuConfig.cpp:123 ../../../src/MenuConfig.cpp:253
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:252 ../../../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:256 ../../../src/MenuGameOver.cpp:72
593 msgid "Continue"
594 msgstr ""
595
596 #: ../../../src/MenuConfig.cpp:258
597 msgid "Save Game"
598 msgstr ""
599
600 #: ../../../src/MenuConfig.cpp:301 ../../../src/MenuConfig.cpp:352
601 msgid "Default"
602 msgstr ""
603
604 #: ../../../src/MenuConfig.cpp:301
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:302
611 msgid "Show all"
612 msgstr ""
613
614 #: ../../../src/MenuConfig.cpp:302
615 msgid ""
616 "Always show loot tooltips. Temporarily hide all loot tooltips with 'Alt'."
617 msgstr ""
618
619 #: ../../../src/MenuConfig.cpp:303 ../../../src/MenuConfig.cpp:308
620 msgid "Hidden"
621 msgstr ""
622
623 #: ../../../src/MenuConfig.cpp:303
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:306
630 msgid "Visible"
631 msgstr ""
632
633 #: ../../../src/MenuConfig.cpp:307
634 msgid "Visible (2x zoom)"
635 msgstr ""
636
637 #: ../../../src/MenuConfig.cpp:311
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:312
644 msgid "- Display a message"
645 msgstr ""
646
647 #: ../../../src/MenuConfig.cpp:313
648 msgid "- Play a sound"
649 msgstr ""
650
651 #: ../../../src/MenuConfig.cpp:314
652 msgid "- Change the cursor"
653 msgstr ""
654
655 #: ../../../src/MenuConfig.cpp:316
656 msgid "Disabled"
657 msgstr ""
658
659 #: ../../../src/MenuConfig.cpp:317
660 msgid "All"
661 msgstr ""
662
663 #: ../../../src/MenuConfig.cpp:318
664 msgid "Message & Cursor"
665 msgstr ""
666
667 #: ../../../src/MenuConfig.cpp:319
668 msgid "Message & Sound"
669 msgstr ""
670
671 #: ../../../src/MenuConfig.cpp:320
672 msgid "Sound & Cursor"
673 msgstr ""
674
675 #: ../../../src/MenuConfig.cpp:321
676 msgid "Message"
677 msgstr ""
678
679 #: ../../../src/MenuConfig.cpp:322
680 msgid "Cursor"
681 msgstr ""
682
683 #: ../../../src/MenuConfig.cpp:323
684 msgid "Sound"
685 msgstr ""
686
687 #: ../../../src/MenuConfig.cpp:329
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:347
694 msgid "The maximum frame rate that the game will be allowed to run at."
695 msgstr ""
696
697 #: ../../../src/MenuConfig.cpp:351
698 msgid ""
699 "The render size refers to the height in pixels of the surface used to draw "
700 "the game. Mods define the allowed render sizes, but this option allows "
701 "overriding the maximum size."
702 msgstr ""
703
704 #: ../../../src/MenuConfig.cpp:374 ../../../src/MenuConfig.cpp:1679
705 #: ../../../src/MenuGameOver.cpp:116
706 msgid "Exit"
707 msgstr "Poistu"
708
709 #: ../../../src/MenuConfig.cpp:375
710 msgid "Video"
711 msgstr "Video"
712
713 #: ../../../src/MenuConfig.cpp:376
152714 msgid "Audio"
153715 msgstr "Audio"
154716
155 #: ../../../src/GameStateConfigBase.cpp:161
156 #: ../../../src/GameStateConfigDesktop.cpp:131
717 #: ../../../src/MenuConfig.cpp:377
157718 msgid "Interface"
158719 msgstr "Käyttöliittymä"
159720
160 #: ../../../src/GameStateConfigBase.cpp:162
161 #: ../../../src/GameStateConfigDesktop.cpp:134
721 #: ../../../src/MenuConfig.cpp:378
722 msgid "Input"
723 msgstr "Ohjaus"
724
725 #: ../../../src/MenuConfig.cpp:379
726 msgid "Keybindings"
727 msgstr "Näppäimet"
728
729 #: ../../../src/MenuConfig.cpp:380
162730 msgid "Mods"
163731 msgstr "Modit"
164732
165 #: ../../../src/GameStateConfigBase.cpp:249 ../../../src/MenuExit.cpp:72
733 #: ../../../src/MenuConfig.cpp:392
734 msgid "Paused"
735 msgstr ""
736
737 #: ../../../src/MenuConfig.cpp:395
738 msgid "Time Played"
739 msgstr ""
740
741 #: ../../../src/MenuConfig.cpp:401
742 msgid "Renderer"
743 msgstr ""
744
745 #: ../../../src/MenuConfig.cpp:402
746 msgid "Full Screen Mode"
747 msgstr "Täysi ruutu"
748
749 #: ../../../src/MenuConfig.cpp:403
750 msgid "Hardware surfaces"
751 msgstr "Hardware surfaces"
752
753 #: ../../../src/MenuConfig.cpp:404
754 msgid "V-Sync"
755 msgstr ""
756
757 #: ../../../src/MenuConfig.cpp:405
758 msgid "Texture Filtering"
759 msgstr ""
760
761 #: ../../../src/MenuConfig.cpp:406
762 msgid "DPI scaling"
763 msgstr ""
764
765 #: ../../../src/MenuConfig.cpp:407
766 msgid "Parallax Layers"
767 msgstr ""
768
769 #: ../../../src/MenuConfig.cpp:408
770 msgid "Allow changing gamma"
771 msgstr "Salli gamma-muutokset"
772
773 #: ../../../src/MenuConfig.cpp:409
774 msgid "Gamma"
775 msgstr "Gamma"
776
777 #: ../../../src/MenuConfig.cpp:410
778 msgid "Maximum Render Size"
779 msgstr ""
780
781 #: ../../../src/MenuConfig.cpp:411
782 msgid "Frame Limit"
783 msgstr ""
784
785 #: ../../../src/MenuConfig.cpp:413
786 msgid "Sound Volume"
787 msgstr "äänenvoimakkuus"
788
789 #: ../../../src/MenuConfig.cpp:414
166790 msgid "Music Volume"
167791 msgstr "Musiikin voimakkuus"
168792
169 #: ../../../src/GameStateConfigBase.cpp:253 ../../../src/MenuExit.cpp:77
170 msgid "Sound Volume"
171 msgstr "äänenvoimakkuus"
172
173 #: ../../../src/GameStateConfigBase.cpp:257
793 #: ../../../src/MenuConfig.cpp:416
174794 msgid "Language"
175795 msgstr "Kieli"
176796
177 #: ../../../src/GameStateConfigBase.cpp:266
797 #: ../../../src/MenuConfig.cpp:417
178798 msgid "Show FPS"
179799 msgstr "Näytä päivitystaso (FPS)"
180800
181 #: ../../../src/GameStateConfigBase.cpp:270
801 #: ../../../src/MenuConfig.cpp:418
802 msgid "Hardware mouse cursor"
803 msgstr ""
804
805 #: ../../../src/MenuConfig.cpp:419
182806 msgid "Colorblind Mode"
183807 msgstr ""
184808
185 #: ../../../src/GameStateConfigBase.cpp:274
186 msgid "Hardware mouse cursor"
187 msgstr ""
188
189 #: ../../../src/GameStateConfigBase.cpp:278
809 #: ../../../src/MenuConfig.cpp:420
190810 msgid "Developer Mode"
191811 msgstr ""
192812
193 #: ../../../src/GameStateConfigBase.cpp:282
813 #: ../../../src/MenuConfig.cpp:421
194814 msgid "Subtitles"
195815 msgstr ""
196816
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
817 #: ../../../src/MenuConfig.cpp:422
818 msgid "Loot tooltip visibility"
819 msgstr ""
820
821 #: ../../../src/MenuConfig.cpp:423
822 msgid "Mini-map mode"
823 msgstr ""
824
825 #: ../../../src/MenuConfig.cpp:424
826 msgid "Always show stat bar labels"
827 msgstr ""
828
829 #: ../../../src/MenuConfig.cpp:425
830 msgid "Allow stat bar auto-hiding"
831 msgstr ""
832
833 #: ../../../src/MenuConfig.cpp:426
834 msgid "Show combat text"
835 msgstr "Näytä taisteluteksti"
836
837 #: ../../../src/MenuConfig.cpp:427
838 msgid "Automatically equip items"
839 msgstr ""
840
841 #: ../../../src/MenuConfig.cpp:428
842 msgid "Show hidden entity markers"
843 msgstr ""
844
845 #: ../../../src/MenuConfig.cpp:429
846 msgid "Low health notification"
847 msgstr ""
848
849 #: ../../../src/MenuConfig.cpp:430
850 msgid "Low health threshold"
851 msgstr ""
852
853 #: ../../../src/MenuConfig.cpp:431
854 msgid "Show item comparison tooltips"
855 msgstr ""
856
857 #: ../../../src/MenuConfig.cpp:434 ../../../src/MenuMovementType.cpp:94
858 #: ../../../src/MenuMovementType.cpp:131
859 msgid "Joystick"
860 msgstr "Peliohjain"
861
862 #: ../../../src/MenuConfig.cpp:435
863 msgid "Move hero using mouse"
864 msgstr "Liikuta sankaria hiirellä"
865
866 #: ../../../src/MenuConfig.cpp:436
867 msgid "Mouse aim"
868 msgstr "Hiiritähtäys"
869
870 #: ../../../src/MenuConfig.cpp:437
871 msgid "Do not use mouse"
872 msgstr ""
873
874 #: ../../../src/MenuConfig.cpp:438
875 msgid "Swap mouse movement button"
876 msgstr ""
877
878 #: ../../../src/MenuConfig.cpp:439
879 msgid "Attack with mouse movement"
880 msgstr ""
881
882 #: ../../../src/MenuConfig.cpp:440
883 msgid "Joystick Deadzone"
884 msgstr ""
885
886 #: ../../../src/MenuConfig.cpp:441
887 msgid "Touch Controls"
888 msgstr ""
889
890 #: ../../../src/MenuConfig.cpp:442
891 msgid "Touch Gamepad Scaling"
892 msgstr ""
893
894 #: ../../../src/MenuConfig.cpp:452
895 #, c-format
896 msgid "Primary binding: %s"
897 msgstr ""
898
899 #: ../../../src/MenuConfig.cpp:453
900 #, c-format
901 msgid "Alternate binding: %s"
902 msgstr ""
903
904 #: ../../../src/MenuConfig.cpp:454
905 #, c-format
906 msgid "Joystick binding: %s"
907 msgstr ""
908
909 #: ../../../src/MenuConfig.cpp:556
252910 msgid ""
253911 "Will try to store surfaces in video memory versus system memory. The effect "
254912 "this has on performance depends on the renderer."
255913 msgstr ""
256914
257 #: ../../../src/GameStateConfigDesktop.cpp:189
915 #: ../../../src/MenuConfig.cpp:557
258916 msgid ""
259917 "Prevents screen tearing. Disable if you experience \"stuttering\" in "
260918 "windowed mode or input lag."
261919 msgstr ""
262920
263 #: ../../../src/GameStateConfigDesktop.cpp:190
921 #: ../../../src/MenuConfig.cpp:558
264922 msgid ""
265923 "When enabled, this uses the screen DPI in addition to the window dimensions "
266924 "to scale the rendering resolution. Otherwise, only the window dimensions are"
267925 " used."
268926 msgstr ""
269927
270 #: ../../../src/GameStateConfigDesktop.cpp:191
928 #: ../../../src/MenuConfig.cpp:559
271929 msgid ""
272930 "This enables parallax (non-tile) layers. Disabling this setting can improve "
273931 "performance in some cases."
274932 msgstr ""
275933
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
934 #: ../../../src/MenuConfig.cpp:560
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 #: ../../../src/MenuConfig.cpp:561
941 msgid ""
942 "Provides additional text for information that is primarily conveyed through "
943 "color."
944 msgstr ""
945
946 #: ../../../src/MenuConfig.cpp:562
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 #: ../../../src/MenuConfig.cpp:563
953 msgid ""
954 "When enabled, empty equipment slots will be filled with applicable items "
955 "when they are obtained."
956 msgstr ""
957
958 #: ../../../src/MenuConfig.cpp:564
959 msgid ""
960 "Shows a marker above enemies, allies, and the player when they are obscured "
961 "by tall objects."
962 msgstr ""
963
964 #: ../../../src/MenuConfig.cpp:565
965 msgid ""
966 "When enabled, tooltips for equipped items of the same type are shown next to"
967 " standard item tooltips."
968 msgstr ""
969
970 #: ../../../src/MenuConfig.cpp:566
971 msgid ""
972 "This allows the game to be controlled entirely with the keyboard (or "
973 "joystick)."
974 msgstr ""
975
976 #: ../../../src/MenuConfig.cpp:567
977 msgid ""
978 "When 'Move hero using mouse' is enabled, this setting controls if 'Main1' or"
979 " 'Main2' is used to move the hero. If enabled, 'Main2' will move the hero "
980 "instead of 'Main1'."
981 msgstr ""
982
983 #: ../../../src/MenuConfig.cpp:568
984 msgid ""
985 "When 'Move hero using mouse' is enabled, this setting controls if the Power "
986 "assigned to the movement button can be used by targeting an enemy. If this "
987 "setting is disabled, it is required to use 'Shift' to access the Power "
988 "assigned to the movement button."
989 msgstr ""
990
991 #: ../../../src/MenuConfig.cpp:569
992 msgid ""
993 "The player's attacks will be aimed in the direction of the mouse cursor when"
994 " this is enabled."
995 msgstr ""
996
997 #: ../../../src/MenuConfig.cpp:570
998 msgid ""
999 "When enabled, a virtual gamepad will be added in-game. Other interactions, "
1000 "such as drag-and-drop behavior, are also altered to better suit touch input."
1001 msgstr ""
1002
1003 #: ../../../src/MenuConfig.cpp:621
1004 msgid "Active Mods"
1005 msgstr "Käytössäolevat modit"
1006
1007 #: ../../../src/MenuConfig.cpp:630
1008 msgid "Available Mods"
1009 msgstr "Saatavilla olevat modit"
1010
1011 #: ../../../src/MenuConfig.cpp:649
1012 msgid "<< Disable"
1013 msgstr "<< Poista käytöstä"
1014
1015 #: ../../../src/MenuConfig.cpp:655
1016 msgid "Enable >>"
1017 msgstr "Ota käyttöön >>"
1018
1019 #: ../../../src/MenuConfig.cpp:1536
1020 msgid "Version:"
1021 msgstr ""
1022
1023 #: ../../../src/MenuConfig.cpp:1541
1024 msgid "Game:"
1025 msgstr ""
1026
1027 #: ../../../src/MenuConfig.cpp:1546
1028 msgid "Engine version:"
1029 msgstr ""
1030
1031 #: ../../../src/MenuConfig.cpp:1554
1032 msgid "Requires mods:"
1033 msgstr ""
1034
1035 #: ../../../src/MenuConfig.cpp:1662 ../../../src/SDLInputState.cpp:750
1036 msgid "(none)"
1037 msgstr ""
1038
1039 #: ../../../src/MenuConfig.cpp:1679 ../../../src/MenuGameOver.cpp:73
1040 msgid "Save & Exit"
1041 msgstr ""
1042
1043 #: ../../../src/MenuDevConsole.cpp:65
8191044 msgid "Execute"
8201045 msgstr ""
8211046
822 #: ../../../src/MenuDevConsole.cpp:101 ../../../src/MenuDevConsole.cpp:151
1047 #: ../../../src/MenuDevConsole.cpp:103 ../../../src/MenuDevConsole.cpp:153
8231048 msgid "Developer Console"
8241049 msgstr ""
8251050
826 #: ../../../src/MenuDevConsole.cpp:141
1051 #: ../../../src/MenuDevConsole.cpp:143
8271052 #, c-format
8281053 msgid "Use '%s' to inspect with the cursor."
8291054 msgstr ""
8301055
831 #: ../../../src/MenuDevConsole.cpp:146
1056 #: ../../../src/MenuDevConsole.cpp:148
8321057 msgid "Arguments with spaces should be enclosed with double quotes. Example:"
8331058 msgstr ""
8341059
835 #: ../../../src/MenuDevConsole.cpp:147
1060 #: ../../../src/MenuDevConsole.cpp:149
8361061 msgid "Type 'help' to get a list of commands."
8371062 msgstr ""
8381063
839 #: ../../../src/MenuDevConsole.cpp:209 ../../../src/MenuDevConsole.cpp:213
1064 #: ../../../src/MenuDevConsole.cpp:211 ../../../src/MenuDevConsole.cpp:215
8401065 msgid "px"
8411066 msgstr ""
8421067
843 #: ../../../src/MenuDevConsole.cpp:224
1068 #: ../../../src/MenuDevConsole.cpp:226
8441069 msgid "Distance"
8451070 msgstr ""
8461071
847 #: ../../../src/MenuDevConsole.cpp:239 ../../../src/MenuDevConsole.cpp:286
1072 #: ../../../src/MenuDevConsole.cpp:241 ../../../src/MenuDevConsole.cpp:289
1073 #: ../../../src/MenuDevConsole.cpp:303
8481074 msgid "Entity"
8491075 msgstr ""
8501076
851 #: ../../../src/MenuDevConsole.cpp:261 ../../../src/MenuDevConsole.cpp:268
1077 #: ../../../src/MenuDevConsole.cpp:263 ../../../src/MenuDevConsole.cpp:270
8521078 msgid "none"
8531079 msgstr ""
8541080
855 #: ../../../src/MenuDevConsole.cpp:262 ../../../src/MenuDevConsole.cpp:264
1081 #: ../../../src/MenuDevConsole.cpp:264 ../../../src/MenuDevConsole.cpp:266
8561082 msgid "wall"
8571083 msgstr ""
8581084
859 #: ../../../src/MenuDevConsole.cpp:263 ../../../src/MenuDevConsole.cpp:265
1085 #: ../../../src/MenuDevConsole.cpp:265 ../../../src/MenuDevConsole.cpp:267
8601086 msgid "short wall / pit"
8611087 msgstr ""
8621088
863 #: ../../../src/MenuDevConsole.cpp:266
1089 #: ../../../src/MenuDevConsole.cpp:268
8641090 msgid "entity"
8651091 msgstr ""
8661092
867 #: ../../../src/MenuDevConsole.cpp:267
1093 #: ../../../src/MenuDevConsole.cpp:269
8681094 msgid "entity, ally"
8691095 msgstr ""
8701096
871 #: ../../../src/MenuDevConsole.cpp:274
1097 #: ../../../src/MenuDevConsole.cpp:276
8721098 msgid "Tile"
8731099 msgstr ""
8741100
875 #: ../../../src/MenuDevConsole.cpp:360
1101 #: ../../../src/MenuDevConsole.cpp:377
8761102 msgid "adds a power to the action bar"
8771103 msgstr ""
8781104
879 #: ../../../src/MenuDevConsole.cpp:361
1105 #: ../../../src/MenuDevConsole.cpp:378
8801106 msgid "turns on/off the display of the FPS counter"
8811107 msgstr ""
8821108
883 #: ../../../src/MenuDevConsole.cpp:362
1109 #: ../../../src/MenuDevConsole.cpp:379
8841110 msgid "turns on/off all of the HUD elements"
8851111 msgstr ""
8861112
887 #: ../../../src/MenuDevConsole.cpp:363
1113 #: ../../../src/MenuDevConsole.cpp:380
8881114 msgid "turns on/off the developer hud"
8891115 msgstr ""
8901116
891 #: ../../../src/MenuDevConsole.cpp:364
1117 #: ../../../src/MenuDevConsole.cpp:381
8921118 msgid ""
8931119 "Prints a list of powers that match a search term. No search term will list "
8941120 "all items"
8951121 msgstr ""
8961122
897 #: ../../../src/MenuDevConsole.cpp:365
1123 #: ../../../src/MenuDevConsole.cpp:382
8981124 msgid "Prints out all the map filenames located in the \"maps/\" directory."
8991125 msgstr ""
9001126
901 #: ../../../src/MenuDevConsole.cpp:366
1127 #: ../../../src/MenuDevConsole.cpp:383
9021128 msgid ""
9031129 "Prints out the active campaign statuses that match a search term. No search "
9041130 "term will list all active statuses"
9051131 msgstr ""
9061132
907 #: ../../../src/MenuDevConsole.cpp:367
1133 #: ../../../src/MenuDevConsole.cpp:384
9081134 msgid ""
9091135 "Prints a list of items that match a search term. No search term will list "
9101136 "all items"
9111137 msgstr ""
9121138
913 #: ../../../src/MenuDevConsole.cpp:368
1139 #: ../../../src/MenuDevConsole.cpp:385
9141140 msgid ""
9151141 "parses a series of event components and executes them as a single event"
9161142 msgstr ""
9171143
918 #: ../../../src/MenuDevConsole.cpp:369
1144 #: ../../../src/MenuDevConsole.cpp:386
9191145 msgid "clears the command history"
9201146 msgstr ""
9211147
922 #: ../../../src/MenuDevConsole.cpp:370
1148 #: ../../../src/MenuDevConsole.cpp:387
9231149 msgid "displays this text"
9241150 msgstr ""
9251151
926 #: ../../../src/MenuDevConsole.cpp:377
1152 #: ../../../src/MenuDevConsole.cpp:394
9271153 msgid "Toggled the developer hud"
9281154 msgstr ""
9291155
930 #: ../../../src/MenuDevConsole.cpp:381
1156 #: ../../../src/MenuDevConsole.cpp:398
9311157 msgid "Toggled the hud"
9321158 msgstr ""
9331159
934 #: ../../../src/MenuDevConsole.cpp:385
1160 #: ../../../src/MenuDevConsole.cpp:402
9351161 msgid "Toggled the FPS counter"
9361162 msgstr ""
9371163
938 #: ../../../src/MenuDevConsole.cpp:534
1164 #: ../../../src/MenuDevConsole.cpp:552
9391165 msgid "ERROR: Incorrect number of arguments"
9401166 msgstr ""
9411167
942 #: ../../../src/MenuDevConsole.cpp:536 ../../../src/MenuDevConsole.cpp:564
1168 #: ../../../src/MenuDevConsole.cpp:554 ../../../src/MenuDevConsole.cpp:582
9431169 msgid "HINT:"
9441170 msgstr ""
9451171
946 #: ../../../src/MenuDevConsole.cpp:536
1172 #: ../../../src/MenuDevConsole.cpp:554
9471173 msgid "<id>"
9481174 msgstr ""
9491175
950 #: ../../../src/MenuDevConsole.cpp:552
1176 #: ../../../src/MenuDevConsole.cpp:570
9511177 #, c-format
9521178 msgid "ERROR: '%s' is not a valid event key"
9531179 msgstr ""
9541180
955 #: ../../../src/MenuDevConsole.cpp:562
1181 #: ../../../src/MenuDevConsole.cpp:580
9561182 msgid "ERROR: Too few arguments"
9571183 msgstr ""
9581184
959 #: ../../../src/MenuDevConsole.cpp:564
1185 #: ../../../src/MenuDevConsole.cpp:582
9601186 msgid "<key>=<val> <key>=<val> ..."
9611187 msgstr ""
9621188
963 #: ../../../src/MenuDevConsole.cpp:569
1189 #: ../../../src/MenuDevConsole.cpp:587
9641190 msgid "ERROR: Unknown command"
9651191 msgstr ""
9661192
967 #: ../../../src/MenuDevConsole.cpp:571
1193 #: ../../../src/MenuDevConsole.cpp:589
9681194 msgid "HINT: Type help"
9691195 msgstr ""
9701196
971 #: ../../../src/MenuEnemy.cpp:138
1197 #: ../../../src/MenuEnemy.cpp:162
9721198 #, c-format
9731199 msgid "%s level %d"
9741200 msgstr "%s taso %d"
9751201
976 #: ../../../src/MenuEnemy.cpp:162
1202 #: ../../../src/MenuEnemy.cpp:186
9771203 msgid "Dead"
9781204 msgstr "Kuollut"
9791205
980 #: ../../../src/MenuEnemy.cpp:164
1206 #: ../../../src/MenuEnemy.cpp:188
9811207 msgid "Destroyed"
9821208 msgstr ""
9831209
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
1210 #: ../../../src/MenuGameOver.cpp:69
1211 msgid "Game Over"
1212 msgstr ""
1213
1214 #: ../../../src/MenuInventory.cpp:178
10051215 #, c-format
10061216 msgid "Lost %d%% of %s."
10071217 msgstr ""
10081218
1009 #: ../../../src/MenuInventory.cpp:195
1219 #: ../../../src/MenuInventory.cpp:185
10101220 #, c-format
10111221 msgid "Lost %d%% of total XP."
10121222 msgstr ""
10131223
1014 #: ../../../src/MenuInventory.cpp:200
1224 #: ../../../src/MenuInventory.cpp:190
10151225 #, c-format
10161226 msgid "Lost %d%% of current level XP."
10171227 msgstr ""
10181228
1019 #: ../../../src/MenuInventory.cpp:226
1229 #: ../../../src/MenuInventory.cpp:216
10201230 #, c-format
10211231 msgid "Lost %s."
10221232 msgstr ""
10231233
1024 #: ../../../src/MenuInventory.cpp:274 ../../../src/MenuStash.cpp:146
1234 #: ../../../src/MenuInventory.cpp:258 ../../../src/MenuStash.cpp:276
10251235 #, c-format
10261236 msgid "%d %s"
10271237 msgstr ""
10281238
1029 #: ../../../src/MenuInventory.cpp:317
1239 #: ../../../src/MenuInventory.cpp:301
10301240 msgid "Pick up item(s):"
10311241 msgstr ""
10321242
1033 #: ../../../src/MenuInventory.cpp:318
1243 #: ../../../src/MenuInventory.cpp:302
10341244 msgid "Use or equip item:"
10351245 msgstr ""
10361246
1037 #: ../../../src/MenuInventory.cpp:319
1247 #: ../../../src/MenuInventory.cpp:303
10381248 #, c-format
10391249 msgid "%s modifiers"
10401250 msgstr ""
10411251
1042 #: ../../../src/MenuInventory.cpp:320
1252 #: ../../../src/MenuInventory.cpp:304
10431253 msgid "Select a quantity of item:"
10441254 msgstr ""
10451255
1046 #: ../../../src/MenuInventory.cpp:323
1256 #: ../../../src/MenuInventory.cpp:307
10471257 msgid "Stash item stack:"
10481258 msgstr ""
10491259
1050 #: ../../../src/MenuInventory.cpp:325
1260 #: ../../../src/MenuInventory.cpp:309
10511261 msgid "Sell item stack:"
10521262 msgstr ""
10531263
1054 #: ../../../src/MenuInventory.cpp:592
1264 #: ../../../src/MenuInventory.cpp:576
10551265 msgid "You don't have enough of the required item."
10561266 msgstr ""
10571267
1058 #: ../../../src/MenuInventory.cpp:599
1268 #: ../../../src/MenuInventory.cpp:588
10591269 msgid "You can't use this item right now."
10601270 msgstr ""
10611271
1062 #: ../../../src/MenuInventory.cpp:611
1272 #: ../../../src/MenuInventory.cpp:600
10631273 msgid "This item can only be used from the action bar."
10641274 msgstr "Tätä tavaraa voit käyttää vain toimintapalkista."
10651275
1066 #: ../../../src/MenuInventory.cpp:729
1276 #: ../../../src/MenuInventory.cpp:718
10671277 msgid "Inventory is full."
10681278 msgstr "Tavaraluettelo on täynnä."
10691279
1070 #: ../../../src/MenuInventory.cpp:849
1280 #: ../../../src/MenuInventory.cpp:843
10711281 #, c-format
10721282 msgid "Not enough %s."
10731283 msgstr ""
10741284
1075 #: ../../../src/MenuInventory.cpp:869 ../../../src/MenuInventory.cpp:876
1285 #: ../../../src/MenuInventory.cpp:863 ../../../src/MenuInventory.cpp:870
10761286 msgid "This item can not be sold."
10771287 msgstr ""
10781288
10841294 msgid "Quests"
10851295 msgstr "Etsinnät"
10861296
1087 #: ../../../src/MenuManager.cpp:286
1297 #: ../../../src/MenuManager.cpp:305
10881298 #, c-format
10891299 msgid "XP: %d/%d"
10901300 msgstr "Kokemus: %d/%d"
10911301
1092 #: ../../../src/MenuManager.cpp:827
1302 #: ../../../src/MenuManager.cpp:875
10931303 msgid "This item can not be dropped."
1304 msgstr ""
1305
1306 #: ../../../src/MenuManager.cpp:1501
1307 msgid "Equipped"
1308 msgstr ""
1309
1310 #: ../../../src/MenuMovementType.cpp:87
1311 msgid "Select a Movement Type"
1312 msgstr ""
1313
1314 #: ../../../src/MenuMovementType.cpp:89
1315 msgid "Can be changed later in the Configuration menu."
1316 msgstr ""
1317
1318 #: ../../../src/MenuMovementType.cpp:92 ../../../src/MenuMovementType.cpp:122
1319 msgid "Keyboard"
1320 msgstr ""
1321
1322 #: ../../../src/MenuMovementType.cpp:93 ../../../src/MenuMovementType.cpp:128
1323 msgid "Mouse"
1324 msgstr ""
1325
1326 #: ../../../src/MenuMovementType.cpp:129
1327 msgid "Button"
10941328 msgstr ""
10951329
10961330 #: ../../../src/MenuNumPicker.cpp:59
10971331 msgid "Enter amount:"
10981332 msgstr ""
10991333
1100 #: ../../../src/MenuPowers.cpp:787
1334 #: ../../../src/MenuPowers.cpp:894
11011335 msgid "Passive"
11021336 msgstr ""
11031337
1104 #: ../../../src/MenuPowers.cpp:792
1338 #: ../../../src/MenuPowers.cpp:901
11051339 #, c-format
11061340 msgid "Costs %d MP"
11071341 msgstr "Kustannus %d MP"
11081342
1109 #: ../../../src/MenuPowers.cpp:796
1343 #: ../../../src/MenuPowers.cpp:905
11101344 #, c-format
11111345 msgid "Costs %d HP"
11121346 msgstr "Kustannus %d OP"
11131347
1114 #: ../../../src/MenuPowers.cpp:801
1348 #: ../../../src/MenuPowers.cpp:909
11151349 msgid "Cooldown:"
11161350 msgstr ""
11171351
1118 #: ../../../src/MenuPowers.cpp:866 ../../../src/MenuPowers.cpp:869
1352 #: ../../../src/MenuPowers.cpp:960 ../../../src/MenuPowers.cpp:963
11191353 msgid "Damage per second"
11201354 msgstr ""
11211355
1122 #: ../../../src/MenuPowers.cpp:872 ../../../src/MenuPowers.cpp:875
1356 #: ../../../src/MenuPowers.cpp:966 ../../../src/MenuPowers.cpp:969
11231357 msgid "HP per second"
11241358 msgstr ""
11251359
1126 #: ../../../src/MenuPowers.cpp:878 ../../../src/MenuPowers.cpp:881
1360 #: ../../../src/MenuPowers.cpp:972 ../../../src/MenuPowers.cpp:975
11271361 msgid "MP per second"
11281362 msgstr ""
11291363
1130 #: ../../../src/MenuPowers.cpp:885
1364 #: ../../../src/MenuPowers.cpp:979
11311365 msgid "Immobilize"
11321366 msgstr ""
11331367
1134 #: ../../../src/MenuPowers.cpp:893
1368 #: ../../../src/MenuPowers.cpp:987
11351369 msgid "Immunity"
11361370 msgstr ""
11371371
1138 #: ../../../src/MenuPowers.cpp:896
1372 #: ../../../src/MenuPowers.cpp:990
11391373 msgid "Immunity to damage over time"
11401374 msgstr ""
11411375
1142 #: ../../../src/MenuPowers.cpp:899
1376 #: ../../../src/MenuPowers.cpp:993
11431377 msgid "Immunity to slow"
11441378 msgstr ""
11451379
1146 #: ../../../src/MenuPowers.cpp:902
1380 #: ../../../src/MenuPowers.cpp:996
11471381 msgid "Immunity to stun"
11481382 msgstr ""
11491383
1150 #: ../../../src/MenuPowers.cpp:905
1384 #: ../../../src/MenuPowers.cpp:999
11511385 msgid "Immunity to HP steal"
11521386 msgstr ""
11531387
1154 #: ../../../src/MenuPowers.cpp:908
1388 #: ../../../src/MenuPowers.cpp:1002
11551389 msgid "Immunity to MP steal"
11561390 msgstr ""
11571391
1158 #: ../../../src/MenuPowers.cpp:911
1392 #: ../../../src/MenuPowers.cpp:1005
11591393 msgid "Immunity to knockback"
11601394 msgstr ""
11611395
1162 #: ../../../src/MenuPowers.cpp:914
1396 #: ../../../src/MenuPowers.cpp:1008
11631397 msgid "Immunity to damage reflection"
11641398 msgstr ""
11651399
1166 #: ../../../src/MenuPowers.cpp:917
1400 #: ../../../src/MenuPowers.cpp:1014
11671401 msgid "Stun"
11681402 msgstr ""
11691403
1170 #: ../../../src/MenuPowers.cpp:920
1404 #: ../../../src/MenuPowers.cpp:1017
11711405 msgid "Automatic revive on death"
11721406 msgstr ""
11731407
1174 #: ../../../src/MenuPowers.cpp:923
1408 #: ../../../src/MenuPowers.cpp:1020
11751409 msgid "Convert"
11761410 msgstr ""
11771411
1178 #: ../../../src/MenuPowers.cpp:926
1412 #: ../../../src/MenuPowers.cpp:1023
11791413 msgid "Fear"
11801414 msgstr ""
11811415
1182 #: ../../../src/MenuPowers.cpp:929
1416 #: ../../../src/MenuPowers.cpp:1026
11831417 msgid "Lifespan"
11841418 msgstr ""
11851419
1186 #: ../../../src/MenuPowers.cpp:953
1420 #: ../../../src/MenuPowers.cpp:1050
11871421 msgid "Magical Shield"
11881422 msgstr ""
11891423
1190 #: ../../../src/MenuPowers.cpp:982
1424 #: ../../../src/MenuPowers.cpp:1079
11911425 msgid "Healing"
11921426 msgstr ""
11931427
1194 #: ../../../src/MenuPowers.cpp:985
1428 #: ../../../src/MenuPowers.cpp:1082
11951429 msgid "Knockback"
11961430 msgstr ""
11971431
1198 #: ../../../src/MenuPowers.cpp:1010
1432 #: ../../../src/MenuPowers.cpp:1106
11991433 #, c-format
12001434 msgid "%d%% chance"
12011435 msgstr ""
12021436
1203 #: ../../../src/MenuPowers.cpp:1062
1437 #: ../../../src/MenuPowers.cpp:1158
12041438 msgid "Base Accuracy"
12051439 msgstr ""
12061440
1207 #: ../../../src/MenuPowers.cpp:1082
1441 #: ../../../src/MenuPowers.cpp:1178
12081442 msgid "Base Critical Chance"
12091443 msgstr ""
12101444
1211 #: ../../../src/MenuPowers.cpp:1090
1445 #: ../../../src/MenuPowers.cpp:1186
12121446 msgid "Ignores Absorbtion"
12131447 msgstr ""
12141448
1215 #: ../../../src/MenuPowers.cpp:1095
1449 #: ../../../src/MenuPowers.cpp:1191
12161450 msgid "Ignores Avoidance"
12171451 msgstr ""
12181452
1219 #: ../../../src/MenuPowers.cpp:1100
1453 #: ../../../src/MenuPowers.cpp:1196
12201454 #, c-format
12211455 msgid "%d%% Chance to crit slowed targets"
12221456 msgstr ""
12231457
1224 #: ../../../src/MenuPowers.cpp:1105
1458 #: ../../../src/MenuPowers.cpp:1201
12251459 #, c-format
12261460 msgid "Elemental Damage (%s)"
12271461 msgstr ""
12281462
1229 #: ../../../src/MenuPowers.cpp:1114
1463 #: ../../../src/MenuPowers.cpp:1210
12301464 #, c-format
12311465 msgid "Requires a %s"
12321466 msgstr ""
12331467
1234 #: ../../../src/MenuPowers.cpp:1151 ../../../src/MenuPowers.cpp:1154
1468 #: ../../../src/MenuPowers.cpp:1248 ../../../src/MenuPowers.cpp:1251
12351469 #, c-format
12361470 msgid "Requires Power: %s"
12371471 msgstr "Vaatii voiman: %s"
12381472
1239 #: ../../../src/MenuPowers.cpp:1163
1473 #: ../../../src/MenuPowers.cpp:1260
12401474 msgid "Click to Unlock (uses 1 Skill Point)"
12411475 msgstr ""
12421476
1243 #: ../../../src/MenuPowers.cpp:1167 ../../../src/MenuPowers.cpp:1169
1477 #: ../../../src/MenuPowers.cpp:1264 ../../../src/MenuPowers.cpp:1266
12441478 msgid "Requires 1 Skill Point"
12451479 msgstr ""
12461480
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
1481 #: ../../../src/MenuPowers.cpp:1466
1482 #, c-format
1483 msgid "Available skill points: %d"
1484 msgstr ""
1485
1486 #: ../../../src/MenuPowers.cpp:1498
12581487 msgid "Next Level:"
12591488 msgstr ""
12601489
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
1490 #: ../../../src/MenuStash.cpp:80 ../../../src/MenuStash.cpp:161
1491 msgid "Stash"
1492 msgstr ""
1493
1494 #: ../../../src/MenuStash.cpp:174 ../../../src/MenuStash.cpp:188
1495 msgid "Private"
1496 msgstr ""
1497
1498 #: ../../../src/MenuStash.cpp:175
1499 msgid "Shared"
1500 msgstr ""
1501
1502 #: ../../../src/MenuStash.cpp:340
1503 msgid "This item can not be stored in the stash."
1504 msgstr ""
1505
1506 #: ../../../src/MenuStash.cpp:345
1507 msgid "This item can not be stored in the private stash."
1508 msgstr ""
1509
1510 #: ../../../src/MenuStash.cpp:350
1511 msgid "This item can not be stored in the shared stash."
1512 msgstr ""
1513
1514 #: ../../../src/MenuStash.cpp:360
12701515 msgid "Stash is full."
12711516 msgstr ""
12721517
1273 #: ../../../src/MenuTalker.cpp:454
1518 #: ../../../src/MenuStash.cpp:414
1519 #, c-format
1520 msgid "Can not store item in stash: %s"
1521 msgstr ""
1522
1523 #: ../../../src/MenuTalker.cpp:448
1524 #, c-format
1525 msgid "<dialog node %d>"
1526 msgstr ""
1527
1528 #: ../../../src/MenuTalker.cpp:456
12741529 msgid "Trade"
12751530 msgstr "Tee kaupat"
12761531
1277 #: ../../../src/MenuVendor.cpp:58
1532 #: ../../../src/MenuVendor.cpp:60
12781533 msgid "Buyback"
12791534 msgstr "Takaisinosto"
12801535
1281 #: ../../../src/MenuVendor.cpp:279
1536 #: ../../../src/MenuVendor.cpp:283
12821537 msgid "Vendor"
12831538 msgstr "Kauppias"
12841539
1285 #: ../../../src/PowerManager.cpp:1136
1540 #: ../../../src/PowerManager.cpp:1204
12861541 #, c-format
12871542 msgid "+%d Shield"
12881543 msgstr "+%d kilpi"
12891544
1290 #: ../../../src/PowerManager.cpp:1392
1545 #: ../../../src/PowerManager.cpp:1461
12911546 msgid "You are already transformed, untransform first."
12921547 msgstr "Olet jo muuntunut, palaa ensin entisellesi."
12931548
1294 #: ../../../src/PowerManager.cpp:1404
1549 #: ../../../src/PowerManager.cpp:1473
12951550 msgid "Could not untransform at this position."
12961551 msgstr ""
12971552
12991554 msgid "Completed Quests"
13001555 msgstr ""
13011556
1302 #: ../../../src/SaveLoad.cpp:243 ../../../src/SaveLoad.cpp:244
1557 #: ../../../src/SaveLoad.cpp:250 ../../../src/SaveLoad.cpp:251
13031558 msgid "Game saved."
13041559 msgstr ""
13051560
1306 #: ../../../src/SDLInputState.cpp:582
1561 #: ../../../src/SDLInputState.cpp:645
1562 msgid "BkSp"
1563 msgstr ""
1564
1565 #: ../../../src/SDLInputState.cpp:646
1566 msgid "Caps"
1567 msgstr ""
1568
1569 #: ../../../src/SDLInputState.cpp:647
1570 msgid "Del"
1571 msgstr ""
1572
1573 #: ../../../src/SDLInputState.cpp:649 ../../../src/SDLInputState.cpp:679
1574 msgid "End"
1575 msgstr ""
1576
1577 #: ../../../src/SDLInputState.cpp:650
1578 msgid "Esc"
1579 msgstr ""
1580
1581 #: ../../../src/SDLInputState.cpp:651 ../../../src/SDLInputState.cpp:681
1582 msgid "Home"
1583 msgstr ""
1584
1585 #: ../../../src/SDLInputState.cpp:652
1586 msgid "Ins"
1587 msgstr ""
1588
1589 #: ../../../src/SDLInputState.cpp:653
1590 msgid "LAlt"
1591 msgstr ""
1592
1593 #: ../../../src/SDLInputState.cpp:654
1594 msgid "LCtrl"
1595 msgstr ""
1596
1597 #: ../../../src/SDLInputState.cpp:656
1598 msgid "LShft"
1599 msgstr ""
1600
1601 #: ../../../src/SDLInputState.cpp:657
1602 msgid "Num"
1603 msgstr ""
1604
1605 #: ../../../src/SDLInputState.cpp:658
1606 msgid "PgDn"
1607 msgstr ""
1608
1609 #: ../../../src/SDLInputState.cpp:659
1610 msgid "PgUp"
1611 msgstr ""
1612
1613 #: ../../../src/SDLInputState.cpp:660 ../../../src/SDLInputState.cpp:690
1614 msgid "Pause"
1615 msgstr ""
1616
1617 #: ../../../src/SDLInputState.cpp:661
1618 msgid "Print"
1619 msgstr ""
1620
1621 #: ../../../src/SDLInputState.cpp:662
1622 msgid "RAlt"
1623 msgstr ""
1624
1625 #: ../../../src/SDLInputState.cpp:663
1626 msgid "RCtrl"
1627 msgstr ""
1628
1629 #: ../../../src/SDLInputState.cpp:664
1630 msgid "Ret"
1631 msgstr ""
1632
1633 #: ../../../src/SDLInputState.cpp:666
1634 msgid "RShft"
1635 msgstr ""
1636
1637 #: ../../../src/SDLInputState.cpp:667
1638 msgid "SLock"
1639 msgstr ""
1640
1641 #: ../../../src/SDLInputState.cpp:668
1642 msgid "Spc"
1643 msgstr ""
1644
1645 #: ../../../src/SDLInputState.cpp:669 ../../../src/SDLInputState.cpp:699
1646 msgid "Tab"
1647 msgstr ""
1648
1649 #: ../../../src/SDLInputState.cpp:675
13071650 msgid "Backspace"
13081651 msgstr ""
13091652
1310 #: ../../../src/SDLInputState.cpp:583
1653 #: ../../../src/SDLInputState.cpp:676
13111654 msgid "CapsLock"
13121655 msgstr ""
13131656
1314 #: ../../../src/SDLInputState.cpp:586
1315 msgid "End"
1316 msgstr ""
1317
1318 #: ../../../src/SDLInputState.cpp:587
1657 #: ../../../src/SDLInputState.cpp:680
13191658 msgid "Escape"
13201659 msgstr ""
13211660
1322 #: ../../../src/SDLInputState.cpp:588
1323 msgid "Home"
1324 msgstr ""
1325
1326 #: ../../../src/SDLInputState.cpp:589
1661 #: ../../../src/SDLInputState.cpp:682
13271662 msgid "Insert"
13281663 msgstr ""
13291664
1330 #: ../../../src/SDLInputState.cpp:590
1665 #: ../../../src/SDLInputState.cpp:683
13311666 msgid "Left Alt"
13321667 msgstr ""
13331668
1334 #: ../../../src/SDLInputState.cpp:591
1669 #: ../../../src/SDLInputState.cpp:684
13351670 msgid "Left Ctrl"
13361671 msgstr ""
13371672
1338 #: ../../../src/SDLInputState.cpp:593
1673 #: ../../../src/SDLInputState.cpp:686
13391674 msgid "Left Shift"
13401675 msgstr ""
13411676
1342 #: ../../../src/SDLInputState.cpp:594
1677 #: ../../../src/SDLInputState.cpp:687
13431678 msgid "NumLock"
13441679 msgstr ""
13451680
1346 #: ../../../src/SDLInputState.cpp:595
1681 #: ../../../src/SDLInputState.cpp:688
13471682 msgid "PageDown"
13481683 msgstr ""
13491684
1350 #: ../../../src/SDLInputState.cpp:596
1685 #: ../../../src/SDLInputState.cpp:689
13511686 msgid "PageUp"
13521687 msgstr ""
13531688
1354 #: ../../../src/SDLInputState.cpp:597
1355 msgid "Pause"
1356 msgstr ""
1357
1358 #: ../../../src/SDLInputState.cpp:598
1689 #: ../../../src/SDLInputState.cpp:691
13591690 msgid "PrintScreen"
13601691 msgstr ""
13611692
1362 #: ../../../src/SDLInputState.cpp:599
1693 #: ../../../src/SDLInputState.cpp:692
13631694 msgid "Right Alt"
13641695 msgstr ""
13651696
1366 #: ../../../src/SDLInputState.cpp:600
1697 #: ../../../src/SDLInputState.cpp:693
13671698 msgid "Right Ctrl"
13681699 msgstr ""
13691700
1370 #: ../../../src/SDLInputState.cpp:601
1701 #: ../../../src/SDLInputState.cpp:694
13711702 msgid "Return"
13721703 msgstr ""
13731704
1374 #: ../../../src/SDLInputState.cpp:603
1705 #: ../../../src/SDLInputState.cpp:696
13751706 msgid "Right Shift"
13761707 msgstr ""
13771708
1378 #: ../../../src/SDLInputState.cpp:604
1709 #: ../../../src/SDLInputState.cpp:697
13791710 msgid "ScrollLock"
13801711 msgstr ""
13811712
1382 #: ../../../src/SDLInputState.cpp:605
1713 #: ../../../src/SDLInputState.cpp:698
13831714 msgid "Space"
13841715 msgstr ""
13851716
1386 #: ../../../src/SDLInputState.cpp:606
1387 msgid "Tab"
1388 msgstr ""
1389
1390 #: ../../../src/SDLInputState.cpp:620
1717 #: ../../../src/SDLInputState.cpp:712
1718 #, c-format
1719 msgid "M%d"
1720 msgstr ""
1721
1722 #: ../../../src/SDLInputState.cpp:718
13911723 #, c-format
13921724 msgid "Mouse %d"
13931725 msgstr ""
13941726
1395 #: ../../../src/SDLInputState.cpp:628
1727 #: ../../../src/SDLInputState.cpp:728
1728 #, c-format
1729 msgid "JX%d-"
1730 msgstr ""
1731
1732 #: ../../../src/SDLInputState.cpp:730
13961733 #, c-format
13971734 msgid "Axis %d -"
13981735 msgstr ""
13991736
1400 #: ../../../src/SDLInputState.cpp:630
1737 #: ../../../src/SDLInputState.cpp:734
1738 #, c-format
1739 msgid "JX%d+"
1740 msgstr ""
1741
1742 #: ../../../src/SDLInputState.cpp:736
14011743 #, c-format
14021744 msgid "Axis %d +"
14031745 msgstr ""
14041746
1405 #: ../../../src/SDLInputState.cpp:633
1747 #: ../../../src/SDLInputState.cpp:741
1748 #, c-format
1749 msgid "JB%d"
1750 msgstr ""
1751
1752 #: ../../../src/SDLInputState.cpp:743
14061753 #, c-format
14071754 msgid "Button %d"
14081755 msgstr ""
14091756
1410 #: ../../../src/SDLInputState.cpp:637
1411 msgid "(none)"
1412 msgstr ""
1413
1414 #: ../../../src/SDLInputState.cpp:677
1757 #: ../../../src/SDLInputState.cpp:789
14151758 msgid "Touch control D-Pad"
14161759 msgstr ""
14171760
1418 #: ../../../src/SDLInputState.cpp:701
1761 #: ../../../src/SDLInputState.cpp:812
14191762 msgid "Touch control buttons"
14201763 msgstr ""
14211764
1422 #: ../../../src/SDLInputState.cpp:716
1765 #: ../../../src/SDLInputState.cpp:826
14231766 msgid "Tap"
14241767 msgstr ""
14251768
1426 #: ../../../src/SDLInputState.cpp:760 ../../../src/SDLInputState.cpp:764
1427 #: ../../../src/SDLInputState.cpp:768
1769 #: ../../../src/SDLInputState.cpp:878 ../../../src/SDLInputState.cpp:880
1770 #, c-format
1771 msgid "Can not bind: %s"
1772 msgstr ""
1773
1774 #: ../../../src/SDLInputState.cpp:892 ../../../src/SDLInputState.cpp:896
1775 #: ../../../src/SDLInputState.cpp:900
14281776 #, c-format
14291777 msgid "'%s' is no longer bound to:"
14301778 msgstr ""
15831931 msgid "Base MP"
15841932 msgstr ""
15851933
1586 #: ../../../src/Utils.cpp:346
1934 #: ../../../src/Utils.cpp:365
15871935 msgid "k"
15881936 msgstr ""
15891937
1590 #: ../../../src/Utils.cpp:580
1938 #: ../../../src/Utils.cpp:635
15911939 #, c-format
15921940 msgid "%s second"
15931941 msgstr ""
15941942
1595 #: ../../../src/Utils.cpp:583
1943 #: ../../../src/Utils.cpp:638
15961944 #, c-format
15971945 msgid "%s seconds"
15981946 msgstr ""
44 #
55 # Translators:
66 # Justin Jacobs <jajdorkster@gmail.com>, 2018
7 # syl_, 2019
8 # Christophe Nemo <djlittlenemo@gmail.com>, 2020
9 # Bafy <remi.millerat@gmail.com>, 2021
710 #
811 #, fuzzy
912 msgid ""
1013 msgstr ""
1114 "Project-Id-Version: PACKAGE VERSION\n"
1215 "Report-Msgid-Bugs-To: \n"
13 "POT-Creation-Date: 2018-11-17 21:50-0500\n"
16 "POT-Creation-Date: 2021-07-02 13:26-0400\n"
1417 "PO-Revision-Date: 2018-03-28 19:16+0000\n"
15 "Last-Translator: Justin Jacobs <jajdorkster@gmail.com>, 2018\n"
18 "Last-Translator: Bafy <remi.millerat@gmail.com>, 2021\n"
1619 "Language-Team: French (https://www.transifex.com/flareorg/teams/84925/fr/)\n"
1720 "MIME-Version: 1.0\n"
1821 "Content-Type: text/plain; charset=UTF-8\n"
2023 "Language: fr\n"
2124 "Plural-Forms: nplurals=2; plural=(n > 1);\n"
2225
23 #: ../../../src/Avatar.cpp:367
26 #: ../../../src/Avatar.cpp:391
27 msgid "Your health is low!"
28 msgstr "Votre santé est basse !"
29
30 #: ../../../src/Avatar.cpp:421
2431 #, c-format
2532 msgid "Congratulations, you have reached level %d!"
2633 msgstr "Félicitations, vous avez atteint le niveau %d !"
2734
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
35 #: ../../../src/Avatar.cpp:423
36 msgid "You may increase one or more attributes through the Character Menu."
37 msgstr ""
38 "Vous pouvez améliorer un ou plusieurs attributs via le menu Personnage."
39
40 #: ../../../src/Avatar.cpp:427
41 msgid "You may unlock one or more abilities through the Powers Menu."
42 msgstr "Vous pouvez débloquer une ou plusieurs capacités via le menu Pouvoirs"
43
44 #: ../../../src/Avatar.cpp:689
45 msgid "You are defeated."
46 msgstr "Vous êtes vaincu."
47
48 #: ../../../src/Avatar.cpp:935
4149 msgid "Transformation expired. You have been moved back to a safe place."
4250 msgstr "Transformation expirée. On vous a ramené à un endroit sûr."
4351
44 #: ../../../src/CampaignManager.cpp:153
52 #: ../../../src/CampaignManager.cpp:152
4553 #, c-format
4654 msgid "%d %s removed."
4755 msgstr "%d %s supprimé."
4856
49 #: ../../../src/CampaignManager.cpp:162
57 #: ../../../src/CampaignManager.cpp:171
58 #, c-format
59 msgid "%s x%d removed."
60 msgstr "%s x%d supprimés."
61
62 #: ../../../src/CampaignManager.cpp:173
5063 #, c-format
5164 msgid "%s removed."
5265 msgstr "%s supprimé."
5366
54 #: ../../../src/CampaignManager.cpp:175
67 #: ../../../src/CampaignManager.cpp:187
68 #, c-format
69 msgid "You receive %d %s."
70 msgstr "Vous recevez %d %s."
71
72 #: ../../../src/CampaignManager.cpp:191
73 #, c-format
74 msgid "You receive %s x%d."
75 msgstr "Vous recevez %s x%d."
76
77 #: ../../../src/CampaignManager.cpp:193
5578 #, c-format
5679 msgid "You receive %s."
5780 msgstr "Vous recevez %s."
5881
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
82 #: ../../../src/CampaignManager.cpp:210
7083 #, c-format
7184 msgid "You receive %d XP."
7285 msgstr "Vous recevez %d points d'expérience."
7386
74 #: ../../../src/CampaignManager.cpp:201
87 #: ../../../src/CampaignManager.cpp:216
7588 msgid "HP restored."
7689 msgstr "PV restaurés."
7790
78 #: ../../../src/CampaignManager.cpp:205
91 #: ../../../src/CampaignManager.cpp:220
7992 msgid "MP restored."
8093 msgstr "PM restaurés."
8194
82 #: ../../../src/CampaignManager.cpp:210
95 #: ../../../src/CampaignManager.cpp:225
8396 msgid "HP and MP restored."
8497 msgstr "PV et PM restaurés."
8598
86 #: ../../../src/CampaignManager.cpp:214
99 #: ../../../src/CampaignManager.cpp:229
87100 msgid "Negative effects removed."
88101 msgstr "Effet négatif supprimé"
89102
90 #: ../../../src/CampaignManager.cpp:220
103 #: ../../../src/CampaignManager.cpp:235
91104 msgid "HP and MP restored, negative effects removed"
92105 msgstr "PV et PM restaurés, effet négatif supprimé"
93106
97110 "\n"
98111 "Often slower, but less likely to have issues."
99112 msgstr ""
113 "Rendu SDL logiciel\n"
114 "\n"
115 "Souvent plus lent, mais plus stable."
100116
101117 #: ../../../src/DeviceList.cpp:59
102118 msgid ""
104120 "\n"
105121 "The default renderer that is often faster than the SDL software renderer."
106122 msgstr ""
107
108 #: ../../../src/EngineSettings.cpp:561
123 "Rendu SDL matériel\n"
124 "\n"
125 "Le rendu par défaut souvent plus rapide que le rendu SDL logiciel."
126
127 #: ../../../src/EngineSettings.cpp:586
109128 msgid "Adventurer"
110129 msgstr "Aventurier"
111130
112 #: ../../../src/Entity.cpp:511
131 #: ../../../src/Entity.cpp:527
113132 msgid "miss"
114133 msgstr "manqué"
115134
116 #: ../../../src/Entity.cpp:548 ../../../src/PowerManager.cpp:1152
117 #: ../../../src/StatBlock.cpp:805 ../../../src/StatBlock.cpp:811
135 #: ../../../src/Entity.cpp:565 ../../../src/PowerManager.cpp:1220
136 #: ../../../src/StatBlock.cpp:926 ../../../src/StatBlock.cpp:932
118137 #, c-format
119138 msgid "+%d HP"
120139 msgstr "+%d PV"
121140
122 #: ../../../src/Entity.cpp:555 ../../../src/StatBlock.cpp:816
123 #: ../../../src/StatBlock.cpp:822
141 #: ../../../src/Entity.cpp:572 ../../../src/StatBlock.cpp:937
142 #: ../../../src/StatBlock.cpp:943
124143 #, c-format
125144 msgid "+%d MP"
126145 msgstr "+%d PM"
127146
128 #: ../../../src/EventManager.cpp:738
147 #: ../../../src/EventManager.cpp:792
129148 msgid "Unknown destination"
130149 msgstr "Destination inconnue"
131150
132 #: ../../../src/GameStateConfigBase.cpp:89
133 #: ../../../src/GameStateConfigBase.cpp:110
151 #: ../../../src/GameState.cpp:37 ../../../src/GameState.cpp:58
152 msgid "Loading..."
153 msgstr "Chargement..."
154
155 #: ../../../src/GameStateLoad.cpp:90 ../../../src/GameStateLoad.cpp:103
156 msgid "Delete Save"
157 msgstr "Suppr. sauvegarde"
158
159 #: ../../../src/GameStateLoad.cpp:90
160 msgid "Delete this save?"
161 msgstr "Supprimer cette sauvegarde ?"
162
163 #: ../../../src/GameStateLoad.cpp:92
164 msgid "Exit to Title"
165 msgstr "Retour au menu"
166
167 #: ../../../src/GameStateLoad.cpp:95
168 msgid "New Game"
169 msgstr "Nouvelle partie"
170
171 #: ../../../src/GameStateLoad.cpp:99 ../../../src/GameStateLoad.cpp:607
172 msgid "Choose a Slot"
173 msgstr "Choisir une partie"
174
175 #: ../../../src/GameStateLoad.cpp:580 ../../../src/GameStateLoad.cpp:601
176 msgid "Enable a story mod to continue"
177 msgstr "Activez un mod scénario pour continuer"
178
179 #: ../../../src/GameStateLoad.cpp:596
180 msgid "Load Game"
181 msgstr "Charger la partie"
182
183 #: ../../../src/GameStateLoad.cpp:704
184 msgid "Entering game world..."
185 msgstr "Entrée dans le monde du jeu..."
186
187 #: ../../../src/GameStateLoad.cpp:707
188 msgid "Loading saved game..."
189 msgstr "Chargement d'une partie..."
190
191 #: ../../../src/GameStateLoad.cpp:740
192 msgid "Invalid save"
193 msgstr "Sauvegarde invalide"
194
195 #: ../../../src/GameStateLoad.cpp:764 ../../../src/ItemManager.cpp:745
196 #: ../../../src/MenuPowers.cpp:882 ../../../src/MenuPowers.cpp:1241
197 #: ../../../src/MenuPowers.cpp:1653
198 #, c-format
199 msgid "Level %d"
200 msgstr "Niveau %d"
201
202 #: ../../../src/GameStateNew.cpp:66 ../../../src/InputState.cpp:416
203 #: ../../../src/MenuConfig.cpp:254
204 msgid "Cancel"
205 msgstr "Annuler"
206
207 #: ../../../src/GameStateNew.cpp:69
208 msgid "Create"
209 msgstr "Créer"
210
211 #: ../../../src/GameStateNew.cpp:77
212 msgid "Randomize"
213 msgstr "Aléatoire"
214
215 #: ../../../src/GameStateNew.cpp:93
216 msgid "Choose a Portrait"
217 msgstr "Choisissez un portrait"
218
219 #: ../../../src/GameStateNew.cpp:97
220 msgid "Choose a Name"
221 msgstr "Choisissez un nom"
222
223 #: ../../../src/GameStateNew.cpp:101
224 msgid "Permadeath?"
225 msgstr "Mort permanente ? "
226
227 #: ../../../src/GameStateNew.cpp:105
228 msgid "Choose a Class"
229 msgstr "Choisissez une classe"
230
231 #: ../../../src/GameStateTitle.cpp:107
232 msgid "Play Game"
233 msgstr "Jouer"
234
235 #: ../../../src/GameStateTitle.cpp:110
236 msgid "Enable a core mod to continue"
237 msgstr "Activez un mod de base pour continuer"
238
239 #: ../../../src/GameStateTitle.cpp:114 ../../../src/MenuMiniMap.cpp:152
240 msgid "Configuration"
241 msgstr "Configuration"
242
243 #: ../../../src/GameStateTitle.cpp:117
244 msgid "Credits"
245 msgstr "Crédits"
246
247 #: ../../../src/GameStateTitle.cpp:120
248 msgid "Exit Game"
249 msgstr "Quitter"
250
251 #: ../../../src/InputState.cpp:417
252 msgid "Accept"
253 msgstr "Accepter"
254
255 #: ../../../src/InputState.cpp:418 ../../../src/MenuMovementType.cpp:123
256 #: ../../../src/MenuMovementType.cpp:132 ../../../src/SDLInputState.cpp:670
257 #: ../../../src/SDLInputState.cpp:700
258 msgid "Up"
259 msgstr "Haut"
260
261 #: ../../../src/InputState.cpp:419 ../../../src/MenuMovementType.cpp:125
262 #: ../../../src/MenuMovementType.cpp:134 ../../../src/SDLInputState.cpp:648
263 #: ../../../src/SDLInputState.cpp:678
264 msgid "Down"
265 msgstr "Bas"
266
267 #: ../../../src/InputState.cpp:420 ../../../src/MenuMovementType.cpp:124
268 #: ../../../src/MenuMovementType.cpp:133 ../../../src/SDLInputState.cpp:655
269 #: ../../../src/SDLInputState.cpp:685
270 msgid "Left"
271 msgstr "Gauche"
272
273 #: ../../../src/InputState.cpp:421 ../../../src/MenuMovementType.cpp:126
274 #: ../../../src/MenuMovementType.cpp:135 ../../../src/SDLInputState.cpp:665
275 #: ../../../src/SDLInputState.cpp:695
276 msgid "Right"
277 msgstr "Droite"
278
279 #: ../../../src/InputState.cpp:422
280 msgid "Bar1"
281 msgstr "Emplacement 1"
282
283 #: ../../../src/InputState.cpp:423
284 msgid "Bar2"
285 msgstr "Emplacement 2"
286
287 #: ../../../src/InputState.cpp:424
288 msgid "Bar3"
289 msgstr "Emplacement 3"
290
291 #: ../../../src/InputState.cpp:425
292 msgid "Bar4"
293 msgstr "Emplacement 4"
294
295 #: ../../../src/InputState.cpp:426
296 msgid "Bar5"
297 msgstr "Emplacement 5"
298
299 #: ../../../src/InputState.cpp:427
300 msgid "Bar6"
301 msgstr "Emplacement 6"
302
303 #: ../../../src/InputState.cpp:428
304 msgid "Bar7"
305 msgstr "Emplacement 7"
306
307 #: ../../../src/InputState.cpp:429
308 msgid "Bar8"
309 msgstr "Emplacement 8"
310
311 #: ../../../src/InputState.cpp:430
312 msgid "Bar9"
313 msgstr "Emplacement 9"
314
315 #: ../../../src/InputState.cpp:431
316 msgid "Bar0"
317 msgstr "Emplacement 0"
318
319 #: ../../../src/InputState.cpp:432 ../../../src/MenuActionBar.cpp:84
320 #: ../../../src/MenuCharacter.cpp:54
321 msgid "Character"
322 msgstr "Personnage"
323
324 #: ../../../src/InputState.cpp:433 ../../../src/MenuActionBar.cpp:85
325 #: ../../../src/MenuInventory.cpp:130 ../../../src/MenuVendor.cpp:59
326 msgid "Inventory"
327 msgstr "Inventaire"
328
329 #: ../../../src/InputState.cpp:434 ../../../src/MenuActionBar.cpp:86
330 #: ../../../src/MenuPowers.cpp:159
331 msgid "Powers"
332 msgstr "Pouvoirs"
333
334 #: ../../../src/InputState.cpp:435 ../../../src/MenuActionBar.cpp:87
335 #: ../../../src/MenuLog.cpp:72
336 msgid "Log"
337 msgstr "Journal"
338
339 #: ../../../src/InputState.cpp:436
340 msgid "Main1"
341 msgstr "Principal 1"
342
343 #: ../../../src/InputState.cpp:437
344 msgid "Main2"
345 msgstr "Principal 2"
346
347 #: ../../../src/InputState.cpp:438
348 msgid "Ctrl"
349 msgstr "Ctrl"
350
351 #: ../../../src/InputState.cpp:439
352 msgid "Shift"
353 msgstr "Maj"
354
355 #: ../../../src/InputState.cpp:440
356 msgid "Alt"
357 msgstr "Alt"
358
359 #: ../../../src/InputState.cpp:441 ../../../src/SDLInputState.cpp:677
360 msgid "Delete"
361 msgstr "Supprimer"
362
363 #: ../../../src/InputState.cpp:442
364 msgid "ActionBar Accept"
365 msgstr "Barre d'action Accepter"
366
367 #: ../../../src/InputState.cpp:443
368 msgid "ActionBar Left"
369 msgstr "Barre d'action Gauche"
370
371 #: ../../../src/InputState.cpp:444
372 msgid "ActionBar Right"
373 msgstr "Barre d'action Droite"
374
375 #: ../../../src/InputState.cpp:445
376 msgid "ActionBar Use"
377 msgstr "Barre d'action Utiliser"
378
379 #: ../../../src/InputState.cpp:446
380 msgid "Developer Menu"
381 msgstr "Menu développeur"
382
383 #: ../../../src/InputState.cpp:448
384 msgid "Left Mouse"
385 msgstr "Clic gauche"
386
387 #: ../../../src/InputState.cpp:449
388 msgid "Middle Mouse"
389 msgstr "Clic molette"
390
391 #: ../../../src/InputState.cpp:450
392 msgid "Right Mouse"
393 msgstr "Clic droit"
394
395 #: ../../../src/InputState.cpp:451
396 msgid "Wheel Up"
397 msgstr "Molette haut"
398
399 #: ../../../src/InputState.cpp:452
400 msgid "Wheel Down"
401 msgstr "Molette bas"
402
403 #: ../../../src/InputState.cpp:453
404 msgid "Mouse X1"
405 msgstr "Souris X1"
406
407 #: ../../../src/InputState.cpp:454
408 msgid "Mouse X2"
409 msgstr "Souris X2"
410
411 #: ../../../src/ItemManager.cpp:475
412 msgid "Unknown Item"
413 msgstr "Objet inconnu"
414
415 #: ../../../src/ItemManager.cpp:646 ../../../src/MenuPowers.cpp:981
416 #, c-format
417 msgid "%d%% Speed"
418 msgstr "%d%% Vitesse"
419
420 #: ../../../src/ItemManager.cpp:650 ../../../src/MenuPowers.cpp:984
421 #, c-format
422 msgid "%d%% Attack Speed"
423 msgstr "%d%%Vitesse d'attaque"
424
425 #: ../../../src/ItemManager.cpp:672 ../../../src/MenuCharacter.cpp:352
426 #: ../../../src/MenuPowers.cpp:953
427 #, c-format
428 msgid "Resistance (%s)"
429 msgstr "Résistance (%s)"
430
431 #: ../../../src/ItemManager.cpp:682
432 #, c-format
433 msgid "Requires %s"
434 msgstr "Nécessite %s"
435
436 #: ../../../src/ItemManager.cpp:731
437 msgid "Quest Item"
438 msgstr "Objet de quête"
439
440 #: ../../../src/ItemManager.cpp:758
441 #, c-format
442 msgid "Quality: %s"
443 msgstr "Qualité : %s"
444
445 #: ../../../src/ItemManager.cpp:783
446 #, c-format
447 msgid "Absorb: %d-%d"
448 msgstr "Absorbe : %d-%d"
449
450 #: ../../../src/ItemManager.cpp:785
451 #, c-format
452 msgid "Absorb: %d"
453 msgstr "Absorbe : %d"
454
455 #: ../../../src/ItemManager.cpp:825 ../../../src/MenuPowers.cpp:1228
456 #: ../../../src/MenuPowers.cpp:1231
457 #, c-format
458 msgid "Requires Level %d"
459 msgstr "Nécessite le niveau %d"
460
461 #: ../../../src/ItemManager.cpp:836 ../../../src/MenuPowers.cpp:1220
462 #: ../../../src/MenuPowers.cpp:1222
463 #, c-format
464 msgid "Requires %s %d"
465 msgstr "Nécessite %s %d"
466
467 #: ../../../src/ItemManager.cpp:847
468 #, c-format
469 msgid "Requires Class: %s"
470 msgstr "Classe nécessaire : %s"
471
472 #: ../../../src/ItemManager.cpp:863 ../../../src/ItemManager.cpp:875
473 #, c-format
474 msgid "Buy Price: %d %s"
475 msgstr "Prix d'achat : %d %s"
476
477 #: ../../../src/ItemManager.cpp:865 ../../../src/ItemManager.cpp:877
478 #, c-format
479 msgid "Buy Price: %d %s each"
480 msgstr "Prix d'achat : %d %s par pièce"
481
482 #: ../../../src/ItemManager.cpp:885
483 #, c-format
484 msgid "Sell Price: %d %s"
485 msgstr "Prix de vente : %d %s"
486
487 #: ../../../src/ItemManager.cpp:887
488 #, c-format
489 msgid "Sell Price: %d %s each"
490 msgstr "Prix de vente : %d %s par pièce"
491
492 #: ../../../src/ItemManager.cpp:898
493 msgid "Set:"
494 msgstr "Ensemble :"
495
496 #: ../../../src/ItemManager.cpp:905
497 #, c-format
498 msgid "%d items:"
499 msgstr "%dobjets :"
500
501 #: ../../../src/ItemManager.cpp:920
502 #, c-format
503 msgid "Press [%s] to read"
504 msgstr "Appuyer sur [%s] pour lire"
505
506 #: ../../../src/ItemManager.cpp:923
507 #, c-format
508 msgid "Press [%s] to use"
509 msgstr "Appuyer sur [%s] pour utiliser"
510
511 #: ../../../src/MenuActionBar.cpp:239 ../../../src/MenuActionBar.cpp:246
512 #: ../../../src/MenuActionBar.cpp:249 ../../../src/MenuActionBar.cpp:255
513 #, c-format
514 msgid "Hotkey: %s"
515 msgstr "Touche : %s"
516
517 #: ../../../src/MenuActionBar.cpp:621
518 msgid "Not enough MP."
519 msgstr "Pas assez de PM."
520
521 #: ../../../src/MenuActiveEffects.cpp:124
522 #, c-format
523 msgid "x%d"
524 msgstr "x%d"
525
526 #: ../../../src/MenuActiveEffects.cpp:219
527 msgid "Remaining:"
528 msgstr "Restants :"
529
530 #: ../../../src/MenuActiveEffects.cpp:225
531 #, c-format
532 msgid "x%d stacks"
533 msgstr "x%dpiles d'objets"
534
535 #: ../../../src/MenuCharacter.cpp:73 ../../../src/MenuCharacter.cpp:78
536 msgid "Name"
537 msgstr "Nom"
538
539 #: ../../../src/MenuCharacter.cpp:74 ../../../src/MenuCharacter.cpp:79
540 msgid "Level"
541 msgstr "Niveau"
542
543 #: ../../../src/MenuCharacter.cpp:309
544 #, c-format
545 msgid "Available stat points: %d"
546 msgstr "Points de stats disponibles : %d"
547
548 #: ../../../src/MenuCharacter.cpp:353
549 #, c-format
550 msgid "Reduces the damage taken from \"%s\" elemental attacks."
551 msgstr "Réduit la quantité de dégât reçue des attaques élémentaires \"%s\"."
552
553 #: ../../../src/MenuCharacter.cpp:363 ../../../src/MenuManager.cpp:301
554 #, c-format
555 msgid "XP: %d"
556 msgstr "XP : %d"
557
558 #: ../../../src/MenuCharacter.cpp:365
559 #, c-format
560 msgid "Next: %d"
561 msgstr "Prochain : %d"
562
563 #: ../../../src/MenuCharacter.cpp:371
564 #, c-format
565 msgid "base (%d), bonus (%d)"
566 msgstr "base (%d), bonus (%d)"
567
568 #: ../../../src/MenuCharacter.cpp:379 ../../../src/MenuCharacter.cpp:393
569 msgid "Related stats:"
570 msgstr "Statistiques liées : "
571
572 #: ../../../src/MenuCharacter.cpp:419 ../../../src/MenuCharacter.cpp:443
573 #, c-format
574 msgid "Each level grants %d."
575 msgstr "Chaque niveau donne %d."
576
577 #: ../../../src/MenuCharacter.cpp:423 ../../../src/MenuCharacter.cpp:447
578 #, c-format
579 msgid "Each point of %s grants %d."
580 msgstr "Chaque point de %s donne %d."
581
582 #: ../../../src/MenuConfig.cpp:122 ../../../src/MenuConfig.cpp:1256
583 msgid "Clear"
584 msgstr "Effacer"
585
586 #: ../../../src/MenuConfig.cpp:122 ../../../src/MenuConfig.cpp:1254
587 msgid "Assign:"
588 msgstr "Assigner :"
589
590 #: ../../../src/MenuConfig.cpp:123 ../../../src/MenuConfig.cpp:253
134591 msgid "Defaults"
135592 msgstr "Par défaut"
136593
137 #: ../../../src/GameStateConfigBase.cpp:89
594 #: ../../../src/MenuConfig.cpp:123
138595 msgid "Reset ALL settings?"
139596 msgstr "Réinitaliser TOUS les réglages ?"
140597
141 #: ../../../src/GameStateConfigBase.cpp:109 ../../../src/MenuNumPicker.cpp:49
598 #: ../../../src/MenuConfig.cpp:252 ../../../src/MenuNumPicker.cpp:49
142599 msgid "OK"
143600 msgstr "OK"
144601
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
602 #: ../../../src/MenuConfig.cpp:256 ../../../src/MenuGameOver.cpp:72
603 msgid "Continue"
604 msgstr "Continuer"
605
606 #: ../../../src/MenuConfig.cpp:258
607 msgid "Save Game"
608 msgstr "Sauvegarder la partie"
609
610 #: ../../../src/MenuConfig.cpp:301 ../../../src/MenuConfig.cpp:352
611 msgid "Default"
612 msgstr "Défaut"
613
614 #: ../../../src/MenuConfig.cpp:301
615 msgid ""
616 "Show all loot tooltips, except for those that would be obscured by the "
617 "player or an enemy. Temporarily show all loot tooltips with 'Alt'."
618 msgstr ""
619 "Montrer toutes les infobulles de butin, sauf celles qui pourraient être "
620 "masquées par le joueur ou un ennemi. Afficher toutes les infobulles de butin"
621 " temporairement avec la touche 'Alt'."
622
623 #: ../../../src/MenuConfig.cpp:302
624 msgid "Show all"
625 msgstr "Afficher tout"
626
627 #: ../../../src/MenuConfig.cpp:302
628 msgid ""
629 "Always show loot tooltips. Temporarily hide all loot tooltips with 'Alt'."
630 msgstr ""
631 "Toujours montrer les infobulles de butin. Cacher temporairement les "
632 "infobulles de butin avec la touche 'Alt'."
633
634 #: ../../../src/MenuConfig.cpp:303 ../../../src/MenuConfig.cpp:308
635 msgid "Hidden"
636 msgstr "Caché"
637
638 #: ../../../src/MenuConfig.cpp:303
639 msgid ""
640 "Always hide loot tooltips, except for when a piece of loot is hovered with "
641 "the mouse cursor. Temporarily show all loot tooltips with 'Alt'."
642 msgstr ""
643 "Toujours masquer les infobulles de butin, sauf lorsqu'une pièce du butin est"
644 " survolée par la souris. Montrer temporairement toutes les infobulles de "
645 "butin avec la touche 'Alt'."
646
647 #: ../../../src/MenuConfig.cpp:306
648 msgid "Visible"
649 msgstr "Visible"
650
651 #: ../../../src/MenuConfig.cpp:307
652 msgid "Visible (2x zoom)"
653 msgstr "Visible (zoom x2)"
654
655 #: ../../../src/MenuConfig.cpp:311
656 msgid ""
657 "Controls the type of warning to be activated when the player is below the "
658 "low health threshold."
659 msgstr ""
660 "Contrôle le type d'alerte activée lorsque la santé du joueur est sous le "
661 "seuil de santé bas."
662
663 #: ../../../src/MenuConfig.cpp:312
664 msgid "- Display a message"
665 msgstr "- Afficher un message"
666
667 #: ../../../src/MenuConfig.cpp:313
668 msgid "- Play a sound"
669 msgstr "- Jouer un son"
670
671 #: ../../../src/MenuConfig.cpp:314
672 msgid "- Change the cursor"
673 msgstr "- Changer le curseur"
674
675 #: ../../../src/MenuConfig.cpp:316
676 msgid "Disabled"
677 msgstr "Désactivé"
678
679 #: ../../../src/MenuConfig.cpp:317
680 msgid "All"
681 msgstr "Tout"
682
683 #: ../../../src/MenuConfig.cpp:318
684 msgid "Message & Cursor"
685 msgstr "Message & Curseur"
686
687 #: ../../../src/MenuConfig.cpp:319
688 msgid "Message & Sound"
689 msgstr "Message & Son"
690
691 #: ../../../src/MenuConfig.cpp:320
692 msgid "Sound & Cursor"
693 msgstr "Son & Curseur"
694
695 #: ../../../src/MenuConfig.cpp:321
696 msgid "Message"
697 msgstr "Message"
698
699 #: ../../../src/MenuConfig.cpp:322
700 msgid "Cursor"
701 msgstr "Curseur"
702
703 #: ../../../src/MenuConfig.cpp:323
704 msgid "Sound"
705 msgstr "Son"
706
707 #: ../../../src/MenuConfig.cpp:329
708 msgid ""
709 "When the player's health drops below the given threshold, the low health "
710 "notifications are triggered if one or more of them is enabled."
711 msgstr ""
712 "Lorsque la santé du joueur tombe en dessous du seuil donné, les "
713 "notifications de santé basse sont déclenchées si au moins l'une d'entre "
714 "elles est activée."
715
716 #: ../../../src/MenuConfig.cpp:347
717 msgid "The maximum frame rate that the game will be allowed to run at."
718 msgstr ""
719 "La fréquence d'images maximale à laquelle le jeu sera autorisé à "
720 "fonctionner."
721
722 #: ../../../src/MenuConfig.cpp:351
723 msgid ""
724 "The render size refers to the height in pixels of the surface used to draw "
725 "the game. Mods define the allowed render sizes, but this option allows "
726 "overriding the maximum size."
727 msgstr ""
728 "La taille de rendu fait référence à la hauteur en pixels de la surface "
729 "utilisée pour dessiner le jeu. Les mods définissent les tailles de rendu "
730 "autorisées, mais cette option permet de remplacer la taille maximale."
731
732 #: ../../../src/MenuConfig.cpp:374 ../../../src/MenuConfig.cpp:1679
733 #: ../../../src/MenuGameOver.cpp:116
734 msgid "Exit"
735 msgstr "Quitter"
736
737 #: ../../../src/MenuConfig.cpp:375
738 msgid "Video"
739 msgstr "Vidéo"
740
741 #: ../../../src/MenuConfig.cpp:376
152742 msgid "Audio"
153743 msgstr "Audio"
154744
155 #: ../../../src/GameStateConfigBase.cpp:161
156 #: ../../../src/GameStateConfigDesktop.cpp:131
745 #: ../../../src/MenuConfig.cpp:377
157746 msgid "Interface"
158747 msgstr "Interface"
159748
160 #: ../../../src/GameStateConfigBase.cpp:162
161 #: ../../../src/GameStateConfigDesktop.cpp:134
749 #: ../../../src/MenuConfig.cpp:378
750 msgid "Input"
751 msgstr "Entrée"
752
753 #: ../../../src/MenuConfig.cpp:379
754 msgid "Keybindings"
755 msgstr "Commandes"
756
757 #: ../../../src/MenuConfig.cpp:380
162758 msgid "Mods"
163759 msgstr "Mods"
164760
165 #: ../../../src/GameStateConfigBase.cpp:249 ../../../src/MenuExit.cpp:72
761 #: ../../../src/MenuConfig.cpp:392
762 msgid "Paused"
763 msgstr "En pause"
764
765 #: ../../../src/MenuConfig.cpp:395
766 msgid "Time Played"
767 msgstr "Temps de jeu"
768
769 #: ../../../src/MenuConfig.cpp:401
770 msgid "Renderer"
771 msgstr "Rendu"
772
773 #: ../../../src/MenuConfig.cpp:402
774 msgid "Full Screen Mode"
775 msgstr "Mode plein écran"
776
777 #: ../../../src/MenuConfig.cpp:403
778 msgid "Hardware surfaces"
779 msgstr "Surfaces matérielles"
780
781 #: ../../../src/MenuConfig.cpp:404
782 msgid "V-Sync"
783 msgstr "V-Sync"
784
785 #: ../../../src/MenuConfig.cpp:405
786 msgid "Texture Filtering"
787 msgstr "Filtrage de textures"
788
789 #: ../../../src/MenuConfig.cpp:406
790 msgid "DPI scaling"
791 msgstr "Echelonnage DPI"
792
793 #: ../../../src/MenuConfig.cpp:407
794 msgid "Parallax Layers"
795 msgstr "Couches parallax"
796
797 #: ../../../src/MenuConfig.cpp:408
798 msgid "Allow changing gamma"
799 msgstr "Régler le gamma"
800
801 #: ../../../src/MenuConfig.cpp:409
802 msgid "Gamma"
803 msgstr "Gamma"
804
805 #: ../../../src/MenuConfig.cpp:410
806 msgid "Maximum Render Size"
807 msgstr "Taille de Rendu Maximum"
808
809 #: ../../../src/MenuConfig.cpp:411
810 msgid "Frame Limit"
811 msgstr "Limite de Fréquence d'images."
812
813 #: ../../../src/MenuConfig.cpp:413
814 msgid "Sound Volume"
815 msgstr "Volume des sons"
816
817 #: ../../../src/MenuConfig.cpp:414
166818 msgid "Music Volume"
167819 msgstr "Volume de la musique"
168820
169 #: ../../../src/GameStateConfigBase.cpp:253 ../../../src/MenuExit.cpp:77
170 msgid "Sound Volume"
171 msgstr "Volume des sons"
172
173 #: ../../../src/GameStateConfigBase.cpp:257
821 #: ../../../src/MenuConfig.cpp:416
174822 msgid "Language"
175823 msgstr "Langues"
176824
177 #: ../../../src/GameStateConfigBase.cpp:266
825 #: ../../../src/MenuConfig.cpp:417
178826 msgid "Show FPS"
179827 msgstr "Afficher les FPS"
180828
181 #: ../../../src/GameStateConfigBase.cpp:270
829 #: ../../../src/MenuConfig.cpp:418
830 msgid "Hardware mouse cursor"
831 msgstr "Curseur matériel"
832
833 #: ../../../src/MenuConfig.cpp:419
182834 msgid "Colorblind Mode"
183835 msgstr "Mode daltonien"
184836
185 #: ../../../src/GameStateConfigBase.cpp:274
186 msgid "Hardware mouse cursor"
187 msgstr ""
188
189 #: ../../../src/GameStateConfigBase.cpp:278
837 #: ../../../src/MenuConfig.cpp:420
190838 msgid "Developer Mode"
191839 msgstr "Mode développeur"
192840
193 #: ../../../src/GameStateConfigBase.cpp:282
841 #: ../../../src/MenuConfig.cpp:421
194842 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
843 msgstr "Sous-titres"
844
845 #: ../../../src/MenuConfig.cpp:422
846 msgid "Loot tooltip visibility"
847 msgstr "Visibilité infobulle butin"
848
849 #: ../../../src/MenuConfig.cpp:423
850 msgid "Mini-map mode"
851 msgstr "Mode mini-carte"
852
853 #: ../../../src/MenuConfig.cpp:424
854 msgid "Always show stat bar labels"
855 msgstr "Toujours montrer les étiquettes de la barre de statistiques"
856
857 #: ../../../src/MenuConfig.cpp:425
858 msgid "Allow stat bar auto-hiding"
859 msgstr "Autorise le masquage auto de la barre de statut"
860
861 #: ../../../src/MenuConfig.cpp:426
862 msgid "Show combat text"
863 msgstr "Afficher le texte des combats"
864
865 #: ../../../src/MenuConfig.cpp:427
866 msgid "Automatically equip items"
867 msgstr "Équiper automatiquement les objets"
868
869 #: ../../../src/MenuConfig.cpp:428
870 msgid "Show hidden entity markers"
871 msgstr "Montre les marqueurs d'entité cachés"
872
873 #: ../../../src/MenuConfig.cpp:429
874 msgid "Low health notification"
875 msgstr "Notification de santé basse"
876
877 #: ../../../src/MenuConfig.cpp:430
878 msgid "Low health threshold"
879 msgstr "Seuil de santé basse"
880
881 #: ../../../src/MenuConfig.cpp:431
882 msgid "Show item comparison tooltips"
883 msgstr "Afficher les infobulles de comparaison des articles"
884
885 #: ../../../src/MenuConfig.cpp:434 ../../../src/MenuMovementType.cpp:94
886 #: ../../../src/MenuMovementType.cpp:131
887 msgid "Joystick"
888 msgstr "Manette"
889
890 #: ../../../src/MenuConfig.cpp:435
891 msgid "Move hero using mouse"
892 msgstr "Déplacement du héro à la souris"
893
894 #: ../../../src/MenuConfig.cpp:436
895 msgid "Mouse aim"
896 msgstr "Visée à la souris"
897
898 #: ../../../src/MenuConfig.cpp:437
899 msgid "Do not use mouse"
900 msgstr "Ne pas utiliser la souris"
901
902 #: ../../../src/MenuConfig.cpp:438
903 msgid "Swap mouse movement button"
904 msgstr "Inverser les boutons de mouvement de la souris"
905
906 #: ../../../src/MenuConfig.cpp:439
907 msgid "Attack with mouse movement"
908 msgstr "Attaquer avec les mouvement de la souris"
909
910 #: ../../../src/MenuConfig.cpp:440
911 msgid "Joystick Deadzone"
912 msgstr "Zone morte du joystick"
913
914 #: ../../../src/MenuConfig.cpp:441
915 msgid "Touch Controls"
916 msgstr "Commandes tactiles"
917
918 #: ../../../src/MenuConfig.cpp:442
919 msgid "Touch Gamepad Scaling"
920 msgstr "Mise à l'échelle de la Manette de jeu Tactile"
921
922 #: ../../../src/MenuConfig.cpp:452
923 #, c-format
924 msgid "Primary binding: %s"
925 msgstr "Affectation principale : %s"
926
927 #: ../../../src/MenuConfig.cpp:453
928 #, c-format
929 msgid "Alternate binding: %s"
930 msgstr "Affectation secondaire : %s"
931
932 #: ../../../src/MenuConfig.cpp:454
933 #, c-format
934 msgid "Joystick binding: %s"
935 msgstr "Affectation de la manette : %s"
936
937 #: ../../../src/MenuConfig.cpp:556
252938 msgid ""
253939 "Will try to store surfaces in video memory versus system memory. The effect "
254940 "this has on performance depends on the renderer."
255941 msgstr ""
256
257 #: ../../../src/GameStateConfigDesktop.cpp:189
942 "Tentera de stocker les surfaces dans la mémoire vidéo plutôt que la mémoire "
943 "du système. L'effet sur les performances dépend de la carte vidéo."
944
945 #: ../../../src/MenuConfig.cpp:557
258946 msgid ""
259947 "Prevents screen tearing. Disable if you experience \"stuttering\" in "
260948 "windowed mode or input lag."
261949 msgstr ""
262
263 #: ../../../src/GameStateConfigDesktop.cpp:190
950 "Evite l'apparition de déchirement d'écran. A désactiver si vous subissez des"
951 " 'bégaiements' en mode fenêtré ou des retards de saisie. "
952
953 #: ../../../src/MenuConfig.cpp:558
264954 msgid ""
265955 "When enabled, this uses the screen DPI in addition to the window dimensions "
266956 "to scale the rendering resolution. Otherwise, only the window dimensions are"
267957 " used."
268958 msgstr ""
269
270 #: ../../../src/GameStateConfigDesktop.cpp:191
959 "Si activé, utilise le DPI de votre écran en plus de la taille de la fenêtre "
960 "pour échelonner la résolution de rendu. Autrement, seule les dimensions de "
961 "la fenêtre sont utilisées."
962
963 #: ../../../src/MenuConfig.cpp:559
271964 msgid ""
272965 "This enables parallax (non-tile) layers. Disabling this setting can improve "
273966 "performance in some cases."
274967 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
968 "Active les couches parallax. La désactivation de cette option peut améliorer"
969 " les performances dans certains cas."
970
971 #: ../../../src/MenuConfig.cpp:560
972 msgid ""
973 "Enables the below setting that controls the screen gamma level. The behavior"
974 " of the gamma setting can vary between platforms."
975 msgstr ""
976 "Active le réglage ci-dessous qui contrôle le niveau gamma de l'écran. Le "
977 "comportement du paramètre gamma peut varier selon les plateformes."
978
979 #: ../../../src/MenuConfig.cpp:561
980 msgid ""
981 "Provides additional text for information that is primarily conveyed through "
982 "color."
983 msgstr ""
984 "Fournit du texte supplémentaire aux informations principalement transmises "
985 "par la couleur."
986
987 #: ../../../src/MenuConfig.cpp:562
988 msgid ""
989 "Some mods will automatically hide the stat bars when they are inactive. "
990 "Disabling this option will keep them displayed at all times."
991 msgstr ""
992 "Certains mods cachent automatiquement les barres de statistiques quand ils "
993 "sont inactifs. Désactiver cette option les affichera en permanence."
994
995 #: ../../../src/MenuConfig.cpp:563
996 msgid ""
997 "When enabled, empty equipment slots will be filled with applicable items "
998 "when they are obtained."
999 msgstr ""
1000 "En activant cette option, les emplacements d'équipement vides seront remplis"
1001 " des objets adéquats obtenus."
1002
1003 #: ../../../src/MenuConfig.cpp:564
1004 msgid ""
1005 "Shows a marker above enemies, allies, and the player when they are obscured "
1006 "by tall objects."
1007 msgstr ""
1008 "Place un marqueur au-dessus des ennemis, des alliés et du joueur lorsqu'ils "
1009 "sont masqués par de grands objets."
1010
1011 #: ../../../src/MenuConfig.cpp:565
1012 msgid ""
1013 "When enabled, tooltips for equipped items of the same type are shown next to"
1014 " standard item tooltips."
1015 msgstr ""
1016 "Lorsqu'elle est activée, les infobulles des objets équipés du même type sont"
1017 " affichées à côté des infobulles des objets standard."
1018
1019 #: ../../../src/MenuConfig.cpp:566
1020 msgid ""
1021 "This allows the game to be controlled entirely with the keyboard (or "
1022 "joystick)."
1023 msgstr ""
1024 "Cela permet au jeu d'être entièrement contrôlé via le clavier (ou le "
1025 "joystick)."
1026
1027 #: ../../../src/MenuConfig.cpp:567
1028 msgid ""
1029 "When 'Move hero using mouse' is enabled, this setting controls if 'Main1' or"
1030 " 'Main2' is used to move the hero. If enabled, 'Main2' will move the hero "
1031 "instead of 'Main1'."
1032 msgstr ""
1033 "Lorsque 'Déplacer le héros à la souris' est activé, ce paramètre contrôle si"
1034 " 'Principal1' ou 'Principal2' est utilisé pour déplacer le héros. S'il est "
1035 "activé, 'Principal2' déplacera le héros à la place de 'Principal1'."
1036
1037 #: ../../../src/MenuConfig.cpp:568
1038 msgid ""
1039 "When 'Move hero using mouse' is enabled, this setting controls if the Power "
1040 "assigned to the movement button can be used by targeting an enemy. If this "
1041 "setting is disabled, it is required to use 'Shift' to access the Power "
1042 "assigned to the movement button."
1043 msgstr ""
1044 "Si 'Déplacer le héros avec la souris' est activé, ce paramètre contrôle si "
1045 "la Pouvoir assigné au bouton de mouvement peut être utilisé pour cibler un "
1046 "ennemi. S'il est désactivé, il est nécessaire d'utiliser la touche 'Shift' "
1047 "pour activer le Pouvoir assigné au bouton de mouvement."
1048
1049 #: ../../../src/MenuConfig.cpp:569
1050 msgid ""
1051 "The player's attacks will be aimed in the direction of the mouse cursor when"
1052 " this is enabled."
1053 msgstr ""
1054 "L'attaque du joueur sera dirigée dans la direction du curseur de la souris "
1055 "si ce paramètre est activé."
1056
1057 #: ../../../src/MenuConfig.cpp:570
1058 msgid ""
1059 "When enabled, a virtual gamepad will be added in-game. Other interactions, "
1060 "such as drag-and-drop behavior, are also altered to better suit touch input."
1061 msgstr ""
1062 "Lorsqu'elle est activée, une manette de jeu virtuelle est ajoutée dans le "
1063 "jeu. D'autres interactions, comme le glisser-déposer, sont également "
1064 "modifiées pour mieux s'adapter à la saisie tactile."
1065
1066 #: ../../../src/MenuConfig.cpp:621
1067 msgid "Active Mods"
1068 msgstr "Mods actifs"
1069
1070 #: ../../../src/MenuConfig.cpp:630
1071 msgid "Available Mods"
1072 msgstr "Mods disponibles"
1073
1074 #: ../../../src/MenuConfig.cpp:649
1075 msgid "<< Disable"
1076 msgstr "<< Désactiver"
1077
1078 #: ../../../src/MenuConfig.cpp:655
1079 msgid "Enable >>"
1080 msgstr "Activer >>"
1081
1082 #: ../../../src/MenuConfig.cpp:1536
1083 msgid "Version:"
1084 msgstr "Version :"
1085
1086 #: ../../../src/MenuConfig.cpp:1541
1087 msgid "Game:"
1088 msgstr "Jeu :"
1089
1090 #: ../../../src/MenuConfig.cpp:1546
1091 msgid "Engine version:"
1092 msgstr "Version du moteur :"
1093
1094 #: ../../../src/MenuConfig.cpp:1554
1095 msgid "Requires mods:"
1096 msgstr "Mods nécessaires :"
1097
1098 #: ../../../src/MenuConfig.cpp:1662 ../../../src/SDLInputState.cpp:750
1099 msgid "(none)"
1100 msgstr "(rien)"
1101
1102 #: ../../../src/MenuConfig.cpp:1679 ../../../src/MenuGameOver.cpp:73
1103 msgid "Save & Exit"
1104 msgstr "Sauvegarder & Quitter"
1105
1106 #: ../../../src/MenuDevConsole.cpp:65
8191107 msgid "Execute"
8201108 msgstr "Éxécuter"
8211109
822 #: ../../../src/MenuDevConsole.cpp:101 ../../../src/MenuDevConsole.cpp:151
1110 #: ../../../src/MenuDevConsole.cpp:103 ../../../src/MenuDevConsole.cpp:153
8231111 msgid "Developer Console"
8241112 msgstr "Console de développement"
8251113
826 #: ../../../src/MenuDevConsole.cpp:141
1114 #: ../../../src/MenuDevConsole.cpp:143
8271115 #, c-format
8281116 msgid "Use '%s' to inspect with the cursor."
829 msgstr ""
830
831 #: ../../../src/MenuDevConsole.cpp:146
1117 msgstr "Utilisez '%s' pour inspecter avec le curseur."
1118
1119 #: ../../../src/MenuDevConsole.cpp:148
8321120 msgid "Arguments with spaces should be enclosed with double quotes. Example:"
8331121 msgstr ""
8341122 "Les arguments contenants des espaces devraient être mis entre guillemets. "
8351123 "Exemple :"
8361124
837 #: ../../../src/MenuDevConsole.cpp:147
1125 #: ../../../src/MenuDevConsole.cpp:149
8381126 msgid "Type 'help' to get a list of commands."
839 msgstr ""
840
841 #: ../../../src/MenuDevConsole.cpp:209 ../../../src/MenuDevConsole.cpp:213
1127 msgstr "Tapez 'help' pour obtenir une liste des commandes."
1128
1129 #: ../../../src/MenuDevConsole.cpp:211 ../../../src/MenuDevConsole.cpp:215
8421130 msgid "px"
843 msgstr ""
844
845 #: ../../../src/MenuDevConsole.cpp:224
1131 msgstr "px"
1132
1133 #: ../../../src/MenuDevConsole.cpp:226
8461134 msgid "Distance"
847 msgstr ""
848
849 #: ../../../src/MenuDevConsole.cpp:239 ../../../src/MenuDevConsole.cpp:286
1135 msgstr "Distance"
1136
1137 #: ../../../src/MenuDevConsole.cpp:241 ../../../src/MenuDevConsole.cpp:289
1138 #: ../../../src/MenuDevConsole.cpp:303
8501139 msgid "Entity"
851 msgstr ""
852
853 #: ../../../src/MenuDevConsole.cpp:261 ../../../src/MenuDevConsole.cpp:268
1140 msgstr "Entité"
1141
1142 #: ../../../src/MenuDevConsole.cpp:263 ../../../src/MenuDevConsole.cpp:270
8541143 msgid "none"
855 msgstr ""
856
857 #: ../../../src/MenuDevConsole.cpp:262 ../../../src/MenuDevConsole.cpp:264
1144 msgstr "aucun"
1145
1146 #: ../../../src/MenuDevConsole.cpp:264 ../../../src/MenuDevConsole.cpp:266
8581147 msgid "wall"
859 msgstr ""
860
861 #: ../../../src/MenuDevConsole.cpp:263 ../../../src/MenuDevConsole.cpp:265
1148 msgstr "mur"
1149
1150 #: ../../../src/MenuDevConsole.cpp:265 ../../../src/MenuDevConsole.cpp:267
8621151 msgid "short wall / pit"
863 msgstr ""
864
865 #: ../../../src/MenuDevConsole.cpp:266
1152 msgstr "petit mur / fossé"
1153
1154 #: ../../../src/MenuDevConsole.cpp:268
8661155 msgid "entity"
867 msgstr ""
868
869 #: ../../../src/MenuDevConsole.cpp:267
1156 msgstr "entité"
1157
1158 #: ../../../src/MenuDevConsole.cpp:269
8701159 msgid "entity, ally"
871 msgstr ""
872
873 #: ../../../src/MenuDevConsole.cpp:274
1160 msgstr "entité, allié"
1161
1162 #: ../../../src/MenuDevConsole.cpp:276
8741163 msgid "Tile"
875 msgstr ""
876
877 #: ../../../src/MenuDevConsole.cpp:360
1164 msgstr "Tuile"
1165
1166 #: ../../../src/MenuDevConsole.cpp:377
8781167 msgid "adds a power to the action bar"
879 msgstr ""
880
881 #: ../../../src/MenuDevConsole.cpp:361
1168 msgstr "ajoute un pouvoir à la barre d'action"
1169
1170 #: ../../../src/MenuDevConsole.cpp:378
8821171 msgid "turns on/off the display of the FPS counter"
883 msgstr ""
884
885 #: ../../../src/MenuDevConsole.cpp:362
1172 msgstr "allume ou éteint l'affichage du compteur de FPS"
1173
1174 #: ../../../src/MenuDevConsole.cpp:379
8861175 msgid "turns on/off all of the HUD elements"
8871176 msgstr "Activer/Désactiver tous les éléments de l'affichage HUD"
8881177
889 #: ../../../src/MenuDevConsole.cpp:363
1178 #: ../../../src/MenuDevConsole.cpp:380
8901179 msgid "turns on/off the developer hud"
8911180 msgstr "Activer/Désactiver l'affichage HUD"
8921181
893 #: ../../../src/MenuDevConsole.cpp:364
1182 #: ../../../src/MenuDevConsole.cpp:381
8941183 msgid ""
8951184 "Prints a list of powers that match a search term. No search term will list "
8961185 "all items"
8971186 msgstr ""
898
899 #: ../../../src/MenuDevConsole.cpp:365
1187 "Imprime une liste des pouvoirs correspondant au terme recherché. Sans terme "
1188 "recherché, affiche tous les objets."
1189
1190 #: ../../../src/MenuDevConsole.cpp:382
9001191 msgid "Prints out all the map filenames located in the \"maps/\" directory."
901 msgstr ""
902
903 #: ../../../src/MenuDevConsole.cpp:366
1192 msgstr "Imprime tous les fichiers cartes situés dans le répertoire \"/maps\"."
1193
1194 #: ../../../src/MenuDevConsole.cpp:383
9041195 msgid ""
9051196 "Prints out the active campaign statuses that match a search term. No search "
9061197 "term will list all active statuses"
9091200 "recherché. L'absence de terme de recherche affichera la liste de tous les "
9101201 "états actifs"
9111202
912 #: ../../../src/MenuDevConsole.cpp:367
1203 #: ../../../src/MenuDevConsole.cpp:384
9131204 msgid ""
9141205 "Prints a list of items that match a search term. No search term will list "
9151206 "all items"
9171208 "Affiche une liste des objets qui correspondent au terme recherché. L'absence"
9181209 " de terme de recherche affichera tous les objets"
9191210
920 #: ../../../src/MenuDevConsole.cpp:368
1211 #: ../../../src/MenuDevConsole.cpp:385
9211212 msgid ""
9221213 "parses a series of event components and executes them as a single event"
9231214 msgstr ""
9241215 "parcourt une série de composants d'événements et les exécutent en tant "
9251216 "qu'événement unique"
9261217
927 #: ../../../src/MenuDevConsole.cpp:369
1218 #: ../../../src/MenuDevConsole.cpp:386
9281219 msgid "clears the command history"
9291220 msgstr "Effacer l'historique de commandes"
9301221
931 #: ../../../src/MenuDevConsole.cpp:370
1222 #: ../../../src/MenuDevConsole.cpp:387
9321223 msgid "displays this text"
9331224 msgstr "affiche ce texte"
9341225
935 #: ../../../src/MenuDevConsole.cpp:377
1226 #: ../../../src/MenuDevConsole.cpp:394
9361227 msgid "Toggled the developer hud"
9371228 msgstr "Affichage HUD développeur basculé"
9381229
939 #: ../../../src/MenuDevConsole.cpp:381
1230 #: ../../../src/MenuDevConsole.cpp:398
9401231 msgid "Toggled the hud"
9411232 msgstr "Affichage HUD basculé"
9421233
943 #: ../../../src/MenuDevConsole.cpp:385
1234 #: ../../../src/MenuDevConsole.cpp:402
9441235 msgid "Toggled the FPS counter"
945 msgstr ""
946
947 #: ../../../src/MenuDevConsole.cpp:534
1236 msgstr "Alterne le compteur FPS"
1237
1238 #: ../../../src/MenuDevConsole.cpp:552
9481239 msgid "ERROR: Incorrect number of arguments"
949 msgstr ""
950
951 #: ../../../src/MenuDevConsole.cpp:536 ../../../src/MenuDevConsole.cpp:564
1240 msgstr "ERREUR : nombre d'arguments incorrect"
1241
1242 #: ../../../src/MenuDevConsole.cpp:554 ../../../src/MenuDevConsole.cpp:582
9521243 msgid "HINT:"
953 msgstr ""
954
955 #: ../../../src/MenuDevConsole.cpp:536
1244 msgstr "SUGGESTION :"
1245
1246 #: ../../../src/MenuDevConsole.cpp:554
9561247 msgid "<id>"
957 msgstr ""
958
959 #: ../../../src/MenuDevConsole.cpp:552
1248 msgstr "<id>"
1249
1250 #: ../../../src/MenuDevConsole.cpp:570
9601251 #, c-format
9611252 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
1253 msgstr "ERREUR : '%s' n'est pas une clé d'évènement valide"
1254
1255 #: ../../../src/MenuDevConsole.cpp:580
9651256 msgid "ERROR: Too few arguments"
966 msgstr "ERREUR: Trop peu d'arguments"
967
968 #: ../../../src/MenuDevConsole.cpp:564
1257 msgstr "ERREUR : Trop peu d'arguments"
1258
1259 #: ../../../src/MenuDevConsole.cpp:582
9691260 msgid "<key>=<val> <key>=<val> ..."
970 msgstr ""
971
972 #: ../../../src/MenuDevConsole.cpp:569
1261 msgstr "<key>=<val> <key>=<val> ..."
1262
1263 #: ../../../src/MenuDevConsole.cpp:587
9731264 msgid "ERROR: Unknown command"
974 msgstr "ERREUR: Commande inconnue"
975
976 #: ../../../src/MenuDevConsole.cpp:571
1265 msgstr "ERREUR : Commande inconnue"
1266
1267 #: ../../../src/MenuDevConsole.cpp:589
9771268 msgid "HINT: Type help"
9781269 msgstr "SUGGESTION : tapez help"
9791270
980 #: ../../../src/MenuEnemy.cpp:138
1271 #: ../../../src/MenuEnemy.cpp:162
9811272 #, c-format
9821273 msgid "%s level %d"
9831274 msgstr "%s niveau %d"
9841275
985 #: ../../../src/MenuEnemy.cpp:162
1276 #: ../../../src/MenuEnemy.cpp:186
9861277 msgid "Dead"
9871278 msgstr "Mort"
9881279
989 #: ../../../src/MenuEnemy.cpp:164
1280 #: ../../../src/MenuEnemy.cpp:188
9901281 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
1282 msgstr "Détruit"
1283
1284 #: ../../../src/MenuGameOver.cpp:69
1285 msgid "Game Over"
1286 msgstr "Fin du Jeu"
1287
1288 #: ../../../src/MenuInventory.cpp:178
10141289 #, c-format
10151290 msgid "Lost %d%% of %s."
1016 msgstr ""
1017
1018 #: ../../../src/MenuInventory.cpp:195
1291 msgstr "Perte %d %% de %s."
1292
1293 #: ../../../src/MenuInventory.cpp:185
10191294 #, c-format
10201295 msgid "Lost %d%% of total XP."
1021 msgstr ""
1022
1023 #: ../../../src/MenuInventory.cpp:200
1296 msgstr "Perte de %d %% des XP totaux."
1297
1298 #: ../../../src/MenuInventory.cpp:190
10241299 #, c-format
10251300 msgid "Lost %d%% of current level XP."
1026 msgstr ""
1027
1028 #: ../../../src/MenuInventory.cpp:226
1301 msgstr "Perte de %d %% du niveau d'XP actuel."
1302
1303 #: ../../../src/MenuInventory.cpp:216
10291304 #, c-format
10301305 msgid "Lost %s."
10311306 msgstr "Perdu %s."
10321307
1033 #: ../../../src/MenuInventory.cpp:274 ../../../src/MenuStash.cpp:146
1308 #: ../../../src/MenuInventory.cpp:258 ../../../src/MenuStash.cpp:276
10341309 #, c-format
10351310 msgid "%d %s"
10361311 msgstr "%d %s"
10371312
1038 #: ../../../src/MenuInventory.cpp:317
1313 #: ../../../src/MenuInventory.cpp:301
10391314 msgid "Pick up item(s):"
1040 msgstr "Rammaser les objet(s):"
1041
1042 #: ../../../src/MenuInventory.cpp:318
1315 msgstr "Ramasser les objet(s) :"
1316
1317 #: ../../../src/MenuInventory.cpp:302
10431318 msgid "Use or equip item:"
1044 msgstr "Utilisez ou équipez un objet:"
1045
1046 #: ../../../src/MenuInventory.cpp:319
1319 msgstr "Utiliser ou équiper un objet :"
1320
1321 #: ../../../src/MenuInventory.cpp:303
10471322 #, c-format
10481323 msgid "%s modifiers"
1049 msgstr "modificateurs de %s"
1050
1051 #: ../../../src/MenuInventory.cpp:320
1324 msgstr "Modificateurs de %s"
1325
1326 #: ../../../src/MenuInventory.cpp:304
10521327 msgid "Select a quantity of item:"
1053 msgstr "Sélectionnez une quantitée d'objet:"
1054
1055 #: ../../../src/MenuInventory.cpp:323
1328 msgstr "Sélectionner une quantité d'objet :"
1329
1330 #: ../../../src/MenuInventory.cpp:307
10561331 msgid "Stash item stack:"
10571332 msgstr "Mettre au coffre la pile d'objets :"
10581333
1059 #: ../../../src/MenuInventory.cpp:325
1334 #: ../../../src/MenuInventory.cpp:309
10601335 msgid "Sell item stack:"
10611336 msgstr "Vendre la pile d'objets :"
10621337
1063 #: ../../../src/MenuInventory.cpp:592
1338 #: ../../../src/MenuInventory.cpp:576
10641339 msgid "You don't have enough of the required item."
10651340 msgstr "Vous n'avez pas l'objet nécessaire en quantité suffisante."
10661341
1067 #: ../../../src/MenuInventory.cpp:599
1342 #: ../../../src/MenuInventory.cpp:588
10681343 msgid "You can't use this item right now."
1069 msgstr ""
1070
1071 #: ../../../src/MenuInventory.cpp:611
1344 msgstr "Vous ne pouvez pas utiliser cet objet maintenant."
1345
1346 #: ../../../src/MenuInventory.cpp:600
10721347 msgid "This item can only be used from the action bar."
10731348 msgstr "Cet objet ne peut être utilisé que depuis la barre d'action."
10741349
1075 #: ../../../src/MenuInventory.cpp:729
1350 #: ../../../src/MenuInventory.cpp:718
10761351 msgid "Inventory is full."
10771352 msgstr "L'inventaire est complet."
10781353
1079 #: ../../../src/MenuInventory.cpp:849
1354 #: ../../../src/MenuInventory.cpp:843
10801355 #, c-format
10811356 msgid "Not enough %s."
1082 msgstr ""
1083
1084 #: ../../../src/MenuInventory.cpp:869 ../../../src/MenuInventory.cpp:876
1357 msgstr "Pas assez de %s."
1358
1359 #: ../../../src/MenuInventory.cpp:863 ../../../src/MenuInventory.cpp:870
10851360 msgid "This item can not be sold."
1086 msgstr ""
1361 msgstr "Cet objet ne peut pas être vendu."
10871362
10881363 #: ../../../src/MenuLog.cpp:91
10891364 msgid "Notes"
10931368 msgid "Quests"
10941369 msgstr "Quêtes"
10951370
1096 #: ../../../src/MenuManager.cpp:286
1371 #: ../../../src/MenuManager.cpp:305
10971372 #, c-format
10981373 msgid "XP: %d/%d"
1099 msgstr "XP: %d/%d"
1100
1101 #: ../../../src/MenuManager.cpp:827
1374 msgstr "XP : %d/%d"
1375
1376 #: ../../../src/MenuManager.cpp:875
11021377 msgid "This item can not be dropped."
1103 msgstr ""
1378 msgstr "Cet objet ne peut pas être abandonné."
1379
1380 #: ../../../src/MenuManager.cpp:1501
1381 msgid "Equipped"
1382 msgstr "Équipé "
1383
1384 #: ../../../src/MenuMovementType.cpp:87
1385 msgid "Select a Movement Type"
1386 msgstr "Sélectionnez un type de Mouvement"
1387
1388 #: ../../../src/MenuMovementType.cpp:89
1389 msgid "Can be changed later in the Configuration menu."
1390 msgstr "Peut être modifié ultérieurement dans le menu Configuration."
1391
1392 #: ../../../src/MenuMovementType.cpp:92 ../../../src/MenuMovementType.cpp:122
1393 msgid "Keyboard"
1394 msgstr "Clavier"
1395
1396 #: ../../../src/MenuMovementType.cpp:93 ../../../src/MenuMovementType.cpp:128
1397 msgid "Mouse"
1398 msgstr "Souris"
1399
1400 #: ../../../src/MenuMovementType.cpp:129
1401 msgid "Button"
1402 msgstr "Bouton"
11041403
11051404 #: ../../../src/MenuNumPicker.cpp:59
11061405 msgid "Enter amount:"
11071406 msgstr "Saisir la quantité :"
11081407
1109 #: ../../../src/MenuPowers.cpp:787
1408 #: ../../../src/MenuPowers.cpp:894
11101409 msgid "Passive"
1111 msgstr ""
1112
1113 #: ../../../src/MenuPowers.cpp:792
1410 msgstr "Passif"
1411
1412 #: ../../../src/MenuPowers.cpp:901
11141413 #, c-format
11151414 msgid "Costs %d MP"
11161415 msgstr "Consomme %d PM"
11171416
1118 #: ../../../src/MenuPowers.cpp:796
1417 #: ../../../src/MenuPowers.cpp:905
11191418 #, c-format
11201419 msgid "Costs %d HP"
11211420 msgstr "Consomme %d PV"
11221421
1123 #: ../../../src/MenuPowers.cpp:801
1422 #: ../../../src/MenuPowers.cpp:909
11241423 msgid "Cooldown:"
1125 msgstr ""
1126
1127 #: ../../../src/MenuPowers.cpp:866 ../../../src/MenuPowers.cpp:869
1424 msgstr "Rechargement :"
1425
1426 #: ../../../src/MenuPowers.cpp:960 ../../../src/MenuPowers.cpp:963
11281427 msgid "Damage per second"
1129 msgstr "Dommages par secondes"
1130
1131 #: ../../../src/MenuPowers.cpp:872 ../../../src/MenuPowers.cpp:875
1428 msgstr "Dégâts par seconde"
1429
1430 #: ../../../src/MenuPowers.cpp:966 ../../../src/MenuPowers.cpp:969
11321431 msgid "HP per second"
11331432 msgstr "PV par seconde"
11341433
1135 #: ../../../src/MenuPowers.cpp:878 ../../../src/MenuPowers.cpp:881
1434 #: ../../../src/MenuPowers.cpp:972 ../../../src/MenuPowers.cpp:975
11361435 msgid "MP per second"
11371436 msgstr "PM par seconde"
11381437
1139 #: ../../../src/MenuPowers.cpp:885
1438 #: ../../../src/MenuPowers.cpp:979
11401439 msgid "Immobilize"
11411440 msgstr "Immobilise"
11421441
1143 #: ../../../src/MenuPowers.cpp:893
1442 #: ../../../src/MenuPowers.cpp:987
11441443 msgid "Immunity"
11451444 msgstr "Immunité"
11461445
1147 #: ../../../src/MenuPowers.cpp:896
1446 #: ../../../src/MenuPowers.cpp:990
11481447 msgid "Immunity to damage over time"
11491448 msgstr "Immunité aux dommages progressifs"
11501449
1151 #: ../../../src/MenuPowers.cpp:899
1450 #: ../../../src/MenuPowers.cpp:993
11521451 msgid "Immunity to slow"
11531452 msgstr "Immunité à la lenteur"
11541453
1155 #: ../../../src/MenuPowers.cpp:902
1454 #: ../../../src/MenuPowers.cpp:996
11561455 msgid "Immunity to stun"
11571456 msgstr "Immunité à l'étourdissement"
11581457
1159 #: ../../../src/MenuPowers.cpp:905
1458 #: ../../../src/MenuPowers.cpp:999
11601459 msgid "Immunity to HP steal"
11611460 msgstr "Immunité au vol de PV"
11621461
1163 #: ../../../src/MenuPowers.cpp:908
1462 #: ../../../src/MenuPowers.cpp:1002
11641463 msgid "Immunity to MP steal"
11651464 msgstr "Immunité au vol de PM"
11661465
1167 #: ../../../src/MenuPowers.cpp:911
1466 #: ../../../src/MenuPowers.cpp:1005
11681467 msgid "Immunity to knockback"
11691468 msgstr "Immunité au recul"
11701469
1171 #: ../../../src/MenuPowers.cpp:914
1470 #: ../../../src/MenuPowers.cpp:1008
11721471 msgid "Immunity to damage reflection"
11731472 msgstr "Immunité au renvoi de dommage"
11741473
1175 #: ../../../src/MenuPowers.cpp:917
1474 #: ../../../src/MenuPowers.cpp:1014
11761475 msgid "Stun"
11771476 msgstr "Étourdissement"
11781477
1179 #: ../../../src/MenuPowers.cpp:920
1478 #: ../../../src/MenuPowers.cpp:1017
11801479 msgid "Automatic revive on death"
11811480 msgstr "Résurection automatique lors de la mort"
11821481
1183 #: ../../../src/MenuPowers.cpp:923
1482 #: ../../../src/MenuPowers.cpp:1020
11841483 msgid "Convert"
11851484 msgstr "Convertir"
11861485
1187 #: ../../../src/MenuPowers.cpp:926
1486 #: ../../../src/MenuPowers.cpp:1023
11881487 msgid "Fear"
11891488 msgstr "Peur"
11901489
1191 #: ../../../src/MenuPowers.cpp:929
1490 #: ../../../src/MenuPowers.cpp:1026
11921491 msgid "Lifespan"
11931492 msgstr "Durée de vie"
11941493
1195 #: ../../../src/MenuPowers.cpp:953
1494 #: ../../../src/MenuPowers.cpp:1050
11961495 msgid "Magical Shield"
11971496 msgstr "Bouclier magique"
11981497
1199 #: ../../../src/MenuPowers.cpp:982
1498 #: ../../../src/MenuPowers.cpp:1079
12001499 msgid "Healing"
12011500 msgstr "Soin"
12021501
1203 #: ../../../src/MenuPowers.cpp:985
1502 #: ../../../src/MenuPowers.cpp:1082
12041503 msgid "Knockback"
12051504 msgstr "Recul"
12061505
1207 #: ../../../src/MenuPowers.cpp:1010
1506 #: ../../../src/MenuPowers.cpp:1106
12081507 #, c-format
12091508 msgid "%d%% chance"
1210 msgstr ""
1211
1212 #: ../../../src/MenuPowers.cpp:1062
1509 msgstr "%d%%chance"
1510
1511 #: ../../../src/MenuPowers.cpp:1158
12131512 msgid "Base Accuracy"
1214 msgstr ""
1215
1216 #: ../../../src/MenuPowers.cpp:1082
1513 msgstr "Précision de base"
1514
1515 #: ../../../src/MenuPowers.cpp:1178
12171516 msgid "Base Critical Chance"
12181517 msgstr "Chance criticales de base"
12191518
1220 #: ../../../src/MenuPowers.cpp:1090
1519 #: ../../../src/MenuPowers.cpp:1186
12211520 msgid "Ignores Absorbtion"
1222 msgstr "Ignore l'Absorption"
1223
1224 #: ../../../src/MenuPowers.cpp:1095
1521 msgstr "Ignore l'absorption"
1522
1523 #: ../../../src/MenuPowers.cpp:1191
12251524 msgid "Ignores Avoidance"
1226 msgstr ""
1227
1228 #: ../../../src/MenuPowers.cpp:1100
1525 msgstr "Ignore l'esquive"
1526
1527 #: ../../../src/MenuPowers.cpp:1196
12291528 #, c-format
12301529 msgid "%d%% Chance to crit slowed targets"
12311530 msgstr "%d%% chances de coup critique sur les cibles lentes"
12321531
1233 #: ../../../src/MenuPowers.cpp:1105
1532 #: ../../../src/MenuPowers.cpp:1201
12341533 #, c-format
12351534 msgid "Elemental Damage (%s)"
1236 msgstr ""
1237
1238 #: ../../../src/MenuPowers.cpp:1114
1535 msgstr "Dégâts élémentaires (%s)"
1536
1537 #: ../../../src/MenuPowers.cpp:1210
12391538 #, c-format
12401539 msgid "Requires a %s"
1241 msgstr ""
1242
1243 #: ../../../src/MenuPowers.cpp:1151 ../../../src/MenuPowers.cpp:1154
1540 msgstr "Nécessite un(e) %s"
1541
1542 #: ../../../src/MenuPowers.cpp:1248 ../../../src/MenuPowers.cpp:1251
12441543 #, c-format
12451544 msgid "Requires Power: %s"
1246 msgstr "Nécessite le pouvoir: %s"
1247
1248 #: ../../../src/MenuPowers.cpp:1163
1545 msgstr "Nécessite le pouvoir : %s"
1546
1547 #: ../../../src/MenuPowers.cpp:1260
12491548 msgid "Click to Unlock (uses 1 Skill Point)"
12501549 msgstr "Cliquez pour débloquer (utilise 1 point de compétence)"
12511550
1252 #: ../../../src/MenuPowers.cpp:1167 ../../../src/MenuPowers.cpp:1169
1551 #: ../../../src/MenuPowers.cpp:1264 ../../../src/MenuPowers.cpp:1266
12531552 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
1553 msgstr "Nécessite 1 point de compétence"
1554
1555 #: ../../../src/MenuPowers.cpp:1466
1556 #, c-format
1557 msgid "Available skill points: %d"
1558 msgstr "Points de compétence disponibles : %d"
1559
1560 #: ../../../src/MenuPowers.cpp:1498
12671561 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
1562 msgstr "Niveau suivant :"
1563
1564 #: ../../../src/MenuStash.cpp:80 ../../../src/MenuStash.cpp:161
1565 msgid "Stash"
1566 msgstr "Coffre"
1567
1568 #: ../../../src/MenuStash.cpp:174 ../../../src/MenuStash.cpp:188
1569 msgid "Private"
1570 msgstr "Privé"
1571
1572 #: ../../../src/MenuStash.cpp:175
1573 msgid "Shared"
1574 msgstr "Partagé"
1575
1576 #: ../../../src/MenuStash.cpp:340
1577 msgid "This item can not be stored in the stash."
1578 msgstr "Cet objet ne peut pas être placé dans le coffre."
1579
1580 #: ../../../src/MenuStash.cpp:345
1581 msgid "This item can not be stored in the private stash."
1582 msgstr "Cet objet ne peut pas être placé dans le coffre privé."
1583
1584 #: ../../../src/MenuStash.cpp:350
1585 msgid "This item can not be stored in the shared stash."
1586 msgstr "Cet objet ne peut pas être placé dans le coffre partagé."
1587
1588 #: ../../../src/MenuStash.cpp:360
12791589 msgid "Stash is full."
1280 msgstr ""
1281
1282 #: ../../../src/MenuTalker.cpp:454
1590 msgstr "le coffre est complet."
1591
1592 #: ../../../src/MenuStash.cpp:414
1593 #, c-format
1594 msgid "Can not store item in stash: %s"
1595 msgstr "Impossible de placer l'objet dans le coffre : %s"
1596
1597 #: ../../../src/MenuTalker.cpp:448
1598 #, c-format
1599 msgid "<dialog node %d>"
1600 msgstr "<dialog node %d>"
1601
1602 #: ../../../src/MenuTalker.cpp:456
12831603 msgid "Trade"
12841604 msgstr "Commercer"
12851605
1286 #: ../../../src/MenuVendor.cpp:58
1606 #: ../../../src/MenuVendor.cpp:60
12871607 msgid "Buyback"
12881608 msgstr "Racheter"
12891609
1290 #: ../../../src/MenuVendor.cpp:279
1610 #: ../../../src/MenuVendor.cpp:283
12911611 msgid "Vendor"
12921612 msgstr "Vendeur"
12931613
1294 #: ../../../src/PowerManager.cpp:1136
1614 #: ../../../src/PowerManager.cpp:1204
12951615 #, c-format
12961616 msgid "+%d Shield"
12971617 msgstr "Bouclier +%d"
12981618
1299 #: ../../../src/PowerManager.cpp:1392
1619 #: ../../../src/PowerManager.cpp:1461
13001620 msgid "You are already transformed, untransform first."
13011621 msgstr "Vous êtes deja transformé, reprenez forme humaine avant."
13021622
1303 #: ../../../src/PowerManager.cpp:1404
1623 #: ../../../src/PowerManager.cpp:1473
13041624 msgid "Could not untransform at this position."
13051625 msgstr "Vous ne pouvez pas reprendre forme humaine à cette position."
13061626
13071627 #: ../../../src/QuestLog.cpp:234
13081628 msgid "Completed Quests"
1309 msgstr ""
1310
1311 #: ../../../src/SaveLoad.cpp:243 ../../../src/SaveLoad.cpp:244
1629 msgstr "Quêtes terminées"
1630
1631 #: ../../../src/SaveLoad.cpp:250 ../../../src/SaveLoad.cpp:251
13121632 msgid "Game saved."
13131633 msgstr "Jeu sauvegardé."
13141634
1315 #: ../../../src/SDLInputState.cpp:582
1635 #: ../../../src/SDLInputState.cpp:645
1636 msgid "BkSp"
1637 msgstr "RetArr"
1638
1639 #: ../../../src/SDLInputState.cpp:646
1640 msgid "Caps"
1641 msgstr "Maj"
1642
1643 #: ../../../src/SDLInputState.cpp:647
1644 msgid "Del"
1645 msgstr "Suppr"
1646
1647 #: ../../../src/SDLInputState.cpp:649 ../../../src/SDLInputState.cpp:679
1648 msgid "End"
1649 msgstr "Fin"
1650
1651 #: ../../../src/SDLInputState.cpp:650
1652 msgid "Esc"
1653 msgstr "Ech"
1654
1655 #: ../../../src/SDLInputState.cpp:651 ../../../src/SDLInputState.cpp:681
1656 msgid "Home"
1657 msgstr "Orig"
1658
1659 #: ../../../src/SDLInputState.cpp:652
1660 msgid "Ins"
1661 msgstr "Ins"
1662
1663 #: ../../../src/SDLInputState.cpp:653
1664 msgid "LAlt"
1665 msgstr "AltG"
1666
1667 #: ../../../src/SDLInputState.cpp:654
1668 msgid "LCtrl"
1669 msgstr "CtrlG"
1670
1671 #: ../../../src/SDLInputState.cpp:656
1672 msgid "LShft"
1673 msgstr "ShfG"
1674
1675 #: ../../../src/SDLInputState.cpp:657
1676 msgid "Num"
1677 msgstr "Num"
1678
1679 #: ../../../src/SDLInputState.cpp:658
1680 msgid "PgDn"
1681 msgstr "PgDn"
1682
1683 #: ../../../src/SDLInputState.cpp:659
1684 msgid "PgUp"
1685 msgstr "PgUp"
1686
1687 #: ../../../src/SDLInputState.cpp:660 ../../../src/SDLInputState.cpp:690
1688 msgid "Pause"
1689 msgstr "Pause"
1690
1691 #: ../../../src/SDLInputState.cpp:661
1692 msgid "Print"
1693 msgstr "Imp"
1694
1695 #: ../../../src/SDLInputState.cpp:662
1696 msgid "RAlt"
1697 msgstr "AltD"
1698
1699 #: ../../../src/SDLInputState.cpp:663
1700 msgid "RCtrl"
1701 msgstr "CtrlD"
1702
1703 #: ../../../src/SDLInputState.cpp:664
1704 msgid "Ret"
1705 msgstr "Ret"
1706
1707 #: ../../../src/SDLInputState.cpp:666
1708 msgid "RShft"
1709 msgstr "ShfD"
1710
1711 #: ../../../src/SDLInputState.cpp:667
1712 msgid "SLock"
1713 msgstr "ArrDefil"
1714
1715 #: ../../../src/SDLInputState.cpp:668
1716 msgid "Spc"
1717 msgstr "Esp"
1718
1719 #: ../../../src/SDLInputState.cpp:669 ../../../src/SDLInputState.cpp:699
1720 msgid "Tab"
1721 msgstr "Tab"
1722
1723 #: ../../../src/SDLInputState.cpp:675
13161724 msgid "Backspace"
1317 msgstr ""
1318
1319 #: ../../../src/SDLInputState.cpp:583
1725 msgstr "Retour arrière"
1726
1727 #: ../../../src/SDLInputState.cpp:676
13201728 msgid "CapsLock"
1321 msgstr ""
1322
1323 #: ../../../src/SDLInputState.cpp:586
1324 msgid "End"
1325 msgstr ""
1326
1327 #: ../../../src/SDLInputState.cpp:587
1729 msgstr "Verr Maj"
1730
1731 #: ../../../src/SDLInputState.cpp:680
13281732 msgid "Escape"
1329 msgstr ""
1330
1331 #: ../../../src/SDLInputState.cpp:588
1332 msgid "Home"
1333 msgstr ""
1334
1335 #: ../../../src/SDLInputState.cpp:589
1733 msgstr "Échap"
1734
1735 #: ../../../src/SDLInputState.cpp:682
13361736 msgid "Insert"
1337 msgstr ""
1338
1339 #: ../../../src/SDLInputState.cpp:590
1737 msgstr "Inser"
1738
1739 #: ../../../src/SDLInputState.cpp:683
13401740 msgid "Left Alt"
1341 msgstr ""
1342
1343 #: ../../../src/SDLInputState.cpp:591
1741 msgstr "Alt gauche"
1742
1743 #: ../../../src/SDLInputState.cpp:684
13441744 msgid "Left Ctrl"
1345 msgstr ""
1346
1347 #: ../../../src/SDLInputState.cpp:593
1745 msgstr "Ctrl gauche"
1746
1747 #: ../../../src/SDLInputState.cpp:686
13481748 msgid "Left Shift"
1349 msgstr ""
1350
1351 #: ../../../src/SDLInputState.cpp:594
1749 msgstr "Maj gauche"
1750
1751 #: ../../../src/SDLInputState.cpp:687
13521752 msgid "NumLock"
1353 msgstr ""
1354
1355 #: ../../../src/SDLInputState.cpp:595
1753 msgstr "Ver Num"
1754
1755 #: ../../../src/SDLInputState.cpp:688
13561756 msgid "PageDown"
1357 msgstr ""
1358
1359 #: ../../../src/SDLInputState.cpp:596
1757 msgstr "PgSuiv"
1758
1759 #: ../../../src/SDLInputState.cpp:689
13601760 msgid "PageUp"
1361 msgstr ""
1362
1363 #: ../../../src/SDLInputState.cpp:597
1364 msgid "Pause"
1365 msgstr ""
1366
1367 #: ../../../src/SDLInputState.cpp:598
1761 msgstr "PgPréc"
1762
1763 #: ../../../src/SDLInputState.cpp:691
13681764 msgid "PrintScreen"
1369 msgstr ""
1370
1371 #: ../../../src/SDLInputState.cpp:599
1765 msgstr "Impr Écran"
1766
1767 #: ../../../src/SDLInputState.cpp:692
13721768 msgid "Right Alt"
1373 msgstr ""
1374
1375 #: ../../../src/SDLInputState.cpp:600
1769 msgstr "Alt droit"
1770
1771 #: ../../../src/SDLInputState.cpp:693
13761772 msgid "Right Ctrl"
1377 msgstr ""
1378
1379 #: ../../../src/SDLInputState.cpp:601
1773 msgstr "Ctrl droit"
1774
1775 #: ../../../src/SDLInputState.cpp:694
13801776 msgid "Return"
1381 msgstr ""
1382
1383 #: ../../../src/SDLInputState.cpp:603
1777 msgstr "Entrée"
1778
1779 #: ../../../src/SDLInputState.cpp:696
13841780 msgid "Right Shift"
1385 msgstr ""
1386
1387 #: ../../../src/SDLInputState.cpp:604
1781 msgstr "Maj droit"
1782
1783 #: ../../../src/SDLInputState.cpp:697
13881784 msgid "ScrollLock"
1389 msgstr ""
1390
1391 #: ../../../src/SDLInputState.cpp:605
1785 msgstr "Arrêt défil"
1786
1787 #: ../../../src/SDLInputState.cpp:698
13921788 msgid "Space"
1393 msgstr ""
1394
1395 #: ../../../src/SDLInputState.cpp:606
1396 msgid "Tab"
1397 msgstr ""
1398
1399 #: ../../../src/SDLInputState.cpp:620
1789 msgstr "Espace"
1790
1791 #: ../../../src/SDLInputState.cpp:712
1792 #, c-format
1793 msgid "M%d"
1794 msgstr "M%d"
1795
1796 #: ../../../src/SDLInputState.cpp:718
14001797 #, c-format
14011798 msgid "Mouse %d"
1402 msgstr ""
1403
1404 #: ../../../src/SDLInputState.cpp:628
1799 msgstr "Souris %d"
1800
1801 #: ../../../src/SDLInputState.cpp:728
1802 #, c-format
1803 msgid "JX%d-"
1804 msgstr "JX%d-"
1805
1806 #: ../../../src/SDLInputState.cpp:730
14051807 #, c-format
14061808 msgid "Axis %d -"
14071809 msgstr "Axe %d -"
14081810
1409 #: ../../../src/SDLInputState.cpp:630
1811 #: ../../../src/SDLInputState.cpp:734
1812 #, c-format
1813 msgid "JX%d+"
1814 msgstr "JX%d+"
1815
1816 #: ../../../src/SDLInputState.cpp:736
14101817 #, c-format
14111818 msgid "Axis %d +"
14121819 msgstr "Axe %d +"
14131820
1414 #: ../../../src/SDLInputState.cpp:633
1821 #: ../../../src/SDLInputState.cpp:741
1822 #, c-format
1823 msgid "JB%d"
1824 msgstr "JB%d"
1825
1826 #: ../../../src/SDLInputState.cpp:743
14151827 #, c-format
14161828 msgid "Button %d"
14171829 msgstr "Bouton %d"
14181830
1419 #: ../../../src/SDLInputState.cpp:637
1420 msgid "(none)"
1421 msgstr "(rien)"
1422
1423 #: ../../../src/SDLInputState.cpp:677
1831 #: ../../../src/SDLInputState.cpp:789
14241832 msgid "Touch control D-Pad"
1425 msgstr ""
1426
1427 #: ../../../src/SDLInputState.cpp:701
1833 msgstr "Touch control D-Pad"
1834
1835 #: ../../../src/SDLInputState.cpp:812
14281836 msgid "Touch control buttons"
1429 msgstr ""
1430
1431 #: ../../../src/SDLInputState.cpp:716
1837 msgstr "Touch control buttons"
1838
1839 #: ../../../src/SDLInputState.cpp:826
14321840 msgid "Tap"
14331841 msgstr "Touchez"
14341842
1435 #: ../../../src/SDLInputState.cpp:760 ../../../src/SDLInputState.cpp:764
1436 #: ../../../src/SDLInputState.cpp:768
1843 #: ../../../src/SDLInputState.cpp:878 ../../../src/SDLInputState.cpp:880
1844 #, c-format
1845 msgid "Can not bind: %s"
1846 msgstr "Impossible d'affecter : %s"
1847
1848 #: ../../../src/SDLInputState.cpp:892 ../../../src/SDLInputState.cpp:896
1849 #: ../../../src/SDLInputState.cpp:900
14371850 #, c-format
14381851 msgid "'%s' is no longer bound to:"
1439 msgstr ""
1852 msgstr "'%s' n'est plus assigné à :"
14401853
14411854 #: ../../../src/Stats.cpp:38
14421855 msgid "Max HP"
1443 msgstr ""
1856 msgstr "PV max"
14441857
14451858 #: ../../../src/Stats.cpp:39
14461859 msgid "Total amount of HP."
1447 msgstr ""
1860 msgstr "Nombre total de PV."
14481861
14491862 #: ../../../src/Stats.cpp:43
14501863 msgid "HP Regen"
1451 msgstr ""
1864 msgstr "Régénération PV"
14521865
14531866 #: ../../../src/Stats.cpp:44
14541867 msgid "Ticks of HP regen per minute."
1455 msgstr "Quantité de PV regénérés par minute."
1868 msgstr "Quantité de PV régénérés par minute."
14561869
14571870 #: ../../../src/Stats.cpp:48
14581871 msgid "Max MP"
1459 msgstr ""
1872 msgstr "PM max"
14601873
14611874 #: ../../../src/Stats.cpp:49
14621875 msgid "Total amount of MP."
1463 msgstr ""
1876 msgstr "Nombre total de PM."
14641877
14651878 #: ../../../src/Stats.cpp:53
14661879 msgid "MP Regen"
1467 msgstr ""
1880 msgstr "Régénération PM"
14681881
14691882 #: ../../../src/Stats.cpp:54
14701883 msgid "Ticks of MP regen per minute."
1471 msgstr "Quanité de PM regénérés par minute."
1884 msgstr "Quantité de PM régénérés par minute."
14721885
14731886 #: ../../../src/Stats.cpp:58
14741887 msgid "Accuracy"
1475 msgstr ""
1888 msgstr "Précision"
14761889
14771890 #: ../../../src/Stats.cpp:59
14781891 msgid ""
14791892 "Accuracy rating. The enemy's Avoidance rating is subtracted from this value "
14801893 "to calculate your likeliness to land a direct hit."
14811894 msgstr ""
1895 "Score de précision. Le score d'esquive de l'ennemi est soustrait à cette "
1896 "valeur pour calculer votre probabilité de porter un coup direct."
14821897
14831898 #: ../../../src/Stats.cpp:63
14841899 msgid "Avoidance"
1485 msgstr ""
1900 msgstr "Esquive"
14861901
14871902 #: ../../../src/Stats.cpp:64
14881903 msgid ""
14891904 "Avoidance rating. This value is subtracted from the enemy's Accuracy rating "
14901905 "to calculate their likeliness to land a direct hit."
14911906 msgstr ""
1907 "Score d'esquive. Cette valeur est soustraite au score de précision de "
1908 "l'ennemi pour calculer sa probabilité de porter un coup direct."
14921909
14931910 #: ../../../src/Stats.cpp:68
14941911 msgid "Absorb Min"
1495 msgstr ""
1912 msgstr "Absorption min"
14961913
14971914 #: ../../../src/Stats.cpp:69 ../../../src/Stats.cpp:74
14981915 msgid "Reduces the amount of damage taken."
1499 msgstr ""
1916 msgstr "Réduit la quantité de dégât reçue."
15001917
15011918 #: ../../../src/Stats.cpp:73
15021919 msgid "Absorb Max"
1503 msgstr ""
1920 msgstr "Absorption max"
15041921
15051922 #: ../../../src/Stats.cpp:78
15061923 msgid "Critical Hit Chance"
15081925
15091926 #: ../../../src/Stats.cpp:79
15101927 msgid "Chance for an attack to do extra damage."
1511 msgstr ""
1928 msgstr "Chance pour une attaque de faire des dégâts supplémentaires."
15121929
15131930 #: ../../../src/Stats.cpp:83
15141931 msgid "Bonus XP"
1515 msgstr ""
1932 msgstr "Bonus XP"
15161933
15171934 #: ../../../src/Stats.cpp:84
15181935 msgid "Increases the XP gained per kill."
1519 msgstr ""
1936 msgstr "Augmente l'XP gagnée pour chaque mort."
15201937
15211938 #: ../../../src/Stats.cpp:88
15221939 #, c-format
15231940 msgid "Bonus %s"
1524 msgstr ""
1941 msgstr "Bonus %s"
15251942
15261943 #: ../../../src/Stats.cpp:89
15271944 #, c-format
15281945 msgid "Increases the %s found per drop."
1529 msgstr ""
1946 msgstr "Augmente %s trouvé dans chaque butin."
15301947
15311948 #: ../../../src/Stats.cpp:93
15321949 msgid "Item Find Chance"
1533 msgstr ""
1950 msgstr "Chance de trouver un objet"
15341951
15351952 #: ../../../src/Stats.cpp:94
15361953 msgid "Increases the chance that an enemy will drop an item."
1537 msgstr ""
1954 msgstr "Augmente les chances qu'un ennemi laisse un objet."
15381955
15391956 #: ../../../src/Stats.cpp:98
15401957 msgid "Stealth"
1541 msgstr ""
1958 msgstr "Furtivité"
15421959
15431960 #: ../../../src/Stats.cpp:99
15441961 msgid "Increases your ability to move undetected."
1545 msgstr ""
1962 msgstr "Augmente votre capacité à vous déplacer sans être détecté."
15461963
15471964 #: ../../../src/Stats.cpp:103
15481965 msgid "Poise"
1549 msgstr ""
1966 msgstr "Équilibre"
15501967
15511968 #: ../../../src/Stats.cpp:104
15521969 msgid "Reduces your chance of stumbling when hit."
1553 msgstr ""
1970 msgstr "Réduit vos risques de trébucher quand vous êtes touché."
15541971
15551972 #: ../../../src/Stats.cpp:108
15561973 msgid "Missile Reflect Chance"
15621979
15631980 #: ../../../src/Stats.cpp:113
15641981 msgid "Damage Reflection"
1565 msgstr "Renvoi de Dommages"
1982 msgstr "Renvoi de dégâts"
15661983
15671984 #: ../../../src/Stats.cpp:114
15681985 msgid "Deals a percentage of damage taken back to the attacker."
15701987
15711988 #: ../../../src/Stats.cpp:118
15721989 msgid "HP Steal"
1573 msgstr ""
1990 msgstr "Vol de PV"
15741991
15751992 #: ../../../src/Stats.cpp:119
15761993 msgid "Percentage of HP stolen per hit."
1577 msgstr ""
1994 msgstr "Pourcentage de PV volé par coup."
15781995
15791996 #: ../../../src/Stats.cpp:123
15801997 msgid "MP Steal"
1581 msgstr ""
1998 msgstr "Vol de PM"
15821999
15832000 #: ../../../src/Stats.cpp:124
15842001 msgid "Percentage of MP stolen per hit."
1585 msgstr ""
2002 msgstr "Pourcentage de PM volé par coup."
15862003
15872004 #: ../../../src/Stats.cpp:128
15882005 msgid "Base HP"
15922009 msgid "Base MP"
15932010 msgstr "PM de base"
15942011
1595 #: ../../../src/Utils.cpp:346
2012 #: ../../../src/Utils.cpp:365
15962013 msgid "k"
1597 msgstr ""
1598
1599 #: ../../../src/Utils.cpp:580
2014 msgstr "k"
2015
2016 #: ../../../src/Utils.cpp:635
16002017 #, c-format
16012018 msgid "%s second"
1602 msgstr ""
1603
1604 #: ../../../src/Utils.cpp:583
2019 msgstr "%s seconde"
2020
2021 #: ../../../src/Utils.cpp:638
16052022 #, c-format
16062023 msgid "%s seconds"
1607 msgstr ""
2024 msgstr "%s secondes"
16082025
16092026 #: ../../../src/Version.cpp:139
16102027 msgid "or newer"
1611 msgstr ""
2028 msgstr "ou plus récent"
16122029
16132030 #: ../../../src/Version.cpp:142
16142031 msgid "or older"
1615 msgstr ""
2032 msgstr "ou plus ancien"
44 #
55 # Translators:
66 # Justin Jacobs <jajdorkster@gmail.com>, 2018
7 # GunChleoc, 2018
7 # GunChleoc, 2021
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-07-02 13:26-0400\n"
1515 "PO-Revision-Date: 2018-03-28 19:16+0000\n"
16 "Last-Translator: GunChleoc, 2018\n"
16 "Last-Translator: GunChleoc, 2021\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!"
27 msgstr "Meal do naidheachd, ràinig thu leibheil %d!"
28
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
31 msgstr "Meal do naidheachd, ràinig thu rang %d!"
32
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 "Chaidh do ruaig."
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 "
98 "thoirt air falbh."
108 "thoirt air falbh"
99109
100110 #: ../../../src/DeviceList.cpp:56
101111 msgid ""
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:1220
139 #: ../../../src/StatBlock.cpp:926 ../../../src/StatBlock.cpp:932
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:937
145 #: ../../../src/StatBlock.cpp:943
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:704
187 msgid "Entering game world..."
188 msgstr "A’ dol a-steach do shaoghal a’ gheama…"
189
190 #: ../../../src/GameStateLoad.cpp:707
191 msgid "Loading saved game..."
192 msgstr "A’ luchdadh geama air a shàbhaladh…"
193
194 #: ../../../src/GameStateLoad.cpp:740
195 msgid "Invalid save"
196 msgstr "Geama air a shàbhaladh mì-dhligheach"
197
198 #: ../../../src/GameStateLoad.cpp:764 ../../../src/ItemManager.cpp:745
199 #: ../../../src/MenuPowers.cpp:882 ../../../src/MenuPowers.cpp:1241
200 #: ../../../src/MenuPowers.cpp:1653
201 #, c-format
202 msgid "Level %d"
203 msgstr "Rang %d"
204
205 #: ../../../src/GameStateNew.cpp:66 ../../../src/InputState.cpp:416
206 #: ../../../src/MenuConfig.cpp:254
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:670
260 #: ../../../src/SDLInputState.cpp:700
261 msgid "Up"
262 msgstr "Suas"
263
264 #: ../../../src/InputState.cpp:419 ../../../src/MenuMovementType.cpp:125
265 #: ../../../src/MenuMovementType.cpp:134 ../../../src/SDLInputState.cpp:648
266 #: ../../../src/SDLInputState.cpp:678
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:655
272 #: ../../../src/SDLInputState.cpp:685
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:665
278 #: ../../../src/SDLInputState.cpp:695
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:159
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:677
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:981
419 #, c-format
420 msgid "%d%% Speed"
421 msgstr "Luaths de %d%%"
422
423 #: ../../../src/ItemManager.cpp:650 ../../../src/MenuPowers.cpp:984
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:953
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:1228
459 #: ../../../src/MenuPowers.cpp:1231
460 #, c-format
461 msgid "Requires Level %d"
462 msgstr "Feum air rang %d"
463
464 #: ../../../src/ItemManager.cpp:836 ../../../src/MenuPowers.cpp:1220
465 #: ../../../src/MenuPowers.cpp:1222
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:898
496 msgid "Set:"
497 msgstr "Seata:"
498
499 #: ../../../src/ItemManager.cpp:905
500 #, c-format
501 msgid "%d items:"
502 msgstr "%d nithean:"
503
504 #: ../../../src/ItemManager.cpp:920
505 #, c-format
506 msgid "Press [%s] to read"
507 msgstr "Brùth air [%s] gus a leughadh"
508
509 #: ../../../src/ItemManager.cpp:923
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 "Rang"
545
546 #: ../../../src/MenuCharacter.cpp:309
547 #, c-format
548 msgid "Available stat points: %d"
549 msgstr "Puingean staide ri fhaighinn: %d"
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 "Staid 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 rang %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:1256
587 msgid "Clear"
588 msgstr "Falamhaich"
589
590 #: ../../../src/MenuConfig.cpp:122 ../../../src/MenuConfig.cpp:1254
591 msgid "Assign:"
592 msgstr "Sònraich:"
593
594 #: ../../../src/MenuConfig.cpp:123 ../../../src/MenuConfig.cpp:253
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:252 ../../../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:256 ../../../src/MenuGameOver.cpp:72
607 msgid "Continue"
608 msgstr "Lean air adhart"
609
610 #: ../../../src/MenuConfig.cpp:258
611 msgid "Save Game"
612 msgstr "Sàbhail an geama"
613
614 #: ../../../src/MenuConfig.cpp:301 ../../../src/MenuConfig.cpp:352
615 msgid "Default"
616 msgstr "Bun-roghainn"
617
618 #: ../../../src/MenuConfig.cpp:301
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:302
628 msgid "Show all"
629 msgstr "Seall na h-uile"
630
631 #: ../../../src/MenuConfig.cpp:302
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:303 ../../../src/MenuConfig.cpp:308
639 msgid "Hidden"
640 msgstr "Falaichte"
641
642 #: ../../../src/MenuConfig.cpp:303
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:306
652 msgid "Visible"
653 msgstr "Ri fhaicinn"
654
655 #: ../../../src/MenuConfig.cpp:307
656 msgid "Visible (2x zoom)"
657 msgstr "Ri fhaicinn (sùm 2x)"
658
659 #: ../../../src/MenuConfig.cpp:311
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:312
668 msgid "- Display a message"
669 msgstr "- Seall teachdaireachd"
670
671 #: ../../../src/MenuConfig.cpp:313
672 msgid "- Play a sound"
673 msgstr "- Cluich fuaim"
674
675 #: ../../../src/MenuConfig.cpp:314
676 msgid "- Change the cursor"
677 msgstr "- Atharraich an cùrsair"
678
679 #: ../../../src/MenuConfig.cpp:316
680 msgid "Disabled"
681 msgstr "À comas"
682
683 #: ../../../src/MenuConfig.cpp:317
684 msgid "All"
685 msgstr "Na h-uile"
686
687 #: ../../../src/MenuConfig.cpp:318
688 msgid "Message & Cursor"
689 msgstr "Teachdaireachd ⁊ cùrsair"
690
691 #: ../../../src/MenuConfig.cpp:319
692 msgid "Message & Sound"
693 msgstr "Teachdaireachd ⁊ fuaim"
694
695 #: ../../../src/MenuConfig.cpp:320
696 msgid "Sound & Cursor"
697 msgstr "Fuaim ⁊ cùrsair"
698
699 #: ../../../src/MenuConfig.cpp:321
700 msgid "Message"
701 msgstr "Teachdaireachd"
702
703 #: ../../../src/MenuConfig.cpp:322
704 msgid "Cursor"
705 msgstr "Cùrsair"
706
707 #: ../../../src/MenuConfig.cpp:323
708 msgid "Sound"
709 msgstr "Fuaim"
710
711 #: ../../../src/MenuConfig.cpp:329
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:347
720 msgid "The maximum frame rate that the game will be allowed to run at."
721 msgstr "Seo an reat fhrèaman as motha air an ruith an geama."
722
723 #: ../../../src/MenuConfig.cpp:351
724 msgid ""
725 "The render size refers to the height in pixels of the surface used to draw "
726 "the game. Mods define the allowed render sizes, but this option allows "
727 "overriding the maximum size."
728 msgstr ""
729 "Tha meud an reandaraidh a’ ciallachadh àirde an uachdair ann am piogsailean "
730 "air an dèid an geama a tharraing. Mìnichidh tuilleadain meudan an "
731 "reandaraidh a tha ceadaichte ach leigidh an roghainn seo leat am meud as "
732 "motha a thar-àithneadh."
733
734 #: ../../../src/MenuConfig.cpp:374 ../../../src/MenuConfig.cpp:1679
735 #: ../../../src/MenuGameOver.cpp:116
736 msgid "Exit"
737 msgstr "Fàg an geama"
738
739 #: ../../../src/MenuConfig.cpp:375
740 msgid "Video"
741 msgstr "Video"
742
743 #: ../../../src/MenuConfig.cpp:376
164744 msgid "Audio"
165745 msgstr "Fuaim"
166746
167 #: ../../../src/GameStateConfigBase.cpp:161
168 #: ../../../src/GameStateConfigDesktop.cpp:131
747 #: ../../../src/MenuConfig.cpp:377
169748 msgid "Interface"
170749 msgstr "Eadar-aghaidh"
171750
172 #: ../../../src/GameStateConfigBase.cpp:162
173 #: ../../../src/GameStateConfigDesktop.cpp:134
751 #: ../../../src/MenuConfig.cpp:378
752 msgid "Input"
753 msgstr "Ion-chur"
754
755 #: ../../../src/MenuConfig.cpp:379
756 msgid "Keybindings"
757 msgstr "Nasgadh iuchraichean"
758
759 #: ../../../src/MenuConfig.cpp:380
174760 msgid "Mods"
175761 msgstr "Tuilleadain"
176762
177 #: ../../../src/GameStateConfigBase.cpp:249 ../../../src/MenuExit.cpp:72
763 #: ../../../src/MenuConfig.cpp:392
764 msgid "Paused"
765 msgstr "’Na stad"
766
767 #: ../../../src/MenuConfig.cpp:395
768 msgid "Time Played"
769 msgstr "Ùine air a chluich"
770
771 #: ../../../src/MenuConfig.cpp:401
772 msgid "Renderer"
773 msgstr "Inneal-reandaraidh"
774
775 #: ../../../src/MenuConfig.cpp:402
776 msgid "Full Screen Mode"
777 msgstr "Modh làn-sgrìn"
778
779 #: ../../../src/MenuConfig.cpp:403
780 msgid "Hardware surfaces"
781 msgstr "Uachdaran bathair-chruaidh"
782
783 #: ../../../src/MenuConfig.cpp:404
784 msgid "V-Sync"
785 msgstr "Sioncronachadh-V"
786
787 #: ../../../src/MenuConfig.cpp:405
788 msgid "Texture Filtering"
789 msgstr "Criathrag innich"
790
791 #: ../../../src/MenuConfig.cpp:406
792 msgid "DPI scaling"
793 msgstr "Sgèileadh DPI"
794
795 #: ../../../src/MenuConfig.cpp:407
796 msgid "Parallax Layers"
797 msgstr "Breathan paraileige"
798
799 #: ../../../src/MenuConfig.cpp:408
800 msgid "Allow changing gamma"
801 msgstr "Faodar gamma atharrachadh"
802
803 #: ../../../src/MenuConfig.cpp:409
804 msgid "Gamma"
805 msgstr "Gamma"
806
807 #: ../../../src/MenuConfig.cpp:410
808 msgid "Maximum Render Size"
809 msgstr "Meud as motha an reandaraidh"
810
811 #: ../../../src/MenuConfig.cpp:411
812 msgid "Frame Limit"
813 msgstr "Cuingeachadh nam frèama"
814
815 #: ../../../src/MenuConfig.cpp:413
816 msgid "Sound Volume"
817 msgstr "Àirde na fuaime"
818
819 #: ../../../src/MenuConfig.cpp:414
178820 msgid "Music Volume"
179821 msgstr "Àirde a’ chiùil"
180822
181 #: ../../../src/GameStateConfigBase.cpp:253 ../../../src/MenuExit.cpp:77
182 msgid "Sound Volume"
183 msgstr "Àirde na fuaime"
184
185 #: ../../../src/GameStateConfigBase.cpp:257
823 #: ../../../src/MenuConfig.cpp:416
186824 msgid "Language"
187825 msgstr "Cànan"
188826
189 #: ../../../src/GameStateConfigBase.cpp:266
827 #: ../../../src/MenuConfig.cpp:417
190828 msgid "Show FPS"
191829 msgstr "Seall FPS"
192830
193 #: ../../../src/GameStateConfigBase.cpp:270
831 #: ../../../src/MenuConfig.cpp:418
832 msgid "Hardware mouse cursor"
833 msgstr "Cùrsair luchaige bathair-chruaidh"
834
835 #: ../../../src/MenuConfig.cpp:419
194836 msgid "Colorblind Mode"
195837 msgstr "Modh dath-dhoille"
196838
197 #: ../../../src/GameStateConfigBase.cpp:274
198 msgid "Hardware mouse cursor"
199 msgstr "Cùrsair luchaige bathair-chruaidh"
200
201 #: ../../../src/GameStateConfigBase.cpp:278
839 #: ../../../src/MenuConfig.cpp:420
202840 msgid "Developer Mode"
203841 msgstr "Modh an luchd-leasachaidh"
204842
205 #: ../../../src/GameStateConfigBase.cpp:282
843 #: ../../../src/MenuConfig.cpp:421
206844 msgid "Subtitles"
207845 msgstr "Fo-thiotalan"
208846
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
847 #: ../../../src/MenuConfig.cpp:422
848 msgid "Loot tooltip visibility"
849 msgstr "Faicsinneachd gliocasan-sgrìn nam spùinn"
850
851 #: ../../../src/MenuConfig.cpp:423
852 msgid "Mini-map mode"
853 msgstr "Modh a’ mheanbh-mhapa"
854
855 #: ../../../src/MenuConfig.cpp:424
856 msgid "Always show stat bar labels"
857 msgstr "Seall leubailean na bàr-staide an-còmhnaidh"
858
859 #: ../../../src/MenuConfig.cpp:425
860 msgid "Allow stat bar auto-hiding"
861 msgstr "Ceadaich falach fèin-obrachail air a’ bhàr-staide"
862
863 #: ../../../src/MenuConfig.cpp:426
864 msgid "Show combat text"
865 msgstr "Seall teacsa na còmhraige"
866
867 #: ../../../src/MenuConfig.cpp:427
868 msgid "Automatically equip items"
869 msgstr "Uidheamaich nithean gu fèin-obrachail"
870
871 #: ../../../src/MenuConfig.cpp:428
872 msgid "Show hidden entity markers"
873 msgstr "Seall comharraidhean nan nithean falaichte"
874
875 #: ../../../src/MenuConfig.cpp:429
876 msgid "Low health notification"
877 msgstr "Brath na droch-shlàinte"
878
879 #: ../../../src/MenuConfig.cpp:430
880 msgid "Low health threshold"
881 msgstr "Stairsneach na droch-shlàinte"
882
883 #: ../../../src/MenuConfig.cpp:431
884 msgid "Show item comparison tooltips"
885 msgstr "Seall gliocasan coimeis nan nithean"
886
887 #: ../../../src/MenuConfig.cpp:434 ../../../src/MenuMovementType.cpp:94
888 #: ../../../src/MenuMovementType.cpp:131
889 msgid "Joystick"
890 msgstr "Joystick"
891
892 #: ../../../src/MenuConfig.cpp:435
893 msgid "Move hero using mouse"
894 msgstr "Gluais an gaisgeach leis an luchag"
895
896 #: ../../../src/MenuConfig.cpp:436
897 msgid "Mouse aim"
898 msgstr "Amas luchaige"
899
900 #: ../../../src/MenuConfig.cpp:437
901 msgid "Do not use mouse"
902 msgstr "Na cleachd an luchag"
903
904 #: ../../../src/MenuConfig.cpp:438
905 msgid "Swap mouse movement button"
906 msgstr "Suaip putan luchaige a’ ghluasaid"
907
908 #: ../../../src/MenuConfig.cpp:439
909 msgid "Attack with mouse movement"
910 msgstr "Thoir ionnsaigh le gluasad na luchaige"
911
912 #: ../../../src/MenuConfig.cpp:440
913 msgid "Joystick Deadzone"
914 msgstr "Marbh-sòn an joystick"
915
916 #: ../../../src/MenuConfig.cpp:441
917 msgid "Touch Controls"
918 msgstr "Stiùireadh le suathadh"
919
920 #: ../../../src/MenuConfig.cpp:442
921 msgid "Touch Gamepad Scaling"
922 msgstr "Sgèileadh pada-geama suathaidh"
923
924 #: ../../../src/MenuConfig.cpp:452
925 #, c-format
926 msgid "Primary binding: %s"
927 msgstr "Prìomh-nasgadh: %s"
928
929 #: ../../../src/MenuConfig.cpp:453
930 #, c-format
931 msgid "Alternate binding: %s"
932 msgstr "Nasgadh eile: %s"
933
934 #: ../../../src/MenuConfig.cpp:454
935 #, c-format
936 msgid "Joystick binding: %s"
937 msgstr "Nasgadh joystick: %s"
938
939 #: ../../../src/MenuConfig.cpp:556
264940 msgid ""
265941 "Will try to store surfaces in video memory versus system memory. The effect "
266942 "this has on performance depends on the renderer."
269945 "t-siostaim. Tha a’ bhuaidh a th’ aige air an dèanadas a-rèir an inneil-"
270946 "reandaraidh."
271947
272 #: ../../../src/GameStateConfigDesktop.cpp:189
948 #: ../../../src/MenuConfig.cpp:557
273949 msgid ""
274950 "Prevents screen tearing. Disable if you experience \"stuttering\" in "
275951 "windowed mode or input lag."
277953 "Tha seo an aghaidh reubadh na sgrìn. cuir à comas e ma tha a modh uinneagach"
278954 " “stadach” no ma tha maille air an ion-chur."
279955
280 #: ../../../src/GameStateConfigDesktop.cpp:190
956 #: ../../../src/MenuConfig.cpp:558
281957 msgid ""
282958 "When enabled, this uses the screen DPI in addition to the window dimensions "
283959 "to scale the rendering resolution. Otherwise, only the window dimensions are"
287963 "na h-uinneige airson dùmhlachd-bhreacaidh an reandaraidh a sgèileadh. Mur "
288964 "eil, cha dèid ach meud na h-uinneige a chleachdadh."
289965
290 #: ../../../src/GameStateConfigDesktop.cpp:191
966 #: ../../../src/MenuConfig.cpp:559
291967 msgid ""
292968 "This enables parallax (non-tile) layers. Disabling this setting can improve "
293969 "performance in some cases."
294970 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
971 "Cuiridh seo breathan paraileige (nach eil ’nan leacagan) an comas. "
972 "Dh’fhaoidte gum faigh thu barrachd dèanadais ma chuireas tu seo à comas."
973
974 #: ../../../src/MenuConfig.cpp:560
975 msgid ""
976 "Enables the below setting that controls the screen gamma level. The behavior"
977 " of the gamma setting can vary between platforms."
978 msgstr ""
979 "Cuiridh seo an comas an roghainn gu h-ìosal air leibheil gamma na sgrìn. "
980 "Dh’fhaoidte gum bi giùlan eadar-dhealaichte na roghainn gamma air ùrlaran "
981 "eadar-dhealaichte."
982
983 #: ../../../src/MenuConfig.cpp:561
984 msgid ""
985 "Provides additional text for information that is primarily conveyed through "
986 "color."
987 msgstr ""
988 "Solairidh seo teacsa a bharrachd airson fiosrachadh a thèid a shealltainn le"
989 " dath gu h-àraidh."
990
991 #: ../../../src/MenuConfig.cpp:562
992 msgid ""
993 "Some mods will automatically hide the stat bars when they are inactive. "
994 "Disabling this option will keep them displayed at all times."
995 msgstr ""
996 "Falaichidh cuid a thuilleadain bàraichean-staide nuair a bhios iad à comas. "
997 "Ma chuireas tu an roghainn seo à comas, thèid an sealltainn an-còmhnaidh."
998
999 #: ../../../src/MenuConfig.cpp:563
1000 msgid ""
1001 "When enabled, empty equipment slots will be filled with applicable items "
1002 "when they are obtained."
1003 msgstr ""
1004 "Nuair a bhios seo an comas, thèid slotaichean uidheamachd falamh a lìonadh "
1005 "le nithean iomchaidh nuair a gheibh thu iad."
1006
1007 #: ../../../src/MenuConfig.cpp:564
1008 msgid ""
1009 "Shows a marker above enemies, allies, and the player when they are obscured "
1010 "by tall objects."
1011 msgstr ""
1012 "Seallaidh seo comharra os cionn nan nàimhdean, nan caidreabhach ’s a’ "
1013 "chluicheadair nuair a thèid am falach le nithean mòra."
1014
1015 #: ../../../src/MenuConfig.cpp:565
1016 msgid ""
1017 "When enabled, tooltips for equipped items of the same type are shown next to"
1018 " standard item tooltips."
1019 msgstr ""
1020 "Nuair a bhios seo an comas, thèid gliocasan-sgrìn nan nithean dhen aon "
1021 "seòrsa a dh’uidheamaich thu a shealltainn ri taobh gliocasan-sgrìn nan "
1022 "nithean àbhaisteach."
1023
1024 #: ../../../src/MenuConfig.cpp:566
1025 msgid ""
1026 "This allows the game to be controlled entirely with the keyboard (or "
1027 "joystick)."
1028 msgstr ""
1029 "Nuair a bhiod seo air, ’s urrainn dhut an geama a stiùireadh leis a’ mheur-"
1030 "chlàr (no joystick) a-mhàin."
1031
1032 #: ../../../src/MenuConfig.cpp:567
1033 msgid ""
1034 "When 'Move hero using mouse' is enabled, this setting controls if 'Main1' or"
1035 " 'Main2' is used to move the hero. If enabled, 'Main2' will move the hero "
1036 "instead of 'Main1'."
1037 msgstr ""
1038 "Nuair a bhios “Gluais an gaisgeach leis an luchag” an comas, stiùirichidh an"
1039 " roghainn seo co-dhiù an dèid “Prìomh-ghnìomh” no “Gnìomh dàrnach” a "
1040 "chleachdadh airson an gaisgeach a ghluasad. Ma bhios e an comas, gluaisidh "
1041 "“Gnìomh dàrnach” seach “Prìomh-ghnìomh” an gaisgeach."
1042
1043 #: ../../../src/MenuConfig.cpp:568
1044 msgid ""
1045 "When 'Move hero using mouse' is enabled, this setting controls if the Power "
1046 "assigned to the movement button can be used by targeting an enemy. If this "
1047 "setting is disabled, it is required to use 'Shift' to access the Power "
1048 "assigned to the movement button."
1049 msgstr ""
1050 "Nuair a bhios “Gluais an gaisgeach leis an luchag” an comas, stiùirichidh an"
1051 " roghainn seo ma ghabhas a’ chumhachd a chaidh iomruineadh do phutan a’ "
1052 "ghluasaid a chleachdadh le amas air nàmhaid. Ma tha an roghainn seo à comas,"
1053 " feumaidh tu “Shift” a chleachdadh ach an cleachd thu a’ chumhachd a chaidh "
1054 "iomruineadh do phutan a’ ghluasaid."
1055
1056 #: ../../../src/MenuConfig.cpp:569
1057 msgid ""
1058 "The player's attacks will be aimed in the direction of the mouse cursor when"
1059 " this is enabled."
1060 msgstr ""
1061 "Thèid ionnsaighean a’ chluicheadair a dh’amas an comhair cùrsair na luchaige"
1062 " nuair a bhios seo an comas."
1063
1064 #: ../../../src/MenuConfig.cpp:570
1065 msgid ""
1066 "When enabled, a virtual gamepad will be added in-game. Other interactions, "
1067 "such as drag-and-drop behavior, are also altered to better suit touch input."
1068 msgstr ""
1069 "Nuair a bhios seo an comas, chì thu pada-geama biortail sa gheama. Thèid "
1070 "eadar-ghnìomhan eile, can giùlan an t-slaodaidh is leigeil às, atharrachadh "
1071 "cuideachd airson an t-ion-chur le suathadh a dhèanamh nas fhasa."
1072
1073 #: ../../../src/MenuConfig.cpp:621
1074 msgid "Active Mods"
1075 msgstr "Tuilleadain ghnìomhach"
1076
1077 #: ../../../src/MenuConfig.cpp:630
1078 msgid "Available Mods"
1079 msgstr "Tuilleadain ri làimh"
1080
1081 #: ../../../src/MenuConfig.cpp:649
1082 msgid "<< Disable"
1083 msgstr "<< Cuir à comas"
1084
1085 #: ../../../src/MenuConfig.cpp:655
1086 msgid "Enable >>"
1087 msgstr "Cuir an comas >>"
1088
1089 #: ../../../src/MenuConfig.cpp:1536
1090 msgid "Version:"
1091 msgstr "Tionndadh:"
1092
1093 #: ../../../src/MenuConfig.cpp:1541
1094 msgid "Game:"
1095 msgstr "Geama:"
1096
1097 #: ../../../src/MenuConfig.cpp:1546
1098 msgid "Engine version:"
1099 msgstr "Tionndadh an einnsein:"
1100
1101 #: ../../../src/MenuConfig.cpp:1554
1102 msgid "Requires mods:"
1103 msgstr "Feum air tuilleadain:"
1104
1105 #: ../../../src/MenuConfig.cpp:1662 ../../../src/SDLInputState.cpp:750
1106 msgid "(none)"
1107 msgstr "(chan eil gin)"
1108
1109 #: ../../../src/MenuConfig.cpp:1679 ../../../src/MenuGameOver.cpp:73
1110 msgid "Save & Exit"
1111 msgstr "Sàbhail is fàg"
1112
1113 #: ../../../src/MenuDevConsole.cpp:65
8431114 msgid "Execute"
8441115 msgstr "Gnìomhaich"
8451116
846 #: ../../../src/MenuDevConsole.cpp:101 ../../../src/MenuDevConsole.cpp:151
1117 #: ../../../src/MenuDevConsole.cpp:103 ../../../src/MenuDevConsole.cpp:153
8471118 msgid "Developer Console"
8481119 msgstr "Modh an luchd-leasachaidh"
8491120
850 #: ../../../src/MenuDevConsole.cpp:141
1121 #: ../../../src/MenuDevConsole.cpp:143
8511122 #, c-format
8521123 msgid "Use '%s' to inspect with the cursor."
8531124 msgstr "Cleachd “%s” gus a sgrùdadh leis a’ chùrsair."
8541125
855 #: ../../../src/MenuDevConsole.cpp:146
1126 #: ../../../src/MenuDevConsole.cpp:148
8561127 msgid "Arguments with spaces should be enclosed with double quotes. Example:"
8571128 msgstr ""
8581129 "Bu chòir dhut comharran-labhairt dùbailte a chur timcheall air argamaidean "
8591130 "sa bheil geal-spàs. Mar eisimpleir:"
8601131
861 #: ../../../src/MenuDevConsole.cpp:147
1132 #: ../../../src/MenuDevConsole.cpp:149
8621133 msgid "Type 'help' to get a list of commands."
8631134 msgstr "Sgrìobh “help” gus liosta de na h-àitheantan fhaighinn."
8641135
865 #: ../../../src/MenuDevConsole.cpp:209 ../../../src/MenuDevConsole.cpp:213
1136 #: ../../../src/MenuDevConsole.cpp:211 ../../../src/MenuDevConsole.cpp:215
8661137 msgid "px"
8671138 msgstr "px"
8681139
869 #: ../../../src/MenuDevConsole.cpp:224
1140 #: ../../../src/MenuDevConsole.cpp:226
8701141 msgid "Distance"
8711142 msgstr "Astar"
8721143
873 #: ../../../src/MenuDevConsole.cpp:239 ../../../src/MenuDevConsole.cpp:286
1144 #: ../../../src/MenuDevConsole.cpp:241 ../../../src/MenuDevConsole.cpp:289
1145 #: ../../../src/MenuDevConsole.cpp:303
8741146 msgid "Entity"
8751147 msgstr "Nì"
8761148
877 #: ../../../src/MenuDevConsole.cpp:261 ../../../src/MenuDevConsole.cpp:268
1149 #: ../../../src/MenuDevConsole.cpp:263 ../../../src/MenuDevConsole.cpp:270
8781150 msgid "none"
8791151 msgstr "chan eil gin"
8801152
881 #: ../../../src/MenuDevConsole.cpp:262 ../../../src/MenuDevConsole.cpp:264
1153 #: ../../../src/MenuDevConsole.cpp:264 ../../../src/MenuDevConsole.cpp:266
8821154 msgid "wall"
8831155 msgstr "balla"
8841156
885 #: ../../../src/MenuDevConsole.cpp:263 ../../../src/MenuDevConsole.cpp:265
1157 #: ../../../src/MenuDevConsole.cpp:265 ../../../src/MenuDevConsole.cpp:267
8861158 msgid "short wall / pit"
8871159 msgstr "balla goirid / sloc"
8881160
889 #: ../../../src/MenuDevConsole.cpp:266
1161 #: ../../../src/MenuDevConsole.cpp:268
8901162 msgid "entity"
8911163 msgstr "nì"
8921164
893 #: ../../../src/MenuDevConsole.cpp:267
1165 #: ../../../src/MenuDevConsole.cpp:269
8941166 msgid "entity, ally"
8951167 msgstr "nì, caidreabhach"
8961168
897 #: ../../../src/MenuDevConsole.cpp:274
1169 #: ../../../src/MenuDevConsole.cpp:276
8981170 msgid "Tile"
8991171 msgstr "Leacag"
9001172
901 #: ../../../src/MenuDevConsole.cpp:360
1173 #: ../../../src/MenuDevConsole.cpp:377
9021174 msgid "adds a power to the action bar"
9031175 msgstr "cuiridh seo cumhachd ri bàr nan gnìomh"
9041176
905 #: ../../../src/MenuDevConsole.cpp:361
1177 #: ../../../src/MenuDevConsole.cpp:378
9061178 msgid "turns on/off the display of the FPS counter"
907 msgstr ""
908
909 #: ../../../src/MenuDevConsole.cpp:362
1179 msgstr "seallaidh/falaichidh seo cunntas nan FPS"
1180
1181 #: ../../../src/MenuDevConsole.cpp:379
9101182 msgid "turns on/off all of the HUD elements"
9111183 msgstr "cuiridh seo a h-uile nì a’ HUD air no dheth"
9121184
913 #: ../../../src/MenuDevConsole.cpp:363
1185 #: ../../../src/MenuDevConsole.cpp:380
9141186 msgid "turns on/off the developer hud"
9151187 msgstr "cuiridh seo HUD an luchd-leasachaidh air no dheth"
9161188
917 #: ../../../src/MenuDevConsole.cpp:364
1189 #: ../../../src/MenuDevConsole.cpp:381
9181190 msgid ""
9191191 "Prints a list of powers that match a search term. No search term will list "
9201192 "all items"
9221194 "Seallaidh seo liosta nan cumhachdan a fhreagras ris an fhacal-luirg. Mur eil"
9231195 " facal-luirg ann, thèid gach nì a shealltainn"
9241196
925 #: ../../../src/MenuDevConsole.cpp:365
1197 #: ../../../src/MenuDevConsole.cpp:382
9261198 msgid "Prints out all the map filenames located in the \"maps/\" directory."
9271199 msgstr ""
9281200 "Seallaidh seo ainmean faidhle nam mapaichean uile a tha sa phasgan “maps/”."
9291201
930 #: ../../../src/MenuDevConsole.cpp:366
1202 #: ../../../src/MenuDevConsole.cpp:383
9311203 msgid ""
9321204 "Prints out the active campaign statuses that match a search term. No search "
9331205 "term will list all active statuses"
9351207 "Seallaidh seo staidean gnìomhach nan iomairtean a fhreagras ris an fhacal-"
9361208 "luirg. Mur eil facal-luirg ann, thèid gach staid ghnìomhach a shealltainn"
9371209
938 #: ../../../src/MenuDevConsole.cpp:367
1210 #: ../../../src/MenuDevConsole.cpp:384
9391211 msgid ""
9401212 "Prints a list of items that match a search term. No search term will list "
9411213 "all items"
9431215 "Seallaidh seo liosta nan nithean a fhreagras ris an fhacal-luirg. Mur eil "
9441216 "facal-luirg ann, thèid gach nì a shealltainn"
9451217
946 #: ../../../src/MenuDevConsole.cpp:368
1218 #: ../../../src/MenuDevConsole.cpp:385
9471219 msgid ""
9481220 "parses a series of event components and executes them as a single event"
9491221 msgstr ""
9501222 "parsaidh seo sreath dhe cho-phàirtean thachartasan agus ruithidh e ann an "
9511223 "aon tachartas iad"
9521224
953 #: ../../../src/MenuDevConsole.cpp:369
1225 #: ../../../src/MenuDevConsole.cpp:386
9541226 msgid "clears the command history"
9551227 msgstr "falamhaichidh seo eachdraidh nan àitheantan"
9561228
957 #: ../../../src/MenuDevConsole.cpp:370
1229 #: ../../../src/MenuDevConsole.cpp:387
9581230 msgid "displays this text"
9591231 msgstr "seallaidh seo an teacsa seo"
9601232
961 #: ../../../src/MenuDevConsole.cpp:377
1233 #: ../../../src/MenuDevConsole.cpp:394
9621234 msgid "Toggled the developer hud"
9631235 msgstr "Chaidh HUD an luchd-leasachaidh a thoglachadh"
9641236
965 #: ../../../src/MenuDevConsole.cpp:381
1237 #: ../../../src/MenuDevConsole.cpp:398
9661238 msgid "Toggled the hud"
9671239 msgstr "Chaidh an HUD a thoglachadh"
9681240
969 #: ../../../src/MenuDevConsole.cpp:385
1241 #: ../../../src/MenuDevConsole.cpp:402
9701242 msgid "Toggled the FPS counter"
971 msgstr ""
972
973 #: ../../../src/MenuDevConsole.cpp:534
1243 msgstr "Chaidh cunntar nan FPS a thoglachadh"
1244
1245 #: ../../../src/MenuDevConsole.cpp:552
9741246 msgid "ERROR: Incorrect number of arguments"
9751247 msgstr "MEARACHD: Chan eil argamaidean gu leòr ann"
9761248
977 #: ../../../src/MenuDevConsole.cpp:536 ../../../src/MenuDevConsole.cpp:564
1249 #: ../../../src/MenuDevConsole.cpp:554 ../../../src/MenuDevConsole.cpp:582
9781250 msgid "HINT:"
9791251 msgstr "OIDHEAM:"
9801252
981 #: ../../../src/MenuDevConsole.cpp:536
1253 #: ../../../src/MenuDevConsole.cpp:554
9821254 msgid "<id>"
9831255 msgstr "<id>"
9841256
985 #: ../../../src/MenuDevConsole.cpp:552
1257 #: ../../../src/MenuDevConsole.cpp:570
9861258 #, c-format
9871259 msgid "ERROR: '%s' is not a valid event key"
9881260 msgstr "MEARACHD: Chan eil “%s” ’na h-iuchair tachartais dhligheach"
9891261
990 #: ../../../src/MenuDevConsole.cpp:562
1262 #: ../../../src/MenuDevConsole.cpp:580
9911263 msgid "ERROR: Too few arguments"
9921264 msgstr "MEARACHD: Chan eil argamaidean gu leòr ann"
9931265
994 #: ../../../src/MenuDevConsole.cpp:564
1266 #: ../../../src/MenuDevConsole.cpp:582
9951267 msgid "<key>=<val> <key>=<val> ..."
9961268 msgstr "<key>=<val> <key>=<val> …"
9971269
998 #: ../../../src/MenuDevConsole.cpp:569
1270 #: ../../../src/MenuDevConsole.cpp:587
9991271 msgid "ERROR: Unknown command"
10001272 msgstr "MEARACHD: Àithne nach aithne dhuinn"
10011273
1002 #: ../../../src/MenuDevConsole.cpp:571
1274 #: ../../../src/MenuDevConsole.cpp:589
10031275 msgid "HINT: Type help"
10041276 msgstr "OIDHEAM: Sgrìobh “help”"
10051277
1006 #: ../../../src/MenuEnemy.cpp:138
1278 #: ../../../src/MenuEnemy.cpp:162
10071279 #, c-format
10081280 msgid "%s level %d"
1009 msgstr "%s leibheil %d"
1010
1011 #: ../../../src/MenuEnemy.cpp:162
1281 msgstr "%s rang %d"
1282
1283 #: ../../../src/MenuEnemy.cpp:186
10121284 msgid "Dead"
10131285 msgstr "Marbh"
10141286
1015 #: ../../../src/MenuEnemy.cpp:164
1287 #: ../../../src/MenuEnemy.cpp:188
10161288 msgid "Destroyed"
10171289 msgstr "Air a mhilleadh"
10181290
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
1291 #: ../../../src/MenuGameOver.cpp:69
1292 msgid "Game Over"
1293 msgstr "Crìoch a’ gheama"
1294
1295 #: ../../../src/MenuInventory.cpp:178
10401296 #, c-format
10411297 msgid "Lost %d%% of %s."
10421298 msgstr "Chaill thu %d%% dhe %s."
10431299
1044 #: ../../../src/MenuInventory.cpp:195
1300 #: ../../../src/MenuInventory.cpp:185
10451301 #, c-format
10461302 msgid "Lost %d%% of total XP."
10471303 msgstr "Chaill thu %d%% dhe na puingean-eòlais iomlan."
10481304
1049 #: ../../../src/MenuInventory.cpp:200
1305 #: ../../../src/MenuInventory.cpp:190
10501306 #, c-format
10511307 msgid "Lost %d%% of current level XP."
1052 msgstr "Chaill thu %d%% dhe na puingean-eòlais airson an leibheil seo."
1053
1054 #: ../../../src/MenuInventory.cpp:226
1308 msgstr "Chaill thu %d%% dhe na puingean-eòlais airson an rang seo."
1309
1310 #: ../../../src/MenuInventory.cpp:216
10551311 #, c-format
10561312 msgid "Lost %s."
10571313 msgstr "Chaill thu %s."
10581314
1059 #: ../../../src/MenuInventory.cpp:274 ../../../src/MenuStash.cpp:146
1315 #: ../../../src/MenuInventory.cpp:258 ../../../src/MenuStash.cpp:276
10601316 #, c-format
10611317 msgid "%d %s"
10621318 msgstr "%d %s"
10631319
1064 #: ../../../src/MenuInventory.cpp:317
1320 #: ../../../src/MenuInventory.cpp:301
10651321 msgid "Pick up item(s):"
10661322 msgstr "Tog nì:"
10671323
1068 #: ../../../src/MenuInventory.cpp:318
1324 #: ../../../src/MenuInventory.cpp:302
10691325 msgid "Use or equip item:"
10701326 msgstr "Cleachd no uidheamaich nì:"
10711327
1072 #: ../../../src/MenuInventory.cpp:319
1328 #: ../../../src/MenuInventory.cpp:303
10731329 #, c-format
10741330 msgid "%s modifiers"
10751331 msgstr "Atharraichearan air %s"
10761332
1077 #: ../../../src/MenuInventory.cpp:320
1333 #: ../../../src/MenuInventory.cpp:304
10781334 msgid "Select a quantity of item:"
10791335 msgstr "Tagh uiread dhen nì:"
10801336
1081 #: ../../../src/MenuInventory.cpp:323
1337 #: ../../../src/MenuInventory.cpp:307
10821338 msgid "Stash item stack:"
10831339 msgstr "Cuir stac nan nithean dhan stòr:"
10841340
1085 #: ../../../src/MenuInventory.cpp:325
1341 #: ../../../src/MenuInventory.cpp:309
10861342 msgid "Sell item stack:"
10871343 msgstr "Reic stac nan nithean:"
10881344
1089 #: ../../../src/MenuInventory.cpp:592
1345 #: ../../../src/MenuInventory.cpp:576
10901346 msgid "You don't have enough of the required item."
10911347 msgstr "Chan eil gu leòr dhen nì riatanach agad."
10921348
1093 #: ../../../src/MenuInventory.cpp:599
1349 #: ../../../src/MenuInventory.cpp:588
10941350 msgid "You can't use this item right now."
10951351 msgstr "Chan urrainn dhut an nì seo a chleachdadh an-dràsta."
10961352
1097 #: ../../../src/MenuInventory.cpp:611
1353 #: ../../../src/MenuInventory.cpp:600
10981354 msgid "This item can only be used from the action bar."
10991355 msgstr "Cha ghabh an nì seo cleachdadh ach on bhàr-ghnìomhan."
11001356
1101 #: ../../../src/MenuInventory.cpp:729
1357 #: ../../../src/MenuInventory.cpp:718
11021358 msgid "Inventory is full."
11031359 msgstr "Tha an tasgadh làn."
11041360
1105 #: ../../../src/MenuInventory.cpp:849
1361 #: ../../../src/MenuInventory.cpp:843
11061362 #, c-format
11071363 msgid "Not enough %s."
11081364 msgstr "Chan eil %s gu leòr agad."
11091365
1110 #: ../../../src/MenuInventory.cpp:869 ../../../src/MenuInventory.cpp:876
1366 #: ../../../src/MenuInventory.cpp:863 ../../../src/MenuInventory.cpp:870
11111367 msgid "This item can not be sold."
11121368 msgstr "Cha ghabh an nì seo reic."
11131369
11191375 msgid "Quests"
11201376 msgstr "Cinn-thurais"
11211377
1122 #: ../../../src/MenuManager.cpp:286
1378 #: ../../../src/MenuManager.cpp:305
11231379 #, c-format
11241380 msgid "XP: %d/%d"
11251381 msgstr "Puingean-eòlais: %d/%d"
11261382
1127 #: ../../../src/MenuManager.cpp:827
1383 #: ../../../src/MenuManager.cpp:875
11281384 msgid "This item can not be dropped."
11291385 msgstr "Chan urrainn dhut an nì seo a leigeil às."
1386
1387 #: ../../../src/MenuManager.cpp:1501
1388 msgid "Equipped"
1389 msgstr "Uidheamaichte"
1390
1391 #: ../../../src/MenuMovementType.cpp:87
1392 msgid "Select a Movement Type"
1393 msgstr "Tagh seòrsa a’ ghluasaid"
1394
1395 #: ../../../src/MenuMovementType.cpp:89
1396 msgid "Can be changed later in the Configuration menu."
1397 msgstr ""
1398 "Gabhaidh seo atharrachadh air clàr-taice an rèiteachaidh uair sam bith."
1399
1400 #: ../../../src/MenuMovementType.cpp:92 ../../../src/MenuMovementType.cpp:122
1401 msgid "Keyboard"
1402 msgstr "Meur-chlàr"
1403
1404 #: ../../../src/MenuMovementType.cpp:93 ../../../src/MenuMovementType.cpp:128
1405 msgid "Mouse"
1406 msgstr "Luchag"
1407
1408 #: ../../../src/MenuMovementType.cpp:129
1409 msgid "Button"
1410 msgstr "Putan"
11301411
11311412 #: ../../../src/MenuNumPicker.cpp:59
11321413 msgid "Enter amount:"
11331414 msgstr "Cuir a-steach àireamh:"
11341415
1135 #: ../../../src/MenuPowers.cpp:787
1416 #: ../../../src/MenuPowers.cpp:894
11361417 msgid "Passive"
11371418 msgstr "Fulangach"
11381419
1139 #: ../../../src/MenuPowers.cpp:792
1420 #: ../../../src/MenuPowers.cpp:901
11401421 #, c-format
11411422 msgid "Costs %d MP"
11421423 msgstr "Cosgaidh e %d puingean-gluasaid"
11431424
1144 #: ../../../src/MenuPowers.cpp:796
1425 #: ../../../src/MenuPowers.cpp:905
11451426 #, c-format
11461427 msgid "Costs %d HP"
11471428 msgstr "Cosgaidh e %d puingean-beatha"
11481429
1149 #: ../../../src/MenuPowers.cpp:801
1430 #: ../../../src/MenuPowers.cpp:909
11501431 msgid "Cooldown:"
11511432 msgstr "Fuarachadh:"
11521433
1153 #: ../../../src/MenuPowers.cpp:866 ../../../src/MenuPowers.cpp:869
1434 #: ../../../src/MenuPowers.cpp:960 ../../../src/MenuPowers.cpp:963
11541435 msgid "Damage per second"
11551436 msgstr "Dochann gach diog"
11561437
1157 #: ../../../src/MenuPowers.cpp:872 ../../../src/MenuPowers.cpp:875
1438 #: ../../../src/MenuPowers.cpp:966 ../../../src/MenuPowers.cpp:969
11581439 msgid "HP per second"
11591440 msgstr "Puingean-beatha gach diog"
11601441
1161 #: ../../../src/MenuPowers.cpp:878 ../../../src/MenuPowers.cpp:881
1442 #: ../../../src/MenuPowers.cpp:972 ../../../src/MenuPowers.cpp:975
11621443 msgid "MP per second"
11631444 msgstr "Puingean-gluasaid gach diog"
11641445
1165 #: ../../../src/MenuPowers.cpp:885
1446 #: ../../../src/MenuPowers.cpp:979
11661447 msgid "Immobilize"
11671448 msgstr "Do-ghluasad"
11681449
1169 #: ../../../src/MenuPowers.cpp:893
1450 #: ../../../src/MenuPowers.cpp:987
11701451 msgid "Immunity"
11711452 msgstr "Dìonachd"
11721453
1173 #: ../../../src/MenuPowers.cpp:896
1454 #: ../../../src/MenuPowers.cpp:990
11741455 msgid "Immunity to damage over time"
11751456 msgstr "Dìonachd an aghaidh dochainn rè ùine"
11761457
1177 #: ../../../src/MenuPowers.cpp:899
1458 #: ../../../src/MenuPowers.cpp:993
11781459 msgid "Immunity to slow"
11791460 msgstr "Dìonachd an aghaidh maille"
11801461
1181 #: ../../../src/MenuPowers.cpp:902
1462 #: ../../../src/MenuPowers.cpp:996
11821463 msgid "Immunity to stun"
11831464 msgstr "Dìonachd an aghaidh tuainealaich"
11841465
1185 #: ../../../src/MenuPowers.cpp:905
1466 #: ../../../src/MenuPowers.cpp:999
11861467 msgid "Immunity to HP steal"
11871468 msgstr "Dìonachd an aghaidh goid phuingean-beatha"
11881469
1189 #: ../../../src/MenuPowers.cpp:908
1470 #: ../../../src/MenuPowers.cpp:1002
11901471 msgid "Immunity to MP steal"
11911472 msgstr "Dìonachd an aghaidh goid phuingean-gluasaid"
11921473
1193 #: ../../../src/MenuPowers.cpp:911
1474 #: ../../../src/MenuPowers.cpp:1005
11941475 msgid "Immunity to knockback"
11951476 msgstr "Dìonachd an aghaidh bualaidh air ais"
11961477
1197 #: ../../../src/MenuPowers.cpp:914
1478 #: ../../../src/MenuPowers.cpp:1008
11981479 msgid "Immunity to damage reflection"
11991480 msgstr "Dìonachd an aghaidh frith-thilgeil dochainn"
12001481
1201 #: ../../../src/MenuPowers.cpp:917
1482 #: ../../../src/MenuPowers.cpp:1014
12021483 msgid "Stun"
12031484 msgstr "Tuainealaich"
12041485
1205 #: ../../../src/MenuPowers.cpp:920
1486 #: ../../../src/MenuPowers.cpp:1017
12061487 msgid "Automatic revive on death"
12071488 msgstr "Ath-ghin fèin-obrachail seach bàs"
12081489
1209 #: ../../../src/MenuPowers.cpp:923
1490 #: ../../../src/MenuPowers.cpp:1020
12101491 msgid "Convert"
12111492 msgstr "Iompaich"
12121493
1213 #: ../../../src/MenuPowers.cpp:926
1494 #: ../../../src/MenuPowers.cpp:1023
12141495 msgid "Fear"
12151496 msgstr "Eagal"
12161497
1217 #: ../../../src/MenuPowers.cpp:929
1498 #: ../../../src/MenuPowers.cpp:1026
12181499 msgid "Lifespan"
12191500 msgstr "Faid-bheatha"
12201501
1221 #: ../../../src/MenuPowers.cpp:953
1502 #: ../../../src/MenuPowers.cpp:1050
12221503 msgid "Magical Shield"
12231504 msgstr "Sgiath dhraoidheach"
12241505
1225 #: ../../../src/MenuPowers.cpp:982
1506 #: ../../../src/MenuPowers.cpp:1079
12261507 msgid "Healing"
12271508 msgstr "Slànachadh"
12281509
1229 #: ../../../src/MenuPowers.cpp:985
1510 #: ../../../src/MenuPowers.cpp:1082
12301511 msgid "Knockback"
12311512 msgstr "Bualadh air ais"
12321513
1233 #: ../../../src/MenuPowers.cpp:1010
1514 #: ../../../src/MenuPowers.cpp:1106
12341515 #, c-format
12351516 msgid "%d%% chance"
12361517 msgstr "teans de %d%%"
12371518
1238 #: ../../../src/MenuPowers.cpp:1062
1519 #: ../../../src/MenuPowers.cpp:1158
12391520 msgid "Base Accuracy"
12401521 msgstr "Pongalachd bhunasach"
12411522
1242 #: ../../../src/MenuPowers.cpp:1082
1523 #: ../../../src/MenuPowers.cpp:1178
12431524 msgid "Base Critical Chance"
12441525 msgstr "Teans bunasach air bualadh èiginneach"
12451526
1246 #: ../../../src/MenuPowers.cpp:1090
1527 #: ../../../src/MenuPowers.cpp:1186
12471528 msgid "Ignores Absorbtion"
12481529 msgstr "Leigidh seo seachad an ceapadh"
12491530
1250 #: ../../../src/MenuPowers.cpp:1095
1531 #: ../../../src/MenuPowers.cpp:1191
12511532 msgid "Ignores Avoidance"
12521533 msgstr "Leigidh seo seachad an seachnadh"
12531534
1254 #: ../../../src/MenuPowers.cpp:1100
1535 #: ../../../src/MenuPowers.cpp:1196
12551536 #, c-format
12561537 msgid "%d%% Chance to crit slowed targets"
12571538 msgstr "Teans dhe %d%% gun dèan thu bualadh èiginneach air amas le maille air"
12581539
1259 #: ../../../src/MenuPowers.cpp:1105
1540 #: ../../../src/MenuPowers.cpp:1201
12601541 #, c-format
12611542 msgid "Elemental Damage (%s)"
12621543 msgstr "Dochann dùile (%s)"
12631544
1264 #: ../../../src/MenuPowers.cpp:1114
1545 #: ../../../src/MenuPowers.cpp:1210
12651546 #, c-format
12661547 msgid "Requires a %s"
12671548 msgstr "Feum air: %s"
12681549
1269 #: ../../../src/MenuPowers.cpp:1151 ../../../src/MenuPowers.cpp:1154
1550 #: ../../../src/MenuPowers.cpp:1248 ../../../src/MenuPowers.cpp:1251
12701551 #, c-format
12711552 msgid "Requires Power: %s"
12721553 msgstr "Feum air cumhachd: %s"
12731554
1274 #: ../../../src/MenuPowers.cpp:1163
1555 #: ../../../src/MenuPowers.cpp:1260
12751556 msgid "Click to Unlock (uses 1 Skill Point)"
12761557 msgstr "Briog gus a neo-ghlasadh (cleachdaidh seo 1 phuing-sgil)"
12771558
1278 #: ../../../src/MenuPowers.cpp:1167 ../../../src/MenuPowers.cpp:1169
1559 #: ../../../src/MenuPowers.cpp:1264 ../../../src/MenuPowers.cpp:1266
12791560 msgid "Requires 1 Skill Point"
12801561 msgstr "Feum air 1 phuing-sgil"
12811562
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
1563 #: ../../../src/MenuPowers.cpp:1466
1564 #, c-format
1565 msgid "Available skill points: %d"
1566 msgstr "Puingean sgil ri fhaighinn: %d"
1567
1568 #: ../../../src/MenuPowers.cpp:1498
12931569 msgid "Next Level:"
1294 msgstr "An t-ath leibheil:"
1295
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
1570 msgstr "An t-ath rang:"
1571
1572 #: ../../../src/MenuStash.cpp:80 ../../../src/MenuStash.cpp:161
1573 msgid "Stash"
1574 msgstr "Stòr"
1575
1576 #: ../../../src/MenuStash.cpp:174 ../../../src/MenuStash.cpp:188
1577 msgid "Private"
1578 msgstr "Prìobhaideach"
1579
1580 #: ../../../src/MenuStash.cpp:175
1581 msgid "Shared"
1582 msgstr "Co-roinnte"
1583
1584 #: ../../../src/MenuStash.cpp:340
1585 msgid "This item can not be stored in the stash."
1586 msgstr "Cha ghabh an nì seo a chur dhan stòr."
1587
1588 #: ../../../src/MenuStash.cpp:345
1589 msgid "This item can not be stored in the private stash."
1590 msgstr "Cha ghabh an nì seo a chur dhan stòr phrìobhaideach."
1591
1592 #: ../../../src/MenuStash.cpp:350
1593 msgid "This item can not be stored in the shared stash."
1594 msgstr "Cha ghabh an nì seo a chur dhan stòr cho-roinnte."
1595
1596 #: ../../../src/MenuStash.cpp:360
13051597 msgid "Stash is full."
13061598 msgstr "Tha an stòr làn."
13071599
1308 #: ../../../src/MenuTalker.cpp:454
1600 #: ../../../src/MenuStash.cpp:414
1601 #, c-format
1602 msgid "Can not store item in stash: %s"
1603 msgstr "Cha ghabh an nì a chur dhan stòr: %s"
1604
1605 #: ../../../src/MenuTalker.cpp:448
1606 #, c-format
1607 msgid "<dialog node %d>"
1608 msgstr "<nòd còmhraidh %d>"
1609
1610 #: ../../../src/MenuTalker.cpp:456
13091611 msgid "Trade"
13101612 msgstr "Malart"
13111613
1312 #: ../../../src/MenuVendor.cpp:58
1614 #: ../../../src/MenuVendor.cpp:60
13131615 msgid "Buyback"
13141616 msgstr "Na reic thu roimhe"
13151617
1316 #: ../../../src/MenuVendor.cpp:279
1618 #: ../../../src/MenuVendor.cpp:283
13171619 msgid "Vendor"
13181620 msgstr "Reiceadair"
13191621
1320 #: ../../../src/PowerManager.cpp:1136
1622 #: ../../../src/PowerManager.cpp:1204
13211623 #, c-format
13221624 msgid "+%d Shield"
13231625 msgstr "Sgiath +%d"
13241626
1325 #: ../../../src/PowerManager.cpp:1392
1627 #: ../../../src/PowerManager.cpp:1461
13261628 msgid "You are already transformed, untransform first."
13271629 msgstr ""
13281630 "Tha thu air cruth-atharrachadh mar-thà, feumaidh tu an cruth tùsail agad a "
13291631 "ghabhail an toiseach."
13301632
1331 #: ../../../src/PowerManager.cpp:1404
1633 #: ../../../src/PowerManager.cpp:1473
13321634 msgid "Could not untransform at this position."
13331635 msgstr "Cha b’ urrainn dhut neo-chruth-atharrachadh air an ionad seo."
13341636
13361638 msgid "Completed Quests"
13371639 msgstr "Cinn-thurais air a choileanadh"
13381640
1339 #: ../../../src/SaveLoad.cpp:243 ../../../src/SaveLoad.cpp:244
1641 #: ../../../src/SaveLoad.cpp:250 ../../../src/SaveLoad.cpp:251
13401642 msgid "Game saved."
13411643 msgstr "Chaidh an geama a shàbhaladh."
13421644
1343 #: ../../../src/SDLInputState.cpp:582
1645 #: ../../../src/SDLInputState.cpp:645
1646 msgid "BkSp"
1647 msgstr "BkSp"
1648
1649 #: ../../../src/SDLInputState.cpp:646
1650 msgid "Caps"
1651 msgstr "Caps"
1652
1653 #: ../../../src/SDLInputState.cpp:647
1654 msgid "Del"
1655 msgstr "Del"
1656
1657 #: ../../../src/SDLInputState.cpp:649 ../../../src/SDLInputState.cpp:679
1658 msgid "End"
1659 msgstr "End"
1660
1661 #: ../../../src/SDLInputState.cpp:650
1662 msgid "Esc"
1663 msgstr "Esc"
1664
1665 #: ../../../src/SDLInputState.cpp:651 ../../../src/SDLInputState.cpp:681
1666 msgid "Home"
1667 msgstr "Home"
1668
1669 #: ../../../src/SDLInputState.cpp:652
1670 msgid "Ins"
1671 msgstr "Ins"
1672
1673 #: ../../../src/SDLInputState.cpp:653
1674 msgid "LAlt"
1675 msgstr "Alt clì"
1676
1677 #: ../../../src/SDLInputState.cpp:654
1678 msgid "LCtrl"
1679 msgstr "Ctrl clì"
1680
1681 #: ../../../src/SDLInputState.cpp:656
1682 msgid "LShft"
1683 msgstr "Shift clì"
1684
1685 #: ../../../src/SDLInputState.cpp:657
1686 msgid "Num"
1687 msgstr "Num"
1688
1689 #: ../../../src/SDLInputState.cpp:658
1690 msgid "PgDn"
1691 msgstr "PgDn"
1692
1693 #: ../../../src/SDLInputState.cpp:659
1694 msgid "PgUp"
1695 msgstr "PgUp"
1696
1697 #: ../../../src/SDLInputState.cpp:660 ../../../src/SDLInputState.cpp:690
1698 msgid "Pause"
1699 msgstr "Pause"
1700
1701 #: ../../../src/SDLInputState.cpp:661
1702 msgid "Print"
1703 msgstr "Print"
1704
1705 #: ../../../src/SDLInputState.cpp:662
1706 msgid "RAlt"
1707 msgstr "Alt deas"
1708
1709 #: ../../../src/SDLInputState.cpp:663
1710 msgid "RCtrl"
1711 msgstr "Ctrl deas"
1712
1713 #: ../../../src/SDLInputState.cpp:664
1714 msgid "Ret"
1715 msgstr "Return"
1716
1717 #: ../../../src/SDLInputState.cpp:666
1718 msgid "RShft"
1719 msgstr "Shift deas"
1720
1721 #: ../../../src/SDLInputState.cpp:667
1722 msgid "SLock"
1723 msgstr "SLock"
1724
1725 #: ../../../src/SDLInputState.cpp:668
1726 msgid "Spc"
1727 msgstr "Spc"
1728
1729 #: ../../../src/SDLInputState.cpp:669 ../../../src/SDLInputState.cpp:699
1730 msgid "Tab"
1731 msgstr "Tab"
1732
1733 #: ../../../src/SDLInputState.cpp:675
13441734 msgid "Backspace"
13451735 msgstr "Backspace"
13461736
1347 #: ../../../src/SDLInputState.cpp:583
1737 #: ../../../src/SDLInputState.cpp:676
13481738 msgid "CapsLock"
13491739 msgstr "CapsLock"
13501740
1351 #: ../../../src/SDLInputState.cpp:586
1352 msgid "End"
1353 msgstr "End"
1354
1355 #: ../../../src/SDLInputState.cpp:587
1741 #: ../../../src/SDLInputState.cpp:680
13561742 msgid "Escape"
13571743 msgstr "Escape"
13581744
1359 #: ../../../src/SDLInputState.cpp:588
1360 msgid "Home"
1361 msgstr "Home"
1362
1363 #: ../../../src/SDLInputState.cpp:589
1745 #: ../../../src/SDLInputState.cpp:682
13641746 msgid "Insert"
13651747 msgstr "Insert"
13661748
1367 #: ../../../src/SDLInputState.cpp:590
1749 #: ../../../src/SDLInputState.cpp:683
13681750 msgid "Left Alt"
13691751 msgstr "Alt clì"
13701752
1371 #: ../../../src/SDLInputState.cpp:591
1753 #: ../../../src/SDLInputState.cpp:684
13721754 msgid "Left Ctrl"
13731755 msgstr "Ctrl clì"
13741756
1375 #: ../../../src/SDLInputState.cpp:593
1757 #: ../../../src/SDLInputState.cpp:686
13761758 msgid "Left Shift"
13771759 msgstr "Shift clì"
13781760
1379 #: ../../../src/SDLInputState.cpp:594
1761 #: ../../../src/SDLInputState.cpp:687
13801762 msgid "NumLock"
13811763 msgstr "NumLock"
13821764
1383 #: ../../../src/SDLInputState.cpp:595
1765 #: ../../../src/SDLInputState.cpp:688
13841766 msgid "PageDown"
13851767 msgstr "PageDown"
13861768
1387 #: ../../../src/SDLInputState.cpp:596
1769 #: ../../../src/SDLInputState.cpp:689
13881770 msgid "PageUp"
13891771 msgstr "PageUp"
13901772
1391 #: ../../../src/SDLInputState.cpp:597
1392 msgid "Pause"
1393 msgstr "Pause"
1394
1395 #: ../../../src/SDLInputState.cpp:598
1773 #: ../../../src/SDLInputState.cpp:691
13961774 msgid "PrintScreen"
13971775 msgstr "PrintScreen"
13981776
1399 #: ../../../src/SDLInputState.cpp:599
1777 #: ../../../src/SDLInputState.cpp:692
14001778 msgid "Right Alt"
14011779 msgstr "Alt deas"
14021780
1403 #: ../../../src/SDLInputState.cpp:600
1781 #: ../../../src/SDLInputState.cpp:693
14041782 msgid "Right Ctrl"
14051783 msgstr "Ctrl deas"
14061784
1407 #: ../../../src/SDLInputState.cpp:601
1785 #: ../../../src/SDLInputState.cpp:694
14081786 msgid "Return"
14091787 msgstr "Return"
14101788
1411 #: ../../../src/SDLInputState.cpp:603
1789 #: ../../../src/SDLInputState.cpp:696
14121790 msgid "Right Shift"
14131791 msgstr "Shift deas"
14141792
1415 #: ../../../src/SDLInputState.cpp:604
1793 #: ../../../src/SDLInputState.cpp:697
14161794 msgid "ScrollLock"
14171795 msgstr "ScrollLock"
14181796
1419 #: ../../../src/SDLInputState.cpp:605
1797 #: ../../../src/SDLInputState.cpp:698
14201798 msgid "Space"
14211799 msgstr "Space"
14221800
1423 #: ../../../src/SDLInputState.cpp:606
1424 msgid "Tab"
1425 msgstr "Tab"
1426
1427 #: ../../../src/SDLInputState.cpp:620
1801 #: ../../../src/SDLInputState.cpp:712
1802 #, c-format
1803 msgid "M%d"
1804 msgstr "Luch%d"
1805
1806 #: ../../../src/SDLInputState.cpp:718
14281807 #, c-format
14291808 msgid "Mouse %d"
14301809 msgstr "%d na luchaige"
14311810
1432 #: ../../../src/SDLInputState.cpp:628
1811 #: ../../../src/SDLInputState.cpp:728
1812 #, c-format
1813 msgid "JX%d-"
1814 msgstr "BiorX%d-"
1815
1816 #: ../../../src/SDLInputState.cpp:730
14331817 #, c-format
14341818 msgid "Axis %d -"
14351819 msgstr "Aiseal %d -"
14361820
1437 #: ../../../src/SDLInputState.cpp:630
1821 #: ../../../src/SDLInputState.cpp:734
1822 #, c-format
1823 msgid "JX%d+"
1824 msgstr "BiorX%d+"
1825
1826 #: ../../../src/SDLInputState.cpp:736
14381827 #, c-format
14391828 msgid "Axis %d +"
14401829 msgstr "Aiseal %d +"
14411830
1442 #: ../../../src/SDLInputState.cpp:633
1831 #: ../../../src/SDLInputState.cpp:741
1832 #, c-format
1833 msgid "JB%d"
1834 msgstr "BiorPut%d"
1835
1836 #: ../../../src/SDLInputState.cpp:743
14431837 #, c-format
14441838 msgid "Button %d"
14451839 msgstr "Putan %d"
14461840
1447 #: ../../../src/SDLInputState.cpp:637
1448 msgid "(none)"
1449 msgstr "(chan eil gin)"
1450
1451 #: ../../../src/SDLInputState.cpp:677
1841 #: ../../../src/SDLInputState.cpp:789
14521842 msgid "Touch control D-Pad"
14531843 msgstr "Pada-D an t-suathaidh"
14541844
1455 #: ../../../src/SDLInputState.cpp:701
1845 #: ../../../src/SDLInputState.cpp:812
14561846 msgid "Touch control buttons"
14571847 msgstr "Putanan an t-suathaidh"
14581848
1459 #: ../../../src/SDLInputState.cpp:716
1849 #: ../../../src/SDLInputState.cpp:826
14601850 msgid "Tap"
14611851 msgstr "Gnogadh"
14621852
1463 #: ../../../src/SDLInputState.cpp:760 ../../../src/SDLInputState.cpp:764
1464 #: ../../../src/SDLInputState.cpp:768
1853 #: ../../../src/SDLInputState.cpp:878 ../../../src/SDLInputState.cpp:880
1854 #, c-format
1855 msgid "Can not bind: %s"
1856 msgstr "Cha ghabh a nasgadh: %s"
1857
1858 #: ../../../src/SDLInputState.cpp:892 ../../../src/SDLInputState.cpp:896
1859 #: ../../../src/SDLInputState.cpp:900
14651860 #, c-format
14661861 msgid "'%s' is no longer bound to:"
14671862 msgstr "Chan eil “%s” naisgte tuilleadh ri:"
16262021 msgid "Base MP"
16272022 msgstr "Puingean-gluasaid bunasach"
16282023
1629 #: ../../../src/Utils.cpp:346
2024 #: ../../../src/Utils.cpp:365
16302025 msgid "k"
16312026 msgstr "k"
16322027
1633 #: ../../../src/Utils.cpp:580
2028 #: ../../../src/Utils.cpp:635
16342029 #, c-format
16352030 msgid "%s second"
16362031 msgstr "%s diog"
16372032
1638 #: ../../../src/Utils.cpp:583
2033 #: ../../../src/Utils.cpp:638
16392034 #, c-format
16402035 msgid "%s seconds"
16412036 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-07-02 13:26-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:1220
126 #: ../../../src/StatBlock.cpp:926 ../../../src/StatBlock.cpp:932
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:937
132 #: ../../../src/StatBlock.cpp:943
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:704
174 msgid "Entering game world..."
175 msgstr "Cargando o mundo…"
176
177 #: ../../../src/GameStateLoad.cpp:707
178 msgid "Loading saved game..."
179 msgstr "Cargando a partida..."
180
181 #: ../../../src/GameStateLoad.cpp:740
182 msgid "Invalid save"
183 msgstr ""
184
185 #: ../../../src/GameStateLoad.cpp:764 ../../../src/ItemManager.cpp:745
186 #: ../../../src/MenuPowers.cpp:882 ../../../src/MenuPowers.cpp:1241
187 #: ../../../src/MenuPowers.cpp:1653
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:254
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:670
247 #: ../../../src/SDLInputState.cpp:700
248 msgid "Up"
249 msgstr "Arriba"
250
251 #: ../../../src/InputState.cpp:419 ../../../src/MenuMovementType.cpp:125
252 #: ../../../src/MenuMovementType.cpp:134 ../../../src/SDLInputState.cpp:648
253 #: ../../../src/SDLInputState.cpp:678
254 msgid "Down"
255 msgstr "Abaixo"
256
257 #: ../../../src/InputState.cpp:420 ../../../src/MenuMovementType.cpp:124
258 #: ../../../src/MenuMovementType.cpp:133 ../../../src/SDLInputState.cpp:655
259 #: ../../../src/SDLInputState.cpp:685
260 msgid "Left"
261 msgstr "Esquerda"
262
263 #: ../../../src/InputState.cpp:421 ../../../src/MenuMovementType.cpp:126
264 #: ../../../src/MenuMovementType.cpp:135 ../../../src/SDLInputState.cpp:665
265 #: ../../../src/SDLInputState.cpp:695
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:159
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:677
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:981
406 #, c-format
407 msgid "%d%% Speed"
408 msgstr "%d%% velocidade"
409
410 #: ../../../src/ItemManager.cpp:650 ../../../src/MenuPowers.cpp:984
411 #, c-format
412 msgid "%d%% Attack Speed"
413 msgstr ""
414
415 #: ../../../src/ItemManager.cpp:672 ../../../src/MenuCharacter.cpp:352
416 #: ../../../src/MenuPowers.cpp:953
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:1228
446 #: ../../../src/MenuPowers.cpp:1231
447 #, c-format
448 msgid "Requires Level %d"
449 msgstr "Require o nivel %d."
450
451 #: ../../../src/ItemManager.cpp:836 ../../../src/MenuPowers.cpp:1220
452 #: ../../../src/MenuPowers.cpp:1222
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:898
483 msgid "Set:"
484 msgstr ""
485
486 #: ../../../src/ItemManager.cpp:905
487 #, c-format
488 msgid "%d items:"
489 msgstr ""
490
491 #: ../../../src/ItemManager.cpp:920
492 #, c-format
493 msgid "Press [%s] to read"
494 msgstr ""
495
496 #: ../../../src/ItemManager.cpp:923
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:1256
573 msgid "Clear"
574 msgstr "Baleirar"
575
576 #: ../../../src/MenuConfig.cpp:122 ../../../src/MenuConfig.cpp:1254
577 msgid "Assign:"
578 msgstr ""
579
580 #: ../../../src/MenuConfig.cpp:123 ../../../src/MenuConfig.cpp:253
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:252 ../../../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:256 ../../../src/MenuGameOver.cpp:72
593 msgid "Continue"
594 msgstr ""
595
596 #: ../../../src/MenuConfig.cpp:258
597 msgid "Save Game"
598 msgstr ""
599
600 #: ../../../src/MenuConfig.cpp:301 ../../../src/MenuConfig.cpp:352
601 msgid "Default"
602 msgstr ""
603
604 #: ../../../src/MenuConfig.cpp:301
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:302
611 msgid "Show all"
612 msgstr ""
613
614 #: ../../../src/MenuConfig.cpp:302
615 msgid ""
616 "Always show loot tooltips. Temporarily hide all loot tooltips with 'Alt'."
617 msgstr ""
618
619 #: ../../../src/MenuConfig.cpp:303 ../../../src/MenuConfig.cpp:308
620 msgid "Hidden"
621 msgstr ""
622
623 #: ../../../src/MenuConfig.cpp:303
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:306
630 msgid "Visible"
631 msgstr ""
632
633 #: ../../../src/MenuConfig.cpp:307
634 msgid "Visible (2x zoom)"
635 msgstr ""
636
637 #: ../../../src/MenuConfig.cpp:311
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:312
644 msgid "- Display a message"
645 msgstr ""
646
647 #: ../../../src/MenuConfig.cpp:313
648 msgid "- Play a sound"
649 msgstr ""
650
651 #: ../../../src/MenuConfig.cpp:314
652 msgid "- Change the cursor"
653 msgstr ""
654
655 #: ../../../src/MenuConfig.cpp:316
656 msgid "Disabled"
657 msgstr ""
658
659 #: ../../../src/MenuConfig.cpp:317
660 msgid "All"
661 msgstr ""
662
663 #: ../../../src/MenuConfig.cpp:318
664 msgid "Message & Cursor"
665 msgstr ""
666
667 #: ../../../src/MenuConfig.cpp:319
668 msgid "Message & Sound"
669 msgstr ""
670
671 #: ../../../src/MenuConfig.cpp:320
672 msgid "Sound & Cursor"
673 msgstr ""
674
675 #: ../../../src/MenuConfig.cpp:321
676 msgid "Message"
677 msgstr ""
678
679 #: ../../../src/MenuConfig.cpp:322
680 msgid "Cursor"
681 msgstr ""
682
683 #: ../../../src/MenuConfig.cpp:323
684 msgid "Sound"
685 msgstr ""
686
687 #: ../../../src/MenuConfig.cpp:329
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:347
694 msgid "The maximum frame rate that the game will be allowed to run at."
695 msgstr ""
696
697 #: ../../../src/MenuConfig.cpp:351
698 msgid ""
699 "The render size refers to the height in pixels of the surface used to draw "
700 "the game. Mods define the allowed render sizes, but this option allows "
701 "overriding the maximum size."
702 msgstr ""
703
704 #: ../../../src/MenuConfig.cpp:374 ../../../src/MenuConfig.cpp:1679
705 #: ../../../src/MenuGameOver.cpp:116
706 msgid "Exit"
707 msgstr "Volver ao menú"
708
709 #: ../../../src/MenuConfig.cpp:375
710 msgid "Video"
711 msgstr "Vídeo"
712
713 #: ../../../src/MenuConfig.cpp:376
152714 msgid "Audio"
153715 msgstr "Son"
154716
155 #: ../../../src/GameStateConfigBase.cpp:161
156 #: ../../../src/GameStateConfigDesktop.cpp:131
717 #: ../../../src/MenuConfig.cpp:377
157718 msgid "Interface"
158719 msgstr "Interface"
159720
160 #: ../../../src/GameStateConfigBase.cpp:162
161 #: ../../../src/GameStateConfigDesktop.cpp:134
721 #: ../../../src/MenuConfig.cpp:378
722 msgid "Input"
723 msgstr "Entrada"
724
725 #: ../../../src/MenuConfig.cpp:379
726 msgid "Keybindings"
727 msgstr "Controis"
728
729 #: ../../../src/MenuConfig.cpp:380
162730 msgid "Mods"
163731 msgstr "Mods"
164732
165 #: ../../../src/GameStateConfigBase.cpp:249 ../../../src/MenuExit.cpp:72
733 #: ../../../src/MenuConfig.cpp:392
734 msgid "Paused"
735 msgstr ""
736
737 #: ../../../src/MenuConfig.cpp:395
738 msgid "Time Played"
739 msgstr ""
740
741 #: ../../../src/MenuConfig.cpp:401
742 msgid "Renderer"
743 msgstr ""
744
745 #: ../../../src/MenuConfig.cpp:402
746 msgid "Full Screen Mode"
747 msgstr "Pantalla completa:"
748
749 #: ../../../src/MenuConfig.cpp:403
750 msgid "Hardware surfaces"
751 msgstr "Superficies por hardware:"
752
753 #: ../../../src/MenuConfig.cpp:404
754 msgid "V-Sync"
755 msgstr ""
756
757 #: ../../../src/MenuConfig.cpp:405
758 msgid "Texture Filtering"
759 msgstr ""
760
761 #: ../../../src/MenuConfig.cpp:406
762 msgid "DPI scaling"
763 msgstr ""
764
765 #: ../../../src/MenuConfig.cpp:407
766 msgid "Parallax Layers"
767 msgstr ""
768
769 #: ../../../src/MenuConfig.cpp:408
770 msgid "Allow changing gamma"
771 msgstr "Permitir cambiar o gamma:"
772
773 #: ../../../src/MenuConfig.cpp:409
774 msgid "Gamma"
775 msgstr "Gamma:"
776
777 #: ../../../src/MenuConfig.cpp:410
778 msgid "Maximum Render Size"
779 msgstr ""
780
781 #: ../../../src/MenuConfig.cpp:411
782 msgid "Frame Limit"
783 msgstr ""
784
785 #: ../../../src/MenuConfig.cpp:413
786 msgid "Sound Volume"
787 msgstr "Volume dos sons:"
788
789 #: ../../../src/MenuConfig.cpp:414
166790 msgid "Music Volume"
167791 msgstr "Volume da música:"
168792
169 #: ../../../src/GameStateConfigBase.cpp:253 ../../../src/MenuExit.cpp:77
170 msgid "Sound Volume"
171 msgstr "Volume dos sons:"
172
173 #: ../../../src/GameStateConfigBase.cpp:257
793 #: ../../../src/MenuConfig.cpp:416
174794 msgid "Language"
175795 msgstr "Idioma:"
176796
177 #: ../../../src/GameStateConfigBase.cpp:266
797 #: ../../../src/MenuConfig.cpp:417
178798 msgid "Show FPS"
179799 msgstr "Mostrar os FPS:"
180800
181 #: ../../../src/GameStateConfigBase.cpp:270
801 #: ../../../src/MenuConfig.cpp:418
802 msgid "Hardware mouse cursor"
803 msgstr "Cursor do rato por hardware:"
804
805 #: ../../../src/MenuConfig.cpp:419
182806 msgid "Colorblind Mode"
183807 msgstr "Modo daltónico:"
184808
185 #: ../../../src/GameStateConfigBase.cpp:274
186 msgid "Hardware mouse cursor"
187 msgstr "Cursor do rato por hardware:"
188
189 #: ../../../src/GameStateConfigBase.cpp:278
809 #: ../../../src/MenuConfig.cpp:420
190810 msgid "Developer Mode"
191811 msgstr "Modo de desenvolvedor"
192812
193 #: ../../../src/GameStateConfigBase.cpp:282
813 #: ../../../src/MenuConfig.cpp:421
194814 msgid "Subtitles"
195815 msgstr ""
196816
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
817 #: ../../../src/MenuConfig.cpp:422
818 msgid "Loot tooltip visibility"
819 msgstr ""
820
821 #: ../../../src/MenuConfig.cpp:423
822 msgid "Mini-map mode"
823 msgstr ""
824
825 #: ../../../src/MenuConfig.cpp:424
826 msgid "Always show stat bar labels"
827 msgstr ""
828
829 #: ../../../src/MenuConfig.cpp:425
830 msgid "Allow stat bar auto-hiding"
831 msgstr ""
832
833 #: ../../../src/MenuConfig.cpp:426
834 msgid "Show combat text"
835 msgstr "Mostrar texto de combate:"
836
837 #: ../../../src/MenuConfig.cpp:427
838 msgid "Automatically equip items"
839 msgstr ""
840
841 #: ../../../src/MenuConfig.cpp:428
842 msgid "Show hidden entity markers"
843 msgstr ""
844
845 #: ../../../src/MenuConfig.cpp:429
846 msgid "Low health notification"
847 msgstr ""
848
849 #: ../../../src/MenuConfig.cpp:430
850 msgid "Low health threshold"
851 msgstr ""
852
853 #: ../../../src/MenuConfig.cpp:431
854 msgid "Show item comparison tooltips"
855 msgstr ""
856
857 #: ../../../src/MenuConfig.cpp:434 ../../../src/MenuMovementType.cpp:94
858 #: ../../../src/MenuMovementType.cpp:131
859 msgid "Joystick"
860 msgstr "Mando:"
861
862 #: ../../../src/MenuConfig.cpp:435
863 msgid "Move hero using mouse"
864 msgstr "Mover a personaxe co cursor:"
865
866 #: ../../../src/MenuConfig.cpp:436
867 msgid "Mouse aim"
868 msgstr "Apuntar co rato:"
869
870 #: ../../../src/MenuConfig.cpp:437
871 msgid "Do not use mouse"
872 msgstr "Non usar o rato:"
873
874 #: ../../../src/MenuConfig.cpp:438
875 msgid "Swap mouse movement button"
876 msgstr ""
877
878 #: ../../../src/MenuConfig.cpp:439
879 msgid "Attack with mouse movement"
880 msgstr ""
881
882 #: ../../../src/MenuConfig.cpp:440
883 msgid "Joystick Deadzone"
884 msgstr "Límite do mando"
885
886 #: ../../../src/MenuConfig.cpp:441
887 msgid "Touch Controls"
888 msgstr ""
889
890 #: ../../../src/MenuConfig.cpp:442
891 msgid "Touch Gamepad Scaling"
892 msgstr ""
893
894 #: ../../../src/MenuConfig.cpp:452
895 #, c-format
896 msgid "Primary binding: %s"
897 msgstr ""
898
899 #: ../../../src/MenuConfig.cpp:453
900 #, c-format
901 msgid "Alternate binding: %s"
902 msgstr ""
903
904 #: ../../../src/MenuConfig.cpp:454
905 #, c-format
906 msgid "Joystick binding: %s"
907 msgstr ""
908
909 #: ../../../src/MenuConfig.cpp:556
252910 msgid ""
253911 "Will try to store surfaces in video memory versus system memory. The effect "
254912 "this has on performance depends on the renderer."
255913 msgstr ""
256914
257 #: ../../../src/GameStateConfigDesktop.cpp:189
915 #: ../../../src/MenuConfig.cpp:557
258916 msgid ""
259917 "Prevents screen tearing. Disable if you experience \"stuttering\" in "
260918 "windowed mode or input lag."
261919 msgstr ""
262920
263 #: ../../../src/GameStateConfigDesktop.cpp:190
921 #: ../../../src/MenuConfig.cpp:558
264922 msgid ""
265923 "When enabled, this uses the screen DPI in addition to the window dimensions "
266924 "to scale the rendering resolution. Otherwise, only the window dimensions are"
267925 " used."
268926 msgstr ""
269927
270 #: ../../../src/GameStateConfigDesktop.cpp:191
928 #: ../../../src/MenuConfig.cpp:559
271929 msgid ""
272930 "This enables parallax (non-tile) layers. Disabling this setting can improve "
273931 "performance in some cases."
274932 msgstr ""
275933
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
934 #: ../../../src/MenuConfig.cpp:560
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 #: ../../../src/MenuConfig.cpp:561
941 msgid ""
942 "Provides additional text for information that is primarily conveyed through "
943 "color."
944 msgstr ""
945
946 #: ../../../src/MenuConfig.cpp:562
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 #: ../../../src/MenuConfig.cpp:563
953 msgid ""
954 "When enabled, empty equipment slots will be filled with applicable items "
955 "when they are obtained."
956 msgstr ""
957
958 #: ../../../src/MenuConfig.cpp:564
959 msgid ""
960 "Shows a marker above enemies, allies, and the player when they are obscured "
961 "by tall objects."
962 msgstr ""
963
964 #: ../../../src/MenuConfig.cpp:565
965 msgid ""
966 "When enabled, tooltips for equipped items of the same type are shown next to"
967 " standard item tooltips."
968 msgstr ""
969
970 #: ../../../src/MenuConfig.cpp:566
971 msgid ""
972 "This allows the game to be controlled entirely with the keyboard (or "
973 "joystick)."
974 msgstr ""
975
976 #: ../../../src/MenuConfig.cpp:567
977 msgid ""
978 "When 'Move hero using mouse' is enabled, this setting controls if 'Main1' or"
979 " 'Main2' is used to move the hero. If enabled, 'Main2' will move the hero "
980 "instead of 'Main1'."
981 msgstr ""
982
983 #: ../../../src/MenuConfig.cpp:568
984 msgid ""
985 "When 'Move hero using mouse' is enabled, this setting controls if the Power "
986 "assigned to the movement button can be used by targeting an enemy. If this "
987 "setting is disabled, it is required to use 'Shift' to access the Power "
988 "assigned to the movement button."
989 msgstr ""
990
991 #: ../../../src/MenuConfig.cpp:569
992 msgid ""
993 "The player's attacks will be aimed in the direction of the mouse cursor when"
994 " this is enabled."
995 msgstr ""
996
997 #: ../../../src/MenuConfig.cpp:570
998 msgid ""
999 "When enabled, a virtual gamepad will be added in-game. Other interactions, "
1000 "such as drag-and-drop behavior, are also altered to better suit touch input."
1001 msgstr ""
1002
1003 #: ../../../src/MenuConfig.cpp:621
1004 msgid "Active Mods"
1005 msgstr "Mods activos:"
1006
1007 #: ../../../src/MenuConfig.cpp:630
1008 msgid "Available Mods"
1009 msgstr "Mods dispoñíbeis:"
1010
1011 #: ../../../src/MenuConfig.cpp:649
1012 msgid "<< Disable"
1013 msgstr "← Desactivar"
1014
1015 #: ../../../src/MenuConfig.cpp:655
1016 msgid "Enable >>"
1017 msgstr "Activar →"
1018
1019 #: ../../../src/MenuConfig.cpp:1536
1020 msgid "Version:"
1021 msgstr ""
1022
1023 #: ../../../src/MenuConfig.cpp:1541
1024 msgid "Game:"
1025 msgstr ""
1026
1027 #: ../../../src/MenuConfig.cpp:1546
1028 msgid "Engine version:"
1029 msgstr ""
1030
1031 #: ../../../src/MenuConfig.cpp:1554
1032 msgid "Requires mods:"
1033 msgstr ""
1034
1035 #: ../../../src/MenuConfig.cpp:1662 ../../../src/SDLInputState.cpp:750
1036 msgid "(none)"
1037 msgstr "(ningún)"
1038
1039 #: ../../../src/MenuConfig.cpp:1679 ../../../src/MenuGameOver.cpp:73
1040 msgid "Save & Exit"
1041 msgstr "Gardar e saír"
1042
1043 #: ../../../src/MenuDevConsole.cpp:65
8191044 msgid "Execute"
8201045 msgstr "Executar"
8211046
822 #: ../../../src/MenuDevConsole.cpp:101 ../../../src/MenuDevConsole.cpp:151
1047 #: ../../../src/MenuDevConsole.cpp:103 ../../../src/MenuDevConsole.cpp:153
8231048 msgid "Developer Console"
8241049 msgstr "Consola de desenvolvedor"
8251050
826 #: ../../../src/MenuDevConsole.cpp:141
1051 #: ../../../src/MenuDevConsole.cpp:143
8271052 #, c-format
8281053 msgid "Use '%s' to inspect with the cursor."
8291054 msgstr ""
8301055
831 #: ../../../src/MenuDevConsole.cpp:146
1056 #: ../../../src/MenuDevConsole.cpp:148
8321057 msgid "Arguments with spaces should be enclosed with double quotes. Example:"
8331058 msgstr ""
8341059
835 #: ../../../src/MenuDevConsole.cpp:147
1060 #: ../../../src/MenuDevConsole.cpp:149
8361061 msgid "Type 'help' to get a list of commands."
8371062 msgstr ""
8381063
839 #: ../../../src/MenuDevConsole.cpp:209 ../../../src/MenuDevConsole.cpp:213
1064 #: ../../../src/MenuDevConsole.cpp:211 ../../../src/MenuDevConsole.cpp:215
8401065 msgid "px"
8411066 msgstr ""
8421067
843 #: ../../../src/MenuDevConsole.cpp:224
1068 #: ../../../src/MenuDevConsole.cpp:226
8441069 msgid "Distance"
8451070 msgstr ""
8461071
847 #: ../../../src/MenuDevConsole.cpp:239 ../../../src/MenuDevConsole.cpp:286
1072 #: ../../../src/MenuDevConsole.cpp:241 ../../../src/MenuDevConsole.cpp:289
1073 #: ../../../src/MenuDevConsole.cpp:303
8481074 msgid "Entity"
8491075 msgstr ""
8501076
851 #: ../../../src/MenuDevConsole.cpp:261 ../../../src/MenuDevConsole.cpp:268
1077 #: ../../../src/MenuDevConsole.cpp:263 ../../../src/MenuDevConsole.cpp:270
8521078 msgid "none"
8531079 msgstr ""
8541080
855 #: ../../../src/MenuDevConsole.cpp:262 ../../../src/MenuDevConsole.cpp:264
1081 #: ../../../src/MenuDevConsole.cpp:264 ../../../src/MenuDevConsole.cpp:266
8561082 msgid "wall"
8571083 msgstr ""
8581084
859 #: ../../../src/MenuDevConsole.cpp:263 ../../../src/MenuDevConsole.cpp:265
1085 #: ../../../src/MenuDevConsole.cpp:265 ../../../src/MenuDevConsole.cpp:267
8601086 msgid "short wall / pit"
8611087 msgstr ""
8621088
863 #: ../../../src/MenuDevConsole.cpp:266
1089 #: ../../../src/MenuDevConsole.cpp:268
8641090 msgid "entity"
8651091 msgstr ""
8661092
867 #: ../../../src/MenuDevConsole.cpp:267
1093 #: ../../../src/MenuDevConsole.cpp:269
8681094 msgid "entity, ally"
8691095 msgstr ""
8701096
871 #: ../../../src/MenuDevConsole.cpp:274
1097 #: ../../../src/MenuDevConsole.cpp:276
8721098 msgid "Tile"
8731099 msgstr ""
8741100
875 #: ../../../src/MenuDevConsole.cpp:360
1101 #: ../../../src/MenuDevConsole.cpp:377
8761102 msgid "adds a power to the action bar"
8771103 msgstr ""
8781104
879 #: ../../../src/MenuDevConsole.cpp:361
1105 #: ../../../src/MenuDevConsole.cpp:378
8801106 msgid "turns on/off the display of the FPS counter"
8811107 msgstr ""
8821108
883 #: ../../../src/MenuDevConsole.cpp:362
1109 #: ../../../src/MenuDevConsole.cpp:379
8841110 msgid "turns on/off all of the HUD elements"
8851111 msgstr ""
8861112
887 #: ../../../src/MenuDevConsole.cpp:363
1113 #: ../../../src/MenuDevConsole.cpp:380
8881114 msgid "turns on/off the developer hud"
8891115 msgstr "Activa ou desactiva a interface do desenvolvedor."
8901116
891 #: ../../../src/MenuDevConsole.cpp:364
1117 #: ../../../src/MenuDevConsole.cpp:381
8921118 msgid ""
8931119 "Prints a list of powers that match a search term. No search term will list "
8941120 "all items"
8951121 msgstr ""
8961122
897 #: ../../../src/MenuDevConsole.cpp:365
1123 #: ../../../src/MenuDevConsole.cpp:382
8981124 msgid "Prints out all the map filenames located in the \"maps/\" directory."
8991125 msgstr ""
9001126
901 #: ../../../src/MenuDevConsole.cpp:366
1127 #: ../../../src/MenuDevConsole.cpp:383
9021128 msgid ""
9031129 "Prints out the active campaign statuses that match a search term. No search "
9041130 "term will list all active statuses"
9051131 msgstr ""
9061132
907 #: ../../../src/MenuDevConsole.cpp:367
1133 #: ../../../src/MenuDevConsole.cpp:384
9081134 msgid ""
9091135 "Prints a list of items that match a search term. No search term will list "
9101136 "all items"
9111137 msgstr ""
9121138
913 #: ../../../src/MenuDevConsole.cpp:368
1139 #: ../../../src/MenuDevConsole.cpp:385
9141140 msgid ""
9151141 "parses a series of event components and executes them as a single event"
9161142 msgstr ""
9171143
918 #: ../../../src/MenuDevConsole.cpp:369
1144 #: ../../../src/MenuDevConsole.cpp:386
9191145 msgid "clears the command history"
9201146 msgstr "Baleira o historial de ordes."
9211147
922 #: ../../../src/MenuDevConsole.cpp:370
1148 #: ../../../src/MenuDevConsole.cpp:387
9231149 msgid "displays this text"
9241150 msgstr "Mostra este texto."
9251151
926 #: ../../../src/MenuDevConsole.cpp:377
1152 #: ../../../src/MenuDevConsole.cpp:394
9271153 msgid "Toggled the developer hud"
9281154 msgstr "Activou ou desactivou a interface de desenvolvedor."
9291155
930 #: ../../../src/MenuDevConsole.cpp:381
1156 #: ../../../src/MenuDevConsole.cpp:398
9311157 msgid "Toggled the hud"
9321158 msgstr ""
9331159
934 #: ../../../src/MenuDevConsole.cpp:385
1160 #: ../../../src/MenuDevConsole.cpp:402
9351161 msgid "Toggled the FPS counter"
9361162 msgstr ""
9371163
938 #: ../../../src/MenuDevConsole.cpp:534
1164 #: ../../../src/MenuDevConsole.cpp:552
9391165 msgid "ERROR: Incorrect number of arguments"
9401166 msgstr ""
9411167
942 #: ../../../src/MenuDevConsole.cpp:536 ../../../src/MenuDevConsole.cpp:564
1168 #: ../../../src/MenuDevConsole.cpp:554 ../../../src/MenuDevConsole.cpp:582
9431169 msgid "HINT:"
9441170 msgstr ""
9451171
946 #: ../../../src/MenuDevConsole.cpp:536
1172 #: ../../../src/MenuDevConsole.cpp:554
9471173 msgid "<id>"
9481174 msgstr ""
9491175
950 #: ../../../src/MenuDevConsole.cpp:552
1176 #: ../../../src/MenuDevConsole.cpp:570
9511177 #, c-format
9521178 msgid "ERROR: '%s' is not a valid event key"
9531179 msgstr ""
9541180
955 #: ../../../src/MenuDevConsole.cpp:562
1181 #: ../../../src/MenuDevConsole.cpp:580
9561182 msgid "ERROR: Too few arguments"
9571183 msgstr "Erro: Non hai argumentos dabondo."
9581184
959 #: ../../../src/MenuDevConsole.cpp:564
1185 #: ../../../src/MenuDevConsole.cpp:582
9601186 msgid "<key>=<val> <key>=<val> ..."
9611187 msgstr ""
9621188
963 #: ../../../src/MenuDevConsole.cpp:569
1189 #: ../../../src/MenuDevConsole.cpp:587
9641190 msgid "ERROR: Unknown command"
9651191 msgstr "Erro: Orde descoñecida"
9661192
967 #: ../../../src/MenuDevConsole.cpp:571
1193 #: ../../../src/MenuDevConsole.cpp:589
9681194 msgid "HINT: Type help"
9691195 msgstr ""
9701196
971 #: ../../../src/MenuEnemy.cpp:138
1197 #: ../../../src/MenuEnemy.cpp:162
9721198 #, c-format
9731199 msgid "%s level %d"
9741200 msgstr "%s (nivel %d)"
9751201
976 #: ../../../src/MenuEnemy.cpp:162
1202 #: ../../../src/MenuEnemy.cpp:186
9771203 msgid "Dead"
9781204 msgstr "Morto"
9791205
980 #: ../../../src/MenuEnemy.cpp:164
1206 #: ../../../src/MenuEnemy.cpp:188
9811207 msgid "Destroyed"
9821208 msgstr ""
9831209
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
1210 #: ../../../src/MenuGameOver.cpp:69
1211 msgid "Game Over"
1212 msgstr ""
1213
1214 #: ../../../src/MenuInventory.cpp:178
10051215 #, c-format
10061216 msgid "Lost %d%% of %s."
10071217 msgstr ""
10081218
1009 #: ../../../src/MenuInventory.cpp:195
1219 #: ../../../src/MenuInventory.cpp:185
10101220 #, c-format
10111221 msgid "Lost %d%% of total XP."
10121222 msgstr ""
10131223
1014 #: ../../../src/MenuInventory.cpp:200
1224 #: ../../../src/MenuInventory.cpp:190
10151225 #, c-format
10161226 msgid "Lost %d%% of current level XP."
10171227 msgstr ""
10181228
1019 #: ../../../src/MenuInventory.cpp:226
1229 #: ../../../src/MenuInventory.cpp:216
10201230 #, c-format
10211231 msgid "Lost %s."
10221232 msgstr "Perdiches %s."
10231233
1024 #: ../../../src/MenuInventory.cpp:274 ../../../src/MenuStash.cpp:146
1234 #: ../../../src/MenuInventory.cpp:258 ../../../src/MenuStash.cpp:276
10251235 #, c-format
10261236 msgid "%d %s"
10271237 msgstr "%d %s"
10281238
1029 #: ../../../src/MenuInventory.cpp:317
1239 #: ../../../src/MenuInventory.cpp:301
10301240 msgid "Pick up item(s):"
10311241 msgstr ""
10321242
1033 #: ../../../src/MenuInventory.cpp:318
1243 #: ../../../src/MenuInventory.cpp:302
10341244 msgid "Use or equip item:"
10351245 msgstr ""
10361246
1037 #: ../../../src/MenuInventory.cpp:319
1247 #: ../../../src/MenuInventory.cpp:303
10381248 #, c-format
10391249 msgid "%s modifiers"
10401250 msgstr ""
10411251
1042 #: ../../../src/MenuInventory.cpp:320
1252 #: ../../../src/MenuInventory.cpp:304
10431253 msgid "Select a quantity of item:"
10441254 msgstr ""
10451255
1046 #: ../../../src/MenuInventory.cpp:323
1256 #: ../../../src/MenuInventory.cpp:307
10471257 msgid "Stash item stack:"
10481258 msgstr ""
10491259
1050 #: ../../../src/MenuInventory.cpp:325
1260 #: ../../../src/MenuInventory.cpp:309
10511261 msgid "Sell item stack:"
10521262 msgstr ""
10531263
1054 #: ../../../src/MenuInventory.cpp:592
1264 #: ../../../src/MenuInventory.cpp:576
10551265 msgid "You don't have enough of the required item."
10561266 msgstr "Non ten unha cantidade suficiente do elemento necesario."
10571267
1058 #: ../../../src/MenuInventory.cpp:599
1268 #: ../../../src/MenuInventory.cpp:588
10591269 msgid "You can't use this item right now."
10601270 msgstr ""
10611271
1062 #: ../../../src/MenuInventory.cpp:611
1272 #: ../../../src/MenuInventory.cpp:600
10631273 msgid "This item can only be used from the action bar."
10641274 msgstr "Este obxecto só pode empregarse desde a barra de acción."
10651275
1066 #: ../../../src/MenuInventory.cpp:729
1276 #: ../../../src/MenuInventory.cpp:718
10671277 msgid "Inventory is full."
10681278 msgstr "O inventario está cheo."
10691279
1070 #: ../../../src/MenuInventory.cpp:849
1280 #: ../../../src/MenuInventory.cpp:843
10711281 #, c-format
10721282 msgid "Not enough %s."
10731283 msgstr "Non tes %s dabondo."
10741284
1075 #: ../../../src/MenuInventory.cpp:869 ../../../src/MenuInventory.cpp:876
1285 #: ../../../src/MenuInventory.cpp:863 ../../../src/MenuInventory.cpp:870
10761286 msgid "This item can not be sold."
10771287 msgstr ""
10781288
10841294 msgid "Quests"
10851295 msgstr "Misións"
10861296
1087 #: ../../../src/MenuManager.cpp:286
1297 #: ../../../src/MenuManager.cpp:305
10881298 #, c-format
10891299 msgid "XP: %d/%d"
10901300 msgstr "Experiencia: %d/%d"
10911301
1092 #: ../../../src/MenuManager.cpp:827
1302 #: ../../../src/MenuManager.cpp:875
10931303 msgid "This item can not be dropped."
1304 msgstr ""
1305
1306 #: ../../../src/MenuManager.cpp:1501
1307 msgid "Equipped"
1308 msgstr ""
1309
1310 #: ../../../src/MenuMovementType.cpp:87
1311 msgid "Select a Movement Type"
1312 msgstr ""
1313
1314 #: ../../../src/MenuMovementType.cpp:89
1315 msgid "Can be changed later in the Configuration menu."
1316 msgstr ""
1317
1318 #: ../../../src/MenuMovementType.cpp:92 ../../../src/MenuMovementType.cpp:122
1319 msgid "Keyboard"
1320 msgstr ""
1321
1322 #: ../../../src/MenuMovementType.cpp:93 ../../../src/MenuMovementType.cpp:128
1323 msgid "Mouse"
1324 msgstr ""
1325
1326 #: ../../../src/MenuMovementType.cpp:129
1327 msgid "Button"
10941328 msgstr ""
10951329
10961330 #: ../../../src/MenuNumPicker.cpp:59
10971331 msgid "Enter amount:"
10981332 msgstr ""
10991333
1100 #: ../../../src/MenuPowers.cpp:787
1334 #: ../../../src/MenuPowers.cpp:894
11011335 msgid "Passive"
11021336 msgstr ""
11031337
1104 #: ../../../src/MenuPowers.cpp:792
1338 #: ../../../src/MenuPowers.cpp:901
11051339 #, c-format
11061340 msgid "Costs %d MP"
11071341 msgstr "Consume %d de enerxía"
11081342
1109 #: ../../../src/MenuPowers.cpp:796
1343 #: ../../../src/MenuPowers.cpp:905
11101344 #, c-format
11111345 msgid "Costs %d HP"
11121346 msgstr "Consume %d de vida"
11131347
1114 #: ../../../src/MenuPowers.cpp:801
1348 #: ../../../src/MenuPowers.cpp:909
11151349 msgid "Cooldown:"
11161350 msgstr ""
11171351
1118 #: ../../../src/MenuPowers.cpp:866 ../../../src/MenuPowers.cpp:869
1352 #: ../../../src/MenuPowers.cpp:960 ../../../src/MenuPowers.cpp:963
11191353 msgid "Damage per second"
11201354 msgstr ""
11211355
1122 #: ../../../src/MenuPowers.cpp:872 ../../../src/MenuPowers.cpp:875
1356 #: ../../../src/MenuPowers.cpp:966 ../../../src/MenuPowers.cpp:969
11231357 msgid "HP per second"
11241358 msgstr ""
11251359
1126 #: ../../../src/MenuPowers.cpp:878 ../../../src/MenuPowers.cpp:881
1360 #: ../../../src/MenuPowers.cpp:972 ../../../src/MenuPowers.cpp:975
11271361 msgid "MP per second"
11281362 msgstr ""
11291363
1130 #: ../../../src/MenuPowers.cpp:885
1364 #: ../../../src/MenuPowers.cpp:979
11311365 msgid "Immobilize"
11321366 msgstr ""
11331367
1134 #: ../../../src/MenuPowers.cpp:893
1368 #: ../../../src/MenuPowers.cpp:987
11351369 msgid "Immunity"
11361370 msgstr ""
11371371
1138 #: ../../../src/MenuPowers.cpp:896
1372 #: ../../../src/MenuPowers.cpp:990
11391373 msgid "Immunity to damage over time"
11401374 msgstr ""
11411375
1142 #: ../../../src/MenuPowers.cpp:899
1376 #: ../../../src/MenuPowers.cpp:993
11431377 msgid "Immunity to slow"
11441378 msgstr ""
11451379
1146 #: ../../../src/MenuPowers.cpp:902
1380 #: ../../../src/MenuPowers.cpp:996
11471381 msgid "Immunity to stun"
11481382 msgstr ""
11491383
1150 #: ../../../src/MenuPowers.cpp:905
1384 #: ../../../src/MenuPowers.cpp:999
11511385 msgid "Immunity to HP steal"
11521386 msgstr ""
11531387
1154 #: ../../../src/MenuPowers.cpp:908
1388 #: ../../../src/MenuPowers.cpp:1002
11551389 msgid "Immunity to MP steal"
11561390 msgstr ""
11571391
1158 #: ../../../src/MenuPowers.cpp:911
1392 #: ../../../src/MenuPowers.cpp:1005
11591393 msgid "Immunity to knockback"
11601394 msgstr ""
11611395
1162 #: ../../../src/MenuPowers.cpp:914
1396 #: ../../../src/MenuPowers.cpp:1008
11631397 msgid "Immunity to damage reflection"
11641398 msgstr ""
11651399
1166 #: ../../../src/MenuPowers.cpp:917
1400 #: ../../../src/MenuPowers.cpp:1014
11671401 msgid "Stun"
11681402 msgstr ""
11691403
1170 #: ../../../src/MenuPowers.cpp:920
1404 #: ../../../src/MenuPowers.cpp:1017
11711405 msgid "Automatic revive on death"
11721406 msgstr ""
11731407
1174 #: ../../../src/MenuPowers.cpp:923
1408 #: ../../../src/MenuPowers.cpp:1020
11751409 msgid "Convert"
11761410 msgstr ""
11771411
1178 #: ../../../src/MenuPowers.cpp:926
1412 #: ../../../src/MenuPowers.cpp:1023
11791413 msgid "Fear"
11801414 msgstr ""
11811415
1182 #: ../../../src/MenuPowers.cpp:929
1416 #: ../../../src/MenuPowers.cpp:1026
11831417 msgid "Lifespan"
11841418 msgstr ""
11851419
1186 #: ../../../src/MenuPowers.cpp:953
1420 #: ../../../src/MenuPowers.cpp:1050
11871421 msgid "Magical Shield"
11881422 msgstr ""
11891423
1190 #: ../../../src/MenuPowers.cpp:982
1424 #: ../../../src/MenuPowers.cpp:1079
11911425 msgid "Healing"
11921426 msgstr ""
11931427
1194 #: ../../../src/MenuPowers.cpp:985
1428 #: ../../../src/MenuPowers.cpp:1082
11951429 msgid "Knockback"
11961430 msgstr ""
11971431
1198 #: ../../../src/MenuPowers.cpp:1010
1432 #: ../../../src/MenuPowers.cpp:1106
11991433 #, c-format
12001434 msgid "%d%% chance"
12011435 msgstr ""
12021436
1203 #: ../../../src/MenuPowers.cpp:1062
1437 #: ../../../src/MenuPowers.cpp:1158
12041438 msgid "Base Accuracy"
12051439 msgstr ""
12061440
1207 #: ../../../src/MenuPowers.cpp:1082
1441 #: ../../../src/MenuPowers.cpp:1178
12081442 msgid "Base Critical Chance"
12091443 msgstr ""
12101444
1211 #: ../../../src/MenuPowers.cpp:1090
1445 #: ../../../src/MenuPowers.cpp:1186
12121446 msgid "Ignores Absorbtion"
12131447 msgstr ""
12141448
1215 #: ../../../src/MenuPowers.cpp:1095
1449 #: ../../../src/MenuPowers.cpp:1191
12161450 msgid "Ignores Avoidance"
12171451 msgstr ""
12181452
1219 #: ../../../src/MenuPowers.cpp:1100
1453 #: ../../../src/MenuPowers.cpp:1196
12201454 #, c-format
12211455 msgid "%d%% Chance to crit slowed targets"
12221456 msgstr ""
12231457
1224 #: ../../../src/MenuPowers.cpp:1105
1458 #: ../../../src/MenuPowers.cpp:1201
12251459 #, c-format
12261460 msgid "Elemental Damage (%s)"
12271461 msgstr ""
12281462
1229 #: ../../../src/MenuPowers.cpp:1114
1463 #: ../../../src/MenuPowers.cpp:1210
12301464 #, c-format
12311465 msgid "Requires a %s"
12321466 msgstr "Require unha unidade de %s."
12331467
1234 #: ../../../src/MenuPowers.cpp:1151 ../../../src/MenuPowers.cpp:1154
1468 #: ../../../src/MenuPowers.cpp:1248 ../../../src/MenuPowers.cpp:1251
12351469 #, c-format
12361470 msgid "Requires Power: %s"
12371471 msgstr "Require a habilidade «%s»."
12381472
1239 #: ../../../src/MenuPowers.cpp:1163
1473 #: ../../../src/MenuPowers.cpp:1260
12401474 msgid "Click to Unlock (uses 1 Skill Point)"
12411475 msgstr ""
12421476
1243 #: ../../../src/MenuPowers.cpp:1167 ../../../src/MenuPowers.cpp:1169
1477 #: ../../../src/MenuPowers.cpp:1264 ../../../src/MenuPowers.cpp:1266
12441478 msgid "Requires 1 Skill Point"
12451479 msgstr ""
12461480
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
1481 #: ../../../src/MenuPowers.cpp:1466
1482 #, c-format
1483 msgid "Available skill points: %d"
1484 msgstr ""
1485
1486 #: ../../../src/MenuPowers.cpp:1498
12581487 msgid "Next Level:"
12591488 msgstr "Seguinte nivel:"
12601489
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
1490 #: ../../../src/MenuStash.cpp:80 ../../../src/MenuStash.cpp:161
1491 msgid "Stash"
1492 msgstr ""
1493
1494 #: ../../../src/MenuStash.cpp:174 ../../../src/MenuStash.cpp:188
1495 msgid "Private"
1496 msgstr ""
1497
1498 #: ../../../src/MenuStash.cpp:175
1499 msgid "Shared"
1500 msgstr ""
1501
1502 #: ../../../src/MenuStash.cpp:340
1503 msgid "This item can not be stored in the stash."
1504 msgstr ""
1505
1506 #: ../../../src/MenuStash.cpp:345
1507 msgid "This item can not be stored in the private stash."
1508 msgstr ""
1509
1510 #: ../../../src/MenuStash.cpp:350
1511 msgid "This item can not be stored in the shared stash."
1512 msgstr ""
1513
1514 #: ../../../src/MenuStash.cpp:360
12701515 msgid "Stash is full."
12711516 msgstr ""
12721517
1273 #: ../../../src/MenuTalker.cpp:454
1518 #: ../../../src/MenuStash.cpp:414
1519 #, c-format
1520 msgid "Can not store item in stash: %s"
1521 msgstr ""
1522
1523 #: ../../../src/MenuTalker.cpp:448
1524 #, c-format
1525 msgid "<dialog node %d>"
1526 msgstr ""
1527
1528 #: ../../../src/MenuTalker.cpp:456
12741529 msgid "Trade"
12751530 msgstr "Comercio"
12761531
1277 #: ../../../src/MenuVendor.cpp:58
1532 #: ../../../src/MenuVendor.cpp:60
12781533 msgid "Buyback"
12791534 msgstr "Recuperar"
12801535
1281 #: ../../../src/MenuVendor.cpp:279
1536 #: ../../../src/MenuVendor.cpp:283
12821537 msgid "Vendor"
12831538 msgstr "Vendedor"
12841539
1285 #: ../../../src/PowerManager.cpp:1136
1540 #: ../../../src/PowerManager.cpp:1204
12861541 #, c-format
12871542 msgid "+%d Shield"
12881543 msgstr "+%d de escudo"
12891544
1290 #: ../../../src/PowerManager.cpp:1392
1545 #: ../../../src/PowerManager.cpp:1461
12911546 msgid "You are already transformed, untransform first."
12921547 msgstr "Xa estás transformado, primeiro recupera a forma orixinal."
12931548
1294 #: ../../../src/PowerManager.cpp:1404
1549 #: ../../../src/PowerManager.cpp:1473
12951550 msgid "Could not untransform at this position."
12961551 msgstr ""
12971552
12991554 msgid "Completed Quests"
13001555 msgstr ""
13011556
1302 #: ../../../src/SaveLoad.cpp:243 ../../../src/SaveLoad.cpp:244
1557 #: ../../../src/SaveLoad.cpp:250 ../../../src/SaveLoad.cpp:251
13031558 msgid "Game saved."
13041559 msgstr "Gardouse a partida."
13051560
1306 #: ../../../src/SDLInputState.cpp:582
1561 #: ../../../src/SDLInputState.cpp:645
1562 msgid "BkSp"
1563 msgstr ""
1564
1565 #: ../../../src/SDLInputState.cpp:646
1566 msgid "Caps"
1567 msgstr ""
1568
1569 #: ../../../src/SDLInputState.cpp:647
1570 msgid "Del"
1571 msgstr ""
1572
1573 #: ../../../src/SDLInputState.cpp:649 ../../../src/SDLInputState.cpp:679
1574 msgid "End"
1575 msgstr ""
1576
1577 #: ../../../src/SDLInputState.cpp:650
1578 msgid "Esc"
1579 msgstr ""
1580
1581 #: ../../../src/SDLInputState.cpp:651 ../../../src/SDLInputState.cpp:681
1582 msgid "Home"
1583 msgstr ""
1584
1585 #: ../../../src/SDLInputState.cpp:652
1586 msgid "Ins"
1587 msgstr ""
1588
1589 #: ../../../src/SDLInputState.cpp:653
1590 msgid "LAlt"
1591 msgstr ""
1592
1593 #: ../../../src/SDLInputState.cpp:654
1594 msgid "LCtrl"
1595 msgstr ""
1596
1597 #: ../../../src/SDLInputState.cpp:656
1598 msgid "LShft"
1599 msgstr ""
1600
1601 #: ../../../src/SDLInputState.cpp:657
1602 msgid "Num"
1603 msgstr ""
1604
1605 #: ../../../src/SDLInputState.cpp:658
1606 msgid "PgDn"
1607 msgstr ""
1608
1609 #: ../../../src/SDLInputState.cpp:659
1610 msgid "PgUp"
1611 msgstr ""
1612
1613 #: ../../../src/SDLInputState.cpp:660 ../../../src/SDLInputState.cpp:690
1614 msgid "Pause"
1615 msgstr ""
1616
1617 #: ../../../src/SDLInputState.cpp:661
1618 msgid "Print"
1619 msgstr ""
1620
1621 #: ../../../src/SDLInputState.cpp:662
1622 msgid "RAlt"
1623 msgstr ""
1624
1625 #: ../../../src/SDLInputState.cpp:663
1626 msgid "RCtrl"
1627 msgstr ""
1628
1629 #: ../../../src/SDLInputState.cpp:664
1630 msgid "Ret"
1631 msgstr ""
1632
1633 #: ../../../src/SDLInputState.cpp:666
1634 msgid "RShft"
1635 msgstr ""
1636
1637 #: ../../../src/SDLInputState.cpp:667
1638 msgid "SLock"
1639 msgstr ""
1640
1641 #: ../../../src/SDLInputState.cpp:668
1642 msgid "Spc"
1643 msgstr ""
1644
1645 #: ../../../src/SDLInputState.cpp:669 ../../../src/SDLInputState.cpp:699
1646 msgid "Tab"
1647 msgstr ""
1648
1649 #: ../../../src/SDLInputState.cpp:675
13071650 msgid "Backspace"
13081651 msgstr ""
13091652
1310 #: ../../../src/SDLInputState.cpp:583
1653 #: ../../../src/SDLInputState.cpp:676
13111654 msgid "CapsLock"
13121655 msgstr ""
13131656
1314 #: ../../../src/SDLInputState.cpp:586
1315 msgid "End"
1316 msgstr ""
1317
1318 #: ../../../src/SDLInputState.cpp:587
1657 #: ../../../src/SDLInputState.cpp:680
13191658 msgid "Escape"
13201659 msgstr ""
13211660
1322 #: ../../../src/SDLInputState.cpp:588
1323 msgid "Home"
1324 msgstr ""
1325
1326 #: ../../../src/SDLInputState.cpp:589
1661 #: ../../../src/SDLInputState.cpp:682
13271662 msgid "Insert"
13281663 msgstr ""
13291664
1330 #: ../../../src/SDLInputState.cpp:590
1665 #: ../../../src/SDLInputState.cpp:683
13311666 msgid "Left Alt"
13321667 msgstr ""
13331668
1334 #: ../../../src/SDLInputState.cpp:591
1669 #: ../../../src/SDLInputState.cpp:684
13351670 msgid "Left Ctrl"
13361671 msgstr ""
13371672
1338 #: ../../../src/SDLInputState.cpp:593
1673 #: ../../../src/SDLInputState.cpp:686
13391674 msgid "Left Shift"
13401675 msgstr ""
13411676
1342 #: ../../../src/SDLInputState.cpp:594
1677 #: ../../../src/SDLInputState.cpp:687
13431678 msgid "NumLock"
13441679 msgstr ""
13451680
1346 #: ../../../src/SDLInputState.cpp:595
1681 #: ../../../src/SDLInputState.cpp:688
13471682 msgid "PageDown"
13481683 msgstr ""
13491684
1350 #: ../../../src/SDLInputState.cpp:596
1685 #: ../../../src/SDLInputState.cpp:689
13511686 msgid "PageUp"
13521687 msgstr ""
13531688
1354 #: ../../../src/SDLInputState.cpp:597
1355 msgid "Pause"
1356 msgstr ""
1357
1358 #: ../../../src/SDLInputState.cpp:598
1689 #: ../../../src/SDLInputState.cpp:691
13591690 msgid "PrintScreen"
13601691 msgstr ""
13611692
1362 #: ../../../src/SDLInputState.cpp:599
1693 #: ../../../src/SDLInputState.cpp:692
13631694 msgid "Right Alt"
13641695 msgstr ""
13651696
1366 #: ../../../src/SDLInputState.cpp:600
1697 #: ../../../src/SDLInputState.cpp:693
13671698 msgid "Right Ctrl"
13681699 msgstr ""
13691700
1370 #: ../../../src/SDLInputState.cpp:601
1701 #: ../../../src/SDLInputState.cpp:694
13711702 msgid "Return"
13721703 msgstr ""
13731704
1374 #: ../../../src/SDLInputState.cpp:603
1705 #: ../../../src/SDLInputState.cpp:696
13751706 msgid "Right Shift"
13761707 msgstr ""
13771708
1378 #: ../../../src/SDLInputState.cpp:604
1709 #: ../../../src/SDLInputState.cpp:697
13791710 msgid "ScrollLock"
13801711 msgstr ""
13811712
1382 #: ../../../src/SDLInputState.cpp:605
1713 #: ../../../src/SDLInputState.cpp:698
13831714 msgid "Space"
13841715 msgstr ""
13851716
1386 #: ../../../src/SDLInputState.cpp:606
1387 msgid "Tab"
1388 msgstr ""
1389
1390 #: ../../../src/SDLInputState.cpp:620
1717 #: ../../../src/SDLInputState.cpp:712
1718 #, c-format
1719 msgid "M%d"
1720 msgstr ""
1721
1722 #: ../../../src/SDLInputState.cpp:718
13911723 #, c-format
13921724 msgid "Mouse %d"
13931725 msgstr ""
13941726
1395 #: ../../../src/SDLInputState.cpp:628
1727 #: ../../../src/SDLInputState.cpp:728
1728 #, c-format
1729 msgid "JX%d-"
1730 msgstr ""
1731
1732 #: ../../../src/SDLInputState.cpp:730
13961733 #, c-format
13971734 msgid "Axis %d -"
13981735 msgstr ""
13991736
1400 #: ../../../src/SDLInputState.cpp:630
1737 #: ../../../src/SDLInputState.cpp:734
1738 #, c-format
1739 msgid "JX%d+"
1740 msgstr ""
1741
1742 #: ../../../src/SDLInputState.cpp:736
14011743 #, c-format
14021744 msgid "Axis %d +"
14031745 msgstr ""
14041746
1405 #: ../../../src/SDLInputState.cpp:633
1747 #: ../../../src/SDLInputState.cpp:741
1748 #, c-format
1749 msgid "JB%d"
1750 msgstr ""
1751
1752 #: ../../../src/SDLInputState.cpp:743
14061753 #, c-format
14071754 msgid "Button %d"
14081755 msgstr "Botón %d"
14091756
1410 #: ../../../src/SDLInputState.cpp:637
1411 msgid "(none)"
1412 msgstr "(ningún)"
1413
1414 #: ../../../src/SDLInputState.cpp:677
1757 #: ../../../src/SDLInputState.cpp:789
14151758 msgid "Touch control D-Pad"
14161759 msgstr ""
14171760
1418 #: ../../../src/SDLInputState.cpp:701
1761 #: ../../../src/SDLInputState.cpp:812
14191762 msgid "Touch control buttons"
14201763 msgstr ""
14211764
1422 #: ../../../src/SDLInputState.cpp:716
1765 #: ../../../src/SDLInputState.cpp:826
14231766 msgid "Tap"
14241767 msgstr ""
14251768
1426 #: ../../../src/SDLInputState.cpp:760 ../../../src/SDLInputState.cpp:764
1427 #: ../../../src/SDLInputState.cpp:768
1769 #: ../../../src/SDLInputState.cpp:878 ../../../src/SDLInputState.cpp:880
1770 #, c-format
1771 msgid "Can not bind: %s"
1772 msgstr ""
1773
1774 #: ../../../src/SDLInputState.cpp:892 ../../../src/SDLInputState.cpp:896
1775 #: ../../../src/SDLInputState.cpp:900
14281776 #, c-format
14291777 msgid "'%s' is no longer bound to:"
14301778 msgstr ""
15831931 msgid "Base MP"
15841932 msgstr ""
15851933
1586 #: ../../../src/Utils.cpp:346
1934 #: ../../../src/Utils.cpp:365
15871935 msgid "k"
15881936 msgstr "k"
15891937
1590 #: ../../../src/Utils.cpp:580
1938 #: ../../../src/Utils.cpp:635
15911939 #, c-format
15921940 msgid "%s second"
15931941 msgstr ""
15941942
1595 #: ../../../src/Utils.cpp:583
1943 #: ../../../src/Utils.cpp:638
15961944 #, c-format
15971945 msgid "%s seconds"
15981946 msgstr ""
+0
-1603
mods/default/languages/engine.he.po less more
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: 2018-11-17 21:50-0500\n"
11 "PO-Revision-Date: 2018-03-28 19:16+0000\n"
12 "Language-Team: Hebrew (https://www.transifex.com/flareorg/teams/84925/he/)\n"
13 "MIME-Version: 1.0\n"
14 "Content-Type: text/plain; charset=UTF-8\n"
15 "Content-Transfer-Encoding: 8bit\n"
16 "Language: he\n"
17 "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"
18
19 #: ../../../src/Avatar.cpp:367
20 #, c-format
21 msgid "Congratulations, you have reached level %d!"
22 msgstr ""
23
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
37 msgid "Transformation expired. You have been moved back to a safe place."
38 msgstr ""
39
40 #: ../../../src/CampaignManager.cpp:153
41 #, c-format
42 msgid "%d %s removed."
43 msgstr ""
44
45 #: ../../../src/CampaignManager.cpp:162
46 #, c-format
47 msgid "%s removed."
48 msgstr ""
49
50 #: ../../../src/CampaignManager.cpp:175
51 #, c-format
52 msgid "You receive %s."
53 msgstr ""
54
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
66 #, c-format
67 msgid "You receive %d XP."
68 msgstr ""
69
70 #: ../../../src/CampaignManager.cpp:201
71 msgid "HP restored."
72 msgstr ""
73
74 #: ../../../src/CampaignManager.cpp:205
75 msgid "MP restored."
76 msgstr ""
77
78 #: ../../../src/CampaignManager.cpp:210
79 msgid "HP and MP restored."
80 msgstr ""
81
82 #: ../../../src/CampaignManager.cpp:214
83 msgid "Negative effects removed."
84 msgstr ""
85
86 #: ../../../src/CampaignManager.cpp:220
87 msgid "HP and MP restored, negative effects removed"
88 msgstr ""
89
90 #: ../../../src/DeviceList.cpp:56
91 msgid ""
92 "SDL software renderer\n"
93 "\n"
94 "Often slower, but less likely to have issues."
95 msgstr ""
96
97 #: ../../../src/DeviceList.cpp:59
98 msgid ""
99 "SDL hardware renderer\n"
100 "\n"
101 "The default renderer that is often faster than the SDL software renderer."
102 msgstr ""
103
104 #: ../../../src/EngineSettings.cpp:561
105 msgid "Adventurer"
106 msgstr ""
107
108 #: ../../../src/Entity.cpp:511
109 msgid "miss"
110 msgstr ""
111
112 #: ../../../src/Entity.cpp:548 ../../../src/PowerManager.cpp:1152
113 #: ../../../src/StatBlock.cpp:805 ../../../src/StatBlock.cpp:811
114 #, c-format
115 msgid "+%d HP"
116 msgstr ""
117
118 #: ../../../src/Entity.cpp:555 ../../../src/StatBlock.cpp:816
119 #: ../../../src/StatBlock.cpp:822
120 #, c-format
121 msgid "+%d MP"
122 msgstr ""
123
124 #: ../../../src/EventManager.cpp:738
125 msgid "Unknown destination"
126 msgstr ""
127
128 #: ../../../src/GameStateConfigBase.cpp:89
129 #: ../../../src/GameStateConfigBase.cpp:110
130 msgid "Defaults"
131 msgstr ""
132
133 #: ../../../src/GameStateConfigBase.cpp:89
134 msgid "Reset ALL settings?"
135 msgstr ""
136
137 #: ../../../src/GameStateConfigBase.cpp:109 ../../../src/MenuNumPicker.cpp:49
138 msgid "OK"
139 msgstr ""
140
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
148 msgid "Audio"
149 msgstr ""
150
151 #: ../../../src/GameStateConfigBase.cpp:161
152 #: ../../../src/GameStateConfigDesktop.cpp:131
153 msgid "Interface"
154 msgstr ""
155
156 #: ../../../src/GameStateConfigBase.cpp:162
157 #: ../../../src/GameStateConfigDesktop.cpp:134
158 msgid "Mods"
159 msgstr ""
160
161 #: ../../../src/GameStateConfigBase.cpp:249 ../../../src/MenuExit.cpp:72
162 msgid "Music Volume"
163 msgstr ""
164
165 #: ../../../src/GameStateConfigBase.cpp:253 ../../../src/MenuExit.cpp:77
166 msgid "Sound Volume"
167 msgstr ""
168
169 #: ../../../src/GameStateConfigBase.cpp:257
170 msgid "Language"
171 msgstr ""
172
173 #: ../../../src/GameStateConfigBase.cpp:266
174 msgid "Show FPS"
175 msgstr ""
176
177 #: ../../../src/GameStateConfigBase.cpp:270
178 msgid "Colorblind Mode"
179 msgstr ""
180
181 #: ../../../src/GameStateConfigBase.cpp:274
182 msgid "Hardware mouse cursor"
183 msgstr ""
184
185 #: ../../../src/GameStateConfigBase.cpp:278
186 msgid "Developer Mode"
187 msgstr ""
188
189 #: ../../../src/GameStateConfigBase.cpp:282
190 msgid "Subtitles"
191 msgstr ""
192
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
248 msgid ""
249 "Will try to store surfaces in video memory versus system memory. The effect "
250 "this has on performance depends on the renderer."
251 msgstr ""
252
253 #: ../../../src/GameStateConfigDesktop.cpp:189
254 msgid ""
255 "Prevents screen tearing. Disable if you experience \"stuttering\" in "
256 "windowed mode or input lag."
257 msgstr ""
258
259 #: ../../../src/GameStateConfigDesktop.cpp:190
260 msgid ""
261 "When enabled, this uses the screen DPI in addition to the window dimensions "
262 "to scale the rendering resolution. Otherwise, only the window dimensions are"
263 " used."
264 msgstr ""
265
266 #: ../../../src/GameStateConfigDesktop.cpp:191
267 msgid ""
268 "This enables parallax (non-tile) layers. Disabling this setting can improve "
269 "performance in some cases."
270 msgstr ""
271
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
815 msgid "Execute"
816 msgstr ""
817
818 #: ../../../src/MenuDevConsole.cpp:101 ../../../src/MenuDevConsole.cpp:151
819 msgid "Developer Console"
820 msgstr ""
821
822 #: ../../../src/MenuDevConsole.cpp:141
823 #, c-format
824 msgid "Use '%s' to inspect with the cursor."
825 msgstr ""
826
827 #: ../../../src/MenuDevConsole.cpp:146
828 msgid "Arguments with spaces should be enclosed with double quotes. Example:"
829 msgstr ""
830
831 #: ../../../src/MenuDevConsole.cpp:147
832 msgid "Type 'help' to get a list of commands."
833 msgstr ""
834
835 #: ../../../src/MenuDevConsole.cpp:209 ../../../src/MenuDevConsole.cpp:213
836 msgid "px"
837 msgstr ""
838
839 #: ../../../src/MenuDevConsole.cpp:224
840 msgid "Distance"
841 msgstr ""
842
843 #: ../../../src/MenuDevConsole.cpp:239 ../../../src/MenuDevConsole.cpp:286
844 msgid "Entity"
845 msgstr ""
846
847 #: ../../../src/MenuDevConsole.cpp:261 ../../../src/MenuDevConsole.cpp:268
848 msgid "none"
849 msgstr ""
850
851 #: ../../../src/MenuDevConsole.cpp:262 ../../../src/MenuDevConsole.cpp:264
852 msgid "wall"
853 msgstr ""
854
855 #: ../../../src/MenuDevConsole.cpp:263 ../../../src/MenuDevConsole.cpp:265
856 msgid "short wall / pit"
857 msgstr ""
858
859 #: ../../../src/MenuDevConsole.cpp:266
860 msgid "entity"
861 msgstr ""
862
863 #: ../../../src/MenuDevConsole.cpp:267
864 msgid "entity, ally"
865 msgstr ""
866
867 #: ../../../src/MenuDevConsole.cpp:274
868 msgid "Tile"
869 msgstr ""
870
871 #: ../../../src/MenuDevConsole.cpp:360
872 msgid "adds a power to the action bar"
873 msgstr ""
874
875 #: ../../../src/MenuDevConsole.cpp:361
876 msgid "turns on/off the display of the FPS counter"
877 msgstr ""
878
879 #: ../../../src/MenuDevConsole.cpp:362
880 msgid "turns on/off all of the HUD elements"
881 msgstr ""
882
883 #: ../../../src/MenuDevConsole.cpp:363
884 msgid "turns on/off the developer hud"
885 msgstr ""
886
887 #: ../../../src/MenuDevConsole.cpp:364
888 msgid ""
889 "Prints a list of powers that match a search term. No search term will list "
890 "all items"
891 msgstr ""
892
893 #: ../../../src/MenuDevConsole.cpp:365
894 msgid "Prints out all the map filenames located in the \"maps/\" directory."
895 msgstr ""
896
897 #: ../../../src/MenuDevConsole.cpp:366
898 msgid ""
899 "Prints out the active campaign statuses that match a search term. No search "
900 "term will list all active statuses"
901 msgstr ""
902
903 #: ../../../src/MenuDevConsole.cpp:367
904 msgid ""
905 "Prints a list of items that match a search term. No search term will list "
906 "all items"
907 msgstr ""
908
909 #: ../../../src/MenuDevConsole.cpp:368
910 msgid ""
911 "parses a series of event components and executes them as a single event"
912 msgstr ""
913
914 #: ../../../src/MenuDevConsole.cpp:369
915 msgid "clears the command history"
916 msgstr ""
917
918 #: ../../../src/MenuDevConsole.cpp:370
919 msgid "displays this text"
920 msgstr ""
921
922 #: ../../../src/MenuDevConsole.cpp:377
923 msgid "Toggled the developer hud"
924 msgstr ""
925
926 #: ../../../src/MenuDevConsole.cpp:381
927 msgid "Toggled the hud"
928 msgstr ""
929
930 #: ../../../src/MenuDevConsole.cpp:385
931 msgid "Toggled the FPS counter"
932 msgstr ""
933
934 #: ../../../src/MenuDevConsole.cpp:534
935 msgid "ERROR: Incorrect number of arguments"
936 msgstr ""
937
938 #: ../../../src/MenuDevConsole.cpp:536 ../../../src/MenuDevConsole.cpp:564
939 msgid "HINT:"
940 msgstr ""
941
942 #: ../../../src/MenuDevConsole.cpp:536
943 msgid "<id>"
944 msgstr ""
945
946 #: ../../../src/MenuDevConsole.cpp:552
947 #, c-format
948 msgid "ERROR: '%s' is not a valid event key"
949 msgstr ""
950
951 #: ../../../src/MenuDevConsole.cpp:562
952 msgid "ERROR: Too few arguments"
953 msgstr ""
954
955 #: ../../../src/MenuDevConsole.cpp:564
956 msgid "<key>=<val> <key>=<val> ..."
957 msgstr ""
958
959 #: ../../../src/MenuDevConsole.cpp:569
960 msgid "ERROR: Unknown command"
961 msgstr ""
962
963 #: ../../../src/MenuDevConsole.cpp:571
964 msgid "HINT: Type help"
965 msgstr ""
966
967 #: ../../../src/MenuEnemy.cpp:138
968 #, c-format
969 msgid "%s level %d"
970 msgstr ""
971
972 #: ../../../src/MenuEnemy.cpp:162
973 msgid "Dead"
974 msgstr ""
975
976 #: ../../../src/MenuEnemy.cpp:164
977 msgid "Destroyed"
978 msgstr ""
979
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
1001 #, c-format
1002 msgid "Lost %d%% of %s."
1003 msgstr ""
1004
1005 #: ../../../src/MenuInventory.cpp:195
1006 #, c-format
1007 msgid "Lost %d%% of total XP."
1008 msgstr ""
1009
1010 #: ../../../src/MenuInventory.cpp:200
1011 #, c-format
1012 msgid "Lost %d%% of current level XP."
1013 msgstr ""
1014
1015 #: ../../../src/MenuInventory.cpp:226
1016 #, c-format
1017 msgid "Lost %s."
1018 msgstr ""
1019
1020 #: ../../../src/MenuInventory.cpp:274 ../../../src/MenuStash.cpp:146
1021 #, c-format
1022 msgid "%d %s"
1023 msgstr ""
1024
1025 #: ../../../src/MenuInventory.cpp:317
1026 msgid "Pick up item(s):"
1027 msgstr ""
1028
1029 #: ../../../src/MenuInventory.cpp:318
1030 msgid "Use or equip item:"
1031 msgstr ""
1032
1033 #: ../../../src/MenuInventory.cpp:319
1034 #, c-format
1035 msgid "%s modifiers"
1036 msgstr ""
1037
1038 #: ../../../src/MenuInventory.cpp:320
1039 msgid "Select a quantity of item:"
1040 msgstr ""
1041
1042 #: ../../../src/MenuInventory.cpp:323
1043 msgid "Stash item stack:"
1044 msgstr ""
1045
1046 #: ../../../src/MenuInventory.cpp:325
1047 msgid "Sell item stack:"
1048 msgstr ""
1049
1050 #: ../../../src/MenuInventory.cpp:592
1051 msgid "You don't have enough of the required item."
1052 msgstr ""
1053
1054 #: ../../../src/MenuInventory.cpp:599
1055 msgid "You can't use this item right now."
1056 msgstr ""
1057
1058 #: ../../../src/MenuInventory.cpp:611
1059 msgid "This item can only be used from the action bar."
1060 msgstr ""
1061
1062 #: ../../../src/MenuInventory.cpp:729
1063 msgid "Inventory is full."
1064 msgstr ""
1065
1066 #: ../../../src/MenuInventory.cpp:849
1067 #, c-format
1068 msgid "Not enough %s."
1069 msgstr ""
1070
1071 #: ../../../src/MenuInventory.cpp:869 ../../../src/MenuInventory.cpp:876
1072 msgid "This item can not be sold."
1073 msgstr ""
1074
1075 #: ../../../src/MenuLog.cpp:91
1076 msgid "Notes"
1077 msgstr ""
1078
1079 #: ../../../src/MenuLog.cpp:92
1080 msgid "Quests"
1081 msgstr ""
1082
1083 #: ../../../src/MenuManager.cpp:286
1084 #, c-format
1085 msgid "XP: %d/%d"
1086 msgstr ""
1087
1088 #: ../../../src/MenuManager.cpp:827
1089 msgid "This item can not be dropped."
1090 msgstr ""
1091
1092 #: ../../../src/MenuNumPicker.cpp:59
1093 msgid "Enter amount:"
1094 msgstr ""
1095
1096 #: ../../../src/MenuPowers.cpp:787
1097 msgid "Passive"
1098 msgstr ""
1099
1100 #: ../../../src/MenuPowers.cpp:792
1101 #, c-format
1102 msgid "Costs %d MP"
1103 msgstr ""
1104
1105 #: ../../../src/MenuPowers.cpp:796
1106 #, c-format
1107 msgid "Costs %d HP"
1108 msgstr ""
1109
1110 #: ../../../src/MenuPowers.cpp:801
1111 msgid "Cooldown:"
1112 msgstr ""
1113
1114 #: ../../../src/MenuPowers.cpp:866 ../../../src/MenuPowers.cpp:869
1115 msgid "Damage per second"
1116 msgstr ""
1117
1118 #: ../../../src/MenuPowers.cpp:872 ../../../src/MenuPowers.cpp:875
1119 msgid "HP per second"
1120 msgstr ""
1121
1122 #: ../../../src/MenuPowers.cpp:878 ../../../src/MenuPowers.cpp:881
1123 msgid "MP per second"
1124 msgstr ""
1125
1126 #: ../../../src/MenuPowers.cpp:885
1127 msgid "Immobilize"
1128 msgstr ""
1129
1130 #: ../../../src/MenuPowers.cpp:893
1131 msgid "Immunity"
1132 msgstr ""
1133
1134 #: ../../../src/MenuPowers.cpp:896
1135 msgid "Immunity to damage over time"
1136 msgstr ""
1137
1138 #: ../../../src/MenuPowers.cpp:899
1139 msgid "Immunity to slow"
1140 msgstr ""
1141
1142 #: ../../../src/MenuPowers.cpp:902
1143 msgid "Immunity to stun"
1144 msgstr ""
1145
1146 #: ../../../src/MenuPowers.cpp:905
1147 msgid "Immunity to HP steal"
1148 msgstr ""
1149
1150 #: ../../../src/MenuPowers.cpp:908
1151 msgid "Immunity to MP steal"
1152 msgstr ""
1153
1154 #: ../../../src/MenuPowers.cpp:911
1155 msgid "Immunity to knockback"
1156 msgstr ""
1157
1158 #: ../../../src/MenuPowers.cpp:914
1159 msgid "Immunity to damage reflection"
1160 msgstr ""
1161
1162 #: ../../../src/MenuPowers.cpp:917
1163 msgid "Stun"
1164 msgstr ""
1165
1166 #: ../../../src/MenuPowers.cpp:920
1167 msgid "Automatic revive on death"
1168 msgstr ""
1169
1170 #: ../../../src/MenuPowers.cpp:923
1171 msgid "Convert"
1172 msgstr ""
1173
1174 #: ../../../src/MenuPowers.cpp:926
1175 msgid "Fear"
1176 msgstr ""
1177
1178 #: ../../../src/MenuPowers.cpp:929
1179 msgid "Lifespan"
1180 msgstr ""
1181
1182 #: ../../../src/MenuPowers.cpp:953
1183 msgid "Magical Shield"
1184 msgstr ""
1185
1186 #: ../../../src/MenuPowers.cpp:982
1187 msgid "Healing"
1188 msgstr ""
1189
1190 #: ../../../src/MenuPowers.cpp:985
1191 msgid "Knockback"
1192 msgstr ""
1193
1194 #: ../../../src/MenuPowers.cpp:1010
1195 #, c-format
1196 msgid "%d%% chance"
1197 msgstr ""
1198
1199 #: ../../../src/MenuPowers.cpp:1062
1200 msgid "Base Accuracy"
1201 msgstr ""
1202
1203 #: ../../../src/MenuPowers.cpp:1082
1204 msgid "Base Critical Chance"
1205 msgstr ""
1206
1207 #: ../../../src/MenuPowers.cpp:1090
1208 msgid "Ignores Absorbtion"
1209 msgstr ""
1210
1211 #: ../../../src/MenuPowers.cpp:1095
1212 msgid "Ignores Avoidance"
1213 msgstr ""
1214
1215 #: ../../../src/MenuPowers.cpp:1100
1216 #, c-format
1217 msgid "%d%% Chance to crit slowed targets"
1218 msgstr ""
1219
1220 #: ../../../src/MenuPowers.cpp:1105
1221 #, c-format
1222 msgid "Elemental Damage (%s)"
1223 msgstr ""
1224
1225 #: ../../../src/MenuPowers.cpp:1114
1226 #, c-format
1227 msgid "Requires a %s"
1228 msgstr ""
1229
1230 #: ../../../src/MenuPowers.cpp:1151 ../../../src/MenuPowers.cpp:1154
1231 #, c-format
1232 msgid "Requires Power: %s"
1233 msgstr ""
1234
1235 #: ../../../src/MenuPowers.cpp:1163
1236 msgid "Click to Unlock (uses 1 Skill Point)"
1237 msgstr ""
1238
1239 #: ../../../src/MenuPowers.cpp:1167 ../../../src/MenuPowers.cpp:1169
1240 msgid "Requires 1 Skill Point"
1241 msgstr ""
1242
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
1254 msgid "Next Level:"
1255 msgstr ""
1256
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
1266 msgid "Stash is full."
1267 msgstr ""
1268
1269 #: ../../../src/MenuTalker.cpp:454
1270 msgid "Trade"
1271 msgstr ""
1272
1273 #: ../../../src/MenuVendor.cpp:58
1274 msgid "Buyback"
1275 msgstr ""
1276
1277 #: ../../../src/MenuVendor.cpp:279
1278 msgid "Vendor"
1279 msgstr ""
1280
1281 #: ../../../src/PowerManager.cpp:1136
1282 #, c-format
1283 msgid "+%d Shield"
1284 msgstr ""
1285
1286 #: ../../../src/PowerManager.cpp:1392
1287 msgid "You are already transformed, untransform first."
1288 msgstr ""
1289
1290 #: ../../../src/PowerManager.cpp:1404
1291 msgid "Could not untransform at this position."
1292 msgstr ""
1293
1294 #: ../../../src/QuestLog.cpp:234
1295 msgid "Completed Quests"
1296 msgstr ""
1297
1298 #: ../../../src/SaveLoad.cpp:243 ../../../src/SaveLoad.cpp:244
1299 msgid "Game saved."
1300 msgstr ""
1301
1302 #: ../../../src/SDLInputState.cpp:582
1303 msgid "Backspace"
1304 msgstr ""
1305
1306 #: ../../../src/SDLInputState.cpp:583
1307 msgid "CapsLock"
1308 msgstr ""
1309
1310 #: ../../../src/SDLInputState.cpp:586
1311 msgid "End"
1312 msgstr ""
1313
1314 #: ../../../src/SDLInputState.cpp:587
1315 msgid "Escape"
1316 msgstr ""
1317
1318 #: ../../../src/SDLInputState.cpp:588
1319 msgid "Home"
1320 msgstr ""
1321
1322 #: ../../../src/SDLInputState.cpp:589
1323 msgid "Insert"
1324 msgstr ""
1325
1326 #: ../../../src/SDLInputState.cpp:590
1327 msgid "Left Alt"
1328 msgstr ""
1329
1330 #: ../../../src/SDLInputState.cpp:591
1331 msgid "Left Ctrl"
1332 msgstr ""
1333
1334 #: ../../../src/SDLInputState.cpp:593
1335 msgid "Left Shift"
1336 msgstr ""
1337
1338 #: ../../../src/SDLInputState.cpp:594
1339 msgid "NumLock"
1340 msgstr ""
1341
1342 #: ../../../src/SDLInputState.cpp:595
1343 msgid "PageDown"
1344 msgstr ""
1345
1346 #: ../../../src/SDLInputState.cpp:596
1347 msgid "PageUp"
1348 msgstr ""
1349
1350 #: ../../../src/SDLInputState.cpp:597
1351 msgid "Pause"
1352 msgstr ""
1353
1354 #: ../../../src/SDLInputState.cpp:598
1355 msgid "PrintScreen"
1356 msgstr ""
1357
1358 #: ../../../src/SDLInputState.cpp:599
1359 msgid "Right Alt"
1360 msgstr ""
1361
1362 #: ../../../src/SDLInputState.cpp:600
1363 msgid "Right Ctrl"
1364 msgstr ""
1365
1366 #: ../../../src/SDLInputState.cpp:601
1367 msgid "Return"
1368 msgstr ""
1369
1370 #: ../../../src/SDLInputState.cpp:603
1371 msgid "Right Shift"
1372 msgstr ""
1373
1374 #: ../../../src/SDLInputState.cpp:604
1375 msgid "ScrollLock"
1376 msgstr ""
1377
1378 #: ../../../src/SDLInputState.cpp:605
1379 msgid "Space"
1380 msgstr ""
1381
1382 #: ../../../src/SDLInputState.cpp:606
1383 msgid "Tab"
1384 msgstr ""
1385
1386 #: ../../../src/SDLInputState.cpp:620
1387 #, c-format
1388 msgid "Mouse %d"
1389 msgstr ""
1390
1391 #: ../../../src/SDLInputState.cpp:628
1392 #, c-format
1393 msgid "Axis %d -"
1394 msgstr ""
1395
1396 #: ../../../src/SDLInputState.cpp:630
1397 #, c-format
1398 msgid "Axis %d +"
1399 msgstr ""
1400
1401 #: ../../../src/SDLInputState.cpp:633
1402 #, c-format
1403 msgid "Button %d"
1404 msgstr ""
1405
1406 #: ../../../src/SDLInputState.cpp:637
1407 msgid "(none)"
1408 msgstr ""
1409
1410 #: ../../../src/SDLInputState.cpp:677
1411 msgid "Touch control D-Pad"
1412 msgstr ""
1413
1414 #: ../../../src/SDLInputState.cpp:701
1415 msgid "Touch control buttons"
1416 msgstr ""
1417
1418 #: ../../../src/SDLInputState.cpp:716
1419 msgid "Tap"
1420 msgstr ""
1421
1422 #: ../../../src/SDLInputState.cpp:760 ../../../src/SDLInputState.cpp:764
1423 #: ../../../src/SDLInputState.cpp:768
1424 #, c-format
1425 msgid "'%s' is no longer bound to:"
1426 msgstr ""
1427
1428 #: ../../../src/Stats.cpp:38
1429 msgid "Max HP"
1430 msgstr ""
1431
1432 #: ../../../src/Stats.cpp:39
1433 msgid "Total amount of HP."
1434 msgstr ""
1435
1436 #: ../../../src/Stats.cpp:43
1437 msgid "HP Regen"
1438 msgstr ""
1439
1440 #: ../../../src/Stats.cpp:44
1441 msgid "Ticks of HP regen per minute."
1442 msgstr ""
1443
1444 #: ../../../src/Stats.cpp:48
1445 msgid "Max MP"
1446 msgstr ""
1447
1448 #: ../../../src/Stats.cpp:49
1449 msgid "Total amount of MP."
1450 msgstr ""
1451
1452 #: ../../../src/Stats.cpp:53
1453 msgid "MP Regen"
1454 msgstr ""
1455
1456 #: ../../../src/Stats.cpp:54
1457 msgid "Ticks of MP regen per minute."
1458 msgstr ""
1459
1460 #: ../../../src/Stats.cpp:58
1461 msgid "Accuracy"
1462 msgstr ""
1463
1464 #: ../../../src/Stats.cpp:59
1465 msgid ""
1466 "Accuracy rating. The enemy's Avoidance rating is subtracted from this value "
1467 "to calculate your likeliness to land a direct hit."
1468 msgstr ""
1469
1470 #: ../../../src/Stats.cpp:63
1471 msgid "Avoidance"
1472 msgstr ""
1473
1474 #: ../../../src/Stats.cpp:64
1475 msgid ""
1476 "Avoidance rating. This value is subtracted from the enemy's Accuracy rating "
1477 "to calculate their likeliness to land a direct hit."
1478 msgstr ""
1479
1480 #: ../../../src/Stats.cpp:68
1481 msgid "Absorb Min"
1482 msgstr ""
1483
1484 #: ../../../src/Stats.cpp:69 ../../../src/Stats.cpp:74
1485 msgid "Reduces the amount of damage taken."
1486 msgstr ""
1487
1488 #: ../../../src/Stats.cpp:73
1489 msgid "Absorb Max"
1490 msgstr ""
1491
1492 #: ../../../src/Stats.cpp:78
1493 msgid "Critical Hit Chance"
1494 msgstr ""
1495
1496 #: ../../../src/Stats.cpp:79
1497 msgid "Chance for an attack to do extra damage."
1498 msgstr ""
1499
1500 #: ../../../src/Stats.cpp:83
1501 msgid "Bonus XP"
1502 msgstr ""
1503
1504 #: ../../../src/Stats.cpp:84
1505 msgid "Increases the XP gained per kill."
1506 msgstr ""
1507
1508 #: ../../../src/Stats.cpp:88
1509 #, c-format
1510 msgid "Bonus %s"
1511 msgstr ""
1512
1513 #: ../../../src/Stats.cpp:89
1514 #, c-format
1515 msgid "Increases the %s found per drop."
1516 msgstr ""
1517
1518 #: ../../../src/Stats.cpp:93
1519 msgid "Item Find Chance"
1520 msgstr ""
1521
1522 #: ../../../src/Stats.cpp:94
1523 msgid "Increases the chance that an enemy will drop an item."
1524 msgstr ""
1525
1526 #: ../../../src/Stats.cpp:98
1527 msgid "Stealth"
1528 msgstr ""
1529
1530 #: ../../../src/Stats.cpp:99
1531 msgid "Increases your ability to move undetected."
1532 msgstr ""
1533
1534 #: ../../../src/Stats.cpp:103
1535 msgid "Poise"
1536 msgstr ""
1537
1538 #: ../../../src/Stats.cpp:104
1539 msgid "Reduces your chance of stumbling when hit."
1540 msgstr ""
1541
1542 #: ../../../src/Stats.cpp:108
1543 msgid "Missile Reflect Chance"
1544 msgstr ""
1545
1546 #: ../../../src/Stats.cpp:109
1547 msgid "Increases your chance of reflecting missiles back at enemies."
1548 msgstr ""
1549
1550 #: ../../../src/Stats.cpp:113
1551 msgid "Damage Reflection"
1552 msgstr ""
1553
1554 #: ../../../src/Stats.cpp:114
1555 msgid "Deals a percentage of damage taken back to the attacker."
1556 msgstr ""
1557
1558 #: ../../../src/Stats.cpp:118
1559 msgid "HP Steal"
1560 msgstr ""
1561
1562 #: ../../../src/Stats.cpp:119
1563 msgid "Percentage of HP stolen per hit."
1564 msgstr ""
1565
1566 #: ../../../src/Stats.cpp:123
1567 msgid "MP Steal"
1568 msgstr ""
1569
1570 #: ../../../src/Stats.cpp:124
1571 msgid "Percentage of MP stolen per hit."
1572 msgstr ""
1573
1574 #: ../../../src/Stats.cpp:128
1575 msgid "Base HP"
1576 msgstr ""
1577
1578 #: ../../../src/Stats.cpp:133
1579 msgid "Base MP"
1580 msgstr ""
1581
1582 #: ../../../src/Utils.cpp:346
1583 msgid "k"
1584 msgstr ""
1585
1586 #: ../../../src/Utils.cpp:580
1587 #, c-format
1588 msgid "%s second"
1589 msgstr ""
1590
1591 #: ../../../src/Utils.cpp:583
1592 #, c-format
1593 msgid "%s seconds"
1594 msgstr ""
1595
1596 #: ../../../src/Version.cpp:139
1597 msgid "or newer"
1598 msgstr ""
1599
1600 #: ../../../src/Version.cpp:142
1601 msgid "or older"
1602 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-07-02 13:26-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:1220
130 #: ../../../src/StatBlock.cpp:926 ../../../src/StatBlock.cpp:932
131 #, c-format
132 msgid "+%d HP"
133 msgstr "+%d ÉP"
134
135 #: ../../../src/Entity.cpp:572 ../../../src/StatBlock.cpp:937
136 #: ../../../src/StatBlock.cpp:943
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:704
178 msgid "Entering game world..."
179 msgstr "Belépés a játék világába..."
180
181 #: ../../../src/GameStateLoad.cpp:707
182 msgid "Loading saved game..."
183 msgstr "Elmentett játék betöltése..."
184
185 #: ../../../src/GameStateLoad.cpp:740
186 msgid "Invalid save"
187 msgstr "Hibás mentés"
188
189 #: ../../../src/GameStateLoad.cpp:764 ../../../src/ItemManager.cpp:745
190 #: ../../../src/MenuPowers.cpp:882 ../../../src/MenuPowers.cpp:1241
191 #: ../../../src/MenuPowers.cpp:1653
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:254
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:670
251 #: ../../../src/SDLInputState.cpp:700
252 msgid "Up"
253 msgstr "Fel"
254
255 #: ../../../src/InputState.cpp:419 ../../../src/MenuMovementType.cpp:125
256 #: ../../../src/MenuMovementType.cpp:134 ../../../src/SDLInputState.cpp:648
257 #: ../../../src/SDLInputState.cpp:678
258 msgid "Down"
259 msgstr "Le"
260
261 #: ../../../src/InputState.cpp:420 ../../../src/MenuMovementType.cpp:124
262 #: ../../../src/MenuMovementType.cpp:133 ../../../src/SDLInputState.cpp:655
263 #: ../../../src/SDLInputState.cpp:685
264 msgid "Left"
265 msgstr "Balra"
266
267 #: ../../../src/InputState.cpp:421 ../../../src/MenuMovementType.cpp:126
268 #: ../../../src/MenuMovementType.cpp:135 ../../../src/SDLInputState.cpp:665
269 #: ../../../src/SDLInputState.cpp:695
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:159
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:677
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:981
410 #, c-format
411 msgid "%d%% Speed"
412 msgstr "%d%% sebesség"
413
414 #: ../../../src/ItemManager.cpp:650 ../../../src/MenuPowers.cpp:984
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:953
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:1228
450 #: ../../../src/MenuPowers.cpp:1231
451 #, c-format
452 msgid "Requires Level %d"
453 msgstr "%d szint kell hozzá"
454
455 #: ../../../src/ItemManager.cpp:836 ../../../src/MenuPowers.cpp:1220
456 #: ../../../src/MenuPowers.cpp:1222
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:898
487 msgid "Set:"
488 msgstr "Gyűjtemény:"
489
490 #: ../../../src/ItemManager.cpp:905
491 #, c-format
492 msgid "%d items:"
493 msgstr "%d tárgy:"
494
495 #: ../../../src/ItemManager.cpp:920
496 #, c-format
497 msgid "Press [%s] to read"
498 msgstr "Üsd le a [%s]-t az elolvasáshoz"
499
500 #: ../../../src/ItemManager.cpp:923
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:1256
577 msgid "Clear"
578 msgstr "Törlés"
579
580 #: ../../../src/MenuConfig.cpp:122 ../../../src/MenuConfig.cpp:1254
581 msgid "Assign:"
582 msgstr "Hozzáad:"
583
584 #: ../../../src/MenuConfig.cpp:123 ../../../src/MenuConfig.cpp:253
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:252 ../../../src/MenuNumPicker.cpp:49
593 msgid "OK"
594 msgstr ""
595
596 #: ../../../src/MenuConfig.cpp:256 ../../../src/MenuGameOver.cpp:72
597 msgid "Continue"
598 msgstr "Folytatás"
599
600 #: ../../../src/MenuConfig.cpp:258
601 msgid "Save Game"
602 msgstr ""
603
604 #: ../../../src/MenuConfig.cpp:301 ../../../src/MenuConfig.cpp:352
605 msgid "Default"
606 msgstr ""
607
608 #: ../../../src/MenuConfig.cpp:301
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:302
615 msgid "Show all"
616 msgstr ""
617
618 #: ../../../src/MenuConfig.cpp:302
619 msgid ""
620 "Always show loot tooltips. Temporarily hide all loot tooltips with 'Alt'."
621 msgstr ""
622
623 #: ../../../src/MenuConfig.cpp:303 ../../../src/MenuConfig.cpp:308
624 msgid "Hidden"
625 msgstr ""
626
627 #: ../../../src/MenuConfig.cpp:303
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:306
634 msgid "Visible"
635 msgstr ""
636
637 #: ../../../src/MenuConfig.cpp:307
638 msgid "Visible (2x zoom)"
639 msgstr ""
640
641 #: ../../../src/MenuConfig.cpp:311
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:312
648 msgid "- Display a message"
649 msgstr ""
650
651 #: ../../../src/MenuConfig.cpp:313
652 msgid "- Play a sound"
653 msgstr ""
654
655 #: ../../../src/MenuConfig.cpp:314
656 msgid "- Change the cursor"
657 msgstr ""
658
659 #: ../../../src/MenuConfig.cpp:316
660 msgid "Disabled"
661 msgstr ""
662
663 #: ../../../src/MenuConfig.cpp:317
664 msgid "All"
665 msgstr ""
666
667 #: ../../../src/MenuConfig.cpp:318
668 msgid "Message & Cursor"
669 msgstr ""
670
671 #: ../../../src/MenuConfig.cpp:319
672 msgid "Message & Sound"
673 msgstr ""
674
675 #: ../../../src/MenuConfig.cpp:320
676 msgid "Sound & Cursor"
677 msgstr ""
678
679 #: ../../../src/MenuConfig.cpp:321
680 msgid "Message"
681 msgstr ""
682
683 #: ../../../src/MenuConfig.cpp:322
684 msgid "Cursor"
685 msgstr ""
686
687 #: ../../../src/MenuConfig.cpp:323
688 msgid "Sound"
689 msgstr ""
690
691 #: ../../../src/MenuConfig.cpp:329
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:347
698 msgid "The maximum frame rate that the game will be allowed to run at."
699 msgstr ""
700
701 #: ../../../src/MenuConfig.cpp:351
702 msgid ""
703 "The render size refers to the height in pixels of the surface used to draw "
704 "the game. Mods define the allowed render sizes, but this option allows "
705 "overriding the maximum size."
706 msgstr ""
707
708 #: ../../../src/MenuConfig.cpp:374 ../../../src/MenuConfig.cpp:1679
709 #: ../../../src/MenuGameOver.cpp:116
710 msgid "Exit"
711 msgstr "Kilépés"
712
713 #: ../../../src/MenuConfig.cpp:375
714 msgid "Video"
715 msgstr "Videó"
716
717 #: ../../../src/MenuConfig.cpp:376
718 msgid "Audio"
719 msgstr "Hang"
720
721 #: ../../../src/MenuConfig.cpp:377
722 msgid "Interface"
723 msgstr "Felület"
724
725 #: ../../../src/MenuConfig.cpp:378
726 msgid "Input"
727 msgstr "Bemenet"
728
729 #: ../../../src/MenuConfig.cpp:379
730 msgid "Keybindings"
731 msgstr "Billentyűk"
732
733 #: ../../../src/MenuConfig.cpp:380
734 msgid "Mods"
735 msgstr "Modok"
736
737 #: ../../../src/MenuConfig.cpp:392
738 msgid "Paused"
739 msgstr "Megállítva"
740
741 #: ../../../src/MenuConfig.cpp:395
742 msgid "Time Played"
743 msgstr ""
744
745 #: ../../../src/MenuConfig.cpp:401
746 msgid "Renderer"
747 msgstr "Megjelenítő"
748
749 #: ../../../src/MenuConfig.cpp:402
750 msgid "Full Screen Mode"
751 msgstr "Teljes képernyő"
752
753 #: ../../../src/MenuConfig.cpp:403
754 msgid "Hardware surfaces"
755 msgstr "Hardveres felületek"
756
757 #: ../../../src/MenuConfig.cpp:404
758 msgid "V-Sync"
759 msgstr ""
760
761 #: ../../../src/MenuConfig.cpp:405
762 msgid "Texture Filtering"
763 msgstr "Textúra szűrő"
764
765 #: ../../../src/MenuConfig.cpp:406
766 msgid "DPI scaling"
767 msgstr "DPI skálázás"
768
769 #: ../../../src/MenuConfig.cpp:407
770 msgid "Parallax Layers"
771 msgstr ""
772
773 #: ../../../src/MenuConfig.cpp:408
774 msgid "Allow changing gamma"
775 msgstr "Gamma korrekció engedélyezés"
776
777 #: ../../../src/MenuConfig.cpp:409
778 msgid "Gamma"
779 msgstr ""
780
781 #: ../../../src/MenuConfig.cpp:410
782 msgid "Maximum Render Size"
783 msgstr ""
784
785 #: ../../../src/MenuConfig.cpp:411
786 msgid "Frame Limit"
787 msgstr ""
788
789 #: ../../../src/MenuConfig.cpp:413
790 msgid "Sound Volume"
791 msgstr "Effektek hangereje"
792
793 #: ../../../src/MenuConfig.cpp:414
794 msgid "Music Volume"
795 msgstr "Zene hangereje"
796
797 #: ../../../src/MenuConfig.cpp:416
798 msgid "Language"
799 msgstr "Nyelv"
800
801 #: ../../../src/MenuConfig.cpp:417
802 msgid "Show FPS"
803 msgstr "FPS mutatása"
804
805 #: ../../../src/MenuConfig.cpp:418
806 msgid "Hardware mouse cursor"
807 msgstr "Hardveres egérmutató"
808
809 #: ../../../src/MenuConfig.cpp:419
810 msgid "Colorblind Mode"
811 msgstr "Színvak mód"
812
813 #: ../../../src/MenuConfig.cpp:420
814 msgid "Developer Mode"
815 msgstr "Fejlesztői mód"
816
817 #: ../../../src/MenuConfig.cpp:421
818 msgid "Subtitles"
819 msgstr "Feliratok"
820
821 #: ../../../src/MenuConfig.cpp:422
822 msgid "Loot tooltip visibility"
823 msgstr ""
824
825 #: ../../../src/MenuConfig.cpp:423
826 msgid "Mini-map mode"
827 msgstr ""
828
829 #: ../../../src/MenuConfig.cpp:424
830 msgid "Always show stat bar labels"
831 msgstr "Mindig mutassa a státusz cimkéit"
832
833 #: ../../../src/MenuConfig.cpp:425
834 msgid "Allow stat bar auto-hiding"
835 msgstr ""
836
837 #: ../../../src/MenuConfig.cpp:426
838 msgid "Show combat text"
839 msgstr "Küzdelem kiírása szövegesen"
840
841 #: ../../../src/MenuConfig.cpp:427
842 msgid "Automatically equip items"
843 msgstr "Automatikusan használja a tárgyakat"
844
845 #: ../../../src/MenuConfig.cpp:428
846 msgid "Show hidden entity markers"
847 msgstr ""
848
849 #: ../../../src/MenuConfig.cpp:429
850 msgid "Low health notification"
851 msgstr ""
852
853 #: ../../../src/MenuConfig.cpp:430
854 msgid "Low health threshold"
855 msgstr ""
856
857 #: ../../../src/MenuConfig.cpp:431
858 msgid "Show item comparison tooltips"
859 msgstr ""
860
861 #: ../../../src/MenuConfig.cpp:434 ../../../src/MenuMovementType.cpp:94
862 #: ../../../src/MenuMovementType.cpp:131
863 msgid "Joystick"
864 msgstr "Botkormány"
865
866 #: ../../../src/MenuConfig.cpp:435
867 msgid "Move hero using mouse"
868 msgstr "Hős mozgatása egérrel"
869
870 #: ../../../src/MenuConfig.cpp:436
871 msgid "Mouse aim"
872 msgstr "Egérrel célzás"
873
874 #: ../../../src/MenuConfig.cpp:437
875 msgid "Do not use mouse"
876 msgstr "Ne használja az egeret"
877
878 #: ../../../src/MenuConfig.cpp:438
879 msgid "Swap mouse movement button"
880 msgstr ""
881
882 #: ../../../src/MenuConfig.cpp:439
883 msgid "Attack with mouse movement"
884 msgstr ""
885
886 #: ../../../src/MenuConfig.cpp:440
887 msgid "Joystick Deadzone"
888 msgstr "Botkormány holttér"
889
890 #: ../../../src/MenuConfig.cpp:441
891 msgid "Touch Controls"
892 msgstr ""
893
894 #: ../../../src/MenuConfig.cpp:442
895 msgid "Touch Gamepad Scaling"
896 msgstr ""
897
898 #: ../../../src/MenuConfig.cpp:452
899 #, c-format
900 msgid "Primary binding: %s"
901 msgstr ""
902
903 #: ../../../src/MenuConfig.cpp:453
904 #, c-format
905 msgid "Alternate binding: %s"
906 msgstr ""
907
908 #: ../../../src/MenuConfig.cpp:454
909 #, c-format
910 msgid "Joystick binding: %s"
911 msgstr ""
912
913 #: ../../../src/MenuConfig.cpp:556
914 msgid ""
915 "Will try to store surfaces in video memory versus system memory. The effect "
916 "this has on performance depends on the renderer."
917 msgstr ""
918 "A felületeket a videó memóriában próbálja tárolni a rendszermemória "
919 "helyett.A sebességnövekedés a megjelenítőtől is függ."
920
921 #: ../../../src/MenuConfig.cpp:557
922 msgid ""
923 "Prevents screen tearing. Disable if you experience \"stuttering\" in "
924 "windowed mode or input lag."
925 msgstr ""
926 "Megakadályozza a villogást. Kapcsold ki, ha szaggat ablakosmódban vagy "
927 "lassan reagál a bemenetre."
928
929 #: ../../../src/MenuConfig.cpp:558
930 msgid ""
931 "When enabled, this uses the screen DPI in addition to the window dimensions "
932 "to scale the rendering resolution. Otherwise, only the window dimensions are"
933 " used."
934 msgstr ""
935 "Ha be van kapcsolva, a képernyő DPI-t is használja a felbontás mellé, hogy a"
936 " végleges megjelenítést kiszámolja. Máskülönben csak az ablak mérete számít."
937
938 #: ../../../src/MenuConfig.cpp:559
939 msgid ""
940 "This enables parallax (non-tile) layers. Disabling this setting can improve "
941 "performance in some cases."
942 msgstr ""
943
944 #: ../../../src/MenuConfig.cpp:560
945 msgid ""
946 "Enables the below setting that controls the screen gamma level. The behavior"
947 " of the gamma setting can vary between platforms."
948 msgstr ""
949
950 #: ../../../src/MenuConfig.cpp:561
951 msgid ""
952 "Provides additional text for information that is primarily conveyed through "
953 "color."
954 msgstr ""
955
956 #: ../../../src/MenuConfig.cpp:562
957 msgid ""
958 "Some mods will automatically hide the stat bars when they are inactive. "
959 "Disabling this option will keep them displayed at all times."
960 msgstr ""
961
962 #: ../../../src/MenuConfig.cpp:563
963 msgid ""
964 "When enabled, empty equipment slots will be filled with applicable items "
965 "when they are obtained."
966 msgstr ""
967
968 #: ../../../src/MenuConfig.cpp:564
969 msgid ""
970 "Shows a marker above enemies, allies, and the player when they are obscured "
971 "by tall objects."
972 msgstr ""
973
974 #: ../../../src/MenuConfig.cpp:565
975 msgid ""
976 "When enabled, tooltips for equipped items of the same type are shown next to"
977 " standard item tooltips."
978 msgstr ""
979
980 #: ../../../src/MenuConfig.cpp:566
981 msgid ""
982 "This allows the game to be controlled entirely with the keyboard (or "
983 "joystick)."
984 msgstr ""
985
986 #: ../../../src/MenuConfig.cpp:567
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 #: ../../../src/MenuConfig.cpp:568
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 #: ../../../src/MenuConfig.cpp:569
1002 msgid ""
1003 "The player's attacks will be aimed in the direction of the mouse cursor when"
1004 " this is enabled."
1005 msgstr ""
1006
1007 #: ../../../src/MenuConfig.cpp:570
1008 msgid ""
1009 "When enabled, a virtual gamepad will be added in-game. Other interactions, "
1010 "such as drag-and-drop behavior, are also altered to better suit touch input."
1011 msgstr ""
1012
1013 #: ../../../src/MenuConfig.cpp:621
1014 msgid "Active Mods"
1015 msgstr "Aktív modok"
1016
1017 #: ../../../src/MenuConfig.cpp:630
1018 msgid "Available Mods"
1019 msgstr "Rendelkezésreálló modok"
1020
1021 #: ../../../src/MenuConfig.cpp:649
1022 msgid "<< Disable"
1023 msgstr "<< Kikapcsol"
1024
1025 #: ../../../src/MenuConfig.cpp:655
1026 msgid "Enable >>"
1027 msgstr "Bekapcsol >>"
1028
1029 #: ../../../src/MenuConfig.cpp:1536
1030 msgid "Version:"
1031 msgstr "Verzió:"
1032
1033 #: ../../../src/MenuConfig.cpp:1541
1034 msgid "Game:"
1035 msgstr "Játék:"
1036
1037 #: ../../../src/MenuConfig.cpp:1546
1038 msgid "Engine version:"
1039 msgstr "Motor verzió:"
1040
1041 #: ../../../src/MenuConfig.cpp:1554
1042 msgid "Requires mods:"
1043 msgstr "Szükséges modok:"
1044
1045 #: ../../../src/MenuConfig.cpp:1662 ../../../src/SDLInputState.cpp:750
1046 msgid "(none)"
1047 msgstr "(nincs)"
1048
1049 #: ../../../src/MenuConfig.cpp:1679 ../../../src/MenuGameOver.cpp:73
1050 msgid "Save & Exit"
1051 msgstr "Mentés, kilépés"
1052
1053 #: ../../../src/MenuDevConsole.cpp:65
1054 msgid "Execute"
1055 msgstr "Végrehajt"
1056
1057 #: ../../../src/MenuDevConsole.cpp:103 ../../../src/MenuDevConsole.cpp:153
1058 msgid "Developer Console"
1059 msgstr "Fejlesztői Konzol"
1060
1061 #: ../../../src/MenuDevConsole.cpp:143
1062 #, c-format
1063 msgid "Use '%s' to inspect with the cursor."
1064 msgstr "Használd a '%s'-t majd a kurzort a megvizsgáláshoz"
1065
1066 #: ../../../src/MenuDevConsole.cpp:148
1067 msgid "Arguments with spaces should be enclosed with double quotes. Example:"
1068 msgstr "A szóközöket tartalmazó paramétereket idézőjelbe kell tenni, pl:"
1069
1070 #: ../../../src/MenuDevConsole.cpp:149
1071 msgid "Type 'help' to get a list of commands."
1072 msgstr "A 'help'-re kilistázza a parancsokat."
1073
1074 #: ../../../src/MenuDevConsole.cpp:211 ../../../src/MenuDevConsole.cpp:215
1075 msgid "px"
1076 msgstr ""
1077
1078 #: ../../../src/MenuDevConsole.cpp:226
1079 msgid "Distance"
1080 msgstr "Távolság"
1081
1082 #: ../../../src/MenuDevConsole.cpp:241 ../../../src/MenuDevConsole.cpp:289
1083 #: ../../../src/MenuDevConsole.cpp:303
1084 msgid "Entity"
1085 msgstr "Entitás"
1086
1087 #: ../../../src/MenuDevConsole.cpp:263 ../../../src/MenuDevConsole.cpp:270
1088 msgid "none"
1089 msgstr "nincs"
1090
1091 #: ../../../src/MenuDevConsole.cpp:264 ../../../src/MenuDevConsole.cpp:266
1092 msgid "wall"
1093 msgstr "fal"
1094
1095 #: ../../../src/MenuDevConsole.cpp:265 ../../../src/MenuDevConsole.cpp:267
1096 msgid "short wall / pit"
1097 msgstr "rövid fal / verem"
1098
1099 #: ../../../src/MenuDevConsole.cpp:268
1100 msgid "entity"
1101 msgstr "entitás"
1102
1103 #: ../../../src/MenuDevConsole.cpp:269
1104 msgid "entity, ally"
1105 msgstr "entitás, barát"
1106
1107 #: ../../../src/MenuDevConsole.cpp:276
1108 msgid "Tile"
1109 msgstr ""
1110
1111 #: ../../../src/MenuDevConsole.cpp:377
1112 msgid "adds a power to the action bar"
1113 msgstr "hozzáad egy erőt az akció sávhoz"
1114
1115 #: ../../../src/MenuDevConsole.cpp:378
1116 msgid "turns on/off the display of the FPS counter"
1117 msgstr ""
1118
1119 #: ../../../src/MenuDevConsole.cpp:379
1120 msgid "turns on/off all of the HUD elements"
1121 msgstr "ki/bekapcsolja az összes infót"
1122
1123 #: ../../../src/MenuDevConsole.cpp:380
1124 msgid "turns on/off the developer hud"
1125 msgstr "ki/bekapcsolja a fejlesztői infókat"
1126
1127 #: ../../../src/MenuDevConsole.cpp:381
1128 msgid ""
1129 "Prints a list of powers that match a search term. No search term will list "
1130 "all items"
1131 msgstr "Kilistázza a keresésnek megfelelő erőket. Keresés nélkül az összeset."
1132
1133 #: ../../../src/MenuDevConsole.cpp:382
1134 msgid "Prints out all the map filenames located in the \"maps/\" directory."
1135 msgstr "Kilistázza a 'maps' mappában található térképeket."
1136
1137 #: ../../../src/MenuDevConsole.cpp:383
1138 msgid ""
1139 "Prints out the active campaign statuses that match a search term. No search "
1140 "term will list all active statuses"
1141 msgstr ""
1142 "Kilistázza a keresésnek megfelelő aktív kampány státuszokat. Keresés "
1143 "nélkülmindet"
1144
1145 #: ../../../src/MenuDevConsole.cpp:384
1146 msgid ""
1147 "Prints a list of items that match a search term. No search term will list "
1148 "all items"
1149 msgstr "Kilistázza a keresésnek megfelelő tárgyakat. Keresés nélkül mindet"
1150
1151 #: ../../../src/MenuDevConsole.cpp:385
1152 msgid ""
1153 "parses a series of event components and executes them as a single event"
1154 msgstr "kiértékel egy eseménysort, és egy egységes eseményként hajta végre"
1155
1156 #: ../../../src/MenuDevConsole.cpp:386
1157 msgid "clears the command history"
1158 msgstr "törli a parancssor történetet"
1159
1160 #: ../../../src/MenuDevConsole.cpp:387
1161 msgid "displays this text"
1162 msgstr "megjeleníti ezt"
1163
1164 #: ../../../src/MenuDevConsole.cpp:394
1165 msgid "Toggled the developer hud"
1166 msgstr "Fejlesztői infók kapcsolva"
1167
1168 #: ../../../src/MenuDevConsole.cpp:398
1169 msgid "Toggled the hud"
1170 msgstr "Infók kapcsolva"
1171
1172 #: ../../../src/MenuDevConsole.cpp:402
1173 msgid "Toggled the FPS counter"
1174 msgstr ""
1175
1176 #: ../../../src/MenuDevConsole.cpp:552
1177 msgid "ERROR: Incorrect number of arguments"
1178 msgstr "HIBA: hibás paraméterszám"
1179
1180 #: ../../../src/MenuDevConsole.cpp:554 ../../../src/MenuDevConsole.cpp:582
1181 msgid "HINT:"
1182 msgstr "TIPP:"
1183
1184 #: ../../../src/MenuDevConsole.cpp:554
1185 msgid "<id>"
1186 msgstr ""
1187
1188 #: ../../../src/MenuDevConsole.cpp:570
1189 #, c-format
1190 msgid "ERROR: '%s' is not a valid event key"
1191 msgstr "HIBA: '%s' nem egy eseménykulcs"
1192
1193 #: ../../../src/MenuDevConsole.cpp:580
1194 msgid "ERROR: Too few arguments"
1195 msgstr "HIBA: túl kevés paraméter"
1196
1197 #: ../../../src/MenuDevConsole.cpp:582
1198 msgid "<key>=<val> <key>=<val> ..."
1199 msgstr "<kulcs>=<érték> <kulcs>=<érték> ..."
1200
1201 #: ../../../src/MenuDevConsole.cpp:587
1202 msgid "ERROR: Unknown command"
1203 msgstr "HIBA: ismeretlen parancs"
1204
1205 #: ../../../src/MenuDevConsole.cpp:589
1206 msgid "HINT: Type help"
1207 msgstr "TIPP: használd a 'help'-et"
1208
1209 #: ../../../src/MenuEnemy.cpp:162
1210 #, c-format
1211 msgid "%s level %d"
1212 msgstr "%s %d. szint"
1213
1214 #: ../../../src/MenuEnemy.cpp:186
1215 msgid "Dead"
1216 msgstr "Halott"
1217
1218 #: ../../../src/MenuEnemy.cpp:188
1219 msgid "Destroyed"
1220 msgstr ""
1221
1222 #: ../../../src/MenuGameOver.cpp:69
1223 msgid "Game Over"
1224 msgstr ""
1225
1226 #: ../../../src/MenuInventory.cpp:178
1227 #, c-format
1228 msgid "Lost %d%% of %s."
1229 msgstr "Elveszett %d%% a %s-ból."
1230
1231 #: ../../../src/MenuInventory.cpp:185
1232 #, c-format
1233 msgid "Lost %d%% of total XP."
1234 msgstr "Elveszett %d%% a teljes TP-ból."
1235
1236 #: ../../../src/MenuInventory.cpp:190
1237 #, c-format
1238 msgid "Lost %d%% of current level XP."
1239 msgstr "Elveszett %d%% a szinten gyűjtött TP-ból."
1240
1241 #: ../../../src/MenuInventory.cpp:216
1242 #, c-format
1243 msgid "Lost %s."
1244 msgstr "Elveszett %s."
1245
1246 #: ../../../src/MenuInventory.cpp:258 ../../../src/MenuStash.cpp:276
1247 #, c-format
1248 msgid "%d %s"
1249 msgstr ""
1250
1251 #: ../../../src/MenuInventory.cpp:301
1252 msgid "Pick up item(s):"
1253 msgstr "Tárgyak felvétele:"
1254
1255 #: ../../../src/MenuInventory.cpp:302
1256 msgid "Use or equip item:"
1257 msgstr "Használd vagy hord:"
1258
1259 #: ../../../src/MenuInventory.cpp:303
1260 #, c-format
1261 msgid "%s modifiers"
1262 msgstr "%s módosító"
1263
1264 #: ../../../src/MenuInventory.cpp:304
1265 msgid "Select a quantity of item:"
1266 msgstr "Válassz mennyiséget:"
1267
1268 #: ../../../src/MenuInventory.cpp:307
1269 msgid "Stash item stack:"
1270 msgstr "Dugihelyre helyez:"
1271
1272 #: ../../../src/MenuInventory.cpp:309
1273 msgid "Sell item stack:"
1274 msgstr "Tárgy eladása:"
1275
1276 #: ../../../src/MenuInventory.cpp:576
1277 msgid "You don't have enough of the required item."
1278 msgstr "Nincs elegendő a szükséges tárgyból."
1279
1280 #: ../../../src/MenuInventory.cpp:588
1281 msgid "You can't use this item right now."
1282 msgstr "Most nem tudod ezt a tárgyat használni."
1283
1284 #: ../../../src/MenuInventory.cpp:600
1285 msgid "This item can only be used from the action bar."
1286 msgstr "Ezt csak az akció sávról használhatod."
1287
1288 #: ../../../src/MenuInventory.cpp:718
1289 msgid "Inventory is full."
1290 msgstr "Tele a hátizsák."
1291
1292 #: ../../../src/MenuInventory.cpp:843
1293 #, c-format
1294 msgid "Not enough %s."
1295 msgstr "Nincs elég %s."
1296
1297 #: ../../../src/MenuInventory.cpp:863 ../../../src/MenuInventory.cpp:870
1298 msgid "This item can not be sold."
1299 msgstr "Ezt nem lehet eladni."
1300
1301 #: ../../../src/MenuLog.cpp:91
1302 msgid "Notes"
1303 msgstr "Jegyzetek"
1304
1305 #: ../../../src/MenuLog.cpp:92
1306 msgid "Quests"
1307 msgstr "Küldetések"
1308
1309 #: ../../../src/MenuManager.cpp:305
1310 #, c-format
1311 msgid "XP: %d/%d"
1312 msgstr "TP: %d/%d"
1313
1314 #: ../../../src/MenuManager.cpp:875
1315 msgid "This item can not be dropped."
1316 msgstr "Ezt nem tudod lerakni."
1317
1318 #: ../../../src/MenuManager.cpp:1501
1319 msgid "Equipped"
1320 msgstr ""
1321
1322 #: ../../../src/MenuMovementType.cpp:87
1323 msgid "Select a Movement Type"
1324 msgstr ""
1325
1326 #: ../../../src/MenuMovementType.cpp:89
1327 msgid "Can be changed later in the Configuration menu."
1328 msgstr ""
1329
1330 #: ../../../src/MenuMovementType.cpp:92 ../../../src/MenuMovementType.cpp:122
1331 msgid "Keyboard"
1332 msgstr ""
1333
1334 #: ../../../src/MenuMovementType.cpp:93 ../../../src/MenuMovementType.cpp:128
1335 msgid "Mouse"
1336 msgstr ""
1337
1338 #: ../../../src/MenuMovementType.cpp:129
1339 msgid "Button"
1340 msgstr ""
1341
1342 #: ../../../src/MenuNumPicker.cpp:59
1343 msgid "Enter amount:"
1344 msgstr "Add meg a mennyiséget:"
1345
1346 #: ../../../src/MenuPowers.cpp:894
1347 msgid "Passive"
1348 msgstr "Passzív"
1349
1350 #: ../../../src/MenuPowers.cpp:901
1351 #, c-format
1352 msgid "Costs %d MP"
1353 msgstr "%d MP-be kerül"
1354
1355 #: ../../../src/MenuPowers.cpp:905
1356 #, c-format
1357 msgid "Costs %d HP"
1358 msgstr "%d ÉP-be kerül"
1359
1360 #: ../../../src/MenuPowers.cpp:909
1361 msgid "Cooldown:"
1362 msgstr "Lehűlés:"
1363
1364 #: ../../../src/MenuPowers.cpp:960 ../../../src/MenuPowers.cpp:963
1365 msgid "Damage per second"
1366 msgstr "Sebzés per másodperc"
1367
1368 #: ../../../src/MenuPowers.cpp:966 ../../../src/MenuPowers.cpp:969
1369 msgid "HP per second"
1370 msgstr "ÉP per másodperc"
1371
1372 #: ../../../src/MenuPowers.cpp:972 ../../../src/MenuPowers.cpp:975
1373 msgid "MP per second"
1374 msgstr "MP per másodperc"
1375
1376 #: ../../../src/MenuPowers.cpp:979
1377 msgid "Immobilize"
1378 msgstr "Megbénítás"
1379
1380 #: ../../../src/MenuPowers.cpp:987
1381 msgid "Immunity"
1382 msgstr "Immunitás"
1383
1384 #: ../../../src/MenuPowers.cpp:990
1385 msgid "Immunity to damage over time"
1386 msgstr "Idővel immunis a sebzésre"
1387
1388 #: ../../../src/MenuPowers.cpp:993
1389 msgid "Immunity to slow"
1390 msgstr "Immunis a lassításra"
1391
1392 #: ../../../src/MenuPowers.cpp:996
1393 msgid "Immunity to stun"
1394 msgstr "Immunis a bénításra"
1395
1396 #: ../../../src/MenuPowers.cpp:999
1397 msgid "Immunity to HP steal"
1398 msgstr "Immunis az ÉP lopásra"
1399
1400 #: ../../../src/MenuPowers.cpp:1002
1401 msgid "Immunity to MP steal"
1402 msgstr "Immunis az MP lopásra"
1403
1404 #: ../../../src/MenuPowers.cpp:1005
1405 msgid "Immunity to knockback"
1406 msgstr "Immunis a leütésre"
1407
1408 #: ../../../src/MenuPowers.cpp:1008
1409 msgid "Immunity to damage reflection"
1410 msgstr "Immunis a sebzésvisszaküldésre"
1411
1412 #: ../../../src/MenuPowers.cpp:1014
1413 msgid "Stun"
1414 msgstr "Bénítás"
1415
1416 #: ../../../src/MenuPowers.cpp:1017
1417 msgid "Automatic revive on death"
1418 msgstr "Halál esetén visszahoz"
1419
1420 #: ../../../src/MenuPowers.cpp:1020
1421 msgid "Convert"
1422 msgstr "Konvertálás"
1423
1424 #: ../../../src/MenuPowers.cpp:1023
1425 msgid "Fear"
1426 msgstr "Félelem"
1427
1428 #: ../../../src/MenuPowers.cpp:1026
1429 msgid "Lifespan"
1430 msgstr "Élettartam"
1431
1432 #: ../../../src/MenuPowers.cpp:1050
1433 msgid "Magical Shield"
1434 msgstr "Mágikus pajzs"
1435
1436 #: ../../../src/MenuPowers.cpp:1079
1437 msgid "Healing"
1438 msgstr "Gyógyítás"
1439
1440 #: ../../../src/MenuPowers.cpp:1082
1441 msgid "Knockback"
1442 msgstr "Leütés"
1443
1444 #: ../../../src/MenuPowers.cpp:1106
1445 #, c-format
1446 msgid "%d%% chance"
1447 msgstr "%d%% esély"
1448
1449 #: ../../../src/MenuPowers.cpp:1158
1450 msgid "Base Accuracy"
1451 msgstr "Alap pontosság"
1452
1453 #: ../../../src/MenuPowers.cpp:1178
1454 msgid "Base Critical Chance"
1455 msgstr "Alap kritikus találat"
1456
1457 #: ../../../src/MenuPowers.cpp:1186
1458 msgid "Ignores Absorbtion"
1459 msgstr "Felfogást kivédi"
1460
1461 #: ../../../src/MenuPowers.cpp:1191
1462 msgid "Ignores Avoidance"
1463 msgstr "Kitérést kivédi"
1464
1465 #: ../../../src/MenuPowers.cpp:1196
1466 #, c-format
1467 msgid "%d%% Chance to crit slowed targets"
1468 msgstr "%d%% esély a kritikusra lassítottnál"
1469
1470 #: ../../../src/MenuPowers.cpp:1201
1471 #, c-format
1472 msgid "Elemental Damage (%s)"
1473 msgstr ""
1474
1475 #: ../../../src/MenuPowers.cpp:1210
1476 #, c-format
1477 msgid "Requires a %s"
1478 msgstr "%s kell hozzá"
1479
1480 #: ../../../src/MenuPowers.cpp:1248 ../../../src/MenuPowers.cpp:1251
1481 #, c-format
1482 msgid "Requires Power: %s"
1483 msgstr "%s erő kell hozzá"
1484
1485 #: ../../../src/MenuPowers.cpp:1260
1486 msgid "Click to Unlock (uses 1 Skill Point)"
1487 msgstr "Kattint a feloldáshoz (1 tulajdonság pontért)"
1488
1489 #: ../../../src/MenuPowers.cpp:1264 ../../../src/MenuPowers.cpp:1266
1490 msgid "Requires 1 Skill Point"
1491 msgstr "1 tulajdonság pont kell hozzá"
1492
1493 #: ../../../src/MenuPowers.cpp:1466
1494 #, c-format
1495 msgid "Available skill points: %d"
1496 msgstr ""
1497
1498 #: ../../../src/MenuPowers.cpp:1498
1499 msgid "Next Level:"
1500 msgstr "Következő szint:"
1501
1502 #: ../../../src/MenuStash.cpp:80 ../../../src/MenuStash.cpp:161
1503 msgid "Stash"
1504 msgstr ""
1505
1506 #: ../../../src/MenuStash.cpp:174 ../../../src/MenuStash.cpp:188
1507 msgid "Private"
1508 msgstr ""
1509
1510 #: ../../../src/MenuStash.cpp:175
1511 msgid "Shared"
1512 msgstr ""
1513
1514 #: ../../../src/MenuStash.cpp:340
1515 msgid "This item can not be stored in the stash."
1516 msgstr ""
1517
1518 #: ../../../src/MenuStash.cpp:345
1519 msgid "This item can not be stored in the private stash."
1520 msgstr ""
1521
1522 #: ../../../src/MenuStash.cpp:350
1523 msgid "This item can not be stored in the shared stash."
1524 msgstr ""
1525
1526 #: ../../../src/MenuStash.cpp:360
1527 msgid "Stash is full."
1528 msgstr "Dugihely megtelt."
1529
1530 #: ../../../src/MenuStash.cpp:414
1531 #, c-format
1532 msgid "Can not store item in stash: %s"
1533 msgstr ""
1534
1535 #: ../../../src/MenuTalker.cpp:448
1536 #, c-format
1537 msgid "<dialog node %d>"
1538 msgstr ""
1539
1540 #: ../../../src/MenuTalker.cpp:456
1541 msgid "Trade"
1542 msgstr "Csere"
1543
1544 #: ../../../src/MenuVendor.cpp:60
1545 msgid "Buyback"
1546 msgstr "Visszavásárol"
1547
1548 #: ../../../src/MenuVendor.cpp:283
1549 msgid "Vendor"
1550 msgstr "Eladó"
1551
1552 #: ../../../src/PowerManager.cpp:1204
1553 #, c-format
1554 msgid "+%d Shield"
1555 msgstr "+%d pajzs"
1556
1557 #: ../../../src/PowerManager.cpp:1461
1558 msgid "You are already transformed, untransform first."
1559 msgstr "Már transzformáltál, változz vissza előbb."
1560
1561 #: ../../../src/PowerManager.cpp:1473
1562 msgid "Could not untransform at this position."
1563 msgstr "Itt nem lehet vissza változni."
1564
1565 #: ../../../src/QuestLog.cpp:234
1566 msgid "Completed Quests"
1567 msgstr ""
1568
1569 #: ../../../src/SaveLoad.cpp:250 ../../../src/SaveLoad.cpp:251
1570 msgid "Game saved."
1571 msgstr "Játék elmentve."
1572
1573 #: ../../../src/SDLInputState.cpp:645
1574 msgid "BkSp"
1575 msgstr ""
1576
1577 #: ../../../src/SDLInputState.cpp:646
1578 msgid "Caps"
1579 msgstr ""
1580
1581 #: ../../../src/SDLInputState.cpp:647
1582 msgid "Del"
1583 msgstr ""
1584
1585 #: ../../../src/SDLInputState.cpp:649 ../../../src/SDLInputState.cpp:679
1586 msgid "End"
1587 msgstr "Vége"
1588
1589 #: ../../../src/SDLInputState.cpp:650
1590 msgid "Esc"
1591 msgstr ""
1592
1593 #: ../../../src/SDLInputState.cpp:651 ../../../src/SDLInputState.cpp:681
1594 msgid "Home"
1595 msgstr "Eleje"
1596
1597 #: ../../../src/SDLInputState.cpp:652
1598 msgid "Ins"
1599 msgstr ""
1600
1601 #: ../../../src/SDLInputState.cpp:653
1602 msgid "LAlt"
1603 msgstr ""
1604
1605 #: ../../../src/SDLInputState.cpp:654
1606 msgid "LCtrl"
1607 msgstr ""
1608
1609 #: ../../../src/SDLInputState.cpp:656
1610 msgid "LShft"
1611 msgstr ""
1612
1613 #: ../../../src/SDLInputState.cpp:657
1614 msgid "Num"
1615 msgstr ""
1616
1617 #: ../../../src/SDLInputState.cpp:658
1618 msgid "PgDn"
1619 msgstr ""
1620
1621 #: ../../../src/SDLInputState.cpp:659
1622 msgid "PgUp"
1623 msgstr ""
1624
1625 #: ../../../src/SDLInputState.cpp:660 ../../../src/SDLInputState.cpp:690
1626 msgid "Pause"
1627 msgstr "Állj"
1628
1629 #: ../../../src/SDLInputState.cpp:661
1630 msgid "Print"
1631 msgstr ""
1632
1633 #: ../../../src/SDLInputState.cpp:662
1634 msgid "RAlt"
1635 msgstr ""
1636
1637 #: ../../../src/SDLInputState.cpp:663
1638 msgid "RCtrl"
1639 msgstr ""
1640
1641 #: ../../../src/SDLInputState.cpp:664
1642 msgid "Ret"
1643 msgstr ""
1644
1645 #: ../../../src/SDLInputState.cpp:666
1646 msgid "RShft"
1647 msgstr ""
1648
1649 #: ../../../src/SDLInputState.cpp:667
1650 msgid "SLock"
1651 msgstr ""
1652
1653 #: ../../../src/SDLInputState.cpp:668
1654 msgid "Spc"
1655 msgstr ""
1656
1657 #: ../../../src/SDLInputState.cpp:669 ../../../src/SDLInputState.cpp:699
1658 msgid "Tab"
1659 msgstr ""
1660
1661 #: ../../../src/SDLInputState.cpp:675
1662 msgid "Backspace"
1663 msgstr "Visszatörlés"
1664
1665 #: ../../../src/SDLInputState.cpp:676
1666 msgid "CapsLock"
1667 msgstr ""
1668
1669 #: ../../../src/SDLInputState.cpp:680
1670 msgid "Escape"
1671 msgstr ""
1672
1673 #: ../../../src/SDLInputState.cpp:682
1674 msgid "Insert"
1675 msgstr "Beszúr"
1676
1677 #: ../../../src/SDLInputState.cpp:683
1678 msgid "Left Alt"
1679 msgstr "Bal Alt"
1680
1681 #: ../../../src/SDLInputState.cpp:684
1682 msgid "Left Ctrl"
1683 msgstr "Bal Ctrl"
1684
1685 #: ../../../src/SDLInputState.cpp:686
1686 msgid "Left Shift"
1687 msgstr "Bal Shift"
1688
1689 #: ../../../src/SDLInputState.cpp:687
1690 msgid "NumLock"
1691 msgstr ""
1692
1693 #: ../../../src/SDLInputState.cpp:688
1694 msgid "PageDown"
1695 msgstr "LapozásLe"
1696
1697 #: ../../../src/SDLInputState.cpp:689
1698 msgid "PageUp"
1699 msgstr "LapozásFel"
1700
1701 #: ../../../src/SDLInputState.cpp:691
1702 msgid "PrintScreen"
1703 msgstr "Képernyőnyomtatás"
1704
1705 #: ../../../src/SDLInputState.cpp:692
1706 msgid "Right Alt"
1707 msgstr "Jobb Alt"
1708
1709 #: ../../../src/SDLInputState.cpp:693
1710 msgid "Right Ctrl"
1711 msgstr "Jobb Ctrl"
1712
1713 #: ../../../src/SDLInputState.cpp:694
1714 msgid "Return"
1715 msgstr "Kocsivissza"
1716
1717 #: ../../../src/SDLInputState.cpp:696
1718 msgid "Right Shift"
1719 msgstr "Jobb Shift"
1720
1721 #: ../../../src/SDLInputState.cpp:697
1722 msgid "ScrollLock"
1723 msgstr ""
1724
1725 #: ../../../src/SDLInputState.cpp:698
1726 msgid "Space"
1727 msgstr "Szóköz"
1728
1729 #: ../../../src/SDLInputState.cpp:712
1730 #, c-format
1731 msgid "M%d"
1732 msgstr ""
1733
1734 #: ../../../src/SDLInputState.cpp:718
1735 #, c-format
1736 msgid "Mouse %d"
1737 msgstr "Egér %d"
1738
1739 #: ../../../src/SDLInputState.cpp:728
1740 #, c-format
1741 msgid "JX%d-"
1742 msgstr ""
1743
1744 #: ../../../src/SDLInputState.cpp:730
1745 #, c-format
1746 msgid "Axis %d -"
1747 msgstr "Tengely %d -"
1748
1749 #: ../../../src/SDLInputState.cpp:734
1750 #, c-format
1751 msgid "JX%d+"
1752 msgstr ""
1753
1754 #: ../../../src/SDLInputState.cpp:736
1755 #, c-format
1756 msgid "Axis %d +"
1757 msgstr "Tengely %d +"
1758
1759 #: ../../../src/SDLInputState.cpp:741
1760 #, c-format
1761 msgid "JB%d"
1762 msgstr ""
1763
1764 #: ../../../src/SDLInputState.cpp:743
1765 #, c-format
1766 msgid "Button %d"
1767 msgstr "Gomb %d"
1768
1769 #: ../../../src/SDLInputState.cpp:789
1770 msgid "Touch control D-Pad"
1771 msgstr ""
1772
1773 #: ../../../src/SDLInputState.cpp:812
1774 msgid "Touch control buttons"
1775 msgstr ""
1776
1777 #: ../../../src/SDLInputState.cpp:826
1778 msgid "Tap"
1779 msgstr ""
1780
1781 #: ../../../src/SDLInputState.cpp:878 ../../../src/SDLInputState.cpp:880
1782 #, c-format
1783 msgid "Can not bind: %s"
1784 msgstr ""
1785
1786 #: ../../../src/SDLInputState.cpp:892 ../../../src/SDLInputState.cpp:896
1787 #: ../../../src/SDLInputState.cpp:900
1788 #, c-format
1789 msgid "'%s' is no longer bound to:"
1790 msgstr "'%s' nem kötődik ehhez: "
1791
1792 #: ../../../src/Stats.cpp:38
1793 msgid "Max HP"
1794 msgstr "Max ÉP"
1795
1796 #: ../../../src/Stats.cpp:39
1797 msgid "Total amount of HP."
1798 msgstr ""
1799
1800 #: ../../../src/Stats.cpp:43
1801 msgid "HP Regen"
1802 msgstr "ÉP gyógyulás"
1803
1804 #: ../../../src/Stats.cpp:44
1805 msgid "Ticks of HP regen per minute."
1806 msgstr "ÉP gyógyulás másodpercenként."
1807
1808 #: ../../../src/Stats.cpp:48
1809 msgid "Max MP"
1810 msgstr ""
1811
1812 #: ../../../src/Stats.cpp:49
1813 msgid "Total amount of MP."
1814 msgstr ""
1815
1816 #: ../../../src/Stats.cpp:53
1817 msgid "MP Regen"
1818 msgstr "MP töltés"
1819
1820 #: ../../../src/Stats.cpp:54
1821 msgid "Ticks of MP regen per minute."
1822 msgstr "MP töltés másodpercenként."
1823
1824 #: ../../../src/Stats.cpp:58
1825 msgid "Accuracy"
1826 msgstr "Pontosság"
1827
1828 #: ../../../src/Stats.cpp:59
1829 msgid ""
1830 "Accuracy rating. The enemy's Avoidance rating is subtracted from this value "
1831 "to calculate your likeliness to land a direct hit."
1832 msgstr ""
1833
1834 #: ../../../src/Stats.cpp:63
1835 msgid "Avoidance"
1836 msgstr "Kitérés"
1837
1838 #: ../../../src/Stats.cpp:64
1839 msgid ""
1840 "Avoidance rating. This value is subtracted from the enemy's Accuracy rating "
1841 "to calculate their likeliness to land a direct hit."
1842 msgstr ""
1843
1844 #: ../../../src/Stats.cpp:68
1845 msgid "Absorb Min"
1846 msgstr "Felfogás Min"
1847
1848 #: ../../../src/Stats.cpp:69 ../../../src/Stats.cpp:74
1849 msgid "Reduces the amount of damage taken."
1850 msgstr ""
1851
1852 #: ../../../src/Stats.cpp:73
1853 msgid "Absorb Max"
1854 msgstr "Felfogás Max"
1855
1856 #: ../../../src/Stats.cpp:78
1857 msgid "Critical Hit Chance"
1858 msgstr "Kritikus ütés esélye"
1859
1860 #: ../../../src/Stats.cpp:79
1861 msgid "Chance for an attack to do extra damage."
1862 msgstr ""
1863
1864 #: ../../../src/Stats.cpp:83
1865 msgid "Bonus XP"
1866 msgstr "Bónusz TP"
1867
1868 #: ../../../src/Stats.cpp:84
1869 msgid "Increases the XP gained per kill."
1870 msgstr "Növeli a TP-t minden győzelemnél."
1871
1872 #: ../../../src/Stats.cpp:88
1873 #, c-format
1874 msgid "Bonus %s"
1875 msgstr "Bónusz %s"
1876
1877 #: ../../../src/Stats.cpp:89
1878 #, c-format
1879 msgid "Increases the %s found per drop."
1880 msgstr "Növeli a %s-t találat esélyét lerakásnál."
1881
1882 #: ../../../src/Stats.cpp:93
1883 msgid "Item Find Chance"
1884 msgstr "Tárgytalálat esélye"
1885
1886 #: ../../../src/Stats.cpp:94
1887 msgid "Increases the chance that an enemy will drop an item."
1888 msgstr "Növeli az esélyét, hogy az ellenség elejt valamit."
1889
1890 #: ../../../src/Stats.cpp:98
1891 msgid "Stealth"
1892 msgstr "Lopakodás"
1893
1894 #: ../../../src/Stats.cpp:99
1895 msgid "Increases your ability to move undetected."
1896 msgstr "Növeli az esélyét, hogy ne vegyenek észre."
1897
1898 #: ../../../src/Stats.cpp:103
1899 msgid "Poise"
1900 msgstr "Tökösség"
1901
1902 #: ../../../src/Stats.cpp:104
1903 msgid "Reduces your chance of stumbling when hit."
1904 msgstr "Csökkenti az esélyét az ájulásnak ha eltalálnak."
1905
1906 #: ../../../src/Stats.cpp:108
1907 msgid "Missile Reflect Chance"
1908 msgstr "Lövedék elhárítás esélye"
1909
1910 #: ../../../src/Stats.cpp:109
1911 msgid "Increases your chance of reflecting missiles back at enemies."
1912 msgstr "Növeli az esélyét hogy visszaküldöd a lövedéket a támadóra."
1913
1914 #: ../../../src/Stats.cpp:113
1915 msgid "Damage Reflection"
1916 msgstr "Sebzés vissza"
1917
1918 #: ../../../src/Stats.cpp:114
1919 msgid "Deals a percentage of damage taken back to the attacker."
1920 msgstr "A sebzést adott százalékban a visszahárítja a támadóra."
1921
1922 #: ../../../src/Stats.cpp:118
1923 msgid "HP Steal"
1924 msgstr "ÉP lopás"
1925
1926 #: ../../../src/Stats.cpp:119
1927 msgid "Percentage of HP stolen per hit."
1928 msgstr "Ütésenként ellopott ÉP-k százalékban."
1929
1930 #: ../../../src/Stats.cpp:123
1931 msgid "MP Steal"
1932 msgstr "MP lopás"
1933
1934 #: ../../../src/Stats.cpp:124
1935 msgid "Percentage of MP stolen per hit."
1936 msgstr "Ütésenként ellopott MP-k százalékban."
1937
1938 #: ../../../src/Stats.cpp:128
1939 msgid "Base HP"
1940 msgstr "Alap ÉP"
1941
1942 #: ../../../src/Stats.cpp:133
1943 msgid "Base MP"
1944 msgstr "Alap MP"
1945
1946 #: ../../../src/Utils.cpp:365
1947 msgid "k"
1948 msgstr "k"
1949
1950 #: ../../../src/Utils.cpp:635
1951 #, c-format
1952 msgid "%s second"
1953 msgstr "%s másodperc"
1954
1955 #: ../../../src/Utils.cpp:638
1956 #, c-format
1957 msgid "%s seconds"
1958 msgstr "%s másodperc"
1959
1960 #: ../../../src/Version.cpp:139
1961 msgid "or newer"
1962 msgstr "vagy újabb"
1963
1964 #: ../../../src/Version.cpp:142
1965 msgid "or older"
1966 msgstr "vagy régebbi"
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 # Kirim Saja <kirim.aja1111@gmail.com>, 2021
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-07-02 13:26-0400\n"
14 "PO-Revision-Date: 2018-03-28 19:16+0000\n"
15 "Last-Translator: Kirim Saja <kirim.aja1111@gmail.com>, 2021\n"
16 "Language-Team: Indonesian (https://www.transifex.com/flareorg/teams/84925/id/)\n"
17 "MIME-Version: 1.0\n"
18 "Content-Type: text/plain; charset=UTF-8\n"
19 "Content-Transfer-Encoding: 8bit\n"
20 "Language: id\n"
21 "Plural-Forms: nplurals=1; plural=0;\n"
22
23 #: ../../../src/Avatar.cpp:391
24 msgid "Your health is low!"
25 msgstr "Kesehatan Anda rendah!"
26
27 #: ../../../src/Avatar.cpp:421
28 #, c-format
29 msgid "Congratulations, you have reached level %d!"
30 msgstr "Selamat, Anda telah mencapai level %d!"
31
32 #: ../../../src/Avatar.cpp:423
33 msgid "You may increase one or more attributes through the Character Menu."
34 msgstr ""
35 "Anda dapat meningkatkan satu atau lebih atribut melalui Menu Karakter."
36
37 #: ../../../src/Avatar.cpp:427
38 msgid "You may unlock one or more abilities through the Powers Menu."
39 msgstr "Anda dapat membuka satu atau lebih kemampuan melalui Menu Kekuatan."
40
41 #: ../../../src/Avatar.cpp:689
42 msgid "You are defeated."
43 msgstr "Anda dikalahkan."
44
45 #: ../../../src/Avatar.cpp:935
46 msgid "Transformation expired. You have been moved back to a safe place."
47 msgstr ""
48 "Transformasi kedaluwarsa. Anda telah dipindahkan kembali ke tempat yang "
49 "aman."
50
51 #: ../../../src/CampaignManager.cpp:152
52 #, c-format
53 msgid "%d %s removed."
54 msgstr "%d %s dihapus."
55
56 #: ../../../src/CampaignManager.cpp:171
57 #, c-format
58 msgid "%s x%d removed."
59 msgstr "%s x%d dihapus."
60
61 #: ../../../src/CampaignManager.cpp:173
62 #, c-format
63 msgid "%s removed."
64 msgstr "%s dihapus."
65
66 #: ../../../src/CampaignManager.cpp:187
67 #, c-format
68 msgid "You receive %d %s."
69 msgstr "Kamu menerima %d %s."
70
71 #: ../../../src/CampaignManager.cpp:191
72 #, c-format
73 msgid "You receive %s x%d."
74 msgstr "Kamu menerima %s x%d."
75
76 #: ../../../src/CampaignManager.cpp:193
77 #, c-format
78 msgid "You receive %s."
79 msgstr "Kamu menerima %s."
80
81 #: ../../../src/CampaignManager.cpp:210
82 #, c-format
83 msgid "You receive %d XP."
84 msgstr "Kamu menerima %d XP."
85
86 #: ../../../src/CampaignManager.cpp:216
87 msgid "HP restored."
88 msgstr "HP dipulihkan."
89
90 #: ../../../src/CampaignManager.cpp:220
91 msgid "MP restored."
92 msgstr "MP. dipulihkan."
93
94 #: ../../../src/CampaignManager.cpp:225
95 msgid "HP and MP restored."
96 msgstr "HP dan MP dipulihkan."
97
98 #: ../../../src/CampaignManager.cpp:229
99 msgid "Negative effects removed."
100 msgstr "Efek negatif dihilangkan."
101
102 #: ../../../src/CampaignManager.cpp:235
103 msgid "HP and MP restored, negative effects removed"
104 msgstr "HP dan MP dipulihkan, efek negatif dihilangkan"
105
106 #: ../../../src/DeviceList.cpp:56
107 msgid ""
108 "SDL software renderer\n"
109 "\n"
110 "Often slower, but less likely to have issues."
111 msgstr ""
112 "Penyaji software SDL\n"
113 "\n"
114 "Seringkali lebih lambat, tetapi kecil kemungkinannya untuk mengalami masalah."
115
116 #: ../../../src/DeviceList.cpp:59
117 msgid ""
118 "SDL hardware renderer\n"
119 "\n"
120 "The default renderer that is often faster than the SDL software renderer."
121 msgstr ""
122 "Penyaji software SDL\n"
123 "\n"
124 "Penyaji default yang seringkali lebih cepat daripada penyaji software SDL."
125
126 #: ../../../src/EngineSettings.cpp:586
127 msgid "Adventurer"
128 msgstr "Penjelajah"
129
130 #: ../../../src/Entity.cpp:527
131 msgid "miss"
132 msgstr "hilang"
133
134 #: ../../../src/Entity.cpp:565 ../../../src/PowerManager.cpp:1220
135 #: ../../../src/StatBlock.cpp:926 ../../../src/StatBlock.cpp:932
136 #, c-format
137 msgid "+%d HP"
138 msgstr "+%d HP"
139
140 #: ../../../src/Entity.cpp:572 ../../../src/StatBlock.cpp:937
141 #: ../../../src/StatBlock.cpp:943
142 #, c-format
143 msgid "+%d MP"
144 msgstr "+%d MP"
145
146 #: ../../../src/EventManager.cpp:792
147 msgid "Unknown destination"
148 msgstr "Tujuan tidak diketahui"
149
150 #: ../../../src/GameState.cpp:37 ../../../src/GameState.cpp:58
151 msgid "Loading..."
152 msgstr "Memuat..."
153
154 #: ../../../src/GameStateLoad.cpp:90 ../../../src/GameStateLoad.cpp:103
155 msgid "Delete Save"
156 msgstr "Hapus Penyimpanan"
157
158 #: ../../../src/GameStateLoad.cpp:90
159 msgid "Delete this save?"
160 msgstr "Hapus penyimpanan ini?"
161
162 #: ../../../src/GameStateLoad.cpp:92
163 msgid "Exit to Title"
164 msgstr "Keluar ke Judul"
165
166 #: ../../../src/GameStateLoad.cpp:95
167 msgid "New Game"
168 msgstr "Game Baru"
169
170 #: ../../../src/GameStateLoad.cpp:99 ../../../src/GameStateLoad.cpp:607
171 msgid "Choose a Slot"
172 msgstr "Pilih Slot"
173
174 #: ../../../src/GameStateLoad.cpp:580 ../../../src/GameStateLoad.cpp:601
175 msgid "Enable a story mod to continue"
176 msgstr "Aktifkan mod cerita untuk melanjutkan"
177
178 #: ../../../src/GameStateLoad.cpp:596
179 msgid "Load Game"
180 msgstr "Memuat Game"
181
182 #: ../../../src/GameStateLoad.cpp:704
183 msgid "Entering game world..."
184 msgstr "Memasuki dunia game..."
185
186 #: ../../../src/GameStateLoad.cpp:707
187 msgid "Loading saved game..."
188 msgstr "Memuat game tersimpan..."
189
190 #: ../../../src/GameStateLoad.cpp:740
191 msgid "Invalid save"
192 msgstr "Simpanan tidak valid"
193
194 #: ../../../src/GameStateLoad.cpp:764 ../../../src/ItemManager.cpp:745
195 #: ../../../src/MenuPowers.cpp:882 ../../../src/MenuPowers.cpp:1241
196 #: ../../../src/MenuPowers.cpp:1653
197 #, c-format
198 msgid "Level %d"
199 msgstr "Level %d"
200
201 #: ../../../src/GameStateNew.cpp:66 ../../../src/InputState.cpp:416
202 #: ../../../src/MenuConfig.cpp:254
203 msgid "Cancel"
204 msgstr "Batal"
205
206 #: ../../../src/GameStateNew.cpp:69
207 msgid "Create"
208 msgstr "Membuat"
209
210 #: ../../../src/GameStateNew.cpp:77
211 msgid "Randomize"
212 msgstr "Acak"
213
214 #: ../../../src/GameStateNew.cpp:93
215 msgid "Choose a Portrait"
216 msgstr "Pilih Potret"
217
218 #: ../../../src/GameStateNew.cpp:97
219 msgid "Choose a Name"
220 msgstr "Pilih Nama"
221
222 #: ../../../src/GameStateNew.cpp:101
223 msgid "Permadeath?"
224 msgstr "Permadeath?"
225
226 #: ../../../src/GameStateNew.cpp:105
227 msgid "Choose a Class"
228 msgstr "Pilih Kelas"
229
230 #: ../../../src/GameStateTitle.cpp:107
231 msgid "Play Game"
232 msgstr "Game Mulai"
233
234 #: ../../../src/GameStateTitle.cpp:110
235 msgid "Enable a core mod to continue"
236 msgstr "Aktifkan mod inti untuk melanjutkan"
237
238 #: ../../../src/GameStateTitle.cpp:114 ../../../src/MenuMiniMap.cpp:152
239 msgid "Configuration"
240 msgstr "Konfigurasi"
241
242 #: ../../../src/GameStateTitle.cpp:117
243 msgid "Credits"
244 msgstr "Kredit"
245
246 #: ../../../src/GameStateTitle.cpp:120
247 msgid "Exit Game"
248 msgstr "Keluar Game"
249
250 #: ../../../src/InputState.cpp:417
251 msgid "Accept"
252 msgstr "Setuju"
253
254 #: ../../../src/InputState.cpp:418 ../../../src/MenuMovementType.cpp:123
255 #: ../../../src/MenuMovementType.cpp:132 ../../../src/SDLInputState.cpp:670
256 #: ../../../src/SDLInputState.cpp:700
257 msgid "Up"
258 msgstr "Atas"
259
260 #: ../../../src/InputState.cpp:419 ../../../src/MenuMovementType.cpp:125
261 #: ../../../src/MenuMovementType.cpp:134 ../../../src/SDLInputState.cpp:648
262 #: ../../../src/SDLInputState.cpp:678
263 msgid "Down"
264 msgstr "Bawah"
265
266 #: ../../../src/InputState.cpp:420 ../../../src/MenuMovementType.cpp:124
267 #: ../../../src/MenuMovementType.cpp:133 ../../../src/SDLInputState.cpp:655
268 #: ../../../src/SDLInputState.cpp:685
269 msgid "Left"
270 msgstr "Kiri"
271
272 #: ../../../src/InputState.cpp:421 ../../../src/MenuMovementType.cpp:126
273 #: ../../../src/MenuMovementType.cpp:135 ../../../src/SDLInputState.cpp:665
274 #: ../../../src/SDLInputState.cpp:695
275 msgid "Right"
276 msgstr "Kanan"
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 "Karakter"
322
323 #: ../../../src/InputState.cpp:433 ../../../src/MenuActionBar.cpp:85
324 #: ../../../src/MenuInventory.cpp:130 ../../../src/MenuVendor.cpp:59
325 msgid "Inventory"
326 msgstr "Inventaris"
327
328 #: ../../../src/InputState.cpp:434 ../../../src/MenuActionBar.cpp:86
329 #: ../../../src/MenuPowers.cpp:159
330 msgid "Powers"
331 msgstr "Kekuatan"
332
333 #: ../../../src/InputState.cpp:435 ../../../src/MenuActionBar.cpp:87
334 #: ../../../src/MenuLog.cpp:72
335 msgid "Log"
336 msgstr "Catatan"
337
338 #: ../../../src/InputState.cpp:436
339 msgid "Main1"
340 msgstr "Main1"
341
342 #: ../../../src/InputState.cpp:437
343 msgid "Main2"
344 msgstr "Main2"
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:677
359 msgid "Delete"
360 msgstr "Delete"
361
362 #: ../../../src/InputState.cpp:442
363 msgid "ActionBar Accept"
364 msgstr "ActionBar Setuju"
365
366 #: ../../../src/InputState.cpp:443
367 msgid "ActionBar Left"
368 msgstr "ActionBar Kiri"
369
370 #: ../../../src/InputState.cpp:444
371 msgid "ActionBar Right"
372 msgstr "ActionBar Kanan"
373
374 #: ../../../src/InputState.cpp:445
375 msgid "ActionBar Use"
376 msgstr "ActionBar Gunakan"
377
378 #: ../../../src/InputState.cpp:446
379 msgid "Developer Menu"
380 msgstr "Menu Pengembang"
381
382 #: ../../../src/InputState.cpp:448
383 msgid "Left Mouse"
384 msgstr "Mouse Kiri"
385
386 #: ../../../src/InputState.cpp:449
387 msgid "Middle Mouse"
388 msgstr "Mouse Tengah"
389
390 #: ../../../src/InputState.cpp:450
391 msgid "Right Mouse"
392 msgstr "Mouse Kanan"
393
394 #: ../../../src/InputState.cpp:451
395 msgid "Wheel Up"
396 msgstr "Wheel Up"
397
398 #: ../../../src/InputState.cpp:452
399 msgid "Wheel Down"
400 msgstr "Wheel Down"
401
402 #: ../../../src/InputState.cpp:453
403 msgid "Mouse X1"
404 msgstr "Mouse X1"
405
406 #: ../../../src/InputState.cpp:454
407 msgid "Mouse X2"
408 msgstr "Mouse X2"
409
410 #: ../../../src/ItemManager.cpp:475
411 msgid "Unknown Item"
412 msgstr "Item tidak diketahui"
413
414 #: ../../../src/ItemManager.cpp:646 ../../../src/MenuPowers.cpp:981
415 #, c-format
416 msgid "%d%% Speed"
417 msgstr "%d%% Kecepatan"
418
419 #: ../../../src/ItemManager.cpp:650 ../../../src/MenuPowers.cpp:984
420 #, c-format
421 msgid "%d%% Attack Speed"
422 msgstr "%d%% Kecepatan Serangan"
423
424 #: ../../../src/ItemManager.cpp:672 ../../../src/MenuCharacter.cpp:352
425 #: ../../../src/MenuPowers.cpp:953
426 #, c-format
427 msgid "Resistance (%s)"
428 msgstr "Daya Tahan (%s)"
429
430 #: ../../../src/ItemManager.cpp:682
431 #, c-format
432 msgid "Requires %s"
433 msgstr "Membutuhkan %s"
434
435 #: ../../../src/ItemManager.cpp:731
436 msgid "Quest Item"
437 msgstr "Item Pencarian"
438
439 #: ../../../src/ItemManager.cpp:758
440 #, c-format
441 msgid "Quality: %s"
442 msgstr "Kualitas: %s"
443
444 #: ../../../src/ItemManager.cpp:783
445 #, c-format
446 msgid "Absorb: %d-%d"
447 msgstr "Menyerap: %d-%d"
448
449 #: ../../../src/ItemManager.cpp:785
450 #, c-format
451 msgid "Absorb: %d"
452 msgstr "Menyerap: %d"
453
454 #: ../../../src/ItemManager.cpp:825 ../../../src/MenuPowers.cpp:1228
455 #: ../../../src/MenuPowers.cpp:1231
456 #, c-format
457 msgid "Requires Level %d"
458 msgstr "Membutuhkan Level %d"
459
460 #: ../../../src/ItemManager.cpp:836 ../../../src/MenuPowers.cpp:1220
461 #: ../../../src/MenuPowers.cpp:1222
462 #, c-format
463 msgid "Requires %s %d"
464 msgstr "Membutuhkan %s %d"
465
466 #: ../../../src/ItemManager.cpp:847
467 #, c-format
468 msgid "Requires Class: %s"
469 msgstr "Membutuhkan Kelas: %s"
470
471 #: ../../../src/ItemManager.cpp:863 ../../../src/ItemManager.cpp:875
472 #, c-format
473 msgid "Buy Price: %d %s"
474 msgstr "Harga Beli: %d %s"
475
476 #: ../../../src/ItemManager.cpp:865 ../../../src/ItemManager.cpp:877
477 #, c-format
478 msgid "Buy Price: %d %s each"
479 msgstr "Harga Beli: %d %s setiap"
480
481 #: ../../../src/ItemManager.cpp:885
482 #, c-format
483 msgid "Sell Price: %d %s"
484 msgstr "Harga Jual: %d %s"
485
486 #: ../../../src/ItemManager.cpp:887
487 #, c-format
488 msgid "Sell Price: %d %s each"
489 msgstr "Harga Jual: %d %s setiap"
490
491 #: ../../../src/ItemManager.cpp:898
492 msgid "Set:"
493 msgstr "Set:"
494
495 #: ../../../src/ItemManager.cpp:905
496 #, c-format
497 msgid "%d items:"
498 msgstr "%d items:"
499
500 #: ../../../src/ItemManager.cpp:920
501 #, c-format
502 msgid "Press [%s] to read"
503 msgstr "Tekan [%s] untuk membaca"
504
505 #: ../../../src/ItemManager.cpp:923
506 #, c-format
507 msgid "Press [%s] to use"
508 msgstr "Tekan [%s] untuk menggunakan"
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 "Tombol pintas: %s"
515
516 #: ../../../src/MenuActionBar.cpp:621
517 msgid "Not enough MP."
518 msgstr "Tidak cukup MP."
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 "Tersisa:"
528
529 #: ../../../src/MenuActiveEffects.cpp:225
530 #, c-format
531 msgid "x%d stacks"
532 msgstr "x%d tumpukan"
533
534 #: ../../../src/MenuCharacter.cpp:73 ../../../src/MenuCharacter.cpp:78
535 msgid "Name"
536 msgstr "Nama"
537
538 #: ../../../src/MenuCharacter.cpp:74 ../../../src/MenuCharacter.cpp:79
539 msgid "Level"
540 msgstr "Level"
541
542 #: ../../../src/MenuCharacter.cpp:309
543 #, c-format
544 msgid "Available stat points: %d"
545 msgstr "Poin statistik yang tersedia: %d"
546
547 #: ../../../src/MenuCharacter.cpp:353
548 #, c-format
549 msgid "Reduces the damage taken from \"%s\" elemental attacks."
550 msgstr "Mengurangi damage yang diterima dari \"%s\" serangan elemen."
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 "Selanjutnya: %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 "Statistik terkait:"
570
571 #: ../../../src/MenuCharacter.cpp:419 ../../../src/MenuCharacter.cpp:443
572 #, c-format
573 msgid "Each level grants %d."
574 msgstr "Setiap level memberikan %d."
575
576 #: ../../../src/MenuCharacter.cpp:423 ../../../src/MenuCharacter.cpp:447
577 #, c-format
578 msgid "Each point of %s grants %d."
579 msgstr "Tiap poin %s memberikan %d."
580
581 #: ../../../src/MenuConfig.cpp:122 ../../../src/MenuConfig.cpp:1256
582 msgid "Clear"
583 msgstr "Bersihkan"
584
585 #: ../../../src/MenuConfig.cpp:122 ../../../src/MenuConfig.cpp:1254
586 msgid "Assign:"
587 msgstr "Menetapkan:"
588
589 #: ../../../src/MenuConfig.cpp:123 ../../../src/MenuConfig.cpp:253
590 msgid "Defaults"
591 msgstr "Defaults"
592
593 #: ../../../src/MenuConfig.cpp:123
594 msgid "Reset ALL settings?"
595 msgstr "Setel ulang SEMUA pengaturan?"
596
597 #: ../../../src/MenuConfig.cpp:252 ../../../src/MenuNumPicker.cpp:49
598 msgid "OK"
599 msgstr "Ok"
600
601 #: ../../../src/MenuConfig.cpp:256 ../../../src/MenuGameOver.cpp:72
602 msgid "Continue"
603 msgstr "Melanjutkan"
604
605 #: ../../../src/MenuConfig.cpp:258
606 msgid "Save Game"
607 msgstr "Menyimpan Game"
608
609 #: ../../../src/MenuConfig.cpp:301 ../../../src/MenuConfig.cpp:352
610 msgid "Default"
611 msgstr "Default"
612
613 #: ../../../src/MenuConfig.cpp:301
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 "Tampilkan semua tooltips jarahan, kecuali yang akan dikaburkan oleh pemain "
619 "atau musuh. Tampilkan sementara semua tooltips jarahan dengan 'Alt'."
620
621 #: ../../../src/MenuConfig.cpp:302
622 msgid "Show all"
623 msgstr "Tampilkan semua"
624
625 #: ../../../src/MenuConfig.cpp:302
626 msgid ""
627 "Always show loot tooltips. Temporarily hide all loot tooltips with 'Alt'."
628 msgstr ""
629 "Selalu tunjukkan tooltips jarahan. Sembunyikan sementara semua tooltips "
630 "jarahan dengan 'Alt'."
631
632 #: ../../../src/MenuConfig.cpp:303 ../../../src/MenuConfig.cpp:308
633 msgid "Hidden"
634 msgstr "Tersembunyi"
635
636 #: ../../../src/MenuConfig.cpp:303
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 "Selalu sembunyikan tooltips jarahan, kecuali ketika satu jarahan melayang "
642 "dengan kursor mouse. Tampilkan sementara semua tooltips jarahan dengan "
643 "'Alt'."
644
645 #: ../../../src/MenuConfig.cpp:306
646 msgid "Visible"
647 msgstr "Terlihat"
648
649 #: ../../../src/MenuConfig.cpp:307
650 msgid "Visible (2x zoom)"
651 msgstr "Terlihat (2x zoom)"
652
653 #: ../../../src/MenuConfig.cpp:311
654 msgid ""
655 "Controls the type of warning to be activated when the player is below the "
656 "low health threshold."
657 msgstr ""
658 "Mengontrol jenis peringatan yang akan diaktifkan saat pemain berada di bawah"
659 " ambang batas kesehatan yang rendah."
660
661 #: ../../../src/MenuConfig.cpp:312
662 msgid "- Display a message"
663 msgstr "- Menampilkan pesan"
664
665 #: ../../../src/MenuConfig.cpp:313
666 msgid "- Play a sound"
667 msgstr "- Mainkan suara"
668
669 #: ../../../src/MenuConfig.cpp:314
670 msgid "- Change the cursor"
671 msgstr "- Ubah kursor"
672
673 #: ../../../src/MenuConfig.cpp:316
674 msgid "Disabled"
675 msgstr "Tidak diaktifkan"
676
677 #: ../../../src/MenuConfig.cpp:317
678 msgid "All"
679 msgstr "Semua"
680
681 #: ../../../src/MenuConfig.cpp:318
682 msgid "Message & Cursor"
683 msgstr "Pesan & Kursor"
684
685 #: ../../../src/MenuConfig.cpp:319
686 msgid "Message & Sound"
687 msgstr "Pesan & Suara"
688
689 #: ../../../src/MenuConfig.cpp:320
690 msgid "Sound & Cursor"
691 msgstr "Suara & Kursor"
692
693 #: ../../../src/MenuConfig.cpp:321
694 msgid "Message"
695 msgstr "Pesan"
696
697 #: ../../../src/MenuConfig.cpp:322
698 msgid "Cursor"
699 msgstr "Kursor"
700
701 #: ../../../src/MenuConfig.cpp:323
702 msgid "Sound"
703 msgstr "Suara"
704
705 #: ../../../src/MenuConfig.cpp:329
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 "Saat kesehatan pemain turun di bawah ambang batas yang diberikan, "
711 "pemberitahuan kesehatan rendah dipicu jika satu atau lebih diaktifkan."
712
713 #: ../../../src/MenuConfig.cpp:347
714 msgid "The maximum frame rate that the game will be allowed to run at."
715 msgstr "Kecepatan maksimum frame yang diizinkan game untuk dijalankan."
716
717 #: ../../../src/MenuConfig.cpp:351
718 msgid ""
719 "The render size refers to the height in pixels of the surface used to draw "
720 "the game. Mods define the allowed render sizes, but this option allows "
721 "overriding the maximum size."
722 msgstr ""
723 "Ukuran render mengacu pada tinggi piksel permukaan yang digunakan untuk "
724 "menggambar game. Mod menentukan ukuran render yang diizinkan, tetapi opsi "
725 "ini memungkinkan penggantian ukuran maksimum."
726
727 #: ../../../src/MenuConfig.cpp:374 ../../../src/MenuConfig.cpp:1679
728 #: ../../../src/MenuGameOver.cpp:116
729 msgid "Exit"
730 msgstr "Keluar"
731
732 #: ../../../src/MenuConfig.cpp:375
733 msgid "Video"
734 msgstr "Video"
735
736 #: ../../../src/MenuConfig.cpp:376
737 msgid "Audio"
738 msgstr "Audio"
739
740 #: ../../../src/MenuConfig.cpp:377
741 msgid "Interface"
742 msgstr "Antarmuka"
743
744 #: ../../../src/MenuConfig.cpp:378
745 msgid "Input"
746 msgstr "Input"
747
748 #: ../../../src/MenuConfig.cpp:379
749 msgid "Keybindings"
750 msgstr "Pengikatan kunci"
751
752 #: ../../../src/MenuConfig.cpp:380
753 msgid "Mods"
754 msgstr "Mods"
755
756 #: ../../../src/MenuConfig.cpp:392
757 msgid "Paused"
758 msgstr "Paused"
759
760 #: ../../../src/MenuConfig.cpp:395
761 msgid "Time Played"
762 msgstr "Waktu Bermain"
763
764 #: ../../../src/MenuConfig.cpp:401
765 msgid "Renderer"
766 msgstr "Penyaji"
767
768 #: ../../../src/MenuConfig.cpp:402
769 msgid "Full Screen Mode"
770 msgstr "Mode Layar Penuh"
771
772 #: ../../../src/MenuConfig.cpp:403
773 msgid "Hardware surfaces"
774 msgstr "Permukaan hardware"
775
776 #: ../../../src/MenuConfig.cpp:404
777 msgid "V-Sync"
778 msgstr "V-Sync"
779
780 #: ../../../src/MenuConfig.cpp:405
781 msgid "Texture Filtering"
782 msgstr "Filter Tekstur"
783
784 #: ../../../src/MenuConfig.cpp:406
785 msgid "DPI scaling"
786 msgstr "Penskalaan DPI"
787
788 #: ../../../src/MenuConfig.cpp:407
789 msgid "Parallax Layers"
790 msgstr "Lapisan Paralaks"
791
792 #: ../../../src/MenuConfig.cpp:408
793 msgid "Allow changing gamma"
794 msgstr "Izinkan mengubah gamma"
795
796 #: ../../../src/MenuConfig.cpp:409
797 msgid "Gamma"
798 msgstr "Gamma"
799
800 #: ../../../src/MenuConfig.cpp:410
801 msgid "Maximum Render Size"
802 msgstr "Ukuran Render Maksimum"
803
804 #: ../../../src/MenuConfig.cpp:411
805 msgid "Frame Limit"
806 msgstr "Batas Frame"
807
808 #: ../../../src/MenuConfig.cpp:413
809 msgid "Sound Volume"
810 msgstr "Volume Suara"
811
812 #: ../../../src/MenuConfig.cpp:414
813 msgid "Music Volume"
814 msgstr "Volume Musik"
815
816 #: ../../../src/MenuConfig.cpp:416
817 msgid "Language"
818 msgstr "Bahasa"
819
820 #: ../../../src/MenuConfig.cpp:417
821 msgid "Show FPS"
822 msgstr "Tampilkan FPS"
823
824 #: ../../../src/MenuConfig.cpp:418
825 msgid "Hardware mouse cursor"
826 msgstr "Kursor mouse hardware"
827
828 #: ../../../src/MenuConfig.cpp:419
829 msgid "Colorblind Mode"
830 msgstr "Mode Buta Warna"
831
832 #: ../../../src/MenuConfig.cpp:420
833 msgid "Developer Mode"
834 msgstr "Mode Pengembang"
835
836 #: ../../../src/MenuConfig.cpp:421
837 msgid "Subtitles"
838 msgstr "Subtitel"
839
840 #: ../../../src/MenuConfig.cpp:422
841 msgid "Loot tooltip visibility"
842 msgstr "Visibilitas tooltip jarahan"
843
844 #: ../../../src/MenuConfig.cpp:423
845 msgid "Mini-map mode"
846 msgstr "Mode peta kecil"
847
848 #: ../../../src/MenuConfig.cpp:424
849 msgid "Always show stat bar labels"
850 msgstr "Selalu tampilkan label bar statistik"
851
852 #: ../../../src/MenuConfig.cpp:425
853 msgid "Allow stat bar auto-hiding"
854 msgstr "Izinkan penyembunyian otomatis bar statistik"
855
856 #: ../../../src/MenuConfig.cpp:426
857 msgid "Show combat text"
858 msgstr "Tampilkan teks pertempuran"
859
860 #: ../../../src/MenuConfig.cpp:427
861 msgid "Automatically equip items"
862 msgstr "Lengkapi item secara otomatis"
863
864 #: ../../../src/MenuConfig.cpp:428
865 msgid "Show hidden entity markers"
866 msgstr "Tampilkan penanda entitas tersembunyi"
867
868 #: ../../../src/MenuConfig.cpp:429
869 msgid "Low health notification"
870 msgstr "Notifikasi kesehatan rendah"
871
872 #: ../../../src/MenuConfig.cpp:430
873 msgid "Low health threshold"
874 msgstr "Ambang batas kesehatan rendah"
875
876 #: ../../../src/MenuConfig.cpp:431
877 msgid "Show item comparison tooltips"
878 msgstr "Tampilkan tooltips perbandingan item"
879
880 #: ../../../src/MenuConfig.cpp:434 ../../../src/MenuMovementType.cpp:94
881 #: ../../../src/MenuMovementType.cpp:131
882 msgid "Joystick"
883 msgstr "Joystick"
884
885 #: ../../../src/MenuConfig.cpp:435
886 msgid "Move hero using mouse"
887 msgstr "Pindahkan hero menggunakan mouse"
888
889 #: ../../../src/MenuConfig.cpp:436
890 msgid "Mouse aim"
891 msgstr "Mouse aim"
892
893 #: ../../../src/MenuConfig.cpp:437
894 msgid "Do not use mouse"
895 msgstr "Jangan gunakan mouse"
896
897 #: ../../../src/MenuConfig.cpp:438
898 msgid "Swap mouse movement button"
899 msgstr "Tukar tombol gerakan mouse"
900
901 #: ../../../src/MenuConfig.cpp:439
902 msgid "Attack with mouse movement"
903 msgstr "Serang dengan gerakan mouse"
904
905 #: ../../../src/MenuConfig.cpp:440
906 msgid "Joystick Deadzone"
907 msgstr "Zona Mati Joystick"
908
909 #: ../../../src/MenuConfig.cpp:441
910 msgid "Touch Controls"
911 msgstr "Kontrol Sentuh"
912
913 #: ../../../src/MenuConfig.cpp:442
914 msgid "Touch Gamepad Scaling"
915 msgstr "Penskalaan Gamepad Sentuh"
916
917 #: ../../../src/MenuConfig.cpp:452
918 #, c-format
919 msgid "Primary binding: %s"
920 msgstr "Pengikatan primer: %s"
921
922 #: ../../../src/MenuConfig.cpp:453
923 #, c-format
924 msgid "Alternate binding: %s"
925 msgstr "Pengikatan alternatif: %s"
926
927 #: ../../../src/MenuConfig.cpp:454
928 #, c-format
929 msgid "Joystick binding: %s"
930 msgstr "Pengikatan joystick: %s"
931
932 #: ../../../src/MenuConfig.cpp:556
933 msgid ""
934 "Will try to store surfaces in video memory versus system memory. The effect "
935 "this has on performance depends on the renderer."
936 msgstr ""
937 "Akan mencoba menyimpan permukaan dalam memori video versus memori sistem. "
938 "Efek ini pada kinerja tergantung pada penyaji."
939
940 #: ../../../src/MenuConfig.cpp:557
941 msgid ""
942 "Prevents screen tearing. Disable if you experience \"stuttering\" in "
943 "windowed mode or input lag."
944 msgstr ""
945 "Mencegah rusaknya layar. Nonaktifkan jika Anda mengalami \"gagap\" dalam "
946 "mode window atau input lag."
947
948 #: ../../../src/MenuConfig.cpp:558
949 msgid ""
950 "When enabled, this uses the screen DPI in addition to the window dimensions "
951 "to scale the rendering resolution. Otherwise, only the window dimensions are"
952 " used."
953 msgstr ""
954 "Saat diaktifkan, ini menggunakan DPI layar selain dimensi window untuk "
955 "menskalakan resolusi sajian. Jika tidak, hanya dimensi window yang "
956 "digunakan."
957
958 #: ../../../src/MenuConfig.cpp:559
959 msgid ""
960 "This enables parallax (non-tile) layers. Disabling this setting can improve "
961 "performance in some cases."
962 msgstr ""
963 "Ini memungkinkan lapisan paralaks (non-ubin). Menonaktifkan pengaturan ini "
964 "dapat meningkatkan kinerja dalam beberapa kasus."
965
966 #: ../../../src/MenuConfig.cpp:560
967 msgid ""
968 "Enables the below setting that controls the screen gamma level. The behavior"
969 " of the gamma setting can vary between platforms."
970 msgstr ""
971 "Mengaktifkan pengaturan di bawah ini yang mengontrol tingkat gamma layar. "
972 "Perilaku pengaturan gamma dapat bervariasi antar platform."
973
974 #: ../../../src/MenuConfig.cpp:561
975 msgid ""
976 "Provides additional text for information that is primarily conveyed through "
977 "color."
978 msgstr ""
979 "Menyediakan teks tambahan untuk informasi yang terutama disampaikan melalui "
980 "warna."
981
982 #: ../../../src/MenuConfig.cpp:562
983 msgid ""
984 "Some mods will automatically hide the stat bars when they are inactive. "
985 "Disabling this option will keep them displayed at all times."
986 msgstr ""
987 "Beberapa mod akan secara otomatis menyembunyikan bar statistik saat tidak "
988 "aktif. Menonaktifkan opsi ini akan membuatnya tetap ditampilkan setiap saat."
989
990 #: ../../../src/MenuConfig.cpp:563
991 msgid ""
992 "When enabled, empty equipment slots will be filled with applicable items "
993 "when they are obtained."
994 msgstr ""
995 "Saat diaktifkan, slot peralatan kosong akan diisi dengan item yang berlaku "
996 "saat diperoleh."
997
998 #: ../../../src/MenuConfig.cpp:564
999 msgid ""
1000 "Shows a marker above enemies, allies, and the player when they are obscured "
1001 "by tall objects."
1002 msgstr ""
1003 "Menunjukkan penanda di atas musuh, sekutu, dan pemain saat mereka terhalang "
1004 "oleh benda tinggi."
1005
1006 #: ../../../src/MenuConfig.cpp:565
1007 msgid ""
1008 "When enabled, tooltips for equipped items of the same type are shown next to"
1009 " standard item tooltips."
1010 msgstr ""
1011 "Saat diaktifkan, tooltips untuk item yang dilengkapi dengan jenis yang sama "
1012 "akan ditampilkan di sebelah tooltips item standar."
1013
1014 #: ../../../src/MenuConfig.cpp:566
1015 msgid ""
1016 "This allows the game to be controlled entirely with the keyboard (or "
1017 "joystick)."
1018 msgstr ""
1019 "Ini memungkinkan game untuk dikontrol sepenuhnya dengan keyboard (atau "
1020 "joystick)."
1021
1022 #: ../../../src/MenuConfig.cpp:567
1023 msgid ""
1024 "When 'Move hero using mouse' is enabled, this setting controls if 'Main1' or"
1025 " 'Main2' is used to move the hero. If enabled, 'Main2' will move the hero "
1026 "instead of 'Main1'."
1027 msgstr ""
1028 "Saat 'Pindahkan hero menggunakan mouse' diaktifkan, pengaturan ini "
1029 "mengontrol apakah 'Main1' atau 'Main2' digunakan untuk memindahkan hero. "
1030 "Jika diaktifkan, 'Main2' akan memindahkan hero, bukan 'Main1'."
1031
1032 #: ../../../src/MenuConfig.cpp:568
1033 msgid ""
1034 "When 'Move hero using mouse' is enabled, this setting controls if the Power "
1035 "assigned to the movement button can be used by targeting an enemy. If this "
1036 "setting is disabled, it is required to use 'Shift' to access the Power "
1037 "assigned to the movement button."
1038 msgstr ""
1039 "Saat 'Pindahkan hero menggunakan mouse' diaktifkan, pengaturan ini "
1040 "mengontrol apakah Kekuatan yang ditetapkan ke tombol gerakan dapat digunakan"
1041 " dengan menargetkan musuh. Jika pengaturan ini dinonaktifkan, diperlukan "
1042 "untuk menggunakan 'Shift' untuk mengakses Kekuatan yang ditetapkan untuk "
1043 "tombol gerakan."
1044
1045 #: ../../../src/MenuConfig.cpp:569
1046 msgid ""
1047 "The player's attacks will be aimed in the direction of the mouse cursor when"
1048 " this is enabled."
1049 msgstr ""
1050 "Serangan pemain akan diarahkan ke arah kursor mouse saat ini diaktifkan."
1051
1052 #: ../../../src/MenuConfig.cpp:570
1053 msgid ""
1054 "When enabled, a virtual gamepad will be added in-game. Other interactions, "
1055 "such as drag-and-drop behavior, are also altered to better suit touch input."
1056 msgstr ""
1057 "Saat diaktifkan, gamepad virtual akan ditambahkan dalam game. Interaksi "
1058 "lain, seperti perilaku drag-and-drop, juga diubah agar lebih sesuai dengan "
1059 "input sentuhan."
1060
1061 #: ../../../src/MenuConfig.cpp:621
1062 msgid "Active Mods"
1063 msgstr "Mod Aktif"
1064
1065 #: ../../../src/MenuConfig.cpp:630
1066 msgid "Available Mods"
1067 msgstr "Mod Tersedia"
1068
1069 #: ../../../src/MenuConfig.cpp:649
1070 msgid "<< Disable"
1071 msgstr "<< Nonaktifkan"
1072
1073 #: ../../../src/MenuConfig.cpp:655
1074 msgid "Enable >>"
1075 msgstr "Aktifkan >>"
1076
1077 #: ../../../src/MenuConfig.cpp:1536
1078 msgid "Version:"
1079 msgstr "Versi:"
1080
1081 #: ../../../src/MenuConfig.cpp:1541
1082 msgid "Game:"
1083 msgstr "Game:"
1084
1085 #: ../../../src/MenuConfig.cpp:1546
1086 msgid "Engine version:"
1087 msgstr "Versi mesin:"
1088
1089 #: ../../../src/MenuConfig.cpp:1554
1090 msgid "Requires mods:"
1091 msgstr "Mod membutuhkan:"
1092
1093 #: ../../../src/MenuConfig.cpp:1662 ../../../src/SDLInputState.cpp:750
1094 msgid "(none)"
1095 msgstr "(tidak ada)"
1096
1097 #: ../../../src/MenuConfig.cpp:1679 ../../../src/MenuGameOver.cpp:73
1098 msgid "Save & Exit"
1099 msgstr "Simpan & Keluar"
1100
1101 #: ../../../src/MenuDevConsole.cpp:65
1102 msgid "Execute"
1103 msgstr "Menjalankan"
1104
1105 #: ../../../src/MenuDevConsole.cpp:103 ../../../src/MenuDevConsole.cpp:153
1106 msgid "Developer Console"
1107 msgstr "Konsol Pengembang"
1108
1109 #: ../../../src/MenuDevConsole.cpp:143
1110 #, c-format
1111 msgid "Use '%s' to inspect with the cursor."
1112 msgstr "Guanakan '%s' untuk memeriksa dengan kursor."
1113
1114 #: ../../../src/MenuDevConsole.cpp:148
1115 msgid "Arguments with spaces should be enclosed with double quotes. Example:"
1116 msgstr "Argumen dengan spasi harus diapit dengan tanda kutip ganda. Contoh:"
1117
1118 #: ../../../src/MenuDevConsole.cpp:149
1119 msgid "Type 'help' to get a list of commands."
1120 msgstr "Ketik 'help' untuk mendapatkan daftar perintah."
1121
1122 #: ../../../src/MenuDevConsole.cpp:211 ../../../src/MenuDevConsole.cpp:215
1123 msgid "px"
1124 msgstr "px"
1125
1126 #: ../../../src/MenuDevConsole.cpp:226
1127 msgid "Distance"
1128 msgstr "Jarak"
1129
1130 #: ../../../src/MenuDevConsole.cpp:241 ../../../src/MenuDevConsole.cpp:289
1131 #: ../../../src/MenuDevConsole.cpp:303
1132 msgid "Entity"
1133 msgstr "Kesatuan"
1134
1135 #: ../../../src/MenuDevConsole.cpp:263 ../../../src/MenuDevConsole.cpp:270
1136 msgid "none"
1137 msgstr "tidak ada"
1138
1139 #: ../../../src/MenuDevConsole.cpp:264 ../../../src/MenuDevConsole.cpp:266
1140 msgid "wall"
1141 msgstr "dinding"
1142
1143 #: ../../../src/MenuDevConsole.cpp:265 ../../../src/MenuDevConsole.cpp:267
1144 msgid "short wall / pit"
1145 msgstr "dinding pendek / lubang"
1146
1147 #: ../../../src/MenuDevConsole.cpp:268
1148 msgid "entity"
1149 msgstr "kesatuan"
1150
1151 #: ../../../src/MenuDevConsole.cpp:269
1152 msgid "entity, ally"
1153 msgstr "kesatuan, sekutu"
1154
1155 #: ../../../src/MenuDevConsole.cpp:276
1156 msgid "Tile"
1157 msgstr "Petak"
1158
1159 #: ../../../src/MenuDevConsole.cpp:377
1160 msgid "adds a power to the action bar"
1161 msgstr "tambah kekuatan ke action bar"
1162
1163 #: ../../../src/MenuDevConsole.cpp:378
1164 msgid "turns on/off the display of the FPS counter"
1165 msgstr "menyalakan/mematikan tampilan penghitung FPS"
1166
1167 #: ../../../src/MenuDevConsole.cpp:379
1168 msgid "turns on/off all of the HUD elements"
1169 msgstr "menyalakan/mematikan semua elemen HUD"
1170
1171 #: ../../../src/MenuDevConsole.cpp:380
1172 msgid "turns on/off the developer hud"
1173 msgstr "menghidupkan/mematikan pengembang hud"
1174
1175 #: ../../../src/MenuDevConsole.cpp:381
1176 msgid ""
1177 "Prints a list of powers that match a search term. No search term will list "
1178 "all items"
1179 msgstr ""
1180 "Mencetak daftar kekuatan yang cocok dengan istilah pencarian. Tidak ada "
1181 "istilah pencarian yang akan mencantumkan semua item"
1182
1183 #: ../../../src/MenuDevConsole.cpp:382
1184 msgid "Prints out all the map filenames located in the \"maps/\" directory."
1185 msgstr "Mencetak semua nama file peta yang terletak di direktori \"maps/\"."
1186
1187 #: ../../../src/MenuDevConsole.cpp:383
1188 msgid ""
1189 "Prints out the active campaign statuses that match a search term. No search "
1190 "term will list all active statuses"
1191 msgstr ""
1192 "Mencetak status kampanye aktif yang cocok dengan istilah penelusuran. Tidak "
1193 "ada istilah pencarian yang akan mencantumkan semua status aktif"
1194
1195 #: ../../../src/MenuDevConsole.cpp:384
1196 msgid ""
1197 "Prints a list of items that match a search term. No search term will list "
1198 "all items"
1199 msgstr ""
1200 "Mencetak daftar item yang cocok dengan istilah pencarian. Tidak ada istilah "
1201 "pencarian yang akan mencantumkan semua item"
1202
1203 #: ../../../src/MenuDevConsole.cpp:385
1204 msgid ""
1205 "parses a series of event components and executes them as a single event"
1206 msgstr ""
1207 "mengurai serangkaian komponen acara dan mengeksekusinya sebagai satu acara"
1208
1209 #: ../../../src/MenuDevConsole.cpp:386
1210 msgid "clears the command history"
1211 msgstr "menghapus riwayat perintah"
1212
1213 #: ../../../src/MenuDevConsole.cpp:387
1214 msgid "displays this text"
1215 msgstr "menampilkan teks ini"
1216
1217 #: ../../../src/MenuDevConsole.cpp:394
1218 msgid "Toggled the developer hud"
1219 msgstr "Beralih pengembang hud"
1220
1221 #: ../../../src/MenuDevConsole.cpp:398
1222 msgid "Toggled the hud"
1223 msgstr "Mengaktifkan hud"
1224
1225 #: ../../../src/MenuDevConsole.cpp:402
1226 msgid "Toggled the FPS counter"
1227 msgstr "Mengaktifkan penghitung FPS"
1228
1229 #: ../../../src/MenuDevConsole.cpp:552
1230 msgid "ERROR: Incorrect number of arguments"
1231 msgstr "KESALAHAN: Jumlah argumen salah"
1232
1233 #: ../../../src/MenuDevConsole.cpp:554 ../../../src/MenuDevConsole.cpp:582
1234 msgid "HINT:"
1235 msgstr "PETUNJUK:"
1236
1237 #: ../../../src/MenuDevConsole.cpp:554
1238 msgid "<id>"
1239 msgstr "<id>"
1240
1241 #: ../../../src/MenuDevConsole.cpp:570
1242 #, c-format
1243 msgid "ERROR: '%s' is not a valid event key"
1244 msgstr "ERROR: '%s' bukan kunci acara yang valid"
1245
1246 #: ../../../src/MenuDevConsole.cpp:580
1247 msgid "ERROR: Too few arguments"
1248 msgstr "ERROR: Terlalu sedikit argumen"
1249
1250 #: ../../../src/MenuDevConsole.cpp:582
1251 msgid "<key>=<val> <key>=<val> ..."
1252 msgstr "<key>=<val> <key>=<val> ..."
1253
1254 #: ../../../src/MenuDevConsole.cpp:587
1255 msgid "ERROR: Unknown command"
1256 msgstr "ERROR: Perintah tidak diketahui"
1257
1258 #: ../../../src/MenuDevConsole.cpp:589
1259 msgid "HINT: Type help"
1260 msgstr "PETUNJUK: Ketik help"
1261
1262 #: ../../../src/MenuEnemy.cpp:162
1263 #, c-format
1264 msgid "%s level %d"
1265 msgstr "%s level %d"
1266
1267 #: ../../../src/MenuEnemy.cpp:186
1268 msgid "Dead"
1269 msgstr "Mati"
1270
1271 #: ../../../src/MenuEnemy.cpp:188
1272 msgid "Destroyed"
1273 msgstr "Dihancurkan"
1274
1275 #: ../../../src/MenuGameOver.cpp:69
1276 msgid "Game Over"
1277 msgstr "Game Selesai"
1278
1279 #: ../../../src/MenuInventory.cpp:178
1280 #, c-format
1281 msgid "Lost %d%% of %s."
1282 msgstr "Hilang %d%% dari %s."
1283
1284 #: ../../../src/MenuInventory.cpp:185
1285 #, c-format
1286 msgid "Lost %d%% of total XP."
1287 msgstr "Hilang %d%% dari total XP."
1288
1289 #: ../../../src/MenuInventory.cpp:190
1290 #, c-format
1291 msgid "Lost %d%% of current level XP."
1292 msgstr "Hilang %d%% dari level XP saat ini."
1293
1294 #: ../../../src/MenuInventory.cpp:216
1295 #, c-format
1296 msgid "Lost %s."
1297 msgstr "Hilang %s."
1298
1299 #: ../../../src/MenuInventory.cpp:258 ../../../src/MenuStash.cpp:276
1300 #, c-format
1301 msgid "%d %s"
1302 msgstr "%d %s"
1303
1304 #: ../../../src/MenuInventory.cpp:301
1305 msgid "Pick up item(s):"
1306 msgstr "Mengambil item(s):"
1307
1308 #: ../../../src/MenuInventory.cpp:302
1309 msgid "Use or equip item:"
1310 msgstr "Gunakan atau lengkapi item:"
1311
1312 #: ../../../src/MenuInventory.cpp:303
1313 #, c-format
1314 msgid "%s modifiers"
1315 msgstr "%s pengubah"
1316
1317 #: ../../../src/MenuInventory.cpp:304
1318 msgid "Select a quantity of item:"
1319 msgstr "Pilih jumlah item:"
1320
1321 #: ../../../src/MenuInventory.cpp:307
1322 msgid "Stash item stack:"
1323 msgstr "Penyimpanan tumpukan item:"
1324
1325 #: ../../../src/MenuInventory.cpp:309
1326 msgid "Sell item stack:"
1327 msgstr "Jual item tumpukan:"
1328
1329 #: ../../../src/MenuInventory.cpp:576
1330 msgid "You don't have enough of the required item."
1331 msgstr "Anda tidak cukup memiliki dari item yang diperlukan."
1332
1333 #: ../../../src/MenuInventory.cpp:588
1334 msgid "You can't use this item right now."
1335 msgstr "Kamu tidak bisa menggunakan item ini saat ini."
1336
1337 #: ../../../src/MenuInventory.cpp:600
1338 msgid "This item can only be used from the action bar."
1339 msgstr "Item ini hanya bisa digunakan dari action bar"
1340
1341 #: ../../../src/MenuInventory.cpp:718
1342 msgid "Inventory is full."
1343 msgstr "Inventaris Penuh."
1344
1345 #: ../../../src/MenuInventory.cpp:843
1346 #, c-format
1347 msgid "Not enough %s."
1348 msgstr "Tidak cukup %s."
1349
1350 #: ../../../src/MenuInventory.cpp:863 ../../../src/MenuInventory.cpp:870
1351 msgid "This item can not be sold."
1352 msgstr "Item ini tidak bisa dijual."
1353
1354 #: ../../../src/MenuLog.cpp:91
1355 msgid "Notes"
1356 msgstr "Catatan."
1357
1358 #: ../../../src/MenuLog.cpp:92
1359 msgid "Quests"
1360 msgstr "Pencarian"
1361
1362 #: ../../../src/MenuManager.cpp:305
1363 #, c-format
1364 msgid "XP: %d/%d"
1365 msgstr "XP: %d/%d"
1366
1367 #: ../../../src/MenuManager.cpp:875
1368 msgid "This item can not be dropped."
1369 msgstr "Item ini tidak bisa dijatuhkan."
1370
1371 #: ../../../src/MenuManager.cpp:1501
1372 msgid "Equipped"
1373 msgstr "Diperlengkapi"
1374
1375 #: ../../../src/MenuMovementType.cpp:87
1376 msgid "Select a Movement Type"
1377 msgstr "Pilih Tipe Pergerakan"
1378
1379 #: ../../../src/MenuMovementType.cpp:89
1380 msgid "Can be changed later in the Configuration menu."
1381 msgstr "Dapat diubah nanti di menu Konfigurasi."
1382
1383 #: ../../../src/MenuMovementType.cpp:92 ../../../src/MenuMovementType.cpp:122
1384 msgid "Keyboard"
1385 msgstr "Keyboard"
1386
1387 #: ../../../src/MenuMovementType.cpp:93 ../../../src/MenuMovementType.cpp:128
1388 msgid "Mouse"
1389 msgstr "Mouse"
1390
1391 #: ../../../src/MenuMovementType.cpp:129
1392 msgid "Button"
1393 msgstr "Tombol"
1394
1395 #: ../../../src/MenuNumPicker.cpp:59
1396 msgid "Enter amount:"
1397 msgstr "Masukan jumlah:"
1398
1399 #: ../../../src/MenuPowers.cpp:894
1400 msgid "Passive"
1401 msgstr "Pasif"
1402
1403 #: ../../../src/MenuPowers.cpp:901
1404 #, c-format
1405 msgid "Costs %d MP"
1406 msgstr "Biaya %d MP"
1407
1408 #: ../../../src/MenuPowers.cpp:905
1409 #, c-format
1410 msgid "Costs %d HP"
1411 msgstr "Biaya %d HP"
1412
1413 #: ../../../src/MenuPowers.cpp:909
1414 msgid "Cooldown:"
1415 msgstr "Cooldown:"
1416
1417 #: ../../../src/MenuPowers.cpp:960 ../../../src/MenuPowers.cpp:963
1418 msgid "Damage per second"
1419 msgstr "Damage per detik"
1420
1421 #: ../../../src/MenuPowers.cpp:966 ../../../src/MenuPowers.cpp:969
1422 msgid "HP per second"
1423 msgstr "HP per detik"
1424
1425 #: ../../../src/MenuPowers.cpp:972 ../../../src/MenuPowers.cpp:975
1426 msgid "MP per second"
1427 msgstr "MP per detik"
1428
1429 #: ../../../src/MenuPowers.cpp:979
1430 msgid "Immobilize"
1431 msgstr "Melumpuhkan"
1432
1433 #: ../../../src/MenuPowers.cpp:987
1434 msgid "Immunity"
1435 msgstr "Kekebalan"
1436
1437 #: ../../../src/MenuPowers.cpp:990
1438 msgid "Immunity to damage over time"
1439 msgstr "Kekebalan dari damage dari waktu ke waktu"
1440
1441 #: ../../../src/MenuPowers.cpp:993
1442 msgid "Immunity to slow"
1443 msgstr "Kekebalan dari melambat"
1444
1445 #: ../../../src/MenuPowers.cpp:996
1446 msgid "Immunity to stun"
1447 msgstr "Kekebalan dari pingsan"
1448
1449 #: ../../../src/MenuPowers.cpp:999
1450 msgid "Immunity to HP steal"
1451 msgstr "Kekebalan dari pencurian HP"
1452
1453 #: ../../../src/MenuPowers.cpp:1002
1454 msgid "Immunity to MP steal"
1455 msgstr "Kekebalan dari pencurian MP"
1456
1457 #: ../../../src/MenuPowers.cpp:1005
1458 msgid "Immunity to knockback"
1459 msgstr "Kekebalan dari dorongan ke belakang"
1460
1461 #: ../../../src/MenuPowers.cpp:1008
1462 msgid "Immunity to damage reflection"
1463 msgstr "Kekebalan dari refleksi damage"
1464
1465 #: ../../../src/MenuPowers.cpp:1014
1466 msgid "Stun"
1467 msgstr "Pingsan"
1468
1469 #: ../../../src/MenuPowers.cpp:1017
1470 msgid "Automatic revive on death"
1471 msgstr "Otomatis menghidupkan kembali di kematian"
1472
1473 #: ../../../src/MenuPowers.cpp:1020
1474 msgid "Convert"
1475 msgstr "Tukar"
1476
1477 #: ../../../src/MenuPowers.cpp:1023
1478 msgid "Fear"
1479 msgstr "Takut"
1480
1481 #: ../../../src/MenuPowers.cpp:1026
1482 msgid "Lifespan"
1483 msgstr "Masa hidup"
1484
1485 #: ../../../src/MenuPowers.cpp:1050
1486 msgid "Magical Shield"
1487 msgstr "Perisai Magis"
1488
1489 #: ../../../src/MenuPowers.cpp:1079
1490 msgid "Healing"
1491 msgstr "Menyembuhkan"
1492
1493 #: ../../../src/MenuPowers.cpp:1082
1494 msgid "Knockback"
1495 msgstr "Didorong ke belakang"
1496
1497 #: ../../../src/MenuPowers.cpp:1106
1498 #, c-format
1499 msgid "%d%% chance"
1500 msgstr "%d%% peluang"
1501
1502 #: ../../../src/MenuPowers.cpp:1158
1503 msgid "Base Accuracy"
1504 msgstr "Akurasi Dasar"
1505
1506 #: ../../../src/MenuPowers.cpp:1178
1507 msgid "Base Critical Chance"
1508 msgstr "Peluang Kritis dasar"
1509
1510 #: ../../../src/MenuPowers.cpp:1186
1511 msgid "Ignores Absorbtion"
1512 msgstr "Mengabaikan Penyerapan"
1513
1514 #: ../../../src/MenuPowers.cpp:1191
1515 msgid "Ignores Avoidance"
1516 msgstr "Mengabaikan Penghindaran"
1517
1518 #: ../../../src/MenuPowers.cpp:1196
1519 #, c-format
1520 msgid "%d%% Chance to crit slowed targets"
1521 msgstr "%d%% Peluang untuk mengkritisi target yang diperlambat"
1522
1523 #: ../../../src/MenuPowers.cpp:1201
1524 #, c-format
1525 msgid "Elemental Damage (%s)"
1526 msgstr "Damage Elemen (%s)"
1527
1528 #: ../../../src/MenuPowers.cpp:1210
1529 #, c-format
1530 msgid "Requires a %s"
1531 msgstr "Membutuhkan %s"
1532
1533 #: ../../../src/MenuPowers.cpp:1248 ../../../src/MenuPowers.cpp:1251
1534 #, c-format
1535 msgid "Requires Power: %s"
1536 msgstr "Membutuhkan Kekuatan: %s"
1537
1538 #: ../../../src/MenuPowers.cpp:1260
1539 msgid "Click to Unlock (uses 1 Skill Point)"
1540 msgstr "Klik untuk Membuka (gunakan 1 Poin Skill)"
1541
1542 #: ../../../src/MenuPowers.cpp:1264 ../../../src/MenuPowers.cpp:1266
1543 msgid "Requires 1 Skill Point"
1544 msgstr "Membutuhkan 1 Poin Skill"
1545
1546 #: ../../../src/MenuPowers.cpp:1466
1547 #, c-format
1548 msgid "Available skill points: %d"
1549 msgstr "Tersedia Poin Skill: %d"
1550
1551 #: ../../../src/MenuPowers.cpp:1498
1552 msgid "Next Level:"
1553 msgstr "Level Berikutnya:"
1554
1555 #: ../../../src/MenuStash.cpp:80 ../../../src/MenuStash.cpp:161
1556 msgid "Stash"
1557 msgstr "Penyimpanan"
1558
1559 #: ../../../src/MenuStash.cpp:174 ../../../src/MenuStash.cpp:188
1560 msgid "Private"
1561 msgstr "Privasi"
1562
1563 #: ../../../src/MenuStash.cpp:175
1564 msgid "Shared"
1565 msgstr "Dibagi"
1566
1567 #: ../../../src/MenuStash.cpp:340
1568 msgid "This item can not be stored in the stash."
1569 msgstr "Item ini tidak dapat disimpan di penyimpanan."
1570
1571 #: ../../../src/MenuStash.cpp:345
1572 msgid "This item can not be stored in the private stash."
1573 msgstr "Item ini tidak dapat disimpan di penyimpanan pribadi."
1574
1575 #: ../../../src/MenuStash.cpp:350
1576 msgid "This item can not be stored in the shared stash."
1577 msgstr "Item ini tidak dapat disimpan di penyimpanan bersama."
1578
1579 #: ../../../src/MenuStash.cpp:360
1580 msgid "Stash is full."
1581 msgstr "Penyimpanan Penuh"
1582
1583 #: ../../../src/MenuStash.cpp:414
1584 #, c-format
1585 msgid "Can not store item in stash: %s"
1586 msgstr "Tidak dapat menyimpan item di penyimpanan: %s"
1587
1588 #: ../../../src/MenuTalker.cpp:448
1589 #, c-format
1590 msgid "<dialog node %d>"
1591 msgstr "<dialog node %d>"
1592
1593 #: ../../../src/MenuTalker.cpp:456
1594 msgid "Trade"
1595 msgstr "Dagang"
1596
1597 #: ../../../src/MenuVendor.cpp:60
1598 msgid "Buyback"
1599 msgstr "Beli kembali"
1600
1601 #: ../../../src/MenuVendor.cpp:283
1602 msgid "Vendor"
1603 msgstr "Penjual"
1604
1605 #: ../../../src/PowerManager.cpp:1204
1606 #, c-format
1607 msgid "+%d Shield"
1608 msgstr "+%d Perisai"
1609
1610 #: ../../../src/PowerManager.cpp:1461
1611 msgid "You are already transformed, untransform first."
1612 msgstr "Anda sudah bertransformasi, batalkan transformasi dulu."
1613
1614 #: ../../../src/PowerManager.cpp:1473
1615 msgid "Could not untransform at this position."
1616 msgstr "Tidak dapat membatalkan transformasi pada posisi ini."
1617
1618 #: ../../../src/QuestLog.cpp:234
1619 msgid "Completed Quests"
1620 msgstr "Pencarian Selesai"
1621
1622 #: ../../../src/SaveLoad.cpp:250 ../../../src/SaveLoad.cpp:251
1623 msgid "Game saved."
1624 msgstr "Game tersimpan."
1625
1626 #: ../../../src/SDLInputState.cpp:645
1627 msgid "BkSp"
1628 msgstr "BkSp"
1629
1630 #: ../../../src/SDLInputState.cpp:646
1631 msgid "Caps"
1632 msgstr "Caps"
1633
1634 #: ../../../src/SDLInputState.cpp:647
1635 msgid "Del"
1636 msgstr "Del"
1637
1638 #: ../../../src/SDLInputState.cpp:649 ../../../src/SDLInputState.cpp:679
1639 msgid "End"
1640 msgstr "End"
1641
1642 #: ../../../src/SDLInputState.cpp:650
1643 msgid "Esc"
1644 msgstr "Esc"
1645
1646 #: ../../../src/SDLInputState.cpp:651 ../../../src/SDLInputState.cpp:681
1647 msgid "Home"
1648 msgstr "Home"
1649
1650 #: ../../../src/SDLInputState.cpp:652
1651 msgid "Ins"
1652 msgstr "Ins"
1653
1654 #: ../../../src/SDLInputState.cpp:653
1655 msgid "LAlt"
1656 msgstr "LAlt"
1657
1658 #: ../../../src/SDLInputState.cpp:654
1659 msgid "LCtrl"
1660 msgstr "LCtrl"
1661
1662 #: ../../../src/SDLInputState.cpp:656
1663 msgid "LShft"
1664 msgstr "LShft"
1665
1666 #: ../../../src/SDLInputState.cpp:657
1667 msgid "Num"
1668 msgstr "Num"
1669
1670 #: ../../../src/SDLInputState.cpp:658
1671 msgid "PgDn"
1672 msgstr "PgDn"
1673
1674 #: ../../../src/SDLInputState.cpp:659
1675 msgid "PgUp"
1676 msgstr "PgUp"
1677
1678 #: ../../../src/SDLInputState.cpp:660 ../../../src/SDLInputState.cpp:690
1679 msgid "Pause"
1680 msgstr "Pause"
1681
1682 #: ../../../src/SDLInputState.cpp:661
1683 msgid "Print"
1684 msgstr "Print"
1685
1686 #: ../../../src/SDLInputState.cpp:662
1687 msgid "RAlt"
1688 msgstr "RAlt"
1689
1690 #: ../../../src/SDLInputState.cpp:663
1691 msgid "RCtrl"
1692 msgstr "RCtrl"
1693
1694 #: ../../../src/SDLInputState.cpp:664
1695 msgid "Ret"
1696 msgstr "Ret"
1697
1698 #: ../../../src/SDLInputState.cpp:666
1699 msgid "RShft"
1700 msgstr "RShft"
1701
1702 #: ../../../src/SDLInputState.cpp:667
1703 msgid "SLock"
1704 msgstr "SLock"
1705
1706 #: ../../../src/SDLInputState.cpp:668
1707 msgid "Spc"
1708 msgstr "Spc"
1709
1710 #: ../../../src/SDLInputState.cpp:669 ../../../src/SDLInputState.cpp:699
1711 msgid "Tab"
1712 msgstr "Tab"
1713
1714 #: ../../../src/SDLInputState.cpp:675
1715 msgid "Backspace"
1716 msgstr "Backspace"
1717
1718 #: ../../../src/SDLInputState.cpp:676
1719 msgid "CapsLock"
1720 msgstr "CapsLock"
1721
1722 #: ../../../src/SDLInputState.cpp:680
1723 msgid "Escape"
1724 msgstr "Escape"
1725
1726 #: ../../../src/SDLInputState.cpp:682
1727 msgid "Insert"
1728 msgstr "Insert"
1729
1730 #: ../../../src/SDLInputState.cpp:683
1731 msgid "Left Alt"
1732 msgstr "Left Alt"
1733
1734 #: ../../../src/SDLInputState.cpp:684
1735 msgid "Left Ctrl"
1736 msgstr "Left Ctrl"
1737
1738 #: ../../../src/SDLInputState.cpp:686
1739 msgid "Left Shift"
1740 msgstr "Left Shift"
1741
1742 #: ../../../src/SDLInputState.cpp:687
1743 msgid "NumLock"
1744 msgstr "NumLock"
1745
1746 #: ../../../src/SDLInputState.cpp:688
1747 msgid "PageDown"
1748 msgstr "PageDown"
1749
1750 #: ../../../src/SDLInputState.cpp:689
1751 msgid "PageUp"
1752 msgstr "PageUp"
1753
1754 #: ../../../src/SDLInputState.cpp:691
1755 msgid "PrintScreen"
1756 msgstr "PrintScreen"
1757
1758 #: ../../../src/SDLInputState.cpp:692
1759 msgid "Right Alt"
1760 msgstr "Right Alt"
1761
1762 #: ../../../src/SDLInputState.cpp:693
1763 msgid "Right Ctrl"
1764 msgstr "Right Ctrl"
1765
1766 #: ../../../src/SDLInputState.cpp:694
1767 msgid "Return"
1768 msgstr "Kembali"
1769
1770 #: ../../../src/SDLInputState.cpp:696
1771 msgid "Right Shift"
1772 msgstr "Right Shift"
1773
1774 #: ../../../src/SDLInputState.cpp:697
1775 msgid "ScrollLock"
1776 msgstr "ScrollLock"
1777
1778 #: ../../../src/SDLInputState.cpp:698
1779 msgid "Space"
1780 msgstr "Space"
1781
1782 #: ../../../src/SDLInputState.cpp:712
1783 #, c-format
1784 msgid "M%d"
1785 msgstr "M%d"
1786
1787 #: ../../../src/SDLInputState.cpp:718
1788 #, c-format
1789 msgid "Mouse %d"
1790 msgstr "Mouse %d"
1791
1792 #: ../../../src/SDLInputState.cpp:728
1793 #, c-format
1794 msgid "JX%d-"
1795 msgstr "JX%d-"
1796
1797 #: ../../../src/SDLInputState.cpp:730
1798 #, c-format
1799 msgid "Axis %d -"
1800 msgstr "Axis %d -"
1801
1802 #: ../../../src/SDLInputState.cpp:734
1803 #, c-format
1804 msgid "JX%d+"
1805 msgstr "JX%d+"
1806
1807 #: ../../../src/SDLInputState.cpp:736
1808 #, c-format
1809 msgid "Axis %d +"
1810 msgstr "Axis %d +"
1811
1812 #: ../../../src/SDLInputState.cpp:741
1813 #, c-format
1814 msgid "JB%d"
1815 msgstr "JB%d"
1816
1817 #: ../../../src/SDLInputState.cpp:743
1818 #, c-format
1819 msgid "Button %d"
1820 msgstr "Tombol %d"
1821
1822 #: ../../../src/SDLInputState.cpp:789
1823 msgid "Touch control D-Pad"
1824 msgstr "D-Pad Kontrol sentuh"
1825
1826 #: ../../../src/SDLInputState.cpp:812
1827 msgid "Touch control buttons"
1828 msgstr "Tombol kontrol sentuh"
1829
1830 #: ../../../src/SDLInputState.cpp:826
1831 msgid "Tap"
1832 msgstr "Ketuk"
1833
1834 #: ../../../src/SDLInputState.cpp:878 ../../../src/SDLInputState.cpp:880
1835 #, c-format
1836 msgid "Can not bind: %s"
1837 msgstr "Tidak bisa mengikat: %s"
1838
1839 #: ../../../src/SDLInputState.cpp:892 ../../../src/SDLInputState.cpp:896
1840 #: ../../../src/SDLInputState.cpp:900
1841 #, c-format
1842 msgid "'%s' is no longer bound to:"
1843 msgstr "'%s' tidak lagi terikat pada:"
1844
1845 #: ../../../src/Stats.cpp:38
1846 msgid "Max HP"
1847 msgstr "HP Maksimal"
1848
1849 #: ../../../src/Stats.cpp:39
1850 msgid "Total amount of HP."
1851 msgstr "Jumlah total HP."
1852
1853 #: ../../../src/Stats.cpp:43
1854 msgid "HP Regen"
1855 msgstr "Regenerasi HP"
1856
1857 #: ../../../src/Stats.cpp:44
1858 msgid "Ticks of HP regen per minute."
1859 msgstr "Kutu regenerasi HP per menit."
1860
1861 #: ../../../src/Stats.cpp:48
1862 msgid "Max MP"
1863 msgstr "MP Maksimal"
1864
1865 #: ../../../src/Stats.cpp:49
1866 msgid "Total amount of MP."
1867 msgstr "Jumlah total MP."
1868
1869 #: ../../../src/Stats.cpp:53
1870 msgid "MP Regen"
1871 msgstr "Regenerasi MP"
1872
1873 #: ../../../src/Stats.cpp:54
1874 msgid "Ticks of MP regen per minute."
1875 msgstr "Kutu regenerasi MP per menit."
1876
1877 #: ../../../src/Stats.cpp:58
1878 msgid "Accuracy"
1879 msgstr "Akurasi"
1880
1881 #: ../../../src/Stats.cpp:59
1882 msgid ""
1883 "Accuracy rating. The enemy's Avoidance rating is subtracted from this value "
1884 "to calculate your likeliness to land a direct hit."
1885 msgstr ""
1886 "Peringkat akurasi. Peringkat Penghindaran musuh dikurangi dari nilai ini "
1887 "untuk menghitung kemungkinan Anda mendaratkan pukulan langsung."
1888
1889 #: ../../../src/Stats.cpp:63
1890 msgid "Avoidance"
1891 msgstr "Penghindaran"
1892
1893 #: ../../../src/Stats.cpp:64
1894 msgid ""
1895 "Avoidance rating. This value is subtracted from the enemy's Accuracy rating "
1896 "to calculate their likeliness to land a direct hit."
1897 msgstr ""
1898 "Peringkat penghindaran. Nilai ini dikurangi dari peringkat Akurasi musuh "
1899 "untuk menghitung kemungkinan mereka mendaratkan serangan langsung."
1900
1901 #: ../../../src/Stats.cpp:68
1902 msgid "Absorb Min"
1903 msgstr "Minimal Penyerapan"
1904
1905 #: ../../../src/Stats.cpp:69 ../../../src/Stats.cpp:74
1906 msgid "Reduces the amount of damage taken."
1907 msgstr "Mengurangi jumlah damage yang diterima."
1908
1909 #: ../../../src/Stats.cpp:73
1910 msgid "Absorb Max"
1911 msgstr "Maksimal Penyerapan"
1912
1913 #: ../../../src/Stats.cpp:78
1914 msgid "Critical Hit Chance"
1915 msgstr "Peluang Pukulan Kritis"
1916
1917 #: ../../../src/Stats.cpp:79
1918 msgid "Chance for an attack to do extra damage."
1919 msgstr "Peluang serangan untuk melakukan damage tambahan."
1920
1921 #: ../../../src/Stats.cpp:83
1922 msgid "Bonus XP"
1923 msgstr "XP Bonus"
1924
1925 #: ../../../src/Stats.cpp:84
1926 msgid "Increases the XP gained per kill."
1927 msgstr "Meningkatkan XP yang diperoleh tiap membunuh."
1928
1929 #: ../../../src/Stats.cpp:88
1930 #, c-format
1931 msgid "Bonus %s"
1932 msgstr "Bonus %s"
1933
1934 #: ../../../src/Stats.cpp:89
1935 #, c-format
1936 msgid "Increases the %s found per drop."
1937 msgstr "meningkatkan %s penemuan tiap menjatuhkan."
1938
1939 #: ../../../src/Stats.cpp:93
1940 msgid "Item Find Chance"
1941 msgstr "Peluang Penemukan Item"
1942
1943 #: ../../../src/Stats.cpp:94
1944 msgid "Increases the chance that an enemy will drop an item."
1945 msgstr "Meningkatkan kemungkinan musuh akan menjatuhkan item."
1946
1947 #: ../../../src/Stats.cpp:98
1948 msgid "Stealth"
1949 msgstr "Sembunyi"
1950
1951 #: ../../../src/Stats.cpp:99
1952 msgid "Increases your ability to move undetected."
1953 msgstr "Meningkatkan kemampuan Anda untuk bergerak tanpa terdeteksi."
1954
1955 #: ../../../src/Stats.cpp:103
1956 msgid "Poise"
1957 msgstr "Seimbang"
1958
1959 #: ../../../src/Stats.cpp:104
1960 msgid "Reduces your chance of stumbling when hit."
1961 msgstr "Mengurangi kemungkinan Anda tersandung saat terkena."
1962
1963 #: ../../../src/Stats.cpp:108
1964 msgid "Missile Reflect Chance"
1965 msgstr "Peluang Refleksi Rudal"
1966
1967 #: ../../../src/Stats.cpp:109
1968 msgid "Increases your chance of reflecting missiles back at enemies."
1969 msgstr "Meningkatkan peluang Anda untuk memantulkan rudal kembali ke musuh."
1970
1971 #: ../../../src/Stats.cpp:113
1972 msgid "Damage Reflection"
1973 msgstr "Damage Refleksi"
1974
1975 #: ../../../src/Stats.cpp:114
1976 msgid "Deals a percentage of damage taken back to the attacker."
1977 msgstr "Memberikan persentase kerusakan yang dikembalikan ke penyerang."
1978
1979 #: ../../../src/Stats.cpp:118
1980 msgid "HP Steal"
1981 msgstr "Pencurian HP"
1982
1983 #: ../../../src/Stats.cpp:119
1984 msgid "Percentage of HP stolen per hit."
1985 msgstr "Persentase HP yang dicuri per pukulan."
1986
1987 #: ../../../src/Stats.cpp:123
1988 msgid "MP Steal"
1989 msgstr "Pencurian MP"
1990
1991 #: ../../../src/Stats.cpp:124
1992 msgid "Percentage of MP stolen per hit."
1993 msgstr "Persentase MP yang dicuri per pukulan."
1994
1995 #: ../../../src/Stats.cpp:128
1996 msgid "Base HP"
1997 msgstr "HP Dasar"
1998
1999 #: ../../../src/Stats.cpp:133
2000 msgid "Base MP"
2001 msgstr "MP Dasar"
2002
2003 #: ../../../src/Utils.cpp:365
2004 msgid "k"
2005 msgstr "k"
2006
2007 #: ../../../src/Utils.cpp:635
2008 #, c-format
2009 msgid "%s second"
2010 msgstr "%s detik"
2011
2012 #: ../../../src/Utils.cpp:638
2013 #, c-format
2014 msgid "%s seconds"
2015 msgstr "%s detik"
2016
2017 #: ../../../src/Version.cpp:139
2018 msgid "or newer"
2019 msgstr "atau lebih baru"
2020
2021 #: ../../../src/Version.cpp:142
2022 msgid "or older"
2023 msgstr "atau lebih lama"
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-07-02 13:26-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:1220
134 #: ../../../src/StatBlock.cpp:926 ../../../src/StatBlock.cpp:932
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:937
140 #: ../../../src/StatBlock.cpp:943
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:704
182 msgid "Entering game world..."
183 msgstr "Ingresso nel mondo di gioco..."
184
185 #: ../../../src/GameStateLoad.cpp:707
186 msgid "Loading saved game..."
187 msgstr "Caricamento partita..."
188
189 #: ../../../src/GameStateLoad.cpp:740
190 msgid "Invalid save"
191 msgstr "Salvataggio corrotto"
192
193 #: ../../../src/GameStateLoad.cpp:764 ../../../src/ItemManager.cpp:745
194 #: ../../../src/MenuPowers.cpp:882 ../../../src/MenuPowers.cpp:1241
195 #: ../../../src/MenuPowers.cpp:1653
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:254
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:670
255 #: ../../../src/SDLInputState.cpp:700
256 msgid "Up"
257 msgstr "Su"
258
259 #: ../../../src/InputState.cpp:419 ../../../src/MenuMovementType.cpp:125
260 #: ../../../src/MenuMovementType.cpp:134 ../../../src/SDLInputState.cpp:648
261 #: ../../../src/SDLInputState.cpp:678
262 msgid "Down"
263 msgstr "Giù"
264
265 #: ../../../src/InputState.cpp:420 ../../../src/MenuMovementType.cpp:124
266 #: ../../../src/MenuMovementType.cpp:133 ../../../src/SDLInputState.cpp:655
267 #: ../../../src/SDLInputState.cpp:685
268 msgid "Left"
269 msgstr "Sinistra"
270
271 #: ../../../src/InputState.cpp:421 ../../../src/MenuMovementType.cpp:126
272 #: ../../../src/MenuMovementType.cpp:135 ../../../src/SDLInputState.cpp:665
273 #: ../../../src/SDLInputState.cpp:695
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:159
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:677
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:981
414 #, c-format
415 msgid "%d%% Speed"
416 msgstr "%d%% Velocità"
417
418 #: ../../../src/ItemManager.cpp:650 ../../../src/MenuPowers.cpp:984
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:953
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:1228
454 #: ../../../src/MenuPowers.cpp:1231
455 #, c-format
456 msgid "Requires Level %d"
457 msgstr "Richiede Livello %d"
458
459 #: ../../../src/ItemManager.cpp:836 ../../../src/MenuPowers.cpp:1220
460 #: ../../../src/MenuPowers.cpp:1222
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:898
491 msgid "Set:"
492 msgstr "Completo:"
493
494 #: ../../../src/ItemManager.cpp:905
495 #, c-format
496 msgid "%d items:"
497 msgstr "%d oggetti:"
498
499 #: ../../../src/ItemManager.cpp:920
500 #, c-format
501 msgid "Press [%s] to read"
502 msgstr "Premi [%s] per leggere"
503
504 #: ../../../src/ItemManager.cpp:923
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:1256
581 msgid "Clear"
582 msgstr "Pulisci"
583
584 #: ../../../src/MenuConfig.cpp:122 ../../../src/MenuConfig.cpp:1254
585 msgid "Assign:"
586 msgstr "Assegnazioni:"
587
588 #: ../../../src/MenuConfig.cpp:123 ../../../src/MenuConfig.cpp:253
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:252 ../../../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:256 ../../../src/MenuGameOver.cpp:72
601 msgid "Continue"
602 msgstr ""
603
604 #: ../../../src/MenuConfig.cpp:258
605 msgid "Save Game"
606 msgstr ""
607
608 #: ../../../src/MenuConfig.cpp:301 ../../../src/MenuConfig.cpp:352
609 msgid "Default"
610 msgstr ""
611
612 #: ../../../src/MenuConfig.cpp:301
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:302
619 msgid "Show all"
620 msgstr ""
621
622 #: ../../../src/MenuConfig.cpp:302
623 msgid ""
624 "Always show loot tooltips. Temporarily hide all loot tooltips with 'Alt'."
625 msgstr ""
626
627 #: ../../../src/MenuConfig.cpp:303 ../../../src/MenuConfig.cpp:308
628 msgid "Hidden"
629 msgstr ""
630
631 #: ../../../src/MenuConfig.cpp:303
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:306
638 msgid "Visible"
639 msgstr ""
640
641 #: ../../../src/MenuConfig.cpp:307
642 msgid "Visible (2x zoom)"
643 msgstr ""
644
645 #: ../../../src/MenuConfig.cpp:311
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:312
652 msgid "- Display a message"
653 msgstr ""
654
655 #: ../../../src/MenuConfig.cpp:313
656 msgid "- Play a sound"
657 msgstr ""
658
659 #: ../../../src/MenuConfig.cpp:314
660 msgid "- Change the cursor"
661 msgstr ""
662
663 #: ../../../src/MenuConfig.cpp:316
664 msgid "Disabled"
665 msgstr ""
666
667 #: ../../../src/MenuConfig.cpp:317
668 msgid "All"
669 msgstr ""
670
671 #: ../../../src/MenuConfig.cpp:318
672 msgid "Message & Cursor"
673 msgstr ""
674
675 #: ../../../src/MenuConfig.cpp:319
676 msgid "Message & Sound"
677 msgstr ""
678
679 #: ../../../src/MenuConfig.cpp:320
680 msgid "Sound & Cursor"
681 msgstr ""
682
683 #: ../../../src/MenuConfig.cpp:321
684 msgid "Message"
685 msgstr ""
686
687 #: ../../../src/MenuConfig.cpp:322
688 msgid "Cursor"
689 msgstr ""
690
691 #: ../../../src/MenuConfig.cpp:323
692 msgid "Sound"
693 msgstr ""
694
695 #: ../../../src/MenuConfig.cpp:329
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:347
702 msgid "The maximum frame rate that the game will be allowed to run at."
703 msgstr ""
704
705 #: ../../../src/MenuConfig.cpp:351
706 msgid ""
707 "The render size refers to the height in pixels of the surface used to draw "
708 "the game. Mods define the allowed render sizes, but this option allows "
709 "overriding the maximum size."
710 msgstr ""
711
712 #: ../../../src/MenuConfig.cpp:374 ../../../src/MenuConfig.cpp:1679
713 #: ../../../src/MenuGameOver.cpp:116
714 msgid "Exit"
715 msgstr "Esci"
716
717 #: ../../../src/MenuConfig.cpp:375
718 msgid "Video"
719 msgstr "Video"
720
721 #: ../../../src/MenuConfig.cpp:376
162722 msgid "Audio"
163723 msgstr "Audio"
164724
165 #: ../../../src/GameStateConfigBase.cpp:161
166 #: ../../../src/GameStateConfigDesktop.cpp:131
725 #: ../../../src/MenuConfig.cpp:377
167726 msgid "Interface"
168727 msgstr "Interfaccia"
169728
170 #: ../../../src/GameStateConfigBase.cpp:162
171 #: ../../../src/GameStateConfigDesktop.cpp:134
729 #: ../../../src/MenuConfig.cpp:378
730 msgid "Input"
731 msgstr "Input"
732
733 #: ../../../src/MenuConfig.cpp:379
734 msgid "Keybindings"
735 msgstr "Scorciatoie da tastiera"
736
737 #: ../../../src/MenuConfig.cpp:380
172738 msgid "Mods"
173739 msgstr "Mod"
174740
175 #: ../../../src/GameStateConfigBase.cpp:249 ../../../src/MenuExit.cpp:72
741 #: ../../../src/MenuConfig.cpp:392
742 msgid "Paused"
743 msgstr "In pausa"
744
745 #: ../../../src/MenuConfig.cpp:395
746 msgid "Time Played"
747 msgstr ""
748
749 #: ../../../src/MenuConfig.cpp:401
750 msgid "Renderer"
751 msgstr "Renderer"
752
753 #: ../../../src/MenuConfig.cpp:402
754 msgid "Full Screen Mode"
755 msgstr "Modalità schermo intero"
756
757 #: ../../../src/MenuConfig.cpp:403
758 msgid "Hardware surfaces"
759 msgstr "Superfici solide"
760
761 #: ../../../src/MenuConfig.cpp:404
762 msgid "V-Sync"
763 msgstr "V-Sync"
764
765 #: ../../../src/MenuConfig.cpp:405
766 msgid "Texture Filtering"
767 msgstr "Filtro texture"
768
769 #: ../../../src/MenuConfig.cpp:406
770 msgid "DPI scaling"
771 msgstr "dimensione DPI"
772
773 #: ../../../src/MenuConfig.cpp:407
774 msgid "Parallax Layers"
775 msgstr ""
776
777 #: ../../../src/MenuConfig.cpp:408
778 msgid "Allow changing gamma"
779 msgstr "Permetti cambio di gamma"
780
781 #: ../../../src/MenuConfig.cpp:409
782 msgid "Gamma"
783 msgstr "Gamma"
784
785 #: ../../../src/MenuConfig.cpp:410
786 msgid "Maximum Render Size"
787 msgstr ""
788
789 #: ../../../src/MenuConfig.cpp:411
790 msgid "Frame Limit"
791 msgstr ""
792
793 #: ../../../src/MenuConfig.cpp:413
794 msgid "Sound Volume"
795 msgstr "Volume audio"
796
797 #: ../../../src/MenuConfig.cpp:414
176798 msgid "Music Volume"
177799 msgstr "Volume musica"
178800
179 #: ../../../src/GameStateConfigBase.cpp:253 ../../../src/MenuExit.cpp:77
180 msgid "Sound Volume"
181 msgstr "Volume audio"
182
183 #: ../../../src/GameStateConfigBase.cpp:257
801 #: ../../../src/MenuConfig.cpp:416
184802 msgid "Language"
185803 msgstr "Lingua"
186804
187 #: ../../../src/GameStateConfigBase.cpp:266
805 #: ../../../src/MenuConfig.cpp:417
188806 msgid "Show FPS"
189807 msgstr "Mostra FPS"
190808
191 #: ../../../src/GameStateConfigBase.cpp:270
809 #: ../../../src/MenuConfig.cpp:418
810 msgid "Hardware mouse cursor"
811 msgstr "Hardware cursore mouse"
812
813 #: ../../../src/MenuConfig.cpp:419
192814 msgid "Colorblind Mode"
193815 msgstr "Modalità per daltonici"
194816
195 #: ../../../src/GameStateConfigBase.cpp:274
196 msgid "Hardware mouse cursor"
197 msgstr "Hardware cursore mouse"
198
199 #: ../../../src/GameStateConfigBase.cpp:278
817 #: ../../../src/MenuConfig.cpp:420
200818 msgid "Developer Mode"
201819 msgstr "Modalità Sviluppatore"
202820
203 #: ../../../src/GameStateConfigBase.cpp:282
821 #: ../../../src/MenuConfig.cpp:421
204822 msgid "Subtitles"
205823 msgstr "Sottotitoli"
206824
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
825 #: ../../../src/MenuConfig.cpp:422
826 msgid "Loot tooltip visibility"
827 msgstr ""
828
829 #: ../../../src/MenuConfig.cpp:423
830 msgid "Mini-map mode"
831 msgstr ""
832
833 #: ../../../src/MenuConfig.cpp:424
834 msgid "Always show stat bar labels"
835 msgstr "Mostra sempre le etichette della barra"
836
837 #: ../../../src/MenuConfig.cpp:425
838 msgid "Allow stat bar auto-hiding"
839 msgstr ""
840
841 #: ../../../src/MenuConfig.cpp:426
842 msgid "Show combat text"
843 msgstr "Mostra testo combattimento"
844
845 #: ../../../src/MenuConfig.cpp:427
846 msgid "Automatically equip items"
847 msgstr "Equipaggia gli oggetti automaticamente"
848
849 #: ../../../src/MenuConfig.cpp:428
850 msgid "Show hidden entity markers"
851 msgstr ""
852
853 #: ../../../src/MenuConfig.cpp:429
854 msgid "Low health notification"
855 msgstr ""
856
857 #: ../../../src/MenuConfig.cpp:430
858 msgid "Low health threshold"
859 msgstr ""
860
861 #: ../../../src/MenuConfig.cpp:431
862 msgid "Show item comparison tooltips"
863 msgstr ""
864
865 #: ../../../src/MenuConfig.cpp:434 ../../../src/MenuMovementType.cpp:94
866 #: ../../../src/MenuMovementType.cpp:131
867 msgid "Joystick"
868 msgstr "Joystick"
869
870 #: ../../../src/MenuConfig.cpp:435
871 msgid "Move hero using mouse"
872 msgstr "Muovi Eroe tramite mouse"
873
874 #: ../../../src/MenuConfig.cpp:436
875 msgid "Mouse aim"
876 msgstr "Mira via mouse"
877
878 #: ../../../src/MenuConfig.cpp:437
879 msgid "Do not use mouse"
880 msgstr "Non usare il mouse"
881
882 #: ../../../src/MenuConfig.cpp:438
883 msgid "Swap mouse movement button"
884 msgstr ""
885
886 #: ../../../src/MenuConfig.cpp:439
887 msgid "Attack with mouse movement"
888 msgstr ""
889
890 #: ../../../src/MenuConfig.cpp:440
891 msgid "Joystick Deadzone"
892 msgstr "Zona neutra Joystick"
893
894 #: ../../../src/MenuConfig.cpp:441
895 msgid "Touch Controls"
896 msgstr ""
897
898 #: ../../../src/MenuConfig.cpp:442
899 msgid "Touch Gamepad Scaling"
900 msgstr ""
901
902 #: ../../../src/MenuConfig.cpp:452
903 #, c-format
904 msgid "Primary binding: %s"
905 msgstr ""
906
907 #: ../../../src/MenuConfig.cpp:453
908 #, c-format
909 msgid "Alternate binding: %s"
910 msgstr ""
911
912 #: ../../../src/MenuConfig.cpp:454
913 #, c-format
914 msgid "Joystick binding: %s"
915 msgstr ""
916
917 #: ../../../src/MenuConfig.cpp:556
262918 msgid ""
263919 "Will try to store surfaces in video memory versus system memory. The effect "
264920 "this has on performance depends on the renderer."
266922 "Cerca di caricare le superfici nella memoria video anziché in quella di "
267923 "sistema. L'effetto sulla performance dipende dalla scheda video."
268924
269 #: ../../../src/GameStateConfigDesktop.cpp:189
925 #: ../../../src/MenuConfig.cpp:557
270926 msgid ""
271927 "Prevents screen tearing. Disable if you experience \"stuttering\" in "
272928 "windowed mode or input lag."
274930 "Previene il tearing dello schermo. Disabilita se sperimenti lo "
275931 "\"stuttering\" nel modo 'windowed' o un ritardo nell'input."
276932
277 #: ../../../src/GameStateConfigDesktop.cpp:190
933 #: ../../../src/MenuConfig.cpp:558
278934 msgid ""
279935 "When enabled, this uses the screen DPI in addition to the window dimensions "
280936 "to scale the rendering resolution. Otherwise, only the window dimensions are"
284940 "della finestra per modificare la risoluzione. Altrimenti, sono utilizzate "
285941 "solo le dimensioni della finestra."
286942
287 #: ../../../src/GameStateConfigDesktop.cpp:191
943 #: ../../../src/MenuConfig.cpp:559
288944 msgid ""
289945 "This enables parallax (non-tile) layers. Disabling this setting can improve "
290946 "performance in some cases."
291947 msgstr ""
292948
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
949 #: ../../../src/MenuConfig.cpp:560
950 msgid ""
951 "Enables the below setting that controls the screen gamma level. The behavior"
952 " of the gamma setting can vary between platforms."
953 msgstr ""
954
955 #: ../../../src/MenuConfig.cpp:561
956 msgid ""
957 "Provides additional text for information that is primarily conveyed through "
958 "color."
959 msgstr ""
960
961 #: ../../../src/MenuConfig.cpp:562
962 msgid ""
963 "Some mods will automatically hide the stat bars when they are inactive. "
964 "Disabling this option will keep them displayed at all times."
965 msgstr ""
966
967 #: ../../../src/MenuConfig.cpp:563
968 msgid ""
969 "When enabled, empty equipment slots will be filled with applicable items "
970 "when they are obtained."
971 msgstr ""
972
973 #: ../../../src/MenuConfig.cpp:564
974 msgid ""
975 "Shows a marker above enemies, allies, and the player when they are obscured "
976 "by tall objects."
977 msgstr ""
978
979 #: ../../../src/MenuConfig.cpp:565
980 msgid ""
981 "When enabled, tooltips for equipped items of the same type are shown next to"
982 " standard item tooltips."
983 msgstr ""
984
985 #: ../../../src/MenuConfig.cpp:566
986 msgid ""
987 "This allows the game to be controlled entirely with the keyboard (or "
988 "joystick)."
989 msgstr ""
990
991 #: ../../../src/MenuConfig.cpp:567
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
998 #: ../../../src/MenuConfig.cpp:568
999 msgid ""
1000 "When 'Move hero using mouse' is enabled, this setting controls if the Power "
1001 "assigned to the movement button can be used by targeting an enemy. If this "
1002 "setting is disabled, it is required to use 'Shift' to access the Power "
1003 "assigned to the movement button."
1004 msgstr ""
1005
1006 #: ../../../src/MenuConfig.cpp:569
1007 msgid ""
1008 "The player's attacks will be aimed in the direction of the mouse cursor when"
1009 " this is enabled."
1010 msgstr ""
1011
1012 #: ../../../src/MenuConfig.cpp:570
1013 msgid ""
1014 "When enabled, a virtual gamepad will be added in-game. Other interactions, "
1015 "such as drag-and-drop behavior, are also altered to better suit touch input."
1016 msgstr ""
1017
1018 #: ../../../src/MenuConfig.cpp:621
1019 msgid "Active Mods"
1020 msgstr "Mod attive"
1021
1022 #: ../../../src/MenuConfig.cpp:630
1023 msgid "Available Mods"
1024 msgstr "Mod disponibili"
1025
1026 #: ../../../src/MenuConfig.cpp:649
1027 msgid "<< Disable"
1028 msgstr "<< Disabilita"
1029
1030 #: ../../../src/MenuConfig.cpp:655
1031 msgid "Enable >>"
1032 msgstr "Abilita >>"
1033
1034 #: ../../../src/MenuConfig.cpp:1536
1035 msgid "Version:"
1036 msgstr "Versione:"
1037
1038 #: ../../../src/MenuConfig.cpp:1541
1039 msgid "Game:"
1040 msgstr "Gioco:"
1041
1042 #: ../../../src/MenuConfig.cpp:1546
1043 msgid "Engine version:"
1044 msgstr "Versione motore di gioco:"
1045
1046 #: ../../../src/MenuConfig.cpp:1554
1047 msgid "Requires mods:"
1048 msgstr "Richiede mod:"
1049
1050 #: ../../../src/MenuConfig.cpp:1662 ../../../src/SDLInputState.cpp:750
1051 msgid "(none)"
1052 msgstr "(nessuno)"
1053
1054 #: ../../../src/MenuConfig.cpp:1679 ../../../src/MenuGameOver.cpp:73
1055 msgid "Save & Exit"
1056 msgstr "Salva ed esci"
1057
1058 #: ../../../src/MenuDevConsole.cpp:65
8361059 msgid "Execute"
8371060 msgstr "Esegui"
8381061
839 #: ../../../src/MenuDevConsole.cpp:101 ../../../src/MenuDevConsole.cpp:151
1062 #: ../../../src/MenuDevConsole.cpp:103 ../../../src/MenuDevConsole.cpp:153
8401063 msgid "Developer Console"
8411064 msgstr "Console Sviluppatore"
8421065
843 #: ../../../src/MenuDevConsole.cpp:141
1066 #: ../../../src/MenuDevConsole.cpp:143
8441067 #, c-format
8451068 msgid "Use '%s' to inspect with the cursor."
8461069 msgstr "Usa '%s' per esaminare col cursore."
8471070
848 #: ../../../src/MenuDevConsole.cpp:146
1071 #: ../../../src/MenuDevConsole.cpp:148
8491072 msgid "Arguments with spaces should be enclosed with double quotes. Example:"
8501073 msgstr ""
8511074 "Gli argomenti con gli spazi devono essere racchiusi con doppie virgolette. "
8521075 "Esempio:"
8531076
854 #: ../../../src/MenuDevConsole.cpp:147
1077 #: ../../../src/MenuDevConsole.cpp:149
8551078 msgid "Type 'help' to get a list of commands."
8561079 msgstr "Digita 'help' per ottenere un elenco di comandi."
8571080
858 #: ../../../src/MenuDevConsole.cpp:209 ../../../src/MenuDevConsole.cpp:213
1081 #: ../../../src/MenuDevConsole.cpp:211 ../../../src/MenuDevConsole.cpp:215
8591082 msgid "px"
8601083 msgstr "px"
8611084
862 #: ../../../src/MenuDevConsole.cpp:224
1085 #: ../../../src/MenuDevConsole.cpp:226
8631086 msgid "Distance"
8641087 msgstr "Distanza"
8651088
866 #: ../../../src/MenuDevConsole.cpp:239 ../../../src/MenuDevConsole.cpp:286
1089 #: ../../../src/MenuDevConsole.cpp:241 ../../../src/MenuDevConsole.cpp:289
1090 #: ../../../src/MenuDevConsole.cpp:303
8671091 msgid "Entity"
8681092 msgstr "Entità"
8691093
870 #: ../../../src/MenuDevConsole.cpp:261 ../../../src/MenuDevConsole.cpp:268
1094 #: ../../../src/MenuDevConsole.cpp:263 ../../../src/MenuDevConsole.cpp:270
8711095 msgid "none"
8721096 msgstr "nessuno"
8731097
874 #: ../../../src/MenuDevConsole.cpp:262 ../../../src/MenuDevConsole.cpp:264
1098 #: ../../../src/MenuDevConsole.cpp:264 ../../../src/MenuDevConsole.cpp:266
8751099 msgid "wall"
8761100 msgstr "muro"
8771101
878 #: ../../../src/MenuDevConsole.cpp:263 ../../../src/MenuDevConsole.cpp:265
1102 #: ../../../src/MenuDevConsole.cpp:265 ../../../src/MenuDevConsole.cpp:267
8791103 msgid "short wall / pit"
8801104 msgstr "muretto / pozzo"
8811105
882 #: ../../../src/MenuDevConsole.cpp:266
1106 #: ../../../src/MenuDevConsole.cpp:268
8831107 msgid "entity"
8841108 msgstr "entità"
8851109
886 #: ../../../src/MenuDevConsole.cpp:267
1110 #: ../../../src/MenuDevConsole.cpp:269
8871111 msgid "entity, ally"
8881112 msgstr "entità, alleato"
8891113
890 #: ../../../src/MenuDevConsole.cpp:274
1114 #: ../../../src/MenuDevConsole.cpp:276
8911115 msgid "Tile"
8921116 msgstr "Mattonella"
8931117
894 #: ../../../src/MenuDevConsole.cpp:360
1118 #: ../../../src/MenuDevConsole.cpp:377
8951119 msgid "adds a power to the action bar"
8961120 msgstr "aggiunge un potere alla barra delle azioni"
8971121
898 #: ../../../src/MenuDevConsole.cpp:361
1122 #: ../../../src/MenuDevConsole.cpp:378
8991123 msgid "turns on/off the display of the FPS counter"
9001124 msgstr ""
9011125
902 #: ../../../src/MenuDevConsole.cpp:362
1126 #: ../../../src/MenuDevConsole.cpp:379
9031127 msgid "turns on/off all of the HUD elements"
9041128 msgstr "attiva/disattiva tutti gli elementi dell'Interfaccia"
9051129
906 #: ../../../src/MenuDevConsole.cpp:363
1130 #: ../../../src/MenuDevConsole.cpp:380
9071131 msgid "turns on/off the developer hud"
9081132 msgstr "accende/spegne lo schermo sviluppatore"
9091133
910 #: ../../../src/MenuDevConsole.cpp:364
1134 #: ../../../src/MenuDevConsole.cpp:381
9111135 msgid ""
9121136 "Prints a list of powers that match a search term. No search term will list "
9131137 "all items"
9151139 "Mostra un elenco di poteri che corrispondono a un termine di ricerca. Nessun"
9161140 " termine di ricerca elenca tutti gli oggetti"
9171141
918 #: ../../../src/MenuDevConsole.cpp:365
1142 #: ../../../src/MenuDevConsole.cpp:382
9191143 msgid "Prints out all the map filenames located in the \"maps/\" directory."
9201144 msgstr ""
9211145 "Stampa tutti i nomi dei file della mappa che si trovano nella directory "
9221146 "\"maps/\"."
9231147
924 #: ../../../src/MenuDevConsole.cpp:366
1148 #: ../../../src/MenuDevConsole.cpp:383
9251149 msgid ""
9261150 "Prints out the active campaign statuses that match a search term. No search "
9271151 "term will list all active statuses"
9291153 "Stampa gli stati di campagna attivi che corrispondono a un termine di "
9301154 "ricerca. Nessun termine di ricerca elenca tutti gli stati attivi"
9311155
932 #: ../../../src/MenuDevConsole.cpp:367
1156 #: ../../../src/MenuDevConsole.cpp:384
9331157 msgid ""
9341158 "Prints a list of items that match a search term. No search term will list "
9351159 "all items"
9371161 "Mostra un elenco di elementi che corrispondono a un termine di ricerca. "
9381162 "Nessun termine di ricerca elenca tutti gli elementi"
9391163
940 #: ../../../src/MenuDevConsole.cpp:368
1164 #: ../../../src/MenuDevConsole.cpp:385
9411165 msgid ""
9421166 "parses a series of event components and executes them as a single event"
9431167 msgstr ""
9441168 "Analizza una serie di componenti di evento e li esegue come un singolo "
9451169 "evento"
9461170
947 #: ../../../src/MenuDevConsole.cpp:369
1171 #: ../../../src/MenuDevConsole.cpp:386
9481172 msgid "clears the command history"
9491173 msgstr "pulisce la cronologia comandi"
9501174
951 #: ../../../src/MenuDevConsole.cpp:370
1175 #: ../../../src/MenuDevConsole.cpp:387
9521176 msgid "displays this text"
9531177 msgstr "mostra questo testo"
9541178
955 #: ../../../src/MenuDevConsole.cpp:377
1179 #: ../../../src/MenuDevConsole.cpp:394
9561180 msgid "Toggled the developer hud"
9571181 msgstr "Alterna lo schermo sviluppatore"
9581182
959 #: ../../../src/MenuDevConsole.cpp:381
1183 #: ../../../src/MenuDevConsole.cpp:398
9601184 msgid "Toggled the hud"
9611185 msgstr "Attiva l'Interfaccia"
9621186
963 #: ../../../src/MenuDevConsole.cpp:385
1187 #: ../../../src/MenuDevConsole.cpp:402
9641188 msgid "Toggled the FPS counter"
9651189 msgstr ""
9661190
967 #: ../../../src/MenuDevConsole.cpp:534
1191 #: ../../../src/MenuDevConsole.cpp:552
9681192 msgid "ERROR: Incorrect number of arguments"
9691193 msgstr "ERRORE: Numero errato di argomenti"
9701194
971 #: ../../../src/MenuDevConsole.cpp:536 ../../../src/MenuDevConsole.cpp:564
1195 #: ../../../src/MenuDevConsole.cpp:554 ../../../src/MenuDevConsole.cpp:582
9721196 msgid "HINT:"
9731197 msgstr "SUGGERIMENTO:"
9741198
975 #: ../../../src/MenuDevConsole.cpp:536
1199 #: ../../../src/MenuDevConsole.cpp:554
9761200 msgid "<id>"
9771201 msgstr "<id>"
9781202
979 #: ../../../src/MenuDevConsole.cpp:552
1203 #: ../../../src/MenuDevConsole.cpp:570
9801204 #, c-format
9811205 msgid "ERROR: '%s' is not a valid event key"
9821206 msgstr "ERRORE: '%s' non è un valido evento chiave"
9831207
984 #: ../../../src/MenuDevConsole.cpp:562
1208 #: ../../../src/MenuDevConsole.cpp:580
9851209 msgid "ERROR: Too few arguments"
9861210 msgstr "ERRORE: Troppo pochi argomenti"
9871211
988 #: ../../../src/MenuDevConsole.cpp:564
1212 #: ../../../src/MenuDevConsole.cpp:582
9891213 msgid "<key>=<val> <key>=<val> ..."
9901214 msgstr "<key>=<val> <key>=<val> ..."
9911215
992 #: ../../../src/MenuDevConsole.cpp:569
1216 #: ../../../src/MenuDevConsole.cpp:587
9931217 msgid "ERROR: Unknown command"
9941218 msgstr "ERRORE: Comando sconosciuto"
9951219
996 #: ../../../src/MenuDevConsole.cpp:571
1220 #: ../../../src/MenuDevConsole.cpp:589
9971221 msgid "HINT: Type help"
9981222 msgstr "SUGGERIMENTO: Digita help"
9991223
1000 #: ../../../src/MenuEnemy.cpp:138
1224 #: ../../../src/MenuEnemy.cpp:162
10011225 #, c-format
10021226 msgid "%s level %d"
10031227 msgstr "%s livello %d"
10041228
1005 #: ../../../src/MenuEnemy.cpp:162
1229 #: ../../../src/MenuEnemy.cpp:186
10061230 msgid "Dead"
10071231 msgstr "Morto"
10081232
1009 #: ../../../src/MenuEnemy.cpp:164
1233 #: ../../../src/MenuEnemy.cpp:188
10101234 msgid "Destroyed"
10111235 msgstr "Distrutto"
10121236
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
1237 #: ../../../src/MenuGameOver.cpp:69
1238 msgid "Game Over"
1239 msgstr ""
1240
1241 #: ../../../src/MenuInventory.cpp:178
10341242 #, c-format
10351243 msgid "Lost %d%% of %s."
10361244 msgstr "Hai perso il %d%% di %s."
10371245
1038 #: ../../../src/MenuInventory.cpp:195
1246 #: ../../../src/MenuInventory.cpp:185
10391247 #, c-format
10401248 msgid "Lost %d%% of total XP."
10411249 msgstr "Hai perso il %d%% di ESP totale."
10421250
1043 #: ../../../src/MenuInventory.cpp:200
1251 #: ../../../src/MenuInventory.cpp:190
10441252 #, c-format
10451253 msgid "Lost %d%% of current level XP."
10461254 msgstr "Hai perso il %d%% del livello ESP attuale."
10471255
1048 #: ../../../src/MenuInventory.cpp:226
1256 #: ../../../src/MenuInventory.cpp:216
10491257 #, c-format
10501258 msgid "Lost %s."
10511259 msgstr "Hai perso %s."
10521260
1053 #: ../../../src/MenuInventory.cpp:274 ../../../src/MenuStash.cpp:146
1261 #: ../../../src/MenuInventory.cpp:258 ../../../src/MenuStash.cpp:276
10541262 #, c-format
10551263 msgid "%d %s"
10561264 msgstr "%d %s"
10571265
1058 #: ../../../src/MenuInventory.cpp:317
1266 #: ../../../src/MenuInventory.cpp:301
10591267 msgid "Pick up item(s):"
10601268 msgstr "Raccogli oggetto/i:"
10611269
1062 #: ../../../src/MenuInventory.cpp:318
1270 #: ../../../src/MenuInventory.cpp:302
10631271 msgid "Use or equip item:"
10641272 msgstr "Usa o equipaggia oggetto:"
10651273
1066 #: ../../../src/MenuInventory.cpp:319
1274 #: ../../../src/MenuInventory.cpp:303
10671275 #, c-format
10681276 msgid "%s modifiers"
10691277 msgstr "%s modificatori"
10701278
1071 #: ../../../src/MenuInventory.cpp:320
1279 #: ../../../src/MenuInventory.cpp:304
10721280 msgid "Select a quantity of item:"
10731281 msgstr "Seleziona una quantità di oggetti:"
10741282
1075 #: ../../../src/MenuInventory.cpp:323
1283 #: ../../../src/MenuInventory.cpp:307
10761284 msgid "Stash item stack:"
10771285 msgstr "Accantona gruppo di oggetti:"
10781286
1079 #: ../../../src/MenuInventory.cpp:325
1287 #: ../../../src/MenuInventory.cpp:309
10801288 msgid "Sell item stack:"
10811289 msgstr "Vendi gruppo di oggetti:"
10821290
1083 #: ../../../src/MenuInventory.cpp:592
1291 #: ../../../src/MenuInventory.cpp:576
10841292 msgid "You don't have enough of the required item."
10851293 msgstr "Non ne hai a sufficienza."
10861294
1087 #: ../../../src/MenuInventory.cpp:599
1295 #: ../../../src/MenuInventory.cpp:588
10881296 msgid "You can't use this item right now."
10891297 msgstr "Adesso non puoi usare questo oggetto."
10901298
1091 #: ../../../src/MenuInventory.cpp:611
1299 #: ../../../src/MenuInventory.cpp:600
10921300 msgid "This item can only be used from the action bar."
10931301 msgstr "Questo elemento può essere usato solo dalla barra azioni."
10941302
1095 #: ../../../src/MenuInventory.cpp:729
1303 #: ../../../src/MenuInventory.cpp:718
10961304 msgid "Inventory is full."
10971305 msgstr "L'inventario è pieno."
10981306
1099 #: ../../../src/MenuInventory.cpp:849
1307 #: ../../../src/MenuInventory.cpp:843
11001308 #, c-format
11011309 msgid "Not enough %s."
11021310 msgstr "Non hai abbastanza %s."
11031311
1104 #: ../../../src/MenuInventory.cpp:869 ../../../src/MenuInventory.cpp:876
1312 #: ../../../src/MenuInventory.cpp:863 ../../../src/MenuInventory.cpp:870
11051313 msgid "This item can not be sold."
11061314 msgstr "Questo oggetto non può essere venduto."
11071315
11131321 msgid "Quests"
11141322 msgstr "Missioni"
11151323
1116 #: ../../../src/MenuManager.cpp:286
1324 #: ../../../src/MenuManager.cpp:305
11171325 #, c-format
11181326 msgid "XP: %d/%d"
11191327 msgstr "ESP: %d/%d"
11201328
1121 #: ../../../src/MenuManager.cpp:827
1329 #: ../../../src/MenuManager.cpp:875
11221330 msgid "This item can not be dropped."
11231331 msgstr "Questo oggetto non può essere gettato via."
1332
1333 #: ../../../src/MenuManager.cpp:1501
1334 msgid "Equipped"
1335 msgstr ""
1336
1337 #: ../../../src/MenuMovementType.cpp:87
1338 msgid "Select a Movement Type"
1339 msgstr ""
1340
1341 #: ../../../src/MenuMovementType.cpp:89
1342 msgid "Can be changed later in the Configuration menu."
1343 msgstr ""
1344
1345 #: ../../../src/MenuMovementType.cpp:92 ../../../src/MenuMovementType.cpp:122
1346 msgid "Keyboard"
1347 msgstr ""
1348
1349 #: ../../../src/MenuMovementType.cpp:93 ../../../src/MenuMovementType.cpp:128
1350 msgid "Mouse"
1351 msgstr ""
1352
1353 #: ../../../src/MenuMovementType.cpp:129
1354 msgid "Button"
1355 msgstr ""
11241356
11251357 #: ../../../src/MenuNumPicker.cpp:59
11261358 msgid "Enter amount:"
11271359 msgstr "Inserisci quantità:"
11281360
1129 #: ../../../src/MenuPowers.cpp:787
1361 #: ../../../src/MenuPowers.cpp:894
11301362 msgid "Passive"
11311363 msgstr "Passivo"
11321364
1133 #: ../../../src/MenuPowers.cpp:792
1365 #: ../../../src/MenuPowers.cpp:901
11341366 #, c-format
11351367 msgid "Costs %d MP"
11361368 msgstr "Costa %d Mana"
11371369
1138 #: ../../../src/MenuPowers.cpp:796
1370 #: ../../../src/MenuPowers.cpp:905
11391371 #, c-format
11401372 msgid "Costs %d HP"
11411373 msgstr "Costa %d Salute"
11421374
1143 #: ../../../src/MenuPowers.cpp:801
1375 #: ../../../src/MenuPowers.cpp:909
11441376 msgid "Cooldown:"
11451377 msgstr "Raffreddamento:"
11461378
1147 #: ../../../src/MenuPowers.cpp:866 ../../../src/MenuPowers.cpp:869
1379 #: ../../../src/MenuPowers.cpp:960 ../../../src/MenuPowers.cpp:963
11481380 msgid "Damage per second"
11491381 msgstr "Danno per secondo"
11501382
1151 #: ../../../src/MenuPowers.cpp:872 ../../../src/MenuPowers.cpp:875
1383 #: ../../../src/MenuPowers.cpp:966 ../../../src/MenuPowers.cpp:969
11521384 msgid "HP per second"
11531385 msgstr "Salute per secondo"
11541386
1155 #: ../../../src/MenuPowers.cpp:878 ../../../src/MenuPowers.cpp:881
1387 #: ../../../src/MenuPowers.cpp:972 ../../../src/MenuPowers.cpp:975
11561388 msgid "MP per second"
11571389 msgstr "Mana per secondo"
11581390
1159 #: ../../../src/MenuPowers.cpp:885
1391 #: ../../../src/MenuPowers.cpp:979
11601392 msgid "Immobilize"
11611393 msgstr "Immobilizzare"
11621394
1163 #: ../../../src/MenuPowers.cpp:893
1395 #: ../../../src/MenuPowers.cpp:987
11641396 msgid "Immunity"
11651397 msgstr "Immunità"
11661398
1167 #: ../../../src/MenuPowers.cpp:896
1399 #: ../../../src/MenuPowers.cpp:990
11681400 msgid "Immunity to damage over time"
11691401 msgstr "Immunità ai danni nel tempo"
11701402
1171 #: ../../../src/MenuPowers.cpp:899
1403 #: ../../../src/MenuPowers.cpp:993
11721404 msgid "Immunity to slow"
11731405 msgstr "Immunità al rallentamento"
11741406
1175 #: ../../../src/MenuPowers.cpp:902
1407 #: ../../../src/MenuPowers.cpp:996
11761408 msgid "Immunity to stun"
11771409 msgstr "Immunità allo stordimento"
11781410
1179 #: ../../../src/MenuPowers.cpp:905
1411 #: ../../../src/MenuPowers.cpp:999
11801412 msgid "Immunity to HP steal"
11811413 msgstr "Immunità al furto di Salute"
11821414
1183 #: ../../../src/MenuPowers.cpp:908
1415 #: ../../../src/MenuPowers.cpp:1002
11841416 msgid "Immunity to MP steal"
11851417 msgstr "Immunità al furto di Mana"
11861418
1187 #: ../../../src/MenuPowers.cpp:911
1419 #: ../../../src/MenuPowers.cpp:1005
11881420 msgid "Immunity to knockback"
11891421 msgstr "Immunità al colpo all'indietro"
11901422
1191 #: ../../../src/MenuPowers.cpp:914
1423 #: ../../../src/MenuPowers.cpp:1008
11921424 msgid "Immunity to damage reflection"
11931425 msgstr "Immunità al danno riflesso"
11941426
1195 #: ../../../src/MenuPowers.cpp:917
1427 #: ../../../src/MenuPowers.cpp:1014
11961428 msgid "Stun"
11971429 msgstr "Stordimento"
11981430
1199 #: ../../../src/MenuPowers.cpp:920
1431 #: ../../../src/MenuPowers.cpp:1017
12001432 msgid "Automatic revive on death"
12011433 msgstr "Rivive automaticamente alla la morte"
12021434
1203 #: ../../../src/MenuPowers.cpp:923
1435 #: ../../../src/MenuPowers.cpp:1020
12041436 msgid "Convert"
12051437 msgstr "Convertire"
12061438
1207 #: ../../../src/MenuPowers.cpp:926
1439 #: ../../../src/MenuPowers.cpp:1023
12081440 msgid "Fear"
12091441 msgstr "Paura"
12101442
1211 #: ../../../src/MenuPowers.cpp:929
1443 #: ../../../src/MenuPowers.cpp:1026
12121444 msgid "Lifespan"
12131445 msgstr "Durata della vita"
12141446
1215 #: ../../../src/MenuPowers.cpp:953
1447 #: ../../../src/MenuPowers.cpp:1050
12161448 msgid "Magical Shield"
12171449 msgstr "Scudo Magico"
12181450
1219 #: ../../../src/MenuPowers.cpp:982
1451 #: ../../../src/MenuPowers.cpp:1079
12201452 msgid "Healing"
12211453 msgstr "Guarigione"
12221454
1223 #: ../../../src/MenuPowers.cpp:985
1455 #: ../../../src/MenuPowers.cpp:1082
12241456 msgid "Knockback"
12251457 msgstr "Contraccolpo"
12261458
1227 #: ../../../src/MenuPowers.cpp:1010
1459 #: ../../../src/MenuPowers.cpp:1106
12281460 #, c-format
12291461 msgid "%d%% chance"
12301462 msgstr "possibilità %d%%"
12311463
1232 #: ../../../src/MenuPowers.cpp:1062
1464 #: ../../../src/MenuPowers.cpp:1158
12331465 msgid "Base Accuracy"
12341466 msgstr "Precisione di Base"
12351467
1236 #: ../../../src/MenuPowers.cpp:1082
1468 #: ../../../src/MenuPowers.cpp:1178
12371469 msgid "Base Critical Chance"
12381470 msgstr "Possibilità di Colpo Critico di Base"
12391471
1240 #: ../../../src/MenuPowers.cpp:1090
1472 #: ../../../src/MenuPowers.cpp:1186
12411473 msgid "Ignores Absorbtion"
12421474 msgstr "Ignora l'assorbimento"
12431475
1244 #: ../../../src/MenuPowers.cpp:1095
1476 #: ../../../src/MenuPowers.cpp:1191
12451477 msgid "Ignores Avoidance"
12461478 msgstr "Ignora Schivata"
12471479
1248 #: ../../../src/MenuPowers.cpp:1100
1480 #: ../../../src/MenuPowers.cpp:1196
12491481 #, c-format
12501482 msgid "%d%% Chance to crit slowed targets"
12511483 msgstr "%d%% Possibilità di colpo critico sui bersagli rallentati"
12521484
1253 #: ../../../src/MenuPowers.cpp:1105
1485 #: ../../../src/MenuPowers.cpp:1201
12541486 #, c-format
12551487 msgid "Elemental Damage (%s)"
12561488 msgstr ""
12571489
1258 #: ../../../src/MenuPowers.cpp:1114
1490 #: ../../../src/MenuPowers.cpp:1210
12591491 #, c-format
12601492 msgid "Requires a %s"
12611493 msgstr "Richiede un %s"
12621494
1263 #: ../../../src/MenuPowers.cpp:1151 ../../../src/MenuPowers.cpp:1154
1495 #: ../../../src/MenuPowers.cpp:1248 ../../../src/MenuPowers.cpp:1251
12641496 #, c-format
12651497 msgid "Requires Power: %s"
12661498 msgstr "Richiede Potere: %s"
12671499
1268 #: ../../../src/MenuPowers.cpp:1163
1500 #: ../../../src/MenuPowers.cpp:1260
12691501 msgid "Click to Unlock (uses 1 Skill Point)"
12701502 msgstr "Clicca per sbloccare (usa 1 Punto Abilità)"
12711503
1272 #: ../../../src/MenuPowers.cpp:1167 ../../../src/MenuPowers.cpp:1169
1504 #: ../../../src/MenuPowers.cpp:1264 ../../../src/MenuPowers.cpp:1266
12731505 msgid "Requires 1 Skill Point"
12741506 msgstr "Richiede 1 Punto Abilità"
12751507
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
1508 #: ../../../src/MenuPowers.cpp:1466
1509 #, c-format
1510 msgid "Available skill points: %d"
1511 msgstr ""
1512
1513 #: ../../../src/MenuPowers.cpp:1498
12871514 msgid "Next Level:"
12881515 msgstr "Prossimo livello:"
12891516
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
1517 #: ../../../src/MenuStash.cpp:80 ../../../src/MenuStash.cpp:161
1518 msgid "Stash"
1519 msgstr ""
1520
1521 #: ../../../src/MenuStash.cpp:174 ../../../src/MenuStash.cpp:188
1522 msgid "Private"
1523 msgstr ""
1524
1525 #: ../../../src/MenuStash.cpp:175
1526 msgid "Shared"
1527 msgstr ""
1528
1529 #: ../../../src/MenuStash.cpp:340
1530 msgid "This item can not be stored in the stash."
1531 msgstr ""
1532
1533 #: ../../../src/MenuStash.cpp:345
1534 msgid "This item can not be stored in the private stash."
1535 msgstr ""
1536
1537 #: ../../../src/MenuStash.cpp:350
1538 msgid "This item can not be stored in the shared stash."
1539 msgstr ""
1540
1541 #: ../../../src/MenuStash.cpp:360
12991542 msgid "Stash is full."
13001543 msgstr "L'inventario è pieno."
13011544
1302 #: ../../../src/MenuTalker.cpp:454
1545 #: ../../../src/MenuStash.cpp:414
1546 #, c-format
1547 msgid "Can not store item in stash: %s"
1548 msgstr ""
1549
1550 #: ../../../src/MenuTalker.cpp:448
1551 #, c-format
1552 msgid "<dialog node %d>"
1553 msgstr ""
1554
1555 #: ../../../src/MenuTalker.cpp:456
13031556 msgid "Trade"
13041557 msgstr "Commercio"
13051558
1306 #: ../../../src/MenuVendor.cpp:58
1559 #: ../../../src/MenuVendor.cpp:60
13071560 msgid "Buyback"
13081561 msgstr "Ricompra"
13091562
1310 #: ../../../src/MenuVendor.cpp:279
1563 #: ../../../src/MenuVendor.cpp:283
13111564 msgid "Vendor"
13121565 msgstr "Venditore"
13131566
1314 #: ../../../src/PowerManager.cpp:1136
1567 #: ../../../src/PowerManager.cpp:1204
13151568 #, c-format
13161569 msgid "+%d Shield"
13171570 msgstr "+%d Scudo"
13181571
1319 #: ../../../src/PowerManager.cpp:1392
1572 #: ../../../src/PowerManager.cpp:1461
13201573 msgid "You are already transformed, untransform first."
13211574 msgstr "Sei già trasformato, annulla trasformazione prima."
13221575
1323 #: ../../../src/PowerManager.cpp:1404
1576 #: ../../../src/PowerManager.cpp:1473
13241577 msgid "Could not untransform at this position."
13251578 msgstr "Impossibile detrasformarsi da questa posizione."
13261579
13281581 msgid "Completed Quests"
13291582 msgstr ""
13301583
1331 #: ../../../src/SaveLoad.cpp:243 ../../../src/SaveLoad.cpp:244
1584 #: ../../../src/SaveLoad.cpp:250 ../../../src/SaveLoad.cpp:251
13321585 msgid "Game saved."
13331586 msgstr "Partita salvata."
13341587
1335 #: ../../../src/SDLInputState.cpp:582
1588 #: ../../../src/SDLInputState.cpp:645
1589 msgid "BkSp"
1590 msgstr ""
1591
1592 #: ../../../src/SDLInputState.cpp:646
1593 msgid "Caps"
1594 msgstr ""
1595
1596 #: ../../../src/SDLInputState.cpp:647
1597 msgid "Del"
1598 msgstr ""
1599
1600 #: ../../../src/SDLInputState.cpp:649 ../../../src/SDLInputState.cpp:679
1601 msgid "End"
1602 msgstr "Fine"
1603
1604 #: ../../../src/SDLInputState.cpp:650
1605 msgid "Esc"
1606 msgstr ""
1607
1608 #: ../../../src/SDLInputState.cpp:651 ../../../src/SDLInputState.cpp:681
1609 msgid "Home"
1610 msgstr "Tasto Home"
1611
1612 #: ../../../src/SDLInputState.cpp:652
1613 msgid "Ins"
1614 msgstr ""
1615
1616 #: ../../../src/SDLInputState.cpp:653
1617 msgid "LAlt"
1618 msgstr ""
1619
1620 #: ../../../src/SDLInputState.cpp:654
1621 msgid "LCtrl"
1622 msgstr ""
1623
1624 #: ../../../src/SDLInputState.cpp:656
1625 msgid "LShft"
1626 msgstr ""
1627
1628 #: ../../../src/SDLInputState.cpp:657
1629 msgid "Num"
1630 msgstr ""
1631
1632 #: ../../../src/SDLInputState.cpp:658
1633 msgid "PgDn"
1634 msgstr ""
1635
1636 #: ../../../src/SDLInputState.cpp:659
1637 msgid "PgUp"
1638 msgstr ""
1639
1640 #: ../../../src/SDLInputState.cpp:660 ../../../src/SDLInputState.cpp:690
1641 msgid "Pause"
1642 msgstr "Pausa"
1643
1644 #: ../../../src/SDLInputState.cpp:661
1645 msgid "Print"
1646 msgstr ""
1647
1648 #: ../../../src/SDLInputState.cpp:662
1649 msgid "RAlt"
1650 msgstr ""
1651
1652 #: ../../../src/SDLInputState.cpp:663
1653 msgid "RCtrl"
1654 msgstr ""
1655
1656 #: ../../../src/SDLInputState.cpp:664
1657 msgid "Ret"
1658 msgstr ""
1659
1660 #: ../../../src/SDLInputState.cpp:666
1661 msgid "RShft"
1662 msgstr ""
1663
1664 #: ../../../src/SDLInputState.cpp:667
1665 msgid "SLock"
1666 msgstr ""
1667
1668 #: ../../../src/SDLInputState.cpp:668
1669 msgid "Spc"
1670 msgstr ""
1671
1672 #: ../../../src/SDLInputState.cpp:669 ../../../src/SDLInputState.cpp:699
1673 msgid "Tab"
1674 msgstr "Tasto di Tabulazione"
1675
1676 #: ../../../src/SDLInputState.cpp:675
13361677 msgid "Backspace"
13371678 msgstr "Backspace"
13381679
1339 #: ../../../src/SDLInputState.cpp:583
1680 #: ../../../src/SDLInputState.cpp:676
13401681 msgid "CapsLock"
13411682 msgstr "Blocco Maiuscole"
13421683
1343 #: ../../../src/SDLInputState.cpp:586
1344 msgid "End"
1345 msgstr "Fine"
1346
1347 #: ../../../src/SDLInputState.cpp:587
1684 #: ../../../src/SDLInputState.cpp:680
13481685 msgid "Escape"
13491686 msgstr "Esc"
13501687
1351 #: ../../../src/SDLInputState.cpp:588
1352 msgid "Home"
1353 msgstr "Tasto Home"
1354
1355 #: ../../../src/SDLInputState.cpp:589
1688 #: ../../../src/SDLInputState.cpp:682
13561689 msgid "Insert"
13571690 msgstr "Inserisci"
13581691
1359 #: ../../../src/SDLInputState.cpp:590
1692 #: ../../../src/SDLInputState.cpp:683
13601693 msgid "Left Alt"
13611694 msgstr "Alt sinistro"
13621695
1363 #: ../../../src/SDLInputState.cpp:591
1696 #: ../../../src/SDLInputState.cpp:684
13641697 msgid "Left Ctrl"
13651698 msgstr "Ctrl sinistro"
13661699
1367 #: ../../../src/SDLInputState.cpp:593
1700 #: ../../../src/SDLInputState.cpp:686
13681701 msgid "Left Shift"
13691702 msgstr "Shift sinistro"
13701703
1371 #: ../../../src/SDLInputState.cpp:594
1704 #: ../../../src/SDLInputState.cpp:687
13721705 msgid "NumLock"
13731706 msgstr "Blocco Tastiera Numerica"
13741707
1375 #: ../../../src/SDLInputState.cpp:595
1708 #: ../../../src/SDLInputState.cpp:688
13761709 msgid "PageDown"
13771710 msgstr "Pagina giù"
13781711
1379 #: ../../../src/SDLInputState.cpp:596
1712 #: ../../../src/SDLInputState.cpp:689
13801713 msgid "PageUp"
13811714 msgstr "Pagina su"
13821715
1383 #: ../../../src/SDLInputState.cpp:597
1384 msgid "Pause"
1385 msgstr "Pausa"
1386
1387 #: ../../../src/SDLInputState.cpp:598
1716 #: ../../../src/SDLInputState.cpp:691
13881717 msgid "PrintScreen"
13891718 msgstr "Stampa Schermo"
13901719
1391 #: ../../../src/SDLInputState.cpp:599
1720 #: ../../../src/SDLInputState.cpp:692
13921721 msgid "Right Alt"
13931722 msgstr "Alt destro"
13941723
1395 #: ../../../src/SDLInputState.cpp:600
1724 #: ../../../src/SDLInputState.cpp:693
13961725 msgid "Right Ctrl"
13971726 msgstr "Ctrl destro"
13981727
1399 #: ../../../src/SDLInputState.cpp:601
1728 #: ../../../src/SDLInputState.cpp:694
14001729 msgid "Return"
14011730 msgstr "Invio"
14021731
1403 #: ../../../src/SDLInputState.cpp:603
1732 #: ../../../src/SDLInputState.cpp:696
14041733 msgid "Right Shift"
14051734 msgstr "Shift destro"
14061735
1407 #: ../../../src/SDLInputState.cpp:604
1736 #: ../../../src/SDLInputState.cpp:697
14081737 msgid "ScrollLock"
14091738 msgstr "Blocco Scorrimento"
14101739
1411 #: ../../../src/SDLInputState.cpp:605
1740 #: ../../../src/SDLInputState.cpp:698
14121741 msgid "Space"
14131742 msgstr "Spazio"
14141743
1415 #: ../../../src/SDLInputState.cpp:606
1416 msgid "Tab"
1417 msgstr "Tasto di Tabulazione"
1418
1419 #: ../../../src/SDLInputState.cpp:620
1744 #: ../../../src/SDLInputState.cpp:712
1745 #, c-format
1746 msgid "M%d"
1747 msgstr ""
1748
1749 #: ../../../src/SDLInputState.cpp:718
14201750 #, c-format
14211751 msgid "Mouse %d"
14221752 msgstr "Mouse %d"
14231753
1424 #: ../../../src/SDLInputState.cpp:628
1754 #: ../../../src/SDLInputState.cpp:728
1755 #, c-format
1756 msgid "JX%d-"
1757 msgstr ""
1758
1759 #: ../../../src/SDLInputState.cpp:730
14251760 #, c-format
14261761 msgid "Axis %d -"
14271762 msgstr "Asse %d -"
14281763
1429 #: ../../../src/SDLInputState.cpp:630
1764 #: ../../../src/SDLInputState.cpp:734
1765 #, c-format
1766 msgid "JX%d+"
1767 msgstr ""
1768
1769 #: ../../../src/SDLInputState.cpp:736
14301770 #, c-format
14311771 msgid "Axis %d +"
14321772 msgstr "Asse %d +"
14331773
1434 #: ../../../src/SDLInputState.cpp:633
1774 #: ../../../src/SDLInputState.cpp:741
1775 #, c-format
1776 msgid "JB%d"
1777 msgstr ""
1778
1779 #: ../../../src/SDLInputState.cpp:743
14351780 #, c-format
14361781 msgid "Button %d"
14371782 msgstr "Tasto %d"
14381783
1439 #: ../../../src/SDLInputState.cpp:637
1440 msgid "(none)"
1441 msgstr "(nessuno)"
1442
1443 #: ../../../src/SDLInputState.cpp:677
1784 #: ../../../src/SDLInputState.cpp:789
14441785 msgid "Touch control D-Pad"
14451786 msgstr ""
14461787
1447 #: ../../../src/SDLInputState.cpp:701
1788 #: ../../../src/SDLInputState.cpp:812
14481789 msgid "Touch control buttons"
14491790 msgstr ""
14501791
1451 #: ../../../src/SDLInputState.cpp:716
1792 #: ../../../src/SDLInputState.cpp:826
14521793 msgid "Tap"
14531794 msgstr "Colpetto"
14541795
1455 #: ../../../src/SDLInputState.cpp:760 ../../../src/SDLInputState.cpp:764
1456 #: ../../../src/SDLInputState.cpp:768
1796 #: ../../../src/SDLInputState.cpp:878 ../../../src/SDLInputState.cpp:880
1797 #, c-format
1798 msgid "Can not bind: %s"
1799 msgstr ""
1800
1801 #: ../../../src/SDLInputState.cpp:892 ../../../src/SDLInputState.cpp:896
1802 #: ../../../src/SDLInputState.cpp:900
14571803 #, c-format
14581804 msgid "'%s' is no longer bound to:"
14591805 msgstr "'%s' non è più collegato a:"
16121958 msgid "Base MP"
16131959 msgstr "Mana base"
16141960
1615 #: ../../../src/Utils.cpp:346
1961 #: ../../../src/Utils.cpp:365
16161962 msgid "k"
16171963 msgstr "k"
16181964
1619 #: ../../../src/Utils.cpp:580
1965 #: ../../../src/Utils.cpp:635
16201966 #, c-format
16211967 msgid "%s second"
16221968 msgstr "%s secondo"
16231969
1624 #: ../../../src/Utils.cpp:583
1970 #: ../../../src/Utils.cpp:638
16251971 #, c-format
16261972 msgid "%s seconds"
16271973 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-07-02 13:26-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:1220
127 #: ../../../src/StatBlock.cpp:926 ../../../src/StatBlock.cpp:932
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:937
133 #: ../../../src/StatBlock.cpp:943
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:704
175 msgid "Entering game world..."
176 msgstr "ゲームの世界に入ります..."
177
178 #: ../../../src/GameStateLoad.cpp:707
179 msgid "Loading saved game..."
180 msgstr "セーブデータをロードしています..."
181
182 #: ../../../src/GameStateLoad.cpp:740
183 msgid "Invalid save"
184 msgstr ""
185
186 #: ../../../src/GameStateLoad.cpp:764 ../../../src/ItemManager.cpp:745
187 #: ../../../src/MenuPowers.cpp:882 ../../../src/MenuPowers.cpp:1241
188 #: ../../../src/MenuPowers.cpp:1653
189 #, c-format
190 msgid "Level %d"
191 msgstr "レベル %d"
192
193 #: ../../../src/GameStateNew.cpp:66 ../../../src/InputState.cpp:416
194 #: ../../../src/MenuConfig.cpp:254
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:670
248 #: ../../../src/SDLInputState.cpp:700
249 msgid "Up"
250 msgstr "上"
251
252 #: ../../../src/InputState.cpp:419 ../../../src/MenuMovementType.cpp:125
253 #: ../../../src/MenuMovementType.cpp:134 ../../../src/SDLInputState.cpp:648
254 #: ../../../src/SDLInputState.cpp:678
255 msgid "Down"
256 msgstr "下"
257
258 #: ../../../src/InputState.cpp:420 ../../../src/MenuMovementType.cpp:124
259 #: ../../../src/MenuMovementType.cpp:133 ../../../src/SDLInputState.cpp:655
260 #: ../../../src/SDLInputState.cpp:685
261 msgid "Left"
262 msgstr "左"
263
264 #: ../../../src/InputState.cpp:421 ../../../src/MenuMovementType.cpp:126
265 #: ../../../src/MenuMovementType.cpp:135 ../../../src/SDLInputState.cpp:665
266 #: ../../../src/SDLInputState.cpp:695
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:159
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:677
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:981
407 #, c-format
408 msgid "%d%% Speed"
409 msgstr "%d%% スピード"
410
411 #: ../../../src/ItemManager.cpp:650 ../../../src/MenuPowers.cpp:984
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:953
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:1228
447 #: ../../../src/MenuPowers.cpp:1231
448 #, c-format
449 msgid "Requires Level %d"
450 msgstr "レベル %d が必要です"
451
452 #: ../../../src/ItemManager.cpp:836 ../../../src/MenuPowers.cpp:1220
453 #: ../../../src/MenuPowers.cpp:1222
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:898
484 msgid "Set:"
485 msgstr "組合わせ:"
486
487 #: ../../../src/ItemManager.cpp:905
488 #, c-format
489 msgid "%d items:"
490 msgstr "%d アイテム:"
491
492 #: ../../../src/ItemManager.cpp:920
493 #, c-format
494 msgid "Press [%s] to read"
495 msgstr ""
496
497 #: ../../../src/ItemManager.cpp:923
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:1256
574 msgid "Clear"
575 msgstr "クリア"
576
577 #: ../../../src/MenuConfig.cpp:122 ../../../src/MenuConfig.cpp:1254
578 msgid "Assign:"
579 msgstr "割り当て:"
580
581 #: ../../../src/MenuConfig.cpp:123 ../../../src/MenuConfig.cpp:253
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:252 ../../../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:256 ../../../src/MenuGameOver.cpp:72
594 msgid "Continue"
595 msgstr "続行"
596
597 #: ../../../src/MenuConfig.cpp:258
598 msgid "Save Game"
599 msgstr ""
600
601 #: ../../../src/MenuConfig.cpp:301 ../../../src/MenuConfig.cpp:352
602 msgid "Default"
603 msgstr ""
604
605 #: ../../../src/MenuConfig.cpp:301
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:302
612 msgid "Show all"
613 msgstr ""
614
615 #: ../../../src/MenuConfig.cpp:302
616 msgid ""
617 "Always show loot tooltips. Temporarily hide all loot tooltips with 'Alt'."
618 msgstr ""
619
620 #: ../../../src/MenuConfig.cpp:303 ../../../src/MenuConfig.cpp:308
621 msgid "Hidden"
622 msgstr ""
623
624 #: ../../../src/MenuConfig.cpp:303
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:306
631 msgid "Visible"
632 msgstr ""
633
634 #: ../../../src/MenuConfig.cpp:307
635 msgid "Visible (2x zoom)"
636 msgstr ""
637
638 #: ../../../src/MenuConfig.cpp:311
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:312
645 msgid "- Display a message"
646 msgstr ""
647
648 #: ../../../src/MenuConfig.cpp:313
649 msgid "- Play a sound"
650 msgstr ""
651
652 #: ../../../src/MenuConfig.cpp:314
653 msgid "- Change the cursor"
654 msgstr ""
655
656 #: ../../../src/MenuConfig.cpp:316
657 msgid "Disabled"
658 msgstr ""
659
660 #: ../../../src/MenuConfig.cpp:317
661 msgid "All"
662 msgstr ""
663
664 #: ../../../src/MenuConfig.cpp:318
665 msgid "Message & Cursor"
666 msgstr ""
667
668 #: ../../../src/MenuConfig.cpp:319
669 msgid "Message & Sound"
670 msgstr ""
671
672 #: ../../../src/MenuConfig.cpp:320
673 msgid "Sound & Cursor"
674 msgstr ""
675
676 #: ../../../src/MenuConfig.cpp:321
677 msgid "Message"
678 msgstr ""
679
680 #: ../../../src/MenuConfig.cpp:322
681 msgid "Cursor"
682 msgstr ""
683
684 #: ../../../src/MenuConfig.cpp:323
685 msgid "Sound"
686 msgstr ""
687
688 #: ../../../src/MenuConfig.cpp:329
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:347
695 msgid "The maximum frame rate that the game will be allowed to run at."
696 msgstr ""
697
698 #: ../../../src/MenuConfig.cpp:351
699 msgid ""
700 "The render size refers to the height in pixels of the surface used to draw "
701 "the game. Mods define the allowed render sizes, but this option allows "
702 "overriding the maximum size."
703 msgstr ""
704
705 #: ../../../src/MenuConfig.cpp:374 ../../../src/MenuConfig.cpp:1679
706 #: ../../../src/MenuGameOver.cpp:116
707 msgid "Exit"
708 msgstr "終了"
709
710 #: ../../../src/MenuConfig.cpp:375
711 msgid "Video"
712 msgstr "ビデオ"
713
714 #: ../../../src/MenuConfig.cpp:376
152715 msgid "Audio"
153716 msgstr "オーディオ"
154717
155 #: ../../../src/GameStateConfigBase.cpp:161
156 #: ../../../src/GameStateConfigDesktop.cpp:131
718 #: ../../../src/MenuConfig.cpp:377
157719 msgid "Interface"
158720 msgstr "インタフェース"
159721
160 #: ../../../src/GameStateConfigBase.cpp:162
161 #: ../../../src/GameStateConfigDesktop.cpp:134
722 #: ../../../src/MenuConfig.cpp:378
723 msgid "Input"
724 msgstr "入力"
725
726 #: ../../../src/MenuConfig.cpp:379
727 msgid "Keybindings"
728 msgstr "キー設定"
729
730 #: ../../../src/MenuConfig.cpp:380
162731 msgid "Mods"
163732 msgstr "モッズ"
164733
165 #: ../../../src/GameStateConfigBase.cpp:249 ../../../src/MenuExit.cpp:72
734 #: ../../../src/MenuConfig.cpp:392
735 msgid "Paused"
736 msgstr "ポーズ"
737
738 #: ../../../src/MenuConfig.cpp:395
739 msgid "Time Played"
740 msgstr "プレイ時間"
741
742 #: ../../../src/MenuConfig.cpp:401
743 msgid "Renderer"
744 msgstr ""
745
746 #: ../../../src/MenuConfig.cpp:402
747 msgid "Full Screen Mode"
748 msgstr "フルスクリーンモード"
749
750 #: ../../../src/MenuConfig.cpp:403
751 msgid "Hardware surfaces"
752 msgstr "ハードウェアサーフェス"
753
754 #: ../../../src/MenuConfig.cpp:404
755 msgid "V-Sync"
756 msgstr ""
757
758 #: ../../../src/MenuConfig.cpp:405
759 msgid "Texture Filtering"
760 msgstr ""
761
762 #: ../../../src/MenuConfig.cpp:406
763 msgid "DPI scaling"
764 msgstr ""
765
766 #: ../../../src/MenuConfig.cpp:407
767 msgid "Parallax Layers"
768 msgstr ""
769
770 #: ../../../src/MenuConfig.cpp:408
771 msgid "Allow changing gamma"
772 msgstr "ガンマの変更許可"
773
774 #: ../../../src/MenuConfig.cpp:409
775 msgid "Gamma"
776 msgstr "ガンマ"
777
778 #: ../../../src/MenuConfig.cpp:410
779 msgid "Maximum Render Size"
780 msgstr ""
781
782 #: ../../../src/MenuConfig.cpp:411
783 msgid "Frame Limit"
784 msgstr ""
785
786 #: ../../../src/MenuConfig.cpp:413
787 msgid "Sound Volume"
788 msgstr "効果音の音量"
789
790 #: ../../../src/MenuConfig.cpp:414
166791 msgid "Music Volume"
167792 msgstr "音楽の音量"
168793
169 #: ../../../src/GameStateConfigBase.cpp:253 ../../../src/MenuExit.cpp:77
170 msgid "Sound Volume"
171 msgstr "効果音の音量"
172
173 #: ../../../src/GameStateConfigBase.cpp:257
794 #: ../../../src/MenuConfig.cpp:416
174795 msgid "Language"
175796 msgstr "言語"
176797
177 #: ../../../src/GameStateConfigBase.cpp:266
798 #: ../../../src/MenuConfig.cpp:417
178799 msgid "Show FPS"
179800 msgstr "FPSを表示"
180801
181 #: ../../../src/GameStateConfigBase.cpp:270
802 #: ../../../src/MenuConfig.cpp:418
803 msgid "Hardware mouse cursor"
804 msgstr ""
805
806 #: ../../../src/MenuConfig.cpp:419
182807 msgid "Colorblind Mode"
183808 msgstr "色盲モード"
184809
185 #: ../../../src/GameStateConfigBase.cpp:274
186 msgid "Hardware mouse cursor"
187 msgstr ""
188
189 #: ../../../src/GameStateConfigBase.cpp:278
810 #: ../../../src/MenuConfig.cpp:420
190811 msgid "Developer Mode"
191812 msgstr ""
192813
193 #: ../../../src/GameStateConfigBase.cpp:282
814 #: ../../../src/MenuConfig.cpp:421
194815 msgid "Subtitles"
195816 msgstr "字幕"
196817
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
818 #: ../../../src/MenuConfig.cpp:422
819 msgid "Loot tooltip visibility"
820 msgstr ""
821
822 #: ../../../src/MenuConfig.cpp:423
823 msgid "Mini-map mode"
824 msgstr ""
825
826 #: ../../../src/MenuConfig.cpp:424
827 msgid "Always show stat bar labels"
828 msgstr ""
829
830 #: ../../../src/MenuConfig.cpp:425
831 msgid "Allow stat bar auto-hiding"
832 msgstr ""
833
834 #: ../../../src/MenuConfig.cpp:426
835 msgid "Show combat text"
836 msgstr "戦闘のテキストを表示"
837
838 #: ../../../src/MenuConfig.cpp:427
839 msgid "Automatically equip items"
840 msgstr ""
841
842 #: ../../../src/MenuConfig.cpp:428
843 msgid "Show hidden entity markers"
844 msgstr ""
845
846 #: ../../../src/MenuConfig.cpp:429
847 msgid "Low health notification"
848 msgstr ""
849
850 #: ../../../src/MenuConfig.cpp:430
851 msgid "Low health threshold"
852 msgstr ""
853
854 #: ../../../src/MenuConfig.cpp:431
855 msgid "Show item comparison tooltips"
856 msgstr ""
857
858 #: ../../../src/MenuConfig.cpp:434 ../../../src/MenuMovementType.cpp:94
859 #: ../../../src/MenuMovementType.cpp:131
860 msgid "Joystick"
861 msgstr "ジョイスティック"
862
863 #: ../../../src/MenuConfig.cpp:435
864 msgid "Move hero using mouse"
865 msgstr "マウスでキャラクターを動かす"
866
867 #: ../../../src/MenuConfig.cpp:436
868 msgid "Mouse aim"
869 msgstr "マウスの狙い"
870
871 #: ../../../src/MenuConfig.cpp:437
872 msgid "Do not use mouse"
873 msgstr "マウスの不利用"
874
875 #: ../../../src/MenuConfig.cpp:438
876 msgid "Swap mouse movement button"
877 msgstr ""
878
879 #: ../../../src/MenuConfig.cpp:439
880 msgid "Attack with mouse movement"
881 msgstr ""
882
883 #: ../../../src/MenuConfig.cpp:440
884 msgid "Joystick Deadzone"
885 msgstr "Joystick Deadzone"
886
887 #: ../../../src/MenuConfig.cpp:441
888 msgid "Touch Controls"
889 msgstr ""
890
891 #: ../../../src/MenuConfig.cpp:442
892 msgid "Touch Gamepad Scaling"
893 msgstr ""
894
895 #: ../../../src/MenuConfig.cpp:452
896 #, c-format
897 msgid "Primary binding: %s"
898 msgstr ""
899
900 #: ../../../src/MenuConfig.cpp:453
901 #, c-format
902 msgid "Alternate binding: %s"
903 msgstr ""
904
905 #: ../../../src/MenuConfig.cpp:454
906 #, c-format
907 msgid "Joystick binding: %s"
908 msgstr ""
909
910 #: ../../../src/MenuConfig.cpp:556
252911 msgid ""
253912 "Will try to store surfaces in video memory versus system memory. The effect "
254913 "this has on performance depends on the renderer."
255914 msgstr ""
256915
257 #: ../../../src/GameStateConfigDesktop.cpp:189
916 #: ../../../src/MenuConfig.cpp:557
258917 msgid ""
259918 "Prevents screen tearing. Disable if you experience \"stuttering\" in "
260919 "windowed mode or input lag."
261920 msgstr ""
262921
263 #: ../../../src/GameStateConfigDesktop.cpp:190
922 #: ../../../src/MenuConfig.cpp:558
264923 msgid ""
265924 "When enabled, this uses the screen DPI in addition to the window dimensions "
266925 "to scale the rendering resolution. Otherwise, only the window dimensions are"
267926 " used."
268927 msgstr ""
269928
270 #: ../../../src/GameStateConfigDesktop.cpp:191
929 #: ../../../src/MenuConfig.cpp:559
271930 msgid ""
272931 "This enables parallax (non-tile) layers. Disabling this setting can improve "
273932 "performance in some cases."
274933 msgstr ""
275934
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
935 #: ../../../src/MenuConfig.cpp:560
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
941 #: ../../../src/MenuConfig.cpp:561
942 msgid ""
943 "Provides additional text for information that is primarily conveyed through "
944 "color."
945 msgstr ""
946
947 #: ../../../src/MenuConfig.cpp:562
948 msgid ""
949 "Some mods will automatically hide the stat bars when they are inactive. "
950 "Disabling this option will keep them displayed at all times."
951 msgstr ""
952
953 #: ../../../src/MenuConfig.cpp:563
954 msgid ""
955 "When enabled, empty equipment slots will be filled with applicable items "
956 "when they are obtained."
957 msgstr ""
958
959 #: ../../../src/MenuConfig.cpp:564
960 msgid ""
961 "Shows a marker above enemies, allies, and the player when they are obscured "
962 "by tall objects."
963 msgstr ""
964
965 #: ../../../src/MenuConfig.cpp:565
966 msgid ""
967 "When enabled, tooltips for equipped items of the same type are shown next to"
968 " standard item tooltips."
969 msgstr ""
970
971 #: ../../../src/MenuConfig.cpp:566
972 msgid ""
973 "This allows the game to be controlled entirely with the keyboard (or "
974 "joystick)."
975 msgstr ""
976
977 #: ../../../src/MenuConfig.cpp:567
978 msgid ""
979 "When 'Move hero using mouse' is enabled, this setting controls if 'Main1' or"
980 " 'Main2' is used to move the hero. If enabled, 'Main2' will move the hero "
981 "instead of 'Main1'."
982 msgstr ""
983
984 #: ../../../src/MenuConfig.cpp:568
985 msgid ""
986 "When 'Move hero using mouse' is enabled, this setting controls if the Power "
987 "assigned to the movement button can be used by targeting an enemy. If this "
988 "setting is disabled, it is required to use 'Shift' to access the Power "
989 "assigned to the movement button."
990 msgstr ""
991
992 #: ../../../src/MenuConfig.cpp:569
993 msgid ""
994 "The player's attacks will be aimed in the direction of the mouse cursor when"
995 " this is enabled."
996 msgstr ""
997
998 #: ../../../src/MenuConfig.cpp:570
999 msgid ""
1000 "When enabled, a virtual gamepad will be added in-game. Other interactions, "
1001 "such as drag-and-drop behavior, are also altered to better suit touch input."
1002 msgstr ""
1003
1004 #: ../../../src/MenuConfig.cpp:621
1005 msgid "Active Mods"
1006 msgstr "アクティブモッズ"
1007
1008 #: ../../../src/MenuConfig.cpp:630
1009 msgid "Available Mods"
1010 msgstr "利用可能モッズ"
1011
1012 #: ../../../src/MenuConfig.cpp:649
1013 msgid "<< Disable"
1014 msgstr "<< 無効"
1015
1016 #: ../../../src/MenuConfig.cpp:655
1017 msgid "Enable >>"
1018 msgstr "有効 >>"
1019
1020 #: ../../../src/MenuConfig.cpp:1536
1021 msgid "Version:"
1022 msgstr ""
1023
1024 #: ../../../src/MenuConfig.cpp:1541
1025 msgid "Game:"
1026 msgstr "ゲーム:"
1027
1028 #: ../../../src/MenuConfig.cpp:1546
1029 msgid "Engine version:"
1030 msgstr "必要バージョン:"
1031
1032 #: ../../../src/MenuConfig.cpp:1554
1033 msgid "Requires mods:"
1034 msgstr "必要モッズ:"
1035
1036 #: ../../../src/MenuConfig.cpp:1662 ../../../src/SDLInputState.cpp:750
1037 msgid "(none)"
1038 msgstr ""
1039
1040 #: ../../../src/MenuConfig.cpp:1679 ../../../src/MenuGameOver.cpp:73
1041 msgid "Save & Exit"
1042 msgstr "セーブ & 終了"
1043
1044 #: ../../../src/MenuDevConsole.cpp:65
8191045 msgid "Execute"
8201046 msgstr "執行"
8211047
822 #: ../../../src/MenuDevConsole.cpp:101 ../../../src/MenuDevConsole.cpp:151
1048 #: ../../../src/MenuDevConsole.cpp:103 ../../../src/MenuDevConsole.cpp:153
8231049 msgid "Developer Console"
8241050 msgstr ""
8251051
826 #: ../../../src/MenuDevConsole.cpp:141
1052 #: ../../../src/MenuDevConsole.cpp:143
8271053 #, c-format
8281054 msgid "Use '%s' to inspect with the cursor."
8291055 msgstr ""
8301056
831 #: ../../../src/MenuDevConsole.cpp:146
1057 #: ../../../src/MenuDevConsole.cpp:148
8321058 msgid "Arguments with spaces should be enclosed with double quotes. Example:"
8331059 msgstr ""
8341060
835 #: ../../../src/MenuDevConsole.cpp:147
1061 #: ../../../src/MenuDevConsole.cpp:149
8361062 msgid "Type 'help' to get a list of commands."
8371063 msgstr ""
8381064
839 #: ../../../src/MenuDevConsole.cpp:209 ../../../src/MenuDevConsole.cpp:213
1065 #: ../../../src/MenuDevConsole.cpp:211 ../../../src/MenuDevConsole.cpp:215
8401066 msgid "px"
8411067 msgstr ""
8421068
843 #: ../../../src/MenuDevConsole.cpp:224
1069 #: ../../../src/MenuDevConsole.cpp:226
8441070 msgid "Distance"
8451071 msgstr ""
8461072
847 #: ../../../src/MenuDevConsole.cpp:239 ../../../src/MenuDevConsole.cpp:286
1073 #: ../../../src/MenuDevConsole.cpp:241 ../../../src/MenuDevConsole.cpp:289
1074 #: ../../../src/MenuDevConsole.cpp:303
8481075 msgid "Entity"
8491076 msgstr ""
8501077
851 #: ../../../src/MenuDevConsole.cpp:261 ../../../src/MenuDevConsole.cpp:268
1078 #: ../../../src/MenuDevConsole.cpp:263 ../../../src/MenuDevConsole.cpp:270
8521079 msgid "none"
8531080 msgstr ""
8541081
855 #: ../../../src/MenuDevConsole.cpp:262 ../../../src/MenuDevConsole.cpp:264
1082 #: ../../../src/MenuDevConsole.cpp:264 ../../../src/MenuDevConsole.cpp:266
8561083 msgid "wall"
8571084 msgstr ""
8581085
859 #: ../../../src/MenuDevConsole.cpp:263 ../../../src/MenuDevConsole.cpp:265
1086 #: ../../../src/MenuDevConsole.cpp:265 ../../../src/MenuDevConsole.cpp:267
8601087 msgid "short wall / pit"
8611088 msgstr ""
8621089
863 #: ../../../src/MenuDevConsole.cpp:266
1090 #: ../../../src/MenuDevConsole.cpp:268
8641091 msgid "entity"
8651092 msgstr ""
8661093
867 #: ../../../src/MenuDevConsole.cpp:267
1094 #: ../../../src/MenuDevConsole.cpp:269
8681095 msgid "entity, ally"
8691096 msgstr ""
8701097
871 #: ../../../src/MenuDevConsole.cpp:274
1098 #: ../../../src/MenuDevConsole.cpp:276
8721099 msgid "Tile"
8731100 msgstr ""
8741101
875 #: ../../../src/MenuDevConsole.cpp:360
1102 #: ../../../src/MenuDevConsole.cpp:377
8761103 msgid "adds a power to the action bar"
8771104 msgstr ""
8781105
879 #: ../../../src/MenuDevConsole.cpp:361
1106 #: ../../../src/MenuDevConsole.cpp:378
8801107 msgid "turns on/off the display of the FPS counter"
8811108 msgstr ""
8821109
883 #: ../../../src/MenuDevConsole.cpp:362
1110 #: ../../../src/MenuDevConsole.cpp:379
8841111 msgid "turns on/off all of the HUD elements"
8851112 msgstr ""
8861113
887 #: ../../../src/MenuDevConsole.cpp:363
1114 #: ../../../src/MenuDevConsole.cpp:380
8881115 msgid "turns on/off the developer hud"
8891116 msgstr ""
8901117
891 #: ../../../src/MenuDevConsole.cpp:364
1118 #: ../../../src/MenuDevConsole.cpp:381
8921119 msgid ""
8931120 "Prints a list of powers that match a search term. No search term will list "
8941121 "all items"
8951122 msgstr ""
8961123
897 #: ../../../src/MenuDevConsole.cpp:365
1124 #: ../../../src/MenuDevConsole.cpp:382
8981125 msgid "Prints out all the map filenames located in the \"maps/\" directory."
8991126 msgstr ""
9001127
901 #: ../../../src/MenuDevConsole.cpp:366
1128 #: ../../../src/MenuDevConsole.cpp:383
9021129 msgid ""
9031130 "Prints out the active campaign statuses that match a search term. No search "
9041131 "term will list all active statuses"
9051132 msgstr ""
9061133
907 #: ../../../src/MenuDevConsole.cpp:367
1134 #: ../../../src/MenuDevConsole.cpp:384
9081135 msgid ""
9091136 "Prints a list of items that match a search term. No search term will list "
9101137 "all items"
9111138 msgstr ""
9121139
913 #: ../../../src/MenuDevConsole.cpp:368
1140 #: ../../../src/MenuDevConsole.cpp:385
9141141 msgid ""
9151142 "parses a series of event components and executes them as a single event"
9161143 msgstr ""
9171144
918 #: ../../../src/MenuDevConsole.cpp:369
1145 #: ../../../src/MenuDevConsole.cpp:386
9191146 msgid "clears the command history"
9201147 msgstr ""
9211148
922 #: ../../../src/MenuDevConsole.cpp:370
1149 #: ../../../src/MenuDevConsole.cpp:387
9231150 msgid "displays this text"
9241151 msgstr ""
9251152
926 #: ../../../src/MenuDevConsole.cpp:377
1153 #: ../../../src/MenuDevConsole.cpp:394
9271154 msgid "Toggled the developer hud"
9281155 msgstr ""
9291156
930 #: ../../../src/MenuDevConsole.cpp:381
1157 #: ../../../src/MenuDevConsole.cpp:398
9311158 msgid "Toggled the hud"
9321159 msgstr ""
9331160
934 #: ../../../src/MenuDevConsole.cpp:385
1161 #: ../../../src/MenuDevConsole.cpp:402
9351162 msgid "Toggled the FPS counter"
9361163 msgstr ""
9371164
938 #: ../../../src/MenuDevConsole.cpp:534
1165 #: ../../../src/MenuDevConsole.cpp:552
9391166 msgid "ERROR: Incorrect number of arguments"
9401167 msgstr ""
9411168
942 #: ../../../src/MenuDevConsole.cpp:536 ../../../src/MenuDevConsole.cpp:564
1169 #: ../../../src/MenuDevConsole.cpp:554 ../../../src/MenuDevConsole.cpp:582
9431170 msgid "HINT:"
9441171 msgstr ""
9451172
946 #: ../../../src/MenuDevConsole.cpp:536
1173 #: ../../../src/MenuDevConsole.cpp:554
9471174 msgid "<id>"
9481175 msgstr ""
9491176
950 #: ../../../src/MenuDevConsole.cpp:552
1177 #: ../../../src/MenuDevConsole.cpp:570
9511178 #, c-format
9521179 msgid "ERROR: '%s' is not a valid event key"
9531180 msgstr ""
9541181
955 #: ../../../src/MenuDevConsole.cpp:562
1182 #: ../../../src/MenuDevConsole.cpp:580
9561183 msgid "ERROR: Too few arguments"
9571184 msgstr ""
9581185
959 #: ../../../src/MenuDevConsole.cpp:564
1186 #: ../../../src/MenuDevConsole.cpp:582
9601187 msgid "<key>=<val> <key>=<val> ..."
9611188 msgstr ""
9621189
963 #: ../../../src/MenuDevConsole.cpp:569
1190 #: ../../../src/MenuDevConsole.cpp:587
9641191 msgid "ERROR: Unknown command"
9651192 msgstr ""
9661193
967 #: ../../../src/MenuDevConsole.cpp:571
1194 #: ../../../src/MenuDevConsole.cpp:589
9681195 msgid "HINT: Type help"
9691196 msgstr ""
9701197
971 #: ../../../src/MenuEnemy.cpp:138
1198 #: ../../../src/MenuEnemy.cpp:162
9721199 #, c-format
9731200 msgid "%s level %d"
9741201 msgstr "%s レベル %d"
9751202
976 #: ../../../src/MenuEnemy.cpp:162
1203 #: ../../../src/MenuEnemy.cpp:186
9771204 msgid "Dead"
9781205 msgstr "死亡"
9791206
980 #: ../../../src/MenuEnemy.cpp:164
1207 #: ../../../src/MenuEnemy.cpp:188
9811208 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
1209 msgstr "破壊ずみ"
1210
1211 #: ../../../src/MenuGameOver.cpp:69
1212 msgid "Game Over"
1213 msgstr ""
1214
1215 #: ../../../src/MenuInventory.cpp:178
10051216 #, c-format
10061217 msgid "Lost %d%% of %s."
10071218 msgstr "%s を %d%% 失った。"
10081219
1009 #: ../../../src/MenuInventory.cpp:195
1220 #: ../../../src/MenuInventory.cpp:185
10101221 #, c-format
10111222 msgid "Lost %d%% of total XP."
10121223 msgstr "合計XPを %d%% 失った。"
10131224
1014 #: ../../../src/MenuInventory.cpp:200
1225 #: ../../../src/MenuInventory.cpp:190
10151226 #, c-format
10161227 msgid "Lost %d%% of current level XP."
10171228 msgstr "現在レベルXPを %d%% 失った。"
10181229
1019 #: ../../../src/MenuInventory.cpp:226
1230 #: ../../../src/MenuInventory.cpp:216
10201231 #, c-format
10211232 msgid "Lost %s."
10221233 msgstr "%s を失った。"
10231234
1024 #: ../../../src/MenuInventory.cpp:274 ../../../src/MenuStash.cpp:146
1235 #: ../../../src/MenuInventory.cpp:258 ../../../src/MenuStash.cpp:276
10251236 #, c-format
10261237 msgid "%d %s"
10271238 msgstr "%d %s"
10281239
1029 #: ../../../src/MenuInventory.cpp:317
1240 #: ../../../src/MenuInventory.cpp:301
10301241 msgid "Pick up item(s):"
10311242 msgstr ""
10321243
1033 #: ../../../src/MenuInventory.cpp:318
1244 #: ../../../src/MenuInventory.cpp:302
10341245 msgid "Use or equip item:"
10351246 msgstr "使用または装備 (アイテム):"
10361247
1037 #: ../../../src/MenuInventory.cpp:319
1248 #: ../../../src/MenuInventory.cpp:303
10381249 #, c-format
10391250 msgid "%s modifiers"
10401251 msgstr ""
10411252
1042 #: ../../../src/MenuInventory.cpp:320
1253 #: ../../../src/MenuInventory.cpp:304
10431254 msgid "Select a quantity of item:"
10441255 msgstr "アイテム量の選択"
10451256
1046 #: ../../../src/MenuInventory.cpp:323
1257 #: ../../../src/MenuInventory.cpp:307
10471258 msgid "Stash item stack:"
10481259 msgstr "各アイテムのスタッシュ:"
10491260
1050 #: ../../../src/MenuInventory.cpp:325
1261 #: ../../../src/MenuInventory.cpp:309
10511262 msgid "Sell item stack:"
10521263 msgstr "各アイテムの売買:"
10531264
1054 #: ../../../src/MenuInventory.cpp:592
1265 #: ../../../src/MenuInventory.cpp:576
10551266 msgid "You don't have enough of the required item."
10561267 msgstr "必要なアイテムが充分ではない。"
10571268
1058 #: ../../../src/MenuInventory.cpp:599
1269 #: ../../../src/MenuInventory.cpp:588
10591270 msgid "You can't use this item right now."
10601271 msgstr ""
10611272
1062 #: ../../../src/MenuInventory.cpp:611
1273 #: ../../../src/MenuInventory.cpp:600
10631274 msgid "This item can only be used from the action bar."
10641275 msgstr "この項目は、アクションバーだけから使用することができます。"
10651276
1066 #: ../../../src/MenuInventory.cpp:729
1277 #: ../../../src/MenuInventory.cpp:718
10671278 msgid "Inventory is full."
10681279 msgstr "物品は満杯です。"
10691280
1070 #: ../../../src/MenuInventory.cpp:849
1281 #: ../../../src/MenuInventory.cpp:843
10711282 #, c-format
10721283 msgid "Not enough %s."
10731284 msgstr "%s が足りない。"
10741285
1075 #: ../../../src/MenuInventory.cpp:869 ../../../src/MenuInventory.cpp:876
1286 #: ../../../src/MenuInventory.cpp:863 ../../../src/MenuInventory.cpp:870
10761287 msgid "This item can not be sold."
10771288 msgstr "このアイテムは売れない。"
10781289
10841295 msgid "Quests"
10851296 msgstr "クエスト"
10861297
1087 #: ../../../src/MenuManager.cpp:286
1298 #: ../../../src/MenuManager.cpp:305
10881299 #, c-format
10891300 msgid "XP: %d/%d"
10901301 msgstr "XP: %d/%d"
10911302
1092 #: ../../../src/MenuManager.cpp:827
1303 #: ../../../src/MenuManager.cpp:875
10931304 msgid "This item can not be dropped."
10941305 msgstr "このアイテムを すてることは、できない。"
1306
1307 #: ../../../src/MenuManager.cpp:1501
1308 msgid "Equipped"
1309 msgstr ""
1310
1311 #: ../../../src/MenuMovementType.cpp:87
1312 msgid "Select a Movement Type"
1313 msgstr ""
1314
1315 #: ../../../src/MenuMovementType.cpp:89
1316 msgid "Can be changed later in the Configuration menu."
1317 msgstr ""
1318
1319 #: ../../../src/MenuMovementType.cpp:92 ../../../src/MenuMovementType.cpp:122
1320 msgid "Keyboard"
1321 msgstr ""
1322
1323 #: ../../../src/MenuMovementType.cpp:93 ../../../src/MenuMovementType.cpp:128
1324 msgid "Mouse"
1325 msgstr ""
1326
1327 #: ../../../src/MenuMovementType.cpp:129
1328 msgid "Button"
1329 msgstr ""
10951330
10961331 #: ../../../src/MenuNumPicker.cpp:59
10971332 msgid "Enter amount:"
10981333 msgstr "量の入力:"
10991334
1100 #: ../../../src/MenuPowers.cpp:787
1335 #: ../../../src/MenuPowers.cpp:894
11011336 msgid "Passive"
11021337 msgstr "パッシブ スキル"
11031338
1104 #: ../../../src/MenuPowers.cpp:792
1339 #: ../../../src/MenuPowers.cpp:901
11051340 #, c-format
11061341 msgid "Costs %d MP"
11071342 msgstr "費用は %d MP"
11081343
1109 #: ../../../src/MenuPowers.cpp:796
1344 #: ../../../src/MenuPowers.cpp:905
11101345 #, c-format
11111346 msgid "Costs %d HP"
11121347 msgstr "費用は %d HP"
11131348
1114 #: ../../../src/MenuPowers.cpp:801
1349 #: ../../../src/MenuPowers.cpp:909
11151350 msgid "Cooldown:"
11161351 msgstr "クールダウン:"
11171352
1118 #: ../../../src/MenuPowers.cpp:866 ../../../src/MenuPowers.cpp:869
1353 #: ../../../src/MenuPowers.cpp:960 ../../../src/MenuPowers.cpp:963
11191354 msgid "Damage per second"
11201355 msgstr "ダメージ毎秒"
11211356
1122 #: ../../../src/MenuPowers.cpp:872 ../../../src/MenuPowers.cpp:875
1357 #: ../../../src/MenuPowers.cpp:966 ../../../src/MenuPowers.cpp:969
11231358 msgid "HP per second"
11241359 msgstr "HP毎秒"
11251360
1126 #: ../../../src/MenuPowers.cpp:878 ../../../src/MenuPowers.cpp:881
1361 #: ../../../src/MenuPowers.cpp:972 ../../../src/MenuPowers.cpp:975
11271362 msgid "MP per second"
11281363 msgstr "MP毎秒"
11291364
1130 #: ../../../src/MenuPowers.cpp:885
1365 #: ../../../src/MenuPowers.cpp:979
11311366 msgid "Immobilize"
11321367 msgstr "動けなくする"
11331368
1134 #: ../../../src/MenuPowers.cpp:893
1369 #: ../../../src/MenuPowers.cpp:987
11351370 msgid "Immunity"
11361371 msgstr "まぬがれ"
11371372
1138 #: ../../../src/MenuPowers.cpp:896
1373 #: ../../../src/MenuPowers.cpp:990
11391374 msgid "Immunity to damage over time"
11401375 msgstr ""
11411376
1142 #: ../../../src/MenuPowers.cpp:899
1377 #: ../../../src/MenuPowers.cpp:993
11431378 msgid "Immunity to slow"
11441379 msgstr ""
11451380
1146 #: ../../../src/MenuPowers.cpp:902
1381 #: ../../../src/MenuPowers.cpp:996
11471382 msgid "Immunity to stun"
11481383 msgstr ""
11491384
1150 #: ../../../src/MenuPowers.cpp:905
1385 #: ../../../src/MenuPowers.cpp:999
11511386 msgid "Immunity to HP steal"
11521387 msgstr ""
11531388
1154 #: ../../../src/MenuPowers.cpp:908
1389 #: ../../../src/MenuPowers.cpp:1002
11551390 msgid "Immunity to MP steal"
11561391 msgstr ""
11571392
1158 #: ../../../src/MenuPowers.cpp:911
1393 #: ../../../src/MenuPowers.cpp:1005
11591394 msgid "Immunity to knockback"
11601395 msgstr ""
11611396
1162 #: ../../../src/MenuPowers.cpp:914
1397 #: ../../../src/MenuPowers.cpp:1008
11631398 msgid "Immunity to damage reflection"
11641399 msgstr ""
11651400
1166 #: ../../../src/MenuPowers.cpp:917
1401 #: ../../../src/MenuPowers.cpp:1014
11671402 msgid "Stun"
11681403 msgstr "スタン"
11691404
1170 #: ../../../src/MenuPowers.cpp:920
1405 #: ../../../src/MenuPowers.cpp:1017
11711406 msgid "Automatic revive on death"
11721407 msgstr "死からの自動復帰"
11731408
1174 #: ../../../src/MenuPowers.cpp:923
1409 #: ../../../src/MenuPowers.cpp:1020
11751410 msgid "Convert"
11761411 msgstr ""
11771412
1178 #: ../../../src/MenuPowers.cpp:926
1413 #: ../../../src/MenuPowers.cpp:1023
11791414 msgid "Fear"
11801415 msgstr ""
11811416
1182 #: ../../../src/MenuPowers.cpp:929
1417 #: ../../../src/MenuPowers.cpp:1026
11831418 msgid "Lifespan"
11841419 msgstr ""
11851420
1186 #: ../../../src/MenuPowers.cpp:953
1421 #: ../../../src/MenuPowers.cpp:1050
11871422 msgid "Magical Shield"
11881423 msgstr "魔法シールド"
11891424
1190 #: ../../../src/MenuPowers.cpp:982
1425 #: ../../../src/MenuPowers.cpp:1079
11911426 msgid "Healing"
11921427 msgstr "ヒーリング"
11931428
1194 #: ../../../src/MenuPowers.cpp:985
1429 #: ../../../src/MenuPowers.cpp:1082
11951430 msgid "Knockback"
11961431 msgstr "はね返し"
11971432
1198 #: ../../../src/MenuPowers.cpp:1010
1433 #: ../../../src/MenuPowers.cpp:1106
11991434 #, c-format
12001435 msgid "%d%% chance"
12011436 msgstr ""
12021437
1203 #: ../../../src/MenuPowers.cpp:1062
1438 #: ../../../src/MenuPowers.cpp:1158
12041439 msgid "Base Accuracy"
12051440 msgstr "ベース精度"
12061441
1207 #: ../../../src/MenuPowers.cpp:1082
1442 #: ../../../src/MenuPowers.cpp:1178
12081443 msgid "Base Critical Chance"
12091444 msgstr "ベースのクリティカル機会"
12101445
1211 #: ../../../src/MenuPowers.cpp:1090
1446 #: ../../../src/MenuPowers.cpp:1186
12121447 msgid "Ignores Absorbtion"
12131448 msgstr "吸収を無視"
12141449
1215 #: ../../../src/MenuPowers.cpp:1095
1450 #: ../../../src/MenuPowers.cpp:1191
12161451 msgid "Ignores Avoidance"
12171452 msgstr "回避を無視"
12181453
1219 #: ../../../src/MenuPowers.cpp:1100
1454 #: ../../../src/MenuPowers.cpp:1196
12201455 #, c-format
12211456 msgid "%d%% Chance to crit slowed targets"
12221457 msgstr ""
12231458
1224 #: ../../../src/MenuPowers.cpp:1105
1459 #: ../../../src/MenuPowers.cpp:1201
12251460 #, c-format
12261461 msgid "Elemental Damage (%s)"
12271462 msgstr ""
12281463
1229 #: ../../../src/MenuPowers.cpp:1114
1464 #: ../../../src/MenuPowers.cpp:1210
12301465 #, c-format
12311466 msgid "Requires a %s"
12321467 msgstr "%s が必要です"
12331468
1234 #: ../../../src/MenuPowers.cpp:1151 ../../../src/MenuPowers.cpp:1154
1469 #: ../../../src/MenuPowers.cpp:1248 ../../../src/MenuPowers.cpp:1251
12351470 #, c-format
12361471 msgid "Requires Power: %s"
12371472 msgstr "必要な能力: %s"
12381473
1239 #: ../../../src/MenuPowers.cpp:1163
1474 #: ../../../src/MenuPowers.cpp:1260
12401475 msgid "Click to Unlock (uses 1 Skill Point)"
12411476 msgstr "クリックすると解放(スキルポイントを1消費)"
12421477
1243 #: ../../../src/MenuPowers.cpp:1167 ../../../src/MenuPowers.cpp:1169
1478 #: ../../../src/MenuPowers.cpp:1264 ../../../src/MenuPowers.cpp:1266
12441479 msgid "Requires 1 Skill Point"
12451480 msgstr "スキルポイント 1 個が 必要です"
12461481
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
1482 #: ../../../src/MenuPowers.cpp:1466
1483 #, c-format
1484 msgid "Available skill points: %d"
1485 msgstr ""
1486
1487 #: ../../../src/MenuPowers.cpp:1498
12581488 msgid "Next Level:"
12591489 msgstr "次のレベル:"
12601490
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
1491 #: ../../../src/MenuStash.cpp:80 ../../../src/MenuStash.cpp:161
1492 msgid "Stash"
1493 msgstr ""
1494
1495 #: ../../../src/MenuStash.cpp:174 ../../../src/MenuStash.cpp:188
1496 msgid "Private"
1497 msgstr ""
1498
1499 #: ../../../src/MenuStash.cpp:175
1500 msgid "Shared"
1501 msgstr ""
1502
1503 #: ../../../src/MenuStash.cpp:340
1504 msgid "This item can not be stored in the stash."
1505 msgstr ""
1506
1507 #: ../../../src/MenuStash.cpp:345
1508 msgid "This item can not be stored in the private stash."
1509 msgstr ""
1510
1511 #: ../../../src/MenuStash.cpp:350
1512 msgid "This item can not be stored in the shared stash."
1513 msgstr ""
1514
1515 #: ../../../src/MenuStash.cpp:360
12701516 msgid "Stash is full."
12711517 msgstr "スタッシュは満杯です。"
12721518
1273 #: ../../../src/MenuTalker.cpp:454
1519 #: ../../../src/MenuStash.cpp:414
1520 #, c-format
1521 msgid "Can not store item in stash: %s"
1522 msgstr ""
1523
1524 #: ../../../src/MenuTalker.cpp:448
1525 #, c-format
1526 msgid "<dialog node %d>"
1527 msgstr ""
1528
1529 #: ../../../src/MenuTalker.cpp:456
12741530 msgid "Trade"
12751531 msgstr "売買"
12761532
1277 #: ../../../src/MenuVendor.cpp:58
1533 #: ../../../src/MenuVendor.cpp:60
12781534 msgid "Buyback"
12791535 msgstr "買い戻し"
12801536
1281 #: ../../../src/MenuVendor.cpp:279
1537 #: ../../../src/MenuVendor.cpp:283
12821538 msgid "Vendor"
12831539 msgstr "売り手"
12841540
1285 #: ../../../src/PowerManager.cpp:1136
1541 #: ../../../src/PowerManager.cpp:1204
12861542 #, c-format
12871543 msgid "+%d Shield"
12881544 msgstr "+%d シールド"
12891545
1290 #: ../../../src/PowerManager.cpp:1392
1546 #: ../../../src/PowerManager.cpp:1461
12911547 msgid "You are already transformed, untransform first."
12921548 msgstr ""
12931549
1294 #: ../../../src/PowerManager.cpp:1404
1550 #: ../../../src/PowerManager.cpp:1473
12951551 msgid "Could not untransform at this position."
12961552 msgstr "この位置では、変身をとくことは、できない。"
12971553
12981554 #: ../../../src/QuestLog.cpp:234
12991555 msgid "Completed Quests"
1300 msgstr ""
1301
1302 #: ../../../src/SaveLoad.cpp:243 ../../../src/SaveLoad.cpp:244
1556 msgstr "完了したクエスト"
1557
1558 #: ../../../src/SaveLoad.cpp:250 ../../../src/SaveLoad.cpp:251
13031559 msgid "Game saved."
13041560 msgstr "ゲームをセーブしました。"
13051561
1306 #: ../../../src/SDLInputState.cpp:582
1562 #: ../../../src/SDLInputState.cpp:645
1563 msgid "BkSp"
1564 msgstr ""
1565
1566 #: ../../../src/SDLInputState.cpp:646
1567 msgid "Caps"
1568 msgstr ""
1569
1570 #: ../../../src/SDLInputState.cpp:647
1571 msgid "Del"
1572 msgstr ""
1573
1574 #: ../../../src/SDLInputState.cpp:649 ../../../src/SDLInputState.cpp:679
1575 msgid "End"
1576 msgstr ""
1577
1578 #: ../../../src/SDLInputState.cpp:650
1579 msgid "Esc"
1580 msgstr ""
1581
1582 #: ../../../src/SDLInputState.cpp:651 ../../../src/SDLInputState.cpp:681
1583 msgid "Home"
1584 msgstr ""
1585
1586 #: ../../../src/SDLInputState.cpp:652
1587 msgid "Ins"
1588 msgstr ""
1589
1590 #: ../../../src/SDLInputState.cpp:653
1591 msgid "LAlt"
1592 msgstr ""
1593
1594 #: ../../../src/SDLInputState.cpp:654
1595 msgid "LCtrl"
1596 msgstr ""
1597
1598 #: ../../../src/SDLInputState.cpp:656
1599 msgid "LShft"
1600 msgstr ""
1601
1602 #: ../../../src/SDLInputState.cpp:657
1603 msgid "Num"
1604 msgstr ""
1605
1606 #: ../../../src/SDLInputState.cpp:658
1607 msgid "PgDn"
1608 msgstr ""
1609
1610 #: ../../../src/SDLInputState.cpp:659
1611 msgid "PgUp"
1612 msgstr ""
1613
1614 #: ../../../src/SDLInputState.cpp:660 ../../../src/SDLInputState.cpp:690
1615 msgid "Pause"
1616 msgstr ""
1617
1618 #: ../../../src/SDLInputState.cpp:661
1619 msgid "Print"
1620 msgstr ""
1621
1622 #: ../../../src/SDLInputState.cpp:662
1623 msgid "RAlt"
1624 msgstr ""
1625
1626 #: ../../../src/SDLInputState.cpp:663
1627 msgid "RCtrl"
1628 msgstr ""
1629
1630 #: ../../../src/SDLInputState.cpp:664
1631 msgid "Ret"
1632 msgstr ""
1633
1634 #: ../../../src/SDLInputState.cpp:666
1635 msgid "RShft"
1636 msgstr ""
1637
1638 #: ../../../src/SDLInputState.cpp:667
1639 msgid "SLock"
1640 msgstr ""
1641
1642 #: ../../../src/SDLInputState.cpp:668
1643 msgid "Spc"
1644 msgstr ""
1645
1646 #: ../../../src/SDLInputState.cpp:669 ../../../src/SDLInputState.cpp:699
1647 msgid "Tab"
1648 msgstr ""
1649
1650 #: ../../../src/SDLInputState.cpp:675
13071651 msgid "Backspace"
13081652 msgstr ""
13091653
1310 #: ../../../src/SDLInputState.cpp:583
1654 #: ../../../src/SDLInputState.cpp:676
13111655 msgid "CapsLock"
13121656 msgstr ""
13131657
1314 #: ../../../src/SDLInputState.cpp:586
1315 msgid "End"
1316 msgstr ""
1317
1318 #: ../../../src/SDLInputState.cpp:587
1658 #: ../../../src/SDLInputState.cpp:680
13191659 msgid "Escape"
13201660 msgstr ""
13211661
1322 #: ../../../src/SDLInputState.cpp:588
1323 msgid "Home"
1324 msgstr ""
1325
1326 #: ../../../src/SDLInputState.cpp:589
1662 #: ../../../src/SDLInputState.cpp:682
13271663 msgid "Insert"
13281664 msgstr ""
13291665
1330 #: ../../../src/SDLInputState.cpp:590
1666 #: ../../../src/SDLInputState.cpp:683
13311667 msgid "Left Alt"
13321668 msgstr ""
13331669
1334 #: ../../../src/SDLInputState.cpp:591
1670 #: ../../../src/SDLInputState.cpp:684
13351671 msgid "Left Ctrl"
13361672 msgstr ""
13371673
1338 #: ../../../src/SDLInputState.cpp:593
1674 #: ../../../src/SDLInputState.cpp:686
13391675 msgid "Left Shift"
13401676 msgstr ""
13411677
1342 #: ../../../src/SDLInputState.cpp:594
1678 #: ../../../src/SDLInputState.cpp:687
13431679 msgid "NumLock"
13441680 msgstr ""
13451681
1346 #: ../../../src/SDLInputState.cpp:595
1682 #: ../../../src/SDLInputState.cpp:688
13471683 msgid "PageDown"
13481684 msgstr ""
13491685
1350 #: ../../../src/SDLInputState.cpp:596
1686 #: ../../../src/SDLInputState.cpp:689
13511687 msgid "PageUp"
13521688 msgstr ""
13531689
1354 #: ../../../src/SDLInputState.cpp:597
1355 msgid "Pause"
1356 msgstr ""
1357
1358 #: ../../../src/SDLInputState.cpp:598
1690 #: ../../../src/SDLInputState.cpp:691
13591691 msgid "PrintScreen"
13601692 msgstr ""
13611693
1362 #: ../../../src/SDLInputState.cpp:599
1694 #: ../../../src/SDLInputState.cpp:692
13631695 msgid "Right Alt"
13641696 msgstr ""
13651697
1366 #: ../../../src/SDLInputState.cpp:600
1698 #: ../../../src/SDLInputState.cpp:693
13671699 msgid "Right Ctrl"
13681700 msgstr ""
13691701
1370 #: ../../../src/SDLInputState.cpp:601
1702 #: ../../../src/SDLInputState.cpp:694
13711703 msgid "Return"
13721704 msgstr ""
13731705
1374 #: ../../../src/SDLInputState.cpp:603
1706 #: ../../../src/SDLInputState.cpp:696
13751707 msgid "Right Shift"
13761708 msgstr ""
13771709
1378 #: ../../../src/SDLInputState.cpp:604
1710 #: ../../../src/SDLInputState.cpp:697
13791711 msgid "ScrollLock"
13801712 msgstr ""
13811713
1382 #: ../../../src/SDLInputState.cpp:605
1714 #: ../../../src/SDLInputState.cpp:698
13831715 msgid "Space"
13841716 msgstr ""
13851717
1386 #: ../../../src/SDLInputState.cpp:606
1387 msgid "Tab"
1388 msgstr ""
1389
1390 #: ../../../src/SDLInputState.cpp:620
1718 #: ../../../src/SDLInputState.cpp:712
1719 #, c-format
1720 msgid "M%d"
1721 msgstr ""
1722
1723 #: ../../../src/SDLInputState.cpp:718
13911724 #, c-format
13921725 msgid "Mouse %d"
13931726 msgstr ""
13941727
1395 #: ../../../src/SDLInputState.cpp:628
1728 #: ../../../src/SDLInputState.cpp:728
1729 #, c-format
1730 msgid "JX%d-"
1731 msgstr ""
1732
1733 #: ../../../src/SDLInputState.cpp:730
13961734 #, c-format
13971735 msgid "Axis %d -"
13981736 msgstr ""
13991737
1400 #: ../../../src/SDLInputState.cpp:630
1738 #: ../../../src/SDLInputState.cpp:734
1739 #, c-format
1740 msgid "JX%d+"
1741 msgstr ""
1742
1743 #: ../../../src/SDLInputState.cpp:736
14011744 #, c-format
14021745 msgid "Axis %d +"
14031746 msgstr ""
14041747
1405 #: ../../../src/SDLInputState.cpp:633
1748 #: ../../../src/SDLInputState.cpp:741
1749 #, c-format
1750 msgid "JB%d"
1751 msgstr ""
1752
1753 #: ../../../src/SDLInputState.cpp:743
14061754 #, c-format
14071755 msgid "Button %d"
14081756 msgstr ""
14091757
1410 #: ../../../src/SDLInputState.cpp:637
1411 msgid "(none)"
1412 msgstr ""
1413
1414 #: ../../../src/SDLInputState.cpp:677
1758 #: ../../../src/SDLInputState.cpp:789
14151759 msgid "Touch control D-Pad"
14161760 msgstr ""
14171761
1418 #: ../../../src/SDLInputState.cpp:701
1762 #: ../../../src/SDLInputState.cpp:812
14191763 msgid "Touch control buttons"
14201764 msgstr ""
14211765
1422 #: ../../../src/SDLInputState.cpp:716
1766 #: ../../../src/SDLInputState.cpp:826
14231767 msgid "Tap"
14241768 msgstr ""
14251769
1426 #: ../../../src/SDLInputState.cpp:760 ../../../src/SDLInputState.cpp:764
1427 #: ../../../src/SDLInputState.cpp:768
1770 #: ../../../src/SDLInputState.cpp:878 ../../../src/SDLInputState.cpp:880
1771 #, c-format
1772 msgid "Can not bind: %s"
1773 msgstr ""
1774
1775 #: ../../../src/SDLInputState.cpp:892 ../../../src/SDLInputState.cpp:896
1776 #: ../../../src/SDLInputState.cpp:900
14281777 #, c-format
14291778 msgid "'%s' is no longer bound to:"
14301779 msgstr ""
14351784
14361785 #: ../../../src/Stats.cpp:39
14371786 msgid "Total amount of HP."
1438 msgstr ""
1787 msgstr "HP の 上限 です。"
14391788
14401789 #: ../../../src/Stats.cpp:43
14411790 msgid "HP Regen"
14511800
14521801 #: ../../../src/Stats.cpp:49
14531802 msgid "Total amount of MP."
1454 msgstr ""
1803 msgstr "MP の 上限 です。"
14551804
14561805 #: ../../../src/Stats.cpp:53
14571806 msgid "MP Regen"
14871836
14881837 #: ../../../src/Stats.cpp:69 ../../../src/Stats.cpp:74
14891838 msgid "Reduces the amount of damage taken."
1490 msgstr ""
1839 msgstr "攻撃を受けたときの ダメージ が どんだけ へるか のポイント"
14911840
14921841 #: ../../../src/Stats.cpp:73
14931842 msgid "Absorb Max"
15831932 msgid "Base MP"
15841933 msgstr "ベースMP"
15851934
1586 #: ../../../src/Utils.cpp:346
1935 #: ../../../src/Utils.cpp:365
15871936 msgid "k"
15881937 msgstr "千"
15891938
1590 #: ../../../src/Utils.cpp:580
1939 #: ../../../src/Utils.cpp:635
15911940 #, c-format
15921941 msgid "%s second"
15931942 msgstr "%s 秒"
15941943
1595 #: ../../../src/Utils.cpp:583
1944 #: ../../../src/Utils.cpp:638
15961945 #, c-format
15971946 msgid "%s seconds"
15981947 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-07-02 13:26-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:1220
126 #: ../../../src/StatBlock.cpp:926 ../../../src/StatBlock.cpp:932
127 #, c-format
128 msgid "+%d HP"
129 msgstr ""
130
131 #: ../../../src/Entity.cpp:572 ../../../src/StatBlock.cpp:937
132 #: ../../../src/StatBlock.cpp:943
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:704
174 msgid "Entering game world..."
175 msgstr "게임 월드로 들어가는 중..."
176
177 #: ../../../src/GameStateLoad.cpp:707
178 msgid "Loading saved game..."
179 msgstr "저장된 게임 불러오는 중..."
180
181 #: ../../../src/GameStateLoad.cpp:740
182 msgid "Invalid save"
183 msgstr "손상된 세이브"
184
185 #: ../../../src/GameStateLoad.cpp:764 ../../../src/ItemManager.cpp:745
186 #: ../../../src/MenuPowers.cpp:882 ../../../src/MenuPowers.cpp:1241
187 #: ../../../src/MenuPowers.cpp:1653
188 #, c-format
189 msgid "Level %d"
190 msgstr ""
191
192 #: ../../../src/GameStateNew.cpp:66 ../../../src/InputState.cpp:416
193 #: ../../../src/MenuConfig.cpp:254
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:670
247 #: ../../../src/SDLInputState.cpp:700
248 msgid "Up"
249 msgstr ""
250
251 #: ../../../src/InputState.cpp:419 ../../../src/MenuMovementType.cpp:125
252 #: ../../../src/MenuMovementType.cpp:134 ../../../src/SDLInputState.cpp:648
253 #: ../../../src/SDLInputState.cpp:678
254 msgid "Down"
255 msgstr ""
256
257 #: ../../../src/InputState.cpp:420 ../../../src/MenuMovementType.cpp:124
258 #: ../../../src/MenuMovementType.cpp:133 ../../../src/SDLInputState.cpp:655
259 #: ../../../src/SDLInputState.cpp:685
260 msgid "Left"
261 msgstr ""
262
263 #: ../../../src/InputState.cpp:421 ../../../src/MenuMovementType.cpp:126
264 #: ../../../src/MenuMovementType.cpp:135 ../../../src/SDLInputState.cpp:665
265 #: ../../../src/SDLInputState.cpp:695
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:159
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:677
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:981
406 #, c-format
407 msgid "%d%% Speed"
408 msgstr ""
409
410 #: ../../../src/ItemManager.cpp:650 ../../../src/MenuPowers.cpp:984
411 #, c-format
412 msgid "%d%% Attack Speed"
413 msgstr ""
414
415 #: ../../../src/ItemManager.cpp:672 ../../../src/MenuCharacter.cpp:352
416 #: ../../../src/MenuPowers.cpp:953
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:1228
446 #: ../../../src/MenuPowers.cpp:1231
447 #, c-format
448 msgid "Requires Level %d"
449 msgstr ""
450
451 #: ../../../src/ItemManager.cpp:836 ../../../src/MenuPowers.cpp:1220
452 #: ../../../src/MenuPowers.cpp:1222
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:898
483 msgid "Set:"
484 msgstr ""
485
486 #: ../../../src/ItemManager.cpp:905
487 #, c-format
488 msgid "%d items:"
489 msgstr ""
490
491 #: ../../../src/ItemManager.cpp:920
492 #, c-format
493 msgid "Press [%s] to read"
494 msgstr ""
495
496 #: ../../../src/ItemManager.cpp:923
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:1256
573 msgid "Clear"
574 msgstr ""
575
576 #: ../../../src/MenuConfig.cpp:122 ../../../src/MenuConfig.cpp:1254
577 msgid "Assign:"
578 msgstr ""
579
580 #: ../../../src/MenuConfig.cpp:123 ../../../src/MenuConfig.cpp:253
581 msgid "Defaults"
582 msgstr ""
583
584 #: ../../../src/MenuConfig.cpp:123
585 msgid "Reset ALL settings?"
586 msgstr ""
587
588 #: ../../../src/MenuConfig.cpp:252 ../../../src/MenuNumPicker.cpp:49
589 msgid "OK"
590 msgstr ""
591
592 #: ../../../src/MenuConfig.cpp:256 ../../../src/MenuGameOver.cpp:72
593 msgid "Continue"
594 msgstr ""
595
596 #: ../../../src/MenuConfig.cpp:258
597 msgid "Save Game"
598 msgstr ""
599
600 #: ../../../src/MenuConfig.cpp:301 ../../../src/MenuConfig.cpp:352
601 msgid "Default"
602 msgstr ""
603
604 #: ../../../src/MenuConfig.cpp:301
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:302
611 msgid "Show all"
612 msgstr ""
613
614 #: ../../../src/MenuConfig.cpp:302
615 msgid ""
616 "Always show loot tooltips. Temporarily hide all loot tooltips with 'Alt'."
617 msgstr ""
618
619 #: ../../../src/MenuConfig.cpp:303 ../../../src/MenuConfig.cpp:308
620 msgid "Hidden"
621 msgstr ""
622
623 #: ../../../src/MenuConfig.cpp:303
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:306
630 msgid "Visible"
631 msgstr ""
632
633 #: ../../../src/MenuConfig.cpp:307
634 msgid "Visible (2x zoom)"
635 msgstr ""
636
637 #: ../../../src/MenuConfig.cpp:311
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:312
644 msgid "- Display a message"
645 msgstr ""
646
647 #: ../../../src/MenuConfig.cpp:313
648 msgid "- Play a sound"
649 msgstr ""
650
651 #: ../../../src/MenuConfig.cpp:314
652 msgid "- Change the cursor"
653 msgstr ""
654
655 #: ../../../src/MenuConfig.cpp:316
656 msgid "Disabled"
657 msgstr ""
658
659 #: ../../../src/MenuConfig.cpp:317
660 msgid "All"
661 msgstr ""
662
663 #: ../../../src/MenuConfig.cpp:318
664 msgid "Message & Cursor"
665 msgstr ""
666
667 #: ../../../src/MenuConfig.cpp:319
668 msgid "Message & Sound"
669 msgstr ""
670
671 #: ../../../src/MenuConfig.cpp:320
672 msgid "Sound & Cursor"
673 msgstr ""
674
675 #: ../../../src/MenuConfig.cpp:321
676 msgid "Message"
677 msgstr ""
678
679 #: ../../../src/MenuConfig.cpp:322
680 msgid "Cursor"
681 msgstr ""
682
683 #: ../../../src/MenuConfig.cpp:323
684 msgid "Sound"
685 msgstr ""
686
687 #: ../../../src/MenuConfig.cpp:329
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:347
694 msgid "The maximum frame rate that the game will be allowed to run at."
695 msgstr ""
696
697 #: ../../../src/MenuConfig.cpp:351
698 msgid ""
699 "The render size refers to the height in pixels of the surface used to draw "
700 "the game. Mods define the allowed render sizes, but this option allows "
701 "overriding the maximum size."
702 msgstr ""
703
704 #: ../../../src/MenuConfig.cpp:374 ../../../src/MenuConfig.cpp:1679
705 #: ../../../src/MenuGameOver.cpp:116
706 msgid "Exit"
707 msgstr ""
708
709 #: ../../../src/MenuConfig.cpp:375
710 msgid "Video"
711 msgstr ""
712
713 #: ../../../src/MenuConfig.cpp:376
714 msgid "Audio"
715 msgstr ""
716
717 #: ../../../src/MenuConfig.cpp:377
718 msgid "Interface"
719 msgstr ""
720
721 #: ../../../src/MenuConfig.cpp:378
722 msgid "Input"
723 msgstr ""
724
725 #: ../../../src/MenuConfig.cpp:379
726 msgid "Keybindings"
727 msgstr ""
728
729 #: ../../../src/MenuConfig.cpp:380
730 msgid "Mods"
731 msgstr ""
732
733 #: ../../../src/MenuConfig.cpp:392
734 msgid "Paused"
735 msgstr ""
736
737 #: ../../../src/MenuConfig.cpp:395
738 msgid "Time Played"
739 msgstr ""
740
741 #: ../../../src/MenuConfig.cpp:401
742 msgid "Renderer"
743 msgstr ""
744
745 #: ../../../src/MenuConfig.cpp:402
746 msgid "Full Screen Mode"
747 msgstr ""
748
749 #: ../../../src/MenuConfig.cpp:403
750 msgid "Hardware surfaces"
751 msgstr ""
752
753 #: ../../../src/MenuConfig.cpp:404
754 msgid "V-Sync"
755 msgstr ""
756
757 #: ../../../src/MenuConfig.cpp:405
758 msgid "Texture Filtering"
759 msgstr ""
760
761 #: ../../../src/MenuConfig.cpp:406
762 msgid "DPI scaling"
763 msgstr ""
764
765 #: ../../../src/MenuConfig.cpp:407
766 msgid "Parallax Layers"
767 msgstr ""
768
769 #: ../../../src/MenuConfig.cpp:408
770 msgid "Allow changing gamma"
771 msgstr ""
772
773 #: ../../../src/MenuConfig.cpp:409
774 msgid "Gamma"
775 msgstr ""
776
777 #: ../../../src/MenuConfig.cpp:410
778 msgid "Maximum Render Size"
779 msgstr ""
780
781 #: ../../../src/MenuConfig.cpp:411
782 msgid "Frame Limit"
783 msgstr ""
784
785 #: ../../../src/MenuConfig.cpp:413
786 msgid "Sound Volume"
787 msgstr ""
788
789 #: ../../../src/MenuConfig.cpp:414
790 msgid "Music Volume"
791 msgstr ""
792
793 #: ../../../src/MenuConfig.cpp:416
794 msgid "Language"
795 msgstr ""
796
797 #: ../../../src/MenuConfig.cpp:417
798 msgid "Show FPS"
799 msgstr ""
800
801 #: ../../../src/MenuConfig.cpp:418
802 msgid "Hardware mouse cursor"
803 msgstr ""
804
805 #: ../../../src/MenuConfig.cpp:419
806 msgid "Colorblind Mode"
807 msgstr ""
808
809 #: ../../../src/MenuConfig.cpp:420
810 msgid "Developer Mode"
811 msgstr ""
812
813 #: ../../../src/MenuConfig.cpp:421
814 msgid "Subtitles"
815 msgstr ""
816
817 #: ../../../src/MenuConfig.cpp:422
818 msgid "Loot tooltip visibility"
819 msgstr ""
820
821 #: ../../../src/MenuConfig.cpp:423
822 msgid "Mini-map mode"
823 msgstr ""
824
825 #: ../../../src/MenuConfig.cpp:424
826 msgid "Always show stat bar labels"
827 msgstr ""
828
829 #: ../../../src/MenuConfig.cpp:425
830 msgid "Allow stat bar auto-hiding"
831 msgstr ""
832
833 #: ../../../src/MenuConfig.cpp:426
834 msgid "Show combat text"
835 msgstr ""
836
837 #: ../../../src/MenuConfig.cpp:427
838 msgid "Automatically equip items"
839 msgstr ""
840
841 #: ../../../src/MenuConfig.cpp:428
842 msgid "Show hidden entity markers"
843 msgstr ""
844
845 #: ../../../src/MenuConfig.cpp:429
846 msgid "Low health notification"
847 msgstr ""
848
849 #: ../../../src/MenuConfig.cpp:430
850 msgid "Low health threshold"
851 msgstr ""
852
853 #: ../../../src/MenuConfig.cpp:431
854 msgid "Show item comparison tooltips"
855 msgstr ""
856
857 #: ../../../src/MenuConfig.cpp:434 ../../../src/MenuMovementType.cpp:94
858 #: ../../../src/MenuMovementType.cpp:131
859 msgid "Joystick"
860 msgstr ""
861
862 #: ../../../src/MenuConfig.cpp:435
863 msgid "Move hero using mouse"
864 msgstr ""
865
866 #: ../../../src/MenuConfig.cpp:436
867 msgid "Mouse aim"
868 msgstr ""
869
870 #: ../../../src/MenuConfig.cpp:437
871 msgid "Do not use mouse"
872 msgstr ""
873
874 #: ../../../src/MenuConfig.cpp:438
875 msgid "Swap mouse movement button"
876 msgstr ""
877
878 #: ../../../src/MenuConfig.cpp:439
879 msgid "Attack with mouse movement"
880 msgstr ""
881
882 #: ../../../src/MenuConfig.cpp:440
883 msgid "Joystick Deadzone"
884 msgstr ""
885
886 #: ../../../src/MenuConfig.cpp:441
887 msgid "Touch Controls"
888 msgstr ""
889
890 #: ../../../src/MenuConfig.cpp:442
891 msgid "Touch Gamepad Scaling"
892 msgstr ""
893
894 #: ../../../src/MenuConfig.cpp:452
895 #, c-format
896 msgid "Primary binding: %s"
897 msgstr ""
898
899 #: ../../../src/MenuConfig.cpp:453
900 #, c-format
901 msgid "Alternate binding: %s"
902 msgstr ""
903
904 #: ../../../src/MenuConfig.cpp:454
905 #, c-format
906 msgid "Joystick binding: %s"
907 msgstr ""
908
909 #: ../../../src/MenuConfig.cpp:556
910 msgid ""
911 "Will try to store surfaces in video memory versus system memory. The effect "
912 "this has on performance depends on the renderer."
913 msgstr ""
914
915 #: ../../../src/MenuConfig.cpp:557
916 msgid ""
917 "Prevents screen tearing. Disable if you experience \"stuttering\" in "
918 "windowed mode or input lag."
919 msgstr ""
920
921 #: ../../../src/MenuConfig.cpp:558
922 msgid ""
923 "When enabled, this uses the screen DPI in addition to the window dimensions "
924 "to scale the rendering resolution. Otherwise, only the window dimensions are"
925 " used."
926 msgstr ""
927
928 #: ../../../src/MenuConfig.cpp:559
929 msgid ""
930 "This enables parallax (non-tile) layers. Disabling this setting can improve "
931 "performance in some cases."
932 msgstr ""
933
934 #: ../../../src/MenuConfig.cpp:560
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 #: ../../../src/MenuConfig.cpp:561
941 msgid ""
942 "Provides additional text for information that is primarily conveyed through "
943 "color."
944 msgstr ""
945
946 #: ../../../src/MenuConfig.cpp:562
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 #: ../../../src/MenuConfig.cpp:563
953 msgid ""
954 "When enabled, empty equipment slots will be filled with applicable items "
955 "when they are obtained."
956 msgstr ""
957
958 #: ../../../src/MenuConfig.cpp:564
959 msgid ""
960 "Shows a marker above enemies, allies, and the player when they are obscured "
961 "by tall objects."
962 msgstr ""
963
964 #: ../../../src/MenuConfig.cpp:565
965 msgid ""
966 "When enabled, tooltips for equipped items of the same type are shown next to"
967 " standard item tooltips."
968 msgstr ""
969
970 #: ../../../src/MenuConfig.cpp:566
971 msgid ""
972 "This allows the game to be controlled entirely with the keyboard (or "
973 "joystick)."
974 msgstr ""
975
976 #: ../../../src/MenuConfig.cpp:567
977 msgid ""
978 "When 'Move hero using mouse' is enabled, this setting controls if 'Main1' or"
979 " 'Main2' is used to move the hero. If enabled, 'Main2' will move the hero "
980 "instead of 'Main1'."
981 msgstr ""
982
983 #: ../../../src/MenuConfig.cpp:568
984 msgid ""
985 "When 'Move hero using mouse' is enabled, this setting controls if the Power "
986 "assigned to the movement button can be used by targeting an enemy. If this "
987 "setting is disabled, it is required to use 'Shift' to access the Power "
988 "assigned to the movement button."
989 msgstr ""
990
991 #: ../../../src/MenuConfig.cpp:569
992 msgid ""
993 "The player's attacks will be aimed in the direction of the mouse cursor when"
994 " this is enabled."
995 msgstr ""
996
997 #: ../../../src/MenuConfig.cpp:570
998 msgid ""
999 "When enabled, a virtual gamepad will be added in-game. Other interactions, "
1000 "such as drag-and-drop behavior, are also altered to better suit touch input."
1001 msgstr ""
1002
1003 #: ../../../src/MenuConfig.cpp:621
1004 msgid "Active Mods"
1005 msgstr ""
1006
1007 #: ../../../src/MenuConfig.cpp:630
1008 msgid "Available Mods"
1009 msgstr ""
1010
1011 #: ../../../src/MenuConfig.cpp:649
1012 msgid "<< Disable"
1013 msgstr ""
1014
1015 #: ../../../src/MenuConfig.cpp:655
1016 msgid "Enable >>"
1017 msgstr ""
1018
1019 #: ../../../src/MenuConfig.cpp:1536
1020 msgid "Version:"
1021 msgstr ""
1022
1023 #: ../../../src/MenuConfig.cpp:1541
1024 msgid "Game:"
1025 msgstr ""
1026
1027 #: ../../../src/MenuConfig.cpp:1546
1028 msgid "Engine version:"
1029 msgstr ""
1030
1031 #: ../../../src/MenuConfig.cpp:1554
1032 msgid "Requires mods:"
1033 msgstr ""
1034
1035 #: ../../../src/MenuConfig.cpp:1662 ../../../src/SDLInputState.cpp:750
1036 msgid "(none)"
1037 msgstr ""
1038
1039 #: ../../../src/MenuConfig.cpp:1679 ../../../src/MenuGameOver.cpp:73
1040 msgid "Save & Exit"
1041 msgstr ""
1042
1043 #: ../../../src/MenuDevConsole.cpp:65
1044 msgid "Execute"
1045 msgstr ""
1046
1047 #: ../../../src/MenuDevConsole.cpp:103 ../../../src/MenuDevConsole.cpp:153
1048 msgid "Developer Console"
1049 msgstr ""
1050
1051 #: ../../../src/MenuDevConsole.cpp:143
1052 #, c-format
1053 msgid "Use '%s' to inspect with the cursor."
1054 msgstr ""
1055
1056 #: ../../../src/MenuDevConsole.cpp:148
1057 msgid "Arguments with spaces should be enclosed with double quotes. Example:"
1058 msgstr ""
1059
1060 #: ../../../src/MenuDevConsole.cpp:149
1061 msgid "Type 'help' to get a list of commands."
1062 msgstr ""
1063
1064 #: ../../../src/MenuDevConsole.cpp:211 ../../../src/MenuDevConsole.cpp:215
1065 msgid "px"
1066 msgstr ""
1067
1068 #: ../../../src/MenuDevConsole.cpp:226
1069 msgid "Distance"
1070 msgstr ""
1071
1072 #: ../../../src/MenuDevConsole.cpp:241 ../../../src/MenuDevConsole.cpp:289
1073 #: ../../../src/MenuDevConsole.cpp:303
1074 msgid "Entity"
1075 msgstr ""
1076
1077 #: ../../../src/MenuDevConsole.cpp:263 ../../../src/MenuDevConsole.cpp:270
1078 msgid "none"
1079 msgstr ""
1080
1081 #: ../../../src/MenuDevConsole.cpp:264 ../../../src/MenuDevConsole.cpp:266
1082 msgid "wall"
1083 msgstr ""
1084
1085 #: ../../../src/MenuDevConsole.cpp:265 ../../../src/MenuDevConsole.cpp:267
1086 msgid "short wall / pit"
1087 msgstr ""
1088
1089 #: ../../../src/MenuDevConsole.cpp:268
1090 msgid "entity"
1091 msgstr ""
1092
1093 #: ../../../src/MenuDevConsole.cpp:269
1094 msgid "entity, ally"
1095 msgstr ""
1096
1097 #: ../../../src/MenuDevConsole.cpp:276
1098 msgid "Tile"
1099 msgstr ""
1100
1101 #: ../../../src/MenuDevConsole.cpp:377
1102 msgid "adds a power to the action bar"
1103 msgstr ""
1104
1105 #: ../../../src/MenuDevConsole.cpp:378
1106 msgid "turns on/off the display of the FPS counter"
1107 msgstr ""
1108
1109 #: ../../../src/MenuDevConsole.cpp:379
1110 msgid "turns on/off all of the HUD elements"
1111 msgstr ""
1112
1113 #: ../../../src/MenuDevConsole.cpp:380
1114 msgid "turns on/off the developer hud"
1115 msgstr ""
1116
1117 #: ../../../src/MenuDevConsole.cpp:381
1118 msgid ""
1119 "Prints a list of powers that match a search term. No search term will list "
1120 "all items"
1121 msgstr ""
1122
1123 #: ../../../src/MenuDevConsole.cpp:382
1124 msgid "Prints out all the map filenames located in the \"maps/\" directory."
1125 msgstr ""
1126
1127 #: ../../../src/MenuDevConsole.cpp:383
1128 msgid ""
1129 "Prints out the active campaign statuses that match a search term. No search "
1130 "term will list all active statuses"
1131 msgstr ""
1132
1133 #: ../../../src/MenuDevConsole.cpp:384
1134 msgid ""
1135 "Prints a list of items that match a search term. No search term will list "
1136 "all items"
1137 msgstr ""
1138
1139 #: ../../../src/MenuDevConsole.cpp:385
1140 msgid ""
1141 "parses a series of event components and executes them as a single event"
1142 msgstr ""
1143
1144 #: ../../../src/MenuDevConsole.cpp:386
1145 msgid "clears the command history"
1146 msgstr ""
1147
1148 #: ../../../src/MenuDevConsole.cpp:387
1149 msgid "displays this text"
1150 msgstr ""
1151
1152 #: ../../../src/MenuDevConsole.cpp:394
1153 msgid "Toggled the developer hud"
1154 msgstr ""
1155
1156 #: ../../../src/MenuDevConsole.cpp:398
1157 msgid "Toggled the hud"
1158 msgstr ""
1159
1160 #: ../../../src/MenuDevConsole.cpp:402
1161 msgid "Toggled the FPS counter"
1162 msgstr ""
1163
1164 #: ../../../src/MenuDevConsole.cpp:552
1165 msgid "ERROR: Incorrect number of arguments"
1166 msgstr ""
1167
1168 #: ../../../src/MenuDevConsole.cpp:554 ../../../src/MenuDevConsole.cpp:582
1169 msgid "HINT:"
1170 msgstr ""
1171
1172 #: ../../../src/MenuDevConsole.cpp:554
1173 msgid "<id>"
1174 msgstr ""
1175
1176 #: ../../../src/MenuDevConsole.cpp:570
1177 #, c-format
1178 msgid "ERROR: '%s' is not a valid event key"
1179 msgstr ""
1180
1181 #: ../../../src/MenuDevConsole.cpp:580
1182 msgid "ERROR: Too few arguments"
1183 msgstr ""
1184
1185 #: ../../../src/MenuDevConsole.cpp:582
1186 msgid "<key>=<val> <key>=<val> ..."
1187 msgstr ""
1188
1189 #: ../../../src/MenuDevConsole.cpp:587
1190 msgid "ERROR: Unknown command"
1191 msgstr ""
1192
1193 #: ../../../src/MenuDevConsole.cpp:589
1194 msgid "HINT: Type help"
1195 msgstr ""
1196
1197 #: ../../../src/MenuEnemy.cpp:162
1198 #, c-format
1199 msgid "%s level %d"
1200 msgstr ""
1201
1202 #: ../../../src/MenuEnemy.cpp:186
1203 msgid "Dead"
1204 msgstr ""
1205
1206 #: ../../../src/MenuEnemy.cpp:188
1207 msgid "Destroyed"
1208 msgstr ""
1209
1210 #: ../../../src/MenuGameOver.cpp:69
1211 msgid "Game Over"
1212 msgstr ""
1213
1214 #: ../../../src/MenuInventory.cpp:178
1215 #, c-format
1216 msgid "Lost %d%% of %s."
1217 msgstr ""
1218
1219 #: ../../../src/MenuInventory.cpp:185
1220 #, c-format
1221 msgid "Lost %d%% of total XP."
1222 msgstr ""
1223
1224 #: ../../../src/MenuInventory.cpp:190
1225 #, c-format
1226 msgid "Lost %d%% of current level XP."
1227 msgstr ""
1228
1229 #: ../../../src/MenuInventory.cpp:216
1230 #, c-format
1231 msgid "Lost %s."
1232 msgstr ""
1233
1234 #: ../../../src/MenuInventory.cpp:258 ../../../src/MenuStash.cpp:276
1235 #, c-format
1236 msgid "%d %s"
1237 msgstr ""
1238
1239 #: ../../../src/MenuInventory.cpp:301
1240 msgid "Pick up item(s):"
1241 msgstr ""
1242
1243 #: ../../../src/MenuInventory.cpp:302
1244 msgid "Use or equip item:"
1245 msgstr ""
1246
1247 #: ../../../src/MenuInventory.cpp:303
1248 #, c-format
1249 msgid "%s modifiers"
1250 msgstr ""
1251
1252 #: ../../../src/MenuInventory.cpp:304
1253 msgid "Select a quantity of item:"
1254 msgstr ""
1255
1256 #: ../../../src/MenuInventory.cpp:307
1257 msgid "Stash item stack:"
1258 msgstr ""
1259
1260 #: ../../../src/MenuInventory.cpp:309
1261 msgid "Sell item stack:"
1262 msgstr ""
1263
1264 #: ../../../src/MenuInventory.cpp:576
1265 msgid "You don't have enough of the required item."
1266 msgstr ""
1267
1268 #: ../../../src/MenuInventory.cpp:588
1269 msgid "You can't use this item right now."
1270 msgstr ""
1271
1272 #: ../../../src/MenuInventory.cpp:600
1273 msgid "This item can only be used from the action bar."
1274 msgstr ""
1275
1276 #: ../../../src/MenuInventory.cpp:718
1277 msgid "Inventory is full."
1278 msgstr ""
1279
1280 #: ../../../src/MenuInventory.cpp:843
1281 #, c-format
1282 msgid "Not enough %s."
1283 msgstr ""
1284
1285 #: ../../../src/MenuInventory.cpp:863 ../../../src/MenuInventory.cpp:870
1286 msgid "This item can not be sold."
1287 msgstr ""
1288
1289 #: ../../../src/MenuLog.cpp:91
1290 msgid "Notes"
1291 msgstr ""
1292
1293 #: ../../../src/MenuLog.cpp:92
1294 msgid "Quests"
1295 msgstr ""
1296
1297 #: ../../../src/MenuManager.cpp:305
1298 #, c-format
1299 msgid "XP: %d/%d"
1300 msgstr ""
1301
1302 #: ../../../src/MenuManager.cpp:875
1303 msgid "This item can not be dropped."
1304 msgstr ""
1305
1306 #: ../../../src/MenuManager.cpp:1501
1307 msgid "Equipped"
1308 msgstr ""
1309
1310 #: ../../../src/MenuMovementType.cpp:87
1311 msgid "Select a Movement Type"
1312 msgstr ""
1313
1314 #: ../../../src/MenuMovementType.cpp:89
1315 msgid "Can be changed later in the Configuration menu."
1316 msgstr ""
1317
1318 #: ../../../src/MenuMovementType.cpp:92 ../../../src/MenuMovementType.cpp:122
1319 msgid "Keyboard"
1320 msgstr ""
1321
1322 #: ../../../src/MenuMovementType.cpp:93 ../../../src/MenuMovementType.cpp:128
1323 msgid "Mouse"
1324 msgstr ""
1325
1326 #: ../../../src/MenuMovementType.cpp:129
1327 msgid "Button"
1328 msgstr ""
1329
1330 #: ../../../src/MenuNumPicker.cpp:59
1331 msgid "Enter amount:"
1332 msgstr ""
1333
1334 #: ../../../src/MenuPowers.cpp:894
1335 msgid "Passive"
1336 msgstr ""
1337
1338 #: ../../../src/MenuPowers.cpp:901
1339 #, c-format
1340 msgid "Costs %d MP"
1341 msgstr ""
1342
1343 #: ../../../src/MenuPowers.cpp:905
1344 #, c-format
1345 msgid "Costs %d HP"
1346 msgstr ""
1347
1348 #: ../../../src/MenuPowers.cpp:909
1349 msgid "Cooldown:"
1350 msgstr ""
1351
1352 #: ../../../src/MenuPowers.cpp:960 ../../../src/MenuPowers.cpp:963
1353 msgid "Damage per second"
1354 msgstr ""
1355
1356 #: ../../../src/MenuPowers.cpp:966 ../../../src/MenuPowers.cpp:969
1357 msgid "HP per second"
1358 msgstr ""
1359
1360 #: ../../../src/MenuPowers.cpp:972 ../../../src/MenuPowers.cpp:975
1361 msgid "MP per second"
1362 msgstr ""
1363
1364 #: ../../../src/MenuPowers.cpp:979
1365 msgid "Immobilize"
1366 msgstr ""
1367
1368 #: ../../../src/MenuPowers.cpp:987
1369 msgid "Immunity"
1370 msgstr ""
1371
1372 #: ../../../src/MenuPowers.cpp:990
1373 msgid "Immunity to damage over time"
1374 msgstr ""
1375
1376 #: ../../../src/MenuPowers.cpp:993
1377 msgid "Immunity to slow"
1378 msgstr ""
1379
1380 #: ../../../src/MenuPowers.cpp:996
1381 msgid "Immunity to stun"
1382 msgstr ""
1383
1384 #: ../../../src/MenuPowers.cpp:999
1385 msgid "Immunity to HP steal"
1386 msgstr ""
1387
1388 #: ../../../src/MenuPowers.cpp:1002
1389 msgid "Immunity to MP steal"
1390 msgstr ""
1391
1392 #: ../../../src/MenuPowers.cpp:1005
1393 msgid "Immunity to knockback"
1394 msgstr ""
1395
1396 #: ../../../src/MenuPowers.cpp:1008
1397 msgid "Immunity to damage reflection"
1398 msgstr ""
1399
1400 #: ../../../src/MenuPowers.cpp:1014
1401 msgid "Stun"
1402 msgstr ""
1403
1404 #: ../../../src/MenuPowers.cpp:1017
1405 msgid "Automatic revive on death"
1406 msgstr ""
1407
1408 #: ../../../src/MenuPowers.cpp:1020
1409 msgid "Convert"
1410 msgstr ""
1411
1412 #: ../../../src/MenuPowers.cpp:1023
1413 msgid "Fear"
1414 msgstr ""
1415
1416 #: ../../../src/MenuPowers.cpp:1026
1417 msgid "Lifespan"
1418 msgstr ""
1419
1420 #: ../../../src/MenuPowers.cpp:1050
1421 msgid "Magical Shield"
1422 msgstr ""
1423
1424 #: ../../../src/MenuPowers.cpp:1079
1425 msgid "Healing"
1426 msgstr ""
1427
1428 #: ../../../src/MenuPowers.cpp:1082
1429 msgid "Knockback"
1430 msgstr ""
1431
1432 #: ../../../src/MenuPowers.cpp:1106
1433 #, c-format
1434 msgid "%d%% chance"
1435 msgstr ""
1436
1437 #: ../../../src/MenuPowers.cpp:1158
1438 msgid "Base Accuracy"
1439 msgstr ""
1440
1441 #: ../../../src/MenuPowers.cpp:1178
1442 msgid "Base Critical Chance"
1443 msgstr ""
1444
1445 #: ../../../src/MenuPowers.cpp:1186
1446 msgid "Ignores Absorbtion"
1447 msgstr ""
1448
1449 #: ../../../src/MenuPowers.cpp:1191
1450 msgid "Ignores Avoidance"
1451 msgstr ""
1452
1453 #: ../../../src/MenuPowers.cpp:1196
1454 #, c-format
1455 msgid "%d%% Chance to crit slowed targets"
1456 msgstr ""
1457
1458 #: ../../../src/MenuPowers.cpp:1201
1459 #, c-format
1460 msgid "Elemental Damage (%s)"
1461 msgstr ""
1462
1463 #: ../../../src/MenuPowers.cpp:1210
1464 #, c-format
1465 msgid "Requires a %s"
1466 msgstr ""
1467
1468 #: ../../../src/MenuPowers.cpp:1248 ../../../src/MenuPowers.cpp:1251
1469 #, c-format
1470 msgid "Requires Power: %s"
1471 msgstr ""
1472
1473 #: ../../../src/MenuPowers.cpp:1260
1474 msgid "Click to Unlock (uses 1 Skill Point)"
1475 msgstr ""
1476
1477 #: ../../../src/MenuPowers.cpp:1264 ../../../src/MenuPowers.cpp:1266
1478 msgid "Requires 1 Skill Point"
1479 msgstr ""
1480
1481 #: ../../../src/MenuPowers.cpp:1466
1482 #, c-format
1483 msgid "Available skill points: %d"
1484 msgstr ""
1485
1486 #: ../../../src/MenuPowers.cpp:1498
1487 msgid "Next Level:"
1488 msgstr ""
1489
1490 #: ../../../src/MenuStash.cpp:80 ../../../src/MenuStash.cpp:161
1491 msgid "Stash"
1492 msgstr ""
1493
1494 #: ../../../src/MenuStash.cpp:174 ../../../src/MenuStash.cpp:188
1495 msgid "Private"
1496 msgstr ""
1497
1498 #: ../../../src/MenuStash.cpp:175
1499 msgid "Shared"
1500 msgstr ""
1501
1502 #: ../../../src/MenuStash.cpp:340
1503 msgid "This item can not be stored in the stash."
1504 msgstr ""
1505
1506 #: ../../../src/MenuStash.cpp:345
1507 msgid "This item can not be stored in the private stash."
1508 msgstr ""
1509
1510 #: ../../../src/MenuStash.cpp:350
1511 msgid "This item can not be stored in the shared stash."
1512 msgstr ""
1513
1514 #: ../../../src/MenuStash.cpp:360
1515 msgid "Stash is full."
1516 msgstr ""
1517
1518 #: ../../../src/MenuStash.cpp:414
1519 #, c-format
1520 msgid "Can not store item in stash: %s"
1521 msgstr ""
1522
1523 #: ../../../src/MenuTalker.cpp:448
1524 #, c-format
1525 msgid "<dialog node %d>"
1526 msgstr ""
1527
1528 #: ../../../src/MenuTalker.cpp:456
1529 msgid "Trade"
1530 msgstr ""
1531
1532 #: ../../../src/MenuVendor.cpp:60
1533 msgid "Buyback"
1534 msgstr ""
1535
1536 #: ../../../src/MenuVendor.cpp:283
1537 msgid "Vendor"
1538 msgstr ""
1539
1540 #: ../../../src/PowerManager.cpp:1204
1541 #, c-format
1542 msgid "+%d Shield"
1543 msgstr ""
1544
1545 #: ../../../src/PowerManager.cpp:1461
1546 msgid "You are already transformed, untransform first."
1547 msgstr ""
1548
1549 #: ../../../src/PowerManager.cpp:1473
1550 msgid "Could not untransform at this position."
1551 msgstr ""
1552
1553 #: ../../../src/QuestLog.cpp:234
1554 msgid "Completed Quests"
1555 msgstr ""
1556
1557 #: ../../../src/SaveLoad.cpp:250 ../../../src/SaveLoad.cpp:251
1558 msgid "Game saved."
1559 msgstr ""
1560
1561 #: ../../../src/SDLInputState.cpp:645
1562 msgid "BkSp"
1563 msgstr ""
1564
1565 #: ../../../src/SDLInputState.cpp:646
1566 msgid "Caps"
1567 msgstr ""
1568
1569 #: ../../../src/SDLInputState.cpp:647
1570 msgid "Del"
1571 msgstr ""
1572
1573 #: ../../../src/SDLInputState.cpp:649 ../../../src/SDLInputState.cpp:679
1574 msgid "End"
1575 msgstr ""
1576
1577 #: ../../../src/SDLInputState.cpp:650
1578 msgid "Esc"
1579 msgstr ""
1580
1581 #: ../../../src/SDLInputState.cpp:651 ../../../src/SDLInputState.cpp:681
1582 msgid "Home"
1583 msgstr ""
1584
1585 #: ../../../src/SDLInputState.cpp:652
1586 msgid "Ins"
1587 msgstr ""
1588
1589 #: ../../../src/SDLInputState.cpp:653
1590 msgid "LAlt"
1591 msgstr ""
1592
1593 #: ../../../src/SDLInputState.cpp:654
1594 msgid "LCtrl"
1595 msgstr ""
1596
1597 #: ../../../src/SDLInputState.cpp:656
1598 msgid "LShft"
1599 msgstr ""
1600
1601 #: ../../../src/SDLInputState.cpp:657
1602 msgid "Num"
1603 msgstr ""
1604
1605 #: ../../../src/SDLInputState.cpp:658
1606 msgid "PgDn"
1607 msgstr ""
1608
1609 #: ../../../src/SDLInputState.cpp:659
1610 msgid "PgUp"
1611 msgstr ""
1612
1613 #: ../../../src/SDLInputState.cpp:660 ../../../src/SDLInputState.cpp:690
1614 msgid "Pause"
1615 msgstr ""
1616
1617 #: ../../../src/SDLInputState.cpp:661
1618 msgid "Print"
1619 msgstr ""
1620
1621 #: ../../../src/SDLInputState.cpp:662
1622 msgid "RAlt"
1623 msgstr ""
1624
1625 #: ../../../src/SDLInputState.cpp:663
1626 msgid "RCtrl"
1627 msgstr ""
1628
1629 #: ../../../src/SDLInputState.cpp:664
1630 msgid "Ret"
1631 msgstr ""
1632
1633 #: ../../../src/SDLInputState.cpp:666
1634 msgid "RShft"
1635 msgstr ""
1636
1637 #: ../../../src/SDLInputState.cpp:667
1638 msgid "SLock"
1639 msgstr ""
1640
1641 #: ../../../src/SDLInputState.cpp:668
1642 msgid "Spc"
1643 msgstr ""
1644
1645 #: ../../../src/SDLInputState.cpp:669 ../../../src/SDLInputState.cpp:699
1646 msgid "Tab"
1647 msgstr ""
1648
1649 #: ../../../src/SDLInputState.cpp:675
1650 msgid "Backspace"
1651 msgstr ""
1652
1653 #: ../../../src/SDLInputState.cpp:676
1654 msgid "CapsLock"
1655 msgstr ""
1656
1657 #: ../../../src/SDLInputState.cpp:680
1658 msgid "Escape"
1659 msgstr ""
1660
1661 #: ../../../src/SDLInputState.cpp:682
1662 msgid "Insert"
1663 msgstr ""
1664
1665 #: ../../../src/SDLInputState.cpp:683
1666 msgid "Left Alt"
1667 msgstr ""
1668
1669 #: ../../../src/SDLInputState.cpp:684
1670 msgid "Left Ctrl"
1671 msgstr ""
1672
1673 #: ../../../src/SDLInputState.cpp:686
1674 msgid "Left Shift"
1675 msgstr ""
1676
1677 #: ../../../src/SDLInputState.cpp:687
1678 msgid "NumLock"
1679 msgstr ""
1680
1681 #: ../../../src/SDLInputState.cpp:688
1682 msgid "PageDown"
1683 msgstr ""
1684
1685 #: ../../../src/SDLInputState.cpp:689
1686 msgid "PageUp"
1687 msgstr ""
1688
1689 #: ../../../src/SDLInputState.cpp:691
1690 msgid "PrintScreen"
1691 msgstr ""
1692
1693 #: ../../../src/SDLInputState.cpp:692
1694 msgid "Right Alt"
1695 msgstr ""
1696
1697 #: ../../../src/SDLInputState.cpp:693
1698 msgid "Right Ctrl"
1699 msgstr ""
1700
1701 #: ../../../src/SDLInputState.cpp:694
1702 msgid "Return"
1703 msgstr ""
1704
1705 #: ../../../src/SDLInputState.cpp:696
1706 msgid "Right Shift"
1707 msgstr ""
1708
1709 #: ../../../src/SDLInputState.cpp:697
1710 msgid "ScrollLock"
1711 msgstr ""
1712
1713 #: ../../../src/SDLInputState.cpp:698
1714 msgid "Space"
1715 msgstr ""
1716
1717 #: ../../../src/SDLInputState.cpp:712
1718 #, c-format
1719 msgid "M%d"
1720 msgstr ""
1721
1722 #: ../../../src/SDLInputState.cpp:718
1723 #, c-format
1724 msgid "Mouse %d"
1725 msgstr ""
1726
1727 #: ../../../src/SDLInputState.cpp:728
1728 #, c-format
1729 msgid "JX%d-"
1730 msgstr ""
1731
1732 #: ../../../src/SDLInputState.cpp:730
1733 #, c-format
1734 msgid "Axis %d -"
1735 msgstr ""
1736
1737 #: ../../../src/SDLInputState.cpp:734
1738 #, c-format
1739 msgid "JX%d+"
1740 msgstr ""
1741
1742 #: ../../../src/SDLInputState.cpp:736
1743 #, c-format
1744 msgid "Axis %d +"
1745 msgstr ""
1746
1747 #: ../../../src/SDLInputState.cpp:741
1748 #, c-format
1749 msgid "JB%d"
1750 msgstr ""
1751
1752 #: ../../../src/SDLInputState.cpp:743
1753 #, c-format
1754 msgid "Button %d"
1755 msgstr ""
1756
1757 #: ../../../src/SDLInputState.cpp:789
1758 msgid "Touch control D-Pad"
1759 msgstr ""
1760
1761 #: ../../../src/SDLInputState.cpp:812
1762 msgid "Touch control buttons"
1763 msgstr ""
1764
1765 #: ../../../src/SDLInputState.cpp:826
1766 msgid "Tap"
1767 msgstr ""
1768
1769 #: ../../../src/SDLInputState.cpp:878 ../../../src/SDLInputState.cpp:880
1770 #, c-format
1771 msgid "Can not bind: %s"
1772 msgstr ""
1773
1774 #: ../../../src/SDLInputState.cpp:892 ../../../src/SDLInputState.cpp:896
1775 #: ../../../src/SDLInputState.cpp:900
1776 #, c-format
1777 msgid "'%s' is no longer bound to:"
1778 msgstr ""
1779
1780 #: ../../../src/Stats.cpp:38
1781 msgid "Max HP"
1782 msgstr ""
1783
1784 #: ../../../src/Stats.cpp:39
1785 msgid "Total amount of HP."
1786 msgstr ""
1787
1788 #: ../../../src/Stats.cpp:43
1789 msgid "HP Regen"
1790 msgstr ""
1791
1792 #: ../../../src/Stats.cpp:44
1793 msgid "Ticks of HP regen per minute."
1794 msgstr ""
1795
1796 #: ../../../src/Stats.cpp:48
1797 msgid "Max MP"
1798 msgstr ""
1799
1800 #: ../../../src/Stats.cpp:49
1801 msgid "Total amount of MP."
1802 msgstr ""
1803
1804 #: ../../../src/Stats.cpp:53
1805 msgid "MP Regen"
1806 msgstr ""
1807
1808 #: ../../../src/Stats.cpp:54
1809 msgid "Ticks of MP regen per minute."
1810 msgstr ""
1811
1812 #: ../../../src/Stats.cpp:58
1813 msgid "Accuracy"
1814 msgstr ""
1815
1816 #: ../../../src/Stats.cpp:59
1817 msgid ""
1818 "Accuracy rating. The enemy's Avoidance rating is subtracted from this value "
1819 "to calculate your likeliness to land a direct hit."
1820 msgstr ""
1821
1822 #: ../../../src/Stats.cpp:63
1823 msgid "Avoidance"
1824 msgstr ""
1825
1826 #: ../../../src/Stats.cpp:64
1827 msgid ""
1828 "Avoidance rating. This value is subtracted from the enemy's Accuracy rating "
1829 "to calculate their likeliness to land a direct hit."
1830 msgstr ""
1831
1832 #: ../../../src/Stats.cpp:68
1833 msgid "Absorb Min"
1834 msgstr ""
1835
1836 #: ../../../src/Stats.cpp:69 ../../../src/Stats.cpp:74
1837 msgid "Reduces the amount of damage taken."
1838 msgstr ""
1839
1840 #: ../../../src/Stats.cpp:73
1841 msgid "Absorb Max"
1842 msgstr ""
1843
1844 #: ../../../src/Stats.cpp:78
1845 msgid "Critical Hit Chance"
1846 msgstr ""
1847
1848 #: ../../../src/Stats.cpp:79
1849 msgid "Chance for an attack to do extra damage."
1850 msgstr ""
1851
1852 #: ../../../src/Stats.cpp:83
1853 msgid "Bonus XP"
1854 msgstr ""
1855
1856 #: ../../../src/Stats.cpp:84
1857 msgid "Increases the XP gained per kill."
1858 msgstr ""
1859
1860 #: ../../../src/Stats.cpp:88
1861 #, c-format
1862 msgid "Bonus %s"
1863 msgstr ""
1864
1865 #: ../../../src/Stats.cpp:89
1866 #, c-format
1867 msgid "Increases the %s found per drop."
1868 msgstr ""
1869
1870 #: ../../../src/Stats.cpp:93
1871 msgid "Item Find Chance"
1872 msgstr ""
1873
1874 #: ../../../src/Stats.cpp:94
1875 msgid "Increases the chance that an enemy will drop an item."
1876 msgstr ""
1877
1878 #: ../../../src/Stats.cpp:98
1879 msgid "Stealth"
1880 msgstr ""
1881
1882 #: ../../../src/Stats.cpp:99
1883 msgid "Increases your ability to move undetected."
1884 msgstr ""
1885
1886 #: ../../../src/Stats.cpp:103
1887 msgid "Poise"
1888 msgstr ""
1889
1890 #: ../../../src/Stats.cpp:104
1891 msgid "Reduces your chance of stumbling when hit."
1892 msgstr ""
1893
1894 #: ../../../src/Stats.cpp:108
1895 msgid "Missile Reflect Chance"
1896 msgstr ""
1897
1898 #: ../../../src/Stats.cpp:109
1899 msgid "Increases your chance of reflecting missiles back at enemies."
1900 msgstr ""
1901
1902 #: ../../../src/Stats.cpp:113
1903 msgid "Damage Reflection"
1904 msgstr ""
1905
1906 #: ../../../src/Stats.cpp:114
1907 msgid "Deals a percentage of damage taken back to the attacker."
1908 msgstr ""
1909
1910 #: ../../../src/Stats.cpp:118
1911 msgid "HP Steal"
1912 msgstr ""
1913
1914 #: ../../../src/Stats.cpp:119
1915 msgid "Percentage of HP stolen per hit."
1916 msgstr ""
1917
1918 #: ../../../src/Stats.cpp:123
1919 msgid "MP Steal"
1920 msgstr ""
1921
1922 #: ../../../src/Stats.cpp:124
1923 msgid "Percentage of MP stolen per hit."
1924 msgstr ""
1925
1926 #: ../../../src/Stats.cpp:128
1927 msgid "Base HP"
1928 msgstr ""
1929
1930 #: ../../../src/Stats.cpp:133
1931 msgid "Base MP"
1932 msgstr ""
1933
1934 #: ../../../src/Utils.cpp:365
1935 msgid "k"
1936 msgstr ""
1937
1938 #: ../../../src/Utils.cpp:635
1939 #, c-format
1940 msgid "%s second"
1941 msgstr ""
1942
1943 #: ../../../src/Utils.cpp:638
1944 #, c-format
1945 msgid "%s seconds"
1946 msgstr ""
1947
1948 #: ../../../src/Version.cpp:139
1949 msgid "or newer"
1950 msgstr ""
1951
1952 #: ../../../src/Version.cpp:142
1953 msgid "or older"
1954 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-07-02 13:26-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:1220
133 #: ../../../src/StatBlock.cpp:926 ../../../src/StatBlock.cpp:932
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:937
139 #: ../../../src/StatBlock.cpp:943
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:704
181 msgid "Entering game world..."
182 msgstr "Åpner spillverden..."
183
184 #: ../../../src/GameStateLoad.cpp:707
185 msgid "Loading saved game..."
186 msgstr "Laster lagret spill..."
187
188 #: ../../../src/GameStateLoad.cpp:740
189 msgid "Invalid save"
190 msgstr "Ugyldig spill"
191
192 #: ../../../src/GameStateLoad.cpp:764 ../../../src/ItemManager.cpp:745
193 #: ../../../src/MenuPowers.cpp:882 ../../../src/MenuPowers.cpp:1241
194 #: ../../../src/MenuPowers.cpp:1653
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:254
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:670
254 #: ../../../src/SDLInputState.cpp:700
255 msgid "Up"
256 msgstr "Opp"
257
258 #: ../../../src/InputState.cpp:419 ../../../src/MenuMovementType.cpp:125
259 #: ../../../src/MenuMovementType.cpp:134 ../../../src/SDLInputState.cpp:648
260 #: ../../../src/SDLInputState.cpp:678
261 msgid "Down"
262 msgstr "Ned"
263
264 #: ../../../src/InputState.cpp:420 ../../../src/MenuMovementType.cpp:124
265 #: ../../../src/MenuMovementType.cpp:133 ../../../src/SDLInputState.cpp:655
266 #: ../../../src/SDLInputState.cpp:685
267 msgid "Left"
268 msgstr "Venstre"
269
270 #: ../../../src/InputState.cpp:421 ../../../src/MenuMovementType.cpp:126
271 #: ../../../src/MenuMovementType.cpp:135 ../../../src/SDLInputState.cpp:665
272 #: ../../../src/SDLInputState.cpp:695
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:159
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:677
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:981
413 #, c-format
414 msgid "%d%% Speed"
415 msgstr "%d%% Hastighet"
416
417 #: ../../../src/ItemManager.cpp:650 ../../../src/MenuPowers.cpp:984
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:953
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:1228
453 #: ../../../src/MenuPowers.cpp:1231
454 #, c-format
455 msgid "Requires Level %d"
456 msgstr "Krever nivå %d"
457
458 #: ../../../src/ItemManager.cpp:836 ../../../src/MenuPowers.cpp:1220
459 #: ../../../src/MenuPowers.cpp:1222
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:898
490 msgid "Set:"
491 msgstr "Still:"
492
493 #: ../../../src/ItemManager.cpp:905
494 #, c-format
495 msgid "%d items:"
496 msgstr "%d gjenstander:"
497
498 #: ../../../src/ItemManager.cpp:920
499 #, c-format
500 msgid "Press [%s] to read"
501 msgstr "Trykk [%s] for å lese"
502
503 #: ../../../src/ItemManager.cpp:923
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:1256
580 msgid "Clear"
581 msgstr "Nullstill"
582
583 #: ../../../src/MenuConfig.cpp:122 ../../../src/MenuConfig.cpp:1254
584 msgid "Assign:"
585 msgstr "Tildel:"
586
587 #: ../../../src/MenuConfig.cpp:123 ../../../src/MenuConfig.cpp:253
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:252 ../../../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:256 ../../../src/MenuGameOver.cpp:72
600 msgid "Continue"
601 msgstr "Fortsett"
602
603 #: ../../../src/MenuConfig.cpp:258
604 msgid "Save Game"
605 msgstr ""
606
607 #: ../../../src/MenuConfig.cpp:301 ../../../src/MenuConfig.cpp:352
608 msgid "Default"
609 msgstr "Standard"
610
611 #: ../../../src/MenuConfig.cpp:301
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:302
621 msgid "Show all"
622 msgstr "Vis alt"
623
624 #: ../../../src/MenuConfig.cpp:302
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:303 ../../../src/MenuConfig.cpp:308
632 msgid "Hidden"
633 msgstr "Skjult"
634
635 #: ../../../src/MenuConfig.cpp:303
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:306
644 msgid "Visible"
645 msgstr "Synlig"
646
647 #: ../../../src/MenuConfig.cpp:307
648 msgid "Visible (2x zoom)"
649 msgstr "Synlig (2x forstørring)"
650
651 #: ../../../src/MenuConfig.cpp:311
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:312
660 msgid "- Display a message"
661 msgstr "- Vis en beskjed"
662
663 #: ../../../src/MenuConfig.cpp:313
664 msgid "- Play a sound"
665 msgstr "- Spill av en lyd"
666
667 #: ../../../src/MenuConfig.cpp:314
668 msgid "- Change the cursor"
669 msgstr "- Endre musepekeren"
670
671 #: ../../../src/MenuConfig.cpp:316
672 msgid "Disabled"
673 msgstr "Deaktivert"
674
675 #: ../../../src/MenuConfig.cpp:317
676 msgid "All"
677 msgstr "Alt"
678
679 #: ../../../src/MenuConfig.cpp:318
680 msgid "Message & Cursor"
681 msgstr "Melding og musepeker"
682
683 #: ../../../src/MenuConfig.cpp:319
684 msgid "Message & Sound"
685 msgstr "Melding og lyd"
686
687 #: ../../../src/MenuConfig.cpp:320
688 msgid "Sound & Cursor"
689 msgstr "Lyd og musepeker"
690
691 #: ../../../src/MenuConfig.cpp:321
692 msgid "Message"
693 msgstr "Melding"
694
695 #: ../../../src/MenuConfig.cpp:322
696 msgid "Cursor"
697 msgstr "Musepeker"
698
699 #: ../../../src/MenuConfig.cpp:323
700 msgid "Sound"
701 msgstr "Lyd"
702
703 #: ../../../src/MenuConfig.cpp:329
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:347
712 msgid "The maximum frame rate that the game will be allowed to run at."
713 msgstr ""
714
715 #: ../../../src/MenuConfig.cpp:351
716 msgid ""
717 "The render size refers to the height in pixels of the surface used to draw "
718 "the game. Mods define the allowed render sizes, but this option allows "
719 "overriding the maximum size."
720 msgstr ""
721
722 #: ../../../src/MenuConfig.cpp:374 ../../../src/MenuConfig.cpp:1679
723 #: ../../../src/MenuGameOver.cpp:116
724 msgid "Exit"
725 msgstr "Avslutt"
726
727 #: ../../../src/MenuConfig.cpp:375
728 msgid "Video"
729 msgstr "Video"
730
731 #: ../../../src/MenuConfig.cpp:376
154732 msgid "Audio"
155733 msgstr "Lyd"
156734
157 #: ../../../src/GameStateConfigBase.cpp:161
158 #: ../../../src/GameStateConfigDesktop.cpp:131
735 #: ../../../src/MenuConfig.cpp:377
159736 msgid "Interface"
160737 msgstr "Grensesnitt"
161738
162 #: ../../../src/GameStateConfigBase.cpp:162
163 #: ../../../src/GameStateConfigDesktop.cpp:134
739 #: ../../../src/MenuConfig.cpp:378
740 msgid "Input"
741 msgstr "Inndata"
742
743 #: ../../../src/MenuConfig.cpp:379
744 msgid "Keybindings"
745 msgstr "Hurtigtaster"
746
747 #: ../../../src/MenuConfig.cpp:380
164748 msgid "Mods"
165 msgstr ""
166
167 #: ../../../src/GameStateConfigBase.cpp:249 ../../../src/MenuExit.cpp:72
749 msgstr "Tilleggspakker"
750
751 #: ../../../src/MenuConfig.cpp:392
752 msgid "Paused"
753 msgstr "Pauset"
754
755 #: ../../../src/MenuConfig.cpp:395
756 msgid "Time Played"
757 msgstr "Tid spilt"
758
759 #: ../../../src/MenuConfig.cpp:401
760 msgid "Renderer"
761 msgstr "Rendering"
762
763 #: ../../../src/MenuConfig.cpp:402
764 msgid "Full Screen Mode"
765 msgstr "Fullskjerm"
766
767 #: ../../../src/MenuConfig.cpp:403
768 msgid "Hardware surfaces"
769 msgstr "Maskinvare flater"
770
771 #: ../../../src/MenuConfig.cpp:404
772 msgid "V-Sync"
773 msgstr "Vertikal Synkronisering"
774
775 #: ../../../src/MenuConfig.cpp:405
776 msgid "Texture Filtering"
777 msgstr "Teksturfiltrering"
778
779 #: ../../../src/MenuConfig.cpp:406
780 msgid "DPI scaling"
781 msgstr "DPI skalering"
782
783 #: ../../../src/MenuConfig.cpp:407
784 msgid "Parallax Layers"
785 msgstr "Parallakse lag"
786
787 #: ../../../src/MenuConfig.cpp:408
788 msgid "Allow changing gamma"
789 msgstr "Tillat endring av lysstyrke"
790
791 #: ../../../src/MenuConfig.cpp:409
792 msgid "Gamma"
793 msgstr "Lysstyrke"
794
795 #: ../../../src/MenuConfig.cpp:410
796 msgid "Maximum Render Size"
797 msgstr ""
798
799 #: ../../../src/MenuConfig.cpp:411
800 msgid "Frame Limit"
801 msgstr ""
802
803 #: ../../../src/MenuConfig.cpp:413
804 msgid "Sound Volume"
805 msgstr "Lydvolum"
806
807 #: ../../../src/MenuConfig.cpp:414
168808 msgid "Music Volume"
169809 msgstr "Musikkvolum"
170810
171 #: ../../../src/GameStateConfigBase.cpp:253 ../../../src/MenuExit.cpp:77
172 msgid "Sound Volume"
173 msgstr "Lydvolum"
174
175 #: ../../../src/GameStateConfigBase.cpp:257
811 #: ../../../src/MenuConfig.cpp:416
176812 msgid "Language"
177813 msgstr "Språk"
178814
179 #: ../../../src/GameStateConfigBase.cpp:266
815 #: ../../../src/MenuConfig.cpp:417
180816 msgid "Show FPS"
181 msgstr ""
182
183 #: ../../../src/GameStateConfigBase.cpp:270
817 msgstr "Vis bildefrekvens"
818
819 #: ../../../src/MenuConfig.cpp:418
820 msgid "Hardware mouse cursor"
821 msgstr "Maskinvare musepeker"
822
823 #: ../../../src/MenuConfig.cpp:419
184824 msgid "Colorblind Mode"
185825 msgstr "Modus for fargeblinde"
186826
187 #: ../../../src/GameStateConfigBase.cpp:274
188 msgid "Hardware mouse cursor"
189 msgstr ""
190
191 #: ../../../src/GameStateConfigBase.cpp:278
827 #: ../../../src/MenuConfig.cpp:420
192828 msgid "Developer Mode"
193829 msgstr "Utviklermodus"
194830
195 #: ../../../src/GameStateConfigBase.cpp:282
831 #: ../../../src/MenuConfig.cpp:421
196832 msgid "Subtitles"
197833 msgstr "Undertekster"
198834
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
835 #: ../../../src/MenuConfig.cpp:422
836 msgid "Loot tooltip visibility"
837 msgstr "Synlighet for gods verktøytips"
838
839 #: ../../../src/MenuConfig.cpp:423
840 msgid "Mini-map mode"
841 msgstr "Miniatyrkart modus"
842
843 #: ../../../src/MenuConfig.cpp:424
844 msgid "Always show stat bar labels"
845 msgstr "Vis alltid etiketter for ferdigheter"
846
847 #: ../../../src/MenuConfig.cpp:425
848 msgid "Allow stat bar auto-hiding"
849 msgstr "Tillat automatisk skjuling av ferdighetsfelt"
850
851 #: ../../../src/MenuConfig.cpp:426
852 msgid "Show combat text"
853 msgstr "Vis tekst i kamp"
854
855 #: ../../../src/MenuConfig.cpp:427
856 msgid "Automatically equip items"
857 msgstr "Automatisk utruste gjenstander"
858
859 #: ../../../src/MenuConfig.cpp:428
860 msgid "Show hidden entity markers"
861 msgstr "Vis skjulte enhetsmarkører "
862
863 #: ../../../src/MenuConfig.cpp:429
864 msgid "Low health notification"
865 msgstr "lav helsevarsel"
866
867 #: ../../../src/MenuConfig.cpp:430
868 msgid "Low health threshold"
869 msgstr "Minimum helseterskel"
870
871 #: ../../../src/MenuConfig.cpp:431
872 msgid "Show item comparison tooltips"
873 msgstr ""
874
875 #: ../../../src/MenuConfig.cpp:434 ../../../src/MenuMovementType.cpp:94
876 #: ../../../src/MenuMovementType.cpp:131
877 msgid "Joystick"
878 msgstr "Joystick"
879
880 #: ../../../src/MenuConfig.cpp:435
881 msgid "Move hero using mouse"
882 msgstr "Flytt helten med musepeker"
883
884 #: ../../../src/MenuConfig.cpp:436
885 msgid "Mouse aim"
886 msgstr "Sikte med musepekeren"
887
888 #: ../../../src/MenuConfig.cpp:437
889 msgid "Do not use mouse"
890 msgstr "Ikke bruk mus"
891
892 #: ../../../src/MenuConfig.cpp:438
893 msgid "Swap mouse movement button"
894 msgstr "Endre knapp for musebevegelse"
895
896 #: ../../../src/MenuConfig.cpp:439
897 msgid "Attack with mouse movement"
898 msgstr "Angrip med musebevegelse"
899
900 #: ../../../src/MenuConfig.cpp:440
901 msgid "Joystick Deadzone"
902 msgstr "Joystick dødsone"
903
904 #: ../../../src/MenuConfig.cpp:441
905 msgid "Touch Controls"
906 msgstr ""
907
908 #: ../../../src/MenuConfig.cpp:442
909 msgid "Touch Gamepad Scaling"
910 msgstr ""
911
912 #: ../../../src/MenuConfig.cpp:452
913 #, c-format
914 msgid "Primary binding: %s"
915 msgstr "Primær binding: %s"
916
917 #: ../../../src/MenuConfig.cpp:453
918 #, c-format
919 msgid "Alternate binding: %s"
920 msgstr "Alternativ binding: %s"
921
922 #: ../../../src/MenuConfig.cpp:454
923 #, c-format
924 msgid "Joystick binding: %s"
925 msgstr "Joystick binding: %s"
926
927 #: ../../../src/MenuConfig.cpp:556
254928 msgid ""
255929 "Will try to store surfaces in video memory versus system memory. The effect "
256930 "this has on performance depends on the renderer."
257931 msgstr ""
258
259 #: ../../../src/GameStateConfigDesktop.cpp:189
932 "Vil prøve å lagre flatene i videominne kontra systemminne. Effekten dette "
933 "har på ytelsen kommer an på renderingen"
934
935 #: ../../../src/MenuConfig.cpp:557
260936 msgid ""
261937 "Prevents screen tearing. Disable if you experience \"stuttering\" in "
262938 "windowed mode or input lag."
263939 msgstr ""
264
265 #: ../../../src/GameStateConfigDesktop.cpp:190
940 "Forhindrer skjermrift. Deaktiver hvis du opplever \"hakking\" i vindu modus "
941 "eller inndata forsinkelse. "
942
943 #: ../../../src/MenuConfig.cpp:558
266944 msgid ""
267945 "When enabled, this uses the screen DPI in addition to the window dimensions "
268946 "to scale the rendering resolution. Otherwise, only the window dimensions are"
269947 " used."
270948 msgstr ""
271
272 #: ../../../src/GameStateConfigDesktop.cpp:191
949 "Når aktivert, brukes skjerm DPI-en i tillegg til vindusdimensjonene for å "
950 "skalere renderings oppløsningen. Ellers, blir bare vindusdimensjonene brukt."
951
952 #: ../../../src/MenuConfig.cpp:559
273953 msgid ""
274954 "This enables parallax (non-tile) layers. Disabling this setting can improve "
275955 "performance in some cases."
276956 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
957 "Dette aktiverer parallakse (ikke-flis) lag. Å deaktivere denne innstillingen"
958 " kan forbedre ytelsen i enkelte tilfeller."
959
960 #: ../../../src/MenuConfig.cpp:560
961 msgid ""
962 "Enables the below setting that controls the screen gamma level. The behavior"
963 " of the gamma setting can vary between platforms."
964 msgstr ""
965 "Aktiverer innstillingen under som justerer skjermens gamma nivå. "
966 "Innstillingens oppførsel kan variere mellom ulike plattformer."
967
968 #: ../../../src/MenuConfig.cpp:561
969 msgid ""
970 "Provides additional text for information that is primarily conveyed through "
971 "color."
972 msgstr ""
973 "Tilbyr tilleggsinformasjon gjennom tekst som ellers hovedsakelig "
974 "kommuniseres gjennom farge."
975
976 #: ../../../src/MenuConfig.cpp:562
977 msgid ""
978 "Some mods will automatically hide the stat bars when they are inactive. "
979 "Disabling this option will keep them displayed at all times."
980 msgstr ""
981 "Noen tilleggspakker vil automatisk skjule ferdighetsfelt når de er inaktive. \n"
982 "Deaktivering av dette valget vil alltid holde dem synlige"
983
984 #: ../../../src/MenuConfig.cpp:563
985 msgid ""
986 "When enabled, empty equipment slots will be filled with applicable items "
987 "when they are obtained."
988 msgstr ""
989 "Når aktivert, vil tomme verktøyrom fylles med aktuelle gjenstander når de "
990 "anskaffes."
991
992 #: ../../../src/MenuConfig.cpp:564
993 msgid ""
994 "Shows a marker above enemies, allies, and the player when they are obscured "
995 "by tall objects."
996 msgstr ""
997 "Vis en markør over fiender, allierte og spilleren når de er tildekt bak høye"
998 " objekter."
999
1000 #: ../../../src/MenuConfig.cpp:565
1001 msgid ""
1002 "When enabled, tooltips for equipped items of the same type are shown next to"
1003 " standard item tooltips."
1004 msgstr ""
1005
1006 #: ../../../src/MenuConfig.cpp:566
1007 msgid ""
1008 "This allows the game to be controlled entirely with the keyboard (or "
1009 "joystick)."
1010 msgstr ""
1011 "Dette tillater spillet å bli kontrollert fullhent med tastaturet (eller en "
1012 "joystick)."
1013
1014 #: ../../../src/MenuConfig.cpp:567
1015 msgid ""
1016 "When 'Move hero using mouse' is enabled, this setting controls if 'Main1' or"
1017 " 'Main2' is used to move the hero. If enabled, 'Main2' will move the hero "
1018 "instead of 'Main1'."
1019 msgstr ""
1020 "Når 'Flytt helten med musepeker' er aktivert, vil denne instillingen "
1021 "kontrolere om 'Hoved1' eller 'Hoved2' brukes for å flytte helten. Dersom "
1022 "aktivert, vil 'Hoved2' flytte helten i stedet for 'Hoved1'."
1023
1024 #: ../../../src/MenuConfig.cpp:568
1025 msgid ""
1026 "When 'Move hero using mouse' is enabled, this setting controls if the Power "
1027 "assigned to the movement button can be used by targeting an enemy. If this "
1028 "setting is disabled, it is required to use 'Shift' to access the Power "
1029 "assigned to the movement button."
1030 msgstr ""
1031 "Når 'Flytt helten med musepeker' er aktivert, vil denne innstillingen "
1032 "kontrollere om Evnen som er bundet til bevegelsesknappen kan brukes ved å "
1033 "sikte seg inn på en fiende. Dersom denne innstillingen er deaktivert, kreves"
1034 " det at man bruker 'Shift' for å benytte Evner som er bundet til "
1035 "bevegelsesknappen."
1036
1037 #: ../../../src/MenuConfig.cpp:569
1038 msgid ""
1039 "The player's attacks will be aimed in the direction of the mouse cursor when"
1040 " this is enabled."
1041 msgstr ""
1042 "Spillerens angrep vil siktes i retning av musepekeren dersom dette er "
1043 "aktivert."
1044
1045 #: ../../../src/MenuConfig.cpp:570
1046 msgid ""
1047 "When enabled, a virtual gamepad will be added in-game. Other interactions, "
1048 "such as drag-and-drop behavior, are also altered to better suit touch input."
1049 msgstr ""
1050
1051 #: ../../../src/MenuConfig.cpp:621
1052 msgid "Active Mods"
1053 msgstr "Aktive tilleggspakker"
1054
1055 #: ../../../src/MenuConfig.cpp:630
1056 msgid "Available Mods"
1057 msgstr "Tilgjengelige tilleggspakker"
1058
1059 #: ../../../src/MenuConfig.cpp:649
1060 msgid "<< Disable"
1061 msgstr "<< Deaktiver"
1062
1063 #: ../../../src/MenuConfig.cpp:655
1064 msgid "Enable >>"
1065 msgstr "Aktiver >>"
1066
1067 #: ../../../src/MenuConfig.cpp:1536
1068 msgid "Version:"
1069 msgstr "Versjon:"
1070
1071 #: ../../../src/MenuConfig.cpp:1541
1072 msgid "Game:"
1073 msgstr "Spill:"
1074
1075 #: ../../../src/MenuConfig.cpp:1546
1076 msgid "Engine version:"
1077 msgstr "Spillmotor versjon:"
1078
1079 #: ../../../src/MenuConfig.cpp:1554
1080 msgid "Requires mods:"
1081 msgstr "Krever følgende tilleggspakker:"
1082
1083 #: ../../../src/MenuConfig.cpp:1662 ../../../src/SDLInputState.cpp:750
1084 msgid "(none)"
1085 msgstr "(ingen)"
1086
1087 #: ../../../src/MenuConfig.cpp:1679 ../../../src/MenuGameOver.cpp:73
1088 msgid "Save & Exit"
1089 msgstr "Lagre og avslutt"
1090
1091 #: ../../../src/MenuDevConsole.cpp:65
8211092 msgid "Execute"
8221093 msgstr "Utfør"
8231094
824 #: ../../../src/MenuDevConsole.cpp:101 ../../../src/MenuDevConsole.cpp:151
1095 #: ../../../src/MenuDevConsole.cpp:103 ../../../src/MenuDevConsole.cpp:153
8251096 msgid "Developer Console"
8261097 msgstr "Utviklerkonsoll"
8271098
828 #: ../../../src/MenuDevConsole.cpp:141
1099 #: ../../../src/MenuDevConsole.cpp:143
8291100 #, c-format
8301101 msgid "Use '%s' to inspect with the cursor."
831 msgstr ""
832
833 #: ../../../src/MenuDevConsole.cpp:146
1102 msgstr "Bruk '%s' for å utforske med musepekeren."
1103
1104 #: ../../../src/MenuDevConsole.cpp:148
8341105 msgid "Arguments with spaces should be enclosed with double quotes. Example:"
835 msgstr ""
836
837 #: ../../../src/MenuDevConsole.cpp:147
1106 msgstr "Argumenter med mellomrom skal innrammes med hermetegn. Eksempel:"
1107
1108 #: ../../../src/MenuDevConsole.cpp:149
8381109 msgid "Type 'help' to get a list of commands."
839 msgstr ""
840
841 #: ../../../src/MenuDevConsole.cpp:209 ../../../src/MenuDevConsole.cpp:213
1110 msgstr "Skriv 'help' for å motta en liste over tilgjengelige kommandoer."
1111
1112 #: ../../../src/MenuDevConsole.cpp:211 ../../../src/MenuDevConsole.cpp:215
8421113 msgid "px"
843 msgstr ""
844
845 #: ../../../src/MenuDevConsole.cpp:224
1114 msgstr "px"
1115
1116 #: ../../../src/MenuDevConsole.cpp:226
8461117 msgid "Distance"
847 msgstr ""
848
849 #: ../../../src/MenuDevConsole.cpp:239 ../../../src/MenuDevConsole.cpp:286
1118 msgstr "Distanse"
1119
1120 #: ../../../src/MenuDevConsole.cpp:241 ../../../src/MenuDevConsole.cpp:289
1121 #: ../../../src/MenuDevConsole.cpp:303
8501122 msgid "Entity"
851 msgstr ""
852
853 #: ../../../src/MenuDevConsole.cpp:261 ../../../src/MenuDevConsole.cpp:268
1123 msgstr "Enhet"
1124
1125 #: ../../../src/MenuDevConsole.cpp:263 ../../../src/MenuDevConsole.cpp:270
8541126 msgid "none"
855 msgstr ""
856
857 #: ../../../src/MenuDevConsole.cpp:262 ../../../src/MenuDevConsole.cpp:264
1127 msgstr "ingen"
1128
1129 #: ../../../src/MenuDevConsole.cpp:264 ../../../src/MenuDevConsole.cpp:266
8581130 msgid "wall"
859 msgstr ""
860
861 #: ../../../src/MenuDevConsole.cpp:263 ../../../src/MenuDevConsole.cpp:265
1131 msgstr "vegg"
1132
1133 #: ../../../src/MenuDevConsole.cpp:265 ../../../src/MenuDevConsole.cpp:267
8621134 msgid "short wall / pit"
863 msgstr ""
864
865 #: ../../../src/MenuDevConsole.cpp:266
1135 msgstr "kort vegg / grop"
1136
1137 #: ../../../src/MenuDevConsole.cpp:268
8661138 msgid "entity"
867 msgstr ""
868
869 #: ../../../src/MenuDevConsole.cpp:267
1139 msgstr "enhet"
1140
1141 #: ../../../src/MenuDevConsole.cpp:269
8701142 msgid "entity, ally"
871 msgstr ""
872
873 #: ../../../src/MenuDevConsole.cpp:274
1143 msgstr "enhet, alliert"
1144
1145 #: ../../../src/MenuDevConsole.cpp:276
8741146 msgid "Tile"
875 msgstr ""
876
877 #: ../../../src/MenuDevConsole.cpp:360
1147 msgstr "Flis"
1148
1149 #: ../../../src/MenuDevConsole.cpp:377
8781150 msgid "adds a power to the action bar"
879 msgstr ""
880
881 #: ../../../src/MenuDevConsole.cpp:361
1151 msgstr "legger til en evne i handlingsfeltet"
1152
1153 #: ../../../src/MenuDevConsole.cpp:378
8821154 msgid "turns on/off the display of the FPS counter"
883 msgstr ""
884
885 #: ../../../src/MenuDevConsole.cpp:362
1155 msgstr "Skru på/av visningen av FPS telleren"
1156
1157 #: ../../../src/MenuDevConsole.cpp:379
8861158 msgid "turns on/off all of the HUD elements"
887 msgstr ""
888
889 #: ../../../src/MenuDevConsole.cpp:363
1159 msgstr "Skru på/av alle HUD elementer"
1160
1161 #: ../../../src/MenuDevConsole.cpp:380
8901162 msgid "turns on/off the developer hud"
891 msgstr ""
892
893 #: ../../../src/MenuDevConsole.cpp:364
1163 msgstr "slår på/av utvikler HUD"
1164
1165 #: ../../../src/MenuDevConsole.cpp:381
8941166 msgid ""
8951167 "Prints a list of powers that match a search term. No search term will list "
8961168 "all items"
8971169 msgstr ""
8981170
899 #: ../../../src/MenuDevConsole.cpp:365
1171 #: ../../../src/MenuDevConsole.cpp:382
9001172 msgid "Prints out all the map filenames located in the \"maps/\" directory."
9011173 msgstr ""
9021174
903 #: ../../../src/MenuDevConsole.cpp:366
1175 #: ../../../src/MenuDevConsole.cpp:383
9041176 msgid ""
9051177 "Prints out the active campaign statuses that match a search term. No search "
9061178 "term will list all active statuses"
9071179 msgstr ""
9081180
909 #: ../../../src/MenuDevConsole.cpp:367
1181 #: ../../../src/MenuDevConsole.cpp:384
9101182 msgid ""
9111183 "Prints a list of items that match a search term. No search term will list "
9121184 "all items"
9131185 msgstr ""
9141186
915 #: ../../../src/MenuDevConsole.cpp:368
1187 #: ../../../src/MenuDevConsole.cpp:385
9161188 msgid ""
9171189 "parses a series of event components and executes them as a single event"
9181190 msgstr ""
9191191
920 #: ../../../src/MenuDevConsole.cpp:369
1192 #: ../../../src/MenuDevConsole.cpp:386
9211193 msgid "clears the command history"
9221194 msgstr "tømmer kommando-historikk"
9231195
924 #: ../../../src/MenuDevConsole.cpp:370
1196 #: ../../../src/MenuDevConsole.cpp:387
9251197 msgid "displays this text"
9261198 msgstr "viser denne teksten"
9271199
928 #: ../../../src/MenuDevConsole.cpp:377
1200 #: ../../../src/MenuDevConsole.cpp:394
9291201 msgid "Toggled the developer hud"
930 msgstr ""
931
932 #: ../../../src/MenuDevConsole.cpp:381
1202 msgstr "Slo på/av utvikler HUD"
1203
1204 #: ../../../src/MenuDevConsole.cpp:398
9331205 msgid "Toggled the hud"
934 msgstr ""
935
936 #: ../../../src/MenuDevConsole.cpp:385
1206 msgstr "Slo på/av HUD"
1207
1208 #: ../../../src/MenuDevConsole.cpp:402
9371209 msgid "Toggled the FPS counter"
938 msgstr ""
939
940 #: ../../../src/MenuDevConsole.cpp:534
1210 msgstr "Slo på/av FPS teller"
1211
1212 #: ../../../src/MenuDevConsole.cpp:552
9411213 msgid "ERROR: Incorrect number of arguments"
9421214 msgstr "FEIL: Feil antall argumenter"
9431215
944 #: ../../../src/MenuDevConsole.cpp:536 ../../../src/MenuDevConsole.cpp:564
1216 #: ../../../src/MenuDevConsole.cpp:554 ../../../src/MenuDevConsole.cpp:582
9451217 msgid "HINT:"
946 msgstr ""
947
948 #: ../../../src/MenuDevConsole.cpp:536
1218 msgstr "HINT:"
1219
1220 #: ../../../src/MenuDevConsole.cpp:554
9491221 msgid "<id>"
950 msgstr ""
951
952 #: ../../../src/MenuDevConsole.cpp:552
1222 msgstr "<id>"
1223
1224 #: ../../../src/MenuDevConsole.cpp:570
9531225 #, c-format
9541226 msgid "ERROR: '%s' is not a valid event key"
955 msgstr ""
956
957 #: ../../../src/MenuDevConsole.cpp:562
1227 msgstr "FEIL: '%s' er ikke en gyldig eventknapp"
1228
1229 #: ../../../src/MenuDevConsole.cpp:580
9581230 msgid "ERROR: Too few arguments"
9591231 msgstr "FEIL: For få argumenter"
9601232
961 #: ../../../src/MenuDevConsole.cpp:564
1233 #: ../../../src/MenuDevConsole.cpp:582
9621234 msgid "<key>=<val> <key>=<val> ..."
963 msgstr ""
964
965 #: ../../../src/MenuDevConsole.cpp:569
1235 msgstr "<key>=<val> <key>=<val> ..."
1236
1237 #: ../../../src/MenuDevConsole.cpp:587
9661238 msgid "ERROR: Unknown command"
9671239 msgstr "FEIL: Ukjent kommando"
9681240
969 #: ../../../src/MenuDevConsole.cpp:571
1241 #: ../../../src/MenuDevConsole.cpp:589
9701242 msgid "HINT: Type help"
9711243 msgstr "HINT: Skriv help"
9721244
973 #: ../../../src/MenuEnemy.cpp:138
1245 #: ../../../src/MenuEnemy.cpp:162
9741246 #, c-format
9751247 msgid "%s level %d"
9761248 msgstr "%s nivå %d"
9771249
978 #: ../../../src/MenuEnemy.cpp:162
1250 #: ../../../src/MenuEnemy.cpp:186
9791251 msgid "Dead"
9801252 msgstr "Død"
9811253
982 #: ../../../src/MenuEnemy.cpp:164
1254 #: ../../../src/MenuEnemy.cpp:188
9831255 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
1256 msgstr "Tilintetgjort"
1257
1258 #: ../../../src/MenuGameOver.cpp:69
1259 msgid "Game Over"
1260 msgstr ""
1261
1262 #: ../../../src/MenuInventory.cpp:178
10071263 #, c-format
10081264 msgid "Lost %d%% of %s."
1009 msgstr ""
1010
1011 #: ../../../src/MenuInventory.cpp:195
1265 msgstr "Mistet %d%% av %s."
1266
1267 #: ../../../src/MenuInventory.cpp:185
10121268 #, c-format
10131269 msgid "Lost %d%% of total XP."
1014 msgstr ""
1015
1016 #: ../../../src/MenuInventory.cpp:200
1270 msgstr "Mistet %d%% av total EP."
1271
1272 #: ../../../src/MenuInventory.cpp:190
10171273 #, c-format
10181274 msgid "Lost %d%% of current level XP."
1019 msgstr ""
1020
1021 #: ../../../src/MenuInventory.cpp:226
1275 msgstr "Mistet %d%% av det nåværende nivåets EP."
1276
1277 #: ../../../src/MenuInventory.cpp:216
10221278 #, c-format
10231279 msgid "Lost %s."
10241280 msgstr "Mistet %s."
10251281
1026 #: ../../../src/MenuInventory.cpp:274 ../../../src/MenuStash.cpp:146
1282 #: ../../../src/MenuInventory.cpp:258 ../../../src/MenuStash.cpp:276
10271283 #, c-format
10281284 msgid "%d %s"
10291285 msgstr "%d %s"
10301286
1031 #: ../../../src/MenuInventory.cpp:317
1287 #: ../../../src/MenuInventory.cpp:301
10321288 msgid "Pick up item(s):"
10331289 msgstr "Plukk opp gjenstand(er):"
10341290
1035 #: ../../../src/MenuInventory.cpp:318
1291 #: ../../../src/MenuInventory.cpp:302
10361292 msgid "Use or equip item:"
1037 msgstr ""
1038
1039 #: ../../../src/MenuInventory.cpp:319
1293 msgstr "Benytt eller bruk gjenstand:"
1294
1295 #: ../../../src/MenuInventory.cpp:303
10401296 #, c-format
10411297 msgid "%s modifiers"
1042 msgstr ""
1043
1044 #: ../../../src/MenuInventory.cpp:320
1298 msgstr "%s modifikatorer"
1299
1300 #: ../../../src/MenuInventory.cpp:304
10451301 msgid "Select a quantity of item:"
1046 msgstr "Velg et antall:"
1047
1048 #: ../../../src/MenuInventory.cpp:323
1302 msgstr "Velg et antall av gjenstandene:"
1303
1304 #: ../../../src/MenuInventory.cpp:307
10491305 msgid "Stash item stack:"
1050 msgstr ""
1051
1052 #: ../../../src/MenuInventory.cpp:325
1306 msgstr "Lagre gjenstandsstabel:"
1307
1308 #: ../../../src/MenuInventory.cpp:309
10531309 msgid "Sell item stack:"
1054 msgstr ""
1055
1056 #: ../../../src/MenuInventory.cpp:592
1310 msgstr "Selg gjenstandsstabel:"
1311
1312 #: ../../../src/MenuInventory.cpp:576
10571313 msgid "You don't have enough of the required item."
1058 msgstr ""
1059
1060 #: ../../../src/MenuInventory.cpp:599
1314 msgstr "Du har ikke nok av den påkrevde gjenstanden. "
1315
1316 #: ../../../src/MenuInventory.cpp:588
10611317 msgid "You can't use this item right now."
1062 msgstr ""
1063
1064 #: ../../../src/MenuInventory.cpp:611
1318 msgstr "Du kan ikke bruke denne gjenstanden akkurat nå."
1319
1320 #: ../../../src/MenuInventory.cpp:600
10651321 msgid "This item can only be used from the action bar."
1066 msgstr ""
1067
1068 #: ../../../src/MenuInventory.cpp:729
1322 msgstr "Denne gjenstanden kan bare brukes fra handlingsfeltet."
1323
1324 #: ../../../src/MenuInventory.cpp:718
10691325 msgid "Inventory is full."
10701326 msgstr "Du har ikke plass til flere gjenstander."
10711327
1072 #: ../../../src/MenuInventory.cpp:849
1328 #: ../../../src/MenuInventory.cpp:843
10731329 #, c-format
10741330 msgid "Not enough %s."
10751331 msgstr "Ikke nok %s."
10761332
1077 #: ../../../src/MenuInventory.cpp:869 ../../../src/MenuInventory.cpp:876
1333 #: ../../../src/MenuInventory.cpp:863 ../../../src/MenuInventory.cpp:870
10781334 msgid "This item can not be sold."
10791335 msgstr "Du kan ikke selge denne gjenstanden."
10801336
10861342 msgid "Quests"
10871343 msgstr "Oppdrag"
10881344
1089 #: ../../../src/MenuManager.cpp:286
1345 #: ../../../src/MenuManager.cpp:305
10901346 #, c-format
10911347 msgid "XP: %d/%d"
1092 msgstr ""
1093
1094 #: ../../../src/MenuManager.cpp:827
1348 msgstr "EP: %d/%d"
1349
1350 #: ../../../src/MenuManager.cpp:875
10951351 msgid "This item can not be dropped."
1352 msgstr "Denne gjenstanden kan ikke slippes."
1353
1354 #: ../../../src/MenuManager.cpp:1501
1355 msgid "Equipped"
1356 msgstr ""
1357
1358 #: ../../../src/MenuMovementType.cpp:87
1359 msgid "Select a Movement Type"
1360 msgstr ""
1361
1362 #: ../../../src/MenuMovementType.cpp:89
1363 msgid "Can be changed later in the Configuration menu."
1364 msgstr ""
1365
1366 #: ../../../src/MenuMovementType.cpp:92 ../../../src/MenuMovementType.cpp:122
1367 msgid "Keyboard"
1368 msgstr ""
1369
1370 #: ../../../src/MenuMovementType.cpp:93 ../../../src/MenuMovementType.cpp:128
1371 msgid "Mouse"
1372 msgstr ""
1373
1374 #: ../../../src/MenuMovementType.cpp:129
1375 msgid "Button"
10961376 msgstr ""
10971377
10981378 #: ../../../src/MenuNumPicker.cpp:59
10991379 msgid "Enter amount:"
1100 msgstr ""
1101
1102 #: ../../../src/MenuPowers.cpp:787
1380 msgstr "Oppgi mengd:"
1381
1382 #: ../../../src/MenuPowers.cpp:894
11031383 msgid "Passive"
1104 msgstr ""
1105
1106 #: ../../../src/MenuPowers.cpp:792
1384 msgstr "Passiv"
1385
1386 #: ../../../src/MenuPowers.cpp:901
11071387 #, c-format
11081388 msgid "Costs %d MP"
1109 msgstr ""
1110
1111 #: ../../../src/MenuPowers.cpp:796
1389 msgstr "Koster %d MP"
1390
1391 #: ../../../src/MenuPowers.cpp:905
11121392 #, c-format
11131393 msgid "Costs %d HP"
1114 msgstr ""
1115
1116 #: ../../../src/MenuPowers.cpp:801
1394 msgstr "Koster %d HP"
1395
1396 #: ../../../src/MenuPowers.cpp:909
11171397 msgid "Cooldown:"
1118 msgstr ""
1119
1120 #: ../../../src/MenuPowers.cpp:866 ../../../src/MenuPowers.cpp:869
1398 msgstr "Nedkjøling:"
1399
1400 #: ../../../src/MenuPowers.cpp:960 ../../../src/MenuPowers.cpp:963
11211401 msgid "Damage per second"
11221402 msgstr "Skade per sekund"
11231403
1124 #: ../../../src/MenuPowers.cpp:872 ../../../src/MenuPowers.cpp:875
1404 #: ../../../src/MenuPowers.cpp:966 ../../../src/MenuPowers.cpp:969
11251405 msgid "HP per second"
1126 msgstr ""
1127
1128 #: ../../../src/MenuPowers.cpp:878 ../../../src/MenuPowers.cpp:881
1406 msgstr "HP per sekund"
1407
1408 #: ../../../src/MenuPowers.cpp:972 ../../../src/MenuPowers.cpp:975
11291409 msgid "MP per second"
1130 msgstr ""
1131
1132 #: ../../../src/MenuPowers.cpp:885
1410 msgstr "MP per sekund"
1411
1412 #: ../../../src/MenuPowers.cpp:979
11331413 msgid "Immobilize"
1134 msgstr ""
1135
1136 #: ../../../src/MenuPowers.cpp:893
1414 msgstr "Immobilisere"
1415
1416 #: ../../../src/MenuPowers.cpp:987
11371417 msgid "Immunity"
11381418 msgstr "Immunitet"
11391419
1140 #: ../../../src/MenuPowers.cpp:896
1420 #: ../../../src/MenuPowers.cpp:990
11411421 msgid "Immunity to damage over time"
11421422 msgstr "Immun mot skade over tid"
11431423
1144 #: ../../../src/MenuPowers.cpp:899
1424 #: ../../../src/MenuPowers.cpp:993
11451425 msgid "Immunity to slow"
1146 msgstr ""
1147
1148 #: ../../../src/MenuPowers.cpp:902
1426 msgstr "Immunitet mot hastighetsredusering"
1427
1428 #: ../../../src/MenuPowers.cpp:996
11491429 msgid "Immunity to stun"
1150 msgstr ""
1151
1152 #: ../../../src/MenuPowers.cpp:905
1430 msgstr "Immunitet mot lamslåing"
1431
1432 #: ../../../src/MenuPowers.cpp:999
11531433 msgid "Immunity to HP steal"
1154 msgstr ""
1155
1156 #: ../../../src/MenuPowers.cpp:908
1434 msgstr "Immunitet mot HP-stjeling"
1435
1436 #: ../../../src/MenuPowers.cpp:1002
11571437 msgid "Immunity to MP steal"
1158 msgstr ""
1159
1160 #: ../../../src/MenuPowers.cpp:911
1438 msgstr "Immunitet mot MP-stjeling"
1439
1440 #: ../../../src/MenuPowers.cpp:1005
11611441 msgid "Immunity to knockback"
1162 msgstr ""
1163
1164 #: ../../../src/MenuPowers.cpp:914
1442 msgstr "Immunitet mot tilbakeslag"
1443
1444 #: ../../../src/MenuPowers.cpp:1008
11651445 msgid "Immunity to damage reflection"
1166 msgstr ""
1167
1168 #: ../../../src/MenuPowers.cpp:917
1446 msgstr "Immunitet mot skaderefleksjon"
1447
1448 #: ../../../src/MenuPowers.cpp:1014
11691449 msgid "Stun"
1170 msgstr ""
1171
1172 #: ../../../src/MenuPowers.cpp:920
1450 msgstr "Lamslå"
1451
1452 #: ../../../src/MenuPowers.cpp:1017
11731453 msgid "Automatic revive on death"
1174 msgstr ""
1175
1176 #: ../../../src/MenuPowers.cpp:923
1454 msgstr "Gjenoppliv automatisk ved død"
1455
1456 #: ../../../src/MenuPowers.cpp:1020
11771457 msgid "Convert"
1178 msgstr ""
1179
1180 #: ../../../src/MenuPowers.cpp:926
1458 msgstr "Konverter"
1459
1460 #: ../../../src/MenuPowers.cpp:1023
11811461 msgid "Fear"
11821462 msgstr "Frykt"
11831463
1184 #: ../../../src/MenuPowers.cpp:929
1464 #: ../../../src/MenuPowers.cpp:1026
11851465 msgid "Lifespan"
1186 msgstr ""
1187
1188 #: ../../../src/MenuPowers.cpp:953
1466 msgstr "Levetid"
1467
1468 #: ../../../src/MenuPowers.cpp:1050
11891469 msgid "Magical Shield"
11901470 msgstr "Magisk skjold"
11911471
1192 #: ../../../src/MenuPowers.cpp:982
1472 #: ../../../src/MenuPowers.cpp:1079
11931473 msgid "Healing"
1194 msgstr ""
1195
1196 #: ../../../src/MenuPowers.cpp:985
1474 msgstr "Helbreding"
1475
1476 #: ../../../src/MenuPowers.cpp:1082
11971477 msgid "Knockback"
1198 msgstr ""
1199
1200 #: ../../../src/MenuPowers.cpp:1010
1478 msgstr "Tilbakeslag"
1479
1480 #: ../../../src/MenuPowers.cpp:1106
12011481 #, c-format
12021482 msgid "%d%% chance"
12031483 msgstr "%d%% sjanse"
12041484
1205 #: ../../../src/MenuPowers.cpp:1062
1485 #: ../../../src/MenuPowers.cpp:1158
12061486 msgid "Base Accuracy"
1207 msgstr ""
1208
1209 #: ../../../src/MenuPowers.cpp:1082
1487 msgstr "Kjerne Treffsikkerhet"
1488
1489 #: ../../../src/MenuPowers.cpp:1178
12101490 msgid "Base Critical Chance"
1211 msgstr ""
1212
1213 #: ../../../src/MenuPowers.cpp:1090
1491 msgstr "Kjerne Kritisk Sjanse"
1492
1493 #: ../../../src/MenuPowers.cpp:1186
12141494 msgid "Ignores Absorbtion"
1215 msgstr ""
1216
1217 #: ../../../src/MenuPowers.cpp:1095
1495 msgstr "Ignorerer Absorbering "
1496
1497 #: ../../../src/MenuPowers.cpp:1191
12181498 msgid "Ignores Avoidance"
1219 msgstr ""
1220
1221 #: ../../../src/MenuPowers.cpp:1100
1499 msgstr "Ignorerer Unnvikelse"
1500
1501 #: ../../../src/MenuPowers.cpp:1196
12221502 #, c-format
12231503 msgid "%d%% Chance to crit slowed targets"
1224 msgstr ""
1225
1226 #: ../../../src/MenuPowers.cpp:1105
1504 msgstr "%d%% Sjanse for å kritisk skade hastighetsreduserte mål"
1505
1506 #: ../../../src/MenuPowers.cpp:1201
12271507 #, c-format
12281508 msgid "Elemental Damage (%s)"
1229 msgstr ""
1230
1231 #: ../../../src/MenuPowers.cpp:1114
1509 msgstr "Element Skade (%s)"
1510
1511 #: ../../../src/MenuPowers.cpp:1210
12321512 #, c-format
12331513 msgid "Requires a %s"
12341514 msgstr "Krever en %s"
12351515
1236 #: ../../../src/MenuPowers.cpp:1151 ../../../src/MenuPowers.cpp:1154
1516 #: ../../../src/MenuPowers.cpp:1248 ../../../src/MenuPowers.cpp:1251
12371517 #, c-format
12381518 msgid "Requires Power: %s"
1239 msgstr ""
1240
1241 #: ../../../src/MenuPowers.cpp:1163
1519 msgstr "Krever Evne: %s"
1520
1521 #: ../../../src/MenuPowers.cpp:1260
12421522 msgid "Click to Unlock (uses 1 Skill Point)"
1243 msgstr ""
1244
1245 #: ../../../src/MenuPowers.cpp:1167 ../../../src/MenuPowers.cpp:1169
1523 msgstr "Klikk for å låse opp (bruker 1 evnepoeng)"
1524
1525 #: ../../../src/MenuPowers.cpp:1264 ../../../src/MenuPowers.cpp:1266
12461526 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
1527 msgstr "Krever 1 evnepoeng"
1528
1529 #: ../../../src/MenuPowers.cpp:1466
1530 #, c-format
1531 msgid "Available skill points: %d"
1532 msgstr ""
1533
1534 #: ../../../src/MenuPowers.cpp:1498
12601535 msgid "Next Level:"
12611536 msgstr "Neste nivå:"
12621537
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
1538 #: ../../../src/MenuStash.cpp:80 ../../../src/MenuStash.cpp:161
1539 msgid "Stash"
1540 msgstr "Lager"
1541
1542 #: ../../../src/MenuStash.cpp:174 ../../../src/MenuStash.cpp:188
1543 msgid "Private"
1544 msgstr "Privat"
1545
1546 #: ../../../src/MenuStash.cpp:175
1547 msgid "Shared"
1548 msgstr "Delt"
1549
1550 #: ../../../src/MenuStash.cpp:340
1551 msgid "This item can not be stored in the stash."
1552 msgstr "Denne gjenstanden kan ikke oppbevares i lageret. "
1553
1554 #: ../../../src/MenuStash.cpp:345
1555 msgid "This item can not be stored in the private stash."
1556 msgstr "Denne gjenstanden kan ikke oppbevares i privatlageret."
1557
1558 #: ../../../src/MenuStash.cpp:350
1559 msgid "This item can not be stored in the shared stash."
1560 msgstr "Denne gjenstanden kan ikke oppbevares i det delte lageret."
1561
1562 #: ../../../src/MenuStash.cpp:360
12721563 msgid "Stash is full."
1273 msgstr "Kisten er full."
1274
1275 #: ../../../src/MenuTalker.cpp:454
1564 msgstr "Lageret er fullt."
1565
1566 #: ../../../src/MenuStash.cpp:414
1567 #, c-format
1568 msgid "Can not store item in stash: %s"
1569 msgstr "Kan ikke oppbevare gjenstander i lageret: %s"
1570
1571 #: ../../../src/MenuTalker.cpp:448
1572 #, c-format
1573 msgid "<dialog node %d>"
1574 msgstr "<dialog node %d>"
1575
1576 #: ../../../src/MenuTalker.cpp:456
12761577 msgid "Trade"
12771578 msgstr "Handle"
12781579
1279 #: ../../../src/MenuVendor.cpp:58
1580 #: ../../../src/MenuVendor.cpp:60
12801581 msgid "Buyback"
1281 msgstr ""
1282
1283 #: ../../../src/MenuVendor.cpp:279
1582 msgstr "Kjøp tilbake"
1583
1584 #: ../../../src/MenuVendor.cpp:283
12841585 msgid "Vendor"
1285 msgstr ""
1286
1287 #: ../../../src/PowerManager.cpp:1136
1586 msgstr "Selger"
1587
1588 #: ../../../src/PowerManager.cpp:1204
12881589 #, c-format
12891590 msgid "+%d Shield"
12901591 msgstr "+%d Skjold"
12911592
1292 #: ../../../src/PowerManager.cpp:1392
1593 #: ../../../src/PowerManager.cpp:1461
12931594 msgid "You are already transformed, untransform first."
1294 msgstr ""
1295
1296 #: ../../../src/PowerManager.cpp:1404
1595 msgstr "Du er allerede forvandlet, forvandle deg tilbake først."
1596
1597 #: ../../../src/PowerManager.cpp:1473
12971598 msgid "Could not untransform at this position."
1298 msgstr ""
1599 msgstr "Kunne ikke forvandle tilbake på denne posisjonen."
12991600
13001601 #: ../../../src/QuestLog.cpp:234
13011602 msgid "Completed Quests"
1302 msgstr ""
1303
1304 #: ../../../src/SaveLoad.cpp:243 ../../../src/SaveLoad.cpp:244
1603 msgstr "Fullførte Oppdrag"
1604
1605 #: ../../../src/SaveLoad.cpp:250 ../../../src/SaveLoad.cpp:251
13051606 msgid "Game saved."
13061607 msgstr "Spill lagret."
13071608
1308 #: ../../../src/SDLInputState.cpp:582
1609 #: ../../../src/SDLInputState.cpp:645
1610 msgid "BkSp"
1611 msgstr ""
1612
1613 #: ../../../src/SDLInputState.cpp:646
1614 msgid "Caps"
1615 msgstr ""
1616
1617 #: ../../../src/SDLInputState.cpp:647
1618 msgid "Del"
1619 msgstr ""
1620
1621 #: ../../../src/SDLInputState.cpp:649 ../../../src/SDLInputState.cpp:679
1622 msgid "End"
1623 msgstr "End"
1624
1625 #: ../../../src/SDLInputState.cpp:650
1626 msgid "Esc"
1627 msgstr ""
1628
1629 #: ../../../src/SDLInputState.cpp:651 ../../../src/SDLInputState.cpp:681
1630 msgid "Home"
1631 msgstr "Hjem"
1632
1633 #: ../../../src/SDLInputState.cpp:652
1634 msgid "Ins"
1635 msgstr ""
1636
1637 #: ../../../src/SDLInputState.cpp:653
1638 msgid "LAlt"
1639 msgstr ""
1640
1641 #: ../../../src/SDLInputState.cpp:654
1642 msgid "LCtrl"
1643 msgstr ""
1644
1645 #: ../../../src/SDLInputState.cpp:656
1646 msgid "LShft"
1647 msgstr ""
1648
1649 #: ../../../src/SDLInputState.cpp:657
1650 msgid "Num"
1651 msgstr ""
1652
1653 #: ../../../src/SDLInputState.cpp:658
1654 msgid "PgDn"
1655 msgstr ""
1656
1657 #: ../../../src/SDLInputState.cpp:659
1658 msgid "PgUp"
1659 msgstr ""
1660
1661 #: ../../../src/SDLInputState.cpp:660 ../../../src/SDLInputState.cpp:690
1662 msgid "Pause"
1663 msgstr "Pause"
1664
1665 #: ../../../src/SDLInputState.cpp:661
1666 msgid "Print"
1667 msgstr ""
1668
1669 #: ../../../src/SDLInputState.cpp:662
1670 msgid "RAlt"
1671 msgstr ""
1672
1673 #: ../../../src/SDLInputState.cpp:663
1674 msgid "RCtrl"
1675 msgstr ""
1676
1677 #: ../../../src/SDLInputState.cpp:664
1678 msgid "Ret"
1679 msgstr ""
1680
1681 #: ../../../src/SDLInputState.cpp:666
1682 msgid "RShft"
1683 msgstr ""
1684
1685 #: ../../../src/SDLInputState.cpp:667
1686 msgid "SLock"
1687 msgstr ""
1688
1689 #: ../../../src/SDLInputState.cpp:668
1690 msgid "Spc"
1691 msgstr ""
1692
1693 #: ../../../src/SDLInputState.cpp:669 ../../../src/SDLInputState.cpp:699
1694 msgid "Tab"
1695 msgstr "Tab"
1696
1697 #: ../../../src/SDLInputState.cpp:675
13091698 msgid "Backspace"
1310 msgstr ""
1311
1312 #: ../../../src/SDLInputState.cpp:583
1699 msgstr "Tilbaketast"
1700
1701 #: ../../../src/SDLInputState.cpp:676
13131702 msgid "CapsLock"
1314 msgstr ""
1315
1316 #: ../../../src/SDLInputState.cpp:586
1317 msgid "End"
1318 msgstr ""
1319
1320 #: ../../../src/SDLInputState.cpp:587
1703 msgstr "CapsLock"
1704
1705 #: ../../../src/SDLInputState.cpp:680
13211706 msgid "Escape"
1322 msgstr ""
1323
1324 #: ../../../src/SDLInputState.cpp:588
1325 msgid "Home"
1326 msgstr ""
1327
1328 #: ../../../src/SDLInputState.cpp:589
1707 msgstr "Escape"
1708
1709 #: ../../../src/SDLInputState.cpp:682
13291710 msgid "Insert"
1330 msgstr ""
1331
1332 #: ../../../src/SDLInputState.cpp:590
1711 msgstr "Insert"
1712
1713 #: ../../../src/SDLInputState.cpp:683
13331714 msgid "Left Alt"
1334 msgstr ""
1335
1336 #: ../../../src/SDLInputState.cpp:591
1715 msgstr "Venstre Alt"
1716
1717 #: ../../../src/SDLInputState.cpp:684
13371718 msgid "Left Ctrl"
1338 msgstr ""
1339
1340 #: ../../../src/SDLInputState.cpp:593
1719 msgstr "Venstre Ctrl"
1720
1721 #: ../../../src/SDLInputState.cpp:686
13411722 msgid "Left Shift"
1342 msgstr ""
1343
1344 #: ../../../src/SDLInputState.cpp:594
1723 msgstr "Venstre Shift"
1724
1725 #: ../../../src/SDLInputState.cpp:687
13451726 msgid "NumLock"
1346 msgstr ""
1347
1348 #: ../../../src/SDLInputState.cpp:595
1727 msgstr "NumLock"
1728
1729 #: ../../../src/SDLInputState.cpp:688
13491730 msgid "PageDown"
1350 msgstr ""
1351
1352 #: ../../../src/SDLInputState.cpp:596
1731 msgstr "PageDown"
1732
1733 #: ../../../src/SDLInputState.cpp:689
13531734 msgid "PageUp"
1354 msgstr ""
1355
1356 #: ../../../src/SDLInputState.cpp:597
1357 msgid "Pause"
1358 msgstr ""
1359
1360 #: ../../../src/SDLInputState.cpp:598
1735 msgstr "PageUp"
1736
1737 #: ../../../src/SDLInputState.cpp:691
13611738 msgid "PrintScreen"
1362 msgstr ""
1363
1364 #: ../../../src/SDLInputState.cpp:599
1739 msgstr "PrintScreen"
1740
1741 #: ../../../src/SDLInputState.cpp:692
13651742 msgid "Right Alt"
1366 msgstr ""
1367
1368 #: ../../../src/SDLInputState.cpp:600
1743 msgstr "Høyre Alt"
1744
1745 #: ../../../src/SDLInputState.cpp:693
13691746 msgid "Right Ctrl"
1370 msgstr ""
1371
1372 #: ../../../src/SDLInputState.cpp:601
1747 msgstr "Høyre Ctrl"
1748
1749 #: ../../../src/SDLInputState.cpp:694
13731750 msgid "Return"
1374 msgstr ""
1375
1376 #: ../../../src/SDLInputState.cpp:603
1751 msgstr "Return"
1752
1753 #: ../../../src/SDLInputState.cpp:696
13771754 msgid "Right Shift"
1378 msgstr ""
1379
1380 #: ../../../src/SDLInputState.cpp:604
1755 msgstr "Høyre Shift"
1756
1757 #: ../../../src/SDLInputState.cpp:697
13811758 msgid "ScrollLock"
1382 msgstr ""
1383
1384 #: ../../../src/SDLInputState.cpp:605
1759 msgstr "ScrollLock"
1760
1761 #: ../../../src/SDLInputState.cpp:698
13851762 msgid "Space"
1386 msgstr ""
1387
1388 #: ../../../src/SDLInputState.cpp:606
1389 msgid "Tab"
1390 msgstr ""
1391
1392 #: ../../../src/SDLInputState.cpp:620
1763 msgstr "Mellomrom"
1764
1765 #: ../../../src/SDLInputState.cpp:712
1766 #, c-format
1767 msgid "M%d"
1768 msgstr ""
1769
1770 #: ../../../src/SDLInputState.cpp:718
13931771 #, c-format
13941772 msgid "Mouse %d"
13951773 msgstr "Mus %d"
13961774
1397 #: ../../../src/SDLInputState.cpp:628
1775 #: ../../../src/SDLInputState.cpp:728
1776 #, c-format
1777 msgid "JX%d-"
1778 msgstr ""
1779
1780 #: ../../../src/SDLInputState.cpp:730
13981781 #, c-format
13991782 msgid "Axis %d -"
1400 msgstr ""
1401
1402 #: ../../../src/SDLInputState.cpp:630
1783 msgstr "Akse %d -"
1784
1785 #: ../../../src/SDLInputState.cpp:734
1786 #, c-format
1787 msgid "JX%d+"
1788 msgstr ""
1789
1790 #: ../../../src/SDLInputState.cpp:736
14031791 #, c-format
14041792 msgid "Axis %d +"
1405 msgstr ""
1406
1407 #: ../../../src/SDLInputState.cpp:633
1793 msgstr "Akse %d +"
1794
1795 #: ../../../src/SDLInputState.cpp:741
1796 #, c-format
1797 msgid "JB%d"
1798 msgstr ""
1799
1800 #: ../../../src/SDLInputState.cpp:743
14081801 #, c-format
14091802 msgid "Button %d"
14101803 msgstr "Knapp %d"
14111804
1412 #: ../../../src/SDLInputState.cpp:637
1413 msgid "(none)"
1414 msgstr "(ingen)"
1415
1416 #: ../../../src/SDLInputState.cpp:677
1805 #: ../../../src/SDLInputState.cpp:789
14171806 msgid "Touch control D-Pad"
1418 msgstr ""
1419
1420 #: ../../../src/SDLInputState.cpp:701
1807 msgstr "Berøringskontroller D-Pad"
1808
1809 #: ../../../src/SDLInputState.cpp:812
14211810 msgid "Touch control buttons"
1422 msgstr ""
1423
1424 #: ../../../src/SDLInputState.cpp:716
1811 msgstr "Berøringskontroller knapper"
1812
1813 #: ../../../src/SDLInputState.cpp:826
14251814 msgid "Tap"
1426 msgstr ""
1427
1428 #: ../../../src/SDLInputState.cpp:760 ../../../src/SDLInputState.cpp:764
1429 #: ../../../src/SDLInputState.cpp:768
1815 msgstr "Kort trykk"
1816
1817 #: ../../../src/SDLInputState.cpp:878 ../../../src/SDLInputState.cpp:880
1818 #, c-format
1819 msgid "Can not bind: %s"
1820 msgstr "Kan ikke binde: %s"
1821
1822 #: ../../../src/SDLInputState.cpp:892 ../../../src/SDLInputState.cpp:896
1823 #: ../../../src/SDLInputState.cpp:900
14301824 #, c-format
14311825 msgid "'%s' is no longer bound to:"
1432 msgstr ""
1826 msgstr "'%s' er ikke lenger bundet til:"
14331827
14341828 #: ../../../src/Stats.cpp:38
14351829 msgid "Max HP"
1436 msgstr ""
1830 msgstr "Maks HP"
14371831
14381832 #: ../../../src/Stats.cpp:39
14391833 msgid "Total amount of HP."
1440 msgstr ""
1834 msgstr "Total mengde HP"
14411835
14421836 #: ../../../src/Stats.cpp:43
14431837 msgid "HP Regen"
1444 msgstr ""
1838 msgstr "HP Regen"
14451839
14461840 #: ../../../src/Stats.cpp:44
14471841 msgid "Ticks of HP regen per minute."
1448 msgstr ""
1842 msgstr "Tikkende HP-regenerering per minutt. "
14491843
14501844 #: ../../../src/Stats.cpp:48
14511845 msgid "Max MP"
1452 msgstr ""
1846 msgstr "Maks MP"
14531847
14541848 #: ../../../src/Stats.cpp:49
14551849 msgid "Total amount of MP."
1456 msgstr ""
1850 msgstr "Total mengde MP."
14571851
14581852 #: ../../../src/Stats.cpp:53
14591853 msgid "MP Regen"
1460 msgstr ""
1854 msgstr "MP regenerering"
14611855
14621856 #: ../../../src/Stats.cpp:54
14631857 msgid "Ticks of MP regen per minute."
1464 msgstr ""
1858 msgstr "Tikkende MP-regenerering per minutt. "
14651859
14661860 #: ../../../src/Stats.cpp:58
14671861 msgid "Accuracy"
14721866 "Accuracy rating. The enemy's Avoidance rating is subtracted from this value "
14731867 "to calculate your likeliness to land a direct hit."
14741868 msgstr ""
1869 "Treffsikkerhet rangering. Fiendens Unnvikelse rangering trekkes fra denne "
1870 "verdien for å kalkulere sannsynligheten for å lande et direkte treff."
14751871
14761872 #: ../../../src/Stats.cpp:63
14771873 msgid "Avoidance"
1478 msgstr ""
1874 msgstr "Unnvikelse"
14791875
14801876 #: ../../../src/Stats.cpp:64
14811877 msgid ""
14821878 "Avoidance rating. This value is subtracted from the enemy's Accuracy rating "
14831879 "to calculate their likeliness to land a direct hit."
14841880 msgstr ""
1881 "Unnvikelse rangering. Denne verdien trekkes fra fiendens treffsikkerhet "
1882 "rangering for å kalkulere sannsynligheten for å lande et direkte treff."
14851883
14861884 #: ../../../src/Stats.cpp:68
14871885 msgid "Absorb Min"
1488 msgstr ""
1886 msgstr "Absorbering Min"
14891887
14901888 #: ../../../src/Stats.cpp:69 ../../../src/Stats.cpp:74
14911889 msgid "Reduces the amount of damage taken."
1492 msgstr ""
1890 msgstr "Reduserer mengden mottatt skade."
14931891
14941892 #: ../../../src/Stats.cpp:73
14951893 msgid "Absorb Max"
1496 msgstr ""
1894 msgstr "Absorbering Maks"
14971895
14981896 #: ../../../src/Stats.cpp:78
14991897 msgid "Critical Hit Chance"
15011899
15021900 #: ../../../src/Stats.cpp:79
15031901 msgid "Chance for an attack to do extra damage."
1504 msgstr ""
1902 msgstr "Sjanse for at et angrep gjør ekstra skade."
15051903
15061904 #: ../../../src/Stats.cpp:83
15071905 msgid "Bonus XP"
1508 msgstr ""
1906 msgstr "Bonus EP"
15091907
15101908 #: ../../../src/Stats.cpp:84
15111909 msgid "Increases the XP gained per kill."
1512 msgstr ""
1910 msgstr "Øker EP-en mottatt per drap."
15131911
15141912 #: ../../../src/Stats.cpp:88
15151913 #, c-format
15191917 #: ../../../src/Stats.cpp:89
15201918 #, c-format
15211919 msgid "Increases the %s found per drop."
1522 msgstr ""
1920 msgstr "Øker %s funnet per slipp."
15231921
15241922 #: ../../../src/Stats.cpp:93
15251923 msgid "Item Find Chance"
1526 msgstr ""
1924 msgstr "Gjenstand Finnersjanse"
15271925
15281926 #: ../../../src/Stats.cpp:94
15291927 msgid "Increases the chance that an enemy will drop an item."
1530 msgstr ""
1928 msgstr "Øker sjansen for at en fiende vil slippe en gjenstand."
15311929
15321930 #: ../../../src/Stats.cpp:98
15331931 msgid "Stealth"
1534 msgstr ""
1932 msgstr "Snik"
15351933
15361934 #: ../../../src/Stats.cpp:99
15371935 msgid "Increases your ability to move undetected."
1538 msgstr ""
1936 msgstr "Øker evnen din til å bevege deg uoppdaget."
15391937
15401938 #: ../../../src/Stats.cpp:103
15411939 msgid "Poise"
1542 msgstr ""
1940 msgstr "Kroppsholdning"
15431941
15441942 #: ../../../src/Stats.cpp:104
15451943 msgid "Reduces your chance of stumbling when hit."
15471945
15481946 #: ../../../src/Stats.cpp:108
15491947 msgid "Missile Reflect Chance"
1550 msgstr ""
1948 msgstr "Sjanse for Prosjektiltrfleksjon"
15511949
15521950 #: ../../../src/Stats.cpp:109
15531951 msgid "Increases your chance of reflecting missiles back at enemies."
1554 msgstr ""
1952 msgstr "Øker sjansen din for å reflektere prosjektiler tilbake på fienden."
15551953
15561954 #: ../../../src/Stats.cpp:113
15571955 msgid "Damage Reflection"
1558 msgstr ""
1956 msgstr "Skade Refleksjon"
15591957
15601958 #: ../../../src/Stats.cpp:114
15611959 msgid "Deals a percentage of damage taken back to the attacker."
1562 msgstr ""
1960 msgstr "Reflekterer en prosentandel av mottatt skade tilbake på angriperen."
15631961
15641962 #: ../../../src/Stats.cpp:118
15651963 msgid "HP Steal"
1566 msgstr ""
1964 msgstr "HP Stjeling"
15671965
15681966 #: ../../../src/Stats.cpp:119
15691967 msgid "Percentage of HP stolen per hit."
1570 msgstr ""
1968 msgstr "Prosentandel av HP stjålet per slag."
15711969
15721970 #: ../../../src/Stats.cpp:123
15731971 msgid "MP Steal"
1574 msgstr ""
1972 msgstr "MP stjeling"
15751973
15761974 #: ../../../src/Stats.cpp:124
15771975 msgid "Percentage of MP stolen per hit."
1578 msgstr ""
1976 msgstr "Prosentandel av MP stjålet per slag."
15791977
15801978 #: ../../../src/Stats.cpp:128
15811979 msgid "Base HP"
1582 msgstr ""
1980 msgstr "Kjerne HP"
15831981
15841982 #: ../../../src/Stats.cpp:133
15851983 msgid "Base MP"
1586 msgstr ""
1587
1588 #: ../../../src/Utils.cpp:346
1984 msgstr "Kjerne MP"
1985
1986 #: ../../../src/Utils.cpp:365
15891987 msgid "k"
1590 msgstr ""
1591
1592 #: ../../../src/Utils.cpp:580
1988 msgstr "k"
1989
1990 #: ../../../src/Utils.cpp:635
15931991 #, c-format
15941992 msgid "%s second"
15951993 msgstr "%s sekund"
15961994
1597 #: ../../../src/Utils.cpp:583
1995 #: ../../../src/Utils.cpp:638
15981996 #, c-format
15991997 msgid "%s seconds"
16001998 msgstr "%s sekunder"
16011999
16022000 #: ../../../src/Version.cpp:139
16032001 msgid "or newer"
1604 msgstr ""
2002 msgstr "eller nyere"
16052003
16062004 #: ../../../src/Version.cpp:142
16072005 msgid "or older"
1608 msgstr ""
2006 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-07-02 13:26-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:1220
126 #: ../../../src/StatBlock.cpp:926 ../../../src/StatBlock.cpp:932
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:937
132 #: ../../../src/StatBlock.cpp:943
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:704
174 msgid "Entering game world..."
175 msgstr "Betreden spelwereld..."
176
177 #: ../../../src/GameStateLoad.cpp:707
178 msgid "Loading saved game..."
179 msgstr "Laden opgeslagen spel..."
180
181 #: ../../../src/GameStateLoad.cpp:740
182 msgid "Invalid save"
183 msgstr ""
184
185 #: ../../../src/GameStateLoad.cpp:764 ../../../src/ItemManager.cpp:745
186 #: ../../../src/MenuPowers.cpp:882 ../../../src/MenuPowers.cpp:1241
187 #: ../../../src/MenuPowers.cpp:1653
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:254
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:670
247 #: ../../../src/SDLInputState.cpp:700
248 msgid "Up"
249 msgstr ""
250
251 #: ../../../src/InputState.cpp:419 ../../../src/MenuMovementType.cpp:125
252 #: ../../../src/MenuMovementType.cpp:134 ../../../src/SDLInputState.cpp:648
253 #: ../../../src/SDLInputState.cpp:678
254 msgid "Down"
255 msgstr ""
256
257 #: ../../../src/InputState.cpp:420 ../../../src/MenuMovementType.cpp:124
258 #: ../../../src/MenuMovementType.cpp:133 ../../../src/SDLInputState.cpp:655
259 #: ../../../src/SDLInputState.cpp:685
260 msgid "Left"
261 msgstr ""
262
263 #: ../../../src/InputState.cpp:421 ../../../src/MenuMovementType.cpp:126
264 #: ../../../src/MenuMovementType.cpp:135 ../../../src/SDLInputState.cpp:665
265 #: ../../../src/SDLInputState.cpp:695
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:159
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:677
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:981
406 #, c-format
407 msgid "%d%% Speed"
408 msgstr ""
409
410 #: ../../../src/ItemManager.cpp:650 ../../../src/MenuPowers.cpp:984
411 #, c-format
412 msgid "%d%% Attack Speed"
413 msgstr ""
414
415 #: ../../../src/ItemManager.cpp:672 ../../../src/MenuCharacter.cpp:352
416 #: ../../../src/MenuPowers.cpp:953
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:1228
446 #: ../../../src/MenuPowers.cpp:1231
447 #, c-format
448 msgid "Requires Level %d"
449 msgstr ""
450
451 #: ../../../src/ItemManager.cpp:836 ../../../src/MenuPowers.cpp:1220
452 #: ../../../src/MenuPowers.cpp:1222
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:898
483 msgid "Set:"
484 msgstr ""
485
486 #: ../../../src/ItemManager.cpp:905
487 #, c-format
488 msgid "%d items:"
489 msgstr ""
490
491 #: ../../../src/ItemManager.cpp:920
492 #, c-format
493 msgid "Press [%s] to read"
494 msgstr ""
495
496 #: ../../../src/ItemManager.cpp:923
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:1256
573 msgid "Clear"
574 msgstr ""
575
576 #: ../../../src/MenuConfig.cpp:122 ../../../src/MenuConfig.cpp:1254
577 msgid "Assign:"
578 msgstr ""
579
580 #: ../../../src/MenuConfig.cpp:123 ../../../src/MenuConfig.cpp:253
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:252 ../../../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:256 ../../../src/MenuGameOver.cpp:72
593 msgid "Continue"
594 msgstr ""
595
596 #: ../../../src/MenuConfig.cpp:258
597 msgid "Save Game"
598 msgstr ""
599
600 #: ../../../src/MenuConfig.cpp:301 ../../../src/MenuConfig.cpp:352
601 msgid "Default"
602 msgstr ""
603
604 #: ../../../src/MenuConfig.cpp:301
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:302
611 msgid "Show all"
612 msgstr ""
613
614 #: ../../../src/MenuConfig.cpp:302
615 msgid ""
616 "Always show loot tooltips. Temporarily hide all loot tooltips with 'Alt'."
617 msgstr ""
618
619 #: ../../../src/MenuConfig.cpp:303 ../../../src/MenuConfig.cpp:308
620 msgid "Hidden"
621 msgstr ""
622
623 #: ../../../src/MenuConfig.cpp:303
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:306
630 msgid "Visible"
631 msgstr ""
632
633 #: ../../../src/MenuConfig.cpp:307
634 msgid "Visible (2x zoom)"
635 msgstr ""
636
637 #: ../../../src/MenuConfig.cpp:311
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:312
644 msgid "- Display a message"
645 msgstr ""
646
647 #: ../../../src/MenuConfig.cpp:313
648 msgid "- Play a sound"
649 msgstr ""
650
651 #: ../../../src/MenuConfig.cpp:314
652 msgid "- Change the cursor"
653 msgstr ""
654
655 #: ../../../src/MenuConfig.cpp:316
656 msgid "Disabled"
657 msgstr ""
658
659 #: ../../../src/MenuConfig.cpp:317
660 msgid "All"
661 msgstr ""
662
663 #: ../../../src/MenuConfig.cpp:318
664 msgid "Message & Cursor"
665 msgstr ""
666
667 #: ../../../src/MenuConfig.cpp:319
668 msgid "Message & Sound"
669 msgstr ""
670
671 #: ../../../src/MenuConfig.cpp:320
672 msgid "Sound & Cursor"
673 msgstr ""
674
675 #: ../../../src/MenuConfig.cpp:321
676 msgid "Message"
677 msgstr ""
678
679 #: ../../../src/MenuConfig.cpp:322
680 msgid "Cursor"
681 msgstr ""
682
683 #: ../../../src/MenuConfig.cpp:323
684 msgid "Sound"
685 msgstr ""
686
687 #: ../../../src/MenuConfig.cpp:329
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:347
694 msgid "The maximum frame rate that the game will be allowed to run at."
695 msgstr ""
696
697 #: ../../../src/MenuConfig.cpp:351
698 msgid ""
699 "The render size refers to the height in pixels of the surface used to draw "
700 "the game. Mods define the allowed render sizes, but this option allows "
701 "overriding the maximum size."
702 msgstr ""
703
704 #: ../../../src/MenuConfig.cpp:374 ../../../src/MenuConfig.cpp:1679
705 #: ../../../src/MenuGameOver.cpp:116
706 msgid "Exit"
707 msgstr "Stoppen"
708
709 #: ../../../src/MenuConfig.cpp:375
710 msgid "Video"
711 msgstr "Video"
712
713 #: ../../../src/MenuConfig.cpp:376
152714 msgid "Audio"
153715 msgstr "Audio"
154716
155 #: ../../../src/GameStateConfigBase.cpp:161
156 #: ../../../src/GameStateConfigDesktop.cpp:131
717 #: ../../../src/MenuConfig.cpp:377
157718 msgid "Interface"
158719 msgstr "Omgeving"
159720
160 #: ../../../src/GameStateConfigBase.cpp:162
161 #: ../../../src/GameStateConfigDesktop.cpp:134
721 #: ../../../src/MenuConfig.cpp:378
722 msgid "Input"
723 msgstr "Invoer"
724
725 #: ../../../src/MenuConfig.cpp:379
726 msgid "Keybindings"
727 msgstr "Sneltoetsen"
728
729 #: ../../../src/MenuConfig.cpp:380
162730 msgid "Mods"
163731 msgstr "Mods"
164732
165 #: ../../../src/GameStateConfigBase.cpp:249 ../../../src/MenuExit.cpp:72
733 #: ../../../src/MenuConfig.cpp:392
734 msgid "Paused"
735 msgstr ""
736
737 #: ../../../src/MenuConfig.cpp:395
738 msgid "Time Played"
739 msgstr ""
740
741 #: ../../../src/MenuConfig.cpp:401
742 msgid "Renderer"
743 msgstr ""
744
745 #: ../../../src/MenuConfig.cpp:402
746 msgid "Full Screen Mode"
747 msgstr "Volledig scherm"
748
749 #: ../../../src/MenuConfig.cpp:403
750 msgid "Hardware surfaces"
751 msgstr "Hardware oppervlakken"
752
753 #: ../../../src/MenuConfig.cpp:404
754 msgid "V-Sync"
755 msgstr ""
756
757 #: ../../../src/MenuConfig.cpp:405
758 msgid "Texture Filtering"
759 msgstr ""
760
761 #: ../../../src/MenuConfig.cpp:406
762 msgid "DPI scaling"
763 msgstr ""
764
765 #: ../../../src/MenuConfig.cpp:407
766 msgid "Parallax Layers"
767 msgstr ""
768
769 #: ../../../src/MenuConfig.cpp:408
770 msgid "Allow changing gamma"
771 msgstr ""
772
773 #: ../../../src/MenuConfig.cpp:409
774 msgid "Gamma"
775 msgstr "Gammacorrectie"
776
777 #: ../../../src/MenuConfig.cpp:410
778 msgid "Maximum Render Size"
779 msgstr ""
780
781 #: ../../../src/MenuConfig.cpp:411
782 msgid "Frame Limit"
783 msgstr ""
784
785 #: ../../../src/MenuConfig.cpp:413
786 msgid "Sound Volume"
787 msgstr "Geluidsvolume"
788
789 #: ../../../src/MenuConfig.cpp:414
166790 msgid "Music Volume"
167791 msgstr "Muziekvolume"
168792
169 #: ../../../src/GameStateConfigBase.cpp:253 ../../../src/MenuExit.cpp:77
170 msgid "Sound Volume"
171 msgstr "Geluidsvolume"
172
173 #: ../../../src/GameStateConfigBase.cpp:257
793 #: ../../../src/MenuConfig.cpp:416
174794 msgid "Language"
175795 msgstr "Taal"
176796
177 #: ../../../src/GameStateConfigBase.cpp:266
797 #: ../../../src/MenuConfig.cpp:417
178798 msgid "Show FPS"
179799 msgstr ""
180800
181 #: ../../../src/GameStateConfigBase.cpp:270
801 #: ../../../src/MenuConfig.cpp:418
802 msgid "Hardware mouse cursor"
803 msgstr ""
804
805 #: ../../../src/MenuConfig.cpp:419
182806 msgid "Colorblind Mode"
183807 msgstr ""
184808
185 #: ../../../src/GameStateConfigBase.cpp:274
186 msgid "Hardware mouse cursor"
187 msgstr ""
188
189 #: ../../../src/GameStateConfigBase.cpp:278
809 #: ../../../src/MenuConfig.cpp:420
190810 msgid "Developer Mode"
191811 msgstr ""
192812
193 #: ../../../src/GameStateConfigBase.cpp:282
813 #: ../../../src/MenuConfig.cpp:421
194814 msgid "Subtitles"
195815 msgstr ""
196816
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
817 #: ../../../src/MenuConfig.cpp:422
818 msgid "Loot tooltip visibility"
819 msgstr ""
820
821 #: ../../../src/MenuConfig.cpp:423
822 msgid "Mini-map mode"
823 msgstr ""
824
825 #: ../../../src/MenuConfig.cpp:424
826 msgid "Always show stat bar labels"
827 msgstr ""
828
829 #: ../../../src/MenuConfig.cpp:425
830 msgid "Allow stat bar auto-hiding"
831 msgstr ""
832
833 #: ../../../src/MenuConfig.cpp:426
834 msgid "Show combat text"
835 msgstr "Laat strijdtekst zien"
836
837 #: ../../../src/MenuConfig.cpp:427
838 msgid "Automatically equip items"
839 msgstr ""
840
841 #: ../../../src/MenuConfig.cpp:428
842 msgid "Show hidden entity markers"
843 msgstr ""
844
845 #: ../../../src/MenuConfig.cpp:429
846 msgid "Low health notification"
847 msgstr ""
848
849 #: ../../../src/MenuConfig.cpp:430
850 msgid "Low health threshold"
851 msgstr ""
852
853 #: ../../../src/MenuConfig.cpp:431
854 msgid "Show item comparison tooltips"
855 msgstr ""
856
857 #: ../../../src/MenuConfig.cpp:434 ../../../src/MenuMovementType.cpp:94
858 #: ../../../src/MenuMovementType.cpp:131
859 msgid "Joystick"
860 msgstr "Joystick"
861
862 #: ../../../src/MenuConfig.cpp:435
863 msgid "Move hero using mouse"
864 msgstr "Muisbesturing"
865
866 #: ../../../src/MenuConfig.cpp:436
867 msgid "Mouse aim"
868 msgstr ""
869
870 #: ../../../src/MenuConfig.cpp:437
871 msgid "Do not use mouse"
872 msgstr ""
873
874 #: ../../../src/MenuConfig.cpp:438
875 msgid "Swap mouse movement button"
876 msgstr ""
877
878 #: ../../../src/MenuConfig.cpp:439
879 msgid "Attack with mouse movement"
880 msgstr ""
881
882 #: ../../../src/MenuConfig.cpp:440
883 msgid "Joystick Deadzone"
884 msgstr ""
885
886 #: ../../../src/MenuConfig.cpp:441
887 msgid "Touch Controls"
888 msgstr ""
889
890 #: ../../../src/MenuConfig.cpp:442
891 msgid "Touch Gamepad Scaling"
892 msgstr ""
893
894 #: ../../../src/MenuConfig.cpp:452
895 #, c-format
896 msgid "Primary binding: %s"
897 msgstr ""
898
899 #: ../../../src/MenuConfig.cpp:453
900 #, c-format
901 msgid "Alternate binding: %s"
902 msgstr ""
903
904 #: ../../../src/MenuConfig.cpp:454
905 #, c-format
906 msgid "Joystick binding: %s"
907 msgstr ""
908
909 #: ../../../src/MenuConfig.cpp:556
252910 msgid ""
253911 "Will try to store surfaces in video memory versus system memory. The effect "
254912 "this has on performance depends on the renderer."
255913 msgstr ""
256914
257 #: ../../../src/GameStateConfigDesktop.cpp:189
915 #: ../../../src/MenuConfig.cpp:557
258916 msgid ""
259917 "Prevents screen tearing. Disable if you experience \"stuttering\" in "
260918 "windowed mode or input lag."
261919 msgstr ""
262920
263 #: ../../../src/GameStateConfigDesktop.cpp:190
921 #: ../../../src/MenuConfig.cpp:558
264922 msgid ""
265923 "When enabled, this uses the screen DPI in addition to the window dimensions "
266924 "to scale the rendering resolution. Otherwise, only the window dimensions are"
267925 " used."
268926 msgstr ""
269927
270 #: ../../../src/GameStateConfigDesktop.cpp:191
928 #: ../../../src/MenuConfig.cpp:559
271929 msgid ""
272930 "This enables parallax (non-tile) layers. Disabling this setting can improve "
273931 "performance in some cases."
274932 msgstr ""
275933
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
934 #: ../../../src/MenuConfig.cpp:560
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 #: ../../../src/MenuConfig.cpp:561
941 msgid ""
942 "Provides additional text for information that is primarily conveyed through "
943 "color."
944 msgstr ""
945
946 #: ../../../src/MenuConfig.cpp:562
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 #: ../../../src/MenuConfig.cpp:563
953 msgid ""
954 "When enabled, empty equipment slots will be filled with applicable items "
955 "when they are obtained."
956 msgstr ""
957
958 #: ../../../src/MenuConfig.cpp:564
959 msgid ""
960 "Shows a marker above enemies, allies, and the player when they are obscured "
961 "by tall objects."
962 msgstr ""
963
964 #: ../../../src/MenuConfig.cpp:565
965 msgid ""
966 "When enabled, tooltips for equipped items of the same type are shown next to"
967 " standard item tooltips."
968 msgstr ""
969
970 #: ../../../src/MenuConfig.cpp:566
971 msgid ""
972 "This allows the game to be controlled entirely with the keyboard (or "
973 "joystick)."
974 msgstr ""
975
976 #: ../../../src/MenuConfig.cpp:567
977 msgid ""
978 "When 'Move hero using mouse' is enabled, this setting controls if 'Main1' or"
979 " 'Main2' is used to move the hero. If enabled, 'Main2' will move the hero "
980 "instead of 'Main1'."
981 msgstr ""
982
983 #: ../../../src/MenuConfig.cpp:568
984 msgid ""
985 "When 'Move hero using mouse' is enabled, this setting controls if the Power "
986 "assigned to the movement button can be used by targeting an enemy. If this "
987 "setting is disabled, it is required to use 'Shift' to access the Power "
988 "assigned to the movement button."
989 msgstr ""
990
991 #: ../../../src/MenuConfig.cpp:569
992 msgid ""
993 "The player's attacks will be aimed in the direction of the mouse cursor when"
994 " this is enabled."
995 msgstr ""
996
997 #: ../../../src/MenuConfig.cpp:570
998 msgid ""
999 "When enabled, a virtual gamepad will be added in-game. Other interactions, "
1000 "such as drag-and-drop behavior, are also altered to better suit touch input."
1001 msgstr ""
1002
1003 #: ../../../src/MenuConfig.cpp:621
1004 msgid "Active Mods"
1005 msgstr "Actieve Mods"
1006
1007 #: ../../../src/MenuConfig.cpp:630
1008 msgid "Available Mods"
1009 msgstr ""
1010
1011 #: ../../../src/MenuConfig.cpp:649
1012 msgid "<< Disable"
1013 msgstr ""
1014
1015 #: ../../../src/MenuConfig.cpp:655
1016 msgid "Enable >>"
1017 msgstr ""
1018
1019 #: ../../../src/MenuConfig.cpp:1536
1020 msgid "Version:"
1021 msgstr ""
1022
1023 #: ../../../src/MenuConfig.cpp:1541
1024 msgid "Game:"
1025 msgstr ""
1026
1027 #: ../../../src/MenuConfig.cpp:1546
1028 msgid "Engine version:"
1029 msgstr ""
1030
1031 #: ../../../src/MenuConfig.cpp:1554
1032 msgid "Requires mods:"
1033 msgstr ""
1034
1035 #: ../../../src/MenuConfig.cpp:1662 ../../../src/SDLInputState.cpp:750
1036 msgid "(none)"
1037 msgstr ""
1038
1039 #: ../../../src/MenuConfig.cpp:1679 ../../../src/MenuGameOver.cpp:73
1040 msgid "Save & Exit"
1041 msgstr ""
1042
1043 #: ../../../src/MenuDevConsole.cpp:65
8191044 msgid "Execute"
8201045 msgstr ""
8211046
822 #: ../../../src/MenuDevConsole.cpp:101 ../../../src/MenuDevConsole.cpp:151
1047 #: ../../../src/MenuDevConsole.cpp:103 ../../../src/MenuDevConsole.cpp:153
8231048 msgid "Developer Console"
8241049 msgstr ""
8251050
826 #: ../../../src/MenuDevConsole.cpp:141
1051 #: ../../../src/MenuDevConsole.cpp:143
8271052 #, c-format
8281053 msgid "Use '%s' to inspect with the cursor."
8291054 msgstr ""
8301055
831 #: ../../../src/MenuDevConsole.cpp:146
1056 #: ../../../src/MenuDevConsole.cpp:148
8321057 msgid "Arguments with spaces should be enclosed with double quotes. Example:"
8331058 msgstr ""
8341059
835 #: ../../../src/MenuDevConsole.cpp:147
1060 #: ../../../src/MenuDevConsole.cpp:149
8361061 msgid "Type 'help' to get a list of commands."
8371062 msgstr ""
8381063
839 #: ../../../src/MenuDevConsole.cpp:209 ../../../src/MenuDevConsole.cpp:213
1064 #: ../../../src/MenuDevConsole.cpp:211 ../../../src/MenuDevConsole.cpp:215
8401065 msgid "px"
8411066 msgstr ""
8421067
843 #: ../../../src/MenuDevConsole.cpp:224
1068 #: ../../../src/MenuDevConsole.cpp:226
8441069 msgid "Distance"
8451070 msgstr ""
8461071
847 #: ../../../src/MenuDevConsole.cpp:239 ../../../src/MenuDevConsole.cpp:286
1072 #: ../../../src/MenuDevConsole.cpp:241 ../../../src/MenuDevConsole.cpp:289
1073 #: ../../../src/MenuDevConsole.cpp:303
8481074 msgid "Entity"
8491075 msgstr ""
8501076
851 #: ../../../src/MenuDevConsole.cpp:261 ../../../src/MenuDevConsole.cpp:268
1077 #: ../../../src/MenuDevConsole.cpp:263 ../../../src/MenuDevConsole.cpp:270
8521078 msgid "none"
8531079 msgstr ""
8541080
855 #: ../../../src/MenuDevConsole.cpp:262 ../../../src/MenuDevConsole.cpp:264
1081 #: ../../../src/MenuDevConsole.cpp:264 ../../../src/MenuDevConsole.cpp:266
8561082 msgid "wall"
8571083 msgstr ""
8581084
859 #: ../../../src/MenuDevConsole.cpp:263 ../../../src/MenuDevConsole.cpp:265
1085 #: ../../../src/MenuDevConsole.cpp:265 ../../../src/MenuDevConsole.cpp:267
8601086 msgid "short wall / pit"
8611087 msgstr ""
8621088
863 #: ../../../src/MenuDevConsole.cpp:266
1089 #: ../../../src/MenuDevConsole.cpp:268
8641090 msgid "entity"
8651091 msgstr ""
8661092
867 #: ../../../src/MenuDevConsole.cpp:267
1093 #: ../../../src/MenuDevConsole.cpp:269
8681094 msgid "entity, ally"
8691095 msgstr ""
8701096
871 #: ../../../src/MenuDevConsole.cpp:274
1097 #: ../../../src/MenuDevConsole.cpp:276
8721098 msgid "Tile"
8731099 msgstr ""
8741100
875 #: ../../../src/MenuDevConsole.cpp:360
1101 #: ../../../src/MenuDevConsole.cpp:377
8761102 msgid "adds a power to the action bar"
8771103 msgstr ""
8781104
879 #: ../../../src/MenuDevConsole.cpp:361
1105 #: ../../../src/MenuDevConsole.cpp:378
8801106 msgid "turns on/off the display of the FPS counter"
8811107 msgstr ""
8821108
883 #: ../../../src/MenuDevConsole.cpp:362
1109 #: ../../../src/MenuDevConsole.cpp:379
8841110 msgid "turns on/off all of the HUD elements"
8851111 msgstr ""
8861112
887 #: ../../../src/MenuDevConsole.cpp:363
1113 #: ../../../src/MenuDevConsole.cpp:380
8881114 msgid "turns on/off the developer hud"
8891115 msgstr ""
8901116
891 #: ../../../src/MenuDevConsole.cpp:364
1117 #: ../../../src/MenuDevConsole.cpp:381
8921118 msgid ""
8931119 "Prints a list of powers that match a search term. No search term will list "
8941120 "all items"
8951121 msgstr ""
8961122
897 #: ../../../src/MenuDevConsole.cpp:365
1123 #: ../../../src/MenuDevConsole.cpp:382
8981124 msgid "Prints out all the map filenames located in the \"maps/\" directory."
8991125 msgstr ""
9001126
901 #: ../../../src/MenuDevConsole.cpp:366
1127 #: ../../../src/MenuDevConsole.cpp:383
9021128 msgid ""
9031129 "Prints out the active campaign statuses that match a search term. No search "
9041130 "term will list all active statuses"
9051131 msgstr ""
9061132
907 #: ../../../src/MenuDevConsole.cpp:367
1133 #: ../../../src/MenuDevConsole.cpp:384
9081134 msgid ""
9091135 "Prints a list of items that match a search term. No search term will list "
9101136 "all items"
9111137 msgstr ""
9121138
913 #: ../../../src/MenuDevConsole.cpp:368
1139 #: ../../../src/MenuDevConsole.cpp:385
9141140 msgid ""
9151141 "parses a series of event components and executes them as a single event"
9161142 msgstr ""
9171143
918 #: ../../../src/MenuDevConsole.cpp:369
1144 #: ../../../src/MenuDevConsole.cpp:386
9191145 msgid "clears the command history"
9201146 msgstr ""
9211147
922 #: ../../../src/MenuDevConsole.cpp:370
1148 #: ../../../src/MenuDevConsole.cpp:387
9231149 msgid "displays this text"
9241150 msgstr ""
9251151
926 #: ../../../src/MenuDevConsole.cpp:377
1152 #: ../../../src/MenuDevConsole.cpp:394
9271153 msgid "Toggled the developer hud"
9281154 msgstr ""
9291155
930 #: ../../../src/MenuDevConsole.cpp:381
1156 #: ../../../src/MenuDevConsole.cpp:398
9311157 msgid "Toggled the hud"
9321158 msgstr ""
9331159
934 #: ../../../src/MenuDevConsole.cpp:385
1160 #: ../../../src/MenuDevConsole.cpp:402
9351161 msgid "Toggled the FPS counter"
9361162 msgstr ""
9371163
938 #: ../../../src/MenuDevConsole.cpp:534
1164 #: ../../../src/MenuDevConsole.cpp:552
9391165 msgid "ERROR: Incorrect number of arguments"
9401166 msgstr ""
9411167
942 #: ../../../src/MenuDevConsole.cpp:536 ../../../src/MenuDevConsole.cpp:564
1168 #: ../../../src/MenuDevConsole.cpp:554 ../../../src/MenuDevConsole.cpp:582
9431169 msgid "HINT:"
9441170 msgstr ""
9451171
946 #: ../../../src/MenuDevConsole.cpp:536
1172 #: ../../../src/MenuDevConsole.cpp:554
9471173 msgid "<id>"
9481174 msgstr ""
9491175
950 #: ../../../src/MenuDevConsole.cpp:552
1176 #: ../../../src/MenuDevConsole.cpp:570
9511177 #, c-format
9521178 msgid "ERROR: '%s' is not a valid event key"
9531179 msgstr ""
9541180
955 #: ../../../src/MenuDevConsole.cpp:562
1181 #: ../../../src/MenuDevConsole.cpp:580
9561182 msgid "ERROR: Too few arguments"
9571183 msgstr ""
9581184
959 #: ../../../src/MenuDevConsole.cpp:564
1185 #: ../../../src/MenuDevConsole.cpp:582
9601186 msgid "<key>=<val> <key>=<val> ..."
9611187 msgstr ""
9621188
963 #: ../../../src/MenuDevConsole.cpp:569
1189 #: ../../../src/MenuDevConsole.cpp:587
9641190 msgid "ERROR: Unknown command"
9651191 msgstr ""
9661192
967 #: ../../../src/MenuDevConsole.cpp:571
1193 #: ../../../src/MenuDevConsole.cpp:589
9681194 msgid "HINT: Type help"
9691195 msgstr ""
9701196
971 #: ../../../src/MenuEnemy.cpp:138
1197 #: ../../../src/MenuEnemy.cpp:162
9721198 #, c-format
9731199 msgid "%s level %d"
9741200 msgstr "%s niveau %d"
9751201
976 #: ../../../src/MenuEnemy.cpp:162
1202 #: ../../../src/MenuEnemy.cpp:186
9771203 msgid "Dead"
9781204 msgstr "Dood"
9791205
980 #: ../../../src/MenuEnemy.cpp:164
1206 #: ../../../src/MenuEnemy.cpp:188
9811207 msgid "Destroyed"
9821208 msgstr ""
9831209
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
1210 #: ../../../src/MenuGameOver.cpp:69
1211 msgid "Game Over"
1212 msgstr ""
1213
1214 #: ../../../src/MenuInventory.cpp:178
10051215 #, c-format
10061216 msgid "Lost %d%% of %s."
10071217 msgstr ""
10081218
1009 #: ../../../src/MenuInventory.cpp:195
1219 #: ../../../src/MenuInventory.cpp:185
10101220 #, c-format
10111221 msgid "Lost %d%% of total XP."
10121222 msgstr ""
10131223
1014 #: ../../../src/MenuInventory.cpp:200
1224 #: ../../../src/MenuInventory.cpp:190
10151225 #, c-format
10161226 msgid "Lost %d%% of current level XP."
10171227 msgstr ""
10181228
1019 #: ../../../src/MenuInventory.cpp:226
1229 #: ../../../src/MenuInventory.cpp:216
10201230 #, c-format
10211231 msgid "Lost %s."
10221232 msgstr ""
10231233
1024 #: ../../../src/MenuInventory.cpp:274 ../../../src/MenuStash.cpp:146
1234 #: ../../../src/MenuInventory.cpp:258 ../../../src/MenuStash.cpp:276
10251235 #, c-format
10261236 msgid "%d %s"
10271237 msgstr ""
10281238
1029 #: ../../../src/MenuInventory.cpp:317
1239 #: ../../../src/MenuInventory.cpp:301
10301240 msgid "Pick up item(s):"
10311241 msgstr ""
10321242
1033 #: ../../../src/MenuInventory.cpp:318
1243 #: ../../../src/MenuInventory.cpp:302
10341244 msgid "Use or equip item:"
10351245 msgstr ""
10361246
1037 #: ../../../src/MenuInventory.cpp:319
1247 #: ../../../src/MenuInventory.cpp:303
10381248 #, c-format
10391249 msgid "%s modifiers"
10401250 msgstr ""
10411251
1042 #: ../../../src/MenuInventory.cpp:320
1252 #: ../../../src/MenuInventory.cpp:304
10431253 msgid "Select a quantity of item:"
10441254 msgstr ""
10451255
1046 #: ../../../src/MenuInventory.cpp:323
1256 #: ../../../src/MenuInventory.cpp:307
10471257 msgid "Stash item stack:"
10481258 msgstr ""
10491259
1050 #: ../../../src/MenuInventory.cpp:325
1260 #: ../../../src/MenuInventory.cpp:309
10511261 msgid "Sell item stack:"
10521262 msgstr ""
10531263
1054 #: ../../../src/MenuInventory.cpp:592
1264 #: ../../../src/MenuInventory.cpp:576
10551265 msgid "You don't have enough of the required item."
10561266 msgstr ""
10571267
1058 #: ../../../src/MenuInventory.cpp:599
1268 #: ../../../src/MenuInventory.cpp:588
10591269 msgid "You can't use this item right now."
10601270 msgstr ""
10611271
1062 #: ../../../src/MenuInventory.cpp:611
1272 #: ../../../src/MenuInventory.cpp:600
10631273 msgid "This item can only be used from the action bar."
10641274 msgstr "Dit artikel kan alleen vanaf de actiebalk gebruikt worden."
10651275
1066 #: ../../../src/MenuInventory.cpp:729
1276 #: ../../../src/MenuInventory.cpp:718
10671277 msgid "Inventory is full."
10681278 msgstr "Geen ruimte meer."
10691279
1070 #: ../../../src/MenuInventory.cpp:849
1280 #: ../../../src/MenuInventory.cpp:843
10711281 #, c-format
10721282 msgid "Not enough %s."
10731283 msgstr ""
10741284
1075 #: ../../../src/MenuInventory.cpp:869 ../../../src/MenuInventory.cpp:876
1285 #: ../../../src/MenuInventory.cpp:863 ../../../src/MenuInventory.cpp:870
10761286 msgid "This item can not be sold."
10771287 msgstr ""
10781288
10841294 msgid "Quests"
10851295 msgstr "Opdrachten"
10861296
1087 #: ../../../src/MenuManager.cpp:286
1297 #: ../../../src/MenuManager.cpp:305
10881298 #, c-format
10891299 msgid "XP: %d/%d"
10901300 msgstr "EP: %d/%d"
10911301
1092 #: ../../../src/MenuManager.cpp:827
1302 #: ../../../src/MenuManager.cpp:875
10931303 msgid "This item can not be dropped."
1304 msgstr ""
1305
1306 #: ../../../src/MenuManager.cpp:1501
1307 msgid "Equipped"
1308 msgstr ""
1309
1310 #: ../../../src/MenuMovementType.cpp:87
1311 msgid "Select a Movement Type"
1312 msgstr ""
1313
1314 #: ../../../src/MenuMovementType.cpp:89
1315 msgid "Can be changed later in the Configuration menu."
1316 msgstr ""
1317
1318 #: ../../../src/MenuMovementType.cpp:92 ../../../src/MenuMovementType.cpp:122
1319 msgid "Keyboard"
1320 msgstr ""
1321
1322 #: ../../../src/MenuMovementType.cpp:93 ../../../src/MenuMovementType.cpp:128
1323 msgid "Mouse"
1324 msgstr ""
1325
1326 #: ../../../src/MenuMovementType.cpp:129
1327 msgid "Button"
10941328 msgstr ""
10951329
10961330 #: ../../../src/MenuNumPicker.cpp:59
10971331 msgid "Enter amount:"
10981332 msgstr ""
10991333
1100 #: ../../../src/MenuPowers.cpp:787
1334 #: ../../../src/MenuPowers.cpp:894
11011335 msgid "Passive"
11021336 msgstr ""
11031337
1104 #: ../../../src/MenuPowers.cpp:792
1338 #: ../../../src/MenuPowers.cpp:901
11051339 #, c-format
11061340 msgid "Costs %d MP"
11071341 msgstr "Kost %d MP"
11081342
1109 #: ../../../src/MenuPowers.cpp:796
1343 #: ../../../src/MenuPowers.cpp:905
11101344 #, c-format
11111345 msgid "Costs %d HP"
11121346 msgstr ""
11131347
1114 #: ../../../src/MenuPowers.cpp:801
1348 #: ../../../src/MenuPowers.cpp:909
11151349 msgid "Cooldown:"
11161350 msgstr ""
11171351
1118 #: ../../../src/MenuPowers.cpp:866 ../../../src/MenuPowers.cpp:869
1352 #: ../../../src/MenuPowers.cpp:960 ../../../src/MenuPowers.cpp:963
11191353 msgid "Damage per second"
11201354 msgstr ""
11211355
1122 #: ../../../src/MenuPowers.cpp:872 ../../../src/MenuPowers.cpp:875
1356 #: ../../../src/MenuPowers.cpp:966 ../../../src/MenuPowers.cpp:969
11231357 msgid "HP per second"
11241358 msgstr ""
11251359
1126 #: ../../../src/MenuPowers.cpp:878 ../../../src/MenuPowers.cpp:881
1360 #: ../../../src/MenuPowers.cpp:972 ../../../src/MenuPowers.cpp:975
11271361 msgid "MP per second"
11281362 msgstr ""
11291363
1130 #: ../../../src/MenuPowers.cpp:885
1364 #: ../../../src/MenuPowers.cpp:979
11311365 msgid "Immobilize"
11321366 msgstr ""
11331367
1134 #: ../../../src/MenuPowers.cpp:893
1368 #: ../../../src/MenuPowers.cpp:987
11351369 msgid "Immunity"
11361370 msgstr ""
11371371
1138 #: ../../../src/MenuPowers.cpp:896
1372 #: ../../../src/MenuPowers.cpp:990
11391373 msgid "Immunity to damage over time"
11401374 msgstr ""
11411375
1142 #: ../../../src/MenuPowers.cpp:899
1376 #: ../../../src/MenuPowers.cpp:993
11431377 msgid "Immunity to slow"
11441378 msgstr ""
11451379
1146 #: ../../../src/MenuPowers.cpp:902
1380 #: ../../../src/MenuPowers.cpp:996
11471381 msgid "Immunity to stun"
11481382 msgstr ""
11491383
1150 #: ../../../src/MenuPowers.cpp:905
1384 #: ../../../src/MenuPowers.cpp:999
11511385 msgid "Immunity to HP steal"
11521386 msgstr ""
11531387
1154 #: ../../../src/MenuPowers.cpp:908
1388 #: ../../../src/MenuPowers.cpp:1002
11551389 msgid "Immunity to MP steal"
11561390 msgstr ""
11571391
1158 #: ../../../src/MenuPowers.cpp:911
1392 #: ../../../src/MenuPowers.cpp:1005
11591393 msgid "Immunity to knockback"
11601394 msgstr ""
11611395
1162 #: ../../../src/MenuPowers.cpp:914
1396 #: ../../../src/MenuPowers.cpp:1008
11631397 msgid "Immunity to damage reflection"
11641398 msgstr ""
11651399
1166 #: ../../../src/MenuPowers.cpp:917
1400 #: ../../../src/MenuPowers.cpp:1014
11671401 msgid "Stun"
11681402 msgstr ""
11691403
1170 #: ../../../src/MenuPowers.cpp:920
1404 #: ../../../src/MenuPowers.cpp:1017
11711405 msgid "Automatic revive on death"
11721406 msgstr ""
11731407
1174 #: ../../../src/MenuPowers.cpp:923
1408 #: ../../../src/MenuPowers.cpp:1020
11751409 msgid "Convert"
11761410 msgstr ""
11771411
1178 #: ../../../src/MenuPowers.cpp:926
1412 #: ../../../src/MenuPowers.cpp:1023
11791413 msgid "Fear"
11801414 msgstr ""
11811415
1182 #: ../../../src/MenuPowers.cpp:929
1416 #: ../../../src/MenuPowers.cpp:1026
11831417 msgid "Lifespan"
11841418 msgstr ""
11851419
1186 #: ../../../src/MenuPowers.cpp:953
1420 #: ../../../src/MenuPowers.cpp:1050
11871421 msgid "Magical Shield"
11881422 msgstr ""
11891423
1190 #: ../../../src/MenuPowers.cpp:982
1424 #: ../../../src/MenuPowers.cpp:1079
11911425 msgid "Healing"
11921426 msgstr ""
11931427
1194 #: ../../../src/MenuPowers.cpp:985
1428 #: ../../../src/MenuPowers.cpp:1082
11951429 msgid "Knockback"
11961430 msgstr ""
11971431
1198 #: ../../../src/MenuPowers.cpp:1010
1432 #: ../../../src/MenuPowers.cpp:1106
11991433 #, c-format
12001434 msgid "%d%% chance"
12011435 msgstr ""
12021436
1203 #: ../../../src/MenuPowers.cpp:1062
1437 #: ../../../src/MenuPowers.cpp:1158
12041438 msgid "Base Accuracy"
12051439 msgstr ""
12061440
1207 #: ../../../src/MenuPowers.cpp:1082
1441 #: ../../../src/MenuPowers.cpp:1178
12081442 msgid "Base Critical Chance"
12091443 msgstr ""
12101444
1211 #: ../../../src/MenuPowers.cpp:1090
1445 #: ../../../src/MenuPowers.cpp:1186
12121446 msgid "Ignores Absorbtion"
12131447 msgstr ""
12141448
1215 #: ../../../src/MenuPowers.cpp:1095
1449 #: ../../../src/MenuPowers.cpp:1191
12161450 msgid "Ignores Avoidance"
12171451 msgstr ""
12181452
1219 #: ../../../src/MenuPowers.cpp:1100
1453 #: ../../../src/MenuPowers.cpp:1196
12201454 #, c-format
12211455 msgid "%d%% Chance to crit slowed targets"
12221456 msgstr ""
12231457
1224 #: ../../../src/MenuPowers.cpp:1105
1458 #: ../../../src/MenuPowers.cpp:1201
12251459 #, c-format
12261460 msgid "Elemental Damage (%s)"
12271461 msgstr ""
12281462
1229 #: ../../../src/MenuPowers.cpp:1114
1463 #: ../../../src/MenuPowers.cpp:1210
12301464 #, c-format
12311465 msgid "Requires a %s"
12321466 msgstr ""
12331467
1234 #: ../../../src/MenuPowers.cpp:1151 ../../../src/MenuPowers.cpp:1154
1468 #: ../../../src/MenuPowers.cpp:1248 ../../../src/MenuPowers.cpp:1251
12351469 #, c-format
12361470 msgid "Requires Power: %s"
12371471 msgstr ""
12381472
1239 #: ../../../src/MenuPowers.cpp:1163
1473 #: ../../../src/MenuPowers.cpp:1260
12401474 msgid "Click to Unlock (uses 1 Skill Point)"
12411475 msgstr ""
12421476
1243 #: ../../../src/MenuPowers.cpp:1167 ../../../src/MenuPowers.cpp:1169
1477 #: ../../../src/MenuPowers.cpp:1264 ../../../src/MenuPowers.cpp:1266
12441478 msgid "Requires 1 Skill Point"
12451479 msgstr ""
12461480
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
1481 #: ../../../src/MenuPowers.cpp:1466
1482 #, c-format
1483 msgid "Available skill points: %d"
1484 msgstr ""
1485
1486 #: ../../../src/MenuPowers.cpp:1498
12581487 msgid "Next Level:"
12591488 msgstr ""
12601489
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
1490 #: ../../../src/MenuStash.cpp:80 ../../../src/MenuStash.cpp:161
1491 msgid "Stash"
1492 msgstr ""
1493
1494 #: ../../../src/MenuStash.cpp:174 ../../../src/MenuStash.cpp:188
1495 msgid "Private"
1496 msgstr ""
1497
1498 #: ../../../src/MenuStash.cpp:175
1499 msgid "Shared"
1500 msgstr ""
1501
1502 #: ../../../src/MenuStash.cpp:340
1503 msgid "This item can not be stored in the stash."
1504 msgstr ""
1505
1506 #: ../../../src/MenuStash.cpp:345
1507 msgid "This item can not be stored in the private stash."
1508 msgstr ""
1509
1510 #: ../../../src/MenuStash.cpp:350
1511 msgid "This item can not be stored in the shared stash."
1512 msgstr ""
1513
1514 #: ../../../src/MenuStash.cpp:360
12701515 msgid "Stash is full."
12711516 msgstr ""
12721517
1273 #: ../../../src/MenuTalker.cpp:454
1518 #: ../../../src/MenuStash.cpp:414
1519 #, c-format
1520 msgid "Can not store item in stash: %s"
1521 msgstr ""
1522
1523 #: ../../../src/MenuTalker.cpp:448
1524 #, c-format
1525 msgid "<dialog node %d>"
1526 msgstr ""
1527
1528 #: ../../../src/MenuTalker.cpp:456
12741529 msgid "Trade"
12751530 msgstr "Handelen"
12761531
1277 #: ../../../src/MenuVendor.cpp:58
1532 #: ../../../src/MenuVendor.cpp:60
12781533 msgid "Buyback"
12791534 msgstr ""
12801535
1281 #: ../../../src/MenuVendor.cpp:279
1536 #: ../../../src/MenuVendor.cpp:283
12821537 msgid "Vendor"
12831538 msgstr "Verkoper"
12841539
1285 #: ../../../src/PowerManager.cpp:1136
1540 #: ../../../src/PowerManager.cpp:1204
12861541 #, c-format
12871542 msgid "+%d Shield"
12881543 msgstr ""
12891544
1290 #: ../../../src/PowerManager.cpp:1392
1545 #: ../../../src/PowerManager.cpp:1461
12911546 msgid "You are already transformed, untransform first."
12921547 msgstr ""
12931548
1294 #: ../../../src/PowerManager.cpp:1404
1549 #: ../../../src/PowerManager.cpp:1473
12951550 msgid "Could not untransform at this position."
12961551 msgstr ""
12971552
12991554 msgid "Completed Quests"
13001555 msgstr ""
13011556
1302 #: ../../../src/SaveLoad.cpp:243 ../../../src/SaveLoad.cpp:244
1557 #: ../../../src/SaveLoad.cpp:250 ../../../src/SaveLoad.cpp:251
13031558 msgid "Game saved."
13041559 msgstr ""
13051560
1306 #: ../../../src/SDLInputState.cpp:582
1561 #: ../../../src/SDLInputState.cpp:645
1562 msgid "BkSp"
1563 msgstr ""
1564
1565 #: ../../../src/SDLInputState.cpp:646
1566 msgid "Caps"
1567 msgstr ""
1568
1569 #: ../../../src/SDLInputState.cpp:647
1570 msgid "Del"
1571 msgstr ""
1572
1573 #: ../../../src/SDLInputState.cpp:649 ../../../src/SDLInputState.cpp:679
1574 msgid "End"
1575 msgstr ""
1576
1577 #: ../../../src/SDLInputState.cpp:650
1578 msgid "Esc"
1579 msgstr ""
1580
1581 #: ../../../src/SDLInputState.cpp:651 ../../../src/SDLInputState.cpp:681
1582 msgid "Home"
1583 msgstr ""
1584
1585 #: ../../../src/SDLInputState.cpp:652
1586 msgid "Ins"
1587 msgstr ""
1588
1589 #: ../../../src/SDLInputState.cpp:653
1590 msgid "LAlt"
1591 msgstr ""
1592
1593 #: ../../../src/SDLInputState.cpp:654
1594 msgid "LCtrl"
1595 msgstr ""
1596
1597 #: ../../../src/SDLInputState.cpp:656
1598 msgid "LShft"
1599 msgstr ""
1600
1601 #: ../../../src/SDLInputState.cpp:657
1602 msgid "Num"
1603 msgstr ""
1604
1605 #: ../../../src/SDLInputState.cpp:658
1606 msgid "PgDn"
1607 msgstr ""
1608
1609 #: ../../../src/SDLInputState.cpp:659
1610 msgid "PgUp"
1611 msgstr ""
1612
1613 #: ../../../src/SDLInputState.cpp:660 ../../../src/SDLInputState.cpp:690
1614 msgid "Pause"
1615 msgstr ""
1616
1617 #: ../../../src/SDLInputState.cpp:661
1618 msgid "Print"
1619 msgstr ""
1620
1621 #: ../../../src/SDLInputState.cpp:662
1622 msgid "RAlt"
1623 msgstr ""
1624
1625 #: ../../../src/SDLInputState.cpp:663
1626 msgid "RCtrl"
1627 msgstr ""
1628
1629 #: ../../../src/SDLInputState.cpp:664
1630 msgid "Ret"
1631 msgstr ""
1632
1633 #: ../../../src/SDLInputState.cpp:666
1634 msgid "RShft"
1635 msgstr ""
1636
1637 #: ../../../src/SDLInputState.cpp:667
1638 msgid "SLock"
1639 msgstr ""
1640
1641 #: ../../../src/SDLInputState.cpp:668
1642 msgid "Spc"
1643 msgstr ""
1644
1645 #: ../../../src/SDLInputState.cpp:669 ../../../src/SDLInputState.cpp:699
1646 msgid "Tab"
1647 msgstr ""
1648
1649 #: ../../../src/SDLInputState.cpp:675
13071650 msgid "Backspace"
13081651 msgstr ""
13091652
1310 #: ../../../src/SDLInputState.cpp:583
1653 #: ../../../src/SDLInputState.cpp:676
13111654 msgid "CapsLock"
13121655 msgstr ""
13131656
1314 #: ../../../src/SDLInputState.cpp:586
1315 msgid "End"
1316 msgstr ""
1317
1318 #: ../../../src/SDLInputState.cpp:587
1657 #: ../../../src/SDLInputState.cpp:680
13191658 msgid "Escape"
13201659 msgstr ""
13211660
1322 #: ../../../src/SDLInputState.cpp:588
1323 msgid "Home"
1324 msgstr ""
1325
1326 #: ../../../src/SDLInputState.cpp:589
1661 #: ../../../src/SDLInputState.cpp:682
13271662 msgid "Insert"
13281663 msgstr ""
13291664
1330 #: ../../../src/SDLInputState.cpp:590
1665 #: ../../../src/SDLInputState.cpp:683
13311666 msgid "Left Alt"
13321667 msgstr ""
13331668
1334 #: ../../../src/SDLInputState.cpp:591
1669 #: ../../../src/SDLInputState.cpp:684
13351670 msgid "Left Ctrl"
13361671 msgstr ""
13371672
1338 #: ../../../src/SDLInputState.cpp:593
1673 #: ../../../src/SDLInputState.cpp:686
13391674 msgid "Left Shift"
13401675 msgstr ""
13411676
1342 #: ../../../src/SDLInputState.cpp:594
1677 #: ../../../src/SDLInputState.cpp:687
13431678 msgid "NumLock"
13441679 msgstr ""
13451680
1346 #: ../../../src/SDLInputState.cpp:595
1681 #: ../../../src/SDLInputState.cpp:688
13471682 msgid "PageDown"
13481683 msgstr ""
13491684
1350 #: ../../../src/SDLInputState.cpp:596
1685 #: ../../../src/SDLInputState.cpp:689
13511686 msgid "PageUp"
13521687 msgstr ""
13531688
1354 #: ../../../src/SDLInputState.cpp:597
1355 msgid "Pause"
1356 msgstr ""
1357
1358 #: ../../../src/SDLInputState.cpp:598
1689 #: ../../../src/SDLInputState.cpp:691
13591690 msgid "PrintScreen"
13601691 msgstr ""
13611692
1362 #: ../../../src/SDLInputState.cpp:599
1693 #: ../../../src/SDLInputState.cpp:692
13631694 msgid "Right Alt"
13641695 msgstr ""
13651696
1366 #: ../../../src/SDLInputState.cpp:600
1697 #: ../../../src/SDLInputState.cpp:693
13671698 msgid "Right Ctrl"
13681699 msgstr ""
13691700
1370 #: ../../../src/SDLInputState.cpp:601
1701 #: ../../../src/SDLInputState.cpp:694
13711702 msgid "Return"
13721703 msgstr ""
13731704
1374 #: ../../../src/SDLInputState.cpp:603
1705 #: ../../../src/SDLInputState.cpp:696
13751706 msgid "Right Shift"
13761707 msgstr ""
13771708
1378 #: ../../../src/SDLInputState.cpp:604
1709 #: ../../../src/SDLInputState.cpp:697
13791710 msgid "ScrollLock"
13801711 msgstr ""
13811712
1382 #: ../../../src/SDLInputState.cpp:605
1713 #: ../../../src/SDLInputState.cpp:698
13831714 msgid "Space"
13841715 msgstr ""
13851716
1386 #: ../../../src/SDLInputState.cpp:606
1387 msgid "Tab"
1388 msgstr ""
1389
1390 #: ../../../src/SDLInputState.cpp:620
1717 #: ../../../src/SDLInputState.cpp:712
1718 #, c-format
1719 msgid "M%d"
1720 msgstr ""
1721
1722 #: ../../../src/SDLInputState.cpp:718
13911723 #, c-format
13921724 msgid "Mouse %d"
13931725 msgstr ""
13941726
1395 #: ../../../src/SDLInputState.cpp:628
1727 #: ../../../src/SDLInputState.cpp:728
1728 #, c-format
1729 msgid "JX%d-"
1730 msgstr ""
1731
1732 #: ../../../src/SDLInputState.cpp:730
13961733 #, c-format
13971734 msgid "Axis %d -"
13981735 msgstr ""
13991736
1400 #: ../../../src/SDLInputState.cpp:630
1737 #: ../../../src/SDLInputState.cpp:734
1738 #, c-format
1739 msgid "JX%d+"
1740 msgstr ""
1741
1742 #: ../../../src/SDLInputState.cpp:736
14011743 #, c-format
14021744 msgid "Axis %d +"
14031745 msgstr ""
14041746
1405 #: ../../../src/SDLInputState.cpp:633
1747 #: ../../../src/SDLInputState.cpp:741
1748 #, c-format
1749 msgid "JB%d"
1750 msgstr ""
1751
1752 #: ../../../src/SDLInputState.cpp:743
14061753 #, c-format
14071754 msgid "Button %d"
14081755 msgstr ""
14091756
1410 #: ../../../src/SDLInputState.cpp:637
1411 msgid "(none)"
1412 msgstr ""
1413
1414 #: ../../../src/SDLInputState.cpp:677
1757 #: ../../../src/SDLInputState.cpp:789
14151758 msgid "Touch control D-Pad"
14161759 msgstr ""
14171760
1418 #: ../../../src/SDLInputState.cpp:701
1761 #: ../../../src/SDLInputState.cpp:812
14191762 msgid "Touch control buttons"
14201763 msgstr ""
14211764
1422 #: ../../../src/SDLInputState.cpp:716
1765 #: ../../../src/SDLInputState.cpp:826
14231766 msgid "Tap"
14241767 msgstr ""
14251768
1426 #: ../../../src/SDLInputState.cpp:760 ../../../src/SDLInputState.cpp:764
1427 #: ../../../src/SDLInputState.cpp:768
1769 #: ../../../src/SDLInputState.cpp:878 ../../../src/SDLInputState.cpp:880
1770 #, c-format
1771 msgid "Can not bind: %s"
1772 msgstr ""
1773
1774 #: ../../../src/SDLInputState.cpp:892 ../../../src/SDLInputState.cpp:896
1775 #: ../../../src/SDLInputState.cpp:900
14281776 #, c-format
14291777 msgid "'%s' is no longer bound to:"
14301778 msgstr ""
15831931 msgid "Base MP"
15841932 msgstr ""
15851933
1586 #: ../../../src/Utils.cpp:346
1934 #: ../../../src/Utils.cpp:365
15871935 msgid "k"
15881936 msgstr ""
15891937
1590 #: ../../../src/Utils.cpp:580
1938 #: ../../../src/Utils.cpp:635
15911939 #, c-format
15921940 msgid "%s second"
15931941 msgstr ""
15941942
1595 #: ../../../src/Utils.cpp:583
1943 #: ../../../src/Utils.cpp:638
15961944 #, c-format
15971945 msgid "%s seconds"
15981946 msgstr ""
33 # FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
44 #
55 # Translators:
6 # Justin Jacobs <jajdorkster@gmail.com>, 2018
6 # Błażej Pęksyk <b.peksyk@gmail.com>, 2020
7 # Justin Jacobs <jajdorkster@gmail.com>, 2021
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-07-02 13:26-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: Justin Jacobs <jajdorkster@gmail.com>, 2021\n"
1617 "Language-Team: Polish (https://www.transifex.com/flareorg/teams/84925/pl/)\n"
1718 "MIME-Version: 1.0\n"
1819 "Content-Type: text/plain; charset=UTF-8\n"
2021 "Language: pl\n"
2122 "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"
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 "Gratulacje, twoja postać osiągnęła %d poziom!"
2732
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
33 #: ../../../src/Avatar.cpp:423
34 msgid "You may increase one or more attributes through the Character Menu."
35 msgstr "Możesz zwiększyć jeden lub kilka ze swoich atrybutów w Menu Postaci."
36
37 #: ../../../src/Avatar.cpp:427
38 msgid "You may unlock one or more abilities through the Powers Menu."
39 msgstr "Możesz zwiększyć jedną lub kilka ze swoich zdolności w Menu Mocy."
40
41 #: ../../../src/Avatar.cpp:689
42 msgid "You are defeated."
43 msgstr ""
44
45 #: ../../../src/Avatar.cpp:935
4546 msgid "Transformation expired. You have been moved back to a safe place."
4647 msgstr "Transformacja minęła. Przeniesiono Cię w bezpieczne miejsce."
4748
48 #: ../../../src/CampaignManager.cpp:153
49 #: ../../../src/CampaignManager.cpp:152
4950 #, c-format
5051 msgid "%d %s removed."
5152 msgstr "Usunięto %d %s."
5253
53 #: ../../../src/CampaignManager.cpp:162
54 #: ../../../src/CampaignManager.cpp:171
55 #, c-format
56 msgid "%s x%d removed."
57 msgstr "Usunięto %dx %s."
58
59 #: ../../../src/CampaignManager.cpp:173
5460 #, c-format
5561 msgid "%s removed."
5662 msgstr "Usunięto %s."
5763
58 #: ../../../src/CampaignManager.cpp:175
64 #: ../../../src/CampaignManager.cpp:187
65 #, c-format
66 msgid "You receive %d %s."
67 msgstr "Otrzymujesz %d %s."
68
69 #: ../../../src/CampaignManager.cpp:191
70 #, c-format
71 msgid "You receive %s x%d."
72 msgstr "Otrzymujesz %s x%d."
73
74 #: ../../../src/CampaignManager.cpp:193
5975 #, c-format
6076 msgid "You receive %s."
6177 msgstr "Otrzymujesz przedmiot %s."
6278
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
79 #: ../../../src/CampaignManager.cpp:210
7480 #, c-format
7581 msgid "You receive %d XP."
7682 msgstr "Otrzymujesz %d PD."
7783
78 #: ../../../src/CampaignManager.cpp:201
84 #: ../../../src/CampaignManager.cpp:216
7985 msgid "HP restored."
8086 msgstr "PŻ odnowione."
8187
82 #: ../../../src/CampaignManager.cpp:205
88 #: ../../../src/CampaignManager.cpp:220
8389 msgid "MP restored."
8490 msgstr "PM odnowione."
8591
86 #: ../../../src/CampaignManager.cpp:210
92 #: ../../../src/CampaignManager.cpp:225
8793 msgid "HP and MP restored."
8894 msgstr "PŻ i PM odnowione."
8995
90 #: ../../../src/CampaignManager.cpp:214
96 #: ../../../src/CampaignManager.cpp:229
9197 msgid "Negative effects removed."
9298 msgstr "Negatywne efekty usunięte."
9399
94 #: ../../../src/CampaignManager.cpp:220
100 #: ../../../src/CampaignManager.cpp:235
95101 msgid "HP and MP restored, negative effects removed"
96102 msgstr "PŻ i PM odnowione, negatywne efekty usunięte."
97103
115121 "\n"
116122 "Domyślny renderer, który zwykle jest szybszy niż programowy renderer SDL."
117123
118 #: ../../../src/EngineSettings.cpp:561
124 #: ../../../src/EngineSettings.cpp:586
119125 msgid "Adventurer"
120126 msgstr "Poszukiwacz przygód"
121127
122 #: ../../../src/Entity.cpp:511
128 #: ../../../src/Entity.cpp:527
123129 msgid "miss"
124130 msgstr "pudło"
125131
126 #: ../../../src/Entity.cpp:548 ../../../src/PowerManager.cpp:1152
127 #: ../../../src/StatBlock.cpp:805 ../../../src/StatBlock.cpp:811
132 #: ../../../src/Entity.cpp:565 ../../../src/PowerManager.cpp:1220
133 #: ../../../src/StatBlock.cpp:926 ../../../src/StatBlock.cpp:932
128134 #, c-format
129135 msgid "+%d HP"
130136 msgstr "+%d PŻ"
131137
132 #: ../../../src/Entity.cpp:555 ../../../src/StatBlock.cpp:816
133 #: ../../../src/StatBlock.cpp:822
138 #: ../../../src/Entity.cpp:572 ../../../src/StatBlock.cpp:937
139 #: ../../../src/StatBlock.cpp:943
134140 #, c-format
135141 msgid "+%d MP"
136142 msgstr "+%d PM"
137143
138 #: ../../../src/EventManager.cpp:738
144 #: ../../../src/EventManager.cpp:792
139145 msgid "Unknown destination"
140146 msgstr "Cel nieznany"
141147
142 #: ../../../src/GameStateConfigBase.cpp:89
143 #: ../../../src/GameStateConfigBase.cpp:110
148 #: ../../../src/GameState.cpp:37 ../../../src/GameState.cpp:58
149 msgid "Loading..."
150 msgstr "Wczytywanie..."
151
152 #: ../../../src/GameStateLoad.cpp:90 ../../../src/GameStateLoad.cpp:103
153 msgid "Delete Save"
154 msgstr "Usuń zapis"
155
156 #: ../../../src/GameStateLoad.cpp:90
157 msgid "Delete this save?"
158 msgstr "Usunąć ten zapis?"
159
160 #: ../../../src/GameStateLoad.cpp:92
161 msgid "Exit to Title"
162 msgstr "Wyjdź do Menu"
163
164 #: ../../../src/GameStateLoad.cpp:95
165 msgid "New Game"
166 msgstr "Nowa Gra"
167
168 #: ../../../src/GameStateLoad.cpp:99 ../../../src/GameStateLoad.cpp:607
169 msgid "Choose a Slot"
170 msgstr "Wybierz stan gry"
171
172 #: ../../../src/GameStateLoad.cpp:580 ../../../src/GameStateLoad.cpp:601
173 msgid "Enable a story mod to continue"
174 msgstr "Włącz mod fabularny, by kontynuować"
175
176 #: ../../../src/GameStateLoad.cpp:596
177 msgid "Load Game"
178 msgstr "Wczytaj Grę"
179
180 #: ../../../src/GameStateLoad.cpp:704
181 msgid "Entering game world..."
182 msgstr "Wkraczanie do świata gry..."
183
184 #: ../../../src/GameStateLoad.cpp:707
185 msgid "Loading saved game..."
186 msgstr "Wczytywanie stanu gry..."
187
188 #: ../../../src/GameStateLoad.cpp:740
189 msgid "Invalid save"
190 msgstr "Nieprawidłowy zapis"
191
192 #: ../../../src/GameStateLoad.cpp:764 ../../../src/ItemManager.cpp:745
193 #: ../../../src/MenuPowers.cpp:882 ../../../src/MenuPowers.cpp:1241
194 #: ../../../src/MenuPowers.cpp:1653
195 #, c-format
196 msgid "Level %d"
197 msgstr "Poziom %d"
198
199 #: ../../../src/GameStateNew.cpp:66 ../../../src/InputState.cpp:416
200 #: ../../../src/MenuConfig.cpp:254
201 msgid "Cancel"
202 msgstr "Anuluj"
203
204 #: ../../../src/GameStateNew.cpp:69
205 msgid "Create"
206 msgstr "Stwórz"
207
208 #: ../../../src/GameStateNew.cpp:77
209 msgid "Randomize"
210 msgstr "Losuj"
211
212 #: ../../../src/GameStateNew.cpp:93
213 msgid "Choose a Portrait"
214 msgstr "Wybierz potret"
215
216 #: ../../../src/GameStateNew.cpp:97
217 msgid "Choose a Name"
218 msgstr "Wybierz Imię"
219
220 #: ../../../src/GameStateNew.cpp:101
221 msgid "Permadeath?"
222 msgstr "Tryb hardkorowy?"
223
224 #: ../../../src/GameStateNew.cpp:105
225 msgid "Choose a Class"
226 msgstr "Wybierz klasę postaci"
227
228 #: ../../../src/GameStateTitle.cpp:107
229 msgid "Play Game"
230 msgstr "Zacznij grę"
231
232 #: ../../../src/GameStateTitle.cpp:110
233 msgid "Enable a core mod to continue"
234 msgstr "Włącz mod główny, aby kontynuować"
235
236 #: ../../../src/GameStateTitle.cpp:114 ../../../src/MenuMiniMap.cpp:152
237 msgid "Configuration"
238 msgstr "Konfiguracja"
239
240 #: ../../../src/GameStateTitle.cpp:117
241 msgid "Credits"
242 msgstr "Zasługi"
243
244 #: ../../../src/GameStateTitle.cpp:120
245 msgid "Exit Game"
246 msgstr "Wyjdź z gry"
247
248 #: ../../../src/InputState.cpp:417
249 msgid "Accept"
250 msgstr "Akceptuj"
251
252 #: ../../../src/InputState.cpp:418 ../../../src/MenuMovementType.cpp:123
253 #: ../../../src/MenuMovementType.cpp:132 ../../../src/SDLInputState.cpp:670
254 #: ../../../src/SDLInputState.cpp:700
255 msgid "Up"
256 msgstr "Góra"
257
258 #: ../../../src/InputState.cpp:419 ../../../src/MenuMovementType.cpp:125
259 #: ../../../src/MenuMovementType.cpp:134 ../../../src/SDLInputState.cpp:648
260 #: ../../../src/SDLInputState.cpp:678
261 msgid "Down"
262 msgstr "Dół"
263
264 #: ../../../src/InputState.cpp:420 ../../../src/MenuMovementType.cpp:124
265 #: ../../../src/MenuMovementType.cpp:133 ../../../src/SDLInputState.cpp:655
266 #: ../../../src/SDLInputState.cpp:685
267 msgid "Left"
268 msgstr "Lewo"
269
270 #: ../../../src/InputState.cpp:421 ../../../src/MenuMovementType.cpp:126
271 #: ../../../src/MenuMovementType.cpp:135 ../../../src/SDLInputState.cpp:665
272 #: ../../../src/SDLInputState.cpp:695
273 msgid "Right"
274 msgstr "Prawo"
275
276 #: ../../../src/InputState.cpp:422
277 msgid "Bar1"
278 msgstr "Pas1"
279
280 #: ../../../src/InputState.cpp:423
281 msgid "Bar2"
282 msgstr "Pas2"
283
284 #: ../../../src/InputState.cpp:424
285 msgid "Bar3"
286 msgstr "Pas3"
287
288 #: ../../../src/InputState.cpp:425
289 msgid "Bar4"
290 msgstr "Pas4"
291
292 #: ../../../src/InputState.cpp:426
293 msgid "Bar5"
294 msgstr "Pas5"
295
296 #: ../../../src/InputState.cpp:427
297 msgid "Bar6"
298 msgstr "Pas6"
299
300 #: ../../../src/InputState.cpp:428
301 msgid "Bar7"
302 msgstr "Pas7"
303
304 #: ../../../src/InputState.cpp:429
305 msgid "Bar8"
306 msgstr "Pas8"
307
308 #: ../../../src/InputState.cpp:430
309 msgid "Bar9"
310 msgstr "Pas9"
311
312 #: ../../../src/InputState.cpp:431
313 msgid "Bar0"
314 msgstr "Pas0"
315
316 #: ../../../src/InputState.cpp:432 ../../../src/MenuActionBar.cpp:84
317 #: ../../../src/MenuCharacter.cpp:54
318 msgid "Character"
319 msgstr "Postać"
320
321 #: ../../../src/InputState.cpp:433 ../../../src/MenuActionBar.cpp:85
322 #: ../../../src/MenuInventory.cpp:130 ../../../src/MenuVendor.cpp:59
323 msgid "Inventory"
324 msgstr "Ekwipunek"
325
326 #: ../../../src/InputState.cpp:434 ../../../src/MenuActionBar.cpp:86
327 #: ../../../src/MenuPowers.cpp:159
328 msgid "Powers"
329 msgstr "Moce"
330
331 #: ../../../src/InputState.cpp:435 ../../../src/MenuActionBar.cpp:87
332 #: ../../../src/MenuLog.cpp:72
333 msgid "Log"
334 msgstr "Dziennik"
335
336 #: ../../../src/InputState.cpp:436
337 msgid "Main1"
338 msgstr "Główny1"
339
340 #: ../../../src/InputState.cpp:437
341 msgid "Main2"
342 msgstr "Główny2"
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:677
357 msgid "Delete"
358 msgstr "Delete"
359
360 #: ../../../src/InputState.cpp:442
361 msgid "ActionBar Accept"
362 msgstr "Wybór elementu na Pasku Akcji"
363
364 #: ../../../src/InputState.cpp:443
365 msgid "ActionBar Left"
366 msgstr "Kursor na Pasku Akcji w lewo"
367
368 #: ../../../src/InputState.cpp:444
369 msgid "ActionBar Right"
370 msgstr "Kursor na Pasku Akcji w prawo"
371
372 #: ../../../src/InputState.cpp:445
373 msgid "ActionBar Use"
374 msgstr "Użycie elementu na Pasku Akcji"
375
376 #: ../../../src/InputState.cpp:446
377 msgid "Developer Menu"
378 msgstr "Menu deweloperskie"
379
380 #: ../../../src/InputState.cpp:448
381 msgid "Left Mouse"
382 msgstr "Lewy przycisk myszy"
383
384 #: ../../../src/InputState.cpp:449
385 msgid "Middle Mouse"
386 msgstr "Środkowy przycisk myszy"
387
388 #: ../../../src/InputState.cpp:450
389 msgid "Right Mouse"
390 msgstr "Prawy przycisk myszy"
391
392 #: ../../../src/InputState.cpp:451
393 msgid "Wheel Up"
394 msgstr "Kółko w górę"
395
396 #: ../../../src/InputState.cpp:452
397 msgid "Wheel Down"
398 msgstr "Kółko w dół"
399
400 #: ../../../src/InputState.cpp:453
401 msgid "Mouse X1"
402 msgstr "Przycisk myszy X1"
403
404 #: ../../../src/InputState.cpp:454
405 msgid "Mouse X2"
406 msgstr "Przycisk myszy X2"
407
408 #: ../../../src/ItemManager.cpp:475
409 msgid "Unknown Item"
410 msgstr "Nieznany przedmiot"
411
412 #: ../../../src/ItemManager.cpp:646 ../../../src/MenuPowers.cpp:981
413 #, c-format
414 msgid "%d%% Speed"
415 msgstr "%d%% Szybkość Ruchu"
416
417 #: ../../../src/ItemManager.cpp:650 ../../../src/MenuPowers.cpp:984
418 #, c-format
419 msgid "%d%% Attack Speed"
420 msgstr "%d%% Szybkość Ataku"
421
422 #: ../../../src/ItemManager.cpp:672 ../../../src/MenuCharacter.cpp:352
423 #: ../../../src/MenuPowers.cpp:953
424 #, c-format
425 msgid "Resistance (%s)"
426 msgstr "Odporność (%s)"
427
428 #: ../../../src/ItemManager.cpp:682
429 #, c-format
430 msgid "Requires %s"
431 msgstr "Wymaga %s"
432
433 #: ../../../src/ItemManager.cpp:731
434 msgid "Quest Item"
435 msgstr "Przedmiot związany z zadaniem"
436
437 #: ../../../src/ItemManager.cpp:758
438 #, c-format
439 msgid "Quality: %s"
440 msgstr "Jakość: %s"
441
442 #: ../../../src/ItemManager.cpp:783
443 #, c-format
444 msgid "Absorb: %d-%d"
445 msgstr "Absorbcja: %d-%d"
446
447 #: ../../../src/ItemManager.cpp:785
448 #, c-format
449 msgid "Absorb: %d"
450 msgstr "Absorbcja: %d"
451
452 #: ../../../src/ItemManager.cpp:825 ../../../src/MenuPowers.cpp:1228
453 #: ../../../src/MenuPowers.cpp:1231
454 #, c-format
455 msgid "Requires Level %d"
456 msgstr "Wymaga %d poziomu"
457
458 #: ../../../src/ItemManager.cpp:836 ../../../src/MenuPowers.cpp:1220
459 #: ../../../src/MenuPowers.cpp:1222
460 #, c-format
461 msgid "Requires %s %d"
462 msgstr "Wymaga: %s %d"
463
464 #: ../../../src/ItemManager.cpp:847
465 #, c-format
466 msgid "Requires Class: %s"
467 msgstr "Wymagana Klasa: %s"
468
469 #: ../../../src/ItemManager.cpp:863 ../../../src/ItemManager.cpp:875
470 #, c-format
471 msgid "Buy Price: %d %s"
472 msgstr "Cena kupna: %d %s"
473
474 #: ../../../src/ItemManager.cpp:865 ../../../src/ItemManager.cpp:877
475 #, c-format
476 msgid "Buy Price: %d %s each"
477 msgstr "Cena kupna: %d %s za sztukę"
478
479 #: ../../../src/ItemManager.cpp:885
480 #, c-format
481 msgid "Sell Price: %d %s"
482 msgstr "Wartość sprzedaży: %d %s"
483
484 #: ../../../src/ItemManager.cpp:887
485 #, c-format
486 msgid "Sell Price: %d %s each"
487 msgstr "Wartość sprzedaży: %d %s za sztukę"
488
489 #: ../../../src/ItemManager.cpp:898
490 msgid "Set:"
491 msgstr "Zestaw:"
492
493 #: ../../../src/ItemManager.cpp:905
494 #, c-format
495 msgid "%d items:"
496 msgstr "%d przedmioty:"
497
498 #: ../../../src/ItemManager.cpp:920
499 #, c-format
500 msgid "Press [%s] to read"
501 msgstr "Wciśnij [%s] aby przeczytać"
502
503 #: ../../../src/ItemManager.cpp:923
504 #, c-format
505 msgid "Press [%s] to use"
506 msgstr "Wciśnij [%s] aby użyć"
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 "Klawisz skrótu: %s"
513
514 #: ../../../src/MenuActionBar.cpp:621
515 msgid "Not enough MP."
516 msgstr "Za mało PM."
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 "Pozostało:"
526
527 #: ../../../src/MenuActiveEffects.cpp:225
528 #, c-format
529 msgid "x%d stacks"
530 msgstr "x%d sztuk"
531
532 #: ../../../src/MenuCharacter.cpp:73 ../../../src/MenuCharacter.cpp:78
533 msgid "Name"
534 msgstr "Imię"
535
536 #: ../../../src/MenuCharacter.cpp:74 ../../../src/MenuCharacter.cpp:79
537 msgid "Level"
538 msgstr "Poziom"
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 "Zmniejsza obrażenia otrzymywane od ataków żywiołu \"%s\"."
549
550 #: ../../../src/MenuCharacter.cpp:363 ../../../src/MenuManager.cpp:301
551 #, c-format
552 msgid "XP: %d"
553 msgstr "Obecne PD: %d"
554
555 #: ../../../src/MenuCharacter.cpp:365
556 #, c-format
557 msgid "Next: %d"
558 msgstr "Do następnego poziomu: %d PD"
559
560 #: ../../../src/MenuCharacter.cpp:371
561 #, c-format
562 msgid "base (%d), bonus (%d)"
563 msgstr "Podstawa (%d), dodatkowo (%d)"
564
565 #: ../../../src/MenuCharacter.cpp:379 ../../../src/MenuCharacter.cpp:393
566 msgid "Related stats:"
567 msgstr "Powiązane statystyki:"
568
569 #: ../../../src/MenuCharacter.cpp:419 ../../../src/MenuCharacter.cpp:443
570 #, c-format
571 msgid "Each level grants %d."
572 msgstr "Każdy poziom zapewnia %d punktów."
573
574 #: ../../../src/MenuCharacter.cpp:423 ../../../src/MenuCharacter.cpp:447
575 #, c-format
576 msgid "Each point of %s grants %d."
577 msgstr "Każdy punkt atrybutu %s dodaje %d punktów."
578
579 #: ../../../src/MenuConfig.cpp:122 ../../../src/MenuConfig.cpp:1256
580 msgid "Clear"
581 msgstr "Wyczyść"
582
583 #: ../../../src/MenuConfig.cpp:122 ../../../src/MenuConfig.cpp:1254
584 msgid "Assign:"
585 msgstr "Przypisz:"
586
587 #: ../../../src/MenuConfig.cpp:123 ../../../src/MenuConfig.cpp:253
144588 msgid "Defaults"
145589 msgstr "Domyślne"
146590
147 #: ../../../src/GameStateConfigBase.cpp:89
591 #: ../../../src/MenuConfig.cpp:123
148592 msgid "Reset ALL settings?"
149593 msgstr "Zresetować WSZYSTKIE ustawienia?"
150594
151 #: ../../../src/GameStateConfigBase.cpp:109 ../../../src/MenuNumPicker.cpp:49
595 #: ../../../src/MenuConfig.cpp:252 ../../../src/MenuNumPicker.cpp:49
152596 msgid "OK"
153597 msgstr "OK"
154598
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
599 #: ../../../src/MenuConfig.cpp:256 ../../../src/MenuGameOver.cpp:72
600 msgid "Continue"
601 msgstr "Kontynuuj"
602
603 #: ../../../src/MenuConfig.cpp:258
604 msgid "Save Game"
605 msgstr "Zapisz Grę"
606
607 #: ../../../src/MenuConfig.cpp:301 ../../../src/MenuConfig.cpp:352
608 msgid "Default"
609 msgstr "Domyślne"
610
611 #: ../../../src/MenuConfig.cpp:301
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 "Wyświetla podpisy wszystkich łupów, za wyjątkiem tych zasłoniętych przez "
617 "gracza bądź wroga. Tymczasowo ukryj podpisy klawiszem 'Alt'."
618
619 #: ../../../src/MenuConfig.cpp:302
620 msgid "Show all"
621 msgstr "Pokaż wszystkie"
622
623 #: ../../../src/MenuConfig.cpp:302
624 msgid ""
625 "Always show loot tooltips. Temporarily hide all loot tooltips with 'Alt'."
626 msgstr ""
627 "Zawsze wyświetla podpisy łupów. Tymczasowo ukryj podpisy klawiszem 'Alt'."
628
629 #: ../../../src/MenuConfig.cpp:303 ../../../src/MenuConfig.cpp:308
630 msgid "Hidden"
631 msgstr "Ukryta"
632
633 #: ../../../src/MenuConfig.cpp:303
634 msgid ""
635 "Always hide loot tooltips, except for when a piece of loot is hovered with "
636 "the mouse cursor. Temporarily show all loot tooltips with 'Alt'."
637 msgstr ""
638 "Zawsze ukrywaj podpisy łupów, poza tymi, na których znajduje się kursor "
639 "myszt. Tymczasowo pokaż podpisy wszystkich łupów klawiszem 'Alt'."
640
641 #: ../../../src/MenuConfig.cpp:306
642 msgid "Visible"
643 msgstr "Widoczna"
644
645 #: ../../../src/MenuConfig.cpp:307
646 msgid "Visible (2x zoom)"
647 msgstr "Widoczna (powiększenie x2)"
648
649 #: ../../../src/MenuConfig.cpp:311
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 #: ../../../src/MenuConfig.cpp:312
656 msgid "- Display a message"
657 msgstr ""
658
659 #: ../../../src/MenuConfig.cpp:313
660 msgid "- Play a sound"
661 msgstr ""
662
663 #: ../../../src/MenuConfig.cpp:314
664 msgid "- Change the cursor"
665 msgstr ""
666
667 #: ../../../src/MenuConfig.cpp:316
668 msgid "Disabled"
669 msgstr ""
670
671 #: ../../../src/MenuConfig.cpp:317
672 msgid "All"
673 msgstr ""
674
675 #: ../../../src/MenuConfig.cpp:318
676 msgid "Message & Cursor"
677 msgstr ""
678
679 #: ../../../src/MenuConfig.cpp:319
680 msgid "Message & Sound"
681 msgstr ""
682
683 #: ../../../src/MenuConfig.cpp:320
684 msgid "Sound & Cursor"
685 msgstr ""
686
687 #: ../../../src/MenuConfig.cpp:321
688 msgid "Message"
689 msgstr ""
690
691 #: ../../../src/MenuConfig.cpp:322
692 msgid "Cursor"
693 msgstr "Kursor"
694
695 #: ../../../src/MenuConfig.cpp:323
696 msgid "Sound"
697 msgstr ""
698
699 #: ../../../src/MenuConfig.cpp:329
700 msgid ""
701 "When the player's health drops below the given threshold, the low health "
702 "notifications are triggered if one or more of them is enabled."
703 msgstr ""
704
705 #: ../../../src/MenuConfig.cpp:347
706 msgid "The maximum frame rate that the game will be allowed to run at."
707 msgstr ""
708
709 #: ../../../src/MenuConfig.cpp:351
710 msgid ""
711 "The render size refers to the height in pixels of the surface used to draw "
712 "the game. Mods define the allowed render sizes, but this option allows "
713 "overriding the maximum size."
714 msgstr ""
715
716 #: ../../../src/MenuConfig.cpp:374 ../../../src/MenuConfig.cpp:1679
717 #: ../../../src/MenuGameOver.cpp:116
718 msgid "Exit"
719 msgstr "Wyjdź"
720
721 #: ../../../src/MenuConfig.cpp:375
722 msgid "Video"
723 msgstr "Grafika"
724
725 #: ../../../src/MenuConfig.cpp:376
162726 msgid "Audio"
163727 msgstr "Dźwięk"
164728
165 #: ../../../src/GameStateConfigBase.cpp:161
166 #: ../../../src/GameStateConfigDesktop.cpp:131
729 #: ../../../src/MenuConfig.cpp:377
167730 msgid "Interface"
168731 msgstr "Interfejs"
169732
170 #: ../../../src/GameStateConfigBase.cpp:162
171 #: ../../../src/GameStateConfigDesktop.cpp:134
733 #: ../../../src/MenuConfig.cpp:378
734 msgid "Input"
735 msgstr "Kontrolery"
736
737 #: ../../../src/MenuConfig.cpp:379
738 msgid "Keybindings"
739 msgstr "Klawiszologia"
740
741 #: ../../../src/MenuConfig.cpp:380
172742 msgid "Mods"
173743 msgstr "Mody"
174744
175 #: ../../../src/GameStateConfigBase.cpp:249 ../../../src/MenuExit.cpp:72
745 #: ../../../src/MenuConfig.cpp:392
746 msgid "Paused"
747 msgstr "Pauza"
748
749 #: ../../../src/MenuConfig.cpp:395
750 msgid "Time Played"
751 msgstr "Czas spędzony w grze"
752
753 #: ../../../src/MenuConfig.cpp:401
754 msgid "Renderer"
755 msgstr "Renderer"
756
757 #: ../../../src/MenuConfig.cpp:402
758 msgid "Full Screen Mode"
759 msgstr "Pełny ekran"
760
761 #: ../../../src/MenuConfig.cpp:403
762 msgid "Hardware surfaces"
763 msgstr "Generowanie sprzętowe"
764
765 #: ../../../src/MenuConfig.cpp:404
766 msgid "V-Sync"
767 msgstr "V-Sync"
768
769 #: ../../../src/MenuConfig.cpp:405
770 msgid "Texture Filtering"
771 msgstr "Filtrowanie tekstur"
772
773 #: ../../../src/MenuConfig.cpp:406
774 msgid "DPI scaling"
775 msgstr "Skalowanie DPI"
776
777 #: ../../../src/MenuConfig.cpp:407
778 msgid "Parallax Layers"
779 msgstr "Warstwy paralaksowe"
780
781 #: ../../../src/MenuConfig.cpp:408
782 msgid "Allow changing gamma"
783 msgstr "Zezwól na zmianę jasności"
784
785 #: ../../../src/MenuConfig.cpp:409
786 msgid "Gamma"
787 msgstr "Jasność"
788
789 #: ../../../src/MenuConfig.cpp:410
790 msgid "Maximum Render Size"
791 msgstr ""
792
793 #: ../../../src/MenuConfig.cpp:411
794 msgid "Frame Limit"
795 msgstr ""
796
797 #: ../../../src/MenuConfig.cpp:413
798 msgid "Sound Volume"
799 msgstr "Głośność efektów"
800
801 #: ../../../src/MenuConfig.cpp:414
176802 msgid "Music Volume"
177803 msgstr "Głośność muzyki"
178804
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
805 #: ../../../src/MenuConfig.cpp:416
184806 msgid "Language"
185807 msgstr "Język"
186808
187 #: ../../../src/GameStateConfigBase.cpp:266
809 #: ../../../src/MenuConfig.cpp:417
188810 msgid "Show FPS"
189811 msgstr "Pokaż klatki na sekundę"
190812
191 #: ../../../src/GameStateConfigBase.cpp:270
192 msgid "Colorblind Mode"
193 msgstr "Minimalizacja kolorów"
194
195 #: ../../../src/GameStateConfigBase.cpp:274
813 #: ../../../src/MenuConfig.cpp:418
196814 msgid "Hardware mouse cursor"
197815 msgstr "Sprzętowy kursor myszy"
198816
199 #: ../../../src/GameStateConfigBase.cpp:278
817 #: ../../../src/MenuConfig.cpp:419
818 msgid "Colorblind Mode"
819 msgstr "Wyświetlanie opisów kolorów"
820
821 #: ../../../src/MenuConfig.cpp:420
200822 msgid "Developer Mode"
201823 msgstr "Tryb deweloperski"
202824
203 #: ../../../src/GameStateConfigBase.cpp:282
825 #: ../../../src/MenuConfig.cpp:421
204826 msgid "Subtitles"
205827 msgstr "Napisy"
206828
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
829 #: ../../../src/MenuConfig.cpp:422
830 msgid "Loot tooltip visibility"
831 msgstr "Widoczność podpisów łupów"
832
833 #: ../../../src/MenuConfig.cpp:423
834 msgid "Mini-map mode"
835 msgstr "Tryb minimapy"
836
837 #: ../../../src/MenuConfig.cpp:424
838 msgid "Always show stat bar labels"
839 msgstr "Pokazuj podpisy na paskach"
840
841 #: ../../../src/MenuConfig.cpp:425
842 msgid "Allow stat bar auto-hiding"
843 msgstr "Zezwól na automatyczne ukrywanie pasków stanu"
844
845 #: ../../../src/MenuConfig.cpp:426
846 msgid "Show combat text"
847 msgstr "Pokaż tekst podczas walki"
848
849 #: ../../../src/MenuConfig.cpp:427
850 msgid "Automatically equip items"
851 msgstr "Automatycznie załóż ekwipunek"
852
853 #: ../../../src/MenuConfig.cpp:428
854 msgid "Show hidden entity markers"
855 msgstr "Wyświetl znaczniki ukrytych bytów"
856
857 #: ../../../src/MenuConfig.cpp:429
858 msgid "Low health notification"
859 msgstr ""
860
861 #: ../../../src/MenuConfig.cpp:430
862 msgid "Low health threshold"
863 msgstr ""
864
865 #: ../../../src/MenuConfig.cpp:431
866 msgid "Show item comparison tooltips"
867 msgstr ""
868
869 #: ../../../src/MenuConfig.cpp:434 ../../../src/MenuMovementType.cpp:94
870 #: ../../../src/MenuMovementType.cpp:131
871 msgid "Joystick"
872 msgstr "Joystick"
873
874 #: ../../../src/MenuConfig.cpp:435
875 msgid "Move hero using mouse"
876 msgstr "Poruszaj się używając myszki"
877
878 #: ../../../src/MenuConfig.cpp:436
879 msgid "Mouse aim"
880 msgstr "Celowanie myszką"
881
882 #: ../../../src/MenuConfig.cpp:437
883 msgid "Do not use mouse"
884 msgstr "Nie używaj myszy"
885
886 #: ../../../src/MenuConfig.cpp:438
887 msgid "Swap mouse movement button"
888 msgstr "Zamień przyciski ruchu na myszce"
889
890 #: ../../../src/MenuConfig.cpp:439
891 msgid "Attack with mouse movement"
892 msgstr "Atakuj podczas ruchu myszką"
893
894 #: ../../../src/MenuConfig.cpp:440
895 msgid "Joystick Deadzone"
896 msgstr "Martwa strefa Joystick-a"
897
898 #: ../../../src/MenuConfig.cpp:441
899 msgid "Touch Controls"
900 msgstr ""
901
902 #: ../../../src/MenuConfig.cpp:442
903 msgid "Touch Gamepad Scaling"
904 msgstr ""
905
906 #: ../../../src/MenuConfig.cpp:452
907 #, c-format
908 msgid "Primary binding: %s"
909 msgstr "Klawisz główny: %s"
910
911 #: ../../../src/MenuConfig.cpp:453
912 #, c-format
913 msgid "Alternate binding: %s"
914 msgstr "Klawisz alternatywny: %s"
915
916 #: ../../../src/MenuConfig.cpp:454
917 #, c-format
918 msgid "Joystick binding: %s"
919 msgstr "Przycisk na joysticku: %s"
920
921 #: ../../../src/MenuConfig.cpp:556
262922 msgid ""
263923 "Will try to store surfaces in video memory versus system memory. The effect "
264924 "this has on performance depends on the renderer."
265925 msgstr ""
266
267 #: ../../../src/GameStateConfigDesktop.cpp:189
926 "Funkcja będzie próbowała przechowywać powierzchnie w pamięci karty "
927 "graficznej zamiast systemowej. Jej wydajność zależy od renderera"
928
929 #: ../../../src/MenuConfig.cpp:557
268930 msgid ""
269931 "Prevents screen tearing. Disable if you experience \"stuttering\" in "
270932 "windowed mode or input lag."
271933 msgstr ""
272
273 #: ../../../src/GameStateConfigDesktop.cpp:190
934 "Zapobiega rozchodzeniu się obrazu. Wyłącz, jeśli doświadczasz "
935 "\"przycinania\\ w trybie okienkowym bądź opóźnienia w wykonywaniu akcji."
936
937 #: ../../../src/MenuConfig.cpp:558
274938 msgid ""
275939 "When enabled, this uses the screen DPI in addition to the window dimensions "
276940 "to scale the rendering resolution. Otherwise, only the window dimensions are"
277941 " used."
278942 msgstr ""
279
280 #: ../../../src/GameStateConfigDesktop.cpp:191
943 "Po włączeniu, ta funkcja bierze pod uwagę rozdzielczość ekranu podczas "
944 "skalowania renderowanego obrazu do rozmiaru okna. W przeciwnym wypadku brany"
945 " pod uwagę jest wyłącznie rozmiar okna."
946
947 #: ../../../src/MenuConfig.cpp:559
281948 msgid ""
282949 "This enables parallax (non-tile) layers. Disabling this setting can improve "
283950 "performance in some cases."
284951 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
952 "Włącza paralaksowe warstwy (nie zawierające podłoża). Wyłączenie tej opcji "
953 "może poprawić wydajność w niektórych przypadkach."
954
955 #: ../../../src/MenuConfig.cpp:560
956 msgid ""
957 "Enables the below setting that controls the screen gamma level. The behavior"
958 " of the gamma setting can vary between platforms."
959 msgstr ""
960 "Odblokowuje poniższą opcję ręcznego ustawienia poziomu gammy. Zachowanie tej"
961 " funkcji może się różnić w zależności od platformy."
962
963 #: ../../../src/MenuConfig.cpp:561
964 msgid ""
965 "Provides additional text for information that is primarily conveyed through "
966 "color."
967 msgstr ""
968 "Wyświetla dodatkową informację, która jest przeważnie przekazywana przez "
969 "kolor."
970
971 #: ../../../src/MenuConfig.cpp:562
972 msgid ""
973 "Some mods will automatically hide the stat bars when they are inactive. "
974 "Disabling this option will keep them displayed at all times."
975 msgstr ""
976 "Niektóre mody będą automatycznie ukrywały paski stanu w czasie "
977 "nieaktywności. Wyłączenie tej opcji spowoduje wyświetlanie ich przez cały "
978 "czas."
979
980 #: ../../../src/MenuConfig.cpp:563
981 msgid ""
982 "When enabled, empty equipment slots will be filled with applicable items "
983 "when they are obtained."
984 msgstr ""
985 "Włączenie tej opcji spowoduje automatyczne zapełnianie pustych miejsc na "
986 "ekwipunek odpowiednimi przedmiotami po ich zdobyciu."
987
988 #: ../../../src/MenuConfig.cpp:564
989 msgid ""
990 "Shows a marker above enemies, allies, and the player when they are obscured "
991 "by tall objects."
992 msgstr ""
993 "Pokazuje znacznik nad przeciwnikami, sojusznikami i graczem, gdy są "
994 "zasłonięci przez wysokie obiekty."
995
996 #: ../../../src/MenuConfig.cpp:565
997 msgid ""
998 "When enabled, tooltips for equipped items of the same type are shown next to"
999 " standard item tooltips."
1000 msgstr ""
1001
1002 #: ../../../src/MenuConfig.cpp:566
1003 msgid ""
1004 "This allows the game to be controlled entirely with the keyboard (or "
1005 "joystick)."
1006 msgstr ""
1007 "Pozwala na sterowanie w grze wyłącznie przy pomocy klawiatury (bądź "
1008 "joysticka)."
1009
1010 #: ../../../src/MenuConfig.cpp:567
1011 msgid ""
1012 "When 'Move hero using mouse' is enabled, this setting controls if 'Main1' or"
1013 " 'Main2' is used to move the hero. If enabled, 'Main2' will move the hero "
1014 "instead of 'Main1'."
1015 msgstr ""
1016 "Jeśli opcja 'Poruszaj się używając myszki' jest aktywna, to ustawienie "
1017 "przypisuje funkcje do przycisków myszy. Po aktywowaniu tej opcji, 'Prawy "
1018 "przycisk myszy' będzie używany do poruszania się zamiast 'Lewego przycisku "
1019 "myszy'."
1020
1021 #: ../../../src/MenuConfig.cpp:568
1022 msgid ""
1023 "When 'Move hero using mouse' is enabled, this setting controls if the Power "
1024 "assigned to the movement button can be used by targeting an enemy. If this "
1025 "setting is disabled, it is required to use 'Shift' to access the Power "
1026 "assigned to the movement button."
1027 msgstr ""
1028 "Jeśli opcja 'Poruszaj się używając myszki' jest aktywna, to ustawienie "
1029 "sprawdza, czy moc przypisana do przycisku ruchu może zostać użyta po "
1030 "nakierowaniu na wroga. Jeśli ta opcja jest wyłączona, należy użyć 'Shift', "
1031 "żeby móc użyć mocy przypisanej do przycisku ruchu."
1032
1033 #: ../../../src/MenuConfig.cpp:569
1034 msgid ""
1035 "The player's attacks will be aimed in the direction of the mouse cursor when"
1036 " this is enabled."
1037 msgstr ""
1038 "Po aktywowaniu tej opcji, Ataki gracza będą kierowane w stronę kursora "
1039 "myszy."
1040
1041 #: ../../../src/MenuConfig.cpp:570
1042 msgid ""
1043 "When enabled, a virtual gamepad will be added in-game. Other interactions, "
1044 "such as drag-and-drop behavior, are also altered to better suit touch input."
1045 msgstr ""
1046
1047 #: ../../../src/MenuConfig.cpp:621
1048 msgid "Active Mods"
1049 msgstr "Aktywne mody"
1050
1051 #: ../../../src/MenuConfig.cpp:630
1052 msgid "Available Mods"
1053 msgstr "Dostępne mody"
1054
1055 #: ../../../src/MenuConfig.cpp:649
1056 msgid "<< Disable"
1057 msgstr "<< Wyłącz"
1058
1059 #: ../../../src/MenuConfig.cpp:655
1060 msgid "Enable >>"
1061 msgstr "Włącz >>"
1062
1063 #: ../../../src/MenuConfig.cpp:1536
1064 msgid "Version:"
1065 msgstr "Wersja:"
1066
1067 #: ../../../src/MenuConfig.cpp:1541
1068 msgid "Game:"
1069 msgstr "Gra:"
1070
1071 #: ../../../src/MenuConfig.cpp:1546
1072 msgid "Engine version:"
1073 msgstr "Wersja silnika:"
1074
1075 #: ../../../src/MenuConfig.cpp:1554
1076 msgid "Requires mods:"
1077 msgstr "Wymaga modów:"
1078
1079 #: ../../../src/MenuConfig.cpp:1662 ../../../src/SDLInputState.cpp:750
1080 msgid "(none)"
1081 msgstr "(brak)"
1082
1083 #: ../../../src/MenuConfig.cpp:1679 ../../../src/MenuGameOver.cpp:73
1084 msgid "Save & Exit"
1085 msgstr "Zapisz i wyjdź"
1086
1087 #: ../../../src/MenuDevConsole.cpp:65
8291088 msgid "Execute"
8301089 msgstr "Wykonaj"
8311090
832 #: ../../../src/MenuDevConsole.cpp:101 ../../../src/MenuDevConsole.cpp:151
1091 #: ../../../src/MenuDevConsole.cpp:103 ../../../src/MenuDevConsole.cpp:153
8331092 msgid "Developer Console"
8341093 msgstr "Konsola deweloperska"
8351094
836 #: ../../../src/MenuDevConsole.cpp:141
1095 #: ../../../src/MenuDevConsole.cpp:143
8371096 #, c-format
8381097 msgid "Use '%s' to inspect with the cursor."
839 msgstr ""
840
841 #: ../../../src/MenuDevConsole.cpp:146
1098 msgstr "Użyj '%s', aby zbadać kursorem myszy."
1099
1100 #: ../../../src/MenuDevConsole.cpp:148
8421101 msgid "Arguments with spaces should be enclosed with double quotes. Example:"
8431102 msgstr ""
8441103 "Argumenty zawierające spacje powinny zamknięte w cudzysłowie. Przykład:"
8451104
846 #: ../../../src/MenuDevConsole.cpp:147
1105 #: ../../../src/MenuDevConsole.cpp:149
8471106 msgid "Type 'help' to get a list of commands."
8481107 msgstr "Wpisz 'help' aby uzyskać listę komend."
8491108
850 #: ../../../src/MenuDevConsole.cpp:209 ../../../src/MenuDevConsole.cpp:213
1109 #: ../../../src/MenuDevConsole.cpp:211 ../../../src/MenuDevConsole.cpp:215
8511110 msgid "px"
852 msgstr ""
853
854 #: ../../../src/MenuDevConsole.cpp:224
1111 msgstr "px"
1112
1113 #: ../../../src/MenuDevConsole.cpp:226
8551114 msgid "Distance"
856 msgstr ""
857
858 #: ../../../src/MenuDevConsole.cpp:239 ../../../src/MenuDevConsole.cpp:286
1115 msgstr "Dystans"
1116
1117 #: ../../../src/MenuDevConsole.cpp:241 ../../../src/MenuDevConsole.cpp:289
1118 #: ../../../src/MenuDevConsole.cpp:303
8591119 msgid "Entity"
860 msgstr ""
861
862 #: ../../../src/MenuDevConsole.cpp:261 ../../../src/MenuDevConsole.cpp:268
1120 msgstr "Byt"
1121
1122 #: ../../../src/MenuDevConsole.cpp:263 ../../../src/MenuDevConsole.cpp:270
8631123 msgid "none"
864 msgstr ""
865
866 #: ../../../src/MenuDevConsole.cpp:262 ../../../src/MenuDevConsole.cpp:264
1124 msgstr "nic"
1125
1126 #: ../../../src/MenuDevConsole.cpp:264 ../../../src/MenuDevConsole.cpp:266
8671127 msgid "wall"
868 msgstr ""
869
870 #: ../../../src/MenuDevConsole.cpp:263 ../../../src/MenuDevConsole.cpp:265
1128 msgstr "ściana"
1129
1130 #: ../../../src/MenuDevConsole.cpp:265 ../../../src/MenuDevConsole.cpp:267
8711131 msgid "short wall / pit"
872 msgstr ""
873
874 #: ../../../src/MenuDevConsole.cpp:266
1132 msgstr "krótka ściana / otchłań"
1133
1134 #: ../../../src/MenuDevConsole.cpp:268
8751135 msgid "entity"
876 msgstr ""
877
878 #: ../../../src/MenuDevConsole.cpp:267
1136 msgstr "byt"
1137
1138 #: ../../../src/MenuDevConsole.cpp:269
8791139 msgid "entity, ally"
880 msgstr ""
881
882 #: ../../../src/MenuDevConsole.cpp:274
1140 msgstr "byt, sojusznik"
1141
1142 #: ../../../src/MenuDevConsole.cpp:276
8831143 msgid "Tile"
884 msgstr ""
885
886 #: ../../../src/MenuDevConsole.cpp:360
1144 msgstr "Podłoże"
1145
1146 #: ../../../src/MenuDevConsole.cpp:377
8871147 msgid "adds a power to the action bar"
8881148 msgstr "dodaje moc do paska akcji"
8891149
890 #: ../../../src/MenuDevConsole.cpp:361
1150 #: ../../../src/MenuDevConsole.cpp:378
8911151 msgid "turns on/off the display of the FPS counter"
892 msgstr ""
893
894 #: ../../../src/MenuDevConsole.cpp:362
1152 msgstr "włącza/wyłącza wyświetlanie licznika klatek na sekundę"
1153
1154 #: ../../../src/MenuDevConsole.cpp:379
8951155 msgid "turns on/off all of the HUD elements"
8961156 msgstr "włącza/wyłącza wszystkie elementy interfejsu"
8971157
898 #: ../../../src/MenuDevConsole.cpp:363
1158 #: ../../../src/MenuDevConsole.cpp:380
8991159 msgid "turns on/off the developer hud"
9001160 msgstr "włącza/wyłącza interfejs dewelopera"
9011161
902 #: ../../../src/MenuDevConsole.cpp:364
1162 #: ../../../src/MenuDevConsole.cpp:381
9031163 msgid ""
9041164 "Prints a list of powers that match a search term. No search term will list "
9051165 "all items"
9071167 "Wyświetla listę mocy pasujących do podanego wyrażenia. Brak wyrażenia "
9081168 "spowoduje wyświelenie wszystkich pozycji."
9091169
910 #: ../../../src/MenuDevConsole.cpp:365
1170 #: ../../../src/MenuDevConsole.cpp:382
9111171 msgid "Prints out all the map filenames located in the \"maps/\" directory."
9121172 msgstr "Wypisuje nazwy wszystkich plików map zawartych w katalogu \"maps/\"."
9131173
914 #: ../../../src/MenuDevConsole.cpp:366
1174 #: ../../../src/MenuDevConsole.cpp:383
9151175 msgid ""
9161176 "Prints out the active campaign statuses that match a search term. No search "
9171177 "term will list all active statuses"
9191179 "Wyświetla listę aktywnych statusów kampanii pasujących do podanego "
9201180 "wyrażenia. Brak wyrażenia spowoduje wyświetlanie wszystkich statusów."
9211181
922 #: ../../../src/MenuDevConsole.cpp:367
1182 #: ../../../src/MenuDevConsole.cpp:384
9231183 msgid ""
9241184 "Prints a list of items that match a search term. No search term will list "
9251185 "all items"
9271187 "Wyświetla listę przedmiotów pasujących do podanego wyrażenia. Brak wyrażenia"
9281188 " spowoduje wyświelenie wszystkich przedmiotów."
9291189
930 #: ../../../src/MenuDevConsole.cpp:368
1190 #: ../../../src/MenuDevConsole.cpp:385
9311191 msgid ""
9321192 "parses a series of event components and executes them as a single event"
9331193 msgstr "parsuje ciąg komponentów zdarzeń i wykonuje je jako jedno zdarzenie"
9341194
935 #: ../../../src/MenuDevConsole.cpp:369
1195 #: ../../../src/MenuDevConsole.cpp:386
9361196 msgid "clears the command history"
9371197 msgstr "czyści historię komend"
9381198
939 #: ../../../src/MenuDevConsole.cpp:370
1199 #: ../../../src/MenuDevConsole.cpp:387
9401200 msgid "displays this text"
9411201 msgstr "wyświetla ten tekst"
9421202
943 #: ../../../src/MenuDevConsole.cpp:377
1203 #: ../../../src/MenuDevConsole.cpp:394
9441204 msgid "Toggled the developer hud"
9451205 msgstr "Włączono interfejs dewelopera"
9461206
947 #: ../../../src/MenuDevConsole.cpp:381
1207 #: ../../../src/MenuDevConsole.cpp:398
9481208 msgid "Toggled the hud"
9491209 msgstr "Włączono interfejs użytkownika"
9501210
951 #: ../../../src/MenuDevConsole.cpp:385
1211 #: ../../../src/MenuDevConsole.cpp:402
9521212 msgid "Toggled the FPS counter"
953 msgstr ""
954
955 #: ../../../src/MenuDevConsole.cpp:534
1213 msgstr "Włączono licznik klatek na sekundę"
1214
1215 #: ../../../src/MenuDevConsole.cpp:552
9561216 msgid "ERROR: Incorrect number of arguments"
9571217 msgstr "BŁĄD: Nieprawidłowa liczba argumentów."
9581218
959 #: ../../../src/MenuDevConsole.cpp:536 ../../../src/MenuDevConsole.cpp:564
1219 #: ../../../src/MenuDevConsole.cpp:554 ../../../src/MenuDevConsole.cpp:582
9601220 msgid "HINT:"
9611221 msgstr "WSKAZÓWKA:"
9621222
963 #: ../../../src/MenuDevConsole.cpp:536
1223 #: ../../../src/MenuDevConsole.cpp:554
9641224 msgid "<id>"
9651225 msgstr "<id>"
9661226
967 #: ../../../src/MenuDevConsole.cpp:552
1227 #: ../../../src/MenuDevConsole.cpp:570
9681228 #, c-format
9691229 msgid "ERROR: '%s' is not a valid event key"
9701230 msgstr "BŁĄD: '%s' nie jest prawidłowym klawiszem do zdarzenia"
9711231
972 #: ../../../src/MenuDevConsole.cpp:562
1232 #: ../../../src/MenuDevConsole.cpp:580
9731233 msgid "ERROR: Too few arguments"
9741234 msgstr "BŁĄD: Za mało argumentów"
9751235
976 #: ../../../src/MenuDevConsole.cpp:564
1236 #: ../../../src/MenuDevConsole.cpp:582
9771237 msgid "<key>=<val> <key>=<val> ..."
9781238 msgstr "<key>=<val> <key>=<val> ..."
9791239
980 #: ../../../src/MenuDevConsole.cpp:569
1240 #: ../../../src/MenuDevConsole.cpp:587
9811241 msgid "ERROR: Unknown command"
9821242 msgstr "BŁĄD: Nieznana komenda"
9831243
984 #: ../../../src/MenuDevConsole.cpp:571
1244 #: ../../../src/MenuDevConsole.cpp:589
9851245 msgid "HINT: Type help"
9861246 msgstr "WSKAZÓWKA: Wpisz help"
9871247
988 #: ../../../src/MenuEnemy.cpp:138
1248 #: ../../../src/MenuEnemy.cpp:162
9891249 #, c-format
9901250 msgid "%s level %d"
9911251 msgstr "%s poziom %d"
9921252
993 #: ../../../src/MenuEnemy.cpp:162
1253 #: ../../../src/MenuEnemy.cpp:186
9941254 msgid "Dead"
9951255 msgstr "Nie żyje"
9961256
997 #: ../../../src/MenuEnemy.cpp:164
1257 #: ../../../src/MenuEnemy.cpp:188
9981258 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
1259 msgstr "Zniszczony"
1260
1261 #: ../../../src/MenuGameOver.cpp:69
1262 msgid "Game Over"
1263 msgstr ""
1264
1265 #: ../../../src/MenuInventory.cpp:178
10221266 #, c-format
10231267 msgid "Lost %d%% of %s."
10241268 msgstr "Utracono %d%% %s."
10251269
1026 #: ../../../src/MenuInventory.cpp:195
1270 #: ../../../src/MenuInventory.cpp:185
10271271 #, c-format
10281272 msgid "Lost %d%% of total XP."
10291273 msgstr "Utracono %d%% PD."
10301274
1031 #: ../../../src/MenuInventory.cpp:200
1275 #: ../../../src/MenuInventory.cpp:190
10321276 #, c-format
10331277 msgid "Lost %d%% of current level XP."
10341278 msgstr "Utracono %d%% PD z obecnego poziomu doświadczenia."
10351279
1036 #: ../../../src/MenuInventory.cpp:226
1280 #: ../../../src/MenuInventory.cpp:216
10371281 #, c-format
10381282 msgid "Lost %s."
10391283 msgstr "Utracono %s."
10401284
1041 #: ../../../src/MenuInventory.cpp:274 ../../../src/MenuStash.cpp:146
1285 #: ../../../src/MenuInventory.cpp:258 ../../../src/MenuStash.cpp:276
10421286 #, c-format
10431287 msgid "%d %s"
10441288 msgstr "%d %s"
10451289
1046 #: ../../../src/MenuInventory.cpp:317
1290 #: ../../../src/MenuInventory.cpp:301
10471291 msgid "Pick up item(s):"
10481292 msgstr "Podnieś przedmiot(y):"
10491293
1050 #: ../../../src/MenuInventory.cpp:318
1294 #: ../../../src/MenuInventory.cpp:302
10511295 msgid "Use or equip item:"
10521296 msgstr "Użyj bądź załóż przedmiot:"
10531297
1054 #: ../../../src/MenuInventory.cpp:319
1298 #: ../../../src/MenuInventory.cpp:303
10551299 #, c-format
10561300 msgid "%s modifiers"
10571301 msgstr "Modyfikatory dla %s:"
10581302
1059 #: ../../../src/MenuInventory.cpp:320
1303 #: ../../../src/MenuInventory.cpp:304
10601304 msgid "Select a quantity of item:"
10611305 msgstr "Rozdziel przedmioty:"
10621306
1063 #: ../../../src/MenuInventory.cpp:323
1307 #: ../../../src/MenuInventory.cpp:307
10641308 msgid "Stash item stack:"
10651309 msgstr "Ilość przedmiotów w skrytce:"
10661310
1067 #: ../../../src/MenuInventory.cpp:325
1311 #: ../../../src/MenuInventory.cpp:309
10681312 msgid "Sell item stack:"
10691313 msgstr "Sprzedaj przedmiot:"
10701314
1071 #: ../../../src/MenuInventory.cpp:592
1315 #: ../../../src/MenuInventory.cpp:576
10721316 msgid "You don't have enough of the required item."
10731317 msgstr "Nie masz wystarczająco wymaganych przedmiotów."
10741318
1075 #: ../../../src/MenuInventory.cpp:599
1319 #: ../../../src/MenuInventory.cpp:588
10761320 msgid "You can't use this item right now."
10771321 msgstr "Nie możesz użyć tego przedmiotu w tej chwili."
10781322
1079 #: ../../../src/MenuInventory.cpp:611
1323 #: ../../../src/MenuInventory.cpp:600
10801324 msgid "This item can only be used from the action bar."
10811325 msgstr "Ten przedmiot może być użyty jedynie z paska akcji."
10821326
1083 #: ../../../src/MenuInventory.cpp:729
1327 #: ../../../src/MenuInventory.cpp:718
10841328 msgid "Inventory is full."
10851329 msgstr "Ekwipunek jest pełny."
10861330
1087 #: ../../../src/MenuInventory.cpp:849
1331 #: ../../../src/MenuInventory.cpp:843
10881332 #, c-format
10891333 msgid "Not enough %s."
10901334 msgstr "Za mało %s."
10911335
1092 #: ../../../src/MenuInventory.cpp:869 ../../../src/MenuInventory.cpp:876
1336 #: ../../../src/MenuInventory.cpp:863 ../../../src/MenuInventory.cpp:870
10931337 msgid "This item can not be sold."
10941338 msgstr "Tego przedmiotu nie można sprzedać."
10951339
11011345 msgid "Quests"
11021346 msgstr "Zadania"
11031347
1104 #: ../../../src/MenuManager.cpp:286
1348 #: ../../../src/MenuManager.cpp:305
11051349 #, c-format
11061350 msgid "XP: %d/%d"
11071351 msgstr "PD: %d/%d"
11081352
1109 #: ../../../src/MenuManager.cpp:827
1353 #: ../../../src/MenuManager.cpp:875
11101354 msgid "This item can not be dropped."
11111355 msgstr "Tego przedmiotu nie można upuścić."
1356
1357 #: ../../../src/MenuManager.cpp:1501
1358 msgid "Equipped"
1359 msgstr ""
1360
1361 #: ../../../src/MenuMovementType.cpp:87
1362 msgid "Select a Movement Type"
1363 msgstr ""
1364
1365 #: ../../../src/MenuMovementType.cpp:89
1366 msgid "Can be changed later in the Configuration menu."
1367 msgstr ""
1368
1369 #: ../../../src/MenuMovementType.cpp:92 ../../../src/MenuMovementType.cpp:122
1370 msgid "Keyboard"
1371 msgstr ""
1372
1373 #: ../../../src/MenuMovementType.cpp:93 ../../../src/MenuMovementType.cpp:128
1374 msgid "Mouse"
1375 msgstr ""
1376
1377 #: ../../../src/MenuMovementType.cpp:129
1378 msgid "Button"
1379 msgstr ""
11121380
11131381 #: ../../../src/MenuNumPicker.cpp:59
11141382 msgid "Enter amount:"
11151383 msgstr "Podaj ilość:"
11161384
1117 #: ../../../src/MenuPowers.cpp:787
1385 #: ../../../src/MenuPowers.cpp:894
11181386 msgid "Passive"
11191387 msgstr "Pasywna"
11201388
1121 #: ../../../src/MenuPowers.cpp:792
1389 #: ../../../src/MenuPowers.cpp:901
11221390 #, c-format
11231391 msgid "Costs %d MP"
11241392 msgstr "Koszt: %d PM"
11251393
1126 #: ../../../src/MenuPowers.cpp:796
1394 #: ../../../src/MenuPowers.cpp:905
11271395 #, c-format
11281396 msgid "Costs %d HP"
11291397 msgstr "Koszt: %d PŻ"
11301398
1131 #: ../../../src/MenuPowers.cpp:801
1399 #: ../../../src/MenuPowers.cpp:909
11321400 msgid "Cooldown:"
11331401 msgstr "Odnowienie:"
11341402
1135 #: ../../../src/MenuPowers.cpp:866 ../../../src/MenuPowers.cpp:869
1403 #: ../../../src/MenuPowers.cpp:960 ../../../src/MenuPowers.cpp:963
11361404 msgid "Damage per second"
11371405 msgstr "Obrażenia na sekundę"
11381406
1139 #: ../../../src/MenuPowers.cpp:872 ../../../src/MenuPowers.cpp:875
1407 #: ../../../src/MenuPowers.cpp:966 ../../../src/MenuPowers.cpp:969
11401408 msgid "HP per second"
11411409 msgstr "PŻ na sekundę"
11421410
1143 #: ../../../src/MenuPowers.cpp:878 ../../../src/MenuPowers.cpp:881
1411 #: ../../../src/MenuPowers.cpp:972 ../../../src/MenuPowers.cpp:975
11441412 msgid "MP per second"
11451413 msgstr "PM na sekundę"
11461414
1147 #: ../../../src/MenuPowers.cpp:885
1415 #: ../../../src/MenuPowers.cpp:979
11481416 msgid "Immobilize"
11491417 msgstr "Unieruchomienie"
11501418
1151 #: ../../../src/MenuPowers.cpp:893
1419 #: ../../../src/MenuPowers.cpp:987
11521420 msgid "Immunity"
11531421 msgstr "Niewrażliwość"
11541422
1155 #: ../../../src/MenuPowers.cpp:896
1423 #: ../../../src/MenuPowers.cpp:990
11561424 msgid "Immunity to damage over time"
11571425 msgstr "Niewrażliwość na krwawienie"
11581426
1159 #: ../../../src/MenuPowers.cpp:899
1427 #: ../../../src/MenuPowers.cpp:993
11601428 msgid "Immunity to slow"
11611429 msgstr "Niewrażliwość na spowolnienie"
11621430
1163 #: ../../../src/MenuPowers.cpp:902
1431 #: ../../../src/MenuPowers.cpp:996
11641432 msgid "Immunity to stun"
11651433 msgstr "Niewrażliwość na ogłuszenie"
11661434
1167 #: ../../../src/MenuPowers.cpp:905
1435 #: ../../../src/MenuPowers.cpp:999
11681436 msgid "Immunity to HP steal"
11691437 msgstr "Niewrażliwość na kradzież PŻ"
11701438
1171 #: ../../../src/MenuPowers.cpp:908
1439 #: ../../../src/MenuPowers.cpp:1002
11721440 msgid "Immunity to MP steal"
11731441 msgstr "Niewrażliwość na kradzież PM"
11741442
1175 #: ../../../src/MenuPowers.cpp:911
1443 #: ../../../src/MenuPowers.cpp:1005
11761444 msgid "Immunity to knockback"
11771445 msgstr "Niewrażliwość na odrzucenie"
11781446
1179 #: ../../../src/MenuPowers.cpp:914
1447 #: ../../../src/MenuPowers.cpp:1008
11801448 msgid "Immunity to damage reflection"
11811449 msgstr "Niewrażliwość na odbicie obrażeń"
11821450
1183 #: ../../../src/MenuPowers.cpp:917
1451 #: ../../../src/MenuPowers.cpp:1014
11841452 msgid "Stun"
11851453 msgstr "Ogłuszenie"
11861454
1187 #: ../../../src/MenuPowers.cpp:920
1455 #: ../../../src/MenuPowers.cpp:1017
11881456 msgid "Automatic revive on death"
11891457 msgstr "Automatyczne ożywienie po śmierci"
11901458
1191 #: ../../../src/MenuPowers.cpp:923
1459 #: ../../../src/MenuPowers.cpp:1020
11921460 msgid "Convert"
11931461 msgstr "Nawrócenie"
11941462
1195 #: ../../../src/MenuPowers.cpp:926
1463 #: ../../../src/MenuPowers.cpp:1023
11961464 msgid "Fear"
11971465 msgstr "Strach"
11981466
1199 #: ../../../src/MenuPowers.cpp:929
1467 #: ../../../src/MenuPowers.cpp:1026
12001468 msgid "Lifespan"
12011469 msgstr "Żywotność"
12021470
1203 #: ../../../src/MenuPowers.cpp:953
1471 #: ../../../src/MenuPowers.cpp:1050
12041472 msgid "Magical Shield"
12051473 msgstr "Magiczna Tarcza"
12061474
1207 #: ../../../src/MenuPowers.cpp:982
1475 #: ../../../src/MenuPowers.cpp:1079
12081476 msgid "Healing"
12091477 msgstr "Leczenie"
12101478
1211 #: ../../../src/MenuPowers.cpp:985
1479 #: ../../../src/MenuPowers.cpp:1082
12121480 msgid "Knockback"
12131481 msgstr "Odrzucenie"
12141482
1215 #: ../../../src/MenuPowers.cpp:1010
1483 #: ../../../src/MenuPowers.cpp:1106
12161484 #, c-format
12171485 msgid "%d%% chance"
12181486 msgstr "%d%% szansy"
12191487
1220 #: ../../../src/MenuPowers.cpp:1062
1488 #: ../../../src/MenuPowers.cpp:1158
12211489 msgid "Base Accuracy"
12221490 msgstr "Bazowa celność"
12231491
1224 #: ../../../src/MenuPowers.cpp:1082
1492 #: ../../../src/MenuPowers.cpp:1178
12251493 msgid "Base Critical Chance"
12261494 msgstr "Bazowa Szansa na Trafienie Krytyczne"
12271495
1228 #: ../../../src/MenuPowers.cpp:1090
1496 #: ../../../src/MenuPowers.cpp:1186
12291497 msgid "Ignores Absorbtion"
12301498 msgstr "Ignoruje Absorbcję"
12311499
1232 #: ../../../src/MenuPowers.cpp:1095
1500 #: ../../../src/MenuPowers.cpp:1191
12331501 msgid "Ignores Avoidance"
12341502 msgstr "Ignoruje szansę na unik"
12351503
1236 #: ../../../src/MenuPowers.cpp:1100
1504 #: ../../../src/MenuPowers.cpp:1196
12371505 #, c-format
12381506 msgid "%d%% Chance to crit slowed targets"
12391507 msgstr "%d%% Szansa na trafienie krytyczne spowolnionych celów"
12401508
1241 #: ../../../src/MenuPowers.cpp:1105
1509 #: ../../../src/MenuPowers.cpp:1201
12421510 #, c-format
12431511 msgid "Elemental Damage (%s)"
1244 msgstr ""
1245
1246 #: ../../../src/MenuPowers.cpp:1114
1512 msgstr "Obrażenia od żywiołu (%s)"
1513
1514 #: ../../../src/MenuPowers.cpp:1210
12471515 #, c-format
12481516 msgid "Requires a %s"
12491517 msgstr "Wymaga %s"
12501518
1251 #: ../../../src/MenuPowers.cpp:1151 ../../../src/MenuPowers.cpp:1154
1519 #: ../../../src/MenuPowers.cpp:1248 ../../../src/MenuPowers.cpp:1251
12521520 #, c-format
12531521 msgid "Requires Power: %s"
12541522 msgstr "Wymagana Moc: %s"
12551523
1256 #: ../../../src/MenuPowers.cpp:1163
1524 #: ../../../src/MenuPowers.cpp:1260
12571525 msgid "Click to Unlock (uses 1 Skill Point)"
12581526 msgstr "Kliknij by odblokować (potrzebuje 1 Punktu Umiejętności)"
12591527
1260 #: ../../../src/MenuPowers.cpp:1167 ../../../src/MenuPowers.cpp:1169
1528 #: ../../../src/MenuPowers.cpp:1264 ../../../src/MenuPowers.cpp:1266
12611529 msgid "Requires 1 Skill Point"
12621530 msgstr "Wymaga 1 Punktu Umiejętności"
12631531
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
1532 #: ../../../src/MenuPowers.cpp:1466
1533 #, c-format
1534 msgid "Available skill points: %d"
1535 msgstr ""
1536
1537 #: ../../../src/MenuPowers.cpp:1498
12751538 msgid "Next Level:"
12761539 msgstr "Następny poziom:"
12771540
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
1541 #: ../../../src/MenuStash.cpp:80 ../../../src/MenuStash.cpp:161
1542 msgid "Stash"
1543 msgstr "Skrytka"
1544
1545 #: ../../../src/MenuStash.cpp:174 ../../../src/MenuStash.cpp:188
1546 msgid "Private"
1547 msgstr ""
1548
1549 #: ../../../src/MenuStash.cpp:175
1550 msgid "Shared"
1551 msgstr ""
1552
1553 #: ../../../src/MenuStash.cpp:340
1554 msgid "This item can not be stored in the stash."
1555 msgstr "Ten przedmiot nie może zostać umieszczony w skrytce."
1556
1557 #: ../../../src/MenuStash.cpp:345
1558 msgid "This item can not be stored in the private stash."
1559 msgstr "Ten przedmiot nie może zostać umieszczony w prywatnej skrytce."
1560
1561 #: ../../../src/MenuStash.cpp:350
1562 msgid "This item can not be stored in the shared stash."
1563 msgstr "Ten przedmiot nie może zostać umieszczony we współdzielonej skrytce."
1564
1565 #: ../../../src/MenuStash.cpp:360
12871566 msgid "Stash is full."
12881567 msgstr "Skrytka jest pełna."
12891568
1290 #: ../../../src/MenuTalker.cpp:454
1569 #: ../../../src/MenuStash.cpp:414
1570 #, c-format
1571 msgid "Can not store item in stash: %s"
1572 msgstr "Nie można umieścić przedmiotu w skrytce: %s"
1573
1574 #: ../../../src/MenuTalker.cpp:448
1575 #, c-format
1576 msgid "<dialog node %d>"
1577 msgstr "<wierzchołek dialogu %d>"
1578
1579 #: ../../../src/MenuTalker.cpp:456
12911580 msgid "Trade"
12921581 msgstr "Handel"
12931582
1294 #: ../../../src/MenuVendor.cpp:58
1583 #: ../../../src/MenuVendor.cpp:60
12951584 msgid "Buyback"
12961585 msgstr "Odkup"
12971586
1298 #: ../../../src/MenuVendor.cpp:279
1587 #: ../../../src/MenuVendor.cpp:283
12991588 msgid "Vendor"
13001589 msgstr "Sprzedawca"
13011590
1302 #: ../../../src/PowerManager.cpp:1136
1591 #: ../../../src/PowerManager.cpp:1204
13031592 #, c-format
13041593 msgid "+%d Shield"
13051594 msgstr "+%d Osłony"
13061595
1307 #: ../../../src/PowerManager.cpp:1392
1596 #: ../../../src/PowerManager.cpp:1461
13081597 msgid "You are already transformed, untransform first."
13091598 msgstr "Już jesteś po transformacji, wpierw cofnij transformację."
13101599
1311 #: ../../../src/PowerManager.cpp:1404
1600 #: ../../../src/PowerManager.cpp:1473
13121601 msgid "Could not untransform at this position."
13131602 msgstr "Nie można cofnąć transformacji w tym miejscu."
13141603
13151604 #: ../../../src/QuestLog.cpp:234
13161605 msgid "Completed Quests"
1317 msgstr ""
1318
1319 #: ../../../src/SaveLoad.cpp:243 ../../../src/SaveLoad.cpp:244
1606 msgstr "Ukończone zadania"
1607
1608 #: ../../../src/SaveLoad.cpp:250 ../../../src/SaveLoad.cpp:251
13201609 msgid "Game saved."
13211610 msgstr "Gra zapisana."
13221611
1323 #: ../../../src/SDLInputState.cpp:582
1612 #: ../../../src/SDLInputState.cpp:645
1613 msgid "BkSp"
1614 msgstr ""
1615
1616 #: ../../../src/SDLInputState.cpp:646
1617 msgid "Caps"
1618 msgstr ""
1619
1620 #: ../../../src/SDLInputState.cpp:647
1621 msgid "Del"
1622 msgstr ""
1623
1624 #: ../../../src/SDLInputState.cpp:649 ../../../src/SDLInputState.cpp:679
1625 msgid "End"
1626 msgstr "End"
1627
1628 #: ../../../src/SDLInputState.cpp:650
1629 msgid "Esc"
1630 msgstr ""
1631
1632 #: ../../../src/SDLInputState.cpp:651 ../../../src/SDLInputState.cpp:681
1633 msgid "Home"
1634 msgstr "Home"
1635
1636 #: ../../../src/SDLInputState.cpp:652
1637 msgid "Ins"
1638 msgstr ""
1639
1640 #: ../../../src/SDLInputState.cpp:653
1641 msgid "LAlt"
1642 msgstr ""
1643
1644 #: ../../../src/SDLInputState.cpp:654
1645 msgid "LCtrl"
1646 msgstr ""
1647
1648 #: ../../../src/SDLInputState.cpp:656
1649 msgid "LShft"
1650 msgstr ""
1651
1652 #: ../../../src/SDLInputState.cpp:657
1653 msgid "Num"
1654 msgstr ""
1655
1656 #: ../../../src/SDLInputState.cpp:658
1657 msgid "PgDn"
1658 msgstr ""
1659
1660 #: ../../../src/SDLInputState.cpp:659
1661 msgid "PgUp"
1662 msgstr ""
1663
1664 #: ../../../src/SDLInputState.cpp:660 ../../../src/SDLInputState.cpp:690
1665 msgid "Pause"
1666 msgstr "Pause"
1667
1668 #: ../../../src/SDLInputState.cpp:661
1669 msgid "Print"
1670 msgstr ""
1671
1672 #: ../../../src/SDLInputState.cpp:662
1673 msgid "RAlt"
1674 msgstr ""
1675
1676 #: ../../../src/SDLInputState.cpp:663
1677 msgid "RCtrl"
1678 msgstr ""
1679
1680 #: ../../../src/SDLInputState.cpp:664
1681 msgid "Ret"
1682 msgstr ""
1683
1684 #: ../../../src/SDLInputState.cpp:666
1685 msgid "RShft"
1686 msgstr ""
1687
1688 #: ../../../src/SDLInputState.cpp:667
1689 msgid "SLock"
1690 msgstr ""
1691
1692 #: ../../../src/SDLInputState.cpp:668
1693 msgid "Spc"
1694 msgstr ""
1695
1696 #: ../../../src/SDLInputState.cpp:669 ../../../src/SDLInputState.cpp:699
1697 msgid "Tab"
1698 msgstr "Tab"
1699
1700 #: ../../../src/SDLInputState.cpp:675
13241701 msgid "Backspace"
13251702 msgstr "Backspace"
13261703
1327 #: ../../../src/SDLInputState.cpp:583
1704 #: ../../../src/SDLInputState.cpp:676
13281705 msgid "CapsLock"
13291706 msgstr "CapsLock"
13301707
1331 #: ../../../src/SDLInputState.cpp:586
1332 msgid "End"
1333 msgstr "End"
1334
1335 #: ../../../src/SDLInputState.cpp:587
1708 #: ../../../src/SDLInputState.cpp:680
13361709 msgid "Escape"
13371710 msgstr "Escape"
13381711
1339 #: ../../../src/SDLInputState.cpp:588
1340 msgid "Home"
1341 msgstr "Home"
1342
1343 #: ../../../src/SDLInputState.cpp:589
1712 #: ../../../src/SDLInputState.cpp:682
13441713 msgid "Insert"
13451714 msgstr "Insert"
13461715
1347 #: ../../../src/SDLInputState.cpp:590
1716 #: ../../../src/SDLInputState.cpp:683
13481717 msgid "Left Alt"
13491718 msgstr "Lewy Alt"
13501719
1351 #: ../../../src/SDLInputState.cpp:591
1720 #: ../../../src/SDLInputState.cpp:684
13521721 msgid "Left Ctrl"
13531722 msgstr "Lewy Ctrl"
13541723
1355 #: ../../../src/SDLInputState.cpp:593
1724 #: ../../../src/SDLInputState.cpp:686
13561725 msgid "Left Shift"
13571726 msgstr "Lewy Shift"
13581727
1359 #: ../../../src/SDLInputState.cpp:594
1728 #: ../../../src/SDLInputState.cpp:687
13601729 msgid "NumLock"
13611730 msgstr "NumLock"
13621731
1363 #: ../../../src/SDLInputState.cpp:595
1732 #: ../../../src/SDLInputState.cpp:688
13641733 msgid "PageDown"
13651734 msgstr "PageDown"
13661735
1367 #: ../../../src/SDLInputState.cpp:596
1736 #: ../../../src/SDLInputState.cpp:689
13681737 msgid "PageUp"
13691738 msgstr "PageUp"
13701739
1371 #: ../../../src/SDLInputState.cpp:597
1372 msgid "Pause"
1373 msgstr "Pause"
1374
1375 #: ../../../src/SDLInputState.cpp:598
1740 #: ../../../src/SDLInputState.cpp:691
13761741 msgid "PrintScreen"
13771742 msgstr "PrintScreen"
13781743
1379 #: ../../../src/SDLInputState.cpp:599
1744 #: ../../../src/SDLInputState.cpp:692
13801745 msgid "Right Alt"
13811746 msgstr "Prawy Alt"
13821747
1383 #: ../../../src/SDLInputState.cpp:600
1748 #: ../../../src/SDLInputState.cpp:693
13841749 msgid "Right Ctrl"
13851750 msgstr "Prawy Ctrl"
13861751
1387 #: ../../../src/SDLInputState.cpp:601
1752 #: ../../../src/SDLInputState.cpp:694
13881753 msgid "Return"
13891754 msgstr "Return"
13901755
1391 #: ../../../src/SDLInputState.cpp:603
1756 #: ../../../src/SDLInputState.cpp:696
13921757 msgid "Right Shift"
13931758 msgstr "Prawy Shift"
13941759
1395 #: ../../../src/SDLInputState.cpp:604
1760 #: ../../../src/SDLInputState.cpp:697
13961761 msgid "ScrollLock"
13971762 msgstr "ScrollLock"
13981763
1399 #: ../../../src/SDLInputState.cpp:605
1764 #: ../../../src/SDLInputState.cpp:698
14001765 msgid "Space"
14011766 msgstr "Space"
14021767
1403 #: ../../../src/SDLInputState.cpp:606
1404 msgid "Tab"
1405 msgstr "Tab"
1406
1407 #: ../../../src/SDLInputState.cpp:620
1768 #: ../../../src/SDLInputState.cpp:712
1769 #, c-format
1770 msgid "M%d"
1771 msgstr ""
1772
1773 #: ../../../src/SDLInputState.cpp:718
14081774 #, c-format
14091775 msgid "Mouse %d"
14101776 msgstr "Przycisk myszy %d"
14111777
1412 #: ../../../src/SDLInputState.cpp:628
1778 #: ../../../src/SDLInputState.cpp:728
1779 #, c-format
1780 msgid "JX%d-"
1781 msgstr ""
1782
1783 #: ../../../src/SDLInputState.cpp:730
14131784 #, c-format
14141785 msgid "Axis %d -"
14151786 msgstr "Oś %d -"
14161787
1417 #: ../../../src/SDLInputState.cpp:630
1788 #: ../../../src/SDLInputState.cpp:734
1789 #, c-format
1790 msgid "JX%d+"
1791 msgstr ""
1792
1793 #: ../../../src/SDLInputState.cpp:736
14181794 #, c-format
14191795 msgid "Axis %d +"
14201796 msgstr "Oś %d +"
14211797
1422 #: ../../../src/SDLInputState.cpp:633
1798 #: ../../../src/SDLInputState.cpp:741
1799 #, c-format
1800 msgid "JB%d"
1801 msgstr ""
1802
1803 #: ../../../src/SDLInputState.cpp:743
14231804 #, c-format
14241805 msgid "Button %d"
14251806 msgstr "Klawisz %d"
14261807
1427 #: ../../../src/SDLInputState.cpp:637
1428 msgid "(none)"
1429 msgstr "(brak)"
1430
1431 #: ../../../src/SDLInputState.cpp:677
1808 #: ../../../src/SDLInputState.cpp:789
14321809 msgid "Touch control D-Pad"
1433 msgstr ""
1434
1435 #: ../../../src/SDLInputState.cpp:701
1810 msgstr "Dotykowy krzyżak ruchu"
1811
1812 #: ../../../src/SDLInputState.cpp:812
14361813 msgid "Touch control buttons"
1437 msgstr ""
1438
1439 #: ../../../src/SDLInputState.cpp:716
1814 msgstr "Dotykowe przyciski akcji"
1815
1816 #: ../../../src/SDLInputState.cpp:826
14401817 msgid "Tap"
14411818 msgstr "Tapnięcie"
14421819
1443 #: ../../../src/SDLInputState.cpp:760 ../../../src/SDLInputState.cpp:764
1444 #: ../../../src/SDLInputState.cpp:768
1820 #: ../../../src/SDLInputState.cpp:878 ../../../src/SDLInputState.cpp:880
1821 #, c-format
1822 msgid "Can not bind: %s"
1823 msgstr "Nie można przypisać: %s"
1824
1825 #: ../../../src/SDLInputState.cpp:892 ../../../src/SDLInputState.cpp:896
1826 #: ../../../src/SDLInputState.cpp:900
14451827 #, c-format
14461828 msgid "'%s' is no longer bound to:"
14471829 msgstr "'%s' już nie jest przypisany do:"
14521834
14531835 #: ../../../src/Stats.cpp:39
14541836 msgid "Total amount of HP."
1455 msgstr ""
1837 msgstr "Suma PŻ."
14561838
14571839 #: ../../../src/Stats.cpp:43
14581840 msgid "HP Regen"
14681850
14691851 #: ../../../src/Stats.cpp:49
14701852 msgid "Total amount of MP."
1471 msgstr ""
1853 msgstr "Suma PM."
14721854
14731855 #: ../../../src/Stats.cpp:53
14741856 msgid "MP Regen"
14871869 "Accuracy rating. The enemy's Avoidance rating is subtracted from this value "
14881870 "to calculate your likeliness to land a direct hit."
14891871 msgstr ""
1872 "Wartość celności. Wartość Uniku wroga jest odejmowana od tej wartości, aby "
1873 "wyliczyć prawdopodobieństwo wyprowadzenia celnego ciosu."
14901874
14911875 #: ../../../src/Stats.cpp:63
14921876 msgid "Avoidance"
14971881 "Avoidance rating. This value is subtracted from the enemy's Accuracy rating "
14981882 "to calculate their likeliness to land a direct hit."
14991883 msgstr ""
1884 "Wartość uniku. Ta wartość jest odejmowana od wartości Celności wroga, aby "
1885 "wyliczyć prawdopodobieństwo otrzymania od niego celnego ciosu."
15001886
15011887 #: ../../../src/Stats.cpp:68
15021888 msgid "Absorb Min"
15041890
15051891 #: ../../../src/Stats.cpp:69 ../../../src/Stats.cpp:74
15061892 msgid "Reduces the amount of damage taken."
1507 msgstr ""
1893 msgstr "Zmniejsza otrzymywane obrażenia o podaną liczbę."
15081894
15091895 #: ../../../src/Stats.cpp:73
15101896 msgid "Absorb Max"
15161902
15171903 #: ../../../src/Stats.cpp:79
15181904 msgid "Chance for an attack to do extra damage."
1519 msgstr ""
1905 msgstr "Szansa na zadanie dodatkowych obrażeń podczas ataku."
15201906
15211907 #: ../../../src/Stats.cpp:83
15221908 msgid "Bonus XP"
16001986 msgid "Base MP"
16011987 msgstr "Bazowe PM"
16021988
1603 #: ../../../src/Utils.cpp:346
1989 #: ../../../src/Utils.cpp:365
16041990 msgid "k"
16051991 msgstr "k"
16061992
1607 #: ../../../src/Utils.cpp:580
1993 #: ../../../src/Utils.cpp:635
16081994 #, c-format
16091995 msgid "%s second"
16101996 msgstr "%s sekunda"
16111997
1612 #: ../../../src/Utils.cpp:583
1998 #: ../../../src/Utils.cpp:638
16131999 #, c-format
16142000 msgid "%s seconds"
16152001 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-07-02 13:26-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:1220
122 #: ../../../src/StatBlock.cpp:926 ../../../src/StatBlock.cpp:932
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:937
128 #: ../../../src/StatBlock.cpp:943
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:704
170 msgid "Entering game world..."
171 msgstr ""
172
173 #: ../../../src/GameStateLoad.cpp:707
174 msgid "Loading saved game..."
175 msgstr ""
176
177 #: ../../../src/GameStateLoad.cpp:740
178 msgid "Invalid save"
179 msgstr ""
180
181 #: ../../../src/GameStateLoad.cpp:764 ../../../src/ItemManager.cpp:745
182 #: ../../../src/MenuPowers.cpp:882 ../../../src/MenuPowers.cpp:1241
183 #: ../../../src/MenuPowers.cpp:1653
184 #, c-format
185 msgid "Level %d"
186 msgstr ""
187
188 #: ../../../src/GameStateNew.cpp:66 ../../../src/InputState.cpp:416
189 #: ../../../src/MenuConfig.cpp:254
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:670
243 #: ../../../src/SDLInputState.cpp:700
244 msgid "Up"
245 msgstr ""
246
247 #: ../../../src/InputState.cpp:419 ../../../src/MenuMovementType.cpp:125
248 #: ../../../src/MenuMovementType.cpp:134 ../../../src/SDLInputState.cpp:648
249 #: ../../../src/SDLInputState.cpp:678
250 msgid "Down"
251 msgstr ""
252
253 #: ../../../src/InputState.cpp:420 ../../../src/MenuMovementType.cpp:124
254 #: ../../../src/MenuMovementType.cpp:133 ../../../src/SDLInputState.cpp:655
255 #: ../../../src/SDLInputState.cpp:685
256 msgid "Left"
257 msgstr ""
258
259 #: ../../../src/InputState.cpp:421 ../../../src/MenuMovementType.cpp:126
260 #: ../../../src/MenuMovementType.cpp:135 ../../../src/SDLInputState.cpp:665
261 #: ../../../src/SDLInputState.cpp:695
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:159
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:677
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:981
402 #, c-format
403 msgid "%d%% Speed"
404 msgstr ""
405
406 #: ../../../src/ItemManager.cpp:650 ../../../src/MenuPowers.cpp:984
407 #, c-format
408 msgid "%d%% Attack Speed"
409 msgstr ""
410
411 #: ../../../src/ItemManager.cpp:672 ../../../src/MenuCharacter.cpp:352
412 #: ../../../src/MenuPowers.cpp:953
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:1228
442 #: ../../../src/MenuPowers.cpp:1231
443 #, c-format
444 msgid "Requires Level %d"
445 msgstr ""
446
447 #: ../../../src/ItemManager.cpp:836 ../../../src/MenuPowers.cpp:1220
448 #: ../../../src/MenuPowers.cpp:1222
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:898
479 msgid "Set:"
480 msgstr ""
481
482 #: ../../../src/ItemManager.cpp:905
483 #, c-format
484 msgid "%d items:"
485 msgstr ""
486
487 #: ../../../src/ItemManager.cpp:920
488 #, c-format
489 msgid "Press [%s] to read"
490 msgstr ""
491
492 #: ../../../src/ItemManager.cpp:923
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:1256
569 msgid "Clear"
570 msgstr ""
571
572 #: ../../../src/MenuConfig.cpp:122 ../../../src/MenuConfig.cpp:1254
573 msgid "Assign:"
574 msgstr ""
575
576 #: ../../../src/MenuConfig.cpp:123 ../../../src/MenuConfig.cpp:253
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:252 ../../../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:256 ../../../src/MenuGameOver.cpp:72
589 msgid "Continue"
590 msgstr ""
591
592 #: ../../../src/MenuConfig.cpp:258
593 msgid "Save Game"
594 msgstr ""
595
596 #: ../../../src/MenuConfig.cpp:301 ../../../src/MenuConfig.cpp:352
597 msgid "Default"
598 msgstr ""
599
600 #: ../../../src/MenuConfig.cpp:301
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:302
607 msgid "Show all"
608 msgstr ""
609
610 #: ../../../src/MenuConfig.cpp:302
611 msgid ""
612 "Always show loot tooltips. Temporarily hide all loot tooltips with 'Alt'."
613 msgstr ""
614
615 #: ../../../src/MenuConfig.cpp:303 ../../../src/MenuConfig.cpp:308
616 msgid "Hidden"
617 msgstr ""
618
619 #: ../../../src/MenuConfig.cpp:303
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:306
626 msgid "Visible"
627 msgstr ""
628
629 #: ../../../src/MenuConfig.cpp:307
630 msgid "Visible (2x zoom)"
631 msgstr ""
632
633 #: ../../../src/MenuConfig.cpp:311
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:312
640 msgid "- Display a message"
641 msgstr ""
642
643 #: ../../../src/MenuConfig.cpp:313
644 msgid "- Play a sound"
645 msgstr ""
646
647 #: ../../../src/MenuConfig.cpp:314
648 msgid "- Change the cursor"
649 msgstr ""
650
651 #: ../../../src/MenuConfig.cpp:316
652 msgid "Disabled"
653 msgstr ""
654
655 #: ../../../src/MenuConfig.cpp:317
656 msgid "All"
657 msgstr ""
658
659 #: ../../../src/MenuConfig.cpp:318
660 msgid "Message & Cursor"
661 msgstr ""
662
663 #: ../../../src/MenuConfig.cpp:319
664 msgid "Message & Sound"
665 msgstr ""
666
667 #: ../../../src/MenuConfig.cpp:320
668 msgid "Sound & Cursor"
669 msgstr ""
670
671 #: ../../../src/MenuConfig.cpp:321
672 msgid "Message"
673 msgstr ""
674
675 #: ../../../src/MenuConfig.cpp:322
676 msgid "Cursor"
677 msgstr ""
678
679 #: ../../../src/MenuConfig.cpp:323
680 msgid "Sound"
681 msgstr ""
682
683 #: ../../../src/MenuConfig.cpp:329
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:347
690 msgid "The maximum frame rate that the game will be allowed to run at."
691 msgstr ""
692
693 #: ../../../src/MenuConfig.cpp:351
694 msgid ""
695 "The render size refers to the height in pixels of the surface used to draw "
696 "the game. Mods define the allowed render sizes, but this option allows "
697 "overriding the maximum size."
698 msgstr ""
699
700 #: ../../../src/MenuConfig.cpp:374 ../../../src/MenuConfig.cpp:1679
701 #: ../../../src/MenuGameOver.cpp:116
702 msgid "Exit"
703 msgstr ""
704
705 #: ../../../src/MenuConfig.cpp:375
706 msgid "Video"
707 msgstr ""
708
709 #: ../../../src/MenuConfig.cpp:376
148710 msgid "Audio"
149711 msgstr ""
150712
151 #: ../../../src/GameStateConfigBase.cpp:161
152 #: ../../../src/GameStateConfigDesktop.cpp:131
713 #: ../../../src/MenuConfig.cpp:377
153714 msgid "Interface"
154715 msgstr ""
155716
156 #: ../../../src/GameStateConfigBase.cpp:162
157 #: ../../../src/GameStateConfigDesktop.cpp:134
717 #: ../../../src/MenuConfig.cpp:378
718 msgid "Input"
719 msgstr ""
720
721 #: ../../../src/MenuConfig.cpp:379
722 msgid "Keybindings"
723 msgstr ""
724
725 #: ../../../src/MenuConfig.cpp:380
158726 msgid "Mods"
159727 msgstr ""
160728
161 #: ../../../src/GameStateConfigBase.cpp:249 ../../../src/MenuExit.cpp:72
729 #: ../../../src/MenuConfig.cpp:392
730 msgid "Paused"
731 msgstr ""
732
733 #: ../../../src/MenuConfig.cpp:395
734 msgid "Time Played"
735 msgstr ""
736
737 #: ../../../src/MenuConfig.cpp:401
738 msgid "Renderer"
739 msgstr ""
740
741 #: ../../../src/MenuConfig.cpp:402
742 msgid "Full Screen Mode"
743 msgstr ""
744
745 #: ../../../src/MenuConfig.cpp:403
746 msgid "Hardware surfaces"
747 msgstr ""
748
749 #: ../../../src/MenuConfig.cpp:404
750 msgid "V-Sync"
751 msgstr ""
752
753 #: ../../../src/MenuConfig.cpp:405
754 msgid "Texture Filtering"
755 msgstr ""
756
757 #: ../../../src/MenuConfig.cpp:406
758 msgid "DPI scaling"
759 msgstr ""
760
761 #: ../../../src/MenuConfig.cpp:407
762 msgid "Parallax Layers"
763 msgstr ""
764
765 #: ../../../src/MenuConfig.cpp:408
766 msgid "Allow changing gamma"
767 msgstr ""
768
769 #: ../../../src/MenuConfig.cpp:409
770 msgid "Gamma"
771 msgstr ""
772
773 #: ../../../src/MenuConfig.cpp:410
774 msgid "Maximum Render Size"
775 msgstr ""
776
777 #: ../../../src/MenuConfig.cpp:411
778 msgid "Frame Limit"
779 msgstr ""
780
781 #: ../../../src/MenuConfig.cpp:413
782 msgid "Sound Volume"
783 msgstr ""
784
785 #: ../../../src/MenuConfig.cpp:414
162786 msgid "Music Volume"
163787 msgstr ""
164788
165 #: ../../../src/GameStateConfigBase.cpp:253 ../../../src/MenuExit.cpp:77
166 msgid "Sound Volume"
167 msgstr ""
168
169 #: ../../../src/GameStateConfigBase.cpp:257
789 #: ../../../src/MenuConfig.cpp:416
170790 msgid "Language"
171791 msgstr ""
172792
173 #: ../../../src/GameStateConfigBase.cpp:266
793 #: ../../../src/MenuConfig.cpp:417
174794 msgid "Show FPS"
175795 msgstr ""
176796
177 #: ../../../src/GameStateConfigBase.cpp:270
797 #: ../../../src/MenuConfig.cpp:418
798 msgid "Hardware mouse cursor"
799 msgstr ""
800
801 #: ../../../src/MenuConfig.cpp:419
178802 msgid "Colorblind Mode"
179803 msgstr ""
180804
181 #: ../../../src/GameStateConfigBase.cpp:274
182 msgid "Hardware mouse cursor"
183 msgstr ""
184
185 #: ../../../src/GameStateConfigBase.cpp:278
805 #: ../../../src/MenuConfig.cpp:420
186806 msgid "Developer Mode"
187807 msgstr ""
188808
189 #: ../../../src/GameStateConfigBase.cpp:282
809 #: ../../../src/MenuConfig.cpp:421
190810 msgid "Subtitles"
191811 msgstr ""
192812
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
813 #: ../../../src/MenuConfig.cpp:422
814 msgid "Loot tooltip visibility"
815 msgstr ""
816
817 #: ../../../src/MenuConfig.cpp:423
818 msgid "Mini-map mode"
819 msgstr ""
820
821 #: ../../../src/MenuConfig.cpp:424
822 msgid "Always show stat bar labels"
823 msgstr ""
824
825 #: ../../../src/MenuConfig.cpp:425
826 msgid "Allow stat bar auto-hiding"
827 msgstr ""
828
829 #: ../../../src/MenuConfig.cpp:426
830 msgid "Show combat text"
831 msgstr ""
832
833 #: ../../../src/MenuConfig.cpp:427
834 msgid "Automatically equip items"
835 msgstr ""
836
837 #: ../../../src/MenuConfig.cpp:428
838 msgid "Show hidden entity markers"
839 msgstr ""
840
841 #: ../../../src/MenuConfig.cpp:429
842 msgid "Low health notification"
843 msgstr ""
844
845 #: ../../../src/MenuConfig.cpp:430
846 msgid "Low health threshold"
847 msgstr ""
848
849 #: ../../../src/MenuConfig.cpp:431
850 msgid "Show item comparison tooltips"
851 msgstr ""
852
853 #: ../../../src/MenuConfig.cpp:434 ../../../src/MenuMovementType.cpp:94
854 #: ../../../src/MenuMovementType.cpp:131
855 msgid "Joystick"
856 msgstr ""
857
858 #: ../../../src/MenuConfig.cpp:435
859 msgid "Move hero using mouse"
860 msgstr ""
861
862 #: ../../../src/MenuConfig.cpp:436
863 msgid "Mouse aim"
864 msgstr ""
865
866 #: ../../../src/MenuConfig.cpp:437
867 msgid "Do not use mouse"
868 msgstr ""
869
870 #: ../../../src/MenuConfig.cpp:438
871 msgid "Swap mouse movement button"
872 msgstr ""
873
874 #: ../../../src/MenuConfig.cpp:439
875 msgid "Attack with mouse movement"
876 msgstr ""
877
878 #: ../../../src/MenuConfig.cpp:440
879 msgid "Joystick Deadzone"
880 msgstr ""
881
882 #: ../../../src/MenuConfig.cpp:441
883 msgid "Touch Controls"
884 msgstr ""
885
886 #: ../../../src/MenuConfig.cpp:442
887 msgid "Touch Gamepad Scaling"
888 msgstr ""
889
890 #: ../../../src/MenuConfig.cpp:452
891 #, c-format
892 msgid "Primary binding: %s"
893 msgstr ""
894
895 #: ../../../src/MenuConfig.cpp:453
896 #, c-format
897 msgid "Alternate binding: %s"
898 msgstr ""
899
900 #: ../../../src/MenuConfig.cpp:454
901 #, c-format
902 msgid "Joystick binding: %s"
903 msgstr ""
904
905 #: ../../../src/MenuConfig.cpp:556
248906 msgid ""
249907 "Will try to store surfaces in video memory versus system memory. The effect "
250908 "this has on performance depends on the renderer."
251909 msgstr ""
252910
253 #: ../../../src/GameStateConfigDesktop.cpp:189
911 #: ../../../src/MenuConfig.cpp:557
254912 msgid ""
255913 "Prevents screen tearing. Disable if you experience \"stuttering\" in "
256914 "windowed mode or input lag."
257915 msgstr ""
258916
259 #: ../../../src/GameStateConfigDesktop.cpp:190
917 #: ../../../src/MenuConfig.cpp:558
260918 msgid ""
261919 "When enabled, this uses the screen DPI in addition to the window dimensions "
262920 "to scale the rendering resolution. Otherwise, only the window dimensions are "
263921 "used."
264922 msgstr ""
265923
266 #: ../../../src/GameStateConfigDesktop.cpp:191
924 #: ../../../src/MenuConfig.cpp:559
267925 msgid ""
268926 "This enables parallax (non-tile) layers. Disabling this setting can improve "
269927 "performance in some cases."
270928 msgstr ""
271929
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
930 #: ../../../src/MenuConfig.cpp:560
931 msgid ""
932 "Enables the below setting that controls the screen gamma level. The behavior "
933 "of the gamma setting can vary between platforms."
934 msgstr ""
935
936 #: ../../../src/MenuConfig.cpp:561
937 msgid ""
938 "Provides additional text for information that is primarily conveyed through "
939 "color."
940 msgstr ""
941
942 #: ../../../src/MenuConfig.cpp:562
943 msgid ""
944 "Some mods will automatically hide the stat bars when they are inactive. "
945 "Disabling this option will keep them displayed at all times."
946 msgstr ""
947
948 #: ../../../src/MenuConfig.cpp:563
949 msgid ""
950 "When enabled, empty equipment slots will be filled with applicable items "
951 "when they are obtained."
952 msgstr ""
953
954 #: ../../../src/MenuConfig.cpp:564
955 msgid ""
956 "Shows a marker above enemies, allies, and the player when they are obscured "
957 "by tall objects."
958 msgstr ""
959
960 #: ../../../src/MenuConfig.cpp:565
961 msgid ""
962 "When enabled, tooltips for equipped items of the same type are shown next to "
963 "standard item tooltips."
964 msgstr ""
965
966 #: ../../../src/MenuConfig.cpp:566
967 msgid ""
968 "This allows the game to be controlled entirely with the keyboard (or "
969 "joystick)."
970 msgstr ""
971
972 #: ../../../src/MenuConfig.cpp:567
973 msgid ""
974 "When 'Move hero using mouse' is enabled, this setting controls if 'Main1' or "
975 "'Main2' is used to move the hero. If enabled, 'Main2' will move the hero "
976 "instead of 'Main1'."
977 msgstr ""
978
979 #: ../../../src/MenuConfig.cpp:568
980 msgid ""
981 "When 'Move hero using mouse' is enabled, this setting controls if the Power "
982 "assigned to the movement button can be used by targeting an enemy. If this "
983 "setting is disabled, it is required to use 'Shift' to access the Power "
984 "assigned to the movement button."
985 msgstr ""
986
987 #: ../../../src/MenuConfig.cpp:569
988 msgid ""
989 "The player's attacks will be aimed in the direction of the mouse cursor when "
990 "this is enabled."
991 msgstr ""
992
993 #: ../../../src/MenuConfig.cpp:570
994 msgid ""
995 "When enabled, a virtual gamepad will be added in-game. Other interactions, "
996 "such as drag-and-drop behavior, are also altered to better suit touch input."
997 msgstr ""
998
999 #: ../../../src/MenuConfig.cpp:621
1000 msgid "Active Mods"
1001 msgstr ""
1002
1003 #: ../../../src/MenuConfig.cpp:630
1004 msgid "Available Mods"
1005 msgstr ""
1006
1007 #: ../../../src/MenuConfig.cpp:649
1008 msgid "<< Disable"
1009 msgstr ""
1010
1011 #: ../../../src/MenuConfig.cpp:655
1012 msgid "Enable >>"
1013 msgstr ""
1014
1015 #: ../../../src/MenuConfig.cpp:1536
1016 msgid "Version:"
1017 msgstr ""
1018
1019 #: ../../../src/MenuConfig.cpp:1541
1020 msgid "Game:"
1021 msgstr ""
1022
1023 #: ../../../src/MenuConfig.cpp:1546
1024 msgid "Engine version:"
1025 msgstr ""
1026
1027 #: ../../../src/MenuConfig.cpp:1554
1028 msgid "Requires mods:"
1029 msgstr ""
1030
1031 #: ../../../src/MenuConfig.cpp:1662 ../../../src/SDLInputState.cpp:750
1032 msgid "(none)"
1033 msgstr ""
1034
1035 #: ../../../src/MenuConfig.cpp:1679 ../../../src/MenuGameOver.cpp:73
1036 msgid "Save & Exit"
1037 msgstr ""
1038
1039 #: ../../../src/MenuDevConsole.cpp:65
8151040 msgid "Execute"
8161041 msgstr ""
8171042
818 #: ../../../src/MenuDevConsole.cpp:101 ../../../src/MenuDevConsole.cpp:151
1043 #: ../../../src/MenuDevConsole.cpp:103 ../../../src/MenuDevConsole.cpp:153
8191044 msgid "Developer Console"
8201045 msgstr ""
8211046
822 #: ../../../src/MenuDevConsole.cpp:141
1047 #: ../../../src/MenuDevConsole.cpp:143
8231048 #, c-format
8241049 msgid "Use '%s' to inspect with the cursor."
8251050 msgstr ""
8261051
827 #: ../../../src/MenuDevConsole.cpp:146
1052 #: ../../../src/MenuDevConsole.cpp:148
8281053 msgid "Arguments with spaces should be enclosed with double quotes. Example:"
8291054 msgstr ""
8301055
831 #: ../../../src/MenuDevConsole.cpp:147
1056 #: ../../../src/MenuDevConsole.cpp:149
8321057 msgid "Type 'help' to get a list of commands."
8331058 msgstr ""
8341059
835 #: ../../../src/MenuDevConsole.cpp:209 ../../../src/MenuDevConsole.cpp:213
1060 #: ../../../src/MenuDevConsole.cpp:211 ../../../src/MenuDevConsole.cpp:215
8361061 msgid "px"
8371062 msgstr ""
8381063
839 #: ../../../src/MenuDevConsole.cpp:224
1064 #: ../../../src/MenuDevConsole.cpp:226
8401065 msgid "Distance"
8411066 msgstr ""
8421067
843 #: ../../../src/MenuDevConsole.cpp:239 ../../../src/MenuDevConsole.cpp:286
1068 #: ../../../src/MenuDevConsole.cpp:241 ../../../src/MenuDevConsole.cpp:289
1069 #: ../../../src/MenuDevConsole.cpp:303
8441070 msgid "Entity"
8451071 msgstr ""
8461072
847 #: ../../../src/MenuDevConsole.cpp:261 ../../../src/MenuDevConsole.cpp:268
1073 #: ../../../src/MenuDevConsole.cpp:263 ../../../src/MenuDevConsole.cpp:270
8481074 msgid "none"
8491075 msgstr ""
8501076
851 #: ../../../src/MenuDevConsole.cpp:262 ../../../src/MenuDevConsole.cpp:264
1077 #: ../../../src/MenuDevConsole.cpp:264 ../../../src/MenuDevConsole.cpp:266
8521078 msgid "wall"
8531079 msgstr ""
8541080
855 #: ../../../src/MenuDevConsole.cpp:263 ../../../src/MenuDevConsole.cpp:265
1081 #: ../../../src/MenuDevConsole.cpp:265 ../../../src/MenuDevConsole.cpp:267
8561082 msgid "short wall / pit"
8571083 msgstr ""
8581084
859 #: ../../../src/MenuDevConsole.cpp:266
1085 #: ../../../src/MenuDevConsole.cpp:268
8601086 msgid "entity"
8611087 msgstr ""
8621088
863 #: ../../../src/MenuDevConsole.cpp:267
1089 #: ../../../src/MenuDevConsole.cpp:269
8641090 msgid "entity, ally"
8651091 msgstr ""
8661092
867 #: ../../../src/MenuDevConsole.cpp:274
1093 #: ../../../src/MenuDevConsole.cpp:276
8681094 msgid "Tile"
8691095 msgstr ""
8701096
871 #: ../../../src/MenuDevConsole.cpp:360
1097 #: ../../../src/MenuDevConsole.cpp:377
8721098 msgid "adds a power to the action bar"
8731099 msgstr ""
8741100
875 #: ../../../src/MenuDevConsole.cpp:361
1101 #: ../../../src/MenuDevConsole.cpp:378
8761102 msgid "turns on/off the display of the FPS counter"
8771103 msgstr ""
8781104
879 #: ../../../src/MenuDevConsole.cpp:362
1105 #: ../../../src/MenuDevConsole.cpp:379
8801106 msgid "turns on/off all of the HUD elements"
8811107 msgstr ""
8821108
883 #: ../../../src/MenuDevConsole.cpp:363
1109 #: ../../../src/MenuDevConsole.cpp:380
8841110 msgid "turns on/off the developer hud"
8851111 msgstr ""
8861112
887 #: ../../../src/MenuDevConsole.cpp:364
1113 #: ../../../src/MenuDevConsole.cpp:381
8881114 msgid ""
8891115 "Prints a list of powers that match a search term. No search term will list "
8901116 "all items"
8911117 msgstr ""
8921118
893 #: ../../../src/MenuDevConsole.cpp:365
1119 #: ../../../src/MenuDevConsole.cpp:382
8941120 msgid "Prints out all the map filenames located in the \"maps/\" directory."
8951121 msgstr ""
8961122
897 #: ../../../src/MenuDevConsole.cpp:366
1123 #: ../../../src/MenuDevConsole.cpp:383
8981124 msgid ""
8991125 "Prints out the active campaign statuses that match a search term. No search "
9001126 "term will list all active statuses"
9011127 msgstr ""
9021128
903 #: ../../../src/MenuDevConsole.cpp:367
1129 #: ../../../src/MenuDevConsole.cpp:384
9041130 msgid ""
9051131 "Prints a list of items that match a search term. No search term will list "
9061132 "all items"
9071133 msgstr ""
9081134
909 #: ../../../src/MenuDevConsole.cpp:368
1135 #: ../../../src/MenuDevConsole.cpp:385
9101136 msgid "parses a series of event components and executes them as a single event"
9111137 msgstr ""
9121138
913 #: ../../../src/MenuDevConsole.cpp:369
1139 #: ../../../src/MenuDevConsole.cpp:386
9141140 msgid "clears the command history"
9151141 msgstr ""
9161142
917 #: ../../../src/MenuDevConsole.cpp:370
1143 #: ../../../src/MenuDevConsole.cpp:387
9181144 msgid "displays this text"
9191145 msgstr ""
9201146
921 #: ../../../src/MenuDevConsole.cpp:377
1147 #: ../../../src/MenuDevConsole.cpp:394
9221148 msgid "Toggled the developer hud"
9231149 msgstr ""
9241150
925 #: ../../../src/MenuDevConsole.cpp:381
1151 #: ../../../src/MenuDevConsole.cpp:398
9261152 msgid "Toggled the hud"
9271153 msgstr ""
9281154
929 #: ../../../src/MenuDevConsole.cpp:385
1155 #: ../../../src/MenuDevConsole.cpp:402
9301156 msgid "Toggled the FPS counter"
9311157 msgstr ""
9321158
933 #: ../../../src/MenuDevConsole.cpp:534
1159 #: ../../../src/MenuDevConsole.cpp:552
9341160 msgid "ERROR: Incorrect number of arguments"
9351161 msgstr ""
9361162
937 #: ../../../src/MenuDevConsole.cpp:536 ../../../src/MenuDevConsole.cpp:564
1163 #: ../../../src/MenuDevConsole.cpp:554 ../../../src/MenuDevConsole.cpp:582
9381164 msgid "HINT:"
9391165 msgstr ""
9401166
941 #: ../../../src/MenuDevConsole.cpp:536
1167 #: ../../../src/MenuDevConsole.cpp:554
9421168 msgid "<id>"
9431169 msgstr ""
9441170
945 #: ../../../src/MenuDevConsole.cpp:552
1171 #: ../../../src/MenuDevConsole.cpp:570
9461172 #, c-format
9471173 msgid "ERROR: '%s' is not a valid event key"
9481174 msgstr ""
9491175
950 #: ../../../src/MenuDevConsole.cpp:562
1176 #: ../../../src/MenuDevConsole.cpp:580
9511177 msgid "ERROR: Too few arguments"
9521178 msgstr ""
9531179
954 #: ../../../src/MenuDevConsole.cpp:564
1180 #: ../../../src/MenuDevConsole.cpp:582
9551181 msgid "<key>=<val> <key>=<val> ..."
9561182 msgstr ""
9571183
958 #: ../../../src/MenuDevConsole.cpp:569
1184 #: ../../../src/MenuDevConsole.cpp:587
9591185 msgid "ERROR: Unknown command"
9601186 msgstr ""
9611187
962 #: ../../../src/MenuDevConsole.cpp:571
1188 #: ../../../src/MenuDevConsole.cpp:589
9631189 msgid "HINT: Type help"
9641190 msgstr ""
9651191
966 #: ../../../src/MenuEnemy.cpp:138
1192 #: ../../../src/MenuEnemy.cpp:162
9671193 #, c-format
9681194 msgid "%s level %d"
9691195 msgstr ""
9701196
971 #: ../../../src/MenuEnemy.cpp:162
1197 #: ../../../src/MenuEnemy.cpp:186
9721198 msgid "Dead"
9731199 msgstr ""
9741200
975 #: ../../../src/MenuEnemy.cpp:164
1201 #: ../../../src/MenuEnemy.cpp:188
9761202 msgid "Destroyed"
9771203 msgstr ""
9781204
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
1205 #: ../../../src/MenuGameOver.cpp:69
1206 msgid "Game Over"
1207 msgstr ""
1208
1209 #: ../../../src/MenuInventory.cpp:178
10001210 #, c-format
10011211 msgid "Lost %d%% of %s."
10021212 msgstr ""
10031213
1004 #: ../../../src/MenuInventory.cpp:195
1214 #: ../../../src/MenuInventory.cpp:185
10051215 #, c-format
10061216 msgid "Lost %d%% of total XP."
10071217 msgstr ""
10081218
1009 #: ../../../src/MenuInventory.cpp:200
1219 #: ../../../src/MenuInventory.cpp:190
10101220 #, c-format
10111221 msgid "Lost %d%% of current level XP."
10121222 msgstr ""
10131223
1014 #: ../../../src/MenuInventory.cpp:226
1224 #: ../../../src/MenuInventory.cpp:216
10151225 #, c-format
10161226 msgid "Lost %s."
10171227 msgstr ""
10181228
1019 #: ../../../src/MenuInventory.cpp:274 ../../../src/MenuStash.cpp:146
1229 #: ../../../src/MenuInventory.cpp:258 ../../../src/MenuStash.cpp:276
10201230 #, c-format
10211231 msgid "%d %s"
10221232 msgstr ""
10231233
1024 #: ../../../src/MenuInventory.cpp:317
1234 #: ../../../src/MenuInventory.cpp:301
10251235 msgid "Pick up item(s):"
10261236 msgstr ""
10271237
1028 #: ../../../src/MenuInventory.cpp:318
1238 #: ../../../src/MenuInventory.cpp:302
10291239 msgid "Use or equip item:"
10301240 msgstr ""
10311241
1032 #: ../../../src/MenuInventory.cpp:319
1242 #: ../../../src/MenuInventory.cpp:303
10331243 #, c-format
10341244 msgid "%s modifiers"
10351245 msgstr ""
10361246
1037 #: ../../../src/MenuInventory.cpp:320
1247 #: ../../../src/MenuInventory.cpp:304
10381248 msgid "Select a quantity of item:"
10391249 msgstr ""
10401250
1041 #: ../../../src/MenuInventory.cpp:323
1251 #: ../../../src/MenuInventory.cpp:307
10421252 msgid "Stash item stack:"
10431253 msgstr ""
10441254
1045 #: ../../../src/MenuInventory.cpp:325
1255 #: ../../../src/MenuInventory.cpp:309
10461256 msgid "Sell item stack:"
10471257 msgstr ""
10481258
1049 #: ../../../src/MenuInventory.cpp:592
1259 #: ../../../src/MenuInventory.cpp:576
10501260 msgid "You don't have enough of the required item."
10511261 msgstr ""
10521262
1053 #: ../../../src/MenuInventory.cpp:599
1263 #: ../../../src/MenuInventory.cpp:588
10541264 msgid "You can't use this item right now."
10551265 msgstr ""
10561266
1057 #: ../../../src/MenuInventory.cpp:611
1267 #: ../../../src/MenuInventory.cpp:600
10581268 msgid "This item can only be used from the action bar."
10591269 msgstr ""
10601270
1061 #: ../../../src/MenuInventory.cpp:729
1271 #: ../../../src/MenuInventory.cpp:718
10621272 msgid "Inventory is full."
10631273 msgstr ""
10641274
1065 #: ../../../src/MenuInventory.cpp:849
1275 #: ../../../src/MenuInventory.cpp:843
10661276 #, c-format
10671277 msgid "Not enough %s."
10681278 msgstr ""
10691279
1070 #: ../../../src/MenuInventory.cpp:869 ../../../src/MenuInventory.cpp:876
1280 #: ../../../src/MenuInventory.cpp:863 ../../../src/MenuInventory.cpp:870
10711281 msgid "This item can not be sold."
10721282 msgstr ""
10731283
10791289 msgid "Quests"
10801290 msgstr ""
10811291
1082 #: ../../../src/MenuManager.cpp:286
1292 #: ../../../src/MenuManager.cpp:305
10831293 #, c-format
10841294 msgid "XP: %d/%d"
10851295 msgstr ""
10861296
1087 #: ../../../src/MenuManager.cpp:827
1297 #: ../../../src/MenuManager.cpp:875
10881298 msgid "This item can not be dropped."
1299 msgstr ""
1300
1301 #: ../../../src/MenuManager.cpp:1501
1302 msgid "Equipped"
1303 msgstr ""
1304
1305 #: ../../../src/MenuMovementType.cpp:87
1306 msgid "Select a Movement Type"
1307 msgstr ""
1308
1309 #: ../../../src/MenuMovementType.cpp:89
1310 msgid "Can be changed later in the Configuration menu."
1311 msgstr ""
1312
1313 #: ../../../src/MenuMovementType.cpp:92 ../../../src/MenuMovementType.cpp:122
1314 msgid "Keyboard"
1315 msgstr ""
1316
1317 #: ../../../src/MenuMovementType.cpp:93 ../../../src/MenuMovementType.cpp:128
1318 msgid "Mouse"
1319 msgstr ""
1320
1321 #: ../../../src/MenuMovementType.cpp:129
1322 msgid "Button"
10891323 msgstr ""
10901324
10911325 #: ../../../src/MenuNumPicker.cpp:59
10921326 msgid "Enter amount:"
10931327 msgstr ""
10941328
1095 #: ../../../src/MenuPowers.cpp:787
1329 #: ../../../src/MenuPowers.cpp:894
10961330 msgid "Passive"
10971331 msgstr ""
10981332
1099 #: ../../../src/MenuPowers.cpp:792
1333 #: ../../../src/MenuPowers.cpp:901
11001334 #, c-format
11011335 msgid "Costs %d MP"
11021336 msgstr ""
11031337
1104 #: ../../../src/MenuPowers.cpp:796
1338 #: ../../../src/MenuPowers.cpp:905
11051339 #, c-format
11061340 msgid "Costs %d HP"
11071341 msgstr ""
11081342
1109 #: ../../../src/MenuPowers.cpp:801
1343 #: ../../../src/MenuPowers.cpp:909
11101344 msgid "Cooldown:"
11111345 msgstr ""
11121346
1113 #: ../../../src/MenuPowers.cpp:866 ../../../src/MenuPowers.cpp:869
1347 #: ../../../src/MenuPowers.cpp:960 ../../../src/MenuPowers.cpp:963
11141348 msgid "Damage per second"
11151349 msgstr ""
11161350
1117 #: ../../../src/MenuPowers.cpp:872 ../../../src/MenuPowers.cpp:875
1351 #: ../../../src/MenuPowers.cpp:966 ../../../src/MenuPowers.cpp:969
11181352 msgid "HP per second"
11191353 msgstr ""
11201354
1121 #: ../../../src/MenuPowers.cpp:878 ../../../src/MenuPowers.cpp:881
1355 #: ../../../src/MenuPowers.cpp:972 ../../../src/MenuPowers.cpp:975
11221356 msgid "MP per second"
11231357 msgstr ""
11241358
1125 #: ../../../src/MenuPowers.cpp:885
1359 #: ../../../src/MenuPowers.cpp:979
11261360 msgid "Immobilize"
11271361 msgstr ""
11281362
1129 #: ../../../src/MenuPowers.cpp:893
1363 #: ../../../src/MenuPowers.cpp:987
11301364 msgid "Immunity"
11311365 msgstr ""
11321366
1133 #: ../../../src/MenuPowers.cpp:896
1367 #: ../../../src/MenuPowers.cpp:990
11341368 msgid "Immunity to damage over time"
11351369 msgstr ""
11361370
1137 #: ../../../src/MenuPowers.cpp:899
1371 #: ../../../src/MenuPowers.cpp:993
11381372 msgid "Immunity to slow"
11391373 msgstr ""
11401374
1141 #: ../../../src/MenuPowers.cpp:902
1375 #: ../../../src/MenuPowers.cpp:996
11421376 msgid "Immunity to stun"
11431377 msgstr ""
11441378
1145 #: ../../../src/MenuPowers.cpp:905
1379 #: ../../../src/MenuPowers.cpp:999
11461380 msgid "Immunity to HP steal"
11471381 msgstr ""
11481382
1149 #: ../../../src/MenuPowers.cpp:908
1383 #: ../../../src/MenuPowers.cpp:1002
11501384 msgid "Immunity to MP steal"
11511385 msgstr ""
11521386
1153 #: ../../../src/MenuPowers.cpp:911
1387 #: ../../../src/MenuPowers.cpp:1005
11541388 msgid "Immunity to knockback"
11551389 msgstr ""
11561390
1157 #: ../../../src/MenuPowers.cpp:914
1391 #: ../../../src/MenuPowers.cpp:1008
11581392 msgid "Immunity to damage reflection"
11591393 msgstr ""
11601394
1161 #: ../../../src/MenuPowers.cpp:917
1395 #: ../../../src/MenuPowers.cpp:1014
11621396 msgid "Stun"
11631397 msgstr ""
11641398
1165 #: ../../../src/MenuPowers.cpp:920
1399 #: ../../../src/MenuPowers.cpp:1017
11661400 msgid "Automatic revive on death"
11671401 msgstr ""
11681402
1169 #: ../../../src/MenuPowers.cpp:923
1403 #: ../../../src/MenuPowers.cpp:1020
11701404 msgid "Convert"
11711405 msgstr ""
11721406
1173 #: ../../../src/MenuPowers.cpp:926
1407 #: ../../../src/MenuPowers.cpp:1023
11741408 msgid "Fear"
11751409 msgstr ""
11761410
1177 #: ../../../src/MenuPowers.cpp:929
1411 #: ../../../src/MenuPowers.cpp:1026
11781412 msgid "Lifespan"
11791413 msgstr ""
11801414
1181 #: ../../../src/MenuPowers.cpp:953
1415 #: ../../../src/MenuPowers.cpp:1050
11821416 msgid "Magical Shield"
11831417 msgstr ""
11841418
1185 #: ../../../src/MenuPowers.cpp:982
1419 #: ../../../src/MenuPowers.cpp:1079
11861420 msgid "Healing"
11871421 msgstr ""
11881422
1189 #: ../../../src/MenuPowers.cpp:985
1423 #: ../../../src/MenuPowers.cpp:1082
11901424 msgid "Knockback"
11911425 msgstr ""
11921426
1193 #: ../../../src/MenuPowers.cpp:1010
1427 #: ../../../src/MenuPowers.cpp:1106
11941428 #, c-format
11951429 msgid "%d%% chance"
11961430 msgstr ""
11971431
1198 #: ../../../src/MenuPowers.cpp:1062
1432 #: ../../../src/MenuPowers.cpp:1158
11991433 msgid "Base Accuracy"
12001434 msgstr ""
12011435
1202 #: ../../../src/MenuPowers.cpp:1082
1436 #: ../../../src/MenuPowers.cpp:1178
12031437 msgid "Base Critical Chance"
12041438 msgstr ""
12051439
1206 #: ../../../src/MenuPowers.cpp:1090
1440 #: ../../../src/MenuPowers.cpp:1186
12071441 msgid "Ignores Absorbtion"
12081442 msgstr ""
12091443
1210 #: ../../../src/MenuPowers.cpp:1095
1444 #: ../../../src/MenuPowers.cpp:1191
12111445 msgid "Ignores Avoidance"
12121446 msgstr ""
12131447
1214 #: ../../../src/MenuPowers.cpp:1100
1448 #: ../../../src/MenuPowers.cpp:1196
12151449 #, c-format
12161450 msgid "%d%% Chance to crit slowed targets"
12171451 msgstr ""
12181452
1219 #: ../../../src/MenuPowers.cpp:1105
1453 #: ../../../src/MenuPowers.cpp:1201
12201454 #, c-format
12211455 msgid "Elemental Damage (%s)"
12221456 msgstr ""
12231457
1224 #: ../../../src/MenuPowers.cpp:1114
1458 #: ../../../src/MenuPowers.cpp:1210
12251459 #, c-format
12261460 msgid "Requires a %s"
12271461 msgstr ""
12281462
1229 #: ../../../src/MenuPowers.cpp:1151 ../../../src/MenuPowers.cpp:1154
1463 #: ../../../src/MenuPowers.cpp:1248 ../../../src/MenuPowers.cpp:1251
12301464 #, c-format
12311465 msgid "Requires Power: %s"
12321466 msgstr ""
12331467
1234 #: ../../../src/MenuPowers.cpp:1163
1468 #: ../../../src/MenuPowers.cpp:1260
12351469 msgid "Click to Unlock (uses 1 Skill Point)"
12361470 msgstr ""
12371471
1238 #: ../../../src/MenuPowers.cpp:1167 ../../../src/MenuPowers.cpp:1169
1472 #: ../../../src/MenuPowers.cpp:1264 ../../../src/MenuPowers.cpp:1266
12391473 msgid "Requires 1 Skill Point"
12401474 msgstr ""
12411475
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
1476 #: ../../../src/MenuPowers.cpp:1466
1477 #, c-format
1478 msgid "Available skill points: %d"
1479 msgstr ""
1480
1481 #: ../../../src/MenuPowers.cpp:1498
12531482 msgid "Next Level:"
12541483 msgstr ""
12551484
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
1485 #: ../../../src/MenuStash.cpp:80 ../../../src/MenuStash.cpp:161
1486 msgid "Stash"
1487 msgstr ""
1488
1489 #: ../../../src/MenuStash.cpp:174 ../../../src/MenuStash.cpp:188
1490 msgid "Private"
1491 msgstr ""
1492
1493 #: ../../../src/MenuStash.cpp:175
1494 msgid "Shared"
1495 msgstr ""
1496
1497 #: ../../../src/MenuStash.cpp:340
1498 msgid "This item can not be stored in the stash."
1499 msgstr ""
1500
1501 #: ../../../src/MenuStash.cpp:345
1502 msgid "This item can not be stored in the private stash."
1503 msgstr ""
1504
1505 #: ../../../src/MenuStash.cpp:350
1506 msgid "This item can not be stored in the shared stash."
1507 msgstr ""
1508
1509 #: ../../../src/MenuStash.cpp:360
12651510 msgid "Stash is full."
12661511 msgstr ""
12671512
1268 #: ../../../src/MenuTalker.cpp:454
1513 #: ../../../src/MenuStash.cpp:414
1514 #, c-format
1515 msgid "Can not store item in stash: %s"
1516 msgstr ""
1517
1518 #: ../../../src/MenuTalker.cpp:448
1519 #, c-format
1520 msgid "<dialog node %d>"
1521 msgstr ""
1522
1523 #: ../../../src/MenuTalker.cpp:456
12691524 msgid "Trade"
12701525 msgstr ""
12711526
1272 #: ../../../src/MenuVendor.cpp:58
1527 #: ../../../src/MenuVendor.cpp:60
12731528 msgid "Buyback"
12741529 msgstr ""
12751530
1276 #: ../../../src/MenuVendor.cpp:279
1531 #: ../../../src/MenuVendor.cpp:283
12771532 msgid "Vendor"
12781533 msgstr ""
12791534
1280 #: ../../../src/PowerManager.cpp:1136
1535 #: ../../../src/PowerManager.cpp:1204
12811536 #, c-format
12821537 msgid "+%d Shield"
12831538 msgstr ""
12841539
1285 #: ../../../src/PowerManager.cpp:1392
1540 #: ../../../src/PowerManager.cpp:1461
12861541 msgid "You are already transformed, untransform first."
12871542 msgstr ""
12881543
1289 #: ../../../src/PowerManager.cpp:1404
1544 #: ../../../src/PowerManager.cpp:1473
12901545 msgid "Could not untransform at this position."
12911546 msgstr ""
12921547
12941549 msgid "Completed Quests"
12951550 msgstr ""
12961551
1297 #: ../../../src/SaveLoad.cpp:243 ../../../src/SaveLoad.cpp:244
1552 #: ../../../src/SaveLoad.cpp:250 ../../../src/SaveLoad.cpp:251
12981553 msgid "Game saved."
12991554 msgstr ""
13001555
1301 #: ../../../src/SDLInputState.cpp:582
1556 #: ../../../src/SDLInputState.cpp:645
1557 msgid "BkSp"
1558 msgstr ""
1559
1560 #: ../../../src/SDLInputState.cpp:646
1561 msgid "Caps"
1562 msgstr ""
1563
1564 #: ../../../src/SDLInputState.cpp:647
1565 msgid "Del"
1566 msgstr ""
1567
1568 #: ../../../src/SDLInputState.cpp:649 ../../../src/SDLInputState.cpp:679
1569 msgid "End"
1570 msgstr ""
1571
1572 #: ../../../src/SDLInputState.cpp:650
1573 msgid "Esc"
1574 msgstr ""
1575
1576 #: ../../../src/SDLInputState.cpp:651 ../../../src/SDLInputState.cpp:681
1577 msgid "Home"
1578 msgstr ""
1579
1580 #: ../../../src/SDLInputState.cpp:652
1581 msgid "Ins"
1582 msgstr ""
1583
1584 #: ../../../src/SDLInputState.cpp:653
1585 msgid "LAlt"
1586 msgstr ""
1587
1588 #: ../../../src/SDLInputState.cpp:654
1589 msgid "LCtrl"
1590 msgstr ""
1591
1592 #: ../../../src/SDLInputState.cpp:656
1593 msgid "LShft"
1594 msgstr ""
1595
1596 #: ../../../src/SDLInputState.cpp:657
1597 msgid "Num"
1598 msgstr ""
1599
1600 #: ../../../src/SDLInputState.cpp:658
1601 msgid "PgDn"
1602 msgstr ""
1603
1604 #: ../../../src/SDLInputState.cpp:659
1605 msgid "PgUp"
1606 msgstr ""
1607
1608 #: ../../../src/SDLInputState.cpp:660 ../../../src/SDLInputState.cpp:690
1609 msgid "Pause"
1610 msgstr ""
1611
1612 #: ../../../src/SDLInputState.cpp:661
1613 msgid "Print"
1614 msgstr ""
1615
1616 #: ../../../src/SDLInputState.cpp:662
1617 msgid "RAlt"
1618 msgstr ""
1619
1620 #: ../../../src/SDLInputState.cpp:663
1621 msgid "RCtrl"
1622 msgstr ""
1623
1624 #: ../../../src/SDLInputState.cpp:664
1625 msgid "Ret"
1626 msgstr ""
1627
1628 #: ../../../src/SDLInputState.cpp:666
1629 msgid "RShft"
1630 msgstr ""
1631
1632 #: ../../../src/SDLInputState.cpp:667
1633 msgid "SLock"
1634 msgstr ""
1635
1636 #: ../../../src/SDLInputState.cpp:668
1637 msgid "Spc"
1638 msgstr ""
1639
1640 #: ../../../src/SDLInputState.cpp:669 ../../../src/SDLInputState.cpp:699
1641 msgid "Tab"
1642 msgstr ""
1643
1644 #: ../../../src/SDLInputState.cpp:675
13021645 msgid "Backspace"
13031646 msgstr ""
13041647
1305 #: ../../../src/SDLInputState.cpp:583
1648 #: ../../../src/SDLInputState.cpp:676
13061649 msgid "CapsLock"
13071650 msgstr ""
13081651
1309 #: ../../../src/SDLInputState.cpp:586
1310 msgid "End"
1311 msgstr ""
1312
1313 #: ../../../src/SDLInputState.cpp:587
1652 #: ../../../src/SDLInputState.cpp:680
13141653 msgid "Escape"
13151654 msgstr ""
13161655
1317 #: ../../../src/SDLInputState.cpp:588
1318 msgid "Home"
1319 msgstr ""
1320
1321 #: ../../../src/SDLInputState.cpp:589
1656 #: ../../../src/SDLInputState.cpp:682
13221657 msgid "Insert"
13231658 msgstr ""
13241659
1325 #: ../../../src/SDLInputState.cpp:590
1660 #: ../../../src/SDLInputState.cpp:683
13261661 msgid "Left Alt"
13271662 msgstr ""
13281663
1329 #: ../../../src/SDLInputState.cpp:591
1664 #: ../../../src/SDLInputState.cpp:684
13301665 msgid "Left Ctrl"
13311666 msgstr ""
13321667
1333 #: ../../../src/SDLInputState.cpp:593
1668 #: ../../../src/SDLInputState.cpp:686
13341669 msgid "Left Shift"
13351670 msgstr ""
13361671
1337 #: ../../../src/SDLInputState.cpp:594
1672 #: ../../../src/SDLInputState.cpp:687
13381673 msgid "NumLock"
13391674 msgstr ""
13401675
1341 #: ../../../src/SDLInputState.cpp:595
1676 #: ../../../src/SDLInputState.cpp:688
13421677 msgid "PageDown"
13431678 msgstr ""
13441679
1345 #: ../../../src/SDLInputState.cpp:596
1680 #: ../../../src/SDLInputState.cpp:689
13461681 msgid "PageUp"
13471682 msgstr ""
13481683
1349 #: ../../../src/SDLInputState.cpp:597
1350 msgid "Pause"
1351 msgstr ""
1352
1353 #: ../../../src/SDLInputState.cpp:598
1684 #: ../../../src/SDLInputState.cpp:691
13541685 msgid "PrintScreen"
13551686 msgstr ""
13561687
1357 #: ../../../src/SDLInputState.cpp:599
1688 #: ../../../src/SDLInputState.cpp:692
13581689 msgid "Right Alt"
13591690 msgstr ""
13601691
1361 #: ../../../src/SDLInputState.cpp:600
1692 #: ../../../src/SDLInputState.cpp:693
13621693 msgid "Right Ctrl"
13631694 msgstr ""
13641695
1365 #: ../../../src/SDLInputState.cpp:601
1696 #: ../../../src/SDLInputState.cpp:694
13661697 msgid "Return"
13671698 msgstr ""
13681699
1369 #: ../../../src/SDLInputState.cpp:603
1700 #: ../../../src/SDLInputState.cpp:696
13701701 msgid "Right Shift"
13711702 msgstr ""
13721703
1373 #: ../../../src/SDLInputState.cpp:604
1704 #: ../../../src/SDLInputState.cpp:697
13741705 msgid "ScrollLock"
13751706 msgstr ""
13761707
1377 #: ../../../src/SDLInputState.cpp:605
1708 #: ../../../src/SDLInputState.cpp:698
13781709 msgid "Space"
13791710 msgstr ""
13801711
1381 #: ../../../src/SDLInputState.cpp:606
1382 msgid "Tab"
1383 msgstr ""
1384
1385 #: ../../../src/SDLInputState.cpp:620
1712 #: ../../../src/SDLInputState.cpp:712
1713 #, c-format
1714 msgid "M%d"
1715 msgstr ""
1716
1717 #: ../../../src/SDLInputState.cpp:718
13861718 #, c-format
13871719 msgid "Mouse %d"
13881720 msgstr ""
13891721
1390 #: ../../../src/SDLInputState.cpp:628
1722 #: ../../../src/SDLInputState.cpp:728
1723 #, c-format
1724 msgid "JX%d-"
1725 msgstr ""
1726
1727 #: ../../../src/SDLInputState.cpp:730
13911728 #, c-format
13921729 msgid "Axis %d -"
13931730 msgstr ""
13941731
1395 #: ../../../src/SDLInputState.cpp:630
1732 #: ../../../src/SDLInputState.cpp:734
1733 #, c-format
1734 msgid "JX%d+"
1735 msgstr ""
1736
1737 #: ../../../src/SDLInputState.cpp:736
13961738 #, c-format
13971739 msgid "Axis %d +"
13981740 msgstr ""
13991741
1400 #: ../../../src/SDLInputState.cpp:633
1742 #: ../../../src/SDLInputState.cpp:741
1743 #, c-format
1744 msgid "JB%d"
1745 msgstr ""
1746
1747 #: ../../../src/SDLInputState.cpp:743
14011748 #, c-format
14021749 msgid "Button %d"
14031750 msgstr ""
14041751
1405 #: ../../../src/SDLInputState.cpp:637
1406 msgid "(none)"
1407 msgstr ""
1408
1409 #: ../../../src/SDLInputState.cpp:677
1752 #: ../../../src/SDLInputState.cpp:789
14101753 msgid "Touch control D-Pad"
14111754 msgstr ""
14121755
1413 #: ../../../src/SDLInputState.cpp:701
1756 #: ../../../src/SDLInputState.cpp:812
14141757 msgid "Touch control buttons"
14151758 msgstr ""
14161759
1417 #: ../../../src/SDLInputState.cpp:716
1760 #: ../../../src/SDLInputState.cpp:826
14181761 msgid "Tap"
14191762 msgstr ""
14201763
1421 #: ../../../src/SDLInputState.cpp:760 ../../../src/SDLInputState.cpp:764
1422 #: ../../../src/SDLInputState.cpp:768
1764 #: ../../../src/SDLInputState.cpp:878 ../../../src/SDLInputState.cpp:880
1765 #, c-format
1766 msgid "Can not bind: %s"
1767 msgstr ""
1768
1769 #: ../../../src/SDLInputState.cpp:892 ../../../src/SDLInputState.cpp:896
1770 #: ../../../src/SDLInputState.cpp:900
14231771 #, c-format
14241772 msgid "'%s' is no longer bound to:"
14251773 msgstr ""
15781926 msgid "Base MP"
15791927 msgstr ""
15801928
1581 #: ../../../src/Utils.cpp:346
1929 #: ../../../src/Utils.cpp:365
15821930 msgid "k"
15831931 msgstr ""
15841932
1585 #: ../../../src/Utils.cpp:580
1933 #: ../../../src/Utils.cpp:635
15861934 #, c-format
15871935 msgid "%s second"
15881936 msgstr ""
15891937
1590 #: ../../../src/Utils.cpp:583
1938 #: ../../../src/Utils.cpp:638
15911939 #, c-format
15921940 msgid "%s seconds"
15931941 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-07-02 13:26-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:1220
133 #: ../../../src/StatBlock.cpp:926 ../../../src/StatBlock.cpp:932
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:937
139 #: ../../../src/StatBlock.cpp:943
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:704
181 msgid "Entering game world..."
182 msgstr "A entrar no mundo do jogo..."
183
184 #: ../../../src/GameStateLoad.cpp:707
185 msgid "Loading saved game..."
186 msgstr "A carregar o jogo gravado..."
187
188 #: ../../../src/GameStateLoad.cpp:740
189 msgid "Invalid save"
190 msgstr "Gravação inválida"
191
192 #: ../../../src/GameStateLoad.cpp:764 ../../../src/ItemManager.cpp:745
193 #: ../../../src/MenuPowers.cpp:882 ../../../src/MenuPowers.cpp:1241
194 #: ../../../src/MenuPowers.cpp:1653
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:254
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:670
254 #: ../../../src/SDLInputState.cpp:700
255 msgid "Up"
256 msgstr "Cima"
257
258 #: ../../../src/InputState.cpp:419 ../../../src/MenuMovementType.cpp:125
259 #: ../../../src/MenuMovementType.cpp:134 ../../../src/SDLInputState.cpp:648
260 #: ../../../src/SDLInputState.cpp:678
261 msgid "Down"
262 msgstr "Baixo"
263
264 #: ../../../src/InputState.cpp:420 ../../../src/MenuMovementType.cpp:124
265 #: ../../../src/MenuMovementType.cpp:133 ../../../src/SDLInputState.cpp:655
266 #: ../../../src/SDLInputState.cpp:685
267 msgid "Left"
268 msgstr "Esquerda"
269
270 #: ../../../src/InputState.cpp:421 ../../../src/MenuMovementType.cpp:126
271 #: ../../../src/MenuMovementType.cpp:135 ../../../src/SDLInputState.cpp:665
272 #: ../../../src/SDLInputState.cpp:695
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:159
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:677
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:981
413 #, c-format
414 msgid "%d%% Speed"
415 msgstr "%d%% Velocidade"
416
417 #: ../../../src/ItemManager.cpp:650 ../../../src/MenuPowers.cpp:984
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:953
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:1228
453 #: ../../../src/MenuPowers.cpp:1231
454 #, c-format
455 msgid "Requires Level %d"
456 msgstr "Requer Nível %d"
457
458 #: ../../../src/ItemManager.cpp:836 ../../../src/MenuPowers.cpp:1220
459 #: ../../../src/MenuPowers.cpp:1222
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:898
490 msgid "Set:"
491 msgstr "Conjunto:"
492
493 #: ../../../src/ItemManager.cpp:905
494 #, c-format
495 msgid "%d items:"
496 msgstr "%d itens:"
497
498 #: ../../../src/ItemManager.cpp:920
499 #, c-format
500 msgid "Press [%s] to read"
501 msgstr "Pressionar [%s] para ler"
502
503 #: ../../../src/ItemManager.cpp:923
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:1256
580 msgid "Clear"
581 msgstr "Limpar"
582
583 #: ../../../src/MenuConfig.cpp:122 ../../../src/MenuConfig.cpp:1254
584 msgid "Assign:"
585 msgstr "Atribuir:"
586
587 #: ../../../src/MenuConfig.cpp:123 ../../../src/MenuConfig.cpp:253
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:252 ../../../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:256 ../../../src/MenuGameOver.cpp:72
600 msgid "Continue"
601 msgstr "Continuar"
602
603 #: ../../../src/MenuConfig.cpp:258
604 msgid "Save Game"
605 msgstr ""
606
607 #: ../../../src/MenuConfig.cpp:301 ../../../src/MenuConfig.cpp:352
608 msgid "Default"
609 msgstr "Padrão"
610
611 #: ../../../src/MenuConfig.cpp:301
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:302
621 msgid "Show all"
622 msgstr "Mostrar tudo"
623
624 #: ../../../src/MenuConfig.cpp:302
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:303 ../../../src/MenuConfig.cpp:308
632 msgid "Hidden"
633 msgstr "Oculto"
634
635 #: ../../../src/MenuConfig.cpp:303
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:306
645 msgid "Visible"
646 msgstr "Visível"
647
648 #: ../../../src/MenuConfig.cpp:307
649 msgid "Visible (2x zoom)"
650 msgstr "Visível (2x zoom)"
651
652 #: ../../../src/MenuConfig.cpp:311
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:312
661 msgid "- Display a message"
662 msgstr "- Mostrar uma mensagem"
663
664 #: ../../../src/MenuConfig.cpp:313
665 msgid "- Play a sound"
666 msgstr "- Reproduzir um som"
667
668 #: ../../../src/MenuConfig.cpp:314
669 msgid "- Change the cursor"
670 msgstr "- Alterar o cursor"
671
672 #: ../../../src/MenuConfig.cpp:316
673 msgid "Disabled"
674 msgstr "Desativado"
675
676 #: ../../../src/MenuConfig.cpp:317
677 msgid "All"
678 msgstr "Tudo"
679
680 #: ../../../src/MenuConfig.cpp:318
681 msgid "Message & Cursor"
682 msgstr "Mensagem e cursor"
683
684 #: ../../../src/MenuConfig.cpp:319
685 msgid "Message & Sound"
686 msgstr "Mensagem e som"
687
688 #: ../../../src/MenuConfig.cpp:320
689 msgid "Sound & Cursor"
690 msgstr "Som e cursor"
691
692 #: ../../../src/MenuConfig.cpp:321
693 msgid "Message"
694 msgstr "Mensagem"
695
696 #: ../../../src/MenuConfig.cpp:322
697 msgid "Cursor"
698 msgstr "Cursor"
699
700 #: ../../../src/MenuConfig.cpp:323
701 msgid "Sound"
702 msgstr "Som"
703
704 #: ../../../src/MenuConfig.cpp:329
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:347
713 msgid "The maximum frame rate that the game will be allowed to run at."
714 msgstr ""
715
716 #: ../../../src/MenuConfig.cpp:351
717 msgid ""
718 "The render size refers to the height in pixels of the surface used to draw "
719 "the game. Mods define the allowed render sizes, but this option allows "
720 "overriding the maximum size."
721 msgstr ""
722
723 #: ../../../src/MenuConfig.cpp:374 ../../../src/MenuConfig.cpp:1679
724 #: ../../../src/MenuGameOver.cpp:116
725 msgid "Exit"
726 msgstr "Sair"
727
728 #: ../../../src/MenuConfig.cpp:375
729 msgid "Video"
730 msgstr "Vídeo"
731
732 #: ../../../src/MenuConfig.cpp:376
161733 msgid "Audio"
162734 msgstr "Áudio"
163735
164 #: ../../../src/GameStateConfigBase.cpp:161
165 #: ../../../src/GameStateConfigDesktop.cpp:131
736 #: ../../../src/MenuConfig.cpp:377
166737 msgid "Interface"
167738 msgstr "Interface"
168739
169 #: ../../../src/GameStateConfigBase.cpp:162
170 #: ../../../src/GameStateConfigDesktop.cpp:134
740 #: ../../../src/MenuConfig.cpp:378
741 msgid "Input"
742 msgstr "Entrada"
743
744 #: ../../../src/MenuConfig.cpp:379
745 msgid "Keybindings"
746 msgstr "Teclas de atalho"
747
748 #: ../../../src/MenuConfig.cpp:380
171749 msgid "Mods"
172750 msgstr "Mods"
173751
174 #: ../../../src/GameStateConfigBase.cpp:249 ../../../src/MenuExit.cpp:72
752 #: ../../../src/MenuConfig.cpp:392
753 msgid "Paused"
754 msgstr "Pausado"
755
756 #: ../../../src/MenuConfig.cpp:395
757 msgid "Time Played"
758 msgstr "Tempo Jogado"
759
760 #: ../../../src/MenuConfig.cpp:401
761 msgid "Renderer"
762 msgstr "Renderizador"
763
764 #: ../../../src/MenuConfig.cpp:402
765 msgid "Full Screen Mode"
766 msgstr "Modo ecrã cheio"
767
768 #: ../../../src/MenuConfig.cpp:403
769 msgid "Hardware surfaces"
770 msgstr "Superfícies de hardware"
771
772 #: ../../../src/MenuConfig.cpp:404
773 msgid "V-Sync"
774 msgstr "Sincronização vertical"
775
776 #: ../../../src/MenuConfig.cpp:405
777 msgid "Texture Filtering"
778 msgstr "Filtro de textura"
779
780 #: ../../../src/MenuConfig.cpp:406
781 msgid "DPI scaling"
782 msgstr "Escalonamento por DPI"
783
784 #: ../../../src/MenuConfig.cpp:407
785 msgid "Parallax Layers"
786 msgstr "Camadas de Paralaxe"
787
788 #: ../../../src/MenuConfig.cpp:408
789 msgid "Allow changing gamma"
790 msgstr "Permitir a mudança de gama"
791
792 #: ../../../src/MenuConfig.cpp:409
793 msgid "Gamma"
794 msgstr "Gama"
795
796 #: ../../../src/MenuConfig.cpp:410
797 msgid "Maximum Render Size"
798 msgstr ""
799
800 #: ../../../src/MenuConfig.cpp:411
801 msgid "Frame Limit"
802 msgstr ""
803
804 #: ../../../src/MenuConfig.cpp:413
805 msgid "Sound Volume"
806 msgstr "Volume do som"
807
808 #: ../../../src/MenuConfig.cpp:414
175809 msgid "Music Volume"
176810 msgstr "Volume da música"
177811
178 #: ../../../src/GameStateConfigBase.cpp:253 ../../../src/MenuExit.cpp:77
179 msgid "Sound Volume"
180 msgstr "Volume do som"
181
182 #: ../../../src/GameStateConfigBase.cpp:257
812 #: ../../../src/MenuConfig.cpp:416
183813 msgid "Language"
184814 msgstr "Idioma"
185815
186 #: ../../../src/GameStateConfigBase.cpp:266
816 #: ../../../src/MenuConfig.cpp:417
187817 msgid "Show FPS"
188818 msgstr "Mostrar FPS"
189819
190 #: ../../../src/GameStateConfigBase.cpp:270
820 #: ../../../src/MenuConfig.cpp:418
821 msgid "Hardware mouse cursor"
822 msgstr "Renderizar cursor do rato por hardware"
823
824 #: ../../../src/MenuConfig.cpp:419
191825 msgid "Colorblind Mode"
192826 msgstr "Modo daltónico"
193827
194 #: ../../../src/GameStateConfigBase.cpp:274
195 msgid "Hardware mouse cursor"
196 msgstr "Renderizar cursor do rato por hardware"
197
198 #: ../../../src/GameStateConfigBase.cpp:278
828 #: ../../../src/MenuConfig.cpp:420
199829 msgid "Developer Mode"
200830 msgstr "Modo programador"
201831
202 #: ../../../src/GameStateConfigBase.cpp:282
832 #: ../../../src/MenuConfig.cpp:421
203833 msgid "Subtitles"
204834 msgstr "Subtítulos"
205835
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
836 #: ../../../src/MenuConfig.cpp:422
837 msgid "Loot tooltip visibility"
838 msgstr "Visibilidade das legendas da pilhagem"
839
840 #: ../../../src/MenuConfig.cpp:423
841 msgid "Mini-map mode"
842 msgstr "Modo mini-mapa"
843
844 #: ../../../src/MenuConfig.cpp:424
845 msgid "Always show stat bar labels"
846 msgstr "Mostrar sempre etiquetas na barra de estatísticas"
847
848 #: ../../../src/MenuConfig.cpp:425
849 msgid "Allow stat bar auto-hiding"
850 msgstr "Permitir ocultar automaticamente a barra de estatísticas"
851
852 #: ../../../src/MenuConfig.cpp:426
853 msgid "Show combat text"
854 msgstr "Mostrar texto de combate"
855
856 #: ../../../src/MenuConfig.cpp:427
857 msgid "Automatically equip items"
858 msgstr "Equipar itens automaticamente"
859
860 #: ../../../src/MenuConfig.cpp:428
861 msgid "Show hidden entity markers"
862 msgstr "Mostrar marcadores de entidades ocultas"
863
864 #: ../../../src/MenuConfig.cpp:429
865 msgid "Low health notification"
866 msgstr "Notificação de pouca vida"
867
868 #: ../../../src/MenuConfig.cpp:430
869 msgid "Low health threshold"
870 msgstr "Limiar de pouca vida"
871
872 #: ../../../src/MenuConfig.cpp:431
873 msgid "Show item comparison tooltips"
874 msgstr ""
875
876 #: ../../../src/MenuConfig.cpp:434 ../../../src/MenuMovementType.cpp:94
877 #: ../../../src/MenuMovementType.cpp:131
878 msgid "Joystick"
879 msgstr "Joystick"
880
881 #: ../../../src/MenuConfig.cpp:435
882 msgid "Move hero using mouse"
883 msgstr "Mover herói utilizando o rato"
884
885 #: ../../../src/MenuConfig.cpp:436
886 msgid "Mouse aim"
887 msgstr "Fazer mira com o rato"
888
889 #: ../../../src/MenuConfig.cpp:437
890 msgid "Do not use mouse"
891 msgstr "Não usar rato"
892
893 #: ../../../src/MenuConfig.cpp:438
894 msgid "Swap mouse movement button"
895 msgstr "Trocar botão de movimento do rato"
896
897 #: ../../../src/MenuConfig.cpp:439
898 msgid "Attack with mouse movement"
899 msgstr "Atacar com o movimento do rato"
900
901 #: ../../../src/MenuConfig.cpp:440
902 msgid "Joystick Deadzone"
903 msgstr "Zona morta do joystick"
904
905 #: ../../../src/MenuConfig.cpp:441
906 msgid "Touch Controls"
907 msgstr ""
908
909 #: ../../../src/MenuConfig.cpp:442
910 msgid "Touch Gamepad Scaling"
911 msgstr ""
912
913 #: ../../../src/MenuConfig.cpp:452
914 #, c-format
915 msgid "Primary binding: %s"
916 msgstr "Atalho principal: %s"
917
918 #: ../../../src/MenuConfig.cpp:453
919 #, c-format
920 msgid "Alternate binding: %s"
921 msgstr "Atalho alternativo: %s"
922
923 #: ../../../src/MenuConfig.cpp:454
924 #, c-format
925 msgid "Joystick binding: %s"
926 msgstr "Atalho do joystick: %s"
927
928 #: ../../../src/MenuConfig.cpp:556
261929 msgid ""
262930 "Will try to store surfaces in video memory versus system memory. The effect "
263931 "this has on performance depends on the renderer."
265933 "Tentar armazenar as superfícies na memória de vídeo e não na memória do "
266934 "sistema. O efeito que terá no desempenho depende do renderizador."
267935
268 #: ../../../src/GameStateConfigDesktop.cpp:189
936 #: ../../../src/MenuConfig.cpp:557
269937 msgid ""
270938 "Prevents screen tearing. Disable if you experience \"stuttering\" in "
271939 "windowed mode or input lag."
273941 "Evita o desfazamento vertical no ecrã. Desativar se ocorrerem atrasos no "
274942 "modo janela ou atraso na imagem."
275943
276 #: ../../../src/GameStateConfigDesktop.cpp:190
944 #: ../../../src/MenuConfig.cpp:558
277945 msgid ""
278946 "When enabled, this uses the screen DPI in addition to the window dimensions "
279947 "to scale the rendering resolution. Otherwise, only the window dimensions are"
283951 "resolução de renderização. Caso contrário, serão utilizadas apenas as "
284952 "dimensões da janela."
285953
286 #: ../../../src/GameStateConfigDesktop.cpp:191
954 #: ../../../src/MenuConfig.cpp:559
287955 msgid ""
288956 "This enables parallax (non-tile) layers. Disabling this setting can improve "
289957 "performance in some cases."
291959 "Isto ativa as camadas paralaxe (não-telas). Desativar isto pode melhorar a "
292960 "performance em alguns casos."
293961
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
962 #: ../../../src/MenuConfig.cpp:560
963 msgid ""
964 "Enables the below setting that controls the screen gamma level. The behavior"
965 " of the gamma setting can vary between platforms."
966 msgstr ""
967 "Permite a configuração abaixo que controla o gama do ecrã. O comportamento "
968 "da configuração do gama pode variar em plataformas diferentes."
969
970 #: ../../../src/MenuConfig.cpp:561
971 msgid ""
972 "Provides additional text for information that is primarily conveyed through "
973 "color."
974 msgstr ""
975 "Fornece texto adicional para informação que é transmitida através da cor."
976
977 #: ../../../src/MenuConfig.cpp:562
978 msgid ""
979 "Some mods will automatically hide the stat bars when they are inactive. "
980 "Disabling this option will keep them displayed at all times."
981 msgstr ""
982 "Alguns mods escondem automaticamente a barra de estatísticas quando estas "
983 "estão inativas. Desativando esta opção, a barra de estatísticas estará "
984 "sempre visível."
985
986 #: ../../../src/MenuConfig.cpp:563
987 msgid ""
988 "When enabled, empty equipment slots will be filled with applicable items "
989 "when they are obtained."
990 msgstr ""
991 "Quando ativado, os compartimentos vagos do equipamento serão preenchidos com"
992 " itens aplicáveis quando estes são obtidos."
993
994 #: ../../../src/MenuConfig.cpp:564
995 msgid ""
996 "Shows a marker above enemies, allies, and the player when they are obscured "
997 "by tall objects."
998 msgstr ""
999 "Mostrar um marcador por cima dos inimigos, aliados e o jogador quando "
1000 "estiverem ocultados por objetos altos."
1001
1002 #: ../../../src/MenuConfig.cpp:565
1003 msgid ""
1004 "When enabled, tooltips for equipped items of the same type are shown next to"
1005 " standard item tooltips."
1006 msgstr ""
1007
1008 #: ../../../src/MenuConfig.cpp:566
1009 msgid ""
1010 "This allows the game to be controlled entirely with the keyboard (or "
1011 "joystick)."
1012 msgstr ""
1013 "Isto permite que o jogo seja controlado inteiramente com o teclado (ou "
1014 "joystick)."
1015
1016 #: ../../../src/MenuConfig.cpp:567
1017 msgid ""
1018 "When 'Move hero using mouse' is enabled, this setting controls if 'Main1' or"
1019 " 'Main2' is used to move the hero. If enabled, 'Main2' will move the hero "
1020 "instead of 'Main1'."
1021 msgstr ""
1022 "Quando a opção 'Mover herói utilizando o rato' está ativa, esta configuração"
1023 " controla se o 'Principal1' ou 'Principal2' é utilizado para mover o herói. "
1024 "Se ativado, o 'Principal2' irá mover o herói em vez do 'Principal1'."
1025
1026 #: ../../../src/MenuConfig.cpp:568
1027 msgid ""
1028 "When 'Move hero using mouse' is enabled, this setting controls if the Power "
1029 "assigned to the movement button can be used by targeting an enemy. If this "
1030 "setting is disabled, it is required to use 'Shift' to access the Power "
1031 "assigned to the movement button."
1032 msgstr ""
1033 "Quando a opção 'Mover herói utilizando o rato' está ativada, esta "
1034 "configuração controla se a potência atribuída ao botão de movimento pode ser"
1035 " utilizada ao colocar em mira um inimigo. Se esta opção estiver desativada, "
1036 "é necessário usar a tecla 'Shift' para aceder à potência atribuída ao botão "
1037 "de movimento."
1038
1039 #: ../../../src/MenuConfig.cpp:569
1040 msgid ""
1041 "The player's attacks will be aimed in the direction of the mouse cursor when"
1042 " this is enabled."
1043 msgstr ""
1044 "Os ataques do jogador serão direcionados na direção do cursor do rato quando"
1045 " isto está ativo."
1046
1047 #: ../../../src/MenuConfig.cpp:570
1048 msgid ""
1049 "When enabled, a virtual gamepad will be added in-game. Other interactions, "
1050 "such as drag-and-drop behavior, are also altered to better suit touch input."
1051 msgstr ""
1052
1053 #: ../../../src/MenuConfig.cpp:621
1054 msgid "Active Mods"
1055 msgstr "Mods ativos"
1056
1057 #: ../../../src/MenuConfig.cpp:630
1058 msgid "Available Mods"
1059 msgstr "Mods disponíveis"
1060
1061 #: ../../../src/MenuConfig.cpp:649
1062 msgid "<< Disable"
1063 msgstr "<< Desativar"
1064
1065 #: ../../../src/MenuConfig.cpp:655
1066 msgid "Enable >>"
1067 msgstr "Ativar >>"
1068
1069 #: ../../../src/MenuConfig.cpp:1536
1070 msgid "Version:"
1071 msgstr "Versão:"
1072
1073 #: ../../../src/MenuConfig.cpp:1541
1074 msgid "Game:"
1075 msgstr "Jogo:"
1076
1077 #: ../../../src/MenuConfig.cpp:1546
1078 msgid "Engine version:"
1079 msgstr "Versão do motor:"
1080
1081 #: ../../../src/MenuConfig.cpp:1554
1082 msgid "Requires mods:"
1083 msgstr "Necessita dos mods:"
1084
1085 #: ../../../src/MenuConfig.cpp:1662 ../../../src/SDLInputState.cpp:750
1086 msgid "(none)"
1087 msgstr "(nenhum)"
1088
1089 #: ../../../src/MenuConfig.cpp:1679 ../../../src/MenuGameOver.cpp:73
1090 msgid "Save & Exit"
1091 msgstr "Gravar e Sair"
1092
1093 #: ../../../src/MenuDevConsole.cpp:65
8401094 msgid "Execute"
8411095 msgstr "Executar"
8421096
843 #: ../../../src/MenuDevConsole.cpp:101 ../../../src/MenuDevConsole.cpp:151
1097 #: ../../../src/MenuDevConsole.cpp:103 ../../../src/MenuDevConsole.cpp:153
8441098 msgid "Developer Console"
8451099 msgstr "Consola de Programador"
8461100
847 #: ../../../src/MenuDevConsole.cpp:141
1101 #: ../../../src/MenuDevConsole.cpp:143
8481102 #, c-format
8491103 msgid "Use '%s' to inspect with the cursor."
8501104 msgstr "Usar '%s' para inspecionar com o cursor."
8511105
852 #: ../../../src/MenuDevConsole.cpp:146
1106 #: ../../../src/MenuDevConsole.cpp:148
8531107 msgid "Arguments with spaces should be enclosed with double quotes. Example:"
8541108 msgstr "Os argumentos com espaços devem estar entre aspas duplas. Exemplo:"
8551109
856 #: ../../../src/MenuDevConsole.cpp:147
1110 #: ../../../src/MenuDevConsole.cpp:149
8571111 msgid "Type 'help' to get a list of commands."
8581112 msgstr "Escrever 'help' para obter uma lista de comandos."
8591113
860 #: ../../../src/MenuDevConsole.cpp:209 ../../../src/MenuDevConsole.cpp:213
1114 #: ../../../src/MenuDevConsole.cpp:211 ../../../src/MenuDevConsole.cpp:215
8611115 msgid "px"
8621116 msgstr "px"
8631117
864 #: ../../../src/MenuDevConsole.cpp:224
1118 #: ../../../src/MenuDevConsole.cpp:226
8651119 msgid "Distance"
8661120 msgstr "Distância"
8671121
868 #: ../../../src/MenuDevConsole.cpp:239 ../../../src/MenuDevConsole.cpp:286
1122 #: ../../../src/MenuDevConsole.cpp:241 ../../../src/MenuDevConsole.cpp:289
1123 #: ../../../src/MenuDevConsole.cpp:303
8691124 msgid "Entity"
8701125 msgstr "Entidade"
8711126
872 #: ../../../src/MenuDevConsole.cpp:261 ../../../src/MenuDevConsole.cpp:268
1127 #: ../../../src/MenuDevConsole.cpp:263 ../../../src/MenuDevConsole.cpp:270
8731128 msgid "none"
8741129 msgstr "nenhum"
8751130
876 #: ../../../src/MenuDevConsole.cpp:262 ../../../src/MenuDevConsole.cpp:264
1131 #: ../../../src/MenuDevConsole.cpp:264 ../../../src/MenuDevConsole.cpp:266
8771132 msgid "wall"
8781133 msgstr "muro"
8791134
880 #: ../../../src/MenuDevConsole.cpp:263 ../../../src/MenuDevConsole.cpp:265
1135 #: ../../../src/MenuDevConsole.cpp:265 ../../../src/MenuDevConsole.cpp:267
8811136 msgid "short wall / pit"
8821137 msgstr "parede curta / fosso"
8831138
884 #: ../../../src/MenuDevConsole.cpp:266
1139 #: ../../../src/MenuDevConsole.cpp:268
8851140 msgid "entity"
8861141 msgstr "entidade"
8871142
888 #: ../../../src/MenuDevConsole.cpp:267
1143 #: ../../../src/MenuDevConsole.cpp:269
8891144 msgid "entity, ally"
8901145 msgstr "entidade, aliado"
8911146
892 #: ../../../src/MenuDevConsole.cpp:274
1147 #: ../../../src/MenuDevConsole.cpp:276
8931148 msgid "Tile"
8941149 msgstr "Tela"
8951150
896 #: ../../../src/MenuDevConsole.cpp:360
1151 #: ../../../src/MenuDevConsole.cpp:377
8971152 msgid "adds a power to the action bar"
8981153 msgstr "adiciona um poder à barra de ação"
8991154
900 #: ../../../src/MenuDevConsole.cpp:361
1155 #: ../../../src/MenuDevConsole.cpp:378
9011156 msgid "turns on/off the display of the FPS counter"
9021157 msgstr "liga / desliga a visualização do contador de FPS"
9031158
904 #: ../../../src/MenuDevConsole.cpp:362
1159 #: ../../../src/MenuDevConsole.cpp:379
9051160 msgid "turns on/off all of the HUD elements"
9061161 msgstr "mostra/oculta todos os elementos do HUD"
9071162
908 #: ../../../src/MenuDevConsole.cpp:363
1163 #: ../../../src/MenuDevConsole.cpp:380
9091164 msgid "turns on/off the developer hud"
9101165 msgstr "mostra/oculta todos o HUD de programador"
9111166
912 #: ../../../src/MenuDevConsole.cpp:364
1167 #: ../../../src/MenuDevConsole.cpp:381
9131168 msgid ""
9141169 "Prints a list of powers that match a search term. No search term will list "
9151170 "all items"
9171172 "Mostra uma lista de poderes que correspondem a um termo pesquisado. Se não "
9181173 "for encontrado nada na pesquisa, mostra todos os itens"
9191174
920 #: ../../../src/MenuDevConsole.cpp:365
1175 #: ../../../src/MenuDevConsole.cpp:382
9211176 msgid "Prints out all the map filenames located in the \"maps/\" directory."
9221177 msgstr ""
9231178 "Mostra todos os nomes de ficheiros de mapas localizados na pasta \"maps/\"."
9241179
925 #: ../../../src/MenuDevConsole.cpp:366
1180 #: ../../../src/MenuDevConsole.cpp:383
9261181 msgid ""
9271182 "Prints out the active campaign statuses that match a search term. No search "
9281183 "term will list all active statuses"
9301185 "Mostra o estado da campanha ativa que corresponde ao termo de pesquisa. Se "
9311186 "não for encontrado nada na pesquisa, mostra todos os estados ativos"
9321187
933 #: ../../../src/MenuDevConsole.cpp:367
1188 #: ../../../src/MenuDevConsole.cpp:384
9341189 msgid ""
9351190 "Prints a list of items that match a search term. No search term will list "
9361191 "all items"
9381193 "Mostra uma lista de todos os itens que correspondem a um termo pesquisado. "
9391194 "Se não for encontrado nada na pesquisa, mostra todos os itens"
9401195
941 #: ../../../src/MenuDevConsole.cpp:368
1196 #: ../../../src/MenuDevConsole.cpp:385
9421197 msgid ""
9431198 "parses a series of event components and executes them as a single event"
9441199 msgstr ""
9451200 "analisa uma série de componentes de eventos e executa-os como um único "
9461201 "evento"
9471202
948 #: ../../../src/MenuDevConsole.cpp:369
1203 #: ../../../src/MenuDevConsole.cpp:386
9491204 msgid "clears the command history"
9501205 msgstr "limpa o histórico de comandos"
9511206
952 #: ../../../src/MenuDevConsole.cpp:370
1207 #: ../../../src/MenuDevConsole.cpp:387
9531208 msgid "displays this text"
9541209 msgstr "mostra este texto"
9551210
956 #: ../../../src/MenuDevConsole.cpp:377
1211 #: ../../../src/MenuDevConsole.cpp:394
9571212 msgid "Toggled the developer hud"
9581213 msgstr "HUD de programador mostrado/oculto"
9591214
960 #: ../../../src/MenuDevConsole.cpp:381
1215 #: ../../../src/MenuDevConsole.cpp:398
9611216 msgid "Toggled the hud"
9621217 msgstr "HUD mostrado/oculto"
9631218
964 #: ../../../src/MenuDevConsole.cpp:385
1219 #: ../../../src/MenuDevConsole.cpp:402
9651220 msgid "Toggled the FPS counter"
9661221 msgstr "Contador de FPS alternado"
9671222
968 #: ../../../src/MenuDevConsole.cpp:534
1223 #: ../../../src/MenuDevConsole.cpp:552
9691224 msgid "ERROR: Incorrect number of arguments"
9701225 msgstr "ERRO: número incorreto de argumentos"
9711226
972 #: ../../../src/MenuDevConsole.cpp:536 ../../../src/MenuDevConsole.cpp:564
1227 #: ../../../src/MenuDevConsole.cpp:554 ../../../src/MenuDevConsole.cpp:582
9731228 msgid "HINT:"
9741229 msgstr "DICA:"
9751230
976 #: ../../../src/MenuDevConsole.cpp:536
1231 #: ../../../src/MenuDevConsole.cpp:554
9771232 msgid "<id>"
9781233 msgstr "<id>"
9791234
980 #: ../../../src/MenuDevConsole.cpp:552
1235 #: ../../../src/MenuDevConsole.cpp:570
9811236 #, c-format
9821237 msgid "ERROR: '%s' is not a valid event key"
9831238 msgstr "ERRO: '%s' não é uma chave de evento válida"
9841239
985 #: ../../../src/MenuDevConsole.cpp:562
1240 #: ../../../src/MenuDevConsole.cpp:580
9861241 msgid "ERROR: Too few arguments"
9871242 msgstr "ERRO: argumentos a menos"
9881243
989 #: ../../../src/MenuDevConsole.cpp:564
1244 #: ../../../src/MenuDevConsole.cpp:582
9901245 msgid "<key>=<val> <key>=<val> ..."
9911246 msgstr "<key>=<val> <key>=<val> ..."
9921247
993 #: ../../../src/MenuDevConsole.cpp:569
1248 #: ../../../src/MenuDevConsole.cpp:587
9941249 msgid "ERROR: Unknown command"
9951250 msgstr "ERRO: comando desconhecido"
9961251
997 #: ../../../src/MenuDevConsole.cpp:571
1252 #: ../../../src/MenuDevConsole.cpp:589
9981253 msgid "HINT: Type help"
9991254 msgstr "DICA: escreve help"
10001255
1001 #: ../../../src/MenuEnemy.cpp:138
1256 #: ../../../src/MenuEnemy.cpp:162
10021257 #, c-format
10031258 msgid "%s level %d"
10041259 msgstr "%s nível %d"
10051260
1006 #: ../../../src/MenuEnemy.cpp:162
1261 #: ../../../src/MenuEnemy.cpp:186
10071262 msgid "Dead"
10081263 msgstr "Morto"
10091264
1010 #: ../../../src/MenuEnemy.cpp:164
1265 #: ../../../src/MenuEnemy.cpp:188
10111266 msgid "Destroyed"
10121267 msgstr "Destruído"
10131268
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
1269 #: ../../../src/MenuGameOver.cpp:69
1270 msgid "Game Over"
1271 msgstr ""
1272
1273 #: ../../../src/MenuInventory.cpp:178
10351274 #, c-format
10361275 msgid "Lost %d%% of %s."
10371276 msgstr "Perdeste %d%% de %s."
10381277
1039 #: ../../../src/MenuInventory.cpp:195
1278 #: ../../../src/MenuInventory.cpp:185
10401279 #, c-format
10411280 msgid "Lost %d%% of total XP."
10421281 msgstr "Perdeste %d%% de um total de EXP."
10431282
1044 #: ../../../src/MenuInventory.cpp:200
1283 #: ../../../src/MenuInventory.cpp:190
10451284 #, c-format
10461285 msgid "Lost %d%% of current level XP."
10471286 msgstr "Perdeste %d%% no nível atual de EXP."
10481287
1049 #: ../../../src/MenuInventory.cpp:226
1288 #: ../../../src/MenuInventory.cpp:216
10501289 #, c-format
10511290 msgid "Lost %s."
10521291 msgstr "Perdeste %s."
10531292
1054 #: ../../../src/MenuInventory.cpp:274 ../../../src/MenuStash.cpp:146
1293 #: ../../../src/MenuInventory.cpp:258 ../../../src/MenuStash.cpp:276
10551294 #, c-format
10561295 msgid "%d %s"
10571296 msgstr "%d %s"
10581297
1059 #: ../../../src/MenuInventory.cpp:317
1298 #: ../../../src/MenuInventory.cpp:301
10601299 msgid "Pick up item(s):"
10611300 msgstr "Apanhar itens:"
10621301
1063 #: ../../../src/MenuInventory.cpp:318
1302 #: ../../../src/MenuInventory.cpp:302
10641303 msgid "Use or equip item:"
10651304 msgstr "Usar ou equipar item:"
10661305
1067 #: ../../../src/MenuInventory.cpp:319
1306 #: ../../../src/MenuInventory.cpp:303
10681307 #, c-format
10691308 msgid "%s modifiers"
10701309 msgstr "%s modificadores"
10711310
1072 #: ../../../src/MenuInventory.cpp:320
1311 #: ../../../src/MenuInventory.cpp:304
10731312 msgid "Select a quantity of item:"
10741313 msgstr "Escolher quantidade de um item:"
10751314
1076 #: ../../../src/MenuInventory.cpp:323
1315 #: ../../../src/MenuInventory.cpp:307
10771316 msgid "Stash item stack:"
10781317 msgstr "Pilha de item no baú:"
10791318
1080 #: ../../../src/MenuInventory.cpp:325
1319 #: ../../../src/MenuInventory.cpp:309
10811320 msgid "Sell item stack:"
10821321 msgstr "Vender pilha de itens:"
10831322
1084 #: ../../../src/MenuInventory.cpp:592
1323 #: ../../../src/MenuInventory.cpp:576
10851324 msgid "You don't have enough of the required item."
10861325 msgstr "Não tens que chegue do item necessário."
10871326
1088 #: ../../../src/MenuInventory.cpp:599
1327 #: ../../../src/MenuInventory.cpp:588
10891328 msgid "You can't use this item right now."
10901329 msgstr "Não podes usar este item agora."
10911330
1092 #: ../../../src/MenuInventory.cpp:611
1331 #: ../../../src/MenuInventory.cpp:600
10931332 msgid "This item can only be used from the action bar."
10941333 msgstr "Este item pode ser usado apenas a partir da barra de ação."
10951334
1096 #: ../../../src/MenuInventory.cpp:729
1335 #: ../../../src/MenuInventory.cpp:718
10971336 msgid "Inventory is full."
10981337 msgstr "O inventário está cheio."
10991338
1100 #: ../../../src/MenuInventory.cpp:849
1339 #: ../../../src/MenuInventory.cpp:843
11011340 #, c-format
11021341 msgid "Not enough %s."
11031342 msgstr "Sem %s suficientes."
11041343
1105 #: ../../../src/MenuInventory.cpp:869 ../../../src/MenuInventory.cpp:876
1344 #: ../../../src/MenuInventory.cpp:863 ../../../src/MenuInventory.cpp:870
11061345 msgid "This item can not be sold."
11071346 msgstr "Este item não pode ser vendido."
11081347
11141353 msgid "Quests"
11151354 msgstr "Missões"
11161355
1117 #: ../../../src/MenuManager.cpp:286
1356 #: ../../../src/MenuManager.cpp:305
11181357 #, c-format
11191358 msgid "XP: %d/%d"
11201359 msgstr "EXP: %d/%d"
11211360
1122 #: ../../../src/MenuManager.cpp:827
1361 #: ../../../src/MenuManager.cpp:875
11231362 msgid "This item can not be dropped."
11241363 msgstr "Este item não pode ser deitado fora."
1364
1365 #: ../../../src/MenuManager.cpp:1501
1366 msgid "Equipped"
1367 msgstr ""
1368
1369 #: ../../../src/MenuMovementType.cpp:87
1370 msgid "Select a Movement Type"
1371 msgstr ""
1372
1373 #: ../../../src/MenuMovementType.cpp:89
1374 msgid "Can be changed later in the Configuration menu."
1375 msgstr ""
1376
1377 #: ../../../src/MenuMovementType.cpp:92 ../../../src/MenuMovementType.cpp:122
1378 msgid "Keyboard"
1379 msgstr ""
1380
1381 #: ../../../src/MenuMovementType.cpp:93 ../../../src/MenuMovementType.cpp:128
1382 msgid "Mouse"
1383 msgstr ""
1384
1385 #: ../../../src/MenuMovementType.cpp:129
1386 msgid "Button"
1387 msgstr ""
11251388
11261389 #: ../../../src/MenuNumPicker.cpp:59
11271390 msgid "Enter amount:"
11281391 msgstr "Introduz a quantidade:"
11291392
1130 #: ../../../src/MenuPowers.cpp:787
1393 #: ../../../src/MenuPowers.cpp:894
11311394 msgid "Passive"
11321395 msgstr "Passivo"
11331396
1134 #: ../../../src/MenuPowers.cpp:792
1397 #: ../../../src/MenuPowers.cpp:901
11351398 #, c-format
11361399 msgid "Costs %d MP"
11371400 msgstr "Custa %d Mana"
11381401
1139 #: ../../../src/MenuPowers.cpp:796
1402 #: ../../../src/MenuPowers.cpp:905
11401403 #, c-format
11411404 msgid "Costs %d HP"
11421405 msgstr "Custa %d PV"
11431406
1144 #: ../../../src/MenuPowers.cpp:801
1407 #: ../../../src/MenuPowers.cpp:909
11451408 msgid "Cooldown:"
11461409 msgstr "Esfriar:"
11471410
1148 #: ../../../src/MenuPowers.cpp:866 ../../../src/MenuPowers.cpp:869
1411 #: ../../../src/MenuPowers.cpp:960 ../../../src/MenuPowers.cpp:963
11491412 msgid "Damage per second"
11501413 msgstr "Dano por segundo"
11511414
1152 #: ../../../src/MenuPowers.cpp:872 ../../../src/MenuPowers.cpp:875
1415 #: ../../../src/MenuPowers.cpp:966 ../../../src/MenuPowers.cpp:969
11531416 msgid "HP per second"
11541417 msgstr "PV por segundo"
11551418
1156 #: ../../../src/MenuPowers.cpp:878 ../../../src/MenuPowers.cpp:881
1419 #: ../../../src/MenuPowers.cpp:972 ../../../src/MenuPowers.cpp:975
11571420 msgid "MP per second"
11581421 msgstr "Mana por segundo"
11591422
1160 #: ../../../src/MenuPowers.cpp:885
1423 #: ../../../src/MenuPowers.cpp:979
11611424 msgid "Immobilize"
11621425 msgstr "Imobilizar"
11631426
1164 #: ../../../src/MenuPowers.cpp:893
1427 #: ../../../src/MenuPowers.cpp:987
11651428 msgid "Immunity"
11661429 msgstr "Imunidade"
11671430
1168 #: ../../../src/MenuPowers.cpp:896
1431 #: ../../../src/MenuPowers.cpp:990
11691432 msgid "Immunity to damage over time"
11701433 msgstr "Imunidade a danos a longo prazo"
11711434
1172 #: ../../../src/MenuPowers.cpp:899
1435 #: ../../../src/MenuPowers.cpp:993
11731436 msgid "Immunity to slow"
11741437 msgstr "Imunidade à lentidão"
11751438
1176 #: ../../../src/MenuPowers.cpp:902
1439 #: ../../../src/MenuPowers.cpp:996
11771440 msgid "Immunity to stun"
11781441 msgstr "Imunidade ao atordoamento"
11791442
1180 #: ../../../src/MenuPowers.cpp:905
1443 #: ../../../src/MenuPowers.cpp:999
11811444 msgid "Immunity to HP steal"
11821445 msgstr "Imunidade ao roubo de PV"
11831446
1184 #: ../../../src/MenuPowers.cpp:908
1447 #: ../../../src/MenuPowers.cpp:1002
11851448 msgid "Immunity to MP steal"
11861449 msgstr "Imunidade a roubo de Mana"
11871450
1188 #: ../../../src/MenuPowers.cpp:911
1451 #: ../../../src/MenuPowers.cpp:1005
11891452 msgid "Immunity to knockback"
11901453 msgstr "Imunidade aos coices"
11911454
1192 #: ../../../src/MenuPowers.cpp:914
1455 #: ../../../src/MenuPowers.cpp:1008
11931456 msgid "Immunity to damage reflection"
11941457 msgstr "Imunidade a reflexão de danos"
11951458
1196 #: ../../../src/MenuPowers.cpp:917
1459 #: ../../../src/MenuPowers.cpp:1014
11971460 msgid "Stun"
11981461 msgstr "Atordoar"
11991462
1200 #: ../../../src/MenuPowers.cpp:920
1463 #: ../../../src/MenuPowers.cpp:1017
12011464 msgid "Automatic revive on death"
12021465 msgstr "Ressuscitar automaticamente ao morrer"
12031466
1204 #: ../../../src/MenuPowers.cpp:923
1467 #: ../../../src/MenuPowers.cpp:1020
12051468 msgid "Convert"
12061469 msgstr "Converter"
12071470
1208 #: ../../../src/MenuPowers.cpp:926
1471 #: ../../../src/MenuPowers.cpp:1023
12091472 msgid "Fear"
12101473 msgstr "Medo"
12111474
1212 #: ../../../src/MenuPowers.cpp:929
1475 #: ../../../src/MenuPowers.cpp:1026
12131476 msgid "Lifespan"
12141477 msgstr "Vida útil"
12151478
1216 #: ../../../src/MenuPowers.cpp:953
1479 #: ../../../src/MenuPowers.cpp:1050
12171480 msgid "Magical Shield"
12181481 msgstr "Escudo Mágico"
12191482
1220 #: ../../../src/MenuPowers.cpp:982
1483 #: ../../../src/MenuPowers.cpp:1079
12211484 msgid "Healing"
12221485 msgstr "Cura"
12231486
1224 #: ../../../src/MenuPowers.cpp:985
1487 #: ../../../src/MenuPowers.cpp:1082
12251488 msgid "Knockback"
12261489 msgstr "Coice"
12271490
1228 #: ../../../src/MenuPowers.cpp:1010
1491 #: ../../../src/MenuPowers.cpp:1106
12291492 #, c-format
12301493 msgid "%d%% chance"
12311494 msgstr "%d%% chance"
12321495
1233 #: ../../../src/MenuPowers.cpp:1062
1496 #: ../../../src/MenuPowers.cpp:1158
12341497 msgid "Base Accuracy"
12351498 msgstr "Precisão Básica"
12361499
1237 #: ../../../src/MenuPowers.cpp:1082
1500 #: ../../../src/MenuPowers.cpp:1178
12381501 msgid "Base Critical Chance"
12391502 msgstr "Chance Crítica Base"
12401503
1241 #: ../../../src/MenuPowers.cpp:1090
1504 #: ../../../src/MenuPowers.cpp:1186
12421505 msgid "Ignores Absorbtion"
12431506 msgstr "Ignora Absorção"
12441507
1245 #: ../../../src/MenuPowers.cpp:1095
1508 #: ../../../src/MenuPowers.cpp:1191
12461509 msgid "Ignores Avoidance"
12471510 msgstr "Ignora Esquivar"
12481511
1249 #: ../../../src/MenuPowers.cpp:1100
1512 #: ../../../src/MenuPowers.cpp:1196
12501513 #, c-format
12511514 msgid "%d%% Chance to crit slowed targets"
12521515 msgstr "%d%% chance de acerto crítico em alvos tornados lentos"
12531516
1254 #: ../../../src/MenuPowers.cpp:1105
1517 #: ../../../src/MenuPowers.cpp:1201
12551518 #, c-format
12561519 msgid "Elemental Damage (%s)"
12571520 msgstr "Dano Elemental (%s)"
12581521
1259 #: ../../../src/MenuPowers.cpp:1114
1522 #: ../../../src/MenuPowers.cpp:1210
12601523 #, c-format
12611524 msgid "Requires a %s"
12621525 msgstr "Requer um %s"
12631526
1264 #: ../../../src/MenuPowers.cpp:1151 ../../../src/MenuPowers.cpp:1154
1527 #: ../../../src/MenuPowers.cpp:1248 ../../../src/MenuPowers.cpp:1251
12651528 #, c-format
12661529 msgid "Requires Power: %s"
12671530 msgstr "Requer Poder: %s"
12681531
1269 #: ../../../src/MenuPowers.cpp:1163
1532 #: ../../../src/MenuPowers.cpp:1260
12701533 msgid "Click to Unlock (uses 1 Skill Point)"
12711534 msgstr "Clica para desbloquear (utiliza 1 Ponto de Habilidade)"
12721535
1273 #: ../../../src/MenuPowers.cpp:1167 ../../../src/MenuPowers.cpp:1169
1536 #: ../../../src/MenuPowers.cpp:1264 ../../../src/MenuPowers.cpp:1266
12741537 msgid "Requires 1 Skill Point"
12751538 msgstr "Requer 1 Ponto de Habilidade"
12761539
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
1540 #: ../../../src/MenuPowers.cpp:1466
1541 #, c-format
1542 msgid "Available skill points: %d"
1543 msgstr ""
1544
1545 #: ../../../src/MenuPowers.cpp:1498
12881546 msgid "Next Level:"
12891547 msgstr "Próximo Nível:"
12901548
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
1549 #: ../../../src/MenuStash.cpp:80 ../../../src/MenuStash.cpp:161
1550 msgid "Stash"
1551 msgstr ""
1552
1553 #: ../../../src/MenuStash.cpp:174 ../../../src/MenuStash.cpp:188
1554 msgid "Private"
1555 msgstr ""
1556
1557 #: ../../../src/MenuStash.cpp:175
1558 msgid "Shared"
1559 msgstr ""
1560
1561 #: ../../../src/MenuStash.cpp:340
1562 msgid "This item can not be stored in the stash."
1563 msgstr "Este item não pode ser guardado no baú."
1564
1565 #: ../../../src/MenuStash.cpp:345
1566 msgid "This item can not be stored in the private stash."
1567 msgstr ""
1568
1569 #: ../../../src/MenuStash.cpp:350
1570 msgid "This item can not be stored in the shared stash."
1571 msgstr ""
1572
1573 #: ../../../src/MenuStash.cpp:360
13001574 msgid "Stash is full."
13011575 msgstr "O baú está cheio."
13021576
1303 #: ../../../src/MenuTalker.cpp:454
1577 #: ../../../src/MenuStash.cpp:414
1578 #, c-format
1579 msgid "Can not store item in stash: %s"
1580 msgstr "Não é possível guardar os itens no baú: %s"
1581
1582 #: ../../../src/MenuTalker.cpp:448
1583 #, c-format
1584 msgid "<dialog node %d>"
1585 msgstr "<nó de diálogo %d>"
1586
1587 #: ../../../src/MenuTalker.cpp:456
13041588 msgid "Trade"
13051589 msgstr "Comércio"
13061590
1307 #: ../../../src/MenuVendor.cpp:58
1591 #: ../../../src/MenuVendor.cpp:60
13081592 msgid "Buyback"
13091593 msgstr "Recompra"
13101594
1311 #: ../../../src/MenuVendor.cpp:279
1595 #: ../../../src/MenuVendor.cpp:283
13121596 msgid "Vendor"
13131597 msgstr "Vendedor"
13141598
1315 #: ../../../src/PowerManager.cpp:1136
1599 #: ../../../src/PowerManager.cpp:1204
13161600 #, c-format
13171601 msgid "+%d Shield"
13181602 msgstr "Escudo +%d"
13191603
1320 #: ../../../src/PowerManager.cpp:1392
1604 #: ../../../src/PowerManager.cpp:1461
13211605 msgid "You are already transformed, untransform first."
13221606 msgstr "Já estás transformado, destransforma-te primeiro."
13231607
1324 #: ../../../src/PowerManager.cpp:1404
1608 #: ../../../src/PowerManager.cpp:1473
13251609 msgid "Could not untransform at this position."
13261610 msgstr "Não foi possível desfazer a transformação nesta posição."
13271611
13291613 msgid "Completed Quests"
13301614 msgstr "Missões Concluídas"
13311615
1332 #: ../../../src/SaveLoad.cpp:243 ../../../src/SaveLoad.cpp:244
1616 #: ../../../src/SaveLoad.cpp:250 ../../../src/SaveLoad.cpp:251
13331617 msgid "Game saved."
13341618 msgstr "Jogo gravado."
13351619
1336 #: ../../../src/SDLInputState.cpp:582
1620 #: ../../../src/SDLInputState.cpp:645
1621 msgid "BkSp"
1622 msgstr ""
1623
1624 #: ../../../src/SDLInputState.cpp:646
1625 msgid "Caps"
1626 msgstr ""
1627
1628 #: ../../../src/SDLInputState.cpp:647
1629 msgid "Del"
1630 msgstr ""
1631
1632 #: ../../../src/SDLInputState.cpp:649 ../../../src/SDLInputState.cpp:679
1633 msgid "End"
1634 msgstr "End"
1635
1636 #: ../../../src/SDLInputState.cpp:650
1637 msgid "Esc"
1638 msgstr ""
1639
1640 #: ../../../src/SDLInputState.cpp:651 ../../../src/SDLInputState.cpp:681
1641 msgid "Home"
1642 msgstr "Home"
1643
1644 #: ../../../src/SDLInputState.cpp:652
1645 msgid "Ins"
1646 msgstr ""
1647
1648 #: ../../../src/SDLInputState.cpp:653
1649 msgid "LAlt"
1650 msgstr ""
1651
1652 #: ../../../src/SDLInputState.cpp:654
1653 msgid "LCtrl"
1654 msgstr ""
1655
1656 #: ../../../src/SDLInputState.cpp:656
1657 msgid "LShft"
1658 msgstr ""
1659
1660 #: ../../../src/SDLInputState.cpp:657
1661 msgid "Num"
1662 msgstr ""
1663
1664 #: ../../../src/SDLInputState.cpp:658
1665 msgid "PgDn"
1666 msgstr ""
1667
1668 #: ../../../src/SDLInputState.cpp:659
1669 msgid "PgUp"
1670 msgstr ""
1671
1672 #: ../../../src/SDLInputState.cpp:660 ../../../src/SDLInputState.cpp:690
1673 msgid "Pause"
1674 msgstr "Pause"
1675
1676 #: ../../../src/SDLInputState.cpp:661
1677 msgid "Print"
1678 msgstr ""
1679
1680 #: ../../../src/SDLInputState.cpp:662
1681 msgid "RAlt"
1682 msgstr ""
1683
1684 #: ../../../src/SDLInputState.cpp:663
1685 msgid "RCtrl"
1686 msgstr ""
1687
1688 #: ../../../src/SDLInputState.cpp:664
1689 msgid "Ret"
1690 msgstr ""
1691
1692 #: ../../../src/SDLInputState.cpp:666
1693 msgid "RShft"
1694 msgstr ""
1695
1696 #: ../../../src/SDLInputState.cpp:667
1697 msgid "SLock"
1698 msgstr ""
1699
1700 #: ../../../src/SDLInputState.cpp:668
1701 msgid "Spc"
1702 msgstr ""
1703
1704 #: ../../../src/SDLInputState.cpp:669 ../../../src/SDLInputState.cpp:699
1705 msgid "Tab"
1706 msgstr "Tab"
1707
1708 #: ../../../src/SDLInputState.cpp:675
13371709 msgid "Backspace"
13381710 msgstr "Retroceder"
13391711
1340 #: ../../../src/SDLInputState.cpp:583
1712 #: ../../../src/SDLInputState.cpp:676
13411713 msgid "CapsLock"
13421714 msgstr "Tecla de Maiúsculas"
13431715
1344 #: ../../../src/SDLInputState.cpp:586
1345 msgid "End"
1346 msgstr "End"
1347
1348 #: ../../../src/SDLInputState.cpp:587
1716 #: ../../../src/SDLInputState.cpp:680
13491717 msgid "Escape"
13501718 msgstr "Escape"
13511719
1352 #: ../../../src/SDLInputState.cpp:588
1353 msgid "Home"
1354 msgstr "Home"
1355
1356 #: ../../../src/SDLInputState.cpp:589
1720 #: ../../../src/SDLInputState.cpp:682
13571721 msgid "Insert"
13581722 msgstr "Insert"
13591723
1360 #: ../../../src/SDLInputState.cpp:590
1724 #: ../../../src/SDLInputState.cpp:683
13611725 msgid "Left Alt"
13621726 msgstr "Alt Esquerdo"
13631727
1364 #: ../../../src/SDLInputState.cpp:591
1728 #: ../../../src/SDLInputState.cpp:684
13651729 msgid "Left Ctrl"
13661730 msgstr "Ctrl Esquerdo"
13671731
1368 #: ../../../src/SDLInputState.cpp:593
1732 #: ../../../src/SDLInputState.cpp:686
13691733 msgid "Left Shift"
13701734 msgstr "Shift Esquerdo"
13711735
1372 #: ../../../src/SDLInputState.cpp:594
1736 #: ../../../src/SDLInputState.cpp:687
13731737 msgid "NumLock"
13741738 msgstr "NumLock"
13751739
1376 #: ../../../src/SDLInputState.cpp:595
1740 #: ../../../src/SDLInputState.cpp:688
13771741 msgid "PageDown"
13781742 msgstr "PageDown"
13791743
1380 #: ../../../src/SDLInputState.cpp:596
1744 #: ../../../src/SDLInputState.cpp:689
13811745 msgid "PageUp"
13821746 msgstr "PageUp"
13831747
1384 #: ../../../src/SDLInputState.cpp:597
1385 msgid "Pause"
1386 msgstr "Pause"
1387
1388 #: ../../../src/SDLInputState.cpp:598
1748 #: ../../../src/SDLInputState.cpp:691
13891749 msgid "PrintScreen"
13901750 msgstr "PrintScreen"
13911751
1392 #: ../../../src/SDLInputState.cpp:599
1752 #: ../../../src/SDLInputState.cpp:692
13931753 msgid "Right Alt"
13941754 msgstr "Alt Direito"
13951755
1396 #: ../../../src/SDLInputState.cpp:600
1756 #: ../../../src/SDLInputState.cpp:693
13971757 msgid "Right Ctrl"
13981758 msgstr "Ctrl Direito"
13991759
1400 #: ../../../src/SDLInputState.cpp:601
1760 #: ../../../src/SDLInputState.cpp:694
14011761 msgid "Return"
14021762 msgstr "Enter"
14031763
1404 #: ../../../src/SDLInputState.cpp:603
1764 #: ../../../src/SDLInputState.cpp:696
14051765 msgid "Right Shift"
14061766 msgstr "Shift Direito"
14071767
1408 #: ../../../src/SDLInputState.cpp:604
1768 #: ../../../src/SDLInputState.cpp:697
14091769 msgid "ScrollLock"
14101770 msgstr "ScrollLock"
14111771
1412 #: ../../../src/SDLInputState.cpp:605
1772 #: ../../../src/SDLInputState.cpp:698
14131773 msgid "Space"
14141774 msgstr "Espaço"
14151775
1416 #: ../../../src/SDLInputState.cpp:606
1417 msgid "Tab"
1418 msgstr "Tab"
1419
1420 #: ../../../src/SDLInputState.cpp:620
1776 #: ../../../src/SDLInputState.cpp:712
1777 #, c-format
1778 msgid "M%d"
1779 msgstr ""
1780
1781 #: ../../../src/SDLInputState.cpp:718
14211782 #, c-format
14221783 msgid "Mouse %d"
14231784 msgstr "Rato %d"
14241785
1425 #: ../../../src/SDLInputState.cpp:628
1786 #: ../../../src/SDLInputState.cpp:728
1787 #, c-format
1788 msgid "JX%d-"
1789 msgstr ""
1790
1791 #: ../../../src/SDLInputState.cpp:730
14261792 #, c-format
14271793 msgid "Axis %d -"
14281794 msgstr "Eixo %d -"
14291795
1430 #: ../../../src/SDLInputState.cpp:630
1796 #: ../../../src/SDLInputState.cpp:734
1797 #, c-format
1798 msgid "JX%d+"
1799 msgstr ""
1800
1801 #: ../../../src/SDLInputState.cpp:736
14311802 #, c-format
14321803 msgid "Axis %d +"
14331804 msgstr "Eixo %d +"
14341805
1435 #: ../../../src/SDLInputState.cpp:633
1806 #: ../../../src/SDLInputState.cpp:741
1807 #, c-format
1808 msgid "JB%d"
1809 msgstr ""
1810
1811 #: ../../../src/SDLInputState.cpp:743
14361812 #, c-format
14371813 msgid "Button %d"
14381814 msgstr "Botão %d"
14391815
1440 #: ../../../src/SDLInputState.cpp:637
1441 msgid "(none)"
1442 msgstr "(nenhum)"
1443
1444 #: ../../../src/SDLInputState.cpp:677
1816 #: ../../../src/SDLInputState.cpp:789
14451817 msgid "Touch control D-Pad"
14461818 msgstr "D-Pad sensível ao toque"
14471819
1448 #: ../../../src/SDLInputState.cpp:701
1820 #: ../../../src/SDLInputState.cpp:812
14491821 msgid "Touch control buttons"
14501822 msgstr "Botões sensíveis ao toque"
14511823
1452 #: ../../../src/SDLInputState.cpp:716
1824 #: ../../../src/SDLInputState.cpp:826
14531825 msgid "Tap"
14541826 msgstr "Toque"
14551827
1456 #: ../../../src/SDLInputState.cpp:760 ../../../src/SDLInputState.cpp:764
1457 #: ../../../src/SDLInputState.cpp:768
1828 #: ../../../src/SDLInputState.cpp:878 ../../../src/SDLInputState.cpp:880
1829 #, c-format
1830 msgid "Can not bind: %s"
1831 msgstr "Não é possível associar: %s"
1832
1833 #: ../../../src/SDLInputState.cpp:892 ../../../src/SDLInputState.cpp:896
1834 #: ../../../src/SDLInputState.cpp:900
14581835 #, c-format
14591836 msgid "'%s' is no longer bound to:"
14601837 msgstr "'%s' já não está associado a:"
16171994 msgid "Base MP"
16181995 msgstr "Mana base"
16191996
1620 #: ../../../src/Utils.cpp:346
1997 #: ../../../src/Utils.cpp:365
16211998 msgid "k"
16221999 msgstr "m"
16232000
1624 #: ../../../src/Utils.cpp:580
2001 #: ../../../src/Utils.cpp:635
16252002 #, c-format
16262003 msgid "%s second"
16272004 msgstr "%s segundo"
16282005
1629 #: ../../../src/Utils.cpp:583
2006 #: ../../../src/Utils.cpp:638
16302007 #, c-format
16312008 msgid "%s seconds"
16322009 msgstr "%s segundos"
33 # FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
44 #
55 # Translators:
6 # Vicente Monteiro, 2018
7 # Rui <xymarior@yandex.com>, 2018
6 # Rui <xymarior@yandex.com>, 2019
7 # Rafael Fontenelle <rffontenelle@gmail.com>, 2021
8 # Vicente Monteiro, 2021
89 #
910 #, fuzzy
1011 msgid ""
1112 msgstr ""
1213 "Project-Id-Version: PACKAGE VERSION\n"
1314 "Report-Msgid-Bugs-To: \n"
14 "POT-Creation-Date: 2018-11-17 21:50-0500\n"
15 "POT-Creation-Date: 2021-07-02 13:26-0400\n"
1516 "PO-Revision-Date: 2018-03-28 19:16+0000\n"
16 "Last-Translator: Rui <xymarior@yandex.com>, 2018\n"
17 "Last-Translator: Vicente Monteiro, 2021\n"
1718 "Language-Team: Portuguese (Brazil) (https://www.transifex.com/flareorg/teams/84925/pt_BR/)\n"
1819 "MIME-Version: 1.0\n"
1920 "Content-Type: text/plain; charset=UTF-8\n"
2122 "Language: pt_BR\n"
2223 "Plural-Forms: nplurals=2; plural=(n > 1);\n"
2324
24 #: ../../../src/Avatar.cpp:367
25 #: ../../../src/Avatar.cpp:391
26 msgid "Your health is low!"
27 msgstr "Sua saúde está baixa!"
28
29 #: ../../../src/Avatar.cpp:421
2530 #, c-format
2631 msgid "Congratulations, you have reached level %d!"
2732 msgstr "Parabéns, você atingiu o nível %d!"
2833
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
34 #: ../../../src/Avatar.cpp:423
35 msgid "You may increase one or more attributes through the Character Menu."
36 msgstr ""
37 "Você pode aprimorar um ou mais atributos através do Menu do Personagem."
38
39 #: ../../../src/Avatar.cpp:427
40 msgid "You may unlock one or more abilities through the Powers Menu."
41 msgstr "Você pode ativar uma ou mais habilidades através do Menu de Poderes"
42
43 #: ../../../src/Avatar.cpp:689
44 msgid "You are defeated."
45 msgstr "Você foi derrotado."
46
47 #: ../../../src/Avatar.cpp:935
4448 msgid "Transformation expired. You have been moved back to a safe place."
4549 msgstr "Transformação expirada. Você foi transferido a um lugar seguro."
4650
47 #: ../../../src/CampaignManager.cpp:153
51 #: ../../../src/CampaignManager.cpp:152
4852 #, c-format
4953 msgid "%d %s removed."
5054 msgstr "%d %s removido."
5155
52 #: ../../../src/CampaignManager.cpp:162
56 #: ../../../src/CampaignManager.cpp:171
57 #, c-format
58 msgid "%s x%d removed."
59 msgstr "%s x%d removido."
60
61 #: ../../../src/CampaignManager.cpp:173
5362 #, c-format
5463 msgid "%s removed."
5564 msgstr "%s removido."
5665
57 #: ../../../src/CampaignManager.cpp:175
66 #: ../../../src/CampaignManager.cpp:187
67 #, c-format
68 msgid "You receive %d %s."
69 msgstr "Você recebeu %d %s."
70
71 #: ../../../src/CampaignManager.cpp:191
72 #, c-format
73 msgid "You receive %s x%d."
74 msgstr "Você recebeu %s x%d."
75
76 #: ../../../src/CampaignManager.cpp:193
5877 #, c-format
5978 msgid "You receive %s."
6079 msgstr "Você recebeu %s."
6180
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
81 #: ../../../src/CampaignManager.cpp:210
7382 #, c-format
7483 msgid "You receive %d XP."
7584 msgstr "Você recebeu %d XP."
7685
77 #: ../../../src/CampaignManager.cpp:201
86 #: ../../../src/CampaignManager.cpp:216
7887 msgid "HP restored."
7988 msgstr "HP restaurado."
8089
81 #: ../../../src/CampaignManager.cpp:205
90 #: ../../../src/CampaignManager.cpp:220
8291 msgid "MP restored."
8392 msgstr "MP restaurado."
8493
85 #: ../../../src/CampaignManager.cpp:210
94 #: ../../../src/CampaignManager.cpp:225
8695 msgid "HP and MP restored."
8796 msgstr "HP e MP restaurados."
8897
89 #: ../../../src/CampaignManager.cpp:214
98 #: ../../../src/CampaignManager.cpp:229
9099 msgid "Negative effects removed."
91100 msgstr "Efeitos negativos removidos."
92101
93 #: ../../../src/CampaignManager.cpp:220
102 #: ../../../src/CampaignManager.cpp:235
94103 msgid "HP and MP restored, negative effects removed"
95104 msgstr "HP e MP restaurados, efeitos negativos removidos"
96105
114123 "\n"
115124 "O renderizador padrão, geralmente mais rápido que o renderizador SDL software."
116125
117 #: ../../../src/EngineSettings.cpp:561
126 #: ../../../src/EngineSettings.cpp:586
118127 msgid "Adventurer"
119128 msgstr "Aventureiro"
120129
121 #: ../../../src/Entity.cpp:511
130 #: ../../../src/Entity.cpp:527
122131 msgid "miss"
123132 msgstr "errou"
124133
125 #: ../../../src/Entity.cpp:548 ../../../src/PowerManager.cpp:1152
126 #: ../../../src/StatBlock.cpp:805 ../../../src/StatBlock.cpp:811
134 #: ../../../src/Entity.cpp:565 ../../../src/PowerManager.cpp:1220
135 #: ../../../src/StatBlock.cpp:926 ../../../src/StatBlock.cpp:932
127136 #, c-format
128137 msgid "+%d HP"
129138 msgstr "+%d HP"
130139
131 #: ../../../src/Entity.cpp:555 ../../../src/StatBlock.cpp:816
132 #: ../../../src/StatBlock.cpp:822
140 #: ../../../src/Entity.cpp:572 ../../../src/StatBlock.cpp:937
141 #: ../../../src/StatBlock.cpp:943
133142 #, c-format
134143 msgid "+%d MP"
135144 msgstr "+%d MP"
136145
137 #: ../../../src/EventManager.cpp:738
146 #: ../../../src/EventManager.cpp:792
138147 msgid "Unknown destination"
139148 msgstr "Destino desconhecido"
140149
141 #: ../../../src/GameStateConfigBase.cpp:89
142 #: ../../../src/GameStateConfigBase.cpp:110
150 #: ../../../src/GameState.cpp:37 ../../../src/GameState.cpp:58
151 msgid "Loading..."
152 msgstr "Carregando..."
153
154 #: ../../../src/GameStateLoad.cpp:90 ../../../src/GameStateLoad.cpp:103
155 msgid "Delete Save"
156 msgstr "Excluir"
157
158 #: ../../../src/GameStateLoad.cpp:90
159 msgid "Delete this save?"
160 msgstr "Excluir jogo salvo?"
161
162 #: ../../../src/GameStateLoad.cpp:92
163 msgid "Exit to Title"
164 msgstr "Voltar"
165
166 #: ../../../src/GameStateLoad.cpp:95
167 msgid "New Game"
168 msgstr "Novo"
169
170 #: ../../../src/GameStateLoad.cpp:99 ../../../src/GameStateLoad.cpp:607
171 msgid "Choose a Slot"
172 msgstr "Selecione um espaço"
173
174 #: ../../../src/GameStateLoad.cpp:580 ../../../src/GameStateLoad.cpp:601
175 msgid "Enable a story mod to continue"
176 msgstr "Ative o mod de campanha para continuar"
177
178 #: ../../../src/GameStateLoad.cpp:596
179 msgid "Load Game"
180 msgstr "Continuar"
181
182 #: ../../../src/GameStateLoad.cpp:704
183 msgid "Entering game world..."
184 msgstr "Entrando no mundo do jogo..."
185
186 #: ../../../src/GameStateLoad.cpp:707
187 msgid "Loading saved game..."
188 msgstr "Carregando jogo salvo..."
189
190 #: ../../../src/GameStateLoad.cpp:740
191 msgid "Invalid save"
192 msgstr "Jogo salvo inválido"
193
194 #: ../../../src/GameStateLoad.cpp:764 ../../../src/ItemManager.cpp:745
195 #: ../../../src/MenuPowers.cpp:882 ../../../src/MenuPowers.cpp:1241
196 #: ../../../src/MenuPowers.cpp:1653
197 #, c-format
198 msgid "Level %d"
199 msgstr "Nível %d"
200
201 #: ../../../src/GameStateNew.cpp:66 ../../../src/InputState.cpp:416
202 #: ../../../src/MenuConfig.cpp:254
203 msgid "Cancel"
204 msgstr "Cancelar"
205
206 #: ../../../src/GameStateNew.cpp:69
207 msgid "Create"
208 msgstr "Criar"
209
210 #: ../../../src/GameStateNew.cpp:77
211 msgid "Randomize"
212 msgstr "Aleatória"
213
214 #: ../../../src/GameStateNew.cpp:93
215 msgid "Choose a Portrait"
216 msgstr "Escolha um retrato"
217
218 #: ../../../src/GameStateNew.cpp:97
219 msgid "Choose a Name"
220 msgstr "Digite um nome"
221
222 #: ../../../src/GameStateNew.cpp:101
223 msgid "Permadeath?"
224 msgstr "Morte permanente?"
225
226 #: ../../../src/GameStateNew.cpp:105
227 msgid "Choose a Class"
228 msgstr "Escolha uma classe"
229
230 #: ../../../src/GameStateTitle.cpp:107
231 msgid "Play Game"
232 msgstr "Jogar"
233
234 #: ../../../src/GameStateTitle.cpp:110
235 msgid "Enable a core mod to continue"
236 msgstr "Ative o mod core para continuar"
237
238 #: ../../../src/GameStateTitle.cpp:114 ../../../src/MenuMiniMap.cpp:152
239 msgid "Configuration"
240 msgstr "Opções "
241
242 #: ../../../src/GameStateTitle.cpp:117
243 msgid "Credits"
244 msgstr "Sobre"
245
246 #: ../../../src/GameStateTitle.cpp:120
247 msgid "Exit Game"
248 msgstr "Sair"
249
250 #: ../../../src/InputState.cpp:417
251 msgid "Accept"
252 msgstr "Aceitar"
253
254 #: ../../../src/InputState.cpp:418 ../../../src/MenuMovementType.cpp:123
255 #: ../../../src/MenuMovementType.cpp:132 ../../../src/SDLInputState.cpp:670
256 #: ../../../src/SDLInputState.cpp:700
257 msgid "Up"
258 msgstr "Cima"
259
260 #: ../../../src/InputState.cpp:419 ../../../src/MenuMovementType.cpp:125
261 #: ../../../src/MenuMovementType.cpp:134 ../../../src/SDLInputState.cpp:648
262 #: ../../../src/SDLInputState.cpp:678
263 msgid "Down"
264 msgstr "Baixo"
265
266 #: ../../../src/InputState.cpp:420 ../../../src/MenuMovementType.cpp:124
267 #: ../../../src/MenuMovementType.cpp:133 ../../../src/SDLInputState.cpp:655
268 #: ../../../src/SDLInputState.cpp:685
269 msgid "Left"
270 msgstr "Esquerda"
271
272 #: ../../../src/InputState.cpp:421 ../../../src/MenuMovementType.cpp:126
273 #: ../../../src/MenuMovementType.cpp:135 ../../../src/SDLInputState.cpp:665
274 #: ../../../src/SDLInputState.cpp:695
275 msgid "Right"
276 msgstr "Direita"
277
278 #: ../../../src/InputState.cpp:422
279 msgid "Bar1"
280 msgstr "Barra1"
281
282 #: ../../../src/InputState.cpp:423
283 msgid "Bar2"
284 msgstr "Barra2"
285
286 #: ../../../src/InputState.cpp:424
287 msgid "Bar3"
288 msgstr "Barra3"
289
290 #: ../../../src/InputState.cpp:425
291 msgid "Bar4"
292 msgstr "Barra4"
293
294 #: ../../../src/InputState.cpp:426
295 msgid "Bar5"
296 msgstr "Barra5"
297
298 #: ../../../src/InputState.cpp:427
299 msgid "Bar6"
300 msgstr "Barra6"
301
302 #: ../../../src/InputState.cpp:428
303 msgid "Bar7"
304 msgstr "Barra7"
305
306 #: ../../../src/InputState.cpp:429
307 msgid "Bar8"
308 msgstr "Barra8"
309
310 #: ../../../src/InputState.cpp:430
311 msgid "Bar9"
312 msgstr "Barra9"
313
314 #: ../../../src/InputState.cpp:431
315 msgid "Bar0"
316 msgstr "Barra0"
317
318 #: ../../../src/InputState.cpp:432 ../../../src/MenuActionBar.cpp:84
319 #: ../../../src/MenuCharacter.cpp:54
320 msgid "Character"
321 msgstr "Personagem"
322
323 #: ../../../src/InputState.cpp:433 ../../../src/MenuActionBar.cpp:85
324 #: ../../../src/MenuInventory.cpp:130 ../../../src/MenuVendor.cpp:59
325 msgid "Inventory"
326 msgstr "Inventário"
327
328 #: ../../../src/InputState.cpp:434 ../../../src/MenuActionBar.cpp:86
329 #: ../../../src/MenuPowers.cpp:159
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 "Diário"
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:677
359 msgid "Delete"
360 msgstr "Delete"
361
362 #: ../../../src/InputState.cpp:442
363 msgid "ActionBar Accept"
364 msgstr "Barra de Ação Aceitar"
365
366 #: ../../../src/InputState.cpp:443
367 msgid "ActionBar Left"
368 msgstr "Barra de Ação Esquerda"
369
370 #: ../../../src/InputState.cpp:444
371 msgid "ActionBar Right"
372 msgstr "Barra de Ação Direita"
373
374 #: ../../../src/InputState.cpp:445
375 msgid "ActionBar Use"
376 msgstr "Barra de Ação Usar"
377
378 #: ../../../src/InputState.cpp:446
379 msgid "Developer Menu"
380 msgstr "Menu do desenvolvedor"
381
382 #: ../../../src/InputState.cpp:448
383 msgid "Left Mouse"
384 msgstr "Mouse esq."
385
386 #: ../../../src/InputState.cpp:449
387 msgid "Middle Mouse"
388 msgstr "Mouse do Meio"
389
390 #: ../../../src/InputState.cpp:450
391 msgid "Right Mouse"
392 msgstr "Mouse dir."
393
394 #: ../../../src/InputState.cpp:451
395 msgid "Wheel Up"
396 msgstr "Roda para Cima"
397
398 #: ../../../src/InputState.cpp:452
399 msgid "Wheel Down"
400 msgstr "Roda para Baixo"
401
402 #: ../../../src/InputState.cpp:453
403 msgid "Mouse X1"
404 msgstr "Mouse X1"
405
406 #: ../../../src/InputState.cpp:454
407 msgid "Mouse X2"
408 msgstr "Mouse X2"
409
410 #: ../../../src/ItemManager.cpp:475
411 msgid "Unknown Item"
412 msgstr "Item Desconhecido"
413
414 #: ../../../src/ItemManager.cpp:646 ../../../src/MenuPowers.cpp:981
415 #, c-format
416 msgid "%d%% Speed"
417 msgstr "%d%% Velocidade"
418
419 #: ../../../src/ItemManager.cpp:650 ../../../src/MenuPowers.cpp:984
420 #, c-format
421 msgid "%d%% Attack Speed"
422 msgstr "%d%% Velocidade de Ataque"
423
424 #: ../../../src/ItemManager.cpp:672 ../../../src/MenuCharacter.cpp:352
425 #: ../../../src/MenuPowers.cpp:953
426 #, c-format
427 msgid "Resistance (%s)"
428 msgstr "Resistência (%s)"
429
430 #: ../../../src/ItemManager.cpp:682
431 #, c-format
432 msgid "Requires %s"
433 msgstr "Necessário %s"
434
435 #: ../../../src/ItemManager.cpp:731
436 msgid "Quest Item"
437 msgstr "Item de Missão"
438
439 #: ../../../src/ItemManager.cpp:758
440 #, c-format
441 msgid "Quality: %s"
442 msgstr "Quantidade: %s"
443
444 #: ../../../src/ItemManager.cpp:783
445 #, c-format
446 msgid "Absorb: %d-%d"
447 msgstr "Absorver: %d-%d"
448
449 #: ../../../src/ItemManager.cpp:785
450 #, c-format
451 msgid "Absorb: %d"
452 msgstr "Absorver: %d"
453
454 #: ../../../src/ItemManager.cpp:825 ../../../src/MenuPowers.cpp:1228
455 #: ../../../src/MenuPowers.cpp:1231
456 #, c-format
457 msgid "Requires Level %d"
458 msgstr "Nível Necessário %d"
459
460 #: ../../../src/ItemManager.cpp:836 ../../../src/MenuPowers.cpp:1220
461 #: ../../../src/MenuPowers.cpp:1222
462 #, c-format
463 msgid "Requires %s %d"
464 msgstr "Necessário %s %d"
465
466 #: ../../../src/ItemManager.cpp:847
467 #, c-format
468 msgid "Requires Class: %s"
469 msgstr "Classe Necessária : %s"
470
471 #: ../../../src/ItemManager.cpp:863 ../../../src/ItemManager.cpp:875
472 #, c-format
473 msgid "Buy Price: %d %s"
474 msgstr "Preço 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 "Preço de Compra: %d %s cada"
480
481 #: ../../../src/ItemManager.cpp:885
482 #, c-format
483 msgid "Sell Price: %d %s"
484 msgstr "Preço de Venda: %d %s"
485
486 #: ../../../src/ItemManager.cpp:887
487 #, c-format
488 msgid "Sell Price: %d %s each"
489 msgstr "Preço de Venda: %d %s cada"
490
491 #: ../../../src/ItemManager.cpp:898
492 msgid "Set:"
493 msgstr "Conjunto:"
494
495 #: ../../../src/ItemManager.cpp:905
496 #, c-format
497 msgid "%d items:"
498 msgstr "%d Items:"
499
500 #: ../../../src/ItemManager.cpp:920
501 #, c-format
502 msgid "Press [%s] to read"
503 msgstr "Pressione [%s] para ler"
504
505 #: ../../../src/ItemManager.cpp:923
506 #, c-format
507 msgid "Press [%s] to use"
508 msgstr "Pressione [%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 "Atalho: %s"
515
516 #: ../../../src/MenuActionBar.cpp:621
517 msgid "Not enough MP."
518 msgstr "MP insuficiente."
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 "Restante:"
528
529 #: ../../../src/MenuActiveEffects.cpp:225
530 #, c-format
531 msgid "x%d stacks"
532 msgstr "x%d pilhas"
533
534 #: ../../../src/MenuCharacter.cpp:73 ../../../src/MenuCharacter.cpp:78
535 msgid "Name"
536 msgstr "Nome"
537
538 #: ../../../src/MenuCharacter.cpp:74 ../../../src/MenuCharacter.cpp:79
539 msgid "Level"
540 msgstr "Nível"
541
542 #: ../../../src/MenuCharacter.cpp:309
543 #, c-format
544 msgid "Available stat points: %d"
545 msgstr "Pontos de propriedade disponíveis: %d"
546
547 #: ../../../src/MenuCharacter.cpp:353
548 #, c-format
549 msgid "Reduces the damage taken from \"%s\" elemental attacks."
550 msgstr "Reduz o dano recebido de \"%s\" ataques elementais."
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 "Próximo: %d"
561
562 #: ../../../src/MenuCharacter.cpp:371
563 #, c-format
564 msgid "base (%d), bonus (%d)"
565 msgstr "básico (%d), bônus (%d)"
566
567 #: ../../../src/MenuCharacter.cpp:379 ../../../src/MenuCharacter.cpp:393
568 msgid "Related stats:"
569 msgstr "Propriedades:"
570
571 #: ../../../src/MenuCharacter.cpp:419 ../../../src/MenuCharacter.cpp:443
572 #, c-format
573 msgid "Each level grants %d."
574 msgstr "Cada nível concede %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 ponto de %s concede %d."
580
581 #: ../../../src/MenuConfig.cpp:122 ../../../src/MenuConfig.cpp:1256
582 msgid "Clear"
583 msgstr "Limpar"
584
585 #: ../../../src/MenuConfig.cpp:122 ../../../src/MenuConfig.cpp:1254
586 msgid "Assign:"
587 msgstr "Atribuir:"
588
589 #: ../../../src/MenuConfig.cpp:123 ../../../src/MenuConfig.cpp:253
143590 msgid "Defaults"
144591 msgstr "Padrões"
145592
146 #: ../../../src/GameStateConfigBase.cpp:89
593 #: ../../../src/MenuConfig.cpp:123
147594 msgid "Reset ALL settings?"
148595 msgstr "Restaurar padrões?"
149596
150 #: ../../../src/GameStateConfigBase.cpp:109 ../../../src/MenuNumPicker.cpp:49
597 #: ../../../src/MenuConfig.cpp:252 ../../../src/MenuNumPicker.cpp:49
151598 msgid "OK"
152599 msgstr "OK"
153600
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
601 #: ../../../src/MenuConfig.cpp:256 ../../../src/MenuGameOver.cpp:72
602 msgid "Continue"
603 msgstr "Continuar"
604
605 #: ../../../src/MenuConfig.cpp:258
606 msgid "Save Game"
607 msgstr "Salvar Jogo"
608
609 #: ../../../src/MenuConfig.cpp:301 ../../../src/MenuConfig.cpp:352
610 msgid "Default"
611 msgstr "Default"
612
613 #: ../../../src/MenuConfig.cpp:301
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 "Exibir o nome dos itens, exceto aqueles que estiverem muito próximos do "
619 "personagem ou inimigo. Temporariamente exibir todos eles com a tecla 'Alt'."
620
621 #: ../../../src/MenuConfig.cpp:302
622 msgid "Show all"
623 msgstr "Mostrar tudo"
624
625 #: ../../../src/MenuConfig.cpp:302
626 msgid ""
627 "Always show loot tooltips. Temporarily hide all loot tooltips with 'Alt'."
628 msgstr ""
629 "Sempre exibir o nome dos itens. Temporariamente esconder todos com a tecla "
630 "'Alt'."
631
632 #: ../../../src/MenuConfig.cpp:303 ../../../src/MenuConfig.cpp:308
633 msgid "Hidden"
634 msgstr "Oculto"
635
636 #: ../../../src/MenuConfig.cpp:303
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 "Sempre ocultar o nome dos itens, exceto quando o cursor do mouse estiver "
642 "sobre eles. Temporariamente exibir todos com a tecla 'Alt'."
643
644 #: ../../../src/MenuConfig.cpp:306
645 msgid "Visible"
646 msgstr "Visível"
647
648 #: ../../../src/MenuConfig.cpp:307
649 msgid "Visible (2x zoom)"
650 msgstr "Visível (2x zoom)"
651
652 #: ../../../src/MenuConfig.cpp:311
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 está abaixo do "
658 "limite de saúde baixa."
659
660 #: ../../../src/MenuConfig.cpp:312
661 msgid "- Display a message"
662 msgstr "- Exibe uma mensagem"
663
664 #: ../../../src/MenuConfig.cpp:313
665 msgid "- Play a sound"
666 msgstr "- Reproduz um som"
667
668 #: ../../../src/MenuConfig.cpp:314
669 msgid "- Change the cursor"
670 msgstr "- Altera o cursor"
671
672 #: ../../../src/MenuConfig.cpp:316
673 msgid "Disabled"
674 msgstr "Desativado"
675
676 #: ../../../src/MenuConfig.cpp:317
677 msgid "All"
678 msgstr "Tudo"
679
680 #: ../../../src/MenuConfig.cpp:318
681 msgid "Message & Cursor"
682 msgstr "Mensagem e Cursor"
683
684 #: ../../../src/MenuConfig.cpp:319
685 msgid "Message & Sound"
686 msgstr "Mensagem e Som"
687
688 #: ../../../src/MenuConfig.cpp:320
689 msgid "Sound & Cursor"
690 msgstr "Som e Cursor"
691
692 #: ../../../src/MenuConfig.cpp:321
693 msgid "Message"
694 msgstr "Mensagem"
695
696 #: ../../../src/MenuConfig.cpp:322
697 msgid "Cursor"
698 msgstr "Cursor"
699
700 #: ../../../src/MenuConfig.cpp:323
701 msgid "Sound"
702 msgstr "Som"
703
704 #: ../../../src/MenuConfig.cpp:329
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 saúde do jogador cai abaixo do limite determinado, as notificações "
710 "de saúde baixa são acionadas se um ou mais deles estiver habilitado."
711
712 #: ../../../src/MenuConfig.cpp:347
713 msgid "The maximum frame rate that the game will be allowed to run at."
714 msgstr "A taxa de quadros máxima em que o jogo poderá ser executado."
715
716 #: ../../../src/MenuConfig.cpp:351
717 msgid ""
718 "The render size refers to the height in pixels of the surface used to draw "
719 "the game. Mods define the allowed render sizes, but this option allows "
720 "overriding the maximum size."
721 msgstr ""
722 "O tamanho de renderização se refere à altura em pixels da superfície usada "
723 "para desenhar o jogo. Os mods definem os tamanhos de renderização "
724 "permitidos, mas esta opção permite substituir o tamanho máximo."
725
726 #: ../../../src/MenuConfig.cpp:374 ../../../src/MenuConfig.cpp:1679
727 #: ../../../src/MenuGameOver.cpp:116
728 msgid "Exit"
729 msgstr "Sair"
730
731 #: ../../../src/MenuConfig.cpp:375
732 msgid "Video"
733 msgstr "Video"
734
735 #: ../../../src/MenuConfig.cpp:376
161736 msgid "Audio"
162737 msgstr "Áudio"
163738
164 #: ../../../src/GameStateConfigBase.cpp:161
165 #: ../../../src/GameStateConfigDesktop.cpp:131
739 #: ../../../src/MenuConfig.cpp:377
166740 msgid "Interface"
167741 msgstr "Interface"
168742
169 #: ../../../src/GameStateConfigBase.cpp:162
170 #: ../../../src/GameStateConfigDesktop.cpp:134
743 #: ../../../src/MenuConfig.cpp:378
744 msgid "Input"
745 msgstr "Entrada"
746
747 #: ../../../src/MenuConfig.cpp:379
748 msgid "Keybindings"
749 msgstr "Teclas de Atalho"
750
751 #: ../../../src/MenuConfig.cpp:380
171752 msgid "Mods"
172753 msgstr "Mods"
173754
174 #: ../../../src/GameStateConfigBase.cpp:249 ../../../src/MenuExit.cpp:72
755 #: ../../../src/MenuConfig.cpp:392
756 msgid "Paused"
757 msgstr "Interrompido"
758
759 #: ../../../src/MenuConfig.cpp:395
760 msgid "Time Played"
761 msgstr "Tempo de Jogo"
762
763 #: ../../../src/MenuConfig.cpp:401
764 msgid "Renderer"
765 msgstr "Renderizador"
766
767 #: ../../../src/MenuConfig.cpp:402
768 msgid "Full Screen Mode"
769 msgstr "Tela Cheia"
770
771 #: ../../../src/MenuConfig.cpp:403
772 msgid "Hardware surfaces"
773 msgstr "Superfícies por Hardware"
774
775 #: ../../../src/MenuConfig.cpp:404
776 msgid "V-Sync"
777 msgstr "V-Sync"
778
779 #: ../../../src/MenuConfig.cpp:405
780 msgid "Texture Filtering"
781 msgstr "Filtragem"
782
783 #: ../../../src/MenuConfig.cpp:406
784 msgid "DPI scaling"
785 msgstr "DPI scaling"
786
787 #: ../../../src/MenuConfig.cpp:407
788 msgid "Parallax Layers"
789 msgstr "Camadas de Paralaxe"
790
791 #: ../../../src/MenuConfig.cpp:408
792 msgid "Allow changing gamma"
793 msgstr "Alterar gama"
794
795 #: ../../../src/MenuConfig.cpp:409
796 msgid "Gamma"
797 msgstr "Gama"
798
799 #: ../../../src/MenuConfig.cpp:410
800 msgid "Maximum Render Size"
801 msgstr "Tamanho Máximo de Renderização"
802
803 #: ../../../src/MenuConfig.cpp:411
804 msgid "Frame Limit"
805 msgstr "Limite de quadros"
806
807 #: ../../../src/MenuConfig.cpp:413
808 msgid "Sound Volume"
809 msgstr "Volume dos efeitos"
810
811 #: ../../../src/MenuConfig.cpp:414
175812 msgid "Music Volume"
176813 msgstr "Volume das músicas"
177814
178 #: ../../../src/GameStateConfigBase.cpp:253 ../../../src/MenuExit.cpp:77
179 msgid "Sound Volume"
180 msgstr "Volume dos efeitos"
181
182 #: ../../../src/GameStateConfigBase.cpp:257
815 #: ../../../src/MenuConfig.cpp:416
183816 msgid "Language"
184817 msgstr "Idioma"
185818
186 #: ../../../src/GameStateConfigBase.cpp:266
819 #: ../../../src/MenuConfig.cpp:417
187820 msgid "Show FPS"
188821 msgstr "Exibir quadros por segundo"
189822
190 #: ../../../src/GameStateConfigBase.cpp:270
823 #: ../../../src/MenuConfig.cpp:418
824 msgid "Hardware mouse cursor"
825 msgstr "Renderizar cursor do mouse por hardware"
826
827 #: ../../../src/MenuConfig.cpp:419
191828 msgid "Colorblind Mode"
192829 msgstr "Modo daltônico"
193830
194 #: ../../../src/GameStateConfigBase.cpp:274
195 msgid "Hardware mouse cursor"
196 msgstr "Renderizar cursor do mouse por hardware"
197
198 #: ../../../src/GameStateConfigBase.cpp:278
831 #: ../../../src/MenuConfig.cpp:420
199832 msgid "Developer Mode"
200833 msgstr "Modo desenvolvedor"
201834
202 #: ../../../src/GameStateConfigBase.cpp:282
835 #: ../../../src/MenuConfig.cpp:421
203836 msgid "Subtitles"
204837 msgstr "Legenda"
205838
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
839 #: ../../../src/MenuConfig.cpp:422
840 msgid "Loot tooltip visibility"
841 msgstr "Visibilidade do nome dos itens"
842
843 #: ../../../src/MenuConfig.cpp:423
844 msgid "Mini-map mode"
845 msgstr "Modo Minimapa"
846
847 #: ../../../src/MenuConfig.cpp:424
848 msgid "Always show stat bar labels"
849 msgstr "Exibir propriedades na barra de status"
850
851 #: ../../../src/MenuConfig.cpp:425
852 msgid "Allow stat bar auto-hiding"
853 msgstr "Permitir ocultar barra de propriedades"
854
855 #: ../../../src/MenuConfig.cpp:426
856 msgid "Show combat text"
857 msgstr "Exibir rótulos de combate"
858
859 #: ../../../src/MenuConfig.cpp:427
860 msgid "Automatically equip items"
861 msgstr "Equipar itens automaticamente"
862
863 #: ../../../src/MenuConfig.cpp:428
864 msgid "Show hidden entity markers"
865 msgstr "Mostrar marcadores de entidades ocultos"
866
867 #: ../../../src/MenuConfig.cpp:429
868 msgid "Low health notification"
869 msgstr "Notificação de saúde baixa"
870
871 #: ../../../src/MenuConfig.cpp:430
872 msgid "Low health threshold"
873 msgstr "Limite de saúde baixo"
874
875 #: ../../../src/MenuConfig.cpp:431
876 msgid "Show item comparison tooltips"
877 msgstr "Exibir a comparação dos itens."
878
879 #: ../../../src/MenuConfig.cpp:434 ../../../src/MenuMovementType.cpp:94
880 #: ../../../src/MenuMovementType.cpp:131
881 msgid "Joystick"
882 msgstr "Controlador"
883
884 #: ../../../src/MenuConfig.cpp:435
885 msgid "Move hero using mouse"
886 msgstr "Mover o personagem utilizando o mouse"
887
888 #: ../../../src/MenuConfig.cpp:436
889 msgid "Mouse aim"
890 msgstr "Mirar com mouse"
891
892 #: ../../../src/MenuConfig.cpp:437
893 msgid "Do not use mouse"
894 msgstr "Não utilizar o mouse"
895
896 #: ../../../src/MenuConfig.cpp:438
897 msgid "Swap mouse movement button"
898 msgstr "Trocar o botão de movimento do mouse"
899
900 #: ../../../src/MenuConfig.cpp:439
901 msgid "Attack with mouse movement"
902 msgstr "Atacar com o movimento do mouse"
903
904 #: ../../../src/MenuConfig.cpp:440
905 msgid "Joystick Deadzone"
906 msgstr "Zona inoperante do controlador"
907
908 #: ../../../src/MenuConfig.cpp:441
909 msgid "Touch Controls"
910 msgstr "Controles Sensíveis ao Toque"
911
912 #: ../../../src/MenuConfig.cpp:442
913 msgid "Touch Gamepad Scaling"
914 msgstr "Dimensionamento do Touch Gamepad"
915
916 #: ../../../src/MenuConfig.cpp:452
917 #, c-format
918 msgid "Primary binding: %s"
919 msgstr "Atribuição primária: %s"
920
921 #: ../../../src/MenuConfig.cpp:453
922 #, c-format
923 msgid "Alternate binding: %s"
924 msgstr "Atribuição alternativa: %s"
925
926 #: ../../../src/MenuConfig.cpp:454
927 #, c-format
928 msgid "Joystick binding: %s"
929 msgstr "Atribuição do controle: %s"
930
931 #: ../../../src/MenuConfig.cpp:556
261932 msgid ""
262933 "Will try to store surfaces in video memory versus system memory. The effect "
263934 "this has on performance depends on the renderer."
265936 "Tentar armazenar superfícies na memória de vídeo e não na memória do "
266937 "sistema. O efeito que isso terá no desempenho depende do renderizador."
267938
268 #: ../../../src/GameStateConfigDesktop.cpp:189
939 #: ../../../src/MenuConfig.cpp:557
269940 msgid ""
270941 "Prevents screen tearing. Disable if you experience \"stuttering\" in "
271942 "windowed mode or input lag."
273944 "Evita o \"tearing\" da tela. Desative se você tiver engasgos no modo janela "
274945 "ou atraso nos controles."
275946
276 #: ../../../src/GameStateConfigDesktop.cpp:190
947 #: ../../../src/MenuConfig.cpp:558
277948 msgid ""
278949 "When enabled, this uses the screen DPI in addition to the window dimensions "
279950 "to scale the rendering resolution. Otherwise, only the window dimensions are"
283954 " de renderização. Caso contrário, apenas as dimensões da janela serão "
284955 "usadas."
285956
286 #: ../../../src/GameStateConfigDesktop.cpp:191
957 #: ../../../src/MenuConfig.cpp:559
287958 msgid ""
288959 "This enables parallax (non-tile) layers. Disabling this setting can improve "
289960 "performance in some cases."
290961 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 "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
962 "Isso ativa camadas de paralaxe (não lado a lado). Desativar esta "
963 "configuração pode melhorar o desempenho em alguns casos."
964
965 #: ../../../src/MenuConfig.cpp:560
966 msgid ""
967 "Enables the below setting that controls the screen gamma level. The behavior"
968 " of the gamma setting can vary between platforms."
969 msgstr ""
970 "Ativa a configuração abaixo que controla o nível de gama da tela. O "
971 "comportamento da configuração de gama pode variar entre as plataformas."
972
973 #: ../../../src/MenuConfig.cpp:561
974 msgid ""
975 "Provides additional text for information that is primarily conveyed through "
976 "color."
977 msgstr ""
978 "Fornece texto adicional para informações transmitidas principalmente por "
979 "meio de cores."
980
981 #: ../../../src/MenuConfig.cpp:562
982 msgid ""
983 "Some mods will automatically hide the stat bars when they are inactive. "
984 "Disabling this option will keep them displayed at all times."
985 msgstr ""
986 "Alguns mods irão ocultar automaticamente as barras de propriedades quando "
987 "estiverem inativos. Desativar esta opção irá mantê-los exibidos o tempo "
988 "todo."
989
990 #: ../../../src/MenuConfig.cpp:563
991 msgid ""
992 "When enabled, empty equipment slots will be filled with applicable items "
993 "when they are obtained."
994 msgstr ""
995 "Quando habilitado, os slots de equipamentos vazios serão preenchidos com os "
996 "itens aplicáveis quando forem obtidos."
997
998 #: ../../../src/MenuConfig.cpp:564
999 msgid ""
1000 "Shows a marker above enemies, allies, and the player when they are obscured "
1001 "by tall objects."
1002 msgstr ""
1003 "Mostra um marcador acima dos inimigos, aliados e do jogador quando eles são "
1004 "obscurecidos por objetos altos."
1005
1006 #: ../../../src/MenuConfig.cpp:565
1007 msgid ""
1008 "When enabled, tooltips for equipped items of the same type are shown next to"
1009 " standard item tooltips."
1010 msgstr ""
1011 "Quando ativada, as dicas de ferramentas para itens equipados do mesmo tipo "
1012 "são mostradas ao lado das dicas de ferramentas de itens padrão."
1013
1014 #: ../../../src/MenuConfig.cpp:566
1015 msgid ""
1016 "This allows the game to be controlled entirely with the keyboard (or "
1017 "joystick)."
1018 msgstr "Permite controlar o jogo completamente por teclado ou controle."
1019
1020 #: ../../../src/MenuConfig.cpp:567
1021 msgid ""
1022 "When 'Move hero using mouse' is enabled, this setting controls if 'Main1' or"
1023 " 'Main2' is used to move the hero. If enabled, 'Main2' will move the hero "
1024 "instead of 'Main1'."
1025 msgstr ""
1026 "Quando \"Mover o personagem utilizando o mouse\" está habilitado, esta "
1027 "configuração controla se \"Principal1\" ou \"Principal2\" é usado para mover"
1028 " o herói. Se habilitado, 'Principal2' moverá o herói em vez de "
1029 "\"Principal1\"."
1030
1031 #: ../../../src/MenuConfig.cpp:568
1032 msgid ""
1033 "When 'Move hero using mouse' is enabled, this setting controls if the Power "
1034 "assigned to the movement button can be used by targeting an enemy. If this "
1035 "setting is disabled, it is required to use 'Shift' to access the Power "
1036 "assigned to the movement button."
1037 msgstr ""
1038 "Quando \"Mover o personagem utilizando o mouse\" está habilitado, esta "
1039 "configuração controla se o poder atribuído ao botão de movimento pode ser "
1040 "usado mirando um inimigo. Se esta configuração estiver desabilitada, é "
1041 "necessário usar \"Shift\" para acessar o poder atribuído ao botão de "
1042 "movimento."
1043
1044 #: ../../../src/MenuConfig.cpp:569
1045 msgid ""
1046 "The player's attacks will be aimed in the direction of the mouse cursor when"
1047 " this is enabled."
1048 msgstr ""
1049 "Quando ativado, o ataque do jogador será direcionado na posição do mouse."
1050
1051 #: ../../../src/MenuConfig.cpp:570
1052 msgid ""
1053 "When enabled, a virtual gamepad will be added in-game. Other interactions, "
1054 "such as drag-and-drop behavior, are also altered to better suit touch input."
1055 msgstr ""
1056 "Quando ativado, o direcional será adicionado durante o jogo. Outras "
1057 "interações, como arrastar e soltar também serão ajustadas para tela sensível"
1058 " ao toque."
1059
1060 #: ../../../src/MenuConfig.cpp:621
1061 msgid "Active Mods"
1062 msgstr "Mods Ativos"
1063
1064 #: ../../../src/MenuConfig.cpp:630
1065 msgid "Available Mods"
1066 msgstr "Mods Disponíveis"
1067
1068 #: ../../../src/MenuConfig.cpp:649
1069 msgid "<< Disable"
1070 msgstr "<< Desabilitar"
1071
1072 #: ../../../src/MenuConfig.cpp:655
1073 msgid "Enable >>"
1074 msgstr "Habilitar >>"
1075
1076 #: ../../../src/MenuConfig.cpp:1536
1077 msgid "Version:"
1078 msgstr "Versão:"
1079
1080 #: ../../../src/MenuConfig.cpp:1541
1081 msgid "Game:"
1082 msgstr "Jogo:"
1083
1084 #: ../../../src/MenuConfig.cpp:1546
1085 msgid "Engine version:"
1086 msgstr "Versão do motor:"
1087
1088 #: ../../../src/MenuConfig.cpp:1554
1089 msgid "Requires mods:"
1090 msgstr "Mods necessários:"
1091
1092 #: ../../../src/MenuConfig.cpp:1662 ../../../src/SDLInputState.cpp:750
1093 msgid "(none)"
1094 msgstr "(nenhum)"
1095
1096 #: ../../../src/MenuConfig.cpp:1679 ../../../src/MenuGameOver.cpp:73
1097 msgid "Save & Exit"
1098 msgstr "Salvar e Sair"
1099
1100 #: ../../../src/MenuDevConsole.cpp:65
8351101 msgid "Execute"
8361102 msgstr "Executar"
8371103
838 #: ../../../src/MenuDevConsole.cpp:101 ../../../src/MenuDevConsole.cpp:151
1104 #: ../../../src/MenuDevConsole.cpp:103 ../../../src/MenuDevConsole.cpp:153
8391105 msgid "Developer Console"
8401106 msgstr "Console do Desenvolvedor"
8411107
842 #: ../../../src/MenuDevConsole.cpp:141
1108 #: ../../../src/MenuDevConsole.cpp:143
8431109 #, c-format
8441110 msgid "Use '%s' to inspect with the cursor."
8451111 msgstr "Utilize '%s' para inspecionar com o cursor."
8461112
847 #: ../../../src/MenuDevConsole.cpp:146
1113 #: ../../../src/MenuDevConsole.cpp:148
8481114 msgid "Arguments with spaces should be enclosed with double quotes. Example:"
8491115 msgstr "Argumentos com espaços devem estar entre aspas duplas. Exemplo: "
8501116
851 #: ../../../src/MenuDevConsole.cpp:147
1117 #: ../../../src/MenuDevConsole.cpp:149
8521118 msgid "Type 'help' to get a list of commands."
8531119 msgstr "Digite 'help' para obter a lista de comandos."
8541120
855 #: ../../../src/MenuDevConsole.cpp:209 ../../../src/MenuDevConsole.cpp:213
1121 #: ../../../src/MenuDevConsole.cpp:211 ../../../src/MenuDevConsole.cpp:215
8561122 msgid "px"
8571123 msgstr "px"
8581124
859 #: ../../../src/MenuDevConsole.cpp:224
1125 #: ../../../src/MenuDevConsole.cpp:226
8601126 msgid "Distance"
8611127 msgstr "Distância"
8621128
863 #: ../../../src/MenuDevConsole.cpp:239 ../../../src/MenuDevConsole.cpp:286
1129 #: ../../../src/MenuDevConsole.cpp:241 ../../../src/MenuDevConsole.cpp:289
1130 #: ../../../src/MenuDevConsole.cpp:303
8641131 msgid "Entity"
8651132 msgstr "Entidade"
8661133
867 #: ../../../src/MenuDevConsole.cpp:261 ../../../src/MenuDevConsole.cpp:268
1134 #: ../../../src/MenuDevConsole.cpp:263 ../../../src/MenuDevConsole.cpp:270
8681135 msgid "none"
8691136 msgstr "nenhum"
8701137
871 #: ../../../src/MenuDevConsole.cpp:262 ../../../src/MenuDevConsole.cpp:264
1138 #: ../../../src/MenuDevConsole.cpp:264 ../../../src/MenuDevConsole.cpp:266
8721139 msgid "wall"
8731140 msgstr "muro"
8741141
875 #: ../../../src/MenuDevConsole.cpp:263 ../../../src/MenuDevConsole.cpp:265
1142 #: ../../../src/MenuDevConsole.cpp:265 ../../../src/MenuDevConsole.cpp:267
8761143 msgid "short wall / pit"
8771144 msgstr "parede curta / fosso"
8781145
879 #: ../../../src/MenuDevConsole.cpp:266
1146 #: ../../../src/MenuDevConsole.cpp:268
8801147 msgid "entity"
8811148 msgstr "entidade"
8821149
883 #: ../../../src/MenuDevConsole.cpp:267
1150 #: ../../../src/MenuDevConsole.cpp:269
8841151 msgid "entity, ally"
8851152 msgstr "entidade, aliada"
8861153
887 #: ../../../src/MenuDevConsole.cpp:274
1154 #: ../../../src/MenuDevConsole.cpp:276
8881155 msgid "Tile"
8891156 msgstr "Principal"
8901157
891 #: ../../../src/MenuDevConsole.cpp:360
1158 #: ../../../src/MenuDevConsole.cpp:377
8921159 msgid "adds a power to the action bar"
8931160 msgstr "adiciona um poder a barra de ação"
8941161
895 #: ../../../src/MenuDevConsole.cpp:361
1162 #: ../../../src/MenuDevConsole.cpp:378
8961163 msgid "turns on/off the display of the FPS counter"
897 msgstr ""
898
899 #: ../../../src/MenuDevConsole.cpp:362
1164 msgstr "liga/desliga a exibição do contador de quadros FPS"
1165
1166 #: ../../../src/MenuDevConsole.cpp:379
9001167 msgid "turns on/off all of the HUD elements"
9011168 msgstr "alterna on/off todos os elementos do HUD"
9021169
903 #: ../../../src/MenuDevConsole.cpp:363
1170 #: ../../../src/MenuDevConsole.cpp:380
9041171 msgid "turns on/off the developer hud"
9051172 msgstr "alterna on/off o hud de desenvolvedor"
9061173
907 #: ../../../src/MenuDevConsole.cpp:364
1174 #: ../../../src/MenuDevConsole.cpp:381
9081175 msgid ""
9091176 "Prints a list of powers that match a search term. No search term will list "
9101177 "all items"
9121179 "Exibe uma lista de poderes que corresponda ao termo pesquisado. Se nenhum "
9131180 "termo for informado todos os itens serão exibidos."
9141181
915 #: ../../../src/MenuDevConsole.cpp:365
1182 #: ../../../src/MenuDevConsole.cpp:382
9161183 msgid "Prints out all the map filenames located in the \"maps/\" directory."
9171184 msgstr "Exibe todos os nomes de arquivos mapa localizados na pasta \"maps/\"."
9181185
919 #: ../../../src/MenuDevConsole.cpp:366
1186 #: ../../../src/MenuDevConsole.cpp:383
9201187 msgid ""
9211188 "Prints out the active campaign statuses that match a search term. No search "
9221189 "term will list all active statuses"
9241191 "Exibe a campanha ativa e sua situação que corresponda ao termo pesquisado. "
9251192 "Se nenhum termo for informado todos os itens serão exibidos."
9261193
927 #: ../../../src/MenuDevConsole.cpp:367
1194 #: ../../../src/MenuDevConsole.cpp:384
9281195 msgid ""
9291196 "Prints a list of items that match a search term. No search term will list "
9301197 "all items"
9321199 "Exibe uma lista de itens que correspondam ao termo pesquisado. Se nenhum "
9331200 "termo for informado todos os itens serão exibidos."
9341201
935 #: ../../../src/MenuDevConsole.cpp:368
1202 #: ../../../src/MenuDevConsole.cpp:385
9361203 msgid ""
9371204 "parses a series of event components and executes them as a single event"
9381205 msgstr ""
9391206 "Analisa uma série de componentes de eventos e os executa como um único "
9401207 "evento"
9411208
942 #: ../../../src/MenuDevConsole.cpp:369
1209 #: ../../../src/MenuDevConsole.cpp:386
9431210 msgid "clears the command history"
9441211 msgstr "limpa o histórico de comando"
9451212
946 #: ../../../src/MenuDevConsole.cpp:370
1213 #: ../../../src/MenuDevConsole.cpp:387
9471214 msgid "displays this text"
9481215 msgstr "exibe esse texto"
9491216
950 #: ../../../src/MenuDevConsole.cpp:377
1217 #: ../../../src/MenuDevConsole.cpp:394
9511218 msgid "Toggled the developer hud"
9521219 msgstr "Alterna entre o hud de desenvolvedor"
9531220
954 #: ../../../src/MenuDevConsole.cpp:381
1221 #: ../../../src/MenuDevConsole.cpp:398
9551222 msgid "Toggled the hud"
9561223 msgstr "Alterna o hud"
9571224
958 #: ../../../src/MenuDevConsole.cpp:385
1225 #: ../../../src/MenuDevConsole.cpp:402
9591226 msgid "Toggled the FPS counter"
960 msgstr ""
961
962 #: ../../../src/MenuDevConsole.cpp:534
1227 msgstr "Alternou o contador de FPS"
1228
1229 #: ../../../src/MenuDevConsole.cpp:552
9631230 msgid "ERROR: Incorrect number of arguments"
9641231 msgstr "ERRO: Número incorreto de argumentos"
9651232
966 #: ../../../src/MenuDevConsole.cpp:536 ../../../src/MenuDevConsole.cpp:564
1233 #: ../../../src/MenuDevConsole.cpp:554 ../../../src/MenuDevConsole.cpp:582
9671234 msgid "HINT:"
9681235 msgstr "DICA:"
9691236
970 #: ../../../src/MenuDevConsole.cpp:536
1237 #: ../../../src/MenuDevConsole.cpp:554
9711238 msgid "<id>"
9721239 msgstr "<id>"
9731240
974 #: ../../../src/MenuDevConsole.cpp:552
1241 #: ../../../src/MenuDevConsole.cpp:570
9751242 #, c-format
9761243 msgid "ERROR: '%s' is not a valid event key"
9771244 msgstr "ERRO: '%s' não é uma chave de evento válida"
9781245
979 #: ../../../src/MenuDevConsole.cpp:562
1246 #: ../../../src/MenuDevConsole.cpp:580
9801247 msgid "ERROR: Too few arguments"
9811248 msgstr "ERROR: Poucos argumentos"
9821249
983 #: ../../../src/MenuDevConsole.cpp:564
1250 #: ../../../src/MenuDevConsole.cpp:582
9841251 msgid "<key>=<val> <key>=<val> ..."
9851252 msgstr "<key>=<val> <key>=<val> ..."
9861253
987 #: ../../../src/MenuDevConsole.cpp:569
1254 #: ../../../src/MenuDevConsole.cpp:587
9881255 msgid "ERROR: Unknown command"
9891256 msgstr "ERRO: Comando desconhecido"
9901257
991 #: ../../../src/MenuDevConsole.cpp:571
1258 #: ../../../src/MenuDevConsole.cpp:589
9921259 msgid "HINT: Type help"
9931260 msgstr "DICA: Digite help"
9941261
995 #: ../../../src/MenuEnemy.cpp:138
1262 #: ../../../src/MenuEnemy.cpp:162
9961263 #, c-format
9971264 msgid "%s level %d"
9981265 msgstr "%s nível %d"
9991266
1000 #: ../../../src/MenuEnemy.cpp:162
1267 #: ../../../src/MenuEnemy.cpp:186
10011268 msgid "Dead"
10021269 msgstr "Morto"
10031270
1004 #: ../../../src/MenuEnemy.cpp:164
1271 #: ../../../src/MenuEnemy.cpp:188
10051272 msgid "Destroyed"
10061273 msgstr "Destruído"
10071274
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
1275 #: ../../../src/MenuGameOver.cpp:69
1276 msgid "Game Over"
1277 msgstr "Fim do Jogo"
1278
1279 #: ../../../src/MenuInventory.cpp:178
10291280 #, c-format
10301281 msgid "Lost %d%% of %s."
10311282 msgstr "Perdeu %d%% de %s."
10321283
1033 #: ../../../src/MenuInventory.cpp:195
1284 #: ../../../src/MenuInventory.cpp:185
10341285 #, c-format
10351286 msgid "Lost %d%% of total XP."
10361287 msgstr "Perdeu %d%% do total de XP."
10371288
1038 #: ../../../src/MenuInventory.cpp:200
1289 #: ../../../src/MenuInventory.cpp:190
10391290 #, c-format
10401291 msgid "Lost %d%% of current level XP."
10411292 msgstr "Perdeu %d%% do atual nível de XP."
10421293
1043 #: ../../../src/MenuInventory.cpp:226
1294 #: ../../../src/MenuInventory.cpp:216
10441295 #, c-format
10451296 msgid "Lost %s."
10461297 msgstr "Perdeu %s."
10471298
1048 #: ../../../src/MenuInventory.cpp:274 ../../../src/MenuStash.cpp:146
1299 #: ../../../src/MenuInventory.cpp:258 ../../../src/MenuStash.cpp:276
10491300 #, c-format
10501301 msgid "%d %s"
10511302 msgstr "%d %s"
10521303
1053 #: ../../../src/MenuInventory.cpp:317
1304 #: ../../../src/MenuInventory.cpp:301
10541305 msgid "Pick up item(s):"
10551306 msgstr "Item(s) coletados:"
10561307
1057 #: ../../../src/MenuInventory.cpp:318
1308 #: ../../../src/MenuInventory.cpp:302
10581309 msgid "Use or equip item:"
10591310 msgstr "Utilize ou equipe o item:"
10601311
1061 #: ../../../src/MenuInventory.cpp:319
1312 #: ../../../src/MenuInventory.cpp:303
10621313 #, c-format
10631314 msgid "%s modifiers"
10641315 msgstr "%s modificadores"
10651316
1066 #: ../../../src/MenuInventory.cpp:320
1317 #: ../../../src/MenuInventory.cpp:304
10671318 msgid "Select a quantity of item:"
10681319 msgstr "Selecione a quantidade do item:"
10691320
1070 #: ../../../src/MenuInventory.cpp:323
1321 #: ../../../src/MenuInventory.cpp:307
10711322 msgid "Stash item stack:"
10721323 msgstr "Pilha de itens do baú:"
10731324
1074 #: ../../../src/MenuInventory.cpp:325
1325 #: ../../../src/MenuInventory.cpp:309
10751326 msgid "Sell item stack:"
10761327 msgstr "Vender pilha de itens:"
10771328
1078 #: ../../../src/MenuInventory.cpp:592
1329 #: ../../../src/MenuInventory.cpp:576
10791330 msgid "You don't have enough of the required item."
10801331 msgstr "Você não possui o suficiente para adquirir este item."
10811332
1082 #: ../../../src/MenuInventory.cpp:599
1333 #: ../../../src/MenuInventory.cpp:588
10831334 msgid "You can't use this item right now."
10841335 msgstr "Você não pode utilizar este item agora."
10851336
1086 #: ../../../src/MenuInventory.cpp:611
1337 #: ../../../src/MenuInventory.cpp:600
10871338 msgid "This item can only be used from the action bar."
10881339 msgstr "Este item só pode ser usado na barra de ação."
10891340
1090 #: ../../../src/MenuInventory.cpp:729
1341 #: ../../../src/MenuInventory.cpp:718
10911342 msgid "Inventory is full."
10921343 msgstr "Inventário está cheio."
10931344
1094 #: ../../../src/MenuInventory.cpp:849
1345 #: ../../../src/MenuInventory.cpp:843
10951346 #, c-format
10961347 msgid "Not enough %s."
10971348 msgstr "Insuficiente %s."
10981349
1099 #: ../../../src/MenuInventory.cpp:869 ../../../src/MenuInventory.cpp:876
1350 #: ../../../src/MenuInventory.cpp:863 ../../../src/MenuInventory.cpp:870
11001351 msgid "This item can not be sold."
11011352 msgstr "Este item não pode ser vendido"
11021353
11081359 msgid "Quests"
11091360 msgstr "Missões"
11101361
1111 #: ../../../src/MenuManager.cpp:286
1362 #: ../../../src/MenuManager.cpp:305
11121363 #, c-format
11131364 msgid "XP: %d/%d"
11141365 msgstr "XP: %d/%d"
11151366
1116 #: ../../../src/MenuManager.cpp:827
1367 #: ../../../src/MenuManager.cpp:875
11171368 msgid "This item can not be dropped."
11181369 msgstr "Este item não pode ser descartado."
1370
1371 #: ../../../src/MenuManager.cpp:1501
1372 msgid "Equipped"
1373 msgstr "Equipado"
1374
1375 #: ../../../src/MenuMovementType.cpp:87
1376 msgid "Select a Movement Type"
1377 msgstr "Selecione um tipo de movimento"
1378
1379 #: ../../../src/MenuMovementType.cpp:89
1380 msgid "Can be changed later in the Configuration menu."
1381 msgstr "Pode ser alterado posteriormente no menu de Configuração."
1382
1383 #: ../../../src/MenuMovementType.cpp:92 ../../../src/MenuMovementType.cpp:122
1384 msgid "Keyboard"
1385 msgstr "Teclado"
1386
1387 #: ../../../src/MenuMovementType.cpp:93 ../../../src/MenuMovementType.cpp:128
1388 msgid "Mouse"
1389 msgstr "Mouse"
1390
1391 #: ../../../src/MenuMovementType.cpp:129
1392 msgid "Button"
1393 msgstr "Botão"
11191394
11201395 #: ../../../src/MenuNumPicker.cpp:59
11211396 msgid "Enter amount:"
11221397 msgstr "Digite a quantidade:"
11231398
1124 #: ../../../src/MenuPowers.cpp:787
1399 #: ../../../src/MenuPowers.cpp:894
11251400 msgid "Passive"
11261401 msgstr "Passivo"
11271402
1128 #: ../../../src/MenuPowers.cpp:792
1403 #: ../../../src/MenuPowers.cpp:901
11291404 #, c-format
11301405 msgid "Costs %d MP"
11311406 msgstr "Custa %d MP"
11321407
1133 #: ../../../src/MenuPowers.cpp:796
1408 #: ../../../src/MenuPowers.cpp:905
11341409 #, c-format
11351410 msgid "Costs %d HP"
11361411 msgstr "Custa %d HP"
11371412
1138 #: ../../../src/MenuPowers.cpp:801
1413 #: ../../../src/MenuPowers.cpp:909
11391414 msgid "Cooldown:"
11401415 msgstr "Esfriar:"
11411416
1142 #: ../../../src/MenuPowers.cpp:866 ../../../src/MenuPowers.cpp:869
1417 #: ../../../src/MenuPowers.cpp:960 ../../../src/MenuPowers.cpp:963
11431418 msgid "Damage per second"
11441419 msgstr "Dano por segundo"
11451420
1146 #: ../../../src/MenuPowers.cpp:872 ../../../src/MenuPowers.cpp:875
1421 #: ../../../src/MenuPowers.cpp:966 ../../../src/MenuPowers.cpp:969
11471422 msgid "HP per second"
11481423 msgstr "HP por segundo"
11491424
1150 #: ../../../src/MenuPowers.cpp:878 ../../../src/MenuPowers.cpp:881
1425 #: ../../../src/MenuPowers.cpp:972 ../../../src/MenuPowers.cpp:975
11511426 msgid "MP per second"
11521427 msgstr "MP por segundo"
11531428
1154 #: ../../../src/MenuPowers.cpp:885
1429 #: ../../../src/MenuPowers.cpp:979
11551430 msgid "Immobilize"
11561431 msgstr "Imobilizar"
11571432
1158 #: ../../../src/MenuPowers.cpp:893
1433 #: ../../../src/MenuPowers.cpp:987
11591434 msgid "Immunity"
11601435 msgstr "Imunidade"
11611436
1162 #: ../../../src/MenuPowers.cpp:896
1437 #: ../../../src/MenuPowers.cpp:990
11631438 msgid "Immunity to damage over time"
11641439 msgstr "Imunidade a danos de longo prazo"
11651440
1166 #: ../../../src/MenuPowers.cpp:899
1441 #: ../../../src/MenuPowers.cpp:993
11671442 msgid "Immunity to slow"
11681443 msgstr "Imunidade a desaceleração"
11691444
1170 #: ../../../src/MenuPowers.cpp:902
1445 #: ../../../src/MenuPowers.cpp:996
11711446 msgid "Immunity to stun"
11721447 msgstr "Imunidade ao atordoamento"
11731448
1174 #: ../../../src/MenuPowers.cpp:905
1449 #: ../../../src/MenuPowers.cpp:999
11751450 msgid "Immunity to HP steal"
11761451 msgstr "Imunidade ao roubo de HP"
11771452
1178 #: ../../../src/MenuPowers.cpp:908
1453 #: ../../../src/MenuPowers.cpp:1002
11791454 msgid "Immunity to MP steal"
11801455 msgstr "Imunidade ao roubo de MP"
11811456
1182 #: ../../../src/MenuPowers.cpp:911
1457 #: ../../../src/MenuPowers.cpp:1005
11831458 msgid "Immunity to knockback"
11841459 msgstr "Imunidade a contragolpe"
11851460
1186 #: ../../../src/MenuPowers.cpp:914
1461 #: ../../../src/MenuPowers.cpp:1008
11871462 msgid "Immunity to damage reflection"
11881463 msgstr "Imunidade a reflexão de dano"
11891464
1190 #: ../../../src/MenuPowers.cpp:917
1465 #: ../../../src/MenuPowers.cpp:1014
11911466 msgid "Stun"
11921467 msgstr "Atordoar"
11931468
1194 #: ../../../src/MenuPowers.cpp:920
1469 #: ../../../src/MenuPowers.cpp:1017
11951470 msgid "Automatic revive on death"
11961471 msgstr "Ressuscitar automaticamente"
11971472
1198 #: ../../../src/MenuPowers.cpp:923
1473 #: ../../../src/MenuPowers.cpp:1020
11991474 msgid "Convert"
12001475 msgstr "Converter"
12011476
1202 #: ../../../src/MenuPowers.cpp:926
1477 #: ../../../src/MenuPowers.cpp:1023
12031478 msgid "Fear"
12041479 msgstr "Medo"
12051480
1206 #: ../../../src/MenuPowers.cpp:929
1481 #: ../../../src/MenuPowers.cpp:1026
12071482 msgid "Lifespan"
12081483 msgstr "Vida útil"
12091484
1210 #: ../../../src/MenuPowers.cpp:953
1485 #: ../../../src/MenuPowers.cpp:1050
12111486 msgid "Magical Shield"
12121487 msgstr "Escudo Mágico"
12131488
1214 #: ../../../src/MenuPowers.cpp:982
1489 #: ../../../src/MenuPowers.cpp:1079
12151490 msgid "Healing"
12161491 msgstr "Cura"
12171492
1218 #: ../../../src/MenuPowers.cpp:985
1493 #: ../../../src/MenuPowers.cpp:1082
12191494 msgid "Knockback"
12201495 msgstr "Contragolpe"
12211496
1222 #: ../../../src/MenuPowers.cpp:1010
1497 #: ../../../src/MenuPowers.cpp:1106
12231498 #, c-format
12241499 msgid "%d%% chance"
12251500 msgstr "%d%% chance"
12261501
1227 #: ../../../src/MenuPowers.cpp:1062
1502 #: ../../../src/MenuPowers.cpp:1158
12281503 msgid "Base Accuracy"
12291504 msgstr "Precisão Básica"
12301505
1231 #: ../../../src/MenuPowers.cpp:1082
1506 #: ../../../src/MenuPowers.cpp:1178
12321507 msgid "Base Critical Chance"
12331508 msgstr "Chance Crítica Básica"
12341509
1235 #: ../../../src/MenuPowers.cpp:1090
1510 #: ../../../src/MenuPowers.cpp:1186
12361511 msgid "Ignores Absorbtion"
12371512 msgstr "Ignora Absorção"
12381513
1239 #: ../../../src/MenuPowers.cpp:1095
1514 #: ../../../src/MenuPowers.cpp:1191
12401515 msgid "Ignores Avoidance"
12411516 msgstr "Ignora Esquiva"
12421517
1243 #: ../../../src/MenuPowers.cpp:1100
1518 #: ../../../src/MenuPowers.cpp:1196
12441519 #, c-format
12451520 msgid "%d%% Chance to crit slowed targets"
12461521 msgstr "%d%% Chance de acerto crítico a alvos desacelerados."
12471522
1248 #: ../../../src/MenuPowers.cpp:1105
1523 #: ../../../src/MenuPowers.cpp:1201
12491524 #, c-format
12501525 msgid "Elemental Damage (%s)"
12511526 msgstr "Dano Elemental (%s)"
12521527
1253 #: ../../../src/MenuPowers.cpp:1114
1528 #: ../../../src/MenuPowers.cpp:1210
12541529 #, c-format
12551530 msgid "Requires a %s"
12561531 msgstr "Requer um %s"
12571532
1258 #: ../../../src/MenuPowers.cpp:1151 ../../../src/MenuPowers.cpp:1154
1533 #: ../../../src/MenuPowers.cpp:1248 ../../../src/MenuPowers.cpp:1251
12591534 #, c-format
12601535 msgid "Requires Power: %s"
12611536 msgstr "Requer Poder: %s"
12621537
1263 #: ../../../src/MenuPowers.cpp:1163
1538 #: ../../../src/MenuPowers.cpp:1260
12641539 msgid "Click to Unlock (uses 1 Skill Point)"
12651540 msgstr "Aperte para Desbloquear (utiliza 1 Ponto de Habilidade)"
12661541
1267 #: ../../../src/MenuPowers.cpp:1167 ../../../src/MenuPowers.cpp:1169
1542 #: ../../../src/MenuPowers.cpp:1264 ../../../src/MenuPowers.cpp:1266
12681543 msgid "Requires 1 Skill Point"
12691544 msgstr "Requer 1 Ponto de Habilidade"
12701545
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
1546 #: ../../../src/MenuPowers.cpp:1466
1547 #, c-format
1548 msgid "Available skill points: %d"
1549 msgstr "Pontos de habilidade disponíveis: %d"
1550
1551 #: ../../../src/MenuPowers.cpp:1498
12821552 msgid "Next Level:"
12831553 msgstr "Próximo Nível:"
12841554
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
1555 #: ../../../src/MenuStash.cpp:80 ../../../src/MenuStash.cpp:161
1556 msgid "Stash"
1557 msgstr "Mochila"
1558
1559 #: ../../../src/MenuStash.cpp:174 ../../../src/MenuStash.cpp:188
1560 msgid "Private"
1561 msgstr "Particular"
1562
1563 #: ../../../src/MenuStash.cpp:175
1564 msgid "Shared"
1565 msgstr "Compartilhado"
1566
1567 #: ../../../src/MenuStash.cpp:340
1568 msgid "This item can not be stored in the stash."
1569 msgstr "Este item não pode ser guardado na mochila."
1570
1571 #: ../../../src/MenuStash.cpp:345
1572 msgid "This item can not be stored in the private stash."
1573 msgstr "Este item não pode ser guardado no baú particular."
1574
1575 #: ../../../src/MenuStash.cpp:350
1576 msgid "This item can not be stored in the shared stash."
1577 msgstr "Este item não pode ser guardado no baú compartilhado."
1578
1579 #: ../../../src/MenuStash.cpp:360
12941580 msgid "Stash is full."
12951581 msgstr "Baú esta cheio."
12961582
1297 #: ../../../src/MenuTalker.cpp:454
1583 #: ../../../src/MenuStash.cpp:414
1584 #, c-format
1585 msgid "Can not store item in stash: %s"
1586 msgstr "Não é possível guardar o item na mochila: %s"
1587
1588 #: ../../../src/MenuTalker.cpp:448
1589 #, c-format
1590 msgid "<dialog node %d>"
1591 msgstr "<dialog node %d>"
1592
1593 #: ../../../src/MenuTalker.cpp:456
12981594 msgid "Trade"
12991595 msgstr "Troca"
13001596
1301 #: ../../../src/MenuVendor.cpp:58
1597 #: ../../../src/MenuVendor.cpp:60
13021598 msgid "Buyback"
13031599 msgstr "Recompra"
13041600
1305 #: ../../../src/MenuVendor.cpp:279
1601 #: ../../../src/MenuVendor.cpp:283
13061602 msgid "Vendor"
13071603 msgstr "Vendedor"
13081604
1309 #: ../../../src/PowerManager.cpp:1136
1605 #: ../../../src/PowerManager.cpp:1204
13101606 #, c-format
13111607 msgid "+%d Shield"
13121608 msgstr "+%d Escudo"
13131609
1314 #: ../../../src/PowerManager.cpp:1392
1610 #: ../../../src/PowerManager.cpp:1461
13151611 msgid "You are already transformed, untransform first."
13161612 msgstr "Você já foi transformado, desfaça a transformação primeiro."
13171613
1318 #: ../../../src/PowerManager.cpp:1404
1614 #: ../../../src/PowerManager.cpp:1473
13191615 msgid "Could not untransform at this position."
13201616 msgstr "Não foi possível desfazer a transformação nesta posição."
13211617
13231619 msgid "Completed Quests"
13241620 msgstr "Missões Concluídas"
13251621
1326 #: ../../../src/SaveLoad.cpp:243 ../../../src/SaveLoad.cpp:244
1622 #: ../../../src/SaveLoad.cpp:250 ../../../src/SaveLoad.cpp:251
13271623 msgid "Game saved."
13281624 msgstr "Jogo salvo."
13291625
1330 #: ../../../src/SDLInputState.cpp:582
1626 #: ../../../src/SDLInputState.cpp:645
1627 msgid "BkSp"
1628 msgstr "BkSp"
1629
1630 #: ../../../src/SDLInputState.cpp:646
1631 msgid "Caps"
1632 msgstr "Caps"
1633
1634 #: ../../../src/SDLInputState.cpp:647
1635 msgid "Del"
1636 msgstr "Del"
1637
1638 #: ../../../src/SDLInputState.cpp:649 ../../../src/SDLInputState.cpp:679
1639 msgid "End"
1640 msgstr "End"
1641
1642 #: ../../../src/SDLInputState.cpp:650
1643 msgid "Esc"
1644 msgstr "Esc"
1645
1646 #: ../../../src/SDLInputState.cpp:651 ../../../src/SDLInputState.cpp:681
1647 msgid "Home"
1648 msgstr "Home"
1649
1650 #: ../../../src/SDLInputState.cpp:652
1651 msgid "Ins"
1652 msgstr "Ins"
1653
1654 #: ../../../src/SDLInputState.cpp:653
1655 msgid "LAlt"
1656 msgstr "LAlt"
1657
1658 #: ../../../src/SDLInputState.cpp:654
1659 msgid "LCtrl"
1660 msgstr "LCtrl"
1661
1662 #: ../../../src/SDLInputState.cpp:656
1663 msgid "LShft"
1664 msgstr "LShft"
1665
1666 #: ../../../src/SDLInputState.cpp:657
1667 msgid "Num"
1668 msgstr "Num"
1669
1670 #: ../../../src/SDLInputState.cpp:658
1671 msgid "PgDn"
1672 msgstr "PgDn"
1673
1674 #: ../../../src/SDLInputState.cpp:659
1675 msgid "PgUp"
1676 msgstr "PgUp"
1677
1678 #: ../../../src/SDLInputState.cpp:660 ../../../src/SDLInputState.cpp:690
1679 msgid "Pause"
1680 msgstr "Pause"
1681
1682 #: ../../../src/SDLInputState.cpp:661
1683 msgid "Print"
1684 msgstr "Print"
1685
1686 #: ../../../src/SDLInputState.cpp:662
1687 msgid "RAlt"
1688 msgstr "RAlt"
1689
1690 #: ../../../src/SDLInputState.cpp:663
1691 msgid "RCtrl"
1692 msgstr "RCtrl"
1693
1694 #: ../../../src/SDLInputState.cpp:664
1695 msgid "Ret"
1696 msgstr "Ret"
1697
1698 #: ../../../src/SDLInputState.cpp:666
1699 msgid "RShft"
1700 msgstr "RShft"
1701
1702 #: ../../../src/SDLInputState.cpp:667
1703 msgid "SLock"
1704 msgstr "SLock"
1705
1706 #: ../../../src/SDLInputState.cpp:668
1707 msgid "Spc"
1708 msgstr "Spc"
1709
1710 #: ../../../src/SDLInputState.cpp:669 ../../../src/SDLInputState.cpp:699
1711 msgid "Tab"
1712 msgstr "Tab"
1713
1714 #: ../../../src/SDLInputState.cpp:675
13311715 msgid "Backspace"
13321716 msgstr "Backspace"
13331717
1334 #: ../../../src/SDLInputState.cpp:583
1718 #: ../../../src/SDLInputState.cpp:676
13351719 msgid "CapsLock"
13361720 msgstr "CapsLock"
13371721
1338 #: ../../../src/SDLInputState.cpp:586
1339 msgid "End"
1340 msgstr "End"
1341
1342 #: ../../../src/SDLInputState.cpp:587
1722 #: ../../../src/SDLInputState.cpp:680
13431723 msgid "Escape"
13441724 msgstr "Escape"
13451725
1346 #: ../../../src/SDLInputState.cpp:588
1347 msgid "Home"
1348 msgstr "Home"
1349
1350 #: ../../../src/SDLInputState.cpp:589
1726 #: ../../../src/SDLInputState.cpp:682
13511727 msgid "Insert"
13521728 msgstr "Insert"
13531729
1354 #: ../../../src/SDLInputState.cpp:590
1730 #: ../../../src/SDLInputState.cpp:683
13551731 msgid "Left Alt"
13561732 msgstr "Alt Esquerdo"
13571733
1358 #: ../../../src/SDLInputState.cpp:591
1734 #: ../../../src/SDLInputState.cpp:684
13591735 msgid "Left Ctrl"
13601736 msgstr "Ctrl Esquerdo"
13611737
1362 #: ../../../src/SDLInputState.cpp:593
1738 #: ../../../src/SDLInputState.cpp:686
13631739 msgid "Left Shift"
13641740 msgstr "Shift Esquerdo"
13651741
1366 #: ../../../src/SDLInputState.cpp:594
1742 #: ../../../src/SDLInputState.cpp:687
13671743 msgid "NumLock"
13681744 msgstr "NumLock"
13691745
1370 #: ../../../src/SDLInputState.cpp:595
1746 #: ../../../src/SDLInputState.cpp:688
13711747 msgid "PageDown"
13721748 msgstr "PageDown"
13731749
1374 #: ../../../src/SDLInputState.cpp:596
1750 #: ../../../src/SDLInputState.cpp:689
13751751 msgid "PageUp"
13761752 msgstr "PageUp"
13771753
1378 #: ../../../src/SDLInputState.cpp:597
1379 msgid "Pause"
1380 msgstr "Pause"
1381
1382 #: ../../../src/SDLInputState.cpp:598
1754 #: ../../../src/SDLInputState.cpp:691
13831755 msgid "PrintScreen"
13841756 msgstr "PrintScreen"
13851757
1386 #: ../../../src/SDLInputState.cpp:599
1758 #: ../../../src/SDLInputState.cpp:692
13871759 msgid "Right Alt"
13881760 msgstr "Alt Direito"
13891761
1390 #: ../../../src/SDLInputState.cpp:600
1762 #: ../../../src/SDLInputState.cpp:693
13911763 msgid "Right Ctrl"
13921764 msgstr "Ctrl Direito"
13931765
1394 #: ../../../src/SDLInputState.cpp:601
1766 #: ../../../src/SDLInputState.cpp:694
13951767 msgid "Return"
13961768 msgstr "Enter"
13971769
1398 #: ../../../src/SDLInputState.cpp:603
1770 #: ../../../src/SDLInputState.cpp:696
13991771 msgid "Right Shift"
14001772 msgstr "Shift Direito"
14011773
1402 #: ../../../src/SDLInputState.cpp:604
1774 #: ../../../src/SDLInputState.cpp:697
14031775 msgid "ScrollLock"
14041776 msgstr "ScrollLock"
14051777
1406 #: ../../../src/SDLInputState.cpp:605
1778 #: ../../../src/SDLInputState.cpp:698
14071779 msgid "Space"
14081780 msgstr "Espaço"
14091781
1410 #: ../../../src/SDLInputState.cpp:606
1411 msgid "Tab"
1412 msgstr "Tab"
1413
1414 #: ../../../src/SDLInputState.cpp:620
1782 #: ../../../src/SDLInputState.cpp:712
1783 #, c-format
1784 msgid "M%d"
1785 msgstr "M%d"
1786
1787 #: ../../../src/SDLInputState.cpp:718
14151788 #, c-format
14161789 msgid "Mouse %d"
14171790 msgstr "Mouse %d"
14181791
1419 #: ../../../src/SDLInputState.cpp:628
1792 #: ../../../src/SDLInputState.cpp:728
1793 #, c-format
1794 msgid "JX%d-"
1795 msgstr "JX%d-"
1796
1797 #: ../../../src/SDLInputState.cpp:730
14201798 #, c-format
14211799 msgid "Axis %d -"
14221800 msgstr "Eixo %d -"
14231801
1424 #: ../../../src/SDLInputState.cpp:630
1802 #: ../../../src/SDLInputState.cpp:734
1803 #, c-format
1804 msgid "JX%d+"
1805 msgstr "JX%d+"
1806
1807 #: ../../../src/SDLInputState.cpp:736
14251808 #, c-format
14261809 msgid "Axis %d +"
14271810 msgstr "Eixo %d +"
14281811
1429 #: ../../../src/SDLInputState.cpp:633
1812 #: ../../../src/SDLInputState.cpp:741
1813 #, c-format
1814 msgid "JB%d"
1815 msgstr "JB%d"
1816
1817 #: ../../../src/SDLInputState.cpp:743
14301818 #, c-format
14311819 msgid "Button %d"
14321820 msgstr "Botão %d"
14331821
1434 #: ../../../src/SDLInputState.cpp:637
1435 msgid "(none)"
1436 msgstr "(nenhum)"
1437
1438 #: ../../../src/SDLInputState.cpp:677
1822 #: ../../../src/SDLInputState.cpp:789
14391823 msgid "Touch control D-Pad"
1440 msgstr ""
1441
1442 #: ../../../src/SDLInputState.cpp:701
1824 msgstr "Direcional na tela"
1825
1826 #: ../../../src/SDLInputState.cpp:812
14431827 msgid "Touch control buttons"
1444 msgstr ""
1445
1446 #: ../../../src/SDLInputState.cpp:716
1828 msgstr "Botões na tela"
1829
1830 #: ../../../src/SDLInputState.cpp:826
14471831 msgid "Tap"
14481832 msgstr "Tap"
14491833
1450 #: ../../../src/SDLInputState.cpp:760 ../../../src/SDLInputState.cpp:764
1451 #: ../../../src/SDLInputState.cpp:768
1834 #: ../../../src/SDLInputState.cpp:878 ../../../src/SDLInputState.cpp:880
1835 #, c-format
1836 msgid "Can not bind: %s"
1837 msgstr "Não é possível atribuir: %s"
1838
1839 #: ../../../src/SDLInputState.cpp:892 ../../../src/SDLInputState.cpp:896
1840 #: ../../../src/SDLInputState.cpp:900
14521841 #, c-format
14531842 msgid "'%s' is no longer bound to:"
14541843 msgstr "'%s' não está mais obrigado a:"
16112000 msgid "Base MP"
16122001 msgstr "MP Básico"
16132002
1614 #: ../../../src/Utils.cpp:346
2003 #: ../../../src/Utils.cpp:365
16152004 msgid "k"
16162005 msgstr "k"
16172006
1618 #: ../../../src/Utils.cpp:580
2007 #: ../../../src/Utils.cpp:635
16192008 #, c-format
16202009 msgid "%s second"
16212010 msgstr "%s segundo"
16222011
1623 #: ../../../src/Utils.cpp:583
2012 #: ../../../src/Utils.cpp:638
16242013 #, c-format
16252014 msgid "%s seconds"
16262015 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
8 # Igor Polyakov <igorpolyakov@protonmail.com>, 2021
9 # David Bell <ooliterplus@gmail.com>, 2021
810 #
911 #, fuzzy
1012 msgid ""
1113 msgstr ""
1214 "Project-Id-Version: PACKAGE VERSION\n"
1315 "Report-Msgid-Bugs-To: \n"
14 "POT-Creation-Date: 2018-11-17 21:50-0500\n"
16 "POT-Creation-Date: 2021-07-02 13:26-0400\n"
1517 "PO-Revision-Date: 2018-03-28 19:16+0000\n"
16 "Last-Translator: Ademaro <ademaro@ya.ru>, 2018\n"
18 "Last-Translator: David Bell <ooliterplus@gmail.com>, 2021\n"
1719 "Language-Team: Russian (https://www.transifex.com/flareorg/teams/84925/ru/)\n"
1820 "MIME-Version: 1.0\n"
1921 "Content-Type: text/plain; charset=UTF-8\n"
2123 "Language: ru\n"
2224 "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"
2325
24 #: ../../../src/Avatar.cpp:367
26 #: ../../../src/Avatar.cpp:391
27 msgid "Your health is low!"
28 msgstr ""
29
30 #: ../../../src/Avatar.cpp:421
2531 #, c-format
2632 msgid "Congratulations, you have reached level %d!"
2733 msgstr "Поздравляем! Вы достигли уровень %d!"
2834
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
35 #: ../../../src/Avatar.cpp:423
36 msgid "You may increase one or more attributes through the Character Menu."
37 msgstr ""
38
39 #: ../../../src/Avatar.cpp:427
40 msgid "You may unlock one or more abilities through the Powers Menu."
41 msgstr ""
42
43 #: ../../../src/Avatar.cpp:689
44 msgid "You are defeated."
45 msgstr ""
46
47 #: ../../../src/Avatar.cpp:935
4448 msgid "Transformation expired. You have been moved back to a safe place."
4549 msgstr "Трансформация завершилась. Вы были возвращены в безопасное место."
4650
47 #: ../../../src/CampaignManager.cpp:153
51 #: ../../../src/CampaignManager.cpp:152
4852 #, c-format
4953 msgid "%d %s removed."
5054 msgstr "%d %s убрано."
5155
52 #: ../../../src/CampaignManager.cpp:162
56 #: ../../../src/CampaignManager.cpp:171
57 #, c-format
58 msgid "%s x%d removed."
59 msgstr "%d x%s убрано."
60
61 #: ../../../src/CampaignManager.cpp:173
5362 #, c-format
5463 msgid "%s removed."
5564 msgstr "%s убран."
5665
57 #: ../../../src/CampaignManager.cpp:175
66 #: ../../../src/CampaignManager.cpp:187
67 #, c-format
68 msgid "You receive %d %s."
69 msgstr "Вы получаете %d %s."
70
71 #: ../../../src/CampaignManager.cpp:191
72 #, c-format
73 msgid "You receive %s x%d."
74 msgstr "Вы получаете %s x%d."
75
76 #: ../../../src/CampaignManager.cpp:193
5877 #, c-format
5978 msgid "You receive %s."
6079 msgstr "Вы получаете %s."
6180
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
81 #: ../../../src/CampaignManager.cpp:210
7382 #, c-format
7483 msgid "You receive %d XP."
7584 msgstr "Вы получаете %d опыта."
7685
77 #: ../../../src/CampaignManager.cpp:201
86 #: ../../../src/CampaignManager.cpp:216
7887 msgid "HP restored."
7988 msgstr "Жизнь восстановлена."
8089
81 #: ../../../src/CampaignManager.cpp:205
90 #: ../../../src/CampaignManager.cpp:220
8291 msgid "MP restored."
8392 msgstr "Мана восстановлена."
8493
85 #: ../../../src/CampaignManager.cpp:210
94 #: ../../../src/CampaignManager.cpp:225
8695 msgid "HP and MP restored."
8796 msgstr "Жизнь и Мана восстановлены."
8897
89 #: ../../../src/CampaignManager.cpp:214
98 #: ../../../src/CampaignManager.cpp:229
9099 msgid "Negative effects removed."
91100 msgstr "Отрицательные эффекты убраны."
92101
93 #: ../../../src/CampaignManager.cpp:220
102 #: ../../../src/CampaignManager.cpp:235
94103 msgid "HP and MP restored, negative effects removed"
95104 msgstr "Жизнь и Мана восстановлены, отрицательные эффекты убраны"
96105
100109 "\n"
101110 "Often slower, but less likely to have issues."
102111 msgstr ""
112 "SDL software рендерер\n"
113 "\n"
114 "Чаще всего медленнее, но и проблемы возникают реже."
103115
104116 #: ../../../src/DeviceList.cpp:59
105117 msgid ""
107119 "\n"
108120 "The default renderer that is often faster than the SDL software renderer."
109121 msgstr ""
110
111 #: ../../../src/EngineSettings.cpp:561
122 "SDL hardware рендерер\n"
123 "\n"
124 "Рендерер по-умолчанию. Быстрее, чем SDL software рендерер."
125
126 #: ../../../src/EngineSettings.cpp:586
112127 msgid "Adventurer"
113128 msgstr "Авантюрист"
114129
115 #: ../../../src/Entity.cpp:511
130 #: ../../../src/Entity.cpp:527
116131 msgid "miss"
117132 msgstr "промах"
118133
119 #: ../../../src/Entity.cpp:548 ../../../src/PowerManager.cpp:1152
120 #: ../../../src/StatBlock.cpp:805 ../../../src/StatBlock.cpp:811
134 #: ../../../src/Entity.cpp:565 ../../../src/PowerManager.cpp:1220
135 #: ../../../src/StatBlock.cpp:926 ../../../src/StatBlock.cpp:932
121136 #, c-format
122137 msgid "+%d HP"
123138 msgstr "+%d Жизни"
124139
125 #: ../../../src/Entity.cpp:555 ../../../src/StatBlock.cpp:816
126 #: ../../../src/StatBlock.cpp:822
140 #: ../../../src/Entity.cpp:572 ../../../src/StatBlock.cpp:937
141 #: ../../../src/StatBlock.cpp:943
127142 #, c-format
128143 msgid "+%d MP"
129144 msgstr "+%d Маны"
130145
131 #: ../../../src/EventManager.cpp:738
146 #: ../../../src/EventManager.cpp:792
132147 msgid "Unknown destination"
133148 msgstr "Неизвестная цель"
134149
135 #: ../../../src/GameStateConfigBase.cpp:89
136 #: ../../../src/GameStateConfigBase.cpp:110
150 #: ../../../src/GameState.cpp:37 ../../../src/GameState.cpp:58
151 msgid "Loading..."
152 msgstr "Загрузка..."
153
154 #: ../../../src/GameStateLoad.cpp:90 ../../../src/GameStateLoad.cpp:103
155 msgid "Delete Save"
156 msgstr "Удалить Игру"
157
158 #: ../../../src/GameStateLoad.cpp:90
159 msgid "Delete this save?"
160 msgstr "Удалить эту сохранённую игру?"
161
162 #: ../../../src/GameStateLoad.cpp:92
163 msgid "Exit to Title"
164 msgstr "Выйти в Меню"
165
166 #: ../../../src/GameStateLoad.cpp:95
167 msgid "New Game"
168 msgstr "Новая Игра"
169
170 #: ../../../src/GameStateLoad.cpp:99 ../../../src/GameStateLoad.cpp:607
171 msgid "Choose a Slot"
172 msgstr "Выберите Слот"
173
174 #: ../../../src/GameStateLoad.cpp:580 ../../../src/GameStateLoad.cpp:601
175 msgid "Enable a story mod to continue"
176 msgstr "Включите сюжетный мод для продолжения"
177
178 #: ../../../src/GameStateLoad.cpp:596
179 msgid "Load Game"
180 msgstr "Загрузить Игру"
181
182 #: ../../../src/GameStateLoad.cpp:704
183 msgid "Entering game world..."
184 msgstr "Вход в игровой мир..."
185
186 #: ../../../src/GameStateLoad.cpp:707
187 msgid "Loading saved game..."
188 msgstr "Загрузка сохранённой игры..."
189
190 #: ../../../src/GameStateLoad.cpp:740
191 msgid "Invalid save"
192 msgstr "Недействительная игра"
193
194 #: ../../../src/GameStateLoad.cpp:764 ../../../src/ItemManager.cpp:745
195 #: ../../../src/MenuPowers.cpp:882 ../../../src/MenuPowers.cpp:1241
196 #: ../../../src/MenuPowers.cpp:1653
197 #, c-format
198 msgid "Level %d"
199 msgstr "Уровень %d"
200
201 #: ../../../src/GameStateNew.cpp:66 ../../../src/InputState.cpp:416
202 #: ../../../src/MenuConfig.cpp:254
203 msgid "Cancel"
204 msgstr "Отмена"
205
206 #: ../../../src/GameStateNew.cpp:69
207 msgid "Create"
208 msgstr "Создать"
209
210 #: ../../../src/GameStateNew.cpp:77
211 msgid "Randomize"
212 msgstr "Случайно"
213
214 #: ../../../src/GameStateNew.cpp:93
215 msgid "Choose a Portrait"
216 msgstr "Выберите Портрет"
217
218 #: ../../../src/GameStateNew.cpp:97
219 msgid "Choose a Name"
220 msgstr "Выберите Имя"
221
222 #: ../../../src/GameStateNew.cpp:101
223 msgid "Permadeath?"
224 msgstr "Одна Жизнь?"
225
226 #: ../../../src/GameStateNew.cpp:105
227 msgid "Choose a Class"
228 msgstr "Выберите Класс"
229
230 #: ../../../src/GameStateTitle.cpp:107
231 msgid "Play Game"
232 msgstr "Играть"
233
234 #: ../../../src/GameStateTitle.cpp:110
235 msgid "Enable a core mod to continue"
236 msgstr "Включите основной мод для продолжения"
237
238 #: ../../../src/GameStateTitle.cpp:114 ../../../src/MenuMiniMap.cpp:152
239 msgid "Configuration"
240 msgstr "Настройки"
241
242 #: ../../../src/GameStateTitle.cpp:117
243 msgid "Credits"
244 msgstr "Авторы"
245
246 #: ../../../src/GameStateTitle.cpp:120
247 msgid "Exit Game"
248 msgstr "Выйти из Игры"
249
250 #: ../../../src/InputState.cpp:417
251 msgid "Accept"
252 msgstr "Принять"
253
254 #: ../../../src/InputState.cpp:418 ../../../src/MenuMovementType.cpp:123
255 #: ../../../src/MenuMovementType.cpp:132 ../../../src/SDLInputState.cpp:670
256 #: ../../../src/SDLInputState.cpp:700
257 msgid "Up"
258 msgstr "Вверх"
259
260 #: ../../../src/InputState.cpp:419 ../../../src/MenuMovementType.cpp:125
261 #: ../../../src/MenuMovementType.cpp:134 ../../../src/SDLInputState.cpp:648
262 #: ../../../src/SDLInputState.cpp:678
263 msgid "Down"
264 msgstr "Вниз"
265
266 #: ../../../src/InputState.cpp:420 ../../../src/MenuMovementType.cpp:124
267 #: ../../../src/MenuMovementType.cpp:133 ../../../src/SDLInputState.cpp:655
268 #: ../../../src/SDLInputState.cpp:685
269 msgid "Left"
270 msgstr "Влево"
271
272 #: ../../../src/InputState.cpp:421 ../../../src/MenuMovementType.cpp:126
273 #: ../../../src/MenuMovementType.cpp:135 ../../../src/SDLInputState.cpp:665
274 #: ../../../src/SDLInputState.cpp:695
275 msgid "Right"
276 msgstr "Вправо"
277
278 #: ../../../src/InputState.cpp:422
279 msgid "Bar1"
280 msgstr "Меню1"
281
282 #: ../../../src/InputState.cpp:423
283 msgid "Bar2"
284 msgstr "Меню2"
285
286 #: ../../../src/InputState.cpp:424
287 msgid "Bar3"
288 msgstr "Меню3"
289
290 #: ../../../src/InputState.cpp:425
291 msgid "Bar4"
292 msgstr "Меню4"
293
294 #: ../../../src/InputState.cpp:426
295 msgid "Bar5"
296 msgstr "Меню5"
297
298 #: ../../../src/InputState.cpp:427
299 msgid "Bar6"
300 msgstr "Меню6"
301
302 #: ../../../src/InputState.cpp:428
303 msgid "Bar7"
304 msgstr "Меню7"
305
306 #: ../../../src/InputState.cpp:429
307 msgid "Bar8"
308 msgstr "Меню8"
309
310 #: ../../../src/InputState.cpp:430
311 msgid "Bar9"
312 msgstr "Меню9"
313
314 #: ../../../src/InputState.cpp:431
315 msgid "Bar0"
316 msgstr "Меню0"
317
318 #: ../../../src/InputState.cpp:432 ../../../src/MenuActionBar.cpp:84
319 #: ../../../src/MenuCharacter.cpp:54
320 msgid "Character"
321 msgstr "Персонаж"
322
323 #: ../../../src/InputState.cpp:433 ../../../src/MenuActionBar.cpp:85
324 #: ../../../src/MenuInventory.cpp:130 ../../../src/MenuVendor.cpp:59
325 msgid "Inventory"
326 msgstr "Инвентарь"
327
328 #: ../../../src/InputState.cpp:434 ../../../src/MenuActionBar.cpp:86
329 #: ../../../src/MenuPowers.cpp:159
330 msgid "Powers"
331 msgstr "Силы"
332
333 #: ../../../src/InputState.cpp:435 ../../../src/MenuActionBar.cpp:87
334 #: ../../../src/MenuLog.cpp:72
335 msgid "Log"
336 msgstr "Журнал"
337
338 #: ../../../src/InputState.cpp:436
339 msgid "Main1"
340 msgstr "Главное1"
341
342 #: ../../../src/InputState.cpp:437
343 msgid "Main2"
344 msgstr "Главное2"
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:677
359 msgid "Delete"
360 msgstr "Удалить"
361
362 #: ../../../src/InputState.cpp:442
363 msgid "ActionBar Accept"
364 msgstr "Панель действий: Принять"
365
366 #: ../../../src/InputState.cpp:443
367 msgid "ActionBar Left"
368 msgstr "Панель действий: Влево"
369
370 #: ../../../src/InputState.cpp:444
371 msgid "ActionBar Right"
372 msgstr "Панель действий: Вправо"
373
374 #: ../../../src/InputState.cpp:445
375 msgid "ActionBar Use"
376 msgstr "Панель действий: Использовать"
377
378 #: ../../../src/InputState.cpp:446
379 msgid "Developer Menu"
380 msgstr "Меню Разработчика"
381
382 #: ../../../src/InputState.cpp:448
383 msgid "Left Mouse"
384 msgstr "Левая Кнопка Мыши"
385
386 #: ../../../src/InputState.cpp:449
387 msgid "Middle Mouse"
388 msgstr "Средняя Кнопка Мыши"
389
390 #: ../../../src/InputState.cpp:450
391 msgid "Right Mouse"
392 msgstr "Правая Кнопка Мыши"
393
394 #: ../../../src/InputState.cpp:451
395 msgid "Wheel Up"
396 msgstr "Прокрутка Вверх"
397
398 #: ../../../src/InputState.cpp:452
399 msgid "Wheel Down"
400 msgstr "Прокрутка Вниз"
401
402 #: ../../../src/InputState.cpp:453
403 msgid "Mouse X1"
404 msgstr "Мышь X1"
405
406 #: ../../../src/InputState.cpp:454
407 msgid "Mouse X2"
408 msgstr "Мышь X2"
409
410 #: ../../../src/ItemManager.cpp:475
411 msgid "Unknown Item"
412 msgstr "Неизвестный Предмет"
413
414 #: ../../../src/ItemManager.cpp:646 ../../../src/MenuPowers.cpp:981
415 #, c-format
416 msgid "%d%% Speed"
417 msgstr "%d%% Скорости"
418
419 #: ../../../src/ItemManager.cpp:650 ../../../src/MenuPowers.cpp:984
420 #, c-format
421 msgid "%d%% Attack Speed"
422 msgstr "%d%% Скорость Атаки"
423
424 #: ../../../src/ItemManager.cpp:672 ../../../src/MenuCharacter.cpp:352
425 #: ../../../src/MenuPowers.cpp:953
426 #, c-format
427 msgid "Resistance (%s)"
428 msgstr "Сопротивление (%s)"
429
430 #: ../../../src/ItemManager.cpp:682
431 #, c-format
432 msgid "Requires %s"
433 msgstr "Требуется %s"
434
435 #: ../../../src/ItemManager.cpp:731
436 msgid "Quest Item"
437 msgstr "Предмет Задания"
438
439 #: ../../../src/ItemManager.cpp:758
440 #, c-format
441 msgid "Quality: %s"
442 msgstr "Качество: %s"
443
444 #: ../../../src/ItemManager.cpp:783
445 #, c-format
446 msgid "Absorb: %d-%d"
447 msgstr "Поглощение: %d-%d"
448
449 #: ../../../src/ItemManager.cpp:785
450 #, c-format
451 msgid "Absorb: %d"
452 msgstr "Поглощение: %d"
453
454 #: ../../../src/ItemManager.cpp:825 ../../../src/MenuPowers.cpp:1228
455 #: ../../../src/MenuPowers.cpp:1231
456 #, c-format
457 msgid "Requires Level %d"
458 msgstr "Требуется Уровень %d"
459
460 #: ../../../src/ItemManager.cpp:836 ../../../src/MenuPowers.cpp:1220
461 #: ../../../src/MenuPowers.cpp:1222
462 #, c-format
463 msgid "Requires %s %d"
464 msgstr "Требуется %s %d"
465
466 #: ../../../src/ItemManager.cpp:847
467 #, c-format
468 msgid "Requires Class: %s"
469 msgstr "Требуется Класс: %s"
470
471 #: ../../../src/ItemManager.cpp:863 ../../../src/ItemManager.cpp:875
472 #, c-format
473 msgid "Buy Price: %d %s"
474 msgstr "Цена Покупки: %d %s"
475
476 #: ../../../src/ItemManager.cpp:865 ../../../src/ItemManager.cpp:877
477 #, c-format
478 msgid "Buy Price: %d %s each"
479 msgstr "Цена Покупки: %d %s каждый"
480
481 #: ../../../src/ItemManager.cpp:885
482 #, c-format
483 msgid "Sell Price: %d %s"
484 msgstr "Цена Продажи: %d %s"
485
486 #: ../../../src/ItemManager.cpp:887
487 #, c-format
488 msgid "Sell Price: %d %s each"
489 msgstr "Цена Продажи: %d %s каждый"
490
491 #: ../../../src/ItemManager.cpp:898
492 msgid "Set:"
493 msgstr ""
494
495 #: ../../../src/ItemManager.cpp:905
496 #, c-format
497 msgid "%d items:"
498 msgstr "%d предметов:"
499
500 #: ../../../src/ItemManager.cpp:920
501 #, c-format
502 msgid "Press [%s] to read"
503 msgstr "Нажмите [%s], чтобы прочитать"
504
505 #: ../../../src/ItemManager.cpp:923
506 #, c-format
507 msgid "Press [%s] to use"
508 msgstr "Нажмите [%s], чтобы использовать"
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 "Горячая клавиша: %s"
515
516 #: ../../../src/MenuActionBar.cpp:621
517 msgid "Not enough MP."
518 msgstr "Недостаточно МР."
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 "Осталось:"
528
529 #: ../../../src/MenuActiveEffects.cpp:225
530 #, c-format
531 msgid "x%d stacks"
532 msgstr ""
533
534 #: ../../../src/MenuCharacter.cpp:73 ../../../src/MenuCharacter.cpp:78
535 msgid "Name"
536 msgstr "Имя"
537
538 #: ../../../src/MenuCharacter.cpp:74 ../../../src/MenuCharacter.cpp:79
539 msgid "Level"
540 msgstr "Уровень"
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 "Снижает урон полученный от \"%s\" элементальной атаки."
551
552 #: ../../../src/MenuCharacter.cpp:363 ../../../src/MenuManager.cpp:301
553 #, c-format
554 msgid "XP: %d"
555 msgstr "Опыт: %d"
556
557 #: ../../../src/MenuCharacter.cpp:365
558 #, c-format
559 msgid "Next: %d"
560 msgstr "Следующий: %d"
561
562 #: ../../../src/MenuCharacter.cpp:371
563 #, c-format
564 msgid "base (%d), bonus (%d)"
565 msgstr "базовое (%d), бонус (%d)"
566
567 #: ../../../src/MenuCharacter.cpp:379 ../../../src/MenuCharacter.cpp:393
568 msgid "Related stats:"
569 msgstr "Связанные атрибуты:"
570
571 #: ../../../src/MenuCharacter.cpp:419 ../../../src/MenuCharacter.cpp:443
572 #, c-format
573 msgid "Each level grants %d."
574 msgstr "Каждый уровень дает %d."
575
576 #: ../../../src/MenuCharacter.cpp:423 ../../../src/MenuCharacter.cpp:447
577 #, c-format
578 msgid "Each point of %s grants %d."
579 msgstr "Каждое очко %s дает %d."
580
581 #: ../../../src/MenuConfig.cpp:122 ../../../src/MenuConfig.cpp:1256
582 msgid "Clear"
583 msgstr "Очистить"
584
585 #: ../../../src/MenuConfig.cpp:122 ../../../src/MenuConfig.cpp:1254
586 msgid "Assign:"
587 msgstr "Назначение:"
588
589 #: ../../../src/MenuConfig.cpp:123 ../../../src/MenuConfig.cpp:253
137590 msgid "Defaults"
138 msgstr "Дефаулт"
139
140 #: ../../../src/GameStateConfigBase.cpp:89
591 msgstr "По-умолчанию"
592
593 #: ../../../src/MenuConfig.cpp:123
141594 msgid "Reset ALL settings?"
142595 msgstr "Сбросить ВСЕ настройки?"
143596
144 #: ../../../src/GameStateConfigBase.cpp:109 ../../../src/MenuNumPicker.cpp:49
597 #: ../../../src/MenuConfig.cpp:252 ../../../src/MenuNumPicker.cpp:49
145598 msgid "OK"
146599 msgstr "ОК"
147600
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
601 #: ../../../src/MenuConfig.cpp:256 ../../../src/MenuGameOver.cpp:72
602 msgid "Continue"
603 msgstr "Продолжить"
604
605 #: ../../../src/MenuConfig.cpp:258
606 msgid "Save Game"
607 msgstr "Сохранить Игру"
608
609 #: ../../../src/MenuConfig.cpp:301 ../../../src/MenuConfig.cpp:352
610 msgid "Default"
611 msgstr "По умолчанию"
612
613 #: ../../../src/MenuConfig.cpp:301
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 "Выпадающие предметы подсвечиваются на удалении от игрока или врага, при "
619 "нажатии клавиши 'Alt' и наведении курсора."
620
621 #: ../../../src/MenuConfig.cpp:302
622 msgid "Show all"
623 msgstr "Показывать всегда"
624
625 #: ../../../src/MenuConfig.cpp:302
626 msgid ""
627 "Always show loot tooltips. Temporarily hide all loot tooltips with 'Alt'."
628 msgstr ""
629 "Всегда подсвечивать выпадающие предметы. Временно скрыть подсветку клавишей "
630 "'Alt'."
631
632 #: ../../../src/MenuConfig.cpp:303 ../../../src/MenuConfig.cpp:308
633 msgid "Hidden"
634 msgstr "Скрывать"
635
636 #: ../../../src/MenuConfig.cpp:303
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 "Не подсвечивать выпадающие предметы до наведения на них курсора. Временно "
642 "подстветить все предметы клавишей 'Alt'."
643
644 #: ../../../src/MenuConfig.cpp:306
645 msgid "Visible"
646 msgstr "Видимое"
647
648 #: ../../../src/MenuConfig.cpp:307
649 msgid "Visible (2x zoom)"
650 msgstr "Видимое (2х увеличение)"
651
652 #: ../../../src/MenuConfig.cpp:311
653 msgid ""
654 "Controls the type of warning to be activated when the player is below the "
655 "low health threshold."
656 msgstr ""
657
658 #: ../../../src/MenuConfig.cpp:312
659 msgid "- Display a message"
660 msgstr ""
661
662 #: ../../../src/MenuConfig.cpp:313
663 msgid "- Play a sound"
664 msgstr ""
665
666 #: ../../../src/MenuConfig.cpp:314
667 msgid "- Change the cursor"
668 msgstr ""
669
670 #: ../../../src/MenuConfig.cpp:316
671 msgid "Disabled"
672 msgstr ""
673
674 #: ../../../src/MenuConfig.cpp:317
675 msgid "All"
676 msgstr ""
677
678 #: ../../../src/MenuConfig.cpp:318
679 msgid "Message & Cursor"
680 msgstr ""
681
682 #: ../../../src/MenuConfig.cpp:319
683 msgid "Message & Sound"
684 msgstr ""
685
686 #: ../../../src/MenuConfig.cpp:320
687 msgid "Sound & Cursor"
688 msgstr ""
689
690 #: ../../../src/MenuConfig.cpp:321
691 msgid "Message"
692 msgstr ""
693
694 #: ../../../src/MenuConfig.cpp:322
695 msgid "Cursor"
696 msgstr "Курсор"
697
698 #: ../../../src/MenuConfig.cpp:323
699 msgid "Sound"
700 msgstr "Звук"
701
702 #: ../../../src/MenuConfig.cpp:329
703 msgid ""
704 "When the player's health drops below the given threshold, the low health "
705 "notifications are triggered if one or more of them is enabled."
706 msgstr ""
707
708 #: ../../../src/MenuConfig.cpp:347
709 msgid "The maximum frame rate that the game will be allowed to run at."
710 msgstr ""
711
712 #: ../../../src/MenuConfig.cpp:351
713 msgid ""
714 "The render size refers to the height in pixels of the surface used to draw "
715 "the game. Mods define the allowed render sizes, but this option allows "
716 "overriding the maximum size."
717 msgstr ""
718
719 #: ../../../src/MenuConfig.cpp:374 ../../../src/MenuConfig.cpp:1679
720 #: ../../../src/MenuGameOver.cpp:116
721 msgid "Exit"
722 msgstr "Выйти"
723
724 #: ../../../src/MenuConfig.cpp:375
725 msgid "Video"
726 msgstr "Видео"
727
728 #: ../../../src/MenuConfig.cpp:376
155729 msgid "Audio"
156730 msgstr "Аудио"
157731
158 #: ../../../src/GameStateConfigBase.cpp:161
159 #: ../../../src/GameStateConfigDesktop.cpp:131
732 #: ../../../src/MenuConfig.cpp:377
160733 msgid "Interface"
161734 msgstr "Интерфейс"
162735
163 #: ../../../src/GameStateConfigBase.cpp:162
164 #: ../../../src/GameStateConfigDesktop.cpp:134
736 #: ../../../src/MenuConfig.cpp:378
737 msgid "Input"
738 msgstr "Ввод"
739
740 #: ../../../src/MenuConfig.cpp:379
741 msgid "Keybindings"
742 msgstr "Привязки Клавиш"
743
744 #: ../../../src/MenuConfig.cpp:380
165745 msgid "Mods"
166746 msgstr "Моды"
167747
168 #: ../../../src/GameStateConfigBase.cpp:249 ../../../src/MenuExit.cpp:72
748 #: ../../../src/MenuConfig.cpp:392
749 msgid "Paused"
750 msgstr "Пауза"
751
752 #: ../../../src/MenuConfig.cpp:395
753 msgid "Time Played"
754 msgstr "Время в игре"
755
756 #: ../../../src/MenuConfig.cpp:401
757 msgid "Renderer"
758 msgstr "Рендерер"
759
760 #: ../../../src/MenuConfig.cpp:402
761 msgid "Full Screen Mode"
762 msgstr "Полноэкранный Режим"
763
764 #: ../../../src/MenuConfig.cpp:403
765 msgid "Hardware surfaces"
766 msgstr "Аппаратные поверхности"
767
768 #: ../../../src/MenuConfig.cpp:404
769 msgid "V-Sync"
770 msgstr "Верт. Синхронизация"
771
772 #: ../../../src/MenuConfig.cpp:405
773 msgid "Texture Filtering"
774 msgstr "Фильтрация Текстур"
775
776 #: ../../../src/MenuConfig.cpp:406
777 msgid "DPI scaling"
778 msgstr "Масштабирование DPI"
779
780 #: ../../../src/MenuConfig.cpp:407
781 msgid "Parallax Layers"
782 msgstr "Слои Параллакса"
783
784 #: ../../../src/MenuConfig.cpp:408
785 msgid "Allow changing gamma"
786 msgstr "Включить изменение гаммы"
787
788 #: ../../../src/MenuConfig.cpp:409
789 msgid "Gamma"
790 msgstr "Гамма"
791
792 #: ../../../src/MenuConfig.cpp:410
793 msgid "Maximum Render Size"
794 msgstr ""
795
796 #: ../../../src/MenuConfig.cpp:411
797 msgid "Frame Limit"
798 msgstr ""
799
800 #: ../../../src/MenuConfig.cpp:413
801 msgid "Sound Volume"
802 msgstr "Громкость Звука"
803
804 #: ../../../src/MenuConfig.cpp:414
169805 msgid "Music Volume"
170806 msgstr "Громкость Музыки"
171807
172 #: ../../../src/GameStateConfigBase.cpp:253 ../../../src/MenuExit.cpp:77
173 msgid "Sound Volume"
174 msgstr "Громкость Звука"
175
176 #: ../../../src/GameStateConfigBase.cpp:257
808 #: ../../../src/MenuConfig.cpp:416
177809 msgid "Language"
178810 msgstr "Язык"
179811
180 #: ../../../src/GameStateConfigBase.cpp:266
812 #: ../../../src/MenuConfig.cpp:417
181813 msgid "Show FPS"
182814 msgstr "Показывать FPS"
183815
184 #: ../../../src/GameStateConfigBase.cpp:270
185 msgid "Colorblind Mode"
186 msgstr "Режим цветовой слепоты"
187
188 #: ../../../src/GameStateConfigBase.cpp:274
816 #: ../../../src/MenuConfig.cpp:418
189817 msgid "Hardware mouse cursor"
190818 msgstr "Аппаратный курсор мыши"
191819
192 #: ../../../src/GameStateConfigBase.cpp:278
820 #: ../../../src/MenuConfig.cpp:419
821 msgid "Colorblind Mode"
822 msgstr "Режим адаптации для дальтоников"
823
824 #: ../../../src/MenuConfig.cpp:420
193825 msgid "Developer Mode"
194 msgstr "Режим Девелоперов"
195
196 #: ../../../src/GameStateConfigBase.cpp:282
826 msgstr "Режим Разработчика"
827
828 #: ../../../src/MenuConfig.cpp:421
197829 msgid "Subtitles"
198830 msgstr "Субтитры"
199831
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
832 #: ../../../src/MenuConfig.cpp:422
833 msgid "Loot tooltip visibility"
834 msgstr "Подсветка выпадающих вещей"
835
836 #: ../../../src/MenuConfig.cpp:423
837 msgid "Mini-map mode"
838 msgstr "Режим мини-карты"
839
840 #: ../../../src/MenuConfig.cpp:424
841 msgid "Always show stat bar labels"
842 msgstr "Всегда показывать метки в строке состояния"
843
844 #: ../../../src/MenuConfig.cpp:425
845 msgid "Allow stat bar auto-hiding"
846 msgstr "Разрешить модам автоскрытие панелей"
847
848 #: ../../../src/MenuConfig.cpp:426
849 msgid "Show combat text"
850 msgstr "Показывать сообщения битвы"
851
852 #: ../../../src/MenuConfig.cpp:427
853 msgid "Automatically equip items"
854 msgstr "Сразу надевать предметы"
855
856 #: ../../../src/MenuConfig.cpp:428
857 msgid "Show hidden entity markers"
858 msgstr "Помечать меткой скрытых врагов"
859
860 #: ../../../src/MenuConfig.cpp:429
861 msgid "Low health notification"
862 msgstr ""
863
864 #: ../../../src/MenuConfig.cpp:430
865 msgid "Low health threshold"
866 msgstr ""
867
868 #: ../../../src/MenuConfig.cpp:431
869 msgid "Show item comparison tooltips"
870 msgstr ""
871
872 #: ../../../src/MenuConfig.cpp:434 ../../../src/MenuMovementType.cpp:94
873 #: ../../../src/MenuMovementType.cpp:131
874 msgid "Joystick"
875 msgstr "Джойстик"
876
877 #: ../../../src/MenuConfig.cpp:435
878 msgid "Move hero using mouse"
879 msgstr "Управлять героем мышью"
880
881 #: ../../../src/MenuConfig.cpp:436
882 msgid "Mouse aim"
883 msgstr "Целиться мышью"
884
885 #: ../../../src/MenuConfig.cpp:437
886 msgid "Do not use mouse"
887 msgstr "Не использовать мышь"
888
889 #: ../../../src/MenuConfig.cpp:438
890 msgid "Swap mouse movement button"
891 msgstr ""
892
893 #: ../../../src/MenuConfig.cpp:439
894 msgid "Attack with mouse movement"
895 msgstr ""
896
897 #: ../../../src/MenuConfig.cpp:440
898 msgid "Joystick Deadzone"
899 msgstr "Мёртвая зона джойстика"
900
901 #: ../../../src/MenuConfig.cpp:441
902 msgid "Touch Controls"
903 msgstr ""
904
905 #: ../../../src/MenuConfig.cpp:442
906 msgid "Touch Gamepad Scaling"
907 msgstr ""
908
909 #: ../../../src/MenuConfig.cpp:452
910 #, c-format
911 msgid "Primary binding: %s"
912 msgstr ""
913
914 #: ../../../src/MenuConfig.cpp:453
915 #, c-format
916 msgid "Alternate binding: %s"
917 msgstr ""
918
919 #: ../../../src/MenuConfig.cpp:454
920 #, c-format
921 msgid "Joystick binding: %s"
922 msgstr ""
923
924 #: ../../../src/MenuConfig.cpp:556
255925 msgid ""
256926 "Will try to store surfaces in video memory versus system memory. The effect "
257927 "this has on performance depends on the renderer."
258928 msgstr ""
259
260 #: ../../../src/GameStateConfigDesktop.cpp:189
929 "Будет нагружать память видеокарты вместо системной памяти. Эффект зависит от"
930 " рендерера."
931
932 #: ../../../src/MenuConfig.cpp:557
261933 msgid ""
262934 "Prevents screen tearing. Disable if you experience \"stuttering\" in "
263935 "windowed mode or input lag."
264936 msgstr ""
265937
266 #: ../../../src/GameStateConfigDesktop.cpp:190
938 #: ../../../src/MenuConfig.cpp:558
267939 msgid ""
268940 "When enabled, this uses the screen DPI in addition to the window dimensions "
269941 "to scale the rendering resolution. Otherwise, only the window dimensions are"
270942 " used."
271943 msgstr ""
272944
273 #: ../../../src/GameStateConfigDesktop.cpp:191
945 #: ../../../src/MenuConfig.cpp:559
274946 msgid ""
275947 "This enables parallax (non-tile) layers. Disabling this setting can improve "
276948 "performance in some cases."
277949 msgstr ""
278950
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
951 #: ../../../src/MenuConfig.cpp:560
952 msgid ""
953 "Enables the below setting that controls the screen gamma level. The behavior"
954 " of the gamma setting can vary between platforms."
955 msgstr ""
956
957 #: ../../../src/MenuConfig.cpp:561
958 msgid ""
959 "Provides additional text for information that is primarily conveyed through "
960 "color."
961 msgstr "Предоставлять дополнительный текст для информации связанной с цветом."
962
963 #: ../../../src/MenuConfig.cpp:562
964 msgid ""
965 "Some mods will automatically hide the stat bars when they are inactive. "
966 "Disabling this option will keep them displayed at all times."
967 msgstr ""
968 "Некоторые моды автоматически скрывают панель опыта/маны/жизни. Отключив эту "
969 "опцию панели будут отображаться постоянно."
970
971 #: ../../../src/MenuConfig.cpp:563
972 msgid ""
973 "When enabled, empty equipment slots will be filled with applicable items "
974 "when they are obtained."
975 msgstr ""
976 "Если включено, то пустые слоты предметов сразу будут заполняться подходящими"
977 " предметами."
978
979 #: ../../../src/MenuConfig.cpp:564
980 msgid ""
981 "Shows a marker above enemies, allies, and the player when they are obscured "
982 "by tall objects."
983 msgstr ""
984 "Показывать метку над врагами и игроком, когда они скрыты высокими объектами."
985
986 #: ../../../src/MenuConfig.cpp:565
987 msgid ""
988 "When enabled, tooltips for equipped items of the same type are shown next to"
989 " standard item tooltips."
990 msgstr ""
991
992 #: ../../../src/MenuConfig.cpp:566
993 msgid ""
994 "This allows the game to be controlled entirely with the keyboard (or "
995 "joystick)."
996 msgstr ""
997
998 #: ../../../src/MenuConfig.cpp:567
999 msgid ""
1000 "When 'Move hero using mouse' is enabled, this setting controls if 'Main1' or"
1001 " 'Main2' is used to move the hero. If enabled, 'Main2' will move the hero "
1002 "instead of 'Main1'."
1003 msgstr ""
1004
1005 #: ../../../src/MenuConfig.cpp:568
1006 msgid ""
1007 "When 'Move hero using mouse' is enabled, this setting controls if the Power "
1008 "assigned to the movement button can be used by targeting an enemy. If this "
1009 "setting is disabled, it is required to use 'Shift' to access the Power "
1010 "assigned to the movement button."
1011 msgstr ""
1012
1013 #: ../../../src/MenuConfig.cpp:569
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
1019 #: ../../../src/MenuConfig.cpp:570
1020 msgid ""
1021 "When enabled, a virtual gamepad will be added in-game. Other interactions, "
1022 "such as drag-and-drop behavior, are also altered to better suit touch input."
1023 msgstr ""
1024
1025 #: ../../../src/MenuConfig.cpp:621
1026 msgid "Active Mods"
1027 msgstr "Активные Моды"
1028
1029 #: ../../../src/MenuConfig.cpp:630
1030 msgid "Available Mods"
1031 msgstr "Доступные Моды"
1032
1033 #: ../../../src/MenuConfig.cpp:649
1034 msgid "<< Disable"
1035 msgstr "<< Отключить"
1036
1037 #: ../../../src/MenuConfig.cpp:655
1038 msgid "Enable >>"
1039 msgstr "Включить >>"
1040
1041 #: ../../../src/MenuConfig.cpp:1536
1042 msgid "Version:"
1043 msgstr "Версия:"
1044
1045 #: ../../../src/MenuConfig.cpp:1541
1046 msgid "Game:"
1047 msgstr "Игра:"
1048
1049 #: ../../../src/MenuConfig.cpp:1546
1050 msgid "Engine version:"
1051 msgstr "Версия движка:"
1052
1053 #: ../../../src/MenuConfig.cpp:1554
1054 msgid "Requires mods:"
1055 msgstr "Требуются моды:"
1056
1057 #: ../../../src/MenuConfig.cpp:1662 ../../../src/SDLInputState.cpp:750
1058 msgid "(none)"
1059 msgstr "(нет)"
1060
1061 #: ../../../src/MenuConfig.cpp:1679 ../../../src/MenuGameOver.cpp:73
1062 msgid "Save & Exit"
1063 msgstr "Сохранить и выйти"
1064
1065 #: ../../../src/MenuDevConsole.cpp:65
8221066 msgid "Execute"
8231067 msgstr "Выполнить"
8241068
825 #: ../../../src/MenuDevConsole.cpp:101 ../../../src/MenuDevConsole.cpp:151
1069 #: ../../../src/MenuDevConsole.cpp:103 ../../../src/MenuDevConsole.cpp:153
8261070 msgid "Developer Console"
827 msgstr "Консоль Девелопера"
828
829 #: ../../../src/MenuDevConsole.cpp:141
1071 msgstr "Консоль Разработчика"
1072
1073 #: ../../../src/MenuDevConsole.cpp:143
8301074 #, c-format
8311075 msgid "Use '%s' to inspect with the cursor."
832 msgstr ""
833
834 #: ../../../src/MenuDevConsole.cpp:146
1076 msgstr "Используй '%s' чтобы исследовать с помощью курсора."
1077
1078 #: ../../../src/MenuDevConsole.cpp:148
8351079 msgid "Arguments with spaces should be enclosed with double quotes. Example:"
8361080 msgstr ""
8371081 "Аргументы с пробелами должны быть заключены в двойные кавычки. Пример:"
8381082
839 #: ../../../src/MenuDevConsole.cpp:147
1083 #: ../../../src/MenuDevConsole.cpp:149
8401084 msgid "Type 'help' to get a list of commands."
841 msgstr ""
842
843 #: ../../../src/MenuDevConsole.cpp:209 ../../../src/MenuDevConsole.cpp:213
1085 msgstr "Введи 'help' чтобы увидеть список команд."
1086
1087 #: ../../../src/MenuDevConsole.cpp:211 ../../../src/MenuDevConsole.cpp:215
8441088 msgid "px"
845 msgstr ""
846
847 #: ../../../src/MenuDevConsole.cpp:224
1089 msgstr "px"
1090
1091 #: ../../../src/MenuDevConsole.cpp:226
8481092 msgid "Distance"
849 msgstr ""
850
851 #: ../../../src/MenuDevConsole.cpp:239 ../../../src/MenuDevConsole.cpp:286
1093 msgstr "Дистанция"
1094
1095 #: ../../../src/MenuDevConsole.cpp:241 ../../../src/MenuDevConsole.cpp:289
1096 #: ../../../src/MenuDevConsole.cpp:303
8521097 msgid "Entity"
853 msgstr ""
854
855 #: ../../../src/MenuDevConsole.cpp:261 ../../../src/MenuDevConsole.cpp:268
1098 msgstr "Сущность"
1099
1100 #: ../../../src/MenuDevConsole.cpp:263 ../../../src/MenuDevConsole.cpp:270
8561101 msgid "none"
857 msgstr ""
858
859 #: ../../../src/MenuDevConsole.cpp:262 ../../../src/MenuDevConsole.cpp:264
1102 msgstr "отсутствует"
1103
1104 #: ../../../src/MenuDevConsole.cpp:264 ../../../src/MenuDevConsole.cpp:266
8601105 msgid "wall"
861 msgstr ""
862
863 #: ../../../src/MenuDevConsole.cpp:263 ../../../src/MenuDevConsole.cpp:265
1106 msgstr "стена"
1107
1108 #: ../../../src/MenuDevConsole.cpp:265 ../../../src/MenuDevConsole.cpp:267
8641109 msgid "short wall / pit"
865 msgstr ""
866
867 #: ../../../src/MenuDevConsole.cpp:266
1110 msgstr "короткая стена"
1111
1112 #: ../../../src/MenuDevConsole.cpp:268
8681113 msgid "entity"
869 msgstr ""
870
871 #: ../../../src/MenuDevConsole.cpp:267
1114 msgstr "частица"
1115
1116 #: ../../../src/MenuDevConsole.cpp:269
8721117 msgid "entity, ally"
8731118 msgstr ""
8741119
875 #: ../../../src/MenuDevConsole.cpp:274
1120 #: ../../../src/MenuDevConsole.cpp:276
8761121 msgid "Tile"
877 msgstr ""
878
879 #: ../../../src/MenuDevConsole.cpp:360
1122 msgstr "Плитка"
1123
1124 #: ../../../src/MenuDevConsole.cpp:377
8801125 msgid "adds a power to the action bar"
8811126 msgstr "добавляет силу в панель действий"
8821127
883 #: ../../../src/MenuDevConsole.cpp:361
1128 #: ../../../src/MenuDevConsole.cpp:378
8841129 msgid "turns on/off the display of the FPS counter"
885 msgstr ""
886
887 #: ../../../src/MenuDevConsole.cpp:362
1130 msgstr "включает/выключает счетчик FPS"
1131
1132 #: ../../../src/MenuDevConsole.cpp:379
8881133 msgid "turns on/off all of the HUD elements"
8891134 msgstr "переключает отображение элементов интерфейса"
8901135
891 #: ../../../src/MenuDevConsole.cpp:363
1136 #: ../../../src/MenuDevConsole.cpp:380
8921137 msgid "turns on/off the developer hud"
8931138 msgstr "переключает интерфейс разработчика"
8941139
895 #: ../../../src/MenuDevConsole.cpp:364
1140 #: ../../../src/MenuDevConsole.cpp:381
8961141 msgid ""
8971142 "Prints a list of powers that match a search term. No search term will list "
8981143 "all items"
8991144 msgstr ""
900
901 #: ../../../src/MenuDevConsole.cpp:365
1145 "Выводит найденные силы. Если ничего не указать, показывает все доступные "
1146 "силы"
1147
1148 #: ../../../src/MenuDevConsole.cpp:382
9021149 msgid "Prints out all the map filenames located in the \"maps/\" directory."
903 msgstr "Печатает все названия фаилов карт в каталоге «maps»"
904
905 #: ../../../src/MenuDevConsole.cpp:366
1150 msgstr "Печатает все названия файлов в каталоге \"maps/\"."
1151
1152 #: ../../../src/MenuDevConsole.cpp:383
9061153 msgid ""
9071154 "Prints out the active campaign statuses that match a search term. No search "
9081155 "term will list all active statuses"
9091156 msgstr ""
9101157 "Выводит найденные статусы активных кампаний. Если ничего не указать, "
911 "показывает все активные статусы."
912
913 #: ../../../src/MenuDevConsole.cpp:367
1158 "показывает все активные статусы"
1159
1160 #: ../../../src/MenuDevConsole.cpp:384
9141161 msgid ""
9151162 "Prints a list of items that match a search term. No search term will list "
9161163 "all items"
9171164 msgstr ""
9181165 "Выводит список найденных предметов. Если ничего не указать, показывает все "
919 "предметы."
920
921 #: ../../../src/MenuDevConsole.cpp:368
1166 "предметы"
1167
1168 #: ../../../src/MenuDevConsole.cpp:385
9221169 msgid ""
9231170 "parses a series of event components and executes them as a single event"
9241171 msgstr "анализирует набор компонентов событий и выполняет их как одно событие"
9251172
926 #: ../../../src/MenuDevConsole.cpp:369
1173 #: ../../../src/MenuDevConsole.cpp:386
9271174 msgid "clears the command history"
9281175 msgstr "очищает историю команд"
9291176
930 #: ../../../src/MenuDevConsole.cpp:370
1177 #: ../../../src/MenuDevConsole.cpp:387
9311178 msgid "displays this text"
9321179 msgstr "показывает этот текст"
9331180
934 #: ../../../src/MenuDevConsole.cpp:377
1181 #: ../../../src/MenuDevConsole.cpp:394
9351182 msgid "Toggled the developer hud"
9361183 msgstr "Переключён интерфейс разработчика"
9371184
938 #: ../../../src/MenuDevConsole.cpp:381
1185 #: ../../../src/MenuDevConsole.cpp:398
9391186 msgid "Toggled the hud"
9401187 msgstr "Переключён интерфейс"
9411188
942 #: ../../../src/MenuDevConsole.cpp:385
1189 #: ../../../src/MenuDevConsole.cpp:402
9431190 msgid "Toggled the FPS counter"
944 msgstr ""
945
946 #: ../../../src/MenuDevConsole.cpp:534
1191 msgstr "Переключён счетчик FPS"
1192
1193 #: ../../../src/MenuDevConsole.cpp:552
9471194 msgid "ERROR: Incorrect number of arguments"
948 msgstr ""
949
950 #: ../../../src/MenuDevConsole.cpp:536 ../../../src/MenuDevConsole.cpp:564
1195 msgstr "ОШИБКА: Неправильное количество аргументов"
1196
1197 #: ../../../src/MenuDevConsole.cpp:554 ../../../src/MenuDevConsole.cpp:582
9511198 msgid "HINT:"
952 msgstr ""
953
954 #: ../../../src/MenuDevConsole.cpp:536
1199 msgstr "ПОДСКАЗКА:"
1200
1201 #: ../../../src/MenuDevConsole.cpp:554
9551202 msgid "<id>"
9561203 msgstr "<id>"
9571204
958 #: ../../../src/MenuDevConsole.cpp:552
1205 #: ../../../src/MenuDevConsole.cpp:570
9591206 #, c-format
9601207 msgid "ERROR: '%s' is not a valid event key"
9611208 msgstr "ОШИБКА: «%s» — недопустимый ключ события"
9621209
963 #: ../../../src/MenuDevConsole.cpp:562
1210 #: ../../../src/MenuDevConsole.cpp:580
9641211 msgid "ERROR: Too few arguments"
9651212 msgstr "ОШИБКА: недостаточно аргументов"
9661213
967 #: ../../../src/MenuDevConsole.cpp:564
1214 #: ../../../src/MenuDevConsole.cpp:582
9681215 msgid "<key>=<val> <key>=<val> ..."
9691216 msgstr ""
9701217
971 #: ../../../src/MenuDevConsole.cpp:569
1218 #: ../../../src/MenuDevConsole.cpp:587
9721219 msgid "ERROR: Unknown command"
9731220 msgstr "ОШИБКА: неизвестная команда"
9741221
975 #: ../../../src/MenuDevConsole.cpp:571
1222 #: ../../../src/MenuDevConsole.cpp:589
9761223 msgid "HINT: Type help"
9771224 msgstr "ПОДСКАЗКА: наберите help"
9781225
979 #: ../../../src/MenuEnemy.cpp:138
1226 #: ../../../src/MenuEnemy.cpp:162
9801227 #, c-format
9811228 msgid "%s level %d"
9821229 msgstr "%s уровень %d"
9831230
984 #: ../../../src/MenuEnemy.cpp:162
1231 #: ../../../src/MenuEnemy.cpp:186
9851232 msgid "Dead"
9861233 msgstr "Мёртв"
9871234
988 #: ../../../src/MenuEnemy.cpp:164
1235 #: ../../../src/MenuEnemy.cpp:188
9891236 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
1237 msgstr "Уничтожен"
1238
1239 #: ../../../src/MenuGameOver.cpp:69
1240 msgid "Game Over"
1241 msgstr ""
1242
1243 #: ../../../src/MenuInventory.cpp:178
10131244 #, c-format
10141245 msgid "Lost %d%% of %s."
1015 msgstr ""
1016
1017 #: ../../../src/MenuInventory.cpp:195
1246 msgstr "Потеряно %d%% из %s."
1247
1248 #: ../../../src/MenuInventory.cpp:185
10181249 #, c-format
10191250 msgid "Lost %d%% of total XP."
1020 msgstr ""
1021
1022 #: ../../../src/MenuInventory.cpp:200
1251 msgstr "Потеряно %d%% от общего XP."
1252
1253 #: ../../../src/MenuInventory.cpp:190
10231254 #, c-format
10241255 msgid "Lost %d%% of current level XP."
1025 msgstr ""
1026
1027 #: ../../../src/MenuInventory.cpp:226
1256 msgstr "Потеряно %d%% от актуального числа ХР."
1257
1258 #: ../../../src/MenuInventory.cpp:216
10281259 #, c-format
10291260 msgid "Lost %s."
10301261 msgstr "Потеряно %s."
10311262
1032 #: ../../../src/MenuInventory.cpp:274 ../../../src/MenuStash.cpp:146
1263 #: ../../../src/MenuInventory.cpp:258 ../../../src/MenuStash.cpp:276
10331264 #, c-format
10341265 msgid "%d %s"
10351266 msgstr "%d %s"
10361267
1037 #: ../../../src/MenuInventory.cpp:317
1268 #: ../../../src/MenuInventory.cpp:301
10381269 msgid "Pick up item(s):"
10391270 msgstr "Подобраны предметы:"
10401271
1041 #: ../../../src/MenuInventory.cpp:318
1272 #: ../../../src/MenuInventory.cpp:302
10421273 msgid "Use or equip item:"
10431274 msgstr "Использовать или надеть предмет:"
10441275
1045 #: ../../../src/MenuInventory.cpp:319
1276 #: ../../../src/MenuInventory.cpp:303
10461277 #, c-format
10471278 msgid "%s modifiers"
10481279 msgstr "%s модификаторов"
10491280
1050 #: ../../../src/MenuInventory.cpp:320
1281 #: ../../../src/MenuInventory.cpp:304
10511282 msgid "Select a quantity of item:"
10521283 msgstr "Выберите количество предметов:"
10531284
1054 #: ../../../src/MenuInventory.cpp:323
1285 #: ../../../src/MenuInventory.cpp:307
10551286 msgid "Stash item stack:"
10561287 msgstr "Спрятать набор предметов в тайник:"
10571288
1058 #: ../../../src/MenuInventory.cpp:325
1289 #: ../../../src/MenuInventory.cpp:309
10591290 msgid "Sell item stack:"
10601291 msgstr "Продать набор предметов:"
10611292
1062 #: ../../../src/MenuInventory.cpp:592
1293 #: ../../../src/MenuInventory.cpp:576
10631294 msgid "You don't have enough of the required item."
10641295 msgstr "Недостаточно требуемых предметов."
10651296
1066 #: ../../../src/MenuInventory.cpp:599
1297 #: ../../../src/MenuInventory.cpp:588
10671298 msgid "You can't use this item right now."
1068 msgstr ""
1069
1070 #: ../../../src/MenuInventory.cpp:611
1299 msgstr "Вы не можете использовать этот предмет сейчас."
1300
1301 #: ../../../src/MenuInventory.cpp:600
10711302 msgid "This item can only be used from the action bar."
10721303 msgstr "Этот предмет можно использовать только с панели действия."
10731304
1074 #: ../../../src/MenuInventory.cpp:729
1305 #: ../../../src/MenuInventory.cpp:718
10751306 msgid "Inventory is full."
10761307 msgstr "Инвентарь полон."
10771308
1078 #: ../../../src/MenuInventory.cpp:849
1309 #: ../../../src/MenuInventory.cpp:843
10791310 #, c-format
10801311 msgid "Not enough %s."
10811312 msgstr "Недостаточно %s."
10821313
1083 #: ../../../src/MenuInventory.cpp:869 ../../../src/MenuInventory.cpp:876
1314 #: ../../../src/MenuInventory.cpp:863 ../../../src/MenuInventory.cpp:870
10841315 msgid "This item can not be sold."
10851316 msgstr "Этот предмет нельзя продать."
10861317
10921323 msgid "Quests"
10931324 msgstr "Задания"
10941325
1095 #: ../../../src/MenuManager.cpp:286
1326 #: ../../../src/MenuManager.cpp:305
10961327 #, c-format
10971328 msgid "XP: %d/%d"
10981329 msgstr "Опыт: %d/%d"
10991330
1100 #: ../../../src/MenuManager.cpp:827
1331 #: ../../../src/MenuManager.cpp:875
11011332 msgid "This item can not be dropped."
11021333 msgstr "Этот предмет нельзя выбросить."
1334
1335 #: ../../../src/MenuManager.cpp:1501
1336 msgid "Equipped"
1337 msgstr ""
1338
1339 #: ../../../src/MenuMovementType.cpp:87
1340 msgid "Select a Movement Type"
1341 msgstr ""
1342
1343 #: ../../../src/MenuMovementType.cpp:89
1344 msgid "Can be changed later in the Configuration menu."
1345 msgstr ""
1346
1347 #: ../../../src/MenuMovementType.cpp:92 ../../../src/MenuMovementType.cpp:122
1348 msgid "Keyboard"
1349 msgstr "Клавиатура"
1350
1351 #: ../../../src/MenuMovementType.cpp:93 ../../../src/MenuMovementType.cpp:128
1352 msgid "Mouse"
1353 msgstr "Мышь"
1354
1355 #: ../../../src/MenuMovementType.cpp:129
1356 msgid "Button"
1357 msgstr ""
11031358
11041359 #: ../../../src/MenuNumPicker.cpp:59
11051360 msgid "Enter amount:"
11061361 msgstr "Введите количество:"
11071362
1108 #: ../../../src/MenuPowers.cpp:787
1363 #: ../../../src/MenuPowers.cpp:894
11091364 msgid "Passive"
11101365 msgstr "Пасивные"
11111366
1112 #: ../../../src/MenuPowers.cpp:792
1367 #: ../../../src/MenuPowers.cpp:901
11131368 #, c-format
11141369 msgid "Costs %d MP"
11151370 msgstr "Стоит %d Маны"
11161371
1117 #: ../../../src/MenuPowers.cpp:796
1372 #: ../../../src/MenuPowers.cpp:905
11181373 #, c-format
11191374 msgid "Costs %d HP"
11201375 msgstr "Стоит %d Жизни"
11211376
1122 #: ../../../src/MenuPowers.cpp:801
1377 #: ../../../src/MenuPowers.cpp:909
11231378 msgid "Cooldown:"
11241379 msgstr "Восстановление:"
11251380
1126 #: ../../../src/MenuPowers.cpp:866 ../../../src/MenuPowers.cpp:869
1381 #: ../../../src/MenuPowers.cpp:960 ../../../src/MenuPowers.cpp:963
11271382 msgid "Damage per second"
11281383 msgstr "Урона в секунду"
11291384
1130 #: ../../../src/MenuPowers.cpp:872 ../../../src/MenuPowers.cpp:875
1385 #: ../../../src/MenuPowers.cpp:966 ../../../src/MenuPowers.cpp:969
11311386 msgid "HP per second"
11321387 msgstr "Жизни в секунду"
11331388
1134 #: ../../../src/MenuPowers.cpp:878 ../../../src/MenuPowers.cpp:881
1389 #: ../../../src/MenuPowers.cpp:972 ../../../src/MenuPowers.cpp:975
11351390 msgid "MP per second"
11361391 msgstr "Маны в секунду"
11371392
1138 #: ../../../src/MenuPowers.cpp:885
1393 #: ../../../src/MenuPowers.cpp:979
11391394 msgid "Immobilize"
11401395 msgstr "Зафиксировать"
11411396
1142 #: ../../../src/MenuPowers.cpp:893
1397 #: ../../../src/MenuPowers.cpp:987
11431398 msgid "Immunity"
11441399 msgstr "Устойчивость"
11451400
1146 #: ../../../src/MenuPowers.cpp:896
1401 #: ../../../src/MenuPowers.cpp:990
11471402 msgid "Immunity to damage over time"
11481403 msgstr "Устойчивость к урону в течение долгого времени"
11491404
1150 #: ../../../src/MenuPowers.cpp:899
1405 #: ../../../src/MenuPowers.cpp:993
11511406 msgid "Immunity to slow"
11521407 msgstr "Устойчивость к снегу"
11531408
1154 #: ../../../src/MenuPowers.cpp:902
1409 #: ../../../src/MenuPowers.cpp:996
11551410 msgid "Immunity to stun"
11561411 msgstr "Устойчивость к оглушению"
11571412
1158 #: ../../../src/MenuPowers.cpp:905
1413 #: ../../../src/MenuPowers.cpp:999
11591414 msgid "Immunity to HP steal"
11601415 msgstr "Устойчивость к краже жизни"
11611416
1162 #: ../../../src/MenuPowers.cpp:908
1417 #: ../../../src/MenuPowers.cpp:1002
11631418 msgid "Immunity to MP steal"
11641419 msgstr "Устойчивость к краже маны"
11651420
1166 #: ../../../src/MenuPowers.cpp:911
1421 #: ../../../src/MenuPowers.cpp:1005
11671422 msgid "Immunity to knockback"
11681423 msgstr "Устойчивость к сбиванию с ног"
11691424
1170 #: ../../../src/MenuPowers.cpp:914
1425 #: ../../../src/MenuPowers.cpp:1008
11711426 msgid "Immunity to damage reflection"
11721427 msgstr "Устойчивость к отражению урона"
11731428
1174 #: ../../../src/MenuPowers.cpp:917
1429 #: ../../../src/MenuPowers.cpp:1014
11751430 msgid "Stun"
11761431 msgstr "Оглушение"
11771432
1178 #: ../../../src/MenuPowers.cpp:920
1433 #: ../../../src/MenuPowers.cpp:1017
11791434 msgid "Automatic revive on death"
11801435 msgstr "Автоматически возрождаться после смерти"
11811436
1182 #: ../../../src/MenuPowers.cpp:923
1437 #: ../../../src/MenuPowers.cpp:1020
11831438 msgid "Convert"
11841439 msgstr "Преобразовать"
11851440
1186 #: ../../../src/MenuPowers.cpp:926
1441 #: ../../../src/MenuPowers.cpp:1023
11871442 msgid "Fear"
11881443 msgstr "Страх"
11891444
1190 #: ../../../src/MenuPowers.cpp:929
1445 #: ../../../src/MenuPowers.cpp:1026
11911446 msgid "Lifespan"
11921447 msgstr "Продолжительность жизни"
11931448
1194 #: ../../../src/MenuPowers.cpp:953
1449 #: ../../../src/MenuPowers.cpp:1050
11951450 msgid "Magical Shield"
11961451 msgstr "Магический Щит"
11971452
1198 #: ../../../src/MenuPowers.cpp:982
1453 #: ../../../src/MenuPowers.cpp:1079
11991454 msgid "Healing"
12001455 msgstr "Лечение"
12011456
1202 #: ../../../src/MenuPowers.cpp:985
1457 #: ../../../src/MenuPowers.cpp:1082
12031458 msgid "Knockback"
12041459 msgstr "Сбивание с ног"
12051460
1206 #: ../../../src/MenuPowers.cpp:1010
1461 #: ../../../src/MenuPowers.cpp:1106
12071462 #, c-format
12081463 msgid "%d%% chance"
12091464 msgstr "%d%% шанс"
12101465
1211 #: ../../../src/MenuPowers.cpp:1062
1466 #: ../../../src/MenuPowers.cpp:1158
12121467 msgid "Base Accuracy"
12131468 msgstr "Базовая Меткость"
12141469
1215 #: ../../../src/MenuPowers.cpp:1082
1470 #: ../../../src/MenuPowers.cpp:1178
12161471 msgid "Base Critical Chance"
12171472 msgstr "Базовый шанс критического урона"
12181473
1219 #: ../../../src/MenuPowers.cpp:1090
1474 #: ../../../src/MenuPowers.cpp:1186
12201475 msgid "Ignores Absorbtion"
12211476 msgstr "Игнорирует Поглощение"
12221477
1223 #: ../../../src/MenuPowers.cpp:1095
1478 #: ../../../src/MenuPowers.cpp:1191
12241479 msgid "Ignores Avoidance"
12251480 msgstr "Игнорирует Уклонение"
12261481
1227 #: ../../../src/MenuPowers.cpp:1100
1482 #: ../../../src/MenuPowers.cpp:1196
12281483 #, c-format
12291484 msgid "%d%% Chance to crit slowed targets"
12301485 msgstr "%d%% Шанс критического урона по замедленным целям"
12311486
1232 #: ../../../src/MenuPowers.cpp:1105
1487 #: ../../../src/MenuPowers.cpp:1201
12331488 #, c-format
12341489 msgid "Elemental Damage (%s)"
1235 msgstr ""
1236
1237 #: ../../../src/MenuPowers.cpp:1114
1490 msgstr "Элементальный урон (%s)"
1491
1492 #: ../../../src/MenuPowers.cpp:1210
12381493 #, c-format
12391494 msgid "Requires a %s"
12401495 msgstr "Требуется %s"
12411496
1242 #: ../../../src/MenuPowers.cpp:1151 ../../../src/MenuPowers.cpp:1154
1497 #: ../../../src/MenuPowers.cpp:1248 ../../../src/MenuPowers.cpp:1251
12431498 #, c-format
12441499 msgid "Requires Power: %s"
12451500 msgstr "Требуется Сила: %s"
12461501
1247 #: ../../../src/MenuPowers.cpp:1163
1502 #: ../../../src/MenuPowers.cpp:1260
12481503 msgid "Click to Unlock (uses 1 Skill Point)"
12491504 msgstr "Щёлкните, чтобы разблокировать (за 1 очко навыка)"
12501505
1251 #: ../../../src/MenuPowers.cpp:1167 ../../../src/MenuPowers.cpp:1169
1506 #: ../../../src/MenuPowers.cpp:1264 ../../../src/MenuPowers.cpp:1266
12521507 msgid "Requires 1 Skill Point"
12531508 msgstr "Требуется 1 Очко Навыка"
12541509
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
1510 #: ../../../src/MenuPowers.cpp:1466
1511 #, c-format
1512 msgid "Available skill points: %d"
1513 msgstr ""
1514
1515 #: ../../../src/MenuPowers.cpp:1498
12661516 msgid "Next Level:"
12671517 msgstr "Следующий уровень:"
12681518
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
1519 #: ../../../src/MenuStash.cpp:80 ../../../src/MenuStash.cpp:161
1520 msgid "Stash"
1521 msgstr ""
1522
1523 #: ../../../src/MenuStash.cpp:174 ../../../src/MenuStash.cpp:188
1524 msgid "Private"
1525 msgstr ""
1526
1527 #: ../../../src/MenuStash.cpp:175
1528 msgid "Shared"
1529 msgstr ""
1530
1531 #: ../../../src/MenuStash.cpp:340
1532 msgid "This item can not be stored in the stash."
1533 msgstr ""
1534
1535 #: ../../../src/MenuStash.cpp:345
1536 msgid "This item can not be stored in the private stash."
1537 msgstr ""
1538
1539 #: ../../../src/MenuStash.cpp:350
1540 msgid "This item can not be stored in the shared stash."
1541 msgstr ""
1542
1543 #: ../../../src/MenuStash.cpp:360
12781544 msgid "Stash is full."
12791545 msgstr "Тайник заполнен."
12801546
1281 #: ../../../src/MenuTalker.cpp:454
1547 #: ../../../src/MenuStash.cpp:414
1548 #, c-format
1549 msgid "Can not store item in stash: %s"
1550 msgstr ""
1551
1552 #: ../../../src/MenuTalker.cpp:448
1553 #, c-format
1554 msgid "<dialog node %d>"
1555 msgstr ""
1556
1557 #: ../../../src/MenuTalker.cpp:456
12821558 msgid "Trade"
12831559 msgstr "Торговать"
12841560
1285 #: ../../../src/MenuVendor.cpp:58
1561 #: ../../../src/MenuVendor.cpp:60
12861562 msgid "Buyback"
12871563 msgstr "Выкуп"
12881564
1289 #: ../../../src/MenuVendor.cpp:279
1565 #: ../../../src/MenuVendor.cpp:283
12901566 msgid "Vendor"
12911567 msgstr "Торговец"
12921568
1293 #: ../../../src/PowerManager.cpp:1136
1569 #: ../../../src/PowerManager.cpp:1204
12941570 #, c-format
12951571 msgid "+%d Shield"
12961572 msgstr "+%d Щит"
12971573
1298 #: ../../../src/PowerManager.cpp:1392
1574 #: ../../../src/PowerManager.cpp:1461
12991575 msgid "You are already transformed, untransform first."
13001576 msgstr "Вы уже трансформированы, сперва растрансформируйтесь."
13011577
1302 #: ../../../src/PowerManager.cpp:1404
1578 #: ../../../src/PowerManager.cpp:1473
13031579 msgid "Could not untransform at this position."
13041580 msgstr "Здесь нельзя растрансформироваться."
13051581
13061582 #: ../../../src/QuestLog.cpp:234
13071583 msgid "Completed Quests"
1308 msgstr ""
1309
1310 #: ../../../src/SaveLoad.cpp:243 ../../../src/SaveLoad.cpp:244
1584 msgstr "Выполненные Квесты"
1585
1586 #: ../../../src/SaveLoad.cpp:250 ../../../src/SaveLoad.cpp:251
13111587 msgid "Game saved."
13121588 msgstr "Игра сохранена."
13131589
1314 #: ../../../src/SDLInputState.cpp:582
1590 #: ../../../src/SDLInputState.cpp:645
1591 msgid "BkSp"
1592 msgstr ""
1593
1594 #: ../../../src/SDLInputState.cpp:646
1595 msgid "Caps"
1596 msgstr ""
1597
1598 #: ../../../src/SDLInputState.cpp:647
1599 msgid "Del"
1600 msgstr ""
1601
1602 #: ../../../src/SDLInputState.cpp:649 ../../../src/SDLInputState.cpp:679
1603 msgid "End"
1604 msgstr "End"
1605
1606 #: ../../../src/SDLInputState.cpp:650
1607 msgid "Esc"
1608 msgstr ""
1609
1610 #: ../../../src/SDLInputState.cpp:651 ../../../src/SDLInputState.cpp:681
1611 msgid "Home"
1612 msgstr "Home"
1613
1614 #: ../../../src/SDLInputState.cpp:652
1615 msgid "Ins"
1616 msgstr ""
1617
1618 #: ../../../src/SDLInputState.cpp:653
1619 msgid "LAlt"
1620 msgstr ""
1621
1622 #: ../../../src/SDLInputState.cpp:654
1623 msgid "LCtrl"
1624 msgstr ""
1625
1626 #: ../../../src/SDLInputState.cpp:656
1627 msgid "LShft"
1628 msgstr ""
1629
1630 #: ../../../src/SDLInputState.cpp:657
1631 msgid "Num"
1632 msgstr ""
1633
1634 #: ../../../src/SDLInputState.cpp:658
1635 msgid "PgDn"
1636 msgstr ""
1637
1638 #: ../../../src/SDLInputState.cpp:659
1639 msgid "PgUp"
1640 msgstr ""
1641
1642 #: ../../../src/SDLInputState.cpp:660 ../../../src/SDLInputState.cpp:690
1643 msgid "Pause"
1644 msgstr "Pause"
1645
1646 #: ../../../src/SDLInputState.cpp:661
1647 msgid "Print"
1648 msgstr ""
1649
1650 #: ../../../src/SDLInputState.cpp:662
1651 msgid "RAlt"
1652 msgstr ""
1653
1654 #: ../../../src/SDLInputState.cpp:663
1655 msgid "RCtrl"
1656 msgstr ""
1657
1658 #: ../../../src/SDLInputState.cpp:664
1659 msgid "Ret"
1660 msgstr ""
1661
1662 #: ../../../src/SDLInputState.cpp:666
1663 msgid "RShft"
1664 msgstr ""
1665
1666 #: ../../../src/SDLInputState.cpp:667
1667 msgid "SLock"
1668 msgstr ""
1669
1670 #: ../../../src/SDLInputState.cpp:668
1671 msgid "Spc"
1672 msgstr ""
1673
1674 #: ../../../src/SDLInputState.cpp:669 ../../../src/SDLInputState.cpp:699
1675 msgid "Tab"
1676 msgstr "Tab"
1677
1678 #: ../../../src/SDLInputState.cpp:675
13151679 msgid "Backspace"
1316 msgstr ""
1317
1318 #: ../../../src/SDLInputState.cpp:583
1680 msgstr "Backspace"
1681
1682 #: ../../../src/SDLInputState.cpp:676
13191683 msgid "CapsLock"
1320 msgstr ""
1321
1322 #: ../../../src/SDLInputState.cpp:586
1323 msgid "End"
1324 msgstr ""
1325
1326 #: ../../../src/SDLInputState.cpp:587
1684 msgstr "CapsLock"
1685
1686 #: ../../../src/SDLInputState.cpp:680
13271687 msgid "Escape"
1328 msgstr ""
1329
1330 #: ../../../src/SDLInputState.cpp:588
1331 msgid "Home"
1332 msgstr ""
1333
1334 #: ../../../src/SDLInputState.cpp:589
1688 msgstr "Escape"
1689
1690 #: ../../../src/SDLInputState.cpp:682
13351691 msgid "Insert"
1336 msgstr ""
1337
1338 #: ../../../src/SDLInputState.cpp:590
1692 msgstr "Insert"
1693
1694 #: ../../../src/SDLInputState.cpp:683
13391695 msgid "Left Alt"
1340 msgstr ""
1341
1342 #: ../../../src/SDLInputState.cpp:591
1696 msgstr "Left Alt"
1697
1698 #: ../../../src/SDLInputState.cpp:684
13431699 msgid "Left Ctrl"
1344 msgstr ""
1345
1346 #: ../../../src/SDLInputState.cpp:593
1700 msgstr "Left Ctrl"
1701
1702 #: ../../../src/SDLInputState.cpp:686
13471703 msgid "Left Shift"
1348 msgstr ""
1349
1350 #: ../../../src/SDLInputState.cpp:594
1704 msgstr "Left Shift"
1705
1706 #: ../../../src/SDLInputState.cpp:687
13511707 msgid "NumLock"
1352 msgstr ""
1353
1354 #: ../../../src/SDLInputState.cpp:595
1708 msgstr "NumLock"
1709
1710 #: ../../../src/SDLInputState.cpp:688
13551711 msgid "PageDown"
1356 msgstr ""
1357
1358 #: ../../../src/SDLInputState.cpp:596
1712 msgstr "PageDown"
1713
1714 #: ../../../src/SDLInputState.cpp:689
13591715 msgid "PageUp"
1360 msgstr ""
1361
1362 #: ../../../src/SDLInputState.cpp:597
1363 msgid "Pause"
1364 msgstr ""
1365
1366 #: ../../../src/SDLInputState.cpp:598
1716 msgstr "PageUp"
1717
1718 #: ../../../src/SDLInputState.cpp:691
13671719 msgid "PrintScreen"
1368 msgstr ""
1369
1370 #: ../../../src/SDLInputState.cpp:599
1720 msgstr "PrintScreen"
1721
1722 #: ../../../src/SDLInputState.cpp:692
13711723 msgid "Right Alt"
1372 msgstr ""
1373
1374 #: ../../../src/SDLInputState.cpp:600
1724 msgstr "Right Alt"
1725
1726 #: ../../../src/SDLInputState.cpp:693
13751727 msgid "Right Ctrl"
1376 msgstr ""
1377
1378 #: ../../../src/SDLInputState.cpp:601
1728 msgstr "Right Ctrl"
1729
1730 #: ../../../src/SDLInputState.cpp:694
13791731 msgid "Return"
1380 msgstr ""
1381
1382 #: ../../../src/SDLInputState.cpp:603
1732 msgstr "Return"
1733
1734 #: ../../../src/SDLInputState.cpp:696
13831735 msgid "Right Shift"
1384 msgstr ""
1385
1386 #: ../../../src/SDLInputState.cpp:604
1736 msgstr "Right Shift"
1737
1738 #: ../../../src/SDLInputState.cpp:697
13871739 msgid "ScrollLock"
1388 msgstr ""
1389
1390 #: ../../../src/SDLInputState.cpp:605
1740 msgstr "ScrollLock"
1741
1742 #: ../../../src/SDLInputState.cpp:698
13911743 msgid "Space"
1392 msgstr ""
1393
1394 #: ../../../src/SDLInputState.cpp:606
1395 msgid "Tab"
1396 msgstr ""
1397
1398 #: ../../../src/SDLInputState.cpp:620
1744 msgstr "Пробел"
1745
1746 #: ../../../src/SDLInputState.cpp:712
1747 #, c-format
1748 msgid "M%d"
1749 msgstr ""
1750
1751 #: ../../../src/SDLInputState.cpp:718
13991752 #, c-format
14001753 msgid "Mouse %d"
14011754 msgstr "Мышь %d"
14021755
1403 #: ../../../src/SDLInputState.cpp:628
1756 #: ../../../src/SDLInputState.cpp:728
1757 #, c-format
1758 msgid "JX%d-"
1759 msgstr ""
1760
1761 #: ../../../src/SDLInputState.cpp:730
14041762 #, c-format
14051763 msgid "Axis %d -"
14061764 msgstr "Ось %d -"
14071765
1408 #: ../../../src/SDLInputState.cpp:630
1766 #: ../../../src/SDLInputState.cpp:734
1767 #, c-format
1768 msgid "JX%d+"
1769 msgstr ""
1770
1771 #: ../../../src/SDLInputState.cpp:736
14091772 #, c-format
14101773 msgid "Axis %d +"
14111774 msgstr "Ось %d +"
14121775
1413 #: ../../../src/SDLInputState.cpp:633
1776 #: ../../../src/SDLInputState.cpp:741
1777 #, c-format
1778 msgid "JB%d"
1779 msgstr ""
1780
1781 #: ../../../src/SDLInputState.cpp:743
14141782 #, c-format
14151783 msgid "Button %d"
14161784 msgstr "Кнопка %d"
14171785
1418 #: ../../../src/SDLInputState.cpp:637
1419 msgid "(none)"
1420 msgstr "(нет)"
1421
1422 #: ../../../src/SDLInputState.cpp:677
1786 #: ../../../src/SDLInputState.cpp:789
14231787 msgid "Touch control D-Pad"
1424 msgstr ""
1425
1426 #: ../../../src/SDLInputState.cpp:701
1788 msgstr "Сенсорное управление D-Pad"
1789
1790 #: ../../../src/SDLInputState.cpp:812
14271791 msgid "Touch control buttons"
1428 msgstr ""
1429
1430 #: ../../../src/SDLInputState.cpp:716
1792 msgstr "Сенсорные клавиши"
1793
1794 #: ../../../src/SDLInputState.cpp:826
14311795 msgid "Tap"
14321796 msgstr "Коснитесь"
14331797
1434 #: ../../../src/SDLInputState.cpp:760 ../../../src/SDLInputState.cpp:764
1435 #: ../../../src/SDLInputState.cpp:768
1798 #: ../../../src/SDLInputState.cpp:878 ../../../src/SDLInputState.cpp:880
1799 #, c-format
1800 msgid "Can not bind: %s"
1801 msgstr ""
1802
1803 #: ../../../src/SDLInputState.cpp:892 ../../../src/SDLInputState.cpp:896
1804 #: ../../../src/SDLInputState.cpp:900
14361805 #, c-format
14371806 msgid "'%s' is no longer bound to:"
1438 msgstr ""
1807 msgstr "'%s' больше не привязана/о к:"
14391808
14401809 #: ../../../src/Stats.cpp:38
14411810 msgid "Max HP"
14431812
14441813 #: ../../../src/Stats.cpp:39
14451814 msgid "Total amount of HP."
1446 msgstr ""
1815 msgstr "Общее количество НР."
14471816
14481817 #: ../../../src/Stats.cpp:43
14491818 msgid "HP Regen"
14591828
14601829 #: ../../../src/Stats.cpp:49
14611830 msgid "Total amount of MP."
1462 msgstr ""
1831 msgstr "Общее количество МР."
14631832
14641833 #: ../../../src/Stats.cpp:53
14651834 msgid "MP Regen"
14781847 "Accuracy rating. The enemy's Avoidance rating is subtracted from this value "
14791848 "to calculate your likeliness to land a direct hit."
14801849 msgstr ""
1850 "Шанс попадания. Шанс врага увернуться вычитается из этого значения, чтобы "
1851 "определить вероятность попадания."
14811852
14821853 #: ../../../src/Stats.cpp:63
14831854 msgid "Avoidance"
14881859 "Avoidance rating. This value is subtracted from the enemy's Accuracy rating "
14891860 "to calculate their likeliness to land a direct hit."
14901861 msgstr ""
1862 "Шанс увернуться. Это значение вычитается из шанса попадания врага, чтобы "
1863 "определить вероятность попадания врага."
14911864
14921865 #: ../../../src/Stats.cpp:68
14931866 msgid "Absorb Min"
14951868
14961869 #: ../../../src/Stats.cpp:69 ../../../src/Stats.cpp:74
14971870 msgid "Reduces the amount of damage taken."
1498 msgstr ""
1871 msgstr "Уменьшает получаемый урон."
14991872
15001873 #: ../../../src/Stats.cpp:73
15011874 msgid "Absorb Max"
15071880
15081881 #: ../../../src/Stats.cpp:79
15091882 msgid "Chance for an attack to do extra damage."
1510 msgstr ""
1883 msgstr "Шанс дополнительного урона при атаке."
15111884
15121885 #: ../../../src/Stats.cpp:83
15131886 msgid "Bonus XP"
15691942
15701943 #: ../../../src/Stats.cpp:118
15711944 msgid "HP Steal"
1572 msgstr ""
1945 msgstr "Кража ХР"
15731946
15741947 #: ../../../src/Stats.cpp:119
15751948 msgid "Percentage of HP stolen per hit."
15771950
15781951 #: ../../../src/Stats.cpp:123
15791952 msgid "MP Steal"
1580 msgstr ""
1953 msgstr "Кража МР"
15811954
15821955 #: ../../../src/Stats.cpp:124
15831956 msgid "Percentage of MP stolen per hit."
15911964 msgid "Base MP"
15921965 msgstr "Базовая Мана"
15931966
1594 #: ../../../src/Utils.cpp:346
1967 #: ../../../src/Utils.cpp:365
15951968 msgid "k"
15961969 msgstr "к"
15971970
1598 #: ../../../src/Utils.cpp:580
1971 #: ../../../src/Utils.cpp:635
15991972 #, c-format
16001973 msgid "%s second"
16011974 msgstr "%s секунда"
16021975
1603 #: ../../../src/Utils.cpp:583
1976 #: ../../../src/Utils.cpp:638
16041977 #, c-format
16051978 msgid "%s seconds"
16061979 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-07-02 13:26-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:1220
133 #: ../../../src/StatBlock.cpp:926 ../../../src/StatBlock.cpp:932
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:937
139 #: ../../../src/StatBlock.cpp:943
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:704
181 msgid "Entering game world..."
182 msgstr "Vstupuje sa do sveta hry..."
183
184 #: ../../../src/GameStateLoad.cpp:707
185 msgid "Loading saved game..."
186 msgstr "Načítava sa uložená hra..."
187
188 #: ../../../src/GameStateLoad.cpp:740
189 msgid "Invalid save"
190 msgstr "Neplatná uložená pozícia"
191
192 #: ../../../src/GameStateLoad.cpp:764 ../../../src/ItemManager.cpp:745
193 #: ../../../src/MenuPowers.cpp:882 ../../../src/MenuPowers.cpp:1241
194 #: ../../../src/MenuPowers.cpp:1653
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:254
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:670
254 #: ../../../src/SDLInputState.cpp:700
255 msgid "Up"
256 msgstr "Nahor"
257
258 #: ../../../src/InputState.cpp:419 ../../../src/MenuMovementType.cpp:125
259 #: ../../../src/MenuMovementType.cpp:134 ../../../src/SDLInputState.cpp:648
260 #: ../../../src/SDLInputState.cpp:678
261 msgid "Down"
262 msgstr "Nadol"
263
264 #: ../../../src/InputState.cpp:420 ../../../src/MenuMovementType.cpp:124
265 #: ../../../src/MenuMovementType.cpp:133 ../../../src/SDLInputState.cpp:655
266 #: ../../../src/SDLInputState.cpp:685
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:665
272 #: ../../../src/SDLInputState.cpp:695
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:159
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:677
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:981
413 #, c-format
414 msgid "%d%% Speed"
415 msgstr ""
416
417 #: ../../../src/ItemManager.cpp:650 ../../../src/MenuPowers.cpp:984
418 #, c-format
419 msgid "%d%% Attack Speed"
420 msgstr ""
421
422 #: ../../../src/ItemManager.cpp:672 ../../../src/MenuCharacter.cpp:352
423 #: ../../../src/MenuPowers.cpp:953
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:1228
453 #: ../../../src/MenuPowers.cpp:1231
454 #, c-format
455 msgid "Requires Level %d"
456 msgstr "Vyžaduje úroveň %d"
457
458 #: ../../../src/ItemManager.cpp:836 ../../../src/MenuPowers.cpp:1220
459 #: ../../../src/MenuPowers.cpp:1222
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:898
490 msgid "Set:"
491 msgstr "Súprava:"
492
493 #: ../../../src/ItemManager.cpp:905
494 #, c-format
495 msgid "%d items:"
496 msgstr ""
497
498 #: ../../../src/ItemManager.cpp:920
499 #, c-format
500 msgid "Press [%s] to read"
501 msgstr "Prečítate stlačením [%s]"
502
503 #: ../../../src/ItemManager.cpp:923
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:1256
580 msgid "Clear"
581 msgstr "Vymazať"
582
583 #: ../../../src/MenuConfig.cpp:122 ../../../src/MenuConfig.cpp:1254
584 msgid "Assign:"
585 msgstr "Priradiť:"
586
587 #: ../../../src/MenuConfig.cpp:123 ../../../src/MenuConfig.cpp:253
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:252 ../../../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:256 ../../../src/MenuGameOver.cpp:72
600 msgid "Continue"
601 msgstr "Pokračovať"
602
603 #: ../../../src/MenuConfig.cpp:258
604 msgid "Save Game"
605 msgstr ""
606
607 #: ../../../src/MenuConfig.cpp:301 ../../../src/MenuConfig.cpp:352
608 msgid "Default"
609 msgstr ""
610
611 #: ../../../src/MenuConfig.cpp:301
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:302
621 msgid "Show all"
622 msgstr ""
623
624 #: ../../../src/MenuConfig.cpp:302
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:303 ../../../src/MenuConfig.cpp:308
632 msgid "Hidden"
633 msgstr ""
634
635 #: ../../../src/MenuConfig.cpp:303
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:306
644 msgid "Visible"
645 msgstr "Viditeľná"
646
647 #: ../../../src/MenuConfig.cpp:307
648 msgid "Visible (2x zoom)"
649 msgstr "Viditeľná (2x priblíženie)"
650
651 #: ../../../src/MenuConfig.cpp:311
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:312
660 msgid "- Display a message"
661 msgstr "- Zobrazenie správy"
662
663 #: ../../../src/MenuConfig.cpp:313
664 msgid "- Play a sound"
665 msgstr "- Prehratie zvuku"
666
667 #: ../../../src/MenuConfig.cpp:314
668 msgid "- Change the cursor"
669 msgstr "- Zmena kurzora"
670
671 #: ../../../src/MenuConfig.cpp:316
672 msgid "Disabled"
673 msgstr "Zakázané"
674
675 #: ../../../src/MenuConfig.cpp:317
676 msgid "All"
677 msgstr "Všetky"
678
679 #: ../../../src/MenuConfig.cpp:318
680 msgid "Message & Cursor"
681 msgstr "Správa a kurzor"
682
683 #: ../../../src/MenuConfig.cpp:319
684 msgid "Message & Sound"
685 msgstr "Správa a zvuk"
686
687 #: ../../../src/MenuConfig.cpp:320
688 msgid "Sound & Cursor"
689 msgstr "Zvuk a kurzor"
690
691 #: ../../../src/MenuConfig.cpp:321
692 msgid "Message"
693 msgstr "Správa"
694
695 #: ../../../src/MenuConfig.cpp:322
696 msgid "Cursor"
697 msgstr "Kurzor"
698
699 #: ../../../src/MenuConfig.cpp:323
700 msgid "Sound"
701 msgstr "Zvuk"
702
703 #: ../../../src/MenuConfig.cpp:329
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:347
712 msgid "The maximum frame rate that the game will be allowed to run at."
713 msgstr ""
714
715 #: ../../../src/MenuConfig.cpp:351
716 msgid ""
717 "The render size refers to the height in pixels of the surface used to draw "
718 "the game. Mods define the allowed render sizes, but this option allows "
719 "overriding the maximum size."
720 msgstr ""
721
722 #: ../../../src/MenuConfig.cpp:374 ../../../src/MenuConfig.cpp:1679
723 #: ../../../src/MenuGameOver.cpp:116
724 msgid "Exit"
725 msgstr "Ukončiť"
726
727 #: ../../../src/MenuConfig.cpp:375
728 msgid "Video"
729 msgstr "Obraz"
730
731 #: ../../../src/MenuConfig.cpp:376
152732 msgid "Audio"
153 msgstr ""
154
155 #: ../../../src/GameStateConfigBase.cpp:161
156 #: ../../../src/GameStateConfigDesktop.cpp:131
733 msgstr "Zvuk"
734
735 #: ../../../src/MenuConfig.cpp:377
157736 msgid "Interface"
158 msgstr ""
159
160 #: ../../../src/GameStateConfigBase.cpp:162
161 #: ../../../src/GameStateConfigDesktop.cpp:134
737 msgstr "Rozhranie"
738
739 #: ../../../src/MenuConfig.cpp:378
740 msgid "Input"
741 msgstr "Vstup"
742
743 #: ../../../src/MenuConfig.cpp:379
744 msgid "Keybindings"
745 msgstr "Priradenie klávesov"
746
747 #: ../../../src/MenuConfig.cpp:380
162748 msgid "Mods"
163 msgstr ""
164
165 #: ../../../src/GameStateConfigBase.cpp:249 ../../../src/MenuExit.cpp:72
749 msgstr "Modifikácie"
750
751 #: ../../../src/MenuConfig.cpp:392
752 msgid "Paused"
753 msgstr "Hra pozastavená"
754
755 #: ../../../src/MenuConfig.cpp:395
756 msgid "Time Played"
757 msgstr "Odohraný čas"
758
759 #: ../../../src/MenuConfig.cpp:401
760 msgid "Renderer"
761 msgstr "Vykresľovanie"
762
763 #: ../../../src/MenuConfig.cpp:402
764 msgid "Full Screen Mode"
765 msgstr "Režim celej obrazovky"
766
767 #: ../../../src/MenuConfig.cpp:403
768 msgid "Hardware surfaces"
769 msgstr "Hardvérové povrchy"
770
771 #: ../../../src/MenuConfig.cpp:404
772 msgid "V-Sync"
773 msgstr "Vertikálna synchronizácia"
774
775 #: ../../../src/MenuConfig.cpp:405
776 msgid "Texture Filtering"
777 msgstr "Filtrovanie textúr"
778
779 #: ../../../src/MenuConfig.cpp:406
780 msgid "DPI scaling"
781 msgstr ""
782
783 #: ../../../src/MenuConfig.cpp:407
784 msgid "Parallax Layers"
785 msgstr "Paralaxné vrstvy"
786
787 #: ../../../src/MenuConfig.cpp:408
788 msgid "Allow changing gamma"
789 msgstr "Povoliť zmenu hodnoty gama"
790
791 #: ../../../src/MenuConfig.cpp:409
792 msgid "Gamma"
793 msgstr "Gama"
794
795 #: ../../../src/MenuConfig.cpp:410
796 msgid "Maximum Render Size"
797 msgstr ""
798
799 #: ../../../src/MenuConfig.cpp:411
800 msgid "Frame Limit"
801 msgstr ""
802
803 #: ../../../src/MenuConfig.cpp:413
804 msgid "Sound Volume"
805 msgstr "Hlasitosť zvukov"
806
807 #: ../../../src/MenuConfig.cpp:414
166808 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
809 msgstr "Hlasitosť hudby"
810
811 #: ../../../src/MenuConfig.cpp:416
174812 msgid "Language"
175 msgstr ""
176
177 #: ../../../src/GameStateConfigBase.cpp:266
813 msgstr "Jazyk"
814
815 #: ../../../src/MenuConfig.cpp:417
178816 msgid "Show FPS"
179 msgstr ""
180
181 #: ../../../src/GameStateConfigBase.cpp:270
817 msgstr "Zobrazovať FPS"
818
819 #: ../../../src/MenuConfig.cpp:418
820 msgid "Hardware mouse cursor"
821 msgstr "Hardvérový kurzor myši"
822
823 #: ../../../src/MenuConfig.cpp:419
182824 msgid "Colorblind Mode"
183 msgstr ""
184
185 #: ../../../src/GameStateConfigBase.cpp:274
186 msgid "Hardware mouse cursor"
187 msgstr ""
188
189 #: ../../../src/GameStateConfigBase.cpp:278
825 msgstr "Režim pre farboslepých"
826
827 #: ../../../src/MenuConfig.cpp:420
190828 msgid "Developer Mode"
191 msgstr ""
192
193 #: ../../../src/GameStateConfigBase.cpp:282
829 msgstr "Vývojársky režim"
830
831 #: ../../../src/MenuConfig.cpp:421
194832 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
833 msgstr "Titulky"
834
835 #: ../../../src/MenuConfig.cpp:422
836 msgid "Loot tooltip visibility"
837 msgstr ""
838
839 #: ../../../src/MenuConfig.cpp:423
840 msgid "Mini-map mode"
841 msgstr "Režim minimapy"
842
843 #: ../../../src/MenuConfig.cpp:424
844 msgid "Always show stat bar labels"
845 msgstr "Vždy zobrazovať textové označenie indikátorov charakteristík"
846
847 #: ../../../src/MenuConfig.cpp:425
848 msgid "Allow stat bar auto-hiding"
849 msgstr "Povoliť automatické skrývanie indikátorov charakteristík"
850
851 #: ../../../src/MenuConfig.cpp:426
852 msgid "Show combat text"
853 msgstr "Zobrazovať text o boji"
854
855 #: ../../../src/MenuConfig.cpp:427
856 msgid "Automatically equip items"
857 msgstr "Automaticky sa vystrojiť predmetmi"
858
859 #: ../../../src/MenuConfig.cpp:428
860 msgid "Show hidden entity markers"
861 msgstr ""
862
863 #: ../../../src/MenuConfig.cpp:429
864 msgid "Low health notification"
865 msgstr "Oznámenie o nízkom zdraví"
866
867 #: ../../../src/MenuConfig.cpp:430
868 msgid "Low health threshold"
869 msgstr "Prah nízkeho zdravia"
870
871 #: ../../../src/MenuConfig.cpp:431
872 msgid "Show item comparison tooltips"
873 msgstr ""
874
875 #: ../../../src/MenuConfig.cpp:434 ../../../src/MenuMovementType.cpp:94
876 #: ../../../src/MenuMovementType.cpp:131
877 msgid "Joystick"
878 msgstr "Joystick"
879
880 #: ../../../src/MenuConfig.cpp:435
881 msgid "Move hero using mouse"
882 msgstr "Ovládať pohyb hrdinu pomocou myši"
883
884 #: ../../../src/MenuConfig.cpp:436
885 msgid "Mouse aim"
886 msgstr "Mierenie myšou"
887
888 #: ../../../src/MenuConfig.cpp:437
889 msgid "Do not use mouse"
890 msgstr "Nepoužívať myš"
891
892 #: ../../../src/MenuConfig.cpp:438
893 msgid "Swap mouse movement button"
894 msgstr ""
895
896 #: ../../../src/MenuConfig.cpp:439
897 msgid "Attack with mouse movement"
898 msgstr ""
899
900 #: ../../../src/MenuConfig.cpp:440
901 msgid "Joystick Deadzone"
902 msgstr "Mŕtva zóna joysticku"
903
904 #: ../../../src/MenuConfig.cpp:441
905 msgid "Touch Controls"
906 msgstr ""
907
908 #: ../../../src/MenuConfig.cpp:442
909 msgid "Touch Gamepad Scaling"
910 msgstr ""
911
912 #: ../../../src/MenuConfig.cpp:452
913 #, c-format
914 msgid "Primary binding: %s"
915 msgstr "Primárne priradenie: %s"
916
917 #: ../../../src/MenuConfig.cpp:453
918 #, c-format
919 msgid "Alternate binding: %s"
920 msgstr "Alternatívne priradenie: %s"
921
922 #: ../../../src/MenuConfig.cpp:454
923 #, c-format
924 msgid "Joystick binding: %s"
925 msgstr "Priradenie pre joystick: %s"
926
927 #: ../../../src/MenuConfig.cpp:556
252928 msgid ""
253929 "Will try to store surfaces in video memory versus system memory. The effect "
254930 "this has on performance depends on the renderer."
255931 msgstr ""
256
257 #: ../../../src/GameStateConfigDesktop.cpp:189
932 "Pokúsi sa ukladať povrchy do grafickej pamäte na rozdiel od operačnej "
933 "pamäte. Vplyv na výkon závisí od typu vykresľovania."
934
935 #: ../../../src/MenuConfig.cpp:557
258936 msgid ""
259937 "Prevents screen tearing. Disable if you experience \"stuttering\" in "
260938 "windowed mode or input lag."
261939 msgstr ""
262
263 #: ../../../src/GameStateConfigDesktop.cpp:190
940 "Zabraňuje trhaniu obrazovky. V prípade „koktania“ v režime okna alebo "
941 "oneskorenia vstupu toto nastavenie zakážte."
942
943 #: ../../../src/MenuConfig.cpp:558
264944 msgid ""
265945 "When enabled, this uses the screen DPI in addition to the window dimensions "
266946 "to scale the rendering resolution. Otherwise, only the window dimensions are"
267947 " used."
268948 msgstr ""
269949
270 #: ../../../src/GameStateConfigDesktop.cpp:191
950 #: ../../../src/MenuConfig.cpp:559
271951 msgid ""
272952 "This enables parallax (non-tile) layers. Disabling this setting can improve "
273953 "performance in some cases."
274954 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
955 "Povolí paralaxné (nedlaždicové) vrstvy. Zakázaním tohto nastavenia môžete v "
956 "niektorých prípadoch zlepšiť výkon."
957
958 #: ../../../src/MenuConfig.cpp:560
959 msgid ""
960 "Enables the below setting that controls the screen gamma level. The behavior"
961 " of the gamma setting can vary between platforms."
962 msgstr ""
963 "Povolí nižšie uvedené nastavenie, ktoré ovláda hodnotu gama obrazovky. "
964 "Správanie nastavenia gama sa môže líšiť v závislosti od platformy."
965
966 #: ../../../src/MenuConfig.cpp:561
967 msgid ""
968 "Provides additional text for information that is primarily conveyed through "
969 "color."
970 msgstr ""
971 "Poskytne doplnkové texty pre informácie, ktoré sú vyjadrené hlavne farbami."
972
973 #: ../../../src/MenuConfig.cpp:562
974 msgid ""
975 "Some mods will automatically hide the stat bars when they are inactive. "
976 "Disabling this option will keep them displayed at all times."
977 msgstr ""
978 "Niektoré modifikácie automaticky skrývajú indikátory charakteristík, keď "
979 "neprejavujú aktivitu. Zakázaním tejto možnosti sa budú zobrazovať vždy."
980
981 #: ../../../src/MenuConfig.cpp:563
982 msgid ""
983 "When enabled, empty equipment slots will be filled with applicable items "
984 "when they are obtained."
985 msgstr ""
986 "Ak je toto nastavenie povolené, získanie vhodných predmetov automaticky "
987 "obsadí prázdne pozície výstroje."
988
989 #: ../../../src/MenuConfig.cpp:564
990 msgid ""
991 "Shows a marker above enemies, allies, and the player when they are obscured "
992 "by tall objects."
993 msgstr ""
994
995 #: ../../../src/MenuConfig.cpp:565
996 msgid ""
997 "When enabled, tooltips for equipped items of the same type are shown next to"
998 " standard item tooltips."
999 msgstr ""
1000
1001 #: ../../../src/MenuConfig.cpp:566
1002 msgid ""
1003 "This allows the game to be controlled entirely with the keyboard (or "
1004 "joystick)."
1005 msgstr "Umožní ovládať hru výlučne pomocou klávesnice (alebo joysticku)."
1006
1007 #: ../../../src/MenuConfig.cpp:567
1008 msgid ""
1009 "When 'Move hero using mouse' is enabled, this setting controls if 'Main1' or"
1010 " 'Main2' is used to move the hero. If enabled, 'Main2' will move the hero "
1011 "instead of 'Main1'."
1012 msgstr ""
1013
1014 #: ../../../src/MenuConfig.cpp:568
1015 msgid ""
1016 "When 'Move hero using mouse' is enabled, this setting controls if the Power "
1017 "assigned to the movement button can be used by targeting an enemy. If this "
1018 "setting is disabled, it is required to use 'Shift' to access the Power "
1019 "assigned to the movement button."
1020 msgstr ""
1021
1022 #: ../../../src/MenuConfig.cpp:569
1023 msgid ""
1024 "The player's attacks will be aimed in the direction of the mouse cursor when"
1025 " this is enabled."
1026 msgstr ""
1027 "Ak je toto nastavenie povolené, útoky hráča budú mierené smerom ku kurzoru "
1028 "myši."
1029
1030 #: ../../../src/MenuConfig.cpp:570
1031 msgid ""
1032 "When enabled, a virtual gamepad will be added in-game. Other interactions, "
1033 "such as drag-and-drop behavior, are also altered to better suit touch input."
1034 msgstr ""
1035
1036 #: ../../../src/MenuConfig.cpp:621
1037 msgid "Active Mods"
1038 msgstr "Aktívne modifikácie"
1039
1040 #: ../../../src/MenuConfig.cpp:630
1041 msgid "Available Mods"
1042 msgstr "Dostupné modifikácie"
1043
1044 #: ../../../src/MenuConfig.cpp:649
1045 msgid "<< Disable"
1046 msgstr "<< Zakázať"
1047
1048 #: ../../../src/MenuConfig.cpp:655
1049 msgid "Enable >>"
1050 msgstr "Povoliť >>"
1051
1052 #: ../../../src/MenuConfig.cpp:1536
1053 msgid "Version:"
1054 msgstr "Verzia:"
1055
1056 #: ../../../src/MenuConfig.cpp:1541
1057 msgid "Game:"
1058 msgstr "Hra:"
1059
1060 #: ../../../src/MenuConfig.cpp:1546
1061 msgid "Engine version:"
1062 msgstr "Verzia jadra:"
1063
1064 #: ../../../src/MenuConfig.cpp:1554
1065 msgid "Requires mods:"
1066 msgstr "Požadované modifikácie:"
1067
1068 #: ../../../src/MenuConfig.cpp:1662 ../../../src/SDLInputState.cpp:750
1069 msgid "(none)"
1070 msgstr ""
1071
1072 #: ../../../src/MenuConfig.cpp:1679 ../../../src/MenuGameOver.cpp:73
1073 msgid "Save & Exit"
1074 msgstr "Uložiť a ukončiť"
1075
1076 #: ../../../src/MenuDevConsole.cpp:65
8191077 msgid "Execute"
820 msgstr ""
821
822 #: ../../../src/MenuDevConsole.cpp:101 ../../../src/MenuDevConsole.cpp:151
1078 msgstr "Vykonať"
1079
1080 #: ../../../src/MenuDevConsole.cpp:103 ../../../src/MenuDevConsole.cpp:153
8231081 msgid "Developer Console"
824 msgstr ""
825
826 #: ../../../src/MenuDevConsole.cpp:141
1082 msgstr "Vývojárska konzola"
1083
1084 #: ../../../src/MenuDevConsole.cpp:143
8271085 #, c-format
8281086 msgid "Use '%s' to inspect with the cursor."
829 msgstr ""
830
831 #: ../../../src/MenuDevConsole.cpp:146
1087 msgstr "‚%s‘ preskúma miesto, na ktorom je kurzor."
1088
1089 #: ../../../src/MenuDevConsole.cpp:148
8321090 msgid "Arguments with spaces should be enclosed with double quotes. Example:"
8331091 msgstr ""
834
835 #: ../../../src/MenuDevConsole.cpp:147
1092 "Argumenty obsahujúce medzery by mali byť uzavreté v dvojitých úvodzovkách. "
1093 "Napríklad:"
1094
1095 #: ../../../src/MenuDevConsole.cpp:149
8361096 msgid "Type 'help' to get a list of commands."
837 msgstr ""
838
839 #: ../../../src/MenuDevConsole.cpp:209 ../../../src/MenuDevConsole.cpp:213
1097 msgstr "Ak chetete získať zoznam príkazov, napíšte ‚help‘."
1098
1099 #: ../../../src/MenuDevConsole.cpp:211 ../../../src/MenuDevConsole.cpp:215
8401100 msgid "px"
841 msgstr ""
842
843 #: ../../../src/MenuDevConsole.cpp:224
1101 msgstr "px"
1102
1103 #: ../../../src/MenuDevConsole.cpp:226
8441104 msgid "Distance"
845 msgstr ""
846
847 #: ../../../src/MenuDevConsole.cpp:239 ../../../src/MenuDevConsole.cpp:286
1105 msgstr "Vzdialenosť"
1106
1107 #: ../../../src/MenuDevConsole.cpp:241 ../../../src/MenuDevConsole.cpp:289
1108 #: ../../../src/MenuDevConsole.cpp:303
8481109 msgid "Entity"
849 msgstr ""
850
851 #: ../../../src/MenuDevConsole.cpp:261 ../../../src/MenuDevConsole.cpp:268
1110 msgstr "Entita"
1111
1112 #: ../../../src/MenuDevConsole.cpp:263 ../../../src/MenuDevConsole.cpp:270
8521113 msgid "none"
853 msgstr ""
854
855 #: ../../../src/MenuDevConsole.cpp:262 ../../../src/MenuDevConsole.cpp:264
1114 msgstr "žiadna"
1115
1116 #: ../../../src/MenuDevConsole.cpp:264 ../../../src/MenuDevConsole.cpp:266
8561117 msgid "wall"
857 msgstr ""
858
859 #: ../../../src/MenuDevConsole.cpp:263 ../../../src/MenuDevConsole.cpp:265
1118 msgstr "stena"
1119
1120 #: ../../../src/MenuDevConsole.cpp:265 ../../../src/MenuDevConsole.cpp:267
8601121 msgid "short wall / pit"
861 msgstr ""
862
863 #: ../../../src/MenuDevConsole.cpp:266
1122 msgstr "nízka stena / priepasť"
1123
1124 #: ../../../src/MenuDevConsole.cpp:268
8641125 msgid "entity"
865 msgstr ""
866
867 #: ../../../src/MenuDevConsole.cpp:267
1126 msgstr "entita"
1127
1128 #: ../../../src/MenuDevConsole.cpp:269
8681129 msgid "entity, ally"
869 msgstr ""
870
871 #: ../../../src/MenuDevConsole.cpp:274
1130 msgstr "entita, spojenecká"
1131
1132 #: ../../../src/MenuDevConsole.cpp:276
8721133 msgid "Tile"
873 msgstr ""
874
875 #: ../../../src/MenuDevConsole.cpp:360
1134 msgstr "Dlaždica"
1135
1136 #: ../../../src/MenuDevConsole.cpp:377
8761137 msgid "adds a power to the action bar"
877 msgstr ""
878
879 #: ../../../src/MenuDevConsole.cpp:361
1138 msgstr "pridá silu do panelu akcií"
1139
1140 #: ../../../src/MenuDevConsole.cpp:378
8801141 msgid "turns on/off the display of the FPS counter"
881 msgstr ""
882
883 #: ../../../src/MenuDevConsole.cpp:362
1142 msgstr "vypne/zapne zobrazovanie počítadla FPS"
1143
1144 #: ../../../src/MenuDevConsole.cpp:379
8841145 msgid "turns on/off all of the HUD elements"
885 msgstr ""
886
887 #: ../../../src/MenuDevConsole.cpp:363
1146 msgstr "vypne/zapne všetky elementy HUD"
1147
1148 #: ../../../src/MenuDevConsole.cpp:380
8881149 msgid "turns on/off the developer hud"
889 msgstr ""
890
891 #: ../../../src/MenuDevConsole.cpp:364
1150 msgstr "vypne/zapne HUD pre vývojárov"
1151
1152 #: ../../../src/MenuDevConsole.cpp:381
8921153 msgid ""
8931154 "Prints a list of powers that match a search term. No search term will list "
8941155 "all items"
8951156 msgstr ""
896
897 #: ../../../src/MenuDevConsole.cpp:365
1157 "Vypíše zoznam síl, ktoré zodpovedajú hľadanému výrazu. Neexistuje hľadaný "
1158 "výraz, ktorý by ich vymenoval všetky"
1159
1160 #: ../../../src/MenuDevConsole.cpp:382
8981161 msgid "Prints out all the map filenames located in the \"maps/\" directory."
899 msgstr ""
900
901 #: ../../../src/MenuDevConsole.cpp:366
1162 msgstr "Vypíše všetky názvy súborov máp umiestnených v adresári „maps/“."
1163
1164 #: ../../../src/MenuDevConsole.cpp:383
9021165 msgid ""
9031166 "Prints out the active campaign statuses that match a search term. No search "
9041167 "term will list all active statuses"
9051168 msgstr ""
9061169
907 #: ../../../src/MenuDevConsole.cpp:367
1170 #: ../../../src/MenuDevConsole.cpp:384
9081171 msgid ""
9091172 "Prints a list of items that match a search term. No search term will list "
9101173 "all items"
9111174 msgstr ""
912
913 #: ../../../src/MenuDevConsole.cpp:368
1175 "Vypíše zoznam predmetov, ktoré zodpovedajú hľadanému výrazu. Neexistuje "
1176 "hľadaný výraz, ktorý by vymenoval všetky predmety"
1177
1178 #: ../../../src/MenuDevConsole.cpp:385
9141179 msgid ""
9151180 "parses a series of event components and executes them as a single event"
9161181 msgstr ""
9171182
918 #: ../../../src/MenuDevConsole.cpp:369
1183 #: ../../../src/MenuDevConsole.cpp:386
9191184 msgid "clears the command history"
920 msgstr ""
921
922 #: ../../../src/MenuDevConsole.cpp:370
1185 msgstr "vymaže históriu príkazov"
1186
1187 #: ../../../src/MenuDevConsole.cpp:387
9231188 msgid "displays this text"
924 msgstr ""
925
926 #: ../../../src/MenuDevConsole.cpp:377
1189 msgstr "zobrazí tento text"
1190
1191 #: ../../../src/MenuDevConsole.cpp:394
9271192 msgid "Toggled the developer hud"
928 msgstr ""
929
930 #: ../../../src/MenuDevConsole.cpp:381
1193 msgstr "Bolo prepnuté zobrazovanie HUD pre vývojárov"
1194
1195 #: ../../../src/MenuDevConsole.cpp:398
9311196 msgid "Toggled the hud"
932 msgstr ""
933
934 #: ../../../src/MenuDevConsole.cpp:385
1197 msgstr "Bolo prepnuté zobrazovanie HUD"
1198
1199 #: ../../../src/MenuDevConsole.cpp:402
9351200 msgid "Toggled the FPS counter"
936 msgstr ""
937
938 #: ../../../src/MenuDevConsole.cpp:534
1201 msgstr "Bolo prepnuté zobrazovanie počítadla FPS"
1202
1203 #: ../../../src/MenuDevConsole.cpp:552
9391204 msgid "ERROR: Incorrect number of arguments"
940 msgstr ""
941
942 #: ../../../src/MenuDevConsole.cpp:536 ../../../src/MenuDevConsole.cpp:564
1205 msgstr "CHYBA: Nesprávny počet argumentov"
1206
1207 #: ../../../src/MenuDevConsole.cpp:554 ../../../src/MenuDevConsole.cpp:582
9431208 msgid "HINT:"
944 msgstr ""
945
946 #: ../../../src/MenuDevConsole.cpp:536
1209 msgstr "TIP:"
1210
1211 #: ../../../src/MenuDevConsole.cpp:554
9471212 msgid "<id>"
9481213 msgstr ""
9491214
950 #: ../../../src/MenuDevConsole.cpp:552
1215 #: ../../../src/MenuDevConsole.cpp:570
9511216 #, c-format
9521217 msgid "ERROR: '%s' is not a valid event key"
953 msgstr ""
954
955 #: ../../../src/MenuDevConsole.cpp:562
1218 msgstr "CHYBA: „%s“ nie je platný kľúč udalosti"
1219
1220 #: ../../../src/MenuDevConsole.cpp:580
9561221 msgid "ERROR: Too few arguments"
957 msgstr ""
958
959 #: ../../../src/MenuDevConsole.cpp:564
1222 msgstr "CHYBA: Príliš málo argumentov"
1223
1224 #: ../../../src/MenuDevConsole.cpp:582
9601225 msgid "<key>=<val> <key>=<val> ..."
961 msgstr ""
962
963 #: ../../../src/MenuDevConsole.cpp:569
1226 msgstr "<kľúč>=<hodnota> <kľúč>=<hodnota> ..."
1227
1228 #: ../../../src/MenuDevConsole.cpp:587
9641229 msgid "ERROR: Unknown command"
965 msgstr ""
966
967 #: ../../../src/MenuDevConsole.cpp:571
1230 msgstr "CHYBA: Neznámy príkaz"
1231
1232 #: ../../../src/MenuDevConsole.cpp:589
9681233 msgid "HINT: Type help"
969 msgstr ""
970
971 #: ../../../src/MenuEnemy.cpp:138
1234 msgstr "TIP: Napíšte help"
1235
1236 #: ../../../src/MenuEnemy.cpp:162
9721237 #, c-format
9731238 msgid "%s level %d"
9741239 msgstr "%s stupeň %d"
9751240
976 #: ../../../src/MenuEnemy.cpp:162
1241 #: ../../../src/MenuEnemy.cpp:186
9771242 msgid "Dead"
9781243 msgstr "Mŕtvy"
9791244
980 #: ../../../src/MenuEnemy.cpp:164
1245 #: ../../../src/MenuEnemy.cpp:188
9811246 msgid "Destroyed"
9821247 msgstr ""
9831248
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
1249 #: ../../../src/MenuGameOver.cpp:69
1250 msgid "Game Over"
1251 msgstr ""
1252
1253 #: ../../../src/MenuInventory.cpp:178
10051254 #, c-format
10061255 msgid "Lost %d%% of %s."
1007 msgstr ""
1008
1009 #: ../../../src/MenuInventory.cpp:195
1256 msgstr "Stratili ste %d %% z %s."
1257
1258 #: ../../../src/MenuInventory.cpp:185
10101259 #, c-format
10111260 msgid "Lost %d%% of total XP."
1012 msgstr ""
1013
1014 #: ../../../src/MenuInventory.cpp:200
1261 msgstr "Stratili ste %d %% z celkového XP."
1262
1263 #: ../../../src/MenuInventory.cpp:190
10151264 #, c-format
10161265 msgid "Lost %d%% of current level XP."
1017 msgstr ""
1018
1019 #: ../../../src/MenuInventory.cpp:226
1266 msgstr "Stratili ste %d %% z XP aktuálnej úrovne."
1267
1268 #: ../../../src/MenuInventory.cpp:216
10201269 #, c-format
10211270 msgid "Lost %s."
10221271 msgstr ""
10231272
1024 #: ../../../src/MenuInventory.cpp:274 ../../../src/MenuStash.cpp:146
1273 #: ../../../src/MenuInventory.cpp:258 ../../../src/MenuStash.cpp:276
10251274 #, c-format
10261275 msgid "%d %s"
10271276 msgstr ""
10281277
1029 #: ../../../src/MenuInventory.cpp:317
1278 #: ../../../src/MenuInventory.cpp:301
10301279 msgid "Pick up item(s):"
1031 msgstr ""
1032
1033 #: ../../../src/MenuInventory.cpp:318
1280 msgstr "Zobratie predmetu/-ov:"
1281
1282 #: ../../../src/MenuInventory.cpp:302
10341283 msgid "Use or equip item:"
1035 msgstr ""
1036
1037 #: ../../../src/MenuInventory.cpp:319
1284 msgstr "Použitie alebo vystrojenie predmetom:"
1285
1286 #: ../../../src/MenuInventory.cpp:303
10381287 #, c-format
10391288 msgid "%s modifiers"
1040 msgstr ""
1041
1042 #: ../../../src/MenuInventory.cpp:320
1289 msgstr "Modifikátory pre %s"
1290
1291 #: ../../../src/MenuInventory.cpp:304
10431292 msgid "Select a quantity of item:"
1044 msgstr ""
1045
1046 #: ../../../src/MenuInventory.cpp:323
1293 msgstr "Výber množstva predmetu:"
1294
1295 #: ../../../src/MenuInventory.cpp:307
10471296 msgid "Stash item stack:"
1048 msgstr ""
1049
1050 #: ../../../src/MenuInventory.cpp:325
1297 msgstr "Uschovanie hromady predmetov:"
1298
1299 #: ../../../src/MenuInventory.cpp:309
10511300 msgid "Sell item stack:"
1052 msgstr ""
1053
1054 #: ../../../src/MenuInventory.cpp:592
1301 msgstr "Predaj hromady predmetov:"
1302
1303 #: ../../../src/MenuInventory.cpp:576
10551304 msgid "You don't have enough of the required item."
1056 msgstr ""
1057
1058 #: ../../../src/MenuInventory.cpp:599
1305 msgstr "Nemáte dostatočné množstvo vyžadovaného predmetu."
1306
1307 #: ../../../src/MenuInventory.cpp:588
10591308 msgid "You can't use this item right now."
1060 msgstr ""
1061
1062 #: ../../../src/MenuInventory.cpp:611
1309 msgstr "Tento predmet nemožno momentálne použiť."
1310
1311 #: ../../../src/MenuInventory.cpp:600
10631312 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
1313 msgstr "Tento predmet možno použiť iba z panelu akcií."
1314
1315 #: ../../../src/MenuInventory.cpp:718
10671316 msgid "Inventory is full."
1068 msgstr "Vrecká sú plné."
1069
1070 #: ../../../src/MenuInventory.cpp:849
1317 msgstr "Inventár je plný."
1318
1319 #: ../../../src/MenuInventory.cpp:843
10711320 #, c-format
10721321 msgid "Not enough %s."
1073 msgstr ""
1074
1075 #: ../../../src/MenuInventory.cpp:869 ../../../src/MenuInventory.cpp:876
1322 msgstr "Nedostatok %s."
1323
1324 #: ../../../src/MenuInventory.cpp:863 ../../../src/MenuInventory.cpp:870
10761325 msgid "This item can not be sold."
1077 msgstr ""
1326 msgstr "Tento predmet nemožno predať."
10781327
10791328 #: ../../../src/MenuLog.cpp:91
10801329 msgid "Notes"
1081 msgstr ""
1330 msgstr "Poznámky"
10821331
10831332 #: ../../../src/MenuLog.cpp:92
10841333 msgid "Quests"
10851334 msgstr "Úlohy"
10861335
1087 #: ../../../src/MenuManager.cpp:286
1336 #: ../../../src/MenuManager.cpp:305
10881337 #, c-format
10891338 msgid "XP: %d/%d"
10901339 msgstr "XP: %d/%d"
10911340
1092 #: ../../../src/MenuManager.cpp:827
1341 #: ../../../src/MenuManager.cpp:875
10931342 msgid "This item can not be dropped."
1343 msgstr "Tento predmet nemožno položiť na zem."
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"
10941367 msgstr ""
10951368
10961369 #: ../../../src/MenuNumPicker.cpp:59
10971370 msgid "Enter amount:"
1098 msgstr ""
1099
1100 #: ../../../src/MenuPowers.cpp:787
1371 msgstr "Zadajte množstvo:"
1372
1373 #: ../../../src/MenuPowers.cpp:894
11011374 msgid "Passive"
1102 msgstr ""
1103
1104 #: ../../../src/MenuPowers.cpp:792
1375 msgstr "Pasívna"
1376
1377 #: ../../../src/MenuPowers.cpp:901
11051378 #, c-format
11061379 msgid "Costs %d MP"
11071380 msgstr "Spotrebuje %d MP"
11081381
1109 #: ../../../src/MenuPowers.cpp:796
1382 #: ../../../src/MenuPowers.cpp:905
11101383 #, c-format
11111384 msgid "Costs %d HP"
1112 msgstr ""
1113
1114 #: ../../../src/MenuPowers.cpp:801
1385 msgstr "Spotrebuje %d HP"
1386
1387 #: ../../../src/MenuPowers.cpp:909
11151388 msgid "Cooldown:"
11161389 msgstr ""
11171390
1118 #: ../../../src/MenuPowers.cpp:866 ../../../src/MenuPowers.cpp:869
1391 #: ../../../src/MenuPowers.cpp:960 ../../../src/MenuPowers.cpp:963
11191392 msgid "Damage per second"
1120 msgstr ""
1121
1122 #: ../../../src/MenuPowers.cpp:872 ../../../src/MenuPowers.cpp:875
1393 msgstr "Zranenie za sekundu"
1394
1395 #: ../../../src/MenuPowers.cpp:966 ../../../src/MenuPowers.cpp:969
11231396 msgid "HP per second"
1124 msgstr ""
1125
1126 #: ../../../src/MenuPowers.cpp:878 ../../../src/MenuPowers.cpp:881
1397 msgstr "HP za sekundu"
1398
1399 #: ../../../src/MenuPowers.cpp:972 ../../../src/MenuPowers.cpp:975
11271400 msgid "MP per second"
1128 msgstr ""
1129
1130 #: ../../../src/MenuPowers.cpp:885
1401 msgstr "MP za sekundu"
1402
1403 #: ../../../src/MenuPowers.cpp:979
11311404 msgid "Immobilize"
11321405 msgstr ""
11331406
1134 #: ../../../src/MenuPowers.cpp:893
1407 #: ../../../src/MenuPowers.cpp:987
11351408 msgid "Immunity"
1136 msgstr ""
1137
1138 #: ../../../src/MenuPowers.cpp:896
1409 msgstr "Imunita"
1410
1411 #: ../../../src/MenuPowers.cpp:990
11391412 msgid "Immunity to damage over time"
1140 msgstr ""
1141
1142 #: ../../../src/MenuPowers.cpp:899
1413 msgstr "Imunita voči zraneniu postupom času"
1414
1415 #: ../../../src/MenuPowers.cpp:993
11431416 msgid "Immunity to slow"
1144 msgstr ""
1145
1146 #: ../../../src/MenuPowers.cpp:902
1417 msgstr "Imunita voči spomaleniu"
1418
1419 #: ../../../src/MenuPowers.cpp:996
11471420 msgid "Immunity to stun"
1148 msgstr ""
1149
1150 #: ../../../src/MenuPowers.cpp:905
1421 msgstr "Imunita voči omráčeniu"
1422
1423 #: ../../../src/MenuPowers.cpp:999
11511424 msgid "Immunity to HP steal"
1152 msgstr ""
1153
1154 #: ../../../src/MenuPowers.cpp:908
1425 msgstr "Imunita voči krádeži HP"
1426
1427 #: ../../../src/MenuPowers.cpp:1002
11551428 msgid "Immunity to MP steal"
1156 msgstr ""
1157
1158 #: ../../../src/MenuPowers.cpp:911
1429 msgstr "Imunita voči krádeži MP"
1430
1431 #: ../../../src/MenuPowers.cpp:1005
11591432 msgid "Immunity to knockback"
1160 msgstr ""
1161
1162 #: ../../../src/MenuPowers.cpp:914
1433 msgstr "Imunita voči odhodeniu"
1434
1435 #: ../../../src/MenuPowers.cpp:1008
11631436 msgid "Immunity to damage reflection"
1164 msgstr ""
1165
1166 #: ../../../src/MenuPowers.cpp:917
1437 msgstr "Imunita voči odrazu zranenia"
1438
1439 #: ../../../src/MenuPowers.cpp:1014
11671440 msgid "Stun"
1168 msgstr ""
1169
1170 #: ../../../src/MenuPowers.cpp:920
1441 msgstr "Omráčenie"
1442
1443 #: ../../../src/MenuPowers.cpp:1017
11711444 msgid "Automatic revive on death"
1172 msgstr ""
1173
1174 #: ../../../src/MenuPowers.cpp:923
1445 msgstr "Automatické oživenie po smrti"
1446
1447 #: ../../../src/MenuPowers.cpp:1020
11751448 msgid "Convert"
11761449 msgstr ""
11771450
1178 #: ../../../src/MenuPowers.cpp:926
1451 #: ../../../src/MenuPowers.cpp:1023
11791452 msgid "Fear"
11801453 msgstr ""
11811454
1182 #: ../../../src/MenuPowers.cpp:929
1455 #: ../../../src/MenuPowers.cpp:1026
11831456 msgid "Lifespan"
11841457 msgstr ""
11851458
1186 #: ../../../src/MenuPowers.cpp:953
1459 #: ../../../src/MenuPowers.cpp:1050
11871460 msgid "Magical Shield"
1188 msgstr ""
1189
1190 #: ../../../src/MenuPowers.cpp:982
1461 msgstr "Magický štít"
1462
1463 #: ../../../src/MenuPowers.cpp:1079
11911464 msgid "Healing"
11921465 msgstr ""
11931466
1194 #: ../../../src/MenuPowers.cpp:985
1467 #: ../../../src/MenuPowers.cpp:1082
11951468 msgid "Knockback"
1196 msgstr ""
1197
1198 #: ../../../src/MenuPowers.cpp:1010
1469 msgstr "Odhodenie"
1470
1471 #: ../../../src/MenuPowers.cpp:1106
11991472 #, c-format
12001473 msgid "%d%% chance"
1201 msgstr ""
1202
1203 #: ../../../src/MenuPowers.cpp:1062
1474 msgstr "%d %% šanca"
1475
1476 #: ../../../src/MenuPowers.cpp:1158
12041477 msgid "Base Accuracy"
1205 msgstr ""
1206
1207 #: ../../../src/MenuPowers.cpp:1082
1478 msgstr "Základná presnosť"
1479
1480 #: ../../../src/MenuPowers.cpp:1178
12081481 msgid "Base Critical Chance"
1209 msgstr ""
1210
1211 #: ../../../src/MenuPowers.cpp:1090
1482 msgstr "Základná šanca na kritický zásah"
1483
1484 #: ../../../src/MenuPowers.cpp:1186
12121485 msgid "Ignores Absorbtion"
1213 msgstr ""
1214
1215 #: ../../../src/MenuPowers.cpp:1095
1486 msgstr "Ignoruje pohltenie"
1487
1488 #: ../../../src/MenuPowers.cpp:1191
12161489 msgid "Ignores Avoidance"
1217 msgstr ""
1218
1219 #: ../../../src/MenuPowers.cpp:1100
1490 msgstr "Ignoruje vyhýbanie"
1491
1492 #: ../../../src/MenuPowers.cpp:1196
12201493 #, c-format
12211494 msgid "%d%% Chance to crit slowed targets"
1222 msgstr ""
1223
1224 #: ../../../src/MenuPowers.cpp:1105
1495 msgstr "%d %% šanca kriticky zasiahnuť spomalené ciele"
1496
1497 #: ../../../src/MenuPowers.cpp:1201
12251498 #, c-format
12261499 msgid "Elemental Damage (%s)"
1227 msgstr ""
1228
1229 #: ../../../src/MenuPowers.cpp:1114
1500 msgstr "Živelné zranenie (%s)"
1501
1502 #: ../../../src/MenuPowers.cpp:1210
12301503 #, c-format
12311504 msgid "Requires a %s"
1232 msgstr ""
1233
1234 #: ../../../src/MenuPowers.cpp:1151 ../../../src/MenuPowers.cpp:1154
1505 msgstr "Vyžaduje %s"
1506
1507 #: ../../../src/MenuPowers.cpp:1248 ../../../src/MenuPowers.cpp:1251
12351508 #, c-format
12361509 msgid "Requires Power: %s"
1237 msgstr ""
1238
1239 #: ../../../src/MenuPowers.cpp:1163
1510 msgstr "Vyžaduje silu: %s"
1511
1512 #: ../../../src/MenuPowers.cpp:1260
12401513 msgid "Click to Unlock (uses 1 Skill Point)"
1241 msgstr ""
1242
1243 #: ../../../src/MenuPowers.cpp:1167 ../../../src/MenuPowers.cpp:1169
1514 msgstr "Odomknete kliknutím (použije 1 bod zručnosti)"
1515
1516 #: ../../../src/MenuPowers.cpp:1264 ../../../src/MenuPowers.cpp:1266
12441517 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
1518 msgstr "Vyžaduje 1 bod zručnosti"
1519
1520 #: ../../../src/MenuPowers.cpp:1466
1521 #, c-format
1522 msgid "Available skill points: %d"
1523 msgstr ""
1524
1525 #: ../../../src/MenuPowers.cpp:1498
12581526 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
1527 msgstr "Ďalšia úroveň:"
1528
1529 #: ../../../src/MenuStash.cpp:80 ../../../src/MenuStash.cpp:161
1530 msgid "Stash"
1531 msgstr "Úložisko"
1532
1533 #: ../../../src/MenuStash.cpp:174 ../../../src/MenuStash.cpp:188
1534 msgid "Private"
1535 msgstr "Súkromné"
1536
1537 #: ../../../src/MenuStash.cpp:175
1538 msgid "Shared"
1539 msgstr "Zdieľané"
1540
1541 #: ../../../src/MenuStash.cpp:340
1542 msgid "This item can not be stored in the stash."
1543 msgstr "Tento predmet nemožno vložiť do úložiska."
1544
1545 #: ../../../src/MenuStash.cpp:345
1546 msgid "This item can not be stored in the private stash."
1547 msgstr "Tento predmet nemožno vložiť do súkromného úložiska."
1548
1549 #: ../../../src/MenuStash.cpp:350
1550 msgid "This item can not be stored in the shared stash."
1551 msgstr "Tento predmet nemožno vložiť do zdieľaného úložiska."
1552
1553 #: ../../../src/MenuStash.cpp:360
12701554 msgid "Stash is full."
1271 msgstr ""
1272
1273 #: ../../../src/MenuTalker.cpp:454
1555 msgstr "Úložisko je plné."
1556
1557 #: ../../../src/MenuStash.cpp:414
1558 #, c-format
1559 msgid "Can not store item in stash: %s"
1560 msgstr "Do úložiska nemožno vložiť predmet: %s"
1561
1562 #: ../../../src/MenuTalker.cpp:448
1563 #, c-format
1564 msgid "<dialog node %d>"
1565 msgstr ""
1566
1567 #: ../../../src/MenuTalker.cpp:456
12741568 msgid "Trade"
1275 msgstr ""
1276
1277 #: ../../../src/MenuVendor.cpp:58
1569 msgstr "Obchodovať"
1570
1571 #: ../../../src/MenuVendor.cpp:60
12781572 msgid "Buyback"
1279 msgstr ""
1280
1281 #: ../../../src/MenuVendor.cpp:279
1573 msgstr "Spätná kúpa"
1574
1575 #: ../../../src/MenuVendor.cpp:283
12821576 msgid "Vendor"
12831577 msgstr "Predavač"
12841578
1285 #: ../../../src/PowerManager.cpp:1136
1579 #: ../../../src/PowerManager.cpp:1204
12861580 #, c-format
12871581 msgid "+%d Shield"
12881582 msgstr ""
12891583
1290 #: ../../../src/PowerManager.cpp:1392
1584 #: ../../../src/PowerManager.cpp:1461
12911585 msgid "You are already transformed, untransform first."
1292 msgstr ""
1293
1294 #: ../../../src/PowerManager.cpp:1404
1586 msgstr "Už ste raz prešli premenou, najprv ju zvráťte."
1587
1588 #: ../../../src/PowerManager.cpp:1473
12951589 msgid "Could not untransform at this position."
1296 msgstr ""
1590 msgstr "Na tomto mieste nemožno zvrátiť premenu."
12971591
12981592 #: ../../../src/QuestLog.cpp:234
12991593 msgid "Completed Quests"
1300 msgstr ""
1301
1302 #: ../../../src/SaveLoad.cpp:243 ../../../src/SaveLoad.cpp:244
1594 msgstr "Dokončené úlohy"
1595
1596 #: ../../../src/SaveLoad.cpp:250 ../../../src/SaveLoad.cpp:251
13031597 msgid "Game saved."
1304 msgstr ""
1305
1306 #: ../../../src/SDLInputState.cpp:582
1598 msgstr "Hra uložená."
1599
1600 #: ../../../src/SDLInputState.cpp:645
1601 msgid "BkSp"
1602 msgstr ""
1603
1604 #: ../../../src/SDLInputState.cpp:646
1605 msgid "Caps"
1606 msgstr ""
1607
1608 #: ../../../src/SDLInputState.cpp:647
1609 msgid "Del"
1610 msgstr ""
1611
1612 #: ../../../src/SDLInputState.cpp:649 ../../../src/SDLInputState.cpp:679
1613 msgid "End"
1614 msgstr "End"
1615
1616 #: ../../../src/SDLInputState.cpp:650
1617 msgid "Esc"
1618 msgstr ""
1619
1620 #: ../../../src/SDLInputState.cpp:651 ../../../src/SDLInputState.cpp:681
1621 msgid "Home"
1622 msgstr "Home"
1623
1624 #: ../../../src/SDLInputState.cpp:652
1625 msgid "Ins"
1626 msgstr ""
1627
1628 #: ../../../src/SDLInputState.cpp:653
1629 msgid "LAlt"
1630 msgstr ""
1631
1632 #: ../../../src/SDLInputState.cpp:654
1633 msgid "LCtrl"
1634 msgstr ""
1635
1636 #: ../../../src/SDLInputState.cpp:656
1637 msgid "LShft"
1638 msgstr ""
1639
1640 #: ../../../src/SDLInputState.cpp:657
1641 msgid "Num"
1642 msgstr ""
1643
1644 #: ../../../src/SDLInputState.cpp:658
1645 msgid "PgDn"
1646 msgstr ""
1647
1648 #: ../../../src/SDLInputState.cpp:659
1649 msgid "PgUp"
1650 msgstr ""
1651
1652 #: ../../../src/SDLInputState.cpp:660 ../../../src/SDLInputState.cpp:690
1653 msgid "Pause"
1654 msgstr "Pause"
1655
1656 #: ../../../src/SDLInputState.cpp:661
1657 msgid "Print"
1658 msgstr ""
1659
1660 #: ../../../src/SDLInputState.cpp:662
1661 msgid "RAlt"
1662 msgstr ""
1663
1664 #: ../../../src/SDLInputState.cpp:663
1665 msgid "RCtrl"
1666 msgstr ""
1667
1668 #: ../../../src/SDLInputState.cpp:664
1669 msgid "Ret"
1670 msgstr ""
1671
1672 #: ../../../src/SDLInputState.cpp:666
1673 msgid "RShft"
1674 msgstr ""
1675
1676 #: ../../../src/SDLInputState.cpp:667
1677 msgid "SLock"
1678 msgstr ""
1679
1680 #: ../../../src/SDLInputState.cpp:668
1681 msgid "Spc"
1682 msgstr ""
1683
1684 #: ../../../src/SDLInputState.cpp:669 ../../../src/SDLInputState.cpp:699
1685 msgid "Tab"
1686 msgstr "Tab"
1687
1688 #: ../../../src/SDLInputState.cpp:675
13071689 msgid "Backspace"
1308 msgstr ""
1309
1310 #: ../../../src/SDLInputState.cpp:583
1690 msgstr "Backspace"
1691
1692 #: ../../../src/SDLInputState.cpp:676
13111693 msgid "CapsLock"
1312 msgstr ""
1313
1314 #: ../../../src/SDLInputState.cpp:586
1315 msgid "End"
1316 msgstr ""
1317
1318 #: ../../../src/SDLInputState.cpp:587
1694 msgstr "CapsLock"
1695
1696 #: ../../../src/SDLInputState.cpp:680
13191697 msgid "Escape"
1320 msgstr ""
1321
1322 #: ../../../src/SDLInputState.cpp:588
1323 msgid "Home"
1324 msgstr ""
1325
1326 #: ../../../src/SDLInputState.cpp:589
1698 msgstr "Escape"
1699
1700 #: ../../../src/SDLInputState.cpp:682
13271701 msgid "Insert"
1328 msgstr ""
1329
1330 #: ../../../src/SDLInputState.cpp:590
1702 msgstr "Insert"
1703
1704 #: ../../../src/SDLInputState.cpp:683
13311705 msgid "Left Alt"
1332 msgstr ""
1333
1334 #: ../../../src/SDLInputState.cpp:591
1706 msgstr "Ľavý Alt"
1707
1708 #: ../../../src/SDLInputState.cpp:684
13351709 msgid "Left Ctrl"
1336 msgstr ""
1337
1338 #: ../../../src/SDLInputState.cpp:593
1710 msgstr "Ľavý Ctrl"
1711
1712 #: ../../../src/SDLInputState.cpp:686
13391713 msgid "Left Shift"
1340 msgstr ""
1341
1342 #: ../../../src/SDLInputState.cpp:594
1714 msgstr "Ľavý Shift"
1715
1716 #: ../../../src/SDLInputState.cpp:687
13431717 msgid "NumLock"
1344 msgstr ""
1345
1346 #: ../../../src/SDLInputState.cpp:595
1718 msgstr "NumLock"
1719
1720 #: ../../../src/SDLInputState.cpp:688
13471721 msgid "PageDown"
1348 msgstr ""
1349
1350 #: ../../../src/SDLInputState.cpp:596
1722 msgstr "PageDown"
1723
1724 #: ../../../src/SDLInputState.cpp:689
13511725 msgid "PageUp"
1352 msgstr ""
1353
1354 #: ../../../src/SDLInputState.cpp:597
1355 msgid "Pause"
1356 msgstr ""
1357
1358 #: ../../../src/SDLInputState.cpp:598
1726 msgstr "PageUp"
1727
1728 #: ../../../src/SDLInputState.cpp:691
13591729 msgid "PrintScreen"
1360 msgstr ""
1361
1362 #: ../../../src/SDLInputState.cpp:599
1730 msgstr "PrintScreen"
1731
1732 #: ../../../src/SDLInputState.cpp:692
13631733 msgid "Right Alt"
1364 msgstr ""
1365
1366 #: ../../../src/SDLInputState.cpp:600
1734 msgstr "Pravý Alt"
1735
1736 #: ../../../src/SDLInputState.cpp:693
13671737 msgid "Right Ctrl"
1368 msgstr ""
1369
1370 #: ../../../src/SDLInputState.cpp:601
1738 msgstr "Pravý Ctrl"
1739
1740 #: ../../../src/SDLInputState.cpp:694
13711741 msgid "Return"
1372 msgstr ""
1373
1374 #: ../../../src/SDLInputState.cpp:603
1742 msgstr "Return"
1743
1744 #: ../../../src/SDLInputState.cpp:696
13751745 msgid "Right Shift"
1376 msgstr ""
1377
1378 #: ../../../src/SDLInputState.cpp:604
1746 msgstr "Pravý Shift"
1747
1748 #: ../../../src/SDLInputState.cpp:697
13791749 msgid "ScrollLock"
1380 msgstr ""
1381
1382 #: ../../../src/SDLInputState.cpp:605
1750 msgstr "ScrollLock"
1751
1752 #: ../../../src/SDLInputState.cpp:698
13831753 msgid "Space"
1384 msgstr ""
1385
1386 #: ../../../src/SDLInputState.cpp:606
1387 msgid "Tab"
1388 msgstr ""
1389
1390 #: ../../../src/SDLInputState.cpp:620
1754 msgstr "Medzerník"
1755
1756 #: ../../../src/SDLInputState.cpp:712
1757 #, c-format
1758 msgid "M%d"
1759 msgstr ""
1760
1761 #: ../../../src/SDLInputState.cpp:718
13911762 #, c-format
13921763 msgid "Mouse %d"
13931764 msgstr ""
13941765
1395 #: ../../../src/SDLInputState.cpp:628
1766 #: ../../../src/SDLInputState.cpp:728
1767 #, c-format
1768 msgid "JX%d-"
1769 msgstr ""
1770
1771 #: ../../../src/SDLInputState.cpp:730
13961772 #, c-format
13971773 msgid "Axis %d -"
1398 msgstr ""
1399
1400 #: ../../../src/SDLInputState.cpp:630
1774 msgstr "Os %d -"
1775
1776 #: ../../../src/SDLInputState.cpp:734
1777 #, c-format
1778 msgid "JX%d+"
1779 msgstr ""
1780
1781 #: ../../../src/SDLInputState.cpp:736
14011782 #, c-format
14021783 msgid "Axis %d +"
1403 msgstr ""
1404
1405 #: ../../../src/SDLInputState.cpp:633
1784 msgstr "Os %d +"
1785
1786 #: ../../../src/SDLInputState.cpp:741
1787 #, c-format
1788 msgid "JB%d"
1789 msgstr ""
1790
1791 #: ../../../src/SDLInputState.cpp:743
14061792 #, c-format
14071793 msgid "Button %d"
1408 msgstr ""
1409
1410 #: ../../../src/SDLInputState.cpp:637
1411 msgid "(none)"
1412 msgstr ""
1413
1414 #: ../../../src/SDLInputState.cpp:677
1794 msgstr "Tlačidlo %d"
1795
1796 #: ../../../src/SDLInputState.cpp:789
14151797 msgid "Touch control D-Pad"
14161798 msgstr ""
14171799
1418 #: ../../../src/SDLInputState.cpp:701
1800 #: ../../../src/SDLInputState.cpp:812
14191801 msgid "Touch control buttons"
14201802 msgstr ""
14211803
1422 #: ../../../src/SDLInputState.cpp:716
1804 #: ../../../src/SDLInputState.cpp:826
14231805 msgid "Tap"
14241806 msgstr ""
14251807
1426 #: ../../../src/SDLInputState.cpp:760 ../../../src/SDLInputState.cpp:764
1427 #: ../../../src/SDLInputState.cpp:768
1808 #: ../../../src/SDLInputState.cpp:878 ../../../src/SDLInputState.cpp:880
1809 #, c-format
1810 msgid "Can not bind: %s"
1811 msgstr "Nemožno priradiť: %s"
1812
1813 #: ../../../src/SDLInputState.cpp:892 ../../../src/SDLInputState.cpp:896
1814 #: ../../../src/SDLInputState.cpp:900
14281815 #, c-format
14291816 msgid "'%s' is no longer bound to:"
14301817 msgstr ""
14351822
14361823 #: ../../../src/Stats.cpp:39
14371824 msgid "Total amount of HP."
1438 msgstr ""
1825 msgstr "Celkové množstvo HP."
14391826
14401827 #: ../../../src/Stats.cpp:43
14411828 msgid "HP Regen"
1442 msgstr ""
1829 msgstr "Regenerácia HP"
14431830
14441831 #: ../../../src/Stats.cpp:44
14451832 msgid "Ticks of HP regen per minute."
14511838
14521839 #: ../../../src/Stats.cpp:49
14531840 msgid "Total amount of MP."
1454 msgstr ""
1841 msgstr "Celkové množstvo MP."
14551842
14561843 #: ../../../src/Stats.cpp:53
14571844 msgid "MP Regen"
1458 msgstr ""
1845 msgstr "Regenerácia MP"
14591846
14601847 #: ../../../src/Stats.cpp:54
14611848 msgid "Ticks of MP regen per minute."
14631850
14641851 #: ../../../src/Stats.cpp:58
14651852 msgid "Accuracy"
1466 msgstr ""
1853 msgstr "Presnosť"
14671854
14681855 #: ../../../src/Stats.cpp:59
14691856 msgid ""
14701857 "Accuracy rating. The enemy's Avoidance rating is subtracted from this value "
14711858 "to calculate your likeliness to land a direct hit."
14721859 msgstr ""
1860 "Hodnotenie presnosti. Vaša pravdepodobnosť priameho zásahu sa počíta "
1861 "odčítaním hodnotenia vyhýbania nepriateľa od tejto hodnoty."
14731862
14741863 #: ../../../src/Stats.cpp:63
14751864 msgid "Avoidance"
1476 msgstr ""
1865 msgstr "Vyhýbanie"
14771866
14781867 #: ../../../src/Stats.cpp:64
14791868 msgid ""
14801869 "Avoidance rating. This value is subtracted from the enemy's Accuracy rating "
14811870 "to calculate their likeliness to land a direct hit."
14821871 msgstr ""
1872 "Hodnotenie vyhýbania. Nepriateľova pravdepobnosť priameho zásahu sa počíta "
1873 "odčítaním tejto hodnoty od jeho hodnotenia presnosti."
14831874
14841875 #: ../../../src/Stats.cpp:68
14851876 msgid "Absorb Min"
14871878
14881879 #: ../../../src/Stats.cpp:69 ../../../src/Stats.cpp:74
14891880 msgid "Reduces the amount of damage taken."
1490 msgstr ""
1881 msgstr "Znižuje množstvo utŕženého zranenia."
14911882
14921883 #: ../../../src/Stats.cpp:73
14931884 msgid "Absorb Max"
14951886
14961887 #: ../../../src/Stats.cpp:78
14971888 msgid "Critical Hit Chance"
1498 msgstr ""
1889 msgstr "Šanca na kritický zásah"
14991890
15001891 #: ../../../src/Stats.cpp:79
15011892 msgid "Chance for an attack to do extra damage."
1502 msgstr ""
1893 msgstr "Šanca, že útok spôsobí väčšie zranenie."
15031894
15041895 #: ../../../src/Stats.cpp:83
15051896 msgid "Bonus XP"
1506 msgstr ""
1897 msgstr "Bonusové XP"
15071898
15081899 #: ../../../src/Stats.cpp:84
15091900 msgid "Increases the XP gained per kill."
1510 msgstr ""
1901 msgstr "Zvyšuje XP získané za zabitie."
15111902
15121903 #: ../../../src/Stats.cpp:88
15131904 #, c-format
15211912
15221913 #: ../../../src/Stats.cpp:93
15231914 msgid "Item Find Chance"
1524 msgstr ""
1915 msgstr "Šanca na nájdenie predmetu"
15251916
15261917 #: ../../../src/Stats.cpp:94
15271918 msgid "Increases the chance that an enemy will drop an item."
1528 msgstr ""
1919 msgstr "Zvyšuje šancu, že nepriateľ za sebou zanechá predmet."
15291920
15301921 #: ../../../src/Stats.cpp:98
15311922 msgid "Stealth"
1532 msgstr ""
1923 msgstr "Skrývanie"
15331924
15341925 #: ../../../src/Stats.cpp:99
15351926 msgid "Increases your ability to move undetected."
1536 msgstr ""
1927 msgstr "Zvyšuje vašu schopnosť nepozorovane sa pohybovať."
15371928
15381929 #: ../../../src/Stats.cpp:103
15391930 msgid "Poise"
1540 msgstr ""
1931 msgstr "Rovnováha"
15411932
15421933 #: ../../../src/Stats.cpp:104
15431934 msgid "Reduces your chance of stumbling when hit."
1544 msgstr ""
1935 msgstr "Znižuje šancu, že pri zásahu stratíte rovnováhu."
15451936
15461937 #: ../../../src/Stats.cpp:108
15471938 msgid "Missile Reflect Chance"
1548 msgstr ""
1939 msgstr "Šanca na odraz striel"
15491940
15501941 #: ../../../src/Stats.cpp:109
15511942 msgid "Increases your chance of reflecting missiles back at enemies."
1552 msgstr ""
1943 msgstr "Zvyšuje vašu šancu odraziť strely naspäť k nepriateľom."
15531944
15541945 #: ../../../src/Stats.cpp:113
15551946 msgid "Damage Reflection"
1556 msgstr ""
1947 msgstr "Odraz zranenia"
15571948
15581949 #: ../../../src/Stats.cpp:114
15591950 msgid "Deals a percentage of damage taken back to the attacker."
1560 msgstr ""
1951 msgstr "Spôsobí časť utŕženého zranenia späť útočníkovi. "
15611952
15621953 #: ../../../src/Stats.cpp:118
15631954 msgid "HP Steal"
1564 msgstr ""
1955 msgstr "Krádež HP"
15651956
15661957 #: ../../../src/Stats.cpp:119
15671958 msgid "Percentage of HP stolen per hit."
15691960
15701961 #: ../../../src/Stats.cpp:123
15711962 msgid "MP Steal"
1572 msgstr ""
1963 msgstr "Krádež MP"
15731964
15741965 #: ../../../src/Stats.cpp:124
15751966 msgid "Percentage of MP stolen per hit."
15771968
15781969 #: ../../../src/Stats.cpp:128
15791970 msgid "Base HP"
1580 msgstr ""
1971 msgstr "Základné HP"
15811972
15821973 #: ../../../src/Stats.cpp:133
15831974 msgid "Base MP"
1584 msgstr ""
1585
1586 #: ../../../src/Utils.cpp:346
1975 msgstr "Základné MP"
1976
1977 #: ../../../src/Utils.cpp:365
15871978 msgid "k"
1588 msgstr ""
1589
1590 #: ../../../src/Utils.cpp:580
1979 msgstr "k"
1980
1981 #: ../../../src/Utils.cpp:635
15911982 #, c-format
15921983 msgid "%s second"
1593 msgstr ""
1594
1595 #: ../../../src/Utils.cpp:583
1984 msgstr "%s sekunda"
1985
1986 #: ../../../src/Utils.cpp:638
15961987 #, c-format
15971988 msgid "%s seconds"
1598 msgstr ""
1989 msgstr "%s sekúnd/-y"
15991990
16001991 #: ../../../src/Version.cpp:139
16011992 msgid "or newer"
1602 msgstr ""
1993 msgstr "alebo novšia"
16031994
16041995 #: ../../../src/Version.cpp:142
16051996 msgid "or older"
1606 msgstr ""
1997 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-07-02 13:26-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:1220
126 #: ../../../src/StatBlock.cpp:926 ../../../src/StatBlock.cpp:932
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:937
132 #: ../../../src/StatBlock.cpp:943
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:704
174 msgid "Entering game world..."
175 msgstr "Öppnar spelvärlden..."
176
177 #: ../../../src/GameStateLoad.cpp:707
178 msgid "Loading saved game..."
179 msgstr "Läser in sparat spel..."
180
181 #: ../../../src/GameStateLoad.cpp:740
182 msgid "Invalid save"
183 msgstr ""
184
185 #: ../../../src/GameStateLoad.cpp:764 ../../../src/ItemManager.cpp:745
186 #: ../../../src/MenuPowers.cpp:882 ../../../src/MenuPowers.cpp:1241
187 #: ../../../src/MenuPowers.cpp:1653
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:254
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:670
247 #: ../../../src/SDLInputState.cpp:700
248 msgid "Up"
249 msgstr "Upp"
250
251 #: ../../../src/InputState.cpp:419 ../../../src/MenuMovementType.cpp:125
252 #: ../../../src/MenuMovementType.cpp:134 ../../../src/SDLInputState.cpp:648
253 #: ../../../src/SDLInputState.cpp:678
254 msgid "Down"
255 msgstr "Ner"
256
257 #: ../../../src/InputState.cpp:420 ../../../src/MenuMovementType.cpp:124
258 #: ../../../src/MenuMovementType.cpp:133 ../../../src/SDLInputState.cpp:655
259 #: ../../../src/SDLInputState.cpp:685
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:665
265 #: ../../../src/SDLInputState.cpp:695
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:159
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:677
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:981
406 #, c-format
407 msgid "%d%% Speed"
408 msgstr ""
409
410 #: ../../../src/ItemManager.cpp:650 ../../../src/MenuPowers.cpp:984
411 #, c-format
412 msgid "%d%% Attack Speed"
413 msgstr ""
414
415 #: ../../../src/ItemManager.cpp:672 ../../../src/MenuCharacter.cpp:352
416 #: ../../../src/MenuPowers.cpp:953
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:1228
446 #: ../../../src/MenuPowers.cpp:1231
447 #, c-format
448 msgid "Requires Level %d"
449 msgstr "Kräver nivå %d"
450
451 #: ../../../src/ItemManager.cpp:836 ../../../src/MenuPowers.cpp:1220
452 #: ../../../src/MenuPowers.cpp:1222
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:898
483 msgid "Set:"
484 msgstr ""
485
486 #: ../../../src/ItemManager.cpp:905
487 #, c-format
488 msgid "%d items:"
489 msgstr ""
490
491 #: ../../../src/ItemManager.cpp:920
492 #, c-format
493 msgid "Press [%s] to read"
494 msgstr ""
495
496 #: ../../../src/ItemManager.cpp:923
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:1256
573 msgid "Clear"
574 msgstr ""
575
576 #: ../../../src/MenuConfig.cpp:122 ../../../src/MenuConfig.cpp:1254
577 msgid "Assign:"
578 msgstr ""
579
580 #: ../../../src/MenuConfig.cpp:123 ../../../src/MenuConfig.cpp:253
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:252 ../../../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:256 ../../../src/MenuGameOver.cpp:72
593 msgid "Continue"
594 msgstr ""
595
596 #: ../../../src/MenuConfig.cpp:258
597 msgid "Save Game"
598 msgstr ""
599
600 #: ../../../src/MenuConfig.cpp:301 ../../../src/MenuConfig.cpp:352
601 msgid "Default"
602 msgstr ""
603
604 #: ../../../src/MenuConfig.cpp:301
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:302
611 msgid "Show all"
612 msgstr ""
613
614 #: ../../../src/MenuConfig.cpp:302
615 msgid ""
616 "Always show loot tooltips. Temporarily hide all loot tooltips with 'Alt'."
617 msgstr ""
618
619 #: ../../../src/MenuConfig.cpp:303 ../../../src/MenuConfig.cpp:308
620 msgid "Hidden"
621 msgstr ""
622
623 #: ../../../src/MenuConfig.cpp:303
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:306
630 msgid "Visible"
631 msgstr ""
632
633 #: ../../../src/MenuConfig.cpp:307
634 msgid "Visible (2x zoom)"
635 msgstr ""
636
637 #: ../../../src/MenuConfig.cpp:311
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:312
644 msgid "- Display a message"
645 msgstr ""
646
647 #: ../../../src/MenuConfig.cpp:313
648 msgid "- Play a sound"
649 msgstr ""
650
651 #: ../../../src/MenuConfig.cpp:314
652 msgid "- Change the cursor"
653 msgstr ""
654
655 #: ../../../src/MenuConfig.cpp:316
656 msgid "Disabled"
657 msgstr ""
658
659 #: ../../../src/MenuConfig.cpp:317
660 msgid "All"
661 msgstr ""
662
663 #: ../../../src/MenuConfig.cpp:318
664 msgid "Message & Cursor"
665 msgstr ""
666
667 #: ../../../src/MenuConfig.cpp:319
668 msgid "Message & Sound"
669 msgstr ""
670
671 #: ../../../src/MenuConfig.cpp:320
672 msgid "Sound & Cursor"
673 msgstr ""
674
675 #: ../../../src/MenuConfig.cpp:321
676 msgid "Message"
677 msgstr ""
678
679 #: ../../../src/MenuConfig.cpp:322
680 msgid "Cursor"
681 msgstr ""
682
683 #: ../../../src/MenuConfig.cpp:323
684 msgid "Sound"
685 msgstr ""
686
687 #: ../../../src/MenuConfig.cpp:329
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:347
694 msgid "The maximum frame rate that the game will be allowed to run at."
695 msgstr ""
696
697 #: ../../../src/MenuConfig.cpp:351
698 msgid ""
699 "The render size refers to the height in pixels of the surface used to draw "
700 "the game. Mods define the allowed render sizes, but this option allows "
701 "overriding the maximum size."
702 msgstr ""
703
704 #: ../../../src/MenuConfig.cpp:374 ../../../src/MenuConfig.cpp:1679
705 #: ../../../src/MenuGameOver.cpp:116
706 msgid "Exit"
707 msgstr "Avsluta"
708
709 #: ../../../src/MenuConfig.cpp:375
710 msgid "Video"
711 msgstr "Video"
712
713 #: ../../../src/MenuConfig.cpp:376
152714 msgid "Audio"
153715 msgstr "Ljud"
154716
155 #: ../../../src/GameStateConfigBase.cpp:161
156 #: ../../../src/GameStateConfigDesktop.cpp:131
717 #: ../../../src/MenuConfig.cpp:377
157718 msgid "Interface"
158719 msgstr "Gränssnitt"
159720
160 #: ../../../src/GameStateConfigBase.cpp:162
161 #: ../../../src/GameStateConfigDesktop.cpp:134
721 #: ../../../src/MenuConfig.cpp:378
722 msgid "Input"
723 msgstr "Inmatning"
724
725 #: ../../../src/MenuConfig.cpp:379
726 msgid "Keybindings"
727 msgstr "Tangentbindningar"
728
729 #: ../../../src/MenuConfig.cpp:380
162730 msgid "Mods"
163731 msgstr "Mods"
164732
165 #: ../../../src/GameStateConfigBase.cpp:249 ../../../src/MenuExit.cpp:72
733 #: ../../../src/MenuConfig.cpp:392
734 msgid "Paused"
735 msgstr ""
736
737 #: ../../../src/MenuConfig.cpp:395
738 msgid "Time Played"
739 msgstr ""
740
741 #: ../../../src/MenuConfig.cpp:401
742 msgid "Renderer"
743 msgstr ""
744
745 #: ../../../src/MenuConfig.cpp:402
746 msgid "Full Screen Mode"
747 msgstr "Fullskärmsläge"
748
749 #: ../../../src/MenuConfig.cpp:403
750 msgid "Hardware surfaces"
751 msgstr ""
752
753 #: ../../../src/MenuConfig.cpp:404
754 msgid "V-Sync"
755 msgstr ""
756
757 #: ../../../src/MenuConfig.cpp:405
758 msgid "Texture Filtering"
759 msgstr ""
760
761 #: ../../../src/MenuConfig.cpp:406
762 msgid "DPI scaling"
763 msgstr ""
764
765 #: ../../../src/MenuConfig.cpp:407
766 msgid "Parallax Layers"
767 msgstr ""
768
769 #: ../../../src/MenuConfig.cpp:408
770 msgid "Allow changing gamma"
771 msgstr "Tillåt ändring av gamma"
772
773 #: ../../../src/MenuConfig.cpp:409
774 msgid "Gamma"
775 msgstr "Gamma"
776
777 #: ../../../src/MenuConfig.cpp:410
778 msgid "Maximum Render Size"
779 msgstr ""
780
781 #: ../../../src/MenuConfig.cpp:411
782 msgid "Frame Limit"
783 msgstr ""
784
785 #: ../../../src/MenuConfig.cpp:413
786 msgid "Sound Volume"
787 msgstr "Ljudvolym"
788
789 #: ../../../src/MenuConfig.cpp:414
166790 msgid "Music Volume"
167791 msgstr "Musikvolym"
168792
169 #: ../../../src/GameStateConfigBase.cpp:253 ../../../src/MenuExit.cpp:77
170 msgid "Sound Volume"
171 msgstr "Ljudvolym"
172
173 #: ../../../src/GameStateConfigBase.cpp:257
793 #: ../../../src/MenuConfig.cpp:416
174794 msgid "Language"
175795 msgstr "Språk"
176796
177 #: ../../../src/GameStateConfigBase.cpp:266
797 #: ../../../src/MenuConfig.cpp:417
178798 msgid "Show FPS"
179799 msgstr "Visa FPS"
180800
181 #: ../../../src/GameStateConfigBase.cpp:270
801 #: ../../../src/MenuConfig.cpp:418
802 msgid "Hardware mouse cursor"
803 msgstr ""
804
805 #: ../../../src/MenuConfig.cpp:419
182806 msgid "Colorblind Mode"
183807 msgstr "Läge för färgblinda"
184808
185 #: ../../../src/GameStateConfigBase.cpp:274
186 msgid "Hardware mouse cursor"
187 msgstr ""
188
189 #: ../../../src/GameStateConfigBase.cpp:278
809 #: ../../../src/MenuConfig.cpp:420
190810 msgid "Developer Mode"
191811 msgstr ""
192812
193 #: ../../../src/GameStateConfigBase.cpp:282
813 #: ../../../src/MenuConfig.cpp:421
194814 msgid "Subtitles"
195815 msgstr ""
196816
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
817 #: ../../../src/MenuConfig.cpp:422
818 msgid "Loot tooltip visibility"
819 msgstr ""
820
821 #: ../../../src/MenuConfig.cpp:423
822 msgid "Mini-map mode"
823 msgstr ""
824
825 #: ../../../src/MenuConfig.cpp:424
826 msgid "Always show stat bar labels"
827 msgstr ""
828
829 #: ../../../src/MenuConfig.cpp:425
830 msgid "Allow stat bar auto-hiding"
831 msgstr ""
832
833 #: ../../../src/MenuConfig.cpp:426
834 msgid "Show combat text"
835 msgstr "Visa text vid strid"
836
837 #: ../../../src/MenuConfig.cpp:427
838 msgid "Automatically equip items"
839 msgstr ""
840
841 #: ../../../src/MenuConfig.cpp:428
842 msgid "Show hidden entity markers"
843 msgstr ""
844
845 #: ../../../src/MenuConfig.cpp:429
846 msgid "Low health notification"
847 msgstr ""
848
849 #: ../../../src/MenuConfig.cpp:430
850 msgid "Low health threshold"
851 msgstr ""
852
853 #: ../../../src/MenuConfig.cpp:431
854 msgid "Show item comparison tooltips"
855 msgstr ""
856
857 #: ../../../src/MenuConfig.cpp:434 ../../../src/MenuMovementType.cpp:94
858 #: ../../../src/MenuMovementType.cpp:131
859 msgid "Joystick"
860 msgstr "Joystick"
861
862 #: ../../../src/MenuConfig.cpp:435
863 msgid "Move hero using mouse"
864 msgstr "Flytta hjälten med muspekaren"
865
866 #: ../../../src/MenuConfig.cpp:436
867 msgid "Mouse aim"
868 msgstr "Sikta med muspekaren"
869
870 #: ../../../src/MenuConfig.cpp:437
871 msgid "Do not use mouse"
872 msgstr "Använd inte muspekare"
873
874 #: ../../../src/MenuConfig.cpp:438
875 msgid "Swap mouse movement button"
876 msgstr ""
877
878 #: ../../../src/MenuConfig.cpp:439
879 msgid "Attack with mouse movement"
880 msgstr ""
881
882 #: ../../../src/MenuConfig.cpp:440
883 msgid "Joystick Deadzone"
884 msgstr "Joystick Dödzon"
885
886 #: ../../../src/MenuConfig.cpp:441
887 msgid "Touch Controls"
888 msgstr ""
889
890 #: ../../../src/MenuConfig.cpp:442
891 msgid "Touch Gamepad Scaling"
892 msgstr ""
893
894 #: ../../../src/MenuConfig.cpp:452
895 #, c-format
896 msgid "Primary binding: %s"
897 msgstr ""
898
899 #: ../../../src/MenuConfig.cpp:453
900 #, c-format
901 msgid "Alternate binding: %s"
902 msgstr ""
903
904 #: ../../../src/MenuConfig.cpp:454
905 #, c-format
906 msgid "Joystick binding: %s"
907 msgstr ""
908
909 #: ../../../src/MenuConfig.cpp:556
252910 msgid ""
253911 "Will try to store surfaces in video memory versus system memory. The effect "
254912 "this has on performance depends on the renderer."
255913 msgstr ""
256914
257 #: ../../../src/GameStateConfigDesktop.cpp:189
915 #: ../../../src/MenuConfig.cpp:557
258916 msgid ""
259917 "Prevents screen tearing. Disable if you experience \"stuttering\" in "
260918 "windowed mode or input lag."
261919 msgstr ""
262920
263 #: ../../../src/GameStateConfigDesktop.cpp:190
921 #: ../../../src/MenuConfig.cpp:558
264922 msgid ""
265923 "When enabled, this uses the screen DPI in addition to the window dimensions "
266924 "to scale the rendering resolution. Otherwise, only the window dimensions are"
267925 " used."
268926 msgstr ""
269927
270 #: ../../../src/GameStateConfigDesktop.cpp:191
928 #: ../../../src/MenuConfig.cpp:559
271929 msgid ""
272930 "This enables parallax (non-tile) layers. Disabling this setting can improve "
273931 "performance in some cases."
274932 msgstr ""
275933
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
934 #: ../../../src/MenuConfig.cpp:560
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 #: ../../../src/MenuConfig.cpp:561
941 msgid ""
942 "Provides additional text for information that is primarily conveyed through "
943 "color."
944 msgstr ""
945
946 #: ../../../src/MenuConfig.cpp:562
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 #: ../../../src/MenuConfig.cpp:563
953 msgid ""
954 "When enabled, empty equipment slots will be filled with applicable items "
955 "when they are obtained."
956 msgstr ""
957
958 #: ../../../src/MenuConfig.cpp:564
959 msgid ""
960 "Shows a marker above enemies, allies, and the player when they are obscured "
961 "by tall objects."
962 msgstr ""
963
964 #: ../../../src/MenuConfig.cpp:565
965 msgid ""
966 "When enabled, tooltips for equipped items of the same type are shown next to"
967 " standard item tooltips."
968 msgstr ""
969
970 #: ../../../src/MenuConfig.cpp:566
971 msgid ""
972 "This allows the game to be controlled entirely with the keyboard (or "
973 "joystick)."
974 msgstr ""
975
976 #: ../../../src/MenuConfig.cpp:567
977 msgid ""
978 "When 'Move hero using mouse' is enabled, this setting controls if 'Main1' or"
979 " 'Main2' is used to move the hero. If enabled, 'Main2' will move the hero "
980 "instead of 'Main1'."
981 msgstr ""
982
983 #: ../../../src/MenuConfig.cpp:568
984 msgid ""
985 "When 'Move hero using mouse' is enabled, this setting controls if the Power "
986 "assigned to the movement button can be used by targeting an enemy. If this "
987 "setting is disabled, it is required to use 'Shift' to access the Power "
988 "assigned to the movement button."
989 msgstr ""
990
991 #: ../../../src/MenuConfig.cpp:569
992 msgid ""
993 "The player's attacks will be aimed in the direction of the mouse cursor when"
994 " this is enabled."
995 msgstr ""
996
997 #: ../../../src/MenuConfig.cpp:570
998 msgid ""
999 "When enabled, a virtual gamepad will be added in-game. Other interactions, "
1000 "such as drag-and-drop behavior, are also altered to better suit touch input."
1001 msgstr ""
1002
1003 #: ../../../src/MenuConfig.cpp:621
1004 msgid "Active Mods"
1005 msgstr "Aktiva Mods"
1006
1007 #: ../../../src/MenuConfig.cpp:630
1008 msgid "Available Mods"
1009 msgstr "Tillgängliga Mods"
1010
1011 #: ../../../src/MenuConfig.cpp:649
1012 msgid "<< Disable"
1013 msgstr "<< Inaktivera"
1014
1015 #: ../../../src/MenuConfig.cpp:655
1016 msgid "Enable >>"
1017 msgstr "Aktivera >>"
1018
1019 #: ../../../src/MenuConfig.cpp:1536
1020 msgid "Version:"
1021 msgstr ""
1022
1023 #: ../../../src/MenuConfig.cpp:1541
1024 msgid "Game:"
1025 msgstr ""
1026
1027 #: ../../../src/MenuConfig.cpp:1546
1028 msgid "Engine version:"
1029 msgstr ""
1030
1031 #: ../../../src/MenuConfig.cpp:1554
1032 msgid "Requires mods:"
1033 msgstr ""
1034
1035 #: ../../../src/MenuConfig.cpp:1662 ../../../src/SDLInputState.cpp:750
1036 msgid "(none)"
1037 msgstr ""
1038
1039 #: ../../../src/MenuConfig.cpp:1679 ../../../src/MenuGameOver.cpp:73
1040 msgid "Save & Exit"
1041 msgstr ""
1042
1043 #: ../../../src/MenuDevConsole.cpp:65
8191044 msgid "Execute"
8201045 msgstr ""
8211046
822 #: ../../../src/MenuDevConsole.cpp:101 ../../../src/MenuDevConsole.cpp:151
1047 #: ../../../src/MenuDevConsole.cpp:103 ../../../src/MenuDevConsole.cpp:153
8231048 msgid "Developer Console"
8241049 msgstr ""
8251050
826 #: ../../../src/MenuDevConsole.cpp:141
1051 #: ../../../src/MenuDevConsole.cpp:143
8271052 #, c-format
8281053 msgid "Use '%s' to inspect with the cursor."
8291054 msgstr ""
8301055
831 #: ../../../src/MenuDevConsole.cpp:146
1056 #: ../../../src/MenuDevConsole.cpp:148
8321057 msgid "Arguments with spaces should be enclosed with double quotes. Example:"
8331058 msgstr ""
8341059
835 #: ../../../src/MenuDevConsole.cpp:147
1060 #: ../../../src/MenuDevConsole.cpp:149
8361061 msgid "Type 'help' to get a list of commands."
8371062 msgstr ""
8381063
839 #: ../../../src/MenuDevConsole.cpp:209 ../../../src/MenuDevConsole.cpp:213
1064 #: ../../../src/MenuDevConsole.cpp:211 ../../../src/MenuDevConsole.cpp:215
8401065 msgid "px"
8411066 msgstr ""
8421067
843 #: ../../../src/MenuDevConsole.cpp:224
1068 #: ../../../src/MenuDevConsole.cpp:226
8441069 msgid "Distance"
8451070 msgstr ""
8461071
847 #: ../../../src/MenuDevConsole.cpp:239 ../../../src/MenuDevConsole.cpp:286
1072 #: ../../../src/MenuDevConsole.cpp:241 ../../../src/MenuDevConsole.cpp:289
1073 #: ../../../src/MenuDevConsole.cpp:303
8481074 msgid "Entity"
8491075 msgstr ""
8501076
851 #: ../../../src/MenuDevConsole.cpp:261 ../../../src/MenuDevConsole.cpp:268
1077 #: ../../../src/MenuDevConsole.cpp:263 ../../../src/MenuDevConsole.cpp:270
8521078 msgid "none"
8531079 msgstr ""
8541080
855 #: ../../../src/MenuDevConsole.cpp:262 ../../../src/MenuDevConsole.cpp:264
1081 #: ../../../src/MenuDevConsole.cpp:264 ../../../src/MenuDevConsole.cpp:266
8561082 msgid "wall"
8571083 msgstr ""
8581084
859 #: ../../../src/MenuDevConsole.cpp:263 ../../../src/MenuDevConsole.cpp:265
1085 #: ../../../src/MenuDevConsole.cpp:265 ../../../src/MenuDevConsole.cpp:267
8601086 msgid "short wall / pit"
8611087 msgstr ""
8621088
863 #: ../../../src/MenuDevConsole.cpp:266
1089 #: ../../../src/MenuDevConsole.cpp:268
8641090 msgid "entity"
8651091 msgstr ""
8661092
867 #: ../../../src/MenuDevConsole.cpp:267
1093 #: ../../../src/MenuDevConsole.cpp:269
8681094 msgid "entity, ally"
8691095 msgstr ""
8701096
871 #: ../../../src/MenuDevConsole.cpp:274
1097 #: ../../../src/MenuDevConsole.cpp:276
8721098 msgid "Tile"
8731099 msgstr ""
8741100
875 #: ../../../src/MenuDevConsole.cpp:360
1101 #: ../../../src/MenuDevConsole.cpp:377
8761102 msgid "adds a power to the action bar"
8771103 msgstr ""
8781104
879 #: ../../../src/MenuDevConsole.cpp:361
1105 #: ../../../src/MenuDevConsole.cpp:378
8801106 msgid "turns on/off the display of the FPS counter"
8811107 msgstr ""
8821108
883 #: ../../../src/MenuDevConsole.cpp:362
1109 #: ../../../src/MenuDevConsole.cpp:379
8841110 msgid "turns on/off all of the HUD elements"
8851111 msgstr ""
8861112
887 #: ../../../src/MenuDevConsole.cpp:363
1113 #: ../../../src/MenuDevConsole.cpp:380
8881114 msgid "turns on/off the developer hud"
8891115 msgstr ""
8901116
891 #: ../../../src/MenuDevConsole.cpp:364
1117 #: ../../../src/MenuDevConsole.cpp:381
8921118 msgid ""
8931119 "Prints a list of powers that match a search term. No search term will list "
8941120 "all items"
8951121 msgstr ""
8961122
897 #: ../../../src/MenuDevConsole.cpp:365
1123 #: ../../../src/MenuDevConsole.cpp:382
8981124 msgid "Prints out all the map filenames located in the \"maps/\" directory."
8991125 msgstr ""
9001126
901 #: ../../../src/MenuDevConsole.cpp:366
1127 #: ../../../src/MenuDevConsole.cpp:383
9021128 msgid ""
9031129 "Prints out the active campaign statuses that match a search term. No search "
9041130 "term will list all active statuses"
9051131 msgstr ""
9061132
907 #: ../../../src/MenuDevConsole.cpp:367
1133 #: ../../../src/MenuDevConsole.cpp:384
9081134 msgid ""
9091135 "Prints a list of items that match a search term. No search term will list "
9101136 "all items"
9111137 msgstr ""
9121138
913 #: ../../../src/MenuDevConsole.cpp:368
1139 #: ../../../src/MenuDevConsole.cpp:385
9141140 msgid ""
9151141 "parses a series of event components and executes them as a single event"
9161142 msgstr ""
9171143
918 #: ../../../src/MenuDevConsole.cpp:369
1144 #: ../../../src/MenuDevConsole.cpp:386
9191145 msgid "clears the command history"
9201146 msgstr ""
9211147
922 #: ../../../src/MenuDevConsole.cpp:370
1148 #: ../../../src/MenuDevConsole.cpp:387
9231149 msgid "displays this text"
9241150 msgstr ""
9251151
926 #: ../../../src/MenuDevConsole.cpp:377
1152 #: ../../../src/MenuDevConsole.cpp:394
9271153 msgid "Toggled the developer hud"
9281154 msgstr ""
9291155
930 #: ../../../src/MenuDevConsole.cpp:381
1156 #: ../../../src/MenuDevConsole.cpp:398
9311157 msgid "Toggled the hud"
9321158 msgstr ""
9331159
934 #: ../../../src/MenuDevConsole.cpp:385
1160 #: ../../../src/MenuDevConsole.cpp:402
9351161 msgid "Toggled the FPS counter"
9361162 msgstr ""
9371163
938 #: ../../../src/MenuDevConsole.cpp:534
1164 #: ../../../src/MenuDevConsole.cpp:552
9391165 msgid "ERROR: Incorrect number of arguments"
9401166 msgstr ""
9411167
942 #: ../../../src/MenuDevConsole.cpp:536 ../../../src/MenuDevConsole.cpp:564
1168 #: ../../../src/MenuDevConsole.cpp:554 ../../../src/MenuDevConsole.cpp:582
9431169 msgid "HINT:"
9441170 msgstr ""
9451171
946 #: ../../../src/MenuDevConsole.cpp:536
1172 #: ../../../src/MenuDevConsole.cpp:554
9471173 msgid "<id>"
9481174 msgstr ""
9491175
950 #: ../../../src/MenuDevConsole.cpp:552
1176 #: ../../../src/MenuDevConsole.cpp:570
9511177 #, c-format
9521178 msgid "ERROR: '%s' is not a valid event key"
9531179 msgstr ""
9541180
955 #: ../../../src/MenuDevConsole.cpp:562
1181 #: ../../../src/MenuDevConsole.cpp:580
9561182 msgid "ERROR: Too few arguments"
9571183 msgstr ""
9581184
959 #: ../../../src/MenuDevConsole.cpp:564
1185 #: ../../../src/MenuDevConsole.cpp:582
9601186 msgid "<key>=<val> <key>=<val> ..."
9611187 msgstr ""
9621188
963 #: ../../../src/MenuDevConsole.cpp:569
1189 #: ../../../src/MenuDevConsole.cpp:587
9641190 msgid "ERROR: Unknown command"
9651191 msgstr ""
9661192
967 #: ../../../src/MenuDevConsole.cpp:571
1193 #: ../../../src/MenuDevConsole.cpp:589
9681194 msgid "HINT: Type help"
9691195 msgstr ""
9701196
971 #: ../../../src/MenuEnemy.cpp:138
1197 #: ../../../src/MenuEnemy.cpp:162
9721198 #, c-format
9731199 msgid "%s level %d"
9741200 msgstr "%s nivå %d"
9751201
976 #: ../../../src/MenuEnemy.cpp:162
1202 #: ../../../src/MenuEnemy.cpp:186
9771203 msgid "Dead"
9781204 msgstr "Död"
9791205
980 #: ../../../src/MenuEnemy.cpp:164
1206 #: ../../../src/MenuEnemy.cpp:188
9811207 msgid "Destroyed"
9821208 msgstr ""
9831209
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
1210 #: ../../../src/MenuGameOver.cpp:69
1211 msgid "Game Over"
1212 msgstr ""
1213
1214 #: ../../../src/MenuInventory.cpp:178
10051215 #, c-format
10061216 msgid "Lost %d%% of %s."
10071217 msgstr ""
10081218
1009 #: ../../../src/MenuInventory.cpp:195
1219 #: ../../../src/MenuInventory.cpp:185
10101220 #, c-format
10111221 msgid "Lost %d%% of total XP."
10121222 msgstr ""
10131223
1014 #: ../../../src/MenuInventory.cpp:200
1224 #: ../../../src/MenuInventory.cpp:190
10151225 #, c-format
10161226 msgid "Lost %d%% of current level XP."
10171227 msgstr ""
10181228
1019 #: ../../../src/MenuInventory.cpp:226
1229 #: ../../../src/MenuInventory.cpp:216
10201230 #, c-format
10211231 msgid "Lost %s."
10221232 msgstr "Förlorade %s."
10231233
1024 #: ../../../src/MenuInventory.cpp:274 ../../../src/MenuStash.cpp:146
1234 #: ../../../src/MenuInventory.cpp:258 ../../../src/MenuStash.cpp:276
10251235 #, c-format
10261236 msgid "%d %s"
10271237 msgstr "%d %s"
10281238
1029 #: ../../../src/MenuInventory.cpp:317
1239 #: ../../../src/MenuInventory.cpp:301
10301240 msgid "Pick up item(s):"
10311241 msgstr ""
10321242
1033 #: ../../../src/MenuInventory.cpp:318
1243 #: ../../../src/MenuInventory.cpp:302
10341244 msgid "Use or equip item:"
10351245 msgstr ""
10361246
1037 #: ../../../src/MenuInventory.cpp:319
1247 #: ../../../src/MenuInventory.cpp:303
10381248 #, c-format
10391249 msgid "%s modifiers"
10401250 msgstr ""
10411251
1042 #: ../../../src/MenuInventory.cpp:320
1252 #: ../../../src/MenuInventory.cpp:304
10431253 msgid "Select a quantity of item:"
10441254 msgstr ""
10451255
1046 #: ../../../src/MenuInventory.cpp:323
1256 #: ../../../src/MenuInventory.cpp:307
10471257 msgid "Stash item stack:"
10481258 msgstr ""
10491259
1050 #: ../../../src/MenuInventory.cpp:325
1260 #: ../../../src/MenuInventory.cpp:309
10511261 msgid "Sell item stack:"
10521262 msgstr ""
10531263
1054 #: ../../../src/MenuInventory.cpp:592
1264 #: ../../../src/MenuInventory.cpp:576
10551265 msgid "You don't have enough of the required item."
10561266 msgstr ""
10571267
1058 #: ../../../src/MenuInventory.cpp:599
1268 #: ../../../src/MenuInventory.cpp:588
10591269 msgid "You can't use this item right now."
10601270 msgstr ""
10611271
1062 #: ../../../src/MenuInventory.cpp:611
1272 #: ../../../src/MenuInventory.cpp:600
10631273 msgid "This item can only be used from the action bar."
10641274 msgstr "Det här föremålet kan bara användas från handlingslisten."
10651275
1066 #: ../../../src/MenuInventory.cpp:729
1276 #: ../../../src/MenuInventory.cpp:718
10671277 msgid "Inventory is full."
10681278 msgstr "Du har inte plats för fler föremål."
10691279
1070 #: ../../../src/MenuInventory.cpp:849
1280 #: ../../../src/MenuInventory.cpp:843
10711281 #, c-format
10721282 msgid "Not enough %s."
10731283 msgstr "Inte tillräckligt med %s."
10741284
1075 #: ../../../src/MenuInventory.cpp:869 ../../../src/MenuInventory.cpp:876
1285 #: ../../../src/MenuInventory.cpp:863 ../../../src/MenuInventory.cpp:870
10761286 msgid "This item can not be sold."
10771287 msgstr ""
10781288
10841294 msgid "Quests"
10851295 msgstr "Uppdrag"
10861296
1087 #: ../../../src/MenuManager.cpp:286
1297 #: ../../../src/MenuManager.cpp:305
10881298 #, c-format
10891299 msgid "XP: %d/%d"
10901300 msgstr "XP: %d/%d"
10911301
1092 #: ../../../src/MenuManager.cpp:827
1302 #: ../../../src/MenuManager.cpp:875
10931303 msgid "This item can not be dropped."
1304 msgstr ""
1305
1306 #: ../../../src/MenuManager.cpp:1501
1307 msgid "Equipped"
1308 msgstr ""
1309
1310 #: ../../../src/MenuMovementType.cpp:87
1311 msgid "Select a Movement Type"
1312 msgstr ""
1313
1314 #: ../../../src/MenuMovementType.cpp:89
1315 msgid "Can be changed later in the Configuration menu."
1316 msgstr ""
1317
1318 #: ../../../src/MenuMovementType.cpp:92 ../../../src/MenuMovementType.cpp:122
1319 msgid "Keyboard"
1320 msgstr ""
1321
1322 #: ../../../src/MenuMovementType.cpp:93 ../../../src/MenuMovementType.cpp:128
1323 msgid "Mouse"
1324 msgstr ""
1325
1326 #: ../../../src/MenuMovementType.cpp:129
1327 msgid "Button"
10941328 msgstr ""
10951329
10961330 #: ../../../src/MenuNumPicker.cpp:59
10971331 msgid "Enter amount:"
10981332 msgstr ""
10991333
1100 #: ../../../src/MenuPowers.cpp:787
1334 #: ../../../src/MenuPowers.cpp:894
11011335 msgid "Passive"
11021336 msgstr ""
11031337
1104 #: ../../../src/MenuPowers.cpp:792
1338 #: ../../../src/MenuPowers.cpp:901
11051339 #, c-format
11061340 msgid "Costs %d MP"
11071341 msgstr "Kostar %d MP"
11081342
1109 #: ../../../src/MenuPowers.cpp:796
1343 #: ../../../src/MenuPowers.cpp:905
11101344 #, c-format
11111345 msgid "Costs %d HP"
11121346 msgstr "Kostar %d HP"
11131347
1114 #: ../../../src/MenuPowers.cpp:801
1348 #: ../../../src/MenuPowers.cpp:909
11151349 msgid "Cooldown:"
11161350 msgstr ""
11171351
1118 #: ../../../src/MenuPowers.cpp:866 ../../../src/MenuPowers.cpp:869
1352 #: ../../../src/MenuPowers.cpp:960 ../../../src/MenuPowers.cpp:963
11191353 msgid "Damage per second"
11201354 msgstr ""
11211355
1122 #: ../../../src/MenuPowers.cpp:872 ../../../src/MenuPowers.cpp:875
1356 #: ../../../src/MenuPowers.cpp:966 ../../../src/MenuPowers.cpp:969
11231357 msgid "HP per second"
11241358 msgstr ""
11251359
1126 #: ../../../src/MenuPowers.cpp:878 ../../../src/MenuPowers.cpp:881
1360 #: ../../../src/MenuPowers.cpp:972 ../../../src/MenuPowers.cpp:975
11271361 msgid "MP per second"
11281362 msgstr ""
11291363
1130 #: ../../../src/MenuPowers.cpp:885
1364 #: ../../../src/MenuPowers.cpp:979
11311365 msgid "Immobilize"
11321366 msgstr ""
11331367
1134 #: ../../../src/MenuPowers.cpp:893
1368 #: ../../../src/MenuPowers.cpp:987
11351369 msgid "Immunity"
11361370 msgstr ""
11371371
1138 #: ../../../src/MenuPowers.cpp:896
1372 #: ../../../src/MenuPowers.cpp:990
11391373 msgid "Immunity to damage over time"
11401374 msgstr ""
11411375
1142 #: ../../../src/MenuPowers.cpp:899
1376 #: ../../../src/MenuPowers.cpp:993
11431377 msgid "Immunity to slow"
11441378 msgstr ""
11451379
1146 #: ../../../src/MenuPowers.cpp:902
1380 #: ../../../src/MenuPowers.cpp:996
11471381 msgid "Immunity to stun"
11481382 msgstr ""
11491383
1150 #: ../../../src/MenuPowers.cpp:905
1384 #: ../../../src/MenuPowers.cpp:999
11511385 msgid "Immunity to HP steal"
11521386 msgstr ""
11531387
1154 #: ../../../src/MenuPowers.cpp:908
1388 #: ../../../src/MenuPowers.cpp:1002
11551389 msgid "Immunity to MP steal"
11561390 msgstr ""
11571391
1158 #: ../../../src/MenuPowers.cpp:911
1392 #: ../../../src/MenuPowers.cpp:1005
11591393 msgid "Immunity to knockback"
11601394 msgstr ""
11611395
1162 #: ../../../src/MenuPowers.cpp:914
1396 #: ../../../src/MenuPowers.cpp:1008
11631397 msgid "Immunity to damage reflection"
11641398 msgstr ""
11651399
1166 #: ../../../src/MenuPowers.cpp:917
1400 #: ../../../src/MenuPowers.cpp:1014
11671401 msgid "Stun"
11681402 msgstr ""
11691403
1170 #: ../../../src/MenuPowers.cpp:920
1404 #: ../../../src/MenuPowers.cpp:1017
11711405 msgid "Automatic revive on death"
11721406 msgstr ""
11731407
1174 #: ../../../src/MenuPowers.cpp:923
1408 #: ../../../src/MenuPowers.cpp:1020
11751409 msgid "Convert"
11761410 msgstr ""
11771411
1178 #: ../../../src/MenuPowers.cpp:926
1412 #: ../../../src/MenuPowers.cpp:1023
11791413 msgid "Fear"
11801414 msgstr ""
11811415
1182 #: ../../../src/MenuPowers.cpp:929
1416 #: ../../../src/MenuPowers.cpp:1026
11831417 msgid "Lifespan"
11841418 msgstr ""
11851419
1186 #: ../../../src/MenuPowers.cpp:953
1420 #: ../../../src/MenuPowers.cpp:1050
11871421 msgid "Magical Shield"
11881422 msgstr ""
11891423
1190 #: ../../../src/MenuPowers.cpp:982
1424 #: ../../../src/MenuPowers.cpp:1079
11911425 msgid "Healing"
11921426 msgstr ""
11931427
1194 #: ../../../src/MenuPowers.cpp:985
1428 #: ../../../src/MenuPowers.cpp:1082
11951429 msgid "Knockback"
11961430 msgstr ""
11971431
1198 #: ../../../src/MenuPowers.cpp:1010
1432 #: ../../../src/MenuPowers.cpp:1106
11991433 #, c-format
12001434 msgid "%d%% chance"
12011435 msgstr ""
12021436
1203 #: ../../../src/MenuPowers.cpp:1062
1437 #: ../../../src/MenuPowers.cpp:1158
12041438 msgid "Base Accuracy"
12051439 msgstr ""
12061440
1207 #: ../../../src/MenuPowers.cpp:1082
1441 #: ../../../src/MenuPowers.cpp:1178
12081442 msgid "Base Critical Chance"
12091443 msgstr ""
12101444
1211 #: ../../../src/MenuPowers.cpp:1090
1445 #: ../../../src/MenuPowers.cpp:1186
12121446 msgid "Ignores Absorbtion"
12131447 msgstr ""
12141448
1215 #: ../../../src/MenuPowers.cpp:1095
1449 #: ../../../src/MenuPowers.cpp:1191
12161450 msgid "Ignores Avoidance"
12171451 msgstr ""
12181452
1219 #: ../../../src/MenuPowers.cpp:1100
1453 #: ../../../src/MenuPowers.cpp:1196
12201454 #, c-format
12211455 msgid "%d%% Chance to crit slowed targets"
12221456 msgstr ""
12231457
1224 #: ../../../src/MenuPowers.cpp:1105
1458 #: ../../../src/MenuPowers.cpp:1201
12251459 #, c-format
12261460 msgid "Elemental Damage (%s)"
12271461 msgstr ""
12281462
1229 #: ../../../src/MenuPowers.cpp:1114
1463 #: ../../../src/MenuPowers.cpp:1210
12301464 #, c-format
12311465 msgid "Requires a %s"
12321466 msgstr "Kräver %s"
12331467
1234 #: ../../../src/MenuPowers.cpp:1151 ../../../src/MenuPowers.cpp:1154
1468 #: ../../../src/MenuPowers.cpp:1248 ../../../src/MenuPowers.cpp:1251
12351469 #, c-format
12361470 msgid "Requires Power: %s"
12371471 msgstr "Kräver styrka: %s"
12381472
1239 #: ../../../src/MenuPowers.cpp:1163
1473 #: ../../../src/MenuPowers.cpp:1260
12401474 msgid "Click to Unlock (uses 1 Skill Point)"
12411475 msgstr ""
12421476
1243 #: ../../../src/MenuPowers.cpp:1167 ../../../src/MenuPowers.cpp:1169
1477 #: ../../../src/MenuPowers.cpp:1264 ../../../src/MenuPowers.cpp:1266
12441478 msgid "Requires 1 Skill Point"
12451479 msgstr ""
12461480
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
1481 #: ../../../src/MenuPowers.cpp:1466
1482 #, c-format
1483 msgid "Available skill points: %d"
1484 msgstr ""
1485
1486 #: ../../../src/MenuPowers.cpp:1498
12581487 msgid "Next Level:"
12591488 msgstr ""
12601489
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
1490 #: ../../../src/MenuStash.cpp:80 ../../../src/MenuStash.cpp:161
1491 msgid "Stash"
1492 msgstr ""
1493
1494 #: ../../../src/MenuStash.cpp:174 ../../../src/MenuStash.cpp:188
1495 msgid "Private"
1496 msgstr ""
1497
1498 #: ../../../src/MenuStash.cpp:175
1499 msgid "Shared"
1500 msgstr ""
1501
1502 #: ../../../src/MenuStash.cpp:340
1503 msgid "This item can not be stored in the stash."
1504 msgstr ""
1505
1506 #: ../../../src/MenuStash.cpp:345
1507 msgid "This item can not be stored in the private stash."
1508 msgstr ""
1509
1510 #: ../../../src/MenuStash.cpp:350
1511 msgid "This item can not be stored in the shared stash."
1512 msgstr ""
1513
1514 #: ../../../src/MenuStash.cpp:360
12701515 msgid "Stash is full."
12711516 msgstr ""
12721517
1273 #: ../../../src/MenuTalker.cpp:454
1518 #: ../../../src/MenuStash.cpp:414
1519 #, c-format
1520 msgid "Can not store item in stash: %s"
1521 msgstr ""
1522
1523 #: ../../../src/MenuTalker.cpp:448
1524 #, c-format
1525 msgid "<dialog node %d>"
1526 msgstr ""
1527
1528 #: ../../../src/MenuTalker.cpp:456
12741529 msgid "Trade"
12751530 msgstr "Handel"
12761531
1277 #: ../../../src/MenuVendor.cpp:58
1532 #: ../../../src/MenuVendor.cpp:60
12781533 msgid "Buyback"
12791534 msgstr "Återköp"
12801535
1281 #: ../../../src/MenuVendor.cpp:279
1536 #: ../../../src/MenuVendor.cpp:283
12821537 msgid "Vendor"
12831538 msgstr "Tillverkare"
12841539
1285 #: ../../../src/PowerManager.cpp:1136
1540 #: ../../../src/PowerManager.cpp:1204
12861541 #, c-format
12871542 msgid "+%d Shield"
12881543 msgstr "+%d Sköld"
12891544
1290 #: ../../../src/PowerManager.cpp:1392
1545 #: ../../../src/PowerManager.cpp:1461
12911546 msgid "You are already transformed, untransform first."
12921547 msgstr "Du är redan i omvandlad form, omvandla dig tillbaka först."
12931548
1294 #: ../../../src/PowerManager.cpp:1404
1549 #: ../../../src/PowerManager.cpp:1473
12951550 msgid "Could not untransform at this position."
12961551 msgstr ""
12971552
12991554 msgid "Completed Quests"
13001555 msgstr ""
13011556
1302 #: ../../../src/SaveLoad.cpp:243 ../../../src/SaveLoad.cpp:244
1557 #: ../../../src/SaveLoad.cpp:250 ../../../src/SaveLoad.cpp:251
13031558 msgid "Game saved."
13041559 msgstr ""
13051560
1306 #: ../../../src/SDLInputState.cpp:582
1561 #: ../../../src/SDLInputState.cpp:645
1562 msgid "BkSp"
1563 msgstr ""
1564
1565 #: ../../../src/SDLInputState.cpp:646
1566 msgid "Caps"
1567 msgstr ""
1568
1569 #: ../../../src/SDLInputState.cpp:647
1570 msgid "Del"
1571 msgstr ""
1572
1573 #: ../../../src/SDLInputState.cpp:649 ../../../src/SDLInputState.cpp:679
1574 msgid "End"
1575 msgstr ""
1576
1577 #: ../../../src/SDLInputState.cpp:650
1578 msgid "Esc"
1579 msgstr ""
1580
1581 #: ../../../src/SDLInputState.cpp:651 ../../../src/SDLInputState.cpp:681
1582 msgid "Home"
1583 msgstr ""
1584
1585 #: ../../../src/SDLInputState.cpp:652
1586 msgid "Ins"
1587 msgstr ""
1588
1589 #: ../../../src/SDLInputState.cpp:653
1590 msgid "LAlt"
1591 msgstr ""
1592
1593 #: ../../../src/SDLInputState.cpp:654
1594 msgid "LCtrl"
1595 msgstr ""
1596
1597 #: ../../../src/SDLInputState.cpp:656
1598 msgid "LShft"
1599 msgstr ""
1600
1601 #: ../../../src/SDLInputState.cpp:657
1602 msgid "Num"
1603 msgstr ""
1604
1605 #: ../../../src/SDLInputState.cpp:658
1606 msgid "PgDn"
1607 msgstr ""
1608
1609 #: ../../../src/SDLInputState.cpp:659
1610 msgid "PgUp"
1611 msgstr ""
1612
1613 #: ../../../src/SDLInputState.cpp:660 ../../../src/SDLInputState.cpp:690
1614 msgid "Pause"
1615 msgstr ""
1616
1617 #: ../../../src/SDLInputState.cpp:661
1618 msgid "Print"
1619 msgstr ""
1620
1621 #: ../../../src/SDLInputState.cpp:662
1622 msgid "RAlt"
1623 msgstr ""
1624
1625 #: ../../../src/SDLInputState.cpp:663
1626 msgid "RCtrl"
1627 msgstr ""
1628
1629 #: ../../../src/SDLInputState.cpp:664
1630 msgid "Ret"
1631 msgstr ""
1632
1633 #: ../../../src/SDLInputState.cpp:666
1634 msgid "RShft"
1635 msgstr ""
1636
1637 #: ../../../src/SDLInputState.cpp:667
1638 msgid "SLock"
1639 msgstr ""
1640
1641 #: ../../../src/SDLInputState.cpp:668
1642 msgid "Spc"
1643 msgstr ""
1644
1645 #: ../../../src/SDLInputState.cpp:669 ../../../src/SDLInputState.cpp:699
1646 msgid "Tab"
1647 msgstr ""
1648
1649 #: ../../../src/SDLInputState.cpp:675
13071650 msgid "Backspace"
13081651 msgstr ""
13091652
1310 #: ../../../src/SDLInputState.cpp:583
1653 #: ../../../src/SDLInputState.cpp:676
13111654 msgid "CapsLock"
13121655 msgstr ""
13131656
1314 #: ../../../src/SDLInputState.cpp:586
1315 msgid "End"
1316 msgstr ""
1317
1318 #: ../../../src/SDLInputState.cpp:587
1657 #: ../../../src/SDLInputState.cpp:680
13191658 msgid "Escape"
13201659 msgstr ""
13211660
1322 #: ../../../src/SDLInputState.cpp:588
1323 msgid "Home"
1324 msgstr ""
1325
1326 #: ../../../src/SDLInputState.cpp:589
1661 #: ../../../src/SDLInputState.cpp:682
13271662 msgid "Insert"
13281663 msgstr ""
13291664
1330 #: ../../../src/SDLInputState.cpp:590
1665 #: ../../../src/SDLInputState.cpp:683
13311666 msgid "Left Alt"
13321667 msgstr ""
13331668
1334 #: ../../../src/SDLInputState.cpp:591
1669 #: ../../../src/SDLInputState.cpp:684
13351670 msgid "Left Ctrl"
13361671 msgstr ""
13371672
1338 #: ../../../src/SDLInputState.cpp:593
1673 #: ../../../src/SDLInputState.cpp:686
13391674 msgid "Left Shift"
13401675 msgstr ""
13411676
1342 #: ../../../src/SDLInputState.cpp:594
1677 #: ../../../src/SDLInputState.cpp:687
13431678 msgid "NumLock"
13441679 msgstr ""
13451680
1346 #: ../../../src/SDLInputState.cpp:595
1681 #: ../../../src/SDLInputState.cpp:688
13471682 msgid "PageDown"
13481683 msgstr ""
13491684
1350 #: ../../../src/SDLInputState.cpp:596
1685 #: ../../../src/SDLInputState.cpp:689
13511686 msgid "PageUp"
13521687 msgstr ""
13531688
1354 #: ../../../src/SDLInputState.cpp:597
1355 msgid "Pause"
1356 msgstr ""
1357
1358 #: ../../../src/SDLInputState.cpp:598
1689 #: ../../../src/SDLInputState.cpp:691
13591690 msgid "PrintScreen"
13601691 msgstr ""
13611692
1362 #: ../../../src/SDLInputState.cpp:599
1693 #: ../../../src/SDLInputState.cpp:692
13631694 msgid "Right Alt"
13641695 msgstr ""
13651696
1366 #: ../../../src/SDLInputState.cpp:600
1697 #: ../../../src/SDLInputState.cpp:693
13671698 msgid "Right Ctrl"
13681699 msgstr ""
13691700
1370 #: ../../../src/SDLInputState.cpp:601
1701 #: ../../../src/SDLInputState.cpp:694
13711702 msgid "Return"
13721703 msgstr ""
13731704
1374 #: ../../../src/SDLInputState.cpp:603
1705 #: ../../../src/SDLInputState.cpp:696
13751706 msgid "Right Shift"
13761707 msgstr ""
13771708
1378 #: ../../../src/SDLInputState.cpp:604
1709 #: ../../../src/SDLInputState.cpp:697
13791710 msgid "ScrollLock"
13801711 msgstr ""
13811712
1382 #: ../../../src/SDLInputState.cpp:605
1713 #: ../../../src/SDLInputState.cpp:698
13831714 msgid "Space"
13841715 msgstr ""
13851716
1386 #: ../../../src/SDLInputState.cpp:606
1387 msgid "Tab"
1388 msgstr ""
1389
1390 #: ../../../src/SDLInputState.cpp:620
1717 #: ../../../src/SDLInputState.cpp:712
1718 #, c-format
1719 msgid "M%d"
1720 msgstr ""
1721
1722 #: ../../../src/SDLInputState.cpp:718
13911723 #, c-format
13921724 msgid "Mouse %d"
13931725 msgstr ""
13941726
1395 #: ../../../src/SDLInputState.cpp:628
1727 #: ../../../src/SDLInputState.cpp:728
1728 #, c-format
1729 msgid "JX%d-"
1730 msgstr ""
1731
1732 #: ../../../src/SDLInputState.cpp:730
13961733 #, c-format
13971734 msgid "Axis %d -"
13981735 msgstr ""
13991736
1400 #: ../../../src/SDLInputState.cpp:630
1737 #: ../../../src/SDLInputState.cpp:734
1738 #, c-format
1739 msgid "JX%d+"
1740 msgstr ""
1741
1742 #: ../../../src/SDLInputState.cpp:736
14011743 #, c-format
14021744 msgid "Axis %d +"
14031745 msgstr ""
14041746
1405 #: ../../../src/SDLInputState.cpp:633
1747 #: ../../../src/SDLInputState.cpp:741
1748 #, c-format
1749 msgid "JB%d"
1750 msgstr ""
1751
1752 #: ../../../src/SDLInputState.cpp:743
14061753 #, c-format
14071754 msgid "Button %d"
14081755 msgstr ""
14091756
1410 #: ../../../src/SDLInputState.cpp:637
1411 msgid "(none)"
1412 msgstr ""
1413
1414 #: ../../../src/SDLInputState.cpp:677
1757 #: ../../../src/SDLInputState.cpp:789
14151758 msgid "Touch control D-Pad"
14161759 msgstr ""
14171760
1418 #: ../../../src/SDLInputState.cpp:701
1761 #: ../../../src/SDLInputState.cpp:812
14191762 msgid "Touch control buttons"
14201763 msgstr ""
14211764
1422 #: ../../../src/SDLInputState.cpp:716
1765 #: ../../../src/SDLInputState.cpp:826
14231766 msgid "Tap"
14241767 msgstr ""
14251768
1426 #: ../../../src/SDLInputState.cpp:760 ../../../src/SDLInputState.cpp:764
1427 #: ../../../src/SDLInputState.cpp:768
1769 #: ../../../src/SDLInputState.cpp:878 ../../../src/SDLInputState.cpp:880
1770 #, c-format
1771 msgid "Can not bind: %s"
1772 msgstr ""
1773
1774 #: ../../../src/SDLInputState.cpp:892 ../../../src/SDLInputState.cpp:896
1775 #: ../../../src/SDLInputState.cpp:900
14281776 #, c-format
14291777 msgid "'%s' is no longer bound to:"
14301778 msgstr ""
15831931 msgid "Base MP"
15841932 msgstr ""
15851933
1586 #: ../../../src/Utils.cpp:346
1934 #: ../../../src/Utils.cpp:365
15871935 msgid "k"
15881936 msgstr "k"
15891937
1590 #: ../../../src/Utils.cpp:580
1938 #: ../../../src/Utils.cpp:635
15911939 #, c-format
15921940 msgid "%s second"
15931941 msgstr ""
15941942
1595 #: ../../../src/Utils.cpp:583
1943 #: ../../../src/Utils.cpp:638
15961944 #, c-format
15971945 msgid "%s seconds"
15981946 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-07-02 13:26-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:1220
134 #: ../../../src/StatBlock.cpp:926 ../../../src/StatBlock.cpp:932
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:937
140 #: ../../../src/StatBlock.cpp:943
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:704
182 msgid "Entering game world..."
183 msgstr "Входжу в ігровий світ..."
184
185 #: ../../../src/GameStateLoad.cpp:707
186 msgid "Loading saved game..."
187 msgstr "Завантажую збереження..."
188
189 #: ../../../src/GameStateLoad.cpp:740
190 msgid "Invalid save"
191 msgstr "Невірне збереження"
192
193 #: ../../../src/GameStateLoad.cpp:764 ../../../src/ItemManager.cpp:745
194 #: ../../../src/MenuPowers.cpp:882 ../../../src/MenuPowers.cpp:1241
195 #: ../../../src/MenuPowers.cpp:1653
196 #, c-format
197 msgid "Level %d"
198 msgstr "Рівень %d"
199
200 #: ../../../src/GameStateNew.cpp:66 ../../../src/InputState.cpp:416
201 #: ../../../src/MenuConfig.cpp:254
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:670
255 #: ../../../src/SDLInputState.cpp:700
256 msgid "Up"
257 msgstr "Вверх"
258
259 #: ../../../src/InputState.cpp:419 ../../../src/MenuMovementType.cpp:125
260 #: ../../../src/MenuMovementType.cpp:134 ../../../src/SDLInputState.cpp:648
261 #: ../../../src/SDLInputState.cpp:678
262 msgid "Down"
263 msgstr "Вниз"
264
265 #: ../../../src/InputState.cpp:420 ../../../src/MenuMovementType.cpp:124
266 #: ../../../src/MenuMovementType.cpp:133 ../../../src/SDLInputState.cpp:655
267 #: ../../../src/SDLInputState.cpp:685
268 msgid "Left"
269 msgstr "Вліво"
270
271 #: ../../../src/InputState.cpp:421 ../../../src/MenuMovementType.cpp:126
272 #: ../../../src/MenuMovementType.cpp:135 ../../../src/SDLInputState.cpp:665
273 #: ../../../src/SDLInputState.cpp:695
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:159
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:677
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:981
414 #, c-format
415 msgid "%d%% Speed"
416 msgstr "%d%% Швидкості"
417
418 #: ../../../src/ItemManager.cpp:650 ../../../src/MenuPowers.cpp:984
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:953
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:1228
454 #: ../../../src/MenuPowers.cpp:1231
455 #, c-format
456 msgid "Requires Level %d"
457 msgstr "Вимагає Рівень %d"
458
459 #: ../../../src/ItemManager.cpp:836 ../../../src/MenuPowers.cpp:1220
460 #: ../../../src/MenuPowers.cpp:1222
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:898
491 msgid "Set:"
492 msgstr "Набір:"
493
494 #: ../../../src/ItemManager.cpp:905
495 #, c-format
496 msgid "%d items:"
497 msgstr "%d предмети:"
498
499 #: ../../../src/ItemManager.cpp:920
500 #, c-format
501 msgid "Press [%s] to read"
502 msgstr "Натисніть [%s] щоб прочитати"
503
504 #: ../../../src/ItemManager.cpp:923
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:1256
581 msgid "Clear"
582 msgstr "Очистити"
583
584 #: ../../../src/MenuConfig.cpp:122 ../../../src/MenuConfig.cpp:1254
585 msgid "Assign:"
586 msgstr "Призначити:"
587
588 #: ../../../src/MenuConfig.cpp:123 ../../../src/MenuConfig.cpp:253
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:252 ../../../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:256 ../../../src/MenuGameOver.cpp:72
601 msgid "Continue"
602 msgstr "Продовжити"
603
604 #: ../../../src/MenuConfig.cpp:258
605 msgid "Save Game"
606 msgstr "Зберегти гру"
607
608 #: ../../../src/MenuConfig.cpp:301 ../../../src/MenuConfig.cpp:352
609 msgid "Default"
610 msgstr "Типово"
611
612 #: ../../../src/MenuConfig.cpp:301
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:302
621 msgid "Show all"
622 msgstr "Показати все"
623
624 #: ../../../src/MenuConfig.cpp:302
625 msgid ""
626 "Always show loot tooltips. Temporarily hide all loot tooltips with 'Alt'."
627 msgstr ""
628 "Завжди показувати підказки предметів. Тимчасово приховати всі підказки за "
629 "допомогою 'Alt'."
630
631 #: ../../../src/MenuConfig.cpp:303 ../../../src/MenuConfig.cpp:308
632 msgid "Hidden"
633 msgstr "Приховано"
634
635 #: ../../../src/MenuConfig.cpp:303
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:306
644 msgid "Visible"
645 msgstr "Видима"
646
647 #: ../../../src/MenuConfig.cpp:307
648 msgid "Visible (2x zoom)"
649 msgstr "Видима (2х)"
650
651 #: ../../../src/MenuConfig.cpp:311
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:312
660 msgid "- Display a message"
661 msgstr "- Показати повідомлення"
662
663 #: ../../../src/MenuConfig.cpp:313
664 msgid "- Play a sound"
665 msgstr "- Грати звук"
666
667 #: ../../../src/MenuConfig.cpp:314
668 msgid "- Change the cursor"
669 msgstr "- Змінити курсор"
670
671 #: ../../../src/MenuConfig.cpp:316
672 msgid "Disabled"
673 msgstr "Вимкнено"
674
675 #: ../../../src/MenuConfig.cpp:317
676 msgid "All"
677 msgstr "Все"
678
679 #: ../../../src/MenuConfig.cpp:318
680 msgid "Message & Cursor"
681 msgstr "Текст і Курсор"
682
683 #: ../../../src/MenuConfig.cpp:319
684 msgid "Message & Sound"
685 msgstr "Текст і Звук"
686
687 #: ../../../src/MenuConfig.cpp:320
688 msgid "Sound & Cursor"
689 msgstr "Звук і Курсор"
690
691 #: ../../../src/MenuConfig.cpp:321
692 msgid "Message"
693 msgstr "Текст"
694
695 #: ../../../src/MenuConfig.cpp:322
696 msgid "Cursor"
697 msgstr "Курсор"
698
699 #: ../../../src/MenuConfig.cpp:323
700 msgid "Sound"
701 msgstr "Звук"
702
703 #: ../../../src/MenuConfig.cpp:329
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:347
712 msgid "The maximum frame rate that the game will be allowed to run at."
713 msgstr ""
714
715 #: ../../../src/MenuConfig.cpp:351
716 msgid ""
717 "The render size refers to the height in pixels of the surface used to draw "
718 "the game. Mods define the allowed render sizes, but this option allows "
719 "overriding the maximum size."
720 msgstr ""
721
722 #: ../../../src/MenuConfig.cpp:374 ../../../src/MenuConfig.cpp:1679
723 #: ../../../src/MenuGameOver.cpp:116
724 msgid "Exit"
725 msgstr "Вихід"
726
727 #: ../../../src/MenuConfig.cpp:375
728 msgid "Video"
729 msgstr "Відео"
730
731 #: ../../../src/MenuConfig.cpp:376
160732 msgid "Audio"
161733 msgstr "Аудіо"
162734
163 #: ../../../src/GameStateConfigBase.cpp:161
164 #: ../../../src/GameStateConfigDesktop.cpp:131
735 #: ../../../src/MenuConfig.cpp:377
165736 msgid "Interface"
166737 msgstr "Інтерфейс"
167738
168 #: ../../../src/GameStateConfigBase.cpp:162
169 #: ../../../src/GameStateConfigDesktop.cpp:134
739 #: ../../../src/MenuConfig.cpp:378
740 msgid "Input"
741 msgstr "Керування"
742
743 #: ../../../src/MenuConfig.cpp:379
744 msgid "Keybindings"
745 msgstr "Клавіші"
746
747 #: ../../../src/MenuConfig.cpp:380
170748 msgid "Mods"
171749 msgstr "Моди"
172750
173 #: ../../../src/GameStateConfigBase.cpp:249 ../../../src/MenuExit.cpp:72
751 #: ../../../src/MenuConfig.cpp:392
752 msgid "Paused"
753 msgstr "Гру призупинено"
754
755 #: ../../../src/MenuConfig.cpp:395
756 msgid "Time Played"
757 msgstr "Час в грі"
758
759 #: ../../../src/MenuConfig.cpp:401
760 msgid "Renderer"
761 msgstr "Рендерер"
762
763 #: ../../../src/MenuConfig.cpp:402
764 msgid "Full Screen Mode"
765 msgstr "На весь екран"
766
767 #: ../../../src/MenuConfig.cpp:403
768 msgid "Hardware surfaces"
769 msgstr "Апаратні поверхні"
770
771 #: ../../../src/MenuConfig.cpp:404
772 msgid "V-Sync"
773 msgstr "Вертикальна синхронізація"
774
775 #: ../../../src/MenuConfig.cpp:405
776 msgid "Texture Filtering"
777 msgstr "Фільтр текстур"
778
779 #: ../../../src/MenuConfig.cpp:406
780 msgid "DPI scaling"
781 msgstr "Масштабування розлільної здатності"
782
783 #: ../../../src/MenuConfig.cpp:407
784 msgid "Parallax Layers"
785 msgstr "Шари середовища"
786
787 #: ../../../src/MenuConfig.cpp:408
788 msgid "Allow changing gamma"
789 msgstr "Дозволити зміну гами"
790
791 #: ../../../src/MenuConfig.cpp:409
792 msgid "Gamma"
793 msgstr "Гама"
794
795 #: ../../../src/MenuConfig.cpp:410
796 msgid "Maximum Render Size"
797 msgstr ""
798
799 #: ../../../src/MenuConfig.cpp:411
800 msgid "Frame Limit"
801 msgstr ""
802
803 #: ../../../src/MenuConfig.cpp:413
804 msgid "Sound Volume"
805 msgstr "Гучність звуків"
806
807 #: ../../../src/MenuConfig.cpp:414
174808 msgid "Music Volume"
175809 msgstr "Гучність музики"
176810
177 #: ../../../src/GameStateConfigBase.cpp:253 ../../../src/MenuExit.cpp:77
178 msgid "Sound Volume"
179 msgstr "Гучність звуків"
180
181 #: ../../../src/GameStateConfigBase.cpp:257
811 #: ../../../src/MenuConfig.cpp:416
182812 msgid "Language"
183813 msgstr "Мова"
184814
185 #: ../../../src/GameStateConfigBase.cpp:266
815 #: ../../../src/MenuConfig.cpp:417
186816 msgid "Show FPS"
187817 msgstr "Показувати FPS"
188818
189 #: ../../../src/GameStateConfigBase.cpp:270
819 #: ../../../src/MenuConfig.cpp:418
820 msgid "Hardware mouse cursor"
821 msgstr "Апаратний курсор миші"
822
823 #: ../../../src/MenuConfig.cpp:419
190824 msgid "Colorblind Mode"
191825 msgstr "Безколірний режим"
192826
193 #: ../../../src/GameStateConfigBase.cpp:274
194 msgid "Hardware mouse cursor"
195 msgstr "Апаратний курсор миші"
196
197 #: ../../../src/GameStateConfigBase.cpp:278
827 #: ../../../src/MenuConfig.cpp:420
198828 msgid "Developer Mode"
199829 msgstr "Режим розробника"
200830
201 #: ../../../src/GameStateConfigBase.cpp:282
831 #: ../../../src/MenuConfig.cpp:421
202832 msgid "Subtitles"
203833 msgstr "Субтитри"
204834
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
835 #: ../../../src/MenuConfig.cpp:422
836 msgid "Loot tooltip visibility"
837 msgstr "Видимість міток речей"
838
839 #: ../../../src/MenuConfig.cpp:423
840 msgid "Mini-map mode"
841 msgstr "Режим міні-мапи"
842
843 #: ../../../src/MenuConfig.cpp:424
844 msgid "Always show stat bar labels"
845 msgstr "Завжди показувати текст на смужках статів"
846
847 #: ../../../src/MenuConfig.cpp:425
848 msgid "Allow stat bar auto-hiding"
849 msgstr "Дозволити автоматичне приховування смужок статів"
850
851 #: ../../../src/MenuConfig.cpp:426
852 msgid "Show combat text"
853 msgstr "Показувати текст бою"
854
855 #: ../../../src/MenuConfig.cpp:427
856 msgid "Automatically equip items"
857 msgstr "Автоматично одягати предмети"
858
859 #: ../../../src/MenuConfig.cpp:428
860 msgid "Show hidden entity markers"
861 msgstr "Показувати маркери прихованих істот."
862
863 #: ../../../src/MenuConfig.cpp:429
864 msgid "Low health notification"
865 msgstr "Дані про низький рівень Здоров'я"
866
867 #: ../../../src/MenuConfig.cpp:430
868 msgid "Low health threshold"
869 msgstr "Нижній поріг Здоров'я"
870
871 #: ../../../src/MenuConfig.cpp:431
872 msgid "Show item comparison tooltips"
873 msgstr ""
874
875 #: ../../../src/MenuConfig.cpp:434 ../../../src/MenuMovementType.cpp:94
876 #: ../../../src/MenuMovementType.cpp:131
877 msgid "Joystick"
878 msgstr "Джойстик"
879
880 #: ../../../src/MenuConfig.cpp:435
881 msgid "Move hero using mouse"
882 msgstr "Керувати рухом героя використовуючи мишку"
883
884 #: ../../../src/MenuConfig.cpp:436
885 msgid "Mouse aim"
886 msgstr "Цілитись мишкою"
887
888 #: ../../../src/MenuConfig.cpp:437
889 msgid "Do not use mouse"
890 msgstr "Не користуватись мишкою"
891
892 #: ../../../src/MenuConfig.cpp:438
893 msgid "Swap mouse movement button"
894 msgstr "Переставити кнопку переміщення миші"
895
896 #: ../../../src/MenuConfig.cpp:439
897 msgid "Attack with mouse movement"
898 msgstr "Атакувати рухом миші"
899
900 #: ../../../src/MenuConfig.cpp:440
901 msgid "Joystick Deadzone"
902 msgstr "Мертва зона джойстика"
903
904 #: ../../../src/MenuConfig.cpp:441
905 msgid "Touch Controls"
906 msgstr ""
907
908 #: ../../../src/MenuConfig.cpp:442
909 msgid "Touch Gamepad Scaling"
910 msgstr ""
911
912 #: ../../../src/MenuConfig.cpp:452
913 #, c-format
914 msgid "Primary binding: %s"
915 msgstr "Основна клавіша: %s"
916
917 #: ../../../src/MenuConfig.cpp:453
918 #, c-format
919 msgid "Alternate binding: %s"
920 msgstr "Альтернативна клавіша: %s"
921
922 #: ../../../src/MenuConfig.cpp:454
923 #, c-format
924 msgid "Joystick binding: %s"
925 msgstr "Елемент керування джойстика: %s"
926
927 #: ../../../src/MenuConfig.cpp:556
260928 msgid ""
261929 "Will try to store surfaces in video memory versus system memory. The effect "
262930 "this has on performance depends on the renderer."
264932 "Гра спробує зберігати поверхні у відеопам'яті, а не в оперативній пам'яті. "
265933 "Ефективність режиму залежить від вибраного рендерера."
266934
267 #: ../../../src/GameStateConfigDesktop.cpp:189
935 #: ../../../src/MenuConfig.cpp:557
268936 msgid ""
269937 "Prevents screen tearing. Disable if you experience \"stuttering\" in "
270938 "windowed mode or input lag."
272940 "Запобігає смиканню екрану. Вимкніть, якщо ви помічаєте \"гальмування\" в "
273941 "віконному режимі або запізнілу реакцію на дії користувача."
274942
275 #: ../../../src/GameStateConfigDesktop.cpp:190
943 #: ../../../src/MenuConfig.cpp:558
276944 msgid ""
277945 "When enabled, this uses the screen DPI in addition to the window dimensions "
278946 "to scale the rendering resolution. Otherwise, only the window dimensions are"
282950 "використовуватись роздільна здатність екрану. Інакше використовуються лише "
283951 "розміри вікна."
284952
285 #: ../../../src/GameStateConfigDesktop.cpp:191
953 #: ../../../src/MenuConfig.cpp:559
286954 msgid ""
287955 "This enables parallax (non-tile) layers. Disabling this setting can improve "
288956 "performance in some cases."
290958 "Вмикає шари оточення (сніг, дощ, туман...). Вимкнення цієї опції може інколи"
291959 " підвищити продуктивність."
292960
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
961 #: ../../../src/MenuConfig.cpp:560
962 msgid ""
963 "Enables the below setting that controls the screen gamma level. The behavior"
964 " of the gamma setting can vary between platforms."
965 msgstr ""
966 "Вмикає нижченаведену опцію, яка контролюює рівень гами екрану. Поведінка "
967 "налаштування гами може відрізнятися для різних платформ."
968
969 #: ../../../src/MenuConfig.cpp:561
970 msgid ""
971 "Provides additional text for information that is primarily conveyed through "
972 "color."
973 msgstr ""
974 "Забезпечує додатковий текст для інформації, яка передається через колір."
975
976 #: ../../../src/MenuConfig.cpp:562
977 msgid ""
978 "Some mods will automatically hide the stat bars when they are inactive. "
979 "Disabling this option will keep them displayed at all times."
980 msgstr ""
981 "Деякі моди автоматично приховують смужки статів, коли вони неактивні. Якщо "
982 "вимкнути цю опцію, вони будуть відображатись завжди."
983
984 #: ../../../src/MenuConfig.cpp:563
985 msgid ""
986 "When enabled, empty equipment slots will be filled with applicable items "
987 "when they are obtained."
988 msgstr ""
989 "Коли увімкнено, порожні комірки спорядження будуть заповнені відповідними "
990 "предметами при їх отриманні."
991
992 #: ../../../src/MenuConfig.cpp:564
993 msgid ""
994 "Shows a marker above enemies, allies, and the player when they are obscured "
995 "by tall objects."
996 msgstr ""
997 "Показує маркер над ворогами, союзниками і героєм, коли вони знаходяться за "
998 "високими об'єктами."
999
1000 #: ../../../src/MenuConfig.cpp:565
1001 msgid ""
1002 "When enabled, tooltips for equipped items of the same type are shown next to"
1003 " standard item tooltips."
1004 msgstr ""
1005
1006 #: ../../../src/MenuConfig.cpp:566
1007 msgid ""
1008 "This allows the game to be controlled entirely with the keyboard (or "
1009 "joystick)."
1010 msgstr ""
1011 "Дозволяє керувати грою повністю за допомогою клавіатури (або джойстика)."
1012
1013 #: ../../../src/MenuConfig.cpp:567
1014 msgid ""
1015 "When 'Move hero using mouse' is enabled, this setting controls if 'Main1' or"
1016 " 'Main2' is used to move the hero. If enabled, 'Main2' will move the hero "
1017 "instead of 'Main1'."
1018 msgstr ""
1019 "Якщо ввімкнено функцію \"Керувати рухом героя використовуючи мишку\", ця "
1020 "опція визначає, яка кнопка використовуються для переміщення героя: 'Дія1' чи"
1021 " 'Дія2'. Якщо увімкнено, 'Дія2' переміщуватиме героя замість 'Дія1'."
1022
1023 #: ../../../src/MenuConfig.cpp:568
1024 msgid ""
1025 "When 'Move hero using mouse' is enabled, this setting controls if the Power "
1026 "assigned to the movement button can be used by targeting an enemy. If this "
1027 "setting is disabled, it is required to use 'Shift' to access the Power "
1028 "assigned to the movement button."
1029 msgstr ""
1030 "Якщо ввімкнено функцію \"Керувати рухом героя використовуючи мишку\", ця "
1031 "опція визначає, чи можна використовувати Уміння, призначене на кнопку "
1032 "переміщення, шляхом націлювання на ворога. Якщо це налаштування вимкнено, "
1033 "для доступу до Уміння, призначеного на кнопку переміщення, потрібно "
1034 "використовувати 'Shift'."
1035
1036 #: ../../../src/MenuConfig.cpp:569
1037 msgid ""
1038 "The player's attacks will be aimed in the direction of the mouse cursor when"
1039 " this is enabled."
1040 msgstr ""
1041 "Якщо увімкнено, атаки героя будуть спрямовані у напрямку курсору миші."
1042
1043 #: ../../../src/MenuConfig.cpp:570
1044 msgid ""
1045 "When enabled, a virtual gamepad will be added in-game. Other interactions, "
1046 "such as drag-and-drop behavior, are also altered to better suit touch input."
1047 msgstr ""
1048
1049 #: ../../../src/MenuConfig.cpp:621
1050 msgid "Active Mods"
1051 msgstr "Активні моди"
1052
1053 #: ../../../src/MenuConfig.cpp:630
1054 msgid "Available Mods"
1055 msgstr "Наявні моди"
1056
1057 #: ../../../src/MenuConfig.cpp:649
1058 msgid "<< Disable"
1059 msgstr "<< Вимкнути"
1060
1061 #: ../../../src/MenuConfig.cpp:655
1062 msgid "Enable >>"
1063 msgstr "Увімкнути >>"
1064
1065 #: ../../../src/MenuConfig.cpp:1536
1066 msgid "Version:"
1067 msgstr "Версія:"
1068
1069 #: ../../../src/MenuConfig.cpp:1541
1070 msgid "Game:"
1071 msgstr "Гра:"
1072
1073 #: ../../../src/MenuConfig.cpp:1546
1074 msgid "Engine version:"
1075 msgstr "Версія движку:"
1076
1077 #: ../../../src/MenuConfig.cpp:1554
1078 msgid "Requires mods:"
1079 msgstr "Необхідні моди:"
1080
1081 #: ../../../src/MenuConfig.cpp:1662 ../../../src/SDLInputState.cpp:750
1082 msgid "(none)"
1083 msgstr "(нічого)"
1084
1085 #: ../../../src/MenuConfig.cpp:1679 ../../../src/MenuGameOver.cpp:73
1086 msgid "Save & Exit"
1087 msgstr "Зберегти і Вийти"
1088
1089 #: ../../../src/MenuDevConsole.cpp:65
8361090 msgid "Execute"
8371091 msgstr "Виконати"
8381092
839 #: ../../../src/MenuDevConsole.cpp:101 ../../../src/MenuDevConsole.cpp:151
1093 #: ../../../src/MenuDevConsole.cpp:103 ../../../src/MenuDevConsole.cpp:153
8401094 msgid "Developer Console"
8411095 msgstr "Консоль розробника"
8421096
843 #: ../../../src/MenuDevConsole.cpp:141
1097 #: ../../../src/MenuDevConsole.cpp:143
8441098 #, c-format
8451099 msgid "Use '%s' to inspect with the cursor."
8461100 msgstr "Для аналізу корсором використовуйте '%s'."
8471101
848 #: ../../../src/MenuDevConsole.cpp:146
1102 #: ../../../src/MenuDevConsole.cpp:148
8491103 msgid "Arguments with spaces should be enclosed with double quotes. Example:"
8501104 msgstr ""
8511105 "Аргументи з пропусками мають бути оточені подвійними лапками. Приклад:"
8521106
853 #: ../../../src/MenuDevConsole.cpp:147
1107 #: ../../../src/MenuDevConsole.cpp:149
8541108 msgid "Type 'help' to get a list of commands."
8551109 msgstr "Напишіть 'help' для отримання переліку команд."
8561110
857 #: ../../../src/MenuDevConsole.cpp:209 ../../../src/MenuDevConsole.cpp:213
1111 #: ../../../src/MenuDevConsole.cpp:211 ../../../src/MenuDevConsole.cpp:215
8581112 msgid "px"
8591113 msgstr "px"
8601114
861 #: ../../../src/MenuDevConsole.cpp:224
1115 #: ../../../src/MenuDevConsole.cpp:226
8621116 msgid "Distance"
8631117 msgstr "Відстань"
8641118
865 #: ../../../src/MenuDevConsole.cpp:239 ../../../src/MenuDevConsole.cpp:286
1119 #: ../../../src/MenuDevConsole.cpp:241 ../../../src/MenuDevConsole.cpp:289
1120 #: ../../../src/MenuDevConsole.cpp:303
8661121 msgid "Entity"
8671122 msgstr "Сутність"
8681123
869 #: ../../../src/MenuDevConsole.cpp:261 ../../../src/MenuDevConsole.cpp:268
1124 #: ../../../src/MenuDevConsole.cpp:263 ../../../src/MenuDevConsole.cpp:270
8701125 msgid "none"
8711126 msgstr "нічого"
8721127
873 #: ../../../src/MenuDevConsole.cpp:262 ../../../src/MenuDevConsole.cpp:264
1128 #: ../../../src/MenuDevConsole.cpp:264 ../../../src/MenuDevConsole.cpp:266
8741129 msgid "wall"
8751130 msgstr "стіна"
8761131
877 #: ../../../src/MenuDevConsole.cpp:263 ../../../src/MenuDevConsole.cpp:265
1132 #: ../../../src/MenuDevConsole.cpp:265 ../../../src/MenuDevConsole.cpp:267
8781133 msgid "short wall / pit"
8791134 msgstr "коротка стіна/яма"
8801135
881 #: ../../../src/MenuDevConsole.cpp:266
1136 #: ../../../src/MenuDevConsole.cpp:268
8821137 msgid "entity"
8831138 msgstr "сутність"
8841139
885 #: ../../../src/MenuDevConsole.cpp:267
1140 #: ../../../src/MenuDevConsole.cpp:269
8861141 msgid "entity, ally"
8871142 msgstr "сутність, союзник"
8881143
889 #: ../../../src/MenuDevConsole.cpp:274
1144 #: ../../../src/MenuDevConsole.cpp:276
8901145 msgid "Tile"
8911146 msgstr "Плитка"
8921147
893 #: ../../../src/MenuDevConsole.cpp:360
1148 #: ../../../src/MenuDevConsole.cpp:377
8941149 msgid "adds a power to the action bar"
8951150 msgstr "додає уміння на панель дій"
8961151
897 #: ../../../src/MenuDevConsole.cpp:361
1152 #: ../../../src/MenuDevConsole.cpp:378
8981153 msgid "turns on/off the display of the FPS counter"
8991154 msgstr "вмикає/вимикає відображення FPS"
9001155
901 #: ../../../src/MenuDevConsole.cpp:362
1156 #: ../../../src/MenuDevConsole.cpp:379
9021157 msgid "turns on/off all of the HUD elements"
9031158 msgstr "показує/приховує всі елементи інтерфейсу"
9041159
905 #: ../../../src/MenuDevConsole.cpp:363
1160 #: ../../../src/MenuDevConsole.cpp:380
9061161 msgid "turns on/off the developer hud"
9071162 msgstr "вмикає/вимикає панель розробника"
9081163
909 #: ../../../src/MenuDevConsole.cpp:364
1164 #: ../../../src/MenuDevConsole.cpp:381
9101165 msgid ""
9111166 "Prints a list of powers that match a search term. No search term will list "
9121167 "all items"
9141169 "Виводить список умінь, які відповідають пошуковому запиту. Жоден пошуковий "
9151170 "запит не покаже всіх умінь"
9161171
917 #: ../../../src/MenuDevConsole.cpp:365
1172 #: ../../../src/MenuDevConsole.cpp:382
9181173 msgid "Prints out all the map filenames located in the \"maps/\" directory."
9191174 msgstr "Виводить назви всіх файлів з мапами що знаходяться в теці \"maps/\""
9201175
921 #: ../../../src/MenuDevConsole.cpp:366
1176 #: ../../../src/MenuDevConsole.cpp:383
9221177 msgid ""
9231178 "Prints out the active campaign statuses that match a search term. No search "
9241179 "term will list all active statuses"
9261181 "Виводить статуси активної кампанії, які відповідають пошуковому запиту. "
9271182 "Жоден пошуковий запит не покаже усіх активних статусів"
9281183
929 #: ../../../src/MenuDevConsole.cpp:367
1184 #: ../../../src/MenuDevConsole.cpp:384
9301185 msgid ""
9311186 "Prints a list of items that match a search term. No search term will list "
9321187 "all items"
9341189 "Виводить список елементів, які відповідають пошуковому запиту. Жоден "
9351190 "пошуковий запит не покаже всіх елементів"
9361191
937 #: ../../../src/MenuDevConsole.cpp:368
1192 #: ../../../src/MenuDevConsole.cpp:385
9381193 msgid ""
9391194 "parses a series of event components and executes them as a single event"
9401195 msgstr "аналізує серію компонентів подій та виконує їх як окрему подію"
9411196
942 #: ../../../src/MenuDevConsole.cpp:369
1197 #: ../../../src/MenuDevConsole.cpp:386
9431198 msgid "clears the command history"
9441199 msgstr "Очищує історію команд"
9451200
946 #: ../../../src/MenuDevConsole.cpp:370
1201 #: ../../../src/MenuDevConsole.cpp:387
9471202 msgid "displays this text"
9481203 msgstr "показує цей текст"
9491204
950 #: ../../../src/MenuDevConsole.cpp:377
1205 #: ../../../src/MenuDevConsole.cpp:394
9511206 msgid "Toggled the developer hud"
9521207 msgstr "Стан панелі розробника змінено"
9531208
954 #: ../../../src/MenuDevConsole.cpp:381
1209 #: ../../../src/MenuDevConsole.cpp:398
9551210 msgid "Toggled the hud"
9561211 msgstr "Інтерфейс перемкнено"
9571212
958 #: ../../../src/MenuDevConsole.cpp:385
1213 #: ../../../src/MenuDevConsole.cpp:402
9591214 msgid "Toggled the FPS counter"
9601215 msgstr "Показ FPS перемкнений"
9611216
962 #: ../../../src/MenuDevConsole.cpp:534
1217 #: ../../../src/MenuDevConsole.cpp:552
9631218 msgid "ERROR: Incorrect number of arguments"
9641219 msgstr "ПОМИЛКА: Невірна кількість параметрів"
9651220
966 #: ../../../src/MenuDevConsole.cpp:536 ../../../src/MenuDevConsole.cpp:564
1221 #: ../../../src/MenuDevConsole.cpp:554 ../../../src/MenuDevConsole.cpp:582
9671222 msgid "HINT:"
9681223 msgstr "ПОРАДА:"
9691224
970 #: ../../../src/MenuDevConsole.cpp:536
1225 #: ../../../src/MenuDevConsole.cpp:554
9711226 msgid "<id>"
9721227 msgstr "<id>"
9731228
974 #: ../../../src/MenuDevConsole.cpp:552
1229 #: ../../../src/MenuDevConsole.cpp:570
9751230 #, c-format
9761231 msgid "ERROR: '%s' is not a valid event key"
9771232 msgstr "ПОМИЛКА: '%s' некоректний ключ події"
9781233
979 #: ../../../src/MenuDevConsole.cpp:562
1234 #: ../../../src/MenuDevConsole.cpp:580
9801235 msgid "ERROR: Too few arguments"
9811236 msgstr "ПОМИЛКА: Замало параметрів"
9821237
983 #: ../../../src/MenuDevConsole.cpp:564
1238 #: ../../../src/MenuDevConsole.cpp:582
9841239 msgid "<key>=<val> <key>=<val> ..."
9851240 msgstr "<key>=<val> <key>=<val> ..."
9861241
987 #: ../../../src/MenuDevConsole.cpp:569
1242 #: ../../../src/MenuDevConsole.cpp:587
9881243 msgid "ERROR: Unknown command"
9891244 msgstr "ПОМИЛКА: Невідома команда"
9901245
991 #: ../../../src/MenuDevConsole.cpp:571
1246 #: ../../../src/MenuDevConsole.cpp:589
9921247 msgid "HINT: Type help"
9931248 msgstr "ПІДКАЗКА: Введіть help"
9941249
995 #: ../../../src/MenuEnemy.cpp:138
1250 #: ../../../src/MenuEnemy.cpp:162
9961251 #, c-format
9971252 msgid "%s level %d"
9981253 msgstr "%s рівень %d"
9991254
1000 #: ../../../src/MenuEnemy.cpp:162
1255 #: ../../../src/MenuEnemy.cpp:186
10011256 msgid "Dead"
10021257 msgstr "Мертвий"
10031258
1004 #: ../../../src/MenuEnemy.cpp:164
1259 #: ../../../src/MenuEnemy.cpp:188
10051260 msgid "Destroyed"
10061261 msgstr "Знищений"
10071262
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
1263 #: ../../../src/MenuGameOver.cpp:69
1264 msgid "Game Over"
1265 msgstr ""
1266
1267 #: ../../../src/MenuInventory.cpp:178
10291268 #, c-format
10301269 msgid "Lost %d%% of %s."
10311270 msgstr "Втрачено %d%% з %s."
10321271
1033 #: ../../../src/MenuInventory.cpp:195
1272 #: ../../../src/MenuInventory.cpp:185
10341273 #, c-format
10351274 msgid "Lost %d%% of total XP."
10361275 msgstr "Втрачено %d%% загального Досвіду."
10371276
1038 #: ../../../src/MenuInventory.cpp:200
1277 #: ../../../src/MenuInventory.cpp:190
10391278 #, c-format
10401279 msgid "Lost %d%% of current level XP."
10411280 msgstr "Втрачено %d%% Досвіду поточного рівня."
10421281
1043 #: ../../../src/MenuInventory.cpp:226
1282 #: ../../../src/MenuInventory.cpp:216
10441283 #, c-format
10451284 msgid "Lost %s."
10461285 msgstr "Втрачено %s."
10471286
1048 #: ../../../src/MenuInventory.cpp:274 ../../../src/MenuStash.cpp:146
1287 #: ../../../src/MenuInventory.cpp:258 ../../../src/MenuStash.cpp:276
10491288 #, c-format
10501289 msgid "%d %s"
10511290 msgstr "%d %s"
10521291
1053 #: ../../../src/MenuInventory.cpp:317
1292 #: ../../../src/MenuInventory.cpp:301
10541293 msgid "Pick up item(s):"
10551294 msgstr "Підняти предмет(и):"
10561295
1057 #: ../../../src/MenuInventory.cpp:318
1296 #: ../../../src/MenuInventory.cpp:302
10581297 msgid "Use or equip item:"
10591298 msgstr "Використати предмет:"
10601299
1061 #: ../../../src/MenuInventory.cpp:319
1300 #: ../../../src/MenuInventory.cpp:303
10621301 #, c-format
10631302 msgid "%s modifiers"
10641303 msgstr "Модифікатори для %s"
10651304
1066 #: ../../../src/MenuInventory.cpp:320
1305 #: ../../../src/MenuInventory.cpp:304
10671306 msgid "Select a quantity of item:"
10681307 msgstr "Вказати кількість предметів:"
10691308
1070 #: ../../../src/MenuInventory.cpp:323
1309 #: ../../../src/MenuInventory.cpp:307
10711310 msgid "Stash item stack:"
10721311 msgstr "Пачку предметів в тайник:"
10731312
1074 #: ../../../src/MenuInventory.cpp:325
1313 #: ../../../src/MenuInventory.cpp:309
10751314 msgid "Sell item stack:"
10761315 msgstr "Продати пачку предметів:"
10771316
1078 #: ../../../src/MenuInventory.cpp:592
1317 #: ../../../src/MenuInventory.cpp:576
10791318 msgid "You don't have enough of the required item."
10801319 msgstr "У вас недостатньо потрібних предметів."
10811320
1082 #: ../../../src/MenuInventory.cpp:599
1321 #: ../../../src/MenuInventory.cpp:588
10831322 msgid "You can't use this item right now."
10841323 msgstr "Наразі неможливо використати цей предмет."
10851324
1086 #: ../../../src/MenuInventory.cpp:611
1325 #: ../../../src/MenuInventory.cpp:600
10871326 msgid "This item can only be used from the action bar."
10881327 msgstr "Цей предмет може бути використаний лише з панелі дій."
10891328
1090 #: ../../../src/MenuInventory.cpp:729
1329 #: ../../../src/MenuInventory.cpp:718
10911330 msgid "Inventory is full."
10921331 msgstr "Інвентар заповнений."
10931332
1094 #: ../../../src/MenuInventory.cpp:849
1333 #: ../../../src/MenuInventory.cpp:843
10951334 #, c-format
10961335 msgid "Not enough %s."
10971336 msgstr "Недостатньо %s."
10981337
1099 #: ../../../src/MenuInventory.cpp:869 ../../../src/MenuInventory.cpp:876
1338 #: ../../../src/MenuInventory.cpp:863 ../../../src/MenuInventory.cpp:870
11001339 msgid "This item can not be sold."
11011340 msgstr "Цей предмет не можна продати."
11021341
11081347 msgid "Quests"
11091348 msgstr "Квести"
11101349
1111 #: ../../../src/MenuManager.cpp:286
1350 #: ../../../src/MenuManager.cpp:305
11121351 #, c-format
11131352 msgid "XP: %d/%d"
11141353 msgstr "Досвід: %d/%d"
11151354
1116 #: ../../../src/MenuManager.cpp:827
1355 #: ../../../src/MenuManager.cpp:875
11171356 msgid "This item can not be dropped."
11181357 msgstr "Цей предмет не можна викинути."
1358
1359 #: ../../../src/MenuManager.cpp:1501
1360 msgid "Equipped"
1361 msgstr ""
1362
1363 #: ../../../src/MenuMovementType.cpp:87
1364 msgid "Select a Movement Type"
1365 msgstr ""
1366
1367 #: ../../../src/MenuMovementType.cpp:89
1368 msgid "Can be changed later in the Configuration menu."
1369 msgstr ""
1370
1371 #: ../../../src/MenuMovementType.cpp:92 ../../../src/MenuMovementType.cpp:122
1372 msgid "Keyboard"
1373 msgstr ""
1374
1375 #: ../../../src/MenuMovementType.cpp:93 ../../../src/MenuMovementType.cpp:128
1376 msgid "Mouse"
1377 msgstr ""
1378
1379 #: ../../../src/MenuMovementType.cpp:129
1380 msgid "Button"
1381 msgstr ""
11191382
11201383 #: ../../../src/MenuNumPicker.cpp:59
11211384 msgid "Enter amount:"
11221385 msgstr "Вкажіть кількість:"
11231386
1124 #: ../../../src/MenuPowers.cpp:787
1387 #: ../../../src/MenuPowers.cpp:894
11251388 msgid "Passive"
11261389 msgstr "Пасивне"
11271390
1128 #: ../../../src/MenuPowers.cpp:792
1391 #: ../../../src/MenuPowers.cpp:901
11291392 #, c-format
11301393 msgid "Costs %d MP"
11311394 msgstr "Коштує %d Мани"
11321395
1133 #: ../../../src/MenuPowers.cpp:796
1396 #: ../../../src/MenuPowers.cpp:905
11341397 #, c-format
11351398 msgid "Costs %d HP"
11361399 msgstr "Коштує %d Здоров'я"
11371400
1138 #: ../../../src/MenuPowers.cpp:801
1401 #: ../../../src/MenuPowers.cpp:909
11391402 msgid "Cooldown:"
11401403 msgstr "Очікування:"
11411404
1142 #: ../../../src/MenuPowers.cpp:866 ../../../src/MenuPowers.cpp:869
1405 #: ../../../src/MenuPowers.cpp:960 ../../../src/MenuPowers.cpp:963
11431406 msgid "Damage per second"
11441407 msgstr "Шкоди за секунду"
11451408
1146 #: ../../../src/MenuPowers.cpp:872 ../../../src/MenuPowers.cpp:875
1409 #: ../../../src/MenuPowers.cpp:966 ../../../src/MenuPowers.cpp:969
11471410 msgid "HP per second"
11481411 msgstr "Здоров'я за секунду"
11491412
1150 #: ../../../src/MenuPowers.cpp:878 ../../../src/MenuPowers.cpp:881
1413 #: ../../../src/MenuPowers.cpp:972 ../../../src/MenuPowers.cpp:975
11511414 msgid "MP per second"
11521415 msgstr "Мани за секунду"
11531416
1154 #: ../../../src/MenuPowers.cpp:885
1417 #: ../../../src/MenuPowers.cpp:979
11551418 msgid "Immobilize"
11561419 msgstr "Сковування"
11571420
1158 #: ../../../src/MenuPowers.cpp:893
1421 #: ../../../src/MenuPowers.cpp:987
11591422 msgid "Immunity"
11601423 msgstr "Імунітет"
11611424
1162 #: ../../../src/MenuPowers.cpp:896
1425 #: ../../../src/MenuPowers.cpp:990
11631426 msgid "Immunity to damage over time"
11641427 msgstr "Імунітет до шкоди протягом часу"
11651428
1166 #: ../../../src/MenuPowers.cpp:899
1429 #: ../../../src/MenuPowers.cpp:993
11671430 msgid "Immunity to slow"
11681431 msgstr "Імунітет до уповільнення"
11691432
1170 #: ../../../src/MenuPowers.cpp:902
1433 #: ../../../src/MenuPowers.cpp:996
11711434 msgid "Immunity to stun"
11721435 msgstr "Імунітет до оглушення"
11731436
1174 #: ../../../src/MenuPowers.cpp:905
1437 #: ../../../src/MenuPowers.cpp:999
11751438 msgid "Immunity to HP steal"
11761439 msgstr "Імунітет до крадіжки Здоров'я"
11771440
1178 #: ../../../src/MenuPowers.cpp:908
1441 #: ../../../src/MenuPowers.cpp:1002
11791442 msgid "Immunity to MP steal"
11801443 msgstr "Імунітет до крадіжки Мани"
11811444
1182 #: ../../../src/MenuPowers.cpp:911
1445 #: ../../../src/MenuPowers.cpp:1005
11831446 msgid "Immunity to knockback"
11841447 msgstr "Імунітет до відкидання"
11851448
1186 #: ../../../src/MenuPowers.cpp:914
1449 #: ../../../src/MenuPowers.cpp:1008
11871450 msgid "Immunity to damage reflection"
11881451 msgstr "Імунітет до відбиття шкоди."
11891452
1190 #: ../../../src/MenuPowers.cpp:917
1453 #: ../../../src/MenuPowers.cpp:1014
11911454 msgid "Stun"
11921455 msgstr "Оглушення"
11931456
1194 #: ../../../src/MenuPowers.cpp:920
1457 #: ../../../src/MenuPowers.cpp:1017
11951458 msgid "Automatic revive on death"
11961459 msgstr "Автоматичне відродження при смерті"
11971460
1198 #: ../../../src/MenuPowers.cpp:923
1461 #: ../../../src/MenuPowers.cpp:1020
11991462 msgid "Convert"
12001463 msgstr "Перетворення"
12011464
1202 #: ../../../src/MenuPowers.cpp:926
1465 #: ../../../src/MenuPowers.cpp:1023
12031466 msgid "Fear"
12041467 msgstr "Страх"
12051468
1206 #: ../../../src/MenuPowers.cpp:929
1469 #: ../../../src/MenuPowers.cpp:1026
12071470 msgid "Lifespan"
12081471 msgstr "Тривалість життя"
12091472
1210 #: ../../../src/MenuPowers.cpp:953
1473 #: ../../../src/MenuPowers.cpp:1050
12111474 msgid "Magical Shield"
12121475 msgstr "Магічний Щит"
12131476
1214 #: ../../../src/MenuPowers.cpp:982
1477 #: ../../../src/MenuPowers.cpp:1079
12151478 msgid "Healing"
12161479 msgstr "Лікування"
12171480
1218 #: ../../../src/MenuPowers.cpp:985
1481 #: ../../../src/MenuPowers.cpp:1082
12191482 msgid "Knockback"
12201483 msgstr "Відкидання"
12211484
1222 #: ../../../src/MenuPowers.cpp:1010
1485 #: ../../../src/MenuPowers.cpp:1106
12231486 #, c-format
12241487 msgid "%d%% chance"
12251488 msgstr "%d%% шанс"
12261489
1227 #: ../../../src/MenuPowers.cpp:1062
1490 #: ../../../src/MenuPowers.cpp:1158
12281491 msgid "Base Accuracy"
12291492 msgstr "Базова Точність"
12301493
1231 #: ../../../src/MenuPowers.cpp:1082
1494 #: ../../../src/MenuPowers.cpp:1178
12321495 msgid "Base Critical Chance"
12331496 msgstr "Базовий Критичний Шанс"
12341497
1235 #: ../../../src/MenuPowers.cpp:1090
1498 #: ../../../src/MenuPowers.cpp:1186
12361499 msgid "Ignores Absorbtion"
12371500 msgstr "Ігнорує Поглинання"
12381501
1239 #: ../../../src/MenuPowers.cpp:1095
1502 #: ../../../src/MenuPowers.cpp:1191
12401503 msgid "Ignores Avoidance"
12411504 msgstr "Ігнорує Уникнення"
12421505
1243 #: ../../../src/MenuPowers.cpp:1100
1506 #: ../../../src/MenuPowers.cpp:1196
12441507 #, c-format
12451508 msgid "%d%% Chance to crit slowed targets"
12461509 msgstr "%d%% Шанс на крит. сповільненої цілі"
12471510
1248 #: ../../../src/MenuPowers.cpp:1105
1511 #: ../../../src/MenuPowers.cpp:1201
12491512 #, c-format
12501513 msgid "Elemental Damage (%s)"
12511514 msgstr "Шкода від стихії (%s)"
12521515
1253 #: ../../../src/MenuPowers.cpp:1114
1516 #: ../../../src/MenuPowers.cpp:1210
12541517 #, c-format
12551518 msgid "Requires a %s"
12561519 msgstr "Вимагає %s"
12571520
1258 #: ../../../src/MenuPowers.cpp:1151 ../../../src/MenuPowers.cpp:1154
1521 #: ../../../src/MenuPowers.cpp:1248 ../../../src/MenuPowers.cpp:1251
12591522 #, c-format
12601523 msgid "Requires Power: %s"
12611524 msgstr "Вимагає Уміння: %s"
12621525
1263 #: ../../../src/MenuPowers.cpp:1163
1526 #: ../../../src/MenuPowers.cpp:1260
12641527 msgid "Click to Unlock (uses 1 Skill Point)"
12651528 msgstr "Клацніть для вивчення (потребує 1 очко Умінь)"
12661529
1267 #: ../../../src/MenuPowers.cpp:1167 ../../../src/MenuPowers.cpp:1169
1530 #: ../../../src/MenuPowers.cpp:1264 ../../../src/MenuPowers.cpp:1266
12681531 msgid "Requires 1 Skill Point"
12691532 msgstr "Вимагає 1 очко Умінь"
12701533
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
1534 #: ../../../src/MenuPowers.cpp:1466
1535 #, c-format
1536 msgid "Available skill points: %d"
1537 msgstr ""
1538
1539 #: ../../../src/MenuPowers.cpp:1498
12821540 msgid "Next Level:"
12831541 msgstr "Натсупний рівень:"
12841542
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
1543 #: ../../../src/MenuStash.cpp:80 ../../../src/MenuStash.cpp:161
1544 msgid "Stash"
1545 msgstr "Тайник"
1546
1547 #: ../../../src/MenuStash.cpp:174 ../../../src/MenuStash.cpp:188
1548 msgid "Private"
1549 msgstr "Особистий"
1550
1551 #: ../../../src/MenuStash.cpp:175
1552 msgid "Shared"
1553 msgstr "Загальний"
1554
1555 #: ../../../src/MenuStash.cpp:340
1556 msgid "This item can not be stored in the stash."
1557 msgstr "Цю річ не можна зберегти в тайнику."
1558
1559 #: ../../../src/MenuStash.cpp:345
1560 msgid "This item can not be stored in the private stash."
1561 msgstr "Цю річ не можна зберігати в приватному сховку."
1562
1563 #: ../../../src/MenuStash.cpp:350
1564 msgid "This item can not be stored in the shared stash."
1565 msgstr "Цю річ не можна зберігати в спільному сховку."
1566
1567 #: ../../../src/MenuStash.cpp:360
12941568 msgid "Stash is full."
12951569 msgstr "Тайник заповнений."
12961570
1297 #: ../../../src/MenuTalker.cpp:454
1571 #: ../../../src/MenuStash.cpp:414
1572 #, c-format
1573 msgid "Can not store item in stash: %s"
1574 msgstr "Неможливо зберегти в тайнику: %s"
1575
1576 #: ../../../src/MenuTalker.cpp:448
1577 #, c-format
1578 msgid "<dialog node %d>"
1579 msgstr "<dialog node %d>"
1580
1581 #: ../../../src/MenuTalker.cpp:456
12981582 msgid "Trade"
12991583 msgstr "Торгувати"
13001584
1301 #: ../../../src/MenuVendor.cpp:58
1585 #: ../../../src/MenuVendor.cpp:60
13021586 msgid "Buyback"
13031587 msgstr "Викуп"
13041588
1305 #: ../../../src/MenuVendor.cpp:279
1589 #: ../../../src/MenuVendor.cpp:283
13061590 msgid "Vendor"
13071591 msgstr "Торговець"
13081592
1309 #: ../../../src/PowerManager.cpp:1136
1593 #: ../../../src/PowerManager.cpp:1204
13101594 #, c-format
13111595 msgid "+%d Shield"
13121596 msgstr "+%d Захисту"
13131597
1314 #: ../../../src/PowerManager.cpp:1392
1598 #: ../../../src/PowerManager.cpp:1461
13151599 msgid "You are already transformed, untransform first."
13161600 msgstr "Ви вже трансформовані, спершу відновіть початкову форму."
13171601
1318 #: ../../../src/PowerManager.cpp:1404
1602 #: ../../../src/PowerManager.cpp:1473
13191603 msgid "Could not untransform at this position."
13201604 msgstr "Не можу змінити форму в цьому місці."
13211605
13231607 msgid "Completed Quests"
13241608 msgstr "Завершені квести"
13251609
1326 #: ../../../src/SaveLoad.cpp:243 ../../../src/SaveLoad.cpp:244
1610 #: ../../../src/SaveLoad.cpp:250 ../../../src/SaveLoad.cpp:251
13271611 msgid "Game saved."
13281612 msgstr "Гру збережено."
13291613
1330 #: ../../../src/SDLInputState.cpp:582
1614 #: ../../../src/SDLInputState.cpp:645
1615 msgid "BkSp"
1616 msgstr ""
1617
1618 #: ../../../src/SDLInputState.cpp:646
1619 msgid "Caps"
1620 msgstr ""
1621
1622 #: ../../../src/SDLInputState.cpp:647
1623 msgid "Del"
1624 msgstr ""
1625
1626 #: ../../../src/SDLInputState.cpp:649 ../../../src/SDLInputState.cpp:679
1627 msgid "End"
1628 msgstr "End"
1629
1630 #: ../../../src/SDLInputState.cpp:650
1631 msgid "Esc"
1632 msgstr ""
1633
1634 #: ../../../src/SDLInputState.cpp:651 ../../../src/SDLInputState.cpp:681
1635 msgid "Home"
1636 msgstr "Home"
1637
1638 #: ../../../src/SDLInputState.cpp:652
1639 msgid "Ins"
1640 msgstr ""
1641
1642 #: ../../../src/SDLInputState.cpp:653
1643 msgid "LAlt"
1644 msgstr ""
1645
1646 #: ../../../src/SDLInputState.cpp:654
1647 msgid "LCtrl"
1648 msgstr ""
1649
1650 #: ../../../src/SDLInputState.cpp:656
1651 msgid "LShft"
1652 msgstr ""
1653
1654 #: ../../../src/SDLInputState.cpp:657
1655 msgid "Num"
1656 msgstr ""
1657
1658 #: ../../../src/SDLInputState.cpp:658
1659 msgid "PgDn"
1660 msgstr ""
1661
1662 #: ../../../src/SDLInputState.cpp:659
1663 msgid "PgUp"
1664 msgstr ""
1665
1666 #: ../../../src/SDLInputState.cpp:660 ../../../src/SDLInputState.cpp:690
1667 msgid "Pause"
1668 msgstr "Pause"
1669
1670 #: ../../../src/SDLInputState.cpp:661
1671 msgid "Print"
1672 msgstr ""
1673
1674 #: ../../../src/SDLInputState.cpp:662
1675 msgid "RAlt"
1676 msgstr ""
1677
1678 #: ../../../src/SDLInputState.cpp:663
1679 msgid "RCtrl"
1680 msgstr ""
1681
1682 #: ../../../src/SDLInputState.cpp:664
1683 msgid "Ret"
1684 msgstr ""
1685
1686 #: ../../../src/SDLInputState.cpp:666
1687 msgid "RShft"
1688 msgstr ""
1689
1690 #: ../../../src/SDLInputState.cpp:667
1691 msgid "SLock"
1692 msgstr ""
1693
1694 #: ../../../src/SDLInputState.cpp:668
1695 msgid "Spc"
1696 msgstr ""
1697
1698 #: ../../../src/SDLInputState.cpp:669 ../../../src/SDLInputState.cpp:699
1699 msgid "Tab"
1700 msgstr "Tab"
1701
1702 #: ../../../src/SDLInputState.cpp:675
13311703 msgid "Backspace"
13321704 msgstr "Backspace"
13331705
1334 #: ../../../src/SDLInputState.cpp:583
1706 #: ../../../src/SDLInputState.cpp:676
13351707 msgid "CapsLock"
13361708 msgstr "CapsLock"
13371709
1338 #: ../../../src/SDLInputState.cpp:586
1339 msgid "End"
1340 msgstr "End"
1341
1342 #: ../../../src/SDLInputState.cpp:587
1710 #: ../../../src/SDLInputState.cpp:680
13431711 msgid "Escape"
13441712 msgstr "Escape"
13451713
1346 #: ../../../src/SDLInputState.cpp:588
1347 msgid "Home"
1348 msgstr "Home"
1349
1350 #: ../../../src/SDLInputState.cpp:589
1714 #: ../../../src/SDLInputState.cpp:682
13511715 msgid "Insert"
13521716 msgstr "Insert"
13531717
1354 #: ../../../src/SDLInputState.cpp:590
1718 #: ../../../src/SDLInputState.cpp:683
13551719 msgid "Left Alt"
13561720 msgstr "Лівий Alt"
13571721
1358 #: ../../../src/SDLInputState.cpp:591
1722 #: ../../../src/SDLInputState.cpp:684
13591723 msgid "Left Ctrl"
13601724 msgstr "Лівий Ctrl"
13611725
1362 #: ../../../src/SDLInputState.cpp:593
1726 #: ../../../src/SDLInputState.cpp:686
13631727 msgid "Left Shift"
13641728 msgstr "Лівий Shift"
13651729
1366 #: ../../../src/SDLInputState.cpp:594
1730 #: ../../../src/SDLInputState.cpp:687
13671731 msgid "NumLock"
13681732 msgstr "NumLock"
13691733
1370 #: ../../../src/SDLInputState.cpp:595
1734 #: ../../../src/SDLInputState.cpp:688
13711735 msgid "PageDown"
13721736 msgstr "PageDown"
13731737
1374 #: ../../../src/SDLInputState.cpp:596
1738 #: ../../../src/SDLInputState.cpp:689
13751739 msgid "PageUp"
13761740 msgstr "PageUp"
13771741
1378 #: ../../../src/SDLInputState.cpp:597
1379 msgid "Pause"
1380 msgstr "Pause"
1381
1382 #: ../../../src/SDLInputState.cpp:598
1742 #: ../../../src/SDLInputState.cpp:691
13831743 msgid "PrintScreen"
13841744 msgstr "PrintScreen"
13851745
1386 #: ../../../src/SDLInputState.cpp:599
1746 #: ../../../src/SDLInputState.cpp:692
13871747 msgid "Right Alt"
13881748 msgstr "Правий Alt"
13891749
1390 #: ../../../src/SDLInputState.cpp:600
1750 #: ../../../src/SDLInputState.cpp:693
13911751 msgid "Right Ctrl"
13921752 msgstr "Правий Ctrl"
13931753
1394 #: ../../../src/SDLInputState.cpp:601
1754 #: ../../../src/SDLInputState.cpp:694
13951755 msgid "Return"
13961756 msgstr "Enter"
13971757
1398 #: ../../../src/SDLInputState.cpp:603
1758 #: ../../../src/SDLInputState.cpp:696
13991759 msgid "Right Shift"
14001760 msgstr "Правий Shift"
14011761
1402 #: ../../../src/SDLInputState.cpp:604
1762 #: ../../../src/SDLInputState.cpp:697
14031763 msgid "ScrollLock"
14041764 msgstr "ScrollLock"
14051765
1406 #: ../../../src/SDLInputState.cpp:605
1766 #: ../../../src/SDLInputState.cpp:698
14071767 msgid "Space"
14081768 msgstr "Пробіл"
14091769
1410 #: ../../../src/SDLInputState.cpp:606
1411 msgid "Tab"
1412 msgstr "Tab"
1413
1414 #: ../../../src/SDLInputState.cpp:620
1770 #: ../../../src/SDLInputState.cpp:712
1771 #, c-format
1772 msgid "M%d"
1773 msgstr ""
1774
1775 #: ../../../src/SDLInputState.cpp:718
14151776 #, c-format
14161777 msgid "Mouse %d"
14171778 msgstr "Мишка %d"
14181779
1419 #: ../../../src/SDLInputState.cpp:628
1780 #: ../../../src/SDLInputState.cpp:728
1781 #, c-format
1782 msgid "JX%d-"
1783 msgstr ""
1784
1785 #: ../../../src/SDLInputState.cpp:730
14201786 #, c-format
14211787 msgid "Axis %d -"
14221788 msgstr "Вісь %d -"
14231789
1424 #: ../../../src/SDLInputState.cpp:630
1790 #: ../../../src/SDLInputState.cpp:734
1791 #, c-format
1792 msgid "JX%d+"
1793 msgstr ""
1794
1795 #: ../../../src/SDLInputState.cpp:736
14251796 #, c-format
14261797 msgid "Axis %d +"
14271798 msgstr "Вісь %d +"
14281799
1429 #: ../../../src/SDLInputState.cpp:633
1800 #: ../../../src/SDLInputState.cpp:741
1801 #, c-format
1802 msgid "JB%d"
1803 msgstr ""
1804
1805 #: ../../../src/SDLInputState.cpp:743
14301806 #, c-format
14311807 msgid "Button %d"
14321808 msgstr "Кнопка %d"
14331809
1434 #: ../../../src/SDLInputState.cpp:637
1435 msgid "(none)"
1436 msgstr "(нічого)"
1437
1438 #: ../../../src/SDLInputState.cpp:677
1810 #: ../../../src/SDLInputState.cpp:789
14391811 msgid "Touch control D-Pad"
14401812 msgstr "Торкніться кнопок переміщення"
14411813
1442 #: ../../../src/SDLInputState.cpp:701
1814 #: ../../../src/SDLInputState.cpp:812
14431815 msgid "Touch control buttons"
14441816 msgstr "Торкніться кнопок керування"
14451817
1446 #: ../../../src/SDLInputState.cpp:716
1818 #: ../../../src/SDLInputState.cpp:826
14471819 msgid "Tap"
14481820 msgstr "Торкніться"
14491821
1450 #: ../../../src/SDLInputState.cpp:760 ../../../src/SDLInputState.cpp:764
1451 #: ../../../src/SDLInputState.cpp:768
1822 #: ../../../src/SDLInputState.cpp:878 ../../../src/SDLInputState.cpp:880
1823 #, c-format
1824 msgid "Can not bind: %s"
1825 msgstr "Неможливо прив'язати клавішу: %s"
1826
1827 #: ../../../src/SDLInputState.cpp:892 ../../../src/SDLInputState.cpp:896
1828 #: ../../../src/SDLInputState.cpp:900
14521829 #, c-format
14531830 msgid "'%s' is no longer bound to:"
14541831 msgstr "'%s' більше не повязаний з:"
16121989 msgid "Base MP"
16131990 msgstr "Базова Мана"
16141991
1615 #: ../../../src/Utils.cpp:346
1992 #: ../../../src/Utils.cpp:365
16161993 msgid "k"
16171994 msgstr "к"
16181995
1619 #: ../../../src/Utils.cpp:580
1996 #: ../../../src/Utils.cpp:635
16201997 #, c-format
16211998 msgid "%s second"
16221999 msgstr "%s секунда"
16232000
1624 #: ../../../src/Utils.cpp:583
2001 #: ../../../src/Utils.cpp:638
16252002 #, c-format
16262003 msgid "%s seconds"
16272004 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-07-02 13:26-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:1220
130 #: ../../../src/StatBlock.cpp:926 ../../../src/StatBlock.cpp:932
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:937
136 #: ../../../src/StatBlock.cpp:943
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:704
178 msgid "Entering game world..."
179 msgstr "Đang tiến vào thế giới trò chơi..."
180
181 #: ../../../src/GameStateLoad.cpp:707
182 msgid "Loading saved game..."
183 msgstr "Đang mở bản lưu..."
184
185 #: ../../../src/GameStateLoad.cpp:740
186 msgid "Invalid save"
187 msgstr "Bản lưu không hợp lệ"
188
189 #: ../../../src/GameStateLoad.cpp:764 ../../../src/ItemManager.cpp:745
190 #: ../../../src/MenuPowers.cpp:882 ../../../src/MenuPowers.cpp:1241
191 #: ../../../src/MenuPowers.cpp:1653
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:254
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:670
251 #: ../../../src/SDLInputState.cpp:700
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:648
257 #: ../../../src/SDLInputState.cpp:678
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:655
263 #: ../../../src/SDLInputState.cpp:685
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:665
269 #: ../../../src/SDLInputState.cpp:695
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:159
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:677
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:981
410 #, c-format
411 msgid "%d%% Speed"
412 msgstr "%d%% tốc độ"
413
414 #: ../../../src/ItemManager.cpp:650 ../../../src/MenuPowers.cpp:984
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:953
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:1228
450 #: ../../../src/MenuPowers.cpp:1231
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:1220
456 #: ../../../src/MenuPowers.cpp:1222
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:898
487 msgid "Set:"
488 msgstr "Đặt:"
489
490 #: ../../../src/ItemManager.cpp:905
491 #, c-format
492 msgid "%d items:"
493 msgstr "%d vật:"
494
495 #: ../../../src/ItemManager.cpp:920
496 #, c-format
497 msgid "Press [%s] to read"
498 msgstr "Nhấn [%s] để đọc"
499
500 #: ../../../src/ItemManager.cpp:923
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:1256
577 msgid "Clear"
578 msgstr "Xoá"
579
580 #: ../../../src/MenuConfig.cpp:122 ../../../src/MenuConfig.cpp:1254
581 msgid "Assign:"
582 msgstr "Gán với:"
583
584 #: ../../../src/MenuConfig.cpp:123 ../../../src/MenuConfig.cpp:253
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:252 ../../../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:256 ../../../src/MenuGameOver.cpp:72
597 msgid "Continue"
598 msgstr ""
599
600 #: ../../../src/MenuConfig.cpp:258
601 msgid "Save Game"
602 msgstr ""
603
604 #: ../../../src/MenuConfig.cpp:301 ../../../src/MenuConfig.cpp:352
605 msgid "Default"
606 msgstr ""
607
608 #: ../../../src/MenuConfig.cpp:301
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:302
615 msgid "Show all"
616 msgstr ""
617
618 #: ../../../src/MenuConfig.cpp:302
619 msgid ""
620 "Always show loot tooltips. Temporarily hide all loot tooltips with 'Alt'."
621 msgstr ""
622
623 #: ../../../src/MenuConfig.cpp:303 ../../../src/MenuConfig.cpp:308
624 msgid "Hidden"
625 msgstr ""
626
627 #: ../../../src/MenuConfig.cpp:303
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:306
634 msgid "Visible"
635 msgstr ""
636
637 #: ../../../src/MenuConfig.cpp:307
638 msgid "Visible (2x zoom)"
639 msgstr ""
640
641 #: ../../../src/MenuConfig.cpp:311
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:312
648 msgid "- Display a message"
649 msgstr ""
650
651 #: ../../../src/MenuConfig.cpp:313
652 msgid "- Play a sound"
653 msgstr ""
654
655 #: ../../../src/MenuConfig.cpp:314
656 msgid "- Change the cursor"
657 msgstr ""
658
659 #: ../../../src/MenuConfig.cpp:316
660 msgid "Disabled"
661 msgstr ""
662
663 #: ../../../src/MenuConfig.cpp:317
664 msgid "All"
665 msgstr ""
666
667 #: ../../../src/MenuConfig.cpp:318
668 msgid "Message & Cursor"
669 msgstr ""
670
671 #: ../../../src/MenuConfig.cpp:319
672 msgid "Message & Sound"
673 msgstr ""
674
675 #: ../../../src/MenuConfig.cpp:320
676 msgid "Sound & Cursor"
677 msgstr ""
678
679 #: ../../../src/MenuConfig.cpp:321
680 msgid "Message"
681 msgstr ""
682
683 #: ../../../src/MenuConfig.cpp:322
684 msgid "Cursor"
685 msgstr ""
686
687 #: ../../../src/MenuConfig.cpp:323
688 msgid "Sound"
689 msgstr ""
690
691 #: ../../../src/MenuConfig.cpp:329
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:347
698 msgid "The maximum frame rate that the game will be allowed to run at."
699 msgstr ""
700
701 #: ../../../src/MenuConfig.cpp:351
702 msgid ""
703 "The render size refers to the height in pixels of the surface used to draw "
704 "the game. Mods define the allowed render sizes, but this option allows "
705 "overriding the maximum size."
706 msgstr ""
707
708 #: ../../../src/MenuConfig.cpp:374 ../../../src/MenuConfig.cpp:1679
709 #: ../../../src/MenuGameOver.cpp:116
710 msgid "Exit"
711 msgstr "Thoát"
712
713 #: ../../../src/MenuConfig.cpp:375
714 msgid "Video"
715 msgstr "Đồ hoạ"
716
717 #: ../../../src/MenuConfig.cpp:376
158718 msgid "Audio"
159719 msgstr "Âm thanh"
160720
161 #: ../../../src/GameStateConfigBase.cpp:161
162 #: ../../../src/GameStateConfigDesktop.cpp:131
721 #: ../../../src/MenuConfig.cpp:377
163722 msgid "Interface"
164723 msgstr "Giao diện"
165724
166 #: ../../../src/GameStateConfigBase.cpp:162
167 #: ../../../src/GameStateConfigDesktop.cpp:134
725 #: ../../../src/MenuConfig.cpp:378
726 msgid "Input"
727 msgstr "Đầu vào"
728
729 #: ../../../src/MenuConfig.cpp:379
730 msgid "Keybindings"
731 msgstr "Phím điều khiển"
732
733 #: ../../../src/MenuConfig.cpp:380
168734 msgid "Mods"
169735 msgstr "Các bản mod"
170736
171 #: ../../../src/GameStateConfigBase.cpp:249 ../../../src/MenuExit.cpp:72
737 #: ../../../src/MenuConfig.cpp:392
738 msgid "Paused"
739 msgstr "Đang tạm dừng"
740
741 #: ../../../src/MenuConfig.cpp:395
742 msgid "Time Played"
743 msgstr ""
744
745 #: ../../../src/MenuConfig.cpp:401
746 msgid "Renderer"
747 msgstr "Thiết bị kết xuất đồ hoạ"
748
749 #: ../../../src/MenuConfig.cpp:402
750 msgid "Full Screen Mode"
751 msgstr "Toàn màn hình"
752
753 #: ../../../src/MenuConfig.cpp:403
754 msgid "Hardware surfaces"
755 msgstr "Kết xuất bề mặt bằng phần cứng"
756
757 #: ../../../src/MenuConfig.cpp:404
758 msgid "V-Sync"
759 msgstr ""
760
761 #: ../../../src/MenuConfig.cpp:405
762 msgid "Texture Filtering"
763 msgstr "Lọc kết cấu bề mặt (texture)"
764
765 #: ../../../src/MenuConfig.cpp:406
766 msgid "DPI scaling"
767 msgstr "Phóng theo DPI"
768
769 #: ../../../src/MenuConfig.cpp:407
770 msgid "Parallax Layers"
771 msgstr ""
772
773 #: ../../../src/MenuConfig.cpp:408
774 msgid "Allow changing gamma"
775 msgstr "Cho phép thay đổi gamma"
776
777 #: ../../../src/MenuConfig.cpp:409
778 msgid "Gamma"
779 msgstr ""
780
781 #: ../../../src/MenuConfig.cpp:410
782 msgid "Maximum Render Size"
783 msgstr ""
784
785 #: ../../../src/MenuConfig.cpp:411
786 msgid "Frame Limit"
787 msgstr ""
788
789 #: ../../../src/MenuConfig.cpp:413
790 msgid "Sound Volume"
791 msgstr "Âm lượng"
792
793 #: ../../../src/MenuConfig.cpp:414
172794 msgid "Music Volume"
173795 msgstr "Âm lượng nhạc"
174796
175 #: ../../../src/GameStateConfigBase.cpp:253 ../../../src/MenuExit.cpp:77
176 msgid "Sound Volume"
177 msgstr "Âm lượng"
178
179 #: ../../../src/GameStateConfigBase.cpp:257
797 #: ../../../src/MenuConfig.cpp:416
180798 msgid "Language"
181799 msgstr "Ngôn ngữ"
182800
183 #: ../../../src/GameStateConfigBase.cpp:266
801 #: ../../../src/MenuConfig.cpp:417
184802 msgid "Show FPS"
185803 msgstr "Hiển thị FPS"
186804
187 #: ../../../src/GameStateConfigBase.cpp:270
805 #: ../../../src/MenuConfig.cpp:418
806 msgid "Hardware mouse cursor"
807 msgstr "Con trỏ hệ thống"
808
809 #: ../../../src/MenuConfig.cpp:419
188810 msgid "Colorblind Mode"
189811 msgstr "Chế độ cho người mù màu"
190812
191 #: ../../../src/GameStateConfigBase.cpp:274
192 msgid "Hardware mouse cursor"
193 msgstr "Con trỏ hệ thống"
194
195 #: ../../../src/GameStateConfigBase.cpp:278
813 #: ../../../src/MenuConfig.cpp:420
196814 msgid "Developer Mode"
197815 msgstr "Chế độ cho người phát triển"
198816
199 #: ../../../src/GameStateConfigBase.cpp:282
817 #: ../../../src/MenuConfig.cpp:421
200818 msgid "Subtitles"
201819 msgstr "Phụ đề"
202820
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
821 #: ../../../src/MenuConfig.cpp:422
822 msgid "Loot tooltip visibility"
823 msgstr ""
824
825 #: ../../../src/MenuConfig.cpp:423
826 msgid "Mini-map mode"
827 msgstr ""
828
829 #: ../../../src/MenuConfig.cpp:424
830 msgid "Always show stat bar labels"
831 msgstr "Luôn hiển thị nhãn thanh thuộc tính"
832
833 #: ../../../src/MenuConfig.cpp:425
834 msgid "Allow stat bar auto-hiding"
835 msgstr ""
836
837 #: ../../../src/MenuConfig.cpp:426
838 msgid "Show combat text"
839 msgstr "Hiển thị nội dung chiến trận"
840
841 #: ../../../src/MenuConfig.cpp:427
842 msgid "Automatically equip items"
843 msgstr "Tự động trang bị đồ"
844
845 #: ../../../src/MenuConfig.cpp:428
846 msgid "Show hidden entity markers"
847 msgstr ""
848
849 #: ../../../src/MenuConfig.cpp:429
850 msgid "Low health notification"
851 msgstr ""
852
853 #: ../../../src/MenuConfig.cpp:430
854 msgid "Low health threshold"
855 msgstr ""
856
857 #: ../../../src/MenuConfig.cpp:431
858 msgid "Show item comparison tooltips"
859 msgstr ""
860
861 #: ../../../src/MenuConfig.cpp:434 ../../../src/MenuMovementType.cpp:94
862 #: ../../../src/MenuMovementType.cpp:131
863 msgid "Joystick"
864 msgstr ""
865
866 #: ../../../src/MenuConfig.cpp:435
867 msgid "Move hero using mouse"
868 msgstr "Di chuyển nhân vật bằng chuột"
869
870 #: ../../../src/MenuConfig.cpp:436
871 msgid "Mouse aim"
872 msgstr "Ngắm bằng chuột"
873
874 #: ../../../src/MenuConfig.cpp:437
875 msgid "Do not use mouse"
876 msgstr "Không sử dụng chuột"
877
878 #: ../../../src/MenuConfig.cpp:438
879 msgid "Swap mouse movement button"
880 msgstr ""
881
882 #: ../../../src/MenuConfig.cpp:439
883 msgid "Attack with mouse movement"
884 msgstr ""
885
886 #: ../../../src/MenuConfig.cpp:440
887 msgid "Joystick Deadzone"
888 msgstr "Khoảng chết của joystick"
889
890 #: ../../../src/MenuConfig.cpp:441
891 msgid "Touch Controls"
892 msgstr ""
893
894 #: ../../../src/MenuConfig.cpp:442
895 msgid "Touch Gamepad Scaling"
896 msgstr ""
897
898 #: ../../../src/MenuConfig.cpp:452
899 #, c-format
900 msgid "Primary binding: %s"
901 msgstr ""
902
903 #: ../../../src/MenuConfig.cpp:453
904 #, c-format
905 msgid "Alternate binding: %s"
906 msgstr ""
907
908 #: ../../../src/MenuConfig.cpp:454
909 #, c-format
910 msgid "Joystick binding: %s"
911 msgstr ""
912
913 #: ../../../src/MenuConfig.cpp:556
258914 msgid ""
259915 "Will try to store surfaces in video memory versus system memory. The effect "
260916 "this has on performance depends on the renderer."
262918 "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"
263919 " phụ thuộc vào thiết bị kết xuất."
264920
265 #: ../../../src/GameStateConfigDesktop.cpp:189
921 #: ../../../src/MenuConfig.cpp:557
266922 msgid ""
267923 "Prevents screen tearing. Disable if you experience \"stuttering\" in "
268924 "windowed mode or input lag."
270926 "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ổ"
271927 " bị \"lắp\"."
272928
273 #: ../../../src/GameStateConfigDesktop.cpp:190
929 #: ../../../src/MenuConfig.cpp:558
274930 msgid ""
275931 "When enabled, this uses the screen DPI in addition to the window dimensions "
276932 "to scale the rendering resolution. Otherwise, only the window dimensions are"
279935 "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ạ. "
280936 "Nếu không, chỉ sử dụng kích thước cửa sổ."
281937
282 #: ../../../src/GameStateConfigDesktop.cpp:191
938 #: ../../../src/MenuConfig.cpp:559
283939 msgid ""
284940 "This enables parallax (non-tile) layers. Disabling this setting can improve "
285941 "performance in some cases."
286942 msgstr ""
287943
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
944 #: ../../../src/MenuConfig.cpp:560
945 msgid ""
946 "Enables the below setting that controls the screen gamma level. The behavior"
947 " of the gamma setting can vary between platforms."
948 msgstr ""
949
950 #: ../../../src/MenuConfig.cpp:561
951 msgid ""
952 "Provides additional text for information that is primarily conveyed through "
953 "color."
954 msgstr ""
955
956 #: ../../../src/MenuConfig.cpp:562
957 msgid ""
958 "Some mods will automatically hide the stat bars when they are inactive. "
959 "Disabling this option will keep them displayed at all times."
960 msgstr ""
961
962 #: ../../../src/MenuConfig.cpp:563
963 msgid ""
964 "When enabled, empty equipment slots will be filled with applicable items "
965 "when they are obtained."
966 msgstr ""
967
968 #: ../../../src/MenuConfig.cpp:564
969 msgid ""
970 "Shows a marker above enemies, allies, and the player when they are obscured "
971 "by tall objects."
972 msgstr ""
973
974 #: ../../../src/MenuConfig.cpp:565
975 msgid ""
976 "When enabled, tooltips for equipped items of the same type are shown next to"
977 " standard item tooltips."
978 msgstr ""
979
980 #: ../../../src/MenuConfig.cpp:566
981 msgid ""
982 "This allows the game to be controlled entirely with the keyboard (or "
983 "joystick)."
984 msgstr ""
985
986 #: ../../../src/MenuConfig.cpp:567
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 #: ../../../src/MenuConfig.cpp:568
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 #: ../../../src/MenuConfig.cpp:569
1002 msgid ""
1003 "The player's attacks will be aimed in the direction of the mouse cursor when"
1004 " this is enabled."
1005 msgstr ""
1006
1007 #: ../../../src/MenuConfig.cpp:570
1008 msgid ""
1009 "When enabled, a virtual gamepad will be added in-game. Other interactions, "
1010 "such as drag-and-drop behavior, are also altered to better suit touch input."
1011 msgstr ""
1012
1013 #: ../../../src/MenuConfig.cpp:621
1014 msgid "Active Mods"
1015 msgstr "Bản mod đang bật"
1016
1017 #: ../../../src/MenuConfig.cpp:630
1018 msgid "Available Mods"
1019 msgstr "Bản mod còn lại"
1020
1021 #: ../../../src/MenuConfig.cpp:649
1022 msgid "<< Disable"
1023 msgstr "<< Tắt"
1024
1025 #: ../../../src/MenuConfig.cpp:655
1026 msgid "Enable >>"
1027 msgstr "Bật >>"
1028
1029 #: ../../../src/MenuConfig.cpp:1536
1030 msgid "Version:"
1031 msgstr "Phiên bản:"
1032
1033 #: ../../../src/MenuConfig.cpp:1541
1034 msgid "Game:"
1035 msgstr "Trò chơi:"
1036
1037 #: ../../../src/MenuConfig.cpp:1546
1038 msgid "Engine version:"
1039 msgstr "Phiên bản engine:"
1040
1041 #: ../../../src/MenuConfig.cpp:1554
1042 msgid "Requires mods:"
1043 msgstr "Yêu cầu bản mod:"
1044
1045 #: ../../../src/MenuConfig.cpp:1662 ../../../src/SDLInputState.cpp:750
1046 msgid "(none)"
1047 msgstr "(không)"
1048
1049 #: ../../../src/MenuConfig.cpp:1679 ../../../src/MenuGameOver.cpp:73
1050 msgid "Save & Exit"
1051 msgstr "Lưư & Thoát"
1052
1053 #: ../../../src/MenuDevConsole.cpp:65
8311054 msgid "Execute"
8321055 msgstr "Chạy"
8331056
834 #: ../../../src/MenuDevConsole.cpp:101 ../../../src/MenuDevConsole.cpp:151
1057 #: ../../../src/MenuDevConsole.cpp:103 ../../../src/MenuDevConsole.cpp:153
8351058 msgid "Developer Console"
8361059 msgstr "Bảng điều khiển cho nhà phát triển"
8371060
838 #: ../../../src/MenuDevConsole.cpp:141
1061 #: ../../../src/MenuDevConsole.cpp:143
8391062 #, c-format
8401063 msgid "Use '%s' to inspect with the cursor."
8411064 msgstr "Dùng [%s] để điều tra bằng con trỏ."
8421065
843 #: ../../../src/MenuDevConsole.cpp:146
1066 #: ../../../src/MenuDevConsole.cpp:148
8441067 msgid "Arguments with spaces should be enclosed with double quotes. Example:"
8451068 msgstr "Tham số chứa khoảng trắng nên được đặt trong ngoặc kép. Ví dụ:"
8461069
847 #: ../../../src/MenuDevConsole.cpp:147
1070 #: ../../../src/MenuDevConsole.cpp:149
8481071 msgid "Type 'help' to get a list of commands."
8491072 msgstr "Gõ 'help' để in danh sách các lệnh."
8501073
851 #: ../../../src/MenuDevConsole.cpp:209 ../../../src/MenuDevConsole.cpp:213
1074 #: ../../../src/MenuDevConsole.cpp:211 ../../../src/MenuDevConsole.cpp:215
8521075 msgid "px"
8531076 msgstr ""
8541077
855 #: ../../../src/MenuDevConsole.cpp:224
1078 #: ../../../src/MenuDevConsole.cpp:226
8561079 msgid "Distance"
8571080 msgstr "Khoảng cách"
8581081
859 #: ../../../src/MenuDevConsole.cpp:239 ../../../src/MenuDevConsole.cpp:286
1082 #: ../../../src/MenuDevConsole.cpp:241 ../../../src/MenuDevConsole.cpp:289
1083 #: ../../../src/MenuDevConsole.cpp:303
8601084 msgid "Entity"
8611085 msgstr "Thực thể"
8621086
863 #: ../../../src/MenuDevConsole.cpp:261 ../../../src/MenuDevConsole.cpp:268
1087 #: ../../../src/MenuDevConsole.cpp:263 ../../../src/MenuDevConsole.cpp:270
8641088 msgid "none"
8651089 msgstr "trống"
8661090
867 #: ../../../src/MenuDevConsole.cpp:262 ../../../src/MenuDevConsole.cpp:264
1091 #: ../../../src/MenuDevConsole.cpp:264 ../../../src/MenuDevConsole.cpp:266
8681092 msgid "wall"
8691093 msgstr "tường"
8701094
871 #: ../../../src/MenuDevConsole.cpp:263 ../../../src/MenuDevConsole.cpp:265
1095 #: ../../../src/MenuDevConsole.cpp:265 ../../../src/MenuDevConsole.cpp:267
8721096 msgid "short wall / pit"
8731097 msgstr "tường thấp / hố"
8741098
875 #: ../../../src/MenuDevConsole.cpp:266
1099 #: ../../../src/MenuDevConsole.cpp:268
8761100 msgid "entity"
8771101 msgstr "thực thể"
8781102
879 #: ../../../src/MenuDevConsole.cpp:267
1103 #: ../../../src/MenuDevConsole.cpp:269
8801104 msgid "entity, ally"
8811105 msgstr "thực thể, liên kết"
8821106
883 #: ../../../src/MenuDevConsole.cpp:274
1107 #: ../../../src/MenuDevConsole.cpp:276
8841108 msgid "Tile"
8851109 msgstr "Ô"
8861110
887 #: ../../../src/MenuDevConsole.cpp:360
1111 #: ../../../src/MenuDevConsole.cpp:377
8881112 msgid "adds a power to the action bar"
8891113 msgstr "thêm một sức mạnh vào thanh hành động"
8901114
891 #: ../../../src/MenuDevConsole.cpp:361
1115 #: ../../../src/MenuDevConsole.cpp:378
8921116 msgid "turns on/off the display of the FPS counter"
8931117 msgstr ""
8941118
895 #: ../../../src/MenuDevConsole.cpp:362
1119 #: ../../../src/MenuDevConsole.cpp:379
8961120 msgid "turns on/off all of the HUD elements"
8971121 msgstr "bật/tắt tất cả các HUD"
8981122
899 #: ../../../src/MenuDevConsole.cpp:363
1123 #: ../../../src/MenuDevConsole.cpp:380
9001124 msgid "turns on/off the developer hud"
9011125 msgstr "bật tắt HUD cho nhà phát triển"
9021126
903 #: ../../../src/MenuDevConsole.cpp:364
1127 #: ../../../src/MenuDevConsole.cpp:381
9041128 msgid ""
9051129 "Prints a list of powers that match a search term. No search term will list "
9061130 "all items"
9081132 "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 "
9091133 "kê tất cả."
9101134
911 #: ../../../src/MenuDevConsole.cpp:365
1135 #: ../../../src/MenuDevConsole.cpp:382
9121136 msgid "Prints out all the map filenames located in the \"maps/\" directory."
9131137 msgstr "In tất cả các tệp bản đồ trong thư mục \"maps\"."
9141138
915 #: ../../../src/MenuDevConsole.cpp:366
1139 #: ../../../src/MenuDevConsole.cpp:383
9161140 msgid ""
9171141 "Prints out the active campaign statuses that match a search term. No search "
9181142 "term will list all active statuses"
9201144 "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 "
9211145 "không cung cấp từ khoá, liệt kê tất cả."
9221146
923 #: ../../../src/MenuDevConsole.cpp:367
1147 #: ../../../src/MenuDevConsole.cpp:384
9241148 msgid ""
9251149 "Prints a list of items that match a search term. No search term will list "
9261150 "all items"
9281152 "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ê"
9291153 " tất cả."
9301154
931 #: ../../../src/MenuDevConsole.cpp:368
1155 #: ../../../src/MenuDevConsole.cpp:385
9321156 msgid ""
9331157 "parses a series of event components and executes them as a single event"
9341158 msgstr ""
9351159 "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 "
9361160 "nhất"
9371161
938 #: ../../../src/MenuDevConsole.cpp:369
1162 #: ../../../src/MenuDevConsole.cpp:386
9391163 msgid "clears the command history"
9401164 msgstr "xoá lịch sử lệnh"
9411165
942 #: ../../../src/MenuDevConsole.cpp:370
1166 #: ../../../src/MenuDevConsole.cpp:387
9431167 msgid "displays this text"
9441168 msgstr "hiển thị văn bản này"
9451169
946 #: ../../../src/MenuDevConsole.cpp:377
1170 #: ../../../src/MenuDevConsole.cpp:394
9471171 msgid "Toggled the developer hud"
9481172 msgstr "Đã bật/tắt HUD cho nhà phát triển"
9491173
950 #: ../../../src/MenuDevConsole.cpp:381
1174 #: ../../../src/MenuDevConsole.cpp:398
9511175 msgid "Toggled the hud"
9521176 msgstr "Đã bật/tắt HUD"
9531177
954 #: ../../../src/MenuDevConsole.cpp:385
1178 #: ../../../src/MenuDevConsole.cpp:402
9551179 msgid "Toggled the FPS counter"
9561180 msgstr ""
9571181
958 #: ../../../src/MenuDevConsole.cpp:534
1182 #: ../../../src/MenuDevConsole.cpp:552
9591183 msgid "ERROR: Incorrect number of arguments"
9601184 msgstr "LỖI: Số tham số không đúng"
9611185
962 #: ../../../src/MenuDevConsole.cpp:536 ../../../src/MenuDevConsole.cpp:564
1186 #: ../../../src/MenuDevConsole.cpp:554 ../../../src/MenuDevConsole.cpp:582
9631187 msgid "HINT:"
9641188 msgstr "GỌI Ý:"
9651189
966 #: ../../../src/MenuDevConsole.cpp:536
1190 #: ../../../src/MenuDevConsole.cpp:554
9671191 msgid "<id>"
9681192 msgstr ""
9691193
970 #: ../../../src/MenuDevConsole.cpp:552
1194 #: ../../../src/MenuDevConsole.cpp:570
9711195 #, c-format
9721196 msgid "ERROR: '%s' is not a valid event key"
9731197 msgstr "LỖI: '%s' không phải là một key sự kiện hợp lệ"
9741198
975 #: ../../../src/MenuDevConsole.cpp:562
1199 #: ../../../src/MenuDevConsole.cpp:580
9761200 msgid "ERROR: Too few arguments"
9771201 msgstr "LỖI: Quá ít tham số"
9781202
979 #: ../../../src/MenuDevConsole.cpp:564
1203 #: ../../../src/MenuDevConsole.cpp:582
9801204 msgid "<key>=<val> <key>=<val> ..."
9811205 msgstr "<key>=<giá trị> <key>=<giá trị> ..."
9821206
983 #: ../../../src/MenuDevConsole.cpp:569
1207 #: ../../../src/MenuDevConsole.cpp:587
9841208 msgid "ERROR: Unknown command"
9851209 msgstr "LỖI: Lệnh không xác định"
9861210
987 #: ../../../src/MenuDevConsole.cpp:571
1211 #: ../../../src/MenuDevConsole.cpp:589
9881212 msgid "HINT: Type help"
9891213 msgstr "GỢI Ý: Gõ 'help'"
9901214
991 #: ../../../src/MenuEnemy.cpp:138
1215 #: ../../../src/MenuEnemy.cpp:162
9921216 #, c-format
9931217 msgid "%s level %d"
9941218 msgstr "%s cấp độ %d"
9951219
996 #: ../../../src/MenuEnemy.cpp:162
1220 #: ../../../src/MenuEnemy.cpp:186
9971221 msgid "Dead"
9981222 msgstr "Đã chết"
9991223
1000 #: ../../../src/MenuEnemy.cpp:164
1224 #: ../../../src/MenuEnemy.cpp:188
10011225 msgid "Destroyed"
10021226 msgstr "Đã bị phá huỷ"
10031227
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
1228 #: ../../../src/MenuGameOver.cpp:69
1229 msgid "Game Over"
1230 msgstr ""
1231
1232 #: ../../../src/MenuInventory.cpp:178
10251233 #, c-format
10261234 msgid "Lost %d%% of %s."
10271235 msgstr "Mất %d%% %s."
10281236
1029 #: ../../../src/MenuInventory.cpp:195
1237 #: ../../../src/MenuInventory.cpp:185
10301238 #, c-format
10311239 msgid "Lost %d%% of total XP."
10321240 msgstr "Mất %d%% tổng điểm kinh nghiệm."
10331241
1034 #: ../../../src/MenuInventory.cpp:200
1242 #: ../../../src/MenuInventory.cpp:190
10351243 #, c-format
10361244 msgid "Lost %d%% of current level XP."
10371245 msgstr "Mất %d%% điểm kinh nghiệm cấp độ hiện tại."
10381246
1039 #: ../../../src/MenuInventory.cpp:226
1247 #: ../../../src/MenuInventory.cpp:216
10401248 #, c-format
10411249 msgid "Lost %s."
10421250 msgstr "Mất %s."
10431251
1044 #: ../../../src/MenuInventory.cpp:274 ../../../src/MenuStash.cpp:146
1252 #: ../../../src/MenuInventory.cpp:258 ../../../src/MenuStash.cpp:276
10451253 #, c-format
10461254 msgid "%d %s"
10471255 msgstr ""
10481256
1049 #: ../../../src/MenuInventory.cpp:317
1257 #: ../../../src/MenuInventory.cpp:301
10501258 msgid "Pick up item(s):"
10511259 msgstr "Nhặt vật:"
10521260
1053 #: ../../../src/MenuInventory.cpp:318
1261 #: ../../../src/MenuInventory.cpp:302
10541262 msgid "Use or equip item:"
10551263 msgstr "Sử dụng hoặc trang bị đồ:"
10561264
1057 #: ../../../src/MenuInventory.cpp:319
1265 #: ../../../src/MenuInventory.cpp:303
10581266 #, c-format
10591267 msgid "%s modifiers"
10601268 msgstr "Các phím chức năng kết hợp với %s:"
10611269
1062 #: ../../../src/MenuInventory.cpp:320
1270 #: ../../../src/MenuInventory.cpp:304
10631271 msgid "Select a quantity of item:"
10641272 msgstr "Chọn số lượng đồ:"
10651273
1066 #: ../../../src/MenuInventory.cpp:323
1274 #: ../../../src/MenuInventory.cpp:307
10671275 msgid "Stash item stack:"
10681276 msgstr "Cất chồng đồ:"
10691277
1070 #: ../../../src/MenuInventory.cpp:325
1278 #: ../../../src/MenuInventory.cpp:309
10711279 msgid "Sell item stack:"
10721280 msgstr "Bán chồng đồ:"
10731281
1074 #: ../../../src/MenuInventory.cpp:592
1282 #: ../../../src/MenuInventory.cpp:576
10751283 msgid "You don't have enough of the required item."
10761284 msgstr "Bạn không đủ số đồ vật yêu cầu."
10771285
1078 #: ../../../src/MenuInventory.cpp:599
1286 #: ../../../src/MenuInventory.cpp:588
10791287 msgid "You can't use this item right now."
10801288 msgstr "Bạn không thể dùng vật này bây giờ."
10811289
1082 #: ../../../src/MenuInventory.cpp:611
1290 #: ../../../src/MenuInventory.cpp:600
10831291 msgid "This item can only be used from the action bar."
10841292 msgstr "Vật này chỉ có thể được dùng ở thanh hành động."
10851293
1086 #: ../../../src/MenuInventory.cpp:729
1294 #: ../../../src/MenuInventory.cpp:718
10871295 msgid "Inventory is full."
10881296 msgstr "Hành trang đã đầy."
10891297
1090 #: ../../../src/MenuInventory.cpp:849
1298 #: ../../../src/MenuInventory.cpp:843
10911299 #, c-format
10921300 msgid "Not enough %s."
10931301 msgstr "Không đủ %s."
10941302
1095 #: ../../../src/MenuInventory.cpp:869 ../../../src/MenuInventory.cpp:876
1303 #: ../../../src/MenuInventory.cpp:863 ../../../src/MenuInventory.cpp:870
10961304 msgid "This item can not be sold."
10971305 msgstr "Không thể bán vật này."
10981306
11041312 msgid "Quests"
11051313 msgstr "Nhiệm vụ"
11061314
1107 #: ../../../src/MenuManager.cpp:286
1315 #: ../../../src/MenuManager.cpp:305
11081316 #, c-format
11091317 msgid "XP: %d/%d"
11101318 msgstr "Điểm kinh nghiệm: %d/%d"
11111319
1112 #: ../../../src/MenuManager.cpp:827
1320 #: ../../../src/MenuManager.cpp:875
11131321 msgid "This item can not be dropped."
11141322 msgstr "Không thể vứt vật này."
1323
1324 #: ../../../src/MenuManager.cpp:1501
1325 msgid "Equipped"
1326 msgstr ""
1327
1328 #: ../../../src/MenuMovementType.cpp:87
1329 msgid "Select a Movement Type"
1330 msgstr ""
1331
1332 #: ../../../src/MenuMovementType.cpp:89
1333 msgid "Can be changed later in the Configuration menu."
1334 msgstr ""
1335
1336 #: ../../../src/MenuMovementType.cpp:92 ../../../src/MenuMovementType.cpp:122
1337 msgid "Keyboard"
1338 msgstr ""
1339
1340 #: ../../../src/MenuMovementType.cpp:93 ../../../src/MenuMovementType.cpp:128
1341 msgid "Mouse"
1342 msgstr ""
1343
1344 #: ../../../src/MenuMovementType.cpp:129
1345 msgid "Button"
1346 msgstr ""
11151347
11161348 #: ../../../src/MenuNumPicker.cpp:59
11171349 msgid "Enter amount:"
11181350 msgstr "Nhập số lượng:"
11191351
1120 #: ../../../src/MenuPowers.cpp:787
1352 #: ../../../src/MenuPowers.cpp:894
11211353 msgid "Passive"
11221354 msgstr "Thụ động"
11231355
1124 #: ../../../src/MenuPowers.cpp:792
1356 #: ../../../src/MenuPowers.cpp:901
11251357 #, c-format
11261358 msgid "Costs %d MP"
11271359 msgstr "Tốn %d điểm ma pháp"
11281360
1129 #: ../../../src/MenuPowers.cpp:796
1361 #: ../../../src/MenuPowers.cpp:905
11301362 #, c-format
11311363 msgid "Costs %d HP"
11321364 msgstr "Tốn %d điểm thể chất"
11331365
1134 #: ../../../src/MenuPowers.cpp:801
1366 #: ../../../src/MenuPowers.cpp:909
11351367 msgid "Cooldown:"
11361368 msgstr "Nguội:"
11371369
1138 #: ../../../src/MenuPowers.cpp:866 ../../../src/MenuPowers.cpp:869
1370 #: ../../../src/MenuPowers.cpp:960 ../../../src/MenuPowers.cpp:963
11391371 msgid "Damage per second"
11401372 msgstr "Sát thương trên giây"
11411373
1142 #: ../../../src/MenuPowers.cpp:872 ../../../src/MenuPowers.cpp:875
1374 #: ../../../src/MenuPowers.cpp:966 ../../../src/MenuPowers.cpp:969
11431375 msgid "HP per second"
11441376 msgstr "Điểm thể chất trên giây"
11451377
1146 #: ../../../src/MenuPowers.cpp:878 ../../../src/MenuPowers.cpp:881
1378 #: ../../../src/MenuPowers.cpp:972 ../../../src/MenuPowers.cpp:975
11471379 msgid "MP per second"
11481380 msgstr "Điểm ma pháp trên giây"
11491381
1150 #: ../../../src/MenuPowers.cpp:885
1382 #: ../../../src/MenuPowers.cpp:979
11511383 msgid "Immobilize"
11521384 msgstr "Làm bất động"
11531385
1154 #: ../../../src/MenuPowers.cpp:893
1386 #: ../../../src/MenuPowers.cpp:987
11551387 msgid "Immunity"
11561388 msgstr "Đề kháng"
11571389
1158 #: ../../../src/MenuPowers.cpp:896
1390 #: ../../../src/MenuPowers.cpp:990
11591391 msgid "Immunity to damage over time"
11601392 msgstr "Kháng sát thương theo thời gian"
11611393
1162 #: ../../../src/MenuPowers.cpp:899
1394 #: ../../../src/MenuPowers.cpp:993
11631395 msgid "Immunity to slow"
11641396 msgstr "Chống bị làm chậm"
11651397
1166 #: ../../../src/MenuPowers.cpp:902
1398 #: ../../../src/MenuPowers.cpp:996
11671399 msgid "Immunity to stun"
11681400 msgstr "Chống bất động"
11691401
1170 #: ../../../src/MenuPowers.cpp:905
1402 #: ../../../src/MenuPowers.cpp:999
11711403 msgid "Immunity to HP steal"
11721404 msgstr "Chống trộm điểm thể chất"
11731405
1174 #: ../../../src/MenuPowers.cpp:908
1406 #: ../../../src/MenuPowers.cpp:1002
11751407 msgid "Immunity to MP steal"
11761408 msgstr "Chống trộm điểm ma pháp"
11771409
1178 #: ../../../src/MenuPowers.cpp:911
1410 #: ../../../src/MenuPowers.cpp:1005
11791411 msgid "Immunity to knockback"
11801412 msgstr "Chống bị đẩy lại"
11811413
1182 #: ../../../src/MenuPowers.cpp:914
1414 #: ../../../src/MenuPowers.cpp:1008
11831415 msgid "Immunity to damage reflection"
11841416 msgstr "Chống phản sát thương"
11851417
1186 #: ../../../src/MenuPowers.cpp:917
1418 #: ../../../src/MenuPowers.cpp:1014
11871419 msgid "Stun"
11881420 msgstr "Làm bất động"
11891421
1190 #: ../../../src/MenuPowers.cpp:920
1422 #: ../../../src/MenuPowers.cpp:1017
11911423 msgid "Automatic revive on death"
11921424 msgstr "Tự động hồi sinh"
11931425
1194 #: ../../../src/MenuPowers.cpp:923
1426 #: ../../../src/MenuPowers.cpp:1020
11951427 msgid "Convert"
11961428 msgstr "Biến đổi"
11971429
1198 #: ../../../src/MenuPowers.cpp:926
1430 #: ../../../src/MenuPowers.cpp:1023
11991431 msgid "Fear"
12001432 msgstr "Sợ hãi"
12011433
1202 #: ../../../src/MenuPowers.cpp:929
1434 #: ../../../src/MenuPowers.cpp:1026
12031435 msgid "Lifespan"
12041436 msgstr "Vòng đời"
12051437
1206 #: ../../../src/MenuPowers.cpp:953
1438 #: ../../../src/MenuPowers.cpp:1050
12071439 msgid "Magical Shield"
12081440 msgstr "Khiên ma thuật"
12091441
1210 #: ../../../src/MenuPowers.cpp:982
1442 #: ../../../src/MenuPowers.cpp:1079
12111443 msgid "Healing"
12121444 msgstr "Hồi sức"
12131445
1214 #: ../../../src/MenuPowers.cpp:985
1446 #: ../../../src/MenuPowers.cpp:1082
12151447 msgid "Knockback"
12161448 msgstr "Đẩy lại"
12171449
1218 #: ../../../src/MenuPowers.cpp:1010
1450 #: ../../../src/MenuPowers.cpp:1106
12191451 #, c-format
12201452 msgid "%d%% chance"
12211453 msgstr "%d%% khả năng"
12221454
1223 #: ../../../src/MenuPowers.cpp:1062
1455 #: ../../../src/MenuPowers.cpp:1158
12241456 msgid "Base Accuracy"
12251457 msgstr "Độ chính xác gốc"
12261458
1227 #: ../../../src/MenuPowers.cpp:1082
1459 #: ../../../src/MenuPowers.cpp:1178
12281460 msgid "Base Critical Chance"
12291461 msgstr "Xác suất siêu sát thương gốc"
12301462
1231 #: ../../../src/MenuPowers.cpp:1090
1463 #: ../../../src/MenuPowers.cpp:1186
12321464 msgid "Ignores Absorbtion"
12331465 msgstr "Bỏ qua hấp thụ sát thương"
12341466
1235 #: ../../../src/MenuPowers.cpp:1095
1467 #: ../../../src/MenuPowers.cpp:1191
12361468 msgid "Ignores Avoidance"
12371469 msgstr "Bỏ qua khả năng tránh đòn"
12381470
1239 #: ../../../src/MenuPowers.cpp:1100
1471 #: ../../../src/MenuPowers.cpp:1196
12401472 #, c-format
12411473 msgid "%d%% Chance to crit slowed targets"
12421474 msgstr "%d%% khả năng siêu sát thương với mục tiêu bị làm chậm"
12431475
1244 #: ../../../src/MenuPowers.cpp:1105
1476 #: ../../../src/MenuPowers.cpp:1201
12451477 #, c-format
12461478 msgid "Elemental Damage (%s)"
12471479 msgstr "Sát thương nguyên tố %s"
12481480
1249 #: ../../../src/MenuPowers.cpp:1114
1481 #: ../../../src/MenuPowers.cpp:1210
12501482 #, c-format
12511483 msgid "Requires a %s"
12521484 msgstr "Yêu cầu %s"
12531485
1254 #: ../../../src/MenuPowers.cpp:1151 ../../../src/MenuPowers.cpp:1154
1486 #: ../../../src/MenuPowers.cpp:1248 ../../../src/MenuPowers.cpp:1251
12551487 #, c-format
12561488 msgid "Requires Power: %s"
12571489 msgstr "Yêu cầu sức mạnh: %s"
12581490
1259 #: ../../../src/MenuPowers.cpp:1163
1491 #: ../../../src/MenuPowers.cpp:1260
12601492 msgid "Click to Unlock (uses 1 Skill Point)"
12611493 msgstr "Nhấn để mở khoá (dùng 1 điểm kĩ năng)"
12621494
1263 #: ../../../src/MenuPowers.cpp:1167 ../../../src/MenuPowers.cpp:1169
1495 #: ../../../src/MenuPowers.cpp:1264 ../../../src/MenuPowers.cpp:1266
12641496 msgid "Requires 1 Skill Point"
12651497 msgstr "Yêu cầu 1 điểm kĩ năng"
12661498
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
1499 #: ../../../src/MenuPowers.cpp:1466
1500 #, c-format
1501 msgid "Available skill points: %d"
1502 msgstr ""
1503
1504 #: ../../../src/MenuPowers.cpp:1498
12781505 msgid "Next Level:"
12791506 msgstr "Cấp độ tiếp:"
12801507
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
1508 #: ../../../src/MenuStash.cpp:80 ../../../src/MenuStash.cpp:161
1509 msgid "Stash"
1510 msgstr ""
1511
1512 #: ../../../src/MenuStash.cpp:174 ../../../src/MenuStash.cpp:188
1513 msgid "Private"
1514 msgstr ""
1515
1516 #: ../../../src/MenuStash.cpp:175
1517 msgid "Shared"
1518 msgstr ""
1519
1520 #: ../../../src/MenuStash.cpp:340
1521 msgid "This item can not be stored in the stash."
1522 msgstr ""
1523
1524 #: ../../../src/MenuStash.cpp:345
1525 msgid "This item can not be stored in the private stash."
1526 msgstr ""
1527
1528 #: ../../../src/MenuStash.cpp:350
1529 msgid "This item can not be stored in the shared stash."
1530 msgstr ""
1531
1532 #: ../../../src/MenuStash.cpp:360
12901533 msgid "Stash is full."
12911534 msgstr "Hòm đã đầy."
12921535
1293 #: ../../../src/MenuTalker.cpp:454
1536 #: ../../../src/MenuStash.cpp:414
1537 #, c-format
1538 msgid "Can not store item in stash: %s"
1539 msgstr ""
1540
1541 #: ../../../src/MenuTalker.cpp:448
1542 #, c-format
1543 msgid "<dialog node %d>"
1544 msgstr ""
1545
1546 #: ../../../src/MenuTalker.cpp:456
12941547 msgid "Trade"
12951548 msgstr "Trao đổi"
12961549
1297 #: ../../../src/MenuVendor.cpp:58
1550 #: ../../../src/MenuVendor.cpp:60
12981551 msgid "Buyback"
12991552 msgstr "Mua lại"
13001553
1301 #: ../../../src/MenuVendor.cpp:279
1554 #: ../../../src/MenuVendor.cpp:283
13021555 msgid "Vendor"
13031556 msgstr "Thương nhân"
13041557
1305 #: ../../../src/PowerManager.cpp:1136
1558 #: ../../../src/PowerManager.cpp:1204
13061559 #, c-format
13071560 msgid "+%d Shield"
13081561 msgstr "+%d giáp"
13091562
1310 #: ../../../src/PowerManager.cpp:1392
1563 #: ../../../src/PowerManager.cpp:1461
13111564 msgid "You are already transformed, untransform first."
13121565 msgstr "Bạn đã biến đổi rồi, phải biến về trạng thái ban đầu trước tiên."
13131566
1314 #: ../../../src/PowerManager.cpp:1404
1567 #: ../../../src/PowerManager.cpp:1473
13151568 msgid "Could not untransform at this position."
13161569 msgstr "Không thể biến về trạng thái ban đầu ở vị trí này."
13171570
13191572 msgid "Completed Quests"
13201573 msgstr "Nhiệm vụ đã hoàn thành"
13211574
1322 #: ../../../src/SaveLoad.cpp:243 ../../../src/SaveLoad.cpp:244
1575 #: ../../../src/SaveLoad.cpp:250 ../../../src/SaveLoad.cpp:251
13231576 msgid "Game saved."
13241577 msgstr "Đã lưư trò chơi."
13251578
1326 #: ../../../src/SDLInputState.cpp:582
1579 #: ../../../src/SDLInputState.cpp:645
1580 msgid "BkSp"
1581 msgstr ""
1582
1583 #: ../../../src/SDLInputState.cpp:646
1584 msgid "Caps"
1585 msgstr ""
1586
1587 #: ../../../src/SDLInputState.cpp:647
1588 msgid "Del"
1589 msgstr ""
1590
1591 #: ../../../src/SDLInputState.cpp:649 ../../../src/SDLInputState.cpp:679
1592 msgid "End"
1593 msgstr ""
1594
1595 #: ../../../src/SDLInputState.cpp:650
1596 msgid "Esc"
1597 msgstr ""
1598
1599 #: ../../../src/SDLInputState.cpp:651 ../../../src/SDLInputState.cpp:681
1600 msgid "Home"
1601 msgstr ""
1602
1603 #: ../../../src/SDLInputState.cpp:652
1604 msgid "Ins"
1605 msgstr ""
1606
1607 #: ../../../src/SDLInputState.cpp:653
1608 msgid "LAlt"
1609 msgstr ""
1610
1611 #: ../../../src/SDLInputState.cpp:654
1612 msgid "LCtrl"
1613 msgstr ""
1614
1615 #: ../../../src/SDLInputState.cpp:656
1616 msgid "LShft"
1617 msgstr ""
1618
1619 #: ../../../src/SDLInputState.cpp:657
1620 msgid "Num"
1621 msgstr ""
1622
1623 #: ../../../src/SDLInputState.cpp:658
1624 msgid "PgDn"
1625 msgstr ""
1626
1627 #: ../../../src/SDLInputState.cpp:659
1628 msgid "PgUp"
1629 msgstr ""
1630
1631 #: ../../../src/SDLInputState.cpp:660 ../../../src/SDLInputState.cpp:690
1632 msgid "Pause"
1633 msgstr ""
1634
1635 #: ../../../src/SDLInputState.cpp:661
1636 msgid "Print"
1637 msgstr ""
1638
1639 #: ../../../src/SDLInputState.cpp:662
1640 msgid "RAlt"
1641 msgstr ""
1642
1643 #: ../../../src/SDLInputState.cpp:663
1644 msgid "RCtrl"
1645 msgstr ""
1646
1647 #: ../../../src/SDLInputState.cpp:664
1648 msgid "Ret"
1649 msgstr ""
1650
1651 #: ../../../src/SDLInputState.cpp:666
1652 msgid "RShft"
1653 msgstr ""
1654
1655 #: ../../../src/SDLInputState.cpp:667
1656 msgid "SLock"
1657 msgstr ""
1658
1659 #: ../../../src/SDLInputState.cpp:668
1660 msgid "Spc"
1661 msgstr ""
1662
1663 #: ../../../src/SDLInputState.cpp:669 ../../../src/SDLInputState.cpp:699
1664 msgid "Tab"
1665 msgstr ""
1666
1667 #: ../../../src/SDLInputState.cpp:675
13271668 msgid "Backspace"
13281669 msgstr ""
13291670
1330 #: ../../../src/SDLInputState.cpp:583
1671 #: ../../../src/SDLInputState.cpp:676
13311672 msgid "CapsLock"
13321673 msgstr ""
13331674
1334 #: ../../../src/SDLInputState.cpp:586
1335 msgid "End"
1336 msgstr ""
1337
1338 #: ../../../src/SDLInputState.cpp:587
1675 #: ../../../src/SDLInputState.cpp:680
13391676 msgid "Escape"
13401677 msgstr ""
13411678
1342 #: ../../../src/SDLInputState.cpp:588
1343 msgid "Home"
1344 msgstr ""
1345
1346 #: ../../../src/SDLInputState.cpp:589
1679 #: ../../../src/SDLInputState.cpp:682
13471680 msgid "Insert"
13481681 msgstr ""
13491682
1350 #: ../../../src/SDLInputState.cpp:590
1683 #: ../../../src/SDLInputState.cpp:683
13511684 msgid "Left Alt"
13521685 msgstr "Alt trái"
13531686
1354 #: ../../../src/SDLInputState.cpp:591
1687 #: ../../../src/SDLInputState.cpp:684
13551688 msgid "Left Ctrl"
13561689 msgstr "Ctrl trái"
13571690
1358 #: ../../../src/SDLInputState.cpp:593
1691 #: ../../../src/SDLInputState.cpp:686
13591692 msgid "Left Shift"
13601693 msgstr "Shift trái"
13611694
1362 #: ../../../src/SDLInputState.cpp:594
1695 #: ../../../src/SDLInputState.cpp:687
13631696 msgid "NumLock"
13641697 msgstr ""
13651698
1366 #: ../../../src/SDLInputState.cpp:595
1699 #: ../../../src/SDLInputState.cpp:688
13671700 msgid "PageDown"
13681701 msgstr ""
13691702
1370 #: ../../../src/SDLInputState.cpp:596
1703 #: ../../../src/SDLInputState.cpp:689
13711704 msgid "PageUp"
13721705 msgstr ""
13731706
1374 #: ../../../src/SDLInputState.cpp:597
1375 msgid "Pause"
1376 msgstr ""
1377
1378 #: ../../../src/SDLInputState.cpp:598
1707 #: ../../../src/SDLInputState.cpp:691
13791708 msgid "PrintScreen"
13801709 msgstr ""
13811710
1382 #: ../../../src/SDLInputState.cpp:599
1711 #: ../../../src/SDLInputState.cpp:692
13831712 msgid "Right Alt"
13841713 msgstr "Alt phải"
13851714
1386 #: ../../../src/SDLInputState.cpp:600
1715 #: ../../../src/SDLInputState.cpp:693
13871716 msgid "Right Ctrl"
13881717 msgstr "Ctrl phải"
13891718
1390 #: ../../../src/SDLInputState.cpp:601
1719 #: ../../../src/SDLInputState.cpp:694
13911720 msgid "Return"
13921721 msgstr ""
13931722
1394 #: ../../../src/SDLInputState.cpp:603
1723 #: ../../../src/SDLInputState.cpp:696
13951724 msgid "Right Shift"
13961725 msgstr "Shift phải"
13971726
1398 #: ../../../src/SDLInputState.cpp:604
1727 #: ../../../src/SDLInputState.cpp:697
13991728 msgid "ScrollLock"
14001729 msgstr ""
14011730
1402 #: ../../../src/SDLInputState.cpp:605
1731 #: ../../../src/SDLInputState.cpp:698
14031732 msgid "Space"
14041733 msgstr ""
14051734
1406 #: ../../../src/SDLInputState.cpp:606
1407 msgid "Tab"
1408 msgstr ""
1409
1410 #: ../../../src/SDLInputState.cpp:620
1735 #: ../../../src/SDLInputState.cpp:712
1736 #, c-format
1737 msgid "M%d"
1738 msgstr ""
1739
1740 #: ../../../src/SDLInputState.cpp:718
14111741 #, c-format
14121742 msgid "Mouse %d"
14131743 msgstr "Chuột %d"
14141744
1415 #: ../../../src/SDLInputState.cpp:628
1745 #: ../../../src/SDLInputState.cpp:728
1746 #, c-format
1747 msgid "JX%d-"
1748 msgstr ""
1749
1750 #: ../../../src/SDLInputState.cpp:730
14161751 #, c-format
14171752 msgid "Axis %d -"
14181753 msgstr ""
14191754
1420 #: ../../../src/SDLInputState.cpp:630
1755 #: ../../../src/SDLInputState.cpp:734
1756 #, c-format
1757 msgid "JX%d+"
1758 msgstr ""
1759
1760 #: ../../../src/SDLInputState.cpp:736
14211761 #, c-format
14221762 msgid "Axis %d +"
14231763 msgstr ""
14241764
1425 #: ../../../src/SDLInputState.cpp:633
1765 #: ../../../src/SDLInputState.cpp:741
1766 #, c-format
1767 msgid "JB%d"
1768 msgstr ""
1769
1770 #: ../../../src/SDLInputState.cpp:743
14261771 #, c-format
14271772 msgid "Button %d"
14281773 msgstr "Nút %d"
14291774
1430 #: ../../../src/SDLInputState.cpp:637
1431 msgid "(none)"
1432 msgstr "(không)"
1433
1434 #: ../../../src/SDLInputState.cpp:677
1775 #: ../../../src/SDLInputState.cpp:789
14351776 msgid "Touch control D-Pad"
14361777 msgstr ""
14371778
1438 #: ../../../src/SDLInputState.cpp:701
1779 #: ../../../src/SDLInputState.cpp:812
14391780 msgid "Touch control buttons"
14401781 msgstr ""
14411782
1442 #: ../../../src/SDLInputState.cpp:716
1783 #: ../../../src/SDLInputState.cpp:826
14431784 msgid "Tap"
14441785 msgstr "Vỗ"
14451786
1446 #: ../../../src/SDLInputState.cpp:760 ../../../src/SDLInputState.cpp:764
1447 #: ../../../src/SDLInputState.cpp:768
1787 #: ../../../src/SDLInputState.cpp:878 ../../../src/SDLInputState.cpp:880
1788 #, c-format
1789 msgid "Can not bind: %s"
1790 msgstr ""
1791
1792 #: ../../../src/SDLInputState.cpp:892 ../../../src/SDLInputState.cpp:896
1793 #: ../../../src/SDLInputState.cpp:900
14481794 #, c-format
14491795 msgid "'%s' is no longer bound to:"
14501796 msgstr "[%s] không còn được gán với:"
16051951 msgid "Base MP"
16061952 msgstr "Ma pháp khởi điểm"
16071953
1608 #: ../../../src/Utils.cpp:346
1954 #: ../../../src/Utils.cpp:365
16091955 msgid "k"
16101956 msgstr ""
16111957
1612 #: ../../../src/Utils.cpp:580
1958 #: ../../../src/Utils.cpp:635
16131959 #, c-format
16141960 msgid "%s second"
16151961 msgstr "%s giây"
16161962
1617 #: ../../../src/Utils.cpp:583
1963 #: ../../../src/Utils.cpp:638
16181964 #, c-format
16191965 msgid "%s seconds"
16201966 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>, 2021
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-07-02 13:26-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>, 2021\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:1220
133 #: ../../../src/StatBlock.cpp:926 ../../../src/StatBlock.cpp:932
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:937
139 #: ../../../src/StatBlock.cpp:943
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:704
181 msgid "Entering game world..."
182 msgstr "进入游戏世界……"
183
184 #: ../../../src/GameStateLoad.cpp:707
185 msgid "Loading saved game..."
186 msgstr "载入游戏……"
187
188 #: ../../../src/GameStateLoad.cpp:740
189 msgid "Invalid save"
190 msgstr "保存无效"
191
192 #: ../../../src/GameStateLoad.cpp:764 ../../../src/ItemManager.cpp:745
193 #: ../../../src/MenuPowers.cpp:882 ../../../src/MenuPowers.cpp:1241
194 #: ../../../src/MenuPowers.cpp:1653
195 #, c-format
196 msgid "Level %d"
197 msgstr "等级 %d"
198
199 #: ../../../src/GameStateNew.cpp:66 ../../../src/InputState.cpp:416
200 #: ../../../src/MenuConfig.cpp:254
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:670
254 #: ../../../src/SDLInputState.cpp:700
255 msgid "Up"
256 msgstr "上"
257
258 #: ../../../src/InputState.cpp:419 ../../../src/MenuMovementType.cpp:125
259 #: ../../../src/MenuMovementType.cpp:134 ../../../src/SDLInputState.cpp:648
260 #: ../../../src/SDLInputState.cpp:678
261 msgid "Down"
262 msgstr "下"
263
264 #: ../../../src/InputState.cpp:420 ../../../src/MenuMovementType.cpp:124
265 #: ../../../src/MenuMovementType.cpp:133 ../../../src/SDLInputState.cpp:655
266 #: ../../../src/SDLInputState.cpp:685
267 msgid "Left"
268 msgstr "左"
269
270 #: ../../../src/InputState.cpp:421 ../../../src/MenuMovementType.cpp:126
271 #: ../../../src/MenuMovementType.cpp:135 ../../../src/SDLInputState.cpp:665
272 #: ../../../src/SDLInputState.cpp:695
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:159
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:677
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:981
413 #, c-format
414 msgid "%d%% Speed"
415 msgstr "%d%%速度"
416
417 #: ../../../src/ItemManager.cpp:650 ../../../src/MenuPowers.cpp:984
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:953
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:1228
453 #: ../../../src/MenuPowers.cpp:1231
454 #, c-format
455 msgid "Requires Level %d"
456 msgstr "需要等级%d"
457
458 #: ../../../src/ItemManager.cpp:836 ../../../src/MenuPowers.cpp:1220
459 #: ../../../src/MenuPowers.cpp:1222
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:898
490 msgid "Set:"
491 msgstr "设置:"
492
493 #: ../../../src/ItemManager.cpp:905
494 #, c-format
495 msgid "%d items:"
496 msgstr "%d个物品:"
497
498 #: ../../../src/ItemManager.cpp:920
499 #, c-format
500 msgid "Press [%s] to read"
501 msgstr "按[%s]阅读"
502
503 #: ../../../src/ItemManager.cpp:923
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 "可用状态点:%d"
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:1256
580 msgid "Clear"
581 msgstr "清空"
582
583 #: ../../../src/MenuConfig.cpp:122 ../../../src/MenuConfig.cpp:1254
584 msgid "Assign:"
585 msgstr "分配:"
586
587 #: ../../../src/MenuConfig.cpp:123 ../../../src/MenuConfig.cpp:253
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:252 ../../../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:256 ../../../src/MenuGameOver.cpp:72
600 msgid "Continue"
601 msgstr "继续"
602
603 #: ../../../src/MenuConfig.cpp:258
604 msgid "Save Game"
605 msgstr "保存游戏"
606
607 #: ../../../src/MenuConfig.cpp:301 ../../../src/MenuConfig.cpp:352
608 msgid "Default"
609 msgstr "默认"
610
611 #: ../../../src/MenuConfig.cpp:301
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:302
618 msgid "Show all"
619 msgstr "全部显示"
620
621 #: ../../../src/MenuConfig.cpp:302
622 msgid ""
623 "Always show loot tooltips. Temporarily hide all loot tooltips with 'Alt'."
624 msgstr "总是显示战利品提示。按‘Alt’临时隐藏全部的战利品提示。"
625
626 #: ../../../src/MenuConfig.cpp:303 ../../../src/MenuConfig.cpp:308
627 msgid "Hidden"
628 msgstr "隐藏"
629
630 #: ../../../src/MenuConfig.cpp:303
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:306
637 msgid "Visible"
638 msgstr "可见"
639
640 #: ../../../src/MenuConfig.cpp:307
641 msgid "Visible (2x zoom)"
642 msgstr "可见(两倍缩放)"
643
644 #: ../../../src/MenuConfig.cpp:311
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:312
651 msgid "- Display a message"
652 msgstr "- 显示消息"
653
654 #: ../../../src/MenuConfig.cpp:313
655 msgid "- Play a sound"
656 msgstr "- 播放声音"
657
658 #: ../../../src/MenuConfig.cpp:314
659 msgid "- Change the cursor"
660 msgstr "- 切换光标"
661
662 #: ../../../src/MenuConfig.cpp:316
663 msgid "Disabled"
664 msgstr "已禁用"
665
666 #: ../../../src/MenuConfig.cpp:317
667 msgid "All"
668 msgstr "全部"
669
670 #: ../../../src/MenuConfig.cpp:318
671 msgid "Message & Cursor"
672 msgstr "消息和光标"
673
674 #: ../../../src/MenuConfig.cpp:319
675 msgid "Message & Sound"
676 msgstr "消息和声音"
677
678 #: ../../../src/MenuConfig.cpp:320
679 msgid "Sound & Cursor"
680 msgstr "声音和光标"
681
682 #: ../../../src/MenuConfig.cpp:321
683 msgid "Message"
684 msgstr "消息"
685
686 #: ../../../src/MenuConfig.cpp:322
687 msgid "Cursor"
688 msgstr "光标"
689
690 #: ../../../src/MenuConfig.cpp:323
691 msgid "Sound"
692 msgstr "音效"
693
694 #: ../../../src/MenuConfig.cpp:329
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:347
701 msgid "The maximum frame rate that the game will be allowed to run at."
702 msgstr "游戏运行的最大帧速率。"
703
704 #: ../../../src/MenuConfig.cpp:351
705 msgid ""
706 "The render size refers to the height in pixels of the surface used to draw "
707 "the game. Mods define the allowed render sizes, but this option allows "
708 "overriding the maximum size."
709 msgstr "指游戏界面高度的像素值。"
710
711 #: ../../../src/MenuConfig.cpp:374 ../../../src/MenuConfig.cpp:1679
712 #: ../../../src/MenuGameOver.cpp:116
713 msgid "Exit"
714 msgstr "退出"
715
716 #: ../../../src/MenuConfig.cpp:375
717 msgid "Video"
718 msgstr "画面"
719
720 #: ../../../src/MenuConfig.cpp:376
157721 msgid "Audio"
158722 msgstr "声音"
159723
160 #: ../../../src/GameStateConfigBase.cpp:161
161 #: ../../../src/GameStateConfigDesktop.cpp:131
724 #: ../../../src/MenuConfig.cpp:377
162725 msgid "Interface"
163726 msgstr "界面"
164727
165 #: ../../../src/GameStateConfigBase.cpp:162
166 #: ../../../src/GameStateConfigDesktop.cpp:134
728 #: ../../../src/MenuConfig.cpp:378
729 msgid "Input"
730 msgstr "输入"
731
732 #: ../../../src/MenuConfig.cpp:379
733 msgid "Keybindings"
734 msgstr "快捷键"
735
736 #: ../../../src/MenuConfig.cpp:380
167737 msgid "Mods"
168738 msgstr "模块"
169739
170 #: ../../../src/GameStateConfigBase.cpp:249 ../../../src/MenuExit.cpp:72
740 #: ../../../src/MenuConfig.cpp:392
741 msgid "Paused"
742 msgstr "暂停"
743
744 #: ../../../src/MenuConfig.cpp:395
745 msgid "Time Played"
746 msgstr "已玩时间"
747
748 #: ../../../src/MenuConfig.cpp:401
749 msgid "Renderer"
750 msgstr "渲染器"
751
752 #: ../../../src/MenuConfig.cpp:402
753 msgid "Full Screen Mode"
754 msgstr "全屏模式"
755
756 #: ../../../src/MenuConfig.cpp:403
757 msgid "Hardware surfaces"
758 msgstr "硬件加速"
759
760 #: ../../../src/MenuConfig.cpp:404
761 msgid "V-Sync"
762 msgstr "垂直同步"
763
764 #: ../../../src/MenuConfig.cpp:405
765 msgid "Texture Filtering"
766 msgstr "纹理过滤"
767
768 #: ../../../src/MenuConfig.cpp:406
769 msgid "DPI scaling"
770 msgstr "DPI缩放"
771
772 #: ../../../src/MenuConfig.cpp:407
773 msgid "Parallax Layers"
774 msgstr "视差层"
775
776 #: ../../../src/MenuConfig.cpp:408
777 msgid "Allow changing gamma"
778 msgstr "允许更改伽马"
779
780 #: ../../../src/MenuConfig.cpp:409
781 msgid "Gamma"
782 msgstr "伽马"
783
784 #: ../../../src/MenuConfig.cpp:410
785 msgid "Maximum Render Size"
786 msgstr "最大渲染尺寸"
787
788 #: ../../../src/MenuConfig.cpp:411
789 msgid "Frame Limit"
790 msgstr "帧数限制"
791
792 #: ../../../src/MenuConfig.cpp:413
793 msgid "Sound Volume"
794 msgstr "游戏音乐音量"
795
796 #: ../../../src/MenuConfig.cpp:414
171797 msgid "Music Volume"
172798 msgstr "背景音乐音量"
173799
174 #: ../../../src/GameStateConfigBase.cpp:253 ../../../src/MenuExit.cpp:77
175 msgid "Sound Volume"
176 msgstr "游戏音乐音量"
177
178 #: ../../../src/GameStateConfigBase.cpp:257
800 #: ../../../src/MenuConfig.cpp:416
179801 msgid "Language"
180802 msgstr "语言"
181803
182 #: ../../../src/GameStateConfigBase.cpp:266
804 #: ../../../src/MenuConfig.cpp:417
183805 msgid "Show FPS"
184806 msgstr "显示画面每秒帧数"
185807
186 #: ../../../src/GameStateConfigBase.cpp:270
808 #: ../../../src/MenuConfig.cpp:418
809 msgid "Hardware mouse cursor"
810 msgstr "硬件光标"
811
812 #: ../../../src/MenuConfig.cpp:419
187813 msgid "Colorblind Mode"
188814 msgstr "色盲模式"
189815
190 #: ../../../src/GameStateConfigBase.cpp:274
191 msgid "Hardware mouse cursor"
192 msgstr "硬件鼠标光标"
193
194 #: ../../../src/GameStateConfigBase.cpp:278
816 #: ../../../src/MenuConfig.cpp:420
195817 msgid "Developer Mode"
196818 msgstr "开发者模式"
197819
198 #: ../../../src/GameStateConfigBase.cpp:282
820 #: ../../../src/MenuConfig.cpp:421
199821 msgid "Subtitles"
200822 msgstr "字幕"
201823
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
824 #: ../../../src/MenuConfig.cpp:422
825 msgid "Loot tooltip visibility"
826 msgstr "战利品提示可见性"
827
828 #: ../../../src/MenuConfig.cpp:423
829 msgid "Mini-map mode"
830 msgstr "小地图模式"
831
832 #: ../../../src/MenuConfig.cpp:424
833 msgid "Always show stat bar labels"
834 msgstr "始终显示进度条标签"
835
836 #: ../../../src/MenuConfig.cpp:425
837 msgid "Allow stat bar auto-hiding"
838 msgstr "允许状态栏自动隐藏"
839
840 #: ../../../src/MenuConfig.cpp:426
841 msgid "Show combat text"
842 msgstr "显示战斗文字"
843
844 #: ../../../src/MenuConfig.cpp:427
845 msgid "Automatically equip items"
846 msgstr "自动装备物品"
847
848 #: ../../../src/MenuConfig.cpp:428
849 msgid "Show hidden entity markers"
850 msgstr "显示隐藏的敌人标记"
851
852 #: ../../../src/MenuConfig.cpp:429
853 msgid "Low health notification"
854 msgstr "低生命通知"
855
856 #: ../../../src/MenuConfig.cpp:430
857 msgid "Low health threshold"
858 msgstr "低生命阈值"
859
860 #: ../../../src/MenuConfig.cpp:431
861 msgid "Show item comparison tooltips"
862 msgstr "显示物品比较工具栏"
863
864 #: ../../../src/MenuConfig.cpp:434 ../../../src/MenuMovementType.cpp:94
865 #: ../../../src/MenuMovementType.cpp:131
866 msgid "Joystick"
867 msgstr "摇杆"
868
869 #: ../../../src/MenuConfig.cpp:435
870 msgid "Move hero using mouse"
871 msgstr "使用鼠标移动英雄"
872
873 #: ../../../src/MenuConfig.cpp:436
874 msgid "Mouse aim"
875 msgstr "使用鼠标瞄准敌人"
876
877 #: ../../../src/MenuConfig.cpp:437
878 msgid "Do not use mouse"
879 msgstr "不要使用鼠标"
880
881 #: ../../../src/MenuConfig.cpp:438
882 msgid "Swap mouse movement button"
883 msgstr "交换鼠标移动键"
884
885 #: ../../../src/MenuConfig.cpp:439
886 msgid "Attack with mouse movement"
887 msgstr "用鼠标移动键攻击"
888
889 #: ../../../src/MenuConfig.cpp:440
890 msgid "Joystick Deadzone"
891 msgstr "摇杆灵敏度"
892
893 #: ../../../src/MenuConfig.cpp:441
894 msgid "Touch Controls"
895 msgstr "触摸控制"
896
897 #: ../../../src/MenuConfig.cpp:442
898 msgid "Touch Gamepad Scaling"
899 msgstr "触摸按钮尺寸"
900
901 #: ../../../src/MenuConfig.cpp:452
902 #, c-format
903 msgid "Primary binding: %s"
904 msgstr "主要键位:%s"
905
906 #: ../../../src/MenuConfig.cpp:453
907 #, c-format
908 msgid "Alternate binding: %s"
909 msgstr "备用键位:%s"
910
911 #: ../../../src/MenuConfig.cpp:454
912 #, c-format
913 msgid "Joystick binding: %s"
914 msgstr "摇杆键位:%s"
915
916 #: ../../../src/MenuConfig.cpp:556
257917 msgid ""
258918 "Will try to store surfaces in video memory versus system memory. The effect "
259919 "this has on performance depends on the renderer."
260 msgstr "将尝试在视频内存中存储表面与系统内存。 这对性能的影响取决于渲染器。"
261
262 #: ../../../src/GameStateConfigDesktop.cpp:189
920 msgstr "将尝试在视频内存中存储表面而不是系统内存。这对性能的影响取决于渲染器。"
921
922 #: ../../../src/MenuConfig.cpp:557
263923 msgid ""
264924 "Prevents screen tearing. Disable if you experience \"stuttering\" in "
265925 "windowed mode or input lag."
266 msgstr "防止画面撕裂。 如果在窗口模式或输入时卡顿则禁用。"
267
268 #: ../../../src/GameStateConfigDesktop.cpp:190
926 msgstr "防止画面撕裂。如果在窗口模式或输入时“卡顿”则禁用。"
927
928 #: ../../../src/MenuConfig.cpp:558
269929 msgid ""
270930 "When enabled, this uses the screen DPI in addition to the window dimensions "
271931 "to scale the rendering resolution. Otherwise, only the window dimensions are"
272932 " used."
273 msgstr "启用后,除了窗口尺寸外,还会使用屏幕DPI来调整渲染分辨率。 否则,只使用窗口尺寸。"
274
275 #: ../../../src/GameStateConfigDesktop.cpp:191
933 msgstr "启用后,除了窗口尺寸外,还会使用屏幕DPI来调整渲染分辨率。否则,只使用窗口尺寸。"
934
935 #: ../../../src/MenuConfig.cpp:559
276936 msgid ""
277937 "This enables parallax (non-tile) layers. Disabling this setting can improve "
278938 "performance in some cases."
279 msgstr ""
280
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
939 msgstr "启用视差(非瓦片)层。 禁用此设置在一些情况下能提升性能。"
940
941 #: ../../../src/MenuConfig.cpp:560
942 msgid ""
943 "Enables the below setting that controls the screen gamma level. The behavior"
944 " of the gamma setting can vary between platforms."
945 msgstr "启用以下设置来控制屏幕伽马级别。这个伽马设置的行为依平台而异。"
946
947 #: ../../../src/MenuConfig.cpp:561
948 msgid ""
949 "Provides additional text for information that is primarily conveyed through "
950 "color."
951 msgstr "提供从颜色传递的额外的文字信息。"
952
953 #: ../../../src/MenuConfig.cpp:562
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
959 #: ../../../src/MenuConfig.cpp:563
960 msgid ""
961 "When enabled, empty equipment slots will be filled with applicable items "
962 "when they are obtained."
963 msgstr "当开启时,获取适当的物品的时候空的装备栏将被填充。"
964
965 #: ../../../src/MenuConfig.cpp:564
966 msgid ""
967 "Shows a marker above enemies, allies, and the player when they are obscured "
968 "by tall objects."
969 msgstr "敌人、友军和玩家被高的物体遮蔽时在上面显示标记。"
970
971 #: ../../../src/MenuConfig.cpp:565
972 msgid ""
973 "When enabled, tooltips for equipped items of the same type are shown next to"
974 " standard item tooltips."
975 msgstr "开启后,同种装备的工具栏将在起始工具栏旁显示。"
976
977 #: ../../../src/MenuConfig.cpp:566
978 msgid ""
979 "This allows the game to be controlled entirely with the keyboard (or "
980 "joystick)."
981 msgstr "允许游戏完全被键盘(或摇杆)控制。"
982
983 #: ../../../src/MenuConfig.cpp:567
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 "当开启‘使用鼠标移动英雄’时,这设置使用‘主按键1’还是‘主按键2’来移动英雄。开启时,使用‘主按键2’来移动英雄而不是‘主按键1’。"
989
990 #: ../../../src/MenuConfig.cpp:568
991 msgid ""
992 "When 'Move hero using mouse' is enabled, this setting controls if the Power "
993 "assigned to the movement button can be used by targeting an enemy. If this "
994 "setting is disabled, it is required to use 'Shift' to access the Power "
995 "assigned to the movement button."
996 msgstr "当开启‘使用鼠标移动英雄’时,这设置分配到移动键的技能是否能向敌人使用。如果这个设置被禁用,需要使用‘Shift’访问分配到移动键的技能。"
997
998 #: ../../../src/MenuConfig.cpp:569
999 msgid ""
1000 "The player's attacks will be aimed in the direction of the mouse cursor when"
1001 " this is enabled."
1002 msgstr "开启后玩家的攻击将指向光标。"
1003
1004 #: ../../../src/MenuConfig.cpp:570
1005 msgid ""
1006 "When enabled, a virtual gamepad will be added in-game. Other interactions, "
1007 "such as drag-and-drop behavior, are also altered to better suit touch input."
1008 msgstr "开启后,游戏中将会增加触摸按钮。其他如拖拽的操作,也将改变以适配触摸控制。"
1009
1010 #: ../../../src/MenuConfig.cpp:621
1011 msgid "Active Mods"
1012 msgstr "激活模块"
1013
1014 #: ../../../src/MenuConfig.cpp:630
1015 msgid "Available Mods"
1016 msgstr "可用模块"
1017
1018 #: ../../../src/MenuConfig.cpp:649
1019 msgid "<< Disable"
1020 msgstr "<< 禁用"
1021
1022 #: ../../../src/MenuConfig.cpp:655
1023 msgid "Enable >>"
1024 msgstr "启用 >>"
1025
1026 #: ../../../src/MenuConfig.cpp:1536
1027 msgid "Version:"
1028 msgstr "版本号:"
1029
1030 #: ../../../src/MenuConfig.cpp:1541
1031 msgid "Game:"
1032 msgstr "游戏:"
1033
1034 #: ../../../src/MenuConfig.cpp:1546
1035 msgid "Engine version:"
1036 msgstr "引擎版本号:"
1037
1038 #: ../../../src/MenuConfig.cpp:1554
1039 msgid "Requires mods:"
1040 msgstr "需要的模块:"
1041
1042 #: ../../../src/MenuConfig.cpp:1662 ../../../src/SDLInputState.cpp:750
1043 msgid "(none)"
1044 msgstr "(无)"
1045
1046 #: ../../../src/MenuConfig.cpp:1679 ../../../src/MenuGameOver.cpp:73
1047 msgid "Save & Exit"
1048 msgstr "保存并退出"
1049
1050 #: ../../../src/MenuDevConsole.cpp:65
8241051 msgid "Execute"
825 msgstr ""
826
827 #: ../../../src/MenuDevConsole.cpp:101 ../../../src/MenuDevConsole.cpp:151
1052 msgstr "执行"
1053
1054 #: ../../../src/MenuDevConsole.cpp:103 ../../../src/MenuDevConsole.cpp:153
8281055 msgid "Developer Console"
829 msgstr ""
830
831 #: ../../../src/MenuDevConsole.cpp:141
1056 msgstr "开发者控制台"
1057
1058 #: ../../../src/MenuDevConsole.cpp:143
8321059 #, c-format
8331060 msgid "Use '%s' to inspect with the cursor."
834 msgstr ""
835
836 #: ../../../src/MenuDevConsole.cpp:146
1061 msgstr "使用‘%s’使用光标检视"
1062
1063 #: ../../../src/MenuDevConsole.cpp:148
8371064 msgid "Arguments with spaces should be enclosed with double quotes. Example:"
838 msgstr ""
839
840 #: ../../../src/MenuDevConsole.cpp:147
1065 msgstr "参数中的空格需要以双引号包围。比如:"
1066
1067 #: ../../../src/MenuDevConsole.cpp:149
8411068 msgid "Type 'help' to get a list of commands."
842 msgstr ""
843
844 #: ../../../src/MenuDevConsole.cpp:209 ../../../src/MenuDevConsole.cpp:213
1069 msgstr "输入‘help’获取命令列表。"
1070
1071 #: ../../../src/MenuDevConsole.cpp:211 ../../../src/MenuDevConsole.cpp:215
8451072 msgid "px"
846 msgstr ""
847
848 #: ../../../src/MenuDevConsole.cpp:224
1073 msgstr "像素"
1074
1075 #: ../../../src/MenuDevConsole.cpp:226
8491076 msgid "Distance"
850 msgstr ""
851
852 #: ../../../src/MenuDevConsole.cpp:239 ../../../src/MenuDevConsole.cpp:286
1077 msgstr "距离"
1078
1079 #: ../../../src/MenuDevConsole.cpp:241 ../../../src/MenuDevConsole.cpp:289
1080 #: ../../../src/MenuDevConsole.cpp:303
8531081 msgid "Entity"
854 msgstr ""
855
856 #: ../../../src/MenuDevConsole.cpp:261 ../../../src/MenuDevConsole.cpp:268
1082 msgstr "实体"
1083
1084 #: ../../../src/MenuDevConsole.cpp:263 ../../../src/MenuDevConsole.cpp:270
8571085 msgid "none"
858 msgstr ""
859
860 #: ../../../src/MenuDevConsole.cpp:262 ../../../src/MenuDevConsole.cpp:264
1086 msgstr "无"
1087
1088 #: ../../../src/MenuDevConsole.cpp:264 ../../../src/MenuDevConsole.cpp:266
8611089 msgid "wall"
862 msgstr ""
863
864 #: ../../../src/MenuDevConsole.cpp:263 ../../../src/MenuDevConsole.cpp:265
1090 msgstr "墙"
1091
1092 #: ../../../src/MenuDevConsole.cpp:265 ../../../src/MenuDevConsole.cpp:267
8651093 msgid "short wall / pit"
866 msgstr ""
867
868 #: ../../../src/MenuDevConsole.cpp:266
1094 msgstr "矮墙/坑洞"
1095
1096 #: ../../../src/MenuDevConsole.cpp:268
8691097 msgid "entity"
870 msgstr ""
871
872 #: ../../../src/MenuDevConsole.cpp:267
1098 msgstr "敌人"
1099
1100 #: ../../../src/MenuDevConsole.cpp:269
8731101 msgid "entity, ally"
874 msgstr ""
875
876 #: ../../../src/MenuDevConsole.cpp:274
1102 msgstr "敌人,友军"
1103
1104 #: ../../../src/MenuDevConsole.cpp:276
8771105 msgid "Tile"
878 msgstr ""
879
880 #: ../../../src/MenuDevConsole.cpp:360
1106 msgstr "瓦片"
1107
1108 #: ../../../src/MenuDevConsole.cpp:377
8811109 msgid "adds a power to the action bar"
882 msgstr ""
883
884 #: ../../../src/MenuDevConsole.cpp:361
1110 msgstr "向动作槽添加一个技能"
1111
1112 #: ../../../src/MenuDevConsole.cpp:378
8851113 msgid "turns on/off the display of the FPS counter"
886 msgstr ""
887
888 #: ../../../src/MenuDevConsole.cpp:362
1114 msgstr "打开/关闭FPS计数器的显示"
1115
1116 #: ../../../src/MenuDevConsole.cpp:379
8891117 msgid "turns on/off all of the HUD elements"
890 msgstr ""
891
892 #: ../../../src/MenuDevConsole.cpp:363
1118 msgstr "打开/关闭全部HUD元素"
1119
1120 #: ../../../src/MenuDevConsole.cpp:380
8931121 msgid "turns on/off the developer hud"
894 msgstr ""
895
896 #: ../../../src/MenuDevConsole.cpp:364
1122 msgstr "打开/关闭开发者HUD"
1123
1124 #: ../../../src/MenuDevConsole.cpp:381
8971125 msgid ""
8981126 "Prints a list of powers that match a search term. No search term will list "
8991127 "all items"
900 msgstr ""
901
902 #: ../../../src/MenuDevConsole.cpp:365
1128 msgstr "输出匹配搜索词的技能列表。没有搜索词将会列出所有对象"
1129
1130 #: ../../../src/MenuDevConsole.cpp:382
9031131 msgid "Prints out all the map filenames located in the \"maps/\" directory."
904 msgstr ""
905
906 #: ../../../src/MenuDevConsole.cpp:366
1132 msgstr "输出“maps/”文件夹里所有地图的文件名。"
1133
1134 #: ../../../src/MenuDevConsole.cpp:383
9071135 msgid ""
9081136 "Prints out the active campaign statuses that match a search term. No search "
9091137 "term will list all active statuses"
910 msgstr ""
911
912 #: ../../../src/MenuDevConsole.cpp:367
1138 msgstr "输出匹配搜索词的活动战役状态。没有搜索词将会列出所有活动状态"
1139
1140 #: ../../../src/MenuDevConsole.cpp:384
9131141 msgid ""
9141142 "Prints a list of items that match a search term. No search term will list "
9151143 "all items"
916 msgstr ""
917
918 #: ../../../src/MenuDevConsole.cpp:368
1144 msgstr "输出匹配搜索词的物品。没有搜索词将会列出所有物品"
1145
1146 #: ../../../src/MenuDevConsole.cpp:385
9191147 msgid ""
9201148 "parses a series of event components and executes them as a single event"
921 msgstr ""
922
923 #: ../../../src/MenuDevConsole.cpp:369
1149 msgstr "解析一串事件元素并且像一个事件一样执行它们"
1150
1151 #: ../../../src/MenuDevConsole.cpp:386
9241152 msgid "clears the command history"
925 msgstr ""
926
927 #: ../../../src/MenuDevConsole.cpp:370
1153 msgstr "清除命令历史"
1154
1155 #: ../../../src/MenuDevConsole.cpp:387
9281156 msgid "displays this text"
929 msgstr ""
930
931 #: ../../../src/MenuDevConsole.cpp:377
1157 msgstr "显示这个文字"
1158
1159 #: ../../../src/MenuDevConsole.cpp:394
9321160 msgid "Toggled the developer hud"
933 msgstr ""
934
935 #: ../../../src/MenuDevConsole.cpp:381
1161 msgstr "切换开发者HUD"
1162
1163 #: ../../../src/MenuDevConsole.cpp:398
9361164 msgid "Toggled the hud"
937 msgstr ""
938
939 #: ../../../src/MenuDevConsole.cpp:385
1165 msgstr "切换HUD"
1166
1167 #: ../../../src/MenuDevConsole.cpp:402
9401168 msgid "Toggled the FPS counter"
941 msgstr ""
942
943 #: ../../../src/MenuDevConsole.cpp:534
1169 msgstr "切换FPS计数器"
1170
1171 #: ../../../src/MenuDevConsole.cpp:552
9441172 msgid "ERROR: Incorrect number of arguments"
945 msgstr ""
946
947 #: ../../../src/MenuDevConsole.cpp:536 ../../../src/MenuDevConsole.cpp:564
1173 msgstr "错误:参数个数错误"
1174
1175 #: ../../../src/MenuDevConsole.cpp:554 ../../../src/MenuDevConsole.cpp:582
9481176 msgid "HINT:"
949 msgstr ""
950
951 #: ../../../src/MenuDevConsole.cpp:536
1177 msgstr "提示:"
1178
1179 #: ../../../src/MenuDevConsole.cpp:554
9521180 msgid "<id>"
953 msgstr ""
954
955 #: ../../../src/MenuDevConsole.cpp:552
1181 msgstr "<id>"
1182
1183 #: ../../../src/MenuDevConsole.cpp:570
9561184 #, c-format
9571185 msgid "ERROR: '%s' is not a valid event key"
958 msgstr ""
959
960 #: ../../../src/MenuDevConsole.cpp:562
1186 msgstr "错误:'%s'是非法事件代码"
1187
1188 #: ../../../src/MenuDevConsole.cpp:580
9611189 msgid "ERROR: Too few arguments"
962 msgstr ""
963
964 #: ../../../src/MenuDevConsole.cpp:564
1190 msgstr "错误:参数太少"
1191
1192 #: ../../../src/MenuDevConsole.cpp:582
9651193 msgid "<key>=<val> <key>=<val> ..."
966 msgstr ""
967
968 #: ../../../src/MenuDevConsole.cpp:569
1194 msgstr "<key>=<val> <key>=<val> ..."
1195
1196 #: ../../../src/MenuDevConsole.cpp:587
9691197 msgid "ERROR: Unknown command"
970 msgstr ""
971
972 #: ../../../src/MenuDevConsole.cpp:571
1198 msgstr "错误:未知命令"
1199
1200 #: ../../../src/MenuDevConsole.cpp:589
9731201 msgid "HINT: Type help"
974 msgstr ""
975
976 #: ../../../src/MenuEnemy.cpp:138
1202 msgstr "提示:类型帮助"
1203
1204 #: ../../../src/MenuEnemy.cpp:162
9771205 #, c-format
9781206 msgid "%s level %d"
979 msgstr "%s 级别 %d"
980
981 #: ../../../src/MenuEnemy.cpp:162
1207 msgstr "%s 等级%d"
1208
1209 #: ../../../src/MenuEnemy.cpp:186
9821210 msgid "Dead"
9831211 msgstr "死亡"
9841212
985 #: ../../../src/MenuEnemy.cpp:164
1213 #: ../../../src/MenuEnemy.cpp:188
9861214 msgid "Destroyed"
987 msgstr ""
988
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
1215 msgstr "摧毁"
1216
1217 #: ../../../src/MenuGameOver.cpp:69
1218 msgid "Game Over"
1219 msgstr "游戏结束"
1220
1221 #: ../../../src/MenuInventory.cpp:178
10101222 #, c-format
10111223 msgid "Lost %d%% of %s."
1012 msgstr ""
1013
1014 #: ../../../src/MenuInventory.cpp:195
1224 msgstr "失去%d%%的%s。"
1225
1226 #: ../../../src/MenuInventory.cpp:185
10151227 #, c-format
10161228 msgid "Lost %d%% of total XP."
1017 msgstr ""
1018
1019 #: ../../../src/MenuInventory.cpp:200
1229 msgstr "失去%d%%总XP。"
1230
1231 #: ../../../src/MenuInventory.cpp:190
10201232 #, c-format
10211233 msgid "Lost %d%% of current level XP."
1022 msgstr ""
1023
1024 #: ../../../src/MenuInventory.cpp:226
1234 msgstr "失去%d%%当前等级的XP。"
1235
1236 #: ../../../src/MenuInventory.cpp:216
10251237 #, c-format
10261238 msgid "Lost %s."
1027 msgstr ""
1028
1029 #: ../../../src/MenuInventory.cpp:274 ../../../src/MenuStash.cpp:146
1239 msgstr "失去%s。"
1240
1241 #: ../../../src/MenuInventory.cpp:258 ../../../src/MenuStash.cpp:276
10301242 #, c-format
10311243 msgid "%d %s"
1032 msgstr "%d %s"
1033
1034 #: ../../../src/MenuInventory.cpp:317
1244 msgstr "%d个%s"
1245
1246 #: ../../../src/MenuInventory.cpp:301
10351247 msgid "Pick up item(s):"
1036 msgstr ""
1037
1038 #: ../../../src/MenuInventory.cpp:318
1248 msgstr "捡起物品:"
1249
1250 #: ../../../src/MenuInventory.cpp:302
10391251 msgid "Use or equip item:"
1040 msgstr ""
1041
1042 #: ../../../src/MenuInventory.cpp:319
1252 msgstr "使用或装备物品:"
1253
1254 #: ../../../src/MenuInventory.cpp:303
10431255 #, c-format
10441256 msgid "%s modifiers"
1045 msgstr ""
1046
1047 #: ../../../src/MenuInventory.cpp:320
1257 msgstr "来调整"
1258
1259 #: ../../../src/MenuInventory.cpp:304
10481260 msgid "Select a quantity of item:"
1049 msgstr ""
1050
1051 #: ../../../src/MenuInventory.cpp:323
1261 msgstr "选择物品的数量:"
1262
1263 #: ../../../src/MenuInventory.cpp:307
10521264 msgid "Stash item stack:"
1053 msgstr ""
1054
1055 #: ../../../src/MenuInventory.cpp:325
1265 msgstr "储物物品的栈:"
1266
1267 #: ../../../src/MenuInventory.cpp:309
10561268 msgid "Sell item stack:"
1057 msgstr ""
1058
1059 #: ../../../src/MenuInventory.cpp:592
1269 msgstr "卖出物品的栈:"
1270
1271 #: ../../../src/MenuInventory.cpp:576
10601272 msgid "You don't have enough of the required item."
1061 msgstr ""
1062
1063 #: ../../../src/MenuInventory.cpp:599
1273 msgstr "你没有足够的需要的物品。"
1274
1275 #: ../../../src/MenuInventory.cpp:588
10641276 msgid "You can't use this item right now."
1065 msgstr ""
1066
1067 #: ../../../src/MenuInventory.cpp:611
1277 msgstr "你无法立刻使用这个物品。"
1278
1279 #: ../../../src/MenuInventory.cpp:600
10681280 msgid "This item can only be used from the action bar."
1069 msgstr "此物品只能从动作槽使用"
1070
1071 #: ../../../src/MenuInventory.cpp:729
1281 msgstr "此物品只能从动作槽使用。"
1282
1283 #: ../../../src/MenuInventory.cpp:718
10721284 msgid "Inventory is full."
1073 msgstr "背包已满"
1074
1075 #: ../../../src/MenuInventory.cpp:849
1285 msgstr "背包已满。"
1286
1287 #: ../../../src/MenuInventory.cpp:843
10761288 #, c-format
10771289 msgid "Not enough %s."
1078 msgstr ""
1079
1080 #: ../../../src/MenuInventory.cpp:869 ../../../src/MenuInventory.cpp:876
1290 msgstr "%s不足。"
1291
1292 #: ../../../src/MenuInventory.cpp:863 ../../../src/MenuInventory.cpp:870
10811293 msgid "This item can not be sold."
1082 msgstr ""
1294 msgstr "这个物品无法卖出。"
10831295
10841296 #: ../../../src/MenuLog.cpp:91
10851297 msgid "Notes"
10891301 msgid "Quests"
10901302 msgstr "任务"
10911303
1092 #: ../../../src/MenuManager.cpp:286
1304 #: ../../../src/MenuManager.cpp:305
10931305 #, c-format
10941306 msgid "XP: %d/%d"
1095 msgstr "经验值: %d/%d"
1096
1097 #: ../../../src/MenuManager.cpp:827
1307 msgstr "经验值:%d/%d"
1308
1309 #: ../../../src/MenuManager.cpp:875
10981310 msgid "This item can not be dropped."
1099 msgstr ""
1311 msgstr "这个物品无法丢弃。"
1312
1313 #: ../../../src/MenuManager.cpp:1501
1314 msgid "Equipped"
1315 msgstr "已装备"
1316
1317 #: ../../../src/MenuMovementType.cpp:87
1318 msgid "Select a Movement Type"
1319 msgstr "选择移动方式"
1320
1321 #: ../../../src/MenuMovementType.cpp:89
1322 msgid "Can be changed later in the Configuration menu."
1323 msgstr "可以接下来在“设置”中更改。"
1324
1325 #: ../../../src/MenuMovementType.cpp:92 ../../../src/MenuMovementType.cpp:122
1326 msgid "Keyboard"
1327 msgstr "键盘"
1328
1329 #: ../../../src/MenuMovementType.cpp:93 ../../../src/MenuMovementType.cpp:128
1330 msgid "Mouse"
1331 msgstr "鼠标"
1332
1333 #: ../../../src/MenuMovementType.cpp:129
1334 msgid "Button"
1335 msgstr "按钮"
11001336
11011337 #: ../../../src/MenuNumPicker.cpp:59
11021338 msgid "Enter amount:"
1103 msgstr ""
1104
1105 #: ../../../src/MenuPowers.cpp:787
1339 msgstr "输入数目:"
1340
1341 #: ../../../src/MenuPowers.cpp:894
11061342 msgid "Passive"
1107 msgstr ""
1108
1109 #: ../../../src/MenuPowers.cpp:792
1343 msgstr "被动"
1344
1345 #: ../../../src/MenuPowers.cpp:901
11101346 #, c-format
11111347 msgid "Costs %d MP"
1112 msgstr "消耗 %d MP"
1113
1114 #: ../../../src/MenuPowers.cpp:796
1348 msgstr "消耗%dMP"
1349
1350 #: ../../../src/MenuPowers.cpp:905
11151351 #, c-format
11161352 msgid "Costs %d HP"
1117 msgstr "消耗 %d HP"
1118
1119 #: ../../../src/MenuPowers.cpp:801
1353 msgstr "消耗%dHP"
1354
1355 #: ../../../src/MenuPowers.cpp:909
11201356 msgid "Cooldown:"
1121 msgstr ""
1122
1123 #: ../../../src/MenuPowers.cpp:866 ../../../src/MenuPowers.cpp:869
1357 msgstr "冷却:"
1358
1359 #: ../../../src/MenuPowers.cpp:960 ../../../src/MenuPowers.cpp:963
11241360 msgid "Damage per second"
1125 msgstr ""
1126
1127 #: ../../../src/MenuPowers.cpp:872 ../../../src/MenuPowers.cpp:875
1361 msgstr "每秒伤害:"
1362
1363 #: ../../../src/MenuPowers.cpp:966 ../../../src/MenuPowers.cpp:969
11281364 msgid "HP per second"
1129 msgstr ""
1130
1131 #: ../../../src/MenuPowers.cpp:878 ../../../src/MenuPowers.cpp:881
1365 msgstr "每秒HP"
1366
1367 #: ../../../src/MenuPowers.cpp:972 ../../../src/MenuPowers.cpp:975
11321368 msgid "MP per second"
1133 msgstr ""
1134
1135 #: ../../../src/MenuPowers.cpp:885
1369 msgstr "每秒MP"
1370
1371 #: ../../../src/MenuPowers.cpp:979
11361372 msgid "Immobilize"
1137 msgstr ""
1138
1139 #: ../../../src/MenuPowers.cpp:893
1373 msgstr "固定"
1374
1375 #: ../../../src/MenuPowers.cpp:987
11401376 msgid "Immunity"
1141 msgstr ""
1142
1143 #: ../../../src/MenuPowers.cpp:896
1377 msgstr "豁免"
1378
1379 #: ../../../src/MenuPowers.cpp:990
11441380 msgid "Immunity to damage over time"
1145 msgstr ""
1146
1147 #: ../../../src/MenuPowers.cpp:899
1381 msgstr "慢性伤害豁免"
1382
1383 #: ../../../src/MenuPowers.cpp:993
11481384 msgid "Immunity to slow"
1149 msgstr ""
1150
1151 #: ../../../src/MenuPowers.cpp:902
1385 msgstr "减速豁免"
1386
1387 #: ../../../src/MenuPowers.cpp:996
11521388 msgid "Immunity to stun"
1153 msgstr ""
1154
1155 #: ../../../src/MenuPowers.cpp:905
1389 msgstr "击晕豁免"
1390
1391 #: ../../../src/MenuPowers.cpp:999
11561392 msgid "Immunity to HP steal"
1157 msgstr ""
1158
1159 #: ../../../src/MenuPowers.cpp:908
1393 msgstr "HP偷取豁免"
1394
1395 #: ../../../src/MenuPowers.cpp:1002
11601396 msgid "Immunity to MP steal"
1161 msgstr ""
1162
1163 #: ../../../src/MenuPowers.cpp:911
1397 msgstr "MP偷取豁免"
1398
1399 #: ../../../src/MenuPowers.cpp:1005
11641400 msgid "Immunity to knockback"
1165 msgstr ""
1166
1167 #: ../../../src/MenuPowers.cpp:914
1401 msgstr "击退豁免"
1402
1403 #: ../../../src/MenuPowers.cpp:1008
11681404 msgid "Immunity to damage reflection"
1169 msgstr ""
1170
1171 #: ../../../src/MenuPowers.cpp:917
1405 msgstr "伤害反射豁免"
1406
1407 #: ../../../src/MenuPowers.cpp:1014
11721408 msgid "Stun"
1173 msgstr ""
1174
1175 #: ../../../src/MenuPowers.cpp:920
1409 msgstr "击晕"
1410
1411 #: ../../../src/MenuPowers.cpp:1017
11761412 msgid "Automatic revive on death"
1177 msgstr ""
1178
1179 #: ../../../src/MenuPowers.cpp:923
1413 msgstr "死亡自动复活"
1414
1415 #: ../../../src/MenuPowers.cpp:1020
11801416 msgid "Convert"
1181 msgstr ""
1182
1183 #: ../../../src/MenuPowers.cpp:926
1417 msgstr "转换"
1418
1419 #: ../../../src/MenuPowers.cpp:1023
11841420 msgid "Fear"
1185 msgstr ""
1186
1187 #: ../../../src/MenuPowers.cpp:929
1421 msgstr "恐惧"
1422
1423 #: ../../../src/MenuPowers.cpp:1026
11881424 msgid "Lifespan"
1189 msgstr ""
1190
1191 #: ../../../src/MenuPowers.cpp:953
1425 msgstr "有效期"
1426
1427 #: ../../../src/MenuPowers.cpp:1050
11921428 msgid "Magical Shield"
1193 msgstr ""
1194
1195 #: ../../../src/MenuPowers.cpp:982
1429 msgstr "魔法盾"
1430
1431 #: ../../../src/MenuPowers.cpp:1079
11961432 msgid "Healing"
1197 msgstr ""
1198
1199 #: ../../../src/MenuPowers.cpp:985
1433 msgstr "治疗"
1434
1435 #: ../../../src/MenuPowers.cpp:1082
12001436 msgid "Knockback"
1201 msgstr ""
1202
1203 #: ../../../src/MenuPowers.cpp:1010
1437 msgstr "击退"
1438
1439 #: ../../../src/MenuPowers.cpp:1106
12041440 #, c-format
12051441 msgid "%d%% chance"
1206 msgstr ""
1207
1208 #: ../../../src/MenuPowers.cpp:1062
1442 msgstr "%d%%几率"
1443
1444 #: ../../../src/MenuPowers.cpp:1158
12091445 msgid "Base Accuracy"
1210 msgstr ""
1211
1212 #: ../../../src/MenuPowers.cpp:1082
1446 msgstr "基础精准度"
1447
1448 #: ../../../src/MenuPowers.cpp:1178
12131449 msgid "Base Critical Chance"
1214 msgstr ""
1215
1216 #: ../../../src/MenuPowers.cpp:1090
1450 msgstr "基础致命一击几率"
1451
1452 #: ../../../src/MenuPowers.cpp:1186
12171453 msgid "Ignores Absorbtion"
1218 msgstr ""
1219
1220 #: ../../../src/MenuPowers.cpp:1095
1454 msgstr "无视伤害吸收"
1455
1456 #: ../../../src/MenuPowers.cpp:1191
12211457 msgid "Ignores Avoidance"
1222 msgstr ""
1223
1224 #: ../../../src/MenuPowers.cpp:1100
1458 msgstr "无视闪避"
1459
1460 #: ../../../src/MenuPowers.cpp:1196
12251461 #, c-format
12261462 msgid "%d%% Chance to crit slowed targets"
1227 msgstr ""
1228
1229 #: ../../../src/MenuPowers.cpp:1105
1463 msgstr "%d%%几率重击减慢的敌人"
1464
1465 #: ../../../src/MenuPowers.cpp:1201
12301466 #, c-format
12311467 msgid "Elemental Damage (%s)"
1232 msgstr ""
1233
1234 #: ../../../src/MenuPowers.cpp:1114
1468 msgstr "元素伤害(%s)"
1469
1470 #: ../../../src/MenuPowers.cpp:1210
12351471 #, c-format
12361472 msgid "Requires a %s"
1237 msgstr ""
1238
1239 #: ../../../src/MenuPowers.cpp:1151 ../../../src/MenuPowers.cpp:1154
1473 msgstr "需要一个%s"
1474
1475 #: ../../../src/MenuPowers.cpp:1248 ../../../src/MenuPowers.cpp:1251
12401476 #, c-format
12411477 msgid "Requires Power: %s"
1242 msgstr "需要技能点: %s"
1243
1244 #: ../../../src/MenuPowers.cpp:1163
1478 msgstr "需要技能点:%s"
1479
1480 #: ../../../src/MenuPowers.cpp:1260
12451481 msgid "Click to Unlock (uses 1 Skill Point)"
1246 msgstr ""
1247
1248 #: ../../../src/MenuPowers.cpp:1167 ../../../src/MenuPowers.cpp:1169
1482 msgstr "点击以解锁(使用一个技能点)"
1483
1484 #: ../../../src/MenuPowers.cpp:1264 ../../../src/MenuPowers.cpp:1266
12491485 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
1486 msgstr "需要一个技能点"
1487
1488 #: ../../../src/MenuPowers.cpp:1466
1489 #, c-format
1490 msgid "Available skill points: %d"
1491 msgstr "可用技能点:%d"
1492
1493 #: ../../../src/MenuPowers.cpp:1498
12631494 msgid "Next Level:"
1264 msgstr ""
1265
1266 #: ../../../src/MenuStash.cpp:96
1267 msgid "Shared Stash"
1495 msgstr "下一级:"
1496
1497 #: ../../../src/MenuStash.cpp:80 ../../../src/MenuStash.cpp:161
1498 msgid "Stash"
12681499 msgstr "储物柜"
12691500
1270 #: ../../../src/MenuStash.cpp:209
1271 msgid "Can not store quest items in the stash."
1272 msgstr ""
1273
1274 #: ../../../src/MenuStash.cpp:219
1501 #: ../../../src/MenuStash.cpp:174 ../../../src/MenuStash.cpp:188
1502 msgid "Private"
1503 msgstr "隐私"
1504
1505 #: ../../../src/MenuStash.cpp:175
1506 msgid "Shared"
1507 msgstr "公用"
1508
1509 #: ../../../src/MenuStash.cpp:340
1510 msgid "This item can not be stored in the stash."
1511 msgstr "此物品无法存放在储物柜中。"
1512
1513 #: ../../../src/MenuStash.cpp:345
1514 msgid "This item can not be stored in the private stash."
1515 msgstr "此物品无法存放在私人储物柜中。"
1516
1517 #: ../../../src/MenuStash.cpp:350
1518 msgid "This item can not be stored in the shared stash."
1519 msgstr "此物品无法存放在公用储物柜中。"
1520
1521 #: ../../../src/MenuStash.cpp:360
12751522 msgid "Stash is full."
1276 msgstr ""
1277
1278 #: ../../../src/MenuTalker.cpp:454
1523 msgstr "储物柜已满。"
1524
1525 #: ../../../src/MenuStash.cpp:414
1526 #, c-format
1527 msgid "Can not store item in stash: %s"
1528 msgstr "无法在储物柜中存放物品 %s"
1529
1530 #: ../../../src/MenuTalker.cpp:448
1531 #, c-format
1532 msgid "<dialog node %d>"
1533 msgstr "<dialog node %d>"
1534
1535 #: ../../../src/MenuTalker.cpp:456
12791536 msgid "Trade"
12801537 msgstr "交易"
12811538
1282 #: ../../../src/MenuVendor.cpp:58
1539 #: ../../../src/MenuVendor.cpp:60
12831540 msgid "Buyback"
12841541 msgstr "购回"
12851542
1286 #: ../../../src/MenuVendor.cpp:279
1543 #: ../../../src/MenuVendor.cpp:283
12871544 msgid "Vendor"
12881545 msgstr "商人"
12891546
1290 #: ../../../src/PowerManager.cpp:1136
1547 #: ../../../src/PowerManager.cpp:1204
12911548 #, c-format
12921549 msgid "+%d Shield"
1293 msgstr "+%d Shield"
1294
1295 #: ../../../src/PowerManager.cpp:1392
1550 msgstr "+%d护盾"
1551
1552 #: ../../../src/PowerManager.cpp:1461
12961553 msgid "You are already transformed, untransform first."
1297 msgstr "You are already transformed, untransform first."
1298
1299 #: ../../../src/PowerManager.cpp:1404
1554 msgstr "你已经被传送了,得先反传送。"
1555
1556 #: ../../../src/PowerManager.cpp:1473
13001557 msgid "Could not untransform at this position."
1301 msgstr ""
1558 msgstr "不能反传送回这个位置。"
13021559
13031560 #: ../../../src/QuestLog.cpp:234
13041561 msgid "Completed Quests"
1305 msgstr ""
1306
1307 #: ../../../src/SaveLoad.cpp:243 ../../../src/SaveLoad.cpp:244
1562 msgstr "完成的任务"
1563
1564 #: ../../../src/SaveLoad.cpp:250 ../../../src/SaveLoad.cpp:251
13081565 msgid "Game saved."
1309 msgstr ""
1310
1311 #: ../../../src/SDLInputState.cpp:582
1566 msgstr "游戏已保存。"
1567
1568 #: ../../../src/SDLInputState.cpp:645
1569 msgid "BkSp"
1570 msgstr "回格键"
1571
1572 #: ../../../src/SDLInputState.cpp:646
1573 msgid "Caps"
1574 msgstr "大写锁定"
1575
1576 #: ../../../src/SDLInputState.cpp:647
1577 msgid "Del"
1578 msgstr "删除键"
1579
1580 #: ../../../src/SDLInputState.cpp:649 ../../../src/SDLInputState.cpp:679
1581 msgid "End"
1582 msgstr "End"
1583
1584 #: ../../../src/SDLInputState.cpp:650
1585 msgid "Esc"
1586 msgstr "退出键"
1587
1588 #: ../../../src/SDLInputState.cpp:651 ../../../src/SDLInputState.cpp:681
1589 msgid "Home"
1590 msgstr "Home"
1591
1592 #: ../../../src/SDLInputState.cpp:652
1593 msgid "Ins"
1594 msgstr "Ins"
1595
1596 #: ../../../src/SDLInputState.cpp:653
1597 msgid "LAlt"
1598 msgstr "左Alt"
1599
1600 #: ../../../src/SDLInputState.cpp:654
1601 msgid "LCtrl"
1602 msgstr "左Ctrl"
1603
1604 #: ../../../src/SDLInputState.cpp:656
1605 msgid "LShft"
1606 msgstr "左Shift"
1607
1608 #: ../../../src/SDLInputState.cpp:657
1609 msgid "Num"
1610 msgstr "Num"
1611
1612 #: ../../../src/SDLInputState.cpp:658
1613 msgid "PgDn"
1614 msgstr "PgDn"
1615
1616 #: ../../../src/SDLInputState.cpp:659
1617 msgid "PgUp"
1618 msgstr "PgUp"
1619
1620 #: ../../../src/SDLInputState.cpp:660 ../../../src/SDLInputState.cpp:690
1621 msgid "Pause"
1622 msgstr "Pause"
1623
1624 #: ../../../src/SDLInputState.cpp:661
1625 msgid "Print"
1626 msgstr "Print"
1627
1628 #: ../../../src/SDLInputState.cpp:662
1629 msgid "RAlt"
1630 msgstr "右Alt"
1631
1632 #: ../../../src/SDLInputState.cpp:663
1633 msgid "RCtrl"
1634 msgstr "右Ctrl"
1635
1636 #: ../../../src/SDLInputState.cpp:664
1637 msgid "Ret"
1638 msgstr "Ret"
1639
1640 #: ../../../src/SDLInputState.cpp:666
1641 msgid "RShft"
1642 msgstr "右Shift"
1643
1644 #: ../../../src/SDLInputState.cpp:667
1645 msgid "SLock"
1646 msgstr "SLock"
1647
1648 #: ../../../src/SDLInputState.cpp:668
1649 msgid "Spc"
1650 msgstr "Spc"
1651
1652 #: ../../../src/SDLInputState.cpp:669 ../../../src/SDLInputState.cpp:699
1653 msgid "Tab"
1654 msgstr "Tab"
1655
1656 #: ../../../src/SDLInputState.cpp:675
13121657 msgid "Backspace"
1313 msgstr ""
1314
1315 #: ../../../src/SDLInputState.cpp:583
1658 msgstr "Backspace"
1659
1660 #: ../../../src/SDLInputState.cpp:676
13161661 msgid "CapsLock"
1317 msgstr ""
1318
1319 #: ../../../src/SDLInputState.cpp:586
1320 msgid "End"
1321 msgstr ""
1322
1323 #: ../../../src/SDLInputState.cpp:587
1662 msgstr "CapsLock"
1663
1664 #: ../../../src/SDLInputState.cpp:680
13241665 msgid "Escape"
1325 msgstr ""
1326
1327 #: ../../../src/SDLInputState.cpp:588
1328 msgid "Home"
1329 msgstr ""
1330
1331 #: ../../../src/SDLInputState.cpp:589
1666 msgstr "Escape"
1667
1668 #: ../../../src/SDLInputState.cpp:682
13321669 msgid "Insert"
1333 msgstr ""
1334
1335 #: ../../../src/SDLInputState.cpp:590
1670 msgstr "Insert"
1671
1672 #: ../../../src/SDLInputState.cpp:683
13361673 msgid "Left Alt"
1337 msgstr ""
1338
1339 #: ../../../src/SDLInputState.cpp:591
1674 msgstr "左Alt"
1675
1676 #: ../../../src/SDLInputState.cpp:684
13401677 msgid "Left Ctrl"
1341 msgstr ""
1342
1343 #: ../../../src/SDLInputState.cpp:593
1678 msgstr "左Ctrl"
1679
1680 #: ../../../src/SDLInputState.cpp:686
13441681 msgid "Left Shift"
1345 msgstr ""
1346
1347 #: ../../../src/SDLInputState.cpp:594
1682 msgstr "左Shift"
1683
1684 #: ../../../src/SDLInputState.cpp:687
13481685 msgid "NumLock"
1349 msgstr ""
1350
1351 #: ../../../src/SDLInputState.cpp:595
1686 msgstr "NumLock"
1687
1688 #: ../../../src/SDLInputState.cpp:688
13521689 msgid "PageDown"
1353 msgstr ""
1354
1355 #: ../../../src/SDLInputState.cpp:596
1690 msgstr "PageDown"
1691
1692 #: ../../../src/SDLInputState.cpp:689
13561693 msgid "PageUp"
1357 msgstr ""
1358
1359 #: ../../../src/SDLInputState.cpp:597
1360 msgid "Pause"
1361 msgstr ""
1362
1363 #: ../../../src/SDLInputState.cpp:598
1694 msgstr "PageUp"
1695
1696 #: ../../../src/SDLInputState.cpp:691
13641697 msgid "PrintScreen"
1365 msgstr ""
1366
1367 #: ../../../src/SDLInputState.cpp:599
1698 msgstr "PrintScreen"
1699
1700 #: ../../../src/SDLInputState.cpp:692
13681701 msgid "Right Alt"
1369 msgstr ""
1370
1371 #: ../../../src/SDLInputState.cpp:600
1702 msgstr "右Alt"
1703
1704 #: ../../../src/SDLInputState.cpp:693
13721705 msgid "Right Ctrl"
1373 msgstr ""
1374
1375 #: ../../../src/SDLInputState.cpp:601
1706 msgstr "右Ctrl"
1707
1708 #: ../../../src/SDLInputState.cpp:694
13761709 msgid "Return"
1377 msgstr ""
1378
1379 #: ../../../src/SDLInputState.cpp:603
1710 msgstr "Return"
1711
1712 #: ../../../src/SDLInputState.cpp:696
13801713 msgid "Right Shift"
1381 msgstr ""
1382
1383 #: ../../../src/SDLInputState.cpp:604
1714 msgstr "右Shift"
1715
1716 #: ../../../src/SDLInputState.cpp:697
13841717 msgid "ScrollLock"
1385 msgstr ""
1386
1387 #: ../../../src/SDLInputState.cpp:605
1718 msgstr "ScrollLock"
1719
1720 #: ../../../src/SDLInputState.cpp:698
13881721 msgid "Space"
1389 msgstr ""
1390
1391 #: ../../../src/SDLInputState.cpp:606
1392 msgid "Tab"
1393 msgstr ""
1394
1395 #: ../../../src/SDLInputState.cpp:620
1722 msgstr "Space"
1723
1724 #: ../../../src/SDLInputState.cpp:712
1725 #, c-format
1726 msgid "M%d"
1727 msgstr "M%d"
1728
1729 #: ../../../src/SDLInputState.cpp:718
13961730 #, c-format
13971731 msgid "Mouse %d"
1398 msgstr ""
1399
1400 #: ../../../src/SDLInputState.cpp:628
1732 msgstr "鼠标 %d"
1733
1734 #: ../../../src/SDLInputState.cpp:728
1735 #, c-format
1736 msgid "JX%d-"
1737 msgstr "JX%d-"
1738
1739 #: ../../../src/SDLInputState.cpp:730
14011740 #, c-format
14021741 msgid "Axis %d -"
1403 msgstr ""
1404
1405 #: ../../../src/SDLInputState.cpp:630
1742 msgstr "摇杆轴 %d-"
1743
1744 #: ../../../src/SDLInputState.cpp:734
1745 #, c-format
1746 msgid "JX%d+"
1747 msgstr "JX%d+"
1748
1749 #: ../../../src/SDLInputState.cpp:736
14061750 #, c-format
14071751 msgid "Axis %d +"
1408 msgstr ""
1409
1410 #: ../../../src/SDLInputState.cpp:633
1752 msgstr "摇杆轴 %d+"
1753
1754 #: ../../../src/SDLInputState.cpp:741
1755 #, c-format
1756 msgid "JB%d"
1757 msgstr "JB%d"
1758
1759 #: ../../../src/SDLInputState.cpp:743
14111760 #, c-format
14121761 msgid "Button %d"
1413 msgstr ""
1414
1415 #: ../../../src/SDLInputState.cpp:637
1416 msgid "(none)"
1417 msgstr ""
1418
1419 #: ../../../src/SDLInputState.cpp:677
1762 msgstr "按钮 %d"
1763
1764 #: ../../../src/SDLInputState.cpp:789
14201765 msgid "Touch control D-Pad"
1421 msgstr ""
1422
1423 #: ../../../src/SDLInputState.cpp:701
1766 msgstr "触摸控制D-Pad"
1767
1768 #: ../../../src/SDLInputState.cpp:812
14241769 msgid "Touch control buttons"
1425 msgstr ""
1426
1427 #: ../../../src/SDLInputState.cpp:716
1770 msgstr "触摸控制按钮"
1771
1772 #: ../../../src/SDLInputState.cpp:826
14281773 msgid "Tap"
1429 msgstr ""
1430
1431 #: ../../../src/SDLInputState.cpp:760 ../../../src/SDLInputState.cpp:764
1432 #: ../../../src/SDLInputState.cpp:768
1774 msgstr "点按"
1775
1776 #: ../../../src/SDLInputState.cpp:878 ../../../src/SDLInputState.cpp:880
1777 #, c-format
1778 msgid "Can not bind: %s"
1779 msgstr "无法绑定 %s"
1780
1781 #: ../../../src/SDLInputState.cpp:892 ../../../src/SDLInputState.cpp:896
1782 #: ../../../src/SDLInputState.cpp:900
14331783 #, c-format
14341784 msgid "'%s' is no longer bound to:"
1435 msgstr ""
1785 msgstr "‘%s’不再绑定到:"
14361786
14371787 #: ../../../src/Stats.cpp:38
14381788 msgid "Max HP"
1439 msgstr ""
1789 msgstr "最大HP"
14401790
14411791 #: ../../../src/Stats.cpp:39
14421792 msgid "Total amount of HP."
1443 msgstr ""
1793 msgstr "HP总量。"
14441794
14451795 #: ../../../src/Stats.cpp:43
14461796 msgid "HP Regen"
1447 msgstr ""
1797 msgstr "HP恢复"
14481798
14491799 #: ../../../src/Stats.cpp:44
14501800 msgid "Ticks of HP regen per minute."
1451 msgstr ""
1801 msgstr "每分钟恢复的HP数。"
14521802
14531803 #: ../../../src/Stats.cpp:48
14541804 msgid "Max MP"
1455 msgstr ""
1805 msgstr "最大MP"
14561806
14571807 #: ../../../src/Stats.cpp:49
14581808 msgid "Total amount of MP."
1459 msgstr ""
1809 msgstr "MP总量。"
14601810
14611811 #: ../../../src/Stats.cpp:53
14621812 msgid "MP Regen"
1463 msgstr ""
1813 msgstr "MP恢复"
14641814
14651815 #: ../../../src/Stats.cpp:54
14661816 msgid "Ticks of MP regen per minute."
1467 msgstr ""
1817 msgstr "每分钟恢复的MP数。"
14681818
14691819 #: ../../../src/Stats.cpp:58
14701820 msgid "Accuracy"
1471 msgstr ""
1821 msgstr "精准度"
14721822
14731823 #: ../../../src/Stats.cpp:59
14741824 msgid ""
14751825 "Accuracy rating. The enemy's Avoidance rating is subtracted from this value "
14761826 "to calculate your likeliness to land a direct hit."
1477 msgstr ""
1827 msgstr "精准度等级。这个值减去敌人的闪避等级计算为你直接击中敌人的可能性。"
14781828
14791829 #: ../../../src/Stats.cpp:63
14801830 msgid "Avoidance"
1481 msgstr ""
1831 msgstr "闪避"
14821832
14831833 #: ../../../src/Stats.cpp:64
14841834 msgid ""
14851835 "Avoidance rating. This value is subtracted from the enemy's Accuracy rating "
14861836 "to calculate their likeliness to land a direct hit."
1487 msgstr ""
1837 msgstr "闪避等级。敌人的精准度等级减去这个值计算为敌人直接击中你的可能性。"
14881838
14891839 #: ../../../src/Stats.cpp:68
14901840 msgid "Absorb Min"
1491 msgstr ""
1841 msgstr "伤害吸收最小值"
14921842
14931843 #: ../../../src/Stats.cpp:69 ../../../src/Stats.cpp:74
14941844 msgid "Reduces the amount of damage taken."
1495 msgstr ""
1845 msgstr "减少受到的伤害数量。"
14961846
14971847 #: ../../../src/Stats.cpp:73
14981848 msgid "Absorb Max"
1499 msgstr ""
1849 msgstr "伤害吸收最大值"
15001850
15011851 #: ../../../src/Stats.cpp:78
15021852 msgid "Critical Hit Chance"
1503 msgstr ""
1853 msgstr "致命一击几率"
15041854
15051855 #: ../../../src/Stats.cpp:79
15061856 msgid "Chance for an attack to do extra damage."
1507 msgstr ""
1857 msgstr "攻击造成额外伤害的几率。"
15081858
15091859 #: ../../../src/Stats.cpp:83
15101860 msgid "Bonus XP"
1511 msgstr ""
1861 msgstr "奖励XP"
15121862
15131863 #: ../../../src/Stats.cpp:84
15141864 msgid "Increases the XP gained per kill."
1515 msgstr ""
1865 msgstr "增加每个击杀得到的XP。"
15161866
15171867 #: ../../../src/Stats.cpp:88
15181868 #, c-format
15191869 msgid "Bonus %s"
1520 msgstr ""
1870 msgstr "奖励%s"
15211871
15221872 #: ../../../src/Stats.cpp:89
15231873 #, c-format
15241874 msgid "Increases the %s found per drop."
1525 msgstr ""
1875 msgstr "每次掉落增加%s。"
15261876
15271877 #: ../../../src/Stats.cpp:93
15281878 msgid "Item Find Chance"
1529 msgstr ""
1879 msgstr "发现物品的几率"
15301880
15311881 #: ../../../src/Stats.cpp:94
15321882 msgid "Increases the chance that an enemy will drop an item."
1533 msgstr ""
1883 msgstr "增加敌人掉落物品的几率。"
15341884
15351885 #: ../../../src/Stats.cpp:98
15361886 msgid "Stealth"
1537 msgstr ""
1887 msgstr "潜行"
15381888
15391889 #: ../../../src/Stats.cpp:99
15401890 msgid "Increases your ability to move undetected."
1541 msgstr ""
1891 msgstr "增加你不被发现地移动的能力。"
15421892
15431893 #: ../../../src/Stats.cpp:103
15441894 msgid "Poise"
1545 msgstr ""
1895 msgstr "平稳"
15461896
15471897 #: ../../../src/Stats.cpp:104
15481898 msgid "Reduces your chance of stumbling when hit."
1549 msgstr ""
1899 msgstr "减少你被击中时跌倒的几率。"
15501900
15511901 #: ../../../src/Stats.cpp:108
15521902 msgid "Missile Reflect Chance"
1553 msgstr ""
1903 msgstr "投射物反弹几率"
15541904
15551905 #: ../../../src/Stats.cpp:109
15561906 msgid "Increases your chance of reflecting missiles back at enemies."
1557 msgstr ""
1907 msgstr "增加你反弹投射物回敌人的几率。"
15581908
15591909 #: ../../../src/Stats.cpp:113
15601910 msgid "Damage Reflection"
1561 msgstr ""
1911 msgstr "伤害反弹"
15621912
15631913 #: ../../../src/Stats.cpp:114
15641914 msgid "Deals a percentage of damage taken back to the attacker."
1565 msgstr ""
1915 msgstr "返回给攻击者一定比例的伤害。"
15661916
15671917 #: ../../../src/Stats.cpp:118
15681918 msgid "HP Steal"
1569 msgstr ""
1919 msgstr "HP偷取"
15701920
15711921 #: ../../../src/Stats.cpp:119
15721922 msgid "Percentage of HP stolen per hit."
1573 msgstr ""
1923 msgstr "每次击中偷取的MP百分比。"
15741924
15751925 #: ../../../src/Stats.cpp:123
15761926 msgid "MP Steal"
1577 msgstr ""
1927 msgstr "MP偷取"
15781928
15791929 #: ../../../src/Stats.cpp:124
15801930 msgid "Percentage of MP stolen per hit."
1581 msgstr ""
1931 msgstr "每次击中偷取的MP百分比。"
15821932
15831933 #: ../../../src/Stats.cpp:128
15841934 msgid "Base HP"
1585 msgstr ""
1935 msgstr "基础MP"
15861936
15871937 #: ../../../src/Stats.cpp:133
15881938 msgid "Base MP"
1589 msgstr ""
1590
1591 #: ../../../src/Utils.cpp:346
1939 msgstr "基础MP"
1940
1941 #: ../../../src/Utils.cpp:365
15921942 msgid "k"
1593 msgstr ""
1594
1595 #: ../../../src/Utils.cpp:580
1943 msgstr "k"
1944
1945 #: ../../../src/Utils.cpp:635
15961946 #, c-format
15971947 msgid "%s second"
1598 msgstr ""
1599
1600 #: ../../../src/Utils.cpp:583
1948 msgstr "%s秒"
1949
1950 #: ../../../src/Utils.cpp:638
16011951 #, c-format
16021952 msgid "%s seconds"
1603 msgstr ""
1953 msgstr "%s秒"
16041954
16051955 #: ../../../src/Version.cpp:139
16061956 msgid "or newer"
1607 msgstr ""
1957 msgstr "或更新的"
16081958
16091959 #: ../../../src/Version.cpp:142
16101960 msgid "or older"
1611 msgstr ""
1961 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 #, fuzzy
6 msgid ""
7 msgstr ""
8 "Project-Id-Version: PACKAGE VERSION\n"
9 "Report-Msgid-Bugs-To: \n"
10 "POT-Creation-Date: 2021-07-02 13:26-0400\n"
11 "PO-Revision-Date: 2018-03-28 19:16+0000\n"
12 "Language-Team: Chinese (Taiwan) (https://www.transifex.com/flareorg/teams/84925/zh_TW/)\n"
13 "MIME-Version: 1.0\n"
14 "Content-Type: text/plain; charset=UTF-8\n"
15 "Content-Transfer-Encoding: 8bit\n"
16 "Language: zh_TW\n"
17 "Plural-Forms: nplurals=1; plural=0;\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:1220
122 #: ../../../src/StatBlock.cpp:926 ../../../src/StatBlock.cpp:932
123 #, c-format
124 msgid "+%d HP"
125 msgstr ""
126
127 #: ../../../src/Entity.cpp:572 ../../../src/StatBlock.cpp:937
128 #: ../../../src/StatBlock.cpp:943
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:704
170 msgid "Entering game world..."
171 msgstr ""
172
173 #: ../../../src/GameStateLoad.cpp:707
174 msgid "Loading saved game..."
175 msgstr ""
176
177 #: ../../../src/GameStateLoad.cpp:740
178 msgid "Invalid save"
179 msgstr ""
180
181 #: ../../../src/GameStateLoad.cpp:764 ../../../src/ItemManager.cpp:745
182 #: ../../../src/MenuPowers.cpp:882 ../../../src/MenuPowers.cpp:1241
183 #: ../../../src/MenuPowers.cpp:1653
184 #, c-format
185 msgid "Level %d"
186 msgstr ""
187
188 #: ../../../src/GameStateNew.cpp:66 ../../../src/InputState.cpp:416
189 #: ../../../src/MenuConfig.cpp:254
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:670
243 #: ../../../src/SDLInputState.cpp:700
244 msgid "Up"
245 msgstr ""
246
247 #: ../../../src/InputState.cpp:419 ../../../src/MenuMovementType.cpp:125
248 #: ../../../src/MenuMovementType.cpp:134 ../../../src/SDLInputState.cpp:648
249 #: ../../../src/SDLInputState.cpp:678
250 msgid "Down"
251 msgstr ""
252
253 #: ../../../src/InputState.cpp:420 ../../../src/MenuMovementType.cpp:124
254 #: ../../../src/MenuMovementType.cpp:133 ../../../src/SDLInputState.cpp:655
255 #: ../../../src/SDLInputState.cpp:685
256 msgid "Left"
257 msgstr ""
258
259 #: ../../../src/InputState.cpp:421 ../../../src/MenuMovementType.cpp:126
260 #: ../../../src/MenuMovementType.cpp:135 ../../../src/SDLInputState.cpp:665
261 #: ../../../src/SDLInputState.cpp:695
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:159
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:677
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:981
402 #, c-format
403 msgid "%d%% Speed"
404 msgstr ""
405
406 #: ../../../src/ItemManager.cpp:650 ../../../src/MenuPowers.cpp:984
407 #, c-format
408 msgid "%d%% Attack Speed"
409 msgstr ""
410
411 #: ../../../src/ItemManager.cpp:672 ../../../src/MenuCharacter.cpp:352
412 #: ../../../src/MenuPowers.cpp:953
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:1228
442 #: ../../../src/MenuPowers.cpp:1231
443 #, c-format
444 msgid "Requires Level %d"
445 msgstr ""
446
447 #: ../../../src/ItemManager.cpp:836 ../../../src/MenuPowers.cpp:1220
448 #: ../../../src/MenuPowers.cpp:1222
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:898
479 msgid "Set:"
480 msgstr ""
481
482 #: ../../../src/ItemManager.cpp:905
483 #, c-format
484 msgid "%d items:"
485 msgstr ""
486
487 #: ../../../src/ItemManager.cpp:920
488 #, c-format
489 msgid "Press [%s] to read"
490 msgstr ""
491
492 #: ../../../src/ItemManager.cpp:923
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:1256
569 msgid "Clear"
570 msgstr ""
571
572 #: ../../../src/MenuConfig.cpp:122 ../../../src/MenuConfig.cpp:1254
573 msgid "Assign:"
574 msgstr ""
575
576 #: ../../../src/MenuConfig.cpp:123 ../../../src/MenuConfig.cpp:253
577 msgid "Defaults"
578 msgstr ""
579
580 #: ../../../src/MenuConfig.cpp:123
581 msgid "Reset ALL settings?"
582 msgstr ""
583
584 #: ../../../src/MenuConfig.cpp:252 ../../../src/MenuNumPicker.cpp:49
585 msgid "OK"
586 msgstr ""
587
588 #: ../../../src/MenuConfig.cpp:256 ../../../src/MenuGameOver.cpp:72
589 msgid "Continue"
590 msgstr ""
591
592 #: ../../../src/MenuConfig.cpp:258
593 msgid "Save Game"
594 msgstr ""
595
596 #: ../../../src/MenuConfig.cpp:301 ../../../src/MenuConfig.cpp:352
597 msgid "Default"
598 msgstr ""
599
600 #: ../../../src/MenuConfig.cpp:301
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:302
607 msgid "Show all"
608 msgstr ""
609
610 #: ../../../src/MenuConfig.cpp:302
611 msgid ""
612 "Always show loot tooltips. Temporarily hide all loot tooltips with 'Alt'."
613 msgstr ""
614
615 #: ../../../src/MenuConfig.cpp:303 ../../../src/MenuConfig.cpp:308
616 msgid "Hidden"
617 msgstr ""
618
619 #: ../../../src/MenuConfig.cpp:303
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:306
626 msgid "Visible"
627 msgstr ""
628
629 #: ../../../src/MenuConfig.cpp:307
630 msgid "Visible (2x zoom)"
631 msgstr ""
632
633 #: ../../../src/MenuConfig.cpp:311
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:312
640 msgid "- Display a message"
641 msgstr ""
642
643 #: ../../../src/MenuConfig.cpp:313
644 msgid "- Play a sound"
645 msgstr ""
646
647 #: ../../../src/MenuConfig.cpp:314
648 msgid "- Change the cursor"
649 msgstr ""
650
651 #: ../../../src/MenuConfig.cpp:316
652 msgid "Disabled"
653 msgstr ""
654
655 #: ../../../src/MenuConfig.cpp:317
656 msgid "All"
657 msgstr ""
658
659 #: ../../../src/MenuConfig.cpp:318
660 msgid "Message & Cursor"
661 msgstr ""
662
663 #: ../../../src/MenuConfig.cpp:319
664 msgid "Message & Sound"
665 msgstr ""
666
667 #: ../../../src/MenuConfig.cpp:320
668 msgid "Sound & Cursor"
669 msgstr ""
670
671 #: ../../../src/MenuConfig.cpp:321
672 msgid "Message"
673 msgstr ""
674
675 #: ../../../src/MenuConfig.cpp:322
676 msgid "Cursor"
677 msgstr ""
678
679 #: ../../../src/MenuConfig.cpp:323
680 msgid "Sound"
681 msgstr ""
682
683 #: ../../../src/MenuConfig.cpp:329
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:347
690 msgid "The maximum frame rate that the game will be allowed to run at."
691 msgstr ""
692
693 #: ../../../src/MenuConfig.cpp:351
694 msgid ""
695 "The render size refers to the height in pixels of the surface used to draw "
696 "the game. Mods define the allowed render sizes, but this option allows "
697 "overriding the maximum size."
698 msgstr ""
699
700 #: ../../../src/MenuConfig.cpp:374 ../../../src/MenuConfig.cpp:1679
701 #: ../../../src/MenuGameOver.cpp:116
702 msgid "Exit"
703 msgstr ""
704
705 #: ../../../src/MenuConfig.cpp:375
706 msgid "Video"
707 msgstr ""
708
709 #: ../../../src/MenuConfig.cpp:376
710 msgid "Audio"
711 msgstr ""
712
713 #: ../../../src/MenuConfig.cpp:377
714 msgid "Interface"
715 msgstr ""
716
717 #: ../../../src/MenuConfig.cpp:378
718 msgid "Input"
719 msgstr ""
720
721 #: ../../../src/MenuConfig.cpp:379
722 msgid "Keybindings"
723 msgstr ""
724
725 #: ../../../src/MenuConfig.cpp:380
726 msgid "Mods"
727 msgstr ""
728
729 #: ../../../src/MenuConfig.cpp:392
730 msgid "Paused"
731 msgstr ""
732
733 #: ../../../src/MenuConfig.cpp:395
734 msgid "Time Played"
735 msgstr ""
736
737 #: ../../../src/MenuConfig.cpp:401
738 msgid "Renderer"
739 msgstr ""
740
741 #: ../../../src/MenuConfig.cpp:402
742 msgid "Full Screen Mode"
743 msgstr ""
744
745 #: ../../../src/MenuConfig.cpp:403
746 msgid "Hardware surfaces"
747 msgstr ""
748
749 #: ../../../src/MenuConfig.cpp:404
750 msgid "V-Sync"
751 msgstr ""
752
753 #: ../../../src/MenuConfig.cpp:405
754 msgid "Texture Filtering"
755 msgstr ""
756
757 #: ../../../src/MenuConfig.cpp:406
758 msgid "DPI scaling"
759 msgstr ""
760
761 #: ../../../src/MenuConfig.cpp:407
762 msgid "Parallax Layers"
763 msgstr ""
764
765 #: ../../../src/MenuConfig.cpp:408
766 msgid "Allow changing gamma"
767 msgstr ""
768
769 #: ../../../src/MenuConfig.cpp:409
770 msgid "Gamma"
771 msgstr ""
772
773 #: ../../../src/MenuConfig.cpp:410
774 msgid "Maximum Render Size"
775 msgstr ""
776
777 #: ../../../src/MenuConfig.cpp:411
778 msgid "Frame Limit"
779 msgstr ""
780
781 #: ../../../src/MenuConfig.cpp:413
782 msgid "Sound Volume"
783 msgstr ""
784
785 #: ../../../src/MenuConfig.cpp:414
786 msgid "Music Volume"
787 msgstr ""
788
789 #: ../../../src/MenuConfig.cpp:416
790 msgid "Language"
791 msgstr ""
792
793 #: ../../../src/MenuConfig.cpp:417
794 msgid "Show FPS"
795 msgstr ""
796
797 #: ../../../src/MenuConfig.cpp:418
798 msgid "Hardware mouse cursor"
799 msgstr ""
800
801 #: ../../../src/MenuConfig.cpp:419
802 msgid "Colorblind Mode"
803 msgstr ""
804
805 #: ../../../src/MenuConfig.cpp:420
806 msgid "Developer Mode"
807 msgstr ""
808
809 #: ../../../src/MenuConfig.cpp:421
810 msgid "Subtitles"
811 msgstr ""
812
813 #: ../../../src/MenuConfig.cpp:422
814 msgid "Loot tooltip visibility"
815 msgstr ""
816
817 #: ../../../src/MenuConfig.cpp:423
818 msgid "Mini-map mode"
819 msgstr ""
820
821 #: ../../../src/MenuConfig.cpp:424
822 msgid "Always show stat bar labels"
823 msgstr ""
824
825 #: ../../../src/MenuConfig.cpp:425
826 msgid "Allow stat bar auto-hiding"
827 msgstr ""
828
829 #: ../../../src/MenuConfig.cpp:426
830 msgid "Show combat text"
831 msgstr ""
832
833 #: ../../../src/MenuConfig.cpp:427
834 msgid "Automatically equip items"
835 msgstr ""
836
837 #: ../../../src/MenuConfig.cpp:428
838 msgid "Show hidden entity markers"
839 msgstr ""
840
841 #: ../../../src/MenuConfig.cpp:429
842 msgid "Low health notification"
843 msgstr ""
844
845 #: ../../../src/MenuConfig.cpp:430
846 msgid "Low health threshold"
847 msgstr ""
848
849 #: ../../../src/MenuConfig.cpp:431
850 msgid "Show item comparison tooltips"
851 msgstr ""
852
853 #: ../../../src/MenuConfig.cpp:434 ../../../src/MenuMovementType.cpp:94
854 #: ../../../src/MenuMovementType.cpp:131
855 msgid "Joystick"
856 msgstr ""
857
858 #: ../../../src/MenuConfig.cpp:435
859 msgid "Move hero using mouse"
860 msgstr ""
861
862 #: ../../../src/MenuConfig.cpp:436
863 msgid "Mouse aim"
864 msgstr ""
865
866 #: ../../../src/MenuConfig.cpp:437
867 msgid "Do not use mouse"
868 msgstr ""
869
870 #: ../../../src/MenuConfig.cpp:438
871 msgid "Swap mouse movement button"
872 msgstr ""
873
874 #: ../../../src/MenuConfig.cpp:439
875 msgid "Attack with mouse movement"
876 msgstr ""
877
878 #: ../../../src/MenuConfig.cpp:440
879 msgid "Joystick Deadzone"
880 msgstr ""
881
882 #: ../../../src/MenuConfig.cpp:441
883 msgid "Touch Controls"
884 msgstr ""
885
886 #: ../../../src/MenuConfig.cpp:442
887 msgid "Touch Gamepad Scaling"
888 msgstr ""
889
890 #: ../../../src/MenuConfig.cpp:452
891 #, c-format
892 msgid "Primary binding: %s"
893 msgstr ""
894
895 #: ../../../src/MenuConfig.cpp:453
896 #, c-format
897 msgid "Alternate binding: %s"
898 msgstr ""
899
900 #: ../../../src/MenuConfig.cpp:454
901 #, c-format
902 msgid "Joystick binding: %s"
903 msgstr ""
904
905 #: ../../../src/MenuConfig.cpp:556
906 msgid ""
907 "Will try to store surfaces in video memory versus system memory. The effect "
908 "this has on performance depends on the renderer."
909 msgstr ""
910
911 #: ../../../src/MenuConfig.cpp:557
912 msgid ""
913 "Prevents screen tearing. Disable if you experience \"stuttering\" in "
914 "windowed mode or input lag."
915 msgstr ""
916
917 #: ../../../src/MenuConfig.cpp:558
918 msgid ""
919 "When enabled, this uses the screen DPI in addition to the window dimensions "
920 "to scale the rendering resolution. Otherwise, only the window dimensions are"
921 " used."
922 msgstr ""
923
924 #: ../../../src/MenuConfig.cpp:559
925 msgid ""
926 "This enables parallax (non-tile) layers. Disabling this setting can improve "
927 "performance in some cases."
928 msgstr ""
929
930 #: ../../../src/MenuConfig.cpp:560
931 msgid ""
932 "Enables the below setting that controls the screen gamma level. The behavior"
933 " of the gamma setting can vary between platforms."
934 msgstr ""
935
936 #: ../../../src/MenuConfig.cpp:561
937 msgid ""
938 "Provides additional text for information that is primarily conveyed through "
939 "color."
940 msgstr ""
941
942 #: ../../../src/MenuConfig.cpp:562
943 msgid ""
944 "Some mods will automatically hide the stat bars when they are inactive. "
945 "Disabling this option will keep them displayed at all times."
946 msgstr ""
947
948 #: ../../../src/MenuConfig.cpp:563
949 msgid ""
950 "When enabled, empty equipment slots will be filled with applicable items "
951 "when they are obtained."
952 msgstr ""
953
954 #: ../../../src/MenuConfig.cpp:564
955 msgid ""
956 "Shows a marker above enemies, allies, and the player when they are obscured "
957 "by tall objects."
958 msgstr ""
959
960 #: ../../../src/MenuConfig.cpp:565
961 msgid ""
962 "When enabled, tooltips for equipped items of the same type are shown next to"
963 " standard item tooltips."
964 msgstr ""
965
966 #: ../../../src/MenuConfig.cpp:566
967 msgid ""
968 "This allows the game to be controlled entirely with the keyboard (or "
969 "joystick)."
970 msgstr ""
971
972 #: ../../../src/MenuConfig.cpp:567
973 msgid ""
974 "When 'Move hero using mouse' is enabled, this setting controls if 'Main1' or"
975 " 'Main2' is used to move the hero. If enabled, 'Main2' will move the hero "
976 "instead of 'Main1'."
977 msgstr ""
978
979 #: ../../../src/MenuConfig.cpp:568
980 msgid ""
981 "When 'Move hero using mouse' is enabled, this setting controls if the Power "
982 "assigned to the movement button can be used by targeting an enemy. If this "
983 "setting is disabled, it is required to use 'Shift' to access the Power "
984 "assigned to the movement button."
985 msgstr ""
986
987 #: ../../../src/MenuConfig.cpp:569
988 msgid ""
989 "The player's attacks will be aimed in the direction of the mouse cursor when"
990 " this is enabled."
991 msgstr ""
992
993 #: ../../../src/MenuConfig.cpp:570
994 msgid ""
995 "When enabled, a virtual gamepad will be added in-game. Other interactions, "
996 "such as drag-and-drop behavior, are also altered to better suit touch input."
997 msgstr ""
998
999 #: ../../../src/MenuConfig.cpp:621
1000 msgid "Active Mods"
1001 msgstr ""
1002
1003 #: ../../../src/MenuConfig.cpp:630
1004 msgid "Available Mods"
1005 msgstr ""
1006
1007 #: ../../../src/MenuConfig.cpp:649
1008 msgid "<< Disable"
1009 msgstr ""
1010
1011 #: ../../../src/MenuConfig.cpp:655
1012 msgid "Enable >>"
1013 msgstr ""
1014
1015 #: ../../../src/MenuConfig.cpp:1536
1016 msgid "Version:"
1017 msgstr ""
1018
1019 #: ../../../src/MenuConfig.cpp:1541
1020 msgid "Game:"
1021 msgstr ""
1022
1023 #: ../../../src/MenuConfig.cpp:1546
1024 msgid "Engine version:"
1025 msgstr ""
1026
1027 #: ../../../src/MenuConfig.cpp:1554
1028 msgid "Requires mods:"
1029 msgstr ""
1030
1031 #: ../../../src/MenuConfig.cpp:1662 ../../../src/SDLInputState.cpp:750
1032 msgid "(none)"
1033 msgstr ""
1034
1035 #: ../../../src/MenuConfig.cpp:1679 ../../../src/MenuGameOver.cpp:73
1036 msgid "Save & Exit"
1037 msgstr ""
1038
1039 #: ../../../src/MenuDevConsole.cpp:65
1040 msgid "Execute"
1041 msgstr ""
1042
1043 #: ../../../src/MenuDevConsole.cpp:103 ../../../src/MenuDevConsole.cpp:153
1044 msgid "Developer Console"
1045 msgstr ""
1046
1047 #: ../../../src/MenuDevConsole.cpp:143
1048 #, c-format
1049 msgid "Use '%s' to inspect with the cursor."
1050 msgstr ""
1051
1052 #: ../../../src/MenuDevConsole.cpp:148
1053 msgid "Arguments with spaces should be enclosed with double quotes. Example:"
1054 msgstr ""
1055
1056 #: ../../../src/MenuDevConsole.cpp:149
1057 msgid "Type 'help' to get a list of commands."
1058 msgstr ""
1059
1060 #: ../../../src/MenuDevConsole.cpp:211 ../../../src/MenuDevConsole.cpp:215
1061 msgid "px"
1062 msgstr ""
1063
1064 #: ../../../src/MenuDevConsole.cpp:226
1065 msgid "Distance"
1066 msgstr ""
1067
1068 #: ../../../src/MenuDevConsole.cpp:241 ../../../src/MenuDevConsole.cpp:289
1069 #: ../../../src/MenuDevConsole.cpp:303
1070 msgid "Entity"
1071 msgstr ""
1072
1073 #: ../../../src/MenuDevConsole.cpp:263 ../../../src/MenuDevConsole.cpp:270
1074 msgid "none"
1075 msgstr ""
1076
1077 #: ../../../src/MenuDevConsole.cpp:264 ../../../src/MenuDevConsole.cpp:266
1078 msgid "wall"
1079 msgstr ""
1080
1081 #: ../../../src/MenuDevConsole.cpp:265 ../../../src/MenuDevConsole.cpp:267
1082 msgid "short wall / pit"
1083 msgstr ""
1084
1085 #: ../../../src/MenuDevConsole.cpp:268
1086 msgid "entity"
1087 msgstr ""
1088
1089 #: ../../../src/MenuDevConsole.cpp:269
1090 msgid "entity, ally"
1091 msgstr ""
1092
1093 #: ../../../src/MenuDevConsole.cpp:276
1094 msgid "Tile"
1095 msgstr ""
1096
1097 #: ../../../src/MenuDevConsole.cpp:377
1098 msgid "adds a power to the action bar"
1099 msgstr ""
1100
1101 #: ../../../src/MenuDevConsole.cpp:378
1102 msgid "turns on/off the display of the FPS counter"
1103 msgstr ""
1104
1105 #: ../../../src/MenuDevConsole.cpp:379
1106 msgid "turns on/off all of the HUD elements"
1107 msgstr ""
1108
1109 #: ../../../src/MenuDevConsole.cpp:380
1110 msgid "turns on/off the developer hud"
1111 msgstr ""
1112
1113 #: ../../../src/MenuDevConsole.cpp:381
1114 msgid ""
1115 "Prints a list of powers that match a search term. No search term will list "
1116 "all items"
1117 msgstr ""
1118
1119 #: ../../../src/MenuDevConsole.cpp:382
1120 msgid "Prints out all the map filenames located in the \"maps/\" directory."
1121 msgstr ""
1122
1123 #: ../../../src/MenuDevConsole.cpp:383
1124 msgid ""
1125 "Prints out the active campaign statuses that match a search term. No search "
1126 "term will list all active statuses"
1127 msgstr ""
1128
1129 #: ../../../src/MenuDevConsole.cpp:384
1130 msgid ""
1131 "Prints a list of items that match a search term. No search term will list "
1132 "all items"
1133 msgstr ""
1134
1135 #: ../../../src/MenuDevConsole.cpp:385
1136 msgid ""
1137 "parses a series of event components and executes them as a single event"
1138 msgstr ""
1139
1140 #: ../../../src/MenuDevConsole.cpp:386
1141 msgid "clears the command history"
1142 msgstr ""
1143
1144 #: ../../../src/MenuDevConsole.cpp:387
1145 msgid "displays this text"
1146 msgstr ""
1147
1148 #: ../../../src/MenuDevConsole.cpp:394
1149 msgid "Toggled the developer hud"
1150 msgstr ""
1151
1152 #: ../../../src/MenuDevConsole.cpp:398
1153 msgid "Toggled the hud"
1154 msgstr ""
1155
1156 #: ../../../src/MenuDevConsole.cpp:402
1157 msgid "Toggled the FPS counter"
1158 msgstr ""
1159
1160 #: ../../../src/MenuDevConsole.cpp:552
1161 msgid "ERROR: Incorrect number of arguments"
1162 msgstr ""
1163
1164 #: ../../../src/MenuDevConsole.cpp:554 ../../../src/MenuDevConsole.cpp:582
1165 msgid "HINT:"
1166 msgstr ""
1167
1168 #: ../../../src/MenuDevConsole.cpp:554
1169 msgid "<id>"
1170 msgstr ""
1171
1172 #: ../../../src/MenuDevConsole.cpp:570
1173 #, c-format
1174 msgid "ERROR: '%s' is not a valid event key"
1175 msgstr ""
1176
1177 #: ../../../src/MenuDevConsole.cpp:580
1178 msgid "ERROR: Too few arguments"
1179 msgstr ""
1180
1181 #: ../../../src/MenuDevConsole.cpp:582
1182 msgid "<key>=<val> <key>=<val> ..."
1183 msgstr ""
1184
1185 #: ../../../src/MenuDevConsole.cpp:587
1186 msgid "ERROR: Unknown command"
1187 msgstr ""
1188
1189 #: ../../../src/MenuDevConsole.cpp:589
1190 msgid "HINT: Type help"
1191 msgstr ""
1192
1193 #: ../../../src/MenuEnemy.cpp:162
1194 #, c-format
1195 msgid "%s level %d"
1196 msgstr ""
1197
1198 #: ../../../src/MenuEnemy.cpp:186
1199 msgid "Dead"
1200 msgstr ""
1201
1202 #: ../../../src/MenuEnemy.cpp:188
1203 msgid "Destroyed"
1204 msgstr ""
1205
1206 #: ../../../src/MenuGameOver.cpp:69
1207 msgid "Game Over"
1208 msgstr ""
1209
1210 #: ../../../src/MenuInventory.cpp:178
1211 #, c-format
1212 msgid "Lost %d%% of %s."
1213 msgstr ""
1214
1215 #: ../../../src/MenuInventory.cpp:185
1216 #, c-format
1217 msgid "Lost %d%% of total XP."
1218 msgstr ""
1219
1220 #: ../../../src/MenuInventory.cpp:190
1221 #, c-format
1222 msgid "Lost %d%% of current level XP."
1223 msgstr ""
1224
1225 #: ../../../src/MenuInventory.cpp:216
1226 #, c-format
1227 msgid "Lost %s."
1228 msgstr ""
1229
1230 #: ../../../src/MenuInventory.cpp:258 ../../../src/MenuStash.cpp:276
1231 #, c-format
1232 msgid "%d %s"
1233 msgstr ""
1234
1235 #: ../../../src/MenuInventory.cpp:301
1236 msgid "Pick up item(s):"
1237 msgstr ""
1238
1239 #: ../../../src/MenuInventory.cpp:302
1240 msgid "Use or equip item:"
1241 msgstr ""
1242
1243 #: ../../../src/MenuInventory.cpp:303
1244 #, c-format
1245 msgid "%s modifiers"
1246 msgstr ""
1247
1248 #: ../../../src/MenuInventory.cpp:304
1249 msgid "Select a quantity of item:"
1250 msgstr ""
1251
1252 #: ../../../src/MenuInventory.cpp:307
1253 msgid "Stash item stack:"
1254 msgstr ""
1255
1256 #: ../../../src/MenuInventory.cpp:309
1257 msgid "Sell item stack:"
1258 msgstr ""
1259
1260 #: ../../../src/MenuInventory.cpp:576
1261 msgid "You don't have enough of the required item."
1262 msgstr ""
1263
1264 #: ../../../src/MenuInventory.cpp:588
1265 msgid "You can't use this item right now."
1266 msgstr ""
1267
1268 #: ../../../src/MenuInventory.cpp:600
1269 msgid "This item can only be used from the action bar."
1270 msgstr ""
1271
1272 #: ../../../src/MenuInventory.cpp:718
1273 msgid "Inventory is full."
1274 msgstr ""
1275
1276 #: ../../../src/MenuInventory.cpp:843
1277 #, c-format
1278 msgid "Not enough %s."
1279 msgstr ""
1280
1281 #: ../../../src/MenuInventory.cpp:863 ../../../src/MenuInventory.cpp:870
1282 msgid "This item can not be sold."
1283 msgstr ""
1284
1285 #: ../../../src/MenuLog.cpp:91
1286 msgid "Notes"
1287 msgstr ""
1288
1289 #: ../../../src/MenuLog.cpp:92
1290 msgid "Quests"
1291 msgstr ""
1292
1293 #: ../../../src/MenuManager.cpp:305
1294 #, c-format
1295 msgid "XP: %d/%d"
1296 msgstr ""
1297
1298 #: ../../../src/MenuManager.cpp:875
1299 msgid "This item can not be dropped."
1300 msgstr ""
1301
1302 #: ../../../src/MenuManager.cpp:1501
1303 msgid "Equipped"
1304 msgstr ""
1305
1306 #: ../../../src/MenuMovementType.cpp:87
1307 msgid "Select a Movement Type"
1308 msgstr ""
1309
1310 #: ../../../src/MenuMovementType.cpp:89
1311 msgid "Can be changed later in the Configuration menu."
1312 msgstr ""
1313
1314 #: ../../../src/MenuMovementType.cpp:92 ../../../src/MenuMovementType.cpp:122
1315 msgid "Keyboard"
1316 msgstr ""
1317
1318 #: ../../../src/MenuMovementType.cpp:93 ../../../src/MenuMovementType.cpp:128
1319 msgid "Mouse"
1320 msgstr ""
1321
1322 #: ../../../src/MenuMovementType.cpp:129
1323 msgid "Button"
1324 msgstr ""
1325
1326 #: ../../../src/MenuNumPicker.cpp:59
1327 msgid "Enter amount:"
1328 msgstr ""
1329
1330 #: ../../../src/MenuPowers.cpp:894
1331 msgid "Passive"
1332 msgstr ""
1333
1334 #: ../../../src/MenuPowers.cpp:901
1335 #, c-format
1336 msgid "Costs %d MP"
1337 msgstr ""
1338
1339 #: ../../../src/MenuPowers.cpp:905
1340 #, c-format
1341 msgid "Costs %d HP"
1342 msgstr ""
1343
1344 #: ../../../src/MenuPowers.cpp:909
1345 msgid "Cooldown:"
1346 msgstr ""
1347
1348 #: ../../../src/MenuPowers.cpp:960 ../../../src/MenuPowers.cpp:963
1349 msgid "Damage per second"
1350 msgstr ""
1351
1352 #: ../../../src/MenuPowers.cpp:966 ../../../src/MenuPowers.cpp:969
1353 msgid "HP per second"
1354 msgstr ""
1355
1356 #: ../../../src/MenuPowers.cpp:972 ../../../src/MenuPowers.cpp:975
1357 msgid "MP per second"
1358 msgstr ""
1359
1360 #: ../../../src/MenuPowers.cpp:979
1361 msgid "Immobilize"
1362 msgstr ""
1363
1364 #: ../../../src/MenuPowers.cpp:987
1365 msgid "Immunity"
1366 msgstr ""
1367
1368 #: ../../../src/MenuPowers.cpp:990
1369 msgid "Immunity to damage over time"
1370 msgstr ""
1371
1372 #: ../../../src/MenuPowers.cpp:993
1373 msgid "Immunity to slow"
1374 msgstr ""
1375
1376 #: ../../../src/MenuPowers.cpp:996
1377 msgid "Immunity to stun"
1378 msgstr ""
1379
1380 #: ../../../src/MenuPowers.cpp:999
1381 msgid "Immunity to HP steal"
1382 msgstr ""
1383
1384 #: ../../../src/MenuPowers.cpp:1002
1385 msgid "Immunity to MP steal"
1386 msgstr ""
1387
1388 #: ../../../src/MenuPowers.cpp:1005
1389 msgid "Immunity to knockback"
1390 msgstr ""
1391
1392 #: ../../../src/MenuPowers.cpp:1008
1393 msgid "Immunity to damage reflection"
1394 msgstr ""
1395
1396 #: ../../../src/MenuPowers.cpp:1014
1397 msgid "Stun"
1398 msgstr ""
1399
1400 #: ../../../src/MenuPowers.cpp:1017
1401 msgid "Automatic revive on death"
1402 msgstr ""
1403
1404 #: ../../../src/MenuPowers.cpp:1020
1405 msgid "Convert"
1406 msgstr ""
1407
1408 #: ../../../src/MenuPowers.cpp:1023
1409 msgid "Fear"
1410 msgstr ""
1411
1412 #: ../../../src/MenuPowers.cpp:1026
1413 msgid "Lifespan"
1414 msgstr ""
1415
1416 #: ../../../src/MenuPowers.cpp:1050
1417 msgid "Magical Shield"
1418 msgstr ""
1419
1420 #: ../../../src/MenuPowers.cpp:1079
1421 msgid "Healing"
1422 msgstr ""
1423
1424 #: ../../../src/MenuPowers.cpp:1082
1425 msgid "Knockback"
1426 msgstr ""
1427
1428 #: ../../../src/MenuPowers.cpp:1106
1429 #, c-format
1430 msgid "%d%% chance"
1431 msgstr ""
1432
1433 #: ../../../src/MenuPowers.cpp:1158
1434 msgid "Base Accuracy"
1435 msgstr ""
1436
1437 #: ../../../src/MenuPowers.cpp:1178
1438 msgid "Base Critical Chance"
1439 msgstr ""
1440
1441 #: ../../../src/MenuPowers.cpp:1186
1442 msgid "Ignores Absorbtion"
1443 msgstr ""
1444
1445 #: ../../../src/MenuPowers.cpp:1191
1446 msgid "Ignores Avoidance"
1447 msgstr ""
1448
1449 #: ../../../src/MenuPowers.cpp:1196
1450 #, c-format
1451 msgid "%d%% Chance to crit slowed targets"
1452 msgstr ""
1453
1454 #: ../../../src/MenuPowers.cpp:1201
1455 #, c-format
1456 msgid "Elemental Damage (%s)"
1457 msgstr ""
1458
1459 #: ../../../src/MenuPowers.cpp:1210
1460 #, c-format
1461 msgid "Requires a %s"
1462 msgstr ""
1463
1464 #: ../../../src/MenuPowers.cpp:1248 ../../../src/MenuPowers.cpp:1251
1465 #, c-format
1466 msgid "Requires Power: %s"
1467 msgstr ""
1468
1469 #: ../../../src/MenuPowers.cpp:1260
1470 msgid "Click to Unlock (uses 1 Skill Point)"
1471 msgstr ""
1472
1473 #: ../../../src/MenuPowers.cpp:1264 ../../../src/MenuPowers.cpp:1266
1474 msgid "Requires 1 Skill Point"
1475 msgstr ""
1476
1477 #: ../../../src/MenuPowers.cpp:1466
1478 #, c-format
1479 msgid "Available skill points: %d"
1480 msgstr ""
1481
1482 #: ../../../src/MenuPowers.cpp:1498
1483 msgid "Next Level:"
1484 msgstr ""
1485
1486 #: ../../../src/MenuStash.cpp:80 ../../../src/MenuStash.cpp:161
1487 msgid "Stash"
1488 msgstr ""
1489
1490 #: ../../../src/MenuStash.cpp:174 ../../../src/MenuStash.cpp:188
1491 msgid "Private"
1492 msgstr ""
1493
1494 #: ../../../src/MenuStash.cpp:175
1495 msgid "Shared"
1496 msgstr ""
1497
1498 #: ../../../src/MenuStash.cpp:340
1499 msgid "This item can not be stored in the stash."
1500 msgstr ""
1501
1502 #: ../../../src/MenuStash.cpp:345
1503 msgid "This item can not be stored in the private stash."
1504 msgstr ""
1505
1506 #: ../../../src/MenuStash.cpp:350
1507 msgid "This item can not be stored in the shared stash."
1508 msgstr ""
1509
1510 #: ../../../src/MenuStash.cpp:360
1511 msgid "Stash is full."
1512 msgstr ""
1513
1514 #: ../../../src/MenuStash.cpp:414
1515 #, c-format
1516 msgid "Can not store item in stash: %s"
1517 msgstr ""
1518
1519 #: ../../../src/MenuTalker.cpp:448
1520 #, c-format
1521 msgid "<dialog node %d>"
1522 msgstr ""
1523
1524 #: ../../../src/MenuTalker.cpp:456
1525 msgid "Trade"
1526 msgstr ""
1527
1528 #: ../../../src/MenuVendor.cpp:60
1529 msgid "Buyback"
1530 msgstr ""
1531
1532 #: ../../../src/MenuVendor.cpp:283
1533 msgid "Vendor"
1534 msgstr ""
1535
1536 #: ../../../src/PowerManager.cpp:1204
1537 #, c-format
1538 msgid "+%d Shield"
1539 msgstr ""
1540
1541 #: ../../../src/PowerManager.cpp:1461
1542 msgid "You are already transformed, untransform first."
1543 msgstr ""
1544
1545 #: ../../../src/PowerManager.cpp:1473
1546 msgid "Could not untransform at this position."
1547 msgstr ""
1548
1549 #: ../../../src/QuestLog.cpp:234
1550 msgid "Completed Quests"
1551 msgstr ""
1552
1553 #: ../../../src/SaveLoad.cpp:250 ../../../src/SaveLoad.cpp:251
1554 msgid "Game saved."
1555 msgstr ""
1556
1557 #: ../../../src/SDLInputState.cpp:645
1558 msgid "BkSp"
1559 msgstr ""
1560
1561 #: ../../../src/SDLInputState.cpp:646
1562 msgid "Caps"
1563 msgstr ""
1564
1565 #: ../../../src/SDLInputState.cpp:647
1566 msgid "Del"
1567 msgstr ""
1568
1569 #: ../../../src/SDLInputState.cpp:649 ../../../src/SDLInputState.cpp:679
1570 msgid "End"
1571 msgstr ""
1572
1573 #: ../../../src/SDLInputState.cpp:650
1574 msgid "Esc"
1575 msgstr ""
1576
1577 #: ../../../src/SDLInputState.cpp:651 ../../../src/SDLInputState.cpp:681
1578 msgid "Home"
1579 msgstr ""
1580
1581 #: ../../../src/SDLInputState.cpp:652
1582 msgid "Ins"
1583 msgstr ""
1584
1585 #: ../../../src/SDLInputState.cpp:653
1586 msgid "LAlt"
1587 msgstr ""
1588
1589 #: ../../../src/SDLInputState.cpp:654
1590 msgid "LCtrl"
1591 msgstr ""
1592
1593 #: ../../../src/SDLInputState.cpp:656
1594 msgid "LShft"
1595 msgstr ""
1596
1597 #: ../../../src/SDLInputState.cpp:657
1598 msgid "Num"
1599 msgstr ""
1600
1601 #: ../../../src/SDLInputState.cpp:658
1602 msgid "PgDn"
1603 msgstr ""
1604
1605 #: ../../../src/SDLInputState.cpp:659
1606 msgid "PgUp"
1607 msgstr ""
1608
1609 #: ../../../src/SDLInputState.cpp:660 ../../../src/SDLInputState.cpp:690
1610 msgid "Pause"
1611 msgstr ""
1612
1613 #: ../../../src/SDLInputState.cpp:661
1614 msgid "Print"
1615 msgstr ""
1616
1617 #: ../../../src/SDLInputState.cpp:662
1618 msgid "RAlt"
1619 msgstr ""
1620
1621 #: ../../../src/SDLInputState.cpp:663
1622 msgid "RCtrl"
1623 msgstr ""
1624
1625 #: ../../../src/SDLInputState.cpp:664
1626 msgid "Ret"
1627 msgstr ""
1628
1629 #: ../../../src/SDLInputState.cpp:666
1630 msgid "RShft"
1631 msgstr ""
1632
1633 #: ../../../src/SDLInputState.cpp:667
1634 msgid "SLock"
1635 msgstr ""
1636
1637 #: ../../../src/SDLInputState.cpp:668
1638 msgid "Spc"
1639 msgstr ""
1640
1641 #: ../../../src/SDLInputState.cpp:669 ../../../src/SDLInputState.cpp:699
1642 msgid "Tab"
1643 msgstr ""
1644
1645 #: ../../../src/SDLInputState.cpp:675
1646 msgid "Backspace"
1647 msgstr ""
1648
1649 #: ../../../src/SDLInputState.cpp:676
1650 msgid "CapsLock"
1651 msgstr ""
1652
1653 #: ../../../src/SDLInputState.cpp:680
1654 msgid "Escape"
1655 msgstr ""
1656
1657 #: ../../../src/SDLInputState.cpp:682
1658 msgid "Insert"
1659 msgstr ""
1660
1661 #: ../../../src/SDLInputState.cpp:683
1662 msgid "Left Alt"
1663 msgstr ""
1664
1665 #: ../../../src/SDLInputState.cpp:684
1666 msgid "Left Ctrl"
1667 msgstr ""
1668
1669 #: ../../../src/SDLInputState.cpp:686
1670 msgid "Left Shift"
1671 msgstr ""
1672
1673 #: ../../../src/SDLInputState.cpp:687
1674 msgid "NumLock"
1675 msgstr ""
1676
1677 #: ../../../src/SDLInputState.cpp:688
1678 msgid "PageDown"
1679 msgstr ""
1680
1681 #: ../../../src/SDLInputState.cpp:689
1682 msgid "PageUp"
1683 msgstr ""
1684
1685 #: ../../../src/SDLInputState.cpp:691
1686 msgid "PrintScreen"
1687 msgstr ""
1688
1689 #: ../../../src/SDLInputState.cpp:692
1690 msgid "Right Alt"
1691 msgstr ""
1692
1693 #: ../../../src/SDLInputState.cpp:693
1694 msgid "Right Ctrl"
1695 msgstr ""
1696
1697 #: ../../../src/SDLInputState.cpp:694
1698 msgid "Return"
1699 msgstr ""
1700
1701 #: ../../../src/SDLInputState.cpp:696
1702 msgid "Right Shift"
1703 msgstr ""
1704
1705 #: ../../../src/SDLInputState.cpp:697
1706 msgid "ScrollLock"
1707 msgstr ""
1708
1709 #: ../../../src/SDLInputState.cpp:698
1710 msgid "Space"
1711 msgstr ""
1712
1713 #: ../../../src/SDLInputState.cpp:712
1714 #, c-format
1715 msgid "M%d"
1716 msgstr ""
1717
1718 #: ../../../src/SDLInputState.cpp:718
1719 #, c-format
1720 msgid "Mouse %d"
1721 msgstr ""
1722
1723 #: ../../../src/SDLInputState.cpp:728
1724 #, c-format
1725 msgid "JX%d-"
1726 msgstr ""
1727
1728 #: ../../../src/SDLInputState.cpp:730
1729 #, c-format
1730 msgid "Axis %d -"
1731 msgstr ""
1732
1733 #: ../../../src/SDLInputState.cpp:734
1734 #, c-format
1735 msgid "JX%d+"
1736 msgstr ""
1737
1738 #: ../../../src/SDLInputState.cpp:736
1739 #, c-format
1740 msgid "Axis %d +"
1741 msgstr ""
1742
1743 #: ../../../src/SDLInputState.cpp:741
1744 #, c-format
1745 msgid "JB%d"
1746 msgstr ""
1747
1748 #: ../../../src/SDLInputState.cpp:743
1749 #, c-format
1750 msgid "Button %d"
1751 msgstr ""
1752
1753 #: ../../../src/SDLInputState.cpp:789
1754 msgid "Touch control D-Pad"
1755 msgstr ""
1756
1757 #: ../../../src/SDLInputState.cpp:812
1758 msgid "Touch control buttons"
1759 msgstr ""
1760
1761 #: ../../../src/SDLInputState.cpp:826
1762 msgid "Tap"
1763 msgstr ""
1764
1765 #: ../../../src/SDLInputState.cpp:878 ../../../src/SDLInputState.cpp:880
1766 #, c-format
1767 msgid "Can not bind: %s"
1768 msgstr ""
1769
1770 #: ../../../src/SDLInputState.cpp:892 ../../../src/SDLInputState.cpp:896
1771 #: ../../../src/SDLInputState.cpp:900
1772 #, c-format
1773 msgid "'%s' is no longer bound to:"
1774 msgstr ""
1775
1776 #: ../../../src/Stats.cpp:38
1777 msgid "Max HP"
1778 msgstr ""
1779
1780 #: ../../../src/Stats.cpp:39
1781 msgid "Total amount of HP."
1782 msgstr ""
1783
1784 #: ../../../src/Stats.cpp:43
1785 msgid "HP Regen"
1786 msgstr ""
1787
1788 #: ../../../src/Stats.cpp:44
1789 msgid "Ticks of HP regen per minute."
1790 msgstr ""
1791
1792 #: ../../../src/Stats.cpp:48
1793 msgid "Max MP"
1794 msgstr ""
1795
1796 #: ../../../src/Stats.cpp:49
1797 msgid "Total amount of MP."
1798 msgstr ""
1799
1800 #: ../../../src/Stats.cpp:53
1801 msgid "MP Regen"
1802 msgstr ""
1803
1804 #: ../../../src/Stats.cpp:54
1805 msgid "Ticks of MP regen per minute."
1806 msgstr ""
1807
1808 #: ../../../src/Stats.cpp:58
1809 msgid "Accuracy"
1810 msgstr ""
1811
1812 #: ../../../src/Stats.cpp:59
1813 msgid ""
1814 "Accuracy rating. The enemy's Avoidance rating is subtracted from this value "
1815 "to calculate your likeliness to land a direct hit."
1816 msgstr ""
1817
1818 #: ../../../src/Stats.cpp:63
1819 msgid "Avoidance"
1820 msgstr ""
1821
1822 #: ../../../src/Stats.cpp:64
1823 msgid ""
1824 "Avoidance rating. This value is subtracted from the enemy's Accuracy rating "
1825 "to calculate their likeliness to land a direct hit."
1826 msgstr ""
1827
1828 #: ../../../src/Stats.cpp:68
1829 msgid "Absorb Min"
1830 msgstr ""
1831
1832 #: ../../../src/Stats.cpp:69 ../../../src/Stats.cpp:74
1833 msgid "Reduces the amount of damage taken."
1834 msgstr ""
1835
1836 #: ../../../src/Stats.cpp:73
1837 msgid "Absorb Max"
1838 msgstr ""
1839
1840 #: ../../../src/Stats.cpp:78
1841 msgid "Critical Hit Chance"
1842 msgstr ""
1843
1844 #: ../../../src/Stats.cpp:79
1845 msgid "Chance for an attack to do extra damage."
1846 msgstr ""
1847
1848 #: ../../../src/Stats.cpp:83
1849 msgid "Bonus XP"
1850 msgstr ""
1851
1852 #: ../../../src/Stats.cpp:84
1853 msgid "Increases the XP gained per kill."
1854 msgstr ""
1855
1856 #: ../../../src/Stats.cpp:88
1857 #, c-format
1858 msgid "Bonus %s"
1859 msgstr ""
1860
1861 #: ../../../src/Stats.cpp:89
1862 #, c-format
1863 msgid "Increases the %s found per drop."
1864 msgstr ""
1865
1866 #: ../../../src/Stats.cpp:93
1867 msgid "Item Find Chance"
1868 msgstr ""
1869
1870 #: ../../../src/Stats.cpp:94
1871 msgid "Increases the chance that an enemy will drop an item."
1872 msgstr ""
1873
1874 #: ../../../src/Stats.cpp:98
1875 msgid "Stealth"
1876 msgstr ""
1877
1878 #: ../../../src/Stats.cpp:99
1879 msgid "Increases your ability to move undetected."
1880 msgstr ""
1881
1882 #: ../../../src/Stats.cpp:103
1883 msgid "Poise"
1884 msgstr ""
1885
1886 #: ../../../src/Stats.cpp:104
1887 msgid "Reduces your chance of stumbling when hit."
1888 msgstr ""
1889
1890 #: ../../../src/Stats.cpp:108
1891 msgid "Missile Reflect Chance"
1892 msgstr ""
1893
1894 #: ../../../src/Stats.cpp:109
1895 msgid "Increases your chance of reflecting missiles back at enemies."
1896 msgstr ""
1897
1898 #: ../../../src/Stats.cpp:113
1899 msgid "Damage Reflection"
1900 msgstr ""
1901
1902 #: ../../../src/Stats.cpp:114
1903 msgid "Deals a percentage of damage taken back to the attacker."
1904 msgstr ""
1905
1906 #: ../../../src/Stats.cpp:118
1907 msgid "HP Steal"
1908 msgstr ""
1909
1910 #: ../../../src/Stats.cpp:119
1911 msgid "Percentage of HP stolen per hit."
1912 msgstr ""
1913
1914 #: ../../../src/Stats.cpp:123
1915 msgid "MP Steal"
1916 msgstr ""
1917
1918 #: ../../../src/Stats.cpp:124
1919 msgid "Percentage of MP stolen per hit."
1920 msgstr ""
1921
1922 #: ../../../src/Stats.cpp:128
1923 msgid "Base HP"
1924 msgstr ""
1925
1926 #: ../../../src/Stats.cpp:133
1927 msgid "Base MP"
1928 msgstr ""
1929
1930 #: ../../../src/Utils.cpp:365
1931 msgid "k"
1932 msgstr ""
1933
1934 #: ../../../src/Utils.cpp:635
1935 #, c-format
1936 msgid "%s second"
1937 msgstr ""
1938
1939 #: ../../../src/Utils.cpp:638
1940 #, c-format
1941 msgid "%s seconds"
1942 msgstr ""
1943
1944 #: ../../../src/Version.cpp:139
1945 msgid "or newer"
1946 msgstr ""
1947
1948 #: ../../../src/Version.cpp:142
1949 msgid "or older"
1950 msgstr ""
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 pos=0,0,640,176
1 align=top
2
3 close=613,3
4 label_title=hidden
5 confirm=463,3
6 input=7,7
7 history=8,32,613,140
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
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) {
151
152 if (index >= gfx.size()/max_kinds) {
153 Utils::logError("Animation: Animation(%s) adding rect(%d, %d, %d, %d) to frame index(%u) out of bounds. must be in [0, %d]",
154 name.c_str(), rect.x, rect.y, rect.w, rect.h, index, static_cast<int>(gfx.size())/max_kinds);
155 return;
156 }
157 if (kind > max_kinds-1) {
158 Utils::logError("Animation: Animation(%s) adding rect(%d, %d, %d, %d) to frame(%u) kind(%u) out of bounds. must be in [0, %d]",
159 name.c_str(), rect.x, rect.y, rect.w, rect.h, index, kind, max_kinds-1);
160 return;
152 bool Animation::addFrame(unsigned short index, unsigned short kind, const Rect& rect, const Point& _render_offset, const std::string& key) {
153 if (index >= gfx.size()/max_kinds || kind > max_kinds-1) {
154 return false;
161155 }
162156
163157 unsigned i = max_kinds*index+kind;
164 gfx[i] = rect;
158 gfx[i].first = sprite->getImageFromKey(key);
159 gfx[i].second = rect;
165160 render_offset[i] = _render_offset;
161
162 return true;
166163 }
167164
168165 void Animation::advanceFrame() {
233230 Renderable r;
234231 if (!frames.empty()) {
235232 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;
233 r.src.x = gfx[index].second.x;
234 r.src.y = gfx[index].second.y;
235 r.src.w = gfx[index].second.w;
236 r.src.h = gfx[index].second.h;
240237 r.offset.x = render_offset[index].x;
241238 r.offset.y = render_offset[index].y;
242 r.image = sprite;
239 r.image = gfx[index].first;
243240 r.blend_mode = blend_mode;
244241 r.color_mod = color_mod;
245242 r.alpha_mod = alpha_mod;
310307 }
311308
312309 bool Animation::isFirstFrame() {
313 return cur_frame_index == 0;
310 return cur_frame_index == 0 && static_cast<float>(cur_frame_index) == cur_frame_index_f;
314311 }
315312
316313 bool Animation::isLastFrame() {
324321 bool Animation::isActiveFrame() {
325322 if (type == ANIMTYPE_BACK_FORTH) {
326323 if (std::find(active_frames.begin(), active_frames.end(), elapsed_frames) != active_frames.end())
327 return cur_frame_index == getLastFrameIndex(cur_frame);
324 return cur_frame_index == getLastFrameIndex(cur_frame) && static_cast<float>(cur_frame_index) == cur_frame_index_f;
328325 }
329326 else {
330327 if (std::find(active_frames.begin(), active_frames.end(), cur_frame) != active_frames.end()) {
331 if (cur_frame_index == getLastFrameIndex(cur_frame)) {
328 if (cur_frame_index == getLastFrameIndex(cur_frame) && static_cast<float>(cur_frame_index) == cur_frame_index_f) {
332329 if (type == ANIMTYPE_PLAY_ONCE)
333330 active_frame_triggered = true;
334331
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 bool 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 if (!newanim->addFrame(index, direction, r, offset, key)) {
212 parser.error("AnimationSet: Frame index (%u) is out of bounds [0, %hu].", index, frames);
213 }
216214 }
217215 else {
218216 parser.error("AnimationSet: '%s' is not a valid key.", parser.key.c_str());
249247 for (unsigned i = 0; i < animations.size(); ++i)
250248 delete animations[i];
251249 delete defaultAnimation;
252 }
253
250 delete sprite;
251 }
252
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 "Settings.h"
29 #include "SharedResources.h"
30 #include "Utils.h"
31 #include "UtilsMath.h"
32
33 Camera::Camera()
34 : pos()
35 , shake()
36 , target()
37 , prev_cam_target()
38 , prev_cam_dx(0)
39 , prev_cam_dy(0)
40 , cam_threshold(eset->misc.camera_speed / Settings::LOGIC_FPS / 50.f)
41 , shake_strength(8)
42 {
43 }
44
45 Camera::~Camera() {
46 }
47
48 void Camera::logic() {
49 // gradulally move camera towards target
50
51 float cam_delta = Utils::calcDist(pos, target);
52 float cam_dx = (Utils::calcDist(FPoint(pos.x, target.y), target)) / eset->misc.camera_speed;
53 float cam_dy = (Utils::calcDist(FPoint(target.x, pos.y), target)) / eset->misc.camera_speed;
54
55 if (prev_cam_target.x == target.x && prev_cam_target.y == target.y) {
56 // target hasn't changed
57
58 if (cam_delta == 0 || cam_delta >= cam_threshold) {
59 // camera is stationary or moving fast enough, so store the deltas
60 prev_cam_dx = cam_dx;
61 prev_cam_dy = cam_dy;
62 }
63 else if (cam_delta < cam_threshold) {
64 if (cam_dx < prev_cam_dx || cam_dy < prev_cam_dy) {
65 // maintain camera speed
66 cam_dx = prev_cam_dx;
67 cam_dy = prev_cam_dy;
68 }
69 else {
70 // camera didn't get a chance to speed up, so set the minimum speed
71 float b = fabsf(pos.x - target.x);
72 float alpha = acosf(b / cam_delta);
73
74 float fast_dx = cam_threshold * cosf(alpha);
75 float fast_dy = cam_threshold * sinf(alpha);
76
77 prev_cam_dx = fast_dx / eset->misc.camera_speed;
78 prev_cam_dy = fast_dy / eset->misc.camera_speed;
79 }
80 }
81 }
82 else {
83 // target changed, reset
84 prev_cam_target = target;
85 prev_cam_dx = 0;
86 prev_cam_dy = 0;
87 }
88
89 // camera movement might overshoot its target, so compensate for that here
90 if (pos.x < target.x) {
91 pos.x += cam_dx;
92 if (pos.x > target.x)
93 pos.x = target.x;
94 }
95 else if (pos.x > target.x) {
96 pos.x -= cam_dx;
97 if (pos.x < target.x)
98 pos.x = target.x;
99 }
100 if (pos.y < target.y) {
101 pos.y += cam_dy;
102 if (pos.y > target.y)
103 pos.y = target.y;
104 }
105 else if (pos.y > target.y) {
106 pos.y -= cam_dy;
107 if (pos.y < target.y)
108 pos.y = target.y;
109 }
110
111 // handle camera shaking timer
112 shake_timer.tick();
113
114 if (shake_timer.isEnd()) {
115 shake.x = pos.x;
116 shake.y = pos.y;
117 }
118 else {
119 shake.x = pos.x + static_cast<float>((rand() % (shake_strength * 2)) - shake_strength) * 0.0078125f;
120 shake.y = pos.y + static_cast<float>((rand() % (shake_strength * 2)) - shake_strength) * 0.0078125f;
121 }
122 }
123
124 void Camera::setTarget(const FPoint& _target) {
125 target = _target;
126 }
127
128 void Camera::warpTo(const FPoint& _target) {
129 pos = shake = target = prev_cam_target = _target;
130 shake_timer.reset(Timer::END);
131 prev_cam_dx = 0;
132 prev_cam_dy = 0;
133 }
134
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;
88 temp++;
87 ++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
57 speed = 60.f / settings->max_frames_per_sec;
60 fade_duration = 0;
61 speed = Settings::LOGIC_FPS / settings->max_frames_per_sec;
5862 offset = 48; // average height of flare-game enemies, so a sensible default
5963
6064 // Load config settings
6872 }
6973 else if(infile.key == "speed") {
7074 // @ATTR speed|int|Motion speed of the combat text.
71 speed = static_cast<float>(Parse::toInt(infile.val) * 60) / settings->max_frames_per_sec;
75 speed = (static_cast<float>(Parse::toInt(infile.val)) * Settings::LOGIC_FPS) / settings->max_frames_per_sec;
7276 }
7377 else if (infile.key == "offset") {
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() {
91 if (!show_cursor)
138 if (!show_cursor) {
139 inpt->hideCursor();
92140 return;
141 }
93142
94143 if (settings->hardware_cursor) {
95144 inpt->showCursor();
99148 cursor_current = NULL;
100149 offset_current = NULL;
101150
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 }
151 setCursor(CURSOR_NORMAL);
111152 }
112153
113154 void CursorManager::render() {
125166 }
126167 }
127168
169 void CursorManager::setLowHP(bool val) {
170 low_hp = val;
171 }
172
128173 void CursorManager::setCursor(int type) {
129174 if (settings->hardware_cursor) return;
130175
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;
176 if (type == CURSOR_INTERACT && (cursor_interact || (cursor_lhp_interact && low_hp))) {
177 inpt->hideCursor();
178 if (low_hp && cursor_lhp_interact) {
179 cursor_current = cursor_lhp_interact;
180 offset_current = &offset_lhp_interact;
181 }
182 else if (cursor_interact) {
183 cursor_current = cursor_interact;
184 offset_current = &offset_interact;
185 }
186 }
187 else if (type == CURSOR_TALK && (cursor_talk || (cursor_lhp_talk && low_hp))) {
188 inpt->hideCursor();
189 if (low_hp && cursor_lhp_talk) {
190 cursor_current = cursor_lhp_talk;
191 offset_current = &offset_lhp_talk;
192 }
193 else if (cursor_talk) {
194 cursor_current = cursor_talk;
195 offset_current = &offset_talk;
196 }
197 }
198 else if (type == CURSOR_ATTACK && (cursor_attack || (cursor_lhp_attack && low_hp))) {
199 inpt->hideCursor();
200 if (low_hp && cursor_lhp_attack) {
201 cursor_current = cursor_lhp_attack;
202 offset_current = &offset_lhp_attack;
203 }
204 else if (cursor_attack) {
205 cursor_current = cursor_attack;
206 offset_current = &offset_attack;
207 }
208 }
209 else if (cursor_normal || (cursor_lhp_normal && low_hp)) {
210 inpt->hideCursor();
211 if (low_hp && cursor_lhp_normal) {
212 cursor_current = cursor_lhp_normal;
213 offset_current = &offset_lhp_normal;
214 }
215 else if (cursor_normal) {
216 cursor_current = cursor_normal;
217 offset_current = &offset_normal;
218 }
150219 }
151220 else {
152221 // 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 bool do_timed_effect = ei.timer.isWholeSecond() || (ei.timer.getDuration() < settings->max_frames_per_sec && ei.timer.isBegin());
296
297 // @TYPE damage|Damage per second
298 if (ei.type == Effect::DAMAGE && do_timed_effect) damage += ei.magnitude;
299 // @TYPE damage_percent|Damage per second (percentage of max HP)
300 else if (ei.type == Effect::DAMAGE_PERCENT && do_timed_effect) damage_percent += ei.magnitude;
301 // @TYPE hpot|HP restored per second
302 else if (ei.type == Effect::HPOT && do_timed_effect) hpot += ei.magnitude;
303 // @TYPE hpot_percent|HP restored per second (percentage of max HP)
304 else if (ei.type == Effect::HPOT_PERCENT && do_timed_effect) hpot_percent += ei.magnitude;
305 // @TYPE mpot|MP restored per second
306 else if (ei.type == Effect::MPOT && do_timed_effect) mpot += ei.magnitude;
307 // @TYPE mpot_percent|MP restored per second (percentage of max MP)
308 else if (ei.type == Effect::MPOT_PERCENT && do_timed_effect) mpot_percent += ei.magnitude;
309 // @TYPE speed|Changes movement speed. A magnitude of 100 is 100% speed (aka normal speed).
310 else if (ei.type == Effect::SPEED) speed = (static_cast<float>(ei.magnitude) * speed) / 100.f;
311 // @TYPE attack_speed|Changes attack speed. A magnitude of 100 is 100% speed (aka normal speed).
312 // attack speed is calculated when getAttackSpeed() is called
313
314 // @TYPE immunity|Applies all immunity effects. Magnitude is ignored.
315 else if (ei.type == Effect::IMMUNITY) {
316 immunity_damage = true;
317 immunity_slow = true;
318 immunity_stun = true;
319 immunity_hp_steal = true;
320 immunity_mp_steal = true;
321 immunity_knockback = true;
322 immunity_damage_reflect = true;
323 immunity_stat_debuff = true;
324 }
325 // @TYPE immunity_damage|Removes and prevents damage over time. Magnitude is ignored.
326 else if (ei.type == Effect::IMMUNITY_DAMAGE) immunity_damage = true;
327 // @TYPE immunity_slow|Removes and prevents slow effects. Magnitude is ignored.
328 else if (ei.type == Effect::IMMUNITY_SLOW) immunity_slow = true;
329 // @TYPE immunity_stun|Removes and prevents stun effects. Magnitude is ignored.
330 else if (ei.type == Effect::IMMUNITY_STUN) immunity_stun = true;
331 // @TYPE immunity_hp_steal|Prevents HP stealing. Magnitude is ignored.
332 else if (ei.type == Effect::IMMUNITY_HP_STEAL) immunity_hp_steal = true;
333 // @TYPE immunity_mp_steal|Prevents MP stealing. Magnitude is ignored.
334 else if (ei.type == Effect::IMMUNITY_MP_STEAL) immunity_mp_steal = true;
335 // @TYPE immunity_knockback|Removes and prevents knockback effects. Magnitude is ignored.
336 else if (ei.type == Effect::IMMUNITY_KNOCKBACK) immunity_knockback = true;
337 // @TYPE immunity_damage_reflect|Prevents damage reflection. Magnitude is ignored.
338 else if (ei.type == Effect::IMMUNITY_DAMAGE_REFLECT) immunity_damage_reflect = true;
339 // @TYPE immunity_stat_debuff|Prevents stat value altering effects that have a magnitude less than 0. Magnitude is ignored.
340 else if (ei.type == Effect::IMMUNITY_STAT_DEBUFF) immunity_stat_debuff = true;
341
342 // @TYPE stun|Can't move or attack. Being attacked breaks stun.
343 else if (ei.type == Effect::STUN) stun = true;
344 // @TYPE revive|Revives the player. Typically attached to a power that triggers when the player dies.
345 else if (ei.type == Effect::REVIVE) revive = true;
346 // @TYPE convert|Causes an enemy or an ally to switch allegiance
347 else if (ei.type == Effect::CONVERT) convert = true;
348 // @TYPE fear|Causes enemies to run away
349 else if (ei.type == Effect::FEAR) fear = true;
350 // @TYPE knockback|Pushes the target away from the source caster. Speed is the given value divided by the framerate cap.
351 else if (ei.type == Effect::KNOCKBACK) knockback_speed = static_cast<float>(ei.magnitude)/static_cast<float>(settings->max_frames_per_sec);
352
353 // @TYPE ${STATNAME}|Increases ${STATNAME}, where ${STATNAME} is any of the base stats. Examples: hp, avoidance, xp_gain
354 // @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
355 else if (ei.type >= Effect::TYPE_COUNT && ei.type < Effect::TYPE_COUNT + Stats::COUNT + static_cast<int>(eset->damage_types.count)) {
356 bonus[ei.type - Effect::TYPE_COUNT] += ei.magnitude;
357 }
358 // @TYPE ${ELEMENT}_resist|Increase Resistance % to ${ELEMENT}, where ${ELEMENT} is any found in engine/elements.txt. Example: fire_resist
359 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())) {
360 bonus_resist[ei.type - Effect::TYPE_COUNT - Stats::COUNT - eset->damage_types.count] += ei.magnitude;
361 }
362 // @TYPE ${PRIMARYSTAT}|Increases ${PRIMARYSTAT}, where ${PRIMARYSTAT} is any of the primary stats defined in engine/primary_stats.txt. Example: physical
363 else if (ei.type >= Effect::TYPE_COUNT) {
364 bonus_primary[ei.type - Effect::TYPE_COUNT - Stats::COUNT - eset->damage_types.count - eset->elements.list.size()] += ei.magnitude;
365 }
366
367 ei.timer.tick();
368
369 // expire shield effects
370 if (ei.magnitude_max > 0 && ei.magnitude == 0) {
371 // @TYPE shield|Create a damage absorbing barrier based on Mental damage stat. Duration is ignored.
372 if (ei.type == Effect::SHIELD) {
284373 removeEffect(i);
285374 i--;
286375 continue;
287376 }
288377 }
378 // expire effects based on animations
379 if ((ei.animation && ei.animation->isLastFrame()) || !ei.animation) {
380 // @TYPE heal|Restore HP based on Mental damage stat.
381 if (ei.type == Effect::HEAL) {
382 removeEffect(i);
383 i--;
384 continue;
385 }
386 }
289387
290388 // 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) {
389 if (ei.animation) {
390 if (!ei.animation->isCompleted())
391 ei.animation->advanceFrame();
392 }
393 }
394 }
395
396 void EffectManager::addEffect(EffectDef &effect, int duration, int magnitude, int source_type, PowerID power_id) {
299397 addEffectInternal(effect, duration, magnitude, source_type, false, power_id);
300398 }
301399
304402 addEffectInternal(effect, duration, magnitude, Power::SOURCE_TYPE_HERO, true, NO_POWER);
305403 }
306404
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);
405 void EffectManager::addEffectInternal(EffectDef &effect, int duration, int magnitude, int source_type, bool item, PowerID power_id) {
309406 refresh_stats = true;
310407
311408 // if we're already immune, don't add negative effects
312 if (immunity_damage && (effect_type == Effect::DAMAGE || effect_type == Effect::DAMAGE_PERCENT))
409 if (immunity_damage && (effect.type == Effect::DAMAGE || effect.type == Effect::DAMAGE_PERCENT))
313410 return;
314 else if (immunity_slow && effect_type == Effect::SPEED && magnitude < 100)
411 else if (immunity_slow && effect.type == Effect::SPEED && magnitude < 100)
315412 return;
316 else if (immunity_stun && effect_type == Effect::STUN)
413 else if (immunity_stun && effect.type == Effect::STUN)
317414 return;
318 else if (immunity_knockback && effect_type == Effect::KNOCKBACK)
415 else if (immunity_knockback && effect.type == Effect::KNOCKBACK)
319416 return;
320 else if (immunity_stat_debuff && effect_type > Effect::TYPE_COUNT && magnitude < 0)
417 else if (immunity_stat_debuff && effect.type > Effect::TYPE_COUNT && magnitude < 0)
321418 return;
322419
323420 // only allow one knockback effect at a time
324 if (effect_type == Effect::KNOCKBACK && knockback_speed != 0)
421 if (effect.type == Effect::KNOCKBACK && knockback_speed != 0)
325422 return;
326423
327 if (effect_type == Effect::ATTACK_SPEED && magnitude < 100) {
328 Utils::logInfo("EffectManager: Attack speeds less than 100 are unsupported.");
329 return;
330 }
331
332424 bool insert_effect = false;
425 size_t insert_pos;
333426 int stacks_applied = 0;
334 size_t insert_pos;
335427 int trigger = power_id > 0 ? powers->powers[power_id].passive_trigger : -1;
336428 size_t passive_id = (power_id > 0 && powers->powers[power_id].passive) ? power_id : 0;
337429
338430 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)
431 Effect& ei = effect_list[i-1];
432
433 // while checking only id would be sufficient, it is a slow string compare
434 // so we check the type first, which is an int compare, before taking the slow path
435 if (ei.type == effect.type && ei.id == effect.id) {
436 if (trigger > -1 && ei.trigger == trigger)
341437 return; // trigger effects can only be cast once per trigger
342438
343439 if (!effect.can_stack) {
344440 removeEffect(i-1);
345441 }
346442 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;
443 if (effect.type == Effect::SHIELD && effect.group_stack){
444 ei.magnitude += magnitude;
445
446 if (effect.max_stacks == -1
447 || (magnitude != 0 && ei.magnitude_max/magnitude < effect.max_stacks)){
448 ei.magnitude_max += magnitude;
353449 }
354450
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;
451 if (ei.magnitude > ei.magnitude_max){
452 ei.magnitude = ei.magnitude_max;
357453 }
358454
359455 return;
360456 }
361457
362 if (insert_effect == false) {
363 // to keep matching effects together, they are inserted after the most recent matching effect
458 if (insert_effect == false && effect.max_stacks != -1) {
459 // to keep stackable effects together, they are inserted after the most recent matching effect
364460 // otherwise, they are added to the end of the effect list
365461 insert_effect = true;
366462 insert_pos = i;
370466 }
371467 }
372468 // if we're adding an immunity effect, remove all negative effects
373 if (effect_type == Effect::IMMUNITY)
469 if (effect.type == Effect::IMMUNITY)
374470 clearNegativeEffects();
375 else if (effect_type == Effect::IMMUNITY_DAMAGE)
471 else if (effect.type == Effect::IMMUNITY_DAMAGE)
376472 clearNegativeEffects(Effect::IMMUNITY_DAMAGE);
377 else if (effect_type == Effect::IMMUNITY_SLOW)
473 else if (effect.type == Effect::IMMUNITY_SLOW)
378474 clearNegativeEffects(Effect::IMMUNITY_SLOW);
379 else if (effect_type == Effect::IMMUNITY_STUN)
475 else if (effect.type == Effect::IMMUNITY_STUN)
380476 clearNegativeEffects(Effect::IMMUNITY_STUN);
381 else if (effect_type == Effect::IMMUNITY_KNOCKBACK)
477 else if (effect.type == Effect::IMMUNITY_KNOCKBACK)
382478 clearNegativeEffects(Effect::IMMUNITY_KNOCKBACK);
383479 }
384480
387483 e.id = effect.id;
388484 e.name = effect.name;
389485 e.icon = effect.icon;
390 e.type = effect_type;
486 e.type = effect.type;
391487 e.render_above = effect.render_above;
392488 e.group_stack = effect.group_stack;
393 e.color_mod = effect.color_mod;
489 e.color_mod = effect.color_mod.encodeRGBA();
394490 e.alpha_mod = effect.alpha_mod;
395491 e.attack_speed_anim = effect.attack_speed_anim;
396492
397 if (effect.animation != "") {
493 if (!effect.animation.empty()) {
398494 e.loadAnimation(effect.animation);
399495 }
400496
401 e.ticks = e.duration = duration;
497 e.timer.setDuration(duration);
402498 e.magnitude = e.magnitude_max = magnitude;
403499 e.item = item;
404500 e.trigger = trigger;
405501 e.passive_id = passive_id;
406502 e.source_type = source_type;
407503
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)
504 if (insert_effect) {
505 if (effect.max_stacks != -1 && stacks_applied >= effect.max_stacks){
506 //Remove the oldest effect of the type
507 removeEffect(insert_pos-stacks_applied);
508
509 //All elements have shifted to left
510 insert_pos--;
511 }
512
417513 effect_list.insert(effect_list.begin() + insert_pos, e);
418 else
514 }
515 else {
419516 effect_list.push_back(e);
517 }
420518 }
421519
422520 void EffectManager::removeEffect(size_t id) {
512610 return over_dmg;
513611 }
514612
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
576613 bool EffectManager::isDebuffed() {
577614 for (size_t i=effect_list.size(); i > 0; i--) {
578615 if (effect_list[i-1].type == Effect::DAMAGE) return true;
586623 }
587624
588625 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)
626 uint32_t default_color = color_mod.encodeRGBA();
627 uint32_t no_color = Color(255, 255, 255).encodeRGBA();
628
629 for (size_t i=effect_list.size(); i > 0; i--) {
630 Effect& ei = effect_list[i-1];
631 if (ei.color_mod == no_color)
594632 continue;
595633
596 if (effect_list[i-1].color_mod != default_color) {
597 color_mod = effect_list[i-1].color_mod;
634 if (ei.color_mod != default_color) {
635 color_mod.decodeRGBA(ei.color_mod);
598636 return;
599637 }
600638 }
605643 uint8_t no_alpha = 255;
606644
607645 for (size_t i=effect_list.size(); i > 0; i--) {
608 if (effect_list[i-1].alpha_mod == no_alpha)
646 Effect& ei = effect_list[i-1];
647 if (ei.alpha_mod == no_alpha)
609648 continue;
610649
611 if (effect_list[i-1].alpha_mod != default_alpha) {
612 alpha_mod = effect_list[i-1].alpha_mod;
650 if (ei.alpha_mod != default_alpha) {
651 alpha_mod = ei.alpha_mod;
613652 return;
614653 }
615654 }
643682
644683 return attack_speed;
645684 }
685
686 int EffectManager::getDamageSourceType(int dmg_mode) {
687 if (!(dmg_mode == Effect::DAMAGE || dmg_mode == Effect::DAMAGE_PERCENT))
688 return -1;
689
690 int source_type = Power::SOURCE_TYPE_NEUTRAL;
691
692 for (size_t i = 0; i < effect_list.size(); ++i) {
693 Effect& ei = effect_list[i];
694 if (ei.type == dmg_mode) {
695 // anything other than ally source type take precedence, so we can return early
696 if (ei.source_type != Power::SOURCE_TYPE_ALLY)
697 return ei.source_type;
698
699 source_type = ei.source_type;
700 }
701 }
702
703 return source_type;
704 }
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;
67 camera_speed = 10.f;
68 save_oncutscene = true;
69 save_onstash = SAVE_ONSTASH_ALL;
70 save_anywhere = false;
71 camera_speed = 10.f * (static_cast<float>(settings->max_frames_per_sec) / Settings::LOGIC_FPS);
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 int test_v_height = 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>(test_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;
868
869 scrollbar_bg_color = Color(0,0,0,64);
833870
834871 FileParser infile;
835872 // @CLASS EngineSettings: Widgets|Description of engine/widget_settings.txt
856893 // @ATTR slot.quantity_label|label|Setting for the slot quantity text.
857894 slot_quantity_label = Parse::popLabelInfo(infile.val);
858895 }
896 else if (infile.key == "quantity_color") {
897 // @ATTR slot.quantity_color|color|Text color for the slot quantity text.
898 slot_quantity_color = Parse::toRGB(infile.val);
899 }
859900 else if (infile.key == "quantity_bg_color") {
860901 // @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.
861902 slot_quantity_bg_color = Parse::toRGBA(infile.val);
903 }
904 else if (infile.key == "hotkey_label") {
905 // @ATTR slot.hotkey_label|label|Setting for the slot hotkey text.
906 slot_hotkey_label = Parse::popLabelInfo(infile.val);
907 }
908 else if (infile.key == "hotkey_color") {
909 // @ATTR slot.hotkey_color|color|Text color for the slot hotkey text.
910 slot_hotkey_color = Parse::toRGB(infile.val);
911 }
912 else if (infile.key == "hotkey_bg_color") {
913 // @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.
914 slot_hotkey_bg_color = Parse::toRGBA(infile.val);
862915 }
863916 }
864917 else if (infile.section == "listbox") {
865918 if (infile.key == "text_margin") {
866919 // @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.
867920 listbox_text_margin = Parse::toPoint(infile.val);
921 }
922 }
923 else if (infile.section == "horizontal_list") {
924 if (infile.key == "text_width") {
925 // @ATTR horizontal_list.text_width|int|The pixel width of the text area that displays the currently selected item. Default is 150 pixels;
926 horizontal_list_text_width = Parse::toInt(infile.val);
927 }
928 }
929 else if (infile.section == "scrollbar") {
930 if (infile.key == "bg_color") {
931 // @ATTR scrollbar.bg_color|color, int : Color, Alpha|The background color for the entire scrollbar.
932 scrollbar_bg_color = Parse::toRGBA(infile.val);
868933 }
869934 }
870935 }
899964 }
900965
901966 unsigned long EngineSettings::XPTable::getLevelXP(int level) {
902 if (level <= 1)
967 if (level <= 1 || xp_table.empty())
903968 return 0;
904969 else if (level > static_cast<int>(xp_table.size()))
905970 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;
267 Color scrollbar_bg_color;
251268 };
252269
253270 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 // standard NPCs don't target anything
132 if (e->stats.npc && !e->stats.hero_ally) return;
133
134 // stunned enemies can't act
135 if (e->stats.effects.stun) return;
136
137 StatBlock *target_stats = NULL;
138 float stealth_threat_range = (e->stats.threat_range * (100 - static_cast<float>(e->stats.hero_stealth))) / 100;
139
140 // check distance and line of sight between enemy and hero
141 // by default, the enemy pursues the hero directly
142 if (pc->stats.alive) {
143 target_dist = Utils::calcDist(e->stats.pos, pc->stats.pos);
144 target_stats = &pc->stats;
145 }
146 else {
147 target_dist = 0;
148 }
149 hero_dist = target_dist;
150
151 // if the minion gets too far, transport it to the player pos
152 if (e->stats.hero_ally && hero_dist > ALLY_TELEPORT_DISTANCE && !e->stats.in_combat) {
153 mapr->collider.unblock(e->stats.pos.x, e->stats.pos.y);
154 e->stats.pos.x = pc->stats.pos.x;
155 e->stats.pos.y = pc->stats.pos.y;
156 mapr->collider.block(e->stats.pos.x, e->stats.pos.y, MapCollision::IS_ALLY);
157 hero_dist = 0;
158 }
159
160 // AI can target other AI
161 for (size_t i = 0; i < entitym->entities.size(); ++i) {
162 Entity* entity = entitym->entities[i];
163 if (!entity->stats.alive)
164 continue;
165
166 if ((!e->stats.hero_ally && entity->stats.hero_ally) || (e->stats.hero_ally && !entity->stats.hero_ally && entity->stats.in_combat)) {
167 float entity_dist = Utils::calcDist(e->stats.pos, entity->stats.pos);
168 if (!target_stats || (e->stats.hero_ally && target_stats->hero)) {
169 // pick the first available target if none is already selected
170 target_stats = &entitym->entities[i]->stats;
171 target_dist = entity_dist;
172 e->stats.in_combat = true;
173 }
174 else if (entity_dist < target_dist) {
175 // pick a new target if it's closer
176 target_stats = &entitym->entities[i]->stats;
177 target_dist = entity_dist;
178 }
179 }
180 }
181
182 // check line-of-sight
183 if (target_stats && target_dist < e->stats.threat_range && pc->stats.alive)
184 los = mapr->collider.lineOfSight(e->stats.pos.x, e->stats.pos.y, target_stats->pos.x, target_stats->pos.y);
185 else
186 los = false;
187
188 // aggressive enemies are always in combat
189 if (!e->stats.in_combat && e->stats.combat_style == StatBlock::COMBAT_AGGRESSIVE) {
190 e->stats.join_combat = true;
191 }
192
193 // check entering combat (because the player got too close)
194 bool close_to_target = false;
195 if (!e->stats.hero_ally && &pc->stats == target_stats)
196 close_to_target = target_dist < stealth_threat_range;
197 else if (target_stats && &pc->stats != target_stats)
198 close_to_target = target_dist < e->stats.threat_range;
199
200 if (e->stats.alive && !e->stats.in_combat && los && close_to_target && e->stats.combat_style != StatBlock::COMBAT_PASSIVE) {
201 e->stats.join_combat = true;
202 }
203
204 // if the join_combat flag wasn't set above, it could have been set if the enemy was hit by a hazard
205 // we put the entity in a combat state and activate powers that trigger when entering combat
206 if (e->stats.join_combat) {
207 e->stats.in_combat = true;
208
209 StatBlock::AIPower* ai_power;
210 if (!e->stats.hero_ally) {
211 ai_power = e->stats.getAIPower(StatBlock::AI_POWER_BEACON);
212 if (ai_power != NULL) {
213 powers->activate(ai_power->id, &e->stats, e->stats.pos); //emit beacon
214 }
215 }
216
217 ai_power = e->stats.getAIPower(StatBlock::AI_POWER_JOIN_COMBAT);
218 if (ai_power != NULL) {
219 e->stats.cur_state = StatBlock::ENTITY_POWER;
220 e->stats.activated_power = ai_power;
221 }
222
223 e->stats.join_combat = false;
224 }
225
226 // exit combat if target got too far away
227 if (e->stats.combat_style != StatBlock::COMBAT_AGGRESSIVE) {
228 if (target_dist > e->stats.threat_range_far && !e->stats.join_combat)
229 e->stats.in_combat = false;
230 }
231
232 // exit combat if either party is dead
233 if (!e->stats.alive || !pc->stats.alive || (target_stats && !target_stats->alive))
234 e->stats.in_combat = false;
235
236 // exit combat if ally is targeting player
237 if (e->stats.hero_ally && target_stats == &pc->stats)
238 e->stats.in_combat = false;
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 (e->stats.hero_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.prevent_interrupt = false;
740 if (e->stats.hp > 0) {
741 e->stats.cur_state = StatBlock::ENTITY_STANCE;
742 }
743 }
744 break;
745
746 case StatBlock::ENTITY_SPAWN:
747
748 e->setAnimation("spawn");
749 //the second check is needed in case the entity does not have a spawn animation
750 if (e->activeAnimation->isLastFrame() || e->activeAnimation->getName() != "spawn") {
751 e->stats.cur_state = StatBlock::ENTITY_STANCE;
752 }
753 break;
754
755 case StatBlock::ENTITY_BLOCK:
756
757 e->setAnimation("block");
758 break;
759
760 case StatBlock::ENTITY_HIT:
761
762 e->setAnimation("hit");
763 if (e->activeAnimation->isFirstFrame()) {
764 e->stats.effects.triggered_hit = true;
765 }
766 if (e->activeAnimation->isLastFrame() || e->activeAnimation->getName() != "hit")
767 e->stats.cur_state = StatBlock::ENTITY_STANCE;
768 break;
769
770 case StatBlock::ENTITY_DEAD:
771 if (e->stats.effects.triggered_death) break;
772
773 e->setAnimation("die");
774 if (e->activeAnimation->isFirstFrame()) {
775 e->playSound(Entity::SOUND_DIE);
776 e->stats.corpse_timer.setDuration(eset->misc.corpse_timeout);
777 }
778 if (e->activeAnimation->isSecondLastFrame()) {
779 StatBlock::AIPower* ai_power = e->stats.getAIPower(StatBlock::AI_POWER_DEATH);
780 if (ai_power != NULL)
781 powers->activate(ai_power->id, &e->stats, e->stats.pos);
782
783 e->stats.effects.clearEffects();
784 }
785 if (e->activeAnimation->isLastFrame() || e->activeAnimation->getName() != "die") {
786 // puts renderable under object layer
787 e->stats.corpse = true;
788
789 //allow free movement over the corpse
790 mapr->collider.unblock(e->stats.pos.x, e->stats.pos.y);
791
792 // remove corpses that land on blocked tiles, such as water or pits
793 if (!mapr->collider.isValidPosition(e->stats.pos.x, e->stats.pos.y, MapCollision::MOVE_NORMAL, MapCollision::COLLIDE_NORMAL)) {
794 e->stats.corpse_timer.reset(Timer::END);
795 }
796
797 // prevent "jumping" when rendering
798 e->stats.pos.align();
799 }
800
801 break;
802
803 case StatBlock::ENTITY_CRITDEAD:
804
805 e->setAnimation("critdie");
806 if (e->activeAnimation->isFirstFrame()) {
807 e->playSound(Entity::SOUND_CRITDIE);
808 e->stats.corpse_timer.setDuration(eset->misc.corpse_timeout);
809 }
810 if (e->activeAnimation->isSecondLastFrame()) {
811 StatBlock::AIPower* ai_power = e->stats.getAIPower(StatBlock::AI_POWER_DEATH);
812 if (ai_power != NULL)
813 powers->activate(ai_power->id, &e->stats, e->stats.pos);
814
815 e->stats.effects.clearEffects();
816 }
817 if (e->activeAnimation->isLastFrame() || e->activeAnimation->getName() != "critdie") {
818 // puts renderable under object layer
819 e->stats.corpse = true;
820
821 //allow free movement over the corpse
822 mapr->collider.unblock(e->stats.pos.x, e->stats.pos.y);
823
824 // prevent "jumping" when rendering
825 e->stats.pos.align();
826 }
827
828 break;
829
830 default:
831 break;
832 }
833
834 if (e->stats.state_timer.isEnd() && e->stats.hold_state)
835 e->stats.hold_state = false;
836
837 if (e->stats.cur_state != StatBlock::ENTITY_POWER && e->stats.charge_speed != 0.0f)
838 e->stats.charge_speed = 0.0f;
839 }
840
841 FPoint EntityBehavior::getWanderPoint() {
842 FPoint waypoint;
843 waypoint.x = static_cast<float>(e->stats.wander_area.x) + static_cast<float>(rand() % (e->stats.wander_area.w)) + 0.5f;
844 waypoint.y = static_cast<float>(e->stats.wander_area.y) + static_cast<float>(rand() % (e->stats.wander_area.h)) + 0.5f;
845
846 if (mapr->collider.isValidPosition(waypoint.x, waypoint.y, e->stats.movement_type, mapr->collider.getCollideType(e->stats.hero)) &&
847 mapr->collider.lineOfMovement(e->stats.pos.x, e->stats.pos.y, waypoint.x, waypoint.y, e->stats.movement_type))
848 {
849 return waypoint;
850 }
851 else {
852 // didn't get a valid waypoint, so keep our current position
853 return e->stats.pos;
854 }
855 }
856 EntityBehavior::~EntityBehavior() {
857 }
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 explicit 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;
735789 else {
736790 ev.keep_after_trigger = false;
737791 pc->logMsg(msg->get("Unknown destination"), Avatar::MSG_UNIQUE);
792 Utils::logInfo("EventManager: Unknown intermap destination (%s)", ec->s.c_str());
738793 }
739794 }
740795 else if (ec->type == EventComponent::INTRAMAP) {
806861 pc->logMsg(ec->s, Avatar::MSG_UNIQUE);
807862 }
808863 else if (ec->type == EventComponent::SHAKYCAM) {
809 mapr->shaky_cam_timer.setDuration(ec->x);
864 mapr->cam.shake_timer.setDuration(ec->x);
810865 }
811866 else if (ec->type == EventComponent::REMOVE_CURRENCY) {
812867 camp->removeCurrency(ec->x);
813868 }
814869 else if (ec->type == EventComponent::REMOVE_ITEM) {
815 camp->removeItem(ec->x);
870 camp->removeItem(ItemStack(ec->id, ec->x));
816871 }
817872 else if (ec->type == EventComponent::REWARD_XP) {
818873 camp->rewardXP(ec->x, CampaignManager::XP_SHOW_MSG);
821876 camp->rewardCurrency(ec->x);
822877 }
823878 else if (ec->type == EventComponent::REWARD_ITEM) {
824 ItemStack istack;
825 istack.item = ec->x;
826 istack.quantity = ec->y;
827 camp->rewardItem(istack);
879 camp->rewardItem(ItemStack(ec->id, ec->x));
828880 }
829881 else if (ec->type == EventComponent::REWARD_LOOT) {
830882 std::vector<EventComponent> random_table;
858910 Point spawn_pos;
859911 spawn_pos.x = ec->x;
860912 spawn_pos.y = ec->y;
861 enemym->spawn(ec->s, spawn_pos);
913 entitym->spawn(ec->s, spawn_pos);
862914 }
863915 else if (ec->type == EventComponent::POWER) {
864916 EventComponent *ec_path = ev.getComponent(EventComponent::POWER_PATH);
882934 target.y = static_cast<float>(ev.location.y) + 0.5f;
883935 }
884936
885 // ec->x is power id
886 // ec->y is statblock index
887 mapr->activatePower(ec->x, ec->y, target);
937 // ec->id is power id
938 // ec->x is statblock index
939 mapr->activatePower(ec->id, ec->x, target);
888940 }
889941 else if (ec->type == EventComponent::STASH) {
890942 mapr->stash = ec->x == 0 ? false : true;
9611013 }
9621014 menu_powers->setUnlockedPowers();
9631015
964 menu_act->clear();
1016 menu_act->clear(MenuActionBar::CLEAR_SKIP_ITEMS);
9651017 if (pc_class && !use_engine_defaults) {
966 menu->act->set(pc_class->hotkeys);
1018 menu->act->set(pc_class->hotkeys, MenuActionBar::SET_SKIP_EMPTY);
9671019 }
9681020 menu->pow->newPowerNotification = false;
9691021
9701022 pc->respawn = true; // re-applies equipment, also revives the player
9711023 pc->stats.refresh_stats = true;
9721024 }
1025 }
1026 else if (ec->type == EventComponent::PARALLAX_LAYERS) {
1027 mapr->setMapParallax(ec->s);
9731028 }
9741029 }
9751030 return !ev.keep_after_trigger;
10051060 if (script_evnt.empty())
10061061 continue;
10071062
1008 if (script_file.key == "script" && script_file.val == filename) {
1063 if (script_file.key == "script" && Filesystem::convertSlashes(script_file.val) == Filesystem::convertSlashes(filename)) {
10091064 script_file.error("EventManager: Calling a script from within itself is not allowed.");
10101065 continue;
10111066 }
10121067
1013 loadEventComponent(script_file, &script_evnt.back(), NULL);
1068 if (script_file.key == "delay") {
1069 // 'delay' is not an EventComponent, but we allow it in scripts
1070 script_evnt.back().delay.setDuration(Parse::toDuration(script_file.val));
1071 script_evnt.back().delay.reset(Timer::BEGIN);
1072 }
1073 else {
1074 loadEventComponent(script_file, &script_evnt.back(), NULL);
1075 }
10141076 }
10151077 script_file.close();
10161078
10181080 // create StatBlocks if we need them
10191081 EventComponent *ec_power = script_evnt.front().getComponent(EventComponent::POWER);
10201082 if (ec_power) {
1021 ec_power->y = mapr->addEventStatBlock(script_evnt.front());
1022 }
1023
1024 if (isActive(script_evnt.front())) {
1083 ec_power->x = mapr->addEventStatBlock(script_evnt.front());
1084 }
1085
1086 if (script_evnt.front().delay.getDuration() > 0) {
1087 // handle delayed events
1088 mapr->delayed_events.push_back(script_evnt.front());
1089 }
1090 else if (isActive(script_evnt.front())) {
10251091 executeEvent(script_evnt.front());
10261092 }
10271093 script_evnt.pop();
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);
2323
2424 VS_VERSION_INFO VERSIONINFO
2525 FILEVERSION 1,0,0,0
26 PRODUCTVERSION 1,0,0,0
26 PRODUCTVERSION 1,12,0,0
2727 BEGIN
2828 BLOCK "StringFileInfo"
2929 BEGIN
3636 VALUE "LegalCopyright", "Clint Bellanger and Contributors - 2011\0"
3737 VALUE "OriginalFilename", "flare.exe\0"
3838 VALUE "ProductName", "Flare\0"
39 VALUE "ProductVersion", "1, 0, 0\0"
39 VALUE "ProductVersion", "1, 12, 0\0"
4040 END
4141 END
4242 BLOCK "VarFileInfo"
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 = "";
161160
162161 long_token = popTokenByWidth(next_word, width);
163162
176175 }
177176 }
178177
179 builder << next_word << " ";
180 builder_prev.str(builder.str());
178 builder += next_word + " ";
179 builder_prev = builder;
181180 }
182181 else {
183 builder << " ";
184 builder_prev.str(builder.str());
182 builder += " ";
183 builder_prev = builder;
185184 }
186185
187186 next_word = getNextToken(fulltext, cursor, space); // next word
191190 break;
192191 }
193192
194 builder.str(Parse::trim(builder.str())); //removes whitespace that shouldn't be included in the size
195 if (!builder.str().empty())
193 builder = Parse::trim(builder); //removes whitespace that shouldn't be included in the size
194 if (!builder.empty())
196195 height += getLineHeight();
197 if (calc_width(builder.str()) > max_width) max_width = calc_width(builder.str());
196 if (calc_width(builder) > max_width)
197 max_width = calc_width(builder);
198198
199199 // handle blank lines
200200 if (text_with_newlines == " ")
243243 std::string fulltext = text + " ";
244244 cursor_y = y;
245245 std::string next_word;
246 std::stringstream builder;
247 std::stringstream builder_prev;
246 std::string builder("");
247 std::string builder_prev("");
248248 char space = 32;
249249 size_t cursor = 0;
250250 std::string long_token;
251251
252 builder.str("");
253 builder_prev.str("");
252 builder.reserve(BUILDER_RESERVE);
253 builder_prev.reserve(BUILDER_RESERVE);
254254
255255 next_word = getNextToken(fulltext, cursor, space);
256256
257257 while(cursor != std::string::npos) {
258258 size_t old_cursor = cursor;
259259
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);
260 builder += next_word;
261
262 if (calc_width(builder) > width) {
263 if (!builder_prev.empty()) {
264 renderInternal(builder_prev, x, cursor_y, justify, target, color);
265265 cursor_y += getLineHeight();
266266 }
267 builder_prev.str("");
268 builder.str("");
267 builder = "";
269268
270269 long_token = popTokenByWidth(next_word, width);
271270
282281 }
283282 }
284283
285 builder << next_word << " ";
286 builder_prev.str(builder.str());
284 builder += next_word + " ";
285 builder_prev = builder;
287286 }
288287 else {
289 builder << " ";
290 builder_prev.str(builder.str());
288 builder += " ";
289 builder_prev = builder;
291290 }
292291
293292 next_word = getNextToken(fulltext, cursor, space); // next word
297296 break;
298297 }
299298
300 renderInternal(builder.str(), x, cursor_y, justify, target, color);
299 renderInternal(builder, x, cursor_y, justify, target, color);
301300 cursor_y += getLineHeight();
302301
303302 }
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 std::string new_render_device = menu_config->getRenderDevice();
83 bool frame_limit_changed = menu_config->setFrameLimit();
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 // same goes for changing the frame limit
116 if (new_render_device != settings->render_device_name || frame_limit_changed) {
117 settings->render_device_name = new_render_device;
118 inpt->done = true;
119 settings->soft_reset = true;
120 }
121
122 render_device->createContext();
123 tooltipm = new TooltipManager();
124 settings->saveSettings();
125 setRequestedGameState(new GameStateTitle());
126 }
127
128 void GameStateConfig::logicCancel() {
129 inpt->lock[Input::CANCEL] = true;
130 settings->loadSettings();
131 inpt->loadKeyBindings();
132 delete msg;
133 msg = new MessageEngine();
134 inpt->setKeybindNames();
135 eset->load();
136 Stats::init();
137 refreshFont();
138 menu_config->update();
139 menu_config->cleanup();
140 render_device->setFullscreen(settings->fullscreen);
141 render_device->windowResize();
142 render_device->updateTitleBar();
143 showLoading();
144 setRequestedGameState(new GameStateTitle());
145 }
146
147 void GameStateConfig::render() {
148 if (requestedGameState != NULL) {
149 // we're in the process of switching game states, so skip rendering
150 return;
151 }
152
153 menu_config->render();
154 }
155
156 void GameStateConfig::refreshFont() {
157 delete font;
158 font = getFontEngine();
159 delete comb;
160 comb = new CombatText();
161 }
162
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
3333 #include "WidgetButton.h"
3434 #include "WidgetLabel.h"
3535 #include "WidgetScrollBox.h"
36
37 CutsceneSettings::CutsceneSettings()
38 : caption_background(0,0,0,200)
39 , vscroll_speed(0.5f * Settings::LOGIC_FPS / settings->max_frames_per_sec)
40 , vscroll_speed_fast(vscroll_speed * 16)
41 {}
3642
3743 Scene::Scene(const CutsceneSettings& _settings, short _cutscene_type)
3844 : cutscene_settings(_settings)
190196 return DONE;
191197 }
192198 else if (cutscene_type == CUTSCENE_VSCROLL && inpt->pressing[Input::UP]) {
193 vscroll_y -= VSCROLL_SPEED;
194 if (vscroll_y < 0)
195 vscroll_y = 0;
199 skip = SKIP_VSCROLL_BACK;
196200 }
197201 else if (cutscene_type == CUTSCENE_VSCROLL && inpt->pressing[Input::DOWN]) {
198 vscroll_y += VSCROLL_SPEED;
202 skip = SKIP_SUBSCENE;
199203 }
200204 }
201205
341345 }
342346 }
343347
344 vscroll_offset = static_cast<int>(static_cast<float>(vscroll_y) * (cutscene_settings.vscroll_speed * settings->max_frames_per_sec) / settings->view_h);
345 if (skip == SKIP_NEXT)
348 vscroll_offset = static_cast<int>(vscroll_y);
349 if (skip == SKIP_NEXT) {
346350 return NEXT;
347 else if (skip == SKIP_SUBSCENE)
348 vscroll_y += VSCROLL_SPEED;
349 else
350 vscroll_y++;
351 }
352 else if (skip == SKIP_SUBSCENE) {
353 vscroll_y += cutscene_settings.vscroll_speed_fast;
354 }
355 else if (skip == SKIP_VSCROLL_BACK) {
356 vscroll_y -= cutscene_settings.vscroll_speed_fast;
357 if (vscroll_y < 0)
358 vscroll_y = 0;
359 }
360 else {
361 vscroll_y += cutscene_settings.vscroll_speed;
362 }
351363
352364 refreshWidgets();
353365
485497
486498 // only display the back button if there's more than one scene or subscene
487499 bool only_scene = is_first_scene && is_last_scene;
488 if (!only_scene || (only_scene && cutscene_type == CUTSCENE_STATIC && subscenes.size() > 1))
500 if (!only_scene || (cutscene_type == CUTSCENE_STATIC && subscenes.size() > 1))
489501 button_prev->render();
490502
491503 button_advance->render();
601613 cutscene_settings.caption_background = Parse::toRGBA(infile.val);
602614 }
603615 else if (infile.key == "vscroll_speed") {
604 // @ATTR vscroll_speed|float|The speed at which elements will scroll in 'vscroll' scenes.
605 cutscene_settings.vscroll_speed = Parse::toFloat(infile.val);
616 // @ATTR vscroll_speed|float|The speed at which elements will scroll in 'vscroll' scenes. Defaults to 0.5.
617 cutscene_settings.vscroll_speed = Parse::toFloat(infile.val) * Settings::LOGIC_FPS / settings->max_frames_per_sec;
618 cutscene_settings.vscroll_speed_fast = cutscene_settings.vscroll_speed * 2;
606619 }
607620 else if (infile.key == "menu_backgrounds") {
608621 // @ATTR menu_backgrounds|bool|This cutscene will use a random fullscreen background image, like the title screen does
3232 FPoint caption_margins;
3333 Color caption_background;
3434 float vscroll_speed;
35 CutsceneSettings()
36 : caption_background(0,0,0,200)
37 , vscroll_speed(4.0)
38 {}
35 float vscroll_speed_fast;
36 CutsceneSettings();
3937 };
4038
4139 class SceneComponent {
7472 SKIP_NONE = 0,
7573 SKIP_SUBSCENE = 1,
7674 SKIP_PREV = 2,
77 SKIP_NEXT = 3
75 SKIP_NEXT = 3,
76 SKIP_VSCROLL_BACK = 4
7877 };
79
80 static const int VSCROLL_SPEED = 8;
8178
8279 void clearArt();
8380 void clearSound();
9794 WidgetButton *button_close;
9895 WidgetButton *button_advance;
9996 int vscroll_offset;
100 int vscroll_y;
97 float vscroll_y;
10198 size_t sub_index;
10299 size_t prev_sub_index;
103100
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;
434441 game_slots[i]->preview.logic();
435442 }
436443
437 if (!confirm->visible) {
444 if (confirm->visible) {
445 confirm->logic();
446 if (confirm->confirmClicked) {
447 Utils::removeSaveDir(game_slots[selected_slot]->id);
448
449 delete game_slots[selected_slot];
450 game_slots[selected_slot] = NULL;
451 game_slots.erase(game_slots.begin()+selected_slot);
452
453 visible_slots = (game_slot_max > static_cast<int>(game_slots.size()) ? static_cast<int>(game_slots.size()) : game_slot_max);
454 setSelectedSlot(-1);
455
456 while (scroll_offset + visible_slots > static_cast<int>(game_slots.size())) {
457 scroll_offset--;
458 }
459
460 updateButtons();
461
462 confirm->visible = false;
463 confirm->confirmClicked = false;
464
465 refreshSavePaths();
466
467 settings->prev_save_slot = -1;
468 }
469 }
470 else {
438471 tablist.logic();
439472 if (button_exit->checkClick() || (inpt->pressing[Input::CANCEL] && !inpt->lock[Input::CANCEL])) {
440473 inpt->lock[Input::CANCEL] = true;
520553 }
521554 }
522555 }
523 else if (confirm->visible) {
524 confirm->logic();
525 if (confirm->confirmClicked) {
526 Utils::removeSaveDir(game_slots[selected_slot]->id);
527
528 delete game_slots[selected_slot];
529 game_slots[selected_slot] = NULL;
530 game_slots.erase(game_slots.begin()+selected_slot);
531
532 visible_slots = (game_slot_max > static_cast<int>(game_slots.size()) ? static_cast<int>(game_slots.size()) : game_slot_max);
533 setSelectedSlot(-1);
534
535 while (scroll_offset + visible_slots > static_cast<int>(game_slots.size())) {
536 scroll_offset--;
537 }
538
539 updateButtons();
540
541 confirm->visible = false;
542 confirm->confirmClicked = false;
543
544 refreshSavePaths();
545
546 settings->prev_save_slot = -1;
547 }
548 }
549556 }
550557
551558 void GameStateLoad::logicLoading() {
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();
666676 Rect scroll_pos;
667677 scroll_pos.x = slot_pos[0].x + slot_pos[0].w;
668678 scroll_pos.y = slot_pos[0].y;
669 scroll_pos.w = scrollbar->pos_up.w;
670679 scroll_pos.h = (slot_pos[0].h * game_slot_max) - scrollbar->pos_down.h;
671680 scrollbar->refresh(scroll_pos.x, scroll_pos.y, scroll_pos.h, scroll_offset, static_cast<int>(game_slots.size()) - visible_slots);
672681 }
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
281298 // @CLASS GameStateNew: Hero options|Description of engine/hero_options.txt
282299 if (!fin.open("engine/" + filename, FileParser::MOD_FILE, FileParser::ERROR_NORMAL)) return;
283300
284 int cur_index = -1;
301 int cur_index;
285302 while (fin.next()) {
286303 // @ATTR option|int, string, string, filename, string : Index, Base, Head, Portrait, Name|A default body, head, portrait, and name for a hero.
287304 if (fin.key == "option") {
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);
219219 }
220220
221221 /**
222 * If mouse_move is enabled, and the mouse is over a live enemy,
223 * Do not allow power use with button MAIN1
224 */
225 bool GameStatePlay::restrictPowerUse() {
226 if (settings->mouse_move) {
227 int mm_key = (settings->mouse_move_swap ? Input::MAIN2 : Input::MAIN1);
228 if(inpt->pressing[mm_key] && !inpt->pressing[Input::SHIFT] && !menu->act->isWithinSlots(inpt->mouse) && !menu->act->isWithinMenus(inpt->mouse)) {
229 return true;
230 }
231 }
232
233 return false;
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->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 }
234250 }
235251
236252 /**
257273
258274 // Normal pickups
259275 if (!pc->using_main1) {
260 pickup = loot->checkPickup(inpt->mouse, mapr->cam, pc->stats.pos);
276 pickup = loot->checkPickup(inpt->mouse, mapr->cam.pos, pc->stats.pos);
261277 }
262278
263279 if (!pickup.empty()) {
282298 // during intermap teleport, we set the camera to the player position
283299 pc->stats.pos.x = mapr->teleport_destination.x;
284300 pc->stats.pos.y = mapr->teleport_destination.y;
301 pc->teleport_camera_lock = true;
285302 }
286303 else {
287304 pc->stats.pos.x = pc->stats.teleport_destination.x;
289306 }
290307
291308 // 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
309 // when changing maps, entitym->handleNewMap() does something similar to this
293310 if (mapr->teleport_mapname.empty()) {
294311 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);
312 for (unsigned int i=0; i < entitym->entities.size(); i++) {
313 if(entitym->entities[i]->stats.hero_ally && entitym->entities[i]->stats.alive) {
314 mapr->collider.unblock(entitym->entities[i]->stats.pos.x, entitym->entities[i]->stats.pos.y);
315 entitym->entities[i]->stats.pos = spawn_pos;
316 mapr->collider.block(entitym->entities[i]->stats.pos.x, entitym->entities[i]->stats.pos.y, MapCollision::IS_ALLY);
300317 }
301318 }
302319 }
303320
304321 // process intermap teleport
305322 if (mapr->teleportation && !mapr->teleport_mapname.empty()) {
306 mapr->cam.x = pc->stats.pos.x;
307 mapr->cam.y = pc->stats.pos.y;
323 mapr->cam.warpTo(pc->stats.pos);
308324 std::string teleport_mapname = mapr->teleport_mapname;
309325 mapr->teleport_mapname = "";
310326 inpt->lock_all = (teleport_mapname == "maps/spawn.txt");
315331
316332 // use the default hero spawn position for this map
317333 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;
334 pc->stats.pos.x = mapr->hero_pos.x;
335 pc->stats.pos.y = mapr->hero_pos.y;
336 mapr->cam.warpTo(pc->stats.pos);
320337 }
321338
322339 // store this as the new respawn point (provided the tile is open)
343360 on_load_teleport = true;
344361
345362 // enemies and npcs should be initialized AFTER on_load events execute
346 enemym->handleNewMap();
363 entitym->handleNewMap();
347364 npcs->handleNewMap();
348365 resetNPC();
349366
350367 menu->mini->prerender(&mapr->collider, mapr->w, mapr->h);
351368
352369 // return to title (permadeath) OR auto-save
353 if (pc->stats.permadeath && pc->stats.cur_state == StatBlock::AVATAR_DEAD) {
370 if (pc->stats.permadeath && pc->stats.cur_state == StatBlock::ENTITY_DEAD) {
354371 snd->stopMusic();
355372 showLoading();
356373 setRequestedGameState(new GameStateTitle());
383400 * Also check closing the game window entirely.
384401 */
385402 void GameStatePlay::checkCancel() {
386 bool save_on_exit = eset->misc.save_onexit && !(pc->stats.permadeath && pc->stats.cur_state == StatBlock::AVATAR_DEAD);
403 bool save_on_exit = eset->misc.save_onexit && !(pc->stats.permadeath && pc->stats.cur_state == StatBlock::ENTITY_DEAD);
387404
388405 if (save_on_exit && eset->misc.save_pos_onexit) {
389406 mapr->respawn_point = pc->stats.pos;
398415
399416 // audio levels can be changed in the pause menu, so update our settings file
400417 settings->saveSettings();
418 inpt->saveKeyBindings();
401419
402420 snd->stopMusic();
403421 showLoading();
412430
413431 if (save_on_exit)
414432 save_load->saveGame();
433
434 settings->saveSettings();
435 inpt->saveKeyBindings();
415436
416437 snd->stopMusic();
417438 exitRequested = true;
478499 }
479500 else if (infile.key == "power") {
480501 // @ATTR title.power|power_id|Requires power.
481 titles.back().power = Parse::toInt(infile.val);
502 titles.back().power = Parse::toPowerID(infile.val);
482503 }
483504 else if (infile.key == "requires_status") {
484505 // @ATTR title.requires_status|list(string)|Requires status.
552573 }
553574
554575 void GameStatePlay::checkEquipmentChange() {
555 // force the actionbar to update when we change gear
556576 if (menu->inv->changed_equipment) {
577 // force the actionbar to update when we change gear
557578 menu->act->updated = true;
558 }
559
560 if (menu->inv->changed_equipment) {
561579
562580 int feet_index = -1;
563581 std::vector<Avatar::Layer_gfx> img_gfx;
630648 */
631649 void GameStatePlay::checkUsedItems() {
632650 for (unsigned i=0; i<powers->used_items.size(); i++) {
633 menu->inv->remove(powers->used_items[i]);
651 menu->inv->remove(powers->used_items[i], 1);
634652 }
635653 for (unsigned i=0; i<powers->used_equipped_items.size(); i++) {
636654 menu->inv->inventory[MenuInventory::EQUIPMENT].remove(powers->used_equipped_items[i], 1);
706724 if (npc_id != -1) {
707725 bool interact_with_npc = false;
708726 if (menu->talker->npc_from_map) {
709 float interact_distance = Utils::calcDist(pc->stats.pos, npcs->npcs[npc_id]->pos);
727 float interact_distance = Utils::calcDist(pc->stats.pos, npcs->npcs[npc_id]->stats.pos);
710728
711729 if (interact_distance < eset->misc.interact_range) {
712730 interact_with_npc = true;
743761 menu->inv->visible = true;
744762 menu->stash->visible = true;
745763 mapr->stash = false;
764 menu->stash->validate(menu->drop_stack);
746765 }
747766 else if (menu->stash->visible) {
748767 // Close stash if inventory is closed
761780 }
762781
763782 // If the stash has been updated, save the game
764 if (menu->stash->updated) {
765 menu->stash->updated = false;
783 if (menu->stash->checkUpdates()) {
766784 save_load->saveGame();
767785 }
768786 }
795813 mapr->respawn_point = pc->stats.pos;
796814 }
797815
798 if (eset->misc.save_onload)
816 if (eset->misc.save_oncutscene)
799817 save_load->saveGame();
800818
801 if (menu->devconsole) {
802 menu->devconsole->closeWindow();
803 }
819 menu->closeAll();
804820
805821 setRequestedGameState(cutscene);
806822 }
824840 for (unsigned i = index; i < menu->act->slots_count; i++) {
825841 if (menu->act->hotkeys[i] == 0) continue;
826842
827 int id = menu->inv->getPowerMod(menu->act->hotkeys_mod[i]);
843 PowerID id = menu->inv->getPowerMod(menu->act->hotkeys_mod[i]);
828844 if (id > 0) {
829845 menu->act->hotkeys_mod[i] = id;
830846 return updateActionBar(i);
839855 void GameStatePlay::logic() {
840856 if (inpt->window_resized)
841857 refreshWidgets();
858
859 curs->setLowHP(pc->isLowHpCursorEnabled() && pc->isLowHp());
842860
843861 checkCutscene();
844862
856874 // these actions only occur when the game isn't paused
857875 if (pc->stats.alive) checkLoot();
858876 checkEnemyFocus();
877 checkNPCFocus();
859878 if (pc->stats.alive) {
860879 mapr->checkHotspots();
861880 mapr->checkNearestEvent();
863882 }
864883 checkTitle();
865884
866 menu->act->checkAction(action_queue);
867 pc->logic(action_queue, restrictPowerUse());
885 menu->act->checkAction(pc->action_queue);
886 pc->logic();
868887
869888 // Transform powers change the actionbar layout,
870889 // so we need to prevent accidental clicks if a new power is placed under the slot we clicked on.
874893 }
875894
876895 // 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();
896 if (pc->stats.get(Stats::STEALTH) > 100) entitym->hero_stealth = 100;
897 else entitym->hero_stealth = pc->stats.get(Stats::STEALTH);
898
899 entitym->logic();
881900 hazards->logic();
882901 loot->logic();
883 enemym->checkEnemiesforXP();
884902 npcs->logic();
885903
886904 snd->logic(pc->stats.pos);
887905
888 comb->logic(mapr->cam);
906 comb->logic(mapr->cam.pos);
889907 }
890908
891909 // close menus when the player dies, but still allow them to be reopened
908926 checkCancel();
909927
910928 mapr->logic(isPaused());
911 mapr->enemies_cleared = enemym->isCleared();
929 mapr->enemies_cleared = entitym->isCleared();
912930 quests->logic();
913931
914932 pc->checkTransform();
969987 if (pc->respawn) {
970988 pc->stats.alive = true;
971989 pc->stats.corpse = false;
972 pc->stats.cur_state = StatBlock::AVATAR_STANCE;
990 pc->stats.cur_state = StatBlock::ENTITY_STANCE;
973991 menu->inv->applyEquipment();
974992 menu->inv->changed_equipment = true;
975993 checkEquipmentChange();
10091027 * Render all graphics for a single frame
10101028 */
10111029 void GameStatePlay::render() {
1030 if (mapr->is_spawn_map)
1031 return;
10121032
10131033 // Create a list of Renderables from all objects not already on the map.
10141034 // split the list into the beings alive (may move) and dead beings (must not move)
10171037
10181038 pc->addRenders(rens);
10191039
1020 enemym->addRenders(rens, rens_dead);
1040 entitym->addRenders(rens, rens_dead);
10211041
10221042 npcs->addRenders(rens); // npcs cannot be dead
10231043
10301050 mapr->render(rens, rens_dead);
10311051
10321052 // mouseover tooltips
1033 loot->renderTooltips(mapr->cam);
1053 loot->renderTooltips(mapr->cam.pos);
10341054
10351055 if (mapr->map_change) {
10361056 menu->mini->prerender(&mapr->collider, mapr->w, mapr->h);
10871107 if (low_index != eset->primary_stats.list.size() && second != eset->primary_stats.list[low_index].id)
10881108 return false;
10891109 }
1090 else if (second.empty() && pc->stats.get_primary(high_index) == pc->stats.get_primary(low_index)) {
1110 else if (pc->stats.get_primary(high_index) == pc->stats.get_primary(low_index)) {
10911111 // titles that require a single stat are ignored if two stats are equal
10921112 return false;
10931113 }
10961116 }
10971117
10981118 GameStatePlay::~GameStatePlay() {
1119 curs->setLowHP(false);
1120
10991121 delete quests;
11001122 delete npcs;
11011123 delete hazards;
1102 delete enemym;
1124 delete entitym;
11031125 delete pc;
11041126 delete mapr;
11051127 delete menu;
11151137 menu = NULL;
11161138 camp = NULL;
11171139 enemyg = NULL;
1118 enemym = NULL;
1140 entitym = NULL;
11191141 items = NULL;
11201142 loot = NULL;
11211143 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
70 bool restrictPowerUse();
7168 void checkEnemyFocus();
69 void checkNPCFocus();
7270 void checkLoot();
7371 void checkLootDrop();
7472 void checkTeleport();
9290
9391 std::vector<Title> titles;
9492
95 std::vector<ActionData> action_queue;
96
9793 Timer second_timer;
9894
9995 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"
3434 #include "SoundManager.h"
3535 #include "WidgetButton.h"
3636 #include "WidgetLabel.h"
37 #include "WidgetScrollBox.h"
3837 #include "UtilsMath.h"
3938 #include "UtilsParsing.h"
4039 #include "Version.h"
4241 GameStateTitle::GameStateTitle()
4342 : GameState()
4443 , logo(NULL)
44 , button_play(new WidgetButton(WidgetButton::DEFAULT_FILE))
45 , button_exit(new WidgetButton(WidgetButton::DEFAULT_FILE))
46 , button_cfg(new WidgetButton(WidgetButton::DEFAULT_FILE))
47 , button_credits(new WidgetButton(WidgetButton::DEFAULT_FILE))
48 , label_version(new WidgetLabel())
49 , menu_movement_type(NULL)
4550 , align_logo(Utils::ALIGN_CENTER)
4651 , exit_game(false)
4752 , load_game(false)
4853 {
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
5654 FileParser infile;
5755 // @CLASS GameStateTitle|Description of menus/gametitle.txt
5856 if (infile.open("menus/gametitle.txt", FileParser::MOD_FILE, FileParser::ERROR_NORMAL)) {
121119 button_exit->refresh();
122120
123121 // set up labels
124 label_version = new WidgetLabel();
125122 label_version->setJustify(FontEngine::JUSTIFY_RIGHT);
126123 label_version->setText(VersionInfo::createVersionStringFull());
127124 label_version->setColor(font->getColor(FontEngine::COLOR_MENU_NORMAL));
134131 tablist.add(button_exit);
135132
136133 refreshWidgets();
134 force_refresh_background = true;
137135
138136 if (eset->gameplay.enable_playgame && !settings->load_slot.empty()) {
139137 showLoading();
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;
149 bool id_line = false;
133 ItemID id = 0;
134 bool id_line;
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
897890 if (items[stack.item].set > 0) {
891 int set_count = menu->inv->getEquippedSetCount(items[stack.item].set);
892
898893 // item set bonuses
899894 ItemSet set = item_sets[items[stack.item].set];
900895 bonus_counter = 0;
909904 ss << msg->get("%d items:", bdata->requirement) << ' ';
910905
911906 getBonusString(ss, bdata);
912 tip.addColoredText(ss.str(), set.color);
907 if (bdata->requirement <= set_count)
908 tip.addColoredText(ss.str(), set.color);
909 else
910 tip.addColoredText(ss.str(), font->getColor(FontEngine::COLOR_WIDGET_DISABLED));
913911 bonus_counter++;
914912 }
915913 }
917915 // input hint for consumables/books
918916 // TODO hint when not using mouse control. The action for using an item there is hard to describe
919917 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") {
918 if (!items[stack.item].book.empty() && items[stack.item].book_is_readable) {
919 tip.addColoredText('\n' + msg->get("Press [%s] to read", inpt->getBindingString(Input::MAIN2)), font->getColor(FontEngine::COLOR_ITEM_BONUS));
920 }
921 else if (menu->inv->canActivateItem(stack.item)) {
922922 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));
929923 }
930924 }
931925
935929 /**
936930 * Check requirements on an item
937931 */
938 bool ItemManager::requirementsMet(const StatBlock *stats, int item) {
932 bool ItemManager::requirementsMet(const StatBlock *stats, ItemID item) {
939933 if (!stats) return false;
940934
941935 // level
10241018 return new_price;
10251019 }
10261020
1021 // Bonus documentation
1022
1023 // @CLASS ItemManager|Description of "bonus" attribute in items/items.txt
1024 // @TYPE speed|Movement speed. A value of 100 is 100% speed (aka normal speed).
1025 // @TYPE attack_speed|Attack animation speed. A value of 100 is 100% speed (aka normal speed).
1026 // @TYPE ${STATNAME}|Increases ${STATNAME}, where ${STATNAME} is any of the base stats. Examples: hp, avoidance, xp_gain
1027 // @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
1028 // @TYPE ${ELEMENT}_resist|Increase Resistance % to ${ELEMENT}, where ${ELEMENT} is any found in engine/elements.txt. Example: fire_resist
1029 // @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"))
57 , sfx_loot_channel("loot")
5758 {
5859 loadGraphics();
5960 loadLootTables();
6465 * Here we load all the animations used by the item database.
6566 */
6667 void LootManager::loadGraphics() {
67 animations.resize(items->items.size());
68
6968 // 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("");
69 std::map<ItemID, Item>::iterator item_it;
70 for (item_it = items->items.begin(); item_it != items->items.end(); ++item_it) {
71 if (item_it->second.loot_animation.empty())
72 continue;
73
74 animations[item_it->first].resize(item_it->second.loot_animation.size());
75
76 for (size_t i = 0; i < item_it->second.loot_animation.size(); ++i) {
77 anim->increaseCount(item_it->second.loot_animation[i].name);
78 animations[item_it->first][i] = anim->getAnimationSet(item_it->second.loot_animation[i].name)->getAnimation("");
7879 }
7980 }
8081 }
8182
8283 void LootManager::handleNewMap() {
8384 loot.clear();
85 enemiesDroppingLoot.clear();
8486 }
8587
8688 void LootManager::logic() {
9092 // animate flying loot
9193 if (it->animation) {
9294 it->animation->advanceFrame();
93 if (it->animation->isSecondLastFrame()) {
95 if (!it->on_ground && it->animation->isSecondLastFrame()) {
9496 it->on_ground = true;
9597 }
9698 }
122124
123125 Point dest;
124126 bool tooltip_below = true;
127 Rect screen_rect(0, 0, settings->view_w, settings->view_h);
125128
126129 std::vector<Loot>::iterator it;
127130 for (it = loot.begin(); it != loot.end(); ) {
129132
130133 if (it->on_ground) {
131134 Point p = Utils::mapToScreen(it->pos.x, it->pos.y, cam.x, cam.y);
135 if (!Utils::isWithinRect(screen_rect, p)) {
136 ++it;
137 continue;
138 }
139
132140 dest.x = p.x;
133141 dest.y = p.y + eset->tileset.tile_h_half;
134142
150158 default_visibility = false;
151159 }
152160 else {
153 Enemy* test_enemy = enemym->getNearestEnemy(it->pos, !EnemyManager::GET_CORPSE, NULL, eset->loot.hide_radius);
161 Entity* test_enemy = entitym->getNearestEntity(it->pos, !EntityManager::GET_CORPSE, NULL, eset->loot.hide_radius);
154162 if (test_enemy) {
155163 default_visibility = false;
156164 }
177185 }
178186
179187 // try to prevent tooltips from overlapping
180 tip->prerender(it->tip, dest, TooltipData::STYLE_TOPLABEL);
188 it->wtip->prerender(it->tip, dest, TooltipData::STYLE_TOPLABEL);
181189 std::vector<Loot>::iterator test_it;
182190 for (test_it = loot.begin(); test_it != it; ) {
183 if (test_it->tip_visible && Utils::rectsOverlap(test_it->tip_bounds, tip->bounds)) {
191 if (test_it->tip_visible && Utils::rectsOverlap(test_it->wtip->bounds, it->wtip->bounds)) {
184192 if (tooltip_below)
185 dest.y = test_it->tip_bounds.y + test_it->tip_bounds.h + eset->tooltips.offset;
193 dest.y = test_it->wtip->bounds.y + test_it->wtip->bounds.h + eset->tooltips.offset;
186194 else
187 dest.y = test_it->tip_bounds.y - test_it->tip_bounds.h + eset->tooltips.offset;
188
189 tip->bounds.y = dest.y;
195 dest.y = test_it->wtip->bounds.y - test_it->wtip->bounds.h + eset->tooltips.offset;
196
197 it->wtip->bounds.y = dest.y;
190198 }
191199
192200 ++test_it;
193201 }
194202
195 tip->render(it->tip, dest, TooltipData::STYLE_TOPLABEL);
196 it->tip_bounds = tip->bounds;
203 it->wtip->render(it->tip, dest, TooltipData::STYLE_TOPLABEL);
197204
198205 if (settings->loot_tooltips == Settings::LOOT_TIPS_HIDE_ALL && !inpt->pressing[Input::ALT])
199206 break;
212219 */
213220 void LootManager::checkEnemiesForLoot() {
214221 for (unsigned i=0; i < enemiesDroppingLoot.size(); ++i) {
215 Enemy *e = enemiesDroppingLoot[i];
216
217 if (e->stats.quest_loot_id != 0) {
222 StatBlock *e = enemiesDroppingLoot[i];
223
224 if (!e)
225 continue;
226
227 if (e->quest_loot_id != 0) {
218228 // quest loot
219229 std::vector<EventComponent> quest_loot_table;
220230 EventComponent ec;
221231 ec.type = EventComponent::LOOT;
222 ec.c = e->stats.quest_loot_id;
232 ec.id = e->quest_loot_id;
223233 ec.a = ec.b = 1;
224234 ec.z = 0;
225235
226236 quest_loot_table.push_back(ec);
227 checkLoot(quest_loot_table, &e->stats.pos, NULL);
228 }
229
230 if (!e->stats.loot_table.empty()) {
237 checkLoot(quest_loot_table, &e->pos, NULL);
238 }
239
240 if (!e->loot_table.empty()) {
231241 unsigned drops;
232 if (e->stats.loot_count.y != 0) {
233 drops = Math::randBetween(e->stats.loot_count.x, e->stats.loot_count.y);
242 if (e->loot_count.y != 0) {
243 drops = Math::randBetween(e->loot_count.x, e->loot_count.y);
234244 }
235245 else {
236246 drops = Math::randBetween(1, eset->loot.drop_max);
237247 }
238248
239249 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();
250 checkLoot(e->loot_table, &e->pos, NULL);
251 }
252
253 e->loot_table.clear();
244254 }
245255 }
246256 enemiesDroppingLoot.clear();
269279 }
270280 }
271281
272 void LootManager::addEnemyLoot(Enemy *e) {
282 void LootManager::addEnemyLoot(StatBlock *e) {
273283 enemiesDroppingLoot.push_back(e);
274284 }
275285
279289 ItemStack new_loot;
280290 std::vector<EventComponent*> possible_ids;
281291
282 int chance = Math::randBetween(1,100);
292 float chance = Math::randBetweenF(0,100);
283293
284294 // first drop any 'fixed' (0% chance) items
285295 for (size_t i = loot_table.size(); i > 0; i--) {
286296 ec = &loot_table[i-1];
287 if (ec->z == 0) {
297 if (ec->f == 0) {
288298 checkLootComponent(ec, pos, itemstack_vec);
289299 loot_table.erase(loot_table.begin()+i-1);
290300 }
291301 }
292302
293303 // now pick up to 1 random item to drop
294 int threshold = pc->stats.get(Stats::ITEM_FIND) + 100;
304 float threshold = static_cast<float>(pc->stats.get(Stats::ITEM_FIND) + 100);
295305 for (unsigned i = 0; i < loot_table.size(); i++) {
296306 ec = &loot_table[i];
297307
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);
308 float real_chance = ec->f;
309
310 if (ec->id != 0) {
311 real_chance = ec->f * static_cast<float>(pc->stats.get(Stats::ITEM_FIND) + 100) / 100.f;
302312 }
303313
304314 if (real_chance >= chance) {
325335 }
326336
327337 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
333338 Loot ld;
334339 ld.stack = stack;
335340 ld.pos.x = pos.x;
337342 ld.pos.align(); // prevent "rounding jitter"
338343 ld.dropped_by_hero = dropped_by_hero;
339344
345 // merge stacks that have the same item id and position
346 std::vector<Loot>::iterator it;
347 for (it = loot.end(); it != loot.begin(); ) {
348 --it;
349 if (it->stack.item == ld.stack.item && it->pos.x == ld.pos.x && it->pos.y == ld.pos.y) {
350 it->stack.quantity += ld.stack.quantity;
351 it->tip.clear();
352 snd->play(sfx_loot, sfx_loot_channel, pos, false);
353 return;
354 }
355 }
356
340357 if (!items->items[stack.item].loot_animation.empty()) {
341358 size_t index = items->items[stack.item].loot_animation.size()-1;
342359
356373 }
357374
358375 loot.push_back(ld);
359 snd->play(sfx_loot, snd->DEFAULT_CHANNEL, pos, false);
376 snd->play(sfx_loot, sfx_loot_channel, pos, false);
360377 }
361378
362379 /**
386403 r.w = eset->tileset.tile_w;
387404 r.h = eset->tileset.tile_h;
388405
389 if (it_tip == loot.end() && it->tip_visible && Utils::isWithinRect(it->tip_bounds, mouse)) {
406 if (it_tip == loot.end() && it->tip_visible && Utils::isWithinRect(it->wtip->bounds, mouse)) {
390407 // clicked on a tooltip
391408 curs->setCursor(CursorManager::CURSOR_INTERACT);
392409 if (inpt->pressing[Input::MAIN1] && !inpt->lock[Input::MAIN1] && !it->stack.empty()) {
501518 e->s = Parse::popFirstString(val);
502519
503520 if (e->s == "currency")
504 e->c = eset->misc.currency_id;
521 e->id = eset->misc.currency_id;
505522 else if (Parse::toInt(e->s, -1) != -1)
506 e->c = Parse::toInt(e->s);
523 e->id = Parse::toItemID(e->s);
507524 else if (ec_list) {
508525 // load entire loot table
509526 std::string filename = e->s;
522539
523540 // drop chance
524541 chance = Parse::popFirstString(val);
525 if (chance == "fixed") e->z = 0;
526 else e->z = Parse::toInt(chance);
542 if (chance == "fixed") e->f = 0;
543 else e->f = Parse::toFloat(chance);
527544
528545 // quantity min/max
529546 e->a = std::max(Parse::popFirstInt(val), 1);
535552 std::string repeat_val = Parse::popFirstString(val);
536553 while (repeat_val != "") {
537554 ec_list->push_back(EventComponent());
538 EventComponent *ec = &ec_list->back();
555 EventComponent *ec = &ec_list->at(ec_list->size()-1);
539556 ec->type = EventComponent::LOOT;
540557
541558 ec->s = repeat_val;
542559 if (ec->s == "currency")
543 ec->c = eset->misc.currency_id;
560 ec->id = eset->misc.currency_id;
544561 else if (Parse::toInt(ec->s, -1) != -1)
545 ec->c = Parse::toInt(ec->s);
562 ec->id = Parse::toItemID(ec->s);
546563 else {
547564 // remove the last event component, since getLootTable() will create a new one
548565 ec_list->pop_back();
554571 }
555572
556573 chance = Parse::popFirstString(val);
557 if (chance == "fixed") ec->z = 0;
558 else ec->z = Parse::toInt(chance);
574 if (chance == "fixed") ec->f = 0;
575 else ec->f = Parse::toFloat(chance);
559576
560577 ec->a = std::max(Parse::popFirstInt(val), 1);
561578 ec->b = std::max(Parse::popFirstInt(val), ec->a);
581598 if (infile.section == "") {
582599 if (infile.key == "loot") {
583600 ec_list->push_back(EventComponent());
584 ec = &ec_list->back();
601 ec = &ec_list->at(ec_list->size()-1);
585602 parseLoot(infile.val, ec, ec_list);
586603 }
587604 }
588605 else if (infile.section == "loot") {
589606 if (infile.new_section) {
590607 ec_list->push_back(EventComponent());
591 ec = &ec_list->back();
608 ec = &ec_list->at(ec_list->size()-1);
592609 ec->type = EventComponent::LOOT;
593610 skip_to_next = false;
594611 }
600617 ec->s = infile.val;
601618
602619 if (ec->s == "currency")
603 ec->c = eset->misc.currency_id;
620 ec->id = eset->misc.currency_id;
604621 else if (Parse::toInt(ec->s, -1) != -1)
605 ec->c = Parse::toInt(ec->s);
622 ec->id = Parse::toItemID(ec->s);
606623 else {
607624 skip_to_next = true;
608625 infile.error("LootManager: Invalid item id for loot.");
610627 }
611628 else if (infile.key == "chance") {
612629 if (infile.val == "fixed")
613 ec->z = 0;
630 ec->f = 0;
614631 else
615 ec->z = Parse::toInt(infile.val);
632 ec->f = Parse::toFloat(infile.val);
616633 }
617634 else if (infile.key == "quantity") {
618635 ec->a = std::max(Parse::popFirstInt(infile.val), 1);
631648
632649 std::map<std::string, std::vector<EventComponent> >::iterator it;
633650 for (it = loot_tables.begin(); it != loot_tables.end(); ++it) {
634 if (it->first == filename) {
651 if (it->first == Filesystem::convertSlashes(filename)) {
635652 std::vector<EventComponent> *loot_defs = &it->second;
636653 for (unsigned i=0; i<loot_defs->size(); ++i) {
637654 ec_list->push_back((*loot_defs)[i]);
674691 new_loot.quantity = Math::randBetween(ec->a,ec->b);
675692
676693 // an item id of 0 means we should drop currency instead
677 if (ec->c == 0 || ec->c == eset->misc.currency_id) {
694 if (ec->id == 0 || ec->id == eset->misc.currency_id) {
678695 new_loot.item = eset->misc.currency_id;
679696 new_loot.quantity = new_loot.quantity * (100 + pc->stats.get(Stats::CURRENCY_FIND)) / 100;
680697 }
681698 else {
682 new_loot.item = ec->c;
699 new_loot.item = ec->id;
683700 }
684701
685702 if (itemstack_vec)
688705 addLoot(new_loot, p, !DROPPED_BY_HERO);
689706 }
690707
708 void LootManager::removeFromEnemiesDroppingLoot(StatBlock* sb) {
709 for (size_t i = enemiesDroppingLoot.size(); i > 0; i--) {
710 // enemies will actually be removed the next time checkEnemiesForLoot() runs
711 if (enemiesDroppingLoot[i-1] == sb)
712 enemiesDroppingLoot[i-1] = NULL;
713 }
714 }
715
691716 LootManager::~LootManager() {
692717 // 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];
718 std::map<ItemID, Item>::iterator item_it;
719 for (item_it = items->items.begin(); item_it != items->items.end(); ++item_it) {
720 if (item_it->second.loot_animation.empty())
721 continue;
722
723 for (size_t i = 0; i < item_it->second.loot_animation.size(); ++i) {
724 anim->decreaseCount(item_it->second.loot_animation[i].name);
725 delete animations[item_it->first][i];
699726 }
700727 }
701728
705732 anim->cleanUp();
706733
707734 snd->unload(sfx_loot);
708
709 delete tip;
710 }
735 }
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();
5147 void checkLootComponent(EventComponent* ec, FPoint *pos, std::vector<ItemStack> *itemstack_vec);
5248
5349 SoundID sfx_loot;
50 std::string sfx_loot_channel;
5451
5552 // loot refers to ItemManager indices
5653 std::vector<Loot> loot;
5754
5855 // enemies which should drop loot, but didnt yet.
59 std::vector<class Enemy*> enemiesDroppingLoot;
56 std::vector<class StatBlock*> enemiesDroppingLoot;
6057
6158 // loot tables defined in files under "loot/"
6259 std::map<std::string, std::vector<EventComponent> > loot_tables;
6562 // we block tiles that have loot dropped on them
6663 std::vector<Point> tiles_to_unblock;
6764
68 std::vector< std::vector<Animation*> > animations;
65 std::map< size_t, std::vector<Animation*> > animations;
6966
7067 public:
7168 static const bool DROPPED_BY_HERO = true;
7976 void renderTooltips(const FPoint& cam);
8077
8178 // called by enemy, who definitly wants to drop loot.
82 void addEnemyLoot(Enemy *e);
79 void addEnemyLoot(StatBlock *e);
8380 void addLoot(ItemStack stack, const FPoint& pos, bool dropped_by_hero);
8481 void checkLoot(std::vector<EventComponent> &loot_table, FPoint *pos, std::vector<ItemStack> *itemstack_vec);
8582 ItemStack checkPickup(const Point& mouse, const FPoint& cam, const FPoint& hero_pos);
8986 void addRenders(std::vector<Renderable> &ren, std::vector<Renderable> &ren_dead);
9087
9188 void parseLoot(std::string &val, EventComponent *e, std::vector<EventComponent> *ec_list);
89
90 void removeFromEnemiesDroppingLoot(StatBlock* sb);
9291 };
9392
9493 #endif
3434
3535 Map::Map()
3636 : filename("")
37 , collision_layer(-1)
3837 , layers()
3938 , events()
4039 , w(1)
7776 clearQueues();
7877
7978 music_filename = "";
80
81 collision_layer = -1;
79 parallax_filename = "";
80 background_color = Color(0,0,0,0);
81
8282 w = 1;
8383 h = 1;
8484 hero_pos_enabled = false;
124124 EventComponent *ec_power = events[i].getComponent(EventComponent::POWER);
125125 if (ec_power) {
126126 // store the index of this StatBlock so that we can find it when the event is activated
127 ec_power->y = addEventStatBlock(events[i]);
127 ec_power->x = addEventStatBlock(events[i]);
128128 }
129129 }
130130
136136 for (size_t i=0; i<layers.back().size(); ++i) {
137137 layers.back()[i].resize(h, 0);
138138 }
139 collision_layer = static_cast<int>(layers.size())-1;
140139 }
141140
142141 if (!hero_pos_enabled) {
204203 layers.back()[i].resize(h);
205204 }
206205 layernames.push_back(infile.val);
207 if (infile.val == "collision")
208 collision_layer = static_cast<int>(layernames.size())-1;
209206 }
210207 else if (infile.key == "format") {
211208 // @ATTR layer.format|string|Format for map layer, must be 'dec'
394391 if (ec_damage) {
395392 for (size_t i = 0; i < eset->damage_types.count; ++i) {
396393 if (i % 2 == 0) {
397 statb->starting[Stats::COUNT + i] = ec_damage->a; // min
394 statb->starting[Stats::COUNT + i] = ec_damage->x; // min
398395 }
399396 else {
400 statb->starting[Stats::COUNT + i] = ec_damage->b; // max
397 statb->starting[Stats::COUNT + i] = ec_damage->y; // max
401398 }
402399 }
403400 }
411408 // create a temporary EffectDef for immunity; will be used for map StatBlocks
412409 EffectDef immunity_effect;
413410 immunity_effect.id = "MAP_EVENT_IMMUNITY";
414 immunity_effect.type = "immunity";
411 immunity_effect.type = Effect::IMMUNITY;
415412 statb->effects.addEffect(immunity_effect, 0, 0, Power::SOURCE_TYPE_ENEMY, EffectManager::NO_POWER);
416413
417414 // 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;
132132
133133 std::string filename;
134134 std::string tileset;
135
136 int collision_layer;
137135 public:
138136 Map();
139137 ~Map();
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;
6875 }
6976 else if (infile.key == "speed") {
7077 // @ATTR layer.speed|float|Speed at which the background will move relative to the camera.
71 layers.back().speed = Parse::toFloat(infile.val);
78 layers.back().speed = (Settings::LOGIC_FPS * Parse::toFloat(infile.val)) / settings->max_frames_per_sec;
7279 }
7380 else if (infile.key == "fixed_speed") {
7481 // @ATTR layer.fixed_speed|float, float : X speed, Y speed|Speed at which the background will move independent of the camera movement.
75 layers.back().fixed_speed.x = Parse::toFloat(Parse::popFirstString(infile.val));
76 layers.back().fixed_speed.y = Parse::toFloat(Parse::popFirstString(infile.val));
82 layers.back().fixed_speed.x = (Settings::LOGIC_FPS * Parse::toFloat(Parse::popFirstString(infile.val))) / settings->max_frames_per_sec;
83 layers.back().fixed_speed.y = (Settings::LOGIC_FPS * Parse::toFloat(Parse::popFirstString(infile.val))) / settings->max_frames_per_sec;
7784 }
7885 else if (infile.key == "map_layer") {
7986 // @ATTR layer.map_layer|string|The tile map layer that this parallax layer will be rendered on top of.
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);
9595 loot.clear();
9696 }
9797
98 bool MapRenderer::enemyGroupPlaceEnemy(float x, float y, Map_Group &g) {
98 bool MapRenderer::enemyGroupPlaceEnemy(float x, float y, const Map_Group &g) {
9999 if (collider.isEmpty(x, y)) {
100100 Enemy_Level enemy_lev = enemyg->getRandomEnemy(g.category, g.levelmin, g.levelmax);
101101 if (!enemy_lev.type.empty()) {
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;
583570
584571 if (is_behind_SW)
585572 render_behind_SW.push(r_cursor);
586 else if (!is_behind_SW && is_behind_NE)
573 else if (is_behind_NE)
587574 render_behind_NE.push(r_cursor);
588575 else
589576 render_behind_none.push(r_cursor);
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, const 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"
4748 Point tip_pos;
4849 bool show_tooltip;
4950
50 bool enemyGroupPlaceEnemy(float x, float y, Map_Group &g);
51 bool enemyGroupPlaceEnemy(float x, float y, const Map_Group &g);
5152 void pushEnemyGroup(Map_Group &g);
5253
5354 void clearQueues();
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, const 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
5959 }
6060 }
6161
62 void Menu::setBackgroundDest(Rect &dest) {
62 void Menu::setBackgroundDest(const Rect &dest) {
6363 if (background) background->setDestFromRect(dest);
6464 }
6565
66 void Menu::setBackgroundClip(Rect &clip) {
66 void Menu::setBackgroundClip(const Rect &clip) {
6767 if (background) background->setClipFromRect(clip);
6868 }
6969
3535 virtual ~Menu();
3636
3737 void setBackground(const std::string& background_image);
38 void setBackgroundDest(Rect &dest);
39 void setBackgroundClip(Rect &clip);
38 void setBackgroundDest(const Rect &dest);
39 void setBackgroundClip(const Rect &clip);
4040 virtual void align();
4141 virtual void render();
4242 virtual void setWindowPos(int x, int y);
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
576539 }
577540
578541 bool enable_mm_attack = (!settings->mouse_move || inpt->pressing[Input::SHIFT] || pc->lock_enemy);
579 bool enable_main1 = (!platform.is_mobile_device || (!menu->menus_open && menu->touch_controls->checkAllowMain1())) && (settings->mouse_move_swap || enable_mm_attack);
542 bool enable_main1 = (!settings->touchscreen || (!menu->menus_open && menu->touch_controls->checkAllowMain1())) && (settings->mouse_move_swap || enable_mm_attack);
580543 bool enable_main2 = !settings->mouse_move_swap || enable_mm_attack;
581544
582545 // check click and hotkey actions
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 }
839761 * Set a target depending on how a power was triggered
840762 */
841763 FPoint MenuActionBar::setTarget(bool have_aim, const Power& pow) {
842 if (have_aim && settings->mouse_aim) {
764 if (have_aim && settings->mouse_aim && !settings->touchscreen) {
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
176176 graphics->unref();
177177 }
178178 }
179 // @ATTR image_icon|icon_id|Use an icon as the image instead of a file.
179 // @ATTR image.image_icon|icon_id|Use an icon as the image instead of a file.
180180 else if (infile.key == "image_icon") {
181181 if (bimage.image) {
182182 delete bimage.image;
225225 btext.color.b = static_cast<Uint8>(Parse::popFirstInt(infile.val));
226226 btext.font= Parse::popFirstString(infile.val);
227227 }
228 // @ATTR text.shadow|bool|If true, the text will have a black shadow like the text labels in various menus.
228 // @ATTR text.text_shadow|bool|If true, the text will have a black shadow like the text labels in various menus.
229229 else if (infile.key == "text_shadow") {
230230 btext.shadow = Parse::toBool(Parse::popFirstString(infile.val));
231231 }
270270 bbutton.label = Parse::popFirstString(infile.val);
271271 }
272272 else {
273 // @ATTR book.${EVENT_COMPONENT}|Event components to execute when the button is clicked. See the definitions in EventManager for possible attributes.
273 // @ATTR button.${EVENT_COMPONENT}|Event components to execute when the button is clicked. See the definitions in EventManager for possible attributes.
274274 loadBookEvent(infile, bbutton.event);
275275 }
276276 }
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 , frame_limit_lstb(new WidgetHorizontalList())
152 , frame_limit_lb(new WidgetLabel())
153 , max_render_size_lstb(new WidgetHorizontalList())
154 , max_render_size_lb(new WidgetLabel())
155
156 , music_volume_sl(new WidgetSlider(WidgetSlider::DEFAULT_FILE))
157 , music_volume_lb(new WidgetLabel())
158 , sound_volume_sl(new WidgetSlider(WidgetSlider::DEFAULT_FILE))
159 , sound_volume_lb(new WidgetLabel())
160
161 , show_fps_cb(new WidgetCheckBox(WidgetCheckBox::DEFAULT_FILE))
162 , show_fps_lb(new WidgetLabel())
163 , hardware_cursor_cb(new WidgetCheckBox(WidgetCheckBox::DEFAULT_FILE))
164 , hardware_cursor_lb(new WidgetLabel())
165 , colorblind_cb(new WidgetCheckBox(WidgetCheckBox::DEFAULT_FILE))
166 , colorblind_lb(new WidgetLabel())
167 , dev_mode_cb(new WidgetCheckBox(WidgetCheckBox::DEFAULT_FILE))
168 , dev_mode_lb(new WidgetLabel())
169 , subtitles_cb(new WidgetCheckBox(WidgetCheckBox::DEFAULT_FILE))
170 , subtitles_lb(new WidgetLabel())
171 , loot_tooltip_lstb(new WidgetHorizontalList())
172 , loot_tooltip_lb(new WidgetLabel())
173 , minimap_lstb(new WidgetHorizontalList())
174 , minimap_lb(new WidgetLabel())
175 , statbar_labels_cb(new WidgetCheckBox(WidgetCheckBox::DEFAULT_FILE))
176 , statbar_labels_lb(new WidgetLabel())
177 , statbar_autohide_cb(new WidgetCheckBox(WidgetCheckBox::DEFAULT_FILE))
178 , statbar_autohide_lb(new WidgetLabel())
179 , combat_text_cb(new WidgetCheckBox(WidgetCheckBox::DEFAULT_FILE))
180 , combat_text_lb(new WidgetLabel())
181 , auto_equip_cb(new WidgetCheckBox(WidgetCheckBox::DEFAULT_FILE))
182 , auto_equip_lb(new WidgetLabel())
183 , entity_markers_cb(new WidgetCheckBox(WidgetCheckBox::DEFAULT_FILE))
184 , entity_markers_lb(new WidgetLabel())
185 , low_hp_warning_lstb(new WidgetHorizontalList())
186 , low_hp_warning_lb(new WidgetLabel())
187 , low_hp_threshold_lstb(new WidgetHorizontalList())
188 , low_hp_threshold_lb(new WidgetLabel())
189 , item_compare_tips_cb(new WidgetCheckBox(WidgetCheckBox::DEFAULT_FILE))
190 , item_compare_tips_lb(new WidgetLabel())
191
192 , joystick_device_lstb(new WidgetHorizontalList())
193 , joystick_device_lb(new WidgetLabel())
194 , mouse_move_cb(new WidgetCheckBox(WidgetCheckBox::DEFAULT_FILE))
195 , mouse_move_lb(new WidgetLabel())
196 , mouse_aim_cb(new WidgetCheckBox(WidgetCheckBox::DEFAULT_FILE))
197 , mouse_aim_lb(new WidgetLabel())
198 , no_mouse_cb(new WidgetCheckBox(WidgetCheckBox::DEFAULT_FILE))
199 , no_mouse_lb(new WidgetLabel())
200 , mouse_move_swap_cb(new WidgetCheckBox(WidgetCheckBox::DEFAULT_FILE))
201 , mouse_move_swap_lb(new WidgetLabel())
202 , mouse_move_attack_cb(new WidgetCheckBox(WidgetCheckBox::DEFAULT_FILE))
203 , mouse_move_attack_lb(new WidgetLabel())
204 , joystick_deadzone_sl(new WidgetSlider(WidgetSlider::DEFAULT_FILE))
205 , joystick_deadzone_lb(new WidgetLabel())
206 , touch_controls_cb(new WidgetCheckBox(WidgetCheckBox::DEFAULT_FILE))
207 , touch_controls_lb(new WidgetLabel())
208 , touch_scale_sl(new WidgetSlider(WidgetSlider::DEFAULT_FILE))
209 , touch_scale_lb(new WidgetLabel())
210
211 , activemods_lstb(new WidgetListBox(10, WidgetListBox::DEFAULT_FILE))
212 , activemods_lb(new WidgetLabel())
213 , inactivemods_lstb(new WidgetListBox(10, WidgetListBox::DEFAULT_FILE))
214 , inactivemods_lb(new WidgetLabel())
215 , language_lstb(new WidgetHorizontalList())
216 , language_lb(new WidgetLabel())
217 , activemods_shiftup_btn(new WidgetButton("images/menus/buttons/up.png"))
218 , activemods_shiftdown_btn(new WidgetButton("images/menus/buttons/down.png"))
219 , activemods_deactivate_btn(new WidgetButton(WidgetButton::DEFAULT_FILE))
220 , inactivemods_activate_btn(new WidgetButton(WidgetButton::DEFAULT_FILE))
221
222 , active_tab(0)
223 , frame(0,0)
224 , frame_offset(11,8)
225 , tab_offset(3,0)
226 , scrollpane_color(0,0,0,0)
227 , scrollpane_padding(8, 40) // appropriate defaults for fantasycore widget sizes
228 , scrollpane_separator_color(font->getColor(FontEngine::COLOR_WIDGET_DISABLED))
229 , new_render_device(settings->render_device_name)
230 , input_confirm_timer(settings->max_frames_per_sec * 10) // 10 seconds
231 , input_key(0)
232 , key_count(0)
233 , keybind_tip_timer(settings->max_frames_per_sec * 5) // 5 seconds
234 , keybind_tip(new WidgetTooltip())
235 , clicked_accept(false)
236 , clicked_cancel(false)
237 , force_refresh_background(false)
238 , reload_music(false)
239 , clicked_pause_continue(false)
240 , clicked_pause_exit(false)
241 , clicked_pause_save(false)
242 {
243
244 Image *graphics;
245 graphics = render_device->loadImage("images/menus/config.png", RenderDevice::ERROR_NORMAL);
246 if (graphics) {
247 background = graphics->createSprite();
248 graphics->unref();
249 }
250
251 ok_button->setLabel(msg->get("OK"));
252 defaults_button->setLabel(msg->get("Defaults"));
253 cancel_button->setLabel(msg->get("Cancel"));
254
255 pause_continue_btn->setLabel(msg->get("Continue"));
256 setPauseExitText(MenuConfig::ENABLE_SAVE_GAME);
257 pause_save_btn->setLabel(msg->get("Save Game"));
258 setPauseSaveEnabled(MenuConfig::ENABLE_SAVE_GAME);
259 pause_time_text->setText(Utils::getTimeString(0));
260 pause_time_text->setJustify(FontEngine::JUSTIFY_RIGHT);
261 pause_time_text->setVAlign(LabelInfo::VALIGN_CENTER);
262
263 // Finish Mods ListBoxes setup
264 activemods_lstb->multi_select = true;
265 for (unsigned int i = 0; i < mods->mod_list.size() ; i++) {
266 if (mods->mod_list[i].name != mods->FALLBACK_MOD)
267 activemods_lstb->append(mods->mod_list[i].name,createModTooltip(&mods->mod_list[i]));
268 }
269
270 inactivemods_lstb->multi_select = true;
271 for (unsigned int i = 0; i<mods->mod_dirs.size(); i++) {
272 bool skip_mod = false;
273 for (unsigned int j = 0; j<mods->mod_list.size(); j++) {
274 if (mods->mod_dirs[i] == mods->mod_list[j].name) {
275 skip_mod = true;
276 break;
277 }
278 }
279 if (!skip_mod && mods->mod_dirs[i] != mods->FALLBACK_MOD) {
280 Mod temp_mod = mods->loadMod(mods->mod_dirs[i]);
281 inactivemods_lstb->append(mods->mod_dirs[i],createModTooltip(&temp_mod));
282 }
283 }
284 inactivemods_lstb->sort();
285
286 refreshJoysticks();
287
288 // Allocate KeyBindings
289 for (int i = 0; i < inpt->KEY_COUNT_USER * 3; i++) {
290 keybinds_lb.push_back(new WidgetLabel());
291 keybinds_btn.push_back(new WidgetButton(WidgetButton::DEFAULT_FILE));
292 }
293
294 key_count = static_cast<unsigned>(keybinds_btn.size()/3);
295
296 // don't allow remapping the primary Main1 binding
297 keybinds_btn[Input::MAIN1 * 3]->enabled = false;
298
299 // set up loot tooltip setting
300 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'."));
301 loot_tooltip_lstb->append(msg->get("Show all"), msg->get("Always show loot tooltips. Temporarily hide all loot tooltips with 'Alt'."));
302 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'."));
303
304 // set up minimap setting
305 minimap_lstb->append(msg->get("Visible"), "");
306 minimap_lstb->append(msg->get("Visible (2x zoom)"), "");
307 minimap_lstb->append(msg->get("Hidden"), "");
308
309 // set up low hp notification type combinantions
310 std::string lhpw_prefix = msg->get("Controls the type of warning to be activated when the player is below the low health threshold.");
311 std::string lhpw_warning1 = msg->get("- Display a message");
312 std::string lhpw_warning2 = msg->get("- Play a sound");
313 std::string lhpw_warning3 = msg->get("- Change the cursor");
314
315 low_hp_warning_lstb->append(msg->get("Disabled"), lhpw_prefix);
316 low_hp_warning_lstb->append(msg->get("All"), lhpw_prefix + "\n\n" + lhpw_warning1 + '\n' + lhpw_warning2 + '\n' + lhpw_warning3);
317 low_hp_warning_lstb->append(msg->get("Message & Cursor"), lhpw_prefix + "\n\n" + lhpw_warning1 + '\n' + lhpw_warning3);
318 low_hp_warning_lstb->append(msg->get("Message & Sound"), lhpw_prefix + "\n\n" + lhpw_warning1 + '\n' + lhpw_warning2);
319 low_hp_warning_lstb->append(msg->get("Sound & Cursor"), lhpw_prefix + "\n\n" + lhpw_warning2 + '\n' + lhpw_warning3);
320 low_hp_warning_lstb->append(msg->get("Message"), lhpw_prefix + "\n\n" + lhpw_warning1);
321 low_hp_warning_lstb->append(msg->get("Cursor"), lhpw_prefix + "\n\n" + lhpw_warning3);
322 low_hp_warning_lstb->append(msg->get("Sound"), lhpw_prefix + "\n\n" + lhpw_warning2);
323
324 // set up low hp threshold combo
325 for (unsigned int i = 1; i <= 10 ; ++i) {
326 std::stringstream ss;
327 ss << i * 5;
328 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."));
329 }
330
331 // set up the frame limits
332 frame_limits.push_back(30);
333 frame_limits.push_back(60);
334 frame_limits.push_back(120);
335 frame_limits.push_back(240);
336 if (std::find(frame_limits.begin(), frame_limits.end(), settings->max_frames_per_sec) == frame_limits.end())
337 frame_limits.push_back(settings->max_frames_per_sec);
338 unsigned short refresh_rate = render_device->getRefreshRate();
339 if (refresh_rate > 0 && std::find(frame_limits.begin(), frame_limits.end(), refresh_rate) == frame_limits.end())
340 frame_limits.push_back(refresh_rate);
341
342 std::sort(frame_limits.begin(), frame_limits.end());
343 for (size_t i = 0; i < frame_limits.size(); ++i) {
344 std::stringstream ss;
345 ss << frame_limits[i];
346 frame_limit_lstb->append(ss.str(), msg->get("The maximum frame rate that the game will be allowed to run at."));
347 }
348
349 // set up render resolutions
350 std::string max_render_size_tooltip = msg->get("The render size refers to the height in pixels of the surface used to draw the game. Mods define the allowed render sizes, but this option allows overriding the maximum size.");
351 max_render_size_lstb->append(msg->get("Default"), max_render_size_tooltip);
352 virtual_heights = eset->resolutions.virtual_heights;
353 if (settings->max_render_size > 0 && std::find(virtual_heights.begin(), virtual_heights.end(), settings->max_render_size) == virtual_heights.end())
354 virtual_heights.push_back(settings->max_render_size);
355
356 std::sort(virtual_heights.begin(), virtual_heights.end());
357 for (size_t i = 0; i < virtual_heights.size(); ++i) {
358 std::stringstream ss;
359 ss << virtual_heights[i];
360 max_render_size_lstb->append(ss.str(), max_render_size_tooltip);
361 }
362
363 init();
364
365 render_device->setBackgroundColor(Color(0,0,0,0));
366 }
367
368 MenuConfig::~MenuConfig() {
369 cleanup();
370 }
371
372 void MenuConfig::init() {
373 tab_control->setTabTitle(EXIT_TAB, msg->get("Exit"));
374 tab_control->setTabTitle(VIDEO_TAB, msg->get("Video"));
375 tab_control->setTabTitle(AUDIO_TAB, msg->get("Audio"));
376 tab_control->setTabTitle(INTERFACE_TAB, msg->get("Interface"));
377 tab_control->setTabTitle(INPUT_TAB, msg->get("Input"));
378 tab_control->setTabTitle(KEYBINDS_TAB, msg->get("Keybindings"));
379 tab_control->setTabTitle(MODS_TAB, msg->get("Mods"));
380
381 readConfig();
382
383 cfg_tabs.resize(6);
384 cfg_tabs[EXIT_TAB].options.resize(4);
385 cfg_tabs[VIDEO_TAB].options.resize(Platform::Video::COUNT);
386 cfg_tabs[AUDIO_TAB].options.resize(Platform::Audio::COUNT);
387 cfg_tabs[INTERFACE_TAB].options.resize(Platform::Interface::COUNT);
388 cfg_tabs[INPUT_TAB].options.resize(Platform::Input::COUNT);
389 cfg_tabs[KEYBINDS_TAB].options.resize(inpt->KEY_COUNT_USER * 3);
390
391 cfg_tabs[EXIT_TAB].setOptionWidgets(EXIT_OPTION_CONTINUE, pause_continue_lb, pause_continue_btn, msg->get("Paused"));
392 cfg_tabs[EXIT_TAB].setOptionWidgets(EXIT_OPTION_SAVE, pause_save_lb, pause_save_btn, "");
393 cfg_tabs[EXIT_TAB].setOptionWidgets(EXIT_OPTION_EXIT, pause_exit_lb, pause_exit_btn, "");
394 cfg_tabs[EXIT_TAB].setOptionWidgets(EXIT_OPTION_TIME_PLAYED, pause_time_lb, pause_time_text, msg->get("Time Played"));
395
396 if (!(MenuConfig::ENABLE_SAVE_GAME && eset->misc.save_anywhere)) {
397 cfg_tabs[EXIT_TAB].setOptionEnabled(EXIT_OPTION_SAVE, false);
398 }
399
400 cfg_tabs[VIDEO_TAB].setOptionWidgets(Platform::Video::RENDERER, renderer_lb, renderer_lstb, msg->get("Renderer"));
401 cfg_tabs[VIDEO_TAB].setOptionWidgets(Platform::Video::FULLSCREEN, fullscreen_lb, fullscreen_cb, msg->get("Full Screen Mode"));
402 cfg_tabs[VIDEO_TAB].setOptionWidgets(Platform::Video::HWSURFACE, hwsurface_lb, hwsurface_cb, msg->get("Hardware surfaces"));
403 cfg_tabs[VIDEO_TAB].setOptionWidgets(Platform::Video::VSYNC, vsync_lb, vsync_cb, msg->get("V-Sync"));
404 cfg_tabs[VIDEO_TAB].setOptionWidgets(Platform::Video::TEXTURE_FILTER, texture_filter_lb, texture_filter_cb, msg->get("Texture Filtering"));
405 cfg_tabs[VIDEO_TAB].setOptionWidgets(Platform::Video::DPI_SCALING, dpi_scaling_lb, dpi_scaling_cb, msg->get("DPI scaling"));
406 cfg_tabs[VIDEO_TAB].setOptionWidgets(Platform::Video::PARALLAX_LAYERS, parallax_layers_lb, parallax_layers_cb, msg->get("Parallax Layers"));
407 cfg_tabs[VIDEO_TAB].setOptionWidgets(Platform::Video::ENABLE_GAMMA, change_gamma_lb, change_gamma_cb, msg->get("Allow changing gamma"));
408 cfg_tabs[VIDEO_TAB].setOptionWidgets(Platform::Video::GAMMA, gamma_lb, gamma_sl, msg->get("Gamma"));
409 cfg_tabs[VIDEO_TAB].setOptionWidgets(Platform::Video::MAX_RENDER_SIZE, max_render_size_lb, max_render_size_lstb, msg->get("Maximum Render Size"));
410 cfg_tabs[VIDEO_TAB].setOptionWidgets(Platform::Video::FRAME_LIMIT, frame_limit_lb, frame_limit_lstb, msg->get("Frame Limit"));
411
412 cfg_tabs[AUDIO_TAB].setOptionWidgets(Platform::Audio::SFX, sound_volume_lb, sound_volume_sl, msg->get("Sound Volume"));
413 cfg_tabs[AUDIO_TAB].setOptionWidgets(Platform::Audio::MUSIC, music_volume_lb, music_volume_sl, msg->get("Music Volume"));
414
415 cfg_tabs[INTERFACE_TAB].setOptionWidgets(Platform::Interface::LANGUAGE, language_lb, language_lstb, msg->get("Language"));
416 cfg_tabs[INTERFACE_TAB].setOptionWidgets(Platform::Interface::SHOW_FPS, show_fps_lb, show_fps_cb, msg->get("Show FPS"));
417 cfg_tabs[INTERFACE_TAB].setOptionWidgets(Platform::Interface::HARDWARE_CURSOR, hardware_cursor_lb, hardware_cursor_cb, msg->get("Hardware mouse cursor"));
418 cfg_tabs[INTERFACE_TAB].setOptionWidgets(Platform::Interface::COLORBLIND, colorblind_lb, colorblind_cb, msg->get("Colorblind Mode"));
419 cfg_tabs[INTERFACE_TAB].setOptionWidgets(Platform::Interface::DEV_MODE, dev_mode_lb, dev_mode_cb, msg->get("Developer Mode"));
420 cfg_tabs[INTERFACE_TAB].setOptionWidgets(Platform::Interface::SUBTITLES, subtitles_lb, subtitles_cb, msg->get("Subtitles"));
421 cfg_tabs[INTERFACE_TAB].setOptionWidgets(Platform::Interface::LOOT_TOOLTIPS, loot_tooltip_lb, loot_tooltip_lstb, msg->get("Loot tooltip visibility"));
422 cfg_tabs[INTERFACE_TAB].setOptionWidgets(Platform::Interface::MINIMAP_MODE, minimap_lb, minimap_lstb, msg->get("Mini-map mode"));
423 cfg_tabs[INTERFACE_TAB].setOptionWidgets(Platform::Interface::STATBAR_LABELS, statbar_labels_lb, statbar_labels_cb, msg->get("Always show stat bar labels"));
424 cfg_tabs[INTERFACE_TAB].setOptionWidgets(Platform::Interface::STATBAR_AUTOHIDE, statbar_autohide_lb, statbar_autohide_cb, msg->get("Allow stat bar auto-hiding"));
425 cfg_tabs[INTERFACE_TAB].setOptionWidgets(Platform::Interface::COMBAT_TEXT, combat_text_lb, combat_text_cb, msg->get("Show combat text"));
426 cfg_tabs[INTERFACE_TAB].setOptionWidgets(Platform::Interface::AUTO_EQUIP, auto_equip_lb, auto_equip_cb, msg->get("Automatically equip items"));
427 cfg_tabs[INTERFACE_TAB].setOptionWidgets(Platform::Interface::ENTITY_MARKERS, entity_markers_lb, entity_markers_cb, msg->get("Show hidden entity markers"));
428 cfg_tabs[INTERFACE_TAB].setOptionWidgets(Platform::Interface::LOW_HP_WARNING_TYPE, low_hp_warning_lb, low_hp_warning_lstb, msg->get("Low health notification"));
429 cfg_tabs[INTERFACE_TAB].setOptionWidgets(Platform::Interface::LOW_HP_THRESHOLD, low_hp_threshold_lb, low_hp_threshold_lstb, msg->get("Low health threshold"));
430 cfg_tabs[INTERFACE_TAB].setOptionWidgets(Platform::Interface::ITEM_COMPARE_TIPS, item_compare_tips_lb, item_compare_tips_cb, msg->get("Show item comparison tooltips"));
431
432
433 cfg_tabs[INPUT_TAB].setOptionWidgets(Platform::Input::JOYSTICK, joystick_device_lb, joystick_device_lstb, msg->get("Joystick"));
434 cfg_tabs[INPUT_TAB].setOptionWidgets(Platform::Input::MOUSE_MOVE, mouse_move_lb, mouse_move_cb, msg->get("Move hero using mouse"));
435 cfg_tabs[INPUT_TAB].setOptionWidgets(Platform::Input::MOUSE_AIM, mouse_aim_lb, mouse_aim_cb, msg->get("Mouse aim"));
436 cfg_tabs[INPUT_TAB].setOptionWidgets(Platform::Input::NO_MOUSE, no_mouse_lb, no_mouse_cb, msg->get("Do not use mouse"));
437 cfg_tabs[INPUT_TAB].setOptionWidgets(Platform::Input::MOUSE_MOVE_SWAP, mouse_move_swap_lb, mouse_move_swap_cb, msg->get("Swap mouse movement button"));
438 cfg_tabs[INPUT_TAB].setOptionWidgets(Platform::Input::MOUSE_MOVE_ATTACK, mouse_move_attack_lb, mouse_move_attack_cb, msg->get("Attack with mouse movement"));
439 cfg_tabs[INPUT_TAB].setOptionWidgets(Platform::Input::JOYSTICK_DEADZONE, joystick_deadzone_lb, joystick_deadzone_sl, msg->get("Joystick Deadzone"));
440 cfg_tabs[INPUT_TAB].setOptionWidgets(Platform::Input::TOUCH_CONTROLS, touch_controls_lb, touch_controls_cb, msg->get("Touch Controls"));
441 cfg_tabs[INPUT_TAB].setOptionWidgets(Platform::Input::TOUCH_SCALE, touch_scale_lb, touch_scale_sl, msg->get("Touch Gamepad Scaling"));
442
443
444 for (size_t i = 0; i < keybinds_btn.size(); ++i) {
445 if (i % 3 == 0) {
446 cfg_tabs[KEYBINDS_TAB].setOptionWidgets(static_cast<int>(i), keybinds_lb[i], keybinds_btn[i], inpt->binding_name[i/3]);
447 // TODO since these are blank, don't allocate?
448 cfg_tabs[KEYBINDS_TAB].setOptionWidgets(static_cast<int>(i+1), keybinds_lb[i+1], keybinds_btn[i+1], "");
449 cfg_tabs[KEYBINDS_TAB].setOptionWidgets(static_cast<int>(i+2), keybinds_lb[i+2], keybinds_btn[i+2], "");
450
451 keybinds_btn[i]->tooltip = msg->get("Primary binding: %s", inpt->binding_name[i/3].c_str());
452 keybinds_btn[i+1]->tooltip = msg->get("Alternate binding: %s", inpt->binding_name[i/3].c_str());
453 keybinds_btn[i+2]->tooltip = msg->get("Joystick binding: %s", inpt->binding_name[i/3].c_str());
454 }
455 }
456
457 // disable some options
458 if (!is_game_state) {
459 cfg_tabs[VIDEO_TAB].setOptionEnabled(Platform::Video::RENDERER, false);
460 cfg_tabs[VIDEO_TAB].setOptionEnabled(Platform::Video::HWSURFACE, false);
461 cfg_tabs[VIDEO_TAB].setOptionEnabled(Platform::Video::VSYNC, false);
462 cfg_tabs[VIDEO_TAB].setOptionEnabled(Platform::Video::TEXTURE_FILTER, false);
463 cfg_tabs[VIDEO_TAB].setOptionEnabled(Platform::Video::FRAME_LIMIT, false);
464
465 cfg_tabs[INTERFACE_TAB].setOptionEnabled(Platform::Interface::LANGUAGE, false);
466 cfg_tabs[INTERFACE_TAB].setOptionEnabled(Platform::Interface::DEV_MODE, false);
467
468 tab_control->setEnabled(static_cast<unsigned>(MODS_TAB), false);
469 tab_control->setEnabled(static_cast<unsigned>(EXIT_TAB), true);
470 enable_gamestate_buttons = false;
471 }
472 else {
473 cfg_tabs[EXIT_TAB].setOptionEnabled(EXIT_OPTION_CONTINUE, false);
474 cfg_tabs[EXIT_TAB].setOptionEnabled(EXIT_OPTION_SAVE, false);
475 cfg_tabs[EXIT_TAB].setOptionEnabled(EXIT_OPTION_EXIT, false);
476 cfg_tabs[EXIT_TAB].setOptionEnabled(EXIT_OPTION_TIME_PLAYED, false);
477 tab_control->setEnabled(static_cast<unsigned>(EXIT_TAB), false);
478 enable_gamestate_buttons = true;
479 }
480
481 // disable platform-specific options
482 for (int i = 0; i < Platform::Video::COUNT; ++i) {
483 if (!platform.config_video[i])
484 cfg_tabs[VIDEO_TAB].setOptionEnabled(i, false);
485 }
486 for (int i = 0; i < Platform::Audio::COUNT; ++i) {
487 if (!platform.config_audio[i])
488 cfg_tabs[AUDIO_TAB].setOptionEnabled(i, false);
489 }
490 for (int i = 0; i < Platform::Interface::COUNT; ++i) {
491 if (!platform.config_interface[i])
492 cfg_tabs[INTERFACE_TAB].setOptionEnabled(i, false);
493 }
494 for (int i = 0; i < Platform::Input::COUNT; ++i) {
495 if (!platform.config_input[i])
496 cfg_tabs[INPUT_TAB].setOptionEnabled(i, false);
497 }
498 if (!platform.config_misc[Platform::Misc::KEYBINDS]) {
499 for (size_t i = 0; i < keybinds_btn.size(); ++i) {
500 cfg_tabs[KEYBINDS_TAB].setOptionEnabled(static_cast<int>(i), false);
501 }
502 }
503 if (!platform.config_misc[Platform::Misc::MODS]) {
504 tab_control->setEnabled(static_cast<unsigned>(MODS_TAB), false);
505 }
506
507 // place widgets
508 for (size_t i = 0; i < cfg_tabs.size(); ++i) {
509 if (cfg_tabs[i].enabled_count == 0) {
510 tab_control->setEnabled(static_cast<unsigned>(i), false);
511 }
512
513 // set up scrollbox
514 cfg_tabs[i].scrollbox = new WidgetScrollBox(scrollpane.w, scrollpane.h);
515 cfg_tabs[i].scrollbox->setBasePos(scrollpane.x, scrollpane.y, Utils::ALIGN_TOPLEFT);
516 cfg_tabs[i].scrollbox->bg = scrollpane_color;
517 cfg_tabs[i].scrollbox->resize(scrollpane.w, cfg_tabs[i].enabled_count * scrollpane_padding.y);
518
519 for (size_t j = 0; j < cfg_tabs[i].options.size(); ++j) {
520 placeLabeledWidgetAuto(static_cast<int>(i), static_cast<int>(j));
521 }
522 }
523
524 addChildWidgets();
525 setupTabList();
526
527 refreshWidgets();
528
529 update();
530 }
531
532 void MenuConfig::readConfig() {
533 //Load the menu configuration from file
534
535 FileParser infile;
536 if (infile.open("menus/config.txt", FileParser::MOD_FILE, FileParser::ERROR_NORMAL)) {
537 while (infile.next()) {
538 if (parseKeyButtons(infile))
539 continue;
540
541 int x1 = Parse::popFirstInt(infile.val);
542 int y1 = Parse::popFirstInt(infile.val);
543 int x2 = Parse::popFirstInt(infile.val);
544 int y2 = Parse::popFirstInt(infile.val);
545
546 if (parseKey(infile, x1, y1, x2, y2))
547 continue;
548 else
549 infile.error("MenuConfig: '%s' is not a valid key.", infile.key.c_str());
550 }
551 infile.close();
552 }
553
554 // add description tooltips
555 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.");
556 vsync_cb->tooltip = msg->get("Prevents screen tearing. Disable if you experience \"stuttering\" in windowed mode or input lag.");
557 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.");
558 parallax_layers_cb->tooltip = msg->get("This enables parallax (non-tile) layers. Disabling this setting can improve performance in some cases.");
559 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.");
560 colorblind_cb->tooltip = msg->get("Provides additional text for information that is primarily conveyed through color.");
561 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.");
562 auto_equip_cb->tooltip = msg->get("When enabled, empty equipment slots will be filled with applicable items when they are obtained.");
563 entity_markers_cb->tooltip = msg->get("Shows a marker above enemies, allies, and the player when they are obscured by tall objects.");
564 item_compare_tips_cb->tooltip = msg->get("When enabled, tooltips for equipped items of the same type are shown next to standard item tooltips.");
565 no_mouse_cb->tooltip = msg->get("This allows the game to be controlled entirely with the keyboard (or joystick).");
566 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'.");
567 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.");
568 mouse_aim_cb->tooltip = msg->get("The player's attacks will be aimed in the direction of the mouse cursor when this is enabled.");
569 touch_controls_cb->tooltip = msg->get("When enabled, a virtual gamepad will be added in-game. Other interactions, such as drag-and-drop behavior, are also altered to better suit touch input.");
570 }
571
572 bool MenuConfig::parseKeyButtons(FileParser &infile) {
573 // @CLASS MenuConfig|Description of menus/config.txt
574
575 if (infile.key == "button_ok") {
576 // @ATTR button_ok|int, int, alignment : X, Y, Alignment|Position of the "OK" button. Not used in the pause menu.
577 int x = Parse::popFirstInt(infile.val);
578 int y = Parse::popFirstInt(infile.val);
579 int a = Parse::toAlignment(Parse::popFirstString(infile.val));
580 ok_button->setBasePos(x, y, a);
581 }
582 else if (infile.key == "button_defaults") {
583 // @ATTR button_defaults|int, int, alignment : X, Y, Alignment|Position of the "Defaults" button. Not used in the pause menu.
584 int x = Parse::popFirstInt(infile.val);
585 int y = Parse::popFirstInt(infile.val);
586 int a = Parse::toAlignment(Parse::popFirstString(infile.val));
587 defaults_button->setBasePos(x, y, a);
588 }
589 else if (infile.key == "button_cancel") {
590 // @ATTR button_cancel|int, int, alignment : X, Y, Alignment|Position of the "Cancel" button. Not used in the pause menu.
591 int x = Parse::popFirstInt(infile.val);
592 int y = Parse::popFirstInt(infile.val);
593 int a = Parse::toAlignment(Parse::popFirstString(infile.val));
594 cancel_button->setBasePos(x, y, a);
595 }
596 else {
597 return false;
598 }
599
600 return true;
601 }
602 bool MenuConfig::parseKey(FileParser &infile, int &x1, int &y1, int &x2, int &y2) {
603 if (infile.key == "listbox_scrollbar_offset") {
604 // @ATTR listbox_scrollbar_offset|int|Horizontal offset from the right of listboxes (mods, languages, etc) to place the scrollbar.
605 activemods_lstb->scrollbar_offset = x1;
606 inactivemods_lstb->scrollbar_offset = x1;
607 }
608 else if (infile.key == "frame_offset") {
609 // @ATTR frame_offset|point|Offset for all the widgets contained under each tab.
610 frame_offset.x = x1;
611 frame_offset.y = y1;
612 }
613 else if (infile.key == "tab_offset") {
614 // @ATTR tab_offset|point|Offset for the row of tabs.
615 tab_offset.x = x1;
616 tab_offset.y = y1;
617 }
618 else if (infile.key == "activemods") {
619 // @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.
620 placeLabeledWidget(activemods_lb, activemods_lstb, x1, y1, x2, y2, msg->get("Active Mods"));
621 activemods_lb->setJustify(FontEngine::JUSTIFY_CENTER);
622 }
623 else if (infile.key == "activemods_height") {
624 // @ATTR activemods_height|int|Number of visible rows for the "Active Mods" list box.
625 activemods_lstb->setHeight(x1);
626 }
627 else if (infile.key == "inactivemods") {
628 // @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.
629 placeLabeledWidget(inactivemods_lb, inactivemods_lstb, x1, y1, x2, y2, msg->get("Available Mods"));
630 inactivemods_lb->setJustify(FontEngine::JUSTIFY_CENTER);
631 }
632 else if (infile.key == "inactivemods_height") {
633 // @ATTR inactivemods_height|int|Number of visible rows for the "Available Mods" list box.
634 inactivemods_lstb->setHeight(x1);
635 }
636 else if (infile.key == "activemods_shiftup") {
637 // @ATTR activemods_shiftup|point|Position of the button to shift mods up in "Active Mods" relative to the frame.
638 activemods_shiftup_btn->setBasePos(x1, y1, Utils::ALIGN_TOPLEFT);
639 activemods_shiftup_btn->refresh();
640 }
641 else if (infile.key == "activemods_shiftdown") {
642 // @ATTR activemods_shiftdown|point|Position of the button to shift mods down in "Active Mods" relative to the frame.
643 activemods_shiftdown_btn->setBasePos(x1, y1, Utils::ALIGN_TOPLEFT);
644 activemods_shiftdown_btn->refresh();
645 }
646 else if (infile.key == "activemods_deactivate") {
647 // @ATTR activemods_deactivate|point|Position of the "Disable" button relative to the frame.
648 activemods_deactivate_btn->setLabel(msg->get("<< Disable"));
649 activemods_deactivate_btn->setBasePos(x1, y1, Utils::ALIGN_TOPLEFT);
650 activemods_deactivate_btn->refresh();
651 }
652 else if (infile.key == "inactivemods_activate") {
653 // @ATTR inactivemods_activate|point|Position of the "Enable" button relative to the frame.
654 inactivemods_activate_btn->setLabel(msg->get("Enable >>"));
655 inactivemods_activate_btn->setBasePos(x1, y1, Utils::ALIGN_TOPLEFT);
656 inactivemods_activate_btn->refresh();
657 }
658 else if (infile.key == "scrollpane") {
659 // @ATTR scrollpane|rectangle|Position of the keybinding scrollbox relative to the frame.
660 scrollpane.x = x1;
661 scrollpane.y = y1;
662 scrollpane.w = x2;
663 scrollpane.h = y2;
664 }
665 else if (infile.key == "scrollpane_padding") {
666 // @ATTR scrollpane_padding|int, int : Horizontal padding, Vertical padding|Pixel padding for each item listed in a tab's scroll box.
667 scrollpane_padding.x = x1;
668 scrollpane_padding.y = y1;
669 }
670 else if (infile.key == "scrollpane_separator_color") {
671 // @ATTR scrollpane_separator_color|color|Color of the separator line in between scroll box items.
672 scrollpane_separator_color.r = static_cast<Uint8>(x1);
673 scrollpane_separator_color.g = static_cast<Uint8>(y1);
674 scrollpane_separator_color.b = static_cast<Uint8>(x2);
675 }
676 else if (infile.key == "scrollpane_bg_color") {
677 // @ATTR keybinds_bg_color|color, int: Color, Alpha|Background color and alpha for the keybindings scrollbox.
678 scrollpane_color.r = static_cast<Uint8>(x1);
679 scrollpane_color.g = static_cast<Uint8>(y1);
680 scrollpane_color.b = static_cast<Uint8>(x2);
681 scrollpane_color.a = static_cast<Uint8>(y2);
682 }
683
684 else return false;
685
686 return true;
687 }
688
689 void MenuConfig::addChildWidgets() {
690 for (size_t i = 0; i < cfg_tabs.size(); ++i) {
691 for (size_t j = 0; j < cfg_tabs[i].options.size(); ++j) {
692 if (cfg_tabs[i].options[j].enabled) {
693 cfg_tabs[i].scrollbox->addChildWidget(cfg_tabs[i].options[j].widget);
694 cfg_tabs[i].scrollbox->addChildWidget(cfg_tabs[i].options[j].label);
695 }
696
697 // only for memory management
698 addChildWidget(cfg_tabs[i].options[j].widget, NO_TAB);
699 addChildWidget(cfg_tabs[i].options[j].label, NO_TAB);
700 }
701 }
702
703 addChildWidget(activemods_lstb, MODS_TAB);
704 addChildWidget(activemods_lb, MODS_TAB);
705 addChildWidget(inactivemods_lstb, MODS_TAB);
706 addChildWidget(inactivemods_lb, MODS_TAB);
707 addChildWidget(activemods_shiftup_btn, MODS_TAB);
708 addChildWidget(activemods_shiftdown_btn, MODS_TAB);
709 addChildWidget(activemods_deactivate_btn, MODS_TAB);
710 addChildWidget(inactivemods_activate_btn, MODS_TAB);
711 }
712
713 void MenuConfig::setupTabList() {
714 tablist.add(tab_control);
715 tablist.setPrevTabList(&tablist_main);
716
717 if (enable_gamestate_buttons) {
718 tablist_main.add(ok_button);
719 tablist_main.add(defaults_button);
720 tablist_main.add(cancel_button);
721 }
722 tablist_main.setPrevTabList(&tablist);
723 tablist_main.setNextTabList(&tablist);
724 tablist_main.lock();
725
726 tablist_exit.setScrollType(Widget::SCROLL_VERTICAL);
727 tablist_exit.add(cfg_tabs[EXIT_TAB].scrollbox);
728 tablist_exit.setPrevTabList(&tablist);
729 tablist_exit.setNextTabList(&tablist_main);
730 tablist_exit.lock();
731
732 tablist_video.setScrollType(Widget::SCROLL_VERTICAL);
733 tablist_video.add(cfg_tabs[VIDEO_TAB].scrollbox);
734 tablist_video.setPrevTabList(&tablist);
735 tablist_video.setNextTabList(&tablist_main);
736 tablist_video.lock();
737
738 tablist_audio.setScrollType(Widget::SCROLL_VERTICAL);
739 tablist_audio.add(cfg_tabs[AUDIO_TAB].scrollbox);
740 tablist_audio.setPrevTabList(&tablist);
741 tablist_audio.setNextTabList(&tablist_main);
742 tablist_audio.lock();
743
744 tablist_interface.setScrollType(Widget::SCROLL_VERTICAL);
745 tablist_interface.add(cfg_tabs[INTERFACE_TAB].scrollbox);
746 tablist_interface.setPrevTabList(&tablist);
747 tablist_interface.setNextTabList(&tablist_main);
748 tablist_interface.lock();
749
750 tablist_input.setScrollType(Widget::SCROLL_VERTICAL);
751 tablist_input.add(cfg_tabs[INPUT_TAB].scrollbox);
752 tablist_input.setPrevTabList(&tablist);
753 tablist_input.setNextTabList(&tablist_main);
754 tablist_input.lock();
755
756 tablist_keybinds.setScrollType(Widget::SCROLL_VERTICAL);
757 tablist_keybinds.add(cfg_tabs[KEYBINDS_TAB].scrollbox);
758 tablist_keybinds.setPrevTabList(&tablist);
759 tablist_keybinds.setNextTabList(&tablist_main);
760 tablist_keybinds.lock();
761
762 tablist_mods.add(inactivemods_lstb);
763 tablist_mods.add(activemods_lstb);
764 tablist_mods.add(inactivemods_activate_btn);
765 tablist_mods.add(activemods_deactivate_btn);
766 tablist_mods.add(activemods_shiftup_btn);
767 tablist_mods.add(activemods_shiftdown_btn);
768 tablist_mods.setPrevTabList(&tablist);
769 tablist_mods.setNextTabList(&tablist_main);
770 tablist_mods.lock();
771 }
772
773 void MenuConfig::update() {
774 updateVideo();
775 updateAudio();
776 updateInterface();
777 updateInput();
778 updateKeybinds();
779 updateMods();
780 }
781
782 void MenuConfig::updateVideo() {
783 fullscreen_cb->setChecked(settings->fullscreen);
784 hwsurface_cb->setChecked(settings->hwsurface);
785 vsync_cb->setChecked(settings->vsync);
786 texture_filter_cb->setChecked(settings->texture_filter);
787 dpi_scaling_cb->setChecked(settings->dpi_scaling);
788 parallax_layers_cb->setChecked(settings->parallax_layers);
789 change_gamma_cb->setChecked(settings->change_gamma);
790
791 if (settings->change_gamma) {
792 render_device->setGamma(settings->gamma);
793 }
794 else {
795 settings->gamma = 1.0;
796 gamma_sl->enabled = false;
797 render_device->resetGamma();
798 }
799 gamma_sl->set(GAMMA_MIN, GAMMA_MAX, static_cast<int>(settings->gamma * 10.0));
800
801 refreshRenderers();
802
803 for (size_t i = 0; i < frame_limits.size(); ++i) {
804 if (frame_limits[i] == settings->max_frames_per_sec) {
805 frame_limit_lstb->select(static_cast<int>(i));
806 break;
807 }
808 }
809
810 if (settings->max_render_size == 0) {
811 max_render_size_lstb->select(0);
812 }
813 else {
814 for (size_t i = 0; i < virtual_heights.size(); ++i) {
815 if (virtual_heights[i] == settings->max_render_size) {
816 max_render_size_lstb->select(static_cast<int>(i+1));
817 break;
818 }
819 }
820 }
821 refreshWindowSize();
822
823 cfg_tabs[VIDEO_TAB].scrollbox->refresh();
824 }
825
826 void MenuConfig::updateAudio() {
827 if (settings->audio) {
828 music_volume_sl->set(0, 128, settings->music_volume);
829 snd->setVolumeMusic(settings->music_volume);
830 sound_volume_sl->set(0, 128, settings->sound_volume);
831 snd->setVolumeSFX(settings->sound_volume);
832 }
833 else {
834 music_volume_sl->set(0,128,0);
835 sound_volume_sl->set(0,128,0);
836 }
837
838 cfg_tabs[AUDIO_TAB].scrollbox->refresh();
839 }
840
841 void MenuConfig::updateInterface() {
842 show_fps_cb->setChecked(settings->show_fps);
843 colorblind_cb->setChecked(settings->colorblind);
844 hardware_cursor_cb->setChecked(settings->hardware_cursor);
845 dev_mode_cb->setChecked(settings->dev_mode);
846 subtitles_cb->setChecked(settings->subtitles);
847 statbar_labels_cb->setChecked(settings->statbar_labels);
848 statbar_autohide_cb->setChecked(settings->statbar_autohide);
849 combat_text_cb->setChecked(settings->combat_text);
850 auto_equip_cb->setChecked(settings->auto_equip);
851 entity_markers_cb->setChecked(settings->entity_markers);
852 low_hp_warning_lstb->select(settings->low_hp_warning_type);
853 low_hp_threshold_lstb->select((settings->low_hp_threshold/5)-1);
854 item_compare_tips_cb->setChecked(settings->item_compare_tips);
855
856 loot_tooltip_lstb->select(settings->loot_tooltips);
857 minimap_lstb->select(settings->minimap_mode);
858
859 refreshLanguages();
860
861 cfg_tabs[INTERFACE_TAB].scrollbox->refresh();
862 }
863
864 void MenuConfig::updateInput() {
865 mouse_aim_cb->setChecked(settings->mouse_aim);
866 no_mouse_cb->setChecked(settings->no_mouse);
867 mouse_move_cb->setChecked(settings->mouse_move);
868 mouse_move_swap_cb->setChecked(settings->mouse_move_swap);
869 mouse_move_attack_cb->setChecked(settings->mouse_move_attack);
870 touch_controls_cb->setChecked(settings->touchscreen);
871
872 if (settings->enable_joystick && inpt->getNumJoysticks() > 0) {
873 inpt->initJoystick();
874 joystick_device_lstb->select(settings->joystick_device + 1);
875 }
876
877 joystick_deadzone_sl->set(0, 32768, settings->joy_deadzone);
878 touch_scale_sl->set(TOUCH_SCALE_MIN, TOUCH_SCALE_MAX, static_cast<int>(settings->touch_scale * 100.0));
879
880 cfg_tabs[INPUT_TAB].scrollbox->refresh();
881 }
882
883 void MenuConfig::updateKeybinds() {
884 // now do labels for keybinds that are set
885 for (unsigned int i = 0; i < keybinds_btn.size(); i++) {
886 if (i % 3 == 0) {
887 keybinds_btn[i]->setLabel(inpt->getBindingString(i/3));
888 keybinds_btn[i+1]->setLabel(inpt->getBindingString(i/3, InputState::BINDING_ALT));
889 keybinds_btn[i+2]->setLabel(inpt->getBindingString(i/3, InputState::BINDING_JOYSTICK));
890
891 keybinds_btn[i]->refresh();
892 keybinds_btn[i+1]->refresh();
893 keybinds_btn[i+2]->refresh();
894 }
895 }
896 cfg_tabs[KEYBINDS_TAB].scrollbox->refresh();
897 }
898
899 void MenuConfig::updateMods() {
900 activemods_lstb->refresh();
901 inactivemods_lstb->refresh();
902 }
903
904 void MenuConfig::logic() {
905 if (inpt->window_resized)
906 refreshWidgets();
907
908 if (defaults_confirm->visible) {
909 // reset defaults confirmation
910 logicDefaults();
911 return;
912 }
913 else if (input_confirm->visible) {
914 // assign a keybind
915 input_confirm->logic();
916 scanKey(input_key);
917 input_confirm_timer.tick();
918 if (input_confirm_timer.isEnd())
919 input_confirm->visible = false;
920 return;
921 }
922 else {
923 if (!logicMain())
924 return;
925 }
926
927 // tab contents
928 active_tab = tab_control->getActiveTab();
929
930 if (active_tab == EXIT_TAB) {
931 if (hero) {
932 pause_time_text->setText(Utils::getTimeString(hero->time_played));
933 }
934 tablist.setNextTabList(&tablist_exit);
935 logicExit();
936 }
937 if (active_tab == VIDEO_TAB) {
938 tablist.setNextTabList(&tablist_video);
939 logicVideo();
940 }
941 else if (active_tab == AUDIO_TAB) {
942 tablist.setNextTabList(&tablist_audio);
943 logicAudio();
944 }
945 else if (active_tab == INTERFACE_TAB) {
946 tablist.setNextTabList(&tablist_interface);
947 logicInterface();
948
949 // TODO remove this?
950 if (platform.force_hardware_cursor) {
951 // for some platforms, hardware mouse cursor can not be turned off
952 settings->hardware_cursor = true;
953 hardware_cursor_cb->setChecked(settings->hardware_cursor);
954 }
955 }
956 else if (active_tab == INPUT_TAB) {
957 tablist.setNextTabList(&tablist_input);
958 logicInput();
959 }
960 else if (active_tab == KEYBINDS_TAB) {
961 tablist.setNextTabList(&tablist_keybinds);
962 logicKeybinds();
963 }
964 else if (active_tab == MODS_TAB) {
965 tablist.setNextTabList(&tablist_mods);
966 logicMods();
967 }
968 }
969
970 bool MenuConfig::logicMain() {
971 for (unsigned int i = 0; i < child_widget.size(); i++) {
972 if (child_widget[i]->in_focus && optiontab[i] != NO_TAB) {
973 tab_control->setActiveTab(optiontab[i]);
974 break;
975 }
976 }
977
978 // tabs & the bottom 3 main buttons
979 tab_control->logic();
980 tablist.logic();
981 tablist_main.logic();
982 tablist_exit.logic();
983 tablist_video.logic();
984 tablist_audio.logic();
985 tablist_interface.logic();
986 tablist_input.logic();
987 tablist_keybinds.logic();
988 tablist_mods.logic();
989
990 if (enable_gamestate_buttons) {
991 // Ok/Cancel Buttons
992 if (ok_button->checkClick()) {
993 clicked_accept = true;
994
995 // MenuConfig deconstructed, proceed with caution
996 return false;
997 }
998 else if (defaults_button->checkClick()) {
999 defaults_confirm->visible = true;
1000 return true;
1001 }
1002 else if (cancel_button->checkClick() || (inpt->pressing[Input::CANCEL] && !inpt->lock[Input::CANCEL])) {
1003 clicked_cancel = true;
1004
1005 // MenuConfig deconstructed, proceed with caution
1006 return false;
1007 }
1008 }
1009
1010 return true;
1011 }
1012
1013 void MenuConfig::logicDefaults() {
1014 defaults_confirm->logic();
1015 if (defaults_confirm->confirmClicked) {
1016 settings->fullscreen = false;
1017 render_device->setFullscreen(settings->fullscreen);
1018 settings->loadDefaults();
1019 eset->load();
1020 inpt->defaultQwertyKeyBindings();
1021 inpt->defaultJoystickBindings();
1022 update();
1023 refreshWindowSize();
1024 defaults_confirm->visible = false;
1025 defaults_confirm->confirmClicked = false;
1026 }
1027 }
1028
1029 void MenuConfig::logicExit() {
1030 cfg_tabs[EXIT_TAB].scrollbox->logic();
1031 Point mouse = cfg_tabs[EXIT_TAB].scrollbox->input_assist(inpt->mouse);
1032
1033 if (cfg_tabs[EXIT_TAB].options[EXIT_OPTION_CONTINUE].enabled && pause_continue_btn->checkClickAt(mouse.x, mouse.y)) {
1034 clicked_pause_continue = true;
1035 }
1036 else if (cfg_tabs[EXIT_TAB].options[EXIT_OPTION_SAVE].enabled && pause_save_btn->checkClickAt(mouse.x, mouse.y)) {
1037 clicked_pause_save = true;
1038 }
1039 else if (cfg_tabs[EXIT_TAB].options[EXIT_OPTION_EXIT].enabled && pause_exit_btn->checkClickAt(mouse.x, mouse.y)) {
1040 clicked_pause_exit = true;
1041 }
1042 }
1043
1044 void MenuConfig::logicVideo() {
1045 cfg_tabs[VIDEO_TAB].scrollbox->logic();
1046 Point mouse = cfg_tabs[VIDEO_TAB].scrollbox->input_assist(inpt->mouse);
1047
1048 if (cfg_tabs[VIDEO_TAB].options[Platform::Video::FULLSCREEN].enabled && fullscreen_cb->checkClickAt(mouse.x, mouse.y)) {
1049 settings->fullscreen = fullscreen_cb->isChecked();
1050 render_device->setFullscreen(settings->fullscreen);
1051 refreshWindowSize();
1052 }
1053 else if (cfg_tabs[VIDEO_TAB].options[Platform::Video::HWSURFACE].enabled && hwsurface_cb->checkClickAt(mouse.x, mouse.y)) {
1054 settings->hwsurface = hwsurface_cb->isChecked();
1055 }
1056 else if (cfg_tabs[VIDEO_TAB].options[Platform::Video::VSYNC].enabled && vsync_cb->checkClickAt(mouse.x, mouse.y)) {
1057 settings->vsync = vsync_cb->isChecked();
1058 }
1059 else if (cfg_tabs[VIDEO_TAB].options[Platform::Video::TEXTURE_FILTER].enabled && texture_filter_cb->checkClickAt(mouse.x, mouse.y)) {
1060 settings->texture_filter = texture_filter_cb->isChecked();
1061 }
1062 else if (cfg_tabs[VIDEO_TAB].options[Platform::Video::DPI_SCALING].enabled && dpi_scaling_cb->checkClickAt(mouse.x, mouse.y)) {
1063 settings->dpi_scaling = dpi_scaling_cb->isChecked();
1064 refreshWindowSize();
1065 }
1066 else if (cfg_tabs[VIDEO_TAB].options[Platform::Video::PARALLAX_LAYERS].enabled && parallax_layers_cb->checkClickAt(mouse.x, mouse.y)) {
1067 settings->parallax_layers = parallax_layers_cb->isChecked();
1068 }
1069 else if (cfg_tabs[VIDEO_TAB].options[Platform::Video::ENABLE_GAMMA].enabled && change_gamma_cb->checkClickAt(mouse.x, mouse.y)) {
1070 settings->change_gamma = change_gamma_cb->isChecked();
1071 if (settings->change_gamma) {
1072 gamma_sl->enabled = true;
1073 }
1074 else {
1075 settings->gamma = 1.0;
1076 gamma_sl->enabled = false;
1077 gamma_sl->set(GAMMA_MIN, GAMMA_MAX, static_cast<int>(settings->gamma * 10.0));
1078 render_device->resetGamma();
1079 }
1080 }
1081 else if (cfg_tabs[VIDEO_TAB].options[Platform::Video::GAMMA].enabled && gamma_sl->checkClickAt(mouse.x, mouse.y)) {
1082 settings->gamma = static_cast<float>(gamma_sl->getValue()) * 0.1f;
1083 render_device->setGamma(settings->gamma);
1084 }
1085 else if (cfg_tabs[VIDEO_TAB].options[Platform::Video::RENDERER].enabled && renderer_lstb->checkClickAt(mouse.x, mouse.y)) {
1086 new_render_device = renderer_lstb->getValue();
1087 }
1088 else if (cfg_tabs[VIDEO_TAB].options[Platform::Video::FRAME_LIMIT].enabled && frame_limit_lstb->checkClickAt(mouse.x, mouse.y)) {
1089 // handled in setFrameLimit(), which GameStateConfig::logicAccept() calls
1090 }
1091 else if (cfg_tabs[VIDEO_TAB].options[Platform::Video::MAX_RENDER_SIZE].enabled && max_render_size_lstb->checkClickAt(mouse.x, mouse.y)) {
1092 int index = max_render_size_lstb->getSelected();
1093 if (index == 0) {
1094 settings->max_render_size = 0;
1095 }
1096 else {
1097 settings->max_render_size = virtual_heights[index-1];
1098 }
1099 refreshWindowSize();
1100 }
1101 }
1102
1103 void MenuConfig::logicAudio() {
1104 cfg_tabs[AUDIO_TAB].scrollbox->logic();
1105 Point mouse = cfg_tabs[AUDIO_TAB].scrollbox->input_assist(inpt->mouse);
1106
1107 if (settings->audio) {
1108 if (cfg_tabs[AUDIO_TAB].options[Platform::Audio::MUSIC].enabled && music_volume_sl->checkClickAt(mouse.x, mouse.y)) {
1109 if (settings->music_volume == 0)
1110 reload_music = true;
1111 settings->music_volume = static_cast<short>(music_volume_sl->getValue());
1112 snd->setVolumeMusic(settings->music_volume);
1113 }
1114 else if (cfg_tabs[AUDIO_TAB].options[Platform::Audio::SFX].enabled && sound_volume_sl->checkClickAt(mouse.x, mouse.y)) {
1115 settings->sound_volume = static_cast<short>(sound_volume_sl->getValue());
1116 snd->setVolumeSFX(settings->sound_volume);
1117 }
1118 }
1119 }
1120
1121 void MenuConfig::logicInterface() {
1122 cfg_tabs[INTERFACE_TAB].scrollbox->logic();
1123 Point mouse = cfg_tabs[INTERFACE_TAB].scrollbox->input_assist(inpt->mouse);
1124
1125 if (cfg_tabs[INTERFACE_TAB].options[Platform::Interface::LANGUAGE].enabled && language_lstb->checkClickAt(mouse.x, mouse.y)) {
1126 unsigned lang_id = language_lstb->getSelected();
1127 if (lang_id != language_lstb->getSize())
1128 settings->language = language_ISO[lang_id];
1129 }
1130 else if (cfg_tabs[INTERFACE_TAB].options[Platform::Interface::SHOW_FPS].enabled && show_fps_cb->checkClickAt(mouse.x, mouse.y)) {
1131 settings->show_fps = show_fps_cb->isChecked();
1132 }
1133 else if (cfg_tabs[INTERFACE_TAB].options[Platform::Interface::COLORBLIND].enabled && colorblind_cb->checkClickAt(mouse.x, mouse.y)) {
1134 settings->colorblind = colorblind_cb->isChecked();
1135 }
1136 else if (cfg_tabs[INTERFACE_TAB].options[Platform::Interface::HARDWARE_CURSOR].enabled && hardware_cursor_cb->checkClickAt(mouse.x, mouse.y)) {
1137 settings->hardware_cursor = hardware_cursor_cb->isChecked();
1138 }
1139 else if (cfg_tabs[INTERFACE_TAB].options[Platform::Interface::DEV_MODE].enabled && dev_mode_cb->checkClickAt(mouse.x, mouse.y)) {
1140 settings->dev_mode = dev_mode_cb->isChecked();
1141 }
1142 else if (cfg_tabs[INTERFACE_TAB].options[Platform::Interface::SUBTITLES].enabled && subtitles_cb->checkClickAt(mouse.x, mouse.y)) {
1143 settings->subtitles = subtitles_cb->isChecked();
1144 }
1145 else if (cfg_tabs[INTERFACE_TAB].options[Platform::Interface::LOOT_TOOLTIPS].enabled && loot_tooltip_lstb->checkClickAt(mouse.x, mouse.y)) {
1146 settings->loot_tooltips = static_cast<int>(loot_tooltip_lstb->getSelected());
1147 }
1148 else if (cfg_tabs[INTERFACE_TAB].options[Platform::Interface::MINIMAP_MODE].enabled && minimap_lstb->checkClickAt(mouse.x, mouse.y)) {
1149 settings->minimap_mode = static_cast<int>(minimap_lstb->getSelected());
1150 }
1151 else if (cfg_tabs[INTERFACE_TAB].options[Platform::Interface::STATBAR_LABELS].enabled && statbar_labels_cb->checkClickAt(mouse.x, mouse.y)) {
1152 settings->statbar_labels = statbar_labels_cb->isChecked();
1153 }
1154 else if (cfg_tabs[INTERFACE_TAB].options[Platform::Interface::STATBAR_AUTOHIDE].enabled && statbar_autohide_cb->checkClickAt(mouse.x, mouse.y)) {
1155 settings->statbar_autohide = statbar_autohide_cb->isChecked();
1156 }
1157 else if (cfg_tabs[INTERFACE_TAB].options[Platform::Interface::COMBAT_TEXT].enabled && combat_text_cb->checkClickAt(mouse.x, mouse.y)) {
1158 settings->combat_text = combat_text_cb->isChecked();
1159 }
1160 else if (cfg_tabs[INTERFACE_TAB].options[Platform::Interface::AUTO_EQUIP].enabled && auto_equip_cb->checkClickAt(mouse.x, mouse.y)) {
1161 settings->auto_equip = auto_equip_cb->isChecked();
1162 }
1163 else if (cfg_tabs[INTERFACE_TAB].options[Platform::Interface::ENTITY_MARKERS].enabled && entity_markers_cb->checkClickAt(mouse.x, mouse.y)) {
1164 settings->entity_markers = entity_markers_cb->isChecked();
1165 }
1166 else if (cfg_tabs[INTERFACE_TAB].options[Platform::Interface::LOW_HP_WARNING_TYPE].enabled && low_hp_warning_lstb->checkClickAt(mouse.x, mouse.y)) {
1167 settings->low_hp_warning_type = (static_cast<int>(low_hp_warning_lstb->getSelected()));
1168 }
1169 else if (cfg_tabs[INTERFACE_TAB].options[Platform::Interface::LOW_HP_THRESHOLD].enabled && low_hp_threshold_lstb->checkClickAt(mouse.x, mouse.y)) {
1170 settings->low_hp_threshold = (static_cast<int>(low_hp_threshold_lstb->getSelected())+1)*5;
1171 }
1172 else if (cfg_tabs[INTERFACE_TAB].options[Platform::Interface::ITEM_COMPARE_TIPS].enabled && item_compare_tips_cb->checkClickAt(mouse.x, mouse.y)) {
1173 settings->item_compare_tips = item_compare_tips_cb->isChecked();
1174 }
1175 }
1176
1177 void MenuConfig::logicInput() {
1178 cfg_tabs[INPUT_TAB].scrollbox->logic();
1179 Point mouse = cfg_tabs[INPUT_TAB].scrollbox->input_assist(inpt->mouse);
1180
1181 if (inpt->joysticks_changed) {
1182 disableJoystickOptions();
1183 refreshJoysticks();
1184 inpt->joysticks_changed = false;
1185 }
1186
1187 if (cfg_tabs[INPUT_TAB].options[Platform::Input::MOUSE_MOVE].enabled && mouse_move_cb->checkClickAt(mouse.x, mouse.y)) {
1188 if (mouse_move_cb->isChecked()) {
1189 settings->mouse_move = true;
1190 enableMouseOptions();
1191 }
1192 else settings->mouse_move=false;
1193 }
1194 else if (cfg_tabs[INPUT_TAB].options[Platform::Input::MOUSE_AIM].enabled && mouse_aim_cb->checkClickAt(mouse.x, mouse.y)) {
1195 if (mouse_aim_cb->isChecked()) {
1196 settings->mouse_aim = true;
1197 enableMouseOptions();
1198 }
1199 else settings->mouse_aim=false;
1200 }
1201 else if (cfg_tabs[INPUT_TAB].options[Platform::Input::NO_MOUSE].enabled && no_mouse_cb->checkClickAt(mouse.x, mouse.y)) {
1202 if (no_mouse_cb->isChecked()) {
1203 settings->no_mouse = true;
1204 disableMouseOptions();
1205 }
1206 else settings->no_mouse = false;
1207 }
1208 else if (cfg_tabs[INPUT_TAB].options[Platform::Input::MOUSE_MOVE_SWAP].enabled && mouse_move_swap_cb->checkClickAt(mouse.x, mouse.y)) {
1209 settings->mouse_move_swap = mouse_move_swap_cb->isChecked();
1210 }
1211 else if (cfg_tabs[INPUT_TAB].options[Platform::Input::MOUSE_MOVE_ATTACK].enabled && mouse_move_attack_cb->checkClickAt(mouse.x, mouse.y)) {
1212 settings->mouse_move_attack = mouse_move_attack_cb->isChecked();
1213 }
1214 else if (cfg_tabs[INPUT_TAB].options[Platform::Input::JOYSTICK_DEADZONE].enabled && joystick_deadzone_sl->checkClickAt(mouse.x, mouse.y)) {
1215 settings->joy_deadzone = joystick_deadzone_sl->getValue();
1216 }
1217 else if (cfg_tabs[INPUT_TAB].options[Platform::Input::JOYSTICK].enabled && joystick_device_lstb->checkClickAt(mouse.x, mouse.y)) {
1218 settings->joystick_device = static_cast<int>(joystick_device_lstb->getSelected()) - 1;
1219 if (settings->joystick_device != -1) {
1220 settings->enable_joystick = true;
1221 if (inpt->getNumJoysticks() > 0) {
1222 inpt->initJoystick();
1223 }
1224 }
1225 else {
1226 settings->enable_joystick = false;
1227 }
1228 }
1229 else if (cfg_tabs[INPUT_TAB].options[Platform::Input::TOUCH_CONTROLS].enabled && touch_controls_cb->checkClickAt(mouse.x, mouse.y)) {
1230 settings->touchscreen = touch_controls_cb->isChecked();
1231 }
1232 else if (cfg_tabs[INPUT_TAB].options[Platform::Input::TOUCH_SCALE].enabled && touch_scale_sl->checkClickAt(mouse.x, mouse.y)) {
1233 settings->touch_scale = static_cast<float>(touch_scale_sl->getValue()) * 0.01f;
1234 }
1235 }
1236
1237 void MenuConfig::logicKeybinds() {
1238 cfg_tabs[KEYBINDS_TAB].scrollbox->logic();
1239 Point mouse = cfg_tabs[KEYBINDS_TAB].scrollbox->input_assist(inpt->mouse);
1240
1241 for (unsigned int i = 0; i < keybinds_btn.size(); i++) {
1242 if ((i+1) % 3 == 0) {
1243 keybinds_btn[i]->enabled = settings->enable_joystick;
1244 keybinds_btn[i]->refresh();
1245 }
1246
1247 if (!cfg_tabs[KEYBINDS_TAB].options[i].enabled)
1248 continue;
1249
1250 if (keybinds_btn[i]->checkClickAt(mouse.x,mouse.y)) {
1251 std::string confirm_msg;
1252 confirm_msg = msg->get("Assign:") + ' ' + inpt->binding_name[i/3];
1253 delete input_confirm;
1254 input_confirm = new MenuConfirm(msg->get("Clear"),confirm_msg);
1255 input_confirm_timer.reset(Timer::BEGIN);
1256 input_confirm->visible = true;
1257 input_key = i;
1258 inpt->last_button = -1;
1259 inpt->last_key = -1;
1260 inpt->last_joybutton = -1;
1261 }
1262 }
1263 }
1264
1265 void MenuConfig::logicMods() {
1266 if (activemods_lstb->checkClick()) {
1267 //do nothing
1268 }
1269 else if (inactivemods_lstb->checkClick()) {
1270 //do nothing
1271 }
1272 else if (activemods_shiftup_btn->checkClick()) {
1273 activemods_lstb->shiftUp();
1274 }
1275 else if (activemods_shiftdown_btn->checkClick()) {
1276 activemods_lstb->shiftDown();
1277 }
1278 else if (activemods_deactivate_btn->checkClick()) {
1279 disableMods();
1280 }
1281 else if (inactivemods_activate_btn->checkClick()) {
1282 enableMods();
1283 }
1284 }
1285
1286 void MenuConfig::render() {
1287 int tabheight = tab_control->getTabHeight();
1288 Rect pos;
1289 pos.x = (settings->view_w - eset->resolutions.frame_w)/2;
1290 pos.y = (settings->view_h - eset->resolutions.frame_h)/2 + tabheight - tabheight/16;
1291
1292 if (background) {
1293 background->setDestFromRect(pos);
1294 render_device->render(background);
1295 }
1296
1297 tab_control->render();
1298
1299 if (enable_gamestate_buttons) {
1300 // render OK/Defaults/Cancel buttons
1301 ok_button->render();
1302 cancel_button->render();
1303 defaults_button->render();
1304 }
1305
1306 renderTabContents();
1307 renderDialogs();
1308 }
1309
1310 void MenuConfig::renderTabContents() {
1311 if (active_tab == EXIT_TAB) {
1312 if (cfg_tabs[active_tab].scrollbox->update) {
1313 cfg_tabs[active_tab].scrollbox->refresh();
1314
1315 // only draw a separator between the buttons and the time played text
1316 Image* render_target = cfg_tabs[active_tab].scrollbox->contents->getGraphics();
1317 int offset = (MenuConfig::ENABLE_SAVE_GAME && eset->misc.save_anywhere) ? 3 : 2;
1318 render_target->drawLine(scrollpane_padding.x, offset * scrollpane_padding.y, scrollpane.w - scrollpane_padding.x - 1, offset * scrollpane_padding.y, scrollpane_separator_color);
1319 }
1320 cfg_tabs[active_tab].scrollbox->render();
1321 }
1322 else if (active_tab <= KEYBINDS_TAB) {
1323 if (cfg_tabs[active_tab].scrollbox->update) {
1324 cfg_tabs[active_tab].scrollbox->refresh();
1325
1326 Image* render_target = cfg_tabs[active_tab].scrollbox->contents->getGraphics();
1327
1328 for (int i = 1; i < cfg_tabs[active_tab].enabled_count; ++i) {
1329 if (active_tab == KEYBINDS_TAB) {
1330 if (i % 3 != 0)
1331 continue;
1332 }
1333 render_target->drawLine(scrollpane_padding.x, i * scrollpane_padding.y, scrollpane.w - scrollpane_padding.x - 1, i * scrollpane_padding.y, scrollpane_separator_color);
1334 }
1335 }
1336 cfg_tabs[active_tab].scrollbox->render();
1337 }
1338
1339 for (unsigned int i = 0; i < child_widget.size(); i++) {
1340 if (optiontab[i] == active_tab && optiontab[i] != NO_TAB)
1341 child_widget[i]->render();
1342 }
1343
1344 }
1345
1346 void MenuConfig::renderDialogs() {
1347 if (defaults_confirm->visible)
1348 defaults_confirm->render();
1349
1350 if (input_confirm->visible)
1351 input_confirm->render();
1352
1353 if (active_tab == KEYBINDS_TAB && !keybind_msg.empty()) {
1354 TooltipData keybind_tip_data;
1355 keybind_tip_data.addText(keybind_msg);
1356
1357 if (keybind_tip_timer.isEnd())
1358 keybind_tip_timer.reset(Timer::BEGIN);
1359
1360 keybind_tip_timer.tick();
1361
1362 if (!keybind_tip_timer.isEnd()) {
1363 keybind_tip->render(keybind_tip_data, Point(settings->view_w, 0), TooltipData::STYLE_FLOAT);
1364 }
1365 else {
1366 keybind_msg.clear();
1367 }
1368 }
1369 else {
1370 keybind_msg.clear();
1371 keybind_tip_timer.reset(Timer::END);
1372 }
1373 }
1374
1375 void MenuConfig::placeLabeledWidget(WidgetLabel *lb, Widget *w, int x1, int y1, int x2, int y2, std::string const& str, int justify) {
1376 if (w) {
1377 w->setBasePos(x2, y2, Utils::ALIGN_TOPLEFT);
1378 }
1379
1380 if (lb) {
1381 lb->setBasePos(x1, y1, Utils::ALIGN_TOPLEFT);
1382 lb->setText(str);
1383 lb->setJustify(justify);
1384 }
1385 }
1386
1387 void MenuConfig::placeLabeledWidgetAuto(int tab, int cfg_index) {
1388 WidgetLabel *lb = cfg_tabs[tab].options[cfg_index].label;
1389 Widget *w = cfg_tabs[tab].options[cfg_index].widget;
1390 int enabled_index = cfg_tabs[tab].getEnabledIndex(cfg_index);
1391
1392 if (w) {
1393 int y_offset = std::max(scrollpane_padding.y - w->pos.h, 0) / 2;
1394 w->setBasePos(scrollpane.w - w->pos.w - scrollpane_padding.x, (enabled_index * scrollpane_padding.y) + y_offset, Utils::ALIGN_TOPLEFT);
1395 w->setPos(0,0);
1396 }
1397
1398 if (lb) {
1399 lb->setBasePos(scrollpane_padding.x, (enabled_index * scrollpane_padding.y) + scrollpane_padding.y / 2, Utils::ALIGN_TOPLEFT);
1400 lb->setPos(0, 0);
1401 lb->setVAlign(LabelInfo::VALIGN_CENTER);
1402 }
1403 }
1404
1405 void MenuConfig::refreshWidgets() {
1406 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);
1407
1408 frame.x = ((settings->view_w - eset->resolutions.frame_w)/2) + frame_offset.x;
1409 frame.y = ((settings->view_h - eset->resolutions.frame_h)/2) + tab_control->getTabHeight() + frame_offset.y;
1410
1411 for (unsigned i=0; i<child_widget.size(); ++i) {
1412 if (optiontab[i] != NO_TAB)
1413 child_widget[i]->setPos(frame.x, frame.y);
1414 }
1415
1416 ok_button->setPos(0, 0);
1417 defaults_button->setPos(0, 0);
1418 cancel_button->setPos(0, 0);
1419
1420 defaults_confirm->align();
1421
1422 for (size_t i = 0; i < cfg_tabs.size(); ++i) {
1423 cfg_tabs[i].scrollbox->setPos(frame.x, frame.y);
1424 }
1425
1426 input_confirm->align();
1427 }
1428
1429 void MenuConfig::refreshWindowSize() {
1430 render_device->windowResize();
1431 inpt->window_resized = true;
1432 refreshWidgets();
1433 force_refresh_background = true;
1434 }
1435
1436 void MenuConfig::addChildWidget(Widget *w, int tab) {
1437 child_widget.push_back(w);
1438 optiontab.push_back(tab);
1439 }
1440
1441 void MenuConfig::refreshLanguages() {
1442 language_ISO.clear();
1443 language_lstb->clear();
1444
1445 FileParser infile;
1446 if (infile.open("engine/languages.txt", FileParser::MOD_FILE, FileParser::ERROR_NORMAL)) {
1447 int i = 0;
1448 while (infile.next()) {
1449 std::string key = infile.key;
1450 if (key != "") {
1451 language_ISO.push_back(key);
1452 language_lstb->append(infile.val, infile.val + " [" + infile.key + "]");
1453
1454 if (language_ISO.back() == settings->language) {
1455 language_lstb->select(i);
1456 }
1457
1458 i++;
1459 }
1460 }
1461 infile.close();
1462 }
1463 }
1464
1465 void MenuConfig::refreshFont() {
1466 delete font;
1467 font = getFontEngine();
1468 delete comb;
1469 comb = new CombatText();
1470 }
1471
1472 void MenuConfig::enableMods() {
1473 for (int i=0; i<inactivemods_lstb->getSize(); i++) {
1474 if (inactivemods_lstb->isSelected(i)) {
1475 activemods_lstb->append(inactivemods_lstb->getValue(i),inactivemods_lstb->getTooltip(i));
1476 inactivemods_lstb->remove(i);
1477 i--;
1478 }
1479 }
1480 }
1481
1482 void MenuConfig::disableMods() {
1483 for (int i=0; i<activemods_lstb->getSize(); i++) {
1484 if (activemods_lstb->isSelected(i) && activemods_lstb->getValue(i) != mods->FALLBACK_MOD) {
1485 inactivemods_lstb->append(activemods_lstb->getValue(i),activemods_lstb->getTooltip(i));
1486 activemods_lstb->remove(i);
1487 i--;
1488 }
1489 }
1490 inactivemods_lstb->sort();
1491 }
1492
1493 bool MenuConfig::setMods() {
1494 // Save new mods list and return true if modlist was changed. Else return false
1495
1496 std::vector<Mod> temp_list = mods->mod_list;
1497 mods->mod_list.clear();
1498 mods->mod_list.push_back(mods->loadMod(mods->FALLBACK_MOD));
1499
1500 for (int i=0; i<activemods_lstb->getSize(); i++) {
1501 if (activemods_lstb->getValue(i) != "")
1502 mods->mod_list.push_back(mods->loadMod(activemods_lstb->getValue(i)));
1503 }
1504
1505 mods->applyDepends();
1506
1507 if (mods->mod_list != temp_list) {
1508 mods->saveMods();
1509 return true;
1510 }
1511 else {
1512 return false;
1513 }
1514 }
1515
1516 std::string MenuConfig::createModTooltip(Mod *mod) {
1517 std::string ret = "";
1518 if (mod) {
1519 std::string mod_ver = (*mod->version == VersionInfo::MIN) ? "" : mod->version->getString();
1520 std::string engine_ver = VersionInfo::createVersionReqString(*mod->engine_min_version, *mod->engine_max_version);
1521
1522 ret = mod->name + '\n';
1523
1524 std::string mod_description = mod->getLocaleDescription(settings->language);
1525 if (!mod_description.empty()) {
1526 ret += '\n';
1527 ret += mod_description + '\n';
1528 }
1529
1530 bool middle_section = false;
1531 if (!mod_ver.empty()) {
1532 middle_section = true;
1533 ret += '\n';
1534 ret += msg->get("Version:") + ' ' + mod_ver;
1535 }
1536 if (!mod->game.empty() && mod->game != mods->FALLBACK_GAME) {
1537 middle_section = true;
1538 ret += '\n';
1539 ret += msg->get("Game:") + ' ' + mod->game;
1540 }
1541 if (!engine_ver.empty()) {
1542 middle_section = true;
1543 ret += '\n';
1544 ret += msg->get("Engine version:") + ' ' + engine_ver;
1545 }
1546
1547 if (middle_section)
1548 ret += '\n';
1549
1550 if (!mod->depends.empty()) {
1551 ret += '\n';
1552 ret += msg->get("Requires mods:") + '\n';
1553 for (size_t i=0; i<mod->depends.size(); ++i) {
1554 ret += "- " + mod->depends[i];
1555 std::string depend_ver = VersionInfo::createVersionReqString(*mod->depends_min[i], *mod->depends_max[i]);
1556 if (depend_ver != "")
1557 ret += " (" + depend_ver + ")";
1558 if (i < mod->depends.size()-1)
1559 ret += '\n';
1560 }
1561 }
1562
1563 if (!ret.empty() && ret[ret.size() - 1] == '\n')
1564 ret.erase(ret.begin() + ret.size() - 1);
1565 }
1566 return ret;
1567 }
1568
1569 void MenuConfig::confirmKey(int button) {
1570 inpt->pressing[button] = false;
1571 inpt->lock[button] = false;
1572
1573 input_confirm->visible = false;
1574 input_confirm_timer.reset(Timer::END);
1575 keybind_tip_timer.reset(Timer::END);
1576
1577 inpt->refresh_hotkeys = true;
1578
1579 updateKeybinds();
1580 }
1581
1582 void MenuConfig::scanKey(int button) {
1583 int column = button % 3;
1584 int real_button = button / 3;
1585
1586 // clear the keybind if the user clicks "Clear" in the dialog
1587 if (input_confirm->visible && input_confirm->confirmClicked) {
1588 inpt->setKeybind(-1, real_button, column, keybind_msg);
1589 confirmKey(real_button);
1590 return;
1591 }
1592
1593 if (input_confirm->visible && !input_confirm->isWithinButtons) {
1594 // keyboard & mouse
1595 if (column == InputState::BINDING_DEFAULT || column == InputState::BINDING_ALT) {
1596 if (inpt->last_button != -1) {
1597 // mouse
1598 inpt->setKeybind(inpt->last_button, real_button, column, keybind_msg);
1599 confirmKey(real_button);
1600 }
1601 else if (inpt->last_key != -1) {
1602 // keyboard
1603 inpt->setKeybind(inpt->last_key, real_button, column, keybind_msg);
1604 confirmKey(real_button);
1605 }
1606 }
1607 // joystick
1608 else if (column == InputState::BINDING_JOYSTICK && inpt->last_joybutton != -1) {
1609 inpt->setKeybind(inpt->last_joybutton, real_button, column, keybind_msg);
1610 confirmKey(real_button);
1611 }
1612 else if (column == InputState::BINDING_JOYSTICK && inpt->last_joyaxis != -1) {
1613 inpt->setKeybind(inpt->last_joyaxis, real_button, column, keybind_msg);
1614 confirmKey(real_button);
1615 }
1616 }
1617 }
1618
1619 void MenuConfig::enableMouseOptions() {
1620 settings->no_mouse = false;
1621 no_mouse_cb->setChecked(settings->no_mouse);
1622 }
1623
1624 void MenuConfig::disableMouseOptions() {
1625 settings->mouse_aim = false;
1626 mouse_aim_cb->setChecked(settings->mouse_aim);
1627
1628 settings->mouse_move = false;
1629 mouse_move_cb->setChecked(settings->mouse_move);
1630
1631 settings->no_mouse = true;
1632 no_mouse_cb->setChecked(settings->no_mouse);
1633 }
1634
1635 void MenuConfig::disableJoystickOptions() {
1636 settings->enable_joystick = false;
1637
1638 joystick_device_lstb->select(0);
1639
1640 if (inpt->getNumJoysticks() > 0)
1641 joystick_device_lstb->refresh();
1642 }
1643
1644 void MenuConfig::refreshRenderers() {
1645 renderer_lstb->clear();
1646
1647 std::vector<std::string> rd_name, rd_desc;
1648 createRenderDeviceList(msg, rd_name, rd_desc);
1649
1650 for (size_t i = 0; i < rd_name.size(); ++i) {
1651 renderer_lstb->append(rd_name[i], rd_desc[i]);
1652 if (rd_name[i] == settings->render_device_name) {
1653 renderer_lstb->select(static_cast<int>(i));
1654 }
1655 }
1656 }
1657
1658 void MenuConfig::refreshJoysticks() {
1659 joystick_device_lstb->clear();
1660 joystick_device_lstb->append(msg->get("(none)"), "");
1661 joystick_device_lstb->enabled = inpt->getNumJoysticks() > 0;
1662
1663 for (int i = 0; i < inpt->getNumJoysticks(); ++i) {
1664 std::string joystick_name = inpt->getJoystickName(i);
1665 if (joystick_name != "")
1666 joystick_device_lstb->append(joystick_name, joystick_name);
1667 }
1668
1669 joystick_device_lstb->refresh();
1670 }
1671
1672 std::string MenuConfig::getRenderDevice() {
1673 return renderer_lstb->getValue();
1674 }
1675
1676 void MenuConfig::setPauseExitText(bool enable_save) {
1677 pause_exit_btn->setLabel((eset->misc.save_onexit && enable_save) ? msg->get("Save & Exit") : msg->get("Exit"));
1678 }
1679
1680 void MenuConfig::setPauseSaveEnabled(bool enable_save) {
1681 pause_save_btn->enabled = enable_save && eset->misc.save_anywhere;
1682 }
1683
1684 void MenuConfig::resetSelectedTab() {
1685 update();
1686
1687 tab_control->setActiveTab(0);
1688
1689 for (size_t i = 0; i < cfg_tabs.size(); ++i) {
1690 cfg_tabs[i].scrollbox->scrollToTop();
1691 }
1692
1693 tablist.defocus();
1694 tablist_main.defocus();
1695 tablist_exit.defocus();
1696 tablist_video.defocus();
1697 tablist_audio.defocus();
1698 tablist_interface.defocus();
1699 tablist_input.defocus();
1700 tablist_keybinds.defocus();
1701 tablist_mods.defocus();
1702
1703 input_confirm->visible = false;
1704 input_confirm_timer.reset(Timer::END);
1705 keybind_tip_timer.reset(Timer::END);
1706 }
1707
1708 void MenuConfig::cleanup() {
1709 if (background) {
1710 delete background;
1711 background = NULL;
1712 }
1713
1714 if (tab_control != NULL) {
1715 delete tab_control;
1716 tab_control = NULL;
1717 }
1718
1719 if (ok_button != NULL) {
1720 delete ok_button;
1721 ok_button = NULL;
1722 }
1723 if (defaults_button != NULL) {
1724 delete defaults_button;
1725 defaults_button = NULL;
1726 }
1727 if (cancel_button != NULL) {
1728 delete cancel_button;
1729 cancel_button = NULL;
1730 }
1731
1732 cleanupTabContents();
1733 cleanupDialogs();
1734
1735 language_ISO.clear();
1736 }
1737
1738 void MenuConfig::cleanupTabContents() {
1739 for (std::vector<Widget*>::iterator iter = child_widget.begin(); iter != child_widget.end(); ++iter) {
1740 if (*iter != NULL) {
1741 delete (*iter);
1742 *iter = NULL;
1743 }
1744 }
1745 child_widget.clear();
1746
1747 for (size_t i = 0; i < cfg_tabs.size(); ++i) {
1748 if (cfg_tabs[i].scrollbox != NULL) {
1749 delete cfg_tabs[i].scrollbox;
1750 cfg_tabs[i].scrollbox = NULL;
1751 }
1752 }
1753 }
1754
1755 void MenuConfig::cleanupDialogs() {
1756 if (defaults_confirm != NULL) {
1757 delete defaults_confirm;
1758 defaults_confirm = NULL;
1759 }
1760 if (input_confirm != NULL) {
1761 delete input_confirm;
1762 input_confirm = NULL;
1763 }
1764 if (keybind_tip != NULL) {
1765 delete keybind_tip;
1766 keybind_tip = NULL;
1767 }
1768 }
1769
1770 void MenuConfig::setHero(Avatar* _hero) {
1771 hero = _hero;
1772 }
1773
1774 bool MenuConfig::setFrameLimit() {
1775 size_t frame_limit_index = frame_limit_lstb->getSelected();
1776 if (frame_limit_index < frame_limits.size()) {
1777 if (settings->max_frames_per_sec != frame_limits[frame_limit_index]) {
1778 Utils::logInfo("MenuConfig: Changing frame limit from %d to %d.", settings->max_frames_per_sec, frame_limits[frame_limit_index]);
1779 settings->max_frames_per_sec = frame_limits[frame_limit_index];
1780 return true;
1781 }
1782 }
1783 return false;
1784 }
1785
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 static const int TOUCH_SCALE_MIN = 75;
77 static const int TOUCH_SCALE_MAX = 125;
78
79 std::vector<ConfigTab> cfg_tabs;
80
81 bool is_game_state;
82 bool enable_gamestate_buttons;
83 Avatar *hero;
84
85 std::vector<unsigned short> frame_limits;
86 std::vector<unsigned short> virtual_heights;
87
88 public:
89 static const bool IS_GAME_STATE = true;
90 static const bool ENABLE_SAVE_GAME = true;
91
92 static const short TAB_COUNT = 7;
93 enum {
94 EXIT_TAB = 0,
95 VIDEO_TAB = 1,
96 AUDIO_TAB = 2,
97 INTERFACE_TAB = 3,
98 INPUT_TAB = 4,
99 KEYBINDS_TAB = 5,
100 MODS_TAB = 6
101 };
102 static const short NO_TAB = -1;
103
104 enum {
105 EXIT_OPTION_CONTINUE = 0,
106 EXIT_OPTION_SAVE = 1,
107 EXIT_OPTION_EXIT = 2,
108 EXIT_OPTION_TIME_PLAYED = 3,
109 };
110
111 explicit MenuConfig(bool _is_game_state);
112 ~MenuConfig();
113
114 void init();
115 void readConfig();
116 bool parseKeyButtons(FileParser &infile);
117 bool parseKey(FileParser &infile, int &x1, int &y1, int &x2, int &y2);
118 void addChildWidgets();
119 void setupTabList();
120
121 void update();
122 void updateVideo();
123 void updateAudio();
124 void updateInterface();
125 void updateInput();
126 void updateKeybinds();
127 void updateMods();
128
129 void logic();
130 bool logicMain();
131 void logicDefaults();
132 void logicExit();
133 void logicVideo();
134 void logicAudio();
135 void logicInterface();
136 void logicInput();
137 void logicKeybinds();
138 void logicMods();
139
140 void render();
141 void renderTabContents();
142 void renderDialogs();
143
144 void placeLabeledWidget(WidgetLabel* lb, Widget* w, int x1, int y1, int x2, int y2, std::string const& str, int justify = 0);
145 void placeLabeledWidgetAuto(int tab, int cfg_index);
146 void refreshWidgets();
147 void refreshWindowSize();
148 void addChildWidget(Widget *w, int tab);
149 void refreshRenderers();
150 void refreshJoysticks();
151 void refreshLanguages();
152 void refreshFont();
153 std::string getRenderDevice();
154 void setPauseExitText(bool enable_save);
155 void setPauseSaveEnabled(bool enable_save);
156 void resetSelectedTab();
157
158 void confirmKey(int button);
159 void scanKey(int button);
160
161 void enableMouseOptions();
162 void disableMouseOptions();
163 void disableJoystickOptions();
164
165 void enableMods();
166 void disableMods();
167 bool setMods();
168 std::string createModTooltip(Mod *mod);
169
170 void cleanup();
171 void cleanupTabContents();
172 void cleanupDialogs();
173
174 void setHero(Avatar* _hero);
175
176 bool setFrameLimit();
177
178 TabList tablist;
179 TabList tablist_main;
180 TabList tablist_exit;
181 TabList tablist_video;
182 TabList tablist_audio;
183 TabList tablist_interface;
184 TabList tablist_input;
185 TabList tablist_keybinds;
186 TabList tablist_mods;
187
188 std::vector<int> optiontab;
189 std::vector<Widget*> child_widget;
190
191 WidgetTabControl * tab_control;
192 WidgetButton * ok_button;
193 WidgetButton * defaults_button;
194 WidgetButton * cancel_button;
195 Sprite * background;
196 MenuConfirm * input_confirm;
197 MenuConfirm * defaults_confirm;
198
199 WidgetLabel * pause_continue_lb;
200 WidgetButton * pause_continue_btn;
201 WidgetLabel * pause_exit_lb;
202 WidgetButton * pause_exit_btn;
203 WidgetLabel * pause_save_lb;
204 WidgetButton * pause_save_btn;
205 WidgetLabel * pause_time_lb;
206 WidgetLabel * pause_time_text;
207
208 WidgetHorizontalList * renderer_lstb;
209 WidgetLabel * renderer_lb;
210 WidgetCheckBox * fullscreen_cb;
211 WidgetLabel * fullscreen_lb;
212 WidgetCheckBox * hwsurface_cb;
213 WidgetLabel * hwsurface_lb;
214 WidgetCheckBox * vsync_cb;
215 WidgetLabel * vsync_lb;
216 WidgetCheckBox * texture_filter_cb;
217 WidgetLabel * texture_filter_lb;
218 WidgetCheckBox * dpi_scaling_cb;
219 WidgetLabel * dpi_scaling_lb;
220 WidgetCheckBox * parallax_layers_cb;
221 WidgetLabel * parallax_layers_lb;
222 WidgetCheckBox * change_gamma_cb;
223 WidgetLabel * change_gamma_lb;
224 WidgetSlider * gamma_sl;
225 WidgetLabel * gamma_lb;
226 WidgetHorizontalList * frame_limit_lstb;
227 WidgetLabel * frame_limit_lb;
228 WidgetHorizontalList * max_render_size_lstb;
229 WidgetLabel * max_render_size_lb;
230
231 WidgetSlider * music_volume_sl;
232 WidgetLabel * music_volume_lb;
233 WidgetSlider * sound_volume_sl;
234 WidgetLabel * sound_volume_lb;
235
236 WidgetCheckBox * show_fps_cb;
237 WidgetLabel * show_fps_lb;
238 WidgetCheckBox * hardware_cursor_cb;
239 WidgetLabel * hardware_cursor_lb;
240 WidgetCheckBox * colorblind_cb;
241 WidgetLabel * colorblind_lb;
242 WidgetCheckBox * dev_mode_cb;
243 WidgetLabel * dev_mode_lb;
244 WidgetCheckBox * subtitles_cb;
245 WidgetLabel * subtitles_lb;
246 WidgetHorizontalList * loot_tooltip_lstb;
247 WidgetLabel * loot_tooltip_lb;
248 WidgetHorizontalList * minimap_lstb;
249 WidgetLabel * minimap_lb;
250 WidgetCheckBox * statbar_labels_cb;
251 WidgetLabel * statbar_labels_lb;
252 WidgetCheckBox * statbar_autohide_cb;
253 WidgetLabel * statbar_autohide_lb;
254 WidgetCheckBox * combat_text_cb;
255 WidgetLabel * combat_text_lb;
256 WidgetCheckBox * auto_equip_cb;
257 WidgetLabel * auto_equip_lb;
258 WidgetCheckBox * entity_markers_cb;
259 WidgetLabel * entity_markers_lb;
260 WidgetHorizontalList * low_hp_warning_lstb;
261 WidgetLabel * low_hp_warning_lb;
262 WidgetHorizontalList * low_hp_threshold_lstb;
263 WidgetLabel * low_hp_threshold_lb;
264 WidgetCheckBox * item_compare_tips_cb;
265 WidgetLabel * item_compare_tips_lb;
266
267
268 WidgetHorizontalList * joystick_device_lstb;
269 WidgetLabel * joystick_device_lb;
270 WidgetCheckBox * mouse_move_cb;
271 WidgetLabel * mouse_move_lb;
272 WidgetCheckBox * mouse_aim_cb;
273 WidgetLabel * mouse_aim_lb;
274 WidgetCheckBox * no_mouse_cb;
275 WidgetLabel * no_mouse_lb;
276 WidgetCheckBox * mouse_move_swap_cb;
277 WidgetLabel * mouse_move_swap_lb;
278 WidgetCheckBox * mouse_move_attack_cb;
279 WidgetLabel * mouse_move_attack_lb;
280 WidgetSlider * joystick_deadzone_sl;
281 WidgetLabel * joystick_deadzone_lb;
282 WidgetCheckBox * touch_controls_cb;
283 WidgetLabel * touch_controls_lb;
284 WidgetSlider * touch_scale_sl;
285 WidgetLabel * touch_scale_lb;
286
287 WidgetListBox * activemods_lstb;
288 WidgetLabel * activemods_lb;
289 WidgetListBox * inactivemods_lstb;
290 WidgetLabel * inactivemods_lb;
291 WidgetHorizontalList * language_lstb;
292 WidgetLabel * language_lb;
293 WidgetButton * activemods_shiftup_btn;
294 WidgetButton * activemods_shiftdown_btn;
295 WidgetButton * activemods_deactivate_btn;
296 WidgetButton * inactivemods_activate_btn;
297
298 int active_tab;
299
300 Point frame;
301 Point frame_offset;
302 Point tab_offset;
303 Rect scrollpane;
304 Color scrollpane_color;
305 Point scrollpane_padding;
306 Color scrollpane_separator_color;
307 Point secondary_offset;
308
309 std::vector<std::string> language_ISO;
310
311 std::string new_render_device;
312 std::vector<Rect> video_modes;
313
314 std::vector<WidgetLabel *> keybinds_lb;
315 std::vector<WidgetButton *> keybinds_btn;
316
317 Timer input_confirm_timer;
318 int input_key;
319 unsigned key_count;
320
321 std::string keybind_msg;
322 Timer keybind_tip_timer;
323 WidgetTooltip* keybind_tip;
324
325 // flags for GameState*
326 bool clicked_accept;
327 bool clicked_cancel;
328 bool force_refresh_background;
329 bool reload_music;
330 bool clicked_pause_continue;
331 bool clicked_pause_exit;
332 bool clicked_pause_save;
333 };
334
335 #endif
336
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;
1257 }
1258
1259 int MenuInventory::getEquippedSetCount(size_t set_id) {
1260 int quantity = 0;
1261 for (int i=0; i<MAX_EQUIPPED; i++) {
1262 ItemID item_id = inventory[EQUIPMENT].storage[i].item;
1263 if (items->items[item_id].set == set_id) {
1264 quantity++;
1265 }
1266 }
1267 return quantity;
12361268 }
12371269
12381270 MenuInventory::~MenuInventory() {
12391271 delete closeButton;
1240 delete autoEquipCheckBox;
1241 }
1272 }
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);
123
124 int getEquippedSetCount(size_t set_id);
120125
121126 Rect carried_area;
122127 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;
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_check_locked(false)
65 , visible_check_status(false)
6266 , upgrade_level(0)
6367 , passive_on(false)
6468 , is_unlocked(false)
6569 , group(0)
6670 , 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;
7971 }
8072
8173 MenuPowersCellGroup::MenuPowersCellGroup()
131123 , label_unspent(new WidgetLabel)
132124 , tab_control(NULL)
133125 , tree_loaded(false)
134 , prev_powers_list_size(0)
135126 , default_power_tab(-1)
136127 , newPowerNotification(false)
137128 {
352343
353344 // create power slots
354345 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);
346 if (!power_cell[i].cells.empty() && !powers->powers[power_cell[i].cells[0].id].is_empty) {
347 slots[i] = new WidgetSlot(powers->powers[power_cell[i].cells[0].id].icon, Input::ACCEPT);
357348 slots[i]->setBasePos(power_cell[i].pos.x, power_cell[i].pos.y, Utils::ALIGN_TOPLEFT);
358349
359350 if (!tablist_pow.empty()) {
393384 }
394385
395386 void MenuPowers::loadPower(FileParser &infile) {
387 // base power cell storage hasn't been set up!
388 if (power_cell.back().cells.empty())
389 return;
390
396391 // @ATTR power.id|int|A power id from powers/powers.txt for this slot.
397392 if (infile.key == "id") {
398393 int id = Parse::popFirstInt(infile.val);
399394 if (id > 0) {
400395 skip_section = false;
401 power_cell.back().cells.back().id = id;
396 power_cell.back().cells[0].id = id;
402397 }
403398 else {
404399 infile.error("MenuPowers: Power index out of bounds 1-%d, skipping power.", INT_MAX);
406401 return;
407402 }
408403
409 if (power_cell.back().cells.back().id <= 0) {
404 if (power_cell.back().cells[0].id == 0) {
410405 skip_section = true;
411406 power_cell.pop_back();
412407 slots.pop_back();
421416 // @ATTR power.position|point|Position of this power icon; relative to MenuPowers "pos".
422417 else if (infile.key == "position") power_cell.back().pos = Parse::toPoint(infile.val);
423418
419 // @ATTR power.requires_point|bool|Power requires a power point to unlock.
420 else if (infile.key == "requires_point") power_cell.back().cells[0].requires_point = Parse::toBool(infile.val);
421
424422 // @ATTR power.requires_primary|predefined_string, int : Primary stat name, Required value|Power requires this primary stat to be at least the specificed value.
425423 else if (infile.key == "requires_primary") {
426424 std::string prim_stat = Parse::popFirstString(infile.val);
427425 size_t prim_stat_index = eset->primary_stats.getIndexByID(prim_stat);
428426
429427 if (prim_stat_index != eset->primary_stats.list.size()) {
430 power_cell.back().cells.back().requires_primary[prim_stat_index] = Parse::toInt(infile.val);
428 power_cell.back().cells[0].requires_primary[prim_stat_index] = Parse::toInt(infile.val);
431429 }
432430 else {
433431 infile.error("MenuPowers: '%s' is not a valid primary stat.", prim_stat.c_str());
434432 }
435433 }
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);
438434 // @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);
435 else if (infile.key == "requires_level") power_cell.back().cells[0].requires_level = Parse::toInt(infile.val);
440436 // @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));
437 else if (infile.key == "requires_power") power_cell.back().cells[0].requires_power.push_back(Parse::toPowerID(infile.val));
438 // @ATTR power.requires_status|repeatable(string)|Power requires this campaign status.
439 else if (infile.key == "requires_status") power_cell.back().cells[0].requires_status.push_back(camp->registerStatus(infile.val));
440 // @ATTR power.requires_not_status|repeatable(string)|Power requires not having this campaign status.
441 else if (infile.key == "requires_not_status") power_cell.back().cells[0].requires_not_status.push_back(camp->registerStatus(infile.val));
442
443 // @ATTR power.visible_requires_status|repeatable(string)|(Deprecated as of v1.11.75) Hide the power if we don't have this campaign status.
444 else if (infile.key == "visible_requires_status") {
445 infile.error("MenuPowers: visible_requires_status is deprecated. Use requires_status and visible_check_status=true instead.");
446 power_cell.back().cells[0].requires_status.push_back(camp->registerStatus(infile.val));
447 power_cell.back().cells[0].visible_check_status = true;
448 }
449 // @ATTR power.visible_requires_not_status|repeatable(string)|(Deprecated as of v1.11.75) Hide the power if we have this campaign status.
450 else if (infile.key == "visible_requires_not_status") {
451 infile.error("MenuPowers: visible_requires_not_status is deprecated. Use requires_not_status and visible_check_status=true instead.");
452 power_cell.back().cells[0].requires_not_status.push_back(camp->registerStatus(infile.val));
453 power_cell.back().cells[0].visible_check_status = true;
454 }
447455
448456 // @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.
449457 else if (infile.key == "upgrades") {
450458 std::string repeat_val = Parse::popFirstString(infile.val);
451459 while (repeat_val != "") {
452 power_cell.back().cells.push_back(MenuPowersCell());
453 power_cell.back().cells.back().id = Parse::toInt(repeat_val);
460 PowerID test_id = Parse::toPowerID(repeat_val);
461 if (test_id == power_cell.back().cells[0].id) {
462 infile.error("MenuPowers: Upgrade ID '%d' is the same as the base ID. Ignoring.", test_id);
463 }
464 else {
465 power_cell.back().cells.push_back(MenuPowersCell());
466 power_cell.back().cells.back().id = test_id;
467 }
454468 repeat_val = Parse::popFirstString(infile.val);
455469 }
456470
460474 power_cell.back().upgrade_button = new WidgetButton("images/menus/buttons/button_plus.png");
461475 }
462476 }
477
478 // @ATTR power.visible|bool|Controls whether or not a power is visible or hidden regardless of unlocked state. Defaults to true.
479 else if (infile.key == "visible") power_cell.back().cells[0].visible = Parse::toBool(infile.val);
480 // @ATTR power.visible_check_locked|bool|When set to true, the power will be hidden if it is locked. Defaults to false.
481 else if (infile.key == "visible_check_locked") power_cell.back().cells[0].visible_check_locked = Parse::toBool(infile.val);
482 // @ATTR power.visible_check_status|bool|When set to true, the power will be hidden if its status requirements are not met. Defaults to false.
483 else if (infile.key == "visible_check_status") power_cell.back().cells[0].visible_check_status = Parse::toBool(infile.val);
463484
464485 else infile.error("MenuPowers: '%s' is not a valid key.", infile.key.c_str());
465486 }
500521 // @ATTR upgrade.requires_level|int|Upgrade requires at least this level for the hero.
501522 else if (infile.key == "requires_level") power_cell_upgrade.back().requires_level = Parse::toInt(infile.val);
502523 // @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));
524 else if (infile.key == "requires_power") power_cell_upgrade.back().requires_power.push_back(Parse::toPowerID(infile.val));
525 // @ATTR upgrade.requires_status|repeatable(string)|Upgrade requires this campaign status.
526 else if (infile.key == "requires_status") power_cell_upgrade.back().requires_status.push_back(camp->registerStatus(infile.val));
527 // @ATTR upgrade.requires_not_status|repeatable(string)|Upgrade requires not having this campaign status.
528 else if (infile.key == "requires_not_status") power_cell_upgrade.back().requires_not_status.push_back(camp->registerStatus(infile.val));
529
530 // @ATTR upgrade.visible_requires_status|repeatable(string)|(Deprecated as of v1.11.75) Hide the upgrade if we don't have this campaign status.
531 else if (infile.key == "visible_requires_status") {
532 infile.error("MenuPowers: visible_requires_status is deprecated. Use requires_status and visible_check_status=true instead.");
533 power_cell_upgrade.back().requires_status.push_back(camp->registerStatus(infile.val));
534 power_cell_upgrade.back().visible_check_status = true;
535 }
536 // @ATTR upgrade.visible_requires_not_status|repeatable(string)|(Deprecated as of v1.11.75) Hide the upgrade if we have this campaign status.
537 else if (infile.key == "visible_requires_not_status") {
538 infile.error("MenuPowers: visible_requires_not_status is deprecated. Use requires_not_status and visible_check_status=true instead.");
539 power_cell_upgrade.back().requires_not_status.push_back(camp->registerStatus(infile.val));
540 power_cell_upgrade.back().visible_check_status = true;
541 }
542
543 // @ATTR upgrade.visible|bool|Controls whether or not a power is visible or hidden regardless of unlocked state. Defaults to true.
544 else if (infile.key == "visible") power_cell_upgrade.back().visible = Parse::toBool(infile.val);
545 // @ATTR upgrade.visible_check_locked|bool|When set to true, the power will be hidden if it is locked. Defaults to false.
546 else if (infile.key == "visible_check_locked") power_cell_upgrade.back().visible_check_locked = Parse::toBool(infile.val);
547 // @ATTR upgrade.visible_check_status|bool|When set to true, the power will be hidden if its status requirements are not met. Defaults to false.
548 else if (infile.key == "visible_check_status") power_cell_upgrade.back().visible_check_status = Parse::toBool(infile.val);
509549
510550 else infile.error("MenuPowers: '%s' is not a valid key.", infile.key.c_str());
511551 }
514554 if (!pcell)
515555 return false;
516556
557 if (pc->stats.level < pcell->requires_level)
558 return false;
559
560 for (size_t i = 0; i < eset->primary_stats.list.size(); ++i) {
561 if (pc->stats.get_primary(i) < pcell->requires_primary[i])
562 return false;
563 }
564
565 for (size_t i = 0; i < pcell->requires_status.size(); ++i)
566 if (!camp->checkStatus(pcell->requires_status[i]))
567 return false;
568
569 for (size_t i = 0; i < pcell->requires_not_status.size(); ++i)
570 if (camp->checkStatus(pcell->requires_not_status[i]))
571 return false;
572
517573 for (size_t i = 0; i < pcell->requires_power.size(); ++i) {
518574 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])
527575 return false;
528576 }
529577
537585 return true;
538586 }
539587
588 bool MenuPowers::checkRequirementStatus(MenuPowersCell* pcell) {
589 if (!pcell)
590 return false;
591
592 for (size_t i = 0; i < pcell->requires_status.size(); ++i)
593 if (!camp->checkStatus(pcell->requires_status[i]))
594 return false;
595
596 for (size_t i = 0; i < pcell->requires_not_status.size(); ++i)
597 if (camp->checkStatus(pcell->requires_not_status[i]))
598 return false;
599
600 return true;
601 }
602
540603 bool MenuPowers::checkUnlocked(MenuPowersCell* pcell) {
541604 // If this power is not in the menu, than it has no requirements
542605 if (!pcell)
543606 return true;
544
545 if (!pcell->isVisible())
546 return false;
547607
548608 // If power_id is saved into vector, it's unlocked anyway
549609 // check if the unlocked flag is set and check the player's power list
568628 if (!pcell)
569629 return true;
570630
571 if (!pcell->isVisible())
572 return false;
573
574631 // If we already have a power, don't try to unlock it
575632 if (checkUnlocked(pcell))
576633 return false;
600657
601658 // remove passive effects
602659 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);
660 std::vector<PowerID>::iterator passive_it = std::find(pc->stats.powers_passive.begin(), pc->stats.powers_passive.end(), pcell->id);
604661 if (passive_it != pc->stats.powers_passive.end())
605662 pc->stats.powers_passive.erase(passive_it);
606663
610667 }
611668
612669 // 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);
670 std::vector<PowerID>::iterator it = std::find(pc->stats.powers_list.begin(), pc->stats.powers_list.end(), pcell->id);
614671 if (it != pc->stats.powers_list.end())
615672 pc->stats.powers_list.erase(it);
616673
617674 // remove from action bar
618675 menu->act->addPower(0, pcell->id);
619676
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;
677 // lock higher levels as well (careful: recursion)
678 if (pcell->next) {
679 lockCell(pcell->next);
625680 }
626681 }
627682
635690 return pcell == power_cell[pcell->group].getBonusCurrent(power_cell[pcell->group].getCurrent());
636691 }
637692
638 MenuPowersCell* MenuPowers::getCellByPowerIndex(int power_index) {
693 bool MenuPowers::isCellVisible(MenuPowersCell* pcell) {
694 if (!pcell)
695 return false;
696
697 if (!pcell->visible)
698 return false;
699
700 if (pcell->visible_check_status && !checkRequirementStatus(pcell))
701 return false;
702 else if (pcell->visible_check_locked && !checkUnlocked(pcell))
703 return false;
704
705 return true;
706 }
707
708 MenuPowersCell* MenuPowers::getCellByPowerIndex(PowerID power_index) {
639709 // Powers can not have an id of 0
640 if (power_index <= 0)
710 if (power_index == 0)
641711 return NULL;
642712
643713 // Find cell with our power
686756 }
687757
688758 if (power_cell[i].cells[j].is_unlocked) {
689 if (!power_cell[i].cells[j].isVisible() || !checkRequirements(&power_cell[i].cells[j])) {
759 if (!checkRequirements(&power_cell[i].cells[j])) {
690760 lockCell(&power_cell[i].cells[j]);
691761 did_cell_lock = true;
692762 }
720790 for (size_t j = 0; j < power_cell[i].cells.size(); ++j) {
721791 MenuPowersCell* pcell = &power_cell[i].cells[j];
722792
723 if (pcell != bonus_pcell || ((!checkRequirements(pcell) || (!pcell->is_unlocked && !isBonusCell(pcell))) && pcell->passive_on)) {
793 if (pcell != bonus_pcell || (pcell->passive_on && powers->powers[pcell->id].passive && (!checkRequirements(current_pcell) || (!pcell->is_unlocked && !isBonusCell(pcell))))) {
724794 // 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())
795 std::vector<PowerID>::iterator passive_it = std::find(pc->stats.powers_passive.begin(), pc->stats.powers_passive.end(), pcell->id);
796 if (passive_it != pc->stats.powers_passive.end()) {
727797 pc->stats.powers_passive.erase(passive_it);
728798
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) {
799 pc->stats.effects.removeEffectPassive(pcell->id);
800 pcell->passive_on = false;
801 pc->stats.refresh_stats = true;
802
803 // passive powers can lock equipment slots, so update equipment here
804 menu->inv->applyEquipment();
805 }
806 }
807 else if (pcell == bonus_pcell && !pcell->passive_on && powers->powers[pcell->id].passive && checkRequirements(current_pcell)) {
734808 // 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())
809 std::vector<PowerID>::iterator passive_it = std::find(pc->stats.powers_passive.begin(), pc->stats.powers_passive.end(), pcell->id);
810 if (passive_it == pc->stats.powers_passive.end()) {
737811 pc->stats.powers_passive.push_back(pcell->id);
738812
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);
813 pcell->passive_on = true;
814 // for passives without special triggers, we need to trigger them here
815 if (pc->stats.effects.triggered_others)
816 powers->activateSinglePassive(&pc->stats, pcell->id);
817
818 // passive powers can lock equipment slots, so update equipment here
819 menu->inv->applyEquipment();
820 }
743821 }
744822 }
745823
762840 return used;
763841 }
764842
765 void MenuPowers::createTooltip(TooltipData* tip_data, MenuPowersCell* pcell, bool show_unlock_prompt) {
766 if (!pcell)
843 void MenuPowers::createTooltipFromActionBar(TooltipData* tip_data, unsigned slot, int tooltip_length) {
844 if (slot >= menu->act->hotkeys.size() || slot >= menu->act->hotkeys_mod.size())
767845 return;
768846
769 MenuPowersCell* pcell_bonus = power_cell[pcell->group].getBonusCurrent(pcell);
770
771 const Power &pwr = powers->powers[pcell_bonus->id];
847 PowerID power_index = menu->act->hotkeys[slot];
848 PowerID mod_power_index = menu->act->hotkeys_mod[slot];
849
850 PowerID pindex = mod_power_index;
851 MenuPowersCell* pcell = getCellByPowerIndex(pindex);
852
853 // action bar slot is modded and not found in the menu
854 if (power_index != mod_power_index && !pcell) {
855 PowerID test_pindex = power_index;
856 MenuPowersCell* test_pcell = getCellByPowerIndex(test_pindex);
857
858 // non-modded power found in the menu; use it instead
859 if (test_pcell) {
860 pindex = test_pindex;
861 pcell = test_pcell;
862 }
863 // else, neither is found in the menu, so default to the modded power
864 }
865
866 createTooltip(tip_data, pcell, pindex, false, tooltip_length);
867 }
868
869 void MenuPowers::createTooltip(TooltipData* tip_data, MenuPowersCell* pcell, PowerID power_index, bool show_unlock_prompt, int tooltip_length) {
870
871 MenuPowersCell* pcell_bonus = NULL;
872 if (pcell) {
873 pcell_bonus = power_cell[pcell->group].getBonusCurrent(pcell);
874 }
875 const Power &pwr = pcell_bonus ? powers->powers[pcell_bonus->id] : powers->powers[power_index];
772876
773877 {
774878 std::stringstream ss;
775879 ss << pwr.name;
776 if (pcell->upgrade_level > 0) {
880 if (pcell && pcell->upgrade_level > 0) {
777881 ss << " (" << msg->get("Level %d", pcell->upgrade_level);
778882 int bonus_levels = power_cell[pcell->group].getBonusLevels();
779883 if (bonus_levels > 0)
783887 tip_data->addText(ss.str());
784888 }
785889
890 if (tooltip_length == MenuPowers::TOOLTIP_SHORT || (!pcell && tooltip_length != MenuPowers::TOOLTIP_LONG_ALL))
891 return;
892
786893 if (pwr.passive) tip_data->addText(msg->get("Passive"));
787 tip_data->addColoredText(Utils::substituteVarsInString(pwr.description, pc), font->getColor(FontEngine::COLOR_ITEM_FLAVOR));
894 if (pwr.description != "") {
895 tip_data->addColoredText(Utils::substituteVarsInString(pwr.description, pc), font->getColor(FontEngine::COLOR_ITEM_FLAVOR));
896 }
788897
789898 // add mana cost
790899 if (pwr.requires_mp > 0) {
796905 }
797906 // add cooldown time
798907 if (pwr.cooldown > 0) {
799 std::stringstream ss;
800 ss << msg->get("Cooldown:") << " " << Utils::getDurationString(pwr.cooldown, 2);
801 tip_data->addText(ss.str());
908 tip_data->addText(msg->get("Cooldown:") + " " + Utils::getDurationString(pwr.cooldown, 2));
802909 }
803910
804911 for (size_t i=0; i<pwr.post_effects.size(); ++i) {
805912 std::stringstream ss;
806913 EffectDef* effect_ptr = powers->getEffectDef(pwr.post_effects[i].id);
807914
808 // base stats
809 if (effect_ptr == NULL) {
915 int effect_type = Effect::NONE;
916 if (effect_ptr) {
917 effect_type = effect_ptr->type;
918 }
919 else {
920 effect_type = Effect::getTypeFromString(pwr.post_effects[i].id);
921 }
922
923 if (Effect::typeIsStat(effect_type) ||
924 Effect::typeIsDmgMin(effect_type) ||
925 Effect::typeIsDmgMax(effect_type) ||
926 Effect::typeIsResist(effect_type) ||
927 Effect::typeIsPrimary(effect_type))
928 {
810929 if (pwr.post_effects[i].magnitude > 0) {
811930 ss << "+";
812931 }
813
814932 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");
933 }
934
935 if (Effect::typeIsStat(effect_type)) {
936 int index = Effect::getStatFromType(effect_type);
937 if (Stats::PERCENT[index]) {
938 ss << "%";
939 }
940 ss << " " << Stats::NAME[index];
941 }
942 else if (Effect::typeIsDmgMin(effect_type)) {
943 size_t index = Effect::getDmgFromType(effect_type);
944 ss << " " << eset->damage_types.list[index].name_min;
945 }
946 else if (Effect::typeIsDmgMax(effect_type)) {
947 size_t index = Effect::getDmgFromType(effect_type);
948 ss << " " << eset->damage_types.list[index].name_max;
949 }
950 else if (Effect::typeIsResist(effect_type)) {
951 size_t index = Effect::getResistFromType(effect_type);
952 ss << "% " << msg->get("Resistance (%s)", eset->elements.list[index].name);
953 }
954 else if (Effect::typeIsPrimary(effect_type)) {
955 size_t index = Effect::getPrimaryFromType(effect_type);
956 ss << " " << eset->primary_stats.list[index].name;
957 }
958 else if (effect_type == Effect::DAMAGE) {
959 ss << pwr.post_effects[i].magnitude << " " << msg->get("Damage per second");
960 }
961 else if (effect_type == Effect::DAMAGE_PERCENT) {
962 ss << pwr.post_effects[i].magnitude << "% " << msg->get("Damage per second");
963 }
964 else if (effect_type == Effect::HPOT) {
965 ss << pwr.post_effects[i].magnitude << " " << msg->get("HP per second");
966 }
967 else if (effect_type == Effect::HPOT_PERCENT) {
968 ss << pwr.post_effects[i].magnitude << "% " << msg->get("HP per second");
969 }
970 else if (effect_type == Effect::MPOT) {
971 ss << pwr.post_effects[i].magnitude << " " << msg->get("MP per second");
972 }
973 else if (effect_type == Effect::MPOT_PERCENT) {
974 ss << pwr.post_effects[i].magnitude << "% " << msg->get("MP per second");
975 }
976 else if (effect_type == Effect::SPEED) {
977 if (pwr.post_effects[i].magnitude == 0)
978 ss << msg->get("Immobilize");
979 else
980 ss << msg->get("%d%% Speed", pwr.post_effects[i].magnitude);
981 }
982 else if (effect_type == Effect::ATTACK_SPEED) {
983 ss << msg->get("%d%% Attack Speed", pwr.post_effects[i].magnitude);
984 }
985 else if (effect_type == Effect::IMMUNITY) {
986 ss << msg->get("Immunity");
987 }
988 else if (effect_type == Effect::IMMUNITY_DAMAGE) {
989 ss << msg->get("Immunity to damage over time");
990 }
991 else if (effect_type == Effect::IMMUNITY_SLOW) {
992 ss << msg->get("Immunity to slow");
993 }
994 else if (effect_type == Effect::IMMUNITY_STUN) {
995 ss << msg->get("Immunity to stun");
996 }
997 else if (effect_type == Effect::IMMUNITY_HP_STEAL) {
998 ss << msg->get("Immunity to HP steal");
999 }
1000 else if (effect_type == Effect::IMMUNITY_MP_STEAL) {
1001 ss << msg->get("Immunity to MP steal");
1002 }
1003 else if (effect_type == Effect::IMMUNITY_KNOCKBACK) {
1004 ss << msg->get("Immunity to knockback");
1005 }
1006 else if (effect_type == Effect::IMMUNITY_DAMAGE_REFLECT) {
1007 ss << msg->get("Immunity to damage reflection");
1008 }
1009
1010 // TODO Effect::IMMUNITY_STAT_DEBUFF?
1011
1012 else if (effect_type == Effect::STUN) {
1013 ss << msg->get("Stun");
1014 }
1015 else if (effect_type == Effect::REVIVE) {
1016 ss << msg->get("Automatic revive on death");
1017 }
1018 else if (effect_type == Effect::CONVERT) {
1019 ss << msg->get("Convert");
1020 }
1021 else if (effect_type == Effect::FEAR) {
1022 ss << msg->get("Fear");
1023 }
1024 else if (effect_type == Effect::DEATH_SENTENCE) {
1025 ss << msg->get("Lifespan");
1026 }
1027 else if (effect_type == Effect::SHIELD) {
1028 if (pwr.base_damage == eset->damage_types.list.size())
1029 continue;
1030
1031 if (pwr.mod_damage_mode == Power::STAT_MODIFIER_MODE_MULTIPLY) {
1032 int magnitude = pc->stats.getDamageMax(pwr.base_damage) * pwr.mod_damage_value_min / 100;
1033 ss << magnitude;
1034 }
1035 else if (pwr.mod_damage_mode == Power::STAT_MODIFIER_MODE_ADD) {
1036 int magnitude = pc->stats.getDamageMax(pwr.base_damage) + pwr.mod_damage_value_min;
1037 ss << magnitude;
1038 }
1039 else if (pwr.mod_damage_mode == Power::STAT_MODIFIER_MODE_ABSOLUTE) {
1040 if (pwr.mod_damage_value_max == 0 || pwr.mod_damage_value_min == pwr.mod_damage_value_max)
1041 ss << pwr.mod_damage_value_min;
8851042 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 }
1043 ss << pwr.mod_damage_value_min << "-" << pwr.mod_damage_value_max;
1044 }
1045 else {
1046 ss << pc->stats.getDamageMax(pwr.base_damage);
1047 }
1048
1049 ss << " " << msg->get("Magical Shield");
1050 }
1051 else if (effect_type == Effect::HEAL) {
1052 if (pwr.base_damage == eset->damage_types.list.size())
1053 continue;
1054
1055 int mag_min = pc->stats.getDamageMin(pwr.base_damage);
1056 int mag_max = pc->stats.getDamageMax(pwr.base_damage);
1057
1058 if (pwr.mod_damage_mode == Power::STAT_MODIFIER_MODE_MULTIPLY) {
1059 mag_min = mag_min * pwr.mod_damage_value_min / 100;
1060 mag_max = mag_max * pwr.mod_damage_value_min / 100;
1061 ss << mag_min << "-" << mag_max;
1062 }
1063 else if (pwr.mod_damage_mode == Power::STAT_MODIFIER_MODE_ADD) {
1064 mag_min = mag_min + pwr.mod_damage_value_min;
1065 mag_max = mag_max + pwr.mod_damage_value_min;
1066 ss << mag_min << "-" << mag_max;
1067 }
1068 else if (pwr.mod_damage_mode == Power::STAT_MODIFIER_MODE_ABSOLUTE) {
1069 if (pwr.mod_damage_value_max == 0 || pwr.mod_damage_value_min == pwr.mod_damage_value_max)
1070 ss << pwr.mod_damage_value_min;
1071 else
1072 ss << pwr.mod_damage_value_min << "-" << pwr.mod_damage_value_max;
1073 }
1074 else {
1075 ss << mag_min << "-" << mag_max;
1076 }
1077
1078 ss << " " << msg->get("Healing");
1079 }
1080 else if (effect_type == Effect::KNOCKBACK) {
1081 ss << pwr.post_effects[i].magnitude << " " << msg->get("Knockback");
1082 }
1083 else if (effect_ptr && !effect_ptr->name.empty() && pwr.post_effects[i].magnitude > 0) {
1084 if (effect_ptr->can_stack)
1085 ss << "+";
1086 ss << pwr.post_effects[i].magnitude << " " << msg->get(effect_ptr->name);
1087 }
1088 else if (pwr.post_effects[i].magnitude == 0) {
1089 // nothing
9941090 }
9951091
9961092 if (!ss.str().empty()) {
9971093 if (pwr.post_effects[i].duration > 0) {
998 if (effect_ptr && effect_ptr->type == "death_sentence") {
1094 if (effect_type == Effect::DEATH_SENTENCE) {
9991095 ss << ": " << Utils::getDurationString(pwr.post_effects[i].duration, 2);
10001096 }
10011097 else {
11151211 }
11161212 }
11171213
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));
1214 if (pcell) {
1215 // add requirement
1216 for (size_t i = 0; i < eset->primary_stats.list.size(); ++i) {
1217 if (pcell->requires_primary[i] > 0) {
1218 if (pc->stats.get_primary(i) < pcell->requires_primary[i])
1219 tip_data->addColoredText(msg->get("Requires %s %d", eset->primary_stats.list[i].name, pcell->requires_primary[i]), font->getColor(FontEngine::COLOR_MENU_PENALTY));
1220 else
1221 tip_data->addText(msg->get("Requires %s %d", eset->primary_stats.list[i].name, pcell->requires_primary[i]));
1222 }
1223 }
1224
1225 // Draw required Level Tooltip
1226 if ((pcell->requires_level > 0) && pc->stats.level < pcell->requires_level) {
1227 tip_data->addColoredText(msg->get("Requires Level %d", pcell->requires_level), font->getColor(FontEngine::COLOR_MENU_PENALTY));
1228 }
1229 else if ((pcell->requires_level > 0) && pc->stats.level >= pcell->requires_level) {
1230 tip_data->addText(msg->get("Requires Level %d", pcell->requires_level));
1231 }
1232
1233 for (size_t j=0; j < pcell->requires_power.size(); ++j) {
1234 MenuPowersCell* req_cell = getCellByPowerIndex(pcell->requires_power[j]);
1235 if (!req_cell)
1236 continue;
1237
1238 std::string req_power_name;
1239 if (req_cell->upgrade_level > 0)
1240 req_power_name = powers->powers[req_cell->id].name + " (" + msg->get("Level %d", req_cell->upgrade_level) + ")";
11231241 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"));
1242 req_power_name = powers->powers[req_cell->id].name;
1243
1244
1245 // Required Power Tooltip
1246 if (!checkUnlocked(req_cell)) {
1247 tip_data->addColoredText(msg->get("Requires Power: %s", req_power_name), font->getColor(FontEngine::COLOR_MENU_PENALTY));
1248 }
1249 else {
1250 tip_data->addText(msg->get("Requires Power: %s", req_power_name));
1251 }
1252
1253 }
1254
1255 // Draw unlock power Tooltip
1256 if (pcell->requires_point && !(std::find(pc->stats.powers_list.begin(), pc->stats.powers_list.end(), pcell->id) != pc->stats.powers_list.end())) {
1257 MenuPowersCell* unlock_cell = getCellByPowerIndex(pcell->id);
1258 if (show_unlock_prompt && points_left > 0 && checkUnlock(unlock_cell)) {
1259 tip_data->addColoredText(msg->get("Click to Unlock (uses 1 Skill Point)"), font->getColor(FontEngine::COLOR_MENU_BONUS));
1260 }
1261 else {
1262 if (pcell->requires_point && points_left < 1)
1263 tip_data->addColoredText(msg->get("Requires 1 Skill Point"), font->getColor(FontEngine::COLOR_MENU_PENALTY));
1264 else
1265 tip_data->addText(msg->get("Requires 1 Skill Point"));
1266 }
11691267 }
11701268 }
11711269 }
11811279 if (power_cell[i].tab != tab_num) continue;
11821280
11831281 MenuPowersCell* slot_cell = power_cell[i].getCurrent();
1184 if (!slot_cell || !slot_cell->isVisible())
1282 if (!slot_cell || !isCellVisible(slot_cell))
11851283 continue;
11861284
11871285 if (slots[i])
12341332
12351333 setUnlockedPowers();
12361334
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
12571335 points_left = (pc->stats.level * pc->stats.power_points_per_level) - getPointsUsed();
12581336 if (points_left > 0) {
12591337 newPowerNotification = true;
1338 }
1339
1340 for (size_t i=0; i<power_cell.size(); i++) {
1341 // make sure invisible cells are skipped in the tablist
1342 if (visible && slots[i])
1343 slots[i]->enable_tablist_nav = isCellVisible(power_cell[i].getCurrent());
1344
1345 // disable upgrade buttons by default
1346 if (power_cell[i].upgrade_button != NULL) {
1347 power_cell[i].upgrade_button->enabled = false;
1348 }
1349
1350 // try to automatically upgrade powers is no power point is required
1351 MenuPowersCell* pcell = power_cell[i].getCurrent();
1352 while (checkUpgrade(pcell)) {
1353 if (pcell->next && !pcell->next->requires_point) {
1354 // automatic upgrade possible; do upgrade and re-check upgrade possibility
1355 upgradePower(pcell, UPGRADE_POWER_ALL_TABS);
1356 pcell = power_cell[i].getCurrent();
1357 if (power_cell[i].upgrade_button != NULL)
1358 power_cell[i].upgrade_button->enabled = (pc->stats.hp > 0 && isCellVisible(pcell) && checkUpgrade(pcell));
1359 }
1360 else {
1361 // power point required or no upgrade available; stop trying to upgrade
1362 if (power_cell[i].upgrade_button != NULL)
1363 power_cell[i].upgrade_button->enabled = (pc->stats.hp > 0 && isCellVisible(pcell));
1364 break;
1365 }
1366 }
1367
1368 // handle clicking of upgrade button
1369 if (visible && pc->stats.hp > 0 && power_cell[i].upgrade_button != NULL) {
1370 if ((!tab_control || power_cell[i].tab == tab_control->getActiveTab()) && power_cell[i].upgrade_button->checkClick()) {
1371 upgradePower(power_cell[i].getCurrent(), !UPGRADE_POWER_ALL_TABS);
1372 }
1373 }
12601374 }
12611375
12621376 if (!visible) return;
13471461
13481462 // stats
13491463 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());
1464 if (points_left >= 1) {
1465 label_unspent->setText(msg->get("Available skill points: %d", points_left));
1466 }
1467 else {
1468 label_unspent->setText("");
1469 }
13601470 label_unspent->render();
13611471 }
13621472 }
13761486 continue;
13771487
13781488 MenuPowersCell* tip_cell = power_cell[i].getCurrent();
1379 if (!tip_cell->isVisible())
1489 if (!isCellVisible(tip_cell))
13801490 continue;
13811491
13821492 if (slots[i] && Utils::isWithinRect(slots[i]->pos, position)) {
13831493 bool base_unlocked = checkUnlocked(tip_cell);
13841494
1385 createTooltip(&tip_data, tip_cell, !base_unlocked);
1495 createTooltip(&tip_data, tip_cell, tip_cell->id, !base_unlocked, MenuPowers::TOOLTIP_LONG_MENU);
13861496 if (tip_cell->next) {
13871497 tip_data.addText("\n" + msg->get("Next Level:"));
1388 createTooltip(&tip_data, tip_cell->next, base_unlocked);
1498 createTooltip(&tip_data, tip_cell->next, tip_cell->next->id, base_unlocked, MenuPowers::TOOLTIP_LONG_MENU);
13891499 }
13901500
13911501 tooltipm->push(tip_data, position, TooltipData::STYLE_FLOAT);
13971507 /**
13981508 * Click-to-drag a power (to the action bar)
13991509 */
1400 int MenuPowers::click(const Point& mouse) {
1510 PowerID MenuPowers::click(const Point& mouse) {
14011511 int active_tab = (tab_control) ? tab_control->getActiveTab() : 0;
14021512
14031513 for (size_t i=0; i<power_cell.size(); i++) {
14161526 }
14171527
14181528 MenuPowersCell* pcell = power_cell[i].getCurrent();
1419 if (!pcell)
1529 if (!pcell || !isCellVisible(pcell))
14201530 return 0;
14211531
14221532 if (checkUnlock(pcell) && points_left > 0 && pcell->requires_point) {
14291539 }
14301540 else if (checkUnlocked(pcell) && !powers->powers[pcell->id].passive) {
14311541 // 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);
1542 if (inpt->usingMouse()) {
1543 slots[i]->defocus();
1544 if (!tabs.empty()) {
1545 tablist_pow[active_tab].setCurrent(NULL);
1546 }
1547 else {
1548 tablist.setCurrent(NULL);
1549 }
14381550 }
14391551 return power_cell[i].getBonusCurrent(pcell)->id;
14401552 }
14701582 /**
14711583 * Return true if required stats for power usage are met. Else return false.
14721584 */
1473 bool MenuPowers::meetsUsageStats(int power_index) {
1585 bool MenuPowers::meetsUsageStats(PowerID power_index) {
14741586 // Find cell with our power
14751587 MenuPowersCell* pcell = getCellByPowerIndex(power_index);
14761588
15091621 }
15101622 }
15111623
1512 void MenuPowers::addBonusLevels(int power_index, int bonus_levels) {
1624 void MenuPowers::addBonusLevels(PowerID power_index, int bonus_levels) {
15131625 MenuPowersCell* pcell = getCellByPowerIndex(power_index);
15141626
15151627 if (!pcell)
15291641 pgroup->bonus_levels.push_back(bonus);
15301642 }
15311643
1532 std::string MenuPowers::getItemBonusPowerReqString(int power_index) {
1644 std::string MenuPowers::getItemBonusPowerReqString(PowerID power_index) {
15331645 MenuPowersCell* pcell = getCellByPowerIndex(power_index);
15341646
15351647 if (!pcell)
15361648 return "";
15371649
1538 std::stringstream ss;
1539 ss << powers->powers[power_index].name;
1650 std::string output = powers->powers[power_index].name;
15401651 if (pcell->upgrade_level > 0) {
1541 ss << " (" << msg->get("Level %d", pcell->upgrade_level) << ")";
1542 }
1543
1544 return ss.str();
1652 output += " (" + msg->get("Level %d", pcell->upgrade_level) + ")";
1653 }
1654
1655 return output;
15451656 }
15461657
15471658 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_check_locked;
66 bool visible_check_status;
6367
6468 int upgrade_level;
6569 bool passive_on;
97101 void loadUpgrade(FileParser &infile, std::vector<MenuPowersCell>& power_cell_upgrade);
98102
99103 bool checkRequirements(MenuPowersCell* pcell);
104 bool checkRequirementStatus(MenuPowersCell* pcell);
100105 bool checkUnlocked(MenuPowersCell* pcell);
101106 bool checkUnlock(MenuPowersCell* pcell);
102107 bool checkUpgrade(MenuPowersCell* pcell);
103108 void lockCell(MenuPowersCell* pcell);
104109 bool isBonusCell(MenuPowersCell* pcell);
110 bool isCellVisible(MenuPowersCell* pcell);
105111
106 MenuPowersCell* getCellByPowerIndex(int power_index);
112 MenuPowersCell* getCellByPowerIndex(PowerID power_index);
107113
108114 void upgradePower(MenuPowersCell* pcell, bool ignore_tab);
109115
110116 int getPointsUsed();
111117
112 void createTooltip(TooltipData* tip_data, MenuPowersCell* pcell, bool show_unlock_prompt);
118 void createTooltip(TooltipData* tip_data, MenuPowersCell* pcell, PowerID power_index, bool show_unlock_prompt, int tooltip_length);
113119 void renderPowers(int tab_num);
114120
115121 std::vector<MenuPowersCellGroup> power_cell;
133139
134140 bool tree_loaded;
135141
136 size_t prev_powers_list_size;
137
138142 int default_power_tab;
139143
140144 public:
145 enum {
146 TOOLTIP_SHORT = 0,
147 TOOLTIP_LONG_MENU = 1,
148 TOOLTIP_LONG_ALL = 2
149 };
150
141151 MenuPowers();
142152 ~MenuPowers();
143153 void align();
148158 void render();
149159
150160 void renderTooltips(const Point& position);
151 int click(const Point& mouse);
161 PowerID click(const Point& mouse);
152162 void upgradeBySlotIndex(int slot_index);
153163
154164 void setUnlockedPowers();
155165 void resetToBasePowers();
156166
157 bool meetsUsageStats(int power_index);
167 bool meetsUsageStats(PowerID power_index);
158168
159169 void clearActionBarBonusLevels();
160170 void clearBonusLevels();
161 void addBonusLevels(int power_index, int bonus_levels);
162 std::string getItemBonusPowerReqString(int power_index);
171 void addBonusLevels(PowerID power_index, int bonus_levels);
172 std::string getItemBonusPowerReqString(PowerID power_index);
173
174 void createTooltipFromActionBar(TooltipData* tip_data, unsigned slot, int tooltip_length);
163175
164176 std::vector<WidgetSlot*> slots; // power slot Widgets
165177
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 (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 || 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"
158159 if (!npc->portraits.empty())
159160 npc->npc_portrait = npc->portraits[0];
160161
161 if (actions.size() == 1 && (!actions[0].is_vendor || first_interaction)) {
162 if (actions.size() == 1 && first_interaction) {
162163 executeAction(0);
163164 }
164165 else if (actions.empty()) {
189190
190191 if (advanceButton->checkClick() || closeButton->checkClick()) {
191192 // button was clicked
192 nextDialog();
193 if (closeButton->enabled) {
194 nextDialog();
195 setNPC(NULL);
196 }
197 else {
198 nextDialog();
199 }
193200 }
194201 else if ((advanceButton->enabled || closeButton->enabled) && inpt->pressing[Input::ACCEPT] && !inpt->lock[Input::ACCEPT]) {
195202 // pressed next/more
196203 inpt->lock[Input::ACCEPT] = true;
197 nextDialog();
204 if (closeButton->enabled) {
205 nextDialog();
206 setNPC(NULL);
207 }
208 else {
209 nextDialog();
210 }
198211 }
199212 else {
200213 textbox->logic();
442455 // add standard topics
443456 for (size_t i = nodes.size(); i > 0; i--) {
444457 std::string topic = npc->getDialogTopic(nodes[i-1]);
445 if (topic.empty())
446 continue;
458 if (topic.empty()) {
459 topic = msg->get("<dialog node %d>", nodes[i-1]);
460 }
447461
448462 addAction(topic, nodes[i-1], !Action::IS_VENDOR);
449463 }
473487 int node_id = actions[index].node_id;
474488
475489 if (actions[index].is_vendor) {
490 // defocus the talker menu tablist. Otherwise, CANCEL needs to be pressed twice to exit the vendor screen
491 defocusTabLists();
492
476493 // begin trading
477494 NPC *temp_npc = npc;
478495 menu->closeAll();
521538 void MenuTalker::setupTabList() {
522539 tablist.clear();
523540
524 if (dialog_node == -1) {
525 for (size_t i = 0; i < actions.size(); ++i) {
526 tablist.add(actions[i].btn);
527 }
528 }
541 tablist.add(textbox);
529542
530543 if (advanceButton->enabled) {
531544 tablist.add(advanceButton);
2323
2424 MenuTouchControls::MenuTouchControls()
2525 : Menu()
26 , move_radius(settings->view_h / 4)
2726 , move_center(0,0)
28 , move_center_base(move_radius, -(move_radius / 2))
2927 , move_align(Utils::ALIGN_BOTTOMLEFT)
30 , move_deadzone(settings->view_h / 20)
31 , main1_radius(settings->view_h / 6)
3228 , main1_center(0,0)
33 , main1_center_base(-main1_radius - (settings->view_h / 4), -(settings->view_h / 8))
3429 , main1_align(Utils::ALIGN_BOTTOMRIGHT)
35 , main2_radius(settings->view_h / 6)
3630 , main2_center(0,0)
37 , main2_center_base(0, -(settings->view_h / 6))
3831 , main2_align(Utils::ALIGN_BOTTOMRIGHT)
39 , radius_padding(settings->view_h / 20)
32 , prev_touch_scale(settings->touch_scale)
4033 {
4134 visible = true;
4235 align();
5447 }
5548
5649 void MenuTouchControls::align() {
50 move_radius = static_cast<int>(settings->view_h / 4 * settings->touch_scale);
51 move_center_base.x = move_radius;
52 move_center_base.y = -(move_radius / 2);
53 move_deadzone = static_cast<int>(settings->view_h / 20 * settings->touch_scale);
54
55 main1_radius = static_cast<int>(settings->view_h / 6 * settings->touch_scale);
56 main1_center_base.x = -main1_radius - static_cast<int>((settings->view_h / 4) * settings->touch_scale);
57 main1_center_base.y = static_cast<int>((settings->view_h / 8) * settings->touch_scale * -1);
58
59 main2_radius = static_cast<int>(settings->view_h / 6 * settings->touch_scale);
60 main2_center_base.x = 0;
61 main2_center_base.y = static_cast<int>((settings->view_h / 6) * settings->touch_scale * -1);
62
63 radius_padding = static_cast<int>(settings->view_h / 20 * settings->touch_scale);
64
5765 alignInput(move_center, move_center_base, move_radius, move_align);
5866 alignInput(main1_center, main1_center_base, main1_radius, main1_align);
5967 alignInput(main2_center, main2_center_base, main2_radius, main2_align);
6068 }
6169
6270 void MenuTouchControls::logic() {
63 if (!visible || !platform.is_mobile_device)
71 if (!visible || !settings->touchscreen)
6472 return;
73
74 // update scaling from settings
75 if (settings->touch_scale != prev_touch_scale) {
76 align();
77 prev_touch_scale = settings->touch_scale;
78 }
6579
6680 inpt->pressing[Input::LEFT] = inpt->pressing[Input::RIGHT] = inpt->pressing[Input::UP] = inpt->pressing[Input::DOWN] = false;
6781 inpt->pressing[Input::MAIN2] = false;
90104 }
91105
92106 bool MenuTouchControls::checkAllowMain1() {
93 if (!visible || !platform.is_mobile_device)
107 if (!visible || !settings->touchscreen)
94108 return true;
95109
96110 FPoint m1_center(static_cast<float>(main1_center.x), static_cast<float>(main1_center.y));
104118 }
105119
106120 void MenuTouchControls::render() {
107 if (!visible || !platform.is_mobile_device)
121 if (!visible || !settings->touchscreen)
108122 return;
109123
110124 Color color_normal(255,255,255,255);
4343 int main2_align;
4444
4545 int radius_padding;
46
47 float prev_touch_scale;
4648 public:
4749 MenuTouchControls();
4850 ~MenuTouchControls();
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) {
160178 // @ATTR name|string|NPC's name.
161179 name = msg->get(infile.val);
162180 }
163 else if (infile.key == "gfx") {
164 // @ATTR gfx|filename|Filename of an animation definition.
165 gfx = infile.val;
181 else if (infile.key == "animations" || infile.key == "gfx") {
182 // TODO "gfx" is deprecated
166183 }
167184 else if (infile.key == "direction") {
168185 // @ATTR direction|direction|The direction to use for this NPC's stance animation.
169186 direction = Parse::toDirection(infile.val);
187 }
188 else if (infile.key == "show_on_minimap") {
189 // @ATTR show_on_minimap|bool|If true, this NPC will be shown on the minimap. The default is true.
190 show_on_minimap = Parse::toBool(infile.val);
170191 }
171192
172193 // handle talkers
199220 else if (infile.key == "constant_stock") {
200221 // @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.
201222 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;
223 stack = Parse::toItemQuantityPair(Parse::popFirstString(infile.val));
208224 stock.add(stack, ItemStorage::NO_SLOT);
209225 }
210226 }
212228 // @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.
213229 if (camp->checkStatus(camp->registerStatus(Parse::popFirstString(infile.val)))) {
214230 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;
231 stack = Parse::toItemQuantityPair(Parse::popFirstString(infile.val));
221232 stock.add(stack, ItemStorage::NO_SLOT);
222233 }
223234 }
255266 }
256267 infile.close();
257268 }
269
258270 loadGraphics();
259271
260272 // fill inventory with items from random stock table
268280 for (size_t i=0; i<rand_itemstacks.size(); ++i) {
269281 stock.add(rand_itemstacks[i], ItemStorage::NO_SLOT);
270282 }
283
284 // warn if dialog nodes lack a topic
285 std::string full_filename = mods->locate(npc_id);
286 for (size_t i=0; i<dialog.size(); ++i) {
287 std::string topic = getDialogTopic(static_cast<int>(i));
288 if (topic.empty()) {
289 Utils::logInfo("[%s] NPC: Dialog node %d does not have a topic.", full_filename.c_str(), i);
290 }
291 }
271292 }
272293
273294 void NPC::loadGraphics() {
274295
275 if (gfx != "") {
276 anim->increaseCount(gfx);
277 animationSet = anim->getAnimationSet(gfx);
296 if (stats.animations != "") {
297 anim->increaseCount(stats.animations);
298 animationSet = anim->getAnimationSet(stats.animations);
278299 activeAnimation = animationSet->getAnimation("");
279300 }
280301
318339 }
319340
320341 void NPC::logic() {
321 if (activeAnimation)
322 activeAnimation->advanceFrame();
342 mapr->collider.unblock(stats.pos.x, stats.pos.y);
343
344 Entity::logic();
345 moveMapEvents();
346
347 if (!stats.hero_ally)
348 mapr->collider.block(stats.pos.x, stats.pos.y, true);
323349 }
324350
325351 bool NPC::playSoundIntro() {
475501 return true;
476502 }
477503
504 void NPC::moveMapEvents() {
505
506 // Update event position after NPC has moved
507 for (size_t i = 0; i < mapr->events.size(); i++)
508 {
509 if (mapr->events[i].type == filename)
510 {
511 mapr->events[i].location.x = static_cast<int>(stats.pos.x);
512 mapr->events[i].location.y = static_cast<int>(stats.pos.y);
513
514 mapr->events[i].hotspot.x = static_cast<int>(stats.pos.x);
515 mapr->events[i].hotspot.y = static_cast<int>(stats.pos.y);
516
517 mapr->events[i].center.x =
518 static_cast<float>(stats.pos.x) + static_cast<float>(mapr->events[i].hotspot.w)/2;
519 mapr->events[i].center.y =
520 static_cast<float>(stats.pos.y) + static_cast<float>(mapr->events[i].hotspot.h)/2;
521
522 for (size_t ci = 0; ci < mapr->events[i].components.size(); ci++)
523 {
524 if (mapr->events[i].components[ci].type == EventComponent::NPC_HOTSPOT)
525 {
526 mapr->events[i].components[ci].x = static_cast<int>(stats.pos.x);
527 mapr->events[i].components[ci].y = static_cast<int>(stats.pos.y);
528 }
529 }
530 }
531 }
532 }
533
478534 bool NPC::checkVendor() {
479535 if (!vendor)
480536 return false;
573629 }
574630 }
575631 }
632 else if (dialog[dialog_node][event_cursor].type == EventComponent::NPC_TAKE_A_PARTY) {
633 stats.hero_ally = dialog[dialog_node][event_cursor].x == 0 ? false : true;
634 }
576635 else if (dialog[dialog_node][event_cursor].type == EventComponent::NONE) {
577636 // conversation ends
578637 return false;
601660 EventManager::executeEvent(ev);
602661 }
603662
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
615663 bool NPC::isDialogType(const int &event_type) {
616664 return event_type == EventComponent::NPC_DIALOG_THEM || event_type == EventComponent::NPC_DIALOG_YOU;
617665 }
622670 delete portraits[i];
623671 }
624672
625 if (gfx != "") {
626 anim->decreaseCount(gfx);
673 if (stats.animations != "") {
674 anim->decreaseCount(stats.animations);
627675 }
628676
629677 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 explicit 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;
103 npc->stats.npc = true;
84104
85105 // npc->stock.sort();
86106 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);
107 createMapEvent(*npc, npcs.size());
108 if (!mapr->collider.isEmpty(npc->stats.pos.x, npc->stats.pos.y))
109 Utils::logInfo("NPC: Collision tile detected at NPC position (%.2f, %.2f).", npc->stats.pos.x, npc->stats.pos.y);
110 }
111
112 FPoint spawn_pos = mapr->collider.getRandomNeighbor(Point(pc->stats.pos), 1, !MapCollision::IGNORE_BLOCKED);
113 while (!allies.empty()) {
114 NPC *npc = allies.begin()->second;
115 allies.erase(allies.begin());
116
117 npc->stats.pos = spawn_pos;
118 npc->stats.direction = pc->stats.direction;
119
120 npcs.push_back(npc);
121 createMapEvent(*npc, npcs.size());
122
123 mapr->collider.block(npc->stats.pos.x, npc->stats.pos.y, !MapCollision::IS_ALLY);
124 }
125
126 }
127
128 void NPCManager::createMapEvent(const NPC& npc, size_t _npcs) {
129 // create a map event for provided npc
130 Event ev;
131 EventComponent ec;
132
133 // the event hotspot is a 1x1 tile at the npc's feet
134 ev.activate_type = Event::ACTIVATE_ON_INTERACT;
135 ev.keep_after_trigger = true;
136 Rect location;
137 location.x = static_cast<int>(npc.stats.pos.x);
138 location.y = static_cast<int>(npc.stats.pos.y);
139 location.w = location.h = 1;
140 ev.location = ev.hotspot = location;
141 ev.center.x = static_cast<float>(ev.hotspot.x) + static_cast<float>(ev.hotspot.w)/2;
142 ev.center.y = static_cast<float>(ev.hotspot.y) + static_cast<float>(ev.hotspot.h)/2;
143
144 ec.type = EventComponent::NPC_ID;
145 ec.x = static_cast<int>(_npcs)-1;
146 ev.components.push_back(ec);
147
148 ec.type = EventComponent::TOOLTIP;
149 ec.s = npc.name;
150 ev.components.push_back(ec);
151
152 // The hitbox for hovering/clicking on an npc is based on their first frame of animation
153 // This might cause some undesired behavior for npcs that have packed animations and a lot of variation
154 // However, it is sufficient for all of our current game data (fantasycore, no-name mod, polymorphable)
155 if (npc.activeAnimation) {
156 Renderable ren = npc.activeAnimation->getCurrentFrame(npc.direction);
117157 ec.type = EventComponent::NPC_HOTSPOT;
118 ec.x = static_cast<int>(npc->pos.x);
119 ec.y = static_cast<int>(npc->pos.y);
158 ec.x = static_cast<int>(npc.stats.pos.x);
159 ec.y = static_cast<int>(npc.stats.pos.y);
120160 ec.z = ren.offset.x;
121161 ec.a = ren.offset.y;
122162 ec.b = ren.src.w;
123163 ec.c = ren.src.h;
124164 ev.components.push_back(ec);
125
126 mapr->events.push_back(ev);
127 }
128
165 ev.type = npc.filename;
166 }
167 else {
168 Utils::logError("NPCManager: Unable to set click hotspot for '%s' due to lack of animation.", npc.filename.c_str());
169 }
170
171 mapr->events.push_back(ev);
129172 }
130173
131174 void NPCManager::logic() {
140183 }
141184
142185 // could not find NPC, try loading it here
143 NPC *n = new NPC();
186 NPC *n = new NPC(*entitym->getEntityPrototype(npcName));
144187 if (n) {
145188 n->load(npcName);
146189 npcs.push_back(n);
150193 return -1;
151194 }
152195
196 Entity* NPCManager::npcFocus(const Point& mouse, const FPoint& cam, bool alive_only) {
197 Point p;
198 Rect r;
199 for(unsigned int i = 0; i < npcs.size(); i++) {
200 if(alive_only && (npcs[i]->stats.cur_state == StatBlock::ENTITY_DEAD || npcs[i]->stats.cur_state == StatBlock::ENTITY_CRITDEAD)) {
201 continue;
202 }
203 if (!npcs[i]->stats.hero_ally) {
204 continue;
205 }
206
207 p = Utils::mapToScreen(npcs[i]->stats.pos.x, npcs[i]->stats.pos.y, cam.x, cam.y);
208
209 Renderable ren = npcs[i]->getRender();
210 r.w = ren.src.w;
211 r.h = ren.src.h;
212 r.x = p.x - ren.offset.x;
213 r.y = p.y - ren.offset.y;
214
215 if (Utils::isWithinRect(r, mouse)) {
216 return npcs[i];
217 }
218 }
219 return NULL;
220 }
221
222 Entity* NPCManager::getNearestNPC(const FPoint& pos, bool get_corpse) {
223 Entity* nearest = NULL;
224 float best_distance = std::numeric_limits<float>::max();
225
226 for (unsigned i=0; i<npcs.size(); i++) {
227 if(!get_corpse && (npcs[i]->stats.cur_state == StatBlock::ENTITY_DEAD || npcs[i]->stats.cur_state == StatBlock::ENTITY_CRITDEAD)) {
228 continue;
229 }
230 if (get_corpse && !npcs[i]->stats.corpse) {
231 continue;
232 }
233 if (!npcs[i]->stats.hero_ally) {
234 continue;
235 }
236
237 float distance = Utils::calcDist(pos, npcs[i]->stats.pos);
238 if (distance < best_distance) {
239 best_distance = distance;
240 nearest = npcs[i];
241 }
242 }
243
244 if (best_distance > eset->misc.interact_range)
245 nearest = NULL;
246
247 return nearest;
248 }
249
153250 NPCManager::~NPCManager() {
154251 for (unsigned i=0; i<npcs.size(); i++) {
155252 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 = 11;
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 MAX_RENDER_SIZE,
44 FRAME_LIMIT,
45 };
46 };
47
48 class Audio {
49 public:
50 static const int COUNT = 2;
51 enum {
52 SFX,
53 MUSIC
54 };
55 };
56
57 class Interface {
58 public:
59 static const int COUNT = 16;
60 enum {
61 LANGUAGE,
62 SUBTITLES,
63 COLORBLIND,
64 MINIMAP_MODE,
65 LOOT_TOOLTIPS,
66 AUTO_EQUIP,
67 ITEM_COMPARE_TIPS,
68 LOW_HP_WARNING_TYPE,
69 LOW_HP_THRESHOLD,
70 COMBAT_TEXT,
71 STATBAR_LABELS,
72 STATBAR_AUTOHIDE,
73 HARDWARE_CURSOR,
74 ENTITY_MARKERS,
75 SHOW_FPS,
76 DEV_MODE
77 };
78 };
79
80 class Input {
81 public:
82 static const int COUNT = 9;
83 enum {
84 MOUSE_MOVE,
85 MOUSE_MOVE_SWAP,
86 MOUSE_MOVE_ATTACK,
87 MOUSE_AIM,
88 NO_MOUSE,
89 JOYSTICK,
90 JOYSTICK_DEADZONE,
91 TOUCH_CONTROLS,
92 TOUCH_SCALE
93 };
94 };
95
96 class Misc {
97 public:
98 static const int COUNT = 2;
99 enum {
100 KEYBINDS,
101 MODS
102 };
103 };
104
30105 Platform();
31106 ~Platform();
32107
40115 void FSCommit();
41116
42117 void setScreenSize();
118 void setFullscreen(bool enable);
43119
44120 bool has_exit_button;
45121 bool is_mobile_device;
46122 bool force_hardware_cursor;
47123 bool has_lock_file;
124 bool needs_alt_escape_key;
125 bool fullscreen_bypass;
48126 unsigned char config_menu_type;
49127 std::string default_renderer;
128
129 std::vector<bool> config_video;
130 std::vector<bool> config_audio;
131 std::vector<bool> config_interface;
132 std::vector<bool> config_input;
133 std::vector<bool> config_misc;
50134 };
51135
52136 extern Platform platform;
7676 , is_mobile_device(true)
7777 , force_hardware_cursor(true)
7878 , has_lock_file(false)
79 , needs_alt_escape_key(false)
80 , fullscreen_bypass(false)
7981 , config_menu_type(CONFIG_MENU_TYPE_BASE)
80 , default_renderer("sdl_hardware") {
82 , default_renderer("")
83 , config_video(Platform::Video::COUNT, true)
84 , config_audio(Platform::Audio::COUNT, true)
85 , config_interface(Platform::Interface::COUNT, true)
86 , config_input(Platform::Input::COUNT, true)
87 , config_misc(Platform::Misc::COUNT, true)
88 {
89 config_video[Platform::Video::RENDERER] = true;
90 config_video[Platform::Video::FULLSCREEN] = false;
91 config_video[Platform::Video::HWSURFACE] = false;
92 config_video[Platform::Video::VSYNC] = false;
93 config_video[Platform::Video::TEXTURE_FILTER] = false;
94 config_video[Platform::Video::ENABLE_GAMMA] = false;
95 config_video[Platform::Video::GAMMA] = false;
96
97 config_interface[Platform::Interface::HARDWARE_CURSOR] = false;
98
99 config_input[Platform::Input::JOYSTICK] = false;
100 config_input[Platform::Input::MOUSE_MOVE] = false;
101 config_input[Platform::Input::MOUSE_AIM] = false;
102 config_input[Platform::Input::NO_MOUSE] = false;
103 config_input[Platform::Input::MOUSE_MOVE_SWAP] = false;
104 config_input[Platform::Input::MOUSE_MOVE_ATTACK] = false;
105 config_input[Platform::Input::JOYSTICK_DEADZONE] = false;
106 config_input[Platform::Input::TOUCH_CONTROLS] = false;
107
108 config_misc[Platform::Misc::KEYBINDS] = false;
81109 }
82110
83111 Platform::~Platform() {
133161 }
134162
135163 if (settings->path_data.empty()) {
136 Utils::logError("Settings: Android external storage unavailable: %s", SDL_GetError());
164 Utils::logError("Platform: Android external storage unavailable: %s", SDL_GetError());
137165 }
138166
139167 if (settings->path_user.empty() || !Filesystem::pathExists(settings->path_user)) {
155183 settings->path_conf += "/";
156184 settings->path_user += "/";
157185 settings->path_data += "/";
186
187 // create a .nomedia file to prevent game data being added to the Android media library
188 std::ofstream nomedia;
189 nomedia.open(settings->path_user + ".nomedia", std::ios::out);
190 if (nomedia.bad()) {
191 Utils::logError("Platform: Unable to create Android .nomedia file.");
192 }
193 nomedia.close();
194 nomedia.clear();
158195 }
159196
160197 void Platform::setExitEventFilter() {
184221 bool Platform::FSCheckReady() { return true; }
185222 void Platform::FSCommit() {}
186223 void Platform::setScreenSize() {}
224 void Platform::setFullscreen(bool) {}
187225
188226 #endif // PLATFORM_CPP
189227 #endif // PLATFORM_CPP_INCLUDE
4141 , is_mobile_device(false)
4242 , force_hardware_cursor(false)
4343 , has_lock_file(false)
44 , needs_alt_escape_key(true)
45 , fullscreen_bypass(true)
4446 , config_menu_type(CONFIG_MENU_TYPE_DESKTOP_NO_VIDEO)
45 , default_renderer("sdl_hardware") {
47 , default_renderer("sdl_hardware")
48 , config_video(Platform::Video::COUNT, true)
49 , config_audio(Platform::Audio::COUNT, true)
50 , config_interface(Platform::Interface::COUNT, true)
51 , config_input(Platform::Input::COUNT, true)
52 , config_misc(Platform::Misc::COUNT, true)
53 {
54 config_video[Platform::Video::RENDERER] = false;
55 config_video[Platform::Video::HWSURFACE] = false;
56 config_video[Platform::Video::VSYNC] = false;
57 config_video[Platform::Video::TEXTURE_FILTER] = false;
58 config_video[Platform::Video::DPI_SCALING] = false;
59 config_video[Platform::Video::ENABLE_GAMMA] = false;
60 config_video[Platform::Video::GAMMA] = false;
61 config_video[Platform::Video::MAX_RENDER_SIZE] = false;
62 config_video[Platform::Video::FRAME_LIMIT] = false;
63
64 config_input[Platform::Input::JOYSTICK] = false;
65 config_input[Platform::Input::JOYSTICK_DEADZONE] = false;
66
67 config_misc[Platform::Misc::MODS] = false;
4668 }
4769
4870 Platform::~Platform() {
147169 // can't change window size dynamically with Emscripten, so default to 16:9 aspect ratio
148170 settings->screen_w = 854;
149171 settings->screen_h = 480;
172 settings->fullscreen = false;
173 }
174
175 void Platform::setFullscreen(bool enable) {
176 if (enable)
177 emscripten_async_run_script("Module.canvas.requestFullscreen();", 0);
178 else
179 emscripten_async_run_script("parentDocument.exitFullscreen();", 0);
150180 }
151181
152182 #endif // PLATFORM_CPP
3939 , is_mobile_device(false)
4040 , force_hardware_cursor(true)
4141 , has_lock_file(true)
42 , needs_alt_escape_key(false)
43 , fullscreen_bypass(false)
4244 , config_menu_type(CONFIG_MENU_TYPE_BASE)
43 , default_renderer("") {
45 , default_renderer("")
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_interface[Platform::Interface::HARDWARE_CURSOR] = false;
62
63 config_input[Platform::Input::JOYSTICK] = false;
64 config_input[Platform::Input::MOUSE_MOVE] = false;
65 config_input[Platform::Input::MOUSE_AIM] = false;
66 config_input[Platform::Input::NO_MOUSE] = false;
67 config_input[Platform::Input::MOUSE_MOVE_SWAP] = false;
68 config_input[Platform::Input::MOUSE_MOVE_ATTACK] = false;
69 config_input[Platform::Input::JOYSTICK_DEADZONE] = false;
70
71 config_misc[Platform::Misc::KEYBINDS] = false;
4472 }
4573
4674 Platform::~Platform() {
109137 path_data = true;
110138 }
111139 else if (!settings->custom_path_data.empty()) {
112 Utils::logError("Settings: Could not find specified game data directory.");
140 Utils::logError("Platform: Could not find specified game data directory.");
113141 settings->custom_path_data = "";
114142 }
115143
184212 bool Platform::FSCheckReady() { return true; }
185213 void Platform::FSCommit() {}
186214 void Platform::setScreenSize() {}
215 void Platform::setFullscreen(bool) {}
187216
188217 #endif // PLATFORM_CPP
189218 #endif // PLATFORM_CPP_INCLUDE
5353 , is_mobile_device(true)
5454 , force_hardware_cursor(true)
5555 , has_lock_file(false)
56 , needs_alt_escape_key(false)
57 , fullscreen_bypass(false)
5658 , config_menu_type(CONFIG_MENU_TYPE_BASE)
57 , default_renderer("sdl_hardware") {
59 , default_renderer("sdl_hardware")
60 , config_video(Platform::Video::COUNT, true)
61 , config_audio(Platform::Audio::COUNT, true)
62 , config_interface(Platform::Interface::COUNT, true)
63 , config_input(Platform::Input::COUNT, true)
64 , config_misc(Platform::Misc::COUNT, true)
65 {
66 config_video[Platform::Video::RENDERER] = false;
67 config_video[Platform::Video::FULLSCREEN] = false;
68 config_video[Platform::Video::HWSURFACE] = false;
69 config_video[Platform::Video::VSYNC] = false;
70 config_video[Platform::Video::TEXTURE_FILTER] = false;
71 config_video[Platform::Video::DPI_SCALING] = false;
72 config_video[Platform::Video::ENABLE_GAMMA] = false;
73 config_video[Platform::Video::GAMMA] = false;
74
75 config_interface[Platform::Interface::HARDWARE_CURSOR] = false;
76
77 config_input[Platform::Input::JOYSTICK] = false;
78 config_input[Platform::Input::MOUSE_MOVE] = false;
79 config_input[Platform::Input::MOUSE_AIM] = false;
80 config_input[Platform::Input::NO_MOUSE] = false;
81 config_input[Platform::Input::MOUSE_MOVE_SWAP] = false;
82 config_input[Platform::Input::MOUSE_MOVE_ATTACK] = false;
83 config_input[Platform::Input::JOYSTICK_DEADZONE] = false;
84
85 config_misc[Platform::Misc::KEYBINDS] = false;
5886 }
5987
6088 Platform::~Platform() {
125153 path_data = true;
126154 }
127155 else if (!settings->custom_path_data.empty()) {
128 Utils::logError("Settings: Could not find specified game data directory.");
156 Utils::logError("Platform: Could not find specified game data directory.");
129157 settings->custom_path_data = "";
130158 }
131159
201229 bool Platform::FSCheckReady() { return true; }
202230 void Platform::FSCommit() {}
203231 void Platform::setScreenSize() {}
232 void Platform::setFullscreen(bool) {}
204233
205234 #endif // PLATFORM_CPP
206235 #endif // PLATFORM_CPP_INCLUDE
3939 , is_mobile_device(false)
4040 , force_hardware_cursor(false)
4141 , has_lock_file(true)
42 , needs_alt_escape_key(false)
43 , fullscreen_bypass(false)
4244 , config_menu_type(CONFIG_MENU_TYPE_DESKTOP)
43 , default_renderer("") {
45 , default_renderer("")
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 {
4452 }
4553
4654 Platform::~Platform() {
109117 path_data = true;
110118 }
111119 else if (!settings->custom_path_data.empty()) {
112 Utils::logError("Settings: Could not find specified game data directory.");
120 Utils::logError("Platform: Could not find specified game data directory.");
113121 settings->custom_path_data = "";
114122 }
115123
155163 if (!path_data && Filesystem::pathExists(settings->path_data)) path_data = true;
156164
157165 // finally assume the local folder
158 if (!path_data) settings->path_data = "./";
166 if (!path_data) {
167 char abs_path[1024];
168 ssize_t len = readlink("/proc/self/exe", abs_path, 1024);
169 if (len >= 0 && len < 1024) {
170 // remove executable name from abs_path
171 const char BREAK_POINT = '/';
172 const char BREAK_STRING = '\0';
173 for(ssize_t i = len; i >= 0; --i) {
174 if(abs_path[i] == BREAK_POINT) {
175 abs_path[i + 1] = BREAK_STRING;
176 break;
177 }
178 }
179 settings->path_data = std::string(abs_path);
180 }
181 else {
182 // unable to get executable path, so just use the working directory
183 settings->path_data = "./";
184 }
185 }
159186 }
160187
161188 bool Platform::dirCreate(const std::string& path) {
181208 bool Platform::FSCheckReady() { return true; }
182209 void Platform::FSCommit() {}
183210 void Platform::setScreenSize() {}
211 void Platform::setFullscreen(bool) {}
184212 void Platform::setExitEventFilter() {}
185213
186214 #endif // PLATFORM_CPP
3434 , is_mobile_device(false)
3535 , force_hardware_cursor(false)
3636 , has_lock_file(true)
37 , needs_alt_escape_key(false)
38 , fullscreen_bypass(false)
3739 , config_menu_type(CONFIG_MENU_TYPE_DESKTOP)
38 , default_renderer("") {
40 , default_renderer("")
41 , config_video(Platform::Video::COUNT, true)
42 , config_audio(Platform::Audio::COUNT, true)
43 , config_interface(Platform::Interface::COUNT, true)
44 , config_input(Platform::Input::COUNT, true)
45 , config_misc(Platform::Misc::COUNT, true) {
3946 }
4047
4148 Platform::~Platform() {
6673 settings->path_data = "";
6774 if (Filesystem::pathExists(settings->custom_path_data)) settings->path_data = settings->custom_path_data;
6875 else if (!settings->custom_path_data.empty()) {
69 Utils::logError("Settings: Could not find specified game data directory.");
76 Utils::logError("Platform: Could not find specified game data directory.");
7077 settings->custom_path_data = "";
7178 }
7279
97104 bool Platform::FSCheckReady() { return true; }
98105 void Platform::FSCommit() {}
99106 void Platform::setScreenSize() {}
107 void Platform::setFullscreen(bool) {}
100108 void Platform::setExitEventFilter() {}
101109
102110
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)
116113 , movement_type(MapCollision::MOVE_FLYING)
117114 , target_range(0)
118115 , target_party(false)
116 , combat_range(0)
119117 , mod_accuracy_mode(-1)
120118 , mod_accuracy_value(100)
121119 , mod_crit_mode(-1)
210208 }
211209 else if (infile.key == "type") {
212210 // @ATTR effect.type|string|Defines the type of effect
213 effects.back().type = infile.val;
211 effects.back().type = Effect::getTypeFromString(infile.val);
214212 }
215213 else if (infile.key == "name") {
216214 // @ATTR effect.name|string|A displayed name that is shown when hovering the mouse over the effect icon.
275273
276274 bool clear_post_effects = true;
277275
278 int input_id = 0;
279 bool skippingEntry = false;
276 PowerID input_id = 0;
277 bool id_line;
280278
281279 while (infile.next()) {
282280 // id needs to be the first component of each power. That is how we write
283281 // data to the correct power.
284282 if (infile.key == "id") {
285283 // @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 }
284 id_line = true;
285 input_id = Parse::toPowerID(infile.val);
286 powers[input_id] = Power();
294287
295288 clear_post_effects = true;
296289 powers[input_id].is_empty = false;
297290
298291 continue;
299292 }
300 if (skippingEntry)
293 else id_line = false;
294
295 if (input_id < 1) {
296 if (id_line) infile.error("PowerManager: Power index out of bounds 1-%d, skipping power.", INT_MAX);
297 }
298 if (id_line)
301299 continue;
302300
303301 if (infile.key == "type") {
402400 else if (infile.key == "requires_item") {
403401 // @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.
404402 PowerRequiredItem pri;
405 pri.id = Parse::popFirstInt(infile.val);
403 pri.id = Parse::toItemID(Parse::popFirstString(infile.val));
406404 pri.quantity = Parse::toInt(Parse::popFirstString(infile.val), 1);
407405 pri.equipped = false;
408406 powers[input_id].required_items.push_back(pri);
410408 else if (infile.key == "requires_equipped_item") {
411409 // @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.
412410 PowerRequiredItem pri;
413 pri.id = Parse::popFirstInt(infile.val);
411 pri.id = Parse::toItemID(Parse::popFirstString(infile.val));
414412 pri.quantity = Parse::popFirstInt(infile.val);
415413 pri.equipped = true;
416414
432430 // @ATTR power.cooldown|duration|Specify the duration for cooldown of the power in 'ms' or 's'.
433431 powers[input_id].cooldown = Parse::toDuration(infile.val);
434432 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;
433 // @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.
434
435 std::string mode = Parse::popFirstString(infile.val);
436 std::string state_hp = Parse::popFirstString(infile.val);
437 std::string state_hp_val = Parse::popFirstString(infile.val);
438 std::string state_mp = Parse::popFirstString(infile.val);
439 std::string state_mp_val = Parse::popFirstString(infile.val);
440
441 powers[input_id].requires_max_hpmp.hp = state_hp_val.empty() ? -1 : Parse::toInt(state_hp_val);
442 powers[input_id].requires_max_hpmp.mp = state_mp_val.empty() ? -1 : Parse::toInt(state_mp_val);
443
444 if (state_hp == "percent") {
445 powers[input_id].requires_max_hpmp.hp_state = Power::HPMPSTATE_PERCENT;
446 }
447 else if (state_hp == "not_percent") {
448 powers[input_id].requires_max_hpmp.hp_state = Power::HPMPSTATE_NOT_PERCENT;
449 }
450 else if (state_hp == "ignore" || state_hp.empty()) {
451 powers[input_id].requires_max_hpmp.hp_state = Power::HPMPSTATE_IGNORE;
452 powers[input_id].requires_max_hpmp.hp = -1;
452453 }
453454 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;
455 infile.error("PowerManager: '%s' is not a valid hp/mp state. Use 'percent', 'not_percent', or 'ignore'.", state_hp.c_str());
456 }
457
458 if (state_mp == "percent") {
459 powers[input_id].requires_max_hpmp.mp_state = Power::HPMPSTATE_PERCENT;
460 }
461 else if (state_mp == "not_percent") {
462 powers[input_id].requires_max_hpmp.mp_state = Power::HPMPSTATE_NOT_PERCENT;
463 }
464 else if (state_mp == "ignore" || state_mp.empty()) {
465 powers[input_id].requires_max_hpmp.mp_state = Power::HPMPSTATE_IGNORE;
466 powers[input_id].requires_max_hpmp.mp = -1;
465467 }
466468 else {
467 infile.error("PowerManager: Please specify 'hp' or 'mp'.");
469 infile.error("PowerManager: '%s' is not a valid hp/mp state. Use 'percent', 'not_percent', or 'ignore'.", state_mp.c_str());
470 }
471
472 if (mode == "any") {
473 powers[input_id].requires_max_hpmp.mode = Power::HPMPSTATE_ANY;
474 }
475 else if (mode == "all") {
476 powers[input_id].requires_max_hpmp.mode = Power::HPMPSTATE_ALL;
477 }
478 else if (mode == "hp") {
479 // TODO deprecated
480 infile.error("PowerManager: 'hp' has been deprecated. Use 'all' or 'any'.");
481
482 powers[input_id].requires_max_hpmp.mode = Power::HPMPSTATE_ALL;
483 powers[input_id].requires_max_hpmp.mp_state = Power::HPMPSTATE_IGNORE;
484 powers[input_id].requires_max_hpmp.mp = -1;
485 }
486 else if (mode == "mp") {
487 // TODO deprecated
488 infile.error("PowerManager: 'mp' has been deprecated. Use 'any' or 'all'.");
489
490 // use the HP values for MP, then ignore the HP stat
491 powers[input_id].requires_max_hpmp.mode = Power::HPMPSTATE_ALL;
492 powers[input_id].requires_max_hpmp.mp_state = powers[input_id].requires_max_hpmp.hp_state;
493 powers[input_id].requires_max_hpmp.mp = powers[input_id].requires_max_hpmp.hp;
494 powers[input_id].requires_max_hpmp.hp_state = Power::HPMPSTATE_IGNORE;
495 powers[input_id].requires_max_hpmp.hp = -1;
496 }
497 else {
498 infile.error("PowerManager: Please specify 'any' or 'all'.");
468499 }
469500 }
470501 // animation info
685716 }
686717 }
687718 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.
719 // @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.
689720 powers[input_id].post_power = Parse::popFirstInt(infile.val);
690721 std::string chance = Parse::popFirstString(infile.val);
691722 if (!chance.empty()) {
863894 // @ATTR power.target_nearest|float|Will automatically target the nearest enemy within the specified range.
864895 powers[input_id].target_nearest = Parse::toFloat(infile.val);
865896 }
897 else if (infile.key == "disable_equip_slots") {
898 // @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.
899 powers[input_id].disable_equip_slots.clear();
900 std::string slot_type = Parse::popFirstString(infile.val);
901
902 while (slot_type != "") {
903 powers[input_id].disable_equip_slots.push_back(slot_type);
904 slot_type = Parse::popFirstString(infile.val);
905 }
906 }
866907
867908 else infile.error("PowerManager: '%s' is not a valid key", infile.key.c_str());
868909 }
869910 infile.close();
870911
871 for (size_t i=0; i<powers.size(); ++i) {
912 std::map<PowerID, Power>::iterator power_it;
913 for (power_it = powers.begin(); power_it != powers.end(); ++power_it) {
914 Power& power = power_it->second;
915
872916 // 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);
917 power.wall_power = verifyID(power.wall_power, NULL, ALLOW_ZERO_ID);
918 power.post_power = verifyID(power.post_power, NULL, ALLOW_ZERO_ID);
875919
876920 // calculate effective combat range
877 setCombatRange(i);
921 {
922 // TODO apparently, missiles and repeaters don't need to have "use_hazard=true"?
923 if (!( (!power.use_hazard && power.type == Power::TYPE_FIXED) || power.no_attack) ) {
924 if (power.type == Power::TYPE_FIXED) {
925 if (power.relative_pos) {
926 power.combat_range += power.charge_speed * static_cast<float>(power.lifespan);
927 }
928 if (power.starting_pos == Power::STARTING_POS_TARGET) {
929 power.combat_range = FLT_MAX - power.radius;
930 }
931 }
932 else if (power.type == Power::TYPE_MISSILE) {
933 power.combat_range += power.speed * static_cast<float>(power.lifespan);
934 }
935 else if (power.type == Power::TYPE_REPEATER) {
936 power.combat_range += power.speed * static_cast<float>(power.count);
937 }
938
939 power.combat_range += (power.radius / 2.f);
940 }
941 }
878942 }
879943 }
880944
9411005 /**
9421006 * Check if the target is valid (not an empty area or a wall)
9431007 */
944 bool PowerManager::hasValidTarget(int power_index, StatBlock *src_stats, const FPoint& target) {
1008 bool PowerManager::hasValidTarget(PowerID power_index, StatBlock *src_stats, const FPoint& target) {
9451009
9461010 if (!collider) return false;
9471011
9681032 * @param target Aim position in map coordinates
9691033 * @param haz A newly-initialized hazard
9701034 */
971 void PowerManager::initHazard(int power_index, StatBlock *src_stats, const FPoint& target, Hazard *haz) {
1035 void PowerManager::initHazard(PowerID power_index, StatBlock *src_stats, const FPoint& target, Hazard *haz) {
9721036
9731037 //the hazard holds the statblock of its source
9741038 haz->src_stats = src_stats;
10441108 * Any attack-based effects are handled by hazards.
10451109 * Self-enhancements (buffs) are handled by this function.
10461110 */
1047 void PowerManager::buff(int power_index, StatBlock *src_stats, const FPoint& target) {
1111 void PowerManager::buff(PowerID power_index, StatBlock *src_stats, const FPoint& target) {
10481112
10491113 // teleport to the target location
10501114 if (powers[power_index].buff_teleport) {
10951159 * Play the sound effect for this power
10961160 * Equipped items may have unique sounds
10971161 */
1098 void PowerManager::playSound(int power_index) {
1162 void PowerManager::playSound(PowerID power_index) {
10991163 if (powers[power_index].sfx_index != -1)
11001164 snd->play(sfx[powers[power_index].sfx_index], snd->DEFAULT_CHANNEL, snd->NO_POS, !snd->LOOP);
11011165 }
11021166
1103 bool PowerManager::effect(StatBlock *target_stats, StatBlock *caster_stats, int power_index, int source_type) {
1167 bool PowerManager::effect(StatBlock *target_stats, StatBlock *caster_stats, PowerID power_index, int source_type) {
11041168 const Power& pwr = powers[power_index];
11051169 for (unsigned i=0; i<powers[power_index].post_effects.size(); i++) {
11061170 const PostEffect& pe = pwr.post_effects[i];
11151179 int duration = pe.duration;
11161180
11171181 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")))
1182 if (dest_stats->hp <= 0 && !(effect_data.type == Effect::REVIVE || (effect_data.type == Effect::NONE && pe.id == "revive")))
11191183 continue;
11201184
11211185 if (effect_ptr != NULL) {
11221186 // effects loaded from powers/effects.txt
11231187 effect_data = (*effect_ptr);
11241188
1125 if (effect_data.type == "shield") {
1189 if (effect_data.type == Effect::SHIELD) {
11261190 if (pwr.base_damage == eset->damage_types.list.size())
11271191 continue;
11281192
11381202
11391203 comb->addString(msg->get("+%d Shield",magnitude), dest_stats->pos, CombatText::MSG_BUFF);
11401204 }
1141 else if (effect_data.type == "heal") {
1205 else if (effect_data.type == Effect::HEAL) {
11421206 if (pwr.base_damage == eset->damage_types.list.size())
11431207 continue;
11441208
11561220 dest_stats->hp += magnitude;
11571221 if (dest_stats->hp > dest_stats->get(Stats::HP_MAX)) dest_stats->hp = dest_stats->get(Stats::HP_MAX);
11581222 }
1159 else if (effect_data.type == "knockback") {
1223 else if (effect_data.type == Effect::KNOCKBACK) {
11601224 if (dest_stats->speed_default == 0) {
11611225 // enemies that can't move can't be knocked back
11621226 continue;
11671231 }
11681232 else {
11691233 // all other effects
1170 effect_data.id = effect_data.type = pe.id;
1234 effect_data.id = pe.id;
1235 effect_data.type = Effect::getTypeFromString(pe.id);
11711236 }
11721237
11731238 dest_stats->effects.addEffect(effect_data, duration, magnitude, source_type, power_index);
11841249 * @param target The mouse cursor position in map coordinates
11851250 * return boolean true if successful
11861251 */
1187 bool PowerManager::fixed(int power_index, StatBlock *src_stats, const FPoint& target) {
1252 bool PowerManager::fixed(PowerID power_index, StatBlock *src_stats, const FPoint& target) {
11881253
11891254 if (powers[power_index].use_hazard) {
11901255 int delay_iterator = 0;
12201285 * @param target The mouse cursor position in map coordinates
12211286 * return boolean true if successful
12221287 */
1223 bool PowerManager::missile(int power_index, StatBlock *src_stats, const FPoint& target) {
1288 bool PowerManager::missile(PowerID power_index, StatBlock *src_stats, const FPoint& target) {
12241289 FPoint src;
12251290 if (powers[power_index].starting_pos == Power::STARTING_POS_TARGET) {
12261291 src = target;
12751340 /**
12761341 * Repeaters are multiple hazards that spawn in a straight line
12771342 */
1278 bool PowerManager::repeater(int power_index, StatBlock *src_stats, const FPoint& target) {
1343 bool PowerManager::repeater(PowerID power_index, StatBlock *src_stats, const FPoint& target) {
12791344
12801345 payPowerCost(power_index, src_stats);
12811346
13311396 /**
13321397 * Spawn a creature. Does not create a hazard
13331398 */
1334 bool PowerManager::spawn(int power_index, StatBlock *src_stats, const FPoint& target) {
1399 bool PowerManager::spawn(PowerID power_index, StatBlock *src_stats, const FPoint& target) {
13351400 Map_Enemy espawn;
13361401 espawn.type = powers[power_index].spawn_type;
13371402 espawn.summoner = src_stats;
13871452 /**
13881453 * Transform into a creature. Fully replaces entity characteristics
13891454 */
1390 bool PowerManager::transform(int power_index, StatBlock *src_stats, const FPoint& target) {
1455 bool PowerManager::transform(PowerID power_index, StatBlock *src_stats, const FPoint& target) {
13911456 // locking the actionbar prevents power usage until after the hero is transformed
13921457 inpt->lockActionBar();
13931458
14431508 * Stationary blocking with optional buffs/debuffs
14441509 * Only the hero can block
14451510 */
1446 bool PowerManager::block(int power_index, StatBlock *src_stats) {
1511 bool PowerManager::block(PowerID power_index, StatBlock *src_stats) {
14471512 // if the hero is blocking, we can't activate any more blocking powers
14481513 if (src_stats->effects.triggered_block)
14491514 return false;
14641529 return true;
14651530 }
14661531
1532 PowerID PowerManager::checkReplaceByEffect(PowerID power_index, StatBlock *src_stats) {
1533 for (size_t i = 0; i < powers[power_index].replace_by_effect.size(); ++i) {
1534 if (src_stats->effects.hasEffect(powers[power_index].replace_by_effect[i].effect_id, powers[power_index].replace_by_effect[i].count)) {
1535 return powers[power_index].replace_by_effect[i].power_id;
1536 }
1537 }
1538
1539 return power_index;
1540 }
1541
14671542 /**
14681543 * Activate is basically a switch/redirect to the appropriate function
14691544 */
1470 bool PowerManager::activate(int power_index, StatBlock *src_stats, const FPoint& target) {
1471 if (static_cast<unsigned>(power_index) >= powers.size())
1545 bool PowerManager::activate(PowerID power_index, StatBlock *src_stats, const FPoint& target) {
1546 if (powers[power_index].is_empty)
14721547 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 }
14791548
14801549 if (src_stats->hero) {
14811550 if (powers[power_index].requires_mp > src_stats->mp)
15271596 /**
15281597 * pay costs, i.e. remove mana or items.
15291598 */
1530 void PowerManager::payPowerCost(int power_index, StatBlock *src_stats) {
1599 void PowerManager::payPowerCost(PowerID power_index, StatBlock *src_stats) {
15311600 if (src_stats) {
15321601 if (src_stats->hero) {
15331602 src_stats->mp -= powers[power_index].requires_mp;
15531622 }
15541623 }
15551624 }
1556 src_stats->hp -= powers[power_index].requires_hp;
1557 src_stats->hp = (src_stats->hp < 0 ? 0 : src_stats->hp);
1625 if (powers[power_index].requires_hp > 0) {
1626 src_stats->takeDamage(powers[power_index].requires_hp, !StatBlock::TAKE_DMG_CRIT, Power::SOURCE_TYPE_NEUTRAL);
1627 }
15581628
15591629 // consume corpses
15601630 if (powers[power_index].requires_corpse && powers[power_index].remove_corpse && src_stats->target_corpse) {
15681638 * Activate an entity's passive powers
15691639 */
15701640 void PowerManager::activatePassives(StatBlock *src_stats) {
1641 bool activated_passive = false;
15711642 bool triggered_others = false;
15721643 // unlocked powers
15731644 for (unsigned i=0; i<src_stats->powers_passive.size(); i++) {
1574 activatePassiveByTrigger(src_stats->powers_passive[i], src_stats, triggered_others);
1645 activated_passive |= activatePassiveByTrigger(src_stats->powers_passive[i], src_stats, triggered_others);
15751646 }
15761647
15771648 // item powers
15781649 for (unsigned i=0; i<src_stats->powers_list_items.size(); i++) {
1579 activatePassiveByTrigger(src_stats->powers_list_items[i], src_stats, triggered_others);
1650 activated_passive |= activatePassiveByTrigger(src_stats->powers_list_items[i], src_stats, triggered_others);
15801651 }
15811652
15821653 // Only trigger normal passives once
1583 if (triggered_others) src_stats->effects.triggered_others = true;
1654 if (triggered_others)
1655 src_stats->effects.triggered_others = true;
15841656
15851657 // the hit/death triggers can be triggered more than once, so reset them here
15861658 // the block trigger is handled in the Avatar class
15881660 src_stats->effects.triggered_death = false;
15891661
15901662 activatePassivePostPowers(src_stats);
1591 }
1592
1593 void PowerManager::activatePassiveByTrigger(int power_id, StatBlock *src_stats, bool& triggered_others) {
1663
1664 // passive powers can lock equipment slots, so update equipment here
1665 if (activated_passive && src_stats->hero)
1666 menu->inv->applyEquipment();
1667 }
1668
1669 bool PowerManager::activatePassiveByTrigger(PowerID power_id, StatBlock *src_stats, bool& triggered_others) {
15941670 if (powers[power_id].passive) {
15951671 int trigger = powers[power_id].passive_trigger;
15961672
15971673 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;
1674 if (src_stats->effects.triggered_others)
1675 return false;
1676 else
1677 triggered_others = true;
1678 }
1679 else if (trigger == Power::TRIGGER_BLOCK && !src_stats->effects.triggered_block)
1680 return false;
1681 else if (trigger == Power::TRIGGER_HIT && !src_stats->effects.triggered_hit)
1682 return false;
16031683 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;
1684 if (src_stats->hp > src_stats->get(Stats::HP_MAX)/2)
1685 return false;
1686 else
1687 src_stats->effects.triggered_halfdeath = true;
16061688 }
16071689 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;
1690 if (!src_stats->in_combat)
1691 return false;
1692 else
1693 src_stats->effects.triggered_joincombat = true;
1694 }
1695 else if (trigger == Power::TRIGGER_DEATH && !src_stats->effects.triggered_death) {
1696 return false;
1697 }
16121698
16131699 activate(power_id, src_stats, src_stats->pos);
16141700 src_stats->refresh_stats = true;
16151701
1616 int post_power = powers[power_id].post_power;
1702 PowerID post_power = powers[power_id].post_power;
16171703 if (post_power > 0) {
16181704 src_stats->setPowerCooldown(post_power, powers[post_power].cooldown);
16191705 }
1620 }
1706
1707 return true;
1708 }
1709 return false;
16211710 }
16221711
16231712 /**
16241713 * Activate a single passive
16251714 * this is used when unlocking powers in MenuPowers
16261715 */
1627 void PowerManager::activateSinglePassive(StatBlock *src_stats, int id) {
1716 void PowerManager::activateSinglePassive(StatBlock *src_stats, PowerID id) {
16281717 if (!powers[id].passive) return;
16291718
16301719 if (powers[id].passive_trigger == -1) {
16321721 src_stats->refresh_stats = true;
16331722 src_stats->effects.triggered_others = true;
16341723
1635 int post_power = powers[id].post_power;
1724 PowerID post_power = powers[id].post_power;
16361725 if (post_power > 0) {
16371726 src_stats->setPowerCooldown(post_power, powers[post_power].cooldown);
16381727 }
16441733 */
16451734 void PowerManager::activatePassivePostPowers(StatBlock *src_stats) {
16461735 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;
1648 if (post_power <= 0)
1736 const PowerID post_power = powers[src_stats->powers_passive[i]].post_power;
1737 if (post_power == 0)
16491738 continue;
16501739
16511740 if (powers[post_power].new_state != Power::STATE_INSTANT)
1741 continue;
1742
1743 // blocking powers use a passive trigger, but we only want to activate their post_power when the blocker takes a hit
1744 if (powers[src_stats->powers_passive[i]].type == Power::TYPE_BLOCK)
16521745 continue;
16531746
16541747 if (src_stats->getPowerCooldown(post_power) == 0 && src_stats->canUsePower(post_power, !StatBlock::CAN_USE_PASSIVE)) {
16691762 return NULL;
16701763 }
16711764
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()) {
1765 PowerID PowerManager::verifyID(PowerID power_id, FileParser* infile, bool allow_zero) {
1766 if (!allow_zero && power_id == 0) {
16751767 if (infile != NULL)
16761768 infile->error("PowerManager: %d is not a valid power id.", power_id);
16771769 else
17091801 if (!items->requirementsMet(src_stats, pow.required_items[i].id)) {
17101802 return false;
17111803 }
1712 if (!menu->inv->inventory[MenuInventory::CARRIED].contain(pow.required_items[i].id, pow.required_items[i].quantity)) {
1804
1805 // Cap the lower bound of quantity to 1.
1806 // We can set required quantity to 0 in order to not consume the item,
1807 // but checking for presence of the item requires >0 quantity
1808 int quantity = std::max(1, pow.required_items[i].quantity);
1809 if (!menu->inv->inventory[MenuInventory::CARRIED].contain(pow.required_items[i].id, quantity)) {
17131810 return false;
17141811 }
17151812 }
17191816 return true;
17201817 }
17211818
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) {
1754 Power& pow = powers[power_index];
1819 bool PowerManager::checkRequiredMaxHPMP(const Power &pow, const StatBlock *src_stats) {
1820 bool hp_ok = true;
1821 bool mp_ok = true;
1822
1823 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)
1824 hp_ok = false;
1825 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)
1826 hp_ok = false;
1827
1828 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)
1829 mp_ok = false;
1830 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)
1831 mp_ok = false;
1832
1833 if (pow.requires_max_hpmp.mode == Power::HPMPSTATE_ALL)
1834 return hp_ok && mp_ok;
1835 else if (pow.requires_max_hpmp.mode == Power::HPMPSTATE_ANY)
1836 return hp_ok || mp_ok;
1837 else
1838 return true;
1839 }
1840
1841 bool PowerManager::checkCombatRange(PowerID power_index, StatBlock* src_stats, FPoint target) {
1842 const Power& pow = powers[power_index];
17551843
17561844 if (pow.combat_range == 0)
17571845 return false;
17711859 }
17721860
17731861 PowerManager::~PowerManager() {
1774 for (size_t i = 0; i < powers.size(); ++i) {
1775 if (powers[i].animation_name.empty())
1862 std::map<PowerID, Power>::iterator power_it;
1863 for (power_it = powers.begin(); power_it != powers.end(); ++power_it) {
1864 if (power_it->second.animation_name.empty())
17761865 continue;
17771866
1778 anim->decreaseCount(powers[i].animation_name);
1779
1780 if (power_animations[i])
1781 delete power_animations[i];
1867 anim->decreaseCount(power_it->second.animation_name);
1868
1869 if (power_animations[power_it->first])
1870 delete power_animations[power_it->first];
17821871 }
17831872
17841873 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)
163169 {
164 // don't bother initializing gamma_r, gamma_g, gamma_b
165 // it is up to the implemented render device to initialize them
166 // for example, SDL_GetWindowGammaRamp() can fill them in
167170 }
168171
169172 RenderDevice::~RenderDevice() {
173176 int status = createContextInternal();
174177
175178 if (status == -1) {
179 Utils::logError("RenderDevice: createContext() failed, trying previous settings.");
176180 // try previous setting first
177181 settings->fullscreen = fullscreen;
178182 settings->hwsurface = hwsurface;
183187 }
184188
185189 if (status == -1) {
190 Utils::logError("RenderDevice: createContext() failed, disabling all options.");
186191 // last resort, try turning everything off
187192 settings->fullscreen = false;
188193 settings->hwsurface = false;
329334 settings->view_h = temp_screen_h;
330335
331336 // scale virtual height when outside of VIRTUAL_HEIGHTS range
337 unsigned short max_render_size;
338 if (settings->max_render_size == 0)
339 max_render_size = eset->resolutions.virtual_heights.back();
340 else
341 max_render_size = settings->max_render_size;
342
332343 if (!eset->resolutions.virtual_heights.empty()) {
333344 if (temp_screen_h < eset->resolutions.virtual_heights.front())
334345 settings->view_h = eset->resolutions.virtual_heights.front();
335 else if (temp_screen_h >= eset->resolutions.virtual_heights.back())
336 settings->view_h = eset->resolutions.virtual_heights.back();
346 else if (temp_screen_h >= max_render_size)
347 settings->view_h = max_render_size;
337348 }
338349
339350 settings->view_h_half = settings->view_h / 2;
361372 // print out the color to avoid unused variable compiler warning
362373 Utils::logInfo("RenderDevice: Trying to set background color to (%d,%d,%d,%d).", color.r, color.g, color.b, color.a);
363374 Utils::logError("RenderDevice: Renderer does not support setting background color!");
375 }
376
377 void RenderDevice::setFullscreen(bool enable_fullscreen) {
378 Utils::logInfo("RenderDevice: Trying to set fullscreen=%d, without recreating the rendering context, but setFullscreen() is not implemented for this renderer.", enable_fullscreen);
364379 }
365380
366381 void RenderDevice::drawEllipse(int x0, int y0, int x1, int y1, const Color& color, float step) {
385400 lasty = cury;
386401 }
387402 }
403
404 unsigned short RenderDevice::getRefreshRate() {
405 Utils::logInfo("RenderDevice: getRefreshRate() not implemented");
406 return 0;
407 }
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);
232 virtual unsigned short getRefreshRate();
230233
231234 bool reloadGraphics();
232235
251254 bool texture_filter;
252255 bool ignore_texture_filter;
253256 Point min_screen;
257 bool destructive_fullscreen;
254258
255259 bool is_initialized;
256260 bool reload_graphics;
260264 Rect m_clip;
261265 Rect m_dest;
262266
263 /* Stores the system gamma levels so they can be restored later */
264 uint16_t gamma_r[256];
265 uint16_t gamma_g[256];
266 uint16_t gamma_b[256];
267
268267 private:
269268 typedef std::map<std::string, Image *> IMAGE_CACHE_CONTAINER;
270269 typedef IMAGE_CACHE_CONTAINER::iterator IMAGE_CACHE_CONTAINER_ITER;
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
3030 #include "InputState.h"
3131 #include "MessageEngine.h"
3232 #include "ModManager.h"
33 #include "Platform.h"
3334 #include "SharedResources.h"
3435 #include "Settings.h"
3536
7778 */
7879 void SDLHardwareImage::drawPixel(int x, int y, const Color& color) {
7980 if (!surface) return;
81
82 if (x < 0 || y < 0 || x >= getWidth() || y >= getHeight())
83 return;
8084
8185 if (pixel_batch_surface) {
8286 // Taken from SDLSoftwareImage::drawPixel()
126130 SDL_SetRenderTarget(renderer, NULL);
127131 }
128132 }
133
134 void SDLHardwareImage::drawLine(int x0, int y0, int x1, int y1, const Color& color) {
135 SDL_SetRenderTarget(renderer, surface);
136 SDL_SetTextureBlendMode(surface, SDL_BLENDMODE_BLEND);
137 SDL_SetRenderDrawColor(renderer, color.r, color.g, color.b, color.a);
138 SDL_RenderDrawLine(renderer, x0, y0, x1, y1);
139 SDL_SetRenderTarget(renderer, NULL);
140 }
141
129142
130143 /**
131144 * Creates a non-accelerated SDL_Surface as a pixel buffer
207220 , texture(NULL)
208221 , titlebar_icon(NULL)
209222 , title(NULL)
210 , background_color(0,0,0,0)
223 , background_color(0,0,0,255)
211224 {
212225 Utils::logInfo("Using Render Device: SDLHardwareRenderDevice (hardware, SDL 2, %s)", SDL_GetCurrentVideoDriver());
213226
224237 // we only support display #0
225238 Utils::logInfo("RenderDevice: %d display(s), using display 0 (%dx%d @ %dhz)", SDL_GetNumVideoDisplays(), desktop.w, desktop.h, desktop.refresh_rate);
226239 }
240
241 // we store the gamma when launching the game in case we need to reset it
242 // these are initilized to 0 since we set them properly with SDL_GetWindowGammaRamp() later
243 for (int i = 0; i < 256; ++i) {
244 gamma_r[i] = 0;
245 gamma_g[i] = 0;
246 gamma_b[i] = 0;
247 }
227248 }
228249
229250 int SDLHardwareRenderDevice::createContextInternal() {
230 bool settings_changed = (fullscreen != settings->fullscreen ||
251 #ifdef _WIN32
252 // We make heavy use of SDL_TEXTUREACCESS_TARGET for things such as text and the minimap
253 // If we use the 'direct3d' backend on Windows, these textures get lost on window resizing events
254 // So to bypass this, we force 'opengl' on Windows
255 SDL_SetHint(SDL_HINT_RENDER_DRIVER, "opengl");
256 #endif
257
258 bool settings_changed = ((fullscreen != settings->fullscreen && destructive_fullscreen) ||
231259 hwsurface != settings->hwsurface ||
232260 vsync != settings->vsync ||
233261 texture_filter != settings->texture_filter ||
469497 }
470498
471499 void SDLHardwareRenderDevice::blankScreen() {
472 SDL_SetRenderDrawColor(renderer, background_color.r, background_color.g, background_color.b, background_color.a);
500 SDL_SetRenderDrawColor(renderer, 0, 0, 0, 255);
473501 SDL_SetRenderTarget(renderer, NULL);
474502 SDL_RenderClear(renderer);
503 SDL_SetRenderDrawColor(renderer, background_color.r, background_color.g, background_color.b, background_color.a);
475504 SDL_SetRenderTarget(renderer, texture);
476505 SDL_RenderClear(renderer);
477506 return;
623652
624653 void SDLHardwareRenderDevice::setBackgroundColor(Color color) {
625654 background_color = color;
626 }
655 background_color.a = 255; // always 100% alpha
656 }
657
658 void SDLHardwareRenderDevice::setFullscreen(bool enable_fullscreen) {
659 if (!destructive_fullscreen) {
660 if (enable_fullscreen) {
661 if (platform.fullscreen_bypass) {
662 platform.setFullscreen(true);
663 }
664 else {
665 SDL_SetWindowFullscreen(window, SDL_WINDOW_FULLSCREEN_DESKTOP);
666 }
667 fullscreen = true;
668 }
669 else if (fullscreen) {
670 if (platform.fullscreen_bypass) {
671 platform.setFullscreen(false);
672 }
673 else {
674 SDL_SetWindowFullscreen(window, 0);
675
676 // restore window to the default size
677 SDL_SetWindowMinimumSize(window, eset->resolutions.min_screen_w, eset->resolutions.min_screen_h);
678 SDL_SetWindowSize(window, eset->resolutions.min_screen_w, eset->resolutions.min_screen_h);
679 windowResize();
680 // setting minimum size might move the window, so set position again
681 SDL_SetWindowPosition(window, SDL_WINDOWPOS_CENTERED, SDL_WINDOWPOS_CENTERED);
682 }
683 fullscreen = false;
684 }
685 windowResize();
686 }
687 }
688
689 unsigned short SDLHardwareRenderDevice::getRefreshRate() {
690 SDL_DisplayMode mode;
691 SDL_GetCurrentDisplayMode(0, &mode);
692 return static_cast<unsigned short>(mode.refresh_rate);
693 }
694
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();
7981 void updateTitleBar();
82 unsigned short getRefreshRate();
8083
8184 Image* loadImage(const std::string& filename, int error_type);
8285
9396 SDL_Surface* titlebar_icon;
9497 char* title;
9598 Color background_color;
99
100 /* Stores the system gamma levels so they can be restored later */
101 uint16_t gamma_r[256];
102 uint16_t gamma_g[256];
103 uint16_t gamma_b[256];
96104 };
97105
98106 #endif
113113 binding[Input::LEFT] = SDLK_a;
114114 binding[Input::RIGHT] = SDLK_d;
115115
116 binding_alt[Input::CANCEL] = SDLK_ESCAPE;
116 if (platform.needs_alt_escape_key) {
117 // web browsers reserve Escape for exiting fullscreen, so we provide an alternate binding
118 // backslash is used due to its general proximity to Enter on both ANSI and ISO layouts
119 binding_alt[Input::CANCEL] = SDLK_BACKSLASH;
120 }
121 else {
122 binding_alt[Input::CANCEL] = SDLK_ESCAPE;
123 }
117124 binding_alt[Input::UP] = SDLK_UP;
118125 binding_alt[Input::DOWN] = SDLK_DOWN;
119126 binding_alt[Input::LEFT] = SDLK_LEFT;
153160 binding[Input::ACTIONBAR_USE] = binding_alt[Input::ACTIONBAR_USE] = SDLK_n;
154161
155162 binding[Input::DEVELOPER_MENU] = binding_alt[Input::DEVELOPER_MENU] = SDLK_F5;
163
164 // Convert SDL_Keycode to SDL_Scancode, skip mouse binding
165 for (int key=0; key<KEY_COUNT; key++) {
166 if (SDL_GetScancodeFromKey(binding[key]) > 0) binding[key] = SDL_GetScancodeFromKey(binding[key]);
167 if (SDL_GetScancodeFromKey(binding_alt[key]) > 0) binding_alt[key] = SDL_GetScancodeFromKey(binding_alt[key]);
168 }
169 }
170
171 void SDLInputState::setFixedKeyBindings() {
172 validateFixedKeyBinding(Input::MAIN1, (SDL_BUTTON_LEFT+MOUSE_BIND_OFFSET) * (-1), InputState::BINDING_DEFAULT);
173
174 validateFixedKeyBinding(Input::CTRL, SDLK_LCTRL, InputState::BINDING_DEFAULT);
175 validateFixedKeyBinding(Input::CTRL, SDLK_RCTRL, InputState::BINDING_ALT);
176 binding_joy[Input::CTRL] = -1;
177
178 validateFixedKeyBinding(Input::SHIFT, SDLK_LSHIFT, InputState::BINDING_DEFAULT);
179 validateFixedKeyBinding(Input::SHIFT, SDLK_RSHIFT, InputState::BINDING_ALT);
180 binding_joy[Input::SHIFT] = -1;
181
182 validateFixedKeyBinding(Input::DEL, SDLK_DELETE, InputState::BINDING_DEFAULT);
183 validateFixedKeyBinding(Input::DEL, SDLK_BACKSPACE, InputState::BINDING_ALT);
184 binding_joy[Input::DEL] = -1;
185
186 validateFixedKeyBinding(Input::ALT, SDLK_LALT, InputState::BINDING_DEFAULT);
187 validateFixedKeyBinding(Input::ALT, SDLK_RALT, InputState::BINDING_ALT);
188 binding_joy[Input::ALT] = -1;
189 }
190
191 void SDLInputState::validateFixedKeyBinding(int action, int key, int bindings_list) {
192 if (bindings_list != InputState::BINDING_DEFAULT && bindings_list != InputState::BINDING_ALT)
193 return;
194
195 int scan_key = (key < 0 ? key : SDL_GetScancodeFromKey(key));
196
197 for (int i = 0; i < KEY_COUNT; ++i) {
198 if (i == action) {
199 if (bindings_list == InputState::BINDING_DEFAULT)
200 binding[action] = scan_key;
201 else if (bindings_list == InputState::BINDING_ALT)
202 binding_alt[action] = scan_key;
203
204 continue;
205 }
206
207 if (binding[i] == scan_key)
208 binding[i] = -1;
209
210 if (binding_alt[i] == scan_key)
211 binding_alt[i] = -1;
212 }
156213 }
157214
158215 void SDLInputState::handle() {
177234 switch (event.type) {
178235 case SDL_MOUSEMOTION:
179236 last_is_joystick = false;
180 if (!platform.is_mobile_device) {
181 mouse = scaleMouse(event.motion.x, event.motion.y);
182 curs->show_cursor = true;
183 }
237 mouse = scaleMouse(event.motion.x, event.motion.y);
238 curs->show_cursor = true;
184239 break;
185240 case SDL_MOUSEWHEEL:
186241 last_is_joystick = false;
187 if (!platform.is_mobile_device) {
188 if (event.wheel.y > 0) {
189 scroll_up = true;
190 } else if (event.wheel.y < 0) {
191 scroll_down = true;
192 }
242 if (event.wheel.y > 0) {
243 scroll_up = true;
244 } else if (event.wheel.y < 0) {
245 scroll_down = true;
193246 }
194247 break;
195248 case SDL_MOUSEBUTTONDOWN:
196249 last_is_joystick = false;
197 if (!platform.is_mobile_device) {
198 mouse = scaleMouse(event.button.x, event.button.y);
199 bind_button = (event.button.button + MOUSE_BIND_OFFSET) * (-1);
200 for (int key=0; key<KEY_COUNT; key++) {
201 if (bind_button == binding[key] || bind_button == binding_alt[key]) {
202 pressing[key] = true;
203 un_press[key] = false;
204 }
250 mouse = scaleMouse(event.button.x, event.button.y);
251 bind_button = (event.button.button + MOUSE_BIND_OFFSET) * (-1);
252 for (int key=0; key<KEY_COUNT; key++) {
253 if (bind_button == binding[key] || bind_button == binding_alt[key]) {
254 pressing[key] = true;
255 un_press[key] = false;
205256 }
206257 }
207258 break;
208259 case SDL_MOUSEBUTTONUP:
209260 last_is_joystick = false;
210 if (!platform.is_mobile_device) {
211 mouse = scaleMouse(event.button.x, event.button.y);
212 bind_button = (event.button.button + MOUSE_BIND_OFFSET) * (-1);
213 for (int key=0; key<KEY_COUNT; key++) {
214 if (bind_button == binding[key] || bind_button == binding_alt[key]) {
215 un_press[key] = true;
216 }
217 }
218 last_button = bind_button;
219 }
261 mouse = scaleMouse(event.button.x, event.button.y);
262 bind_button = (event.button.button + MOUSE_BIND_OFFSET) * (-1);
263 for (int key=0; key<KEY_COUNT; key++) {
264 if (bind_button == binding[key] || bind_button == binding_alt[key]) {
265 un_press[key] = true;
266 }
267 }
268 last_button = bind_button;
220269 break;
221270 case SDL_WINDOWEVENT:
222271 if (event.window.event == SDL_WINDOWEVENT_SIZE_CHANGED) {
244293 // NOTE Should these be limited to mobile only?
245294 case SDL_FINGERMOTION:
246295 last_is_joystick = false;
247 if (platform.is_mobile_device) {
296 if (settings->touchscreen) {
297 curs->show_cursor = false;
248298 mouse.x = static_cast<int>((event.tfinger.x + event.tfinger.dx) * settings->view_w);
249299 mouse.y = static_cast<int>((event.tfinger.y + event.tfinger.dy) * settings->view_h);
250
251 if (event.tfinger.dy > 0) {
300 pressing[Input::MAIN1] = true;
301 un_press[Input::MAIN1] = false;
302
303 if (event.tfinger.dy > 0.005) {
252304 scroll_up = true;
253 } else if (event.tfinger.dy < 0) {
305 } else if (event.tfinger.dy < -0.005) {
254306 scroll_down = true;
255307 }
256308
264316 break;
265317 case SDL_FINGERDOWN:
266318 last_is_joystick = false;
267 if (platform.is_mobile_device) {
319 if (settings->touchscreen) {
320 curs->show_cursor = false;
268321 touch_locked = true;
269322 mouse.x = static_cast<int>(event.tfinger.x * settings->view_w);
270323 mouse.y = static_cast<int>(event.tfinger.y * settings->view_h);
280333 break;
281334 case SDL_FINGERUP:
282335 last_is_joystick = false;
283 if (platform.is_mobile_device) {
336 if (settings->touchscreen) {
337 // MAIN1 might have been set to un-press from a SDL_MOUSEBUTTONUP event
338 un_press[Input::MAIN1] = false;
339
340 curs->show_cursor = false;
284341 for (size_t i = 0; i < touch_fingers.size(); ++i) {
285342 if (touch_fingers[i].id == event.tfinger.fingerId) {
286343 touch_fingers.erase(touch_fingers.begin() + i);
304361 last_is_joystick = false;
305362
306363 for (int key=0; key<KEY_COUNT; key++) {
307 if (event.key.keysym.sym == binding[key] || event.key.keysym.sym == binding_alt[key]) {
364 if (event.key.keysym.scancode == binding[key] || event.key.keysym.scancode == binding_alt[key]) {
308365 pressing[key] = true;
309366 un_press[key] = false;
310367 }
318375 last_is_joystick = false;
319376
320377 for (int key=0; key<KEY_COUNT; key++) {
321 if (event.key.keysym.sym == binding[key] || event.key.keysym.sym == binding_alt[key]) {
378 if (event.key.keysym.scancode == binding[key] || event.key.keysym.scancode == binding_alt[key]) {
322379 un_press[key] = true;
323380 }
324381 }
325 last_key = event.key.keysym.sym;
382 last_key = event.key.keysym.scancode;
326383
327384 if (event.key.keysym.sym == SDLK_UP) pressing_up = false;
328385 if (event.key.keysym.sym == SDLK_DOWN) pressing_down = false;
517574 break;
518575 case SDL_QUIT:
519576 done = 1;
577 // Clear inputs when quit is triggered.
578 // Doing this prevents unintended actions being triggered when exiting via an OS keyboard shortcut.
579 // 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.
580 for (int key=0; key<KEY_COUNT; key++) {
581 pressing[key] = false;
582 un_press[key] = false;
583 lock[key] = false;
584 }
520585 break;
521586 default:
522587 break;
575640 return std::string(SDL_JoystickNameForIndex(index));
576641 }
577642
578 std::string SDLInputState::getKeyName(int key) {
643 std::string SDLInputState::getKeyName(int key, bool get_short_string) {
644 key = SDL_GetKeyFromScancode(static_cast<SDL_Scancode>(key));
645
579646 // 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");
647 if (get_short_string) {
648 switch (static_cast<SDL_Keycode>(key)) {
649 case SDLK_BACKSPACE: return msg->get("BkSp");
650 case SDLK_CAPSLOCK: return msg->get("Caps");
651 case SDLK_DELETE: return msg->get("Del");
652 case SDLK_DOWN: return msg->get("Down");
653 case SDLK_END: return msg->get("End");
654 case SDLK_ESCAPE: return msg->get("Esc");
655 case SDLK_HOME: return msg->get("Home");
656 case SDLK_INSERT: return msg->get("Ins");
657 case SDLK_LALT: return msg->get("LAlt");
658 case SDLK_LCTRL: return msg->get("LCtrl");
659 case SDLK_LEFT: return msg->get("Left");
660 case SDLK_LSHIFT: return msg->get("LShft");
661 case SDLK_NUMLOCKCLEAR: return msg->get("Num");
662 case SDLK_PAGEDOWN: return msg->get("PgDn");
663 case SDLK_PAGEUP: return msg->get("PgUp");
664 case SDLK_PAUSE: return msg->get("Pause");
665 case SDLK_PRINTSCREEN: return msg->get("Print");
666 case SDLK_RALT: return msg->get("RAlt");
667 case SDLK_RCTRL: return msg->get("RCtrl");
668 case SDLK_RETURN: return msg->get("Ret");
669 case SDLK_RIGHT: return msg->get("Right");
670 case SDLK_RSHIFT: return msg->get("RShft");
671 case SDLK_SCROLLLOCK: return msg->get("SLock");
672 case SDLK_SPACE: return msg->get("Spc");
673 case SDLK_TAB: return msg->get("Tab");
674 case SDLK_UP: return msg->get("Up");
675 }
676 }
677 else {
678 switch (static_cast<SDL_Keycode>(key)) {
679 case SDLK_BACKSPACE: return msg->get("Backspace");
680 case SDLK_CAPSLOCK: return msg->get("CapsLock");
681 case SDLK_DELETE: return msg->get("Delete");
682 case SDLK_DOWN: return msg->get("Down");
683 case SDLK_END: return msg->get("End");
684 case SDLK_ESCAPE: return msg->get("Escape");
685 case SDLK_HOME: return msg->get("Home");
686 case SDLK_INSERT: return msg->get("Insert");
687 case SDLK_LALT: return msg->get("Left Alt");
688 case SDLK_LCTRL: return msg->get("Left Ctrl");
689 case SDLK_LEFT: return msg->get("Left");
690 case SDLK_LSHIFT: return msg->get("Left Shift");
691 case SDLK_NUMLOCKCLEAR: return msg->get("NumLock");
692 case SDLK_PAGEDOWN: return msg->get("PageDown");
693 case SDLK_PAGEUP: return msg->get("PageUp");
694 case SDLK_PAUSE: return msg->get("Pause");
695 case SDLK_PRINTSCREEN: return msg->get("PrintScreen");
696 case SDLK_RALT: return msg->get("Right Alt");
697 case SDLK_RCTRL: return msg->get("Right Ctrl");
698 case SDLK_RETURN: return msg->get("Return");
699 case SDLK_RIGHT: return msg->get("Right");
700 case SDLK_RSHIFT: return msg->get("Right Shift");
701 case SDLK_SCROLLLOCK: return msg->get("ScrollLock");
702 case SDLK_SPACE: return msg->get("Space");
703 case SDLK_TAB: return msg->get("Tab");
704 case SDLK_UP: return msg->get("Up");
705 }
607706 }
608707
609708 // no translation for this key, so just get the name straight from SDL
610709 return std::string(SDL_GetKeyName(static_cast<SDL_Keycode>(key)));
611710 }
612711
613 std::string SDLInputState::getMouseButtonName(int button) {
712 std::string SDLInputState::getMouseButtonName(int button, bool get_short_string) {
614713 int real_button = (button + MOUSE_BIND_OFFSET) * (-1);
615714
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) {
715 if (get_short_string) {
716 return msg->get("M%d", real_button);
717 }
718 else {
719 if (real_button > 0 && real_button <= MOUSE_BUTTON_NAME_COUNT)
720 return mouse_button[real_button - 1];
721 else
722 return msg->get("Mouse %d", real_button);
723 }
724 }
725
726 std::string SDLInputState::getJoystickButtonName(int button, bool get_short_string) {
623727 if (button < -1) {
624728 int axis = (button + JOY_AXIS_OFFSET) * (-1);
625729
626 if (axis % 2 == 0)
627 return msg->get("Axis %d -", axis/2);
730 if (axis % 2 == 0) {
731 if (get_short_string)
732 return msg->get("JX%d-", axis/2);
733 else
734 return msg->get("Axis %d -", axis/2);
735 }
736 else {
737 if (get_short_string)
738 return msg->get("JX%d+", axis/2);
739 else
740 return msg->get("Axis %d +", axis/2);
741 }
742 }
743 else {
744 if (get_short_string)
745 return msg->get("JB%d", button);
628746 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)");
747 return msg->get("Button %d", button);
748 }
749 }
750
751 std::string SDLInputState::getBindingString(int key, int bindings_list, bool get_short_string) {
752 std::string none = "";
753 if (!get_short_string)
754 none = msg->get("(none)");
637755
638756 if (bindings_list == InputState::BINDING_DEFAULT) {
639757 if (binding[key] == 0 || binding[key] == -1)
640758 return none;
641759 else if (binding[key] < -1)
642 return getMouseButtonName(binding[key]);
760 return getMouseButtonName(binding[key], get_short_string);
643761 else
644 return getKeyName(binding[key]);
762 return getKeyName(binding[key], get_short_string);
645763 }
646764 else if (bindings_list == InputState::BINDING_ALT) {
647765 if (binding_alt[key] == 0 || binding_alt[key] == -1)
648766 return none;
649767 else if (binding_alt[key] < -1)
650 return getMouseButtonName(binding_alt[key]);
768 return getMouseButtonName(binding_alt[key], get_short_string);
651769 else
652 return getKeyName(binding_alt[key]);
770 return getKeyName(binding_alt[key], get_short_string);
653771 }
654772 else if (bindings_list == InputState::BINDING_JOYSTICK) {
655773 if (binding_joy[key] == -1)
656774 return none;
657775 else
658 return getJoystickButtonName(binding_joy[key]);
776 return getJoystickButtonName(binding_joy[key], get_short_string);
659777 }
660778 else {
661779 return none;
663781 }
664782
665783 std::string SDLInputState::getMovementString() {
666 std::stringstream ss;
667 ss << "[";
784 std::string output = "[";
668785
669786 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);
787 output += getBindingString(Input::LEFT, InputState::BINDING_JOYSTICK) + "/";
788 output += getBindingString(Input::RIGHT, InputState::BINDING_JOYSTICK) + "/";
789 output += getBindingString(Input::UP, InputState::BINDING_JOYSTICK) + "/";
790 output += getBindingString(Input::DOWN, InputState::BINDING_JOYSTICK);
674791 }
675792 else if (settings->touchscreen) {
676 ss << msg->get("Touch control D-Pad");
793 output += msg->get("Touch control D-Pad");
677794 }
678795 else if (settings->mouse_move) {
679 ss << (settings->mouse_move_swap ? getBindingString(Input::MAIN2) : getBindingString(Input::MAIN1));
796 output += (settings->mouse_move_swap ? getBindingString(Input::MAIN2) : getBindingString(Input::MAIN1));
680797 }
681798 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();
799 output += getBindingString(Input::LEFT) + "/";
800 output += getBindingString(Input::RIGHT) + "/";
801 output += getBindingString(Input::UP) + "/";
802 output += getBindingString(Input::DOWN);
803 }
804
805 output += "]";
806 return output;
690807 }
691808
692809 std::string SDLInputState::getAttackString() {
693 std::stringstream ss;
694 ss << "[";
810 std::string output = "[";
695811
696812 if (settings->enable_joystick) {
697 ss << getBindingString(Input::ACTIONBAR_USE, InputState::BINDING_JOYSTICK);
813 output += getBindingString(Input::ACTIONBAR_USE, InputState::BINDING_JOYSTICK);
698814 }
699815 else if (settings->touchscreen) {
700 ss << msg->get("Touch control buttons");
816 output += msg->get("Touch control buttons");
701817 }
702818 else {
703 ss << getBindingString(Input::MAIN1);
704 }
705
706 ss << "]";
707 return ss.str();
819 output += getBindingString(Input::MAIN1);
820 }
821
822 output += "]";
823 return output;
708824 }
709825
710826 std::string SDLInputState::getContinueString() {
711 std::stringstream ss;
712 ss << "[";
827 std::string output = "[";
713828
714829 if (settings->touchscreen) {
715 ss << msg->get("Tap");
830 output += msg->get("Tap");
716831 }
717832 else {
718833 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();
834 output += getBindingString(Input::ACCEPT, binding_type);
835 }
836
837 output += "]";
838 return output;
724839 }
725840
726841 int SDLInputState::getNumJoysticks() {
750865
751866 // unbind duplicate bindings for this key
752867 if (key != -1) {
868
869 // prevent unmapping "fixed" keybinds
870 if (bindings_list != InputState::BINDING_JOYSTICK) {
871 if ((key == ((SDL_BUTTON_LEFT+MOUSE_BIND_OFFSET) * (-1)) && binding_button != Input::MAIN1) ||
872 key == SDL_SCANCODE_LCTRL ||
873 key == SDL_SCANCODE_RCTRL ||
874 key == SDL_SCANCODE_LSHIFT ||
875 key == SDL_SCANCODE_RSHIFT ||
876 key == SDL_SCANCODE_LALT ||
877 key == SDL_SCANCODE_RALT ||
878 key == SDL_SCANCODE_DELETE ||
879 key == SDL_SCANCODE_BACKSPACE) {
880
881 if (key < -1)
882 keybind_msg = msg->get("Can not bind: %s", getMouseButtonName(key).c_str());
883 else
884 keybind_msg = msg->get("Can not bind: %s", getKeyName(key).c_str());
885
886 return;
887 }
888 }
889
753890 for (int i = 0; i < KEY_COUNT; ++i) {
754891 // the same key can be bound to both default & alt binding lists for the same action
755892 if (bindings_list != InputState::BINDING_JOYSTICK && i == binding_button)
779916 }
780917
781918 int SDLInputState::getKeyFromName(const std::string& key_name) {
782 return SDL_GetKeyFromName(key_name.c_str());
919 return SDL_GetScancodeFromName(key_name.c_str());
783920 }
784921
785922 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;
3131 #include "InputState.h"
3232 #include "MessageEngine.h"
3333 #include "ModManager.h"
34 #include "Platform.h"
3435 #include "SharedResources.h"
3536 #include "Settings.h"
3637
7071 */
7172 void SDLSoftwareImage::drawPixel(int x, int y, const Color& color) {
7273 if (!surface) return;
74
75 if (x < 0 || y < 0 || x >= getWidth() || y >= getHeight())
76 return;
7377
7478 Uint32 pixel = MapRGBA(color.r, color.g, color.b, color.a);
7579
110114 }
111115 }
112116
117 void SDLSoftwareImage::drawLine(int x0, int y0, int x1, int y1, const Color& color) {
118 const int dx = abs(x1-x0);
119 const int dy = abs(y1-y0);
120 const int sx = x0 < x1 ? 1 : -1;
121 const int sy = y0 < y1 ? 1 : -1;
122 int err = dx-dy;
123
124 int max_width = getWidth();
125 int max_height = getHeight();
126
127 do {
128 //skip draw if outside screen
129 if (x0 > 0 && y0 > 0 && x0 < max_width && y0 < max_height) {
130 this->drawPixel(x0,y0,color);
131 }
132
133 int e2 = 2*err;
134 if (e2 > -dy) {
135 err = err - dy;
136 x0 = x0 + sx;
137 }
138 if (e2 < dx) {
139 err = err + dx;
140 y0 = y0 + sy;
141 }
142 }
143 while(x0 != x1 || y0 != y1);
144 }
145
146
113147 Uint32 SDLSoftwareImage::MapRGBA(Uint8 r, Uint8 g, Uint8 b, Uint8 a) {
114148 if (!surface) return 0;
115149 return SDL_MapRGBA(surface->format, r, g, b, a);
171205 // we only support display #0
172206 Utils::logInfo("RenderDevice: %d display(s), using display 0 (%dx%d @ %dhz)", SDL_GetNumVideoDisplays(), desktop.w, desktop.h, desktop.refresh_rate);
173207 }
208
209 // we store the gamma when launching the game in case we need to reset it
210 // these are initilized to 0 since we set them properly with SDL_GetWindowGammaRamp() later
211 for (int i = 0; i < 256; ++i) {
212 gamma_r[i] = 0;
213 gamma_g[i] = 0;
214 gamma_b[i] = 0;
215 }
174216 }
175217
176218 int SDLSoftwareRenderDevice::createContextInternal() {
177 bool settings_changed = (fullscreen != settings->fullscreen ||
219 if (settings->safe_video) {
220 settings->safe_video = false;
221 Utils::logInfo("RenderDevice: Safe mode is enabled. Using minimum video settings.");
222 settings->fullscreen = false;
223 settings->hwsurface = false;
224 settings->vsync = false;
225 settings->texture_filter = false;
226 settings->screen_w = eset->resolutions.min_screen_w;
227 settings->screen_h = eset->resolutions.min_screen_h;
228 }
229
230 bool settings_changed = ((fullscreen != settings->fullscreen && destructive_fullscreen) ||
178231 hwsurface != settings->hwsurface ||
179232 vsync != settings->vsync ||
180233 texture_filter != settings->texture_filter ||
628681 }
629682
630683 void SDLSoftwareRenderDevice::setBackgroundColor(Color color) {
631 background_color = SDL_MapRGBA(screen->format, color.r, color.g, color.b, color.a);
632 }
684 background_color = SDL_MapRGBA(screen->format, color.r, color.g, color.b, 255);
685 }
686
687 void SDLSoftwareRenderDevice::setFullscreen(bool enable_fullscreen) {
688 if (!destructive_fullscreen) {
689 if (enable_fullscreen) {
690 if (platform.fullscreen_bypass) {
691 platform.setFullscreen(true);
692 }
693 else {
694 SDL_SetWindowFullscreen(window, SDL_WINDOW_FULLSCREEN_DESKTOP);
695 }
696 fullscreen = true;
697 }
698 else if (fullscreen) {
699 if (platform.fullscreen_bypass) {
700 platform.setFullscreen(false);
701 }
702 else {
703 SDL_SetWindowFullscreen(window, 0);
704
705 // restore window to the default size
706 SDL_SetWindowMinimumSize(window, eset->resolutions.min_screen_w, eset->resolutions.min_screen_h);
707 SDL_SetWindowSize(window, eset->resolutions.min_screen_w, eset->resolutions.min_screen_h);
708 windowResize();
709 // setting minimum size might move the window, so set position again
710 SDL_SetWindowPosition(window, SDL_WINDOWPOS_CENTERED, SDL_WINDOWPOS_CENTERED);
711 }
712 fullscreen = false;
713 }
714 windowResize();
715 }
716 }
717
718 unsigned short SDLSoftwareRenderDevice::getRefreshRate() {
719 SDL_DisplayMode mode;
720 SDL_GetCurrentDisplayMode(0, &mode);
721 return static_cast<unsigned short>(mode.refresh_rate);
722 }
723
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();
7981 void updateTitleBar();
82 unsigned short getRefreshRate();
8083
8184 Image* loadImage(const std::string& filename, int error_type);
8285
9699 SDL_Surface* titlebar_icon;
97100 char* title;
98101 uint32_t background_color;
102
103 /* Stores the system gamma levels so they can be restored later */
104 uint16_t gamma_r[256];
105 uint16_t gamma_g[256];
106 uint16_t gamma_b[256];
99107 };
100108
101109 #endif // SDLSOFTWARERENDERDEVICE_H
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.find(channel);
273 if (vcit != channels.end()) {
274 Mix_Pause(vcit->second);
275 }
276 }
277
265278 void SDLSoundManager::pauseAll() {
266279 Mix_Pause(-1);
267280 Mix_PauseMusic();
346359 }
347360
348361 int SDLSoundManager::SetChannelPosition(int channel, Sint16 angle, Uint8 distance) {
349 #ifdef __EMSCRIPTEN__
350 // TODO fix for Emscripten
351 return 0;
352 #else
353362 return Mix_SetPosition(channel, angle, distance);
354 #endif
355363 }
356364
357365 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 /**
3939 #include "UtilsFileSystem.h"
4040 #include "SharedResources.h"
4141 #include "Version.h"
42
43 const float Settings::LOGIC_FPS = 60.f;
4244
4345 Settings::Settings()
4446 : path_conf("")
5860 , show_hud(true)
5961 , encounter_dist(0) // set in updateScreenVars()
6062 , soft_reset(false)
63 , safe_video(false)
6164 {
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");
65 config.resize(44);
66 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");
67 setConfigDefault(1, "fullscreen", &typeid(fullscreen), "0", &fullscreen, "Fullscreen mode | 0 = disable, 1 = enable");
68 setConfigDefault(2, "resolution_w", &typeid(screen_w), "640", &screen_w, "Window size");
69 setConfigDefault(3, "resolution_h", &typeid(screen_h), "480", &screen_h, "");
70 setConfigDefault(4, "music_volume", &typeid(music_volume), "96", &music_volume, "Music and sound volume | 0 = silent, 128 = maximum");
71 setConfigDefault(5, "sound_volume", &typeid(sound_volume), "128", &sound_volume, "");
72 setConfigDefault(6, "combat_text", &typeid(combat_text), "1", &combat_text, "Display floating damage text | 0 = disable, 1 = enable");
73 setConfigDefault(7, "mouse_move", &typeid(mouse_move), "0", &mouse_move, "Use mouse to move | 0 = disable, 1 = enable");
74 setConfigDefault(8, "hwsurface", &typeid(hwsurface), "1", &hwsurface, "Hardware surfaces & V-sync. Try disabling for performance. | 0 = disable, 1 = enable");
75 setConfigDefault(9, "vsync", &typeid(vsync), "1", &vsync, "");
76 setConfigDefault(10, "texture_filter", &typeid(texture_filter), "1", &texture_filter, "Texture filter quality | 0 = nearest neighbor (worst), 1 = linear (best)");
77 setConfigDefault(11, "dpi_scaling", &typeid(dpi_scaling), "0", &dpi_scaling, "DPI-based render scaling | 0 = disable, 1 = enable");
78 setConfigDefault(12, "parallax_layers", &typeid(parallax_layers), "1", &parallax_layers, "Rendering of parallax map layers | 0 = disable, 1 = enable");
79 setConfigDefault(13, "max_fps", &typeid(max_frames_per_sec), "60", &max_frames_per_sec, "Maximum frames per second | 60 = default");
80 setConfigDefault(14, "renderer", &typeid(render_device_name), "sdl_hardware", &render_device_name, "Default render device. | sdl_hardware = default, Try sdl for compatibility");
81 setConfigDefault(15, "enable_joystick", &typeid(enable_joystick), "0", &enable_joystick, "Joystick settings.");
82 setConfigDefault(16, "joystick_device", &typeid(joystick_device), "-1", &joystick_device, "");
83 setConfigDefault(17, "joystick_deadzone", &typeid(joy_deadzone), "100", &joy_deadzone, "");
84 setConfigDefault(18, "language", &typeid(language), "en", &language, "2-letter language code.");
85 setConfigDefault(19, "change_gamma", &typeid(change_gamma), "0", &change_gamma, "Allow changing screen gamma (experimental) | 0 = disable, 1 = enable");
86 setConfigDefault(20, "gamma", &typeid(gamma), "1.0", &gamma, "Screen gamma. Requires change_gamma=1 | 0.5 = darkest, 2.0 = lightest");
87 setConfigDefault(21, "mouse_aim", &typeid(mouse_aim), "1", &mouse_aim, "Use mouse to aim | 0 = disable, 1 = enable");
88 setConfigDefault(22, "no_mouse", &typeid(no_mouse), "0", &no_mouse, "Make using mouse secondary, give full control to keyboard | 0 = disable, 1 = enable");
89 setConfigDefault(23, "show_fps", &typeid(show_fps), "0", &show_fps, "Show frames per second | 0 = disable, 1 = enable");
90 setConfigDefault(24, "colorblind", &typeid(colorblind), "0", &colorblind, "Enable colorblind help text | 0 = disable, 1 = enable");
91 setConfigDefault(25, "hardware_cursor", &typeid(hardware_cursor), "0", &hardware_cursor, "Use the system mouse cursor | 0 = disable, 1 = enable");
92 setConfigDefault(26, "dev_mode", &typeid(dev_mode), "0", &dev_mode, "Developer mode | 0 = disable, 1 = enable");
93 setConfigDefault(27, "dev_hud", &typeid(dev_hud), "1", &dev_hud, "Show additional information on-screen when dev_mode=1 | 0 = disable, 1 = enable");
94 setConfigDefault(28, "loot_tooltips", &typeid(loot_tooltips), "0", &loot_tooltips, "Loot tooltip mode | 0 = normal, 1 = show all, 2 = hide all");
95 setConfigDefault(29, "statbar_labels", &typeid(statbar_labels), "0", &statbar_labels, "Always show labels on HP/MP/XP bars | 0 = disable, 1 = enable");
96 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");
97 setConfigDefault(31, "auto_equip", &typeid(auto_equip), "1", &auto_equip, "Automatically equip items | 0 = enable, 1 = enable");
98 setConfigDefault(32, "subtitles", &typeid(subtitles), "0", &subtitles, "Subtitles | 0 = disable, 1 = enable");
99 setConfigDefault(33, "minimap_mode", &typeid(minimap_mode), "0", &minimap_mode, "Mini-map display mode | 0 = normal, 1 = 2x zoom, 2 = hidden");
100 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");
101 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");
102 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");
103 setConfigDefault(37, "prev_save_slot", &typeid(prev_save_slot), "-1", &prev_save_slot, "Index of the last used save slot");
104 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");
105 setConfigDefault(39, "low_hp_threshold", &typeid(low_hp_threshold), "20", &low_hp_threshold, "Low HP warning threshold percentage");
106 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");
107 setConfigDefault(41, "max_render_size", &typeid(max_render_size), "0", &max_render_size, "Overrides the maximum height (in pixels) of the internal render surface | 0 = ignore this setting");
108 setConfigDefault(42, "touch_controls", &typeid(touchscreen), "0", &touchscreen, "Enables touch screen controls | 0 = disable, 1 = enable");
109 setConfigDefault(43, "touch_scale", &typeid(touch_scale), "1.0", &touch_scale, "Factor used to scale the touch controls | 1.0 = 100 percent scale");
98110 }
99111
100112 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) {
127139 }
128140
129141 // try read from file
142 bool found_settings = false;
143
130144 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;
145 if (infile.open(settings->path_conf + "settings.txt", !FileParser::MOD_FILE, FileParser::ERROR_NORMAL)) {
146 found_settings = true;
147 }
148 else if (infile.open("engine/default_settings.txt", FileParser::MOD_FILE, FileParser::ERROR_NORMAL)) {
149 found_settings = true;
150 }
151
152 if (!found_settings) {
153 saveSettings();
154 }
155 else {
156 while (infile.next()) {
157 size_t entry = getConfigEntry(infile.key);
158 if (entry != config.size()) {
159 Parse::tryParseValue(*config[entry].type, infile.val, config[entry].storage);
160 }
136161 }
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();
162 infile.close();
163 }
147164
148165 loadMobileDefaults();
166
167 // Force using the software renderer if safe mode is enabled
168 if (safe_video) {
169 render_device_name = "sdl";
170 }
149171 }
150172
151173 /**
184206 * Load all default settings, except video settings.
185207 */
186208 void Settings::loadDefaults() {
187 // HACK init defaults except video
188 for (size_t i = 3; i < config.size(); i++) {
209 // HACK init defaults except video and one-time flags
210 for (size_t i = 4; i < config.size(); i++) {
189211 Parse::tryParseValue(*config[i].type, config[i].default_val, config[i].storage);
190212 }
191213
220242 }
221243 }
222244
245 void Settings::logSettings() {
246 for (size_t i = 0; i < config.size(); ++i) {
247 Utils::logInfo("Settings: %s=%s", config[i].name.c_str(), configValueToString(*config[i].type, config[i].storage).c_str());
248 }
249 }
250
251 std::string Settings::configValueToString(const std::type_info &type, void *storage) {
252 std::stringstream stream;
253
254 if (type == typeid(bool)) {
255 stream << *(static_cast<bool*>(storage));
256 }
257 else if (type == typeid(int)) {
258 stream << *(static_cast<int*>(storage));
259 }
260 else if (type == typeid(unsigned int)) {
261 stream << *(static_cast<unsigned int*>(storage));
262 }
263 else if (type == typeid(short)) {
264 stream << *(static_cast<short*>(storage));
265 }
266 else if (type == typeid(unsigned short)) {
267 stream << *(static_cast<unsigned short*>(storage));
268 }
269 else if (type == typeid(char)) {
270 stream << *(static_cast<char*>(storage));
271 }
272 else if (type == typeid(unsigned char)) {
273 stream << *(static_cast<unsigned char*>(storage));
274 }
275 else if (type == typeid(float)) {
276 stream << *(static_cast<float*>(storage));
277 }
278 else if (type == typeid(std::string)) {
279 stream << *(static_cast<std::string*>(storage));
280 }
281
282 return stream.str();
283 }
284
3030
3131 class Settings {
3232 public:
33 static const float LOGIC_FPS;
34
3335 enum {
3436 LOOT_TIPS_DEFAULT = 0,
3537 LOOT_TIPS_SHOW_ALL = 1,
4244 MINIMAP_HIDDEN = 2
4345 };
4446
47 enum {
48 LHP_WARN_NONE = 0,
49 LHP_WARN_ALL = 1,
50 LHP_WARN_TEXT_CURSOR = 2,
51 LHP_WARN_TEXT_SOUND = 3,
52 LHP_WARN_CURSOR_SOUND = 4,
53 LHP_WARN_TEXT = 5,
54 LHP_WARN_CURSOR = 6,
55 LHP_WARN_SOUND = 7
56 };
57
4558 Settings();
4659 void loadSettings();
4760 void saveSettings();
4861 void loadDefaults();
4962 void updateScreenVars();
63 void logSettings();
5064
5165 // Video Settings
5266 bool fullscreen;
6175 bool change_gamma;
6276 float gamma;
6377 bool parallax_layers;
78 unsigned short max_render_size;
6479
6580 // Audio Settings
6681 unsigned short music_volume;
7590 bool mouse_aim;
7691 bool no_mouse;
7792 int joy_deadzone;
93 float touch_scale;
7894
7995 // Interface Settings
8096 bool combat_text;
85101 bool dev_hud;
86102 int loot_tooltips;
87103 bool statbar_labels;
104 bool statbar_autohide;
88105 bool auto_equip;
89106 bool subtitles;
90107 int minimap_mode;
108 bool entity_markers;
109 int low_hp_warning_type;
110 int low_hp_threshold;
111 bool item_compare_tips;
91112
92113 // Language Settings
93114 std::string language;
94115
95116 // Misc
96117 int prev_save_slot;
118 bool move_type_dimissed;
97119
98120 /**
99121 * NOTE Everything below is not part of the user's settings.txt, but somehow ended up here
128150
129151 bool soft_reset;
130152
153 bool safe_video;
154
131155 private:
132156 class ConfigEntry {
133157 public:
142166 void setConfigDefault(size_t index, const std::string& name, const std::type_info *type, const std::string& default_val, void *storage, const std::string& comment);
143167 size_t getConfigEntry(const std::string& name);
144168 void loadMobileDefaults();
169 std::string configValueToString(const std::type_info &type, void *storage);
145170 };
146171 #endif
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"
4747
4848 #include <limits>
4949
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};
58
5059 StatBlock::StatBlock()
5160 : statsLoaded(false)
5261 , alive(true)
5564 , hero(false)
5665 , hero_ally(false)
5766 , enemy_ally(false)
67 , npc(false)
5868 , humanoid(false)
5969 , lifeform(true)
6070 , permadeath(false)
8898 , character_class("")
8999 , character_subclass("")
90100 , hp(0)
91 , hp_ticker(0)
101 , hp_f(0)
92102 , mp(0)
93 , mp_ticker(0)
103 , mp_f(0)
94104 , speed_default(0.1f)
95105 , dmg_min_add(eset->damage_types.list.size(), 0)
96106 , dmg_max_add(eset->damage_types.list.size(), 0)
114124 , direction(0)
115125 , cooldown_hit()
116126 , cooldown_hit_enabled(false)
117 , cur_state(0)
127 , cur_state(ENTITY_STANCE)
118128 , state_timer()
119129 , hold_state(false)
120130 , prevent_interrupt(false)
166176 , sfx_critdie()
167177 , sfx_block()
168178 , sfx_levelup("")
179 , sfx_lowhp("")
180 , sfx_lowhp_loop(false)
169181 , max_spendable_stat_points(0)
170182 , max_points_per_stat(0)
171183 , prev_maxhp(0)
174186 , prev_mp(0)
175187 , summons()
176188 , summoner(NULL)
177 , bleed_source_type(-1)
189 , abort_npc_interact(false)
178190 {
179191 primary.resize(eset->primary_stats.list.size(), 0);
180192 primary_starting.resize(eset->primary_stats.list.size(), 0);
184196 for (size_t i = 0; i < per_primary.size(); ++i) {
185197 per_primary[i].resize(Stats::COUNT + eset->damage_types.count, 0);
186198 }
199
200 cooldown.reset(Timer::END);
201 }
202
203 StatBlock::~StatBlock() {
204 removeFromSummons();
205 if (loot)
206 loot->removeFromEnemiesDroppingLoot(this);
187207 }
188208
189209 bool StatBlock::loadCoreStat(FileParser *infile) {
298318 // @ATTR power_filter|list(power_id)|Only these powers are allowed to hit this entity.
299319 std::string power_id = Parse::popFirstString(infile->val);
300320 while (!power_id.empty()) {
301 power_filter.push_back(Parse::toInt(power_id));
321 power_filter.push_back(Parse::toPowerID(power_id));
302322 power_id = Parse::popFirstString(infile->val);
303323 }
324 return true;
325 }
326 else if (infile->key == "categories") {
327 // @ATTR categories|list(string)|Categories that this entity belongs to.
328 categories.clear();
329 std::string cat;
330 while ((cat = Parse::popFirstString(infile->val)) != "") {
331 categories.push_back(cat);
332 }
333 return true;
334 }
335 else if (infile->key == "melee_range") {
336 // @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.
337 melee_range = Parse::toFloat(infile->val);
304338 return true;
305339 }
306340
373407 // @ATTR sfx_levelup|filename|Filename of sound effect for leveling up.
374408 sfx_levelup = infile->val;
375409 }
410 else if (infile->key == "sfx_lowhp") {
411 // @ATTR sfx_lowhp|filename, bool: Sound file, loop|Filename of sound effect for low health warning. Optionally, it can be looped.
412 sfx_lowhp = Parse::popFirstString(infile->val);
413 if (infile->val != "") sfx_lowhp_loop = Parse::toBool(infile->val);
414 }
376415 else {
377416 return false;
378417 }
379418
380419 return true;
420 }
421
422 bool StatBlock::isNPCStat(FileParser *infile) {
423 if (infile->section == "npc") return true;
424 else if (infile->section == "dialog") return true;
425
426 if (infile->key == "gfx") {
427 infile->error("StatBlock: Warning! 'gfx' is deprecated. Use 'animations' instead.");
428 animations = infile->val;
429 return true;
430 }
431 else if (infile->key == "direction") return true;
432 else if (infile->key == "talker") return true;
433 else if (infile->key == "portrait") return true;
434 else if (infile->key == "vendor") return true;
435 else if (infile->key == "vendor_requires_status") return true;
436 else if (infile->key == "vendor_requires_not_status") return true;
437 else if (infile->key == "constant_stock") return true;
438 else if (infile->key == "status_stock") return true;
439 else if (infile->key == "random_stock") return true;
440 else if (infile->key == "random_stock_count") return true;
441 else if (infile->key == "vox_intro") return true;
442
443 return false;
381444 }
382445
383446 /**
400463
401464 int num = Parse::toInt(infile.val);
402465 float fnum = Parse::toFloat(infile.val);
403 bool valid = loadCoreStat(&infile) || loadSfxStat(&infile);
466 bool valid = loadCoreStat(&infile) || loadSfxStat(&infile) || isNPCStat(&infile);
404467
405468 // @ATTR name|string|Name
406469 if (infile.key == "name") name = msg->get(infile.val);
445508 // @ATTR convert_status|string|Campaign status to set upon being converted to a player ally.
446509 else if (infile.key == "convert_status") convert_status = camp->registerStatus(infile.val);
447510 // @ATTR first_defeat_loot|item_id|Drops this item upon first death.
448 else if (infile.key == "first_defeat_loot") first_defeat_loot = num;
511 else if (infile.key == "first_defeat_loot") first_defeat_loot = Parse::toItemID(infile.val);
449512 // @ATTR quest_loot|string, string, item_id : Required status, Required not status, Item|Drops this item when campaign status is met.
450513 else if (infile.key == "quest_loot") {
451514 quest_loot_requires_status = camp->registerStatus(Parse::popFirstString(infile.val));
452515 quest_loot_requires_not_status = camp->registerStatus(Parse::popFirstString(infile.val));
453 quest_loot_id = Parse::popFirstInt(infile.val);
516 quest_loot_id = Parse::toItemID(Parse::popFirstString(infile.val));
454517 }
455518
456519 // behavior stats
477540
478541 std::string ai_type = Parse::popFirstString(infile.val);
479542
480 ai_power.id = powers->verifyID(Parse::popFirstInt(infile.val), &infile, !PowerManager::ALLOW_ZERO_ID);
543 ai_power.id = powers->verifyID(Parse::toPowerID(Parse::popFirstString(infile.val)), &infile, !PowerManager::ALLOW_ZERO_ID);
481544 if (ai_power.id == 0)
482545 continue; // verifyID() will print our error message
483546
507570 powers_passive.clear();
508571 std::string p = Parse::popFirstString(infile.val);
509572 while (p != "") {
510 powers_passive.push_back(Parse::toInt(p));
573 powers_passive.push_back(Parse::toPowerID(p));
511574 p = Parse::popFirstString(infile.val);
512575
513576 // 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;
577 PowerID post_power = powers->powers[powers_passive.back()].post_power;
515578 if (post_power > 0) {
516579 AIPower passive_post_power;
517580 passive_post_power.type = AI_POWER_PASSIVE_POST;
522585 }
523586 }
524587
525 // @ATTR melee_range|float|Minimum distance from target required to use melee powers.
526 else if (infile.key == "melee_range") melee_range = fnum;
527588 // @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.
528589 else if (infile.key == "threat_range") {
529590 threat_range = Parse::toFloat(Parse::popFirstString(infile.val));
553614 // @ATTR suppress_hp|bool|Hides the enemy HP bar for this creature.
554615 else if (infile.key == "suppress_hp") suppress_hp = Parse::toBool(infile.val);
555616
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
565617 // @ATTR flee_duration|duration|The minimum amount of time that this creature will flee. They may flee longer than the specified time.
566618 else if (infile.key == "flee_duration") flee_timer.setDuration(Parse::toDuration(infile.val));
567619 // @ATTR flee_cooldown|duration|The amount of time this creature must wait before they can start fleeing again.
589641 /**
590642 * Reduce temphp first, then hp
591643 */
592 void StatBlock::takeDamage(int dmg) {
644 void StatBlock::takeDamage(int dmg, bool crit, int source_type) {
593645 hp -= effects.damageShields(dmg);
594646 if (hp <= 0) {
595647 hp = 0;
648
649 effects.triggered_death = true;
650 // TODO should effects.clearEffects() be here as well?
651 // what about other things that happen in the "dead" entity states?
652
653 if (hero) {
654 cur_state = StatBlock::ENTITY_DEAD;
655 }
656 else {
657 // enemy died; do rewards
658 if (!hero_ally || converted) {
659 // some creatures create special loot if we're on a quest
660 if (quest_loot_requires_status != 0) {
661 // the loot manager will check quest_loot_id
662 // if set (not zero), the loot manager will 100% generate that loot.
663 if (!(camp->checkStatus(quest_loot_requires_status) && !camp->checkStatus(quest_loot_requires_not_status))) {
664 quest_loot_id = 0;
665 }
666 }
667
668 // some creatures drop special loot the first time they are defeated
669 // this must be done in conjunction with defeat status
670 if (first_defeat_loot > 0) {
671 if (!camp->checkStatus(defeat_status)) {
672 quest_loot_id = first_defeat_loot;
673 }
674 }
675
676 // defeating some creatures (e.g. bosses) affects the story
677 if (defeat_status != 0) {
678 camp->setStatus(defeat_status);
679 }
680
681 // reward XP; adjust for party exp if necessary
682 float xp_multiplier = 1;
683 if (source_type == Power::SOURCE_TYPE_ALLY)
684 xp_multiplier = static_cast<float>(eset->misc.party_exp_percentage) / 100.0f;
685
686 camp->rewardXP(static_cast<int>((static_cast<float>(xp) * xp_multiplier)), !CampaignManager::XP_SHOW_MSG);
687
688 // drop loot
689 loot->addEnemyLoot(this);
690 }
691
692 if (crit)
693 cur_state = StatBlock::ENTITY_CRITDEAD;
694 else
695 cur_state = StatBlock::ENTITY_DEAD;
696
697 mapr->collider.unblock(pos.x, pos.y);
698 }
699
596700 }
597701 }
598702
631735 */
632736 void StatBlock::calcBase() {
633737 // 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];
738 const int lev0 = std::max(level - 1, 0);
739
740 if (per_primary.empty()) {
741 for (size_t i = 0; i < Stats::COUNT + eset->damage_types.count; ++i) {
742 base[i] = starting[i] + (lev0 * per_level[i]);
743 }
744 }
745 else {
639746 for (size_t j = 0; j < per_primary.size(); ++j) {
640 base[i] += std::max(get_primary(j) - 1, 0) * per_primary[j][i];
747 const int current_primary = std::max(get_primary(j) - 1, 0);
748 const std::vector<int>& per_primary_vec = per_primary[j];
749 for (size_t i = 0; i < Stats::COUNT + eset->damage_types.count; ++i) {
750 if (j==0)
751 base[i] = starting[i] + (lev0 * per_level[i]);
752 base[i] += (current_primary * per_primary_vec[i]);
753 }
641754 }
642755 }
643756
660773 * Recalc derived stats from base stats + effect bonuses
661774 */
662775 void StatBlock::applyEffects() {
663
664776 // preserve hp/mp states
665777 // max HP and MP can't drop below 1
666778 prev_maxhp = std::max(get(Stats::HP_MAX), 1);
679791
680792 calcBase();
681793
682 for (size_t i=0; i<Stats::COUNT + eset->damage_types.count; i++) {
794 for (size_t i = 0; i < Stats::COUNT + eset->damage_types.count; ++i) {
683795 current[i] = base[i] + effects.bonus[i];
684796 }
685797
686 for (unsigned i=0; i<effects.bonus_resist.size(); i++) {
798 for (size_t i = 0; i < effects.bonus_resist.size(); ++i) {
687799 vulnerable[i] = vulnerable_base[i] - effects.bonus_resist[i];
688800 }
689801
707819 alive = !(hp <= 0 && !effects.triggered_death && !effects.revive);
708820
709821 // handle party buffs
710 if (enemym && powers) {
822 if (entitym && powers) {
711823 while (!party_buffs.empty()) {
712 int power_index = party_buffs.front();
824 PowerID power_index = party_buffs.front();
713825 party_buffs.pop();
714826 Power *buff_power = &powers->powers[power_index];
715827
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)
828 for (size_t i=0; i < entitym->entities.size(); ++i) {
829 Entity* party_member = entitym->entities[i];
830 if(party_member->stats.hp > 0 &&
831 ((party_member->stats.hero_ally && hero) || (party_member->stats.enemy_ally && party_member->stats.summoner == this)) &&
832 (buff_power->buff_party_power_id == 0 || buff_power->buff_party_power_id == party_member->stats.summoned_power_index)
720833 ) {
721 powers->effect(&enemym->enemies[i]->stats, this, power_index, (hero ? Power::SOURCE_TYPE_HERO : Power::SOURCE_TYPE_ENEMY));
834 powers->effect(&(party_member->stats), this, power_index, (hero ? Power::SOURCE_TYPE_HERO : Power::SOURCE_TYPE_ENEMY));
722835 }
723836 }
724837 }
753866 powers_ai[i].cooldown.tick();
754867 }
755868
869 // sync hp/mp with their floating point counterparts
870 if (static_cast<int>(hp_f) != hp)
871 hp_f = static_cast<float>(hp);
872 if (static_cast<int>(mp_f) != mp)
873 mp_f = static_cast<float>(mp);
874
756875 // HP regen
757 if (get(Stats::HP_REGEN) > 0 && hp < get(Stats::HP_MAX) && hp > 0) {
758 hp_ticker++;
759 if (hp_ticker >= (60 * settings->max_frames_per_sec) / get(Stats::HP_REGEN)) {
760 hp++;
761 hp_ticker = 0;
762 }
876 if (hp < get(Stats::HP_MAX) && hp > 0) {
877 float hp_regen_per_frame;
878 if (!in_combat && !hero_ally && !hero && pc->stats.alive) {
879 // enemies heal rapidly (full heal in 5 seconds) while not in combat
880 hp_regen_per_frame = static_cast<float>(get(Stats::HP_MAX)) / 5.f / settings->max_frames_per_sec;
881 }
882 else {
883 hp_regen_per_frame = static_cast<float>(get(Stats::HP_REGEN)) / 60.f / settings->max_frames_per_sec;
884 }
885 hp_f += hp_regen_per_frame;
886 hp = std::min(static_cast<int>(hp_f), get(Stats::HP_MAX));
763887 }
764888
765889 // MP regen
766 if (get(Stats::MP_REGEN) > 0 && mp < get(Stats::MP_MAX) && hp > 0) {
767 mp_ticker++;
768 if (mp_ticker >= (60 * settings->max_frames_per_sec) / get(Stats::MP_REGEN)) {
769 mp++;
770 mp_ticker = 0;
771 }
890 if (mp < get(Stats::MP_MAX) && hp > 0) {
891 float mp_regen_per_frame = static_cast<float>(get(Stats::MP_REGEN)) / 60.f / settings->max_frames_per_sec;
892 mp_f += mp_regen_per_frame;
893 mp = std::min(static_cast<int>(mp_f), get(Stats::MP_MAX));
772894 }
773895
774896 // handle buff/debuff durations
777899
778900 // apply bleed
779901 if (effects.damage > 0 && hp > 0) {
780 takeDamage(effects.damage);
902 takeDamage(effects.damage, !StatBlock::TAKE_DMG_CRIT, effects.getDamageSourceType(Effect::DAMAGE));
781903 comb->addInt(effects.damage, pos, CombatText::MSG_TAKEDMG);
782904 }
783905 if (effects.damage_percent > 0 && hp > 0) {
784906 int damage = (get(Stats::HP_MAX)*effects.damage_percent)/100;
785 takeDamage(damage);
907 takeDamage(damage, !StatBlock::TAKE_DMG_CRIT, effects.getDamageSourceType(Effect::DAMAGE_PERCENT));
786908 comb->addInt(damage, pos, CombatText::MSG_TAKEDMG);
787909 }
788910
789911 if(effects.death_sentence)
790 hp = 0;
912 takeDamage(get(Stats::HP_MAX), !StatBlock::TAKE_DMG_CRIT, Power::SOURCE_TYPE_NEUTRAL);
791913
792914 cooldown_hit.tick();
793915
842964 mapr->collider.block(pos.x, pos.y, hero_ally);
843965 }
844966 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]);
967 float tmp_speed = charge_speed * SPEED_MULTIPLIER[direction];
968 float dx = tmp_speed * DIRECTION_DELTA_X[direction];
969 float dy = tmp_speed * DIRECTION_DELTA_Y[direction];
848970
849971 mapr->collider.unblock(pos.x, pos.y);
850972 mapr->collider.move(pos.x, pos.y, dx, dy, movement_type, mapr->collider.getCollideType(hero));
851973 mapr->collider.block(pos.x, pos.y, hero_ally);
852 }
853
854
855 // enemies heal rapidly while not in combat
856 if (!in_combat && !hero_ally && !hero) {
857 if (alive && pc->stats.alive) {
858 hp++;
859 if (hp > get(Stats::HP_MAX))
860 hp = get(Stats::HP_MAX);
861 }
862974 }
863975
864976 waypoint_timer.tick();
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
124121 bool hero; // else, enemy or other
125122 bool hero_ally;
126123 bool enemy_ally;
124 bool npc;
127125 bool humanoid; // true for human, sceleton...; false for wyvern, snake...
128126 bool lifeform;
129127 bool permadeath;
131129 bool refresh_stats;
132130 bool converted;
133131 bool summoned;
134 int summoned_power_index;
132 PowerID summoned_power_index;
135133 bool encountered; // enemy only
136134 StatBlock* target_corpse;
137135 StatBlock* target_nearest;
138136 StatBlock* target_nearest_corpse;
139137 float target_nearest_dist;
140138 float target_nearest_corpse_dist;
141 int block_power;
139 PowerID block_power;
142140
143141 int movement_type;
144142 bool flying;
167165 std::vector<int> per_level; // value increases each level after level 1
168166 std::vector< std::vector<int> > per_primary;
169167
170 int get(Stats::STAT stat) {
168 int get(Stats::STAT stat) const {
171169 return current[stat];
172170 }
173 int getDamageMin(size_t dmg_type) {
171 int getDamageMin(size_t dmg_type) const {
174172 return current[Stats::COUNT + (dmg_type * 2)];
175173 }
176 int getDamageMax(size_t dmg_type) {
174 int getDamageMax(size_t dmg_type) const {
177175 return current[Stats::COUNT + (dmg_type * 2) + 1];
178176 }
179177
192190
193191 // physical stats
194192 int hp;
195 int hp_ticker;
193 float hp_f;
196194
197195 // mental stats
198196 int mp;
199 int mp_ticker;
197 float mp_f;
200198
201199 float speed_default;
202200
249247 int chance_pursue;
250248 int chance_flee;
251249
252 std::vector<int> powers_list;
253 std::vector<int> powers_list_items;
254 std::vector<int> powers_passive;
250 std::vector<PowerID> powers_list;
251 std::vector<PowerID> powers_list_items;
252 std::vector<PowerID> powers_passive;
255253 std::vector<AIPower> powers_ai;
256254
257 bool canUsePower(int powerid, bool allow_passive) const;
255 bool canUsePower(PowerID powerid, bool allow_passive) const;
258256
259257 float melee_range;
260258 float threat_range;
291289 StatusID convert_status;
292290 StatusID quest_loot_requires_status;
293291 StatusID quest_loot_requires_not_status;
294 int quest_loot_id;
295 int first_defeat_loot;
292 ItemID quest_loot_id;
293 ItemID first_defeat_loot;
296294
297295 // player look options
298296 std::string gfx_base; // folder in /images/avatar
310308 std::vector<std::string> sfx_critdie;
311309 std::vector<std::string> sfx_block;
312310 std::string sfx_levelup;
311 std::string sfx_lowhp;
312 bool sfx_lowhp_loop;
313313
314314 // formula numbers
315315 int max_spendable_stat_points;
324324 // links to summoned creatures and the entity which summoned this
325325 std::vector<StatBlock*> summons;
326326 StatBlock* summoner;
327 std::queue<int> party_buffs;
328
329 std::vector<int> power_filter;
330
331 int bleed_source_type;
327 std::queue<PowerID> party_buffs;
328
329 std::vector<PowerID> power_filter;
332330
333331 std::vector<StatusID> invincible_requires_status;
334332 std::vector<StatusID> invincible_requires_not_status;
333
334 bool abort_npc_interact;
335335 };
336336
337337 #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, 12, 0);
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 /**
394396 scrollbar->local_offset = local_offset;
395397 scrollbar->render();
396398 }
397 }
398
399 void WidgetListBox::jumpToSelected() {
400 int index = getSelected();
401 int index_offset = static_cast<int>(rows.size() / 2) - 1;
402 int max_index = static_cast<int>(items.size() - rows.size());
403
404 cursor = std::max(0, max_index - std::max(0, max_index + index_offset - index));
405
406 refresh();
407399 }
408400
409401 /**
527519 items[index].selected = true;
528520 }
529521
530 void WidgetListBox::deselect(int index) {
531 if (items.empty())
532 return;
533
534 items[index].selected = false;
535 }
536
537522 bool WidgetListBox::isSelected(int index) {
538523 if (items.empty())
539524 return false;
8383 void scrollUp();
8484 void scrollDown();
8585 void render();
86 void jumpToSelected();
8786 void refresh();
8887 void sort();
8988
9291 void defocus();
9392
9493 void select(int index);
95 void deselect(int index);
9694 bool isSelected(int index);
9795
9896 void setHeight(int new_size);
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]);
2121 * class WidgetScrollBar
2222 */
2323
24 #include "EngineSettings.h"
2425 #include "InputState.h"
2526 #include "RenderDevice.h"
2627 #include "SharedResources.h"
3536 , value(0)
3637 , bar_height(0)
3738 , maximum(0)
39 , lock_main1(false)
40 , dragging(false)
41 , bg(NULL)
3842 , pressed_up(false)
3943 , pressed_down(false)
4044 , pressed_knob(false) {
7276 int WidgetScrollBar::checkClickAt(int x, int y) {
7377 Point mouse = Point(x,y);
7478
75 // main ScrollBar already in use, new click not allowed
76 //if (inpt->lock[Input::MAIN1]) return 0;
77
79 bool in_bounds = Utils::isWithinRect(getBounds(), mouse);
80 bool in_up = Utils::isWithinRect(pos_up, mouse) || Utils::isWithinRect(up_to_knob, mouse);
81 bool in_down = Utils::isWithinRect(pos_down, mouse) || Utils::isWithinRect(knob_to_down, mouse);
82 bool in_knob = Utils::isWithinRect(pos_knob, mouse);
83
84 // detect new click
85 if (in_bounds && (!lock_main1 || dragging)) {
86 lock_main1 = false;
87 dragging = false;
88
89 if (inpt->pressing[Input::MAIN1]) {
90 inpt->lock[Input::MAIN1] = true;
91 if (in_up && !pressed_knob) {
92 pressed_up = true;
93 }
94 else if (in_down && !pressed_knob) {
95 pressed_down = true;
96 }
97 else if (in_knob && !pressed_up && !pressed_down) {
98 pressed_knob = true;
99 dragging = true;
100 }
101 else if (in_bounds && pressed_knob) {
102 dragging = true;
103 }
104 }
105 }
106 else {
107 lock_main1 = inpt->pressing[Input::MAIN1];
108 }
109
110 int ret = 0;
78111 // main click released, so the ScrollBar state goes back to unpressed
79 if (pressed_up && !inpt->lock[Input::MAIN1]) {
112 if (pressed_up && !inpt->pressing[Input::MAIN1]) {
80113 pressed_up = false;
81 if (Utils::isWithinRect(pos_up, mouse)) {
114 if (in_up) {
82115 // activate upon release
83 return 1;
84 }
85 }
86 if (pressed_down && !inpt->lock[Input::MAIN1]) {
116 ret = 1;
117 }
118 }
119 else if (pressed_down && !inpt->pressing[Input::MAIN1]) {
87120 pressed_down = false;
88 if (Utils::isWithinRect(pos_down, mouse)) {
121 if (in_down) {
89122 // activate upon release
90 return 2;
91 }
92 }
93 if (pressed_knob) {
94 if (!inpt->lock[Input::MAIN1]) {
95 pressed_knob = false;
96 }
123 ret = 2;
124 }
125 }
126 else if (pressed_knob && dragging) {
97127 int tmp = mouse.y - pos_up.y - pos_up.h;
98128
99129 if (bar_height < 1) bar_height = 1;
100130 value = (tmp * maximum)/bar_height;
101131 set();
102132
103 return 3;
104 }
105
106 pressed_up = false;
107 pressed_down = false;
108 pressed_knob = false;
109
110 // detect new click
111 if (inpt->pressing[Input::MAIN1]) {
112 if (Utils::isWithinRect(pos_up, mouse)) {
113 inpt->lock[Input::MAIN1] = true;
114 pressed_up = true;
115 }
116 else if (Utils::isWithinRect(pos_down, mouse)) {
117 inpt->lock[Input::MAIN1] = true;
118 pressed_down = true;
119 }
120 else if (Utils::isWithinRect(pos_knob, mouse)) {
121 inpt->lock[Input::MAIN1] = true;
122 pressed_knob = true;
123 }
124
125 }
126 return 0;
133 ret = 3;
134 }
135
136 if (!inpt->pressing[Input::MAIN1]) {
137 dragging = false;
138 pressed_knob = false;
139 pressed_up = false;
140 pressed_down = false;
141 }
142
143 return ret;
127144
128145 }
129146
131148 if (maximum < 1) maximum = 1;
132149 value = std::max(0, std::min(maximum, value));
133150 pos_knob.y = pos_up.y + pos_up.h + (value * (bar_height - pos_up.h) / maximum);
151
152 up_to_knob.x = knob_to_down.x = pos_knob.x;
153 up_to_knob.w = knob_to_down.w = pos_knob.w;
154 up_to_knob.y = pos_up.y + pos_up.h;
155 up_to_knob.h = pos_knob.y - up_to_knob.y;
156 knob_to_down.y = pos_knob.y + pos_knob.h;
157 knob_to_down.h = pos_down.y - knob_to_down.y;
134158 }
135159
136160 int WidgetScrollBar::getValue() {
137161 return value;
162 }
163
164 Rect WidgetScrollBar::getBounds() {
165 Rect r;
166 r.x = pos_up.x;
167 r.y = pos_up.y;
168 r.w = pos_up.w;
169 r.h = (pos_up.h * 2) + bar_height;
170
171 return r;
138172 }
139173
140174 void WidgetScrollBar::render() {
155189 src_knob.w = pos_knob.w;
156190 src_knob.h = pos_knob.h;
157191
192 if (bg) {
193 bg->local_frame = local_frame;
194 bg->setOffset(local_offset);
195 bg->setDestFromRect(pos_up);
196 render_device->render(bg);
197 }
158198 if (scrollbars) {
159199 scrollbars->local_frame = local_frame;
160200 scrollbars->setOffset(local_offset);
201
161202 scrollbars->setClipFromRect(src_up);
162203 scrollbars->setDestFromRect(pos_up);
163204 render_device->render(scrollbars);
176217 * Updates the scrollbar's location
177218 */
178219 void WidgetScrollBar::refresh(int x, int y, int h, int val, int max) {
220 Rect before = getBounds();
179221 maximum = max;
180222 value = val;
181223 pos_up.x = pos_down.x = pos_knob.x = x;
183225 pos_down.y = y+h;
184226 bar_height = pos_down.y-(pos_up.y+pos_up.h);
185227 set();
228
229 Rect after = getBounds();
230 if (before.h != after.h) {
231 // create background surface
232 if (bg) {
233 delete bg;
234 bg = NULL;
235 }
236 Image *graphics;
237 graphics = render_device->createImage(after.w,after.h);
238 if (graphics) {
239 bg = graphics->createSprite();
240 graphics->unref();
241 }
242
243 if (bg) {
244 bg->getGraphics()->fillWithColor(eset->widgets.scrollbar_bg_color);
245 }
246 }
186247 }
187248
188249 WidgetScrollBar::~WidgetScrollBar() {
189250 if (scrollbars) delete scrollbars;
190 }
191
251 if (bg) delete bg;
252 }
253
2727 #include "CommonIncludes.h"
2828 #include "Widget.h"
2929
30 class Sprite;
31
3032 class WidgetScrollBar : public Widget {
3133 private:
3234
3739 int value;
3840 int bar_height;
3941 int maximum;
42 bool lock_main1;
43 bool dragging;
44
45 Sprite *bg;
46
47 Rect up_to_knob;
48 Rect knob_to_down;
4049
4150 public:
4251 static const std::string DEFAULT_FILE;
4958 int checkClickAt(int x, int y);
5059 void set();
5160 int getValue();
61 Rect getBounds();
5262 void render();
5363 void refresh(int x, int y, int h, int val, int max);
5464
2424 #include "EngineSettings.h"
2525 #include "InputState.h"
2626 #include "RenderDevice.h"
27 #include "Settings.h"
2728 #include "WidgetScrollBox.h"
2829
2930 WidgetScrollBox::WidgetScrollBox(int width, int height)
30 : contents(NULL) {
31 : contents(NULL)
32 , update(true)
33 , bg(0,0,0,0)
34 , tablist()
35 , cursor(0)
36 , cursor_target(0)
37 , scrollbar(new WidgetScrollBar(WidgetScrollBar::DEFAULT_FILE))
38 {
3139 pos.x = pos.y = 0;
3240 pos.w = width;
3341 pos.h = height;
34 cursor = 0;
35 bg.r = bg.g = bg.b = 0;
36 bg.a = 0;
3742 currentChild = -1;
38 scrollbar = new WidgetScrollBar(WidgetScrollBar::DEFAULT_FILE);
39 update = true;
43 scroll_type = SCROLL_VERTICAL;
44
4045 resize(width, height);
41 tablist = TabList();
42 tablist.setScrollType(SCROLL_VERTICAL);
43
44 scroll_type = SCROLL_VERTICAL;
46 tablist.setScrollType(SCROLL_TWO_DIRECTIONS);
4547 }
4648
4749 WidgetScrollBox::~WidgetScrollBox() {
5355 Widget::setPos(offset_x, offset_y);
5456
5557 if (contents && scrollbar) {
56 scrollbar->refresh(pos.x+pos.w, pos.y, pos.h-scrollbar->pos_down.h, cursor,
57 contents->getGraphicsHeight()-pos.h);
58 scrollbar->refresh(pos.x+pos.w, pos.y, pos.h-scrollbar->pos_down.h, static_cast<int>(cursor), contents->getGraphicsHeight()-pos.h);
5859 }
5960 }
6061
7677 void WidgetScrollBox::clearChildWidgets() {
7778 currentChild = -1;
7879 children.clear();
80 tablist.clear();
7981 }
8082
8183 void WidgetScrollBox::scroll(int amount) {
82 cursor += amount;
84 cursor_target += static_cast<float>(amount);
85 if (cursor_target < 0) {
86 cursor_target = 0;
87 }
88 else if (contents && cursor_target > static_cast<float>(contents->getGraphicsHeight() - pos.h)) {
89 cursor_target = static_cast<float>(contents->getGraphicsHeight() - pos.h);
90 }
91 refresh();
92 }
93
94 void WidgetScrollBox::scrollTo(int amount) {
95 cursor = static_cast<float>(amount);
8396 if (cursor < 0) {
8497 cursor = 0;
8598 }
86 else if (contents && cursor > contents->getGraphicsHeight() - pos.h) {
87 cursor = contents->getGraphicsHeight() - pos.h;
88 }
99 else if (contents && cursor > static_cast<float>(contents->getGraphicsHeight() - pos.h)) {
100 cursor = static_cast<float>(contents->getGraphicsHeight() - pos.h);
101 }
102 cursor_target = cursor;
89103 refresh();
90104 }
91105
92 void WidgetScrollBox::scrollTo(int amount) {
93 cursor = amount;
94 if (cursor < 0) {
95 cursor = 0;
96 }
97 else if (contents && cursor > contents->getGraphicsHeight() - pos.h) {
98 cursor = contents->getGraphicsHeight() - pos.h;
106 void WidgetScrollBox::scrollToSmooth(int amount) {
107 cursor_target = static_cast<float>(amount);
108 if (cursor_target < 0) {
109 cursor_target = 0;
110 }
111 else if (contents && cursor_target > static_cast<float>(contents->getGraphicsHeight() - pos.h)) {
112 cursor_target = static_cast<float>(contents->getGraphicsHeight() - pos.h);
99113 }
100114 refresh();
101115 }
102116
103117 void WidgetScrollBox::scrollDown() {
104 int contents_height = (contents ? contents->getGraphicsHeight() : 0);
105 scroll((contents_height * 5) / 100);
118 int amount = pos.h / SCROLL_SPEED_COARSE_MOD;
119 scroll(amount);
106120 }
107121
108122 void WidgetScrollBox::scrollUp() {
109 int contents_height = (contents ? contents->getGraphicsHeight() : 0);
110 scroll(-((contents_height * 5) / 100));
123 int amount = pos.h / SCROLL_SPEED_COARSE_MOD;
124 scroll(-amount);
125 }
126
127 void WidgetScrollBox::scrollToTop() {
128 scrollTo(0);
111129 }
112130
113131 Point WidgetScrollBox::input_assist(const Point& mouse) {
114132 Point new_mouse;
115133 if (Utils::isWithinRect(pos,mouse)) {
116134 new_mouse.x = mouse.x-pos.x;
117 new_mouse.y = mouse.y-pos.y+cursor;
118 }
119 else {
120 new_mouse.x = -1;
135 new_mouse.y = mouse.y-pos.y + static_cast<int>(cursor);
136 }
137 else {
138 // x position is maintained for dragging of WidgetSlider knobs
139 new_mouse.x = mouse.x-pos.x;
121140 new_mouse.y = -1;
122141 }
123142 return new_mouse;
126145 void WidgetScrollBox::logic() {
127146 logic(inpt->mouse.x,inpt->mouse.y);
128147 if (in_focus) {
148 if (currentChild == -1 && !children.empty())
149 getNext();
129150 tablist.logic();
151 }
152 else {
153 // TODO don't run every frame
154 tablist.defocus();
155 currentChild = -1;
130156 }
131157 }
132158
152178 scrollDown();
153179 break;
154180 case 3:
155 cursor = scrollbar->getValue();
181 cursor = cursor_target = static_cast<float>(scrollbar->getValue());
156182 break;
157183 default:
158184 break;
159185 }
186 }
187
188 if (cursor_target < cursor) {
189 cursor -= (static_cast<float>(pos.h * SCROLL_SPEED_SMOOTH_MOD) + (cursor - cursor_target)) / settings->max_frames_per_sec;
190 if (cursor < cursor_target)
191 cursor = cursor_target;
192 }
193 else if (cursor_target > cursor) {
194 cursor += (static_cast<float>(pos.h * SCROLL_SPEED_SMOOTH_MOD) + (cursor_target - cursor)) / settings->max_frames_per_sec;
195 if (cursor > cursor_target)
196 cursor = cursor_target;
160197 }
161198 }
162199
182219 contents->getGraphics()->fillWithColor(bg);
183220 }
184221
185 cursor = 0;
222 cursor = cursor_target = 0;
186223 refresh();
187224 }
188225
211248 }
212249
213250 if (contents && scrollbar) {
214 scrollbar->refresh(pos.x+pos.w, pos.y, pos.h-scrollbar->pos_down.h, cursor,
251 scrollbar->refresh(pos.x+pos.w, pos.y, pos.h-scrollbar->pos_down.h, static_cast<int>(cursor_target),
215252 contents->getGraphicsHeight()-pos.h);
216253 }
217254 }
220257 Rect src,dest;
221258 dest = pos;
222259 src.x = 0;
223 src.y = cursor;
260 src.y = static_cast<int>(cursor);
224261 src.w = pos.w;
225262 src.h = pos.h;
226263
234271
235272 for (unsigned i = 0; i < children.size(); i++) {
236273 children[i]->local_frame = pos;
237 children[i]->local_offset.y = cursor;
274 children[i]->local_offset.y = static_cast<int>(cursor);
238275 children[i]->render();
239276 }
240277
245282 }
246283 update = false;
247284
248 if (in_focus) {
285 if (in_focus && children.empty()) {
249286 Point topLeft;
250287 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;
288 Rect sb_rect = scrollbar->getBounds();
289
290 topLeft.x = sb_rect.x + local_frame.x - local_offset.x;
291 topLeft.y = sb_rect.y + local_frame.y - local_offset.y;
292 bottomRight.x = topLeft.x + sb_rect.w;
293 bottomRight.y = topLeft.y + sb_rect.h;
256294
257295 // Only draw rectangle if it fits in local frame
258296 bool draw = true;
272310
273311 bool WidgetScrollBox::getNext() {
274312 if (children.empty()) {
313 int prev_cursor = static_cast<int>(cursor);
314 int bottom = contents ? contents->getGraphicsHeight() - pos.h : 0;
315
275316 scrollDown();
317
318 if (static_cast<int>(cursor) == bottom && prev_cursor == bottom)
319 return false;
320
276321 return true;
277322 }
278323
279 if (currentChild != -1)
324 if (currentChild != -1) {
280325 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) {
290 scrollTo(children[currentChild]->pos.y);
291 }
292 children[currentChild]->in_focus = true;
326 currentChild = tablist.getNextRelativeIndex(TabList::WIDGET_SELECT_DOWN);
327 tablist.setCurrent(children[currentChild]);
328 }
329 else {
330 // TODO neaten this up?
331 currentChild = 0;
332 tablist.setCurrent(children[currentChild]);
333 currentChild = tablist.getNextRelativeIndex(TabList::WIDGET_SELECT_DOWN);
334 tablist.setCurrent(children[currentChild]);
335 currentChild = tablist.getNextRelativeIndex(TabList::WIDGET_SELECT_UP);
336 tablist.setCurrent(children[currentChild]);
337 }
338
339 if (currentChild != -1) {
340 children[currentChild]->in_focus = true;
341 scrollToSmooth(children[currentChild]->pos.y);
342 }
343 else {
344 return false;
345 }
346
293347 return true;
294348 }
295349
296350 bool WidgetScrollBox::getPrev() {
297351 if (children.empty()) {
352 int prev_cursor = static_cast<int>(cursor);
353
298354 scrollUp();
355
356 if (cursor == 0 && prev_cursor == 0)
357 return false;
358
299359 return true;
300360 }
301361
302 if (currentChild != -1)
362 if (currentChild != -1) {
303363 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) {
313 scrollTo(children[currentChild]->pos.y);
314 }
315 children[currentChild]->in_focus = true;
364 currentChild = tablist.getNextRelativeIndex(TabList::WIDGET_SELECT_UP);
365 tablist.setCurrent(children[currentChild]);
366 }
367 else {
368 currentChild = 0;
369 tablist.setCurrent(children[currentChild]);
370 currentChild = tablist.getNextRelativeIndex(TabList::WIDGET_SELECT_DOWN);
371 tablist.setCurrent(children[currentChild]);
372 currentChild = tablist.getNextRelativeIndex(TabList::WIDGET_SELECT_UP);
373 tablist.setCurrent(children[currentChild]);
374 }
375
376 if (currentChild != -1) {
377 children[currentChild]->in_focus = true;
378 scrollToSmooth(children[currentChild]->pos.y);
379 }
380 else {
381 return false;
382 }
383
316384 return true;
317385 }
318386
5252 bool getNext();
5353 bool getPrev();
5454 void activate();
55 int getCursor() {
56 return cursor;
57 }
55 void scrollToTop();
5856
5957 private:
58 static const int SCROLL_SPEED_COARSE_MOD = 4;
59 static const int SCROLL_SPEED_SMOOTH_MOD = 3;
60
6061 void scroll(int amount);
6162 void scrollTo(int amount);
63 void scrollToSmooth(int amount);
6264 void scrollDown();
6365 void scrollUp();
6466 std::vector<Widget*> children;
6567 int currentChild;
6668
67 int cursor;
69 float cursor;
70 float cursor_target;
6871 WidgetScrollBar * scrollbar;
6972 };
7073
8181
8282 if (!enabled) return false;
8383 Point mouse(x, y);
84 //
8584 // We are just grabbing the knob
86 //
8785 if (!pressed && inpt->pressing[Input::MAIN1] && !inpt->lock[Input::MAIN1]) {
8886 if (Utils::isWithinRect(pos_knob, mouse)) {
8987 pressed = true;
104102 if (inpt->lock[Input::DOWN]) return false;
105103
106104 if (pressed) {
107 //
108105 // The knob has been released
109 //
110106 // create a temporary Rect slightly wider than the slider
111107 Rect tmp_pos;
112108 tmp_pos.x = pos.x - (pos_knob.w*2);
114110 tmp_pos.w = pos.w + (pos_knob.w*4);
115111 tmp_pos.h = pos.h;
116112
117 if (!Utils::isWithinRect(tmp_pos, mouse)) {
118 pressed = false;
119 return false;
120 }
121113 if (!inpt->lock[Input::MAIN1]) {
122114 pressed = false;
123115 }
206198
207199 TooltipData tip_data;
208200 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);
201 Point new_mouse;
202 new_mouse.x = pos_knob.x + (pos_knob.w * 2) + local_frame.x - local_offset.x;
203 new_mouse.y = pos_knob.y + (pos_knob.h / 2) + local_frame.y - local_offset.y;
204 tooltipm->push(tip_data, new_mouse, TooltipData::STYLE_TOPLABEL);
210205 }
211206 }
212207
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
148151 if (inpt->lock[Input::MAIN2]) return NO_CLICK;
149152 if (inpt->lock[activate_key]) return NO_CLICK;
150153
151 if (pressed && !inpt->lock[Input::MAIN1] && !inpt->lock[Input::MAIN2] && !inpt->lock[activate_key]) { // this is a button release
154 if (pressed && !inpt->lock[Input::MAIN1] && !inpt->lock[Input::MAIN2]) { // this is a button release
152155 pressed = false;
153156
154157 checked = !checked;
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
2828 : active_tab_surface(NULL)
2929 , inactive_tab_surface(NULL)
3030 , active_tab(0)
31 , lock_main1(false)
32 , dragging(false)
3133 {
3234
3335 loadGraphics();
5557 tabs.resize(index+1);
5658 active_labels.resize(index+1);
5759 inactive_labels.resize(index+1);
60 enabled.resize(index+1);
5861 }
5962
6063 titles[index] = title;
64 enabled[index] = true;
6165 }
6266
6367 /**
7478 */
7579 void WidgetTabControl::setActiveTab(unsigned tab) {
7680 if (tab > tabs.size())
77 active_tab = 0;
81 tab = 0;
7882 else if (tab == tabs.size())
79 active_tab = static_cast<unsigned>(tabs.size())-1;
80 else
81 active_tab = tab;
83 tab = static_cast<unsigned>(tabs.size()-1);
84
85 // Set the tab. If the specified tab is not enabled, get the first enabled tab.
86 for (unsigned i = tab; tab < tabs.size(); ++i) {
87 if (enabled[i]) {
88 active_tab = i;
89 return;
90 }
91 }
92 for (unsigned i = 0; i < tab; ++i) {
93 if (enabled[i]) {
94 active_tab = i;
95 return;
96 }
97 }
98
99 // no enabled tabs, just return what we started with
100 active_tab = tab;
82101 }
83102
84103 /**
95114 tabs_area.w = 0;
96115 tabs_area.h = getTabHeight();
97116
117 int x_offset = tabs_area.x;
118
98119 // update individual tabs
99120 for (unsigned i=0; i<tabs.size(); i++) {
100121 tabs[i].y = tabs_area.y;
101122 tabs[i].h = tabs_area.h;
102123
103 if (i==0) tabs[i].x = tabs_area.x;
104 else tabs[i].x = tabs[i-1].x + tabs[i-1].w;
124 tabs[i].x = x_offset;
105125
106126 active_labels[i].setPos(tabs[i].x + eset->widgets.tab_padding.x, tabs[i].y + tabs[i].h/2 + eset->widgets.tab_padding.y);
107127 active_labels[i].setVAlign(LabelInfo::VALIGN_CENTER);
113133 inactive_labels[i].setText(titles[i]);
114134 inactive_labels[i].setColor(font->getColor(FontEngine::COLOR_WIDGET_DISABLED));
115135
116 tabs[i].w = active_labels[i].getBounds()->w + (eset->widgets.tab_padding.x * 2);
117 tabs_area.w += tabs[i].w;
118 }
136 if (enabled[i]) {
137 tabs[i].w = active_labels[i].getBounds()->w + (eset->widgets.tab_padding.x * 2);
138 tabs_area.w += tabs[i].w;
139 x_offset += tabs[i].w;
140 }
141 }
142
143 if (!enabled[active_tab])
144 getNext();
119145 }
120146
121147 /**
148174 void WidgetTabControl::logic(int x, int y) {
149175 Point mouse(x, y);
150176 // If the click was in the tabs area;
151 if(Utils::isWithinRect(tabs_area, mouse) && inpt->pressing[Input::MAIN1]) {
152 // Mark the clicked tab as active_tab.
153 for (unsigned i=0; i<tabs.size(); i++) {
154 if(Utils::isWithinRect(tabs[i], mouse)) {
155 active_tab = i;
156 return;
177 if (Utils::isWithinRect(tabs_area, mouse) && (!lock_main1 || dragging)) {
178 lock_main1 = false;
179 dragging = false;
180
181 if (inpt->pressing[Input::MAIN1]) {
182 inpt->lock[Input::MAIN1] = true;
183 dragging = true;
184
185 // Mark the clicked tab as active_tab.
186 for (unsigned i=0; i<tabs.size(); i++) {
187 if(Utils::isWithinRect(tabs[i], mouse) && enabled[i]) {
188 active_tab = i;
189 return;
190 }
157191 }
158192 }
193 }
194 else {
195 lock_main1 = inpt->pressing[Input::MAIN1];
196 }
197 if (!inpt->pressing[Input::MAIN1]) {
198 dragging = false;
159199 }
160200 }
161201
187227 * Renders the given tab on the widget header.
188228 */
189229 void WidgetTabControl::renderTab(unsigned number) {
230 if (!enabled[number])
231 return;
232
190233 unsigned i = number;
191234 Rect src;
192235 Rect dest;
196239 int width_to_render = tabs[i].w - eset->widgets.tab_padding.x; // don't draw the right edge yet
197240 int render_cursor = 0;
198241
199 src.x = src.y = 0;
242 src.y = 0;
200243 src.h = tabs[i].h;
201 dest.x = tabs[i].x;
202244 dest.y = tabs[i].y;
203245
204246 // repeat the middle part of the image for long tabs
247 // src.x and dest.x are assigned here
205248 while (render_cursor < width_to_render) {
206249 dest.x = tabs[i].x + render_cursor;
207250 if (render_cursor == 0) {
264307 }
265308
266309 bool WidgetTabControl::getNext() {
267 setActiveTab(++active_tab);
310 setActiveTab(getNextEnabledTab(active_tab));
268311 return true;
269312 }
270313
271314 bool WidgetTabControl::getPrev() {
272 setActiveTab(--active_tab);
315 setActiveTab(getPrevEnabledTab(active_tab));
273316 return true;
317 }
318
319 unsigned WidgetTabControl::getNextEnabledTab(unsigned tab) {
320 for (unsigned i = tab+1; i < tabs.size(); ++i) {
321 if (enabled[i])
322 return i;
323 }
324 return tab;
325 }
326
327 unsigned WidgetTabControl::getPrevEnabledTab(unsigned tab) {
328 for (unsigned i = tab-1; i < tabs.size(); i--) {
329 if (enabled[i])
330 return i;
331 }
332 return tab;
274333 }
275334
276335 int WidgetTabControl::getTabHeight() {
277336 return (active_tab_surface ? active_tab_surface->getGraphicsHeight() : 0);
278337 }
338
339 void WidgetTabControl::setEnabled(unsigned index, bool val) {
340 if (index >= enabled.size())
341 return;
342
343 enabled[index] = val;
344 }
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.
4145 Rect tabs_area; // Area the tab titles are displayed.
46 bool lock_main1;
47 bool dragging;
4248
4349 public:
4450
5359
5460 int getTabHeight();
5561
62 void setEnabled(unsigned index, bool val);
63
5664 void logic();
5765 void logic(int x, int y);
5866 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());
111116 }
112117
113118 settings->loadSettings();
119 settings->logSettings();
114120
115121 save_load = new SaveLoad();
116122 msg = new MessageEngine();
117123 font = getFontEngine();
118124 anim = new AnimationManager();
119125 comb = new CombatText();
120 inpt = getInputManager();
121 icons = NULL;
122126
123127 // Load miscellaneous settings
124128 eset = new EngineSettings();
125129 eset->load();
130
131 inpt = getInputManager();
132 icons = NULL;
133
126134 Stats::init();
127135
128136 // platform-specific default screen size
129137 platform.setScreenSize();
130138
131139 // Create render Device and Rendering Context.
132 if (platform.default_renderer != "")
140 if (settings->safe_video)
141 render_device = getRenderDevice(settings->render_device_name);
142 else if (platform.default_renderer != "")
133143 render_device = getRenderDevice(platform.default_renderer);
134144 else if (cmd_line_args.render_device_name != "")
135145 render_device = getRenderDevice(cmd_line_args.render_device_name);
357367 settings->custom_path_data = std::string(getenv("HOME")) + "/" + path_end;
358368 }
359369
360 if (!settings->custom_path_data.empty() && settings->custom_path_data.at(settings->custom_path_data.length()-1) != '/')
361 settings->custom_path_data += "/";
370 if (!settings->custom_path_data.empty()) {
371 settings->custom_path_data = Filesystem::removeTrailingSlash(settings->custom_path_data);
372 }
362373
363374 if (Filesystem::pathExists(settings->custom_path_data)) {
364375 Utils::logInfo("Custom data path: \"%s\"", settings->custom_path_data.c_str());
376 settings->custom_path_data += "/";
365377 }
366378 else {
367379 Utils::logError("Invalid custom data path: \"%s\"", settings->custom_path_data.c_str());
369381 }
370382 }
371383 else if (arg == "version") {
372 printf("%s\n", VersionInfo::createVersionStringFull().c_str());
384 Utils::logInfo("%s", VersionInfo::createVersionStringFull().c_str());
373385 done = true;
374386 }
375387 else if (arg == "renderer") {
390402 else if (arg == "load-script") {
391403 settings->load_script = parseArgValue(arg_full);
392404 }
405 else if (arg == "safe-video") {
406 settings->safe_video = true;
407 }
393408 else if (arg == "help") {
394 printf("\
409 Utils::logInfo("Command line options:\n\
395410 --help Prints this message.\n\
396411 --version Prints the release version.\n\
397412 --data-path=<PATH> Specifies an exact path to look for mod data.\n\
402417 --mods=<MOD>,... Starts the game with only these mods enabled.\n\
403418 --load-slot=<SLOT> Loads a save slot by numerical index.\n\
404419 --load-script=<SCRIPT> Execute's a script upon loading a saved game.\n\
405 The script path is mod-relative.\n");
420 The script path is mod-relative.\n\
421 --safe-video Launches with the minimum video settings.");
406422 done = true;
407423 }
408424 else {
415431 srand(static_cast<unsigned int>(time(NULL)));
416432 #ifdef __EMSCRIPTEN__
417433 platform.FSInit();
418 emscripten_set_main_loop(EmscriptenMainLoop, 0, 1);
434 emscripten_set_main_loop(EmscriptenMainLoop, settings->max_frames_per_sec, 1);
419435 #else
420436 init(cmd_line_args);
421437